diff --git a/news/changelog-1.9.md b/news/changelog-1.9.md index 5bdd19aee88..ac46e3287d7 100644 --- a/news/changelog-1.9.md +++ b/news/changelog-1.9.md @@ -11,6 +11,7 @@ All changes included in 1.9: - Update `esbuild` to 0.25.10 - Update `deno` to 2.4.5 +- ([#13601](https://github.com/quarto-dev/quarto-cli/pull/13601)): Update `mermaid` to 11.12.0 (author: @multimeric) ## Formats diff --git a/src/resources/formats/html/mermaid/mermaid.js b/src/resources/formats/html/mermaid/mermaid.js index de795860f5c..50cbb495f86 100644 --- a/src/resources/formats/html/mermaid/mermaid.js +++ b/src/resources/formats/html/mermaid/mermaid.js @@ -1,5 +1,6 @@ "use strict"; -var __esbuild_esm_mermaid = (() => { +var __esbuild_esm_mermaid_nm; +(__esbuild_esm_mermaid_nm ||= {}).mermaid = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; @@ -36,376 +37,17 @@ var __esbuild_esm_mermaid = (() => { )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - // ../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js - var require_dayjs_min = __commonJS({ - "../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js"(exports2, module2) { - "use strict"; - !function(t4, e3) { - "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = e3() : "function" == typeof define && define.amd ? define(e3) : (t4 = "undefined" != typeof globalThis ? globalThis : t4 || self).dayjs = e3(); - }(exports2, function() { - "use strict"; - var t4 = 1e3, e3 = 6e4, n2 = 36e5, r2 = "millisecond", i2 = "second", s2 = "minute", u2 = "hour", a2 = "day", o2 = "week", c3 = "month", f2 = "quarter", h2 = "year", d2 = "date", l2 = "Invalid Date", $3 = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y5 = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M2 = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: /* @__PURE__ */ __name(function(t5) { - var e4 = ["th", "st", "nd", "rd"], n3 = t5 % 100; - return "[" + t5 + (e4[(n3 - 20) % 10] || e4[n3] || e4[0]) + "]"; - }, "ordinal") }, m2 = /* @__PURE__ */ __name(function(t5, e4, n3) { - var r3 = String(t5); - return !r3 || r3.length >= e4 ? t5 : "" + Array(e4 + 1 - r3.length).join(n3) + t5; - }, "m"), v3 = { s: m2, z: /* @__PURE__ */ __name(function(t5) { - var e4 = -t5.utcOffset(), n3 = Math.abs(e4), r3 = Math.floor(n3 / 60), i3 = n3 % 60; - return (e4 <= 0 ? "+" : "-") + m2(r3, 2, "0") + ":" + m2(i3, 2, "0"); - }, "z"), m: /* @__PURE__ */ __name(function t5(e4, n3) { - if (e4.date() < n3.date()) return -t5(n3, e4); - var r3 = 12 * (n3.year() - e4.year()) + (n3.month() - e4.month()), i3 = e4.clone().add(r3, c3), s3 = n3 - i3 < 0, u3 = e4.clone().add(r3 + (s3 ? -1 : 1), c3); - return +(-(r3 + (n3 - i3) / (s3 ? i3 - u3 : u3 - i3)) || 0); - }, "t"), a: /* @__PURE__ */ __name(function(t5) { - return t5 < 0 ? Math.ceil(t5) || 0 : Math.floor(t5); - }, "a"), p: /* @__PURE__ */ __name(function(t5) { - return { M: c3, y: h2, w: o2, d: a2, D: d2, h: u2, m: s2, s: i2, ms: r2, Q: f2 }[t5] || String(t5 || "").toLowerCase().replace(/s$/, ""); - }, "p"), u: /* @__PURE__ */ __name(function(t5) { - return void 0 === t5; - }, "u") }, g2 = "en", D3 = {}; - D3[g2] = M2; - var p3 = "$isDayjsObject", S3 = /* @__PURE__ */ __name(function(t5) { - return t5 instanceof _2 || !(!t5 || !t5[p3]); - }, "S"), w3 = /* @__PURE__ */ __name(function t5(e4, n3, r3) { - var i3; - if (!e4) return g2; - if ("string" == typeof e4) { - var s3 = e4.toLowerCase(); - D3[s3] && (i3 = s3), n3 && (D3[s3] = n3, i3 = s3); - var u3 = e4.split("-"); - if (!i3 && u3.length > 1) return t5(u3[0]); - } else { - var a3 = e4.name; - D3[a3] = e4, i3 = a3; - } - return !r3 && i3 && (g2 = i3), i3 || !r3 && g2; - }, "t"), O2 = /* @__PURE__ */ __name(function(t5, e4) { - if (S3(t5)) return t5.clone(); - var n3 = "object" == typeof e4 ? e4 : {}; - return n3.date = t5, n3.args = arguments, new _2(n3); - }, "O"), b2 = v3; - b2.l = w3, b2.i = S3, b2.w = function(t5, e4) { - return O2(t5, { locale: e4.$L, utc: e4.$u, x: e4.$x, $offset: e4.$offset }); - }; - var _2 = function() { - function M3(t5) { - this.$L = w3(t5.locale, null, true), this.parse(t5), this.$x = this.$x || t5.x || {}, this[p3] = true; - } - __name(M3, "M"); - var m3 = M3.prototype; - return m3.parse = function(t5) { - this.$d = function(t6) { - var e4 = t6.date, n3 = t6.utc; - if (null === e4) return /* @__PURE__ */ new Date(NaN); - if (b2.u(e4)) return /* @__PURE__ */ new Date(); - if (e4 instanceof Date) return new Date(e4); - if ("string" == typeof e4 && !/Z$/i.test(e4)) { - var r3 = e4.match($3); - if (r3) { - var i3 = r3[2] - 1 || 0, s3 = (r3[7] || "0").substring(0, 3); - return n3 ? new Date(Date.UTC(r3[1], i3, r3[3] || 1, r3[4] || 0, r3[5] || 0, r3[6] || 0, s3)) : new Date(r3[1], i3, r3[3] || 1, r3[4] || 0, r3[5] || 0, r3[6] || 0, s3); - } - } - return new Date(e4); - }(t5), this.init(); - }, m3.init = function() { - var t5 = this.$d; - this.$y = t5.getFullYear(), this.$M = t5.getMonth(), this.$D = t5.getDate(), this.$W = t5.getDay(), this.$H = t5.getHours(), this.$m = t5.getMinutes(), this.$s = t5.getSeconds(), this.$ms = t5.getMilliseconds(); - }, m3.$utils = function() { - return b2; - }, m3.isValid = function() { - return !(this.$d.toString() === l2); - }, m3.isSame = function(t5, e4) { - var n3 = O2(t5); - return this.startOf(e4) <= n3 && n3 <= this.endOf(e4); - }, m3.isAfter = function(t5, e4) { - return O2(t5) < this.startOf(e4); - }, m3.isBefore = function(t5, e4) { - return this.endOf(e4) < O2(t5); - }, m3.$g = function(t5, e4, n3) { - return b2.u(t5) ? this[e4] : this.set(n3, t5); - }, m3.unix = function() { - return Math.floor(this.valueOf() / 1e3); - }, m3.valueOf = function() { - return this.$d.getTime(); - }, m3.startOf = function(t5, e4) { - var n3 = this, r3 = !!b2.u(e4) || e4, f3 = b2.p(t5), l3 = /* @__PURE__ */ __name(function(t6, e6) { - var i3 = b2.w(n3.$u ? Date.UTC(n3.$y, e6, t6) : new Date(n3.$y, e6, t6), n3); - return r3 ? i3 : i3.endOf(a2); - }, "l"), $4 = /* @__PURE__ */ __name(function(t6, e6) { - return b2.w(n3.toDate()[t6].apply(n3.toDate("s"), (r3 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e6)), n3); - }, "$"), y6 = this.$W, M4 = this.$M, m4 = this.$D, v4 = "set" + (this.$u ? "UTC" : ""); - switch (f3) { - case h2: - return r3 ? l3(1, 0) : l3(31, 11); - case c3: - return r3 ? l3(1, M4) : l3(0, M4 + 1); - case o2: - var g3 = this.$locale().weekStart || 0, D4 = (y6 < g3 ? y6 + 7 : y6) - g3; - return l3(r3 ? m4 - D4 : m4 + (6 - D4), M4); - case a2: - case d2: - return $4(v4 + "Hours", 0); - case u2: - return $4(v4 + "Minutes", 1); - case s2: - return $4(v4 + "Seconds", 2); - case i2: - return $4(v4 + "Milliseconds", 3); - default: - return this.clone(); - } - }, m3.endOf = function(t5) { - return this.startOf(t5, false); - }, m3.$set = function(t5, e4) { - var n3, o3 = b2.p(t5), f3 = "set" + (this.$u ? "UTC" : ""), l3 = (n3 = {}, n3[a2] = f3 + "Date", n3[d2] = f3 + "Date", n3[c3] = f3 + "Month", n3[h2] = f3 + "FullYear", n3[u2] = f3 + "Hours", n3[s2] = f3 + "Minutes", n3[i2] = f3 + "Seconds", n3[r2] = f3 + "Milliseconds", n3)[o3], $4 = o3 === a2 ? this.$D + (e4 - this.$W) : e4; - if (o3 === c3 || o3 === h2) { - var y6 = this.clone().set(d2, 1); - y6.$d[l3]($4), y6.init(), this.$d = y6.set(d2, Math.min(this.$D, y6.daysInMonth())).$d; - } else l3 && this.$d[l3]($4); - return this.init(), this; - }, m3.set = function(t5, e4) { - return this.clone().$set(t5, e4); - }, m3.get = function(t5) { - return this[b2.p(t5)](); - }, m3.add = function(r3, f3) { - var d3, l3 = this; - r3 = Number(r3); - var $4 = b2.p(f3), y6 = /* @__PURE__ */ __name(function(t5) { - var e4 = O2(l3); - return b2.w(e4.date(e4.date() + Math.round(t5 * r3)), l3); - }, "y"); - if ($4 === c3) return this.set(c3, this.$M + r3); - if ($4 === h2) return this.set(h2, this.$y + r3); - if ($4 === a2) return y6(1); - if ($4 === o2) return y6(7); - var M4 = (d3 = {}, d3[s2] = e3, d3[u2] = n2, d3[i2] = t4, d3)[$4] || 1, m4 = this.$d.getTime() + r3 * M4; - return b2.w(m4, this); - }, m3.subtract = function(t5, e4) { - return this.add(-1 * t5, e4); - }, m3.format = function(t5) { - var e4 = this, n3 = this.$locale(); - if (!this.isValid()) return n3.invalidDate || l2; - var r3 = t5 || "YYYY-MM-DDTHH:mm:ssZ", i3 = b2.z(this), s3 = this.$H, u3 = this.$m, a3 = this.$M, o3 = n3.weekdays, c4 = n3.months, f3 = n3.meridiem, h3 = /* @__PURE__ */ __name(function(t6, n4, i4, s4) { - return t6 && (t6[n4] || t6(e4, r3)) || i4[n4].slice(0, s4); - }, "h"), d3 = /* @__PURE__ */ __name(function(t6) { - return b2.s(s3 % 12 || 12, t6, "0"); - }, "d"), $4 = f3 || function(t6, e6, n4) { - var r4 = t6 < 12 ? "AM" : "PM"; - return n4 ? r4.toLowerCase() : r4; - }; - return r3.replace(y5, function(t6, r4) { - return r4 || function(t7) { - switch (t7) { - case "YY": - return String(e4.$y).slice(-2); - case "YYYY": - return b2.s(e4.$y, 4, "0"); - case "M": - return a3 + 1; - case "MM": - return b2.s(a3 + 1, 2, "0"); - case "MMM": - return h3(n3.monthsShort, a3, c4, 3); - case "MMMM": - return h3(c4, a3); - case "D": - return e4.$D; - case "DD": - return b2.s(e4.$D, 2, "0"); - case "d": - return String(e4.$W); - case "dd": - return h3(n3.weekdaysMin, e4.$W, o3, 2); - case "ddd": - return h3(n3.weekdaysShort, e4.$W, o3, 3); - case "dddd": - return o3[e4.$W]; - case "H": - return String(s3); - case "HH": - return b2.s(s3, 2, "0"); - case "h": - return d3(1); - case "hh": - return d3(2); - case "a": - return $4(s3, u3, true); - case "A": - return $4(s3, u3, false); - case "m": - return String(u3); - case "mm": - return b2.s(u3, 2, "0"); - case "s": - return String(e4.$s); - case "ss": - return b2.s(e4.$s, 2, "0"); - case "SSS": - return b2.s(e4.$ms, 3, "0"); - case "Z": - return i3; - } - return null; - }(t6) || i3.replace(":", ""); - }); - }, m3.utcOffset = function() { - return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); - }, m3.diff = function(r3, d3, l3) { - var $4, y6 = this, M4 = b2.p(d3), m4 = O2(r3), v4 = (m4.utcOffset() - this.utcOffset()) * e3, g3 = this - m4, D4 = /* @__PURE__ */ __name(function() { - return b2.m(y6, m4); - }, "D"); - switch (M4) { - case h2: - $4 = D4() / 12; - break; - case c3: - $4 = D4(); - break; - case f2: - $4 = D4() / 3; - break; - case o2: - $4 = (g3 - v4) / 6048e5; - break; - case a2: - $4 = (g3 - v4) / 864e5; - break; - case u2: - $4 = g3 / n2; - break; - case s2: - $4 = g3 / e3; - break; - case i2: - $4 = g3 / t4; - break; - default: - $4 = g3; - } - return l3 ? $4 : b2.a($4); - }, m3.daysInMonth = function() { - return this.endOf(c3).$D; - }, m3.$locale = function() { - return D3[this.$L]; - }, m3.locale = function(t5, e4) { - if (!t5) return this.$L; - var n3 = this.clone(), r3 = w3(t5, e4, true); - return r3 && (n3.$L = r3), n3; - }, m3.clone = function() { - return b2.w(this.$d, this); - }, m3.toDate = function() { - return new Date(this.valueOf()); - }, m3.toJSON = function() { - return this.isValid() ? this.toISOString() : null; - }, m3.toISOString = function() { - return this.$d.toISOString(); - }, m3.toString = function() { - return this.$d.toUTCString(); - }, M3; - }(), k2 = _2.prototype; - return O2.prototype = k2, [["$ms", r2], ["$s", i2], ["$m", s2], ["$H", u2], ["$W", a2], ["$M", c3], ["$y", h2], ["$D", d2]].forEach(function(t5) { - k2[t5[1]] = function(e4) { - return this.$g(e4, t5[0], t5[1]); - }; - }), O2.extend = function(t5, e4) { - return t5.$i || (t5(e4, _2, O2), t5.$i = true), O2; - }, O2.locale = w3, O2.isDayjs = S3, O2.unix = function(t5) { - return O2(1e3 * t5); - }, O2.en = D3[g2], O2.Ls = D3, O2.p = {}, O2; - }); - } - }); - - // src/logger.ts - var import_dayjs, LEVELS, log, setLogLevel, format; - var init_logger = __esm({ - "src/logger.ts"() { - "use strict"; - import_dayjs = __toESM(require_dayjs_min(), 1); - LEVELS = { - trace: 0, - debug: 1, - info: 2, - warn: 3, - error: 4, - fatal: 5 - }; - log = { - trace: /* @__PURE__ */ __name((..._args) => { - }, "trace"), - debug: /* @__PURE__ */ __name((..._args) => { - }, "debug"), - info: /* @__PURE__ */ __name((..._args) => { - }, "info"), - warn: /* @__PURE__ */ __name((..._args) => { - }, "warn"), - error: /* @__PURE__ */ __name((..._args) => { - }, "error"), - fatal: /* @__PURE__ */ __name((..._args) => { - }, "fatal") - }; - setLogLevel = /* @__PURE__ */ __name(function(level = "fatal") { - let numericLevel = LEVELS.fatal; - if (typeof level === "string") { - if (level.toLowerCase() in LEVELS) { - numericLevel = LEVELS[level]; - } - } else if (typeof level === "number") { - numericLevel = level; - } - log.trace = () => { - }; - log.debug = () => { - }; - log.info = () => { - }; - log.warn = () => { - }; - log.error = () => { - }; - log.fatal = () => { - }; - if (numericLevel <= LEVELS.fatal) { - log.fatal = console.error ? console.error.bind(console, format("FATAL"), "color: orange") : console.log.bind(console, "\x1B[35m", format("FATAL")); - } - if (numericLevel <= LEVELS.error) { - log.error = console.error ? console.error.bind(console, format("ERROR"), "color: orange") : console.log.bind(console, "\x1B[31m", format("ERROR")); - } - if (numericLevel <= LEVELS.warn) { - log.warn = console.warn ? console.warn.bind(console, format("WARN"), "color: orange") : console.log.bind(console, `\x1B[33m`, format("WARN")); - } - if (numericLevel <= LEVELS.info) { - log.info = console.info ? console.info.bind(console, format("INFO"), "color: lightblue") : console.log.bind(console, "\x1B[34m", format("INFO")); - } - if (numericLevel <= LEVELS.debug) { - log.debug = console.debug ? console.debug.bind(console, format("DEBUG"), "color: lightgreen") : console.log.bind(console, "\x1B[32m", format("DEBUG")); - } - if (numericLevel <= LEVELS.trace) { - log.trace = console.debug ? console.debug.bind(console, format("TRACE"), "color: lightgreen") : console.log.bind(console, "\x1B[32m", format("TRACE")); - } - }, "setLogLevel"); - format = /* @__PURE__ */ __name((level) => { - const time4 = (0, import_dayjs.default)().format("ss.SSS"); - return `%c${time4} : ${level} : `; - }, "format"); - } - }); - - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon/defaults.mjs + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/defaults.js var defaultIconDimensions, defaultIconTransformations, defaultIconProps, defaultExtendedIconProps; var init_defaults = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon/defaults.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/defaults.js"() { "use strict"; - defaultIconDimensions = Object.freeze( - { - left: 0, - top: 0, - width: 16, - height: 16 - } - ); + defaultIconDimensions = Object.freeze({ + left: 0, + top: 0, + width: 16, + height: 16 + }); defaultIconTransformations = Object.freeze({ rotate: 0, vFlip: false, @@ -423,10 +65,10 @@ var __esbuild_esm_mermaid = (() => { } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/customisations/defaults.mjs + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/customisations/defaults.js var defaultIconSizeCustomisations, defaultIconCustomisations; var init_defaults2 = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/customisations/defaults.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/customisations/defaults.js"() { "use strict"; init_defaults(); defaultIconSizeCustomisations = Object.freeze({ @@ -434,38 +76,31 @@ var __esbuild_esm_mermaid = (() => { height: null }); defaultIconCustomisations = Object.freeze({ - // Dimensions ...defaultIconSizeCustomisations, - // Transformations ...defaultIconTransformations }); } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon/name.mjs + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/name.js var stringToIcon, validateIconName; var init_name = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon/name.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/name.js"() { "use strict"; stringToIcon = /* @__PURE__ */ __name((value2, validate, allowSimpleName, provider = "") => { const colonSeparated = value2.split(":"); if (value2.slice(0, 1) === "@") { - if (colonSeparated.length < 2 || colonSeparated.length > 3) { - return null; - } + if (colonSeparated.length < 2 || colonSeparated.length > 3) return null; provider = colonSeparated.shift().slice(1); } - if (colonSeparated.length > 3 || !colonSeparated.length) { - return null; - } + if (colonSeparated.length > 3 || !colonSeparated.length) return null; if (colonSeparated.length > 1) { - const name2 = colonSeparated.pop(); + const name$1 = colonSeparated.pop(); const prefix = colonSeparated.pop(); const result = { - // Allow provider without '@': "provider:prefix:name" provider: colonSeparated.length > 0 ? colonSeparated[0] : provider, prefix, - name: name2 + name: name$1 }; return validate && !validateIconName(result) ? null : result; } @@ -490,56 +125,39 @@ var __esbuild_esm_mermaid = (() => { return null; }, "stringToIcon"); validateIconName = /* @__PURE__ */ __name((icon2, allowSimpleName) => { - if (!icon2) { - return false; - } - return !!// Check prefix: cannot be empty, unless allowSimpleName is enabled - // Check name: cannot be empty - ((allowSimpleName && icon2.prefix === "" || !!icon2.prefix) && !!icon2.name); + if (!icon2) return false; + return !!((allowSimpleName && icon2.prefix === "" || !!icon2.prefix) && !!icon2.name); }, "validateIconName"); } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon/transformations.mjs + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/transformations.js function mergeIconTransformations(obj1, obj2) { const result = {}; - if (!obj1.hFlip !== !obj2.hFlip) { - result.hFlip = true; - } - if (!obj1.vFlip !== !obj2.vFlip) { - result.vFlip = true; - } + if (!obj1.hFlip !== !obj2.hFlip) result.hFlip = true; + if (!obj1.vFlip !== !obj2.vFlip) result.vFlip = true; const rotate2 = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4; - if (rotate2) { - result.rotate = rotate2; - } + if (rotate2) result.rotate = rotate2; return result; } var init_transformations = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon/transformations.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/transformations.js"() { "use strict"; __name(mergeIconTransformations, "mergeIconTransformations"); } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon/merge.mjs + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/merge.js function mergeIconData(parent4, child) { const result = mergeIconTransformations(parent4, child); - for (const key in defaultExtendedIconProps) { - if (key in defaultIconTransformations) { - if (key in parent4 && !(key in result)) { - result[key] = defaultIconTransformations[key]; - } - } else if (key in child) { - result[key] = child[key]; - } else if (key in parent4) { - result[key] = parent4[key]; - } - } + for (const key in defaultExtendedIconProps) if (key in defaultIconTransformations) { + if (key in parent4 && !(key in result)) result[key] = defaultIconTransformations[key]; + } else if (key in child) result[key] = child[key]; + else if (key in parent4) result[key] = parent4[key]; return result; } var init_merge = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon/merge.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/merge.js"() { "use strict"; init_defaults(); init_transformations(); @@ -547,61 +165,52 @@ var __esbuild_esm_mermaid = (() => { } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon-set/tree.mjs - function getIconsTree(data6, names) { - const icons = data6.icons; - const aliases = data6.aliases || /* @__PURE__ */ Object.create(null); + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon-set/tree.js + function getIconsTree(data5, names) { + const icons = data5.icons; + const aliases = data5.aliases || /* @__PURE__ */ Object.create(null); const resolved = /* @__PURE__ */ Object.create(null); - function resolve3(name) { - if (icons[name]) { - return resolved[name] = []; - } + function resolve2(name) { + if (icons[name]) return resolved[name] = []; if (!(name in resolved)) { resolved[name] = null; const parent4 = aliases[name] && aliases[name].parent; - const value2 = parent4 && resolve3(parent4); - if (value2) { - resolved[name] = [parent4].concat(value2); - } + const value2 = parent4 && resolve2(parent4); + if (value2) resolved[name] = [parent4].concat(value2); } return resolved[name]; } - __name(resolve3, "resolve"); - (names || Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve3); + __name(resolve2, "resolve"); + (names || Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve2); return resolved; } var init_tree = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon-set/tree.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon-set/tree.js"() { "use strict"; __name(getIconsTree, "getIconsTree"); } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon-set/get-icon.mjs - function internalGetIconData(data6, name, tree) { - const icons = data6.icons; - const aliases = data6.aliases || /* @__PURE__ */ Object.create(null); + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon-set/get-icon.js + function internalGetIconData(data5, name, tree) { + const icons = data5.icons; + const aliases = data5.aliases || /* @__PURE__ */ Object.create(null); let currentProps = {}; - function parse7(name2) { - currentProps = mergeIconData( - icons[name2] || aliases[name2], - currentProps - ); + function parse7(name$1) { + currentProps = mergeIconData(icons[name$1] || aliases[name$1], currentProps); } __name(parse7, "parse"); parse7(name); tree.forEach(parse7); - return mergeIconData(data6, currentProps); + return mergeIconData(data5, currentProps); } - function getIconData(data6, name) { - if (data6.icons[name]) { - return internalGetIconData(data6, name, []); - } - const tree = getIconsTree(data6, [name])[name]; - return tree ? internalGetIconData(data6, name, tree) : null; + function getIconData(data5, name) { + if (data5.icons[name]) return internalGetIconData(data5, name, []); + const tree = getIconsTree(data5, [name])[name]; + return tree ? internalGetIconData(data5, name, tree) : null; } var init_get_icon = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/icon-set/get-icon.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon-set/get-icon.js"() { "use strict"; init_merge(); init_tree(); @@ -610,46 +219,31 @@ var __esbuild_esm_mermaid = (() => { } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/svg/size.mjs - function calculateSize(size5, ratio, precision) { - if (ratio === 1) { - return size5; - } + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/size.js + function calculateSize(size4, ratio, precision) { + if (ratio === 1) return size4; precision = precision || 100; - if (typeof size5 === "number") { - return Math.ceil(size5 * ratio * precision) / precision; - } - if (typeof size5 !== "string") { - return size5; - } - const oldParts = size5.split(unitsSplit); - if (oldParts === null || !oldParts.length) { - return size5; - } + if (typeof size4 === "number") return Math.ceil(size4 * ratio * precision) / precision; + if (typeof size4 !== "string") return size4; + const oldParts = size4.split(unitsSplit); + if (oldParts === null || !oldParts.length) return size4; const newParts = []; let code = oldParts.shift(); let isNumber = unitsTest.test(code); while (true) { if (isNumber) { const num = parseFloat(code); - if (isNaN(num)) { - newParts.push(code); - } else { - newParts.push(Math.ceil(num * ratio * precision) / precision); - } - } else { - newParts.push(code); - } + if (isNaN(num)) newParts.push(code); + else newParts.push(Math.ceil(num * ratio * precision) / precision); + } else newParts.push(code); code = oldParts.shift(); - if (code === void 0) { - return newParts.join(""); - } + if (code === void 0) return newParts.join(""); isNumber = !isNumber; } } var unitsSplit, unitsTest; var init_size = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/svg/size.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/size.js"() { "use strict"; unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g; unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g; @@ -657,20 +251,16 @@ var __esbuild_esm_mermaid = (() => { } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/svg/defs.mjs - function splitSVGDefs(content, tag2 = "defs") { + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/defs.js + function splitSVGDefs(content, tag = "defs") { let defs2 = ""; - const index = content.indexOf("<" + tag2); + const index = content.indexOf("<" + tag); while (index >= 0) { const start3 = content.indexOf(">", index); - const end2 = content.indexOf("", end2); - if (endEnd === -1) { - break; - } + if (endEnd === -1) break; defs2 += content.slice(start3 + 1, end2).trim(); content = content.slice(0, index).trim() + content.slice(endEnd + 1); } @@ -687,7 +277,7 @@ var __esbuild_esm_mermaid = (() => { return mergeDefsAndContent(split.defs, start3 + split.content + end2); } var init_defs = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/svg/defs.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/defs.js"() { "use strict"; __name(splitSVGDefs, "splitSVGDefs"); __name(mergeDefsAndContent, "mergeDefsAndContent"); @@ -695,7 +285,7 @@ var __esbuild_esm_mermaid = (() => { } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/svg/build.mjs + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/build.js function iconToSVG(icon2, customisations) { const fullIcon = { ...defaultIconProps, @@ -717,45 +307,31 @@ var __esbuild_esm_mermaid = (() => { const hFlip = props.hFlip; const vFlip = props.vFlip; let rotation = props.rotate; - if (hFlip) { - if (vFlip) { - rotation += 2; - } else { - transformations.push( - "translate(" + (box.width + box.left).toString() + " " + (0 - box.top).toString() + ")" - ); - transformations.push("scale(-1 1)"); - box.top = box.left = 0; - } - } else if (vFlip) { - transformations.push( - "translate(" + (0 - box.left).toString() + " " + (box.height + box.top).toString() + ")" - ); + if (hFlip) if (vFlip) rotation += 2; + else { + transformations.push("translate(" + (box.width + box.left).toString() + " " + (0 - box.top).toString() + ")"); + transformations.push("scale(-1 1)"); + box.top = box.left = 0; + } + else if (vFlip) { + transformations.push("translate(" + (0 - box.left).toString() + " " + (box.height + box.top).toString() + ")"); transformations.push("scale(1 -1)"); box.top = box.left = 0; } let tempValue; - if (rotation < 0) { - rotation -= Math.floor(rotation / 4) * 4; - } + if (rotation < 0) rotation -= Math.floor(rotation / 4) * 4; rotation = rotation % 4; switch (rotation) { case 1: tempValue = box.height / 2 + box.top; - transformations.unshift( - "rotate(90 " + tempValue.toString() + " " + tempValue.toString() + ")" - ); + transformations.unshift("rotate(90 " + tempValue.toString() + " " + tempValue.toString() + ")"); break; case 2: - transformations.unshift( - "rotate(180 " + (box.width / 2 + box.left).toString() + " " + (box.height / 2 + box.top).toString() + ")" - ); + transformations.unshift("rotate(180 " + (box.width / 2 + box.left).toString() + " " + (box.height / 2 + box.top).toString() + ")"); break; case 3: tempValue = box.width / 2 + box.left; - transformations.unshift( - "rotate(-90 " + tempValue.toString() + " " + tempValue.toString() + ")" - ); + transformations.unshift("rotate(-90 " + tempValue.toString() + " " + tempValue.toString() + ")"); break; } if (rotation % 2 === 1) { @@ -770,13 +346,7 @@ var __esbuild_esm_mermaid = (() => { box.height = tempValue; } } - if (transformations.length) { - body = wrapSVGContent( - body, - '', - "" - ); - } + if (transformations.length) body = wrapSVGContent(body, '', ""); }); const customisationsWidth = fullCustomisations.width; const customisationsHeight = fullCustomisations.height; @@ -793,13 +363,16 @@ var __esbuild_esm_mermaid = (() => { } const attributes = {}; const setAttr = /* @__PURE__ */ __name((prop, value2) => { - if (!isUnsetKeyword(value2)) { - attributes[prop] = value2.toString(); - } + if (!isUnsetKeyword(value2)) attributes[prop] = value2.toString(); }, "setAttr"); setAttr("width", width3); setAttr("height", height2); - const viewBox = [box.left, box.top, boxWidth, boxHeight]; + const viewBox = [ + box.left, + box.top, + boxWidth, + boxHeight + ]; attributes.viewBox = viewBox.join(" "); return { attributes, @@ -809,7 +382,7 @@ var __esbuild_esm_mermaid = (() => { } var isUnsetKeyword; var init_build = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/svg/build.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/build.js"() { "use strict"; init_defaults(); init_defaults2(); @@ -820,33 +393,24 @@ var __esbuild_esm_mermaid = (() => { } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/svg/id.mjs + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/id.js function replaceIDs(body, prefix = randomPrefix) { const ids = []; let match2; - while (match2 = regex.exec(body)) { - ids.push(match2[1]); - } - if (!ids.length) { - return body; - } + while (match2 = regex.exec(body)) ids.push(match2[1]); + if (!ids.length) return body; const suffix = "suffix" + (Math.random() * 16777216 | Date.now()).toString(16); - ids.forEach((id29) => { - const newID = typeof prefix === "function" ? prefix(id29) : prefix + (counter++).toString(); - const escapedID = id29.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); - body = body.replace( - // Allowed characters before id: [#;"] - // Allowed characters after id: [)"], .[a-z] - new RegExp('([#;"])(' + escapedID + ')([")]|\\.[a-z])', "g"), - "$1" + newID + suffix + "$3" - ); + ids.forEach((id30) => { + const newID = typeof prefix === "function" ? prefix(id30) : prefix + (counter++).toString(); + const escapedID = id30.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + body = body.replace(new RegExp('([#;"])(' + escapedID + ')([")]|\\.[a-z])', "g"), "$1" + newID + suffix + "$3"); }); body = body.replace(new RegExp(suffix, "g"), ""); return body; } var regex, randomPrefix, counter; var init_id = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/svg/id.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/id.js"() { "use strict"; regex = /\sid="(\S+)"/g; randomPrefix = "IconifyId" + Date.now().toString(16) + (Math.random() * 16777216 | 0).toString(16); @@ -855,2160 +419,836 @@ var __esbuild_esm_mermaid = (() => { } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/svg/html.mjs + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/html.js function iconToHTML(body, attributes) { let renderAttribsHTML = body.indexOf("xlink:") === -1 ? "" : ' xmlns:xlink="http://www.w3.org/1999/xlink"'; - for (const attr in attributes) { - renderAttribsHTML += " " + attr + '="' + attributes[attr] + '"'; - } + for (const attr in attributes) renderAttribsHTML += " " + attr + '="' + attributes[attr] + '"'; return '" + body + ""; } var init_html = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/svg/html.mjs"() { + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/html.js"() { "use strict"; __name(iconToHTML, "iconToHTML"); } }); - // ../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js - var require_ms = __commonJS({ - "../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js"(exports2, module2) { + // ../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/index.js + var init_lib = __esm({ + "../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/index.js"() { "use strict"; - var s2 = 1e3; - var m2 = s2 * 60; - var h2 = m2 * 60; - var d2 = h2 * 24; - var w3 = d2 * 7; - var y5 = d2 * 365.25; - module2.exports = function(val, options3) { - options3 = options3 || {}; - var type3 = typeof val; - if (type3 === "string" && val.length > 0) { - return parse7(val); - } else if (type3 === "number" && isFinite(val)) { - return options3.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) - ); - }; - function parse7(str2) { - str2 = String(str2); - if (str2.length > 100) { - return; - } - var match2 = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( - str2 - ); - if (!match2) { - return; - } - var n2 = parseFloat(match2[1]); - var type3 = (match2[2] || "ms").toLowerCase(); - switch (type3) { - case "years": - case "year": - case "yrs": - case "yr": - case "y": - return n2 * y5; - case "weeks": - case "week": - case "w": - return n2 * w3; - case "days": - case "day": - case "d": - return n2 * d2; - case "hours": - case "hour": - case "hrs": - case "hr": - case "h": - return n2 * h2; - case "minutes": - case "minute": - case "mins": - case "min": - case "m": - return n2 * m2; - case "seconds": - case "second": - case "secs": - case "sec": - case "s": - return n2 * s2; - case "milliseconds": - case "millisecond": - case "msecs": - case "msec": - case "ms": - return n2; - default: - return void 0; - } - } - __name(parse7, "parse"); - function fmtShort(ms3) { - var msAbs = Math.abs(ms3); - if (msAbs >= d2) { - return Math.round(ms3 / d2) + "d"; - } - if (msAbs >= h2) { - return Math.round(ms3 / h2) + "h"; - } - if (msAbs >= m2) { - return Math.round(ms3 / m2) + "m"; - } - if (msAbs >= s2) { - return Math.round(ms3 / s2) + "s"; - } - return ms3 + "ms"; - } - __name(fmtShort, "fmtShort"); - function fmtLong(ms3) { - var msAbs = Math.abs(ms3); - if (msAbs >= d2) { - return plural(ms3, msAbs, d2, "day"); - } - if (msAbs >= h2) { - return plural(ms3, msAbs, h2, "hour"); - } - if (msAbs >= m2) { - return plural(ms3, msAbs, m2, "minute"); - } - if (msAbs >= s2) { - return plural(ms3, msAbs, s2, "second"); - } - return ms3 + " ms"; - } - __name(fmtLong, "fmtLong"); - function plural(ms3, msAbs, n2, name) { - var isPlural = msAbs >= n2 * 1.5; - return Math.round(ms3 / n2) + " " + name + (isPlural ? "s" : ""); - } - __name(plural, "plural"); + init_name(); + init_get_icon(); + init_build(); + init_id(); + init_html(); } }); - // ../../node_modules/.pnpm/debug@4.4.0_supports-color@8.1.1/node_modules/debug/src/common.js - var require_common = __commonJS({ - "../../node_modules/.pnpm/debug@4.4.0_supports-color@8.1.1/node_modules/debug/src/common.js"(exports2, module2) { + // src/assignWithDepth.ts + var assignWithDepth, assignWithDepth_default; + var init_assignWithDepth = __esm({ + "src/assignWithDepth.ts"() { "use strict"; - function setup(env) { - createDebug.debug = createDebug; - createDebug.default = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = require_ms(); - createDebug.destroy = destroy2; - Object.keys(env).forEach((key) => { - createDebug[key] = env[key]; - }); - createDebug.names = []; - createDebug.skips = []; - createDebug.formatters = {}; - function selectColor(namespace) { - let hash = 0; - for (let i2 = 0; i2 < namespace.length; i2++) { - hash = (hash << 5) - hash + namespace.charCodeAt(i2); - hash |= 0; - } - return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; - } - __name(selectColor, "selectColor"); - createDebug.selectColor = selectColor; - function createDebug(namespace) { - let prevTime; - let enableOverride = null; - let namespacesCache; - let enabledCache; - function debug(...args) { - if (!debug.enabled) { - return; + assignWithDepth = /* @__PURE__ */ __name((dst, src, { depth = 2, clobber = false } = {}) => { + const config5 = { depth, clobber }; + if (Array.isArray(src) && !Array.isArray(dst)) { + src.forEach((s2) => assignWithDepth(dst, s2, config5)); + return dst; + } else if (Array.isArray(src) && Array.isArray(dst)) { + src.forEach((s2) => { + if (!dst.includes(s2)) { + dst.push(s2); } - const self2 = debug; - const curr = Number(/* @__PURE__ */ new Date()); - const ms3 = curr - (prevTime || curr); - self2.diff = ms3; - self2.prev = prevTime; - self2.curr = curr; - prevTime = curr; - args[0] = createDebug.coerce(args[0]); - if (typeof args[0] !== "string") { - args.unshift("%O"); - } - let index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, (match2, format3) => { - if (match2 === "%%") { - return "%"; - } - index++; - const formatter = createDebug.formatters[format3]; - if (typeof formatter === "function") { - const val = args[index]; - match2 = formatter.call(self2, val); - args.splice(index, 1); - index--; - } - return match2; - }); - createDebug.formatArgs.call(self2, args); - const logFn = self2.log || createDebug.log; - logFn.apply(self2, args); - } - __name(debug, "debug"); - debug.namespace = namespace; - debug.useColors = createDebug.useColors(); - debug.color = createDebug.selectColor(namespace); - debug.extend = extend5; - debug.destroy = createDebug.destroy; - Object.defineProperty(debug, "enabled", { - enumerable: true, - configurable: false, - get: /* @__PURE__ */ __name(() => { - if (enableOverride !== null) { - return enableOverride; - } - if (namespacesCache !== createDebug.namespaces) { - namespacesCache = createDebug.namespaces; - enabledCache = createDebug.enabled(namespace); - } - return enabledCache; - }, "get"), - set: /* @__PURE__ */ __name((v3) => { - enableOverride = v3; - }, "set") }); - if (typeof createDebug.init === "function") { - createDebug.init(debug); - } - return debug; - } - __name(createDebug, "createDebug"); - function extend5(namespace, delimiter3) { - const newDebug = createDebug(this.namespace + (typeof delimiter3 === "undefined" ? ":" : delimiter3) + namespace); - newDebug.log = this.log; - return newDebug; - } - __name(extend5, "extend"); - function enable(namespaces) { - createDebug.save(namespaces); - createDebug.namespaces = namespaces; - createDebug.names = []; - createDebug.skips = []; - const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(" ", ",").split(",").filter(Boolean); - for (const ns of split) { - if (ns[0] === "-") { - createDebug.skips.push(ns.slice(1)); - } else { - createDebug.names.push(ns); - } - } - } - __name(enable, "enable"); - function matchesTemplate(search, template) { - let searchIndex = 0; - let templateIndex = 0; - let starIndex = -1; - let matchIndex = 0; - while (searchIndex < search.length) { - if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) { - if (template[templateIndex] === "*") { - starIndex = templateIndex; - matchIndex = searchIndex; - templateIndex++; - } else { - searchIndex++; - templateIndex++; - } - } else if (starIndex !== -1) { - templateIndex = starIndex + 1; - matchIndex++; - searchIndex = matchIndex; - } else { - return false; - } - } - while (templateIndex < template.length && template[templateIndex] === "*") { - templateIndex++; - } - return templateIndex === template.length; - } - __name(matchesTemplate, "matchesTemplate"); - function disable() { - const namespaces = [ - ...createDebug.names, - ...createDebug.skips.map((namespace) => "-" + namespace) - ].join(","); - createDebug.enable(""); - return namespaces; - } - __name(disable, "disable"); - function enabled(name) { - for (const skip of createDebug.skips) { - if (matchesTemplate(name, skip)) { - return false; - } - } - for (const ns of createDebug.names) { - if (matchesTemplate(name, ns)) { - return true; - } - } - return false; + return dst; } - __name(enabled, "enabled"); - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; + if (dst === void 0 || depth <= 0) { + if (dst !== void 0 && dst !== null && typeof dst === "object" && typeof src === "object") { + return Object.assign(dst, src); + } else { + return src; } - return val; } - __name(coerce, "coerce"); - function destroy2() { - console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + if (src !== void 0 && typeof dst === "object" && typeof src === "object") { + Object.keys(src).forEach((key) => { + if (typeof src[key] === "object" && (dst[key] === void 0 || typeof dst[key] === "object")) { + if (dst[key] === void 0) { + dst[key] = Array.isArray(src[key]) ? [] : {}; + } + dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber }); + } else if (clobber || typeof dst[key] !== "object" && typeof src[key] !== "object") { + dst[key] = src[key]; + } + }); } - __name(destroy2, "destroy"); - createDebug.enable(createDebug.load()); - return createDebug; - } - __name(setup, "setup"); - module2.exports = setup; + return dst; + }, "assignWithDepth"); + assignWithDepth_default = assignWithDepth; } }); - // ../../node_modules/.pnpm/debug@4.4.0_supports-color@8.1.1/node_modules/debug/src/browser.js - var require_browser = __commonJS({ - "../../node_modules/.pnpm/debug@4.4.0_supports-color@8.1.1/node_modules/debug/src/browser.js"(exports2, module2) { + // ../../node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js + var require_dayjs_min = __commonJS({ + "../../node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js"(exports2, module2) { "use strict"; - exports2.formatArgs = formatArgs; - exports2.save = save; - exports2.load = load2; - exports2.useColors = useColors; - exports2.storage = localstorage(); - exports2.destroy = /* @__PURE__ */ (() => { - let warned = false; - return () => { - if (!warned) { - warned = true; - console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + !(function(t4, e3) { + "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = e3() : "function" == typeof define && define.amd ? define(e3) : (t4 = "undefined" != typeof globalThis ? globalThis : t4 || self).dayjs = e3(); + })(exports2, (function() { + "use strict"; + var t4 = 1e3, e3 = 6e4, n2 = 36e5, r2 = "millisecond", i2 = "second", s2 = "minute", u2 = "hour", a2 = "day", o2 = "week", c3 = "month", f2 = "quarter", h3 = "year", d3 = "date", l4 = "Invalid Date", $4 = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y6 = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M3 = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: /* @__PURE__ */ __name(function(t5) { + var e4 = ["th", "st", "nd", "rd"], n3 = t5 % 100; + return "[" + t5 + (e4[(n3 - 20) % 10] || e4[n3] || e4[0]) + "]"; + }, "ordinal") }, m3 = /* @__PURE__ */ __name(function(t5, e4, n3) { + var r3 = String(t5); + return !r3 || r3.length >= e4 ? t5 : "" + Array(e4 + 1 - r3.length).join(n3) + t5; + }, "m"), v3 = { s: m3, z: /* @__PURE__ */ __name(function(t5) { + var e4 = -t5.utcOffset(), n3 = Math.abs(e4), r3 = Math.floor(n3 / 60), i3 = n3 % 60; + return (e4 <= 0 ? "+" : "-") + m3(r3, 2, "0") + ":" + m3(i3, 2, "0"); + }, "z"), m: /* @__PURE__ */ __name(function t5(e4, n3) { + if (e4.date() < n3.date()) return -t5(n3, e4); + var r3 = 12 * (n3.year() - e4.year()) + (n3.month() - e4.month()), i3 = e4.clone().add(r3, c3), s3 = n3 - i3 < 0, u3 = e4.clone().add(r3 + (s3 ? -1 : 1), c3); + return +(-(r3 + (n3 - i3) / (s3 ? i3 - u3 : u3 - i3)) || 0); + }, "t"), a: /* @__PURE__ */ __name(function(t5) { + return t5 < 0 ? Math.ceil(t5) || 0 : Math.floor(t5); + }, "a"), p: /* @__PURE__ */ __name(function(t5) { + return { M: c3, y: h3, w: o2, d: a2, D: d3, h: u2, m: s2, s: i2, ms: r2, Q: f2 }[t5] || String(t5 || "").toLowerCase().replace(/s$/, ""); + }, "p"), u: /* @__PURE__ */ __name(function(t5) { + return void 0 === t5; + }, "u") }, g2 = "en", D4 = {}; + D4[g2] = M3; + var p3 = "$isDayjsObject", S4 = /* @__PURE__ */ __name(function(t5) { + return t5 instanceof _3 || !(!t5 || !t5[p3]); + }, "S"), w4 = /* @__PURE__ */ __name(function t5(e4, n3, r3) { + var i3; + if (!e4) return g2; + if ("string" == typeof e4) { + var s3 = e4.toLowerCase(); + D4[s3] && (i3 = s3), n3 && (D4[s3] = n3, i3 = s3); + var u3 = e4.split("-"); + if (!i3 && u3.length > 1) return t5(u3[0]); + } else { + var a3 = e4.name; + D4[a3] = e4, i3 = a3; } + return !r3 && i3 && (g2 = i3), i3 || !r3 && g2; + }, "t"), O3 = /* @__PURE__ */ __name(function(t5, e4) { + if (S4(t5)) return t5.clone(); + var n3 = "object" == typeof e4 ? e4 : {}; + return n3.date = t5, n3.args = arguments, new _3(n3); + }, "O"), b3 = v3; + b3.l = w4, b3.i = S4, b3.w = function(t5, e4) { + return O3(t5, { locale: e4.$L, utc: e4.$u, x: e4.$x, $offset: e4.$offset }); }; - })(); - exports2.colors = [ - "#0000CC", - "#0000FF", - "#0033CC", - "#0033FF", - "#0066CC", - "#0066FF", - "#0099CC", - "#0099FF", - "#00CC00", - "#00CC33", - "#00CC66", - "#00CC99", - "#00CCCC", - "#00CCFF", - "#3300CC", - "#3300FF", - "#3333CC", - "#3333FF", - "#3366CC", - "#3366FF", - "#3399CC", - "#3399FF", - "#33CC00", - "#33CC33", - "#33CC66", - "#33CC99", - "#33CCCC", - "#33CCFF", - "#6600CC", - "#6600FF", - "#6633CC", - "#6633FF", - "#66CC00", - "#66CC33", - "#9900CC", - "#9900FF", - "#9933CC", - "#9933FF", - "#99CC00", - "#99CC33", - "#CC0000", - "#CC0033", - "#CC0066", - "#CC0099", - "#CC00CC", - "#CC00FF", - "#CC3300", - "#CC3333", - "#CC3366", - "#CC3399", - "#CC33CC", - "#CC33FF", - "#CC6600", - "#CC6633", - "#CC9900", - "#CC9933", - "#CCCC00", - "#CCCC33", - "#FF0000", - "#FF0033", - "#FF0066", - "#FF0099", - "#FF00CC", - "#FF00FF", - "#FF3300", - "#FF3333", - "#FF3366", - "#FF3399", - "#FF33CC", - "#FF33FF", - "#FF6600", - "#FF6633", - "#FF9900", - "#FF9933", - "#FFCC00", - "#FFCC33" - ]; - function useColors() { - if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { - return true; - } - if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; + var _3 = (function() { + function M4(t5) { + this.$L = w4(t5.locale, null, true), this.parse(t5), this.$x = this.$x || t5.x || {}, this[p3] = true; + } + __name(M4, "M"); + var m4 = M4.prototype; + return m4.parse = function(t5) { + this.$d = (function(t6) { + var e4 = t6.date, n3 = t6.utc; + if (null === e4) return /* @__PURE__ */ new Date(NaN); + if (b3.u(e4)) return /* @__PURE__ */ new Date(); + if (e4 instanceof Date) return new Date(e4); + if ("string" == typeof e4 && !/Z$/i.test(e4)) { + var r3 = e4.match($4); + if (r3) { + var i3 = r3[2] - 1 || 0, s3 = (r3[7] || "0").substring(0, 3); + return n3 ? new Date(Date.UTC(r3[1], i3, r3[3] || 1, r3[4] || 0, r3[5] || 0, r3[6] || 0, s3)) : new Date(r3[1], i3, r3[3] || 1, r3[4] || 0, r3[5] || 0, r3[6] || 0, s3); + } + } + return new Date(e4); + })(t5), this.init(); + }, m4.init = function() { + var t5 = this.$d; + this.$y = t5.getFullYear(), this.$M = t5.getMonth(), this.$D = t5.getDate(), this.$W = t5.getDay(), this.$H = t5.getHours(), this.$m = t5.getMinutes(), this.$s = t5.getSeconds(), this.$ms = t5.getMilliseconds(); + }, m4.$utils = function() { + return b3; + }, m4.isValid = function() { + return !(this.$d.toString() === l4); + }, m4.isSame = function(t5, e4) { + var n3 = O3(t5); + return this.startOf(e4) <= n3 && n3 <= this.endOf(e4); + }, m4.isAfter = function(t5, e4) { + return O3(t5) < this.startOf(e4); + }, m4.isBefore = function(t5, e4) { + return this.endOf(e4) < O3(t5); + }, m4.$g = function(t5, e4, n3) { + return b3.u(t5) ? this[e4] : this.set(n3, t5); + }, m4.unix = function() { + return Math.floor(this.valueOf() / 1e3); + }, m4.valueOf = function() { + return this.$d.getTime(); + }, m4.startOf = function(t5, e4) { + var n3 = this, r3 = !!b3.u(e4) || e4, f3 = b3.p(t5), l5 = /* @__PURE__ */ __name(function(t6, e6) { + var i3 = b3.w(n3.$u ? Date.UTC(n3.$y, e6, t6) : new Date(n3.$y, e6, t6), n3); + return r3 ? i3 : i3.endOf(a2); + }, "l"), $5 = /* @__PURE__ */ __name(function(t6, e6) { + return b3.w(n3.toDate()[t6].apply(n3.toDate("s"), (r3 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e6)), n3); + }, "$"), y7 = this.$W, M5 = this.$M, m5 = this.$D, v5 = "set" + (this.$u ? "UTC" : ""); + switch (f3) { + case h3: + return r3 ? l5(1, 0) : l5(31, 11); + case c3: + return r3 ? l5(1, M5) : l5(0, M5 + 1); + case o2: + var g3 = this.$locale().weekStart || 0, D5 = (y7 < g3 ? y7 + 7 : y7) - g3; + return l5(r3 ? m5 - D5 : m5 + (6 - D5), M5); + case a2: + case d3: + return $5(v5 + "Hours", 0); + case u2: + return $5(v5 + "Minutes", 1); + case s2: + return $5(v5 + "Seconds", 2); + case i2: + return $5(v5 + "Milliseconds", 3); + default: + return this.clone(); + } + }, m4.endOf = function(t5) { + return this.startOf(t5, false); + }, m4.$set = function(t5, e4) { + var n3, o3 = b3.p(t5), f3 = "set" + (this.$u ? "UTC" : ""), l5 = (n3 = {}, n3[a2] = f3 + "Date", n3[d3] = f3 + "Date", n3[c3] = f3 + "Month", n3[h3] = f3 + "FullYear", n3[u2] = f3 + "Hours", n3[s2] = f3 + "Minutes", n3[i2] = f3 + "Seconds", n3[r2] = f3 + "Milliseconds", n3)[o3], $5 = o3 === a2 ? this.$D + (e4 - this.$W) : e4; + if (o3 === c3 || o3 === h3) { + var y7 = this.clone().set(d3, 1); + y7.$d[l5]($5), y7.init(), this.$d = y7.set(d3, Math.min(this.$D, y7.daysInMonth())).$d; + } else l5 && this.$d[l5]($5); + return this.init(), this; + }, m4.set = function(t5, e4) { + return this.clone().$set(t5, e4); + }, m4.get = function(t5) { + return this[b3.p(t5)](); + }, m4.add = function(r3, f3) { + var d4, l5 = this; + r3 = Number(r3); + var $5 = b3.p(f3), y7 = /* @__PURE__ */ __name(function(t5) { + var e4 = O3(l5); + return b3.w(e4.date(e4.date() + Math.round(t5 * r3)), l5); + }, "y"); + if ($5 === c3) return this.set(c3, this.$M + r3); + if ($5 === h3) return this.set(h3, this.$y + r3); + if ($5 === a2) return y7(1); + if ($5 === o2) return y7(7); + var M5 = (d4 = {}, d4[s2] = e3, d4[u2] = n2, d4[i2] = t4, d4)[$5] || 1, m5 = this.$d.getTime() + r3 * M5; + return b3.w(m5, this); + }, m4.subtract = function(t5, e4) { + return this.add(-1 * t5, e4); + }, m4.format = function(t5) { + var e4 = this, n3 = this.$locale(); + if (!this.isValid()) return n3.invalidDate || l4; + var r3 = t5 || "YYYY-MM-DDTHH:mm:ssZ", i3 = b3.z(this), s3 = this.$H, u3 = this.$m, a3 = this.$M, o3 = n3.weekdays, c4 = n3.months, f3 = n3.meridiem, h4 = /* @__PURE__ */ __name(function(t6, n4, i4, s4) { + return t6 && (t6[n4] || t6(e4, r3)) || i4[n4].slice(0, s4); + }, "h"), d4 = /* @__PURE__ */ __name(function(t6) { + return b3.s(s3 % 12 || 12, t6, "0"); + }, "d"), $5 = f3 || function(t6, e6, n4) { + var r4 = t6 < 12 ? "AM" : "PM"; + return n4 ? r4.toLowerCase() : r4; + }; + return r3.replace(y6, (function(t6, r4) { + return r4 || (function(t7) { + switch (t7) { + case "YY": + return String(e4.$y).slice(-2); + case "YYYY": + return b3.s(e4.$y, 4, "0"); + case "M": + return a3 + 1; + case "MM": + return b3.s(a3 + 1, 2, "0"); + case "MMM": + return h4(n3.monthsShort, a3, c4, 3); + case "MMMM": + return h4(c4, a3); + case "D": + return e4.$D; + case "DD": + return b3.s(e4.$D, 2, "0"); + case "d": + return String(e4.$W); + case "dd": + return h4(n3.weekdaysMin, e4.$W, o3, 2); + case "ddd": + return h4(n3.weekdaysShort, e4.$W, o3, 3); + case "dddd": + return o3[e4.$W]; + case "H": + return String(s3); + case "HH": + return b3.s(s3, 2, "0"); + case "h": + return d4(1); + case "hh": + return d4(2); + case "a": + return $5(s3, u3, true); + case "A": + return $5(s3, u3, false); + case "m": + return String(u3); + case "mm": + return b3.s(u3, 2, "0"); + case "s": + return String(e4.$s); + case "ss": + return b3.s(e4.$s, 2, "0"); + case "SSS": + return b3.s(e4.$ms, 3, "0"); + case "Z": + return i3; + } + return null; + })(t6) || i3.replace(":", ""); + })); + }, m4.utcOffset = function() { + return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); + }, m4.diff = function(r3, d4, l5) { + var $5, y7 = this, M5 = b3.p(d4), m5 = O3(r3), v5 = (m5.utcOffset() - this.utcOffset()) * e3, g3 = this - m5, D5 = /* @__PURE__ */ __name(function() { + return b3.m(y7, m5); + }, "D"); + switch (M5) { + case h3: + $5 = D5() / 12; + break; + case c3: + $5 = D5(); + break; + case f2: + $5 = D5() / 3; + break; + case o2: + $5 = (g3 - v5) / 6048e5; + break; + case a2: + $5 = (g3 - v5) / 864e5; + break; + case u2: + $5 = g3 / n2; + break; + case s2: + $5 = g3 / e3; + break; + case i2: + $5 = g3 / t4; + break; + default: + $5 = g3; + } + return l5 ? $5 : b3.a($5); + }, m4.daysInMonth = function() { + return this.endOf(c3).$D; + }, m4.$locale = function() { + return D4[this.$L]; + }, m4.locale = function(t5, e4) { + if (!t5) return this.$L; + var n3 = this.clone(), r3 = w4(t5, e4, true); + return r3 && (n3.$L = r3), n3; + }, m4.clone = function() { + return b3.w(this.$d, this); + }, m4.toDate = function() { + return new Date(this.valueOf()); + }, m4.toJSON = function() { + return this.isValid() ? this.toISOString() : null; + }, m4.toISOString = function() { + return this.$d.toISOString(); + }, m4.toString = function() { + return this.$d.toUTCString(); + }, M4; + })(), k2 = _3.prototype; + return O3.prototype = k2, [["$ms", r2], ["$s", i2], ["$m", s2], ["$H", u2], ["$W", a2], ["$M", c3], ["$y", h3], ["$D", d3]].forEach((function(t5) { + k2[t5[1]] = function(e4) { + return this.$g(e4, t5[0], t5[1]); + }; + })), O3.extend = function(t5, e4) { + return t5.$i || (t5(e4, _3, O3), t5.$i = true), O3; + }, O3.locale = w4, O3.isDayjs = S4, O3.unix = function(t5) { + return O3(1e3 * t5); + }, O3.en = D4[g2], O3.Ls = D4, O3.p = {}, O3; + })); + } + }); + + // src/logger.ts + var import_dayjs, LEVELS, log, setLogLevel, format; + var init_logger = __esm({ + "src/logger.ts"() { + "use strict"; + import_dayjs = __toESM(require_dayjs_min(), 1); + LEVELS = { + trace: 0, + debug: 1, + info: 2, + warn: 3, + error: 4, + fatal: 5 + }; + log = { + trace: /* @__PURE__ */ __name((..._args) => { + }, "trace"), + debug: /* @__PURE__ */ __name((..._args) => { + }, "debug"), + info: /* @__PURE__ */ __name((..._args) => { + }, "info"), + warn: /* @__PURE__ */ __name((..._args) => { + }, "warn"), + error: /* @__PURE__ */ __name((..._args) => { + }, "error"), + fatal: /* @__PURE__ */ __name((..._args) => { + }, "fatal") + }; + setLogLevel = /* @__PURE__ */ __name(function(level = "fatal") { + let numericLevel = LEVELS.fatal; + if (typeof level === "string") { + if (level.toLowerCase() in LEVELS) { + numericLevel = LEVELS[level]; + } + } else if (typeof level === "number") { + numericLevel = level; } - let m2; - return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 - typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - typeof navigator !== "undefined" && navigator.userAgent && (m2 = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m2[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker - typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); - } - __name(useColors, "useColors"); - function formatArgs(args) { - args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff); - if (!this.useColors) { - return; + log.trace = () => { + }; + log.debug = () => { + }; + log.info = () => { + }; + log.warn = () => { + }; + log.error = () => { + }; + log.fatal = () => { + }; + if (numericLevel <= LEVELS.fatal) { + log.fatal = console.error ? console.error.bind(console, format("FATAL"), "color: orange") : console.log.bind(console, "\x1B[35m", format("FATAL")); } - const c3 = "color: " + this.color; - args.splice(1, 0, c3, "color: inherit"); - let index = 0; - let lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, (match2) => { - if (match2 === "%%") { - return; - } - index++; - if (match2 === "%c") { - lastC = index; - } - }); - args.splice(lastC, 0, c3); - } - __name(formatArgs, "formatArgs"); - exports2.log = console.debug || console.log || (() => { - }); - function save(namespaces) { - try { - if (namespaces) { - exports2.storage.setItem("debug", namespaces); - } else { - exports2.storage.removeItem("debug"); - } - } catch (error3) { + if (numericLevel <= LEVELS.error) { + log.error = console.error ? console.error.bind(console, format("ERROR"), "color: orange") : console.log.bind(console, "\x1B[31m", format("ERROR")); } - } - __name(save, "save"); - function load2() { - let r2; - try { - r2 = exports2.storage.getItem("debug"); - } catch (error3) { + if (numericLevel <= LEVELS.warn) { + log.warn = console.warn ? console.warn.bind(console, format("WARN"), "color: orange") : console.log.bind(console, `\x1B[33m`, format("WARN")); } - if (!r2 && typeof process !== "undefined" && "env" in process) { - r2 = process.env.DEBUG; + if (numericLevel <= LEVELS.info) { + log.info = console.info ? console.info.bind(console, format("INFO"), "color: lightblue") : console.log.bind(console, "\x1B[34m", format("INFO")); } - return r2; - } - __name(load2, "load"); - function localstorage() { - try { - return localStorage; - } catch (error3) { + if (numericLevel <= LEVELS.debug) { + log.debug = console.debug ? console.debug.bind(console, format("DEBUG"), "color: lightgreen") : console.log.bind(console, "\x1B[32m", format("DEBUG")); } - } - __name(localstorage, "localstorage"); - module2.exports = require_common()(exports2); - var { formatters } = module2.exports; - formatters.j = function(v3) { - try { - return JSON.stringify(v3); - } catch (error3) { - return "[UnexpectedJSONParseError]: " + error3.message; + if (numericLevel <= LEVELS.trace) { + log.trace = console.debug ? console.debug.bind(console, format("TRACE"), "color: lightgreen") : console.log.bind(console, "\x1B[32m", format("TRACE")); } - }; + }, "setLogLevel"); + format = /* @__PURE__ */ __name((level) => { + const time4 = (0, import_dayjs.default)().format("ss.SSS"); + return `%c${time4} : ${level} : `; + }, "format"); } }); - // ../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/index.mjs - var import_debug; - var init_lib = __esm({ - "../../node_modules/.pnpm/@iconify+utils@2.3.0/node_modules/@iconify/utils/lib/index.mjs"() { + // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/channel.js + var Channel, channel_default; + var init_channel = __esm({ + "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/channel.js"() { "use strict"; - init_name(); - init_get_icon(); - init_build(); - init_id(); - init_html(); - import_debug = __toESM(require_browser(), 1); + Channel = { + /* CLAMP */ + min: { + r: 0, + g: 0, + b: 0, + s: 0, + l: 0, + a: 0 + }, + max: { + r: 255, + g: 255, + b: 255, + h: 360, + s: 100, + l: 100, + a: 1 + }, + clamp: { + r: /* @__PURE__ */ __name((r2) => r2 >= 255 ? 255 : r2 < 0 ? 0 : r2, "r"), + g: /* @__PURE__ */ __name((g2) => g2 >= 255 ? 255 : g2 < 0 ? 0 : g2, "g"), + b: /* @__PURE__ */ __name((b3) => b3 >= 255 ? 255 : b3 < 0 ? 0 : b3, "b"), + h: /* @__PURE__ */ __name((h3) => h3 % 360, "h"), + s: /* @__PURE__ */ __name((s2) => s2 >= 100 ? 100 : s2 < 0 ? 0 : s2, "s"), + l: /* @__PURE__ */ __name((l4) => l4 >= 100 ? 100 : l4 < 0 ? 0 : l4, "l"), + a: /* @__PURE__ */ __name((a2) => a2 >= 1 ? 1 : a2 < 0 ? 0 : a2, "a") + }, + /* CONVERSION */ + //SOURCE: https://planetcalc.com/7779 + toLinear: /* @__PURE__ */ __name((c3) => { + const n2 = c3 / 255; + return c3 > 0.03928 ? Math.pow((n2 + 0.055) / 1.055, 2.4) : n2 / 12.92; + }, "toLinear"), + //SOURCE: https://gist.github.com/mjackson/5311256 + hue2rgb: /* @__PURE__ */ __name((p3, q3, t4) => { + if (t4 < 0) + t4 += 1; + if (t4 > 1) + t4 -= 1; + if (t4 < 1 / 6) + return p3 + (q3 - p3) * 6 * t4; + if (t4 < 1 / 2) + return q3; + if (t4 < 2 / 3) + return p3 + (q3 - p3) * (2 / 3 - t4) * 6; + return p3; + }, "hue2rgb"), + hsl2rgb: /* @__PURE__ */ __name(({ h: h3, s: s2, l: l4 }, channel2) => { + if (!s2) + return l4 * 2.55; + h3 /= 360; + s2 /= 100; + l4 /= 100; + const q3 = l4 < 0.5 ? l4 * (1 + s2) : l4 + s2 - l4 * s2; + const p3 = 2 * l4 - q3; + switch (channel2) { + case "r": + return Channel.hue2rgb(p3, q3, h3 + 1 / 3) * 255; + case "g": + return Channel.hue2rgb(p3, q3, h3) * 255; + case "b": + return Channel.hue2rgb(p3, q3, h3 - 1 / 3) * 255; + } + }, "hsl2rgb"), + rgb2hsl: /* @__PURE__ */ __name(({ r: r2, g: g2, b: b3 }, channel2) => { + r2 /= 255; + g2 /= 255; + b3 /= 255; + const max10 = Math.max(r2, g2, b3); + const min9 = Math.min(r2, g2, b3); + const l4 = (max10 + min9) / 2; + if (channel2 === "l") + return l4 * 100; + if (max10 === min9) + return 0; + const d3 = max10 - min9; + const s2 = l4 > 0.5 ? d3 / (2 - max10 - min9) : d3 / (max10 + min9); + if (channel2 === "s") + return s2 * 100; + switch (max10) { + case r2: + return ((g2 - b3) / d3 + (g2 < b3 ? 6 : 0)) * 60; + case g2: + return ((b3 - r2) / d3 + 2) * 60; + case b3: + return ((r2 - g2) / d3 + 4) * 60; + default: + return -1; + } + }, "rgb2hsl") + }; + channel_default = Channel; } }); - // src/rendering-util/icons.ts - var unknownIcon, iconsStore, loaderStore, registerIconPacks, getRegisteredIconData, getIconSVG; - var init_icons = __esm({ - "src/rendering-util/icons.ts"() { + // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/lang.js + var Lang, lang_default; + var init_lang = __esm({ + "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/lang.js"() { "use strict"; - init_logger(); - init_lib(); - unknownIcon = { - body: '?', - height: 80, - width: 80 + Lang = { + /* API */ + clamp: /* @__PURE__ */ __name((number7, lower2, upper) => { + if (lower2 > upper) + return Math.min(lower2, Math.max(upper, number7)); + return Math.min(upper, Math.max(lower2, number7)); + }, "clamp"), + round: /* @__PURE__ */ __name((number7) => { + return Math.round(number7 * 1e10) / 1e10; + }, "round") }; - iconsStore = /* @__PURE__ */ new Map(); - loaderStore = /* @__PURE__ */ new Map(); - registerIconPacks = /* @__PURE__ */ __name((iconLoaders) => { - for (const iconLoader of iconLoaders) { - if (!iconLoader.name) { - throw new Error( - 'Invalid icon loader. Must have a "name" property with non-empty string value.' - ); - } - log.debug("Registering icon pack:", iconLoader.name); - if ("loader" in iconLoader) { - loaderStore.set(iconLoader.name, iconLoader.loader); - } else if ("icons" in iconLoader) { - iconsStore.set(iconLoader.name, iconLoader.icons); - } else { - log.error("Invalid icon loader:", iconLoader); - throw new Error('Invalid icon loader. Must have either "icons" or "loader" property.'); - } - } - }, "registerIconPacks"); - getRegisteredIconData = /* @__PURE__ */ __name(async (iconName, fallbackPrefix) => { - const data6 = stringToIcon(iconName, true, fallbackPrefix !== void 0); - if (!data6) { - throw new Error(`Invalid icon name: ${iconName}`); - } - const prefix = data6.prefix || fallbackPrefix; - if (!prefix) { - throw new Error(`Icon name must contain a prefix: ${iconName}`); - } - let icons = iconsStore.get(prefix); - if (!icons) { - const loader28 = loaderStore.get(prefix); - if (!loader28) { - throw new Error(`Icon set not found: ${data6.prefix}`); - } - try { - const loaded = await loader28(); - icons = { ...loaded, prefix }; - iconsStore.set(prefix, icons); - } catch (e3) { - log.error(e3); - throw new Error(`Failed to load icon set: ${data6.prefix}`); - } - } - const iconData = getIconData(icons, data6.name); - if (!iconData) { - throw new Error(`Icon not found: ${iconName}`); - } - return iconData; - }, "getRegisteredIconData"); - getIconSVG = /* @__PURE__ */ __name(async (iconName, customisations) => { - let iconData; - try { - iconData = await getRegisteredIconData(iconName, customisations?.fallbackPrefix); - } catch (e3) { - log.error(e3); - iconData = unknownIcon; - } - const renderData = iconToSVG(iconData, customisations); - const svg2 = iconToHTML(replaceIDs(renderData.body), renderData.attributes); - return svg2; - }, "getIconSVG"); + lang_default = Lang; } }); - // ../../node_modules/.pnpm/ts-dedent@2.2.0/node_modules/ts-dedent/esm/index.js - function dedent(templ) { - var values2 = []; - for (var _i = 1; _i < arguments.length; _i++) { - values2[_i - 1] = arguments[_i]; - } - var strings = Array.from(typeof templ === "string" ? [templ] : templ); - strings[strings.length - 1] = strings[strings.length - 1].replace(/\r?\n([\t ]*)$/, ""); - var indentLengths = strings.reduce(function(arr, str2) { - var matches33 = str2.match(/\n([\t ]+|(?!\s).)/g); - if (matches33) { - return arr.concat(matches33.map(function(match2) { - var _a, _b; - return (_b = (_a = match2.match(/[\t ]/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; - })); - } - return arr; - }, []); - if (indentLengths.length) { - var pattern_1 = new RegExp("\n[ ]{" + Math.min.apply(Math, indentLengths) + "}", "g"); - strings = strings.map(function(str2) { - return str2.replace(pattern_1, "\n"); - }); + // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/unit.js + var Unit, unit_default; + var init_unit = __esm({ + "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/unit.js"() { + "use strict"; + Unit = { + /* API */ + dec2hex: /* @__PURE__ */ __name((dec) => { + const hex2 = Math.round(dec).toString(16); + return hex2.length > 1 ? hex2 : `0${hex2}`; + }, "dec2hex") + }; + unit_default = Unit; } - strings[0] = strings[0].replace(/^\r?\n/, ""); - var string3 = strings[0]; - values2.forEach(function(value2, i2) { - var endentations = string3.match(/(?:^|\n)( *)$/); - var endentation = endentations ? endentations[1] : ""; - var indentedValue = value2; - if (typeof value2 === "string" && value2.includes("\n")) { - indentedValue = String(value2).split("\n").map(function(str2, i3) { - return i3 === 0 ? str2 : "" + endentation + str2; - }).join("\n"); - } - string3 += indentedValue + strings[i2 + 1]; - }); - return string3; - } - var init_esm = __esm({ - "../../node_modules/.pnpm/ts-dedent@2.2.0/node_modules/ts-dedent/esm/index.js"() { + }); + + // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/index.js + var Utils, utils_default; + var init_utils = __esm({ + "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/index.js"() { "use strict"; - __name(dedent, "dedent"); + init_channel(); + init_lang(); + init_unit(); + Utils = { + channel: channel_default, + lang: lang_default, + unit: unit_default + }; + utils_default = Utils; } }); - // src/diagram-api/regexes.ts - var frontMatterRegex, directiveRegex, anyCommentRegex; - var init_regexes = __esm({ - "src/diagram-api/regexes.ts"() { + // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/constants.js + var DEC2HEX, TYPE; + var init_constants = __esm({ + "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/constants.js"() { "use strict"; - frontMatterRegex = /^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s; - directiveRegex = /%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi; - anyCommentRegex = /\s*%%.*\n/gm; + init_utils(); + DEC2HEX = {}; + for (let i2 = 0; i2 <= 255; i2++) + DEC2HEX[i2] = utils_default.unit.dec2hex(i2); + TYPE = { + ALL: 0, + RGB: 1, + HSL: 2 + }; } }); - // src/errors.ts - var UnknownDiagramError; - var init_errors = __esm({ - "src/errors.ts"() { + // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/type.js + var Type, type_default; + var init_type = __esm({ + "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/type.js"() { "use strict"; - UnknownDiagramError = class extends Error { + init_constants(); + Type = class { static { - __name(this, "UnknownDiagramError"); + __name(this, "Type"); } - constructor(message) { - super(message); - this.name = "UnknownDiagramError"; + constructor() { + this.type = TYPE.ALL; + } + /* API */ + get() { + return this.type; + } + set(type3) { + if (this.type && this.type !== type3) + throw new Error("Cannot change both RGB and HSL channels at the same time"); + this.type = type3; + } + reset() { + this.type = TYPE.ALL; + } + is(type3) { + return this.type === type3; } }; + type_default = Type; } }); - // src/diagram-api/detectType.ts - var detectors, detectType, registerLazyLoadedDiagrams, addDetector, getDiagramLoader; - var init_detectType = __esm({ - "src/diagram-api/detectType.ts"() { + // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/index.js + var Channels, channels_default; + var init_channels = __esm({ + "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/index.js"() { "use strict"; - init_logger(); - init_regexes(); - init_errors(); - detectors = {}; - detectType = /* @__PURE__ */ __name(function(text4, config5) { - text4 = text4.replace(frontMatterRegex, "").replace(directiveRegex, "").replace(anyCommentRegex, "\n"); - for (const [key, { detector: detector27 }] of Object.entries(detectors)) { - const diagram26 = detector27(text4, config5); - if (diagram26) { - return key; - } + init_utils(); + init_type(); + init_constants(); + Channels = class { + static { + __name(this, "Channels"); } - throw new UnknownDiagramError( - `No diagram type detected matching given configuration for text: ${text4}` - ); - }, "detectType"); - registerLazyLoadedDiagrams = /* @__PURE__ */ __name((...diagrams2) => { - for (const { id: id29, detector: detector27, loader: loader28 } of diagrams2) { - addDetector(id29, detector27, loader28); + /* CONSTRUCTOR */ + constructor(data5, color2) { + this.color = color2; + this.changed = false; + this.data = data5; + this.type = new type_default(); } - }, "registerLazyLoadedDiagrams"); - addDetector = /* @__PURE__ */ __name((key, detector27, loader28) => { - if (detectors[key]) { - log.warn(`Detector with key ${key} already exists. Overwriting.`); + /* API */ + set(data5, color2) { + this.color = color2; + this.changed = false; + this.data = data5; + this.type.type = TYPE.ALL; + return this; } - detectors[key] = { detector: detector27, loader: loader28 }; - log.debug(`Detector with key ${key} added${loader28 ? " with loader" : ""}`); - }, "addDetector"); - getDiagramLoader = /* @__PURE__ */ __name((key) => { - return detectors[key].loader; - }, "getDiagramLoader"); + /* HELPERS */ + _ensureHSL() { + const data5 = this.data; + const { h: h3, s: s2, l: l4 } = data5; + if (h3 === void 0) + data5.h = utils_default.channel.rgb2hsl(data5, "h"); + if (s2 === void 0) + data5.s = utils_default.channel.rgb2hsl(data5, "s"); + if (l4 === void 0) + data5.l = utils_default.channel.rgb2hsl(data5, "l"); + } + _ensureRGB() { + const data5 = this.data; + const { r: r2, g: g2, b: b3 } = data5; + if (r2 === void 0) + data5.r = utils_default.channel.hsl2rgb(data5, "r"); + if (g2 === void 0) + data5.g = utils_default.channel.hsl2rgb(data5, "g"); + if (b3 === void 0) + data5.b = utils_default.channel.hsl2rgb(data5, "b"); + } + /* GETTERS */ + get r() { + const data5 = this.data; + const r2 = data5.r; + if (!this.type.is(TYPE.HSL) && r2 !== void 0) + return r2; + this._ensureHSL(); + return utils_default.channel.hsl2rgb(data5, "r"); + } + get g() { + const data5 = this.data; + const g2 = data5.g; + if (!this.type.is(TYPE.HSL) && g2 !== void 0) + return g2; + this._ensureHSL(); + return utils_default.channel.hsl2rgb(data5, "g"); + } + get b() { + const data5 = this.data; + const b3 = data5.b; + if (!this.type.is(TYPE.HSL) && b3 !== void 0) + return b3; + this._ensureHSL(); + return utils_default.channel.hsl2rgb(data5, "b"); + } + get h() { + const data5 = this.data; + const h3 = data5.h; + if (!this.type.is(TYPE.RGB) && h3 !== void 0) + return h3; + this._ensureRGB(); + return utils_default.channel.rgb2hsl(data5, "h"); + } + get s() { + const data5 = this.data; + const s2 = data5.s; + if (!this.type.is(TYPE.RGB) && s2 !== void 0) + return s2; + this._ensureRGB(); + return utils_default.channel.rgb2hsl(data5, "s"); + } + get l() { + const data5 = this.data; + const l4 = data5.l; + if (!this.type.is(TYPE.RGB) && l4 !== void 0) + return l4; + this._ensureRGB(); + return utils_default.channel.rgb2hsl(data5, "l"); + } + get a() { + return this.data.a; + } + /* SETTERS */ + set r(r2) { + this.type.set(TYPE.RGB); + this.changed = true; + this.data.r = r2; + } + set g(g2) { + this.type.set(TYPE.RGB); + this.changed = true; + this.data.g = g2; + } + set b(b3) { + this.type.set(TYPE.RGB); + this.changed = true; + this.data.b = b3; + } + set h(h3) { + this.type.set(TYPE.HSL); + this.changed = true; + this.data.h = h3; + } + set s(s2) { + this.type.set(TYPE.HSL); + this.changed = true; + this.data.s = s2; + } + set l(l4) { + this.type.set(TYPE.HSL); + this.changed = true; + this.data.l = l4; + } + set a(a2) { + this.changed = true; + this.data.a = a2; + } + }; + channels_default = Channels; } }); - // src/diagrams/c4/parser/c4Diagram.jison - var parser, c4Diagram_default; - var init_c4Diagram = __esm({ - "src/diagrams/c4/parser/c4Diagram.jison"() { + // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/reusable.js + var channels, reusable_default; + var init_reusable = __esm({ + "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/reusable.js"() { "use strict"; - parser = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; - return o3; - }, "o"), $V0 = [1, 24], $V1 = [1, 25], $V2 = [1, 26], $V3 = [1, 27], $V4 = [1, 28], $V5 = [1, 63], $V6 = [1, 64], $V7 = [1, 65], $V8 = [1, 66], $V9 = [1, 67], $Va = [1, 68], $Vb = [1, 69], $Vc = [1, 29], $Vd = [1, 30], $Ve = [1, 31], $Vf = [1, 32], $Vg = [1, 33], $Vh = [1, 34], $Vi = [1, 35], $Vj = [1, 36], $Vk = [1, 37], $Vl = [1, 38], $Vm = [1, 39], $Vn = [1, 40], $Vo = [1, 41], $Vp = [1, 42], $Vq = [1, 43], $Vr = [1, 44], $Vs = [1, 45], $Vt = [1, 46], $Vu = [1, 47], $Vv = [1, 48], $Vw = [1, 50], $Vx = [1, 51], $Vy = [1, 52], $Vz = [1, 53], $VA = [1, 54], $VB = [1, 55], $VC = [1, 56], $VD = [1, 57], $VE = [1, 58], $VF = [1, 59], $VG = [1, 60], $VH = [14, 42], $VI = [14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VJ = [12, 14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VK = [1, 82], $VL = [1, 83], $VM = [1, 84], $VN = [1, 85], $VO = [12, 14, 42], $VP = [12, 14, 33, 42], $VQ = [12, 14, 33, 42, 76, 77, 79, 80], $VR = [12, 33], $VS = [34, 36, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74]; - var parser24 = { - trace: /* @__PURE__ */ __name(function trace() { - }, "trace"), - yy: {}, - symbols_: { "error": 2, "start": 3, "mermaidDoc": 4, "direction": 5, "direction_tb": 6, "direction_bt": 7, "direction_rl": 8, "direction_lr": 9, "graphConfig": 10, "C4_CONTEXT": 11, "NEWLINE": 12, "statements": 13, "EOF": 14, "C4_CONTAINER": 15, "C4_COMPONENT": 16, "C4_DYNAMIC": 17, "C4_DEPLOYMENT": 18, "otherStatements": 19, "diagramStatements": 20, "otherStatement": 21, "title": 22, "accDescription": 23, "acc_title": 24, "acc_title_value": 25, "acc_descr": 26, "acc_descr_value": 27, "acc_descr_multiline_value": 28, "boundaryStatement": 29, "boundaryStartStatement": 30, "boundaryStopStatement": 31, "boundaryStart": 32, "LBRACE": 33, "ENTERPRISE_BOUNDARY": 34, "attributes": 35, "SYSTEM_BOUNDARY": 36, "BOUNDARY": 37, "CONTAINER_BOUNDARY": 38, "NODE": 39, "NODE_L": 40, "NODE_R": 41, "RBRACE": 42, "diagramStatement": 43, "PERSON": 44, "PERSON_EXT": 45, "SYSTEM": 46, "SYSTEM_DB": 47, "SYSTEM_QUEUE": 48, "SYSTEM_EXT": 49, "SYSTEM_EXT_DB": 50, "SYSTEM_EXT_QUEUE": 51, "CONTAINER": 52, "CONTAINER_DB": 53, "CONTAINER_QUEUE": 54, "CONTAINER_EXT": 55, "CONTAINER_EXT_DB": 56, "CONTAINER_EXT_QUEUE": 57, "COMPONENT": 58, "COMPONENT_DB": 59, "COMPONENT_QUEUE": 60, "COMPONENT_EXT": 61, "COMPONENT_EXT_DB": 62, "COMPONENT_EXT_QUEUE": 63, "REL": 64, "BIREL": 65, "REL_U": 66, "REL_D": 67, "REL_L": 68, "REL_R": 69, "REL_B": 70, "REL_INDEX": 71, "UPDATE_EL_STYLE": 72, "UPDATE_REL_STYLE": 73, "UPDATE_LAYOUT_CONFIG": 74, "attribute": 75, "STR": 76, "STR_KEY": 77, "STR_VALUE": 78, "ATTRIBUTE": 79, "ATTRIBUTE_EMPTY": 80, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 6: "direction_tb", 7: "direction_bt", 8: "direction_rl", 9: "direction_lr", 11: "C4_CONTEXT", 12: "NEWLINE", 14: "EOF", 15: "C4_CONTAINER", 16: "C4_COMPONENT", 17: "C4_DYNAMIC", 18: "C4_DEPLOYMENT", 22: "title", 23: "accDescription", 24: "acc_title", 25: "acc_title_value", 26: "acc_descr", 27: "acc_descr_value", 28: "acc_descr_multiline_value", 33: "LBRACE", 34: "ENTERPRISE_BOUNDARY", 36: "SYSTEM_BOUNDARY", 37: "BOUNDARY", 38: "CONTAINER_BOUNDARY", 39: "NODE", 40: "NODE_L", 41: "NODE_R", 42: "RBRACE", 44: "PERSON", 45: "PERSON_EXT", 46: "SYSTEM", 47: "SYSTEM_DB", 48: "SYSTEM_QUEUE", 49: "SYSTEM_EXT", 50: "SYSTEM_EXT_DB", 51: "SYSTEM_EXT_QUEUE", 52: "CONTAINER", 53: "CONTAINER_DB", 54: "CONTAINER_QUEUE", 55: "CONTAINER_EXT", 56: "CONTAINER_EXT_DB", 57: "CONTAINER_EXT_QUEUE", 58: "COMPONENT", 59: "COMPONENT_DB", 60: "COMPONENT_QUEUE", 61: "COMPONENT_EXT", 62: "COMPONENT_EXT_DB", 63: "COMPONENT_EXT_QUEUE", 64: "REL", 65: "BIREL", 66: "REL_U", 67: "REL_D", 68: "REL_L", 69: "REL_R", 70: "REL_B", 71: "REL_INDEX", 72: "UPDATE_EL_STYLE", 73: "UPDATE_REL_STYLE", 74: "UPDATE_LAYOUT_CONFIG", 76: "STR", 77: "STR_KEY", 78: "STR_VALUE", 79: "ATTRIBUTE", 80: "ATTRIBUTE_EMPTY" }, - productions_: [0, [3, 1], [3, 1], [5, 1], [5, 1], [5, 1], [5, 1], [4, 1], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [13, 1], [13, 1], [13, 2], [19, 1], [19, 2], [19, 3], [21, 1], [21, 1], [21, 2], [21, 2], [21, 1], [29, 3], [30, 3], [30, 3], [30, 4], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [31, 1], [20, 1], [20, 2], [20, 3], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 1], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [35, 1], [35, 2], [75, 1], [75, 2], [75, 1], [75, 1]], - performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 3: - yy.setDirection("TB"); - break; - case 4: - yy.setDirection("BT"); - break; - case 5: - yy.setDirection("RL"); - break; - case 6: - yy.setDirection("LR"); - break; - case 8: - case 9: - case 10: - case 11: - case 12: - yy.setC4Type($$[$0 - 3]); - break; - case 19: - yy.setTitle($$[$0].substring(6)); - this.$ = $$[$0].substring(6); - break; - case 20: - yy.setAccDescription($$[$0].substring(15)); - this.$ = $$[$0].substring(15); - break; - case 21: - this.$ = $$[$0].trim(); - yy.setTitle(this.$); - break; - case 22: - case 23: - this.$ = $$[$0].trim(); - yy.setAccDescription(this.$); - break; - case 28: - $$[$0].splice(2, 0, "ENTERPRISE"); - yy.addPersonOrSystemBoundary(...$$[$0]); - this.$ = $$[$0]; - break; - case 29: - $$[$0].splice(2, 0, "SYSTEM"); - yy.addPersonOrSystemBoundary(...$$[$0]); - this.$ = $$[$0]; - break; - case 30: - yy.addPersonOrSystemBoundary(...$$[$0]); - this.$ = $$[$0]; - break; - case 31: - $$[$0].splice(2, 0, "CONTAINER"); - yy.addContainerBoundary(...$$[$0]); - this.$ = $$[$0]; - break; - case 32: - yy.addDeploymentNode("node", ...$$[$0]); - this.$ = $$[$0]; - break; - case 33: - yy.addDeploymentNode("nodeL", ...$$[$0]); - this.$ = $$[$0]; - break; - case 34: - yy.addDeploymentNode("nodeR", ...$$[$0]); - this.$ = $$[$0]; - break; - case 35: - yy.popBoundaryParseStack(); - break; - case 39: - yy.addPersonOrSystem("person", ...$$[$0]); - this.$ = $$[$0]; - break; - case 40: - yy.addPersonOrSystem("external_person", ...$$[$0]); - this.$ = $$[$0]; - break; - case 41: - yy.addPersonOrSystem("system", ...$$[$0]); - this.$ = $$[$0]; - break; - case 42: - yy.addPersonOrSystem("system_db", ...$$[$0]); - this.$ = $$[$0]; - break; - case 43: - yy.addPersonOrSystem("system_queue", ...$$[$0]); - this.$ = $$[$0]; - break; - case 44: - yy.addPersonOrSystem("external_system", ...$$[$0]); - this.$ = $$[$0]; - break; - case 45: - yy.addPersonOrSystem("external_system_db", ...$$[$0]); - this.$ = $$[$0]; - break; - case 46: - yy.addPersonOrSystem("external_system_queue", ...$$[$0]); - this.$ = $$[$0]; - break; - case 47: - yy.addContainer("container", ...$$[$0]); - this.$ = $$[$0]; - break; - case 48: - yy.addContainer("container_db", ...$$[$0]); - this.$ = $$[$0]; - break; - case 49: - yy.addContainer("container_queue", ...$$[$0]); - this.$ = $$[$0]; - break; - case 50: - yy.addContainer("external_container", ...$$[$0]); - this.$ = $$[$0]; - break; - case 51: - yy.addContainer("external_container_db", ...$$[$0]); - this.$ = $$[$0]; - break; - case 52: - yy.addContainer("external_container_queue", ...$$[$0]); - this.$ = $$[$0]; - break; - case 53: - yy.addComponent("component", ...$$[$0]); - this.$ = $$[$0]; - break; - case 54: - yy.addComponent("component_db", ...$$[$0]); - this.$ = $$[$0]; - break; - case 55: - yy.addComponent("component_queue", ...$$[$0]); - this.$ = $$[$0]; - break; - case 56: - yy.addComponent("external_component", ...$$[$0]); - this.$ = $$[$0]; - break; - case 57: - yy.addComponent("external_component_db", ...$$[$0]); - this.$ = $$[$0]; - break; - case 58: - yy.addComponent("external_component_queue", ...$$[$0]); - this.$ = $$[$0]; - break; - case 60: - yy.addRel("rel", ...$$[$0]); - this.$ = $$[$0]; - break; - case 61: - yy.addRel("birel", ...$$[$0]); - this.$ = $$[$0]; - break; - case 62: - yy.addRel("rel_u", ...$$[$0]); - this.$ = $$[$0]; - break; - case 63: - yy.addRel("rel_d", ...$$[$0]); - this.$ = $$[$0]; - break; - case 64: - yy.addRel("rel_l", ...$$[$0]); - this.$ = $$[$0]; - break; - case 65: - yy.addRel("rel_r", ...$$[$0]); - this.$ = $$[$0]; - break; - case 66: - yy.addRel("rel_b", ...$$[$0]); - this.$ = $$[$0]; - break; - case 67: - $$[$0].splice(0, 1); - yy.addRel("rel", ...$$[$0]); - this.$ = $$[$0]; - break; - case 68: - yy.updateElStyle("update_el_style", ...$$[$0]); - this.$ = $$[$0]; - break; - case 69: - yy.updateRelStyle("update_rel_style", ...$$[$0]); - this.$ = $$[$0]; - break; - case 70: - yy.updateLayoutConfig("update_layout_config", ...$$[$0]); - this.$ = $$[$0]; - break; - case 71: - this.$ = [$$[$0]]; - break; - case 72: - $$[$0].unshift($$[$0 - 1]); - this.$ = $$[$0]; - break; - case 73: - case 75: - this.$ = $$[$0].trim(); - break; - case 74: - let kv = {}; - kv[$$[$0 - 1].trim()] = $$[$0].trim(); - this.$ = kv; - break; - case 76: - this.$ = ""; - break; - } - }, "anonymous"), - table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 7: [1, 6], 8: [1, 7], 9: [1, 8], 10: 4, 11: [1, 9], 15: [1, 10], 16: [1, 11], 17: [1, 12], 18: [1, 13] }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 7] }, { 1: [2, 3] }, { 1: [2, 4] }, { 1: [2, 5] }, { 1: [2, 6] }, { 12: [1, 14] }, { 12: [1, 15] }, { 12: [1, 16] }, { 12: [1, 17] }, { 12: [1, 18] }, { 13: 19, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 70, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 71, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 72, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 73, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 14: [1, 74] }, o2($VH, [2, 13], { 43: 23, 29: 49, 30: 61, 32: 62, 20: 75, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o2($VH, [2, 14]), o2($VI, [2, 16], { 12: [1, 76] }), o2($VH, [2, 36], { 12: [1, 77] }), o2($VJ, [2, 19]), o2($VJ, [2, 20]), { 25: [1, 78] }, { 27: [1, 79] }, o2($VJ, [2, 23]), { 35: 80, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 86, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 87, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 88, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 89, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 90, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 91, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 92, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 93, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 94, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 95, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 96, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 97, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 98, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 99, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 100, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 101, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 102, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 103, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 104, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, o2($VO, [2, 59]), { 35: 105, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 106, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 107, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 108, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 109, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 110, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 111, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 112, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 113, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 114, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 115, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 20: 116, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 12: [1, 118], 33: [1, 117] }, { 35: 119, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 120, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 121, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 122, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 123, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 124, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 125, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 14: [1, 126] }, { 14: [1, 127] }, { 14: [1, 128] }, { 14: [1, 129] }, { 1: [2, 8] }, o2($VH, [2, 15]), o2($VI, [2, 17], { 21: 22, 19: 130, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4 }), o2($VH, [2, 37], { 19: 20, 20: 21, 21: 22, 43: 23, 29: 49, 30: 61, 32: 62, 13: 131, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o2($VJ, [2, 21]), o2($VJ, [2, 22]), o2($VO, [2, 39]), o2($VP, [2, 71], { 75: 81, 35: 132, 76: $VK, 77: $VL, 79: $VM, 80: $VN }), o2($VQ, [2, 73]), { 78: [1, 133] }, o2($VQ, [2, 75]), o2($VQ, [2, 76]), o2($VO, [2, 40]), o2($VO, [2, 41]), o2($VO, [2, 42]), o2($VO, [2, 43]), o2($VO, [2, 44]), o2($VO, [2, 45]), o2($VO, [2, 46]), o2($VO, [2, 47]), o2($VO, [2, 48]), o2($VO, [2, 49]), o2($VO, [2, 50]), o2($VO, [2, 51]), o2($VO, [2, 52]), o2($VO, [2, 53]), o2($VO, [2, 54]), o2($VO, [2, 55]), o2($VO, [2, 56]), o2($VO, [2, 57]), o2($VO, [2, 58]), o2($VO, [2, 60]), o2($VO, [2, 61]), o2($VO, [2, 62]), o2($VO, [2, 63]), o2($VO, [2, 64]), o2($VO, [2, 65]), o2($VO, [2, 66]), o2($VO, [2, 67]), o2($VO, [2, 68]), o2($VO, [2, 69]), o2($VO, [2, 70]), { 31: 134, 42: [1, 135] }, { 12: [1, 136] }, { 33: [1, 137] }, o2($VR, [2, 28]), o2($VR, [2, 29]), o2($VR, [2, 30]), o2($VR, [2, 31]), o2($VR, [2, 32]), o2($VR, [2, 33]), o2($VR, [2, 34]), { 1: [2, 9] }, { 1: [2, 10] }, { 1: [2, 11] }, { 1: [2, 12] }, o2($VI, [2, 18]), o2($VH, [2, 38]), o2($VP, [2, 72]), o2($VQ, [2, 74]), o2($VO, [2, 24]), o2($VO, [2, 35]), o2($VS, [2, 25]), o2($VS, [2, 26], { 12: [1, 138] }), o2($VS, [2, 27])], - defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 7], 5: [2, 3], 6: [2, 4], 7: [2, 5], 8: [2, 6], 74: [2, 8], 126: [2, 9], 127: [2, 10], 128: [2, 11], 129: [2, 12] }, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); - } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; - } - }, "parseError"), - parse: /* @__PURE__ */ __name(function parse7(input) { - var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; - var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k2 in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { - sharedState.yy[k2] = this.yy[k2]; - } - } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; - sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; - } - var yyloc = lexer3.yylloc; - lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n2) { - stack.length = stack.length - 2 * n2; - vstack.length = vstack.length - n2; - lstack.length = lstack.length - n2; - } - __name(popStack, "popStack"); - function lex() { - var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; - if (typeof token2 !== "number") { - if (token2 instanceof Array) { - tstack = token2; - token2 = tstack.pop(); - } - token2 = self2.symbols_[token2] || token2; - } - return token2; - } - __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; - while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state4] && table[state4][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p3 in table[state4]) { - if (this.terminals_[p3] && p3 > TERROR) { - expected.push("'" + this.terminals_[p3] + "'"); - } - } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); - } - this.parseError(errStr, { - text: lexer3.match, - token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, - loc: yyloc, - expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r2 = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r2 !== "undefined") { - return r2; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState2); - break; - case 3: - return true; - } - } - return true; - }, "parse") - }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { - EOF: 1, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str2, hash); - } else { - throw new Error(str2); - } - }, "parseError"), - // resets the lexer, sets new input - setInput: /* @__PURE__ */ __name(function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 - }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; - } - this.offset = 0; - return this; - }, "setInput"), - // consumes and returns one char from the input - input: /* @__PURE__ */ __name(function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } - this._input = this._input.slice(1); - return ch; - }, "input"), - // unshifts one char (or a string) into the input - unput: /* @__PURE__ */ __name(function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r2 = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len - }; - if (this.options.ranges) { - this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, "unput"), - // When called from action, caches matched text and appends it on next action - more: /* @__PURE__ */ __name(function() { - this._more = true; - return this; - }, "more"), - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: /* @__PURE__ */ __name(function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - return this; - }, "reject"), - // retain first n characters of the match - less: /* @__PURE__ */ __name(function(n2) { - this.unput(this.match.slice(n2)); - }, "less"), - // displays already matched input, i.e. for error messages - pastInput: /* @__PURE__ */ __name(function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, "pastInput"), - // displays upcoming input, i.e. for error messages - upcomingInput: /* @__PURE__ */ __name(function() { - var next3 = this.match; - if (next3.length < 20) { - next3 += this._input.substr(0, 20 - next3.length); - } - return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, "upcomingInput"), - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: /* @__PURE__ */ __name(function() { - var pre = this.pastInput(); - var c3 = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c3 + "^"; - }, "showPosition"), - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { - var token2, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); - } - } - lines = match2[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length - }; - this.yytext += match2[0]; - this.match += match2[0]; - this.matches = match2; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match2[0].length); - this.matched += match2[0]; - token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token2) { - return token2; - } else if (this._backtrack) { - for (var k2 in backup) { - this[k2] = backup[k2]; - } - return false; - } - return false; - }, "test_match"), - // return next match in input - next: /* @__PURE__ */ __name(function() { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; - } - var token2, match2, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; - } - var rules = this._currentRules(); - for (var i2 = 0; i2 < rules.length; i2++) { - tempMatch = this._input.match(this.rules[rules[i2]]); - if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { - match2 = tempMatch; - index = i2; - if (this.options.backtrack_lexer) { - token2 = this.test_match(tempMatch, rules[i2]); - if (token2 !== false) { - return token2; - } else if (this._backtrack) { - match2 = false; - continue; - } else { - return false; - } - } else if (!this.options.flex) { - break; - } - } - } - if (match2) { - token2 = this.test_match(match2, rules[index]); - if (token2 !== false) { - return token2; - } - return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, "next"), - // return next match that has a token - lex: /* @__PURE__ */ __name(function lex() { - var r2 = this.next(); - if (r2) { - return r2; - } else { - return this.lex(); - } - }, "lex"), - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: /* @__PURE__ */ __name(function begin(condition) { - this.conditionStack.push(condition); - }, "begin"), - // pop the previously active lexer condition state off the condition stack - popState: /* @__PURE__ */ __name(function popState() { - var n2 = this.conditionStack.length - 1; - if (n2 > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, "popState"), - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: /* @__PURE__ */ __name(function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, "_currentRules"), - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: /* @__PURE__ */ __name(function topState(n2) { - n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); - if (n2 >= 0) { - return this.conditionStack[n2]; - } else { - return "INITIAL"; - } - }, "topState"), - // alias for begin(condition) - pushState: /* @__PURE__ */ __name(function pushState(condition) { - this.begin(condition); - }, "pushState"), - // return the number of states currently on the stack - stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { - return this.conditionStack.length; - }, "stateStackSize"), - options: {}, - performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - return 6; - break; - case 1: - return 7; - break; - case 2: - return 8; - break; - case 3: - return 9; - break; - case 4: - return 22; - break; - case 5: - return 23; - break; - case 6: - this.begin("acc_title"); - return 24; - break; - case 7: - this.popState(); - return "acc_title_value"; - break; - case 8: - this.begin("acc_descr"); - return 26; - break; - case 9: - this.popState(); - return "acc_descr_value"; - break; - case 10: - this.begin("acc_descr_multiline"); - break; - case 11: - this.popState(); - break; - case 12: - return "acc_descr_multiline_value"; - break; - case 13: - break; - case 14: - c; - break; - case 15: - return 12; - break; - case 16: - break; - case 17: - return 11; - break; - case 18: - return 15; - break; - case 19: - return 16; - break; - case 20: - return 17; - break; - case 21: - return 18; - break; - case 22: - this.begin("person_ext"); - return 45; - break; - case 23: - this.begin("person"); - return 44; - break; - case 24: - this.begin("system_ext_queue"); - return 51; - break; - case 25: - this.begin("system_ext_db"); - return 50; - break; - case 26: - this.begin("system_ext"); - return 49; - break; - case 27: - this.begin("system_queue"); - return 48; - break; - case 28: - this.begin("system_db"); - return 47; - break; - case 29: - this.begin("system"); - return 46; - break; - case 30: - this.begin("boundary"); - return 37; - break; - case 31: - this.begin("enterprise_boundary"); - return 34; - break; - case 32: - this.begin("system_boundary"); - return 36; - break; - case 33: - this.begin("container_ext_queue"); - return 57; - break; - case 34: - this.begin("container_ext_db"); - return 56; - break; - case 35: - this.begin("container_ext"); - return 55; - break; - case 36: - this.begin("container_queue"); - return 54; - break; - case 37: - this.begin("container_db"); - return 53; - break; - case 38: - this.begin("container"); - return 52; - break; - case 39: - this.begin("container_boundary"); - return 38; - break; - case 40: - this.begin("component_ext_queue"); - return 63; - break; - case 41: - this.begin("component_ext_db"); - return 62; - break; - case 42: - this.begin("component_ext"); - return 61; - break; - case 43: - this.begin("component_queue"); - return 60; - break; - case 44: - this.begin("component_db"); - return 59; - break; - case 45: - this.begin("component"); - return 58; - break; - case 46: - this.begin("node"); - return 39; - break; - case 47: - this.begin("node"); - return 39; - break; - case 48: - this.begin("node_l"); - return 40; - break; - case 49: - this.begin("node_r"); - return 41; - break; - case 50: - this.begin("rel"); - return 64; - break; - case 51: - this.begin("birel"); - return 65; - break; - case 52: - this.begin("rel_u"); - return 66; - break; - case 53: - this.begin("rel_u"); - return 66; - break; - case 54: - this.begin("rel_d"); - return 67; - break; - case 55: - this.begin("rel_d"); - return 67; - break; - case 56: - this.begin("rel_l"); - return 68; - break; - case 57: - this.begin("rel_l"); - return 68; - break; - case 58: - this.begin("rel_r"); - return 69; - break; - case 59: - this.begin("rel_r"); - return 69; - break; - case 60: - this.begin("rel_b"); - return 70; - break; - case 61: - this.begin("rel_index"); - return 71; - break; - case 62: - this.begin("update_el_style"); - return 72; - break; - case 63: - this.begin("update_rel_style"); - return 73; - break; - case 64: - this.begin("update_layout_config"); - return 74; - break; - case 65: - return "EOF_IN_STRUCT"; - break; - case 66: - this.begin("attribute"); - return "ATTRIBUTE_EMPTY"; - break; - case 67: - this.begin("attribute"); - break; - case 68: - this.popState(); - this.popState(); - break; - case 69: - return 80; - break; - case 70: - break; - case 71: - return 80; - break; - case 72: - this.begin("string"); - break; - case 73: - this.popState(); - break; - case 74: - return "STR"; - break; - case 75: - this.begin("string_kv"); - break; - case 76: - this.begin("string_kv_key"); - return "STR_KEY"; - break; - case 77: - this.popState(); - this.begin("string_kv_value"); - break; - case 78: - return "STR_VALUE"; - break; - case 79: - this.popState(); - this.popState(); - break; - case 80: - return "STR"; - break; - case 81: - return "LBRACE"; - break; - case 82: - return "RBRACE"; - break; - case 83: - return "SPACE"; - break; - case 84: - return "EOL"; - break; - case 85: - return 14; - break; - } - }, "anonymous"), - rules: [/^(?:.*direction\s+TB[^\n]*)/, /^(?:.*direction\s+BT[^\n]*)/, /^(?:.*direction\s+RL[^\n]*)/, /^(?:.*direction\s+LR[^\n]*)/, /^(?:title\s[^#\n;]+)/, /^(?:accDescription\s[^#\n;]+)/, /^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/, /^(?:%%[^\n]*(\r?\n)*)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:C4Context\b)/, /^(?:C4Container\b)/, /^(?:C4Component\b)/, /^(?:C4Dynamic\b)/, /^(?:C4Deployment\b)/, /^(?:Person_Ext\b)/, /^(?:Person\b)/, /^(?:SystemQueue_Ext\b)/, /^(?:SystemDb_Ext\b)/, /^(?:System_Ext\b)/, /^(?:SystemQueue\b)/, /^(?:SystemDb\b)/, /^(?:System\b)/, /^(?:Boundary\b)/, /^(?:Enterprise_Boundary\b)/, /^(?:System_Boundary\b)/, /^(?:ContainerQueue_Ext\b)/, /^(?:ContainerDb_Ext\b)/, /^(?:Container_Ext\b)/, /^(?:ContainerQueue\b)/, /^(?:ContainerDb\b)/, /^(?:Container\b)/, /^(?:Container_Boundary\b)/, /^(?:ComponentQueue_Ext\b)/, /^(?:ComponentDb_Ext\b)/, /^(?:Component_Ext\b)/, /^(?:ComponentQueue\b)/, /^(?:ComponentDb\b)/, /^(?:Component\b)/, /^(?:Deployment_Node\b)/, /^(?:Node\b)/, /^(?:Node_L\b)/, /^(?:Node_R\b)/, /^(?:Rel\b)/, /^(?:BiRel\b)/, /^(?:Rel_Up\b)/, /^(?:Rel_U\b)/, /^(?:Rel_Down\b)/, /^(?:Rel_D\b)/, /^(?:Rel_Left\b)/, /^(?:Rel_L\b)/, /^(?:Rel_Right\b)/, /^(?:Rel_R\b)/, /^(?:Rel_Back\b)/, /^(?:RelIndex\b)/, /^(?:UpdateElementStyle\b)/, /^(?:UpdateRelStyle\b)/, /^(?:UpdateLayoutConfig\b)/, /^(?:$)/, /^(?:[(][ ]*[,])/, /^(?:[(])/, /^(?:[)])/, /^(?:,,)/, /^(?:,)/, /^(?:[ ]*["]["])/, /^(?:[ ]*["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:[ ]*[\$])/, /^(?:[^=]*)/, /^(?:[=][ ]*["])/, /^(?:[^"]+)/, /^(?:["])/, /^(?:[^,]+)/, /^(?:\{)/, /^(?:\})/, /^(?:[\s]+)/, /^(?:[\n\r]+)/, /^(?:$)/], - conditions: { "acc_descr_multiline": { "rules": [11, 12], "inclusive": false }, "acc_descr": { "rules": [9], "inclusive": false }, "acc_title": { "rules": [7], "inclusive": false }, "string_kv_value": { "rules": [78, 79], "inclusive": false }, "string_kv_key": { "rules": [77], "inclusive": false }, "string_kv": { "rules": [76], "inclusive": false }, "string": { "rules": [73, 74], "inclusive": false }, "attribute": { "rules": [68, 69, 70, 71, 72, 75, 80], "inclusive": false }, "update_layout_config": { "rules": [65, 66, 67, 68], "inclusive": false }, "update_rel_style": { "rules": [65, 66, 67, 68], "inclusive": false }, "update_el_style": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_b": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_r": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_l": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_d": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_u": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_bi": { "rules": [], "inclusive": false }, "rel": { "rules": [65, 66, 67, 68], "inclusive": false }, "node_r": { "rules": [65, 66, 67, 68], "inclusive": false }, "node_l": { "rules": [65, 66, 67, 68], "inclusive": false }, "node": { "rules": [65, 66, 67, 68], "inclusive": false }, "index": { "rules": [], "inclusive": false }, "rel_index": { "rules": [65, 66, 67, 68], "inclusive": false }, "component_ext_queue": { "rules": [], "inclusive": false }, "component_ext_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "component_ext": { "rules": [65, 66, 67, 68], "inclusive": false }, "component_queue": { "rules": [65, 66, 67, 68], "inclusive": false }, "component_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "component": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_boundary": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_ext_queue": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_ext_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_ext": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_queue": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "container": { "rules": [65, 66, 67, 68], "inclusive": false }, "birel": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_boundary": { "rules": [65, 66, 67, 68], "inclusive": false }, "enterprise_boundary": { "rules": [65, 66, 67, 68], "inclusive": false }, "boundary": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_ext_queue": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_ext_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_ext": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_queue": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "system": { "rules": [65, 66, 67, 68], "inclusive": false }, "person_ext": { "rules": [65, 66, 67, 68], "inclusive": false }, "person": { "rules": [65, 66, 67, 68], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 81, 82, 83, 84, 85], "inclusive": true } } - }; - return lexer3; - }(); - parser24.lexer = lexer2; - function Parser3() { - this.yy = {}; - } - __name(Parser3, "Parser"); - Parser3.prototype = parser24; - parser24.Parser = Parser3; - return new Parser3(); - }(); - parser.parser = parser; - c4Diagram_default = parser; + init_channels(); + channels = new channels_default({ r: 0, g: 0, b: 0, a: 0 }, "transparent"); + reusable_default = channels; } }); - // src/assignWithDepth.ts - var assignWithDepth, assignWithDepth_default; - var init_assignWithDepth = __esm({ - "src/assignWithDepth.ts"() { + // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hex.js + var Hex, hex_default; + var init_hex = __esm({ + "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hex.js"() { "use strict"; - assignWithDepth = /* @__PURE__ */ __name((dst, src, { depth = 2, clobber = false } = {}) => { - const config5 = { depth, clobber }; - if (Array.isArray(src) && !Array.isArray(dst)) { - src.forEach((s2) => assignWithDepth(dst, s2, config5)); - return dst; - } else if (Array.isArray(src) && Array.isArray(dst)) { - src.forEach((s2) => { - if (!dst.includes(s2)) { - dst.push(s2); - } - }); - return dst; - } - if (dst === void 0 || depth <= 0) { - if (dst !== void 0 && dst !== null && typeof dst === "object" && typeof src === "object") { - return Object.assign(dst, src); + init_reusable(); + init_constants(); + Hex = { + /* VARIABLES */ + re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i, + /* API */ + parse: /* @__PURE__ */ __name((color2) => { + if (color2.charCodeAt(0) !== 35) + return; + const match2 = color2.match(Hex.re); + if (!match2) + return; + const hex2 = match2[1]; + const dec = parseInt(hex2, 16); + const length2 = hex2.length; + const hasAlpha = length2 % 4 === 0; + const isFullLength = length2 > 4; + const multiplier = isFullLength ? 1 : 17; + const bits = isFullLength ? 8 : 4; + const bitsOffset = hasAlpha ? 0 : -1; + const mask = isFullLength ? 255 : 15; + return reusable_default.set({ + r: (dec >> bits * (bitsOffset + 3) & mask) * multiplier, + g: (dec >> bits * (bitsOffset + 2) & mask) * multiplier, + b: (dec >> bits * (bitsOffset + 1) & mask) * multiplier, + a: hasAlpha ? (dec & mask) * multiplier / 255 : 1 + }, color2); + }, "parse"), + stringify: /* @__PURE__ */ __name((channels2) => { + const { r: r2, g: g2, b: b3, a: a2 } = channels2; + if (a2 < 1) { + return `#${DEC2HEX[Math.round(r2)]}${DEC2HEX[Math.round(g2)]}${DEC2HEX[Math.round(b3)]}${DEC2HEX[Math.round(a2 * 255)]}`; } else { - return src; + return `#${DEC2HEX[Math.round(r2)]}${DEC2HEX[Math.round(g2)]}${DEC2HEX[Math.round(b3)]}`; } - } - if (src !== void 0 && typeof dst === "object" && typeof src === "object") { - Object.keys(src).forEach((key) => { - if (typeof src[key] === "object" && (dst[key] === void 0 || typeof dst[key] === "object")) { - if (dst[key] === void 0) { - dst[key] = Array.isArray(src[key]) ? [] : {}; - } - dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber }); - } else if (clobber || typeof dst[key] !== "object" && typeof src[key] !== "object") { - dst[key] = src[key]; - } - }); - } - return dst; - }, "assignWithDepth"); - assignWithDepth_default = assignWithDepth; + }, "stringify") + }; + hex_default = Hex; } }); - // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/channel.js - var Channel, channel_default; - var init_channel = __esm({ - "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/channel.js"() { - "use strict"; - Channel = { - /* CLAMP */ - min: { - r: 0, - g: 0, - b: 0, - s: 0, - l: 0, - a: 0 - }, - max: { - r: 255, - g: 255, - b: 255, - h: 360, - s: 100, - l: 100, - a: 1 - }, - clamp: { - r: /* @__PURE__ */ __name((r2) => r2 >= 255 ? 255 : r2 < 0 ? 0 : r2, "r"), - g: /* @__PURE__ */ __name((g2) => g2 >= 255 ? 255 : g2 < 0 ? 0 : g2, "g"), - b: /* @__PURE__ */ __name((b2) => b2 >= 255 ? 255 : b2 < 0 ? 0 : b2, "b"), - h: /* @__PURE__ */ __name((h2) => h2 % 360, "h"), - s: /* @__PURE__ */ __name((s2) => s2 >= 100 ? 100 : s2 < 0 ? 0 : s2, "s"), - l: /* @__PURE__ */ __name((l2) => l2 >= 100 ? 100 : l2 < 0 ? 0 : l2, "l"), - a: /* @__PURE__ */ __name((a2) => a2 >= 1 ? 1 : a2 < 0 ? 0 : a2, "a") - }, - /* CONVERSION */ - //SOURCE: https://planetcalc.com/7779 - toLinear: /* @__PURE__ */ __name((c3) => { - const n2 = c3 / 255; - return c3 > 0.03928 ? Math.pow((n2 + 0.055) / 1.055, 2.4) : n2 / 12.92; - }, "toLinear"), - //SOURCE: https://gist.github.com/mjackson/5311256 - hue2rgb: /* @__PURE__ */ __name((p3, q2, t4) => { - if (t4 < 0) - t4 += 1; - if (t4 > 1) - t4 -= 1; - if (t4 < 1 / 6) - return p3 + (q2 - p3) * 6 * t4; - if (t4 < 1 / 2) - return q2; - if (t4 < 2 / 3) - return p3 + (q2 - p3) * (2 / 3 - t4) * 6; - return p3; - }, "hue2rgb"), - hsl2rgb: /* @__PURE__ */ __name(({ h: h2, s: s2, l: l2 }, channel2) => { - if (!s2) - return l2 * 2.55; - h2 /= 360; - s2 /= 100; - l2 /= 100; - const q2 = l2 < 0.5 ? l2 * (1 + s2) : l2 + s2 - l2 * s2; - const p3 = 2 * l2 - q2; - switch (channel2) { - case "r": - return Channel.hue2rgb(p3, q2, h2 + 1 / 3) * 255; - case "g": - return Channel.hue2rgb(p3, q2, h2) * 255; - case "b": - return Channel.hue2rgb(p3, q2, h2 - 1 / 3) * 255; - } - }, "hsl2rgb"), - rgb2hsl: /* @__PURE__ */ __name(({ r: r2, g: g2, b: b2 }, channel2) => { - r2 /= 255; - g2 /= 255; - b2 /= 255; - const max10 = Math.max(r2, g2, b2); - const min9 = Math.min(r2, g2, b2); - const l2 = (max10 + min9) / 2; - if (channel2 === "l") - return l2 * 100; - if (max10 === min9) - return 0; - const d2 = max10 - min9; - const s2 = l2 > 0.5 ? d2 / (2 - max10 - min9) : d2 / (max10 + min9); - if (channel2 === "s") - return s2 * 100; - switch (max10) { - case r2: - return ((g2 - b2) / d2 + (g2 < b2 ? 6 : 0)) * 60; - case g2: - return ((b2 - r2) / d2 + 2) * 60; - case b2: - return ((r2 - g2) / d2 + 4) * 60; - default: - return -1; - } - }, "rgb2hsl") - }; - channel_default = Channel; - } - }); - - // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/lang.js - var Lang, lang_default; - var init_lang = __esm({ - "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/lang.js"() { - "use strict"; - Lang = { - /* API */ - clamp: /* @__PURE__ */ __name((number7, lower2, upper) => { - if (lower2 > upper) - return Math.min(lower2, Math.max(upper, number7)); - return Math.min(upper, Math.max(lower2, number7)); - }, "clamp"), - round: /* @__PURE__ */ __name((number7) => { - return Math.round(number7 * 1e10) / 1e10; - }, "round") - }; - lang_default = Lang; - } - }); - - // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/unit.js - var Unit, unit_default; - var init_unit = __esm({ - "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/unit.js"() { - "use strict"; - Unit = { - /* API */ - dec2hex: /* @__PURE__ */ __name((dec) => { - const hex2 = Math.round(dec).toString(16); - return hex2.length > 1 ? hex2 : `0${hex2}`; - }, "dec2hex") - }; - unit_default = Unit; - } - }); - - // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/index.js - var Utils, utils_default; - var init_utils = __esm({ - "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/index.js"() { - "use strict"; - init_channel(); - init_lang(); - init_unit(); - Utils = { - channel: channel_default, - lang: lang_default, - unit: unit_default - }; - utils_default = Utils; - } - }); - - // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/constants.js - var DEC2HEX, TYPE; - var init_constants = __esm({ - "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/constants.js"() { - "use strict"; - init_utils(); - DEC2HEX = {}; - for (let i2 = 0; i2 <= 255; i2++) - DEC2HEX[i2] = utils_default.unit.dec2hex(i2); - TYPE = { - ALL: 0, - RGB: 1, - HSL: 2 - }; - } - }); - - // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/type.js - var Type, type_default; - var init_type = __esm({ - "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/type.js"() { - "use strict"; - init_constants(); - Type = class { - static { - __name(this, "Type"); - } - constructor() { - this.type = TYPE.ALL; - } - /* API */ - get() { - return this.type; - } - set(type3) { - if (this.type && this.type !== type3) - throw new Error("Cannot change both RGB and HSL channels at the same time"); - this.type = type3; - } - reset() { - this.type = TYPE.ALL; - } - is(type3) { - return this.type === type3; - } - }; - type_default = Type; - } - }); - - // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/index.js - var Channels, channels_default; - var init_channels = __esm({ - "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/index.js"() { - "use strict"; - init_utils(); - init_type(); - init_constants(); - Channels = class { - static { - __name(this, "Channels"); - } - /* CONSTRUCTOR */ - constructor(data6, color2) { - this.color = color2; - this.changed = false; - this.data = data6; - this.type = new type_default(); - } - /* API */ - set(data6, color2) { - this.color = color2; - this.changed = false; - this.data = data6; - this.type.type = TYPE.ALL; - return this; - } - /* HELPERS */ - _ensureHSL() { - const data6 = this.data; - const { h: h2, s: s2, l: l2 } = data6; - if (h2 === void 0) - data6.h = utils_default.channel.rgb2hsl(data6, "h"); - if (s2 === void 0) - data6.s = utils_default.channel.rgb2hsl(data6, "s"); - if (l2 === void 0) - data6.l = utils_default.channel.rgb2hsl(data6, "l"); - } - _ensureRGB() { - const data6 = this.data; - const { r: r2, g: g2, b: b2 } = data6; - if (r2 === void 0) - data6.r = utils_default.channel.hsl2rgb(data6, "r"); - if (g2 === void 0) - data6.g = utils_default.channel.hsl2rgb(data6, "g"); - if (b2 === void 0) - data6.b = utils_default.channel.hsl2rgb(data6, "b"); - } - /* GETTERS */ - get r() { - const data6 = this.data; - const r2 = data6.r; - if (!this.type.is(TYPE.HSL) && r2 !== void 0) - return r2; - this._ensureHSL(); - return utils_default.channel.hsl2rgb(data6, "r"); - } - get g() { - const data6 = this.data; - const g2 = data6.g; - if (!this.type.is(TYPE.HSL) && g2 !== void 0) - return g2; - this._ensureHSL(); - return utils_default.channel.hsl2rgb(data6, "g"); - } - get b() { - const data6 = this.data; - const b2 = data6.b; - if (!this.type.is(TYPE.HSL) && b2 !== void 0) - return b2; - this._ensureHSL(); - return utils_default.channel.hsl2rgb(data6, "b"); - } - get h() { - const data6 = this.data; - const h2 = data6.h; - if (!this.type.is(TYPE.RGB) && h2 !== void 0) - return h2; - this._ensureRGB(); - return utils_default.channel.rgb2hsl(data6, "h"); - } - get s() { - const data6 = this.data; - const s2 = data6.s; - if (!this.type.is(TYPE.RGB) && s2 !== void 0) - return s2; - this._ensureRGB(); - return utils_default.channel.rgb2hsl(data6, "s"); - } - get l() { - const data6 = this.data; - const l2 = data6.l; - if (!this.type.is(TYPE.RGB) && l2 !== void 0) - return l2; - this._ensureRGB(); - return utils_default.channel.rgb2hsl(data6, "l"); - } - get a() { - return this.data.a; - } - /* SETTERS */ - set r(r2) { - this.type.set(TYPE.RGB); - this.changed = true; - this.data.r = r2; - } - set g(g2) { - this.type.set(TYPE.RGB); - this.changed = true; - this.data.g = g2; - } - set b(b2) { - this.type.set(TYPE.RGB); - this.changed = true; - this.data.b = b2; - } - set h(h2) { - this.type.set(TYPE.HSL); - this.changed = true; - this.data.h = h2; - } - set s(s2) { - this.type.set(TYPE.HSL); - this.changed = true; - this.data.s = s2; - } - set l(l2) { - this.type.set(TYPE.HSL); - this.changed = true; - this.data.l = l2; - } - set a(a2) { - this.changed = true; - this.data.a = a2; - } - }; - channels_default = Channels; - } - }); - - // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/reusable.js - var channels, reusable_default; - var init_reusable = __esm({ - "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/reusable.js"() { - "use strict"; - init_channels(); - channels = new channels_default({ r: 0, g: 0, b: 0, a: 0 }, "transparent"); - reusable_default = channels; - } - }); - - // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hex.js - var Hex, hex_default; - var init_hex = __esm({ - "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hex.js"() { - "use strict"; - init_reusable(); - init_constants(); - Hex = { - /* VARIABLES */ - re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i, - /* API */ - parse: /* @__PURE__ */ __name((color2) => { - if (color2.charCodeAt(0) !== 35) - return; - const match2 = color2.match(Hex.re); - if (!match2) - return; - const hex2 = match2[1]; - const dec = parseInt(hex2, 16); - const length2 = hex2.length; - const hasAlpha = length2 % 4 === 0; - const isFullLength = length2 > 4; - const multiplier = isFullLength ? 1 : 17; - const bits = isFullLength ? 8 : 4; - const bitsOffset = hasAlpha ? 0 : -1; - const mask = isFullLength ? 255 : 15; - return reusable_default.set({ - r: (dec >> bits * (bitsOffset + 3) & mask) * multiplier, - g: (dec >> bits * (bitsOffset + 2) & mask) * multiplier, - b: (dec >> bits * (bitsOffset + 1) & mask) * multiplier, - a: hasAlpha ? (dec & mask) * multiplier / 255 : 1 - }, color2); - }, "parse"), - stringify: /* @__PURE__ */ __name((channels2) => { - const { r: r2, g: g2, b: b2, a: a2 } = channels2; - if (a2 < 1) { - return `#${DEC2HEX[Math.round(r2)]}${DEC2HEX[Math.round(g2)]}${DEC2HEX[Math.round(b2)]}${DEC2HEX[Math.round(a2 * 255)]}`; - } else { - return `#${DEC2HEX[Math.round(r2)]}${DEC2HEX[Math.round(g2)]}${DEC2HEX[Math.round(b2)]}`; - } - }, "stringify") - }; - hex_default = Hex; - } - }); - - // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hsl.js - var HSL, hsl_default; - var init_hsl = __esm({ - "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hsl.js"() { + // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hsl.js + var HSL, hsl_default; + var init_hsl = __esm({ + "../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hsl.js"() { "use strict"; init_utils(); init_reusable(); @@ -3040,20 +1280,20 @@ var __esbuild_esm_mermaid = (() => { const match2 = color2.match(HSL.re); if (!match2) return; - const [, h2, s2, l2, a2, isAlphaPercentage] = match2; + const [, h3, s2, l4, a2, isAlphaPercentage] = match2; return reusable_default.set({ - h: HSL._hue2deg(h2), + h: HSL._hue2deg(h3), s: utils_default.channel.clamp.s(parseFloat(s2)), - l: utils_default.channel.clamp.l(parseFloat(l2)), + l: utils_default.channel.clamp.l(parseFloat(l4)), a: a2 ? utils_default.channel.clamp.a(isAlphaPercentage ? parseFloat(a2) / 100 : parseFloat(a2)) : 1 }, color2); }, "parse"), stringify: /* @__PURE__ */ __name((channels2) => { - const { h: h2, s: s2, l: l2, a: a2 } = channels2; + const { h: h3, s: s2, l: l4, a: a2 } = channels2; if (a2 < 1) { - return `hsla(${utils_default.lang.round(h2)}, ${utils_default.lang.round(s2)}%, ${utils_default.lang.round(l2)}%, ${a2})`; + return `hsla(${utils_default.lang.round(h3)}, ${utils_default.lang.round(s2)}%, ${utils_default.lang.round(l4)}%, ${a2})`; } else { - return `hsl(${utils_default.lang.round(h2)}, ${utils_default.lang.round(s2)}%, ${utils_default.lang.round(l2)}%)`; + return `hsl(${utils_default.lang.round(h3)}, ${utils_default.lang.round(s2)}%, ${utils_default.lang.round(l4)}%)`; } }, "stringify") }; @@ -3257,20 +1497,20 @@ var __esbuild_esm_mermaid = (() => { const match2 = color2.match(RGB.re); if (!match2) return; - const [, r2, isRedPercentage, g2, isGreenPercentage, b2, isBluePercentage, a2, isAlphaPercentage] = match2; + const [, r2, isRedPercentage, g2, isGreenPercentage, b3, isBluePercentage, a2, isAlphaPercentage] = match2; return reusable_default.set({ r: utils_default.channel.clamp.r(isRedPercentage ? parseFloat(r2) * 2.55 : parseFloat(r2)), g: utils_default.channel.clamp.g(isGreenPercentage ? parseFloat(g2) * 2.55 : parseFloat(g2)), - b: utils_default.channel.clamp.b(isBluePercentage ? parseFloat(b2) * 2.55 : parseFloat(b2)), + b: utils_default.channel.clamp.b(isBluePercentage ? parseFloat(b3) * 2.55 : parseFloat(b3)), a: a2 ? utils_default.channel.clamp.a(isAlphaPercentage ? parseFloat(a2) / 100 : parseFloat(a2)) : 1 }, color2); }, "parse"), stringify: /* @__PURE__ */ __name((channels2) => { - const { r: r2, g: g2, b: b2, a: a2 } = channels2; + const { r: r2, g: g2, b: b3, a: a2 } = channels2; if (a2 < 1) { - return `rgba(${utils_default.lang.round(r2)}, ${utils_default.lang.round(g2)}, ${utils_default.lang.round(b2)}, ${utils_default.lang.round(a2)})`; + return `rgba(${utils_default.lang.round(r2)}, ${utils_default.lang.round(g2)}, ${utils_default.lang.round(b3)}, ${utils_default.lang.round(a2)})`; } else { - return `rgb(${utils_default.lang.round(r2)}, ${utils_default.lang.round(g2)}, ${utils_default.lang.round(b2)})`; + return `rgb(${utils_default.lang.round(r2)}, ${utils_default.lang.round(g2)}, ${utils_default.lang.round(b3)})`; } }, "stringify") }; @@ -3350,13 +1590,13 @@ var __esbuild_esm_mermaid = (() => { init_reusable(); init_color(); init_change(); - rgba = /* @__PURE__ */ __name((r2, g2, b2 = 0, a2 = 1) => { + rgba = /* @__PURE__ */ __name((r2, g2, b3 = 0, a2 = 1) => { if (typeof r2 !== "number") return change_default(r2, { a: g2 }); const channels2 = reusable_default.set({ r: utils_default.channel.clamp.r(r2), g: utils_default.channel.clamp.g(g2), - b: utils_default.channel.clamp.b(b2), + b: utils_default.channel.clamp.b(b3), a: utils_default.channel.clamp.a(a2) }); return color_default.stringify(channels2); @@ -3387,8 +1627,8 @@ var __esbuild_esm_mermaid = (() => { init_utils(); init_color(); luminance = /* @__PURE__ */ __name((color2) => { - const { r: r2, g: g2, b: b2 } = color_default.parse(color2); - const luminance2 = 0.2126 * utils_default.channel.toLinear(r2) + 0.7152 * utils_default.channel.toLinear(g2) + 0.0722 * utils_default.channel.toLinear(b2); + const { r: r2, g: g2, b: b3 } = color_default.parse(color2); + const luminance2 = 0.2126 * utils_default.channel.toLinear(r2) + 0.7152 * utils_default.channel.toLinear(g2) + 0.0722 * utils_default.channel.toLinear(b3); return utils_default.lang.round(luminance2); }, "luminance"); luminance_default = luminance; @@ -3496,7 +1736,7 @@ var __esbuild_esm_mermaid = (() => { init_rgba(); mix = /* @__PURE__ */ __name((color1, color2, weight8 = 50) => { const { r: r1, g: g1, b: b1, a: a1 } = color_default.parse(color1); - const { r: r2, g: g2, b: b2, a: a2 } = color_default.parse(color2); + const { r: r2, g: g2, b: b22, a: a2 } = color_default.parse(color2); const weightScale = weight8 / 100; const weightNormalized = weightScale * 2 - 1; const alphaDelta = a1 - a2; @@ -3505,7 +1745,7 @@ var __esbuild_esm_mermaid = (() => { const weight22 = 1 - weight1; const r3 = r1 * weight1 + r2 * weight22; const g3 = g1 * weight1 + g2 * weight22; - const b3 = b1 * weight1 + b2 * weight22; + const b3 = b1 * weight1 + b22 * weight22; const a3 = a1 * weightScale + a2 * (1 - weightScale); return rgba_default(r3, g3, b3, a3); }, "mix"); @@ -3647,6 +1887,7 @@ var __esbuild_esm_mermaid = (() => { this.critBorderColor = this.critBorderColor || "#ff8888"; this.critBkgColor = this.critBkgColor || "red"; this.todayLineColor = this.todayLineColor || "red"; + this.vertLineColor = this.vertLineColor || "navy"; this.taskTextColor = this.taskTextColor || this.textColor; this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor; this.taskTextLightColor = this.taskTextLightColor || this.textColor; @@ -3859,12 +2100,12 @@ var __esbuild_esm_mermaid = (() => { this.updateColors(); return; } - const keys3 = Object.keys(overrides); - keys3.forEach((k2) => { + const keys2 = Object.keys(overrides); + keys2.forEach((k2) => { this[k2] = overrides[k2]; }); this.updateColors(); - keys3.forEach((k2) => { + keys2.forEach((k2) => { this[k2] = overrides[k2]; }); } @@ -3956,6 +2197,7 @@ var __esbuild_esm_mermaid = (() => { this.critBkgColor = "#E83737"; this.taskTextDarkColor = "calculated"; this.todayLineColor = "#DB5757"; + this.vertLineColor = "#00BFFF"; this.personBorder = this.primaryBorderColor; this.personBkg = this.mainBkg; this.archEdgeColor = "calculated"; @@ -4173,12 +2415,12 @@ var __esbuild_esm_mermaid = (() => { this.updateColors(); return; } - const keys3 = Object.keys(overrides); - keys3.forEach((k2) => { + const keys2 = Object.keys(overrides); + keys2.forEach((k2) => { this[k2] = overrides[k2]; }); this.updateColors(); - keys3.forEach((k2) => { + keys2.forEach((k2) => { this[k2] = overrides[k2]; }); } @@ -4271,6 +2513,7 @@ var __esbuild_esm_mermaid = (() => { this.critBorderColor = "calculated"; this.critBkgColor = "calculated"; this.todayLineColor = "calculated"; + this.vertLineColor = "calculated"; this.sectionBkgColor = rgba_default(102, 102, 255, 0.49); this.altSectionBkgColor = "white"; this.sectionBkgColor2 = "#fff400"; @@ -4289,6 +2532,7 @@ var __esbuild_esm_mermaid = (() => { this.critBorderColor = "#ff8888"; this.critBkgColor = "red"; this.todayLineColor = "red"; + this.vertLineColor = "navy"; this.personBorder = this.primaryBorderColor; this.personBkg = this.mainBkg; this.archEdgeColor = "calculated"; @@ -4517,12 +2761,12 @@ var __esbuild_esm_mermaid = (() => { this.updateColors(); return; } - const keys3 = Object.keys(overrides); - keys3.forEach((k2) => { + const keys2 = Object.keys(overrides); + keys2.forEach((k2) => { this[k2] = overrides[k2]; }); this.updateColors(); - keys3.forEach((k2) => { + keys2.forEach((k2) => { this[k2] = overrides[k2]; }); } @@ -4612,6 +2856,7 @@ var __esbuild_esm_mermaid = (() => { this.critBorderColor = "#ff8888"; this.critBkgColor = "red"; this.todayLineColor = "red"; + this.vertLineColor = "#00BFFF"; this.personBorder = this.primaryBorderColor; this.personBkg = this.mainBkg; this.archEdgeColor = "calculated"; @@ -4834,12 +3079,12 @@ var __esbuild_esm_mermaid = (() => { this.updateColors(); return; } - const keys3 = Object.keys(overrides); - keys3.forEach((k2) => { + const keys2 = Object.keys(overrides); + keys2.forEach((k2) => { this[k2] = overrides[k2]; }); this.updateColors(); - keys3.forEach((k2) => { + keys2.forEach((k2) => { this[k2] = overrides[k2]; }); } @@ -4933,6 +3178,7 @@ var __esbuild_esm_mermaid = (() => { this.critBkgColor = "calculated"; this.critBorderColor = "calculated"; this.todayLineColor = "calculated"; + this.vertLineColor = "calculated"; this.personBorder = this.primaryBorderColor; this.personBkg = this.mainBkg; this.archEdgeColor = "calculated"; @@ -5015,6 +3261,7 @@ var __esbuild_esm_mermaid = (() => { this.critBkgColor = this.critical; this.critBorderColor = darken_default(this.critBkgColor, 10); this.todayLineColor = this.critBkgColor; + this.vertLineColor = this.critBkgColor; this.archEdgeColor = this.lineColor; this.archEdgeArrowColor = this.lineColor; this.transitionColor = this.transitionColor || "#000"; @@ -5141,12 +3388,12 @@ var __esbuild_esm_mermaid = (() => { this.updateColors(); return; } - const keys3 = Object.keys(overrides); - keys3.forEach((k2) => { + const keys2 = Object.keys(overrides); + keys2.forEach((k2) => { this[k2] = overrides[k2]; }); this.updateColors(); - keys3.forEach((k2) => { + keys2.forEach((k2) => { this[k2] = overrides[k2]; }); } @@ -5209,7 +3456,8 @@ var __esbuild_esm_mermaid = (() => { "curve": "basis", "padding": 15, "defaultRenderer": "dagre-wrapper", - "wrappingWidth": 200 + "wrappingWidth": 200, + "inheritDir": false }, "sequence": { "useMaxWidth": true, @@ -5267,6 +3515,7 @@ var __esbuild_esm_mermaid = (() => { "diagramMarginX": 50, "diagramMarginY": 10, "leftMargin": 150, + "maxLabelWidth": 360, "width": 150, "height": 50, "boxMargin": 10, @@ -5300,7 +3549,10 @@ var __esbuild_esm_mermaid = (() => { ], "sectionColours": [ "#fff" - ] + ], + "titleColor": "", + "titleFontFamily": '"trebuchet ms", verdana, arial, sans-serif', + "titleFontSize": "4ex" }, "class": { "useMaxWidth": true, @@ -5378,6 +3630,7 @@ var __esbuild_esm_mermaid = (() => { "height": 500, "titleFontSize": 20, "titlePadding": 10, + "showDataLabel": false, "showTitle": true, "xAxis": { "$ref": "#/$defs/XYChartAxisConfig", @@ -5425,7 +3678,8 @@ var __esbuild_esm_mermaid = (() => { "mindmap": { "useMaxWidth": true, "padding": 10, - "maxNodeWidth": 200 + "maxNodeWidth": 200, + "layoutAlgorithm": "cose-bilkent" }, "kanban": { "useMaxWidth": true, @@ -5699,7 +3953,9 @@ var __esbuild_esm_mermaid = (() => { elk: { // mergeEdges is needed here to be considered mergeEdges: false, - nodePlacementStrategy: "BRANDES_KOEPF" + nodePlacementStrategy: "BRANDES_KOEPF", + forceNodeModelOrder: false, + considerModelOrder: "NODES_AND_EDGES" }, themeCSS: void 0, // add non-JSON default config values @@ -5747,6 +4003,11 @@ var __esbuild_esm_mermaid = (() => { fontWeight: this.personFontWeight }; }, "personFont"), + flowchart: { + ...config_schema_default.flowchart, + inheritDir: false + // default to legacy behavior + }, external_personFont: /* @__PURE__ */ __name(function() { return { fontFamily: this.external_personFontFamily, @@ -5912,6 +4173,18 @@ var __esbuild_esm_mermaid = (() => { }, radar: { ...config_schema_default.radar + }, + treemap: { + useMaxWidth: true, + padding: 10, + diagramPadding: 8, + showValues: true, + nodeWidth: 100, + nodeHeight: 40, + borderWidth: 1, + valueFontSize: 12, + labelFontSize: 14, + valueFormat: "," } }; keyify = /* @__PURE__ */ __name((obj, prefix = "") => Object.keys(obj).reduce((res, el) => { @@ -5995,7 +4268,7 @@ var __esbuild_esm_mermaid = (() => { }); // src/config.ts - var defaultConfig, siteConfig, configFromInitialize, directives, currentConfig, updateCurrentConfig, setSiteConfig, saveConfigFromInitialize, updateSiteConfig, getSiteConfig, setConfig, getConfig, sanitize, addDirective, reset, ConfigWarning, issuedWarnings, issueWarning, checkConfig; + var defaultConfig, siteConfig, configFromInitialize, directives, currentConfig, updateCurrentConfig, setSiteConfig, saveConfigFromInitialize, updateSiteConfig, getSiteConfig, setConfig, getConfig, sanitize, addDirective, reset, ConfigWarning, issuedWarnings, issueWarning, checkConfig, getUserDefinedConfig; var init_config = __esm({ "src/config.ts"() { "use strict"; @@ -6011,9 +4284,9 @@ var __esbuild_esm_mermaid = (() => { updateCurrentConfig = /* @__PURE__ */ __name((siteCfg, _directives) => { let cfg = assignWithDepth_default({}, siteCfg); let sumOfDirectives = {}; - for (const d2 of _directives) { - sanitize(d2); - sumOfDirectives = assignWithDepth_default(sumOfDirectives, d2); + for (const d3 of _directives) { + sanitize(d3); + sumOfDirectives = assignWithDepth_default(sumOfDirectives, d3); } cfg = assignWithDepth_default(cfg, sumOfDirectives); if (sumOfDirectives.theme && sumOfDirectives.theme in themes_default) { @@ -6058,27 +4331,27 @@ var __esbuild_esm_mermaid = (() => { getConfig = /* @__PURE__ */ __name(() => { return assignWithDepth_default({}, currentConfig); }, "getConfig"); - sanitize = /* @__PURE__ */ __name((options3) => { - if (!options3) { + sanitize = /* @__PURE__ */ __name((options2) => { + if (!options2) { return; } ["secure", ...siteConfig.secure ?? []].forEach((key) => { - if (Object.hasOwn(options3, key)) { - log.debug(`Denied attempt to modify a secure key ${key}`, options3[key]); - delete options3[key]; + if (Object.hasOwn(options2, key)) { + log.debug(`Denied attempt to modify a secure key ${key}`, options2[key]); + delete options2[key]; } }); - Object.keys(options3).forEach((key) => { + Object.keys(options2).forEach((key) => { if (key.startsWith("__")) { - delete options3[key]; + delete options2[key]; } }); - Object.keys(options3).forEach((key) => { - if (typeof options3[key] === "string" && (options3[key].includes("<") || options3[key].includes(">") || options3[key].includes("url(data:"))) { - delete options3[key]; + Object.keys(options2).forEach((key) => { + if (typeof options2[key] === "string" && (options2[key].includes("<") || options2[key].includes(">") || options2[key].includes("url(data:"))) { + delete options2[key]; } - if (typeof options3[key] === "object") { - sanitize(options3[key]); + if (typeof options2[key] === "object") { + sanitize(options2[key]); } }); }, "sanitize"); @@ -6116,12 +4389,25 @@ var __esbuild_esm_mermaid = (() => { issueWarning("LAZY_LOAD_DEPRECATED"); } }, "checkConfig"); + getUserDefinedConfig = /* @__PURE__ */ __name(() => { + let userConfig = {}; + if (configFromInitialize) { + userConfig = assignWithDepth_default(userConfig, configFromInitialize); + } + for (const d3 of directives) { + userConfig = assignWithDepth_default(userConfig, d3); + } + return userConfig; + }, "getUserDefinedConfig"); } }); - // ../../node_modules/.pnpm/dompurify@3.2.4/node_modules/dompurify/dist/purify.es.mjs + // ../../node_modules/.pnpm/dompurify@3.2.6/node_modules/dompurify/dist/purify.es.mjs function unapply(func) { return function(thisArg) { + if (thisArg instanceof RegExp) { + thisArg.lastIndex = 0; + } for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } @@ -6136,26 +4422,26 @@ var __esbuild_esm_mermaid = (() => { return construct(func, args); }; } - function addToSet(set6, array4) { + function addToSet(set5, array4) { let transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase; if (setPrototypeOf) { - setPrototypeOf(set6, null); + setPrototypeOf(set5, null); } - let l2 = array4.length; - while (l2--) { - let element3 = array4[l2]; + let l4 = array4.length; + while (l4--) { + let element3 = array4[l4]; if (typeof element3 === "string") { const lcElement = transformCaseFunc(element3); if (lcElement !== element3) { if (!isFrozen(array4)) { - array4[l2] = lcElement; + array4[l4] = lcElement; } element3 = lcElement; } } - set6[element3] = true; + set5[element3] = true; } - return set6; + return set5; } function cleanArray(array4) { for (let index = 0; index < array4.length; index++) { @@ -6203,8 +4489,8 @@ var __esbuild_esm_mermaid = (() => { } function createDOMPurify() { let window3 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal(); - const DOMPurify = /* @__PURE__ */ __name((root4) => createDOMPurify(root4), "DOMPurify"); - DOMPurify.version = "3.2.4"; + const DOMPurify = /* @__PURE__ */ __name((root3) => createDOMPurify(root3), "DOMPurify"); + DOMPurify.version = "3.2.6"; DOMPurify.removed = []; if (!window3 || !window3.document || window3.document.nodeType !== NODE_TYPE.document || !window3.Element) { DOMPurify.isSupported = false; @@ -6218,15 +4504,15 @@ var __esbuild_esm_mermaid = (() => { const { DocumentFragment: DocumentFragment2, HTMLTemplateElement, - Node, - Element: Element4, + Node: Node2, + Element: Element3, NodeFilter, NamedNodeMap = window3.NamedNodeMap || window3.MozNamedAttrMap, HTMLFormElement, DOMParser, trustedTypes } = window3; - const ElementPrototype = Element4.prototype; + const ElementPrototype = Element3.prototype; const cloneNode = lookupGetter(ElementPrototype, "cloneNode"); const remove3 = lookupGetter(ElementPrototype, "remove"); const getNextSibling = lookupGetter(ElementPrototype, "nextSibling"); @@ -6351,8 +4637,8 @@ var __esbuild_esm_mermaid = (() => { URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, "ADD_URI_SAFE_ATTR") ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES; DATA_URI_TAGS = objectHasOwnProperty(cfg, "ADD_DATA_URI_TAGS") ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS; FORBID_CONTENTS = objectHasOwnProperty(cfg, "FORBID_CONTENTS") ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS; - FORBID_TAGS = objectHasOwnProperty(cfg, "FORBID_TAGS") ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {}; - FORBID_ATTR = objectHasOwnProperty(cfg, "FORBID_ATTR") ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {}; + FORBID_TAGS = objectHasOwnProperty(cfg, "FORBID_TAGS") ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({}); + FORBID_ATTR = objectHasOwnProperty(cfg, "FORBID_ATTR") ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({}); USE_PROFILES = objectHasOwnProperty(cfg, "USE_PROFILES") ? cfg.USE_PROFILES : false; ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; @@ -6518,7 +4804,7 @@ var __esbuild_esm_mermaid = (() => { }); try { getParentNode(node2).removeChild(node2); - } catch (_2) { + } catch (_3) { remove3(node2); } }, "_forceRemove"); @@ -6528,7 +4814,7 @@ var __esbuild_esm_mermaid = (() => { attribute: element3.getAttributeNode(name), from: element3 }); - } catch (_2) { + } catch (_3) { arrayPush(DOMPurify.removed, { attribute: null, from: element3 @@ -6539,12 +4825,12 @@ var __esbuild_esm_mermaid = (() => { if (RETURN_DOM || RETURN_DOM_FRAGMENT) { try { _forceRemove(element3); - } catch (_2) { + } catch (_3) { } } else { try { element3.setAttribute(name, ""); - } catch (_2) { + } catch (_3) { } } } @@ -6565,14 +4851,14 @@ var __esbuild_esm_mermaid = (() => { if (NAMESPACE2 === HTML_NAMESPACE) { try { doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE); - } catch (_2) { + } catch (_3) { } } if (!doc || !doc.documentElement) { doc = implementation.createDocument(NAMESPACE2, "template", null); try { doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload; - } catch (_2) { + } catch (_3) { } } const body = doc.body || doc.documentElement; @@ -6584,10 +4870,10 @@ var __esbuild_esm_mermaid = (() => { } return WHOLE_DOCUMENT ? doc.documentElement : body; }, "_initDocument"); - const _createNodeIterator = /* @__PURE__ */ __name(function _createNodeIterator2(root4) { + const _createNodeIterator = /* @__PURE__ */ __name(function _createNodeIterator2(root3) { return createNodeIterator.call( - root4.ownerDocument || root4, - root4, + root3.ownerDocument || root3, + root3, // eslint-disable-next-line no-bitwise NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null @@ -6597,11 +4883,11 @@ var __esbuild_esm_mermaid = (() => { return element3 instanceof HTMLFormElement && (typeof element3.nodeName !== "string" || typeof element3.textContent !== "string" || typeof element3.removeChild !== "function" || !(element3.attributes instanceof NamedNodeMap) || typeof element3.removeAttribute !== "function" || typeof element3.setAttribute !== "function" || typeof element3.namespaceURI !== "string" || typeof element3.insertBefore !== "function" || typeof element3.hasChildNodes !== "function"); }, "_isClobbered"); const _isNode = /* @__PURE__ */ __name(function _isNode2(value2) { - return typeof Node === "function" && value2 instanceof Node; + return typeof Node2 === "function" && value2 instanceof Node2; }, "_isNode"); - function _executeHooks(hooks2, currentNode, data6) { + function _executeHooks(hooks2, currentNode, data5) { arrayForEach(hooks2, (hook2) => { - hook2.call(DOMPurify, currentNode, data6, CONFIG); + hook2.call(DOMPurify, currentNode, data5, CONFIG); }); } __name(_executeHooks, "_executeHooks"); @@ -6617,7 +4903,7 @@ var __esbuild_esm_mermaid = (() => { tagName, allowedTags: ALLOWED_TAGS }); - if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) { + if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\w!]/g, currentNode.textContent)) { _forceRemove(currentNode); return true; } @@ -6653,7 +4939,7 @@ var __esbuild_esm_mermaid = (() => { _forceRemove(currentNode); return true; } - if (currentNode instanceof Element4 && !_checkValidNamespace(currentNode)) { + if (currentNode instanceof Element3 && !_checkValidNamespace(currentNode)) { _forceRemove(currentNode); return true; } @@ -6721,16 +5007,17 @@ var __esbuild_esm_mermaid = (() => { allowedAttributes: ALLOWED_ATTR, forceKeepAttr: void 0 }; - let l2 = attributes.length; - while (l2--) { - const attr = attributes[l2]; + let l4 = attributes.length; + while (l4--) { + const attr = attributes[l4]; const { name, namespaceURI, value: attrValue } = attr; const lcName = transformCaseFunc(name); - let value2 = name === "value" ? attrValue : stringTrim(attrValue); + const initValue = attrValue; + let value2 = name === "value" ? initValue : stringTrim(initValue); hookEvent.attrName = lcName; hookEvent.attrValue = value2; hookEvent.keepAttr = true; @@ -6748,8 +5035,8 @@ var __esbuild_esm_mermaid = (() => { if (hookEvent.forceKeepAttr) { continue; } - _removeAttribute(name, currentNode); if (!hookEvent.keepAttr) { + _removeAttribute(name, currentNode); continue; } if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value2)) { @@ -6763,6 +5050,7 @@ var __esbuild_esm_mermaid = (() => { } const lcTag = transformCaseFunc(currentNode.nodeName); if (!_isValidAttribute(lcTag, lcName, value2)) { + _removeAttribute(name, currentNode); continue; } if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function") { @@ -6780,18 +5068,21 @@ var __esbuild_esm_mermaid = (() => { } } } - try { - if (namespaceURI) { - currentNode.setAttributeNS(namespaceURI, name, value2); - } else { - currentNode.setAttribute(name, value2); - } - if (_isClobbered(currentNode)) { - _forceRemove(currentNode); - } else { - arrayPop(DOMPurify.removed); + if (value2 !== initValue) { + try { + if (namespaceURI) { + currentNode.setAttributeNS(namespaceURI, name, value2); + } else { + currentNode.setAttribute(name, value2); + } + if (_isClobbered(currentNode)) { + _forceRemove(currentNode); + } else { + arrayPop(DOMPurify.removed); + } + } catch (_3) { + _removeAttribute(name, currentNode); } - } catch (_2) { } } _executeHooks(hooks.afterSanitizeAttributes, currentNode, null); @@ -6847,7 +5138,7 @@ var __esbuild_esm_mermaid = (() => { throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place"); } } - } else if (dirty instanceof Node) { + } else if (dirty instanceof Node2) { body = _initDocument(""); importedNode = body.ownerDocument.importNode(dirty, true); if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY") { @@ -6915,11 +5206,11 @@ var __esbuild_esm_mermaid = (() => { CONFIG = null; SET_CONFIG = false; }; - DOMPurify.isValidAttribute = function(tag2, attr, value2) { + DOMPurify.isValidAttribute = function(tag, attr, value2) { if (!CONFIG) { _parseConfig({}); } - const lcTag = transformCaseFunc(tag2); + const lcTag = transformCaseFunc(tag); const lcName = transformCaseFunc(attr); return _isValidAttribute(lcTag, lcName, value2); }; @@ -6946,7 +5237,7 @@ var __esbuild_esm_mermaid = (() => { } var entries, setPrototypeOf, isFrozen, getPrototypeOf, getOwnPropertyDescriptor, freeze, seal, create, apply, construct, arrayForEach, arrayLastIndexOf, arrayPop, arrayPush, arraySplice, stringToLowerCase, stringToString, stringMatch, stringReplace, stringIndexOf, stringTrim, objectHasOwnProperty, regExpTest, typeErrorCreate, html$1, svg$1, svgFilters, svgDisallowed, mathMl$1, mathMlDisallowed, text, html, svg, mathMl, xml, MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR, DATA_ATTR, ARIA_ATTR, IS_ALLOWED_URI, IS_SCRIPT_OR_DATA, ATTR_WHITESPACE, DOCTYPE_NAME, CUSTOM_ELEMENT, EXPRESSIONS, NODE_TYPE, getGlobal, _createTrustedTypesPolicy, _createHooksMap, purify; var init_purify_es = __esm({ - "../../node_modules/.pnpm/dompurify@3.2.4/node_modules/dompurify/dist/purify.es.mjs"() { + "../../node_modules/.pnpm/dompurify@3.2.6/node_modules/dompurify/dist/purify.es.mjs"() { "use strict"; ({ entries, @@ -7021,7 +5312,7 @@ var __esbuild_esm_mermaid = (() => { DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/); ARIA_ATTR = seal(/^aria-[\-\w]+$/); IS_ALLOWED_URI = seal( - /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i + /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape ); IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i); @@ -7076,14 +5367,14 @@ var __esbuild_esm_mermaid = (() => { const policyName = "dompurify" + (suffix ? "#" + suffix : ""); try { return trustedTypes.createPolicy(policyName, { - createHTML(html3) { - return html3; + createHTML(html2) { + return html2; }, createScriptURL(scriptUrl) { return scriptUrl; } }); - } catch (_2) { + } catch (_3) { console.warn("TrustedTypes policy " + policyName + " could not be created."); return null; } @@ -7106,10 +5397,23 @@ var __esbuild_esm_mermaid = (() => { } }); - // ../../node_modules/.pnpm/katex@0.16.11/node_modules/katex/dist/katex.mjs + // ../../node_modules/.pnpm/katex@0.16.22/node_modules/katex/dist/katex.mjs var katex_exports = {}; __export(katex_exports, { - default: () => katex + ParseError: () => ParseError, + SETTINGS_SCHEMA: () => SETTINGS_SCHEMA, + __defineFunction: () => defineFunction, + __defineMacro: () => defineMacro, + __defineSymbol: () => defineSymbol, + __domTree: () => __domTree, + __parse: () => generateParseTree, + __renderToDomTree: () => renderToDomTree, + __renderToHTMLTree: () => renderToHTMLTree, + __setFontMetrics: () => setFontMetrics, + default: () => katex, + render: () => render, + renderToString: () => renderToString, + version: () => version }); function escape2(text4) { return String(text4).replace(ESCAPE_REGEX, (match2) => ESCAPE_LOOKUP[match2]); @@ -7138,8 +5442,8 @@ var __esbuild_esm_mermaid = (() => { for (var i2 = 0; i2 < scriptData.length; i2++) { var script = scriptData[i2]; for (var _i = 0; _i < script.blocks.length; _i++) { - var block3 = script.blocks[_i]; - if (codepoint >= block3[0] && codepoint <= block3[1]) { + var block2 = script.blocks[_i]; + if (codepoint >= block2[0] && codepoint <= block2[1]) { return script.name; } } @@ -7182,11 +5486,11 @@ var __esbuild_esm_mermaid = (() => { }; } } - function getGlobalMetrics(size5) { + function getGlobalMetrics(size4) { var sizeIndex; - if (size5 >= 5) { + if (size4 >= 5) { sizeIndex = 0; - } else if (size5 >= 3) { + } else if (size4 >= 3) { sizeIndex = 1; } else { sizeIndex = 2; @@ -7236,7 +5540,7 @@ var __esbuild_esm_mermaid = (() => { htmlBuilder: htmlBuilder3, mathmlBuilder: mathmlBuilder3 } = _ref; - var data6 = { + var data5 = { type: type3, numArgs: props.numArgs, argTypes: props.argTypes, @@ -7249,7 +5553,7 @@ var __esbuild_esm_mermaid = (() => { handler }; for (var i2 = 0; i2 < names.length; ++i2) { - _functions[names[i2]] = data6; + _functions[names[i2]] = data5; } if (type3) { if (htmlBuilder3) { @@ -7279,8 +5583,8 @@ var __esbuild_esm_mermaid = (() => { mathmlBuilder: mathmlBuilder3 }); } - function buildHTMLUnbreakable(children2, options3) { - var body = makeSpan$1(["base"], children2, options3); + function buildHTMLUnbreakable(children2, options2) { + var body = makeSpan$1(["base"], children2, options2); var strut = makeSpan$1(["strut"]); strut.style.height = makeEm(body.height + body.depth); if (body.depth) { @@ -7289,13 +5593,13 @@ var __esbuild_esm_mermaid = (() => { body.children.unshift(strut); return body; } - function buildHTML(tree, options3) { - var tag2 = null; + function buildHTML(tree, options2) { + var tag = null; if (tree.length === 1 && tree[0].type === "tag") { - tag2 = tree[0].tag; + tag = tree[0].tag; tree = tree[0].body; } - var expression = buildExpression$1(tree, options3, "root"); + var expression = buildExpression$1(tree, options2, "root"); var eqnNum; if (expression.length === 2 && expression[1].hasClass("tag")) { eqnNum = expression.pop(); @@ -7314,24 +5618,24 @@ var __esbuild_esm_mermaid = (() => { } } if (!nobreak) { - children2.push(buildHTMLUnbreakable(parts, options3)); + children2.push(buildHTMLUnbreakable(parts, options2)); parts = []; } } else if (expression[i2].hasClass("newline")) { parts.pop(); if (parts.length > 0) { - children2.push(buildHTMLUnbreakable(parts, options3)); + children2.push(buildHTMLUnbreakable(parts, options2)); parts = []; } children2.push(expression[i2]); } } if (parts.length > 0) { - children2.push(buildHTMLUnbreakable(parts, options3)); + children2.push(buildHTMLUnbreakable(parts, options2)); } var tagChild; - if (tag2) { - tagChild = buildHTMLUnbreakable(buildExpression$1(tag2, options3, true)); + if (tag) { + tagChild = buildHTMLUnbreakable(buildExpression$1(tag, options2, true)); tagChild.classes = ["tag"]; children2.push(tagChild); } else if (eqnNum) { @@ -7351,8 +5655,22 @@ var __esbuild_esm_mermaid = (() => { function newDocumentFragment(children2) { return new DocumentFragment(children2); } - function buildMathML(tree, texExpression, options3, isDisplayMode, forMathmlOnly) { - var expression = buildExpression2(tree, options3); + function isNumberPunctuation(group2) { + if (!group2) { + return false; + } + if (group2.type === "mi" && group2.children.length === 1) { + var child = group2.children[0]; + return child instanceof TextNode && child.text === "."; + } else if (group2.type === "mo" && group2.children.length === 1 && group2.getAttribute("separator") === "true" && group2.getAttribute("lspace") === "0em" && group2.getAttribute("rspace") === "0em") { + var _child = group2.children[0]; + return _child instanceof TextNode && _child.text === ","; + } else { + return false; + } + } + function buildMathML(tree, texExpression, options2, isDisplayMode, forMathmlOnly) { + var expression = buildExpression2(tree, options2); var wrapper; if (expression.length === 1 && expression[0] instanceof MathNode && utils.contains(["mrow", "mtable"], expression[0].type)) { wrapper = expression[0]; @@ -7389,13 +5707,13 @@ var __esbuild_esm_mermaid = (() => { } return null; } - function htmlBuilder$9(group2, options3) { - var elements3 = buildExpression$1(group2.body, options3, true); - return makeSpan2([group2.mclass], elements3, options3); + function htmlBuilder$9(group2, options2) { + var elements2 = buildExpression$1(group2.body, options2, true); + return makeSpan2([group2.mclass], elements2, options2); } - function mathmlBuilder$8(group2, options3) { + function mathmlBuilder$8(group2, options2) { var node2; - var inner2 = buildExpression2(group2.body, options3); + var inner2 = buildExpression2(group2.body, options2); if (group2.mclass === "minner") { node2 = new mathMLTree.MathNode("mpadded", inner2); } else if (group2.mclass === "mord") { @@ -7496,13 +5814,13 @@ var __esbuild_esm_mermaid = (() => { for (var i2 = 0; i2 < parsedRows.length; i2++) { var rowNodes = parsedRows[i2]; var cell = newCell(); - for (var j2 = 0; j2 < rowNodes.length; j2++) { - if (!isStartOfArrow(rowNodes[j2])) { - cell.body.push(rowNodes[j2]); + for (var j3 = 0; j3 < rowNodes.length; j3++) { + if (!isStartOfArrow(rowNodes[j3])) { + cell.body.push(rowNodes[j3]); } else { row.push(cell); - j2 += 1; - var arrowChar = assertSymbolNodeType(rowNodes[j2]).text; + j3 += 1; + var arrowChar = assertSymbolNodeType(rowNodes[j3]).text; var labels = new Array(2); labels[0] = { type: "ordgroup", @@ -7518,10 +5836,10 @@ var __esbuild_esm_mermaid = (() => { else if ("<>AV".indexOf(arrowChar) > -1) { for (var labelNum = 0; labelNum < 2; labelNum++) { var inLabel = true; - for (var k2 = j2 + 1; k2 < rowNodes.length; k2++) { + for (var k2 = j3 + 1; k2 < rowNodes.length; k2++) { if (isLabelEnd(rowNodes[k2], arrowChar)) { inLabel = false; - j2 = k2; + j3 = k2; break; } if (isStartOfArrow(rowNodes[k2])) { @@ -7530,11 +5848,11 @@ var __esbuild_esm_mermaid = (() => { labels[labelNum].body.push(rowNodes[k2]); } if (inLabel) { - throw new ParseError("Missing a " + arrowChar + " character to complete a CD arrow.", rowNodes[j2]); + throw new ParseError("Missing a " + arrowChar + " character to complete a CD arrow.", rowNodes[j3]); } } } else { - throw new ParseError('Expected one of "<>AV=|." after @', rowNodes[j2]); + throw new ParseError('Expected one of "<>AV=|." after @', rowNodes[j3]); } var arrow = cdArrow(arrowChar, labels, parser24); var wrappedArrow = { @@ -7602,7 +5920,7 @@ var __esbuild_esm_mermaid = (() => { htmlBuilder: htmlBuilder3, mathmlBuilder: mathmlBuilder3 } = _ref; - var data6 = { + var data5 = { type: type3, numArgs: props.numArgs || 0, allowedInText: false, @@ -7610,7 +5928,7 @@ var __esbuild_esm_mermaid = (() => { handler }; for (var i2 = 0; i2 < names.length; ++i2) { - _environments[names[i2]] = data6; + _environments[names[i2]] = data5; } if (htmlBuilder3) { _htmlGroupBuilders[type3] = htmlBuilder3; @@ -7736,11 +6054,11 @@ var __esbuild_esm_mermaid = (() => { break; } else if (next3 === "\\\\") { parser24.consume(); - var size5 = void 0; + var size4 = void 0; if (parser24.gullet.future().text !== " ") { - size5 = parser24.parseSizeGroup(true); + size4 = parser24.parseSizeGroup(true); } - rowGaps.push(size5 ? size5.value : null); + rowGaps.push(size4 ? size4.value : null); endRow(); hLinesBeforeRow.push(getHLines(parser24)); row = []; @@ -7774,14 +6092,14 @@ var __esbuild_esm_mermaid = (() => { return "text"; } } - function sizingGroup(value2, options3, baseOptions) { - var inner2 = buildExpression$1(value2, options3, false); - var multiplier = options3.sizeMultiplier / baseOptions.sizeMultiplier; + function sizingGroup(value2, options2, baseOptions) { + var inner2 = buildExpression$1(value2, options2, false); + var multiplier = options2.sizeMultiplier / baseOptions.sizeMultiplier; for (var i2 = 0; i2 < inner2.length; i2++) { var pos = inner2[i2].classes.indexOf("sizing"); if (pos < 0) { - Array.prototype.push.apply(inner2[i2].classes, options3.sizingClasses(baseOptions)); - } else if (inner2[i2].classes[pos + 1] === "reset-size" + options3.size) { + Array.prototype.push.apply(inner2[i2].classes, options2.sizingClasses(baseOptions)); + } else if (inner2[i2].classes[pos + 1] === "reset-size" + options2.size) { inner2[i2].classes[pos + 1] = "reset-size" + baseOptions.size; } inner2[i2].height *= multiplier; @@ -7789,9 +6107,9 @@ var __esbuild_esm_mermaid = (() => { } return buildCommon.makeFragment(inner2); } - var SourceLocation, Token, ParseError, contains, deflt, uppercase, hyphenate, ESCAPE_LOOKUP, ESCAPE_REGEX, getBaseElem, isCharacterBox, assert, protocolFromUrl, utils, SETTINGS_SCHEMA, Settings, Style, D, Dc, T, Tc, S, Sc, SS, SSc, styles, sup, sub, fracNum, fracDen, cramp, text$1, Style$1, scriptData, allBlocks, hLinePad, sqrtMain, sqrtSize1, sqrtSize2, sqrtSize3, sqrtSize4, phasePath, sqrtTall, sqrtPath, innerPath, path, tallDelim, DocumentFragment, fontMetricsData, sigmasAndXis, extraCharacterMap, fontMetricsBySizeIndex, sizeStyleMap, sizeMultipliers, sizeAtStyle, Options, ptPerUnit, relativeUnit, validUnit, calculateSize2, makeEm, createClass, initNode, toNode, toMarkup, Span, Anchor, Img, iCombinations, SymbolNode, SvgNode, PathNode, LineNode, ATOMS, NON_ATOMS, symbols, math, text2, main, ams, accent, bin, close, inner, mathord, op, open, punct, rel, spacing, textord, ligatures, mathTextSymbols, ch, i2, textSymbols, _ch, _i, letters, _ch2, _i2, wideChar, _ch3, _i3, _ch4, _i4, extraLatin, _ch5, _i5, wideLatinLetterData, wideNumeralData, wideCharacterFont, lookupSymbol, makeSymbol, mathsym, boldsymbol, makeOrd, canCombine, tryCombineChars, sizeElementFromChildren, makeSpan$2, makeSvgSpan, makeLineSpan, makeAnchor, makeFragment, wrapFragment, getVListChildrenAndDepth, makeVList, makeGlue, retrieveTextFontName, fontMap, svgData, staticSvg, buildCommon, thinspace, mediumspace, thickspace, spacings, tightSpacings, _functions, _htmlGroupBuilders, _mathmlGroupBuilders, normalizeArgument, ordargument, makeSpan$1, binLeftCanceller, binRightCanceller, styleMap$1, DomEnum, buildExpression$1, traverseNonSpaceNodes, checkPartialGroup, getOutermostNode, getTypeOfDomTree, makeNullDelimiter, buildGroup$1, MathNode, TextNode, SpaceNode, mathMLTree, makeText, makeRow, getVariant, buildExpression2, buildExpressionRow, buildGroup2, optionsFromSettings, displayWrap, buildTree, buildHTMLTree, stretchyCodePoint, mathMLnode, katexImagesData, groupLength, svgSpan, encloseSpan, stretchy, htmlBuilder$a, mathmlBuilder$9, NON_STRETCHY_ACCENT_REGEX, paddedNode, makeSpan2, binrelClass, cdArrowFunctionName, newCell, isStartOfArrow, isLabelEnd, htmlBuilder$8, mathmlBuilder$7, globalMap, checkControlSequence, getRHS, letCommand, getMetrics, styleWrap, centerSpan, makeSmallDelim, mathrmSize, makeLargeDelim, makeGlyphSpan, makeInner, lapInEms, lap, verts, doubleVerts, makeStackedDelim, vbPad, emPad, sqrtSvg, makeSqrtImage, stackLargeDelimiters, stackAlwaysDelimiters, stackNeverDelimiters, sizeToMaxHeight, makeSizedDelim, stackNeverDelimiterSequence, stackAlwaysDelimiterSequence, stackLargeDelimiterSequence, delimTypeToFont, traverseSequence, makeCustomSizedDelim, makeLeftRightDelim, delimiter, delimiterSizes, delimiters, htmlBuilder$7, mathmlBuilder$6, _environments, _macros, validateAmsEnvironmentContext, htmlBuilder$6, alignMap, mathmlBuilder$5, alignedHandler, environments, htmlBuilder$5, mathmlBuilder$4, fontAliases, adjustStyle, htmlBuilder$4, mathmlBuilder$3, stylArray, delimFromValue, htmlBuilder$3, mathmlBuilder$2, sizeData, chooseMathStyle, assembleSupSub, noSuccessor, htmlBuilder$2, mathmlBuilder$1, singleCharBigOps, singleCharIntegrals, htmlBuilder$1, mathmlBuilder2, sizeFuncs, htmlBuilder2, styleMap, htmlBuilderDelegate, defaultVariant, cssSpace, regularSpace, pad, textFontFamilies, textFontWeights, textFontShapes, optionsWithFont, makeVerb, functions, spaceRegexString, controlWordRegexString, controlSymbolRegexString, controlWordWhitespaceRegexString, controlSpaceRegexString, combiningDiacriticalMarkString, combiningDiacriticalMarksEndRegex, tokenRegexString, Lexer, Namespace, macros, digitToNumber, newcommand, dotsByToken, spaceAfterDots, latexRaiseA, braketHelper, implicitCommands, MacroExpander, unicodeSubRegEx, uSubsAndSups, unicodeAccents, unicodeSymbols, Parser, parseTree, render, renderToString, generateParseTree, renderError, renderToDomTree, renderToHTMLTree, katex; + var SourceLocation, Token, ParseError, contains, deflt, uppercase, hyphenate, ESCAPE_LOOKUP, ESCAPE_REGEX, getBaseElem, isCharacterBox, assert, protocolFromUrl, utils, SETTINGS_SCHEMA, Settings, Style, D, Dc, T, Tc, S, Sc, SS, SSc, styles, sup, sub, fracNum, fracDen, cramp, text$1, Style$1, scriptData, allBlocks, hLinePad, sqrtMain, sqrtSize1, sqrtSize2, sqrtSize3, sqrtSize4, phasePath, sqrtTall, sqrtPath, innerPath, path, tallDelim, DocumentFragment, fontMetricsData, sigmasAndXis, extraCharacterMap, fontMetricsBySizeIndex, sizeStyleMap, sizeMultipliers, sizeAtStyle, Options, ptPerUnit, relativeUnit, validUnit, calculateSize2, makeEm, createClass, initNode, toNode, invalidAttributeNameRegex, toMarkup, Span, Anchor, Img, iCombinations, SymbolNode, SvgNode, PathNode, LineNode, ATOMS, NON_ATOMS, symbols, math, text2, main, ams, accent, bin, close, inner, mathord, op, open, punct, rel, spacing, textord, ligatures, mathTextSymbols, ch, i2, textSymbols, _ch, _i, letters, _ch2, _i2, wideChar, _ch3, _i3, _ch4, _i4, extraLatin, _ch5, _i5, wideLatinLetterData, wideNumeralData, wideCharacterFont, lookupSymbol, makeSymbol, mathsym, boldsymbol, makeOrd, canCombine, tryCombineChars, sizeElementFromChildren, makeSpan$2, makeSvgSpan, makeLineSpan, makeAnchor, makeFragment, wrapFragment, getVListChildrenAndDepth, makeVList, makeGlue, retrieveTextFontName, fontMap, svgData, staticSvg, buildCommon, thinspace, mediumspace, thickspace, spacings, tightSpacings, _functions, _htmlGroupBuilders, _mathmlGroupBuilders, normalizeArgument, ordargument, makeSpan$1, binLeftCanceller, binRightCanceller, styleMap$1, DomEnum, buildExpression$1, traverseNonSpaceNodes, checkPartialGroup, getOutermostNode, getTypeOfDomTree, makeNullDelimiter, buildGroup$1, MathNode, TextNode, SpaceNode, mathMLTree, makeText, makeRow, getVariant, buildExpression2, buildExpressionRow, buildGroup2, optionsFromSettings, displayWrap, buildTree, buildHTMLTree, stretchyCodePoint, mathMLnode, katexImagesData, groupLength, svgSpan, encloseSpan, stretchy, htmlBuilder$a, mathmlBuilder$9, NON_STRETCHY_ACCENT_REGEX, paddedNode, makeSpan2, binrelClass, cdArrowFunctionName, newCell, isStartOfArrow, isLabelEnd, htmlBuilder$8, mathmlBuilder$7, globalMap, checkControlSequence, getRHS, letCommand, getMetrics, styleWrap, centerSpan, makeSmallDelim, mathrmSize, makeLargeDelim, makeGlyphSpan, makeInner, lapInEms, lap, verts, doubleVerts, makeStackedDelim, vbPad, emPad, sqrtSvg, makeSqrtImage, stackLargeDelimiters, stackAlwaysDelimiters, stackNeverDelimiters, sizeToMaxHeight, makeSizedDelim, stackNeverDelimiterSequence, stackAlwaysDelimiterSequence, stackLargeDelimiterSequence, delimTypeToFont, traverseSequence, makeCustomSizedDelim, makeLeftRightDelim, delimiter, delimiterSizes, delimiters, htmlBuilder$7, mathmlBuilder$6, _environments, _macros, validateAmsEnvironmentContext, htmlBuilder$6, alignMap, mathmlBuilder$5, alignedHandler, environments, htmlBuilder$5, mathmlBuilder$4, fontAliases, adjustStyle, htmlBuilder$4, mathmlBuilder$3, stylArray, delimFromValue, htmlBuilder$3, mathmlBuilder$2, sizeData, chooseMathStyle, assembleSupSub, noSuccessor, htmlBuilder$2, mathmlBuilder$1, singleCharBigOps, singleCharIntegrals, htmlBuilder$1, mathmlBuilder2, sizeFuncs, htmlBuilder2, styleMap, htmlBuilderDelegate, defaultVariant, cssSpace, regularSpace, pad, textFontFamilies, textFontWeights, textFontShapes, optionsWithFont, makeVerb, functions, spaceRegexString, controlWordRegexString, controlSymbolRegexString, controlWordWhitespaceRegexString, controlSpaceRegexString, combiningDiacriticalMarkString, combiningDiacriticalMarksEndRegex, tokenRegexString, Lexer, Namespace, macros, digitToNumber, newcommand, dotsByToken, spaceAfterDots, latexRaiseA, braketHelper, implicitCommands, MacroExpander, unicodeSubRegEx, uSubsAndSups, unicodeAccents, unicodeSymbols, Parser, parseTree, render, renderToString, generateParseTree, renderError, renderToDomTree, renderToHTMLTree, version, __domTree, katex; var init_katex = __esm({ - "../../node_modules/.pnpm/katex@0.16.11/node_modules/katex/dist/katex.mjs"() { + "../../node_modules/.pnpm/katex@0.16.22/node_modules/katex/dist/katex.mjs"() { "use strict"; SourceLocation = class _SourceLocation { static { @@ -7801,11 +6119,11 @@ var __esbuild_esm_mermaid = (() => { // Lexer holding the input string. // Start offset, zero-based inclusive. // End offset, zero-based exclusive. - constructor(lexer2, start3, end2) { + constructor(lexer, start3, end2) { this.lexer = void 0; this.start = void 0; this.end = void 0; - this.lexer = lexer2; + this.lexer = lexer; this.start = start3; this.end = end2; } @@ -7901,8 +6219,8 @@ var __esbuild_esm_mermaid = (() => { } }; ParseError.prototype.__proto__ = Error.prototype; - contains = /* @__PURE__ */ __name(function contains2(list2, elem) { - return list2.indexOf(elem) !== -1; + contains = /* @__PURE__ */ __name(function contains2(list, elem) { + return list.indexOf(elem) !== -1; }, "contains"); deflt = /* @__PURE__ */ __name(function deflt2(setting, defaultIfUndefined) { return setting === void 0 ? defaultIfUndefined : setting; @@ -8010,8 +6328,8 @@ var __esbuild_esm_mermaid = (() => { cli: "-m, --macro ", cliDescription: "Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).", cliDefault: [], - cliProcessor: /* @__PURE__ */ __name((def2, defs2) => { - defs2.push(def2); + cliProcessor: /* @__PURE__ */ __name((def, defs2) => { + defs2.push(def); return defs2; }, "cliProcessor") }, @@ -8066,7 +6384,7 @@ var __esbuild_esm_mermaid = (() => { static { __name(this, "Settings"); } - constructor(options3) { + constructor(options2) { this.displayMode = void 0; this.output = void 0; this.leqno = void 0; @@ -8081,11 +6399,11 @@ var __esbuild_esm_mermaid = (() => { this.maxSize = void 0; this.maxExpand = void 0; this.globalGroup = void 0; - options3 = options3 || {}; + options2 = options2 || {}; for (var prop in SETTINGS_SCHEMA) { if (SETTINGS_SCHEMA.hasOwnProperty(prop)) { var schema2 = SETTINGS_SCHEMA[prop]; - this[prop] = options3[prop] !== void 0 ? schema2.processor ? schema2.processor(options3[prop]) : options3[prop] : getDefaultValue(schema2); + this[prop] = options2[prop] !== void 0 ? schema2.processor ? schema2.processor(options2[prop]) : options2[prop] : getDefaultValue(schema2); } } } @@ -8161,12 +6479,12 @@ var __esbuild_esm_mermaid = (() => { static { __name(this, "Style"); } - constructor(id29, size5, cramped) { + constructor(id30, size4, cramped) { this.id = void 0; this.size = void 0; this.cramped = void 0; - this.id = id29; - this.size = size5; + this.id = id30; + this.size = size4; this.cramped = cramped; } /** @@ -8297,7 +6615,7 @@ var __esbuild_esm_mermaid = (() => { }]; __name(scriptFromCodepoint, "scriptFromCodepoint"); allBlocks = []; - scriptData.forEach((s2) => s2.blocks.forEach((b2) => allBlocks.push(...b2))); + scriptData.forEach((s2) => s2.blocks.forEach((b3) => allBlocks.push(...b3))); __name(supportedCodepoint, "supportedCodepoint"); hLinePad = 80; sqrtMain = /* @__PURE__ */ __name(function sqrtMain2(extraVinculum, hLinePad2) { @@ -8315,18 +6633,18 @@ var __esbuild_esm_mermaid = (() => { sqrtSize4 = /* @__PURE__ */ __name(function sqrtSize42(extraVinculum, hLinePad2) { return "M473," + (2713 + extraVinculum + hLinePad2) + "\nc339.3,-1799.3,509.3,-2700,510,-2702 l" + extraVinculum / 5.298 + " -" + extraVinculum + "\nc3.3,-7.3,9.3,-11,18,-11 H400000v" + (40 + extraVinculum) + "H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM" + (1001 + extraVinculum) + " " + hLinePad2 + "h400000v" + (40 + extraVinculum) + "H1017.7z"; }, "sqrtSize4"); - phasePath = /* @__PURE__ */ __name(function phasePath2(y5) { - var x5 = y5 / 2; - return "M400000 " + y5 + " H0 L" + x5 + " 0 l65 45 L145 " + (y5 - 80) + " H400000z"; + phasePath = /* @__PURE__ */ __name(function phasePath2(y6) { + var x5 = y6 / 2; + return "M400000 " + y6 + " H0 L" + x5 + " 0 l65 45 L145 " + (y6 - 80) + " H400000z"; }, "phasePath"); sqrtTall = /* @__PURE__ */ __name(function sqrtTall2(extraVinculum, hLinePad2, viewBoxHeight) { var vertSegment = viewBoxHeight - 54 - hLinePad2 - extraVinculum; return "M702 " + (extraVinculum + hLinePad2) + "H400000" + (40 + extraVinculum) + "\nH742v" + vertSegment + "l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 " + hLinePad2 + "H400000v" + (40 + extraVinculum) + "H742z"; }, "sqrtTall"); - sqrtPath = /* @__PURE__ */ __name(function sqrtPath2(size5, extraVinculum, viewBoxHeight) { + sqrtPath = /* @__PURE__ */ __name(function sqrtPath2(size4, extraVinculum, viewBoxHeight) { extraVinculum = 1e3 * extraVinculum; var path4 = ""; - switch (size5) { + switch (size4) { case "sqrtMain": path4 = sqrtMain(extraVinculum, hLinePad); break; @@ -10800,8 +9118,8 @@ var __esbuild_esm_mermaid = (() => { 2.074, 2.488 ]; - sizeAtStyle = /* @__PURE__ */ __name(function sizeAtStyle2(size5, style3) { - return style3.size < 2 ? size5 : sizeStyleMap[size5 - 1][style3.size - 1]; + sizeAtStyle = /* @__PURE__ */ __name(function sizeAtStyle2(size4, style3) { + return style3.size < 2 ? size4 : sizeStyleMap[size4 - 1][style3.size - 1]; }, "sizeAtStyle"); Options = class _Options { static { @@ -10813,7 +9131,7 @@ var __esbuild_esm_mermaid = (() => { /** * The base size index. */ - constructor(data6) { + constructor(data5) { this.style = void 0; this.color = void 0; this.size = void 0; @@ -10827,18 +9145,18 @@ var __esbuild_esm_mermaid = (() => { this.maxSize = void 0; this.minRuleThickness = void 0; this._fontMetrics = void 0; - this.style = data6.style; - this.color = data6.color; - this.size = data6.size || _Options.BASESIZE; - this.textSize = data6.textSize || this.size; - this.phantom = !!data6.phantom; - this.font = data6.font || ""; - this.fontFamily = data6.fontFamily || ""; - this.fontWeight = data6.fontWeight || ""; - this.fontShape = data6.fontShape || ""; + this.style = data5.style; + this.color = data5.color; + this.size = data5.size || _Options.BASESIZE; + this.textSize = data5.textSize || this.size; + this.phantom = !!data5.phantom; + this.font = data5.font || ""; + this.fontFamily = data5.fontFamily || ""; + this.fontWeight = data5.fontWeight || ""; + this.fontShape = data5.fontShape || ""; this.sizeMultiplier = sizeMultipliers[this.size - 1]; - this.maxSize = data6.maxSize; - this.minRuleThickness = data6.minRuleThickness; + this.maxSize = data5.maxSize; + this.minRuleThickness = data5.minRuleThickness; this._fontMetrics = void 0; } /** @@ -10846,7 +9164,7 @@ var __esbuild_esm_mermaid = (() => { * from "extension" will be copied to the new options object. */ extend(extension5) { - var data6 = { + var data5 = { style: this.style, size: this.size, textSize: this.textSize, @@ -10861,10 +9179,10 @@ var __esbuild_esm_mermaid = (() => { }; for (var key in extension5) { if (extension5.hasOwnProperty(key)) { - data6[key] = extension5[key]; + data5[key] = extension5[key]; } } - return new _Options(data6); + return new _Options(data5); } /** * Return an options object with the given style. If `this.style === style`, @@ -10891,15 +9209,15 @@ var __esbuild_esm_mermaid = (() => { * Return an options object with the given size and in at least `\textstyle`. * Returns `this` if appropriate. */ - havingSize(size5) { - if (this.size === size5 && this.textSize === size5) { + havingSize(size4) { + if (this.size === size4 && this.textSize === size4) { return this; } else { return this.extend({ style: this.style.text(), - size: size5, - textSize: size5, - sizeMultiplier: sizeMultipliers[size5 - 1] + size: size4, + textSize: size4, + sizeMultiplier: sizeMultipliers[size4 - 1] }); } } @@ -10924,22 +9242,22 @@ var __esbuild_esm_mermaid = (() => { * Keep the effect of the current style, such as \scriptstyle. */ havingBaseSizing() { - var size5; + var size4; switch (this.style.id) { case 4: case 5: - size5 = 3; + size4 = 3; break; case 6: case 7: - size5 = 1; + size4 = 1; break; default: - size5 = 6; + size4 = 6; } return this.extend({ style: this.style.text(), - size: size5 + size: size4 }); } /** @@ -11077,18 +9395,18 @@ var __esbuild_esm_mermaid = (() => { } return unit2 in ptPerUnit || unit2 in relativeUnit || unit2 === "ex"; }, "validUnit"); - calculateSize2 = /* @__PURE__ */ __name(function calculateSize3(sizeValue, options3) { + calculateSize2 = /* @__PURE__ */ __name(function calculateSize3(sizeValue, options2) { var scale2; if (sizeValue.unit in ptPerUnit) { - scale2 = ptPerUnit[sizeValue.unit] / options3.fontMetrics().ptPerEm / options3.sizeMultiplier; + scale2 = ptPerUnit[sizeValue.unit] / options2.fontMetrics().ptPerEm / options2.sizeMultiplier; } else if (sizeValue.unit === "mu") { - scale2 = options3.fontMetrics().cssEmPerMu; + scale2 = options2.fontMetrics().cssEmPerMu; } else { var unitOptions; - if (options3.style.isTight()) { - unitOptions = options3.havingStyle(options3.style.text()); + if (options2.style.isTight()) { + unitOptions = options2.havingStyle(options2.style.text()); } else { - unitOptions = options3; + unitOptions = options2; } if (sizeValue.unit === "ex") { scale2 = unitOptions.fontMetrics().xHeight; @@ -11097,11 +9415,11 @@ var __esbuild_esm_mermaid = (() => { } else { throw new ParseError("Invalid unit: '" + sizeValue.unit + "'"); } - if (unitOptions !== options3) { - scale2 *= unitOptions.sizeMultiplier / options3.sizeMultiplier; + if (unitOptions !== options2) { + scale2 *= unitOptions.sizeMultiplier / options2.sizeMultiplier; } } - return Math.min(sizeValue.number * scale2, options3.maxSize); + return Math.min(sizeValue.number * scale2, options2.maxSize); }, "calculateSize"); makeEm = /* @__PURE__ */ __name(function makeEm2(n2) { return +n2.toFixed(4) + "em"; @@ -11109,18 +9427,18 @@ var __esbuild_esm_mermaid = (() => { createClass = /* @__PURE__ */ __name(function createClass2(classes3) { return classes3.filter((cls) => cls).join(" "); }, "createClass"); - initNode = /* @__PURE__ */ __name(function initNode2(classes3, options3, style3) { + initNode = /* @__PURE__ */ __name(function initNode2(classes3, options2, style3) { this.classes = classes3 || []; this.attributes = {}; this.height = 0; this.depth = 0; this.maxFontSize = 0; this.style = style3 || {}; - if (options3) { - if (options3.style.isTight()) { + if (options2) { + if (options2.style.isTight()) { this.classes.push("mtight"); } - var color2 = options3.getColor(); + var color2 = options2.getColor(); if (color2) { this.style.color = color2; } @@ -11144,6 +9462,7 @@ var __esbuild_esm_mermaid = (() => { } return node2; }, "toNode"); + invalidAttributeNameRegex = /[\s"'>/=\x00-\x1f]/; toMarkup = /* @__PURE__ */ __name(function toMarkup2(tagName) { var markup = "<" + tagName; if (this.classes.length) { @@ -11160,6 +9479,9 @@ var __esbuild_esm_mermaid = (() => { } for (var attr in this.attributes) { if (this.attributes.hasOwnProperty(attr)) { + if (invalidAttributeNameRegex.test(attr)) { + throw new ParseError("Invalid attribute name '" + attr + "'"); + } markup += " " + attr + '="' + utils.escape(this.attributes[attr]) + '"'; } } @@ -11174,7 +9496,7 @@ var __esbuild_esm_mermaid = (() => { static { __name(this, "Span"); } - constructor(classes3, children2, options3, style3) { + constructor(classes3, children2, options2, style3) { this.children = void 0; this.attributes = void 0; this.classes = void 0; @@ -11183,7 +9505,7 @@ var __esbuild_esm_mermaid = (() => { this.width = void 0; this.maxFontSize = void 0; this.style = void 0; - initNode.call(this, classes3, options3, style3); + initNode.call(this, classes3, options2, style3); this.children = children2 || []; } /** @@ -11208,7 +9530,7 @@ var __esbuild_esm_mermaid = (() => { static { __name(this, "Anchor"); } - constructor(href, classes3, children2, options3) { + constructor(href, classes3, children2, options2) { this.children = void 0; this.attributes = void 0; this.classes = void 0; @@ -11216,7 +9538,7 @@ var __esbuild_esm_mermaid = (() => { this.depth = void 0; this.maxFontSize = void 0; this.style = void 0; - initNode.call(this, classes3, options3); + initNode.call(this, classes3, options2); this.children = children2 || []; this.setAttribute("href", href); } @@ -12050,6 +10372,7 @@ var __esbuild_esm_mermaid = (() => { defineSymbol(math, main, inner, "\u22EF", "\\@cdots", true); defineSymbol(math, main, inner, "\u22F1", "\\ddots", true); defineSymbol(math, main, textord, "\u22EE", "\\varvdots"); + defineSymbol(text2, main, textord, "\u22EE", "\\varvdots"); defineSymbol(math, main, accent, "\u02CA", "\\acute"); defineSymbol(math, main, accent, "\u02CB", "\\grave"); defineSymbol(math, main, accent, "\xA8", "\\ddot"); @@ -12280,17 +10603,17 @@ var __esbuild_esm_mermaid = (() => { ]; wideCharacterFont = /* @__PURE__ */ __name(function wideCharacterFont2(wideChar2, mode) { var H2 = wideChar2.charCodeAt(0); - var L2 = wideChar2.charCodeAt(1); - var codePoint = (H2 - 55296) * 1024 + (L2 - 56320) + 65536; - var j2 = mode === "math" ? 0 : 1; + var L3 = wideChar2.charCodeAt(1); + var codePoint = (H2 - 55296) * 1024 + (L3 - 56320) + 65536; + var j3 = mode === "math" ? 0 : 1; if (119808 <= codePoint && codePoint < 120484) { var i2 = Math.floor((codePoint - 119808) / 26); - return [wideLatinLetterData[i2][2], wideLatinLetterData[i2][j2]]; + return [wideLatinLetterData[i2][2], wideLatinLetterData[i2][j3]]; } else if (120782 <= codePoint && codePoint <= 120831) { var _i = Math.floor((codePoint - 120782) / 10); - return [wideNumeralData[_i][2], wideNumeralData[_i][j2]]; + return [wideNumeralData[_i][2], wideNumeralData[_i][j3]]; } else if (codePoint === 120485 || codePoint === 120486) { - return [wideLatinLetterData[0][2], wideLatinLetterData[0][j2]]; + return [wideLatinLetterData[0][2], wideLatinLetterData[0][j3]]; } else if (120486 < codePoint && codePoint < 120782) { return ["", ""]; } else { @@ -12306,14 +10629,14 @@ var __esbuild_esm_mermaid = (() => { metrics: getCharacterMetrics(value2, fontName, mode) }; }, "lookupSymbol"); - makeSymbol = /* @__PURE__ */ __name(function makeSymbol2(value2, fontName, mode, options3, classes3) { + makeSymbol = /* @__PURE__ */ __name(function makeSymbol2(value2, fontName, mode, options2, classes3) { var lookup2 = lookupSymbol(value2, fontName, mode); var metrics = lookup2.metrics; value2 = lookup2.value; var symbolNode; if (metrics) { var italic = metrics.italic; - if (mode === "text" || options3 && options3.font === "mathit") { + if (mode === "text" || options2 && options2.font === "mathit") { italic = 0; } symbolNode = new SymbolNode(value2, metrics.height, metrics.depth, italic, metrics.skew, metrics.width, classes3); @@ -12321,31 +10644,31 @@ var __esbuild_esm_mermaid = (() => { typeof console !== "undefined" && console.warn("No character metrics " + ("for '" + value2 + "' in style '" + fontName + "' and mode '" + mode + "'")); symbolNode = new SymbolNode(value2, 0, 0, 0, 0, 0, classes3); } - if (options3) { - symbolNode.maxFontSize = options3.sizeMultiplier; - if (options3.style.isTight()) { + if (options2) { + symbolNode.maxFontSize = options2.sizeMultiplier; + if (options2.style.isTight()) { symbolNode.classes.push("mtight"); } - var color2 = options3.getColor(); + var color2 = options2.getColor(); if (color2) { symbolNode.style.color = color2; } } return symbolNode; }, "makeSymbol"); - mathsym = /* @__PURE__ */ __name(function mathsym2(value2, mode, options3, classes3) { + mathsym = /* @__PURE__ */ __name(function mathsym2(value2, mode, options2, classes3) { if (classes3 === void 0) { classes3 = []; } - if (options3.font === "boldsymbol" && lookupSymbol(value2, "Main-Bold", mode).metrics) { - return makeSymbol(value2, "Main-Bold", mode, options3, classes3.concat(["mathbf"])); + if (options2.font === "boldsymbol" && lookupSymbol(value2, "Main-Bold", mode).metrics) { + return makeSymbol(value2, "Main-Bold", mode, options2, classes3.concat(["mathbf"])); } else if (value2 === "\\" || symbols[mode][value2].font === "main") { - return makeSymbol(value2, "Main-Regular", mode, options3, classes3); + return makeSymbol(value2, "Main-Regular", mode, options2, classes3); } else { - return makeSymbol(value2, "AMS-Regular", mode, options3, classes3.concat(["amsrm"])); + return makeSymbol(value2, "AMS-Regular", mode, options2, classes3.concat(["amsrm"])); } }, "mathsym"); - boldsymbol = /* @__PURE__ */ __name(function boldsymbol2(value2, mode, options3, classes3, type3) { + boldsymbol = /* @__PURE__ */ __name(function boldsymbol2(value2, mode, options2, classes3, type3) { if (type3 !== "textord" && lookupSymbol(value2, "Math-BoldItalic", mode).metrics) { return { fontName: "Math-BoldItalic", @@ -12358,56 +10681,56 @@ var __esbuild_esm_mermaid = (() => { }; } }, "boldsymbol"); - makeOrd = /* @__PURE__ */ __name(function makeOrd2(group2, options3, type3) { + makeOrd = /* @__PURE__ */ __name(function makeOrd2(group2, options2, type3) { var mode = group2.mode; var text4 = group2.text; var classes3 = ["mord"]; - var isFont = mode === "math" || mode === "text" && options3.font; - var fontOrFamily = isFont ? options3.font : options3.fontFamily; + var isFont = mode === "math" || mode === "text" && options2.font; + var fontOrFamily = isFont ? options2.font : options2.fontFamily; var wideFontName = ""; var wideFontClass = ""; if (text4.charCodeAt(0) === 55349) { [wideFontName, wideFontClass] = wideCharacterFont(text4, mode); } if (wideFontName.length > 0) { - return makeSymbol(text4, wideFontName, mode, options3, classes3.concat(wideFontClass)); + return makeSymbol(text4, wideFontName, mode, options2, classes3.concat(wideFontClass)); } else if (fontOrFamily) { var fontName; var fontClasses; if (fontOrFamily === "boldsymbol") { - var fontData = boldsymbol(text4, mode, options3, classes3, type3); + var fontData = boldsymbol(text4, mode, options2, classes3, type3); fontName = fontData.fontName; fontClasses = [fontData.fontClass]; } else if (isFont) { fontName = fontMap[fontOrFamily].fontName; fontClasses = [fontOrFamily]; } else { - fontName = retrieveTextFontName(fontOrFamily, options3.fontWeight, options3.fontShape); - fontClasses = [fontOrFamily, options3.fontWeight, options3.fontShape]; + fontName = retrieveTextFontName(fontOrFamily, options2.fontWeight, options2.fontShape); + fontClasses = [fontOrFamily, options2.fontWeight, options2.fontShape]; } if (lookupSymbol(text4, fontName, mode).metrics) { - return makeSymbol(text4, fontName, mode, options3, classes3.concat(fontClasses)); + return makeSymbol(text4, fontName, mode, options2, classes3.concat(fontClasses)); } else if (ligatures.hasOwnProperty(text4) && fontName.slice(0, 10) === "Typewriter") { var parts = []; for (var i2 = 0; i2 < text4.length; i2++) { - parts.push(makeSymbol(text4[i2], fontName, mode, options3, classes3.concat(fontClasses))); + parts.push(makeSymbol(text4[i2], fontName, mode, options2, classes3.concat(fontClasses))); } return makeFragment(parts); } } if (type3 === "mathord") { - return makeSymbol(text4, "Math-Italic", mode, options3, classes3.concat(["mathnormal"])); + return makeSymbol(text4, "Math-Italic", mode, options2, classes3.concat(["mathnormal"])); } else if (type3 === "textord") { var font = symbols[mode][text4] && symbols[mode][text4].font; if (font === "ams") { - var _fontName = retrieveTextFontName("amsrm", options3.fontWeight, options3.fontShape); - return makeSymbol(text4, _fontName, mode, options3, classes3.concat("amsrm", options3.fontWeight, options3.fontShape)); + var _fontName = retrieveTextFontName("amsrm", options2.fontWeight, options2.fontShape); + return makeSymbol(text4, _fontName, mode, options2, classes3.concat("amsrm", options2.fontWeight, options2.fontShape)); } else if (font === "main" || !font) { - var _fontName2 = retrieveTextFontName("textrm", options3.fontWeight, options3.fontShape); - return makeSymbol(text4, _fontName2, mode, options3, classes3.concat(options3.fontWeight, options3.fontShape)); + var _fontName2 = retrieveTextFontName("textrm", options2.fontWeight, options2.fontShape); + return makeSymbol(text4, _fontName2, mode, options2, classes3.concat(options2.fontWeight, options2.fontShape)); } else { - var _fontName3 = retrieveTextFontName(font, options3.fontWeight, options3.fontShape); - return makeSymbol(text4, _fontName3, mode, options3, classes3.concat(_fontName3, options3.fontWeight, options3.fontShape)); + var _fontName3 = retrieveTextFontName(font, options2.fontWeight, options2.fontShape); + return makeSymbol(text4, _fontName3, mode, options2, classes3.concat(_fontName3, options2.fontWeight, options2.fontShape)); } } else { throw new Error("unexpected type: " + type3 + " in makeOrd"); @@ -12470,21 +10793,21 @@ var __esbuild_esm_mermaid = (() => { elem.depth = depth; elem.maxFontSize = maxFontSize; }, "sizeElementFromChildren"); - makeSpan$2 = /* @__PURE__ */ __name(function makeSpan(classes3, children2, options3, style3) { - var span = new Span(classes3, children2, options3, style3); + makeSpan$2 = /* @__PURE__ */ __name(function makeSpan(classes3, children2, options2, style3) { + var span = new Span(classes3, children2, options2, style3); sizeElementFromChildren(span); return span; }, "makeSpan"); - makeSvgSpan = /* @__PURE__ */ __name((classes3, children2, options3, style3) => new Span(classes3, children2, options3, style3), "makeSvgSpan"); - makeLineSpan = /* @__PURE__ */ __name(function makeLineSpan2(className, options3, thickness) { - var line2 = makeSpan$2([className], [], options3); - line2.height = Math.max(thickness || options3.fontMetrics().defaultRuleThickness, options3.minRuleThickness); + makeSvgSpan = /* @__PURE__ */ __name((classes3, children2, options2, style3) => new Span(classes3, children2, options2, style3), "makeSvgSpan"); + makeLineSpan = /* @__PURE__ */ __name(function makeLineSpan2(className, options2, thickness) { + var line2 = makeSpan$2([className], [], options2); + line2.height = Math.max(thickness || options2.fontMetrics().defaultRuleThickness, options2.minRuleThickness); line2.style.borderBottomWidth = makeEm(line2.height); line2.maxFontSize = 1; return line2; }, "makeLineSpan"); - makeAnchor = /* @__PURE__ */ __name(function makeAnchor2(href, classes3, children2, options3) { - var anchor2 = new Anchor(href, classes3, children2, options3); + makeAnchor = /* @__PURE__ */ __name(function makeAnchor2(href, classes3, children2, options2) { + var anchor2 = new Anchor(href, classes3, children2, options2); sizeElementFromChildren(anchor2); return anchor2; }, "makeAnchor"); @@ -12493,9 +10816,9 @@ var __esbuild_esm_mermaid = (() => { sizeElementFromChildren(fragment); return fragment; }, "makeFragment"); - wrapFragment = /* @__PURE__ */ __name(function wrapFragment2(group2, options3) { + wrapFragment = /* @__PURE__ */ __name(function wrapFragment2(group2, options2) { if (group2 instanceof DocumentFragment) { - return makeSpan$2([], [group2], options3); + return makeSpan$2([], [group2], options2); } return group2; }, "wrapFragment"); @@ -12507,11 +10830,11 @@ var __esbuild_esm_mermaid = (() => { var currPos = _depth; for (var i2 = 1; i2 < oldChildren.length; i2++) { var diff2 = -oldChildren[i2].shift - currPos - oldChildren[i2].elem.depth; - var size5 = diff2 - (oldChildren[i2 - 1].elem.height + oldChildren[i2 - 1].elem.depth); + var size4 = diff2 - (oldChildren[i2 - 1].elem.height + oldChildren[i2 - 1].elem.depth); currPos = currPos + diff2; children2.push({ type: "kern", - size: size5 + size: size4 }); children2.push(oldChildren[i2]); } @@ -12548,7 +10871,7 @@ var __esbuild_esm_mermaid = (() => { depth }; }, "getVListChildrenAndDepth"); - makeVList = /* @__PURE__ */ __name(function makeVList2(params, options3) { + makeVList = /* @__PURE__ */ __name(function makeVList2(params, options2) { var { children: children2, depth @@ -12610,10 +10933,10 @@ var __esbuild_esm_mermaid = (() => { vtable.depth = -minPos; return vtable; }, "makeVList"); - makeGlue = /* @__PURE__ */ __name((measurement, options3) => { - var rule = makeSpan$2(["mspace"], [], options3); - var size5 = calculateSize2(measurement, options3); - rule.style.marginRight = makeEm(size5); + makeGlue = /* @__PURE__ */ __name((measurement, options2) => { + var rule = makeSpan$2(["mspace"], [], options2); + var size4 = calculateSize2(measurement, options2); + rule.style.marginRight = makeEm(size4); return rule; }, "makeGlue"); retrieveTextFontName = /* @__PURE__ */ __name(function retrieveTextFontName2(fontFamily, fontWeight, fontShape) { @@ -12668,6 +10991,10 @@ var __esbuild_esm_mermaid = (() => { variant: "italic", fontName: "Math-Italic" }, + "mathsfit": { + variant: "sans-serif-italic", + fontName: "SansSerif-Italic" + }, // "boldsymbol" is missing because they require the use of multiple fonts: // Math-BoldItalic and Main-Bold. This is handled by a special case in // makeOrd which ends up calling boldsymbol. @@ -12707,7 +11034,7 @@ var __esbuild_esm_mermaid = (() => { oiiintSize1: ["oiiintSize1", 1.304, 0.499], oiiintSize2: ["oiiintSize2", 1.98, 0.659] }; - staticSvg = /* @__PURE__ */ __name(function staticSvg2(value2, options3) { + staticSvg = /* @__PURE__ */ __name(function staticSvg2(value2, options2) { var [pathName, width3, height2] = svgData[value2]; var path4 = new PathNode(pathName); var svgNode2 = new SvgNode([path4], { @@ -12718,7 +11045,7 @@ var __esbuild_esm_mermaid = (() => { "viewBox": "0 0 " + 1e3 * width3 + " " + 1e3 * height2, "preserveAspectRatio": "xMinYMin" }); - var span = makeSvgSpan(["overlay"], [svgNode2], options3); + var span = makeSvgSpan(["overlay"], [svgNode2], options2); span.height = height2; span.style.height = makeEm(height2); span.style.width = makeEm(width3); @@ -12853,13 +11180,13 @@ var __esbuild_esm_mermaid = (() => { mpunct: "mpunct", minner: "minner" }; - buildExpression$1 = /* @__PURE__ */ __name(function buildExpression(expression, options3, isRealGroup, surrounding) { + buildExpression$1 = /* @__PURE__ */ __name(function buildExpression(expression, options2, isRealGroup, surrounding) { if (surrounding === void 0) { surrounding = [null, null]; } var groups = []; for (var i2 = 0; i2 < expression.length; i2++) { - var output2 = buildGroup$1(expression[i2], options3); + var output2 = buildGroup$1(expression[i2], options2); if (output2 instanceof DocumentFragment) { var children2 = output2.children; groups.push(...children2); @@ -12871,17 +11198,17 @@ var __esbuild_esm_mermaid = (() => { if (!isRealGroup) { return groups; } - var glueOptions = options3; + var glueOptions = options2; if (expression.length === 1) { var node2 = expression[0]; if (node2.type === "sizing") { - glueOptions = options3.havingSize(node2.size); + glueOptions = options2.havingSize(node2.size); } else if (node2.type === "styling") { - glueOptions = options3.havingStyle(styleMap$1[node2.style]); + glueOptions = options2.havingStyle(styleMap$1[node2.style]); } } - var dummyPrev = makeSpan$1([surrounding[0] || "leftmost"], [], options3); - var dummyNext = makeSpan$1([surrounding[1] || "rightmost"], [], options3); + var dummyPrev = makeSpan$1([surrounding[0] || "leftmost"], [], options2); + var dummyNext = makeSpan$1([surrounding[1] || "rightmost"], [], options2); var isRoot = isRealGroup === "root"; traverseNonSpaceNodes(groups, (node3, prev2) => { var prevType = prev2.classes[0]; @@ -12906,13 +11233,13 @@ var __esbuild_esm_mermaid = (() => { }, dummyNext, isRoot); return groups; }, "buildExpression"); - traverseNonSpaceNodes = /* @__PURE__ */ __name(function traverseNonSpaceNodes2(nodes6, callback, prev2, next3, isRoot) { + traverseNonSpaceNodes = /* @__PURE__ */ __name(function traverseNonSpaceNodes2(nodes5, callback, prev2, next3, isRoot) { if (next3) { - nodes6.push(next3); + nodes5.push(next3); } var i2 = 0; - for (; i2 < nodes6.length; i2++) { - var node2 = nodes6[i2]; + for (; i2 < nodes5.length; i2++) { + var node2 = nodes5[i2]; var partialGroup = checkPartialGroup(node2); if (partialGroup) { traverseNonSpaceNodes2(partialGroup.children, callback, prev2, null, isRoot); @@ -12925,7 +11252,7 @@ var __esbuild_esm_mermaid = (() => { if (prev2.insertAfter) { prev2.insertAfter(result); } else { - nodes6.unshift(result); + nodes5.unshift(result); i2++; } } @@ -12936,12 +11263,12 @@ var __esbuild_esm_mermaid = (() => { prev2.node = makeSpan$1(["leftmost"]); } prev2.insertAfter = /* @__PURE__ */ ((index) => (n2) => { - nodes6.splice(index + 1, 0, n2); + nodes5.splice(index + 1, 0, n2); i2++; })(i2); } if (next3) { - nodes6.pop(); + nodes5.pop(); } }, "traverseNonSpaceNodes"); checkPartialGroup = /* @__PURE__ */ __name(function checkPartialGroup2(node2) { @@ -12973,19 +11300,19 @@ var __esbuild_esm_mermaid = (() => { } return DomEnum[node2.classes[0]] || null; }, "getTypeOfDomTree"); - makeNullDelimiter = /* @__PURE__ */ __name(function makeNullDelimiter2(options3, classes3) { - var moreClasses = ["nulldelimiter"].concat(options3.baseSizingClasses()); + makeNullDelimiter = /* @__PURE__ */ __name(function makeNullDelimiter2(options2, classes3) { + var moreClasses = ["nulldelimiter"].concat(options2.baseSizingClasses()); return makeSpan$1(classes3.concat(moreClasses)); }, "makeNullDelimiter"); - buildGroup$1 = /* @__PURE__ */ __name(function buildGroup(group2, options3, baseOptions) { + buildGroup$1 = /* @__PURE__ */ __name(function buildGroup(group2, options2, baseOptions) { if (!group2) { return makeSpan$1(); } if (_htmlGroupBuilders[group2.type]) { - var groupNode = _htmlGroupBuilders[group2.type](group2, options3); - if (baseOptions && options3.size !== baseOptions.size) { - groupNode = makeSpan$1(options3.sizingClasses(baseOptions), [groupNode], options3); - var multiplier = options3.sizeMultiplier / baseOptions.sizeMultiplier; + var groupNode = _htmlGroupBuilders[group2.type](group2, options2); + if (baseOptions && options2.size !== baseOptions.size) { + groupNode = makeSpan$1(options2.sizingClasses(baseOptions), [groupNode], options2); + var multiplier = options2.sizeMultiplier / baseOptions.sizeMultiplier; groupNode.height *= multiplier; groupNode.depth *= multiplier; } @@ -13038,7 +11365,15 @@ var __esbuild_esm_mermaid = (() => { node2.className = createClass(this.classes); } for (var i2 = 0; i2 < this.children.length; i2++) { - node2.appendChild(this.children[i2].toNode()); + if (this.children[i2] instanceof TextNode && this.children[i2 + 1] instanceof TextNode) { + var text4 = this.children[i2].toText() + this.children[++i2].toText(); + while (this.children[i2 + 1] instanceof TextNode) { + text4 += this.children[++i2].toText(); + } + node2.appendChild(new TextNode(text4).toNode()); + } else { + node2.appendChild(this.children[i2].toNode()); + } } return node2; } @@ -13170,8 +11505,8 @@ var __esbuild_esm_mermaid = (() => { SpaceNode, newDocumentFragment }; - makeText = /* @__PURE__ */ __name(function makeText2(text4, mode, options3) { - if (symbols[mode][text4] && symbols[mode][text4].replace && text4.charCodeAt(0) !== 55349 && !(ligatures.hasOwnProperty(text4) && options3 && (options3.fontFamily && options3.fontFamily.slice(4, 6) === "tt" || options3.font && options3.font.slice(4, 6) === "tt"))) { + makeText = /* @__PURE__ */ __name(function makeText2(text4, mode, options2) { + if (symbols[mode][text4] && symbols[mode][text4].replace && text4.charCodeAt(0) !== 55349 && !(ligatures.hasOwnProperty(text4) && options2 && (options2.fontFamily && options2.fontFamily.slice(4, 6) === "tt" || options2.font && options2.font.slice(4, 6) === "tt"))) { text4 = symbols[mode][text4].replace; } return new mathMLTree.TextNode(text4); @@ -13183,27 +11518,27 @@ var __esbuild_esm_mermaid = (() => { return new mathMLTree.MathNode("mrow", body); } }, "makeRow"); - getVariant = /* @__PURE__ */ __name(function getVariant2(group2, options3) { - if (options3.fontFamily === "texttt") { + getVariant = /* @__PURE__ */ __name(function getVariant2(group2, options2) { + if (options2.fontFamily === "texttt") { return "monospace"; - } else if (options3.fontFamily === "textsf") { - if (options3.fontShape === "textit" && options3.fontWeight === "textbf") { + } else if (options2.fontFamily === "textsf") { + if (options2.fontShape === "textit" && options2.fontWeight === "textbf") { return "sans-serif-bold-italic"; - } else if (options3.fontShape === "textit") { + } else if (options2.fontShape === "textit") { return "sans-serif-italic"; - } else if (options3.fontWeight === "textbf") { + } else if (options2.fontWeight === "textbf") { return "bold-sans-serif"; } else { return "sans-serif"; } - } else if (options3.fontShape === "textit" && options3.fontWeight === "textbf") { + } else if (options2.fontShape === "textit" && options2.fontWeight === "textbf") { return "bold-italic"; - } else if (options3.fontShape === "textit") { + } else if (options2.fontShape === "textit") { return "italic"; - } else if (options3.fontWeight === "textbf") { + } else if (options2.fontWeight === "textbf") { return "bold"; } - var font = options3.font; + var font = options2.font; if (!font || font === "mathnormal") { return null; } @@ -13216,6 +11551,8 @@ var __esbuild_esm_mermaid = (() => { return "bold"; } else if (font === "mathbb") { return "double-struck"; + } else if (font === "mathsfit") { + return "sans-serif-italic"; } else if (font === "mathfrak") { return "fraktur"; } else if (font === "mathscr" || font === "mathcal") { @@ -13238,9 +11575,10 @@ var __esbuild_esm_mermaid = (() => { } return null; }, "getVariant"); - buildExpression2 = /* @__PURE__ */ __name(function buildExpression3(expression, options3, isOrdgroup) { + __name(isNumberPunctuation, "isNumberPunctuation"); + buildExpression2 = /* @__PURE__ */ __name(function buildExpression3(expression, options2, isOrdgroup) { if (expression.length === 1) { - var group2 = buildGroup2(expression[0], options3); + var group2 = buildGroup2(expression[0], options2); if (isOrdgroup && group2 instanceof MathNode && group2.type === "mo") { group2.setAttribute("lspace", "0em"); group2.setAttribute("rspace", "0em"); @@ -13250,7 +11588,7 @@ var __esbuild_esm_mermaid = (() => { var groups = []; var lastGroup; for (var i2 = 0; i2 < expression.length; i2++) { - var _group = buildGroup2(expression[i2], options3); + var _group = buildGroup2(expression[i2], options2); if (_group instanceof MathNode && lastGroup instanceof MathNode) { if (_group.type === "mtext" && lastGroup.type === "mtext" && _group.getAttribute("mathvariant") === lastGroup.getAttribute("mathvariant")) { lastGroup.children.push(..._group.children); @@ -13258,18 +11596,24 @@ var __esbuild_esm_mermaid = (() => { } else if (_group.type === "mn" && lastGroup.type === "mn") { lastGroup.children.push(..._group.children); continue; - } else if (_group.type === "mi" && _group.children.length === 1 && lastGroup.type === "mn") { - var child = _group.children[0]; - if (child instanceof TextNode && child.text === ".") { - lastGroup.children.push(..._group.children); - continue; + } else if (isNumberPunctuation(_group) && lastGroup.type === "mn") { + lastGroup.children.push(..._group.children); + continue; + } else if (_group.type === "mn" && isNumberPunctuation(lastGroup)) { + _group.children = [...lastGroup.children, ..._group.children]; + groups.pop(); + } else if ((_group.type === "msup" || _group.type === "msub") && _group.children.length >= 1 && (lastGroup.type === "mn" || isNumberPunctuation(lastGroup))) { + var base = _group.children[0]; + if (base instanceof MathNode && base.type === "mn") { + base.children = [...lastGroup.children, ...base.children]; + groups.pop(); } } else if (lastGroup.type === "mi" && lastGroup.children.length === 1) { var lastChild = lastGroup.children[0]; if (lastChild instanceof TextNode && lastChild.text === "\u0338" && (_group.type === "mo" || _group.type === "mi" || _group.type === "mn")) { - var _child = _group.children[0]; - if (_child instanceof TextNode && _child.text.length > 0) { - _child.text = _child.text.slice(0, 1) + "\u0338" + _child.text.slice(1); + var child = _group.children[0]; + if (child instanceof TextNode && child.text.length > 0) { + child.text = child.text.slice(0, 1) + "\u0338" + child.text.slice(1); groups.pop(); } } @@ -13280,15 +11624,15 @@ var __esbuild_esm_mermaid = (() => { } return groups; }, "buildExpression"); - buildExpressionRow = /* @__PURE__ */ __name(function buildExpressionRow2(expression, options3, isOrdgroup) { - return makeRow(buildExpression2(expression, options3, isOrdgroup)); + buildExpressionRow = /* @__PURE__ */ __name(function buildExpressionRow2(expression, options2, isOrdgroup) { + return makeRow(buildExpression2(expression, options2, isOrdgroup)); }, "buildExpressionRow"); - buildGroup2 = /* @__PURE__ */ __name(function buildGroup3(group2, options3) { + buildGroup2 = /* @__PURE__ */ __name(function buildGroup3(group2, options2) { if (!group2) { return new mathMLTree.MathNode("mrow"); } if (_mathmlGroupBuilders[group2.type]) { - var result = _mathmlGroupBuilders[group2.type](group2, options3); + var result = _mathmlGroupBuilders[group2.type](group2, options2); return result; } else { throw new ParseError("Got group of unknown type: '" + group2.type + "'"); @@ -13316,23 +11660,23 @@ var __esbuild_esm_mermaid = (() => { return node2; }, "displayWrap"); buildTree = /* @__PURE__ */ __name(function buildTree2(tree, expression, settings) { - var options3 = optionsFromSettings(settings); + var options2 = optionsFromSettings(settings); var katexNode; if (settings.output === "mathml") { - return buildMathML(tree, expression, options3, settings.displayMode, true); + return buildMathML(tree, expression, options2, settings.displayMode, true); } else if (settings.output === "html") { - var htmlNode = buildHTML(tree, options3); + var htmlNode = buildHTML(tree, options2); katexNode = buildCommon.makeSpan(["katex"], [htmlNode]); } else { - var mathMLNode = buildMathML(tree, expression, options3, settings.displayMode, false); - var _htmlNode = buildHTML(tree, options3); + var mathMLNode = buildMathML(tree, expression, options2, settings.displayMode, false); + var _htmlNode = buildHTML(tree, options2); katexNode = buildCommon.makeSpan(["katex"], [mathMLNode, _htmlNode]); } return displayWrap(katexNode, settings); }, "buildTree"); buildHTMLTree = /* @__PURE__ */ __name(function buildHTMLTree2(tree, expression, settings) { - var options3 = optionsFromSettings(settings); - var htmlNode = buildHTML(tree, options3); + var options2 = optionsFromSettings(settings); + var htmlNode = buildHTML(tree, options2); var katexNode = buildCommon.makeSpan(["katex"], [htmlNode]); return displayWrap(katexNode, settings); }, "buildHTMLTree"); @@ -13442,7 +11786,7 @@ var __esbuild_esm_mermaid = (() => { return 1; } }, "groupLength"); - svgSpan = /* @__PURE__ */ __name(function svgSpan2(group2, options3) { + svgSpan = /* @__PURE__ */ __name(function svgSpan2(group2, options2) { function buildSvgSpan_() { var viewBoxWidth = 4e5; var label = group2.label.slice(1); @@ -13486,20 +11830,20 @@ var __esbuild_esm_mermaid = (() => { "preserveAspectRatio": "none" }); return { - span: buildCommon.makeSvgSpan([], [svgNode2], options3), + span: buildCommon.makeSvgSpan([], [svgNode2], options2), minWidth: 0, height: _height }; } else { var spans = []; - var data6 = katexImagesData[label]; - var [paths, _minWidth, _viewBoxHeight] = data6; + var data5 = katexImagesData[label]; + var [paths, _minWidth, _viewBoxHeight] = data5; var _height2 = _viewBoxHeight / 1e3; var numSvgChildren = paths.length; var widthClasses; var aligns; if (numSvgChildren === 1) { - var align1 = data6[3]; + var align1 = data5[3]; widthClasses = ["hide-tail"]; aligns = [align1]; } else if (numSvgChildren === 2) { @@ -13519,7 +11863,7 @@ var __esbuild_esm_mermaid = (() => { "viewBox": "0 0 " + viewBoxWidth + " " + _viewBoxHeight, "preserveAspectRatio": aligns[i2] + " slice" }); - var _span = buildCommon.makeSvgSpan([widthClasses[i2]], [_svgNode], options3); + var _span = buildCommon.makeSvgSpan([widthClasses[i2]], [_svgNode], options2); if (numSvgChildren === 1) { return { span: _span, @@ -13532,7 +11876,7 @@ var __esbuild_esm_mermaid = (() => { } } return { - span: buildCommon.makeSpan(["stretchy"], spans, options3), + span: buildCommon.makeSpan(["stretchy"], spans, options2), minWidth: _minWidth, height: _height2 }; @@ -13551,13 +11895,13 @@ var __esbuild_esm_mermaid = (() => { } return span; }, "svgSpan"); - encloseSpan = /* @__PURE__ */ __name(function encloseSpan2(inner2, label, topPad, bottomPad, options3) { + encloseSpan = /* @__PURE__ */ __name(function encloseSpan2(inner2, label, topPad, bottomPad, options2) { var img; var totalHeight = inner2.height + inner2.depth + topPad + bottomPad; if (/fbox|color|angl/.test(label)) { - img = buildCommon.makeSpan(["stretchy", label], [], options3); + img = buildCommon.makeSpan(["stretchy", label], [], options2); if (label === "fbox") { - var color2 = options3.color && options3.getColor(); + var color2 = options2.color && options2.getColor(); if (color2) { img.style.borderColor = color2; } @@ -13586,7 +11930,7 @@ var __esbuild_esm_mermaid = (() => { "width": "100%", "height": makeEm(totalHeight) }); - img = buildCommon.makeSvgSpan([], [svgNode2], options3); + img = buildCommon.makeSvgSpan([], [svgNode2], options2); } img.height = totalHeight; img.style.height = makeEm(totalHeight); @@ -13600,7 +11944,7 @@ var __esbuild_esm_mermaid = (() => { __name(assertNodeType, "assertNodeType"); __name(assertSymbolNodeType, "assertSymbolNodeType"); __name(checkSymbolNodeType, "checkSymbolNodeType"); - htmlBuilder$a = /* @__PURE__ */ __name((grp, options3) => { + htmlBuilder$a = /* @__PURE__ */ __name((grp, options2) => { var base; var group2; var supSubGroup; @@ -13608,34 +11952,34 @@ var __esbuild_esm_mermaid = (() => { group2 = assertNodeType(grp.base, "accent"); base = group2.base; grp.base = base; - supSubGroup = assertSpan(buildGroup$1(grp, options3)); + supSubGroup = assertSpan(buildGroup$1(grp, options2)); grp.base = group2; } else { group2 = assertNodeType(grp, "accent"); base = group2.base; } - var body = buildGroup$1(base, options3.havingCrampedStyle()); + var body = buildGroup$1(base, options2.havingCrampedStyle()); var mustShift = group2.isShifty && utils.isCharacterBox(base); var skew = 0; if (mustShift) { var baseChar = utils.getBaseElem(base); - var baseGroup = buildGroup$1(baseChar, options3.havingCrampedStyle()); + var baseGroup = buildGroup$1(baseChar, options2.havingCrampedStyle()); skew = assertSymbolDomNode(baseGroup).skew; } var accentBelow = group2.label === "\\c"; - var clearance = accentBelow ? body.height + body.depth : Math.min(body.height, options3.fontMetrics().xHeight); + var clearance = accentBelow ? body.height + body.depth : Math.min(body.height, options2.fontMetrics().xHeight); var accentBody; if (!group2.isStretchy) { var accent2; var width3; if (group2.label === "\\vec") { - accent2 = buildCommon.staticSvg("vec", options3); + accent2 = buildCommon.staticSvg("vec", options2); width3 = buildCommon.svgData.vec[1]; } else { accent2 = buildCommon.makeOrd({ mode: group2.mode, text: group2.label - }, options3, "textord"); + }, options2, "textord"); accent2 = assertSymbolDomNode(accent2); accent2.italic = 0; width3 = accent2.width; @@ -13669,9 +12013,9 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: accentBody }] - }, options3); + }, options2); } else { - accentBody = stretchy.svgSpan(group2, options3); + accentBody = stretchy.svgSpan(group2, options2); accentBody = buildCommon.makeVList({ positionType: "firstBaseline", children: [{ @@ -13686,9 +12030,9 @@ var __esbuild_esm_mermaid = (() => { marginLeft: makeEm(2 * skew) } : void 0 }] - }, options3); + }, options2); } - var accentWrap = buildCommon.makeSpan(["mord", "accent"], [accentBody], options3); + var accentWrap = buildCommon.makeSpan(["mord", "accent"], [accentBody], options2); if (supSubGroup) { supSubGroup.children[0] = accentWrap; supSubGroup.height = Math.max(accentWrap.height, supSubGroup.height); @@ -13698,9 +12042,9 @@ var __esbuild_esm_mermaid = (() => { return accentWrap; } }, "htmlBuilder$a"); - mathmlBuilder$9 = /* @__PURE__ */ __name((group2, options3) => { + mathmlBuilder$9 = /* @__PURE__ */ __name((group2, options2) => { var accentNode = group2.isStretchy ? stretchy.mathMLnode(group2.label) : new mathMLTree.MathNode("mo", [makeText(group2.label, group2.mode)]); - var node2 = new mathMLTree.MathNode("mover", [buildGroup2(group2.base, options3), accentNode]); + var node2 = new mathMLTree.MathNode("mover", [buildGroup2(group2.base, options2), accentNode]); node2.setAttribute("accent", "true"); return node2; }, "mathmlBuilder$9"); @@ -13775,9 +12119,9 @@ var __esbuild_esm_mermaid = (() => { base }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var innerGroup = buildGroup$1(group2.base, options3); - var accentBody = stretchy.svgSpan(group2, options3); + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var innerGroup = buildGroup$1(group2.base, options2); + var accentBody = stretchy.svgSpan(group2, options2); var kern = group2.label === "\\utilde" ? 0.12 : 0; var vlist = buildCommon.makeVList({ positionType: "top", @@ -13793,12 +12137,12 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: innerGroup }] - }, options3); - return buildCommon.makeSpan(["mord", "accentunder"], [vlist], options3); + }, options2); + return buildCommon.makeSpan(["mord", "accentunder"], [vlist], options2); }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { var accentNode = stretchy.mathMLnode(group2.label); - var node2 = new mathMLTree.MathNode("munder", [buildGroup2(group2.base, options3), accentNode]); + var node2 = new mathMLTree.MathNode("munder", [buildGroup2(group2.base, options2), accentNode]); node2.setAttribute("accentunder", "true"); return node2; }, "mathmlBuilder") @@ -13860,27 +12204,27 @@ var __esbuild_esm_mermaid = (() => { }, // Flow is unable to correctly infer the type of `group`, even though it's // unambiguously determined from the passed-in `type` above. - htmlBuilder(group2, options3) { - var style3 = options3.style; - var newOptions = options3.havingStyle(style3.sup()); - var upperGroup = buildCommon.wrapFragment(buildGroup$1(group2.body, newOptions, options3), options3); + htmlBuilder(group2, options2) { + var style3 = options2.style; + var newOptions = options2.havingStyle(style3.sup()); + var upperGroup = buildCommon.wrapFragment(buildGroup$1(group2.body, newOptions, options2), options2); var arrowPrefix = group2.label.slice(0, 2) === "\\x" ? "x" : "cd"; upperGroup.classes.push(arrowPrefix + "-arrow-pad"); var lowerGroup; if (group2.below) { - newOptions = options3.havingStyle(style3.sub()); - lowerGroup = buildCommon.wrapFragment(buildGroup$1(group2.below, newOptions, options3), options3); + newOptions = options2.havingStyle(style3.sub()); + lowerGroup = buildCommon.wrapFragment(buildGroup$1(group2.below, newOptions, options2), options2); lowerGroup.classes.push(arrowPrefix + "-arrow-pad"); } - var arrowBody = stretchy.svgSpan(group2, options3); - var arrowShift = -options3.fontMetrics().axisHeight + 0.5 * arrowBody.height; - var upperShift = -options3.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111; + var arrowBody = stretchy.svgSpan(group2, options2); + var arrowShift = -options2.fontMetrics().axisHeight + 0.5 * arrowBody.height; + var upperShift = -options2.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111; if (upperGroup.depth > 0.25 || group2.label === "\\xleftequilibrium") { upperShift -= upperGroup.depth; } var vlist; if (lowerGroup) { - var lowerShift = -options3.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111; + var lowerShift = -options2.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111; vlist = buildCommon.makeVList({ positionType: "individualShift", children: [{ @@ -13896,7 +12240,7 @@ var __esbuild_esm_mermaid = (() => { elem: lowerGroup, shift: lowerShift }] - }, options3); + }, options2); } else { vlist = buildCommon.makeVList({ positionType: "individualShift", @@ -13909,25 +12253,25 @@ var __esbuild_esm_mermaid = (() => { elem: arrowBody, shift: arrowShift }] - }, options3); + }, options2); } vlist.children[0].children[0].children[1].classes.push("svg-align"); - return buildCommon.makeSpan(["mrel", "x-arrow"], [vlist], options3); + return buildCommon.makeSpan(["mrel", "x-arrow"], [vlist], options2); }, - mathmlBuilder(group2, options3) { + mathmlBuilder(group2, options2) { var arrowNode = stretchy.mathMLnode(group2.label); arrowNode.setAttribute("minsize", group2.label.charAt(0) === "x" ? "1.75em" : "3.0em"); var node2; if (group2.body) { - var upperNode = paddedNode(buildGroup2(group2.body, options3)); + var upperNode = paddedNode(buildGroup2(group2.body, options2)); if (group2.below) { - var lowerNode = paddedNode(buildGroup2(group2.below, options3)); + var lowerNode = paddedNode(buildGroup2(group2.below, options2)); node2 = new mathMLTree.MathNode("munderover", [arrowNode, lowerNode, upperNode]); } else { node2 = new mathMLTree.MathNode("mover", [arrowNode, upperNode]); } } else if (group2.below) { - var _lowerNode = paddedNode(buildGroup2(group2.below, options3)); + var _lowerNode = paddedNode(buildGroup2(group2.below, options2)); node2 = new mathMLTree.MathNode("munder", [arrowNode, _lowerNode]); } else { node2 = paddedNode(); @@ -14056,9 +12400,9 @@ var __esbuild_esm_mermaid = (() => { body: ordargument(args[0]) }; }, - htmlBuilder(group2, options3) { - var elements3 = buildExpression$1(group2.body, options3, true); - var node2 = buildCommon.makeSpan([group2.mclass], elements3, options3); + htmlBuilder(group2, options2) { + var elements2 = buildExpression$1(group2.body, options2, true); + var node2 = buildCommon.makeSpan([group2.mclass], elements2, options2); node2.style.textShadow = "0.02em 0.01em 0.04px"; return node2; }, @@ -14112,17 +12456,17 @@ var __esbuild_esm_mermaid = (() => { label: args[0] }; }, - htmlBuilder(group2, options3) { - var newOptions = options3.havingStyle(options3.style.sup()); - var label = buildCommon.wrapFragment(buildGroup$1(group2.label, newOptions, options3), options3); + htmlBuilder(group2, options2) { + var newOptions = options2.havingStyle(options2.style.sup()); + var label = buildCommon.wrapFragment(buildGroup$1(group2.label, newOptions, options2), options2); label.classes.push("cd-label-" + group2.side); label.style.bottom = makeEm(0.8 - label.depth); label.height = 0; label.depth = 0; return label; }, - mathmlBuilder(group2, options3) { - var label = new mathMLTree.MathNode("mrow", [buildGroup2(group2.label, options3)]); + mathmlBuilder(group2, options2) { + var label = new mathMLTree.MathNode("mrow", [buildGroup2(group2.label, options2)]); label = new mathMLTree.MathNode("mpadded", [label]); label.setAttribute("width", "0"); if (group2.side === "left") { @@ -14151,13 +12495,13 @@ var __esbuild_esm_mermaid = (() => { fragment: args[0] }; }, - htmlBuilder(group2, options3) { - var parent4 = buildCommon.wrapFragment(buildGroup$1(group2.fragment, options3), options3); + htmlBuilder(group2, options2) { + var parent4 = buildCommon.wrapFragment(buildGroup$1(group2.fragment, options2), options2); parent4.classes.push("cd-vert-arrow"); return parent4; }, - mathmlBuilder(group2, options3) { - return new mathMLTree.MathNode("mrow", [buildGroup2(group2.fragment, options3)]); + mathmlBuilder(group2, options2) { + return new mathMLTree.MathNode("mrow", [buildGroup2(group2.fragment, options2)]); } }); defineFunction({ @@ -14197,12 +12541,12 @@ var __esbuild_esm_mermaid = (() => { }; } }); - htmlBuilder$8 = /* @__PURE__ */ __name((group2, options3) => { - var elements3 = buildExpression$1(group2.body, options3.withColor(group2.color), false); - return buildCommon.makeFragment(elements3); + htmlBuilder$8 = /* @__PURE__ */ __name((group2, options2) => { + var elements2 = buildExpression$1(group2.body, options2.withColor(group2.color), false); + return buildCommon.makeFragment(elements2); }, "htmlBuilder$8"); - mathmlBuilder$7 = /* @__PURE__ */ __name((group2, options3) => { - var inner2 = buildExpression2(group2.body, options3.withColor(group2.color)); + mathmlBuilder$7 = /* @__PURE__ */ __name((group2, options2) => { + var inner2 = buildExpression2(group2.body, options2.withColor(group2.color)); var node2 = new mathMLTree.MathNode("mstyle", inner2); node2.setAttribute("mathcolor", group2.color); return node2; @@ -14269,33 +12613,33 @@ var __esbuild_esm_mermaid = (() => { var { parser: parser24 } = _ref; - var size5 = parser24.gullet.future().text === "[" ? parser24.parseSizeGroup(true) : null; + var size4 = parser24.gullet.future().text === "[" ? parser24.parseSizeGroup(true) : null; var newLine = !parser24.settings.displayMode || !parser24.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline does nothing in display mode"); return { type: "cr", mode: parser24.mode, newLine, - size: size5 && assertNodeType(size5, "size").value + size: size4 && assertNodeType(size4, "size").value }; }, // The following builders are called only at the top level, // not within tabular/array environments. - htmlBuilder(group2, options3) { - var span = buildCommon.makeSpan(["mspace"], [], options3); + htmlBuilder(group2, options2) { + var span = buildCommon.makeSpan(["mspace"], [], options2); if (group2.newLine) { span.classes.push("newline"); if (group2.size) { - span.style.marginTop = makeEm(calculateSize2(group2.size, options3)); + span.style.marginTop = makeEm(calculateSize2(group2.size, options2)); } } return span; }, - mathmlBuilder(group2, options3) { + mathmlBuilder(group2, options2) { var node2 = new mathMLTree.MathNode("mspace"); if (group2.newLine) { node2.setAttribute("linebreak", "newline"); if (group2.size) { - node2.setAttribute("height", makeEm(calculateSize2(group2.size, options3))); + node2.setAttribute("height", makeEm(calculateSize2(group2.size, options2))); } } return node2; @@ -14499,39 +12843,39 @@ var __esbuild_esm_mermaid = (() => { } return metrics; }, "getMetrics"); - styleWrap = /* @__PURE__ */ __name(function styleWrap2(delim, toStyle, options3, classes3) { - var newOptions = options3.havingBaseStyle(toStyle); - var span = buildCommon.makeSpan(classes3.concat(newOptions.sizingClasses(options3)), [delim], options3); - var delimSizeMultiplier = newOptions.sizeMultiplier / options3.sizeMultiplier; + styleWrap = /* @__PURE__ */ __name(function styleWrap2(delim, toStyle, options2, classes3) { + var newOptions = options2.havingBaseStyle(toStyle); + var span = buildCommon.makeSpan(classes3.concat(newOptions.sizingClasses(options2)), [delim], options2); + var delimSizeMultiplier = newOptions.sizeMultiplier / options2.sizeMultiplier; span.height *= delimSizeMultiplier; span.depth *= delimSizeMultiplier; span.maxFontSize = newOptions.sizeMultiplier; return span; }, "styleWrap"); - centerSpan = /* @__PURE__ */ __name(function centerSpan2(span, options3, style3) { - var newOptions = options3.havingBaseStyle(style3); - var shift2 = (1 - options3.sizeMultiplier / newOptions.sizeMultiplier) * options3.fontMetrics().axisHeight; + centerSpan = /* @__PURE__ */ __name(function centerSpan2(span, options2, style3) { + var newOptions = options2.havingBaseStyle(style3); + var shift2 = (1 - options2.sizeMultiplier / newOptions.sizeMultiplier) * options2.fontMetrics().axisHeight; span.classes.push("delimcenter"); span.style.top = makeEm(shift2); span.height -= shift2; span.depth += shift2; }, "centerSpan"); - makeSmallDelim = /* @__PURE__ */ __name(function makeSmallDelim2(delim, style3, center4, options3, mode, classes3) { - var text4 = buildCommon.makeSymbol(delim, "Main-Regular", mode, options3); - var span = styleWrap(text4, style3, options3, classes3); + makeSmallDelim = /* @__PURE__ */ __name(function makeSmallDelim2(delim, style3, center4, options2, mode, classes3) { + var text4 = buildCommon.makeSymbol(delim, "Main-Regular", mode, options2); + var span = styleWrap(text4, style3, options2, classes3); if (center4) { - centerSpan(span, options3, style3); + centerSpan(span, options2, style3); } return span; }, "makeSmallDelim"); - mathrmSize = /* @__PURE__ */ __name(function mathrmSize2(value2, size5, mode, options3) { - return buildCommon.makeSymbol(value2, "Size" + size5 + "-Regular", mode, options3); + mathrmSize = /* @__PURE__ */ __name(function mathrmSize2(value2, size4, mode, options2) { + return buildCommon.makeSymbol(value2, "Size" + size4 + "-Regular", mode, options2); }, "mathrmSize"); - makeLargeDelim = /* @__PURE__ */ __name(function makeLargeDelim2(delim, size5, center4, options3, mode, classes3) { - var inner2 = mathrmSize(delim, size5, mode, options3); - var span = styleWrap(buildCommon.makeSpan(["delimsizing", "size" + size5], [inner2], options3), Style$1.TEXT, options3, classes3); + makeLargeDelim = /* @__PURE__ */ __name(function makeLargeDelim2(delim, size4, center4, options2, mode, classes3) { + var inner2 = mathrmSize(delim, size4, mode, options2); + var span = styleWrap(buildCommon.makeSpan(["delimsizing", "size" + size4], [inner2], options2), Style$1.TEXT, options2, classes3); if (center4) { - centerSpan(span, options3, Style$1.TEXT); + centerSpan(span, options2, Style$1.TEXT); } return span; }, "makeLargeDelim"); @@ -14548,7 +12892,7 @@ var __esbuild_esm_mermaid = (() => { elem: corner }; }, "makeGlyphSpan"); - makeInner = /* @__PURE__ */ __name(function makeInner2(ch, height2, options3) { + makeInner = /* @__PURE__ */ __name(function makeInner2(ch, height2, options2) { var width3 = fontMetricsData["Size4-Regular"][ch.charCodeAt(0)] ? fontMetricsData["Size4-Regular"][ch.charCodeAt(0)][4] : fontMetricsData["Size1-Regular"][ch.charCodeAt(0)][4]; var path4 = new PathNode("inner", innerPath(ch, Math.round(1e3 * height2))); var svgNode2 = new SvgNode([path4], { @@ -14559,7 +12903,7 @@ var __esbuild_esm_mermaid = (() => { "viewBox": "0 0 " + 1e3 * width3 + " " + Math.round(1e3 * height2), "preserveAspectRatio": "xMinYMin" }); - var span = buildCommon.makeSvgSpan([], [svgNode2], options3); + var span = buildCommon.makeSvgSpan([], [svgNode2], options2); span.height = height2; span.style.height = makeEm(height2); span.style.width = makeEm(width3); @@ -14575,7 +12919,7 @@ var __esbuild_esm_mermaid = (() => { }; verts = ["|", "\\lvert", "\\rvert", "\\vert"]; doubleVerts = ["\\|", "\\lVert", "\\rVert", "\\Vert"]; - makeStackedDelim = /* @__PURE__ */ __name(function makeStackedDelim2(delim, heightTotal, center4, options3, mode, classes3) { + makeStackedDelim = /* @__PURE__ */ __name(function makeStackedDelim2(delim, heightTotal, center4, options2, mode, classes3) { var top2; var middle; var repeat2; @@ -14710,9 +13054,9 @@ var __esbuild_esm_mermaid = (() => { var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal; var repeatCount = Math.max(0, Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal))); var realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal; - var axisHeight = options3.fontMetrics().axisHeight; + var axisHeight = options2.fontMetrics().axisHeight; if (center4) { - axisHeight *= options3.sizeMultiplier; + axisHeight *= options2.sizeMultiplier; } var depth = realHeightTotal / 2 - axisHeight; var stack = []; @@ -14728,7 +13072,7 @@ var __esbuild_esm_mermaid = (() => { "height": height2, "viewBox": "0 0 " + viewBoxWidth + " " + viewBoxHeight }); - var wrapper = buildCommon.makeSvgSpan([], [svg2], options3); + var wrapper = buildCommon.makeSvgSpan([], [svg2], options2); wrapper.height = viewBoxHeight / 1e3; wrapper.style.width = width3; wrapper.style.height = height2; @@ -14741,29 +13085,29 @@ var __esbuild_esm_mermaid = (() => { stack.push(lap); if (middle === null) { var innerHeight = realHeightTotal - topHeightTotal - bottomHeightTotal + 2 * lapInEms; - stack.push(makeInner(repeat2, innerHeight, options3)); + stack.push(makeInner(repeat2, innerHeight, options2)); } else { var _innerHeight = (realHeightTotal - topHeightTotal - bottomHeightTotal - middleHeightTotal) / 2 + 2 * lapInEms; - stack.push(makeInner(repeat2, _innerHeight, options3)); + stack.push(makeInner(repeat2, _innerHeight, options2)); stack.push(lap); stack.push(makeGlyphSpan(middle, font, mode)); stack.push(lap); - stack.push(makeInner(repeat2, _innerHeight, options3)); + stack.push(makeInner(repeat2, _innerHeight, options2)); } stack.push(lap); stack.push(makeGlyphSpan(top2, font, mode)); } - var newOptions = options3.havingBaseStyle(Style$1.TEXT); + var newOptions = options2.havingBaseStyle(Style$1.TEXT); var inner2 = buildCommon.makeVList({ positionType: "bottom", positionData: depth, children: stack }, newOptions); - return styleWrap(buildCommon.makeSpan(["delimsizing", "mult"], [inner2], newOptions), Style$1.TEXT, options3, classes3); + return styleWrap(buildCommon.makeSpan(["delimsizing", "mult"], [inner2], newOptions), Style$1.TEXT, options2, classes3); }, "makeStackedDelim"); vbPad = 80; emPad = 0.08; - sqrtSvg = /* @__PURE__ */ __name(function sqrtSvg2(sqrtName, height2, viewBoxHeight, extraVinculum, options3) { + sqrtSvg = /* @__PURE__ */ __name(function sqrtSvg2(sqrtName, height2, viewBoxHeight, extraVinculum, options2) { var path4 = sqrtPath(sqrtName, extraVinculum, viewBoxHeight); var pathNode = new PathNode(sqrtName, path4); var svg2 = new SvgNode([pathNode], { @@ -14773,13 +13117,13 @@ var __esbuild_esm_mermaid = (() => { "viewBox": "0 0 400000 " + viewBoxHeight, "preserveAspectRatio": "xMinYMin slice" }); - return buildCommon.makeSvgSpan(["hide-tail"], [svg2], options3); + return buildCommon.makeSvgSpan(["hide-tail"], [svg2], options2); }, "sqrtSvg"); - makeSqrtImage = /* @__PURE__ */ __name(function makeSqrtImage2(height2, options3) { - var newOptions = options3.havingBaseSizing(); + makeSqrtImage = /* @__PURE__ */ __name(function makeSqrtImage2(height2, options2) { + var newOptions = options2.havingBaseSizing(); var delim = traverseSequence("\\surd", height2 * newOptions.sizeMultiplier, stackLargeDelimiterSequence, newOptions); var sizeMultiplier = newOptions.sizeMultiplier; - var extraVinculum = Math.max(0, options3.minRuleThickness - options3.fontMetrics().sqrtRuleThickness); + var extraVinculum = Math.max(0, options2.minRuleThickness - options2.fontMetrics().sqrtRuleThickness); var span; var spanHeight = 0; var texHeight = 0; @@ -14794,21 +13138,21 @@ var __esbuild_esm_mermaid = (() => { } spanHeight = (1 + extraVinculum + emPad) / sizeMultiplier; texHeight = (1 + extraVinculum) / sizeMultiplier; - span = sqrtSvg("sqrtMain", spanHeight, viewBoxHeight, extraVinculum, options3); + span = sqrtSvg("sqrtMain", spanHeight, viewBoxHeight, extraVinculum, options2); span.style.minWidth = "0.853em"; advanceWidth = 0.833 / sizeMultiplier; } else if (delim.type === "large") { viewBoxHeight = (1e3 + vbPad) * sizeToMaxHeight[delim.size]; texHeight = (sizeToMaxHeight[delim.size] + extraVinculum) / sizeMultiplier; spanHeight = (sizeToMaxHeight[delim.size] + extraVinculum + emPad) / sizeMultiplier; - span = sqrtSvg("sqrtSize" + delim.size, spanHeight, viewBoxHeight, extraVinculum, options3); + span = sqrtSvg("sqrtSize" + delim.size, spanHeight, viewBoxHeight, extraVinculum, options2); span.style.minWidth = "1.02em"; advanceWidth = 1 / sizeMultiplier; } else { spanHeight = height2 + extraVinculum + emPad; texHeight = height2 + extraVinculum; viewBoxHeight = Math.floor(1e3 * height2 + extraVinculum) + vbPad; - span = sqrtSvg("sqrtTall", spanHeight, viewBoxHeight, extraVinculum, options3); + span = sqrtSvg("sqrtTall", spanHeight, viewBoxHeight, extraVinculum, options2); span.style.minWidth = "0.742em"; advanceWidth = 1.056; } @@ -14821,23 +13165,23 @@ var __esbuild_esm_mermaid = (() => { // This actually should depend on the chosen font -- e.g. \boldmath // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and // have thicker rules. - ruleWidth: (options3.fontMetrics().sqrtRuleThickness + extraVinculum) * sizeMultiplier + ruleWidth: (options2.fontMetrics().sqrtRuleThickness + extraVinculum) * sizeMultiplier }; }, "makeSqrtImage"); stackLargeDelimiters = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\u230A", "\u230B", "\\lceil", "\\rceil", "\u2308", "\u2309", "\\surd"]; stackAlwaysDelimiters = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\u27EE", "\u27EF", "\\lmoustache", "\\rmoustache", "\u23B0", "\u23B1"]; stackNeverDelimiters = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"]; sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3]; - makeSizedDelim = /* @__PURE__ */ __name(function makeSizedDelim2(delim, size5, options3, mode, classes3) { + makeSizedDelim = /* @__PURE__ */ __name(function makeSizedDelim2(delim, size4, options2, mode, classes3) { if (delim === "<" || delim === "\\lt" || delim === "\u27E8") { delim = "\\langle"; } else if (delim === ">" || delim === "\\gt" || delim === "\u27E9") { delim = "\\rangle"; } if (utils.contains(stackLargeDelimiters, delim) || utils.contains(stackNeverDelimiters, delim)) { - return makeLargeDelim(delim, size5, false, options3, mode, classes3); + return makeLargeDelim(delim, size4, false, options2, mode, classes3); } else if (utils.contains(stackAlwaysDelimiters, delim)) { - return makeStackedDelim(delim, sizeToMaxHeight[size5], false, options3, mode, classes3); + return makeStackedDelim(delim, sizeToMaxHeight[size4], false, options2, mode, classes3); } else { throw new ParseError("Illegal delimiter: '" + delim + "'"); } @@ -14911,8 +13255,8 @@ var __esbuild_esm_mermaid = (() => { throw new Error("Add support for delim type '" + type3.type + "' here."); } }, "delimTypeToFont"); - traverseSequence = /* @__PURE__ */ __name(function traverseSequence2(delim, height2, sequence, options3) { - var start3 = Math.min(2, 3 - options3.style.size); + traverseSequence = /* @__PURE__ */ __name(function traverseSequence2(delim, height2, sequence, options2) { + var start3 = Math.min(2, 3 - options2.style.size); for (var i2 = start3; i2 < sequence.length; i2++) { if (sequence[i2].type === "stack") { break; @@ -14920,7 +13264,7 @@ var __esbuild_esm_mermaid = (() => { var metrics = getMetrics(delim, delimTypeToFont(sequence[i2]), "math"); var heightDepth = metrics.height + metrics.depth; if (sequence[i2].type === "small") { - var newOptions = options3.havingBaseStyle(sequence[i2].style); + var newOptions = options2.havingBaseStyle(sequence[i2].style); heightDepth *= newOptions.sizeMultiplier; } if (heightDepth > height2) { @@ -14929,7 +13273,7 @@ var __esbuild_esm_mermaid = (() => { } return sequence[sequence.length - 1]; }, "traverseSequence"); - makeCustomSizedDelim = /* @__PURE__ */ __name(function makeCustomSizedDelim2(delim, height2, center4, options3, mode, classes3) { + makeCustomSizedDelim = /* @__PURE__ */ __name(function makeCustomSizedDelim2(delim, height2, center4, options2, mode, classes3) { if (delim === "<" || delim === "\\lt" || delim === "\u27E8") { delim = "\\langle"; } else if (delim === ">" || delim === "\\gt" || delim === "\u27E9") { @@ -14943,19 +13287,19 @@ var __esbuild_esm_mermaid = (() => { } else { sequence = stackAlwaysDelimiterSequence; } - var delimType = traverseSequence(delim, height2, sequence, options3); + var delimType = traverseSequence(delim, height2, sequence, options2); if (delimType.type === "small") { - return makeSmallDelim(delim, delimType.style, center4, options3, mode, classes3); + return makeSmallDelim(delim, delimType.style, center4, options2, mode, classes3); } else if (delimType.type === "large") { - return makeLargeDelim(delim, delimType.size, center4, options3, mode, classes3); + return makeLargeDelim(delim, delimType.size, center4, options2, mode, classes3); } else { - return makeStackedDelim(delim, height2, center4, options3, mode, classes3); + return makeStackedDelim(delim, height2, center4, options2, mode, classes3); } }, "makeCustomSizedDelim"); - makeLeftRightDelim = /* @__PURE__ */ __name(function makeLeftRightDelim2(delim, height2, depth, options3, mode, classes3) { - var axisHeight = options3.fontMetrics().axisHeight * options3.sizeMultiplier; + makeLeftRightDelim = /* @__PURE__ */ __name(function makeLeftRightDelim2(delim, height2, depth, options2, mode, classes3) { + var axisHeight = options2.fontMetrics().axisHeight * options2.sizeMultiplier; var delimiterFactor = 901; - var delimiterExtend = 5 / options3.fontMetrics().ptPerEm; + var delimiterExtend = 5 / options2.fontMetrics().ptPerEm; var maxDistFromAxis = Math.max(height2 - axisHeight, depth + axisHeight); var totalHeight = Math.max( // In real TeX, calculations are done using integral values which are @@ -14970,7 +13314,7 @@ var __esbuild_esm_mermaid = (() => { maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend ); - return makeCustomSizedDelim(delim, totalHeight, true, options3, mode, classes3); + return makeCustomSizedDelim(delim, totalHeight, true, options2, mode, classes3); }, "makeLeftRightDelim"); delimiter = { sqrtImage: makeSqrtImage, @@ -15064,11 +13408,11 @@ var __esbuild_esm_mermaid = (() => { delim: delim.text }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { if (group2.delim === ".") { return buildCommon.makeSpan([group2.mclass]); } - return delimiter.sizedDelim(group2.delim, group2.size, options3, group2.mode, [group2.mclass]); + return delimiter.sizedDelim(group2.delim, group2.size, options2, group2.mode, [group2.mclass]); }, "htmlBuilder"), mathmlBuilder: /* @__PURE__ */ __name((group2) => { var children2 = []; @@ -15082,9 +13426,9 @@ var __esbuild_esm_mermaid = (() => { node2.setAttribute("fence", "false"); } node2.setAttribute("stretchy", "true"); - var size5 = makeEm(delimiter.sizeToMaxHeight[group2.size]); - node2.setAttribute("minsize", size5); - node2.setAttribute("maxsize", size5); + var size4 = makeEm(delimiter.sizeToMaxHeight[group2.size]); + node2.setAttribute("minsize", size4); + node2.setAttribute("maxsize", size4); return node2; }, "mathmlBuilder") }); @@ -15134,9 +13478,9 @@ var __esbuild_esm_mermaid = (() => { rightColor: right3.color }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { assertParsed(group2); - var inner2 = buildExpression$1(group2.body, options3, true, ["mopen", "mclose"]); + var inner2 = buildExpression$1(group2.body, options2, true, ["mopen", "mclose"]); var innerHeight = 0; var innerDepth = 0; var hadMiddle = false; @@ -15148,13 +13492,13 @@ var __esbuild_esm_mermaid = (() => { innerDepth = Math.max(inner2[i2].depth, innerDepth); } } - innerHeight *= options3.sizeMultiplier; - innerDepth *= options3.sizeMultiplier; + innerHeight *= options2.sizeMultiplier; + innerDepth *= options2.sizeMultiplier; var leftDelim; if (group2.left === ".") { - leftDelim = makeNullDelimiter(options3, ["mopen"]); + leftDelim = makeNullDelimiter(options2, ["mopen"]); } else { - leftDelim = delimiter.leftRightDelim(group2.left, innerHeight, innerDepth, options3, group2.mode, ["mopen"]); + leftDelim = delimiter.leftRightDelim(group2.left, innerHeight, innerDepth, options2, group2.mode, ["mopen"]); } inner2.unshift(leftDelim); if (hadMiddle) { @@ -15168,17 +13512,17 @@ var __esbuild_esm_mermaid = (() => { } var rightDelim; if (group2.right === ".") { - rightDelim = makeNullDelimiter(options3, ["mclose"]); + rightDelim = makeNullDelimiter(options2, ["mclose"]); } else { - var colorOptions = group2.rightColor ? options3.withColor(group2.rightColor) : options3; + var colorOptions = group2.rightColor ? options2.withColor(group2.rightColor) : options2; rightDelim = delimiter.leftRightDelim(group2.right, innerHeight, innerDepth, colorOptions, group2.mode, ["mclose"]); } inner2.push(rightDelim); - return buildCommon.makeSpan(["minner"], inner2, options3); + return buildCommon.makeSpan(["minner"], inner2, options2); }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { assertParsed(group2); - var inner2 = buildExpression2(group2.body, options3); + var inner2 = buildExpression2(group2.body, options2); if (group2.left !== ".") { var leftNode = new mathMLTree.MathNode("mo", [makeText(group2.left, group2.mode)]); leftNode.setAttribute("fence", "true"); @@ -15213,21 +13557,21 @@ var __esbuild_esm_mermaid = (() => { delim: delim.text }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { var middleDelim; if (group2.delim === ".") { - middleDelim = makeNullDelimiter(options3, []); + middleDelim = makeNullDelimiter(options2, []); } else { - middleDelim = delimiter.sizedDelim(group2.delim, 1, options3, group2.mode, []); + middleDelim = delimiter.sizedDelim(group2.delim, 1, options2, group2.mode, []); var isMiddle = { delim: group2.delim, - options: options3 + options: options2 }; middleDelim.isMiddle = isMiddle; } return middleDelim; }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { var textNode = group2.delim === "\\vert" || group2.delim === "|" ? makeText("|", "text") : makeText(group2.delim, group2.mode); var middleNode = new mathMLTree.MathNode("mo", [textNode]); middleNode.setAttribute("fence", "true"); @@ -15236,27 +13580,27 @@ var __esbuild_esm_mermaid = (() => { return middleNode; }, "mathmlBuilder") }); - htmlBuilder$7 = /* @__PURE__ */ __name((group2, options3) => { - var inner2 = buildCommon.wrapFragment(buildGroup$1(group2.body, options3), options3); + htmlBuilder$7 = /* @__PURE__ */ __name((group2, options2) => { + var inner2 = buildCommon.wrapFragment(buildGroup$1(group2.body, options2), options2); var label = group2.label.slice(1); - var scale2 = options3.sizeMultiplier; + var scale2 = options2.sizeMultiplier; var img; var imgShift = 0; var isSingleChar = utils.isCharacterBox(group2.body); if (label === "sout") { img = buildCommon.makeSpan(["stretchy", "sout"]); - img.height = options3.fontMetrics().defaultRuleThickness / scale2; - imgShift = -0.5 * options3.fontMetrics().xHeight; + img.height = options2.fontMetrics().defaultRuleThickness / scale2; + imgShift = -0.5 * options2.fontMetrics().xHeight; } else if (label === "phase") { var lineWeight = calculateSize2({ number: 0.6, unit: "pt" - }, options3); + }, options2); var clearance = calculateSize2({ number: 0.35, unit: "ex" - }, options3); - var newOptions = options3.havingBaseSizing(); + }, options2); + var newOptions = options2.havingBaseSizing(); scale2 = scale2 / newOptions.sizeMultiplier; var angleHeight = inner2.height + inner2.depth + lineWeight + clearance; inner2.style.paddingLeft = makeEm(angleHeight / 2 + lineWeight); @@ -15268,7 +13612,7 @@ var __esbuild_esm_mermaid = (() => { "viewBox": "0 0 400000 " + viewBoxHeight, "preserveAspectRatio": "xMinYMin slice" }); - img = buildCommon.makeSvgSpan(["hide-tail"], [svgNode2], options3); + img = buildCommon.makeSvgSpan(["hide-tail"], [svgNode2], options2); img.style.height = makeEm(angleHeight); imgShift = inner2.depth + lineWeight + clearance; } else { @@ -15286,22 +13630,22 @@ var __esbuild_esm_mermaid = (() => { var ruleThickness = 0; if (/box/.test(label)) { ruleThickness = Math.max( - options3.fontMetrics().fboxrule, + options2.fontMetrics().fboxrule, // default - options3.minRuleThickness + options2.minRuleThickness // User override. ); - topPad = options3.fontMetrics().fboxsep + (label === "colorbox" ? 0 : ruleThickness); + topPad = options2.fontMetrics().fboxsep + (label === "colorbox" ? 0 : ruleThickness); bottomPad = topPad; } else if (label === "angl") { - ruleThickness = Math.max(options3.fontMetrics().defaultRuleThickness, options3.minRuleThickness); + ruleThickness = Math.max(options2.fontMetrics().defaultRuleThickness, options2.minRuleThickness); topPad = 4 * ruleThickness; bottomPad = Math.max(0, 0.25 - inner2.depth); } else { topPad = isSingleChar ? 0.2 : 0; bottomPad = topPad; } - img = stretchy.encloseSpan(inner2, label, topPad, bottomPad, options3); + img = stretchy.encloseSpan(inner2, label, topPad, bottomPad, options2); if (/fbox|boxed|fcolorbox/.test(label)) { img.style.borderStyle = "solid"; img.style.borderWidth = makeEm(ruleThickness); @@ -15334,7 +13678,7 @@ var __esbuild_esm_mermaid = (() => { shift: 0 } ] - }, options3); + }, options2); } else { var classes3 = /cancel|phase/.test(label) ? ["svg-align"] : []; vlist = buildCommon.makeVList({ @@ -15353,21 +13697,21 @@ var __esbuild_esm_mermaid = (() => { wrapperClasses: classes3 } ] - }, options3); + }, options2); } if (/cancel/.test(label)) { vlist.height = inner2.height; vlist.depth = inner2.depth; } if (/cancel/.test(label) && !isSingleChar) { - return buildCommon.makeSpan(["mord", "cancel-lap"], [vlist], options3); + return buildCommon.makeSpan(["mord", "cancel-lap"], [vlist], options2); } else { - return buildCommon.makeSpan(["mord"], [vlist], options3); + return buildCommon.makeSpan(["mord"], [vlist], options2); } }, "htmlBuilder$7"); - mathmlBuilder$6 = /* @__PURE__ */ __name((group2, options3) => { + mathmlBuilder$6 = /* @__PURE__ */ __name((group2, options2) => { var fboxsep = 0; - var node2 = new mathMLTree.MathNode(group2.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [buildGroup2(group2.body, options3)]); + var node2 = new mathMLTree.MathNode(group2.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [buildGroup2(group2.body, options2)]); switch (group2.label) { case "\\cancel": node2.setAttribute("notation", "updiagonalstrike"); @@ -15389,16 +13733,16 @@ var __esbuild_esm_mermaid = (() => { break; case "\\fcolorbox": case "\\colorbox": - fboxsep = options3.fontMetrics().fboxsep * options3.fontMetrics().ptPerEm; + fboxsep = options2.fontMetrics().fboxsep * options2.fontMetrics().ptPerEm; node2.setAttribute("width", "+" + 2 * fboxsep + "pt"); node2.setAttribute("height", "+" + 2 * fboxsep + "pt"); node2.setAttribute("lspace", fboxsep + "pt"); node2.setAttribute("voffset", fboxsep + "pt"); if (group2.label === "\\fcolorbox") { var thk = Math.max( - options3.fontMetrics().fboxrule, + options2.fontMetrics().fboxrule, // default - options3.minRuleThickness + options2.minRuleThickness // user override ); node2.setAttribute("style", "border: " + thk + "em solid " + String(group2.borderColor)); @@ -15543,7 +13887,7 @@ var __esbuild_esm_mermaid = (() => { __name(getAutoTag, "getAutoTag"); __name(parseArray, "parseArray"); __name(dCellStyle, "dCellStyle"); - htmlBuilder$6 = /* @__PURE__ */ __name(function htmlBuilder(group2, options3) { + htmlBuilder$6 = /* @__PURE__ */ __name(function htmlBuilder(group2, options2) { var r2; var c3; var nr = group2.body.length; @@ -15553,20 +13897,20 @@ var __esbuild_esm_mermaid = (() => { var hlines = []; var ruleThickness = Math.max( // From LaTeX \showthe\arrayrulewidth. Equals 0.04 em. - options3.fontMetrics().arrayRuleWidth, - options3.minRuleThickness + options2.fontMetrics().arrayRuleWidth, + options2.minRuleThickness // User override. ); - var pt = 1 / options3.fontMetrics().ptPerEm; + var pt = 1 / options2.fontMetrics().ptPerEm; var arraycolsep = 5 * pt; if (group2.colSeparationType && group2.colSeparationType === "small") { - var localMultiplier = options3.havingStyle(Style$1.SCRIPT).sizeMultiplier; - arraycolsep = 0.2778 * (localMultiplier / options3.sizeMultiplier); + var localMultiplier = options2.havingStyle(Style$1.SCRIPT).sizeMultiplier; + arraycolsep = 0.2778 * (localMultiplier / options2.sizeMultiplier); } var baselineskip = group2.colSeparationType === "CD" ? calculateSize2({ number: 3, unit: "ex" - }, options3) : 12 * pt; + }, options2) : 12 * pt; var jot = 3 * pt; var arrayskip = group2.arraystretch * baselineskip; var arstrutHeight = 0.7 * arrayskip; @@ -15594,7 +13938,7 @@ var __esbuild_esm_mermaid = (() => { } var outrow = new Array(inrow.length); for (c3 = 0; c3 < inrow.length; ++c3) { - var elt = buildGroup$1(inrow[c3], options3); + var elt = buildGroup$1(inrow[c3], options2); if (depth < elt.depth) { depth = elt.depth; } @@ -15606,7 +13950,7 @@ var __esbuild_esm_mermaid = (() => { var rowGap = group2.rowGaps[r2]; var gap = 0; if (rowGap) { - gap = calculateSize2(rowGap, options3); + gap = calculateSize2(rowGap, options2); if (gap > 0) { gap += arstrutDepth; if (depth < gap) { @@ -15626,24 +13970,24 @@ var __esbuild_esm_mermaid = (() => { body[r2] = outrow; setHLinePos(hLinesBeforeRow[r2 + 1]); } - var offset = totalHeight / 2 + options3.fontMetrics().axisHeight; + var offset = totalHeight / 2 + options2.fontMetrics().axisHeight; var colDescriptions = group2.cols || []; var cols = []; var colSep; var colDescrNum; var tagSpans = []; - if (group2.tags && group2.tags.some((tag3) => tag3)) { + if (group2.tags && group2.tags.some((tag2) => tag2)) { for (r2 = 0; r2 < nr; ++r2) { var rw = body[r2]; var shift2 = rw.pos - offset; - var tag2 = group2.tags[r2]; + var tag = group2.tags[r2]; var tagSpan = void 0; - if (tag2 === true) { - tagSpan = buildCommon.makeSpan(["eqn-num"], [], options3); - } else if (tag2 === false) { - tagSpan = buildCommon.makeSpan([], [], options3); + if (tag === true) { + tagSpan = buildCommon.makeSpan(["eqn-num"], [], options2); + } else if (tag === false) { + tagSpan = buildCommon.makeSpan([], [], options2); } else { - tagSpan = buildCommon.makeSpan([], buildExpression$1(tag2, options3, true), options3); + tagSpan = buildCommon.makeSpan([], buildExpression$1(tag, options2, true), options2); } tagSpan.depth = rw.depth; tagSpan.height = rw.height; @@ -15666,12 +14010,12 @@ var __esbuild_esm_mermaid = (() => { while (colDescr.type === "separator") { if (!firstSeparator) { colSep = buildCommon.makeSpan(["arraycolsep"], []); - colSep.style.width = makeEm(options3.fontMetrics().doubleRuleSep); + colSep.style.width = makeEm(options2.fontMetrics().doubleRuleSep); cols.push(colSep); } if (colDescr.separator === "|" || colDescr.separator === ":") { var lineType = colDescr.separator === "|" ? "solid" : "dashed"; - var separator = buildCommon.makeSpan(["vertical-separator"], [], options3); + var separator = buildCommon.makeSpan(["vertical-separator"], [], options2); separator.style.height = makeEm(totalHeight); separator.style.borderRightWidth = makeEm(ruleThickness); separator.style.borderRightStyle = lineType; @@ -15719,7 +14063,7 @@ var __esbuild_esm_mermaid = (() => { col = buildCommon.makeVList({ positionType: "individualShift", children: col - }, options3); + }, options2); col = buildCommon.makeSpan(["col-align-" + (colDescr.align || "c")], [col]); cols.push(col); if (c3 < nc - 1 || group2.hskipBeforeAndAfter) { @@ -15733,8 +14077,8 @@ var __esbuild_esm_mermaid = (() => { } body = buildCommon.makeSpan(["mtable"], cols); if (hlines.length > 0) { - var line2 = buildCommon.makeLineSpan("hline", options3, ruleThickness); - var dashes = buildCommon.makeLineSpan("hdashline", options3, ruleThickness); + var line2 = buildCommon.makeLineSpan("hline", options2, ruleThickness); + var dashes = buildCommon.makeLineSpan("hdashline", options2, ruleThickness); var vListElems = [{ type: "elem", elem: body, @@ -15760,16 +14104,16 @@ var __esbuild_esm_mermaid = (() => { body = buildCommon.makeVList({ positionType: "individualShift", children: vListElems - }, options3); + }, options2); } if (tagSpans.length === 0) { - return buildCommon.makeSpan(["mord"], [body], options3); + return buildCommon.makeSpan(["mord"], [body], options2); } else { var eqnNumCol = buildCommon.makeVList({ positionType: "individualShift", children: tagSpans - }, options3); - eqnNumCol = buildCommon.makeSpan(["tag"], [eqnNumCol], options3); + }, options2); + eqnNumCol = buildCommon.makeSpan(["tag"], [eqnNumCol], options2); return buildCommon.makeFragment([body, eqnNumCol]); } }, "htmlBuilder"); @@ -15778,23 +14122,23 @@ var __esbuild_esm_mermaid = (() => { l: "left ", r: "right " }; - mathmlBuilder$5 = /* @__PURE__ */ __name(function mathmlBuilder(group2, options3) { + mathmlBuilder$5 = /* @__PURE__ */ __name(function mathmlBuilder(group2, options2) { var tbl = []; var glue = new mathMLTree.MathNode("mtd", [], ["mtr-glue"]); - var tag2 = new mathMLTree.MathNode("mtd", [], ["mml-eqn-num"]); + var tag = new mathMLTree.MathNode("mtd", [], ["mml-eqn-num"]); for (var i2 = 0; i2 < group2.body.length; i2++) { var rw = group2.body[i2]; var row = []; - for (var j2 = 0; j2 < rw.length; j2++) { - row.push(new mathMLTree.MathNode("mtd", [buildGroup2(rw[j2], options3)])); + for (var j3 = 0; j3 < rw.length; j3++) { + row.push(new mathMLTree.MathNode("mtd", [buildGroup2(rw[j3], options2)])); } if (group2.tags && group2.tags[i2]) { row.unshift(glue); row.push(glue); if (group2.leqno) { - row.unshift(tag2); + row.unshift(tag); } else { - row.push(tag2); + row.push(tag); } } tbl.push(new mathMLTree.MathNode("mtr", row)); @@ -16281,14 +14625,14 @@ var __esbuild_esm_mermaid = (() => { }; } }); - htmlBuilder$5 = /* @__PURE__ */ __name((group2, options3) => { + htmlBuilder$5 = /* @__PURE__ */ __name((group2, options2) => { var font = group2.font; - var newOptions = options3.withFont(font); + var newOptions = options2.withFont(font); return buildGroup$1(group2.body, newOptions); }, "htmlBuilder$5"); - mathmlBuilder$4 = /* @__PURE__ */ __name((group2, options3) => { + mathmlBuilder$4 = /* @__PURE__ */ __name((group2, options2) => { var font = group2.font; - var newOptions = options3.withFont(font); + var newOptions = options2.withFont(font); return buildGroup2(group2.body, newOptions); }, "mathmlBuilder$4"); fontAliases = { @@ -16305,6 +14649,7 @@ var __esbuild_esm_mermaid = (() => { "\\mathit", "\\mathbf", "\\mathnormal", + "\\mathsfit", // families "\\mathbb", "\\mathcal", @@ -16399,71 +14744,71 @@ var __esbuild_esm_mermaid = (() => { htmlBuilder: htmlBuilder$5, mathmlBuilder: mathmlBuilder$4 }); - adjustStyle = /* @__PURE__ */ __name((size5, originalStyle) => { + adjustStyle = /* @__PURE__ */ __name((size4, originalStyle) => { var style3 = originalStyle; - if (size5 === "display") { + if (size4 === "display") { style3 = style3.id >= Style$1.SCRIPT.id ? style3.text() : Style$1.DISPLAY; - } else if (size5 === "text" && style3.size === Style$1.DISPLAY.size) { + } else if (size4 === "text" && style3.size === Style$1.DISPLAY.size) { style3 = Style$1.TEXT; - } else if (size5 === "script") { + } else if (size4 === "script") { style3 = Style$1.SCRIPT; - } else if (size5 === "scriptscript") { + } else if (size4 === "scriptscript") { style3 = Style$1.SCRIPTSCRIPT; } return style3; }, "adjustStyle"); - htmlBuilder$4 = /* @__PURE__ */ __name((group2, options3) => { - var style3 = adjustStyle(group2.size, options3.style); + htmlBuilder$4 = /* @__PURE__ */ __name((group2, options2) => { + var style3 = adjustStyle(group2.size, options2.style); var nstyle = style3.fracNum(); var dstyle = style3.fracDen(); var newOptions; - newOptions = options3.havingStyle(nstyle); - var numerm = buildGroup$1(group2.numer, newOptions, options3); + newOptions = options2.havingStyle(nstyle); + var numerm = buildGroup$1(group2.numer, newOptions, options2); if (group2.continued) { - var hStrut = 8.5 / options3.fontMetrics().ptPerEm; - var dStrut = 3.5 / options3.fontMetrics().ptPerEm; + var hStrut = 8.5 / options2.fontMetrics().ptPerEm; + var dStrut = 3.5 / options2.fontMetrics().ptPerEm; numerm.height = numerm.height < hStrut ? hStrut : numerm.height; numerm.depth = numerm.depth < dStrut ? dStrut : numerm.depth; } - newOptions = options3.havingStyle(dstyle); - var denomm = buildGroup$1(group2.denom, newOptions, options3); + newOptions = options2.havingStyle(dstyle); + var denomm = buildGroup$1(group2.denom, newOptions, options2); var rule; var ruleWidth; var ruleSpacing; if (group2.hasBarLine) { if (group2.barSize) { - ruleWidth = calculateSize2(group2.barSize, options3); - rule = buildCommon.makeLineSpan("frac-line", options3, ruleWidth); + ruleWidth = calculateSize2(group2.barSize, options2); + rule = buildCommon.makeLineSpan("frac-line", options2, ruleWidth); } else { - rule = buildCommon.makeLineSpan("frac-line", options3); + rule = buildCommon.makeLineSpan("frac-line", options2); } ruleWidth = rule.height; ruleSpacing = rule.height; } else { rule = null; ruleWidth = 0; - ruleSpacing = options3.fontMetrics().defaultRuleThickness; + ruleSpacing = options2.fontMetrics().defaultRuleThickness; } var numShift; var clearance; var denomShift; if (style3.size === Style$1.DISPLAY.size || group2.size === "display") { - numShift = options3.fontMetrics().num1; + numShift = options2.fontMetrics().num1; if (ruleWidth > 0) { clearance = 3 * ruleSpacing; } else { clearance = 7 * ruleSpacing; } - denomShift = options3.fontMetrics().denom1; + denomShift = options2.fontMetrics().denom1; } else { if (ruleWidth > 0) { - numShift = options3.fontMetrics().num2; + numShift = options2.fontMetrics().num2; clearance = ruleSpacing; } else { - numShift = options3.fontMetrics().num3; + numShift = options2.fontMetrics().num3; clearance = 3 * ruleSpacing; } - denomShift = options3.fontMetrics().denom2; + denomShift = options2.fontMetrics().denom2; } var frac; if (!rule) { @@ -16483,9 +14828,9 @@ var __esbuild_esm_mermaid = (() => { elem: numerm, shift: -numShift }] - }, options3); + }, options2); } else { - var axisHeight = options3.fontMetrics().axisHeight; + var axisHeight = options2.fontMetrics().axisHeight; if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) { numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth)); } @@ -16508,45 +14853,45 @@ var __esbuild_esm_mermaid = (() => { elem: numerm, shift: -numShift }] - }, options3); + }, options2); } - newOptions = options3.havingStyle(style3); - frac.height *= newOptions.sizeMultiplier / options3.sizeMultiplier; - frac.depth *= newOptions.sizeMultiplier / options3.sizeMultiplier; + newOptions = options2.havingStyle(style3); + frac.height *= newOptions.sizeMultiplier / options2.sizeMultiplier; + frac.depth *= newOptions.sizeMultiplier / options2.sizeMultiplier; var delimSize; if (style3.size === Style$1.DISPLAY.size) { - delimSize = options3.fontMetrics().delim1; + delimSize = options2.fontMetrics().delim1; } else if (style3.size === Style$1.SCRIPTSCRIPT.size) { - delimSize = options3.havingStyle(Style$1.SCRIPT).fontMetrics().delim2; + delimSize = options2.havingStyle(Style$1.SCRIPT).fontMetrics().delim2; } else { - delimSize = options3.fontMetrics().delim2; + delimSize = options2.fontMetrics().delim2; } var leftDelim; var rightDelim; if (group2.leftDelim == null) { - leftDelim = makeNullDelimiter(options3, ["mopen"]); + leftDelim = makeNullDelimiter(options2, ["mopen"]); } else { - leftDelim = delimiter.customSizedDelim(group2.leftDelim, delimSize, true, options3.havingStyle(style3), group2.mode, ["mopen"]); + leftDelim = delimiter.customSizedDelim(group2.leftDelim, delimSize, true, options2.havingStyle(style3), group2.mode, ["mopen"]); } if (group2.continued) { rightDelim = buildCommon.makeSpan([]); } else if (group2.rightDelim == null) { - rightDelim = makeNullDelimiter(options3, ["mclose"]); + rightDelim = makeNullDelimiter(options2, ["mclose"]); } else { - rightDelim = delimiter.customSizedDelim(group2.rightDelim, delimSize, true, options3.havingStyle(style3), group2.mode, ["mclose"]); + rightDelim = delimiter.customSizedDelim(group2.rightDelim, delimSize, true, options2.havingStyle(style3), group2.mode, ["mclose"]); } - return buildCommon.makeSpan(["mord"].concat(newOptions.sizingClasses(options3)), [leftDelim, buildCommon.makeSpan(["mfrac"], [frac]), rightDelim], options3); + return buildCommon.makeSpan(["mord"].concat(newOptions.sizingClasses(options2)), [leftDelim, buildCommon.makeSpan(["mfrac"], [frac]), rightDelim], options2); }, "htmlBuilder$4"); - mathmlBuilder$3 = /* @__PURE__ */ __name((group2, options3) => { - var node2 = new mathMLTree.MathNode("mfrac", [buildGroup2(group2.numer, options3), buildGroup2(group2.denom, options3)]); + mathmlBuilder$3 = /* @__PURE__ */ __name((group2, options2) => { + var node2 = new mathMLTree.MathNode("mfrac", [buildGroup2(group2.numer, options2), buildGroup2(group2.denom, options2)]); if (!group2.hasBarLine) { node2.setAttribute("linethickness", "0px"); } else if (group2.barSize) { - var ruleWidth = calculateSize2(group2.barSize, options3); + var ruleWidth = calculateSize2(group2.barSize, options2); node2.setAttribute("linethickness", makeEm(ruleWidth)); } - var style3 = adjustStyle(group2.size, options3.style); - if (style3.size !== options3.style.size) { + var style3 = adjustStyle(group2.size, options2.style); + if (style3.size !== options2.style.size) { node2 = new mathMLTree.MathNode("mstyle", [node2]); var isDisplay = style3.size === Style$1.DISPLAY.size ? "true" : "false"; node2.setAttribute("displaystyle", isDisplay); @@ -16598,7 +14943,7 @@ var __esbuild_esm_mermaid = (() => { var hasBarLine; var leftDelim = null; var rightDelim = null; - var size5 = "auto"; + var size4 = "auto"; switch (funcName) { case "\\dfrac": case "\\frac": @@ -16631,11 +14976,11 @@ var __esbuild_esm_mermaid = (() => { switch (funcName) { case "\\dfrac": case "\\dbinom": - size5 = "display"; + size4 = "display"; break; case "\\tfrac": case "\\tbinom": - size5 = "text"; + size4 = "text"; break; } return { @@ -16647,7 +14992,7 @@ var __esbuild_esm_mermaid = (() => { hasBarLine, leftDelim, rightDelim, - size: size5, + size: size4, barSize: null }; }, "handler"), @@ -16758,16 +15103,16 @@ var __esbuild_esm_mermaid = (() => { barSize = barNode.value; hasBarLine = barSize.number > 0; } - var size5 = "auto"; + var size4 = "auto"; var styl = args[3]; if (styl.type === "ordgroup") { if (styl.body.length > 0) { var textOrd = assertNodeType(styl.body[0], "textord"); - size5 = stylArray[Number(textOrd.text)]; + size4 = stylArray[Number(textOrd.text)]; } } else { styl = assertNodeType(styl, "textord"); - size5 = stylArray[Number(styl.text)]; + size4 = stylArray[Number(styl.text)]; } return { type: "genfrac", @@ -16779,7 +15124,7 @@ var __esbuild_esm_mermaid = (() => { barSize, leftDelim, rightDelim, - size: size5 + size: size4 }; }, htmlBuilder: htmlBuilder$4, @@ -16840,18 +15185,18 @@ var __esbuild_esm_mermaid = (() => { htmlBuilder: htmlBuilder$4, mathmlBuilder: mathmlBuilder$3 }); - htmlBuilder$3 = /* @__PURE__ */ __name((grp, options3) => { - var style3 = options3.style; + htmlBuilder$3 = /* @__PURE__ */ __name((grp, options2) => { + var style3 = options2.style; var supSubGroup; var group2; if (grp.type === "supsub") { - supSubGroup = grp.sup ? buildGroup$1(grp.sup, options3.havingStyle(style3.sup()), options3) : buildGroup$1(grp.sub, options3.havingStyle(style3.sub()), options3); + supSubGroup = grp.sup ? buildGroup$1(grp.sup, options2.havingStyle(style3.sup()), options2) : buildGroup$1(grp.sub, options2.havingStyle(style3.sub()), options2); group2 = assertNodeType(grp.base, "horizBrace"); } else { group2 = assertNodeType(grp, "horizBrace"); } - var body = buildGroup$1(group2.base, options3.havingBaseStyle(Style$1.DISPLAY)); - var braceBody = stretchy.svgSpan(group2, options3); + var body = buildGroup$1(group2.base, options2.havingBaseStyle(Style$1.DISPLAY)); + var braceBody = stretchy.svgSpan(group2, options2); var vlist; if (group2.isOver) { vlist = buildCommon.makeVList({ @@ -16866,7 +15211,7 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: braceBody }] - }, options3); + }, options2); vlist.children[0].children[0].children[1].classes.push("svg-align"); } else { vlist = buildCommon.makeVList({ @@ -16882,11 +15227,11 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: body }] - }, options3); + }, options2); vlist.children[0].children[0].children[0].classes.push("svg-align"); } if (supSubGroup) { - var vSpan = buildCommon.makeSpan(["mord", group2.isOver ? "mover" : "munder"], [vlist], options3); + var vSpan = buildCommon.makeSpan(["mord", group2.isOver ? "mover" : "munder"], [vlist], options2); if (group2.isOver) { vlist = buildCommon.makeVList({ positionType: "firstBaseline", @@ -16900,7 +15245,7 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: supSubGroup }] - }, options3); + }, options2); } else { vlist = buildCommon.makeVList({ positionType: "bottom", @@ -16915,14 +15260,14 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: vSpan }] - }, options3); + }, options2); } } - return buildCommon.makeSpan(["mord", group2.isOver ? "mover" : "munder"], [vlist], options3); + return buildCommon.makeSpan(["mord", group2.isOver ? "mover" : "munder"], [vlist], options2); }, "htmlBuilder$3"); - mathmlBuilder$2 = /* @__PURE__ */ __name((group2, options3) => { + mathmlBuilder$2 = /* @__PURE__ */ __name((group2, options2) => { var accentNode = stretchy.mathMLnode(group2.label); - return new mathMLTree.MathNode(group2.isOver ? "mover" : "munder", [buildGroup2(group2.base, options3), accentNode]); + return new mathMLTree.MathNode(group2.isOver ? "mover" : "munder", [buildGroup2(group2.base, options2), accentNode]); }, "mathmlBuilder$2"); defineFunction({ type: "horizBrace", @@ -16973,12 +15318,12 @@ var __esbuild_esm_mermaid = (() => { body: ordargument(body) }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var elements3 = buildExpression$1(group2.body, options3, false); - return buildCommon.makeAnchor(group2.href, [], elements3, options3); + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var elements2 = buildExpression$1(group2.body, options2, false); + return buildCommon.makeAnchor(group2.href, [], elements2, options2); }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var math2 = buildExpressionRow(group2.body, options3); + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var math2 = buildExpressionRow(group2.body, options2); if (!(math2 instanceof MathNode)) { math2 = new MathNode("mrow", [math2]); } @@ -17050,12 +15395,12 @@ var __esbuild_esm_mermaid = (() => { body: ordargument(args[0]) }; }, - htmlBuilder(group2, options3) { - var elements3 = buildExpression$1(group2.body, options3, false); - return buildCommon.makeFragment(elements3); + htmlBuilder(group2, options2) { + var elements2 = buildExpression$1(group2.body, options2, false); + return buildCommon.makeFragment(elements2); }, - mathmlBuilder(group2, options3) { - return new mathMLTree.MathNode("mrow", buildExpression2(group2.body, options3)); + mathmlBuilder(group2, options2) { + return new mathMLTree.MathNode("mrow", buildExpression2(group2.body, options2)); } }); defineFunction({ @@ -17102,9 +15447,9 @@ var __esbuild_esm_mermaid = (() => { }; break; case "\\htmlData": { - var data6 = value2.split(","); - for (var i2 = 0; i2 < data6.length; i2++) { - var keyVal = data6[i2].split("="); + var data5 = value2.split(","); + for (var i2 = 0; i2 < data5.length; i2++) { + var keyVal = data5[i2].split("="); if (keyVal.length !== 2) { throw new ParseError("Error parsing key-value for \\htmlData"); } @@ -17129,13 +15474,13 @@ var __esbuild_esm_mermaid = (() => { body: ordargument(body) }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var elements3 = buildExpression$1(group2.body, options3, false); + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var elements2 = buildExpression$1(group2.body, options2, false); var classes3 = ["enclosing"]; if (group2.attributes.class) { classes3.push(...group2.attributes.class.trim().split(/\s+/)); } - var span = buildCommon.makeSpan(classes3, elements3, options3); + var span = buildCommon.makeSpan(classes3, elements2, options2); for (var attr in group2.attributes) { if (attr !== "class" && group2.attributes.hasOwnProperty(attr)) { span.setAttribute(attr, group2.attributes[attr]); @@ -17143,8 +15488,8 @@ var __esbuild_esm_mermaid = (() => { } return span; }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - return buildExpressionRow(group2.body, options3); + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + return buildExpressionRow(group2.body, options2); }, "mathmlBuilder") }); defineFunction({ @@ -17165,12 +15510,12 @@ var __esbuild_esm_mermaid = (() => { mathml: ordargument(args[1]) }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var elements3 = buildExpression$1(group2.html, options3, false); - return buildCommon.makeFragment(elements3); + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var elements2 = buildExpression$1(group2.html, options2, false); + return buildCommon.makeFragment(elements2); }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - return buildExpressionRow(group2.mathml, options3); + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + return buildExpressionRow(group2.mathml, options2); }, "mathmlBuilder") }); sizeData = /* @__PURE__ */ __name(function sizeData2(str2) { @@ -17184,15 +15529,15 @@ var __esbuild_esm_mermaid = (() => { if (!match2) { throw new ParseError("Invalid size: '" + str2 + "' in \\includegraphics"); } - var data6 = { + var data5 = { number: +(match2[1] + match2[2]), // sign + magnitude, cast to number unit: match2[3] }; - if (!validUnit(data6)) { - throw new ParseError("Invalid unit: '" + data6.unit + "' in \\includegraphics."); + if (!validUnit(data5)) { + throw new ParseError("Invalid unit: '" + data5.unit + "' in \\includegraphics."); } - return data6; + return data5; } }, "sizeData"); defineFunction({ @@ -17269,15 +15614,15 @@ var __esbuild_esm_mermaid = (() => { src }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var height2 = calculateSize2(group2.height, options3); + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var height2 = calculateSize2(group2.height, options2); var depth = 0; if (group2.totalheight.number > 0) { - depth = calculateSize2(group2.totalheight, options3) - height2; + depth = calculateSize2(group2.totalheight, options2) - height2; } var width3 = 0; if (group2.width.number > 0) { - width3 = calculateSize2(group2.width, options3); + width3 = calculateSize2(group2.width, options2); } var style3 = { height: makeEm(height2 + depth) @@ -17293,18 +15638,18 @@ var __esbuild_esm_mermaid = (() => { node2.depth = depth; return node2; }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { var node2 = new mathMLTree.MathNode("mglyph", []); node2.setAttribute("alt", group2.alt); - var height2 = calculateSize2(group2.height, options3); + var height2 = calculateSize2(group2.height, options2); var depth = 0; if (group2.totalheight.number > 0) { - depth = calculateSize2(group2.totalheight, options3) - height2; + depth = calculateSize2(group2.totalheight, options2) - height2; node2.setAttribute("valign", makeEm(-depth)); } node2.setAttribute("height", makeEm(height2 + depth)); if (group2.width.number > 0) { - var width3 = calculateSize2(group2.width, options3); + var width3 = calculateSize2(group2.width, options2); node2.setAttribute("width", makeEm(width3)); } node2.setAttribute("src", group2.src); @@ -17325,13 +15670,13 @@ var __esbuild_esm_mermaid = (() => { parser: parser24, funcName } = _ref; - var size5 = assertNodeType(args[0], "size"); + var size4 = assertNodeType(args[0], "size"); if (parser24.settings.strict) { var mathFunction = funcName[1] === "m"; - var muUnit = size5.value.unit === "mu"; + var muUnit = size4.value.unit === "mu"; if (mathFunction) { if (!muUnit) { - parser24.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + funcName + " supports only mu units, " + ("not " + size5.value.unit + " units")); + parser24.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + funcName + " supports only mu units, " + ("not " + size4.value.unit + " units")); } if (parser24.mode !== "math") { parser24.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + funcName + " works only in math mode"); @@ -17345,14 +15690,14 @@ var __esbuild_esm_mermaid = (() => { return { type: "kern", mode: parser24.mode, - dimension: size5.value + dimension: size4.value }; }, - htmlBuilder(group2, options3) { - return buildCommon.makeGlue(group2.dimension, options3); + htmlBuilder(group2, options2) { + return buildCommon.makeGlue(group2.dimension, options2); }, - mathmlBuilder(group2, options3) { - var dimension = calculateSize2(group2.dimension, options3); + mathmlBuilder(group2, options2) { + var dimension = calculateSize2(group2.dimension, options2); return new mathMLTree.SpaceNode(dimension); } }); @@ -17376,27 +15721,27 @@ var __esbuild_esm_mermaid = (() => { body }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { var inner2; if (group2.alignment === "clap") { - inner2 = buildCommon.makeSpan([], [buildGroup$1(group2.body, options3)]); - inner2 = buildCommon.makeSpan(["inner"], [inner2], options3); + inner2 = buildCommon.makeSpan([], [buildGroup$1(group2.body, options2)]); + inner2 = buildCommon.makeSpan(["inner"], [inner2], options2); } else { - inner2 = buildCommon.makeSpan(["inner"], [buildGroup$1(group2.body, options3)]); + inner2 = buildCommon.makeSpan(["inner"], [buildGroup$1(group2.body, options2)]); } var fix = buildCommon.makeSpan(["fix"], []); - var node2 = buildCommon.makeSpan([group2.alignment], [inner2, fix], options3); + var node2 = buildCommon.makeSpan([group2.alignment], [inner2, fix], options2); var strut = buildCommon.makeSpan(["strut"]); strut.style.height = makeEm(node2.height + node2.depth); if (node2.depth) { strut.style.verticalAlign = makeEm(-node2.depth); } node2.children.unshift(strut); - node2 = buildCommon.makeSpan(["thinbox"], [node2], options3); - return buildCommon.makeSpan(["mord", "vbox"], [node2], options3); + node2 = buildCommon.makeSpan(["thinbox"], [node2], options2); + return buildCommon.makeSpan(["mord", "vbox"], [node2], options2); }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var node2 = new mathMLTree.MathNode("mpadded", [buildGroup2(group2.body, options3)]); + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var node2 = new mathMLTree.MathNode("mpadded", [buildGroup2(group2.body, options2)]); if (group2.alignment !== "rlap") { var offset = group2.alignment === "llap" ? "-1" : "-0.5"; node2.setAttribute("lspace", offset + "width"); @@ -17445,8 +15790,8 @@ var __esbuild_esm_mermaid = (() => { throw new ParseError("Mismatched " + context.funcName); } }); - chooseMathStyle = /* @__PURE__ */ __name((group2, options3) => { - switch (options3.style.size) { + chooseMathStyle = /* @__PURE__ */ __name((group2, options2) => { + switch (options2.style.size) { case Style$1.DISPLAY.size: return group2.display; case Style$1.TEXT.size: @@ -17479,44 +15824,44 @@ var __esbuild_esm_mermaid = (() => { scriptscript: ordargument(args[3]) }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var body = chooseMathStyle(group2, options3); - var elements3 = buildExpression$1(body, options3, false); - return buildCommon.makeFragment(elements3); + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var body = chooseMathStyle(group2, options2); + var elements2 = buildExpression$1(body, options2, false); + return buildCommon.makeFragment(elements2); }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var body = chooseMathStyle(group2, options3); - return buildExpressionRow(body, options3); + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var body = chooseMathStyle(group2, options2); + return buildExpressionRow(body, options2); }, "mathmlBuilder") }); - assembleSupSub = /* @__PURE__ */ __name((base, supGroup, subGroup, options3, style3, slant, baseShift) => { + assembleSupSub = /* @__PURE__ */ __name((base, supGroup, subGroup, options2, style3, slant, baseShift) => { base = buildCommon.makeSpan([], [base]); var subIsSingleCharacter = subGroup && utils.isCharacterBox(subGroup); var sub2; var sup2; if (supGroup) { - var elem = buildGroup$1(supGroup, options3.havingStyle(style3.sup()), options3); + var elem = buildGroup$1(supGroup, options2.havingStyle(style3.sup()), options2); sup2 = { elem, - kern: Math.max(options3.fontMetrics().bigOpSpacing1, options3.fontMetrics().bigOpSpacing3 - elem.depth) + kern: Math.max(options2.fontMetrics().bigOpSpacing1, options2.fontMetrics().bigOpSpacing3 - elem.depth) }; } if (subGroup) { - var _elem = buildGroup$1(subGroup, options3.havingStyle(style3.sub()), options3); + var _elem = buildGroup$1(subGroup, options2.havingStyle(style3.sub()), options2); sub2 = { elem: _elem, - kern: Math.max(options3.fontMetrics().bigOpSpacing2, options3.fontMetrics().bigOpSpacing4 - _elem.height) + kern: Math.max(options2.fontMetrics().bigOpSpacing2, options2.fontMetrics().bigOpSpacing4 - _elem.height) }; } var finalGroup; if (sup2 && sub2) { - var bottom2 = options3.fontMetrics().bigOpSpacing5 + sub2.elem.height + sub2.elem.depth + sub2.kern + base.depth + baseShift; + var bottom2 = options2.fontMetrics().bigOpSpacing5 + sub2.elem.height + sub2.elem.depth + sub2.kern + base.depth + baseShift; finalGroup = buildCommon.makeVList({ positionType: "bottom", positionData: bottom2, children: [{ type: "kern", - size: options3.fontMetrics().bigOpSpacing5 + size: options2.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: sub2.elem, @@ -17536,9 +15881,9 @@ var __esbuild_esm_mermaid = (() => { marginLeft: makeEm(slant) }, { type: "kern", - size: options3.fontMetrics().bigOpSpacing5 + size: options2.fontMetrics().bigOpSpacing5 }] - }, options3); + }, options2); } else if (sub2) { var top2 = base.height - baseShift; finalGroup = buildCommon.makeVList({ @@ -17546,7 +15891,7 @@ var __esbuild_esm_mermaid = (() => { positionData: top2, children: [{ type: "kern", - size: options3.fontMetrics().bigOpSpacing5 + size: options2.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: sub2.elem, @@ -17558,7 +15903,7 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: base }] - }, options3); + }, options2); } else if (sup2) { var _bottom = base.depth + baseShift; finalGroup = buildCommon.makeVList({ @@ -17576,22 +15921,22 @@ var __esbuild_esm_mermaid = (() => { marginLeft: makeEm(slant) }, { type: "kern", - size: options3.fontMetrics().bigOpSpacing5 + size: options2.fontMetrics().bigOpSpacing5 }] - }, options3); + }, options2); } else { return base; } var parts = [finalGroup]; if (sub2 && slant !== 0 && !subIsSingleCharacter) { - var spacer = buildCommon.makeSpan(["mspace"], [], options3); + var spacer = buildCommon.makeSpan(["mspace"], [], options2); spacer.style.marginRight = makeEm(slant); parts.unshift(spacer); } - return buildCommon.makeSpan(["mop", "op-limits"], parts, options3); + return buildCommon.makeSpan(["mop", "op-limits"], parts, options2); }, "assembleSupSub"); noSuccessor = ["\\smallint"]; - htmlBuilder$2 = /* @__PURE__ */ __name((grp, options3) => { + htmlBuilder$2 = /* @__PURE__ */ __name((grp, options2) => { var supGroup; var subGroup; var hasLimits = false; @@ -17604,7 +15949,7 @@ var __esbuild_esm_mermaid = (() => { } else { group2 = assertNodeType(grp, "op"); } - var style3 = options3.style; + var style3 = options2.style; var large = false; if (style3.size === Style$1.DISPLAY.size && group2.symbol && !utils.contains(noSuccessor, group2.name)) { large = true; @@ -17617,10 +15962,10 @@ var __esbuild_esm_mermaid = (() => { stash = group2.name.slice(1); group2.name = stash === "oiint" ? "\\iint" : "\\iiint"; } - base = buildCommon.makeSymbol(group2.name, fontName, "math", options3, ["mop", "op-symbol", large ? "large-op" : "small-op"]); + base = buildCommon.makeSymbol(group2.name, fontName, "math", options2, ["mop", "op-symbol", large ? "large-op" : "small-op"]); if (stash.length > 0) { var italic = base.italic; - var oval = buildCommon.staticSvg(stash + "Size" + (large ? "2" : "1"), options3); + var oval = buildCommon.staticSvg(stash + "Size" + (large ? "2" : "1"), options2); base = buildCommon.makeVList({ positionType: "individualShift", children: [{ @@ -17632,34 +15977,34 @@ var __esbuild_esm_mermaid = (() => { elem: oval, shift: large ? 0.08 : 0 }] - }, options3); + }, options2); group2.name = "\\" + stash; base.classes.unshift("mop"); base.italic = italic; } } else if (group2.body) { - var inner2 = buildExpression$1(group2.body, options3, true); + var inner2 = buildExpression$1(group2.body, options2, true); if (inner2.length === 1 && inner2[0] instanceof SymbolNode) { base = inner2[0]; base.classes[0] = "mop"; } else { - base = buildCommon.makeSpan(["mop"], inner2, options3); + base = buildCommon.makeSpan(["mop"], inner2, options2); } } else { var output2 = []; for (var i2 = 1; i2 < group2.name.length; i2++) { - output2.push(buildCommon.mathsym(group2.name[i2], group2.mode, options3)); + output2.push(buildCommon.mathsym(group2.name[i2], group2.mode, options2)); } - base = buildCommon.makeSpan(["mop"], output2, options3); + base = buildCommon.makeSpan(["mop"], output2, options2); } var baseShift = 0; var slant = 0; if ((base instanceof SymbolNode || group2.name === "\\oiint" || group2.name === "\\oiiint") && !group2.suppressBaseShift) { - baseShift = (base.height - base.depth) / 2 - options3.fontMetrics().axisHeight; + baseShift = (base.height - base.depth) / 2 - options2.fontMetrics().axisHeight; slant = base.italic; } if (hasLimits) { - return assembleSupSub(base, supGroup, subGroup, options3, style3, slant, baseShift); + return assembleSupSub(base, supGroup, subGroup, options2, style3, slant, baseShift); } else { if (baseShift) { base.style.position = "relative"; @@ -17668,7 +16013,7 @@ var __esbuild_esm_mermaid = (() => { return base; } }, "htmlBuilder$2"); - mathmlBuilder$1 = /* @__PURE__ */ __name((group2, options3) => { + mathmlBuilder$1 = /* @__PURE__ */ __name((group2, options2) => { var node2; if (group2.symbol) { node2 = new MathNode("mo", [makeText(group2.name, group2.mode)]); @@ -17676,7 +16021,7 @@ var __esbuild_esm_mermaid = (() => { node2.setAttribute("largeop", "false"); } } else if (group2.body) { - node2 = new MathNode("mo", buildExpression2(group2.body, options3)); + node2 = new MathNode("mo", buildExpression2(group2.body, options2)); } else { node2 = new MathNode("mi", [new TextNode(group2.name.slice(1))]); var operator = new MathNode("mo", [makeText("\u2061", "text")]); @@ -17834,7 +16179,7 @@ var __esbuild_esm_mermaid = (() => { htmlBuilder: htmlBuilder$2, mathmlBuilder: mathmlBuilder$1 }); - htmlBuilder$1 = /* @__PURE__ */ __name((grp, options3) => { + htmlBuilder$1 = /* @__PURE__ */ __name((grp, options2) => { var supGroup; var subGroup; var hasLimits = false; @@ -17861,25 +16206,25 @@ var __esbuild_esm_mermaid = (() => { return child2; } }); - var expression = buildExpression$1(body, options3.withFont("mathrm"), true); + var expression = buildExpression$1(body, options2.withFont("mathrm"), true); for (var i2 = 0; i2 < expression.length; i2++) { var child = expression[i2]; if (child instanceof SymbolNode) { child.text = child.text.replace(/\u2212/, "-").replace(/\u2217/, "*"); } } - base = buildCommon.makeSpan(["mop"], expression, options3); + base = buildCommon.makeSpan(["mop"], expression, options2); } else { - base = buildCommon.makeSpan(["mop"], [], options3); + base = buildCommon.makeSpan(["mop"], [], options2); } if (hasLimits) { - return assembleSupSub(base, supGroup, subGroup, options3, options3.style, 0, 0); + return assembleSupSub(base, supGroup, subGroup, options2, options2.style, 0, 0); } else { return base; } }, "htmlBuilder$1"); - mathmlBuilder2 = /* @__PURE__ */ __name((group2, options3) => { - var expression = buildExpression2(group2.body, options3.withFont("mathrm")); + mathmlBuilder2 = /* @__PURE__ */ __name((group2, options2) => { + var expression = buildExpression2(group2.body, options2.withFont("mathrm")); var isAllString = true; for (var i2 = 0; i2 < expression.length; i2++) { var node2 = expression[i2]; @@ -17949,14 +16294,14 @@ var __esbuild_esm_mermaid = (() => { defineMacro("\\operatorname", "\\@ifstar\\operatornamewithlimits\\operatorname@"); defineFunctionBuilders({ type: "ordgroup", - htmlBuilder(group2, options3) { + htmlBuilder(group2, options2) { if (group2.semisimple) { - return buildCommon.makeFragment(buildExpression$1(group2.body, options3, false)); + return buildCommon.makeFragment(buildExpression$1(group2.body, options2, false)); } - return buildCommon.makeSpan(["mord"], buildExpression$1(group2.body, options3, true), options3); + return buildCommon.makeSpan(["mord"], buildExpression$1(group2.body, options2, true), options2); }, - mathmlBuilder(group2, options3) { - return buildExpressionRow(group2.body, options3, true); + mathmlBuilder(group2, options2) { + return buildExpressionRow(group2.body, options2, true); } }); defineFunction({ @@ -17976,10 +16321,10 @@ var __esbuild_esm_mermaid = (() => { body }; }, - htmlBuilder(group2, options3) { - var innerGroup = buildGroup$1(group2.body, options3.havingCrampedStyle()); - var line2 = buildCommon.makeLineSpan("overline-line", options3); - var defaultRuleThickness = options3.fontMetrics().defaultRuleThickness; + htmlBuilder(group2, options2) { + var innerGroup = buildGroup$1(group2.body, options2.havingCrampedStyle()); + var line2 = buildCommon.makeLineSpan("overline-line", options2); + var defaultRuleThickness = options2.fontMetrics().defaultRuleThickness; var vlist = buildCommon.makeVList({ positionType: "firstBaseline", children: [{ @@ -17995,13 +16340,13 @@ var __esbuild_esm_mermaid = (() => { type: "kern", size: defaultRuleThickness }] - }, options3); - return buildCommon.makeSpan(["mord", "overline"], [vlist], options3); + }, options2); + return buildCommon.makeSpan(["mord", "overline"], [vlist], options2); }, - mathmlBuilder(group2, options3) { + mathmlBuilder(group2, options2) { var operator = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode("\u203E")]); operator.setAttribute("stretchy", "true"); - var node2 = new mathMLTree.MathNode("mover", [buildGroup2(group2.body, options3), operator]); + var node2 = new mathMLTree.MathNode("mover", [buildGroup2(group2.body, options2), operator]); node2.setAttribute("accent", "true"); return node2; } @@ -18024,12 +16369,12 @@ var __esbuild_esm_mermaid = (() => { body: ordargument(body) }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var elements3 = buildExpression$1(group2.body, options3.withPhantom(), false); - return buildCommon.makeFragment(elements3); + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var elements2 = buildExpression$1(group2.body, options2.withPhantom(), false); + return buildCommon.makeFragment(elements2); }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var inner2 = buildExpression2(group2.body, options3); + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var inner2 = buildExpression2(group2.body, options2); return new mathMLTree.MathNode("mphantom", inner2); }, "mathmlBuilder") }); @@ -18051,8 +16396,8 @@ var __esbuild_esm_mermaid = (() => { body }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var node2 = buildCommon.makeSpan([], [buildGroup$1(group2.body, options3.withPhantom())]); + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var node2 = buildCommon.makeSpan([], [buildGroup$1(group2.body, options2.withPhantom())]); node2.height = 0; node2.depth = 0; if (node2.children) { @@ -18067,11 +16412,11 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: node2 }] - }, options3); - return buildCommon.makeSpan(["mord"], [node2], options3); + }, options2); + return buildCommon.makeSpan(["mord"], [node2], options2); }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var inner2 = buildExpression2(ordargument(group2.body), options3); + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var inner2 = buildExpression2(ordargument(group2.body), options2); var phantom = new mathMLTree.MathNode("mphantom", inner2); var node2 = new mathMLTree.MathNode("mpadded", [phantom]); node2.setAttribute("height", "0px"); @@ -18097,13 +16442,13 @@ var __esbuild_esm_mermaid = (() => { body }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var inner2 = buildCommon.makeSpan(["inner"], [buildGroup$1(group2.body, options3.withPhantom())]); + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var inner2 = buildCommon.makeSpan(["inner"], [buildGroup$1(group2.body, options2.withPhantom())]); var fix = buildCommon.makeSpan(["fix"], []); - return buildCommon.makeSpan(["mord", "rlap"], [inner2, fix], options3); + return buildCommon.makeSpan(["mord", "rlap"], [inner2, fix], options2); }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var inner2 = buildExpression2(ordargument(group2.body), options3); + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var inner2 = buildExpression2(ordargument(group2.body), options2); var phantom = new mathMLTree.MathNode("mphantom", inner2); var node2 = new mathMLTree.MathNode("mpadded", [phantom]); node2.setAttribute("width", "0px"); @@ -18131,9 +16476,9 @@ var __esbuild_esm_mermaid = (() => { body }; }, - htmlBuilder(group2, options3) { - var body = buildGroup$1(group2.body, options3); - var dy = calculateSize2(group2.dy, options3); + htmlBuilder(group2, options2) { + var body = buildGroup$1(group2.body, options2); + var dy = calculateSize2(group2.dy, options2); return buildCommon.makeVList({ positionType: "shift", positionData: -dy, @@ -18141,10 +16486,10 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: body }] - }, options3); + }, options2); }, - mathmlBuilder(group2, options3) { - var node2 = new mathMLTree.MathNode("mpadded", [buildGroup2(group2.body, options3)]); + mathmlBuilder(group2, options2) { + var node2 = new mathMLTree.MathNode("mpadded", [buildGroup2(group2.body, options2)]); var dy = group2.dy.number + group2.dy.unit; node2.setAttribute("voffset", dy); return node2; @@ -18155,7 +16500,8 @@ var __esbuild_esm_mermaid = (() => { names: ["\\relax"], props: { numArgs: 0, - allowedInText: true + allowedInText: true, + allowedInArgument: true }, handler(_ref) { var { @@ -18173,6 +16519,8 @@ var __esbuild_esm_mermaid = (() => { props: { numArgs: 2, numOptionalArgs: 1, + allowedInText: true, + allowedInMath: true, argTypes: ["size", "size", "size"] }, handler(_ref, args, optArgs) { @@ -18190,25 +16538,25 @@ var __esbuild_esm_mermaid = (() => { height: height2.value }; }, - htmlBuilder(group2, options3) { - var rule = buildCommon.makeSpan(["mord", "rule"], [], options3); - var width3 = calculateSize2(group2.width, options3); - var height2 = calculateSize2(group2.height, options3); - var shift2 = group2.shift ? calculateSize2(group2.shift, options3) : 0; + htmlBuilder(group2, options2) { + var rule = buildCommon.makeSpan(["mord", "rule"], [], options2); + var width3 = calculateSize2(group2.width, options2); + var height2 = calculateSize2(group2.height, options2); + var shift2 = group2.shift ? calculateSize2(group2.shift, options2) : 0; rule.style.borderRightWidth = makeEm(width3); rule.style.borderTopWidth = makeEm(height2); rule.style.bottom = makeEm(shift2); rule.width = width3; rule.height = height2 + shift2; rule.depth = -shift2; - rule.maxFontSize = height2 * 1.125 * options3.sizeMultiplier; + rule.maxFontSize = height2 * 1.125 * options2.sizeMultiplier; return rule; }, - mathmlBuilder(group2, options3) { - var width3 = calculateSize2(group2.width, options3); - var height2 = calculateSize2(group2.height, options3); - var shift2 = group2.shift ? calculateSize2(group2.shift, options3) : 0; - var color2 = options3.color && options3.getColor() || "black"; + mathmlBuilder(group2, options2) { + var width3 = calculateSize2(group2.width, options2); + var height2 = calculateSize2(group2.height, options2); + var shift2 = group2.shift ? calculateSize2(group2.shift, options2) : 0; + var color2 = options2.color && options2.getColor() || "black"; var rule = new mathMLTree.MathNode("mspace"); rule.setAttribute("mathbackground", color2); rule.setAttribute("width", makeEm(width3)); @@ -18226,9 +16574,9 @@ var __esbuild_esm_mermaid = (() => { }); __name(sizingGroup, "sizingGroup"); sizeFuncs = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"]; - htmlBuilder2 = /* @__PURE__ */ __name((group2, options3) => { - var newOptions = options3.havingSize(group2.size); - return sizingGroup(group2.body, newOptions, options3); + htmlBuilder2 = /* @__PURE__ */ __name((group2, options2) => { + var newOptions = options2.havingSize(group2.size); + return sizingGroup(group2.body, newOptions, options2); }, "htmlBuilder"); defineFunction({ type: "sizing", @@ -18253,8 +16601,8 @@ var __esbuild_esm_mermaid = (() => { }; }, "handler"), htmlBuilder: htmlBuilder2, - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var newOptions = options3.havingSize(group2.size); + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var newOptions = options2.havingSize(group2.size); var inner2 = buildExpression2(group2.body, newOptions); var node2 = new mathMLTree.MathNode("mstyle", inner2); node2.setAttribute("mathsize", makeEm(newOptions.sizeMultiplier)); @@ -18304,8 +16652,8 @@ var __esbuild_esm_mermaid = (() => { smashDepth }; }, "handler"), - htmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var node2 = buildCommon.makeSpan([], [buildGroup$1(group2.body, options3)]); + htmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var node2 = buildCommon.makeSpan([], [buildGroup$1(group2.body, options2)]); if (!group2.smashHeight && !group2.smashDepth) { return node2; } @@ -18331,11 +16679,11 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: node2 }] - }, options3); - return buildCommon.makeSpan(["mord"], [smashedNode], options3); + }, options2); + return buildCommon.makeSpan(["mord"], [smashedNode], options2); }, "htmlBuilder"), - mathmlBuilder: /* @__PURE__ */ __name((group2, options3) => { - var node2 = new mathMLTree.MathNode("mpadded", [buildGroup2(group2.body, options3)]); + mathmlBuilder: /* @__PURE__ */ __name((group2, options2) => { + var node2 = new mathMLTree.MathNode("mpadded", [buildGroup2(group2.body, options2)]); if (group2.smashHeight) { node2.setAttribute("height", "0px"); } @@ -18365,25 +16713,25 @@ var __esbuild_esm_mermaid = (() => { index }; }, - htmlBuilder(group2, options3) { - var inner2 = buildGroup$1(group2.body, options3.havingCrampedStyle()); + htmlBuilder(group2, options2) { + var inner2 = buildGroup$1(group2.body, options2.havingCrampedStyle()); if (inner2.height === 0) { - inner2.height = options3.fontMetrics().xHeight; + inner2.height = options2.fontMetrics().xHeight; } - inner2 = buildCommon.wrapFragment(inner2, options3); - var metrics = options3.fontMetrics(); + inner2 = buildCommon.wrapFragment(inner2, options2); + var metrics = options2.fontMetrics(); var theta = metrics.defaultRuleThickness; - var phi = theta; - if (options3.style.id < Style$1.TEXT.id) { - phi = options3.fontMetrics().xHeight; + var phi2 = theta; + if (options2.style.id < Style$1.TEXT.id) { + phi2 = options2.fontMetrics().xHeight; } - var lineClearance = theta + phi / 4; + var lineClearance = theta + phi2 / 4; var minDelimiterHeight = inner2.height + inner2.depth + lineClearance + theta; var { span: img, ruleWidth, advanceWidth - } = delimiter.sqrtImage(minDelimiterHeight, options3); + } = delimiter.sqrtImage(minDelimiterHeight, options2); var delimDepth = img.height - ruleWidth; if (delimDepth > inner2.height + inner2.depth + lineClearance) { lineClearance = (lineClearance + delimDepth - inner2.height - inner2.depth) / 2; @@ -18406,12 +16754,12 @@ var __esbuild_esm_mermaid = (() => { type: "kern", size: ruleWidth }] - }, options3); + }, options2); if (!group2.index) { - return buildCommon.makeSpan(["mord", "sqrt"], [body], options3); + return buildCommon.makeSpan(["mord", "sqrt"], [body], options2); } else { - var newOptions = options3.havingStyle(Style$1.SCRIPTSCRIPT); - var rootm = buildGroup$1(group2.index, newOptions, options3); + var newOptions = options2.havingStyle(Style$1.SCRIPTSCRIPT); + var rootm = buildGroup$1(group2.index, newOptions, options2); var toShift = 0.6 * (body.height - body.depth); var rootVList = buildCommon.makeVList({ positionType: "shift", @@ -18420,17 +16768,17 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: rootm }] - }, options3); + }, options2); var rootVListWrap = buildCommon.makeSpan(["root"], [rootVList]); - return buildCommon.makeSpan(["mord", "sqrt"], [rootVListWrap, body], options3); + return buildCommon.makeSpan(["mord", "sqrt"], [rootVListWrap, body], options2); } }, - mathmlBuilder(group2, options3) { + mathmlBuilder(group2, options2) { var { body, index } = group2; - return index ? new mathMLTree.MathNode("mroot", [buildGroup2(body, options3), buildGroup2(index, options3)]) : new mathMLTree.MathNode("msqrt", [buildGroup2(body, options3)]); + return index ? new mathMLTree.MathNode("mroot", [buildGroup2(body, options2), buildGroup2(index, options2)]) : new mathMLTree.MathNode("msqrt", [buildGroup2(body, options2)]); } }); styleMap = { @@ -18464,14 +16812,14 @@ var __esbuild_esm_mermaid = (() => { body }; }, - htmlBuilder(group2, options3) { + htmlBuilder(group2, options2) { var newStyle = styleMap[group2.style]; - var newOptions = options3.havingStyle(newStyle).withFont(""); - return sizingGroup(group2.body, newOptions, options3); + var newOptions = options2.havingStyle(newStyle).withFont(""); + return sizingGroup(group2.body, newOptions, options2); }, - mathmlBuilder(group2, options3) { + mathmlBuilder(group2, options2) { var newStyle = styleMap[group2.style]; - var newOptions = options3.havingStyle(newStyle); + var newOptions = options2.havingStyle(newStyle); var inner2 = buildExpression2(group2.body, newOptions); var node2 = new mathMLTree.MathNode("mstyle", inner2); var styleAttributes = { @@ -18486,15 +16834,15 @@ var __esbuild_esm_mermaid = (() => { return node2; } }); - htmlBuilderDelegate = /* @__PURE__ */ __name(function htmlBuilderDelegate2(group2, options3) { + htmlBuilderDelegate = /* @__PURE__ */ __name(function htmlBuilderDelegate2(group2, options2) { var base = group2.base; if (!base) { return null; } else if (base.type === "op") { - var delegate = base.limits && (options3.style.size === Style$1.DISPLAY.size || base.alwaysHandleSupSub); + var delegate = base.limits && (options2.style.size === Style$1.DISPLAY.size || base.alwaysHandleSupSub); return delegate ? htmlBuilder$2 : null; } else if (base.type === "operatorname") { - var _delegate = base.alwaysHandleSupSub && (options3.style.size === Style$1.DISPLAY.size || base.limits); + var _delegate = base.alwaysHandleSupSub && (options2.style.size === Style$1.DISPLAY.size || base.limits); return _delegate ? htmlBuilder$1 : null; } else if (base.type === "accent") { return utils.isCharacterBox(base.base) ? htmlBuilder$a : null; @@ -18507,46 +16855,46 @@ var __esbuild_esm_mermaid = (() => { }, "htmlBuilderDelegate"); defineFunctionBuilders({ type: "supsub", - htmlBuilder(group2, options3) { - var builderDelegate = htmlBuilderDelegate(group2, options3); + htmlBuilder(group2, options2) { + var builderDelegate = htmlBuilderDelegate(group2, options2); if (builderDelegate) { - return builderDelegate(group2, options3); + return builderDelegate(group2, options2); } var { base: valueBase, sup: valueSup, sub: valueSub } = group2; - var base = buildGroup$1(valueBase, options3); + var base = buildGroup$1(valueBase, options2); var supm; var subm; - var metrics = options3.fontMetrics(); + var metrics = options2.fontMetrics(); var supShift = 0; var subShift = 0; var isCharacterBox3 = valueBase && utils.isCharacterBox(valueBase); if (valueSup) { - var newOptions = options3.havingStyle(options3.style.sup()); - supm = buildGroup$1(valueSup, newOptions, options3); + var newOptions = options2.havingStyle(options2.style.sup()); + supm = buildGroup$1(valueSup, newOptions, options2); if (!isCharacterBox3) { - supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options3.sizeMultiplier; + supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options2.sizeMultiplier; } } if (valueSub) { - var _newOptions = options3.havingStyle(options3.style.sub()); - subm = buildGroup$1(valueSub, _newOptions, options3); + var _newOptions = options2.havingStyle(options2.style.sub()); + subm = buildGroup$1(valueSub, _newOptions, options2); if (!isCharacterBox3) { - subShift = base.depth + _newOptions.fontMetrics().subDrop * _newOptions.sizeMultiplier / options3.sizeMultiplier; + subShift = base.depth + _newOptions.fontMetrics().subDrop * _newOptions.sizeMultiplier / options2.sizeMultiplier; } } var minSupShift; - if (options3.style === Style$1.DISPLAY) { + if (options2.style === Style$1.DISPLAY) { minSupShift = metrics.sup1; - } else if (options3.style.cramped) { + } else if (options2.style.cramped) { minSupShift = metrics.sup3; } else { minSupShift = metrics.sup2; } - var multiplier = options3.sizeMultiplier; + var multiplier = options2.sizeMultiplier; var marginRight = makeEm(0.5 / metrics.ptPerEm / multiplier); var marginLeft = null; if (subm) { @@ -18560,9 +16908,9 @@ var __esbuild_esm_mermaid = (() => { supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); subShift = Math.max(subShift, metrics.sub2); var ruleWidth = metrics.defaultRuleThickness; - var maxWidth = 4 * ruleWidth; - if (supShift - supm.depth - (subm.height - subShift) < maxWidth) { - subShift = maxWidth - (supShift - supm.depth) + subm.height; + var maxWidth2 = 4 * ruleWidth; + if (supShift - supm.depth - (subm.height - subShift) < maxWidth2) { + subShift = maxWidth2 - (supShift - supm.depth) + subm.height; var psi = 0.8 * metrics.xHeight - (supShift - supm.depth); if (psi > 0) { supShift += psi; @@ -18584,7 +16932,7 @@ var __esbuild_esm_mermaid = (() => { supsub = buildCommon.makeVList({ positionType: "individualShift", children: vlistElem - }, options3); + }, options2); } else if (subm) { subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight); var _vlistElem = [{ @@ -18597,7 +16945,7 @@ var __esbuild_esm_mermaid = (() => { positionType: "shift", positionData: subShift, children: _vlistElem - }, options3); + }, options2); } else if (supm) { supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); supsub = buildCommon.makeVList({ @@ -18608,14 +16956,14 @@ var __esbuild_esm_mermaid = (() => { elem: supm, marginRight }] - }, options3); + }, options2); } else { throw new Error("supsub must have either sup or sub."); } var mclass = getTypeOfDomTree(base, "right") || "mord"; - return buildCommon.makeSpan([mclass], [base, buildCommon.makeSpan(["msupsub"], [supsub])], options3); + return buildCommon.makeSpan([mclass], [base, buildCommon.makeSpan(["msupsub"], [supsub])], options2); }, - mathmlBuilder(group2, options3) { + mathmlBuilder(group2, options2) { var isBrace = false; var isOver; var isSup; @@ -18629,39 +16977,39 @@ var __esbuild_esm_mermaid = (() => { if (group2.base && (group2.base.type === "op" || group2.base.type === "operatorname")) { group2.base.parentIsSupSub = true; } - var children2 = [buildGroup2(group2.base, options3)]; + var children2 = [buildGroup2(group2.base, options2)]; if (group2.sub) { - children2.push(buildGroup2(group2.sub, options3)); + children2.push(buildGroup2(group2.sub, options2)); } if (group2.sup) { - children2.push(buildGroup2(group2.sup, options3)); + children2.push(buildGroup2(group2.sup, options2)); } var nodeType3; if (isBrace) { nodeType3 = isOver ? "mover" : "munder"; } else if (!group2.sub) { var base = group2.base; - if (base && base.type === "op" && base.limits && (options3.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) { + if (base && base.type === "op" && base.limits && (options2.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) { nodeType3 = "mover"; - } else if (base && base.type === "operatorname" && base.alwaysHandleSupSub && (base.limits || options3.style === Style$1.DISPLAY)) { + } else if (base && base.type === "operatorname" && base.alwaysHandleSupSub && (base.limits || options2.style === Style$1.DISPLAY)) { nodeType3 = "mover"; } else { nodeType3 = "msup"; } } else if (!group2.sup) { var _base = group2.base; - if (_base && _base.type === "op" && _base.limits && (options3.style === Style$1.DISPLAY || _base.alwaysHandleSupSub)) { + if (_base && _base.type === "op" && _base.limits && (options2.style === Style$1.DISPLAY || _base.alwaysHandleSupSub)) { nodeType3 = "munder"; - } else if (_base && _base.type === "operatorname" && _base.alwaysHandleSupSub && (_base.limits || options3.style === Style$1.DISPLAY)) { + } else if (_base && _base.type === "operatorname" && _base.alwaysHandleSupSub && (_base.limits || options2.style === Style$1.DISPLAY)) { nodeType3 = "munder"; } else { nodeType3 = "msub"; } } else { var _base2 = group2.base; - if (_base2 && _base2.type === "op" && _base2.limits && options3.style === Style$1.DISPLAY) { + if (_base2 && _base2.type === "op" && _base2.limits && options2.style === Style$1.DISPLAY) { nodeType3 = "munderover"; - } else if (_base2 && _base2.type === "operatorname" && _base2.alwaysHandleSupSub && (options3.style === Style$1.DISPLAY || _base2.limits)) { + } else if (_base2 && _base2.type === "operatorname" && _base2.alwaysHandleSupSub && (options2.style === Style$1.DISPLAY || _base2.limits)) { nodeType3 = "munderover"; } else { nodeType3 = "msubsup"; @@ -18672,13 +17020,13 @@ var __esbuild_esm_mermaid = (() => { }); defineFunctionBuilders({ type: "atom", - htmlBuilder(group2, options3) { - return buildCommon.mathsym(group2.text, group2.mode, options3, ["m" + group2.family]); + htmlBuilder(group2, options2) { + return buildCommon.mathsym(group2.text, group2.mode, options2, ["m" + group2.family]); }, - mathmlBuilder(group2, options3) { + mathmlBuilder(group2, options2) { var node2 = new mathMLTree.MathNode("mo", [makeText(group2.text, group2.mode)]); if (group2.family === "bin") { - var variant = getVariant(group2, options3); + var variant = getVariant(group2, options2); if (variant === "bold-italic") { node2.setAttribute("mathvariant", variant); } @@ -18697,12 +17045,12 @@ var __esbuild_esm_mermaid = (() => { }; defineFunctionBuilders({ type: "mathord", - htmlBuilder(group2, options3) { - return buildCommon.makeOrd(group2, options3, "mathord"); + htmlBuilder(group2, options2) { + return buildCommon.makeOrd(group2, options2, "mathord"); }, - mathmlBuilder(group2, options3) { - var node2 = new mathMLTree.MathNode("mi", [makeText(group2.text, group2.mode, options3)]); - var variant = getVariant(group2, options3) || "italic"; + mathmlBuilder(group2, options2) { + var node2 = new mathMLTree.MathNode("mi", [makeText(group2.text, group2.mode, options2)]); + var variant = getVariant(group2, options2) || "italic"; if (variant !== defaultVariant[node2.type]) { node2.setAttribute("mathvariant", variant); } @@ -18711,12 +17059,12 @@ var __esbuild_esm_mermaid = (() => { }); defineFunctionBuilders({ type: "textord", - htmlBuilder(group2, options3) { - return buildCommon.makeOrd(group2, options3, "textord"); + htmlBuilder(group2, options2) { + return buildCommon.makeOrd(group2, options2, "textord"); }, - mathmlBuilder(group2, options3) { - var text4 = makeText(group2.text, group2.mode, options3); - var variant = getVariant(group2, options3) || "normal"; + mathmlBuilder(group2, options2) { + var text4 = makeText(group2.text, group2.mode, options2); + var variant = getVariant(group2, options2) || "normal"; var node2; if (group2.mode === "text") { node2 = new mathMLTree.MathNode("mtext", [text4]); @@ -18750,23 +17098,23 @@ var __esbuild_esm_mermaid = (() => { }; defineFunctionBuilders({ type: "spacing", - htmlBuilder(group2, options3) { + htmlBuilder(group2, options2) { if (regularSpace.hasOwnProperty(group2.text)) { var className = regularSpace[group2.text].className || ""; if (group2.mode === "text") { - var ord = buildCommon.makeOrd(group2, options3, "textord"); + var ord = buildCommon.makeOrd(group2, options2, "textord"); ord.classes.push(className); return ord; } else { - return buildCommon.makeSpan(["mspace", className], [buildCommon.mathsym(group2.text, group2.mode, options3)], options3); + return buildCommon.makeSpan(["mspace", className], [buildCommon.mathsym(group2.text, group2.mode, options2)], options2); } } else if (cssSpace.hasOwnProperty(group2.text)) { - return buildCommon.makeSpan(["mspace", cssSpace[group2.text]], [], options3); + return buildCommon.makeSpan(["mspace", cssSpace[group2.text]], [], options2); } else { throw new ParseError('Unknown type of space "' + group2.text + '"'); } }, - mathmlBuilder(group2, options3) { + mathmlBuilder(group2, options2) { var node2; if (regularSpace.hasOwnProperty(group2.text)) { node2 = new mathMLTree.MathNode("mtext", [new mathMLTree.TextNode("\xA0")]); @@ -18785,8 +17133,8 @@ var __esbuild_esm_mermaid = (() => { }, "pad"); defineFunctionBuilders({ type: "tag", - mathmlBuilder(group2, options3) { - var table = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("mtr", [pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group2.body, options3)]), pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group2.tag, options3)])])]); + mathmlBuilder(group2, options2) { + var table = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("mtr", [pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group2.body, options2)]), pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group2.tag, options2)])])]); table.setAttribute("width", "100%"); return table; } @@ -18806,18 +17154,18 @@ var __esbuild_esm_mermaid = (() => { "\\textit": "textit", "\\textup": "textup" }; - optionsWithFont = /* @__PURE__ */ __name((group2, options3) => { + optionsWithFont = /* @__PURE__ */ __name((group2, options2) => { var font = group2.font; if (!font) { - return options3; + return options2; } else if (textFontFamilies[font]) { - return options3.withTextFontFamily(textFontFamilies[font]); + return options2.withTextFontFamily(textFontFamilies[font]); } else if (textFontWeights[font]) { - return options3.withTextFontWeight(textFontWeights[font]); + return options2.withTextFontWeight(textFontWeights[font]); } else if (font === "\\emph") { - return options3.fontShape === "textit" ? options3.withTextFontShape("textup") : options3.withTextFontShape("textit"); + return options2.fontShape === "textit" ? options2.withTextFontShape("textup") : options2.withTextFontShape("textit"); } - return options3.withTextFontShape(textFontShapes[font]); + return options2.withTextFontShape(textFontShapes[font]); }, "optionsWithFont"); defineFunction({ type: "text", @@ -18855,13 +17203,13 @@ var __esbuild_esm_mermaid = (() => { font: funcName }; }, - htmlBuilder(group2, options3) { - var newOptions = optionsWithFont(group2, options3); + htmlBuilder(group2, options2) { + var newOptions = optionsWithFont(group2, options2); var inner2 = buildExpression$1(group2.body, newOptions, true); return buildCommon.makeSpan(["mord", "text"], inner2, newOptions); }, - mathmlBuilder(group2, options3) { - var newOptions = optionsWithFont(group2, options3); + mathmlBuilder(group2, options2) { + var newOptions = optionsWithFont(group2, options2); return buildExpressionRow(group2.body, newOptions); } }); @@ -18882,10 +17230,10 @@ var __esbuild_esm_mermaid = (() => { body: args[0] }; }, - htmlBuilder(group2, options3) { - var innerGroup = buildGroup$1(group2.body, options3); - var line2 = buildCommon.makeLineSpan("underline-line", options3); - var defaultRuleThickness = options3.fontMetrics().defaultRuleThickness; + htmlBuilder(group2, options2) { + var innerGroup = buildGroup$1(group2.body, options2); + var line2 = buildCommon.makeLineSpan("underline-line", options2); + var defaultRuleThickness = options2.fontMetrics().defaultRuleThickness; var vlist = buildCommon.makeVList({ positionType: "top", positionData: innerGroup.height, @@ -18902,13 +17250,13 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: innerGroup }] - }, options3); - return buildCommon.makeSpan(["mord", "underline"], [vlist], options3); + }, options2); + return buildCommon.makeSpan(["mord", "underline"], [vlist], options2); }, - mathmlBuilder(group2, options3) { + mathmlBuilder(group2, options2) { var operator = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode("\u203E")]); operator.setAttribute("stretchy", "true"); - var node2 = new mathMLTree.MathNode("munder", [buildGroup2(group2.body, options3), operator]); + var node2 = new mathMLTree.MathNode("munder", [buildGroup2(group2.body, options2), operator]); node2.setAttribute("accentunder", "true"); return node2; } @@ -18932,9 +17280,9 @@ var __esbuild_esm_mermaid = (() => { body: args[0] }; }, - htmlBuilder(group2, options3) { - var body = buildGroup$1(group2.body, options3); - var axisHeight = options3.fontMetrics().axisHeight; + htmlBuilder(group2, options2) { + var body = buildGroup$1(group2.body, options2); + var axisHeight = options2.fontMetrics().axisHeight; var dy = 0.5 * (body.height - axisHeight - (body.depth + axisHeight)); return buildCommon.makeVList({ positionType: "shift", @@ -18943,10 +17291,10 @@ var __esbuild_esm_mermaid = (() => { type: "elem", elem: body }] - }, options3); + }, options2); }, - mathmlBuilder(group2, options3) { - return new mathMLTree.MathNode("mpadded", [buildGroup2(group2.body, options3)], ["vcenter"]); + mathmlBuilder(group2, options2) { + return new mathMLTree.MathNode("mpadded", [buildGroup2(group2.body, options2)], ["vcenter"]); } }); defineFunction({ @@ -18959,10 +17307,10 @@ var __esbuild_esm_mermaid = (() => { handler(context, args, optArgs) { throw new ParseError("\\verb ended by end of line instead of matching delimiter"); }, - htmlBuilder(group2, options3) { + htmlBuilder(group2, options2) { var text4 = makeVerb(group2); var body = []; - var newOptions = options3.havingStyle(options3.style.text()); + var newOptions = options2.havingStyle(options2.style.text()); for (var i2 = 0; i2 < text4.length; i2++) { var c3 = text4[i2]; if (c3 === "~") { @@ -18970,9 +17318,9 @@ var __esbuild_esm_mermaid = (() => { } body.push(buildCommon.makeSymbol(c3, "Typewriter-Regular", group2.mode, newOptions, ["mord", "texttt"])); } - return buildCommon.makeSpan(["mord", "text"].concat(newOptions.sizingClasses(options3)), buildCommon.tryCombineChars(body), newOptions); + return buildCommon.makeSpan(["mord", "text"].concat(newOptions.sizingClasses(options2)), buildCommon.tryCombineChars(body), newOptions); }, - mathmlBuilder(group2, options3) { + mathmlBuilder(group2, options2) { var text4 = new mathMLTree.TextNode(makeVerb(group2)); var node2 = new mathMLTree.MathNode("mtext", [text4]); node2.setAttribute("mathvariant", "monospace"); @@ -19283,7 +17631,7 @@ var __esbuild_esm_mermaid = (() => { } return "\\@char{" + number7 + "}"; }); - newcommand = /* @__PURE__ */ __name((context, existsOK, nonexistsOK) => { + newcommand = /* @__PURE__ */ __name((context, existsOK, nonexistsOK, skipIfExists) => { var arg = context.consumeArg().tokens; if (arg.length !== 1) { throw new ParseError("\\newcommand's first argument must be a macro name"); @@ -19311,15 +17659,17 @@ var __esbuild_esm_mermaid = (() => { numArgs = parseInt(argText); arg = context.consumeArg().tokens; } - context.macros.set(name, { - tokens: arg, - numArgs - }); + if (!(exists && skipIfExists)) { + context.macros.set(name, { + tokens: arg, + numArgs + }); + } return ""; }, "newcommand"); - defineMacro("\\newcommand", (context) => newcommand(context, false, true)); - defineMacro("\\renewcommand", (context) => newcommand(context, true, false)); - defineMacro("\\providecommand", (context) => newcommand(context, true, true)); + defineMacro("\\newcommand", (context) => newcommand(context, false, true, false)); + defineMacro("\\renewcommand", (context) => newcommand(context, true, false, false)); + defineMacro("\\providecommand", (context) => newcommand(context, true, true, true)); defineMacro("\\message", (context) => { var arg = context.consumeArgs(1)[0]; console.log(arg.reverse().map((token2) => token2.text).join("")); @@ -19391,7 +17741,7 @@ var __esbuild_esm_mermaid = (() => { defineMacro("\\urcorner", '\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'); defineMacro("\\llcorner", '\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'); defineMacro("\\lrcorner", '\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'); - defineMacro("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}"); + defineMacro("\\vdots", "{\\varvdots\\rule{0pt}{15pt}}"); defineMacro("\u22EE", "\\vdots"); defineMacro("\\varGamma", "\\mathit{\\Gamma}"); defineMacro("\\varDelta", "\\mathit{\\Delta}"); @@ -19410,6 +17760,8 @@ var __esbuild_esm_mermaid = (() => { defineMacro("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;"); defineMacro("\\implies", "\\DOTSB\\;\\Longrightarrow\\;"); defineMacro("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;"); + defineMacro("\\dddot", "{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}"); + defineMacro("\\ddddot", "{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}"); dotsByToken = { ",": "\\dotsc", "\\not": "\\dotsb", @@ -20711,7 +19063,7 @@ var __esbuild_esm_mermaid = (() => { "\u038F": "\u03A9\u0301", "\u1FFA": "\u03A9\u0300" }; - Parser = class _Parser2 { + Parser = class _Parser { static { __name(this, "Parser"); } @@ -20818,7 +19170,7 @@ var __esbuild_esm_mermaid = (() => { this.consumeSpaces(); } var lex = this.fetch(); - if (_Parser2.endOfExpression.indexOf(lex.text) !== -1) { + if (_Parser.endOfExpression.indexOf(lex.text) !== -1) { break; } if (breakOnTokenText && lex.text === breakOnTokenText) { @@ -20901,7 +19253,11 @@ var __esbuild_esm_mermaid = (() => { var symbol = symbolToken.text; this.consume(); this.consumeSpaces(); - var group2 = this.parseGroup(name); + var group2; + do { + var _group; + group2 = this.parseGroup(name); + } while (((_group = group2) == null ? void 0 : _group.type) === "internal"); if (!group2) { throw new ParseError("Expected group after '" + symbol + "'", symbolToken); } @@ -20938,6 +19294,9 @@ var __esbuild_esm_mermaid = (() => { */ parseAtom(breakOnTokenText) { var base = this.parseGroup("atom", breakOnTokenText); + if ((base == null ? void 0 : base.type) === "internal") { + return base; + } if (this.mode === "text") { return base; } @@ -21149,11 +19508,11 @@ var __esbuild_esm_mermaid = (() => { if (optional2) { throw new ParseError("A primitive argument cannot be optional"); } - var _group = this.parseGroup(name); - if (_group == null) { + var _group2 = this.parseGroup(name); + if (_group2 == null) { throw new ParseError("Expected group as " + name, this.fetch()); } - return _group; + return _group2; } case "original": case null: @@ -21255,18 +19614,18 @@ var __esbuild_esm_mermaid = (() => { if (!match2) { throw new ParseError("Invalid size: '" + res.text + "'", res); } - var data6 = { + var data5 = { number: +(match2[1] + match2[2]), // sign + magnitude, cast to number unit: match2[3] }; - if (!validUnit(data6)) { - throw new ParseError("Invalid unit: '" + data6.unit + "'", res); + if (!validUnit(data5)) { + throw new ParseError("Invalid unit: '" + data5.unit + "'", res); } return { type: "size", mode: this.mode, - value: data6, + value: data5, isBlank }; } @@ -21533,38 +19892,38 @@ var __esbuild_esm_mermaid = (() => { } return tree; }, "parseTree"); - render = /* @__PURE__ */ __name(function render2(expression, baseNode, options3) { + render = /* @__PURE__ */ __name(function render2(expression, baseNode, options2) { baseNode.textContent = ""; - var node2 = renderToDomTree(expression, options3).toNode(); + var node2 = renderToDomTree(expression, options2).toNode(); baseNode.appendChild(node2); }, "render"); if (typeof document !== "undefined") { if (document.compatMode !== "CSS1Compat") { typeof console !== "undefined" && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."); - render = /* @__PURE__ */ __name(function render7() { + render = /* @__PURE__ */ __name(function render9() { throw new ParseError("KaTeX doesn't work in quirks mode."); }, "render"); } } - renderToString = /* @__PURE__ */ __name(function renderToString2(expression, options3) { - var markup = renderToDomTree(expression, options3).toMarkup(); + renderToString = /* @__PURE__ */ __name(function renderToString2(expression, options2) { + var markup = renderToDomTree(expression, options2).toMarkup(); return markup; }, "renderToString"); - generateParseTree = /* @__PURE__ */ __name(function generateParseTree2(expression, options3) { - var settings = new Settings(options3); + generateParseTree = /* @__PURE__ */ __name(function generateParseTree2(expression, options2) { + var settings = new Settings(options2); return parseTree(expression, settings); }, "generateParseTree"); - renderError = /* @__PURE__ */ __name(function renderError2(error3, expression, options3) { - if (options3.throwOnError || !(error3 instanceof ParseError)) { + renderError = /* @__PURE__ */ __name(function renderError2(error3, expression, options2) { + if (options2.throwOnError || !(error3 instanceof ParseError)) { throw error3; } var node2 = buildCommon.makeSpan(["katex-error"], [new SymbolNode(expression)]); node2.setAttribute("title", error3.toString()); - node2.setAttribute("style", "color:" + options3.errorColor); + node2.setAttribute("style", "color:" + options2.errorColor); return node2; }, "renderError"); - renderToDomTree = /* @__PURE__ */ __name(function renderToDomTree2(expression, options3) { - var settings = new Settings(options3); + renderToDomTree = /* @__PURE__ */ __name(function renderToDomTree2(expression, options2) { + var settings = new Settings(options2); try { var tree = parseTree(expression, settings); return buildTree(tree, expression, settings); @@ -21572,8 +19931,8 @@ var __esbuild_esm_mermaid = (() => { return renderError(error3, expression, settings); } }, "renderToDomTree"); - renderToHTMLTree = /* @__PURE__ */ __name(function renderToHTMLTree2(expression, options3) { - var settings = new Settings(options3); + renderToHTMLTree = /* @__PURE__ */ __name(function renderToHTMLTree2(expression, options2) { + var settings = new Settings(options2); try { var tree = parseTree(expression, settings); return buildHTMLTree(tree, expression, settings); @@ -21581,11 +19940,20 @@ var __esbuild_esm_mermaid = (() => { return renderError(error3, expression, settings); } }, "renderToHTMLTree"); + version = "0.16.22"; + __domTree = { + Span, + Anchor, + SymbolNode, + SvgNode, + PathNode, + LineNode + }; katex = { /** * Current KaTeX version */ - version: "0.16.11", + version, /** * Renders the given LaTeX into an HTML+MathML combination, and adds * it as a child to the specified DOM node. @@ -21601,7 +19969,7 @@ var __esbuild_esm_mermaid = (() => { */ ParseError, /** - * The shema of Settings + * The schema of Settings */ SETTINGS_SCHEMA, /** @@ -21653,18 +20021,11 @@ var __esbuild_esm_mermaid = (() => { /** * Expose the dom tree node types, which can be useful for type checking nodes. * - * NOTE: This method is not currently recommended for public use. + * NOTE: These methods are not currently recommended for public use. * The internal tree representation is unstable and is very likely * to change. Use at your own risk. */ - __domTree: { - Span, - Anchor, - SymbolNode, - SvgNode, - PathNode, - LineNode - } + __domTree }; } }); @@ -21673,12 +20034,12 @@ var __esbuild_esm_mermaid = (() => { function setupDompurifyHooks() { const TEMPORARY_ATTRIBUTE = "data-temp-href-target"; purify.addHook("beforeSanitizeAttributes", (node2) => { - if (node2 instanceof Element && node2.tagName === "A" && node2.hasAttribute("target")) { + if (node2.tagName === "A" && node2.hasAttribute("target")) { node2.setAttribute(TEMPORARY_ATTRIBUTE, node2.getAttribute("target") ?? ""); } }); purify.addHook("afterSanitizeAttributes", (node2) => { - if (node2 instanceof Element && node2.tagName === "A" && node2.hasAttribute(TEMPORARY_ATTRIBUTE)) { + if (node2.tagName === "A" && node2.hasAttribute(TEMPORARY_ATTRIBUTE)) { node2.setAttribute("target", node2.getAttribute(TEMPORARY_ATTRIBUTE) ?? ""); node2.removeAttribute(TEMPORARY_ATTRIBUTE); if (node2.getAttribute("target") === "_blank") { @@ -21687,7 +20048,7 @@ var __esbuild_esm_mermaid = (() => { } }); } - var lineBreakRegex, getRows, setupDompurifyHooksIfNotSetup, removeScript, sanitizeMore, sanitizeText, sanitizeTextOrArray, hasBreaks, splitBreaks, placeholderToBreak, breakToPlaceholder, getUrl, evaluate, getMax, getMin, parseGenericTypes, countOccurrence, shouldCombineSets, processSet, isMathMLSupported, katexRegex, hasKatex, calculateMathMLDimensions, renderKatex, common_default; + var lineBreakRegex, getRows, setupDompurifyHooksIfNotSetup, removeScript, sanitizeMore, sanitizeText, sanitizeTextOrArray, hasBreaks, splitBreaks, placeholderToBreak, breakToPlaceholder, getUrl, evaluate, getMax, getMin, parseGenericTypes, countOccurrence, shouldCombineSets, processSet, isMathMLSupported, katexRegex, hasKatex, calculateMathMLDimensions, renderKatexUnsanitized, renderKatexSanitized, common_default; var init_common = __esm({ "src/diagrams/common/common.ts"() { "use strict"; @@ -21764,8 +20125,7 @@ var __esbuild_esm_mermaid = (() => { let url = ""; if (useAbsolute) { url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search; - url = url.replaceAll(/\(/g, "\\("); - url = url.replaceAll(/\)/g, "\\)"); + url = CSS.escape(url); } return url; }, "getUrl"); @@ -21836,9 +20196,8 @@ var __esbuild_esm_mermaid = (() => { katexRegex = /\$\$(.*)\$\$/g; hasKatex = /* @__PURE__ */ __name((text4) => (text4.match(katexRegex)?.length ?? 0) > 0, "hasKatex"); calculateMathMLDimensions = /* @__PURE__ */ __name(async (text4, config5) => { - text4 = await renderKatex(text4, config5); const divElem = document.createElement("div"); - divElem.innerHTML = text4; + divElem.innerHTML = await renderKatexSanitized(text4, config5); divElem.id = "katex-temp"; divElem.style.visibility = "hidden"; divElem.style.position = "absolute"; @@ -21849,26 +20208,35 @@ var __esbuild_esm_mermaid = (() => { divElem.remove(); return dim; }, "calculateMathMLDimensions"); - renderKatex = /* @__PURE__ */ __name(async (text4, config5) => { + renderKatexUnsanitized = /* @__PURE__ */ __name(async (text4, config5) => { if (!hasKatex(text4)) { return text4; } if (!(isMathMLSupported() || config5.legacyMathML || config5.forceLegacyMathML)) { return text4.replace(katexRegex, "MathML is unsupported in this environment."); } - const { default: katex2 } = await Promise.resolve().then(() => (init_katex(), katex_exports)); - const outputMode = config5.forceLegacyMathML || !isMathMLSupported() && config5.legacyMathML ? "htmlAndMathml" : "mathml"; - return text4.split(lineBreakRegex).map( - (line2) => hasKatex(line2) ? `
${line2}
` : `
${line2}
` - ).join("").replace( + if (true) { + const { default: katex2 } = await Promise.resolve().then(() => (init_katex(), katex_exports)); + const outputMode = config5.forceLegacyMathML || !isMathMLSupported() && config5.legacyMathML ? "htmlAndMathml" : "mathml"; + return text4.split(lineBreakRegex).map( + (line2) => hasKatex(line2) ? `
${line2}
` : `
${line2}
` + ).join("").replace( + katexRegex, + (_3, c3) => katex2.renderToString(c3, { + throwOnError: true, + displayMode: true, + output: outputMode + }).replace(/\n/g, " ").replace(//g, "") + ); + } + return text4.replace( katexRegex, - (_2, c3) => katex2.renderToString(c3, { - throwOnError: true, - displayMode: true, - output: outputMode - }).replace(/\n/g, " ").replace(//g, "") + "Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library." ); - }, "renderKatex"); + }, "renderKatexUnsanitized"); + renderKatexSanitized = /* @__PURE__ */ __name(async (text4, config5) => { + return sanitizeText(await renderKatexUnsanitized(text4, config5), config5); + }, "renderKatexSanitized"); common_default = { getRows, sanitizeText, @@ -21885,987 +20253,2191 @@ var __esbuild_esm_mermaid = (() => { } }); - // src/setupGraphViewbox.js - var d3Attrs, calculateSvgSizeAttrs, configureSvgSize, setupGraphViewbox; - var init_setupGraphViewbox = __esm({ - "src/setupGraphViewbox.js"() { + // src/rendering-util/icons.ts + var unknownIcon, iconsStore, loaderStore, registerIconPacks, getRegisteredIconData, isIconAvailable, getIconSVG; + var init_icons = __esm({ + "src/rendering-util/icons.ts"() { "use strict"; + init_lib(); + init_config(); + init_common(); init_logger(); - d3Attrs = /* @__PURE__ */ __name(function(d3Elem, attrs) { - for (let attr of attrs) { - d3Elem.attr(attr[0], attr[1]); + unknownIcon = { + body: '?', + height: 80, + width: 80 + }; + iconsStore = /* @__PURE__ */ new Map(); + loaderStore = /* @__PURE__ */ new Map(); + registerIconPacks = /* @__PURE__ */ __name((iconLoaders) => { + for (const iconLoader of iconLoaders) { + if (!iconLoader.name) { + throw new Error( + 'Invalid icon loader. Must have a "name" property with non-empty string value.' + ); + } + log.debug("Registering icon pack:", iconLoader.name); + if ("loader" in iconLoader) { + loaderStore.set(iconLoader.name, iconLoader.loader); + } else if ("icons" in iconLoader) { + iconsStore.set(iconLoader.name, iconLoader.icons); + } else { + log.error("Invalid icon loader:", iconLoader); + throw new Error('Invalid icon loader. Must have either "icons" or "loader" property.'); + } } - }, "d3Attrs"); - calculateSvgSizeAttrs = /* @__PURE__ */ __name(function(height2, width3, useMaxWidth) { - let attrs = /* @__PURE__ */ new Map(); - if (useMaxWidth) { - attrs.set("width", "100%"); - attrs.set("style", `max-width: ${width3}px;`); - } else { - attrs.set("height", height2); - attrs.set("width", width3); + }, "registerIconPacks"); + getRegisteredIconData = /* @__PURE__ */ __name(async (iconName, fallbackPrefix) => { + const data5 = stringToIcon(iconName, true, fallbackPrefix !== void 0); + if (!data5) { + throw new Error(`Invalid icon name: ${iconName}`); } - return attrs; - }, "calculateSvgSizeAttrs"); - configureSvgSize = /* @__PURE__ */ __name(function(svgElem, height2, width3, useMaxWidth) { - const attrs = calculateSvgSizeAttrs(height2, width3, useMaxWidth); - d3Attrs(svgElem, attrs); - }, "configureSvgSize"); - setupGraphViewbox = /* @__PURE__ */ __name(function(graph, svgElem, padding2, useMaxWidth) { - const svgBounds = svgElem.node().getBBox(); - const sWidth = svgBounds.width; - const sHeight = svgBounds.height; - log.info(`SVG bounds: ${sWidth}x${sHeight}`, svgBounds); - let width3 = 0; - let height2 = 0; - log.info(`Graph bounds: ${width3}x${height2}`, graph); - width3 = sWidth + padding2 * 2; - height2 = sHeight + padding2 * 2; - log.info(`Calculated bounds: ${width3}x${height2}`); - configureSvgSize(svgElem, height2, width3, useMaxWidth); - const vBox = `${svgBounds.x - padding2} ${svgBounds.y - padding2} ${svgBounds.width + 2 * padding2} ${svgBounds.height + 2 * padding2}`; - svgElem.attr("viewBox", vBox); - }, "setupGraphViewbox"); + const prefix = data5.prefix || fallbackPrefix; + if (!prefix) { + throw new Error(`Icon name must contain a prefix: ${iconName}`); + } + let icons = iconsStore.get(prefix); + if (!icons) { + const loader29 = loaderStore.get(prefix); + if (!loader29) { + throw new Error(`Icon set not found: ${data5.prefix}`); + } + try { + const loaded = await loader29(); + icons = { ...loaded, prefix }; + iconsStore.set(prefix, icons); + } catch (e3) { + log.error(e3); + throw new Error(`Failed to load icon set: ${data5.prefix}`); + } + } + const iconData = getIconData(icons, data5.name); + if (!iconData) { + throw new Error(`Icon not found: ${iconName}`); + } + return iconData; + }, "getRegisteredIconData"); + isIconAvailable = /* @__PURE__ */ __name(async (iconName) => { + try { + await getRegisteredIconData(iconName); + return true; + } catch { + return false; + } + }, "isIconAvailable"); + getIconSVG = /* @__PURE__ */ __name(async (iconName, customisations, extraAttributes) => { + let iconData; + try { + iconData = await getRegisteredIconData(iconName, customisations?.fallbackPrefix); + } catch (e3) { + log.error(e3); + iconData = unknownIcon; + } + const renderData = iconToSVG(iconData, customisations); + const svg2 = iconToHTML(replaceIDs(renderData.body), { + ...renderData.attributes, + ...extraAttributes + }); + return sanitizeText(svg2, getConfig()); + }, "getIconSVG"); } }); - // src/styles.ts - var themes, getStyles, addStylesForDiagram, styles_default; - var init_styles = __esm({ - "src/styles.ts"() { - "use strict"; - init_logger(); - themes = {}; - getStyles = /* @__PURE__ */ __name((type3, userStyles, options3) => { - let diagramStyles = ""; - if (type3 in themes && themes[type3]) { - diagramStyles = themes[type3](options3); - } else { - log.warn(`No theme found for ${type3}`); - } - return ` & { - font-family: ${options3.fontFamily}; - font-size: ${options3.fontSize}; - fill: ${options3.textColor} - } - @keyframes edge-animation-frame { - from { - stroke-dashoffset: 0; + // ../../node_modules/.pnpm/ts-dedent@2.2.0/node_modules/ts-dedent/esm/index.js + function dedent(templ) { + var values2 = []; + for (var _i = 1; _i < arguments.length; _i++) { + values2[_i - 1] = arguments[_i]; } - } - @keyframes dash { - to { - stroke-dashoffset: 0; + var strings = Array.from(typeof templ === "string" ? [templ] : templ); + strings[strings.length - 1] = strings[strings.length - 1].replace(/\r?\n([\t ]*)$/, ""); + var indentLengths = strings.reduce(function(arr, str2) { + var matches33 = str2.match(/\n([\t ]+|(?!\s).)/g); + if (matches33) { + return arr.concat(matches33.map(function(match2) { + var _a, _b; + return (_b = (_a = match2.match(/[\t ]/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; + })); + } + return arr; + }, []); + if (indentLengths.length) { + var pattern_1 = new RegExp("\n[ ]{" + Math.min.apply(Math, indentLengths) + "}", "g"); + strings = strings.map(function(str2) { + return str2.replace(pattern_1, "\n"); + }); } + strings[0] = strings[0].replace(/^\r?\n/, ""); + var string3 = strings[0]; + values2.forEach(function(value2, i2) { + var endentations = string3.match(/(?:^|\n)( *)$/); + var endentation = endentations ? endentations[1] : ""; + var indentedValue = value2; + if (typeof value2 === "string" && value2.includes("\n")) { + indentedValue = String(value2).split("\n").map(function(str2, i3) { + return i3 === 0 ? str2 : "" + endentation + str2; + }).join("\n"); + } + string3 += indentedValue + strings[i2 + 1]; + }); + return string3; } - & .edge-animation-slow { - stroke-dasharray: 9,5 !important; - stroke-dashoffset: 900; - animation: dash 50s linear infinite; - stroke-linecap: round; - } - & .edge-animation-fast { - stroke-dasharray: 9,5 !important; - stroke-dashoffset: 900; - animation: dash 20s linear infinite; - stroke-linecap: round; - } - /* Classes common for multiple diagrams */ - - & .error-icon { - fill: ${options3.errorBkgColor}; - } - & .error-text { - fill: ${options3.errorTextColor}; - stroke: ${options3.errorTextColor}; - } - - & .edge-thickness-normal { - stroke-width: 1px; - } - & .edge-thickness-thick { - stroke-width: 3.5px - } - & .edge-pattern-solid { - stroke-dasharray: 0; - } - & .edge-thickness-invisible { - stroke-width: 0; - fill: none; - } - & .edge-pattern-dashed{ - stroke-dasharray: 3; - } - .edge-pattern-dotted { - stroke-dasharray: 2; - } - - & .marker { - fill: ${options3.lineColor}; - stroke: ${options3.lineColor}; - } - & .marker.cross { - stroke: ${options3.lineColor}; - } - - & svg { - font-family: ${options3.fontFamily}; - font-size: ${options3.fontSize}; - } - & p { - margin: 0 - } - - ${diagramStyles} - - ${userStyles} -`; - }, "getStyles"); - addStylesForDiagram = /* @__PURE__ */ __name((type3, diagramTheme) => { - if (diagramTheme !== void 0) { - themes[type3] = diagramTheme; - } - }, "addStylesForDiagram"); - styles_default = getStyles; + var init_esm = __esm({ + "../../node_modules/.pnpm/ts-dedent@2.2.0/node_modules/ts-dedent/esm/index.js"() { + "use strict"; + __name(dedent, "dedent"); } }); - // src/diagrams/common/commonDb.ts - var commonDb_exports = {}; - __export(commonDb_exports, { - clear: () => clear, - getAccDescription: () => getAccDescription, - getAccTitle: () => getAccTitle, - getDiagramTitle: () => getDiagramTitle, - setAccDescription: () => setAccDescription, - setAccTitle: () => setAccTitle, - setDiagramTitle: () => setDiagramTitle - }); - var accTitle, diagramTitle, accDescription, sanitizeText2, clear, setAccTitle, getAccTitle, setAccDescription, getAccDescription, setDiagramTitle, getDiagramTitle; - var init_commonDb = __esm({ - "src/diagrams/common/commonDb.ts"() { + // src/diagram-api/regexes.ts + var frontMatterRegex, directiveRegex, anyCommentRegex; + var init_regexes = __esm({ + "src/diagram-api/regexes.ts"() { "use strict"; - init_common(); - init_config(); - accTitle = ""; - diagramTitle = ""; - accDescription = ""; - sanitizeText2 = /* @__PURE__ */ __name((txt) => sanitizeText(txt, getConfig()), "sanitizeText"); - clear = /* @__PURE__ */ __name(() => { - accTitle = ""; - accDescription = ""; - diagramTitle = ""; - }, "clear"); - setAccTitle = /* @__PURE__ */ __name((txt) => { - accTitle = sanitizeText2(txt).replace(/^\s+/g, ""); - }, "setAccTitle"); - getAccTitle = /* @__PURE__ */ __name(() => accTitle, "getAccTitle"); - setAccDescription = /* @__PURE__ */ __name((txt) => { - accDescription = sanitizeText2(txt).replace(/\n\s+/g, "\n"); - }, "setAccDescription"); - getAccDescription = /* @__PURE__ */ __name(() => accDescription, "getAccDescription"); - setDiagramTitle = /* @__PURE__ */ __name((txt) => { - diagramTitle = sanitizeText2(txt); - }, "setDiagramTitle"); - getDiagramTitle = /* @__PURE__ */ __name(() => diagramTitle, "getDiagramTitle"); + frontMatterRegex = /^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s; + directiveRegex = /%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi; + anyCommentRegex = /\s*%%.*\n/gm; } }); - // src/diagram-api/diagramAPI.ts - var log2, setLogLevel2, getConfig2, setConfig2, defaultConfig2, sanitizeText3, setupGraphViewbox2, getCommonDb, diagrams, registerDiagram, getDiagram, DiagramNotFoundError; - var init_diagramAPI = __esm({ - "src/diagram-api/diagramAPI.ts"() { + // src/errors.ts + var UnknownDiagramError; + var init_errors = __esm({ + "src/errors.ts"() { "use strict"; - init_detectType(); - init_logger(); - init_config(); - init_common(); - init_setupGraphViewbox(); - init_styles(); - init_commonDb(); - log2 = log; - setLogLevel2 = setLogLevel; - getConfig2 = getConfig; - setConfig2 = setConfig; - defaultConfig2 = defaultConfig; - sanitizeText3 = /* @__PURE__ */ __name((text4) => sanitizeText(text4, getConfig2()), "sanitizeText"); - setupGraphViewbox2 = setupGraphViewbox; - getCommonDb = /* @__PURE__ */ __name(() => { - return commonDb_exports; - }, "getCommonDb"); - diagrams = {}; - registerDiagram = /* @__PURE__ */ __name((id29, diagram26, detector27) => { - if (diagrams[id29]) { - log2.warn(`Diagram with id ${id29} already registered. Overwriting.`); - } - diagrams[id29] = diagram26; - if (detector27) { - addDetector(id29, detector27); - } - addStylesForDiagram(id29, diagram26.styles); - diagram26.injectUtils?.( - log2, - setLogLevel2, - getConfig2, - sanitizeText3, - setupGraphViewbox2, - getCommonDb(), - () => { - } - ); - }, "registerDiagram"); - getDiagram = /* @__PURE__ */ __name((name) => { - if (name in diagrams) { - return diagrams[name]; - } - throw new DiagramNotFoundError(name); - }, "getDiagram"); - DiagramNotFoundError = class extends Error { + UnknownDiagramError = class extends Error { static { - __name(this, "DiagramNotFoundError"); + __name(this, "UnknownDiagramError"); } - constructor(name) { - super(`Diagram ${name} not found.`); + constructor(message) { + super(message); + this.name = "UnknownDiagramError"; } }; } }); - // src/diagrams/c4/c4Db.js - var c4ShapeArray, boundaryParseStack, currentBoundaryParse, parentBoundaryParse, boundaries, rels, title, wrapEnabled, c4ShapeInRow, c4BoundaryInRow, c4Type, getC4Type, setC4Type, addRel, addPersonOrSystem, addContainer, addComponent, addPersonOrSystemBoundary, addContainerBoundary, addDeploymentNode, popBoundaryParseStack, updateElStyle, updateRelStyle, updateLayoutConfig, getC4ShapeInRow, getC4BoundaryInRow, getCurrentBoundaryParse, getParentBoundaryParse, getC4ShapeArray, getC4Shape, getC4ShapeKeys, getBoundaries, getBoundarys, getRels, getTitle, setWrap, autoWrap, clear2, LINETYPE, ARROWTYPE, PLACEMENT, setTitle, c4Db_default; - var init_c4Db = __esm({ - "src/diagrams/c4/c4Db.js"() { + // src/diagram-api/detectType.ts + var detectors, detectType, registerLazyLoadedDiagrams, addDetector, getDiagramLoader; + var init_detectType = __esm({ + "src/diagram-api/detectType.ts"() { "use strict"; - init_diagramAPI(); - init_common(); - init_commonDb(); - c4ShapeArray = []; - boundaryParseStack = [""]; - currentBoundaryParse = "global"; - parentBoundaryParse = ""; - boundaries = [ - { - alias: "global", - label: { text: "global" }, - type: { text: "global" }, - tags: null, - link: null, - parentBoundary: "" - } - ]; - rels = []; - title = ""; - wrapEnabled = false; - c4ShapeInRow = 4; - c4BoundaryInRow = 2; - getC4Type = /* @__PURE__ */ __name(function() { - return c4Type; - }, "getC4Type"); - setC4Type = /* @__PURE__ */ __name(function(c4TypeParam) { - let sanitizedText = sanitizeText(c4TypeParam, getConfig2()); - c4Type = sanitizedText; - }, "setC4Type"); - addRel = /* @__PURE__ */ __name(function(type3, from2, to, label, techn, descr, sprite, tags2, link3) { - if (type3 === void 0 || type3 === null || from2 === void 0 || from2 === null || to === void 0 || to === null || label === void 0 || label === null) { - return; - } - let rel2 = {}; - const old = rels.find((rel3) => rel3.from === from2 && rel3.to === to); - if (old) { - rel2 = old; - } else { - rels.push(rel2); - } - rel2.type = type3; - rel2.from = from2; - rel2.to = to; - rel2.label = { text: label }; - if (techn === void 0 || techn === null) { - rel2.techn = { text: "" }; - } else { - if (typeof techn === "object") { - let [key, value2] = Object.entries(techn)[0]; - rel2[key] = { text: value2 }; - } else { - rel2.techn = { text: techn }; - } - } - if (descr === void 0 || descr === null) { - rel2.descr = { text: "" }; - } else { - if (typeof descr === "object") { - let [key, value2] = Object.entries(descr)[0]; - rel2[key] = { text: value2 }; - } else { - rel2.descr = { text: descr }; - } - } - if (typeof sprite === "object") { - let [key, value2] = Object.entries(sprite)[0]; - rel2[key] = value2; - } else { - rel2.sprite = sprite; - } - if (typeof tags2 === "object") { - let [key, value2] = Object.entries(tags2)[0]; - rel2[key] = value2; - } else { - rel2.tags = tags2; - } - if (typeof link3 === "object") { - let [key, value2] = Object.entries(link3)[0]; - rel2[key] = value2; - } else { - rel2.link = link3; - } - rel2.wrap = autoWrap(); - }, "addRel"); - addPersonOrSystem = /* @__PURE__ */ __name(function(typeC4Shape, alias, label, descr, sprite, tags2, link3) { - if (alias === null || label === null) { - return; - } - let personOrSystem = {}; - const old = c4ShapeArray.find((personOrSystem2) => personOrSystem2.alias === alias); - if (old && alias === old.alias) { - personOrSystem = old; - } else { - personOrSystem.alias = alias; - c4ShapeArray.push(personOrSystem); - } - if (label === void 0 || label === null) { - personOrSystem.label = { text: "" }; - } else { - personOrSystem.label = { text: label }; - } - if (descr === void 0 || descr === null) { - personOrSystem.descr = { text: "" }; - } else { - if (typeof descr === "object") { - let [key, value2] = Object.entries(descr)[0]; - personOrSystem[key] = { text: value2 }; - } else { - personOrSystem.descr = { text: descr }; - } - } - if (typeof sprite === "object") { - let [key, value2] = Object.entries(sprite)[0]; - personOrSystem[key] = value2; - } else { - personOrSystem.sprite = sprite; - } - if (typeof tags2 === "object") { - let [key, value2] = Object.entries(tags2)[0]; - personOrSystem[key] = value2; - } else { - personOrSystem.tags = tags2; - } - if (typeof link3 === "object") { - let [key, value2] = Object.entries(link3)[0]; - personOrSystem[key] = value2; - } else { - personOrSystem.link = link3; - } - personOrSystem.typeC4Shape = { text: typeC4Shape }; - personOrSystem.parentBoundary = currentBoundaryParse; - personOrSystem.wrap = autoWrap(); - }, "addPersonOrSystem"); - addContainer = /* @__PURE__ */ __name(function(typeC4Shape, alias, label, techn, descr, sprite, tags2, link3) { - if (alias === null || label === null) { - return; - } - let container2 = {}; - const old = c4ShapeArray.find((container3) => container3.alias === alias); - if (old && alias === old.alias) { - container2 = old; - } else { - container2.alias = alias; - c4ShapeArray.push(container2); - } - if (label === void 0 || label === null) { - container2.label = { text: "" }; - } else { - container2.label = { text: label }; - } - if (techn === void 0 || techn === null) { - container2.techn = { text: "" }; - } else { - if (typeof techn === "object") { - let [key, value2] = Object.entries(techn)[0]; - container2[key] = { text: value2 }; - } else { - container2.techn = { text: techn }; - } - } - if (descr === void 0 || descr === null) { - container2.descr = { text: "" }; - } else { - if (typeof descr === "object") { - let [key, value2] = Object.entries(descr)[0]; - container2[key] = { text: value2 }; - } else { - container2.descr = { text: descr }; - } - } - if (typeof sprite === "object") { - let [key, value2] = Object.entries(sprite)[0]; - container2[key] = value2; - } else { - container2.sprite = sprite; - } - if (typeof tags2 === "object") { - let [key, value2] = Object.entries(tags2)[0]; - container2[key] = value2; - } else { - container2.tags = tags2; - } - if (typeof link3 === "object") { - let [key, value2] = Object.entries(link3)[0]; - container2[key] = value2; - } else { - container2.link = link3; - } - container2.wrap = autoWrap(); - container2.typeC4Shape = { text: typeC4Shape }; - container2.parentBoundary = currentBoundaryParse; - }, "addContainer"); - addComponent = /* @__PURE__ */ __name(function(typeC4Shape, alias, label, techn, descr, sprite, tags2, link3) { - if (alias === null || label === null) { - return; - } - let component2 = {}; - const old = c4ShapeArray.find((component3) => component3.alias === alias); - if (old && alias === old.alias) { - component2 = old; - } else { - component2.alias = alias; - c4ShapeArray.push(component2); - } - if (label === void 0 || label === null) { - component2.label = { text: "" }; - } else { - component2.label = { text: label }; - } - if (techn === void 0 || techn === null) { - component2.techn = { text: "" }; - } else { - if (typeof techn === "object") { - let [key, value2] = Object.entries(techn)[0]; - component2[key] = { text: value2 }; - } else { - component2.techn = { text: techn }; - } - } - if (descr === void 0 || descr === null) { - component2.descr = { text: "" }; - } else { - if (typeof descr === "object") { - let [key, value2] = Object.entries(descr)[0]; - component2[key] = { text: value2 }; - } else { - component2.descr = { text: descr }; - } - } - if (typeof sprite === "object") { - let [key, value2] = Object.entries(sprite)[0]; - component2[key] = value2; - } else { - component2.sprite = sprite; - } - if (typeof tags2 === "object") { - let [key, value2] = Object.entries(tags2)[0]; - component2[key] = value2; - } else { - component2.tags = tags2; - } - if (typeof link3 === "object") { - let [key, value2] = Object.entries(link3)[0]; - component2[key] = value2; - } else { - component2.link = link3; - } - component2.wrap = autoWrap(); - component2.typeC4Shape = { text: typeC4Shape }; - component2.parentBoundary = currentBoundaryParse; - }, "addComponent"); - addPersonOrSystemBoundary = /* @__PURE__ */ __name(function(alias, label, type3, tags2, link3) { - if (alias === null || label === null) { - return; - } - let boundary = {}; - const old = boundaries.find((boundary2) => boundary2.alias === alias); - if (old && alias === old.alias) { - boundary = old; - } else { - boundary.alias = alias; - boundaries.push(boundary); - } - if (label === void 0 || label === null) { - boundary.label = { text: "" }; - } else { - boundary.label = { text: label }; - } - if (type3 === void 0 || type3 === null) { - boundary.type = { text: "system" }; - } else { - if (typeof type3 === "object") { - let [key, value2] = Object.entries(type3)[0]; - boundary[key] = { text: value2 }; - } else { - boundary.type = { text: type3 }; - } - } - if (typeof tags2 === "object") { - let [key, value2] = Object.entries(tags2)[0]; - boundary[key] = value2; - } else { - boundary.tags = tags2; - } - if (typeof link3 === "object") { - let [key, value2] = Object.entries(link3)[0]; - boundary[key] = value2; - } else { - boundary.link = link3; - } - boundary.parentBoundary = currentBoundaryParse; - boundary.wrap = autoWrap(); - parentBoundaryParse = currentBoundaryParse; - currentBoundaryParse = alias; - boundaryParseStack.push(parentBoundaryParse); - }, "addPersonOrSystemBoundary"); - addContainerBoundary = /* @__PURE__ */ __name(function(alias, label, type3, tags2, link3) { - if (alias === null || label === null) { - return; - } - let boundary = {}; - const old = boundaries.find((boundary2) => boundary2.alias === alias); - if (old && alias === old.alias) { - boundary = old; - } else { - boundary.alias = alias; - boundaries.push(boundary); - } - if (label === void 0 || label === null) { - boundary.label = { text: "" }; - } else { - boundary.label = { text: label }; - } - if (type3 === void 0 || type3 === null) { - boundary.type = { text: "container" }; - } else { - if (typeof type3 === "object") { - let [key, value2] = Object.entries(type3)[0]; - boundary[key] = { text: value2 }; - } else { - boundary.type = { text: type3 }; - } - } - if (typeof tags2 === "object") { - let [key, value2] = Object.entries(tags2)[0]; - boundary[key] = value2; - } else { - boundary.tags = tags2; - } - if (typeof link3 === "object") { - let [key, value2] = Object.entries(link3)[0]; - boundary[key] = value2; - } else { - boundary.link = link3; - } - boundary.parentBoundary = currentBoundaryParse; - boundary.wrap = autoWrap(); - parentBoundaryParse = currentBoundaryParse; - currentBoundaryParse = alias; - boundaryParseStack.push(parentBoundaryParse); - }, "addContainerBoundary"); - addDeploymentNode = /* @__PURE__ */ __name(function(nodeType3, alias, label, type3, descr, sprite, tags2, link3) { - if (alias === null || label === null) { - return; - } - let boundary = {}; - const old = boundaries.find((boundary2) => boundary2.alias === alias); - if (old && alias === old.alias) { - boundary = old; - } else { - boundary.alias = alias; - boundaries.push(boundary); - } - if (label === void 0 || label === null) { - boundary.label = { text: "" }; - } else { - boundary.label = { text: label }; - } - if (type3 === void 0 || type3 === null) { - boundary.type = { text: "node" }; - } else { - if (typeof type3 === "object") { - let [key, value2] = Object.entries(type3)[0]; - boundary[key] = { text: value2 }; - } else { - boundary.type = { text: type3 }; - } - } - if (descr === void 0 || descr === null) { - boundary.descr = { text: "" }; - } else { - if (typeof descr === "object") { - let [key, value2] = Object.entries(descr)[0]; - boundary[key] = { text: value2 }; - } else { - boundary.descr = { text: descr }; - } - } - if (typeof tags2 === "object") { - let [key, value2] = Object.entries(tags2)[0]; - boundary[key] = value2; - } else { - boundary.tags = tags2; - } - if (typeof link3 === "object") { - let [key, value2] = Object.entries(link3)[0]; - boundary[key] = value2; - } else { - boundary.link = link3; - } - boundary.nodeType = nodeType3; - boundary.parentBoundary = currentBoundaryParse; - boundary.wrap = autoWrap(); - parentBoundaryParse = currentBoundaryParse; - currentBoundaryParse = alias; - boundaryParseStack.push(parentBoundaryParse); - }, "addDeploymentNode"); - popBoundaryParseStack = /* @__PURE__ */ __name(function() { - currentBoundaryParse = parentBoundaryParse; - boundaryParseStack.pop(); - parentBoundaryParse = boundaryParseStack.pop(); - boundaryParseStack.push(parentBoundaryParse); - }, "popBoundaryParseStack"); - updateElStyle = /* @__PURE__ */ __name(function(typeC4Shape, elementName, bgColor, fontColor, borderColor, shadowing, shape, sprite, techn, legendText, legendSprite) { - let old = c4ShapeArray.find((element3) => element3.alias === elementName); - if (old === void 0) { - old = boundaries.find((element3) => element3.alias === elementName); - if (old === void 0) { - return; - } - } - if (bgColor !== void 0 && bgColor !== null) { - if (typeof bgColor === "object") { - let [key, value2] = Object.entries(bgColor)[0]; - old[key] = value2; - } else { - old.bgColor = bgColor; - } - } - if (fontColor !== void 0 && fontColor !== null) { - if (typeof fontColor === "object") { - let [key, value2] = Object.entries(fontColor)[0]; - old[key] = value2; - } else { - old.fontColor = fontColor; - } - } - if (borderColor !== void 0 && borderColor !== null) { - if (typeof borderColor === "object") { - let [key, value2] = Object.entries(borderColor)[0]; - old[key] = value2; - } else { - old.borderColor = borderColor; - } - } - if (shadowing !== void 0 && shadowing !== null) { - if (typeof shadowing === "object") { - let [key, value2] = Object.entries(shadowing)[0]; - old[key] = value2; - } else { - old.shadowing = shadowing; - } - } - if (shape !== void 0 && shape !== null) { - if (typeof shape === "object") { - let [key, value2] = Object.entries(shape)[0]; - old[key] = value2; - } else { - old.shape = shape; - } - } - if (sprite !== void 0 && sprite !== null) { - if (typeof sprite === "object") { - let [key, value2] = Object.entries(sprite)[0]; - old[key] = value2; - } else { - old.sprite = sprite; - } - } - if (techn !== void 0 && techn !== null) { - if (typeof techn === "object") { - let [key, value2] = Object.entries(techn)[0]; - old[key] = value2; - } else { - old.techn = techn; - } - } - if (legendText !== void 0 && legendText !== null) { - if (typeof legendText === "object") { - let [key, value2] = Object.entries(legendText)[0]; - old[key] = value2; - } else { - old.legendText = legendText; - } - } - if (legendSprite !== void 0 && legendSprite !== null) { - if (typeof legendSprite === "object") { - let [key, value2] = Object.entries(legendSprite)[0]; - old[key] = value2; - } else { - old.legendSprite = legendSprite; - } - } - }, "updateElStyle"); - updateRelStyle = /* @__PURE__ */ __name(function(typeC4Shape, from2, to, textColor, lineColor, offsetX, offsetY) { - const old = rels.find((rel2) => rel2.from === from2 && rel2.to === to); - if (old === void 0) { - return; - } - if (textColor !== void 0 && textColor !== null) { - if (typeof textColor === "object") { - let [key, value2] = Object.entries(textColor)[0]; - old[key] = value2; - } else { - old.textColor = textColor; - } - } - if (lineColor !== void 0 && lineColor !== null) { - if (typeof lineColor === "object") { - let [key, value2] = Object.entries(lineColor)[0]; - old[key] = value2; - } else { - old.lineColor = lineColor; - } - } - if (offsetX !== void 0 && offsetX !== null) { - if (typeof offsetX === "object") { - let [key, value2] = Object.entries(offsetX)[0]; - old[key] = parseInt(value2); - } else { - old.offsetX = parseInt(offsetX); - } - } - if (offsetY !== void 0 && offsetY !== null) { - if (typeof offsetY === "object") { - let [key, value2] = Object.entries(offsetY)[0]; - old[key] = parseInt(value2); - } else { - old.offsetY = parseInt(offsetY); + init_logger(); + init_regexes(); + init_errors(); + detectors = {}; + detectType = /* @__PURE__ */ __name(function(text4, config5) { + text4 = text4.replace(frontMatterRegex, "").replace(directiveRegex, "").replace(anyCommentRegex, "\n"); + for (const [key, { detector: detector28 }] of Object.entries(detectors)) { + const diagram27 = detector28(text4, config5); + if (diagram27) { + return key; } } - }, "updateRelStyle"); - updateLayoutConfig = /* @__PURE__ */ __name(function(typeC4Shape, c4ShapeInRowParam, c4BoundaryInRowParam) { - let c4ShapeInRowValue = c4ShapeInRow; - let c4BoundaryInRowValue = c4BoundaryInRow; - if (typeof c4ShapeInRowParam === "object") { - const value2 = Object.values(c4ShapeInRowParam)[0]; - c4ShapeInRowValue = parseInt(value2); - } else { - c4ShapeInRowValue = parseInt(c4ShapeInRowParam); - } - if (typeof c4BoundaryInRowParam === "object") { - const value2 = Object.values(c4BoundaryInRowParam)[0]; - c4BoundaryInRowValue = parseInt(value2); - } else { - c4BoundaryInRowValue = parseInt(c4BoundaryInRowParam); - } - if (c4ShapeInRowValue >= 1) { - c4ShapeInRow = c4ShapeInRowValue; - } - if (c4BoundaryInRowValue >= 1) { - c4BoundaryInRow = c4BoundaryInRowValue; - } - }, "updateLayoutConfig"); - getC4ShapeInRow = /* @__PURE__ */ __name(function() { - return c4ShapeInRow; - }, "getC4ShapeInRow"); - getC4BoundaryInRow = /* @__PURE__ */ __name(function() { - return c4BoundaryInRow; - }, "getC4BoundaryInRow"); - getCurrentBoundaryParse = /* @__PURE__ */ __name(function() { - return currentBoundaryParse; - }, "getCurrentBoundaryParse"); - getParentBoundaryParse = /* @__PURE__ */ __name(function() { - return parentBoundaryParse; - }, "getParentBoundaryParse"); - getC4ShapeArray = /* @__PURE__ */ __name(function(parentBoundary) { - if (parentBoundary === void 0 || parentBoundary === null) { - return c4ShapeArray; - } else { - return c4ShapeArray.filter((personOrSystem) => { - return personOrSystem.parentBoundary === parentBoundary; - }); + throw new UnknownDiagramError( + `No diagram type detected matching given configuration for text: ${text4}` + ); + }, "detectType"); + registerLazyLoadedDiagrams = /* @__PURE__ */ __name((...diagrams2) => { + for (const { id: id30, detector: detector28, loader: loader29 } of diagrams2) { + addDetector(id30, detector28, loader29); } - }, "getC4ShapeArray"); - getC4Shape = /* @__PURE__ */ __name(function(alias) { - return c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias); - }, "getC4Shape"); - getC4ShapeKeys = /* @__PURE__ */ __name(function(parentBoundary) { - return Object.keys(getC4ShapeArray(parentBoundary)); - }, "getC4ShapeKeys"); - getBoundaries = /* @__PURE__ */ __name(function(parentBoundary) { - if (parentBoundary === void 0 || parentBoundary === null) { - return boundaries; - } else { - return boundaries.filter((boundary) => boundary.parentBoundary === parentBoundary); + }, "registerLazyLoadedDiagrams"); + addDetector = /* @__PURE__ */ __name((key, detector28, loader29) => { + if (detectors[key]) { + log.warn(`Detector with key ${key} already exists. Overwriting.`); } - }, "getBoundaries"); - getBoundarys = getBoundaries; - getRels = /* @__PURE__ */ __name(function() { - return rels; - }, "getRels"); - getTitle = /* @__PURE__ */ __name(function() { - return title; - }, "getTitle"); - setWrap = /* @__PURE__ */ __name(function(wrapSetting) { - wrapEnabled = wrapSetting; - }, "setWrap"); - autoWrap = /* @__PURE__ */ __name(function() { - return wrapEnabled; - }, "autoWrap"); - clear2 = /* @__PURE__ */ __name(function() { - c4ShapeArray = []; - boundaries = [ - { - alias: "global", - label: { text: "global" }, - type: { text: "global" }, - tags: null, - link: null, - parentBoundary: "" - } - ]; - parentBoundaryParse = ""; - currentBoundaryParse = "global"; - boundaryParseStack = [""]; - rels = []; - boundaryParseStack = [""]; - title = ""; - wrapEnabled = false; - c4ShapeInRow = 4; - c4BoundaryInRow = 2; - }, "clear"); - LINETYPE = { - SOLID: 0, - DOTTED: 1, - NOTE: 2, - SOLID_CROSS: 3, - DOTTED_CROSS: 4, - SOLID_OPEN: 5, - DOTTED_OPEN: 6, - LOOP_START: 10, - LOOP_END: 11, - ALT_START: 12, - ALT_ELSE: 13, - ALT_END: 14, - OPT_START: 15, - OPT_END: 16, - ACTIVE_START: 17, - ACTIVE_END: 18, - PAR_START: 19, - PAR_AND: 20, - PAR_END: 21, - RECT_START: 22, - RECT_END: 23, - SOLID_POINT: 24, - DOTTED_POINT: 25 - }; - ARROWTYPE = { - FILLED: 0, - OPEN: 1 - }; - PLACEMENT = { - LEFTOF: 0, - RIGHTOF: 1, - OVER: 2 - }; - setTitle = /* @__PURE__ */ __name(function(txt) { - let sanitizedText = sanitizeText(txt, getConfig2()); - title = sanitizedText; - }, "setTitle"); - c4Db_default = { - addPersonOrSystem, - addPersonOrSystemBoundary, - addContainer, - addContainerBoundary, - addComponent, - addDeploymentNode, - popBoundaryParseStack, - addRel, - updateElStyle, - updateRelStyle, - updateLayoutConfig, - autoWrap, - setWrap, - getC4ShapeArray, - getC4Shape, - getC4ShapeKeys, - getBoundaries, - getBoundarys, - getCurrentBoundaryParse, - getParentBoundaryParse, - getRels, - getTitle, - getC4Type, - getC4ShapeInRow, - getC4BoundaryInRow, - setAccTitle, - getAccTitle, - getAccDescription, - setAccDescription, - getConfig: /* @__PURE__ */ __name(() => getConfig2().c4, "getConfig"), - clear: clear2, - LINETYPE, - ARROWTYPE, - PLACEMENT, - setTitle, - setC4Type - // apply, - }; + detectors[key] = { detector: detector28, loader: loader29 }; + log.debug(`Detector with key ${key} added${loader29 ? " with loader" : ""}`); + }, "addDetector"); + getDiagramLoader = /* @__PURE__ */ __name((key) => { + return detectors[key].loader; + }, "getDiagramLoader"); } }); - // ../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ascending.js - function ascending(a2, b2) { - return a2 == null || b2 == null ? NaN : a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN; - } - var init_ascending = __esm({ - "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ascending.js"() { + // src/diagrams/c4/parser/c4Diagram.jison + var parser, c4Diagram_default; + var init_c4Diagram = __esm({ + "src/diagrams/c4/parser/c4Diagram.jison"() { "use strict"; - __name(ascending, "ascending"); + parser = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; + return o3; + }, "o"), $V0 = [1, 24], $V1 = [1, 25], $V2 = [1, 26], $V3 = [1, 27], $V4 = [1, 28], $V5 = [1, 63], $V6 = [1, 64], $V7 = [1, 65], $V8 = [1, 66], $V9 = [1, 67], $Va = [1, 68], $Vb = [1, 69], $Vc = [1, 29], $Vd = [1, 30], $Ve = [1, 31], $Vf = [1, 32], $Vg = [1, 33], $Vh = [1, 34], $Vi = [1, 35], $Vj = [1, 36], $Vk = [1, 37], $Vl = [1, 38], $Vm = [1, 39], $Vn = [1, 40], $Vo = [1, 41], $Vp = [1, 42], $Vq = [1, 43], $Vr = [1, 44], $Vs = [1, 45], $Vt = [1, 46], $Vu = [1, 47], $Vv = [1, 48], $Vw = [1, 50], $Vx = [1, 51], $Vy = [1, 52], $Vz = [1, 53], $VA = [1, 54], $VB = [1, 55], $VC = [1, 56], $VD = [1, 57], $VE = [1, 58], $VF = [1, 59], $VG = [1, 60], $VH = [14, 42], $VI = [14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VJ = [12, 14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VK = [1, 82], $VL = [1, 83], $VM = [1, 84], $VN = [1, 85], $VO = [12, 14, 42], $VP = [12, 14, 33, 42], $VQ = [12, 14, 33, 42, 76, 77, 79, 80], $VR = [12, 33], $VS = [34, 36, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74]; + var parser24 = { + trace: /* @__PURE__ */ __name(function trace() { + }, "trace"), + yy: {}, + symbols_: { "error": 2, "start": 3, "mermaidDoc": 4, "direction": 5, "direction_tb": 6, "direction_bt": 7, "direction_rl": 8, "direction_lr": 9, "graphConfig": 10, "C4_CONTEXT": 11, "NEWLINE": 12, "statements": 13, "EOF": 14, "C4_CONTAINER": 15, "C4_COMPONENT": 16, "C4_DYNAMIC": 17, "C4_DEPLOYMENT": 18, "otherStatements": 19, "diagramStatements": 20, "otherStatement": 21, "title": 22, "accDescription": 23, "acc_title": 24, "acc_title_value": 25, "acc_descr": 26, "acc_descr_value": 27, "acc_descr_multiline_value": 28, "boundaryStatement": 29, "boundaryStartStatement": 30, "boundaryStopStatement": 31, "boundaryStart": 32, "LBRACE": 33, "ENTERPRISE_BOUNDARY": 34, "attributes": 35, "SYSTEM_BOUNDARY": 36, "BOUNDARY": 37, "CONTAINER_BOUNDARY": 38, "NODE": 39, "NODE_L": 40, "NODE_R": 41, "RBRACE": 42, "diagramStatement": 43, "PERSON": 44, "PERSON_EXT": 45, "SYSTEM": 46, "SYSTEM_DB": 47, "SYSTEM_QUEUE": 48, "SYSTEM_EXT": 49, "SYSTEM_EXT_DB": 50, "SYSTEM_EXT_QUEUE": 51, "CONTAINER": 52, "CONTAINER_DB": 53, "CONTAINER_QUEUE": 54, "CONTAINER_EXT": 55, "CONTAINER_EXT_DB": 56, "CONTAINER_EXT_QUEUE": 57, "COMPONENT": 58, "COMPONENT_DB": 59, "COMPONENT_QUEUE": 60, "COMPONENT_EXT": 61, "COMPONENT_EXT_DB": 62, "COMPONENT_EXT_QUEUE": 63, "REL": 64, "BIREL": 65, "REL_U": 66, "REL_D": 67, "REL_L": 68, "REL_R": 69, "REL_B": 70, "REL_INDEX": 71, "UPDATE_EL_STYLE": 72, "UPDATE_REL_STYLE": 73, "UPDATE_LAYOUT_CONFIG": 74, "attribute": 75, "STR": 76, "STR_KEY": 77, "STR_VALUE": 78, "ATTRIBUTE": 79, "ATTRIBUTE_EMPTY": 80, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 6: "direction_tb", 7: "direction_bt", 8: "direction_rl", 9: "direction_lr", 11: "C4_CONTEXT", 12: "NEWLINE", 14: "EOF", 15: "C4_CONTAINER", 16: "C4_COMPONENT", 17: "C4_DYNAMIC", 18: "C4_DEPLOYMENT", 22: "title", 23: "accDescription", 24: "acc_title", 25: "acc_title_value", 26: "acc_descr", 27: "acc_descr_value", 28: "acc_descr_multiline_value", 33: "LBRACE", 34: "ENTERPRISE_BOUNDARY", 36: "SYSTEM_BOUNDARY", 37: "BOUNDARY", 38: "CONTAINER_BOUNDARY", 39: "NODE", 40: "NODE_L", 41: "NODE_R", 42: "RBRACE", 44: "PERSON", 45: "PERSON_EXT", 46: "SYSTEM", 47: "SYSTEM_DB", 48: "SYSTEM_QUEUE", 49: "SYSTEM_EXT", 50: "SYSTEM_EXT_DB", 51: "SYSTEM_EXT_QUEUE", 52: "CONTAINER", 53: "CONTAINER_DB", 54: "CONTAINER_QUEUE", 55: "CONTAINER_EXT", 56: "CONTAINER_EXT_DB", 57: "CONTAINER_EXT_QUEUE", 58: "COMPONENT", 59: "COMPONENT_DB", 60: "COMPONENT_QUEUE", 61: "COMPONENT_EXT", 62: "COMPONENT_EXT_DB", 63: "COMPONENT_EXT_QUEUE", 64: "REL", 65: "BIREL", 66: "REL_U", 67: "REL_D", 68: "REL_L", 69: "REL_R", 70: "REL_B", 71: "REL_INDEX", 72: "UPDATE_EL_STYLE", 73: "UPDATE_REL_STYLE", 74: "UPDATE_LAYOUT_CONFIG", 76: "STR", 77: "STR_KEY", 78: "STR_VALUE", 79: "ATTRIBUTE", 80: "ATTRIBUTE_EMPTY" }, + productions_: [0, [3, 1], [3, 1], [5, 1], [5, 1], [5, 1], [5, 1], [4, 1], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [13, 1], [13, 1], [13, 2], [19, 1], [19, 2], [19, 3], [21, 1], [21, 1], [21, 2], [21, 2], [21, 1], [29, 3], [30, 3], [30, 3], [30, 4], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [31, 1], [20, 1], [20, 2], [20, 3], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 1], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [35, 1], [35, 2], [75, 1], [75, 2], [75, 1], [75, 1]], + performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 3: + yy.setDirection("TB"); + break; + case 4: + yy.setDirection("BT"); + break; + case 5: + yy.setDirection("RL"); + break; + case 6: + yy.setDirection("LR"); + break; + case 8: + case 9: + case 10: + case 11: + case 12: + yy.setC4Type($$[$0 - 3]); + break; + case 19: + yy.setTitle($$[$0].substring(6)); + this.$ = $$[$0].substring(6); + break; + case 20: + yy.setAccDescription($$[$0].substring(15)); + this.$ = $$[$0].substring(15); + break; + case 21: + this.$ = $$[$0].trim(); + yy.setTitle(this.$); + break; + case 22: + case 23: + this.$ = $$[$0].trim(); + yy.setAccDescription(this.$); + break; + case 28: + $$[$0].splice(2, 0, "ENTERPRISE"); + yy.addPersonOrSystemBoundary(...$$[$0]); + this.$ = $$[$0]; + break; + case 29: + $$[$0].splice(2, 0, "SYSTEM"); + yy.addPersonOrSystemBoundary(...$$[$0]); + this.$ = $$[$0]; + break; + case 30: + yy.addPersonOrSystemBoundary(...$$[$0]); + this.$ = $$[$0]; + break; + case 31: + $$[$0].splice(2, 0, "CONTAINER"); + yy.addContainerBoundary(...$$[$0]); + this.$ = $$[$0]; + break; + case 32: + yy.addDeploymentNode("node", ...$$[$0]); + this.$ = $$[$0]; + break; + case 33: + yy.addDeploymentNode("nodeL", ...$$[$0]); + this.$ = $$[$0]; + break; + case 34: + yy.addDeploymentNode("nodeR", ...$$[$0]); + this.$ = $$[$0]; + break; + case 35: + yy.popBoundaryParseStack(); + break; + case 39: + yy.addPersonOrSystem("person", ...$$[$0]); + this.$ = $$[$0]; + break; + case 40: + yy.addPersonOrSystem("external_person", ...$$[$0]); + this.$ = $$[$0]; + break; + case 41: + yy.addPersonOrSystem("system", ...$$[$0]); + this.$ = $$[$0]; + break; + case 42: + yy.addPersonOrSystem("system_db", ...$$[$0]); + this.$ = $$[$0]; + break; + case 43: + yy.addPersonOrSystem("system_queue", ...$$[$0]); + this.$ = $$[$0]; + break; + case 44: + yy.addPersonOrSystem("external_system", ...$$[$0]); + this.$ = $$[$0]; + break; + case 45: + yy.addPersonOrSystem("external_system_db", ...$$[$0]); + this.$ = $$[$0]; + break; + case 46: + yy.addPersonOrSystem("external_system_queue", ...$$[$0]); + this.$ = $$[$0]; + break; + case 47: + yy.addContainer("container", ...$$[$0]); + this.$ = $$[$0]; + break; + case 48: + yy.addContainer("container_db", ...$$[$0]); + this.$ = $$[$0]; + break; + case 49: + yy.addContainer("container_queue", ...$$[$0]); + this.$ = $$[$0]; + break; + case 50: + yy.addContainer("external_container", ...$$[$0]); + this.$ = $$[$0]; + break; + case 51: + yy.addContainer("external_container_db", ...$$[$0]); + this.$ = $$[$0]; + break; + case 52: + yy.addContainer("external_container_queue", ...$$[$0]); + this.$ = $$[$0]; + break; + case 53: + yy.addComponent("component", ...$$[$0]); + this.$ = $$[$0]; + break; + case 54: + yy.addComponent("component_db", ...$$[$0]); + this.$ = $$[$0]; + break; + case 55: + yy.addComponent("component_queue", ...$$[$0]); + this.$ = $$[$0]; + break; + case 56: + yy.addComponent("external_component", ...$$[$0]); + this.$ = $$[$0]; + break; + case 57: + yy.addComponent("external_component_db", ...$$[$0]); + this.$ = $$[$0]; + break; + case 58: + yy.addComponent("external_component_queue", ...$$[$0]); + this.$ = $$[$0]; + break; + case 60: + yy.addRel("rel", ...$$[$0]); + this.$ = $$[$0]; + break; + case 61: + yy.addRel("birel", ...$$[$0]); + this.$ = $$[$0]; + break; + case 62: + yy.addRel("rel_u", ...$$[$0]); + this.$ = $$[$0]; + break; + case 63: + yy.addRel("rel_d", ...$$[$0]); + this.$ = $$[$0]; + break; + case 64: + yy.addRel("rel_l", ...$$[$0]); + this.$ = $$[$0]; + break; + case 65: + yy.addRel("rel_r", ...$$[$0]); + this.$ = $$[$0]; + break; + case 66: + yy.addRel("rel_b", ...$$[$0]); + this.$ = $$[$0]; + break; + case 67: + $$[$0].splice(0, 1); + yy.addRel("rel", ...$$[$0]); + this.$ = $$[$0]; + break; + case 68: + yy.updateElStyle("update_el_style", ...$$[$0]); + this.$ = $$[$0]; + break; + case 69: + yy.updateRelStyle("update_rel_style", ...$$[$0]); + this.$ = $$[$0]; + break; + case 70: + yy.updateLayoutConfig("update_layout_config", ...$$[$0]); + this.$ = $$[$0]; + break; + case 71: + this.$ = [$$[$0]]; + break; + case 72: + $$[$0].unshift($$[$0 - 1]); + this.$ = $$[$0]; + break; + case 73: + case 75: + this.$ = $$[$0].trim(); + break; + case 74: + let kv = {}; + kv[$$[$0 - 1].trim()] = $$[$0].trim(); + this.$ = kv; + break; + case 76: + this.$ = ""; + break; + } + }, "anonymous"), + table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 7: [1, 6], 8: [1, 7], 9: [1, 8], 10: 4, 11: [1, 9], 15: [1, 10], 16: [1, 11], 17: [1, 12], 18: [1, 13] }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 7] }, { 1: [2, 3] }, { 1: [2, 4] }, { 1: [2, 5] }, { 1: [2, 6] }, { 12: [1, 14] }, { 12: [1, 15] }, { 12: [1, 16] }, { 12: [1, 17] }, { 12: [1, 18] }, { 13: 19, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 70, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 71, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 72, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 73, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 14: [1, 74] }, o2($VH, [2, 13], { 43: 23, 29: 49, 30: 61, 32: 62, 20: 75, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o2($VH, [2, 14]), o2($VI, [2, 16], { 12: [1, 76] }), o2($VH, [2, 36], { 12: [1, 77] }), o2($VJ, [2, 19]), o2($VJ, [2, 20]), { 25: [1, 78] }, { 27: [1, 79] }, o2($VJ, [2, 23]), { 35: 80, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 86, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 87, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 88, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 89, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 90, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 91, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 92, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 93, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 94, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 95, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 96, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 97, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 98, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 99, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 100, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 101, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 102, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 103, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 104, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, o2($VO, [2, 59]), { 35: 105, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 106, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 107, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 108, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 109, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 110, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 111, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 112, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 113, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 114, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 115, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 20: 116, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 12: [1, 118], 33: [1, 117] }, { 35: 119, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 120, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 121, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 122, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 123, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 124, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 125, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 14: [1, 126] }, { 14: [1, 127] }, { 14: [1, 128] }, { 14: [1, 129] }, { 1: [2, 8] }, o2($VH, [2, 15]), o2($VI, [2, 17], { 21: 22, 19: 130, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4 }), o2($VH, [2, 37], { 19: 20, 20: 21, 21: 22, 43: 23, 29: 49, 30: 61, 32: 62, 13: 131, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o2($VJ, [2, 21]), o2($VJ, [2, 22]), o2($VO, [2, 39]), o2($VP, [2, 71], { 75: 81, 35: 132, 76: $VK, 77: $VL, 79: $VM, 80: $VN }), o2($VQ, [2, 73]), { 78: [1, 133] }, o2($VQ, [2, 75]), o2($VQ, [2, 76]), o2($VO, [2, 40]), o2($VO, [2, 41]), o2($VO, [2, 42]), o2($VO, [2, 43]), o2($VO, [2, 44]), o2($VO, [2, 45]), o2($VO, [2, 46]), o2($VO, [2, 47]), o2($VO, [2, 48]), o2($VO, [2, 49]), o2($VO, [2, 50]), o2($VO, [2, 51]), o2($VO, [2, 52]), o2($VO, [2, 53]), o2($VO, [2, 54]), o2($VO, [2, 55]), o2($VO, [2, 56]), o2($VO, [2, 57]), o2($VO, [2, 58]), o2($VO, [2, 60]), o2($VO, [2, 61]), o2($VO, [2, 62]), o2($VO, [2, 63]), o2($VO, [2, 64]), o2($VO, [2, 65]), o2($VO, [2, 66]), o2($VO, [2, 67]), o2($VO, [2, 68]), o2($VO, [2, 69]), o2($VO, [2, 70]), { 31: 134, 42: [1, 135] }, { 12: [1, 136] }, { 33: [1, 137] }, o2($VR, [2, 28]), o2($VR, [2, 29]), o2($VR, [2, 30]), o2($VR, [2, 31]), o2($VR, [2, 32]), o2($VR, [2, 33]), o2($VR, [2, 34]), { 1: [2, 9] }, { 1: [2, 10] }, { 1: [2, 11] }, { 1: [2, 12] }, o2($VI, [2, 18]), o2($VH, [2, 38]), o2($VP, [2, 72]), o2($VQ, [2, 74]), o2($VO, [2, 24]), o2($VO, [2, 35]), o2($VS, [2, 25]), o2($VS, [2, 26], { 12: [1, 138] }), o2($VS, [2, 27])], + defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 7], 5: [2, 3], 6: [2, 4], 7: [2, 5], 8: [2, 6], 74: [2, 8], 126: [2, 9], 127: [2, 10], 128: [2, 11], 129: [2, 12] }, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); + } else { + var error3 = new Error(str2); + error3.hash = hash; + throw error3; + } + }, "parseError"), + parse: /* @__PURE__ */ __name(function parse7(input) { + var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k2 in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { + sharedState.yy[k2] = this.yy[k2]; + } + } + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; + } + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n2) { + stack.length = stack.length - 2 * n2; + vstack.length = vstack.length - n2; + lstack.length = lstack.length - n2; + } + __name(popStack, "popStack"); + function lex() { + var token2; + token2 = tstack.pop() || lexer2.lex() || EOF2; + if (typeof token2 !== "number") { + if (token2 instanceof Array) { + tstack = token2; + token2 = tstack.pop(); + } + token2 = self2.symbols_[token2] || token2; + } + return token2; + } + __name(lex, "lex"); + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; + while (true) { + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); + } + action = table[state3] && table[state3][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p3 in table[state3]) { + if (this.terminals_[p3] && p3 > TERROR) { + expected.push("'" + this.terminals_[p3] + "'"); + } + } + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + } else { + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + } + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + if (recovering > 0) { + recovering--; + } + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; + } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r2 = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r2 !== "undefined") { + return r2; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState2); + break; + case 3: + return true; + } + } + return true; + }, "parse") + }; + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { + EOF: 1, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str2, hash); + } else { + throw new Error(str2); + } + }, "parseError"), + // resets the lexer, sets new input + setInput: /* @__PURE__ */ __name(function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0, 0]; + } + this.offset = 0; + return this; + }, "setInput"), + // consumes and returns one char from the input + input: /* @__PURE__ */ __name(function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } + this._input = this._input.slice(1); + return ch; + }, "input"), + // unshifts one char (or a string) into the input + unput: /* @__PURE__ */ __name(function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r2 = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + }; + if (this.options.ranges) { + this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, "unput"), + // When called from action, caches matched text and appends it on next action + more: /* @__PURE__ */ __name(function() { + this._more = true; + return this; + }, "more"), + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: /* @__PURE__ */ __name(function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + return this; + }, "reject"), + // retain first n characters of the match + less: /* @__PURE__ */ __name(function(n2) { + this.unput(this.match.slice(n2)); + }, "less"), + // displays already matched input, i.e. for error messages + pastInput: /* @__PURE__ */ __name(function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, "pastInput"), + // displays upcoming input, i.e. for error messages + upcomingInput: /* @__PURE__ */ __name(function() { + var next3 = this.match; + if (next3.length < 20) { + next3 += this._input.substr(0, 20 - next3.length); + } + return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, "upcomingInput"), + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: /* @__PURE__ */ __name(function() { + var pre = this.pastInput(); + var c3 = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c3 + "^"; + }, "showPosition"), + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { + var token2, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); + } + } + lines = match2[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length + }; + this.yytext += match2[0]; + this.match += match2[0]; + this.matches = match2; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match2[0].length); + this.matched += match2[0]; + token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token2) { + return token2; + } else if (this._backtrack) { + for (var k2 in backup) { + this[k2] = backup[k2]; + } + return false; + } + return false; + }, "test_match"), + // return next match in input + next: /* @__PURE__ */ __name(function() { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + var token2, match2, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i2 = 0; i2 < rules.length; i2++) { + tempMatch = this._input.match(this.rules[rules[i2]]); + if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { + match2 = tempMatch; + index = i2; + if (this.options.backtrack_lexer) { + token2 = this.test_match(tempMatch, rules[i2]); + if (token2 !== false) { + return token2; + } else if (this._backtrack) { + match2 = false; + continue; + } else { + return false; + } + } else if (!this.options.flex) { + break; + } + } + } + if (match2) { + token2 = this.test_match(match2, rules[index]); + if (token2 !== false) { + return token2; + } + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, "next"), + // return next match that has a token + lex: /* @__PURE__ */ __name(function lex() { + var r2 = this.next(); + if (r2) { + return r2; + } else { + return this.lex(); + } + }, "lex"), + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: /* @__PURE__ */ __name(function begin(condition) { + this.conditionStack.push(condition); + }, "begin"), + // pop the previously active lexer condition state off the condition stack + popState: /* @__PURE__ */ __name(function popState() { + var n2 = this.conditionStack.length - 1; + if (n2 > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, "popState"), + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: /* @__PURE__ */ __name(function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, "_currentRules"), + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: /* @__PURE__ */ __name(function topState(n2) { + n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); + if (n2 >= 0) { + return this.conditionStack[n2]; + } else { + return "INITIAL"; + } + }, "topState"), + // alias for begin(condition) + pushState: /* @__PURE__ */ __name(function pushState(condition) { + this.begin(condition); + }, "pushState"), + // return the number of states currently on the stack + stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { + return this.conditionStack.length; + }, "stateStackSize"), + options: {}, + performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + var YYSTATE = YY_START; + switch ($avoiding_name_collisions) { + case 0: + return 6; + break; + case 1: + return 7; + break; + case 2: + return 8; + break; + case 3: + return 9; + break; + case 4: + return 22; + break; + case 5: + return 23; + break; + case 6: + this.begin("acc_title"); + return 24; + break; + case 7: + this.popState(); + return "acc_title_value"; + break; + case 8: + this.begin("acc_descr"); + return 26; + break; + case 9: + this.popState(); + return "acc_descr_value"; + break; + case 10: + this.begin("acc_descr_multiline"); + break; + case 11: + this.popState(); + break; + case 12: + return "acc_descr_multiline_value"; + break; + case 13: + break; + case 14: + c; + break; + case 15: + return 12; + break; + case 16: + break; + case 17: + return 11; + break; + case 18: + return 15; + break; + case 19: + return 16; + break; + case 20: + return 17; + break; + case 21: + return 18; + break; + case 22: + this.begin("person_ext"); + return 45; + break; + case 23: + this.begin("person"); + return 44; + break; + case 24: + this.begin("system_ext_queue"); + return 51; + break; + case 25: + this.begin("system_ext_db"); + return 50; + break; + case 26: + this.begin("system_ext"); + return 49; + break; + case 27: + this.begin("system_queue"); + return 48; + break; + case 28: + this.begin("system_db"); + return 47; + break; + case 29: + this.begin("system"); + return 46; + break; + case 30: + this.begin("boundary"); + return 37; + break; + case 31: + this.begin("enterprise_boundary"); + return 34; + break; + case 32: + this.begin("system_boundary"); + return 36; + break; + case 33: + this.begin("container_ext_queue"); + return 57; + break; + case 34: + this.begin("container_ext_db"); + return 56; + break; + case 35: + this.begin("container_ext"); + return 55; + break; + case 36: + this.begin("container_queue"); + return 54; + break; + case 37: + this.begin("container_db"); + return 53; + break; + case 38: + this.begin("container"); + return 52; + break; + case 39: + this.begin("container_boundary"); + return 38; + break; + case 40: + this.begin("component_ext_queue"); + return 63; + break; + case 41: + this.begin("component_ext_db"); + return 62; + break; + case 42: + this.begin("component_ext"); + return 61; + break; + case 43: + this.begin("component_queue"); + return 60; + break; + case 44: + this.begin("component_db"); + return 59; + break; + case 45: + this.begin("component"); + return 58; + break; + case 46: + this.begin("node"); + return 39; + break; + case 47: + this.begin("node"); + return 39; + break; + case 48: + this.begin("node_l"); + return 40; + break; + case 49: + this.begin("node_r"); + return 41; + break; + case 50: + this.begin("rel"); + return 64; + break; + case 51: + this.begin("birel"); + return 65; + break; + case 52: + this.begin("rel_u"); + return 66; + break; + case 53: + this.begin("rel_u"); + return 66; + break; + case 54: + this.begin("rel_d"); + return 67; + break; + case 55: + this.begin("rel_d"); + return 67; + break; + case 56: + this.begin("rel_l"); + return 68; + break; + case 57: + this.begin("rel_l"); + return 68; + break; + case 58: + this.begin("rel_r"); + return 69; + break; + case 59: + this.begin("rel_r"); + return 69; + break; + case 60: + this.begin("rel_b"); + return 70; + break; + case 61: + this.begin("rel_index"); + return 71; + break; + case 62: + this.begin("update_el_style"); + return 72; + break; + case 63: + this.begin("update_rel_style"); + return 73; + break; + case 64: + this.begin("update_layout_config"); + return 74; + break; + case 65: + return "EOF_IN_STRUCT"; + break; + case 66: + this.begin("attribute"); + return "ATTRIBUTE_EMPTY"; + break; + case 67: + this.begin("attribute"); + break; + case 68: + this.popState(); + this.popState(); + break; + case 69: + return 80; + break; + case 70: + break; + case 71: + return 80; + break; + case 72: + this.begin("string"); + break; + case 73: + this.popState(); + break; + case 74: + return "STR"; + break; + case 75: + this.begin("string_kv"); + break; + case 76: + this.begin("string_kv_key"); + return "STR_KEY"; + break; + case 77: + this.popState(); + this.begin("string_kv_value"); + break; + case 78: + return "STR_VALUE"; + break; + case 79: + this.popState(); + this.popState(); + break; + case 80: + return "STR"; + break; + case 81: + return "LBRACE"; + break; + case 82: + return "RBRACE"; + break; + case 83: + return "SPACE"; + break; + case 84: + return "EOL"; + break; + case 85: + return 14; + break; + } + }, "anonymous"), + rules: [/^(?:.*direction\s+TB[^\n]*)/, /^(?:.*direction\s+BT[^\n]*)/, /^(?:.*direction\s+RL[^\n]*)/, /^(?:.*direction\s+LR[^\n]*)/, /^(?:title\s[^#\n;]+)/, /^(?:accDescription\s[^#\n;]+)/, /^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/, /^(?:%%[^\n]*(\r?\n)*)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:C4Context\b)/, /^(?:C4Container\b)/, /^(?:C4Component\b)/, /^(?:C4Dynamic\b)/, /^(?:C4Deployment\b)/, /^(?:Person_Ext\b)/, /^(?:Person\b)/, /^(?:SystemQueue_Ext\b)/, /^(?:SystemDb_Ext\b)/, /^(?:System_Ext\b)/, /^(?:SystemQueue\b)/, /^(?:SystemDb\b)/, /^(?:System\b)/, /^(?:Boundary\b)/, /^(?:Enterprise_Boundary\b)/, /^(?:System_Boundary\b)/, /^(?:ContainerQueue_Ext\b)/, /^(?:ContainerDb_Ext\b)/, /^(?:Container_Ext\b)/, /^(?:ContainerQueue\b)/, /^(?:ContainerDb\b)/, /^(?:Container\b)/, /^(?:Container_Boundary\b)/, /^(?:ComponentQueue_Ext\b)/, /^(?:ComponentDb_Ext\b)/, /^(?:Component_Ext\b)/, /^(?:ComponentQueue\b)/, /^(?:ComponentDb\b)/, /^(?:Component\b)/, /^(?:Deployment_Node\b)/, /^(?:Node\b)/, /^(?:Node_L\b)/, /^(?:Node_R\b)/, /^(?:Rel\b)/, /^(?:BiRel\b)/, /^(?:Rel_Up\b)/, /^(?:Rel_U\b)/, /^(?:Rel_Down\b)/, /^(?:Rel_D\b)/, /^(?:Rel_Left\b)/, /^(?:Rel_L\b)/, /^(?:Rel_Right\b)/, /^(?:Rel_R\b)/, /^(?:Rel_Back\b)/, /^(?:RelIndex\b)/, /^(?:UpdateElementStyle\b)/, /^(?:UpdateRelStyle\b)/, /^(?:UpdateLayoutConfig\b)/, /^(?:$)/, /^(?:[(][ ]*[,])/, /^(?:[(])/, /^(?:[)])/, /^(?:,,)/, /^(?:,)/, /^(?:[ ]*["]["])/, /^(?:[ ]*["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:[ ]*[\$])/, /^(?:[^=]*)/, /^(?:[=][ ]*["])/, /^(?:[^"]+)/, /^(?:["])/, /^(?:[^,]+)/, /^(?:\{)/, /^(?:\})/, /^(?:[\s]+)/, /^(?:[\n\r]+)/, /^(?:$)/], + conditions: { "acc_descr_multiline": { "rules": [11, 12], "inclusive": false }, "acc_descr": { "rules": [9], "inclusive": false }, "acc_title": { "rules": [7], "inclusive": false }, "string_kv_value": { "rules": [78, 79], "inclusive": false }, "string_kv_key": { "rules": [77], "inclusive": false }, "string_kv": { "rules": [76], "inclusive": false }, "string": { "rules": [73, 74], "inclusive": false }, "attribute": { "rules": [68, 69, 70, 71, 72, 75, 80], "inclusive": false }, "update_layout_config": { "rules": [65, 66, 67, 68], "inclusive": false }, "update_rel_style": { "rules": [65, 66, 67, 68], "inclusive": false }, "update_el_style": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_b": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_r": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_l": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_d": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_u": { "rules": [65, 66, 67, 68], "inclusive": false }, "rel_bi": { "rules": [], "inclusive": false }, "rel": { "rules": [65, 66, 67, 68], "inclusive": false }, "node_r": { "rules": [65, 66, 67, 68], "inclusive": false }, "node_l": { "rules": [65, 66, 67, 68], "inclusive": false }, "node": { "rules": [65, 66, 67, 68], "inclusive": false }, "index": { "rules": [], "inclusive": false }, "rel_index": { "rules": [65, 66, 67, 68], "inclusive": false }, "component_ext_queue": { "rules": [], "inclusive": false }, "component_ext_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "component_ext": { "rules": [65, 66, 67, 68], "inclusive": false }, "component_queue": { "rules": [65, 66, 67, 68], "inclusive": false }, "component_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "component": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_boundary": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_ext_queue": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_ext_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_ext": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_queue": { "rules": [65, 66, 67, 68], "inclusive": false }, "container_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "container": { "rules": [65, 66, 67, 68], "inclusive": false }, "birel": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_boundary": { "rules": [65, 66, 67, 68], "inclusive": false }, "enterprise_boundary": { "rules": [65, 66, 67, 68], "inclusive": false }, "boundary": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_ext_queue": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_ext_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_ext": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_queue": { "rules": [65, 66, 67, 68], "inclusive": false }, "system_db": { "rules": [65, 66, 67, 68], "inclusive": false }, "system": { "rules": [65, 66, 67, 68], "inclusive": false }, "person_ext": { "rules": [65, 66, 67, 68], "inclusive": false }, "person": { "rules": [65, 66, 67, 68], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 81, 82, 83, 84, 85], "inclusive": true } } + }; + return lexer2; + })(); + parser24.lexer = lexer; + function Parser3() { + this.yy = {}; + } + __name(Parser3, "Parser"); + Parser3.prototype = parser24; + parser24.Parser = Parser3; + return new Parser3(); + })(); + parser.parser = parser; + c4Diagram_default = parser; } }); - // ../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/descending.js - function descending(a2, b2) { - return a2 == null || b2 == null ? NaN : b2 < a2 ? -1 : b2 > a2 ? 1 : b2 >= a2 ? 0 : NaN; - } - var init_descending = __esm({ - "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/descending.js"() { + // src/setupGraphViewbox.js + var d3Attrs, calculateSvgSizeAttrs, configureSvgSize, setupGraphViewbox; + var init_setupGraphViewbox = __esm({ + "src/setupGraphViewbox.js"() { "use strict"; - __name(descending, "descending"); - } - }); - - // ../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisector.js - function bisector(f2) { - let compare1, compare2, delta; - if (f2.length !== 2) { - compare1 = ascending; - compare2 = /* @__PURE__ */ __name((d2, x5) => ascending(f2(d2), x5), "compare2"); - delta = /* @__PURE__ */ __name((d2, x5) => f2(d2) - x5, "delta"); - } else { - compare1 = f2 === ascending || f2 === descending ? f2 : zero; - compare2 = f2; - delta = f2; - } - function left3(a2, x5, lo = 0, hi = a2.length) { - if (lo < hi) { - if (compare1(x5, x5) !== 0) return hi; + init_logger(); + d3Attrs = /* @__PURE__ */ __name(function(d3Elem, attrs) { + for (let attr of attrs) { + d3Elem.attr(attr[0], attr[1]); + } + }, "d3Attrs"); + calculateSvgSizeAttrs = /* @__PURE__ */ __name(function(height2, width3, useMaxWidth) { + let attrs = /* @__PURE__ */ new Map(); + if (useMaxWidth) { + attrs.set("width", "100%"); + attrs.set("style", `max-width: ${width3}px;`); + } else { + attrs.set("height", height2); + attrs.set("width", width3); + } + return attrs; + }, "calculateSvgSizeAttrs"); + configureSvgSize = /* @__PURE__ */ __name(function(svgElem, height2, width3, useMaxWidth) { + const attrs = calculateSvgSizeAttrs(height2, width3, useMaxWidth); + d3Attrs(svgElem, attrs); + }, "configureSvgSize"); + setupGraphViewbox = /* @__PURE__ */ __name(function(graph, svgElem, padding2, useMaxWidth) { + const svgBounds = svgElem.node().getBBox(); + const sWidth = svgBounds.width; + const sHeight = svgBounds.height; + log.info(`SVG bounds: ${sWidth}x${sHeight}`, svgBounds); + let width3 = 0; + let height2 = 0; + log.info(`Graph bounds: ${width3}x${height2}`, graph); + width3 = sWidth + padding2 * 2; + height2 = sHeight + padding2 * 2; + log.info(`Calculated bounds: ${width3}x${height2}`); + configureSvgSize(svgElem, height2, width3, useMaxWidth); + const vBox = `${svgBounds.x - padding2} ${svgBounds.y - padding2} ${svgBounds.width + 2 * padding2} ${svgBounds.height + 2 * padding2}`; + svgElem.attr("viewBox", vBox); + }, "setupGraphViewbox"); + } + }); + + // src/styles.ts + var themes, getStyles, addStylesForDiagram, styles_default; + var init_styles = __esm({ + "src/styles.ts"() { + "use strict"; + init_logger(); + themes = {}; + getStyles = /* @__PURE__ */ __name((type3, userStyles, options2) => { + let diagramStyles = ""; + if (type3 in themes && themes[type3]) { + diagramStyles = themes[type3](options2); + } else { + log.warn(`No theme found for ${type3}`); + } + return ` & { + font-family: ${options2.fontFamily}; + font-size: ${options2.fontSize}; + fill: ${options2.textColor} + } + @keyframes edge-animation-frame { + from { + stroke-dashoffset: 0; + } + } + @keyframes dash { + to { + stroke-dashoffset: 0; + } + } + & .edge-animation-slow { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 50s linear infinite; + stroke-linecap: round; + } + & .edge-animation-fast { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 20s linear infinite; + stroke-linecap: round; + } + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${options2.errorBkgColor}; + } + & .error-text { + fill: ${options2.errorTextColor}; + stroke: ${options2.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 1px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + & .edge-thickness-invisible { + stroke-width: 0; + fill: none; + } + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${options2.lineColor}; + stroke: ${options2.lineColor}; + } + & .marker.cross { + stroke: ${options2.lineColor}; + } + + & svg { + font-family: ${options2.fontFamily}; + font-size: ${options2.fontSize}; + } + & p { + margin: 0 + } + + ${diagramStyles} + + ${userStyles} +`; + }, "getStyles"); + addStylesForDiagram = /* @__PURE__ */ __name((type3, diagramTheme) => { + if (diagramTheme !== void 0) { + themes[type3] = diagramTheme; + } + }, "addStylesForDiagram"); + styles_default = getStyles; + } + }); + + // src/diagrams/common/commonDb.ts + var commonDb_exports = {}; + __export(commonDb_exports, { + clear: () => clear, + getAccDescription: () => getAccDescription, + getAccTitle: () => getAccTitle, + getDiagramTitle: () => getDiagramTitle, + setAccDescription: () => setAccDescription, + setAccTitle: () => setAccTitle, + setDiagramTitle: () => setDiagramTitle + }); + var accTitle, diagramTitle, accDescription, sanitizeText2, clear, setAccTitle, getAccTitle, setAccDescription, getAccDescription, setDiagramTitle, getDiagramTitle; + var init_commonDb = __esm({ + "src/diagrams/common/commonDb.ts"() { + "use strict"; + init_common(); + init_config(); + accTitle = ""; + diagramTitle = ""; + accDescription = ""; + sanitizeText2 = /* @__PURE__ */ __name((txt) => sanitizeText(txt, getConfig()), "sanitizeText"); + clear = /* @__PURE__ */ __name(() => { + accTitle = ""; + accDescription = ""; + diagramTitle = ""; + }, "clear"); + setAccTitle = /* @__PURE__ */ __name((txt) => { + accTitle = sanitizeText2(txt).replace(/^\s+/g, ""); + }, "setAccTitle"); + getAccTitle = /* @__PURE__ */ __name(() => accTitle, "getAccTitle"); + setAccDescription = /* @__PURE__ */ __name((txt) => { + accDescription = sanitizeText2(txt).replace(/\n\s+/g, "\n"); + }, "setAccDescription"); + getAccDescription = /* @__PURE__ */ __name(() => accDescription, "getAccDescription"); + setDiagramTitle = /* @__PURE__ */ __name((txt) => { + diagramTitle = sanitizeText2(txt); + }, "setDiagramTitle"); + getDiagramTitle = /* @__PURE__ */ __name(() => diagramTitle, "getDiagramTitle"); + } + }); + + // src/diagram-api/diagramAPI.ts + var log2, setLogLevel2, getConfig2, setConfig2, defaultConfig2, sanitizeText3, setupGraphViewbox2, getCommonDb, diagrams, registerDiagram, getDiagram, DiagramNotFoundError; + var init_diagramAPI = __esm({ + "src/diagram-api/diagramAPI.ts"() { + "use strict"; + init_detectType(); + init_logger(); + init_config(); + init_common(); + init_setupGraphViewbox(); + init_styles(); + init_commonDb(); + log2 = log; + setLogLevel2 = setLogLevel; + getConfig2 = getConfig; + setConfig2 = setConfig; + defaultConfig2 = defaultConfig; + sanitizeText3 = /* @__PURE__ */ __name((text4) => sanitizeText(text4, getConfig2()), "sanitizeText"); + setupGraphViewbox2 = setupGraphViewbox; + getCommonDb = /* @__PURE__ */ __name(() => { + return commonDb_exports; + }, "getCommonDb"); + diagrams = {}; + registerDiagram = /* @__PURE__ */ __name((id30, diagram27, detector28) => { + if (diagrams[id30]) { + log2.warn(`Diagram with id ${id30} already registered. Overwriting.`); + } + diagrams[id30] = diagram27; + if (detector28) { + addDetector(id30, detector28); + } + addStylesForDiagram(id30, diagram27.styles); + diagram27.injectUtils?.( + log2, + setLogLevel2, + getConfig2, + sanitizeText3, + setupGraphViewbox2, + getCommonDb(), + () => { + } + ); + }, "registerDiagram"); + getDiagram = /* @__PURE__ */ __name((name) => { + if (name in diagrams) { + return diagrams[name]; + } + throw new DiagramNotFoundError(name); + }, "getDiagram"); + DiagramNotFoundError = class extends Error { + static { + __name(this, "DiagramNotFoundError"); + } + constructor(name) { + super(`Diagram ${name} not found.`); + } + }; + } + }); + + // src/diagrams/c4/c4Db.js + var c4ShapeArray, boundaryParseStack, currentBoundaryParse, parentBoundaryParse, boundaries, rels, title, wrapEnabled, c4ShapeInRow, c4BoundaryInRow, c4Type, getC4Type, setC4Type, addRel, addPersonOrSystem, addContainer, addComponent, addPersonOrSystemBoundary, addContainerBoundary, addDeploymentNode, popBoundaryParseStack, updateElStyle, updateRelStyle, updateLayoutConfig, getC4ShapeInRow, getC4BoundaryInRow, getCurrentBoundaryParse, getParentBoundaryParse, getC4ShapeArray, getC4Shape, getC4ShapeKeys, getBoundaries, getBoundarys, getRels, getTitle, setWrap, autoWrap, clear2, LINETYPE, ARROWTYPE, PLACEMENT, setTitle, c4Db_default; + var init_c4Db = __esm({ + "src/diagrams/c4/c4Db.js"() { + "use strict"; + init_diagramAPI(); + init_common(); + init_commonDb(); + c4ShapeArray = []; + boundaryParseStack = [""]; + currentBoundaryParse = "global"; + parentBoundaryParse = ""; + boundaries = [ + { + alias: "global", + label: { text: "global" }, + type: { text: "global" }, + tags: null, + link: null, + parentBoundary: "" + } + ]; + rels = []; + title = ""; + wrapEnabled = false; + c4ShapeInRow = 4; + c4BoundaryInRow = 2; + getC4Type = /* @__PURE__ */ __name(function() { + return c4Type; + }, "getC4Type"); + setC4Type = /* @__PURE__ */ __name(function(c4TypeParam) { + let sanitizedText = sanitizeText(c4TypeParam, getConfig2()); + c4Type = sanitizedText; + }, "setC4Type"); + addRel = /* @__PURE__ */ __name(function(type3, from2, to, label, techn, descr, sprite, tags2, link2) { + if (type3 === void 0 || type3 === null || from2 === void 0 || from2 === null || to === void 0 || to === null || label === void 0 || label === null) { + return; + } + let rel2 = {}; + const old = rels.find((rel3) => rel3.from === from2 && rel3.to === to); + if (old) { + rel2 = old; + } else { + rels.push(rel2); + } + rel2.type = type3; + rel2.from = from2; + rel2.to = to; + rel2.label = { text: label }; + if (techn === void 0 || techn === null) { + rel2.techn = { text: "" }; + } else { + if (typeof techn === "object") { + let [key, value2] = Object.entries(techn)[0]; + rel2[key] = { text: value2 }; + } else { + rel2.techn = { text: techn }; + } + } + if (descr === void 0 || descr === null) { + rel2.descr = { text: "" }; + } else { + if (typeof descr === "object") { + let [key, value2] = Object.entries(descr)[0]; + rel2[key] = { text: value2 }; + } else { + rel2.descr = { text: descr }; + } + } + if (typeof sprite === "object") { + let [key, value2] = Object.entries(sprite)[0]; + rel2[key] = value2; + } else { + rel2.sprite = sprite; + } + if (typeof tags2 === "object") { + let [key, value2] = Object.entries(tags2)[0]; + rel2[key] = value2; + } else { + rel2.tags = tags2; + } + if (typeof link2 === "object") { + let [key, value2] = Object.entries(link2)[0]; + rel2[key] = value2; + } else { + rel2.link = link2; + } + rel2.wrap = autoWrap(); + }, "addRel"); + addPersonOrSystem = /* @__PURE__ */ __name(function(typeC4Shape, alias, label, descr, sprite, tags2, link2) { + if (alias === null || label === null) { + return; + } + let personOrSystem = {}; + const old = c4ShapeArray.find((personOrSystem2) => personOrSystem2.alias === alias); + if (old && alias === old.alias) { + personOrSystem = old; + } else { + personOrSystem.alias = alias; + c4ShapeArray.push(personOrSystem); + } + if (label === void 0 || label === null) { + personOrSystem.label = { text: "" }; + } else { + personOrSystem.label = { text: label }; + } + if (descr === void 0 || descr === null) { + personOrSystem.descr = { text: "" }; + } else { + if (typeof descr === "object") { + let [key, value2] = Object.entries(descr)[0]; + personOrSystem[key] = { text: value2 }; + } else { + personOrSystem.descr = { text: descr }; + } + } + if (typeof sprite === "object") { + let [key, value2] = Object.entries(sprite)[0]; + personOrSystem[key] = value2; + } else { + personOrSystem.sprite = sprite; + } + if (typeof tags2 === "object") { + let [key, value2] = Object.entries(tags2)[0]; + personOrSystem[key] = value2; + } else { + personOrSystem.tags = tags2; + } + if (typeof link2 === "object") { + let [key, value2] = Object.entries(link2)[0]; + personOrSystem[key] = value2; + } else { + personOrSystem.link = link2; + } + personOrSystem.typeC4Shape = { text: typeC4Shape }; + personOrSystem.parentBoundary = currentBoundaryParse; + personOrSystem.wrap = autoWrap(); + }, "addPersonOrSystem"); + addContainer = /* @__PURE__ */ __name(function(typeC4Shape, alias, label, techn, descr, sprite, tags2, link2) { + if (alias === null || label === null) { + return; + } + let container2 = {}; + const old = c4ShapeArray.find((container3) => container3.alias === alias); + if (old && alias === old.alias) { + container2 = old; + } else { + container2.alias = alias; + c4ShapeArray.push(container2); + } + if (label === void 0 || label === null) { + container2.label = { text: "" }; + } else { + container2.label = { text: label }; + } + if (techn === void 0 || techn === null) { + container2.techn = { text: "" }; + } else { + if (typeof techn === "object") { + let [key, value2] = Object.entries(techn)[0]; + container2[key] = { text: value2 }; + } else { + container2.techn = { text: techn }; + } + } + if (descr === void 0 || descr === null) { + container2.descr = { text: "" }; + } else { + if (typeof descr === "object") { + let [key, value2] = Object.entries(descr)[0]; + container2[key] = { text: value2 }; + } else { + container2.descr = { text: descr }; + } + } + if (typeof sprite === "object") { + let [key, value2] = Object.entries(sprite)[0]; + container2[key] = value2; + } else { + container2.sprite = sprite; + } + if (typeof tags2 === "object") { + let [key, value2] = Object.entries(tags2)[0]; + container2[key] = value2; + } else { + container2.tags = tags2; + } + if (typeof link2 === "object") { + let [key, value2] = Object.entries(link2)[0]; + container2[key] = value2; + } else { + container2.link = link2; + } + container2.wrap = autoWrap(); + container2.typeC4Shape = { text: typeC4Shape }; + container2.parentBoundary = currentBoundaryParse; + }, "addContainer"); + addComponent = /* @__PURE__ */ __name(function(typeC4Shape, alias, label, techn, descr, sprite, tags2, link2) { + if (alias === null || label === null) { + return; + } + let component2 = {}; + const old = c4ShapeArray.find((component3) => component3.alias === alias); + if (old && alias === old.alias) { + component2 = old; + } else { + component2.alias = alias; + c4ShapeArray.push(component2); + } + if (label === void 0 || label === null) { + component2.label = { text: "" }; + } else { + component2.label = { text: label }; + } + if (techn === void 0 || techn === null) { + component2.techn = { text: "" }; + } else { + if (typeof techn === "object") { + let [key, value2] = Object.entries(techn)[0]; + component2[key] = { text: value2 }; + } else { + component2.techn = { text: techn }; + } + } + if (descr === void 0 || descr === null) { + component2.descr = { text: "" }; + } else { + if (typeof descr === "object") { + let [key, value2] = Object.entries(descr)[0]; + component2[key] = { text: value2 }; + } else { + component2.descr = { text: descr }; + } + } + if (typeof sprite === "object") { + let [key, value2] = Object.entries(sprite)[0]; + component2[key] = value2; + } else { + component2.sprite = sprite; + } + if (typeof tags2 === "object") { + let [key, value2] = Object.entries(tags2)[0]; + component2[key] = value2; + } else { + component2.tags = tags2; + } + if (typeof link2 === "object") { + let [key, value2] = Object.entries(link2)[0]; + component2[key] = value2; + } else { + component2.link = link2; + } + component2.wrap = autoWrap(); + component2.typeC4Shape = { text: typeC4Shape }; + component2.parentBoundary = currentBoundaryParse; + }, "addComponent"); + addPersonOrSystemBoundary = /* @__PURE__ */ __name(function(alias, label, type3, tags2, link2) { + if (alias === null || label === null) { + return; + } + let boundary = {}; + const old = boundaries.find((boundary2) => boundary2.alias === alias); + if (old && alias === old.alias) { + boundary = old; + } else { + boundary.alias = alias; + boundaries.push(boundary); + } + if (label === void 0 || label === null) { + boundary.label = { text: "" }; + } else { + boundary.label = { text: label }; + } + if (type3 === void 0 || type3 === null) { + boundary.type = { text: "system" }; + } else { + if (typeof type3 === "object") { + let [key, value2] = Object.entries(type3)[0]; + boundary[key] = { text: value2 }; + } else { + boundary.type = { text: type3 }; + } + } + if (typeof tags2 === "object") { + let [key, value2] = Object.entries(tags2)[0]; + boundary[key] = value2; + } else { + boundary.tags = tags2; + } + if (typeof link2 === "object") { + let [key, value2] = Object.entries(link2)[0]; + boundary[key] = value2; + } else { + boundary.link = link2; + } + boundary.parentBoundary = currentBoundaryParse; + boundary.wrap = autoWrap(); + parentBoundaryParse = currentBoundaryParse; + currentBoundaryParse = alias; + boundaryParseStack.push(parentBoundaryParse); + }, "addPersonOrSystemBoundary"); + addContainerBoundary = /* @__PURE__ */ __name(function(alias, label, type3, tags2, link2) { + if (alias === null || label === null) { + return; + } + let boundary = {}; + const old = boundaries.find((boundary2) => boundary2.alias === alias); + if (old && alias === old.alias) { + boundary = old; + } else { + boundary.alias = alias; + boundaries.push(boundary); + } + if (label === void 0 || label === null) { + boundary.label = { text: "" }; + } else { + boundary.label = { text: label }; + } + if (type3 === void 0 || type3 === null) { + boundary.type = { text: "container" }; + } else { + if (typeof type3 === "object") { + let [key, value2] = Object.entries(type3)[0]; + boundary[key] = { text: value2 }; + } else { + boundary.type = { text: type3 }; + } + } + if (typeof tags2 === "object") { + let [key, value2] = Object.entries(tags2)[0]; + boundary[key] = value2; + } else { + boundary.tags = tags2; + } + if (typeof link2 === "object") { + let [key, value2] = Object.entries(link2)[0]; + boundary[key] = value2; + } else { + boundary.link = link2; + } + boundary.parentBoundary = currentBoundaryParse; + boundary.wrap = autoWrap(); + parentBoundaryParse = currentBoundaryParse; + currentBoundaryParse = alias; + boundaryParseStack.push(parentBoundaryParse); + }, "addContainerBoundary"); + addDeploymentNode = /* @__PURE__ */ __name(function(nodeType3, alias, label, type3, descr, sprite, tags2, link2) { + if (alias === null || label === null) { + return; + } + let boundary = {}; + const old = boundaries.find((boundary2) => boundary2.alias === alias); + if (old && alias === old.alias) { + boundary = old; + } else { + boundary.alias = alias; + boundaries.push(boundary); + } + if (label === void 0 || label === null) { + boundary.label = { text: "" }; + } else { + boundary.label = { text: label }; + } + if (type3 === void 0 || type3 === null) { + boundary.type = { text: "node" }; + } else { + if (typeof type3 === "object") { + let [key, value2] = Object.entries(type3)[0]; + boundary[key] = { text: value2 }; + } else { + boundary.type = { text: type3 }; + } + } + if (descr === void 0 || descr === null) { + boundary.descr = { text: "" }; + } else { + if (typeof descr === "object") { + let [key, value2] = Object.entries(descr)[0]; + boundary[key] = { text: value2 }; + } else { + boundary.descr = { text: descr }; + } + } + if (typeof tags2 === "object") { + let [key, value2] = Object.entries(tags2)[0]; + boundary[key] = value2; + } else { + boundary.tags = tags2; + } + if (typeof link2 === "object") { + let [key, value2] = Object.entries(link2)[0]; + boundary[key] = value2; + } else { + boundary.link = link2; + } + boundary.nodeType = nodeType3; + boundary.parentBoundary = currentBoundaryParse; + boundary.wrap = autoWrap(); + parentBoundaryParse = currentBoundaryParse; + currentBoundaryParse = alias; + boundaryParseStack.push(parentBoundaryParse); + }, "addDeploymentNode"); + popBoundaryParseStack = /* @__PURE__ */ __name(function() { + currentBoundaryParse = parentBoundaryParse; + boundaryParseStack.pop(); + parentBoundaryParse = boundaryParseStack.pop(); + boundaryParseStack.push(parentBoundaryParse); + }, "popBoundaryParseStack"); + updateElStyle = /* @__PURE__ */ __name(function(typeC4Shape, elementName, bgColor, fontColor, borderColor, shadowing, shape, sprite, techn, legendText, legendSprite) { + let old = c4ShapeArray.find((element3) => element3.alias === elementName); + if (old === void 0) { + old = boundaries.find((element3) => element3.alias === elementName); + if (old === void 0) { + return; + } + } + if (bgColor !== void 0 && bgColor !== null) { + if (typeof bgColor === "object") { + let [key, value2] = Object.entries(bgColor)[0]; + old[key] = value2; + } else { + old.bgColor = bgColor; + } + } + if (fontColor !== void 0 && fontColor !== null) { + if (typeof fontColor === "object") { + let [key, value2] = Object.entries(fontColor)[0]; + old[key] = value2; + } else { + old.fontColor = fontColor; + } + } + if (borderColor !== void 0 && borderColor !== null) { + if (typeof borderColor === "object") { + let [key, value2] = Object.entries(borderColor)[0]; + old[key] = value2; + } else { + old.borderColor = borderColor; + } + } + if (shadowing !== void 0 && shadowing !== null) { + if (typeof shadowing === "object") { + let [key, value2] = Object.entries(shadowing)[0]; + old[key] = value2; + } else { + old.shadowing = shadowing; + } + } + if (shape !== void 0 && shape !== null) { + if (typeof shape === "object") { + let [key, value2] = Object.entries(shape)[0]; + old[key] = value2; + } else { + old.shape = shape; + } + } + if (sprite !== void 0 && sprite !== null) { + if (typeof sprite === "object") { + let [key, value2] = Object.entries(sprite)[0]; + old[key] = value2; + } else { + old.sprite = sprite; + } + } + if (techn !== void 0 && techn !== null) { + if (typeof techn === "object") { + let [key, value2] = Object.entries(techn)[0]; + old[key] = value2; + } else { + old.techn = techn; + } + } + if (legendText !== void 0 && legendText !== null) { + if (typeof legendText === "object") { + let [key, value2] = Object.entries(legendText)[0]; + old[key] = value2; + } else { + old.legendText = legendText; + } + } + if (legendSprite !== void 0 && legendSprite !== null) { + if (typeof legendSprite === "object") { + let [key, value2] = Object.entries(legendSprite)[0]; + old[key] = value2; + } else { + old.legendSprite = legendSprite; + } + } + }, "updateElStyle"); + updateRelStyle = /* @__PURE__ */ __name(function(typeC4Shape, from2, to, textColor, lineColor, offsetX, offsetY) { + const old = rels.find((rel2) => rel2.from === from2 && rel2.to === to); + if (old === void 0) { + return; + } + if (textColor !== void 0 && textColor !== null) { + if (typeof textColor === "object") { + let [key, value2] = Object.entries(textColor)[0]; + old[key] = value2; + } else { + old.textColor = textColor; + } + } + if (lineColor !== void 0 && lineColor !== null) { + if (typeof lineColor === "object") { + let [key, value2] = Object.entries(lineColor)[0]; + old[key] = value2; + } else { + old.lineColor = lineColor; + } + } + if (offsetX !== void 0 && offsetX !== null) { + if (typeof offsetX === "object") { + let [key, value2] = Object.entries(offsetX)[0]; + old[key] = parseInt(value2); + } else { + old.offsetX = parseInt(offsetX); + } + } + if (offsetY !== void 0 && offsetY !== null) { + if (typeof offsetY === "object") { + let [key, value2] = Object.entries(offsetY)[0]; + old[key] = parseInt(value2); + } else { + old.offsetY = parseInt(offsetY); + } + } + }, "updateRelStyle"); + updateLayoutConfig = /* @__PURE__ */ __name(function(typeC4Shape, c4ShapeInRowParam, c4BoundaryInRowParam) { + let c4ShapeInRowValue = c4ShapeInRow; + let c4BoundaryInRowValue = c4BoundaryInRow; + if (typeof c4ShapeInRowParam === "object") { + const value2 = Object.values(c4ShapeInRowParam)[0]; + c4ShapeInRowValue = parseInt(value2); + } else { + c4ShapeInRowValue = parseInt(c4ShapeInRowParam); + } + if (typeof c4BoundaryInRowParam === "object") { + const value2 = Object.values(c4BoundaryInRowParam)[0]; + c4BoundaryInRowValue = parseInt(value2); + } else { + c4BoundaryInRowValue = parseInt(c4BoundaryInRowParam); + } + if (c4ShapeInRowValue >= 1) { + c4ShapeInRow = c4ShapeInRowValue; + } + if (c4BoundaryInRowValue >= 1) { + c4BoundaryInRow = c4BoundaryInRowValue; + } + }, "updateLayoutConfig"); + getC4ShapeInRow = /* @__PURE__ */ __name(function() { + return c4ShapeInRow; + }, "getC4ShapeInRow"); + getC4BoundaryInRow = /* @__PURE__ */ __name(function() { + return c4BoundaryInRow; + }, "getC4BoundaryInRow"); + getCurrentBoundaryParse = /* @__PURE__ */ __name(function() { + return currentBoundaryParse; + }, "getCurrentBoundaryParse"); + getParentBoundaryParse = /* @__PURE__ */ __name(function() { + return parentBoundaryParse; + }, "getParentBoundaryParse"); + getC4ShapeArray = /* @__PURE__ */ __name(function(parentBoundary) { + if (parentBoundary === void 0 || parentBoundary === null) { + return c4ShapeArray; + } else { + return c4ShapeArray.filter((personOrSystem) => { + return personOrSystem.parentBoundary === parentBoundary; + }); + } + }, "getC4ShapeArray"); + getC4Shape = /* @__PURE__ */ __name(function(alias) { + return c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias); + }, "getC4Shape"); + getC4ShapeKeys = /* @__PURE__ */ __name(function(parentBoundary) { + return Object.keys(getC4ShapeArray(parentBoundary)); + }, "getC4ShapeKeys"); + getBoundaries = /* @__PURE__ */ __name(function(parentBoundary) { + if (parentBoundary === void 0 || parentBoundary === null) { + return boundaries; + } else { + return boundaries.filter((boundary) => boundary.parentBoundary === parentBoundary); + } + }, "getBoundaries"); + getBoundarys = getBoundaries; + getRels = /* @__PURE__ */ __name(function() { + return rels; + }, "getRels"); + getTitle = /* @__PURE__ */ __name(function() { + return title; + }, "getTitle"); + setWrap = /* @__PURE__ */ __name(function(wrapSetting) { + wrapEnabled = wrapSetting; + }, "setWrap"); + autoWrap = /* @__PURE__ */ __name(function() { + return wrapEnabled; + }, "autoWrap"); + clear2 = /* @__PURE__ */ __name(function() { + c4ShapeArray = []; + boundaries = [ + { + alias: "global", + label: { text: "global" }, + type: { text: "global" }, + tags: null, + link: null, + parentBoundary: "" + } + ]; + parentBoundaryParse = ""; + currentBoundaryParse = "global"; + boundaryParseStack = [""]; + rels = []; + boundaryParseStack = [""]; + title = ""; + wrapEnabled = false; + c4ShapeInRow = 4; + c4BoundaryInRow = 2; + }, "clear"); + LINETYPE = { + SOLID: 0, + DOTTED: 1, + NOTE: 2, + SOLID_CROSS: 3, + DOTTED_CROSS: 4, + SOLID_OPEN: 5, + DOTTED_OPEN: 6, + LOOP_START: 10, + LOOP_END: 11, + ALT_START: 12, + ALT_ELSE: 13, + ALT_END: 14, + OPT_START: 15, + OPT_END: 16, + ACTIVE_START: 17, + ACTIVE_END: 18, + PAR_START: 19, + PAR_AND: 20, + PAR_END: 21, + RECT_START: 22, + RECT_END: 23, + SOLID_POINT: 24, + DOTTED_POINT: 25 + }; + ARROWTYPE = { + FILLED: 0, + OPEN: 1 + }; + PLACEMENT = { + LEFTOF: 0, + RIGHTOF: 1, + OVER: 2 + }; + setTitle = /* @__PURE__ */ __name(function(txt) { + let sanitizedText = sanitizeText(txt, getConfig2()); + title = sanitizedText; + }, "setTitle"); + c4Db_default = { + addPersonOrSystem, + addPersonOrSystemBoundary, + addContainer, + addContainerBoundary, + addComponent, + addDeploymentNode, + popBoundaryParseStack, + addRel, + updateElStyle, + updateRelStyle, + updateLayoutConfig, + autoWrap, + setWrap, + getC4ShapeArray, + getC4Shape, + getC4ShapeKeys, + getBoundaries, + getBoundarys, + getCurrentBoundaryParse, + getParentBoundaryParse, + getRels, + getTitle, + getC4Type, + getC4ShapeInRow, + getC4BoundaryInRow, + setAccTitle, + getAccTitle, + getAccDescription, + setAccDescription, + getConfig: /* @__PURE__ */ __name(() => getConfig2().c4, "getConfig"), + clear: clear2, + LINETYPE, + ARROWTYPE, + PLACEMENT, + setTitle, + setC4Type + // apply, + }; + } + }); + + // ../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ascending.js + function ascending(a2, b3) { + return a2 == null || b3 == null ? NaN : a2 < b3 ? -1 : a2 > b3 ? 1 : a2 >= b3 ? 0 : NaN; + } + var init_ascending = __esm({ + "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ascending.js"() { + "use strict"; + __name(ascending, "ascending"); + } + }); + + // ../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/descending.js + function descending(a2, b3) { + return a2 == null || b3 == null ? NaN : b3 < a2 ? -1 : b3 > a2 ? 1 : b3 >= a2 ? 0 : NaN; + } + var init_descending = __esm({ + "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/descending.js"() { + "use strict"; + __name(descending, "descending"); + } + }); + + // ../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisector.js + function bisector(f2) { + let compare1, compare2, delta; + if (f2.length !== 2) { + compare1 = ascending; + compare2 = /* @__PURE__ */ __name((d3, x5) => ascending(f2(d3), x5), "compare2"); + delta = /* @__PURE__ */ __name((d3, x5) => f2(d3) - x5, "delta"); + } else { + compare1 = f2 === ascending || f2 === descending ? f2 : zero; + compare2 = f2; + delta = f2; + } + function left3(a2, x5, lo = 0, hi = a2.length) { + if (lo < hi) { + if (compare1(x5, x5) !== 0) return hi; do { const mid = lo + hi >>> 1; if (compare2(a2[mid], x5) < 0) lo = mid + 1; @@ -22990,8 +22562,8 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ticks.js - function tickSpec(start3, stop5, count) { - const step3 = (stop5 - start3) / Math.max(0, count), power = Math.floor(Math.log10(step3)), error3 = step3 / Math.pow(10, power), factor = error3 >= e10 ? 10 : error3 >= e5 ? 5 : error3 >= e2 ? 2 : 1; + function tickSpec(start3, stop5, count2) { + const step3 = (stop5 - start3) / Math.max(0, count2), power = Math.floor(Math.log10(step3)), error3 = step3 / Math.pow(10, power), factor = error3 >= e10 ? 10 : error3 >= e5 ? 5 : error3 >= e2 ? 2 : 1; let i1, i2, inc; if (power < 0) { inc = Math.pow(10, -power) / factor; @@ -23007,14 +22579,14 @@ var __esbuild_esm_mermaid = (() => { if (i1 * inc < start3) ++i1; if (i2 * inc > stop5) --i2; } - if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start3, stop5, count * 2); + if (i2 < i1 && 0.5 <= count2 && count2 < 2) return tickSpec(start3, stop5, count2 * 2); return [i1, i2, inc]; } - function ticks(start3, stop5, count) { - stop5 = +stop5, start3 = +start3, count = +count; - if (!(count > 0)) return []; + function ticks(start3, stop5, count2) { + stop5 = +stop5, start3 = +start3, count2 = +count2; + if (!(count2 > 0)) return []; if (start3 === stop5) return [start3]; - const reverse2 = stop5 < start3, [i1, i2, inc] = reverse2 ? tickSpec(stop5, start3, count) : tickSpec(start3, stop5, count); + const reverse2 = stop5 < start3, [i1, i2, inc] = reverse2 ? tickSpec(stop5, start3, count2) : tickSpec(start3, stop5, count2); if (!(i2 >= i1)) return []; const n2 = i2 - i1 + 1, ticks2 = new Array(n2); if (reverse2) { @@ -23026,13 +22598,13 @@ var __esbuild_esm_mermaid = (() => { } return ticks2; } - function tickIncrement(start3, stop5, count) { - stop5 = +stop5, start3 = +start3, count = +count; - return tickSpec(start3, stop5, count)[2]; + function tickIncrement(start3, stop5, count2) { + stop5 = +stop5, start3 = +start3, count2 = +count2; + return tickSpec(start3, stop5, count2)[2]; } - function tickStep(start3, stop5, count) { - stop5 = +stop5, start3 = +start3, count = +count; - const reverse2 = stop5 < start3, inc = reverse2 ? tickIncrement(stop5, start3, count) : tickIncrement(start3, stop5, count); + function tickStep(start3, stop5, count2) { + stop5 = +stop5, start3 = +start3, count2 = +count2; + const reverse2 = stop5 < start3, inc = reverse2 ? tickIncrement(stop5, start3, count2) : tickIncrement(start3, stop5, count2); return (reverse2 ? -1 : 1) * (inc < 0 ? 1 / -inc : inc); } var e10, e5, e2; @@ -23146,16 +22718,16 @@ var __esbuild_esm_mermaid = (() => { function translateX(x5) { return "translate(" + x5 + ",0)"; } - function translateY(y5) { - return "translate(0," + y5 + ")"; + function translateY(y6) { + return "translate(0," + y6 + ")"; } function number2(scale2) { - return (d2) => +scale2(d2); + return (d3) => +scale2(d3); } function center(scale2, offset) { offset = Math.max(0, scale2.bandwidth() - offset * 2) / 2; if (scale2.round()) offset = Math.round(offset); - return (d2) => +scale2(d2) + offset; + return (d3) => +scale2(d3) + offset; } function entering() { return !this.__axis; @@ -23173,18 +22745,18 @@ var __esbuild_esm_mermaid = (() => { tick = tick.transition(context); line2 = line2.transition(context); text4 = text4.transition(context); - tickExit = tickExit.transition(context).attr("opacity", epsilon).attr("transform", function(d2) { - return isFinite(d2 = position5(d2)) ? transform8(d2 + offset) : this.getAttribute("transform"); + tickExit = tickExit.transition(context).attr("opacity", epsilon).attr("transform", function(d3) { + return isFinite(d3 = position5(d3)) ? transform8(d3 + offset) : this.getAttribute("transform"); }); - tickEnter.attr("opacity", epsilon).attr("transform", function(d2) { + tickEnter.attr("opacity", epsilon).attr("transform", function(d3) { var p3 = this.parentNode.__axis; - return transform8((p3 && isFinite(p3 = p3(d2)) ? p3 : position5(d2)) + offset); + return transform8((p3 && isFinite(p3 = p3(d3)) ? p3 : position5(d3)) + offset); }); } tickExit.remove(); path4.attr("d", orient === left || orient === right ? tickSizeOuter ? "M" + k2 * tickSizeOuter + "," + range0 + "H" + offset + "V" + range1 + "H" + k2 * tickSizeOuter : "M" + offset + "," + range0 + "V" + range1 : tickSizeOuter ? "M" + range0 + "," + k2 * tickSizeOuter + "V" + offset + "H" + range1 + "V" + k2 * tickSizeOuter : "M" + range0 + "," + offset + "H" + range1); - tick.attr("opacity", 1).attr("transform", function(d2) { - return transform8(position5(d2) + offset); + tick.attr("opacity", 1).attr("transform", function(d3) { + return transform8(position5(d3) + offset); }); line2.attr(x5 + "2", k2 * tickSizeInner); text4.attr(x5, k2 * spacing2).text(format3); @@ -23194,35 +22766,35 @@ var __esbuild_esm_mermaid = (() => { }); } __name(axis2, "axis"); - axis2.scale = function(_2) { - return arguments.length ? (scale2 = _2, axis2) : scale2; + axis2.scale = function(_3) { + return arguments.length ? (scale2 = _3, axis2) : scale2; }; axis2.ticks = function() { return tickArguments = Array.from(arguments), axis2; }; - axis2.tickArguments = function(_2) { - return arguments.length ? (tickArguments = _2 == null ? [] : Array.from(_2), axis2) : tickArguments.slice(); + axis2.tickArguments = function(_3) { + return arguments.length ? (tickArguments = _3 == null ? [] : Array.from(_3), axis2) : tickArguments.slice(); }; - axis2.tickValues = function(_2) { - return arguments.length ? (tickValues = _2 == null ? null : Array.from(_2), axis2) : tickValues && tickValues.slice(); + axis2.tickValues = function(_3) { + return arguments.length ? (tickValues = _3 == null ? null : Array.from(_3), axis2) : tickValues && tickValues.slice(); }; - axis2.tickFormat = function(_2) { - return arguments.length ? (tickFormat2 = _2, axis2) : tickFormat2; + axis2.tickFormat = function(_3) { + return arguments.length ? (tickFormat2 = _3, axis2) : tickFormat2; }; - axis2.tickSize = function(_2) { - return arguments.length ? (tickSizeInner = tickSizeOuter = +_2, axis2) : tickSizeInner; + axis2.tickSize = function(_3) { + return arguments.length ? (tickSizeInner = tickSizeOuter = +_3, axis2) : tickSizeInner; }; - axis2.tickSizeInner = function(_2) { - return arguments.length ? (tickSizeInner = +_2, axis2) : tickSizeInner; + axis2.tickSizeInner = function(_3) { + return arguments.length ? (tickSizeInner = +_3, axis2) : tickSizeInner; }; - axis2.tickSizeOuter = function(_2) { - return arguments.length ? (tickSizeOuter = +_2, axis2) : tickSizeOuter; + axis2.tickSizeOuter = function(_3) { + return arguments.length ? (tickSizeOuter = +_3, axis2) : tickSizeOuter; }; - axis2.tickPadding = function(_2) { - return arguments.length ? (tickPadding = +_2, axis2) : tickPadding; + axis2.tickPadding = function(_3) { + return arguments.length ? (tickPadding = +_3, axis2) : tickPadding; }; - axis2.offset = function(_2) { - return arguments.length ? (offset = +_2, axis2) : offset; + axis2.offset = function(_3) { + return arguments.length ? (offset = +_3, axis2) : offset; }; return axis2; } @@ -23263,14 +22835,14 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/dispatch.js function dispatch() { - for (var i2 = 0, n2 = arguments.length, _2 = {}, t4; i2 < n2; ++i2) { - if (!(t4 = arguments[i2] + "") || t4 in _2 || /[\s.]/.test(t4)) throw new Error("illegal type: " + t4); - _2[t4] = []; + for (var i2 = 0, n2 = arguments.length, _3 = {}, t4; i2 < n2; ++i2) { + if (!(t4 = arguments[i2] + "") || t4 in _3 || /[\s.]/.test(t4)) throw new Error("illegal type: " + t4); + _3[t4] = []; } - return new Dispatch(_2); + return new Dispatch(_3); } - function Dispatch(_2) { - this._ = _2; + function Dispatch(_3) { + this._ = _3; } function parseTypenames(typenames, types) { return typenames.trim().split(/^|\s+/).map(function(t4) { @@ -23309,21 +22881,21 @@ var __esbuild_esm_mermaid = (() => { Dispatch.prototype = dispatch.prototype = { constructor: Dispatch, on: /* @__PURE__ */ __name(function(typename, callback) { - var _2 = this._, T3 = parseTypenames(typename + "", _2), t4, i2 = -1, n2 = T3.length; + var _3 = this._, T3 = parseTypenames(typename + "", _3), t4, i2 = -1, n2 = T3.length; if (arguments.length < 2) { - while (++i2 < n2) if ((t4 = (typename = T3[i2]).type) && (t4 = get(_2[t4], typename.name))) return t4; + while (++i2 < n2) if ((t4 = (typename = T3[i2]).type) && (t4 = get(_3[t4], typename.name))) return t4; return; } if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); while (++i2 < n2) { - if (t4 = (typename = T3[i2]).type) _2[t4] = set(_2[t4], typename.name, callback); - else if (callback == null) for (t4 in _2) _2[t4] = set(_2[t4], typename.name, null); + if (t4 = (typename = T3[i2]).type) _3[t4] = set(_3[t4], typename.name, callback); + else if (callback == null) for (t4 in _3) _3[t4] = set(_3[t4], typename.name, null); } return this; }, "on"), copy: /* @__PURE__ */ __name(function() { - var copy5 = {}, _2 = this._; - for (var t4 in _2) copy5[t4] = _2[t4].slice(); + var copy5 = {}, _3 = this._; + for (var t4 in _3) copy5[t4] = _3[t4].slice(); return new Dispatch(copy5); }, "copy"), call: /* @__PURE__ */ __name(function(type3, that) { @@ -23426,8 +22998,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/select.js function select_default(select) { if (typeof select !== "function") select = selector_default(select); - for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j2 = 0; j2 < m2; ++j2) { - for (var group2 = groups[j2], n2 = group2.length, subgroup = subgroups[j2] = new Array(n2), node2, subnode, i2 = 0; i2 < n2; ++i2) { + for (var groups = this._groups, m3 = groups.length, subgroups = new Array(m3), j3 = 0; j3 < m3; ++j3) { + for (var group2 = groups[j3], n2 = group2.length, subgroup = subgroups[j3] = new Array(n2), node2, subnode, i2 = 0; i2 < n2; ++i2) { if ((node2 = group2[i2]) && (subnode = select.call(node2, node2.__data__, i2, group2))) { if ("__data__" in node2) subnode.__data__ = node2.__data__; subgroup[i2] = subnode; @@ -23482,8 +23054,8 @@ var __esbuild_esm_mermaid = (() => { function selectAll_default(select) { if (typeof select === "function") select = arrayAll(select); else select = selectorAll_default(select); - for (var groups = this._groups, m2 = groups.length, subgroups = [], parents3 = [], j2 = 0; j2 < m2; ++j2) { - for (var group2 = groups[j2], n2 = group2.length, node2, i2 = 0; i2 < n2; ++i2) { + for (var groups = this._groups, m3 = groups.length, subgroups = [], parents3 = [], j3 = 0; j3 < m3; ++j3) { + for (var group2 = groups[j3], n2 = group2.length, node2, i2 = 0; i2 < n2; ++i2) { if (node2 = group2[i2]) { subgroups.push(select.call(node2, node2.__data__, i2, group2)); parents3.push(node2); @@ -23573,8 +23145,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/filter.js function filter_default(match2) { if (typeof match2 !== "function") match2 = matcher_default(match2); - for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j2 = 0; j2 < m2; ++j2) { - for (var group2 = groups[j2], n2 = group2.length, subgroup = subgroups[j2] = [], node2, i2 = 0; i2 < n2; ++i2) { + for (var groups = this._groups, m3 = groups.length, subgroups = new Array(m3), j3 = 0; j3 < m3; ++j3) { + for (var group2 = groups[j3], n2 = group2.length, subgroup = subgroups[j3] = [], node2, i2 = 0; i2 < n2; ++i2) { if ((node2 = group2[i2]) && match2.call(node2, node2.__data__, i2, group2)) { subgroup.push(node2); } @@ -23652,14 +23224,14 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/data.js - function bindIndex(parent4, group2, enter, update2, exit, data6) { - var i2 = 0, node2, groupLength3 = group2.length, dataLength = data6.length; + function bindIndex(parent4, group2, enter, update2, exit, data5) { + var i2 = 0, node2, groupLength3 = group2.length, dataLength = data5.length; for (; i2 < dataLength; ++i2) { if (node2 = group2[i2]) { - node2.__data__ = data6[i2]; + node2.__data__ = data5[i2]; update2[i2] = node2; } else { - enter[i2] = new EnterNode(parent4, data6[i2]); + enter[i2] = new EnterNode(parent4, data5[i2]); } } for (; i2 < groupLength3; ++i2) { @@ -23668,8 +23240,8 @@ var __esbuild_esm_mermaid = (() => { } } } - function bindKey(parent4, group2, enter, update2, exit, data6, key) { - var i2, node2, nodeByKeyValue = /* @__PURE__ */ new Map(), groupLength3 = group2.length, dataLength = data6.length, keyValues = new Array(groupLength3), keyValue; + function bindKey(parent4, group2, enter, update2, exit, data5, key) { + var i2, node2, nodeByKeyValue = /* @__PURE__ */ new Map(), groupLength3 = group2.length, dataLength = data5.length, keyValues = new Array(groupLength3), keyValue; for (i2 = 0; i2 < groupLength3; ++i2) { if (node2 = group2[i2]) { keyValues[i2] = keyValue = key.call(node2, node2.__data__, i2, group2) + ""; @@ -23681,13 +23253,13 @@ var __esbuild_esm_mermaid = (() => { } } for (i2 = 0; i2 < dataLength; ++i2) { - keyValue = key.call(parent4, data6[i2], i2, data6) + ""; + keyValue = key.call(parent4, data5[i2], i2, data5) + ""; if (node2 = nodeByKeyValue.get(keyValue)) { update2[i2] = node2; - node2.__data__ = data6[i2]; + node2.__data__ = data5[i2]; nodeByKeyValue.delete(keyValue); } else { - enter[i2] = new EnterNode(parent4, data6[i2]); + enter[i2] = new EnterNode(parent4, data5[i2]); } } for (i2 = 0; i2 < groupLength3; ++i2) { @@ -23703,9 +23275,9 @@ var __esbuild_esm_mermaid = (() => { if (!arguments.length) return Array.from(this, datum); var bind = key ? bindKey : bindIndex, parents3 = this._parents, groups = this._groups; if (typeof value2 !== "function") value2 = constant_default(value2); - for (var m2 = groups.length, update2 = new Array(m2), enter = new Array(m2), exit = new Array(m2), j2 = 0; j2 < m2; ++j2) { - var parent4 = parents3[j2], group2 = groups[j2], groupLength3 = group2.length, data6 = arraylike(value2.call(parent4, parent4 && parent4.__data__, j2, parents3)), dataLength = data6.length, enterGroup = enter[j2] = new Array(dataLength), updateGroup = update2[j2] = new Array(dataLength), exitGroup = exit[j2] = new Array(groupLength3); - bind(parent4, group2, enterGroup, updateGroup, exitGroup, data6, key); + for (var m3 = groups.length, update2 = new Array(m3), enter = new Array(m3), exit = new Array(m3), j3 = 0; j3 < m3; ++j3) { + var parent4 = parents3[j3], group2 = groups[j3], groupLength3 = group2.length, data5 = arraylike(value2.call(parent4, parent4 && parent4.__data__, j3, parents3)), dataLength = data5.length, enterGroup = enter[j3] = new Array(dataLength), updateGroup = update2[j3] = new Array(dataLength), exitGroup = exit[j3] = new Array(groupLength3); + bind(parent4, group2, enterGroup, updateGroup, exitGroup, data5, key); for (var i0 = 0, i1 = 0, previous, next3; i0 < dataLength; ++i0) { if (previous = enterGroup[i0]) { if (i0 >= i1) i1 = i0 + 1; @@ -23719,8 +23291,8 @@ var __esbuild_esm_mermaid = (() => { update2._exit = exit; return update2; } - function arraylike(data6) { - return typeof data6 === "object" && "length" in data6 ? data6 : Array.from(data6); + function arraylike(data5) { + return typeof data5 === "object" && "length" in data5 ? data5 : Array.from(data5); } var init_data = __esm({ "../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/data.js"() { @@ -23776,15 +23348,15 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/merge.js function merge_default(context) { var selection2 = context.selection ? context.selection() : context; - for (var groups0 = this._groups, groups1 = selection2._groups, m0 = groups0.length, m1 = groups1.length, m2 = Math.min(m0, m1), merges = new Array(m0), j2 = 0; j2 < m2; ++j2) { - for (var group0 = groups0[j2], group1 = groups1[j2], n2 = group0.length, merge5 = merges[j2] = new Array(n2), node2, i2 = 0; i2 < n2; ++i2) { + for (var groups0 = this._groups, groups1 = selection2._groups, m0 = groups0.length, m1 = groups1.length, m3 = Math.min(m0, m1), merges = new Array(m0), j3 = 0; j3 < m3; ++j3) { + for (var group0 = groups0[j3], group1 = groups1[j3], n2 = group0.length, merge5 = merges[j3] = new Array(n2), node2, i2 = 0; i2 < n2; ++i2) { if (node2 = group0[i2] || group1[i2]) { merge5[i2] = node2; } } } - for (; j2 < m0; ++j2) { - merges[j2] = groups0[j2]; + for (; j3 < m0; ++j3) { + merges[j3] = groups0[j3]; } return new Selection(merges, this._parents); } @@ -23798,8 +23370,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/order.js function order_default() { - for (var groups = this._groups, j2 = -1, m2 = groups.length; ++j2 < m2; ) { - for (var group2 = groups[j2], i2 = group2.length - 1, next3 = group2[i2], node2; --i2 >= 0; ) { + for (var groups = this._groups, j3 = -1, m3 = groups.length; ++j3 < m3; ) { + for (var group2 = groups[j3], i2 = group2.length - 1, next3 = group2[i2], node2; --i2 >= 0; ) { if (node2 = group2[i2]) { if (next3 && node2.compareDocumentPosition(next3) ^ 4) next3.parentNode.insertBefore(node2, next3); next3 = node2; @@ -23818,12 +23390,12 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sort.js function sort_default(compare) { if (!compare) compare = ascending2; - function compareNode(a2, b2) { - return a2 && b2 ? compare(a2.__data__, b2.__data__) : !a2 - !b2; + function compareNode(a2, b3) { + return a2 && b3 ? compare(a2.__data__, b3.__data__) : !a2 - !b3; } __name(compareNode, "compareNode"); - for (var groups = this._groups, m2 = groups.length, sortgroups = new Array(m2), j2 = 0; j2 < m2; ++j2) { - for (var group2 = groups[j2], n2 = group2.length, sortgroup = sortgroups[j2] = new Array(n2), node2, i2 = 0; i2 < n2; ++i2) { + for (var groups = this._groups, m3 = groups.length, sortgroups = new Array(m3), j3 = 0; j3 < m3; ++j3) { + for (var group2 = groups[j3], n2 = group2.length, sortgroup = sortgroups[j3] = new Array(n2), node2, i2 = 0; i2 < n2; ++i2) { if (node2 = group2[i2]) { sortgroup[i2] = node2; } @@ -23832,8 +23404,8 @@ var __esbuild_esm_mermaid = (() => { } return new Selection(sortgroups, this._parents).order(); } - function ascending2(a2, b2) { - return a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN; + function ascending2(a2, b3) { + return a2 < b3 ? -1 : a2 > b3 ? 1 : a2 >= b3 ? 0 : NaN; } var init_sort = __esm({ "../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sort.js"() { @@ -23871,8 +23443,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/node.js function node_default() { - for (var groups = this._groups, j2 = 0, m2 = groups.length; j2 < m2; ++j2) { - for (var group2 = groups[j2], i2 = 0, n2 = group2.length; i2 < n2; ++i2) { + for (var groups = this._groups, j3 = 0, m3 = groups.length; j3 < m3; ++j3) { + for (var group2 = groups[j3], i2 = 0, n2 = group2.length; i2 < n2; ++i2) { var node2 = group2[i2]; if (node2) return node2; } @@ -23888,9 +23460,9 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/size.js function size_default() { - let size5 = 0; - for (const node2 of this) ++size5; - return size5; + let size4 = 0; + for (const node2 of this) ++size4; + return size4; } var init_size2 = __esm({ "../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/size.js"() { @@ -23912,8 +23484,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/each.js function each_default(callback) { - for (var groups = this._groups, j2 = 0, m2 = groups.length; j2 < m2; ++j2) { - for (var group2 = groups[j2], i2 = 0, n2 = group2.length, node2; i2 < n2; ++i2) { + for (var groups = this._groups, j3 = 0, m3 = groups.length; j3 < m3; ++j3) { + for (var group2 = groups[j3], i2 = 0, n2 = group2.length, node2; i2 < n2; ++i2) { if (node2 = group2[i2]) callback.call(node2, node2.__data__, i2, group2); } } @@ -24073,12 +23645,12 @@ var __esbuild_esm_mermaid = (() => { this._names = classArray(node2.getAttribute("class") || ""); } function classedAdd(node2, names) { - var list2 = classList(node2), i2 = -1, n2 = names.length; - while (++i2 < n2) list2.add(names[i2]); + var list = classList(node2), i2 = -1, n2 = names.length; + while (++i2 < n2) list.add(names[i2]); } function classedRemove(node2, names) { - var list2 = classList(node2), i2 = -1, n2 = names.length; - while (++i2 < n2) list2.remove(names[i2]); + var list = classList(node2), i2 = -1, n2 = names.length; + while (++i2 < n2) list.remove(names[i2]); } function classedTrue(names) { return function() { @@ -24098,8 +23670,8 @@ var __esbuild_esm_mermaid = (() => { function classed_default(name, value2) { var names = classArray(name + ""); if (arguments.length < 2) { - var list2 = classList(this.node()), i2 = -1, n2 = names.length; - while (++i2 < n2) if (!list2.contains(names[i2])) return false; + var list = classList(this.node()), i2 = -1, n2 = names.length; + while (++i2 < n2) if (!list.contains(names[i2])) return false; return true; } return this.each((typeof value2 === "function" ? classedFunction : value2 ? classedTrue : classedFalse)(names, value2)); @@ -24324,8 +23896,8 @@ var __esbuild_esm_mermaid = (() => { return function() { var on3 = this.__on; if (!on3) return; - for (var j2 = 0, i2 = -1, m2 = on3.length, o2; j2 < m2; ++j2) { - if (o2 = on3[j2], (!typename.type || o2.type === typename.type) && o2.name === typename.name) { + for (var j3 = 0, i2 = -1, m3 = on3.length, o2; j3 < m3; ++j3) { + if (o2 = on3[j3], (!typename.type || o2.type === typename.type) && o2.name === typename.name) { this.removeEventListener(o2.type, o2.listener, o2.options); } else { on3[++i2] = o2; @@ -24335,29 +23907,29 @@ var __esbuild_esm_mermaid = (() => { else delete this.__on; }; } - function onAdd(typename, value2, options3) { + function onAdd(typename, value2, options2) { return function() { var on3 = this.__on, o2, listener = contextListener(value2); - if (on3) for (var j2 = 0, m2 = on3.length; j2 < m2; ++j2) { - if ((o2 = on3[j2]).type === typename.type && o2.name === typename.name) { + if (on3) for (var j3 = 0, m3 = on3.length; j3 < m3; ++j3) { + if ((o2 = on3[j3]).type === typename.type && o2.name === typename.name) { this.removeEventListener(o2.type, o2.listener, o2.options); - this.addEventListener(o2.type, o2.listener = listener, o2.options = options3); + this.addEventListener(o2.type, o2.listener = listener, o2.options = options2); o2.value = value2; return; } } - this.addEventListener(typename.type, listener, options3); - o2 = { type: typename.type, name: typename.name, value: value2, listener, options: options3 }; + this.addEventListener(typename.type, listener, options2); + o2 = { type: typename.type, name: typename.name, value: value2, listener, options: options2 }; if (!on3) this.__on = [o2]; else on3.push(o2); }; } - function on_default(typename, value2, options3) { + function on_default(typename, value2, options2) { var typenames = parseTypenames2(typename + ""), i2, n2 = typenames.length, t4; if (arguments.length < 2) { var on3 = this.node().__on; - if (on3) for (var j2 = 0, m2 = on3.length, o2; j2 < m2; ++j2) { - for (i2 = 0, o2 = on3[j2]; i2 < n2; ++i2) { + if (on3) for (var j3 = 0, m3 = on3.length, o2; j3 < m3; ++j3) { + for (i2 = 0, o2 = on3[j3]; i2 < n2; ++i2) { if ((t4 = typenames[i2]).type === o2.type && t4.name === o2.name) { return o2.value; } @@ -24366,7 +23938,7 @@ var __esbuild_esm_mermaid = (() => { return; } on3 = value2 ? onAdd : onRemove; - for (i2 = 0; i2 < n2; ++i2) this.each(on3(typenames[i2], value2, options3)); + for (i2 = 0; i2 < n2; ++i2) this.each(on3(typenames[i2], value2, options2)); return this; } var init_on = __esm({ @@ -24418,8 +23990,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/iterator.js function* iterator_default() { - for (var groups = this._groups, j2 = 0, m2 = groups.length; j2 < m2; ++j2) { - for (var group2 = groups[j2], i2 = 0, n2 = group2.length, node2; i2 < n2; ++i2) { + for (var groups = this._groups, j3 = 0, m3 = groups.length; j3 < m3; ++j3) { + for (var group2 = groups[j3], i2 = 0, n2 = group2.length, node2; i2 < n2; ++i2) { if (node2 = group2[i2]) yield node2; } } @@ -24593,16 +24165,16 @@ var __esbuild_esm_mermaid = (() => { return this.rgb().formatRgb(); } function color(format3) { - var m2, l2; + var m3, l4; format3 = (format3 + "").trim().toLowerCase(); - return (m2 = reHex.exec(format3)) ? (l2 = m2[1].length, m2 = parseInt(m2[1], 16), l2 === 6 ? rgbn(m2) : l2 === 3 ? new Rgb(m2 >> 8 & 15 | m2 >> 4 & 240, m2 >> 4 & 15 | m2 & 240, (m2 & 15) << 4 | m2 & 15, 1) : l2 === 8 ? rgba2(m2 >> 24 & 255, m2 >> 16 & 255, m2 >> 8 & 255, (m2 & 255) / 255) : l2 === 4 ? rgba2(m2 >> 12 & 15 | m2 >> 8 & 240, m2 >> 8 & 15 | m2 >> 4 & 240, m2 >> 4 & 15 | m2 & 240, ((m2 & 15) << 4 | m2 & 15) / 255) : null) : (m2 = reRgbInteger.exec(format3)) ? new Rgb(m2[1], m2[2], m2[3], 1) : (m2 = reRgbPercent.exec(format3)) ? new Rgb(m2[1] * 255 / 100, m2[2] * 255 / 100, m2[3] * 255 / 100, 1) : (m2 = reRgbaInteger.exec(format3)) ? rgba2(m2[1], m2[2], m2[3], m2[4]) : (m2 = reRgbaPercent.exec(format3)) ? rgba2(m2[1] * 255 / 100, m2[2] * 255 / 100, m2[3] * 255 / 100, m2[4]) : (m2 = reHslPercent.exec(format3)) ? hsla(m2[1], m2[2] / 100, m2[3] / 100, 1) : (m2 = reHslaPercent.exec(format3)) ? hsla(m2[1], m2[2] / 100, m2[3] / 100, m2[4]) : named.hasOwnProperty(format3) ? rgbn(named[format3]) : format3 === "transparent" ? new Rgb(NaN, NaN, NaN, 0) : null; + return (m3 = reHex.exec(format3)) ? (l4 = m3[1].length, m3 = parseInt(m3[1], 16), l4 === 6 ? rgbn(m3) : l4 === 3 ? new Rgb(m3 >> 8 & 15 | m3 >> 4 & 240, m3 >> 4 & 15 | m3 & 240, (m3 & 15) << 4 | m3 & 15, 1) : l4 === 8 ? rgba2(m3 >> 24 & 255, m3 >> 16 & 255, m3 >> 8 & 255, (m3 & 255) / 255) : l4 === 4 ? rgba2(m3 >> 12 & 15 | m3 >> 8 & 240, m3 >> 8 & 15 | m3 >> 4 & 240, m3 >> 4 & 15 | m3 & 240, ((m3 & 15) << 4 | m3 & 15) / 255) : null) : (m3 = reRgbInteger.exec(format3)) ? new Rgb(m3[1], m3[2], m3[3], 1) : (m3 = reRgbPercent.exec(format3)) ? new Rgb(m3[1] * 255 / 100, m3[2] * 255 / 100, m3[3] * 255 / 100, 1) : (m3 = reRgbaInteger.exec(format3)) ? rgba2(m3[1], m3[2], m3[3], m3[4]) : (m3 = reRgbaPercent.exec(format3)) ? rgba2(m3[1] * 255 / 100, m3[2] * 255 / 100, m3[3] * 255 / 100, m3[4]) : (m3 = reHslPercent.exec(format3)) ? hsla(m3[1], m3[2] / 100, m3[3] / 100, 1) : (m3 = reHslaPercent.exec(format3)) ? hsla(m3[1], m3[2] / 100, m3[3] / 100, m3[4]) : named.hasOwnProperty(format3) ? rgbn(named[format3]) : format3 === "transparent" ? new Rgb(NaN, NaN, NaN, 0) : null; } function rgbn(n2) { return new Rgb(n2 >> 16 & 255, n2 >> 8 & 255, n2 & 255, 1); } - function rgba2(r2, g2, b2, a2) { - if (a2 <= 0) r2 = g2 = b2 = NaN; - return new Rgb(r2, g2, b2, a2); + function rgba2(r2, g2, b3, a2) { + if (a2 <= 0) r2 = g2 = b3 = NaN; + return new Rgb(r2, g2, b3, a2); } function rgbConvert(o2) { if (!(o2 instanceof Color2)) o2 = color(o2); @@ -24610,13 +24182,13 @@ var __esbuild_esm_mermaid = (() => { o2 = o2.rgb(); return new Rgb(o2.r, o2.g, o2.b, o2.opacity); } - function rgb(r2, g2, b2, opacity) { - return arguments.length === 1 ? rgbConvert(r2) : new Rgb(r2, g2, b2, opacity == null ? 1 : opacity); + function rgb(r2, g2, b3, opacity) { + return arguments.length === 1 ? rgbConvert(r2) : new Rgb(r2, g2, b3, opacity == null ? 1 : opacity); } - function Rgb(r2, g2, b2, opacity) { + function Rgb(r2, g2, b3, opacity) { this.r = +r2; this.g = +g2; - this.b = +b2; + this.b = +b3; this.opacity = +opacity; } function rgb_formatHex() { @@ -24639,11 +24211,11 @@ var __esbuild_esm_mermaid = (() => { value2 = clampi(value2); return (value2 < 16 ? "0" : "") + value2.toString(16); } - function hsla(h2, s2, l2, a2) { - if (a2 <= 0) h2 = s2 = l2 = NaN; - else if (l2 <= 0 || l2 >= 1) h2 = s2 = NaN; - else if (s2 <= 0) h2 = NaN; - return new Hsl(h2, s2, l2, a2); + function hsla(h3, s2, l4, a2) { + if (a2 <= 0) h3 = s2 = l4 = NaN; + else if (l4 <= 0 || l4 >= 1) h3 = s2 = NaN; + else if (s2 <= 0) h3 = NaN; + return new Hsl(h3, s2, l4, a2); } function hslConvert(o2) { if (o2 instanceof Hsl) return new Hsl(o2.h, o2.s, o2.l, o2.opacity); @@ -24651,25 +24223,25 @@ var __esbuild_esm_mermaid = (() => { if (!o2) return new Hsl(); if (o2 instanceof Hsl) return o2; o2 = o2.rgb(); - var r2 = o2.r / 255, g2 = o2.g / 255, b2 = o2.b / 255, min9 = Math.min(r2, g2, b2), max10 = Math.max(r2, g2, b2), h2 = NaN, s2 = max10 - min9, l2 = (max10 + min9) / 2; + var r2 = o2.r / 255, g2 = o2.g / 255, b3 = o2.b / 255, min9 = Math.min(r2, g2, b3), max10 = Math.max(r2, g2, b3), h3 = NaN, s2 = max10 - min9, l4 = (max10 + min9) / 2; if (s2) { - if (r2 === max10) h2 = (g2 - b2) / s2 + (g2 < b2) * 6; - else if (g2 === max10) h2 = (b2 - r2) / s2 + 2; - else h2 = (r2 - g2) / s2 + 4; - s2 /= l2 < 0.5 ? max10 + min9 : 2 - max10 - min9; - h2 *= 60; + if (r2 === max10) h3 = (g2 - b3) / s2 + (g2 < b3) * 6; + else if (g2 === max10) h3 = (b3 - r2) / s2 + 2; + else h3 = (r2 - g2) / s2 + 4; + s2 /= l4 < 0.5 ? max10 + min9 : 2 - max10 - min9; + h3 *= 60; } else { - s2 = l2 > 0 && l2 < 1 ? 0 : h2; + s2 = l4 > 0 && l4 < 1 ? 0 : h3; } - return new Hsl(h2, s2, l2, o2.opacity); + return new Hsl(h3, s2, l4, o2.opacity); } - function hsl(h2, s2, l2, opacity) { - return arguments.length === 1 ? hslConvert(h2) : new Hsl(h2, s2, l2, opacity == null ? 1 : opacity); + function hsl(h3, s2, l4, opacity) { + return arguments.length === 1 ? hslConvert(h3) : new Hsl(h3, s2, l4, opacity == null ? 1 : opacity); } - function Hsl(h2, s2, l2, opacity) { - this.h = +h2; + function Hsl(h3, s2, l4, opacity) { + this.h = +h3; this.s = +s2; - this.l = +l2; + this.l = +l4; this.opacity = +opacity; } function clamph(value2) { @@ -24679,8 +24251,8 @@ var __esbuild_esm_mermaid = (() => { function clampt(value2) { return Math.max(0, Math.min(1, value2 || 0)); } - function hsl2rgb(h2, m1, m2) { - return (h2 < 60 ? m1 + (m2 - m1) * h2 / 60 : h2 < 180 ? m2 : h2 < 240 ? m1 + (m2 - m1) * (240 - h2) / 60 : m1) * 255; + function hsl2rgb(h3, m1, m22) { + return (h3 < 60 ? m1 + (m22 - m1) * h3 / 60 : h3 < 180 ? m22 : h3 < 240 ? m1 + (m22 - m1) * (240 - h3) / 60 : m1) * 255; } var darker, brighter, reI, reN, reP, reHex, reRgbInteger, reRgbPercent, reRgbaInteger, reRgbaPercent, reHslPercent, reHslaPercent, named; var init_color2 = __esm({ @@ -24920,11 +24492,11 @@ var __esbuild_esm_mermaid = (() => { return new Hsl(this.h, this.s, this.l * k2, this.opacity); }, rgb() { - var h2 = this.h % 360 + (this.h < 0) * 360, s2 = isNaN(h2) || isNaN(this.s) ? 0 : this.s, l2 = this.l, m2 = l2 + (l2 < 0.5 ? l2 : 1 - l2) * s2, m1 = 2 * l2 - m2; + var h3 = this.h % 360 + (this.h < 0) * 360, s2 = isNaN(h3) || isNaN(this.s) ? 0 : this.s, l4 = this.l, m22 = l4 + (l4 < 0.5 ? l4 : 1 - l4) * s2, m1 = 2 * l4 - m22; return new Rgb( - hsl2rgb(h2 >= 240 ? h2 - 240 : h2 + 120, m1, m2), - hsl2rgb(h2, m1, m2), - hsl2rgb(h2 < 120 ? h2 + 240 : h2 - 120, m1, m2), + hsl2rgb(h3 >= 240 ? h3 - 240 : h3 + 120, m1, m22), + hsl2rgb(h3, m1, m22), + hsl2rgb(h3 < 120 ? h3 + 240 : h3 - 120, m1, m22), this.opacity ); }, @@ -24960,21 +24532,21 @@ var __esbuild_esm_mermaid = (() => { if (o2 instanceof Lab) return new Lab(o2.l, o2.a, o2.b, o2.opacity); if (o2 instanceof Hcl) return hcl2lab(o2); if (!(o2 instanceof Rgb)) o2 = rgbConvert(o2); - var r2 = rgb2lrgb(o2.r), g2 = rgb2lrgb(o2.g), b2 = rgb2lrgb(o2.b), y5 = xyz2lab((0.2225045 * r2 + 0.7168786 * g2 + 0.0606169 * b2) / Yn), x5, z2; - if (r2 === g2 && g2 === b2) x5 = z2 = y5; + var r2 = rgb2lrgb(o2.r), g2 = rgb2lrgb(o2.g), b3 = rgb2lrgb(o2.b), y6 = xyz2lab((0.2225045 * r2 + 0.7168786 * g2 + 0.0606169 * b3) / Yn), x5, z3; + if (r2 === g2 && g2 === b3) x5 = z3 = y6; else { - x5 = xyz2lab((0.4360747 * r2 + 0.3850649 * g2 + 0.1430804 * b2) / Xn); - z2 = xyz2lab((0.0139322 * r2 + 0.0971045 * g2 + 0.7141733 * b2) / Zn); + x5 = xyz2lab((0.4360747 * r2 + 0.3850649 * g2 + 0.1430804 * b3) / Xn); + z3 = xyz2lab((0.0139322 * r2 + 0.0971045 * g2 + 0.7141733 * b3) / Zn); } - return new Lab(116 * y5 - 16, 500 * (x5 - y5), 200 * (y5 - z2), o2.opacity); + return new Lab(116 * y6 - 16, 500 * (x5 - y6), 200 * (y6 - z3), o2.opacity); } - function lab(l2, a2, b2, opacity) { - return arguments.length === 1 ? labConvert(l2) : new Lab(l2, a2, b2, opacity == null ? 1 : opacity); + function lab(l4, a2, b3, opacity) { + return arguments.length === 1 ? labConvert(l4) : new Lab(l4, a2, b3, opacity == null ? 1 : opacity); } - function Lab(l2, a2, b2, opacity) { - this.l = +l2; + function Lab(l4, a2, b3, opacity) { + this.l = +l4; this.a = +a2; - this.b = +b2; + this.b = +b3; this.opacity = +opacity; } function xyz2lab(t4) { @@ -24993,22 +24565,22 @@ var __esbuild_esm_mermaid = (() => { if (o2 instanceof Hcl) return new Hcl(o2.h, o2.c, o2.l, o2.opacity); if (!(o2 instanceof Lab)) o2 = labConvert(o2); if (o2.a === 0 && o2.b === 0) return new Hcl(NaN, 0 < o2.l && o2.l < 100 ? 0 : NaN, o2.l, o2.opacity); - var h2 = Math.atan2(o2.b, o2.a) * degrees; - return new Hcl(h2 < 0 ? h2 + 360 : h2, Math.sqrt(o2.a * o2.a + o2.b * o2.b), o2.l, o2.opacity); + var h3 = Math.atan2(o2.b, o2.a) * degrees; + return new Hcl(h3 < 0 ? h3 + 360 : h3, Math.sqrt(o2.a * o2.a + o2.b * o2.b), o2.l, o2.opacity); } - function hcl(h2, c3, l2, opacity) { - return arguments.length === 1 ? hclConvert(h2) : new Hcl(h2, c3, l2, opacity == null ? 1 : opacity); + function hcl(h3, c3, l4, opacity) { + return arguments.length === 1 ? hclConvert(h3) : new Hcl(h3, c3, l4, opacity == null ? 1 : opacity); } - function Hcl(h2, c3, l2, opacity) { - this.h = +h2; + function Hcl(h3, c3, l4, opacity) { + this.h = +h3; this.c = +c3; - this.l = +l2; + this.l = +l4; this.opacity = +opacity; } function hcl2lab(o2) { if (isNaN(o2.h)) return new Lab(o2.l, 0, 0, o2.opacity); - var h2 = o2.h * radians; - return new Lab(o2.l, Math.cos(h2) * o2.c, Math.sin(h2) * o2.c, o2.opacity); + var h3 = o2.h * radians; + return new Lab(o2.l, Math.cos(h3) * o2.c, Math.sin(h3) * o2.c, o2.opacity); } var K, Xn, Yn, Zn, t0, t1, t2, t3; var init_lab = __esm({ @@ -25036,14 +24608,14 @@ var __esbuild_esm_mermaid = (() => { return new Lab(this.l - K * (k2 == null ? 1 : k2), this.a, this.b, this.opacity); }, rgb() { - var y5 = (this.l + 16) / 116, x5 = isNaN(this.a) ? y5 : y5 + this.a / 500, z2 = isNaN(this.b) ? y5 : y5 - this.b / 200; + var y6 = (this.l + 16) / 116, x5 = isNaN(this.a) ? y6 : y6 + this.a / 500, z3 = isNaN(this.b) ? y6 : y6 - this.b / 200; x5 = Xn * lab2xyz(x5); - y5 = Yn * lab2xyz(y5); - z2 = Zn * lab2xyz(z2); + y6 = Yn * lab2xyz(y6); + z3 = Zn * lab2xyz(z3); return new Rgb( - lrgb2rgb(3.1338561 * x5 - 1.6168667 * y5 - 0.4906146 * z2), - lrgb2rgb(-0.9787684 * x5 + 1.9161415 * y5 + 0.033454 * z2), - lrgb2rgb(0.0719453 * x5 - 0.2289914 * y5 + 1.4052427 * z2), + lrgb2rgb(3.1338561 * x5 - 1.6168667 * y6 - 0.4906146 * z3), + lrgb2rgb(-0.9787684 * x5 + 1.9161415 * y6 + 0.033454 * z3), + lrgb2rgb(0.0719453 * x5 - 0.2289914 * y6 + 1.4052427 * z3), this.opacity ); } @@ -25080,15 +24652,15 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/basis.js - function basis(t13, v0, v12, v22, v3) { + function basis(t13, v0, v12, v23, v3) { var t22 = t13 * t13, t32 = t22 * t13; - return ((1 - 3 * t13 + 3 * t22 - t32) * v0 + (4 - 6 * t22 + 3 * t32) * v12 + (1 + 3 * t13 + 3 * t22 - 3 * t32) * v22 + t32 * v3) / 6; + return ((1 - 3 * t13 + 3 * t22 - t32) * v0 + (4 - 6 * t22 + 3 * t32) * v12 + (1 + 3 * t13 + 3 * t22 - 3 * t32) * v23 + t32 * v3) / 6; } function basis_default(values2) { var n2 = values2.length - 1; return function(t4) { - var i2 = t4 <= 0 ? t4 = 0 : t4 >= 1 ? (t4 = 1, n2 - 1) : Math.floor(t4 * n2), v12 = values2[i2], v22 = values2[i2 + 1], v0 = i2 > 0 ? values2[i2 - 1] : 2 * v12 - v22, v3 = i2 < n2 - 1 ? values2[i2 + 2] : 2 * v22 - v12; - return basis((t4 - i2 / n2) * n2, v0, v12, v22, v3); + var i2 = t4 <= 0 ? t4 = 0 : t4 >= 1 ? (t4 = 1, n2 - 1) : Math.floor(t4 * n2), v12 = values2[i2], v23 = values2[i2 + 1], v0 = i2 > 0 ? values2[i2 - 1] : 2 * v12 - v23, v3 = i2 < n2 - 1 ? values2[i2 + 2] : 2 * v23 - v12; + return basis((t4 - i2 / n2) * n2, v0, v12, v23, v3); }; } var init_basis = __esm({ @@ -25103,8 +24675,8 @@ var __esbuild_esm_mermaid = (() => { function basisClosed_default(values2) { var n2 = values2.length; return function(t4) { - var i2 = Math.floor(((t4 %= 1) < 0 ? ++t4 : t4) * n2), v0 = values2[(i2 + n2 - 1) % n2], v12 = values2[i2 % n2], v22 = values2[(i2 + 1) % n2], v3 = values2[(i2 + 2) % n2]; - return basis((t4 - i2 / n2) * n2, v0, v12, v22, v3); + var i2 = Math.floor(((t4 %= 1) < 0 ? ++t4 : t4) * n2), v0 = values2[(i2 + n2 - 1) % n2], v12 = values2[i2 % n2], v23 = values2[(i2 + 1) % n2], v3 = values2[(i2 + 2) % n2]; + return basis((t4 - i2 / n2) * n2, v0, v12, v23, v3); }; } var init_basisClosed = __esm({ @@ -25125,28 +24697,28 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/color.js - function linear(a2, d2) { + function linear(a2, d3) { return function(t4) { - return a2 + t4 * d2; + return a2 + t4 * d3; }; } - function exponential(a2, b2, y5) { - return a2 = Math.pow(a2, y5), b2 = Math.pow(b2, y5) - a2, y5 = 1 / y5, function(t4) { - return Math.pow(a2 + t4 * b2, y5); + function exponential(a2, b3, y6) { + return a2 = Math.pow(a2, y6), b3 = Math.pow(b3, y6) - a2, y6 = 1 / y6, function(t4) { + return Math.pow(a2 + t4 * b3, y6); }; } - function hue(a2, b2) { - var d2 = b2 - a2; - return d2 ? linear(a2, d2 > 180 || d2 < -180 ? d2 - 360 * Math.round(d2 / 360) : d2) : constant_default2(isNaN(a2) ? b2 : a2); + function hue(a2, b3) { + var d3 = b3 - a2; + return d3 ? linear(a2, d3 > 180 || d3 < -180 ? d3 - 360 * Math.round(d3 / 360) : d3) : constant_default2(isNaN(a2) ? b3 : a2); } - function gamma(y5) { - return (y5 = +y5) === 1 ? nogamma : function(a2, b2) { - return b2 - a2 ? exponential(a2, b2, y5) : constant_default2(isNaN(a2) ? b2 : a2); + function gamma(y6) { + return (y6 = +y6) === 1 ? nogamma : function(a2, b3) { + return b3 - a2 ? exponential(a2, b3, y6) : constant_default2(isNaN(a2) ? b3 : a2); }; } - function nogamma(a2, b2) { - var d2 = b2 - a2; - return d2 ? linear(a2, d2) : constant_default2(isNaN(a2) ? b2 : a2); + function nogamma(a2, b3) { + var d3 = b3 - a2; + return d3 ? linear(a2, d3) : constant_default2(isNaN(a2) ? b3 : a2); } var init_color3 = __esm({ "../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/color.js"() { @@ -25163,21 +24735,21 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/rgb.js function rgbSpline(spline) { return function(colors2) { - var n2 = colors2.length, r2 = new Array(n2), g2 = new Array(n2), b2 = new Array(n2), i2, color2; + var n2 = colors2.length, r2 = new Array(n2), g2 = new Array(n2), b3 = new Array(n2), i2, color2; for (i2 = 0; i2 < n2; ++i2) { color2 = rgb(colors2[i2]); r2[i2] = color2.r || 0; g2[i2] = color2.g || 0; - b2[i2] = color2.b || 0; + b3[i2] = color2.b || 0; } r2 = spline(r2); g2 = spline(g2); - b2 = spline(b2); + b3 = spline(b3); color2.opacity = 1; return function(t4) { color2.r = r2(t4); color2.g = g2(t4); - color2.b = b2(t4); + color2.b = b3(t4); return color2 + ""; }; }; @@ -25190,14 +24762,14 @@ var __esbuild_esm_mermaid = (() => { init_basis(); init_basisClosed(); init_color3(); - rgb_default2 = (/* @__PURE__ */ __name(function rgbGamma(y5) { - var color2 = gamma(y5); + rgb_default2 = (/* @__PURE__ */ __name((function rgbGamma(y6) { + var color2 = gamma(y6); function rgb2(start3, end2) { - var r2 = color2((start3 = rgb(start3)).r, (end2 = rgb(end2)).r), g2 = color2(start3.g, end2.g), b2 = color2(start3.b, end2.b), opacity = nogamma(start3.opacity, end2.opacity); + var r2 = color2((start3 = rgb(start3)).r, (end2 = rgb(end2)).r), g2 = color2(start3.g, end2.g), b3 = color2(start3.b, end2.b), opacity = nogamma(start3.opacity, end2.opacity); return function(t4) { start3.r = r2(t4); start3.g = g2(t4); - start3.b = b2(t4); + start3.b = b3(t4); start3.opacity = opacity(t4); return start3 + ""; }; @@ -25205,7 +24777,7 @@ var __esbuild_esm_mermaid = (() => { __name(rgb2, "rgb"); rgb2.gamma = rgbGamma; return rgb2; - }, "rgbGamma"))(1); + }), "rgbGamma"))(1); __name(rgbSpline, "rgbSpline"); rgbBasis = rgbSpline(basis_default); rgbBasisClosed = rgbSpline(basisClosed_default); @@ -25213,11 +24785,11 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/numberArray.js - function numberArray_default(a2, b2) { - if (!b2) b2 = []; - var n2 = a2 ? Math.min(b2.length, a2.length) : 0, c3 = b2.slice(), i2; + function numberArray_default(a2, b3) { + if (!b3) b3 = []; + var n2 = a2 ? Math.min(b3.length, a2.length) : 0, c3 = b3.slice(), i2; return function(t4) { - for (i2 = 0; i2 < n2; ++i2) c3[i2] = a2[i2] * (1 - t4) + b2[i2] * t4; + for (i2 = 0; i2 < n2; ++i2) c3[i2] = a2[i2] * (1 - t4) + b3[i2] * t4; return c3; }; } @@ -25233,10 +24805,10 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/array.js - function genericArray(a2, b2) { - var nb = b2 ? b2.length : 0, na = a2 ? Math.min(nb, a2.length) : 0, x5 = new Array(na), c3 = new Array(nb), i2; - for (i2 = 0; i2 < na; ++i2) x5[i2] = value_default(a2[i2], b2[i2]); - for (; i2 < nb; ++i2) c3[i2] = b2[i2]; + function genericArray(a2, b3) { + var nb = b3 ? b3.length : 0, na = a2 ? Math.min(nb, a2.length) : 0, x5 = new Array(na), c3 = new Array(nb), i2; + for (i2 = 0; i2 < na; ++i2) x5[i2] = value_default(a2[i2], b3[i2]); + for (; i2 < nb; ++i2) c3[i2] = b3[i2]; return function(t4) { for (i2 = 0; i2 < na; ++i2) c3[i2] = x5[i2](t4); return c3; @@ -25251,10 +24823,10 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/date.js - function date_default(a2, b2) { - var d2 = /* @__PURE__ */ new Date(); - return a2 = +a2, b2 = +b2, function(t4) { - return d2.setTime(a2 * (1 - t4) + b2 * t4), d2; + function date_default(a2, b3) { + var d3 = /* @__PURE__ */ new Date(); + return a2 = +a2, b3 = +b3, function(t4) { + return d3.setTime(a2 * (1 - t4) + b3 * t4), d3; }; } var init_date = __esm({ @@ -25265,9 +24837,9 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/number.js - function number_default(a2, b2) { - return a2 = +a2, b2 = +b2, function(t4) { - return a2 * (1 - t4) + b2 * t4; + function number_default(a2, b3) { + return a2 = +a2, b3 = +b3, function(t4) { + return a2 * (1 - t4) + b3 * t4; }; } var init_number2 = __esm({ @@ -25278,15 +24850,15 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/object.js - function object_default(a2, b2) { + function object_default(a2, b3) { var i2 = {}, c3 = {}, k2; if (a2 === null || typeof a2 !== "object") a2 = {}; - if (b2 === null || typeof b2 !== "object") b2 = {}; - for (k2 in b2) { + if (b3 === null || typeof b3 !== "object") b3 = {}; + for (k2 in b3) { if (k2 in a2) { - i2[k2] = value_default(a2[k2], b2[k2]); + i2[k2] = value_default(a2[k2], b3[k2]); } else { - c3[k2] = b2[k2]; + c3[k2] = b3[k2]; } } return function(t4) { @@ -25303,22 +24875,22 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/string.js - function zero2(b2) { + function zero2(b3) { return function() { - return b2; + return b3; }; } - function one(b2) { + function one(b3) { return function(t4) { - return b2(t4) + ""; + return b3(t4) + ""; }; } - function string_default(a2, b2) { - var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i2 = -1, s2 = [], q2 = []; - a2 = a2 + "", b2 = b2 + ""; - while ((am = reA.exec(a2)) && (bm = reB.exec(b2))) { + function string_default(a2, b3) { + var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i2 = -1, s2 = [], q3 = []; + a2 = a2 + "", b3 = b3 + ""; + while ((am = reA.exec(a2)) && (bm = reB.exec(b3))) { if ((bs = bm.index) > bi) { - bs = b2.slice(bi, bs); + bs = b3.slice(bi, bs); if (s2[i2]) s2[i2] += bs; else s2[++i2] = bs; } @@ -25327,17 +24899,17 @@ var __esbuild_esm_mermaid = (() => { else s2[++i2] = bm; } else { s2[++i2] = null; - q2.push({ i: i2, x: number_default(am, bm) }); + q3.push({ i: i2, x: number_default(am, bm) }); } bi = reB.lastIndex; } - if (bi < b2.length) { - bs = b2.slice(bi); + if (bi < b3.length) { + bs = b3.slice(bi); if (s2[i2]) s2[i2] += bs; else s2[++i2] = bs; } - return s2.length < 2 ? q2[0] ? one(q2[0].x) : zero2(b2) : (b2 = q2.length, function(t4) { - for (var i3 = 0, o2; i3 < b2; ++i3) s2[(o2 = q2[i3]).i] = o2.x(t4); + return s2.length < 2 ? q3[0] ? one(q3[0].x) : zero2(b3) : (b3 = q3.length, function(t4) { + for (var i3 = 0, o2; i3 < b3; ++i3) s2[(o2 = q3[i3]).i] = o2.x(t4); return s2.join(""); }); } @@ -25355,9 +24927,9 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/value.js - function value_default(a2, b2) { - var t4 = typeof b2, c3; - return b2 == null || t4 === "boolean" ? constant_default2(b2) : (t4 === "number" ? number_default : t4 === "string" ? (c3 = color(b2)) ? (b2 = c3, rgb_default2) : string_default : b2 instanceof color ? rgb_default2 : b2 instanceof Date ? date_default : isNumberArray(b2) ? numberArray_default : Array.isArray(b2) ? genericArray : typeof b2.valueOf !== "function" && typeof b2.toString !== "function" || isNaN(b2) ? object_default : number_default)(a2, b2); + function value_default(a2, b3) { + var t4 = typeof b3, c3; + return b3 == null || t4 === "boolean" ? constant_default2(b3) : (t4 === "number" ? number_default : t4 === "string" ? (c3 = color(b3)) ? (b3 = c3, rgb_default2) : string_default : b3 instanceof color ? rgb_default2 : b3 instanceof Date ? date_default : isNumberArray(b3) ? numberArray_default : Array.isArray(b3) ? genericArray : typeof b3.valueOf !== "function" && typeof b3.toString !== "function" || isNaN(b3) ? object_default : number_default)(a2, b3); } var init_value = __esm({ "../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/value.js"() { @@ -25376,9 +24948,9 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/round.js - function round_default(a2, b2) { - return a2 = +a2, b2 = +b2, function(t4) { - return Math.round(a2 * (1 - t4) + b2 * t4); + function round_default(a2, b3) { + return a2 = +a2, b3 = +b3, function(t4) { + return Math.round(a2 * (1 - t4) + b3 * t4); }; } var init_round = __esm({ @@ -25389,16 +24961,16 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/decompose.js - function decompose_default(a2, b2, c3, d2, e3, f2) { + function decompose_default(a2, b3, c3, d3, e3, f2) { var scaleX, scaleY, skewX; - if (scaleX = Math.sqrt(a2 * a2 + b2 * b2)) a2 /= scaleX, b2 /= scaleX; - if (skewX = a2 * c3 + b2 * d2) c3 -= a2 * skewX, d2 -= b2 * skewX; - if (scaleY = Math.sqrt(c3 * c3 + d2 * d2)) c3 /= scaleY, d2 /= scaleY, skewX /= scaleY; - if (a2 * d2 < b2 * c3) a2 = -a2, b2 = -b2, skewX = -skewX, scaleX = -scaleX; + if (scaleX = Math.sqrt(a2 * a2 + b3 * b3)) a2 /= scaleX, b3 /= scaleX; + if (skewX = a2 * c3 + b3 * d3) c3 -= a2 * skewX, d3 -= b3 * skewX; + if (scaleY = Math.sqrt(c3 * c3 + d3 * d3)) c3 /= scaleY, d3 /= scaleY, skewX /= scaleY; + if (a2 * d3 < b3 * c3) a2 = -a2, b3 = -b3, skewX = -skewX, scaleX = -scaleX; return { translateX: e3, translateY: f2, - rotate: Math.atan2(b2, a2) * degrees2, + rotate: Math.atan2(b3, a2) * degrees2, skewX: Math.atan(skewX) * degrees2, scaleX, scaleY @@ -25423,8 +24995,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/parse.js function parseCss(value2) { - const m2 = new (typeof DOMMatrix === "function" ? DOMMatrix : WebKitCSSMatrix)(value2 + ""); - return m2.isIdentity ? identity : decompose_default(m2.a, m2.b, m2.c, m2.d, m2.e, m2.f); + const m3 = new (typeof DOMMatrix === "function" ? DOMMatrix : WebKitCSSMatrix)(value2 + ""); + return m3.isIdentity ? identity : decompose_default(m3.a, m3.b, m3.c, m3.d, m3.e, m3.f); } function parseSvg(value2) { if (value2 == null) return identity; @@ -25450,53 +25022,53 @@ var __esbuild_esm_mermaid = (() => { return s2.length ? s2.pop() + " " : ""; } __name(pop, "pop"); - function translate2(xa, ya, xb, yb, s2, q2) { + function translate2(xa, ya, xb, yb, s2, q3) { if (xa !== xb || ya !== yb) { var i2 = s2.push("translate(", null, pxComma, null, pxParen); - q2.push({ i: i2 - 4, x: number_default(xa, xb) }, { i: i2 - 2, x: number_default(ya, yb) }); + q3.push({ i: i2 - 4, x: number_default(xa, xb) }, { i: i2 - 2, x: number_default(ya, yb) }); } else if (xb || yb) { s2.push("translate(" + xb + pxComma + yb + pxParen); } } __name(translate2, "translate"); - function rotate2(a2, b2, s2, q2) { - if (a2 !== b2) { - if (a2 - b2 > 180) b2 += 360; - else if (b2 - a2 > 180) a2 += 360; - q2.push({ i: s2.push(pop(s2) + "rotate(", null, degParen) - 2, x: number_default(a2, b2) }); - } else if (b2) { - s2.push(pop(s2) + "rotate(" + b2 + degParen); + function rotate2(a2, b3, s2, q3) { + if (a2 !== b3) { + if (a2 - b3 > 180) b3 += 360; + else if (b3 - a2 > 180) a2 += 360; + q3.push({ i: s2.push(pop(s2) + "rotate(", null, degParen) - 2, x: number_default(a2, b3) }); + } else if (b3) { + s2.push(pop(s2) + "rotate(" + b3 + degParen); } } __name(rotate2, "rotate"); - function skewX(a2, b2, s2, q2) { - if (a2 !== b2) { - q2.push({ i: s2.push(pop(s2) + "skewX(", null, degParen) - 2, x: number_default(a2, b2) }); - } else if (b2) { - s2.push(pop(s2) + "skewX(" + b2 + degParen); + function skewX(a2, b3, s2, q3) { + if (a2 !== b3) { + q3.push({ i: s2.push(pop(s2) + "skewX(", null, degParen) - 2, x: number_default(a2, b3) }); + } else if (b3) { + s2.push(pop(s2) + "skewX(" + b3 + degParen); } } __name(skewX, "skewX"); - function scale2(xa, ya, xb, yb, s2, q2) { + function scale2(xa, ya, xb, yb, s2, q3) { if (xa !== xb || ya !== yb) { var i2 = s2.push(pop(s2) + "scale(", null, ",", null, ")"); - q2.push({ i: i2 - 4, x: number_default(xa, xb) }, { i: i2 - 2, x: number_default(ya, yb) }); + q3.push({ i: i2 - 4, x: number_default(xa, xb) }, { i: i2 - 2, x: number_default(ya, yb) }); } else if (xb !== 1 || yb !== 1) { s2.push(pop(s2) + "scale(" + xb + "," + yb + ")"); } } __name(scale2, "scale"); - return function(a2, b2) { - var s2 = [], q2 = []; - a2 = parse7(a2), b2 = parse7(b2); - translate2(a2.translateX, a2.translateY, b2.translateX, b2.translateY, s2, q2); - rotate2(a2.rotate, b2.rotate, s2, q2); - skewX(a2.skewX, b2.skewX, s2, q2); - scale2(a2.scaleX, a2.scaleY, b2.scaleX, b2.scaleY, s2, q2); - a2 = b2 = null; + return function(a2, b3) { + var s2 = [], q3 = []; + a2 = parse7(a2), b3 = parse7(b3); + translate2(a2.translateX, a2.translateY, b3.translateX, b3.translateY, s2, q3); + rotate2(a2.rotate, b3.rotate, s2, q3); + skewX(a2.skewX, b3.skewX, s2, q3); + scale2(a2.scaleX, a2.scaleY, b3.scaleX, b3.scaleY, s2, q3); + a2 = b3 = null; return function(t4) { - var i2 = -1, n2 = q2.length, o2; - while (++i2 < n2) s2[(o2 = q2[i2]).i] = o2.x(t4); + var i2 = -1, n2 = q3.length, o2; + while (++i2 < n2) s2[(o2 = q3[i2]).i] = o2.x(t4); return s2.join(""); }; }; @@ -25516,11 +25088,11 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/hcl.js function hcl2(hue2) { return function(start3, end2) { - var h2 = hue2((start3 = hcl(start3)).h, (end2 = hcl(end2)).h), c3 = nogamma(start3.c, end2.c), l2 = nogamma(start3.l, end2.l), opacity = nogamma(start3.opacity, end2.opacity); + var h3 = hue2((start3 = hcl(start3)).h, (end2 = hcl(end2)).h), c3 = nogamma(start3.c, end2.c), l4 = nogamma(start3.l, end2.l), opacity = nogamma(start3.opacity, end2.opacity); return function(t4) { - start3.h = h2(t4); + start3.h = h3(t4); start3.c = c3(t4); - start3.l = l2(t4); + start3.l = l4(t4); start3.opacity = opacity(t4); return start3 + ""; }; @@ -25589,8 +25161,8 @@ var __esbuild_esm_mermaid = (() => { } } function poke() { - var now4 = clock.now(), delay2 = now4 - clockLast; - if (delay2 > pokeDelay) clockSkew -= delay2, clockLast = now4; + var now3 = clock.now(), delay2 = now3 - clockLast; + if (delay2 > pokeDelay) clockSkew -= delay2, clockLast = now3; } function nap() { var t03, t13 = taskHead, t22, time4 = Infinity; @@ -25695,11 +25267,11 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/schedule.js - function schedule_default(node2, name, id29, index, group2, timing) { + function schedule_default(node2, name, id30, index, group2, timing) { var schedules = node2.__transition; if (!schedules) node2.__transition = {}; - else if (id29 in schedules) return; - create2(node2, id29, { + else if (id30 in schedules) return; + create2(node2, id30, { name, index, // For context during callback. @@ -25715,24 +25287,24 @@ var __esbuild_esm_mermaid = (() => { state: CREATED }); } - function init(node2, id29) { - var schedule = get2(node2, id29); + function init(node2, id30) { + var schedule = get2(node2, id30); if (schedule.state > CREATED) throw new Error("too late; already scheduled"); return schedule; } - function set2(node2, id29) { - var schedule = get2(node2, id29); + function set2(node2, id30) { + var schedule = get2(node2, id30); if (schedule.state > STARTED) throw new Error("too late; already running"); return schedule; } - function get2(node2, id29) { + function get2(node2, id30) { var schedule = node2.__transition; - if (!schedule || !(schedule = schedule[id29])) throw new Error("transition not found"); + if (!schedule || !(schedule = schedule[id30])) throw new Error("transition not found"); return schedule; } - function create2(node2, id29, self2) { + function create2(node2, id30, self2) { var schedules = node2.__transition, tween; - schedules[id29] = self2; + schedules[id30] = self2; self2.timer = timer(schedule, 0, self2.time); function schedule(elapsed) { self2.state = SCHEDULED; @@ -25741,7 +25313,7 @@ var __esbuild_esm_mermaid = (() => { } __name(schedule, "schedule"); function start3(elapsed) { - var i2, j2, n2, o2; + var i2, j3, n2, o2; if (self2.state !== SCHEDULED) return stop5(); for (i2 in schedules) { o2 = schedules[i2]; @@ -25752,7 +25324,7 @@ var __esbuild_esm_mermaid = (() => { o2.timer.stop(); o2.on.call("interrupt", node2, node2.__data__, o2.index, o2.group); delete schedules[i2]; - } else if (+i2 < id29) { + } else if (+i2 < id30) { o2.state = ENDED; o2.timer.stop(); o2.on.call("cancel", node2, node2.__data__, o2.index, o2.group); @@ -25771,12 +25343,12 @@ var __esbuild_esm_mermaid = (() => { if (self2.state !== STARTING) return; self2.state = STARTED; tween = new Array(n2 = self2.tween.length); - for (i2 = 0, j2 = -1; i2 < n2; ++i2) { + for (i2 = 0, j3 = -1; i2 < n2; ++i2) { if (o2 = self2.tween[i2].value.call(node2, node2.__data__, self2.index, self2.group)) { - tween[++j2] = o2; + tween[++j3] = o2; } } - tween.length = j2 + 1; + tween.length = j3 + 1; } __name(start3, "start"); function tick(elapsed) { @@ -25793,7 +25365,7 @@ var __esbuild_esm_mermaid = (() => { function stop5() { self2.state = ENDED; self2.timer.stop(); - delete schedules[id29]; + delete schedules[id30]; for (var i2 in schedules) return; delete node2.__transition; } @@ -25863,10 +25435,10 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/tween.js - function tweenRemove(id29, name) { + function tweenRemove(id30, name) { var tween0, tween1; return function() { - var schedule = set2(this, id29), tween = schedule.tween; + var schedule = set2(this, id30), tween = schedule.tween; if (tween !== tween0) { tween1 = tween0 = tween; for (var i2 = 0, n2 = tween1.length; i2 < n2; ++i2) { @@ -25880,11 +25452,11 @@ var __esbuild_esm_mermaid = (() => { schedule.tween = tween1; }; } - function tweenFunction(id29, name, value2) { + function tweenFunction(id30, name, value2) { var tween0, tween1; if (typeof value2 !== "function") throw new Error(); return function() { - var schedule = set2(this, id29), tween = schedule.tween; + var schedule = set2(this, id30), tween = schedule.tween; if (tween !== tween0) { tween1 = (tween0 = tween).slice(); for (var t4 = { name, value: value2 }, i2 = 0, n2 = tween1.length; i2 < n2; ++i2) { @@ -25899,10 +25471,10 @@ var __esbuild_esm_mermaid = (() => { }; } function tween_default(name, value2) { - var id29 = this._id; + var id30 = this._id; name += ""; if (arguments.length < 2) { - var tween = get2(this.node(), id29).tween; + var tween = get2(this.node(), id30).tween; for (var i2 = 0, n2 = tween.length, t4; i2 < n2; ++i2) { if ((t4 = tween[i2]).name === name) { return t4.value; @@ -25910,16 +25482,16 @@ var __esbuild_esm_mermaid = (() => { } return null; } - return this.each((value2 == null ? tweenRemove : tweenFunction)(id29, name, value2)); + return this.each((value2 == null ? tweenRemove : tweenFunction)(id30, name, value2)); } function tweenValue(transition2, name, value2) { - var id29 = transition2._id; + var id30 = transition2._id; transition2.each(function() { - var schedule = set2(this, id29); + var schedule = set2(this, id30); (schedule.value || (schedule.value = {}))[name] = value2.apply(this, arguments); }); return function(node2) { - return get2(node2, id29).value[name]; + return get2(node2, id30).value[name]; }; } var init_tween = __esm({ @@ -25934,9 +25506,9 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/interpolate.js - function interpolate_default(a2, b2) { + function interpolate_default(a2, b3) { var c3; - return (typeof b2 === "number" ? number_default : b2 instanceof color ? rgb_default2 : (c3 = color(b2)) ? (b2 = c3, rgb_default2) : string_default)(a2, b2); + return (typeof b3 === "number" ? number_default : b3 instanceof color ? rgb_default2 : (c3 = color(b3)) ? (b3 = c3, rgb_default2) : string_default)(a2, b3); } var init_interpolate = __esm({ "../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/interpolate.js"() { @@ -26067,19 +25639,19 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/delay.js - function delayFunction(id29, value2) { + function delayFunction(id30, value2) { return function() { - init(this, id29).delay = +value2.apply(this, arguments); + init(this, id30).delay = +value2.apply(this, arguments); }; } - function delayConstant(id29, value2) { + function delayConstant(id30, value2) { return value2 = +value2, function() { - init(this, id29).delay = value2; + init(this, id30).delay = value2; }; } function delay_default(value2) { - var id29 = this._id; - return arguments.length ? this.each((typeof value2 === "function" ? delayFunction : delayConstant)(id29, value2)) : get2(this.node(), id29).delay; + var id30 = this._id; + return arguments.length ? this.each((typeof value2 === "function" ? delayFunction : delayConstant)(id30, value2)) : get2(this.node(), id30).delay; } var init_delay = __esm({ "../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/delay.js"() { @@ -26092,19 +25664,19 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/duration.js - function durationFunction(id29, value2) { + function durationFunction(id30, value2) { return function() { - set2(this, id29).duration = +value2.apply(this, arguments); + set2(this, id30).duration = +value2.apply(this, arguments); }; } - function durationConstant(id29, value2) { + function durationConstant(id30, value2) { return value2 = +value2, function() { - set2(this, id29).duration = value2; + set2(this, id30).duration = value2; }; } function duration_default(value2) { - var id29 = this._id; - return arguments.length ? this.each((typeof value2 === "function" ? durationFunction : durationConstant)(id29, value2)) : get2(this.node(), id29).duration; + var id30 = this._id; + return arguments.length ? this.each((typeof value2 === "function" ? durationFunction : durationConstant)(id30, value2)) : get2(this.node(), id30).duration; } var init_duration = __esm({ "../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/duration.js"() { @@ -26117,15 +25689,15 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/ease.js - function easeConstant(id29, value2) { + function easeConstant(id30, value2) { if (typeof value2 !== "function") throw new Error(); return function() { - set2(this, id29).ease = value2; + set2(this, id30).ease = value2; }; } function ease_default(value2) { - var id29 = this._id; - return arguments.length ? this.each(easeConstant(id29, value2)) : get2(this.node(), id29).ease; + var id30 = this._id; + return arguments.length ? this.each(easeConstant(id30, value2)) : get2(this.node(), id30).ease; } var init_ease = __esm({ "../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/ease.js"() { @@ -26137,11 +25709,11 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/easeVarying.js - function easeVarying(id29, value2) { + function easeVarying(id30, value2) { return function() { var v3 = value2.apply(this, arguments); if (typeof v3 !== "function") throw new Error(); - set2(this, id29).ease = v3; + set2(this, id30).ease = v3; }; } function easeVarying_default(value2) { @@ -26160,8 +25732,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/filter.js function filter_default2(match2) { if (typeof match2 !== "function") match2 = matcher_default(match2); - for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j2 = 0; j2 < m2; ++j2) { - for (var group2 = groups[j2], n2 = group2.length, subgroup = subgroups[j2] = [], node2, i2 = 0; i2 < n2; ++i2) { + for (var groups = this._groups, m3 = groups.length, subgroups = new Array(m3), j3 = 0; j3 < m3; ++j3) { + for (var group2 = groups[j3], n2 = group2.length, subgroup = subgroups[j3] = [], node2, i2 = 0; i2 < n2; ++i2) { if ((node2 = group2[i2]) && match2.call(node2, node2.__data__, i2, group2)) { subgroup.push(node2); } @@ -26181,15 +25753,15 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/merge.js function merge_default2(transition2) { if (transition2._id !== this._id) throw new Error(); - for (var groups0 = this._groups, groups1 = transition2._groups, m0 = groups0.length, m1 = groups1.length, m2 = Math.min(m0, m1), merges = new Array(m0), j2 = 0; j2 < m2; ++j2) { - for (var group0 = groups0[j2], group1 = groups1[j2], n2 = group0.length, merge5 = merges[j2] = new Array(n2), node2, i2 = 0; i2 < n2; ++i2) { + for (var groups0 = this._groups, groups1 = transition2._groups, m0 = groups0.length, m1 = groups1.length, m3 = Math.min(m0, m1), merges = new Array(m0), j3 = 0; j3 < m3; ++j3) { + for (var group0 = groups0[j3], group1 = groups1[j3], n2 = group0.length, merge5 = merges[j3] = new Array(n2), node2, i2 = 0; i2 < n2; ++i2) { if (node2 = group0[i2] || group1[i2]) { merge5[i2] = node2; } } } - for (; j2 < m0; ++j2) { - merges[j2] = groups0[j2]; + for (; j3 < m0; ++j3) { + merges[j3] = groups0[j3]; } return new Transition(merges, this._parents, this._name, this._id); } @@ -26209,17 +25781,17 @@ var __esbuild_esm_mermaid = (() => { return !t4 || t4 === "start"; }); } - function onFunction(id29, name, listener) { + function onFunction(id30, name, listener) { var on0, on1, sit = start(name) ? init : set2; return function() { - var schedule = sit(this, id29), on3 = schedule.on; + var schedule = sit(this, id30), on3 = schedule.on; if (on3 !== on0) (on1 = (on0 = on3).copy()).on(name, listener); schedule.on = on1; }; } function on_default2(name, listener) { - var id29 = this._id; - return arguments.length < 2 ? get2(this.node(), id29).on.on(name) : this.each(onFunction(id29, name, listener)); + var id30 = this._id; + return arguments.length < 2 ? get2(this.node(), id30).on.on(name) : this.each(onFunction(id30, name, listener)); } var init_on2 = __esm({ "../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/on.js"() { @@ -26232,10 +25804,10 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/remove.js - function removeFunction(id29) { + function removeFunction(id30) { return function() { var parent4 = this.parentNode; - for (var i2 in this.__transition) if (+i2 !== id29) return; + for (var i2 in this.__transition) if (+i2 !== id30) return; if (parent4) parent4.removeChild(this); }; } @@ -26252,18 +25824,18 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/select.js function select_default3(select) { - var name = this._name, id29 = this._id; + var name = this._name, id30 = this._id; if (typeof select !== "function") select = selector_default(select); - for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j2 = 0; j2 < m2; ++j2) { - for (var group2 = groups[j2], n2 = group2.length, subgroup = subgroups[j2] = new Array(n2), node2, subnode, i2 = 0; i2 < n2; ++i2) { + for (var groups = this._groups, m3 = groups.length, subgroups = new Array(m3), j3 = 0; j3 < m3; ++j3) { + for (var group2 = groups[j3], n2 = group2.length, subgroup = subgroups[j3] = new Array(n2), node2, subnode, i2 = 0; i2 < n2; ++i2) { if ((node2 = group2[i2]) && (subnode = select.call(node2, node2.__data__, i2, group2))) { if ("__data__" in node2) subnode.__data__ = node2.__data__; subgroup[i2] = subnode; - schedule_default(subgroup[i2], name, id29, i2, subgroup, get2(node2, id29)); + schedule_default(subgroup[i2], name, id30, i2, subgroup, get2(node2, id30)); } } } - return new Transition(subgroups, this._parents, name, id29); + return new Transition(subgroups, this._parents, name, id30); } var init_select3 = __esm({ "../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/select.js"() { @@ -26277,14 +25849,14 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selectAll.js function selectAll_default2(select) { - var name = this._name, id29 = this._id; + var name = this._name, id30 = this._id; if (typeof select !== "function") select = selectorAll_default(select); - for (var groups = this._groups, m2 = groups.length, subgroups = [], parents3 = [], j2 = 0; j2 < m2; ++j2) { - for (var group2 = groups[j2], n2 = group2.length, node2, i2 = 0; i2 < n2; ++i2) { + for (var groups = this._groups, m3 = groups.length, subgroups = [], parents3 = [], j3 = 0; j3 < m3; ++j3) { + for (var group2 = groups[j3], n2 = group2.length, node2, i2 = 0; i2 < n2; ++i2) { if (node2 = group2[i2]) { - for (var children2 = select.call(node2, node2.__data__, i2, group2), child, inherit2 = get2(node2, id29), k2 = 0, l2 = children2.length; k2 < l2; ++k2) { + for (var children2 = select.call(node2, node2.__data__, i2, group2), child, inherit2 = get2(node2, id30), k2 = 0, l4 = children2.length; k2 < l4; ++k2) { if (child = children2[k2]) { - schedule_default(child, name, id29, k2, children2, inherit2); + schedule_default(child, name, id30, k2, children2, inherit2); } } subgroups.push(children2); @@ -26292,7 +25864,7 @@ var __esbuild_esm_mermaid = (() => { } } } - return new Transition(subgroups, parents3, name, id29); + return new Transition(subgroups, parents3, name, id30); } var init_selectAll2 = __esm({ "../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selectAll.js"() { @@ -26346,10 +25918,10 @@ var __esbuild_esm_mermaid = (() => { return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); }; } - function styleMaybeRemove(id29, name) { + function styleMaybeRemove(id30, name) { var on0, on1, listener0, key = "style." + name, event3 = "end." + key, remove3; return function() { - var schedule = set2(this, id29), on3 = schedule.on, listener = schedule.value[key] == null ? remove3 || (remove3 = styleRemove2(name)) : void 0; + var schedule = set2(this, id30), on3 = schedule.on, listener = schedule.value[key] == null ? remove3 || (remove3 = styleRemove2(name)) : void 0; if (on3 !== on0 || listener0 !== listener) (on1 = (on0 = on3).copy()).on(event3, listener0 = listener); schedule.on = on1; }; @@ -26469,8 +26041,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/transition.js function transition_default() { var name = this._name, id0 = this._id, id1 = newId(); - for (var groups = this._groups, m2 = groups.length, j2 = 0; j2 < m2; ++j2) { - for (var group2 = groups[j2], n2 = group2.length, node2, i2 = 0; i2 < n2; ++i2) { + for (var groups = this._groups, m3 = groups.length, j3 = 0; j3 < m3; ++j3) { + for (var group2 = groups[j3], n2 = group2.length, node2, i2 = 0; i2 < n2; ++i2) { if (node2 = group2[i2]) { var inherit2 = get2(node2, id0); schedule_default(node2, name, id1, i2, group2, { @@ -26495,13 +26067,13 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/end.js function end_default() { - var on0, on1, that = this, id29 = that._id, size5 = that.size(); - return new Promise(function(resolve3, reject3) { + var on0, on1, that = this, id30 = that._id, size4 = that.size(); + return new Promise(function(resolve2, reject3) { var cancel = { value: reject3 }, end2 = { value: /* @__PURE__ */ __name(function() { - if (--size5 === 0) resolve3(); + if (--size4 === 0) resolve2(); }, "value") }; that.each(function() { - var schedule = set2(this, id29), on3 = schedule.on; + var schedule = set2(this, id30), on3 = schedule.on; if (on3 !== on0) { on1 = (on0 = on3).copy(); on1._.cancel.push(cancel); @@ -26510,7 +26082,7 @@ var __esbuild_esm_mermaid = (() => { } schedule.on = on1; }); - if (size5 === 0) resolve3(); + if (size4 === 0) resolve2(); }); } var init_end = __esm({ @@ -26522,11 +26094,11 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/index.js - function Transition(groups, parents3, name, id29) { + function Transition(groups, parents3, name, id30) { this._groups = groups; this._parents = parents3; this._name = name; - this._id = id29; + this._id = id30; } function transition(name) { return selection_default().transition(name); @@ -26619,30 +26191,30 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/transition.js - function inherit(node2, id29) { + function inherit(node2, id30) { var timing; - while (!(timing = node2.__transition) || !(timing = timing[id29])) { + while (!(timing = node2.__transition) || !(timing = timing[id30])) { if (!(node2 = node2.parentNode)) { - throw new Error(`transition ${id29} not found`); + throw new Error(`transition ${id30} not found`); } } return timing; } function transition_default2(name) { - var id29, timing; + var id30, timing; if (name instanceof Transition) { - id29 = name._id, name = name._name; + id30 = name._id, name = name._name; } else { - id29 = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + ""; + id30 = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + ""; } - for (var groups = this._groups, m2 = groups.length, j2 = 0; j2 < m2; ++j2) { - for (var group2 = groups[j2], n2 = group2.length, node2, i2 = 0; i2 < n2; ++i2) { + for (var groups = this._groups, m3 = groups.length, j3 = 0; j3 < m3; ++j3) { + for (var group2 = groups[j3], n2 = group2.length, node2, i2 = 0; i2 < n2; ++i2) { if (node2 = group2[i2]) { - schedule_default(node2, name, id29, i2, group2, timing || inherit(node2, id29)); + schedule_default(node2, name, id30, i2, group2, timing || inherit(node2, id30)); } } } - return new Transition(groups, this._parents, name, id29); + return new Transition(groups, this._parents, name, id30); } var defaultTiming; var init_transition3 = __esm({ @@ -26739,8 +26311,8 @@ var __esbuild_esm_mermaid = (() => { Y = { name: "y", handles: ["n", "s"].map(type), - input: /* @__PURE__ */ __name(function(y5, e3) { - return y5 == null ? null : [[e3[0][0], +y5[0]], [e3[1][0], +y5[1]]]; + input: /* @__PURE__ */ __name(function(y6, e3) { + return y6 == null ? null : [[e3[0][0], +y6[0]], [e3[1][0], +y6[1]]]; }, "input"), output: /* @__PURE__ */ __name(function(xy) { return xy && [xy[0][1], xy[1][1]]; @@ -26776,10 +26348,10 @@ var __esbuild_esm_mermaid = (() => { } } function appendRound(digits) { - let d2 = Math.floor(digits); - if (!(d2 >= 0)) throw new Error(`invalid digits: ${digits}`); - if (d2 > 15) return append; - const k2 = 10 ** d2; + let d3 = Math.floor(digits); + if (!(d3 >= 0)) throw new Error(`invalid digits: ${digits}`); + if (d3 > 15) return append; + const k2 = 10 ** d3; return function(strings) { this._ += strings[0]; for (let i2 = 1, n2 = strings.length; i2 < n2; ++i2) { @@ -26810,8 +26382,8 @@ var __esbuild_esm_mermaid = (() => { this._ = ""; this._append = digits == null ? append : appendRound(digits); } - moveTo(x5, y5) { - this._append`M${this._x0 = this._x1 = +x5},${this._y0 = this._y1 = +y5}`; + moveTo(x5, y6) { + this._append`M${this._x0 = this._x1 = +x5},${this._y0 = this._y1 = +y6}`; } closePath() { if (this._x1 !== null) { @@ -26819,14 +26391,14 @@ var __esbuild_esm_mermaid = (() => { this._append`Z`; } } - lineTo(x5, y5) { - this._append`L${this._x1 = +x5},${this._y1 = +y5}`; + lineTo(x5, y6) { + this._append`L${this._x1 = +x5},${this._y1 = +y6}`; } - quadraticCurveTo(x1, y1, x5, y5) { - this._append`Q${+x1},${+y1},${this._x1 = +x5},${this._y1 = +y5}`; + quadraticCurveTo(x1, y1, x5, y6) { + this._append`Q${+x1},${+y1},${this._x1 = +x5},${this._y1 = +y6}`; } - bezierCurveTo(x1, y1, x22, y22, x5, y5) { - this._append`C${+x1},${+y1},${+x22},${+y22},${this._x1 = +x5},${this._y1 = +y5}`; + bezierCurveTo(x1, y1, x22, y22, x5, y6) { + this._append`C${+x1},${+y1},${+x22},${+y22},${this._x1 = +x5},${this._y1 = +y6}`; } arcTo(x1, y1, x22, y22, r2) { x1 = +x1, y1 = +y1, x22 = +x22, y22 = +y22, r2 = +r2; @@ -26838,17 +26410,17 @@ var __esbuild_esm_mermaid = (() => { else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon2) || !r2) { this._append`L${this._x1 = x1},${this._y1 = y1}`; } else { - let x20 = x22 - x0, y20 = y22 - y0, l21_2 = x21 * x21 + y21 * y21, l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), l2 = r2 * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l2 / l01, t21 = l2 / l21; + let x20 = x22 - x0, y20 = y22 - y0, l21_2 = x21 * x21 + y21 * y21, l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), l4 = r2 * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l4 / l01, t21 = l4 / l21; if (Math.abs(t01 - 1) > epsilon2) { this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`; } this._append`A${r2},${r2},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`; } } - arc(x5, y5, r2, a0, a1, ccw) { - x5 = +x5, y5 = +y5, r2 = +r2, ccw = !!ccw; + arc(x5, y6, r2, a0, a1, ccw) { + x5 = +x5, y6 = +y6, r2 = +r2, ccw = !!ccw; if (r2 < 0) throw new Error(`negative radius: ${r2}`); - let dx = r2 * Math.cos(a0), dy = r2 * Math.sin(a0), x0 = x5 + dx, y0 = y5 + dy, cw = 1 ^ ccw, da = ccw ? a0 - a1 : a1 - a0; + let dx = r2 * Math.cos(a0), dy = r2 * Math.sin(a0), x0 = x5 + dx, y0 = y6 + dy, cw = 1 ^ ccw, da = ccw ? a0 - a1 : a1 - a0; if (this._x1 === null) { this._append`M${x0},${y0}`; } else if (Math.abs(this._x1 - x0) > epsilon2 || Math.abs(this._y1 - y0) > epsilon2) { @@ -26857,13 +26429,13 @@ var __esbuild_esm_mermaid = (() => { if (!r2) return; if (da < 0) da = da % tau + tau; if (da > tauEpsilon) { - this._append`A${r2},${r2},0,1,${cw},${x5 - dx},${y5 - dy}A${r2},${r2},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`; + this._append`A${r2},${r2},0,1,${cw},${x5 - dx},${y6 - dy}A${r2},${r2},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`; } else if (da > epsilon2) { - this._append`A${r2},${r2},0,${+(da >= pi)},${cw},${this._x1 = x5 + r2 * Math.cos(a1)},${this._y1 = y5 + r2 * Math.sin(a1)}`; + this._append`A${r2},${r2},0,${+(da >= pi)},${cw},${this._x1 = x5 + r2 * Math.cos(a1)},${this._y1 = y6 + r2 * Math.sin(a1)}`; } } - rect(x5, y5, w3, h2) { - this._append`M${this._x0 = this._x1 = +x5},${this._y0 = this._y1 = +y5}h${w3 = +w3}v${+h2}h${-w3}Z`; + rect(x5, y6, w4, h3) { + this._append`M${this._x0 = this._x1 = +x5},${this._y0 = this._y1 = +y6}h${w4 = +w4}v${+h3}h${-w4}Z`; } toString() { return this._; @@ -26966,12 +26538,12 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatGroup.js function formatGroup_default(grouping, thousands) { return function(value2, width3) { - var i2 = value2.length, t4 = [], j2 = 0, g2 = grouping[0], length2 = 0; + var i2 = value2.length, t4 = [], j3 = 0, g2 = grouping[0], length2 = 0; while (i2 > 0 && g2 > 0) { if (length2 + g2 + 1 > width3) g2 = Math.max(1, width3 - length2); t4.push(value2.substring(i2 -= g2, i2 + g2)); if ((length2 += g2 + 1) > width3) break; - g2 = grouping[j2 = (j2 + 1) % grouping.length]; + g2 = grouping[j3 = (j3 + 1) % grouping.length]; } return t4.reverse().join(thousands); }; @@ -27069,9 +26641,9 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatPrefixAuto.js function formatPrefixAuto_default(x5, p3) { - var d2 = formatDecimalParts(x5, p3); - if (!d2) return x5 + ""; - var coefficient = d2[0], exponent = d2[1], i2 = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, n2 = coefficient.length; + var d3 = formatDecimalParts(x5, p3); + if (!d3) return x5 + ""; + var coefficient = d3[0], exponent = d3[1], i2 = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, n2 = coefficient.length; return i2 === n2 ? coefficient : i2 > n2 ? coefficient + new Array(i2 - n2 + 1).join("0") : i2 > 0 ? coefficient.slice(0, i2) + "." + coefficient.slice(i2) : "0." + new Array(1 - i2).join("0") + formatDecimalParts(x5, Math.max(0, p3 + i2 - 1))[0]; } var prefixExponent; @@ -27085,9 +26657,9 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatRounded.js function formatRounded_default(x5, p3) { - var d2 = formatDecimalParts(x5, p3); - if (!d2) return x5 + ""; - var coefficient = d2[0], exponent = d2[1]; + var d3 = formatDecimalParts(x5, p3); + if (!d3) return x5 + ""; + var coefficient = d3[0], exponent = d3[1]; return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join("0"); } var init_formatRounded = __esm({ @@ -27304,10 +26876,539 @@ var __esbuild_esm_mermaid = (() => { } }); + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/count.js + function count(node2) { + var sum2 = 0, children2 = node2.children, i2 = children2 && children2.length; + if (!i2) sum2 = 1; + else while (--i2 >= 0) sum2 += children2[i2].value; + node2.value = sum2; + } + function count_default() { + return this.eachAfter(count); + } + var init_count = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/count.js"() { + "use strict"; + __name(count, "count"); + __name(count_default, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/each.js + function each_default2(callback, that) { + let index = -1; + for (const node2 of this) { + callback.call(that, node2, ++index, this); + } + return this; + } + var init_each2 = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/each.js"() { + "use strict"; + __name(each_default2, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js + function eachBefore_default(callback, that) { + var node2 = this, nodes5 = [node2], children2, i2, index = -1; + while (node2 = nodes5.pop()) { + callback.call(that, node2, ++index, this); + if (children2 = node2.children) { + for (i2 = children2.length - 1; i2 >= 0; --i2) { + nodes5.push(children2[i2]); + } + } + } + return this; + } + var init_eachBefore = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js"() { + "use strict"; + __name(eachBefore_default, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js + function eachAfter_default(callback, that) { + var node2 = this, nodes5 = [node2], next3 = [], children2, i2, n2, index = -1; + while (node2 = nodes5.pop()) { + next3.push(node2); + if (children2 = node2.children) { + for (i2 = 0, n2 = children2.length; i2 < n2; ++i2) { + nodes5.push(children2[i2]); + } + } + } + while (node2 = next3.pop()) { + callback.call(that, node2, ++index, this); + } + return this; + } + var init_eachAfter = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js"() { + "use strict"; + __name(eachAfter_default, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/find.js + function find_default(callback, that) { + let index = -1; + for (const node2 of this) { + if (callback.call(that, node2, ++index, this)) { + return node2; + } + } + } + var init_find = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/find.js"() { + "use strict"; + __name(find_default, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/sum.js + function sum_default(value2) { + return this.eachAfter(function(node2) { + var sum2 = +value2(node2.data) || 0, children2 = node2.children, i2 = children2 && children2.length; + while (--i2 >= 0) sum2 += children2[i2].value; + node2.value = sum2; + }); + } + var init_sum = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/sum.js"() { + "use strict"; + __name(sum_default, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/sort.js + function sort_default2(compare) { + return this.eachBefore(function(node2) { + if (node2.children) { + node2.children.sort(compare); + } + }); + } + var init_sort2 = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/sort.js"() { + "use strict"; + __name(sort_default2, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/path.js + function path_default(end2) { + var start3 = this, ancestor = leastCommonAncestor(start3, end2), nodes5 = [start3]; + while (start3 !== ancestor) { + start3 = start3.parent; + nodes5.push(start3); + } + var k2 = nodes5.length; + while (end2 !== ancestor) { + nodes5.splice(k2, 0, end2); + end2 = end2.parent; + } + return nodes5; + } + function leastCommonAncestor(a2, b3) { + if (a2 === b3) return a2; + var aNodes = a2.ancestors(), bNodes = b3.ancestors(), c3 = null; + a2 = aNodes.pop(); + b3 = bNodes.pop(); + while (a2 === b3) { + c3 = a2; + a2 = aNodes.pop(); + b3 = bNodes.pop(); + } + return c3; + } + var init_path2 = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/path.js"() { + "use strict"; + __name(path_default, "default"); + __name(leastCommonAncestor, "leastCommonAncestor"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/ancestors.js + function ancestors_default() { + var node2 = this, nodes5 = [node2]; + while (node2 = node2.parent) { + nodes5.push(node2); + } + return nodes5; + } + var init_ancestors = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/ancestors.js"() { + "use strict"; + __name(ancestors_default, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/descendants.js + function descendants_default() { + return Array.from(this); + } + var init_descendants = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/descendants.js"() { + "use strict"; + __name(descendants_default, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/leaves.js + function leaves_default() { + var leaves = []; + this.eachBefore(function(node2) { + if (!node2.children) { + leaves.push(node2); + } + }); + return leaves; + } + var init_leaves = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/leaves.js"() { + "use strict"; + __name(leaves_default, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/links.js + function links_default() { + var root3 = this, links3 = []; + root3.each(function(node2) { + if (node2 !== root3) { + links3.push({ source: node2.parent, target: node2 }); + } + }); + return links3; + } + var init_links = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/links.js"() { + "use strict"; + __name(links_default, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/iterator.js + function* iterator_default2() { + var node2 = this, current, next3 = [node2], children2, i2, n2; + do { + current = next3.reverse(), next3 = []; + while (node2 = current.pop()) { + yield node2; + if (children2 = node2.children) { + for (i2 = 0, n2 = children2.length; i2 < n2; ++i2) { + next3.push(children2[i2]); + } + } + } + } while (next3.length); + } + var init_iterator2 = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/iterator.js"() { + "use strict"; + __name(iterator_default2, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/index.js + function hierarchy(data5, children2) { + if (data5 instanceof Map) { + data5 = [void 0, data5]; + if (children2 === void 0) children2 = mapChildren; + } else if (children2 === void 0) { + children2 = objectChildren; + } + var root3 = new Node(data5), node2, nodes5 = [root3], child, childs, i2, n2; + while (node2 = nodes5.pop()) { + if ((childs = children2(node2.data)) && (n2 = (childs = Array.from(childs)).length)) { + node2.children = childs; + for (i2 = n2 - 1; i2 >= 0; --i2) { + nodes5.push(child = childs[i2] = new Node(childs[i2])); + child.parent = node2; + child.depth = node2.depth + 1; + } + } + } + return root3.eachBefore(computeHeight); + } + function node_copy() { + return hierarchy(this).eachBefore(copyData); + } + function objectChildren(d3) { + return d3.children; + } + function mapChildren(d3) { + return Array.isArray(d3) ? d3[1] : null; + } + function copyData(node2) { + if (node2.data.value !== void 0) node2.value = node2.data.value; + node2.data = node2.data.data; + } + function computeHeight(node2) { + var height2 = 0; + do + node2.height = height2; + while ((node2 = node2.parent) && node2.height < ++height2); + } + function Node(data5) { + this.data = data5; + this.depth = this.height = 0; + this.parent = null; + } + var init_hierarchy = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/index.js"() { + "use strict"; + init_count(); + init_each2(); + init_eachBefore(); + init_eachAfter(); + init_find(); + init_sum(); + init_sort2(); + init_path2(); + init_ancestors(); + init_descendants(); + init_leaves(); + init_links(); + init_iterator2(); + __name(hierarchy, "hierarchy"); + __name(node_copy, "node_copy"); + __name(objectChildren, "objectChildren"); + __name(mapChildren, "mapChildren"); + __name(copyData, "copyData"); + __name(computeHeight, "computeHeight"); + __name(Node, "Node"); + Node.prototype = hierarchy.prototype = { + constructor: Node, + count: count_default, + each: each_default2, + eachAfter: eachAfter_default, + eachBefore: eachBefore_default, + find: find_default, + sum: sum_default, + sort: sort_default2, + path: path_default, + ancestors: ancestors_default, + descendants: descendants_default, + leaves: leaves_default, + links: links_default, + copy: node_copy, + [Symbol.iterator]: iterator_default2 + }; + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/accessors.js + function required(f2) { + if (typeof f2 !== "function") throw new Error(); + return f2; + } + var init_accessors = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/accessors.js"() { + "use strict"; + __name(required, "required"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/constant.js + function constantZero() { + return 0; + } + function constant_default4(x5) { + return function() { + return x5; + }; + } + var init_constant4 = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/constant.js"() { + "use strict"; + __name(constantZero, "constantZero"); + __name(constant_default4, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/round.js + function round_default2(node2) { + node2.x0 = Math.round(node2.x0); + node2.y0 = Math.round(node2.y0); + node2.x1 = Math.round(node2.x1); + node2.y1 = Math.round(node2.y1); + } + var init_round2 = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/round.js"() { + "use strict"; + __name(round_default2, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/dice.js + function dice_default(parent4, x0, y0, x1, y1) { + var nodes5 = parent4.children, node2, i2 = -1, n2 = nodes5.length, k2 = parent4.value && (x1 - x0) / parent4.value; + while (++i2 < n2) { + node2 = nodes5[i2], node2.y0 = y0, node2.y1 = y1; + node2.x0 = x0, node2.x1 = x0 += node2.value * k2; + } + } + var init_dice = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/dice.js"() { + "use strict"; + __name(dice_default, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/slice.js + function slice_default(parent4, x0, y0, x1, y1) { + var nodes5 = parent4.children, node2, i2 = -1, n2 = nodes5.length, k2 = parent4.value && (y1 - y0) / parent4.value; + while (++i2 < n2) { + node2 = nodes5[i2], node2.x0 = x0, node2.x1 = x1; + node2.y0 = y0, node2.y1 = y0 += node2.value * k2; + } + } + var init_slice = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/slice.js"() { + "use strict"; + __name(slice_default, "default"); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/squarify.js + function squarifyRatio(ratio, parent4, x0, y0, x1, y1) { + var rows = [], nodes5 = parent4.children, row, nodeValue, i0 = 0, i1 = 0, n2 = nodes5.length, dx, dy, value2 = parent4.value, sumValue, minValue, maxValue, newRatio, minRatio, alpha, beta; + while (i0 < n2) { + dx = x1 - x0, dy = y1 - y0; + do + sumValue = nodes5[i1++].value; + while (!sumValue && i1 < n2); + minValue = maxValue = sumValue; + alpha = Math.max(dy / dx, dx / dy) / (value2 * ratio); + beta = sumValue * sumValue * alpha; + minRatio = Math.max(maxValue / beta, beta / minValue); + for (; i1 < n2; ++i1) { + sumValue += nodeValue = nodes5[i1].value; + if (nodeValue < minValue) minValue = nodeValue; + if (nodeValue > maxValue) maxValue = nodeValue; + beta = sumValue * sumValue * alpha; + newRatio = Math.max(maxValue / beta, beta / minValue); + if (newRatio > minRatio) { + sumValue -= nodeValue; + break; + } + minRatio = newRatio; + } + rows.push(row = { value: sumValue, dice: dx < dy, children: nodes5.slice(i0, i1) }); + if (row.dice) dice_default(row, x0, y0, x1, value2 ? y0 += dy * sumValue / value2 : y1); + else slice_default(row, x0, y0, value2 ? x0 += dx * sumValue / value2 : x1, y1); + value2 -= sumValue, i0 = i1; + } + return rows; + } + var phi, squarify_default; + var init_squarify = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/squarify.js"() { + "use strict"; + init_dice(); + init_slice(); + phi = (1 + Math.sqrt(5)) / 2; + __name(squarifyRatio, "squarifyRatio"); + squarify_default = (/* @__PURE__ */ __name((function custom(ratio) { + function squarify(parent4, x0, y0, x1, y1) { + squarifyRatio(ratio, parent4, x0, y0, x1, y1); + } + __name(squarify, "squarify"); + squarify.ratio = function(x5) { + return custom((x5 = +x5) > 1 ? x5 : 1); + }; + return squarify; + }), "custom"))(phi); + } + }); + + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/index.js + function treemap_default() { + var tile = squarify_default, round = false, dx = 1, dy = 1, paddingStack = [0], paddingInner = constantZero, paddingTop = constantZero, paddingRight = constantZero, paddingBottom = constantZero, paddingLeft = constantZero; + function treemap2(root3) { + root3.x0 = root3.y0 = 0; + root3.x1 = dx; + root3.y1 = dy; + root3.eachBefore(positionNode3); + paddingStack = [0]; + if (round) root3.eachBefore(round_default2); + return root3; + } + __name(treemap2, "treemap"); + function positionNode3(node2) { + var p3 = paddingStack[node2.depth], x0 = node2.x0 + p3, y0 = node2.y0 + p3, x1 = node2.x1 - p3, y1 = node2.y1 - p3; + if (x1 < x0) x0 = x1 = (x0 + x1) / 2; + if (y1 < y0) y0 = y1 = (y0 + y1) / 2; + node2.x0 = x0; + node2.y0 = y0; + node2.x1 = x1; + node2.y1 = y1; + if (node2.children) { + p3 = paddingStack[node2.depth + 1] = paddingInner(node2) / 2; + x0 += paddingLeft(node2) - p3; + y0 += paddingTop(node2) - p3; + x1 -= paddingRight(node2) - p3; + y1 -= paddingBottom(node2) - p3; + if (x1 < x0) x0 = x1 = (x0 + x1) / 2; + if (y1 < y0) y0 = y1 = (y0 + y1) / 2; + tile(node2, x0, y0, x1, y1); + } + } + __name(positionNode3, "positionNode"); + treemap2.round = function(x5) { + return arguments.length ? (round = !!x5, treemap2) : round; + }; + treemap2.size = function(x5) { + return arguments.length ? (dx = +x5[0], dy = +x5[1], treemap2) : [dx, dy]; + }; + treemap2.tile = function(x5) { + return arguments.length ? (tile = required(x5), treemap2) : tile; + }; + treemap2.padding = function(x5) { + return arguments.length ? treemap2.paddingInner(x5).paddingOuter(x5) : treemap2.paddingInner(); + }; + treemap2.paddingInner = function(x5) { + return arguments.length ? (paddingInner = typeof x5 === "function" ? x5 : constant_default4(+x5), treemap2) : paddingInner; + }; + treemap2.paddingOuter = function(x5) { + return arguments.length ? treemap2.paddingTop(x5).paddingRight(x5).paddingBottom(x5).paddingLeft(x5) : treemap2.paddingTop(); + }; + treemap2.paddingTop = function(x5) { + return arguments.length ? (paddingTop = typeof x5 === "function" ? x5 : constant_default4(+x5), treemap2) : paddingTop; + }; + treemap2.paddingRight = function(x5) { + return arguments.length ? (paddingRight = typeof x5 === "function" ? x5 : constant_default4(+x5), treemap2) : paddingRight; + }; + treemap2.paddingBottom = function(x5) { + return arguments.length ? (paddingBottom = typeof x5 === "function" ? x5 : constant_default4(+x5), treemap2) : paddingBottom; + }; + treemap2.paddingLeft = function(x5) { + return arguments.length ? (paddingLeft = typeof x5 === "function" ? x5 : constant_default4(+x5), treemap2) : paddingLeft; + }; + return treemap2; + } + var init_treemap = __esm({ + "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/index.js"() { + "use strict"; + init_round2(); + init_squarify(); + init_accessors(); + init_constant4(); + __name(treemap_default, "default"); + } + }); + // ../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/index.js var init_src23 = __esm({ "../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/index.js"() { "use strict"; + init_hierarchy(); + init_treemap(); } }); @@ -27349,29 +27450,29 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/ordinal.js function ordinal() { var index = new InternMap(), domain = [], range3 = [], unknown = implicit; - function scale2(d2) { - let i2 = index.get(d2); + function scale2(d3) { + let i2 = index.get(d3); if (i2 === void 0) { if (unknown !== implicit) return unknown; - index.set(d2, i2 = domain.push(d2) - 1); + index.set(d3, i2 = domain.push(d3) - 1); } return range3[i2 % range3.length]; } __name(scale2, "scale"); - scale2.domain = function(_2) { + scale2.domain = function(_3) { if (!arguments.length) return domain.slice(); domain = [], index = new InternMap(); - for (const value2 of _2) { + for (const value2 of _3) { if (index.has(value2)) continue; index.set(value2, domain.push(value2) - 1); } return scale2; }; - scale2.range = function(_2) { - return arguments.length ? (range3 = Array.from(_2), scale2) : range3.slice(); + scale2.range = function(_3) { + return arguments.length ? (range3 = Array.from(_3), scale2) : range3.slice(); }; - scale2.unknown = function(_2) { - return arguments.length ? (unknown = _2, scale2) : unknown; + scale2.unknown = function(_3) { + return arguments.length ? (unknown = _3, scale2) : unknown; }; scale2.copy = function() { return ordinal(domain, range3).unknown(unknown); @@ -27407,14 +27508,14 @@ var __esbuild_esm_mermaid = (() => { return ordinalRange(reverse2 ? values2.reverse() : values2); } __name(rescale, "rescale"); - scale2.domain = function(_2) { - return arguments.length ? (domain(_2), rescale()) : domain(); + scale2.domain = function(_3) { + return arguments.length ? (domain(_3), rescale()) : domain(); }; - scale2.range = function(_2) { - return arguments.length ? ([r0, r1] = _2, r0 = +r0, r1 = +r1, rescale()) : [r0, r1]; + scale2.range = function(_3) { + return arguments.length ? ([r0, r1] = _3, r0 = +r0, r1 = +r1, rescale()) : [r0, r1]; }; - scale2.rangeRound = function(_2) { - return [r0, r1] = _2, r0 = +r0, r1 = +r1, round = true, rescale(); + scale2.rangeRound = function(_3) { + return [r0, r1] = _3, r0 = +r0, r1 = +r1, round = true, rescale(); }; scale2.bandwidth = function() { return bandwidth; @@ -27422,20 +27523,20 @@ var __esbuild_esm_mermaid = (() => { scale2.step = function() { return step3; }; - scale2.round = function(_2) { - return arguments.length ? (round = !!_2, rescale()) : round; + scale2.round = function(_3) { + return arguments.length ? (round = !!_3, rescale()) : round; }; - scale2.padding = function(_2) { - return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_2), rescale()) : paddingInner; + scale2.padding = function(_3) { + return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_3), rescale()) : paddingInner; }; - scale2.paddingInner = function(_2) { - return arguments.length ? (paddingInner = Math.min(1, _2), rescale()) : paddingInner; + scale2.paddingInner = function(_3) { + return arguments.length ? (paddingInner = Math.min(1, _3), rescale()) : paddingInner; }; - scale2.paddingOuter = function(_2) { - return arguments.length ? (paddingOuter = +_2, rescale()) : paddingOuter; + scale2.paddingOuter = function(_3) { + return arguments.length ? (paddingOuter = +_3, rescale()) : paddingOuter; }; - scale2.align = function(_2) { - return arguments.length ? (align = Math.max(0, Math.min(1, _2)), rescale()) : align; + scale2.align = function(_3) { + return arguments.length ? (align = Math.max(0, Math.min(1, _3)), rescale()) : align; }; scale2.copy = function() { return band(domain(), [r0, r1]).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align); @@ -27458,7 +27559,7 @@ var __esbuild_esm_mermaid = (() => { return x5; }; } - var init_constant4 = __esm({ + var init_constant5 = __esm({ "../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/constant.js"() { "use strict"; __name(constants, "constants"); @@ -27480,16 +27581,16 @@ var __esbuild_esm_mermaid = (() => { function identity2(x5) { return x5; } - function normalize(a2, b2) { - return (b2 -= a2 = +a2) ? function(x5) { - return (x5 - a2) / b2; - } : constants(isNaN(b2) ? NaN : 0.5); + function normalize(a2, b3) { + return (b3 -= a2 = +a2) ? function(x5) { + return (x5 - a2) / b3; + } : constants(isNaN(b3) ? NaN : 0.5); } - function clamper(a2, b2) { + function clamper(a2, b3) { var t4; - if (a2 > b2) t4 = a2, a2 = b2, b2 = t4; + if (a2 > b3) t4 = a2, a2 = b3, b3 = t4; return function(x5) { - return Math.max(a2, Math.min(b2, x5)); + return Math.max(a2, Math.min(b3, x5)); }; } function bimap(domain, range3, interpolate) { @@ -27501,18 +27602,18 @@ var __esbuild_esm_mermaid = (() => { }; } function polymap(domain, range3, interpolate) { - var j2 = Math.min(domain.length, range3.length) - 1, d2 = new Array(j2), r2 = new Array(j2), i2 = -1; - if (domain[j2] < domain[0]) { + var j3 = Math.min(domain.length, range3.length) - 1, d3 = new Array(j3), r2 = new Array(j3), i2 = -1; + if (domain[j3] < domain[0]) { domain = domain.slice().reverse(); range3 = range3.slice().reverse(); } - while (++i2 < j2) { - d2[i2] = normalize(domain[i2], domain[i2 + 1]); + while (++i2 < j3) { + d3[i2] = normalize(domain[i2], domain[i2 + 1]); r2[i2] = interpolate(range3[i2], range3[i2 + 1]); } return function(x5) { - var i3 = bisect_default(domain, x5, 1, j2) - 1; - return r2[i3](d2[i3](x5)); + var i3 = bisect_default(domain, x5, 1, j3) - 1; + return r2[i3](d3[i3](x5)); }; } function copy(source, target) { @@ -27532,26 +27633,26 @@ var __esbuild_esm_mermaid = (() => { return x5 == null || isNaN(x5 = +x5) ? unknown : (output2 || (output2 = piecewise(domain.map(transform8), range3, interpolate)))(transform8(clamp(x5))); } __name(scale2, "scale"); - scale2.invert = function(y5) { - return clamp(untransform((input || (input = piecewise(range3, domain.map(transform8), number_default)))(y5))); + scale2.invert = function(y6) { + return clamp(untransform((input || (input = piecewise(range3, domain.map(transform8), number_default)))(y6))); }; - scale2.domain = function(_2) { - return arguments.length ? (domain = Array.from(_2, number3), rescale()) : domain.slice(); + scale2.domain = function(_3) { + return arguments.length ? (domain = Array.from(_3, number3), rescale()) : domain.slice(); }; - scale2.range = function(_2) { - return arguments.length ? (range3 = Array.from(_2), rescale()) : range3.slice(); + scale2.range = function(_3) { + return arguments.length ? (range3 = Array.from(_3), rescale()) : range3.slice(); }; - scale2.rangeRound = function(_2) { - return range3 = Array.from(_2), interpolate = round_default, rescale(); + scale2.rangeRound = function(_3) { + return range3 = Array.from(_3), interpolate = round_default, rescale(); }; - scale2.clamp = function(_2) { - return arguments.length ? (clamp = _2 ? true : identity2, rescale()) : clamp !== identity2; + scale2.clamp = function(_3) { + return arguments.length ? (clamp = _3 ? true : identity2, rescale()) : clamp !== identity2; }; - scale2.interpolate = function(_2) { - return arguments.length ? (interpolate = _2, rescale()) : interpolate; + scale2.interpolate = function(_3) { + return arguments.length ? (interpolate = _3, rescale()) : interpolate; }; - scale2.unknown = function(_2) { - return arguments.length ? (unknown = _2, scale2) : unknown; + scale2.unknown = function(_3) { + return arguments.length ? (unknown = _3, scale2) : unknown; }; return function(t4, u2) { transform8 = t4, untransform = u2; @@ -27567,7 +27668,7 @@ var __esbuild_esm_mermaid = (() => { "use strict"; init_src2(); init_src8(); - init_constant4(); + init_constant5(); init_number3(); unit = [0, 1]; __name(identity2, "identity"); @@ -27582,8 +27683,8 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/tickFormat.js - function tickFormat(start3, stop5, count, specifier) { - var step3 = tickStep(start3, stop5, count), precision; + function tickFormat(start3, stop5, count2, specifier) { + var step3 = tickStep(start3, stop5, count2), precision; specifier = formatSpecifier(specifier == null ? ",f" : specifier); switch (specifier.type) { case "s": { @@ -27619,21 +27720,21 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/linear.js function linearish(scale2) { var domain = scale2.domain; - scale2.ticks = function(count) { - var d2 = domain(); - return ticks(d2[0], d2[d2.length - 1], count == null ? 10 : count); + scale2.ticks = function(count2) { + var d3 = domain(); + return ticks(d3[0], d3[d3.length - 1], count2 == null ? 10 : count2); }; - scale2.tickFormat = function(count, specifier) { - var d2 = domain(); - return tickFormat(d2[0], d2[d2.length - 1], count == null ? 10 : count, specifier); + scale2.tickFormat = function(count2, specifier) { + var d3 = domain(); + return tickFormat(d3[0], d3[d3.length - 1], count2 == null ? 10 : count2, specifier); }; - scale2.nice = function(count) { - if (count == null) count = 10; - var d2 = domain(); + scale2.nice = function(count2) { + if (count2 == null) count2 = 10; + var d3 = domain(); var i0 = 0; - var i1 = d2.length - 1; - var start3 = d2[i0]; - var stop5 = d2[i1]; + var i1 = d3.length - 1; + var start3 = d3[i0]; + var stop5 = d3[i1]; var prestep; var step3; var maxIter = 10; @@ -27642,11 +27743,11 @@ var __esbuild_esm_mermaid = (() => { step3 = i0, i0 = i1, i1 = step3; } while (maxIter-- > 0) { - step3 = tickIncrement(start3, stop5, count); + step3 = tickIncrement(start3, stop5, count2); if (step3 === prestep) { - d2[i0] = start3; - d2[i1] = stop5; - return domain(d2); + d3[i0] = start3; + d3[i1] = stop5; + return domain(d3); } else if (step3 > 0) { start3 = Math.floor(start3 / step3) * step3; stop5 = Math.ceil(stop5 / step3) * step3; @@ -27702,7 +27803,7 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/interval.js - function timeInterval(floori, offseti, count, field) { + function timeInterval(floori, offseti, count2, field) { function interval2(date2) { return floori(date2 = arguments.length === 0 ? /* @__PURE__ */ new Date() : /* @__PURE__ */ new Date(+date2)), date2; } @@ -27747,15 +27848,15 @@ var __esbuild_esm_mermaid = (() => { } }); }; - if (count) { + if (count2) { interval2.count = (start3, end2) => { t02.setTime(+start3), t12.setTime(+end2); floori(t02), floori(t12); - return Math.floor(count(t02, t12)); + return Math.floor(count2(t02, t12)); }; interval2.every = (step3) => { step3 = Math.floor(step3); - return !isFinite(step3) || !(step3 > 0) ? null : !(step3 > 1) ? interval2 : interval2.filter(field ? (d2) => field(d2) % step3 === 0 : (d2) => interval2.count(0, d2) % step3 === 0); + return !isFinite(step3) || !(step3 > 0) ? null : !(step3 > 1) ? interval2 : interval2.filter(field ? (d3) => field(d3) % step3 === 0 : (d3) => interval2.count(0, d3) % step3 === 0); }; } return interval2; @@ -28092,19 +28193,19 @@ var __esbuild_esm_mermaid = (() => { [month, 3, 3 * durationMonth], [year, 1, durationYear] ]; - function ticks2(start3, stop5, count) { + function ticks2(start3, stop5, count2) { const reverse2 = stop5 < start3; if (reverse2) [start3, stop5] = [stop5, start3]; - const interval2 = count && typeof count.range === "function" ? count : tickInterval2(start3, stop5, count); + const interval2 = count2 && typeof count2.range === "function" ? count2 : tickInterval2(start3, stop5, count2); const ticks3 = interval2 ? interval2.range(start3, +stop5 + 1) : []; return reverse2 ? ticks3.reverse() : ticks3; } __name(ticks2, "ticks"); - function tickInterval2(start3, stop5, count) { - const target = Math.abs(stop5 - start3) / count; + function tickInterval2(start3, stop5, count2) { + const target = Math.abs(stop5 - start3) / count2; const i2 = bisector(([, , step4]) => step4).right(tickIntervals, target); - if (i2 === tickIntervals.length) return year.every(tickStep(start3 / durationYear, stop5 / durationYear, count)); - if (i2 === 0) return millisecond.every(Math.max(tickStep(start3, stop5, count), 1)); + if (i2 === tickIntervals.length) return year.every(tickStep(start3 / durationYear, stop5 / durationYear, count2)); + if (i2 === 0) return millisecond.every(Math.max(tickStep(start3, stop5, count2), 1)); const [t4, step3] = tickIntervals[target / tickIntervals[i2 - 1][2] < tickIntervals[i2][2] / target ? i2 - 1 : i2]; return t4.every(step3); } @@ -28148,24 +28249,24 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-time-format@4.1.0/node_modules/d3-time-format/src/locale.js - function localDate(d2) { - if (0 <= d2.y && d2.y < 100) { - var date2 = new Date(-1, d2.m, d2.d, d2.H, d2.M, d2.S, d2.L); - date2.setFullYear(d2.y); + function localDate(d3) { + if (0 <= d3.y && d3.y < 100) { + var date2 = new Date(-1, d3.m, d3.d, d3.H, d3.M, d3.S, d3.L); + date2.setFullYear(d3.y); return date2; } - return new Date(d2.y, d2.m, d2.d, d2.H, d2.M, d2.S, d2.L); + return new Date(d3.y, d3.m, d3.d, d3.H, d3.M, d3.S, d3.L); } - function utcDate(d2) { - if (0 <= d2.y && d2.y < 100) { - var date2 = new Date(Date.UTC(-1, d2.m, d2.d, d2.H, d2.M, d2.S, d2.L)); - date2.setUTCFullYear(d2.y); + function utcDate(d3) { + if (0 <= d3.y && d3.y < 100) { + var date2 = new Date(Date.UTC(-1, d3.m, d3.d, d3.H, d3.M, d3.S, d3.L)); + date2.setUTCFullYear(d3.y); return date2; } - return new Date(Date.UTC(d2.y, d2.m, d2.d, d2.H, d2.M, d2.S, d2.L)); + return new Date(Date.UTC(d3.y, d3.m, d3.d, d3.H, d3.M, d3.S, d3.L)); } - function newDate(y5, m2, d2) { - return { y: y5, m: m2, d: d2, H: 0, M: 0, S: 0, L: 0 }; + function newDate(y6, m3, d3) { + return { y: y6, m: m3, d: d3, H: 0, M: 0, S: 0, L: 0 }; } function formatLocale(locale3) { var locale_dateTime = locale3.dateTime, locale_date = locale3.date, locale_time = locale3.time, locale_periods = locale3.periods, locale_weekdays = locale3.days, locale_shortWeekdays = locale3.shortDays, locale_months = locale3.months, locale_shortMonths = locale3.shortMonths; @@ -28280,164 +28381,164 @@ var __esbuild_esm_mermaid = (() => { utcFormats.c = newFormat(locale_dateTime, utcFormats); function newFormat(specifier, formats2) { return function(date2) { - var string3 = [], i2 = -1, j2 = 0, n2 = specifier.length, c3, pad3, format3; + var string3 = [], i2 = -1, j3 = 0, n2 = specifier.length, c3, pad3, format3; if (!(date2 instanceof Date)) date2 = /* @__PURE__ */ new Date(+date2); while (++i2 < n2) { if (specifier.charCodeAt(i2) === 37) { - string3.push(specifier.slice(j2, i2)); + string3.push(specifier.slice(j3, i2)); if ((pad3 = pads[c3 = specifier.charAt(++i2)]) != null) c3 = specifier.charAt(++i2); else pad3 = c3 === "e" ? " " : "0"; if (format3 = formats2[c3]) c3 = format3(date2, pad3); string3.push(c3); - j2 = i2 + 1; + j3 = i2 + 1; } } - string3.push(specifier.slice(j2, i2)); + string3.push(specifier.slice(j3, i2)); return string3.join(""); }; } __name(newFormat, "newFormat"); function newParse(specifier, Z2) { return function(string3) { - var d2 = newDate(1900, void 0, 1), i2 = parseSpecifier(d2, specifier, string3 += "", 0), week, day; + var d3 = newDate(1900, void 0, 1), i2 = parseSpecifier(d3, specifier, string3 += "", 0), week, day; if (i2 != string3.length) return null; - if ("Q" in d2) return new Date(d2.Q); - if ("s" in d2) return new Date(d2.s * 1e3 + ("L" in d2 ? d2.L : 0)); - if (Z2 && !("Z" in d2)) d2.Z = 0; - if ("p" in d2) d2.H = d2.H % 12 + d2.p * 12; - if (d2.m === void 0) d2.m = "q" in d2 ? d2.q : 0; - if ("V" in d2) { - if (d2.V < 1 || d2.V > 53) return null; - if (!("w" in d2)) d2.w = 1; - if ("Z" in d2) { - week = utcDate(newDate(d2.y, 0, 1)), day = week.getUTCDay(); + if ("Q" in d3) return new Date(d3.Q); + if ("s" in d3) return new Date(d3.s * 1e3 + ("L" in d3 ? d3.L : 0)); + if (Z2 && !("Z" in d3)) d3.Z = 0; + if ("p" in d3) d3.H = d3.H % 12 + d3.p * 12; + if (d3.m === void 0) d3.m = "q" in d3 ? d3.q : 0; + if ("V" in d3) { + if (d3.V < 1 || d3.V > 53) return null; + if (!("w" in d3)) d3.w = 1; + if ("Z" in d3) { + week = utcDate(newDate(d3.y, 0, 1)), day = week.getUTCDay(); week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week); - week = utcDay.offset(week, (d2.V - 1) * 7); - d2.y = week.getUTCFullYear(); - d2.m = week.getUTCMonth(); - d2.d = week.getUTCDate() + (d2.w + 6) % 7; + week = utcDay.offset(week, (d3.V - 1) * 7); + d3.y = week.getUTCFullYear(); + d3.m = week.getUTCMonth(); + d3.d = week.getUTCDate() + (d3.w + 6) % 7; } else { - week = localDate(newDate(d2.y, 0, 1)), day = week.getDay(); + week = localDate(newDate(d3.y, 0, 1)), day = week.getDay(); week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week); - week = timeDay.offset(week, (d2.V - 1) * 7); - d2.y = week.getFullYear(); - d2.m = week.getMonth(); - d2.d = week.getDate() + (d2.w + 6) % 7; + week = timeDay.offset(week, (d3.V - 1) * 7); + d3.y = week.getFullYear(); + d3.m = week.getMonth(); + d3.d = week.getDate() + (d3.w + 6) % 7; } - } else if ("W" in d2 || "U" in d2) { - if (!("w" in d2)) d2.w = "u" in d2 ? d2.u % 7 : "W" in d2 ? 1 : 0; - day = "Z" in d2 ? utcDate(newDate(d2.y, 0, 1)).getUTCDay() : localDate(newDate(d2.y, 0, 1)).getDay(); - d2.m = 0; - d2.d = "W" in d2 ? (d2.w + 6) % 7 + d2.W * 7 - (day + 5) % 7 : d2.w + d2.U * 7 - (day + 6) % 7; + } else if ("W" in d3 || "U" in d3) { + if (!("w" in d3)) d3.w = "u" in d3 ? d3.u % 7 : "W" in d3 ? 1 : 0; + day = "Z" in d3 ? utcDate(newDate(d3.y, 0, 1)).getUTCDay() : localDate(newDate(d3.y, 0, 1)).getDay(); + d3.m = 0; + d3.d = "W" in d3 ? (d3.w + 6) % 7 + d3.W * 7 - (day + 5) % 7 : d3.w + d3.U * 7 - (day + 6) % 7; } - if ("Z" in d2) { - d2.H += d2.Z / 100 | 0; - d2.M += d2.Z % 100; - return utcDate(d2); + if ("Z" in d3) { + d3.H += d3.Z / 100 | 0; + d3.M += d3.Z % 100; + return utcDate(d3); } - return localDate(d2); + return localDate(d3); }; } __name(newParse, "newParse"); - function parseSpecifier(d2, specifier, string3, j2) { - var i2 = 0, n2 = specifier.length, m2 = string3.length, c3, parse7; + function parseSpecifier(d3, specifier, string3, j3) { + var i2 = 0, n2 = specifier.length, m3 = string3.length, c3, parse7; while (i2 < n2) { - if (j2 >= m2) return -1; + if (j3 >= m3) return -1; c3 = specifier.charCodeAt(i2++); if (c3 === 37) { c3 = specifier.charAt(i2++); parse7 = parses[c3 in pads ? specifier.charAt(i2++) : c3]; - if (!parse7 || (j2 = parse7(d2, string3, j2)) < 0) return -1; - } else if (c3 != string3.charCodeAt(j2++)) { + if (!parse7 || (j3 = parse7(d3, string3, j3)) < 0) return -1; + } else if (c3 != string3.charCodeAt(j3++)) { return -1; } } - return j2; + return j3; } __name(parseSpecifier, "parseSpecifier"); - function parsePeriod(d2, string3, i2) { + function parsePeriod(d3, string3, i2) { var n2 = periodRe.exec(string3.slice(i2)); - return n2 ? (d2.p = periodLookup.get(n2[0].toLowerCase()), i2 + n2[0].length) : -1; + return n2 ? (d3.p = periodLookup.get(n2[0].toLowerCase()), i2 + n2[0].length) : -1; } __name(parsePeriod, "parsePeriod"); - function parseShortWeekday(d2, string3, i2) { + function parseShortWeekday(d3, string3, i2) { var n2 = shortWeekdayRe.exec(string3.slice(i2)); - return n2 ? (d2.w = shortWeekdayLookup.get(n2[0].toLowerCase()), i2 + n2[0].length) : -1; + return n2 ? (d3.w = shortWeekdayLookup.get(n2[0].toLowerCase()), i2 + n2[0].length) : -1; } __name(parseShortWeekday, "parseShortWeekday"); - function parseWeekday(d2, string3, i2) { + function parseWeekday(d3, string3, i2) { var n2 = weekdayRe.exec(string3.slice(i2)); - return n2 ? (d2.w = weekdayLookup.get(n2[0].toLowerCase()), i2 + n2[0].length) : -1; + return n2 ? (d3.w = weekdayLookup.get(n2[0].toLowerCase()), i2 + n2[0].length) : -1; } __name(parseWeekday, "parseWeekday"); - function parseShortMonth(d2, string3, i2) { + function parseShortMonth(d3, string3, i2) { var n2 = shortMonthRe.exec(string3.slice(i2)); - return n2 ? (d2.m = shortMonthLookup.get(n2[0].toLowerCase()), i2 + n2[0].length) : -1; + return n2 ? (d3.m = shortMonthLookup.get(n2[0].toLowerCase()), i2 + n2[0].length) : -1; } __name(parseShortMonth, "parseShortMonth"); - function parseMonth(d2, string3, i2) { + function parseMonth(d3, string3, i2) { var n2 = monthRe.exec(string3.slice(i2)); - return n2 ? (d2.m = monthLookup.get(n2[0].toLowerCase()), i2 + n2[0].length) : -1; + return n2 ? (d3.m = monthLookup.get(n2[0].toLowerCase()), i2 + n2[0].length) : -1; } __name(parseMonth, "parseMonth"); - function parseLocaleDateTime(d2, string3, i2) { - return parseSpecifier(d2, locale_dateTime, string3, i2); + function parseLocaleDateTime(d3, string3, i2) { + return parseSpecifier(d3, locale_dateTime, string3, i2); } __name(parseLocaleDateTime, "parseLocaleDateTime"); - function parseLocaleDate(d2, string3, i2) { - return parseSpecifier(d2, locale_date, string3, i2); + function parseLocaleDate(d3, string3, i2) { + return parseSpecifier(d3, locale_date, string3, i2); } __name(parseLocaleDate, "parseLocaleDate"); - function parseLocaleTime(d2, string3, i2) { - return parseSpecifier(d2, locale_time, string3, i2); + function parseLocaleTime(d3, string3, i2) { + return parseSpecifier(d3, locale_time, string3, i2); } __name(parseLocaleTime, "parseLocaleTime"); - function formatShortWeekday(d2) { - return locale_shortWeekdays[d2.getDay()]; + function formatShortWeekday(d3) { + return locale_shortWeekdays[d3.getDay()]; } __name(formatShortWeekday, "formatShortWeekday"); - function formatWeekday(d2) { - return locale_weekdays[d2.getDay()]; + function formatWeekday(d3) { + return locale_weekdays[d3.getDay()]; } __name(formatWeekday, "formatWeekday"); - function formatShortMonth(d2) { - return locale_shortMonths[d2.getMonth()]; + function formatShortMonth(d3) { + return locale_shortMonths[d3.getMonth()]; } __name(formatShortMonth, "formatShortMonth"); - function formatMonth(d2) { - return locale_months[d2.getMonth()]; + function formatMonth(d3) { + return locale_months[d3.getMonth()]; } __name(formatMonth, "formatMonth"); - function formatPeriod(d2) { - return locale_periods[+(d2.getHours() >= 12)]; + function formatPeriod(d3) { + return locale_periods[+(d3.getHours() >= 12)]; } __name(formatPeriod, "formatPeriod"); - function formatQuarter(d2) { - return 1 + ~~(d2.getMonth() / 3); + function formatQuarter(d3) { + return 1 + ~~(d3.getMonth() / 3); } __name(formatQuarter, "formatQuarter"); - function formatUTCShortWeekday(d2) { - return locale_shortWeekdays[d2.getUTCDay()]; + function formatUTCShortWeekday(d3) { + return locale_shortWeekdays[d3.getUTCDay()]; } __name(formatUTCShortWeekday, "formatUTCShortWeekday"); - function formatUTCWeekday(d2) { - return locale_weekdays[d2.getUTCDay()]; + function formatUTCWeekday(d3) { + return locale_weekdays[d3.getUTCDay()]; } __name(formatUTCWeekday, "formatUTCWeekday"); - function formatUTCShortMonth(d2) { - return locale_shortMonths[d2.getUTCMonth()]; + function formatUTCShortMonth(d3) { + return locale_shortMonths[d3.getUTCMonth()]; } __name(formatUTCShortMonth, "formatUTCShortMonth"); - function formatUTCMonth(d2) { - return locale_months[d2.getUTCMonth()]; + function formatUTCMonth(d3) { + return locale_months[d3.getUTCMonth()]; } __name(formatUTCMonth, "formatUTCMonth"); - function formatUTCPeriod(d2) { - return locale_periods[+(d2.getUTCHours() >= 12)]; + function formatUTCPeriod(d3) { + return locale_periods[+(d3.getUTCHours() >= 12)]; } __name(formatUTCPeriod, "formatUTCPeriod"); - function formatUTCQuarter(d2) { - return 1 + ~~(d2.getUTCMonth() / 3); + function formatUTCQuarter(d3) { + return 1 + ~~(d3.getUTCMonth() / 3); } __name(formatUTCQuarter, "formatUTCQuarter"); return { @@ -28484,215 +28585,215 @@ var __esbuild_esm_mermaid = (() => { function formatLookup(names) { return new Map(names.map((name, i2) => [name.toLowerCase(), i2])); } - function parseWeekdayNumberSunday(d2, string3, i2) { + function parseWeekdayNumberSunday(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 1)); - return n2 ? (d2.w = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.w = +n2[0], i2 + n2[0].length) : -1; } - function parseWeekdayNumberMonday(d2, string3, i2) { + function parseWeekdayNumberMonday(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 1)); - return n2 ? (d2.u = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.u = +n2[0], i2 + n2[0].length) : -1; } - function parseWeekNumberSunday(d2, string3, i2) { + function parseWeekNumberSunday(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 2)); - return n2 ? (d2.U = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.U = +n2[0], i2 + n2[0].length) : -1; } - function parseWeekNumberISO(d2, string3, i2) { + function parseWeekNumberISO(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 2)); - return n2 ? (d2.V = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.V = +n2[0], i2 + n2[0].length) : -1; } - function parseWeekNumberMonday(d2, string3, i2) { + function parseWeekNumberMonday(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 2)); - return n2 ? (d2.W = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.W = +n2[0], i2 + n2[0].length) : -1; } - function parseFullYear(d2, string3, i2) { + function parseFullYear(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 4)); - return n2 ? (d2.y = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.y = +n2[0], i2 + n2[0].length) : -1; } - function parseYear(d2, string3, i2) { + function parseYear(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 2)); - return n2 ? (d2.y = +n2[0] + (+n2[0] > 68 ? 1900 : 2e3), i2 + n2[0].length) : -1; + return n2 ? (d3.y = +n2[0] + (+n2[0] > 68 ? 1900 : 2e3), i2 + n2[0].length) : -1; } - function parseZone(d2, string3, i2) { + function parseZone(d3, string3, i2) { var n2 = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string3.slice(i2, i2 + 6)); - return n2 ? (d2.Z = n2[1] ? 0 : -(n2[2] + (n2[3] || "00")), i2 + n2[0].length) : -1; + return n2 ? (d3.Z = n2[1] ? 0 : -(n2[2] + (n2[3] || "00")), i2 + n2[0].length) : -1; } - function parseQuarter(d2, string3, i2) { + function parseQuarter(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 1)); - return n2 ? (d2.q = n2[0] * 3 - 3, i2 + n2[0].length) : -1; + return n2 ? (d3.q = n2[0] * 3 - 3, i2 + n2[0].length) : -1; } - function parseMonthNumber(d2, string3, i2) { + function parseMonthNumber(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 2)); - return n2 ? (d2.m = n2[0] - 1, i2 + n2[0].length) : -1; + return n2 ? (d3.m = n2[0] - 1, i2 + n2[0].length) : -1; } - function parseDayOfMonth(d2, string3, i2) { + function parseDayOfMonth(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 2)); - return n2 ? (d2.d = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.d = +n2[0], i2 + n2[0].length) : -1; } - function parseDayOfYear(d2, string3, i2) { + function parseDayOfYear(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 3)); - return n2 ? (d2.m = 0, d2.d = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.m = 0, d3.d = +n2[0], i2 + n2[0].length) : -1; } - function parseHour24(d2, string3, i2) { + function parseHour24(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 2)); - return n2 ? (d2.H = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.H = +n2[0], i2 + n2[0].length) : -1; } - function parseMinutes(d2, string3, i2) { + function parseMinutes(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 2)); - return n2 ? (d2.M = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.M = +n2[0], i2 + n2[0].length) : -1; } - function parseSeconds(d2, string3, i2) { + function parseSeconds(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 2)); - return n2 ? (d2.S = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.S = +n2[0], i2 + n2[0].length) : -1; } - function parseMilliseconds(d2, string3, i2) { + function parseMilliseconds(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 3)); - return n2 ? (d2.L = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.L = +n2[0], i2 + n2[0].length) : -1; } - function parseMicroseconds(d2, string3, i2) { + function parseMicroseconds(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2, i2 + 6)); - return n2 ? (d2.L = Math.floor(n2[0] / 1e3), i2 + n2[0].length) : -1; + return n2 ? (d3.L = Math.floor(n2[0] / 1e3), i2 + n2[0].length) : -1; } - function parseLiteralPercent(d2, string3, i2) { + function parseLiteralPercent(d3, string3, i2) { var n2 = percentRe.exec(string3.slice(i2, i2 + 1)); return n2 ? i2 + n2[0].length : -1; } - function parseUnixTimestamp(d2, string3, i2) { + function parseUnixTimestamp(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2)); - return n2 ? (d2.Q = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.Q = +n2[0], i2 + n2[0].length) : -1; } - function parseUnixTimestampSeconds(d2, string3, i2) { + function parseUnixTimestampSeconds(d3, string3, i2) { var n2 = numberRe.exec(string3.slice(i2)); - return n2 ? (d2.s = +n2[0], i2 + n2[0].length) : -1; + return n2 ? (d3.s = +n2[0], i2 + n2[0].length) : -1; } - function formatDayOfMonth(d2, p3) { - return pad2(d2.getDate(), p3, 2); + function formatDayOfMonth(d3, p3) { + return pad2(d3.getDate(), p3, 2); } - function formatHour24(d2, p3) { - return pad2(d2.getHours(), p3, 2); + function formatHour24(d3, p3) { + return pad2(d3.getHours(), p3, 2); } - function formatHour12(d2, p3) { - return pad2(d2.getHours() % 12 || 12, p3, 2); + function formatHour12(d3, p3) { + return pad2(d3.getHours() % 12 || 12, p3, 2); } - function formatDayOfYear(d2, p3) { - return pad2(1 + timeDay.count(timeYear(d2), d2), p3, 3); + function formatDayOfYear(d3, p3) { + return pad2(1 + timeDay.count(timeYear(d3), d3), p3, 3); } - function formatMilliseconds(d2, p3) { - return pad2(d2.getMilliseconds(), p3, 3); + function formatMilliseconds(d3, p3) { + return pad2(d3.getMilliseconds(), p3, 3); } - function formatMicroseconds(d2, p3) { - return formatMilliseconds(d2, p3) + "000"; + function formatMicroseconds(d3, p3) { + return formatMilliseconds(d3, p3) + "000"; } - function formatMonthNumber(d2, p3) { - return pad2(d2.getMonth() + 1, p3, 2); + function formatMonthNumber(d3, p3) { + return pad2(d3.getMonth() + 1, p3, 2); } - function formatMinutes(d2, p3) { - return pad2(d2.getMinutes(), p3, 2); + function formatMinutes(d3, p3) { + return pad2(d3.getMinutes(), p3, 2); } - function formatSeconds(d2, p3) { - return pad2(d2.getSeconds(), p3, 2); + function formatSeconds(d3, p3) { + return pad2(d3.getSeconds(), p3, 2); } - function formatWeekdayNumberMonday(d2) { - var day = d2.getDay(); + function formatWeekdayNumberMonday(d3) { + var day = d3.getDay(); return day === 0 ? 7 : day; } - function formatWeekNumberSunday(d2, p3) { - return pad2(timeSunday.count(timeYear(d2) - 1, d2), p3, 2); + function formatWeekNumberSunday(d3, p3) { + return pad2(timeSunday.count(timeYear(d3) - 1, d3), p3, 2); } - function dISO(d2) { - var day = d2.getDay(); - return day >= 4 || day === 0 ? timeThursday(d2) : timeThursday.ceil(d2); + function dISO(d3) { + var day = d3.getDay(); + return day >= 4 || day === 0 ? timeThursday(d3) : timeThursday.ceil(d3); } - function formatWeekNumberISO(d2, p3) { - d2 = dISO(d2); - return pad2(timeThursday.count(timeYear(d2), d2) + (timeYear(d2).getDay() === 4), p3, 2); + function formatWeekNumberISO(d3, p3) { + d3 = dISO(d3); + return pad2(timeThursday.count(timeYear(d3), d3) + (timeYear(d3).getDay() === 4), p3, 2); } - function formatWeekdayNumberSunday(d2) { - return d2.getDay(); + function formatWeekdayNumberSunday(d3) { + return d3.getDay(); } - function formatWeekNumberMonday(d2, p3) { - return pad2(timeMonday.count(timeYear(d2) - 1, d2), p3, 2); + function formatWeekNumberMonday(d3, p3) { + return pad2(timeMonday.count(timeYear(d3) - 1, d3), p3, 2); } - function formatYear(d2, p3) { - return pad2(d2.getFullYear() % 100, p3, 2); + function formatYear(d3, p3) { + return pad2(d3.getFullYear() % 100, p3, 2); } - function formatYearISO(d2, p3) { - d2 = dISO(d2); - return pad2(d2.getFullYear() % 100, p3, 2); + function formatYearISO(d3, p3) { + d3 = dISO(d3); + return pad2(d3.getFullYear() % 100, p3, 2); } - function formatFullYear(d2, p3) { - return pad2(d2.getFullYear() % 1e4, p3, 4); + function formatFullYear(d3, p3) { + return pad2(d3.getFullYear() % 1e4, p3, 4); } - function formatFullYearISO(d2, p3) { - var day = d2.getDay(); - d2 = day >= 4 || day === 0 ? timeThursday(d2) : timeThursday.ceil(d2); - return pad2(d2.getFullYear() % 1e4, p3, 4); + function formatFullYearISO(d3, p3) { + var day = d3.getDay(); + d3 = day >= 4 || day === 0 ? timeThursday(d3) : timeThursday.ceil(d3); + return pad2(d3.getFullYear() % 1e4, p3, 4); } - function formatZone(d2) { - var z2 = d2.getTimezoneOffset(); - return (z2 > 0 ? "-" : (z2 *= -1, "+")) + pad2(z2 / 60 | 0, "0", 2) + pad2(z2 % 60, "0", 2); + function formatZone(d3) { + var z3 = d3.getTimezoneOffset(); + return (z3 > 0 ? "-" : (z3 *= -1, "+")) + pad2(z3 / 60 | 0, "0", 2) + pad2(z3 % 60, "0", 2); } - function formatUTCDayOfMonth(d2, p3) { - return pad2(d2.getUTCDate(), p3, 2); + function formatUTCDayOfMonth(d3, p3) { + return pad2(d3.getUTCDate(), p3, 2); } - function formatUTCHour24(d2, p3) { - return pad2(d2.getUTCHours(), p3, 2); + function formatUTCHour24(d3, p3) { + return pad2(d3.getUTCHours(), p3, 2); } - function formatUTCHour12(d2, p3) { - return pad2(d2.getUTCHours() % 12 || 12, p3, 2); + function formatUTCHour12(d3, p3) { + return pad2(d3.getUTCHours() % 12 || 12, p3, 2); } - function formatUTCDayOfYear(d2, p3) { - return pad2(1 + utcDay.count(utcYear(d2), d2), p3, 3); + function formatUTCDayOfYear(d3, p3) { + return pad2(1 + utcDay.count(utcYear(d3), d3), p3, 3); } - function formatUTCMilliseconds(d2, p3) { - return pad2(d2.getUTCMilliseconds(), p3, 3); + function formatUTCMilliseconds(d3, p3) { + return pad2(d3.getUTCMilliseconds(), p3, 3); } - function formatUTCMicroseconds(d2, p3) { - return formatUTCMilliseconds(d2, p3) + "000"; + function formatUTCMicroseconds(d3, p3) { + return formatUTCMilliseconds(d3, p3) + "000"; } - function formatUTCMonthNumber(d2, p3) { - return pad2(d2.getUTCMonth() + 1, p3, 2); + function formatUTCMonthNumber(d3, p3) { + return pad2(d3.getUTCMonth() + 1, p3, 2); } - function formatUTCMinutes(d2, p3) { - return pad2(d2.getUTCMinutes(), p3, 2); + function formatUTCMinutes(d3, p3) { + return pad2(d3.getUTCMinutes(), p3, 2); } - function formatUTCSeconds(d2, p3) { - return pad2(d2.getUTCSeconds(), p3, 2); + function formatUTCSeconds(d3, p3) { + return pad2(d3.getUTCSeconds(), p3, 2); } - function formatUTCWeekdayNumberMonday(d2) { - var dow = d2.getUTCDay(); + function formatUTCWeekdayNumberMonday(d3) { + var dow = d3.getUTCDay(); return dow === 0 ? 7 : dow; } - function formatUTCWeekNumberSunday(d2, p3) { - return pad2(utcSunday.count(utcYear(d2) - 1, d2), p3, 2); + function formatUTCWeekNumberSunday(d3, p3) { + return pad2(utcSunday.count(utcYear(d3) - 1, d3), p3, 2); } - function UTCdISO(d2) { - var day = d2.getUTCDay(); - return day >= 4 || day === 0 ? utcThursday(d2) : utcThursday.ceil(d2); + function UTCdISO(d3) { + var day = d3.getUTCDay(); + return day >= 4 || day === 0 ? utcThursday(d3) : utcThursday.ceil(d3); } - function formatUTCWeekNumberISO(d2, p3) { - d2 = UTCdISO(d2); - return pad2(utcThursday.count(utcYear(d2), d2) + (utcYear(d2).getUTCDay() === 4), p3, 2); + function formatUTCWeekNumberISO(d3, p3) { + d3 = UTCdISO(d3); + return pad2(utcThursday.count(utcYear(d3), d3) + (utcYear(d3).getUTCDay() === 4), p3, 2); } - function formatUTCWeekdayNumberSunday(d2) { - return d2.getUTCDay(); + function formatUTCWeekdayNumberSunday(d3) { + return d3.getUTCDay(); } - function formatUTCWeekNumberMonday(d2, p3) { - return pad2(utcMonday.count(utcYear(d2) - 1, d2), p3, 2); + function formatUTCWeekNumberMonday(d3, p3) { + return pad2(utcMonday.count(utcYear(d3) - 1, d3), p3, 2); } - function formatUTCYear(d2, p3) { - return pad2(d2.getUTCFullYear() % 100, p3, 2); + function formatUTCYear(d3, p3) { + return pad2(d3.getUTCFullYear() % 100, p3, 2); } - function formatUTCYearISO(d2, p3) { - d2 = UTCdISO(d2); - return pad2(d2.getUTCFullYear() % 100, p3, 2); + function formatUTCYearISO(d3, p3) { + d3 = UTCdISO(d3); + return pad2(d3.getUTCFullYear() % 100, p3, 2); } - function formatUTCFullYear(d2, p3) { - return pad2(d2.getUTCFullYear() % 1e4, p3, 4); + function formatUTCFullYear(d3, p3) { + return pad2(d3.getUTCFullYear() % 1e4, p3, 4); } - function formatUTCFullYearISO(d2, p3) { - var day = d2.getUTCDay(); - d2 = day >= 4 || day === 0 ? utcThursday(d2) : utcThursday.ceil(d2); - return pad2(d2.getUTCFullYear() % 1e4, p3, 4); + function formatUTCFullYearISO(d3, p3) { + var day = d3.getUTCDay(); + d3 = day >= 4 || day === 0 ? utcThursday(d3) : utcThursday.ceil(d3); + return pad2(d3.getUTCFullYear() % 1e4, p3, 4); } function formatUTCZone() { return "+0000"; @@ -28700,11 +28801,11 @@ var __esbuild_esm_mermaid = (() => { function formatLiteralPercent() { return "%"; } - function formatUnixTimestamp(d2) { - return +d2; + function formatUnixTimestamp(d3) { + return +d3; } - function formatUnixTimestampSeconds(d2) { - return Math.floor(+d2 / 1e3); + function formatUnixTimestampSeconds(d3) { + return Math.floor(+d3 / 1e3); } var pads, numberRe, percentRe, requoteRe; var init_locale2 = __esm({ @@ -28839,23 +28940,23 @@ var __esbuild_esm_mermaid = (() => { return (second2(date2) < date2 ? formatMillisecond : minute(date2) < date2 ? formatSecond : hour(date2) < date2 ? formatMinute : day(date2) < date2 ? formatHour : month(date2) < date2 ? week(date2) < date2 ? formatDay : formatWeek : year(date2) < date2 ? formatMonth : formatYear2)(date2); } __name(tickFormat2, "tickFormat"); - scale2.invert = function(y5) { - return new Date(invert2(y5)); + scale2.invert = function(y6) { + return new Date(invert2(y6)); }; - scale2.domain = function(_2) { - return arguments.length ? domain(Array.from(_2, number4)) : domain().map(date); + scale2.domain = function(_3) { + return arguments.length ? domain(Array.from(_3, number4)) : domain().map(date); }; scale2.ticks = function(interval2) { - var d2 = domain(); - return ticks2(d2[0], d2[d2.length - 1], interval2 == null ? 10 : interval2); + var d3 = domain(); + return ticks2(d3[0], d3[d3.length - 1], interval2 == null ? 10 : interval2); }; - scale2.tickFormat = function(count, specifier) { + scale2.tickFormat = function(count2, specifier) { return specifier == null ? tickFormat2 : format3(specifier); }; scale2.nice = function(interval2) { - var d2 = domain(); - if (!interval2 || typeof interval2.range !== "function") interval2 = tickInterval2(d2[0], d2[d2.length - 1], interval2 == null ? 10 : interval2); - return interval2 ? domain(nice(d2, interval2)) : scale2; + var d3 = domain(); + if (!interval2 || typeof interval2.range !== "function") interval2 = tickInterval2(d3[0], d3[d3.length - 1], interval2 == null ? 10 : interval2); + return interval2 ? domain(nice(d3, interval2)) : scale2; }; scale2.copy = function() { return copy(scale2, calendar(ticks2, tickInterval2, year, month, week, day, hour, minute, second2, format3)); @@ -28923,15 +29024,15 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/constant.js - function constant_default4(x5) { + function constant_default5(x5) { return /* @__PURE__ */ __name(function constant3() { return x5; }, "constant"); } - var init_constant5 = __esm({ + var init_constant6 = __esm({ "../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/constant.js"() { "use strict"; - __name(constant_default4, "default"); + __name(constant_default5, "default"); } }); @@ -28965,20 +29066,20 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/path.js function withPath(shape) { let digits = 3; - shape.digits = function(_2) { + shape.digits = function(_3) { if (!arguments.length) return digits; - if (_2 == null) { + if (_3 == null) { digits = null; } else { - const d2 = Math.floor(_2); - if (!(d2 >= 0)) throw new RangeError(`invalid digits: ${_2}`); - digits = d2; + const d3 = Math.floor(_3); + if (!(d3 >= 0)) throw new RangeError(`invalid digits: ${_3}`); + digits = d3; } return shape; }; return () => new Path(digits); } - var init_path2 = __esm({ + var init_path3 = __esm({ "../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/path.js"() { "use strict"; init_src13(); @@ -28987,20 +29088,20 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/arc.js - function arcInnerRadius(d2) { - return d2.innerRadius; + function arcInnerRadius(d3) { + return d3.innerRadius; } - function arcOuterRadius(d2) { - return d2.outerRadius; + function arcOuterRadius(d3) { + return d3.outerRadius; } - function arcStartAngle(d2) { - return d2.startAngle; + function arcStartAngle(d3) { + return d3.startAngle; } - function arcEndAngle(d2) { - return d2.endAngle; + function arcEndAngle(d3) { + return d3.endAngle; } - function arcPadAngle(d2) { - return d2 && d2.padAngle; + function arcPadAngle(d3) { + return d3 && d3.padAngle; } function intersect(x0, y0, x1, y1, x22, y22, x32, y32) { var x10 = x1 - x0, y10 = y1 - y0, x322 = x32 - x22, y322 = y32 - y22, t4 = y322 * x10 - x322 * y10; @@ -29009,7 +29110,7 @@ var __esbuild_esm_mermaid = (() => { return [x0 + t4 * x10, y0 + t4 * y10]; } function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { - var x01 = x0 - x1, y01 = y0 - y1, lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x11 = x0 + ox, y11 = y0 + oy, x10 = x1 + ox, y10 = y1 + oy, x00 = (x11 + x10) / 2, y00 = (y11 + y10) / 2, dx = x10 - x11, dy = y10 - y11, d2 = dx * dx + dy * dy, r2 = r1 - rc, D3 = x11 * y10 - x10 * y11, d3 = (dy < 0 ? -1 : 1) * sqrt(max3(0, r2 * r2 * d2 - D3 * D3)), cx0 = (D3 * dy - dx * d3) / d2, cy0 = (-D3 * dx - dy * d3) / d2, cx1 = (D3 * dy + dx * d3) / d2, cy1 = (-D3 * dx + dy * d3) / d2, dx0 = cx0 - x00, dy0 = cy0 - y00, dx1 = cx1 - x00, dy1 = cy1 - y00; + var x01 = x0 - x1, y01 = y0 - y1, lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x11 = x0 + ox, y11 = y0 + oy, x10 = x1 + ox, y10 = y1 + oy, x00 = (x11 + x10) / 2, y00 = (y11 + y10) / 2, dx = x10 - x11, dy = y10 - y11, d22 = dx * dx + dy * dy, r2 = r1 - rc, D4 = x11 * y10 - x10 * y11, d3 = (dy < 0 ? -1 : 1) * sqrt(max3(0, r2 * r2 * d22 - D4 * D4)), cx0 = (D4 * dy - dx * d3) / d22, cy0 = (-D4 * dx - dy * d3) / d22, cx1 = (D4 * dy + dx * d3) / d22, cy1 = (-D4 * dx + dy * d3) / d22, dx0 = cx0 - x00, dy0 = cy0 - y00, dx1 = cx1 - x00, dy1 = cy1 - y00; if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; return { cx: cx0, @@ -29021,7 +29122,7 @@ var __esbuild_esm_mermaid = (() => { }; } function arc_default() { - var innerRadius = arcInnerRadius, outerRadius = arcOuterRadius, cornerRadius = constant_default4(0), padRadius = null, startAngle = arcStartAngle, endAngle = arcEndAngle, padAngle = arcPadAngle, context = null, path4 = withPath(arc); + var innerRadius = arcInnerRadius, outerRadius = arcOuterRadius, cornerRadius = constant_default5(0), padRadius = null, startAngle = arcStartAngle, endAngle = arcEndAngle, padAngle = arcPadAngle, context = null, path4 = withPath(arc); function arc() { var buffer, r2, r0 = +innerRadius.apply(this, arguments), r1 = +outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) - halfPi, a1 = endAngle.apply(this, arguments) - halfPi, da = abs2(a1 - a0), cw = a1 > a0; if (!context) context = buffer = path4(); @@ -29089,38 +29190,38 @@ var __esbuild_esm_mermaid = (() => { var r2 = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a2 = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi2 / 2; return [cos(a2) * r2, sin(a2) * r2]; }; - arc.innerRadius = function(_2) { - return arguments.length ? (innerRadius = typeof _2 === "function" ? _2 : constant_default4(+_2), arc) : innerRadius; + arc.innerRadius = function(_3) { + return arguments.length ? (innerRadius = typeof _3 === "function" ? _3 : constant_default5(+_3), arc) : innerRadius; }; - arc.outerRadius = function(_2) { - return arguments.length ? (outerRadius = typeof _2 === "function" ? _2 : constant_default4(+_2), arc) : outerRadius; + arc.outerRadius = function(_3) { + return arguments.length ? (outerRadius = typeof _3 === "function" ? _3 : constant_default5(+_3), arc) : outerRadius; }; - arc.cornerRadius = function(_2) { - return arguments.length ? (cornerRadius = typeof _2 === "function" ? _2 : constant_default4(+_2), arc) : cornerRadius; + arc.cornerRadius = function(_3) { + return arguments.length ? (cornerRadius = typeof _3 === "function" ? _3 : constant_default5(+_3), arc) : cornerRadius; }; - arc.padRadius = function(_2) { - return arguments.length ? (padRadius = _2 == null ? null : typeof _2 === "function" ? _2 : constant_default4(+_2), arc) : padRadius; + arc.padRadius = function(_3) { + return arguments.length ? (padRadius = _3 == null ? null : typeof _3 === "function" ? _3 : constant_default5(+_3), arc) : padRadius; }; - arc.startAngle = function(_2) { - return arguments.length ? (startAngle = typeof _2 === "function" ? _2 : constant_default4(+_2), arc) : startAngle; + arc.startAngle = function(_3) { + return arguments.length ? (startAngle = typeof _3 === "function" ? _3 : constant_default5(+_3), arc) : startAngle; }; - arc.endAngle = function(_2) { - return arguments.length ? (endAngle = typeof _2 === "function" ? _2 : constant_default4(+_2), arc) : endAngle; + arc.endAngle = function(_3) { + return arguments.length ? (endAngle = typeof _3 === "function" ? _3 : constant_default5(+_3), arc) : endAngle; }; - arc.padAngle = function(_2) { - return arguments.length ? (padAngle = typeof _2 === "function" ? _2 : constant_default4(+_2), arc) : padAngle; + arc.padAngle = function(_3) { + return arguments.length ? (padAngle = typeof _3 === "function" ? _3 : constant_default5(+_3), arc) : padAngle; }; - arc.context = function(_2) { - return arguments.length ? (context = _2 == null ? null : _2, arc) : context; + arc.context = function(_3) { + return arguments.length ? (context = _3 == null ? null : _3, arc) : context; }; return arc; } var init_arc = __esm({ "../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/arc.js"() { "use strict"; - init_constant5(); + init_constant6(); init_math2(); - init_path2(); + init_path3(); __name(arcInnerRadius, "arcInnerRadius"); __name(arcOuterRadius, "arcOuterRadius"); __name(arcStartAngle, "arcStartAngle"); @@ -29170,18 +29271,18 @@ var __esbuild_esm_mermaid = (() => { if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); this._line = 1 - this._line; }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; switch (this._point) { case 0: this._point = 1; - this._line ? this._context.lineTo(x5, y5) : this._context.moveTo(x5, y5); + this._line ? this._context.lineTo(x5, y6) : this._context.moveTo(x5, y6); break; case 1: this._point = 2; // falls through default: - this._context.lineTo(x5, y5); + this._context.lineTo(x5, y6); break; } }, "point") @@ -29206,37 +29307,37 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/line.js - function line_default(x5, y5) { - var defined = constant_default4(true), context = null, curve = linear_default, output2 = null, path4 = withPath(line2); - x5 = typeof x5 === "function" ? x5 : x5 === void 0 ? x : constant_default4(x5); - y5 = typeof y5 === "function" ? y5 : y5 === void 0 ? y : constant_default4(y5); - function line2(data6) { - var i2, n2 = (data6 = array_default(data6)).length, d2, defined0 = false, buffer; + function line_default(x5, y6) { + var defined = constant_default5(true), context = null, curve = linear_default, output2 = null, path4 = withPath(line2); + x5 = typeof x5 === "function" ? x5 : x5 === void 0 ? x : constant_default5(x5); + y6 = typeof y6 === "function" ? y6 : y6 === void 0 ? y : constant_default5(y6); + function line2(data5) { + var i2, n2 = (data5 = array_default(data5)).length, d3, defined0 = false, buffer; if (context == null) output2 = curve(buffer = path4()); for (i2 = 0; i2 <= n2; ++i2) { - if (!(i2 < n2 && defined(d2 = data6[i2], i2, data6)) === defined0) { + if (!(i2 < n2 && defined(d3 = data5[i2], i2, data5)) === defined0) { if (defined0 = !defined0) output2.lineStart(); else output2.lineEnd(); } - if (defined0) output2.point(+x5(d2, i2, data6), +y5(d2, i2, data6)); + if (defined0) output2.point(+x5(d3, i2, data5), +y6(d3, i2, data5)); } if (buffer) return output2 = null, buffer + "" || null; } __name(line2, "line"); - line2.x = function(_2) { - return arguments.length ? (x5 = typeof _2 === "function" ? _2 : constant_default4(+_2), line2) : x5; + line2.x = function(_3) { + return arguments.length ? (x5 = typeof _3 === "function" ? _3 : constant_default5(+_3), line2) : x5; }; - line2.y = function(_2) { - return arguments.length ? (y5 = typeof _2 === "function" ? _2 : constant_default4(+_2), line2) : y5; + line2.y = function(_3) { + return arguments.length ? (y6 = typeof _3 === "function" ? _3 : constant_default5(+_3), line2) : y6; }; - line2.defined = function(_2) { - return arguments.length ? (defined = typeof _2 === "function" ? _2 : constant_default4(!!_2), line2) : defined; + line2.defined = function(_3) { + return arguments.length ? (defined = typeof _3 === "function" ? _3 : constant_default5(!!_3), line2) : defined; }; - line2.curve = function(_2) { - return arguments.length ? (curve = _2, context != null && (output2 = curve(context)), line2) : curve; + line2.curve = function(_3) { + return arguments.length ? (curve = _3, context != null && (output2 = curve(context)), line2) : curve; }; - line2.context = function(_2) { - return arguments.length ? (_2 == null ? context = output2 = null : output2 = curve(context = _2), line2) : context; + line2.context = function(_3) { + return arguments.length ? (_3 == null ? context = output2 = null : output2 = curve(context = _3), line2) : context; }; return line2; } @@ -29244,17 +29345,17 @@ var __esbuild_esm_mermaid = (() => { "../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/line.js"() { "use strict"; init_array3(); - init_constant5(); + init_constant6(); init_linear2(); - init_path2(); + init_path3(); init_point(); __name(line_default, "default"); } }); // ../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/descending.js - function descending_default(a2, b2) { - return b2 < a2 ? -1 : b2 > a2 ? 1 : b2 >= a2 ? 0 : NaN; + function descending_default(a2, b3) { + return b3 < a2 ? -1 : b3 > a2 ? 1 : b3 >= a2 ? 0 : NaN; } var init_descending2 = __esm({ "../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/descending.js"() { @@ -29264,8 +29365,8 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/identity.js - function identity_default3(d2) { - return d2; + function identity_default3(d3) { + return d3; } var init_identity3 = __esm({ "../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/identity.js"() { @@ -29276,23 +29377,23 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/pie.js function pie_default() { - var value2 = identity_default3, sortValues = descending_default, sort3 = null, startAngle = constant_default4(0), endAngle = constant_default4(tau2), padAngle = constant_default4(0); - function pie2(data6) { - var i2, n2 = (data6 = array_default(data6)).length, j2, k2, sum2 = 0, index = new Array(n2), arcs = new Array(n2), a0 = +startAngle.apply(this, arguments), da = Math.min(tau2, Math.max(-tau2, endAngle.apply(this, arguments) - a0)), a1, p3 = Math.min(Math.abs(da) / n2, padAngle.apply(this, arguments)), pa = p3 * (da < 0 ? -1 : 1), v3; + var value2 = identity_default3, sortValues = descending_default, sort3 = null, startAngle = constant_default5(0), endAngle = constant_default5(tau2), padAngle = constant_default5(0); + function pie2(data5) { + var i2, n2 = (data5 = array_default(data5)).length, j3, k2, sum2 = 0, index = new Array(n2), arcs = new Array(n2), a0 = +startAngle.apply(this, arguments), da = Math.min(tau2, Math.max(-tau2, endAngle.apply(this, arguments) - a0)), a1, p3 = Math.min(Math.abs(da) / n2, padAngle.apply(this, arguments)), pa = p3 * (da < 0 ? -1 : 1), v3; for (i2 = 0; i2 < n2; ++i2) { - if ((v3 = arcs[index[i2] = i2] = +value2(data6[i2], i2, data6)) > 0) { + if ((v3 = arcs[index[i2] = i2] = +value2(data5[i2], i2, data5)) > 0) { sum2 += v3; } } - if (sortValues != null) index.sort(function(i3, j3) { - return sortValues(arcs[i3], arcs[j3]); + if (sortValues != null) index.sort(function(i3, j4) { + return sortValues(arcs[i3], arcs[j4]); }); - else if (sort3 != null) index.sort(function(i3, j3) { - return sort3(data6[i3], data6[j3]); + else if (sort3 != null) index.sort(function(i3, j4) { + return sort3(data5[i3], data5[j4]); }); for (i2 = 0, k2 = sum2 ? (da - n2 * pa) / sum2 : 0; i2 < n2; ++i2, a0 = a1) { - j2 = index[i2], v3 = arcs[j2], a1 = a0 + (v3 > 0 ? v3 * k2 : 0) + pa, arcs[j2] = { - data: data6[j2], + j3 = index[i2], v3 = arcs[j3], a1 = a0 + (v3 > 0 ? v3 * k2 : 0) + pa, arcs[j3] = { + data: data5[j3], index: i2, value: v3, startAngle: a0, @@ -29303,23 +29404,23 @@ var __esbuild_esm_mermaid = (() => { return arcs; } __name(pie2, "pie"); - pie2.value = function(_2) { - return arguments.length ? (value2 = typeof _2 === "function" ? _2 : constant_default4(+_2), pie2) : value2; + pie2.value = function(_3) { + return arguments.length ? (value2 = typeof _3 === "function" ? _3 : constant_default5(+_3), pie2) : value2; }; - pie2.sortValues = function(_2) { - return arguments.length ? (sortValues = _2, sort3 = null, pie2) : sortValues; + pie2.sortValues = function(_3) { + return arguments.length ? (sortValues = _3, sort3 = null, pie2) : sortValues; }; - pie2.sort = function(_2) { - return arguments.length ? (sort3 = _2, sortValues = null, pie2) : sort3; + pie2.sort = function(_3) { + return arguments.length ? (sort3 = _3, sortValues = null, pie2) : sort3; }; - pie2.startAngle = function(_2) { - return arguments.length ? (startAngle = typeof _2 === "function" ? _2 : constant_default4(+_2), pie2) : startAngle; + pie2.startAngle = function(_3) { + return arguments.length ? (startAngle = typeof _3 === "function" ? _3 : constant_default5(+_3), pie2) : startAngle; }; - pie2.endAngle = function(_2) { - return arguments.length ? (endAngle = typeof _2 === "function" ? _2 : constant_default4(+_2), pie2) : endAngle; + pie2.endAngle = function(_3) { + return arguments.length ? (endAngle = typeof _3 === "function" ? _3 : constant_default5(+_3), pie2) : endAngle; }; - pie2.padAngle = function(_2) { - return arguments.length ? (padAngle = typeof _2 === "function" ? _2 : constant_default4(+_2), pie2) : padAngle; + pie2.padAngle = function(_3) { + return arguments.length ? (padAngle = typeof _3 === "function" ? _3 : constant_default5(+_3), pie2) : padAngle; }; return pie2; } @@ -29327,7 +29428,7 @@ var __esbuild_esm_mermaid = (() => { "../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/pie.js"() { "use strict"; init_array3(); - init_constant5(); + init_constant6(); init_descending2(); init_identity3(); init_math2(); @@ -29367,25 +29468,25 @@ var __esbuild_esm_mermaid = (() => { if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); this._line = 1 - this._line; } - point(x5, y5) { - x5 = +x5, y5 = +y5; + point(x5, y6) { + x5 = +x5, y6 = +y6; switch (this._point) { case 0: { this._point = 1; - if (this._line) this._context.lineTo(x5, y5); - else this._context.moveTo(x5, y5); + if (this._line) this._context.lineTo(x5, y6); + else this._context.moveTo(x5, y6); break; } case 1: this._point = 2; // falls through default: { - if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x5) / 2, this._y0, this._x0, y5, x5, y5); - else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y5) / 2, x5, this._y0, x5, y5); + if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x5) / 2, this._y0, this._x0, y6, x5, y6); + else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y6) / 2, x5, this._y0, x5, y6); break; } } - this._x0 = x5, this._y0 = y5; + this._x0 = x5, this._y0 = y6; } }; __name(bumpX, "bumpX"); @@ -29404,14 +29505,14 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/basis.js - function point2(that, x5, y5) { + function point2(that, x5, y6) { that._context.bezierCurveTo( (2 * that._x0 + that._x1) / 3, (2 * that._y0 + that._y1) / 3, (that._x0 + 2 * that._x1) / 3, (that._y0 + 2 * that._y1) / 3, (that._x0 + 4 * that._x1 + x5) / 6, - (that._y0 + 4 * that._y1 + y5) / 6 + (that._y0 + 4 * that._y1 + y6) / 6 ); } function Basis(context) { @@ -29448,12 +29549,12 @@ var __esbuild_esm_mermaid = (() => { if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); this._line = 1 - this._line; }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; switch (this._point) { case 0: this._point = 1; - this._line ? this._context.lineTo(x5, y5) : this._context.moveTo(x5, y5); + this._line ? this._context.lineTo(x5, y6) : this._context.moveTo(x5, y6); break; case 1: this._point = 2; @@ -29463,11 +29564,11 @@ var __esbuild_esm_mermaid = (() => { this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through default: - point2(this, x5, y5); + point2(this, x5, y6); break; } this._x0 = this._x1, this._x1 = x5; - this._y0 = this._y1, this._y1 = y5; + this._y0 = this._y1, this._y1 = y6; }, "point") }; __name(basis_default2, "default"); @@ -29515,28 +29616,28 @@ var __esbuild_esm_mermaid = (() => { } } }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; switch (this._point) { case 0: this._point = 1; - this._x2 = x5, this._y2 = y5; + this._x2 = x5, this._y2 = y6; break; case 1: this._point = 2; - this._x3 = x5, this._y3 = y5; + this._x3 = x5, this._y3 = y6; break; case 2: this._point = 3; - this._x4 = x5, this._y4 = y5; - this._context.moveTo((this._x0 + 4 * this._x1 + x5) / 6, (this._y0 + 4 * this._y1 + y5) / 6); + this._x4 = x5, this._y4 = y6; + this._context.moveTo((this._x0 + 4 * this._x1 + x5) / 6, (this._y0 + 4 * this._y1 + y6) / 6); break; default: - point2(this, x5, y5); + point2(this, x5, y6); break; } this._x0 = this._x1, this._x1 = x5; - this._y0 = this._y1, this._y1 = y5; + this._y0 = this._y1, this._y1 = y6; }, "point") }; __name(basisClosed_default2, "default"); @@ -29570,8 +29671,8 @@ var __esbuild_esm_mermaid = (() => { if (this._line || this._line !== 0 && this._point === 3) this._context.closePath(); this._line = 1 - this._line; }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; switch (this._point) { case 0: this._point = 1; @@ -29581,18 +29682,18 @@ var __esbuild_esm_mermaid = (() => { break; case 2: this._point = 3; - var x0 = (this._x0 + 4 * this._x1 + x5) / 6, y0 = (this._y0 + 4 * this._y1 + y5) / 6; + var x0 = (this._x0 + 4 * this._x1 + x5) / 6, y0 = (this._y0 + 4 * this._y1 + y6) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; case 3: this._point = 4; // falls through default: - point2(this, x5, y5); + point2(this, x5, y6); break; } this._x0 = this._x1, this._x1 = x5; - this._y0 = this._y1, this._y1 = y5; + this._y0 = this._y1, this._y1 = y6; }, "point") }; __name(basisOpen_default, "default"); @@ -29617,45 +29718,45 @@ var __esbuild_esm_mermaid = (() => { this._basis.lineStart(); }, "lineStart"), lineEnd: /* @__PURE__ */ __name(function() { - var x5 = this._x, y5 = this._y, j2 = x5.length - 1; - if (j2 > 0) { - var x0 = x5[0], y0 = y5[0], dx = x5[j2] - x0, dy = y5[j2] - y0, i2 = -1, t4; - while (++i2 <= j2) { - t4 = i2 / j2; + var x5 = this._x, y6 = this._y, j3 = x5.length - 1; + if (j3 > 0) { + var x0 = x5[0], y0 = y6[0], dx = x5[j3] - x0, dy = y6[j3] - y0, i2 = -1, t4; + while (++i2 <= j3) { + t4 = i2 / j3; this._basis.point( this._beta * x5[i2] + (1 - this._beta) * (x0 + t4 * dx), - this._beta * y5[i2] + (1 - this._beta) * (y0 + t4 * dy) + this._beta * y6[i2] + (1 - this._beta) * (y0 + t4 * dy) ); } } this._x = this._y = null; this._basis.lineEnd(); }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { + point: /* @__PURE__ */ __name(function(x5, y6) { this._x.push(+x5); - this._y.push(+y5); + this._y.push(+y6); }, "point") }; - bundle_default = (/* @__PURE__ */ __name(function custom(beta) { + bundle_default = (/* @__PURE__ */ __name((function custom2(beta) { function bundle(context) { return beta === 1 ? new Basis(context) : new Bundle(context, beta); } __name(bundle, "bundle"); bundle.beta = function(beta2) { - return custom(+beta2); + return custom2(+beta2); }; return bundle; - }, "custom"))(0.85); + }), "custom"))(0.85); } }); // ../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/cardinal.js - function point3(that, x5, y5) { + function point3(that, x5, y6) { that._context.bezierCurveTo( that._x1 + that._k * (that._x2 - that._x0), that._y1 + that._k * (that._y2 - that._y0), that._x2 + that._k * (that._x1 - x5), - that._y2 + that._k * (that._y1 - y5), + that._y2 + that._k * (that._y1 - y6), that._x2, that._y2 ); @@ -29693,38 +29794,38 @@ var __esbuild_esm_mermaid = (() => { if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); this._line = 1 - this._line; }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; switch (this._point) { case 0: this._point = 1; - this._line ? this._context.lineTo(x5, y5) : this._context.moveTo(x5, y5); + this._line ? this._context.lineTo(x5, y6) : this._context.moveTo(x5, y6); break; case 1: this._point = 2; - this._x1 = x5, this._y1 = y5; + this._x1 = x5, this._y1 = y6; break; case 2: this._point = 3; // falls through default: - point3(this, x5, y5); + point3(this, x5, y6); break; } this._x0 = this._x1, this._x1 = this._x2, this._x2 = x5; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y5; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y6; }, "point") }; - cardinal_default = (/* @__PURE__ */ __name(function custom2(tension) { + cardinal_default = (/* @__PURE__ */ __name((function custom3(tension) { function cardinal(context) { return new Cardinal(context, tension); } __name(cardinal, "cardinal"); cardinal.tension = function(tension2) { - return custom2(+tension2); + return custom3(+tension2); }; return cardinal; - }, "custom"))(0); + }), "custom"))(0); } }); @@ -29767,39 +29868,39 @@ var __esbuild_esm_mermaid = (() => { } } }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; switch (this._point) { case 0: this._point = 1; - this._x3 = x5, this._y3 = y5; + this._x3 = x5, this._y3 = y6; break; case 1: this._point = 2; - this._context.moveTo(this._x4 = x5, this._y4 = y5); + this._context.moveTo(this._x4 = x5, this._y4 = y6); break; case 2: this._point = 3; - this._x5 = x5, this._y5 = y5; + this._x5 = x5, this._y5 = y6; break; default: - point3(this, x5, y5); + point3(this, x5, y6); break; } this._x0 = this._x1, this._x1 = this._x2, this._x2 = x5; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y5; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y6; }, "point") }; - cardinalClosed_default = (/* @__PURE__ */ __name(function custom3(tension) { + cardinalClosed_default = (/* @__PURE__ */ __name((function custom4(tension) { function cardinal(context) { return new CardinalClosed(context, tension); } __name(cardinal, "cardinal"); cardinal.tension = function(tension2) { - return custom3(+tension2); + return custom4(+tension2); }; return cardinal; - }, "custom"))(0); + }), "custom"))(0); } }); @@ -29829,8 +29930,8 @@ var __esbuild_esm_mermaid = (() => { if (this._line || this._line !== 0 && this._point === 3) this._context.closePath(); this._line = 1 - this._line; }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; switch (this._point) { case 0: this._point = 1; @@ -29846,28 +29947,28 @@ var __esbuild_esm_mermaid = (() => { this._point = 4; // falls through default: - point3(this, x5, y5); + point3(this, x5, y6); break; } this._x0 = this._x1, this._x1 = this._x2, this._x2 = x5; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y5; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y6; }, "point") }; - cardinalOpen_default = (/* @__PURE__ */ __name(function custom4(tension) { + cardinalOpen_default = (/* @__PURE__ */ __name((function custom5(tension) { function cardinal(context) { return new CardinalOpen(context, tension); } __name(cardinal, "cardinal"); cardinal.tension = function(tension2) { - return custom4(+tension2); + return custom5(+tension2); }; return cardinal; - }, "custom"))(0); + }), "custom"))(0); } }); // ../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/catmullRom.js - function point4(that, x5, y5) { + function point4(that, x5, y6) { var x1 = that._x1, y1 = that._y1, x22 = that._x2, y22 = that._y2; if (that._l01_a > epsilon3) { var a2 = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a, n2 = 3 * that._l01_a * (that._l01_a + that._l12_a); @@ -29875,9 +29976,9 @@ var __esbuild_esm_mermaid = (() => { y1 = (y1 * a2 - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n2; } if (that._l23_a > epsilon3) { - var b2 = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, m2 = 3 * that._l23_a * (that._l23_a + that._l12_a); - x22 = (x22 * b2 + that._x1 * that._l23_2a - x5 * that._l12_2a) / m2; - y22 = (y22 * b2 + that._y1 * that._l23_2a - y5 * that._l12_2a) / m2; + var b3 = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, m3 = 3 * that._l23_a * (that._l23_a + that._l12_a); + x22 = (x22 * b3 + that._x1 * that._l23_2a - x5 * that._l12_2a) / m3; + y22 = (y22 * b3 + that._y1 * that._l23_2a - y6 * that._l12_2a) / m3; } that._context.bezierCurveTo(x1, y1, x22, y22, that._x2, that._y2); } @@ -29916,16 +30017,16 @@ var __esbuild_esm_mermaid = (() => { if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); this._line = 1 - this._line; }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; if (this._point) { - var x23 = this._x2 - x5, y23 = this._y2 - y5; + var x23 = this._x2 - x5, y23 = this._y2 - y6; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); } switch (this._point) { case 0: this._point = 1; - this._line ? this._context.lineTo(x5, y5) : this._context.moveTo(x5, y5); + this._line ? this._context.lineTo(x5, y6) : this._context.moveTo(x5, y6); break; case 1: this._point = 2; @@ -29934,25 +30035,25 @@ var __esbuild_esm_mermaid = (() => { this._point = 3; // falls through default: - point4(this, x5, y5); + point4(this, x5, y6); break; } this._l01_a = this._l12_a, this._l12_a = this._l23_a; this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; this._x0 = this._x1, this._x1 = this._x2, this._x2 = x5; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y5; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y6; }, "point") }; - catmullRom_default = (/* @__PURE__ */ __name(function custom5(alpha) { + catmullRom_default = (/* @__PURE__ */ __name((function custom6(alpha) { function catmullRom(context) { return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0); } __name(catmullRom, "catmullRom"); catmullRom.alpha = function(alpha2) { - return custom5(+alpha2); + return custom6(+alpha2); }; return catmullRom; - }, "custom"))(0.5); + }), "custom"))(0.5); } }); @@ -29996,45 +30097,45 @@ var __esbuild_esm_mermaid = (() => { } } }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; if (this._point) { - var x23 = this._x2 - x5, y23 = this._y2 - y5; + var x23 = this._x2 - x5, y23 = this._y2 - y6; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); } switch (this._point) { case 0: this._point = 1; - this._x3 = x5, this._y3 = y5; + this._x3 = x5, this._y3 = y6; break; case 1: this._point = 2; - this._context.moveTo(this._x4 = x5, this._y4 = y5); + this._context.moveTo(this._x4 = x5, this._y4 = y6); break; case 2: this._point = 3; - this._x5 = x5, this._y5 = y5; + this._x5 = x5, this._y5 = y6; break; default: - point4(this, x5, y5); + point4(this, x5, y6); break; } this._l01_a = this._l12_a, this._l12_a = this._l23_a; this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; this._x0 = this._x1, this._x1 = this._x2, this._x2 = x5; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y5; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y6; }, "point") }; - catmullRomClosed_default = (/* @__PURE__ */ __name(function custom6(alpha) { + catmullRomClosed_default = (/* @__PURE__ */ __name((function custom7(alpha) { function catmullRom(context) { return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0); } __name(catmullRom, "catmullRom"); catmullRom.alpha = function(alpha2) { - return custom6(+alpha2); + return custom7(+alpha2); }; return catmullRom; - }, "custom"))(0.5); + }), "custom"))(0.5); } }); @@ -30065,10 +30166,10 @@ var __esbuild_esm_mermaid = (() => { if (this._line || this._line !== 0 && this._point === 3) this._context.closePath(); this._line = 1 - this._line; }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; if (this._point) { - var x23 = this._x2 - x5, y23 = this._y2 - y5; + var x23 = this._x2 - x5, y23 = this._y2 - y6; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); } switch (this._point) { @@ -30086,25 +30187,25 @@ var __esbuild_esm_mermaid = (() => { this._point = 4; // falls through default: - point4(this, x5, y5); + point4(this, x5, y6); break; } this._l01_a = this._l12_a, this._l12_a = this._l23_a; this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; this._x0 = this._x1, this._x1 = this._x2, this._x2 = x5; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y5; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y6; }, "point") }; - catmullRomOpen_default = (/* @__PURE__ */ __name(function custom7(alpha) { + catmullRomOpen_default = (/* @__PURE__ */ __name((function custom8(alpha) { function catmullRom(context) { return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0); } __name(catmullRom, "catmullRom"); catmullRom.alpha = function(alpha2) { - return custom7(+alpha2); + return custom8(+alpha2); }; return catmullRom; - }, "custom"))(0.5); + }), "custom"))(0.5); } }); @@ -30129,10 +30230,10 @@ var __esbuild_esm_mermaid = (() => { lineEnd: /* @__PURE__ */ __name(function() { if (this._point) this._context.closePath(); }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; - if (this._point) this._context.lineTo(x5, y5); - else this._point = 1, this._context.moveTo(x5, y5); + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; + if (this._point) this._context.lineTo(x5, y6); + else this._point = 1, this._context.moveTo(x5, y6); }, "point") }; __name(linearClosed_default, "default"); @@ -30148,8 +30249,8 @@ var __esbuild_esm_mermaid = (() => { return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p3)) || 0; } function slope2(that, t4) { - var h2 = that._x1 - that._x0; - return h2 ? (3 * (that._y1 - that._y0) / h2 - t4) / 2 : t4; + var h3 = that._x1 - that._x0; + return h3 ? (3 * (that._y1 - that._y0) / h3 - t4) / 2 : t4; } function point5(that, t03, t13) { var x0 = that._x0, y0 = that._y0, x1 = that._x1, y1 = that._y1, dx = (x1 - x0) / 3; @@ -30201,48 +30302,48 @@ var __esbuild_esm_mermaid = (() => { if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); this._line = 1 - this._line; }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { + point: /* @__PURE__ */ __name(function(x5, y6) { var t13 = NaN; - x5 = +x5, y5 = +y5; - if (x5 === this._x1 && y5 === this._y1) return; + x5 = +x5, y6 = +y6; + if (x5 === this._x1 && y6 === this._y1) return; switch (this._point) { case 0: this._point = 1; - this._line ? this._context.lineTo(x5, y5) : this._context.moveTo(x5, y5); + this._line ? this._context.lineTo(x5, y6) : this._context.moveTo(x5, y6); break; case 1: this._point = 2; break; case 2: this._point = 3; - point5(this, slope2(this, t13 = slope3(this, x5, y5)), t13); + point5(this, slope2(this, t13 = slope3(this, x5, y6)), t13); break; default: - point5(this, this._t0, t13 = slope3(this, x5, y5)); + point5(this, this._t0, t13 = slope3(this, x5, y6)); break; } this._x0 = this._x1, this._x1 = x5; - this._y0 = this._y1, this._y1 = y5; + this._y0 = this._y1, this._y1 = y6; this._t0 = t13; }, "point") }; __name(MonotoneY, "MonotoneY"); - (MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x5, y5) { - MonotoneX.prototype.point.call(this, y5, x5); + (MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x5, y6) { + MonotoneX.prototype.point.call(this, y6, x5); }; __name(ReflectContext, "ReflectContext"); ReflectContext.prototype = { - moveTo: /* @__PURE__ */ __name(function(x5, y5) { - this._context.moveTo(y5, x5); + moveTo: /* @__PURE__ */ __name(function(x5, y6) { + this._context.moveTo(y6, x5); }, "moveTo"), closePath: /* @__PURE__ */ __name(function() { this._context.closePath(); }, "closePath"), - lineTo: /* @__PURE__ */ __name(function(x5, y5) { - this._context.lineTo(y5, x5); + lineTo: /* @__PURE__ */ __name(function(x5, y6) { + this._context.lineTo(y6, x5); }, "lineTo"), - bezierCurveTo: /* @__PURE__ */ __name(function(x1, y1, x22, y22, x5, y5) { - this._context.bezierCurveTo(y1, x1, y22, x22, y5, x5); + bezierCurveTo: /* @__PURE__ */ __name(function(x1, y1, x22, y22, x5, y6) { + this._context.bezierCurveTo(y1, x1, y22, x22, y6, x5); }, "bezierCurveTo") }; __name(monotoneX, "monotoneX"); @@ -30255,16 +30356,16 @@ var __esbuild_esm_mermaid = (() => { this._context = context; } function controlPoints(x5) { - var i2, n2 = x5.length - 1, m2, a2 = new Array(n2), b2 = new Array(n2), r2 = new Array(n2); - a2[0] = 0, b2[0] = 2, r2[0] = x5[0] + 2 * x5[1]; - for (i2 = 1; i2 < n2 - 1; ++i2) a2[i2] = 1, b2[i2] = 4, r2[i2] = 4 * x5[i2] + 2 * x5[i2 + 1]; - a2[n2 - 1] = 2, b2[n2 - 1] = 7, r2[n2 - 1] = 8 * x5[n2 - 1] + x5[n2]; - for (i2 = 1; i2 < n2; ++i2) m2 = a2[i2] / b2[i2 - 1], b2[i2] -= m2, r2[i2] -= m2 * r2[i2 - 1]; - a2[n2 - 1] = r2[n2 - 1] / b2[n2 - 1]; - for (i2 = n2 - 2; i2 >= 0; --i2) a2[i2] = (r2[i2] - a2[i2 + 1]) / b2[i2]; - b2[n2 - 1] = (x5[n2] + a2[n2 - 1]) / 2; - for (i2 = 0; i2 < n2 - 1; ++i2) b2[i2] = 2 * x5[i2 + 1] - a2[i2 + 1]; - return [a2, b2]; + var i2, n2 = x5.length - 1, m3, a2 = new Array(n2), b3 = new Array(n2), r2 = new Array(n2); + a2[0] = 0, b3[0] = 2, r2[0] = x5[0] + 2 * x5[1]; + for (i2 = 1; i2 < n2 - 1; ++i2) a2[i2] = 1, b3[i2] = 4, r2[i2] = 4 * x5[i2] + 2 * x5[i2 + 1]; + a2[n2 - 1] = 2, b3[n2 - 1] = 7, r2[n2 - 1] = 8 * x5[n2 - 1] + x5[n2]; + for (i2 = 1; i2 < n2; ++i2) m3 = a2[i2] / b3[i2 - 1], b3[i2] -= m3, r2[i2] -= m3 * r2[i2 - 1]; + a2[n2 - 1] = r2[n2 - 1] / b3[n2 - 1]; + for (i2 = n2 - 2; i2 >= 0; --i2) a2[i2] = (r2[i2] - a2[i2 + 1]) / b3[i2]; + b3[n2 - 1] = (x5[n2] + a2[n2 - 1]) / 2; + for (i2 = 0; i2 < n2 - 1; ++i2) b3[i2] = 2 * x5[i2 + 1] - a2[i2 + 1]; + return [a2, b3]; } function natural_default(context) { return new Natural(context); @@ -30285,15 +30386,15 @@ var __esbuild_esm_mermaid = (() => { this._y = []; }, "lineStart"), lineEnd: /* @__PURE__ */ __name(function() { - var x5 = this._x, y5 = this._y, n2 = x5.length; + var x5 = this._x, y6 = this._y, n2 = x5.length; if (n2) { - this._line ? this._context.lineTo(x5[0], y5[0]) : this._context.moveTo(x5[0], y5[0]); + this._line ? this._context.lineTo(x5[0], y6[0]) : this._context.moveTo(x5[0], y6[0]); if (n2 === 2) { - this._context.lineTo(x5[1], y5[1]); + this._context.lineTo(x5[1], y6[1]); } else { - var px = controlPoints(x5), py = controlPoints(y5); + var px = controlPoints(x5), py = controlPoints(y6); for (var i0 = 0, i1 = 1; i1 < n2; ++i0, ++i1) { - this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x5[i1], y5[i1]); + this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x5[i1], y6[i1]); } } } @@ -30301,9 +30402,9 @@ var __esbuild_esm_mermaid = (() => { this._line = 1 - this._line; this._x = this._y = null; }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { + point: /* @__PURE__ */ __name(function(x5, y6) { this._x.push(+x5); - this._y.push(+y5); + this._y.push(+y6); }, "point") }; __name(controlPoints, "controlPoints"); @@ -30345,29 +30446,29 @@ var __esbuild_esm_mermaid = (() => { if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; }, "lineEnd"), - point: /* @__PURE__ */ __name(function(x5, y5) { - x5 = +x5, y5 = +y5; + point: /* @__PURE__ */ __name(function(x5, y6) { + x5 = +x5, y6 = +y6; switch (this._point) { case 0: this._point = 1; - this._line ? this._context.lineTo(x5, y5) : this._context.moveTo(x5, y5); + this._line ? this._context.lineTo(x5, y6) : this._context.moveTo(x5, y6); break; case 1: this._point = 2; // falls through default: { if (this._t <= 0) { - this._context.lineTo(this._x, y5); - this._context.lineTo(x5, y5); + this._context.lineTo(this._x, y6); + this._context.lineTo(x5, y6); } else { var x1 = this._x * (1 - this._t) + x5 * this._t; this._context.lineTo(x1, this._y); - this._context.lineTo(x1, y5); + this._context.lineTo(x1, y6); } break; } } - this._x = x5, this._y = y5; + this._x = x5, this._y = y6; }, "point") }; __name(step_default, "default"); @@ -30403,7 +30504,7 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/constant.js - var init_constant6 = __esm({ + var init_constant7 = __esm({ "../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/constant.js"() { "use strict"; } @@ -30417,10 +30518,10 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/transform.js - function Transform(k2, x5, y5) { + function Transform(k2, x5, y6) { this.k = k2; this.x = x5; - this.y = y5; + this.y = y6; } function transform(node2) { while (!node2.__zoom) if (!(node2 = node2.parentNode)) return identity3; @@ -30436,8 +30537,8 @@ var __esbuild_esm_mermaid = (() => { scale: /* @__PURE__ */ __name(function(k2) { return k2 === 1 ? this : new Transform(this.k * k2, this.x, this.y); }, "scale"), - translate: /* @__PURE__ */ __name(function(x5, y5) { - return x5 === 0 & y5 === 0 ? this : new Transform(this.k, this.x + this.k * x5, this.y + this.k * y5); + translate: /* @__PURE__ */ __name(function(x5, y6) { + return x5 === 0 & y6 === 0 ? this : new Transform(this.k, this.x + this.k * x5, this.y + this.k * y6); }, "translate"), apply: /* @__PURE__ */ __name(function(point8) { return [point8[0] * this.k + this.x, point8[1] * this.k + this.y]; @@ -30445,8 +30546,8 @@ var __esbuild_esm_mermaid = (() => { applyX: /* @__PURE__ */ __name(function(x5) { return x5 * this.k + this.x; }, "applyX"), - applyY: /* @__PURE__ */ __name(function(y5) { - return y5 * this.k + this.y; + applyY: /* @__PURE__ */ __name(function(y6) { + return y6 * this.k + this.y; }, "applyY"), invert: /* @__PURE__ */ __name(function(location) { return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; @@ -30454,14 +30555,14 @@ var __esbuild_esm_mermaid = (() => { invertX: /* @__PURE__ */ __name(function(x5) { return (x5 - this.x) / this.k; }, "invertX"), - invertY: /* @__PURE__ */ __name(function(y5) { - return (y5 - this.y) / this.k; + invertY: /* @__PURE__ */ __name(function(y6) { + return (y6 - this.y) / this.k; }, "invertY"), rescaleX: /* @__PURE__ */ __name(function(x5) { return x5.copy().domain(x5.range().map(this.invertX, this).map(x5.invert, x5)); }, "rescaleX"), - rescaleY: /* @__PURE__ */ __name(function(y5) { - return y5.copy().domain(y5.range().map(this.invertY, this).map(y5.invert, y5)); + rescaleY: /* @__PURE__ */ __name(function(y6) { + return y6.copy().domain(y6.range().map(this.invertY, this).map(y6.invert, y6)); }, "rescaleY"), toString: /* @__PURE__ */ __name(function() { return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; @@ -30485,7 +30586,7 @@ var __esbuild_esm_mermaid = (() => { "../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/zoom.js"() { "use strict"; init_src11(); - init_constant6(); + init_constant7(); init_event2(); init_transform2(); init_noevent2(); @@ -30538,9 +30639,9 @@ var __esbuild_esm_mermaid = (() => { } }); - // ../../node_modules/.pnpm/@braintree+sanitize-url@7.1.0/node_modules/@braintree/sanitize-url/dist/constants.js + // ../../node_modules/.pnpm/@braintree+sanitize-url@7.1.1/node_modules/@braintree/sanitize-url/dist/constants.js var require_constants = __commonJS({ - "../../node_modules/.pnpm/@braintree+sanitize-url@7.1.0/node_modules/@braintree/sanitize-url/dist/constants.js"(exports2) { + "../../node_modules/.pnpm/@braintree+sanitize-url@7.1.1/node_modules/@braintree/sanitize-url/dist/constants.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.BLANK_URL = exports2.relativeFirstCharacters = exports2.whitespaceEscapeCharsRegex = exports2.urlSchemeRegex = exports2.ctrlCharactersRegex = exports2.htmlCtrlEntityRegex = exports2.htmlEntitiesRegex = exports2.invalidProtocolRegex = void 0; @@ -30555,9 +30656,9 @@ var __esbuild_esm_mermaid = (() => { } }); - // ../../node_modules/.pnpm/@braintree+sanitize-url@7.1.0/node_modules/@braintree/sanitize-url/dist/index.js + // ../../node_modules/.pnpm/@braintree+sanitize-url@7.1.1/node_modules/@braintree/sanitize-url/dist/index.js var require_dist = __commonJS({ - "../../node_modules/.pnpm/@braintree+sanitize-url@7.1.0/node_modules/@braintree/sanitize-url/dist/index.js"(exports2) { + "../../node_modules/.pnpm/@braintree+sanitize-url@7.1.1/node_modules/@braintree/sanitize-url/dist/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.sanitizeUrl = void 0; @@ -30694,18 +30795,18 @@ var __esbuild_esm_mermaid = (() => { tspan.text(nText); return textElem; }, "drawText"); - drawImage = /* @__PURE__ */ __name((elem, x5, y5, link3) => { + drawImage = /* @__PURE__ */ __name((elem, x5, y6, link2) => { const imageElement = elem.append("image"); imageElement.attr("x", x5); - imageElement.attr("y", y5); - const sanitizedLink = (0, import_sanitize_url.sanitizeUrl)(link3); + imageElement.attr("y", y6); + const sanitizedLink = (0, import_sanitize_url.sanitizeUrl)(link2); imageElement.attr("xlink:href", sanitizedLink); }, "drawImage"); - drawEmbeddedImage = /* @__PURE__ */ __name((element3, x5, y5, link3) => { + drawEmbeddedImage = /* @__PURE__ */ __name((element3, x5, y6, link2) => { const imageElement = element3.append("use"); imageElement.attr("x", x5); - imageElement.attr("y", y5); - const sanitizedLink = (0, import_sanitize_url.sanitizeUrl)(link3); + imageElement.attr("y", y6); + const sanitizedLink = (0, import_sanitize_url.sanitizeUrl)(link2); imageElement.attr("xlink:href", `#${sanitizedLink}`); }, "drawEmbeddedImage"); getNoteRect = /* @__PURE__ */ __name(() => { @@ -30751,13 +30852,13 @@ var __esbuild_esm_mermaid = (() => { drawRect2 = /* @__PURE__ */ __name(function(elem, rectData) { return drawRect(elem, rectData); }, "drawRect"); - drawImage2 = /* @__PURE__ */ __name(function(elem, width3, height2, x5, y5, link3) { + drawImage2 = /* @__PURE__ */ __name(function(elem, width3, height2, x5, y6, link2) { const imageElem = elem.append("image"); imageElem.attr("width", width3); imageElem.attr("height", height2); imageElem.attr("x", x5); - imageElem.attr("y", y5); - let sanitizedLink = link3.startsWith("data:image/png;base64") ? link3 : (0, import_sanitize_url2.sanitizeUrl)(link3); + imageElem.attr("y", y6); + let sanitizedLink = link2.startsWith("data:image/png;base64") ? link2 : (0, import_sanitize_url2.sanitizeUrl)(link2); imageElem.attr("xlink:href", sanitizedLink); }, "drawImage"); drawRels = /* @__PURE__ */ __name((elem, rels2, conf5) => { @@ -31072,29 +31173,29 @@ var __esbuild_esm_mermaid = (() => { fontWeight: cnf[typeC4Shape + "FontWeight"] }; }, "getC4ShapeFont"); - _drawTextCandidateFunc = /* @__PURE__ */ function() { - function byText(content, g2, x5, y5, width3, height2, textAttrs) { - const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y5 + height2 / 2 + 5).style("text-anchor", "middle").text(content); + _drawTextCandidateFunc = /* @__PURE__ */ (function() { + function byText(content, g2, x5, y6, width3, height2, textAttrs) { + const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y6 + height2 / 2 + 5).style("text-anchor", "middle").text(content); _setTextAttrs(text4, textAttrs); } __name(byText, "byText"); - function byTspan(content, g2, x5, y5, width3, height2, textAttrs, conf5) { + function byTspan(content, g2, x5, y6, width3, height2, textAttrs, conf5) { const { fontSize, fontFamily, fontWeight } = conf5; const lines = content.split(common_default.lineBreakRegex); for (let i2 = 0; i2 < lines.length; i2++) { const dy = i2 * fontSize - fontSize * (lines.length - 1) / 2; - const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y5).style("text-anchor", "middle").attr("dominant-baseline", "middle").style("font-size", fontSize).style("font-weight", fontWeight).style("font-family", fontFamily); + const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y6).style("text-anchor", "middle").attr("dominant-baseline", "middle").style("font-size", fontSize).style("font-weight", fontWeight).style("font-family", fontFamily); text4.append("tspan").attr("dy", dy).text(lines[i2]).attr("alignment-baseline", "mathematical"); _setTextAttrs(text4, textAttrs); } } __name(byTspan, "byTspan"); - function byFo(content, g2, x5, y5, width3, height2, textAttrs, conf5) { + function byFo(content, g2, x5, y6, width3, height2, textAttrs, conf5) { const s2 = g2.append("switch"); - const f2 = s2.append("foreignObject").attr("x", x5).attr("y", y5).attr("width", width3).attr("height", height2); + const f2 = s2.append("foreignObject").attr("x", x5).attr("y", y6).attr("width", width3).attr("height", height2); const text4 = f2.append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); text4.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(content); - byTspan(content, s2, x5, y5, width3, height2, textAttrs, conf5); + byTspan(content, s2, x5, y6, width3, height2, textAttrs, conf5); _setTextAttrs(text4, textAttrs); } __name(byFo, "byFo"); @@ -31109,7 +31210,7 @@ var __esbuild_esm_mermaid = (() => { return function(conf5) { return conf5.textPlacement === "fo" ? byFo : conf5.textPlacement === "old" ? byText : byTspan; }; - }(); + })(); svgDraw_default = { drawRect: drawRect2, drawBoundary, @@ -31163,7 +31264,7 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getRawTag.js function getRawTag(value2) { - var isOwn = hasOwnProperty.call(value2, symToStringTag), tag2 = value2[symToStringTag]; + var isOwn = hasOwnProperty.call(value2, symToStringTag), tag = value2[symToStringTag]; try { value2[symToStringTag] = void 0; var unmasked = true; @@ -31172,7 +31273,7 @@ var __esbuild_esm_mermaid = (() => { var result = nativeObjectToString.call(value2); if (unmasked) { if (isOwn) { - value2[symToStringTag] = tag2; + value2[symToStringTag] = tag; } else { delete value2[symToStringTag]; } @@ -31249,8 +31350,8 @@ var __esbuild_esm_mermaid = (() => { if (!isObject_default(value2)) { return false; } - var tag2 = baseGetTag_default(value2); - return tag2 == funcTag || tag2 == genTag || tag2 == asyncTag || tag2 == proxyTag; + var tag = baseGetTag_default(value2); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; } var asyncTag, funcTag, genTag, proxyTag, isFunction_default; var init_isFunction = __esm({ @@ -31287,10 +31388,10 @@ var __esbuild_esm_mermaid = (() => { "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isMasked.js"() { "use strict"; init_coreJsData(); - maskSrcKey = function() { + maskSrcKey = (function() { var uid = /[^.]+$/.exec(coreJsData_default && coreJsData_default.keys && coreJsData_default.keys.IE_PROTO || ""); return uid ? "Symbol(src)_1." + uid : ""; - }(); + })(); __name(isMasked, "isMasked"); isMasked_default = isMasked; } @@ -31423,12 +31524,12 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashGet.js function hashGet(key) { - var data6 = this.__data__; + var data5 = this.__data__; if (nativeCreate_default) { - var result = data6[key]; + var result = data5[key]; return result === HASH_UNDEFINED ? void 0 : result; } - return hasOwnProperty3.call(data6, key) ? data6[key] : void 0; + return hasOwnProperty3.call(data5, key) ? data5[key] : void 0; } var HASH_UNDEFINED, objectProto4, hasOwnProperty3, hashGet_default; var init_hashGet = __esm({ @@ -31445,8 +31546,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashHas.js function hashHas(key) { - var data6 = this.__data__; - return nativeCreate_default ? data6[key] !== void 0 : hasOwnProperty4.call(data6, key); + var data5 = this.__data__; + return nativeCreate_default ? data5[key] !== void 0 : hasOwnProperty4.call(data5, key); } var objectProto5, hasOwnProperty4, hashHas_default; var init_hashHas = __esm({ @@ -31462,9 +31563,9 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashSet.js function hashSet(key, value2) { - var data6 = this.__data__; + var data5 = this.__data__; this.size += this.has(key) ? 0 : 1; - data6[key] = nativeCreate_default && value2 === void 0 ? HASH_UNDEFINED2 : value2; + data5[key] = nativeCreate_default && value2 === void 0 ? HASH_UNDEFINED2 : value2; return this; } var HASH_UNDEFINED2, hashSet_default; @@ -31521,8 +31622,8 @@ var __esbuild_esm_mermaid = (() => { }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/eq.js - function eq(value2, other2) { - return value2 === other2 || value2 !== value2 && other2 !== other2; + function eq(value2, other) { + return value2 === other || value2 !== value2 && other !== other; } var eq_default; var init_eq = __esm({ @@ -31555,15 +31656,15 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheDelete.js function listCacheDelete(key) { - var data6 = this.__data__, index = assocIndexOf_default(data6, key); + var data5 = this.__data__, index = assocIndexOf_default(data5, key); if (index < 0) { return false; } - var lastIndex = data6.length - 1; + var lastIndex = data5.length - 1; if (index == lastIndex) { - data6.pop(); + data5.pop(); } else { - splice.call(data6, index, 1); + splice.call(data5, index, 1); } --this.size; return true; @@ -31582,8 +31683,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheGet.js function listCacheGet(key) { - var data6 = this.__data__, index = assocIndexOf_default(data6, key); - return index < 0 ? void 0 : data6[index][1]; + var data5 = this.__data__, index = assocIndexOf_default(data5, key); + return index < 0 ? void 0 : data5[index][1]; } var listCacheGet_default; var init_listCacheGet = __esm({ @@ -31611,12 +31712,12 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheSet.js function listCacheSet(key, value2) { - var data6 = this.__data__, index = assocIndexOf_default(data6, key); + var data5 = this.__data__, index = assocIndexOf_default(data5, key); if (index < 0) { ++this.size; - data6.push([key, value2]); + data5.push([key, value2]); } else { - data6[index][1] = value2; + data5[index][1] = value2; } return this; } @@ -31707,8 +31808,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMapData.js function getMapData(map5, key) { - var data6 = map5.__data__; - return isKeyable_default(key) ? data6[typeof key == "string" ? "string" : "hash"] : data6.map; + var data5 = map5.__data__; + return isKeyable_default(key) ? data5[typeof key == "string" ? "string" : "hash"] : data5.map; } var getMapData_default; var init_getMapData = __esm({ @@ -31766,9 +31867,9 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheSet.js function mapCacheSet(key, value2) { - var data6 = getMapData_default(this, key), size5 = data6.size; - data6.set(key, value2); - this.size += data6.size == size5 ? 0 : 1; + var data5 = getMapData_default(this, key), size4 = data5.size; + data5.set(key, value2); + this.size += data5.size == size4 ? 0 : 1; return this; } var mapCacheSet_default; @@ -31855,8 +31956,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackDelete.js function stackDelete(key) { - var data6 = this.__data__, result = data6["delete"](key); - this.size = data6.size; + var data5 = this.__data__, result = data5["delete"](key); + this.size = data5.size; return result; } var stackDelete_default; @@ -31896,18 +31997,18 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackSet.js function stackSet(key, value2) { - var data6 = this.__data__; - if (data6 instanceof ListCache_default) { - var pairs2 = data6.__data__; + var data5 = this.__data__; + if (data5 instanceof ListCache_default) { + var pairs2 = data5.__data__; if (!Map_default || pairs2.length < LARGE_ARRAY_SIZE - 1) { pairs2.push([key, value2]); - this.size = ++data6.size; + this.size = ++data5.size; return this; } - data6 = this.__data__ = new MapCache_default(pairs2); + data5 = this.__data__ = new MapCache_default(pairs2); } - data6.set(key, value2); - this.size = data6.size; + data5.set(key, value2); + this.size = data5.size; return this; } var LARGE_ARRAY_SIZE, stackSet_default; @@ -31925,8 +32026,8 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Stack.js function Stack(entries2) { - var data6 = this.__data__ = new ListCache_default(entries2); - this.size = data6.size; + var data5 = this.__data__ = new ListCache_default(entries2); + this.size = data5.size; } var Stack_default; var init_Stack = __esm({ @@ -31954,14 +32055,14 @@ var __esbuild_esm_mermaid = (() => { "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_defineProperty.js"() { "use strict"; init_getNative(); - defineProperty = function() { + defineProperty = (function() { try { var func = getNative_default(Object, "defineProperty"); func({}, "", {}); return func; } catch (e3) { } - }(); + })(); defineProperty_default = defineProperty; } }); @@ -32130,7 +32231,7 @@ var __esbuild_esm_mermaid = (() => { "use strict"; init_isObject(); objectCreate = Object.create; - baseCreate = /* @__PURE__ */ function() { + baseCreate = /* @__PURE__ */ (function() { function object3() { } __name(object3, "object"); @@ -32146,7 +32247,7 @@ var __esbuild_esm_mermaid = (() => { object3.prototype = void 0; return result; }; - }(); + })(); baseCreate_default = baseCreate; } }); @@ -32247,9 +32348,9 @@ var __esbuild_esm_mermaid = (() => { objectProto7 = Object.prototype; hasOwnProperty5 = objectProto7.hasOwnProperty; propertyIsEnumerable = objectProto7.propertyIsEnumerable; - isArguments = baseIsArguments_default(/* @__PURE__ */ function() { + isArguments = baseIsArguments_default(/* @__PURE__ */ (function() { return arguments; - }()) ? baseIsArguments_default : function(value2) { + })()) ? baseIsArguments_default : function(value2) { return isObjectLike_default(value2) && hasOwnProperty5.call(value2, "callee") && !propertyIsEnumerable.call(value2, "callee"); }; isArguments_default = isArguments; @@ -32438,7 +32539,7 @@ var __esbuild_esm_mermaid = (() => { freeModule3 = freeExports3 && typeof module == "object" && module && !module.nodeType && module; moduleExports3 = freeModule3 && freeModule3.exports === freeExports3; freeProcess = moduleExports3 && freeGlobal_default.process; - nodeUtil = function() { + nodeUtil = (function() { try { var types = freeModule3 && freeModule3.require && freeModule3.require("util").types; if (types) { @@ -32447,7 +32548,7 @@ var __esbuild_esm_mermaid = (() => { return freeProcess && freeProcess.binding && freeProcess.binding("util"); } catch (e3) { } - }(); + })(); nodeUtil_default = nodeUtil; } }); @@ -32685,8 +32786,8 @@ var __esbuild_esm_mermaid = (() => { return; } var newValue = customizer ? customizer(objValue, srcValue, key + "", object3, source, stack) : void 0; - var isCommon2 = newValue === void 0; - if (isCommon2) { + var isCommon = newValue === void 0; + if (isCommon) { var isArr = isArray_default(srcValue), isBuff = !isArr && isBuffer_default(srcValue), isTyped = !isArr && !isBuff && isTypedArray_default(srcValue); newValue = srcValue; if (isArr || isBuff || isTyped) { @@ -32695,10 +32796,10 @@ var __esbuild_esm_mermaid = (() => { } else if (isArrayLikeObject_default(objValue)) { newValue = copyArray_default(objValue); } else if (isBuff) { - isCommon2 = false; + isCommon = false; newValue = cloneBuffer_default(srcValue, true); } else if (isTyped) { - isCommon2 = false; + isCommon = false; newValue = cloneTypedArray_default(srcValue, true); } else { newValue = []; @@ -32711,10 +32812,10 @@ var __esbuild_esm_mermaid = (() => { newValue = initCloneObject_default(srcValue); } } else { - isCommon2 = false; + isCommon = false; } } - if (isCommon2) { + if (isCommon) { stack.set(srcValue, newValue); mergeFunc(newValue, srcValue, srcIndex, customizer, stack); stack["delete"](srcValue); @@ -32849,12 +32950,12 @@ var __esbuild_esm_mermaid = (() => { return value2; }; } - var constant_default6; - var init_constant7 = __esm({ + var constant_default7; + var init_constant8 = __esm({ "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/constant.js"() { "use strict"; __name(constant, "constant"); - constant_default6 = constant; + constant_default7 = constant; } }); @@ -32863,14 +32964,14 @@ var __esbuild_esm_mermaid = (() => { var init_baseSetToString = __esm({ "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseSetToString.js"() { "use strict"; - init_constant7(); + init_constant8(); init_defineProperty(); init_identity4(); baseSetToString = !defineProperty_default ? identity_default4 : function(func, string3) { return defineProperty_default(func, "toString", { "configurable": true, "enumerable": false, - "value": constant_default6(string3), + "value": constant_default7(string3), "writable": true }); }; @@ -32880,16 +32981,16 @@ var __esbuild_esm_mermaid = (() => { // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_shortOut.js function shortOut(func) { - var count = 0, lastCalled = 0; + var count2 = 0, lastCalled = 0; return function() { var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); lastCalled = stamp; if (remaining > 0) { - if (++count >= HOT_COUNT) { + if (++count2 >= HOT_COUNT) { return arguments[0]; } } else { - count = 0; + count2 = 0; } return func.apply(void 0, arguments); }; @@ -33050,21 +33151,21 @@ var __esbuild_esm_mermaid = (() => { } const distanceToCardinalityPoint = 25 + terminalMarkerSize; const center4 = calculatePoint(points, distanceToCardinalityPoint); - const d2 = 10 + terminalMarkerSize * 0.5; + const d3 = 10 + terminalMarkerSize * 0.5; const angle2 = Math.atan2(points[0].y - center4.y, points[0].x - center4.x); const cardinalityPosition = { x: 0, y: 0 }; if (position5 === "start_left") { - cardinalityPosition.x = Math.sin(angle2 + Math.PI) * d2 + (points[0].x + center4.x) / 2; - cardinalityPosition.y = -Math.cos(angle2 + Math.PI) * d2 + (points[0].y + center4.y) / 2; + cardinalityPosition.x = Math.sin(angle2 + Math.PI) * d3 + (points[0].x + center4.x) / 2; + cardinalityPosition.y = -Math.cos(angle2 + Math.PI) * d3 + (points[0].y + center4.y) / 2; } else if (position5 === "end_right") { - cardinalityPosition.x = Math.sin(angle2 - Math.PI) * d2 + (points[0].x + center4.x) / 2 - 5; - cardinalityPosition.y = -Math.cos(angle2 - Math.PI) * d2 + (points[0].y + center4.y) / 2 - 5; + cardinalityPosition.x = Math.sin(angle2 - Math.PI) * d3 + (points[0].x + center4.x) / 2 - 5; + cardinalityPosition.y = -Math.cos(angle2 - Math.PI) * d3 + (points[0].y + center4.y) / 2 - 5; } else if (position5 === "end_left") { - cardinalityPosition.x = Math.sin(angle2) * d2 + (points[0].x + center4.x) / 2 - 5; - cardinalityPosition.y = -Math.cos(angle2) * d2 + (points[0].y + center4.y) / 2 - 5; + cardinalityPosition.x = Math.sin(angle2) * d3 + (points[0].x + center4.x) / 2 - 5; + cardinalityPosition.y = -Math.cos(angle2) * d3 + (points[0].y + center4.y) / 2 - 5; } else { - cardinalityPosition.x = Math.sin(angle2) * d2 + (points[0].x + center4.x) / 2; - cardinalityPosition.y = -Math.cos(angle2) * d2 + (points[0].y + center4.y) / 2; + cardinalityPosition.x = Math.sin(angle2) * d3 + (points[0].x + center4.x) / 2; + cardinalityPosition.y = -Math.cos(angle2) * d3 + (points[0].y + center4.y) / 2; } return cardinalityPosition; } @@ -33100,12 +33201,21 @@ var __esbuild_esm_mermaid = (() => { function isDetailedError(error3) { return "str" in error3; } - function cleanAndMerge(defaultData, data6) { - return merge_default3({}, defaultData, data6); + function cleanAndMerge(defaultData, data5) { + return merge_default3({}, defaultData, data5); } function handleUndefinedAttr(attrValue) { return attrValue ?? null; } + function isLabelCoordinateInPath(point8, dAttr) { + const roundedX = Math.round(point8.x); + const roundedY = Math.round(point8.y); + const sanitizedD = dAttr.replace( + /(\d+\.\d+)/g, + (match2) => Math.round(parseFloat(match2)).toString() + ); + return sanitizedD.includes(roundedX.toString()) || sanitizedD.includes(roundedY.toString()); + } var import_sanitize_url3, ZERO_WIDTH_SPACE, d3CurveTypes, directiveWithoutOpen, detectInit, detectDirective, removeDirectives, isSubstringInArray, runFunc, roundNumber, calculatePoint, calcCardinalityPosition, cnt, generateId, random, getTextObj2, drawSimpleText, wrapLabel, breakString, calculateTextDimensions, InitIDGenerator, decoder, entityDecode, insertTitle, parseFontSize, utils_default2, encodeEntities, decodeEntities, getEdgeId; var init_utils2 = __esm({ "src/utils.ts"() { @@ -33274,11 +33384,11 @@ var __esbuild_esm_mermaid = (() => { } const distanceToCardinalityPoint = 25; const center4 = calculatePoint(points, distanceToCardinalityPoint); - const d2 = isRelationTypePresent ? 10 : 5; + const d3 = isRelationTypePresent ? 10 : 5; const angle2 = Math.atan2(points[0].y - center4.y, points[0].x - center4.x); const cardinalityPosition = { x: 0, y: 0 }; - cardinalityPosition.x = Math.sin(angle2) * d2 + (points[0].x + center4.x) / 2; - cardinalityPosition.y = -Math.cos(angle2) * d2 + (points[0].y + center4.y) / 2; + cardinalityPosition.x = Math.sin(angle2) * d3 + (points[0].x + center4.x) / 2; + cardinalityPosition.y = -Math.cos(angle2) * d3 + (points[0].y + center4.y) / 2; return cardinalityPosition; }, "calcCardinalityPosition"); __name(calcTerminalLabelPosition, "calcTerminalLabelPosition"); @@ -33289,8 +33399,8 @@ var __esbuild_esm_mermaid = (() => { return "id-" + Math.random().toString(36).substr(2, 12) + "-" + cnt; }, "generateId"); __name(makeRandomHex, "makeRandomHex"); - random = /* @__PURE__ */ __name((options3) => { - return makeRandomHex(options3.length); + random = /* @__PURE__ */ __name((options2) => { + return makeRandomHex(options2.length); }, "random"); getTextObj2 = /* @__PURE__ */ __name(function() { return { @@ -33329,7 +33439,7 @@ var __esbuild_esm_mermaid = (() => { return textElem; }, "drawSimpleText"); wrapLabel = memoize_default( - (label, maxWidth, config5) => { + (label, maxWidth2, config5) => { if (!label) { return label; } @@ -33346,11 +33456,11 @@ var __esbuild_esm_mermaid = (() => { words.forEach((word, index) => { const wordLength = calculateTextWidth(`${word} `, config5); const nextLineLength = calculateTextWidth(nextLine, config5); - if (wordLength > maxWidth) { - const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, "-", config5); + if (wordLength > maxWidth2) { + const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth2, "-", config5); completedLines.push(nextLine, ...hyphenatedStrings); nextLine = remainingWord; - } else if (nextLineLength + wordLength >= maxWidth) { + } else if (nextLineLength + wordLength >= maxWidth2) { completedLines.push(nextLine); nextLine = word; } else { @@ -33364,10 +33474,10 @@ var __esbuild_esm_mermaid = (() => { }); return completedLines.filter((line2) => line2 !== "").join(config5.joinWith); }, - (label, maxWidth, config5) => `${label}${maxWidth}${config5.fontSize}${config5.fontWeight}${config5.fontFamily}${config5.joinWith}` + (label, maxWidth2, config5) => `${label}${maxWidth2}${config5.fontSize}${config5.fontWeight}${config5.fontFamily}${config5.joinWith}` ); breakString = memoize_default( - (word, maxWidth, hyphenCharacter = "-", config5) => { + (word, maxWidth2, hyphenCharacter = "-", config5) => { config5 = Object.assign( { fontSize: 12, fontWeight: 400, fontFamily: "Arial", margin: 0 }, config5 @@ -33378,7 +33488,7 @@ var __esbuild_esm_mermaid = (() => { characters2.forEach((character2, index) => { const nextLine = `${currentLine}${character2}`; const lineWidth = calculateTextWidth(nextLine, config5); - if (lineWidth >= maxWidth) { + if (lineWidth >= maxWidth2) { const currentCharacter = index + 1; const isLastLine = characters2.length === currentCharacter; const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`; @@ -33390,7 +33500,7 @@ var __esbuild_esm_mermaid = (() => { }); return { hyphenatedStrings: lines, remainingWord: currentLine }; }, - (word, maxWidth, hyphenCharacter = "-", config5) => `${word}${maxWidth}${hyphenCharacter}${config5.fontSize}${config5.fontWeight}${config5.fontFamily}` + (word, maxWidth2, hyphenCharacter = "-", config5) => `${word}${maxWidth2}${hyphenCharacter}${config5.fontSize}${config5.fontWeight}${config5.fontFamily}` ); __name(calculateTextHeight, "calculateTextHeight"); __name(calculateTextWidth, "calculateTextWidth"); @@ -33443,10 +33553,10 @@ var __esbuild_esm_mermaid = (() => { __name(this, "InitIDGenerator"); } }; - entityDecode = /* @__PURE__ */ __name(function(html3) { + entityDecode = /* @__PURE__ */ __name(function(html2) { decoder = decoder || document.createElement("div"); - html3 = escape(html3).replace(/%26/g, "&").replace(/%23/g, "#").replace(/%3B/g, ";"); - decoder.innerHTML = html3; + html2 = escape(html2).replace(/%26/g, "&").replace(/%23/g, "#").replace(/%3B/g, ";"); + decoder.innerHTML = html2; return unescape(decoder.textContent); }, "entityDecode"); __name(isDetailedError, "isDetailedError"); @@ -33495,6 +33605,7 @@ var __esbuild_esm_mermaid = (() => { runFunc, entityDecode, insertTitle, + isLabelCoordinateInPath, parseFontSize, InitIDGenerator }; @@ -33524,13 +33635,14 @@ var __esbuild_esm_mermaid = (() => { counter: counter2 = 0, prefix, suffix - }, id29) => { - if (id29) { - return id29; + }, id30) => { + if (id30) { + return id30; } return `${prefix ? `${prefix}_` : ""}${from2}_${to}_${counter2}${suffix ? `_${suffix}` : ""}`; }, "getEdgeId"); __name(handleUndefinedAttr, "handleUndefinedAttr"); + __name(isLabelCoordinateInPath, "isLabelCoordinateInPath"); } }); @@ -33559,7 +33671,7 @@ var __esbuild_esm_mermaid = (() => { } } } - function drawInsideBoundary(diagram26, parentBoundaryAlias, parentBounds, currentBoundaries, diagObj) { + function drawInsideBoundary(diagram27, parentBoundaryAlias, parentBounds, currentBoundaries, diagObj) { let currentBounds = new Bounds(diagObj); currentBounds.data.widthLimit = parentBounds.data.widthLimit / Math.min(c4BoundaryInRow2, currentBoundaries.length); for (let [i2, currentBoundary] of currentBoundaries.entries()) { @@ -33625,16 +33737,16 @@ var __esbuild_esm_mermaid = (() => { if (currentPersonOrSystemKeys.length > 0) { drawC4ShapeArray( currentBounds, - diagram26, + diagram27, currentPersonOrSystemArray, currentPersonOrSystemKeys ); } parentBoundaryAlias = currentBoundary.alias; - let nextCurrentBoundaries = diagObj.db.getBoundarys(parentBoundaryAlias); + let nextCurrentBoundaries = diagObj.db.getBoundaries(parentBoundaryAlias); if (nextCurrentBoundaries.length > 0) { drawInsideBoundary( - diagram26, + diagram27, parentBoundaryAlias, currentBounds, nextCurrentBoundaries, @@ -33642,7 +33754,7 @@ var __esbuild_esm_mermaid = (() => { ); } if (currentBoundary.alias !== "global") { - drawBoundary2(diagram26, currentBoundary, currentBounds); + drawBoundary2(diagram27, currentBoundary, currentBounds); } parentBounds.data.stopy = Math.max( currentBounds.data.stopy + conf.c4ShapeMargin, @@ -33791,7 +33903,7 @@ var __esbuild_esm_mermaid = (() => { }; }, "messageFont"); __name(calcC4ShapeTextWH, "calcC4ShapeTextWH"); - drawBoundary2 = /* @__PURE__ */ __name(function(diagram26, boundary, bounds4) { + drawBoundary2 = /* @__PURE__ */ __name(function(diagram27, boundary, bounds4) { boundary.x = bounds4.data.startx; boundary.y = bounds4.data.starty; boundary.width = bounds4.data.stopx - bounds4.data.startx; @@ -33803,9 +33915,9 @@ var __esbuild_esm_mermaid = (() => { boundaryLabelConf.fontWeight = "bold"; let textLimitWidth = calculateTextWidth(boundary.label.text, boundaryLabelConf); calcC4ShapeTextWH("label", boundary, boundaryTextWrap, boundaryLabelConf, textLimitWidth); - svgDraw_default.drawBoundary(diagram26, boundary, conf); + svgDraw_default.drawBoundary(diagram27, boundary, conf); }, "drawBoundary"); - drawC4ShapeArray = /* @__PURE__ */ __name(function(currentBounds, diagram26, c4ShapeArray2, c4ShapeKeys) { + drawC4ShapeArray = /* @__PURE__ */ __name(function(currentBounds, diagram27, c4ShapeArray2, c4ShapeKeys) { let Y3 = 0; for (const c4ShapeKey of c4ShapeKeys) { Y3 = 0; @@ -33871,7 +33983,7 @@ var __esbuild_esm_mermaid = (() => { c4Shape.height = Math.max(c4Shape.height || conf.height, rectHeight, conf.height); c4Shape.margin = c4Shape.margin || conf.c4ShapeMargin; currentBounds.insert(c4Shape); - svgDraw_default.drawC4Shape(diagram26, c4Shape, conf); + svgDraw_default.drawC4Shape(diagram27, c4Shape, conf); } currentBounds.bumpLastMargin(conf.c4ShapeMargin); }, "drawC4ShapeArray"); @@ -33879,9 +33991,9 @@ var __esbuild_esm_mermaid = (() => { static { __name(this, "Point"); } - constructor(x5, y5) { + constructor(x5, y6) { this.x = x5; - this.y = y5; + this.y = y6; } }; getIntersectPoint = /* @__PURE__ */ __name(function(fromNode, endPoint) { @@ -33948,7 +34060,7 @@ var __esbuild_esm_mermaid = (() => { let endPoint = getIntersectPoint(endNode, endIntersectPoint); return { startPoint, endPoint }; }, "getIntersectPoints"); - drawRels2 = /* @__PURE__ */ __name(function(diagram26, rels2, getC4ShapeObj, diagObj) { + drawRels2 = /* @__PURE__ */ __name(function(diagram27, rels2, getC4ShapeObj, diagObj) { let i2 = 0; for (let rel2 of rels2) { i2 = i2 + 1; @@ -33974,26 +34086,26 @@ var __esbuild_esm_mermaid = (() => { rel2.startPoint = points.startPoint; rel2.endPoint = points.endPoint; } - svgDraw_default.drawRels(diagram26, rels2, conf); + svgDraw_default.drawRels(diagram27, rels2, conf); }, "drawRels"); __name(drawInsideBoundary, "drawInsideBoundary"); - draw = /* @__PURE__ */ __name(function(_text, id29, _version, diagObj) { + draw = /* @__PURE__ */ __name(function(_text, id30, _version, diagObj) { conf = getConfig2().c4; const securityLevel = getConfig2().securityLevel; let sandboxElement; if (securityLevel === "sandbox") { - sandboxElement = select_default2("#i" + id29); + sandboxElement = select_default2("#i" + id30); } - const root4 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); - let db10 = diagObj.db; + const root3 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); + let db7 = diagObj.db; diagObj.db.setWrap(conf.wrap); - c4ShapeInRow2 = db10.getC4ShapeInRow(); - c4BoundaryInRow2 = db10.getC4BoundaryInRow(); + c4ShapeInRow2 = db7.getC4ShapeInRow(); + c4BoundaryInRow2 = db7.getC4BoundaryInRow(); log.debug(`C:${JSON.stringify(conf, null, 2)}`); - const diagram26 = securityLevel === "sandbox" ? root4.select(`[id="${id29}"]`) : select_default2(`[id="${id29}"]`); - svgDraw_default.insertComputerIcon(diagram26); - svgDraw_default.insertDatabaseIcon(diagram26); - svgDraw_default.insertClockIcon(diagram26); + const diagram27 = securityLevel === "sandbox" ? root3.select(`[id="${id30}"]`) : select_default2(`[id="${id30}"]`); + svgDraw_default.insertComputerIcon(diagram27); + svgDraw_default.insertDatabaseIcon(diagram27); + svgDraw_default.insertClockIcon(diagram27); let screenBounds = new Bounds(diagObj); screenBounds.setData( conf.diagramMarginX, @@ -34005,13 +34117,13 @@ var __esbuild_esm_mermaid = (() => { globalBoundaryMaxX = conf.diagramMarginX; globalBoundaryMaxY = conf.diagramMarginY; const title2 = diagObj.db.getTitle(); - let currentBoundaries = diagObj.db.getBoundarys(""); - drawInsideBoundary(diagram26, "", screenBounds, currentBoundaries, diagObj); - svgDraw_default.insertArrowHead(diagram26); - svgDraw_default.insertArrowEnd(diagram26); - svgDraw_default.insertArrowCrossHead(diagram26); - svgDraw_default.insertArrowFilledHead(diagram26); - drawRels2(diagram26, diagObj.db.getRels(), diagObj.db.getC4Shape, diagObj); + let currentBoundaries = diagObj.db.getBoundaries(""); + drawInsideBoundary(diagram27, "", screenBounds, currentBoundaries, diagObj); + svgDraw_default.insertArrowHead(diagram27); + svgDraw_default.insertArrowEnd(diagram27); + svgDraw_default.insertArrowCrossHead(diagram27); + svgDraw_default.insertArrowFilledHead(diagram27); + drawRels2(diagram27, diagObj.db.getRels(), diagObj.db.getC4Shape, diagObj); screenBounds.data.stopx = globalBoundaryMaxX; screenBounds.data.stopy = globalBoundaryMaxY; const box = screenBounds.data; @@ -34020,11 +34132,11 @@ var __esbuild_esm_mermaid = (() => { let boxWidth = box.stopx - box.startx; const width3 = boxWidth + 2 * conf.diagramMarginX; if (title2) { - diagram26.append("text").text(title2).attr("x", (box.stopx - box.startx) / 2 - 4 * conf.diagramMarginX).attr("y", box.starty + conf.diagramMarginY); + diagram27.append("text").text(title2).attr("x", (box.stopx - box.startx) / 2 - 4 * conf.diagramMarginX).attr("y", box.starty + conf.diagramMarginY); } - configureSvgSize(diagram26, height2, width3, conf.useMaxWidth); + configureSvgSize(diagram27, height2, width3, conf.useMaxWidth); const extraVertForTitle = title2 ? 60 : 0; - diagram26.attr( + diagram27.attr( "viewBox", box.startx - conf.diagramMarginX + " -" + (conf.diagramMarginY + extraVertForTitle) + " " + width3 + " " + (height2 + extraVertForTitle) ); @@ -34044,9 +34156,9 @@ var __esbuild_esm_mermaid = (() => { var init_styles2 = __esm({ "src/diagrams/c4/styles.js"() { "use strict"; - getStyles2 = /* @__PURE__ */ __name((options3) => `.person { - stroke: ${options3.personBorder}; - fill: ${options3.personBkg}; + getStyles2 = /* @__PURE__ */ __name((options2) => `.person { + stroke: ${options2.personBorder}; + fill: ${options2.personBkg}; } `, "getStyles"); styles_default2 = getStyles2; @@ -34102,9 +34214,9 @@ var __esbuild_esm_mermaid = (() => { } return target; } - function repeat(string3, count) { + function repeat(string3, count2) { var result = "", cycle; - for (cycle = 0; cycle < count; cycle += 1) { + for (cycle = 0; cycle < count2; cycle += 1) { result += string3; } return result; @@ -34157,19 +34269,19 @@ var __esbuild_esm_mermaid = (() => { function padStart(string3, max10) { return common.repeat(" ", max10 - string3.length) + string3; } - function makeSnippet(mark, options3) { - options3 = Object.create(options3 || null); + function makeSnippet(mark, options2) { + options2 = Object.create(options2 || null); if (!mark.buffer) return null; - if (!options3.maxLength) options3.maxLength = 79; - if (typeof options3.indent !== "number") options3.indent = 1; - if (typeof options3.linesBefore !== "number") options3.linesBefore = 3; - if (typeof options3.linesAfter !== "number") options3.linesAfter = 2; - var re2 = /\r?\n|\r|\0/g; + if (!options2.maxLength) options2.maxLength = 79; + if (typeof options2.indent !== "number") options2.indent = 1; + if (typeof options2.linesBefore !== "number") options2.linesBefore = 3; + if (typeof options2.linesAfter !== "number") options2.linesAfter = 2; + var re3 = /\r?\n|\r|\0/g; var lineStarts = [0]; var lineEnds = []; var match2; var foundLineNo = -1; - while (match2 = re2.exec(mark.buffer)) { + while (match2 = re3.exec(mark.buffer)) { lineEnds.push(match2.index); lineStarts.push(match2.index + match2[0].length); if (mark.position <= match2.index && foundLineNo < 0) { @@ -34178,9 +34290,9 @@ var __esbuild_esm_mermaid = (() => { } if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; var result = "", i2, line2; - var lineNoLength = Math.min(mark.line + options3.linesAfter, lineEnds.length).toString().length; - var maxLineLength = options3.maxLength - (options3.indent + lineNoLength + 3); - for (i2 = 1; i2 <= options3.linesBefore; i2++) { + var lineNoLength = Math.min(mark.line + options2.linesAfter, lineEnds.length).toString().length; + var maxLineLength = options2.maxLength - (options2.indent + lineNoLength + 3); + for (i2 = 1; i2 <= options2.linesBefore; i2++) { if (foundLineNo - i2 < 0) break; line2 = getLine( mark.buffer, @@ -34189,12 +34301,12 @@ var __esbuild_esm_mermaid = (() => { mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i2]), maxLineLength ); - result = common.repeat(" ", options3.indent) + padStart((mark.line - i2 + 1).toString(), lineNoLength) + " | " + line2.str + "\n" + result; + result = common.repeat(" ", options2.indent) + padStart((mark.line - i2 + 1).toString(), lineNoLength) + " | " + line2.str + "\n" + result; } line2 = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); - result += common.repeat(" ", options3.indent) + padStart((mark.line + 1).toString(), lineNoLength) + " | " + line2.str + "\n"; - result += common.repeat("-", options3.indent + lineNoLength + 3 + line2.pos) + "^\n"; - for (i2 = 1; i2 <= options3.linesAfter; i2++) { + result += common.repeat(" ", options2.indent) + padStart((mark.line + 1).toString(), lineNoLength) + " | " + line2.str + "\n"; + result += common.repeat("-", options2.indent + lineNoLength + 3 + line2.pos) + "^\n"; + for (i2 = 1; i2 <= options2.linesAfter; i2++) { if (foundLineNo + i2 >= lineEnds.length) break; line2 = getLine( mark.buffer, @@ -34203,7 +34315,7 @@ var __esbuild_esm_mermaid = (() => { mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i2]), maxLineLength ); - result += common.repeat(" ", options3.indent) + padStart((mark.line + i2 + 1).toString(), lineNoLength) + " | " + line2.str + "\n"; + result += common.repeat(" ", options2.indent) + padStart((mark.line + i2 + 1).toString(), lineNoLength) + " | " + line2.str + "\n"; } return result.replace(/\n$/, ""); } @@ -34218,31 +34330,31 @@ var __esbuild_esm_mermaid = (() => { } return result; } - function Type$1(tag2, options3) { - options3 = options3 || {}; - Object.keys(options3).forEach(function(name) { + function Type$1(tag, options2) { + options2 = options2 || {}; + Object.keys(options2).forEach(function(name) { if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { - throw new exception('Unknown option "' + name + '" is met in definition of "' + tag2 + '" YAML type.'); + throw new exception('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); } }); - this.options = options3; - this.tag = tag2; - this.kind = options3["kind"] || null; - this.resolve = options3["resolve"] || function() { + this.options = options2; + this.tag = tag; + this.kind = options2["kind"] || null; + this.resolve = options2["resolve"] || function() { return true; }; - this.construct = options3["construct"] || function(data6) { - return data6; + this.construct = options2["construct"] || function(data5) { + return data5; }; - this.instanceOf = options3["instanceOf"] || null; - this.predicate = options3["predicate"] || null; - this.represent = options3["represent"] || null; - this.representName = options3["representName"] || null; - this.defaultStyle = options3["defaultStyle"] || null; - this.multi = options3["multi"] || false; - this.styleAliases = compileStyleAliases(options3["styleAliases"] || null); + this.instanceOf = options2["instanceOf"] || null; + this.predicate = options2["predicate"] || null; + this.represent = options2["represent"] || null; + this.representName = options2["representName"] || null; + this.defaultStyle = options2["defaultStyle"] || null; + this.multi = options2["multi"] || false; + this.styleAliases = compileStyleAliases(options2["styleAliases"] || null); if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { - throw new exception('Unknown kind "' + this.kind + '" is specified for "' + tag2 + '" YAML type.'); + throw new exception('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); } } function compileList(schema2, name) { @@ -34288,10 +34400,10 @@ var __esbuild_esm_mermaid = (() => { function Schema$1(definition) { return this.extend(definition); } - function resolveYamlNull(data6) { - if (data6 === null) return true; - var max10 = data6.length; - return max10 === 1 && data6 === "~" || max10 === 4 && (data6 === "null" || data6 === "Null" || data6 === "NULL"); + function resolveYamlNull(data5) { + if (data5 === null) return true; + var max10 = data5.length; + return max10 === 1 && data5 === "~" || max10 === 4 && (data5 === "null" || data5 === "Null" || data5 === "NULL"); } function constructYamlNull() { return null; @@ -34299,13 +34411,13 @@ var __esbuild_esm_mermaid = (() => { function isNull(object3) { return object3 === null; } - function resolveYamlBoolean(data6) { - if (data6 === null) return false; - var max10 = data6.length; - return max10 === 4 && (data6 === "true" || data6 === "True" || data6 === "TRUE") || max10 === 5 && (data6 === "false" || data6 === "False" || data6 === "FALSE"); + function resolveYamlBoolean(data5) { + if (data5 === null) return false; + var max10 = data5.length; + return max10 === 4 && (data5 === "true" || data5 === "True" || data5 === "TRUE") || max10 === 5 && (data5 === "false" || data5 === "False" || data5 === "FALSE"); } - function constructYamlBoolean(data6) { - return data6 === "true" || data6 === "True" || data6 === "TRUE"; + function constructYamlBoolean(data5) { + return data5 === "true" || data5 === "True" || data5 === "TRUE"; } function isBoolean(object3) { return Object.prototype.toString.call(object3) === "[object Boolean]"; @@ -34319,21 +34431,21 @@ var __esbuild_esm_mermaid = (() => { function isDecCode(c3) { return 48 <= c3 && c3 <= 57; } - function resolveYamlInteger(data6) { - if (data6 === null) return false; - var max10 = data6.length, index = 0, hasDigits = false, ch; + function resolveYamlInteger(data5) { + if (data5 === null) return false; + var max10 = data5.length, index = 0, hasDigits = false, ch; if (!max10) return false; - ch = data6[index]; + ch = data5[index]; if (ch === "-" || ch === "+") { - ch = data6[++index]; + ch = data5[++index]; } if (ch === "0") { if (index + 1 === max10) return true; - ch = data6[++index]; + ch = data5[++index]; if (ch === "b") { index++; for (; index < max10; index++) { - ch = data6[index]; + ch = data5[index]; if (ch === "_") continue; if (ch !== "0" && ch !== "1") return false; hasDigits = true; @@ -34343,9 +34455,9 @@ var __esbuild_esm_mermaid = (() => { if (ch === "x") { index++; for (; index < max10; index++) { - ch = data6[index]; + ch = data5[index]; if (ch === "_") continue; - if (!isHexCode(data6.charCodeAt(index))) return false; + if (!isHexCode(data5.charCodeAt(index))) return false; hasDigits = true; } return hasDigits && ch !== "_"; @@ -34353,9 +34465,9 @@ var __esbuild_esm_mermaid = (() => { if (ch === "o") { index++; for (; index < max10; index++) { - ch = data6[index]; + ch = data5[index]; if (ch === "_") continue; - if (!isOctCode(data6.charCodeAt(index))) return false; + if (!isOctCode(data5.charCodeAt(index))) return false; hasDigits = true; } return hasDigits && ch !== "_"; @@ -34363,9 +34475,9 @@ var __esbuild_esm_mermaid = (() => { } if (ch === "_") return false; for (; index < max10; index++) { - ch = data6[index]; + ch = data5[index]; if (ch === "_") continue; - if (!isDecCode(data6.charCodeAt(index))) { + if (!isDecCode(data5.charCodeAt(index))) { return false; } hasDigits = true; @@ -34373,8 +34485,8 @@ var __esbuild_esm_mermaid = (() => { if (!hasDigits || ch === "_") return false; return true; } - function constructYamlInteger(data6) { - var value2 = data6, sign2 = 1, ch; + function constructYamlInteger(data5) { + var value2 = data5, sign2 = 1, ch; if (value2.indexOf("_") !== -1) { value2 = value2.replace(/_/g, ""); } @@ -34395,18 +34507,18 @@ var __esbuild_esm_mermaid = (() => { function isInteger(object3) { return Object.prototype.toString.call(object3) === "[object Number]" && (object3 % 1 === 0 && !common.isNegativeZero(object3)); } - function resolveYamlFloat(data6) { - if (data6 === null) return false; - if (!YAML_FLOAT_PATTERN.test(data6) || // Quick hack to not allow integers end with `_` + function resolveYamlFloat(data5) { + if (data5 === null) return false; + if (!YAML_FLOAT_PATTERN.test(data5) || // Quick hack to not allow integers end with `_` // Probably should update regexp & check speed - data6[data6.length - 1] === "_") { + data5[data5.length - 1] === "_") { return false; } return true; } - function constructYamlFloat(data6) { + function constructYamlFloat(data5) { var value2, sign2; - value2 = data6.replace(/_/g, "").toLowerCase(); + value2 = data5.replace(/_/g, "").toLowerCase(); sign2 = value2[0] === "-" ? -1 : 1; if ("+-".indexOf(value2[0]) >= 0) { value2 = value2.slice(1); @@ -34456,16 +34568,16 @@ var __esbuild_esm_mermaid = (() => { function isFloat(object3) { return Object.prototype.toString.call(object3) === "[object Number]" && (object3 % 1 !== 0 || common.isNegativeZero(object3)); } - function resolveYamlTimestamp(data6) { - if (data6 === null) return false; - if (YAML_DATE_REGEXP.exec(data6) !== null) return true; - if (YAML_TIMESTAMP_REGEXP.exec(data6) !== null) return true; + function resolveYamlTimestamp(data5) { + if (data5 === null) return false; + if (YAML_DATE_REGEXP.exec(data5) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data5) !== null) return true; return false; } - function constructYamlTimestamp(data6) { + function constructYamlTimestamp(data5) { var match2, year, month, day, hour, minute, second2, fraction = 0, delta = null, tz_hour, tz_minute, date2; - match2 = YAML_DATE_REGEXP.exec(data6); - if (match2 === null) match2 = YAML_TIMESTAMP_REGEXP.exec(data6); + match2 = YAML_DATE_REGEXP.exec(data5); + if (match2 === null) match2 = YAML_TIMESTAMP_REGEXP.exec(data5); if (match2 === null) throw new Error("Date resolve error"); year = +match2[1]; month = +match2[2] - 1; @@ -34496,22 +34608,22 @@ var __esbuild_esm_mermaid = (() => { function representYamlTimestamp(object3) { return object3.toISOString(); } - function resolveYamlMerge(data6) { - return data6 === "<<" || data6 === null; + function resolveYamlMerge(data5) { + return data5 === "<<" || data5 === null; } - function resolveYamlBinary(data6) { - if (data6 === null) return false; - var code, idx, bitlen = 0, max10 = data6.length, map5 = BASE64_MAP; + function resolveYamlBinary(data5) { + if (data5 === null) return false; + var code, idx, bitlen = 0, max10 = data5.length, map5 = BASE64_MAP; for (idx = 0; idx < max10; idx++) { - code = map5.indexOf(data6.charAt(idx)); + code = map5.indexOf(data5.charAt(idx)); if (code > 64) continue; if (code < 0) return false; bitlen += 6; } return bitlen % 8 === 0; } - function constructYamlBinary(data6) { - var idx, tailbits, input = data6.replace(/[\r\n=]/g, ""), max10 = input.length, map5 = BASE64_MAP, bits = 0, result = []; + function constructYamlBinary(data5) { + var idx, tailbits, input = data5.replace(/[\r\n=]/g, ""), max10 = input.length, map5 = BASE64_MAP, bits = 0, result = []; for (idx = 0; idx < max10; idx++) { if (idx % 4 === 0 && idx) { result.push(bits >> 16 & 255); @@ -34566,9 +34678,9 @@ var __esbuild_esm_mermaid = (() => { function isBinary(obj) { return Object.prototype.toString.call(obj) === "[object Uint8Array]"; } - function resolveYamlOmap(data6) { - if (data6 === null) return true; - var objectKeys = [], index, length2, pair, pairKey, pairHasKey, object3 = data6; + function resolveYamlOmap(data5) { + if (data5 === null) return true; + var objectKeys = [], index, length2, pair, pairKey, pairHasKey, object3 = data5; for (index = 0, length2 = object3.length; index < length2; index += 1) { pair = object3[index]; pairHasKey = false; @@ -34585,36 +34697,36 @@ var __esbuild_esm_mermaid = (() => { } return true; } - function constructYamlOmap(data6) { - return data6 !== null ? data6 : []; + function constructYamlOmap(data5) { + return data5 !== null ? data5 : []; } - function resolveYamlPairs(data6) { - if (data6 === null) return true; - var index, length2, pair, keys3, result, object3 = data6; + function resolveYamlPairs(data5) { + if (data5 === null) return true; + var index, length2, pair, keys2, result, object3 = data5; result = new Array(object3.length); for (index = 0, length2 = object3.length; index < length2; index += 1) { pair = object3[index]; if (_toString$1.call(pair) !== "[object Object]") return false; - keys3 = Object.keys(pair); - if (keys3.length !== 1) return false; - result[index] = [keys3[0], pair[keys3[0]]]; + keys2 = Object.keys(pair); + if (keys2.length !== 1) return false; + result[index] = [keys2[0], pair[keys2[0]]]; } return true; } - function constructYamlPairs(data6) { - if (data6 === null) return []; - var index, length2, pair, keys3, result, object3 = data6; + function constructYamlPairs(data5) { + if (data5 === null) return []; + var index, length2, pair, keys2, result, object3 = data5; result = new Array(object3.length); for (index = 0, length2 = object3.length; index < length2; index += 1) { pair = object3[index]; - keys3 = Object.keys(pair); - result[index] = [keys3[0], pair[keys3[0]]]; + keys2 = Object.keys(pair); + result[index] = [keys2[0], pair[keys2[0]]]; } return result; } - function resolveYamlSet(data6) { - if (data6 === null) return true; - var key, object3 = data6; + function resolveYamlSet(data5) { + if (data5 === null) return true; + var key, object3 = data5; for (key in object3) { if (_hasOwnProperty$2.call(object3, key)) { if (object3[key] !== null) return false; @@ -34622,8 +34734,8 @@ var __esbuild_esm_mermaid = (() => { } return true; } - function constructYamlSet(data6) { - return data6 !== null ? data6 : {}; + function constructYamlSet(data5) { + return data5 !== null ? data5 : {}; } function _class(obj) { return Object.prototype.toString.call(obj); @@ -34681,14 +34793,14 @@ var __esbuild_esm_mermaid = (() => { (c3 - 65536 & 1023) + 56320 ); } - function State$1(input, options3) { + function State$1(input, options2) { this.input = input; - this.filename = options3["filename"] || null; - this.schema = options3["schema"] || _default; - this.onWarning = options3["onWarning"] || null; - this.legacy = options3["legacy"] || false; - this.json = options3["json"] || false; - this.listener = options3["listener"] || null; + this.filename = options2["filename"] || null; + this.schema = options2["schema"] || _default; + this.onWarning = options2["onWarning"] || null; + this.legacy = options2["legacy"] || false; + this.json = options2["json"] || false; + this.listener = options2["listener"] || null; this.implicitTypes = this.schema.compiledImplicit; this.typeMap = this.schema.compiledTypeMap; this.length = input.length; @@ -34699,47 +34811,47 @@ var __esbuild_esm_mermaid = (() => { this.firstTabInLine = -1; this.documents = []; } - function generateError(state4, message) { + function generateError(state3, message) { var mark = { - name: state4.filename, - buffer: state4.input.slice(0, -1), + name: state3.filename, + buffer: state3.input.slice(0, -1), // omit trailing \0 - position: state4.position, - line: state4.line, - column: state4.position - state4.lineStart + position: state3.position, + line: state3.line, + column: state3.position - state3.lineStart }; mark.snippet = snippet(mark); return new exception(message, mark); } - function throwError(state4, message) { - throw generateError(state4, message); + function throwError(state3, message) { + throw generateError(state3, message); } - function throwWarning(state4, message) { - if (state4.onWarning) { - state4.onWarning.call(null, generateError(state4, message)); + function throwWarning(state3, message) { + if (state3.onWarning) { + state3.onWarning.call(null, generateError(state3, message)); } } - function captureSegment(state4, start3, end2, checkJson) { + function captureSegment(state3, start3, end2, checkJson) { var _position, _length, _character, _result; if (start3 < end2) { - _result = state4.input.slice(start3, end2); + _result = state3.input.slice(start3, end2); if (checkJson) { for (_position = 0, _length = _result.length; _position < _length; _position += 1) { _character = _result.charCodeAt(_position); if (!(_character === 9 || 32 <= _character && _character <= 1114111)) { - throwError(state4, "expected valid JSON character"); + throwError(state3, "expected valid JSON character"); } } } else if (PATTERN_NON_PRINTABLE.test(_result)) { - throwError(state4, "the stream contains non-printable characters"); + throwError(state3, "the stream contains non-printable characters"); } - state4.result += _result; + state3.result += _result; } } - function mergeMappings(state4, destination, source, overridableKeys) { + function mergeMappings(state3, destination, source, overridableKeys) { var sourceKeys, key, index, quantity; if (!common.isObject(source)) { - throwError(state4, "cannot merge mappings; the provided source object is unacceptable"); + throwError(state3, "cannot merge mappings; the provided source object is unacceptable"); } sourceKeys = Object.keys(source); for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { @@ -34750,13 +34862,13 @@ var __esbuild_esm_mermaid = (() => { } } } - function storeMappingPair(state4, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) { + function storeMappingPair(state3, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) { var index, quantity; if (Array.isArray(keyNode)) { keyNode = Array.prototype.slice.call(keyNode); for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { if (Array.isArray(keyNode[index])) { - throwError(state4, "nested arrays are not supported inside keys"); + throwError(state3, "nested arrays are not supported inside keys"); } if (typeof keyNode === "object" && _class(keyNode[index]) === "[object Object]") { keyNode[index] = "[object Object]"; @@ -34773,17 +34885,17 @@ var __esbuild_esm_mermaid = (() => { if (keyTag === "tag:yaml.org,2002:merge") { if (Array.isArray(valueNode)) { for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { - mergeMappings(state4, _result, valueNode[index], overridableKeys); + mergeMappings(state3, _result, valueNode[index], overridableKeys); } } else { - mergeMappings(state4, _result, valueNode, overridableKeys); + mergeMappings(state3, _result, valueNode, overridableKeys); } } else { - if (!state4.json && !_hasOwnProperty$1.call(overridableKeys, keyNode) && _hasOwnProperty$1.call(_result, keyNode)) { - state4.line = startLine || state4.line; - state4.lineStart = startLineStart || state4.lineStart; - state4.position = startPos || state4.position; - throwError(state4, "duplicated mapping key"); + if (!state3.json && !_hasOwnProperty$1.call(overridableKeys, keyNode) && _hasOwnProperty$1.call(_result, keyNode)) { + state3.line = startLine || state3.line; + state3.lineStart = startLineStart || state3.lineStart; + state3.position = startPos || state3.position; + throwError(state3, "duplicated mapping key"); } if (keyNode === "__proto__") { Object.defineProperty(_result, keyNode, { @@ -34799,229 +34911,229 @@ var __esbuild_esm_mermaid = (() => { } return _result; } - function readLineBreak(state4) { + function readLineBreak(state3) { var ch; - ch = state4.input.charCodeAt(state4.position); + ch = state3.input.charCodeAt(state3.position); if (ch === 10) { - state4.position++; + state3.position++; } else if (ch === 13) { - state4.position++; - if (state4.input.charCodeAt(state4.position) === 10) { - state4.position++; + state3.position++; + if (state3.input.charCodeAt(state3.position) === 10) { + state3.position++; } } else { - throwError(state4, "a line break is expected"); + throwError(state3, "a line break is expected"); } - state4.line += 1; - state4.lineStart = state4.position; - state4.firstTabInLine = -1; + state3.line += 1; + state3.lineStart = state3.position; + state3.firstTabInLine = -1; } - function skipSeparationSpace(state4, allowComments, checkIndent) { - var lineBreaks = 0, ch = state4.input.charCodeAt(state4.position); + function skipSeparationSpace(state3, allowComments, checkIndent) { + var lineBreaks = 0, ch = state3.input.charCodeAt(state3.position); while (ch !== 0) { while (is_WHITE_SPACE(ch)) { - if (ch === 9 && state4.firstTabInLine === -1) { - state4.firstTabInLine = state4.position; + if (ch === 9 && state3.firstTabInLine === -1) { + state3.firstTabInLine = state3.position; } - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } if (allowComments && ch === 35) { do { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } while (ch !== 10 && ch !== 13 && ch !== 0); } if (is_EOL(ch)) { - readLineBreak(state4); - ch = state4.input.charCodeAt(state4.position); + readLineBreak(state3); + ch = state3.input.charCodeAt(state3.position); lineBreaks++; - state4.lineIndent = 0; + state3.lineIndent = 0; while (ch === 32) { - state4.lineIndent++; - ch = state4.input.charCodeAt(++state4.position); + state3.lineIndent++; + ch = state3.input.charCodeAt(++state3.position); } } else { break; } } - if (checkIndent !== -1 && lineBreaks !== 0 && state4.lineIndent < checkIndent) { - throwWarning(state4, "deficient indentation"); + if (checkIndent !== -1 && lineBreaks !== 0 && state3.lineIndent < checkIndent) { + throwWarning(state3, "deficient indentation"); } return lineBreaks; } - function testDocumentSeparator(state4) { - var _position = state4.position, ch; - ch = state4.input.charCodeAt(_position); - if ((ch === 45 || ch === 46) && ch === state4.input.charCodeAt(_position + 1) && ch === state4.input.charCodeAt(_position + 2)) { + function testDocumentSeparator(state3) { + var _position = state3.position, ch; + ch = state3.input.charCodeAt(_position); + if ((ch === 45 || ch === 46) && ch === state3.input.charCodeAt(_position + 1) && ch === state3.input.charCodeAt(_position + 2)) { _position += 3; - ch = state4.input.charCodeAt(_position); + ch = state3.input.charCodeAt(_position); if (ch === 0 || is_WS_OR_EOL(ch)) { return true; } } return false; } - function writeFoldedLines(state4, count) { - if (count === 1) { - state4.result += " "; - } else if (count > 1) { - state4.result += common.repeat("\n", count - 1); + function writeFoldedLines(state3, count2) { + if (count2 === 1) { + state3.result += " "; + } else if (count2 > 1) { + state3.result += common.repeat("\n", count2 - 1); } } - function readPlainScalar(state4, nodeIndent, withinFlowCollection) { - var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state4.kind, _result = state4.result, ch; - ch = state4.input.charCodeAt(state4.position); + function readPlainScalar(state3, nodeIndent, withinFlowCollection) { + var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state3.kind, _result = state3.result, ch; + ch = state3.input.charCodeAt(state3.position); if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) { return false; } if (ch === 63 || ch === 45) { - following = state4.input.charCodeAt(state4.position + 1); + following = state3.input.charCodeAt(state3.position + 1); if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { return false; } } - state4.kind = "scalar"; - state4.result = ""; - captureStart = captureEnd = state4.position; + state3.kind = "scalar"; + state3.result = ""; + captureStart = captureEnd = state3.position; hasPendingContent = false; while (ch !== 0) { if (ch === 58) { - following = state4.input.charCodeAt(state4.position + 1); + following = state3.input.charCodeAt(state3.position + 1); if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { break; } } else if (ch === 35) { - preceding = state4.input.charCodeAt(state4.position - 1); + preceding = state3.input.charCodeAt(state3.position - 1); if (is_WS_OR_EOL(preceding)) { break; } - } else if (state4.position === state4.lineStart && testDocumentSeparator(state4) || withinFlowCollection && is_FLOW_INDICATOR(ch)) { + } else if (state3.position === state3.lineStart && testDocumentSeparator(state3) || withinFlowCollection && is_FLOW_INDICATOR(ch)) { break; } else if (is_EOL(ch)) { - _line = state4.line; - _lineStart = state4.lineStart; - _lineIndent = state4.lineIndent; - skipSeparationSpace(state4, false, -1); - if (state4.lineIndent >= nodeIndent) { + _line = state3.line; + _lineStart = state3.lineStart; + _lineIndent = state3.lineIndent; + skipSeparationSpace(state3, false, -1); + if (state3.lineIndent >= nodeIndent) { hasPendingContent = true; - ch = state4.input.charCodeAt(state4.position); + ch = state3.input.charCodeAt(state3.position); continue; } else { - state4.position = captureEnd; - state4.line = _line; - state4.lineStart = _lineStart; - state4.lineIndent = _lineIndent; + state3.position = captureEnd; + state3.line = _line; + state3.lineStart = _lineStart; + state3.lineIndent = _lineIndent; break; } } if (hasPendingContent) { - captureSegment(state4, captureStart, captureEnd, false); - writeFoldedLines(state4, state4.line - _line); - captureStart = captureEnd = state4.position; + captureSegment(state3, captureStart, captureEnd, false); + writeFoldedLines(state3, state3.line - _line); + captureStart = captureEnd = state3.position; hasPendingContent = false; } if (!is_WHITE_SPACE(ch)) { - captureEnd = state4.position + 1; + captureEnd = state3.position + 1; } - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } - captureSegment(state4, captureStart, captureEnd, false); - if (state4.result) { + captureSegment(state3, captureStart, captureEnd, false); + if (state3.result) { return true; } - state4.kind = _kind; - state4.result = _result; + state3.kind = _kind; + state3.result = _result; return false; } - function readSingleQuotedScalar(state4, nodeIndent) { + function readSingleQuotedScalar(state3, nodeIndent) { var ch, captureStart, captureEnd; - ch = state4.input.charCodeAt(state4.position); + ch = state3.input.charCodeAt(state3.position); if (ch !== 39) { return false; } - state4.kind = "scalar"; - state4.result = ""; - state4.position++; - captureStart = captureEnd = state4.position; - while ((ch = state4.input.charCodeAt(state4.position)) !== 0) { + state3.kind = "scalar"; + state3.result = ""; + state3.position++; + captureStart = captureEnd = state3.position; + while ((ch = state3.input.charCodeAt(state3.position)) !== 0) { if (ch === 39) { - captureSegment(state4, captureStart, state4.position, true); - ch = state4.input.charCodeAt(++state4.position); + captureSegment(state3, captureStart, state3.position, true); + ch = state3.input.charCodeAt(++state3.position); if (ch === 39) { - captureStart = state4.position; - state4.position++; - captureEnd = state4.position; + captureStart = state3.position; + state3.position++; + captureEnd = state3.position; } else { return true; } } else if (is_EOL(ch)) { - captureSegment(state4, captureStart, captureEnd, true); - writeFoldedLines(state4, skipSeparationSpace(state4, false, nodeIndent)); - captureStart = captureEnd = state4.position; - } else if (state4.position === state4.lineStart && testDocumentSeparator(state4)) { - throwError(state4, "unexpected end of the document within a single quoted scalar"); + captureSegment(state3, captureStart, captureEnd, true); + writeFoldedLines(state3, skipSeparationSpace(state3, false, nodeIndent)); + captureStart = captureEnd = state3.position; + } else if (state3.position === state3.lineStart && testDocumentSeparator(state3)) { + throwError(state3, "unexpected end of the document within a single quoted scalar"); } else { - state4.position++; - captureEnd = state4.position; + state3.position++; + captureEnd = state3.position; } } - throwError(state4, "unexpected end of the stream within a single quoted scalar"); + throwError(state3, "unexpected end of the stream within a single quoted scalar"); } - function readDoubleQuotedScalar(state4, nodeIndent) { + function readDoubleQuotedScalar(state3, nodeIndent) { var captureStart, captureEnd, hexLength, hexResult, tmp, ch; - ch = state4.input.charCodeAt(state4.position); + ch = state3.input.charCodeAt(state3.position); if (ch !== 34) { return false; } - state4.kind = "scalar"; - state4.result = ""; - state4.position++; - captureStart = captureEnd = state4.position; - while ((ch = state4.input.charCodeAt(state4.position)) !== 0) { + state3.kind = "scalar"; + state3.result = ""; + state3.position++; + captureStart = captureEnd = state3.position; + while ((ch = state3.input.charCodeAt(state3.position)) !== 0) { if (ch === 34) { - captureSegment(state4, captureStart, state4.position, true); - state4.position++; + captureSegment(state3, captureStart, state3.position, true); + state3.position++; return true; } else if (ch === 92) { - captureSegment(state4, captureStart, state4.position, true); - ch = state4.input.charCodeAt(++state4.position); + captureSegment(state3, captureStart, state3.position, true); + ch = state3.input.charCodeAt(++state3.position); if (is_EOL(ch)) { - skipSeparationSpace(state4, false, nodeIndent); + skipSeparationSpace(state3, false, nodeIndent); } else if (ch < 256 && simpleEscapeCheck[ch]) { - state4.result += simpleEscapeMap[ch]; - state4.position++; + state3.result += simpleEscapeMap[ch]; + state3.position++; } else if ((tmp = escapedHexLen(ch)) > 0) { hexLength = tmp; hexResult = 0; for (; hexLength > 0; hexLength--) { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); if ((tmp = fromHexCode(ch)) >= 0) { hexResult = (hexResult << 4) + tmp; } else { - throwError(state4, "expected hexadecimal character"); + throwError(state3, "expected hexadecimal character"); } } - state4.result += charFromCodepoint(hexResult); - state4.position++; + state3.result += charFromCodepoint(hexResult); + state3.position++; } else { - throwError(state4, "unknown escape sequence"); + throwError(state3, "unknown escape sequence"); } - captureStart = captureEnd = state4.position; + captureStart = captureEnd = state3.position; } else if (is_EOL(ch)) { - captureSegment(state4, captureStart, captureEnd, true); - writeFoldedLines(state4, skipSeparationSpace(state4, false, nodeIndent)); - captureStart = captureEnd = state4.position; - } else if (state4.position === state4.lineStart && testDocumentSeparator(state4)) { - throwError(state4, "unexpected end of the document within a double quoted scalar"); + captureSegment(state3, captureStart, captureEnd, true); + writeFoldedLines(state3, skipSeparationSpace(state3, false, nodeIndent)); + captureStart = captureEnd = state3.position; + } else if (state3.position === state3.lineStart && testDocumentSeparator(state3)) { + throwError(state3, "unexpected end of the document within a double quoted scalar"); } else { - state4.position++; - captureEnd = state4.position; + state3.position++; + captureEnd = state3.position; } } - throwError(state4, "unexpected end of the stream within a double quoted scalar"); + throwError(state3, "unexpected end of the stream within a double quoted scalar"); } - function readFlowCollection(state4, nodeIndent) { - var readNext = true, _line, _lineStart, _pos, _tag2 = state4.tag, _result, _anchor = state4.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch; - ch = state4.input.charCodeAt(state4.position); + function readFlowCollection(state3, nodeIndent) { + var readNext = true, _line, _lineStart, _pos, _tag = state3.tag, _result, _anchor = state3.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch; + ch = state3.input.charCodeAt(state3.position); if (ch === 91) { terminator = 93; isMapping = false; @@ -35033,71 +35145,71 @@ var __esbuild_esm_mermaid = (() => { } else { return false; } - if (state4.anchor !== null) { - state4.anchorMap[state4.anchor] = _result; + if (state3.anchor !== null) { + state3.anchorMap[state3.anchor] = _result; } - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); while (ch !== 0) { - skipSeparationSpace(state4, true, nodeIndent); - ch = state4.input.charCodeAt(state4.position); + skipSeparationSpace(state3, true, nodeIndent); + ch = state3.input.charCodeAt(state3.position); if (ch === terminator) { - state4.position++; - state4.tag = _tag2; - state4.anchor = _anchor; - state4.kind = isMapping ? "mapping" : "sequence"; - state4.result = _result; + state3.position++; + state3.tag = _tag; + state3.anchor = _anchor; + state3.kind = isMapping ? "mapping" : "sequence"; + state3.result = _result; return true; } else if (!readNext) { - throwError(state4, "missed comma between flow collection entries"); + throwError(state3, "missed comma between flow collection entries"); } else if (ch === 44) { - throwError(state4, "expected the node content, but found ','"); + throwError(state3, "expected the node content, but found ','"); } keyTag = keyNode = valueNode = null; isPair = isExplicitPair = false; if (ch === 63) { - following = state4.input.charCodeAt(state4.position + 1); + following = state3.input.charCodeAt(state3.position + 1); if (is_WS_OR_EOL(following)) { isPair = isExplicitPair = true; - state4.position++; - skipSeparationSpace(state4, true, nodeIndent); - } - } - _line = state4.line; - _lineStart = state4.lineStart; - _pos = state4.position; - composeNode(state4, nodeIndent, CONTEXT_FLOW_IN, false, true); - keyTag = state4.tag; - keyNode = state4.result; - skipSeparationSpace(state4, true, nodeIndent); - ch = state4.input.charCodeAt(state4.position); - if ((isExplicitPair || state4.line === _line) && ch === 58) { + state3.position++; + skipSeparationSpace(state3, true, nodeIndent); + } + } + _line = state3.line; + _lineStart = state3.lineStart; + _pos = state3.position; + composeNode(state3, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state3.tag; + keyNode = state3.result; + skipSeparationSpace(state3, true, nodeIndent); + ch = state3.input.charCodeAt(state3.position); + if ((isExplicitPair || state3.line === _line) && ch === 58) { isPair = true; - ch = state4.input.charCodeAt(++state4.position); - skipSeparationSpace(state4, true, nodeIndent); - composeNode(state4, nodeIndent, CONTEXT_FLOW_IN, false, true); - valueNode = state4.result; + ch = state3.input.charCodeAt(++state3.position); + skipSeparationSpace(state3, true, nodeIndent); + composeNode(state3, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state3.result; } if (isMapping) { - storeMappingPair(state4, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); + storeMappingPair(state3, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); } else if (isPair) { - _result.push(storeMappingPair(state4, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); + _result.push(storeMappingPair(state3, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); } else { _result.push(keyNode); } - skipSeparationSpace(state4, true, nodeIndent); - ch = state4.input.charCodeAt(state4.position); + skipSeparationSpace(state3, true, nodeIndent); + ch = state3.input.charCodeAt(state3.position); if (ch === 44) { readNext = true; - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } else { readNext = false; } } - throwError(state4, "unexpected end of the stream within a flow collection"); + throwError(state3, "unexpected end of the stream within a flow collection"); } - function readBlockScalar(state4, nodeIndent) { + function readBlockScalar(state3, nodeIndent) { var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch; - ch = state4.input.charCodeAt(state4.position); + ch = state3.input.charCodeAt(state3.position); if (ch === 124) { folding = false; } else if (ch === 62) { @@ -35105,24 +35217,24 @@ var __esbuild_esm_mermaid = (() => { } else { return false; } - state4.kind = "scalar"; - state4.result = ""; + state3.kind = "scalar"; + state3.result = ""; while (ch !== 0) { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); if (ch === 43 || ch === 45) { if (CHOMPING_CLIP === chomping) { chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP; } else { - throwError(state4, "repeat of a chomping mode identifier"); + throwError(state3, "repeat of a chomping mode identifier"); } } else if ((tmp = fromDecimalCode(ch)) >= 0) { if (tmp === 0) { - throwError(state4, "bad explicit indentation width of a block scalar; it cannot be less than one"); + throwError(state3, "bad explicit indentation width of a block scalar; it cannot be less than one"); } else if (!detectedIndent) { textIndent = nodeIndent + tmp - 1; detectedIndent = true; } else { - throwError(state4, "repeat of an indentation width identifier"); + throwError(state3, "repeat of an indentation width identifier"); } } else { break; @@ -35130,35 +35242,35 @@ var __esbuild_esm_mermaid = (() => { } if (is_WHITE_SPACE(ch)) { do { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } while (is_WHITE_SPACE(ch)); if (ch === 35) { do { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } while (!is_EOL(ch) && ch !== 0); } } while (ch !== 0) { - readLineBreak(state4); - state4.lineIndent = 0; - ch = state4.input.charCodeAt(state4.position); - while ((!detectedIndent || state4.lineIndent < textIndent) && ch === 32) { - state4.lineIndent++; - ch = state4.input.charCodeAt(++state4.position); + readLineBreak(state3); + state3.lineIndent = 0; + ch = state3.input.charCodeAt(state3.position); + while ((!detectedIndent || state3.lineIndent < textIndent) && ch === 32) { + state3.lineIndent++; + ch = state3.input.charCodeAt(++state3.position); } - if (!detectedIndent && state4.lineIndent > textIndent) { - textIndent = state4.lineIndent; + if (!detectedIndent && state3.lineIndent > textIndent) { + textIndent = state3.lineIndent; } if (is_EOL(ch)) { emptyLines++; continue; } - if (state4.lineIndent < textIndent) { + if (state3.lineIndent < textIndent) { if (chomping === CHOMPING_KEEP) { - state4.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); + state3.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); } else if (chomping === CHOMPING_CLIP) { if (didReadContent) { - state4.result += "\n"; + state3.result += "\n"; } } break; @@ -35166,97 +35278,97 @@ var __esbuild_esm_mermaid = (() => { if (folding) { if (is_WHITE_SPACE(ch)) { atMoreIndented = true; - state4.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); + state3.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); } else if (atMoreIndented) { atMoreIndented = false; - state4.result += common.repeat("\n", emptyLines + 1); + state3.result += common.repeat("\n", emptyLines + 1); } else if (emptyLines === 0) { if (didReadContent) { - state4.result += " "; + state3.result += " "; } } else { - state4.result += common.repeat("\n", emptyLines); + state3.result += common.repeat("\n", emptyLines); } } else { - state4.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); + state3.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); } didReadContent = true; detectedIndent = true; emptyLines = 0; - captureStart = state4.position; + captureStart = state3.position; while (!is_EOL(ch) && ch !== 0) { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } - captureSegment(state4, captureStart, state4.position, false); + captureSegment(state3, captureStart, state3.position, false); } return true; } - function readBlockSequence(state4, nodeIndent) { - var _line, _tag2 = state4.tag, _anchor = state4.anchor, _result = [], following, detected = false, ch; - if (state4.firstTabInLine !== -1) return false; - if (state4.anchor !== null) { - state4.anchorMap[state4.anchor] = _result; + function readBlockSequence(state3, nodeIndent) { + var _line, _tag = state3.tag, _anchor = state3.anchor, _result = [], following, detected = false, ch; + if (state3.firstTabInLine !== -1) return false; + if (state3.anchor !== null) { + state3.anchorMap[state3.anchor] = _result; } - ch = state4.input.charCodeAt(state4.position); + ch = state3.input.charCodeAt(state3.position); while (ch !== 0) { - if (state4.firstTabInLine !== -1) { - state4.position = state4.firstTabInLine; - throwError(state4, "tab characters must not be used in indentation"); + if (state3.firstTabInLine !== -1) { + state3.position = state3.firstTabInLine; + throwError(state3, "tab characters must not be used in indentation"); } if (ch !== 45) { break; } - following = state4.input.charCodeAt(state4.position + 1); + following = state3.input.charCodeAt(state3.position + 1); if (!is_WS_OR_EOL(following)) { break; } detected = true; - state4.position++; - if (skipSeparationSpace(state4, true, -1)) { - if (state4.lineIndent <= nodeIndent) { + state3.position++; + if (skipSeparationSpace(state3, true, -1)) { + if (state3.lineIndent <= nodeIndent) { _result.push(null); - ch = state4.input.charCodeAt(state4.position); + ch = state3.input.charCodeAt(state3.position); continue; } } - _line = state4.line; - composeNode(state4, nodeIndent, CONTEXT_BLOCK_IN, false, true); - _result.push(state4.result); - skipSeparationSpace(state4, true, -1); - ch = state4.input.charCodeAt(state4.position); - if ((state4.line === _line || state4.lineIndent > nodeIndent) && ch !== 0) { - throwError(state4, "bad indentation of a sequence entry"); - } else if (state4.lineIndent < nodeIndent) { + _line = state3.line; + composeNode(state3, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state3.result); + skipSeparationSpace(state3, true, -1); + ch = state3.input.charCodeAt(state3.position); + if ((state3.line === _line || state3.lineIndent > nodeIndent) && ch !== 0) { + throwError(state3, "bad indentation of a sequence entry"); + } else if (state3.lineIndent < nodeIndent) { break; } } if (detected) { - state4.tag = _tag2; - state4.anchor = _anchor; - state4.kind = "sequence"; - state4.result = _result; + state3.tag = _tag; + state3.anchor = _anchor; + state3.kind = "sequence"; + state3.result = _result; return true; } return false; } - function readBlockMapping(state4, nodeIndent, flowIndent) { - var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag2 = state4.tag, _anchor = state4.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch; - if (state4.firstTabInLine !== -1) return false; - if (state4.anchor !== null) { - state4.anchorMap[state4.anchor] = _result; + function readBlockMapping(state3, nodeIndent, flowIndent) { + var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag = state3.tag, _anchor = state3.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch; + if (state3.firstTabInLine !== -1) return false; + if (state3.anchor !== null) { + state3.anchorMap[state3.anchor] = _result; } - ch = state4.input.charCodeAt(state4.position); + ch = state3.input.charCodeAt(state3.position); while (ch !== 0) { - if (!atExplicitKey && state4.firstTabInLine !== -1) { - state4.position = state4.firstTabInLine; - throwError(state4, "tab characters must not be used in indentation"); + if (!atExplicitKey && state3.firstTabInLine !== -1) { + state3.position = state3.firstTabInLine; + throwError(state3, "tab characters must not be used in indentation"); } - following = state4.input.charCodeAt(state4.position + 1); - _line = state4.line; + following = state3.input.charCodeAt(state3.position + 1); + _line = state3.line; if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) { if (ch === 63) { if (atExplicitKey) { - storeMappingPair(state4, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + storeMappingPair(state3, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); keyTag = keyNode = valueNode = null; } detected = true; @@ -35266,229 +35378,229 @@ var __esbuild_esm_mermaid = (() => { atExplicitKey = false; allowCompact = true; } else { - throwError(state4, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"); + throwError(state3, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"); } - state4.position += 1; + state3.position += 1; ch = following; } else { - _keyLine = state4.line; - _keyLineStart = state4.lineStart; - _keyPos = state4.position; - if (!composeNode(state4, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + _keyLine = state3.line; + _keyLineStart = state3.lineStart; + _keyPos = state3.position; + if (!composeNode(state3, flowIndent, CONTEXT_FLOW_OUT, false, true)) { break; } - if (state4.line === _line) { - ch = state4.input.charCodeAt(state4.position); + if (state3.line === _line) { + ch = state3.input.charCodeAt(state3.position); while (is_WHITE_SPACE(ch)) { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } if (ch === 58) { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); if (!is_WS_OR_EOL(ch)) { - throwError(state4, "a whitespace character is expected after the key-value separator within a block mapping"); + throwError(state3, "a whitespace character is expected after the key-value separator within a block mapping"); } if (atExplicitKey) { - storeMappingPair(state4, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + storeMappingPair(state3, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); keyTag = keyNode = valueNode = null; } detected = true; atExplicitKey = false; allowCompact = false; - keyTag = state4.tag; - keyNode = state4.result; + keyTag = state3.tag; + keyNode = state3.result; } else if (detected) { - throwError(state4, "can not read an implicit mapping pair; a colon is missed"); + throwError(state3, "can not read an implicit mapping pair; a colon is missed"); } else { - state4.tag = _tag2; - state4.anchor = _anchor; + state3.tag = _tag; + state3.anchor = _anchor; return true; } } else if (detected) { - throwError(state4, "can not read a block mapping entry; a multiline key may not be an implicit key"); + throwError(state3, "can not read a block mapping entry; a multiline key may not be an implicit key"); } else { - state4.tag = _tag2; - state4.anchor = _anchor; + state3.tag = _tag; + state3.anchor = _anchor; return true; } } - if (state4.line === _line || state4.lineIndent > nodeIndent) { + if (state3.line === _line || state3.lineIndent > nodeIndent) { if (atExplicitKey) { - _keyLine = state4.line; - _keyLineStart = state4.lineStart; - _keyPos = state4.position; + _keyLine = state3.line; + _keyLineStart = state3.lineStart; + _keyPos = state3.position; } - if (composeNode(state4, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (composeNode(state3, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { if (atExplicitKey) { - keyNode = state4.result; + keyNode = state3.result; } else { - valueNode = state4.result; + valueNode = state3.result; } } if (!atExplicitKey) { - storeMappingPair(state4, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); + storeMappingPair(state3, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); keyTag = keyNode = valueNode = null; } - skipSeparationSpace(state4, true, -1); - ch = state4.input.charCodeAt(state4.position); + skipSeparationSpace(state3, true, -1); + ch = state3.input.charCodeAt(state3.position); } - if ((state4.line === _line || state4.lineIndent > nodeIndent) && ch !== 0) { - throwError(state4, "bad indentation of a mapping entry"); - } else if (state4.lineIndent < nodeIndent) { + if ((state3.line === _line || state3.lineIndent > nodeIndent) && ch !== 0) { + throwError(state3, "bad indentation of a mapping entry"); + } else if (state3.lineIndent < nodeIndent) { break; } } if (atExplicitKey) { - storeMappingPair(state4, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + storeMappingPair(state3, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); } if (detected) { - state4.tag = _tag2; - state4.anchor = _anchor; - state4.kind = "mapping"; - state4.result = _result; + state3.tag = _tag; + state3.anchor = _anchor; + state3.kind = "mapping"; + state3.result = _result; } return detected; } - function readTagProperty(state4) { + function readTagProperty(state3) { var _position, isVerbatim = false, isNamed2 = false, tagHandle, tagName, ch; - ch = state4.input.charCodeAt(state4.position); + ch = state3.input.charCodeAt(state3.position); if (ch !== 33) return false; - if (state4.tag !== null) { - throwError(state4, "duplication of a tag property"); + if (state3.tag !== null) { + throwError(state3, "duplication of a tag property"); } - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); if (ch === 60) { isVerbatim = true; - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } else if (ch === 33) { isNamed2 = true; tagHandle = "!!"; - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } else { tagHandle = "!"; } - _position = state4.position; + _position = state3.position; if (isVerbatim) { do { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } while (ch !== 0 && ch !== 62); - if (state4.position < state4.length) { - tagName = state4.input.slice(_position, state4.position); - ch = state4.input.charCodeAt(++state4.position); + if (state3.position < state3.length) { + tagName = state3.input.slice(_position, state3.position); + ch = state3.input.charCodeAt(++state3.position); } else { - throwError(state4, "unexpected end of the stream within a verbatim tag"); + throwError(state3, "unexpected end of the stream within a verbatim tag"); } } else { while (ch !== 0 && !is_WS_OR_EOL(ch)) { if (ch === 33) { if (!isNamed2) { - tagHandle = state4.input.slice(_position - 1, state4.position + 1); + tagHandle = state3.input.slice(_position - 1, state3.position + 1); if (!PATTERN_TAG_HANDLE.test(tagHandle)) { - throwError(state4, "named tag handle cannot contain such characters"); + throwError(state3, "named tag handle cannot contain such characters"); } isNamed2 = true; - _position = state4.position + 1; + _position = state3.position + 1; } else { - throwError(state4, "tag suffix cannot contain exclamation marks"); + throwError(state3, "tag suffix cannot contain exclamation marks"); } } - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } - tagName = state4.input.slice(_position, state4.position); + tagName = state3.input.slice(_position, state3.position); if (PATTERN_FLOW_INDICATORS.test(tagName)) { - throwError(state4, "tag suffix cannot contain flow indicator characters"); + throwError(state3, "tag suffix cannot contain flow indicator characters"); } } if (tagName && !PATTERN_TAG_URI.test(tagName)) { - throwError(state4, "tag name cannot contain such characters: " + tagName); + throwError(state3, "tag name cannot contain such characters: " + tagName); } try { tagName = decodeURIComponent(tagName); } catch (err) { - throwError(state4, "tag name is malformed: " + tagName); + throwError(state3, "tag name is malformed: " + tagName); } if (isVerbatim) { - state4.tag = tagName; - } else if (_hasOwnProperty$1.call(state4.tagMap, tagHandle)) { - state4.tag = state4.tagMap[tagHandle] + tagName; + state3.tag = tagName; + } else if (_hasOwnProperty$1.call(state3.tagMap, tagHandle)) { + state3.tag = state3.tagMap[tagHandle] + tagName; } else if (tagHandle === "!") { - state4.tag = "!" + tagName; + state3.tag = "!" + tagName; } else if (tagHandle === "!!") { - state4.tag = "tag:yaml.org,2002:" + tagName; + state3.tag = "tag:yaml.org,2002:" + tagName; } else { - throwError(state4, 'undeclared tag handle "' + tagHandle + '"'); + throwError(state3, 'undeclared tag handle "' + tagHandle + '"'); } return true; } - function readAnchorProperty(state4) { + function readAnchorProperty(state3) { var _position, ch; - ch = state4.input.charCodeAt(state4.position); + ch = state3.input.charCodeAt(state3.position); if (ch !== 38) return false; - if (state4.anchor !== null) { - throwError(state4, "duplication of an anchor property"); + if (state3.anchor !== null) { + throwError(state3, "duplication of an anchor property"); } - ch = state4.input.charCodeAt(++state4.position); - _position = state4.position; + ch = state3.input.charCodeAt(++state3.position); + _position = state3.position; while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } - if (state4.position === _position) { - throwError(state4, "name of an anchor node must contain at least one character"); + if (state3.position === _position) { + throwError(state3, "name of an anchor node must contain at least one character"); } - state4.anchor = state4.input.slice(_position, state4.position); + state3.anchor = state3.input.slice(_position, state3.position); return true; } - function readAlias(state4) { + function readAlias(state3) { var _position, alias, ch; - ch = state4.input.charCodeAt(state4.position); + ch = state3.input.charCodeAt(state3.position); if (ch !== 42) return false; - ch = state4.input.charCodeAt(++state4.position); - _position = state4.position; + ch = state3.input.charCodeAt(++state3.position); + _position = state3.position; while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } - if (state4.position === _position) { - throwError(state4, "name of an alias node must contain at least one character"); + if (state3.position === _position) { + throwError(state3, "name of an alias node must contain at least one character"); } - alias = state4.input.slice(_position, state4.position); - if (!_hasOwnProperty$1.call(state4.anchorMap, alias)) { - throwError(state4, 'unidentified alias "' + alias + '"'); + alias = state3.input.slice(_position, state3.position); + if (!_hasOwnProperty$1.call(state3.anchorMap, alias)) { + throwError(state3, 'unidentified alias "' + alias + '"'); } - state4.result = state4.anchorMap[alias]; - skipSeparationSpace(state4, true, -1); + state3.result = state3.anchorMap[alias]; + skipSeparationSpace(state3, true, -1); return true; } - function composeNode(state4, parentIndent, nodeContext, allowToSeek, allowCompact) { + function composeNode(state3, parentIndent, nodeContext, allowToSeek, allowCompact) { var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, typeList, type3, flowIndent, blockIndent; - if (state4.listener !== null) { - state4.listener("open", state4); + if (state3.listener !== null) { + state3.listener("open", state3); } - state4.tag = null; - state4.anchor = null; - state4.kind = null; - state4.result = null; + state3.tag = null; + state3.anchor = null; + state3.kind = null; + state3.result = null; allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext; if (allowToSeek) { - if (skipSeparationSpace(state4, true, -1)) { + if (skipSeparationSpace(state3, true, -1)) { atNewLine = true; - if (state4.lineIndent > parentIndent) { + if (state3.lineIndent > parentIndent) { indentStatus = 1; - } else if (state4.lineIndent === parentIndent) { + } else if (state3.lineIndent === parentIndent) { indentStatus = 0; - } else if (state4.lineIndent < parentIndent) { + } else if (state3.lineIndent < parentIndent) { indentStatus = -1; } } } if (indentStatus === 1) { - while (readTagProperty(state4) || readAnchorProperty(state4)) { - if (skipSeparationSpace(state4, true, -1)) { + while (readTagProperty(state3) || readAnchorProperty(state3)) { + if (skipSeparationSpace(state3, true, -1)) { atNewLine = true; allowBlockCollections = allowBlockStyles; - if (state4.lineIndent > parentIndent) { + if (state3.lineIndent > parentIndent) { indentStatus = 1; - } else if (state4.lineIndent === parentIndent) { + } else if (state3.lineIndent === parentIndent) { indentStatus = 0; - } else if (state4.lineIndent < parentIndent) { + } else if (state3.lineIndent < parentIndent) { indentStatus = -1; } } else { @@ -35505,160 +35617,160 @@ var __esbuild_esm_mermaid = (() => { } else { flowIndent = parentIndent + 1; } - blockIndent = state4.position - state4.lineStart; + blockIndent = state3.position - state3.lineStart; if (indentStatus === 1) { - if (allowBlockCollections && (readBlockSequence(state4, blockIndent) || readBlockMapping(state4, blockIndent, flowIndent)) || readFlowCollection(state4, flowIndent)) { + if (allowBlockCollections && (readBlockSequence(state3, blockIndent) || readBlockMapping(state3, blockIndent, flowIndent)) || readFlowCollection(state3, flowIndent)) { hasContent = true; } else { - if (allowBlockScalars && readBlockScalar(state4, flowIndent) || readSingleQuotedScalar(state4, flowIndent) || readDoubleQuotedScalar(state4, flowIndent)) { + if (allowBlockScalars && readBlockScalar(state3, flowIndent) || readSingleQuotedScalar(state3, flowIndent) || readDoubleQuotedScalar(state3, flowIndent)) { hasContent = true; - } else if (readAlias(state4)) { + } else if (readAlias(state3)) { hasContent = true; - if (state4.tag !== null || state4.anchor !== null) { - throwError(state4, "alias node should not have any properties"); + if (state3.tag !== null || state3.anchor !== null) { + throwError(state3, "alias node should not have any properties"); } - } else if (readPlainScalar(state4, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + } else if (readPlainScalar(state3, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { hasContent = true; - if (state4.tag === null) { - state4.tag = "?"; + if (state3.tag === null) { + state3.tag = "?"; } } - if (state4.anchor !== null) { - state4.anchorMap[state4.anchor] = state4.result; + if (state3.anchor !== null) { + state3.anchorMap[state3.anchor] = state3.result; } } } else if (indentStatus === 0) { - hasContent = allowBlockCollections && readBlockSequence(state4, blockIndent); + hasContent = allowBlockCollections && readBlockSequence(state3, blockIndent); } } - if (state4.tag === null) { - if (state4.anchor !== null) { - state4.anchorMap[state4.anchor] = state4.result; + if (state3.tag === null) { + if (state3.anchor !== null) { + state3.anchorMap[state3.anchor] = state3.result; } - } else if (state4.tag === "?") { - if (state4.result !== null && state4.kind !== "scalar") { - throwError(state4, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state4.kind + '"'); + } else if (state3.tag === "?") { + if (state3.result !== null && state3.kind !== "scalar") { + throwError(state3, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state3.kind + '"'); } - for (typeIndex = 0, typeQuantity = state4.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { - type3 = state4.implicitTypes[typeIndex]; - if (type3.resolve(state4.result)) { - state4.result = type3.construct(state4.result); - state4.tag = type3.tag; - if (state4.anchor !== null) { - state4.anchorMap[state4.anchor] = state4.result; + for (typeIndex = 0, typeQuantity = state3.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type3 = state3.implicitTypes[typeIndex]; + if (type3.resolve(state3.result)) { + state3.result = type3.construct(state3.result); + state3.tag = type3.tag; + if (state3.anchor !== null) { + state3.anchorMap[state3.anchor] = state3.result; } break; } } - } else if (state4.tag !== "!") { - if (_hasOwnProperty$1.call(state4.typeMap[state4.kind || "fallback"], state4.tag)) { - type3 = state4.typeMap[state4.kind || "fallback"][state4.tag]; + } else if (state3.tag !== "!") { + if (_hasOwnProperty$1.call(state3.typeMap[state3.kind || "fallback"], state3.tag)) { + type3 = state3.typeMap[state3.kind || "fallback"][state3.tag]; } else { type3 = null; - typeList = state4.typeMap.multi[state4.kind || "fallback"]; + typeList = state3.typeMap.multi[state3.kind || "fallback"]; for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { - if (state4.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { + if (state3.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { type3 = typeList[typeIndex]; break; } } } if (!type3) { - throwError(state4, "unknown tag !<" + state4.tag + ">"); + throwError(state3, "unknown tag !<" + state3.tag + ">"); } - if (state4.result !== null && type3.kind !== state4.kind) { - throwError(state4, "unacceptable node kind for !<" + state4.tag + '> tag; it should be "' + type3.kind + '", not "' + state4.kind + '"'); + if (state3.result !== null && type3.kind !== state3.kind) { + throwError(state3, "unacceptable node kind for !<" + state3.tag + '> tag; it should be "' + type3.kind + '", not "' + state3.kind + '"'); } - if (!type3.resolve(state4.result, state4.tag)) { - throwError(state4, "cannot resolve a node with !<" + state4.tag + "> explicit tag"); + if (!type3.resolve(state3.result, state3.tag)) { + throwError(state3, "cannot resolve a node with !<" + state3.tag + "> explicit tag"); } else { - state4.result = type3.construct(state4.result, state4.tag); - if (state4.anchor !== null) { - state4.anchorMap[state4.anchor] = state4.result; + state3.result = type3.construct(state3.result, state3.tag); + if (state3.anchor !== null) { + state3.anchorMap[state3.anchor] = state3.result; } } } - if (state4.listener !== null) { - state4.listener("close", state4); + if (state3.listener !== null) { + state3.listener("close", state3); } - return state4.tag !== null || state4.anchor !== null || hasContent; + return state3.tag !== null || state3.anchor !== null || hasContent; } - function readDocument(state4) { - var documentStart = state4.position, _position, directiveName, directiveArgs, hasDirectives = false, ch; - state4.version = null; - state4.checkLineBreaks = state4.legacy; - state4.tagMap = /* @__PURE__ */ Object.create(null); - state4.anchorMap = /* @__PURE__ */ Object.create(null); - while ((ch = state4.input.charCodeAt(state4.position)) !== 0) { - skipSeparationSpace(state4, true, -1); - ch = state4.input.charCodeAt(state4.position); - if (state4.lineIndent > 0 || ch !== 37) { + function readDocument(state3) { + var documentStart = state3.position, _position, directiveName, directiveArgs, hasDirectives = false, ch; + state3.version = null; + state3.checkLineBreaks = state3.legacy; + state3.tagMap = /* @__PURE__ */ Object.create(null); + state3.anchorMap = /* @__PURE__ */ Object.create(null); + while ((ch = state3.input.charCodeAt(state3.position)) !== 0) { + skipSeparationSpace(state3, true, -1); + ch = state3.input.charCodeAt(state3.position); + if (state3.lineIndent > 0 || ch !== 37) { break; } hasDirectives = true; - ch = state4.input.charCodeAt(++state4.position); - _position = state4.position; + ch = state3.input.charCodeAt(++state3.position); + _position = state3.position; while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } - directiveName = state4.input.slice(_position, state4.position); + directiveName = state3.input.slice(_position, state3.position); directiveArgs = []; if (directiveName.length < 1) { - throwError(state4, "directive name must not be less than one character in length"); + throwError(state3, "directive name must not be less than one character in length"); } while (ch !== 0) { while (is_WHITE_SPACE(ch)) { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } if (ch === 35) { do { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } while (ch !== 0 && !is_EOL(ch)); break; } if (is_EOL(ch)) break; - _position = state4.position; + _position = state3.position; while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state4.input.charCodeAt(++state4.position); + ch = state3.input.charCodeAt(++state3.position); } - directiveArgs.push(state4.input.slice(_position, state4.position)); + directiveArgs.push(state3.input.slice(_position, state3.position)); } - if (ch !== 0) readLineBreak(state4); + if (ch !== 0) readLineBreak(state3); if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) { - directiveHandlers[directiveName](state4, directiveName, directiveArgs); + directiveHandlers[directiveName](state3, directiveName, directiveArgs); } else { - throwWarning(state4, 'unknown document directive "' + directiveName + '"'); + throwWarning(state3, 'unknown document directive "' + directiveName + '"'); } } - skipSeparationSpace(state4, true, -1); - if (state4.lineIndent === 0 && state4.input.charCodeAt(state4.position) === 45 && state4.input.charCodeAt(state4.position + 1) === 45 && state4.input.charCodeAt(state4.position + 2) === 45) { - state4.position += 3; - skipSeparationSpace(state4, true, -1); + skipSeparationSpace(state3, true, -1); + if (state3.lineIndent === 0 && state3.input.charCodeAt(state3.position) === 45 && state3.input.charCodeAt(state3.position + 1) === 45 && state3.input.charCodeAt(state3.position + 2) === 45) { + state3.position += 3; + skipSeparationSpace(state3, true, -1); } else if (hasDirectives) { - throwError(state4, "directives end mark is expected"); + throwError(state3, "directives end mark is expected"); } - composeNode(state4, state4.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); - skipSeparationSpace(state4, true, -1); - if (state4.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state4.input.slice(documentStart, state4.position))) { - throwWarning(state4, "non-ASCII line breaks are interpreted as content"); + composeNode(state3, state3.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state3, true, -1); + if (state3.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state3.input.slice(documentStart, state3.position))) { + throwWarning(state3, "non-ASCII line breaks are interpreted as content"); } - state4.documents.push(state4.result); - if (state4.position === state4.lineStart && testDocumentSeparator(state4)) { - if (state4.input.charCodeAt(state4.position) === 46) { - state4.position += 3; - skipSeparationSpace(state4, true, -1); + state3.documents.push(state3.result); + if (state3.position === state3.lineStart && testDocumentSeparator(state3)) { + if (state3.input.charCodeAt(state3.position) === 46) { + state3.position += 3; + skipSeparationSpace(state3, true, -1); } return; } - if (state4.position < state4.length - 1) { - throwError(state4, "end of the stream or a document separator is expected"); + if (state3.position < state3.length - 1) { + throwError(state3, "end of the stream or a document separator is expected"); } else { return; } } - function loadDocuments(input, options3) { + function loadDocuments(input, options2) { input = String(input); - options3 = options3 || {}; + options2 = options2 || {}; if (input.length !== 0) { if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) { input += "\n"; @@ -35667,28 +35779,28 @@ var __esbuild_esm_mermaid = (() => { input = input.slice(1); } } - var state4 = new State$1(input, options3); + var state3 = new State$1(input, options2); var nullpos = input.indexOf("\0"); if (nullpos !== -1) { - state4.position = nullpos; - throwError(state4, "null byte is not allowed in input"); + state3.position = nullpos; + throwError(state3, "null byte is not allowed in input"); } - state4.input += "\0"; - while (state4.input.charCodeAt(state4.position) === 32) { - state4.lineIndent += 1; - state4.position += 1; + state3.input += "\0"; + while (state3.input.charCodeAt(state3.position) === 32) { + state3.lineIndent += 1; + state3.position += 1; } - while (state4.position < state4.length - 1) { - readDocument(state4); + while (state3.position < state3.length - 1) { + readDocument(state3); } - return state4.documents; + return state3.documents; } - function loadAll$1(input, iterator, options3) { - if (iterator !== null && typeof iterator === "object" && typeof options3 === "undefined") { - options3 = iterator; + function loadAll$1(input, iterator, options2) { + if (iterator !== null && typeof iterator === "object" && typeof options2 === "undefined") { + options2 = iterator; iterator = null; } - var documents = loadDocuments(input, options3); + var documents = loadDocuments(input, options2); if (typeof iterator !== "function") { return documents; } @@ -35696,8 +35808,8 @@ var __esbuild_esm_mermaid = (() => { iterator(documents[index]); } } - function load$1(input, options3) { - var documents = loadDocuments(input, options3); + function load$1(input, options2) { + var documents = loadDocuments(input, options2); if (documents.length === 0) { return void 0; } else if (documents.length === 1) { @@ -35706,21 +35818,21 @@ var __esbuild_esm_mermaid = (() => { throw new exception("expected a single document in the stream, but found more"); } function compileStyleMap(schema2, map5) { - var result, keys3, index, length2, tag2, style3, type3; + var result, keys2, index, length2, tag, style3, type3; if (map5 === null) return {}; result = {}; - keys3 = Object.keys(map5); - for (index = 0, length2 = keys3.length; index < length2; index += 1) { - tag2 = keys3[index]; - style3 = String(map5[tag2]); - if (tag2.slice(0, 2) === "!!") { - tag2 = "tag:yaml.org,2002:" + tag2.slice(2); - } - type3 = schema2.compiledTypeMap["fallback"][tag2]; + keys2 = Object.keys(map5); + for (index = 0, length2 = keys2.length; index < length2; index += 1) { + tag = keys2[index]; + style3 = String(map5[tag]); + if (tag.slice(0, 2) === "!!") { + tag = "tag:yaml.org,2002:" + tag.slice(2); + } + type3 = schema2.compiledTypeMap["fallback"][tag]; if (type3 && _hasOwnProperty.call(type3.styleAliases, style3)) { style3 = type3.styleAliases[style3]; } - result[tag2] = style3; + result[tag] = style3; } return result; } @@ -35741,21 +35853,21 @@ var __esbuild_esm_mermaid = (() => { } return "\\" + handle + common.repeat("0", length2 - string3.length) + string3; } - function State(options3) { - this.schema = options3["schema"] || _default; - this.indent = Math.max(1, options3["indent"] || 2); - this.noArrayIndent = options3["noArrayIndent"] || false; - this.skipInvalid = options3["skipInvalid"] || false; - this.flowLevel = common.isNothing(options3["flowLevel"]) ? -1 : options3["flowLevel"]; - this.styleMap = compileStyleMap(this.schema, options3["styles"] || null); - this.sortKeys = options3["sortKeys"] || false; - this.lineWidth = options3["lineWidth"] || 80; - this.noRefs = options3["noRefs"] || false; - this.noCompatMode = options3["noCompatMode"] || false; - this.condenseFlow = options3["condenseFlow"] || false; - this.quotingType = options3["quotingType"] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; - this.forceQuotes = options3["forceQuotes"] || false; - this.replacer = typeof options3["replacer"] === "function" ? options3["replacer"] : null; + function State(options2) { + this.schema = options2["schema"] || _default; + this.indent = Math.max(1, options2["indent"] || 2); + this.noArrayIndent = options2["noArrayIndent"] || false; + this.skipInvalid = options2["skipInvalid"] || false; + this.flowLevel = common.isNothing(options2["flowLevel"]) ? -1 : options2["flowLevel"]; + this.styleMap = compileStyleMap(this.schema, options2["styles"] || null); + this.sortKeys = options2["sortKeys"] || false; + this.lineWidth = options2["lineWidth"] || 80; + this.noRefs = options2["noRefs"] || false; + this.noCompatMode = options2["noCompatMode"] || false; + this.condenseFlow = options2["condenseFlow"] || false; + this.quotingType = options2["quotingType"] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; + this.forceQuotes = options2["forceQuotes"] || false; + this.replacer = typeof options2["replacer"] === "function" ? options2["replacer"] : null; this.implicitTypes = this.schema.compiledImplicit; this.explicitTypes = this.schema.compiledExplicit; this.tag = null; @@ -35779,13 +35891,13 @@ var __esbuild_esm_mermaid = (() => { } return result; } - function generateNextLine(state4, level) { - return "\n" + common.repeat(" ", state4.indent * level); + function generateNextLine(state3, level) { + return "\n" + common.repeat(" ", state3.indent * level); } - function testImplicitResolving(state4, str2) { + function testImplicitResolving(state3, str2) { var index, length2, type3; - for (index = 0, length2 = state4.implicitTypes.length; index < length2; index += 1) { - type3 = state4.implicitTypes[index]; + for (index = 0, length2 = state3.implicitTypes.length; index < length2; index += 1) { + type3 = state3.implicitTypes[index]; if (type3.resolve(str2)) { return true; } @@ -35882,31 +35994,31 @@ var __esbuild_esm_mermaid = (() => { } return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; } - function writeScalar(state4, string3, level, iskey, inblock) { - state4.dump = function() { + function writeScalar(state3, string3, level, iskey, inblock) { + state3.dump = (function() { if (string3.length === 0) { - return state4.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; + return state3.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; } - if (!state4.noCompatMode) { + if (!state3.noCompatMode) { if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string3) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string3)) { - return state4.quotingType === QUOTING_TYPE_DOUBLE ? '"' + string3 + '"' : "'" + string3 + "'"; + return state3.quotingType === QUOTING_TYPE_DOUBLE ? '"' + string3 + '"' : "'" + string3 + "'"; } } - var indent = state4.indent * Math.max(1, level); - var lineWidth = state4.lineWidth === -1 ? -1 : Math.max(Math.min(state4.lineWidth, 40), state4.lineWidth - indent); - var singleLineOnly = iskey || state4.flowLevel > -1 && level >= state4.flowLevel; + var indent = state3.indent * Math.max(1, level); + var lineWidth = state3.lineWidth === -1 ? -1 : Math.max(Math.min(state3.lineWidth, 40), state3.lineWidth - indent); + var singleLineOnly = iskey || state3.flowLevel > -1 && level >= state3.flowLevel; function testAmbiguity(string4) { - return testImplicitResolving(state4, string4); + return testImplicitResolving(state3, string4); } __name(testAmbiguity, "testAmbiguity"); switch (chooseScalarStyle( string3, singleLineOnly, - state4.indent, + state3.indent, lineWidth, testAmbiguity, - state4.quotingType, - state4.forceQuotes && !iskey, + state3.quotingType, + state3.forceQuotes && !iskey, inblock )) { case STYLE_PLAIN: @@ -35914,15 +36026,15 @@ var __esbuild_esm_mermaid = (() => { case STYLE_SINGLE: return "'" + string3.replace(/'/g, "''") + "'"; case STYLE_LITERAL: - return "|" + blockHeader(string3, state4.indent) + dropEndingNewline(indentString(string3, indent)); + return "|" + blockHeader(string3, state3.indent) + dropEndingNewline(indentString(string3, indent)); case STYLE_FOLDED: - return ">" + blockHeader(string3, state4.indent) + dropEndingNewline(indentString(foldString(string3, lineWidth), indent)); + return ">" + blockHeader(string3, state3.indent) + dropEndingNewline(indentString(foldString(string3, lineWidth), indent)); case STYLE_DOUBLE: return '"' + escapeString(string3) + '"'; default: throw new exception("impossible error: invalid scalar style"); } - }(); + })(); } function blockHeader(string3, indentPerLevel) { var indentIndicator = needIndentIndicator(string3) ? String(indentPerLevel) : ""; @@ -35936,12 +36048,12 @@ var __esbuild_esm_mermaid = (() => { } function foldString(string3, width3) { var lineRe = /(\n+)([^\n]*)/g; - var result = function() { + var result = (function() { var nextLF = string3.indexOf("\n"); nextLF = nextLF !== -1 ? nextLF : string3.length; lineRe.lastIndex = nextLF; return foldLine(string3.slice(0, nextLF), width3); - }(); + })(); var prevMoreIndented = string3[0] === "\n" || string3[0] === " "; var moreIndented; var match2; @@ -35992,133 +36104,133 @@ var __esbuild_esm_mermaid = (() => { } return result; } - function writeFlowSequence(state4, level, object3) { - var _result = "", _tag2 = state4.tag, index, length2, value2; + function writeFlowSequence(state3, level, object3) { + var _result = "", _tag = state3.tag, index, length2, value2; for (index = 0, length2 = object3.length; index < length2; index += 1) { value2 = object3[index]; - if (state4.replacer) { - value2 = state4.replacer.call(object3, String(index), value2); + if (state3.replacer) { + value2 = state3.replacer.call(object3, String(index), value2); } - if (writeNode(state4, level, value2, false, false) || typeof value2 === "undefined" && writeNode(state4, level, null, false, false)) { - if (_result !== "") _result += "," + (!state4.condenseFlow ? " " : ""); - _result += state4.dump; + if (writeNode(state3, level, value2, false, false) || typeof value2 === "undefined" && writeNode(state3, level, null, false, false)) { + if (_result !== "") _result += "," + (!state3.condenseFlow ? " " : ""); + _result += state3.dump; } } - state4.tag = _tag2; - state4.dump = "[" + _result + "]"; + state3.tag = _tag; + state3.dump = "[" + _result + "]"; } - function writeBlockSequence(state4, level, object3, compact2) { - var _result = "", _tag2 = state4.tag, index, length2, value2; + function writeBlockSequence(state3, level, object3, compact2) { + var _result = "", _tag = state3.tag, index, length2, value2; for (index = 0, length2 = object3.length; index < length2; index += 1) { value2 = object3[index]; - if (state4.replacer) { - value2 = state4.replacer.call(object3, String(index), value2); + if (state3.replacer) { + value2 = state3.replacer.call(object3, String(index), value2); } - if (writeNode(state4, level + 1, value2, true, true, false, true) || typeof value2 === "undefined" && writeNode(state4, level + 1, null, true, true, false, true)) { + if (writeNode(state3, level + 1, value2, true, true, false, true) || typeof value2 === "undefined" && writeNode(state3, level + 1, null, true, true, false, true)) { if (!compact2 || _result !== "") { - _result += generateNextLine(state4, level); + _result += generateNextLine(state3, level); } - if (state4.dump && CHAR_LINE_FEED === state4.dump.charCodeAt(0)) { + if (state3.dump && CHAR_LINE_FEED === state3.dump.charCodeAt(0)) { _result += "-"; } else { _result += "- "; } - _result += state4.dump; + _result += state3.dump; } } - state4.tag = _tag2; - state4.dump = _result || "[]"; + state3.tag = _tag; + state3.dump = _result || "[]"; } - function writeFlowMapping(state4, level, object3) { - var _result = "", _tag2 = state4.tag, objectKeyList = Object.keys(object3), index, length2, objectKey, objectValue, pairBuffer; + function writeFlowMapping(state3, level, object3) { + var _result = "", _tag = state3.tag, objectKeyList = Object.keys(object3), index, length2, objectKey, objectValue, pairBuffer; for (index = 0, length2 = objectKeyList.length; index < length2; index += 1) { pairBuffer = ""; if (_result !== "") pairBuffer += ", "; - if (state4.condenseFlow) pairBuffer += '"'; + if (state3.condenseFlow) pairBuffer += '"'; objectKey = objectKeyList[index]; objectValue = object3[objectKey]; - if (state4.replacer) { - objectValue = state4.replacer.call(object3, objectKey, objectValue); + if (state3.replacer) { + objectValue = state3.replacer.call(object3, objectKey, objectValue); } - if (!writeNode(state4, level, objectKey, false, false)) { + if (!writeNode(state3, level, objectKey, false, false)) { continue; } - if (state4.dump.length > 1024) pairBuffer += "? "; - pairBuffer += state4.dump + (state4.condenseFlow ? '"' : "") + ":" + (state4.condenseFlow ? "" : " "); - if (!writeNode(state4, level, objectValue, false, false)) { + if (state3.dump.length > 1024) pairBuffer += "? "; + pairBuffer += state3.dump + (state3.condenseFlow ? '"' : "") + ":" + (state3.condenseFlow ? "" : " "); + if (!writeNode(state3, level, objectValue, false, false)) { continue; } - pairBuffer += state4.dump; + pairBuffer += state3.dump; _result += pairBuffer; } - state4.tag = _tag2; - state4.dump = "{" + _result + "}"; + state3.tag = _tag; + state3.dump = "{" + _result + "}"; } - function writeBlockMapping(state4, level, object3, compact2) { - var _result = "", _tag2 = state4.tag, objectKeyList = Object.keys(object3), index, length2, objectKey, objectValue, explicitPair, pairBuffer; - if (state4.sortKeys === true) { + function writeBlockMapping(state3, level, object3, compact2) { + var _result = "", _tag = state3.tag, objectKeyList = Object.keys(object3), index, length2, objectKey, objectValue, explicitPair, pairBuffer; + if (state3.sortKeys === true) { objectKeyList.sort(); - } else if (typeof state4.sortKeys === "function") { - objectKeyList.sort(state4.sortKeys); - } else if (state4.sortKeys) { + } else if (typeof state3.sortKeys === "function") { + objectKeyList.sort(state3.sortKeys); + } else if (state3.sortKeys) { throw new exception("sortKeys must be a boolean or a function"); } for (index = 0, length2 = objectKeyList.length; index < length2; index += 1) { pairBuffer = ""; if (!compact2 || _result !== "") { - pairBuffer += generateNextLine(state4, level); + pairBuffer += generateNextLine(state3, level); } objectKey = objectKeyList[index]; objectValue = object3[objectKey]; - if (state4.replacer) { - objectValue = state4.replacer.call(object3, objectKey, objectValue); + if (state3.replacer) { + objectValue = state3.replacer.call(object3, objectKey, objectValue); } - if (!writeNode(state4, level + 1, objectKey, true, true, true)) { + if (!writeNode(state3, level + 1, objectKey, true, true, true)) { continue; } - explicitPair = state4.tag !== null && state4.tag !== "?" || state4.dump && state4.dump.length > 1024; + explicitPair = state3.tag !== null && state3.tag !== "?" || state3.dump && state3.dump.length > 1024; if (explicitPair) { - if (state4.dump && CHAR_LINE_FEED === state4.dump.charCodeAt(0)) { + if (state3.dump && CHAR_LINE_FEED === state3.dump.charCodeAt(0)) { pairBuffer += "?"; } else { pairBuffer += "? "; } } - pairBuffer += state4.dump; + pairBuffer += state3.dump; if (explicitPair) { - pairBuffer += generateNextLine(state4, level); + pairBuffer += generateNextLine(state3, level); } - if (!writeNode(state4, level + 1, objectValue, true, explicitPair)) { + if (!writeNode(state3, level + 1, objectValue, true, explicitPair)) { continue; } - if (state4.dump && CHAR_LINE_FEED === state4.dump.charCodeAt(0)) { + if (state3.dump && CHAR_LINE_FEED === state3.dump.charCodeAt(0)) { pairBuffer += ":"; } else { pairBuffer += ": "; } - pairBuffer += state4.dump; + pairBuffer += state3.dump; _result += pairBuffer; } - state4.tag = _tag2; - state4.dump = _result || "{}"; + state3.tag = _tag; + state3.dump = _result || "{}"; } - function detectType2(state4, object3, explicit) { + function detectType2(state3, object3, explicit) { var _result, typeList, index, length2, type3, style3; - typeList = explicit ? state4.explicitTypes : state4.implicitTypes; + typeList = explicit ? state3.explicitTypes : state3.implicitTypes; for (index = 0, length2 = typeList.length; index < length2; index += 1) { type3 = typeList[index]; if ((type3.instanceOf || type3.predicate) && (!type3.instanceOf || typeof object3 === "object" && object3 instanceof type3.instanceOf) && (!type3.predicate || type3.predicate(object3))) { if (explicit) { if (type3.multi && type3.representName) { - state4.tag = type3.representName(object3); + state3.tag = type3.representName(object3); } else { - state4.tag = type3.tag; + state3.tag = type3.tag; } } else { - state4.tag = "?"; + state3.tag = "?"; } if (type3.represent) { - style3 = state4.styleMap[type3.tag] || type3.defaultStyle; + style3 = state3.styleMap[type3.tag] || type3.defaultStyle; if (_toString.call(type3.represent) === "[object Function]") { _result = type3.represent(object3, style3); } else if (_hasOwnProperty.call(type3.represent, style3)) { @@ -36126,100 +36238,100 @@ var __esbuild_esm_mermaid = (() => { } else { throw new exception("!<" + type3.tag + '> tag resolver accepts not "' + style3 + '" style'); } - state4.dump = _result; + state3.dump = _result; } return true; } } return false; } - function writeNode(state4, level, object3, block3, compact2, iskey, isblockseq) { - state4.tag = null; - state4.dump = object3; - if (!detectType2(state4, object3, false)) { - detectType2(state4, object3, true); + function writeNode(state3, level, object3, block2, compact2, iskey, isblockseq) { + state3.tag = null; + state3.dump = object3; + if (!detectType2(state3, object3, false)) { + detectType2(state3, object3, true); } - var type3 = _toString.call(state4.dump); - var inblock = block3; + var type3 = _toString.call(state3.dump); + var inblock = block2; var tagStr; - if (block3) { - block3 = state4.flowLevel < 0 || state4.flowLevel > level; + if (block2) { + block2 = state3.flowLevel < 0 || state3.flowLevel > level; } var objectOrArray = type3 === "[object Object]" || type3 === "[object Array]", duplicateIndex, duplicate; if (objectOrArray) { - duplicateIndex = state4.duplicates.indexOf(object3); + duplicateIndex = state3.duplicates.indexOf(object3); duplicate = duplicateIndex !== -1; } - if (state4.tag !== null && state4.tag !== "?" || duplicate || state4.indent !== 2 && level > 0) { + if (state3.tag !== null && state3.tag !== "?" || duplicate || state3.indent !== 2 && level > 0) { compact2 = false; } - if (duplicate && state4.usedDuplicates[duplicateIndex]) { - state4.dump = "*ref_" + duplicateIndex; + if (duplicate && state3.usedDuplicates[duplicateIndex]) { + state3.dump = "*ref_" + duplicateIndex; } else { - if (objectOrArray && duplicate && !state4.usedDuplicates[duplicateIndex]) { - state4.usedDuplicates[duplicateIndex] = true; + if (objectOrArray && duplicate && !state3.usedDuplicates[duplicateIndex]) { + state3.usedDuplicates[duplicateIndex] = true; } if (type3 === "[object Object]") { - if (block3 && Object.keys(state4.dump).length !== 0) { - writeBlockMapping(state4, level, state4.dump, compact2); + if (block2 && Object.keys(state3.dump).length !== 0) { + writeBlockMapping(state3, level, state3.dump, compact2); if (duplicate) { - state4.dump = "&ref_" + duplicateIndex + state4.dump; + state3.dump = "&ref_" + duplicateIndex + state3.dump; } } else { - writeFlowMapping(state4, level, state4.dump); + writeFlowMapping(state3, level, state3.dump); if (duplicate) { - state4.dump = "&ref_" + duplicateIndex + " " + state4.dump; + state3.dump = "&ref_" + duplicateIndex + " " + state3.dump; } } } else if (type3 === "[object Array]") { - if (block3 && state4.dump.length !== 0) { - if (state4.noArrayIndent && !isblockseq && level > 0) { - writeBlockSequence(state4, level - 1, state4.dump, compact2); + if (block2 && state3.dump.length !== 0) { + if (state3.noArrayIndent && !isblockseq && level > 0) { + writeBlockSequence(state3, level - 1, state3.dump, compact2); } else { - writeBlockSequence(state4, level, state4.dump, compact2); + writeBlockSequence(state3, level, state3.dump, compact2); } if (duplicate) { - state4.dump = "&ref_" + duplicateIndex + state4.dump; + state3.dump = "&ref_" + duplicateIndex + state3.dump; } } else { - writeFlowSequence(state4, level, state4.dump); + writeFlowSequence(state3, level, state3.dump); if (duplicate) { - state4.dump = "&ref_" + duplicateIndex + " " + state4.dump; + state3.dump = "&ref_" + duplicateIndex + " " + state3.dump; } } } else if (type3 === "[object String]") { - if (state4.tag !== "?") { - writeScalar(state4, state4.dump, level, iskey, inblock); + if (state3.tag !== "?") { + writeScalar(state3, state3.dump, level, iskey, inblock); } } else if (type3 === "[object Undefined]") { return false; } else { - if (state4.skipInvalid) return false; + if (state3.skipInvalid) return false; throw new exception("unacceptable kind of an object to dump " + type3); } - if (state4.tag !== null && state4.tag !== "?") { + if (state3.tag !== null && state3.tag !== "?") { tagStr = encodeURI( - state4.tag[0] === "!" ? state4.tag.slice(1) : state4.tag + state3.tag[0] === "!" ? state3.tag.slice(1) : state3.tag ).replace(/!/g, "%21"); - if (state4.tag[0] === "!") { + if (state3.tag[0] === "!") { tagStr = "!" + tagStr; } else if (tagStr.slice(0, 18) === "tag:yaml.org,2002:") { tagStr = "!!" + tagStr.slice(18); } else { tagStr = "!<" + tagStr + ">"; } - state4.dump = tagStr + " " + state4.dump; + state3.dump = tagStr + " " + state3.dump; } } return true; } - function getDuplicateReferences(object3, state4) { + function getDuplicateReferences(object3, state3) { var objects = [], duplicatesIndexes = [], index, length2; inspectNode(object3, objects, duplicatesIndexes); for (index = 0, length2 = duplicatesIndexes.length; index < length2; index += 1) { - state4.duplicates.push(objects[duplicatesIndexes[index]]); + state3.duplicates.push(objects[duplicatesIndexes[index]]); } - state4.usedDuplicates = new Array(length2); + state3.usedDuplicates = new Array(length2); } function inspectNode(object3, objects, duplicatesIndexes) { var objectKeyList, index, length2; @@ -36244,15 +36356,15 @@ var __esbuild_esm_mermaid = (() => { } } } - function dump$1(input, options3) { - options3 = options3 || {}; - var state4 = new State(options3); - if (!state4.noRefs) getDuplicateReferences(input, state4); + function dump$1(input, options2) { + options2 = options2 || {}; + var state3 = new State(options2); + if (!state3.noRefs) getDuplicateReferences(input, state3); var value2 = input; - if (state4.replacer) { - value2 = state4.replacer.call({ "": value2 }, "", value2); + if (state3.replacer) { + value2 = state3.replacer.call({ "": value2 }, "", value2); } - if (writeNode(state4, 0, value2, true, true)) return state4.dump + "\n"; + if (writeNode(state3, 0, value2, true, true)) return state3.dump + "\n"; return ""; } function renamed(from2, to) { @@ -36359,20 +36471,20 @@ var __esbuild_esm_mermaid = (() => { schema = Schema$1; str = new type2("tag:yaml.org,2002:str", { kind: "scalar", - construct: /* @__PURE__ */ __name(function(data6) { - return data6 !== null ? data6 : ""; + construct: /* @__PURE__ */ __name(function(data5) { + return data5 !== null ? data5 : ""; }, "construct") }); seq = new type2("tag:yaml.org,2002:seq", { kind: "sequence", - construct: /* @__PURE__ */ __name(function(data6) { - return data6 !== null ? data6 : []; + construct: /* @__PURE__ */ __name(function(data5) { + return data5 !== null ? data5 : []; }, "construct") }); map2 = new type2("tag:yaml.org,2002:map", { kind: "mapping", - construct: /* @__PURE__ */ __name(function(data6) { - return data6 !== null ? data6 : {}; + construct: /* @__PURE__ */ __name(function(data5) { + return data5 !== null ? data5 : {}; }, "construct") }); failsafe = new schema({ @@ -36594,51 +36706,51 @@ var __esbuild_esm_mermaid = (() => { __name(throwError, "throwError"); __name(throwWarning, "throwWarning"); directiveHandlers = { - YAML: /* @__PURE__ */ __name(function handleYamlDirective(state4, name, args) { + YAML: /* @__PURE__ */ __name(function handleYamlDirective(state3, name, args) { var match2, major, minor; - if (state4.version !== null) { - throwError(state4, "duplication of %YAML directive"); + if (state3.version !== null) { + throwError(state3, "duplication of %YAML directive"); } if (args.length !== 1) { - throwError(state4, "YAML directive accepts exactly one argument"); + throwError(state3, "YAML directive accepts exactly one argument"); } match2 = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); if (match2 === null) { - throwError(state4, "ill-formed argument of the YAML directive"); + throwError(state3, "ill-formed argument of the YAML directive"); } major = parseInt(match2[1], 10); minor = parseInt(match2[2], 10); if (major !== 1) { - throwError(state4, "unacceptable YAML version of the document"); + throwError(state3, "unacceptable YAML version of the document"); } - state4.version = args[0]; - state4.checkLineBreaks = minor < 2; + state3.version = args[0]; + state3.checkLineBreaks = minor < 2; if (minor !== 1 && minor !== 2) { - throwWarning(state4, "unsupported YAML version of the document"); + throwWarning(state3, "unsupported YAML version of the document"); } }, "handleYamlDirective"), - TAG: /* @__PURE__ */ __name(function handleTagDirective(state4, name, args) { + TAG: /* @__PURE__ */ __name(function handleTagDirective(state3, name, args) { var handle, prefix; if (args.length !== 2) { - throwError(state4, "TAG directive accepts exactly two arguments"); + throwError(state3, "TAG directive accepts exactly two arguments"); } handle = args[0]; prefix = args[1]; if (!PATTERN_TAG_HANDLE.test(handle)) { - throwError(state4, "ill-formed tag handle (first argument) of the TAG directive"); + throwError(state3, "ill-formed tag handle (first argument) of the TAG directive"); } - if (_hasOwnProperty$1.call(state4.tagMap, handle)) { - throwError(state4, 'there is a previously declared suffix for "' + handle + '" tag handle'); + if (_hasOwnProperty$1.call(state3.tagMap, handle)) { + throwError(state3, 'there is a previously declared suffix for "' + handle + '" tag handle'); } if (!PATTERN_TAG_URI.test(prefix)) { - throwError(state4, "ill-formed tag prefix (second argument) of the TAG directive"); + throwError(state3, "ill-formed tag prefix (second argument) of the TAG directive"); } try { prefix = decodeURIComponent(prefix); } catch (err) { - throwError(state4, "tag prefix is malformed: " + prefix); + throwError(state3, "tag prefix is malformed: " + prefix); } - state4.tagMap[handle] = prefix; + state3.tagMap[handle] = prefix; }, "handleTagDirective") }; __name(captureSegment, "captureSegment"); @@ -36783,2170 +36895,1179 @@ var __esbuild_esm_mermaid = (() => { } }); - // ../../node_modules/.pnpm/marked@15.0.7/node_modules/marked/lib/marked.esm.js - function _getDefaults() { - return { - async: false, - breaks: false, - extensions: null, - gfm: true, - hooks: null, - pedantic: false, - renderer: null, - silent: false, - tokenizer: null, - walkTokens: null - }; + // ../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/lib/marked.esm.js + function L() { + return { async: false, breaks: false, extensions: null, gfm: true, hooks: null, pedantic: false, renderer: null, silent: false, tokenizer: null, walkTokens: null }; } - function changeDefaults(newDefaults) { - _defaults = newDefaults; + function G(l4) { + O = l4; } - function edit(regex2, opt = "") { - let source = typeof regex2 === "string" ? regex2 : regex2.source; - const obj = { - replace: /* @__PURE__ */ __name((name, val) => { - let valSource = typeof val === "string" ? val : val.source; - valSource = valSource.replace(other.caret, "$1"); - source = source.replace(name, valSource); - return obj; - }, "replace"), - getRegex: /* @__PURE__ */ __name(() => { - return new RegExp(source, opt); - }, "getRegex") - }; - return obj; + function h(l4, e3 = "") { + let t4 = typeof l4 == "string" ? l4 : l4.source, n2 = { replace: /* @__PURE__ */ __name((r2, i2) => { + let s2 = typeof i2 == "string" ? i2 : i2.source; + return s2 = s2.replace(m.caret, "$1"), t4 = t4.replace(r2, s2), n2; + }, "replace"), getRegex: /* @__PURE__ */ __name(() => new RegExp(t4, e3), "getRegex") }; + return n2; } - function escape3(html3, encode) { - if (encode) { - if (other.escapeTest.test(html3)) { - return html3.replace(other.escapeReplace, getEscapeReplacement); - } - } else { - if (other.escapeTestNoEncode.test(html3)) { - return html3.replace(other.escapeReplaceNoEncode, getEscapeReplacement); - } - } - return html3; + function w(l4, e3) { + if (e3) { + if (m.escapeTest.test(l4)) return l4.replace(m.escapeReplace, ke); + } else if (m.escapeTestNoEncode.test(l4)) return l4.replace(m.escapeReplaceNoEncode, ke); + return l4; } - function cleanUrl(href) { + function J(l4) { try { - href = encodeURI(href).replace(other.percentDecode, "%"); + l4 = encodeURI(l4).replace(m.percentDecode, "%"); } catch { return null; } - return href; - } - function splitCells(tableRow, count) { - const row = tableRow.replace(other.findPipe, (match2, offset, str2) => { - let escaped = false; - let curr = offset; - while (--curr >= 0 && str2[curr] === "\\") - escaped = !escaped; - if (escaped) { - return "|"; - } else { - return " |"; - } - }), cells = row.split(other.splitPipe); - let i2 = 0; - if (!cells[0].trim()) { - cells.shift(); - } - if (cells.length > 0 && !cells.at(-1)?.trim()) { - cells.pop(); - } - if (count) { - if (cells.length > count) { - cells.splice(count); - } else { - while (cells.length < count) - cells.push(""); - } - } - for (; i2 < cells.length; i2++) { - cells[i2] = cells[i2].trim().replace(other.slashPipe, "|"); - } - return cells; - } - function rtrim(str2, c3, invert2) { - const l2 = str2.length; - if (l2 === 0) { - return ""; - } - let suffLen = 0; - while (suffLen < l2) { - const currChar = str2.charAt(l2 - suffLen - 1); - if (currChar === c3 && true) { - suffLen++; - } else { - break; - } - } - return str2.slice(0, l2 - suffLen); - } - function findClosingBracket(str2, b2) { - if (str2.indexOf(b2[1]) === -1) { - return -1; - } - let level = 0; - for (let i2 = 0; i2 < str2.length; i2++) { - if (str2[i2] === "\\") { - i2++; - } else if (str2[i2] === b2[0]) { - level++; - } else if (str2[i2] === b2[1]) { - level--; - if (level < 0) { - return i2; - } - } - } - return -1; - } - function outputLink(cap, link3, raw, lexer2, rules) { - const href = link3.href; - const title2 = link3.title || null; - const text4 = cap[1].replace(rules.other.outputLinkReplace, "$1"); - if (cap[0].charAt(0) !== "!") { - lexer2.state.inLink = true; - const token2 = { - type: "link", - raw, - href, - title: title2, - text: text4, - tokens: lexer2.inlineTokens(text4) - }; - lexer2.state.inLink = false; - return token2; - } - return { - type: "image", - raw, - href, - title: title2, - text: text4 - }; - } - function indentCodeCompensation(raw, text4, rules) { - const matchIndentToCode = raw.match(rules.other.indentCodeCompensation); - if (matchIndentToCode === null) { - return text4; - } - const indentToCode = matchIndentToCode[1]; - return text4.split("\n").map((node2) => { - const matchIndentInNode = node2.match(rules.other.beginningSpace); - if (matchIndentInNode === null) { - return node2; - } - const [indentInNode] = matchIndentInNode; - if (indentInNode.length >= indentToCode.length) { - return node2.slice(indentToCode.length); - } - return node2; - }).join("\n"); - } - function marked(src, opt) { - return markedInstance.parse(src, opt); + return l4; + } + function V(l4, e3) { + let t4 = l4.replace(m.findPipe, (i2, s2, o2) => { + let a2 = false, u2 = s2; + for (; --u2 >= 0 && o2[u2] === "\\"; ) a2 = !a2; + return a2 ? "|" : " |"; + }), n2 = t4.split(m.splitPipe), r2 = 0; + if (n2[0].trim() || n2.shift(), n2.length > 0 && !n2.at(-1)?.trim() && n2.pop(), e3) if (n2.length > e3) n2.splice(e3); + else for (; n2.length < e3; ) n2.push(""); + for (; r2 < n2.length; r2++) n2[r2] = n2[r2].trim().replace(m.slashPipe, "|"); + return n2; } - var _defaults, noopTest, other, newline, blockCode, fences, hr, heading, bullet, lheadingCore, lheading, lheadingGfm, _paragraph, blockText, _blockLabel, def, list, _tag, _comment, html2, paragraph, blockquote, blockNormal, gfmTable, blockGfm, blockPedantic, escape$1, inlineCode, br, inlineText, _punctuation, _punctuationOrSpace, _notPunctuationOrSpace, punctuation, _punctuationGfmStrongEm, _punctuationOrSpaceGfmStrongEm, _notPunctuationOrSpaceGfmStrongEm, blockSkip, emStrongLDelimCore, emStrongLDelim, emStrongLDelimGfm, emStrongRDelimAstCore, emStrongRDelimAst, emStrongRDelimAstGfm, emStrongRDelimUnd, anyPunctuation, autolink, _inlineComment, tag, _inlineLabel, link, reflink, nolink, reflinkSearch, inlineNormal, inlinePedantic, inlineGfm, inlineBreaks, block, inline, escapeReplacements, getEscapeReplacement, _Tokenizer, _Lexer, _Renderer, _TextRenderer, _Parser, _Hooks, Marked, markedInstance, options, setOptions, use, walkTokens, parseInline, parser2, lexer; + function z(l4, e3, t4) { + let n2 = l4.length; + if (n2 === 0) return ""; + let r2 = 0; + for (; r2 < n2; ) { + let i2 = l4.charAt(n2 - r2 - 1); + if (i2 === e3 && !t4) r2++; + else if (i2 !== e3 && t4) r2++; + else break; + } + return l4.slice(0, n2 - r2); + } + function ge(l4, e3) { + if (l4.indexOf(e3[1]) === -1) return -1; + let t4 = 0; + for (let n2 = 0; n2 < l4.length; n2++) if (l4[n2] === "\\") n2++; + else if (l4[n2] === e3[0]) t4++; + else if (l4[n2] === e3[1] && (t4--, t4 < 0)) return n2; + return t4 > 0 ? -2 : -1; + } + function fe(l4, e3, t4, n2, r2) { + let i2 = e3.href, s2 = e3.title || null, o2 = l4[1].replace(r2.other.outputLinkReplace, "$1"); + n2.state.inLink = true; + let a2 = { type: l4[0].charAt(0) === "!" ? "image" : "link", raw: t4, href: i2, title: s2, text: o2, tokens: n2.inlineTokens(o2) }; + return n2.state.inLink = false, a2; + } + function Je(l4, e3, t4) { + let n2 = l4.match(t4.other.indentCodeCompensation); + if (n2 === null) return e3; + let r2 = n2[1]; + return e3.split(` +`).map((i2) => { + let s2 = i2.match(t4.other.beginningSpace); + if (s2 === null) return i2; + let [o2] = s2; + return o2.length >= r2.length ? i2.slice(r2.length) : i2; + }).join(` +`); + } + function d(l4, e3) { + return _.parse(l4, e3); + } + var O, E, m, xe, be, Re, C, Oe, j, se, ie, Te, F, we, Q, ye, Pe, v, U, Se, oe, $e, K2, re2, _e, Le, Me, ze, ae, Ae, D2, W, le, Ee, ue, Ce, Ie, Be, pe, qe, ve, ce, De, He, Ze, Ge, Ne, je, Fe, q, Qe, he, de, Ue, X2, Ke, N, We, I, M, Xe, ke, y2, b, P, $, R, S2, B, _, Dt, Ht, Zt, Gt, Nt, Ft, Qt; var init_marked_esm = __esm({ - "../../node_modules/.pnpm/marked@15.0.7/node_modules/marked/lib/marked.esm.js"() { - "use strict"; - __name(_getDefaults, "_getDefaults"); - _defaults = _getDefaults(); - __name(changeDefaults, "changeDefaults"); - noopTest = { exec: /* @__PURE__ */ __name(() => null, "exec") }; - __name(edit, "edit"); - other = { - codeRemoveIndent: /^(?: {1,4}| {0,3}\t)/gm, - outputLinkReplace: /\\([\[\]])/g, - indentCodeCompensation: /^(\s+)(?:```)/, - beginningSpace: /^\s+/, - endingHash: /#$/, - startingSpaceChar: /^ /, - endingSpaceChar: / $/, - nonSpaceChar: /[^ ]/, - newLineCharGlobal: /\n/g, - tabCharGlobal: /\t/g, - multipleSpaceGlobal: /\s+/g, - blankLine: /^[ \t]*$/, - doubleBlankLine: /\n[ \t]*\n[ \t]*$/, - blockquoteStart: /^ {0,3}>/, - blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g, - blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm, - listReplaceTabs: /^\t+/, - listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, - listIsTask: /^\[[ xX]\] /, - listReplaceTask: /^\[[ xX]\] +/, - anyLine: /\n.*\n/, - hrefBrackets: /^<(.*)>$/, - tableDelimiter: /[:|]/, - tableAlignChars: /^\||\| *$/g, - tableRowBlankLine: /\n[ \t]*$/, - tableAlignRight: /^ *-+: *$/, - tableAlignCenter: /^ *:-+: *$/, - tableAlignLeft: /^ *:-+ *$/, - startATag: /^/i, - startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i, - endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i, - startAngleBracket: /^$/, - pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/, - unicodeAlphaNumeric: /[\p{L}\p{N}]/u, - escapeTest: /[&<>"']/, - escapeReplace: /[&<>"']/g, - escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, - escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g, - unescapeTest: /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, - caret: /(^|[^\[])\^/g, - percentDecode: /%25/g, - findPipe: /\|/g, - splitPipe: / \|/, - slashPipe: /\\\|/g, - carriageReturn: /\r\n|\r/g, - spaceLine: /^ +$/gm, - notSpaceStart: /^\S*/, - endingNewline: /\n$/, - listItemRegex: /* @__PURE__ */ __name((bull) => new RegExp(`^( {0,3}${bull})((?:[ ][^\\n]*)?(?:\\n|$))`), "listItemRegex"), - nextBulletRegex: /* @__PURE__ */ __name((indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`), "nextBulletRegex"), - hrRegex: /* @__PURE__ */ __name((indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`), "hrRegex"), - fencesBeginRegex: /* @__PURE__ */ __name((indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`), "fencesBeginRegex"), - headingBeginRegex: /* @__PURE__ */ __name((indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`), "headingBeginRegex"), - htmlBeginRegex: /* @__PURE__ */ __name((indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, "i"), "htmlBeginRegex") - }; - newline = /^(?:[ \t]*(?:\n|$))+/; - blockCode = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/; - fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; - hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; - heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; - bullet = /(?:[*+-]|\d{1,9}[.)])/; - lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/; - lheading = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex(); - lheadingGfm = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(); - _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; - blockText = /^[^\n]+/; - _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; - def = edit(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", _blockLabel).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(); - list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, bullet).getRegex(); - _tag = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul"; - _comment = /|$))/; - html2 = edit("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))", "i").replace("comment", _comment).replace("tag", _tag).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(); - paragraph = edit(_paragraph).replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex(); - blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", paragraph).getRegex(); - blockNormal = { - blockquote, - code: blockCode, - def, - fences, - heading, - hr, - html: html2, - lheading, - list, - newline, - paragraph, - table: noopTest, - text: blockText - }; - gfmTable = edit("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex(); - blockGfm = { - ...blockNormal, - lheading: lheadingGfm, - table: gfmTable, - paragraph: edit(_paragraph).replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", gfmTable).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex() - }; - blockPedantic = { - ...blockNormal, - html: edit(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", _comment).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), - def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, - heading: /^(#{1,6})(.*)(?:\n+|$)/, - fences: noopTest, - // fences not supported - lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, - paragraph: edit(_paragraph).replace("hr", hr).replace("heading", " *#{1,6} *[^\n]").replace("lheading", lheading).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() - }; - escape$1 = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; - inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; - br = /^( {2,}|\\)\n(?!\s*$)/; - inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g; - emStrongLDelimCore = /^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/; - emStrongLDelim = edit(emStrongLDelimCore, "u").replace(/punct/g, _punctuation).getRegex(); - emStrongLDelimGfm = edit(emStrongLDelimCore, "u").replace(/punct/g, _punctuationGfmStrongEm).getRegex(); - emStrongRDelimAstCore = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)"; - emStrongRDelimAst = edit(emStrongRDelimAstCore, "gu").replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex(); - emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, "gu").replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm).replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm).replace(/punct/g, _punctuationGfmStrongEm).getRegex(); - emStrongRDelimUnd = edit("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex(); - anyPunctuation = edit(/\\(punct)/, "gu").replace(/punct/g, _punctuation).getRegex(); - autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(); - _inlineComment = edit(_comment).replace("(?:-->|$)", "-->").getRegex(); - tag = edit("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment", _inlineComment).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(); - _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; - link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label", _inlineLabel).replace("href", /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(); - reflink = edit(/^!?\[(label)\]\[(ref)\]/).replace("label", _inlineLabel).replace("ref", _blockLabel).getRegex(); - nolink = edit(/^!?\[(ref)\](?:\[\])?/).replace("ref", _blockLabel).getRegex(); - reflinkSearch = edit("reflink|nolink(?!\\()", "g").replace("reflink", reflink).replace("nolink", nolink).getRegex(); - inlineNormal = { - _backpedal: noopTest, - // only used for GFM url - anyPunctuation, - autolink, - blockSkip, - br, - code: inlineCode, - del: noopTest, - emStrongLDelim, - emStrongRDelimAst, - emStrongRDelimUnd, - escape: escape$1, - link, - nolink, - punctuation, - reflink, - reflinkSearch, - tag, - text: inlineText, - url: noopTest - }; - inlinePedantic = { - ...inlineNormal, - link: edit(/^!?\[(label)\]\((.*?)\)/).replace("label", _inlineLabel).getRegex(), - reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", _inlineLabel).getRegex() - }; - inlineGfm = { - ...inlineNormal, - emStrongRDelimAst: emStrongRDelimAstGfm, - emStrongLDelim: emStrongLDelimGfm, - url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, "i").replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), - _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, - del: /^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/, - text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\": ">", - '"': """, - "'": "'" - }; - getEscapeReplacement = /* @__PURE__ */ __name((ch) => escapeReplacements[ch], "getEscapeReplacement"); - __name(escape3, "escape"); - __name(cleanUrl, "cleanUrl"); - __name(splitCells, "splitCells"); - __name(rtrim, "rtrim"); - __name(findClosingBracket, "findClosingBracket"); - __name(outputLink, "outputLink"); - __name(indentCodeCompensation, "indentCodeCompensation"); - _Tokenizer = class { + "../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/lib/marked.esm.js"() { + "use strict"; + __name(L, "L"); + O = L(); + __name(G, "G"); + E = { exec: /* @__PURE__ */ __name(() => null, "exec") }; + __name(h, "h"); + m = { codeRemoveIndent: /^(?: {1,4}| {0,3}\t)/gm, outputLinkReplace: /\\([\[\]])/g, indentCodeCompensation: /^(\s+)(?:```)/, beginningSpace: /^\s+/, endingHash: /#$/, startingSpaceChar: /^ /, endingSpaceChar: / $/, nonSpaceChar: /[^ ]/, newLineCharGlobal: /\n/g, tabCharGlobal: /\t/g, multipleSpaceGlobal: /\s+/g, blankLine: /^[ \t]*$/, doubleBlankLine: /\n[ \t]*\n[ \t]*$/, blockquoteStart: /^ {0,3}>/, blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g, blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm, listReplaceTabs: /^\t+/, listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, listIsTask: /^\[[ xX]\] /, listReplaceTask: /^\[[ xX]\] +/, anyLine: /\n.*\n/, hrefBrackets: /^<(.*)>$/, tableDelimiter: /[:|]/, tableAlignChars: /^\||\| *$/g, tableRowBlankLine: /\n[ \t]*$/, tableAlignRight: /^ *-+: *$/, tableAlignCenter: /^ *:-+: *$/, tableAlignLeft: /^ *:-+ *$/, startATag: /^/i, startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i, endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i, startAngleBracket: /^$/, pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/, unicodeAlphaNumeric: /[\p{L}\p{N}]/u, escapeTest: /[&<>"']/, escapeReplace: /[&<>"']/g, escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g, unescapeTest: /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, caret: /(^|[^\[])\^/g, percentDecode: /%25/g, findPipe: /\|/g, splitPipe: / \|/, slashPipe: /\\\|/g, carriageReturn: /\r\n|\r/g, spaceLine: /^ +$/gm, notSpaceStart: /^\S*/, endingNewline: /\n$/, listItemRegex: /* @__PURE__ */ __name((l4) => new RegExp(`^( {0,3}${l4})((?:[ ][^\\n]*)?(?:\\n|$))`), "listItemRegex"), nextBulletRegex: /* @__PURE__ */ __name((l4) => new RegExp(`^ {0,${Math.min(3, l4 - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`), "nextBulletRegex"), hrRegex: /* @__PURE__ */ __name((l4) => new RegExp(`^ {0,${Math.min(3, l4 - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`), "hrRegex"), fencesBeginRegex: /* @__PURE__ */ __name((l4) => new RegExp(`^ {0,${Math.min(3, l4 - 1)}}(?:\`\`\`|~~~)`), "fencesBeginRegex"), headingBeginRegex: /* @__PURE__ */ __name((l4) => new RegExp(`^ {0,${Math.min(3, l4 - 1)}}#`), "headingBeginRegex"), htmlBeginRegex: /* @__PURE__ */ __name((l4) => new RegExp(`^ {0,${Math.min(3, l4 - 1)}}<(?:[a-z].*>|!--)`, "i"), "htmlBeginRegex") }; + xe = /^(?:[ \t]*(?:\n|$))+/; + be = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/; + Re = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; + C = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; + Oe = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; + j = /(?:[*+-]|\d{1,9}[.)])/; + se = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/; + ie = h(se).replace(/bull/g, j).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex(); + Te = h(se).replace(/bull/g, j).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(); + F = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; + we = /^[^\n]+/; + Q = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/; + ye = h(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", Q).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(); + Pe = h(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, j).getRegex(); + v = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul"; + U = /|$))/; + Se = h("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))", "i").replace("comment", U).replace("tag", v).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(); + oe = h(F).replace("hr", C).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", v).getRegex(); + $e = h(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", oe).getRegex(); + K2 = { blockquote: $e, code: be, def: ye, fences: Re, heading: Oe, hr: C, html: Se, lheading: ie, list: Pe, newline: xe, paragraph: oe, table: E, text: we }; + re2 = h("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", C).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", v).getRegex(); + _e = { ...K2, lheading: Te, table: re2, paragraph: h(F).replace("hr", C).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", re2).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", v).getRegex() }; + Le = { ...K2, html: h(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", U).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, heading: /^(#{1,6})(.*)(?:\n+|$)/, fences: E, lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, paragraph: h(F).replace("hr", C).replace("heading", ` *#{1,6} *[^ +]`).replace("lheading", ie).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() }; + Me = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; + ze = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; + ae = /^( {2,}|\\)\n(?!\s*$)/; + Ae = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g; + pe = /^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/; + qe = h(pe, "u").replace(/punct/g, D2).getRegex(); + ve = h(pe, "u").replace(/punct/g, ue).getRegex(); + ce = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)"; + De = h(ce, "gu").replace(/notPunctSpace/g, le).replace(/punctSpace/g, W).replace(/punct/g, D2).getRegex(); + He = h(ce, "gu").replace(/notPunctSpace/g, Ie).replace(/punctSpace/g, Ce).replace(/punct/g, ue).getRegex(); + Ze = h("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, le).replace(/punctSpace/g, W).replace(/punct/g, D2).getRegex(); + Ge = h(/\\(punct)/, "gu").replace(/punct/g, D2).getRegex(); + Ne = h(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(); + je = h(U).replace("(?:-->|$)", "-->").getRegex(); + Fe = h("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment", je).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(); + q = /(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/; + Qe = h(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label", q).replace("href", /<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(); + he = h(/^!?\[(label)\]\[(ref)\]/).replace("label", q).replace("ref", Q).getRegex(); + de = h(/^!?\[(ref)\](?:\[\])?/).replace("ref", Q).getRegex(); + Ue = h("reflink|nolink(?!\\()", "g").replace("reflink", he).replace("nolink", de).getRegex(); + X2 = { _backpedal: E, anyPunctuation: Ge, autolink: Ne, blockSkip: Be, br: ae, code: ze, del: E, emStrongLDelim: qe, emStrongRDelimAst: De, emStrongRDelimUnd: Ze, escape: Me, link: Qe, nolink: de, punctuation: Ee, reflink: he, reflinkSearch: Ue, tag: Fe, text: Ae, url: E }; + Ke = { ...X2, link: h(/^!?\[(label)\]\((.*?)\)/).replace("label", q).getRegex(), reflink: h(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", q).getRegex() }; + N = { ...X2, emStrongRDelimAst: He, emStrongLDelim: ve, url: h(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, "i").replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, del: /^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/, text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\": ">", '"': """, "'": "'" }; + ke = /* @__PURE__ */ __name((l4) => Xe[l4], "ke"); + __name(w, "w"); + __name(J, "J"); + __name(V, "V"); + __name(z, "z"); + __name(ge, "ge"); + __name(fe, "fe"); + __name(Je, "Je"); + y2 = class { static { - __name(this, "_Tokenizer"); + __name(this, "y"); } options; rules; - // set by the lexer lexer; - // set by the lexer - constructor(options3) { - this.options = options3 || _defaults; - } - space(src) { - const cap = this.rules.block.newline.exec(src); - if (cap && cap[0].length > 0) { - return { - type: "space", - raw: cap[0] - }; - } - } - code(src) { - const cap = this.rules.block.code.exec(src); - if (cap) { - const text4 = cap[0].replace(this.rules.other.codeRemoveIndent, ""); - return { - type: "code", - raw: cap[0], - codeBlockStyle: "indented", - text: !this.options.pedantic ? rtrim(text4, "\n") : text4 - }; - } - } - fences(src) { - const cap = this.rules.block.fences.exec(src); - if (cap) { - const raw = cap[0]; - const text4 = indentCodeCompensation(raw, cap[3] || "", this.rules); - return { - type: "code", - raw, - lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : cap[2], - text: text4 - }; - } - } - heading(src) { - const cap = this.rules.block.heading.exec(src); - if (cap) { - let text4 = cap[2].trim(); - if (this.rules.other.endingHash.test(text4)) { - const trimmed = rtrim(text4, "#"); - if (this.options.pedantic) { - text4 = trimmed.trim(); - } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) { - text4 = trimmed.trim(); - } - } - return { - type: "heading", - raw: cap[0], - depth: cap[1].length, - text: text4, - tokens: this.lexer.inline(text4) - }; - } - } - hr(src) { - const cap = this.rules.block.hr.exec(src); - if (cap) { - return { - type: "hr", - raw: rtrim(cap[0], "\n") - }; - } - } - blockquote(src) { - const cap = this.rules.block.blockquote.exec(src); - if (cap) { - let lines = rtrim(cap[0], "\n").split("\n"); - let raw = ""; - let text4 = ""; - const tokens2 = []; - while (lines.length > 0) { - let inBlockquote = false; - const currentLines = []; - let i2; - for (i2 = 0; i2 < lines.length; i2++) { - if (this.rules.other.blockquoteStart.test(lines[i2])) { - currentLines.push(lines[i2]); - inBlockquote = true; - } else if (!inBlockquote) { - currentLines.push(lines[i2]); - } else { - break; - } - } - lines = lines.slice(i2); - const currentRaw = currentLines.join("\n"); - const currentText = currentRaw.replace(this.rules.other.blockquoteSetextReplace, "\n $1").replace(this.rules.other.blockquoteSetextReplace2, ""); - raw = raw ? `${raw} -${currentRaw}` : currentRaw; - text4 = text4 ? `${text4} -${currentText}` : currentText; - const top2 = this.lexer.state.top; - this.lexer.state.top = true; - this.lexer.blockTokens(currentText, tokens2, true); - this.lexer.state.top = top2; - if (lines.length === 0) { - break; - } - const lastToken = tokens2.at(-1); - if (lastToken?.type === "code") { - break; - } else if (lastToken?.type === "blockquote") { - const oldToken = lastToken; - const newText = oldToken.raw + "\n" + lines.join("\n"); - const newToken = this.blockquote(newText); - tokens2[tokens2.length - 1] = newToken; - raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw; - text4 = text4.substring(0, text4.length - oldToken.text.length) + newToken.text; - break; - } else if (lastToken?.type === "list") { - const oldToken = lastToken; - const newText = oldToken.raw + "\n" + lines.join("\n"); - const newToken = this.list(newText); - tokens2[tokens2.length - 1] = newToken; - raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw; - text4 = text4.substring(0, text4.length - oldToken.raw.length) + newToken.raw; - lines = newText.substring(tokens2.at(-1).raw.length).split("\n"); + constructor(e3) { + this.options = e3 || O; + } + space(e3) { + let t4 = this.rules.block.newline.exec(e3); + if (t4 && t4[0].length > 0) return { type: "space", raw: t4[0] }; + } + code(e3) { + let t4 = this.rules.block.code.exec(e3); + if (t4) { + let n2 = t4[0].replace(this.rules.other.codeRemoveIndent, ""); + return { type: "code", raw: t4[0], codeBlockStyle: "indented", text: this.options.pedantic ? n2 : z(n2, ` +`) }; + } + } + fences(e3) { + let t4 = this.rules.block.fences.exec(e3); + if (t4) { + let n2 = t4[0], r2 = Je(n2, t4[3] || "", this.rules); + return { type: "code", raw: n2, lang: t4[2] ? t4[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : t4[2], text: r2 }; + } + } + heading(e3) { + let t4 = this.rules.block.heading.exec(e3); + if (t4) { + let n2 = t4[2].trim(); + if (this.rules.other.endingHash.test(n2)) { + let r2 = z(n2, "#"); + (this.options.pedantic || !r2 || this.rules.other.endingSpaceChar.test(r2)) && (n2 = r2.trim()); + } + return { type: "heading", raw: t4[0], depth: t4[1].length, text: n2, tokens: this.lexer.inline(n2) }; + } + } + hr(e3) { + let t4 = this.rules.block.hr.exec(e3); + if (t4) return { type: "hr", raw: z(t4[0], ` +`) }; + } + blockquote(e3) { + let t4 = this.rules.block.blockquote.exec(e3); + if (t4) { + let n2 = z(t4[0], ` +`).split(` +`), r2 = "", i2 = "", s2 = []; + for (; n2.length > 0; ) { + let o2 = false, a2 = [], u2; + for (u2 = 0; u2 < n2.length; u2++) if (this.rules.other.blockquoteStart.test(n2[u2])) a2.push(n2[u2]), o2 = true; + else if (!o2) a2.push(n2[u2]); + else break; + n2 = n2.slice(u2); + let p3 = a2.join(` +`), c3 = p3.replace(this.rules.other.blockquoteSetextReplace, ` + $1`).replace(this.rules.other.blockquoteSetextReplace2, ""); + r2 = r2 ? `${r2} +${p3}` : p3, i2 = i2 ? `${i2} +${c3}` : c3; + let f2 = this.lexer.state.top; + if (this.lexer.state.top = true, this.lexer.blockTokens(c3, s2, true), this.lexer.state.top = f2, n2.length === 0) break; + let k2 = s2.at(-1); + if (k2?.type === "code") break; + if (k2?.type === "blockquote") { + let x5 = k2, g2 = x5.raw + ` +` + n2.join(` +`), T3 = this.blockquote(g2); + s2[s2.length - 1] = T3, r2 = r2.substring(0, r2.length - x5.raw.length) + T3.raw, i2 = i2.substring(0, i2.length - x5.text.length) + T3.text; + break; + } else if (k2?.type === "list") { + let x5 = k2, g2 = x5.raw + ` +` + n2.join(` +`), T3 = this.list(g2); + s2[s2.length - 1] = T3, r2 = r2.substring(0, r2.length - k2.raw.length) + T3.raw, i2 = i2.substring(0, i2.length - x5.raw.length) + T3.raw, n2 = g2.substring(s2.at(-1).raw.length).split(` +`); continue; } } - return { - type: "blockquote", - raw, - tokens: tokens2, - text: text4 - }; - } - } - list(src) { - let cap = this.rules.block.list.exec(src); - if (cap) { - let bull = cap[1].trim(); - const isordered = bull.length > 1; - const list2 = { - type: "list", - raw: "", - ordered: isordered, - start: isordered ? +bull.slice(0, -1) : "", - loose: false, - items: [] - }; - bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; - if (this.options.pedantic) { - bull = isordered ? bull : "[*+-]"; - } - const itemRegex = this.rules.other.listItemRegex(bull); - let endsWithBlankLine = false; - while (src) { - let endEarly = false; - let raw = ""; - let itemContents = ""; - if (!(cap = itemRegex.exec(src))) { - break; - } - if (this.rules.block.hr.test(src)) { - break; - } - raw = cap[0]; - src = src.substring(raw.length); - let line2 = cap[2].split("\n", 1)[0].replace(this.rules.other.listReplaceTabs, (t4) => " ".repeat(3 * t4.length)); - let nextLine = src.split("\n", 1)[0]; - let blankLine = !line2.trim(); - let indent = 0; - if (this.options.pedantic) { - indent = 2; - itemContents = line2.trimStart(); - } else if (blankLine) { - indent = cap[1].length + 1; - } else { - indent = cap[2].search(this.rules.other.nonSpaceChar); - indent = indent > 4 ? 1 : indent; - itemContents = line2.slice(indent); - indent += cap[1].length; - } - if (blankLine && this.rules.other.blankLine.test(nextLine)) { - raw += nextLine + "\n"; - src = src.substring(nextLine.length + 1); - endEarly = true; - } - if (!endEarly) { - const nextBulletRegex = this.rules.other.nextBulletRegex(indent); - const hrRegex = this.rules.other.hrRegex(indent); - const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent); - const headingBeginRegex = this.rules.other.headingBeginRegex(indent); - const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent); - while (src) { - const rawLine = src.split("\n", 1)[0]; - let nextLineWithoutTabs; - nextLine = rawLine; - if (this.options.pedantic) { - nextLine = nextLine.replace(this.rules.other.listReplaceNesting, " "); - nextLineWithoutTabs = nextLine; - } else { - nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, " "); - } - if (fencesBeginRegex.test(nextLine)) { - break; - } - if (headingBeginRegex.test(nextLine)) { - break; - } - if (htmlBeginRegex.test(nextLine)) { - break; - } - if (nextBulletRegex.test(nextLine)) { - break; - } - if (hrRegex.test(nextLine)) { - break; - } - if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) { - itemContents += "\n" + nextLineWithoutTabs.slice(indent); - } else { - if (blankLine) { - break; - } - if (line2.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4) { - break; - } - if (fencesBeginRegex.test(line2)) { - break; - } - if (headingBeginRegex.test(line2)) { - break; - } - if (hrRegex.test(line2)) { - break; - } - itemContents += "\n" + nextLine; - } - if (!blankLine && !nextLine.trim()) { - blankLine = true; - } - raw += rawLine + "\n"; - src = src.substring(rawLine.length + 1); - line2 = nextLineWithoutTabs.slice(indent); - } - } - if (!list2.loose) { - if (endsWithBlankLine) { - list2.loose = true; - } else if (this.rules.other.doubleBlankLine.test(raw)) { - endsWithBlankLine = true; - } - } - let istask = null; - let ischecked; - if (this.options.gfm) { - istask = this.rules.other.listIsTask.exec(itemContents); - if (istask) { - ischecked = istask[0] !== "[ ] "; - itemContents = itemContents.replace(this.rules.other.listReplaceTask, ""); - } - } - list2.items.push({ - type: "list_item", - raw, - task: !!istask, - checked: ischecked, - loose: false, - text: itemContents, - tokens: [] - }); - list2.raw += raw; - } - const lastItem = list2.items.at(-1); - if (lastItem) { - lastItem.raw = lastItem.raw.trimEnd(); - lastItem.text = lastItem.text.trimEnd(); - } else { - return; - } - list2.raw = list2.raw.trimEnd(); - for (let i2 = 0; i2 < list2.items.length; i2++) { - this.lexer.state.top = false; - list2.items[i2].tokens = this.lexer.blockTokens(list2.items[i2].text, []); - if (!list2.loose) { - const spacers = list2.items[i2].tokens.filter((t4) => t4.type === "space"); - const hasMultipleLineBreaks = spacers.length > 0 && spacers.some((t4) => this.rules.other.anyLine.test(t4.raw)); - list2.loose = hasMultipleLineBreaks; - } - } - if (list2.loose) { - for (let i2 = 0; i2 < list2.items.length; i2++) { - list2.items[i2].loose = true; - } - } - return list2; + return { type: "blockquote", raw: r2, tokens: s2, text: i2 }; + } + } + list(e3) { + let t4 = this.rules.block.list.exec(e3); + if (t4) { + let n2 = t4[1].trim(), r2 = n2.length > 1, i2 = { type: "list", raw: "", ordered: r2, start: r2 ? +n2.slice(0, -1) : "", loose: false, items: [] }; + n2 = r2 ? `\\d{1,9}\\${n2.slice(-1)}` : `\\${n2}`, this.options.pedantic && (n2 = r2 ? n2 : "[*+-]"); + let s2 = this.rules.other.listItemRegex(n2), o2 = false; + for (; e3; ) { + let u2 = false, p3 = "", c3 = ""; + if (!(t4 = s2.exec(e3)) || this.rules.block.hr.test(e3)) break; + p3 = t4[0], e3 = e3.substring(p3.length); + let f2 = t4[2].split(` +`, 1)[0].replace(this.rules.other.listReplaceTabs, (H2) => " ".repeat(3 * H2.length)), k2 = e3.split(` +`, 1)[0], x5 = !f2.trim(), g2 = 0; + if (this.options.pedantic ? (g2 = 2, c3 = f2.trimStart()) : x5 ? g2 = t4[1].length + 1 : (g2 = t4[2].search(this.rules.other.nonSpaceChar), g2 = g2 > 4 ? 1 : g2, c3 = f2.slice(g2), g2 += t4[1].length), x5 && this.rules.other.blankLine.test(k2) && (p3 += k2 + ` +`, e3 = e3.substring(k2.length + 1), u2 = true), !u2) { + let H2 = this.rules.other.nextBulletRegex(g2), ee = this.rules.other.hrRegex(g2), te = this.rules.other.fencesBeginRegex(g2), ne = this.rules.other.headingBeginRegex(g2), me = this.rules.other.htmlBeginRegex(g2); + for (; e3; ) { + let Z2 = e3.split(` +`, 1)[0], A2; + if (k2 = Z2, this.options.pedantic ? (k2 = k2.replace(this.rules.other.listReplaceNesting, " "), A2 = k2) : A2 = k2.replace(this.rules.other.tabCharGlobal, " "), te.test(k2) || ne.test(k2) || me.test(k2) || H2.test(k2) || ee.test(k2)) break; + if (A2.search(this.rules.other.nonSpaceChar) >= g2 || !k2.trim()) c3 += ` +` + A2.slice(g2); + else { + if (x5 || f2.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4 || te.test(f2) || ne.test(f2) || ee.test(f2)) break; + c3 += ` +` + k2; + } + !x5 && !k2.trim() && (x5 = true), p3 += Z2 + ` +`, e3 = e3.substring(Z2.length + 1), f2 = A2.slice(g2); + } + } + i2.loose || (o2 ? i2.loose = true : this.rules.other.doubleBlankLine.test(p3) && (o2 = true)); + let T3 = null, Y3; + this.options.gfm && (T3 = this.rules.other.listIsTask.exec(c3), T3 && (Y3 = T3[0] !== "[ ] ", c3 = c3.replace(this.rules.other.listReplaceTask, ""))), i2.items.push({ type: "list_item", raw: p3, task: !!T3, checked: Y3, loose: false, text: c3, tokens: [] }), i2.raw += p3; + } + let a2 = i2.items.at(-1); + if (a2) a2.raw = a2.raw.trimEnd(), a2.text = a2.text.trimEnd(); + else return; + i2.raw = i2.raw.trimEnd(); + for (let u2 = 0; u2 < i2.items.length; u2++) if (this.lexer.state.top = false, i2.items[u2].tokens = this.lexer.blockTokens(i2.items[u2].text, []), !i2.loose) { + let p3 = i2.items[u2].tokens.filter((f2) => f2.type === "space"), c3 = p3.length > 0 && p3.some((f2) => this.rules.other.anyLine.test(f2.raw)); + i2.loose = c3; + } + if (i2.loose) for (let u2 = 0; u2 < i2.items.length; u2++) i2.items[u2].loose = true; + return i2; } } - html(src) { - const cap = this.rules.block.html.exec(src); - if (cap) { - const token2 = { - type: "html", - block: true, - raw: cap[0], - pre: cap[1] === "pre" || cap[1] === "script" || cap[1] === "style", - text: cap[0] - }; - return token2; - } + html(e3) { + let t4 = this.rules.block.html.exec(e3); + if (t4) return { type: "html", block: true, raw: t4[0], pre: t4[1] === "pre" || t4[1] === "script" || t4[1] === "style", text: t4[0] }; } - def(src) { - const cap = this.rules.block.def.exec(src); - if (cap) { - const tag2 = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, " "); - const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, "$1").replace(this.rules.inline.anyPunctuation, "$1") : ""; - const title2 = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : cap[3]; - return { - type: "def", - tag: tag2, - raw: cap[0], - href, - title: title2 - }; + def(e3) { + let t4 = this.rules.block.def.exec(e3); + if (t4) { + let n2 = t4[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, " "), r2 = t4[2] ? t4[2].replace(this.rules.other.hrefBrackets, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "", i2 = t4[3] ? t4[3].substring(1, t4[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : t4[3]; + return { type: "def", tag: n2, raw: t4[0], href: r2, title: i2 }; } } - table(src) { - const cap = this.rules.block.table.exec(src); - if (!cap) { - return; - } - if (!this.rules.other.tableDelimiter.test(cap[2])) { - return; - } - const headers = splitCells(cap[1]); - const aligns = cap[2].replace(this.rules.other.tableAlignChars, "").split("|"); - const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, "").split("\n") : []; - const item = { - type: "table", - raw: cap[0], - header: [], - align: [], - rows: [] - }; - if (headers.length !== aligns.length) { - return; - } - for (const align of aligns) { - if (this.rules.other.tableAlignRight.test(align)) { - item.align.push("right"); - } else if (this.rules.other.tableAlignCenter.test(align)) { - item.align.push("center"); - } else if (this.rules.other.tableAlignLeft.test(align)) { - item.align.push("left"); - } else { - item.align.push(null); - } - } - for (let i2 = 0; i2 < headers.length; i2++) { - item.header.push({ - text: headers[i2], - tokens: this.lexer.inline(headers[i2]), - header: true, - align: item.align[i2] - }); - } - for (const row of rows) { - item.rows.push(splitCells(row, item.header.length).map((cell, i2) => { - return { - text: cell, - tokens: this.lexer.inline(cell), - header: false, - align: item.align[i2] - }; - })); + table(e3) { + let t4 = this.rules.block.table.exec(e3); + if (!t4 || !this.rules.other.tableDelimiter.test(t4[2])) return; + let n2 = V(t4[1]), r2 = t4[2].replace(this.rules.other.tableAlignChars, "").split("|"), i2 = t4[3]?.trim() ? t4[3].replace(this.rules.other.tableRowBlankLine, "").split(` +`) : [], s2 = { type: "table", raw: t4[0], header: [], align: [], rows: [] }; + if (n2.length === r2.length) { + for (let o2 of r2) this.rules.other.tableAlignRight.test(o2) ? s2.align.push("right") : this.rules.other.tableAlignCenter.test(o2) ? s2.align.push("center") : this.rules.other.tableAlignLeft.test(o2) ? s2.align.push("left") : s2.align.push(null); + for (let o2 = 0; o2 < n2.length; o2++) s2.header.push({ text: n2[o2], tokens: this.lexer.inline(n2[o2]), header: true, align: s2.align[o2] }); + for (let o2 of i2) s2.rows.push(V(o2, s2.header.length).map((a2, u2) => ({ text: a2, tokens: this.lexer.inline(a2), header: false, align: s2.align[u2] }))); + return s2; } - return item; } - lheading(src) { - const cap = this.rules.block.lheading.exec(src); - if (cap) { - return { - type: "heading", - raw: cap[0], - depth: cap[2].charAt(0) === "=" ? 1 : 2, - text: cap[1], - tokens: this.lexer.inline(cap[1]) - }; - } + lheading(e3) { + let t4 = this.rules.block.lheading.exec(e3); + if (t4) return { type: "heading", raw: t4[0], depth: t4[2].charAt(0) === "=" ? 1 : 2, text: t4[1], tokens: this.lexer.inline(t4[1]) }; } - paragraph(src) { - const cap = this.rules.block.paragraph.exec(src); - if (cap) { - const text4 = cap[1].charAt(cap[1].length - 1) === "\n" ? cap[1].slice(0, -1) : cap[1]; - return { - type: "paragraph", - raw: cap[0], - text: text4, - tokens: this.lexer.inline(text4) - }; + paragraph(e3) { + let t4 = this.rules.block.paragraph.exec(e3); + if (t4) { + let n2 = t4[1].charAt(t4[1].length - 1) === ` +` ? t4[1].slice(0, -1) : t4[1]; + return { type: "paragraph", raw: t4[0], text: n2, tokens: this.lexer.inline(n2) }; } } - text(src) { - const cap = this.rules.block.text.exec(src); - if (cap) { - return { - type: "text", - raw: cap[0], - text: cap[0], - tokens: this.lexer.inline(cap[0]) - }; - } + text(e3) { + let t4 = this.rules.block.text.exec(e3); + if (t4) return { type: "text", raw: t4[0], text: t4[0], tokens: this.lexer.inline(t4[0]) }; } - escape(src) { - const cap = this.rules.inline.escape.exec(src); - if (cap) { - return { - type: "escape", - raw: cap[0], - text: cap[1] - }; - } + escape(e3) { + let t4 = this.rules.inline.escape.exec(e3); + if (t4) return { type: "escape", raw: t4[0], text: t4[1] }; } - tag(src) { - const cap = this.rules.inline.tag.exec(src); - if (cap) { - if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) { - this.lexer.state.inLink = true; - } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) { - this.lexer.state.inLink = false; - } - if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) { - this.lexer.state.inRawBlock = true; - } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) { - this.lexer.state.inRawBlock = false; - } - return { - type: "html", - raw: cap[0], - inLink: this.lexer.state.inLink, - inRawBlock: this.lexer.state.inRawBlock, - block: false, - text: cap[0] - }; - } + tag(e3) { + let t4 = this.rules.inline.tag.exec(e3); + if (t4) return !this.lexer.state.inLink && this.rules.other.startATag.test(t4[0]) ? this.lexer.state.inLink = true : this.lexer.state.inLink && this.rules.other.endATag.test(t4[0]) && (this.lexer.state.inLink = false), !this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(t4[0]) ? this.lexer.state.inRawBlock = true : this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(t4[0]) && (this.lexer.state.inRawBlock = false), { type: "html", raw: t4[0], inLink: this.lexer.state.inLink, inRawBlock: this.lexer.state.inRawBlock, block: false, text: t4[0] }; } - link(src) { - const cap = this.rules.inline.link.exec(src); - if (cap) { - const trimmedUrl = cap[2].trim(); - if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) { - if (!this.rules.other.endAngleBracket.test(trimmedUrl)) { - return; - } - const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), "\\"); - if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { - return; - } + link(e3) { + let t4 = this.rules.inline.link.exec(e3); + if (t4) { + let n2 = t4[2].trim(); + if (!this.options.pedantic && this.rules.other.startAngleBracket.test(n2)) { + if (!this.rules.other.endAngleBracket.test(n2)) return; + let s2 = z(n2.slice(0, -1), "\\"); + if ((n2.length - s2.length) % 2 === 0) return; } else { - const lastParenIndex = findClosingBracket(cap[2], "()"); - if (lastParenIndex > -1) { - const start3 = cap[0].indexOf("!") === 0 ? 5 : 4; - const linkLen = start3 + cap[1].length + lastParenIndex; - cap[2] = cap[2].substring(0, lastParenIndex); - cap[0] = cap[0].substring(0, linkLen).trim(); - cap[3] = ""; + let s2 = ge(t4[2], "()"); + if (s2 === -2) return; + if (s2 > -1) { + let a2 = (t4[0].indexOf("!") === 0 ? 5 : 4) + t4[1].length + s2; + t4[2] = t4[2].substring(0, s2), t4[0] = t4[0].substring(0, a2).trim(), t4[3] = ""; } } - let href = cap[2]; - let title2 = ""; + let r2 = t4[2], i2 = ""; if (this.options.pedantic) { - const link3 = this.rules.other.pedanticHrefTitle.exec(href); - if (link3) { - href = link3[1]; - title2 = link3[3]; - } - } else { - title2 = cap[3] ? cap[3].slice(1, -1) : ""; - } - href = href.trim(); - if (this.rules.other.startAngleBracket.test(href)) { - if (this.options.pedantic && !this.rules.other.endAngleBracket.test(trimmedUrl)) { - href = href.slice(1); - } else { - href = href.slice(1, -1); - } - } - return outputLink(cap, { - href: href ? href.replace(this.rules.inline.anyPunctuation, "$1") : href, - title: title2 ? title2.replace(this.rules.inline.anyPunctuation, "$1") : title2 - }, cap[0], this.lexer, this.rules); - } - } - reflink(src, links3) { - let cap; - if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) { - const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, " "); - const link3 = links3[linkString.toLowerCase()]; - if (!link3) { - const text4 = cap[0].charAt(0); - return { - type: "text", - raw: text4, - text: text4 - }; - } - return outputLink(cap, link3, cap[0], this.lexer, this.rules); - } - } - emStrong(src, maskedSrc, prevChar = "") { - let match2 = this.rules.inline.emStrongLDelim.exec(src); - if (!match2) - return; - if (match2[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) - return; - const nextChar = match2[1] || match2[2] || ""; - if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { - const lLength = [...match2[0]].length - 1; - let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; - const endReg = match2[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; - endReg.lastIndex = 0; - maskedSrc = maskedSrc.slice(-1 * src.length + lLength); - while ((match2 = endReg.exec(maskedSrc)) != null) { - rDelim = match2[1] || match2[2] || match2[3] || match2[4] || match2[5] || match2[6]; - if (!rDelim) + let s2 = this.rules.other.pedanticHrefTitle.exec(r2); + s2 && (r2 = s2[1], i2 = s2[3]); + } else i2 = t4[3] ? t4[3].slice(1, -1) : ""; + return r2 = r2.trim(), this.rules.other.startAngleBracket.test(r2) && (this.options.pedantic && !this.rules.other.endAngleBracket.test(n2) ? r2 = r2.slice(1) : r2 = r2.slice(1, -1)), fe(t4, { href: r2 && r2.replace(this.rules.inline.anyPunctuation, "$1"), title: i2 && i2.replace(this.rules.inline.anyPunctuation, "$1") }, t4[0], this.lexer, this.rules); + } + } + reflink(e3, t4) { + let n2; + if ((n2 = this.rules.inline.reflink.exec(e3)) || (n2 = this.rules.inline.nolink.exec(e3))) { + let r2 = (n2[2] || n2[1]).replace(this.rules.other.multipleSpaceGlobal, " "), i2 = t4[r2.toLowerCase()]; + if (!i2) { + let s2 = n2[0].charAt(0); + return { type: "text", raw: s2, text: s2 }; + } + return fe(n2, i2, n2[0], this.lexer, this.rules); + } + } + emStrong(e3, t4, n2 = "") { + let r2 = this.rules.inline.emStrongLDelim.exec(e3); + if (!r2 || r2[3] && n2.match(this.rules.other.unicodeAlphaNumeric)) return; + if (!(r2[1] || r2[2] || "") || !n2 || this.rules.inline.punctuation.exec(n2)) { + let s2 = [...r2[0]].length - 1, o2, a2, u2 = s2, p3 = 0, c3 = r2[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; + for (c3.lastIndex = 0, t4 = t4.slice(-1 * e3.length + s2); (r2 = c3.exec(t4)) != null; ) { + if (o2 = r2[1] || r2[2] || r2[3] || r2[4] || r2[5] || r2[6], !o2) continue; + if (a2 = [...o2].length, r2[3] || r2[4]) { + u2 += a2; continue; - rLength = [...rDelim].length; - if (match2[3] || match2[4]) { - delimTotal += rLength; + } else if ((r2[5] || r2[6]) && s2 % 3 && !((s2 + a2) % 3)) { + p3 += a2; continue; - } else if (match2[5] || match2[6]) { - if (lLength % 3 && !((lLength + rLength) % 3)) { - midDelimTotal += rLength; - continue; - } } - delimTotal -= rLength; - if (delimTotal > 0) - continue; - rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); - const lastCharLength = [...match2[0]][0].length; - const raw = src.slice(0, lLength + match2.index + lastCharLength + rLength); - if (Math.min(lLength, rLength) % 2) { - const text5 = raw.slice(1, -1); - return { - type: "em", - raw, - text: text5, - tokens: this.lexer.inlineTokens(text5) - }; + if (u2 -= a2, u2 > 0) continue; + a2 = Math.min(a2, a2 + u2 + p3); + let f2 = [...r2[0]][0].length, k2 = e3.slice(0, s2 + r2.index + f2 + a2); + if (Math.min(s2, a2) % 2) { + let g2 = k2.slice(1, -1); + return { type: "em", raw: k2, text: g2, tokens: this.lexer.inlineTokens(g2) }; } - const text4 = raw.slice(2, -2); - return { - type: "strong", - raw, - text: text4, - tokens: this.lexer.inlineTokens(text4) - }; + let x5 = k2.slice(2, -2); + return { type: "strong", raw: k2, text: x5, tokens: this.lexer.inlineTokens(x5) }; } } } - codespan(src) { - const cap = this.rules.inline.code.exec(src); - if (cap) { - let text4 = cap[2].replace(this.rules.other.newLineCharGlobal, " "); - const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text4); - const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text4) && this.rules.other.endingSpaceChar.test(text4); - if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { - text4 = text4.substring(1, text4.length - 1); - } - return { - type: "codespan", - raw: cap[0], - text: text4 - }; + codespan(e3) { + let t4 = this.rules.inline.code.exec(e3); + if (t4) { + let n2 = t4[2].replace(this.rules.other.newLineCharGlobal, " "), r2 = this.rules.other.nonSpaceChar.test(n2), i2 = this.rules.other.startingSpaceChar.test(n2) && this.rules.other.endingSpaceChar.test(n2); + return r2 && i2 && (n2 = n2.substring(1, n2.length - 1)), { type: "codespan", raw: t4[0], text: n2 }; } } - br(src) { - const cap = this.rules.inline.br.exec(src); - if (cap) { - return { - type: "br", - raw: cap[0] - }; - } + br(e3) { + let t4 = this.rules.inline.br.exec(e3); + if (t4) return { type: "br", raw: t4[0] }; } - del(src) { - const cap = this.rules.inline.del.exec(src); - if (cap) { - return { - type: "del", - raw: cap[0], - text: cap[2], - tokens: this.lexer.inlineTokens(cap[2]) - }; - } + del(e3) { + let t4 = this.rules.inline.del.exec(e3); + if (t4) return { type: "del", raw: t4[0], text: t4[2], tokens: this.lexer.inlineTokens(t4[2]) }; } - autolink(src) { - const cap = this.rules.inline.autolink.exec(src); - if (cap) { - let text4, href; - if (cap[2] === "@") { - text4 = cap[1]; - href = "mailto:" + text4; - } else { - text4 = cap[1]; - href = text4; - } - return { - type: "link", - raw: cap[0], - text: text4, - href, - tokens: [ - { - type: "text", - raw: text4, - text: text4 - } - ] - }; + autolink(e3) { + let t4 = this.rules.inline.autolink.exec(e3); + if (t4) { + let n2, r2; + return t4[2] === "@" ? (n2 = t4[1], r2 = "mailto:" + n2) : (n2 = t4[1], r2 = n2), { type: "link", raw: t4[0], text: n2, href: r2, tokens: [{ type: "text", raw: n2, text: n2 }] }; } } - url(src) { - let cap; - if (cap = this.rules.inline.url.exec(src)) { - let text4, href; - if (cap[2] === "@") { - text4 = cap[0]; - href = "mailto:" + text4; - } else { - let prevCapZero; - do { - prevCapZero = cap[0]; - cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ""; - } while (prevCapZero !== cap[0]); - text4 = cap[0]; - if (cap[1] === "www.") { - href = "http://" + cap[0]; - } else { - href = cap[0]; - } + url(e3) { + let t4; + if (t4 = this.rules.inline.url.exec(e3)) { + let n2, r2; + if (t4[2] === "@") n2 = t4[0], r2 = "mailto:" + n2; + else { + let i2; + do + i2 = t4[0], t4[0] = this.rules.inline._backpedal.exec(t4[0])?.[0] ?? ""; + while (i2 !== t4[0]); + n2 = t4[0], t4[1] === "www." ? r2 = "http://" + t4[0] : r2 = t4[0]; } - return { - type: "link", - raw: cap[0], - text: text4, - href, - tokens: [ - { - type: "text", - raw: text4, - text: text4 - } - ] - }; + return { type: "link", raw: t4[0], text: n2, href: r2, tokens: [{ type: "text", raw: n2, text: n2 }] }; } } - inlineText(src) { - const cap = this.rules.inline.text.exec(src); - if (cap) { - const escaped = this.lexer.state.inRawBlock; - return { - type: "text", - raw: cap[0], - text: cap[0], - escaped - }; + inlineText(e3) { + let t4 = this.rules.inline.text.exec(e3); + if (t4) { + let n2 = this.lexer.state.inRawBlock; + return { type: "text", raw: t4[0], text: t4[0], escaped: n2 }; } } }; - _Lexer = class __Lexer { + b = class l { static { - __name(this, "_Lexer"); + __name(this, "l"); } tokens; options; state; tokenizer; inlineQueue; - constructor(options3) { - this.tokens = []; - this.tokens.links = /* @__PURE__ */ Object.create(null); - this.options = options3 || _defaults; - this.options.tokenizer = this.options.tokenizer || new _Tokenizer(); - this.tokenizer = this.options.tokenizer; - this.tokenizer.options = this.options; - this.tokenizer.lexer = this; - this.inlineQueue = []; - this.state = { - inLink: false, - inRawBlock: false, - top: true - }; - const rules = { - other, - block: block.normal, - inline: inline.normal - }; - if (this.options.pedantic) { - rules.block = block.pedantic; - rules.inline = inline.pedantic; - } else if (this.options.gfm) { - rules.block = block.gfm; - if (this.options.breaks) { - rules.inline = inline.breaks; - } else { - rules.inline = inline.gfm; - } - } - this.tokenizer.rules = rules; + constructor(e3) { + this.tokens = [], this.tokens.links = /* @__PURE__ */ Object.create(null), this.options = e3 || O, this.options.tokenizer = this.options.tokenizer || new y2(), this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = { inLink: false, inRawBlock: false, top: true }; + let t4 = { other: m, block: I.normal, inline: M.normal }; + this.options.pedantic ? (t4.block = I.pedantic, t4.inline = M.pedantic) : this.options.gfm && (t4.block = I.gfm, this.options.breaks ? t4.inline = M.breaks : t4.inline = M.gfm), this.tokenizer.rules = t4; } - /** - * Expose Rules - */ static get rules() { - return { - block, - inline - }; - } - /** - * Static Lex Method - */ - static lex(src, options3) { - const lexer2 = new __Lexer(options3); - return lexer2.lex(src); - } - /** - * Static Lex Inline Method - */ - static lexInline(src, options3) { - const lexer2 = new __Lexer(options3); - return lexer2.inlineTokens(src); - } - /** - * Preprocessing - */ - lex(src) { - src = src.replace(other.carriageReturn, "\n"); - this.blockTokens(src, this.tokens); - for (let i2 = 0; i2 < this.inlineQueue.length; i2++) { - const next3 = this.inlineQueue[i2]; - this.inlineTokens(next3.src, next3.tokens); - } - this.inlineQueue = []; - return this.tokens; - } - blockTokens(src, tokens2 = [], lastParagraphClipped = false) { - if (this.options.pedantic) { - src = src.replace(other.tabCharGlobal, " ").replace(other.spaceLine, ""); - } - while (src) { - let token2; - if (this.options.extensions?.block?.some((extTokenizer) => { - if (token2 = extTokenizer.call({ lexer: this }, src, tokens2)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); - return true; - } - return false; - })) { - continue; - } - if (token2 = this.tokenizer.space(src)) { - src = src.substring(token2.raw.length); - const lastToken = tokens2.at(-1); - if (token2.raw.length === 1 && lastToken !== void 0) { - lastToken.raw += "\n"; - } else { - tokens2.push(token2); - } + return { block: I, inline: M }; + } + static lex(e3, t4) { + return new l(t4).lex(e3); + } + static lexInline(e3, t4) { + return new l(t4).inlineTokens(e3); + } + lex(e3) { + e3 = e3.replace(m.carriageReturn, ` +`), this.blockTokens(e3, this.tokens); + for (let t4 = 0; t4 < this.inlineQueue.length; t4++) { + let n2 = this.inlineQueue[t4]; + this.inlineTokens(n2.src, n2.tokens); + } + return this.inlineQueue = [], this.tokens; + } + blockTokens(e3, t4 = [], n2 = false) { + for (this.options.pedantic && (e3 = e3.replace(m.tabCharGlobal, " ").replace(m.spaceLine, "")); e3; ) { + let r2; + if (this.options.extensions?.block?.some((s2) => (r2 = s2.call({ lexer: this }, e3, t4)) ? (e3 = e3.substring(r2.raw.length), t4.push(r2), true) : false)) continue; + if (r2 = this.tokenizer.space(e3)) { + e3 = e3.substring(r2.raw.length); + let s2 = t4.at(-1); + r2.raw.length === 1 && s2 !== void 0 ? s2.raw += ` +` : t4.push(r2); continue; } - if (token2 = this.tokenizer.code(src)) { - src = src.substring(token2.raw.length); - const lastToken = tokens2.at(-1); - if (lastToken?.type === "paragraph" || lastToken?.type === "text") { - lastToken.raw += "\n" + token2.raw; - lastToken.text += "\n" + token2.text; - this.inlineQueue.at(-1).src = lastToken.text; - } else { - tokens2.push(token2); - } + if (r2 = this.tokenizer.code(e3)) { + e3 = e3.substring(r2.raw.length); + let s2 = t4.at(-1); + s2?.type === "paragraph" || s2?.type === "text" ? (s2.raw += (s2.raw.endsWith(` +`) ? "" : ` +`) + r2.raw, s2.text += ` +` + r2.text, this.inlineQueue.at(-1).src = s2.text) : t4.push(r2); continue; } - if (token2 = this.tokenizer.fences(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (r2 = this.tokenizer.fences(e3)) { + e3 = e3.substring(r2.raw.length), t4.push(r2); continue; } - if (token2 = this.tokenizer.heading(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (r2 = this.tokenizer.heading(e3)) { + e3 = e3.substring(r2.raw.length), t4.push(r2); continue; } - if (token2 = this.tokenizer.hr(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (r2 = this.tokenizer.hr(e3)) { + e3 = e3.substring(r2.raw.length), t4.push(r2); continue; } - if (token2 = this.tokenizer.blockquote(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (r2 = this.tokenizer.blockquote(e3)) { + e3 = e3.substring(r2.raw.length), t4.push(r2); continue; } - if (token2 = this.tokenizer.list(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (r2 = this.tokenizer.list(e3)) { + e3 = e3.substring(r2.raw.length), t4.push(r2); continue; } - if (token2 = this.tokenizer.html(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (r2 = this.tokenizer.html(e3)) { + e3 = e3.substring(r2.raw.length), t4.push(r2); continue; } - if (token2 = this.tokenizer.def(src)) { - src = src.substring(token2.raw.length); - const lastToken = tokens2.at(-1); - if (lastToken?.type === "paragraph" || lastToken?.type === "text") { - lastToken.raw += "\n" + token2.raw; - lastToken.text += "\n" + token2.raw; - this.inlineQueue.at(-1).src = lastToken.text; - } else if (!this.tokens.links[token2.tag]) { - this.tokens.links[token2.tag] = { - href: token2.href, - title: token2.title - }; - } + if (r2 = this.tokenizer.def(e3)) { + e3 = e3.substring(r2.raw.length); + let s2 = t4.at(-1); + s2?.type === "paragraph" || s2?.type === "text" ? (s2.raw += (s2.raw.endsWith(` +`) ? "" : ` +`) + r2.raw, s2.text += ` +` + r2.raw, this.inlineQueue.at(-1).src = s2.text) : this.tokens.links[r2.tag] || (this.tokens.links[r2.tag] = { href: r2.href, title: r2.title }, t4.push(r2)); continue; } - if (token2 = this.tokenizer.table(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (r2 = this.tokenizer.table(e3)) { + e3 = e3.substring(r2.raw.length), t4.push(r2); continue; } - if (token2 = this.tokenizer.lheading(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (r2 = this.tokenizer.lheading(e3)) { + e3 = e3.substring(r2.raw.length), t4.push(r2); continue; } - let cutSrc = src; + let i2 = e3; if (this.options.extensions?.startBlock) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startBlock.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === "number" && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (this.state.top && (token2 = this.tokenizer.paragraph(cutSrc))) { - const lastToken = tokens2.at(-1); - if (lastParagraphClipped && lastToken?.type === "paragraph") { - lastToken.raw += "\n" + token2.raw; - lastToken.text += "\n" + token2.text; - this.inlineQueue.pop(); - this.inlineQueue.at(-1).src = lastToken.text; - } else { - tokens2.push(token2); - } - lastParagraphClipped = cutSrc.length !== src.length; - src = src.substring(token2.raw.length); + let s2 = 1 / 0, o2 = e3.slice(1), a2; + this.options.extensions.startBlock.forEach((u2) => { + a2 = u2.call({ lexer: this }, o2), typeof a2 == "number" && a2 >= 0 && (s2 = Math.min(s2, a2)); + }), s2 < 1 / 0 && s2 >= 0 && (i2 = e3.substring(0, s2 + 1)); + } + if (this.state.top && (r2 = this.tokenizer.paragraph(i2))) { + let s2 = t4.at(-1); + n2 && s2?.type === "paragraph" ? (s2.raw += (s2.raw.endsWith(` +`) ? "" : ` +`) + r2.raw, s2.text += ` +` + r2.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = s2.text) : t4.push(r2), n2 = i2.length !== e3.length, e3 = e3.substring(r2.raw.length); continue; } - if (token2 = this.tokenizer.text(src)) { - src = src.substring(token2.raw.length); - const lastToken = tokens2.at(-1); - if (lastToken?.type === "text") { - lastToken.raw += "\n" + token2.raw; - lastToken.text += "\n" + token2.text; - this.inlineQueue.pop(); - this.inlineQueue.at(-1).src = lastToken.text; - } else { - tokens2.push(token2); - } + if (r2 = this.tokenizer.text(e3)) { + e3 = e3.substring(r2.raw.length); + let s2 = t4.at(-1); + s2?.type === "text" ? (s2.raw += (s2.raw.endsWith(` +`) ? "" : ` +`) + r2.raw, s2.text += ` +` + r2.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = s2.text) : t4.push(r2); continue; } - if (src) { - const errMsg = "Infinite loop on byte: " + src.charCodeAt(0); + if (e3) { + let s2 = "Infinite loop on byte: " + e3.charCodeAt(0); if (this.options.silent) { - console.error(errMsg); + console.error(s2); break; - } else { - throw new Error(errMsg); - } + } else throw new Error(s2); } } - this.state.top = true; - return tokens2; + return this.state.top = true, t4; } - inline(src, tokens2 = []) { - this.inlineQueue.push({ src, tokens: tokens2 }); - return tokens2; + inline(e3, t4 = []) { + return this.inlineQueue.push({ src: e3, tokens: t4 }), t4; } - /** - * Lexing/Compiling - */ - inlineTokens(src, tokens2 = []) { - let maskedSrc = src; - let match2 = null; + inlineTokens(e3, t4 = []) { + let n2 = e3, r2 = null; if (this.tokens.links) { - const links3 = Object.keys(this.tokens.links); - if (links3.length > 0) { - while ((match2 = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { - if (links3.includes(match2[0].slice(match2[0].lastIndexOf("[") + 1, -1))) { - maskedSrc = maskedSrc.slice(0, match2.index) + "[" + "a".repeat(match2[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); - } - } - } - } - while ((match2 = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match2.index) + "[" + "a".repeat(match2[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); - } - while ((match2 = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match2.index) + "++" + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); - } - let keepPrevChar = false; - let prevChar = ""; - while (src) { - if (!keepPrevChar) { - prevChar = ""; - } - keepPrevChar = false; - let token2; - if (this.options.extensions?.inline?.some((extTokenizer) => { - if (token2 = extTokenizer.call({ lexer: this }, src, tokens2)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); - return true; - } - return false; - })) { + let o2 = Object.keys(this.tokens.links); + if (o2.length > 0) for (; (r2 = this.tokenizer.rules.inline.reflinkSearch.exec(n2)) != null; ) o2.includes(r2[0].slice(r2[0].lastIndexOf("[") + 1, -1)) && (n2 = n2.slice(0, r2.index) + "[" + "a".repeat(r2[0].length - 2) + "]" + n2.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex)); + } + for (; (r2 = this.tokenizer.rules.inline.anyPunctuation.exec(n2)) != null; ) n2 = n2.slice(0, r2.index) + "++" + n2.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); + for (; (r2 = this.tokenizer.rules.inline.blockSkip.exec(n2)) != null; ) n2 = n2.slice(0, r2.index) + "[" + "a".repeat(r2[0].length - 2) + "]" + n2.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); + n2 = this.options.hooks?.emStrongMask?.call({ lexer: this }, n2) ?? n2; + let i2 = false, s2 = ""; + for (; e3; ) { + i2 || (s2 = ""), i2 = false; + let o2; + if (this.options.extensions?.inline?.some((u2) => (o2 = u2.call({ lexer: this }, e3, t4)) ? (e3 = e3.substring(o2.raw.length), t4.push(o2), true) : false)) continue; + if (o2 = this.tokenizer.escape(e3)) { + e3 = e3.substring(o2.raw.length), t4.push(o2); continue; } - if (token2 = this.tokenizer.escape(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (o2 = this.tokenizer.tag(e3)) { + e3 = e3.substring(o2.raw.length), t4.push(o2); continue; } - if (token2 = this.tokenizer.tag(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (o2 = this.tokenizer.link(e3)) { + e3 = e3.substring(o2.raw.length), t4.push(o2); continue; } - if (token2 = this.tokenizer.link(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (o2 = this.tokenizer.reflink(e3, this.tokens.links)) { + e3 = e3.substring(o2.raw.length); + let u2 = t4.at(-1); + o2.type === "text" && u2?.type === "text" ? (u2.raw += o2.raw, u2.text += o2.text) : t4.push(o2); continue; } - if (token2 = this.tokenizer.reflink(src, this.tokens.links)) { - src = src.substring(token2.raw.length); - const lastToken = tokens2.at(-1); - if (token2.type === "text" && lastToken?.type === "text") { - lastToken.raw += token2.raw; - lastToken.text += token2.text; - } else { - tokens2.push(token2); - } - continue; - } - if (token2 = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (o2 = this.tokenizer.emStrong(e3, n2, s2)) { + e3 = e3.substring(o2.raw.length), t4.push(o2); continue; } - if (token2 = this.tokenizer.codespan(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (o2 = this.tokenizer.codespan(e3)) { + e3 = e3.substring(o2.raw.length), t4.push(o2); continue; } - if (token2 = this.tokenizer.br(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (o2 = this.tokenizer.br(e3)) { + e3 = e3.substring(o2.raw.length), t4.push(o2); continue; } - if (token2 = this.tokenizer.del(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (o2 = this.tokenizer.del(e3)) { + e3 = e3.substring(o2.raw.length), t4.push(o2); continue; } - if (token2 = this.tokenizer.autolink(src)) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (o2 = this.tokenizer.autolink(e3)) { + e3 = e3.substring(o2.raw.length), t4.push(o2); continue; } - if (!this.state.inLink && (token2 = this.tokenizer.url(src))) { - src = src.substring(token2.raw.length); - tokens2.push(token2); + if (!this.state.inLink && (o2 = this.tokenizer.url(e3))) { + e3 = e3.substring(o2.raw.length), t4.push(o2); continue; } - let cutSrc = src; + let a2 = e3; if (this.options.extensions?.startInline) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startInline.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === "number" && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (token2 = this.tokenizer.inlineText(cutSrc)) { - src = src.substring(token2.raw.length); - if (token2.raw.slice(-1) !== "_") { - prevChar = token2.raw.slice(-1); - } - keepPrevChar = true; - const lastToken = tokens2.at(-1); - if (lastToken?.type === "text") { - lastToken.raw += token2.raw; - lastToken.text += token2.text; - } else { - tokens2.push(token2); - } + let u2 = 1 / 0, p3 = e3.slice(1), c3; + this.options.extensions.startInline.forEach((f2) => { + c3 = f2.call({ lexer: this }, p3), typeof c3 == "number" && c3 >= 0 && (u2 = Math.min(u2, c3)); + }), u2 < 1 / 0 && u2 >= 0 && (a2 = e3.substring(0, u2 + 1)); + } + if (o2 = this.tokenizer.inlineText(a2)) { + e3 = e3.substring(o2.raw.length), o2.raw.slice(-1) !== "_" && (s2 = o2.raw.slice(-1)), i2 = true; + let u2 = t4.at(-1); + u2?.type === "text" ? (u2.raw += o2.raw, u2.text += o2.text) : t4.push(o2); continue; } - if (src) { - const errMsg = "Infinite loop on byte: " + src.charCodeAt(0); + if (e3) { + let u2 = "Infinite loop on byte: " + e3.charCodeAt(0); if (this.options.silent) { - console.error(errMsg); + console.error(u2); break; - } else { - throw new Error(errMsg); - } + } else throw new Error(u2); } } - return tokens2; + return t4; } }; - _Renderer = class { + P = class { static { - __name(this, "_Renderer"); + __name(this, "P"); } options; parser; - // set by the parser - constructor(options3) { - this.options = options3 || _defaults; + constructor(e3) { + this.options = e3 || O; } - space(token2) { + space(e3) { return ""; } - code({ text: text4, lang, escaped }) { - const langString = (lang || "").match(other.notSpaceStart)?.[0]; - const code = text4.replace(other.endingNewline, "") + "\n"; - if (!langString) { - return "
" + (escaped ? code : escape3(code, true)) + "
\n"; - } - return '
' + (escaped ? code : escape3(code, true)) + "
\n"; + code({ text: e3, lang: t4, escaped: n2 }) { + let r2 = (t4 || "").match(m.notSpaceStart)?.[0], i2 = e3.replace(m.endingNewline, "") + ` +`; + return r2 ? '
' + (n2 ? i2 : w(i2, true)) + `
+` : "
" + (n2 ? i2 : w(i2, true)) + `
+`; } - blockquote({ tokens: tokens2 }) { - const body = this.parser.parse(tokens2); + blockquote({ tokens: e3 }) { return `
-${body}
+${this.parser.parse(e3)} `; } - html({ text: text4 }) { - return text4; + html({ text: e3 }) { + return e3; } - heading({ tokens: tokens2, depth }) { - return `${this.parser.parseInline(tokens2)} + def(e3) { + return ""; + } + heading({ tokens: e3, depth: t4 }) { + return `${this.parser.parseInline(e3)} `; } - hr(token2) { - return "
\n"; - } - list(token2) { - const ordered = token2.ordered; - const start3 = token2.start; - let body = ""; - for (let j2 = 0; j2 < token2.items.length; j2++) { - const item = token2.items[j2]; - body += this.listitem(item); - } - const type3 = ordered ? "ol" : "ul"; - const startAttr = ordered && start3 !== 1 ? ' start="' + start3 + '"' : ""; - return "<" + type3 + startAttr + ">\n" + body + "\n"; - } - listitem(item) { - let itemBody = ""; - if (item.task) { - const checkbox = this.checkbox({ checked: !!item.checked }); - if (item.loose) { - if (item.tokens[0]?.type === "paragraph") { - item.tokens[0].text = checkbox + " " + item.tokens[0].text; - if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === "text") { - item.tokens[0].tokens[0].text = checkbox + " " + escape3(item.tokens[0].tokens[0].text); - item.tokens[0].tokens[0].escaped = true; - } - } else { - item.tokens.unshift({ - type: "text", - raw: checkbox + " ", - text: checkbox + " ", - escaped: true - }); - } - } else { - itemBody += checkbox + " "; - } + hr(e3) { + return `
+`; + } + list(e3) { + let t4 = e3.ordered, n2 = e3.start, r2 = ""; + for (let o2 = 0; o2 < e3.items.length; o2++) { + let a2 = e3.items[o2]; + r2 += this.listitem(a2); } - itemBody += this.parser.parse(item.tokens, !!item.loose); - return `
  • ${itemBody}
  • + let i2 = t4 ? "ol" : "ul", s2 = t4 && n2 !== 1 ? ' start="' + n2 + '"' : ""; + return "<" + i2 + s2 + `> +` + r2 + " `; } - checkbox({ checked }) { - return "'; + listitem(e3) { + let t4 = ""; + if (e3.task) { + let n2 = this.checkbox({ checked: !!e3.checked }); + e3.loose ? e3.tokens[0]?.type === "paragraph" ? (e3.tokens[0].text = n2 + " " + e3.tokens[0].text, e3.tokens[0].tokens && e3.tokens[0].tokens.length > 0 && e3.tokens[0].tokens[0].type === "text" && (e3.tokens[0].tokens[0].text = n2 + " " + w(e3.tokens[0].tokens[0].text), e3.tokens[0].tokens[0].escaped = true)) : e3.tokens.unshift({ type: "text", raw: n2 + " ", text: n2 + " ", escaped: true }) : t4 += n2 + " "; + } + return t4 += this.parser.parse(e3.tokens, !!e3.loose), `
  • ${t4}
  • +`; } - paragraph({ tokens: tokens2 }) { - return `

    ${this.parser.parseInline(tokens2)}

    + checkbox({ checked: e3 }) { + return "'; + } + paragraph({ tokens: e3 }) { + return `

    ${this.parser.parseInline(e3)}

    `; } - table(token2) { - let header = ""; - let cell = ""; - for (let j2 = 0; j2 < token2.header.length; j2++) { - cell += this.tablecell(token2.header[j2]); - } - header += this.tablerow({ text: cell }); - let body = ""; - for (let j2 = 0; j2 < token2.rows.length; j2++) { - const row = token2.rows[j2]; - cell = ""; - for (let k2 = 0; k2 < row.length; k2++) { - cell += this.tablecell(row[k2]); - } - body += this.tablerow({ text: cell }); - } - if (body) - body = `${body}`; - return "\n\n" + header + "\n" + body + "
    \n"; + table(e3) { + let t4 = "", n2 = ""; + for (let i2 = 0; i2 < e3.header.length; i2++) n2 += this.tablecell(e3.header[i2]); + t4 += this.tablerow({ text: n2 }); + let r2 = ""; + for (let i2 = 0; i2 < e3.rows.length; i2++) { + let s2 = e3.rows[i2]; + n2 = ""; + for (let o2 = 0; o2 < s2.length; o2++) n2 += this.tablecell(s2[o2]); + r2 += this.tablerow({ text: n2 }); + } + return r2 && (r2 = `${r2}`), ` + +` + t4 + ` +` + r2 + `
    +`; } - tablerow({ text: text4 }) { + tablerow({ text: e3 }) { return ` -${text4} +${e3} `; } - tablecell(token2) { - const content = this.parser.parseInline(token2.tokens); - const type3 = token2.header ? "th" : "td"; - const tag2 = token2.align ? `<${type3} align="${token2.align}">` : `<${type3}>`; - return tag2 + content + ` + tablecell(e3) { + let t4 = this.parser.parseInline(e3.tokens), n2 = e3.header ? "th" : "td"; + return (e3.align ? `<${n2} align="${e3.align}">` : `<${n2}>`) + t4 + ` `; } - /** - * span level renderer - */ - strong({ tokens: tokens2 }) { - return `${this.parser.parseInline(tokens2)}`; + strong({ tokens: e3 }) { + return `${this.parser.parseInline(e3)}`; } - em({ tokens: tokens2 }) { - return `${this.parser.parseInline(tokens2)}`; + em({ tokens: e3 }) { + return `${this.parser.parseInline(e3)}`; } - codespan({ text: text4 }) { - return `${escape3(text4, true)}`; + codespan({ text: e3 }) { + return `${w(e3, true)}`; } - br(token2) { + br(e3) { return "
    "; } - del({ tokens: tokens2 }) { - return `${this.parser.parseInline(tokens2)}`; + del({ tokens: e3 }) { + return `${this.parser.parseInline(e3)}`; } - link({ href, title: title2, tokens: tokens2 }) { - const text4 = this.parser.parseInline(tokens2); - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text4; - } - href = cleanHref; - let out = '
    "; - return out; + link({ href: e3, title: t4, tokens: n2 }) { + let r2 = this.parser.parseInline(n2), i2 = J(e3); + if (i2 === null) return r2; + e3 = i2; + let s2 = '", s2; } - image({ href, title: title2, text: text4 }) { - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return escape3(text4); - } - href = cleanHref; - let out = `${text4} { - const tokens3 = genericToken[childTokens].flat(Infinity); - values2 = values2.concat(this.walkTokens(tokens3, callback)); - }); - } else if (genericToken.tokens) { - values2 = values2.concat(this.walkTokens(genericToken.tokens, callback)); - } - } + Parser = R; + Renderer = P; + TextRenderer = $; + Lexer = b; + Tokenizer = y2; + Hooks = S2; + constructor(...e3) { + this.use(...e3); + } + walkTokens(e3, t4) { + let n2 = []; + for (let r2 of e3) switch (n2 = n2.concat(t4.call(this, r2)), r2.type) { + case "table": { + let i2 = r2; + for (let s2 of i2.header) n2 = n2.concat(this.walkTokens(s2.tokens, t4)); + for (let s2 of i2.rows) for (let o2 of s2) n2 = n2.concat(this.walkTokens(o2.tokens, t4)); + break; + } + case "list": { + let i2 = r2; + n2 = n2.concat(this.walkTokens(i2.items, t4)); + break; + } + default: { + let i2 = r2; + this.defaults.extensions?.childTokens?.[i2.type] ? this.defaults.extensions.childTokens[i2.type].forEach((s2) => { + let o2 = i2[s2].flat(1 / 0); + n2 = n2.concat(this.walkTokens(o2, t4)); + }) : i2.tokens && (n2 = n2.concat(this.walkTokens(i2.tokens, t4))); } } - return values2; + return n2; } - use(...args) { - const extensions2 = this.defaults.extensions || { renderers: {}, childTokens: {} }; - args.forEach((pack) => { - const opts = { ...pack }; - opts.async = this.defaults.async || opts.async || false; - if (pack.extensions) { - pack.extensions.forEach((ext) => { - if (!ext.name) { - throw new Error("extension name required"); - } - if ("renderer" in ext) { - const prevRenderer = extensions2.renderers[ext.name]; - if (prevRenderer) { - extensions2.renderers[ext.name] = function(...args2) { - let ret = ext.renderer.apply(this, args2); - if (ret === false) { - ret = prevRenderer.apply(this, args2); - } - return ret; - }; - } else { - extensions2.renderers[ext.name] = ext.renderer; - } - } - if ("tokenizer" in ext) { - if (!ext.level || ext.level !== "block" && ext.level !== "inline") { - throw new Error("extension level must be 'block' or 'inline'"); - } - const extLevel = extensions2[ext.level]; - if (extLevel) { - extLevel.unshift(ext.tokenizer); - } else { - extensions2[ext.level] = [ext.tokenizer]; - } - if (ext.start) { - if (ext.level === "block") { - if (extensions2.startBlock) { - extensions2.startBlock.push(ext.start); - } else { - extensions2.startBlock = [ext.start]; - } - } else if (ext.level === "inline") { - if (extensions2.startInline) { - extensions2.startInline.push(ext.start); - } else { - extensions2.startInline = [ext.start]; - } - } - } - } - if ("childTokens" in ext && ext.childTokens) { - extensions2.childTokens[ext.name] = ext.childTokens; - } - }); - opts.extensions = extensions2; - } - if (pack.renderer) { - const renderer9 = this.defaults.renderer || new _Renderer(this.defaults); - for (const prop in pack.renderer) { - if (!(prop in renderer9)) { - throw new Error(`renderer '${prop}' does not exist`); - } - if (["options", "parser"].includes(prop)) { - continue; - } - const rendererProp = prop; - const rendererFunc = pack.renderer[rendererProp]; - const prevRenderer = renderer9[rendererProp]; - renderer9[rendererProp] = (...args2) => { - let ret = rendererFunc.apply(renderer9, args2); - if (ret === false) { - ret = prevRenderer.apply(renderer9, args2); - } - return ret || ""; + use(...e3) { + let t4 = this.defaults.extensions || { renderers: {}, childTokens: {} }; + return e3.forEach((n2) => { + let r2 = { ...n2 }; + if (r2.async = this.defaults.async || r2.async || false, n2.extensions && (n2.extensions.forEach((i2) => { + if (!i2.name) throw new Error("extension name required"); + if ("renderer" in i2) { + let s2 = t4.renderers[i2.name]; + s2 ? t4.renderers[i2.name] = function(...o2) { + let a2 = i2.renderer.apply(this, o2); + return a2 === false && (a2 = s2.apply(this, o2)), a2; + } : t4.renderers[i2.name] = i2.renderer; + } + if ("tokenizer" in i2) { + if (!i2.level || i2.level !== "block" && i2.level !== "inline") throw new Error("extension level must be 'block' or 'inline'"); + let s2 = t4[i2.level]; + s2 ? s2.unshift(i2.tokenizer) : t4[i2.level] = [i2.tokenizer], i2.start && (i2.level === "block" ? t4.startBlock ? t4.startBlock.push(i2.start) : t4.startBlock = [i2.start] : i2.level === "inline" && (t4.startInline ? t4.startInline.push(i2.start) : t4.startInline = [i2.start])); + } + "childTokens" in i2 && i2.childTokens && (t4.childTokens[i2.name] = i2.childTokens); + }), r2.extensions = t4), n2.renderer) { + let i2 = this.defaults.renderer || new P(this.defaults); + for (let s2 in n2.renderer) { + if (!(s2 in i2)) throw new Error(`renderer '${s2}' does not exist`); + if (["options", "parser"].includes(s2)) continue; + let o2 = s2, a2 = n2.renderer[o2], u2 = i2[o2]; + i2[o2] = (...p3) => { + let c3 = a2.apply(i2, p3); + return c3 === false && (c3 = u2.apply(i2, p3)), c3 || ""; }; } - opts.renderer = renderer9; - } - if (pack.tokenizer) { - const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); - for (const prop in pack.tokenizer) { - if (!(prop in tokenizer)) { - throw new Error(`tokenizer '${prop}' does not exist`); - } - if (["options", "rules", "lexer"].includes(prop)) { - continue; - } - const tokenizerProp = prop; - const tokenizerFunc = pack.tokenizer[tokenizerProp]; - const prevTokenizer = tokenizer[tokenizerProp]; - tokenizer[tokenizerProp] = (...args2) => { - let ret = tokenizerFunc.apply(tokenizer, args2); - if (ret === false) { - ret = prevTokenizer.apply(tokenizer, args2); - } - return ret; + r2.renderer = i2; + } + if (n2.tokenizer) { + let i2 = this.defaults.tokenizer || new y2(this.defaults); + for (let s2 in n2.tokenizer) { + if (!(s2 in i2)) throw new Error(`tokenizer '${s2}' does not exist`); + if (["options", "rules", "lexer"].includes(s2)) continue; + let o2 = s2, a2 = n2.tokenizer[o2], u2 = i2[o2]; + i2[o2] = (...p3) => { + let c3 = a2.apply(i2, p3); + return c3 === false && (c3 = u2.apply(i2, p3)), c3; }; } - opts.tokenizer = tokenizer; - } - if (pack.hooks) { - const hooks = this.defaults.hooks || new _Hooks(); - for (const prop in pack.hooks) { - if (!(prop in hooks)) { - throw new Error(`hook '${prop}' does not exist`); - } - if (["options", "block"].includes(prop)) { - continue; - } - const hooksProp = prop; - const hooksFunc = pack.hooks[hooksProp]; - const prevHook = hooks[hooksProp]; - if (_Hooks.passThroughHooks.has(prop)) { - hooks[hooksProp] = (arg) => { - if (this.defaults.async) { - return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => { - return prevHook.call(hooks, ret2); - }); - } - const ret = hooksFunc.call(hooks, arg); - return prevHook.call(hooks, ret); - }; - } else { - hooks[hooksProp] = (...args2) => { - let ret = hooksFunc.apply(hooks, args2); - if (ret === false) { - ret = prevHook.apply(hooks, args2); - } - return ret; - }; - } + r2.tokenizer = i2; + } + if (n2.hooks) { + let i2 = this.defaults.hooks || new S2(); + for (let s2 in n2.hooks) { + if (!(s2 in i2)) throw new Error(`hook '${s2}' does not exist`); + if (["options", "block"].includes(s2)) continue; + let o2 = s2, a2 = n2.hooks[o2], u2 = i2[o2]; + S2.passThroughHooks.has(s2) ? i2[o2] = (p3) => { + if (this.defaults.async && S2.passThroughHooksRespectAsync.has(s2)) return Promise.resolve(a2.call(i2, p3)).then((f2) => u2.call(i2, f2)); + let c3 = a2.call(i2, p3); + return u2.call(i2, c3); + } : i2[o2] = (...p3) => { + let c3 = a2.apply(i2, p3); + return c3 === false && (c3 = u2.apply(i2, p3)), c3; + }; } - opts.hooks = hooks; + r2.hooks = i2; } - if (pack.walkTokens) { - const walkTokens2 = this.defaults.walkTokens; - const packWalktokens = pack.walkTokens; - opts.walkTokens = function(token2) { - let values2 = []; - values2.push(packWalktokens.call(this, token2)); - if (walkTokens2) { - values2 = values2.concat(walkTokens2.call(this, token2)); - } - return values2; + if (n2.walkTokens) { + let i2 = this.defaults.walkTokens, s2 = n2.walkTokens; + r2.walkTokens = function(o2) { + let a2 = []; + return a2.push(s2.call(this, o2)), i2 && (a2 = a2.concat(i2.call(this, o2))), a2; }; } - this.defaults = { ...this.defaults, ...opts }; - }); - return this; + this.defaults = { ...this.defaults, ...r2 }; + }), this; } - setOptions(opt) { - this.defaults = { ...this.defaults, ...opt }; - return this; + setOptions(e3) { + return this.defaults = { ...this.defaults, ...e3 }, this; } - lexer(src, options3) { - return _Lexer.lex(src, options3 ?? this.defaults); + lexer(e3, t4) { + return b.lex(e3, t4 ?? this.defaults); } - parser(tokens2, options3) { - return _Parser.parse(tokens2, options3 ?? this.defaults); + parser(e3, t4) { + return R.parse(e3, t4 ?? this.defaults); } - parseMarkdown(blockType) { - const parse7 = /* @__PURE__ */ __name((src, options3) => { - const origOpt = { ...options3 }; - const opt = { ...this.defaults, ...origOpt }; - const throwError2 = this.onError(!!opt.silent, !!opt.async); - if (this.defaults.async === true && origOpt.async === false) { - return throwError2(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.")); - } - if (typeof src === "undefined" || src === null) { - return throwError2(new Error("marked(): input parameter is undefined or null")); - } - if (typeof src !== "string") { - return throwError2(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(src) + ", string expected")); - } - if (opt.hooks) { - opt.hooks.options = opt; - opt.hooks.block = blockType; - } - const lexer2 = opt.hooks ? opt.hooks.provideLexer() : blockType ? _Lexer.lex : _Lexer.lexInline; - const parser24 = opt.hooks ? opt.hooks.provideParser() : blockType ? _Parser.parse : _Parser.parseInline; - if (opt.async) { - return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then((src2) => lexer2(src2, opt)).then((tokens2) => opt.hooks ? opt.hooks.processAllTokens(tokens2) : tokens2).then((tokens2) => opt.walkTokens ? Promise.all(this.walkTokens(tokens2, opt.walkTokens)).then(() => tokens2) : tokens2).then((tokens2) => parser24(tokens2, opt)).then((html3) => opt.hooks ? opt.hooks.postprocess(html3) : html3).catch(throwError2); - } + parseMarkdown(e3) { + return (n2, r2) => { + let i2 = { ...r2 }, s2 = { ...this.defaults, ...i2 }, o2 = this.onError(!!s2.silent, !!s2.async); + if (this.defaults.async === true && i2.async === false) return o2(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.")); + if (typeof n2 > "u" || n2 === null) return o2(new Error("marked(): input parameter is undefined or null")); + if (typeof n2 != "string") return o2(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(n2) + ", string expected")); + s2.hooks && (s2.hooks.options = s2, s2.hooks.block = e3); + let a2 = s2.hooks ? s2.hooks.provideLexer() : e3 ? b.lex : b.lexInline, u2 = s2.hooks ? s2.hooks.provideParser() : e3 ? R.parse : R.parseInline; + if (s2.async) return Promise.resolve(s2.hooks ? s2.hooks.preprocess(n2) : n2).then((p3) => a2(p3, s2)).then((p3) => s2.hooks ? s2.hooks.processAllTokens(p3) : p3).then((p3) => s2.walkTokens ? Promise.all(this.walkTokens(p3, s2.walkTokens)).then(() => p3) : p3).then((p3) => u2(p3, s2)).then((p3) => s2.hooks ? s2.hooks.postprocess(p3) : p3).catch(o2); try { - if (opt.hooks) { - src = opt.hooks.preprocess(src); - } - let tokens2 = lexer2(src, opt); - if (opt.hooks) { - tokens2 = opt.hooks.processAllTokens(tokens2); - } - if (opt.walkTokens) { - this.walkTokens(tokens2, opt.walkTokens); - } - let html3 = parser24(tokens2, opt); - if (opt.hooks) { - html3 = opt.hooks.postprocess(html3); - } - return html3; - } catch (e3) { - return throwError2(e3); + s2.hooks && (n2 = s2.hooks.preprocess(n2)); + let p3 = a2(n2, s2); + s2.hooks && (p3 = s2.hooks.processAllTokens(p3)), s2.walkTokens && this.walkTokens(p3, s2.walkTokens); + let c3 = u2(p3, s2); + return s2.hooks && (c3 = s2.hooks.postprocess(c3)), c3; + } catch (p3) { + return o2(p3); } - }, "parse"); - return parse7; + }; } - onError(silent, async) { - return (e3) => { - e3.message += "\nPlease report this to https://github.com/markedjs/marked."; - if (silent) { - const msg = "

    An error occurred:

    " + escape3(e3.message + "", true) + "
    "; - if (async) { - return Promise.resolve(msg); - } - return msg; - } - if (async) { - return Promise.reject(e3); + onError(e3, t4) { + return (n2) => { + if (n2.message += ` +Please report this to https://github.com/markedjs/marked.`, e3) { + let r2 = "

    An error occurred:

    " + w(n2.message + "", true) + "
    "; + return t4 ? Promise.resolve(r2) : r2; } - throw e3; + if (t4) return Promise.reject(n2); + throw n2; }; } }; - markedInstance = new Marked(); - __name(marked, "marked"); - marked.options = marked.setOptions = function(options3) { - markedInstance.setOptions(options3); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; - marked.getDefaults = _getDefaults; - marked.defaults = _defaults; - marked.use = function(...args) { - markedInstance.use(...args); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; - marked.walkTokens = function(tokens2, callback) { - return markedInstance.walkTokens(tokens2, callback); - }; - marked.parseInline = markedInstance.parseInline; - marked.Parser = _Parser; - marked.parser = _Parser.parse; - marked.Renderer = _Renderer; - marked.TextRenderer = _TextRenderer; - marked.Lexer = _Lexer; - marked.lexer = _Lexer.lex; - marked.Tokenizer = _Tokenizer; - marked.Hooks = _Hooks; - marked.parse = marked; - options = marked.options; - setOptions = marked.setOptions; - use = marked.use; - walkTokens = marked.walkTokens; - parseInline = marked.parseInline; - parser2 = _Parser.parse; - lexer = _Lexer.lex; + _ = new B(); + __name(d, "d"); + d.options = d.setOptions = function(l4) { + return _.setOptions(l4), d.defaults = _.defaults, G(d.defaults), d; + }; + d.getDefaults = L; + d.defaults = O; + d.use = function(...l4) { + return _.use(...l4), d.defaults = _.defaults, G(d.defaults), d; + }; + d.walkTokens = function(l4, e3) { + return _.walkTokens(l4, e3); + }; + d.parseInline = _.parseInline; + d.Parser = R; + d.parser = R.parse; + d.Renderer = P; + d.TextRenderer = $; + d.Lexer = b; + d.lexer = b.lex; + d.Tokenizer = y2; + d.Hooks = S2; + d.parse = d; + Dt = d.options; + Ht = d.setOptions; + Zt = d.use; + Gt = d.walkTokens; + Nt = d.parseInline; + Ft = R.parse; + Qt = b.lex; } }); @@ -38962,7 +38083,7 @@ ${text4} } function markdownToLines(markdown, config5 = {}) { const preprocessedMarkdown = preprocessMarkdown(markdown, config5); - const nodes6 = marked.lexer(preprocessedMarkdown); + const nodes5 = d.lexer(preprocessedMarkdown); const lines = [[]]; let currentLine = 0; function processNode(node2, parentType = "normal") { @@ -38989,19 +38110,21 @@ ${text4} } } __name(processNode, "processNode"); - nodes6.forEach((treeNode) => { + nodes5.forEach((treeNode) => { if (treeNode.type === "paragraph") { treeNode.tokens?.forEach((contentNode) => { processNode(contentNode); }); } else if (treeNode.type === "html") { lines[currentLine].push({ content: treeNode.text, type: "normal" }); + } else { + lines[currentLine].push({ content: treeNode.raw, type: "normal" }); } }); return lines; } function markdownToHTML(markdown, { markdownAutoWrap } = {}) { - const nodes6 = marked.lexer(markdown); + const nodes5 = d.lexer(markdown); function output2(node2) { if (node2.type === "text") { if (markdownAutoWrap === false) { @@ -39021,16 +38144,18 @@ ${text4} } else if (node2.type === "escape") { return node2.text; } - return `Unsupported markdown: ${node2.type}`; + log.warn(`Unsupported markdown: ${node2.type}`); + return node2.raw; } __name(output2, "output"); - return nodes6.map(output2).join(""); + return nodes5.map(output2).join(""); } var init_handle_markdown_text = __esm({ "src/rendering-util/handle-markdown-text.ts"() { "use strict"; init_marked_esm(); init_esm(); + init_logger(); __name(preprocessMarkdown, "preprocessMarkdown"); __name(markdownToLines, "markdownToLines"); __name(markdownToHTML, "markdownToHTML"); @@ -39125,18 +38250,15 @@ ${text4} dom.attr("style", styleFn); } } - async function addHtmlSpan(element3, node2, width3, classes3, addBackground = false) { + async function addHtmlSpan(element3, node2, width3, classes3, addBackground = false, config5 = getConfig()) { const fo = element3.append("foreignObject"); fo.attr("width", `${10 * width3}px`); fo.attr("height", `${10 * width3}px`); const div = fo.append("xhtml:div"); - let label = node2.label; - if (node2.label && hasKatex(node2.label)) { - label = await renderKatex(node2.label.replace(common_default.lineBreakRegex, "\n"), getConfig2()); - } + const sanitizedLabel = hasKatex(node2.label) ? await renderKatexSanitized(node2.label.replace(common_default.lineBreakRegex, "\n"), config5) : sanitizeText(node2.label, config5); const labelClass = node2.isNode ? "nodeLabel" : "edgeLabel"; const span = div.append("span"); - span.html(label); + span.html(sanitizedLabel); applyStyle(span, node2.labelStyle); span.attr("class", `${labelClass} ${classes3}`); applyStyle(div, node2.labelStyle); @@ -39214,24 +38336,36 @@ ${text4} } }); } - function replaceIconSubstring(text4) { - return text4.replace( - /fa[bklrs]?:fa-[\w-]+/g, - // cspell: disable-line - (s2) => `` - ); + async function replaceIconSubstring(text4, config5 = {}) { + const pendingReplacements = []; + text4.replace(/(fa[bklrs]?):fa-([\w-]+)/g, (fullMatch, prefix, iconName) => { + pendingReplacements.push( + (async () => { + const registeredIconName = `${prefix}:${iconName}`; + if (await isIconAvailable(registeredIconName)) { + return await getIconSVG(registeredIconName, void 0, { class: "label-icon" }); + } else { + return ``; + } + })() + ); + return fullMatch; + }); + const replacements = await Promise.all(pendingReplacements); + return text4.replace(/(fa[bklrs]?):fa-([\w-]+)/g, () => replacements.shift() ?? ""); } var createText; var init_createText = __esm({ "src/rendering-util/createText.ts"() { "use strict"; - init_diagramAPI(); - init_common(); init_src32(); + init_common(); init_logger(); init_handle_markdown_text(); init_utils2(); + init_icons(); init_splitText(); + init_config(); __name(applyStyle, "applyStyle"); __name(addHtmlSpan, "addHtmlSpan"); __name(createTspan, "createTspan"); @@ -39262,14 +38396,14 @@ ${text4} ); if (useHtmlLabels) { const htmlText = markdownToHTML(text4, config5); - const decodedReplacedText = replaceIconSubstring(decodeEntities(htmlText)); + const decodedReplacedText = await replaceIconSubstring(decodeEntities(htmlText), config5); const inputForKatex = text4.replace(/\\\\/g, "\\"); const node2 = { isNode: isNode2, label: hasKatex(text4) ? inputForKatex : decodedReplacedText, labelStyle: style3.replace("fill:", "color:") }; - const vertexNode = await addHtmlSpan(el, node2, width3, classes3, addSvgBackground); + const vertexNode = await addHtmlSpan(el, node2, width3, classes3, addSvgBackground, config5); return vertexNode; } else { const sanitizeBR = text4.replace(//g, "
    "); @@ -39315,8 +38449,8 @@ ${text4} for (let i2 = 0; i2 <= steps; i2++) { const t4 = i2 / steps; const x5 = x1 + t4 * deltaX; - const y5 = midY + amplitude * Math.sin(frequency * (x5 - x1)); - points.push({ x: x5, y: y5 }); + const y6 = midY + amplitude * Math.sin(frequency * (x5 - x1)); + points.push({ x: x5, y: y6 }); } return points; } @@ -39329,8 +38463,8 @@ ${text4} for (let i2 = 0; i2 < numPoints; i2++) { const angle2 = startAngleRad + i2 * angleStep; const x5 = centerX + radius2 * Math.cos(angle2); - const y5 = centerY + radius2 * Math.sin(angle2); - points.push({ x: -x5, y: -y5 }); + const y6 = centerY + radius2 * Math.sin(angle2); + points.push({ x: -x5, y: -y6 }); } return points; } @@ -39421,17 +38555,17 @@ ${text4} labelEl.insert("rect", ":first-child"); return { shapeSvg, bbox, halfPadding, label: labelEl }; }, "labelHelper"); - insertLabel = /* @__PURE__ */ __name(async (parent4, label, options3) => { - const useHtmlLabels = options3.useHtmlLabels || evaluate(getConfig2()?.flowchart?.htmlLabels); - const labelEl = parent4.insert("g").attr("class", "label").attr("style", options3.labelStyle || ""); + insertLabel = /* @__PURE__ */ __name(async (parent4, label, options2) => { + const useHtmlLabels = options2.useHtmlLabels || evaluate(getConfig2()?.flowchart?.htmlLabels); + const labelEl = parent4.insert("g").attr("class", "label").attr("style", options2.labelStyle || ""); const text4 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), { useHtmlLabels, - width: options3.width || getConfig2()?.flowchart?.wrappingWidth, - style: options3.labelStyle, - addSvgBackground: !!options3.icon || !!options3.img + width: options2.width || getConfig2()?.flowchart?.wrappingWidth, + style: options2.labelStyle, + addSvgBackground: !!options2.icon || !!options2.img }); let bbox = text4.getBBox(); - const halfPadding = options3.padding / 2; + const halfPadding = options2.padding / 2; if (evaluate(getConfig2()?.flowchart?.htmlLabels)) { const div = text4.children[0]; const dv = select_default2(text4); @@ -39444,7 +38578,7 @@ ${text4} } else { labelEl.attr("transform", "translate(0, " + -bbox.height / 2 + ")"); } - if (options3.centerLabel) { + if (options2.centerLabel) { labelEl.attr("transform", "translate(" + -bbox.width / 2 + ", " + -bbox.height / 2 + ")"); } labelEl.insert("rect", ":first-child"); @@ -39516,37 +38650,36 @@ ${text4} }); // src/rendering-util/rendering-elements/intersect/intersect-line.js - function intersectLine(p1, p22, q1, q2) { - var a1, a2, b1, b2, c1, c22; - var r1, r2, r3, r4; - var denom, offset, num; - var x5, y5; - a1 = p22.y - p1.y; - b1 = p1.x - p22.x; - c1 = p22.x * p1.y - p1.x * p22.y; - r3 = a1 * q1.x + b1 * q1.y + c1; - r4 = a1 * q2.x + b1 * q2.y + c1; - if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) { - return; - } - a2 = q2.y - q1.y; - b2 = q1.x - q2.x; - c22 = q2.x * q1.y - q1.x * q2.y; - r1 = a2 * p1.x + b2 * p1.y + c22; - r2 = a2 * p22.x + b2 * p22.y + c22; - if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) { - return; - } - denom = a1 * b2 - a2 * b1; - if (denom === 0) { - return; + function intersectLine(p1, p22, q1, q22) { + { + const a1 = p22.y - p1.y; + const b1 = p1.x - p22.x; + const c1 = p22.x * p1.y - p1.x * p22.y; + const r3 = a1 * q1.x + b1 * q1.y + c1; + const r4 = a1 * q22.x + b1 * q22.y + c1; + const epsilon6 = 1e-6; + if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) { + return; + } + const a2 = q22.y - q1.y; + const b22 = q1.x - q22.x; + const c22 = q22.x * q1.y - q1.x * q22.y; + const r1 = a2 * p1.x + b22 * p1.y + c22; + const r2 = a2 * p22.x + b22 * p22.y + c22; + if (Math.abs(r1) < epsilon6 && Math.abs(r2) < epsilon6 && sameSign(r1, r2)) { + return; + } + const denom = a1 * b22 - a2 * b1; + if (denom === 0) { + return; + } + const offset = Math.abs(denom / 2); + let num = b1 * c22 - b22 * c1; + const x5 = num < 0 ? (num - offset) / denom : (num + offset) / denom; + num = a2 * c1 - a1 * c22; + const y6 = num < 0 ? (num - offset) / denom : (num + offset) / denom; + return { x: x5, y: y6 }; } - offset = Math.abs(denom / 2); - num = b1 * c22 - b2 * c1; - x5 = num < 0 ? (num - offset) / denom : (num + offset) / denom; - num = a2 * c1 - a1 * c22; - y5 = num < 0 ? (num - offset) / denom : (num + offset) / denom; - return { x: x5, y: y5 }; } function sameSign(r1, r2) { return r1 * r2 > 0; @@ -39596,12 +38729,12 @@ ${text4} return node2; } if (intersections.length > 1) { - intersections.sort(function(p3, q2) { + intersections.sort(function(p3, q3) { let pdx = p3.x - point8.x; let pdy = p3.y - point8.y; let distp = Math.sqrt(pdx * pdx + pdy * pdy); - let qdx = q2.x - point8.x; - let qdy = q2.y - point8.y; + let qdx = q3.x - point8.x; + let qdy = q3.y - point8.y; let distq = Math.sqrt(qdx * qdx + qdy * qdy); return distp < distq ? -1 : distp === distq ? 0 : 1; }); @@ -39625,26 +38758,26 @@ ${text4} "use strict"; intersectRect = /* @__PURE__ */ __name((node2, point8) => { var x5 = node2.x; - var y5 = node2.y; + var y6 = node2.y; var dx = point8.x - x5; - var dy = point8.y - y5; - var w3 = node2.width / 2; - var h2 = node2.height / 2; + var dy = point8.y - y6; + var w4 = node2.width / 2; + var h3 = node2.height / 2; var sx, sy; - if (Math.abs(dy) * w3 > Math.abs(dx) * h2) { + if (Math.abs(dy) * w4 > Math.abs(dx) * h3) { if (dy < 0) { - h2 = -h2; + h3 = -h3; } - sx = dy === 0 ? 0 : h2 * dx / dy; - sy = h2; + sx = dy === 0 ? 0 : h3 * dx / dy; + sy = h3; } else { if (dx < 0) { - w3 = -w3; + w4 = -w4; } - sx = w3; - sy = dx === 0 ? 0 : w3 * dy / dx; + sx = w4; + sy = dx === 0 ? 0 : w4 * dy / dx; } - return { x: x5 + sx, y: y5 + sy }; + return { x: x5 + sx, y: y6 + sy }; }, "intersectRect"); intersect_rect_default = intersectRect; } @@ -39671,7 +38804,7 @@ ${text4} }); // src/rendering-util/rendering-elements/shapes/handDrawnShapeStyles.ts - var solidStateFill, compileStyles, styles2Map, isLabelStyle, styles2String, userNodeOverrides; + var solidStateFill, compileStyles, styles2Map, isLabelStyle, styles2String, userNodeOverrides, getStrokeDashArray; var init_handDrawnShapeStyles = __esm({ "src/rendering-util/rendering-elements/shapes/handDrawnShapeStyles.ts"() { "use strict"; @@ -39690,7 +38823,11 @@ ${text4} }; }, "solidStateFill"); compileStyles = /* @__PURE__ */ __name((node2) => { - const stylesMap = styles2Map([...node2.cssCompiledStyles || [], ...node2.cssStyles || []]); + const stylesMap = styles2Map([ + ...node2.cssCompiledStyles || [], + ...node2.cssStyles || [], + ...node2.labelStyle || [] + ]); return { stylesMap, stylesArray: [...stylesMap] }; }, "compileStyles"); styles2Map = /* @__PURE__ */ __name((styles4) => { @@ -39732,7 +38869,7 @@ ${text4} backgroundStyles }; }, "styles2String"); - userNodeOverrides = /* @__PURE__ */ __name((node2, options3) => { + userNodeOverrides = /* @__PURE__ */ __name((node2, options2) => { const { themeVariables, handDrawnSeed } = getConfig2(); const { nodeBorder, mainBkg } = themeVariables; const { stylesMap } = compileStyles(node2); @@ -39747,22 +38884,36 @@ ${text4} stroke: stylesMap.get("stroke") || nodeBorder, seed: handDrawnSeed, strokeWidth: stylesMap.get("stroke-width")?.replace("px", "") || 1.3, - fillLineDash: [0, 0] + fillLineDash: [0, 0], + strokeLineDash: getStrokeDashArray(stylesMap.get("stroke-dasharray")) }, - options3 + options2 ); return result; }, "userNodeOverrides"); + getStrokeDashArray = /* @__PURE__ */ __name((strokeDasharrayStyle) => { + if (!strokeDasharrayStyle) { + return [0, 0]; + } + const dashArray = strokeDasharrayStyle.trim().split(/\s+/).map(Number); + if (dashArray.length === 1) { + const val = isNaN(dashArray[0]) ? 0 : dashArray[0]; + return [val, val]; + } + const first3 = isNaN(dashArray[0]) ? 0 : dashArray[0]; + const second2 = isNaN(dashArray[1]) ? 0 : dashArray[1]; + return [first3, second2]; + }, "getStrokeDashArray"); } }); // ../../node_modules/.pnpm/roughjs@4.6.6_patch_hash=3543d47108cb41b68ec6a671c0e1f9d0cfe2ce524fea5b0992511ae84c3c6b64/node_modules/roughjs/bundled/rough.esm.js function t(t4, e3, s2) { if (t4 && t4.length) { - const [n2, o2] = e3, a2 = Math.PI / 180 * s2, h2 = Math.cos(a2), r2 = Math.sin(a2); + const [n2, o2] = e3, a2 = Math.PI / 180 * s2, h3 = Math.cos(a2), r2 = Math.sin(a2); for (const e4 of t4) { const [t5, s3] = e4; - e4[0] = (t5 - n2) * h2 - (s3 - o2) * r2 + n2, e4[1] = (t5 - n2) * r2 + (s3 - o2) * h2 + o2; + e4[0] = (t5 - n2) * h3 - (s3 - o2) * r2 + n2, e4[1] = (t5 - n2) * r2 + (s3 - o2) * h3 + o2; } } } @@ -39770,9 +38921,9 @@ ${text4} return t4[0] === e3[0] && t4[1] === e3[1]; } function s(s2, n2, o2, a2 = 1) { - const h2 = o2, r2 = Math.max(n2, 0.1), i2 = s2[0] && s2[0][0] && "number" == typeof s2[0][0] ? [s2] : s2, c3 = [0, 0]; - if (h2) for (const e3 of i2) t(e3, c3, h2); - const l2 = function(t4, s3, n3) { + const h3 = o2, r2 = Math.max(n2, 0.1), i2 = s2[0] && s2[0][0] && "number" == typeof s2[0][0] ? [s2] : s2, c3 = [0, 0]; + if (h3) for (const e3 of i2) t(e3, c3, h3); + const l4 = (function(t4, s3, n3) { const o3 = []; for (const s4 of t4) { const t5 = [...s4]; @@ -39780,52 +38931,52 @@ ${text4} } const a3 = []; s3 = Math.max(s3, 0.1); - const h3 = []; + const h4 = []; for (const t5 of o3) for (let e3 = 0; e3 < t5.length - 1; e3++) { const s4 = t5[e3], n4 = t5[e3 + 1]; if (s4[1] !== n4[1]) { const t6 = Math.min(s4[1], n4[1]); - h3.push({ ymin: t6, ymax: Math.max(s4[1], n4[1]), x: t6 === s4[1] ? s4[0] : n4[0], islope: (n4[0] - s4[0]) / (n4[1] - s4[1]) }); + h4.push({ ymin: t6, ymax: Math.max(s4[1], n4[1]), x: t6 === s4[1] ? s4[0] : n4[0], islope: (n4[0] - s4[0]) / (n4[1] - s4[1]) }); } } - if (h3.sort((t5, e3) => t5.ymin < e3.ymin ? -1 : t5.ymin > e3.ymin ? 1 : t5.x < e3.x ? -1 : t5.x > e3.x ? 1 : t5.ymax === e3.ymax ? 0 : (t5.ymax - e3.ymax) / Math.abs(t5.ymax - e3.ymax)), !h3.length) return a3; - let r3 = [], i3 = h3[0].ymin, c4 = 0; - for (; r3.length || h3.length; ) { - if (h3.length) { + if (h4.sort(((t5, e3) => t5.ymin < e3.ymin ? -1 : t5.ymin > e3.ymin ? 1 : t5.x < e3.x ? -1 : t5.x > e3.x ? 1 : t5.ymax === e3.ymax ? 0 : (t5.ymax - e3.ymax) / Math.abs(t5.ymax - e3.ymax))), !h4.length) return a3; + let r3 = [], i3 = h4[0].ymin, c4 = 0; + for (; r3.length || h4.length; ) { + if (h4.length) { let t5 = -1; - for (let e3 = 0; e3 < h3.length && !(h3[e3].ymin > i3); e3++) t5 = e3; - h3.splice(0, t5 + 1).forEach((t6) => { + for (let e3 = 0; e3 < h4.length && !(h4[e3].ymin > i3); e3++) t5 = e3; + h4.splice(0, t5 + 1).forEach(((t6) => { r3.push({ s: i3, edge: t6 }); - }); + })); } - if (r3 = r3.filter((t5) => !(t5.edge.ymax <= i3)), r3.sort((t5, e3) => t5.edge.x === e3.edge.x ? 0 : (t5.edge.x - e3.edge.x) / Math.abs(t5.edge.x - e3.edge.x)), (1 !== n3 || c4 % s3 == 0) && r3.length > 1) for (let t5 = 0; t5 < r3.length; t5 += 2) { + if (r3 = r3.filter(((t5) => !(t5.edge.ymax <= i3))), r3.sort(((t5, e3) => t5.edge.x === e3.edge.x ? 0 : (t5.edge.x - e3.edge.x) / Math.abs(t5.edge.x - e3.edge.x))), (1 !== n3 || c4 % s3 == 0) && r3.length > 1) for (let t5 = 0; t5 < r3.length; t5 += 2) { const e3 = t5 + 1; if (e3 >= r3.length) break; const s4 = r3[t5].edge, n4 = r3[e3].edge; a3.push([[Math.round(s4.x), i3], [Math.round(n4.x), i3]]); } - i3 += n3, r3.forEach((t5) => { + i3 += n3, r3.forEach(((t5) => { t5.edge.x = t5.edge.x + n3 * t5.edge.islope; - }), c4++; + })), c4++; } return a3; - }(i2, r2, a2); - if (h2) { - for (const e3 of i2) t(e3, c3, -h2); - !function(e3, s3, n3) { + })(i2, r2, a2); + if (h3) { + for (const e3 of i2) t(e3, c3, -h3); + !(function(e3, s3, n3) { const o3 = []; - e3.forEach((t4) => o3.push(...t4)), t(o3, s3, n3); - }(l2, c3, -h2); + e3.forEach(((t4) => o3.push(...t4))), t(o3, s3, n3); + })(l4, c3, -h3); } - return l2; + return l4; } function n(t4, e3) { var n2; const o2 = e3.hachureAngle + 90; let a2 = e3.hachureGap; a2 < 0 && (a2 = 4 * e3.strokeWidth), a2 = Math.round(Math.max(a2, 0.1)); - let h2 = 1; - return e3.roughness >= 1 && ((null === (n2 = e3.randomizer) || void 0 === n2 ? void 0 : n2.next()) || Math.random()) > 0.7 && (h2 = a2), s(t4, a2, o2, h2 || 1); + let h3 = 1; + return e3.roughness >= 1 && ((null === (n2 = e3.randomizer) || void 0 === n2 ? void 0 : n2.next()) || Math.random()) > 0.7 && (h3 = a2), s(t4, a2, o2, h3 || 1); } function a(t4) { const e3 = t4[0], s2 = t4[1]; @@ -39834,43 +38985,43 @@ ${text4} function k(t4, e3) { return t4.type === e3; } - function b(t4) { - const e3 = [], s2 = function(t5) { + function b2(t4) { + const e3 = [], s2 = (function(t5) { const e4 = new Array(); for (; "" !== t5; ) if (t5.match(/^([ \t\r\n,]+)/)) t5 = t5.substr(RegExp.$1.length); else if (t5.match(/^([aAcChHlLmMqQsStTvVzZ])/)) e4[e4.length] = { type: f, text: RegExp.$1 }, t5 = t5.substr(RegExp.$1.length); else { if (!t5.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/)) return []; - e4[e4.length] = { type: d, text: `${parseFloat(RegExp.$1)}` }, t5 = t5.substr(RegExp.$1.length); + e4[e4.length] = { type: d2, text: `${parseFloat(RegExp.$1)}` }, t5 = t5.substr(RegExp.$1.length); } return e4[e4.length] = { type: g, text: "" }, e4; - }(t4); + })(t4); let n2 = "BOD", o2 = 0, a2 = s2[o2]; for (; !k(a2, g); ) { - let h2 = 0; + let h3 = 0; const r2 = []; if ("BOD" === n2) { - if ("M" !== a2.text && "m" !== a2.text) return b("M0,0" + t4); - o2++, h2 = M[a2.text], n2 = a2.text; - } else k(a2, d) ? h2 = M[n2] : (o2++, h2 = M[a2.text], n2 = a2.text); - if (!(o2 + h2 < s2.length)) throw new Error("Path data ended short"); - for (let t5 = o2; t5 < o2 + h2; t5++) { + if ("M" !== a2.text && "m" !== a2.text) return b2("M0,0" + t4); + o2++, h3 = M2[a2.text], n2 = a2.text; + } else k(a2, d2) ? h3 = M2[n2] : (o2++, h3 = M2[a2.text], n2 = a2.text); + if (!(o2 + h3 < s2.length)) throw new Error("Path data ended short"); + for (let t5 = o2; t5 < o2 + h3; t5++) { const e4 = s2[t5]; - if (!k(e4, d)) throw new Error("Param not a number: " + n2 + "," + e4.text); + if (!k(e4, d2)) throw new Error("Param not a number: " + n2 + "," + e4.text); r2[r2.length] = +e4.text; } - if ("number" != typeof M[n2]) throw new Error("Bad segment: " + n2); + if ("number" != typeof M2[n2]) throw new Error("Bad segment: " + n2); { const t5 = { key: n2, data: r2 }; - e3.push(t5), o2 += h2, a2 = s2[o2], "M" === n2 && (n2 = "L"), "m" === n2 && (n2 = "l"); + e3.push(t5), o2 += h3, a2 = s2[o2], "M" === n2 && (n2 = "L"), "m" === n2 && (n2 = "l"); } } return e3; } - function y2(t4) { + function y3(t4) { let e3 = 0, s2 = 0, n2 = 0, o2 = 0; const a2 = []; - for (const { key: h2, data: r2 } of t4) switch (h2) { + for (const { key: h3, data: r2 } of t4) switch (h3) { case "M": a2.push({ key: "M", data: [...r2] }), [e3, s2] = r2, [n2, o2] = r2; break; @@ -39887,7 +39038,7 @@ ${text4} a2.push({ key: "C", data: [...r2] }), e3 = r2[4], s2 = r2[5]; break; case "c": { - const t5 = r2.map((t6, n3) => n3 % 2 ? t6 + s2 : t6 + e3); + const t5 = r2.map(((t6, n3) => n3 % 2 ? t6 + s2 : t6 + e3)); a2.push({ key: "C", data: t5 }), e3 = t5[4], s2 = t5[5]; break; } @@ -39895,7 +39046,7 @@ ${text4} a2.push({ key: "Q", data: [...r2] }), e3 = r2[2], s2 = r2[3]; break; case "q": { - const t5 = r2.map((t6, n3) => n3 % 2 ? t6 + s2 : t6 + e3); + const t5 = r2.map(((t6, n3) => n3 % 2 ? t6 + s2 : t6 + e3)); a2.push({ key: "Q", data: t5 }), e3 = t5[2], s2 = t5[3]; break; } @@ -39921,7 +39072,7 @@ ${text4} a2.push({ key: "S", data: [...r2] }), e3 = r2[2], s2 = r2[3]; break; case "s": { - const t5 = r2.map((t6, n3) => n3 % 2 ? t6 + s2 : t6 + e3); + const t5 = r2.map(((t6, n3) => n3 % 2 ? t6 + s2 : t6 + e3)); a2.push({ key: "S", data: t5 }), e3 = t5[2], s2 = t5[3]; break; } @@ -39937,119 +39088,119 @@ ${text4} } return a2; } - function m(t4) { + function m2(t4) { const e3 = []; - let s2 = "", n2 = 0, o2 = 0, a2 = 0, h2 = 0, r2 = 0, i2 = 0; - for (const { key: c3, data: l2 } of t4) { + let s2 = "", n2 = 0, o2 = 0, a2 = 0, h3 = 0, r2 = 0, i2 = 0; + for (const { key: c3, data: l4 } of t4) { switch (c3) { case "M": - e3.push({ key: "M", data: [...l2] }), [n2, o2] = l2, [a2, h2] = l2; + e3.push({ key: "M", data: [...l4] }), [n2, o2] = l4, [a2, h3] = l4; break; case "C": - e3.push({ key: "C", data: [...l2] }), n2 = l2[4], o2 = l2[5], r2 = l2[2], i2 = l2[3]; + e3.push({ key: "C", data: [...l4] }), n2 = l4[4], o2 = l4[5], r2 = l4[2], i2 = l4[3]; break; case "L": - e3.push({ key: "L", data: [...l2] }), [n2, o2] = l2; + e3.push({ key: "L", data: [...l4] }), [n2, o2] = l4; break; case "H": - n2 = l2[0], e3.push({ key: "L", data: [n2, o2] }); + n2 = l4[0], e3.push({ key: "L", data: [n2, o2] }); break; case "V": - o2 = l2[0], e3.push({ key: "L", data: [n2, o2] }); + o2 = l4[0], e3.push({ key: "L", data: [n2, o2] }); break; case "S": { let t5 = 0, a3 = 0; - "C" === s2 || "S" === s2 ? (t5 = n2 + (n2 - r2), a3 = o2 + (o2 - i2)) : (t5 = n2, a3 = o2), e3.push({ key: "C", data: [t5, a3, ...l2] }), r2 = l2[0], i2 = l2[1], n2 = l2[2], o2 = l2[3]; + "C" === s2 || "S" === s2 ? (t5 = n2 + (n2 - r2), a3 = o2 + (o2 - i2)) : (t5 = n2, a3 = o2), e3.push({ key: "C", data: [t5, a3, ...l4] }), r2 = l4[0], i2 = l4[1], n2 = l4[2], o2 = l4[3]; break; } case "T": { - const [t5, a3] = l2; - let h3 = 0, c4 = 0; - "Q" === s2 || "T" === s2 ? (h3 = n2 + (n2 - r2), c4 = o2 + (o2 - i2)) : (h3 = n2, c4 = o2); - const u2 = n2 + 2 * (h3 - n2) / 3, p3 = o2 + 2 * (c4 - o2) / 3, f2 = t5 + 2 * (h3 - t5) / 3, d2 = a3 + 2 * (c4 - a3) / 3; - e3.push({ key: "C", data: [u2, p3, f2, d2, t5, a3] }), r2 = h3, i2 = c4, n2 = t5, o2 = a3; + const [t5, a3] = l4; + let h4 = 0, c4 = 0; + "Q" === s2 || "T" === s2 ? (h4 = n2 + (n2 - r2), c4 = o2 + (o2 - i2)) : (h4 = n2, c4 = o2); + const u2 = n2 + 2 * (h4 - n2) / 3, p3 = o2 + 2 * (c4 - o2) / 3, f2 = t5 + 2 * (h4 - t5) / 3, d3 = a3 + 2 * (c4 - a3) / 3; + e3.push({ key: "C", data: [u2, p3, f2, d3, t5, a3] }), r2 = h4, i2 = c4, n2 = t5, o2 = a3; break; } case "Q": { - const [t5, s3, a3, h3] = l2, c4 = n2 + 2 * (t5 - n2) / 3, u2 = o2 + 2 * (s3 - o2) / 3, p3 = a3 + 2 * (t5 - a3) / 3, f2 = h3 + 2 * (s3 - h3) / 3; - e3.push({ key: "C", data: [c4, u2, p3, f2, a3, h3] }), r2 = t5, i2 = s3, n2 = a3, o2 = h3; + const [t5, s3, a3, h4] = l4, c4 = n2 + 2 * (t5 - n2) / 3, u2 = o2 + 2 * (s3 - o2) / 3, p3 = a3 + 2 * (t5 - a3) / 3, f2 = h4 + 2 * (s3 - h4) / 3; + e3.push({ key: "C", data: [c4, u2, p3, f2, a3, h4] }), r2 = t5, i2 = s3, n2 = a3, o2 = h4; break; } case "A": { - const t5 = Math.abs(l2[0]), s3 = Math.abs(l2[1]), a3 = l2[2], h3 = l2[3], r3 = l2[4], i3 = l2[5], c4 = l2[6]; + const t5 = Math.abs(l4[0]), s3 = Math.abs(l4[1]), a3 = l4[2], h4 = l4[3], r3 = l4[4], i3 = l4[5], c4 = l4[6]; if (0 === t5 || 0 === s3) e3.push({ key: "C", data: [n2, o2, i3, c4, i3, c4] }), n2 = i3, o2 = c4; else if (n2 !== i3 || o2 !== c4) { - x2(n2, o2, i3, c4, t5, s3, a3, h3, r3).forEach(function(t6) { + x2(n2, o2, i3, c4, t5, s3, a3, h4, r3).forEach((function(t6) { e3.push({ key: "C", data: t6 }); - }), n2 = i3, o2 = c4; + })), n2 = i3, o2 = c4; } break; } case "Z": - e3.push({ key: "Z", data: [] }), n2 = a2, o2 = h2; + e3.push({ key: "Z", data: [] }), n2 = a2, o2 = h3; } s2 = c3; } return e3; } - function w(t4, e3, s2) { + function w2(t4, e3, s2) { return [t4 * Math.cos(s2) - e3 * Math.sin(s2), t4 * Math.sin(s2) + e3 * Math.cos(s2)]; } - function x2(t4, e3, s2, n2, o2, a2, h2, r2, i2, c3) { - const l2 = (u2 = h2, Math.PI * u2 / 180); + function x2(t4, e3, s2, n2, o2, a2, h3, r2, i2, c3) { + const l4 = (u2 = h3, Math.PI * u2 / 180); var u2; - let p3 = [], f2 = 0, d2 = 0, g2 = 0, M2 = 0; - if (c3) [f2, d2, g2, M2] = c3; + let p3 = [], f2 = 0, d3 = 0, g2 = 0, M3 = 0; + if (c3) [f2, d3, g2, M3] = c3; else { - [t4, e3] = w(t4, e3, -l2), [s2, n2] = w(s2, n2, -l2); - const h3 = (t4 - s2) / 2, c4 = (e3 - n2) / 2; - let u3 = h3 * h3 / (o2 * o2) + c4 * c4 / (a2 * a2); + [t4, e3] = w2(t4, e3, -l4), [s2, n2] = w2(s2, n2, -l4); + const h4 = (t4 - s2) / 2, c4 = (e3 - n2) / 2; + let u3 = h4 * h4 / (o2 * o2) + c4 * c4 / (a2 * a2); u3 > 1 && (u3 = Math.sqrt(u3), o2 *= u3, a2 *= u3); - const p4 = o2 * o2, k3 = a2 * a2, b3 = p4 * k3 - p4 * c4 * c4 - k3 * h3 * h3, y6 = p4 * c4 * c4 + k3 * h3 * h3, m3 = (r2 === i2 ? -1 : 1) * Math.sqrt(Math.abs(b3 / y6)); - g2 = m3 * o2 * c4 / a2 + (t4 + s2) / 2, M2 = m3 * -a2 * h3 / o2 + (e3 + n2) / 2, f2 = Math.asin(parseFloat(((e3 - M2) / a2).toFixed(9))), d2 = Math.asin(parseFloat(((n2 - M2) / a2).toFixed(9))), t4 < g2 && (f2 = Math.PI - f2), s2 < g2 && (d2 = Math.PI - d2), f2 < 0 && (f2 = 2 * Math.PI + f2), d2 < 0 && (d2 = 2 * Math.PI + d2), i2 && f2 > d2 && (f2 -= 2 * Math.PI), !i2 && d2 > f2 && (d2 -= 2 * Math.PI); + const p4 = o2 * o2, k3 = a2 * a2, b4 = p4 * k3 - p4 * c4 * c4 - k3 * h4 * h4, y7 = p4 * c4 * c4 + k3 * h4 * h4, m4 = (r2 === i2 ? -1 : 1) * Math.sqrt(Math.abs(b4 / y7)); + g2 = m4 * o2 * c4 / a2 + (t4 + s2) / 2, M3 = m4 * -a2 * h4 / o2 + (e3 + n2) / 2, f2 = Math.asin(parseFloat(((e3 - M3) / a2).toFixed(9))), d3 = Math.asin(parseFloat(((n2 - M3) / a2).toFixed(9))), t4 < g2 && (f2 = Math.PI - f2), s2 < g2 && (d3 = Math.PI - d3), f2 < 0 && (f2 = 2 * Math.PI + f2), d3 < 0 && (d3 = 2 * Math.PI + d3), i2 && f2 > d3 && (f2 -= 2 * Math.PI), !i2 && d3 > f2 && (d3 -= 2 * Math.PI); } - let k2 = d2 - f2; + let k2 = d3 - f2; if (Math.abs(k2) > 120 * Math.PI / 180) { - const t5 = d2, e4 = s2, r3 = n2; - d2 = i2 && d2 > f2 ? f2 + 120 * Math.PI / 180 * 1 : f2 + 120 * Math.PI / 180 * -1, p3 = x2(s2 = g2 + o2 * Math.cos(d2), n2 = M2 + a2 * Math.sin(d2), e4, r3, o2, a2, h2, 0, i2, [d2, t5, g2, M2]); + const t5 = d3, e4 = s2, r3 = n2; + d3 = i2 && d3 > f2 ? f2 + 120 * Math.PI / 180 * 1 : f2 + 120 * Math.PI / 180 * -1, p3 = x2(s2 = g2 + o2 * Math.cos(d3), n2 = M3 + a2 * Math.sin(d3), e4, r3, o2, a2, h3, 0, i2, [d3, t5, g2, M3]); } - k2 = d2 - f2; - const b2 = Math.cos(f2), y5 = Math.sin(f2), m2 = Math.cos(d2), P2 = Math.sin(d2), v3 = Math.tan(k2 / 4), S3 = 4 / 3 * o2 * v3, O2 = 4 / 3 * a2 * v3, L2 = [t4, e3], T3 = [t4 + S3 * y5, e3 - O2 * b2], D3 = [s2 + S3 * P2, n2 - O2 * m2], A2 = [s2, n2]; - if (T3[0] = 2 * L2[0] - T3[0], T3[1] = 2 * L2[1] - T3[1], c3) return [T3, D3, A2].concat(p3); + k2 = d3 - f2; + const b3 = Math.cos(f2), y6 = Math.sin(f2), m3 = Math.cos(d3), P3 = Math.sin(d3), v3 = Math.tan(k2 / 4), S4 = 4 / 3 * o2 * v3, O3 = 4 / 3 * a2 * v3, L3 = [t4, e3], T3 = [t4 + S4 * y6, e3 - O3 * b3], D4 = [s2 + S4 * P3, n2 - O3 * m3], A2 = [s2, n2]; + if (T3[0] = 2 * L3[0] - T3[0], T3[1] = 2 * L3[1] - T3[1], c3) return [T3, D4, A2].concat(p3); { - p3 = [T3, D3, A2].concat(p3); + p3 = [T3, D4, A2].concat(p3); const t5 = []; for (let e4 = 0; e4 < p3.length; e4 += 3) { - const s3 = w(p3[e4][0], p3[e4][1], l2), n3 = w(p3[e4 + 1][0], p3[e4 + 1][1], l2), o3 = w(p3[e4 + 2][0], p3[e4 + 2][1], l2); + const s3 = w2(p3[e4][0], p3[e4][1], l4), n3 = w2(p3[e4 + 1][0], p3[e4 + 1][1], l4), o3 = w2(p3[e4 + 2][0], p3[e4 + 2][1], l4); t5.push([s3[0], s3[1], n3[0], n3[1], o3[0], o3[1]]); } return t5; } } - function v(t4, e3, s2, n2, o2) { - return { type: "path", ops: $(t4, e3, s2, n2, o2) }; + function v2(t4, e3, s2, n2, o2) { + return { type: "path", ops: $2(t4, e3, s2, n2, o2) }; } - function S2(t4, e3, s2) { + function S3(t4, e3, s2) { const n2 = (t4 || []).length; if (n2 > 2) { const o2 = []; - for (let e4 = 0; e4 < n2 - 1; e4++) o2.push(...$(t4[e4][0], t4[e4][1], t4[e4 + 1][0], t4[e4 + 1][1], s2)); - return e3 && o2.push(...$(t4[n2 - 1][0], t4[n2 - 1][1], t4[0][0], t4[0][1], s2)), { type: "path", ops: o2 }; + for (let e4 = 0; e4 < n2 - 1; e4++) o2.push(...$2(t4[e4][0], t4[e4][1], t4[e4 + 1][0], t4[e4 + 1][1], s2)); + return e3 && o2.push(...$2(t4[n2 - 1][0], t4[n2 - 1][1], t4[0][0], t4[0][1], s2)), { type: "path", ops: o2 }; } - return 2 === n2 ? v(t4[0][0], t4[0][1], t4[1][0], t4[1][1], s2) : { type: "path", ops: [] }; + return 2 === n2 ? v2(t4[0][0], t4[0][1], t4[1][0], t4[1][1], s2) : { type: "path", ops: [] }; } - function O(t4, e3, s2, n2, o2) { - return function(t5, e4) { - return S2(t5, true, e4); - }([[t4, e3], [t4 + s2, e3], [t4 + s2, e3 + n2], [t4, e3 + n2]], o2); + function O2(t4, e3, s2, n2, o2) { + return (function(t5, e4) { + return S3(t5, true, e4); + })([[t4, e3], [t4 + s2, e3], [t4 + s2, e3 + n2], [t4, e3 + n2]], o2); } - function L(t4, e3) { + function L2(t4, e3) { if (t4.length) { - const s2 = "number" == typeof t4[0][0] ? [t4] : t4, n2 = j(s2[0], 1 * (1 + 0.2 * e3.roughness), e3), o2 = e3.disableMultiStroke ? [] : j(s2[0], 1.5 * (1 + 0.22 * e3.roughness), z(e3)); + const s2 = "number" == typeof t4[0][0] ? [t4] : t4, n2 = j2(s2[0], 1 * (1 + 0.2 * e3.roughness), e3), o2 = e3.disableMultiStroke ? [] : j2(s2[0], 1.5 * (1 + 0.22 * e3.roughness), z2(e3)); for (let t5 = 1; t5 < s2.length; t5++) { const a2 = s2[t5]; if (a2.length) { - const t6 = j(a2, 1 * (1 + 0.2 * e3.roughness), e3), s3 = e3.disableMultiStroke ? [] : j(a2, 1.5 * (1 + 0.22 * e3.roughness), z(e3)); + const t6 = j2(a2, 1 * (1 + 0.2 * e3.roughness), e3), s3 = e3.disableMultiStroke ? [] : j2(a2, 1.5 * (1 + 0.22 * e3.roughness), z2(e3)); for (const e4 of t6) "move" !== e4.op && n2.push(e4); for (const t7 of s3) "move" !== t7.op && o2.push(t7); } @@ -40060,70 +39211,70 @@ ${text4} } function T2(t4, e3, s2) { const n2 = Math.sqrt(2 * Math.PI * Math.sqrt((Math.pow(t4 / 2, 2) + Math.pow(e3 / 2, 2)) / 2)), o2 = Math.ceil(Math.max(s2.curveStepCount, s2.curveStepCount / Math.sqrt(200) * n2)), a2 = 2 * Math.PI / o2; - let h2 = Math.abs(t4 / 2), r2 = Math.abs(e3 / 2); + let h3 = Math.abs(t4 / 2), r2 = Math.abs(e3 / 2); const i2 = 1 - s2.curveFitting; - return h2 += G(h2 * i2, s2), r2 += G(r2 * i2, s2), { increment: a2, rx: h2, ry: r2 }; + return h3 += G2(h3 * i2, s2), r2 += G2(r2 * i2, s2), { increment: a2, rx: h3, ry: r2 }; } - function D2(t4, e3, s2, n2) { - const [o2, a2] = F(n2.increment, t4, e3, n2.rx, n2.ry, 1, n2.increment * E(0.1, E(0.4, 1, s2), s2), s2); - let h2 = q(o2, null, s2); + function D3(t4, e3, s2, n2) { + const [o2, a2] = F2(n2.increment, t4, e3, n2.rx, n2.ry, 1, n2.increment * E2(0.1, E2(0.4, 1, s2), s2), s2); + let h3 = q2(o2, null, s2); if (!s2.disableMultiStroke && 0 !== s2.roughness) { - const [o3] = F(n2.increment, t4, e3, n2.rx, n2.ry, 1.5, 0, s2), a3 = q(o3, null, s2); - h2 = h2.concat(a3); + const [o3] = F2(n2.increment, t4, e3, n2.rx, n2.ry, 1.5, 0, s2), a3 = q2(o3, null, s2); + h3 = h3.concat(a3); } - return { estimatedPoints: a2, opset: { type: "path", ops: h2 } }; + return { estimatedPoints: a2, opset: { type: "path", ops: h3 } }; } - function A(t4, e3, s2, n2, o2, a2, h2, r2, i2) { - const c3 = t4, l2 = e3; + function A(t4, e3, s2, n2, o2, a2, h3, r2, i2) { + const c3 = t4, l4 = e3; let u2 = Math.abs(s2 / 2), p3 = Math.abs(n2 / 2); - u2 += G(0.01 * u2, i2), p3 += G(0.01 * p3, i2); - let f2 = o2, d2 = a2; - for (; f2 < 0; ) f2 += 2 * Math.PI, d2 += 2 * Math.PI; - d2 - f2 > 2 * Math.PI && (f2 = 0, d2 = 2 * Math.PI); - const g2 = 2 * Math.PI / i2.curveStepCount, M2 = Math.min(g2 / 2, (d2 - f2) / 2), k2 = V(M2, c3, l2, u2, p3, f2, d2, 1, i2); + u2 += G2(0.01 * u2, i2), p3 += G2(0.01 * p3, i2); + let f2 = o2, d3 = a2; + for (; f2 < 0; ) f2 += 2 * Math.PI, d3 += 2 * Math.PI; + d3 - f2 > 2 * Math.PI && (f2 = 0, d3 = 2 * Math.PI); + const g2 = 2 * Math.PI / i2.curveStepCount, M3 = Math.min(g2 / 2, (d3 - f2) / 2), k2 = V2(M3, c3, l4, u2, p3, f2, d3, 1, i2); if (!i2.disableMultiStroke) { - const t5 = V(M2, c3, l2, u2, p3, f2, d2, 1.5, i2); + const t5 = V2(M3, c3, l4, u2, p3, f2, d3, 1.5, i2); k2.push(...t5); } - return h2 && (r2 ? k2.push(...$(c3, l2, c3 + u2 * Math.cos(f2), l2 + p3 * Math.sin(f2), i2), ...$(c3, l2, c3 + u2 * Math.cos(d2), l2 + p3 * Math.sin(d2), i2)) : k2.push({ op: "lineTo", data: [c3, l2] }, { op: "lineTo", data: [c3 + u2 * Math.cos(f2), l2 + p3 * Math.sin(f2)] })), { type: "path", ops: k2 }; + return h3 && (r2 ? k2.push(...$2(c3, l4, c3 + u2 * Math.cos(f2), l4 + p3 * Math.sin(f2), i2), ...$2(c3, l4, c3 + u2 * Math.cos(d3), l4 + p3 * Math.sin(d3), i2)) : k2.push({ op: "lineTo", data: [c3, l4] }, { op: "lineTo", data: [c3 + u2 * Math.cos(f2), l4 + p3 * Math.sin(f2)] })), { type: "path", ops: k2 }; } - function _(t4, e3) { - const s2 = m(y2(b(t4))), n2 = []; + function _2(t4, e3) { + const s2 = m2(y3(b2(t4))), n2 = []; let o2 = [0, 0], a2 = [0, 0]; - for (const { key: t5, data: h2 } of s2) switch (t5) { + for (const { key: t5, data: h3 } of s2) switch (t5) { case "M": - a2 = [h2[0], h2[1]], o2 = [h2[0], h2[1]]; + a2 = [h3[0], h3[1]], o2 = [h3[0], h3[1]]; break; case "L": - n2.push(...$(a2[0], a2[1], h2[0], h2[1], e3)), a2 = [h2[0], h2[1]]; + n2.push(...$2(a2[0], a2[1], h3[0], h3[1], e3)), a2 = [h3[0], h3[1]]; break; case "C": { - const [t6, s3, o3, r2, i2, c3] = h2; + const [t6, s3, o3, r2, i2, c3] = h3; n2.push(...Z(t6, s3, o3, r2, i2, c3, a2, e3)), a2 = [i2, c3]; break; } case "Z": - n2.push(...$(a2[0], a2[1], o2[0], o2[1], e3)), a2 = [o2[0], o2[1]]; + n2.push(...$2(a2[0], a2[1], o2[0], o2[1], e3)), a2 = [o2[0], o2[1]]; } return { type: "path", ops: n2 }; } - function I(t4, e3) { + function I2(t4, e3) { const s2 = []; for (const n2 of t4) if (n2.length) { const t5 = e3.maxRandomnessOffset || 0, o2 = n2.length; if (o2 > 2) { - s2.push({ op: "move", data: [n2[0][0] + G(t5, e3), n2[0][1] + G(t5, e3)] }); - for (let a2 = 1; a2 < o2; a2++) s2.push({ op: "lineTo", data: [n2[a2][0] + G(t5, e3), n2[a2][1] + G(t5, e3)] }); + s2.push({ op: "move", data: [n2[0][0] + G2(t5, e3), n2[0][1] + G2(t5, e3)] }); + for (let a2 = 1; a2 < o2; a2++) s2.push({ op: "lineTo", data: [n2[a2][0] + G2(t5, e3), n2[a2][1] + G2(t5, e3)] }); } } return { type: "fillPath", ops: s2 }; } - function C(t4, e3) { - return function(t5, e4) { + function C2(t4, e3) { + return (function(t5, e4) { let s2 = t5.fillStyle || "hachure"; if (!u[s2]) switch (s2) { case "zigzag": - u[s2] || (u[s2] = new h(e4)); + u[s2] || (u[s2] = new h2(e4)); break; case "cross-hatch": u[s2] || (u[s2] = new r(e4)); @@ -40135,69 +39286,69 @@ ${text4} u[s2] || (u[s2] = new c2(e4)); break; case "zigzag-line": - u[s2] || (u[s2] = new l(e4)); + u[s2] || (u[s2] = new l3(e4)); break; default: s2 = "hachure", u[s2] || (u[s2] = new o(e4)); } return u[s2]; - }(e3, P).fillPolygons(t4, e3); + })(e3, P2).fillPolygons(t4, e3); } - function z(t4) { + function z2(t4) { const e3 = Object.assign({}, t4); return e3.randomizer = void 0, t4.seed && (e3.seed = t4.seed + 1), e3; } - function W(t4) { + function W2(t4) { return t4.randomizer || (t4.randomizer = new p(t4.seed || 0)), t4.randomizer.next(); } - function E(t4, e3, s2, n2 = 1) { - return s2.roughness * n2 * (W(s2) * (e3 - t4) + t4); + function E2(t4, e3, s2, n2 = 1) { + return s2.roughness * n2 * (W2(s2) * (e3 - t4) + t4); } - function G(t4, e3, s2 = 1) { - return E(-t4, t4, e3, s2); + function G2(t4, e3, s2 = 1) { + return E2(-t4, t4, e3, s2); } - function $(t4, e3, s2, n2, o2, a2 = false) { - const h2 = a2 ? o2.disableMultiStrokeFill : o2.disableMultiStroke, r2 = R(t4, e3, s2, n2, o2, true, false); - if (h2) return r2; - const i2 = R(t4, e3, s2, n2, o2, true, true); + function $2(t4, e3, s2, n2, o2, a2 = false) { + const h3 = a2 ? o2.disableMultiStrokeFill : o2.disableMultiStroke, r2 = R2(t4, e3, s2, n2, o2, true, false); + if (h3) return r2; + const i2 = R2(t4, e3, s2, n2, o2, true, true); return r2.concat(i2); } - function R(t4, e3, s2, n2, o2, a2, h2) { + function R2(t4, e3, s2, n2, o2, a2, h3) { const r2 = Math.pow(t4 - s2, 2) + Math.pow(e3 - n2, 2), i2 = Math.sqrt(r2); let c3 = 1; c3 = i2 < 200 ? 1 : i2 > 500 ? 0.4 : -16668e-7 * i2 + 1.233334; - let l2 = o2.maxRandomnessOffset || 0; - l2 * l2 * 100 > r2 && (l2 = i2 / 10); - const u2 = l2 / 2, p3 = 0.2 + 0.2 * W(o2); - let f2 = o2.bowing * o2.maxRandomnessOffset * (n2 - e3) / 200, d2 = o2.bowing * o2.maxRandomnessOffset * (t4 - s2) / 200; - f2 = G(f2, o2, c3), d2 = G(d2, o2, c3); - const g2 = [], M2 = /* @__PURE__ */ __name(() => G(u2, o2, c3), "M"), k2 = /* @__PURE__ */ __name(() => G(l2, o2, c3), "k"), b2 = o2.preserveVertices; - return a2 && (h2 ? g2.push({ op: "move", data: [t4 + (b2 ? 0 : M2()), e3 + (b2 ? 0 : M2())] }) : g2.push({ op: "move", data: [t4 + (b2 ? 0 : G(l2, o2, c3)), e3 + (b2 ? 0 : G(l2, o2, c3))] })), h2 ? g2.push({ op: "bcurveTo", data: [f2 + t4 + (s2 - t4) * p3 + M2(), d2 + e3 + (n2 - e3) * p3 + M2(), f2 + t4 + 2 * (s2 - t4) * p3 + M2(), d2 + e3 + 2 * (n2 - e3) * p3 + M2(), s2 + (b2 ? 0 : M2()), n2 + (b2 ? 0 : M2())] }) : g2.push({ op: "bcurveTo", data: [f2 + t4 + (s2 - t4) * p3 + k2(), d2 + e3 + (n2 - e3) * p3 + k2(), f2 + t4 + 2 * (s2 - t4) * p3 + k2(), d2 + e3 + 2 * (n2 - e3) * p3 + k2(), s2 + (b2 ? 0 : k2()), n2 + (b2 ? 0 : k2())] }), g2; - } - function j(t4, e3, s2) { + let l4 = o2.maxRandomnessOffset || 0; + l4 * l4 * 100 > r2 && (l4 = i2 / 10); + const u2 = l4 / 2, p3 = 0.2 + 0.2 * W2(o2); + let f2 = o2.bowing * o2.maxRandomnessOffset * (n2 - e3) / 200, d3 = o2.bowing * o2.maxRandomnessOffset * (t4 - s2) / 200; + f2 = G2(f2, o2, c3), d3 = G2(d3, o2, c3); + const g2 = [], M3 = /* @__PURE__ */ __name(() => G2(u2, o2, c3), "M"), k2 = /* @__PURE__ */ __name(() => G2(l4, o2, c3), "k"), b3 = o2.preserveVertices; + return a2 && (h3 ? g2.push({ op: "move", data: [t4 + (b3 ? 0 : M3()), e3 + (b3 ? 0 : M3())] }) : g2.push({ op: "move", data: [t4 + (b3 ? 0 : G2(l4, o2, c3)), e3 + (b3 ? 0 : G2(l4, o2, c3))] })), h3 ? g2.push({ op: "bcurveTo", data: [f2 + t4 + (s2 - t4) * p3 + M3(), d3 + e3 + (n2 - e3) * p3 + M3(), f2 + t4 + 2 * (s2 - t4) * p3 + M3(), d3 + e3 + 2 * (n2 - e3) * p3 + M3(), s2 + (b3 ? 0 : M3()), n2 + (b3 ? 0 : M3())] }) : g2.push({ op: "bcurveTo", data: [f2 + t4 + (s2 - t4) * p3 + k2(), d3 + e3 + (n2 - e3) * p3 + k2(), f2 + t4 + 2 * (s2 - t4) * p3 + k2(), d3 + e3 + 2 * (n2 - e3) * p3 + k2(), s2 + (b3 ? 0 : k2()), n2 + (b3 ? 0 : k2())] }), g2; + } + function j2(t4, e3, s2) { if (!t4.length) return []; const n2 = []; - n2.push([t4[0][0] + G(e3, s2), t4[0][1] + G(e3, s2)]), n2.push([t4[0][0] + G(e3, s2), t4[0][1] + G(e3, s2)]); - for (let o2 = 1; o2 < t4.length; o2++) n2.push([t4[o2][0] + G(e3, s2), t4[o2][1] + G(e3, s2)]), o2 === t4.length - 1 && n2.push([t4[o2][0] + G(e3, s2), t4[o2][1] + G(e3, s2)]); - return q(n2, null, s2); + n2.push([t4[0][0] + G2(e3, s2), t4[0][1] + G2(e3, s2)]), n2.push([t4[0][0] + G2(e3, s2), t4[0][1] + G2(e3, s2)]); + for (let o2 = 1; o2 < t4.length; o2++) n2.push([t4[o2][0] + G2(e3, s2), t4[o2][1] + G2(e3, s2)]), o2 === t4.length - 1 && n2.push([t4[o2][0] + G2(e3, s2), t4[o2][1] + G2(e3, s2)]); + return q2(n2, null, s2); } - function q(t4, e3, s2) { + function q2(t4, e3, s2) { const n2 = t4.length, o2 = []; if (n2 > 3) { - const a2 = [], h2 = 1 - s2.curveTightness; + const a2 = [], h3 = 1 - s2.curveTightness; o2.push({ op: "move", data: [t4[1][0], t4[1][1]] }); for (let e4 = 1; e4 + 2 < n2; e4++) { const s3 = t4[e4]; - a2[0] = [s3[0], s3[1]], a2[1] = [s3[0] + (h2 * t4[e4 + 1][0] - h2 * t4[e4 - 1][0]) / 6, s3[1] + (h2 * t4[e4 + 1][1] - h2 * t4[e4 - 1][1]) / 6], a2[2] = [t4[e4 + 1][0] + (h2 * t4[e4][0] - h2 * t4[e4 + 2][0]) / 6, t4[e4 + 1][1] + (h2 * t4[e4][1] - h2 * t4[e4 + 2][1]) / 6], a2[3] = [t4[e4 + 1][0], t4[e4 + 1][1]], o2.push({ op: "bcurveTo", data: [a2[1][0], a2[1][1], a2[2][0], a2[2][1], a2[3][0], a2[3][1]] }); + a2[0] = [s3[0], s3[1]], a2[1] = [s3[0] + (h3 * t4[e4 + 1][0] - h3 * t4[e4 - 1][0]) / 6, s3[1] + (h3 * t4[e4 + 1][1] - h3 * t4[e4 - 1][1]) / 6], a2[2] = [t4[e4 + 1][0] + (h3 * t4[e4][0] - h3 * t4[e4 + 2][0]) / 6, t4[e4 + 1][1] + (h3 * t4[e4][1] - h3 * t4[e4 + 2][1]) / 6], a2[3] = [t4[e4 + 1][0], t4[e4 + 1][1]], o2.push({ op: "bcurveTo", data: [a2[1][0], a2[1][1], a2[2][0], a2[2][1], a2[3][0], a2[3][1]] }); } if (e3 && 2 === e3.length) { const t5 = s2.maxRandomnessOffset; - o2.push({ op: "lineTo", data: [e3[0] + G(t5, s2), e3[1] + G(t5, s2)] }); + o2.push({ op: "lineTo", data: [e3[0] + G2(t5, s2), e3[1] + G2(t5, s2)] }); } - } else 3 === n2 ? (o2.push({ op: "move", data: [t4[1][0], t4[1][1]] }), o2.push({ op: "bcurveTo", data: [t4[1][0], t4[1][1], t4[2][0], t4[2][1], t4[2][0], t4[2][1]] })) : 2 === n2 && o2.push(...R(t4[0][0], t4[0][1], t4[1][0], t4[1][1], s2, true, true)); + } else 3 === n2 ? (o2.push({ op: "move", data: [t4[1][0], t4[1][1]] }), o2.push({ op: "bcurveTo", data: [t4[1][0], t4[1][1], t4[2][0], t4[2][1], t4[2][0], t4[2][1]] })) : 2 === n2 && o2.push(...R2(t4[0][0], t4[0][1], t4[1][0], t4[1][1], s2, true, true)); return o2; } - function F(t4, e3, s2, n2, o2, a2, h2, r2) { + function F2(t4, e3, s2, n2, o2, a2, h3, r2) { const i2 = [], c3 = []; if (0 === r2.roughness) { t4 /= 4, c3.push([e3 + n2 * Math.cos(-t4), s2 + o2 * Math.sin(-t4)]); @@ -40207,44 +39358,44 @@ ${text4} } c3.push([e3 + n2 * Math.cos(0), s2 + o2 * Math.sin(0)]), c3.push([e3 + n2 * Math.cos(t4), s2 + o2 * Math.sin(t4)]); } else { - const l2 = G(0.5, r2) - Math.PI / 2; - c3.push([G(a2, r2) + e3 + 0.9 * n2 * Math.cos(l2 - t4), G(a2, r2) + s2 + 0.9 * o2 * Math.sin(l2 - t4)]); - const u2 = 2 * Math.PI + l2 - 0.01; - for (let h3 = l2; h3 < u2; h3 += t4) { - const t5 = [G(a2, r2) + e3 + n2 * Math.cos(h3), G(a2, r2) + s2 + o2 * Math.sin(h3)]; + const l4 = G2(0.5, r2) - Math.PI / 2; + c3.push([G2(a2, r2) + e3 + 0.9 * n2 * Math.cos(l4 - t4), G2(a2, r2) + s2 + 0.9 * o2 * Math.sin(l4 - t4)]); + const u2 = 2 * Math.PI + l4 - 0.01; + for (let h4 = l4; h4 < u2; h4 += t4) { + const t5 = [G2(a2, r2) + e3 + n2 * Math.cos(h4), G2(a2, r2) + s2 + o2 * Math.sin(h4)]; i2.push(t5), c3.push(t5); } - c3.push([G(a2, r2) + e3 + n2 * Math.cos(l2 + 2 * Math.PI + 0.5 * h2), G(a2, r2) + s2 + o2 * Math.sin(l2 + 2 * Math.PI + 0.5 * h2)]), c3.push([G(a2, r2) + e3 + 0.98 * n2 * Math.cos(l2 + h2), G(a2, r2) + s2 + 0.98 * o2 * Math.sin(l2 + h2)]), c3.push([G(a2, r2) + e3 + 0.9 * n2 * Math.cos(l2 + 0.5 * h2), G(a2, r2) + s2 + 0.9 * o2 * Math.sin(l2 + 0.5 * h2)]); + c3.push([G2(a2, r2) + e3 + n2 * Math.cos(l4 + 2 * Math.PI + 0.5 * h3), G2(a2, r2) + s2 + o2 * Math.sin(l4 + 2 * Math.PI + 0.5 * h3)]), c3.push([G2(a2, r2) + e3 + 0.98 * n2 * Math.cos(l4 + h3), G2(a2, r2) + s2 + 0.98 * o2 * Math.sin(l4 + h3)]), c3.push([G2(a2, r2) + e3 + 0.9 * n2 * Math.cos(l4 + 0.5 * h3), G2(a2, r2) + s2 + 0.9 * o2 * Math.sin(l4 + 0.5 * h3)]); } return [c3, i2]; } - function V(t4, e3, s2, n2, o2, a2, h2, r2, i2) { - const c3 = a2 + G(0.1, i2), l2 = []; - l2.push([G(r2, i2) + e3 + 0.9 * n2 * Math.cos(c3 - t4), G(r2, i2) + s2 + 0.9 * o2 * Math.sin(c3 - t4)]); - for (let a3 = c3; a3 <= h2; a3 += t4) l2.push([G(r2, i2) + e3 + n2 * Math.cos(a3), G(r2, i2) + s2 + o2 * Math.sin(a3)]); - return l2.push([e3 + n2 * Math.cos(h2), s2 + o2 * Math.sin(h2)]), l2.push([e3 + n2 * Math.cos(h2), s2 + o2 * Math.sin(h2)]), q(l2, null, i2); + function V2(t4, e3, s2, n2, o2, a2, h3, r2, i2) { + const c3 = a2 + G2(0.1, i2), l4 = []; + l4.push([G2(r2, i2) + e3 + 0.9 * n2 * Math.cos(c3 - t4), G2(r2, i2) + s2 + 0.9 * o2 * Math.sin(c3 - t4)]); + for (let a3 = c3; a3 <= h3; a3 += t4) l4.push([G2(r2, i2) + e3 + n2 * Math.cos(a3), G2(r2, i2) + s2 + o2 * Math.sin(a3)]); + return l4.push([e3 + n2 * Math.cos(h3), s2 + o2 * Math.sin(h3)]), l4.push([e3 + n2 * Math.cos(h3), s2 + o2 * Math.sin(h3)]), q2(l4, null, i2); } - function Z(t4, e3, s2, n2, o2, a2, h2, r2) { + function Z(t4, e3, s2, n2, o2, a2, h3, r2) { const i2 = [], c3 = [r2.maxRandomnessOffset || 1, (r2.maxRandomnessOffset || 1) + 0.3]; - let l2 = [0, 0]; + let l4 = [0, 0]; const u2 = r2.disableMultiStroke ? 1 : 2, p3 = r2.preserveVertices; - for (let f2 = 0; f2 < u2; f2++) 0 === f2 ? i2.push({ op: "move", data: [h2[0], h2[1]] }) : i2.push({ op: "move", data: [h2[0] + (p3 ? 0 : G(c3[0], r2)), h2[1] + (p3 ? 0 : G(c3[0], r2))] }), l2 = p3 ? [o2, a2] : [o2 + G(c3[f2], r2), a2 + G(c3[f2], r2)], i2.push({ op: "bcurveTo", data: [t4 + G(c3[f2], r2), e3 + G(c3[f2], r2), s2 + G(c3[f2], r2), n2 + G(c3[f2], r2), l2[0], l2[1]] }); + for (let f2 = 0; f2 < u2; f2++) 0 === f2 ? i2.push({ op: "move", data: [h3[0], h3[1]] }) : i2.push({ op: "move", data: [h3[0] + (p3 ? 0 : G2(c3[0], r2)), h3[1] + (p3 ? 0 : G2(c3[0], r2))] }), l4 = p3 ? [o2, a2] : [o2 + G2(c3[f2], r2), a2 + G2(c3[f2], r2)], i2.push({ op: "bcurveTo", data: [t4 + G2(c3[f2], r2), e3 + G2(c3[f2], r2), s2 + G2(c3[f2], r2), n2 + G2(c3[f2], r2), l4[0], l4[1]] }); return i2; } - function Q(t4) { + function Q2(t4) { return [...t4]; } function H(t4, e3 = 0) { const s2 = t4.length; if (s2 < 3) throw new Error("A curve must have at least three points."); const n2 = []; - if (3 === s2) n2.push(Q(t4[0]), Q(t4[1]), Q(t4[2]), Q(t4[2])); + if (3 === s2) n2.push(Q2(t4[0]), Q2(t4[1]), Q2(t4[2]), Q2(t4[2])); else { const s3 = []; s3.push(t4[0], t4[0]); for (let e4 = 1; e4 < t4.length; e4++) s3.push(t4[e4]), e4 === t4.length - 1 && s3.push(t4[e4]); const o2 = [], a2 = 1 - e3; - n2.push(Q(s3[0])); + n2.push(Q2(s3[0])); for (let t5 = 1; t5 + 2 < s3.length; t5++) { const e4 = s3[t5]; o2[0] = [e4[0], e4[1]], o2[1] = [e4[0] + (a2 * s3[t5 + 1][0] - a2 * s3[t5 - 1][0]) / 6, e4[1] + (a2 * s3[t5 + 1][1] - a2 * s3[t5 - 1][1]) / 6], o2[2] = [s3[t5 + 1][0] + (a2 * s3[t5][0] - a2 * s3[t5 + 2][0]) / 6, s3[t5 + 1][1] + (a2 * s3[t5][1] - a2 * s3[t5 + 2][1]) / 6], o2[3] = [s3[t5 + 1][0], s3[t5 + 1][1]], n2.push(o2[1], o2[2], o2[3]); @@ -40252,63 +39403,63 @@ ${text4} } return n2; } - function N(t4, e3) { + function N2(t4, e3) { return Math.pow(t4[0] - e3[0], 2) + Math.pow(t4[1] - e3[1], 2); } - function B(t4, e3, s2) { - const n2 = N(e3, s2); - if (0 === n2) return N(t4, e3); + function B2(t4, e3, s2) { + const n2 = N2(e3, s2); + if (0 === n2) return N2(t4, e3); let o2 = ((t4[0] - e3[0]) * (s2[0] - e3[0]) + (t4[1] - e3[1]) * (s2[1] - e3[1])) / n2; - return o2 = Math.max(0, Math.min(1, o2)), N(t4, J(e3, s2, o2)); + return o2 = Math.max(0, Math.min(1, o2)), N2(t4, J2(e3, s2, o2)); } - function J(t4, e3, s2) { + function J2(t4, e3, s2) { return [t4[0] + (e3[0] - t4[0]) * s2, t4[1] + (e3[1] - t4[1]) * s2]; } - function K2(t4, e3, s2, n2) { + function K3(t4, e3, s2, n2) { const o2 = n2 || []; - if (function(t5, e4) { + if ((function(t5, e4) { const s3 = t5[e4 + 0], n3 = t5[e4 + 1], o3 = t5[e4 + 2], a3 = t5[e4 + 3]; - let h3 = 3 * n3[0] - 2 * s3[0] - a3[0]; - h3 *= h3; + let h4 = 3 * n3[0] - 2 * s3[0] - a3[0]; + h4 *= h4; let r2 = 3 * n3[1] - 2 * s3[1] - a3[1]; r2 *= r2; let i2 = 3 * o3[0] - 2 * a3[0] - s3[0]; i2 *= i2; let c3 = 3 * o3[1] - 2 * a3[1] - s3[1]; - return c3 *= c3, h3 < i2 && (h3 = i2), r2 < c3 && (r2 = c3), h3 + r2; - }(t4, e3) < s2) { + return c3 *= c3, h4 < i2 && (h4 = i2), r2 < c3 && (r2 = c3), h4 + r2; + })(t4, e3) < s2) { const s3 = t4[e3 + 0]; if (o2.length) { - (a2 = o2[o2.length - 1], h2 = s3, Math.sqrt(N(a2, h2))) > 1 && o2.push(s3); + (a2 = o2[o2.length - 1], h3 = s3, Math.sqrt(N2(a2, h3))) > 1 && o2.push(s3); } else o2.push(s3); o2.push(t4[e3 + 3]); } else { - const n3 = 0.5, a3 = t4[e3 + 0], h3 = t4[e3 + 1], r2 = t4[e3 + 2], i2 = t4[e3 + 3], c3 = J(a3, h3, n3), l2 = J(h3, r2, n3), u2 = J(r2, i2, n3), p3 = J(c3, l2, n3), f2 = J(l2, u2, n3), d2 = J(p3, f2, n3); - K2([a3, c3, p3, d2], 0, s2, o2), K2([d2, f2, u2, i2], 0, s2, o2); + const n3 = 0.5, a3 = t4[e3 + 0], h4 = t4[e3 + 1], r2 = t4[e3 + 2], i2 = t4[e3 + 3], c3 = J2(a3, h4, n3), l4 = J2(h4, r2, n3), u2 = J2(r2, i2, n3), p3 = J2(c3, l4, n3), f2 = J2(l4, u2, n3), d3 = J2(p3, f2, n3); + K3([a3, c3, p3, d3], 0, s2, o2), K3([d3, f2, u2, i2], 0, s2, o2); } - var a2, h2; + var a2, h3; return o2; } - function U(t4, e3) { - return X2(t4, 0, t4.length, e3); + function U2(t4, e3) { + return X3(t4, 0, t4.length, e3); } - function X2(t4, e3, s2, n2, o2) { - const a2 = o2 || [], h2 = t4[e3], r2 = t4[s2 - 1]; + function X3(t4, e3, s2, n2, o2) { + const a2 = o2 || [], h3 = t4[e3], r2 = t4[s2 - 1]; let i2 = 0, c3 = 1; for (let n3 = e3 + 1; n3 < s2 - 1; ++n3) { - const e4 = B(t4[n3], h2, r2); + const e4 = B2(t4[n3], h3, r2); e4 > i2 && (i2 = e4, c3 = n3); } - return Math.sqrt(i2) > n2 ? (X2(t4, e3, c3 + 1, n2, a2), X2(t4, c3, s2, n2, a2)) : (a2.length || a2.push(h2), a2.push(r2)), a2; + return Math.sqrt(i2) > n2 ? (X3(t4, e3, c3 + 1, n2, a2), X3(t4, c3, s2, n2, a2)) : (a2.length || a2.push(h3), a2.push(r2)), a2; } function Y2(t4, e3 = 0.15, s2) { const n2 = [], o2 = (t4.length - 1) / 3; for (let s3 = 0; s3 < o2; s3++) { - K2(t4, 3 * s3, e3, n2); + K3(t4, 3 * s3, e3, n2); } - return s2 && s2 > 0 ? X2(n2, 0, n2.length, s2) : n2; + return s2 && s2 > 0 ? X3(n2, 0, n2.length, s2) : n2; } - var o, h, r, i, c2, l, u, p, f, d, g, M, P, tt, et, st, nt, ot, at; + var o, h2, r, i, c2, l3, u, p, f, d2, g, M2, P2, tt, et, st, nt, ot, at; var init_rough_esm = __esm({ "../../node_modules/.pnpm/roughjs@4.6.6_patch_hash=3543d47108cb41b68ec6a671c0e1f9d0cfe2ce524fea5b0992511ae84c3c6b64/node_modules/roughjs/bundled/rough.esm.js"() { "use strict"; @@ -40337,14 +39488,14 @@ ${text4} } }; __name(a, "a"); - h = class extends o { + h2 = class extends o { static { __name(this, "h"); } fillPolygons(t4, e3) { let s2 = e3.hachureGap; s2 < 0 && (s2 = 4 * e3.strokeWidth), s2 = Math.max(s2, 0.1); - const o2 = n(t4, Object.assign({}, e3, { hachureGap: s2 })), h2 = Math.PI / 180 * e3.hachureAngle, r2 = [], i2 = 0.5 * s2 * Math.cos(h2), c3 = 0.5 * s2 * Math.sin(h2); + const o2 = n(t4, Object.assign({}, e3, { hachureGap: s2 })), h3 = Math.PI / 180 * e3.hachureAngle, r2 = [], i2 = 0.5 * s2 * Math.cos(h3), c3 = 0.5 * s2 * Math.sin(h3); for (const [t5, e4] of o2) a([t5, e4]) && r2.push([[t5[0] - i2, t5[1] + c3], [...e4]], [[t5[0] + i2, t5[1] - c3], [...e4]]); return { type: "fillSketch", ops: this.renderLines(r2, e3) }; } @@ -40375,11 +39526,11 @@ ${text4} n2 < 0 && (n2 = 4 * e3.strokeWidth), n2 = Math.max(n2, 0.1); let o2 = e3.fillWeight; o2 < 0 && (o2 = e3.strokeWidth / 2); - const h2 = n2 / 4; + const h3 = n2 / 4; for (const r2 of t4) { - const t5 = a(r2), i2 = t5 / n2, c3 = Math.ceil(i2) - 1, l2 = t5 - c3 * n2, u2 = (r2[0][0] + r2[1][0]) / 2 - n2 / 4, p3 = Math.min(r2[0][1], r2[1][1]); + const t5 = a(r2), i2 = t5 / n2, c3 = Math.ceil(i2) - 1, l4 = t5 - c3 * n2, u2 = (r2[0][0] + r2[1][0]) / 2 - n2 / 4, p3 = Math.min(r2[0][1], r2[1][1]); for (let t6 = 0; t6 < c3; t6++) { - const a2 = p3 + l2 + t6 * n2, r3 = u2 - h2 + 2 * Math.random() * h2, i3 = a2 - h2 + 2 * Math.random() * h2, c4 = this.helper.ellipse(r3, i3, o2, o2, e3); + const a2 = p3 + l4 + t6 * n2, r3 = u2 - h3 + 2 * Math.random() * h3, i3 = a2 - h3 + 2 * Math.random() * h3, c4 = this.helper.ellipse(r3, i3, o2, o2, e3); s2.push(...c4.ops); } } @@ -40399,19 +39550,19 @@ ${text4} } dashedLine(t4, e3) { const s2 = e3.dashOffset < 0 ? e3.hachureGap < 0 ? 4 * e3.strokeWidth : e3.hachureGap : e3.dashOffset, n2 = e3.dashGap < 0 ? e3.hachureGap < 0 ? 4 * e3.strokeWidth : e3.hachureGap : e3.dashGap, o2 = []; - return t4.forEach((t5) => { - const h2 = a(t5), r2 = Math.floor(h2 / (s2 + n2)), i2 = (h2 + n2 - r2 * (s2 + n2)) / 2; - let c3 = t5[0], l2 = t5[1]; - c3[0] > l2[0] && (c3 = t5[1], l2 = t5[0]); - const u2 = Math.atan((l2[1] - c3[1]) / (l2[0] - c3[0])); + return t4.forEach(((t5) => { + const h3 = a(t5), r2 = Math.floor(h3 / (s2 + n2)), i2 = (h3 + n2 - r2 * (s2 + n2)) / 2; + let c3 = t5[0], l4 = t5[1]; + c3[0] > l4[0] && (c3 = t5[1], l4 = t5[0]); + const u2 = Math.atan((l4[1] - c3[1]) / (l4[0] - c3[0])); for (let t6 = 0; t6 < r2; t6++) { - const a2 = t6 * (s2 + n2), h3 = a2 + s2, r3 = [c3[0] + a2 * Math.cos(u2) + i2 * Math.cos(u2), c3[1] + a2 * Math.sin(u2) + i2 * Math.sin(u2)], l3 = [c3[0] + h3 * Math.cos(u2) + i2 * Math.cos(u2), c3[1] + h3 * Math.sin(u2) + i2 * Math.sin(u2)]; - o2.push(...this.helper.doubleLineOps(r3[0], r3[1], l3[0], l3[1], e3)); + const a2 = t6 * (s2 + n2), h4 = a2 + s2, r3 = [c3[0] + a2 * Math.cos(u2) + i2 * Math.cos(u2), c3[1] + a2 * Math.sin(u2) + i2 * Math.sin(u2)], l5 = [c3[0] + h4 * Math.cos(u2) + i2 * Math.cos(u2), c3[1] + h4 * Math.sin(u2) + i2 * Math.sin(u2)]; + o2.push(...this.helper.doubleLineOps(r3[0], r3[1], l5[0], l5[1], e3)); } - }), o2; + })), o2; } }; - l = class { + l3 = class { static { __name(this, "l"); } @@ -40424,16 +39575,16 @@ ${text4} } zigzagLines(t4, e3, s2) { const n2 = []; - return t4.forEach((t5) => { - const o2 = a(t5), h2 = Math.round(o2 / (2 * e3)); + return t4.forEach(((t5) => { + const o2 = a(t5), h3 = Math.round(o2 / (2 * e3)); let r2 = t5[0], i2 = t5[1]; r2[0] > i2[0] && (r2 = t5[1], i2 = t5[0]); const c3 = Math.atan((i2[1] - r2[1]) / (i2[0] - r2[0])); - for (let t6 = 0; t6 < h2; t6++) { - const o3 = 2 * t6 * e3, a2 = 2 * (t6 + 1) * e3, h3 = Math.sqrt(2 * Math.pow(e3, 2)), i3 = [r2[0] + o3 * Math.cos(c3), r2[1] + o3 * Math.sin(c3)], l2 = [r2[0] + a2 * Math.cos(c3), r2[1] + a2 * Math.sin(c3)], u2 = [i3[0] + h3 * Math.cos(c3 + Math.PI / 4), i3[1] + h3 * Math.sin(c3 + Math.PI / 4)]; - n2.push(...this.helper.doubleLineOps(i3[0], i3[1], u2[0], u2[1], s2), ...this.helper.doubleLineOps(u2[0], u2[1], l2[0], l2[1], s2)); + for (let t6 = 0; t6 < h3; t6++) { + const o3 = 2 * t6 * e3, a2 = 2 * (t6 + 1) * e3, h4 = Math.sqrt(2 * Math.pow(e3, 2)), i3 = [r2[0] + o3 * Math.cos(c3), r2[1] + o3 * Math.sin(c3)], l4 = [r2[0] + a2 * Math.cos(c3), r2[1] + a2 * Math.sin(c3)], u2 = [i3[0] + h4 * Math.cos(c3 + Math.PI / 4), i3[1] + h4 * Math.sin(c3 + Math.PI / 4)]; + n2.push(...this.helper.doubleLineOps(i3[0], i3[1], u2[0], u2[1], s2), ...this.helper.doubleLineOps(u2[0], u2[1], l4[0], l4[1], s2)); } - }), n2; + })), n2; } }; u = {}; @@ -40449,54 +39600,54 @@ ${text4} } }; f = 0; - d = 1; + d2 = 1; g = 2; - M = { A: 7, a: 7, C: 6, c: 6, H: 1, h: 1, L: 2, l: 2, M: 2, m: 2, Q: 4, q: 4, S: 4, s: 4, T: 2, t: 2, V: 1, v: 1, Z: 0, z: 0 }; + M2 = { A: 7, a: 7, C: 6, c: 6, H: 1, h: 1, L: 2, l: 2, M: 2, m: 2, Q: 4, q: 4, S: 4, s: 4, T: 2, t: 2, V: 1, v: 1, Z: 0, z: 0 }; __name(k, "k"); - __name(b, "b"); - __name(y2, "y"); - __name(m, "m"); - __name(w, "w"); + __name(b2, "b"); + __name(y3, "y"); + __name(m2, "m"); + __name(w2, "w"); __name(x2, "x"); - P = { randOffset: /* @__PURE__ */ __name(function(t4, e3) { - return G(t4, e3); + P2 = { randOffset: /* @__PURE__ */ __name(function(t4, e3) { + return G2(t4, e3); }, "randOffset"), randOffsetWithRange: /* @__PURE__ */ __name(function(t4, e3, s2) { - return E(t4, e3, s2); + return E2(t4, e3, s2); }, "randOffsetWithRange"), ellipse: /* @__PURE__ */ __name(function(t4, e3, s2, n2, o2) { const a2 = T2(s2, n2, o2); - return D2(t4, e3, o2, a2).opset; + return D3(t4, e3, o2, a2).opset; }, "ellipse"), doubleLineOps: /* @__PURE__ */ __name(function(t4, e3, s2, n2, o2) { - return $(t4, e3, s2, n2, o2, true); + return $2(t4, e3, s2, n2, o2, true); }, "doubleLineOps") }; - __name(v, "v"); - __name(S2, "S"); - __name(O, "O"); - __name(L, "L"); + __name(v2, "v"); + __name(S3, "S"); + __name(O2, "O"); + __name(L2, "L"); __name(T2, "T"); - __name(D2, "D"); + __name(D3, "D"); __name(A, "A"); - __name(_, "_"); - __name(I, "I"); - __name(C, "C"); - __name(z, "z"); - __name(W, "W"); - __name(E, "E"); - __name(G, "G"); - __name($, "$"); - __name(R, "R"); - __name(j, "j"); - __name(q, "q"); - __name(F, "F"); - __name(V, "V"); + __name(_2, "_"); + __name(I2, "I"); + __name(C2, "C"); + __name(z2, "z"); + __name(W2, "W"); + __name(E2, "E"); + __name(G2, "G"); + __name($2, "$"); + __name(R2, "R"); + __name(j2, "j"); + __name(q2, "q"); + __name(F2, "F"); + __name(V2, "V"); __name(Z, "Z"); - __name(Q, "Q"); + __name(Q2, "Q"); __name(H, "H"); - __name(N, "N"); - __name(B, "B"); - __name(J, "J"); - __name(K2, "K"); - __name(U, "U"); - __name(X2, "X"); + __name(N2, "N"); + __name(B2, "B"); + __name(J2, "J"); + __name(K3, "K"); + __name(U2, "U"); + __name(X3, "X"); __name(Y2, "Y"); tt = "none"; et = class { @@ -40517,23 +39668,23 @@ ${text4} } line(t4, e3, s2, n2, o2) { const a2 = this._o(o2); - return this._d("line", [v(t4, e3, s2, n2, a2)], a2); + return this._d("line", [v2(t4, e3, s2, n2, a2)], a2); } rectangle(t4, e3, s2, n2, o2) { - const a2 = this._o(o2), h2 = [], r2 = O(t4, e3, s2, n2, a2); + const a2 = this._o(o2), h3 = [], r2 = O2(t4, e3, s2, n2, a2); if (a2.fill) { const o3 = [[t4, e3], [t4 + s2, e3], [t4 + s2, e3 + n2], [t4, e3 + n2]]; - "solid" === a2.fillStyle ? h2.push(I([o3], a2)) : h2.push(C([o3], a2)); + "solid" === a2.fillStyle ? h3.push(I2([o3], a2)) : h3.push(C2([o3], a2)); } - return a2.stroke !== tt && h2.push(r2), this._d("rectangle", h2, a2); + return a2.stroke !== tt && h3.push(r2), this._d("rectangle", h3, a2); } ellipse(t4, e3, s2, n2, o2) { - const a2 = this._o(o2), h2 = [], r2 = T2(s2, n2, a2), i2 = D2(t4, e3, a2, r2); + const a2 = this._o(o2), h3 = [], r2 = T2(s2, n2, a2), i2 = D3(t4, e3, a2, r2); if (a2.fill) if ("solid" === a2.fillStyle) { - const s3 = D2(t4, e3, a2, r2).opset; - s3.type = "fillPath", h2.push(s3); - } else h2.push(C([i2.estimatedPoints], a2)); - return a2.stroke !== tt && h2.push(i2.opset), this._d("ellipse", h2, a2); + const s3 = D3(t4, e3, a2, r2).opset; + s3.type = "fillPath", h3.push(s3); + } else h3.push(C2([i2.estimatedPoints], a2)); + return a2.stroke !== tt && h3.push(i2.opset), this._d("ellipse", h3, a2); } circle(t4, e3, s2, n2) { const o2 = this.ellipse(t4, e3, s2, s2, n2); @@ -40541,32 +39692,32 @@ ${text4} } linearPath(t4, e3) { const s2 = this._o(e3); - return this._d("linearPath", [S2(t4, false, s2)], s2); - } - arc(t4, e3, s2, n2, o2, a2, h2 = false, r2) { - const i2 = this._o(r2), c3 = [], l2 = A(t4, e3, s2, n2, o2, a2, h2, true, i2); - if (h2 && i2.fill) if ("solid" === i2.fillStyle) { - const h3 = Object.assign({}, i2); - h3.disableMultiStroke = true; - const r3 = A(t4, e3, s2, n2, o2, a2, true, false, h3); + return this._d("linearPath", [S3(t4, false, s2)], s2); + } + arc(t4, e3, s2, n2, o2, a2, h3 = false, r2) { + const i2 = this._o(r2), c3 = [], l4 = A(t4, e3, s2, n2, o2, a2, h3, true, i2); + if (h3 && i2.fill) if ("solid" === i2.fillStyle) { + const h4 = Object.assign({}, i2); + h4.disableMultiStroke = true; + const r3 = A(t4, e3, s2, n2, o2, a2, true, false, h4); r3.type = "fillPath", c3.push(r3); - } else c3.push(function(t5, e4, s3, n3, o3, a3, h3) { + } else c3.push((function(t5, e4, s3, n3, o3, a3, h4) { const r3 = t5, i3 = e4; - let c4 = Math.abs(s3 / 2), l3 = Math.abs(n3 / 2); - c4 += G(0.01 * c4, h3), l3 += G(0.01 * l3, h3); + let c4 = Math.abs(s3 / 2), l5 = Math.abs(n3 / 2); + c4 += G2(0.01 * c4, h4), l5 += G2(0.01 * l5, h4); let u2 = o3, p3 = a3; for (; u2 < 0; ) u2 += 2 * Math.PI, p3 += 2 * Math.PI; p3 - u2 > 2 * Math.PI && (u2 = 0, p3 = 2 * Math.PI); - const f2 = (p3 - u2) / h3.curveStepCount, d2 = []; - for (let t6 = u2; t6 <= p3; t6 += f2) d2.push([r3 + c4 * Math.cos(t6), i3 + l3 * Math.sin(t6)]); - return d2.push([r3 + c4 * Math.cos(p3), i3 + l3 * Math.sin(p3)]), d2.push([r3, i3]), C([d2], h3); - }(t4, e3, s2, n2, o2, a2, i2)); - return i2.stroke !== tt && c3.push(l2), this._d("arc", c3, i2); + const f2 = (p3 - u2) / h4.curveStepCount, d3 = []; + for (let t6 = u2; t6 <= p3; t6 += f2) d3.push([r3 + c4 * Math.cos(t6), i3 + l5 * Math.sin(t6)]); + return d3.push([r3 + c4 * Math.cos(p3), i3 + l5 * Math.sin(p3)]), d3.push([r3, i3]), C2([d3], h4); + })(t4, e3, s2, n2, o2, a2, i2)); + return i2.stroke !== tt && c3.push(l4), this._d("arc", c3, i2); } curve(t4, e3) { - const s2 = this._o(e3), n2 = [], o2 = L(t4, s2); + const s2 = this._o(e3), n2 = [], o2 = L2(t4, s2); if (s2.fill && s2.fill !== tt) if ("solid" === s2.fillStyle) { - const e4 = L(t4, Object.assign(Object.assign({}, s2), { disableMultiStroke: true, roughness: s2.roughness ? s2.roughness + s2.fillShapeRoughnessGain : 0 })); + const e4 = L2(t4, Object.assign(Object.assign({}, s2), { disableMultiStroke: true, roughness: s2.roughness ? s2.roughness + s2.fillShapeRoughnessGain : 0 })); n2.push({ type: "fillPath", ops: this._mergedShape(e4.ops) }); } else { const e4 = [], o3 = t4; @@ -40574,21 +39725,21 @@ ${text4} const t5 = "number" == typeof o3[0][0] ? [o3] : o3; for (const n3 of t5) n3.length < 3 ? e4.push(...n3) : 3 === n3.length ? e4.push(...Y2(H([n3[0], n3[0], n3[1], n3[2]]), 10, (1 + s2.roughness) / 2)) : e4.push(...Y2(H(n3), 10, (1 + s2.roughness) / 2)); } - e4.length && n2.push(C([e4], s2)); + e4.length && n2.push(C2([e4], s2)); } return s2.stroke !== tt && n2.push(o2), this._d("curve", n2, s2); } polygon(t4, e3) { - const s2 = this._o(e3), n2 = [], o2 = S2(t4, true, s2); - return s2.fill && ("solid" === s2.fillStyle ? n2.push(I([t4], s2)) : n2.push(C([t4], s2))), s2.stroke !== tt && n2.push(o2), this._d("polygon", n2, s2); + const s2 = this._o(e3), n2 = [], o2 = S3(t4, true, s2); + return s2.fill && ("solid" === s2.fillStyle ? n2.push(I2([t4], s2)) : n2.push(C2([t4], s2))), s2.stroke !== tt && n2.push(o2), this._d("polygon", n2, s2); } path(t4, e3) { const s2 = this._o(e3), n2 = []; if (!t4) return this._d("path", n2, s2); t4 = (t4 || "").replace(/\n/g, " ").replace(/(-\s)/g, "-").replace("/(ss)/g", " "); - const o2 = s2.fill && "transparent" !== s2.fill && s2.fill !== tt, a2 = s2.stroke !== tt, h2 = !!(s2.simplification && s2.simplification < 1), r2 = function(t5, e4, s3) { - const n3 = m(y2(b(t5))), o3 = []; - let a3 = [], h3 = [0, 0], r3 = []; + const o2 = s2.fill && "transparent" !== s2.fill && s2.fill !== tt, a2 = s2.stroke !== tt, h3 = !!(s2.simplification && s2.simplification < 1), r2 = (function(t5, e4, s3) { + const n3 = m2(y3(b2(t5))), o3 = []; + let a3 = [], h4 = [0, 0], r3 = []; const i3 = /* @__PURE__ */ __name(() => { r3.length >= 4 && a3.push(...Y2(r3, e4)), r3 = []; }, "i"), c3 = /* @__PURE__ */ __name(() => { @@ -40596,42 +39747,42 @@ ${text4} }, "c"); for (const { key: t6, data: e6 } of n3) switch (t6) { case "M": - c3(), h3 = [e6[0], e6[1]], a3.push(h3); + c3(), h4 = [e6[0], e6[1]], a3.push(h4); break; case "L": i3(), a3.push([e6[0], e6[1]]); break; case "C": if (!r3.length) { - const t7 = a3.length ? a3[a3.length - 1] : h3; + const t7 = a3.length ? a3[a3.length - 1] : h4; r3.push([t7[0], t7[1]]); } r3.push([e6[0], e6[1]]), r3.push([e6[2], e6[3]]), r3.push([e6[4], e6[5]]); break; case "Z": - i3(), a3.push([h3[0], h3[1]]); + i3(), a3.push([h4[0], h4[1]]); } if (c3(), !s3) return o3; - const l2 = []; + const l4 = []; for (const t6 of o3) { - const e6 = U(t6, s3); - e6.length && l2.push(e6); + const e6 = U2(t6, s3); + e6.length && l4.push(e6); } - return l2; - }(t4, 1, h2 ? 4 - 4 * (s2.simplification || 1) : (1 + s2.roughness) / 2), i2 = _(t4, s2); + return l4; + })(t4, 1, h3 ? 4 - 4 * (s2.simplification || 1) : (1 + s2.roughness) / 2), i2 = _2(t4, s2); if (o2) if ("solid" === s2.fillStyle) if (1 === r2.length) { - const e4 = _(t4, Object.assign(Object.assign({}, s2), { disableMultiStroke: true, roughness: s2.roughness ? s2.roughness + s2.fillShapeRoughnessGain : 0 })); + const e4 = _2(t4, Object.assign(Object.assign({}, s2), { disableMultiStroke: true, roughness: s2.roughness ? s2.roughness + s2.fillShapeRoughnessGain : 0 })); n2.push({ type: "fillPath", ops: this._mergedShape(e4.ops) }); - } else n2.push(I(r2, s2)); - else n2.push(C(r2, s2)); - return a2 && (h2 ? r2.forEach((t5) => { - n2.push(S2(t5, false, s2)); - }) : n2.push(i2)), this._d("path", n2, s2); + } else n2.push(I2(r2, s2)); + else n2.push(C2(r2, s2)); + return a2 && (h3 ? r2.forEach(((t5) => { + n2.push(S3(t5, false, s2)); + })) : n2.push(i2)), this._d("path", n2, s2); } opsToPath(t4, e3) { let s2 = ""; for (const n2 of t4.ops) { - const t5 = "number" == typeof e3 && e3 >= 0 ? n2.data.map((t6) => +t6.toFixed(e3)) : n2.data; + const t5 = "number" == typeof e3 && e3 >= 0 ? n2.data.map(((t6) => +t6.toFixed(e3))) : n2.data; switch (n2.op) { case "move": s2 += `M${t5[0]} ${t5[1]} `; @@ -40668,7 +39819,7 @@ ${text4} return s2 < 0 && (s2 = e3.strokeWidth / 2), { d: this.opsToPath(t4), stroke: e3.fill || tt, strokeWidth: s2, fill: tt }; } _mergedShape(t4) { - return t4.filter((t5, e3) => 0 === e3 || "move" !== t5.op); + return t4.filter(((t5, e3) => 0 === e3 || "move" !== t5.op)); } }; st = class { @@ -40701,7 +39852,7 @@ ${text4} _drawToContext(t4, e3, s2, n2 = "nonzero") { t4.beginPath(); for (const n3 of e3.ops) { - const e4 = "number" == typeof s2 && s2 >= 0 ? n3.data.map((t5) => +t5.toFixed(s2)) : n3.data; + const e4 = "number" == typeof s2 && s2 >= 0 ? n3.data.map(((t5) => +t5.toFixed(s2))) : n3.data; switch (n3.op) { case "move": t4.moveTo(e4[0], e4[1]); @@ -40745,8 +39896,8 @@ ${text4} const s2 = this.gen.polygon(t4, e3); return this.draw(s2), s2; } - arc(t4, e3, s2, n2, o2, a2, h2 = false, r2) { - const i2 = this.gen.arc(t4, e3, s2, n2, o2, a2, h2, r2); + arc(t4, e3, s2, n2, o2, a2, h3 = false, r2) { + const i2 = this.gen.arc(t4, e3, s2, n2, o2, a2, h3, r2); return this.draw(i2), i2; } curve(t4, e3) { @@ -40768,17 +39919,17 @@ ${text4} } draw(t4) { const e3 = t4.sets || [], s2 = t4.options || this.getDefaultOptions(), n2 = this.svg.ownerDocument || window.document, o2 = n2.createElementNS(nt, "g"), a2 = t4.options.fixedDecimalPlaceDigits; - for (const h2 of e3) { + for (const h3 of e3) { let e4 = null; - switch (h2.type) { + switch (h3.type) { case "path": - e4 = n2.createElementNS(nt, "path"), e4.setAttribute("d", this.opsToPath(h2, a2)), e4.setAttribute("stroke", s2.stroke), e4.setAttribute("stroke-width", s2.strokeWidth + ""), e4.setAttribute("fill", "none"), s2.strokeLineDash && e4.setAttribute("stroke-dasharray", s2.strokeLineDash.join(" ").trim()), s2.strokeLineDashOffset && e4.setAttribute("stroke-dashoffset", `${s2.strokeLineDashOffset}`); + e4 = n2.createElementNS(nt, "path"), e4.setAttribute("d", this.opsToPath(h3, a2)), e4.setAttribute("stroke", s2.stroke), e4.setAttribute("stroke-width", s2.strokeWidth + ""), e4.setAttribute("fill", "none"), s2.strokeLineDash && e4.setAttribute("stroke-dasharray", s2.strokeLineDash.join(" ").trim()), s2.strokeLineDashOffset && e4.setAttribute("stroke-dashoffset", `${s2.strokeLineDashOffset}`); break; case "fillPath": - e4 = n2.createElementNS(nt, "path"), e4.setAttribute("d", this.opsToPath(h2, a2)), e4.setAttribute("stroke", "none"), e4.setAttribute("stroke-width", "0"), e4.setAttribute("fill", s2.fill || ""), "curve" !== t4.shape && "polygon" !== t4.shape || e4.setAttribute("fill-rule", "evenodd"); + e4 = n2.createElementNS(nt, "path"), e4.setAttribute("d", this.opsToPath(h3, a2)), e4.setAttribute("stroke", "none"), e4.setAttribute("stroke-width", "0"), e4.setAttribute("fill", s2.fill || ""), "curve" !== t4.shape && "polygon" !== t4.shape || e4.setAttribute("fill-rule", "evenodd"); break; case "fillSketch": - e4 = this.fillSketch(n2, h2, s2); + e4 = this.fillSketch(n2, h3, s2); } e4 && o2.appendChild(e4); } @@ -40823,8 +39974,8 @@ ${text4} const s2 = this.gen.polygon(t4, e3); return this.draw(s2); } - arc(t4, e3, s2, n2, o2, a2, h2 = false, r2) { - const i2 = this.gen.arc(t4, e3, s2, n2, o2, a2, h2, r2); + arc(t4, e3, s2, n2, o2, a2, h3 = false, r2) { + const i2 = this.gen.arc(t4, e3, s2, n2, o2, a2, h3, r2); return this.draw(i2); } curve(t4, e3) { @@ -40853,11 +40004,11 @@ ${text4} const radius2 = 1; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, { fill: "black", stroke: "none", fillStyle: "solid" }); + const options2 = userNodeOverrides(node2, { fill: "black", stroke: "none", fillStyle: "solid" }); if (node2.look !== "handDrawn") { - options3.roughness = 0; + options2.roughness = 0; } - const roughNode = rc.circle(0, 0, radius2 * 2, options3); + const roughNode = rc.circle(0, 0, radius2 * 2, options2); const circleElem = shapeSvg.insert(() => roughNode, ":first-child"); circleElem.attr("class", "anchor").attr("style", handleUndefinedAttr(cssStyles)); updateNodeBounds(node2, circleElem); @@ -40911,8 +40062,8 @@ ${text4} const t4 = i2 / (numPoints - 1); const angle3 = startAngle + t4 * angleRange; const x5 = centerX + rx * Math.cos(angle3); - const y5 = centerY + ry * Math.sin(angle3); - points.push({ x: x5, y: y5 }); + const y6 = centerY + ry * Math.sin(angle3); + points.push({ x: x5, y: y6 }); } return points; } @@ -40920,26 +40071,26 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = bbox.width + node2.padding + 20; - const h2 = bbox.height + node2.padding; - const ry = h2 / 2; - const rx = ry / (2.5 + h2 / 50); + const w4 = bbox.width + node2.padding + 20; + const h3 = bbox.height + node2.padding; + const ry = h3 / 2; + const rx = ry / (2.5 + h3 / 50); const { cssStyles } = node2; const points = [ - { x: w3 / 2, y: -h2 / 2 }, - { x: -w3 / 2, y: -h2 / 2 }, - ...generateArcPoints(-w3 / 2, -h2 / 2, -w3 / 2, h2 / 2, rx, ry, false), - { x: w3 / 2, y: h2 / 2 }, - ...generateArcPoints(w3 / 2, h2 / 2, w3 / 2, -h2 / 2, rx, ry, true) + { x: w4 / 2, y: -h3 / 2 }, + { x: -w4 / 2, y: -h3 / 2 }, + ...generateArcPoints(-w4 / 2, -h3 / 2, -w4 / 2, h3 / 2, rx, ry, false), + { x: w4 / 2, y: h3 / 2 }, + ...generateArcPoints(w4 / 2, h3 / 2, w4 / 2, -h3 / 2, rx, ry, true) ]; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const bowTieRectPath = createPathFromPoints(points); - const bowTieRectShapePath = rc.path(bowTieRectPath, options3); + const bowTieRectShapePath = rc.path(bowTieRectPath, options2); const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, ":first-child"); bowTieRectShape.attr("class", "basic label-container"); if (cssStyles && node2.look !== "handDrawn") { @@ -40969,13 +40120,13 @@ ${text4} }); // src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts - function insertPolygonShape(parent4, w3, h2, points) { + function insertPolygonShape(parent4, w4, h3, points) { return parent4.insert("polygon", ":first-child").attr( "points", - points.map(function(d2) { - return d2.x + "," + d2.y; + points.map(function(d3) { + return d3.x + "," + d3.y; }).join(" ") - ).attr("class", "label-container").attr("transform", "translate(" + -w3 / 2 + "," + h2 / 2 + ")"); + ).attr("class", "label-container").attr("transform", "translate(" + -w4 / 2 + "," + h3 / 2 + ")"); } var init_insertPolygonShape = __esm({ "src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts"() { @@ -40989,12 +40140,12 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const h2 = bbox.height + node2.padding; + const h3 = bbox.height + node2.padding; const padding2 = 12; - const w3 = bbox.width + node2.padding + padding2; + const w4 = bbox.width + node2.padding + padding2; const left3 = 0; - const right3 = w3; - const top2 = -h2; + const right3 = w4; + const top2 = -h3; const bottom2 = 0; const points = [ { x: left3 + padding2, y: top2 }, @@ -41008,15 +40159,15 @@ ${text4} const { cssStyles } = node2; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); const pathData = createPathFromPoints(points); - const roughNode = rc.path(pathData, options3); - polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w3 / 2}, ${h2 / 2})`); + const roughNode = rc.path(pathData, options2); + polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w4 / 2}, ${h3 / 2})`); if (cssStyles) { polygon2.attr("style", cssStyles); } } else { - polygon2 = insertPolygonShape(shapeSvg, w3, h2, points); + polygon2 = insertPolygonShape(shapeSvg, w4, h3, points); } if (nodeStyles) { polygon2.attr("style", nodeStyles); @@ -41054,13 +40205,13 @@ ${text4} { x: -s2 / 2, y: 0 } ]; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const choicePath = createPathFromPoints(points); - const roughNode = rc.path(choicePath, options3); + const roughNode = rc.path(choicePath, options2); const choiceShape = shapeSvg.insert(() => roughNode, ":first-child"); if (cssStyles && node2.look !== "handDrawn") { choiceShape.selectAll("path").attr("style", cssStyles); @@ -41087,11 +40238,12 @@ ${text4} }); // src/rendering-util/rendering-elements/shapes/circle.ts - async function circle(parent4, node2) { + async function circle(parent4, node2, options2) { const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, halfPadding } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const radius2 = bbox.width / 2 + halfPadding; + const padding2 = options2?.padding ?? halfPadding; + const radius2 = bbox.width / 2 + padding2; let circleElem; const { cssStyles } = node2; if (node2.look === "handDrawn") { @@ -41104,6 +40256,10 @@ ${text4} circleElem = shapeSvg.insert("circle", ":first-child").attr("class", "basic label-container").attr("style", nodeStyles).attr("r", radius2).attr("cx", 0).attr("cy", 0); } updateNodeBounds(node2, circleElem); + node2.calcIntersect = function(bounds4, point8) { + const radius3 = bounds4.width / 2; + return intersect_default.circle(bounds4, radius3, point8); + }; node2.intersect = function(point8) { log.info("Circle intersect", node2, radius2, point8); return intersect_default.circle(node2, radius2, point8); @@ -41113,12 +40269,12 @@ ${text4} var init_circle = __esm({ "src/rendering-util/rendering-elements/shapes/circle.ts"() { "use strict"; + init_rough_esm(); init_logger(); - init_util(); + init_utils2(); init_intersect(); init_handDrawnShapeStyles(); - init_rough_esm(); - init_utils2(); + init_util(); __name(circle, "circle"); } }); @@ -41143,14 +40299,14 @@ ${text4} const radius2 = Math.max(30, node2?.width ?? 0); const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } - const circleNode = rc.circle(0, 0, radius2 * 2, options3); + const circleNode = rc.circle(0, 0, radius2 * 2, options2); const linePath = createLine(radius2); - const lineNode = rc.path(linePath, options3); + const lineNode = rc.path(linePath, options2); const crossedCircle2 = shapeSvg.insert(() => circleNode, ":first-child"); crossedCircle2.insert(() => lineNode); if (cssStyles && node2.look !== "handDrawn") { @@ -41190,8 +40346,8 @@ ${text4} for (let i2 = 0; i2 < numPoints; i2++) { const angle2 = startAngleRad + i2 * angleStep; const x5 = centerX + radius2 * Math.cos(angle2); - const y5 = centerY + radius2 * Math.sin(angle2); - points.push({ x: -x5, y: -y5 }); + const y6 = centerY + radius2 * Math.sin(angle2); + points.push({ x: -x5, y: -y6 }); } return points; } @@ -41199,41 +40355,41 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = bbox.width + (node2.padding ?? 0); - const h2 = bbox.height + (node2.padding ?? 0); - const radius2 = Math.max(5, h2 * 0.1); + const w4 = bbox.width + (node2.padding ?? 0); + const h3 = bbox.height + (node2.padding ?? 0); + const radius2 = Math.max(5, h3 * 0.1); const { cssStyles } = node2; const points = [ - ...generateCirclePoints2(w3 / 2, -h2 / 2, radius2, 30, -90, 0), - { x: -w3 / 2 - radius2, y: radius2 }, - ...generateCirclePoints2(w3 / 2 + radius2 * 2, -radius2, radius2, 20, -180, -270), - ...generateCirclePoints2(w3 / 2 + radius2 * 2, radius2, radius2, 20, -90, -180), - { x: -w3 / 2 - radius2, y: -h2 / 2 }, - ...generateCirclePoints2(w3 / 2, h2 / 2, radius2, 20, 0, 90) + ...generateCirclePoints2(w4 / 2, -h3 / 2, radius2, 30, -90, 0), + { x: -w4 / 2 - radius2, y: radius2 }, + ...generateCirclePoints2(w4 / 2 + radius2 * 2, -radius2, radius2, 20, -180, -270), + ...generateCirclePoints2(w4 / 2 + radius2 * 2, radius2, radius2, 20, -90, -180), + { x: -w4 / 2 - radius2, y: -h3 / 2 }, + ...generateCirclePoints2(w4 / 2, h3 / 2, radius2, 20, 0, 90) ]; const rectPoints = [ - { x: w3 / 2, y: -h2 / 2 - radius2 }, - { x: -w3 / 2, y: -h2 / 2 - radius2 }, - ...generateCirclePoints2(w3 / 2, -h2 / 2, radius2, 20, -90, 0), - { x: -w3 / 2 - radius2, y: -radius2 }, - ...generateCirclePoints2(w3 / 2 + w3 * 0.1, -radius2, radius2, 20, -180, -270), - ...generateCirclePoints2(w3 / 2 + w3 * 0.1, radius2, radius2, 20, -90, -180), - { x: -w3 / 2 - radius2, y: h2 / 2 }, - ...generateCirclePoints2(w3 / 2, h2 / 2, radius2, 20, 0, 90), - { x: -w3 / 2, y: h2 / 2 + radius2 }, - { x: w3 / 2, y: h2 / 2 + radius2 } + { x: w4 / 2, y: -h3 / 2 - radius2 }, + { x: -w4 / 2, y: -h3 / 2 - radius2 }, + ...generateCirclePoints2(w4 / 2, -h3 / 2, radius2, 20, -90, 0), + { x: -w4 / 2 - radius2, y: -radius2 }, + ...generateCirclePoints2(w4 / 2 + w4 * 0.1, -radius2, radius2, 20, -180, -270), + ...generateCirclePoints2(w4 / 2 + w4 * 0.1, radius2, radius2, 20, -90, -180), + { x: -w4 / 2 - radius2, y: h3 / 2 }, + ...generateCirclePoints2(w4 / 2, h3 / 2, radius2, 20, 0, 90), + { x: -w4 / 2, y: h3 / 2 + radius2 }, + { x: w4 / 2, y: h3 / 2 + radius2 } ]; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, { fill: "none" }); + const options2 = userNodeOverrides(node2, { fill: "none" }); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const curlyBraceLeftPath = createPathFromPoints(points); const newCurlyBracePath = curlyBraceLeftPath.replace("Z", ""); - const curlyBraceLeftNode = rc.path(newCurlyBracePath, options3); + const curlyBraceLeftNode = rc.path(newCurlyBracePath, options2); const rectPath = createPathFromPoints(rectPoints); - const rectShape = rc.path(rectPath, { ...options3 }); + const rectShape = rc.path(rectPath, { ...options2 }); const curlyBraceLeftShape = shapeSvg.insert("g", ":first-child"); curlyBraceLeftShape.insert(() => rectShape, ":first-child").attr("stroke-opacity", 0); curlyBraceLeftShape.insert(() => curlyBraceLeftNode, ":first-child"); @@ -41247,7 +40403,7 @@ ${text4} curlyBraceLeftShape.attr("transform", `translate(${radius2}, 0)`); label.attr( "transform", - `translate(${-w3 / 2 + radius2 - (bbox.x - (bbox.left ?? 0))},${-h2 / 2 + (node2.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w4 / 2 + radius2 - (bbox.x - (bbox.left ?? 0))},${-h3 / 2 + (node2.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node2, curlyBraceLeftShape); node2.intersect = function(point8) { @@ -41278,8 +40434,8 @@ ${text4} for (let i2 = 0; i2 < numPoints; i2++) { const angle2 = startAngleRad + i2 * angleStep; const x5 = centerX + radius2 * Math.cos(angle2); - const y5 = centerY + radius2 * Math.sin(angle2); - points.push({ x: x5, y: y5 }); + const y6 = centerY + radius2 * Math.sin(angle2); + points.push({ x: x5, y: y6 }); } return points; } @@ -41287,41 +40443,41 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = bbox.width + (node2.padding ?? 0); - const h2 = bbox.height + (node2.padding ?? 0); - const radius2 = Math.max(5, h2 * 0.1); + const w4 = bbox.width + (node2.padding ?? 0); + const h3 = bbox.height + (node2.padding ?? 0); + const radius2 = Math.max(5, h3 * 0.1); const { cssStyles } = node2; const points = [ - ...generateCirclePoints3(w3 / 2, -h2 / 2, radius2, 20, -90, 0), - { x: w3 / 2 + radius2, y: -radius2 }, - ...generateCirclePoints3(w3 / 2 + radius2 * 2, -radius2, radius2, 20, -180, -270), - ...generateCirclePoints3(w3 / 2 + radius2 * 2, radius2, radius2, 20, -90, -180), - { x: w3 / 2 + radius2, y: h2 / 2 }, - ...generateCirclePoints3(w3 / 2, h2 / 2, radius2, 20, 0, 90) + ...generateCirclePoints3(w4 / 2, -h3 / 2, radius2, 20, -90, 0), + { x: w4 / 2 + radius2, y: -radius2 }, + ...generateCirclePoints3(w4 / 2 + radius2 * 2, -radius2, radius2, 20, -180, -270), + ...generateCirclePoints3(w4 / 2 + radius2 * 2, radius2, radius2, 20, -90, -180), + { x: w4 / 2 + radius2, y: h3 / 2 }, + ...generateCirclePoints3(w4 / 2, h3 / 2, radius2, 20, 0, 90) ]; const rectPoints = [ - { x: -w3 / 2, y: -h2 / 2 - radius2 }, - { x: w3 / 2, y: -h2 / 2 - radius2 }, - ...generateCirclePoints3(w3 / 2, -h2 / 2, radius2, 20, -90, 0), - { x: w3 / 2 + radius2, y: -radius2 }, - ...generateCirclePoints3(w3 / 2 + radius2 * 2, -radius2, radius2, 20, -180, -270), - ...generateCirclePoints3(w3 / 2 + radius2 * 2, radius2, radius2, 20, -90, -180), - { x: w3 / 2 + radius2, y: h2 / 2 }, - ...generateCirclePoints3(w3 / 2, h2 / 2, radius2, 20, 0, 90), - { x: w3 / 2, y: h2 / 2 + radius2 }, - { x: -w3 / 2, y: h2 / 2 + radius2 } + { x: -w4 / 2, y: -h3 / 2 - radius2 }, + { x: w4 / 2, y: -h3 / 2 - radius2 }, + ...generateCirclePoints3(w4 / 2, -h3 / 2, radius2, 20, -90, 0), + { x: w4 / 2 + radius2, y: -radius2 }, + ...generateCirclePoints3(w4 / 2 + radius2 * 2, -radius2, radius2, 20, -180, -270), + ...generateCirclePoints3(w4 / 2 + radius2 * 2, radius2, radius2, 20, -90, -180), + { x: w4 / 2 + radius2, y: h3 / 2 }, + ...generateCirclePoints3(w4 / 2, h3 / 2, radius2, 20, 0, 90), + { x: w4 / 2, y: h3 / 2 + radius2 }, + { x: -w4 / 2, y: h3 / 2 + radius2 } ]; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, { fill: "none" }); + const options2 = userNodeOverrides(node2, { fill: "none" }); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const curlyBraceRightPath = createPathFromPoints(points); const newCurlyBracePath = curlyBraceRightPath.replace("Z", ""); - const curlyBraceRightNode = rc.path(newCurlyBracePath, options3); + const curlyBraceRightNode = rc.path(newCurlyBracePath, options2); const rectPath = createPathFromPoints(rectPoints); - const rectShape = rc.path(rectPath, { ...options3 }); + const rectShape = rc.path(rectPath, { ...options2 }); const curlyBraceRightShape = shapeSvg.insert("g", ":first-child"); curlyBraceRightShape.insert(() => rectShape, ":first-child").attr("stroke-opacity", 0); curlyBraceRightShape.insert(() => curlyBraceRightNode, ":first-child"); @@ -41335,7 +40491,7 @@ ${text4} curlyBraceRightShape.attr("transform", `translate(${-radius2}, 0)`); label.attr( "transform", - `translate(${-w3 / 2 + (node2.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h2 / 2 + (node2.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w4 / 2 + (node2.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h3 / 2 + (node2.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node2, curlyBraceRightShape); node2.intersect = function(point8) { @@ -41366,8 +40522,8 @@ ${text4} for (let i2 = 0; i2 < numPoints; i2++) { const angle2 = startAngleRad + i2 * angleStep; const x5 = centerX + radius2 * Math.cos(angle2); - const y5 = centerY + radius2 * Math.sin(angle2); - points.push({ x: -x5, y: -y5 }); + const y6 = centerY + radius2 * Math.sin(angle2); + points.push({ x: -x5, y: -y6 }); } return points; } @@ -41375,58 +40531,58 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = bbox.width + (node2.padding ?? 0); - const h2 = bbox.height + (node2.padding ?? 0); - const radius2 = Math.max(5, h2 * 0.1); + const w4 = bbox.width + (node2.padding ?? 0); + const h3 = bbox.height + (node2.padding ?? 0); + const radius2 = Math.max(5, h3 * 0.1); const { cssStyles } = node2; const leftCurlyBracePoints = [ - ...generateCirclePoints4(w3 / 2, -h2 / 2, radius2, 30, -90, 0), - { x: -w3 / 2 - radius2, y: radius2 }, - ...generateCirclePoints4(w3 / 2 + radius2 * 2, -radius2, radius2, 20, -180, -270), - ...generateCirclePoints4(w3 / 2 + radius2 * 2, radius2, radius2, 20, -90, -180), - { x: -w3 / 2 - radius2, y: -h2 / 2 }, - ...generateCirclePoints4(w3 / 2, h2 / 2, radius2, 20, 0, 90) + ...generateCirclePoints4(w4 / 2, -h3 / 2, radius2, 30, -90, 0), + { x: -w4 / 2 - radius2, y: radius2 }, + ...generateCirclePoints4(w4 / 2 + radius2 * 2, -radius2, radius2, 20, -180, -270), + ...generateCirclePoints4(w4 / 2 + radius2 * 2, radius2, radius2, 20, -90, -180), + { x: -w4 / 2 - radius2, y: -h3 / 2 }, + ...generateCirclePoints4(w4 / 2, h3 / 2, radius2, 20, 0, 90) ]; const rightCurlyBracePoints = [ - ...generateCirclePoints4(-w3 / 2 + radius2 + radius2 / 2, -h2 / 2, radius2, 20, -90, -180), - { x: w3 / 2 - radius2 / 2, y: radius2 }, - ...generateCirclePoints4(-w3 / 2 - radius2 / 2, -radius2, radius2, 20, 0, 90), - ...generateCirclePoints4(-w3 / 2 - radius2 / 2, radius2, radius2, 20, -90, 0), - { x: w3 / 2 - radius2 / 2, y: -radius2 }, - ...generateCirclePoints4(-w3 / 2 + radius2 + radius2 / 2, h2 / 2, radius2, 30, -180, -270) + ...generateCirclePoints4(-w4 / 2 + radius2 + radius2 / 2, -h3 / 2, radius2, 20, -90, -180), + { x: w4 / 2 - radius2 / 2, y: radius2 }, + ...generateCirclePoints4(-w4 / 2 - radius2 / 2, -radius2, radius2, 20, 0, 90), + ...generateCirclePoints4(-w4 / 2 - radius2 / 2, radius2, radius2, 20, -90, 0), + { x: w4 / 2 - radius2 / 2, y: -radius2 }, + ...generateCirclePoints4(-w4 / 2 + radius2 + radius2 / 2, h3 / 2, radius2, 30, -180, -270) ]; const rectPoints = [ - { x: w3 / 2, y: -h2 / 2 - radius2 }, - { x: -w3 / 2, y: -h2 / 2 - radius2 }, - ...generateCirclePoints4(w3 / 2, -h2 / 2, radius2, 20, -90, 0), - { x: -w3 / 2 - radius2, y: -radius2 }, - ...generateCirclePoints4(w3 / 2 + radius2 * 2, -radius2, radius2, 20, -180, -270), - ...generateCirclePoints4(w3 / 2 + radius2 * 2, radius2, radius2, 20, -90, -180), - { x: -w3 / 2 - radius2, y: h2 / 2 }, - ...generateCirclePoints4(w3 / 2, h2 / 2, radius2, 20, 0, 90), - { x: -w3 / 2, y: h2 / 2 + radius2 }, - { x: w3 / 2 - radius2 - radius2 / 2, y: h2 / 2 + radius2 }, - ...generateCirclePoints4(-w3 / 2 + radius2 + radius2 / 2, -h2 / 2, radius2, 20, -90, -180), - { x: w3 / 2 - radius2 / 2, y: radius2 }, - ...generateCirclePoints4(-w3 / 2 - radius2 / 2, -radius2, radius2, 20, 0, 90), - ...generateCirclePoints4(-w3 / 2 - radius2 / 2, radius2, radius2, 20, -90, 0), - { x: w3 / 2 - radius2 / 2, y: -radius2 }, - ...generateCirclePoints4(-w3 / 2 + radius2 + radius2 / 2, h2 / 2, radius2, 30, -180, -270) + { x: w4 / 2, y: -h3 / 2 - radius2 }, + { x: -w4 / 2, y: -h3 / 2 - radius2 }, + ...generateCirclePoints4(w4 / 2, -h3 / 2, radius2, 20, -90, 0), + { x: -w4 / 2 - radius2, y: -radius2 }, + ...generateCirclePoints4(w4 / 2 + radius2 * 2, -radius2, radius2, 20, -180, -270), + ...generateCirclePoints4(w4 / 2 + radius2 * 2, radius2, radius2, 20, -90, -180), + { x: -w4 / 2 - radius2, y: h3 / 2 }, + ...generateCirclePoints4(w4 / 2, h3 / 2, radius2, 20, 0, 90), + { x: -w4 / 2, y: h3 / 2 + radius2 }, + { x: w4 / 2 - radius2 - radius2 / 2, y: h3 / 2 + radius2 }, + ...generateCirclePoints4(-w4 / 2 + radius2 + radius2 / 2, -h3 / 2, radius2, 20, -90, -180), + { x: w4 / 2 - radius2 / 2, y: radius2 }, + ...generateCirclePoints4(-w4 / 2 - radius2 / 2, -radius2, radius2, 20, 0, 90), + ...generateCirclePoints4(-w4 / 2 - radius2 / 2, radius2, radius2, 20, -90, 0), + { x: w4 / 2 - radius2 / 2, y: -radius2 }, + ...generateCirclePoints4(-w4 / 2 + radius2 + radius2 / 2, h3 / 2, radius2, 30, -180, -270) ]; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, { fill: "none" }); + const options2 = userNodeOverrides(node2, { fill: "none" }); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints); const newLeftCurlyBracePath = leftCurlyBracePath.replace("Z", ""); - const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options3); + const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options2); const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints); const newRightCurlyBracePath = rightCurlyBracePath.replace("Z", ""); - const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options3); + const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options2); const rectPath = createPathFromPoints(rectPoints); - const rectShape = rc.path(rectPath, { ...options3 }); + const rectShape = rc.path(rectPath, { ...options2 }); const curlyBracesShape = shapeSvg.insert("g", ":first-child"); curlyBracesShape.insert(() => rectShape, ":first-child").attr("stroke-opacity", 0); curlyBracesShape.insert(() => leftCurlyBraceNode, ":first-child"); @@ -41441,7 +40597,7 @@ ${text4} curlyBracesShape.attr("transform", `translate(${radius2 - radius2 / 4}, 0)`); label.attr( "transform", - `translate(${-w3 / 2 + (node2.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h2 / 2 + (node2.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w4 / 2 + (node2.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h3 / 2 + (node2.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node2, curlyBracesShape); node2.intersect = function(point8) { @@ -41468,17 +40624,17 @@ ${text4} node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); const minWidth = 80, minHeight = 20; - const w3 = Math.max(minWidth, (bbox.width + (node2.padding ?? 0) * 2) * 1.25, node2?.width ?? 0); - const h2 = Math.max(minHeight, bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); - const radius2 = h2 / 2; + const w4 = Math.max(minWidth, (bbox.width + (node2.padding ?? 0) * 2) * 1.25, node2?.width ?? 0); + const h3 = Math.max(minHeight, bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const radius2 = h3 / 2; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } - const totalWidth = w3, totalHeight = h2; + const totalWidth = w4, totalHeight = h3; const rw = totalWidth - radius2; const tw = totalHeight / 4; const points = [ @@ -41490,7 +40646,7 @@ ${text4} ...generateCirclePoints(-rw, -totalHeight / 2, radius2, 50, 270, 90) ]; const pathData = createPathFromPoints(points); - const shapeNode = rc.path(pathData, options3); + const shapeNode = rc.path(pathData, options2); const polygon2 = shapeSvg.insert(() => shapeNode, ":first-child"); polygon2.attr("class", "basic label-container"); if (cssStyles && node2.look !== "handDrawn") { @@ -41499,7 +40655,7 @@ ${text4} if (nodeStyles && node2.look !== "handDrawn") { polygon2.selectChildren("path").attr("style", nodeStyles); } - polygon2.attr("transform", `translate(${-w3 / 2}, ${-h2 / 2})`); + polygon2.attr("transform", `translate(${-w4 / 2}, ${-h3 / 2})`); updateNodeBounds(node2, polygon2); node2.intersect = function(point8) { const pos = intersect_default.polygon(node2, points, point8); @@ -41523,16 +40679,16 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + node2.padding, node2.width ?? 0); - const rx = w3 / 2; - const ry = rx / (2.5 + w3 / 50); - const h2 = Math.max(bbox.height + ry + node2.padding, node2.height ?? 0); + const w4 = Math.max(bbox.width + node2.padding, node2.width ?? 0); + const rx = w4 / 2; + const ry = rx / (2.5 + w4 / 50); + const h3 = Math.max(bbox.height + ry + node2.padding, node2.height ?? 0); let cylinder3; const { cssStyles } = node2; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const outerPathData = createOuterCylinderPathD(0, 0, w3, h2, rx, ry); - const innerPathData = createInnerCylinderPathD(0, ry, w3, h2, rx, ry); + const outerPathData = createOuterCylinderPathD(0, 0, w4, h3, rx, ry); + const innerPathData = createInnerCylinderPathD(0, ry, w4, h3, rx, ry); const outerNode = rc.path(outerPathData, userNodeOverrides(node2, {})); const innerLine = rc.path(innerPathData, userNodeOverrides(node2, { fill: "none" })); cylinder3 = shapeSvg.insert(() => innerLine, ":first-child"); @@ -41542,11 +40698,11 @@ ${text4} cylinder3.attr("style", cssStyles); } } else { - const pathData = createCylinderPathD(0, 0, w3, h2, rx, ry); + const pathData = createCylinderPathD(0, 0, w4, h3, rx, ry); cylinder3 = shapeSvg.insert("path", ":first-child").attr("d", pathData).attr("class", "basic label-container").attr("style", handleUndefinedAttr(cssStyles)).attr("style", nodeStyles); } cylinder3.attr("label-offset-y", ry); - cylinder3.attr("transform", `translate(${-w3 / 2}, ${-(h2 / 2 + ry)})`); + cylinder3.attr("transform", `translate(${-w4 / 2}, ${-(h3 / 2 + ry)})`); updateNodeBounds(node2, cylinder3); label.attr( "transform", @@ -41556,15 +40712,15 @@ ${text4} const pos = intersect_default.rect(node2, point8); const x5 = pos.x - (node2.x ?? 0); if (rx != 0 && (Math.abs(x5) < (node2.width ?? 0) / 2 || Math.abs(x5) == (node2.width ?? 0) / 2 && Math.abs(pos.y - (node2.y ?? 0)) > (node2.height ?? 0) / 2 - ry)) { - let y5 = ry * ry * (1 - x5 * x5 / (rx * rx)); - if (y5 > 0) { - y5 = Math.sqrt(y5); + let y6 = ry * ry * (1 - x5 * x5 / (rx * rx)); + if (y6 > 0) { + y6 = Math.sqrt(y6); } - y5 = ry - y5; + y6 = ry - y6; if (point8.y - (node2.y ?? 0) > 0) { - y5 = -y5; + y6 = -y6; } - pos.y += y5; + pos.y += y6; } return pos; }; @@ -41579,9 +40735,9 @@ ${text4} init_handDrawnShapeStyles(); init_rough_esm(); init_utils2(); - createCylinderPathD = /* @__PURE__ */ __name((x5, y5, width3, height2, rx, ry) => { + createCylinderPathD = /* @__PURE__ */ __name((x5, y6, width3, height2, rx, ry) => { return [ - `M${x5},${y5 + ry}`, + `M${x5},${y6 + ry}`, `a${rx},${ry} 0,0,0 ${width3},0`, `a${rx},${ry} 0,0,0 ${-width3},0`, `l0,${height2}`, @@ -41589,17 +40745,17 @@ ${text4} `l0,${-height2}` ].join(" "); }, "createCylinderPathD"); - createOuterCylinderPathD = /* @__PURE__ */ __name((x5, y5, width3, height2, rx, ry) => { + createOuterCylinderPathD = /* @__PURE__ */ __name((x5, y6, width3, height2, rx, ry) => { return [ - `M${x5},${y5 + ry}`, - `M${x5 + width3},${y5 + ry}`, + `M${x5},${y6 + ry}`, + `M${x5 + width3},${y6 + ry}`, `a${rx},${ry} 0,0,0 ${-width3},0`, `l0,${height2}`, `a${rx},${ry} 0,0,0 ${width3},0`, `l0,${-height2}` ].join(" "); }, "createOuterCylinderPathD"); - createInnerCylinderPathD = /* @__PURE__ */ __name((x5, y5, width3, height2, rx, ry) => { + createInnerCylinderPathD = /* @__PURE__ */ __name((x5, y6, width3, height2, rx, ry) => { return [`M${x5 - width3 / 2},${-height2 / 2}`, `a${rx},${ry} 0,0,0 ${width3},0`].join(" "); }, "createInnerCylinderPathD"); __name(cylinder, "cylinder"); @@ -41611,30 +40767,30 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; - const rectOffset = h2 * 0.2; - const x5 = -w3 / 2; - const y5 = -h2 / 2 - rectOffset / 2; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; + const rectOffset = h3 * 0.2; + const x5 = -w4 / 2; + const y6 = -h3 / 2 - rectOffset / 2; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const pts2 = [ - { x: x5, y: y5 + rectOffset }, - { x: -x5, y: y5 + rectOffset }, - { x: -x5, y: -y5 }, - { x: x5, y: -y5 }, - { x: x5, y: y5 }, - { x: -x5, y: y5 }, - { x: -x5, y: y5 + rectOffset } + { x: x5, y: y6 + rectOffset }, + { x: -x5, y: y6 + rectOffset }, + { x: -x5, y: -y6 }, + { x: x5, y: -y6 }, + { x: x5, y: y6 }, + { x: -x5, y: y6 }, + { x: -x5, y: y6 + rectOffset } ]; const poly = rc.polygon( pts2.map((p3) => [p3.x, p3.y]), - options3 + options2 ); const polygon2 = shapeSvg.insert(() => poly, ":first-child"); polygon2.attr("class", "basic label-container"); @@ -41646,7 +40802,7 @@ ${text4} } label.attr( "transform", - `translate(${x5 + (node2.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y5 + rectOffset + (node2.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${x5 + (node2.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y6 + rectOffset + (node2.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node2, polygon2); node2.intersect = function(point8) { @@ -41724,11 +40880,11 @@ ${text4} const { cssStyles } = node2; const rc = at.svg(shapeSvg); const { nodeBorder } = themeVariables; - const options3 = userNodeOverrides(node2, { fillStyle: "solid" }); + const options2 = userNodeOverrides(node2, { fillStyle: "solid" }); if (node2.look !== "handDrawn") { - options3.roughness = 0; + options2.roughness = 0; } - const circleNode = rc.circle(0, 0, radius2 * 2, options3); + const circleNode = rc.circle(0, 0, radius2 * 2, options2); const filledCircle2 = shapeSvg.insert(() => circleNode, ":first-child"); filledCircle2.selectAll("path").attr("style", `fill: ${nodeBorder} !important;`); if (cssStyles && cssStyles.length > 0 && node2.look !== "handDrawn") { @@ -41762,36 +40918,36 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = bbox.width + (node2.padding ?? 0); - const h2 = w3 + bbox.height; - const tw = w3 + bbox.height; + const w4 = bbox.width + (node2.padding ?? 0); + const h3 = w4 + bbox.height; + const tw = w4 + bbox.height; const points = [ - { x: 0, y: -h2 }, - { x: tw, y: -h2 }, + { x: 0, y: -h3 }, + { x: tw, y: -h3 }, { x: tw / 2, y: 0 } ]; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const pathData = createPathFromPoints(points); - const roughNode = rc.path(pathData, options3); - const flippedTriangle2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-h2 / 2}, ${h2 / 2})`); + const roughNode = rc.path(pathData, options2); + const flippedTriangle2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-h3 / 2}, ${h3 / 2})`); if (cssStyles && node2.look !== "handDrawn") { flippedTriangle2.selectChildren("path").attr("style", cssStyles); } if (nodeStyles && node2.look !== "handDrawn") { flippedTriangle2.selectChildren("path").attr("style", nodeStyles); } - node2.width = w3; - node2.height = h2; + node2.width = w4; + node2.height = h3; updateNodeBounds(node2, flippedTriangle2); label.attr( "transform", - `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h2 / 2 + (node2.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})` + `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h3 / 2 + (node2.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})` ); node2.intersect = function(point8) { log.info("Triangle intersect", node2, points, point8); @@ -41813,7 +40969,7 @@ ${text4} }); // src/rendering-util/rendering-elements/shapes/forkJoin.ts - function forkJoin(parent4, node2, { dir: dir2, config: { state: state4, themeVariables } }) { + function forkJoin(parent4, node2, { dir: dir2, config: { state: state3, themeVariables } }) { const { nodeStyles } = styles2String(node2); node2.label = ""; const shapeSvg = parent4.insert("g").attr("class", getNodeClasses(node2)).attr("id", node2.domId ?? node2.id); @@ -41825,17 +40981,17 @@ ${text4} height2 = Math.max(70, node2?.height ?? 0); } const x5 = -1 * width3 / 2; - const y5 = -1 * height2 / 2; + const y6 = -1 * height2 / 2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, { + const options2 = userNodeOverrides(node2, { stroke: themeVariables.lineColor, fill: themeVariables.lineColor }); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } - const roughNode = rc.rectangle(x5, y5, width3, height2, options3); + const roughNode = rc.rectangle(x5, y6, width3, height2, options2); const shape = shapeSvg.insert(() => roughNode, ":first-child"); if (cssStyles && node2.look !== "handDrawn") { shape.selectAll("path").attr("style", cssStyles); @@ -41844,7 +41000,7 @@ ${text4} shape.selectAll("path").attr("style", nodeStyles); } updateNodeBounds(node2, shape); - const padding2 = state4?.padding ?? 0; + const padding2 = state3?.padding ?? 0; if (node2.width && node2.height) { node2.width += padding2 / 2 || 0; node2.height += padding2 / 2 || 0; @@ -41871,25 +41027,25 @@ ${text4} node2.labelStyle = labelStyles; const minWidth = 80, minHeight = 50; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(minWidth, bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(minHeight, bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); - const radius2 = h2 / 2; + const w4 = Math.max(minWidth, bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(minHeight, bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const radius2 = h3 / 2; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const points = [ - { x: -w3 / 2, y: -h2 / 2 }, - { x: w3 / 2 - radius2, y: -h2 / 2 }, - ...generateCirclePoints(-w3 / 2 + radius2, 0, radius2, 50, 90, 270), - { x: w3 / 2 - radius2, y: h2 / 2 }, - { x: -w3 / 2, y: h2 / 2 } + { x: -w4 / 2, y: -h3 / 2 }, + { x: w4 / 2 - radius2, y: -h3 / 2 }, + ...generateCirclePoints(-w4 / 2 + radius2, 0, radius2, 50, 90, 270), + { x: w4 / 2 - radius2, y: h3 / 2 }, + { x: -w4 / 2, y: h3 / 2 } ]; const pathData = createPathFromPoints(points); - const shapeNode = rc.path(pathData, options3); + const shapeNode = rc.path(pathData, options2); const polygon2 = shapeSvg.insert(() => shapeNode, ":first-child"); polygon2.attr("class", "basic label-container"); if (cssStyles && node2.look !== "handDrawn") { @@ -41923,44 +41079,49 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const f2 = 4; - const h2 = bbox.height + node2.padding; - const m2 = h2 / f2; - const w3 = bbox.width + 2 * m2 + node2.padding; + const h3 = bbox.height + (node2.padding ?? 0); + const w4 = bbox.width + (node2.padding ?? 0) * 2.5; + const { cssStyles } = node2; + const rc = at.svg(shapeSvg); + const options2 = userNodeOverrides(node2, {}); + if (node2.look !== "handDrawn") { + options2.roughness = 0; + options2.fillStyle = "solid"; + } + let halfWidth = w4 / 2; + const m3 = halfWidth / 6; + halfWidth = halfWidth + m3; + const halfHeight = h3 / 2; + const fixedLength = halfHeight / 2; + const deducedWidth = halfWidth - fixedLength; const points = [ - { x: m2, y: 0 }, - { x: w3 - m2, y: 0 }, - { x: w3, y: -h2 / 2 }, - { x: w3 - m2, y: -h2 }, - { x: m2, y: -h2 }, - { x: 0, y: -h2 / 2 } + { x: -deducedWidth, y: -halfHeight }, + { x: 0, y: -halfHeight }, + { x: deducedWidth, y: -halfHeight }, + { x: halfWidth, y: 0 }, + { x: deducedWidth, y: halfHeight }, + { x: 0, y: halfHeight }, + { x: -deducedWidth, y: halfHeight }, + { x: -halfWidth, y: 0 } ]; - let polygon2; - const { cssStyles } = node2; - if (node2.look === "handDrawn") { - const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); - const pathData = createHexagonPathD(0, 0, w3, h2, m2); - const roughNode = rc.path(pathData, options3); - polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w3 / 2}, ${h2 / 2})`); - if (cssStyles) { - polygon2.attr("style", cssStyles); - } - } else { - polygon2 = insertPolygonShape(shapeSvg, w3, h2, points); + const pathData = createPathFromPoints(points); + const shapeNode = rc.path(pathData, options2); + const polygon2 = shapeSvg.insert(() => shapeNode, ":first-child"); + polygon2.attr("class", "basic label-container"); + if (cssStyles && node2.look !== "handDrawn") { + polygon2.selectChildren("path").attr("style", cssStyles); } - if (nodeStyles) { - polygon2.attr("style", nodeStyles); + if (nodeStyles && node2.look !== "handDrawn") { + polygon2.selectChildren("path").attr("style", nodeStyles); } - node2.width = w3; - node2.height = h2; + node2.width = w4; + node2.height = h3; updateNodeBounds(node2, polygon2); node2.intersect = function(point8) { return intersect_default.polygon(node2, points, point8); }; return shapeSvg; } - var createHexagonPathD; var init_hexagon = __esm({ "src/rendering-util/rendering-elements/shapes/hexagon.ts"() { "use strict"; @@ -41968,18 +41129,6 @@ ${text4} init_intersect(); init_handDrawnShapeStyles(); init_rough_esm(); - init_insertPolygonShape(); - createHexagonPathD = /* @__PURE__ */ __name((x5, y5, width3, height2, m2) => { - return [ - `M${x5 + m2},${y5}`, - `L${x5 + width3 - m2},${y5}`, - `L${x5 + width3},${y5 - height2 / 2}`, - `L${x5 + width3 - m2},${y5 - height2}`, - `L${x5 + m2},${y5 - height2}`, - `L${x5},${y5 - height2 / 2}`, - "Z" - ].join(" "); - }, "createHexagonPathD"); __name(hexagon, "hexagon"); } }); @@ -41990,23 +41139,23 @@ ${text4} node2.label = ""; node2.labelStyle = labelStyles; const { shapeSvg } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(30, node2?.width ?? 0); - const h2 = Math.max(30, node2?.height ?? 0); + const w4 = Math.max(30, node2?.width ?? 0); + const h3 = Math.max(30, node2?.height ?? 0); const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const points = [ { x: 0, y: 0 }, - { x: w3, y: 0 }, - { x: 0, y: h2 }, - { x: w3, y: h2 } + { x: w4, y: 0 }, + { x: 0, y: h3 }, + { x: w4, y: h3 } ]; const pathData = createPathFromPoints(points); - const shapeNode = rc.path(pathData, options3); + const shapeNode = rc.path(pathData, options2); const polygon2 = shapeSvg.insert(() => shapeNode, ":first-child"); polygon2.attr("class", "basic label-container"); if (cssStyles && node2.look !== "handDrawn") { @@ -42015,7 +41164,7 @@ ${text4} if (nodeStyles && node2.look !== "handDrawn") { polygon2.selectChildren("path").attr("style", nodeStyles); } - polygon2.attr("transform", `translate(${-w3 / 2}, ${-h2 / 2})`); + polygon2.attr("transform", `translate(${-w4 / 2}, ${-h3 / 2})`); updateNodeBounds(node2, polygon2); node2.intersect = function(point8) { log.info("Pill intersect", node2, { points }); @@ -42052,19 +41201,19 @@ ${text4} const { nodeBorder } = themeVariables; const { stylesMap } = compileStyles(node2); const x5 = -width3 / 2; - const y5 = -height2 / 2; + const y6 = -height2 / 2; const labelPadding = node2.label ? 8 : 0; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, { stroke: "none", fill: "none" }); + const options2 = userNodeOverrides(node2, { stroke: "none", fill: "none" }); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } - const iconNode = rc.rectangle(x5, y5, width3, height2, options3); + const iconNode = rc.rectangle(x5, y6, width3, height2, options2); const outerWidth = Math.max(width3, bbox.width); const outerHeight = height2 + bbox.height + labelPadding; const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, { - ...options3, + ...options2, fill: "transparent", stroke: "none" }); @@ -42165,13 +41314,13 @@ ${text4} const { nodeBorder, mainBkg } = themeVariables; const { stylesMap } = compileStyles(node2); const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const fill = stylesMap.get("fill"); - options3.stroke = fill ?? mainBkg; + options2.stroke = fill ?? mainBkg; const iconElem = shapeSvg.append("g"); if (node2.icon) { iconElem.html( @@ -42188,11 +41337,11 @@ ${text4} const iconX = iconBBox.x; const iconY = iconBBox.y; const diameter = Math.max(iconWidth, iconHeight) * Math.SQRT2 + padding2 * 2; - const iconNode = rc.circle(0, 0, diameter, options3); + const iconNode = rc.circle(0, 0, diameter, options2); const outerWidth = Math.max(diameter, bbox.width); const outerHeight = diameter + bbox.height + labelPadding; const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, { - ...options3, + ...options2, fill: "transparent", stroke: "none" }); @@ -42237,10 +41386,10 @@ ${text4} var init_roundedRectPath = __esm({ "src/rendering-util/rendering-elements/shapes/roundedRectPath.ts"() { "use strict"; - createRoundedRectPathD = /* @__PURE__ */ __name((x5, y5, totalWidth, totalHeight, radius2) => [ + createRoundedRectPathD = /* @__PURE__ */ __name((x5, y6, totalWidth, totalHeight, radius2) => [ "M", x5 + radius2, - y5, + y6, // Move to the first point "H", x5 + totalWidth - radius2, @@ -42252,10 +41401,10 @@ ${text4} 0, 1, x5 + totalWidth, - y5 + radius2, + y6 + radius2, // Draw arc to the right top corner "V", - y5 + totalHeight - radius2, + y6 + totalHeight - radius2, // Draw vertical line down to the beginning of the right bottom corner "A", radius2, @@ -42264,7 +41413,7 @@ ${text4} 0, 1, x5 + totalWidth - radius2, - y5 + totalHeight, + y6 + totalHeight, // Draw arc to the right bottom corner "H", x5 + radius2, @@ -42276,10 +41425,10 @@ ${text4} 0, 1, x5, - y5 + totalHeight - radius2, + y6 + totalHeight - radius2, // Draw arc to the left bottom corner "V", - y5 + radius2, + y6 + radius2, // Draw vertical line up to the beginning of the left top corner "A", radius2, @@ -42288,7 +41437,7 @@ ${text4} 0, 1, x5 + radius2, - y5, + y6, // Draw arc to the left top corner "Z" // Close the path @@ -42316,21 +41465,21 @@ ${text4} const { nodeBorder, mainBkg } = themeVariables; const { stylesMap } = compileStyles(node2); const x5 = -width3 / 2; - const y5 = -height2 / 2; + const y6 = -height2 / 2; const labelPadding = node2.label ? 8 : 0; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const fill = stylesMap.get("fill"); - options3.stroke = fill ?? mainBkg; - const iconNode = rc.path(createRoundedRectPathD(x5, y5, width3, height2, 5), options3); + options2.stroke = fill ?? mainBkg; + const iconNode = rc.path(createRoundedRectPathD(x5, y6, width3, height2, 5), options2); const outerWidth = Math.max(width3, bbox.width); const outerHeight = height2 + bbox.height + labelPadding; const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, { - ...options3, + ...options2, fill: "transparent", stroke: "none" }); @@ -42436,21 +41585,21 @@ ${text4} const { nodeBorder, mainBkg } = themeVariables; const { stylesMap } = compileStyles(node2); const x5 = -width3 / 2; - const y5 = -height2 / 2; + const y6 = -height2 / 2; const labelPadding = node2.label ? 8 : 0; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const fill = stylesMap.get("fill"); - options3.stroke = fill ?? mainBkg; - const iconNode = rc.path(createRoundedRectPathD(x5, y5, width3, height2, 0.1), options3); + options2.stroke = fill ?? mainBkg; + const iconNode = rc.path(createRoundedRectPathD(x5, y6, width3, height2, 0.1), options2); const outerWidth = Math.max(width3, bbox.width); const outerHeight = height2 + bbox.height + labelPadding; const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, { - ...options3, + ...options2, fill: "transparent", stroke: "none" }); @@ -42558,19 +41707,19 @@ ${text4} const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, "image-shape default"); const topLabel = node2.pos === "t"; const x5 = -imageWidth / 2; - const y5 = -imageHeight / 2; + const y6 = -imageHeight / 2; const labelPadding = node2.label ? 8 : 0; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } - const imageNode = rc.rectangle(x5, y5, imageWidth, imageHeight, options3); + const imageNode = rc.rectangle(x5, y6, imageWidth, imageHeight, options2); const outerWidth = Math.max(imageWidth, bbox.width); const outerHeight = imageHeight + bbox.height + labelPadding; const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, { - ...options3, + ...options2, fill: "none", stroke: "none" }); @@ -42650,33 +41799,33 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const w4 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); const points = [ { x: 0, y: 0 }, - { x: w3, y: 0 }, - { x: w3 + 3 * h2 / 6, y: -h2 }, - { x: -3 * h2 / 6, y: -h2 } + { x: w4, y: 0 }, + { x: w4 + 3 * h3 / 6, y: -h3 }, + { x: -3 * h3 / 6, y: -h3 } ]; let polygon2; const { cssStyles } = node2; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); const pathData = createPathFromPoints(points); - const roughNode = rc.path(pathData, options3); - polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w3 / 2}, ${h2 / 2})`); + const roughNode = rc.path(pathData, options2); + polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w4 / 2}, ${h3 / 2})`); if (cssStyles) { polygon2.attr("style", cssStyles); } } else { - polygon2 = insertPolygonShape(shapeSvg, w3, h2, points); + polygon2 = insertPolygonShape(shapeSvg, w4, h3, points); } if (nodeStyles) { polygon2.attr("style", nodeStyles); } - node2.width = w3; - node2.height = h2; + node2.width = w4; + node2.height = h3; updateNodeBounds(node2, polygon2); node2.intersect = function(point8) { return intersect_default.polygon(node2, points, point8); @@ -42696,32 +41845,35 @@ ${text4} }); // src/rendering-util/rendering-elements/shapes/drawRect.ts - async function drawRect3(parent4, node2, options3) { + async function drawRect3(parent4, node2, options2) { const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const totalWidth = Math.max(bbox.width + options3.labelPaddingX * 2, node2?.width || 0); - const totalHeight = Math.max(bbox.height + options3.labelPaddingY * 2, node2?.height || 0); + const totalWidth = Math.max(bbox.width + options2.labelPaddingX * 2, node2?.width || 0); + const totalHeight = Math.max(bbox.height + options2.labelPaddingY * 2, node2?.height || 0); const x5 = -totalWidth / 2; - const y5 = -totalHeight / 2; + const y6 = -totalHeight / 2; let rect3; let { rx, ry } = node2; const { cssStyles } = node2; - if (options3?.rx && options3.ry) { - rx = options3.rx; - ry = options3.ry; + if (options2?.rx && options2.ry) { + rx = options2.rx; + ry = options2.ry; } if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options4 = userNodeOverrides(node2, {}); - const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x5, y5, totalWidth, totalHeight, rx || 0), options4) : rc.rectangle(x5, y5, totalWidth, totalHeight, options4); + const options3 = userNodeOverrides(node2, {}); + const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x5, y6, totalWidth, totalHeight, rx || 0), options3) : rc.rectangle(x5, y6, totalWidth, totalHeight, options3); rect3 = shapeSvg.insert(() => roughNode, ":first-child"); rect3.attr("class", "basic label-container").attr("style", handleUndefinedAttr(cssStyles)); } else { rect3 = shapeSvg.insert("rect", ":first-child"); - rect3.attr("class", "basic label-container").attr("style", nodeStyles).attr("rx", handleUndefinedAttr(rx)).attr("ry", handleUndefinedAttr(ry)).attr("x", x5).attr("y", y5).attr("width", totalWidth).attr("height", totalHeight); + rect3.attr("class", "basic label-container").attr("style", nodeStyles).attr("rx", handleUndefinedAttr(rx)).attr("ry", handleUndefinedAttr(ry)).attr("x", x5).attr("y", y6).attr("width", totalWidth).attr("height", totalHeight); } updateNodeBounds(node2, rect3); + node2.calcIntersect = function(bounds4, point8) { + return intersect_default.rect(bounds4, point8); + }; node2.intersect = function(point8) { return intersect_default.rect(node2, point8); }; @@ -42773,33 +41925,33 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0), node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0), node2?.height ?? 0); + const w4 = Math.max(bbox.width + (node2.padding ?? 0), node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0), node2?.height ?? 0); const points = [ { x: 0, y: 0 }, - { x: w3 + 3 * h2 / 6, y: 0 }, - { x: w3, y: -h2 }, - { x: -(3 * h2) / 6, y: -h2 } + { x: w4 + 3 * h3 / 6, y: 0 }, + { x: w4, y: -h3 }, + { x: -(3 * h3) / 6, y: -h3 } ]; let polygon2; const { cssStyles } = node2; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); const pathData = createPathFromPoints(points); - const roughNode = rc.path(pathData, options3); - polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w3 / 2}, ${h2 / 2})`); + const roughNode = rc.path(pathData, options2); + polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w4 / 2}, ${h3 / 2})`); if (cssStyles) { polygon2.attr("style", cssStyles); } } else { - polygon2 = insertPolygonShape(shapeSvg, w3, h2, points); + polygon2 = insertPolygonShape(shapeSvg, w4, h3, points); } if (nodeStyles) { polygon2.attr("style", nodeStyles); } - node2.width = w3; - node2.height = h2; + node2.width = w4; + node2.height = h3; updateNodeBounds(node2, polygon2); node2.intersect = function(point8) { return intersect_default.polygon(node2, points, point8); @@ -42823,33 +41975,33 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0), node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0), node2?.height ?? 0); + const w4 = Math.max(bbox.width + (node2.padding ?? 0), node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0), node2?.height ?? 0); const points = [ - { x: -3 * h2 / 6, y: 0 }, - { x: w3, y: 0 }, - { x: w3 + 3 * h2 / 6, y: -h2 }, - { x: 0, y: -h2 } + { x: -3 * h3 / 6, y: 0 }, + { x: w4, y: 0 }, + { x: w4 + 3 * h3 / 6, y: -h3 }, + { x: 0, y: -h3 } ]; let polygon2; const { cssStyles } = node2; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); const pathData = createPathFromPoints(points); - const roughNode = rc.path(pathData, options3); - polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w3 / 2}, ${h2 / 2})`); + const roughNode = rc.path(pathData, options2); + polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w4 / 2}, ${h3 / 2})`); if (cssStyles) { polygon2.attr("style", cssStyles); } } else { - polygon2 = insertPolygonShape(shapeSvg, w3, h2, points); + polygon2 = insertPolygonShape(shapeSvg, w4, h3, points); } if (nodeStyles) { polygon2.attr("style", nodeStyles); } - node2.width = w3; - node2.height = h2; + node2.width = w4; + node2.height = h3; updateNodeBounds(node2, polygon2); node2.intersect = function(point8) { return intersect_default.polygon(node2, points, point8); @@ -42887,13 +42039,13 @@ ${text4} { x: 2 * gap, y: height2 - gap / 2 } ]; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const linePath = createPathFromPoints(points); - const lineNode = rc.path(linePath, options3); + const lineNode = rc.path(linePath, options2); const lightningBolt2 = shapeSvg.insert(() => lineNode, ":first-child"); if (cssStyles && node2.look !== "handDrawn") { lightningBolt2.selectAll("path").attr("style", cssStyles); @@ -42928,20 +42080,20 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0), node2.width ?? 0); - const rx = w3 / 2; - const ry = rx / (2.5 + w3 / 50); - const h2 = Math.max(bbox.height + ry + (node2.padding ?? 0), node2.height ?? 0); - const outerOffset = h2 * 0.1; + const w4 = Math.max(bbox.width + (node2.padding ?? 0), node2.width ?? 0); + const rx = w4 / 2; + const ry = rx / (2.5 + w4 / 50); + const h3 = Math.max(bbox.height + ry + (node2.padding ?? 0), node2.height ?? 0); + const outerOffset = h3 * 0.1; let cylinder3; const { cssStyles } = node2; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const outerPathData = createOuterCylinderPathD2(0, 0, w3, h2, rx, ry, outerOffset); - const innerPathData = createInnerCylinderPathD2(0, ry, w3, h2, rx, ry); - const options3 = userNodeOverrides(node2, {}); - const outerNode = rc.path(outerPathData, options3); - const innerLine = rc.path(innerPathData, options3); + const outerPathData = createOuterCylinderPathD2(0, 0, w4, h3, rx, ry, outerOffset); + const innerPathData = createInnerCylinderPathD2(0, ry, w4, h3, rx, ry); + const options2 = userNodeOverrides(node2, {}); + const outerNode = rc.path(outerPathData, options2); + const innerLine = rc.path(innerPathData, options2); const innerLineEl = shapeSvg.insert(() => innerLine, ":first-child"); innerLineEl.attr("class", "line"); cylinder3 = shapeSvg.insert(() => outerNode, ":first-child"); @@ -42950,11 +42102,11 @@ ${text4} cylinder3.attr("style", cssStyles); } } else { - const pathData = createCylinderPathD2(0, 0, w3, h2, rx, ry, outerOffset); + const pathData = createCylinderPathD2(0, 0, w4, h3, rx, ry, outerOffset); cylinder3 = shapeSvg.insert("path", ":first-child").attr("d", pathData).attr("class", "basic label-container").attr("style", handleUndefinedAttr(cssStyles)).attr("style", nodeStyles); } cylinder3.attr("label-offset-y", ry); - cylinder3.attr("transform", `translate(${-w3 / 2}, ${-(h2 / 2 + ry)})`); + cylinder3.attr("transform", `translate(${-w4 / 2}, ${-(h3 / 2 + ry)})`); updateNodeBounds(node2, cylinder3); label.attr( "transform", @@ -42964,15 +42116,15 @@ ${text4} const pos = intersect_default.rect(node2, point8); const x5 = pos.x - (node2.x ?? 0); if (rx != 0 && (Math.abs(x5) < (node2.width ?? 0) / 2 || Math.abs(x5) == (node2.width ?? 0) / 2 && Math.abs(pos.y - (node2.y ?? 0)) > (node2.height ?? 0) / 2 - ry)) { - let y5 = ry * ry * (1 - x5 * x5 / (rx * rx)); - if (y5 > 0) { - y5 = Math.sqrt(y5); + let y6 = ry * ry * (1 - x5 * x5 / (rx * rx)); + if (y6 > 0) { + y6 = Math.sqrt(y6); } - y5 = ry - y5; + y6 = ry - y6; if (point8.y - (node2.y ?? 0) > 0) { - y5 = -y5; + y6 = -y6; } - pos.y += y5; + pos.y += y6; } return pos; }; @@ -42987,31 +42139,31 @@ ${text4} init_handDrawnShapeStyles(); init_rough_esm(); init_utils2(); - createCylinderPathD2 = /* @__PURE__ */ __name((x5, y5, width3, height2, rx, ry, outerOffset) => { + createCylinderPathD2 = /* @__PURE__ */ __name((x5, y6, width3, height2, rx, ry, outerOffset) => { return [ - `M${x5},${y5 + ry}`, + `M${x5},${y6 + ry}`, `a${rx},${ry} 0,0,0 ${width3},0`, `a${rx},${ry} 0,0,0 ${-width3},0`, `l0,${height2}`, `a${rx},${ry} 0,0,0 ${width3},0`, `l0,${-height2}`, - `M${x5},${y5 + ry + outerOffset}`, + `M${x5},${y6 + ry + outerOffset}`, `a${rx},${ry} 0,0,0 ${width3},0` ].join(" "); }, "createCylinderPathD"); - createOuterCylinderPathD2 = /* @__PURE__ */ __name((x5, y5, width3, height2, rx, ry, outerOffset) => { + createOuterCylinderPathD2 = /* @__PURE__ */ __name((x5, y6, width3, height2, rx, ry, outerOffset) => { return [ - `M${x5},${y5 + ry}`, - `M${x5 + width3},${y5 + ry}`, + `M${x5},${y6 + ry}`, + `M${x5 + width3},${y6 + ry}`, `a${rx},${ry} 0,0,0 ${-width3},0`, `l0,${height2}`, `a${rx},${ry} 0,0,0 ${width3},0`, `l0,${-height2}`, - `M${x5},${y5 + ry + outerOffset}`, + `M${x5},${y6 + ry + outerOffset}`, `a${rx},${ry} 0,0,0 ${width3},0` ].join(" "); }, "createOuterCylinderPathD"); - createInnerCylinderPathD2 = /* @__PURE__ */ __name((x5, y5, width3, height2, rx, ry) => { + createInnerCylinderPathD2 = /* @__PURE__ */ __name((x5, y6, width3, height2, rx, ry) => { return [`M${x5 - width3 / 2},${-height2 / 2}`, `a${rx},${ry} 0,0,0 ${width3},0`].join(" "); }, "createInnerCylinderPathD"); __name(linedCylinder, "linedCylinder"); @@ -43023,37 +42175,37 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); - const waveAmplitude = h2 / 4; - const finalH = h2 + waveAmplitude; + const w4 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const waveAmplitude = h3 / 4; + const finalH = h3 + waveAmplitude; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const points = [ - { x: -w3 / 2 - w3 / 2 * 0.1, y: -finalH / 2 }, - { x: -w3 / 2 - w3 / 2 * 0.1, y: finalH / 2 }, + { x: -w4 / 2 - w4 / 2 * 0.1, y: -finalH / 2 }, + { x: -w4 / 2 - w4 / 2 * 0.1, y: finalH / 2 }, ...generateFullSineWavePoints( - -w3 / 2 - w3 / 2 * 0.1, + -w4 / 2 - w4 / 2 * 0.1, finalH / 2, - w3 / 2 + w3 / 2 * 0.1, + w4 / 2 + w4 / 2 * 0.1, finalH / 2, waveAmplitude, 0.8 ), - { x: w3 / 2 + w3 / 2 * 0.1, y: -finalH / 2 }, - { x: -w3 / 2 - w3 / 2 * 0.1, y: -finalH / 2 }, - { x: -w3 / 2, y: -finalH / 2 }, - { x: -w3 / 2, y: finalH / 2 * 1.1 }, - { x: -w3 / 2, y: -finalH / 2 } + { x: w4 / 2 + w4 / 2 * 0.1, y: -finalH / 2 }, + { x: -w4 / 2 - w4 / 2 * 0.1, y: -finalH / 2 }, + { x: -w4 / 2, y: -finalH / 2 }, + { x: -w4 / 2, y: finalH / 2 * 1.1 }, + { x: -w4 / 2, y: -finalH / 2 } ]; const poly = rc.polygon( points.map((p3) => [p3.x, p3.y]), - options3 + options2 ); const waveEdgeRect = shapeSvg.insert(() => poly, ":first-child"); waveEdgeRect.attr("class", "basic label-container"); @@ -43066,7 +42218,7 @@ ${text4} waveEdgeRect.attr("transform", `translate(0,${-waveAmplitude / 2})`); label.attr( "transform", - `translate(${-w3 / 2 + (node2.padding ?? 0) + w3 / 2 * 0.1 / 2 - (bbox.x - (bbox.left ?? 0))},${-h2 / 2 + (node2.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w4 / 2 + (node2.padding ?? 0) + w4 / 2 * 0.1 / 2 - (bbox.x - (bbox.left ?? 0))},${-h3 / 2 + (node2.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node2, waveEdgeRect); node2.intersect = function(point8) { @@ -43091,44 +42243,44 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const w4 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); const rectOffset = 5; - const x5 = -w3 / 2; - const y5 = -h2 / 2; + const x5 = -w4 / 2; + const y6 = -h3 / 2; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); const outerPathPoints = [ - { x: x5 - rectOffset, y: y5 + rectOffset }, - { x: x5 - rectOffset, y: y5 + h2 + rectOffset }, - { x: x5 + w3 - rectOffset, y: y5 + h2 + rectOffset }, - { x: x5 + w3 - rectOffset, y: y5 + h2 }, - { x: x5 + w3, y: y5 + h2 }, - { x: x5 + w3, y: y5 + h2 - rectOffset }, - { x: x5 + w3 + rectOffset, y: y5 + h2 - rectOffset }, - { x: x5 + w3 + rectOffset, y: y5 - rectOffset }, - { x: x5 + rectOffset, y: y5 - rectOffset }, - { x: x5 + rectOffset, y: y5 }, - { x: x5, y: y5 }, - { x: x5, y: y5 + rectOffset } + { x: x5 - rectOffset, y: y6 + rectOffset }, + { x: x5 - rectOffset, y: y6 + h3 + rectOffset }, + { x: x5 + w4 - rectOffset, y: y6 + h3 + rectOffset }, + { x: x5 + w4 - rectOffset, y: y6 + h3 }, + { x: x5 + w4, y: y6 + h3 }, + { x: x5 + w4, y: y6 + h3 - rectOffset }, + { x: x5 + w4 + rectOffset, y: y6 + h3 - rectOffset }, + { x: x5 + w4 + rectOffset, y: y6 - rectOffset }, + { x: x5 + rectOffset, y: y6 - rectOffset }, + { x: x5 + rectOffset, y: y6 }, + { x: x5, y: y6 }, + { x: x5, y: y6 + rectOffset } ]; const innerPathPoints = [ - { x: x5, y: y5 + rectOffset }, - { x: x5 + w3 - rectOffset, y: y5 + rectOffset }, - { x: x5 + w3 - rectOffset, y: y5 + h2 }, - { x: x5 + w3, y: y5 + h2 }, - { x: x5 + w3, y: y5 }, - { x: x5, y: y5 } + { x: x5, y: y6 + rectOffset }, + { x: x5 + w4 - rectOffset, y: y6 + rectOffset }, + { x: x5 + w4 - rectOffset, y: y6 + h3 }, + { x: x5 + w4, y: y6 + h3 }, + { x: x5 + w4, y: y6 }, + { x: x5, y: y6 } ]; if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const outerPath = createPathFromPoints(outerPathPoints); - const outerNode = rc.path(outerPath, options3); + const outerNode = rc.path(outerPath, options2); const innerPath3 = createPathFromPoints(innerPathPoints); - const innerNode = rc.path(innerPath3, { ...options3, fill: "none" }); + const innerNode = rc.path(innerPath3, { ...options2, fill: "none" }); const multiRect2 = shapeSvg.insert(() => innerNode, ":first-child"); multiRect2.insert(() => outerNode, ":first-child"); multiRect2.attr("class", "basic label-container"); @@ -43165,55 +42317,55 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); - const waveAmplitude = h2 / 4; - const finalH = h2 + waveAmplitude; - const x5 = -w3 / 2; - const y5 = -finalH / 2; + const w4 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const waveAmplitude = h3 / 4; + const finalH = h3 + waveAmplitude; + const x5 = -w4 / 2; + const y6 = -finalH / 2; const rectOffset = 5; const { cssStyles } = node2; const wavePoints = generateFullSineWavePoints( x5 - rectOffset, - y5 + finalH + rectOffset, - x5 + w3 - rectOffset, - y5 + finalH + rectOffset, + y6 + finalH + rectOffset, + x5 + w4 - rectOffset, + y6 + finalH + rectOffset, waveAmplitude, 0.8 ); const lastWavePoint = wavePoints?.[wavePoints.length - 1]; const outerPathPoints = [ - { x: x5 - rectOffset, y: y5 + rectOffset }, - { x: x5 - rectOffset, y: y5 + finalH + rectOffset }, + { x: x5 - rectOffset, y: y6 + rectOffset }, + { x: x5 - rectOffset, y: y6 + finalH + rectOffset }, ...wavePoints, - { x: x5 + w3 - rectOffset, y: lastWavePoint.y - rectOffset }, - { x: x5 + w3, y: lastWavePoint.y - rectOffset }, - { x: x5 + w3, y: lastWavePoint.y - 2 * rectOffset }, - { x: x5 + w3 + rectOffset, y: lastWavePoint.y - 2 * rectOffset }, - { x: x5 + w3 + rectOffset, y: y5 - rectOffset }, - { x: x5 + rectOffset, y: y5 - rectOffset }, - { x: x5 + rectOffset, y: y5 }, - { x: x5, y: y5 }, - { x: x5, y: y5 + rectOffset } + { x: x5 + w4 - rectOffset, y: lastWavePoint.y - rectOffset }, + { x: x5 + w4, y: lastWavePoint.y - rectOffset }, + { x: x5 + w4, y: lastWavePoint.y - 2 * rectOffset }, + { x: x5 + w4 + rectOffset, y: lastWavePoint.y - 2 * rectOffset }, + { x: x5 + w4 + rectOffset, y: y6 - rectOffset }, + { x: x5 + rectOffset, y: y6 - rectOffset }, + { x: x5 + rectOffset, y: y6 }, + { x: x5, y: y6 }, + { x: x5, y: y6 + rectOffset } ]; const innerPathPoints = [ - { x: x5, y: y5 + rectOffset }, - { x: x5 + w3 - rectOffset, y: y5 + rectOffset }, - { x: x5 + w3 - rectOffset, y: lastWavePoint.y - rectOffset }, - { x: x5 + w3, y: lastWavePoint.y - rectOffset }, - { x: x5 + w3, y: y5 }, - { x: x5, y: y5 } + { x: x5, y: y6 + rectOffset }, + { x: x5 + w4 - rectOffset, y: y6 + rectOffset }, + { x: x5 + w4 - rectOffset, y: lastWavePoint.y - rectOffset }, + { x: x5 + w4, y: lastWavePoint.y - rectOffset }, + { x: x5 + w4, y: y6 }, + { x: x5, y: y6 } ]; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const outerPath = createPathFromPoints(outerPathPoints); - const outerNode = rc.path(outerPath, options3); + const outerNode = rc.path(outerPath, options2); const innerPath3 = createPathFromPoints(innerPathPoints); - const innerNode = rc.path(innerPath3, options3); + const innerNode = rc.path(innerPath3, options2); const shape = shapeSvg.insert(() => outerNode, ":first-child"); shape.insert(() => innerNode); shape.attr("class", "basic label-container"); @@ -43254,22 +42406,22 @@ ${text4} if (!useHtmlLabels) { node2.centerLabel = true; } - const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); + const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); const totalWidth = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); const totalHeight = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); const x5 = -totalWidth / 2; - const y5 = -totalHeight / 2; + const y6 = -totalHeight / 2; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, { + const options2 = userNodeOverrides(node2, { fill: themeVariables.noteBkgColor, stroke: themeVariables.noteBorderColor }); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } - const noteShapeNode = rc.rectangle(x5, y5, totalWidth, totalHeight, options3); + const noteShapeNode = rc.rectangle(x5, y6, totalWidth, totalHeight, options2); const rect3 = shapeSvg.insert(() => noteShapeNode, ":first-child"); rect3.attr("class", "basic label-container"); if (cssStyles && node2.look !== "handDrawn") { @@ -43278,6 +42430,10 @@ ${text4} if (nodeStyles && node2.look !== "handDrawn") { rect3.selectAll("path").attr("style", nodeStyles); } + label.attr( + "transform", + `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})` + ); updateNodeBounds(node2, rect3); node2.intersect = function(point8) { return intersect_default.rect(node2, point8); @@ -43301,9 +42457,10 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; - const s2 = w3 + h2; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; + const s2 = w4 + h3; + const adjustment = 0.5; const points = [ { x: s2 / 2, y: 0 }, { x: s2, y: -s2 / 2 }, @@ -43314,30 +42471,34 @@ ${text4} const { cssStyles } = node2; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); const pathData = createDecisionBoxPathD(0, 0, s2); - const roughNode = rc.path(pathData, options3); - polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-s2 / 2}, ${s2 / 2})`); + const roughNode = rc.path(pathData, options2); + polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-s2 / 2 + adjustment}, ${s2 / 2})`); if (cssStyles) { polygon2.attr("style", cssStyles); } } else { polygon2 = insertPolygonShape(shapeSvg, s2, s2, points); + polygon2.attr("transform", `translate(${-s2 / 2 + adjustment}, ${s2 / 2})`); } if (nodeStyles) { polygon2.attr("style", nodeStyles); } updateNodeBounds(node2, polygon2); + node2.calcIntersect = function(bounds4, point8) { + const s3 = bounds4.width; + const points2 = [ + { x: s3 / 2, y: 0 }, + { x: s3, y: -s3 / 2 }, + { x: s3 / 2, y: -s3 }, + { x: 0, y: -s3 / 2 } + ]; + const res = intersect_default.polygon(bounds4, points2, point8); + return { x: res.x - 0.5, y: res.y - 0.5 }; + }; node2.intersect = function(point8) { - log.debug( - "APA12 Intersect called SPLIT\npoint:", - point8, - "\nnode:\n", - node2, - "\nres:", - intersect_default.polygon(node2, points, point8) - ); - return intersect_default.polygon(node2, points, point8); + return this.calcIntersect(node2, point8); }; return shapeSvg; } @@ -43345,18 +42506,17 @@ ${text4} var init_question = __esm({ "src/rendering-util/rendering-elements/shapes/question.ts"() { "use strict"; - init_logger(); init_util(); init_intersect(); init_handDrawnShapeStyles(); init_rough_esm(); init_insertPolygonShape(); - createDecisionBoxPathD = /* @__PURE__ */ __name((x5, y5, size5) => { + createDecisionBoxPathD = /* @__PURE__ */ __name((x5, y6, size4) => { return [ - `M${x5 + size5 / 2},${y5}`, - `L${x5 + size5},${y5 - size5 / 2}`, - `L${x5 + size5 / 2},${y5 - size5}`, - `L${x5},${y5 - size5 / 2}`, + `M${x5 + size4 / 2},${y6}`, + `L${x5 + size4},${y6 - size4 / 2}`, + `L${x5 + size4 / 2},${y6 - size4}`, + `L${x5},${y6 - size4 / 2}`, "Z" ].join(" "); }, "createDecisionBoxPathD"); @@ -43369,27 +42529,27 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0), node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0), node2?.height ?? 0); - const x5 = -w3 / 2; - const y5 = -h2 / 2; - const notch = y5 / 2; + const w4 = Math.max(bbox.width + (node2.padding ?? 0), node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0), node2?.height ?? 0); + const x5 = -w4 / 2; + const y6 = -h3 / 2; + const notch = y6 / 2; const points = [ - { x: x5 + notch, y: y5 }, + { x: x5 + notch, y: y6 }, { x: x5, y: 0 }, - { x: x5 + notch, y: -y5 }, - { x: -x5, y: -y5 }, - { x: -x5, y: y5 } + { x: x5 + notch, y: -y6 }, + { x: -x5, y: -y6 }, + { x: -x5, y: y6 } ]; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const pathData = createPathFromPoints(points); - const roughNode = rc.path(pathData, options3); + const roughNode = rc.path(pathData, options2); const polygon2 = shapeSvg.insert(() => roughNode, ":first-child"); polygon2.attr("class", "basic label-container"); if (cssStyles && node2.look !== "handDrawn") { @@ -43429,15 +42589,15 @@ ${text4} async function addHtmlLabel(node2) { const fo = select_default2(document.createElementNS("http://www.w3.org/2000/svg", "foreignObject")); const div = fo.append("xhtml:div"); + const config5 = getConfig2(); let label = node2.label; if (node2.label && hasKatex(node2.label)) { - label = await renderKatex(node2.label.replace(common_default.lineBreakRegex, "\n"), getConfig2()); + label = await renderKatexSanitized(node2.label.replace(common_default.lineBreakRegex, "\n"), config5); } const labelClass = node2.isNode ? "nodeLabel" : "edgeLabel"; - div.html( - '" + label + "" - ); + const labelSpan = '" + label + ""; + div.html(sanitizeText(labelSpan, config5)); applyStyle2(div, node2.labelStyle); div.style("display", "inline-block"); div.style("padding-right", "1px"); @@ -43450,9 +42610,9 @@ ${text4} "src/rendering-util/rendering-elements/createLabel.js"() { "use strict"; init_src32(); - init_logger(); init_diagramAPI(); init_common(); + init_logger(); init_utils2(); __name(applyStyle2, "applyStyle"); __name(addHtmlLabel, "addHtmlLabel"); @@ -43562,22 +42722,22 @@ ${text4} const totalWidth = bbox.width + (node2.padding || 0); const totalHeight = bbox.height + (node2.padding || 0); const x5 = -bbox.width / 2 - halfPadding; - const y5 = -bbox.height / 2 - halfPadding; + const y6 = -bbox.height / 2 - halfPadding; let rect3; let innerLine; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); const roughNode = rc.path( - createRoundedRectPathD(x5, y5, totalWidth, totalHeight, node2.rx || 0), - options3 + createRoundedRectPathD(x5, y6, totalWidth, totalHeight, node2.rx || 0), + options2 ); const roughLine = rc.line( -bbox.width / 2 - halfPadding, -bbox.height / 2 - halfPadding + titleBox.height + halfPadding, bbox.width / 2 + halfPadding, -bbox.height / 2 - halfPadding + titleBox.height + halfPadding, - options3 + options2 ); innerLine = shapeSvg.insert(() => { log.debug("Rough node insert CXC", roughNode); @@ -43617,20 +42777,116 @@ ${text4} }); // src/rendering-util/rendering-elements/shapes/roundedRect.ts + function generateArcPoints2(x1, y1, x22, y22, rx, ry, clockwise) { + const numPoints = 20; + const midX = (x1 + x22) / 2; + const midY = (y1 + y22) / 2; + const angle2 = Math.atan2(y22 - y1, x22 - x1); + const dx = (x22 - x1) / 2; + const dy = (y22 - y1) / 2; + const transformedX = dx / rx; + const transformedY = dy / ry; + const distance2 = Math.sqrt(transformedX ** 2 + transformedY ** 2); + if (distance2 > 1) { + throw new Error("The given radii are too small to create an arc between the points."); + } + const scaledCenterDistance = Math.sqrt(1 - distance2 ** 2); + const centerX = midX + scaledCenterDistance * ry * Math.sin(angle2) * (clockwise ? -1 : 1); + const centerY = midY - scaledCenterDistance * rx * Math.cos(angle2) * (clockwise ? -1 : 1); + const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx); + const endAngle = Math.atan2((y22 - centerY) / ry, (x22 - centerX) / rx); + let angleRange = endAngle - startAngle; + if (clockwise && angleRange < 0) { + angleRange += 2 * Math.PI; + } + if (!clockwise && angleRange > 0) { + angleRange -= 2 * Math.PI; + } + const points = []; + for (let i2 = 0; i2 < numPoints; i2++) { + const t4 = i2 / (numPoints - 1); + const angle3 = startAngle + t4 * angleRange; + const x5 = centerX + rx * Math.cos(angle3); + const y6 = centerY + ry * Math.sin(angle3); + points.push({ x: x5, y: y6 }); + } + return points; + } async function roundedRect(parent4, node2) { - const options3 = { - rx: 5, - ry: 5, - classes: "", - labelPaddingX: (node2?.padding || 0) * 1, - labelPaddingY: (node2?.padding || 0) * 1 + const { labelStyles, nodeStyles } = styles2String(node2); + node2.labelStyle = labelStyles; + const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); + const labelPaddingX = node2?.padding ?? 0; + const labelPaddingY = node2?.padding ?? 0; + const w4 = (node2?.width ? node2?.width : bbox.width) + labelPaddingX * 2; + const h3 = (node2?.height ? node2?.height : bbox.height) + labelPaddingY * 2; + const radius2 = node2.radius || 5; + const taper = node2.taper || 5; + const { cssStyles } = node2; + const rc = at.svg(shapeSvg); + const options2 = userNodeOverrides(node2, {}); + if (node2.stroke) { + options2.stroke = node2.stroke; + } + if (node2.look !== "handDrawn") { + options2.roughness = 0; + options2.fillStyle = "solid"; + } + const points = [ + // Top edge (left to right) + { x: -w4 / 2 + taper, y: -h3 / 2 }, + // Top-left corner start (1) + { x: w4 / 2 - taper, y: -h3 / 2 }, + // Top-right corner start (2) + ...generateArcPoints2(w4 / 2 - taper, -h3 / 2, w4 / 2, -h3 / 2 + taper, radius2, radius2, true), + // Top-left arc (2 to 3) + // Right edge (top to bottom) + { x: w4 / 2, y: -h3 / 2 + taper }, + // Top-right taper point (3) + { x: w4 / 2, y: h3 / 2 - taper }, + // Bottom-right taper point (4) + ...generateArcPoints2(w4 / 2, h3 / 2 - taper, w4 / 2 - taper, h3 / 2, radius2, radius2, true), + // Top-left arc (4 to 5) + // Bottom edge (right to left) + { x: w4 / 2 - taper, y: h3 / 2 }, + // Bottom-right corner start (5) + { x: -w4 / 2 + taper, y: h3 / 2 }, + // Bottom-left corner start (6) + ...generateArcPoints2(-w4 / 2 + taper, h3 / 2, -w4 / 2, h3 / 2 - taper, radius2, radius2, true), + // Top-left arc (4 to 5) + // Left edge (bottom to top) + { x: -w4 / 2, y: h3 / 2 - taper }, + // Bottom-left taper point (7) + { x: -w4 / 2, y: -h3 / 2 + taper }, + // Top-left taper point (8) + ...generateArcPoints2(-w4 / 2, -h3 / 2 + taper, -w4 / 2 + taper, -h3 / 2, radius2, radius2, true) + // Top-left arc (4 to 5) + ]; + const pathData = createPathFromPoints(points); + const shapeNode = rc.path(pathData, options2); + const polygon2 = shapeSvg.insert(() => shapeNode, ":first-child"); + polygon2.attr("class", "basic label-container outer-path"); + if (cssStyles && node2.look !== "handDrawn") { + polygon2.selectChildren("path").attr("style", cssStyles); + } + if (nodeStyles && node2.look !== "handDrawn") { + polygon2.selectChildren("path").attr("style", nodeStyles); + } + updateNodeBounds(node2, polygon2); + node2.intersect = function(point8) { + const pos = intersect_default.polygon(node2, points, point8); + return pos; }; - return drawRect3(parent4, node2, options3); + return shapeSvg; } var init_roundedRect = __esm({ "src/rendering-util/rendering-elements/shapes/roundedRect.ts"() { "use strict"; - init_drawRect(); + init_util(); + init_intersect(); + init_handDrawnShapeStyles(); + init_rough_esm(); + __name(generateArcPoints2, "generateArcPoints"); __name(roundedRect, "roundedRect"); } }); @@ -43641,29 +42897,29 @@ ${text4} node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); const halfPadding = node2?.padding ?? 0; - const w3 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const w4 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); const x5 = -bbox.width / 2 - halfPadding; - const y5 = -bbox.height / 2 - halfPadding; + const y6 = -bbox.height / 2 - halfPadding; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const points = [ - { x: x5, y: y5 }, - { x: x5 + w3 + 8, y: y5 }, - { x: x5 + w3 + 8, y: y5 + h2 }, - { x: x5 - 8, y: y5 + h2 }, - { x: x5 - 8, y: y5 }, - { x: x5, y: y5 }, - { x: x5, y: y5 + h2 } + { x: x5, y: y6 }, + { x: x5 + w4 + 8, y: y6 }, + { x: x5 + w4 + 8, y: y6 + h3 }, + { x: x5 - 8, y: y6 + h3 }, + { x: x5 - 8, y: y6 }, + { x: x5, y: y6 }, + { x: x5, y: y6 + h3 } ]; const roughNode = rc.polygon( points.map((p3) => [p3.x, p3.y]), - options3 + options2 ); const rect3 = shapeSvg.insert(() => roughNode, ":first-child"); rect3.attr("class", "basic label-container").attr("style", handleUndefinedAttr(cssStyles)); @@ -43675,7 +42931,7 @@ ${text4} } label.attr( "transform", - `translate(${-w3 / 2 + 4 + (node2.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h2 / 2 + (node2.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w4 / 2 + 4 + (node2.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h3 / 2 + (node2.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node2, rect3); node2.intersect = function(point8) { @@ -43700,25 +42956,25 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); - const x5 = -w3 / 2; - const y5 = -h2 / 2; + const w4 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const x5 = -w4 / 2; + const y6 = -h3 / 2; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const points = [ - { x: x5, y: y5 }, - { x: x5, y: y5 + h2 }, - { x: x5 + w3, y: y5 + h2 }, - { x: x5 + w3, y: y5 - h2 / 2 } + { x: x5, y: y6 }, + { x: x5, y: y6 + h3 }, + { x: x5 + w4, y: y6 + h3 }, + { x: x5 + w4, y: y6 - h3 / 2 } ]; const pathData = createPathFromPoints(points); - const shapeNode = rc.path(pathData, options3); + const shapeNode = rc.path(pathData, options2); const polygon2 = shapeSvg.insert(() => shapeNode, ":first-child"); polygon2.attr("class", "basic label-container"); if (cssStyles && node2.look !== "handDrawn") { @@ -43727,10 +42983,10 @@ ${text4} if (nodeStyles && node2.look !== "handDrawn") { polygon2.selectChildren("path").attr("style", nodeStyles); } - polygon2.attr("transform", `translate(0, ${h2 / 4})`); + polygon2.attr("transform", `translate(0, ${h3 / 4})`); label.attr( "transform", - `translate(${-w3 / 2 + (node2.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h2 / 4 + (node2.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w4 / 2 + (node2.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h3 / 4 + (node2.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node2, polygon2); node2.intersect = function(point8) { @@ -43752,14 +43008,14 @@ ${text4} // src/rendering-util/rendering-elements/shapes/squareRect.ts async function squareRect(parent4, node2) { - const options3 = { + const options2 = { rx: 0, ry: 0, classes: "", - labelPaddingX: (node2?.padding || 0) * 2, + labelPaddingX: node2.labelPaddingX ?? (node2?.padding || 0) * 2, labelPaddingY: (node2?.padding || 0) * 1 }; - return drawRect3(parent4, node2, options3); + return drawRect3(parent4, node2, options2); } var init_squareRect = __esm({ "src/rendering-util/rendering-elements/shapes/squareRect.ts"() { @@ -43774,24 +43030,37 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const h2 = bbox.height + node2.padding; - const w3 = bbox.width + h2 / 4 + node2.padding; - let rect3; + const h3 = bbox.height + node2.padding; + const w4 = bbox.width + h3 / 4 + node2.padding; + const radius2 = h3 / 2; const { cssStyles } = node2; - if (node2.look === "handDrawn") { - const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); - const pathData = createRoundedRectPathD(-w3 / 2, -h2 / 2, w3, h2, h2 / 2); - const roughNode = rc.path(pathData, options3); - rect3 = shapeSvg.insert(() => roughNode, ":first-child"); - rect3.attr("class", "basic label-container").attr("style", handleUndefinedAttr(cssStyles)); - } else { - rect3 = shapeSvg.insert("rect", ":first-child"); - rect3.attr("class", "basic label-container").attr("style", nodeStyles).attr("rx", h2 / 2).attr("ry", h2 / 2).attr("x", -w3 / 2).attr("y", -h2 / 2).attr("width", w3).attr("height", h2); + const rc = at.svg(shapeSvg); + const options2 = userNodeOverrides(node2, {}); + if (node2.look !== "handDrawn") { + options2.roughness = 0; + options2.fillStyle = "solid"; } - updateNodeBounds(node2, rect3); + const points = [ + { x: -w4 / 2 + radius2, y: -h3 / 2 }, + { x: w4 / 2 - radius2, y: -h3 / 2 }, + ...generateCirclePoints(-w4 / 2 + radius2, 0, radius2, 50, 90, 270), + { x: w4 / 2 - radius2, y: h3 / 2 }, + ...generateCirclePoints(w4 / 2 - radius2, 0, radius2, 50, 270, 450) + ]; + const pathData = createPathFromPoints(points); + const shapeNode = rc.path(pathData, options2); + const polygon2 = shapeSvg.insert(() => shapeNode, ":first-child"); + polygon2.attr("class", "basic label-container outer-path"); + if (cssStyles && node2.look !== "handDrawn") { + polygon2.selectChildren("path").attr("style", cssStyles); + } + if (nodeStyles && node2.look !== "handDrawn") { + polygon2.selectChildren("path").attr("style", nodeStyles); + } + updateNodeBounds(node2, polygon2); node2.intersect = function(point8) { - return intersect_default.rect(node2, point8); + const pos = intersect_default.polygon(node2, points, point8); + return pos; }; return shapeSvg; } @@ -43802,20 +43071,18 @@ ${text4} init_intersect(); init_handDrawnShapeStyles(); init_rough_esm(); - init_roundedRectPath(); - init_utils2(); __name(stadium, "stadium"); } }); // src/rendering-util/rendering-elements/shapes/state.ts async function state(parent4, node2) { - const options3 = { + const options2 = { rx: 5, ry: 5, classes: "flowchart-node" }; - return drawRect3(parent4, node2, options3); + return drawRect3(parent4, node2, options2); } var init_state = __esm({ "src/rendering-util/rendering-elements/shapes/state.ts"() { @@ -43833,19 +43100,19 @@ ${text4} const { lineColor, stateBorder, nodeBorder } = themeVariables; const shapeSvg = parent4.insert("g").attr("class", "node default").attr("id", node2.domId || node2.id); const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const roughNode = rc.circle(0, 0, 14, { - ...options3, + ...options2, stroke: lineColor, strokeWidth: 2 }); const innerFill = stateBorder ?? nodeBorder; const roughInnerNode = rc.circle(0, 0, 5, { - ...options3, + ...options2, fill: innerFill, stroke: innerFill, strokeWidth: 2, @@ -43913,36 +43180,36 @@ ${text4} node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); const halfPadding = (node2?.padding || 0) / 2; - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; const x5 = -bbox.width / 2 - halfPadding; - const y5 = -bbox.height / 2 - halfPadding; + const y6 = -bbox.height / 2 - halfPadding; const points = [ { x: 0, y: 0 }, - { x: w3, y: 0 }, - { x: w3, y: -h2 }, - { x: 0, y: -h2 }, + { x: w4, y: 0 }, + { x: w4, y: -h3 }, + { x: 0, y: -h3 }, { x: 0, y: 0 }, { x: -8, y: 0 }, - { x: w3 + 8, y: 0 }, - { x: w3 + 8, y: -h2 }, - { x: -8, y: -h2 }, + { x: w4 + 8, y: 0 }, + { x: w4 + 8, y: -h3 }, + { x: -8, y: -h3 }, { x: -8, y: 0 } ]; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); - const roughNode = rc.rectangle(x5 - 8, y5, w3 + 16, h2, options3); - const l1 = rc.line(x5, y5, x5, y5 + h2, options3); - const l2 = rc.line(x5 + w3, y5, x5 + w3, y5 + h2, options3); + const options2 = userNodeOverrides(node2, {}); + const roughNode = rc.rectangle(x5 - 8, y6, w4 + 16, h3, options2); + const l1 = rc.line(x5, y6, x5, y6 + h3, options2); + const l22 = rc.line(x5 + w4, y6, x5 + w4, y6 + h3, options2); shapeSvg.insert(() => l1, ":first-child"); - shapeSvg.insert(() => l2, ":first-child"); + shapeSvg.insert(() => l22, ":first-child"); const rect3 = shapeSvg.insert(() => roughNode, ":first-child"); const { cssStyles } = node2; rect3.attr("class", "basic label-container").attr("style", handleUndefinedAttr(cssStyles)); updateNodeBounds(node2, rect3); } else { - const el = insertPolygonShape(shapeSvg, w3, h2, points); + const el = insertPolygonShape(shapeSvg, w4, h3, points); if (nodeStyles) { el.attr("style", nodeStyles); } @@ -43971,34 +43238,34 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); - const x5 = -w3 / 2; - const y5 = -h2 / 2; - const tagWidth = 0.2 * h2; - const tagHeight = 0.2 * h2; + const w4 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const x5 = -w4 / 2; + const y6 = -h3 / 2; + const tagWidth = 0.2 * h3; + const tagHeight = 0.2 * h3; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); const rectPoints = [ - { x: x5 - tagWidth / 2, y: y5 }, - { x: x5 + w3 + tagWidth / 2, y: y5 }, - { x: x5 + w3 + tagWidth / 2, y: y5 + h2 }, - { x: x5 - tagWidth / 2, y: y5 + h2 } + { x: x5 - tagWidth / 2, y: y6 }, + { x: x5 + w4 + tagWidth / 2, y: y6 }, + { x: x5 + w4 + tagWidth / 2, y: y6 + h3 }, + { x: x5 - tagWidth / 2, y: y6 + h3 } ]; const tagPoints = [ - { x: x5 + w3 - tagWidth / 2, y: y5 + h2 }, - { x: x5 + w3 + tagWidth / 2, y: y5 + h2 }, - { x: x5 + w3 + tagWidth / 2, y: y5 + h2 - tagHeight } + { x: x5 + w4 - tagWidth / 2, y: y6 + h3 }, + { x: x5 + w4 + tagWidth / 2, y: y6 + h3 }, + { x: x5 + w4 + tagWidth / 2, y: y6 + h3 - tagHeight } ]; if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const rectPath = createPathFromPoints(rectPoints); - const rectNode = rc.path(rectPath, options3); + const rectNode = rc.path(rectPath, options2); const tagPath = createPathFromPoints(tagPoints); - const tagNode = rc.path(tagPath, { ...options3, fillStyle: "solid" }); + const tagNode = rc.path(tagPath, { ...options2, fillStyle: "solid" }); const taggedRect2 = shapeSvg.insert(() => tagNode, ":first-child"); taggedRect2.insert(() => rectNode, ":first-child"); taggedRect2.attr("class", "basic label-container"); @@ -44031,52 +43298,52 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); - const waveAmplitude = h2 / 4; - const tagWidth = 0.2 * w3; - const tagHeight = 0.2 * h2; - const finalH = h2 + waveAmplitude; + const w4 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const waveAmplitude = h3 / 4; + const tagWidth = 0.2 * w4; + const tagHeight = 0.2 * h3; + const finalH = h3 + waveAmplitude; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const points = [ - { x: -w3 / 2 - w3 / 2 * 0.1, y: finalH / 2 }, + { x: -w4 / 2 - w4 / 2 * 0.1, y: finalH / 2 }, ...generateFullSineWavePoints( - -w3 / 2 - w3 / 2 * 0.1, + -w4 / 2 - w4 / 2 * 0.1, finalH / 2, - w3 / 2 + w3 / 2 * 0.1, + w4 / 2 + w4 / 2 * 0.1, finalH / 2, waveAmplitude, 0.8 ), - { x: w3 / 2 + w3 / 2 * 0.1, y: -finalH / 2 }, - { x: -w3 / 2 - w3 / 2 * 0.1, y: -finalH / 2 } + { x: w4 / 2 + w4 / 2 * 0.1, y: -finalH / 2 }, + { x: -w4 / 2 - w4 / 2 * 0.1, y: -finalH / 2 } ]; - const x5 = -w3 / 2 + w3 / 2 * 0.1; - const y5 = -finalH / 2 - tagHeight * 0.4; + const x5 = -w4 / 2 + w4 / 2 * 0.1; + const y6 = -finalH / 2 - tagHeight * 0.4; const tagPoints = [ - { x: x5 + w3 - tagWidth, y: (y5 + h2) * 1.4 }, - { x: x5 + w3, y: y5 + h2 - tagHeight }, - { x: x5 + w3, y: (y5 + h2) * 0.9 }, + { x: x5 + w4 - tagWidth, y: (y6 + h3) * 1.4 }, + { x: x5 + w4, y: y6 + h3 - tagHeight }, + { x: x5 + w4, y: (y6 + h3) * 0.9 }, ...generateFullSineWavePoints( - x5 + w3, - (y5 + h2) * 1.3, - x5 + w3 - tagWidth, - (y5 + h2) * 1.5, - -h2 * 0.03, + x5 + w4, + (y6 + h3) * 1.3, + x5 + w4 - tagWidth, + (y6 + h3) * 1.5, + -h3 * 0.03, 0.5 ) ]; const waveEdgeRectPath = createPathFromPoints(points); - const waveEdgeRectNode = rc.path(waveEdgeRectPath, options3); + const waveEdgeRectNode = rc.path(waveEdgeRectPath, options2); const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints); const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, { - ...options3, + ...options2, fillStyle: "solid" }); const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, ":first-child"); @@ -44091,7 +43358,7 @@ ${text4} waveEdgeRect.attr("transform", `translate(0,${-waveAmplitude / 2})`); label.attr( "transform", - `translate(${-w3 / 2 + (node2.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h2 / 2 + (node2.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w4 / 2 + (node2.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h3 / 2 + (node2.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node2, waveEdgeRect); node2.intersect = function(point8) { @@ -44119,9 +43386,9 @@ ${text4} const totalWidth = Math.max(bbox.width + node2.padding, node2?.width || 0); const totalHeight = Math.max(bbox.height + node2.padding, node2?.height || 0); const x5 = -totalWidth / 2; - const y5 = -totalHeight / 2; + const y6 = -totalHeight / 2; const rect3 = shapeSvg.insert("rect", ":first-child"); - rect3.attr("class", "text").attr("style", nodeStyles).attr("rx", 0).attr("ry", 0).attr("x", x5).attr("y", y5).attr("width", totalWidth).attr("height", totalHeight); + rect3.attr("class", "text").attr("style", nodeStyles).attr("rx", 0).attr("ry", 0).attr("x", x5).attr("y", y6).attr("width", totalWidth).attr("height", totalHeight); updateNodeBounds(node2, rect3); node2.intersect = function(point8) { return intersect_default.rect(node2, point8); @@ -44148,16 +43415,16 @@ ${text4} getNodeClasses(node2) ); const labelPadding = node2.look === "neo" ? halfPadding * 2 : halfPadding; - const h2 = bbox.height + labelPadding; - const ry = h2 / 2; - const rx = ry / (2.5 + h2 / 50); - const w3 = bbox.width + rx + labelPadding; + const h3 = bbox.height + labelPadding; + const ry = h3 / 2; + const rx = ry / (2.5 + h3 / 50); + const w4 = bbox.width + rx + labelPadding; const { cssStyles } = node2; let cylinder3; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const outerPathData = createOuterCylinderPathD3(0, 0, w3, h2, rx, ry); - const innerPathData = createInnerCylinderPathD3(0, 0, w3, h2, rx, ry); + const outerPathData = createOuterCylinderPathD3(0, 0, w4, h3, rx, ry); + const innerPathData = createInnerCylinderPathD3(0, 0, w4, h3, rx, ry); const outerNode = rc.path(outerPathData, userNodeOverrides(node2, {})); const innerLine = rc.path(innerPathData, userNodeOverrides(node2, { fill: "none" })); cylinder3 = shapeSvg.insert(() => innerLine, ":first-child"); @@ -44167,7 +43434,7 @@ ${text4} cylinder3.attr("style", cssStyles); } } else { - const pathData = createCylinderPathD3(0, 0, w3, h2, rx, ry); + const pathData = createCylinderPathD3(0, 0, w4, h3, rx, ry); cylinder3 = shapeSvg.insert("path", ":first-child").attr("d", pathData).attr("class", "basic label-container").attr("style", handleUndefinedAttr(cssStyles)).attr("style", nodeStyles); cylinder3.attr("class", "basic label-container"); if (cssStyles) { @@ -44178,7 +43445,7 @@ ${text4} } } cylinder3.attr("label-offset-x", rx); - cylinder3.attr("transform", `translate(${-w3 / 2}, ${h2 / 2} )`); + cylinder3.attr("transform", `translate(${-w4 / 2}, ${h3 / 2} )`); label.attr( "transform", `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})` @@ -44186,9 +43453,9 @@ ${text4} updateNodeBounds(node2, cylinder3); node2.intersect = function(point8) { const pos = intersect_default.rect(node2, point8); - const y5 = pos.y - (node2.y ?? 0); - if (ry != 0 && (Math.abs(y5) < (node2.height ?? 0) / 2 || Math.abs(y5) == (node2.height ?? 0) / 2 && Math.abs(pos.x - (node2.x ?? 0)) > (node2.width ?? 0) / 2 - rx)) { - let x5 = rx * rx * (1 - y5 * y5 / (ry * ry)); + const y6 = pos.y - (node2.y ?? 0); + if (ry != 0 && (Math.abs(y6) < (node2.height ?? 0) / 2 || Math.abs(y6) == (node2.height ?? 0) / 2 && Math.abs(pos.x - (node2.x ?? 0)) > (node2.width ?? 0) / 2 - rx)) { + let x5 = rx * rx * (1 - y6 * y6 / (ry * ry)); if (x5 != 0) { x5 = Math.sqrt(Math.abs(x5)); } @@ -44211,8 +43478,8 @@ ${text4} init_rough_esm(); init_intersect(); init_utils2(); - createCylinderPathD3 = /* @__PURE__ */ __name((x5, y5, width3, height2, rx, ry) => { - return `M${x5},${y5} + createCylinderPathD3 = /* @__PURE__ */ __name((x5, y6, width3, height2, rx, ry) => { + return `M${x5},${y6} a${rx},${ry} 0,0,1 ${0},${-height2} l${width3},${0} a${rx},${ry} 0,0,1 ${0},${height2} @@ -44220,17 +43487,17 @@ ${text4} a${rx},${ry} 0,0,0 ${0},${height2} l${-width3},${0}`; }, "createCylinderPathD"); - createOuterCylinderPathD3 = /* @__PURE__ */ __name((x5, y5, width3, height2, rx, ry) => { + createOuterCylinderPathD3 = /* @__PURE__ */ __name((x5, y6, width3, height2, rx, ry) => { return [ - `M${x5},${y5}`, - `M${x5 + width3},${y5}`, + `M${x5},${y6}`, + `M${x5 + width3},${y6}`, `a${rx},${ry} 0,0,0 ${0},${-height2}`, `l${-width3},0`, `a${rx},${ry} 0,0,0 ${0},${height2}`, `l${width3},0` ].join(" "); }, "createOuterCylinderPathD"); - createInnerCylinderPathD3 = /* @__PURE__ */ __name((x5, y5, width3, height2, rx, ry) => { + createInnerCylinderPathD3 = /* @__PURE__ */ __name((x5, y6, width3, height2, rx, ry) => { return [`M${x5 + width3 / 2},${-height2 / 2}`, `a${rx},${ry} 0,0,0 0,${height2}`].join(" "); }, "createInnerCylinderPathD"); __name(tiltedCylinder, "tiltedCylinder"); @@ -44242,33 +43509,33 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; const points = [ - { x: -3 * h2 / 6, y: 0 }, - { x: w3 + 3 * h2 / 6, y: 0 }, - { x: w3, y: -h2 }, - { x: 0, y: -h2 } + { x: -3 * h3 / 6, y: 0 }, + { x: w4 + 3 * h3 / 6, y: 0 }, + { x: w4, y: -h3 }, + { x: 0, y: -h3 } ]; let polygon2; const { cssStyles } = node2; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); const pathData = createPathFromPoints(points); - const roughNode = rc.path(pathData, options3); - polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w3 / 2}, ${h2 / 2})`); + const roughNode = rc.path(pathData, options2); + polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w4 / 2}, ${h3 / 2})`); if (cssStyles) { polygon2.attr("style", cssStyles); } } else { - polygon2 = insertPolygonShape(shapeSvg, w3, h2, points); + polygon2 = insertPolygonShape(shapeSvg, w4, h3, points); } if (nodeStyles) { polygon2.attr("style", nodeStyles); } - node2.width = w3; - node2.height = h2; + node2.width = w4; + node2.height = h3; updateNodeBounds(node2, polygon2); node2.intersect = function(point8) { return intersect_default.polygon(node2, points, point8); @@ -44293,25 +43560,25 @@ ${text4} node2.labelStyle = labelStyles; const { shapeSvg, bbox } = await labelHelper(parent4, node2, getNodeClasses(node2)); const minWidth = 60, minHeight = 20; - const w3 = Math.max(minWidth, bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(minHeight, bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const w4 = Math.max(minWidth, bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(minHeight, bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const points = [ - { x: -w3 / 2 * 0.8, y: -h2 / 2 }, - { x: w3 / 2 * 0.8, y: -h2 / 2 }, - { x: w3 / 2, y: -h2 / 2 * 0.6 }, - { x: w3 / 2, y: h2 / 2 }, - { x: -w3 / 2, y: h2 / 2 }, - { x: -w3 / 2, y: -h2 / 2 * 0.6 } + { x: -w4 / 2 * 0.8, y: -h3 / 2 }, + { x: w4 / 2 * 0.8, y: -h3 / 2 }, + { x: w4 / 2, y: -h3 / 2 * 0.6 }, + { x: w4 / 2, y: h3 / 2 }, + { x: -w4 / 2, y: h3 / 2 }, + { x: -w4 / 2, y: -h3 / 2 * 0.6 } ]; const pathData = createPathFromPoints(points); - const shapeNode = rc.path(pathData, options3); + const shapeNode = rc.path(pathData, options2); const polygon2 = shapeSvg.insert(() => shapeNode, ":first-child"); polygon2.attr("class", "basic label-container"); if (cssStyles && node2.look !== "handDrawn") { @@ -44344,36 +43611,36 @@ ${text4} node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); const useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels); - const w3 = bbox.width + (node2.padding ?? 0); - const h2 = w3 + bbox.height; - const tw = w3 + bbox.height; + const w4 = bbox.width + (node2.padding ?? 0); + const h3 = w4 + bbox.height; + const tw = w4 + bbox.height; const points = [ { x: 0, y: 0 }, { x: tw, y: 0 }, - { x: tw / 2, y: -h2 } + { x: tw / 2, y: -h3 } ]; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const pathData = createPathFromPoints(points); - const roughNode = rc.path(pathData, options3); - const polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-h2 / 2}, ${h2 / 2})`); + const roughNode = rc.path(pathData, options2); + const polygon2 = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-h3 / 2}, ${h3 / 2})`); if (cssStyles && node2.look !== "handDrawn") { polygon2.selectChildren("path").attr("style", cssStyles); } if (nodeStyles && node2.look !== "handDrawn") { polygon2.selectChildren("path").attr("style", nodeStyles); } - node2.width = w3; - node2.height = h2; + node2.width = w4; + node2.height = h3; updateNodeBounds(node2, polygon2); label.attr( "transform", - `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h2 / 2 - (bbox.height + (node2.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})` + `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h3 / 2 - (bbox.height + (node2.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})` ); node2.intersect = function(point8) { log.info("Triangle intersect", node2, points, point8); @@ -44401,35 +43668,35 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); - const waveAmplitude = h2 / 8; - const finalH = h2 + waveAmplitude; + const w4 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const waveAmplitude = h3 / 8; + const finalH = h3 + waveAmplitude; const { cssStyles } = node2; const minWidth = 70; - const widthDif = minWidth - w3; + const widthDif = minWidth - w4; const extraW = widthDif > 0 ? widthDif / 2 : 0; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const points = [ - { x: -w3 / 2 - extraW, y: finalH / 2 }, + { x: -w4 / 2 - extraW, y: finalH / 2 }, ...generateFullSineWavePoints( - -w3 / 2 - extraW, + -w4 / 2 - extraW, finalH / 2, - w3 / 2 + extraW, + w4 / 2 + extraW, finalH / 2, waveAmplitude, 0.8 ), - { x: w3 / 2 + extraW, y: -finalH / 2 }, - { x: -w3 / 2 - extraW, y: -finalH / 2 } + { x: w4 / 2 + extraW, y: -finalH / 2 }, + { x: -w4 / 2 - extraW, y: -finalH / 2 } ]; const waveEdgeRectPath = createPathFromPoints(points); - const waveEdgeRectNode = rc.path(waveEdgeRectPath, options3); + const waveEdgeRectNode = rc.path(waveEdgeRectPath, options2); const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, ":first-child"); waveEdgeRect.attr("class", "basic label-container"); if (cssStyles && node2.look !== "handDrawn") { @@ -44441,7 +43708,7 @@ ${text4} waveEdgeRect.attr("transform", `translate(0,${-waveAmplitude / 2})`); label.attr( "transform", - `translate(${-w3 / 2 + (node2.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h2 / 2 + (node2.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w4 / 2 + (node2.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h3 / 2 + (node2.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node2, waveEdgeRect); node2.intersect = function(point8) { @@ -44471,32 +43738,32 @@ ${text4} const baseWidth = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); const baseHeight = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); const aspectRatio = baseWidth / baseHeight; - let w3 = baseWidth; - let h2 = baseHeight; - if (w3 > h2 * aspectRatio) { - h2 = w3 / aspectRatio; + let w4 = baseWidth; + let h3 = baseHeight; + if (w4 > h3 * aspectRatio) { + h3 = w4 / aspectRatio; } else { - w3 = h2 * aspectRatio; + w4 = h3 * aspectRatio; } - w3 = Math.max(w3, minWidth); - h2 = Math.max(h2, minHeight); - const waveAmplitude = Math.min(h2 * 0.2, h2 / 4); - const finalH = h2 + waveAmplitude * 2; + w4 = Math.max(w4, minWidth); + h3 = Math.max(h3, minHeight); + const waveAmplitude = Math.min(h3 * 0.2, h3 / 4); + const finalH = h3 + waveAmplitude * 2; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } const points = [ - { x: -w3 / 2, y: finalH / 2 }, - ...generateFullSineWavePoints(-w3 / 2, finalH / 2, w3 / 2, finalH / 2, waveAmplitude, 1), - { x: w3 / 2, y: -finalH / 2 }, - ...generateFullSineWavePoints(w3 / 2, -finalH / 2, -w3 / 2, -finalH / 2, waveAmplitude, -1) + { x: -w4 / 2, y: finalH / 2 }, + ...generateFullSineWavePoints(-w4 / 2, finalH / 2, w4 / 2, finalH / 2, waveAmplitude, 1), + { x: w4 / 2, y: -finalH / 2 }, + ...generateFullSineWavePoints(w4 / 2, -finalH / 2, -w4 / 2, -finalH / 2, waveAmplitude, -1) ]; const waveRectPath = createPathFromPoints(points); - const waveRectNode = rc.path(waveRectPath, options3); + const waveRectNode = rc.path(waveRectPath, options2); const waveRect = shapeSvg.insert(() => waveRectNode, ":first-child"); waveRect.attr("class", "basic label-container"); if (cssStyles && node2.look !== "handDrawn") { @@ -44528,28 +43795,28 @@ ${text4} const { labelStyles, nodeStyles } = styles2String(node2); node2.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent4, node2, getNodeClasses(node2)); - const w3 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); - const h2 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); + const w4 = Math.max(bbox.width + (node2.padding ?? 0) * 2, node2?.width ?? 0); + const h3 = Math.max(bbox.height + (node2.padding ?? 0) * 2, node2?.height ?? 0); const rectOffset = 5; - const x5 = -w3 / 2; - const y5 = -h2 / 2; + const x5 = -w4 / 2; + const y6 = -h3 / 2; const { cssStyles } = node2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); const outerPathPoints = [ - { x: x5 - rectOffset, y: y5 - rectOffset }, - { x: x5 - rectOffset, y: y5 + h2 }, - { x: x5 + w3, y: y5 + h2 }, - { x: x5 + w3, y: y5 - rectOffset } + { x: x5 - rectOffset, y: y6 - rectOffset }, + { x: x5 - rectOffset, y: y6 + h3 }, + { x: x5 + w4, y: y6 + h3 }, + { x: x5 + w4, y: y6 - rectOffset } ]; - const path4 = `M${x5 - rectOffset},${y5 - rectOffset} L${x5 + w3},${y5 - rectOffset} L${x5 + w3},${y5 + h2} L${x5 - rectOffset},${y5 + h2} L${x5 - rectOffset},${y5 - rectOffset} - M${x5 - rectOffset},${y5} L${x5 + w3},${y5} - M${x5},${y5 - rectOffset} L${x5},${y5 + h2}`; + const path4 = `M${x5 - rectOffset},${y6 - rectOffset} L${x5 + w4},${y6 - rectOffset} L${x5 + w4},${y6 + h3} L${x5 - rectOffset},${y6 + h3} L${x5 - rectOffset},${y6 - rectOffset} + M${x5 - rectOffset},${y6} L${x5 + w4},${y6} + M${x5},${y6 - rectOffset} L${x5},${y6 + h3}`; if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } - const no = rc.path(path4, options3); + const no = rc.path(path4, options2); const windowPane2 = shapeSvg.insert(() => no, ":first-child"); windowPane2.attr("transform", `translate(${rectOffset / 2}, ${rectOffset / 2})`); windowPane2.attr("class", "basic label-container"); @@ -44603,19 +43870,19 @@ ${text4} let PADDING = config5.er?.diagramPadding ?? 10; let TEXT_PADDING = config5.er?.entityPadding ?? 6; const { cssStyles } = node2; - const { labelStyles } = styles2String(node2); + const { labelStyles, nodeStyles } = styles2String(node2); if (entityNode.attributes.length === 0 && node2.label) { - const options4 = { + const options3 = { rx: 0, ry: 0, labelPaddingX: PADDING, labelPaddingY: PADDING * 1.5, classes: "" }; - if (calculateTextWidth(node2.label, config5) + options4.labelPaddingX * 2 < config5.er.minEntityWidth) { + if (calculateTextWidth(node2.label, config5) + options3.labelPaddingX * 2 < config5.er.minEntityWidth) { node2.width = config5.er.minEntityWidth; } - const shapeSvg2 = await drawRect3(parent4, node2, options4); + const shapeSvg2 = await drawRect3(parent4, node2, options3); if (!evaluate(config5.htmlLabels)) { const textElement = shapeSvg2.select("text"); const bbox = textElement.node()?.getBBox(); @@ -44636,6 +43903,7 @@ ${text4} nameBBox.height += TEXT_PADDING; let yOffset = 0; const yOffsets = []; + const rows = []; let maxTypeWidth = 0; let maxNameWidth = 0; let maxKeysWidth = 0; @@ -44683,10 +43951,10 @@ ${text4} labelStyles ); maxCommentWidth = Math.max(maxCommentWidth, commentBBox.width + PADDING); - yOffset += Math.max(typeBBox.height, nameBBox2.height, keysBBox.height, commentBBox.height) + TEXT_PADDING; - yOffsets.push(yOffset); + const rowHeight = Math.max(typeBBox.height, nameBBox2.height, keysBBox.height, commentBBox.height) + TEXT_PADDING; + rows.push({ yOffset, rowHeight }); + yOffset += rowHeight; } - yOffsets.pop(); let totalWidthSections = 4; if (maxKeysWidth <= PADDING) { keysPresent = false; @@ -44710,19 +43978,23 @@ ${text4} maxCommentWidth += difference2 / totalWidthSections; } } - const maxWidth = maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth; + const maxWidth2 = maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; - } - const w3 = Math.max(shapeBBox.width + PADDING * 2, node2?.width || 0, maxWidth); - const h2 = Math.max(shapeBBox.height + (yOffsets[0] || yOffset) + TEXT_PADDING, node2?.height || 0); - const x5 = -w3 / 2; - const y5 = -h2 / 2; - shapeSvg.selectAll("g:not(:first-child)").each((_2, i2, nodes6) => { - const text4 = select_default2(nodes6[i2]); + options2.roughness = 0; + options2.fillStyle = "solid"; + } + let totalShapeBBoxHeight = 0; + if (rows.length > 0) { + totalShapeBBoxHeight = rows.reduce((sum2, row) => sum2 + (row?.rowHeight ?? 0), 0); + } + const w4 = Math.max(shapeBBox.width + PADDING * 2, node2?.width || 0, maxWidth2); + const h3 = Math.max((totalShapeBBoxHeight ?? 0) + nameBBox.height, node2?.height || 0); + const x5 = -w4 / 2; + const y6 = -h3 / 2; + shapeSvg.selectAll("g:not(:first-child)").each((_3, i2, nodes5) => { + const text4 = select_default2(nodes5[i2]); const transform8 = text4.attr("transform"); let translateX2 = 0; let translateY2 = 0; @@ -44743,62 +44015,68 @@ ${text4} } text4.attr( "transform", - `translate(${x5 + PADDING / 2 + translateX2}, ${translateY2 + y5 + nameBBox.height + TEXT_PADDING / 2})` + `translate(${x5 + PADDING / 2 + translateX2}, ${translateY2 + y6 + nameBBox.height + TEXT_PADDING / 2})` ); }); - shapeSvg.select(".name").attr("transform", "translate(" + -nameBBox.width / 2 + ", " + (y5 + TEXT_PADDING / 2) + ")"); - const roughRect = rc.rectangle(x5, y5, w3, h2, options3); + shapeSvg.select(".name").attr("transform", "translate(" + -nameBBox.width / 2 + ", " + (y6 + TEXT_PADDING / 2) + ")"); + const roughRect = rc.rectangle(x5, y6, w4, h3, options2); const rect3 = shapeSvg.insert(() => roughRect, ":first-child").attr("style", cssStyles.join("")); const { themeVariables } = getConfig(); const { rowEven, rowOdd, nodeBorder } = themeVariables; yOffsets.push(0); - for (const [i2, yOffset2] of yOffsets.entries()) { - if (i2 === 0 && yOffsets.length > 1) { - continue; - } - const isEven = i2 % 2 === 0 && yOffset2 !== 0; - const roughRect2 = rc.rectangle(x5, nameBBox.height + y5 + yOffset2, w3, nameBBox.height, { - ...options3, + for (const [i2, row] of rows.entries()) { + const contentRowIndex = i2 + 1; + const isEven = contentRowIndex % 2 === 0 && row.yOffset !== 0; + const roughRect2 = rc.rectangle(x5, nameBBox.height + y6 + row?.yOffset, w4, row?.rowHeight, { + ...options2, fill: isEven ? rowEven : rowOdd, stroke: nodeBorder }); - shapeSvg.insert(() => roughRect2, "g.label").attr("style", cssStyles.join("")).attr("class", `row-rect-${i2 % 2 === 0 ? "even" : "odd"}`); + shapeSvg.insert(() => roughRect2, "g.label").attr("style", cssStyles.join("")).attr("class", `row-rect-${isEven ? "even" : "odd"}`); } - let roughLine = rc.line(x5, nameBBox.height + y5, w3 + x5, nameBBox.height + y5, options3); + let roughLine = rc.line(x5, nameBBox.height + y6, w4 + x5, nameBBox.height + y6, options2); shapeSvg.insert(() => roughLine).attr("class", "divider"); - roughLine = rc.line(maxTypeWidth + x5, nameBBox.height + y5, maxTypeWidth + x5, h2 + y5, options3); + roughLine = rc.line(maxTypeWidth + x5, nameBBox.height + y6, maxTypeWidth + x5, h3 + y6, options2); shapeSvg.insert(() => roughLine).attr("class", "divider"); if (keysPresent) { roughLine = rc.line( maxTypeWidth + maxNameWidth + x5, - nameBBox.height + y5, + nameBBox.height + y6, maxTypeWidth + maxNameWidth + x5, - h2 + y5, - options3 + h3 + y6, + options2 ); shapeSvg.insert(() => roughLine).attr("class", "divider"); } if (commentPresent) { roughLine = rc.line( maxTypeWidth + maxNameWidth + maxKeysWidth + x5, - nameBBox.height + y5, + nameBBox.height + y6, maxTypeWidth + maxNameWidth + maxKeysWidth + x5, - h2 + y5, - options3 + h3 + y6, + options2 ); shapeSvg.insert(() => roughLine).attr("class", "divider"); } for (const yOffset2 of yOffsets) { roughLine = rc.line( x5, - nameBBox.height + y5 + yOffset2, - w3 + x5, - nameBBox.height + y5 + yOffset2, - options3 + nameBBox.height + y6 + yOffset2, + w4 + x5, + nameBBox.height + y6 + yOffset2, + options2 ); shapeSvg.insert(() => roughLine).attr("class", "divider"); } updateNodeBounds(node2, rect3); + if (nodeStyles && node2.look !== "handDrawn") { + const allStyle = nodeStyles.split(";"); + const strokeStyles = allStyle?.filter((e3) => { + return e3.includes("stroke"); + })?.map((s2) => `${s2}`).join("; "); + shapeSvg.selectAll("path").attr("style", strokeStyles ?? ""); + shapeSvg.selectAll(".row-rect-even path").attr("style", nodeStyles); + } node2.intersect = function(point8) { return intersect_default.rect(node2, point8); }; @@ -45043,32 +44321,32 @@ ${text4} } const renderExtraBox = classNode.members.length === 0 && classNode.methods.length === 0 && !config5.class?.hideEmptyMembersBox; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } - const w3 = bbox.width; - let h2 = bbox.height; + const w4 = bbox.width; + let h3 = bbox.height; if (classNode.members.length === 0 && classNode.methods.length === 0) { - h2 += GAP; + h3 += GAP; } else if (classNode.members.length > 0 && classNode.methods.length === 0) { - h2 += GAP * 2; + h3 += GAP * 2; } - const x5 = -w3 / 2; - const y5 = -h2 / 2; + const x5 = -w4 / 2; + const y6 = -h3 / 2; const roughRect = rc.rectangle( x5 - PADDING, - y5 - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0), - w3 + 2 * PADDING, - h2 + 2 * PADDING + (renderExtraBox ? PADDING * 2 : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING : 0), - options3 + y6 - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0), + w4 + 2 * PADDING, + h3 + 2 * PADDING + (renderExtraBox ? PADDING * 2 : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING : 0), + options2 ); const rect3 = shapeSvg.insert(() => roughRect, ":first-child"); rect3.attr("class", "basic label-container"); const rectBBox = rect3.node().getBBox(); - shapeSvg.selectAll(".text").each((_2, i2, nodes6) => { - const text4 = select_default2(nodes6[i2]); + shapeSvg.selectAll(".text").each((_3, i2, nodes5) => { + const text4 = select_default2(nodes5[i2]); const transform8 = text4.attr("transform"); let translateY2 = 0; if (transform8) { @@ -45078,15 +44356,15 @@ ${text4} translateY2 = parseFloat(translate2[2]); } } - let newTranslateY = translateY2 + y5 + PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0); + let newTranslateY = translateY2 + y6 + PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0); if (!useHtmlLabels) { newTranslateY -= 4; } let newTranslateX = x5; if (text4.attr("class").includes("label-group") || text4.attr("class").includes("annotation-group")) { newTranslateX = -text4.node()?.getBBox().width / 2 || 0; - shapeSvg.selectAll("text").each(function(_3, i3, nodes7) { - if (window.getComputedStyle(nodes7[i3]).textAnchor === "middle") { + shapeSvg.selectAll("text").each(function(_4, i3, nodes6) { + if (window.getComputedStyle(nodes6[i3]).textAnchor === "middle") { newTranslateX = 0; } }); @@ -45099,10 +44377,10 @@ ${text4} if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) { const roughLine = rc.line( rectBBox.x, - annotationGroupHeight + labelGroupHeight + y5 + PADDING, + annotationGroupHeight + labelGroupHeight + y6 + PADDING, rectBBox.x + rectBBox.width, - annotationGroupHeight + labelGroupHeight + y5 + PADDING, - options3 + annotationGroupHeight + labelGroupHeight + y6 + PADDING, + options2 ); const line2 = shapeSvg.insert(() => roughLine); line2.attr("class", "divider").attr("style", styles4); @@ -45110,10 +44388,10 @@ ${text4} if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) { const roughLine = rc.line( rectBBox.x, - annotationGroupHeight + labelGroupHeight + membersGroupHeight + y5 + GAP * 2 + PADDING, + annotationGroupHeight + labelGroupHeight + membersGroupHeight + y6 + GAP * 2 + PADDING, rectBBox.x + rectBBox.width, - annotationGroupHeight + labelGroupHeight + membersGroupHeight + y5 + PADDING + GAP * 2, - options3 + annotationGroupHeight + labelGroupHeight + membersGroupHeight + y6 + PADDING + GAP * 2, + options2 ); const line2 = shapeSvg.insert(() => roughLine); line2.attr("class", "divider").attr("style", styles4); @@ -45196,7 +44474,7 @@ ${text4} if (isRequirementNode) { const idHeight = await addText3( shapeSvg, - `${requirementNode.requirementId ? `Id: ${requirementNode.requirementId}` : ""}`, + `${requirementNode.requirementId ? `ID: ${requirementNode.requirementId}` : ""}`, accumulativeHeight, node2.labelStyle ); @@ -45239,18 +44517,18 @@ ${text4} const totalWidth = (shapeSvg.node()?.getBBox().width ?? 200) + padding2; const totalHeight = (shapeSvg.node()?.getBBox().height ?? 200) + padding2; const x5 = -totalWidth / 2; - const y5 = -totalHeight / 2; + const y6 = -totalHeight / 2; const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, {}); + const options2 = userNodeOverrides(node2, {}); if (node2.look !== "handDrawn") { - options3.roughness = 0; - options3.fillStyle = "solid"; + options2.roughness = 0; + options2.fillStyle = "solid"; } - const roughRect = rc.rectangle(x5, y5, totalWidth, totalHeight, options3); + const roughRect = rc.rectangle(x5, y6, totalWidth, totalHeight, options2); const rect3 = shapeSvg.insert(() => roughRect, ":first-child"); rect3.attr("class", "basic label-container").attr("style", nodeStyles); - shapeSvg.selectAll(".label").each((_2, i2, nodes6) => { - const text4 = select_default2(nodes6[i2]); + shapeSvg.selectAll(".label").each((_3, i2, nodes5) => { + const text4 = select_default2(nodes5[i2]); const transform8 = text4.attr("transform"); let translateX2 = 0; let translateY2 = 0; @@ -45272,10 +44550,10 @@ ${text4} if (accumulativeHeight > typeHeight + nameHeight + gap) { const roughLine = rc.line( x5, - y5 + typeHeight + nameHeight + gap, + y6 + typeHeight + nameHeight + gap, x5 + totalWidth, - y5 + typeHeight + nameHeight + gap, - options3 + y6 + typeHeight + nameHeight + gap, + options2 ); const dividerLine = shapeSvg.insert(() => roughLine); dividerLine.attr("style", nodeStyles); @@ -45356,12 +44634,12 @@ ${text4} } = await labelHelper(parent4, kanbanNode, getNodeClasses(kanbanNode)); const padding2 = kanbanNode.padding || 10; let ticketUrl = ""; - let link3; + let link2; if ("ticket" in kanbanNode && kanbanNode.ticket && config5?.kanban?.ticketBaseUrl) { ticketUrl = config5?.kanban?.ticketBaseUrl.replace("#TICKET#", kanbanNode.ticket); - link3 = shapeSvg.insert("svg:a", ":first-child").attr("class", "kanban-ticket-link").attr("xlink:href", ticketUrl).attr("target", "_blank"); + link2 = shapeSvg.insert("svg:a", ":first-child").attr("class", "kanban-ticket-link").attr("xlink:href", ticketUrl).attr("target", "_blank"); } - const options3 = { + const options2 = { useHtmlLabels: kanbanNode.useHtmlLabels, labelStyle: kanbanNode.labelStyle || "", width: kanbanNode.width, @@ -45370,23 +44648,23 @@ ${text4} centerLabel: false }; let labelEl, bbox2; - if (link3) { + if (link2) { ({ label: labelEl, bbox: bbox2 } = await insertLabel( - link3, + link2, "ticket" in kanbanNode && kanbanNode.ticket || "", - options3 + options2 )); } else { ({ label: labelEl, bbox: bbox2 } = await insertLabel( shapeSvg, "ticket" in kanbanNode && kanbanNode.ticket || "", - options3 + options2 )); } const { label: labelElAssigned, bbox: bboxAssigned } = await insertLabel( shapeSvg, "assigned" in kanbanNode && kanbanNode.assigned || "", - options3 + options2 ); kanbanNode.width = orgWidth; const labelPaddingY = 10; @@ -45394,7 +44672,7 @@ ${text4} const heightAdj = Math.max(bbox2.height, bboxAssigned.height) / 2; const totalHeight = Math.max(bbox.height + labelPaddingY * 2, kanbanNode?.height || 0) + heightAdj; const x5 = -totalWidth / 2; - const y5 = -totalHeight / 2; + const y6 = -totalHeight / 2; labelElTitle.attr( "transform", "translate(" + (padding2 - totalWidth / 2) + ", " + (-heightAdj - bbox.height / 2) + ")" @@ -45412,19 +44690,19 @@ ${text4} const { cssStyles } = kanbanNode; if (kanbanNode.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options4 = userNodeOverrides(kanbanNode, {}); - const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x5, y5, totalWidth, totalHeight, rx || 0), options4) : rc.rectangle(x5, y5, totalWidth, totalHeight, options4); + const options3 = userNodeOverrides(kanbanNode, {}); + const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x5, y6, totalWidth, totalHeight, rx || 0), options3) : rc.rectangle(x5, y6, totalWidth, totalHeight, options3); rect3 = shapeSvg.insert(() => roughNode, ":first-child"); rect3.attr("class", "basic label-container").attr("style", cssStyles ? cssStyles : null); } else { rect3 = shapeSvg.insert("rect", ":first-child"); - rect3.attr("class", "basic label-container __APA__").attr("style", nodeStyles).attr("rx", rx ?? 5).attr("ry", ry ?? 5).attr("x", x5).attr("y", y5).attr("width", totalWidth).attr("height", totalHeight); + rect3.attr("class", "basic label-container __APA__").attr("style", nodeStyles).attr("rx", rx ?? 5).attr("ry", ry ?? 5).attr("x", x5).attr("y", y6).attr("width", totalWidth).attr("height", totalHeight); const priority3 = "priority" in kanbanNode && kanbanNode.priority; if (priority3) { const line2 = shapeSvg.append("line"); const lineX = x5 + 2; - const y1 = y5 + Math.floor((rx ?? 0) / 2); - const y22 = y5 + totalHeight - Math.floor((rx ?? 0) / 2); + const y1 = y6 + Math.floor((rx ?? 0) / 2); + const y22 = y6 + totalHeight - Math.floor((rx ?? 0) / 2); line2.attr("x1", lineX).attr("y1", y1).attr("x2", lineX).attr("y2", y22).attr("stroke-width", "4").attr("stroke", colorFromPriority(priority3)); } } @@ -45463,6 +44741,205 @@ ${text4} } }); + // src/rendering-util/rendering-elements/shapes/bang.ts + async function bang(parent4, node2) { + const { labelStyles, nodeStyles } = styles2String(node2); + node2.labelStyle = labelStyles; + const { shapeSvg, bbox, halfPadding, label } = await labelHelper( + parent4, + node2, + getNodeClasses(node2) + ); + const w4 = bbox.width + 10 * halfPadding; + const h3 = bbox.height + 8 * halfPadding; + const r2 = 0.15 * w4; + const { cssStyles } = node2; + const minWidth = bbox.width + 20; + const minHeight = bbox.height + 20; + const effectiveWidth = Math.max(w4, minWidth); + const effectiveHeight = Math.max(h3, minHeight); + label.attr("transform", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`); + let bangElem; + const path4 = `M0 0 + a${r2},${r2} 1 0,0 ${effectiveWidth * 0.25},${-1 * effectiveHeight * 0.1} + a${r2},${r2} 1 0,0 ${effectiveWidth * 0.25},${0} + a${r2},${r2} 1 0,0 ${effectiveWidth * 0.25},${0} + a${r2},${r2} 1 0,0 ${effectiveWidth * 0.25},${effectiveHeight * 0.1} + + a${r2},${r2} 1 0,0 ${effectiveWidth * 0.15},${effectiveHeight * 0.33} + a${r2 * 0.8},${r2 * 0.8} 1 0,0 0,${effectiveHeight * 0.34} + a${r2},${r2} 1 0,0 ${-1 * effectiveWidth * 0.15},${effectiveHeight * 0.33} + + a${r2},${r2} 1 0,0 ${-1 * effectiveWidth * 0.25},${effectiveHeight * 0.15} + a${r2},${r2} 1 0,0 ${-1 * effectiveWidth * 0.25},0 + a${r2},${r2} 1 0,0 ${-1 * effectiveWidth * 0.25},0 + a${r2},${r2} 1 0,0 ${-1 * effectiveWidth * 0.25},${-1 * effectiveHeight * 0.15} + + a${r2},${r2} 1 0,0 ${-1 * effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33} + a${r2 * 0.8},${r2 * 0.8} 1 0,0 0,${-1 * effectiveHeight * 0.34} + a${r2},${r2} 1 0,0 ${effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33} + H0 V0 Z`; + if (node2.look === "handDrawn") { + const rc = at.svg(shapeSvg); + const options2 = userNodeOverrides(node2, {}); + const roughNode = rc.path(path4, options2); + bangElem = shapeSvg.insert(() => roughNode, ":first-child"); + bangElem.attr("class", "basic label-container").attr("style", handleUndefinedAttr(cssStyles)); + } else { + bangElem = shapeSvg.insert("path", ":first-child").attr("class", "basic label-container").attr("style", nodeStyles).attr("d", path4); + } + bangElem.attr("transform", `translate(${-effectiveWidth / 2}, ${-effectiveHeight / 2})`); + updateNodeBounds(node2, bangElem); + node2.calcIntersect = function(bounds4, point8) { + return intersect_default.rect(bounds4, point8); + }; + node2.intersect = function(point8) { + log.info("Bang intersect", node2, point8); + return intersect_default.rect(node2, point8); + }; + return shapeSvg; + } + var init_bang = __esm({ + "src/rendering-util/rendering-elements/shapes/bang.ts"() { + "use strict"; + init_logger(); + init_util(); + init_intersect(); + init_handDrawnShapeStyles(); + init_rough_esm(); + init_utils2(); + __name(bang, "bang"); + } + }); + + // src/rendering-util/rendering-elements/shapes/cloud.ts + async function cloud(parent4, node2) { + const { labelStyles, nodeStyles } = styles2String(node2); + node2.labelStyle = labelStyles; + const { shapeSvg, bbox, halfPadding, label } = await labelHelper( + parent4, + node2, + getNodeClasses(node2) + ); + const w4 = bbox.width + 2 * halfPadding; + const h3 = bbox.height + 2 * halfPadding; + const r1 = 0.15 * w4; + const r2 = 0.25 * w4; + const r3 = 0.35 * w4; + const r4 = 0.2 * w4; + const { cssStyles } = node2; + let cloudElem; + const path4 = `M0 0 + a${r1},${r1} 0 0,1 ${w4 * 0.25},${-1 * w4 * 0.1} + a${r3},${r3} 1 0,1 ${w4 * 0.4},${-1 * w4 * 0.1} + a${r2},${r2} 1 0,1 ${w4 * 0.35},${w4 * 0.2} + + a${r1},${r1} 1 0,1 ${w4 * 0.15},${h3 * 0.35} + a${r4},${r4} 1 0,1 ${-1 * w4 * 0.15},${h3 * 0.65} + + a${r2},${r1} 1 0,1 ${-1 * w4 * 0.25},${w4 * 0.15} + a${r3},${r3} 1 0,1 ${-1 * w4 * 0.5},0 + a${r1},${r1} 1 0,1 ${-1 * w4 * 0.25},${-1 * w4 * 0.15} + + a${r1},${r1} 1 0,1 ${-1 * w4 * 0.1},${-1 * h3 * 0.35} + a${r4},${r4} 1 0,1 ${w4 * 0.1},${-1 * h3 * 0.65} + H0 V0 Z`; + if (node2.look === "handDrawn") { + const rc = at.svg(shapeSvg); + const options2 = userNodeOverrides(node2, {}); + const roughNode = rc.path(path4, options2); + cloudElem = shapeSvg.insert(() => roughNode, ":first-child"); + cloudElem.attr("class", "basic label-container").attr("style", handleUndefinedAttr(cssStyles)); + } else { + cloudElem = shapeSvg.insert("path", ":first-child").attr("class", "basic label-container").attr("style", nodeStyles).attr("d", path4); + } + label.attr("transform", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`); + cloudElem.attr("transform", `translate(${-w4 / 2}, ${-h3 / 2})`); + updateNodeBounds(node2, cloudElem); + node2.calcIntersect = function(bounds4, point8) { + return intersect_default.rect(bounds4, point8); + }; + node2.intersect = function(point8) { + log.info("Cloud intersect", node2, point8); + return intersect_default.rect(node2, point8); + }; + return shapeSvg; + } + var init_cloud = __esm({ + "src/rendering-util/rendering-elements/shapes/cloud.ts"() { + "use strict"; + init_rough_esm(); + init_logger(); + init_utils2(); + init_intersect(); + init_handDrawnShapeStyles(); + init_util(); + __name(cloud, "cloud"); + } + }); + + // src/rendering-util/rendering-elements/shapes/defaultMindmapNode.ts + async function defaultMindmapNode(parent4, node2) { + const { labelStyles, nodeStyles } = styles2String(node2); + node2.labelStyle = labelStyles; + const { shapeSvg, bbox, halfPadding, label } = await labelHelper( + parent4, + node2, + getNodeClasses(node2) + ); + const w4 = bbox.width + 8 * halfPadding; + const h3 = bbox.height + 2 * halfPadding; + const rd = 5; + const rectPath = ` + M${-w4 / 2} ${h3 / 2 - rd} + v${-h3 + 2 * rd} + q0,-${rd} ${rd},-${rd} + h${w4 - 2 * rd} + q${rd},0 ${rd},${rd} + v${h3 - 2 * rd} + q0,${rd} -${rd},${rd} + h${-w4 + 2 * rd} + q-${rd},0 -${rd},-${rd} + Z + `; + const bg = shapeSvg.append("path").attr("id", "node-" + node2.id).attr("class", "node-bkg node-" + node2.type).attr("style", nodeStyles).attr("d", rectPath); + shapeSvg.append("line").attr("class", "node-line-").attr("x1", -w4 / 2).attr("y1", h3 / 2).attr("x2", w4 / 2).attr("y2", h3 / 2); + label.attr("transform", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`); + shapeSvg.append(() => label.node()); + updateNodeBounds(node2, bg); + node2.calcIntersect = function(bounds4, point8) { + return intersect_default.rect(bounds4, point8); + }; + node2.intersect = function(point8) { + return intersect_default.rect(node2, point8); + }; + return shapeSvg; + } + var init_defaultMindmapNode = __esm({ + "src/rendering-util/rendering-elements/shapes/defaultMindmapNode.ts"() { + "use strict"; + init_intersect(); + init_handDrawnShapeStyles(); + init_util(); + __name(defaultMindmapNode, "defaultMindmapNode"); + } + }); + + // src/rendering-util/rendering-elements/shapes/mindmapCircle.ts + async function mindmapCircle(parent4, node2) { + const options2 = { + padding: node2.padding ?? 0 + }; + return circle(parent4, node2, options2); + } + var init_mindmapCircle = __esm({ + "src/rendering-util/rendering-elements/shapes/mindmapCircle.ts"() { + "use strict"; + init_circle(); + __name(mindmapCircle, "mindmapCircle"); + } + }); + // src/rendering-util/rendering-elements/shapes.ts function isValidShape(shape) { return shape in shapes; @@ -45531,6 +45008,10 @@ ${text4} init_classBox(); init_requirementBox(); init_kanbanItem(); + init_bang(); + init_cloud(); + init_defaultMindmapNode(); + init_mindmapCircle(); shapesDefs = [ { semanticName: "Process", @@ -45582,6 +45063,22 @@ ${text4} aliases: ["circ"], handler: circle }, + { + semanticName: "Bang", + name: "Bang", + shortName: "bang", + description: "Bang", + aliases: ["bang"], + handler: bang + }, + { + semanticName: "Cloud", + name: "Cloud", + shortName: "cloud", + description: "cloud", + aliases: ["cloud"], + handler: cloud + }, { semanticName: "Decision", name: "Diamond", @@ -45917,6 +45414,9 @@ ${text4} anchor, // Kanban diagram kanbanItem, + //Mindmap diagram + mindmapCircle, + defaultMindmapNode, // class diagram classBox, // er diagram @@ -46013,19 +45513,19 @@ ${text4} * * @param id - id of the node */ - lookUpDomId(id29) { + lookUpDomId(id30) { for (const vertex of this.vertices.values()) { - if (vertex.id === id29) { + if (vertex.id === id30) { return vertex.domId; } } - return id29; + return id30; } /** * Function called by parser when a node definition has been found */ - addVertex(id29, textObj, type3, style3, classes3, dir2, props = {}, metadata) { - if (!id29 || id29.trim().length === 0) { + addVertex(id30, textObj, type3, style3, classes3, dir2, props = {}, metadata) { + if (!id30 || id30.trim().length === 0) { return; } let doc; @@ -46038,7 +45538,7 @@ ${text4} } doc = load(yamlData, { schema: JSON_SCHEMA }); } - const edge = this.edges.find((e3) => e3.id === id29); + const edge = this.edges.find((e3) => e3.id === id30); if (edge) { const edgeDoc = doc; if (edgeDoc?.animate !== void 0) { @@ -46047,19 +45547,22 @@ ${text4} if (edgeDoc?.animation !== void 0) { edge.animation = edgeDoc.animation; } + if (edgeDoc?.curve !== void 0) { + edge.interpolate = edgeDoc.curve; + } return; } let txt; - let vertex = this.vertices.get(id29); + let vertex = this.vertices.get(id30); if (vertex === void 0) { vertex = { - id: id29, + id: id30, labelType: "text", - domId: MERMAID_DOM_ID_PREFIX + id29 + "-" + this.vertexCounter, + domId: MERMAID_DOM_ID_PREFIX + id30 + "-" + this.vertexCounter, styles: [], classes: [] }; - this.vertices.set(id29, vertex); + this.vertices.set(id30, vertex); } this.vertexCounter++; if (textObj !== void 0) { @@ -46072,7 +45575,7 @@ ${text4} vertex.text = txt; } else { if (vertex.text === void 0) { - vertex.text = id29; + vertex.text = id30; } } if (type3 !== void 0) { @@ -46110,7 +45613,7 @@ ${text4} } if (doc?.icon) { vertex.icon = doc?.icon; - if (!doc.label?.trim() && vertex.text === id29) { + if (!doc.label?.trim() && vertex.text === id30) { vertex.text = ""; } } @@ -46122,7 +45625,7 @@ ${text4} } if (doc?.img) { vertex.img = doc?.img; - if (!doc.label?.trim() && vertex.text === id29) { + if (!doc.label?.trim() && vertex.text === id30) { vertex.text = ""; } } @@ -46141,7 +45644,7 @@ ${text4} * Function called by parser when a link/edge definition has been found * */ - addSingleLink(_start, _end, type3, id29) { + addSingleLink(_start, _end, type3, id30) { const start3 = _start; const end2 = _end; const edge = { @@ -46168,8 +45671,8 @@ ${text4} edge.stroke = type3.stroke; edge.length = type3.length > 10 ? 10 : type3.length; } - if (id29 && !this.edges.some((e3) => e3.id === id29)) { - edge.id = id29; + if (id30 && !this.edges.some((e3) => e3.id === id30)) { + edge.id = id30; edge.isUserDefinedId = true; } else { const existingLinks = this.edges.filter((e3) => e3.start === edge.start && e3.end === edge.end); @@ -46199,14 +45702,14 @@ You have to call mermaid.initialize.` return value2 !== null && typeof value2 === "object" && "id" in value2 && typeof value2.id === "string"; } addLink(_start, _end, linkData) { - const id29 = this.isLinkData(linkData) ? linkData.id.replace("@", "") : void 0; - log.info("addLink", _start, _end, id29); + const id30 = this.isLinkData(linkData) ? linkData.id.replace("@", "") : void 0; + log.info("addLink", _start, _end, id30); for (const start3 of _start) { for (const end2 of _end) { const isLastStart = start3 === _start[_start.length - 1]; const isFirstEnd = end2 === _end[0]; if (isLastStart && isFirstEnd) { - this.addSingleLink(start3, end2, linkData, id29); + this.addSingleLink(start3, end2, linkData, id30); } else { this.addSingleLink(start3, end2, linkData, void 0); } @@ -46248,11 +45751,11 @@ You have to call mermaid.initialize.` } addClass(ids, _style) { const style3 = _style.join().replace(/\\,/g, "\xA7\xA7\xA7").replace(/,/g, ";").replace(/ยงยงยง/g, ",").split(";"); - ids.split(",").forEach((id29) => { - let classNode = this.classes.get(id29); + ids.split(",").forEach((id30) => { + let classNode = this.classes.get(id30); if (classNode === void 0) { - classNode = { id: id29, styles: [], textStyles: [] }; - this.classes.set(id29, classNode); + classNode = { id: id30, styles: [], textStyles: [] }; + this.classes.set(id30, classNode); } if (style3 !== void 0 && style3 !== null) { style3.forEach((s2) => { @@ -46270,7 +45773,7 @@ You have to call mermaid.initialize.` * */ setDirection(dir2) { - this.direction = dir2; + this.direction = dir2.trim(); if (/.* e3.id === id29); + const edge = this.edges.find((e3) => e3.id === id30); if (edge) { edge.classes.push(className); } - const subGraph = this.subGraphLookup.get(id29); + const subGraph = this.subGraphLookup.get(id30); if (subGraph) { subGraph.classes.push(className); } @@ -46314,12 +45817,12 @@ You have to call mermaid.initialize.` return; } tooltip = this.sanitizeText(tooltip); - for (const id29 of ids.split(",")) { - this.tooltips.set(this.version === "gen-1" ? this.lookUpDomId(id29) : id29, tooltip); + for (const id30 of ids.split(",")) { + this.tooltips.set(this.version === "gen-1" ? this.lookUpDomId(id30) : id30, tooltip); } } - setClickFun(id29, functionName, functionArgs) { - const domId = this.lookUpDomId(id29); + setClickFun(id30, functionName, functionArgs) { + const domId = this.lookUpDomId(id30); if (getConfig2().securityLevel !== "loose") { return; } @@ -46338,9 +45841,9 @@ You have to call mermaid.initialize.` } } if (argList.length === 0) { - argList.push(id29); + argList.push(id30); } - const vertex = this.vertices.get(id29); + const vertex = this.vertices.get(id30); if (vertex) { vertex.haveCallback = true; this.funs.push(() => { @@ -46365,8 +45868,8 @@ You have to call mermaid.initialize.` * @param target - Target attribute for the link */ setLink(ids, linkStr, target) { - ids.split(",").forEach((id29) => { - const vertex = this.vertices.get(id29); + ids.split(",").forEach((id30) => { + const vertex = this.vertices.get(id30); if (vertex !== void 0) { vertex.link = utils_default2.formatUrl(linkStr, this.config); vertex.linkTarget = target; @@ -46374,8 +45877,8 @@ You have to call mermaid.initialize.` }); this.setClass(ids, "clickable"); } - getTooltip(id29) { - return this.tooltips.get(id29); + getTooltip(id30) { + return this.tooltips.get(id30); } /** * Called by parser when a click definition is found. Registers an event handler. @@ -46385,8 +45888,8 @@ You have to call mermaid.initialize.` * @param functionArgs - Arguments to be passed to the function */ setClickEvent(ids, functionName, functionArgs) { - ids.split(",").forEach((id29) => { - this.setClickFun(id29, functionName, functionArgs); + ids.split(",").forEach((id30) => { + this.setClickFun(id30, functionName, functionArgs); }); this.setClass(ids, "clickable"); } @@ -46425,8 +45928,8 @@ You have to call mermaid.initialize.` tooltipElem = select_default2("body").append("div").attr("class", "mermaidTooltip").style("opacity", 0); } const svg2 = select_default2(element3).select("svg"); - const nodes6 = svg2.selectAll("g.node"); - nodes6.on("mouseover", (e3) => { + const nodes5 = svg2.selectAll("g.node"); + nodes5.on("mouseover", (e3) => { const el = select_default2(e3.currentTarget); const title2 = el.attr("title"); if (title2 === null) { @@ -46467,11 +45970,11 @@ You have to call mermaid.initialize.` defaultStyle() { return "fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"; } - addSubGraph(_id, list2, _title) { - let id29 = _id.text.trim(); + addSubGraph(_id, list, _title) { + let id30 = _id.text.trim(); let title2 = _title.text; if (_id === _title && /\s/.exec(_title.text)) { - id29 = void 0; + id30 = void 0; } const uniq2 = /* @__PURE__ */ __name((a2) => { const prims = { boolean: {}, number: {}, string: {} }; @@ -46494,18 +45997,22 @@ You have to call mermaid.initialize.` }); return { nodeList: nodeList2, dir: dir3 }; }, "uniq"); - const { nodeList, dir: dir2 } = uniq2(list2.flat()); + const result = uniq2(list.flat()); + const nodeList = result.nodeList; + let dir2 = result.dir; + const flowchartConfig = getConfig2().flowchart ?? {}; + dir2 = dir2 ?? (flowchartConfig.inheritDir ? this.getDirection() ?? getConfig2().direction ?? void 0 : void 0); if (this.version === "gen-1") { for (let i2 = 0; i2 < nodeList.length; i2++) { nodeList[i2] = this.lookUpDomId(nodeList[i2]); } } - id29 = id29 ?? "subGraph" + this.subCount; + id30 = id30 ?? "subGraph" + this.subCount; title2 = title2 || ""; title2 = this.sanitizeText(title2); this.subCount = this.subCount + 1; const subGraph = { - id: id29, + id: id30, nodes: nodeList, title: title2.trim(), classes: [], @@ -46515,19 +46022,19 @@ You have to call mermaid.initialize.` log.info("Adding", subGraph.id, subGraph.nodes, subGraph.dir); subGraph.nodes = this.makeUniq(subGraph, this.subGraphs).nodes; this.subGraphs.push(subGraph); - this.subGraphLookup.set(id29, subGraph); - return id29; + this.subGraphLookup.set(id30, subGraph); + return id30; } - getPosForId(id29) { + getPosForId(id30) { for (const [i2, subGraph] of this.subGraphs.entries()) { - if (subGraph.id === id29) { + if (subGraph.id === id30) { return i2; } } return -1; } - indexNodes2(id29, pos) { - const nodes6 = this.subGraphs[pos].nodes; + indexNodes2(id30, pos) { + const nodes5 = this.subGraphs[pos].nodes; this.secCount = this.secCount + 1; if (this.secCount > 2e3) { return { @@ -46536,18 +46043,18 @@ You have to call mermaid.initialize.` }; } this.posCrossRef[this.secCount] = pos; - if (this.subGraphs[pos].id === id29) { + if (this.subGraphs[pos].id === id30) { return { result: true, count: 0 }; } - let count = 0; + let count2 = 0; let posCount = 1; - while (count < nodes6.length) { - const childPos = this.getPosForId(nodes6[count]); + while (count2 < nodes5.length) { + const childPos = this.getPosForId(nodes5[count2]); if (childPos >= 0) { - const res = this.indexNodes2(id29, childPos); + const res = this.indexNodes2(id30, childPos); if (res.result) { return { result: true, @@ -46557,7 +46064,7 @@ You have to call mermaid.initialize.` posCount = posCount + res.count; } } - count = count + 1; + count2 = count2 + 1; } return { result: false, @@ -46611,13 +46118,13 @@ You have to call mermaid.initialize.` } countChar(char2, str2) { const length2 = str2.length; - let count = 0; + let count2 = 0; for (let i2 = 0; i2 < length2; ++i2) { if (str2[i2] === char2) { - ++count; + ++count2; } } - return count; + return count2; } destructEndLink(_str) { const str2 = _str.trim(); @@ -46735,8 +46242,8 @@ You have to call mermaid.initialize.` return vertex.type; } } - findNode(nodes6, id29) { - return nodes6.find((node2) => node2.id === id29); + findNode(nodes5, id30) { + return nodes5.find((node2) => node2.id === id30); } destructEdgeType(type3) { let arrowTypeStart = "none"; @@ -46756,10 +46263,10 @@ You have to call mermaid.initialize.` } return { arrowTypeStart, arrowTypeEnd }; } - addNodeFromVertex(vertex, nodes6, parentDB, subGraphDB, config5, look) { + addNodeFromVertex(vertex, nodes5, parentDB, subGraphDB, config5, look) { const parentId = parentDB.get(vertex.id); const isGroup2 = subGraphDB.get(vertex.id) ?? false; - const node2 = this.findNode(nodes6, vertex.id); + const node2 = this.findNode(nodes5, vertex.id); if (node2) { node2.cssStyles = vertex.styles; node2.cssCompiledStyles = this.getCompiledStyles(vertex.classes); @@ -46788,13 +46295,13 @@ You have to call mermaid.initialize.` constraint: vertex.constraint }; if (isGroup2) { - nodes6.push({ + nodes5.push({ ...baseNode, isGroup: true, shape: "rect" }); } else { - nodes6.push({ + nodes5.push({ ...baseNode, isGroup: false, shape: this.getTypeFromVertex(vertex) @@ -46817,7 +46324,7 @@ You have to call mermaid.initialize.` } getData() { const config5 = getConfig2(); - const nodes6 = []; + const nodes5 = []; const edges3 = []; const subGraphs = this.getSubGraphs(); const parentDB = /* @__PURE__ */ new Map(); @@ -46827,13 +46334,13 @@ You have to call mermaid.initialize.` if (subGraph.nodes.length > 0) { subGraphDB.set(subGraph.id, true); } - for (const id29 of subGraph.nodes) { - parentDB.set(id29, subGraph.id); + for (const id30 of subGraph.nodes) { + parentDB.set(id30, subGraph.id); } } for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) { const subGraph = subGraphs[i2]; - nodes6.push({ + nodes5.push({ id: subGraph.id, label: subGraph.title, labelStyle: "", @@ -46849,7 +46356,7 @@ You have to call mermaid.initialize.` } const n2 = this.getVertices(); n2.forEach((vertex) => { - this.addNodeFromVertex(vertex, nodes6, parentDB, subGraphDB, config5, config5.look || "classic"); + this.addNodeFromVertex(vertex, nodes5, parentDB, subGraphDB, config5, config5.look || "classic"); }); const e3 = this.getEdges(); e3.forEach((rawEdge, index) => { @@ -46883,7 +46390,7 @@ You have to call mermaid.initialize.` }; edges3.push(edge); }); - return { nodes: nodes6, edges: edges3, other: {}, config: config5 }; + return { nodes: nodes5, edges: edges3, other: {}, config: config5 }; } defaultConfig() { return defaultConfig2.flowchart; @@ -46898,13 +46405,13 @@ You have to call mermaid.initialize.` "src/rendering-util/insertElementsForSize.js"() { "use strict"; init_src32(); - getDiagramElement = /* @__PURE__ */ __name((id29, securityLevel) => { + getDiagramElement = /* @__PURE__ */ __name((id30, securityLevel) => { let sandboxElement; if (securityLevel === "sandbox") { - sandboxElement = select_default2("#i" + id29); + sandboxElement = select_default2("#i" + id30); } - const root4 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); - const svg2 = root4.select(`[id="${id29}"]`); + const root3 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); + const svg2 = root3.select(`[id="${id30}"]`); return svg2; }, "getDiagramElement"); } @@ -46976,12 +46483,12 @@ You have to call mermaid.initialize.` } const height2 = node2.height; const x5 = node2.x - width3 / 2; - const y5 = node2.y - height2 / 2; + const y6 = node2.y - height2 / 2; log.trace("Data ", node2, JSON.stringify(node2)); let rect3; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, { + const options2 = userNodeOverrides(node2, { roughness: 0.7, fill: clusterBkg, // fill: 'red', @@ -46989,7 +46496,7 @@ You have to call mermaid.initialize.` fillWeight: 3, seed: handDrawnSeed }); - const roughNode = rc.path(createRoundedRectPathD(x5, y5, width3, height2, 0), options3); + const roughNode = rc.path(createRoundedRectPathD(x5, y6, width3, height2, 0), options2); rect3 = shapeSvg.insert(() => { log.debug("Rough node insert CXC", roughNode); return roughNode; @@ -46998,7 +46505,7 @@ You have to call mermaid.initialize.` rect3.select("path").attr("style", backgroundStyles.join(";").replace("fill", "stroke")); } else { rect3 = shapeSvg.insert("rect", ":first-child"); - rect3.attr("style", nodeStyles).attr("rx", node2.rx).attr("ry", node2.ry).attr("x", x5).attr("y", y5).attr("width", width3).attr("height", height2); + rect3.attr("style", nodeStyles).attr("rx", node2.rx).attr("ry", node2.ry).attr("x", x5).attr("y", y6).attr("width", width3).attr("height", height2); } const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig2); labelEl.attr( @@ -47064,20 +46571,20 @@ You have to call mermaid.initialize.` const height2 = node2.height + padding2; const innerHeight = node2.height + padding2 - bbox.height - 6; const x5 = node2.x - width3 / 2; - const y5 = node2.y - height2 / 2; + const y6 = node2.y - height2 / 2; node2.width = width3; const innerY = node2.y - node2.height / 2 - halfPadding + bbox.height + 2; let rect3; if (node2.look === "handDrawn") { const isAlt = node2.cssClasses.includes("statediagram-cluster-alt"); const rc = at.svg(shapeSvg); - const roughOuterNode = node2.rx || node2.ry ? rc.path(createRoundedRectPathD(x5, y5, width3, height2, 10), { + const roughOuterNode = node2.rx || node2.ry ? rc.path(createRoundedRectPathD(x5, y6, width3, height2, 10), { roughness: 0.7, fill: compositeTitleBackground, fillStyle: "solid", stroke: nodeBorder, seed: handDrawnSeed - }) : rc.rectangle(x5, y5, width3, height2, { seed: handDrawnSeed }); + }) : rc.rectangle(x5, y6, width3, height2, { seed: handDrawnSeed }); rect3 = shapeSvg.insert(() => roughOuterNode, ":first-child"); const roughInnerNode = rc.rectangle(x5, innerY, width3, innerHeight, { fill: isAlt ? altBackground : compositeBackground, @@ -47090,12 +46597,12 @@ You have to call mermaid.initialize.` } else { rect3 = outerRectG.insert("rect", ":first-child"); const outerRectClass = "outer"; - rect3.attr("class", outerRectClass).attr("x", x5).attr("y", y5).attr("width", width3).attr("height", height2).attr("data-look", node2.look); + rect3.attr("class", outerRectClass).attr("x", x5).attr("y", y6).attr("width", width3).attr("height", height2).attr("data-look", node2.look); innerRect.attr("class", "inner").attr("x", x5).attr("y", innerY).attr("width", width3).attr("height", innerHeight); } label.attr( "transform", - `translate(${node2.x - bbox.width / 2}, ${y5 + 1 - (evaluate(siteConfig2.flowchart.htmlLabels) ? 0 : 3)})` + `translate(${node2.x - bbox.width / 2}, ${y6 + 1 - (evaluate(siteConfig2.flowchart.htmlLabels) ? 0 : 3)})` ); const rectBox = rect3.node().getBBox(); node2.height = rectBox.height; @@ -47138,12 +46645,12 @@ You have to call mermaid.initialize.` } const height2 = node2.height; const x5 = node2.x - width3 / 2; - const y5 = node2.y - height2 / 2; + const y6 = node2.y - height2 / 2; log.trace("Data ", node2, JSON.stringify(node2)); let rect3; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const options3 = userNodeOverrides(node2, { + const options2 = userNodeOverrides(node2, { roughness: 0.7, fill: clusterBkg, // fill: 'red', @@ -47151,7 +46658,7 @@ You have to call mermaid.initialize.` fillWeight: 4, seed: handDrawnSeed }); - const roughNode = rc.path(createRoundedRectPathD(x5, y5, width3, height2, node2.rx), options3); + const roughNode = rc.path(createRoundedRectPathD(x5, y6, width3, height2, node2.rx), options2); rect3 = shapeSvg.insert(() => { log.debug("Rough node insert CXC", roughNode); return roughNode; @@ -47160,7 +46667,7 @@ You have to call mermaid.initialize.` rect3.select("path").attr("style", backgroundStyles.join(";").replace("fill", "stroke")); } else { rect3 = shapeSvg.insert("rect", ":first-child"); - rect3.attr("style", nodeStyles).attr("rx", node2.rx).attr("ry", node2.ry).attr("x", x5).attr("y", y5).attr("width", width3).attr("height", height2); + rect3.attr("style", nodeStyles).attr("rx", node2.rx).attr("ry", node2.ry).attr("x", x5).attr("y", y6).attr("width", width3).attr("height", height2); } const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig2); labelEl.attr( @@ -47195,12 +46702,12 @@ You have to call mermaid.initialize.` node2.diff = -node2.padding; const height2 = node2.height + padding2; const x5 = node2.x - width3 / 2; - const y5 = node2.y - height2 / 2; + const y6 = node2.y - height2 / 2; node2.width = width3; let rect3; if (node2.look === "handDrawn") { const rc = at.svg(shapeSvg); - const roughOuterNode = rc.rectangle(x5, y5, width3, height2, { + const roughOuterNode = rc.rectangle(x5, y6, width3, height2, { fill: "lightgrey", roughness: 0.5, strokeLineDash: [5], @@ -47211,7 +46718,7 @@ You have to call mermaid.initialize.` } else { rect3 = outerRectG.insert("rect", ":first-child"); const outerRectClass = "divider"; - rect3.attr("class", outerRectClass).attr("x", x5).attr("y", y5).attr("width", width3).attr("height", height2).attr("data-look", node2.look); + rect3.attr("class", outerRectClass).attr("x", x5).attr("y", y6).attr("width", width3).attr("height", height2).attr("data-look", node2.look); } const rectBox = rect3.node().getBBox(); node2.height = rectBox.height; @@ -47257,48 +46764,54 @@ You have to call mermaid.initialize.` const deltaY = y22 - y1; return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY }; } - var markerOffsets, pointTransformer, getLineFunctionsWithOffset; + var markerOffsets, markerOffsets2, pointTransformer, getLineFunctionsWithOffset; var init_lineWithOffset = __esm({ "src/utils/lineWithOffset.ts"() { "use strict"; markerOffsets = { - aggregation: 18, - extension: 18, - composition: 18, + aggregation: 17.25, + extension: 17.25, + composition: 17.25, dependency: 6, lollipop: 13.5, arrow_point: 4 + //arrow_cross: 24, + }; + markerOffsets2 = { + arrow_point: 9, + arrow_cross: 12.5, + arrow_circle: 12.5 }; __name(calculateDeltaAndAngle, "calculateDeltaAndAngle"); - pointTransformer = /* @__PURE__ */ __name((data6) => { - if (Array.isArray(data6)) { - return { x: data6[0], y: data6[1] }; + pointTransformer = /* @__PURE__ */ __name((data5) => { + if (Array.isArray(data5)) { + return { x: data5[0], y: data5[1] }; } - return data6; + return data5; }, "pointTransformer"); getLineFunctionsWithOffset = /* @__PURE__ */ __name((edge) => { return { - x: /* @__PURE__ */ __name(function(d2, i2, data6) { + x: /* @__PURE__ */ __name(function(d3, i2, data5) { let offset = 0; - const DIRECTION = pointTransformer(data6[0]).x < pointTransformer(data6[data6.length - 1]).x ? "left" : "right"; + const DIRECTION = pointTransformer(data5[0]).x < pointTransformer(data5[data5.length - 1]).x ? "left" : "right"; if (i2 === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) { - const { angle: angle2, deltaX } = calculateDeltaAndAngle(data6[0], data6[1]); + const { angle: angle2, deltaX } = calculateDeltaAndAngle(data5[0], data5[1]); offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle2) * (deltaX >= 0 ? 1 : -1); - } else if (i2 === data6.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) { + } else if (i2 === data5.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) { const { angle: angle2, deltaX } = calculateDeltaAndAngle( - data6[data6.length - 1], - data6[data6.length - 2] + data5[data5.length - 1], + data5[data5.length - 2] ); offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle2) * (deltaX >= 0 ? 1 : -1); } const differenceToEnd = Math.abs( - pointTransformer(d2).x - pointTransformer(data6[data6.length - 1]).x + pointTransformer(d3).x - pointTransformer(data5[data5.length - 1]).x ); const differenceInYEnd = Math.abs( - pointTransformer(d2).y - pointTransformer(data6[data6.length - 1]).y + pointTransformer(d3).y - pointTransformer(data5[data5.length - 1]).y ); - const differenceToStart = Math.abs(pointTransformer(d2).x - pointTransformer(data6[0]).x); - const differenceInYStart = Math.abs(pointTransformer(d2).y - pointTransformer(data6[0]).y); + const differenceToStart = Math.abs(pointTransformer(d3).x - pointTransformer(data5[0]).x); + const differenceInYStart = Math.abs(pointTransformer(d3).y - pointTransformer(data5[0]).y); const startMarkerHeight = markerOffsets[edge.arrowTypeStart]; const endMarkerHeight = markerOffsets[edge.arrowTypeEnd]; const extraRoom = 1; @@ -47312,29 +46825,29 @@ You have to call mermaid.initialize.` adjustment *= DIRECTION === "right" ? -1 : 1; offset += adjustment; } - return pointTransformer(d2).x + offset; + return pointTransformer(d3).x + offset; }, "x"), - y: /* @__PURE__ */ __name(function(d2, i2, data6) { + y: /* @__PURE__ */ __name(function(d3, i2, data5) { let offset = 0; - const DIRECTION = pointTransformer(data6[0]).y < pointTransformer(data6[data6.length - 1]).y ? "down" : "up"; + const DIRECTION = pointTransformer(data5[0]).y < pointTransformer(data5[data5.length - 1]).y ? "down" : "up"; if (i2 === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) { - const { angle: angle2, deltaY } = calculateDeltaAndAngle(data6[0], data6[1]); + const { angle: angle2, deltaY } = calculateDeltaAndAngle(data5[0], data5[1]); offset = markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle2)) * (deltaY >= 0 ? 1 : -1); - } else if (i2 === data6.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) { + } else if (i2 === data5.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) { const { angle: angle2, deltaY } = calculateDeltaAndAngle( - data6[data6.length - 1], - data6[data6.length - 2] + data5[data5.length - 1], + data5[data5.length - 2] ); offset = markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle2)) * (deltaY >= 0 ? 1 : -1); } const differenceToEnd = Math.abs( - pointTransformer(d2).y - pointTransformer(data6[data6.length - 1]).y + pointTransformer(d3).y - pointTransformer(data5[data5.length - 1]).y ); const differenceInXEnd = Math.abs( - pointTransformer(d2).x - pointTransformer(data6[data6.length - 1]).x + pointTransformer(d3).x - pointTransformer(data5[data5.length - 1]).x ); - const differenceToStart = Math.abs(pointTransformer(d2).y - pointTransformer(data6[0]).y); - const differenceInXStart = Math.abs(pointTransformer(d2).x - pointTransformer(data6[0]).x); + const differenceToStart = Math.abs(pointTransformer(d3).y - pointTransformer(data5[0]).y); + const differenceInXStart = Math.abs(pointTransformer(d3).x - pointTransformer(data5[0]).x); const startMarkerHeight = markerOffsets[edge.arrowTypeStart]; const endMarkerHeight = markerOffsets[edge.arrowTypeEnd]; const extraRoom = 1; @@ -47348,7 +46861,7 @@ You have to call mermaid.initialize.` adjustment *= DIRECTION === "up" ? -1 : 1; offset += adjustment; } - return pointTransformer(d2).y + offset; + return pointTransformer(d3).y + offset; }, "y") }; }, "getLineFunctionsWithOffset"); @@ -47400,12 +46913,12 @@ You have to call mermaid.initialize.` "src/rendering-util/rendering-elements/edgeMarker.ts"() { "use strict"; init_logger(); - addEdgeMarkers = /* @__PURE__ */ __name((svgPath, edge, url, id29, diagramType, strokeColor) => { + addEdgeMarkers = /* @__PURE__ */ __name((svgPath, edge, url, id30, diagramType, strokeColor) => { if (edge.arrowTypeStart) { - addEdgeMarker(svgPath, "start", edge.arrowTypeStart, url, id29, diagramType, strokeColor); + addEdgeMarker(svgPath, "start", edge.arrowTypeStart, url, id30, diagramType, strokeColor); } if (edge.arrowTypeEnd) { - addEdgeMarker(svgPath, "end", edge.arrowTypeEnd, url, id29, diagramType, strokeColor); + addEdgeMarker(svgPath, "end", edge.arrowTypeEnd, url, id30, diagramType, strokeColor); } }, "addEdgeMarkers"); arrowTypesMap = { @@ -47425,7 +46938,7 @@ You have to call mermaid.initialize.` requirement_arrow: { type: "requirement_arrow", fill: false }, requirement_contains: { type: "requirement_contains", fill: false } }; - addEdgeMarker = /* @__PURE__ */ __name((svgPath, position5, arrowType, url, id29, diagramType, strokeColor) => { + addEdgeMarker = /* @__PURE__ */ __name((svgPath, position5, arrowType, url, id30, diagramType, strokeColor) => { const arrowTypeInfo = arrowTypesMap[arrowType]; if (!arrowTypeInfo) { log.warn(`Unknown arrow type: ${arrowType}`); @@ -47433,7 +46946,7 @@ You have to call mermaid.initialize.` } const endMarkerType = arrowTypeInfo.type; const suffix = position5 === "start" ? "Start" : "End"; - const originalMarkerId = `${id29}_${diagramType}-${endMarkerType}${suffix}`; + const originalMarkerId = `${id30}_${diagramType}-${endMarkerType}${suffix}`; if (strokeColor && strokeColor.trim() !== "") { const colorId = strokeColor.replace(/[^\dA-Za-z]/g, "_"); const coloredMarkerId = `${originalMarkerId}_${colorId}`; @@ -47484,7 +46997,89 @@ You have to call mermaid.initialize.` } return { cornerPoints, cornerPointPositions }; } - var edgeLabels, terminalLabels, clear4, getLabelStyles, insertEdgeLabel, positionEdgeLabel, outsideNode, intersection, cutPathAtIntersect, findAdjacentPoint, fixCorners, insertEdge; + function generateRoundedPath(points, radius2) { + if (points.length < 2) { + return ""; + } + let path4 = ""; + const size4 = points.length; + const epsilon6 = 1e-5; + for (let i2 = 0; i2 < size4; i2++) { + const currPoint = points[i2]; + const prevPoint = points[i2 - 1]; + const nextPoint = points[i2 + 1]; + if (i2 === 0) { + path4 += `M${currPoint.x},${currPoint.y}`; + } else if (i2 === size4 - 1) { + path4 += `L${currPoint.x},${currPoint.y}`; + } else { + const dx1 = currPoint.x - prevPoint.x; + const dy1 = currPoint.y - prevPoint.y; + const dx2 = nextPoint.x - currPoint.x; + const dy2 = nextPoint.y - currPoint.y; + const len1 = Math.hypot(dx1, dy1); + const len2 = Math.hypot(dx2, dy2); + if (len1 < epsilon6 || len2 < epsilon6) { + path4 += `L${currPoint.x},${currPoint.y}`; + continue; + } + const nx1 = dx1 / len1; + const ny1 = dy1 / len1; + const nx2 = dx2 / len2; + const ny2 = dy2 / len2; + const dot = nx1 * nx2 + ny1 * ny2; + const clampedDot = Math.max(-1, Math.min(1, dot)); + const angle2 = Math.acos(clampedDot); + if (angle2 < epsilon6 || Math.abs(Math.PI - angle2) < epsilon6) { + path4 += `L${currPoint.x},${currPoint.y}`; + continue; + } + const cutLen = Math.min(radius2 / Math.sin(angle2 / 2), len1 / 2, len2 / 2); + const startX2 = currPoint.x - nx1 * cutLen; + const startY2 = currPoint.y - ny1 * cutLen; + const endX = currPoint.x + nx2 * cutLen; + const endY = currPoint.y + ny2 * cutLen; + path4 += `L${startX2},${startY2}`; + path4 += `Q${currPoint.x},${currPoint.y} ${endX},${endY}`; + } + } + return path4; + } + function calculateDeltaAndAngle2(point1, point22) { + if (!point1 || !point22) { + return { angle: 0, deltaX: 0, deltaY: 0 }; + } + const deltaX = point22.x - point1.x; + const deltaY = point22.y - point1.y; + const angle2 = Math.atan2(deltaY, deltaX); + return { angle: angle2, deltaX, deltaY }; + } + function applyMarkerOffsetsToPoints(points, edge) { + const newPoints = points.map((point8) => ({ ...point8 })); + if (points.length >= 2 && markerOffsets[edge.arrowTypeStart]) { + const offsetValue = markerOffsets[edge.arrowTypeStart]; + const point1 = points[0]; + const point22 = points[1]; + const { angle: angle2 } = calculateDeltaAndAngle2(point1, point22); + const offsetX = offsetValue * Math.cos(angle2); + const offsetY = offsetValue * Math.sin(angle2); + newPoints[0].x = point1.x + offsetX; + newPoints[0].y = point1.y + offsetY; + } + const n2 = points.length; + if (n2 >= 2 && markerOffsets[edge.arrowTypeEnd]) { + const offsetValue = markerOffsets[edge.arrowTypeEnd]; + const point1 = points[n2 - 1]; + const point22 = points[n2 - 2]; + const { angle: angle2 } = calculateDeltaAndAngle2(point22, point1); + const offsetX = offsetValue * Math.cos(angle2); + const offsetY = offsetValue * Math.sin(angle2); + newPoints[n2 - 1].x = point1.x - offsetX; + newPoints[n2 - 1].y = point1.y - offsetY; + } + return newPoints; + } + var edgeLabels, terminalLabels, clear4, getLabelStyles, insertEdgeLabel, positionEdgeLabel, outsideNode, intersection, cutPathAtIntersect, findAdjacentPoint, fixCorners, generateDashArray, insertEdge; var init_edges = __esm({ "src/rendering-util/rendering-elements/edges.js"() { "use strict"; @@ -47512,15 +47107,17 @@ You have to call mermaid.initialize.` }, "getLabelStyles"); insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => { let useHtmlLabels = evaluate(getConfig2().flowchart.htmlLabels); + const { labelStyles } = styles2String(edge); + edge.labelStyle = labelStyles; const labelElement = await createText(elem, edge.label, { - style: getLabelStyles(edge.labelStyle), + style: edge.labelStyle, useHtmlLabels, addSvgBackground: true, isNode: false }); log.info("abc82", edge, edge.labelType); const edgeLabel = elem.insert("g").attr("class", "edgeLabel"); - const label = edgeLabel.insert("g").attr("class", "label"); + const label = edgeLabel.insert("g").attr("class", "label").attr("data-id", edge.id); label.node().appendChild(labelElement); let bbox = labelElement.getBBox(); if (useHtmlLabels) { @@ -47607,14 +47204,14 @@ You have to call mermaid.initialize.` if (edge.label) { const el = edgeLabels.get(edge.id); let x5 = edge.x; - let y5 = edge.y; + let y6 = edge.y; if (path4) { const pos = utils_default2.calcLabelPosition(path4); log.debug( "Moving label " + edge.label + " from (", x5, ",", - y5, + y6, ") to (", pos.x, ",", @@ -47623,26 +47220,26 @@ You have to call mermaid.initialize.` ); if (paths.updatedPath) { x5 = pos.x; - y5 = pos.y; + y6 = pos.y; } } - el.attr("transform", `translate(${x5}, ${y5 + subGraphTitleTotalMargin / 2})`); + el.attr("transform", `translate(${x5}, ${y6 + subGraphTitleTotalMargin / 2})`); } if (edge.startLabelLeft) { const el = terminalLabels.get(edge.id).startLeft; let x5 = edge.x; - let y5 = edge.y; + let y6 = edge.y; if (path4) { const pos = utils_default2.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, "start_left", path4); x5 = pos.x; - y5 = pos.y; + y6 = pos.y; } - el.attr("transform", `translate(${x5}, ${y5})`); + el.attr("transform", `translate(${x5}, ${y6})`); } if (edge.startLabelRight) { const el = terminalLabels.get(edge.id).startRight; let x5 = edge.x; - let y5 = edge.y; + let y6 = edge.y; if (path4) { const pos = utils_default2.calcTerminalLabelPosition( edge.arrowTypeStart ? 10 : 0, @@ -47650,41 +47247,41 @@ You have to call mermaid.initialize.` path4 ); x5 = pos.x; - y5 = pos.y; + y6 = pos.y; } - el.attr("transform", `translate(${x5}, ${y5})`); + el.attr("transform", `translate(${x5}, ${y6})`); } if (edge.endLabelLeft) { const el = terminalLabels.get(edge.id).endLeft; let x5 = edge.x; - let y5 = edge.y; + let y6 = edge.y; if (path4) { const pos = utils_default2.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, "end_left", path4); x5 = pos.x; - y5 = pos.y; + y6 = pos.y; } - el.attr("transform", `translate(${x5}, ${y5})`); + el.attr("transform", `translate(${x5}, ${y6})`); } if (edge.endLabelRight) { const el = terminalLabels.get(edge.id).endRight; let x5 = edge.x; - let y5 = edge.y; + let y6 = edge.y; if (path4) { const pos = utils_default2.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, "end_right", path4); x5 = pos.x; - y5 = pos.y; + y6 = pos.y; } - el.attr("transform", `translate(${x5}, ${y5})`); + el.attr("transform", `translate(${x5}, ${y6})`); } }, "positionEdgeLabel"); outsideNode = /* @__PURE__ */ __name((node2, point8) => { const x5 = node2.x; - const y5 = node2.y; + const y6 = node2.y; const dx = Math.abs(point8.x - x5); - const dy = Math.abs(point8.y - y5); - const w3 = node2.width / 2; - const h2 = node2.height / 2; - return dx >= w3 || dy >= h2; + const dy = Math.abs(point8.y - y6); + const w4 = node2.width / 2; + const h3 = node2.height / 2; + return dx >= w4 || dy >= h3; }, "outsideNode"); intersection = /* @__PURE__ */ __name((node2, outsidePoint, insidePoint) => { log.debug(`intersection calc abc89: @@ -47692,50 +47289,50 @@ You have to call mermaid.initialize.` insidePoint : ${JSON.stringify(insidePoint)} node : x:${node2.x} y:${node2.y} w:${node2.width} h:${node2.height}`); const x5 = node2.x; - const y5 = node2.y; + const y6 = node2.y; const dx = Math.abs(x5 - insidePoint.x); - const w3 = node2.width / 2; - let r2 = insidePoint.x < outsidePoint.x ? w3 - dx : w3 + dx; - const h2 = node2.height / 2; - const Q2 = Math.abs(outsidePoint.y - insidePoint.y); - const R2 = Math.abs(outsidePoint.x - insidePoint.x); - if (Math.abs(y5 - outsidePoint.y) * w3 > Math.abs(x5 - outsidePoint.x) * h2) { - let q2 = insidePoint.y < outsidePoint.y ? outsidePoint.y - h2 - y5 : y5 - h2 - outsidePoint.y; - r2 = R2 * q2 / Q2; + const w4 = node2.width / 2; + let r2 = insidePoint.x < outsidePoint.x ? w4 - dx : w4 + dx; + const h3 = node2.height / 2; + const Q3 = Math.abs(outsidePoint.y - insidePoint.y); + const R3 = Math.abs(outsidePoint.x - insidePoint.x); + if (Math.abs(y6 - outsidePoint.y) * w4 > Math.abs(x5 - outsidePoint.x) * h3) { + let q3 = insidePoint.y < outsidePoint.y ? outsidePoint.y - h3 - y6 : y6 - h3 - outsidePoint.y; + r2 = R3 * q3 / Q3; const res = { - x: insidePoint.x < outsidePoint.x ? insidePoint.x + r2 : insidePoint.x - R2 + r2, - y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q2 - q2 : insidePoint.y - Q2 + q2 + x: insidePoint.x < outsidePoint.x ? insidePoint.x + r2 : insidePoint.x - R3 + r2, + y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q3 - q3 : insidePoint.y - Q3 + q3 }; if (r2 === 0) { res.x = outsidePoint.x; res.y = outsidePoint.y; } - if (R2 === 0) { + if (R3 === 0) { res.x = outsidePoint.x; } - if (Q2 === 0) { + if (Q3 === 0) { res.y = outsidePoint.y; } - log.debug(`abc89 top/bottom calc, Q ${Q2}, q ${q2}, R ${R2}, r ${r2}`, res); + log.debug(`abc89 top/bottom calc, Q ${Q3}, q ${q3}, R ${R3}, r ${r2}`, res); return res; } else { if (insidePoint.x < outsidePoint.x) { - r2 = outsidePoint.x - w3 - x5; + r2 = outsidePoint.x - w4 - x5; } else { - r2 = x5 - w3 - outsidePoint.x; + r2 = x5 - w4 - outsidePoint.x; } - let q2 = Q2 * r2 / R2; - let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R2 - r2 : insidePoint.x - R2 + r2; - let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q2 : insidePoint.y - q2; - log.debug(`sides calc abc89, Q ${Q2}, q ${q2}, R ${R2}, r ${r2}`, { _x, _y }); + let q3 = Q3 * r2 / R3; + let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R3 - r2 : insidePoint.x - R3 + r2; + let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q3 : insidePoint.y - q3; + log.debug(`sides calc abc89, Q ${Q3}, q ${q3}, R ${R3}, r ${r2}`, { _x, _y }); if (r2 === 0) { _x = outsidePoint.x; _y = outsidePoint.y; } - if (R2 === 0) { + if (R3 === 0) { _x = outsidePoint.x; } - if (Q2 === 0) { + if (Q3 === 0) { _y = outsidePoint.y; } return { x: _x, y: _y }; @@ -47828,7 +47425,17 @@ You have to call mermaid.initialize.` } return newLineData; }, "fixCorners"); - insertEdge = /* @__PURE__ */ __name(function(elem, edge, clusterDb2, diagramType, startNode, endNode, id29) { + generateDashArray = /* @__PURE__ */ __name((len, oValueS, oValueE) => { + const middleLength = len - oValueS - oValueE; + const dashLength = 2; + const gapLength = 2; + const dashGapPairLength = dashLength + gapLength; + const numberOfPairs = Math.floor(middleLength / dashGapPairLength); + const middlePattern = Array(numberOfPairs).fill(`${dashLength} ${gapLength}`).join(" "); + const dashArray = `0 ${oValueS} ${middlePattern} ${oValueE}`; + return dashArray; + }, "generateDashArray"); + insertEdge = /* @__PURE__ */ __name(function(elem, edge, clusterDb2, diagramType, startNode, endNode, id30, skipIntersect = false) { const { handDrawnSeed } = getConfig2(); let points = edge.points; let pointsHasChanged = false; @@ -47841,11 +47448,12 @@ You have to call mermaid.initialize.` } edgeClassStyles.push(edge.cssCompiledStyles[key]); } - if (head2.intersect && tail.intersect) { + log.debug("UIO intersect check", edge.points, head2.x, tail.x); + if (head2.intersect && tail.intersect && !skipIntersect) { points = points.slice(1, edge.points.length - 1); points.unshift(tail.intersect(points[0])); log.debug( - "Last point APA12", + "Last point UIO", edge.start, "-->", edge.end, @@ -47855,6 +47463,7 @@ You have to call mermaid.initialize.` ); points.push(head2.intersect(points[points.length - 1])); } + const pointsStr = btoa(JSON.stringify(points)); if (edge.toCluster) { log.info("to cluster abc88", clusterDb2.get(edge.toCluster)); points = cutPathAtIntersect(edge.points, clusterDb2.get(edge.toCluster).node); @@ -47913,8 +47522,8 @@ You have to call mermaid.initialize.` default: curve = basis_default2; } - const { x: x5, y: y5 } = getLineFunctionsWithOffset(edge); - const lineFunction = line_default().x(x5).y(y5).curve(curve); + const { x: x5, y: y6 } = getLineFunctionsWithOffset(edge); + const lineFunction = line_default().x(x5).y(y6).curve(curve); let strokeClasses; switch (edge.thickness) { case "normal": @@ -47943,9 +47552,10 @@ You have to call mermaid.initialize.` strokeClasses += " edge-pattern-solid"; } let svgPath; - let linePath = lineFunction(lineData); + let linePath = edge.curve === "rounded" ? generateRoundedPath(applyMarkerOffsetsToPoints(lineData, edge), 5) : lineFunction(lineData); const edgeStyles = Array.isArray(edge.style) ? edge.style : [edge.style]; let strokeColor = edgeStyles.find((style3) => style3?.startsWith("stroke:")); + let animatedEdge = false; if (edge.look === "handDrawn") { const rc = at.svg(elem); Object.assign([], lineData); @@ -47955,8 +47565,8 @@ You have to call mermaid.initialize.` }); strokeClasses += " transition"; svgPath = select_default2(svgPathNode).select("path").attr("id", edge.id).attr("class", " " + strokeClasses + (edge.classes ? " " + edge.classes : "")).attr("style", edgeStyles ? edgeStyles.reduce((acc, style3) => acc + ";" + style3, "") : ""); - let d2 = svgPath.attr("d"); - svgPath.attr("d", d2); + let d3 = svgPath.attr("d"); + svgPath.attr("d", d3); elem.node().appendChild(svgPath.node()); } else { const stylesFromClasses = edgeClassStyles.join(";"); @@ -47968,12 +47578,31 @@ You have to call mermaid.initialize.` if (edge.animation) { animationClass = " edge-animation-" + edge.animation; } - const pathStyle = stylesFromClasses ? stylesFromClasses + ";" + styles4 + ";" : styles4; + const pathStyle = (stylesFromClasses ? stylesFromClasses + ";" + styles4 + ";" : styles4) + ";" + (edgeStyles ? edgeStyles.reduce((acc, style3) => acc + ";" + style3, "") : ""); svgPath = elem.append("path").attr("d", linePath).attr("id", edge.id).attr( "class", " " + strokeClasses + (edge.classes ? " " + edge.classes : "") + (animationClass ?? "") ).attr("style", pathStyle); strokeColor = pathStyle.match(/stroke:([^;]+)/)?.[1]; + animatedEdge = edge.animate === true || !!edge.animation || stylesFromClasses.includes("animation"); + const pathNode = svgPath.node(); + const len = typeof pathNode.getTotalLength === "function" ? pathNode.getTotalLength() : 0; + const oValueS = markerOffsets2[edge.arrowTypeStart] || 0; + const oValueE = markerOffsets2[edge.arrowTypeEnd] || 0; + if (edge.look === "neo" && !animatedEdge) { + const dashArray = edge.pattern === "dotted" || edge.pattern === "dashed" ? generateDashArray(len, oValueS, oValueE) : `0 ${oValueS} ${len - oValueS - oValueE} ${oValueE}`; + const mOffset = `stroke-dasharray: ${dashArray}; stroke-dashoffset: 0;`; + svgPath.attr("style", mOffset + svgPath.attr("style")); + } + } + svgPath.attr("data-edge", true); + svgPath.attr("data-et", "edge"); + svgPath.attr("data-id", edge.id); + svgPath.attr("data-points", pointsStr); + if (edge.showPoints) { + lineData.forEach((point9) => { + elem.append("circle").style("stroke", "red").style("fill", "red").attr("r", 1).attr("cx", point9.x).attr("cy", point9.y); + }); } let url = ""; if (getConfig2().flowchart.arrowMarkerAbsolute || getConfig2().state.arrowMarkerAbsolute) { @@ -47982,7 +47611,12 @@ You have to call mermaid.initialize.` } log.info("arrowTypeStart", edge.arrowTypeStart); log.info("arrowTypeEnd", edge.arrowTypeEnd); - addEdgeMarkers(svgPath, edge, url, id29, diagramType, strokeColor); + addEdgeMarkers(svgPath, edge, url, id30, diagramType, strokeColor); + const midIndex = Math.floor(points.length / 2); + const point8 = points[midIndex]; + if (!utils_default2.isLabelCoordinateInPath(point8, svgPath.attr("d"))) { + pointsHasChanged = true; + } let paths = {}; if (pointsHasChanged) { paths.updatedPath = points; @@ -47990,6 +47624,9 @@ You have to call mermaid.initialize.` paths.originalPath = edge.points; return paths; }, "insertEdge"); + __name(generateRoundedPath, "generateRoundedPath"); + __name(calculateDeltaAndAngle2, "calculateDeltaAndAngle"); + __name(applyMarkerOffsetsToPoints, "applyMarkerOffsetsToPoints"); } }); @@ -47999,73 +47636,73 @@ You have to call mermaid.initialize.` "src/rendering-util/rendering-elements/markers.js"() { "use strict"; init_logger(); - insertMarkers = /* @__PURE__ */ __name((elem, markerArray, type3, id29) => { + insertMarkers = /* @__PURE__ */ __name((elem, markerArray, type3, id30) => { markerArray.forEach((markerName) => { - markers[markerName](elem, type3, id29); + markers[markerName](elem, type3, id30); }); }, "insertMarkers"); - extension = /* @__PURE__ */ __name((elem, type3, id29) => { - log.trace("Making markers for ", id29); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-extensionStart").attr("class", "marker extension " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z"); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-extensionEnd").attr("class", "marker extension " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z"); + extension = /* @__PURE__ */ __name((elem, type3, id30) => { + log.trace("Making markers for ", id30); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-extensionStart").attr("class", "marker extension " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z"); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-extensionEnd").attr("class", "marker extension " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z"); }, "extension"); - composition = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-compositionStart").attr("class", "marker composition " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-compositionEnd").attr("class", "marker composition " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); + composition = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-compositionStart").attr("class", "marker composition " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-compositionEnd").attr("class", "marker composition " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); }, "composition"); - aggregation = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-aggregationStart").attr("class", "marker aggregation " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-aggregationEnd").attr("class", "marker aggregation " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); + aggregation = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-aggregationStart").attr("class", "marker aggregation " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-aggregationEnd").attr("class", "marker aggregation " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); }, "aggregation"); - dependency = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-dependencyStart").attr("class", "marker dependency " + type3).attr("refX", 6).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-dependencyEnd").attr("class", "marker dependency " + type3).attr("refX", 13).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z"); + dependency = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-dependencyStart").attr("class", "marker dependency " + type3).attr("refX", 6).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-dependencyEnd").attr("class", "marker dependency " + type3).attr("refX", 13).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z"); }, "dependency"); - lollipop = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-lollipopStart").attr("class", "marker lollipop " + type3).attr("refX", 13).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-lollipopEnd").attr("class", "marker lollipop " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6); + lollipop = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-lollipopStart").attr("class", "marker lollipop " + type3).attr("refX", 13).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-lollipopEnd").attr("class", "marker lollipop " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6); }, "lollipop"); - point6 = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("marker").attr("id", id29 + "_" + type3 + "-pointEnd").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 8).attr("markerHeight", 8).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); - elem.append("marker").attr("id", id29 + "_" + type3 + "-pointStart").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 4.5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 8).attr("markerHeight", 8).attr("orient", "auto").append("path").attr("d", "M 0 5 L 10 10 L 10 0 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + point6 = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("marker").attr("id", id30 + "_" + type3 + "-pointEnd").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 8).attr("markerHeight", 8).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + elem.append("marker").attr("id", id30 + "_" + type3 + "-pointStart").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 4.5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 8).attr("markerHeight", 8).attr("orient", "auto").append("path").attr("d", "M 0 5 L 10 10 L 10 0 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); }, "point"); - circle2 = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("marker").attr("id", id29 + "_" + type3 + "-circleEnd").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 11).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); - elem.append("marker").attr("id", id29 + "_" + type3 + "-circleStart").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", -1).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + circle2 = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("marker").attr("id", id30 + "_" + type3 + "-circleEnd").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 11).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + elem.append("marker").attr("id", id30 + "_" + type3 + "-circleStart").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", -1).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); }, "circle"); - cross = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("marker").attr("id", id29 + "_" + type3 + "-crossEnd").attr("class", "marker cross " + type3).attr("viewBox", "0 0 11 11").attr("refX", 12).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0"); - elem.append("marker").attr("id", id29 + "_" + type3 + "-crossStart").attr("class", "marker cross " + type3).attr("viewBox", "0 0 11 11").attr("refX", -1).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0"); + cross = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("marker").attr("id", id30 + "_" + type3 + "-crossEnd").attr("class", "marker cross " + type3).attr("viewBox", "0 0 11 11").attr("refX", 12).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0"); + elem.append("marker").attr("id", id30 + "_" + type3 + "-crossStart").attr("class", "marker cross " + type3).attr("viewBox", "0 0 11 11").attr("refX", -1).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0"); }, "cross"); - barb = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-barbEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 14).attr("markerUnits", "userSpaceOnUse").attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z"); + barb = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-barbEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 14).attr("markerUnits", "userSpaceOnUse").attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z"); }, "barb"); - only_one = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-onlyOneStart").attr("class", "marker onlyOne " + type3).attr("refX", 0).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("d", "M9,0 L9,18 M15,0 L15,18"); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-onlyOneEnd").attr("class", "marker onlyOne " + type3).attr("refX", 18).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("d", "M3,0 L3,18 M9,0 L9,18"); + only_one = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-onlyOneStart").attr("class", "marker onlyOne " + type3).attr("refX", 0).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("d", "M9,0 L9,18 M15,0 L15,18"); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-onlyOneEnd").attr("class", "marker onlyOne " + type3).attr("refX", 18).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("d", "M3,0 L3,18 M9,0 L9,18"); }, "only_one"); - zero_or_one = /* @__PURE__ */ __name((elem, type3, id29) => { - const startMarker = elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-zeroOrOneStart").attr("class", "marker zeroOrOne " + type3).attr("refX", 0).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto"); + zero_or_one = /* @__PURE__ */ __name((elem, type3, id30) => { + const startMarker = elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-zeroOrOneStart").attr("class", "marker zeroOrOne " + type3).attr("refX", 0).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto"); startMarker.append("circle").attr("fill", "white").attr("cx", 21).attr("cy", 9).attr("r", 6); startMarker.append("path").attr("d", "M9,0 L9,18"); - const endMarker = elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-zeroOrOneEnd").attr("class", "marker zeroOrOne " + type3).attr("refX", 30).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto"); + const endMarker = elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-zeroOrOneEnd").attr("class", "marker zeroOrOne " + type3).attr("refX", 30).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto"); endMarker.append("circle").attr("fill", "white").attr("cx", 9).attr("cy", 9).attr("r", 6); endMarker.append("path").attr("d", "M21,0 L21,18"); }, "zero_or_one"); - one_or_more = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-oneOrMoreStart").attr("class", "marker oneOrMore " + type3).attr("refX", 18).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("d", "M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-oneOrMoreEnd").attr("class", "marker oneOrMore " + type3).attr("refX", 27).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("d", "M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"); + one_or_more = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-oneOrMoreStart").attr("class", "marker oneOrMore " + type3).attr("refX", 18).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("d", "M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-oneOrMoreEnd").attr("class", "marker oneOrMore " + type3).attr("refX", 27).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("d", "M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"); }, "one_or_more"); - zero_or_more = /* @__PURE__ */ __name((elem, type3, id29) => { - const startMarker = elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-zeroOrMoreStart").attr("class", "marker zeroOrMore " + type3).attr("refX", 18).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto"); + zero_or_more = /* @__PURE__ */ __name((elem, type3, id30) => { + const startMarker = elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-zeroOrMoreStart").attr("class", "marker zeroOrMore " + type3).attr("refX", 18).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto"); startMarker.append("circle").attr("fill", "white").attr("cx", 48).attr("cy", 18).attr("r", 6); startMarker.append("path").attr("d", "M0,18 Q18,0 36,18 Q18,36 0,18"); - const endMarker = elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-zeroOrMoreEnd").attr("class", "marker zeroOrMore " + type3).attr("refX", 39).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto"); + const endMarker = elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-zeroOrMoreEnd").attr("class", "marker zeroOrMore " + type3).attr("refX", 39).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto"); endMarker.append("circle").attr("fill", "white").attr("cx", 9).attr("cy", 18).attr("r", 6); endMarker.append("path").attr("d", "M21,18 Q39,0 57,18 Q39,36 21,18"); }, "zero_or_more"); - requirement_arrow = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-requirement_arrowEnd").attr("refX", 20).attr("refY", 10).attr("markerWidth", 20).attr("markerHeight", 20).attr("orient", "auto").append("path").attr( + requirement_arrow = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-requirement_arrowEnd").attr("refX", 20).attr("refY", 10).attr("markerWidth", 20).attr("markerHeight", 20).attr("orient", "auto").append("path").attr( "d", `M0,0 L20,10 @@ -48073,8 +47710,8 @@ You have to call mermaid.initialize.` L0,20` ); }, "requirement_arrow"); - requirement_contains = /* @__PURE__ */ __name((elem, type3, id29) => { - const containsNode = elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-requirement_containsStart").attr("refX", 0).attr("refY", 10).attr("markerWidth", 20).attr("markerHeight", 20).attr("orient", "auto").append("g"); + requirement_contains = /* @__PURE__ */ __name((elem, type3, id30) => { + const containsNode = elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-requirement_containsStart").attr("refX", 0).attr("refY", 10).attr("markerWidth", 20).attr("markerHeight", 20).attr("orient", "auto").append("g"); containsNode.append("circle").attr("cx", 10).attr("cy", 10).attr("r", 9).attr("fill", "none"); containsNode.append("line").attr("x1", 1).attr("x2", 19).attr("y1", 10).attr("y2", 10); containsNode.append("line").attr("y1", 1).attr("y2", 19).attr("x1", 10).attr("x2", 10); @@ -48308,8 +47945,8 @@ You have to call mermaid.initialize.` return NAN; } if (isObject_default(value2)) { - var other2 = typeof value2.valueOf == "function" ? value2.valueOf() : value2; - value2 = isObject_default(other2) ? other2 + "" : other2; + var other = typeof value2.valueOf == "function" ? value2.valueOf() : value2; + value2 = isObject_default(other) ? other + "" : other; } if (typeof value2 != "string") { return value2 === 0 ? value2 : +value2; @@ -49237,9 +48874,9 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_initCloneByTag.js - function initCloneByTag(object3, tag2, isDeep) { + function initCloneByTag(object3, tag, isDeep) { var Ctor = object3.constructor; - switch (tag2) { + switch (tag) { case arrayBufferTag2: return cloneArrayBuffer_default(object3); case boolTag2: @@ -49382,20 +49019,20 @@ You have to call mermaid.initialize.` return copyArray_default(value2, result); } } else { - var tag2 = getTag_default(value2), isFunc = tag2 == funcTag3 || tag2 == genTag2; + var tag = getTag_default(value2), isFunc = tag == funcTag3 || tag == genTag2; if (isBuffer_default(value2)) { return cloneBuffer_default(value2, isDeep); } - if (tag2 == objectTag4 || tag2 == argsTag3 || isFunc && !object3) { + if (tag == objectTag4 || tag == argsTag3 || isFunc && !object3) { result = isFlat || isFunc ? {} : initCloneObject_default(value2); if (!isDeep) { return isFlat ? copySymbolsIn_default(value2, baseAssignIn_default(result, value2)) : copySymbols_default(value2, baseAssign_default(result, value2)); } } else { - if (!cloneableTags[tag2]) { + if (!cloneableTags[tag]) { return object3 ? value2 : {}; } - result = initCloneByTag_default(value2, tag2, isDeep); + result = initCloneByTag_default(value2, tag, isDeep); } } stack || (stack = new Stack_default()); @@ -49621,23 +49258,23 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalArrays.js - function equalArrays(array4, other2, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array4.length, othLength = other2.length; + function equalArrays(array4, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array4.length, othLength = other.length; if (arrLength != othLength && !(isPartial && othLength > arrLength)) { return false; } var arrStacked = stack.get(array4); - var othStacked = stack.get(other2); + var othStacked = stack.get(other); if (arrStacked && othStacked) { - return arrStacked == other2 && othStacked == array4; + return arrStacked == other && othStacked == array4; } var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache_default() : void 0; - stack.set(array4, other2); - stack.set(other2, array4); + stack.set(array4, other); + stack.set(other, array4); while (++index < arrLength) { - var arrValue = array4[index], othValue = other2[index]; + var arrValue = array4[index], othValue = other[index]; if (customizer) { - var compared = isPartial ? customizer(othValue, arrValue, index, other2, array4, stack) : customizer(arrValue, othValue, index, array4, other2, stack); + var compared = isPartial ? customizer(othValue, arrValue, index, other, array4, stack) : customizer(arrValue, othValue, index, array4, other, stack); } if (compared !== void 0) { if (compared) { @@ -49647,7 +49284,7 @@ You have to call mermaid.initialize.` break; } if (seen) { - if (!arraySome_default(other2, function(othValue2, othIndex) { + if (!arraySome_default(other, function(othValue2, othIndex) { if (!cacheHas_default(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) { return seen.push(othIndex); } @@ -49661,7 +49298,7 @@ You have to call mermaid.initialize.` } } stack["delete"](array4); - stack["delete"](other2); + stack["delete"](other); return result; } var COMPARE_PARTIAL_FLAG, COMPARE_UNORDERED_FLAG, equalArrays_default; @@ -49696,9 +49333,9 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setToArray.js - function setToArray(set6) { - var index = -1, result = Array(set6.size); - set6.forEach(function(value2) { + function setToArray(set5) { + var index = -1, result = Array(set5.size); + set5.forEach(function(value2) { result[++index] = value2; }); return result; @@ -49713,48 +49350,48 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalByTag.js - function equalByTag(object3, other2, tag2, bitmask, customizer, equalFunc, stack) { - switch (tag2) { + function equalByTag(object3, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { case dataViewTag5: - if (object3.byteLength != other2.byteLength || object3.byteOffset != other2.byteOffset) { + if (object3.byteLength != other.byteLength || object3.byteOffset != other.byteOffset) { return false; } object3 = object3.buffer; - other2 = other2.buffer; + other = other.buffer; case arrayBufferTag4: - if (object3.byteLength != other2.byteLength || !equalFunc(new Uint8Array_default(object3), new Uint8Array_default(other2))) { + if (object3.byteLength != other.byteLength || !equalFunc(new Uint8Array_default(object3), new Uint8Array_default(other))) { return false; } return true; case boolTag4: case dateTag4: case numberTag4: - return eq_default(+object3, +other2); + return eq_default(+object3, +other); case errorTag3: - return object3.name == other2.name && object3.message == other2.message; + return object3.name == other.name && object3.message == other.message; case regexpTag4: case stringTag4: - return object3 == other2 + ""; + return object3 == other + ""; case mapTag6: var convert = mapToArray_default; case setTag6: var isPartial = bitmask & COMPARE_PARTIAL_FLAG2; convert || (convert = setToArray_default); - if (object3.size != other2.size && !isPartial) { + if (object3.size != other.size && !isPartial) { return false; } var stacked = stack.get(object3); if (stacked) { - return stacked == other2; + return stacked == other; } bitmask |= COMPARE_UNORDERED_FLAG2; - stack.set(object3, other2); - var result = equalArrays_default(convert(object3), convert(other2), bitmask, customizer, equalFunc, stack); + stack.set(object3, other); + var result = equalArrays_default(convert(object3), convert(other), bitmask, customizer, equalFunc, stack); stack["delete"](object3); return result; case symbolTag4: if (symbolValueOf2) { - return symbolValueOf2.call(object3) == symbolValueOf2.call(other2); + return symbolValueOf2.call(object3) == symbolValueOf2.call(other); } } return false; @@ -49790,32 +49427,32 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalObjects.js - function equalObjects(object3, other2, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG3, objProps = getAllKeys_default(object3), objLength = objProps.length, othProps = getAllKeys_default(other2), othLength = othProps.length; + function equalObjects(object3, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG3, objProps = getAllKeys_default(object3), objLength = objProps.length, othProps = getAllKeys_default(other), othLength = othProps.length; if (objLength != othLength && !isPartial) { return false; } var index = objLength; while (index--) { var key = objProps[index]; - if (!(isPartial ? key in other2 : hasOwnProperty13.call(other2, key))) { + if (!(isPartial ? key in other : hasOwnProperty13.call(other, key))) { return false; } } var objStacked = stack.get(object3); - var othStacked = stack.get(other2); + var othStacked = stack.get(other); if (objStacked && othStacked) { - return objStacked == other2 && othStacked == object3; + return objStacked == other && othStacked == object3; } var result = true; - stack.set(object3, other2); - stack.set(other2, object3); + stack.set(object3, other); + stack.set(other, object3); var skipCtor = isPartial; while (++index < objLength) { key = objProps[index]; - var objValue = object3[key], othValue = other2[key]; + var objValue = object3[key], othValue = other[key]; if (customizer) { - var compared = isPartial ? customizer(othValue, objValue, key, other2, object3, stack) : customizer(objValue, othValue, key, object3, other2, stack); + var compared = isPartial ? customizer(othValue, objValue, key, other, object3, stack) : customizer(objValue, othValue, key, object3, other, stack); } if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { result = false; @@ -49824,13 +49461,13 @@ You have to call mermaid.initialize.` skipCtor || (skipCtor = key == "constructor"); } if (result && !skipCtor) { - var objCtor = object3.constructor, othCtor = other2.constructor; - if (objCtor != othCtor && ("constructor" in object3 && "constructor" in other2) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) { + var objCtor = object3.constructor, othCtor = other.constructor; + if (objCtor != othCtor && ("constructor" in object3 && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) { result = false; } } stack["delete"](object3); - stack["delete"](other2); + stack["delete"](other); return result; } var COMPARE_PARTIAL_FLAG3, objectProto16, hasOwnProperty13, equalObjects_default; @@ -49847,13 +49484,13 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqualDeep.js - function baseIsEqualDeep(object3, other2, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray_default(object3), othIsArr = isArray_default(other2), objTag = objIsArr ? arrayTag3 : getTag_default(object3), othTag = othIsArr ? arrayTag3 : getTag_default(other2); + function baseIsEqualDeep(object3, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray_default(object3), othIsArr = isArray_default(other), objTag = objIsArr ? arrayTag3 : getTag_default(object3), othTag = othIsArr ? arrayTag3 : getTag_default(other); objTag = objTag == argsTag4 ? objectTag5 : objTag; othTag = othTag == argsTag4 ? objectTag5 : othTag; var objIsObj = objTag == objectTag5, othIsObj = othTag == objectTag5, isSameTag = objTag == othTag; if (isSameTag && isBuffer_default(object3)) { - if (!isBuffer_default(other2)) { + if (!isBuffer_default(other)) { return false; } objIsArr = true; @@ -49861,12 +49498,12 @@ You have to call mermaid.initialize.` } if (isSameTag && !objIsObj) { stack || (stack = new Stack_default()); - return objIsArr || isTypedArray_default(object3) ? equalArrays_default(object3, other2, bitmask, customizer, equalFunc, stack) : equalByTag_default(object3, other2, objTag, bitmask, customizer, equalFunc, stack); + return objIsArr || isTypedArray_default(object3) ? equalArrays_default(object3, other, bitmask, customizer, equalFunc, stack) : equalByTag_default(object3, other, objTag, bitmask, customizer, equalFunc, stack); } if (!(bitmask & COMPARE_PARTIAL_FLAG4)) { - var objIsWrapped = objIsObj && hasOwnProperty14.call(object3, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty14.call(other2, "__wrapped__"); + var objIsWrapped = objIsObj && hasOwnProperty14.call(object3, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty14.call(other, "__wrapped__"); if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object3.value() : object3, othUnwrapped = othIsWrapped ? other2.value() : other2; + var objUnwrapped = objIsWrapped ? object3.value() : object3, othUnwrapped = othIsWrapped ? other.value() : other; stack || (stack = new Stack_default()); return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); } @@ -49875,7 +49512,7 @@ You have to call mermaid.initialize.` return false; } stack || (stack = new Stack_default()); - return equalObjects_default(object3, other2, bitmask, customizer, equalFunc, stack); + return equalObjects_default(object3, other, bitmask, customizer, equalFunc, stack); } var COMPARE_PARTIAL_FLAG4, argsTag4, arrayTag3, objectTag5, objectProto17, hasOwnProperty14, baseIsEqualDeep_default; var init_baseIsEqualDeep = __esm({ @@ -49901,14 +49538,14 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqual.js - function baseIsEqual(value2, other2, bitmask, customizer, stack) { - if (value2 === other2) { + function baseIsEqual(value2, other, bitmask, customizer, stack) { + if (value2 === other) { return true; } - if (value2 == null || other2 == null || !isObjectLike_default(value2) && !isObjectLike_default(other2)) { - return value2 !== value2 && other2 !== other2; + if (value2 == null || other == null || !isObjectLike_default(value2) && !isObjectLike_default(other)) { + return value2 !== value2 && other !== other; } - return baseIsEqualDeep_default(value2, other2, bitmask, customizer, baseIsEqual, stack); + return baseIsEqualDeep_default(value2, other, bitmask, customizer, baseIsEqual, stack); } var baseIsEqual_default; var init_baseIsEqual = __esm({ @@ -49929,15 +49566,15 @@ You have to call mermaid.initialize.` } object3 = Object(object3); while (index--) { - var data6 = matchData[index]; - if (noCustomizer && data6[2] ? data6[1] !== object3[data6[0]] : !(data6[0] in object3)) { + var data5 = matchData[index]; + if (noCustomizer && data5[2] ? data5[1] !== object3[data5[0]] : !(data5[0] in object3)) { return false; } } while (++index < length2) { - data6 = matchData[index]; - var key = data6[0], objValue = object3[key], srcValue = data6[1]; - if (noCustomizer && data6[2]) { + data5 = matchData[index]; + var key = data5[0], objValue = object3[key], srcValue = data5[1]; + if (noCustomizer && data5[2]) { if (objValue === void 0 && !(key in object3)) { return false; } @@ -50385,7 +50022,7 @@ You have to call mermaid.initialize.` // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseDifference.js function baseDifference(array4, values2, iteratee, comparator) { - var index = -1, includes3 = arrayIncludes_default, isCommon2 = true, length2 = array4.length, result = [], valuesLength = values2.length; + var index = -1, includes3 = arrayIncludes_default, isCommon = true, length2 = array4.length, result = [], valuesLength = values2.length; if (!length2) { return result; } @@ -50394,17 +50031,17 @@ You have to call mermaid.initialize.` } if (comparator) { includes3 = arrayIncludesWith_default; - isCommon2 = false; + isCommon = false; } else if (values2.length >= LARGE_ARRAY_SIZE2) { includes3 = cacheHas_default; - isCommon2 = false; + isCommon = false; values2 = new SetCache_default(values2); } outer: while (++index < length2) { var value2 = array4[index], computed = iteratee == null ? value2 : iteratee(value2); value2 = comparator || value2 !== 0 ? value2 : 0; - if (isCommon2 && computed === computed) { + if (isCommon && computed === computed) { var valuesIndex = valuesLength; while (valuesIndex--) { if (values2[valuesIndex] === computed) { @@ -50538,7 +50175,7 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/each.js - var init_each2 = __esm({ + var init_each3 = __esm({ "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/each.js"() { "use strict"; init_forEach(); @@ -50696,14 +50333,14 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/find.js - var find2, find_default; - var init_find = __esm({ + var find2, find_default2; + var init_find2 = __esm({ "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/find.js"() { "use strict"; init_createFind(); init_findIndex(); find2 = createFind_default(findIndex_default); - find_default = find2; + find_default2 = find2; } }); @@ -50832,8 +50469,8 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGt.js - function baseGt(value2, other2) { - return value2 > other2; + function baseGt(value2, other) { + return value2 > other; } var baseGt_default; var init_baseGt = __esm({ @@ -50979,8 +50616,8 @@ You have to call mermaid.initialize.` if (isArrayLike_default(value2) && (isArray_default(value2) || typeof value2 == "string" || typeof value2.splice == "function" || isBuffer_default(value2) || isTypedArray_default(value2) || isArguments_default(value2))) { return !value2.length; } - var tag2 = getTag_default(value2); - if (tag2 == mapTag7 || tag2 == setTag7) { + var tag = getTag_default(value2); + if (tag == mapTag7 || tag == setTag7) { return !value2.size; } if (isPrototype_default(value2)) { @@ -51058,8 +50695,8 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseLt.js - function baseLt(value2, other2) { - return value2 < other2; + function baseLt(value2, other) { + return value2 < other; } var baseLt_default; var init_baseLt = __esm({ @@ -51296,14 +50933,14 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_compareAscending.js - function compareAscending(value2, other2) { - if (value2 !== other2) { + function compareAscending(value2, other) { + if (value2 !== other) { var valIsDefined = value2 !== void 0, valIsNull = value2 === null, valIsReflexive = value2 === value2, valIsSymbol = isSymbol_default(value2); - var othIsDefined = other2 !== void 0, othIsNull = other2 === null, othIsReflexive = other2 === other2, othIsSymbol = isSymbol_default(other2); - if (!othIsNull && !othIsSymbol && !valIsSymbol && value2 > other2 || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) { + var othIsDefined = other !== void 0, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol_default(other); + if (!othIsNull && !othIsSymbol && !valIsSymbol && value2 > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) { return 1; } - if (!valIsNull && !valIsSymbol && !othIsSymbol && value2 < other2 || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) { + if (!valIsNull && !valIsSymbol && !othIsSymbol && value2 < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) { return -1; } } @@ -51320,8 +50957,8 @@ You have to call mermaid.initialize.` }); // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_compareMultiple.js - function compareMultiple(object3, other2, orders) { - var index = -1, objCriteria = object3.criteria, othCriteria = other2.criteria, length2 = objCriteria.length, ordersLength = orders.length; + function compareMultiple(object3, other, orders) { + var index = -1, objCriteria = object3.criteria, othCriteria = other.criteria, length2 = objCriteria.length, ordersLength = orders.length; while (++index < length2) { var result = compareAscending_default(objCriteria[index], othCriteria[index]); if (result) { @@ -51332,7 +50969,7 @@ You have to call mermaid.initialize.` return result * (order2 == "desc" ? -1 : 1); } } - return object3.index - other2.index; + return object3.index - other.index; } var compareMultiple_default; var init_compareMultiple = __esm({ @@ -51366,8 +51003,8 @@ You have to call mermaid.initialize.` }); return { "criteria": criteria, "index": ++index, "value": value2 }; }); - return baseSortBy_default(result, function(object3, other2) { - return compareMultiple_default(object3, other2, orders); + return baseSortBy_default(result, function(object3, other) { + return compareMultiple_default(object3, other, orders); }); } var baseOrderBy_default; @@ -51605,8 +51242,8 @@ You have to call mermaid.initialize.` if (isArrayLike_default(collection4)) { return isString_default(collection4) ? stringSize_default(collection4) : collection4.length; } - var tag2 = getTag_default(collection4); - if (tag2 == mapTag8 || tag2 == setTag8) { + var tag = getTag_default(collection4); + if (tag == mapTag8 || tag == setTag8) { return collection4.size; } return baseKeys_default(collection4).length; @@ -51711,16 +51348,16 @@ You have to call mermaid.initialize.` // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUniq.js function baseUniq(array4, iteratee, comparator) { - var index = -1, includes3 = arrayIncludes_default, length2 = array4.length, isCommon2 = true, result = [], seen = result; + var index = -1, includes3 = arrayIncludes_default, length2 = array4.length, isCommon = true, result = [], seen = result; if (comparator) { - isCommon2 = false; + isCommon = false; includes3 = arrayIncludesWith_default; } else if (length2 >= LARGE_ARRAY_SIZE3) { - var set6 = iteratee ? null : createSet_default(array4); - if (set6) { - return setToArray_default(set6); + var set5 = iteratee ? null : createSet_default(array4); + if (set5) { + return setToArray_default(set5); } - isCommon2 = false; + isCommon = false; includes3 = cacheHas_default; seen = new SetCache_default(); } else { @@ -51730,7 +51367,7 @@ You have to call mermaid.initialize.` while (++index < length2) { var value2 = array4[index], computed = iteratee ? iteratee(value2) : value2; value2 = comparator || value2 !== 0 ? value2 : 0; - if (isCommon2 && computed === computed) { + if (isCommon && computed === computed) { var seenIndex = seen.length; while (seenIndex--) { if (seen[seenIndex] === computed) { @@ -51813,8 +51450,8 @@ You have to call mermaid.initialize.` // ../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/uniqueId.js function uniqueId(prefix) { - var id29 = ++idCounter; - return toString_default(prefix) + id29; + var id30 = ++idCounter; + return toString_default(prefix) + id30; } var idCounter, uniqueId_default; var init_uniqueId = __esm({ @@ -51868,15 +51505,15 @@ You have to call mermaid.initialize.` init_clone2(); init_cloneDeep(); init_compact(); - init_constant7(); + init_constant8(); init_defaults3(); init_difference(); init_drop(); init_dropRight(); - init_each2(); + init_each3(); init_every(); init_filter3(); - init_find(); + init_find2(); init_first(); init_flatMap(); init_flatten(); @@ -51936,23 +51573,23 @@ You have to call mermaid.initialize.` } function edgeArgsToId(isDirected, v_, w_, name) { var v3 = "" + v_; - var w3 = "" + w_; - if (!isDirected && v3 > w3) { + var w4 = "" + w_; + if (!isDirected && v3 > w4) { var tmp = v3; - v3 = w3; - w3 = tmp; + v3 = w4; + w4 = tmp; } - return v3 + EDGE_KEY_DELIM + w3 + EDGE_KEY_DELIM + (isUndefined_default(name) ? DEFAULT_EDGE_NAME : name); + return v3 + EDGE_KEY_DELIM + w4 + EDGE_KEY_DELIM + (isUndefined_default(name) ? DEFAULT_EDGE_NAME : name); } function edgeArgsToObj(isDirected, v_, w_, name) { var v3 = "" + v_; - var w3 = "" + w_; - if (!isDirected && v3 > w3) { + var w4 = "" + w_; + if (!isDirected && v3 > w4) { var tmp = v3; - v3 = w3; - w3 = tmp; + v3 = w4; + w4 = tmp; } - var edgeObj = { v: v3, w: w3 }; + var edgeObj = { v: v3, w: w4 }; if (name) { edgeObj.name = name; } @@ -51978,8 +51615,8 @@ You have to call mermaid.initialize.` this._isMultigraph = Object.prototype.hasOwnProperty.call(opts, "multigraph") ? opts.multigraph : false; this._isCompound = Object.prototype.hasOwnProperty.call(opts, "compound") ? opts.compound : false; this._label = void 0; - this._defaultNodeLabelFn = constant_default6(void 0); - this._defaultEdgeLabelFn = constant_default6(void 0); + this._defaultNodeLabelFn = constant_default7(void 0); + this._defaultEdgeLabelFn = constant_default7(void 0); this._nodes = {}; if (this._isCompound) { this._parent = {}; @@ -52013,7 +51650,7 @@ You have to call mermaid.initialize.` /* === Node functions ========== */ setDefaultNodeLabel(newDefault) { if (!isFunction_default(newDefault)) { - newDefault = constant_default6(newDefault); + newDefault = constant_default7(newDefault); } this._defaultNodeLabelFn = newDefault; return this; @@ -52211,7 +51848,7 @@ You have to call mermaid.initialize.` /* === Edge functions ========== */ setDefaultEdgeLabel(newDefault) { if (!isFunction_default(newDefault)) { - newDefault = constant_default6(newDefault); + newDefault = constant_default7(newDefault); } this._defaultEdgeLabelFn = newDefault; return this; @@ -52225,13 +51862,13 @@ You have to call mermaid.initialize.` setPath(vs, value2) { var self2 = this; var args = arguments; - reduce_default(vs, function(v3, w3) { + reduce_default(vs, function(v3, w4) { if (args.length > 1) { - self2.setEdge(v3, w3, value2); + self2.setEdge(v3, w4, value2); } else { - self2.setEdge(v3, w3); + self2.setEdge(v3, w4); } - return w3; + return w4; }); return this; } @@ -52240,12 +51877,12 @@ You have to call mermaid.initialize.` * setEdge({ v, w, [name] }, [value]) */ setEdge() { - var v3, w3, name, value2; + var v3, w4, name, value2; var valueSpecified = false; var arg0 = arguments[0]; if (typeof arg0 === "object" && arg0 !== null && "v" in arg0) { v3 = arg0.v; - w3 = arg0.w; + w4 = arg0.w; name = arg0.name; if (arguments.length === 2) { value2 = arguments[1]; @@ -52253,7 +51890,7 @@ You have to call mermaid.initialize.` } } else { v3 = arg0; - w3 = arguments[1]; + w4 = arguments[1]; name = arguments[3]; if (arguments.length > 2) { value2 = arguments[2]; @@ -52261,11 +51898,11 @@ You have to call mermaid.initialize.` } } v3 = "" + v3; - w3 = "" + w3; + w4 = "" + w4; if (!isUndefined_default(name)) { name = "" + name; } - var e3 = edgeArgsToId(this._isDirected, v3, w3, name); + var e3 = edgeArgsToId(this._isDirected, v3, w4, name); if (Object.prototype.hasOwnProperty.call(this._edgeLabels, e3)) { if (valueSpecified) { this._edgeLabels[e3] = value2; @@ -52276,39 +51913,39 @@ You have to call mermaid.initialize.` throw new Error("Cannot set a named edge when isMultigraph = false"); } this.setNode(v3); - this.setNode(w3); - this._edgeLabels[e3] = valueSpecified ? value2 : this._defaultEdgeLabelFn(v3, w3, name); - var edgeObj = edgeArgsToObj(this._isDirected, v3, w3, name); + this.setNode(w4); + this._edgeLabels[e3] = valueSpecified ? value2 : this._defaultEdgeLabelFn(v3, w4, name); + var edgeObj = edgeArgsToObj(this._isDirected, v3, w4, name); v3 = edgeObj.v; - w3 = edgeObj.w; + w4 = edgeObj.w; Object.freeze(edgeObj); this._edgeObjs[e3] = edgeObj; - incrementOrInitEntry(this._preds[w3], v3); - incrementOrInitEntry(this._sucs[v3], w3); - this._in[w3][e3] = edgeObj; + incrementOrInitEntry(this._preds[w4], v3); + incrementOrInitEntry(this._sucs[v3], w4); + this._in[w4][e3] = edgeObj; this._out[v3][e3] = edgeObj; this._edgeCount++; return this; } - edge(v3, w3, name) { - var e3 = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, v3, w3, name); + edge(v3, w4, name) { + var e3 = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, v3, w4, name); return this._edgeLabels[e3]; } - hasEdge(v3, w3, name) { - var e3 = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, v3, w3, name); + hasEdge(v3, w4, name) { + var e3 = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, v3, w4, name); return Object.prototype.hasOwnProperty.call(this._edgeLabels, e3); } - removeEdge(v3, w3, name) { - var e3 = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, v3, w3, name); + removeEdge(v3, w4, name) { + var e3 = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, v3, w4, name); var edge = this._edgeObjs[e3]; if (edge) { v3 = edge.v; - w3 = edge.w; + w4 = edge.w; delete this._edgeLabels[e3]; delete this._edgeObjs[e3]; - decrementOrRemoveEntry(this._preds[w3], v3); - decrementOrRemoveEntry(this._sucs[v3], w3); - delete this._in[w3][e3]; + decrementOrRemoveEntry(this._preds[w4], v3); + decrementOrRemoveEntry(this._sucs[v3], w4); + delete this._in[w4][e3]; delete this._out[v3][e3]; this._edgeCount--; } @@ -52326,22 +51963,22 @@ You have to call mermaid.initialize.` }); } } - outEdges(v3, w3) { + outEdges(v3, w4) { var outV = this._out[v3]; if (outV) { var edges3 = values_default(outV); - if (!w3) { + if (!w4) { return edges3; } return filter_default3(edges3, function(edge) { - return edge.w === w3; + return edge.w === w4; }); } } - nodeEdges(v3, w3) { - var inEdges = this.inEdges(v3, w3); + nodeEdges(v3, w4) { + var inEdges = this.inEdges(v3, w4); if (inEdges) { - return inEdges.concat(this.outEdges(v3, w3)); + return inEdges.concat(this.outEdges(v3, w4)); } } }; @@ -52427,8 +52064,8 @@ You have to call mermaid.initialize.` if (g2.nodeCount() <= 1) { return []; } - var state4 = buildState(g2, weightFn || DEFAULT_WEIGHT_FN); - var results = doGreedyFAS(state4.graph, state4.buckets, state4.zeroIdx); + var state3 = buildState(g2, weightFn || DEFAULT_WEIGHT_FN); + var results = doGreedyFAS(state3.graph, state3.buckets, state3.zeroIdx); return flatten_default( map_default(results, function(e3) { return g2.outEdges(e3.v, e3.w); @@ -52472,8 +52109,8 @@ You have to call mermaid.initialize.` }); forEach_default(g2.outEdges(entry.v), function(edge) { var weight8 = g2.edge(edge); - var w3 = edge.w; - var wEntry = g2.node(w3); + var w4 = edge.w; + var wEntry = g2.node(w4); wEntry["in"] -= weight8; assignBucket(buckets, zeroIdx, wEntry); }); @@ -52520,7 +52157,7 @@ You have to call mermaid.initialize.` init_lodash(); init_graphlib(); init_list(); - DEFAULT_WEIGHT_FN = constant_default6(1); + DEFAULT_WEIGHT_FN = constant_default7(1); __name(greedyFAS, "greedyFAS"); __name(doGreedyFAS, "doGreedyFAS"); __name(removeNode, "removeNode"); @@ -52631,29 +52268,29 @@ You have to call mermaid.initialize.` } function intersectRect2(rect3, point8) { var x5 = rect3.x; - var y5 = rect3.y; + var y6 = rect3.y; var dx = point8.x - x5; - var dy = point8.y - y5; - var w3 = rect3.width / 2; - var h2 = rect3.height / 2; + var dy = point8.y - y6; + var w4 = rect3.width / 2; + var h3 = rect3.height / 2; if (!dx && !dy) { throw new Error("Not possible to find intersection inside of the rectangle"); } var sx, sy; - if (Math.abs(dy) * w3 > Math.abs(dx) * h2) { + if (Math.abs(dy) * w4 > Math.abs(dx) * h3) { if (dy < 0) { - h2 = -h2; + h3 = -h3; } - sx = h2 * dx / dy; - sy = h2; + sx = h3 * dx / dy; + sy = h3; } else { if (dx < 0) { - w3 = -w3; + w4 = -w4; } - sx = w3; - sy = w3 * dy / dx; + sx = w4; + sy = w4 * dy / dx; } - return { x: x5 + sx, y: y5 + sy }; + return { x: x5 + sx, y: y6 + sy }; } function buildLayerMatrix(g2) { var layering = map_default(range_default(maxRank(g2) + 1), function() { @@ -52836,9 +52473,9 @@ You have to call mermaid.initialize.` }); } function swapWidthHeightOne(attrs) { - var w3 = attrs.width; + var w4 = attrs.width; attrs.width = attrs.height; - attrs.height = w3; + attrs.height = w4; } function reverseY(g2) { forEach_default(g2.nodes(), function(v3) { @@ -52897,8 +52534,8 @@ You have to call mermaid.initialize.` function normalizeEdge(g2, e3) { var v3 = e3.v; var vRank = g2.node(v3).rank; - var w3 = e3.w; - var wRank = g2.node(w3).rank; + var w4 = e3.w; + var wRank = g2.node(w4).rank; var name = e3.name; var edgeLabel = g2.edge(e3); var labelRank = edgeLabel.labelRank; @@ -52928,16 +52565,16 @@ You have to call mermaid.initialize.` } v3 = dummy; } - g2.setEdge(v3, w3, { weight: edgeLabel.weight }, name); + g2.setEdge(v3, w4, { weight: edgeLabel.weight }, name); } function undo3(g2) { forEach_default(g2.graph().dummyChains, function(v3) { var node2 = g2.node(v3); var origLabel = node2.edgeLabel; - var w3; + var w4; g2.setEdge(node2.edgeObj, origLabel); while (node2.dummy) { - w3 = g2.successors(v3)[0]; + w4 = g2.successors(v3)[0]; g2.removeNode(v3); origLabel.points.push({ x: node2.x, y: node2.y }); if (node2.dummy === "edge-label") { @@ -52946,7 +52583,7 @@ You have to call mermaid.initialize.` origLabel.width = node2.width; origLabel.height = node2.height; } - v3 = w3; + v3 = w4; node2 = g2.node(v3); } }); @@ -53002,10 +52639,10 @@ You have to call mermaid.initialize.` function feasibleTree(g2) { var t4 = new Graph({ directed: false }); var start3 = g2.nodes()[0]; - var size5 = g2.nodeCount(); + var size4 = g2.nodeCount(); t4.setNode(start3, {}); var edge, delta; - while (tightTree(t4, g2) < size5) { + while (tightTree(t4, g2) < size4) { edge = findMinSlackEdge(t4, g2); delta = t4.hasNode(edge.v) ? slack(g2, edge) : -slack(g2, edge); shiftRanks(t4, g2, delta); @@ -53015,11 +52652,11 @@ You have to call mermaid.initialize.` function tightTree(t4, g2) { function dfs3(v3) { forEach_default(g2.nodeEdges(v3), function(e3) { - var edgeV = e3.v, w3 = v3 === edgeV ? e3.w : edgeV; - if (!t4.hasNode(w3) && !slack(g2, e3)) { - t4.setNode(w3, {}); - t4.setEdge(v3, w3, {}); - dfs3(w3); + var edgeV = e3.v, w4 = v3 === edgeV ? e3.w : edgeV; + if (!t4.hasNode(w4) && !slack(g2, e3)) { + t4.setNode(w4, {}); + t4.setEdge(v3, w4, {}); + dfs3(w4); } }); } @@ -53073,7 +52710,7 @@ You have to call mermaid.initialize.` "use strict"; init_lodash(); init_priority_queue(); - DEFAULT_WEIGHT_FUNC = constant_default6(1); + DEFAULT_WEIGHT_FUNC = constant_default7(1); } }); @@ -53106,7 +52743,7 @@ You have to call mermaid.initialize.` "../../node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/graphlib/alg/floyd-warshall.js"() { "use strict"; init_lodash(); - DEFAULT_WEIGHT_FUNC2 = constant_default6(1); + DEFAULT_WEIGHT_FUNC2 = constant_default7(1); } }); @@ -53177,8 +52814,8 @@ You have to call mermaid.initialize.` if (!postorder3) { acc.push(v3); } - forEach_default(navigation(v3), function(w3) { - doDfs(g2, w3, postorder3, visited, navigation, acc); + forEach_default(navigation(v3), function(w4) { + doDfs(g2, w4, postorder3, visited, navigation, acc); }); if (postorder3) { acc.push(v3); @@ -53282,31 +52919,31 @@ You have to call mermaid.initialize.` } cutValue = graphEdge.weight; forEach_default(g2.nodeEdges(child), function(e3) { - var isOutEdge = e3.v === child, other2 = isOutEdge ? e3.w : e3.v; - if (other2 !== parent4) { + var isOutEdge = e3.v === child, other = isOutEdge ? e3.w : e3.v; + if (other !== parent4) { var pointsToHead = isOutEdge === childIsTail, otherWeight = g2.edge(e3).weight; cutValue += pointsToHead ? otherWeight : -otherWeight; - if (isTreeEdge(t4, child, other2)) { - var otherCutValue = t4.edge(child, other2).cutvalue; + if (isTreeEdge(t4, child, other)) { + var otherCutValue = t4.edge(child, other).cutvalue; cutValue += pointsToHead ? -otherCutValue : otherCutValue; } } }); return cutValue; } - function initLowLimValues(tree, root4) { + function initLowLimValues(tree, root3) { if (arguments.length < 2) { - root4 = tree.nodes()[0]; + root3 = tree.nodes()[0]; } - dfsAssignLowLim(tree, {}, 1, root4); + dfsAssignLowLim(tree, {}, 1, root3); } function dfsAssignLowLim(tree, visited, nextLim, v3, parent4) { var low = nextLim; var label = tree.node(v3); visited[v3] = true; - forEach_default(tree.neighbors(v3), function(w3) { - if (!Object.prototype.hasOwnProperty.call(visited, w3)) { - nextLim = dfsAssignLowLim(tree, visited, nextLim, w3, v3); + forEach_default(tree.neighbors(v3), function(w4) { + if (!Object.prototype.hasOwnProperty.call(visited, w4)) { + nextLim = dfsAssignLowLim(tree, visited, nextLim, w4, v3); } }); label.low = low; @@ -53319,19 +52956,19 @@ You have to call mermaid.initialize.` return nextLim; } function leaveEdge(tree) { - return find_default(tree.edges(), function(e3) { + return find_default2(tree.edges(), function(e3) { return tree.edge(e3).cutvalue < 0; }); } function enterEdge(t4, g2, edge) { var v3 = edge.v; - var w3 = edge.w; - if (!g2.hasEdge(v3, w3)) { + var w4 = edge.w; + if (!g2.hasEdge(v3, w4)) { v3 = edge.w; - w3 = edge.v; + w4 = edge.v; } var vLabel = t4.node(v3); - var wLabel = t4.node(w3); + var wLabel = t4.node(w4); var tailLabel = vLabel; var flip = false; if (vLabel.lim > wLabel.lim) { @@ -53347,18 +52984,18 @@ You have to call mermaid.initialize.` } function exchangeEdges(t4, g2, e3, f2) { var v3 = e3.v; - var w3 = e3.w; - t4.removeEdge(v3, w3); + var w4 = e3.w; + t4.removeEdge(v3, w4); t4.setEdge(f2.v, f2.w, {}); initLowLimValues(t4); initCutValues(t4, g2); updateRanks(t4, g2); } function updateRanks(t4, g2) { - var root4 = find_default(t4.nodes(), function(v3) { + var root3 = find_default2(t4.nodes(), function(v3) { return !g2.node(v3).parent; }); - var vs = preorder(t4, root4); + var vs = preorder(t4, root3); vs = vs.slice(1); forEach_default(vs, function(v3) { var parent4 = t4.node(v3).parent, edge = g2.edge(v3, parent4), flipped = false; @@ -53443,25 +53080,25 @@ You have to call mermaid.initialize.` // ../../node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/dagre/nesting-graph.js function run3(g2) { - var root4 = addDummyNode(g2, "root", {}, "_root"); + var root3 = addDummyNode(g2, "root", {}, "_root"); var depths = treeDepths(g2); var height2 = max_default(values_default(depths)) - 1; var nodeSep = 2 * height2 + 1; - g2.graph().nestingRoot = root4; + g2.graph().nestingRoot = root3; forEach_default(g2.edges(), function(e3) { g2.edge(e3).minlen *= nodeSep; }); var weight8 = sumWeights(g2) + 1; forEach_default(g2.children(), function(child) { - dfs2(g2, root4, nodeSep, weight8, height2, depths, child); + dfs2(g2, root3, nodeSep, weight8, height2, depths, child); }); g2.graph().nodeRankFactor = nodeSep; } - function dfs2(g2, root4, nodeSep, weight8, height2, depths, v3) { + function dfs2(g2, root3, nodeSep, weight8, height2, depths, v3) { var children2 = g2.children(v3); if (!children2.length) { - if (v3 !== root4) { - g2.setEdge(root4, v3, { weight: 0, minlen: nodeSep }); + if (v3 !== root3) { + g2.setEdge(root3, v3, { weight: 0, minlen: nodeSep }); } return; } @@ -53473,7 +53110,7 @@ You have to call mermaid.initialize.` g2.setParent(bottom2, v3); label.borderBottom = bottom2; forEach_default(children2, function(child) { - dfs2(g2, root4, nodeSep, weight8, height2, depths, child); + dfs2(g2, root3, nodeSep, weight8, height2, depths, child); var childNode = g2.node(child); var childTop = childNode.borderTop ? childNode.borderTop : child; var childBottom = childNode.borderBottom ? childNode.borderBottom : child; @@ -53491,7 +53128,7 @@ You have to call mermaid.initialize.` }); }); if (!g2.parent(v3)) { - g2.setEdge(root4, top2, { weight: 0, minlen: height2 + depths[v3] }); + g2.setEdge(root3, top2, { weight: 0, minlen: height2 + depths[v3] }); } } function treeDepths(g2) { @@ -53576,14 +53213,14 @@ You have to call mermaid.initialize.` // ../../node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/dagre/order/build-layer-graph.js function buildLayerGraph(g2, rank2, relationship) { - var root4 = createRootNode(g2), result = new Graph({ compound: true }).setGraph({ root: root4 }).setDefaultNodeLabel(function(v3) { + var root3 = createRootNode(g2), result = new Graph({ compound: true }).setGraph({ root: root3 }).setDefaultNodeLabel(function(v3) { return g2.node(v3); }); forEach_default(g2.nodes(), function(v3) { var node2 = g2.node(v3), parent4 = g2.parent(v3); if (node2.rank === rank2 || node2.minRank <= rank2 && rank2 <= node2.maxRank) { result.setNode(v3); - result.setParent(v3, parent4 || root4); + result.setParent(v3, parent4 || root3); forEach_default(g2[relationship](v3), function(e3) { var u2 = e3.v === v3 ? e3.w : e3.v, edge = result.edge(u2, v3), weight8 = !isUndefined_default(edge) ? edge.weight : 0; result.setEdge(u2, v3, { weight: g2.edge(e3).weight + weight8 }); @@ -53879,7 +53516,7 @@ You have to call mermaid.initialize.` return !bias ? entryV.i - entryW.i : entryW.i - entryV.i; }; } - var init_sort2 = __esm({ + var init_sort3 = __esm({ "../../node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/dagre/order/sort.js"() { "use strict"; init_lodash(); @@ -53895,11 +53532,11 @@ You have to call mermaid.initialize.` var movable = g2.children(v3); var node2 = g2.node(v3); var bl = node2 ? node2.borderLeft : void 0; - var br2 = node2 ? node2.borderRight : void 0; + var br = node2 ? node2.borderRight : void 0; var subgraphs = {}; if (bl) { - movable = filter_default3(movable, function(w3) { - return w3 !== bl && w3 !== br2; + movable = filter_default3(movable, function(w4) { + return w4 !== bl && w4 !== br; }); } var barycenters = barycenter(g2, movable); @@ -53916,9 +53553,9 @@ You have to call mermaid.initialize.` expandSubgraphs(entries2, subgraphs); var result = sort(entries2, biasRight); if (bl) { - result.vs = flatten_default([bl, result.vs, br2]); + result.vs = flatten_default([bl, result.vs, br]); if (g2.predecessors(bl).length) { - var blPred = g2.node(g2.predecessors(bl)[0]), brPred = g2.node(g2.predecessors(br2)[0]); + var blPred = g2.node(g2.predecessors(bl)[0]), brPred = g2.node(g2.predecessors(br)[0]); if (!Object.prototype.hasOwnProperty.call(result, "barycenter")) { result.barycenter = 0; result.weight = 0; @@ -53941,13 +53578,13 @@ You have to call mermaid.initialize.` ); }); } - function mergeBarycenters(target, other2) { + function mergeBarycenters(target, other) { if (!isUndefined_default(target.barycenter)) { - target.barycenter = (target.barycenter * target.weight + other2.barycenter * other2.weight) / (target.weight + other2.weight); - target.weight += other2.weight; + target.barycenter = (target.barycenter * target.weight + other.barycenter * other.weight) / (target.weight + other.weight); + target.weight += other.weight; } else { - target.barycenter = other2.barycenter; - target.weight = other2.weight; + target.barycenter = other.barycenter; + target.weight = other.weight; } } var init_sort_subgraph = __esm({ @@ -53956,7 +53593,7 @@ You have to call mermaid.initialize.` init_lodash(); init_barycenter(); init_resolve_conflicts(); - init_sort2(); + init_sort3(); __name(sortSubgraph, "sortSubgraph"); __name(expandSubgraphs, "expandSubgraphs"); __name(mergeBarycenters, "mergeBarycenters"); @@ -53989,8 +53626,8 @@ You have to call mermaid.initialize.` function sweepLayerGraphs(layerGraphs, biasRight) { var cg = new Graph(); forEach_default(layerGraphs, function(lg) { - var root4 = lg.graph().root; - var sorted = sortSubgraph(lg, root4, cg, biasRight); + var root3 = lg.graph().root; + var sorted = sortSubgraph(lg, root3, cg, biasRight); forEach_default(sorted.vs, function(v3, i2) { lg.node(v3).order = i2; }); @@ -54055,11 +53692,11 @@ You have to call mermaid.initialize.` } }); } - function findPath(g2, postorderNums, v3, w3) { + function findPath(g2, postorderNums, v3, w4) { var vPath = []; var wPath = []; - var low = Math.min(postorderNums[v3].low, postorderNums[w3].low); - var lim = Math.max(postorderNums[v3].lim, postorderNums[w3].lim); + var low = Math.min(postorderNums[v3].low, postorderNums[w4].low); + var lim = Math.max(postorderNums[v3].lim, postorderNums[w4].lim); var parent4; var lca; parent4 = v3; @@ -54068,7 +53705,7 @@ You have to call mermaid.initialize.` vPath.push(parent4); } while (parent4 && (postorderNums[parent4].low > low || lim > postorderNums[parent4].lim)); lca = parent4; - parent4 = w3; + parent4 = w4; while ((parent4 = g2.parent(parent4)) !== lca) { wPath.push(parent4); } @@ -54102,8 +53739,8 @@ You have to call mermaid.initialize.` function visitLayer(prevLayer, layer) { var k0 = 0, scanPos = 0, prevLayerLength = prevLayer.length, lastNode = last_default(layer); forEach_default(layer, function(v3, i2) { - var w3 = findOtherInnerSegmentNode(g2, v3), k1 = w3 ? g2.node(w3).order : prevLayerLength; - if (w3 || v3 === lastNode) { + var w4 = findOtherInnerSegmentNode(g2, v3), k1 = w4 ? g2.node(w4).order : prevLayerLength; + if (w4 || v3 === lastNode) { forEach_default(layer.slice(scanPos, i2 + 1), function(scanNode) { forEach_default(g2.predecessors(scanNode), function(u2) { var uLabel = g2.node(u2), uPos = uLabel.order; @@ -54161,36 +53798,36 @@ You have to call mermaid.initialize.` } function findOtherInnerSegmentNode(g2, v3) { if (g2.node(v3).dummy) { - return find_default(g2.predecessors(v3), function(u2) { + return find_default2(g2.predecessors(v3), function(u2) { return g2.node(u2).dummy; }); } } - function addConflict(conflicts, v3, w3) { - if (v3 > w3) { + function addConflict(conflicts, v3, w4) { + if (v3 > w4) { var tmp = v3; - v3 = w3; - w3 = tmp; + v3 = w4; + w4 = tmp; } var conflictsV = conflicts[v3]; if (!conflictsV) { conflicts[v3] = conflictsV = {}; } - conflictsV[w3] = true; + conflictsV[w4] = true; } - function hasConflict(conflicts, v3, w3) { - if (v3 > w3) { + function hasConflict(conflicts, v3, w4) { + if (v3 > w4) { var tmp = v3; - v3 = w3; - w3 = tmp; + v3 = w4; + w4 = tmp; } - return !!conflicts[v3] && Object.prototype.hasOwnProperty.call(conflicts[v3], w3); + return !!conflicts[v3] && Object.prototype.hasOwnProperty.call(conflicts[v3], w4); } function verticalAlignment(g2, layering, conflicts, neighborFn) { - var root4 = {}, align = {}, pos = {}; + var root3 = {}, align = {}, pos = {}; forEach_default(layering, function(layer) { forEach_default(layer, function(v3, order2) { - root4[v3] = v3; + root3[v3] = v3; align[v3] = v3; pos[v3] = order2; }); @@ -54200,25 +53837,25 @@ You have to call mermaid.initialize.` forEach_default(layer, function(v3) { var ws = neighborFn(v3); if (ws.length) { - ws = sortBy_default(ws, function(w4) { - return pos[w4]; + ws = sortBy_default(ws, function(w5) { + return pos[w5]; }); var mp = (ws.length - 1) / 2; for (var i2 = Math.floor(mp), il = Math.ceil(mp); i2 <= il; ++i2) { - var w3 = ws[i2]; - if (align[v3] === v3 && prevIdx < pos[w3] && !hasConflict(conflicts, v3, w3)) { - align[w3] = v3; - align[v3] = root4[v3] = root4[w3]; - prevIdx = pos[w3]; + var w4 = ws[i2]; + if (align[v3] === v3 && prevIdx < pos[w4] && !hasConflict(conflicts, v3, w4)) { + align[w4] = v3; + align[v3] = root3[v3] = root3[w4]; + prevIdx = pos[w4]; } } } }); }); - return { root: root4, align }; + return { root: root3, align }; } - function horizontalCompaction(g2, layering, root4, align, reverseSep) { - var xs = {}, blockG = buildBlockGraph(g2, layering, root4, reverseSep), borderType = reverseSep ? "borderLeft" : "borderRight"; + function horizontalCompaction(g2, layering, root3, align, reverseSep) { + var xs = {}, blockG = buildBlockGraph(g2, layering, root3, reverseSep), borderType = reverseSep ? "borderLeft" : "borderRight"; function iterate(setXsFunc, nextNodesFunc) { var stack = blockG.nodes(); var elem = stack.pop(); @@ -54254,19 +53891,19 @@ You have to call mermaid.initialize.` iterate(pass1, blockG.predecessors.bind(blockG)); iterate(pass2, blockG.successors.bind(blockG)); forEach_default(align, function(v3) { - xs[v3] = xs[root4[v3]]; + xs[v3] = xs[root3[v3]]; }); return xs; } - function buildBlockGraph(g2, layering, root4, reverseSep) { + function buildBlockGraph(g2, layering, root3, reverseSep) { var blockGraph = new Graph(), graphLabel = g2.graph(), sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep); forEach_default(layering, function(layer) { var u2; forEach_default(layer, function(v3) { - var vRoot = root4[v3]; + var vRoot = root3[v3]; blockGraph.setNode(vRoot); if (u2) { - var uRoot = root4[u2], prevMax = blockGraph.edge(uRoot, vRoot); + var uRoot = root3[u2], prevMax = blockGraph.edge(uRoot, vRoot); blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g2, v3, u2), prevMax || 0)); } u2 = v3; @@ -54341,9 +53978,9 @@ You have to call mermaid.initialize.` return balance(xss, g2.graph().align); } function sep(nodeSep, edgeSep, reverseSep) { - return function(g2, v3, w3) { + return function(g2, v3, w4) { var vLabel = g2.node(v3); - var wLabel = g2.node(w3); + var wLabel = g2.node(w4); var sum2 = 0; var delta; sum2 += vLabel.width / 2; @@ -54545,8 +54182,8 @@ You have to call mermaid.initialize.` var edge = g2.edge(e3); if (edge.width && edge.height) { var v3 = g2.node(e3.v); - var w3 = g2.node(e3.w); - var label = { rank: (w3.rank - v3.rank) / 2 + v3.rank, e: e3 }; + var w4 = g2.node(e3.w); + var label = { rank: (w4.rank - v3.rank) / 2 + v3.rank, e: e3 }; addDummyNode(g2, "edge-proxy", label, "_ep"); } }); @@ -54582,13 +54219,13 @@ You have to call mermaid.initialize.` var marginY = graphLabel.marginy || 0; function getExtremes(attrs) { var x5 = attrs.x; - var y5 = attrs.y; - var w3 = attrs.width; - var h2 = attrs.height; - minX = Math.min(minX, x5 - w3 / 2); - maxX = Math.max(maxX, x5 + w3 / 2); - minY = Math.min(minY, y5 - h2 / 2); - maxY = Math.max(maxY, y5 + h2 / 2); + var y6 = attrs.y; + var w4 = attrs.width; + var h3 = attrs.height; + minX = Math.min(minX, x5 - w4 / 2); + maxX = Math.max(maxX, x5 + w4 / 2); + minY = Math.min(minY, y6 - h3 / 2); + maxY = Math.max(maxY, y6 + h3 / 2); } __name(getExtremes, "getExtremes"); forEach_default(g2.nodes(), function(v3) { @@ -54672,12 +54309,12 @@ You have to call mermaid.initialize.` if (g2.children(v3).length) { var node2 = g2.node(v3); var t4 = g2.node(node2.borderTop); - var b2 = g2.node(node2.borderBottom); - var l2 = g2.node(last_default(node2.borderLeft)); + var b3 = g2.node(node2.borderBottom); + var l4 = g2.node(last_default(node2.borderLeft)); var r2 = g2.node(last_default(node2.borderRight)); - node2.width = Math.abs(r2.x - l2.x); - node2.height = Math.abs(b2.y - t4.y); - node2.x = l2.x + node2.width / 2; + node2.width = Math.abs(r2.x - l4.x); + node2.height = Math.abs(b3.y - t4.y); + node2.x = l4.x + node2.width / 2; node2.y = t4.y + node2.height / 2; } }); @@ -54731,17 +54368,17 @@ You have to call mermaid.initialize.` if (node2.dummy === "selfedge") { var selfNode = g2.node(node2.e.v); var x5 = selfNode.x + selfNode.width / 2; - var y5 = selfNode.y; + var y6 = selfNode.y; var dx = node2.x - x5; var dy = selfNode.height / 2; g2.setEdge(node2.e, node2.label); g2.removeNode(v3); node2.label.points = [ - { x: x5 + 2 * dx / 3, y: y5 - dy }, - { x: x5 + 5 * dx / 6, y: y5 - dy }, - { x: x5 + dx, y: y5 }, - { x: x5 + 5 * dx / 6, y: y5 + dy }, - { x: x5 + 2 * dx / 3, y: y5 + dy } + { x: x5 + 2 * dx / 3, y: y6 - dy }, + { x: x5 + 5 * dx / 6, y: y6 - dy }, + { x: x5 + dx, y: y6 }, + { x: x5 + 5 * dx / 6, y: y6 + dy }, + { x: x5 + 2 * dx / 3, y: y6 + dy } ]; node2.label.x = node2.x; node2.label.y = node2.y; @@ -54891,10 +54528,10 @@ You have to call mermaid.initialize.` parents.clear(); clusterDb.clear(); }, "clear"); - isDescendant2 = /* @__PURE__ */ __name((id29, ancestorId) => { + isDescendant2 = /* @__PURE__ */ __name((id30, ancestorId) => { const ancestorDescendants = descendants.get(ancestorId) || []; - log.trace("In isDescendant", ancestorId, " ", id29, " = ", ancestorDescendants.includes(id29)); - return ancestorDescendants.includes(id29); + log.trace("In isDescendant", ancestorId, " ", id30, " = ", ancestorDescendants.includes(id30)); + return ancestorDescendants.includes(id30); }, "isDescendant"); edgeInCluster = /* @__PURE__ */ __name((edge, clusterId) => { const clusterDescendants = descendants.get(clusterId) || []; @@ -54919,18 +54556,18 @@ You have to call mermaid.initialize.` graph.node(clusterId), rootId ); - const nodes6 = graph.children(clusterId) || []; + const nodes5 = graph.children(clusterId) || []; if (clusterId !== rootId) { - nodes6.push(clusterId); + nodes5.push(clusterId); } - log.warn("Copying (nodes) clusterId", clusterId, "nodes", nodes6); - nodes6.forEach((node2) => { + log.warn("Copying (nodes) clusterId", clusterId, "nodes", nodes5); + nodes5.forEach((node2) => { if (graph.children(node2).length > 0) { copy2(node2, graph, newGraph, rootId); } else { - const data6 = graph.node(node2); + const data5 = graph.node(node2); log.info("cp ", node2, " to ", rootId, " with parent ", clusterId); - newGraph.setNode(node2, data6); + newGraph.setNode(node2, data5); if (rootId !== graph.parent(node2)) { log.warn("Setting parent", node2, graph.parent(node2)); newGraph.setParent(node2, graph.parent(node2)); @@ -54953,12 +54590,12 @@ You have to call mermaid.initialize.` log.debug("Copying Edges", edges3); edges3.forEach((edge) => { log.info("Edge", edge); - const data7 = graph.edge(edge.v, edge.w, edge.name); - log.info("Edge data", data7, rootId); + const data6 = graph.edge(edge.v, edge.w, edge.name); + log.info("Edge data", data6, rootId); try { if (edgeInCluster(edge, rootId)) { - log.info("Copying as ", edge.v, edge.w, data7, edge.name); - newGraph.setEdge(edge.v, edge.w, data7, edge.name); + log.info("Copying as ", edge.v, edge.w, data6, edge.name); + newGraph.setEdge(edge.v, edge.w, data6, edge.name); log.info("newGraph edges ", newGraph.edges(), newGraph.edge(newGraph.edges()[0])); } else { log.info( @@ -54981,20 +54618,20 @@ You have to call mermaid.initialize.` graph.removeNode(node2); }); }, "copy"); - extractDescendants = /* @__PURE__ */ __name((id29, graph) => { - const children2 = graph.children(id29); + extractDescendants = /* @__PURE__ */ __name((id30, graph) => { + const children2 = graph.children(id30); let res = [...children2]; for (const child of children2) { - parents.set(child, id29); + parents.set(child, id30); res = [...res, ...extractDescendants(child, graph)]; } return res; }, "extractDescendants"); - findCommonEdges = /* @__PURE__ */ __name((graph, id1, id29) => { + findCommonEdges = /* @__PURE__ */ __name((graph, id1, id210) => { const edges1 = graph.edges().filter((edge) => edge.v === id1 || edge.w === id1); - const edges22 = graph.edges().filter((edge) => edge.v === id29 || edge.w === id29); + const edges22 = graph.edges().filter((edge) => edge.v === id210 || edge.w === id210); const edges1Prim = edges1.map((edge) => { - return { v: edge.v === id1 ? id29 : edge.v, w: edge.w === id1 ? id1 : edge.w }; + return { v: edge.v === id1 ? id210 : edge.v, w: edge.w === id1 ? id1 : edge.w }; }); const edges2Prim = edges22.map((edge) => { return { v: edge.v, w: edge.w }; @@ -55004,11 +54641,11 @@ You have to call mermaid.initialize.` }); return result; }, "findCommonEdges"); - findNonClusterChild = /* @__PURE__ */ __name((id29, graph, clusterId) => { - const children2 = graph.children(id29); - log.trace("Searching children of id ", id29, children2); + findNonClusterChild = /* @__PURE__ */ __name((id30, graph, clusterId) => { + const children2 = graph.children(id30); + log.trace("Searching children of id ", id30, children2); if (children2.length < 1) { - return id29; + return id30; } let reserve; for (const child of children2) { @@ -55024,17 +54661,17 @@ You have to call mermaid.initialize.` } return reserve; }, "findNonClusterChild"); - getAnchorId = /* @__PURE__ */ __name((id29) => { - if (!clusterDb.has(id29)) { - return id29; + getAnchorId = /* @__PURE__ */ __name((id30) => { + if (!clusterDb.has(id30)) { + return id30; } - if (!clusterDb.get(id29).externalConnections) { - return id29; + if (!clusterDb.get(id30).externalConnections) { + return id30; } - if (clusterDb.has(id29)) { - return clusterDb.get(id29).id; + if (clusterDb.has(id30)) { + return clusterDb.get(id30).id; } - return id29; + return id30; }, "getAnchorId"); adjustClustersAndEdges = /* @__PURE__ */ __name((graph, depth) => { if (!graph || depth > 10) { @@ -55043,42 +54680,42 @@ You have to call mermaid.initialize.` } else { log.debug("Opting in, graph "); } - graph.nodes().forEach(function(id29) { - const children2 = graph.children(id29); + graph.nodes().forEach(function(id30) { + const children2 = graph.children(id30); if (children2.length > 0) { log.warn( "Cluster identified", - id29, + id30, " Replacement id in edges: ", - findNonClusterChild(id29, graph, id29) + findNonClusterChild(id30, graph, id30) ); - descendants.set(id29, extractDescendants(id29, graph)); - clusterDb.set(id29, { id: findNonClusterChild(id29, graph, id29), clusterData: graph.node(id29) }); + descendants.set(id30, extractDescendants(id30, graph)); + clusterDb.set(id30, { id: findNonClusterChild(id30, graph, id30), clusterData: graph.node(id30) }); } }); - graph.nodes().forEach(function(id29) { - const children2 = graph.children(id29); + graph.nodes().forEach(function(id30) { + const children2 = graph.children(id30); const edges3 = graph.edges(); if (children2.length > 0) { - log.debug("Cluster identified", id29, descendants); + log.debug("Cluster identified", id30, descendants); edges3.forEach((edge) => { - const d1 = isDescendant2(edge.v, id29); - const d2 = isDescendant2(edge.w, id29); - if (d1 ^ d2) { - log.warn("Edge: ", edge, " leaves cluster ", id29); - log.warn("Descendants of XXX ", id29, ": ", descendants.get(id29)); - clusterDb.get(id29).externalConnections = true; + const d1 = isDescendant2(edge.v, id30); + const d22 = isDescendant2(edge.w, id30); + if (d1 ^ d22) { + log.warn("Edge: ", edge, " leaves cluster ", id30); + log.warn("Descendants of XXX ", id30, ": ", descendants.get(id30)); + clusterDb.get(id30).externalConnections = true; } }); } else { - log.debug("Not a cluster ", id29, descendants); + log.debug("Not a cluster ", id30, descendants); } }); - for (let id29 of clusterDb.keys()) { - const nonClusterChild = clusterDb.get(id29).id; + for (let id30 of clusterDb.keys()) { + const nonClusterChild = clusterDb.get(id30).id; const parent4 = graph.parent(nonClusterChild); - if (parent4 !== id29 && clusterDb.has(parent4) && !clusterDb.get(parent4).externalConnections) { - clusterDb.get(id29).id = parent4; + if (parent4 !== id30 && clusterDb.has(parent4) && !clusterDb.get(parent4).externalConnections) { + clusterDb.get(id30).id = parent4; } } graph.edges().forEach(function(e3) { @@ -55086,7 +54723,7 @@ You have to call mermaid.initialize.` log.warn("Edge " + e3.v + " -> " + e3.w + ": " + JSON.stringify(e3)); log.warn("Edge " + e3.v + " -> " + e3.w + ": " + JSON.stringify(graph.edge(e3))); let v3 = e3.v; - let w3 = e3.w; + let w4 = e3.w; log.warn( "Fix XXX", clusterDb, @@ -55101,20 +54738,20 @@ You have to call mermaid.initialize.` if (clusterDb.get(e3.v) || clusterDb.get(e3.w)) { log.warn("Fixing and trying - removing XXX", e3.v, e3.w, e3.name); v3 = getAnchorId(e3.v); - w3 = getAnchorId(e3.w); + w4 = getAnchorId(e3.w); graph.removeEdge(e3.v, e3.w, e3.name); if (v3 !== e3.v) { const parent4 = graph.parent(v3); clusterDb.get(parent4).externalConnections = true; edge.fromCluster = e3.v; } - if (w3 !== e3.w) { - const parent4 = graph.parent(w3); + if (w4 !== e3.w) { + const parent4 = graph.parent(w4); clusterDb.get(parent4).externalConnections = true; edge.toCluster = e3.w; } - log.warn("Fix Replacing with XXX", v3, w3, e3.name); - graph.setEdge(v3, w3, edge, e3.name); + log.warn("Fix Replacing with XXX", v3, w4, e3.name); + graph.setEdge(v3, w4, edge, e3.name); } }); log.warn("Adjusted Graph", write(graph)); @@ -55127,9 +54764,9 @@ You have to call mermaid.initialize.` log.error("Bailing out"); return; } - let nodes6 = graph.nodes(); + let nodes5 = graph.nodes(); let hasChildren = false; - for (const node2 of nodes6) { + for (const node2 of nodes5) { const children2 = graph.children(node2); hasChildren = hasChildren || children2.length > 0; } @@ -55137,8 +54774,8 @@ You have to call mermaid.initialize.` log.debug("Done, no node has children", graph.nodes()); return; } - log.debug("Nodes = ", nodes6, depth); - for (const node2 of nodes6) { + log.debug("Nodes = ", nodes5, depth); + for (const node2 of nodes5) { log.debug( "Extracting node", node2, @@ -55203,22 +54840,22 @@ You have to call mermaid.initialize.` log.debug(clusterDb); } } - nodes6 = graph.nodes(); - log.warn("New list of nodes", nodes6); - for (const node2 of nodes6) { - const data6 = graph.node(node2); - log.warn(" Now next level", node2, data6); - if (data6?.clusterNode) { - extractor(data6.graph, depth + 1); + nodes5 = graph.nodes(); + log.warn("New list of nodes", nodes5); + for (const node2 of nodes5) { + const data5 = graph.node(node2); + log.warn(" Now next level", node2, data5); + if (data5?.clusterNode) { + extractor(data5.graph, depth + 1); } } }, "extractor"); - sorter = /* @__PURE__ */ __name((graph, nodes6) => { - if (nodes6.length === 0) { + sorter = /* @__PURE__ */ __name((graph, nodes5) => { + if (nodes5.length === 0) { return []; } - let result = Object.assign([], nodes6); - nodes6.forEach((node2) => { + let result = Object.assign([], nodes5); + nodes5.forEach((node2) => { const children2 = graph.children(node2); const sorted = sorter(graph, children2); result = [...result, ...sorted]; @@ -55250,7 +54887,7 @@ You have to call mermaid.initialize.` init_logger(); init_subGraphTitleMargins(); init_diagramAPI(); - recursiveRender = /* @__PURE__ */ __name(async (_elem, graph, diagramType, id29, parentCluster, siteConfig2) => { + recursiveRender = /* @__PURE__ */ __name(async (_elem, graph, diagramType, id30, parentCluster, siteConfig2) => { log.warn("Graph in recursive render:XAX", write(graph), parentCluster); const dir2 = graph.graph().rankdir; log.trace("Dir in recursive render - dir:", dir2); @@ -55266,24 +54903,24 @@ You have to call mermaid.initialize.` const clusters = elem.insert("g").attr("class", "clusters"); const edgePaths = elem.insert("g").attr("class", "edgePaths"); const edgeLabels3 = elem.insert("g").attr("class", "edgeLabels"); - const nodes6 = elem.insert("g").attr("class", "nodes"); + const nodes5 = elem.insert("g").attr("class", "nodes"); await Promise.all( graph.nodes().map(async function(v3) { const node2 = graph.node(v3); if (parentCluster !== void 0) { - const data6 = JSON.parse(JSON.stringify(parentCluster.clusterData)); + const data5 = JSON.parse(JSON.stringify(parentCluster.clusterData)); log.trace( "Setting data for parent cluster XXX\n Node.id = ", v3, "\n data=", - data6.height, + data5.height, "\nParent cluster", parentCluster.height ); - graph.setNode(parentCluster.id, data6); + graph.setNode(parentCluster.id, data5); if (!graph.parent(v3)) { log.trace("Setting parent", v3, parentCluster.id); - graph.setParent(v3, parentCluster.id, data6); + graph.setParent(v3, parentCluster.id, data5); } } log.info("(Insert) Node XXX" + v3 + ": " + JSON.stringify(graph.node(v3))); @@ -55296,10 +54933,10 @@ You have to call mermaid.initialize.` nodesep }); const o2 = await recursiveRender( - nodes6, + nodes5, node2.graph, diagramType, - id29, + id30, graph.node(v3), siteConfig2 ); @@ -55332,8 +54969,8 @@ You have to call mermaid.initialize.` log.trace(findNonClusterChild(node2.id, graph)); clusterDb.set(node2.id, { id: findNonClusterChild(node2.id, graph), node: node2 }); } else { - log.trace("Node - the non recursive path XAX", v3, nodes6, graph.node(v3), dir2); - await insertNode(nodes6, graph.node(v3), { config: siteConfig2, dir: dir2 }); + log.trace("Node - the non recursive path XAX", v3, nodes5, graph.node(v3), dir2); + await insertNode(nodes5, graph.node(v3), { config: siteConfig2, dir: dir2 }); } } }) @@ -55441,7 +55078,7 @@ You have to call mermaid.initialize.` edge.points.forEach((point8) => point8.y += subGraphTitleTotalMargin / 2); const startNode = graph.node(e3.v); var endNode = graph.node(e3.w); - const paths = insertEdge(edgePaths, edge, clusterDb, diagramType, startNode, endNode, id29); + const paths = insertEdge(edgePaths, edge, clusterDb, diagramType, startNode, endNode, id30); positionEdgeLabel(edge, paths); }); graph.nodes().forEach(function(v3) { @@ -55553,40888 +55190,36073 @@ You have to call mermaid.initialize.` } }); - // src/rendering-util/render.ts - var layoutAlgorithms, registerLayoutLoaders, registerDefaultLayoutLoaders, render4, getRegisteredLayoutAlgorithm; - var init_render = __esm({ - "src/rendering-util/render.ts"() { - "use strict"; - init_internals(); - init_logger(); - layoutAlgorithms = {}; - registerLayoutLoaders = /* @__PURE__ */ __name((loaders) => { - for (const loader28 of loaders) { - layoutAlgorithms[loader28.name] = loader28; - } - }, "registerLayoutLoaders"); - registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => { - registerLayoutLoaders([ - { - name: "dagre", - loader: /* @__PURE__ */ __name(async () => await Promise.resolve().then(() => (init_dagre2(), dagre_exports)), "loader") - } - ]); - }, "registerDefaultLayoutLoaders"); - registerDefaultLayoutLoaders(); - render4 = /* @__PURE__ */ __name(async (data4Layout, svg2) => { - if (!(data4Layout.layoutAlgorithm in layoutAlgorithms)) { - throw new Error(`Unknown layout algorithm: ${data4Layout.layoutAlgorithm}`); - } - const layoutDefinition = layoutAlgorithms[data4Layout.layoutAlgorithm]; - const layoutRenderer = await layoutDefinition.loader(); - return layoutRenderer.render(data4Layout, svg2, internalHelpers, { - algorithm: layoutDefinition.algorithm - }); - }, "render"); - getRegisteredLayoutAlgorithm = /* @__PURE__ */ __name((algorithm = "", { fallback = "dagre" } = {}) => { - if (algorithm in layoutAlgorithms) { - return algorithm; - } - if (fallback in layoutAlgorithms) { - log.warn(`Layout algorithm ${algorithm} is not registered. Using ${fallback} as fallback.`); - return fallback; - } - throw new Error(`Both layout algorithms ${algorithm} and ${fallback} are not registered.`); - }, "getRegisteredLayoutAlgorithm"); + // ../../node_modules/.pnpm/cytoscape@3.33.1/node_modules/cytoscape/dist/cytoscape.esm.mjs + function _arrayLikeToArray(r2, a2) { + (null == a2 || a2 > r2.length) && (a2 = r2.length); + for (var e3 = 0, n2 = Array(a2); e3 < a2; e3++) n2[e3] = r2[e3]; + return n2; + } + function _arrayWithHoles(r2) { + if (Array.isArray(r2)) return r2; + } + function _arrayWithoutHoles(r2) { + if (Array.isArray(r2)) return _arrayLikeToArray(r2); + } + function _classCallCheck(a2, n2) { + if (!(a2 instanceof n2)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e3, r2) { + for (var t4 = 0; t4 < r2.length; t4++) { + var o2 = r2[t4]; + o2.enumerable = o2.enumerable || false, o2.configurable = true, "value" in o2 && (o2.writable = true), Object.defineProperty(e3, _toPropertyKey(o2.key), o2); } - }); - - // src/rendering-util/setupViewPortForSVG.ts - var setupViewPortForSVG, calculateDimensionsWithPadding, createViewBox; - var init_setupViewPortForSVG = __esm({ - "src/rendering-util/setupViewPortForSVG.ts"() { - "use strict"; - init_setupGraphViewbox(); - init_logger(); - setupViewPortForSVG = /* @__PURE__ */ __name((svg2, padding2, cssDiagram, useMaxWidth) => { - svg2.attr("class", cssDiagram); - const { width: width3, height: height2, x: x5, y: y5 } = calculateDimensionsWithPadding(svg2, padding2); - configureSvgSize(svg2, height2, width3, useMaxWidth); - const viewBox = createViewBox(x5, y5, width3, height2, padding2); - svg2.attr("viewBox", viewBox); - log.debug(`viewBox configured: ${viewBox} with padding: ${padding2}`); - }, "setupViewPortForSVG"); - calculateDimensionsWithPadding = /* @__PURE__ */ __name((svg2, padding2) => { - const bounds4 = svg2.node()?.getBBox() || { width: 0, height: 0, x: 0, y: 0 }; + } + function _createClass(e3, r2, t4) { + return r2 && _defineProperties(e3.prototype, r2), Object.defineProperty(e3, "prototype", { + writable: false + }), e3; + } + function _createForOfIteratorHelper(r2, e3) { + var t4 = "undefined" != typeof Symbol && r2[Symbol.iterator] || r2["@@iterator"]; + if (!t4) { + if (Array.isArray(r2) || (t4 = _unsupportedIterableToArray(r2)) || e3) { + t4 && (r2 = t4); + var n2 = 0, F3 = /* @__PURE__ */ __name(function() { + }, "F"); return { - width: bounds4.width + padding2 * 2, - height: bounds4.height + padding2 * 2, - x: bounds4.x, - y: bounds4.y + s: F3, + n: /* @__PURE__ */ __name(function() { + return n2 >= r2.length ? { + done: true + } : { + done: false, + value: r2[n2++] + }; + }, "n"), + e: /* @__PURE__ */ __name(function(r3) { + throw r3; + }, "e"), + f: F3 }; - }, "calculateDimensionsWithPadding"); - createViewBox = /* @__PURE__ */ __name((x5, y5, width3, height2, padding2) => { - return `${x5 - padding2} ${y5 - padding2} ${width3} ${height2}`; - }, "createViewBox"); + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - }); - - // src/diagrams/flowchart/flowRenderer-v3-unified.ts - var getClasses, draw2, flowRenderer_v3_unified_default; - var init_flowRenderer_v3_unified = __esm({ - "src/diagrams/flowchart/flowRenderer-v3-unified.ts"() { - "use strict"; - init_src32(); - init_diagramAPI(); - init_logger(); - init_insertElementsForSize(); - init_render(); - init_setupViewPortForSVG(); - init_utils2(); - getClasses = /* @__PURE__ */ __name(function(text4, diagramObj) { - return diagramObj.db.getClasses(); - }, "getClasses"); - draw2 = /* @__PURE__ */ __name(async function(text4, id29, _version, diag) { - log.info("REF0:"); - log.info("Drawing state diagram (v2)", id29); - const { securityLevel, flowchart: conf5, layout: layout6 } = getConfig2(); - let sandboxElement; - if (securityLevel === "sandbox") { - sandboxElement = select_default2("#i" + id29); + var o2, a2 = true, u2 = false; + return { + s: /* @__PURE__ */ __name(function() { + t4 = t4.call(r2); + }, "s"), + n: /* @__PURE__ */ __name(function() { + var r3 = t4.next(); + return a2 = r3.done, r3; + }, "n"), + e: /* @__PURE__ */ __name(function(r3) { + u2 = true, o2 = r3; + }, "e"), + f: /* @__PURE__ */ __name(function() { + try { + a2 || null == t4.return || t4.return(); + } finally { + if (u2) throw o2; } - const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document; - log.debug("Before getData: "); - const data4Layout = diag.db.getData(); - log.debug("Data: ", data4Layout); - const svg2 = getDiagramElement(id29, securityLevel); - const direction = diag.db.getDirection(); - data4Layout.type = diag.type; - data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout6); - if (data4Layout.layoutAlgorithm === "dagre" && layout6 === "elk") { - log.warn( - "flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback." - ); + }, "f") + }; + } + function _defineProperty$1(e3, r2, t4) { + return (r2 = _toPropertyKey(r2)) in e3 ? Object.defineProperty(e3, r2, { + value: t4, + enumerable: true, + configurable: true, + writable: true + }) : e3[r2] = t4, e3; + } + function _iterableToArray(r2) { + if ("undefined" != typeof Symbol && null != r2[Symbol.iterator] || null != r2["@@iterator"]) return Array.from(r2); + } + function _iterableToArrayLimit(r2, l4) { + var t4 = null == r2 ? null : "undefined" != typeof Symbol && r2[Symbol.iterator] || r2["@@iterator"]; + if (null != t4) { + var e3, n2, i2, u2, a2 = [], f2 = true, o2 = false; + try { + if (i2 = (t4 = t4.call(r2)).next, 0 === l4) { + if (Object(t4) !== t4) return; + f2 = false; + } else for (; !(f2 = (e3 = i2.call(t4)).done) && (a2.push(e3.value), a2.length !== l4); f2 = true) ; + } catch (r3) { + o2 = true, n2 = r3; + } finally { + try { + if (!f2 && null != t4.return && (u2 = t4.return(), Object(u2) !== u2)) return; + } finally { + if (o2) throw n2; } - data4Layout.direction = direction; - data4Layout.nodeSpacing = conf5?.nodeSpacing || 50; - data4Layout.rankSpacing = conf5?.rankSpacing || 50; - data4Layout.markers = ["point", "circle", "cross"]; - data4Layout.diagramId = id29; - log.debug("REF1:", data4Layout); - await render4(data4Layout, svg2); - const padding2 = data4Layout.config.flowchart?.diagramPadding ?? 8; - utils_default2.insertTitle( - svg2, - "flowchartTitleText", - conf5?.titleTopMargin || 0, - diag.db.getDiagramTitle() - ); - setupViewPortForSVG(svg2, padding2, "flowchart", conf5?.useMaxWidth || false); - for (const vertex of data4Layout.nodes) { - const node2 = select_default2(`#${id29} [id="${vertex.id}"]`); - if (!node2 || !vertex.link) { - continue; - } - const link3 = doc.createElementNS("http://www.w3.org/2000/svg", "a"); - link3.setAttributeNS("http://www.w3.org/2000/svg", "class", vertex.cssClasses); - link3.setAttributeNS("http://www.w3.org/2000/svg", "rel", "noopener"); - if (securityLevel === "sandbox") { - link3.setAttributeNS("http://www.w3.org/2000/svg", "target", "_top"); - } else if (vertex.linkTarget) { - link3.setAttributeNS("http://www.w3.org/2000/svg", "target", vertex.linkTarget); - } - const linkNode = node2.insert(function() { - return link3; - }, ":first-child"); - const shape = node2.select(".label-container"); - if (shape) { - linkNode.append(function() { - return shape.node(); - }); + } + return a2; + } + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _slicedToArray(r2, e3) { + return _arrayWithHoles(r2) || _iterableToArrayLimit(r2, e3) || _unsupportedIterableToArray(r2, e3) || _nonIterableRest(); + } + function _toConsumableArray(r2) { + return _arrayWithoutHoles(r2) || _iterableToArray(r2) || _unsupportedIterableToArray(r2) || _nonIterableSpread(); + } + function _toPrimitive(t4, r2) { + if ("object" != typeof t4 || !t4) return t4; + var e3 = t4[Symbol.toPrimitive]; + if (void 0 !== e3) { + var i2 = e3.call(t4, r2); + if ("object" != typeof i2) return i2; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return String(t4); + } + function _toPropertyKey(t4) { + var i2 = _toPrimitive(t4, "string"); + return "symbol" == typeof i2 ? i2 : i2 + ""; + } + function _typeof(o2) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o3) { + return typeof o3; + } : function(o3) { + return o3 && "function" == typeof Symbol && o3.constructor === Symbol && o3 !== Symbol.prototype ? "symbol" : typeof o3; + }, _typeof(o2); + } + function _unsupportedIterableToArray(r2, a2) { + if (r2) { + if ("string" == typeof r2) return _arrayLikeToArray(r2, a2); + var t4 = {}.toString.call(r2).slice(8, -1); + return "Object" === t4 && r2.constructor && (t4 = r2.constructor.name), "Map" === t4 || "Set" === t4 ? Array.from(r2) : "Arguments" === t4 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t4) ? _arrayLikeToArray(r2, a2) : void 0; + } + } + function getDefaultExportFromCjs(x5) { + return x5 && x5.__esModule && Object.prototype.hasOwnProperty.call(x5, "default") ? x5["default"] : x5; + } + function requireIsObject() { + if (hasRequiredIsObject) return isObject_12; + hasRequiredIsObject = 1; + function isObject3(value2) { + var type3 = typeof value2; + return value2 != null && (type3 == "object" || type3 == "function"); + } + __name(isObject3, "isObject"); + isObject_12 = isObject3; + return isObject_12; + } + function require_freeGlobal() { + if (hasRequired_freeGlobal) return _freeGlobal; + hasRequired_freeGlobal = 1; + var freeGlobal2 = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; + _freeGlobal = freeGlobal2; + return _freeGlobal; + } + function require_root() { + if (hasRequired_root) return _root; + hasRequired_root = 1; + var freeGlobal2 = require_freeGlobal(); + var freeSelf2 = typeof self == "object" && self && self.Object === Object && self; + var root3 = freeGlobal2 || freeSelf2 || Function("return this")(); + _root = root3; + return _root; + } + function requireNow() { + if (hasRequiredNow) return now_1; + hasRequiredNow = 1; + var root3 = require_root(); + var now3 = /* @__PURE__ */ __name(function() { + return root3.Date.now(); + }, "now"); + now_1 = now3; + return now_1; + } + function require_trimmedEndIndex() { + if (hasRequired_trimmedEndIndex) return _trimmedEndIndex; + hasRequired_trimmedEndIndex = 1; + var reWhitespace2 = /\s/; + function trimmedEndIndex2(string3) { + var index = string3.length; + while (index-- && reWhitespace2.test(string3.charAt(index))) { + } + return index; + } + __name(trimmedEndIndex2, "trimmedEndIndex"); + _trimmedEndIndex = trimmedEndIndex2; + return _trimmedEndIndex; + } + function require_baseTrim() { + if (hasRequired_baseTrim) return _baseTrim; + hasRequired_baseTrim = 1; + var trimmedEndIndex2 = require_trimmedEndIndex(); + var reTrimStart2 = /^\s+/; + function baseTrim2(string3) { + return string3 ? string3.slice(0, trimmedEndIndex2(string3) + 1).replace(reTrimStart2, "") : string3; + } + __name(baseTrim2, "baseTrim"); + _baseTrim = baseTrim2; + return _baseTrim; + } + function require_Symbol() { + if (hasRequired_Symbol) return _Symbol; + hasRequired_Symbol = 1; + var root3 = require_root(); + var Symbol3 = root3.Symbol; + _Symbol = Symbol3; + return _Symbol; + } + function require_getRawTag() { + if (hasRequired_getRawTag) return _getRawTag; + hasRequired_getRawTag = 1; + var Symbol3 = require_Symbol(); + var objectProto22 = Object.prototype; + var hasOwnProperty19 = objectProto22.hasOwnProperty; + var nativeObjectToString3 = objectProto22.toString; + var symToStringTag3 = Symbol3 ? Symbol3.toStringTag : void 0; + function getRawTag2(value2) { + var isOwn = hasOwnProperty19.call(value2, symToStringTag3), tag = value2[symToStringTag3]; + try { + value2[symToStringTag3] = void 0; + var unmasked = true; + } catch (e3) { + } + var result = nativeObjectToString3.call(value2); + if (unmasked) { + if (isOwn) { + value2[symToStringTag3] = tag; + } else { + delete value2[symToStringTag3]; + } + } + return result; + } + __name(getRawTag2, "getRawTag"); + _getRawTag = getRawTag2; + return _getRawTag; + } + function require_objectToString() { + if (hasRequired_objectToString) return _objectToString; + hasRequired_objectToString = 1; + var objectProto22 = Object.prototype; + var nativeObjectToString3 = objectProto22.toString; + function objectToString2(value2) { + return nativeObjectToString3.call(value2); + } + __name(objectToString2, "objectToString"); + _objectToString = objectToString2; + return _objectToString; + } + function require_baseGetTag() { + if (hasRequired_baseGetTag) return _baseGetTag; + hasRequired_baseGetTag = 1; + var Symbol3 = require_Symbol(), getRawTag2 = require_getRawTag(), objectToString2 = require_objectToString(); + var nullTag2 = "[object Null]", undefinedTag2 = "[object Undefined]"; + var symToStringTag3 = Symbol3 ? Symbol3.toStringTag : void 0; + function baseGetTag2(value2) { + if (value2 == null) { + return value2 === void 0 ? undefinedTag2 : nullTag2; + } + return symToStringTag3 && symToStringTag3 in Object(value2) ? getRawTag2(value2) : objectToString2(value2); + } + __name(baseGetTag2, "baseGetTag"); + _baseGetTag = baseGetTag2; + return _baseGetTag; + } + function requireIsObjectLike() { + if (hasRequiredIsObjectLike) return isObjectLike_1; + hasRequiredIsObjectLike = 1; + function isObjectLike2(value2) { + return value2 != null && typeof value2 == "object"; + } + __name(isObjectLike2, "isObjectLike"); + isObjectLike_1 = isObjectLike2; + return isObjectLike_1; + } + function requireIsSymbol() { + if (hasRequiredIsSymbol) return isSymbol_1; + hasRequiredIsSymbol = 1; + var baseGetTag2 = require_baseGetTag(), isObjectLike2 = requireIsObjectLike(); + var symbolTag5 = "[object Symbol]"; + function isSymbol2(value2) { + return typeof value2 == "symbol" || isObjectLike2(value2) && baseGetTag2(value2) == symbolTag5; + } + __name(isSymbol2, "isSymbol"); + isSymbol_1 = isSymbol2; + return isSymbol_1; + } + function requireToNumber() { + if (hasRequiredToNumber) return toNumber_1; + hasRequiredToNumber = 1; + var baseTrim2 = require_baseTrim(), isObject3 = requireIsObject(), isSymbol2 = requireIsSymbol(); + var NAN2 = 0 / 0; + var reIsBadHex2 = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary2 = /^0b[01]+$/i; + var reIsOctal2 = /^0o[0-7]+$/i; + var freeParseInt2 = parseInt; + function toNumber2(value2) { + if (typeof value2 == "number") { + return value2; + } + if (isSymbol2(value2)) { + return NAN2; + } + if (isObject3(value2)) { + var other = typeof value2.valueOf == "function" ? value2.valueOf() : value2; + value2 = isObject3(other) ? other + "" : other; + } + if (typeof value2 != "string") { + return value2 === 0 ? value2 : +value2; + } + value2 = baseTrim2(value2); + var isBinary2 = reIsBinary2.test(value2); + return isBinary2 || reIsOctal2.test(value2) ? freeParseInt2(value2.slice(2), isBinary2 ? 2 : 8) : reIsBadHex2.test(value2) ? NAN2 : +value2; + } + __name(toNumber2, "toNumber"); + toNumber_1 = toNumber2; + return toNumber_1; + } + function requireDebounce() { + if (hasRequiredDebounce) return debounce_1; + hasRequiredDebounce = 1; + var isObject3 = requireIsObject(), now3 = requireNow(), toNumber2 = requireToNumber(); + var FUNC_ERROR_TEXT3 = "Expected a function"; + var nativeMax6 = Math.max, nativeMin = Math.min; + function debounce2(func, wait, options2) { + var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; + if (typeof func != "function") { + throw new TypeError(FUNC_ERROR_TEXT3); + } + wait = toNumber2(wait) || 0; + if (isObject3(options2)) { + leading = !!options2.leading; + maxing = "maxWait" in options2; + maxWait = maxing ? nativeMax6(toNumber2(options2.maxWait) || 0, wait) : maxWait; + trailing = "trailing" in options2 ? !!options2.trailing : trailing; + } + function invokeFunc(time4) { + var args = lastArgs, thisArg = lastThis; + lastArgs = lastThis = void 0; + lastInvokeTime = time4; + result = func.apply(thisArg, args); + return result; + } + __name(invokeFunc, "invokeFunc"); + function leadingEdge(time4) { + lastInvokeTime = time4; + timerId = setTimeout(timerExpired, wait); + return leading ? invokeFunc(time4) : result; + } + __name(leadingEdge, "leadingEdge"); + function remainingWait(time4) { + var timeSinceLastCall = time4 - lastCallTime, timeSinceLastInvoke = time4 - lastInvokeTime, timeWaiting = wait - timeSinceLastCall; + return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; + } + __name(remainingWait, "remainingWait"); + function shouldInvoke(time4) { + var timeSinceLastCall = time4 - lastCallTime, timeSinceLastInvoke = time4 - lastInvokeTime; + return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; + } + __name(shouldInvoke, "shouldInvoke"); + function timerExpired() { + var time4 = now3(); + if (shouldInvoke(time4)) { + return trailingEdge(time4); + } + timerId = setTimeout(timerExpired, remainingWait(time4)); + } + __name(timerExpired, "timerExpired"); + function trailingEdge(time4) { + timerId = void 0; + if (trailing && lastArgs) { + return invokeFunc(time4); + } + lastArgs = lastThis = void 0; + return result; + } + __name(trailingEdge, "trailingEdge"); + function cancel() { + if (timerId !== void 0) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = void 0; + } + __name(cancel, "cancel"); + function flush() { + return timerId === void 0 ? result : trailingEdge(now3()); + } + __name(flush, "flush"); + function debounced() { + var time4 = now3(), isInvoking = shouldInvoke(time4); + lastArgs = arguments; + lastThis = this; + lastCallTime = time4; + if (isInvoking) { + if (timerId === void 0) { + return leadingEdge(lastCallTime); } - const label = node2.select(".label"); - if (label) { - linkNode.append(function() { - return label.node(); - }); + if (maxing) { + clearTimeout(timerId); + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); } } - }, "draw"); - flowRenderer_v3_unified_default = { - getClasses, - draw: draw2 - }; + if (timerId === void 0) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + __name(debounced, "debounced"); + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; } - }); - - // src/diagrams/flowchart/parser/flow.jison - var parser3, flow_default; - var init_flow = __esm({ - "src/diagrams/flowchart/parser/flow.jison"() { - "use strict"; - parser3 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; - return o3; - }, "o"), $V0 = [1, 4], $V1 = [1, 3], $V2 = [1, 5], $V3 = [1, 8, 9, 10, 11, 27, 34, 36, 38, 44, 60, 84, 85, 86, 87, 88, 89, 102, 105, 106, 109, 111, 114, 115, 116, 121, 122, 123, 124], $V4 = [2, 2], $V5 = [1, 13], $V6 = [1, 14], $V7 = [1, 15], $V8 = [1, 16], $V9 = [1, 23], $Va = [1, 25], $Vb = [1, 26], $Vc = [1, 27], $Vd = [1, 49], $Ve = [1, 48], $Vf = [1, 29], $Vg = [1, 30], $Vh = [1, 31], $Vi = [1, 32], $Vj = [1, 33], $Vk = [1, 44], $Vl = [1, 46], $Vm = [1, 42], $Vn = [1, 47], $Vo = [1, 43], $Vp = [1, 50], $Vq = [1, 45], $Vr = [1, 51], $Vs = [1, 52], $Vt = [1, 34], $Vu = [1, 35], $Vv = [1, 36], $Vw = [1, 37], $Vx = [1, 57], $Vy = [1, 8, 9, 10, 11, 27, 32, 34, 36, 38, 44, 60, 84, 85, 86, 87, 88, 89, 102, 105, 106, 109, 111, 114, 115, 116, 121, 122, 123, 124], $Vz = [1, 61], $VA = [1, 60], $VB = [1, 62], $VC = [8, 9, 11, 75, 77, 78], $VD = [1, 78], $VE = [1, 91], $VF = [1, 96], $VG = [1, 95], $VH = [1, 92], $VI = [1, 88], $VJ = [1, 94], $VK = [1, 90], $VL = [1, 97], $VM = [1, 93], $VN = [1, 98], $VO = [1, 89], $VP = [8, 9, 10, 11, 40, 75, 77, 78], $VQ = [8, 9, 10, 11, 40, 46, 75, 77, 78], $VR = [8, 9, 10, 11, 29, 40, 44, 46, 48, 50, 52, 54, 56, 58, 60, 63, 65, 67, 68, 70, 75, 77, 78, 89, 102, 105, 106, 109, 111, 114, 115, 116], $VS = [8, 9, 11, 44, 60, 75, 77, 78, 89, 102, 105, 106, 109, 111, 114, 115, 116], $VT = [44, 60, 89, 102, 105, 106, 109, 111, 114, 115, 116], $VU = [1, 121], $VV = [1, 122], $VW = [1, 124], $VX = [1, 123], $VY = [44, 60, 62, 74, 89, 102, 105, 106, 109, 111, 114, 115, 116], $VZ = [1, 133], $V_ = [1, 147], $V$ = [1, 148], $V01 = [1, 149], $V11 = [1, 150], $V21 = [1, 135], $V31 = [1, 137], $V41 = [1, 141], $V51 = [1, 142], $V61 = [1, 143], $V71 = [1, 144], $V81 = [1, 145], $V91 = [1, 146], $Va1 = [1, 151], $Vb1 = [1, 152], $Vc1 = [1, 131], $Vd1 = [1, 132], $Ve1 = [1, 139], $Vf1 = [1, 134], $Vg1 = [1, 138], $Vh1 = [1, 136], $Vi1 = [8, 9, 10, 11, 27, 32, 34, 36, 38, 44, 60, 84, 85, 86, 87, 88, 89, 102, 105, 106, 109, 111, 114, 115, 116, 121, 122, 123, 124], $Vj1 = [1, 154], $Vk1 = [1, 156], $Vl1 = [8, 9, 11], $Vm1 = [8, 9, 10, 11, 14, 44, 60, 89, 105, 106, 109, 111, 114, 115, 116], $Vn1 = [1, 176], $Vo1 = [1, 172], $Vp1 = [1, 173], $Vq1 = [1, 177], $Vr1 = [1, 174], $Vs1 = [1, 175], $Vt1 = [77, 116, 119], $Vu1 = [8, 9, 10, 11, 12, 14, 27, 29, 32, 44, 60, 75, 84, 85, 86, 87, 88, 89, 90, 105, 109, 111, 114, 115, 116], $Vv1 = [10, 106], $Vw1 = [31, 49, 51, 53, 55, 57, 62, 64, 66, 67, 69, 71, 116, 117, 118], $Vx1 = [1, 247], $Vy1 = [1, 245], $Vz1 = [1, 249], $VA1 = [1, 243], $VB1 = [1, 244], $VC1 = [1, 246], $VD1 = [1, 248], $VE1 = [1, 250], $VF1 = [1, 268], $VG1 = [8, 9, 11, 106], $VH1 = [8, 9, 10, 11, 60, 84, 105, 106, 109, 110, 111, 112]; - var parser24 = { - trace: /* @__PURE__ */ __name(function trace() { - }, "trace"), - yy: {}, - symbols_: { "error": 2, "start": 3, "graphConfig": 4, "document": 5, "line": 6, "statement": 7, "SEMI": 8, "NEWLINE": 9, "SPACE": 10, "EOF": 11, "GRAPH": 12, "NODIR": 13, "DIR": 14, "FirstStmtSeparator": 15, "ending": 16, "endToken": 17, "spaceList": 18, "spaceListNewline": 19, "vertexStatement": 20, "separator": 21, "styleStatement": 22, "linkStyleStatement": 23, "classDefStatement": 24, "classStatement": 25, "clickStatement": 26, "subgraph": 27, "textNoTags": 28, "SQS": 29, "text": 30, "SQE": 31, "end": 32, "direction": 33, "acc_title": 34, "acc_title_value": 35, "acc_descr": 36, "acc_descr_value": 37, "acc_descr_multiline_value": 38, "shapeData": 39, "SHAPE_DATA": 40, "link": 41, "node": 42, "styledVertex": 43, "AMP": 44, "vertex": 45, "STYLE_SEPARATOR": 46, "idString": 47, "DOUBLECIRCLESTART": 48, "DOUBLECIRCLEEND": 49, "PS": 50, "PE": 51, "(-": 52, "-)": 53, "STADIUMSTART": 54, "STADIUMEND": 55, "SUBROUTINESTART": 56, "SUBROUTINEEND": 57, "VERTEX_WITH_PROPS_START": 58, "NODE_STRING[field]": 59, "COLON": 60, "NODE_STRING[value]": 61, "PIPE": 62, "CYLINDERSTART": 63, "CYLINDEREND": 64, "DIAMOND_START": 65, "DIAMOND_STOP": 66, "TAGEND": 67, "TRAPSTART": 68, "TRAPEND": 69, "INVTRAPSTART": 70, "INVTRAPEND": 71, "linkStatement": 72, "arrowText": 73, "TESTSTR": 74, "START_LINK": 75, "edgeText": 76, "LINK": 77, "LINK_ID": 78, "edgeTextToken": 79, "STR": 80, "MD_STR": 81, "textToken": 82, "keywords": 83, "STYLE": 84, "LINKSTYLE": 85, "CLASSDEF": 86, "CLASS": 87, "CLICK": 88, "DOWN": 89, "UP": 90, "textNoTagsToken": 91, "stylesOpt": 92, "idString[vertex]": 93, "idString[class]": 94, "CALLBACKNAME": 95, "CALLBACKARGS": 96, "HREF": 97, "LINK_TARGET": 98, "STR[link]": 99, "STR[tooltip]": 100, "alphaNum": 101, "DEFAULT": 102, "numList": 103, "INTERPOLATE": 104, "NUM": 105, "COMMA": 106, "style": 107, "styleComponent": 108, "NODE_STRING": 109, "UNIT": 110, "BRKT": 111, "PCT": 112, "idStringToken": 113, "MINUS": 114, "MULT": 115, "UNICODE_TEXT": 116, "TEXT": 117, "TAGSTART": 118, "EDGE_TEXT": 119, "alphaNumToken": 120, "direction_tb": 121, "direction_bt": 122, "direction_rl": 123, "direction_lr": 124, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 8: "SEMI", 9: "NEWLINE", 10: "SPACE", 11: "EOF", 12: "GRAPH", 13: "NODIR", 14: "DIR", 27: "subgraph", 29: "SQS", 31: "SQE", 32: "end", 34: "acc_title", 35: "acc_title_value", 36: "acc_descr", 37: "acc_descr_value", 38: "acc_descr_multiline_value", 40: "SHAPE_DATA", 44: "AMP", 46: "STYLE_SEPARATOR", 48: "DOUBLECIRCLESTART", 49: "DOUBLECIRCLEEND", 50: "PS", 51: "PE", 52: "(-", 53: "-)", 54: "STADIUMSTART", 55: "STADIUMEND", 56: "SUBROUTINESTART", 57: "SUBROUTINEEND", 58: "VERTEX_WITH_PROPS_START", 59: "NODE_STRING[field]", 60: "COLON", 61: "NODE_STRING[value]", 62: "PIPE", 63: "CYLINDERSTART", 64: "CYLINDEREND", 65: "DIAMOND_START", 66: "DIAMOND_STOP", 67: "TAGEND", 68: "TRAPSTART", 69: "TRAPEND", 70: "INVTRAPSTART", 71: "INVTRAPEND", 74: "TESTSTR", 75: "START_LINK", 77: "LINK", 78: "LINK_ID", 80: "STR", 81: "MD_STR", 84: "STYLE", 85: "LINKSTYLE", 86: "CLASSDEF", 87: "CLASS", 88: "CLICK", 89: "DOWN", 90: "UP", 93: "idString[vertex]", 94: "idString[class]", 95: "CALLBACKNAME", 96: "CALLBACKARGS", 97: "HREF", 98: "LINK_TARGET", 99: "STR[link]", 100: "STR[tooltip]", 102: "DEFAULT", 104: "INTERPOLATE", 105: "NUM", 106: "COMMA", 109: "NODE_STRING", 110: "UNIT", 111: "BRKT", 112: "PCT", 114: "MINUS", 115: "MULT", 116: "UNICODE_TEXT", 117: "TEXT", 118: "TAGSTART", 119: "EDGE_TEXT", 121: "direction_tb", 122: "direction_bt", 123: "direction_rl", 124: "direction_lr" }, - productions_: [0, [3, 2], [5, 0], [5, 2], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [4, 2], [4, 2], [4, 2], [4, 3], [16, 2], [16, 1], [17, 1], [17, 1], [17, 1], [15, 1], [15, 1], [15, 2], [19, 2], [19, 2], [19, 1], [19, 1], [18, 2], [18, 1], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 9], [7, 6], [7, 4], [7, 1], [7, 2], [7, 2], [7, 1], [21, 1], [21, 1], [21, 1], [39, 2], [39, 1], [20, 4], [20, 3], [20, 4], [20, 2], [20, 2], [20, 1], [42, 1], [42, 6], [42, 5], [43, 1], [43, 3], [45, 4], [45, 4], [45, 6], [45, 4], [45, 4], [45, 4], [45, 8], [45, 4], [45, 4], [45, 4], [45, 6], [45, 4], [45, 4], [45, 4], [45, 4], [45, 4], [45, 1], [41, 2], [41, 3], [41, 3], [41, 1], [41, 3], [41, 4], [76, 1], [76, 2], [76, 1], [76, 1], [72, 1], [72, 2], [73, 3], [30, 1], [30, 2], [30, 1], [30, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [28, 1], [28, 2], [28, 1], [28, 1], [24, 5], [25, 5], [26, 2], [26, 4], [26, 3], [26, 5], [26, 3], [26, 5], [26, 5], [26, 7], [26, 2], [26, 4], [26, 2], [26, 4], [26, 4], [26, 6], [22, 5], [23, 5], [23, 5], [23, 9], [23, 9], [23, 7], [23, 7], [103, 1], [103, 3], [92, 1], [92, 3], [107, 1], [107, 2], [108, 1], [108, 1], [108, 1], [108, 1], [108, 1], [108, 1], [108, 1], [108, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [82, 1], [82, 1], [82, 1], [82, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [79, 1], [79, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [47, 1], [47, 2], [101, 1], [101, 2], [33, 1], [33, 1], [33, 1], [33, 1]], - performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 2: - this.$ = []; - break; - case 3: - if (!Array.isArray($$[$0]) || $$[$0].length > 0) { - $$[$0 - 1].push($$[$0]); - } - this.$ = $$[$0 - 1]; - break; - case 4: - case 183: - this.$ = $$[$0]; - break; - case 11: - yy.setDirection("TB"); - this.$ = "TB"; - break; - case 12: - yy.setDirection($$[$0 - 1]); - this.$ = $$[$0 - 1]; - break; - case 27: - this.$ = $$[$0 - 1].nodes; - break; - case 28: - case 29: - case 30: - case 31: - case 32: - this.$ = []; - break; - case 33: - this.$ = yy.addSubGraph($$[$0 - 6], $$[$0 - 1], $$[$0 - 4]); - break; - case 34: - this.$ = yy.addSubGraph($$[$0 - 3], $$[$0 - 1], $$[$0 - 3]); - break; - case 35: - this.$ = yy.addSubGraph(void 0, $$[$0 - 1], void 0); - break; - case 37: - this.$ = $$[$0].trim(); - yy.setAccTitle(this.$); - break; - case 38: - case 39: - this.$ = $$[$0].trim(); - yy.setAccDescription(this.$); - break; - case 43: - this.$ = $$[$0 - 1] + $$[$0]; - break; - case 44: - this.$ = $$[$0]; - break; - case 45: - yy.addVertex($$[$0 - 1][$$[$0 - 1].length - 1], void 0, void 0, void 0, void 0, void 0, void 0, $$[$0]); - yy.addLink($$[$0 - 3].stmt, $$[$0 - 1], $$[$0 - 2]); - this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1].concat($$[$0 - 3].nodes) }; - break; - case 46: - yy.addLink($$[$0 - 2].stmt, $$[$0], $$[$0 - 1]); - this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0 - 2].nodes) }; - break; - case 47: - yy.addLink($$[$0 - 3].stmt, $$[$0 - 1], $$[$0 - 2]); - this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1].concat($$[$0 - 3].nodes) }; - break; - case 48: - this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1] }; - break; - case 49: - yy.addVertex($$[$0 - 1][$$[$0 - 1].length - 1], void 0, void 0, void 0, void 0, void 0, void 0, $$[$0]); - this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1], shapeData: $$[$0] }; - break; - case 50: - this.$ = { stmt: $$[$0], nodes: $$[$0] }; - break; - case 51: - this.$ = [$$[$0]]; - break; - case 52: - yy.addVertex($$[$0 - 5][$$[$0 - 5].length - 1], void 0, void 0, void 0, void 0, void 0, void 0, $$[$0 - 4]); - this.$ = $$[$0 - 5].concat($$[$0]); - break; - case 53: - this.$ = $$[$0 - 4].concat($$[$0]); - break; - case 54: - this.$ = $$[$0]; - break; - case 55: - this.$ = $$[$0 - 2]; - yy.setClass($$[$0 - 2], $$[$0]); - break; - case 56: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "square"); - break; - case 57: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "doublecircle"); - break; - case 58: - this.$ = $$[$0 - 5]; - yy.addVertex($$[$0 - 5], $$[$0 - 2], "circle"); - break; - case 59: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "ellipse"); - break; - case 60: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "stadium"); - break; - case 61: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "subroutine"); - break; - case 62: - this.$ = $$[$0 - 7]; - yy.addVertex($$[$0 - 7], $$[$0 - 1], "rect", void 0, void 0, void 0, Object.fromEntries([[$$[$0 - 5], $$[$0 - 3]]])); - break; - case 63: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "cylinder"); - break; - case 64: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "round"); - break; - case 65: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "diamond"); - break; - case 66: - this.$ = $$[$0 - 5]; - yy.addVertex($$[$0 - 5], $$[$0 - 2], "hexagon"); - break; - case 67: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "odd"); - break; - case 68: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "trapezoid"); - break; - case 69: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "inv_trapezoid"); - break; - case 70: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "lean_right"); - break; - case 71: - this.$ = $$[$0 - 3]; - yy.addVertex($$[$0 - 3], $$[$0 - 1], "lean_left"); - break; - case 72: - this.$ = $$[$0]; - yy.addVertex($$[$0]); - break; - case 73: - $$[$0 - 1].text = $$[$0]; - this.$ = $$[$0 - 1]; - break; - case 74: - case 75: - $$[$0 - 2].text = $$[$0 - 1]; - this.$ = $$[$0 - 2]; - break; - case 76: - this.$ = $$[$0]; - break; - case 77: - var inf = yy.destructLink($$[$0], $$[$0 - 2]); - this.$ = { "type": inf.type, "stroke": inf.stroke, "length": inf.length, "text": $$[$0 - 1] }; - break; - case 78: - var inf = yy.destructLink($$[$0], $$[$0 - 2]); - this.$ = { "type": inf.type, "stroke": inf.stroke, "length": inf.length, "text": $$[$0 - 1], "id": $$[$0 - 3] }; - break; - case 79: - this.$ = { text: $$[$0], type: "text" }; - break; - case 80: - this.$ = { text: $$[$0 - 1].text + "" + $$[$0], type: $$[$0 - 1].type }; - break; - case 81: - this.$ = { text: $$[$0], type: "string" }; - break; - case 82: - this.$ = { text: $$[$0], type: "markdown" }; - break; - case 83: - var inf = yy.destructLink($$[$0]); - this.$ = { "type": inf.type, "stroke": inf.stroke, "length": inf.length }; - break; - case 84: - var inf = yy.destructLink($$[$0]); - this.$ = { "type": inf.type, "stroke": inf.stroke, "length": inf.length, "id": $$[$0 - 1] }; - break; - case 85: - this.$ = $$[$0 - 1]; - break; - case 86: - this.$ = { text: $$[$0], type: "text" }; - break; - case 87: - this.$ = { text: $$[$0 - 1].text + "" + $$[$0], type: $$[$0 - 1].type }; - break; - case 88: - this.$ = { text: $$[$0], type: "string" }; - break; - case 89: - case 104: - this.$ = { text: $$[$0], type: "markdown" }; - break; - case 101: - this.$ = { text: $$[$0], type: "text" }; - break; - case 102: - this.$ = { text: $$[$0 - 1].text + "" + $$[$0], type: $$[$0 - 1].type }; - break; - case 103: - this.$ = { text: $$[$0], type: "text" }; - break; - case 105: - this.$ = $$[$0 - 4]; - yy.addClass($$[$0 - 2], $$[$0]); - break; - case 106: - this.$ = $$[$0 - 4]; - yy.setClass($$[$0 - 2], $$[$0]); - break; - case 107: - case 115: - this.$ = $$[$0 - 1]; - yy.setClickEvent($$[$0 - 1], $$[$0]); - break; - case 108: - case 116: - this.$ = $$[$0 - 3]; - yy.setClickEvent($$[$0 - 3], $$[$0 - 2]); - yy.setTooltip($$[$0 - 3], $$[$0]); - break; - case 109: - this.$ = $$[$0 - 2]; - yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]); - break; - case 110: - this.$ = $$[$0 - 4]; - yy.setClickEvent($$[$0 - 4], $$[$0 - 3], $$[$0 - 2]); - yy.setTooltip($$[$0 - 4], $$[$0]); - break; - case 111: - this.$ = $$[$0 - 2]; - yy.setLink($$[$0 - 2], $$[$0]); - break; - case 112: - this.$ = $$[$0 - 4]; - yy.setLink($$[$0 - 4], $$[$0 - 2]); - yy.setTooltip($$[$0 - 4], $$[$0]); - break; - case 113: - this.$ = $$[$0 - 4]; - yy.setLink($$[$0 - 4], $$[$0 - 2], $$[$0]); - break; - case 114: - this.$ = $$[$0 - 6]; - yy.setLink($$[$0 - 6], $$[$0 - 4], $$[$0]); - yy.setTooltip($$[$0 - 6], $$[$0 - 2]); - break; - case 117: - this.$ = $$[$0 - 1]; - yy.setLink($$[$0 - 1], $$[$0]); - break; - case 118: - this.$ = $$[$0 - 3]; - yy.setLink($$[$0 - 3], $$[$0 - 2]); - yy.setTooltip($$[$0 - 3], $$[$0]); - break; - case 119: - this.$ = $$[$0 - 3]; - yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]); - break; - case 120: - this.$ = $$[$0 - 5]; - yy.setLink($$[$0 - 5], $$[$0 - 4], $$[$0]); - yy.setTooltip($$[$0 - 5], $$[$0 - 2]); - break; - case 121: - this.$ = $$[$0 - 4]; - yy.addVertex($$[$0 - 2], void 0, void 0, $$[$0]); - break; - case 122: - this.$ = $$[$0 - 4]; - yy.updateLink([$$[$0 - 2]], $$[$0]); - break; - case 123: - this.$ = $$[$0 - 4]; - yy.updateLink($$[$0 - 2], $$[$0]); - break; - case 124: - this.$ = $$[$0 - 8]; - yy.updateLinkInterpolate([$$[$0 - 6]], $$[$0 - 2]); - yy.updateLink([$$[$0 - 6]], $$[$0]); - break; - case 125: - this.$ = $$[$0 - 8]; - yy.updateLinkInterpolate($$[$0 - 6], $$[$0 - 2]); - yy.updateLink($$[$0 - 6], $$[$0]); - break; - case 126: - this.$ = $$[$0 - 6]; - yy.updateLinkInterpolate([$$[$0 - 4]], $$[$0]); - break; - case 127: - this.$ = $$[$0 - 6]; - yy.updateLinkInterpolate($$[$0 - 4], $$[$0]); - break; - case 128: - case 130: - this.$ = [$$[$0]]; - break; - case 129: - case 131: - $$[$0 - 2].push($$[$0]); - this.$ = $$[$0 - 2]; - break; - case 133: - this.$ = $$[$0 - 1] + $$[$0]; - break; - case 181: - this.$ = $$[$0]; - break; - case 182: - this.$ = $$[$0 - 1] + "" + $$[$0]; - break; - case 184: - this.$ = $$[$0 - 1] + "" + $$[$0]; - break; - case 185: - this.$ = { stmt: "dir", value: "TB" }; - break; - case 186: - this.$ = { stmt: "dir", value: "BT" }; - break; - case 187: - this.$ = { stmt: "dir", value: "RL" }; - break; - case 188: - this.$ = { stmt: "dir", value: "LR" }; - break; - } - }, "anonymous"), - table: [{ 3: 1, 4: 2, 9: $V0, 10: $V1, 12: $V2 }, { 1: [3] }, o2($V3, $V4, { 5: 6 }), { 4: 7, 9: $V0, 10: $V1, 12: $V2 }, { 4: 8, 9: $V0, 10: $V1, 12: $V2 }, { 13: [1, 9], 14: [1, 10] }, { 1: [2, 1], 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 42: 28, 43: 38, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 84: $Vf, 85: $Vg, 86: $Vh, 87: $Vi, 88: $Vj, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs, 121: $Vt, 122: $Vu, 123: $Vv, 124: $Vw }, o2($V3, [2, 9]), o2($V3, [2, 10]), o2($V3, [2, 11]), { 8: [1, 54], 9: [1, 55], 10: $Vx, 15: 53, 18: 56 }, o2($Vy, [2, 3]), o2($Vy, [2, 4]), o2($Vy, [2, 5]), o2($Vy, [2, 6]), o2($Vy, [2, 7]), o2($Vy, [2, 8]), { 8: $Vz, 9: $VA, 11: $VB, 21: 58, 41: 59, 72: 63, 75: [1, 64], 77: [1, 66], 78: [1, 65] }, { 8: $Vz, 9: $VA, 11: $VB, 21: 67 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 68 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 69 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 70 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 71 }, { 8: $Vz, 9: $VA, 10: [1, 72], 11: $VB, 21: 73 }, o2($Vy, [2, 36]), { 35: [1, 74] }, { 37: [1, 75] }, o2($Vy, [2, 39]), o2($VC, [2, 50], { 18: 76, 39: 77, 10: $Vx, 40: $VD }), { 10: [1, 79] }, { 10: [1, 80] }, { 10: [1, 81] }, { 10: [1, 82] }, { 14: $VE, 44: $VF, 60: $VG, 80: [1, 86], 89: $VH, 95: [1, 83], 97: [1, 84], 101: 85, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO, 120: 87 }, o2($Vy, [2, 185]), o2($Vy, [2, 186]), o2($Vy, [2, 187]), o2($Vy, [2, 188]), o2($VP, [2, 51]), o2($VP, [2, 54], { 46: [1, 99] }), o2($VQ, [2, 72], { 113: 112, 29: [1, 100], 44: $Vd, 48: [1, 101], 50: [1, 102], 52: [1, 103], 54: [1, 104], 56: [1, 105], 58: [1, 106], 60: $Ve, 63: [1, 107], 65: [1, 108], 67: [1, 109], 68: [1, 110], 70: [1, 111], 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 114: $Vq, 115: $Vr, 116: $Vs }), o2($VR, [2, 181]), o2($VR, [2, 142]), o2($VR, [2, 143]), o2($VR, [2, 144]), o2($VR, [2, 145]), o2($VR, [2, 146]), o2($VR, [2, 147]), o2($VR, [2, 148]), o2($VR, [2, 149]), o2($VR, [2, 150]), o2($VR, [2, 151]), o2($VR, [2, 152]), o2($V3, [2, 12]), o2($V3, [2, 18]), o2($V3, [2, 19]), { 9: [1, 113] }, o2($VS, [2, 26], { 18: 114, 10: $Vx }), o2($Vy, [2, 27]), { 42: 115, 43: 38, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, o2($Vy, [2, 40]), o2($Vy, [2, 41]), o2($Vy, [2, 42]), o2($VT, [2, 76], { 73: 116, 62: [1, 118], 74: [1, 117] }), { 76: 119, 79: 120, 80: $VU, 81: $VV, 116: $VW, 119: $VX }, { 75: [1, 125], 77: [1, 126] }, o2($VY, [2, 83]), o2($Vy, [2, 28]), o2($Vy, [2, 29]), o2($Vy, [2, 30]), o2($Vy, [2, 31]), o2($Vy, [2, 32]), { 10: $VZ, 12: $V_, 14: $V$, 27: $V01, 28: 127, 32: $V11, 44: $V21, 60: $V31, 75: $V41, 80: [1, 129], 81: [1, 130], 83: 140, 84: $V51, 85: $V61, 86: $V71, 87: $V81, 88: $V91, 89: $Va1, 90: $Vb1, 91: 128, 105: $Vc1, 109: $Vd1, 111: $Ve1, 114: $Vf1, 115: $Vg1, 116: $Vh1 }, o2($Vi1, $V4, { 5: 153 }), o2($Vy, [2, 37]), o2($Vy, [2, 38]), o2($VC, [2, 48], { 44: $Vj1 }), o2($VC, [2, 49], { 18: 155, 10: $Vx, 40: $Vk1 }), o2($VP, [2, 44]), { 44: $Vd, 47: 157, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, { 102: [1, 158], 103: 159, 105: [1, 160] }, { 44: $Vd, 47: 161, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, { 44: $Vd, 47: 162, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, o2($Vl1, [2, 107], { 10: [1, 163], 96: [1, 164] }), { 80: [1, 165] }, o2($Vl1, [2, 115], { 120: 167, 10: [1, 166], 14: $VE, 44: $VF, 60: $VG, 89: $VH, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO }), o2($Vl1, [2, 117], { 10: [1, 168] }), o2($Vm1, [2, 183]), o2($Vm1, [2, 170]), o2($Vm1, [2, 171]), o2($Vm1, [2, 172]), o2($Vm1, [2, 173]), o2($Vm1, [2, 174]), o2($Vm1, [2, 175]), o2($Vm1, [2, 176]), o2($Vm1, [2, 177]), o2($Vm1, [2, 178]), o2($Vm1, [2, 179]), o2($Vm1, [2, 180]), { 44: $Vd, 47: 169, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, { 30: 170, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 178, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 180, 50: [1, 179], 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 181, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 182, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 183, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 109: [1, 184] }, { 30: 185, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 186, 65: [1, 187], 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 188, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 189, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 190, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VR, [2, 182]), o2($V3, [2, 20]), o2($VS, [2, 25]), o2($VC, [2, 46], { 39: 191, 18: 192, 10: $Vx, 40: $VD }), o2($VT, [2, 73], { 10: [1, 193] }), { 10: [1, 194] }, { 30: 195, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 77: [1, 196], 79: 197, 116: $VW, 119: $VX }, o2($Vt1, [2, 79]), o2($Vt1, [2, 81]), o2($Vt1, [2, 82]), o2($Vt1, [2, 168]), o2($Vt1, [2, 169]), { 76: 198, 79: 120, 80: $VU, 81: $VV, 116: $VW, 119: $VX }, o2($VY, [2, 84]), { 8: $Vz, 9: $VA, 10: $VZ, 11: $VB, 12: $V_, 14: $V$, 21: 200, 27: $V01, 29: [1, 199], 32: $V11, 44: $V21, 60: $V31, 75: $V41, 83: 140, 84: $V51, 85: $V61, 86: $V71, 87: $V81, 88: $V91, 89: $Va1, 90: $Vb1, 91: 201, 105: $Vc1, 109: $Vd1, 111: $Ve1, 114: $Vf1, 115: $Vg1, 116: $Vh1 }, o2($Vu1, [2, 101]), o2($Vu1, [2, 103]), o2($Vu1, [2, 104]), o2($Vu1, [2, 157]), o2($Vu1, [2, 158]), o2($Vu1, [2, 159]), o2($Vu1, [2, 160]), o2($Vu1, [2, 161]), o2($Vu1, [2, 162]), o2($Vu1, [2, 163]), o2($Vu1, [2, 164]), o2($Vu1, [2, 165]), o2($Vu1, [2, 166]), o2($Vu1, [2, 167]), o2($Vu1, [2, 90]), o2($Vu1, [2, 91]), o2($Vu1, [2, 92]), o2($Vu1, [2, 93]), o2($Vu1, [2, 94]), o2($Vu1, [2, 95]), o2($Vu1, [2, 96]), o2($Vu1, [2, 97]), o2($Vu1, [2, 98]), o2($Vu1, [2, 99]), o2($Vu1, [2, 100]), { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 202], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 42: 28, 43: 38, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 84: $Vf, 85: $Vg, 86: $Vh, 87: $Vi, 88: $Vj, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs, 121: $Vt, 122: $Vu, 123: $Vv, 124: $Vw }, { 10: $Vx, 18: 203 }, { 44: [1, 204] }, o2($VP, [2, 43]), { 10: [1, 205], 44: $Vd, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 112, 114: $Vq, 115: $Vr, 116: $Vs }, { 10: [1, 206] }, { 10: [1, 207], 106: [1, 208] }, o2($Vv1, [2, 128]), { 10: [1, 209], 44: $Vd, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 112, 114: $Vq, 115: $Vr, 116: $Vs }, { 10: [1, 210], 44: $Vd, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 112, 114: $Vq, 115: $Vr, 116: $Vs }, { 80: [1, 211] }, o2($Vl1, [2, 109], { 10: [1, 212] }), o2($Vl1, [2, 111], { 10: [1, 213] }), { 80: [1, 214] }, o2($Vm1, [2, 184]), { 80: [1, 215], 98: [1, 216] }, o2($VP, [2, 55], { 113: 112, 44: $Vd, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 114: $Vq, 115: $Vr, 116: $Vs }), { 31: [1, 217], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($Vw1, [2, 86]), o2($Vw1, [2, 88]), o2($Vw1, [2, 89]), o2($Vw1, [2, 153]), o2($Vw1, [2, 154]), o2($Vw1, [2, 155]), o2($Vw1, [2, 156]), { 49: [1, 219], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 220, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 51: [1, 221], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 53: [1, 222], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 55: [1, 223], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 57: [1, 224], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 60: [1, 225] }, { 64: [1, 226], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 66: [1, 227], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 228, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 31: [1, 229], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 67: $Vn1, 69: [1, 230], 71: [1, 231], 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 67: $Vn1, 69: [1, 233], 71: [1, 232], 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VC, [2, 45], { 18: 155, 10: $Vx, 40: $Vk1 }), o2($VC, [2, 47], { 44: $Vj1 }), o2($VT, [2, 75]), o2($VT, [2, 74]), { 62: [1, 234], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VT, [2, 77]), o2($Vt1, [2, 80]), { 77: [1, 235], 79: 197, 116: $VW, 119: $VX }, { 30: 236, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($Vi1, $V4, { 5: 237 }), o2($Vu1, [2, 102]), o2($Vy, [2, 35]), { 43: 238, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, { 10: $Vx, 18: 239 }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 240, 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 251, 104: [1, 252], 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 253, 104: [1, 254], 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, { 105: [1, 255] }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 256, 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, { 44: $Vd, 47: 257, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, o2($Vl1, [2, 108]), { 80: [1, 258] }, { 80: [1, 259], 98: [1, 260] }, o2($Vl1, [2, 116]), o2($Vl1, [2, 118], { 10: [1, 261] }), o2($Vl1, [2, 119]), o2($VQ, [2, 56]), o2($Vw1, [2, 87]), o2($VQ, [2, 57]), { 51: [1, 262], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VQ, [2, 64]), o2($VQ, [2, 59]), o2($VQ, [2, 60]), o2($VQ, [2, 61]), { 109: [1, 263] }, o2($VQ, [2, 63]), o2($VQ, [2, 65]), { 66: [1, 264], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VQ, [2, 67]), o2($VQ, [2, 68]), o2($VQ, [2, 70]), o2($VQ, [2, 69]), o2($VQ, [2, 71]), o2([10, 44, 60, 89, 102, 105, 106, 109, 111, 114, 115, 116], [2, 85]), o2($VT, [2, 78]), { 31: [1, 265], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 266], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 42: 28, 43: 38, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 84: $Vf, 85: $Vg, 86: $Vh, 87: $Vi, 88: $Vj, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs, 121: $Vt, 122: $Vu, 123: $Vv, 124: $Vw }, o2($VP, [2, 53]), { 43: 267, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, o2($Vl1, [2, 121], { 106: $VF1 }), o2($VG1, [2, 130], { 108: 269, 10: $Vx1, 60: $Vy1, 84: $Vz1, 105: $VA1, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }), o2($VH1, [2, 132]), o2($VH1, [2, 134]), o2($VH1, [2, 135]), o2($VH1, [2, 136]), o2($VH1, [2, 137]), o2($VH1, [2, 138]), o2($VH1, [2, 139]), o2($VH1, [2, 140]), o2($VH1, [2, 141]), o2($Vl1, [2, 122], { 106: $VF1 }), { 10: [1, 270] }, o2($Vl1, [2, 123], { 106: $VF1 }), { 10: [1, 271] }, o2($Vv1, [2, 129]), o2($Vl1, [2, 105], { 106: $VF1 }), o2($Vl1, [2, 106], { 113: 112, 44: $Vd, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 114: $Vq, 115: $Vr, 116: $Vs }), o2($Vl1, [2, 110]), o2($Vl1, [2, 112], { 10: [1, 272] }), o2($Vl1, [2, 113]), { 98: [1, 273] }, { 51: [1, 274] }, { 62: [1, 275] }, { 66: [1, 276] }, { 8: $Vz, 9: $VA, 11: $VB, 21: 277 }, o2($Vy, [2, 34]), o2($VP, [2, 52]), { 10: $Vx1, 60: $Vy1, 84: $Vz1, 105: $VA1, 107: 278, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, o2($VH1, [2, 133]), { 14: $VE, 44: $VF, 60: $VG, 89: $VH, 101: 279, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO, 120: 87 }, { 14: $VE, 44: $VF, 60: $VG, 89: $VH, 101: 280, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO, 120: 87 }, { 98: [1, 281] }, o2($Vl1, [2, 120]), o2($VQ, [2, 58]), { 30: 282, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VQ, [2, 66]), o2($Vi1, $V4, { 5: 283 }), o2($VG1, [2, 131], { 108: 269, 10: $Vx1, 60: $Vy1, 84: $Vz1, 105: $VA1, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }), o2($Vl1, [2, 126], { 120: 167, 10: [1, 284], 14: $VE, 44: $VF, 60: $VG, 89: $VH, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO }), o2($Vl1, [2, 127], { 120: 167, 10: [1, 285], 14: $VE, 44: $VF, 60: $VG, 89: $VH, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO }), o2($Vl1, [2, 114]), { 31: [1, 286], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 287], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 42: 28, 43: 38, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 84: $Vf, 85: $Vg, 86: $Vh, 87: $Vi, 88: $Vj, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs, 121: $Vt, 122: $Vu, 123: $Vv, 124: $Vw }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 288, 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 289, 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, o2($VQ, [2, 62]), o2($Vy, [2, 33]), o2($Vl1, [2, 124], { 106: $VF1 }), o2($Vl1, [2, 125], { 106: $VF1 })], - defaultActions: {}, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); - } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; - } - }, "parseError"), - parse: /* @__PURE__ */ __name(function parse7(input) { - var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; - var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k2 in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { - sharedState.yy[k2] = this.yy[k2]; - } - } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; - sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; - } - var yyloc = lexer3.yylloc; - lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; + __name(debounce2, "debounce"); + debounce_1 = debounce2; + return debounce_1; + } + function rotatePoint(x5, y6, centerX, centerY, angleDegrees) { + var angleRadians = angleDegrees * Math.PI / 180; + var rotatedX = Math.cos(angleRadians) * (x5 - centerX) - Math.sin(angleRadians) * (y6 - centerY) + centerX; + var rotatedY = Math.sin(angleRadians) * (x5 - centerX) + Math.cos(angleRadians) * (y6 - centerY) + centerY; + return { + x: rotatedX, + y: rotatedY + }; + } + function rotatePosAndSkewByBox(pos, box, angleDegrees) { + if (angleDegrees === 0) return pos; + var centerX = (box.x1 + box.x2) / 2; + var centerY = (box.y1 + box.y2) / 2; + var skewX = box.w / box.h; + var skewY = 1 / skewX; + var rotated = rotatePoint(pos.x, pos.y, centerX, centerY, angleDegrees); + var skewed = movePointByBoxAspect(rotated.x, rotated.y, centerX, centerY, skewX, skewY); + return { + x: skewed.x, + y: skewed.y + }; + } + function requireHeap$1() { + if (hasRequiredHeap$1) return heap$2.exports; + hasRequiredHeap$1 = 1; + (function(module2, exports2) { + (function() { + var Heap2, defaultCmp, floor, heapify, heappop, heappush, heappushpop, heapreplace, insort, min9, nlargest, nsmallest, updateItem, _siftdown, _siftup; + floor = Math.floor, min9 = Math.min; + defaultCmp = /* @__PURE__ */ __name(function(x5, y6) { + if (x5 < y6) { + return -1; + } + if (x5 > y6) { + return 1; + } + return 0; + }, "defaultCmp"); + insort = /* @__PURE__ */ __name(function(a2, x5, lo, hi, cmp) { + var mid; + if (lo == null) { + lo = 0; + } + if (cmp == null) { + cmp = defaultCmp; + } + if (lo < 0) { + throw new Error("lo must be non-negative"); + } + if (hi == null) { + hi = a2.length; + } + while (lo < hi) { + mid = floor((lo + hi) / 2); + if (cmp(x5, a2[mid]) < 0) { + hi = mid; } else { - this.parseError = Object.getPrototypeOf(this).parseError; + lo = mid + 1; } - function popStack(n2) { - stack.length = stack.length - 2 * n2; - vstack.length = vstack.length - n2; - lstack.length = lstack.length - n2; + } + return [].splice.apply(a2, [lo, lo - lo].concat(x5)), x5; + }, "insort"); + heappush = /* @__PURE__ */ __name(function(array4, item, cmp) { + if (cmp == null) { + cmp = defaultCmp; + } + array4.push(item); + return _siftdown(array4, 0, array4.length - 1, cmp); + }, "heappush"); + heappop = /* @__PURE__ */ __name(function(array4, cmp) { + var lastelt, returnitem; + if (cmp == null) { + cmp = defaultCmp; + } + lastelt = array4.pop(); + if (array4.length) { + returnitem = array4[0]; + array4[0] = lastelt; + _siftup(array4, 0, cmp); + } else { + returnitem = lastelt; + } + return returnitem; + }, "heappop"); + heapreplace = /* @__PURE__ */ __name(function(array4, item, cmp) { + var returnitem; + if (cmp == null) { + cmp = defaultCmp; + } + returnitem = array4[0]; + array4[0] = item; + _siftup(array4, 0, cmp); + return returnitem; + }, "heapreplace"); + heappushpop = /* @__PURE__ */ __name(function(array4, item, cmp) { + var _ref; + if (cmp == null) { + cmp = defaultCmp; + } + if (array4.length && cmp(array4[0], item) < 0) { + _ref = [array4[0], item], item = _ref[0], array4[0] = _ref[1]; + _siftup(array4, 0, cmp); + } + return item; + }, "heappushpop"); + heapify = /* @__PURE__ */ __name(function(array4, cmp) { + var i2, _i, _len, _ref1, _results, _results1; + if (cmp == null) { + cmp = defaultCmp; + } + _ref1 = (function() { + _results1 = []; + for (var _j = 0, _ref = floor(array4.length / 2); 0 <= _ref ? _j < _ref : _j > _ref; 0 <= _ref ? _j++ : _j--) { + _results1.push(_j); + } + return _results1; + }).apply(this).reverse(); + _results = []; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + i2 = _ref1[_i]; + _results.push(_siftup(array4, i2, cmp)); + } + return _results; + }, "heapify"); + updateItem = /* @__PURE__ */ __name(function(array4, item, cmp) { + var pos; + if (cmp == null) { + cmp = defaultCmp; + } + pos = array4.indexOf(item); + if (pos === -1) { + return; + } + _siftdown(array4, 0, pos, cmp); + return _siftup(array4, pos, cmp); + }, "updateItem"); + nlargest = /* @__PURE__ */ __name(function(array4, n2, cmp) { + var elem, result, _i, _len, _ref; + if (cmp == null) { + cmp = defaultCmp; + } + result = array4.slice(0, n2); + if (!result.length) { + return result; + } + heapify(result, cmp); + _ref = array4.slice(n2); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + elem = _ref[_i]; + heappushpop(result, elem, cmp); + } + return result.sort(cmp).reverse(); + }, "nlargest"); + nsmallest = /* @__PURE__ */ __name(function(array4, n2, cmp) { + var elem, los, result, _i, _j, _len, _ref, _ref1, _results; + if (cmp == null) { + cmp = defaultCmp; + } + if (n2 * 10 <= array4.length) { + result = array4.slice(0, n2).sort(cmp); + if (!result.length) { + return result; } - __name(popStack, "popStack"); - function lex() { - var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; - if (typeof token2 !== "number") { - if (token2 instanceof Array) { - tstack = token2; - token2 = tstack.pop(); - } - token2 = self2.symbols_[token2] || token2; + los = result[result.length - 1]; + _ref = array4.slice(n2); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + elem = _ref[_i]; + if (cmp(elem, los) < 0) { + insort(result, elem, 0, null, cmp); + result.pop(); + los = result[result.length - 1]; } - return token2; } - __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; - while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state4] && table[state4][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p3 in table[state4]) { - if (this.terminals_[p3] && p3 > TERROR) { - expected.push("'" + this.terminals_[p3] + "'"); - } - } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); - } - this.parseError(errStr, { - text: lexer3.match, - token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, - loc: yyloc, - expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r2 = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r2 !== "undefined") { - return r2; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState2); - break; - case 3: - return true; - } + return result; + } + heapify(array4, cmp); + _results = []; + for (_j = 0, _ref1 = min9(n2, array4.length); 0 <= _ref1 ? _j < _ref1 : _j > _ref1; 0 <= _ref1 ? ++_j : --_j) { + _results.push(heappop(array4, cmp)); + } + return _results; + }, "nsmallest"); + _siftdown = /* @__PURE__ */ __name(function(array4, startpos, pos, cmp) { + var newitem, parent4, parentpos; + if (cmp == null) { + cmp = defaultCmp; + } + newitem = array4[pos]; + while (pos > startpos) { + parentpos = pos - 1 >> 1; + parent4 = array4[parentpos]; + if (cmp(newitem, parent4) < 0) { + array4[pos] = parent4; + pos = parentpos; + continue; } - return true; - }, "parse") + break; + } + return array4[pos] = newitem; + }, "_siftdown"); + _siftup = /* @__PURE__ */ __name(function(array4, pos, cmp) { + var childpos, endpos, newitem, rightpos, startpos; + if (cmp == null) { + cmp = defaultCmp; + } + endpos = array4.length; + startpos = pos; + newitem = array4[pos]; + childpos = 2 * pos + 1; + while (childpos < endpos) { + rightpos = childpos + 1; + if (rightpos < endpos && !(cmp(array4[childpos], array4[rightpos]) < 0)) { + childpos = rightpos; + } + array4[pos] = array4[childpos]; + pos = childpos; + childpos = 2 * pos + 1; + } + array4[pos] = newitem; + return _siftdown(array4, startpos, pos, cmp); + }, "_siftup"); + Heap2 = (function() { + Heap3.push = heappush; + Heap3.pop = heappop; + Heap3.replace = heapreplace; + Heap3.pushpop = heappushpop; + Heap3.heapify = heapify; + Heap3.updateItem = updateItem; + Heap3.nlargest = nlargest; + Heap3.nsmallest = nsmallest; + function Heap3(cmp) { + this.cmp = cmp != null ? cmp : defaultCmp; + this.nodes = []; + } + __name(Heap3, "Heap"); + Heap3.prototype.push = function(x5) { + return heappush(this.nodes, x5, this.cmp); + }; + Heap3.prototype.pop = function() { + return heappop(this.nodes, this.cmp); + }; + Heap3.prototype.peek = function() { + return this.nodes[0]; + }; + Heap3.prototype.contains = function(x5) { + return this.nodes.indexOf(x5) !== -1; + }; + Heap3.prototype.replace = function(x5) { + return heapreplace(this.nodes, x5, this.cmp); + }; + Heap3.prototype.pushpop = function(x5) { + return heappushpop(this.nodes, x5, this.cmp); + }; + Heap3.prototype.heapify = function() { + return heapify(this.nodes, this.cmp); + }; + Heap3.prototype.updateItem = function(x5) { + return updateItem(this.nodes, x5, this.cmp); + }; + Heap3.prototype.clear = function() { + return this.nodes = []; + }; + Heap3.prototype.empty = function() { + return this.nodes.length === 0; + }; + Heap3.prototype.size = function() { + return this.nodes.length; + }; + Heap3.prototype.clone = function() { + var heap2; + heap2 = new Heap3(); + heap2.nodes = this.nodes.slice(0); + return heap2; + }; + Heap3.prototype.toArray = function() { + return this.nodes.slice(0); + }; + Heap3.prototype.insert = Heap3.prototype.push; + Heap3.prototype.top = Heap3.prototype.peek; + Heap3.prototype.front = Heap3.prototype.peek; + Heap3.prototype.has = Heap3.prototype.contains; + Heap3.prototype.copy = Heap3.prototype.clone; + return Heap3; + })(); + (function(root3, factory) { + { + return module2.exports = factory(); + } + })(this, function() { + return Heap2; + }); + }).call(heap$1); + })(heap$2); + return heap$2.exports; + } + function requireHeap() { + if (hasRequiredHeap) return heap; + hasRequiredHeap = 1; + heap = requireHeap$1(); + return heap; + } + function inflatePolygon(polygon2, d3) { + if (polygon2.length < 3) { + throw new Error("Need at least 3 vertices"); + } + var add3 = /* @__PURE__ */ __name(function add4(a2, b3) { + return { + x: a2.x + b3.x, + y: a2.y + b3.y + }; + }, "add"); + var sub2 = /* @__PURE__ */ __name(function sub3(a2, b3) { + return { + x: a2.x - b3.x, + y: a2.y - b3.y + }; + }, "sub"); + var scale2 = /* @__PURE__ */ __name(function scale3(v3, s2) { + return { + x: v3.x * s2, + y: v3.y * s2 + }; + }, "scale"); + var cross3 = /* @__PURE__ */ __name(function cross4(u2, v3) { + return u2.x * v3.y - u2.y * v3.x; + }, "cross"); + var normalize4 = /* @__PURE__ */ __name(function normalize5(v3) { + var len = hypot(v3.x, v3.y); + return len === 0 ? { + x: 0, + y: 0 + } : { + x: v3.x / len, + y: v3.y / len + }; + }, "normalize"); + var signedArea = /* @__PURE__ */ __name(function signedArea2(pts3) { + var A2 = 0; + for (var i3 = 0; i3 < pts3.length; i3++) { + var p4 = pts3[i3], q4 = pts3[(i3 + 1) % pts3.length]; + A2 += p4.x * q4.y - q4.x * p4.y; + } + return A2 / 2; + }, "signedArea"); + var intersectLines = /* @__PURE__ */ __name(function intersectLines2(p1, p22, p32, p4) { + var r2 = sub2(p22, p1); + var s2 = sub2(p4, p32); + var denom = cross3(r2, s2); + if (Math.abs(denom) < 1e-9) { + return add3(p1, scale2(r2, 0.5)); + } + var t4 = cross3(sub2(p32, p1), s2) / denom; + return add3(p1, scale2(r2, t4)); + }, "intersectLines"); + var pts2 = polygon2.map(function(p4) { + return { + x: p4.x, + y: p4.y + }; + }); + if (signedArea(pts2) < 0) pts2.reverse(); + var n2 = pts2.length; + var normals = []; + for (var i2 = 0; i2 < n2; i2++) { + var p3 = pts2[i2], q3 = pts2[(i2 + 1) % n2]; + var edge = sub2(q3, p3); + var out = normalize4({ + x: edge.y, + y: -edge.x + }); + normals.push(out); + } + var offsetEdges = normals.map(function(nrm, i3) { + var p1 = add3(pts2[i3], scale2(nrm, d3)); + var p22 = add3(pts2[(i3 + 1) % n2], scale2(nrm, d3)); + return { + p1, + p2: p22 + }; + }); + var inflated = []; + for (var _i2 = 0; _i2 < n2; _i2++) { + var prevEdge = offsetEdges[(_i2 - 1 + n2) % n2]; + var currEdge = offsetEdges[_i2]; + var ip = intersectLines(prevEdge.p1, prevEdge.p2, currEdge.p1, currEdge.p2); + inflated.push(ip); + } + return inflated; + } + function miterBox(pts2, centerX, centerY, width3, height2, strokeWidth) { + var tpts = transformPoints(pts2, centerX, centerY, width3, height2); + var offsetPoints = inflatePolygon(tpts, strokeWidth); + var bb = makeBoundingBox(); + offsetPoints.forEach(function(pt) { + return expandBoundingBoxByPoint(bb, pt.x, pt.y); + }); + return bb; + } + function satPolygonIntersection(poly1, poly2) { + function getAxes2(polygon2) { + var axes2 = []; + for (var i2 = 0; i2 < polygon2.length; i2++) { + var p1 = polygon2[i2]; + var p22 = polygon2[(i2 + 1) % polygon2.length]; + var edge = { + x: p22.x - p1.x, + y: p22.y - p1.y }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { - EOF: 1, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str2, hash); - } else { - throw new Error(str2); - } - }, "parseError"), - // resets the lexer, sets new input - setInput: /* @__PURE__ */ __name(function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 - }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; - } - this.offset = 0; - return this; - }, "setInput"), - // consumes and returns one char from the input - input: /* @__PURE__ */ __name(function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } - this._input = this._input.slice(1); - return ch; - }, "input"), - // unshifts one char (or a string) into the input - unput: /* @__PURE__ */ __name(function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r2 = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len - }; - if (this.options.ranges) { - this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, "unput"), - // When called from action, caches matched text and appends it on next action - more: /* @__PURE__ */ __name(function() { - this._more = true; - return this; - }, "more"), - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: /* @__PURE__ */ __name(function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - return this; - }, "reject"), - // retain first n characters of the match - less: /* @__PURE__ */ __name(function(n2) { - this.unput(this.match.slice(n2)); - }, "less"), - // displays already matched input, i.e. for error messages - pastInput: /* @__PURE__ */ __name(function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, "pastInput"), - // displays upcoming input, i.e. for error messages - upcomingInput: /* @__PURE__ */ __name(function() { - var next3 = this.match; - if (next3.length < 20) { - next3 += this._input.substr(0, 20 - next3.length); - } - return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, "upcomingInput"), - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: /* @__PURE__ */ __name(function() { - var pre = this.pastInput(); - var c3 = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c3 + "^"; - }, "showPosition"), - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { - var token2, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); - } - } - lines = match2[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length - }; - this.yytext += match2[0]; - this.match += match2[0]; - this.matches = match2; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match2[0].length); - this.matched += match2[0]; - token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token2) { - return token2; - } else if (this._backtrack) { - for (var k2 in backup) { - this[k2] = backup[k2]; - } - return false; - } - return false; - }, "test_match"), - // return next match in input - next: /* @__PURE__ */ __name(function() { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; - } - var token2, match2, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; - } - var rules = this._currentRules(); - for (var i2 = 0; i2 < rules.length; i2++) { - tempMatch = this._input.match(this.rules[rules[i2]]); - if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { - match2 = tempMatch; - index = i2; - if (this.options.backtrack_lexer) { - token2 = this.test_match(tempMatch, rules[i2]); - if (token2 !== false) { - return token2; - } else if (this._backtrack) { - match2 = false; - continue; - } else { - return false; - } - } else if (!this.options.flex) { - break; - } - } - } - if (match2) { - token2 = this.test_match(match2, rules[index]); - if (token2 !== false) { - return token2; - } - return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, "next"), - // return next match that has a token - lex: /* @__PURE__ */ __name(function lex() { - var r2 = this.next(); - if (r2) { - return r2; - } else { - return this.lex(); - } - }, "lex"), - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: /* @__PURE__ */ __name(function begin(condition) { - this.conditionStack.push(condition); - }, "begin"), - // pop the previously active lexer condition state off the condition stack - popState: /* @__PURE__ */ __name(function popState() { - var n2 = this.conditionStack.length - 1; - if (n2 > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, "popState"), - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: /* @__PURE__ */ __name(function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, "_currentRules"), - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: /* @__PURE__ */ __name(function topState(n2) { - n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); - if (n2 >= 0) { - return this.conditionStack[n2]; - } else { - return "INITIAL"; - } - }, "topState"), - // alias for begin(condition) - pushState: /* @__PURE__ */ __name(function pushState(condition) { - this.begin(condition); - }, "pushState"), - // return the number of states currently on the stack - stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { - return this.conditionStack.length; - }, "stateStackSize"), - options: {}, - performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - this.begin("acc_title"); - return 34; - break; - case 1: - this.popState(); - return "acc_title_value"; - break; - case 2: - this.begin("acc_descr"); - return 36; - break; - case 3: - this.popState(); - return "acc_descr_value"; - break; - case 4: - this.begin("acc_descr_multiline"); - break; - case 5: - this.popState(); - break; - case 6: - return "acc_descr_multiline_value"; - break; - case 7: - this.pushState("shapeData"); - yy_.yytext = ""; - return 40; - break; - case 8: - this.pushState("shapeDataStr"); - return 40; - break; - case 9: - this.popState(); - return 40; - break; - case 10: - const re2 = /\n\s*/g; - yy_.yytext = yy_.yytext.replace(re2, "
    "); - return 40; - break; - case 11: - return 40; - break; - case 12: - this.popState(); - break; - case 13: - this.begin("callbackname"); - break; - case 14: - this.popState(); - break; - case 15: - this.popState(); - this.begin("callbackargs"); - break; - case 16: - return 95; - break; - case 17: - this.popState(); - break; - case 18: - return 96; - break; - case 19: - return "MD_STR"; - break; - case 20: - this.popState(); - break; - case 21: - this.begin("md_string"); - break; - case 22: - return "STR"; - break; - case 23: - this.popState(); - break; - case 24: - this.pushState("string"); - break; - case 25: - return 84; - break; - case 26: - return 102; - break; - case 27: - return 85; - break; - case 28: - return 104; - break; - case 29: - return 86; - break; - case 30: - return 87; - break; - case 31: - return 97; - break; - case 32: - this.begin("click"); - break; - case 33: - this.popState(); - break; - case 34: - return 88; - break; - case 35: - if (yy.lex.firstGraph()) { - this.begin("dir"); - } - return 12; - break; - case 36: - if (yy.lex.firstGraph()) { - this.begin("dir"); - } - return 12; - break; - case 37: - if (yy.lex.firstGraph()) { - this.begin("dir"); - } - return 12; - break; - case 38: - return 27; - break; - case 39: - return 32; - break; - case 40: - return 98; - break; - case 41: - return 98; - break; - case 42: - return 98; - break; - case 43: - return 98; - break; - case 44: - this.popState(); - return 13; - break; - case 45: - this.popState(); - return 14; - break; - case 46: - this.popState(); - return 14; - break; - case 47: - this.popState(); - return 14; - break; - case 48: - this.popState(); - return 14; - break; - case 49: - this.popState(); - return 14; - break; - case 50: - this.popState(); - return 14; - break; - case 51: - this.popState(); - return 14; - break; - case 52: - this.popState(); - return 14; - break; - case 53: - this.popState(); - return 14; - break; - case 54: - this.popState(); - return 14; - break; - case 55: - return 121; - break; - case 56: - return 122; - break; - case 57: - return 123; - break; - case 58: - return 124; - break; - case 59: - return 78; - break; - case 60: - return 105; - break; - case 61: - return 111; - break; - case 62: - return 46; - break; - case 63: - return 60; - break; - case 64: - return 44; - break; - case 65: - return 8; - break; - case 66: - return 106; - break; - case 67: - return 115; - break; - case 68: - this.popState(); - return 77; - break; - case 69: - this.pushState("edgeText"); - return 75; - break; - case 70: - return 119; - break; - case 71: - this.popState(); - return 77; - break; - case 72: - this.pushState("thickEdgeText"); - return 75; - break; - case 73: - return 119; - break; - case 74: - this.popState(); - return 77; - break; - case 75: - this.pushState("dottedEdgeText"); - return 75; - break; - case 76: - return 119; - break; - case 77: - return 77; - break; - case 78: - this.popState(); - return 53; - break; - case 79: - return "TEXT"; - break; - case 80: - this.pushState("ellipseText"); - return 52; - break; - case 81: - this.popState(); - return 55; - break; - case 82: - this.pushState("text"); - return 54; - break; - case 83: - this.popState(); - return 57; - break; - case 84: - this.pushState("text"); - return 56; - break; - case 85: - return 58; - break; - case 86: - this.pushState("text"); - return 67; - break; - case 87: - this.popState(); - return 64; - break; - case 88: - this.pushState("text"); - return 63; - break; - case 89: - this.popState(); - return 49; - break; - case 90: - this.pushState("text"); - return 48; - break; - case 91: - this.popState(); - return 69; - break; - case 92: - this.popState(); - return 71; - break; - case 93: - return 117; - break; - case 94: - this.pushState("trapText"); - return 68; - break; - case 95: - this.pushState("trapText"); - return 70; - break; - case 96: - return 118; - break; - case 97: - return 67; - break; - case 98: - return 90; - break; - case 99: - return "SEP"; - break; - case 100: - return 89; - break; - case 101: - return 115; - break; - case 102: - return 111; - break; - case 103: - return 44; - break; - case 104: - return 109; - break; - case 105: - return 114; - break; - case 106: - return 116; - break; - case 107: - this.popState(); - return 62; - break; - case 108: - this.pushState("text"); - return 62; - break; - case 109: - this.popState(); - return 51; - break; - case 110: - this.pushState("text"); - return 50; - break; - case 111: - this.popState(); - return 31; - break; - case 112: - this.pushState("text"); - return 29; - break; - case 113: - this.popState(); - return 66; - break; - case 114: - this.pushState("text"); - return 65; - break; - case 115: - return "TEXT"; - break; - case 116: - return "QUOTE"; - break; - case 117: - return 9; - break; - case 118: - return 10; - break; - case 119: - return 11; - break; - } - }, "anonymous"), - rules: [/^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:@\{)/, /^(?:["])/, /^(?:["])/, /^(?:[^\"]+)/, /^(?:[^}^"]+)/, /^(?:\})/, /^(?:call[\s]+)/, /^(?:\([\s]*\))/, /^(?:\()/, /^(?:[^(]*)/, /^(?:\))/, /^(?:[^)]*)/, /^(?:[^`"]+)/, /^(?:[`]["])/, /^(?:["][`])/, /^(?:[^"]+)/, /^(?:["])/, /^(?:["])/, /^(?:style\b)/, /^(?:default\b)/, /^(?:linkStyle\b)/, /^(?:interpolate\b)/, /^(?:classDef\b)/, /^(?:class\b)/, /^(?:href[\s])/, /^(?:click[\s]+)/, /^(?:[\s\n])/, /^(?:[^\s\n]*)/, /^(?:flowchart-elk\b)/, /^(?:graph\b)/, /^(?:flowchart\b)/, /^(?:subgraph\b)/, /^(?:end\b\s*)/, /^(?:_self\b)/, /^(?:_blank\b)/, /^(?:_parent\b)/, /^(?:_top\b)/, /^(?:(\r?\n)*\s*\n)/, /^(?:\s*LR\b)/, /^(?:\s*RL\b)/, /^(?:\s*TB\b)/, /^(?:\s*BT\b)/, /^(?:\s*TD\b)/, /^(?:\s*BR\b)/, /^(?:\s*<)/, /^(?:\s*>)/, /^(?:\s*\^)/, /^(?:\s*v\b)/, /^(?:.*direction\s+TB[^\n]*)/, /^(?:.*direction\s+BT[^\n]*)/, /^(?:.*direction\s+RL[^\n]*)/, /^(?:.*direction\s+LR[^\n]*)/, /^(?:[^\s\"]+@(?=[^\{\"]))/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::::)/, /^(?::)/, /^(?:&)/, /^(?:;)/, /^(?:,)/, /^(?:\*)/, /^(?:\s*[xo<]?--+[-xo>]\s*)/, /^(?:\s*[xo<]?--\s*)/, /^(?:[^-]|-(?!-)+)/, /^(?:\s*[xo<]?==+[=xo>]\s*)/, /^(?:\s*[xo<]?==\s*)/, /^(?:[^=]|=(?!))/, /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/, /^(?:\s*[xo<]?-\.\s*)/, /^(?:[^\.]|\.(?!))/, /^(?:\s*~~[\~]+\s*)/, /^(?:[-/\)][\)])/, /^(?:[^\(\)\[\]\{\}]|!\)+)/, /^(?:\(-)/, /^(?:\]\))/, /^(?:\(\[)/, /^(?:\]\])/, /^(?:\[\[)/, /^(?:\[\|)/, /^(?:>)/, /^(?:\)\])/, /^(?:\[\()/, /^(?:\)\)\))/, /^(?:\(\(\()/, /^(?:[\\(?=\])][\]])/, /^(?:\/(?=\])\])/, /^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/, /^(?:\[\/)/, /^(?:\[\\)/, /^(?:<)/, /^(?:>)/, /^(?:\^)/, /^(?:\\\|)/, /^(?:v\b)/, /^(?:\*)/, /^(?:#)/, /^(?:&)/, /^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/, /^(?:-)/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\|)/, /^(?:\|)/, /^(?:\))/, /^(?:\()/, /^(?:\])/, /^(?:\[)/, /^(?:(\}))/, /^(?:\{)/, /^(?:[^\[\]\(\)\{\}\|\"]+)/, /^(?:")/, /^(?:(\r?\n)+)/, /^(?:\s)/, /^(?:$)/], - conditions: { "shapeDataEndBracket": { "rules": [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "shapeDataStr": { "rules": [9, 10, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "shapeData": { "rules": [8, 11, 12, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "callbackargs": { "rules": [17, 18, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "callbackname": { "rules": [14, 15, 16, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "href": { "rules": [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "click": { "rules": [21, 24, 33, 34, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "dottedEdgeText": { "rules": [21, 24, 74, 76, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "thickEdgeText": { "rules": [21, 24, 71, 73, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "edgeText": { "rules": [21, 24, 68, 70, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "trapText": { "rules": [21, 24, 77, 80, 82, 84, 88, 90, 91, 92, 93, 94, 95, 108, 110, 112, 114], "inclusive": false }, "ellipseText": { "rules": [21, 24, 77, 78, 79, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "text": { "rules": [21, 24, 77, 80, 81, 82, 83, 84, 87, 88, 89, 90, 94, 95, 107, 108, 109, 110, 111, 112, 113, 114, 115], "inclusive": false }, "vertex": { "rules": [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "dir": { "rules": [21, 24, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "acc_descr_multiline": { "rules": [5, 6, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "acc_descr": { "rules": [3, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "acc_title": { "rules": [1, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "md_string": { "rules": [19, 20, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "string": { "rules": [21, 22, 23, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "INITIAL": { "rules": [0, 2, 4, 7, 13, 21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 74, 75, 77, 80, 82, 84, 85, 86, 88, 90, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 110, 112, 114, 116, 117, 118, 119], "inclusive": true } } - }; - return lexer3; - }(); - parser24.lexer = lexer2; - function Parser3() { - this.yy = {}; - } - __name(Parser3, "Parser"); - Parser3.prototype = parser24; - parser24.Parser = Parser3; - return new Parser3(); - }(); - parser3.parser = parser3; - flow_default = parser3; + var normal = { + x: -edge.y, + y: edge.x + }; + var length2 = Math.sqrt(normal.x * normal.x + normal.y * normal.y); + axes2.push({ + x: normal.x / length2, + y: normal.y / length2 + }); + } + return axes2; } - }); - - // src/diagrams/flowchart/parser/flowParser.ts - var newParser, flowParser_default; - var init_flowParser = __esm({ - "src/diagrams/flowchart/parser/flowParser.ts"() { - "use strict"; - init_flow(); - newParser = Object.assign({}, flow_default); - newParser.parse = (src) => { - const newSrc = src.replace(/}\s*\n/g, "}\n"); - return flow_default.parse(newSrc); + __name(getAxes2, "getAxes"); + function project(polygon2, axis3) { + var min9 = Infinity; + var max10 = -Infinity; + var _iterator = _createForOfIteratorHelper(polygon2), _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done; ) { + var point8 = _step.value; + var projection2 = point8.x * axis3.x + point8.y * axis3.y; + min9 = Math.min(min9, projection2); + max10 = Math.max(max10, projection2); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return { + min: min9, + max: max10 }; - flowParser_default = newParser; } - }); - - // src/diagrams/flowchart/styles.ts - var fade, getStyles3, styles_default3; - var init_styles3 = __esm({ - "src/diagrams/flowchart/styles.ts"() { - "use strict"; - init_dist(); - fade = /* @__PURE__ */ __name((color2, opacity) => { - const channel2 = channel_default2; - const r2 = channel2(color2, "r"); - const g2 = channel2(color2, "g"); - const b2 = channel2(color2, "b"); - return rgba_default(r2, g2, b2, opacity); - }, "fade"); - getStyles3 = /* @__PURE__ */ __name((options3) => `.label { - font-family: ${options3.fontFamily}; - color: ${options3.nodeTextColor || options3.textColor}; - } - .cluster-label text { - fill: ${options3.titleColor}; - } - .cluster-label span { - color: ${options3.titleColor}; - } - .cluster-label span p { - background-color: transparent; - } - - .label text,span { - fill: ${options3.nodeTextColor || options3.textColor}; - color: ${options3.nodeTextColor || options3.textColor}; - } - - .node rect, - .node circle, - .node ellipse, - .node polygon, - .node path { - fill: ${options3.mainBkg}; - stroke: ${options3.nodeBorder}; - stroke-width: 1px; + __name(project, "project"); + function overlaps(proj12, proj22) { + return !(proj12.max < proj22.min || proj22.max < proj12.min); + } + __name(overlaps, "overlaps"); + var axes = [].concat(_toConsumableArray(getAxes2(poly1)), _toConsumableArray(getAxes2(poly2))); + var _iterator2 = _createForOfIteratorHelper(axes), _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { + var axis2 = _step2.value; + var proj1 = project(poly1, axis2); + var proj2 = project(poly2, axis2); + if (!overlaps(proj1, proj2)) { + return false; + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return true; } - .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label { - text-anchor: middle; + function clusteringDistance(method, length2, getP, getQ, nodeP, nodeQ) { + var impl2; + if (fn$6(method)) { + impl2 = method; + } else { + impl2 = distances[method] || distances.euclidean; + } + if (length2 === 0 && fn$6(method)) { + return impl2(nodeP, nodeQ); + } else { + return impl2(length2, getP, getQ, nodeP, nodeQ); + } } - // .flowchart-label .text-outer-tspan { - // text-anchor: middle; - // } - // .flowchart-label .text-inner-tspan { - // text-anchor: start; - // } - - .node .katex path { - fill: #000; - stroke: #000; - stroke-width: 1px; + function requireIsArray() { + if (hasRequiredIsArray) return isArray_1; + hasRequiredIsArray = 1; + var isArray2 = Array.isArray; + isArray_1 = isArray2; + return isArray_1; + } + function require_isKey() { + if (hasRequired_isKey) return _isKey; + hasRequired_isKey = 1; + var isArray2 = requireIsArray(), isSymbol2 = requireIsSymbol(); + var reIsDeepProp2 = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp2 = /^\w*$/; + function isKey2(value2, object3) { + if (isArray2(value2)) { + return false; + } + var type3 = typeof value2; + if (type3 == "number" || type3 == "symbol" || type3 == "boolean" || value2 == null || isSymbol2(value2)) { + return true; + } + return reIsPlainProp2.test(value2) || !reIsDeepProp2.test(value2) || object3 != null && value2 in Object(object3); + } + __name(isKey2, "isKey"); + _isKey = isKey2; + return _isKey; } - - .rough-node .label,.node .label, .image-shape .label, .icon-shape .label { - text-align: center; + function requireIsFunction() { + if (hasRequiredIsFunction) return isFunction_1; + hasRequiredIsFunction = 1; + var baseGetTag2 = require_baseGetTag(), isObject3 = requireIsObject(); + var asyncTag2 = "[object AsyncFunction]", funcTag4 = "[object Function]", genTag3 = "[object GeneratorFunction]", proxyTag2 = "[object Proxy]"; + function isFunction2(value2) { + if (!isObject3(value2)) { + return false; + } + var tag = baseGetTag2(value2); + return tag == funcTag4 || tag == genTag3 || tag == asyncTag2 || tag == proxyTag2; + } + __name(isFunction2, "isFunction"); + isFunction_1 = isFunction2; + return isFunction_1; + } + function require_coreJsData() { + if (hasRequired_coreJsData) return _coreJsData; + hasRequired_coreJsData = 1; + var root3 = require_root(); + var coreJsData2 = root3["__core-js_shared__"]; + _coreJsData = coreJsData2; + return _coreJsData; + } + function require_isMasked() { + if (hasRequired_isMasked) return _isMasked; + hasRequired_isMasked = 1; + var coreJsData2 = require_coreJsData(); + var maskSrcKey2 = (function() { + var uid = /[^.]+$/.exec(coreJsData2 && coreJsData2.keys && coreJsData2.keys.IE_PROTO || ""); + return uid ? "Symbol(src)_1." + uid : ""; + })(); + function isMasked2(func) { + return !!maskSrcKey2 && maskSrcKey2 in func; + } + __name(isMasked2, "isMasked"); + _isMasked = isMasked2; + return _isMasked; + } + function require_toSource() { + if (hasRequired_toSource) return _toSource; + hasRequired_toSource = 1; + var funcProto4 = Function.prototype; + var funcToString4 = funcProto4.toString; + function toSource2(func) { + if (func != null) { + try { + return funcToString4.call(func); + } catch (e3) { + } + try { + return func + ""; + } catch (e3) { + } + } + return ""; + } + __name(toSource2, "toSource"); + _toSource = toSource2; + return _toSource; + } + function require_baseIsNative() { + if (hasRequired_baseIsNative) return _baseIsNative; + hasRequired_baseIsNative = 1; + var isFunction2 = requireIsFunction(), isMasked2 = require_isMasked(), isObject3 = requireIsObject(), toSource2 = require_toSource(); + var reRegExpChar2 = /[\\^$.*+?()[\]{}|]/g; + var reIsHostCtor2 = /^\[object .+?Constructor\]$/; + var funcProto4 = Function.prototype, objectProto22 = Object.prototype; + var funcToString4 = funcProto4.toString; + var hasOwnProperty19 = objectProto22.hasOwnProperty; + var reIsNative2 = RegExp( + "^" + funcToString4.call(hasOwnProperty19).replace(reRegExpChar2, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" + ); + function baseIsNative2(value2) { + if (!isObject3(value2) || isMasked2(value2)) { + return false; + } + var pattern = isFunction2(value2) ? reIsNative2 : reIsHostCtor2; + return pattern.test(toSource2(value2)); + } + __name(baseIsNative2, "baseIsNative"); + _baseIsNative = baseIsNative2; + return _baseIsNative; } - .node.clickable { - cursor: pointer; + function require_getValue() { + if (hasRequired_getValue) return _getValue; + hasRequired_getValue = 1; + function getValue3(object3, key) { + return object3 == null ? void 0 : object3[key]; + } + __name(getValue3, "getValue"); + _getValue = getValue3; + return _getValue; + } + function require_getNative() { + if (hasRequired_getNative) return _getNative; + hasRequired_getNative = 1; + var baseIsNative2 = require_baseIsNative(), getValue3 = require_getValue(); + function getNative2(object3, key) { + var value2 = getValue3(object3, key); + return baseIsNative2(value2) ? value2 : void 0; + } + __name(getNative2, "getNative"); + _getNative = getNative2; + return _getNative; + } + function require_nativeCreate() { + if (hasRequired_nativeCreate) return _nativeCreate; + hasRequired_nativeCreate = 1; + var getNative2 = require_getNative(); + var nativeCreate2 = getNative2(Object, "create"); + _nativeCreate = nativeCreate2; + return _nativeCreate; + } + function require_hashClear() { + if (hasRequired_hashClear) return _hashClear; + hasRequired_hashClear = 1; + var nativeCreate2 = require_nativeCreate(); + function hashClear2() { + this.__data__ = nativeCreate2 ? nativeCreate2(null) : {}; + this.size = 0; + } + __name(hashClear2, "hashClear"); + _hashClear = hashClear2; + return _hashClear; + } + function require_hashDelete() { + if (hasRequired_hashDelete) return _hashDelete; + hasRequired_hashDelete = 1; + function hashDelete2(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + __name(hashDelete2, "hashDelete"); + _hashDelete = hashDelete2; + return _hashDelete; + } + function require_hashGet() { + if (hasRequired_hashGet) return _hashGet; + hasRequired_hashGet = 1; + var nativeCreate2 = require_nativeCreate(); + var HASH_UNDEFINED4 = "__lodash_hash_undefined__"; + var objectProto22 = Object.prototype; + var hasOwnProperty19 = objectProto22.hasOwnProperty; + function hashGet2(key) { + var data5 = this.__data__; + if (nativeCreate2) { + var result = data5[key]; + return result === HASH_UNDEFINED4 ? void 0 : result; + } + return hasOwnProperty19.call(data5, key) ? data5[key] : void 0; + } + __name(hashGet2, "hashGet"); + _hashGet = hashGet2; + return _hashGet; + } + function require_hashHas() { + if (hasRequired_hashHas) return _hashHas; + hasRequired_hashHas = 1; + var nativeCreate2 = require_nativeCreate(); + var objectProto22 = Object.prototype; + var hasOwnProperty19 = objectProto22.hasOwnProperty; + function hashHas2(key) { + var data5 = this.__data__; + return nativeCreate2 ? data5[key] !== void 0 : hasOwnProperty19.call(data5, key); + } + __name(hashHas2, "hashHas"); + _hashHas = hashHas2; + return _hashHas; + } + function require_hashSet() { + if (hasRequired_hashSet) return _hashSet; + hasRequired_hashSet = 1; + var nativeCreate2 = require_nativeCreate(); + var HASH_UNDEFINED4 = "__lodash_hash_undefined__"; + function hashSet2(key, value2) { + var data5 = this.__data__; + this.size += this.has(key) ? 0 : 1; + data5[key] = nativeCreate2 && value2 === void 0 ? HASH_UNDEFINED4 : value2; + return this; + } + __name(hashSet2, "hashSet"); + _hashSet = hashSet2; + return _hashSet; + } + function require_Hash() { + if (hasRequired_Hash) return _Hash; + hasRequired_Hash = 1; + var hashClear2 = require_hashClear(), hashDelete2 = require_hashDelete(), hashGet2 = require_hashGet(), hashHas2 = require_hashHas(), hashSet2 = require_hashSet(); + function Hash2(entries2) { + var index = -1, length2 = entries2 == null ? 0 : entries2.length; + this.clear(); + while (++index < length2) { + var entry = entries2[index]; + this.set(entry[0], entry[1]); + } + } + __name(Hash2, "Hash"); + Hash2.prototype.clear = hashClear2; + Hash2.prototype["delete"] = hashDelete2; + Hash2.prototype.get = hashGet2; + Hash2.prototype.has = hashHas2; + Hash2.prototype.set = hashSet2; + _Hash = Hash2; + return _Hash; + } + function require_listCacheClear() { + if (hasRequired_listCacheClear) return _listCacheClear; + hasRequired_listCacheClear = 1; + function listCacheClear2() { + this.__data__ = []; + this.size = 0; + } + __name(listCacheClear2, "listCacheClear"); + _listCacheClear = listCacheClear2; + return _listCacheClear; + } + function requireEq() { + if (hasRequiredEq) return eq_1; + hasRequiredEq = 1; + function eq3(value2, other) { + return value2 === other || value2 !== value2 && other !== other; + } + __name(eq3, "eq"); + eq_1 = eq3; + return eq_1; + } + function require_assocIndexOf() { + if (hasRequired_assocIndexOf) return _assocIndexOf; + hasRequired_assocIndexOf = 1; + var eq3 = requireEq(); + function assocIndexOf2(array4, key) { + var length2 = array4.length; + while (length2--) { + if (eq3(array4[length2][0], key)) { + return length2; + } + } + return -1; + } + __name(assocIndexOf2, "assocIndexOf"); + _assocIndexOf = assocIndexOf2; + return _assocIndexOf; + } + function require_listCacheDelete() { + if (hasRequired_listCacheDelete) return _listCacheDelete; + hasRequired_listCacheDelete = 1; + var assocIndexOf2 = require_assocIndexOf(); + var arrayProto2 = Array.prototype; + var splice2 = arrayProto2.splice; + function listCacheDelete2(key) { + var data5 = this.__data__, index = assocIndexOf2(data5, key); + if (index < 0) { + return false; + } + var lastIndex = data5.length - 1; + if (index == lastIndex) { + data5.pop(); + } else { + splice2.call(data5, index, 1); + } + --this.size; + return true; + } + __name(listCacheDelete2, "listCacheDelete"); + _listCacheDelete = listCacheDelete2; + return _listCacheDelete; + } + function require_listCacheGet() { + if (hasRequired_listCacheGet) return _listCacheGet; + hasRequired_listCacheGet = 1; + var assocIndexOf2 = require_assocIndexOf(); + function listCacheGet2(key) { + var data5 = this.__data__, index = assocIndexOf2(data5, key); + return index < 0 ? void 0 : data5[index][1]; + } + __name(listCacheGet2, "listCacheGet"); + _listCacheGet = listCacheGet2; + return _listCacheGet; + } + function require_listCacheHas() { + if (hasRequired_listCacheHas) return _listCacheHas; + hasRequired_listCacheHas = 1; + var assocIndexOf2 = require_assocIndexOf(); + function listCacheHas2(key) { + return assocIndexOf2(this.__data__, key) > -1; + } + __name(listCacheHas2, "listCacheHas"); + _listCacheHas = listCacheHas2; + return _listCacheHas; + } + function require_listCacheSet() { + if (hasRequired_listCacheSet) return _listCacheSet; + hasRequired_listCacheSet = 1; + var assocIndexOf2 = require_assocIndexOf(); + function listCacheSet2(key, value2) { + var data5 = this.__data__, index = assocIndexOf2(data5, key); + if (index < 0) { + ++this.size; + data5.push([key, value2]); + } else { + data5[index][1] = value2; + } + return this; + } + __name(listCacheSet2, "listCacheSet"); + _listCacheSet = listCacheSet2; + return _listCacheSet; + } + function require_ListCache() { + if (hasRequired_ListCache) return _ListCache; + hasRequired_ListCache = 1; + var listCacheClear2 = require_listCacheClear(), listCacheDelete2 = require_listCacheDelete(), listCacheGet2 = require_listCacheGet(), listCacheHas2 = require_listCacheHas(), listCacheSet2 = require_listCacheSet(); + function ListCache2(entries2) { + var index = -1, length2 = entries2 == null ? 0 : entries2.length; + this.clear(); + while (++index < length2) { + var entry = entries2[index]; + this.set(entry[0], entry[1]); + } + } + __name(ListCache2, "ListCache"); + ListCache2.prototype.clear = listCacheClear2; + ListCache2.prototype["delete"] = listCacheDelete2; + ListCache2.prototype.get = listCacheGet2; + ListCache2.prototype.has = listCacheHas2; + ListCache2.prototype.set = listCacheSet2; + _ListCache = ListCache2; + return _ListCache; + } + function require_Map() { + if (hasRequired_Map) return _Map; + hasRequired_Map = 1; + var getNative2 = require_getNative(), root3 = require_root(); + var Map3 = getNative2(root3, "Map"); + _Map = Map3; + return _Map; + } + function require_mapCacheClear() { + if (hasRequired_mapCacheClear) return _mapCacheClear; + hasRequired_mapCacheClear = 1; + var Hash2 = require_Hash(), ListCache2 = require_ListCache(), Map3 = require_Map(); + function mapCacheClear2() { + this.size = 0; + this.__data__ = { + "hash": new Hash2(), + "map": new (Map3 || ListCache2)(), + "string": new Hash2() + }; + } + __name(mapCacheClear2, "mapCacheClear"); + _mapCacheClear = mapCacheClear2; + return _mapCacheClear; + } + function require_isKeyable() { + if (hasRequired_isKeyable) return _isKeyable; + hasRequired_isKeyable = 1; + function isKeyable2(value2) { + var type3 = typeof value2; + return type3 == "string" || type3 == "number" || type3 == "symbol" || type3 == "boolean" ? value2 !== "__proto__" : value2 === null; + } + __name(isKeyable2, "isKeyable"); + _isKeyable = isKeyable2; + return _isKeyable; + } + function require_getMapData() { + if (hasRequired_getMapData) return _getMapData; + hasRequired_getMapData = 1; + var isKeyable2 = require_isKeyable(); + function getMapData2(map5, key) { + var data5 = map5.__data__; + return isKeyable2(key) ? data5[typeof key == "string" ? "string" : "hash"] : data5.map; + } + __name(getMapData2, "getMapData"); + _getMapData = getMapData2; + return _getMapData; + } + function require_mapCacheDelete() { + if (hasRequired_mapCacheDelete) return _mapCacheDelete; + hasRequired_mapCacheDelete = 1; + var getMapData2 = require_getMapData(); + function mapCacheDelete2(key) { + var result = getMapData2(this, key)["delete"](key); + this.size -= result ? 1 : 0; + return result; + } + __name(mapCacheDelete2, "mapCacheDelete"); + _mapCacheDelete = mapCacheDelete2; + return _mapCacheDelete; + } + function require_mapCacheGet() { + if (hasRequired_mapCacheGet) return _mapCacheGet; + hasRequired_mapCacheGet = 1; + var getMapData2 = require_getMapData(); + function mapCacheGet2(key) { + return getMapData2(this, key).get(key); + } + __name(mapCacheGet2, "mapCacheGet"); + _mapCacheGet = mapCacheGet2; + return _mapCacheGet; + } + function require_mapCacheHas() { + if (hasRequired_mapCacheHas) return _mapCacheHas; + hasRequired_mapCacheHas = 1; + var getMapData2 = require_getMapData(); + function mapCacheHas2(key) { + return getMapData2(this, key).has(key); + } + __name(mapCacheHas2, "mapCacheHas"); + _mapCacheHas = mapCacheHas2; + return _mapCacheHas; + } + function require_mapCacheSet() { + if (hasRequired_mapCacheSet) return _mapCacheSet; + hasRequired_mapCacheSet = 1; + var getMapData2 = require_getMapData(); + function mapCacheSet2(key, value2) { + var data5 = getMapData2(this, key), size4 = data5.size; + data5.set(key, value2); + this.size += data5.size == size4 ? 0 : 1; + return this; + } + __name(mapCacheSet2, "mapCacheSet"); + _mapCacheSet = mapCacheSet2; + return _mapCacheSet; + } + function require_MapCache() { + if (hasRequired_MapCache) return _MapCache; + hasRequired_MapCache = 1; + var mapCacheClear2 = require_mapCacheClear(), mapCacheDelete2 = require_mapCacheDelete(), mapCacheGet2 = require_mapCacheGet(), mapCacheHas2 = require_mapCacheHas(), mapCacheSet2 = require_mapCacheSet(); + function MapCache2(entries2) { + var index = -1, length2 = entries2 == null ? 0 : entries2.length; + this.clear(); + while (++index < length2) { + var entry = entries2[index]; + this.set(entry[0], entry[1]); + } + } + __name(MapCache2, "MapCache"); + MapCache2.prototype.clear = mapCacheClear2; + MapCache2.prototype["delete"] = mapCacheDelete2; + MapCache2.prototype.get = mapCacheGet2; + MapCache2.prototype.has = mapCacheHas2; + MapCache2.prototype.set = mapCacheSet2; + _MapCache = MapCache2; + return _MapCache; + } + function requireMemoize() { + if (hasRequiredMemoize) return memoize_1; + hasRequiredMemoize = 1; + var MapCache2 = require_MapCache(); + var FUNC_ERROR_TEXT3 = "Expected a function"; + function memoize4(func, resolver3) { + if (typeof func != "function" || resolver3 != null && typeof resolver3 != "function") { + throw new TypeError(FUNC_ERROR_TEXT3); + } + var memoized = /* @__PURE__ */ __name(function() { + var args = arguments, key = resolver3 ? resolver3.apply(this, args) : args[0], cache3 = memoized.cache; + if (cache3.has(key)) { + return cache3.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache3.set(key, result) || cache3; + return result; + }, "memoized"); + memoized.cache = new (memoize4.Cache || MapCache2)(); + return memoized; + } + __name(memoize4, "memoize"); + memoize4.Cache = MapCache2; + memoize_1 = memoize4; + return memoize_1; + } + function require_memoizeCapped() { + if (hasRequired_memoizeCapped) return _memoizeCapped; + hasRequired_memoizeCapped = 1; + var memoize4 = requireMemoize(); + var MAX_MEMOIZE_SIZE2 = 500; + function memoizeCapped2(func) { + var result = memoize4(func, function(key) { + if (cache3.size === MAX_MEMOIZE_SIZE2) { + cache3.clear(); + } + return key; + }); + var cache3 = result.cache; + return result; + } + __name(memoizeCapped2, "memoizeCapped"); + _memoizeCapped = memoizeCapped2; + return _memoizeCapped; + } + function require_stringToPath() { + if (hasRequired_stringToPath) return _stringToPath; + hasRequired_stringToPath = 1; + var memoizeCapped2 = require_memoizeCapped(); + var rePropName2 = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + var reEscapeChar2 = /\\(\\)?/g; + var stringToPath2 = memoizeCapped2(function(string3) { + var result = []; + if (string3.charCodeAt(0) === 46) { + result.push(""); + } + string3.replace(rePropName2, function(match2, number7, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar2, "$1") : number7 || match2); + }); + return result; + }); + _stringToPath = stringToPath2; + return _stringToPath; + } + function require_arrayMap() { + if (hasRequired_arrayMap) return _arrayMap; + hasRequired_arrayMap = 1; + function arrayMap2(array4, iteratee) { + var index = -1, length2 = array4 == null ? 0 : array4.length, result = Array(length2); + while (++index < length2) { + result[index] = iteratee(array4[index], index, array4); + } + return result; + } + __name(arrayMap2, "arrayMap"); + _arrayMap = arrayMap2; + return _arrayMap; + } + function require_baseToString() { + if (hasRequired_baseToString) return _baseToString; + hasRequired_baseToString = 1; + var Symbol3 = require_Symbol(), arrayMap2 = require_arrayMap(), isArray2 = requireIsArray(), isSymbol2 = requireIsSymbol(); + var symbolProto4 = Symbol3 ? Symbol3.prototype : void 0, symbolToString2 = symbolProto4 ? symbolProto4.toString : void 0; + function baseToString2(value2) { + if (typeof value2 == "string") { + return value2; + } + if (isArray2(value2)) { + return arrayMap2(value2, baseToString2) + ""; + } + if (isSymbol2(value2)) { + return symbolToString2 ? symbolToString2.call(value2) : ""; + } + var result = value2 + ""; + return result == "0" && 1 / value2 == -Infinity ? "-0" : result; + } + __name(baseToString2, "baseToString"); + _baseToString = baseToString2; + return _baseToString; } - - - .root .anchor path { - fill: ${options3.lineColor} !important; - stroke-width: 0; - stroke: ${options3.lineColor}; + function requireToString() { + if (hasRequiredToString) return toString_1; + hasRequiredToString = 1; + var baseToString2 = require_baseToString(); + function toString6(value2) { + return value2 == null ? "" : baseToString2(value2); + } + __name(toString6, "toString"); + toString_1 = toString6; + return toString_1; } - - .arrowheadPath { - fill: ${options3.arrowheadColor}; + function require_castPath() { + if (hasRequired_castPath) return _castPath; + hasRequired_castPath = 1; + var isArray2 = requireIsArray(), isKey2 = require_isKey(), stringToPath2 = require_stringToPath(), toString6 = requireToString(); + function castPath2(value2, object3) { + if (isArray2(value2)) { + return value2; + } + return isKey2(value2, object3) ? [value2] : stringToPath2(toString6(value2)); + } + __name(castPath2, "castPath"); + _castPath = castPath2; + return _castPath; } - - .edgePath .path { - stroke: ${options3.lineColor}; - stroke-width: 2.0px; + function require_toKey() { + if (hasRequired_toKey) return _toKey; + hasRequired_toKey = 1; + var isSymbol2 = requireIsSymbol(); + function toKey2(value2) { + if (typeof value2 == "string" || isSymbol2(value2)) { + return value2; + } + var result = value2 + ""; + return result == "0" && 1 / value2 == -Infinity ? "-0" : result; + } + __name(toKey2, "toKey"); + _toKey = toKey2; + return _toKey; + } + function require_baseGet() { + if (hasRequired_baseGet) return _baseGet; + hasRequired_baseGet = 1; + var castPath2 = require_castPath(), toKey2 = require_toKey(); + function baseGet2(object3, path4) { + path4 = castPath2(path4, object3); + var index = 0, length2 = path4.length; + while (object3 != null && index < length2) { + object3 = object3[toKey2(path4[index++])]; + } + return index && index == length2 ? object3 : void 0; + } + __name(baseGet2, "baseGet"); + _baseGet = baseGet2; + return _baseGet; + } + function requireGet() { + if (hasRequiredGet) return get_1; + hasRequiredGet = 1; + var baseGet2 = require_baseGet(); + function get5(object3, path4, defaultValue) { + var result = object3 == null ? void 0 : baseGet2(object3, path4); + return result === void 0 ? defaultValue : result; + } + __name(get5, "get"); + get_1 = get5; + return get_1; + } + function require_defineProperty() { + if (hasRequired_defineProperty) return _defineProperty; + hasRequired_defineProperty = 1; + var getNative2 = require_getNative(); + var defineProperty2 = (function() { + try { + var func = getNative2(Object, "defineProperty"); + func({}, "", {}); + return func; + } catch (e3) { + } + })(); + _defineProperty = defineProperty2; + return _defineProperty; + } + function require_baseAssignValue() { + if (hasRequired_baseAssignValue) return _baseAssignValue; + hasRequired_baseAssignValue = 1; + var defineProperty2 = require_defineProperty(); + function baseAssignValue2(object3, key, value2) { + if (key == "__proto__" && defineProperty2) { + defineProperty2(object3, key, { + "configurable": true, + "enumerable": true, + "value": value2, + "writable": true + }); + } else { + object3[key] = value2; + } + } + __name(baseAssignValue2, "baseAssignValue"); + _baseAssignValue = baseAssignValue2; + return _baseAssignValue; + } + function require_assignValue() { + if (hasRequired_assignValue) return _assignValue; + hasRequired_assignValue = 1; + var baseAssignValue2 = require_baseAssignValue(), eq3 = requireEq(); + var objectProto22 = Object.prototype; + var hasOwnProperty19 = objectProto22.hasOwnProperty; + function assignValue2(object3, key, value2) { + var objValue = object3[key]; + if (!(hasOwnProperty19.call(object3, key) && eq3(objValue, value2)) || value2 === void 0 && !(key in object3)) { + baseAssignValue2(object3, key, value2); + } + } + __name(assignValue2, "assignValue"); + _assignValue = assignValue2; + return _assignValue; + } + function require_isIndex() { + if (hasRequired_isIndex) return _isIndex; + hasRequired_isIndex = 1; + var MAX_SAFE_INTEGER3 = 9007199254740991; + var reIsUint2 = /^(?:0|[1-9]\d*)$/; + function isIndex2(value2, length2) { + var type3 = typeof value2; + length2 = length2 == null ? MAX_SAFE_INTEGER3 : length2; + return !!length2 && (type3 == "number" || type3 != "symbol" && reIsUint2.test(value2)) && (value2 > -1 && value2 % 1 == 0 && value2 < length2); + } + __name(isIndex2, "isIndex"); + _isIndex = isIndex2; + return _isIndex; + } + function require_baseSet() { + if (hasRequired_baseSet) return _baseSet; + hasRequired_baseSet = 1; + var assignValue2 = require_assignValue(), castPath2 = require_castPath(), isIndex2 = require_isIndex(), isObject3 = requireIsObject(), toKey2 = require_toKey(); + function baseSet2(object3, path4, value2, customizer) { + if (!isObject3(object3)) { + return object3; + } + path4 = castPath2(path4, object3); + var index = -1, length2 = path4.length, lastIndex = length2 - 1, nested = object3; + while (nested != null && ++index < length2) { + var key = toKey2(path4[index]), newValue = value2; + if (key === "__proto__" || key === "constructor" || key === "prototype") { + return object3; + } + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : void 0; + if (newValue === void 0) { + newValue = isObject3(objValue) ? objValue : isIndex2(path4[index + 1]) ? [] : {}; + } + } + assignValue2(nested, key, newValue); + nested = nested[key]; + } + return object3; + } + __name(baseSet2, "baseSet"); + _baseSet = baseSet2; + return _baseSet; + } + function requireSet() { + if (hasRequiredSet) return set_1; + hasRequiredSet = 1; + var baseSet2 = require_baseSet(); + function set5(object3, path4, value2) { + return object3 == null ? object3 : baseSet2(object3, path4, value2); + } + __name(set5, "set"); + set_1 = set5; + return set_1; + } + function require_copyArray() { + if (hasRequired_copyArray) return _copyArray; + hasRequired_copyArray = 1; + function copyArray4(source, array4) { + var index = -1, length2 = source.length; + array4 || (array4 = Array(length2)); + while (++index < length2) { + array4[index] = source[index]; + } + return array4; + } + __name(copyArray4, "copyArray"); + _copyArray = copyArray4; + return _copyArray; } - - .flowchart-link { - stroke: ${options3.lineColor}; - fill: none; + function requireToPath() { + if (hasRequiredToPath) return toPath_1; + hasRequiredToPath = 1; + var arrayMap2 = require_arrayMap(), copyArray4 = require_copyArray(), isArray2 = requireIsArray(), isSymbol2 = requireIsSymbol(), stringToPath2 = require_stringToPath(), toKey2 = require_toKey(), toString6 = requireToString(); + function toPath2(value2) { + if (isArray2(value2)) { + return arrayMap2(value2, toKey2); + } + return isSymbol2(value2) ? [value2] : copyArray4(stringToPath2(toString6(value2))); + } + __name(toPath2, "toPath"); + toPath_1 = toPath2; + return toPath_1; } - - .edgeLabel { - background-color: ${options3.edgeLabelBackground}; - p { - background-color: ${options3.edgeLabelBackground}; + function forEachCompound(eles, fn3, includeSelf, recursiveStep) { + var q3 = []; + var did = new Set$1(); + var cy = eles.cy(); + var hasCompounds = cy.hasCompoundNodes(); + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + if (includeSelf) { + q3.push(ele); + } else if (hasCompounds) { + recursiveStep(q3, did, ele); + } } - rect { - opacity: 0.5; - background-color: ${options3.edgeLabelBackground}; - fill: ${options3.edgeLabelBackground}; + while (q3.length > 0) { + var _ele = q3.shift(); + fn3(_ele); + did.add(_ele.id()); + if (hasCompounds) { + recursiveStep(q3, did, _ele); + } } - text-align: center; + return eles; } - - /* For html labels only */ - .labelBkg { - background-color: ${fade(options3.edgeLabelBackground, 0.5)}; - // background-color: + function addChildren(q3, did, ele) { + if (ele.isParent()) { + var children2 = ele._private.children; + for (var i2 = 0; i2 < children2.length; i2++) { + var child = children2[i2]; + if (!did.has(child.id())) { + q3.push(child); + } + } + } } - - .cluster rect { - fill: ${options3.clusterBkg}; - stroke: ${options3.clusterBorder}; - stroke-width: 1px; + function addParent(q3, did, ele) { + if (ele.isChild()) { + var parent4 = ele._private.parent; + if (!did.has(parent4.id())) { + q3.push(parent4); + } + } } - - .cluster text { - fill: ${options3.titleColor}; + function addParentAndChildren(q3, did, ele) { + addParent(q3, did, ele); + addChildren(q3, did, ele); } - - .cluster span { - color: ${options3.titleColor}; + function defineDegreeFunction(callback) { + return function(includeLoops) { + var self2 = this; + if (includeLoops === void 0) { + includeLoops = true; + } + if (self2.length === 0) { + return; + } + if (self2.isNode() && !self2.removed()) { + var degree = 0; + var node2 = self2[0]; + var connectedEdges = node2._private.edges; + for (var i2 = 0; i2 < connectedEdges.length; i2++) { + var edge = connectedEdges[i2]; + if (!includeLoops && edge.isLoop()) { + continue; + } + degree += callback(node2, edge); + } + return degree; + } else { + return; + } + }; } - /* .cluster div { - color: ${options3.titleColor}; - } */ - - div.mermaidTooltip { - position: absolute; - text-align: center; - max-width: 200px; - padding: 2px; - font-family: ${options3.fontFamily}; - font-size: 12px; - background: ${options3.tertiaryColor}; - border: 1px solid ${options3.border2}; - border-radius: 2px; - pointer-events: none; - z-index: 100; + function defineDegreeBoundsFunction(degreeFn, callback) { + return function(includeLoops) { + var ret; + var nodes5 = this.nodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + var ele = nodes5[i2]; + var degree = ele[degreeFn](includeLoops); + if (degree !== void 0 && (ret === void 0 || callback(degree, ret))) { + ret = degree; + } + } + return ret; + }; } - - .flowchartTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${options3.textColor}; + function returnFalse() { + return false; } - - rect.text { - fill: none; - stroke-width: 0; + function returnTrue() { + return true; } - - .icon-shape, .image-shape { - background-color: ${options3.edgeLabelBackground}; - p { - background-color: ${options3.edgeLabelBackground}; - padding: 2px; - } - rect { - opacity: 0.5; - background-color: ${options3.edgeLabelBackground}; - fill: ${options3.edgeLabelBackground}; + function Emitter() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : emptyOpts; + var context = arguments.length > 1 ? arguments[1] : void 0; + for (var i2 = 0; i2 < defaultsKeys.length; i2++) { + var key = defaultsKeys[i2]; + this[key] = opts[key] || defaults$8[key]; } - text-align: center; + this.context = context || this.context; + this.listeners = []; + this.emitting = 0; } -`, "getStyles"); - styles_default3 = getStyles3; + function styleCache(key, fn3, ele) { + var _p = ele._private; + var cache3 = _p.styleCache = _p.styleCache || []; + var val; + if ((val = cache3[key]) != null) { + return val; + } else { + val = cache3[key] = fn3(ele); + return val; } - }); - - // src/diagrams/flowchart/flowDiagram.ts - var flowDiagram_exports = {}; - __export(flowDiagram_exports, { - diagram: () => diagram2 - }); - var diagram2; - var init_flowDiagram = __esm({ - "src/diagrams/flowchart/flowDiagram.ts"() { - "use strict"; - init_diagramAPI(); - init_flowDb(); - init_flowRenderer_v3_unified(); - init_flowParser(); - init_styles3(); - diagram2 = { - parser: flowParser_default, - get db() { - return new FlowDB(); - }, - renderer: flowRenderer_v3_unified_default, - styles: styles_default3, - init: /* @__PURE__ */ __name((cnf) => { - if (!cnf.flowchart) { - cnf.flowchart = {}; - } - if (cnf.layout) { - setConfig2({ layout: cnf.layout }); - } - cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute; - setConfig2({ flowchart: { arrowMarkerAbsolute: cnf.arrowMarkerAbsolute } }); - }, "init") - }; + } + function cacheStyleFunction(key, fn3) { + key = hashString(key); + return /* @__PURE__ */ __name(function cachedStyleFunction(ele) { + return styleCache(key, fn3, ele); + }, "cachedStyleFunction"); + } + function cachePrototypeStyleFunction(key, fn3) { + key = hashString(key); + var selfFn = /* @__PURE__ */ __name(function selfFn2(ele) { + return fn3.call(ele); + }, "selfFn"); + return /* @__PURE__ */ __name(function cachedPrototypeStyleFunction() { + var ele = this[0]; + if (ele) { + return styleCache(key, selfFn, ele); + } + }, "cachedPrototypeStyleFunction"); + } + function checkCompound(ele, parentOk) { + var _p = ele._private; + var parents3 = _p.data.parent ? ele.parents() : null; + if (parents3) { + for (var i2 = 0; i2 < parents3.length; i2++) { + var parent4 = parents3[i2]; + if (!parentOk(parent4)) { + return false; + } + } } - }); - - // src/diagrams/er/parser/erDiagram.jison - var parser4, erDiagram_default; - var init_erDiagram = __esm({ - "src/diagrams/er/parser/erDiagram.jison"() { - "use strict"; - parser4 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; - return o3; - }, "o"), $V0 = [6, 8, 10, 22, 24, 26, 28, 33, 34, 35, 36, 37, 40, 43, 44, 50], $V1 = [1, 10], $V2 = [1, 11], $V3 = [1, 12], $V4 = [1, 13], $V5 = [1, 20], $V6 = [1, 21], $V7 = [1, 22], $V8 = [1, 23], $V9 = [1, 24], $Va = [1, 19], $Vb = [1, 25], $Vc = [1, 26], $Vd = [1, 18], $Ve = [1, 33], $Vf = [1, 34], $Vg = [1, 35], $Vh = [1, 36], $Vi = [1, 37], $Vj = [6, 8, 10, 13, 15, 17, 20, 21, 22, 24, 26, 28, 33, 34, 35, 36, 37, 40, 43, 44, 50, 63, 64, 65, 66, 67], $Vk = [1, 42], $Vl = [1, 43], $Vm = [1, 52], $Vn = [40, 50, 68, 69], $Vo = [1, 63], $Vp = [1, 61], $Vq = [1, 58], $Vr = [1, 62], $Vs = [1, 64], $Vt = [6, 8, 10, 13, 17, 22, 24, 26, 28, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 48, 49, 50, 63, 64, 65, 66, 67], $Vu = [63, 64, 65, 66, 67], $Vv = [1, 81], $Vw = [1, 80], $Vx = [1, 78], $Vy = [1, 79], $Vz = [6, 10, 42, 47], $VA = [6, 10, 13, 41, 42, 47, 48, 49], $VB = [1, 89], $VC = [1, 88], $VD = [1, 87], $VE = [19, 56], $VF = [1, 98], $VG = [1, 97], $VH = [19, 56, 58, 60]; - var parser24 = { - trace: /* @__PURE__ */ __name(function trace() { - }, "trace"), - yy: {}, - symbols_: { "error": 2, "start": 3, "ER_DIAGRAM": 4, "document": 5, "EOF": 6, "line": 7, "SPACE": 8, "statement": 9, "NEWLINE": 10, "entityName": 11, "relSpec": 12, "COLON": 13, "role": 14, "STYLE_SEPARATOR": 15, "idList": 16, "BLOCK_START": 17, "attributes": 18, "BLOCK_STOP": 19, "SQS": 20, "SQE": 21, "title": 22, "title_value": 23, "acc_title": 24, "acc_title_value": 25, "acc_descr": 26, "acc_descr_value": 27, "acc_descr_multiline_value": 28, "direction": 29, "classDefStatement": 30, "classStatement": 31, "styleStatement": 32, "direction_tb": 33, "direction_bt": 34, "direction_rl": 35, "direction_lr": 36, "CLASSDEF": 37, "stylesOpt": 38, "separator": 39, "UNICODE_TEXT": 40, "STYLE_TEXT": 41, "COMMA": 42, "CLASS": 43, "STYLE": 44, "style": 45, "styleComponent": 46, "SEMI": 47, "NUM": 48, "BRKT": 49, "ENTITY_NAME": 50, "attribute": 51, "attributeType": 52, "attributeName": 53, "attributeKeyTypeList": 54, "attributeComment": 55, "ATTRIBUTE_WORD": 56, "attributeKeyType": 57, ",": 58, "ATTRIBUTE_KEY": 59, "COMMENT": 60, "cardinality": 61, "relType": 62, "ZERO_OR_ONE": 63, "ZERO_OR_MORE": 64, "ONE_OR_MORE": 65, "ONLY_ONE": 66, "MD_PARENT": 67, "NON_IDENTIFYING": 68, "IDENTIFYING": 69, "WORD": 70, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 4: "ER_DIAGRAM", 6: "EOF", 8: "SPACE", 10: "NEWLINE", 13: "COLON", 15: "STYLE_SEPARATOR", 17: "BLOCK_START", 19: "BLOCK_STOP", 20: "SQS", 21: "SQE", 22: "title", 23: "title_value", 24: "acc_title", 25: "acc_title_value", 26: "acc_descr", 27: "acc_descr_value", 28: "acc_descr_multiline_value", 33: "direction_tb", 34: "direction_bt", 35: "direction_rl", 36: "direction_lr", 37: "CLASSDEF", 40: "UNICODE_TEXT", 41: "STYLE_TEXT", 42: "COMMA", 43: "CLASS", 44: "STYLE", 47: "SEMI", 48: "NUM", 49: "BRKT", 50: "ENTITY_NAME", 56: "ATTRIBUTE_WORD", 58: ",", 59: "ATTRIBUTE_KEY", 60: "COMMENT", 63: "ZERO_OR_ONE", 64: "ZERO_OR_MORE", 65: "ONE_OR_MORE", 66: "ONLY_ONE", 67: "MD_PARENT", 68: "NON_IDENTIFYING", 69: "IDENTIFYING", 70: "WORD" }, - productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 5], [9, 9], [9, 7], [9, 7], [9, 4], [9, 6], [9, 3], [9, 5], [9, 1], [9, 3], [9, 7], [9, 9], [9, 6], [9, 8], [9, 4], [9, 6], [9, 2], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [29, 1], [29, 1], [29, 1], [29, 1], [30, 4], [16, 1], [16, 1], [16, 3], [16, 3], [31, 3], [32, 4], [38, 1], [38, 3], [45, 1], [45, 2], [39, 1], [39, 1], [39, 1], [46, 1], [46, 1], [46, 1], [46, 1], [11, 1], [11, 1], [18, 1], [18, 2], [51, 2], [51, 3], [51, 3], [51, 4], [52, 1], [53, 1], [54, 1], [54, 3], [57, 1], [55, 1], [12, 3], [61, 1], [61, 1], [61, 1], [61, 1], [61, 1], [62, 1], [62, 1], [14, 1], [14, 1], [14, 1]], - performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 1: - break; - case 2: - this.$ = []; - break; - case 3: - $$[$0 - 1].push($$[$0]); - this.$ = $$[$0 - 1]; - break; - case 4: - case 5: - this.$ = $$[$0]; - break; - case 6: - case 7: - this.$ = []; - break; - case 8: - yy.addEntity($$[$0 - 4]); - yy.addEntity($$[$0 - 2]); - yy.addRelationship($$[$0 - 4], $$[$0], $$[$0 - 2], $$[$0 - 3]); - break; - case 9: - yy.addEntity($$[$0 - 8]); - yy.addEntity($$[$0 - 4]); - yy.addRelationship($$[$0 - 8], $$[$0], $$[$0 - 4], $$[$0 - 5]); - yy.setClass([$$[$0 - 8]], $$[$0 - 6]); - yy.setClass([$$[$0 - 4]], $$[$0 - 2]); - break; - case 10: - yy.addEntity($$[$0 - 6]); - yy.addEntity($$[$0 - 2]); - yy.addRelationship($$[$0 - 6], $$[$0], $$[$0 - 2], $$[$0 - 3]); - yy.setClass([$$[$0 - 6]], $$[$0 - 4]); - break; - case 11: - yy.addEntity($$[$0 - 6]); - yy.addEntity($$[$0 - 4]); - yy.addRelationship($$[$0 - 6], $$[$0], $$[$0 - 4], $$[$0 - 5]); - yy.setClass([$$[$0 - 4]], $$[$0 - 2]); - break; - case 12: - yy.addEntity($$[$0 - 3]); - yy.addAttributes($$[$0 - 3], $$[$0 - 1]); - break; - case 13: - yy.addEntity($$[$0 - 5]); - yy.addAttributes($$[$0 - 5], $$[$0 - 1]); - yy.setClass([$$[$0 - 5]], $$[$0 - 3]); - break; - case 14: - yy.addEntity($$[$0 - 2]); - break; - case 15: - yy.addEntity($$[$0 - 4]); - yy.setClass([$$[$0 - 4]], $$[$0 - 2]); - break; - case 16: - yy.addEntity($$[$0]); - break; - case 17: - yy.addEntity($$[$0 - 2]); - yy.setClass([$$[$0 - 2]], $$[$0]); - break; - case 18: - yy.addEntity($$[$0 - 6], $$[$0 - 4]); - yy.addAttributes($$[$0 - 6], $$[$0 - 1]); - break; - case 19: - yy.addEntity($$[$0 - 8], $$[$0 - 6]); - yy.addAttributes($$[$0 - 8], $$[$0 - 1]); - yy.setClass([$$[$0 - 8]], $$[$0 - 3]); - break; - case 20: - yy.addEntity($$[$0 - 5], $$[$0 - 3]); - break; - case 21: - yy.addEntity($$[$0 - 7], $$[$0 - 5]); - yy.setClass([$$[$0 - 7]], $$[$0 - 2]); - break; - case 22: - yy.addEntity($$[$0 - 3], $$[$0 - 1]); - break; - case 23: - yy.addEntity($$[$0 - 5], $$[$0 - 3]); - yy.setClass([$$[$0 - 5]], $$[$0]); - break; - case 24: - case 25: - this.$ = $$[$0].trim(); - yy.setAccTitle(this.$); - break; - case 26: - case 27: - this.$ = $$[$0].trim(); - yy.setAccDescription(this.$); - break; - case 32: - yy.setDirection("TB"); - break; - case 33: - yy.setDirection("BT"); - break; - case 34: - yy.setDirection("RL"); - break; - case 35: - yy.setDirection("LR"); - break; - case 36: - this.$ = $$[$0 - 3]; - yy.addClass($$[$0 - 2], $$[$0 - 1]); - break; - case 37: - case 38: - case 56: - case 64: - this.$ = [$$[$0]]; - break; - case 39: - case 40: - this.$ = $$[$0 - 2].concat([$$[$0]]); - break; - case 41: - this.$ = $$[$0 - 2]; - yy.setClass($$[$0 - 1], $$[$0]); - break; - case 42: - ; - this.$ = $$[$0 - 3]; - yy.addCssStyles($$[$0 - 2], $$[$0 - 1]); - break; - case 43: - this.$ = [$$[$0]]; - break; - case 44: - $$[$0 - 2].push($$[$0]); - this.$ = $$[$0 - 2]; - break; - case 46: - this.$ = $$[$0 - 1] + $$[$0]; - break; - case 54: - case 76: - case 77: - this.$ = $$[$0].replace(/"/g, ""); - break; - case 55: - case 78: - this.$ = $$[$0]; - break; - case 57: - $$[$0].push($$[$0 - 1]); - this.$ = $$[$0]; - break; - case 58: - this.$ = { type: $$[$0 - 1], name: $$[$0] }; - break; - case 59: - this.$ = { type: $$[$0 - 2], name: $$[$0 - 1], keys: $$[$0] }; - break; - case 60: - this.$ = { type: $$[$0 - 2], name: $$[$0 - 1], comment: $$[$0] }; - break; - case 61: - this.$ = { type: $$[$0 - 3], name: $$[$0 - 2], keys: $$[$0 - 1], comment: $$[$0] }; - break; - case 62: - case 63: - case 66: - this.$ = $$[$0]; - break; - case 65: - $$[$0 - 2].push($$[$0]); - this.$ = $$[$0 - 2]; - break; - case 67: - this.$ = $$[$0].replace(/"/g, ""); - break; - case 68: - this.$ = { cardA: $$[$0], relType: $$[$0 - 1], cardB: $$[$0 - 2] }; - break; - case 69: - this.$ = yy.Cardinality.ZERO_OR_ONE; - break; - case 70: - this.$ = yy.Cardinality.ZERO_OR_MORE; - break; - case 71: - this.$ = yy.Cardinality.ONE_OR_MORE; - break; - case 72: - this.$ = yy.Cardinality.ONLY_ONE; - break; - case 73: - this.$ = yy.Cardinality.MD_PARENT; - break; - case 74: - this.$ = yy.Identification.NON_IDENTIFYING; - break; - case 75: - this.$ = yy.Identification.IDENTIFYING; - break; - } - }, "anonymous"), - table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o2($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: 9, 22: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 14, 30: 15, 31: 16, 32: 17, 33: $V5, 34: $V6, 35: $V7, 36: $V8, 37: $V9, 40: $Va, 43: $Vb, 44: $Vc, 50: $Vd }, o2($V0, [2, 7], { 1: [2, 1] }), o2($V0, [2, 3]), { 9: 27, 11: 9, 22: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 14, 30: 15, 31: 16, 32: 17, 33: $V5, 34: $V6, 35: $V7, 36: $V8, 37: $V9, 40: $Va, 43: $Vb, 44: $Vc, 50: $Vd }, o2($V0, [2, 5]), o2($V0, [2, 6]), o2($V0, [2, 16], { 12: 28, 61: 32, 15: [1, 29], 17: [1, 30], 20: [1, 31], 63: $Ve, 64: $Vf, 65: $Vg, 66: $Vh, 67: $Vi }), { 23: [1, 38] }, { 25: [1, 39] }, { 27: [1, 40] }, o2($V0, [2, 27]), o2($V0, [2, 28]), o2($V0, [2, 29]), o2($V0, [2, 30]), o2($V0, [2, 31]), o2($Vj, [2, 54]), o2($Vj, [2, 55]), o2($V0, [2, 32]), o2($V0, [2, 33]), o2($V0, [2, 34]), o2($V0, [2, 35]), { 16: 41, 40: $Vk, 41: $Vl }, { 16: 44, 40: $Vk, 41: $Vl }, { 16: 45, 40: $Vk, 41: $Vl }, o2($V0, [2, 4]), { 11: 46, 40: $Va, 50: $Vd }, { 16: 47, 40: $Vk, 41: $Vl }, { 18: 48, 19: [1, 49], 51: 50, 52: 51, 56: $Vm }, { 11: 53, 40: $Va, 50: $Vd }, { 62: 54, 68: [1, 55], 69: [1, 56] }, o2($Vn, [2, 69]), o2($Vn, [2, 70]), o2($Vn, [2, 71]), o2($Vn, [2, 72]), o2($Vn, [2, 73]), o2($V0, [2, 24]), o2($V0, [2, 25]), o2($V0, [2, 26]), { 13: $Vo, 38: 57, 41: $Vp, 42: $Vq, 45: 59, 46: 60, 48: $Vr, 49: $Vs }, o2($Vt, [2, 37]), o2($Vt, [2, 38]), { 16: 65, 40: $Vk, 41: $Vl, 42: $Vq }, { 13: $Vo, 38: 66, 41: $Vp, 42: $Vq, 45: 59, 46: 60, 48: $Vr, 49: $Vs }, { 13: [1, 67], 15: [1, 68] }, o2($V0, [2, 17], { 61: 32, 12: 69, 17: [1, 70], 42: $Vq, 63: $Ve, 64: $Vf, 65: $Vg, 66: $Vh, 67: $Vi }), { 19: [1, 71] }, o2($V0, [2, 14]), { 18: 72, 19: [2, 56], 51: 50, 52: 51, 56: $Vm }, { 53: 73, 56: [1, 74] }, { 56: [2, 62] }, { 21: [1, 75] }, { 61: 76, 63: $Ve, 64: $Vf, 65: $Vg, 66: $Vh, 67: $Vi }, o2($Vu, [2, 74]), o2($Vu, [2, 75]), { 6: $Vv, 10: $Vw, 39: 77, 42: $Vx, 47: $Vy }, { 40: [1, 82], 41: [1, 83] }, o2($Vz, [2, 43], { 46: 84, 13: $Vo, 41: $Vp, 48: $Vr, 49: $Vs }), o2($VA, [2, 45]), o2($VA, [2, 50]), o2($VA, [2, 51]), o2($VA, [2, 52]), o2($VA, [2, 53]), o2($V0, [2, 41], { 42: $Vq }), { 6: $Vv, 10: $Vw, 39: 85, 42: $Vx, 47: $Vy }, { 14: 86, 40: $VB, 50: $VC, 70: $VD }, { 16: 90, 40: $Vk, 41: $Vl }, { 11: 91, 40: $Va, 50: $Vd }, { 18: 92, 19: [1, 93], 51: 50, 52: 51, 56: $Vm }, o2($V0, [2, 12]), { 19: [2, 57] }, o2($VE, [2, 58], { 54: 94, 55: 95, 57: 96, 59: $VF, 60: $VG }), o2([19, 56, 59, 60], [2, 63]), o2($V0, [2, 22], { 15: [1, 100], 17: [1, 99] }), o2([40, 50], [2, 68]), o2($V0, [2, 36]), { 13: $Vo, 41: $Vp, 45: 101, 46: 60, 48: $Vr, 49: $Vs }, o2($V0, [2, 47]), o2($V0, [2, 48]), o2($V0, [2, 49]), o2($Vt, [2, 39]), o2($Vt, [2, 40]), o2($VA, [2, 46]), o2($V0, [2, 42]), o2($V0, [2, 8]), o2($V0, [2, 76]), o2($V0, [2, 77]), o2($V0, [2, 78]), { 13: [1, 102], 42: $Vq }, { 13: [1, 104], 15: [1, 103] }, { 19: [1, 105] }, o2($V0, [2, 15]), o2($VE, [2, 59], { 55: 106, 58: [1, 107], 60: $VG }), o2($VE, [2, 60]), o2($VH, [2, 64]), o2($VE, [2, 67]), o2($VH, [2, 66]), { 18: 108, 19: [1, 109], 51: 50, 52: 51, 56: $Vm }, { 16: 110, 40: $Vk, 41: $Vl }, o2($Vz, [2, 44], { 46: 84, 13: $Vo, 41: $Vp, 48: $Vr, 49: $Vs }), { 14: 111, 40: $VB, 50: $VC, 70: $VD }, { 16: 112, 40: $Vk, 41: $Vl }, { 14: 113, 40: $VB, 50: $VC, 70: $VD }, o2($V0, [2, 13]), o2($VE, [2, 61]), { 57: 114, 59: $VF }, { 19: [1, 115] }, o2($V0, [2, 20]), o2($V0, [2, 23], { 17: [1, 116], 42: $Vq }), o2($V0, [2, 11]), { 13: [1, 117], 42: $Vq }, o2($V0, [2, 10]), o2($VH, [2, 65]), o2($V0, [2, 18]), { 18: 118, 19: [1, 119], 51: 50, 52: 51, 56: $Vm }, { 14: 120, 40: $VB, 50: $VC, 70: $VD }, { 19: [1, 121] }, o2($V0, [2, 21]), o2($V0, [2, 9]), o2($V0, [2, 19])], - defaultActions: { 52: [2, 62], 72: [2, 57] }, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); - } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; - } - }, "parseError"), - parse: /* @__PURE__ */ __name(function parse7(input) { - var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; - var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k2 in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { - sharedState.yy[k2] = this.yy[k2]; - } - } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; - sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; - } - var yyloc = lexer3.yylloc; - lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n2) { - stack.length = stack.length - 2 * n2; - vstack.length = vstack.length - n2; - lstack.length = lstack.length - n2; - } - __name(popStack, "popStack"); - function lex() { - var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; - if (typeof token2 !== "number") { - if (token2 instanceof Array) { - tstack = token2; - token2 = tstack.pop(); - } - token2 = self2.symbols_[token2] || token2; + return true; + } + function defineDerivedStateFunction(specs) { + var ok = specs.ok; + var edgeOkViaNode = specs.edgeOkViaNode || specs.ok; + var parentOk = specs.parentOk || specs.ok; + return function() { + var cy = this.cy(); + if (!cy.styleEnabled()) { + return true; + } + var ele = this[0]; + var hasCompoundNodes2 = cy.hasCompoundNodes(); + if (ele) { + var _p = ele._private; + if (!ok(ele)) { + return false; + } + if (ele.isNode()) { + return !hasCompoundNodes2 || checkCompound(ele, parentOk); + } else { + var src = _p.source; + var tgt = _p.target; + return edgeOkViaNode(src) && (!hasCompoundNodes2 || checkCompound(src, edgeOkViaNode)) && (src === tgt || edgeOkViaNode(tgt) && (!hasCompoundNodes2 || checkCompound(tgt, edgeOkViaNode))); + } + } + }; + } + function defineSwitchFunction(params) { + return function() { + var args = arguments; + var changedEles = []; + if (args.length === 2) { + var data5 = args[0]; + var handler = args[1]; + this.on(params.event, data5, handler); + } else if (args.length === 1 && fn$6(args[0])) { + var _handler = args[0]; + this.on(params.event, _handler); + } else if (args.length === 0 || args.length === 1 && array2(args[0])) { + var addlEvents = args.length === 1 ? args[0] : null; + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + var able = !params.ableField || ele._private[params.ableField]; + var changed = ele._private[params.field] != params.value; + if (params.overrideAble) { + var overrideAble2 = params.overrideAble(ele); + if (overrideAble2 !== void 0) { + able = overrideAble2; + if (!overrideAble2) { + return this; } - return token2; } - __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; - while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state4] && table[state4][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p3 in table[state4]) { - if (this.terminals_[p3] && p3 > TERROR) { - expected.push("'" + this.terminals_[p3] + "'"); - } - } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); - } - this.parseError(errStr, { - text: lexer3.match, - token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, - loc: yyloc, - expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r2 = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r2 !== "undefined") { - return r2; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState2); - break; - case 3: - return true; - } + } + if (able) { + ele._private[params.field] = params.value; + if (changed) { + changedEles.push(ele); } - return true; - }, "parse") - }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { - EOF: 1, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str2, hash); - } else { - throw new Error(str2); - } - }, "parseError"), - // resets the lexer, sets new input - setInput: /* @__PURE__ */ __name(function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 - }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; - } - this.offset = 0; - return this; - }, "setInput"), - // consumes and returns one char from the input - input: /* @__PURE__ */ __name(function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } - this._input = this._input.slice(1); - return ch; - }, "input"), - // unshifts one char (or a string) into the input - unput: /* @__PURE__ */ __name(function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r2 = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len - }; - if (this.options.ranges) { - this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, "unput"), - // When called from action, caches matched text and appends it on next action - more: /* @__PURE__ */ __name(function() { - this._more = true; - return this; - }, "more"), - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: /* @__PURE__ */ __name(function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - return this; - }, "reject"), - // retain first n characters of the match - less: /* @__PURE__ */ __name(function(n2) { - this.unput(this.match.slice(n2)); - }, "less"), - // displays already matched input, i.e. for error messages - pastInput: /* @__PURE__ */ __name(function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, "pastInput"), - // displays upcoming input, i.e. for error messages - upcomingInput: /* @__PURE__ */ __name(function() { - var next3 = this.match; - if (next3.length < 20) { - next3 += this._input.substr(0, 20 - next3.length); - } - return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, "upcomingInput"), - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: /* @__PURE__ */ __name(function() { - var pre = this.pastInput(); - var c3 = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c3 + "^"; - }, "showPosition"), - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { - var token2, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); - } - } - lines = match2[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length - }; - this.yytext += match2[0]; - this.match += match2[0]; - this.matches = match2; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match2[0].length); - this.matched += match2[0]; - token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token2) { - return token2; - } else if (this._backtrack) { - for (var k2 in backup) { - this[k2] = backup[k2]; - } - return false; - } - return false; - }, "test_match"), - // return next match in input - next: /* @__PURE__ */ __name(function() { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; - } - var token2, match2, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; - } - var rules = this._currentRules(); - for (var i2 = 0; i2 < rules.length; i2++) { - tempMatch = this._input.match(this.rules[rules[i2]]); - if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { - match2 = tempMatch; - index = i2; - if (this.options.backtrack_lexer) { - token2 = this.test_match(tempMatch, rules[i2]); - if (token2 !== false) { - return token2; - } else if (this._backtrack) { - match2 = false; - continue; - } else { - return false; - } - } else if (!this.options.flex) { - break; - } - } - } - if (match2) { - token2 = this.test_match(match2, rules[index]); - if (token2 !== false) { - return token2; - } - return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, "next"), - // return next match that has a token - lex: /* @__PURE__ */ __name(function lex() { - var r2 = this.next(); - if (r2) { - return r2; - } else { - return this.lex(); - } - }, "lex"), - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: /* @__PURE__ */ __name(function begin(condition) { - this.conditionStack.push(condition); - }, "begin"), - // pop the previously active lexer condition state off the condition stack - popState: /* @__PURE__ */ __name(function popState() { - var n2 = this.conditionStack.length - 1; - if (n2 > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, "popState"), - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: /* @__PURE__ */ __name(function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, "_currentRules"), - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: /* @__PURE__ */ __name(function topState(n2) { - n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); - if (n2 >= 0) { - return this.conditionStack[n2]; - } else { - return "INITIAL"; - } - }, "topState"), - // alias for begin(condition) - pushState: /* @__PURE__ */ __name(function pushState(condition) { - this.begin(condition); - }, "pushState"), - // return the number of states currently on the stack - stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { - return this.conditionStack.length; - }, "stateStackSize"), - options: { "case-insensitive": true }, - performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - this.begin("acc_title"); - return 24; - break; - case 1: - this.popState(); - return "acc_title_value"; - break; - case 2: - this.begin("acc_descr"); - return 26; - break; - case 3: - this.popState(); - return "acc_descr_value"; - break; - case 4: - this.begin("acc_descr_multiline"); - break; - case 5: - this.popState(); - break; - case 6: - return "acc_descr_multiline_value"; - break; - case 7: - return 33; - break; - case 8: - return 34; - break; - case 9: - return 35; - break; - case 10: - return 36; - break; - case 11: - return 10; - break; - case 12: - break; - case 13: - return 8; - break; - case 14: - return 50; - break; - case 15: - return 70; - break; - case 16: - return 4; - break; - case 17: - this.begin("block"); - return 17; - break; - case 18: - return 49; - break; - case 19: - return 49; - break; - case 20: - return 42; - break; - case 21: - return 15; - break; - case 22: - return 13; - break; - case 23: - break; - case 24: - return 59; - break; - case 25: - return 56; - break; - case 26: - return 56; - break; - case 27: - return 60; - break; - case 28: - break; - case 29: - this.popState(); - return 19; - break; - case 30: - return yy_.yytext[0]; - break; - case 31: - return 20; - break; - case 32: - return 21; - break; - case 33: - this.begin("style"); - return 44; - break; - case 34: - this.popState(); - return 10; - break; - case 35: - break; - case 36: - return 13; - break; - case 37: - return 42; - break; - case 38: - return 49; - break; - case 39: - this.begin("style"); - return 37; - break; - case 40: - return 43; - break; - case 41: - return 63; - break; - case 42: - return 65; - break; - case 43: - return 65; - break; - case 44: - return 65; - break; - case 45: - return 63; - break; - case 46: - return 63; - break; - case 47: - return 64; - break; - case 48: - return 64; - break; - case 49: - return 64; - break; - case 50: - return 64; - break; - case 51: - return 64; - break; - case 52: - return 65; - break; - case 53: - return 64; - break; - case 54: - return 65; - break; - case 55: - return 66; - break; - case 56: - return 66; - break; - case 57: - return 66; - break; - case 58: - return 66; - break; - case 59: - return 63; - break; - case 60: - return 64; - break; - case 61: - return 65; - break; - case 62: - return 67; - break; - case 63: - return 68; - break; - case 64: - return 69; - break; - case 65: - return 69; - break; - case 66: - return 68; - break; - case 67: - return 68; - break; - case 68: - return 68; - break; - case 69: - return 41; - break; - case 70: - return 47; - break; - case 71: - return 40; - break; - case 72: - return 48; - break; - case 73: - return yy_.yytext[0]; - break; - case 74: - return 6; - break; - } - }, "anonymous"), - rules: [/^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:.*direction\s+TB[^\n]*)/i, /^(?:.*direction\s+BT[^\n]*)/i, /^(?:.*direction\s+RL[^\n]*)/i, /^(?:.*direction\s+LR[^\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:[\s]+)/i, /^(?:"[^"%\r\n\v\b\\]+")/i, /^(?:"[^"]*")/i, /^(?:erDiagram\b)/i, /^(?:\{)/i, /^(?:#)/i, /^(?:#)/i, /^(?:,)/i, /^(?::::)/i, /^(?::)/i, /^(?:\s+)/i, /^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i, /^(?:([^\s]*)[~].*[~]([^\s]*))/i, /^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i, /^(?:"[^"]*")/i, /^(?:[\n]+)/i, /^(?:\})/i, /^(?:.)/i, /^(?:\[)/i, /^(?:\])/i, /^(?:style\b)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?::)/i, /^(?:,)/i, /^(?:#)/i, /^(?:classDef\b)/i, /^(?:class\b)/i, /^(?:one or zero\b)/i, /^(?:one or more\b)/i, /^(?:one or many\b)/i, /^(?:1\+)/i, /^(?:\|o\b)/i, /^(?:zero or one\b)/i, /^(?:zero or more\b)/i, /^(?:zero or many\b)/i, /^(?:0\+)/i, /^(?:\}o\b)/i, /^(?:many\(0\))/i, /^(?:many\(1\))/i, /^(?:many\b)/i, /^(?:\}\|)/i, /^(?:one\b)/i, /^(?:only one\b)/i, /^(?:1\b)/i, /^(?:\|\|)/i, /^(?:o\|)/i, /^(?:o\{)/i, /^(?:\|\{)/i, /^(?:\s*u\b)/i, /^(?:\.\.)/i, /^(?:--)/i, /^(?:to\b)/i, /^(?:optionally to\b)/i, /^(?:\.-)/i, /^(?:-\.)/i, /^(?:([^\x00-\x7F]|\w|-|\*)+)/i, /^(?:;)/i, /^(?:([^\x00-\x7F]|\w|-|\*)+)/i, /^(?:[0-9])/i, /^(?:.)/i, /^(?:$)/i], - conditions: { "style": { "rules": [34, 35, 36, 37, 38, 69, 70], "inclusive": false }, "acc_descr_multiline": { "rules": [5, 6], "inclusive": false }, "acc_descr": { "rules": [3], "inclusive": false }, "acc_title": { "rules": [1], "inclusive": false }, "block": { "rules": [23, 24, 25, 26, 27, 28, 29, 30], "inclusive": false }, "INITIAL": { "rules": [0, 2, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 31, 32, 33, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73, 74], "inclusive": true } } - }; - return lexer3; - }(); - parser24.lexer = lexer2; - function Parser3() { - this.yy = {}; - } - __name(Parser3, "Parser"); - Parser3.prototype = parser24; - parser24.Parser = Parser3; - return new Parser3(); - }(); - parser4.parser = parser4; - erDiagram_default = parser4; - } - }); - - // src/diagrams/er/erDb.ts - var ErDB; - var init_erDb = __esm({ - "src/diagrams/er/erDb.ts"() { - "use strict"; - init_logger(); - init_diagramAPI(); - init_commonDb(); - init_utils2(); - ErDB = class { - constructor() { - this.entities = /* @__PURE__ */ new Map(); - this.relationships = []; - this.classes = /* @__PURE__ */ new Map(); - this.direction = "TB"; - this.Cardinality = { - ZERO_OR_ONE: "ZERO_OR_ONE", - ZERO_OR_MORE: "ZERO_OR_MORE", - ONE_OR_MORE: "ONE_OR_MORE", - ONLY_ONE: "ONLY_ONE", - MD_PARENT: "MD_PARENT" - }; - this.Identification = { - NON_IDENTIFYING: "NON_IDENTIFYING", - IDENTIFYING: "IDENTIFYING" - }; - this.setAccTitle = setAccTitle; - this.getAccTitle = getAccTitle; - this.setAccDescription = setAccDescription; - this.getAccDescription = getAccDescription; - this.setDiagramTitle = setDiagramTitle; - this.getDiagramTitle = getDiagramTitle; - this.getConfig = /* @__PURE__ */ __name(() => getConfig2().er, "getConfig"); - this.clear(); - this.addEntity = this.addEntity.bind(this); - this.addAttributes = this.addAttributes.bind(this); - this.addRelationship = this.addRelationship.bind(this); - this.setDirection = this.setDirection.bind(this); - this.addCssStyles = this.addCssStyles.bind(this); - this.addClass = this.addClass.bind(this); - this.setClass = this.setClass.bind(this); - this.setAccTitle = this.setAccTitle.bind(this); - this.setAccDescription = this.setAccDescription.bind(this); - } - static { - __name(this, "ErDB"); - } - /** - * Add entity - * @param name - The name of the entity - * @param alias - The alias of the entity - */ - addEntity(name, alias = "") { - if (!this.entities.has(name)) { - this.entities.set(name, { - id: `entity-${name}-${this.entities.size}`, - label: name, - attributes: [], - alias, - shape: "erBox", - look: getConfig2().look ?? "default", - cssClasses: "default", - cssStyles: [] - }); - log.info("Added new entity :", name); - } else if (!this.entities.get(name)?.alias && alias) { - this.entities.get(name).alias = alias; - log.info(`Add alias '${alias}' to entity '${name}'`); } - return this.entities.get(name); } - getEntity(name) { - return this.entities.get(name); - } - getEntities() { - return this.entities; + var changedColl = this.spawn(changedEles); + changedColl.updateStyle(); + changedColl.emit(params.event); + if (addlEvents) { + changedColl.emit(addlEvents); } - getClasses() { - return this.classes; + } + return this; + }; + } + function defineSwitchSet(params) { + elesfn$3[params.field] = function() { + var ele = this[0]; + if (ele) { + if (params.overrideField) { + var val = params.overrideField(ele); + if (val !== void 0) { + return val; + } } - addAttributes(entityName, attribs) { - const entity = this.addEntity(entityName); - let i2; - for (i2 = attribs.length - 1; i2 >= 0; i2--) { - if (!attribs[i2].keys) { - attribs[i2].keys = []; - } - if (!attribs[i2].comment) { - attribs[i2].comment = ""; + return ele._private[params.field]; + } + }; + elesfn$3[params.on] = defineSwitchFunction({ + event: params.on, + field: params.field, + ableField: params.ableField, + overrideAble: params.overrideAble, + value: true + }); + elesfn$3[params.off] = defineSwitchFunction({ + event: params.off, + field: params.field, + ableField: params.ableField, + overrideAble: params.overrideAble, + value: false + }); + } + function defineSourceFunction(params) { + return /* @__PURE__ */ __name(function sourceImpl2(selector) { + var sources = []; + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + var src = ele._private[params.attr]; + if (src) { + sources.push(src); + } + } + return this.spawn(sources, true).filter(selector); + }, "sourceImpl"); + } + function defineEdgesWithFunction(params) { + return /* @__PURE__ */ __name(function edgesWithImpl(otherNodes) { + var elements2 = []; + var cy = this._private.cy; + var p3 = params || {}; + if (string(otherNodes)) { + otherNodes = cy.$(otherNodes); + } + for (var h3 = 0; h3 < otherNodes.length; h3++) { + var edges3 = otherNodes[h3]._private.edges; + for (var i2 = 0; i2 < edges3.length; i2++) { + var edge = edges3[i2]; + var edgeData2 = edge._private.data; + var thisToOther = this.hasElementWithId(edgeData2.source) && otherNodes.hasElementWithId(edgeData2.target); + var otherToThis = otherNodes.hasElementWithId(edgeData2.source) && this.hasElementWithId(edgeData2.target); + var edgeConnectsThisAndOther = thisToOther || otherToThis; + if (!edgeConnectsThisAndOther) { + continue; + } + if (p3.thisIsSrc || p3.thisIsTgt) { + if (p3.thisIsSrc && !thisToOther) { + continue; + } + if (p3.thisIsTgt && !otherToThis) { + continue; } - entity.attributes.push(attribs[i2]); - log.debug("Added attribute ", attribs[i2].name); } + elements2.push(edge); } - /** - * Add a relationship - * - * @param entA - The first entity in the relationship - * @param rolA - The role played by the first entity in relation to the second - * @param entB - The second entity in the relationship - * @param rSpec - The details of the relationship between the two entities - */ - addRelationship(entA, rolA, entB, rSpec) { - const entityA = this.entities.get(entA); - const entityB = this.entities.get(entB); - if (!entityA || !entityB) { - return; + } + return this.spawn(elements2, true); + }, "edgesWithImpl"); + } + function defineParallelEdgesFunction(params) { + var defaults4 = { + codirected: false + }; + params = extend4({}, defaults4, params); + return /* @__PURE__ */ __name(function parallelEdgesImpl(selector) { + var elements2 = []; + var edges3 = this.edges(); + var p3 = params; + for (var i2 = 0; i2 < edges3.length; i2++) { + var edge1 = edges3[i2]; + var edge1_p = edge1._private; + var src1 = edge1_p.source; + var srcid1 = src1._private.data.id; + var tgtid1 = edge1_p.data.target; + var srcEdges1 = src1._private.edges; + for (var j3 = 0; j3 < srcEdges1.length; j3++) { + var edge2 = srcEdges1[j3]; + var edge2data = edge2._private.data; + var tgtid2 = edge2data.target; + var srcid2 = edge2data.source; + var codirected = tgtid2 === tgtid1 && srcid2 === srcid1; + var oppdirected = srcid1 === tgtid2 && tgtid1 === srcid2; + if (p3.codirected && codirected || !p3.codirected && (codirected || oppdirected)) { + elements2.push(edge2); } - const rel2 = { - entityA: entityA.id, - roleA: rolA, - entityB: entityB.id, - relSpec: rSpec - }; - this.relationships.push(rel2); - log.debug("Added new relationship :", rel2); - } - getRelationships() { - return this.relationships; } - getDirection() { - return this.direction; + } + return this.spawn(elements2, true).filter(selector); + }, "parallelEdgesImpl"); + } + function generateCubicBezier(mX1, mY1, mX2, mY2) { + var NEWTON_ITERATIONS = 4, NEWTON_MIN_SLOPE = 1e-3, SUBDIVISION_PRECISION = 1e-7, SUBDIVISION_MAX_ITERATIONS = 10, kSplineTableSize = 11, kSampleStepSize = 1 / (kSplineTableSize - 1), float32ArraySupported = typeof Float32Array !== "undefined"; + if (arguments.length !== 4) { + return false; + } + for (var i2 = 0; i2 < 4; ++i2) { + if (typeof arguments[i2] !== "number" || isNaN(arguments[i2]) || !isFinite(arguments[i2])) { + return false; + } + } + mX1 = Math.min(mX1, 1); + mX2 = Math.min(mX2, 1); + mX1 = Math.max(mX1, 0); + mX2 = Math.max(mX2, 0); + var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); + function A2(aA1, aA2) { + return 1 - 3 * aA2 + 3 * aA1; + } + __name(A2, "A"); + function B3(aA1, aA2) { + return 3 * aA2 - 6 * aA1; + } + __name(B3, "B"); + function C3(aA1) { + return 3 * aA1; + } + __name(C3, "C"); + function calcBezier(aT, aA1, aA2) { + return ((A2(aA1, aA2) * aT + B3(aA1, aA2)) * aT + C3(aA1)) * aT; + } + __name(calcBezier, "calcBezier"); + function getSlope(aT, aA1, aA2) { + return 3 * A2(aA1, aA2) * aT * aT + 2 * B3(aA1, aA2) * aT + C3(aA1); + } + __name(getSlope, "getSlope"); + function newtonRaphsonIterate(aX, aGuessT) { + for (var _i = 0; _i < NEWTON_ITERATIONS; ++_i) { + var currentSlope = getSlope(aGuessT, mX1, mX2); + if (currentSlope === 0) { + return aGuessT; } - setDirection(dir2) { - this.direction = dir2; + var currentX = calcBezier(aGuessT, mX1, mX2) - aX; + aGuessT -= currentX / currentSlope; + } + return aGuessT; + } + __name(newtonRaphsonIterate, "newtonRaphsonIterate"); + function calcSampleValues() { + for (var _i2 = 0; _i2 < kSplineTableSize; ++_i2) { + mSampleValues[_i2] = calcBezier(_i2 * kSampleStepSize, mX1, mX2); + } + } + __name(calcSampleValues, "calcSampleValues"); + function binarySubdivide(aX, aA, aB) { + var currentX, currentT, i3 = 0; + do { + currentT = aA + (aB - aA) / 2; + currentX = calcBezier(currentT, mX1, mX2) - aX; + if (currentX > 0) { + aB = currentT; + } else { + aA = currentT; } - getCompiledStyles(classDefs) { - let compiledStyles = []; - for (const customClass of classDefs) { - const cssClass = this.classes.get(customClass); - if (cssClass?.styles) { - compiledStyles = [...compiledStyles, ...cssClass.styles ?? []].map((s2) => s2.trim()); - } - if (cssClass?.textStyles) { - compiledStyles = [...compiledStyles, ...cssClass.textStyles ?? []].map((s2) => s2.trim()); - } - } - return compiledStyles; + } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i3 < SUBDIVISION_MAX_ITERATIONS); + return currentT; + } + __name(binarySubdivide, "binarySubdivide"); + function getTForX(aX) { + var intervalStart = 0, currentSample = 1, lastSample = kSplineTableSize - 1; + for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) { + intervalStart += kSampleStepSize; + } + --currentSample; + var dist3 = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]), guessForT = intervalStart + dist3 * kSampleStepSize, initialSlope = getSlope(guessForT, mX1, mX2); + if (initialSlope >= NEWTON_MIN_SLOPE) { + return newtonRaphsonIterate(aX, guessForT); + } else if (initialSlope === 0) { + return guessForT; + } else { + return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize); + } + } + __name(getTForX, "getTForX"); + var _precomputed = false; + function precompute() { + _precomputed = true; + if (mX1 !== mY1 || mX2 !== mY2) { + calcSampleValues(); + } + } + __name(precompute, "precompute"); + var f2 = /* @__PURE__ */ __name(function f3(aX) { + if (!_precomputed) { + precompute(); + } + if (mX1 === mY1 && mX2 === mY2) { + return aX; + } + if (aX === 0) { + return 0; + } + if (aX === 1) { + return 1; + } + return calcBezier(getTForX(aX), mY1, mY2); + }, "f"); + f2.getControlPoints = function() { + return [{ + x: mX1, + y: mY1 + }, { + x: mX2, + y: mY2 + }]; + }; + var str2 = "generateBezier(" + [mX1, mY1, mX2, mY2] + ")"; + f2.toString = function() { + return str2; + }; + return f2; + } + function getEasedValue(type3, start3, end2, percent, easingFn) { + if (percent === 1) { + return end2; + } + if (start3 === end2) { + return end2; + } + var val = easingFn(start3, end2, percent); + if (type3 == null) { + return val; + } + if (type3.roundValue || type3.color) { + val = Math.round(val); + } + if (type3.min !== void 0) { + val = Math.max(val, type3.min); + } + if (type3.max !== void 0) { + val = Math.min(val, type3.max); + } + return val; + } + function getValue2(prop, spec) { + if (prop.pfValue != null || prop.value != null) { + if (prop.pfValue != null && (spec == null || spec.type.units !== "%")) { + return prop.pfValue; + } else { + return prop.value; + } + } else { + return prop; + } + } + function ease(startProp, endProp, percent, easingFn, propSpec) { + var type3 = propSpec != null ? propSpec.type : null; + if (percent < 0) { + percent = 0; + } else if (percent > 1) { + percent = 1; + } + var start3 = getValue2(startProp, propSpec); + var end2 = getValue2(endProp, propSpec); + if (number$1(start3) && number$1(end2)) { + return getEasedValue(type3, start3, end2, percent, easingFn); + } else if (array2(start3) && array2(end2)) { + var easedArr = []; + for (var i2 = 0; i2 < end2.length; i2++) { + var si = start3[i2]; + var ei = end2[i2]; + if (si != null && ei != null) { + var val = getEasedValue(type3, si, ei, percent, easingFn); + easedArr.push(val); + } else { + easedArr.push(ei); } - addCssStyles(ids, styles4) { - for (const id29 of ids) { - const entity = this.entities.get(id29); - if (!styles4 || !entity) { - return; - } - for (const style3 of styles4) { - entity.cssStyles.push(style3); - } - } + } + return easedArr; + } + return void 0; + } + function step$1(self2, ani, now3, isCore) { + var isEles = !isCore; + var _p = self2._private; + var ani_p = ani._private; + var pEasing = ani_p.easing; + var startTime = ani_p.startTime; + var cy = isCore ? self2 : self2.cy(); + var style3 = cy.style(); + if (!ani_p.easingImpl) { + if (pEasing == null) { + ani_p.easingImpl = easings["linear"]; + } else { + var easingVals; + if (string(pEasing)) { + var easingProp = style3.parse("transition-timing-function", pEasing); + easingVals = easingProp.value; + } else { + easingVals = pEasing; } - addClass(ids, style3) { - ids.forEach((id29) => { - let classNode = this.classes.get(id29); - if (classNode === void 0) { - classNode = { id: id29, styles: [], textStyles: [] }; - this.classes.set(id29, classNode); - } - if (style3) { - style3.forEach(function(s2) { - if (/color/.exec(s2)) { - const newStyle = s2.replace("fill", "bgFill"); - classNode.textStyles.push(newStyle); - } - classNode.styles.push(s2); - }); - } + var name, args; + if (string(easingVals)) { + name = easingVals; + args = []; + } else { + name = easingVals[1]; + args = easingVals.slice(2).map(function(n2) { + return +n2; }); } - setClass(ids, classNames) { - for (const id29 of ids) { - const entity = this.entities.get(id29); - if (entity) { - for (const className of classNames) { - entity.cssClasses += " " + className; - } - } + if (args.length > 0) { + if (name === "spring") { + args.push(ani_p.duration); } + ani_p.easingImpl = easings[name].apply(null, args); + } else { + ani_p.easingImpl = easings[name]; } - clear() { - this.entities = /* @__PURE__ */ new Map(); - this.classes = /* @__PURE__ */ new Map(); - this.relationships = []; - clear(); + } + } + var easing = ani_p.easingImpl; + var percent; + if (ani_p.duration === 0) { + percent = 1; + } else { + percent = (now3 - startTime) / ani_p.duration; + } + if (ani_p.applying) { + percent = ani_p.progress; + } + if (percent < 0) { + percent = 0; + } else if (percent > 1) { + percent = 1; + } + if (ani_p.delay == null) { + var startPos = ani_p.startPosition; + var endPos = ani_p.position; + if (endPos && isEles && !self2.locked()) { + var newPos = {}; + if (valid(startPos.x, endPos.x)) { + newPos.x = ease(startPos.x, endPos.x, percent, easing); } - getData() { - const nodes6 = []; - const edges3 = []; - const config5 = getConfig2(); - for (const entityKey of this.entities.keys()) { - const entityNode = this.entities.get(entityKey); - if (entityNode) { - entityNode.cssCompiledStyles = this.getCompiledStyles(entityNode.cssClasses.split(" ")); - nodes6.push(entityNode); - } - } - let count = 0; - for (const relationship of this.relationships) { - const edge = { - id: getEdgeId(relationship.entityA, relationship.entityB, { - prefix: "id", - counter: count++ - }), - type: "normal", - curve: "basis", - start: relationship.entityA, - end: relationship.entityB, - label: relationship.roleA, - labelpos: "c", - thickness: "normal", - classes: "relationshipLine", - arrowTypeStart: relationship.relSpec.cardB.toLowerCase(), - arrowTypeEnd: relationship.relSpec.cardA.toLowerCase(), - pattern: relationship.relSpec.relType == "IDENTIFYING" ? "solid" : "dashed", - look: config5.look - }; - edges3.push(edge); - } - return { nodes: nodes6, edges: edges3, other: {}, config: config5, direction: "TB" }; + if (valid(startPos.y, endPos.y)) { + newPos.y = ease(startPos.y, endPos.y, percent, easing); } - }; - } - }); - - // src/diagrams/er/erRenderer-unified.ts - var erRenderer_unified_exports = {}; - __export(erRenderer_unified_exports, { - draw: () => draw3 - }); - var draw3; - var init_erRenderer_unified = __esm({ - "src/diagrams/er/erRenderer-unified.ts"() { - "use strict"; - init_diagramAPI(); - init_logger(); - init_insertElementsForSize(); - init_render(); - init_setupViewPortForSVG(); - init_utils2(); - init_src32(); - draw3 = /* @__PURE__ */ __name(async function(text4, id29, _version, diag) { - log.info("REF0:"); - log.info("Drawing er diagram (unified)", id29); - const { securityLevel, er: conf5, layout: layout6 } = getConfig2(); - const data4Layout = diag.db.getData(); - const svg2 = getDiagramElement(id29, securityLevel); - data4Layout.type = diag.type; - data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout6); - data4Layout.config.flowchart.nodeSpacing = conf5?.nodeSpacing || 140; - data4Layout.config.flowchart.rankSpacing = conf5?.rankSpacing || 80; - data4Layout.direction = diag.db.getDirection(); - data4Layout.markers = ["only_one", "zero_or_one", "one_or_more", "zero_or_more"]; - data4Layout.diagramId = id29; - await render4(data4Layout, svg2); - if (data4Layout.layoutAlgorithm === "elk") { - svg2.select(".edges").lower(); + self2.position(newPos); + } + var startPan = ani_p.startPan; + var endPan = ani_p.pan; + var pan2 = _p.pan; + var animatingPan = endPan != null && isCore; + if (animatingPan) { + if (valid(startPan.x, endPan.x)) { + pan2.x = ease(startPan.x, endPan.x, percent, easing); } - const backgroundNodes = svg2.selectAll('[id*="-background"]'); - if (Array.from(backgroundNodes).length > 0) { - backgroundNodes.each(function() { - const backgroundNode = select_default2(this); - const backgroundId = backgroundNode.attr("id"); - const nonBackgroundId = backgroundId.replace("-background", ""); - const nonBackgroundNode = svg2.select(`#${CSS.escape(nonBackgroundId)}`); - if (!nonBackgroundNode.empty()) { - const transform8 = nonBackgroundNode.attr("transform"); - backgroundNode.attr("transform", transform8); - } - }); + if (valid(startPan.y, endPan.y)) { + pan2.y = ease(startPan.y, endPan.y, percent, easing); } - const padding2 = 8; - utils_default2.insertTitle( - svg2, - "erDiagramTitleText", - conf5?.titleTopMargin ?? 25, - diag.db.getDiagramTitle() - ); - setupViewPortForSVG(svg2, padding2, "erDiagram", conf5?.useMaxWidth ?? true); - }, "draw"); + self2.emit("pan"); + } + var startZoom = ani_p.startZoom; + var endZoom = ani_p.zoom; + var animatingZoom = endZoom != null && isCore; + if (animatingZoom) { + if (valid(startZoom, endZoom)) { + _p.zoom = bound(_p.minZoom, ease(startZoom, endZoom, percent, easing), _p.maxZoom); + } + self2.emit("zoom"); + } + if (animatingPan || animatingZoom) { + self2.emit("viewport"); + } + var props = ani_p.style; + if (props && props.length > 0 && isEles) { + for (var i2 = 0; i2 < props.length; i2++) { + var prop = props[i2]; + var _name = prop.name; + var end2 = prop; + var start3 = ani_p.startStyle[_name]; + var propSpec = style3.properties[start3.name]; + var easedVal = ease(start3, end2, percent, easing, propSpec); + style3.overrideBypass(self2, _name, easedVal); + } + self2.emit("style"); + } } - }); - - // src/diagrams/er/styles.ts - var fade2, getStyles4, styles_default4; - var init_styles4 = __esm({ - "src/diagrams/er/styles.ts"() { - "use strict"; - init_dist(); - fade2 = /* @__PURE__ */ __name((color2, opacity) => { - const channel2 = channel_default2; - const r2 = channel2(color2, "r"); - const g2 = channel2(color2, "g"); - const b2 = channel2(color2, "b"); - return rgba_default(r2, g2, b2, opacity); - }, "fade"); - getStyles4 = /* @__PURE__ */ __name((options3) => ` - .entityBox { - fill: ${options3.mainBkg}; - stroke: ${options3.nodeBorder}; + ani_p.progress = percent; + return percent; } - - .relationshipLabelBox { - fill: ${options3.tertiaryColor}; - opacity: 0.7; - background-color: ${options3.tertiaryColor}; - rect { - opacity: 0.5; + function valid(start3, end2) { + if (start3 == null || end2 == null) { + return false; + } + if (number$1(start3) && number$1(end2)) { + return true; + } else if (start3 && end2) { + return true; + } + return false; + } + function startAnimation(self2, ani, now3, isCore) { + var ani_p = ani._private; + ani_p.started = true; + ani_p.startTime = now3 - ani_p.progress * ani_p.duration; + } + function stepAll(now3, cy) { + var eles = cy._private.aniEles; + var doneEles = []; + function stepOne(ele2, isCore) { + var _p = ele2._private; + var current = _p.animation.current; + var queue = _p.animation.queue; + var ranAnis = false; + if (current.length === 0) { + var next3 = queue.shift(); + if (next3) { + current.push(next3); + } + } + var callbacks = /* @__PURE__ */ __name(function callbacks2(_callbacks) { + for (var j3 = _callbacks.length - 1; j3 >= 0; j3--) { + var cb = _callbacks[j3]; + cb(); + } + _callbacks.splice(0, _callbacks.length); + }, "callbacks"); + for (var i2 = current.length - 1; i2 >= 0; i2--) { + var ani = current[i2]; + var ani_p = ani._private; + if (ani_p.stopped) { + current.splice(i2, 1); + ani_p.hooked = false; + ani_p.playing = false; + ani_p.started = false; + callbacks(ani_p.frames); + continue; + } + if (!ani_p.playing && !ani_p.applying) { + continue; + } + if (ani_p.playing && ani_p.applying) { + ani_p.applying = false; + } + if (!ani_p.started) { + startAnimation(ele2, ani, now3); + } + step$1(ele2, ani, now3, isCore); + if (ani_p.applying) { + ani_p.applying = false; + } + callbacks(ani_p.frames); + if (ani_p.step != null) { + ani_p.step(now3); + } + if (ani.completed()) { + current.splice(i2, 1); + ani_p.hooked = false; + ani_p.playing = false; + ani_p.started = false; + callbacks(ani_p.completes); + } + ranAnis = true; + } + if (!isCore && current.length === 0 && queue.length === 0) { + doneEles.push(ele2); + } + return ranAnis; + } + __name(stepOne, "stepOne"); + var ranEleAni = false; + for (var e3 = 0; e3 < eles.length; e3++) { + var ele = eles[e3]; + var handledThisEle = stepOne(ele); + ranEleAni = ranEleAni || handledThisEle; + } + var ranCoreAni = stepOne(cy, true); + if (ranEleAni || ranCoreAni) { + if (eles.length > 0) { + cy.notify("draw", eles); + } else { + cy.notify("draw"); } + } + eles.unmerge(doneEles); + cy.emit("step"); } - - .labelBkg { - background-color: ${fade2(options3.tertiaryColor, 0.5)}; + function BreadthFirstLayout(options2) { + this.options = extend4({}, defaults$7, deprecatedOptionDefaults, options2); } - - .edgeLabel .label { - fill: ${options3.nodeBorder}; - font-size: 14px; + function CircleLayout(options2) { + this.options = extend4({}, defaults$6, options2); } - - .label { - font-family: ${options3.fontFamily}; - color: ${options3.nodeTextColor || options3.textColor}; + function ConcentricLayout(options2) { + this.options = extend4({}, defaults$5, options2); } - - .edge-pattern-dashed { - stroke-dasharray: 8,8; + function CoseLayout(options2) { + this.options = extend4({}, defaults$4, options2); + this.options.layout = this; + var nodes5 = this.options.eles.nodes(); + var edges3 = this.options.eles.edges(); + var notEdges = edges3.filter(function(e3) { + var sourceId = e3.source().data("id"); + var targetId = e3.target().data("id"); + var hasSource = nodes5.some(function(n2) { + return n2.data("id") === sourceId; + }); + var hasTarget = nodes5.some(function(n2) { + return n2.data("id") === targetId; + }); + return !hasSource || !hasTarget; + }); + this.options.eles = this.options.eles.not(notEdges); } - - .node rect, - .node circle, - .node ellipse, - .node polygon - { - fill: ${options3.mainBkg}; - stroke: ${options3.nodeBorder}; - stroke-width: 1px; + function GridLayout(options2) { + this.options = extend4({}, defaults$3, options2); } - - .relationshipLine { - stroke: ${options3.lineColor}; - stroke-width: 1; - fill: none; + function NullLayout(options2) { + this.options = extend4({}, defaults$2, options2); } - - .marker { - fill: none !important; - stroke: ${options3.lineColor} !important; - stroke-width: 1; + function PresetLayout(options2) { + this.options = extend4({}, defaults$1, options2); } -`, "getStyles"); - styles_default4 = getStyles4; - } - }); - - // src/diagrams/er/erDiagram.ts - var erDiagram_exports = {}; - __export(erDiagram_exports, { - diagram: () => diagram3 - }); - var diagram3; - var init_erDiagram2 = __esm({ - "src/diagrams/er/erDiagram.ts"() { - "use strict"; - init_erDiagram(); - init_erDb(); - init_erRenderer_unified(); - init_styles4(); - diagram3 = { - parser: erDiagram_default, - get db() { - return new ErDB(); - }, - renderer: erRenderer_unified_exports, - styles: styles_default4 - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/syntax-tree.js - function isAstNode(obj) { - return typeof obj === "object" && obj !== null && typeof obj.$type === "string"; + function RandomLayout(options2) { + this.options = extend4({}, defaults3, options2); } - function isReference(obj) { - return typeof obj === "object" && obj !== null && typeof obj.$refText === "string"; + function NullRenderer(options2) { + this.options = options2; + this.notifications = 0; } - function isAstNodeDescription(obj) { - return typeof obj === "object" && obj !== null && typeof obj.name === "string" && typeof obj.type === "string" && typeof obj.path === "string"; + function drawPreparedRoundCorner(ctx, roundCorner) { + if (roundCorner.radius === 0) ctx.lineTo(roundCorner.cx, roundCorner.cy); + else ctx.arc(roundCorner.cx, roundCorner.cy, roundCorner.radius, roundCorner.startAngle, roundCorner.endAngle, roundCorner.counterClockwise); } - function isLinkingError(obj) { - return typeof obj === "object" && obj !== null && isAstNode(obj.container) && isReference(obj.reference) && typeof obj.message === "string"; + function getRoundCorner(previousPoint, currentPoint, nextPoint, radiusMax) { + var isArcRadius = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true; + if (radiusMax === 0 || currentPoint.radius === 0) return { + cx: currentPoint.x, + cy: currentPoint.y, + radius: 0, + startX: currentPoint.x, + startY: currentPoint.y, + stopX: currentPoint.x, + stopY: currentPoint.y, + startAngle: void 0, + endAngle: void 0, + counterClockwise: void 0 + }; + calcCornerArc(previousPoint, currentPoint, nextPoint, radiusMax, isArcRadius); + return { + cx: x3, + cy: y4, + radius: cRadius, + startX, + startY, + stopX, + stopY, + startAngle: v1.ang + Math.PI / 2 * radDirection, + endAngle: v22.ang - Math.PI / 2 * radDirection, + counterClockwise: drawDirection + }; } - function isCompositeCstNode(node2) { - return typeof node2 === "object" && node2 !== null && Array.isArray(node2.content); + function getPts(pts2) { + var retPts = []; + if (pts2 == null) { + return; + } + for (var i2 = 0; i2 < pts2.length; i2 += 2) { + var x5 = pts2[i2]; + var y6 = pts2[i2 + 1]; + retPts.push({ + x: x5, + y: y6 + }); + } + return retPts; } - function isLeafCstNode(node2) { - return typeof node2 === "object" && node2 !== null && typeof node2.tokenType === "object"; + function pushBezierPts(r2, edge, pts2) { + var qbezierAt$1 = /* @__PURE__ */ __name(function qbezierAt$12(p1, p22, p32, t4) { + return qbezierAt(p1, p22, p32, t4); + }, "qbezierAt$1"); + var _p = edge._private; + var bpts = _p.rstyle.bezierPts; + for (var i2 = 0; i2 < r2.bezierProjPcts.length; i2++) { + var p3 = r2.bezierProjPcts[i2]; + bpts.push({ + x: qbezierAt$1(pts2[0], pts2[2], pts2[4], p3), + y: qbezierAt$1(pts2[1], pts2[3], pts2[5], p3) + }); + } } - function isRootCstNode(node2) { - return isCompositeCstNode(node2) && typeof node2.fullText === "string"; + function polygon(context, points) { + for (var i2 = 0; i2 < points.length; i2++) { + var pt = points[i2]; + context.lineTo(pt.x, pt.y); + } } - var AbstractAstReflection; - var init_syntax_tree = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/syntax-tree.js"() { - "use strict"; - __name(isAstNode, "isAstNode"); - __name(isReference, "isReference"); - __name(isAstNodeDescription, "isAstNodeDescription"); - __name(isLinkingError, "isLinkingError"); - AbstractAstReflection = class { - static { - __name(this, "AbstractAstReflection"); - } - constructor() { - this.subtypes = {}; - this.allSubtypes = {}; - } - isInstance(node2, type3) { - return isAstNode(node2) && this.isSubtype(node2.$type, type3); - } - isSubtype(subtype, supertype) { - if (subtype === supertype) { - return true; - } - let nested = this.subtypes[subtype]; - if (!nested) { - nested = this.subtypes[subtype] = {}; - } - const existing = nested[supertype]; - if (existing !== void 0) { - return existing; - } else { - const result = this.computeIsSubtype(subtype, supertype); - nested[supertype] = result; - return result; - } - } - getAllSubTypes(type3) { - const existing = this.allSubtypes[type3]; - if (existing) { - return existing; - } else { - const allTypes = this.getAllTypes(); - const types = []; - for (const possibleSubType of allTypes) { - if (this.isSubtype(possibleSubType, type3)) { - types.push(possibleSubType); - } - } - this.allSubtypes[type3] = types; - return types; - } - } - }; - __name(isCompositeCstNode, "isCompositeCstNode"); - __name(isLeafCstNode, "isLeafCstNode"); - __name(isRootCstNode, "isRootCstNode"); + function triangleBackcurve(context, points, controlPoint) { + var firstPt; + for (var i2 = 0; i2 < points.length; i2++) { + var pt = points[i2]; + if (i2 === 0) { + firstPt = pt; + } + context.lineTo(pt.x, pt.y); } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/stream.js - function toString3(item) { - if (typeof item === "string") { - return item; + context.quadraticCurveTo(controlPoint.x, controlPoint.y, firstPt.x, firstPt.y); + } + function triangleTee(context, trianglePoints, teePoints) { + if (context.beginPath) { + context.beginPath(); } - if (typeof item === "undefined") { - return "undefined"; + var triPts = trianglePoints; + for (var i2 = 0; i2 < triPts.length; i2++) { + var pt = triPts[i2]; + context.lineTo(pt.x, pt.y); } - if (typeof item.toString === "function") { - return item.toString(); + var teePts = teePoints; + var firstTeePt = teePoints[0]; + context.moveTo(firstTeePt.x, firstTeePt.y); + for (var i2 = 1; i2 < teePts.length; i2++) { + var pt = teePts[i2]; + context.lineTo(pt.x, pt.y); + } + if (context.closePath) { + context.closePath(); } - return Object.prototype.toString.call(item); } - function isIterable(obj) { - return !!obj && typeof obj[Symbol.iterator] === "function"; + function circleTriangle(context, trianglePoints, rx, ry, r2) { + if (context.beginPath) { + context.beginPath(); + } + context.arc(rx, ry, r2, 0, Math.PI * 2, false); + var triPts = trianglePoints; + var firstTrPt = triPts[0]; + context.moveTo(firstTrPt.x, firstTrPt.y); + for (var i2 = 0; i2 < triPts.length; i2++) { + var pt = triPts[i2]; + context.lineTo(pt.x, pt.y); + } + if (context.closePath) { + context.closePath(); + } } - function stream(...collections) { - if (collections.length === 1) { - const collection4 = collections[0]; - if (collection4 instanceof StreamImpl) { - return collection4; - } - if (isIterable(collection4)) { - return new StreamImpl(() => collection4[Symbol.iterator](), (iterator) => iterator.next()); + function circle$1(context, rx, ry, r2) { + context.arc(rx, ry, r2, 0, Math.PI * 2, false); + } + function circle3(ctx, x5, y6, width3, height2) { + var diameter = Math.min(width3, height2); + var radius2 = diameter / 2; + var centerX = x5 + width3 / 2; + var centerY = y6 + height2 / 2; + ctx.beginPath(); + ctx.arc(centerX, centerY, radius2, 0, Math.PI * 2); + ctx.closePath(); + } + function roundRect(ctx, x5, y6, width3, height2) { + var radius2 = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : 5; + var r2 = Math.min(radius2, width3 / 2, height2 / 2); + ctx.beginPath(); + ctx.moveTo(x5 + r2, y6); + ctx.lineTo(x5 + width3 - r2, y6); + ctx.quadraticCurveTo(x5 + width3, y6, x5 + width3, y6 + r2); + ctx.lineTo(x5 + width3, y6 + height2 - r2); + ctx.quadraticCurveTo(x5 + width3, y6 + height2, x5 + width3 - r2, y6 + height2); + ctx.lineTo(x5 + r2, y6 + height2); + ctx.quadraticCurveTo(x5, y6 + height2, x5, y6 + height2 - r2); + ctx.lineTo(x5, y6 + r2); + ctx.quadraticCurveTo(x5, y6, x5 + r2, y6); + ctx.closePath(); + } + function compileShader(gl, type3, source) { + var shader = gl.createShader(type3); + gl.shaderSource(shader, source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + throw new Error(gl.getShaderInfoLog(shader)); + } + return shader; + } + function createProgram(gl, vertexSource, fragementSource) { + var vertexShader = compileShader(gl, gl.VERTEX_SHADER, vertexSource); + var fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, fragementSource); + var program = gl.createProgram(); + gl.attachShader(program, vertexShader); + gl.attachShader(program, fragmentShader); + gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + throw new Error("Could not initialize shaders"); + } + return program; + } + function createTextureCanvas(r2, width3, height2) { + if (height2 === void 0) { + height2 = width3; + } + var canvas = r2.makeOffscreenCanvas(width3, height2); + var ctx = canvas.context = canvas.getContext("2d"); + canvas.clear = function() { + return ctx.clearRect(0, 0, canvas.width, canvas.height); + }; + canvas.clear(); + return canvas; + } + function getEffectivePanZoom(r2) { + var pixelRatio = r2.pixelRatio; + var zoom2 = r2.cy.zoom(); + var pan2 = r2.cy.pan(); + return { + zoom: zoom2 * pixelRatio, + pan: { + x: pan2.x * pixelRatio, + y: pan2.y * pixelRatio } - if (typeof collection4.length === "number") { - return new StreamImpl(() => ({ index: 0 }), (state4) => { - if (state4.index < collection4.length) { - return { done: false, value: collection4[state4.index++] }; - } else { - return DONE_RESULT; - } - }); + }; + } + function getEffectiveZoom(r2) { + var pixelRatio = r2.pixelRatio; + var zoom2 = r2.cy.zoom(); + return zoom2 * pixelRatio; + } + function modelToRenderedPosition2(r2, pan2, zoom2, x5, y6) { + var rx = x5 * zoom2 + pan2.x; + var ry = y6 * zoom2 + pan2.y; + ry = Math.round(r2.canvasHeight - ry); + return [rx, ry]; + } + function isSimpleShape(node2) { + if (node2.pstyle("background-fill").value !== "solid") return false; + if (node2.pstyle("background-image").strValue !== "none") return false; + if (node2.pstyle("border-width").value === 0) return true; + if (node2.pstyle("border-opacity").value === 0) return true; + if (node2.pstyle("border-style").value !== "solid") return false; + return true; + } + function arrayEqual(a1, a2) { + if (a1.length !== a2.length) { + return false; + } + for (var i2 = 0; i2 < a1.length; i2++) { + if (a1[i2] !== a2[i2]) { + return false; } } - if (collections.length > 1) { - return new StreamImpl(() => ({ collIndex: 0, arrIndex: 0 }), (state4) => { - do { - if (state4.iterator) { - const next3 = state4.iterator.next(); - if (!next3.done) { - return next3; - } - state4.iterator = void 0; - } - if (state4.array) { - if (state4.arrIndex < state4.array.length) { - return { done: false, value: state4.array[state4.arrIndex++] }; - } - state4.array = void 0; - state4.arrIndex = 0; - } - if (state4.collIndex < collections.length) { - const collection4 = collections[state4.collIndex++]; - if (isIterable(collection4)) { - state4.iterator = collection4[Symbol.iterator](); - } else if (collection4 && typeof collection4.length === "number") { - state4.array = collection4; - } - } - } while (state4.iterator || state4.array || state4.collIndex < collections.length); - return DONE_RESULT; - }); + return true; + } + function toWebGLColor(color2, opacity, outArray) { + var r2 = color2[0] / 255; + var g2 = color2[1] / 255; + var b3 = color2[2] / 255; + var a2 = opacity; + var arr = outArray || new Array(4); + arr[0] = r2 * a2; + arr[1] = g2 * a2; + arr[2] = b3 * a2; + arr[3] = a2; + return arr; + } + function indexToVec4(index, outArray) { + var arr = outArray || new Array(4); + arr[0] = (index >> 0 & 255) / 255; + arr[1] = (index >> 8 & 255) / 255; + arr[2] = (index >> 16 & 255) / 255; + arr[3] = (index >> 24 & 255) / 255; + return arr; + } + function vec4ToIndex(vec4) { + return vec4[0] + (vec4[1] << 8) + (vec4[2] << 16) + (vec4[3] << 24); + } + function createTexture(gl, debugID) { + var texture = gl.createTexture(); + texture.buffer = function(offscreenCanvas) { + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, offscreenCanvas); + gl.generateMipmap(gl.TEXTURE_2D); + gl.bindTexture(gl.TEXTURE_2D, null); + }; + texture.deleteTexture = function() { + gl.deleteTexture(texture); + }; + return texture; + } + function getTypeInfo(gl, glslType) { + switch (glslType) { + case "float": + return [1, gl.FLOAT, 4]; + case "vec2": + return [2, gl.FLOAT, 4]; + case "vec3": + return [3, gl.FLOAT, 4]; + case "vec4": + return [4, gl.FLOAT, 4]; + case "int": + return [1, gl.INT, 4]; + case "ivec2": + return [2, gl.INT, 4]; } - return EMPTY_STREAM; } - var StreamImpl, EMPTY_STREAM, DONE_RESULT, TreeStreamImpl, Reduction; - var init_stream = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/stream.js"() { - "use strict"; - StreamImpl = class _StreamImpl { - static { - __name(this, "StreamImpl"); - } - constructor(startFn, nextFn) { - this.startFn = startFn; - this.nextFn = nextFn; - } - iterator() { - const iterator = { - state: this.startFn(), - next: /* @__PURE__ */ __name(() => this.nextFn(iterator.state), "next"), - [Symbol.iterator]: () => iterator - }; - return iterator; - } - [Symbol.iterator]() { - return this.iterator(); - } - isEmpty() { - const iterator = this.iterator(); - return Boolean(iterator.next().done); - } - count() { - const iterator = this.iterator(); - let count = 0; - let next3 = iterator.next(); - while (!next3.done) { - count++; - next3 = iterator.next(); - } - return count; - } - toArray() { - const result = []; - const iterator = this.iterator(); - let next3; - do { - next3 = iterator.next(); - if (next3.value !== void 0) { - result.push(next3.value); - } - } while (!next3.done); - return result; - } - toSet() { - return new Set(this); - } - toMap(keyFn, valueFn) { - const entryStream = this.map((element3) => [ - keyFn ? keyFn(element3) : element3, - valueFn ? valueFn(element3) : element3 - ]); - return new Map(entryStream); - } - toString() { - return this.join(); - } - concat(other2) { - return new _StreamImpl(() => ({ first: this.startFn(), firstDone: false, iterator: other2[Symbol.iterator]() }), (state4) => { - let result; - if (!state4.firstDone) { - do { - result = this.nextFn(state4.first); - if (!result.done) { - return result; - } - } while (!result.done); - state4.firstDone = true; - } - do { - result = state4.iterator.next(); - if (!result.done) { - return result; - } - } while (!result.done); - return DONE_RESULT; - }); - } - join(separator = ",") { - const iterator = this.iterator(); - let value2 = ""; - let result; - let addSeparator = false; - do { - result = iterator.next(); - if (!result.done) { - if (addSeparator) { - value2 += separator; - } - value2 += toString3(result.value); - } - addSeparator = true; - } while (!result.done); - return value2; - } - indexOf(searchElement, fromIndex = 0) { - const iterator = this.iterator(); - let index = 0; - let next3 = iterator.next(); - while (!next3.done) { - if (index >= fromIndex && next3.value === searchElement) { - return index; - } - next3 = iterator.next(); - index++; - } - return -1; - } - every(predicate) { - const iterator = this.iterator(); - let next3 = iterator.next(); - while (!next3.done) { - if (!predicate(next3.value)) { - return false; - } - next3 = iterator.next(); - } - return true; - } - some(predicate) { - const iterator = this.iterator(); - let next3 = iterator.next(); - while (!next3.done) { - if (predicate(next3.value)) { - return true; - } - next3 = iterator.next(); - } - return false; - } - forEach(callbackfn) { - const iterator = this.iterator(); - let index = 0; - let next3 = iterator.next(); - while (!next3.done) { - callbackfn(next3.value, index); - next3 = iterator.next(); - index++; - } - } - map(callbackfn) { - return new _StreamImpl(this.startFn, (state4) => { - const { done, value: value2 } = this.nextFn(state4); - if (done) { - return DONE_RESULT; - } else { - return { done: false, value: callbackfn(value2) }; - } - }); - } - filter(predicate) { - return new _StreamImpl(this.startFn, (state4) => { - let result; - do { - result = this.nextFn(state4); - if (!result.done && predicate(result.value)) { - return result; - } - } while (!result.done); - return DONE_RESULT; - }); - } - nonNullable() { - return this.filter((e3) => e3 !== void 0 && e3 !== null); - } - reduce(callbackfn, initialValue) { - const iterator = this.iterator(); - let previousValue = initialValue; - let next3 = iterator.next(); - while (!next3.done) { - if (previousValue === void 0) { - previousValue = next3.value; - } else { - previousValue = callbackfn(previousValue, next3.value); - } - next3 = iterator.next(); - } - return previousValue; - } - reduceRight(callbackfn, initialValue) { - return this.recursiveReduce(this.iterator(), callbackfn, initialValue); - } - recursiveReduce(iterator, callbackfn, initialValue) { - const next3 = iterator.next(); - if (next3.done) { - return initialValue; - } - const previousValue = this.recursiveReduce(iterator, callbackfn, initialValue); - if (previousValue === void 0) { - return next3.value; - } - return callbackfn(previousValue, next3.value); - } - find(predicate) { - const iterator = this.iterator(); - let next3 = iterator.next(); - while (!next3.done) { - if (predicate(next3.value)) { - return next3.value; - } - next3 = iterator.next(); - } - return void 0; - } - findIndex(predicate) { - const iterator = this.iterator(); - let index = 0; - let next3 = iterator.next(); - while (!next3.done) { - if (predicate(next3.value)) { - return index; - } - next3 = iterator.next(); - index++; - } - return -1; - } - includes(searchElement) { - const iterator = this.iterator(); - let next3 = iterator.next(); - while (!next3.done) { - if (next3.value === searchElement) { - return true; - } - next3 = iterator.next(); - } - return false; - } - flatMap(callbackfn) { - return new _StreamImpl(() => ({ this: this.startFn() }), (state4) => { - do { - if (state4.iterator) { - const next3 = state4.iterator.next(); - if (next3.done) { - state4.iterator = void 0; - } else { - return next3; - } - } - const { done, value: value2 } = this.nextFn(state4.this); - if (!done) { - const mapped = callbackfn(value2); - if (isIterable(mapped)) { - state4.iterator = mapped[Symbol.iterator](); - } else { - return { done: false, value: mapped }; - } - } - } while (state4.iterator); - return DONE_RESULT; - }); - } - flat(depth) { - if (depth === void 0) { - depth = 1; - } - if (depth <= 0) { - return this; - } - const stream2 = depth > 1 ? this.flat(depth - 1) : this; - return new _StreamImpl(() => ({ this: stream2.startFn() }), (state4) => { - do { - if (state4.iterator) { - const next3 = state4.iterator.next(); - if (next3.done) { - state4.iterator = void 0; - } else { - return next3; - } - } - const { done, value: value2 } = stream2.nextFn(state4.this); - if (!done) { - if (isIterable(value2)) { - state4.iterator = value2[Symbol.iterator](); - } else { - return { done: false, value: value2 }; - } - } - } while (state4.iterator); - return DONE_RESULT; - }); - } - head() { - const iterator = this.iterator(); - const result = iterator.next(); - if (result.done) { - return void 0; - } - return result.value; - } - tail(skipCount = 1) { - return new _StreamImpl(() => { - const state4 = this.startFn(); - for (let i2 = 0; i2 < skipCount; i2++) { - const next3 = this.nextFn(state4); - if (next3.done) { - return state4; - } - } - return state4; - }, this.nextFn); - } - limit(maxSize) { - return new _StreamImpl(() => ({ size: 0, state: this.startFn() }), (state4) => { - state4.size++; - if (state4.size > maxSize) { - return DONE_RESULT; - } - return this.nextFn(state4.state); - }); - } - distinct(by) { - return new _StreamImpl(() => ({ set: /* @__PURE__ */ new Set(), internalState: this.startFn() }), (state4) => { - let result; - do { - result = this.nextFn(state4.internalState); - if (!result.done) { - const value2 = by ? by(result.value) : result.value; - if (!state4.set.has(value2)) { - state4.set.add(value2); - return result; - } - } - } while (!result.done); - return DONE_RESULT; - }); - } - exclude(other2, key) { - const otherKeySet = /* @__PURE__ */ new Set(); - for (const item of other2) { - const value2 = key ? key(item) : item; - otherKeySet.add(value2); - } - return this.filter((e3) => { - const ownKey = key ? key(e3) : e3; - return !otherKeySet.has(ownKey); - }); - } - }; - __name(toString3, "toString"); - __name(isIterable, "isIterable"); - EMPTY_STREAM = new StreamImpl(() => void 0, () => DONE_RESULT); - DONE_RESULT = Object.freeze({ done: true, value: void 0 }); - __name(stream, "stream"); - TreeStreamImpl = class extends StreamImpl { - static { - __name(this, "TreeStreamImpl"); - } - constructor(root4, children2, options3) { - super(() => ({ - iterators: (options3 === null || options3 === void 0 ? void 0 : options3.includeRoot) ? [[root4][Symbol.iterator]()] : [children2(root4)[Symbol.iterator]()], - pruned: false - }), (state4) => { - if (state4.pruned) { - state4.iterators.pop(); - state4.pruned = false; - } - while (state4.iterators.length > 0) { - const iterator = state4.iterators[state4.iterators.length - 1]; - const next3 = iterator.next(); - if (next3.done) { - state4.iterators.pop(); - } else { - state4.iterators.push(children2(next3.value)[Symbol.iterator]()); - return next3; - } - } - return DONE_RESULT; - }); - } - iterator() { - const iterator = { - state: this.startFn(), - next: /* @__PURE__ */ __name(() => this.nextFn(iterator.state), "next"), - prune: /* @__PURE__ */ __name(() => { - iterator.state.pruned = true; - }, "prune"), - [Symbol.iterator]: () => iterator - }; - return iterator; - } - }; - (function(Reduction2) { - function sum2(stream2) { - return stream2.reduce((a2, b2) => a2 + b2, 0); - } - __name(sum2, "sum"); - Reduction2.sum = sum2; - function product(stream2) { - return stream2.reduce((a2, b2) => a2 * b2, 0); - } - __name(product, "product"); - Reduction2.product = product; - function min9(stream2) { - return stream2.reduce((a2, b2) => Math.min(a2, b2)); - } - __name(min9, "min"); - Reduction2.min = min9; - function max10(stream2) { - return stream2.reduce((a2, b2) => Math.max(a2, b2)); - } - __name(max10, "max"); - Reduction2.max = max10; - })(Reduction || (Reduction = {})); + function createTypedArray(gl, glType, dataOrSize) { + switch (glType) { + case gl.FLOAT: + return new Float32Array(dataOrSize); + case gl.INT: + return new Int32Array(dataOrSize); } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/cst-utils.js - var cst_utils_exports = {}; - __export(cst_utils_exports, { - DefaultNameRegexp: () => DefaultNameRegexp, - RangeComparison: () => RangeComparison, - compareRange: () => compareRange, - findCommentNode: () => findCommentNode, - findDeclarationNodeAtOffset: () => findDeclarationNodeAtOffset, - findLeafNodeAtOffset: () => findLeafNodeAtOffset, - findLeafNodeBeforeOffset: () => findLeafNodeBeforeOffset, - flattenCst: () => flattenCst, - getInteriorNodes: () => getInteriorNodes, - getNextNode: () => getNextNode, - getPreviousNode: () => getPreviousNode, - getStartlineNode: () => getStartlineNode, - inRange: () => inRange, - isChildNode: () => isChildNode, - isCommentNode: () => isCommentNode, - streamCst: () => streamCst, - toDocumentSegment: () => toDocumentSegment, - tokenToRange: () => tokenToRange - }); - function streamCst(node2) { - return new TreeStreamImpl(node2, (element3) => { - if (isCompositeCstNode(element3)) { - return element3.content; - } else { - return []; - } - }, { includeRoot: true }); } - function flattenCst(node2) { - return streamCst(node2).filter(isLeafCstNode); + function createTypedArrayView(gl, glType, array4, stride, size4, i2) { + switch (glType) { + case gl.FLOAT: + return new Float32Array(array4.buffer, i2 * stride, size4); + case gl.INT: + return new Int32Array(array4.buffer, i2 * stride, size4); + } } - function isChildNode(child, parent4) { - while (child.container) { - child = child.container; - if (child === parent4) { - return true; - } + function createBufferStaticDraw(gl, type3, attributeLoc, dataArray) { + var _getTypeInfo = getTypeInfo(gl, type3), _getTypeInfo2 = _slicedToArray(_getTypeInfo, 2), size4 = _getTypeInfo2[0], glType = _getTypeInfo2[1]; + var data5 = createTypedArray(gl, glType, dataArray); + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, data5, gl.STATIC_DRAW); + if (glType === gl.FLOAT) { + gl.vertexAttribPointer(attributeLoc, size4, glType, false, 0, 0); + } else if (glType === gl.INT) { + gl.vertexAttribIPointer(attributeLoc, size4, glType, 0, 0); } - return false; + gl.enableVertexAttribArray(attributeLoc); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + return buffer; } - function tokenToRange(token2) { - return { - start: { - character: token2.startColumn - 1, - line: token2.startLine - 1 - }, - end: { - character: token2.endColumn, - // endColumn uses the correct index - line: token2.endLine - 1 + function createBufferDynamicDraw(gl, instances, type3, attributeLoc) { + var _getTypeInfo3 = getTypeInfo(gl, type3), _getTypeInfo4 = _slicedToArray(_getTypeInfo3, 3), size4 = _getTypeInfo4[0], glType = _getTypeInfo4[1], bytes = _getTypeInfo4[2]; + var dataArray = createTypedArray(gl, glType, instances * size4); + var stride = size4 * bytes; + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, instances * stride, gl.DYNAMIC_DRAW); + gl.enableVertexAttribArray(attributeLoc); + if (glType === gl.FLOAT) { + gl.vertexAttribPointer(attributeLoc, size4, glType, false, stride, 0); + } else if (glType === gl.INT) { + gl.vertexAttribIPointer(attributeLoc, size4, glType, stride, 0); + } + gl.vertexAttribDivisor(attributeLoc, 1); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + var views = new Array(instances); + for (var i2 = 0; i2 < instances; i2++) { + views[i2] = createTypedArrayView(gl, glType, dataArray, stride, size4, i2); + } + buffer.dataArray = dataArray; + buffer.stride = stride; + buffer.size = size4; + buffer.getView = function(i3) { + return views[i3]; + }; + buffer.setPoint = function(i3, x5, y6) { + var view = views[i3]; + view[0] = x5; + view[1] = y6; + }; + buffer.bufferSubData = function(count2) { + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + if (count2) { + gl.bufferSubData(gl.ARRAY_BUFFER, 0, dataArray, 0, count2 * size4); + } else { + gl.bufferSubData(gl.ARRAY_BUFFER, 0, dataArray); } }; + return buffer; } - function toDocumentSegment(node2) { - if (!node2) { - return void 0; + function create3x3MatrixBufferDynamicDraw(gl, instances, attributeLoc) { + var matrixSize = 9; + var matrixData = new Float32Array(instances * matrixSize); + var matrixViews = new Array(instances); + for (var i2 = 0; i2 < instances; i2++) { + var byteOffset = i2 * matrixSize * 4; + matrixViews[i2] = new Float32Array(matrixData.buffer, byteOffset, matrixSize); } - const { offset, end: end2, range: range3 } = node2; - return { - range: range3, - offset, - end: end2, - length: end2 - offset + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, matrixData.byteLength, gl.DYNAMIC_DRAW); + for (var _i = 0; _i < 3; _i++) { + var loc = attributeLoc + _i; + gl.enableVertexAttribArray(loc); + gl.vertexAttribPointer(loc, 3, gl.FLOAT, false, 3 * 12, _i * 12); + gl.vertexAttribDivisor(loc, 1); + } + gl.bindBuffer(gl.ARRAY_BUFFER, null); + buffer.getMatrixView = function(i3) { + return matrixViews[i3]; + }; + buffer.setData = function(matrix, i3) { + matrixViews[i3].set(matrix, 0); }; + buffer.bufferSubData = function() { + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferSubData(gl.ARRAY_BUFFER, 0, matrixData); + }; + return buffer; } - function compareRange(range3, to) { - if (range3.end.line < to.start.line || range3.end.line === to.start.line && range3.end.character <= to.start.character) { - return RangeComparison.Before; - } else if (range3.start.line > to.end.line || range3.start.line === to.end.line && range3.start.character >= to.end.character) { - return RangeComparison.After; - } - const startInside = range3.start.line > to.start.line || range3.start.line === to.start.line && range3.start.character >= to.start.character; - const endInside = range3.end.line < to.end.line || range3.end.line === to.end.line && range3.end.character <= to.end.character; - if (startInside && endInside) { - return RangeComparison.Inside; - } else if (startInside) { - return RangeComparison.OverlapBack; - } else if (endInside) { - return RangeComparison.OverlapFront; - } else { - return RangeComparison.Outside; + function createPickingFrameBuffer(gl) { + var fb = gl.createFramebuffer(); + gl.bindFramebuffer(gl.FRAMEBUFFER, fb); + var targetTexture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, targetTexture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, targetTexture, 0); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + fb.setFramebufferAttachmentSizes = function(width3, height2) { + gl.bindTexture(gl.TEXTURE_2D, targetTexture); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width3, height2, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); + }; + return fb; + } + function create3() { + var out = new ARRAY_TYPE(9); + if (ARRAY_TYPE != Float32Array) { + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[5] = 0; + out[6] = 0; + out[7] = 0; } + out[0] = 1; + out[4] = 1; + out[8] = 1; + return out; } - function inRange(range3, to) { - const comparison = compareRange(range3, to); - return comparison > RangeComparison.After; + function identity6(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 1; + out[5] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 1; + return out; } - function findDeclarationNodeAtOffset(cstNode, offset, nameRegexp = DefaultNameRegexp) { - if (cstNode) { - if (offset > 0) { - const localOffset = offset - cstNode.offset; - const textAtOffset = cstNode.text.charAt(localOffset); - if (!nameRegexp.test(textAtOffset)) { - offset--; - } - } - return findLeafNodeAtOffset(cstNode, offset); - } - return void 0; + function multiply(out, a2, b3) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2]; + var a10 = a2[3], a11 = a2[4], a12 = a2[5]; + var a20 = a2[6], a21 = a2[7], a22 = a2[8]; + var b00 = b3[0], b01 = b3[1], b02 = b3[2]; + var b10 = b3[3], b11 = b3[4], b12 = b3[5]; + var b20 = b3[6], b21 = b3[7], b22 = b3[8]; + out[0] = b00 * a00 + b01 * a10 + b02 * a20; + out[1] = b00 * a01 + b01 * a11 + b02 * a21; + out[2] = b00 * a02 + b01 * a12 + b02 * a22; + out[3] = b10 * a00 + b11 * a10 + b12 * a20; + out[4] = b10 * a01 + b11 * a11 + b12 * a21; + out[5] = b10 * a02 + b11 * a12 + b12 * a22; + out[6] = b20 * a00 + b21 * a10 + b22 * a20; + out[7] = b20 * a01 + b21 * a11 + b22 * a21; + out[8] = b20 * a02 + b21 * a12 + b22 * a22; + return out; } - function findCommentNode(cstNode, commentNames) { - if (cstNode) { - const previous = getPreviousNode(cstNode, true); - if (previous && isCommentNode(previous, commentNames)) { - return previous; - } - if (isRootCstNode(cstNode)) { - const endIndex = cstNode.content.findIndex((e3) => !e3.hidden); - for (let i2 = endIndex - 1; i2 >= 0; i2--) { - const child = cstNode.content[i2]; - if (isCommentNode(child, commentNames)) { - return child; + function translate(out, a2, v3) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2], a10 = a2[3], a11 = a2[4], a12 = a2[5], a20 = a2[6], a21 = a2[7], a22 = a2[8], x5 = v3[0], y6 = v3[1]; + out[0] = a00; + out[1] = a01; + out[2] = a02; + out[3] = a10; + out[4] = a11; + out[5] = a12; + out[6] = x5 * a00 + y6 * a10 + a20; + out[7] = x5 * a01 + y6 * a11 + a21; + out[8] = x5 * a02 + y6 * a12 + a22; + return out; + } + function rotate(out, a2, rad) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2], a10 = a2[3], a11 = a2[4], a12 = a2[5], a20 = a2[6], a21 = a2[7], a22 = a2[8], s2 = Math.sin(rad), c3 = Math.cos(rad); + out[0] = c3 * a00 + s2 * a10; + out[1] = c3 * a01 + s2 * a11; + out[2] = c3 * a02 + s2 * a12; + out[3] = c3 * a10 - s2 * a00; + out[4] = c3 * a11 - s2 * a01; + out[5] = c3 * a12 - s2 * a02; + out[6] = a20; + out[7] = a21; + out[8] = a22; + return out; + } + function scale(out, a2, v3) { + var x5 = v3[0], y6 = v3[1]; + out[0] = x5 * a2[0]; + out[1] = x5 * a2[1]; + out[2] = x5 * a2[2]; + out[3] = y6 * a2[3]; + out[4] = y6 * a2[4]; + out[5] = y6 * a2[5]; + out[6] = a2[6]; + out[7] = a2[7]; + out[8] = a2[8]; + return out; + } + function projection(out, width3, height2) { + out[0] = 2 / width3; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = -2 / height2; + out[5] = 0; + out[6] = -1; + out[7] = 1; + out[8] = 1; + return out; + } + function intersection2(set1, set22) { + if (set1.intersection) return set1.intersection(set22); + else return new Set(_toConsumableArray(set1).filter(function(x5) { + return set22.has(x5); + })); + } + function getBGColor(r2) { + var container2 = r2.cy.container(); + var cssColor = container2 && container2.style && container2.style.backgroundColor || "white"; + return color2tuple(cssColor); + } + function getLabelLines(ele, prefix) { + var rs = ele._private.rscratch; + return getPrefixedProperty(rs, "labelWrapCachedLines", prefix) || []; + } + function overrideCanvasRendererFunctions(r2) { + { + var renderCanvas = r2.render; + r2.render = function(options2) { + options2 = options2 || {}; + var cy = r2.cy; + if (r2.webgl) { + if (cy.zoom() > maxZoom$1) { + clearWebgl(r2); + renderCanvas.call(r2, options2); + } else { + clearCanvas(r2); + renderWebgl(r2, options2, RENDER_TARGET.SCREEN); } } - } + }; + } + { + var baseFunc = r2.matchCanvasSize; + r2.matchCanvasSize = function(container2) { + baseFunc.call(r2, container2); + r2.pickingFrameBuffer.setFramebufferAttachmentSizes(r2.canvasWidth, r2.canvasHeight); + r2.pickingFrameBuffer.needsDraw = true; + }; + } + { + r2.findNearestElements = function(x5, y6, interactiveElementsOnly, isTouch) { + return findNearestElementsWebgl(r2, x5, y6); + }; + } + { + var _baseFunc = r2.invalidateCachedZSortedEles; + r2.invalidateCachedZSortedEles = function() { + _baseFunc.call(r2); + r2.pickingFrameBuffer.needsDraw = true; + }; + } + { + var _baseFunc2 = r2.notify; + r2.notify = function(eventName, eles) { + _baseFunc2.call(r2, eventName, eles); + if (eventName === "viewport" || eventName === "bounds") { + r2.pickingFrameBuffer.needsDraw = true; + } else if (eventName === "background") { + r2.drawing.invalidate(eles, { + type: "node-body" + }); + } + }; } - return void 0; } - function isCommentNode(cstNode, commentNames) { - return isLeafCstNode(cstNode) && commentNames.includes(cstNode.tokenType.name); + function clearWebgl(r2) { + var gl = r2.data.contexts[r2.WEBGL]; + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); } - function findLeafNodeAtOffset(node2, offset) { - if (isLeafCstNode(node2)) { - return node2; - } else if (isCompositeCstNode(node2)) { - const searchResult = binarySearch(node2, offset, false); - if (searchResult) { - return findLeafNodeAtOffset(searchResult, offset); - } - } - return void 0; + function clearCanvas(r2) { + var clear19 = /* @__PURE__ */ __name(function clear20(context) { + context.save(); + context.setTransform(1, 0, 0, 1, 0, 0); + context.clearRect(0, 0, r2.canvasWidth, r2.canvasHeight); + context.restore(); + }, "clear"); + clear19(r2.data.contexts[r2.NODE]); + clear19(r2.data.contexts[r2.DRAG]); } - function findLeafNodeBeforeOffset(node2, offset) { - if (isLeafCstNode(node2)) { - return node2; - } else if (isCompositeCstNode(node2)) { - const searchResult = binarySearch(node2, offset, true); - if (searchResult) { - return findLeafNodeBeforeOffset(searchResult, offset); - } - } - return void 0; + function createPanZoomMatrix(r2) { + var width3 = r2.canvasWidth; + var height2 = r2.canvasHeight; + var _util$getEffectivePan = getEffectivePanZoom(r2), pan2 = _util$getEffectivePan.pan, zoom2 = _util$getEffectivePan.zoom; + var transform8 = create3(); + translate(transform8, transform8, [pan2.x, pan2.y]); + scale(transform8, transform8, [zoom2, zoom2]); + var projection$1 = create3(); + projection(projection$1, width3, height2); + var product = create3(); + multiply(product, projection$1, transform8); + return product; } - function binarySearch(node2, offset, closest) { - let left3 = 0; - let right3 = node2.content.length - 1; - let closestNode = void 0; - while (left3 <= right3) { - const middle = Math.floor((left3 + right3) / 2); - const middleNode = node2.content[middle]; - if (middleNode.offset <= offset && middleNode.end > offset) { - return middleNode; + function setContextTransform(r2, context) { + var width3 = r2.canvasWidth; + var height2 = r2.canvasHeight; + var _util$getEffectivePan2 = getEffectivePanZoom(r2), pan2 = _util$getEffectivePan2.pan, zoom2 = _util$getEffectivePan2.zoom; + context.setTransform(1, 0, 0, 1, 0, 0); + context.clearRect(0, 0, width3, height2); + context.translate(pan2.x, pan2.y); + context.scale(zoom2, zoom2); + } + function drawSelectionRectangle(r2, options2) { + r2.drawSelectionRectangle(options2, function(context) { + return setContextTransform(r2, context); + }); + } + function drawAxes(r2) { + var context = r2.data.contexts[r2.NODE]; + context.save(); + setContextTransform(r2, context); + context.strokeStyle = "rgba(0, 0, 0, 0.3)"; + context.beginPath(); + context.moveTo(-1e3, 0); + context.lineTo(1e3, 0); + context.stroke(); + context.beginPath(); + context.moveTo(0, -1e3); + context.lineTo(0, 1e3); + context.stroke(); + context.restore(); + } + function drawAtlases(r2) { + var draw26 = /* @__PURE__ */ __name(function draw27(drawing, name, row) { + var collection4 = drawing.atlasManager.getAtlasCollection(name); + var context = r2.data.contexts[r2.NODE]; + var atlases = collection4.atlases; + for (var _i = 0; _i < atlases.length; _i++) { + var atlas = atlases[_i]; + var canvas = atlas.canvas; + if (canvas) { + var w4 = canvas.width; + var h3 = canvas.height; + var x5 = w4 * _i; + var y6 = canvas.height * row; + var scale2 = 0.4; + context.save(); + context.scale(scale2, scale2); + context.drawImage(canvas, x5, y6); + context.strokeStyle = "black"; + context.rect(x5, y6, w4, h3); + context.stroke(); + context.restore(); + } } - if (middleNode.end <= offset) { - closestNode = closest ? middleNode : void 0; - left3 = middle + 1; - } else { - right3 = middle - 1; + }, "draw"); + var i2 = 0; + draw26(r2.drawing, "node", i2++); + draw26(r2.drawing, "label", i2++); + } + function getPickingIndexes(r2, mX1, mY1, mX2, mY2) { + var x5, y6, w4, h3; + var _util$getEffectivePan3 = getEffectivePanZoom(r2), pan2 = _util$getEffectivePan3.pan, zoom2 = _util$getEffectivePan3.zoom; + { + var _util$modelToRendered = modelToRenderedPosition2(r2, pan2, zoom2, mX1, mY1), _util$modelToRendered2 = _slicedToArray(_util$modelToRendered, 2), cX1 = _util$modelToRendered2[0], cY1 = _util$modelToRendered2[1]; + var t4 = 6; + x5 = cX1 - t4 / 2; + y6 = cY1 - t4 / 2; + w4 = t4; + h3 = t4; + } + if (w4 === 0 || h3 === 0) { + return []; + } + var gl = r2.data.contexts[r2.WEBGL]; + gl.bindFramebuffer(gl.FRAMEBUFFER, r2.pickingFrameBuffer); + if (r2.pickingFrameBuffer.needsDraw) { + gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); + renderWebgl(r2, null, RENDER_TARGET.PICKING); + r2.pickingFrameBuffer.needsDraw = false; + } + var n2 = w4 * h3; + var data5 = new Uint8Array(n2 * 4); + gl.readPixels(x5, y6, w4, h3, gl.RGBA, gl.UNSIGNED_BYTE, data5); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + var indexes = /* @__PURE__ */ new Set(); + for (var i2 = 0; i2 < n2; i2++) { + var pixel = data5.slice(i2 * 4, i2 * 4 + 4); + var index = vec4ToIndex(pixel) - 1; + if (index >= 0) { + indexes.add(index); } } - return closestNode; + return indexes; } - function getPreviousNode(node2, hidden = true) { - while (node2.container) { - const parent4 = node2.container; - let index = parent4.content.indexOf(node2); - while (index > 0) { - index--; - const previous = parent4.content[index]; - if (hidden || !previous.hidden) { - return previous; + function findNearestElementsWebgl(r2, x5, y6) { + var indexes = getPickingIndexes(r2, x5, y6); + var eles = r2.getCachedZSortedEles(); + var node2, edge; + var _iterator = _createForOfIteratorHelper(indexes), _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done; ) { + var index = _step.value; + var ele = eles[index]; + if (!node2 && ele.isNode()) { + node2 = ele; + } + if (!edge && ele.isEdge()) { + edge = ele; + } + if (node2 && edge) { + break; } } - node2 = parent4; + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } - return void 0; + return [node2, edge].filter(Boolean); } - function getNextNode(node2, hidden = true) { - while (node2.container) { - const parent4 = node2.container; - let index = parent4.content.indexOf(node2); - const last3 = parent4.content.length - 1; - while (index < last3) { - index++; - const next3 = parent4.content[index]; - if (hidden || !next3.hidden) { - return next3; - } - } - node2 = parent4; + function drawEle(r2, index, ele) { + var drawing = r2.drawing; + index += 1; + if (ele.isNode()) { + drawing.drawNode(ele, index, "node-underlay"); + drawing.drawNode(ele, index, "node-body"); + drawing.drawTexture(ele, index, "label"); + drawing.drawNode(ele, index, "node-overlay"); + } else { + drawing.drawEdgeLine(ele, index); + drawing.drawEdgeArrow(ele, index, "source"); + drawing.drawEdgeArrow(ele, index, "target"); + drawing.drawTexture(ele, index, "label"); + drawing.drawTexture(ele, index, "edge-source-label"); + drawing.drawTexture(ele, index, "edge-target-label"); } - return void 0; } - function getStartlineNode(node2) { - if (node2.range.start.character === 0) { - return node2; + function renderWebgl(r2, options2, renderTarget) { + var start3; + if (r2.webglDebug) { + start3 = performance.now(); } - const line2 = node2.range.start.line; - let last3 = node2; - let index; - while (node2.container) { - const parent4 = node2.container; - const selfIndex = index !== null && index !== void 0 ? index : parent4.content.indexOf(node2); - if (selfIndex === 0) { - node2 = parent4; - index = void 0; + var drawing = r2.drawing; + var eleCount = 0; + if (renderTarget.screen) { + if (r2.data.canvasNeedsRedraw[r2.SELECT_BOX]) { + drawSelectionRectangle(r2, options2); + } + } + if (r2.data.canvasNeedsRedraw[r2.NODE] || renderTarget.picking) { + var gl = r2.data.contexts[r2.WEBGL]; + if (renderTarget.screen) { + gl.clearColor(0, 0, 0, 0); + gl.enable(gl.BLEND); + gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); } else { - index = selfIndex - 1; - node2 = parent4.content[index]; + gl.disable(gl.BLEND); } - if (node2.range.start.line !== line2) { - break; + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); + gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); + var panZoomMatrix = createPanZoomMatrix(r2); + var eles = r2.getCachedZSortedEles(); + eleCount = eles.length; + drawing.startFrame(panZoomMatrix, renderTarget); + if (renderTarget.screen) { + for (var i2 = 0; i2 < eles.nondrag.length; i2++) { + drawEle(r2, i2, eles.nondrag[i2]); + } + for (var _i2 = 0; _i2 < eles.drag.length; _i2++) { + drawEle(r2, _i2, eles.drag[_i2]); + } + } else if (renderTarget.picking) { + for (var _i3 = 0; _i3 < eles.length; _i3++) { + drawEle(r2, _i3, eles[_i3]); + } } - last3 = node2; - } - return last3; - } - function getInteriorNodes(start3, end2) { - const commonParent = getCommonParent(start3, end2); - if (!commonParent) { - return []; + drawing.endFrame(); + if (renderTarget.screen && r2.webglDebugShowAtlases) { + drawAxes(r2); + drawAtlases(r2); + } + r2.data.canvasNeedsRedraw[r2.NODE] = false; + r2.data.canvasNeedsRedraw[r2.DRAG] = false; } - return commonParent.parent.content.slice(commonParent.a + 1, commonParent.b); - } - function getCommonParent(a2, b2) { - const aParents = getParentChain(a2); - const bParents = getParentChain(b2); - let current; - for (let i2 = 0; i2 < aParents.length && i2 < bParents.length; i2++) { - const aParent = aParents[i2]; - const bParent = bParents[i2]; - if (aParent.parent === bParent.parent) { - current = { - parent: aParent.parent, - a: aParent.index, - b: bParent.index - }; + if (r2.webglDebug) { + var end2 = performance.now(); + var compact2 = false; + var time4 = Math.ceil(end2 - start3); + var debugInfo = drawing.getDebugInfo(); + var report = ["".concat(eleCount, " elements"), "".concat(debugInfo.totalInstances, " instances"), "".concat(debugInfo.batchCount, " batches"), "".concat(debugInfo.totalAtlases, " atlases"), "".concat(debugInfo.wrappedCount, " wrapped textures"), "".concat(debugInfo.simpleCount, " simple shapes")].join(", "); + if (compact2) { + console.log("WebGL (".concat(renderTarget.name, ") - time ").concat(time4, "ms, ").concat(report)); } else { - break; + console.log("WebGL (".concat(renderTarget.name, ") - frame time ").concat(time4, "ms")); + console.log("Totals:"); + console.log(" ".concat(report)); + console.log("Texture Atlases Used:"); + var atlasInfo = debugInfo.atlasInfo; + var _iterator2 = _createForOfIteratorHelper(atlasInfo), _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { + var info2 = _step2.value; + console.log(" ".concat(info2.type, ": ").concat(info2.keyCount, " keys, ").concat(info2.atlasCount, " atlases")); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + console.log(""); } } - return current; + if (r2.data.gc) { + console.log("Garbage Collect!"); + r2.data.gc = false; + drawing.gc(); + } } - function getParentChain(node2) { - const chain = []; - while (node2.container) { - const parent4 = node2.container; - const index = parent4.content.indexOf(node2); - chain.push({ - parent: parent4, - index - }); - node2 = parent4; + function b64ToBlob(b64, mimeType) { + var bytes = atob(b64); + var buff = new ArrayBuffer(bytes.length); + var buffUint8 = new Uint8Array(buff); + for (var i2 = 0; i2 < bytes.length; i2++) { + buffUint8[i2] = bytes.charCodeAt(i2); } - return chain.reverse(); + return new Blob([buff], { + type: mimeType + }); } - var RangeComparison, DefaultNameRegexp; - var init_cst_utils = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/cst-utils.js"() { - "use strict"; - init_syntax_tree(); - init_stream(); - __name(streamCst, "streamCst"); - __name(flattenCst, "flattenCst"); - __name(isChildNode, "isChildNode"); - __name(tokenToRange, "tokenToRange"); - __name(toDocumentSegment, "toDocumentSegment"); - (function(RangeComparison2) { - RangeComparison2[RangeComparison2["Before"] = 0] = "Before"; - RangeComparison2[RangeComparison2["After"] = 1] = "After"; - RangeComparison2[RangeComparison2["OverlapFront"] = 2] = "OverlapFront"; - RangeComparison2[RangeComparison2["OverlapBack"] = 3] = "OverlapBack"; - RangeComparison2[RangeComparison2["Inside"] = 4] = "Inside"; - RangeComparison2[RangeComparison2["Outside"] = 5] = "Outside"; - })(RangeComparison || (RangeComparison = {})); - __name(compareRange, "compareRange"); - __name(inRange, "inRange"); - DefaultNameRegexp = /^[\w\p{L}]$/u; - __name(findDeclarationNodeAtOffset, "findDeclarationNodeAtOffset"); - __name(findCommentNode, "findCommentNode"); - __name(isCommentNode, "isCommentNode"); - __name(findLeafNodeAtOffset, "findLeafNodeAtOffset"); - __name(findLeafNodeBeforeOffset, "findLeafNodeBeforeOffset"); - __name(binarySearch, "binarySearch"); - __name(getPreviousNode, "getPreviousNode"); - __name(getNextNode, "getNextNode"); - __name(getStartlineNode, "getStartlineNode"); - __name(getInteriorNodes, "getInteriorNodes"); - __name(getCommonParent, "getCommonParent"); - __name(getParentChain, "getParentChain"); + function b64UriToB64(b64uri) { + var i2 = b64uri.indexOf(","); + return b64uri.substr(i2 + 1); + } + function output(options2, canvas, mimeType) { + var getB64Uri = /* @__PURE__ */ __name(function getB64Uri2() { + return canvas.toDataURL(mimeType, options2.quality); + }, "getB64Uri"); + switch (options2.output) { + case "blob-promise": + return new Promise$1(function(resolve2, reject3) { + try { + canvas.toBlob(function(blob) { + if (blob != null) { + resolve2(blob); + } else { + reject3(new Error("`canvas.toBlob()` sent a null value in its callback")); + } + }, mimeType, options2.quality); + } catch (err) { + reject3(err); + } + }); + case "blob": + return b64ToBlob(b64UriToB64(getB64Uri()), mimeType); + case "base64": + return b64UriToB64(getB64Uri()); + case "base64uri": + default: + return getB64Uri(); } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/errors.js - function assertUnreachable(_2) { - throw new Error("Error! The input value was not handled."); } - var ErrorWithLocation; - var init_errors2 = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/errors.js"() { - "use strict"; - ErrorWithLocation = class extends Error { - static { - __name(this, "ErrorWithLocation"); - } - constructor(node2, message) { - super(node2 ? `${message} at ${node2.range.start.line}:${node2.range.start.character}` : message); - } - }; - __name(assertUnreachable, "assertUnreachable"); + function CanvasRenderer(options2) { + var r2 = this; + var containerWindow = r2.cy.window(); + var document2 = containerWindow.document; + if (options2.webgl) { + CRp.CANVAS_LAYERS = r2.CANVAS_LAYERS = 4; + console.log("webgl rendering enabled"); + } + r2.data = { + canvases: new Array(CRp.CANVAS_LAYERS), + contexts: new Array(CRp.CANVAS_LAYERS), + canvasNeedsRedraw: new Array(CRp.CANVAS_LAYERS), + bufferCanvases: new Array(CRp.BUFFER_COUNT), + bufferContexts: new Array(CRp.CANVAS_LAYERS) + }; + var tapHlOffAttr = "-webkit-tap-highlight-color"; + var tapHlOffStyle = "rgba(0,0,0,0)"; + r2.data.canvasContainer = document2.createElement("div"); + var containerStyle = r2.data.canvasContainer.style; + r2.data.canvasContainer.style[tapHlOffAttr] = tapHlOffStyle; + containerStyle.position = "relative"; + containerStyle.zIndex = "0"; + containerStyle.overflow = "hidden"; + var container2 = options2.cy.container(); + container2.appendChild(r2.data.canvasContainer); + container2.style[tapHlOffAttr] = tapHlOffStyle; + var styleMap2 = { + "-webkit-user-select": "none", + "-moz-user-select": "-moz-none", + "user-select": "none", + "-webkit-tap-highlight-color": "rgba(0,0,0,0)", + "outline-style": "none" + }; + if (ms()) { + styleMap2["-ms-touch-action"] = "none"; + styleMap2["touch-action"] = "none"; + } + for (var i2 = 0; i2 < CRp.CANVAS_LAYERS; i2++) { + var canvas = r2.data.canvases[i2] = document2.createElement("canvas"); + var type3 = CRp.CANVAS_TYPES[i2]; + r2.data.contexts[i2] = canvas.getContext(type3); + if (!r2.data.contexts[i2]) { + error("Could not create canvas of type " + type3); + } + Object.keys(styleMap2).forEach(function(k2) { + canvas.style[k2] = styleMap2[k2]; + }); + canvas.style.position = "absolute"; + canvas.setAttribute("data-id", "layer" + i2); + canvas.style.zIndex = String(CRp.CANVAS_LAYERS - i2); + r2.data.canvasContainer.appendChild(canvas); + r2.data.canvasNeedsRedraw[i2] = false; + } + r2.data.topCanvas = r2.data.canvases[0]; + r2.data.canvases[CRp.NODE].setAttribute("data-id", "layer" + CRp.NODE + "-node"); + r2.data.canvases[CRp.SELECT_BOX].setAttribute("data-id", "layer" + CRp.SELECT_BOX + "-selectbox"); + r2.data.canvases[CRp.DRAG].setAttribute("data-id", "layer" + CRp.DRAG + "-drag"); + if (r2.data.canvases[CRp.WEBGL]) { + r2.data.canvases[CRp.WEBGL].setAttribute("data-id", "layer" + CRp.WEBGL + "-webgl"); + } + for (var i2 = 0; i2 < CRp.BUFFER_COUNT; i2++) { + r2.data.bufferCanvases[i2] = document2.createElement("canvas"); + r2.data.bufferContexts[i2] = r2.data.bufferCanvases[i2].getContext("2d"); + r2.data.bufferCanvases[i2].style.position = "absolute"; + r2.data.bufferCanvases[i2].setAttribute("data-id", "buffer" + i2); + r2.data.bufferCanvases[i2].style.zIndex = String(-i2 - 1); + r2.data.bufferCanvases[i2].style.visibility = "hidden"; + } + r2.pathsEnabled = true; + var emptyBb = makeBoundingBox(); + var getBoxCenter = /* @__PURE__ */ __name(function getBoxCenter2(bb) { + return { + x: (bb.x1 + bb.x2) / 2, + y: (bb.y1 + bb.y2) / 2 + }; + }, "getBoxCenter"); + var getCenterOffset = /* @__PURE__ */ __name(function getCenterOffset2(bb) { + return { + x: -bb.w / 2, + y: -bb.h / 2 + }; + }, "getCenterOffset"); + var backgroundTimestampHasChanged = /* @__PURE__ */ __name(function backgroundTimestampHasChanged2(ele) { + var _p = ele[0]._private; + var same2 = _p.oldBackgroundTimestamp === _p.backgroundTimestamp; + return !same2; + }, "backgroundTimestampHasChanged"); + var getStyleKey = /* @__PURE__ */ __name(function getStyleKey2(ele) { + return ele[0]._private.nodeKey; + }, "getStyleKey"); + var getLabelKey = /* @__PURE__ */ __name(function getLabelKey2(ele) { + return ele[0]._private.labelStyleKey; + }, "getLabelKey"); + var getSourceLabelKey = /* @__PURE__ */ __name(function getSourceLabelKey2(ele) { + return ele[0]._private.sourceLabelStyleKey; + }, "getSourceLabelKey"); + var getTargetLabelKey = /* @__PURE__ */ __name(function getTargetLabelKey2(ele) { + return ele[0]._private.targetLabelStyleKey; + }, "getTargetLabelKey"); + var drawElement = /* @__PURE__ */ __name(function drawElement2(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r2.drawElement(context, ele, bb, false, false, useEleOpacity); + }, "drawElement"); + var drawLabel4 = /* @__PURE__ */ __name(function drawLabel5(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r2.drawElementText(context, ele, bb, scaledLabelShown, "main", useEleOpacity); + }, "drawLabel"); + var drawSourceLabel = /* @__PURE__ */ __name(function drawSourceLabel2(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r2.drawElementText(context, ele, bb, scaledLabelShown, "source", useEleOpacity); + }, "drawSourceLabel"); + var drawTargetLabel = /* @__PURE__ */ __name(function drawTargetLabel2(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r2.drawElementText(context, ele, bb, scaledLabelShown, "target", useEleOpacity); + }, "drawTargetLabel"); + var getElementBox = /* @__PURE__ */ __name(function getElementBox2(ele) { + ele.boundingBox(); + return ele[0]._private.bodyBounds; + }, "getElementBox"); + var getLabelBox = /* @__PURE__ */ __name(function getLabelBox2(ele) { + ele.boundingBox(); + return ele[0]._private.labelBounds.main || emptyBb; + }, "getLabelBox"); + var getSourceLabelBox = /* @__PURE__ */ __name(function getSourceLabelBox2(ele) { + ele.boundingBox(); + return ele[0]._private.labelBounds.source || emptyBb; + }, "getSourceLabelBox"); + var getTargetLabelBox = /* @__PURE__ */ __name(function getTargetLabelBox2(ele) { + ele.boundingBox(); + return ele[0]._private.labelBounds.target || emptyBb; + }, "getTargetLabelBox"); + var isLabelVisibleAtScale = /* @__PURE__ */ __name(function isLabelVisibleAtScale2(ele, scaledLabelShown) { + return scaledLabelShown; + }, "isLabelVisibleAtScale"); + var getElementRotationPoint = /* @__PURE__ */ __name(function getElementRotationPoint2(ele) { + return getBoxCenter(getElementBox(ele)); + }, "getElementRotationPoint"); + var addTextMargin = /* @__PURE__ */ __name(function addTextMargin2(prefix, pt, ele) { + var pre = prefix ? prefix + "-" : ""; + return { + x: pt.x + ele.pstyle(pre + "text-margin-x").pfValue, + y: pt.y + ele.pstyle(pre + "text-margin-y").pfValue + }; + }, "addTextMargin"); + var getRsPt = /* @__PURE__ */ __name(function getRsPt2(ele, x5, y6) { + var rs = ele[0]._private.rscratch; + return { + x: rs[x5], + y: rs[y6] + }; + }, "getRsPt"); + var getLabelRotationPoint = /* @__PURE__ */ __name(function getLabelRotationPoint2(ele) { + return addTextMargin("", getRsPt(ele, "labelX", "labelY"), ele); + }, "getLabelRotationPoint"); + var getSourceLabelRotationPoint = /* @__PURE__ */ __name(function getSourceLabelRotationPoint2(ele) { + return addTextMargin("source", getRsPt(ele, "sourceLabelX", "sourceLabelY"), ele); + }, "getSourceLabelRotationPoint"); + var getTargetLabelRotationPoint = /* @__PURE__ */ __name(function getTargetLabelRotationPoint2(ele) { + return addTextMargin("target", getRsPt(ele, "targetLabelX", "targetLabelY"), ele); + }, "getTargetLabelRotationPoint"); + var getElementRotationOffset = /* @__PURE__ */ __name(function getElementRotationOffset2(ele) { + return getCenterOffset(getElementBox(ele)); + }, "getElementRotationOffset"); + var getSourceLabelRotationOffset = /* @__PURE__ */ __name(function getSourceLabelRotationOffset2(ele) { + return getCenterOffset(getSourceLabelBox(ele)); + }, "getSourceLabelRotationOffset"); + var getTargetLabelRotationOffset = /* @__PURE__ */ __name(function getTargetLabelRotationOffset2(ele) { + return getCenterOffset(getTargetLabelBox(ele)); + }, "getTargetLabelRotationOffset"); + var getLabelRotationOffset = /* @__PURE__ */ __name(function getLabelRotationOffset2(ele) { + var bb = getLabelBox(ele); + var p3 = getCenterOffset(getLabelBox(ele)); + if (ele.isNode()) { + switch (ele.pstyle("text-halign").value) { + case "left": + p3.x = -bb.w - (bb.leftPad || 0); + break; + case "right": + p3.x = -(bb.rightPad || 0); + break; + } + switch (ele.pstyle("text-valign").value) { + case "top": + p3.y = -bb.h - (bb.topPad || 0); + break; + case "bottom": + p3.y = -(bb.botPad || 0); + break; + } + } + return p3; + }, "getLabelRotationOffset"); + var eleTxrCache = r2.data.eleTxrCache = new ElementTextureCache(r2, { + getKey: getStyleKey, + doesEleInvalidateKey: backgroundTimestampHasChanged, + drawElement, + getBoundingBox: getElementBox, + getRotationPoint: getElementRotationPoint, + getRotationOffset: getElementRotationOffset, + allowEdgeTxrCaching: false, + allowParentTxrCaching: false + }); + var lblTxrCache = r2.data.lblTxrCache = new ElementTextureCache(r2, { + getKey: getLabelKey, + drawElement: drawLabel4, + getBoundingBox: getLabelBox, + getRotationPoint: getLabelRotationPoint, + getRotationOffset: getLabelRotationOffset, + isVisible: isLabelVisibleAtScale + }); + var slbTxrCache = r2.data.slbTxrCache = new ElementTextureCache(r2, { + getKey: getSourceLabelKey, + drawElement: drawSourceLabel, + getBoundingBox: getSourceLabelBox, + getRotationPoint: getSourceLabelRotationPoint, + getRotationOffset: getSourceLabelRotationOffset, + isVisible: isLabelVisibleAtScale + }); + var tlbTxrCache = r2.data.tlbTxrCache = new ElementTextureCache(r2, { + getKey: getTargetLabelKey, + drawElement: drawTargetLabel, + getBoundingBox: getTargetLabelBox, + getRotationPoint: getTargetLabelRotationPoint, + getRotationOffset: getTargetLabelRotationOffset, + isVisible: isLabelVisibleAtScale + }); + var lyrTxrCache = r2.data.lyrTxrCache = new LayeredTextureCache(r2); + r2.onUpdateEleCalcs(/* @__PURE__ */ __name(function invalidateTextureCaches(willDraw, eles) { + eleTxrCache.invalidateElements(eles); + lblTxrCache.invalidateElements(eles); + slbTxrCache.invalidateElements(eles); + tlbTxrCache.invalidateElements(eles); + lyrTxrCache.invalidateElements(eles); + for (var _i = 0; _i < eles.length; _i++) { + var _p = eles[_i]._private; + _p.oldBackgroundTimestamp = _p.backgroundTimestamp; + } + }, "invalidateTextureCaches")); + var refineInLayers = /* @__PURE__ */ __name(function refineInLayers2(reqs) { + for (var i3 = 0; i3 < reqs.length; i3++) { + lyrTxrCache.enqueueElementRefinement(reqs[i3].ele); + } + }, "refineInLayers"); + eleTxrCache.onDequeue(refineInLayers); + lblTxrCache.onDequeue(refineInLayers); + slbTxrCache.onDequeue(refineInLayers); + tlbTxrCache.onDequeue(refineInLayers); + if (options2.webgl) { + r2.initWebgl(options2, { + getStyleKey, + getLabelKey, + getSourceLabelKey, + getTargetLabelKey, + drawElement, + drawLabel: drawLabel4, + drawSourceLabel, + drawTargetLabel, + getElementBox, + getLabelBox, + getSourceLabelBox, + getTargetLabelBox, + getElementRotationPoint, + getElementRotationOffset, + getLabelRotationPoint, + getSourceLabelRotationPoint, + getTargetLabelRotationPoint, + getLabelRotationOffset, + getSourceLabelRotationOffset, + getTargetLabelRotationOffset + }); } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/generated/ast.js - var ast_exports = {}; - __export(ast_exports, { - AbstractElement: () => AbstractElement, - AbstractRule: () => AbstractRule, - AbstractType: () => AbstractType, - Action: () => Action, - Alternatives: () => Alternatives, - ArrayLiteral: () => ArrayLiteral, - ArrayType: () => ArrayType, - Assignment: () => Assignment, - BooleanLiteral: () => BooleanLiteral, - CharacterRange: () => CharacterRange, - Condition: () => Condition, - Conjunction: () => Conjunction, - CrossReference: () => CrossReference, - Disjunction: () => Disjunction, - EndOfFile: () => EndOfFile, - Grammar: () => Grammar, - GrammarImport: () => GrammarImport, - Group: () => Group, - InferredType: () => InferredType, - Interface: () => Interface, - Keyword: () => Keyword2, - LangiumGrammarAstReflection: () => LangiumGrammarAstReflection, - LangiumGrammarTerminals: () => LangiumGrammarTerminals, - NamedArgument: () => NamedArgument, - NegatedToken: () => NegatedToken, - Negation: () => Negation, - NumberLiteral: () => NumberLiteral, - Parameter: () => Parameter, - ParameterReference: () => ParameterReference, - ParserRule: () => ParserRule, - ReferenceType: () => ReferenceType, - RegexToken: () => RegexToken, - ReturnType: () => ReturnType, - RuleCall: () => RuleCall, - SimpleType: () => SimpleType, - StringLiteral: () => StringLiteral, - TerminalAlternatives: () => TerminalAlternatives, - TerminalGroup: () => TerminalGroup, - TerminalRule: () => TerminalRule, - TerminalRuleCall: () => TerminalRuleCall, - Type: () => Type2, - TypeAttribute: () => TypeAttribute, - TypeDefinition: () => TypeDefinition, - UnionType: () => UnionType, - UnorderedGroup: () => UnorderedGroup, - UntilToken: () => UntilToken, - ValueLiteral: () => ValueLiteral, - Wildcard: () => Wildcard, - isAbstractElement: () => isAbstractElement, - isAbstractRule: () => isAbstractRule, - isAbstractType: () => isAbstractType, - isAction: () => isAction, - isAlternatives: () => isAlternatives, - isArrayLiteral: () => isArrayLiteral, - isArrayType: () => isArrayType, - isAssignment: () => isAssignment, - isBooleanLiteral: () => isBooleanLiteral, - isCharacterRange: () => isCharacterRange, - isCondition: () => isCondition, - isConjunction: () => isConjunction, - isCrossReference: () => isCrossReference, - isDisjunction: () => isDisjunction, - isEndOfFile: () => isEndOfFile, - isFeatureName: () => isFeatureName, - isGrammar: () => isGrammar, - isGrammarImport: () => isGrammarImport, - isGroup: () => isGroup, - isInferredType: () => isInferredType, - isInterface: () => isInterface, - isKeyword: () => isKeyword, - isNamedArgument: () => isNamedArgument, - isNegatedToken: () => isNegatedToken, - isNegation: () => isNegation, - isNumberLiteral: () => isNumberLiteral, - isParameter: () => isParameter, - isParameterReference: () => isParameterReference, - isParserRule: () => isParserRule, - isPrimitiveType: () => isPrimitiveType, - isReferenceType: () => isReferenceType, - isRegexToken: () => isRegexToken, - isReturnType: () => isReturnType, - isRuleCall: () => isRuleCall, - isSimpleType: () => isSimpleType, - isStringLiteral: () => isStringLiteral, - isTerminalAlternatives: () => isTerminalAlternatives, - isTerminalGroup: () => isTerminalGroup, - isTerminalRule: () => isTerminalRule, - isTerminalRuleCall: () => isTerminalRuleCall, - isType: () => isType, - isTypeAttribute: () => isTypeAttribute, - isTypeDefinition: () => isTypeDefinition, - isUnionType: () => isUnionType, - isUnorderedGroup: () => isUnorderedGroup, - isUntilToken: () => isUntilToken, - isValueLiteral: () => isValueLiteral, - isWildcard: () => isWildcard, - reflection: () => reflection - }); - function isAbstractRule(item) { - return reflection.isInstance(item, AbstractRule); - } - function isAbstractType(item) { - return reflection.isInstance(item, AbstractType); - } - function isCondition(item) { - return reflection.isInstance(item, Condition); - } - function isFeatureName(item) { - return isPrimitiveType(item) || item === "current" || item === "entry" || item === "extends" || item === "false" || item === "fragment" || item === "grammar" || item === "hidden" || item === "import" || item === "interface" || item === "returns" || item === "terminal" || item === "true" || item === "type" || item === "infer" || item === "infers" || item === "with" || typeof item === "string" && /\^?[_a-zA-Z][\w_]*/.test(item); - } - function isPrimitiveType(item) { - return item === "string" || item === "number" || item === "boolean" || item === "Date" || item === "bigint"; - } - function isTypeDefinition(item) { - return reflection.isInstance(item, TypeDefinition); - } - function isValueLiteral(item) { - return reflection.isInstance(item, ValueLiteral); - } - function isAbstractElement(item) { - return reflection.isInstance(item, AbstractElement); - } - function isArrayLiteral(item) { - return reflection.isInstance(item, ArrayLiteral); - } - function isArrayType(item) { - return reflection.isInstance(item, ArrayType); - } - function isBooleanLiteral(item) { - return reflection.isInstance(item, BooleanLiteral); - } - function isConjunction(item) { - return reflection.isInstance(item, Conjunction); - } - function isDisjunction(item) { - return reflection.isInstance(item, Disjunction); - } - function isGrammar(item) { - return reflection.isInstance(item, Grammar); - } - function isGrammarImport(item) { - return reflection.isInstance(item, GrammarImport); - } - function isInferredType(item) { - return reflection.isInstance(item, InferredType); - } - function isInterface(item) { - return reflection.isInstance(item, Interface); - } - function isNamedArgument(item) { - return reflection.isInstance(item, NamedArgument); - } - function isNegation(item) { - return reflection.isInstance(item, Negation); - } - function isNumberLiteral(item) { - return reflection.isInstance(item, NumberLiteral); - } - function isParameter(item) { - return reflection.isInstance(item, Parameter); - } - function isParameterReference(item) { - return reflection.isInstance(item, ParameterReference); - } - function isParserRule(item) { - return reflection.isInstance(item, ParserRule); - } - function isReferenceType(item) { - return reflection.isInstance(item, ReferenceType); - } - function isReturnType(item) { - return reflection.isInstance(item, ReturnType); - } - function isSimpleType(item) { - return reflection.isInstance(item, SimpleType); - } - function isStringLiteral(item) { - return reflection.isInstance(item, StringLiteral); - } - function isTerminalRule(item) { - return reflection.isInstance(item, TerminalRule); - } - function isType(item) { - return reflection.isInstance(item, Type2); - } - function isTypeAttribute(item) { - return reflection.isInstance(item, TypeAttribute); - } - function isUnionType(item) { - return reflection.isInstance(item, UnionType); - } - function isAction(item) { - return reflection.isInstance(item, Action); - } - function isAlternatives(item) { - return reflection.isInstance(item, Alternatives); - } - function isAssignment(item) { - return reflection.isInstance(item, Assignment); - } - function isCharacterRange(item) { - return reflection.isInstance(item, CharacterRange); - } - function isCrossReference(item) { - return reflection.isInstance(item, CrossReference); - } - function isEndOfFile(item) { - return reflection.isInstance(item, EndOfFile); - } - function isGroup(item) { - return reflection.isInstance(item, Group); - } - function isKeyword(item) { - return reflection.isInstance(item, Keyword2); - } - function isNegatedToken(item) { - return reflection.isInstance(item, NegatedToken); - } - function isRegexToken(item) { - return reflection.isInstance(item, RegexToken); - } - function isRuleCall(item) { - return reflection.isInstance(item, RuleCall); - } - function isTerminalAlternatives(item) { - return reflection.isInstance(item, TerminalAlternatives); - } - function isTerminalGroup(item) { - return reflection.isInstance(item, TerminalGroup); } - function isTerminalRuleCall(item) { - return reflection.isInstance(item, TerminalRuleCall); + function setExtension(type3, name, registrant) { + var ext = registrant; + var overrideErr = /* @__PURE__ */ __name(function overrideErr2(field) { + warn("Can not register `" + name + "` for `" + type3 + "` since `" + field + "` already exists in the prototype and can not be overridden"); + }, "overrideErr"); + if (type3 === "core") { + if (Core.prototype[name]) { + return overrideErr(name); + } else { + Core.prototype[name] = registrant; + } + } else if (type3 === "collection") { + if (Collection.prototype[name]) { + return overrideErr(name); + } else { + Collection.prototype[name] = registrant; + } + } else if (type3 === "layout") { + var Layout2 = /* @__PURE__ */ __name(function Layout3(options2) { + this.options = options2; + registrant.call(this, options2); + if (!plainObject(this._private)) { + this._private = {}; + } + this._private.cy = options2.cy; + this._private.listeners = []; + this.createEmitter(); + }, "Layout"); + var layoutProto = Layout2.prototype = Object.create(registrant.prototype); + var optLayoutFns = []; + for (var i2 = 0; i2 < optLayoutFns.length; i2++) { + var fnName = optLayoutFns[i2]; + layoutProto[fnName] = layoutProto[fnName] || function() { + return this; + }; + } + if (layoutProto.start && !layoutProto.run) { + layoutProto.run = function() { + this.start(); + return this; + }; + } else if (!layoutProto.start && layoutProto.run) { + layoutProto.start = function() { + this.run(); + return this; + }; + } + var regStop = registrant.prototype.stop; + layoutProto.stop = function() { + var opts = this.options; + if (opts && opts.animate) { + var anis = this.animations; + if (anis) { + for (var _i = 0; _i < anis.length; _i++) { + anis[_i].stop(); + } + } + } + if (regStop) { + regStop.call(this); + } else { + this.emit("layoutstop"); + } + return this; + }; + if (!layoutProto.destroy) { + layoutProto.destroy = function() { + return this; + }; + } + layoutProto.cy = function() { + return this._private.cy; + }; + var getCy = /* @__PURE__ */ __name(function getCy2(layout6) { + return layout6._private.cy; + }, "getCy"); + var emitterOpts = { + addEventFields: /* @__PURE__ */ __name(function addEventFields4(layout6, evt) { + evt.layout = layout6; + evt.cy = getCy(layout6); + evt.target = layout6; + }, "addEventFields"), + bubble: /* @__PURE__ */ __name(function bubble3() { + return true; + }, "bubble"), + parent: /* @__PURE__ */ __name(function parent4(layout6) { + return getCy(layout6); + }, "parent") + }; + extend4(layoutProto, { + createEmitter: /* @__PURE__ */ __name(function createEmitter3() { + this._private.emitter = new Emitter(emitterOpts, this); + return this; + }, "createEmitter"), + emitter: /* @__PURE__ */ __name(function emitter3() { + return this._private.emitter; + }, "emitter"), + on: /* @__PURE__ */ __name(function on3(evt, cb) { + this.emitter().on(evt, cb); + return this; + }, "on"), + one: /* @__PURE__ */ __name(function one4(evt, cb) { + this.emitter().one(evt, cb); + return this; + }, "one"), + once: /* @__PURE__ */ __name(function once3(evt, cb) { + this.emitter().one(evt, cb); + return this; + }, "once"), + removeListener: /* @__PURE__ */ __name(function removeListener3(evt, cb) { + this.emitter().removeListener(evt, cb); + return this; + }, "removeListener"), + removeAllListeners: /* @__PURE__ */ __name(function removeAllListeners3() { + this.emitter().removeAllListeners(); + return this; + }, "removeAllListeners"), + emit: /* @__PURE__ */ __name(function emit3(evt, params) { + this.emitter().emit(evt, params); + return this; + }, "emit") + }); + define2.eventAliasesOn(layoutProto); + ext = Layout2; + } else if (type3 === "renderer" && name !== "null" && name !== "base") { + var BaseRenderer3 = getExtension("renderer", "base"); + var bProto = BaseRenderer3.prototype; + var RegistrantRenderer = registrant; + var rProto = registrant.prototype; + var Renderer = /* @__PURE__ */ __name(function Renderer2() { + BaseRenderer3.apply(this, arguments); + RegistrantRenderer.apply(this, arguments); + }, "Renderer"); + var proto = Renderer.prototype; + for (var pName in bProto) { + var pVal = bProto[pName]; + var existsInR = rProto[pName] != null; + if (existsInR) { + return overrideErr(pName); + } + proto[pName] = pVal; + } + for (var _pName in rProto) { + proto[_pName] = rProto[_pName]; + } + bProto.clientFunctions.forEach(function(name2) { + proto[name2] = proto[name2] || function() { + error("Renderer does not implement `renderer." + name2 + "()` on its prototype"); + }; + }); + ext = Renderer; + } else if (type3 === "__proto__" || type3 === "constructor" || type3 === "prototype") { + return error(type3 + " is an illegal type to be registered, possibly lead to prototype pollutions"); + } + return setMap({ + map: extensions, + keys: [type3, name], + value: ext + }); } - function isUnorderedGroup(item) { - return reflection.isInstance(item, UnorderedGroup); + function getExtension(type3, name) { + return getMap({ + map: extensions, + keys: [type3, name] + }); } - function isUntilToken(item) { - return reflection.isInstance(item, UntilToken); + function setModule(type3, name, moduleType, moduleName, registrant) { + return setMap({ + map: modules, + keys: [type3, name, moduleType, moduleName], + value: registrant + }); } - function isWildcard(item) { - return reflection.isInstance(item, Wildcard); + function getModule(type3, name, moduleType, moduleName) { + return getMap({ + map: modules, + keys: [type3, name, moduleType, moduleName] + }); } - var LangiumGrammarTerminals, AbstractRule, AbstractType, Condition, TypeDefinition, ValueLiteral, AbstractElement, ArrayLiteral, ArrayType, BooleanLiteral, Conjunction, Disjunction, Grammar, GrammarImport, InferredType, Interface, NamedArgument, Negation, NumberLiteral, Parameter, ParameterReference, ParserRule, ReferenceType, ReturnType, SimpleType, StringLiteral, TerminalRule, Type2, TypeAttribute, UnionType, Action, Alternatives, Assignment, CharacterRange, CrossReference, EndOfFile, Group, Keyword2, NegatedToken, RegexToken, RuleCall, TerminalAlternatives, TerminalGroup, TerminalRuleCall, UnorderedGroup, UntilToken, Wildcard, LangiumGrammarAstReflection, reflection; - var init_ast = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/generated/ast.js"() { + var _window, navigator2, typeofstr, typeofobj, typeoffn, typeofhtmlele, instanceStr, string, fn$6, array2, plainObject, object, number$1, integer, htmlElement, elementOrCollection, element, collection, core2, stylesheet, event, emptyString, domElement, boundingBox, promise, ms, memoize2, camel2dash, dash2camel, prependCamel, capitalize, endsWith, number6, rgba3, rgbaNoBackRefs, hsla2, hslaNoBackRefs, hex3, hex6, ascending3, descending2, extend4, hex2tuple, hsl2tuple, rgb2tuple, colorname2tuple, color2tuple, colors, setMap, getMap, commonjsGlobal, isObject_12, hasRequiredIsObject, _freeGlobal, hasRequired_freeGlobal, _root, hasRequired_root, now_1, hasRequiredNow, _trimmedEndIndex, hasRequired_trimmedEndIndex, _baseTrim, hasRequired_baseTrim, _Symbol, hasRequired_Symbol, _getRawTag, hasRequired_getRawTag, _objectToString, hasRequired_objectToString, _baseGetTag, hasRequired_baseGetTag, isObjectLike_1, hasRequiredIsObjectLike, isSymbol_1, hasRequiredIsSymbol, toNumber_1, hasRequiredToNumber, debounce_1, hasRequiredDebounce, debounceExports, debounce, performance$1, pnow, raf, requestAnimationFrame2, performanceNow, DEFAULT_HASH_SEED, K4, DEFAULT_HASH_SEED_ALT, hashIterableInts, hashInt, hashIntAlt, combineHashes, combineHashesArray, hashArrays, hashIntsArray, hashString, hashStrings, hashStringsArray, movePointByBoxAspect, warningsEnabled, warnSupported, traceSupported, MAX_INT$1, trueify, falsify, zeroify, noop$1, error, warnings, warn, clone3, copy3, copyArray2, uuid, _staticEmptyObject, staticEmptyObject, defaults$g, removeFromArray, clearArray, push, getPrefixedProperty, setPrefixedProperty, ObjectMap, Map$1, undef, ObjectSet, Set$1, Element, defineSearch, elesfn$v, heap$2, heap$1, hasRequiredHeap$1, heap, hasRequiredHeap, heapExports, Heap, dijkstraDefaults, elesfn$u, elesfn$t, aStarDefaults, elesfn$s, floydWarshallDefaults, elesfn$r, bellmanFordDefaults, elesfn$q, sqrt2, collapse, contractUntil, elesfn$p, _Math$hypot, copyPosition, modelToRenderedPosition$1, renderedToModelPosition, array2point, min5, max5, mean, median, deg2rad, getAngleFromDisp, log22, signum, dist, sqdist, inPlaceSumNormalize, qbezierAt, qbezierPtAt, lineAt, bound, makeBoundingBox, copyBoundingBox, clearBoundingBox, updateBoundingBox, expandBoundingBoxByPoint, expandBoundingBox, expandBoundingBoxSides, assignBoundingBox, boundingBoxesIntersect, inBoundingBox, pointInBoundingBox, boundingBoxInBoundingBox, hypot, roundRectangleIntersectLine, inLineVicinity, inBezierVicinity, solveQuadratic, solveCubic, sqdistToQuadraticBezier, sqdistToFiniteLine, pointInsidePolygonPoints, pointInsidePolygon, pointInsideRoundPolygon, joinLines, expandPolygon, intersectLineEllipse, checkInEllipse, intersectLineCircle, midOfThree, finiteLinesIntersect, transformPoints, polygonIntersectLine, roundPolygonIntersectLine, shortenIntersection, generateUnitNgonPointsFitToSquare, fitPolygonToSquare, generateUnitNgonPoints, getRoundRectangleRadius, getRoundPolygonRadius, getCutRectangleCornerLength, bezierPtsToQuadCoeff, getBarrelCurveConstants, pageRankDefaults, elesfn$o, defaults$f, elesfn$n, defaults$e, elesfn$m, defaults$d, elesfn$l, defaults$c, setOptions$3, getSimilarity$1, addLoops, normalize2, mmult, expand, inflate, hasConverged, assign$2, isDuplicate, removeDuplicates, markovClustering, markovClustering$1, identity$1, absDiff, addAbsDiff, addSquaredDiff, sqrt3, maxAbsDiff, getDistance, distances, defaults$b, setOptions$2, getDist, randomCentroids, classify, buildCluster, haveValuesConverged, haveMatricesConverged, seenBefore, randomMedoids, findCost, kMeans, kMedoids, updateCentroids, updateMembership, assign$1, fuzzyCMeans, kClustering, defaults$a, linkageAliases, setOptions$1, mergeClosest, _getAllChildren, _buildDendrogram, _buildClustersFromTree, hierarchicalClustering, hierarchicalClustering$1, defaults$9, setOptions4, getSimilarity2, getPreference, findExemplars, assignClusters, assign4, affinityPropagation, affinityPropagation$1, hierholzerDefaults, elesfn$k, hopcroftTarjanBiconnected, hopcroftTarjanBiconnected$1, tarjanStronglyConnected, tarjanStronglyConnected$1, elesfn$j, STATE_PENDING, STATE_FULFILLED, STATE_REJECTED, _api, deliver, execute, execute_handlers, resolver, _resolve, Promise$1, Animation, anifn, define$3, isArray_1, hasRequiredIsArray, _isKey, hasRequired_isKey, isFunction_1, hasRequiredIsFunction, _coreJsData, hasRequired_coreJsData, _isMasked, hasRequired_isMasked, _toSource, hasRequired_toSource, _baseIsNative, hasRequired_baseIsNative, _getValue, hasRequired_getValue, _getNative, hasRequired_getNative, _nativeCreate, hasRequired_nativeCreate, _hashClear, hasRequired_hashClear, _hashDelete, hasRequired_hashDelete, _hashGet, hasRequired_hashGet, _hashHas, hasRequired_hashHas, _hashSet, hasRequired_hashSet, _Hash, hasRequired_Hash, _listCacheClear, hasRequired_listCacheClear, eq_1, hasRequiredEq, _assocIndexOf, hasRequired_assocIndexOf, _listCacheDelete, hasRequired_listCacheDelete, _listCacheGet, hasRequired_listCacheGet, _listCacheHas, hasRequired_listCacheHas, _listCacheSet, hasRequired_listCacheSet, _ListCache, hasRequired_ListCache, _Map, hasRequired_Map, _mapCacheClear, hasRequired_mapCacheClear, _isKeyable, hasRequired_isKeyable, _getMapData, hasRequired_getMapData, _mapCacheDelete, hasRequired_mapCacheDelete, _mapCacheGet, hasRequired_mapCacheGet, _mapCacheHas, hasRequired_mapCacheHas, _mapCacheSet, hasRequired_mapCacheSet, _MapCache, hasRequired_MapCache, memoize_1, hasRequiredMemoize, _memoizeCapped, hasRequired_memoizeCapped, _stringToPath, hasRequired_stringToPath, _arrayMap, hasRequired_arrayMap, _baseToString, hasRequired_baseToString, toString_1, hasRequiredToString, _castPath, hasRequired_castPath, _toKey, hasRequired_toKey, _baseGet, hasRequired_baseGet, get_1, hasRequiredGet, getExports, get4, _defineProperty, hasRequired_defineProperty, _baseAssignValue, hasRequired_baseAssignValue, _assignValue, hasRequired_assignValue, _isIndex, hasRequired_isIndex, _baseSet, hasRequired_baseSet, set_1, hasRequiredSet, setExports, set4, _copyArray, hasRequired_copyArray, toPath_1, hasRequiredToPath, toPathExports, toPath, define$2, define$1, define2, elesfn$i, elesfn$h, tokens, newQuery, Type2, stateSelectors, lookup, stateSelectorMatches, stateSelectorRegex, cleanMetaChars, replaceLastQuery, exprs, consumeExpr, consumeWhitespace, parse, toString3, parse$1, valCmp, boolCmp, existCmp, data$1, meta, match, matches$1, filter3, matches31, matching, Selector, selfn, elesfn$g, cache, elesfn$f, fn$5, elesfn$e, data3, elesfn$d, fn$4, elesfn$c, beforePositionSet, positionDef, position2, fn$3, elesfn$b, noninf, updateBounds, updateBoundsFromBox, prefixedProperty, updateBoundsFromArrow, updateBoundsFromLabel, updateBoundsFromOutline, updateBoundsFromMiter, updateBoundsFromMiterBorder, boundingBoxImpl, getKey, getBoundingBoxPosKey, cachedBoundingBoxImpl, defBbOpts, defBbOptsKey, filledBbOpts, bounds, fn$2, elesfn$a, defineDimFns, widthHeight, ifEdge, ifEdgeRenderedPosition, ifEdgeRenderedPositions, controlPoints2, segmentPoints, sourceEndpoint, targetEndpoint, midpoint, pts, renderedName, edgePoints, dimensions, Event, eventRegex, universalNamespace, defaults$8, defaultsKeys, emptyOpts, p2, forEachEvent, makeEventObj, forEachEventObj, emitterOptions$1, argSelector$1, elesfn$9, elesfn$8, fn$1, elesfn$7, zIndexSort, elesfn$6, defineSymbolIterator, getLayoutDimensionOptions, elesfn$5, elesfn$4, eleTakesUpSpace, eleInteractive, parentInteractive, eleVisible, edgeVisibleViaNode, elesfn$3, elesfn$2, defineDagExtremity, defineDagOneHop, defineDagAllHops, Collection, elesfn$1, corefn$9, generateSpringRK4, cubicBezier, easings, corefn$8, emitterOptions, argSelector2, elesfn, corefn$7, corefn$6, corefn$5, rendererDefaults, corefn$4, corefn$3, styfn$8, TRUE, FALSE, styfn$7, styfn$6, styfn$5, styfn$4, styfn$3, styfn$2, styfn$1, _Style, styfn, corefn$2, defaultSelectionType, corefn$1, fn2, Core, corefn, defaults$7, deprecatedOptionDefaults, getInfo, setInfo, defaults$6, defaults$5, DEBUG, defaults$4, createLayoutInfo, findLCA, _findLCA_aux, printLayoutInfo, randomizePositions, getScaleInBoundsFn, refreshPositions, step, calculateNodeForces, randomDistance, nodeRepulsion2, nodesOverlap, findClippingPoint, calculateEdgeForces, calculateGravityForces, propagateForces, updatePositions, limitForce, _updateAncestryBoundaries, separateComponents, defaults$3, defaults$2, defaults$1, defaults3, layout4, noop4, throwImgErr, BRp$f, BRp$e, BRp$d, x3, y4, v1, v22, sinA, sinA90, radDirection, drawDirection, angle, halfAngle, cRadius, lenOut, radius, limit, startX, startY, stopX, stopY, lastPoint, asVec, invertVec, calcCornerArc, AVOID_IMPOSSIBLE_BEZIER_CONSTANT, AVOID_IMPOSSIBLE_BEZIER_CONSTANT_L, BRp$c, BRp$b, BRp$a, BRp$9, lineAngleFromDelta, lineAngle, bezierAngle, BRp$8, TOO_SMALL_CUT_RECT, warnedCutRect, BRp$7, BRp$6, BRp$5, BRp$4, BRp$3, BRp$2, BRp$1, beforeRenderCallbacks, BaseRenderer, BR, BRp, fullFpsTime, defs, ElementTextureCacheLookup, minTxrH, txrStepH, minLvl$1, maxLvl$1, maxZoom$1, eleTxrSpacing, defTxrWidth, maxTxrW, maxTxrH, minUtility, maxFullness, maxFullnessChecks, deqCost$1, deqAvgCost$1, deqNoDrawCost$1, deqFastCost$1, deqRedrawThreshold$1, maxDeqSize$1, getTxrReasons, initDefaults, ElementTextureCache, ETCp, defNumLayers, minLvl, maxLvl, maxZoom2, deqRedrawThreshold, refineEleDebounceTime, deqCost, deqAvgCost, deqNoDrawCost, deqFastCost, maxDeqSize, invalidThreshold, maxLayerArea, maxLayerDim, useHighQualityEleTxrReqs, LayeredTextureCache, LTCp, layerIdPool, MAX_INT, CRp$b, impl, CRp$a, getZeroRotation, getLabelRotation, getSourceLabelRotation, getTargetLabelRotation, getOpacity, getTextOpacity, CRp$9, drawEdgeOverlayUnderlay, CRp$8, CRp$7, CRp$6, drawNodeOverlayUnderlay, CRp$5, motionBlurDelay, fpsHeight, ARRAY_TYPE, Atlas, AtlasCollection, AtlasManager, AtlasBatchManager, circleSD, rectangleSD, roundRectangleSD, ellipseSD, RENDER_TARGET, TEX_PICKING_MODE, TEXTURE, EDGE_STRAIGHT, EDGE_CURVE_SEGMENT, EDGE_ARROW, RECTANGLE, ROUND_RECTANGLE, BOTTOM_ROUND_RECTANGLE, ELLIPSE, ElementDrawingWebGL, CRp$4, getStyleKeysForLabel, getBoundingBoxForLabel, CRp$3, sin0, cos0, sin2, cos2, ellipseStepSize, i2, CRp$2, CRp$1, CR, CRp, pathsImpld, renderer2, incExts, extensions, modules, extension2, _Stylesheet, sheetfn, version2, cytoscape2; + var init_cytoscape_esm = __esm({ + "../../node_modules/.pnpm/cytoscape@3.33.1/node_modules/cytoscape/dist/cytoscape.esm.mjs"() { "use strict"; - init_syntax_tree(); - LangiumGrammarTerminals = { - ID: /\^?[_a-zA-Z][\w_]*/, - STRING: /"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/, - NUMBER: /NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/, - RegexLiteral: /\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/, - WS: /\s+/, - ML_COMMENT: /\/\*[\s\S]*?\*\//, - SL_COMMENT: /\/\/[^\n\r]*/ - }; - AbstractRule = "AbstractRule"; - __name(isAbstractRule, "isAbstractRule"); - AbstractType = "AbstractType"; - __name(isAbstractType, "isAbstractType"); - Condition = "Condition"; - __name(isCondition, "isCondition"); - __name(isFeatureName, "isFeatureName"); - __name(isPrimitiveType, "isPrimitiveType"); - TypeDefinition = "TypeDefinition"; - __name(isTypeDefinition, "isTypeDefinition"); - ValueLiteral = "ValueLiteral"; - __name(isValueLiteral, "isValueLiteral"); - AbstractElement = "AbstractElement"; - __name(isAbstractElement, "isAbstractElement"); - ArrayLiteral = "ArrayLiteral"; - __name(isArrayLiteral, "isArrayLiteral"); - ArrayType = "ArrayType"; - __name(isArrayType, "isArrayType"); - BooleanLiteral = "BooleanLiteral"; - __name(isBooleanLiteral, "isBooleanLiteral"); - Conjunction = "Conjunction"; - __name(isConjunction, "isConjunction"); - Disjunction = "Disjunction"; - __name(isDisjunction, "isDisjunction"); - Grammar = "Grammar"; - __name(isGrammar, "isGrammar"); - GrammarImport = "GrammarImport"; - __name(isGrammarImport, "isGrammarImport"); - InferredType = "InferredType"; - __name(isInferredType, "isInferredType"); - Interface = "Interface"; - __name(isInterface, "isInterface"); - NamedArgument = "NamedArgument"; - __name(isNamedArgument, "isNamedArgument"); - Negation = "Negation"; - __name(isNegation, "isNegation"); - NumberLiteral = "NumberLiteral"; - __name(isNumberLiteral, "isNumberLiteral"); - Parameter = "Parameter"; - __name(isParameter, "isParameter"); - ParameterReference = "ParameterReference"; - __name(isParameterReference, "isParameterReference"); - ParserRule = "ParserRule"; - __name(isParserRule, "isParserRule"); - ReferenceType = "ReferenceType"; - __name(isReferenceType, "isReferenceType"); - ReturnType = "ReturnType"; - __name(isReturnType, "isReturnType"); - SimpleType = "SimpleType"; - __name(isSimpleType, "isSimpleType"); - StringLiteral = "StringLiteral"; - __name(isStringLiteral, "isStringLiteral"); - TerminalRule = "TerminalRule"; - __name(isTerminalRule, "isTerminalRule"); - Type2 = "Type"; - __name(isType, "isType"); - TypeAttribute = "TypeAttribute"; - __name(isTypeAttribute, "isTypeAttribute"); - UnionType = "UnionType"; - __name(isUnionType, "isUnionType"); - Action = "Action"; - __name(isAction, "isAction"); - Alternatives = "Alternatives"; - __name(isAlternatives, "isAlternatives"); - Assignment = "Assignment"; - __name(isAssignment, "isAssignment"); - CharacterRange = "CharacterRange"; - __name(isCharacterRange, "isCharacterRange"); - CrossReference = "CrossReference"; - __name(isCrossReference, "isCrossReference"); - EndOfFile = "EndOfFile"; - __name(isEndOfFile, "isEndOfFile"); - Group = "Group"; - __name(isGroup, "isGroup"); - Keyword2 = "Keyword"; - __name(isKeyword, "isKeyword"); - NegatedToken = "NegatedToken"; - __name(isNegatedToken, "isNegatedToken"); - RegexToken = "RegexToken"; - __name(isRegexToken, "isRegexToken"); - RuleCall = "RuleCall"; - __name(isRuleCall, "isRuleCall"); - TerminalAlternatives = "TerminalAlternatives"; - __name(isTerminalAlternatives, "isTerminalAlternatives"); - TerminalGroup = "TerminalGroup"; - __name(isTerminalGroup, "isTerminalGroup"); - TerminalRuleCall = "TerminalRuleCall"; - __name(isTerminalRuleCall, "isTerminalRuleCall"); - UnorderedGroup = "UnorderedGroup"; - __name(isUnorderedGroup, "isUnorderedGroup"); - UntilToken = "UntilToken"; - __name(isUntilToken, "isUntilToken"); - Wildcard = "Wildcard"; - __name(isWildcard, "isWildcard"); - LangiumGrammarAstReflection = class extends AbstractAstReflection { - static { - __name(this, "LangiumGrammarAstReflection"); + __name(_arrayLikeToArray, "_arrayLikeToArray"); + __name(_arrayWithHoles, "_arrayWithHoles"); + __name(_arrayWithoutHoles, "_arrayWithoutHoles"); + __name(_classCallCheck, "_classCallCheck"); + __name(_defineProperties, "_defineProperties"); + __name(_createClass, "_createClass"); + __name(_createForOfIteratorHelper, "_createForOfIteratorHelper"); + __name(_defineProperty$1, "_defineProperty$1"); + __name(_iterableToArray, "_iterableToArray"); + __name(_iterableToArrayLimit, "_iterableToArrayLimit"); + __name(_nonIterableRest, "_nonIterableRest"); + __name(_nonIterableSpread, "_nonIterableSpread"); + __name(_slicedToArray, "_slicedToArray"); + __name(_toConsumableArray, "_toConsumableArray"); + __name(_toPrimitive, "_toPrimitive"); + __name(_toPropertyKey, "_toPropertyKey"); + __name(_typeof, "_typeof"); + __name(_unsupportedIterableToArray, "_unsupportedIterableToArray"); + _window = typeof window === "undefined" ? null : window; + navigator2 = _window ? _window.navigator : null; + _window ? _window.document : null; + typeofstr = _typeof(""); + typeofobj = _typeof({}); + typeoffn = _typeof(function() { + }); + typeofhtmlele = typeof HTMLElement === "undefined" ? "undefined" : _typeof(HTMLElement); + instanceStr = /* @__PURE__ */ __name(function instanceStr2(obj) { + return obj && obj.instanceString && fn$6(obj.instanceString) ? obj.instanceString() : null; + }, "instanceStr"); + string = /* @__PURE__ */ __name(function string2(obj) { + return obj != null && _typeof(obj) == typeofstr; + }, "string"); + fn$6 = /* @__PURE__ */ __name(function fn(obj) { + return obj != null && _typeof(obj) === typeoffn; + }, "fn"); + array2 = /* @__PURE__ */ __name(function array3(obj) { + return !elementOrCollection(obj) && (Array.isArray ? Array.isArray(obj) : obj != null && obj instanceof Array); + }, "array"); + plainObject = /* @__PURE__ */ __name(function plainObject2(obj) { + return obj != null && _typeof(obj) === typeofobj && !array2(obj) && obj.constructor === Object; + }, "plainObject"); + object = /* @__PURE__ */ __name(function object2(obj) { + return obj != null && _typeof(obj) === typeofobj; + }, "object"); + number$1 = /* @__PURE__ */ __name(function number5(obj) { + return obj != null && _typeof(obj) === _typeof(1) && !isNaN(obj); + }, "number"); + integer = /* @__PURE__ */ __name(function integer2(obj) { + return number$1(obj) && Math.floor(obj) === obj; + }, "integer"); + htmlElement = /* @__PURE__ */ __name(function htmlElement2(obj) { + if ("undefined" === typeofhtmlele) { + return void 0; + } else { + return null != obj && obj instanceof HTMLElement; } - getAllTypes() { - return [AbstractElement, AbstractRule, AbstractType, Action, Alternatives, ArrayLiteral, ArrayType, Assignment, BooleanLiteral, CharacterRange, Condition, Conjunction, CrossReference, Disjunction, EndOfFile, Grammar, GrammarImport, Group, InferredType, Interface, Keyword2, NamedArgument, NegatedToken, Negation, NumberLiteral, Parameter, ParameterReference, ParserRule, ReferenceType, RegexToken, ReturnType, RuleCall, SimpleType, StringLiteral, TerminalAlternatives, TerminalGroup, TerminalRule, TerminalRuleCall, Type2, TypeAttribute, TypeDefinition, UnionType, UnorderedGroup, UntilToken, ValueLiteral, Wildcard]; + }, "htmlElement"); + elementOrCollection = /* @__PURE__ */ __name(function elementOrCollection2(obj) { + return element(obj) || collection(obj); + }, "elementOrCollection"); + element = /* @__PURE__ */ __name(function element2(obj) { + return instanceStr(obj) === "collection" && obj._private.single; + }, "element"); + collection = /* @__PURE__ */ __name(function collection2(obj) { + return instanceStr(obj) === "collection" && !obj._private.single; + }, "collection"); + core2 = /* @__PURE__ */ __name(function core3(obj) { + return instanceStr(obj) === "core"; + }, "core"); + stylesheet = /* @__PURE__ */ __name(function stylesheet2(obj) { + return instanceStr(obj) === "stylesheet"; + }, "stylesheet"); + event = /* @__PURE__ */ __name(function event2(obj) { + return instanceStr(obj) === "event"; + }, "event"); + emptyString = /* @__PURE__ */ __name(function emptyString2(obj) { + if (obj === void 0 || obj === null) { + return true; + } else if (obj === "" || obj.match(/^\s+$/)) { + return true; } - computeIsSubtype(subtype, supertype) { - switch (subtype) { - case Action: - case Alternatives: - case Assignment: - case CharacterRange: - case CrossReference: - case EndOfFile: - case Group: - case Keyword2: - case NegatedToken: - case RegexToken: - case RuleCall: - case TerminalAlternatives: - case TerminalGroup: - case TerminalRuleCall: - case UnorderedGroup: - case UntilToken: - case Wildcard: { - return this.isSubtype(AbstractElement, supertype); - } - case ArrayLiteral: - case NumberLiteral: - case StringLiteral: { - return this.isSubtype(ValueLiteral, supertype); - } - case ArrayType: - case ReferenceType: - case SimpleType: - case UnionType: { - return this.isSubtype(TypeDefinition, supertype); - } - case BooleanLiteral: { - return this.isSubtype(Condition, supertype) || this.isSubtype(ValueLiteral, supertype); - } - case Conjunction: - case Disjunction: - case Negation: - case ParameterReference: { - return this.isSubtype(Condition, supertype); - } - case InferredType: - case Interface: - case Type2: { - return this.isSubtype(AbstractType, supertype); - } - case ParserRule: { - return this.isSubtype(AbstractRule, supertype) || this.isSubtype(AbstractType, supertype); - } - case TerminalRule: { - return this.isSubtype(AbstractRule, supertype); + return false; + }, "emptyString"); + domElement = /* @__PURE__ */ __name(function domElement2(obj) { + if (typeof HTMLElement === "undefined") { + return false; + } else { + return obj instanceof HTMLElement; + } + }, "domElement"); + boundingBox = /* @__PURE__ */ __name(function boundingBox2(obj) { + return plainObject(obj) && number$1(obj.x1) && number$1(obj.x2) && number$1(obj.y1) && number$1(obj.y2); + }, "boundingBox"); + promise = /* @__PURE__ */ __name(function promise2(obj) { + return object(obj) && fn$6(obj.then); + }, "promise"); + ms = /* @__PURE__ */ __name(function ms2() { + return navigator2 && navigator2.userAgent.match(/msie|trident|edge/i); + }, "ms"); + memoize2 = /* @__PURE__ */ __name(function memoize3(fn3, keyFn) { + if (!keyFn) { + keyFn = /* @__PURE__ */ __name(function keyFn2() { + if (arguments.length === 1) { + return arguments[0]; + } else if (arguments.length === 0) { + return "undefined"; } - default: { - return false; + var args = []; + for (var i2 = 0; i2 < arguments.length; i2++) { + args.push(arguments[i2]); } + return args.join("$"); + }, "keyFn"); + } + var _memoizedFn = /* @__PURE__ */ __name(function memoizedFn() { + var self2 = this; + var args = arguments; + var ret; + var k2 = keyFn.apply(self2, args); + var cache3 = _memoizedFn.cache; + if (!(ret = cache3[k2])) { + ret = cache3[k2] = fn3.apply(self2, args); + } + return ret; + }, "memoizedFn"); + _memoizedFn.cache = {}; + return _memoizedFn; + }, "memoize"); + camel2dash = memoize2(function(str2) { + return str2.replace(/([A-Z])/g, function(v3) { + return "-" + v3.toLowerCase(); + }); + }); + dash2camel = memoize2(function(str2) { + return str2.replace(/(-\w)/g, function(v3) { + return v3[1].toUpperCase(); + }); + }); + prependCamel = memoize2(function(prefix, str2) { + return prefix + str2[0].toUpperCase() + str2.substring(1); + }, function(prefix, str2) { + return prefix + "$" + str2; + }); + capitalize = /* @__PURE__ */ __name(function capitalize2(str2) { + if (emptyString(str2)) { + return str2; + } + return str2.charAt(0).toUpperCase() + str2.substring(1); + }, "capitalize"); + endsWith = /* @__PURE__ */ __name(function endsWith2(string3, suffix) { + return string3.slice(-1 * suffix.length) === suffix; + }, "endsWith"); + number6 = "(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))"; + rgba3 = "rgb[a]?\\((" + number6 + "[%]?)\\s*,\\s*(" + number6 + "[%]?)\\s*,\\s*(" + number6 + "[%]?)(?:\\s*,\\s*(" + number6 + "))?\\)"; + rgbaNoBackRefs = "rgb[a]?\\((?:" + number6 + "[%]?)\\s*,\\s*(?:" + number6 + "[%]?)\\s*,\\s*(?:" + number6 + "[%]?)(?:\\s*,\\s*(?:" + number6 + "))?\\)"; + hsla2 = "hsl[a]?\\((" + number6 + ")\\s*,\\s*(" + number6 + "[%])\\s*,\\s*(" + number6 + "[%])(?:\\s*,\\s*(" + number6 + "))?\\)"; + hslaNoBackRefs = "hsl[a]?\\((?:" + number6 + ")\\s*,\\s*(?:" + number6 + "[%])\\s*,\\s*(?:" + number6 + "[%])(?:\\s*,\\s*(?:" + number6 + "))?\\)"; + hex3 = "\\#[0-9a-fA-F]{3}"; + hex6 = "\\#[0-9a-fA-F]{6}"; + ascending3 = /* @__PURE__ */ __name(function ascending4(a2, b3) { + if (a2 < b3) { + return -1; + } else if (a2 > b3) { + return 1; + } else { + return 0; + } + }, "ascending"); + descending2 = /* @__PURE__ */ __name(function descending3(a2, b3) { + return -1 * ascending3(a2, b3); + }, "descending"); + extend4 = Object.assign != null ? Object.assign.bind(Object) : function(tgt) { + var args = arguments; + for (var i2 = 1; i2 < args.length; i2++) { + var obj = args[i2]; + if (obj == null) { + continue; + } + var keys2 = Object.keys(obj); + for (var j3 = 0; j3 < keys2.length; j3++) { + var k2 = keys2[j3]; + tgt[k2] = obj[k2]; } } - getReferenceType(refInfo) { - const referenceId = `${refInfo.container.$type}:${refInfo.property}`; - switch (referenceId) { - case "Action:type": - case "CrossReference:type": - case "Interface:superTypes": - case "ParserRule:returnType": - case "SimpleType:typeRef": { - return AbstractType; - } - case "Grammar:hiddenTokens": - case "ParserRule:hiddenTokens": - case "RuleCall:rule": { - return AbstractRule; + return tgt; + }; + hex2tuple = /* @__PURE__ */ __name(function hex2tuple2(hex2) { + if (!(hex2.length === 4 || hex2.length === 7) || hex2[0] !== "#") { + return; + } + var shortHex = hex2.length === 4; + var r2, g2, b3; + var base = 16; + if (shortHex) { + r2 = parseInt(hex2[1] + hex2[1], base); + g2 = parseInt(hex2[2] + hex2[2], base); + b3 = parseInt(hex2[3] + hex2[3], base); + } else { + r2 = parseInt(hex2[1] + hex2[2], base); + g2 = parseInt(hex2[3] + hex2[4], base); + b3 = parseInt(hex2[5] + hex2[6], base); + } + return [r2, g2, b3]; + }, "hex2tuple"); + hsl2tuple = /* @__PURE__ */ __name(function hsl2tuple2(hsl2) { + var ret; + var h3, s2, l4, a2, r2, g2, b3; + function hue2rgb(p4, q4, t4) { + if (t4 < 0) t4 += 1; + if (t4 > 1) t4 -= 1; + if (t4 < 1 / 6) return p4 + (q4 - p4) * 6 * t4; + if (t4 < 1 / 2) return q4; + if (t4 < 2 / 3) return p4 + (q4 - p4) * (2 / 3 - t4) * 6; + return p4; + } + __name(hue2rgb, "hue2rgb"); + var m3 = new RegExp("^" + hsla2 + "$").exec(hsl2); + if (m3) { + h3 = parseInt(m3[1]); + if (h3 < 0) { + h3 = (360 - -1 * h3 % 360) % 360; + } else if (h3 > 360) { + h3 = h3 % 360; + } + h3 /= 360; + s2 = parseFloat(m3[2]); + if (s2 < 0 || s2 > 100) { + return; + } + s2 = s2 / 100; + l4 = parseFloat(m3[3]); + if (l4 < 0 || l4 > 100) { + return; + } + l4 = l4 / 100; + a2 = m3[4]; + if (a2 !== void 0) { + a2 = parseFloat(a2); + if (a2 < 0 || a2 > 1) { + return; } - case "Grammar:usedGrammars": { - return Grammar; + } + if (s2 === 0) { + r2 = g2 = b3 = Math.round(l4 * 255); + } else { + var q3 = l4 < 0.5 ? l4 * (1 + s2) : l4 + s2 - l4 * s2; + var p3 = 2 * l4 - q3; + r2 = Math.round(255 * hue2rgb(p3, q3, h3 + 1 / 3)); + g2 = Math.round(255 * hue2rgb(p3, q3, h3)); + b3 = Math.round(255 * hue2rgb(p3, q3, h3 - 1 / 3)); + } + ret = [r2, g2, b3, a2]; + } + return ret; + }, "hsl2tuple"); + rgb2tuple = /* @__PURE__ */ __name(function rgb2tuple2(rgb2) { + var ret; + var m3 = new RegExp("^" + rgba3 + "$").exec(rgb2); + if (m3) { + ret = []; + var isPct = []; + for (var i2 = 1; i2 <= 3; i2++) { + var channel2 = m3[i2]; + if (channel2[channel2.length - 1] === "%") { + isPct[i2] = true; } - case "NamedArgument:parameter": - case "ParameterReference:parameter": { - return Parameter; + channel2 = parseFloat(channel2); + if (isPct[i2]) { + channel2 = channel2 / 100 * 255; } - case "TerminalRuleCall:rule": { - return TerminalRule; + if (channel2 < 0 || channel2 > 255) { + return; } - default: { - throw new Error(`${referenceId} is not a valid reference id.`); + ret.push(Math.floor(channel2)); + } + var atLeastOneIsPct = isPct[1] || isPct[2] || isPct[3]; + var allArePct = isPct[1] && isPct[2] && isPct[3]; + if (atLeastOneIsPct && !allArePct) { + return; + } + var alpha = m3[4]; + if (alpha !== void 0) { + alpha = parseFloat(alpha); + if (alpha < 0 || alpha > 1) { + return; } + ret.push(alpha); } } - getTypeMetaData(type3) { - switch (type3) { - case AbstractElement: { - return { - name: AbstractElement, - properties: [ - { name: "cardinality" }, - { name: "lookahead" } - ] - }; - } - case ArrayLiteral: { - return { - name: ArrayLiteral, - properties: [ - { name: "elements", defaultValue: [] } - ] - }; - } - case ArrayType: { - return { - name: ArrayType, - properties: [ - { name: "elementType" } - ] - }; - } - case BooleanLiteral: { - return { - name: BooleanLiteral, - properties: [ - { name: "true", defaultValue: false } - ] - }; - } - case Conjunction: { - return { - name: Conjunction, - properties: [ - { name: "left" }, - { name: "right" } - ] - }; + return ret; + }, "rgb2tuple"); + colorname2tuple = /* @__PURE__ */ __name(function colorname2tuple2(color2) { + return colors[color2.toLowerCase()]; + }, "colorname2tuple"); + color2tuple = /* @__PURE__ */ __name(function color2tuple2(color2) { + return (array2(color2) ? color2 : null) || colorname2tuple(color2) || hex2tuple(color2) || rgb2tuple(color2) || hsl2tuple(color2); + }, "color2tuple"); + colors = { + // special colour names + transparent: [0, 0, 0, 0], + // NB alpha === 0 + // regular colours + aliceblue: [240, 248, 255], + antiquewhite: [250, 235, 215], + aqua: [0, 255, 255], + aquamarine: [127, 255, 212], + azure: [240, 255, 255], + beige: [245, 245, 220], + bisque: [255, 228, 196], + black: [0, 0, 0], + blanchedalmond: [255, 235, 205], + blue: [0, 0, 255], + blueviolet: [138, 43, 226], + brown: [165, 42, 42], + burlywood: [222, 184, 135], + cadetblue: [95, 158, 160], + chartreuse: [127, 255, 0], + chocolate: [210, 105, 30], + coral: [255, 127, 80], + cornflowerblue: [100, 149, 237], + cornsilk: [255, 248, 220], + crimson: [220, 20, 60], + cyan: [0, 255, 255], + darkblue: [0, 0, 139], + darkcyan: [0, 139, 139], + darkgoldenrod: [184, 134, 11], + darkgray: [169, 169, 169], + darkgreen: [0, 100, 0], + darkgrey: [169, 169, 169], + darkkhaki: [189, 183, 107], + darkmagenta: [139, 0, 139], + darkolivegreen: [85, 107, 47], + darkorange: [255, 140, 0], + darkorchid: [153, 50, 204], + darkred: [139, 0, 0], + darksalmon: [233, 150, 122], + darkseagreen: [143, 188, 143], + darkslateblue: [72, 61, 139], + darkslategray: [47, 79, 79], + darkslategrey: [47, 79, 79], + darkturquoise: [0, 206, 209], + darkviolet: [148, 0, 211], + deeppink: [255, 20, 147], + deepskyblue: [0, 191, 255], + dimgray: [105, 105, 105], + dimgrey: [105, 105, 105], + dodgerblue: [30, 144, 255], + firebrick: [178, 34, 34], + floralwhite: [255, 250, 240], + forestgreen: [34, 139, 34], + fuchsia: [255, 0, 255], + gainsboro: [220, 220, 220], + ghostwhite: [248, 248, 255], + gold: [255, 215, 0], + goldenrod: [218, 165, 32], + gray: [128, 128, 128], + grey: [128, 128, 128], + green: [0, 128, 0], + greenyellow: [173, 255, 47], + honeydew: [240, 255, 240], + hotpink: [255, 105, 180], + indianred: [205, 92, 92], + indigo: [75, 0, 130], + ivory: [255, 255, 240], + khaki: [240, 230, 140], + lavender: [230, 230, 250], + lavenderblush: [255, 240, 245], + lawngreen: [124, 252, 0], + lemonchiffon: [255, 250, 205], + lightblue: [173, 216, 230], + lightcoral: [240, 128, 128], + lightcyan: [224, 255, 255], + lightgoldenrodyellow: [250, 250, 210], + lightgray: [211, 211, 211], + lightgreen: [144, 238, 144], + lightgrey: [211, 211, 211], + lightpink: [255, 182, 193], + lightsalmon: [255, 160, 122], + lightseagreen: [32, 178, 170], + lightskyblue: [135, 206, 250], + lightslategray: [119, 136, 153], + lightslategrey: [119, 136, 153], + lightsteelblue: [176, 196, 222], + lightyellow: [255, 255, 224], + lime: [0, 255, 0], + limegreen: [50, 205, 50], + linen: [250, 240, 230], + magenta: [255, 0, 255], + maroon: [128, 0, 0], + mediumaquamarine: [102, 205, 170], + mediumblue: [0, 0, 205], + mediumorchid: [186, 85, 211], + mediumpurple: [147, 112, 219], + mediumseagreen: [60, 179, 113], + mediumslateblue: [123, 104, 238], + mediumspringgreen: [0, 250, 154], + mediumturquoise: [72, 209, 204], + mediumvioletred: [199, 21, 133], + midnightblue: [25, 25, 112], + mintcream: [245, 255, 250], + mistyrose: [255, 228, 225], + moccasin: [255, 228, 181], + navajowhite: [255, 222, 173], + navy: [0, 0, 128], + oldlace: [253, 245, 230], + olive: [128, 128, 0], + olivedrab: [107, 142, 35], + orange: [255, 165, 0], + orangered: [255, 69, 0], + orchid: [218, 112, 214], + palegoldenrod: [238, 232, 170], + palegreen: [152, 251, 152], + paleturquoise: [175, 238, 238], + palevioletred: [219, 112, 147], + papayawhip: [255, 239, 213], + peachpuff: [255, 218, 185], + peru: [205, 133, 63], + pink: [255, 192, 203], + plum: [221, 160, 221], + powderblue: [176, 224, 230], + purple: [128, 0, 128], + red: [255, 0, 0], + rosybrown: [188, 143, 143], + royalblue: [65, 105, 225], + saddlebrown: [139, 69, 19], + salmon: [250, 128, 114], + sandybrown: [244, 164, 96], + seagreen: [46, 139, 87], + seashell: [255, 245, 238], + sienna: [160, 82, 45], + silver: [192, 192, 192], + skyblue: [135, 206, 235], + slateblue: [106, 90, 205], + slategray: [112, 128, 144], + slategrey: [112, 128, 144], + snow: [255, 250, 250], + springgreen: [0, 255, 127], + steelblue: [70, 130, 180], + tan: [210, 180, 140], + teal: [0, 128, 128], + thistle: [216, 191, 216], + tomato: [255, 99, 71], + turquoise: [64, 224, 208], + violet: [238, 130, 238], + wheat: [245, 222, 179], + white: [255, 255, 255], + whitesmoke: [245, 245, 245], + yellow: [255, 255, 0], + yellowgreen: [154, 205, 50] + }; + setMap = /* @__PURE__ */ __name(function setMap2(options2) { + var obj = options2.map; + var keys2 = options2.keys; + var l4 = keys2.length; + for (var i2 = 0; i2 < l4; i2++) { + var key = keys2[i2]; + if (plainObject(key)) { + throw Error("Tried to set map with object key"); + } + if (i2 < keys2.length - 1) { + if (obj[key] == null) { + obj[key] = {}; } - case Disjunction: { - return { - name: Disjunction, - properties: [ - { name: "left" }, - { name: "right" } - ] - }; + obj = obj[key]; + } else { + obj[key] = options2.value; + } + } + }, "setMap"); + getMap = /* @__PURE__ */ __name(function getMap2(options2) { + var obj = options2.map; + var keys2 = options2.keys; + var l4 = keys2.length; + for (var i2 = 0; i2 < l4; i2++) { + var key = keys2[i2]; + if (plainObject(key)) { + throw Error("Tried to get map with object key"); + } + obj = obj[key]; + if (obj == null) { + return obj; + } + } + return obj; + }, "getMap"); + commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; + __name(getDefaultExportFromCjs, "getDefaultExportFromCjs"); + __name(requireIsObject, "requireIsObject"); + __name(require_freeGlobal, "require_freeGlobal"); + __name(require_root, "require_root"); + __name(requireNow, "requireNow"); + __name(require_trimmedEndIndex, "require_trimmedEndIndex"); + __name(require_baseTrim, "require_baseTrim"); + __name(require_Symbol, "require_Symbol"); + __name(require_getRawTag, "require_getRawTag"); + __name(require_objectToString, "require_objectToString"); + __name(require_baseGetTag, "require_baseGetTag"); + __name(requireIsObjectLike, "requireIsObjectLike"); + __name(requireIsSymbol, "requireIsSymbol"); + __name(requireToNumber, "requireToNumber"); + __name(requireDebounce, "requireDebounce"); + debounceExports = requireDebounce(); + debounce = /* @__PURE__ */ getDefaultExportFromCjs(debounceExports); + performance$1 = _window ? _window.performance : null; + pnow = performance$1 && performance$1.now ? function() { + return performance$1.now(); + } : function() { + return Date.now(); + }; + raf = (function() { + if (_window) { + if (_window.requestAnimationFrame) { + return function(fn3) { + _window.requestAnimationFrame(fn3); + }; + } else if (_window.mozRequestAnimationFrame) { + return function(fn3) { + _window.mozRequestAnimationFrame(fn3); + }; + } else if (_window.webkitRequestAnimationFrame) { + return function(fn3) { + _window.webkitRequestAnimationFrame(fn3); + }; + } else if (_window.msRequestAnimationFrame) { + return function(fn3) { + _window.msRequestAnimationFrame(fn3); + }; + } + } + return function(fn3) { + if (fn3) { + setTimeout(function() { + fn3(pnow()); + }, 1e3 / 60); + } + }; + })(); + requestAnimationFrame2 = /* @__PURE__ */ __name(function requestAnimationFrame3(fn3) { + return raf(fn3); + }, "requestAnimationFrame"); + performanceNow = pnow; + DEFAULT_HASH_SEED = 9261; + K4 = 65599; + DEFAULT_HASH_SEED_ALT = 5381; + hashIterableInts = /* @__PURE__ */ __name(function hashIterableInts2(iterator) { + var seed = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : DEFAULT_HASH_SEED; + var hash = seed; + var entry; + for (; ; ) { + entry = iterator.next(); + if (entry.done) { + break; + } + hash = hash * K4 + entry.value | 0; + } + return hash; + }, "hashIterableInts"); + hashInt = /* @__PURE__ */ __name(function hashInt2(num) { + var seed = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : DEFAULT_HASH_SEED; + return seed * K4 + num | 0; + }, "hashInt"); + hashIntAlt = /* @__PURE__ */ __name(function hashIntAlt2(num) { + var seed = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : DEFAULT_HASH_SEED_ALT; + return (seed << 5) + seed + num | 0; + }, "hashIntAlt"); + combineHashes = /* @__PURE__ */ __name(function combineHashes2(hash1, hash2) { + return hash1 * 2097152 + hash2; + }, "combineHashes"); + combineHashesArray = /* @__PURE__ */ __name(function combineHashesArray2(hashes) { + return hashes[0] * 2097152 + hashes[1]; + }, "combineHashesArray"); + hashArrays = /* @__PURE__ */ __name(function hashArrays2(hashes1, hashes2) { + return [hashInt(hashes1[0], hashes2[0]), hashIntAlt(hashes1[1], hashes2[1])]; + }, "hashArrays"); + hashIntsArray = /* @__PURE__ */ __name(function hashIntsArray2(ints, seed) { + var entry = { + value: 0, + done: false + }; + var i2 = 0; + var length2 = ints.length; + var iterator = { + next: /* @__PURE__ */ __name(function next3() { + if (i2 < length2) { + entry.value = ints[i2++]; + } else { + entry.done = true; } - case Grammar: { - return { - name: Grammar, - properties: [ - { name: "definesHiddenTokens", defaultValue: false }, - { name: "hiddenTokens", defaultValue: [] }, - { name: "imports", defaultValue: [] }, - { name: "interfaces", defaultValue: [] }, - { name: "isDeclared", defaultValue: false }, - { name: "name" }, - { name: "rules", defaultValue: [] }, - { name: "types", defaultValue: [] }, - { name: "usedGrammars", defaultValue: [] } - ] - }; + return entry; + }, "next") + }; + return hashIterableInts(iterator, seed); + }, "hashIntsArray"); + hashString = /* @__PURE__ */ __name(function hashString2(str2, seed) { + var entry = { + value: 0, + done: false + }; + var i2 = 0; + var length2 = str2.length; + var iterator = { + next: /* @__PURE__ */ __name(function next3() { + if (i2 < length2) { + entry.value = str2.charCodeAt(i2++); + } else { + entry.done = true; } - case GrammarImport: { - return { - name: GrammarImport, - properties: [ - { name: "path" } - ] - }; + return entry; + }, "next") + }; + return hashIterableInts(iterator, seed); + }, "hashString"); + hashStrings = /* @__PURE__ */ __name(function hashStrings2() { + return hashStringsArray(arguments); + }, "hashStrings"); + hashStringsArray = /* @__PURE__ */ __name(function hashStringsArray2(strs) { + var hash; + for (var i2 = 0; i2 < strs.length; i2++) { + var str2 = strs[i2]; + if (i2 === 0) { + hash = hashString(str2); + } else { + hash = hashString(str2, hash); + } + } + return hash; + }, "hashStringsArray"); + __name(rotatePoint, "rotatePoint"); + movePointByBoxAspect = /* @__PURE__ */ __name(function movePointByBoxAspect2(x5, y6, boxX, boxY, skewX, skewY) { + return { + x: (x5 - boxX) * skewX + boxX, + y: (y6 - boxY) * skewY + boxY + }; + }, "movePointByBoxAspect"); + __name(rotatePosAndSkewByBox, "rotatePosAndSkewByBox"); + warningsEnabled = true; + warnSupported = console.warn != null; + traceSupported = console.trace != null; + MAX_INT$1 = Number.MAX_SAFE_INTEGER || 9007199254740991; + trueify = /* @__PURE__ */ __name(function trueify2() { + return true; + }, "trueify"); + falsify = /* @__PURE__ */ __name(function falsify2() { + return false; + }, "falsify"); + zeroify = /* @__PURE__ */ __name(function zeroify2() { + return 0; + }, "zeroify"); + noop$1 = /* @__PURE__ */ __name(function noop3() { + }, "noop"); + error = /* @__PURE__ */ __name(function error2(msg) { + throw new Error(msg); + }, "error"); + warnings = /* @__PURE__ */ __name(function warnings2(enabled) { + if (enabled !== void 0) { + warningsEnabled = !!enabled; + } else { + return warningsEnabled; + } + }, "warnings"); + warn = /* @__PURE__ */ __name(function warn2(msg) { + if (!warnings()) { + return; + } + if (warnSupported) { + console.warn(msg); + } else { + console.log(msg); + if (traceSupported) { + console.trace(); + } + } + }, "warn"); + clone3 = /* @__PURE__ */ __name(function clone4(obj) { + return extend4({}, obj); + }, "clone"); + copy3 = /* @__PURE__ */ __name(function copy4(obj) { + if (obj == null) { + return obj; + } + if (array2(obj)) { + return obj.slice(); + } else if (plainObject(obj)) { + return clone3(obj); + } else { + return obj; + } + }, "copy"); + copyArray2 = /* @__PURE__ */ __name(function copyArray3(arr) { + return arr.slice(); + }, "copyArray"); + uuid = /* @__PURE__ */ __name(function uuid2(a2, b3) { + for ( + // loop :) + b3 = a2 = ""; + // b - result , a - numeric letiable + a2++ < 36; + // + b3 += a2 * 51 & 52 ? ( + // return a random number or 4 + (a2 ^ 15 ? ( + // generate a random number from 0 to 15 + 8 ^ Math.random() * (a2 ^ 20 ? 16 : 4) + ) : 4).toString(16) + ) : "-" + ) ; + return b3; + }, "uuid"); + _staticEmptyObject = {}; + staticEmptyObject = /* @__PURE__ */ __name(function staticEmptyObject2() { + return _staticEmptyObject; + }, "staticEmptyObject"); + defaults$g = /* @__PURE__ */ __name(function defaults2(_defaults) { + var keys2 = Object.keys(_defaults); + return function(opts) { + var filledOpts = {}; + for (var i2 = 0; i2 < keys2.length; i2++) { + var key = keys2[i2]; + var optVal = opts == null ? void 0 : opts[key]; + filledOpts[key] = optVal === void 0 ? _defaults[key] : optVal; + } + return filledOpts; + }; + }, "defaults"); + removeFromArray = /* @__PURE__ */ __name(function removeFromArray2(arr, ele, oneCopy) { + for (var i2 = arr.length - 1; i2 >= 0; i2--) { + if (arr[i2] === ele) { + arr.splice(i2, 1); + } + } + }, "removeFromArray"); + clearArray = /* @__PURE__ */ __name(function clearArray2(arr) { + arr.splice(0, arr.length); + }, "clearArray"); + push = /* @__PURE__ */ __name(function push2(arr, otherArr) { + for (var i2 = 0; i2 < otherArr.length; i2++) { + var el = otherArr[i2]; + arr.push(el); + } + }, "push"); + getPrefixedProperty = /* @__PURE__ */ __name(function getPrefixedProperty2(obj, propName, prefix) { + if (prefix) { + propName = prependCamel(prefix, propName); + } + return obj[propName]; + }, "getPrefixedProperty"); + setPrefixedProperty = /* @__PURE__ */ __name(function setPrefixedProperty2(obj, propName, prefix, value2) { + if (prefix) { + propName = prependCamel(prefix, propName); + } + obj[propName] = value2; + }, "setPrefixedProperty"); + ObjectMap = /* @__PURE__ */ (function() { + function ObjectMap2() { + _classCallCheck(this, ObjectMap2); + this._obj = {}; + } + __name(ObjectMap2, "ObjectMap"); + return _createClass(ObjectMap2, [{ + key: "set", + value: /* @__PURE__ */ __name(function set5(key, val) { + this._obj[key] = val; + return this; + }, "set") + }, { + key: "delete", + value: /* @__PURE__ */ __name(function _delete(key) { + this._obj[key] = void 0; + return this; + }, "_delete") + }, { + key: "clear", + value: /* @__PURE__ */ __name(function clear19() { + this._obj = {}; + }, "clear") + }, { + key: "has", + value: /* @__PURE__ */ __name(function has2(key) { + return this._obj[key] !== void 0; + }, "has") + }, { + key: "get", + value: /* @__PURE__ */ __name(function get5(key) { + return this._obj[key]; + }, "get") + }]); + })(); + Map$1 = typeof Map !== "undefined" ? Map : ObjectMap; + undef = "undefined"; + ObjectSet = /* @__PURE__ */ (function() { + function ObjectSet2(arrayOrObjectSet) { + _classCallCheck(this, ObjectSet2); + this._obj = /* @__PURE__ */ Object.create(null); + this.size = 0; + if (arrayOrObjectSet != null) { + var arr; + if (arrayOrObjectSet.instanceString != null && arrayOrObjectSet.instanceString() === this.instanceString()) { + arr = arrayOrObjectSet.toArray(); + } else { + arr = arrayOrObjectSet; } - case InferredType: { - return { - name: InferredType, - properties: [ - { name: "name" } - ] - }; + for (var i2 = 0; i2 < arr.length; i2++) { + this.add(arr[i2]); } - case Interface: { - return { - name: Interface, - properties: [ - { name: "attributes", defaultValue: [] }, - { name: "name" }, - { name: "superTypes", defaultValue: [] } - ] - }; + } + } + __name(ObjectSet2, "ObjectSet"); + return _createClass(ObjectSet2, [{ + key: "instanceString", + value: /* @__PURE__ */ __name(function instanceString4() { + return "set"; + }, "instanceString") + }, { + key: "add", + value: /* @__PURE__ */ __name(function add3(val) { + var o2 = this._obj; + if (o2[val] !== 1) { + o2[val] = 1; + this.size++; } - case NamedArgument: { - return { - name: NamedArgument, - properties: [ - { name: "calledByName", defaultValue: false }, - { name: "parameter" }, - { name: "value" } - ] - }; + }, "add") + }, { + key: "delete", + value: /* @__PURE__ */ __name(function _delete(val) { + var o2 = this._obj; + if (o2[val] === 1) { + o2[val] = 0; + this.size--; } - case Negation: { - return { - name: Negation, - properties: [ - { name: "value" } - ] - }; + }, "_delete") + }, { + key: "clear", + value: /* @__PURE__ */ __name(function clear19() { + this._obj = /* @__PURE__ */ Object.create(null); + }, "clear") + }, { + key: "has", + value: /* @__PURE__ */ __name(function has2(val) { + return this._obj[val] === 1; + }, "has") + }, { + key: "toArray", + value: /* @__PURE__ */ __name(function toArray3() { + var _this = this; + return Object.keys(this._obj).filter(function(key) { + return _this.has(key); + }); + }, "toArray") + }, { + key: "forEach", + value: /* @__PURE__ */ __name(function forEach3(callback, thisArg) { + return this.toArray().forEach(callback, thisArg); + }, "forEach") + }]); + })(); + Set$1 = (typeof Set === "undefined" ? "undefined" : _typeof(Set)) !== undef ? Set : ObjectSet; + Element = /* @__PURE__ */ __name(function Element2(cy, params) { + var restore = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; + if (cy === void 0 || params === void 0 || !core2(cy)) { + error("An element must have a core reference and parameters set"); + return; + } + var group2 = params.group; + if (group2 == null) { + if (params.data && params.data.source != null && params.data.target != null) { + group2 = "edges"; + } else { + group2 = "nodes"; + } + } + if (group2 !== "nodes" && group2 !== "edges") { + error("An element must be of type `nodes` or `edges`; you specified `" + group2 + "`"); + return; + } + this.length = 1; + this[0] = this; + var _p = this._private = { + cy, + single: true, + // indicates this is an element + data: params.data || {}, + // data object + position: params.position || { + x: 0, + y: 0 + }, + // (x, y) position pair + autoWidth: void 0, + // width and height of nodes calculated by the renderer when set to special 'auto' value + autoHeight: void 0, + autoPadding: void 0, + compoundBoundsClean: false, + // whether the compound dimensions need to be recalculated the next time dimensions are read + listeners: [], + // array of bound listeners + group: group2, + // string; 'nodes' or 'edges' + style: {}, + // properties as set by the style + rstyle: {}, + // properties for style sent from the renderer to the core + styleCxts: [], + // applied style contexts from the styler + styleKeys: {}, + // per-group keys of style property values + removed: true, + // whether it's inside the vis; true if removed (set true here since we call restore) + selected: params.selected ? true : false, + // whether it's selected + selectable: params.selectable === void 0 ? true : params.selectable ? true : false, + // whether it's selectable + locked: params.locked ? true : false, + // whether the element is locked (cannot be moved) + grabbed: false, + // whether the element is grabbed by the mouse; renderer sets this privately + grabbable: params.grabbable === void 0 ? true : params.grabbable ? true : false, + // whether the element can be grabbed + pannable: params.pannable === void 0 ? group2 === "edges" ? true : false : params.pannable ? true : false, + // whether the element has passthrough panning enabled + active: false, + // whether the element is active from user interaction + classes: new Set$1(), + // map ( className => true ) + animation: { + // object for currently-running animations + current: [], + queue: [] + }, + rscratch: {}, + // object in which the renderer can store information + scratch: params.scratch || {}, + // scratch objects + edges: [], + // array of connected edges + children: [], + // array of children + parent: params.parent && params.parent.isNode() ? params.parent : null, + // parent ref + traversalCache: {}, + // cache of output of traversal functions + backgrounding: false, + // whether background images are loading + bbCache: null, + // cache of the current bounding box + bbCacheShift: { + x: 0, + y: 0 + }, + // shift applied to cached bb to be applied on next get + bodyBounds: null, + // bounds cache of element body, w/o overlay + overlayBounds: null, + // bounds cache of element body, including overlay + labelBounds: { + // bounds cache of labels + all: null, + source: null, + target: null, + main: null + }, + arrowBounds: { + // bounds cache of edge arrows + source: null, + target: null, + "mid-source": null, + "mid-target": null + } + }; + if (_p.position.x == null) { + _p.position.x = 0; + } + if (_p.position.y == null) { + _p.position.y = 0; + } + if (params.renderedPosition) { + var rpos = params.renderedPosition; + var pan2 = cy.pan(); + var zoom2 = cy.zoom(); + _p.position = { + x: (rpos.x - pan2.x) / zoom2, + y: (rpos.y - pan2.y) / zoom2 + }; + } + var classes3 = []; + if (array2(params.classes)) { + classes3 = params.classes; + } else if (string(params.classes)) { + classes3 = params.classes.split(/\s+/); + } + for (var i2 = 0, l4 = classes3.length; i2 < l4; i2++) { + var cls = classes3[i2]; + if (!cls || cls === "") { + continue; + } + _p.classes.add(cls); + } + this.createEmitter(); + if (restore === void 0 || restore) { + this.restore(); + } + var bypass = params.style || params.css; + if (bypass) { + warn("Setting a `style` bypass at element creation should be done only when absolutely necessary. Try to use the stylesheet instead."); + this.style(bypass); + } + }, "Element"); + defineSearch = /* @__PURE__ */ __name(function defineSearch2(params) { + params = { + bfs: params.bfs || !params.dfs, + dfs: params.dfs || !params.bfs + }; + return /* @__PURE__ */ __name(function searchFn(roots, fn3, directed) { + var options2; + if (plainObject(roots) && !elementOrCollection(roots)) { + options2 = roots; + roots = options2.roots || options2.root; + fn3 = options2.visit; + directed = options2.directed; + } + directed = arguments.length === 2 && !fn$6(fn3) ? fn3 : directed; + fn3 = fn$6(fn3) ? fn3 : function() { + }; + var cy = this._private.cy; + var v3 = roots = string(roots) ? this.filter(roots) : roots; + var Q3 = []; + var connectedNodes = []; + var connectedBy = {}; + var id2depth = {}; + var V3 = {}; + var j3 = 0; + var found; + var _this$byGroup = this.byGroup(), nodes5 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; + for (var i2 = 0; i2 < v3.length; i2++) { + var vi2 = v3[i2]; + var viId = vi2.id(); + if (vi2.isNode()) { + Q3.unshift(vi2); + if (params.bfs) { + V3[viId] = true; + connectedNodes.push(vi2); + } + id2depth[viId] = 0; } - case NumberLiteral: { - return { - name: NumberLiteral, - properties: [ - { name: "value" } - ] - }; + } + var _loop = /* @__PURE__ */ __name(function _loop2() { + var v5 = params.bfs ? Q3.shift() : Q3.pop(); + var vId = v5.id(); + if (params.dfs) { + if (V3[vId]) { + return 0; + } + V3[vId] = true; + connectedNodes.push(v5); } - case Parameter: { - return { - name: Parameter, - properties: [ - { name: "name" } - ] - }; + var depth = id2depth[vId]; + var prevEdge = connectedBy[vId]; + var src = prevEdge != null ? prevEdge.source() : null; + var tgt = prevEdge != null ? prevEdge.target() : null; + var prevNode = prevEdge == null ? void 0 : v5.same(src) ? tgt[0] : src[0]; + var ret; + ret = fn3(v5, prevEdge, prevNode, j3++, depth); + if (ret === true) { + found = v5; + return 1; } - case ParameterReference: { - return { - name: ParameterReference, - properties: [ - { name: "parameter" } - ] - }; + if (ret === false) { + return 1; } - case ParserRule: { - return { - name: ParserRule, - properties: [ - { name: "dataType" }, - { name: "definesHiddenTokens", defaultValue: false }, - { name: "definition" }, - { name: "entry", defaultValue: false }, - { name: "fragment", defaultValue: false }, - { name: "hiddenTokens", defaultValue: [] }, - { name: "inferredType" }, - { name: "name" }, - { name: "parameters", defaultValue: [] }, - { name: "returnType" }, - { name: "wildcard", defaultValue: false } - ] - }; + var vwEdges = v5.connectedEdges().filter(function(e4) { + return (!directed || e4.source().same(v5)) && edges3.has(e4); + }); + for (var _i2 = 0; _i2 < vwEdges.length; _i2++) { + var e3 = vwEdges[_i2]; + var w4 = e3.connectedNodes().filter(function(n2) { + return !n2.same(v5) && nodes5.has(n2); + }); + var wId = w4.id(); + if (w4.length !== 0 && !V3[wId]) { + w4 = w4[0]; + Q3.push(w4); + if (params.bfs) { + V3[wId] = true; + connectedNodes.push(w4); + } + connectedBy[wId] = e3; + id2depth[wId] = id2depth[vId] + 1; + } } - case ReferenceType: { - return { - name: ReferenceType, - properties: [ - { name: "referenceType" } - ] - }; + }, "_loop"), _ret; + while (Q3.length !== 0) { + _ret = _loop(); + if (_ret === 0) continue; + if (_ret === 1) break; + } + var connectedEles = cy.collection(); + for (var _i = 0; _i < connectedNodes.length; _i++) { + var node2 = connectedNodes[_i]; + var edge = connectedBy[node2.id()]; + if (edge != null) { + connectedEles.push(edge); } - case ReturnType: { - return { - name: ReturnType, - properties: [ - { name: "name" } - ] - }; + connectedEles.push(node2); + } + return { + path: cy.collection(connectedEles), + found: cy.collection(found) + }; + }, "searchFn"); + }, "defineSearch"); + elesfn$v = { + breadthFirstSearch: defineSearch({ + bfs: true + }), + depthFirstSearch: defineSearch({ + dfs: true + }) + }; + elesfn$v.bfs = elesfn$v.breadthFirstSearch; + elesfn$v.dfs = elesfn$v.depthFirstSearch; + heap$2 = { exports: {} }; + heap$1 = heap$2.exports; + __name(requireHeap$1, "requireHeap$1"); + __name(requireHeap, "requireHeap"); + heapExports = requireHeap(); + Heap = /* @__PURE__ */ getDefaultExportFromCjs(heapExports); + dijkstraDefaults = defaults$g({ + root: null, + weight: /* @__PURE__ */ __name(function weight(edge) { + return 1; + }, "weight"), + directed: false + }); + elesfn$u = { + dijkstra: /* @__PURE__ */ __name(function dijkstra2(options2) { + if (!plainObject(options2)) { + var args = arguments; + options2 = { + root: args[0], + weight: args[1], + directed: args[2] + }; + } + var _dijkstraDefaults = dijkstraDefaults(options2), root3 = _dijkstraDefaults.root, weight8 = _dijkstraDefaults.weight, directed = _dijkstraDefaults.directed; + var eles = this; + var weightFn = weight8; + var source = string(root3) ? this.filter(root3)[0] : root3[0]; + var dist3 = {}; + var prev2 = {}; + var knownDist = {}; + var _this$byGroup = this.byGroup(), nodes5 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; + edges3.unmergeBy(function(ele) { + return ele.isLoop(); + }); + var getDist3 = /* @__PURE__ */ __name(function getDist4(node3) { + return dist3[node3.id()]; + }, "getDist"); + var setDist = /* @__PURE__ */ __name(function setDist2(node3, d3) { + dist3[node3.id()] = d3; + Q3.updateItem(node3); + }, "setDist"); + var Q3 = new Heap(function(a2, b3) { + return getDist3(a2) - getDist3(b3); + }); + for (var i2 = 0; i2 < nodes5.length; i2++) { + var node2 = nodes5[i2]; + dist3[node2.id()] = node2.same(source) ? 0 : Infinity; + Q3.push(node2); + } + var distBetween = /* @__PURE__ */ __name(function distBetween2(u3, v5) { + var uvs = (directed ? u3.edgesTo(v5) : u3.edgesWith(v5)).intersect(edges3); + var smallestDistance = Infinity; + var smallestEdge; + for (var _i = 0; _i < uvs.length; _i++) { + var edge = uvs[_i]; + var _weight = weightFn(edge); + if (_weight < smallestDistance || !smallestEdge) { + smallestDistance = _weight; + smallestEdge = edge; + } } - case SimpleType: { - return { - name: SimpleType, - properties: [ - { name: "primitiveType" }, - { name: "stringType" }, - { name: "typeRef" } - ] - }; + return { + edge: smallestEdge, + dist: smallestDistance + }; + }, "distBetween"); + while (Q3.size() > 0) { + var u2 = Q3.pop(); + var smalletsDist = getDist3(u2); + var uid = u2.id(); + knownDist[uid] = smalletsDist; + if (smalletsDist === Infinity) { + continue; } - case StringLiteral: { - return { - name: StringLiteral, - properties: [ - { name: "value" } - ] - }; + var neighbors = u2.neighborhood().intersect(nodes5); + for (var _i2 = 0; _i2 < neighbors.length; _i2++) { + var v3 = neighbors[_i2]; + var vid = v3.id(); + var vDist = distBetween(u2, v3); + var alt = smalletsDist + vDist.dist; + if (alt < getDist3(v3)) { + setDist(v3, alt); + prev2[vid] = { + node: u2, + edge: vDist.edge + }; + } } - case TerminalRule: { - return { - name: TerminalRule, - properties: [ - { name: "definition" }, - { name: "fragment", defaultValue: false }, - { name: "hidden", defaultValue: false }, - { name: "name" }, - { name: "type" } - ] - }; + } + return { + distanceTo: /* @__PURE__ */ __name(function distanceTo(node3) { + var target = string(node3) ? nodes5.filter(node3)[0] : node3[0]; + return knownDist[target.id()]; + }, "distanceTo"), + pathTo: /* @__PURE__ */ __name(function pathTo(node3) { + var target = string(node3) ? nodes5.filter(node3)[0] : node3[0]; + var S4 = []; + var u3 = target; + var uid2 = u3.id(); + if (target.length > 0) { + S4.unshift(target); + while (prev2[uid2]) { + var p3 = prev2[uid2]; + S4.unshift(p3.edge); + S4.unshift(p3.node); + u3 = p3.node; + uid2 = u3.id(); + } + } + return eles.spawn(S4); + }, "pathTo") + }; + }, "dijkstra") + }; + elesfn$t = { + // kruskal's algorithm (finds min spanning tree, assuming undirected graph) + // implemented from pseudocode from wikipedia + kruskal: /* @__PURE__ */ __name(function kruskal(weightFn) { + weightFn = weightFn || function(edge2) { + return 1; + }; + var _this$byGroup = this.byGroup(), nodes5 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; + var numNodes = nodes5.length; + var forest = new Array(numNodes); + var A2 = nodes5; + var findSetIndex = /* @__PURE__ */ __name(function findSetIndex2(ele) { + for (var i3 = 0; i3 < forest.length; i3++) { + var eles = forest[i3]; + if (eles.has(ele)) { + return i3; + } } - case Type2: { - return { - name: Type2, - properties: [ - { name: "name" }, - { name: "type" } - ] - }; + }, "findSetIndex"); + for (var i2 = 0; i2 < numNodes; i2++) { + forest[i2] = this.spawn(nodes5[i2]); + } + var S4 = edges3.sort(function(a2, b3) { + return weightFn(a2) - weightFn(b3); + }); + for (var _i = 0; _i < S4.length; _i++) { + var edge = S4[_i]; + var u2 = edge.source()[0]; + var v3 = edge.target()[0]; + var setUIndex = findSetIndex(u2); + var setVIndex = findSetIndex(v3); + var setU = forest[setUIndex]; + var setV = forest[setVIndex]; + if (setUIndex !== setVIndex) { + A2.merge(edge); + setU.merge(setV); + forest.splice(setVIndex, 1); } - case TypeAttribute: { - return { - name: TypeAttribute, - properties: [ - { name: "defaultValue" }, - { name: "isOptional", defaultValue: false }, - { name: "name" }, - { name: "type" } - ] - }; - } - case UnionType: { - return { - name: UnionType, - properties: [ - { name: "types", defaultValue: [] } - ] - }; - } - case Action: { + } + return A2; + }, "kruskal") + }; + aStarDefaults = defaults$g({ + root: null, + goal: null, + weight: /* @__PURE__ */ __name(function weight2(edge) { + return 1; + }, "weight"), + heuristic: /* @__PURE__ */ __name(function heuristic(edge) { + return 0; + }, "heuristic"), + directed: false + }); + elesfn$s = { + // Implemented from pseudocode from wikipedia + aStar: /* @__PURE__ */ __name(function aStar(options2) { + var cy = this.cy(); + var _aStarDefaults = aStarDefaults(options2), root3 = _aStarDefaults.root, goal = _aStarDefaults.goal, heuristic2 = _aStarDefaults.heuristic, directed = _aStarDefaults.directed, weight8 = _aStarDefaults.weight; + root3 = cy.collection(root3)[0]; + goal = cy.collection(goal)[0]; + var sid = root3.id(); + var tid = goal.id(); + var gScore = {}; + var fScore = {}; + var closedSetIds = {}; + var openSet = new Heap(function(a2, b3) { + return fScore[a2.id()] - fScore[b3.id()]; + }); + var openSetIds = new Set$1(); + var cameFrom = {}; + var cameFromEdge = {}; + var addToOpenSet = /* @__PURE__ */ __name(function addToOpenSet2(ele, id30) { + openSet.push(ele); + openSetIds.add(id30); + }, "addToOpenSet"); + var cMin, cMinId; + var popFromOpenSet = /* @__PURE__ */ __name(function popFromOpenSet2() { + cMin = openSet.pop(); + cMinId = cMin.id(); + openSetIds["delete"](cMinId); + }, "popFromOpenSet"); + var isInOpenSet = /* @__PURE__ */ __name(function isInOpenSet2(id30) { + return openSetIds.has(id30); + }, "isInOpenSet"); + addToOpenSet(root3, sid); + gScore[sid] = 0; + fScore[sid] = heuristic2(root3); + var steps = 0; + while (openSet.size() > 0) { + popFromOpenSet(); + steps++; + if (cMinId === tid) { + var path4 = []; + var pathNode = goal; + var pathNodeId = tid; + var pathEdge = cameFromEdge[pathNodeId]; + for (; ; ) { + path4.unshift(pathNode); + if (pathEdge != null) { + path4.unshift(pathEdge); + } + pathNode = cameFrom[pathNodeId]; + if (pathNode == null) { + break; + } + pathNodeId = pathNode.id(); + pathEdge = cameFromEdge[pathNodeId]; + } return { - name: Action, - properties: [ - { name: "cardinality" }, - { name: "feature" }, - { name: "inferredType" }, - { name: "lookahead" }, - { name: "operator" }, - { name: "type" } - ] + found: true, + distance: gScore[cMinId], + path: this.spawn(path4), + steps }; } - case Alternatives: { - return { - name: Alternatives, - properties: [ - { name: "cardinality" }, - { name: "elements", defaultValue: [] }, - { name: "lookahead" } - ] - }; + closedSetIds[cMinId] = true; + var vwEdges = cMin._private.edges; + for (var i2 = 0; i2 < vwEdges.length; i2++) { + var e3 = vwEdges[i2]; + if (!this.hasElementWithId(e3.id())) { + continue; + } + if (directed && e3.data("source") !== cMinId) { + continue; + } + var wSrc = e3.source(); + var wTgt = e3.target(); + var w4 = wSrc.id() !== cMinId ? wSrc : wTgt; + var wid = w4.id(); + if (!this.hasElementWithId(wid)) { + continue; + } + if (closedSetIds[wid]) { + continue; + } + var tempScore = gScore[cMinId] + weight8(e3); + if (!isInOpenSet(wid)) { + gScore[wid] = tempScore; + fScore[wid] = tempScore + heuristic2(w4); + addToOpenSet(w4, wid); + cameFrom[wid] = cMin; + cameFromEdge[wid] = e3; + continue; + } + if (tempScore < gScore[wid]) { + gScore[wid] = tempScore; + fScore[wid] = tempScore + heuristic2(w4); + cameFrom[wid] = cMin; + cameFromEdge[wid] = e3; + } } - case Assignment: { - return { - name: Assignment, - properties: [ - { name: "cardinality" }, - { name: "feature" }, - { name: "lookahead" }, - { name: "operator" }, - { name: "terminal" } - ] - }; + } + return { + found: false, + distance: void 0, + path: void 0, + steps + }; + }, "aStar") + }; + floydWarshallDefaults = defaults$g({ + weight: /* @__PURE__ */ __name(function weight3(edge) { + return 1; + }, "weight"), + directed: false + }); + elesfn$r = { + // Implemented from pseudocode from wikipedia + floydWarshall: /* @__PURE__ */ __name(function floydWarshall2(options2) { + var cy = this.cy(); + var _floydWarshallDefault = floydWarshallDefaults(options2), weight8 = _floydWarshallDefault.weight, directed = _floydWarshallDefault.directed; + var weightFn = weight8; + var _this$byGroup = this.byGroup(), nodes5 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; + var N3 = nodes5.length; + var Nsq = N3 * N3; + var indexOf2 = /* @__PURE__ */ __name(function indexOf3(node2) { + return nodes5.indexOf(node2); + }, "indexOf"); + var atIndex = /* @__PURE__ */ __name(function atIndex2(i3) { + return nodes5[i3]; + }, "atIndex"); + var dist3 = new Array(Nsq); + for (var n2 = 0; n2 < Nsq; n2++) { + var j3 = n2 % N3; + var i2 = (n2 - j3) / N3; + if (i2 === j3) { + dist3[n2] = 0; + } else { + dist3[n2] = Infinity; } - case CharacterRange: { - return { - name: CharacterRange, - properties: [ - { name: "cardinality" }, - { name: "left" }, - { name: "lookahead" }, - { name: "right" } - ] - }; + } + var next3 = new Array(Nsq); + var edgeNext = new Array(Nsq); + for (var _i = 0; _i < edges3.length; _i++) { + var edge = edges3[_i]; + var src = edge.source()[0]; + var tgt = edge.target()[0]; + if (src === tgt) { + continue; } - case CrossReference: { - return { - name: CrossReference, - properties: [ - { name: "cardinality" }, - { name: "deprecatedSyntax", defaultValue: false }, - { name: "lookahead" }, - { name: "terminal" }, - { name: "type" } - ] - }; + var s2 = indexOf2(src); + var t4 = indexOf2(tgt); + var st2 = s2 * N3 + t4; + var _weight = weightFn(edge); + if (dist3[st2] > _weight) { + dist3[st2] = _weight; + next3[st2] = t4; + edgeNext[st2] = edge; } - case EndOfFile: { - return { - name: EndOfFile, - properties: [ - { name: "cardinality" }, - { name: "lookahead" } - ] - }; + if (!directed) { + var ts = t4 * N3 + s2; + if (!directed && dist3[ts] > _weight) { + dist3[ts] = _weight; + next3[ts] = s2; + edgeNext[ts] = edge; + } } - case Group: { - return { - name: Group, - properties: [ - { name: "cardinality" }, - { name: "elements", defaultValue: [] }, - { name: "guardCondition" }, - { name: "lookahead" } - ] - }; + } + for (var k2 = 0; k2 < N3; k2++) { + for (var _i2 = 0; _i2 < N3; _i2++) { + var ik = _i2 * N3 + k2; + for (var _j = 0; _j < N3; _j++) { + var ij = _i2 * N3 + _j; + var kj = k2 * N3 + _j; + if (dist3[ik] + dist3[kj] < dist3[ij]) { + dist3[ij] = dist3[ik] + dist3[kj]; + next3[ij] = next3[ik]; + } + } } - case Keyword2: { - return { - name: Keyword2, - properties: [ - { name: "cardinality" }, - { name: "lookahead" }, - { name: "value" } - ] - }; + } + var getArgEle = /* @__PURE__ */ __name(function getArgEle2(ele) { + return (string(ele) ? cy.filter(ele) : ele)[0]; + }, "getArgEle"); + var indexOfArgEle = /* @__PURE__ */ __name(function indexOfArgEle2(ele) { + return indexOf2(getArgEle(ele)); + }, "indexOfArgEle"); + var res = { + distance: /* @__PURE__ */ __name(function distance2(from2, to) { + var i3 = indexOfArgEle(from2); + var j4 = indexOfArgEle(to); + return dist3[i3 * N3 + j4]; + }, "distance"), + path: /* @__PURE__ */ __name(function path4(from2, to) { + var i3 = indexOfArgEle(from2); + var j4 = indexOfArgEle(to); + var fromNode = atIndex(i3); + if (i3 === j4) { + return fromNode.collection(); + } + if (next3[i3 * N3 + j4] == null) { + return cy.collection(); + } + var path5 = cy.collection(); + var prev2 = i3; + var edge2; + path5.merge(fromNode); + while (i3 !== j4) { + prev2 = i3; + i3 = next3[i3 * N3 + j4]; + edge2 = edgeNext[prev2 * N3 + i3]; + path5.merge(edge2); + path5.merge(atIndex(i3)); + } + return path5; + }, "path") + }; + return res; + }, "floydWarshall") + // floydWarshall + }; + bellmanFordDefaults = defaults$g({ + weight: /* @__PURE__ */ __name(function weight4(edge) { + return 1; + }, "weight"), + directed: false, + root: null + }); + elesfn$q = { + // Implemented from pseudocode from wikipedia + bellmanFord: /* @__PURE__ */ __name(function bellmanFord(options2) { + var _this = this; + var _bellmanFordDefaults = bellmanFordDefaults(options2), weight8 = _bellmanFordDefaults.weight, directed = _bellmanFordDefaults.directed, root3 = _bellmanFordDefaults.root; + var weightFn = weight8; + var eles = this; + var cy = this.cy(); + var _this$byGroup = this.byGroup(), edges3 = _this$byGroup.edges, nodes5 = _this$byGroup.nodes; + var numNodes = nodes5.length; + var infoMap = new Map$1(); + var hasNegativeWeightCycle = false; + var negativeWeightCycles = []; + root3 = cy.collection(root3)[0]; + edges3.unmergeBy(function(edge2) { + return edge2.isLoop(); + }); + var numEdges = edges3.length; + var getInfo3 = /* @__PURE__ */ __name(function getInfo4(node3) { + var obj = infoMap.get(node3.id()); + if (!obj) { + obj = {}; + infoMap.set(node3.id(), obj); } - case NegatedToken: { - return { - name: NegatedToken, - properties: [ - { name: "cardinality" }, - { name: "lookahead" }, - { name: "terminal" } - ] - }; + return obj; + }, "getInfo"); + var getNodeFromTo = /* @__PURE__ */ __name(function getNodeFromTo2(to) { + return (string(to) ? cy.$(to) : to)[0]; + }, "getNodeFromTo"); + var distanceTo = /* @__PURE__ */ __name(function distanceTo2(to) { + return getInfo3(getNodeFromTo(to)).dist; + }, "distanceTo"); + var pathTo = /* @__PURE__ */ __name(function pathTo2(to) { + var thisStart = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : root3; + var end2 = getNodeFromTo(to); + var path4 = []; + var node3 = end2; + for (; ; ) { + if (node3 == null) { + return _this.spawn(); + } + var _getInfo = getInfo3(node3), edge2 = _getInfo.edge, pred = _getInfo.pred; + path4.unshift(node3[0]); + if (node3.same(thisStart) && path4.length > 0) { + break; + } + if (edge2 != null) { + path4.unshift(edge2); + } + node3 = pred; } - case RegexToken: { - return { - name: RegexToken, - properties: [ - { name: "cardinality" }, - { name: "lookahead" }, - { name: "regex" } - ] - }; + return eles.spawn(path4); + }, "pathTo"); + for (var i2 = 0; i2 < numNodes; i2++) { + var node2 = nodes5[i2]; + var info2 = getInfo3(node2); + if (node2.same(root3)) { + info2.dist = 0; + } else { + info2.dist = Infinity; } - case RuleCall: { - return { - name: RuleCall, - properties: [ - { name: "arguments", defaultValue: [] }, - { name: "cardinality" }, - { name: "lookahead" }, - { name: "rule" } - ] - }; + info2.pred = null; + info2.edge = null; + } + var replacedEdge = false; + var checkForEdgeReplacement = /* @__PURE__ */ __name(function checkForEdgeReplacement2(node1, node22, edge2, info1, info22, weight9) { + var dist3 = info1.dist + weight9; + if (dist3 < info22.dist && !edge2.same(info1.edge)) { + info22.dist = dist3; + info22.pred = node1; + info22.edge = edge2; + replacedEdge = true; } - case TerminalAlternatives: { - return { - name: TerminalAlternatives, - properties: [ - { name: "cardinality" }, - { name: "elements", defaultValue: [] }, - { name: "lookahead" } - ] - }; + }, "checkForEdgeReplacement"); + for (var _i = 1; _i < numNodes; _i++) { + replacedEdge = false; + for (var e3 = 0; e3 < numEdges; e3++) { + var edge = edges3[e3]; + var src = edge.source(); + var tgt = edge.target(); + var _weight = weightFn(edge); + var srcInfo = getInfo3(src); + var tgtInfo = getInfo3(tgt); + checkForEdgeReplacement(src, tgt, edge, srcInfo, tgtInfo, _weight); + if (!directed) { + checkForEdgeReplacement(tgt, src, edge, tgtInfo, srcInfo, _weight); + } } - case TerminalGroup: { - return { - name: TerminalGroup, - properties: [ - { name: "cardinality" }, - { name: "elements", defaultValue: [] }, - { name: "lookahead" } - ] - }; + if (!replacedEdge) { + break; } - case TerminalRuleCall: { - return { - name: TerminalRuleCall, - properties: [ - { name: "cardinality" }, - { name: "lookahead" }, - { name: "rule" } - ] - }; + } + if (replacedEdge) { + var negativeWeightCycleIds = []; + for (var _e2 = 0; _e2 < numEdges; _e2++) { + var _edge = edges3[_e2]; + var _src = _edge.source(); + var _tgt = _edge.target(); + var _weight2 = weightFn(_edge); + var srcDist = getInfo3(_src).dist; + var tgtDist = getInfo3(_tgt).dist; + if (srcDist + _weight2 < tgtDist || !directed && tgtDist + _weight2 < srcDist) { + if (!hasNegativeWeightCycle) { + warn("Graph contains a negative weight cycle for Bellman-Ford"); + hasNegativeWeightCycle = true; + } + if (options2.findNegativeWeightCycles !== false) { + var negativeNodes = []; + if (srcDist + _weight2 < tgtDist) { + negativeNodes.push(_src); + } + if (!directed && tgtDist + _weight2 < srcDist) { + negativeNodes.push(_tgt); + } + var numNegativeNodes = negativeNodes.length; + for (var n2 = 0; n2 < numNegativeNodes; n2++) { + var start3 = negativeNodes[n2]; + var cycle = [start3]; + cycle.push(getInfo3(start3).edge); + var _node = getInfo3(start3).pred; + while (cycle.indexOf(_node) === -1) { + cycle.push(_node); + cycle.push(getInfo3(_node).edge); + _node = getInfo3(_node).pred; + } + cycle = cycle.slice(cycle.indexOf(_node)); + var smallestId = cycle[0].id(); + var smallestIndex = 0; + for (var c3 = 2; c3 < cycle.length; c3 += 2) { + if (cycle[c3].id() < smallestId) { + smallestId = cycle[c3].id(); + smallestIndex = c3; + } + } + cycle = cycle.slice(smallestIndex).concat(cycle.slice(0, smallestIndex)); + cycle.push(cycle[0]); + var cycleId = cycle.map(function(el) { + return el.id(); + }).join(","); + if (negativeWeightCycleIds.indexOf(cycleId) === -1) { + negativeWeightCycles.push(eles.spawn(cycle)); + negativeWeightCycleIds.push(cycleId); + } + } + } else { + break; + } + } } - case UnorderedGroup: { - return { - name: UnorderedGroup, - properties: [ - { name: "cardinality" }, - { name: "elements", defaultValue: [] }, - { name: "lookahead" } - ] - }; + } + return { + distanceTo, + pathTo, + hasNegativeWeightCycle, + negativeWeightCycles + }; + }, "bellmanFord") + // bellmanFord + }; + sqrt2 = Math.sqrt(2); + collapse = /* @__PURE__ */ __name(function collapse2(edgeIndex, nodeMap, remainingEdges) { + if (remainingEdges.length === 0) { + error("Karger-Stein must be run on a connected (sub)graph"); + } + var edgeInfo = remainingEdges[edgeIndex]; + var sourceIn = edgeInfo[1]; + var targetIn = edgeInfo[2]; + var partition1 = nodeMap[sourceIn]; + var partition2 = nodeMap[targetIn]; + var newEdges = remainingEdges; + for (var i2 = newEdges.length - 1; i2 >= 0; i2--) { + var edge = newEdges[i2]; + var src = edge[1]; + var tgt = edge[2]; + if (nodeMap[src] === partition1 && nodeMap[tgt] === partition2 || nodeMap[src] === partition2 && nodeMap[tgt] === partition1) { + newEdges.splice(i2, 1); + } + } + for (var _i = 0; _i < newEdges.length; _i++) { + var _edge = newEdges[_i]; + if (_edge[1] === partition2) { + newEdges[_i] = _edge.slice(); + newEdges[_i][1] = partition1; + } else if (_edge[2] === partition2) { + newEdges[_i] = _edge.slice(); + newEdges[_i][2] = partition1; + } + } + for (var _i2 = 0; _i2 < nodeMap.length; _i2++) { + if (nodeMap[_i2] === partition2) { + nodeMap[_i2] = partition1; + } + } + return newEdges; + }, "collapse"); + contractUntil = /* @__PURE__ */ __name(function contractUntil2(metaNodeMap, remainingEdges, size4, sizeLimit) { + while (size4 > sizeLimit) { + var edgeIndex = Math.floor(Math.random() * remainingEdges.length); + remainingEdges = collapse(edgeIndex, metaNodeMap, remainingEdges); + size4--; + } + return remainingEdges; + }, "contractUntil"); + elesfn$p = { + // Computes the minimum cut of an undirected graph + // Returns the correct answer with high probability + kargerStein: /* @__PURE__ */ __name(function kargerStein() { + var _this = this; + var _this$byGroup = this.byGroup(), nodes5 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; + edges3.unmergeBy(function(edge) { + return edge.isLoop(); + }); + var numNodes = nodes5.length; + var numEdges = edges3.length; + var numIter = Math.ceil(Math.pow(Math.log(numNodes) / Math.LN2, 2)); + var stopSize = Math.floor(numNodes / sqrt2); + if (numNodes < 2) { + error("At least 2 nodes are required for Karger-Stein algorithm"); + return void 0; + } + var edgeIndexes = []; + for (var i2 = 0; i2 < numEdges; i2++) { + var e3 = edges3[i2]; + edgeIndexes.push([i2, nodes5.indexOf(e3.source()), nodes5.indexOf(e3.target())]); + } + var minCutSize = Infinity; + var minCutEdgeIndexes = []; + var minCutNodeMap = new Array(numNodes); + var metaNodeMap = new Array(numNodes); + var metaNodeMap2 = new Array(numNodes); + var copyNodesMap = /* @__PURE__ */ __name(function copyNodesMap2(from2, to) { + for (var _i3 = 0; _i3 < numNodes; _i3++) { + to[_i3] = from2[_i3]; } - case UntilToken: { - return { - name: UntilToken, - properties: [ - { name: "cardinality" }, - { name: "lookahead" }, - { name: "terminal" } - ] - }; + }, "copyNodesMap"); + for (var iter = 0; iter <= numIter; iter++) { + for (var _i4 = 0; _i4 < numNodes; _i4++) { + metaNodeMap[_i4] = _i4; } - case Wildcard: { - return { - name: Wildcard, - properties: [ - { name: "cardinality" }, - { name: "lookahead" } - ] - }; + var edgesState = contractUntil(metaNodeMap, edgeIndexes.slice(), numNodes, stopSize); + var edgesState2 = edgesState.slice(); + copyNodesMap(metaNodeMap, metaNodeMap2); + var res1 = contractUntil(metaNodeMap, edgesState, stopSize, 2); + var res2 = contractUntil(metaNodeMap2, edgesState2, stopSize, 2); + if (res1.length <= res2.length && res1.length < minCutSize) { + minCutSize = res1.length; + minCutEdgeIndexes = res1; + copyNodesMap(metaNodeMap, minCutNodeMap); + } else if (res2.length <= res1.length && res2.length < minCutSize) { + minCutSize = res2.length; + minCutEdgeIndexes = res2; + copyNodesMap(metaNodeMap2, minCutNodeMap); } - default: { - return { - name: type3, - properties: [] - }; + } + var cut = this.spawn(minCutEdgeIndexes.map(function(e4) { + return edges3[e4[0]]; + })); + var partition1 = this.spawn(); + var partition2 = this.spawn(); + var witnessNodePartition = minCutNodeMap[0]; + for (var _i5 = 0; _i5 < minCutNodeMap.length; _i5++) { + var partitionId = minCutNodeMap[_i5]; + var node2 = nodes5[_i5]; + if (partitionId === witnessNodePartition) { + partition1.merge(node2); + } else { + partition2.merge(node2); } } - } + var constructComponent = /* @__PURE__ */ __name(function constructComponent2(subset) { + var component2 = _this.spawn(); + subset.forEach(function(node3) { + component2.merge(node3); + node3.connectedEdges().forEach(function(edge) { + if (_this.contains(edge) && !cut.contains(edge)) { + component2.merge(edge); + } + }); + }); + return component2; + }, "constructComponent"); + var components3 = [constructComponent(partition1), constructComponent(partition2)]; + var ret = { + cut, + components: components3, + // n.b. partitions are included to be compatible with the old api spec + // (could be removed in a future major version) + partition1, + partition2 + }; + return ret; + }, "kargerStein") }; - reflection = new LangiumGrammarAstReflection(); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/ast-utils.js - var ast_utils_exports = {}; - __export(ast_utils_exports, { - assignMandatoryProperties: () => assignMandatoryProperties, - copyAstNode: () => copyAstNode, - findLocalReferences: () => findLocalReferences, - findRootNode: () => findRootNode, - getContainerOfType: () => getContainerOfType, - getDocument: () => getDocument, - hasContainerOfType: () => hasContainerOfType, - linkContentToContainer: () => linkContentToContainer, - streamAllContents: () => streamAllContents, - streamAst: () => streamAst, - streamContents: () => streamContents, - streamReferences: () => streamReferences - }); - function linkContentToContainer(node2) { - for (const [name, value2] of Object.entries(node2)) { - if (!name.startsWith("$")) { - if (Array.isArray(value2)) { - value2.forEach((item, index) => { - if (isAstNode(item)) { - item.$container = node2; - item.$containerProperty = name; - item.$containerIndex = index; - } - }); - } else if (isAstNode(value2)) { - value2.$container = node2; - value2.$containerProperty = name; + copyPosition = /* @__PURE__ */ __name(function copyPosition2(p3) { + return { + x: p3.x, + y: p3.y + }; + }, "copyPosition"); + modelToRenderedPosition$1 = /* @__PURE__ */ __name(function modelToRenderedPosition(p3, zoom2, pan2) { + return { + x: p3.x * zoom2 + pan2.x, + y: p3.y * zoom2 + pan2.y + }; + }, "modelToRenderedPosition"); + renderedToModelPosition = /* @__PURE__ */ __name(function renderedToModelPosition2(p3, zoom2, pan2) { + return { + x: (p3.x - pan2.x) / zoom2, + y: (p3.y - pan2.y) / zoom2 + }; + }, "renderedToModelPosition"); + array2point = /* @__PURE__ */ __name(function array2point2(arr) { + return { + x: arr[0], + y: arr[1] + }; + }, "array2point"); + min5 = /* @__PURE__ */ __name(function min6(arr) { + var begin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + var end2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : arr.length; + var min9 = Infinity; + for (var i2 = begin; i2 < end2; i2++) { + var val = arr[i2]; + if (isFinite(val)) { + min9 = Math.min(val, min9); + } } - } - } - } - function getContainerOfType(node2, typePredicate) { - let item = node2; - while (item) { - if (typePredicate(item)) { - return item; - } - item = item.$container; - } - return void 0; - } - function hasContainerOfType(node2, predicate) { - let item = node2; - while (item) { - if (predicate(item)) { - return true; - } - item = item.$container; - } - return false; - } - function getDocument(node2) { - const rootNode = findRootNode(node2); - const result = rootNode.$document; - if (!result) { - throw new Error("AST node has no document."); - } - return result; - } - function findRootNode(node2) { - while (node2.$container) { - node2 = node2.$container; - } - return node2; - } - function streamContents(node2, options3) { - if (!node2) { - throw new Error("Node must be an AstNode."); - } - const range3 = options3 === null || options3 === void 0 ? void 0 : options3.range; - return new StreamImpl(() => ({ - keys: Object.keys(node2), - keyIndex: 0, - arrayIndex: 0 - }), (state4) => { - while (state4.keyIndex < state4.keys.length) { - const property2 = state4.keys[state4.keyIndex]; - if (!property2.startsWith("$")) { - const value2 = node2[property2]; - if (isAstNode(value2)) { - state4.keyIndex++; - if (isAstNodeInRange(value2, range3)) { - return { done: false, value: value2 }; - } - } else if (Array.isArray(value2)) { - while (state4.arrayIndex < value2.length) { - const index = state4.arrayIndex++; - const element3 = value2[index]; - if (isAstNode(element3) && isAstNodeInRange(element3, range3)) { - return { done: false, value: element3 }; - } - } - state4.arrayIndex = 0; + return min9; + }, "min"); + max5 = /* @__PURE__ */ __name(function max6(arr) { + var begin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + var end2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : arr.length; + var max10 = -Infinity; + for (var i2 = begin; i2 < end2; i2++) { + var val = arr[i2]; + if (isFinite(val)) { + max10 = Math.max(val, max10); } } - state4.keyIndex++; - } - return DONE_RESULT; - }); - } - function streamAllContents(root4, options3) { - if (!root4) { - throw new Error("Root node must be an AstNode."); - } - return new TreeStreamImpl(root4, (node2) => streamContents(node2, options3)); - } - function streamAst(root4, options3) { - if (!root4) { - throw new Error("Root node must be an AstNode."); - } else if ((options3 === null || options3 === void 0 ? void 0 : options3.range) && !isAstNodeInRange(root4, options3.range)) { - return new TreeStreamImpl(root4, () => []); - } - return new TreeStreamImpl(root4, (node2) => streamContents(node2, options3), { includeRoot: true }); - } - function isAstNodeInRange(astNode, range3) { - var _a; - if (!range3) { - return true; - } - const nodeRange = (_a = astNode.$cstNode) === null || _a === void 0 ? void 0 : _a.range; - if (!nodeRange) { - return false; - } - return inRange(nodeRange, range3); - } - function streamReferences(node2) { - return new StreamImpl(() => ({ - keys: Object.keys(node2), - keyIndex: 0, - arrayIndex: 0 - }), (state4) => { - while (state4.keyIndex < state4.keys.length) { - const property2 = state4.keys[state4.keyIndex]; - if (!property2.startsWith("$")) { - const value2 = node2[property2]; - if (isReference(value2)) { - state4.keyIndex++; - return { done: false, value: { reference: value2, container: node2, property: property2 } }; - } else if (Array.isArray(value2)) { - while (state4.arrayIndex < value2.length) { - const index = state4.arrayIndex++; - const element3 = value2[index]; - if (isReference(element3)) { - return { done: false, value: { reference: element3, container: node2, property: property2, index } }; - } - } - state4.arrayIndex = 0; + return max10; + }, "max"); + mean = /* @__PURE__ */ __name(function mean2(arr) { + var begin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + var end2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : arr.length; + var total = 0; + var n2 = 0; + for (var i2 = begin; i2 < end2; i2++) { + var val = arr[i2]; + if (isFinite(val)) { + total += val; + n2++; } } - state4.keyIndex++; - } - return DONE_RESULT; - }); - } - function findLocalReferences(targetNode, lookup2 = getDocument(targetNode).parseResult.value) { - const refs = []; - streamAst(lookup2).forEach((node2) => { - streamReferences(node2).forEach((refInfo) => { - if (refInfo.reference.ref === targetNode) { - refs.push(refInfo.reference); + return total / n2; + }, "mean"); + median = /* @__PURE__ */ __name(function median2(arr) { + var begin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + var end2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : arr.length; + var copy5 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; + var sort3 = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true; + var includeHoles = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : true; + if (copy5) { + arr = arr.slice(begin, end2); + } else { + if (end2 < arr.length) { + arr.splice(end2, arr.length - end2); + } + if (begin > 0) { + arr.splice(0, begin); + } } - }); - }); - return stream(refs); - } - function assignMandatoryProperties(reflection3, node2) { - const typeMetaData = reflection3.getTypeMetaData(node2.$type); - const genericNode = node2; - for (const property2 of typeMetaData.properties) { - if (property2.defaultValue !== void 0 && genericNode[property2.name] === void 0) { - genericNode[property2.name] = copyDefaultValue(property2.defaultValue); - } - } - } - function copyDefaultValue(propertyType) { - if (Array.isArray(propertyType)) { - return [...propertyType.map(copyDefaultValue)]; - } else { - return propertyType; - } - } - function copyAstNode(node2, buildReference) { - const copy5 = { $type: node2.$type }; - for (const [name, value2] of Object.entries(node2)) { - if (!name.startsWith("$")) { - if (isAstNode(value2)) { - copy5[name] = copyAstNode(value2, buildReference); - } else if (isReference(value2)) { - copy5[name] = buildReference(copy5, name, value2.$refNode, value2.$refText); - } else if (Array.isArray(value2)) { - const copiedArray = []; - for (const element3 of value2) { - if (isAstNode(element3)) { - copiedArray.push(copyAstNode(element3, buildReference)); - } else if (isReference(element3)) { - copiedArray.push(buildReference(copy5, name, element3.$refNode, element3.$refText)); - } else { - copiedArray.push(element3); + var off = 0; + for (var i2 = arr.length - 1; i2 >= 0; i2--) { + var v3 = arr[i2]; + if (includeHoles) { + if (!isFinite(v3)) { + arr[i2] = -Infinity; + off++; } + } else { + arr.splice(i2, 1); } - copy5[name] = copiedArray; - } else { - copy5[name] = value2; } - } - } - linkContentToContainer(copy5); - return copy5; - } - var init_ast_utils = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/ast-utils.js"() { - "use strict"; - init_syntax_tree(); - init_stream(); - init_cst_utils(); - __name(linkContentToContainer, "linkContentToContainer"); - __name(getContainerOfType, "getContainerOfType"); - __name(hasContainerOfType, "hasContainerOfType"); - __name(getDocument, "getDocument"); - __name(findRootNode, "findRootNode"); - __name(streamContents, "streamContents"); - __name(streamAllContents, "streamAllContents"); - __name(streamAst, "streamAst"); - __name(isAstNodeInRange, "isAstNodeInRange"); - __name(streamReferences, "streamReferences"); - __name(findLocalReferences, "findLocalReferences"); - __name(assignMandatoryProperties, "assignMandatoryProperties"); - __name(copyDefaultValue, "copyDefaultValue"); - __name(copyAstNode, "copyAstNode"); - } - }); - - // ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/utils.js - function cc(char2) { - return char2.charCodeAt(0); - } - function insertToSet(item, set6) { - if (Array.isArray(item)) { - item.forEach(function(subItem) { - set6.push(subItem); - }); - } else { - set6.push(item); - } - } - function addFlag(flagObj, flagKey) { - if (flagObj[flagKey] === true) { - throw "duplicate flag " + flagKey; - } - const x5 = flagObj[flagKey]; - flagObj[flagKey] = true; - } - function ASSERT_EXISTS(obj) { - if (obj === void 0) { - throw Error("Internal Error - Should never get here!"); - } - return true; - } - function ASSERT_NEVER_REACH_HERE() { - throw Error("Internal Error - Should never get here!"); - } - function isCharacter(obj) { - return obj["type"] === "Character"; - } - var init_utils3 = __esm({ - "../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/utils.js"() { - "use strict"; - __name(cc, "cc"); - __name(insertToSet, "insertToSet"); - __name(addFlag, "addFlag"); - __name(ASSERT_EXISTS, "ASSERT_EXISTS"); - __name(ASSERT_NEVER_REACH_HERE, "ASSERT_NEVER_REACH_HERE"); - __name(isCharacter, "isCharacter"); - } - }); - - // ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/character-classes.js - var digitsCharCodes, wordCharCodes, whitespaceCodes; - var init_character_classes = __esm({ - "../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/character-classes.js"() { - "use strict"; - init_utils3(); - digitsCharCodes = []; - for (let i2 = cc("0"); i2 <= cc("9"); i2++) { - digitsCharCodes.push(i2); - } - wordCharCodes = [cc("_")].concat(digitsCharCodes); - for (let i2 = cc("a"); i2 <= cc("z"); i2++) { - wordCharCodes.push(i2); - } - for (let i2 = cc("A"); i2 <= cc("Z"); i2++) { - wordCharCodes.push(i2); - } - whitespaceCodes = [ - cc(" "), - cc("\f"), - cc("\n"), - cc("\r"), - cc(" "), - cc("\v"), - cc(" "), - cc("\xA0"), - cc("\u1680"), - cc("\u2000"), - cc("\u2001"), - cc("\u2002"), - cc("\u2003"), - cc("\u2004"), - cc("\u2005"), - cc("\u2006"), - cc("\u2007"), - cc("\u2008"), - cc("\u2009"), - cc("\u200A"), - cc("\u2028"), - cc("\u2029"), - cc("\u202F"), - cc("\u205F"), - cc("\u3000"), - cc("\uFEFF") - ]; - } - }); - - // ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/regexp-parser.js - var hexDigitPattern, decimalPattern, decimalPatternNoZero, RegExpParser; - var init_regexp_parser = __esm({ - "../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/regexp-parser.js"() { - "use strict"; - init_utils3(); - init_character_classes(); - hexDigitPattern = /[0-9a-fA-F]/; - decimalPattern = /[0-9]/; - decimalPatternNoZero = /[1-9]/; - RegExpParser = class { - static { - __name(this, "RegExpParser"); + if (sort3) { + arr.sort(function(a2, b3) { + return a2 - b3; + }); } - constructor() { - this.idx = 0; - this.input = ""; - this.groupIdx = 0; + var len = arr.length; + var mid = Math.floor(len / 2); + if (len % 2 !== 0) { + return arr[mid + 1 + off]; + } else { + return (arr[mid - 1 + off] + arr[mid + off]) / 2; } - saveState() { - return { - idx: this.idx, - input: this.input, - groupIdx: this.groupIdx - }; + }, "median"); + deg2rad = /* @__PURE__ */ __name(function deg2rad2(deg) { + return Math.PI * deg / 180; + }, "deg2rad"); + getAngleFromDisp = /* @__PURE__ */ __name(function getAngleFromDisp2(dispX, dispY) { + return Math.atan2(dispY, dispX) - Math.PI / 2; + }, "getAngleFromDisp"); + log22 = Math.log2 || function(n2) { + return Math.log(n2) / Math.log(2); + }; + signum = /* @__PURE__ */ __name(function signum2(x5) { + if (x5 > 0) { + return 1; + } else if (x5 < 0) { + return -1; + } else { + return 0; } - restoreState(newState2) { - this.idx = newState2.idx; - this.input = newState2.input; - this.groupIdx = newState2.groupIdx; + }, "signum"); + dist = /* @__PURE__ */ __name(function dist2(p1, p22) { + return Math.sqrt(sqdist(p1, p22)); + }, "dist"); + sqdist = /* @__PURE__ */ __name(function sqdist2(p1, p22) { + var dx = p22.x - p1.x; + var dy = p22.y - p1.y; + return dx * dx + dy * dy; + }, "sqdist"); + inPlaceSumNormalize = /* @__PURE__ */ __name(function inPlaceSumNormalize2(v3) { + var length2 = v3.length; + var total = 0; + for (var i2 = 0; i2 < length2; i2++) { + total += v3[i2]; } - pattern(input) { - this.idx = 0; - this.input = input; - this.groupIdx = 0; - this.consumeChar("/"); - const value2 = this.disjunction(); - this.consumeChar("/"); - const flags = { - type: "Flags", - loc: { begin: this.idx, end: input.length }, - global: false, - ignoreCase: false, - multiLine: false, - unicode: false, - sticky: false - }; - while (this.isRegExpFlag()) { - switch (this.popChar()) { - case "g": - addFlag(flags, "global"); - break; - case "i": - addFlag(flags, "ignoreCase"); - break; - case "m": - addFlag(flags, "multiLine"); - break; - case "u": - addFlag(flags, "unicode"); - break; - case "y": - addFlag(flags, "sticky"); - break; - } - } - if (this.idx !== this.input.length) { - throw Error("Redundant input: " + this.input.substring(this.idx)); - } + for (var _i = 0; _i < length2; _i++) { + v3[_i] = v3[_i] / total; + } + return v3; + }, "inPlaceSumNormalize"); + qbezierAt = /* @__PURE__ */ __name(function qbezierAt2(p0, p1, p22, t4) { + return (1 - t4) * (1 - t4) * p0 + 2 * (1 - t4) * t4 * p1 + t4 * t4 * p22; + }, "qbezierAt"); + qbezierPtAt = /* @__PURE__ */ __name(function qbezierPtAt2(p0, p1, p22, t4) { + return { + x: qbezierAt(p0.x, p1.x, p22.x, t4), + y: qbezierAt(p0.y, p1.y, p22.y, t4) + }; + }, "qbezierPtAt"); + lineAt = /* @__PURE__ */ __name(function lineAt2(p0, p1, t4, d3) { + var vec = { + x: p1.x - p0.x, + y: p1.y - p0.y + }; + var vecDist = dist(p0, p1); + var normVec = { + x: vec.x / vecDist, + y: vec.y / vecDist + }; + t4 = t4 == null ? 0 : t4; + d3 = d3 != null ? d3 : t4 * vecDist; + return { + x: p0.x + normVec.x * d3, + y: p0.y + normVec.y * d3 + }; + }, "lineAt"); + bound = /* @__PURE__ */ __name(function bound2(min9, val, max10) { + return Math.max(min9, Math.min(max10, val)); + }, "bound"); + makeBoundingBox = /* @__PURE__ */ __name(function makeBoundingBox2(bb) { + if (bb == null) { return { - type: "Pattern", - flags, - value: value2, - loc: this.loc(0) + x1: Infinity, + y1: Infinity, + x2: -Infinity, + y2: -Infinity, + w: 0, + h: 0 }; + } else if (bb.x1 != null && bb.y1 != null) { + if (bb.x2 != null && bb.y2 != null && bb.x2 >= bb.x1 && bb.y2 >= bb.y1) { + return { + x1: bb.x1, + y1: bb.y1, + x2: bb.x2, + y2: bb.y2, + w: bb.x2 - bb.x1, + h: bb.y2 - bb.y1 + }; + } else if (bb.w != null && bb.h != null && bb.w >= 0 && bb.h >= 0) { + return { + x1: bb.x1, + y1: bb.y1, + x2: bb.x1 + bb.w, + y2: bb.y1 + bb.h, + w: bb.w, + h: bb.h + }; + } } - disjunction() { - const alts = []; - const begin = this.idx; - alts.push(this.alternative()); - while (this.peekChar() === "|") { - this.consumeChar("|"); - alts.push(this.alternative()); + }, "makeBoundingBox"); + copyBoundingBox = /* @__PURE__ */ __name(function copyBoundingBox2(bb) { + return { + x1: bb.x1, + x2: bb.x2, + w: bb.w, + y1: bb.y1, + y2: bb.y2, + h: bb.h + }; + }, "copyBoundingBox"); + clearBoundingBox = /* @__PURE__ */ __name(function clearBoundingBox2(bb) { + bb.x1 = Infinity; + bb.y1 = Infinity; + bb.x2 = -Infinity; + bb.y2 = -Infinity; + bb.w = 0; + bb.h = 0; + }, "clearBoundingBox"); + updateBoundingBox = /* @__PURE__ */ __name(function updateBoundingBox2(bb1, bb2) { + bb1.x1 = Math.min(bb1.x1, bb2.x1); + bb1.x2 = Math.max(bb1.x2, bb2.x2); + bb1.w = bb1.x2 - bb1.x1; + bb1.y1 = Math.min(bb1.y1, bb2.y1); + bb1.y2 = Math.max(bb1.y2, bb2.y2); + bb1.h = bb1.y2 - bb1.y1; + }, "updateBoundingBox"); + expandBoundingBoxByPoint = /* @__PURE__ */ __name(function expandBoundingBoxByPoint2(bb, x5, y6) { + bb.x1 = Math.min(bb.x1, x5); + bb.x2 = Math.max(bb.x2, x5); + bb.w = bb.x2 - bb.x1; + bb.y1 = Math.min(bb.y1, y6); + bb.y2 = Math.max(bb.y2, y6); + bb.h = bb.y2 - bb.y1; + }, "expandBoundingBoxByPoint"); + expandBoundingBox = /* @__PURE__ */ __name(function expandBoundingBox2(bb) { + var padding2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + bb.x1 -= padding2; + bb.x2 += padding2; + bb.y1 -= padding2; + bb.y2 += padding2; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + return bb; + }, "expandBoundingBox"); + expandBoundingBoxSides = /* @__PURE__ */ __name(function expandBoundingBoxSides2(bb) { + var padding2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [0]; + var top2, right3, bottom2, left3; + if (padding2.length === 1) { + top2 = right3 = bottom2 = left3 = padding2[0]; + } else if (padding2.length === 2) { + top2 = bottom2 = padding2[0]; + left3 = right3 = padding2[1]; + } else if (padding2.length === 4) { + var _padding = _slicedToArray(padding2, 4); + top2 = _padding[0]; + right3 = _padding[1]; + bottom2 = _padding[2]; + left3 = _padding[3]; + } + bb.x1 -= left3; + bb.x2 += right3; + bb.y1 -= top2; + bb.y2 += bottom2; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + return bb; + }, "expandBoundingBoxSides"); + assignBoundingBox = /* @__PURE__ */ __name(function assignBoundingBox2(bb1, bb2) { + bb1.x1 = bb2.x1; + bb1.y1 = bb2.y1; + bb1.x2 = bb2.x2; + bb1.y2 = bb2.y2; + bb1.w = bb1.x2 - bb1.x1; + bb1.h = bb1.y2 - bb1.y1; + }, "assignBoundingBox"); + boundingBoxesIntersect = /* @__PURE__ */ __name(function boundingBoxesIntersect2(bb1, bb2) { + if (bb1.x1 > bb2.x2) { + return false; + } + if (bb2.x1 > bb1.x2) { + return false; + } + if (bb1.x2 < bb2.x1) { + return false; + } + if (bb2.x2 < bb1.x1) { + return false; + } + if (bb1.y2 < bb2.y1) { + return false; + } + if (bb2.y2 < bb1.y1) { + return false; + } + if (bb1.y1 > bb2.y2) { + return false; + } + if (bb2.y1 > bb1.y2) { + return false; + } + return true; + }, "boundingBoxesIntersect"); + inBoundingBox = /* @__PURE__ */ __name(function inBoundingBox2(bb, x5, y6) { + return bb.x1 <= x5 && x5 <= bb.x2 && bb.y1 <= y6 && y6 <= bb.y2; + }, "inBoundingBox"); + pointInBoundingBox = /* @__PURE__ */ __name(function pointInBoundingBox2(bb, pt) { + return inBoundingBox(bb, pt.x, pt.y); + }, "pointInBoundingBox"); + boundingBoxInBoundingBox = /* @__PURE__ */ __name(function boundingBoxInBoundingBox2(bb1, bb2) { + return inBoundingBox(bb1, bb2.x1, bb2.y1) && inBoundingBox(bb1, bb2.x2, bb2.y2); + }, "boundingBoxInBoundingBox"); + hypot = (_Math$hypot = Math.hypot) !== null && _Math$hypot !== void 0 ? _Math$hypot : function(x5, y6) { + return Math.sqrt(x5 * x5 + y6 * y6); + }; + __name(inflatePolygon, "inflatePolygon"); + __name(miterBox, "miterBox"); + roundRectangleIntersectLine = /* @__PURE__ */ __name(function roundRectangleIntersectLine2(x5, y6, nodeX, nodeY, width3, height2, padding2) { + var radius2 = arguments.length > 7 && arguments[7] !== void 0 ? arguments[7] : "auto"; + var cornerRadius = radius2 === "auto" ? getRoundRectangleRadius(width3, height2) : radius2; + var halfWidth = width3 / 2; + var halfHeight = height2 / 2; + cornerRadius = Math.min(cornerRadius, halfWidth, halfHeight); + var doWidth = cornerRadius !== halfWidth, doHeight = cornerRadius !== halfHeight; + var straightLineIntersections; + if (doWidth) { + var topStartX = nodeX - halfWidth + cornerRadius - padding2; + var topStartY = nodeY - halfHeight - padding2; + var topEndX = nodeX + halfWidth - cornerRadius + padding2; + var topEndY = topStartY; + straightLineIntersections = finiteLinesIntersect(x5, y6, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); + if (straightLineIntersections.length > 0) { + return straightLineIntersections; } - return { type: "Disjunction", value: alts, loc: this.loc(begin) }; } - alternative() { - const terms = []; - const begin = this.idx; - while (this.isTerm()) { - terms.push(this.term()); + if (doHeight) { + var rightStartX = nodeX + halfWidth + padding2; + var rightStartY = nodeY - halfHeight + cornerRadius - padding2; + var rightEndX = rightStartX; + var rightEndY = nodeY + halfHeight - cornerRadius + padding2; + straightLineIntersections = finiteLinesIntersect(x5, y6, nodeX, nodeY, rightStartX, rightStartY, rightEndX, rightEndY, false); + if (straightLineIntersections.length > 0) { + return straightLineIntersections; } - return { type: "Alternative", value: terms, loc: this.loc(begin) }; } - term() { - if (this.isAssertion()) { - return this.assertion(); - } else { - return this.atom(); + if (doWidth) { + var bottomStartX = nodeX - halfWidth + cornerRadius - padding2; + var bottomStartY = nodeY + halfHeight + padding2; + var bottomEndX = nodeX + halfWidth - cornerRadius + padding2; + var bottomEndY = bottomStartY; + straightLineIntersections = finiteLinesIntersect(x5, y6, nodeX, nodeY, bottomStartX, bottomStartY, bottomEndX, bottomEndY, false); + if (straightLineIntersections.length > 0) { + return straightLineIntersections; } } - assertion() { - const begin = this.idx; - switch (this.popChar()) { - case "^": - return { - type: "StartAnchor", - loc: this.loc(begin) - }; - case "$": - return { type: "EndAnchor", loc: this.loc(begin) }; - // '\b' or '\B' - case "\\": - switch (this.popChar()) { - case "b": - return { - type: "WordBoundary", - loc: this.loc(begin) - }; - case "B": - return { - type: "NonWordBoundary", - loc: this.loc(begin) - }; - } - throw Error("Invalid Assertion Escape"); - // '(?=' or '(?!' - case "(": - this.consumeChar("?"); - let type3; - switch (this.popChar()) { - case "=": - type3 = "Lookahead"; - break; - case "!": - type3 = "NegativeLookahead"; - break; - } - ASSERT_EXISTS(type3); - const disjunction = this.disjunction(); - this.consumeChar(")"); - return { - type: type3, - value: disjunction, - loc: this.loc(begin) - }; + if (doHeight) { + var leftStartX = nodeX - halfWidth - padding2; + var leftStartY = nodeY - halfHeight + cornerRadius - padding2; + var leftEndX = leftStartX; + var leftEndY = nodeY + halfHeight - cornerRadius + padding2; + straightLineIntersections = finiteLinesIntersect(x5, y6, nodeX, nodeY, leftStartX, leftStartY, leftEndX, leftEndY, false); + if (straightLineIntersections.length > 0) { + return straightLineIntersections; } - return ASSERT_NEVER_REACH_HERE(); } - quantifier(isBacktracking = false) { - let range3 = void 0; - const begin = this.idx; - switch (this.popChar()) { - case "*": - range3 = { - atLeast: 0, - atMost: Infinity - }; - break; - case "+": - range3 = { - atLeast: 1, - atMost: Infinity - }; - break; - case "?": - range3 = { - atLeast: 0, - atMost: 1 - }; - break; - case "{": - const atLeast = this.integerIncludingZero(); - switch (this.popChar()) { - case "}": - range3 = { - atLeast, - atMost: atLeast - }; - break; - case ",": - let atMost; - if (this.isDigit()) { - atMost = this.integerIncludingZero(); - range3 = { - atLeast, - atMost - }; - } else { - range3 = { - atLeast, - atMost: Infinity - }; - } - this.consumeChar("}"); - break; - } - if (isBacktracking === true && range3 === void 0) { - return void 0; - } - ASSERT_EXISTS(range3); - break; + var arcIntersections; + { + var topLeftCenterX = nodeX - halfWidth + cornerRadius; + var topLeftCenterY = nodeY - halfHeight + cornerRadius; + arcIntersections = intersectLineCircle(x5, y6, nodeX, nodeY, topLeftCenterX, topLeftCenterY, cornerRadius + padding2); + if (arcIntersections.length > 0 && arcIntersections[0] <= topLeftCenterX && arcIntersections[1] <= topLeftCenterY) { + return [arcIntersections[0], arcIntersections[1]]; } - if (isBacktracking === true && range3 === void 0) { - return void 0; + } + { + var topRightCenterX = nodeX + halfWidth - cornerRadius; + var topRightCenterY = nodeY - halfHeight + cornerRadius; + arcIntersections = intersectLineCircle(x5, y6, nodeX, nodeY, topRightCenterX, topRightCenterY, cornerRadius + padding2); + if (arcIntersections.length > 0 && arcIntersections[0] >= topRightCenterX && arcIntersections[1] <= topRightCenterY) { + return [arcIntersections[0], arcIntersections[1]]; } - if (ASSERT_EXISTS(range3)) { - if (this.peekChar(0) === "?") { - this.consumeChar("?"); - range3.greedy = false; - } else { - range3.greedy = true; - } - range3.type = "Quantifier"; - range3.loc = this.loc(begin); - return range3; + } + { + var bottomRightCenterX = nodeX + halfWidth - cornerRadius; + var bottomRightCenterY = nodeY + halfHeight - cornerRadius; + arcIntersections = intersectLineCircle(x5, y6, nodeX, nodeY, bottomRightCenterX, bottomRightCenterY, cornerRadius + padding2); + if (arcIntersections.length > 0 && arcIntersections[0] >= bottomRightCenterX && arcIntersections[1] >= bottomRightCenterY) { + return [arcIntersections[0], arcIntersections[1]]; } } - atom() { - let atom2; - const begin = this.idx; - switch (this.peekChar()) { - case ".": - atom2 = this.dotAll(); - break; - case "\\": - atom2 = this.atomEscape(); - break; - case "[": - atom2 = this.characterClass(); - break; - case "(": - atom2 = this.group(); - break; + { + var bottomLeftCenterX = nodeX - halfWidth + cornerRadius; + var bottomLeftCenterY = nodeY + halfHeight - cornerRadius; + arcIntersections = intersectLineCircle(x5, y6, nodeX, nodeY, bottomLeftCenterX, bottomLeftCenterY, cornerRadius + padding2); + if (arcIntersections.length > 0 && arcIntersections[0] <= bottomLeftCenterX && arcIntersections[1] >= bottomLeftCenterY) { + return [arcIntersections[0], arcIntersections[1]]; } - if (atom2 === void 0 && this.isPatternCharacter()) { - atom2 = this.patternCharacter(); + } + return []; + }, "roundRectangleIntersectLine"); + inLineVicinity = /* @__PURE__ */ __name(function inLineVicinity2(x5, y6, lx1, ly1, lx2, ly2, tolerance) { + var t4 = tolerance; + var x1 = Math.min(lx1, lx2); + var x22 = Math.max(lx1, lx2); + var y1 = Math.min(ly1, ly2); + var y22 = Math.max(ly1, ly2); + return x1 - t4 <= x5 && x5 <= x22 + t4 && y1 - t4 <= y6 && y6 <= y22 + t4; + }, "inLineVicinity"); + inBezierVicinity = /* @__PURE__ */ __name(function inBezierVicinity2(x5, y6, x1, y1, x22, y22, x32, y32, tolerance) { + var bb = { + x1: Math.min(x1, x32, x22) - tolerance, + x2: Math.max(x1, x32, x22) + tolerance, + y1: Math.min(y1, y32, y22) - tolerance, + y2: Math.max(y1, y32, y22) + tolerance + }; + if (x5 < bb.x1 || x5 > bb.x2 || y6 < bb.y1 || y6 > bb.y2) { + return false; + } else { + return true; + } + }, "inBezierVicinity"); + solveQuadratic = /* @__PURE__ */ __name(function solveQuadratic2(a2, b3, c3, val) { + c3 -= val; + var r2 = b3 * b3 - 4 * a2 * c3; + if (r2 < 0) { + return []; + } + var sqrtR = Math.sqrt(r2); + var denom = 2 * a2; + var root1 = (-b3 + sqrtR) / denom; + var root22 = (-b3 - sqrtR) / denom; + return [root1, root22]; + }, "solveQuadratic"); + solveCubic = /* @__PURE__ */ __name(function solveCubic2(a2, b3, c3, d3, result) { + var epsilon6 = 1e-5; + if (a2 === 0) { + a2 = epsilon6; + } + b3 /= a2; + c3 /= a2; + d3 /= a2; + var discriminant, q3, r2, dum1, s2, t4, term1, r13; + q3 = (3 * c3 - b3 * b3) / 9; + r2 = -(27 * d3) + b3 * (9 * c3 - 2 * (b3 * b3)); + r2 /= 54; + discriminant = q3 * q3 * q3 + r2 * r2; + result[1] = 0; + term1 = b3 / 3; + if (discriminant > 0) { + s2 = r2 + Math.sqrt(discriminant); + s2 = s2 < 0 ? -Math.pow(-s2, 1 / 3) : Math.pow(s2, 1 / 3); + t4 = r2 - Math.sqrt(discriminant); + t4 = t4 < 0 ? -Math.pow(-t4, 1 / 3) : Math.pow(t4, 1 / 3); + result[0] = -term1 + s2 + t4; + term1 += (s2 + t4) / 2; + result[4] = result[2] = -term1; + term1 = Math.sqrt(3) * (-t4 + s2) / 2; + result[3] = term1; + result[5] = -term1; + return; + } + result[5] = result[3] = 0; + if (discriminant === 0) { + r13 = r2 < 0 ? -Math.pow(-r2, 1 / 3) : Math.pow(r2, 1 / 3); + result[0] = -term1 + 2 * r13; + result[4] = result[2] = -(r13 + term1); + return; + } + q3 = -q3; + dum1 = q3 * q3 * q3; + dum1 = Math.acos(r2 / Math.sqrt(dum1)); + r13 = 2 * Math.sqrt(q3); + result[0] = -term1 + r13 * Math.cos(dum1 / 3); + result[2] = -term1 + r13 * Math.cos((dum1 + 2 * Math.PI) / 3); + result[4] = -term1 + r13 * Math.cos((dum1 + 4 * Math.PI) / 3); + return; + }, "solveCubic"); + sqdistToQuadraticBezier = /* @__PURE__ */ __name(function sqdistToQuadraticBezier2(x5, y6, x1, y1, x22, y22, x32, y32) { + var a2 = 1 * x1 * x1 - 4 * x1 * x22 + 2 * x1 * x32 + 4 * x22 * x22 - 4 * x22 * x32 + x32 * x32 + y1 * y1 - 4 * y1 * y22 + 2 * y1 * y32 + 4 * y22 * y22 - 4 * y22 * y32 + y32 * y32; + var b3 = 1 * 9 * x1 * x22 - 3 * x1 * x1 - 3 * x1 * x32 - 6 * x22 * x22 + 3 * x22 * x32 + 9 * y1 * y22 - 3 * y1 * y1 - 3 * y1 * y32 - 6 * y22 * y22 + 3 * y22 * y32; + var c3 = 1 * 3 * x1 * x1 - 6 * x1 * x22 + x1 * x32 - x1 * x5 + 2 * x22 * x22 + 2 * x22 * x5 - x32 * x5 + 3 * y1 * y1 - 6 * y1 * y22 + y1 * y32 - y1 * y6 + 2 * y22 * y22 + 2 * y22 * y6 - y32 * y6; + var d3 = 1 * x1 * x22 - x1 * x1 + x1 * x5 - x22 * x5 + y1 * y22 - y1 * y1 + y1 * y6 - y22 * y6; + var roots = []; + solveCubic(a2, b3, c3, d3, roots); + var zeroThreshold = 1e-7; + var params = []; + for (var index = 0; index < 6; index += 2) { + if (Math.abs(roots[index + 1]) < zeroThreshold && roots[index] >= 0 && roots[index] <= 1) { + params.push(roots[index]); } - if (ASSERT_EXISTS(atom2)) { - atom2.loc = this.loc(begin); - if (this.isQuantifier()) { - atom2.quantifier = this.quantifier(); + } + params.push(1); + params.push(0); + var minDistanceSquared = -1; + var curX, curY, distSquared; + for (var i2 = 0; i2 < params.length; i2++) { + curX = Math.pow(1 - params[i2], 2) * x1 + 2 * (1 - params[i2]) * params[i2] * x22 + params[i2] * params[i2] * x32; + curY = Math.pow(1 - params[i2], 2) * y1 + 2 * (1 - params[i2]) * params[i2] * y22 + params[i2] * params[i2] * y32; + distSquared = Math.pow(curX - x5, 2) + Math.pow(curY - y6, 2); + if (minDistanceSquared >= 0) { + if (distSquared < minDistanceSquared) { + minDistanceSquared = distSquared; } - return atom2; + } else { + minDistanceSquared = distSquared; } - return ASSERT_NEVER_REACH_HERE(); } - dotAll() { - this.consumeChar("."); - return { - type: "Set", - complement: true, - value: [cc("\n"), cc("\r"), cc("\u2028"), cc("\u2029")] - }; + return minDistanceSquared; + }, "sqdistToQuadraticBezier"); + sqdistToFiniteLine = /* @__PURE__ */ __name(function sqdistToFiniteLine2(x5, y6, x1, y1, x22, y22) { + var offset = [x5 - x1, y6 - y1]; + var line2 = [x22 - x1, y22 - y1]; + var lineSq = line2[0] * line2[0] + line2[1] * line2[1]; + var hypSq = offset[0] * offset[0] + offset[1] * offset[1]; + var dotProduct = offset[0] * line2[0] + offset[1] * line2[1]; + var adjSq = dotProduct * dotProduct / lineSq; + if (dotProduct < 0) { + return hypSq; } - atomEscape() { - this.consumeChar("\\"); - switch (this.peekChar()) { - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - return this.decimalEscapeAtom(); - case "d": - case "D": - case "s": - case "S": - case "w": - case "W": - return this.characterClassEscape(); - case "f": - case "n": - case "r": - case "t": - case "v": - return this.controlEscapeAtom(); - case "c": - return this.controlLetterEscapeAtom(); - case "0": - return this.nulCharacterAtom(); - case "x": - return this.hexEscapeSequenceAtom(); - case "u": - return this.regExpUnicodeEscapeSequenceAtom(); - default: - return this.identityEscapeAtom(); + if (adjSq > lineSq) { + return (x5 - x22) * (x5 - x22) + (y6 - y22) * (y6 - y22); + } + return hypSq - adjSq; + }, "sqdistToFiniteLine"); + pointInsidePolygonPoints = /* @__PURE__ */ __name(function pointInsidePolygonPoints2(x5, y6, points) { + var x1, y1, x22, y22; + var y32; + var up = 0; + for (var i2 = 0; i2 < points.length / 2; i2++) { + x1 = points[i2 * 2]; + y1 = points[i2 * 2 + 1]; + if (i2 + 1 < points.length / 2) { + x22 = points[(i2 + 1) * 2]; + y22 = points[(i2 + 1) * 2 + 1]; + } else { + x22 = points[(i2 + 1 - points.length / 2) * 2]; + y22 = points[(i2 + 1 - points.length / 2) * 2 + 1]; + } + if (x1 == x5 && x22 == x5) ; + else if (x1 >= x5 && x5 >= x22 || x1 <= x5 && x5 <= x22) { + y32 = (x5 - x1) / (x22 - x1) * (y22 - y1) + y1; + if (y32 > y6) { + up++; + } + } else { + continue; } } - decimalEscapeAtom() { - const value2 = this.positiveInteger(); - return { type: "GroupBackReference", value: value2 }; + if (up % 2 === 0) { + return false; + } else { + return true; } - characterClassEscape() { - let set6; - let complement = false; - switch (this.popChar()) { - case "d": - set6 = digitsCharCodes; - break; - case "D": - set6 = digitsCharCodes; - complement = true; - break; - case "s": - set6 = whitespaceCodes; - break; - case "S": - set6 = whitespaceCodes; - complement = true; - break; - case "w": - set6 = wordCharCodes; - break; - case "W": - set6 = wordCharCodes; - complement = true; - break; - } - if (ASSERT_EXISTS(set6)) { - return { type: "Set", value: set6, complement }; + }, "pointInsidePolygonPoints"); + pointInsidePolygon = /* @__PURE__ */ __name(function pointInsidePolygon2(x5, y6, basePoints, centerX, centerY, width3, height2, direction, padding2) { + var transformedPoints = new Array(basePoints.length); + var angle2; + if (direction[0] != null) { + angle2 = Math.atan(direction[1] / direction[0]); + if (direction[0] < 0) { + angle2 = angle2 + Math.PI / 2; + } else { + angle2 = -angle2 - Math.PI / 2; } - return ASSERT_NEVER_REACH_HERE(); + } else { + angle2 = direction; } - controlEscapeAtom() { - let escapeCode; - switch (this.popChar()) { - case "f": - escapeCode = cc("\f"); - break; - case "n": - escapeCode = cc("\n"); - break; - case "r": - escapeCode = cc("\r"); - break; - case "t": - escapeCode = cc(" "); - break; - case "v": - escapeCode = cc("\v"); - break; + var cos3 = Math.cos(-angle2); + var sin3 = Math.sin(-angle2); + for (var i2 = 0; i2 < transformedPoints.length / 2; i2++) { + transformedPoints[i2 * 2] = width3 / 2 * (basePoints[i2 * 2] * cos3 - basePoints[i2 * 2 + 1] * sin3); + transformedPoints[i2 * 2 + 1] = height2 / 2 * (basePoints[i2 * 2 + 1] * cos3 + basePoints[i2 * 2] * sin3); + transformedPoints[i2 * 2] += centerX; + transformedPoints[i2 * 2 + 1] += centerY; + } + var points; + if (padding2 > 0) { + var expandedLineSet = expandPolygon(transformedPoints, -padding2); + points = joinLines(expandedLineSet); + } else { + points = transformedPoints; + } + return pointInsidePolygonPoints(x5, y6, points); + }, "pointInsidePolygon"); + pointInsideRoundPolygon = /* @__PURE__ */ __name(function pointInsideRoundPolygon2(x5, y6, basePoints, centerX, centerY, width3, height2, corners) { + var cutPolygonPoints = new Array(basePoints.length * 2); + for (var i2 = 0; i2 < corners.length; i2++) { + var corner = corners[i2]; + cutPolygonPoints[i2 * 4 + 0] = corner.startX; + cutPolygonPoints[i2 * 4 + 1] = corner.startY; + cutPolygonPoints[i2 * 4 + 2] = corner.stopX; + cutPolygonPoints[i2 * 4 + 3] = corner.stopY; + var squaredDistance = Math.pow(corner.cx - x5, 2) + Math.pow(corner.cy - y6, 2); + if (squaredDistance <= Math.pow(corner.radius, 2)) { + return true; } - if (ASSERT_EXISTS(escapeCode)) { - return { type: "Character", value: escapeCode }; + } + return pointInsidePolygonPoints(x5, y6, cutPolygonPoints); + }, "pointInsideRoundPolygon"); + joinLines = /* @__PURE__ */ __name(function joinLines2(lineSet) { + var vertices = new Array(lineSet.length / 2); + var currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY; + var nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY; + for (var i2 = 0; i2 < lineSet.length / 4; i2++) { + currentLineStartX = lineSet[i2 * 4]; + currentLineStartY = lineSet[i2 * 4 + 1]; + currentLineEndX = lineSet[i2 * 4 + 2]; + currentLineEndY = lineSet[i2 * 4 + 3]; + if (i2 < lineSet.length / 4 - 1) { + nextLineStartX = lineSet[(i2 + 1) * 4]; + nextLineStartY = lineSet[(i2 + 1) * 4 + 1]; + nextLineEndX = lineSet[(i2 + 1) * 4 + 2]; + nextLineEndY = lineSet[(i2 + 1) * 4 + 3]; + } else { + nextLineStartX = lineSet[0]; + nextLineStartY = lineSet[1]; + nextLineEndX = lineSet[2]; + nextLineEndY = lineSet[3]; } - return ASSERT_NEVER_REACH_HERE(); + var intersection4 = finiteLinesIntersect(currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY, nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY, true); + vertices[i2 * 2] = intersection4[0]; + vertices[i2 * 2 + 1] = intersection4[1]; } - controlLetterEscapeAtom() { - this.consumeChar("c"); - const letter = this.popChar(); - if (/[a-zA-Z]/.test(letter) === false) { - throw Error("Invalid "); + return vertices; + }, "joinLines"); + expandPolygon = /* @__PURE__ */ __name(function expandPolygon2(points, pad3) { + var expandedLineSet = new Array(points.length * 2); + var currentPointX, currentPointY, nextPointX, nextPointY; + for (var i2 = 0; i2 < points.length / 2; i2++) { + currentPointX = points[i2 * 2]; + currentPointY = points[i2 * 2 + 1]; + if (i2 < points.length / 2 - 1) { + nextPointX = points[(i2 + 1) * 2]; + nextPointY = points[(i2 + 1) * 2 + 1]; + } else { + nextPointX = points[0]; + nextPointY = points[1]; } - const letterCode = letter.toUpperCase().charCodeAt(0) - 64; - return { type: "Character", value: letterCode }; + var offsetX = nextPointY - currentPointY; + var offsetY = -(nextPointX - currentPointX); + var offsetLength = Math.sqrt(offsetX * offsetX + offsetY * offsetY); + var normalizedOffsetX = offsetX / offsetLength; + var normalizedOffsetY = offsetY / offsetLength; + expandedLineSet[i2 * 4] = currentPointX + normalizedOffsetX * pad3; + expandedLineSet[i2 * 4 + 1] = currentPointY + normalizedOffsetY * pad3; + expandedLineSet[i2 * 4 + 2] = nextPointX + normalizedOffsetX * pad3; + expandedLineSet[i2 * 4 + 3] = nextPointY + normalizedOffsetY * pad3; } - nulCharacterAtom() { - this.consumeChar("0"); - return { type: "Character", value: cc("\0") }; + return expandedLineSet; + }, "expandPolygon"); + intersectLineEllipse = /* @__PURE__ */ __name(function intersectLineEllipse2(x5, y6, centerX, centerY, ellipseWradius, ellipseHradius) { + var dispX = centerX - x5; + var dispY = centerY - y6; + dispX /= ellipseWradius; + dispY /= ellipseHradius; + var len = Math.sqrt(dispX * dispX + dispY * dispY); + var newLength = len - 1; + if (newLength < 0) { + return []; } - hexEscapeSequenceAtom() { - this.consumeChar("x"); - return this.parseHexDigits(2); + var lenProportion = newLength / len; + return [(centerX - x5) * lenProportion + x5, (centerY - y6) * lenProportion + y6]; + }, "intersectLineEllipse"); + checkInEllipse = /* @__PURE__ */ __name(function checkInEllipse2(x5, y6, width3, height2, centerX, centerY, padding2) { + x5 -= centerX; + y6 -= centerY; + x5 /= width3 / 2 + padding2; + y6 /= height2 / 2 + padding2; + return x5 * x5 + y6 * y6 <= 1; + }, "checkInEllipse"); + intersectLineCircle = /* @__PURE__ */ __name(function intersectLineCircle2(x1, y1, x22, y22, centerX, centerY, radius2) { + var d3 = [x22 - x1, y22 - y1]; + var f2 = [x1 - centerX, y1 - centerY]; + var a2 = d3[0] * d3[0] + d3[1] * d3[1]; + var b3 = 2 * (f2[0] * d3[0] + f2[1] * d3[1]); + var c3 = f2[0] * f2[0] + f2[1] * f2[1] - radius2 * radius2; + var discriminant = b3 * b3 - 4 * a2 * c3; + if (discriminant < 0) { + return []; } - regExpUnicodeEscapeSequenceAtom() { - this.consumeChar("u"); - return this.parseHexDigits(4); + var t13 = (-b3 + Math.sqrt(discriminant)) / (2 * a2); + var t22 = (-b3 - Math.sqrt(discriminant)) / (2 * a2); + var tMin = Math.min(t13, t22); + var tMax = Math.max(t13, t22); + var inRangeParams = []; + if (tMin >= 0 && tMin <= 1) { + inRangeParams.push(tMin); } - identityEscapeAtom() { - const escapedChar = this.popChar(); - return { type: "Character", value: cc(escapedChar) }; + if (tMax >= 0 && tMax <= 1) { + inRangeParams.push(tMax); } - classPatternCharacterAtom() { - switch (this.peekChar()) { - // istanbul ignore next - case "\n": - // istanbul ignore next - case "\r": - // istanbul ignore next - case "\u2028": - // istanbul ignore next - case "\u2029": - // istanbul ignore next - case "\\": - // istanbul ignore next - case "]": - throw Error("TBD"); - default: - const nextChar = this.popChar(); - return { type: "Character", value: cc(nextChar) }; - } + if (inRangeParams.length === 0) { + return []; } - characterClass() { - const set6 = []; - let complement = false; - this.consumeChar("["); - if (this.peekChar(0) === "^") { - this.consumeChar("^"); - complement = true; + var nearIntersectionX = inRangeParams[0] * d3[0] + x1; + var nearIntersectionY = inRangeParams[0] * d3[1] + y1; + if (inRangeParams.length > 1) { + if (inRangeParams[0] == inRangeParams[1]) { + return [nearIntersectionX, nearIntersectionY]; + } else { + var farIntersectionX = inRangeParams[1] * d3[0] + x1; + var farIntersectionY = inRangeParams[1] * d3[1] + y1; + return [nearIntersectionX, nearIntersectionY, farIntersectionX, farIntersectionY]; } - while (this.isClassAtom()) { - const from2 = this.classAtom(); - const isFromSingleChar = from2.type === "Character"; - if (isCharacter(from2) && this.isRangeDash()) { - this.consumeChar("-"); - const to = this.classAtom(); - const isToSingleChar = to.type === "Character"; - if (isCharacter(to)) { - if (to.value < from2.value) { - throw Error("Range out of order in character class"); - } - set6.push({ from: from2.value, to: to.value }); - } else { - insertToSet(from2.value, set6); - set6.push(cc("-")); - insertToSet(to.value, set6); - } + } else { + return [nearIntersectionX, nearIntersectionY]; + } + }, "intersectLineCircle"); + midOfThree = /* @__PURE__ */ __name(function midOfThree2(a2, b3, c3) { + if (b3 <= a2 && a2 <= c3 || c3 <= a2 && a2 <= b3) { + return a2; + } else if (a2 <= b3 && b3 <= c3 || c3 <= b3 && b3 <= a2) { + return b3; + } else { + return c3; + } + }, "midOfThree"); + finiteLinesIntersect = /* @__PURE__ */ __name(function finiteLinesIntersect2(x1, y1, x22, y22, x32, y32, x42, y42, infiniteLines) { + var dx13 = x1 - x32; + var dx21 = x22 - x1; + var dx43 = x42 - x32; + var dy13 = y1 - y32; + var dy21 = y22 - y1; + var dy43 = y42 - y32; + var ua_t = dx43 * dy13 - dy43 * dx13; + var ub_t = dx21 * dy13 - dy21 * dx13; + var u_b = dy43 * dx21 - dx43 * dy21; + if (u_b !== 0) { + var ua = ua_t / u_b; + var ub = ub_t / u_b; + var flptThreshold = 1e-3; + var _min = 0 - flptThreshold; + var _max = 1 + flptThreshold; + if (_min <= ua && ua <= _max && _min <= ub && ub <= _max) { + return [x1 + ua * dx21, y1 + ua * dy21]; + } else { + if (!infiniteLines) { + return []; } else { - insertToSet(from2.value, set6); + return [x1 + ua * dx21, y1 + ua * dy21]; } } - this.consumeChar("]"); - return { type: "Set", complement, value: set6 }; - } - classAtom() { - switch (this.peekChar()) { - // istanbul ignore next - case "]": - // istanbul ignore next - case "\n": - // istanbul ignore next - case "\r": - // istanbul ignore next - case "\u2028": - // istanbul ignore next - case "\u2029": - throw Error("TBD"); - case "\\": - return this.classEscape(); - default: - return this.classPatternCharacterAtom(); + } else { + if (ua_t === 0 || ub_t === 0) { + if (midOfThree(x1, x22, x42) === x42) { + return [x42, y42]; + } + if (midOfThree(x1, x22, x32) === x32) { + return [x32, y32]; + } + if (midOfThree(x32, x42, x22) === x22) { + return [x22, y22]; + } + return []; + } else { + return []; } } - classEscape() { - this.consumeChar("\\"); - switch (this.peekChar()) { - // Matches a backspace. - // (Not to be confused with \b word boundary outside characterClass) - case "b": - this.consumeChar("b"); - return { type: "Character", value: cc("\b") }; - case "d": - case "D": - case "s": - case "S": - case "w": - case "W": - return this.characterClassEscape(); - case "f": - case "n": - case "r": - case "t": - case "v": - return this.controlEscapeAtom(); - case "c": - return this.controlLetterEscapeAtom(); - case "0": - return this.nulCharacterAtom(); - case "x": - return this.hexEscapeSequenceAtom(); - case "u": - return this.regExpUnicodeEscapeSequenceAtom(); - default: - return this.identityEscapeAtom(); - } + }, "finiteLinesIntersect"); + transformPoints = /* @__PURE__ */ __name(function transformPoints2(points, centerX, centerY, width3, height2) { + var ret = []; + var halfW = width3 / 2; + var halfH = height2 / 2; + var x5 = centerX; + var y6 = centerY; + ret.push({ + x: x5 + halfW * points[0], + y: y6 + halfH * points[1] + }); + for (var i2 = 1; i2 < points.length / 2; i2++) { + ret.push({ + x: x5 + halfW * points[i2 * 2], + y: y6 + halfH * points[i2 * 2 + 1] + }); } - group() { - let capturing = true; - this.consumeChar("("); - switch (this.peekChar(0)) { - case "?": - this.consumeChar("?"); - this.consumeChar(":"); - capturing = false; - break; - default: - this.groupIdx++; - break; + return ret; + }, "transformPoints"); + polygonIntersectLine = /* @__PURE__ */ __name(function polygonIntersectLine2(x5, y6, basePoints, centerX, centerY, width3, height2, padding2) { + var intersections = []; + var intersection4; + var transformedPoints = new Array(basePoints.length); + var doTransform = true; + if (width3 == null) { + doTransform = false; + } + var points; + if (doTransform) { + for (var i2 = 0; i2 < transformedPoints.length / 2; i2++) { + transformedPoints[i2 * 2] = basePoints[i2 * 2] * width3 + centerX; + transformedPoints[i2 * 2 + 1] = basePoints[i2 * 2 + 1] * height2 + centerY; } - const value2 = this.disjunction(); - this.consumeChar(")"); - const groupAst = { - type: "Group", - capturing, - value: value2 - }; - if (capturing) { - groupAst["idx"] = this.groupIdx; + if (padding2 > 0) { + var expandedLineSet = expandPolygon(transformedPoints, -padding2); + points = joinLines(expandedLineSet); + } else { + points = transformedPoints; } - return groupAst; + } else { + points = basePoints; } - positiveInteger() { - let number7 = this.popChar(); - if (decimalPatternNoZero.test(number7) === false) { - throw Error("Expecting a positive integer"); + var currentX, currentY, nextX, nextY; + for (var _i3 = 0; _i3 < points.length / 2; _i3++) { + currentX = points[_i3 * 2]; + currentY = points[_i3 * 2 + 1]; + if (_i3 < points.length / 2 - 1) { + nextX = points[(_i3 + 1) * 2]; + nextY = points[(_i3 + 1) * 2 + 1]; + } else { + nextX = points[0]; + nextY = points[1]; } - while (decimalPattern.test(this.peekChar(0))) { - number7 += this.popChar(); + intersection4 = finiteLinesIntersect(x5, y6, centerX, centerY, currentX, currentY, nextX, nextY); + if (intersection4.length !== 0) { + intersections.push(intersection4[0], intersection4[1]); } - return parseInt(number7, 10); } - integerIncludingZero() { - let number7 = this.popChar(); - if (decimalPattern.test(number7) === false) { - throw Error("Expecting an integer"); + return intersections; + }, "polygonIntersectLine"); + roundPolygonIntersectLine = /* @__PURE__ */ __name(function roundPolygonIntersectLine2(x5, y6, basePoints, centerX, centerY, width3, height2, padding2, corners) { + var intersections = []; + var intersection4; + var lines = new Array(basePoints.length * 2); + corners.forEach(function(corner, i3) { + if (i3 === 0) { + lines[lines.length - 2] = corner.startX; + lines[lines.length - 1] = corner.startY; + } else { + lines[i3 * 4 - 2] = corner.startX; + lines[i3 * 4 - 1] = corner.startY; } - while (decimalPattern.test(this.peekChar(0))) { - number7 += this.popChar(); + lines[i3 * 4] = corner.stopX; + lines[i3 * 4 + 1] = corner.stopY; + intersection4 = intersectLineCircle(x5, y6, centerX, centerY, corner.cx, corner.cy, corner.radius); + if (intersection4.length !== 0) { + intersections.push(intersection4[0], intersection4[1]); + } + }); + for (var i2 = 0; i2 < lines.length / 4; i2++) { + intersection4 = finiteLinesIntersect(x5, y6, centerX, centerY, lines[i2 * 4], lines[i2 * 4 + 1], lines[i2 * 4 + 2], lines[i2 * 4 + 3], false); + if (intersection4.length !== 0) { + intersections.push(intersection4[0], intersection4[1]); } - return parseInt(number7, 10); } - patternCharacter() { - const nextChar = this.popChar(); - switch (nextChar) { - // istanbul ignore next - case "\n": - // istanbul ignore next - case "\r": - // istanbul ignore next - case "\u2028": - // istanbul ignore next - case "\u2029": - // istanbul ignore next - case "^": - // istanbul ignore next - case "$": - // istanbul ignore next - case "\\": - // istanbul ignore next - case ".": - // istanbul ignore next - case "*": - // istanbul ignore next - case "+": - // istanbul ignore next - case "?": - // istanbul ignore next - case "(": - // istanbul ignore next - case ")": - // istanbul ignore next - case "[": - // istanbul ignore next - case "|": - throw Error("TBD"); - default: - return { type: "Character", value: cc(nextChar) }; + if (intersections.length > 2) { + var lowestIntersection = [intersections[0], intersections[1]]; + var lowestSquaredDistance = Math.pow(lowestIntersection[0] - x5, 2) + Math.pow(lowestIntersection[1] - y6, 2); + for (var _i4 = 1; _i4 < intersections.length / 2; _i4++) { + var squaredDistance = Math.pow(intersections[_i4 * 2] - x5, 2) + Math.pow(intersections[_i4 * 2 + 1] - y6, 2); + if (squaredDistance <= lowestSquaredDistance) { + lowestIntersection[0] = intersections[_i4 * 2]; + lowestIntersection[1] = intersections[_i4 * 2 + 1]; + lowestSquaredDistance = squaredDistance; + } } + return lowestIntersection; } - isRegExpFlag() { - switch (this.peekChar(0)) { - case "g": - case "i": - case "m": - case "u": - case "y": - return true; - default: - return false; - } + return intersections; + }, "roundPolygonIntersectLine"); + shortenIntersection = /* @__PURE__ */ __name(function shortenIntersection2(intersection4, offset, amount) { + var disp = [intersection4[0] - offset[0], intersection4[1] - offset[1]]; + var length2 = Math.sqrt(disp[0] * disp[0] + disp[1] * disp[1]); + var lenRatio = (length2 - amount) / length2; + if (lenRatio < 0) { + lenRatio = 1e-5; } - isRangeDash() { - return this.peekChar() === "-" && this.isClassAtom(1); + return [offset[0] + lenRatio * disp[0], offset[1] + lenRatio * disp[1]]; + }, "shortenIntersection"); + generateUnitNgonPointsFitToSquare = /* @__PURE__ */ __name(function generateUnitNgonPointsFitToSquare2(sides, rotationRadians) { + var points = generateUnitNgonPoints(sides, rotationRadians); + points = fitPolygonToSquare(points); + return points; + }, "generateUnitNgonPointsFitToSquare"); + fitPolygonToSquare = /* @__PURE__ */ __name(function fitPolygonToSquare2(points) { + var x5, y6; + var sides = points.length / 2; + var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity; + for (var i2 = 0; i2 < sides; i2++) { + x5 = points[2 * i2]; + y6 = points[2 * i2 + 1]; + minX = Math.min(minX, x5); + maxX = Math.max(maxX, x5); + minY = Math.min(minY, y6); + maxY = Math.max(maxY, y6); } - isDigit() { - return decimalPattern.test(this.peekChar(0)); + var sx = 2 / (maxX - minX); + var sy = 2 / (maxY - minY); + for (var _i5 = 0; _i5 < sides; _i5++) { + x5 = points[2 * _i5] = points[2 * _i5] * sx; + y6 = points[2 * _i5 + 1] = points[2 * _i5 + 1] * sy; + minX = Math.min(minX, x5); + maxX = Math.max(maxX, x5); + minY = Math.min(minY, y6); + maxY = Math.max(maxY, y6); } - isClassAtom(howMuch = 0) { - switch (this.peekChar(howMuch)) { - case "]": - case "\n": - case "\r": - case "\u2028": - case "\u2029": - return false; - default: - return true; + if (minY < -1) { + for (var _i6 = 0; _i6 < sides; _i6++) { + y6 = points[2 * _i6 + 1] = points[2 * _i6 + 1] + (-1 - minY); } } - isTerm() { - return this.isAtom() || this.isAssertion(); + return points; + }, "fitPolygonToSquare"); + generateUnitNgonPoints = /* @__PURE__ */ __name(function generateUnitNgonPoints2(sides, rotationRadians) { + var increment = 1 / sides * 2 * Math.PI; + var startAngle = sides % 2 === 0 ? Math.PI / 2 + increment / 2 : Math.PI / 2; + startAngle += rotationRadians; + var points = new Array(sides * 2); + var currentAngle; + for (var i2 = 0; i2 < sides; i2++) { + currentAngle = i2 * increment + startAngle; + points[2 * i2] = Math.cos(currentAngle); + points[2 * i2 + 1] = Math.sin(-currentAngle); } - isAtom() { - if (this.isPatternCharacter()) { - return true; + return points; + }, "generateUnitNgonPoints"); + getRoundRectangleRadius = /* @__PURE__ */ __name(function getRoundRectangleRadius2(width3, height2) { + return Math.min(width3 / 4, height2 / 4, 8); + }, "getRoundRectangleRadius"); + getRoundPolygonRadius = /* @__PURE__ */ __name(function getRoundPolygonRadius2(width3, height2) { + return Math.min(width3 / 10, height2 / 10, 8); + }, "getRoundPolygonRadius"); + getCutRectangleCornerLength = /* @__PURE__ */ __name(function getCutRectangleCornerLength2() { + return 8; + }, "getCutRectangleCornerLength"); + bezierPtsToQuadCoeff = /* @__PURE__ */ __name(function bezierPtsToQuadCoeff2(p0, p1, p22) { + return [p0 - 2 * p1 + p22, 2 * (p1 - p0), p0]; + }, "bezierPtsToQuadCoeff"); + getBarrelCurveConstants = /* @__PURE__ */ __name(function getBarrelCurveConstants2(width3, height2) { + return { + heightOffset: Math.min(15, 0.05 * height2), + widthOffset: Math.min(100, 0.25 * width3), + ctrlPtOffsetPct: 0.05 + }; + }, "getBarrelCurveConstants"); + __name(satPolygonIntersection, "satPolygonIntersection"); + pageRankDefaults = defaults$g({ + dampingFactor: 0.8, + precision: 1e-6, + iterations: 200, + weight: /* @__PURE__ */ __name(function weight5(edge) { + return 1; + }, "weight") + }); + elesfn$o = { + pageRank: /* @__PURE__ */ __name(function pageRank(options2) { + var _pageRankDefaults = pageRankDefaults(options2), dampingFactor = _pageRankDefaults.dampingFactor, precision = _pageRankDefaults.precision, iterations = _pageRankDefaults.iterations, weight8 = _pageRankDefaults.weight; + var cy = this._private.cy; + var _this$byGroup = this.byGroup(), nodes5 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; + var numNodes = nodes5.length; + var numNodesSqd = numNodes * numNodes; + var numEdges = edges3.length; + var matrix = new Array(numNodesSqd); + var columnSum = new Array(numNodes); + var additionalProb = (1 - dampingFactor) / numNodes; + for (var i2 = 0; i2 < numNodes; i2++) { + for (var j3 = 0; j3 < numNodes; j3++) { + var n2 = i2 * numNodes + j3; + matrix[n2] = 0; + } + columnSum[i2] = 0; } - switch (this.peekChar(0)) { - case ".": - case "\\": - // atomEscape - case "[": - // characterClass - // TODO: isAtom must be called before isAssertion - disambiguate - case "(": - return true; - default: - return false; + for (var _i = 0; _i < numEdges; _i++) { + var edge = edges3[_i]; + var srcId = edge.data("source"); + var tgtId = edge.data("target"); + if (srcId === tgtId) { + continue; + } + var s2 = nodes5.indexOfId(srcId); + var t4 = nodes5.indexOfId(tgtId); + var w4 = weight8(edge); + var _n = t4 * numNodes + s2; + matrix[_n] += w4; + columnSum[s2] += w4; } - } - isAssertion() { - switch (this.peekChar(0)) { - case "^": - case "$": - return true; - // '\b' or '\B' - case "\\": - switch (this.peekChar(1)) { - case "b": - case "B": - return true; - default: - return false; + var p3 = 1 / numNodes + additionalProb; + for (var _j = 0; _j < numNodes; _j++) { + if (columnSum[_j] === 0) { + for (var _i2 = 0; _i2 < numNodes; _i2++) { + var _n2 = _i2 * numNodes + _j; + matrix[_n2] = p3; } - // '(?=' or '(?!' - case "(": - return this.peekChar(1) === "?" && (this.peekChar(2) === "=" || this.peekChar(2) === "!"); - default: - return false; + } else { + for (var _i3 = 0; _i3 < numNodes; _i3++) { + var _n3 = _i3 * numNodes + _j; + matrix[_n3] = matrix[_n3] / columnSum[_j] + additionalProb; + } + } + } + var eigenvector = new Array(numNodes); + var temp = new Array(numNodes); + var previous; + for (var _i4 = 0; _i4 < numNodes; _i4++) { + eigenvector[_i4] = 1; + } + for (var iter = 0; iter < iterations; iter++) { + for (var _i5 = 0; _i5 < numNodes; _i5++) { + temp[_i5] = 0; + } + for (var _i6 = 0; _i6 < numNodes; _i6++) { + for (var _j2 = 0; _j2 < numNodes; _j2++) { + var _n4 = _i6 * numNodes + _j2; + temp[_i6] += matrix[_n4] * eigenvector[_j2]; + } + } + inPlaceSumNormalize(temp); + previous = eigenvector; + eigenvector = temp; + temp = previous; + var diff2 = 0; + for (var _i7 = 0; _i7 < numNodes; _i7++) { + var delta = previous[_i7] - eigenvector[_i7]; + diff2 += delta * delta; + } + if (diff2 < precision) { + break; + } + } + var res = { + rank: /* @__PURE__ */ __name(function rank2(node2) { + node2 = cy.collection(node2)[0]; + return eigenvector[nodes5.indexOf(node2)]; + }, "rank") + }; + return res; + }, "pageRank") + // pageRank + }; + defaults$f = defaults$g({ + root: null, + weight: /* @__PURE__ */ __name(function weight6(edge) { + return 1; + }, "weight"), + directed: false, + alpha: 0 + }); + elesfn$n = { + degreeCentralityNormalized: /* @__PURE__ */ __name(function degreeCentralityNormalized(options2) { + options2 = defaults$f(options2); + var cy = this.cy(); + var nodes5 = this.nodes(); + var numNodes = nodes5.length; + if (!options2.directed) { + var degrees3 = {}; + var maxDegree = 0; + for (var i2 = 0; i2 < numNodes; i2++) { + var node2 = nodes5[i2]; + options2.root = node2; + var currDegree = this.degreeCentrality(options2); + if (maxDegree < currDegree.degree) { + maxDegree = currDegree.degree; + } + degrees3[node2.id()] = currDegree.degree; + } + return { + degree: /* @__PURE__ */ __name(function degree(node3) { + if (maxDegree === 0) { + return 0; + } + if (string(node3)) { + node3 = cy.filter(node3); + } + return degrees3[node3.id()] / maxDegree; + }, "degree") + }; + } else { + var indegrees = {}; + var outdegrees = {}; + var maxIndegree = 0; + var maxOutdegree = 0; + for (var _i = 0; _i < numNodes; _i++) { + var _node = nodes5[_i]; + var id30 = _node.id(); + options2.root = _node; + var _currDegree = this.degreeCentrality(options2); + if (maxIndegree < _currDegree.indegree) maxIndegree = _currDegree.indegree; + if (maxOutdegree < _currDegree.outdegree) maxOutdegree = _currDegree.outdegree; + indegrees[id30] = _currDegree.indegree; + outdegrees[id30] = _currDegree.outdegree; + } + return { + indegree: /* @__PURE__ */ __name(function indegree(node3) { + if (maxIndegree == 0) { + return 0; + } + if (string(node3)) { + node3 = cy.filter(node3); + } + return indegrees[node3.id()] / maxIndegree; + }, "indegree"), + outdegree: /* @__PURE__ */ __name(function outdegree(node3) { + if (maxOutdegree === 0) { + return 0; + } + if (string(node3)) { + node3 = cy.filter(node3); + } + return outdegrees[node3.id()] / maxOutdegree; + }, "outdegree") + }; + } + }, "degreeCentralityNormalized"), + // degreeCentralityNormalized + // Implemented from the algorithm in Opsahl's paper + // "Node centrality in weighted networks: Generalizing degree and shortest paths" + // check the heading 2 "Degree" + degreeCentrality: /* @__PURE__ */ __name(function degreeCentrality(options2) { + options2 = defaults$f(options2); + var cy = this.cy(); + var callingEles = this; + var _options = options2, root3 = _options.root, weight8 = _options.weight, directed = _options.directed, alpha = _options.alpha; + root3 = cy.collection(root3)[0]; + if (!directed) { + var connEdges = root3.connectedEdges().intersection(callingEles); + var k2 = connEdges.length; + var s2 = 0; + for (var i2 = 0; i2 < connEdges.length; i2++) { + s2 += weight8(connEdges[i2]); + } + return { + degree: Math.pow(k2, 1 - alpha) * Math.pow(s2, alpha) + }; + } else { + var edges3 = root3.connectedEdges(); + var incoming = edges3.filter(function(edge) { + return edge.target().same(root3) && callingEles.has(edge); + }); + var outgoing = edges3.filter(function(edge) { + return edge.source().same(root3) && callingEles.has(edge); + }); + var k_in = incoming.length; + var k_out = outgoing.length; + var s_in = 0; + var s_out = 0; + for (var _i2 = 0; _i2 < incoming.length; _i2++) { + s_in += weight8(incoming[_i2]); + } + for (var _i3 = 0; _i3 < outgoing.length; _i3++) { + s_out += weight8(outgoing[_i3]); + } + return { + indegree: Math.pow(k_in, 1 - alpha) * Math.pow(s_in, alpha), + outdegree: Math.pow(k_out, 1 - alpha) * Math.pow(s_out, alpha) + }; + } + }, "degreeCentrality") + // degreeCentrality + }; + elesfn$n.dc = elesfn$n.degreeCentrality; + elesfn$n.dcn = elesfn$n.degreeCentralityNormalised = elesfn$n.degreeCentralityNormalized; + defaults$e = defaults$g({ + harmonic: true, + weight: /* @__PURE__ */ __name(function weight7() { + return 1; + }, "weight"), + directed: false, + root: null + }); + elesfn$m = { + closenessCentralityNormalized: /* @__PURE__ */ __name(function closenessCentralityNormalized(options2) { + var _defaults = defaults$e(options2), harmonic = _defaults.harmonic, weight8 = _defaults.weight, directed = _defaults.directed; + var cy = this.cy(); + var closenesses = {}; + var maxCloseness = 0; + var nodes5 = this.nodes(); + var fw = this.floydWarshall({ + weight: weight8, + directed + }); + for (var i2 = 0; i2 < nodes5.length; i2++) { + var currCloseness = 0; + var node_i = nodes5[i2]; + for (var j3 = 0; j3 < nodes5.length; j3++) { + if (i2 !== j3) { + var d3 = fw.distance(node_i, nodes5[j3]); + if (harmonic) { + currCloseness += 1 / d3; + } else { + currCloseness += d3; + } + } + } + if (!harmonic) { + currCloseness = 1 / currCloseness; + } + if (maxCloseness < currCloseness) { + maxCloseness = currCloseness; + } + closenesses[node_i.id()] = currCloseness; + } + return { + closeness: /* @__PURE__ */ __name(function closeness(node2) { + if (maxCloseness == 0) { + return 0; + } + if (string(node2)) { + node2 = cy.filter(node2)[0].id(); + } else { + node2 = node2.id(); + } + return closenesses[node2] / maxCloseness; + }, "closeness") + }; + }, "closenessCentralityNormalized"), + // Implemented from pseudocode from wikipedia + closenessCentrality: /* @__PURE__ */ __name(function closenessCentrality(options2) { + var _defaults2 = defaults$e(options2), root3 = _defaults2.root, weight8 = _defaults2.weight, directed = _defaults2.directed, harmonic = _defaults2.harmonic; + root3 = this.filter(root3)[0]; + var dijkstra3 = this.dijkstra({ + root: root3, + weight: weight8, + directed + }); + var totalDistance = 0; + var nodes5 = this.nodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + var n2 = nodes5[i2]; + if (!n2.same(root3)) { + var d3 = dijkstra3.distanceTo(n2); + if (harmonic) { + totalDistance += 1 / d3; + } else { + totalDistance += d3; + } + } + } + return harmonic ? totalDistance : 1 / totalDistance; + }, "closenessCentrality") + // closenessCentrality + }; + elesfn$m.cc = elesfn$m.closenessCentrality; + elesfn$m.ccn = elesfn$m.closenessCentralityNormalised = elesfn$m.closenessCentralityNormalized; + defaults$d = defaults$g({ + weight: null, + directed: false + }); + elesfn$l = { + // Implemented from the algorithm in the paper "On Variants of Shortest-Path Betweenness Centrality and their Generic Computation" by Ulrik Brandes + betweennessCentrality: /* @__PURE__ */ __name(function betweennessCentrality(options2) { + var _defaults = defaults$d(options2), directed = _defaults.directed, weight8 = _defaults.weight; + var weighted = weight8 != null; + var cy = this.cy(); + var V3 = this.nodes(); + var A2 = {}; + var _C = {}; + var max10 = 0; + var C3 = { + set: /* @__PURE__ */ __name(function set5(key, val) { + _C[key] = val; + if (val > max10) { + max10 = val; + } + }, "set"), + get: /* @__PURE__ */ __name(function get5(key) { + return _C[key]; + }, "get") + }; + for (var i2 = 0; i2 < V3.length; i2++) { + var v3 = V3[i2]; + var vid = v3.id(); + if (directed) { + A2[vid] = v3.outgoers().nodes(); + } else { + A2[vid] = v3.openNeighborhood().nodes(); + } + C3.set(vid, 0); + } + var _loop = /* @__PURE__ */ __name(function _loop2() { + var sid = V3[s2].id(); + var S4 = []; + var P3 = {}; + var g2 = {}; + var d3 = {}; + var Q3 = new Heap(function(a2, b3) { + return d3[a2] - d3[b3]; + }); + for (var _i = 0; _i < V3.length; _i++) { + var _vid = V3[_i].id(); + P3[_vid] = []; + g2[_vid] = 0; + d3[_vid] = Infinity; + } + g2[sid] = 1; + d3[sid] = 0; + Q3.push(sid); + while (!Q3.empty()) { + var _v = Q3.pop(); + S4.push(_v); + if (weighted) { + for (var j3 = 0; j3 < A2[_v].length; j3++) { + var w4 = A2[_v][j3]; + var vEle = cy.getElementById(_v); + var edge = void 0; + if (vEle.edgesTo(w4).length > 0) { + edge = vEle.edgesTo(w4)[0]; + } else { + edge = w4.edgesTo(vEle)[0]; + } + var edgeWeight = weight8(edge); + w4 = w4.id(); + if (d3[w4] > d3[_v] + edgeWeight) { + d3[w4] = d3[_v] + edgeWeight; + if (Q3.nodes.indexOf(w4) < 0) { + Q3.push(w4); + } else { + Q3.updateItem(w4); + } + g2[w4] = 0; + P3[w4] = []; + } + if (d3[w4] == d3[_v] + edgeWeight) { + g2[w4] = g2[w4] + g2[_v]; + P3[w4].push(_v); + } + } + } else { + for (var _j = 0; _j < A2[_v].length; _j++) { + var _w = A2[_v][_j].id(); + if (d3[_w] == Infinity) { + Q3.push(_w); + d3[_w] = d3[_v] + 1; + } + if (d3[_w] == d3[_v] + 1) { + g2[_w] = g2[_w] + g2[_v]; + P3[_w].push(_v); + } + } + } + } + var e3 = {}; + for (var _i2 = 0; _i2 < V3.length; _i2++) { + e3[V3[_i2].id()] = 0; + } + while (S4.length > 0) { + var _w2 = S4.pop(); + for (var _j2 = 0; _j2 < P3[_w2].length; _j2++) { + var _v2 = P3[_w2][_j2]; + e3[_v2] = e3[_v2] + g2[_v2] / g2[_w2] * (1 + e3[_w2]); + } + if (_w2 != V3[s2].id()) { + C3.set(_w2, C3.get(_w2) + e3[_w2]); + } + } + }, "_loop"); + for (var s2 = 0; s2 < V3.length; s2++) { + _loop(); + } + var ret = { + betweenness: /* @__PURE__ */ __name(function betweenness(node2) { + var id30 = cy.collection(node2).id(); + return C3.get(id30); + }, "betweenness"), + betweennessNormalized: /* @__PURE__ */ __name(function betweennessNormalized(node2) { + if (max10 == 0) { + return 0; + } + var id30 = cy.collection(node2).id(); + return C3.get(id30) / max10; + }, "betweennessNormalized") + }; + ret.betweennessNormalised = ret.betweennessNormalized; + return ret; + }, "betweennessCentrality") + // betweennessCentrality + }; + elesfn$l.bc = elesfn$l.betweennessCentrality; + defaults$c = defaults$g({ + expandFactor: 2, + // affects time of computation and cluster granularity to some extent: M * M + inflateFactor: 2, + // affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j) + multFactor: 1, + // optional self loops for each node. Use a neutral value to improve cluster computations. + maxIterations: 20, + // maximum number of iterations of the MCL algorithm in a single run + attributes: [ + // attributes/features used to group nodes, ie. similarity values between nodes + function(edge) { + return 1; } + ] + }); + setOptions$3 = /* @__PURE__ */ __name(function setOptions(options2) { + return defaults$c(options2); + }, "setOptions"); + getSimilarity$1 = /* @__PURE__ */ __name(function getSimilarity(edge, attributes) { + var total = 0; + for (var i2 = 0; i2 < attributes.length; i2++) { + total += attributes[i2](edge); } - isQuantifier() { - const prevState = this.saveState(); - try { - return this.quantifier(true) !== void 0; - } catch (e3) { + return total; + }, "getSimilarity"); + addLoops = /* @__PURE__ */ __name(function addLoops2(M3, n2, val) { + for (var i2 = 0; i2 < n2; i2++) { + M3[i2 * n2 + i2] = val; + } + }, "addLoops"); + normalize2 = /* @__PURE__ */ __name(function normalize3(M3, n2) { + var sum2; + for (var col = 0; col < n2; col++) { + sum2 = 0; + for (var row = 0; row < n2; row++) { + sum2 += M3[row * n2 + col]; + } + for (var _row = 0; _row < n2; _row++) { + M3[_row * n2 + col] = M3[_row * n2 + col] / sum2; + } + } + }, "normalize"); + mmult = /* @__PURE__ */ __name(function mmult2(A2, B3, n2) { + var C3 = new Array(n2 * n2); + for (var i2 = 0; i2 < n2; i2++) { + for (var j3 = 0; j3 < n2; j3++) { + C3[i2 * n2 + j3] = 0; + } + for (var k2 = 0; k2 < n2; k2++) { + for (var _j = 0; _j < n2; _j++) { + C3[i2 * n2 + _j] += A2[i2 * n2 + k2] * B3[k2 * n2 + _j]; + } + } + } + return C3; + }, "mmult"); + expand = /* @__PURE__ */ __name(function expand2(M3, n2, expandFactor) { + var _M = M3.slice(0); + for (var p3 = 1; p3 < expandFactor; p3++) { + M3 = mmult(M3, _M, n2); + } + return M3; + }, "expand"); + inflate = /* @__PURE__ */ __name(function inflate2(M3, n2, inflateFactor) { + var _M = new Array(n2 * n2); + for (var i2 = 0; i2 < n2 * n2; i2++) { + _M[i2] = Math.pow(M3[i2], inflateFactor); + } + normalize2(_M, n2); + return _M; + }, "inflate"); + hasConverged = /* @__PURE__ */ __name(function hasConverged2(M3, _M, n2, roundFactor) { + for (var i2 = 0; i2 < n2; i2++) { + var v12 = Math.round(M3[i2] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); + var v23 = Math.round(_M[i2] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); + if (v12 !== v23) { return false; - } finally { - this.restoreState(prevState); } } - isPatternCharacter() { - switch (this.peekChar()) { - case "^": - case "$": - case "\\": - case ".": - case "*": - case "+": - case "?": - case "(": - case ")": - case "[": - case "|": - case "/": - case "\n": - case "\r": - case "\u2028": - case "\u2029": - return false; - default: - return true; + return true; + }, "hasConverged"); + assign$2 = /* @__PURE__ */ __name(function assign2(M3, n2, nodes5, cy) { + var clusters = []; + for (var i2 = 0; i2 < n2; i2++) { + var cluster = []; + for (var j3 = 0; j3 < n2; j3++) { + if (Math.round(M3[i2 * n2 + j3] * 1e3) / 1e3 > 0) { + cluster.push(nodes5[j3]); + } + } + if (cluster.length !== 0) { + clusters.push(cy.collection(cluster)); } } - parseHexDigits(howMany) { - let hexString = ""; - for (let i2 = 0; i2 < howMany; i2++) { - const hexChar = this.popChar(); - if (hexDigitPattern.test(hexChar) === false) { - throw Error("Expecting a HexDecimal digits"); + return clusters; + }, "assign"); + isDuplicate = /* @__PURE__ */ __name(function isDuplicate2(c1, c22) { + for (var i2 = 0; i2 < c1.length; i2++) { + if (!c22[i2] || c1[i2].id() !== c22[i2].id()) { + return false; + } + } + return true; + }, "isDuplicate"); + removeDuplicates = /* @__PURE__ */ __name(function removeDuplicates2(clusters) { + for (var i2 = 0; i2 < clusters.length; i2++) { + for (var j3 = 0; j3 < clusters.length; j3++) { + if (i2 != j3 && isDuplicate(clusters[i2], clusters[j3])) { + clusters.splice(j3, 1); } - hexString += hexChar; } - const charCode = parseInt(hexString, 16); - return { type: "Character", value: charCode }; } - peekChar(howMuch = 0) { - return this.input[this.idx + howMuch]; + return clusters; + }, "removeDuplicates"); + markovClustering = /* @__PURE__ */ __name(function markovClustering2(options2) { + var nodes5 = this.nodes(); + var edges3 = this.edges(); + var cy = this.cy(); + var opts = setOptions$3(options2); + var id2position = {}; + for (var i2 = 0; i2 < nodes5.length; i2++) { + id2position[nodes5[i2].id()] = i2; } - popChar() { - const nextChar = this.peekChar(0); - this.consumeChar(void 0); - return nextChar; + var n2 = nodes5.length, n22 = n2 * n2; + var M3 = new Array(n22), _M; + for (var _i = 0; _i < n22; _i++) { + M3[_i] = 0; } - consumeChar(char2) { - if (char2 !== void 0 && this.input[this.idx] !== char2) { - throw Error("Expected: '" + char2 + "' but found: '" + this.input[this.idx] + "' at offset: " + this.idx); - } - if (this.idx >= this.input.length) { - throw Error("Unexpected end of input"); + for (var e3 = 0; e3 < edges3.length; e3++) { + var edge = edges3[e3]; + var _i2 = id2position[edge.source().id()]; + var j3 = id2position[edge.target().id()]; + var sim = getSimilarity$1(edge, opts.attributes); + M3[_i2 * n2 + j3] += sim; + M3[j3 * n2 + _i2] += sim; + } + addLoops(M3, n2, opts.multFactor); + normalize2(M3, n2); + var isStillMoving = true; + var iterations = 0; + while (isStillMoving && iterations < opts.maxIterations) { + isStillMoving = false; + _M = expand(M3, n2, opts.expandFactor); + M3 = inflate(_M, n2, opts.inflateFactor); + if (!hasConverged(M3, _M, n22, 4)) { + isStillMoving = true; } - this.idx++; + iterations++; } - loc(begin) { - return { begin, end: this.idx }; + var clusters = assign$2(M3, n2, nodes5, cy); + clusters = removeDuplicates(clusters); + return clusters; + }, "markovClustering"); + markovClustering$1 = { + markovClustering, + mcl: markovClustering + }; + identity$1 = /* @__PURE__ */ __name(function identity5(x5) { + return x5; + }, "identity"); + absDiff = /* @__PURE__ */ __name(function absDiff2(p3, q3) { + return Math.abs(q3 - p3); + }, "absDiff"); + addAbsDiff = /* @__PURE__ */ __name(function addAbsDiff2(total, p3, q3) { + return total + absDiff(p3, q3); + }, "addAbsDiff"); + addSquaredDiff = /* @__PURE__ */ __name(function addSquaredDiff2(total, p3, q3) { + return total + Math.pow(q3 - p3, 2); + }, "addSquaredDiff"); + sqrt3 = /* @__PURE__ */ __name(function sqrt4(x5) { + return Math.sqrt(x5); + }, "sqrt"); + maxAbsDiff = /* @__PURE__ */ __name(function maxAbsDiff2(currentMax, p3, q3) { + return Math.max(currentMax, absDiff(p3, q3)); + }, "maxAbsDiff"); + getDistance = /* @__PURE__ */ __name(function getDistance2(length2, getP, getQ, init3, visit) { + var post = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : identity$1; + var ret = init3; + var p3, q3; + for (var dim = 0; dim < length2; dim++) { + p3 = getP(dim); + q3 = getQ(dim); + ret = visit(ret, p3, q3); } + return post(ret); + }, "getDistance"); + distances = { + euclidean: /* @__PURE__ */ __name(function euclidean(length2, getP, getQ) { + if (length2 >= 2) { + return getDistance(length2, getP, getQ, 0, addSquaredDiff, sqrt3); + } else { + return getDistance(length2, getP, getQ, 0, addAbsDiff); + } + }, "euclidean"), + squaredEuclidean: /* @__PURE__ */ __name(function squaredEuclidean(length2, getP, getQ) { + return getDistance(length2, getP, getQ, 0, addSquaredDiff); + }, "squaredEuclidean"), + manhattan: /* @__PURE__ */ __name(function manhattan(length2, getP, getQ) { + return getDistance(length2, getP, getQ, 0, addAbsDiff); + }, "manhattan"), + max: /* @__PURE__ */ __name(function max7(length2, getP, getQ) { + return getDistance(length2, getP, getQ, -Infinity, maxAbsDiff); + }, "max") }; - } - }); - - // ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/base-regexp-visitor.js - var BaseRegExpVisitor; - var init_base_regexp_visitor = __esm({ - "../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/base-regexp-visitor.js"() { - "use strict"; - BaseRegExpVisitor = class { - static { - __name(this, "BaseRegExpVisitor"); + distances["squared-euclidean"] = distances["squaredEuclidean"]; + distances["squaredeuclidean"] = distances["squaredEuclidean"]; + __name(clusteringDistance, "clusteringDistance"); + defaults$b = defaults$g({ + k: 2, + m: 2, + sensitivityThreshold: 1e-4, + distance: "euclidean", + maxIterations: 10, + attributes: [], + testMode: false, + testCentroids: null + }); + setOptions$2 = /* @__PURE__ */ __name(function setOptions2(options2) { + return defaults$b(options2); + }, "setOptions"); + getDist = /* @__PURE__ */ __name(function getDist2(type3, node2, centroid, attributes, mode) { + var noNodeP = mode !== "kMedoids"; + var getP = noNodeP ? function(i2) { + return centroid[i2]; + } : function(i2) { + return attributes[i2](centroid); + }; + var getQ = /* @__PURE__ */ __name(function getQ2(i2) { + return attributes[i2](node2); + }, "getQ"); + var nodeP = centroid; + var nodeQ = node2; + return clusteringDistance(type3, attributes.length, getP, getQ, nodeP, nodeQ); + }, "getDist"); + randomCentroids = /* @__PURE__ */ __name(function randomCentroids2(nodes5, k2, attributes) { + var ndim = attributes.length; + var min9 = new Array(ndim); + var max10 = new Array(ndim); + var centroids = new Array(k2); + var centroid = null; + for (var i2 = 0; i2 < ndim; i2++) { + min9[i2] = nodes5.min(attributes[i2]).value; + max10[i2] = nodes5.max(attributes[i2]).value; } - visitChildren(node2) { - for (const key in node2) { - const child = node2[key]; - if (node2.hasOwnProperty(key)) { - if (child.type !== void 0) { - this.visit(child); - } else if (Array.isArray(child)) { - child.forEach((subChild) => { - this.visit(subChild); - }, this); - } + for (var c3 = 0; c3 < k2; c3++) { + centroid = []; + for (var _i = 0; _i < ndim; _i++) { + centroid[_i] = Math.random() * (max10[_i] - min9[_i]) + min9[_i]; + } + centroids[c3] = centroid; + } + return centroids; + }, "randomCentroids"); + classify = /* @__PURE__ */ __name(function classify2(node2, centroids, distance2, attributes, type3) { + var min9 = Infinity; + var index = 0; + for (var i2 = 0; i2 < centroids.length; i2++) { + var dist3 = getDist(distance2, node2, centroids[i2], attributes, type3); + if (dist3 < min9) { + min9 = dist3; + index = i2; + } + } + return index; + }, "classify"); + buildCluster = /* @__PURE__ */ __name(function buildCluster2(centroid, nodes5, assignment) { + var cluster = []; + var node2 = null; + for (var n2 = 0; n2 < nodes5.length; n2++) { + node2 = nodes5[n2]; + if (assignment[node2.id()] === centroid) { + cluster.push(node2); + } + } + return cluster; + }, "buildCluster"); + haveValuesConverged = /* @__PURE__ */ __name(function haveValuesConverged2(v12, v23, sensitivityThreshold) { + return Math.abs(v23 - v12) <= sensitivityThreshold; + }, "haveValuesConverged"); + haveMatricesConverged = /* @__PURE__ */ __name(function haveMatricesConverged2(v12, v23, sensitivityThreshold) { + for (var i2 = 0; i2 < v12.length; i2++) { + for (var j3 = 0; j3 < v12[i2].length; j3++) { + var diff2 = Math.abs(v12[i2][j3] - v23[i2][j3]); + if (diff2 > sensitivityThreshold) { + return false; } } } - visit(node2) { - switch (node2.type) { - case "Pattern": - this.visitPattern(node2); - break; - case "Flags": - this.visitFlags(node2); - break; - case "Disjunction": - this.visitDisjunction(node2); - break; - case "Alternative": - this.visitAlternative(node2); - break; - case "StartAnchor": - this.visitStartAnchor(node2); - break; - case "EndAnchor": - this.visitEndAnchor(node2); - break; - case "WordBoundary": - this.visitWordBoundary(node2); - break; - case "NonWordBoundary": - this.visitNonWordBoundary(node2); - break; - case "Lookahead": - this.visitLookahead(node2); - break; - case "NegativeLookahead": - this.visitNegativeLookahead(node2); - break; - case "Character": - this.visitCharacter(node2); - break; - case "Set": - this.visitSet(node2); - break; - case "Group": - this.visitGroup(node2); - break; - case "GroupBackReference": - this.visitGroupBackReference(node2); - break; - case "Quantifier": - this.visitQuantifier(node2); - break; + return true; + }, "haveMatricesConverged"); + seenBefore = /* @__PURE__ */ __name(function seenBefore2(node2, medoids, n2) { + for (var i2 = 0; i2 < n2; i2++) { + if (node2 === medoids[i2]) return true; + } + return false; + }, "seenBefore"); + randomMedoids = /* @__PURE__ */ __name(function randomMedoids2(nodes5, k2) { + var medoids = new Array(k2); + if (nodes5.length < 50) { + for (var i2 = 0; i2 < k2; i2++) { + var node2 = nodes5[Math.floor(Math.random() * nodes5.length)]; + while (seenBefore(node2, medoids, i2)) { + node2 = nodes5[Math.floor(Math.random() * nodes5.length)]; + } + medoids[i2] = node2; + } + } else { + for (var _i2 = 0; _i2 < k2; _i2++) { + medoids[_i2] = nodes5[Math.floor(Math.random() * nodes5.length)]; } - this.visitChildren(node2); } - visitPattern(node2) { + return medoids; + }, "randomMedoids"); + findCost = /* @__PURE__ */ __name(function findCost2(potentialNewMedoid, cluster, attributes) { + var cost = 0; + for (var n2 = 0; n2 < cluster.length; n2++) { + cost += getDist("manhattan", cluster[n2], potentialNewMedoid, attributes, "kMedoids"); } - visitFlags(node2) { + return cost; + }, "findCost"); + kMeans = /* @__PURE__ */ __name(function kMeans2(options2) { + var cy = this.cy(); + var nodes5 = this.nodes(); + var node2 = null; + var opts = setOptions$2(options2); + var clusters = new Array(opts.k); + var assignment = {}; + var centroids; + if (opts.testMode) { + if (typeof opts.testCentroids === "number") { + opts.testCentroids; + centroids = randomCentroids(nodes5, opts.k, opts.attributes); + } else if (_typeof(opts.testCentroids) === "object") { + centroids = opts.testCentroids; + } else { + centroids = randomCentroids(nodes5, opts.k, opts.attributes); + } + } else { + centroids = randomCentroids(nodes5, opts.k, opts.attributes); } - visitDisjunction(node2) { + var isStillMoving = true; + var iterations = 0; + while (isStillMoving && iterations < opts.maxIterations) { + for (var n2 = 0; n2 < nodes5.length; n2++) { + node2 = nodes5[n2]; + assignment[node2.id()] = classify(node2, centroids, opts.distance, opts.attributes, "kMeans"); + } + isStillMoving = false; + for (var c3 = 0; c3 < opts.k; c3++) { + var cluster = buildCluster(c3, nodes5, assignment); + if (cluster.length === 0) { + continue; + } + var ndim = opts.attributes.length; + var centroid = centroids[c3]; + var newCentroid = new Array(ndim); + var sum2 = new Array(ndim); + for (var d3 = 0; d3 < ndim; d3++) { + sum2[d3] = 0; + for (var i2 = 0; i2 < cluster.length; i2++) { + node2 = cluster[i2]; + sum2[d3] += opts.attributes[d3](node2); + } + newCentroid[d3] = sum2[d3] / cluster.length; + if (!haveValuesConverged(newCentroid[d3], centroid[d3], opts.sensitivityThreshold)) { + isStillMoving = true; + } + } + centroids[c3] = newCentroid; + clusters[c3] = cy.collection(cluster); + } + iterations++; } - visitAlternative(node2) { + return clusters; + }, "kMeans"); + kMedoids = /* @__PURE__ */ __name(function kMedoids2(options2) { + var cy = this.cy(); + var nodes5 = this.nodes(); + var node2 = null; + var opts = setOptions$2(options2); + var clusters = new Array(opts.k); + var medoids; + var assignment = {}; + var curCost; + var minCosts = new Array(opts.k); + if (opts.testMode) { + if (typeof opts.testCentroids === "number") ; + else if (_typeof(opts.testCentroids) === "object") { + medoids = opts.testCentroids; + } else { + medoids = randomMedoids(nodes5, opts.k); + } + } else { + medoids = randomMedoids(nodes5, opts.k); } - // Assertion - visitStartAnchor(node2) { + var isStillMoving = true; + var iterations = 0; + while (isStillMoving && iterations < opts.maxIterations) { + for (var n2 = 0; n2 < nodes5.length; n2++) { + node2 = nodes5[n2]; + assignment[node2.id()] = classify(node2, medoids, opts.distance, opts.attributes, "kMedoids"); + } + isStillMoving = false; + for (var m3 = 0; m3 < medoids.length; m3++) { + var cluster = buildCluster(m3, nodes5, assignment); + if (cluster.length === 0) { + continue; + } + minCosts[m3] = findCost(medoids[m3], cluster, opts.attributes); + for (var _n = 0; _n < cluster.length; _n++) { + curCost = findCost(cluster[_n], cluster, opts.attributes); + if (curCost < minCosts[m3]) { + minCosts[m3] = curCost; + medoids[m3] = cluster[_n]; + isStillMoving = true; + } + } + clusters[m3] = cy.collection(cluster); + } + iterations++; } - visitEndAnchor(node2) { + return clusters; + }, "kMedoids"); + updateCentroids = /* @__PURE__ */ __name(function updateCentroids2(centroids, nodes5, U3, weight8, opts) { + var numerator, denominator; + for (var n2 = 0; n2 < nodes5.length; n2++) { + for (var c3 = 0; c3 < centroids.length; c3++) { + weight8[n2][c3] = Math.pow(U3[n2][c3], opts.m); + } } - visitWordBoundary(node2) { + for (var _c = 0; _c < centroids.length; _c++) { + for (var dim = 0; dim < opts.attributes.length; dim++) { + numerator = 0; + denominator = 0; + for (var _n2 = 0; _n2 < nodes5.length; _n2++) { + numerator += weight8[_n2][_c] * opts.attributes[dim](nodes5[_n2]); + denominator += weight8[_n2][_c]; + } + centroids[_c][dim] = numerator / denominator; + } } - visitNonWordBoundary(node2) { + }, "updateCentroids"); + updateMembership = /* @__PURE__ */ __name(function updateMembership2(U3, _U, centroids, nodes5, opts) { + for (var i2 = 0; i2 < U3.length; i2++) { + _U[i2] = U3[i2].slice(); } - visitLookahead(node2) { + var sum2, numerator, denominator; + var pow = 2 / (opts.m - 1); + for (var c3 = 0; c3 < centroids.length; c3++) { + for (var n2 = 0; n2 < nodes5.length; n2++) { + sum2 = 0; + for (var k2 = 0; k2 < centroids.length; k2++) { + numerator = getDist(opts.distance, nodes5[n2], centroids[c3], opts.attributes, "cmeans"); + denominator = getDist(opts.distance, nodes5[n2], centroids[k2], opts.attributes, "cmeans"); + sum2 += Math.pow(numerator / denominator, pow); + } + U3[n2][c3] = 1 / sum2; + } } - visitNegativeLookahead(node2) { + }, "updateMembership"); + assign$1 = /* @__PURE__ */ __name(function assign3(nodes5, U3, opts, cy) { + var clusters = new Array(opts.k); + for (var c3 = 0; c3 < clusters.length; c3++) { + clusters[c3] = []; } - // atoms - visitCharacter(node2) { + var max10; + var index; + for (var n2 = 0; n2 < U3.length; n2++) { + max10 = -Infinity; + index = -1; + for (var _c2 = 0; _c2 < U3[0].length; _c2++) { + if (U3[n2][_c2] > max10) { + max10 = U3[n2][_c2]; + index = _c2; + } + } + clusters[index].push(nodes5[n2]); } - visitSet(node2) { + for (var _c3 = 0; _c3 < clusters.length; _c3++) { + clusters[_c3] = cy.collection(clusters[_c3]); } - visitGroup(node2) { + return clusters; + }, "assign"); + fuzzyCMeans = /* @__PURE__ */ __name(function fuzzyCMeans2(options2) { + var cy = this.cy(); + var nodes5 = this.nodes(); + var opts = setOptions$2(options2); + var clusters; + var centroids; + var U3; + var _U; + var weight8; + _U = new Array(nodes5.length); + for (var i2 = 0; i2 < nodes5.length; i2++) { + _U[i2] = new Array(opts.k); } - visitGroupBackReference(node2) { + U3 = new Array(nodes5.length); + for (var _i3 = 0; _i3 < nodes5.length; _i3++) { + U3[_i3] = new Array(opts.k); } - visitQuantifier(node2) { + for (var _i4 = 0; _i4 < nodes5.length; _i4++) { + var total = 0; + for (var j3 = 0; j3 < opts.k; j3++) { + U3[_i4][j3] = Math.random(); + total += U3[_i4][j3]; + } + for (var _j = 0; _j < opts.k; _j++) { + U3[_i4][_j] = U3[_i4][_j] / total; + } + } + centroids = new Array(opts.k); + for (var _i5 = 0; _i5 < opts.k; _i5++) { + centroids[_i5] = new Array(opts.attributes.length); + } + weight8 = new Array(nodes5.length); + for (var _i6 = 0; _i6 < nodes5.length; _i6++) { + weight8[_i6] = new Array(opts.k); + } + var isStillMoving = true; + var iterations = 0; + while (isStillMoving && iterations < opts.maxIterations) { + isStillMoving = false; + updateCentroids(centroids, nodes5, U3, weight8, opts); + updateMembership(U3, _U, centroids, nodes5, opts); + if (!haveMatricesConverged(U3, _U, opts.sensitivityThreshold)) { + isStillMoving = true; + } + iterations++; } + clusters = assign$1(nodes5, U3, opts, cy); + return { + clusters, + degreeOfMembership: U3 + }; + }, "fuzzyCMeans"); + kClustering = { + kMeans, + kMedoids, + fuzzyCMeans, + fcm: fuzzyCMeans }; - } - }); - - // ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/api.js - var init_api = __esm({ - "../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/api.js"() { - "use strict"; - init_regexp_parser(); - init_base_regexp_visitor(); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/regexp-utils.js - var regexp_utils_exports = {}; - __export(regexp_utils_exports, { - NEWLINE_REGEXP: () => NEWLINE_REGEXP, - escapeRegExp: () => escapeRegExp, - getCaseInsensitivePattern: () => getCaseInsensitivePattern, - getTerminalParts: () => getTerminalParts, - isMultilineComment: () => isMultilineComment, - isWhitespace: () => isWhitespace2, - partialMatches: () => partialMatches, - partialRegExp: () => partialRegExp, - whitespaceCharacters: () => whitespaceCharacters - }); - function getTerminalParts(regexp) { - try { - if (typeof regexp !== "string") { - regexp = regexp.source; - } - regexp = `/${regexp}/`; - const pattern = regexpParser.pattern(regexp); - const parts = []; - for (const alternative of pattern.value.value) { - visitor.reset(regexp); - visitor.visit(alternative); - parts.push({ - start: visitor.startRegexp, - end: visitor.endRegex - }); - } - return parts; - } catch (_a) { - return []; - } - } - function isMultilineComment(regexp) { - try { - if (typeof regexp === "string") { - regexp = new RegExp(regexp); - } - regexp = regexp.toString(); - visitor.reset(regexp); - visitor.visit(regexpParser.pattern(regexp)); - return visitor.multiline; - } catch (_a) { - return false; - } - } - function isWhitespace2(value2) { - const regexp = typeof value2 === "string" ? new RegExp(value2) : value2; - return whitespaceCharacters.some((ws) => regexp.test(ws)); - } - function escapeRegExp(value2) { - return value2.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); - } - function getCaseInsensitivePattern(keyword) { - return Array.prototype.map.call(keyword, (letter) => /\w/.test(letter) ? `[${letter.toLowerCase()}${letter.toUpperCase()}]` : escapeRegExp(letter)).join(""); - } - function partialMatches(regex2, input) { - const partial = partialRegExp(regex2); - const match2 = input.match(partial); - return !!match2 && match2[0].length > 0; - } - function partialRegExp(regex2) { - if (typeof regex2 === "string") { - regex2 = new RegExp(regex2); - } - const re2 = regex2, source = regex2.source; - let i2 = 0; - function process2() { - let result = "", tmp; - function appendRaw(nbChars) { - result += source.substr(i2, nbChars); - i2 += nbChars; - } - __name(appendRaw, "appendRaw"); - function appendOptional(nbChars) { - result += "(?:" + source.substr(i2, nbChars) + "|$)"; - i2 += nbChars; - } - __name(appendOptional, "appendOptional"); - while (i2 < source.length) { - switch (source[i2]) { - case "\\": - switch (source[i2 + 1]) { - case "c": - appendOptional(3); - break; - case "x": - appendOptional(4); - break; - case "u": - if (re2.unicode) { - if (source[i2 + 2] === "{") { - appendOptional(source.indexOf("}", i2) - i2 + 1); - } else { - appendOptional(6); - } - } else { - appendOptional(2); - } - break; - case "p": - case "P": - if (re2.unicode) { - appendOptional(source.indexOf("}", i2) - i2 + 1); - } else { - appendOptional(2); - } - break; - case "k": - appendOptional(source.indexOf(">", i2) - i2 + 1); - break; - default: - appendOptional(2); - break; + defaults$a = defaults$g({ + distance: "euclidean", + // distance metric to compare nodes + linkage: "min", + // linkage criterion : how to determine the distance between clusters of nodes + mode: "threshold", + // mode:'threshold' => clusters must be threshold distance apart + threshold: Infinity, + // the distance threshold + // mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters + addDendrogram: false, + // whether to add the dendrogram to the graph for viz + dendrogramDepth: 0, + // depth at which dendrogram branches are merged into the returned clusters + attributes: [] + // array of attr functions + }); + linkageAliases = { + "single": "min", + "complete": "max" + }; + setOptions$1 = /* @__PURE__ */ __name(function setOptions3(options2) { + var opts = defaults$a(options2); + var preferredAlias = linkageAliases[opts.linkage]; + if (preferredAlias != null) { + opts.linkage = preferredAlias; + } + return opts; + }, "setOptions"); + mergeClosest = /* @__PURE__ */ __name(function mergeClosest2(clusters, index, dists, mins, opts) { + var minKey = 0; + var min9 = Infinity; + var dist3; + var attrs = opts.attributes; + var getDist3 = /* @__PURE__ */ __name(function getDist4(n1, n2) { + return clusteringDistance(opts.distance, attrs.length, function(i3) { + return attrs[i3](n1); + }, function(i3) { + return attrs[i3](n2); + }, n1, n2); + }, "getDist"); + for (var i2 = 0; i2 < clusters.length; i2++) { + var key = clusters[i2].key; + var _dist = dists[key][mins[key]]; + if (_dist < min9) { + minKey = key; + min9 = _dist; + } + } + if (opts.mode === "threshold" && min9 >= opts.threshold || opts.mode === "dendrogram" && clusters.length === 1) { + return false; + } + var c1 = index[minKey]; + var c22 = index[mins[minKey]]; + var merged; + if (opts.mode === "dendrogram") { + merged = { + left: c1, + right: c22, + key: c1.key + }; + } else { + merged = { + value: c1.value.concat(c22.value), + key: c1.key + }; + } + clusters[c1.index] = merged; + clusters.splice(c22.index, 1); + index[c1.key] = merged; + for (var _i = 0; _i < clusters.length; _i++) { + var cur = clusters[_i]; + if (c1.key === cur.key) { + dist3 = Infinity; + } else if (opts.linkage === "min") { + dist3 = dists[c1.key][cur.key]; + if (dists[c1.key][cur.key] > dists[c22.key][cur.key]) { + dist3 = dists[c22.key][cur.key]; } - break; - case "[": - tmp = /\[(?:\\.|.)*?\]/g; - tmp.lastIndex = i2; - tmp = tmp.exec(source) || []; - appendOptional(tmp[0].length); - break; - case "|": - case "^": - case "$": - case "*": - case "+": - case "?": - appendRaw(1); - break; - case "{": - tmp = /\{\d+,?\d*\}/g; - tmp.lastIndex = i2; - tmp = tmp.exec(source); - if (tmp) { - appendRaw(tmp[0].length); - } else { - appendOptional(1); + } else if (opts.linkage === "max") { + dist3 = dists[c1.key][cur.key]; + if (dists[c1.key][cur.key] < dists[c22.key][cur.key]) { + dist3 = dists[c22.key][cur.key]; } - break; - case "(": - if (source[i2 + 1] === "?") { - switch (source[i2 + 2]) { - case ":": - result += "(?:"; - i2 += 3; - result += process2() + "|$)"; - break; - case "=": - result += "(?="; - i2 += 3; - result += process2() + ")"; - break; - case "!": - tmp = i2; - i2 += 3; - process2(); - result += source.substr(tmp, i2 - tmp); - break; - case "<": - switch (source[i2 + 3]) { - case "=": - case "!": - tmp = i2; - i2 += 4; - process2(); - result += source.substr(tmp, i2 - tmp); - break; - default: - appendRaw(source.indexOf(">", i2) - i2 + 1); - result += process2() + "|$)"; - break; - } - break; + } else if (opts.linkage === "mean") { + dist3 = (dists[c1.key][cur.key] * c1.size + dists[c22.key][cur.key] * c22.size) / (c1.size + c22.size); + } else { + if (opts.mode === "dendrogram") dist3 = getDist3(cur.value, c1.value); + else dist3 = getDist3(cur.value[0], c1.value[0]); + } + dists[c1.key][cur.key] = dists[cur.key][c1.key] = dist3; + } + for (var _i2 = 0; _i2 < clusters.length; _i2++) { + var key1 = clusters[_i2].key; + if (mins[key1] === c1.key || mins[key1] === c22.key) { + var _min = key1; + for (var j3 = 0; j3 < clusters.length; j3++) { + var key2 = clusters[j3].key; + if (dists[key1][key2] < dists[key1][_min]) { + _min = key2; } - } else { - appendRaw(1); - result += process2() + "|$)"; } - break; - case ")": - ++i2; - return result; - default: - appendOptional(1); - break; + mins[key1] = _min; + } + clusters[_i2].index = _i2; } - } - return result; - } - __name(process2, "process"); - return new RegExp(process2(), regex2.flags); - } - var NEWLINE_REGEXP, regexpParser, TerminalRegExpVisitor, visitor, whitespaceCharacters; - var init_regexp_utils = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/regexp-utils.js"() { - "use strict"; - init_api(); - NEWLINE_REGEXP = /\r?\n/gm; - regexpParser = new RegExpParser(); - TerminalRegExpVisitor = class extends BaseRegExpVisitor { - static { - __name(this, "TerminalRegExpVisitor"); + c1.key = c22.key = c1.index = c22.index = null; + return true; + }, "mergeClosest"); + _getAllChildren = /* @__PURE__ */ __name(function getAllChildren(root3, arr, cy) { + if (!root3) return; + if (root3.value) { + arr.push(root3.value); + } else { + if (root3.left) _getAllChildren(root3.left, arr); + if (root3.right) _getAllChildren(root3.right, arr); } - constructor() { - super(...arguments); - this.isStarting = true; - this.endRegexpStack = []; - this.multiline = false; + }, "getAllChildren"); + _buildDendrogram = /* @__PURE__ */ __name(function buildDendrogram(root3, cy) { + if (!root3) return ""; + if (root3.left && root3.right) { + var leftStr = _buildDendrogram(root3.left, cy); + var rightStr = _buildDendrogram(root3.right, cy); + var node2 = cy.add({ + group: "nodes", + data: { + id: leftStr + "," + rightStr + } + }); + cy.add({ + group: "edges", + data: { + source: leftStr, + target: node2.id() + } + }); + cy.add({ + group: "edges", + data: { + source: rightStr, + target: node2.id() + } + }); + return node2.id(); + } else if (root3.value) { + return root3.value.id(); } - get endRegex() { - return this.endRegexpStack.join(""); + }, "buildDendrogram"); + _buildClustersFromTree = /* @__PURE__ */ __name(function buildClustersFromTree(root3, k2, cy) { + if (!root3) return []; + var left3 = [], right3 = [], leaves = []; + if (k2 === 0) { + if (root3.left) _getAllChildren(root3.left, left3); + if (root3.right) _getAllChildren(root3.right, right3); + leaves = left3.concat(right3); + return [cy.collection(leaves)]; + } else if (k2 === 1) { + if (root3.value) { + return [cy.collection(root3.value)]; + } else { + if (root3.left) _getAllChildren(root3.left, left3); + if (root3.right) _getAllChildren(root3.right, right3); + return [cy.collection(left3), cy.collection(right3)]; + } + } else { + if (root3.value) { + return [cy.collection(root3.value)]; + } else { + if (root3.left) left3 = _buildClustersFromTree(root3.left, k2 - 1, cy); + if (root3.right) right3 = _buildClustersFromTree(root3.right, k2 - 1, cy); + return left3.concat(right3); + } } - reset(regex2) { - this.multiline = false; - this.regex = regex2; - this.startRegexp = ""; - this.isStarting = true; - this.endRegexpStack = []; + }, "buildClustersFromTree"); + hierarchicalClustering = /* @__PURE__ */ __name(function hierarchicalClustering2(options2) { + var cy = this.cy(); + var nodes5 = this.nodes(); + var opts = setOptions$1(options2); + var attrs = opts.attributes; + var getDist3 = /* @__PURE__ */ __name(function getDist4(n1, n22) { + return clusteringDistance(opts.distance, attrs.length, function(i3) { + return attrs[i3](n1); + }, function(i3) { + return attrs[i3](n22); + }, n1, n22); + }, "getDist"); + var clusters = []; + var dists = []; + var mins = []; + var index = []; + for (var n2 = 0; n2 < nodes5.length; n2++) { + var cluster = { + value: opts.mode === "dendrogram" ? nodes5[n2] : [nodes5[n2]], + key: n2, + index: n2 + }; + clusters[n2] = cluster; + index[n2] = cluster; + dists[n2] = []; + mins[n2] = 0; } - visitGroup(node2) { - if (node2.quantifier) { - this.isStarting = false; - this.endRegexpStack = []; + for (var i2 = 0; i2 < clusters.length; i2++) { + for (var j3 = 0; j3 <= i2; j3++) { + var dist3 = void 0; + if (opts.mode === "dendrogram") { + dist3 = i2 === j3 ? Infinity : getDist3(clusters[i2].value, clusters[j3].value); + } else { + dist3 = i2 === j3 ? Infinity : getDist3(clusters[i2].value[0], clusters[j3].value[0]); + } + dists[i2][j3] = dist3; + dists[j3][i2] = dist3; + if (dist3 < dists[i2][mins[i2]]) { + mins[i2] = j3; + } } } - visitCharacter(node2) { - const char2 = String.fromCharCode(node2.value); - if (!this.multiline && char2 === "\n") { - this.multiline = true; + var merged = mergeClosest(clusters, index, dists, mins, opts); + while (merged) { + merged = mergeClosest(clusters, index, dists, mins, opts); + } + var retClusters; + if (opts.mode === "dendrogram") { + retClusters = _buildClustersFromTree(clusters[0], opts.dendrogramDepth, cy); + if (opts.addDendrogram) _buildDendrogram(clusters[0], cy); + } else { + retClusters = new Array(clusters.length); + clusters.forEach(function(cluster2, i3) { + cluster2.key = cluster2.index = null; + retClusters[i3] = cy.collection(cluster2.value); + }); + } + return retClusters; + }, "hierarchicalClustering"); + hierarchicalClustering$1 = { + hierarchicalClustering, + hca: hierarchicalClustering + }; + defaults$9 = defaults$g({ + distance: "euclidean", + // distance metric to compare attributes between two nodes + preference: "median", + // suitability of a data point to serve as an exemplar + damping: 0.8, + // damping factor between [0.5, 1) + maxIterations: 1e3, + // max number of iterations to run + minIterations: 100, + // min number of iterations to run in order for clustering to stop + attributes: [ + // functions to quantify the similarity between any two points + // e.g. node => node.data('weight') + ] + }); + setOptions4 = /* @__PURE__ */ __name(function setOptions5(options2) { + var dmp = options2.damping; + var pref = options2.preference; + if (!(0.5 <= dmp && dmp < 1)) { + error("Damping must range on [0.5, 1). Got: ".concat(dmp)); + } + var validPrefs = ["median", "mean", "min", "max"]; + if (!(validPrefs.some(function(v3) { + return v3 === pref; + }) || number$1(pref))) { + error("Preference must be one of [".concat(validPrefs.map(function(p3) { + return "'".concat(p3, "'"); + }).join(", "), "] or a number. Got: ").concat(pref)); + } + return defaults$9(options2); + }, "setOptions"); + getSimilarity2 = /* @__PURE__ */ __name(function getSimilarity3(type3, n1, n2, attributes) { + var attr = /* @__PURE__ */ __name(function attr2(n3, i2) { + return attributes[i2](n3); + }, "attr"); + return -clusteringDistance(type3, attributes.length, function(i2) { + return attr(n1, i2); + }, function(i2) { + return attr(n2, i2); + }, n1, n2); + }, "getSimilarity"); + getPreference = /* @__PURE__ */ __name(function getPreference2(S4, preference) { + var p3 = null; + if (preference === "median") { + p3 = median(S4); + } else if (preference === "mean") { + p3 = mean(S4); + } else if (preference === "min") { + p3 = min5(S4); + } else if (preference === "max") { + p3 = max5(S4); + } else { + p3 = preference; + } + return p3; + }, "getPreference"); + findExemplars = /* @__PURE__ */ __name(function findExemplars2(n2, R3, A2) { + var indices = []; + for (var i2 = 0; i2 < n2; i2++) { + if (R3[i2 * n2 + i2] + A2[i2 * n2 + i2] > 0) { + indices.push(i2); } - if (node2.quantifier) { - this.isStarting = false; - this.endRegexpStack = []; - } else { - const escapedChar = escapeRegExp(char2); - this.endRegexpStack.push(escapedChar); - if (this.isStarting) { - this.startRegexp += escapedChar; + } + return indices; + }, "findExemplars"); + assignClusters = /* @__PURE__ */ __name(function assignClusters2(n2, S4, exemplars) { + var clusters = []; + for (var i2 = 0; i2 < n2; i2++) { + var index = -1; + var max10 = -Infinity; + for (var ei = 0; ei < exemplars.length; ei++) { + var e3 = exemplars[ei]; + if (S4[i2 * n2 + e3] > max10) { + index = e3; + max10 = S4[i2 * n2 + e3]; } } + if (index > 0) { + clusters.push(index); + } } - visitSet(node2) { - if (!this.multiline) { - const set6 = this.regex.substring(node2.loc.begin, node2.loc.end); - const regex2 = new RegExp(set6); - this.multiline = Boolean("\n".match(regex2)); + for (var _ei = 0; _ei < exemplars.length; _ei++) { + clusters[exemplars[_ei]] = exemplars[_ei]; + } + return clusters; + }, "assignClusters"); + assign4 = /* @__PURE__ */ __name(function assign5(n2, S4, exemplars) { + var clusters = assignClusters(n2, S4, exemplars); + for (var ei = 0; ei < exemplars.length; ei++) { + var ii = []; + for (var c3 = 0; c3 < clusters.length; c3++) { + if (clusters[c3] === exemplars[ei]) { + ii.push(c3); + } } - if (node2.quantifier) { - this.isStarting = false; - this.endRegexpStack = []; - } else { - const set6 = this.regex.substring(node2.loc.begin, node2.loc.end); - this.endRegexpStack.push(set6); - if (this.isStarting) { - this.startRegexp += set6; + var maxI = -1; + var maxSum = -Infinity; + for (var i2 = 0; i2 < ii.length; i2++) { + var sum2 = 0; + for (var j3 = 0; j3 < ii.length; j3++) { + sum2 += S4[ii[j3] * n2 + ii[i2]]; + } + if (sum2 > maxSum) { + maxI = i2; + maxSum = sum2; } } + exemplars[ei] = ii[maxI]; } - visitChildren(node2) { - if (node2.type === "Group") { - const group2 = node2; - if (group2.quantifier) { - return; + clusters = assignClusters(n2, S4, exemplars); + return clusters; + }, "assign"); + affinityPropagation = /* @__PURE__ */ __name(function affinityPropagation2(options2) { + var cy = this.cy(); + var nodes5 = this.nodes(); + var opts = setOptions4(options2); + var id2position = {}; + for (var i2 = 0; i2 < nodes5.length; i2++) { + id2position[nodes5[i2].id()] = i2; + } + var n2; + var n22; + var S4; + var p3; + var R3; + var A2; + n2 = nodes5.length; + n22 = n2 * n2; + S4 = new Array(n22); + for (var _i = 0; _i < n22; _i++) { + S4[_i] = -Infinity; + } + for (var _i2 = 0; _i2 < n2; _i2++) { + for (var j3 = 0; j3 < n2; j3++) { + if (_i2 !== j3) { + S4[_i2 * n2 + j3] = getSimilarity2(opts.distance, nodes5[_i2], nodes5[j3], opts.attributes); } } - super.visitChildren(node2); } - }; - visitor = new TerminalRegExpVisitor(); - __name(getTerminalParts, "getTerminalParts"); - __name(isMultilineComment, "isMultilineComment"); - whitespaceCharacters = "\f\n\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF".split(""); - __name(isWhitespace2, "isWhitespace"); - __name(escapeRegExp, "escapeRegExp"); - __name(getCaseInsensitivePattern, "getCaseInsensitivePattern"); - __name(partialMatches, "partialMatches"); - __name(partialRegExp, "partialRegExp"); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/grammar-utils.js - var grammar_utils_exports = {}; - __export(grammar_utils_exports, { - findAssignment: () => findAssignment, - findNameAssignment: () => findNameAssignment, - findNodeForKeyword: () => findNodeForKeyword, - findNodeForProperty: () => findNodeForProperty, - findNodesForKeyword: () => findNodesForKeyword, - findNodesForKeywordInternal: () => findNodesForKeywordInternal, - findNodesForProperty: () => findNodesForProperty, - getActionAtElement: () => getActionAtElement, - getActionType: () => getActionType, - getAllReachableRules: () => getAllReachableRules, - getCrossReferenceTerminal: () => getCrossReferenceTerminal, - getEntryRule: () => getEntryRule, - getExplicitRuleType: () => getExplicitRuleType, - getHiddenRules: () => getHiddenRules, - getRuleType: () => getRuleType, - getRuleTypeName: () => getRuleTypeName, - getTypeName: () => getTypeName, - isArrayCardinality: () => isArrayCardinality, - isArrayOperator: () => isArrayOperator, - isCommentTerminal: () => isCommentTerminal, - isDataType: () => isDataType, - isDataTypeRule: () => isDataTypeRule, - isOptionalCardinality: () => isOptionalCardinality, - terminalRegex: () => terminalRegex - }); - function getEntryRule(grammar) { - return grammar.rules.find((e3) => isParserRule(e3) && e3.entry); - } - function getHiddenRules(grammar) { - return grammar.rules.filter((e3) => isTerminalRule(e3) && e3.hidden); - } - function getAllReachableRules(grammar, allTerminals) { - const ruleNames = /* @__PURE__ */ new Set(); - const entryRule = getEntryRule(grammar); - if (!entryRule) { - return new Set(grammar.rules); - } - const topMostRules = [entryRule].concat(getHiddenRules(grammar)); - for (const rule of topMostRules) { - ruleDfs(rule, ruleNames, allTerminals); - } - const rules = /* @__PURE__ */ new Set(); - for (const rule of grammar.rules) { - if (ruleNames.has(rule.name) || isTerminalRule(rule) && rule.hidden) { - rules.add(rule); - } - } - return rules; - } - function ruleDfs(rule, visitedSet, allTerminals) { - visitedSet.add(rule.name); - streamAllContents(rule).forEach((node2) => { - if (isRuleCall(node2) || allTerminals && isTerminalRuleCall(node2)) { - const refRule = node2.rule.ref; - if (refRule && !visitedSet.has(refRule.name)) { - ruleDfs(refRule, visitedSet, allTerminals); + p3 = getPreference(S4, opts.preference); + for (var _i3 = 0; _i3 < n2; _i3++) { + S4[_i3 * n2 + _i3] = p3; } - } - }); - } - function getCrossReferenceTerminal(crossRef) { - if (crossRef.terminal) { - return crossRef.terminal; - } else if (crossRef.type.ref) { - const nameAssigment = findNameAssignment(crossRef.type.ref); - return nameAssigment === null || nameAssigment === void 0 ? void 0 : nameAssigment.terminal; - } - return void 0; - } - function isCommentTerminal(terminalRule) { - return terminalRule.hidden && !isWhitespace2(terminalRegex(terminalRule)); - } - function findNodesForProperty(node2, property2) { - if (!node2 || !property2) { - return []; - } - return findNodesForPropertyInternal(node2, property2, node2.astNode, true); - } - function findNodeForProperty(node2, property2, index) { - if (!node2 || !property2) { - return void 0; - } - const nodes6 = findNodesForPropertyInternal(node2, property2, node2.astNode, true); - if (nodes6.length === 0) { - return void 0; - } - if (index !== void 0) { - index = Math.max(0, Math.min(index, nodes6.length - 1)); - } else { - index = 0; - } - return nodes6[index]; - } - function findNodesForPropertyInternal(node2, property2, element3, first3) { - if (!first3) { - const nodeFeature = getContainerOfType(node2.grammarSource, isAssignment); - if (nodeFeature && nodeFeature.feature === property2) { - return [node2]; - } - } - if (isCompositeCstNode(node2) && node2.astNode === element3) { - return node2.content.flatMap((e3) => findNodesForPropertyInternal(e3, property2, element3, false)); - } - return []; - } - function findNodesForKeyword(node2, keyword) { - if (!node2) { - return []; - } - return findNodesForKeywordInternal(node2, keyword, node2 === null || node2 === void 0 ? void 0 : node2.astNode); - } - function findNodeForKeyword(node2, keyword, index) { - if (!node2) { - return void 0; - } - const nodes6 = findNodesForKeywordInternal(node2, keyword, node2 === null || node2 === void 0 ? void 0 : node2.astNode); - if (nodes6.length === 0) { - return void 0; - } - if (index !== void 0) { - index = Math.max(0, Math.min(index, nodes6.length - 1)); - } else { - index = 0; - } - return nodes6[index]; - } - function findNodesForKeywordInternal(node2, keyword, element3) { - if (node2.astNode !== element3) { - return []; - } - if (isKeyword(node2.grammarSource) && node2.grammarSource.value === keyword) { - return [node2]; - } - const treeIterator = streamCst(node2).iterator(); - let result; - const keywordNodes = []; - do { - result = treeIterator.next(); - if (!result.done) { - const childNode = result.value; - if (childNode.astNode === element3) { - if (isKeyword(childNode.grammarSource) && childNode.grammarSource.value === keyword) { - keywordNodes.push(childNode); - } - } else { - treeIterator.prune(); + R3 = new Array(n22); + for (var _i4 = 0; _i4 < n22; _i4++) { + R3[_i4] = 0; } - } - } while (!result.done); - return keywordNodes; - } - function findAssignment(cstNode) { - var _a; - const astNode = cstNode.astNode; - while (astNode === ((_a = cstNode.container) === null || _a === void 0 ? void 0 : _a.astNode)) { - const assignment = getContainerOfType(cstNode.grammarSource, isAssignment); - if (assignment) { - return assignment; - } - cstNode = cstNode.container; - } - return void 0; - } - function findNameAssignment(type3) { - let startNode = type3; - if (isInferredType(startNode)) { - if (isAction(startNode.$container)) { - startNode = startNode.$container.$container; - } else if (isParserRule(startNode.$container)) { - startNode = startNode.$container; - } else { - assertUnreachable(startNode.$container); - } - } - return findNameAssignmentInternal(type3, startNode, /* @__PURE__ */ new Map()); - } - function findNameAssignmentInternal(type3, startNode, cache3) { - var _a; - function go(node2, refType) { - let childAssignment = void 0; - const parentAssignment = getContainerOfType(node2, isAssignment); - if (!parentAssignment) { - childAssignment = findNameAssignmentInternal(refType, refType, cache3); - } - cache3.set(type3, childAssignment); - return childAssignment; - } - __name(go, "go"); - if (cache3.has(type3)) { - return cache3.get(type3); - } - cache3.set(type3, void 0); - for (const node2 of streamAllContents(startNode)) { - if (isAssignment(node2) && node2.feature.toLowerCase() === "name") { - cache3.set(type3, node2); - return node2; - } else if (isRuleCall(node2) && isParserRule(node2.rule.ref)) { - return go(node2, node2.rule.ref); - } else if (isSimpleType(node2) && ((_a = node2.typeRef) === null || _a === void 0 ? void 0 : _a.ref)) { - return go(node2, node2.typeRef.ref); - } - } - return void 0; - } - function getActionAtElement(element3) { - const parent4 = element3.$container; - if (isGroup(parent4)) { - const elements3 = parent4.elements; - const index = elements3.indexOf(element3); - for (let i2 = index - 1; i2 >= 0; i2--) { - const item = elements3[i2]; - if (isAction(item)) { - return item; - } else { - const action = streamAllContents(elements3[i2]).find(isAction); - if (action) { - return action; - } + A2 = new Array(n22); + for (var _i5 = 0; _i5 < n22; _i5++) { + A2[_i5] = 0; } - } - } - if (isAbstractElement(parent4)) { - return getActionAtElement(parent4); - } else { - return void 0; - } - } - function isOptionalCardinality(cardinality, element3) { - return cardinality === "?" || cardinality === "*" || isGroup(element3) && Boolean(element3.guardCondition); - } - function isArrayCardinality(cardinality) { - return cardinality === "*" || cardinality === "+"; - } - function isArrayOperator(operator) { - return operator === "+="; - } - function isDataTypeRule(rule) { - return isDataTypeRuleInternal(rule, /* @__PURE__ */ new Set()); - } - function isDataTypeRuleInternal(rule, visited) { - if (visited.has(rule)) { - return true; - } else { - visited.add(rule); - } - for (const node2 of streamAllContents(rule)) { - if (isRuleCall(node2)) { - if (!node2.rule.ref) { - return false; + var old = new Array(n2); + var Rp = new Array(n2); + var se2 = new Array(n2); + for (var _i6 = 0; _i6 < n2; _i6++) { + old[_i6] = 0; + Rp[_i6] = 0; + se2[_i6] = 0; } - if (isParserRule(node2.rule.ref) && !isDataTypeRuleInternal(node2.rule.ref, visited)) { - return false; + var e3 = new Array(n2 * opts.minIterations); + for (var _i7 = 0; _i7 < e3.length; _i7++) { + e3[_i7] = 0; } - } else if (isAssignment(node2)) { - return false; - } else if (isAction(node2)) { - return false; - } - } - return Boolean(rule.definition); - } - function isDataType(type3) { - return isDataTypeInternal(type3.type, /* @__PURE__ */ new Set()); - } - function isDataTypeInternal(type3, visited) { - if (visited.has(type3)) { - return true; - } else { - visited.add(type3); - } - if (isArrayType(type3)) { - return false; - } else if (isReferenceType(type3)) { - return false; - } else if (isUnionType(type3)) { - return type3.types.every((e3) => isDataTypeInternal(e3, visited)); - } else if (isSimpleType(type3)) { - if (type3.primitiveType !== void 0) { - return true; - } else if (type3.stringType !== void 0) { - return true; - } else if (type3.typeRef !== void 0) { - const ref = type3.typeRef.ref; - if (isType(ref)) { - return isDataTypeInternal(ref.type, visited); - } else { - return false; + var iter; + for (iter = 0; iter < opts.maxIterations; iter++) { + for (var _i8 = 0; _i8 < n2; _i8++) { + var max10 = -Infinity, max22 = -Infinity, maxI = -1, AS = 0; + for (var _j = 0; _j < n2; _j++) { + old[_j] = R3[_i8 * n2 + _j]; + AS = A2[_i8 * n2 + _j] + S4[_i8 * n2 + _j]; + if (AS >= max10) { + max22 = max10; + max10 = AS; + maxI = _j; + } else if (AS > max22) { + max22 = AS; + } + } + for (var _j2 = 0; _j2 < n2; _j2++) { + R3[_i8 * n2 + _j2] = (1 - opts.damping) * (S4[_i8 * n2 + _j2] - max10) + opts.damping * old[_j2]; + } + R3[_i8 * n2 + maxI] = (1 - opts.damping) * (S4[_i8 * n2 + maxI] - max22) + opts.damping * old[maxI]; + } + for (var _i9 = 0; _i9 < n2; _i9++) { + var sum2 = 0; + for (var _j3 = 0; _j3 < n2; _j3++) { + old[_j3] = A2[_j3 * n2 + _i9]; + Rp[_j3] = Math.max(0, R3[_j3 * n2 + _i9]); + sum2 += Rp[_j3]; + } + sum2 -= Rp[_i9]; + Rp[_i9] = R3[_i9 * n2 + _i9]; + sum2 += Rp[_i9]; + for (var _j4 = 0; _j4 < n2; _j4++) { + A2[_j4 * n2 + _i9] = (1 - opts.damping) * Math.min(0, sum2 - Rp[_j4]) + opts.damping * old[_j4]; + } + A2[_i9 * n2 + _i9] = (1 - opts.damping) * (sum2 - Rp[_i9]) + opts.damping * old[_i9]; + } + var K5 = 0; + for (var _i10 = 0; _i10 < n2; _i10++) { + var E3 = A2[_i10 * n2 + _i10] + R3[_i10 * n2 + _i10] > 0 ? 1 : 0; + e3[iter % opts.minIterations * n2 + _i10] = E3; + K5 += E3; + } + if (K5 > 0 && (iter >= opts.minIterations - 1 || iter == opts.maxIterations - 1)) { + var _sum = 0; + for (var _i11 = 0; _i11 < n2; _i11++) { + se2[_i11] = 0; + for (var _j5 = 0; _j5 < opts.minIterations; _j5++) { + se2[_i11] += e3[_j5 * n2 + _i11]; + } + if (se2[_i11] === 0 || se2[_i11] === opts.minIterations) { + _sum++; + } + } + if (_sum === n2) { + break; + } + } } - } else { - return false; - } - } else { - return false; - } - } - function getExplicitRuleType(rule) { - if (rule.inferredType) { - return rule.inferredType.name; - } else if (rule.dataType) { - return rule.dataType; - } else if (rule.returnType) { - const refType = rule.returnType.ref; - if (refType) { - if (isParserRule(refType)) { - return refType.name; - } else if (isInterface(refType) || isType(refType)) { - return refType.name; + var exemplarsIndices = findExemplars(n2, R3, A2); + var clusterIndices = assign4(n2, S4, exemplarsIndices); + var clusters = {}; + for (var c3 = 0; c3 < exemplarsIndices.length; c3++) { + clusters[exemplarsIndices[c3]] = []; } - } - } - return void 0; - } - function getTypeName(type3) { - var _a; - if (isParserRule(type3)) { - return isDataTypeRule(type3) ? type3.name : (_a = getExplicitRuleType(type3)) !== null && _a !== void 0 ? _a : type3.name; - } else if (isInterface(type3) || isType(type3) || isReturnType(type3)) { - return type3.name; - } else if (isAction(type3)) { - const actionType = getActionType(type3); - if (actionType) { - return actionType; - } - } else if (isInferredType(type3)) { - return type3.name; - } - throw new Error("Cannot get name of Unknown Type"); - } - function getActionType(action) { - var _a; - if (action.inferredType) { - return action.inferredType.name; - } else if ((_a = action.type) === null || _a === void 0 ? void 0 : _a.ref) { - return getTypeName(action.type.ref); - } - return void 0; - } - function getRuleTypeName(rule) { - var _a, _b, _c; - if (isTerminalRule(rule)) { - return (_b = (_a = rule.type) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : "string"; - } else { - return isDataTypeRule(rule) ? rule.name : (_c = getExplicitRuleType(rule)) !== null && _c !== void 0 ? _c : rule.name; - } - } - function getRuleType(rule) { - var _a, _b, _c; - if (isTerminalRule(rule)) { - return (_b = (_a = rule.type) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : "string"; - } else { - return (_c = getExplicitRuleType(rule)) !== null && _c !== void 0 ? _c : rule.name; - } - } - function terminalRegex(terminalRule) { - const flags = { - s: false, - i: false, - u: false - }; - const source = abstractElementToRegex(terminalRule.definition, flags); - const flagText = Object.entries(flags).filter(([, value2]) => value2).map(([name]) => name).join(""); - return new RegExp(source, flagText); - } - function abstractElementToRegex(element3, flags) { - if (isTerminalAlternatives(element3)) { - return terminalAlternativesToRegex(element3); - } else if (isTerminalGroup(element3)) { - return terminalGroupToRegex(element3); - } else if (isCharacterRange(element3)) { - return characterRangeToRegex(element3); - } else if (isTerminalRuleCall(element3)) { - const rule = element3.rule.ref; - if (!rule) { - throw new Error("Missing rule reference."); - } - return withCardinality(abstractElementToRegex(rule.definition), { - cardinality: element3.cardinality, - lookahead: element3.lookahead - }); - } else if (isNegatedToken(element3)) { - return negateTokenToRegex(element3); - } else if (isUntilToken(element3)) { - return untilTokenToRegex(element3); - } else if (isRegexToken(element3)) { - const lastSlash = element3.regex.lastIndexOf("/"); - const source = element3.regex.substring(1, lastSlash); - const regexFlags = element3.regex.substring(lastSlash + 1); - if (flags) { - flags.i = regexFlags.includes("i"); - flags.s = regexFlags.includes("s"); - flags.u = regexFlags.includes("u"); - } - return withCardinality(source, { - cardinality: element3.cardinality, - lookahead: element3.lookahead, - wrap: false - }); - } else if (isWildcard(element3)) { - return withCardinality(WILDCARD, { - cardinality: element3.cardinality, - lookahead: element3.lookahead - }); - } else { - throw new Error(`Invalid terminal element: ${element3 === null || element3 === void 0 ? void 0 : element3.$type}`); - } - } - function terminalAlternativesToRegex(alternatives) { - return withCardinality(alternatives.elements.map((e3) => abstractElementToRegex(e3)).join("|"), { - cardinality: alternatives.cardinality, - lookahead: alternatives.lookahead - }); - } - function terminalGroupToRegex(group2) { - return withCardinality(group2.elements.map((e3) => abstractElementToRegex(e3)).join(""), { - cardinality: group2.cardinality, - lookahead: group2.lookahead - }); - } - function untilTokenToRegex(until) { - return withCardinality(`${WILDCARD}*?${abstractElementToRegex(until.terminal)}`, { - cardinality: until.cardinality, - lookahead: until.lookahead - }); - } - function negateTokenToRegex(negate2) { - return withCardinality(`(?!${abstractElementToRegex(negate2.terminal)})${WILDCARD}*?`, { - cardinality: negate2.cardinality, - lookahead: negate2.lookahead - }); - } - function characterRangeToRegex(range3) { - if (range3.right) { - return withCardinality(`[${keywordToRegex(range3.left)}-${keywordToRegex(range3.right)}]`, { - cardinality: range3.cardinality, - lookahead: range3.lookahead, - wrap: false + for (var _i12 = 0; _i12 < nodes5.length; _i12++) { + var pos = id2position[nodes5[_i12].id()]; + var clusterIndex = clusterIndices[pos]; + if (clusterIndex != null) { + clusters[clusterIndex].push(nodes5[_i12]); + } + } + var retClusters = new Array(exemplarsIndices.length); + for (var _c = 0; _c < exemplarsIndices.length; _c++) { + retClusters[_c] = cy.collection(clusters[exemplarsIndices[_c]]); + } + return retClusters; + }, "affinityPropagation"); + affinityPropagation$1 = { + affinityPropagation, + ap: affinityPropagation + }; + hierholzerDefaults = defaults$g({ + root: void 0, + directed: false }); - } - return withCardinality(keywordToRegex(range3.left), { - cardinality: range3.cardinality, - lookahead: range3.lookahead, - wrap: false - }); - } - function keywordToRegex(keyword) { - return escapeRegExp(keyword.value); - } - function withCardinality(regex2, options3) { - var _a; - if (options3.wrap !== false || options3.lookahead) { - regex2 = `(${(_a = options3.lookahead) !== null && _a !== void 0 ? _a : ""}${regex2})`; - } - if (options3.cardinality) { - return `${regex2}${options3.cardinality}`; - } - return regex2; - } - var WILDCARD; - var init_grammar_utils = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/grammar-utils.js"() { - "use strict"; - init_errors2(); - init_ast(); - init_syntax_tree(); - init_ast_utils(); - init_cst_utils(); - init_regexp_utils(); - __name(getEntryRule, "getEntryRule"); - __name(getHiddenRules, "getHiddenRules"); - __name(getAllReachableRules, "getAllReachableRules"); - __name(ruleDfs, "ruleDfs"); - __name(getCrossReferenceTerminal, "getCrossReferenceTerminal"); - __name(isCommentTerminal, "isCommentTerminal"); - __name(findNodesForProperty, "findNodesForProperty"); - __name(findNodeForProperty, "findNodeForProperty"); - __name(findNodesForPropertyInternal, "findNodesForPropertyInternal"); - __name(findNodesForKeyword, "findNodesForKeyword"); - __name(findNodeForKeyword, "findNodeForKeyword"); - __name(findNodesForKeywordInternal, "findNodesForKeywordInternal"); - __name(findAssignment, "findAssignment"); - __name(findNameAssignment, "findNameAssignment"); - __name(findNameAssignmentInternal, "findNameAssignmentInternal"); - __name(getActionAtElement, "getActionAtElement"); - __name(isOptionalCardinality, "isOptionalCardinality"); - __name(isArrayCardinality, "isArrayCardinality"); - __name(isArrayOperator, "isArrayOperator"); - __name(isDataTypeRule, "isDataTypeRule"); - __name(isDataTypeRuleInternal, "isDataTypeRuleInternal"); - __name(isDataType, "isDataType"); - __name(isDataTypeInternal, "isDataTypeInternal"); - __name(getExplicitRuleType, "getExplicitRuleType"); - __name(getTypeName, "getTypeName"); - __name(getActionType, "getActionType"); - __name(getRuleTypeName, "getRuleTypeName"); - __name(getRuleType, "getRuleType"); - __name(terminalRegex, "terminalRegex"); - WILDCARD = /[\s\S]/.source; - __name(abstractElementToRegex, "abstractElementToRegex"); - __name(terminalAlternativesToRegex, "terminalAlternativesToRegex"); - __name(terminalGroupToRegex, "terminalGroupToRegex"); - __name(untilTokenToRegex, "untilTokenToRegex"); - __name(negateTokenToRegex, "negateTokenToRegex"); - __name(characterRangeToRegex, "characterRangeToRegex"); - __name(keywordToRegex, "keywordToRegex"); - __name(withCardinality, "withCardinality"); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/grammar-config.js - function createGrammarConfig(services) { - const rules = []; - const grammar = services.Grammar; - for (const rule of grammar.rules) { - if (isTerminalRule(rule) && isCommentTerminal(rule) && isMultilineComment(terminalRegex(rule))) { - rules.push(rule.name); - } - } - return { - multilineCommentRules: rules, - nameRegexp: DefaultNameRegexp - }; - } - var init_grammar_config = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/grammar-config.js"() { - "use strict"; - init_cst_utils(); - init_grammar_utils(); - init_regexp_utils(); - init_ast(); - __name(createGrammarConfig, "createGrammarConfig"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/version.js - var init_version = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/version.js"() { - "use strict"; - } - }); - - // ../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/print.js - function PRINT_ERROR(msg) { - if (console && console.error) { - console.error(`Error: ${msg}`); - } - } - function PRINT_WARNING(msg) { - if (console && console.warn) { - console.warn(`Warning: ${msg}`); - } - } - var init_print = __esm({ - "../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/print.js"() { - "use strict"; - __name(PRINT_ERROR, "PRINT_ERROR"); - __name(PRINT_WARNING, "PRINT_WARNING"); - } - }); - - // ../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/timer.js - function timer2(func) { - const start3 = (/* @__PURE__ */ new Date()).getTime(); - const val = func(); - const end2 = (/* @__PURE__ */ new Date()).getTime(); - const total = end2 - start3; - return { time: total, value: val }; - } - var init_timer2 = __esm({ - "../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/timer.js"() { - "use strict"; - __name(timer2, "timer"); - } - }); - - // ../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/to-fast-properties.js - function toFastProperties(toBecomeFast) { - function FakeConstructor() { - } - __name(FakeConstructor, "FakeConstructor"); - FakeConstructor.prototype = toBecomeFast; - const fakeInstance = new FakeConstructor(); - function fakeAccess() { - return typeof fakeInstance.bar; - } - __name(fakeAccess, "fakeAccess"); - fakeAccess(); - fakeAccess(); - if (1) - return toBecomeFast; - (0, eval)(toBecomeFast); - } - var init_to_fast_properties = __esm({ - "../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/to-fast-properties.js"() { - "use strict"; - __name(toFastProperties, "toFastProperties"); - } - }); - - // ../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/api.js - var init_api2 = __esm({ - "../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/api.js"() { - "use strict"; - init_print(); - init_timer2(); - init_to_fast_properties(); - } - }); - - // ../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/model.js - function tokenLabel(tokType) { - if (hasTokenLabel(tokType)) { - return tokType.LABEL; - } else { - return tokType.name; - } - } - function hasTokenLabel(obj) { - return isString_default(obj.LABEL) && obj.LABEL !== ""; - } - function serializeGrammar(topRules) { - return map_default(topRules, serializeProduction); - } - function serializeProduction(node2) { - function convertDefinition(definition) { - return map_default(definition, serializeProduction); - } - __name(convertDefinition, "convertDefinition"); - if (node2 instanceof NonTerminal) { - const serializedNonTerminal = { - type: "NonTerminal", - name: node2.nonTerminalName, - idx: node2.idx - }; - if (isString_default(node2.label)) { - serializedNonTerminal.label = node2.label; - } - return serializedNonTerminal; - } else if (node2 instanceof Alternative) { - return { - type: "Alternative", - definition: convertDefinition(node2.definition) - }; - } else if (node2 instanceof Option2) { - return { - type: "Option", - idx: node2.idx, - definition: convertDefinition(node2.definition) - }; - } else if (node2 instanceof RepetitionMandatory) { - return { - type: "RepetitionMandatory", - idx: node2.idx, - definition: convertDefinition(node2.definition) - }; - } else if (node2 instanceof RepetitionMandatoryWithSeparator) { - return { - type: "RepetitionMandatoryWithSeparator", - idx: node2.idx, - separator: serializeProduction(new Terminal({ terminalType: node2.separator })), - definition: convertDefinition(node2.definition) - }; - } else if (node2 instanceof RepetitionWithSeparator) { - return { - type: "RepetitionWithSeparator", - idx: node2.idx, - separator: serializeProduction(new Terminal({ terminalType: node2.separator })), - definition: convertDefinition(node2.definition) - }; - } else if (node2 instanceof Repetition) { - return { - type: "Repetition", - idx: node2.idx, - definition: convertDefinition(node2.definition) - }; - } else if (node2 instanceof Alternation) { - return { - type: "Alternation", - idx: node2.idx, - definition: convertDefinition(node2.definition) - }; - } else if (node2 instanceof Terminal) { - const serializedTerminal = { - type: "Terminal", - name: node2.terminalType.name, - label: tokenLabel(node2.terminalType), - idx: node2.idx - }; - if (isString_default(node2.label)) { - serializedTerminal.terminalLabel = node2.label; - } - const pattern = node2.terminalType.PATTERN; - if (node2.terminalType.PATTERN) { - serializedTerminal.pattern = isRegExp_default(pattern) ? pattern.source : pattern; - } - return serializedTerminal; - } else if (node2 instanceof Rule) { - return { - type: "Rule", - name: node2.name, - orgText: node2.orgText, - definition: convertDefinition(node2.definition) + elesfn$k = { + hierholzer: /* @__PURE__ */ __name(function hierholzer(options2) { + if (!plainObject(options2)) { + var args = arguments; + options2 = { + root: args[0], + directed: args[1] + }; + } + var _hierholzerDefaults = hierholzerDefaults(options2), root3 = _hierholzerDefaults.root, directed = _hierholzerDefaults.directed; + var eles = this; + var dflag = false; + var oddIn; + var oddOut; + var startVertex; + if (root3) startVertex = string(root3) ? this.filter(root3)[0].id() : root3[0].id(); + var nodes5 = {}; + var edges3 = {}; + if (directed) { + eles.forEach(function(ele) { + var id30 = ele.id(); + if (ele.isNode()) { + var ind = ele.indegree(true); + var outd = ele.outdegree(true); + var d1 = ind - outd; + var d22 = outd - ind; + if (d1 == 1) { + if (oddIn) dflag = true; + else oddIn = id30; + } else if (d22 == 1) { + if (oddOut) dflag = true; + else oddOut = id30; + } else if (d22 > 1 || d1 > 1) { + dflag = true; + } + nodes5[id30] = []; + ele.outgoers().forEach(function(e3) { + if (e3.isEdge()) nodes5[id30].push(e3.id()); + }); + } else { + edges3[id30] = [void 0, ele.target().id()]; + } + }); + } else { + eles.forEach(function(ele) { + var id30 = ele.id(); + if (ele.isNode()) { + var d4 = ele.degree(true); + if (d4 % 2) { + if (!oddIn) oddIn = id30; + else if (!oddOut) oddOut = id30; + else dflag = true; + } + nodes5[id30] = []; + ele.connectedEdges().forEach(function(e3) { + return nodes5[id30].push(e3.id()); + }); + } else { + edges3[id30] = [ele.source().id(), ele.target().id()]; + } + }); + } + var result = { + found: false, + trail: void 0 + }; + if (dflag) return result; + else if (oddOut && oddIn) { + if (directed) { + if (startVertex && oddOut != startVertex) { + return result; + } + startVertex = oddOut; + } else { + if (startVertex && oddOut != startVertex && oddIn != startVertex) { + return result; + } else if (!startVertex) { + startVertex = oddOut; + } + } + } else { + if (!startVertex) startVertex = eles[0].id(); + } + var walk = /* @__PURE__ */ __name(function walk2(v3) { + var currentNode = v3; + var subtour2 = [v3]; + var adj, adjTail, adjHead; + while (nodes5[currentNode].length) { + adj = nodes5[currentNode].shift(); + adjTail = edges3[adj][0]; + adjHead = edges3[adj][1]; + if (currentNode != adjHead) { + nodes5[adjHead] = nodes5[adjHead].filter(function(e3) { + return e3 != adj; + }); + currentNode = adjHead; + } else if (!directed && currentNode != adjTail) { + nodes5[adjTail] = nodes5[adjTail].filter(function(e3) { + return e3 != adj; + }); + currentNode = adjTail; + } + subtour2.unshift(adj); + subtour2.unshift(currentNode); + } + return subtour2; + }, "walk"); + var trail = []; + var subtour = []; + subtour = walk(startVertex); + while (subtour.length != 1) { + if (nodes5[subtour[0]].length == 0) { + trail.unshift(eles.getElementById(subtour.shift())); + trail.unshift(eles.getElementById(subtour.shift())); + } else { + subtour = walk(subtour.shift()).concat(subtour); + } + } + trail.unshift(eles.getElementById(subtour.shift())); + for (var d3 in nodes5) { + if (nodes5[d3].length) { + return result; + } + } + result.found = true; + result.trail = this.spawn(trail, true); + return result; + }, "hierholzer") }; - } else { - throw Error("non exhaustive match"); - } - } - var AbstractProduction, NonTerminal, Rule, Alternative, Option2, RepetitionMandatory, RepetitionMandatoryWithSeparator, Repetition, RepetitionWithSeparator, Alternation, Terminal; - var init_model = __esm({ - "../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/model.js"() { - "use strict"; - init_lodash(); - __name(tokenLabel, "tokenLabel"); - __name(hasTokenLabel, "hasTokenLabel"); - AbstractProduction = class { - static { - __name(this, "AbstractProduction"); - } - get definition() { - return this._definition; - } - set definition(value2) { - this._definition = value2; - } - constructor(_definition) { - this._definition = _definition; - } - accept(visitor2) { - visitor2.visit(this); - forEach_default(this.definition, (prod) => { - prod.accept(visitor2); + hopcroftTarjanBiconnected = /* @__PURE__ */ __name(function hopcroftTarjanBiconnected2() { + var eles = this; + var nodes5 = {}; + var id30 = 0; + var edgeCount3 = 0; + var components3 = []; + var stack = []; + var visitedEdges = {}; + var buildComponent = /* @__PURE__ */ __name(function buildComponent2(x5, y6) { + var i2 = stack.length - 1; + var cutset = []; + var component2 = eles.spawn(); + while (stack[i2].x != x5 || stack[i2].y != y6) { + cutset.push(stack.pop().edge); + i2--; + } + cutset.push(stack.pop().edge); + cutset.forEach(function(edge) { + var connectedNodes = edge.connectedNodes().intersection(eles); + component2.merge(edge); + connectedNodes.forEach(function(node2) { + var nodeId = node2.id(); + var connectedEdges = node2.connectedEdges().intersection(eles); + component2.merge(node2); + if (!nodes5[nodeId].cutVertex) { + component2.merge(connectedEdges); + } else { + component2.merge(connectedEdges.filter(function(edge2) { + return edge2.isLoop(); + })); + } + }); }); - } - }; - NonTerminal = class extends AbstractProduction { - static { - __name(this, "NonTerminal"); - } - constructor(options3) { - super([]); - this.idx = 1; - assign_default(this, pickBy_default(options3, (v3) => v3 !== void 0)); - } - set definition(definition) { - } - get definition() { - if (this.referencedRule !== void 0) { - return this.referencedRule.definition; + components3.push(component2); + }, "buildComponent"); + var _biconnectedSearch = /* @__PURE__ */ __name(function biconnectedSearch(root3, currentNode, parent4) { + if (root3 === parent4) edgeCount3 += 1; + nodes5[currentNode] = { + id: id30, + low: id30++, + cutVertex: false + }; + var edges3 = eles.getElementById(currentNode).connectedEdges().intersection(eles); + if (edges3.size() === 0) { + components3.push(eles.spawn(eles.getElementById(currentNode))); + } else { + var sourceId, targetId, otherNodeId, edgeId; + edges3.forEach(function(edge) { + sourceId = edge.source().id(); + targetId = edge.target().id(); + otherNodeId = sourceId === currentNode ? targetId : sourceId; + if (otherNodeId !== parent4) { + edgeId = edge.id(); + if (!visitedEdges[edgeId]) { + visitedEdges[edgeId] = true; + stack.push({ + x: currentNode, + y: otherNodeId, + edge + }); + } + if (!(otherNodeId in nodes5)) { + _biconnectedSearch(root3, otherNodeId, currentNode); + nodes5[currentNode].low = Math.min(nodes5[currentNode].low, nodes5[otherNodeId].low); + if (nodes5[currentNode].id <= nodes5[otherNodeId].low) { + nodes5[currentNode].cutVertex = true; + buildComponent(currentNode, otherNodeId); + } + } else { + nodes5[currentNode].low = Math.min(nodes5[currentNode].low, nodes5[otherNodeId].id); + } + } + }); } - return []; - } - accept(visitor2) { - visitor2.visit(this); - } - }; - Rule = class extends AbstractProduction { - static { - __name(this, "Rule"); - } - constructor(options3) { - super(options3.definition); - this.orgText = ""; - assign_default(this, pickBy_default(options3, (v3) => v3 !== void 0)); - } - }; - Alternative = class extends AbstractProduction { - static { - __name(this, "Alternative"); - } - constructor(options3) { - super(options3.definition); - this.ignoreAmbiguities = false; - assign_default(this, pickBy_default(options3, (v3) => v3 !== void 0)); - } + }, "biconnectedSearch"); + eles.forEach(function(ele) { + if (ele.isNode()) { + var nodeId = ele.id(); + if (!(nodeId in nodes5)) { + edgeCount3 = 0; + _biconnectedSearch(nodeId, nodeId); + nodes5[nodeId].cutVertex = edgeCount3 > 1; + } + } + }); + var cutVertices = Object.keys(nodes5).filter(function(id31) { + return nodes5[id31].cutVertex; + }).map(function(id31) { + return eles.getElementById(id31); + }); + return { + cut: eles.spawn(cutVertices), + components: components3 + }; + }, "hopcroftTarjanBiconnected"); + hopcroftTarjanBiconnected$1 = { + hopcroftTarjanBiconnected, + htbc: hopcroftTarjanBiconnected, + htb: hopcroftTarjanBiconnected, + hopcroftTarjanBiconnectedComponents: hopcroftTarjanBiconnected }; - Option2 = class extends AbstractProduction { - static { - __name(this, "Option"); - } - constructor(options3) { - super(options3.definition); - this.idx = 1; - assign_default(this, pickBy_default(options3, (v3) => v3 !== void 0)); - } + tarjanStronglyConnected = /* @__PURE__ */ __name(function tarjanStronglyConnected2() { + var eles = this; + var nodes5 = {}; + var index = 0; + var components3 = []; + var stack = []; + var cut = eles.spawn(eles); + var _stronglyConnectedSearch = /* @__PURE__ */ __name(function stronglyConnectedSearch(sourceNodeId) { + stack.push(sourceNodeId); + nodes5[sourceNodeId] = { + index, + low: index++, + explored: false + }; + var connectedEdges = eles.getElementById(sourceNodeId).connectedEdges().intersection(eles); + connectedEdges.forEach(function(edge) { + var targetNodeId = edge.target().id(); + if (targetNodeId !== sourceNodeId) { + if (!(targetNodeId in nodes5)) { + _stronglyConnectedSearch(targetNodeId); + } + if (!nodes5[targetNodeId].explored) { + nodes5[sourceNodeId].low = Math.min(nodes5[sourceNodeId].low, nodes5[targetNodeId].low); + } + } + }); + if (nodes5[sourceNodeId].index === nodes5[sourceNodeId].low) { + var componentNodes = eles.spawn(); + for (; ; ) { + var nodeId = stack.pop(); + componentNodes.merge(eles.getElementById(nodeId)); + nodes5[nodeId].low = nodes5[sourceNodeId].index; + nodes5[nodeId].explored = true; + if (nodeId === sourceNodeId) { + break; + } + } + var componentEdges = componentNodes.edgesWith(componentNodes); + var component2 = componentNodes.merge(componentEdges); + components3.push(component2); + cut = cut.difference(component2); + } + }, "stronglyConnectedSearch"); + eles.forEach(function(ele) { + if (ele.isNode()) { + var nodeId = ele.id(); + if (!(nodeId in nodes5)) { + _stronglyConnectedSearch(nodeId); + } + } + }); + return { + cut, + components: components3 + }; + }, "tarjanStronglyConnected"); + tarjanStronglyConnected$1 = { + tarjanStronglyConnected, + tsc: tarjanStronglyConnected, + tscc: tarjanStronglyConnected, + tarjanStronglyConnectedComponents: tarjanStronglyConnected }; - RepetitionMandatory = class extends AbstractProduction { - static { - __name(this, "RepetitionMandatory"); - } - constructor(options3) { - super(options3.definition); - this.idx = 1; - assign_default(this, pickBy_default(options3, (v3) => v3 !== void 0)); - } + elesfn$j = {}; + [elesfn$v, elesfn$u, elesfn$t, elesfn$s, elesfn$r, elesfn$q, elesfn$p, elesfn$o, elesfn$n, elesfn$m, elesfn$l, markovClustering$1, kClustering, hierarchicalClustering$1, affinityPropagation$1, elesfn$k, hopcroftTarjanBiconnected$1, tarjanStronglyConnected$1].forEach(function(props) { + extend4(elesfn$j, props); + }); + STATE_PENDING = 0; + STATE_FULFILLED = 1; + STATE_REJECTED = 2; + _api = /* @__PURE__ */ __name(function api(executor) { + if (!(this instanceof _api)) return new _api(executor); + this.id = "Thenable/1.0.7"; + this.state = STATE_PENDING; + this.fulfillValue = void 0; + this.rejectReason = void 0; + this.onFulfilled = []; + this.onRejected = []; + this.proxy = { + then: this.then.bind(this) + }; + if (typeof executor === "function") executor.call(this, this.fulfill.bind(this), this.reject.bind(this)); + }, "api"); + _api.prototype = { + /* promise resolving methods */ + fulfill: /* @__PURE__ */ __name(function fulfill(value2) { + return deliver(this, STATE_FULFILLED, "fulfillValue", value2); + }, "fulfill"), + reject: /* @__PURE__ */ __name(function reject2(value2) { + return deliver(this, STATE_REJECTED, "rejectReason", value2); + }, "reject"), + /* "The then Method" [Promises/A+ 1.1, 1.2, 2.2] */ + then: /* @__PURE__ */ __name(function then(onFulfilled, onRejected) { + var curr = this; + var next3 = new _api(); + curr.onFulfilled.push(resolver(onFulfilled, next3, "fulfill")); + curr.onRejected.push(resolver(onRejected, next3, "reject")); + execute(curr); + return next3.proxy; + }, "then") }; - RepetitionMandatoryWithSeparator = class extends AbstractProduction { - static { - __name(this, "RepetitionMandatoryWithSeparator"); + deliver = /* @__PURE__ */ __name(function deliver2(curr, state3, name, value2) { + if (curr.state === STATE_PENDING) { + curr.state = state3; + curr[name] = value2; + execute(curr); } - constructor(options3) { - super(options3.definition); - this.idx = 1; - assign_default(this, pickBy_default(options3, (v3) => v3 !== void 0)); + return curr; + }, "deliver"); + execute = /* @__PURE__ */ __name(function execute2(curr) { + if (curr.state === STATE_FULFILLED) execute_handlers(curr, "onFulfilled", curr.fulfillValue); + else if (curr.state === STATE_REJECTED) execute_handlers(curr, "onRejected", curr.rejectReason); + }, "execute"); + execute_handlers = /* @__PURE__ */ __name(function execute_handlers2(curr, name, value2) { + if (curr[name].length === 0) return; + var handlers = curr[name]; + curr[name] = []; + var func = /* @__PURE__ */ __name(function func2() { + for (var i2 = 0; i2 < handlers.length; i2++) handlers[i2](value2); + }, "func"); + if (typeof setImmediate === "function") setImmediate(func); + else setTimeout(func, 0); + }, "execute_handlers"); + resolver = /* @__PURE__ */ __name(function resolver2(cb, next3, method) { + return function(value2) { + if (typeof cb !== "function") + next3[method].call(next3, value2); + else { + var result; + try { + result = cb(value2); + } catch (e3) { + next3.reject(e3); + return; + } + _resolve(next3, result); + } + }; + }, "resolver"); + _resolve = /* @__PURE__ */ __name(function resolve(promise4, x5) { + if (promise4 === x5 || promise4.proxy === x5) { + promise4.reject(new TypeError("cannot resolve promise with itself")); + return; } - }; - Repetition = class extends AbstractProduction { - static { - __name(this, "Repetition"); + var then2; + if (_typeof(x5) === "object" && x5 !== null || typeof x5 === "function") { + try { + then2 = x5.then; + } catch (e3) { + promise4.reject(e3); + return; + } } - constructor(options3) { - super(options3.definition); - this.idx = 1; - assign_default(this, pickBy_default(options3, (v3) => v3 !== void 0)); + if (typeof then2 === "function") { + var resolved = false; + try { + then2.call( + x5, + /* resolvePromise */ + /* [Promises/A+ 2.3.3.3.1] */ + function(y6) { + if (resolved) return; + resolved = true; + if (y6 === x5) + promise4.reject(new TypeError("circular thenable chain")); + else _resolve(promise4, y6); + }, + /* rejectPromise */ + /* [Promises/A+ 2.3.3.3.2] */ + function(r2) { + if (resolved) return; + resolved = true; + promise4.reject(r2); + } + ); + } catch (e3) { + if (!resolved) + promise4.reject(e3); + } + return; } + promise4.fulfill(x5); + }, "resolve"); + _api.all = function(ps) { + return new _api(function(resolveAll, rejectAll) { + var vals = new Array(ps.length); + var doneCount = 0; + var fulfill2 = /* @__PURE__ */ __name(function fulfill3(i3, val) { + vals[i3] = val; + doneCount++; + if (doneCount === ps.length) { + resolveAll(vals); + } + }, "fulfill"); + for (var i2 = 0; i2 < ps.length; i2++) { + (function(i3) { + var p3 = ps[i3]; + var isPromise = p3 != null && p3.then != null; + if (isPromise) { + p3.then(function(val2) { + fulfill2(i3, val2); + }, function(err) { + rejectAll(err); + }); + } else { + var val = p3; + fulfill2(i3, val); + } + })(i2); + } + }); }; - RepetitionWithSeparator = class extends AbstractProduction { - static { - __name(this, "RepetitionWithSeparator"); - } - constructor(options3) { - super(options3.definition); - this.idx = 1; - assign_default(this, pickBy_default(options3, (v3) => v3 !== void 0)); - } + _api.resolve = function(val) { + return new _api(function(resolve2, reject3) { + resolve2(val); + }); }; - Alternation = class extends AbstractProduction { - static { - __name(this, "Alternation"); - } - get definition() { - return this._definition; - } - set definition(value2) { - this._definition = value2; - } - constructor(options3) { - super(options3.definition); - this.idx = 1; - this.ignoreAmbiguities = false; - this.hasPredicates = false; - assign_default(this, pickBy_default(options3, (v3) => v3 !== void 0)); - } + _api.reject = function(val) { + return new _api(function(resolve2, reject3) { + reject3(val); + }); }; - Terminal = class { - static { - __name(this, "Terminal"); - } - constructor(options3) { - this.idx = 1; - assign_default(this, pickBy_default(options3, (v3) => v3 !== void 0)); + Promise$1 = typeof Promise !== "undefined" ? Promise : _api; + Animation = /* @__PURE__ */ __name(function Animation2(target, opts, opts2) { + var isCore = core2(target); + var isEle = !isCore; + var _p = this._private = extend4({ + duration: 1e3 + }, opts, opts2); + _p.target = target; + _p.style = _p.style || _p.css; + _p.started = false; + _p.playing = false; + _p.hooked = false; + _p.applying = false; + _p.progress = 0; + _p.completes = []; + _p.frames = []; + if (_p.complete && fn$6(_p.complete)) { + _p.completes.push(_p.complete); } - accept(visitor2) { - visitor2.visit(this); + if (isEle) { + var pos = target.position(); + _p.startPosition = _p.startPosition || { + x: pos.x, + y: pos.y + }; + _p.startStyle = _p.startStyle || target.cy().style().getAnimationStartStyle(target, _p.style); } - }; - __name(serializeGrammar, "serializeGrammar"); - __name(serializeProduction, "serializeProduction"); - } - }); - - // ../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/visitor.js - var GAstVisitor; - var init_visitor = __esm({ - "../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/visitor.js"() { - "use strict"; - init_model(); - GAstVisitor = class { - static { - __name(this, "GAstVisitor"); + if (isCore) { + var pan2 = target.pan(); + _p.startPan = { + x: pan2.x, + y: pan2.y + }; + _p.startZoom = target.zoom(); } - visit(node2) { - const nodeAny = node2; - switch (nodeAny.constructor) { - case NonTerminal: - return this.visitNonTerminal(nodeAny); - case Alternative: - return this.visitAlternative(nodeAny); - case Option2: - return this.visitOption(nodeAny); - case RepetitionMandatory: - return this.visitRepetitionMandatory(nodeAny); - case RepetitionMandatoryWithSeparator: - return this.visitRepetitionMandatoryWithSeparator(nodeAny); - case RepetitionWithSeparator: - return this.visitRepetitionWithSeparator(nodeAny); - case Repetition: - return this.visitRepetition(nodeAny); - case Alternation: - return this.visitAlternation(nodeAny); - case Terminal: - return this.visitTerminal(nodeAny); - case Rule: - return this.visitRule(nodeAny); - /* c8 ignore next 2 */ + this.length = 1; + this[0] = this; + }, "Animation"); + anifn = Animation.prototype; + extend4(anifn, { + instanceString: /* @__PURE__ */ __name(function instanceString() { + return "animation"; + }, "instanceString"), + hook: /* @__PURE__ */ __name(function hook() { + var _p = this._private; + if (!_p.hooked) { + var q3; + var tAni = _p.target._private.animation; + if (_p.queue) { + q3 = tAni.queue; + } else { + q3 = tAni.current; + } + q3.push(this); + if (elementOrCollection(_p.target)) { + _p.target.cy().addToAnimationPool(_p.target); + } + _p.hooked = true; + } + return this; + }, "hook"), + play: /* @__PURE__ */ __name(function play() { + var _p = this._private; + if (_p.progress === 1) { + _p.progress = 0; + } + _p.playing = true; + _p.started = false; + _p.stopped = false; + this.hook(); + return this; + }, "play"), + playing: /* @__PURE__ */ __name(function playing() { + return this._private.playing; + }, "playing"), + apply: /* @__PURE__ */ __name(function apply3() { + var _p = this._private; + _p.applying = true; + _p.started = false; + _p.stopped = false; + this.hook(); + return this; + }, "apply"), + applying: /* @__PURE__ */ __name(function applying() { + return this._private.applying; + }, "applying"), + pause: /* @__PURE__ */ __name(function pause() { + var _p = this._private; + _p.playing = false; + _p.started = false; + return this; + }, "pause"), + stop: /* @__PURE__ */ __name(function stop() { + var _p = this._private; + _p.playing = false; + _p.started = false; + _p.stopped = true; + return this; + }, "stop"), + rewind: /* @__PURE__ */ __name(function rewind() { + return this.progress(0); + }, "rewind"), + fastforward: /* @__PURE__ */ __name(function fastforward() { + return this.progress(1); + }, "fastforward"), + time: /* @__PURE__ */ __name(function time3(t4) { + var _p = this._private; + if (t4 === void 0) { + return _p.progress * _p.duration; + } else { + return this.progress(t4 / _p.duration); + } + }, "time"), + progress: /* @__PURE__ */ __name(function progress(p3) { + var _p = this._private; + var wasPlaying = _p.playing; + if (p3 === void 0) { + return _p.progress; + } else { + if (wasPlaying) { + this.pause(); + } + _p.progress = p3; + _p.started = false; + if (wasPlaying) { + this.play(); + } + } + return this; + }, "progress"), + completed: /* @__PURE__ */ __name(function completed() { + return this._private.progress === 1; + }, "completed"), + reverse: /* @__PURE__ */ __name(function reverse() { + var _p = this._private; + var wasPlaying = _p.playing; + if (wasPlaying) { + this.pause(); + } + _p.progress = 1 - _p.progress; + _p.started = false; + var swap = /* @__PURE__ */ __name(function swap2(a2, b3) { + var _pa = _p[a2]; + if (_pa == null) { + return; + } + _p[a2] = _p[b3]; + _p[b3] = _pa; + }, "swap"); + swap("zoom", "startZoom"); + swap("pan", "startPan"); + swap("position", "startPosition"); + if (_p.style) { + for (var i2 = 0; i2 < _p.style.length; i2++) { + var prop = _p.style[i2]; + var name = prop.name; + var startStyleProp = _p.startStyle[name]; + _p.startStyle[name] = prop; + _p.style[i2] = startStyleProp; + } + } + if (wasPlaying) { + this.play(); + } + return this; + }, "reverse"), + promise: /* @__PURE__ */ __name(function promise3(type3) { + var _p = this._private; + var arr; + switch (type3) { + case "frame": + arr = _p.frames; + break; default: - throw Error("non exhaustive match"); + case "complete": + case "completed": + arr = _p.completes; } - } - /* c8 ignore next */ - visitNonTerminal(node2) { - } - /* c8 ignore next */ - visitAlternative(node2) { - } - /* c8 ignore next */ - visitOption(node2) { - } - /* c8 ignore next */ - visitRepetition(node2) { - } - /* c8 ignore next */ - visitRepetitionMandatory(node2) { - } - /* c8 ignore next 3 */ - visitRepetitionMandatoryWithSeparator(node2) { - } - /* c8 ignore next */ - visitRepetitionWithSeparator(node2) { - } - /* c8 ignore next */ - visitAlternation(node2) { - } - /* c8 ignore next */ - visitTerminal(node2) { - } - /* c8 ignore next */ - visitRule(node2) { - } - }; - } - }); - - // ../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/helpers.js - function isSequenceProd(prod) { - return prod instanceof Alternative || prod instanceof Option2 || prod instanceof Repetition || prod instanceof RepetitionMandatory || prod instanceof RepetitionMandatoryWithSeparator || prod instanceof RepetitionWithSeparator || prod instanceof Terminal || prod instanceof Rule; - } - function isOptionalProd(prod, alreadyVisited = []) { - const isDirectlyOptional = prod instanceof Option2 || prod instanceof Repetition || prod instanceof RepetitionWithSeparator; - if (isDirectlyOptional) { - return true; - } - if (prod instanceof Alternation) { - return some_default(prod.definition, (subProd) => { - return isOptionalProd(subProd, alreadyVisited); - }); - } else if (prod instanceof NonTerminal && includes_default(alreadyVisited, prod)) { - return false; - } else if (prod instanceof AbstractProduction) { - if (prod instanceof NonTerminal) { - alreadyVisited.push(prod); - } - return every_default(prod.definition, (subProd) => { - return isOptionalProd(subProd, alreadyVisited); + return new Promise$1(function(resolve2, reject3) { + arr.push(function() { + resolve2(); + }); + }); + }, "promise") }); - } else { - return false; - } - } - function isBranchingProd(prod) { - return prod instanceof Alternation; - } - function getProductionDslName(prod) { - if (prod instanceof NonTerminal) { - return "SUBRULE"; - } else if (prod instanceof Option2) { - return "OPTION"; - } else if (prod instanceof Alternation) { - return "OR"; - } else if (prod instanceof RepetitionMandatory) { - return "AT_LEAST_ONE"; - } else if (prod instanceof RepetitionMandatoryWithSeparator) { - return "AT_LEAST_ONE_SEP"; - } else if (prod instanceof RepetitionWithSeparator) { - return "MANY_SEP"; - } else if (prod instanceof Repetition) { - return "MANY"; - } else if (prod instanceof Terminal) { - return "CONSUME"; - } else { - throw Error("non exhaustive match"); - } - } - var init_helpers = __esm({ - "../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/helpers.js"() { - "use strict"; - init_lodash(); - init_model(); - __name(isSequenceProd, "isSequenceProd"); - __name(isOptionalProd, "isOptionalProd"); - __name(isBranchingProd, "isBranchingProd"); - __name(getProductionDslName, "getProductionDslName"); - } - }); - - // ../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/api.js - var init_api3 = __esm({ - "../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/api.js"() { - "use strict"; - init_model(); - init_visitor(); - init_helpers(); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/rest.js - function restForRepetitionWithSeparator(repSepProd, currRest, prevRest) { - const repSepRest = [ - new Option2({ - definition: [ - new Terminal({ terminalType: repSepProd.separator }) - ].concat(repSepProd.definition) - }) - ]; - const fullRepSepRest = repSepRest.concat(currRest, prevRest); - return fullRepSepRest; - } - var RestWalker; - var init_rest = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/rest.js"() { - "use strict"; - init_lodash(); - init_api3(); - RestWalker = class { - static { - __name(this, "RestWalker"); - } - walk(prod, prevRest = []) { - forEach_default(prod.definition, (subProd, index) => { - const currRest = drop_default(prod.definition, index + 1); - if (subProd instanceof NonTerminal) { - this.walkProdRef(subProd, currRest, prevRest); - } else if (subProd instanceof Terminal) { - this.walkTerminal(subProd, currRest, prevRest); - } else if (subProd instanceof Alternative) { - this.walkFlat(subProd, currRest, prevRest); - } else if (subProd instanceof Option2) { - this.walkOption(subProd, currRest, prevRest); - } else if (subProd instanceof RepetitionMandatory) { - this.walkAtLeastOne(subProd, currRest, prevRest); - } else if (subProd instanceof RepetitionMandatoryWithSeparator) { - this.walkAtLeastOneSep(subProd, currRest, prevRest); - } else if (subProd instanceof RepetitionWithSeparator) { - this.walkManySep(subProd, currRest, prevRest); - } else if (subProd instanceof Repetition) { - this.walkMany(subProd, currRest, prevRest); - } else if (subProd instanceof Alternation) { - this.walkOr(subProd, currRest, prevRest); - } else { - throw Error("non exhaustive match"); + anifn.complete = anifn.completed; + anifn.run = anifn.play; + anifn.running = anifn.playing; + define$3 = { + animated: /* @__PURE__ */ __name(function animated() { + return /* @__PURE__ */ __name(function animatedImpl() { + var self2 = this; + var selfIsArrayLike = self2.length !== void 0; + var all = selfIsArrayLike ? self2 : [self2]; + var cy = this._private.cy || this; + if (!cy.styleEnabled()) { + return false; } - }); - } - walkTerminal(terminal, currRest, prevRest) { - } - walkProdRef(refProd, currRest, prevRest) { - } - walkFlat(flatProd, currRest, prevRest) { - const fullOrRest = currRest.concat(prevRest); - this.walk(flatProd, fullOrRest); - } - walkOption(optionProd, currRest, prevRest) { - const fullOrRest = currRest.concat(prevRest); - this.walk(optionProd, fullOrRest); - } - walkAtLeastOne(atLeastOneProd, currRest, prevRest) { - const fullAtLeastOneRest = [ - new Option2({ definition: atLeastOneProd.definition }) - ].concat(currRest, prevRest); - this.walk(atLeastOneProd, fullAtLeastOneRest); - } - walkAtLeastOneSep(atLeastOneSepProd, currRest, prevRest) { - const fullAtLeastOneSepRest = restForRepetitionWithSeparator(atLeastOneSepProd, currRest, prevRest); - this.walk(atLeastOneSepProd, fullAtLeastOneSepRest); - } - walkMany(manyProd, currRest, prevRest) { - const fullManyRest = [ - new Option2({ definition: manyProd.definition }) - ].concat(currRest, prevRest); - this.walk(manyProd, fullManyRest); - } - walkManySep(manySepProd, currRest, prevRest) { - const fullManySepRest = restForRepetitionWithSeparator(manySepProd, currRest, prevRest); - this.walk(manySepProd, fullManySepRest); - } - walkOr(orProd, currRest, prevRest) { - const fullOrRest = currRest.concat(prevRest); - forEach_default(orProd.definition, (alt) => { - const prodWrapper = new Alternative({ definition: [alt] }); - this.walk(prodWrapper, fullOrRest); - }); - } - }; - __name(restForRepetitionWithSeparator, "restForRepetitionWithSeparator"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/first.js - function first(prod) { - if (prod instanceof NonTerminal) { - return first(prod.referencedRule); - } else if (prod instanceof Terminal) { - return firstForTerminal(prod); - } else if (isSequenceProd(prod)) { - return firstForSequence(prod); - } else if (isBranchingProd(prod)) { - return firstForBranching(prod); - } else { - throw Error("non exhaustive match"); - } - } - function firstForSequence(prod) { - let firstSet = []; - const seq2 = prod.definition; - let nextSubProdIdx = 0; - let hasInnerProdsRemaining = seq2.length > nextSubProdIdx; - let currSubProd; - let isLastInnerProdOptional = true; - while (hasInnerProdsRemaining && isLastInnerProdOptional) { - currSubProd = seq2[nextSubProdIdx]; - isLastInnerProdOptional = isOptionalProd(currSubProd); - firstSet = firstSet.concat(first(currSubProd)); - nextSubProdIdx = nextSubProdIdx + 1; - hasInnerProdsRemaining = seq2.length > nextSubProdIdx; - } - return uniq_default(firstSet); - } - function firstForBranching(prod) { - const allAlternativesFirsts = map_default(prod.definition, (innerProd) => { - return first(innerProd); - }); - return uniq_default(flatten_default(allAlternativesFirsts)); - } - function firstForTerminal(terminal) { - return [terminal.terminalType]; - } - var init_first2 = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/first.js"() { - "use strict"; - init_lodash(); - init_api3(); - __name(first, "first"); - __name(firstForSequence, "firstForSequence"); - __name(firstForBranching, "firstForBranching"); - __name(firstForTerminal, "firstForTerminal"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/constants.js - var IN; - var init_constants2 = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/constants.js"() { - "use strict"; - IN = "_~IN~_"; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/follow.js - function computeAllProdsFollows(topProductions) { - const reSyncFollows = {}; - forEach_default(topProductions, (topProd) => { - const currRefsFollow = new ResyncFollowsWalker(topProd).startWalking(); - assign_default(reSyncFollows, currRefsFollow); - }); - return reSyncFollows; - } - function buildBetweenProdsFollowPrefix(inner2, occurenceInParent) { - return inner2.name + occurenceInParent + IN; - } - var ResyncFollowsWalker; - var init_follow = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/follow.js"() { - "use strict"; - init_rest(); - init_first2(); - init_lodash(); - init_constants2(); - init_api3(); - ResyncFollowsWalker = class extends RestWalker { - static { - __name(this, "ResyncFollowsWalker"); - } - constructor(topProd) { - super(); - this.topProd = topProd; - this.follows = {}; - } - startWalking() { - this.walk(this.topProd); - return this.follows; - } - walkTerminal(terminal, currRest, prevRest) { - } - walkProdRef(refProd, currRest, prevRest) { - const followName = buildBetweenProdsFollowPrefix(refProd.referencedRule, refProd.idx) + this.topProd.name; - const fullRest = currRest.concat(prevRest); - const restProd = new Alternative({ definition: fullRest }); - const t_in_topProd_follows = first(restProd); - this.follows[followName] = t_in_topProd_follows; - } - }; - __name(computeAllProdsFollows, "computeAllProdsFollows"); - __name(buildBetweenProdsFollowPrefix, "buildBetweenProdsFollowPrefix"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/reg_exp_parser.js - function getRegExpAst(regExp) { - const regExpStr = regExp.toString(); - if (regExpAstCache.hasOwnProperty(regExpStr)) { - return regExpAstCache[regExpStr]; - } else { - const regExpAst = regExpParser.pattern(regExpStr); - regExpAstCache[regExpStr] = regExpAst; - return regExpAst; - } - } - function clearRegExpParserCache() { - regExpAstCache = {}; - } - var regExpAstCache, regExpParser; - var init_reg_exp_parser = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/reg_exp_parser.js"() { - "use strict"; - init_api(); - regExpAstCache = {}; - regExpParser = new RegExpParser(); - __name(getRegExpAst, "getRegExpAst"); - __name(clearRegExpParserCache, "clearRegExpParserCache"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/reg_exp.js - function getOptimizedStartCodesIndices(regExp, ensureOptimizations = false) { - try { - const ast = getRegExpAst(regExp); - const firstChars = firstCharOptimizedIndices(ast.value, {}, ast.flags.ignoreCase); - return firstChars; - } catch (e3) { - if (e3.message === complementErrorMessage) { - if (ensureOptimizations) { - PRINT_WARNING(`${failedOptimizationPrefixMsg} Unable to optimize: < ${regExp.toString()} > - Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`); - } - } else { - let msgSuffix = ""; - if (ensureOptimizations) { - msgSuffix = "\n This will disable the lexer's first char optimizations.\n See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details."; - } - PRINT_ERROR(`${failedOptimizationPrefixMsg} - Failed parsing: < ${regExp.toString()} > - Using the @chevrotain/regexp-to-ast library - Please open an issue at: https://github.com/chevrotain/chevrotain/issues` + msgSuffix); - } - } - return []; - } - function firstCharOptimizedIndices(ast, result, ignoreCase) { - switch (ast.type) { - case "Disjunction": - for (let i2 = 0; i2 < ast.value.length; i2++) { - firstCharOptimizedIndices(ast.value[i2], result, ignoreCase); - } - break; - case "Alternative": - const terms = ast.value; - for (let i2 = 0; i2 < terms.length; i2++) { - const term = terms[i2]; - switch (term.type) { - case "EndAnchor": - // A group back reference cannot affect potential starting char. - // because if a back reference is the first production than automatically - // the group being referenced has had to come BEFORE so its codes have already been added - case "GroupBackReference": - // assertions do not affect potential starting codes - case "Lookahead": - case "NegativeLookahead": - case "StartAnchor": - case "WordBoundary": - case "NonWordBoundary": - continue; - } - const atom2 = term; - switch (atom2.type) { - case "Character": - addOptimizedIdxToResult(atom2.value, result, ignoreCase); - break; - case "Set": - if (atom2.complement === true) { - throw Error(complementErrorMessage); + var ele = all[0]; + if (ele) { + return ele._private.animation.current.length > 0; + } + }, "animatedImpl"); + }, "animated"), + // animated + clearQueue: /* @__PURE__ */ __name(function clearQueue() { + return /* @__PURE__ */ __name(function clearQueueImpl() { + var self2 = this; + var selfIsArrayLike = self2.length !== void 0; + var all = selfIsArrayLike ? self2 : [self2]; + var cy = this._private.cy || this; + if (!cy.styleEnabled()) { + return this; + } + for (var i2 = 0; i2 < all.length; i2++) { + var ele = all[i2]; + ele._private.animation.queue = []; + } + return this; + }, "clearQueueImpl"); + }, "clearQueue"), + // clearQueue + delay: /* @__PURE__ */ __name(function delay() { + return /* @__PURE__ */ __name(function delayImpl(time4, complete) { + var cy = this._private.cy || this; + if (!cy.styleEnabled()) { + return this; + } + return this.animate({ + delay: time4, + duration: time4, + complete + }); + }, "delayImpl"); + }, "delay"), + // delay + delayAnimation: /* @__PURE__ */ __name(function delayAnimation() { + return /* @__PURE__ */ __name(function delayAnimationImpl(time4, complete) { + var cy = this._private.cy || this; + if (!cy.styleEnabled()) { + return this; + } + return this.animation({ + delay: time4, + duration: time4, + complete + }); + }, "delayAnimationImpl"); + }, "delayAnimation"), + // delay + animation: /* @__PURE__ */ __name(function animation() { + return /* @__PURE__ */ __name(function animationImpl(properties, params) { + var self2 = this; + var selfIsArrayLike = self2.length !== void 0; + var all = selfIsArrayLike ? self2 : [self2]; + var cy = this._private.cy || this; + var isCore = !selfIsArrayLike; + var isEles = !isCore; + if (!cy.styleEnabled()) { + return this; + } + var style3 = cy.style(); + properties = extend4({}, properties, params); + var propertiesEmpty = Object.keys(properties).length === 0; + if (propertiesEmpty) { + return new Animation(all[0], properties); + } + if (properties.duration === void 0) { + properties.duration = 400; + } + switch (properties.duration) { + case "slow": + properties.duration = 600; + break; + case "fast": + properties.duration = 200; + break; + } + if (isEles) { + properties.style = style3.getPropsList(properties.style || properties.css); + properties.css = void 0; + } + if (isEles && properties.renderedPosition != null) { + var rpos = properties.renderedPosition; + var pan2 = cy.pan(); + var zoom2 = cy.zoom(); + properties.position = renderedToModelPosition(rpos, zoom2, pan2); + } + if (isCore && properties.panBy != null) { + var panBy2 = properties.panBy; + var cyPan = cy.pan(); + properties.pan = { + x: cyPan.x + panBy2.x, + y: cyPan.y + panBy2.y + }; + } + var center4 = properties.center || properties.centre; + if (isCore && center4 != null) { + var centerPan = cy.getCenterPan(center4.eles, properties.zoom); + if (centerPan != null) { + properties.pan = centerPan; } - forEach_default(atom2.value, (code) => { - if (typeof code === "number") { - addOptimizedIdxToResult(code, result, ignoreCase); - } else { - const range3 = code; - if (ignoreCase === true) { - for (let rangeCode = range3.from; rangeCode <= range3.to; rangeCode++) { - addOptimizedIdxToResult(rangeCode, result, ignoreCase); - } + } + if (isCore && properties.fit != null) { + var fit2 = properties.fit; + var fitVp = cy.getFitViewport(fit2.eles || fit2.boundingBox, fit2.padding); + if (fitVp != null) { + properties.pan = fitVp.pan; + properties.zoom = fitVp.zoom; + } + } + if (isCore && plainObject(properties.zoom)) { + var vp = cy.getZoomedViewport(properties.zoom); + if (vp != null) { + if (vp.zoomed) { + properties.zoom = vp.zoom; + } + if (vp.panned) { + properties.pan = vp.pan; + } + } else { + properties.zoom = null; + } + } + return new Animation(all[0], properties); + }, "animationImpl"); + }, "animation"), + // animate + animate: /* @__PURE__ */ __name(function animate() { + return /* @__PURE__ */ __name(function animateImpl(properties, params) { + var self2 = this; + var selfIsArrayLike = self2.length !== void 0; + var all = selfIsArrayLike ? self2 : [self2]; + var cy = this._private.cy || this; + if (!cy.styleEnabled()) { + return this; + } + if (params) { + properties = extend4({}, properties, params); + } + for (var i2 = 0; i2 < all.length; i2++) { + var ele = all[i2]; + var queue = ele.animated() && (properties.queue === void 0 || properties.queue); + var ani = ele.animation(properties, queue ? { + queue: true + } : void 0); + ani.play(); + } + return this; + }, "animateImpl"); + }, "animate"), + // animate + stop: /* @__PURE__ */ __name(function stop2() { + return /* @__PURE__ */ __name(function stopImpl(clearQueue2, jumpToEnd) { + var self2 = this; + var selfIsArrayLike = self2.length !== void 0; + var all = selfIsArrayLike ? self2 : [self2]; + var cy = this._private.cy || this; + if (!cy.styleEnabled()) { + return this; + } + for (var i2 = 0; i2 < all.length; i2++) { + var ele = all[i2]; + var _p = ele._private; + var anis = _p.animation.current; + for (var j3 = 0; j3 < anis.length; j3++) { + var ani = anis[j3]; + var ani_p = ani._private; + if (jumpToEnd) { + ani_p.duration = 0; + } + } + if (clearQueue2) { + _p.animation.queue = []; + } + if (!jumpToEnd) { + _p.animation.current = []; + } + } + cy.notify("draw"); + return this; + }, "stopImpl"); + }, "stop") + // stop + }; + __name(requireIsArray, "requireIsArray"); + __name(require_isKey, "require_isKey"); + __name(requireIsFunction, "requireIsFunction"); + __name(require_coreJsData, "require_coreJsData"); + __name(require_isMasked, "require_isMasked"); + __name(require_toSource, "require_toSource"); + __name(require_baseIsNative, "require_baseIsNative"); + __name(require_getValue, "require_getValue"); + __name(require_getNative, "require_getNative"); + __name(require_nativeCreate, "require_nativeCreate"); + __name(require_hashClear, "require_hashClear"); + __name(require_hashDelete, "require_hashDelete"); + __name(require_hashGet, "require_hashGet"); + __name(require_hashHas, "require_hashHas"); + __name(require_hashSet, "require_hashSet"); + __name(require_Hash, "require_Hash"); + __name(require_listCacheClear, "require_listCacheClear"); + __name(requireEq, "requireEq"); + __name(require_assocIndexOf, "require_assocIndexOf"); + __name(require_listCacheDelete, "require_listCacheDelete"); + __name(require_listCacheGet, "require_listCacheGet"); + __name(require_listCacheHas, "require_listCacheHas"); + __name(require_listCacheSet, "require_listCacheSet"); + __name(require_ListCache, "require_ListCache"); + __name(require_Map, "require_Map"); + __name(require_mapCacheClear, "require_mapCacheClear"); + __name(require_isKeyable, "require_isKeyable"); + __name(require_getMapData, "require_getMapData"); + __name(require_mapCacheDelete, "require_mapCacheDelete"); + __name(require_mapCacheGet, "require_mapCacheGet"); + __name(require_mapCacheHas, "require_mapCacheHas"); + __name(require_mapCacheSet, "require_mapCacheSet"); + __name(require_MapCache, "require_MapCache"); + __name(requireMemoize, "requireMemoize"); + __name(require_memoizeCapped, "require_memoizeCapped"); + __name(require_stringToPath, "require_stringToPath"); + __name(require_arrayMap, "require_arrayMap"); + __name(require_baseToString, "require_baseToString"); + __name(requireToString, "requireToString"); + __name(require_castPath, "require_castPath"); + __name(require_toKey, "require_toKey"); + __name(require_baseGet, "require_baseGet"); + __name(requireGet, "requireGet"); + getExports = requireGet(); + get4 = /* @__PURE__ */ getDefaultExportFromCjs(getExports); + __name(require_defineProperty, "require_defineProperty"); + __name(require_baseAssignValue, "require_baseAssignValue"); + __name(require_assignValue, "require_assignValue"); + __name(require_isIndex, "require_isIndex"); + __name(require_baseSet, "require_baseSet"); + __name(requireSet, "requireSet"); + setExports = requireSet(); + set4 = /* @__PURE__ */ getDefaultExportFromCjs(setExports); + __name(require_copyArray, "require_copyArray"); + __name(requireToPath, "requireToPath"); + toPathExports = requireToPath(); + toPath = /* @__PURE__ */ getDefaultExportFromCjs(toPathExports); + define$2 = { + // access data field + data: /* @__PURE__ */ __name(function data(params) { + var defaults4 = { + field: "data", + bindingEvent: "data", + allowBinding: false, + allowSetting: false, + allowGetting: false, + settingEvent: "data", + settingTriggersEvent: false, + triggerFnName: "trigger", + immutableKeys: {}, + // key => true if immutable + updateStyle: false, + beforeGet: /* @__PURE__ */ __name(function beforeGet2(self2) { + }, "beforeGet"), + beforeSet: /* @__PURE__ */ __name(function beforeSet3(self2, obj) { + }, "beforeSet"), + onSet: /* @__PURE__ */ __name(function onSet3(self2) { + }, "onSet"), + canSet: /* @__PURE__ */ __name(function canSet2(self2) { + return true; + }, "canSet") + }; + params = extend4({}, defaults4, params); + return /* @__PURE__ */ __name(function dataImpl(name, value2) { + var p3 = params; + var self2 = this; + var selfIsArrayLike = self2.length !== void 0; + var all = selfIsArrayLike ? self2 : [self2]; + var single = selfIsArrayLike ? self2[0] : self2; + if (string(name)) { + var isPathLike = name.indexOf(".") !== -1; + var path4 = isPathLike && toPath(name); + if (p3.allowGetting && value2 === void 0) { + var ret; + if (single) { + p3.beforeGet(single); + if (path4 && single._private[p3.field][name] === void 0) { + ret = get4(single._private[p3.field], path4); } else { - for (let rangeCode = range3.from; rangeCode <= range3.to && rangeCode < minOptimizationVal; rangeCode++) { - addOptimizedIdxToResult(rangeCode, result, ignoreCase); - } - if (range3.to >= minOptimizationVal) { - const minUnOptVal = range3.from >= minOptimizationVal ? range3.from : minOptimizationVal; - const maxUnOptVal = range3.to; - const minOptIdx = charCodeToOptimizedIndex(minUnOptVal); - const maxOptIdx = charCodeToOptimizedIndex(maxUnOptVal); - for (let currOptIdx = minOptIdx; currOptIdx <= maxOptIdx; currOptIdx++) { - result[currOptIdx] = currOptIdx; + ret = single._private[p3.field][name]; + } + } + return ret; + } else if (p3.allowSetting && value2 !== void 0) { + var valid2 = !p3.immutableKeys[name]; + if (valid2) { + var change2 = _defineProperty$1({}, name, value2); + p3.beforeSet(self2, change2); + for (var i2 = 0, l4 = all.length; i2 < l4; i2++) { + var ele = all[i2]; + if (p3.canSet(ele)) { + if (path4 && single._private[p3.field][name] === void 0) { + set4(ele._private[p3.field], path4, value2); + } else { + ele._private[p3.field][name] = value2; } } } + if (p3.updateStyle) { + self2.updateStyle(); + } + p3.onSet(self2); + if (p3.settingTriggersEvent) { + self2[p3.triggerFnName](p3.settingEvent); + } } - }); - break; - case "Group": - firstCharOptimizedIndices(atom2.value, result, ignoreCase); - break; - /* istanbul ignore next */ - default: - throw Error("Non Exhaustive Match"); - } - const isOptionalQuantifier = atom2.quantifier !== void 0 && atom2.quantifier.atLeast === 0; - if ( - // A group may be optional due to empty contents /(?:)/ - // or if everything inside it is optional /((a)?)/ - atom2.type === "Group" && isWholeOptional(atom2) === false || // If this term is not a group it may only be optional if it has an optional quantifier - atom2.type !== "Group" && isOptionalQuantifier === false - ) { - break; - } - } - break; - /* istanbul ignore next */ - default: - throw Error("non exhaustive match!"); - } - return values_default(result); - } - function addOptimizedIdxToResult(code, result, ignoreCase) { - const optimizedCharIdx = charCodeToOptimizedIndex(code); - result[optimizedCharIdx] = optimizedCharIdx; - if (ignoreCase === true) { - handleIgnoreCase(code, result); - } - } - function handleIgnoreCase(code, result) { - const char2 = String.fromCharCode(code); - const upperChar = char2.toUpperCase(); - if (upperChar !== char2) { - const optimizedCharIdx = charCodeToOptimizedIndex(upperChar.charCodeAt(0)); - result[optimizedCharIdx] = optimizedCharIdx; - } else { - const lowerChar = char2.toLowerCase(); - if (lowerChar !== char2) { - const optimizedCharIdx = charCodeToOptimizedIndex(lowerChar.charCodeAt(0)); - result[optimizedCharIdx] = optimizedCharIdx; - } - } - } - function findCode(setNode, targetCharCodes) { - return find_default(setNode.value, (codeOrRange) => { - if (typeof codeOrRange === "number") { - return includes_default(targetCharCodes, codeOrRange); - } else { - const range3 = codeOrRange; - return find_default(targetCharCodes, (targetCode) => range3.from <= targetCode && targetCode <= range3.to) !== void 0; - } - }); - } - function isWholeOptional(ast) { - const quantifier = ast.quantifier; - if (quantifier && quantifier.atLeast === 0) { - return true; - } - if (!ast.value) { - return false; - } - return isArray_default(ast.value) ? every_default(ast.value, isWholeOptional) : isWholeOptional(ast.value); - } - function canMatchCharCode(charCodes, pattern) { - if (pattern instanceof RegExp) { - const ast = getRegExpAst(pattern); - const charCodeFinder = new CharCodeFinder(charCodes); - charCodeFinder.visit(ast); - return charCodeFinder.found; - } else { - return find_default(pattern, (char2) => { - return includes_default(charCodes, char2.charCodeAt(0)); - }) !== void 0; - } - } - var complementErrorMessage, failedOptimizationPrefixMsg, CharCodeFinder; - var init_reg_exp = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/reg_exp.js"() { - "use strict"; - init_api(); - init_lodash(); - init_api2(); - init_reg_exp_parser(); - init_lexer(); - complementErrorMessage = "Complement Sets are not supported for first char optimization"; - failedOptimizationPrefixMsg = 'Unable to use "first char" lexer optimizations:\n'; - __name(getOptimizedStartCodesIndices, "getOptimizedStartCodesIndices"); - __name(firstCharOptimizedIndices, "firstCharOptimizedIndices"); - __name(addOptimizedIdxToResult, "addOptimizedIdxToResult"); - __name(handleIgnoreCase, "handleIgnoreCase"); - __name(findCode, "findCode"); - __name(isWholeOptional, "isWholeOptional"); - CharCodeFinder = class extends BaseRegExpVisitor { - static { - __name(this, "CharCodeFinder"); - } - constructor(targetCharCodes) { - super(); - this.targetCharCodes = targetCharCodes; - this.found = false; - } - visitChildren(node2) { - if (this.found === true) { - return; - } - switch (node2.type) { - case "Lookahead": - this.visitLookahead(node2); - return; - case "NegativeLookahead": - this.visitNegativeLookahead(node2); - return; - } - super.visitChildren(node2); - } - visitCharacter(node2) { - if (includes_default(this.targetCharCodes, node2.value)) { - this.found = true; - } - } - visitSet(node2) { - if (node2.complement) { - if (findCode(node2, this.targetCharCodes) === void 0) { - this.found = true; + } + } else if (p3.allowSetting && plainObject(name)) { + var obj = name; + var k2, v3; + var keys2 = Object.keys(obj); + p3.beforeSet(self2, obj); + for (var _i = 0; _i < keys2.length; _i++) { + k2 = keys2[_i]; + v3 = obj[k2]; + var _valid = !p3.immutableKeys[k2]; + if (_valid) { + for (var j3 = 0; j3 < all.length; j3++) { + var _ele = all[j3]; + if (p3.canSet(_ele)) { + _ele._private[p3.field][k2] = v3; + } + } + } + } + if (p3.updateStyle) { + self2.updateStyle(); + } + p3.onSet(self2); + if (p3.settingTriggersEvent) { + self2[p3.triggerFnName](p3.settingEvent); + } + } else if (p3.allowBinding && fn$6(name)) { + var fn3 = name; + self2.on(p3.bindingEvent, fn3); + } else if (p3.allowGetting && name === void 0) { + var _ret; + if (single) { + p3.beforeGet(single); + _ret = single._private[p3.field]; + } + return _ret; } - } else { - if (findCode(node2, this.targetCharCodes) !== void 0) { - this.found = true; + return self2; + }, "dataImpl"); + }, "data"), + // data + // remove data field + removeData: /* @__PURE__ */ __name(function removeData(params) { + var defaults4 = { + field: "data", + event: "data", + triggerFnName: "trigger", + triggerEvent: false, + immutableKeys: {} + // key => true if immutable + }; + params = extend4({}, defaults4, params); + return /* @__PURE__ */ __name(function removeDataImpl(names) { + var p3 = params; + var self2 = this; + var selfIsArrayLike = self2.length !== void 0; + var all = selfIsArrayLike ? self2 : [self2]; + if (string(names)) { + var keys2 = names.split(/\s+/); + var l4 = keys2.length; + for (var i2 = 0; i2 < l4; i2++) { + var key = keys2[i2]; + if (emptyString(key)) { + continue; + } + var valid2 = !p3.immutableKeys[key]; + if (valid2) { + for (var i_a = 0, l_a = all.length; i_a < l_a; i_a++) { + all[i_a]._private[p3.field][key] = void 0; + } + } + } + if (p3.triggerEvent) { + self2[p3.triggerFnName](p3.event); + } + } else if (names === void 0) { + for (var _i_a = 0, _l_a = all.length; _i_a < _l_a; _i_a++) { + var _privateFields = all[_i_a]._private[p3.field]; + var _keys = Object.keys(_privateFields); + for (var _i2 = 0; _i2 < _keys.length; _i2++) { + var _key = _keys[_i2]; + var validKeyToDelete = !p3.immutableKeys[_key]; + if (validKeyToDelete) { + _privateFields[_key] = void 0; + } + } + } + if (p3.triggerEvent) { + self2[p3.triggerFnName](p3.event); + } } - } - } + return self2; + }, "removeDataImpl"); + }, "removeData") + // removeData }; - __name(canMatchCharCode, "canMatchCharCode"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer.js - function analyzeTokenTypes(tokenTypes, options3) { - options3 = defaults_default(options3, { - useSticky: SUPPORT_STICKY, - debug: false, - safeMode: false, - positionTracking: "full", - lineTerminatorCharacters: ["\r", "\n"], - tracer: /* @__PURE__ */ __name((msg, action) => action(), "tracer") - }); - const tracer = options3.tracer; - tracer("initCharCodeToOptimizedIndexMap", () => { - initCharCodeToOptimizedIndexMap(); - }); - let onlyRelevantTypes; - tracer("Reject Lexer.NA", () => { - onlyRelevantTypes = reject_default(tokenTypes, (currType) => { - return currType[PATTERN] === Lexer2.NA; + define$1 = { + eventAliasesOn: /* @__PURE__ */ __name(function eventAliasesOn(proto) { + var p3 = proto; + p3.addListener = p3.listen = p3.bind = p3.on; + p3.unlisten = p3.unbind = p3.off = p3.removeListener; + p3.trigger = p3.emit; + p3.pon = p3.promiseOn = function(events, selector) { + var self2 = this; + var args = Array.prototype.slice.call(arguments, 0); + return new Promise$1(function(resolve2, reject3) { + var callback = /* @__PURE__ */ __name(function callback2(e3) { + self2.off.apply(self2, offArgs); + resolve2(e3); + }, "callback"); + var onArgs = args.concat([callback]); + var offArgs = onArgs.concat([]); + self2.on.apply(self2, onArgs); + }); + }; + }, "eventAliasesOn") + }; + define2 = {}; + [define$3, define$2, define$1].forEach(function(m3) { + extend4(define2, m3); }); - }); - let hasCustom = false; - let allTransformedPatterns; - tracer("Transform Patterns", () => { - hasCustom = false; - allTransformedPatterns = map_default(onlyRelevantTypes, (currType) => { - const currPattern = currType[PATTERN]; - if (isRegExp_default(currPattern)) { - const regExpSource = currPattern.source; - if (regExpSource.length === 1 && // only these regExp meta characters which can appear in a length one regExp - regExpSource !== "^" && regExpSource !== "$" && regExpSource !== "." && !currPattern.ignoreCase) { - return regExpSource; - } else if (regExpSource.length === 2 && regExpSource[0] === "\\" && // not a meta character - !includes_default([ - "d", - "D", - "s", - "S", - "t", - "r", - "n", - "t", - "0", - "c", - "b", - "B", - "f", - "v", - "w", - "W" - ], regExpSource[1])) { - return regExpSource[1]; - } else { - return options3.useSticky ? addStickyFlag(currPattern) : addStartOfInput(currPattern); + elesfn$i = { + animate: define2.animate(), + animation: define2.animation(), + animated: define2.animated(), + clearQueue: define2.clearQueue(), + delay: define2.delay(), + delayAnimation: define2.delayAnimation(), + stop: define2.stop() + }; + elesfn$h = { + classes: /* @__PURE__ */ __name(function classes(_classes) { + var self2 = this; + if (_classes === void 0) { + var ret = []; + self2[0]._private.classes.forEach(function(cls2) { + return ret.push(cls2); + }); + return ret; + } else if (!array2(_classes)) { + _classes = (_classes || "").match(/\S+/g) || []; } - } else if (isFunction_default(currPattern)) { - hasCustom = true; - return { exec: currPattern }; - } else if (typeof currPattern === "object") { - hasCustom = true; - return currPattern; - } else if (typeof currPattern === "string") { - if (currPattern.length === 1) { - return currPattern; - } else { - const escapedRegExpString = currPattern.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&"); - const wrappedRegExp = new RegExp(escapedRegExpString); - return options3.useSticky ? addStickyFlag(wrappedRegExp) : addStartOfInput(wrappedRegExp); + var changed = []; + var classesSet = new Set$1(_classes); + for (var j3 = 0; j3 < self2.length; j3++) { + var ele = self2[j3]; + var _p = ele._private; + var eleClasses = _p.classes; + var changedEle = false; + for (var i2 = 0; i2 < _classes.length; i2++) { + var cls = _classes[i2]; + var eleHasClass = eleClasses.has(cls); + if (!eleHasClass) { + changedEle = true; + break; + } + } + if (!changedEle) { + changedEle = eleClasses.size !== _classes.length; + } + if (changedEle) { + _p.classes = classesSet; + changed.push(ele); + } } - } else { - throw Error("non exhaustive match"); - } - }); - }); - let patternIdxToType; - let patternIdxToGroup; - let patternIdxToLongerAltIdxArr; - let patternIdxToPushMode; - let patternIdxToPopMode; - tracer("misc mapping", () => { - patternIdxToType = map_default(onlyRelevantTypes, (currType) => currType.tokenTypeIdx); - patternIdxToGroup = map_default(onlyRelevantTypes, (clazz) => { - const groupName = clazz.GROUP; - if (groupName === Lexer2.SKIPPED) { - return void 0; - } else if (isString_default(groupName)) { - return groupName; - } else if (isUndefined_default(groupName)) { - return false; - } else { - throw Error("non exhaustive match"); - } - }); - patternIdxToLongerAltIdxArr = map_default(onlyRelevantTypes, (clazz) => { - const longerAltType = clazz.LONGER_ALT; - if (longerAltType) { - const longerAltIdxArr = isArray_default(longerAltType) ? map_default(longerAltType, (type3) => indexOf_default(onlyRelevantTypes, type3)) : [indexOf_default(onlyRelevantTypes, longerAltType)]; - return longerAltIdxArr; - } - }); - patternIdxToPushMode = map_default(onlyRelevantTypes, (clazz) => clazz.PUSH_MODE); - patternIdxToPopMode = map_default(onlyRelevantTypes, (clazz) => has_default(clazz, "POP_MODE")); - }); - let patternIdxToCanLineTerminator; - tracer("Line Terminator Handling", () => { - const lineTerminatorCharCodes = getCharCodes(options3.lineTerminatorCharacters); - patternIdxToCanLineTerminator = map_default(onlyRelevantTypes, (tokType) => false); - if (options3.positionTracking !== "onlyOffset") { - patternIdxToCanLineTerminator = map_default(onlyRelevantTypes, (tokType) => { - if (has_default(tokType, "LINE_BREAKS")) { - return !!tokType.LINE_BREAKS; - } else { - return checkLineBreaksIssues(tokType, lineTerminatorCharCodes) === false && canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN); + if (changed.length > 0) { + this.spawn(changed).updateStyle().emit("class"); } - }); - } - }); - let patternIdxToIsCustom; - let patternIdxToShort; - let emptyGroups; - let patternIdxToConfig; - tracer("Misc Mapping #2", () => { - patternIdxToIsCustom = map_default(onlyRelevantTypes, isCustomPattern); - patternIdxToShort = map_default(allTransformedPatterns, isShortPattern); - emptyGroups = reduce_default(onlyRelevantTypes, (acc, clazz) => { - const groupName = clazz.GROUP; - if (isString_default(groupName) && !(groupName === Lexer2.SKIPPED)) { - acc[groupName] = []; - } - return acc; - }, {}); - patternIdxToConfig = map_default(allTransformedPatterns, (x5, idx) => { - return { - pattern: allTransformedPatterns[idx], - longerAlt: patternIdxToLongerAltIdxArr[idx], - canLineTerminator: patternIdxToCanLineTerminator[idx], - isCustom: patternIdxToIsCustom[idx], - short: patternIdxToShort[idx], - group: patternIdxToGroup[idx], - push: patternIdxToPushMode[idx], - pop: patternIdxToPopMode[idx], - tokenTypeIdx: patternIdxToType[idx], - tokenType: onlyRelevantTypes[idx] - }; - }); - }); - let canBeOptimized = true; - let charCodeToPatternIdxToConfig = []; - if (!options3.safeMode) { - tracer("First Char Optimization", () => { - charCodeToPatternIdxToConfig = reduce_default(onlyRelevantTypes, (result, currTokType, idx) => { - if (typeof currTokType.PATTERN === "string") { - const charCode = currTokType.PATTERN.charCodeAt(0); - const optimizedIdx = charCodeToOptimizedIndex(charCode); - addToMapOfArrays(result, optimizedIdx, patternIdxToConfig[idx]); - } else if (isArray_default(currTokType.START_CHARS_HINT)) { - let lastOptimizedIdx; - forEach_default(currTokType.START_CHARS_HINT, (charOrInt) => { - const charCode = typeof charOrInt === "string" ? charOrInt.charCodeAt(0) : charOrInt; - const currOptimizedIdx = charCodeToOptimizedIndex(charCode); - if (lastOptimizedIdx !== currOptimizedIdx) { - lastOptimizedIdx = currOptimizedIdx; - addToMapOfArrays(result, currOptimizedIdx, patternIdxToConfig[idx]); - } - }); - } else if (isRegExp_default(currTokType.PATTERN)) { - if (currTokType.PATTERN.unicode) { - canBeOptimized = false; - if (options3.ensureOptimizations) { - PRINT_ERROR(`${failedOptimizationPrefixMsg} Unable to analyze < ${currTokType.PATTERN.toString()} > pattern. - The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`); + return self2; + }, "classes"), + addClass: /* @__PURE__ */ __name(function addClass(classes3) { + return this.toggleClass(classes3, true); + }, "addClass"), + hasClass: /* @__PURE__ */ __name(function hasClass(className) { + var ele = this[0]; + return ele != null && ele._private.classes.has(className); + }, "hasClass"), + toggleClass: /* @__PURE__ */ __name(function toggleClass(classes3, toggle) { + if (!array2(classes3)) { + classes3 = classes3.match(/\S+/g) || []; + } + var self2 = this; + var toggleUndefd = toggle === void 0; + var changed = []; + for (var i2 = 0, il = self2.length; i2 < il; i2++) { + var ele = self2[i2]; + var eleClasses = ele._private.classes; + var changedEle = false; + for (var j3 = 0; j3 < classes3.length; j3++) { + var cls = classes3[j3]; + var hasClass2 = eleClasses.has(cls); + var changedNow = false; + if (toggle || toggleUndefd && !hasClass2) { + eleClasses.add(cls); + changedNow = true; + } else if (!toggle || toggleUndefd && hasClass2) { + eleClasses["delete"](cls); + changedNow = true; } - } else { - const optimizedCodes = getOptimizedStartCodesIndices(currTokType.PATTERN, options3.ensureOptimizations); - if (isEmpty_default(optimizedCodes)) { - canBeOptimized = false; + if (!changedEle && changedNow) { + changed.push(ele); + changedEle = true; } - forEach_default(optimizedCodes, (code) => { - addToMapOfArrays(result, code, patternIdxToConfig[idx]); - }); - } - } else { - if (options3.ensureOptimizations) { - PRINT_ERROR(`${failedOptimizationPrefixMsg} TokenType: <${currTokType.name}> is using a custom token pattern without providing parameter. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`); } - canBeOptimized = false; } - return result; - }, []); - }); - } - return { - emptyGroups, - patternIdxToConfig, - charCodeToPatternIdxToConfig, - hasCustom, - canBeOptimized - }; - } - function validatePatterns(tokenTypes, validModesNames) { - let errors = []; - const missingResult = findMissingPatterns(tokenTypes); - errors = errors.concat(missingResult.errors); - const invalidResult = findInvalidPatterns(missingResult.valid); - const validTokenTypes = invalidResult.valid; - errors = errors.concat(invalidResult.errors); - errors = errors.concat(validateRegExpPattern(validTokenTypes)); - errors = errors.concat(findInvalidGroupType(validTokenTypes)); - errors = errors.concat(findModesThatDoNotExist(validTokenTypes, validModesNames)); - errors = errors.concat(findUnreachablePatterns(validTokenTypes)); - return errors; - } - function validateRegExpPattern(tokenTypes) { - let errors = []; - const withRegExpPatterns = filter_default3(tokenTypes, (currTokType) => isRegExp_default(currTokType[PATTERN])); - errors = errors.concat(findEndOfInputAnchor(withRegExpPatterns)); - errors = errors.concat(findStartOfInputAnchor(withRegExpPatterns)); - errors = errors.concat(findUnsupportedFlags(withRegExpPatterns)); - errors = errors.concat(findDuplicatePatterns(withRegExpPatterns)); - errors = errors.concat(findEmptyMatchRegExps(withRegExpPatterns)); - return errors; - } - function findMissingPatterns(tokenTypes) { - const tokenTypesWithMissingPattern = filter_default3(tokenTypes, (currType) => { - return !has_default(currType, PATTERN); - }); - const errors = map_default(tokenTypesWithMissingPattern, (currType) => { - return { - message: "Token Type: ->" + currType.name + "<- missing static 'PATTERN' property", - type: LexerDefinitionErrorType.MISSING_PATTERN, - tokenTypes: [currType] - }; - }); - const valid2 = difference_default(tokenTypes, tokenTypesWithMissingPattern); - return { errors, valid: valid2 }; - } - function findInvalidPatterns(tokenTypes) { - const tokenTypesWithInvalidPattern = filter_default3(tokenTypes, (currType) => { - const pattern = currType[PATTERN]; - return !isRegExp_default(pattern) && !isFunction_default(pattern) && !has_default(pattern, "exec") && !isString_default(pattern); - }); - const errors = map_default(tokenTypesWithInvalidPattern, (currType) => { - return { - message: "Token Type: ->" + currType.name + "<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.", - type: LexerDefinitionErrorType.INVALID_PATTERN, - tokenTypes: [currType] - }; - }); - const valid2 = difference_default(tokenTypes, tokenTypesWithInvalidPattern); - return { errors, valid: valid2 }; - } - function findEndOfInputAnchor(tokenTypes) { - class EndAnchorFinder extends BaseRegExpVisitor { - static { - __name(this, "EndAnchorFinder"); - } - constructor() { - super(...arguments); - this.found = false; - } - visitEndAnchor(node2) { - this.found = true; - } - } - const invalidRegex = filter_default3(tokenTypes, (currType) => { - const pattern = currType.PATTERN; - try { - const regexpAst = getRegExpAst(pattern); - const endAnchorVisitor = new EndAnchorFinder(); - endAnchorVisitor.visit(regexpAst); - return endAnchorVisitor.found; - } catch (e3) { - return end_of_input.test(pattern.source); - } - }); - const errors = map_default(invalidRegex, (currType) => { - return { - message: "Unexpected RegExp Anchor Error:\n Token Type: ->" + currType.name + "<- static 'PATTERN' cannot contain end of input anchor '$'\n See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.", - type: LexerDefinitionErrorType.EOI_ANCHOR_FOUND, - tokenTypes: [currType] - }; - }); - return errors; - } - function findEmptyMatchRegExps(tokenTypes) { - const matchesEmptyString = filter_default3(tokenTypes, (currType) => { - const pattern = currType.PATTERN; - return pattern.test(""); - }); - const errors = map_default(matchesEmptyString, (currType) => { - return { - message: "Token Type: ->" + currType.name + "<- static 'PATTERN' must not match an empty string", - type: LexerDefinitionErrorType.EMPTY_MATCH_PATTERN, - tokenTypes: [currType] - }; - }); - return errors; - } - function findStartOfInputAnchor(tokenTypes) { - class StartAnchorFinder extends BaseRegExpVisitor { - static { - __name(this, "StartAnchorFinder"); - } - constructor() { - super(...arguments); - this.found = false; - } - visitStartAnchor(node2) { - this.found = true; - } - } - const invalidRegex = filter_default3(tokenTypes, (currType) => { - const pattern = currType.PATTERN; - try { - const regexpAst = getRegExpAst(pattern); - const startAnchorVisitor = new StartAnchorFinder(); - startAnchorVisitor.visit(regexpAst); - return startAnchorVisitor.found; - } catch (e3) { - return start_of_input.test(pattern.source); - } - }); - const errors = map_default(invalidRegex, (currType) => { - return { - message: "Unexpected RegExp Anchor Error:\n Token Type: ->" + currType.name + "<- static 'PATTERN' cannot contain start of input anchor '^'\n See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.", - type: LexerDefinitionErrorType.SOI_ANCHOR_FOUND, - tokenTypes: [currType] + if (changed.length > 0) { + this.spawn(changed).updateStyle().emit("class"); + } + return self2; + }, "toggleClass"), + removeClass: /* @__PURE__ */ __name(function removeClass(classes3) { + return this.toggleClass(classes3, false); + }, "removeClass"), + flashClass: /* @__PURE__ */ __name(function flashClass(classes3, duration) { + var self2 = this; + if (duration == null) { + duration = 250; + } else if (duration === 0) { + return self2; + } + self2.addClass(classes3); + setTimeout(function() { + self2.removeClass(classes3); + }, duration); + return self2; + }, "flashClass") }; - }); - return errors; - } - function findUnsupportedFlags(tokenTypes) { - const invalidFlags = filter_default3(tokenTypes, (currType) => { - const pattern = currType[PATTERN]; - return pattern instanceof RegExp && (pattern.multiline || pattern.global); - }); - const errors = map_default(invalidFlags, (currType) => { - return { - message: "Token Type: ->" + currType.name + "<- static 'PATTERN' may NOT contain global('g') or multiline('m')", - type: LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND, - tokenTypes: [currType] + elesfn$h.className = elesfn$h.classNames = elesfn$h.classes; + tokens = { + metaChar: "[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]", + // chars we need to escape in let names, etc + comparatorOp: "=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=", + // binary comparison op (used in data selectors) + boolOp: "\\?|\\!|\\^", + // boolean (unary) operators (used in data selectors) + string: `"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`, + // string literals (used in data selectors) -- doublequotes | singlequotes + number: number6, + // number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123 + meta: "degree|indegree|outdegree", + // allowed metadata fields (i.e. allowed functions to use from Collection) + separator: "\\s*,\\s*", + // queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass + descendant: "\\s+", + child: "\\s+>\\s+", + subject: "\\$", + group: "node|edge|\\*", + directedEdge: "\\s+->\\s+", + undirectedEdge: "\\s+<->\\s+" }; - }); - return errors; - } - function findDuplicatePatterns(tokenTypes) { - const found = []; - let identicalPatterns = map_default(tokenTypes, (outerType) => { - return reduce_default(tokenTypes, (result, innerType) => { - if (outerType.PATTERN.source === innerType.PATTERN.source && !includes_default(found, innerType) && innerType.PATTERN !== Lexer2.NA) { - found.push(innerType); - result.push(innerType); - return result; + tokens.variable = "(?:[\\w-.]|(?:\\\\" + tokens.metaChar + "))+"; + tokens.className = "(?:[\\w-]|(?:\\\\" + tokens.metaChar + "))+"; + tokens.value = tokens.string + "|" + tokens.number; + tokens.id = tokens.variable; + (function() { + var ops, op2, i2; + ops = tokens.comparatorOp.split("|"); + for (i2 = 0; i2 < ops.length; i2++) { + op2 = ops[i2]; + tokens.comparatorOp += "|@" + op2; } - return result; - }, []); - }); - identicalPatterns = compact_default(identicalPatterns); - const duplicatePatterns = filter_default3(identicalPatterns, (currIdenticalSet) => { - return currIdenticalSet.length > 1; - }); - const errors = map_default(duplicatePatterns, (setOfIdentical) => { - const tokenTypeNames = map_default(setOfIdentical, (currType) => { - return currType.name; - }); - const dupPatternSrc = head_default(setOfIdentical).PATTERN; - return { - message: `The same RegExp pattern ->${dupPatternSrc}<-has been used in all of the following Token Types: ${tokenTypeNames.join(", ")} <-`, - type: LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND, - tokenTypes: setOfIdentical - }; - }); - return errors; - } - function findInvalidGroupType(tokenTypes) { - const invalidTypes = filter_default3(tokenTypes, (clazz) => { - if (!has_default(clazz, "GROUP")) { - return false; - } - const group2 = clazz.GROUP; - return group2 !== Lexer2.SKIPPED && group2 !== Lexer2.NA && !isString_default(group2); - }); - const errors = map_default(invalidTypes, (currType) => { - return { - message: "Token Type: ->" + currType.name + "<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String", - type: LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND, - tokenTypes: [currType] - }; - }); - return errors; - } - function findModesThatDoNotExist(tokenTypes, validModes) { - const invalidModes = filter_default3(tokenTypes, (clazz) => { - return clazz.PUSH_MODE !== void 0 && !includes_default(validModes, clazz.PUSH_MODE); - }); - const errors = map_default(invalidModes, (tokType) => { - const msg = `Token Type: ->${tokType.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${tokType.PUSH_MODE}<-which does not exist`; - return { - message: msg, - type: LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST, - tokenTypes: [tokType] - }; - }); - return errors; - } - function findUnreachablePatterns(tokenTypes) { - const errors = []; - const canBeTested = reduce_default(tokenTypes, (result, tokType, idx) => { - const pattern = tokType.PATTERN; - if (pattern === Lexer2.NA) { - return result; - } - if (isString_default(pattern)) { - result.push({ str: pattern, idx, tokenType: tokType }); - } else if (isRegExp_default(pattern) && noMetaChar(pattern)) { - result.push({ str: pattern.source, idx, tokenType: tokType }); - } - return result; - }, []); - forEach_default(tokenTypes, (tokType, testIdx) => { - forEach_default(canBeTested, ({ str: str2, idx, tokenType }) => { - if (testIdx < idx && testTokenType(str2, tokType.PATTERN)) { - const msg = `Token: ->${tokenType.name}<- can never be matched. -Because it appears AFTER the Token Type ->${tokType.name}<-in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`; - errors.push({ - message: msg, - type: LexerDefinitionErrorType.UNREACHABLE_PATTERN, - tokenTypes: [tokType, tokenType] - }); + ops = tokens.comparatorOp.split("|"); + for (i2 = 0; i2 < ops.length; i2++) { + op2 = ops[i2]; + if (op2.indexOf("!") >= 0) { + continue; + } + if (op2 === "=") { + continue; + } + tokens.comparatorOp += "|\\!" + op2; } + })(); + newQuery = /* @__PURE__ */ __name(function newQuery2() { + return { + checks: [] + }; + }, "newQuery"); + Type2 = { + /** E.g. node */ + GROUP: 0, + /** A collection of elements */ + COLLECTION: 1, + /** A filter(ele) function */ + FILTER: 2, + /** E.g. [foo > 1] */ + DATA_COMPARE: 3, + /** E.g. [foo] */ + DATA_EXIST: 4, + /** E.g. [?foo] */ + DATA_BOOL: 5, + /** E.g. [[degree > 2]] */ + META_COMPARE: 6, + /** E.g. :selected */ + STATE: 7, + /** E.g. #foo */ + ID: 8, + /** E.g. .foo */ + CLASS: 9, + /** E.g. #foo <-> #bar */ + UNDIRECTED_EDGE: 10, + /** E.g. #foo -> #bar */ + DIRECTED_EDGE: 11, + /** E.g. $#foo -> #bar */ + NODE_SOURCE: 12, + /** E.g. #foo -> $#bar */ + NODE_TARGET: 13, + /** E.g. $#foo <-> #bar */ + NODE_NEIGHBOR: 14, + /** E.g. #foo > #bar */ + CHILD: 15, + /** E.g. #foo #bar */ + DESCENDANT: 16, + /** E.g. $#foo > #bar */ + PARENT: 17, + /** E.g. $#foo #bar */ + ANCESTOR: 18, + /** E.g. #foo > $bar > #baz */ + COMPOUND_SPLIT: 19, + /** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */ + TRUE: 20 + }; + stateSelectors = [{ + selector: ":selected", + matches: /* @__PURE__ */ __name(function matches(ele) { + return ele.selected(); + }, "matches") + }, { + selector: ":unselected", + matches: /* @__PURE__ */ __name(function matches2(ele) { + return !ele.selected(); + }, "matches") + }, { + selector: ":selectable", + matches: /* @__PURE__ */ __name(function matches3(ele) { + return ele.selectable(); + }, "matches") + }, { + selector: ":unselectable", + matches: /* @__PURE__ */ __name(function matches4(ele) { + return !ele.selectable(); + }, "matches") + }, { + selector: ":locked", + matches: /* @__PURE__ */ __name(function matches5(ele) { + return ele.locked(); + }, "matches") + }, { + selector: ":unlocked", + matches: /* @__PURE__ */ __name(function matches6(ele) { + return !ele.locked(); + }, "matches") + }, { + selector: ":visible", + matches: /* @__PURE__ */ __name(function matches7(ele) { + return ele.visible(); + }, "matches") + }, { + selector: ":hidden", + matches: /* @__PURE__ */ __name(function matches8(ele) { + return !ele.visible(); + }, "matches") + }, { + selector: ":transparent", + matches: /* @__PURE__ */ __name(function matches9(ele) { + return ele.transparent(); + }, "matches") + }, { + selector: ":grabbed", + matches: /* @__PURE__ */ __name(function matches10(ele) { + return ele.grabbed(); + }, "matches") + }, { + selector: ":free", + matches: /* @__PURE__ */ __name(function matches11(ele) { + return !ele.grabbed(); + }, "matches") + }, { + selector: ":removed", + matches: /* @__PURE__ */ __name(function matches12(ele) { + return ele.removed(); + }, "matches") + }, { + selector: ":inside", + matches: /* @__PURE__ */ __name(function matches13(ele) { + return !ele.removed(); + }, "matches") + }, { + selector: ":grabbable", + matches: /* @__PURE__ */ __name(function matches14(ele) { + return ele.grabbable(); + }, "matches") + }, { + selector: ":ungrabbable", + matches: /* @__PURE__ */ __name(function matches15(ele) { + return !ele.grabbable(); + }, "matches") + }, { + selector: ":animated", + matches: /* @__PURE__ */ __name(function matches16(ele) { + return ele.animated(); + }, "matches") + }, { + selector: ":unanimated", + matches: /* @__PURE__ */ __name(function matches17(ele) { + return !ele.animated(); + }, "matches") + }, { + selector: ":parent", + matches: /* @__PURE__ */ __name(function matches18(ele) { + return ele.isParent(); + }, "matches") + }, { + selector: ":childless", + matches: /* @__PURE__ */ __name(function matches19(ele) { + return ele.isChildless(); + }, "matches") + }, { + selector: ":child", + matches: /* @__PURE__ */ __name(function matches20(ele) { + return ele.isChild(); + }, "matches") + }, { + selector: ":orphan", + matches: /* @__PURE__ */ __name(function matches21(ele) { + return ele.isOrphan(); + }, "matches") + }, { + selector: ":nonorphan", + matches: /* @__PURE__ */ __name(function matches22(ele) { + return ele.isChild(); + }, "matches") + }, { + selector: ":compound", + matches: /* @__PURE__ */ __name(function matches23(ele) { + if (ele.isNode()) { + return ele.isParent(); + } else { + return ele.source().isParent() || ele.target().isParent(); + } + }, "matches") + }, { + selector: ":loop", + matches: /* @__PURE__ */ __name(function matches24(ele) { + return ele.isLoop(); + }, "matches") + }, { + selector: ":simple", + matches: /* @__PURE__ */ __name(function matches25(ele) { + return ele.isSimple(); + }, "matches") + }, { + selector: ":active", + matches: /* @__PURE__ */ __name(function matches26(ele) { + return ele.active(); + }, "matches") + }, { + selector: ":inactive", + matches: /* @__PURE__ */ __name(function matches27(ele) { + return !ele.active(); + }, "matches") + }, { + selector: ":backgrounding", + matches: /* @__PURE__ */ __name(function matches28(ele) { + return ele.backgrounding(); + }, "matches") + }, { + selector: ":nonbackgrounding", + matches: /* @__PURE__ */ __name(function matches29(ele) { + return !ele.backgrounding(); + }, "matches") + }].sort(function(a2, b3) { + return descending2(a2.selector, b3.selector); }); - }); - return errors; - } - function testTokenType(str2, pattern) { - if (isRegExp_default(pattern)) { - const regExpArray = pattern.exec(str2); - return regExpArray !== null && regExpArray.index === 0; - } else if (isFunction_default(pattern)) { - return pattern(str2, 0, [], {}); - } else if (has_default(pattern, "exec")) { - return pattern.exec(str2, 0, [], {}); - } else if (typeof pattern === "string") { - return pattern === str2; - } else { - throw Error("non exhaustive match"); - } - } - function noMetaChar(regExp) { - const metaChars = [ - ".", - "\\", - "[", - "]", - "|", - "^", - "$", - "(", - ")", - "?", - "*", - "+", - "{" - ]; - return find_default(metaChars, (char2) => regExp.source.indexOf(char2) !== -1) === void 0; - } - function addStartOfInput(pattern) { - const flags = pattern.ignoreCase ? "i" : ""; - return new RegExp(`^(?:${pattern.source})`, flags); - } - function addStickyFlag(pattern) { - const flags = pattern.ignoreCase ? "iy" : "y"; - return new RegExp(`${pattern.source}`, flags); - } - function performRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) { - const errors = []; - if (!has_default(lexerDefinition, DEFAULT_MODE)) { - errors.push({ - message: "A MultiMode Lexer cannot be initialized without a <" + DEFAULT_MODE + "> property in its definition\n", - type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE - }); - } - if (!has_default(lexerDefinition, MODES)) { - errors.push({ - message: "A MultiMode Lexer cannot be initialized without a <" + MODES + "> property in its definition\n", - type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY - }); - } - if (has_default(lexerDefinition, MODES) && has_default(lexerDefinition, DEFAULT_MODE) && !has_default(lexerDefinition.modes, lexerDefinition.defaultMode)) { - errors.push({ - message: `A MultiMode Lexer cannot be initialized with a ${DEFAULT_MODE}: <${lexerDefinition.defaultMode}>which does not exist -`, - type: LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST - }); - } - if (has_default(lexerDefinition, MODES)) { - forEach_default(lexerDefinition.modes, (currModeValue, currModeName) => { - forEach_default(currModeValue, (currTokType, currIdx) => { - if (isUndefined_default(currTokType)) { - errors.push({ - message: `A Lexer cannot be initialized using an undefined Token Type. Mode:<${currModeName}> at index: <${currIdx}> -`, - type: LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED + lookup = (function() { + var selToFn = {}; + var s2; + for (var i2 = 0; i2 < stateSelectors.length; i2++) { + s2 = stateSelectors[i2]; + selToFn[s2.selector] = s2.matches; + } + return selToFn; + })(); + stateSelectorMatches = /* @__PURE__ */ __name(function stateSelectorMatches2(sel, ele) { + return lookup[sel](ele); + }, "stateSelectorMatches"); + stateSelectorRegex = "(" + stateSelectors.map(function(s2) { + return s2.selector; + }).join("|") + ")"; + cleanMetaChars = /* @__PURE__ */ __name(function cleanMetaChars2(str2) { + return str2.replace(new RegExp("\\\\(" + tokens.metaChar + ")", "g"), function(match2, $1) { + return $1; + }); + }, "cleanMetaChars"); + replaceLastQuery = /* @__PURE__ */ __name(function replaceLastQuery2(selector, examiningQuery, replacementQuery) { + selector[selector.length - 1] = replacementQuery; + }, "replaceLastQuery"); + exprs = [{ + name: "group", + // just used for identifying when debugging + query: true, + regex: "(" + tokens.group + ")", + populate: /* @__PURE__ */ __name(function populate(selector, query, _ref) { + var _ref2 = _slicedToArray(_ref, 1), group2 = _ref2[0]; + query.checks.push({ + type: Type2.GROUP, + value: group2 === "*" ? group2 : group2 + "s" + }); + }, "populate") + }, { + name: "state", + query: true, + regex: stateSelectorRegex, + populate: /* @__PURE__ */ __name(function populate2(selector, query, _ref3) { + var _ref4 = _slicedToArray(_ref3, 1), state3 = _ref4[0]; + query.checks.push({ + type: Type2.STATE, + value: state3 + }); + }, "populate") + }, { + name: "id", + query: true, + regex: "\\#(" + tokens.id + ")", + populate: /* @__PURE__ */ __name(function populate3(selector, query, _ref5) { + var _ref6 = _slicedToArray(_ref5, 1), id30 = _ref6[0]; + query.checks.push({ + type: Type2.ID, + value: cleanMetaChars(id30) + }); + }, "populate") + }, { + name: "className", + query: true, + regex: "\\.(" + tokens.className + ")", + populate: /* @__PURE__ */ __name(function populate4(selector, query, _ref7) { + var _ref8 = _slicedToArray(_ref7, 1), className = _ref8[0]; + query.checks.push({ + type: Type2.CLASS, + value: cleanMetaChars(className) + }); + }, "populate") + }, { + name: "dataExists", + query: true, + regex: "\\[\\s*(" + tokens.variable + ")\\s*\\]", + populate: /* @__PURE__ */ __name(function populate5(selector, query, _ref9) { + var _ref10 = _slicedToArray(_ref9, 1), variable = _ref10[0]; + query.checks.push({ + type: Type2.DATA_EXIST, + field: cleanMetaChars(variable) + }); + }, "populate") + }, { + name: "dataCompare", + query: true, + regex: "\\[\\s*(" + tokens.variable + ")\\s*(" + tokens.comparatorOp + ")\\s*(" + tokens.value + ")\\s*\\]", + populate: /* @__PURE__ */ __name(function populate6(selector, query, _ref11) { + var _ref12 = _slicedToArray(_ref11, 3), variable = _ref12[0], comparatorOp = _ref12[1], value2 = _ref12[2]; + var valueIsString = new RegExp("^" + tokens.string + "$").exec(value2) != null; + if (valueIsString) { + value2 = value2.substring(1, value2.length - 1); + } else { + value2 = parseFloat(value2); + } + query.checks.push({ + type: Type2.DATA_COMPARE, + field: cleanMetaChars(variable), + operator: comparatorOp, + value: value2 + }); + }, "populate") + }, { + name: "dataBool", + query: true, + regex: "\\[\\s*(" + tokens.boolOp + ")\\s*(" + tokens.variable + ")\\s*\\]", + populate: /* @__PURE__ */ __name(function populate7(selector, query, _ref13) { + var _ref14 = _slicedToArray(_ref13, 2), boolOp = _ref14[0], variable = _ref14[1]; + query.checks.push({ + type: Type2.DATA_BOOL, + field: cleanMetaChars(variable), + operator: boolOp + }); + }, "populate") + }, { + name: "metaCompare", + query: true, + regex: "\\[\\[\\s*(" + tokens.meta + ")\\s*(" + tokens.comparatorOp + ")\\s*(" + tokens.number + ")\\s*\\]\\]", + populate: /* @__PURE__ */ __name(function populate8(selector, query, _ref15) { + var _ref16 = _slicedToArray(_ref15, 3), meta3 = _ref16[0], comparatorOp = _ref16[1], number7 = _ref16[2]; + query.checks.push({ + type: Type2.META_COMPARE, + field: cleanMetaChars(meta3), + operator: comparatorOp, + value: parseFloat(number7) + }); + }, "populate") + }, { + name: "nextQuery", + separator: true, + regex: tokens.separator, + populate: /* @__PURE__ */ __name(function populate9(selector, query) { + var currentSubject = selector.currentSubject; + var edgeCount3 = selector.edgeCount; + var compoundCount = selector.compoundCount; + var lastQ = selector[selector.length - 1]; + if (currentSubject != null) { + lastQ.subject = currentSubject; + selector.currentSubject = null; + } + lastQ.edgeCount = edgeCount3; + lastQ.compoundCount = compoundCount; + selector.edgeCount = 0; + selector.compoundCount = 0; + var nextQuery = selector[selector.length++] = newQuery(); + return nextQuery; + }, "populate") + }, { + name: "directedEdge", + separator: true, + regex: tokens.directedEdge, + populate: /* @__PURE__ */ __name(function populate10(selector, query) { + if (selector.currentSubject == null) { + var edgeQuery = newQuery(); + var source = query; + var target = newQuery(); + edgeQuery.checks.push({ + type: Type2.DIRECTED_EDGE, + source, + target }); - } else if (has_default(currTokType, "LONGER_ALT")) { - const longerAlt = isArray_default(currTokType.LONGER_ALT) ? currTokType.LONGER_ALT : [currTokType.LONGER_ALT]; - forEach_default(longerAlt, (currLongerAlt) => { - if (!isUndefined_default(currLongerAlt) && !includes_default(currModeValue, currLongerAlt)) { - errors.push({ - message: `A MultiMode Lexer cannot be initialized with a longer_alt <${currLongerAlt.name}> on token <${currTokType.name}> outside of mode <${currModeName}> -`, - type: LexerDefinitionErrorType.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE - }); - } + replaceLastQuery(selector, query, edgeQuery); + selector.edgeCount++; + return target; + } else { + var srcTgtQ = newQuery(); + var _source = query; + var _target = newQuery(); + srcTgtQ.checks.push({ + type: Type2.NODE_SOURCE, + source: _source, + target: _target }); + replaceLastQuery(selector, query, srcTgtQ); + selector.edgeCount++; + return _target; } - }); + }, "populate") + }, { + name: "undirectedEdge", + separator: true, + regex: tokens.undirectedEdge, + populate: /* @__PURE__ */ __name(function populate11(selector, query) { + if (selector.currentSubject == null) { + var edgeQuery = newQuery(); + var source = query; + var target = newQuery(); + edgeQuery.checks.push({ + type: Type2.UNDIRECTED_EDGE, + nodes: [source, target] + }); + replaceLastQuery(selector, query, edgeQuery); + selector.edgeCount++; + return target; + } else { + var nhoodQ = newQuery(); + var node2 = query; + var neighbor = newQuery(); + nhoodQ.checks.push({ + type: Type2.NODE_NEIGHBOR, + node: node2, + neighbor + }); + replaceLastQuery(selector, query, nhoodQ); + return neighbor; + } + }, "populate") + }, { + name: "child", + separator: true, + regex: tokens.child, + populate: /* @__PURE__ */ __name(function populate12(selector, query) { + if (selector.currentSubject == null) { + var parentChildQuery = newQuery(); + var child = newQuery(); + var parent4 = selector[selector.length - 1]; + parentChildQuery.checks.push({ + type: Type2.CHILD, + parent: parent4, + child + }); + replaceLastQuery(selector, query, parentChildQuery); + selector.compoundCount++; + return child; + } else if (selector.currentSubject === query) { + var compound = newQuery(); + var left3 = selector[selector.length - 1]; + var right3 = newQuery(); + var subject = newQuery(); + var _child = newQuery(); + var _parent = newQuery(); + compound.checks.push({ + type: Type2.COMPOUND_SPLIT, + left: left3, + right: right3, + subject + }); + subject.checks = query.checks; + query.checks = [{ + type: Type2.TRUE + }]; + _parent.checks.push({ + type: Type2.TRUE + }); + right3.checks.push({ + type: Type2.PARENT, + // type is swapped on right side queries + parent: _parent, + child: _child + // empty for now + }); + replaceLastQuery(selector, left3, compound); + selector.currentSubject = subject; + selector.compoundCount++; + return _child; + } else { + var _parent2 = newQuery(); + var _child2 = newQuery(); + var pcQChecks = [{ + type: Type2.PARENT, + parent: _parent2, + child: _child2 + }]; + _parent2.checks = query.checks; + query.checks = pcQChecks; + selector.compoundCount++; + return _child2; + } + }, "populate") + }, { + name: "descendant", + separator: true, + regex: tokens.descendant, + populate: /* @__PURE__ */ __name(function populate13(selector, query) { + if (selector.currentSubject == null) { + var ancChQuery = newQuery(); + var descendant = newQuery(); + var ancestor = selector[selector.length - 1]; + ancChQuery.checks.push({ + type: Type2.DESCENDANT, + ancestor, + descendant + }); + replaceLastQuery(selector, query, ancChQuery); + selector.compoundCount++; + return descendant; + } else if (selector.currentSubject === query) { + var compound = newQuery(); + var left3 = selector[selector.length - 1]; + var right3 = newQuery(); + var subject = newQuery(); + var _descendant = newQuery(); + var _ancestor = newQuery(); + compound.checks.push({ + type: Type2.COMPOUND_SPLIT, + left: left3, + right: right3, + subject + }); + subject.checks = query.checks; + query.checks = [{ + type: Type2.TRUE + }]; + _ancestor.checks.push({ + type: Type2.TRUE + }); + right3.checks.push({ + type: Type2.ANCESTOR, + // type is swapped on right side queries + ancestor: _ancestor, + descendant: _descendant + // empty for now + }); + replaceLastQuery(selector, left3, compound); + selector.currentSubject = subject; + selector.compoundCount++; + return _descendant; + } else { + var _ancestor2 = newQuery(); + var _descendant2 = newQuery(); + var adQChecks = [{ + type: Type2.ANCESTOR, + ancestor: _ancestor2, + descendant: _descendant2 + }]; + _ancestor2.checks = query.checks; + query.checks = adQChecks; + selector.compoundCount++; + return _descendant2; + } + }, "populate") + }, { + name: "subject", + modifier: true, + regex: tokens.subject, + populate: /* @__PURE__ */ __name(function populate14(selector, query) { + if (selector.currentSubject != null && selector.currentSubject !== query) { + warn("Redefinition of subject in selector `" + selector.toString() + "`"); + return false; + } + selector.currentSubject = query; + var topQ = selector[selector.length - 1]; + var topChk = topQ.checks[0]; + var topType = topChk == null ? null : topChk.type; + if (topType === Type2.DIRECTED_EDGE) { + topChk.type = Type2.NODE_TARGET; + } else if (topType === Type2.UNDIRECTED_EDGE) { + topChk.type = Type2.NODE_NEIGHBOR; + topChk.node = topChk.nodes[1]; + topChk.neighbor = topChk.nodes[0]; + topChk.nodes = null; + } + }, "populate") + }]; + exprs.forEach(function(e3) { + return e3.regexObj = new RegExp("^" + e3.regex); }); - } - return errors; - } - function performWarningRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) { - const warnings3 = []; - let hasAnyLineBreak = false; - const allTokenTypes = compact_default(flatten_default(values_default(lexerDefinition.modes))); - const concreteTokenTypes = reject_default(allTokenTypes, (currType) => currType[PATTERN] === Lexer2.NA); - const terminatorCharCodes = getCharCodes(lineTerminatorCharacters); - if (trackLines) { - forEach_default(concreteTokenTypes, (tokType) => { - const currIssue = checkLineBreaksIssues(tokType, terminatorCharCodes); - if (currIssue !== false) { - const message = buildLineBreakIssueMessage(tokType, currIssue); - const warningDescriptor = { - message, - type: currIssue.issue, - tokenType: tokType - }; - warnings3.push(warningDescriptor); - } else { - if (has_default(tokType, "LINE_BREAKS")) { - if (tokType.LINE_BREAKS === true) { - hasAnyLineBreak = true; - } + consumeExpr = /* @__PURE__ */ __name(function consumeExpr2(remaining) { + var expr; + var match2; + var name; + for (var j3 = 0; j3 < exprs.length; j3++) { + var e3 = exprs[j3]; + var n2 = e3.name; + var m3 = remaining.match(e3.regexObj); + if (m3 != null) { + match2 = m3; + expr = e3; + name = n2; + var consumed = m3[0]; + remaining = remaining.substring(consumed.length); + break; + } + } + return { + expr, + match: match2, + name, + remaining + }; + }, "consumeExpr"); + consumeWhitespace = /* @__PURE__ */ __name(function consumeWhitespace2(remaining) { + var match2 = remaining.match(/^\s+/); + if (match2) { + var consumed = match2[0]; + remaining = remaining.substring(consumed.length); + } + return remaining; + }, "consumeWhitespace"); + parse = /* @__PURE__ */ __name(function parse2(selector) { + var self2 = this; + var remaining = self2.inputText = selector; + var currentQuery = self2[0] = newQuery(); + self2.length = 1; + remaining = consumeWhitespace(remaining); + for (; ; ) { + var exprInfo = consumeExpr(remaining); + if (exprInfo.expr == null) { + warn("The selector `" + selector + "`is invalid"); + return false; } else { - if (canMatchCharCode(terminatorCharCodes, tokType.PATTERN)) { - hasAnyLineBreak = true; + var args = exprInfo.match.slice(1); + var ret = exprInfo.expr.populate(self2, currentQuery, args); + if (ret === false) { + return false; + } else if (ret != null) { + currentQuery = ret; } } + remaining = exprInfo.remaining; + if (remaining.match(/^\s*$/)) { + break; + } } - }); - } - if (trackLines && !hasAnyLineBreak) { - warnings3.push({ - message: "Warning: No LINE_BREAKS Found.\n This Lexer has been defined to track line and column information,\n But none of the Token Types can be identified as matching a line terminator.\n See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \n for details.", - type: LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS - }); - } - return warnings3; - } - function cloneEmptyGroups(emptyGroups) { - const clonedResult = {}; - const groupKeys = keys_default(emptyGroups); - forEach_default(groupKeys, (currKey) => { - const currGroupValue = emptyGroups[currKey]; - if (isArray_default(currGroupValue)) { - clonedResult[currKey] = []; - } else { - throw Error("non exhaustive match"); - } - }); - return clonedResult; - } - function isCustomPattern(tokenType) { - const pattern = tokenType.PATTERN; - if (isRegExp_default(pattern)) { - return false; - } else if (isFunction_default(pattern)) { - return true; - } else if (has_default(pattern, "exec")) { - return true; - } else if (isString_default(pattern)) { - return false; - } else { - throw Error("non exhaustive match"); - } - } - function isShortPattern(pattern) { - if (isString_default(pattern) && pattern.length === 1) { - return pattern.charCodeAt(0); - } else { - return false; - } - } - function checkLineBreaksIssues(tokType, lineTerminatorCharCodes) { - if (has_default(tokType, "LINE_BREAKS")) { - return false; - } else { - if (isRegExp_default(tokType.PATTERN)) { - try { - canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN); - } catch (e3) { - return { - issue: LexerDefinitionErrorType.IDENTIFY_TERMINATOR, - errMsg: e3.message - }; + var lastQ = self2[self2.length - 1]; + if (self2.currentSubject != null) { + lastQ.subject = self2.currentSubject; } - return false; - } else if (isString_default(tokType.PATTERN)) { - return false; - } else if (isCustomPattern(tokType)) { - return { issue: LexerDefinitionErrorType.CUSTOM_LINE_BREAK }; - } else { - throw Error("non exhaustive match"); - } - } - } - function buildLineBreakIssueMessage(tokType, details) { - if (details.issue === LexerDefinitionErrorType.IDENTIFY_TERMINATOR) { - return `Warning: unable to identify line terminator usage in pattern. - The problem is in the <${tokType.name}> Token Type - Root cause: ${details.errMsg}. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`; - } else if (details.issue === LexerDefinitionErrorType.CUSTOM_LINE_BREAK) { - return `Warning: A Custom Token Pattern should specify the option. - The problem is in the <${tokType.name}> Token Type - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`; - } else { - throw Error("non exhaustive match"); - } - } - function getCharCodes(charsOrCodes) { - const charCodes = map_default(charsOrCodes, (numOrString) => { - if (isString_default(numOrString)) { - return numOrString.charCodeAt(0); - } else { - return numOrString; - } - }); - return charCodes; - } - function addToMapOfArrays(map5, key, value2) { - if (map5[key] === void 0) { - map5[key] = [value2]; - } else { - map5[key].push(value2); - } - } - function charCodeToOptimizedIndex(charCode) { - return charCode < minOptimizationVal ? charCode : charCodeToOptimizedIdxMap[charCode]; - } - function initCharCodeToOptimizedIndexMap() { - if (isEmpty_default(charCodeToOptimizedIdxMap)) { - charCodeToOptimizedIdxMap = new Array(65536); - for (let i2 = 0; i2 < 65536; i2++) { - charCodeToOptimizedIdxMap[i2] = i2 > 255 ? 255 + ~~(i2 / 255) : i2; - } - } - } - var PATTERN, DEFAULT_MODE, MODES, SUPPORT_STICKY, end_of_input, start_of_input, LineTerminatorOptimizedTester, minOptimizationVal, charCodeToOptimizedIdxMap; - var init_lexer = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer.js"() { - "use strict"; - init_api(); - init_lexer_public(); - init_lodash(); - init_api2(); - init_reg_exp(); - init_reg_exp_parser(); - PATTERN = "PATTERN"; - DEFAULT_MODE = "defaultMode"; - MODES = "modes"; - SUPPORT_STICKY = typeof new RegExp("(?:)").sticky === "boolean"; - __name(analyzeTokenTypes, "analyzeTokenTypes"); - __name(validatePatterns, "validatePatterns"); - __name(validateRegExpPattern, "validateRegExpPattern"); - __name(findMissingPatterns, "findMissingPatterns"); - __name(findInvalidPatterns, "findInvalidPatterns"); - end_of_input = /[^\\][$]/; - __name(findEndOfInputAnchor, "findEndOfInputAnchor"); - __name(findEmptyMatchRegExps, "findEmptyMatchRegExps"); - start_of_input = /[^\\[][\^]|^\^/; - __name(findStartOfInputAnchor, "findStartOfInputAnchor"); - __name(findUnsupportedFlags, "findUnsupportedFlags"); - __name(findDuplicatePatterns, "findDuplicatePatterns"); - __name(findInvalidGroupType, "findInvalidGroupType"); - __name(findModesThatDoNotExist, "findModesThatDoNotExist"); - __name(findUnreachablePatterns, "findUnreachablePatterns"); - __name(testTokenType, "testTokenType"); - __name(noMetaChar, "noMetaChar"); - __name(addStartOfInput, "addStartOfInput"); - __name(addStickyFlag, "addStickyFlag"); - __name(performRuntimeChecks, "performRuntimeChecks"); - __name(performWarningRuntimeChecks, "performWarningRuntimeChecks"); - __name(cloneEmptyGroups, "cloneEmptyGroups"); - __name(isCustomPattern, "isCustomPattern"); - __name(isShortPattern, "isShortPattern"); - LineTerminatorOptimizedTester = { - // implements /\n|\r\n?/g.test - test: /* @__PURE__ */ __name(function(text4) { - const len = text4.length; - for (let i2 = this.lastIndex; i2 < len; i2++) { - const c3 = text4.charCodeAt(i2); - if (c3 === 10) { - this.lastIndex = i2 + 1; - return true; - } else if (c3 === 13) { - if (text4.charCodeAt(i2 + 1) === 10) { - this.lastIndex = i2 + 2; - } else { - this.lastIndex = i2 + 1; - } - return true; - } + lastQ.edgeCount = self2.edgeCount; + lastQ.compoundCount = self2.compoundCount; + for (var i2 = 0; i2 < self2.length; i2++) { + var q3 = self2[i2]; + if (q3.compoundCount > 0 && q3.edgeCount > 0) { + warn("The selector `" + selector + "` is invalid because it uses both a compound selector and an edge selector"); + return false; + } + if (q3.edgeCount > 1) { + warn("The selector `" + selector + "` is invalid because it uses multiple edge selectors"); + return false; + } else if (q3.edgeCount === 1) { + warn("The selector `" + selector + "` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes."); } - return false; - }, "test"), - lastIndex: 0 - }; - __name(checkLineBreaksIssues, "checkLineBreaksIssues"); - __name(buildLineBreakIssueMessage, "buildLineBreakIssueMessage"); - __name(getCharCodes, "getCharCodes"); - __name(addToMapOfArrays, "addToMapOfArrays"); - minOptimizationVal = 256; - charCodeToOptimizedIdxMap = []; - __name(charCodeToOptimizedIndex, "charCodeToOptimizedIndex"); - __name(initCharCodeToOptimizedIndexMap, "initCharCodeToOptimizedIndexMap"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/tokens.js - function tokenStructuredMatcher(tokInstance, tokConstructor) { - const instanceType = tokInstance.tokenTypeIdx; - if (instanceType === tokConstructor.tokenTypeIdx) { - return true; - } else { - return tokConstructor.isParent === true && tokConstructor.categoryMatchesMap[instanceType] === true; - } - } - function tokenStructuredMatcherNoCategories(token2, tokType) { - return token2.tokenTypeIdx === tokType.tokenTypeIdx; - } - function augmentTokenTypes(tokenTypes) { - const tokenTypesAndParents = expandCategories(tokenTypes); - assignTokenDefaultProps(tokenTypesAndParents); - assignCategoriesMapProp(tokenTypesAndParents); - assignCategoriesTokensProp(tokenTypesAndParents); - forEach_default(tokenTypesAndParents, (tokType) => { - tokType.isParent = tokType.categoryMatches.length > 0; - }); - } - function expandCategories(tokenTypes) { - let result = clone_default2(tokenTypes); - let categories = tokenTypes; - let searching = true; - while (searching) { - categories = compact_default(flatten_default(map_default(categories, (currTokType) => currTokType.CATEGORIES))); - const newCategories = difference_default(categories, result); - result = result.concat(newCategories); - if (isEmpty_default(newCategories)) { - searching = false; - } else { - categories = newCategories; - } - } - return result; - } - function assignTokenDefaultProps(tokenTypes) { - forEach_default(tokenTypes, (currTokType) => { - if (!hasShortKeyProperty(currTokType)) { - tokenIdxToClass[tokenShortNameIdx] = currTokType; - currTokType.tokenTypeIdx = tokenShortNameIdx++; - } - if (hasCategoriesProperty(currTokType) && !isArray_default(currTokType.CATEGORIES)) { - currTokType.CATEGORIES = [currTokType.CATEGORIES]; - } - if (!hasCategoriesProperty(currTokType)) { - currTokType.CATEGORIES = []; - } - if (!hasExtendingTokensTypesProperty(currTokType)) { - currTokType.categoryMatches = []; - } - if (!hasExtendingTokensTypesMapProperty(currTokType)) { - currTokType.categoryMatchesMap = {}; - } - }); - } - function assignCategoriesTokensProp(tokenTypes) { - forEach_default(tokenTypes, (currTokType) => { - currTokType.categoryMatches = []; - forEach_default(currTokType.categoryMatchesMap, (val, key) => { - currTokType.categoryMatches.push(tokenIdxToClass[key].tokenTypeIdx); - }); - }); - } - function assignCategoriesMapProp(tokenTypes) { - forEach_default(tokenTypes, (currTokType) => { - singleAssignCategoriesToksMap([], currTokType); - }); - } - function singleAssignCategoriesToksMap(path4, nextNode) { - forEach_default(path4, (pathNode) => { - nextNode.categoryMatchesMap[pathNode.tokenTypeIdx] = true; - }); - forEach_default(nextNode.CATEGORIES, (nextCategory) => { - const newPath = path4.concat(nextNode); - if (!includes_default(newPath, nextCategory)) { - singleAssignCategoriesToksMap(newPath, nextCategory); - } - }); - } - function hasShortKeyProperty(tokType) { - return has_default(tokType, "tokenTypeIdx"); - } - function hasCategoriesProperty(tokType) { - return has_default(tokType, "CATEGORIES"); - } - function hasExtendingTokensTypesProperty(tokType) { - return has_default(tokType, "categoryMatches"); - } - function hasExtendingTokensTypesMapProperty(tokType) { - return has_default(tokType, "categoryMatchesMap"); - } - function isTokenType(tokType) { - return has_default(tokType, "tokenTypeIdx"); - } - var tokenShortNameIdx, tokenIdxToClass; - var init_tokens = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/tokens.js"() { - "use strict"; - init_lodash(); - __name(tokenStructuredMatcher, "tokenStructuredMatcher"); - __name(tokenStructuredMatcherNoCategories, "tokenStructuredMatcherNoCategories"); - tokenShortNameIdx = 1; - tokenIdxToClass = {}; - __name(augmentTokenTypes, "augmentTokenTypes"); - __name(expandCategories, "expandCategories"); - __name(assignTokenDefaultProps, "assignTokenDefaultProps"); - __name(assignCategoriesTokensProp, "assignCategoriesTokensProp"); - __name(assignCategoriesMapProp, "assignCategoriesMapProp"); - __name(singleAssignCategoriesToksMap, "singleAssignCategoriesToksMap"); - __name(hasShortKeyProperty, "hasShortKeyProperty"); - __name(hasCategoriesProperty, "hasCategoriesProperty"); - __name(hasExtendingTokensTypesProperty, "hasExtendingTokensTypesProperty"); - __name(hasExtendingTokensTypesMapProperty, "hasExtendingTokensTypesMapProperty"); - __name(isTokenType, "isTokenType"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer_errors_public.js - var defaultLexerErrorProvider; - var init_lexer_errors_public = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer_errors_public.js"() { - "use strict"; - defaultLexerErrorProvider = { - buildUnableToPopLexerModeMessage(token2) { - return `Unable to pop Lexer Mode after encountering Token ->${token2.image}<- The Mode Stack is empty`; - }, - buildUnexpectedCharactersMessage(fullText, startOffset, length2, line2, column2) { - return `unexpected character: ->${fullText.charAt(startOffset)}<- at offset: ${startOffset}, skipped ${length2} characters.`; } - }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer_public.js - var LexerDefinitionErrorType, DEFAULT_LEXER_CONFIG, Lexer2; - var init_lexer_public = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer_public.js"() { - "use strict"; - init_lexer(); - init_lodash(); - init_api2(); - init_tokens(); - init_lexer_errors_public(); - init_reg_exp_parser(); - (function(LexerDefinitionErrorType2) { - LexerDefinitionErrorType2[LexerDefinitionErrorType2["MISSING_PATTERN"] = 0] = "MISSING_PATTERN"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["INVALID_PATTERN"] = 1] = "INVALID_PATTERN"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["EOI_ANCHOR_FOUND"] = 2] = "EOI_ANCHOR_FOUND"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["UNSUPPORTED_FLAGS_FOUND"] = 3] = "UNSUPPORTED_FLAGS_FOUND"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["DUPLICATE_PATTERNS_FOUND"] = 4] = "DUPLICATE_PATTERNS_FOUND"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["INVALID_GROUP_TYPE_FOUND"] = 5] = "INVALID_GROUP_TYPE_FOUND"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["PUSH_MODE_DOES_NOT_EXIST"] = 6] = "PUSH_MODE_DOES_NOT_EXIST"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE"] = 7] = "MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY"] = 8] = "MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST"] = 9] = "MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED"] = 10] = "LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["SOI_ANCHOR_FOUND"] = 11] = "SOI_ANCHOR_FOUND"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["EMPTY_MATCH_PATTERN"] = 12] = "EMPTY_MATCH_PATTERN"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["NO_LINE_BREAKS_FLAGS"] = 13] = "NO_LINE_BREAKS_FLAGS"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["UNREACHABLE_PATTERN"] = 14] = "UNREACHABLE_PATTERN"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["IDENTIFY_TERMINATOR"] = 15] = "IDENTIFY_TERMINATOR"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["CUSTOM_LINE_BREAK"] = 16] = "CUSTOM_LINE_BREAK"; - LexerDefinitionErrorType2[LexerDefinitionErrorType2["MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"] = 17] = "MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"; - })(LexerDefinitionErrorType || (LexerDefinitionErrorType = {})); - DEFAULT_LEXER_CONFIG = { - deferDefinitionErrorsHandling: false, - positionTracking: "full", - lineTerminatorsPattern: /\n|\r\n?/g, - lineTerminatorCharacters: ["\n", "\r"], - ensureOptimizations: false, - safeMode: false, - errorMessageProvider: defaultLexerErrorProvider, - traceInitPerf: false, - skipValidations: false, - recoveryEnabled: true - }; - Object.freeze(DEFAULT_LEXER_CONFIG); - Lexer2 = class { - static { - __name(this, "Lexer"); + return true; + }, "parse"); + toString3 = /* @__PURE__ */ __name(function toString4() { + if (this.toStringCache != null) { + return this.toStringCache; } - constructor(lexerDefinition, config5 = DEFAULT_LEXER_CONFIG) { - this.lexerDefinition = lexerDefinition; - this.lexerDefinitionErrors = []; - this.lexerDefinitionWarning = []; - this.patternIdxToConfig = {}; - this.charCodeToPatternIdxToConfig = {}; - this.modes = []; - this.emptyGroups = {}; - this.trackStartLines = true; - this.trackEndLines = true; - this.hasCustom = false; - this.canModeBeOptimized = {}; - this.TRACE_INIT = (phaseDesc, phaseImpl) => { - if (this.traceInitPerf === true) { - this.traceInitIndent++; - const indent = new Array(this.traceInitIndent + 1).join(" "); - if (this.traceInitIndent < this.traceInitMaxIdent) { - console.log(`${indent}--> <${phaseDesc}>`); - } - const { time: time4, value: value2 } = timer2(phaseImpl); - const traceMethod = time4 > 10 ? console.warn : console.log; - if (this.traceInitIndent < this.traceInitMaxIdent) { - traceMethod(`${indent}<-- <${phaseDesc}> time: ${time4}ms`); - } - this.traceInitIndent--; - return value2; - } else { - return phaseImpl(); - } - }; - if (typeof config5 === "boolean") { - throw Error("The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported"); + var clean = /* @__PURE__ */ __name(function clean2(obj) { + if (obj == null) { + return ""; + } else { + return obj; } - this.config = assign_default({}, DEFAULT_LEXER_CONFIG, config5); - const traceInitVal = this.config.traceInitPerf; - if (traceInitVal === true) { - this.traceInitMaxIdent = Infinity; - this.traceInitPerf = true; - } else if (typeof traceInitVal === "number") { - this.traceInitMaxIdent = traceInitVal; - this.traceInitPerf = true; + }, "clean"); + var cleanVal = /* @__PURE__ */ __name(function cleanVal2(val) { + if (string(val)) { + return '"' + val + '"'; + } else { + return clean(val); } - this.traceInitIndent = -1; - this.TRACE_INIT("Lexer Constructor", () => { - let actualDefinition; - let hasOnlySingleMode = true; - this.TRACE_INIT("Lexer Config handling", () => { - if (this.config.lineTerminatorsPattern === DEFAULT_LEXER_CONFIG.lineTerminatorsPattern) { - this.config.lineTerminatorsPattern = LineTerminatorOptimizedTester; - } else { - if (this.config.lineTerminatorCharacters === DEFAULT_LEXER_CONFIG.lineTerminatorCharacters) { - throw Error("Error: Missing property on the Lexer config.\n For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS"); - } - } - if (config5.safeMode && config5.ensureOptimizations) { - throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.'); - } - this.trackStartLines = /full|onlyStart/i.test(this.config.positionTracking); - this.trackEndLines = /full/i.test(this.config.positionTracking); - if (isArray_default(lexerDefinition)) { - actualDefinition = { - modes: { defaultMode: clone_default2(lexerDefinition) }, - defaultMode: DEFAULT_MODE - }; - } else { - hasOnlySingleMode = false; - actualDefinition = clone_default2(lexerDefinition); - } - }); - if (this.config.skipValidations === false) { - this.TRACE_INIT("performRuntimeChecks", () => { - this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(performRuntimeChecks(actualDefinition, this.trackStartLines, this.config.lineTerminatorCharacters)); - }); - this.TRACE_INIT("performWarningRuntimeChecks", () => { - this.lexerDefinitionWarning = this.lexerDefinitionWarning.concat(performWarningRuntimeChecks(actualDefinition, this.trackStartLines, this.config.lineTerminatorCharacters)); - }); + }, "cleanVal"); + var space = /* @__PURE__ */ __name(function space2(val) { + return " " + val + " "; + }, "space"); + var checkToString = /* @__PURE__ */ __name(function checkToString2(check, subject) { + var type3 = check.type, value2 = check.value; + switch (type3) { + case Type2.GROUP: { + var group2 = clean(value2); + return group2.substring(0, group2.length - 1); } - actualDefinition.modes = actualDefinition.modes ? actualDefinition.modes : {}; - forEach_default(actualDefinition.modes, (currModeValue, currModeName) => { - actualDefinition.modes[currModeName] = reject_default(currModeValue, (currTokType) => isUndefined_default(currTokType)); - }); - const allModeNames = keys_default(actualDefinition.modes); - forEach_default(actualDefinition.modes, (currModDef, currModName) => { - this.TRACE_INIT(`Mode: <${currModName}> processing`, () => { - this.modes.push(currModName); - if (this.config.skipValidations === false) { - this.TRACE_INIT(`validatePatterns`, () => { - this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(validatePatterns(currModDef, allModeNames)); - }); - } - if (isEmpty_default(this.lexerDefinitionErrors)) { - augmentTokenTypes(currModDef); - let currAnalyzeResult; - this.TRACE_INIT(`analyzeTokenTypes`, () => { - currAnalyzeResult = analyzeTokenTypes(currModDef, { - lineTerminatorCharacters: this.config.lineTerminatorCharacters, - positionTracking: config5.positionTracking, - ensureOptimizations: config5.ensureOptimizations, - safeMode: config5.safeMode, - tracer: this.TRACE_INIT - }); - }); - this.patternIdxToConfig[currModName] = currAnalyzeResult.patternIdxToConfig; - this.charCodeToPatternIdxToConfig[currModName] = currAnalyzeResult.charCodeToPatternIdxToConfig; - this.emptyGroups = assign_default({}, this.emptyGroups, currAnalyzeResult.emptyGroups); - this.hasCustom = currAnalyzeResult.hasCustom || this.hasCustom; - this.canModeBeOptimized[currModName] = currAnalyzeResult.canBeOptimized; - } - }); - }); - this.defaultMode = actualDefinition.defaultMode; - if (!isEmpty_default(this.lexerDefinitionErrors) && !this.config.deferDefinitionErrorsHandling) { - const allErrMessages = map_default(this.lexerDefinitionErrors, (error3) => { - return error3.message; - }); - const allErrMessagesString = allErrMessages.join("-----------------------\n"); - throw new Error("Errors detected in definition of Lexer:\n" + allErrMessagesString); + case Type2.DATA_COMPARE: { + var field = check.field, operator = check.operator; + return "[" + field + space(clean(operator)) + cleanVal(value2) + "]"; } - forEach_default(this.lexerDefinitionWarning, (warningDescriptor) => { - PRINT_WARNING(warningDescriptor.message); - }); - this.TRACE_INIT("Choosing sub-methods implementations", () => { - if (SUPPORT_STICKY) { - this.chopInput = identity_default4; - this.match = this.matchWithTest; - } else { - this.updateLastIndex = noop_default2; - this.match = this.matchWithExec; - } - if (hasOnlySingleMode) { - this.handleModes = noop_default2; - } - if (this.trackStartLines === false) { - this.computeNewColumn = identity_default4; - } - if (this.trackEndLines === false) { - this.updateTokenEndLineColumnLocation = noop_default2; - } - if (/full/i.test(this.config.positionTracking)) { - this.createTokenInstance = this.createFullToken; - } else if (/onlyStart/i.test(this.config.positionTracking)) { - this.createTokenInstance = this.createStartOnlyToken; - } else if (/onlyOffset/i.test(this.config.positionTracking)) { - this.createTokenInstance = this.createOffsetOnlyToken; - } else { - throw Error(`Invalid config option: "${this.config.positionTracking}"`); - } - if (this.hasCustom) { - this.addToken = this.addTokenUsingPush; - this.handlePayload = this.handlePayloadWithCustom; - } else { - this.addToken = this.addTokenUsingMemberAccess; - this.handlePayload = this.handlePayloadNoCustom; - } - }); - this.TRACE_INIT("Failed Optimization Warnings", () => { - const unOptimizedModes = reduce_default(this.canModeBeOptimized, (cannotBeOptimized, canBeOptimized, modeName) => { - if (canBeOptimized === false) { - cannotBeOptimized.push(modeName); - } - return cannotBeOptimized; - }, []); - if (config5.ensureOptimizations && !isEmpty_default(unOptimizedModes)) { - throw Error(`Lexer Modes: < ${unOptimizedModes.join(", ")} > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`); - } - }); - this.TRACE_INIT("clearRegExpParserCache", () => { - clearRegExpParserCache(); - }); - this.TRACE_INIT("toFastProperties", () => { - toFastProperties(this); - }); - }); - } - tokenize(text4, initialMode = this.defaultMode) { - if (!isEmpty_default(this.lexerDefinitionErrors)) { - const allErrMessages = map_default(this.lexerDefinitionErrors, (error3) => { - return error3.message; - }); - const allErrMessagesString = allErrMessages.join("-----------------------\n"); - throw new Error("Unable to Tokenize because Errors detected in definition of Lexer:\n" + allErrMessagesString); - } - return this.tokenizeInternal(text4, initialMode); - } - // There is quite a bit of duplication between this and "tokenizeInternalLazy" - // This is intentional due to performance considerations. - // this method also used quite a bit of `!` none null assertions because it is too optimized - // for `tsc` to always understand it is "safe" - tokenizeInternal(text4, initialMode) { - let i2, j2, k2, matchAltImage, longerAlt, matchedImage, payload, altPayload, imageLength, group2, tokType, newToken, errLength, droppedChar, msg, match2; - const orgText = text4; - const orgLength = orgText.length; - let offset = 0; - let matchedTokensIndex = 0; - const guessedNumberOfTokens = this.hasCustom ? 0 : Math.floor(text4.length / 10); - const matchedTokens = new Array(guessedNumberOfTokens); - const errors = []; - let line2 = this.trackStartLines ? 1 : void 0; - let column2 = this.trackStartLines ? 1 : void 0; - const groups = cloneEmptyGroups(this.emptyGroups); - const trackLines = this.trackStartLines; - const lineTerminatorPattern = this.config.lineTerminatorsPattern; - let currModePatternsLength = 0; - let patternIdxToConfig = []; - let currCharCodeToPatternIdxToConfig = []; - const modeStack = []; - const emptyArray = []; - Object.freeze(emptyArray); - let getPossiblePatterns; - function getPossiblePatternsSlow() { - return patternIdxToConfig; - } - __name(getPossiblePatternsSlow, "getPossiblePatternsSlow"); - function getPossiblePatternsOptimized(charCode) { - const optimizedCharIdx = charCodeToOptimizedIndex(charCode); - const possiblePatterns = currCharCodeToPatternIdxToConfig[optimizedCharIdx]; - if (possiblePatterns === void 0) { - return emptyArray; - } else { - return possiblePatterns; + case Type2.DATA_BOOL: { + var _operator = check.operator, _field = check.field; + return "[" + clean(_operator) + _field + "]"; } - } - __name(getPossiblePatternsOptimized, "getPossiblePatternsOptimized"); - const pop_mode = /* @__PURE__ */ __name((popToken) => { - if (modeStack.length === 1 && // if we have both a POP_MODE and a PUSH_MODE this is in-fact a "transition" - // So no error should occur. - popToken.tokenType.PUSH_MODE === void 0) { - const msg2 = this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(popToken); - errors.push({ - offset: popToken.startOffset, - line: popToken.startLine, - column: popToken.startColumn, - length: popToken.image.length, - message: msg2 - }); - } else { - modeStack.pop(); - const newMode = last_default(modeStack); - patternIdxToConfig = this.patternIdxToConfig[newMode]; - currCharCodeToPatternIdxToConfig = this.charCodeToPatternIdxToConfig[newMode]; - currModePatternsLength = patternIdxToConfig.length; - const modeCanBeOptimized = this.canModeBeOptimized[newMode] && this.config.safeMode === false; - if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) { - getPossiblePatterns = getPossiblePatternsOptimized; - } else { - getPossiblePatterns = getPossiblePatternsSlow; - } + case Type2.DATA_EXIST: { + var _field2 = check.field; + return "[" + _field2 + "]"; } - }, "pop_mode"); - function push_mode(newMode) { - modeStack.push(newMode); - currCharCodeToPatternIdxToConfig = this.charCodeToPatternIdxToConfig[newMode]; - patternIdxToConfig = this.patternIdxToConfig[newMode]; - currModePatternsLength = patternIdxToConfig.length; - currModePatternsLength = patternIdxToConfig.length; - const modeCanBeOptimized = this.canModeBeOptimized[newMode] && this.config.safeMode === false; - if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) { - getPossiblePatterns = getPossiblePatternsOptimized; - } else { - getPossiblePatterns = getPossiblePatternsSlow; + case Type2.META_COMPARE: { + var _operator2 = check.operator, _field3 = check.field; + return "[[" + _field3 + space(clean(_operator2)) + cleanVal(value2) + "]]"; } - } - __name(push_mode, "push_mode"); - push_mode.call(this, initialMode); - let currConfig; - const recoveryEnabled = this.config.recoveryEnabled; - while (offset < orgLength) { - matchedImage = null; - const nextCharCode = orgText.charCodeAt(offset); - const chosenPatternIdxToConfig = getPossiblePatterns(nextCharCode); - const chosenPatternsLength = chosenPatternIdxToConfig.length; - for (i2 = 0; i2 < chosenPatternsLength; i2++) { - currConfig = chosenPatternIdxToConfig[i2]; - const currPattern = currConfig.pattern; - payload = null; - const singleCharCode = currConfig.short; - if (singleCharCode !== false) { - if (nextCharCode === singleCharCode) { - matchedImage = currPattern; - } - } else if (currConfig.isCustom === true) { - match2 = currPattern.exec(orgText, offset, matchedTokens, groups); - if (match2 !== null) { - matchedImage = match2[0]; - if (match2.payload !== void 0) { - payload = match2.payload; - } - } else { - matchedImage = null; - } - } else { - this.updateLastIndex(currPattern, offset); - matchedImage = this.match(currPattern, text4, offset); - } - if (matchedImage !== null) { - longerAlt = currConfig.longerAlt; - if (longerAlt !== void 0) { - const longerAltLength = longerAlt.length; - for (k2 = 0; k2 < longerAltLength; k2++) { - const longerAltConfig = patternIdxToConfig[longerAlt[k2]]; - const longerAltPattern = longerAltConfig.pattern; - altPayload = null; - if (longerAltConfig.isCustom === true) { - match2 = longerAltPattern.exec(orgText, offset, matchedTokens, groups); - if (match2 !== null) { - matchAltImage = match2[0]; - if (match2.payload !== void 0) { - altPayload = match2.payload; - } - } else { - matchAltImage = null; - } - } else { - this.updateLastIndex(longerAltPattern, offset); - matchAltImage = this.match(longerAltPattern, text4, offset); - } - if (matchAltImage && matchAltImage.length > matchedImage.length) { - matchedImage = matchAltImage; - payload = altPayload; - currConfig = longerAltConfig; - break; - } - } - } - break; - } + case Type2.STATE: { + return value2; } - if (matchedImage !== null) { - imageLength = matchedImage.length; - group2 = currConfig.group; - if (group2 !== void 0) { - tokType = currConfig.tokenTypeIdx; - newToken = this.createTokenInstance(matchedImage, offset, tokType, currConfig.tokenType, line2, column2, imageLength); - this.handlePayload(newToken, payload); - if (group2 === false) { - matchedTokensIndex = this.addToken(matchedTokens, matchedTokensIndex, newToken); - } else { - groups[group2].push(newToken); - } - } - text4 = this.chopInput(text4, imageLength); - offset = offset + imageLength; - column2 = this.computeNewColumn(column2, imageLength); - if (trackLines === true && currConfig.canLineTerminator === true) { - let numOfLTsInMatch = 0; - let foundTerminator; - let lastLTEndOffset; - lineTerminatorPattern.lastIndex = 0; - do { - foundTerminator = lineTerminatorPattern.test(matchedImage); - if (foundTerminator === true) { - lastLTEndOffset = lineTerminatorPattern.lastIndex - 1; - numOfLTsInMatch++; - } - } while (foundTerminator === true); - if (numOfLTsInMatch !== 0) { - line2 = line2 + numOfLTsInMatch; - column2 = imageLength - lastLTEndOffset; - this.updateTokenEndLineColumnLocation(newToken, group2, lastLTEndOffset, numOfLTsInMatch, line2, column2, imageLength); - } - } - this.handleModes(currConfig, pop_mode, push_mode, newToken); - } else { - const errorStartOffset = offset; - const errorLine = line2; - const errorColumn = column2; - let foundResyncPoint = recoveryEnabled === false; - while (foundResyncPoint === false && offset < orgLength) { - text4 = this.chopInput(text4, 1); - offset++; - for (j2 = 0; j2 < currModePatternsLength; j2++) { - const currConfig2 = patternIdxToConfig[j2]; - const currPattern = currConfig2.pattern; - const singleCharCode = currConfig2.short; - if (singleCharCode !== false) { - if (orgText.charCodeAt(offset) === singleCharCode) { - foundResyncPoint = true; - } - } else if (currConfig2.isCustom === true) { - foundResyncPoint = currPattern.exec(orgText, offset, matchedTokens, groups) !== null; - } else { - this.updateLastIndex(currPattern, offset); - foundResyncPoint = currPattern.exec(text4) !== null; - } - if (foundResyncPoint === true) { - break; - } - } - } - errLength = offset - errorStartOffset; - column2 = this.computeNewColumn(column2, errLength); - msg = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(orgText, errorStartOffset, errLength, errorLine, errorColumn); - errors.push({ - offset: errorStartOffset, - line: errorLine, - column: errorColumn, - length: errLength, - message: msg - }); - if (recoveryEnabled === false) { - break; - } + case Type2.ID: { + return "#" + value2; } - } - if (!this.hasCustom) { - matchedTokens.length = matchedTokensIndex; - } - return { - tokens: matchedTokens, - groups, - errors - }; - } - handleModes(config5, pop_mode, push_mode, newToken) { - if (config5.pop === true) { - const pushMode = config5.push; - pop_mode(newToken); - if (pushMode !== void 0) { - push_mode.call(this, pushMode); + case Type2.CLASS: { + return "." + value2; } - } else if (config5.push !== void 0) { - push_mode.call(this, config5.push); - } - } - chopInput(text4, length2) { - return text4.substring(length2); - } - updateLastIndex(regExp, newLastIndex) { - regExp.lastIndex = newLastIndex; - } - // TODO: decrease this under 600 characters? inspect stripping comments option in TSC compiler - updateTokenEndLineColumnLocation(newToken, group2, lastLTIdx, numOfLTsInMatch, line2, column2, imageLength) { - let lastCharIsLT, fixForEndingInLT; - if (group2 !== void 0) { - lastCharIsLT = lastLTIdx === imageLength - 1; - fixForEndingInLT = lastCharIsLT ? -1 : 0; - if (!(numOfLTsInMatch === 1 && lastCharIsLT === true)) { - newToken.endLine = line2 + fixForEndingInLT; - newToken.endColumn = column2 - 1 + -fixForEndingInLT; + case Type2.PARENT: + case Type2.CHILD: { + return queryToString(check.parent, subject) + space(">") + queryToString(check.child, subject); + } + case Type2.ANCESTOR: + case Type2.DESCENDANT: { + return queryToString(check.ancestor, subject) + " " + queryToString(check.descendant, subject); + } + case Type2.COMPOUND_SPLIT: { + var lhs = queryToString(check.left, subject); + var sub2 = queryToString(check.subject, subject); + var rhs = queryToString(check.right, subject); + return lhs + (lhs.length > 0 ? " " : "") + sub2 + rhs; } + case Type2.TRUE: { + return ""; + } + } + }, "checkToString"); + var queryToString = /* @__PURE__ */ __name(function queryToString2(query2, subject) { + return query2.checks.reduce(function(str3, chk, i3) { + return str3 + (subject === query2 && i3 === 0 ? "$" : "") + checkToString(chk, subject); + }, ""); + }, "queryToString"); + var str2 = ""; + for (var i2 = 0; i2 < this.length; i2++) { + var query = this[i2]; + str2 += queryToString(query, query.subject); + if (this.length > 1 && i2 < this.length - 1) { + str2 += ", "; } } - computeNewColumn(oldColumn, imageLength) { - return oldColumn + imageLength; + this.toStringCache = str2; + return str2; + }, "toString"); + parse$1 = { + parse, + toString: toString3 + }; + valCmp = /* @__PURE__ */ __name(function valCmp2(fieldVal, operator, value2) { + var matches33; + var isFieldStr = string(fieldVal); + var isFieldNum = number$1(fieldVal); + var isValStr = string(value2); + var fieldStr, valStr; + var caseInsensitive = false; + var notExpr = false; + var isIneqCmp = false; + if (operator.indexOf("!") >= 0) { + operator = operator.replace("!", ""); + notExpr = true; } - createOffsetOnlyToken(image, startOffset, tokenTypeIdx, tokenType) { - return { - image, - startOffset, - tokenTypeIdx, - tokenType - }; + if (operator.indexOf("@") >= 0) { + operator = operator.replace("@", ""); + caseInsensitive = true; } - createStartOnlyToken(image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn) { - return { - image, - startOffset, - startLine, - startColumn, - tokenTypeIdx, - tokenType - }; + if (isFieldStr || isValStr || caseInsensitive) { + fieldStr = !isFieldStr && !isFieldNum ? "" : "" + fieldVal; + valStr = "" + value2; } - createFullToken(image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn, imageLength) { - return { - image, - startOffset, - endOffset: startOffset + imageLength - 1, - startLine, - endLine: startLine, - startColumn, - endColumn: startColumn + imageLength - 1, - tokenTypeIdx, - tokenType - }; + if (caseInsensitive) { + fieldVal = fieldStr = fieldStr.toLowerCase(); + value2 = valStr = valStr.toLowerCase(); } - addTokenUsingPush(tokenVector, index, tokenToAdd) { - tokenVector.push(tokenToAdd); - return index; + switch (operator) { + case "*=": + matches33 = fieldStr.indexOf(valStr) >= 0; + break; + case "$=": + matches33 = fieldStr.indexOf(valStr, fieldStr.length - valStr.length) >= 0; + break; + case "^=": + matches33 = fieldStr.indexOf(valStr) === 0; + break; + case "=": + matches33 = fieldVal === value2; + break; + case ">": + isIneqCmp = true; + matches33 = fieldVal > value2; + break; + case ">=": + isIneqCmp = true; + matches33 = fieldVal >= value2; + break; + case "<": + isIneqCmp = true; + matches33 = fieldVal < value2; + break; + case "<=": + isIneqCmp = true; + matches33 = fieldVal <= value2; + break; + default: + matches33 = false; + break; } - addTokenUsingMemberAccess(tokenVector, index, tokenToAdd) { - tokenVector[index] = tokenToAdd; - index++; - return index; + if (notExpr && (fieldVal != null || !isIneqCmp)) { + matches33 = !matches33; } - handlePayloadNoCustom(token2, payload) { + return matches33; + }, "valCmp"); + boolCmp = /* @__PURE__ */ __name(function boolCmp2(fieldVal, operator) { + switch (operator) { + case "?": + return fieldVal ? true : false; + case "!": + return fieldVal ? false : true; + case "^": + return fieldVal === void 0; } - handlePayloadWithCustom(token2, payload) { - if (payload !== null) { - token2.payload = payload; - } + }, "boolCmp"); + existCmp = /* @__PURE__ */ __name(function existCmp2(fieldVal) { + return fieldVal !== void 0; + }, "existCmp"); + data$1 = /* @__PURE__ */ __name(function data2(ele, field) { + return ele.data(field); + }, "data"); + meta = /* @__PURE__ */ __name(function meta2(ele, field) { + return ele[field](); + }, "meta"); + match = []; + matches$1 = /* @__PURE__ */ __name(function matches30(query, ele) { + return query.checks.every(function(chk) { + return match[chk.type](chk, ele); + }); + }, "matches"); + match[Type2.GROUP] = function(check, ele) { + var group2 = check.value; + return group2 === "*" || group2 === ele.group(); + }; + match[Type2.STATE] = function(check, ele) { + var stateSelector = check.value; + return stateSelectorMatches(stateSelector, ele); + }; + match[Type2.ID] = function(check, ele) { + var id30 = check.value; + return ele.id() === id30; + }; + match[Type2.CLASS] = function(check, ele) { + var cls = check.value; + return ele.hasClass(cls); + }; + match[Type2.META_COMPARE] = function(check, ele) { + var field = check.field, operator = check.operator, value2 = check.value; + return valCmp(meta(ele, field), operator, value2); + }; + match[Type2.DATA_COMPARE] = function(check, ele) { + var field = check.field, operator = check.operator, value2 = check.value; + return valCmp(data$1(ele, field), operator, value2); + }; + match[Type2.DATA_BOOL] = function(check, ele) { + var field = check.field, operator = check.operator; + return boolCmp(data$1(ele, field), operator); + }; + match[Type2.DATA_EXIST] = function(check, ele) { + var field = check.field; + check.operator; + return existCmp(data$1(ele, field)); + }; + match[Type2.UNDIRECTED_EDGE] = function(check, ele) { + var qA = check.nodes[0]; + var qB = check.nodes[1]; + var src = ele.source(); + var tgt = ele.target(); + return matches$1(qA, src) && matches$1(qB, tgt) || matches$1(qB, src) && matches$1(qA, tgt); + }; + match[Type2.NODE_NEIGHBOR] = function(check, ele) { + return matches$1(check.node, ele) && ele.neighborhood().some(function(n2) { + return n2.isNode() && matches$1(check.neighbor, n2); + }); + }; + match[Type2.DIRECTED_EDGE] = function(check, ele) { + return matches$1(check.source, ele.source()) && matches$1(check.target, ele.target()); + }; + match[Type2.NODE_SOURCE] = function(check, ele) { + return matches$1(check.source, ele) && ele.outgoers().some(function(n2) { + return n2.isNode() && matches$1(check.target, n2); + }); + }; + match[Type2.NODE_TARGET] = function(check, ele) { + return matches$1(check.target, ele) && ele.incomers().some(function(n2) { + return n2.isNode() && matches$1(check.source, n2); + }); + }; + match[Type2.CHILD] = function(check, ele) { + return matches$1(check.child, ele) && matches$1(check.parent, ele.parent()); + }; + match[Type2.PARENT] = function(check, ele) { + return matches$1(check.parent, ele) && ele.children().some(function(c3) { + return matches$1(check.child, c3); + }); + }; + match[Type2.DESCENDANT] = function(check, ele) { + return matches$1(check.descendant, ele) && ele.ancestors().some(function(a2) { + return matches$1(check.ancestor, a2); + }); + }; + match[Type2.ANCESTOR] = function(check, ele) { + return matches$1(check.ancestor, ele) && ele.descendants().some(function(d3) { + return matches$1(check.descendant, d3); + }); + }; + match[Type2.COMPOUND_SPLIT] = function(check, ele) { + return matches$1(check.subject, ele) && matches$1(check.left, ele) && matches$1(check.right, ele); + }; + match[Type2.TRUE] = function() { + return true; + }; + match[Type2.COLLECTION] = function(check, ele) { + var collection4 = check.value; + return collection4.has(ele); + }; + match[Type2.FILTER] = function(check, ele) { + var filter6 = check.value; + return filter6(ele); + }; + filter3 = /* @__PURE__ */ __name(function filter4(collection4) { + var self2 = this; + if (self2.length === 1 && self2[0].checks.length === 1 && self2[0].checks[0].type === Type2.ID) { + return collection4.getElementById(self2[0].checks[0].value).collection(); } - matchWithTest(pattern, text4, offset) { - const found = pattern.test(text4); - if (found === true) { - return text4.substring(offset, pattern.lastIndex); + var selectorFunction = /* @__PURE__ */ __name(function selectorFunction2(element3) { + for (var j3 = 0; j3 < self2.length; j3++) { + var query = self2[j3]; + if (matches$1(query, element3)) { + return true; + } } - return null; + return false; + }, "selectorFunction"); + if (self2.text() == null) { + selectorFunction = /* @__PURE__ */ __name(function selectorFunction2() { + return true; + }, "selectorFunction"); } - matchWithExec(pattern, text4) { - const regExpArray = pattern.exec(text4); - return regExpArray !== null ? regExpArray[0] : null; + return collection4.filter(selectorFunction); + }, "filter"); + matches31 = /* @__PURE__ */ __name(function matches32(ele) { + var self2 = this; + for (var j3 = 0; j3 < self2.length; j3++) { + var query = self2[j3]; + if (matches$1(query, ele)) { + return true; + } } + return false; + }, "matches"); + matching = { + matches: matches31, + filter: filter3 }; - Lexer2.SKIPPED = "This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace."; - Lexer2.NA = /NOT_APPLICABLE/; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/tokens_public.js - function tokenLabel2(tokType) { - if (hasTokenLabel2(tokType)) { - return tokType.LABEL; - } else { - return tokType.name; - } - } - function hasTokenLabel2(obj) { - return isString_default(obj.LABEL) && obj.LABEL !== ""; - } - function createToken(config5) { - return createTokenInternal(config5); - } - function createTokenInternal(config5) { - const pattern = config5.pattern; - const tokenType = {}; - tokenType.name = config5.name; - if (!isUndefined_default(pattern)) { - tokenType.PATTERN = pattern; - } - if (has_default(config5, PARENT)) { - throw "The parent property is no longer supported.\nSee: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details."; - } - if (has_default(config5, CATEGORIES)) { - tokenType.CATEGORIES = config5[CATEGORIES]; - } - augmentTokenTypes([tokenType]); - if (has_default(config5, LABEL)) { - tokenType.LABEL = config5[LABEL]; - } - if (has_default(config5, GROUP)) { - tokenType.GROUP = config5[GROUP]; - } - if (has_default(config5, POP_MODE)) { - tokenType.POP_MODE = config5[POP_MODE]; - } - if (has_default(config5, PUSH_MODE)) { - tokenType.PUSH_MODE = config5[PUSH_MODE]; - } - if (has_default(config5, LONGER_ALT)) { - tokenType.LONGER_ALT = config5[LONGER_ALT]; - } - if (has_default(config5, LINE_BREAKS)) { - tokenType.LINE_BREAKS = config5[LINE_BREAKS]; - } - if (has_default(config5, START_CHARS_HINT)) { - tokenType.START_CHARS_HINT = config5[START_CHARS_HINT]; - } - return tokenType; - } - function createTokenInstance(tokType, image, startOffset, endOffset, startLine, endLine, startColumn, endColumn) { - return { - image, - startOffset, - endOffset, - startLine, - endLine, - startColumn, - endColumn, - tokenTypeIdx: tokType.tokenTypeIdx, - tokenType: tokType - }; - } - function tokenMatcher(token2, tokType) { - return tokenStructuredMatcher(token2, tokType); - } - var PARENT, CATEGORIES, LABEL, GROUP, PUSH_MODE, POP_MODE, LONGER_ALT, LINE_BREAKS, START_CHARS_HINT, EOF; - var init_tokens_public = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/tokens_public.js"() { - "use strict"; - init_lodash(); - init_lexer_public(); - init_tokens(); - __name(tokenLabel2, "tokenLabel"); - __name(hasTokenLabel2, "hasTokenLabel"); - PARENT = "parent"; - CATEGORIES = "categories"; - LABEL = "label"; - GROUP = "group"; - PUSH_MODE = "push_mode"; - POP_MODE = "pop_mode"; - LONGER_ALT = "longer_alt"; - LINE_BREAKS = "line_breaks"; - START_CHARS_HINT = "start_chars_hint"; - __name(createToken, "createToken"); - __name(createTokenInternal, "createTokenInternal"); - EOF = createToken({ name: "EOF", pattern: Lexer2.NA }); - augmentTokenTypes([EOF]); - __name(createTokenInstance, "createTokenInstance"); - __name(tokenMatcher, "tokenMatcher"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/errors_public.js - var defaultParserErrorProvider, defaultGrammarResolverErrorProvider, defaultGrammarValidatorErrorProvider; - var init_errors_public = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/errors_public.js"() { - "use strict"; - init_tokens_public(); - init_lodash(); - init_api3(); - defaultParserErrorProvider = { - buildMismatchTokenMessage({ expected, actual, previous, ruleName }) { - const hasLabel = hasTokenLabel2(expected); - const expectedMsg = hasLabel ? `--> ${tokenLabel2(expected)} <--` : `token of type --> ${expected.name} <--`; - const msg = `Expecting ${expectedMsg} but found --> '${actual.image}' <--`; - return msg; - }, - buildNotAllInputParsedMessage({ firstRedundant, ruleName }) { - return "Redundant input, expecting EOF but found: " + firstRedundant.image; - }, - buildNoViableAltMessage({ expectedPathsPerAlt, actual, previous, customUserDescription, ruleName }) { - const errPrefix = "Expecting: "; - const actualText = head_default(actual).image; - const errSuffix = "\nbut found: '" + actualText + "'"; - if (customUserDescription) { - return errPrefix + customUserDescription + errSuffix; - } else { - const allLookAheadPaths = reduce_default(expectedPathsPerAlt, (result, currAltPaths) => result.concat(currAltPaths), []); - const nextValidTokenSequences = map_default(allLookAheadPaths, (currPath) => `[${map_default(currPath, (currTokenType) => tokenLabel2(currTokenType)).join(", ")}]`); - const nextValidSequenceItems = map_default(nextValidTokenSequences, (itemMsg, idx) => ` ${idx + 1}. ${itemMsg}`); - const calculatedDescription = `one of these possible Token sequences: -${nextValidSequenceItems.join("\n")}`; - return errPrefix + calculatedDescription + errSuffix; - } - }, - buildEarlyExitMessage({ expectedIterationPaths, actual, customUserDescription, ruleName }) { - const errPrefix = "Expecting: "; - const actualText = head_default(actual).image; - const errSuffix = "\nbut found: '" + actualText + "'"; - if (customUserDescription) { - return errPrefix + customUserDescription + errSuffix; - } else { - const nextValidTokenSequences = map_default(expectedIterationPaths, (currPath) => `[${map_default(currPath, (currTokenType) => tokenLabel2(currTokenType)).join(",")}]`); - const calculatedDescription = `expecting at least one iteration which starts with one of these possible Token sequences:: - <${nextValidTokenSequences.join(" ,")}>`; - return errPrefix + calculatedDescription + errSuffix; + Selector = /* @__PURE__ */ __name(function Selector2(selector) { + this.inputText = selector; + this.currentSubject = null; + this.compoundCount = 0; + this.edgeCount = 0; + this.length = 0; + if (selector == null || string(selector) && selector.match(/^\s*$/)) ; + else if (elementOrCollection(selector)) { + this.addQuery({ + checks: [{ + type: Type2.COLLECTION, + value: selector.collection() + }] + }); + } else if (fn$6(selector)) { + this.addQuery({ + checks: [{ + type: Type2.FILTER, + value: selector + }] + }); + } else if (string(selector)) { + if (!this.parse(selector)) { + this.invalid = true; } + } else { + error("A selector must be created from a string; found "); } + }, "Selector"); + selfn = Selector.prototype; + [parse$1, matching].forEach(function(p3) { + return extend4(selfn, p3); + }); + selfn.text = function() { + return this.inputText; }; - Object.freeze(defaultParserErrorProvider); - defaultGrammarResolverErrorProvider = { - buildRuleNotFoundError(topLevelRule, undefinedRule) { - const msg = "Invalid grammar, reference to a rule which is not defined: ->" + undefinedRule.nonTerminalName + "<-\ninside top level rule: ->" + topLevelRule.name + "<-"; - return msg; - } + selfn.size = function() { + return this.length; }; - defaultGrammarValidatorErrorProvider = { - buildDuplicateFoundError(topLevelRule, duplicateProds) { - function getExtraProductionArgument2(prod) { - if (prod instanceof Terminal) { - return prod.terminalType.name; - } else if (prod instanceof NonTerminal) { - return prod.nonTerminalName; - } else { - return ""; - } - } - __name(getExtraProductionArgument2, "getExtraProductionArgument"); - const topLevelName = topLevelRule.name; - const duplicateProd = head_default(duplicateProds); - const index = duplicateProd.idx; - const dslName = getProductionDslName(duplicateProd); - const extraArgument = getExtraProductionArgument2(duplicateProd); - const hasExplicitIndex = index > 0; - let msg = `->${dslName}${hasExplicitIndex ? index : ""}<- ${extraArgument ? `with argument: ->${extraArgument}<-` : ""} - appears more than once (${duplicateProds.length} times) in the top level rule: ->${topLevelName}<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `; - msg = msg.replace(/[ \t]+/g, " "); - msg = msg.replace(/\s\s+/g, "\n"); - return msg; - }, - buildNamespaceConflictError(rule) { - const errMsg = `Namespace conflict found in grammar. -The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${rule.name}>. -To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`; - return errMsg; - }, - buildAlternationPrefixAmbiguityError(options3) { - const pathMsg = map_default(options3.prefixPath, (currTok) => tokenLabel2(currTok)).join(", "); - const occurrence = options3.alternation.idx === 0 ? "" : options3.alternation.idx; - const errMsg = `Ambiguous alternatives: <${options3.ambiguityIndices.join(" ,")}> due to common lookahead prefix -in inside <${options3.topLevelRule.name}> Rule, -<${pathMsg}> may appears as a prefix path in all these alternatives. -See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`; - return errMsg; - }, - buildAlternationAmbiguityError(options3) { - const pathMsg = map_default(options3.prefixPath, (currtok) => tokenLabel2(currtok)).join(", "); - const occurrence = options3.alternation.idx === 0 ? "" : options3.alternation.idx; - let currMessage = `Ambiguous Alternatives Detected: <${options3.ambiguityIndices.join(" ,")}> in inside <${options3.topLevelRule.name}> Rule, -<${pathMsg}> may appears as a prefix path in all these alternatives. -`; - currMessage = currMessage + `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`; - return currMessage; - }, - buildEmptyRepetitionError(options3) { - let dslName = getProductionDslName(options3.repetition); - if (options3.repetition.idx !== 0) { - dslName += options3.repetition.idx; - } - const errMsg = `The repetition <${dslName}> within Rule <${options3.topLevelRule.name}> can never consume any tokens. -This could lead to an infinite loop.`; - return errMsg; - }, - // TODO: remove - `errors_public` from nyc.config.js exclude - // once this method is fully removed from this file - buildTokenNameError(options3) { - return "deprecated"; - }, - buildEmptyAlternationError(options3) { - const errMsg = `Ambiguous empty alternative: <${options3.emptyChoiceIdx + 1}> in inside <${options3.topLevelRule.name}> Rule. -Only the last alternative may be an empty alternative.`; - return errMsg; - }, - buildTooManyAlternativesError(options3) { - const errMsg = `An Alternation cannot have more than 256 alternatives: - inside <${options3.topLevelRule.name}> Rule. - has ${options3.alternation.definition.length + 1} alternatives.`; - return errMsg; - }, - buildLeftRecursionError(options3) { - const ruleName = options3.topLevelRule.name; - const pathNames = map_default(options3.leftRecursionPath, (currRule) => currRule.name); - const leftRecursivePath = `${ruleName} --> ${pathNames.concat([ruleName]).join(" --> ")}`; - const errMsg = `Left Recursion found in grammar. -rule: <${ruleName}> can be invoked from itself (directly or indirectly) -without consuming any Tokens. The grammar path that causes this is: - ${leftRecursivePath} - To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`; - return errMsg; - }, - // TODO: remove - `errors_public` from nyc.config.js exclude - // once this method is fully removed from this file - buildInvalidRuleNameError(options3) { - return "deprecated"; - }, - buildDuplicateRuleNameError(options3) { - let ruleName; - if (options3.topLevelRule instanceof Rule) { - ruleName = options3.topLevelRule.name; - } else { - ruleName = options3.topLevelRule; - } - const errMsg = `Duplicate definition, rule: ->${ruleName}<- is already defined in the grammar: ->${options3.grammarName}<-`; - return errMsg; - } + selfn.eq = function(i2) { + return this[i2]; }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/resolver.js - function resolveGrammar(topLevels, errMsgProvider) { - const refResolver = new GastRefResolverVisitor(topLevels, errMsgProvider); - refResolver.resolveRefs(); - return refResolver.errors; - } - var GastRefResolverVisitor; - var init_resolver = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/resolver.js"() { - "use strict"; - init_parser(); - init_lodash(); - init_api3(); - __name(resolveGrammar, "resolveGrammar"); - GastRefResolverVisitor = class extends GAstVisitor { - static { - __name(this, "GastRefResolverVisitor"); - } - constructor(nameToTopRule, errMsgProvider) { - super(); - this.nameToTopRule = nameToTopRule; - this.errMsgProvider = errMsgProvider; - this.errors = []; - } - resolveRefs() { - forEach_default(values_default(this.nameToTopRule), (prod) => { - this.currTopLevel = prod; - prod.accept(this); - }); - } - visitNonTerminal(node2) { - const ref = this.nameToTopRule[node2.nonTerminalName]; - if (!ref) { - const msg = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, node2); - this.errors.push({ - message: msg, - type: ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF, - ruleName: this.currTopLevel.name, - unresolvedRefName: node2.nonTerminalName - }); - } else { - node2.referencedRule = ref; - } - } + selfn.sameText = function(otherSel) { + return !this.invalid && !otherSel.invalid && this.text() === otherSel.text(); }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/interpreter.js - function possiblePathsFrom(targetDef, maxLength, currPath = []) { - currPath = clone_default2(currPath); - let result = []; - let i2 = 0; - function remainingPathWith(nextDef) { - return nextDef.concat(drop_default(targetDef, i2 + 1)); - } - __name(remainingPathWith, "remainingPathWith"); - function getAlternativesForProd(definition) { - const alternatives = possiblePathsFrom(remainingPathWith(definition), maxLength, currPath); - return result.concat(alternatives); - } - __name(getAlternativesForProd, "getAlternativesForProd"); - while (currPath.length < maxLength && i2 < targetDef.length) { - const prod = targetDef[i2]; - if (prod instanceof Alternative) { - return getAlternativesForProd(prod.definition); - } else if (prod instanceof NonTerminal) { - return getAlternativesForProd(prod.definition); - } else if (prod instanceof Option2) { - result = getAlternativesForProd(prod.definition); - } else if (prod instanceof RepetitionMandatory) { - const newDef = prod.definition.concat([ - new Repetition({ - definition: prod.definition - }) - ]); - return getAlternativesForProd(newDef); - } else if (prod instanceof RepetitionMandatoryWithSeparator) { - const newDef = [ - new Alternative({ definition: prod.definition }), - new Repetition({ - definition: [new Terminal({ terminalType: prod.separator })].concat(prod.definition) - }) - ]; - return getAlternativesForProd(newDef); - } else if (prod instanceof RepetitionWithSeparator) { - const newDef = prod.definition.concat([ - new Repetition({ - definition: [new Terminal({ terminalType: prod.separator })].concat(prod.definition) - }) - ]); - result = getAlternativesForProd(newDef); - } else if (prod instanceof Repetition) { - const newDef = prod.definition.concat([ - new Repetition({ - definition: prod.definition - }) - ]); - result = getAlternativesForProd(newDef); - } else if (prod instanceof Alternation) { - forEach_default(prod.definition, (currAlt) => { - if (isEmpty_default(currAlt.definition) === false) { - result = getAlternativesForProd(currAlt.definition); - } - }); - return result; - } else if (prod instanceof Terminal) { - currPath.push(prod.terminalType); - } else { - throw Error("non exhaustive match"); - } - i2++; - } - result.push({ - partialPath: currPath, - suffixDef: drop_default(targetDef, i2) - }); - return result; - } - function nextPossibleTokensAfter(initialDef, tokenVector, tokMatcher, maxLookAhead) { - const EXIT_NON_TERMINAL = "EXIT_NONE_TERMINAL"; - const EXIT_NON_TERMINAL_ARR = [EXIT_NON_TERMINAL]; - const EXIT_ALTERNATIVE = "EXIT_ALTERNATIVE"; - let foundCompletePath = false; - const tokenVectorLength = tokenVector.length; - const minimalAlternativesIndex = tokenVectorLength - maxLookAhead - 1; - const result = []; - const possiblePaths = []; - possiblePaths.push({ - idx: -1, - def: initialDef, - ruleStack: [], - occurrenceStack: [] - }); - while (!isEmpty_default(possiblePaths)) { - const currPath = possiblePaths.pop(); - if (currPath === EXIT_ALTERNATIVE) { - if (foundCompletePath && last_default(possiblePaths).idx <= minimalAlternativesIndex) { - possiblePaths.pop(); - } - continue; - } - const currDef = currPath.def; - const currIdx = currPath.idx; - const currRuleStack = currPath.ruleStack; - const currOccurrenceStack = currPath.occurrenceStack; - if (isEmpty_default(currDef)) { - continue; - } - const prod = currDef[0]; - if (prod === EXIT_NON_TERMINAL) { - const nextPath = { - idx: currIdx, - def: drop_default(currDef), - ruleStack: dropRight_default(currRuleStack), - occurrenceStack: dropRight_default(currOccurrenceStack) - }; - possiblePaths.push(nextPath); - } else if (prod instanceof Terminal) { - if (currIdx < tokenVectorLength - 1) { - const nextIdx = currIdx + 1; - const actualToken = tokenVector[nextIdx]; - if (tokMatcher(actualToken, prod.terminalType)) { - const nextPath = { - idx: nextIdx, - def: drop_default(currDef), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPath); - } - } else if (currIdx === tokenVectorLength - 1) { - result.push({ - nextTokenType: prod.terminalType, - nextTokenOccurrence: prod.idx, - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack + selfn.addQuery = function(q3) { + this[this.length++] = q3; + }; + selfn.selector = selfn.toString; + elesfn$g = { + allAre: /* @__PURE__ */ __name(function allAre(selector) { + var selObj = new Selector(selector); + return this.every(function(ele) { + return selObj.matches(ele); }); - foundCompletePath = true; - } else { - throw Error("non exhaustive match"); - } - } else if (prod instanceof NonTerminal) { - const newRuleStack = clone_default2(currRuleStack); - newRuleStack.push(prod.nonTerminalName); - const newOccurrenceStack = clone_default2(currOccurrenceStack); - newOccurrenceStack.push(prod.idx); - const nextPath = { - idx: currIdx, - def: prod.definition.concat(EXIT_NON_TERMINAL_ARR, drop_default(currDef)), - ruleStack: newRuleStack, - occurrenceStack: newOccurrenceStack - }; - possiblePaths.push(nextPath); - } else if (prod instanceof Option2) { - const nextPathWithout = { - idx: currIdx, - def: drop_default(currDef), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWithout); - possiblePaths.push(EXIT_ALTERNATIVE); - const nextPathWith = { - idx: currIdx, - def: prod.definition.concat(drop_default(currDef)), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWith); - } else if (prod instanceof RepetitionMandatory) { - const secondIteration = new Repetition({ - definition: prod.definition, - idx: prod.idx - }); - const nextDef = prod.definition.concat([secondIteration], drop_default(currDef)); - const nextPath = { - idx: currIdx, - def: nextDef, - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPath); - } else if (prod instanceof RepetitionMandatoryWithSeparator) { - const separatorGast = new Terminal({ - terminalType: prod.separator - }); - const secondIteration = new Repetition({ - definition: [separatorGast].concat(prod.definition), - idx: prod.idx - }); - const nextDef = prod.definition.concat([secondIteration], drop_default(currDef)); - const nextPath = { - idx: currIdx, - def: nextDef, - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPath); - } else if (prod instanceof RepetitionWithSeparator) { - const nextPathWithout = { - idx: currIdx, - def: drop_default(currDef), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWithout); - possiblePaths.push(EXIT_ALTERNATIVE); - const separatorGast = new Terminal({ - terminalType: prod.separator - }); - const nthRepetition = new Repetition({ - definition: [separatorGast].concat(prod.definition), - idx: prod.idx - }); - const nextDef = prod.definition.concat([nthRepetition], drop_default(currDef)); - const nextPathWith = { - idx: currIdx, - def: nextDef, - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWith); - } else if (prod instanceof Repetition) { - const nextPathWithout = { - idx: currIdx, - def: drop_default(currDef), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWithout); - possiblePaths.push(EXIT_ALTERNATIVE); - const nthRepetition = new Repetition({ - definition: prod.definition, - idx: prod.idx - }); - const nextDef = prod.definition.concat([nthRepetition], drop_default(currDef)); - const nextPathWith = { - idx: currIdx, - def: nextDef, - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWith); - } else if (prod instanceof Alternation) { - for (let i2 = prod.definition.length - 1; i2 >= 0; i2--) { - const currAlt = prod.definition[i2]; - const currAltPath = { - idx: currIdx, - def: currAlt.definition.concat(drop_default(currDef)), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(currAltPath); - possiblePaths.push(EXIT_ALTERNATIVE); - } - } else if (prod instanceof Alternative) { - possiblePaths.push({ - idx: currIdx, - def: prod.definition.concat(drop_default(currDef)), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }); - } else if (prod instanceof Rule) { - possiblePaths.push(expandTopLevelRule(prod, currIdx, currRuleStack, currOccurrenceStack)); - } else { - throw Error("non exhaustive match"); - } - } - return result; - } - function expandTopLevelRule(topRule, currIdx, currRuleStack, currOccurrenceStack) { - const newRuleStack = clone_default2(currRuleStack); - newRuleStack.push(topRule.name); - const newCurrOccurrenceStack = clone_default2(currOccurrenceStack); - newCurrOccurrenceStack.push(1); - return { - idx: currIdx, - def: topRule.definition, - ruleStack: newRuleStack, - occurrenceStack: newCurrOccurrenceStack - }; - } - var AbstractNextPossibleTokensWalker, NextAfterTokenWalker, AbstractNextTerminalAfterProductionWalker, NextTerminalAfterManyWalker, NextTerminalAfterManySepWalker, NextTerminalAfterAtLeastOneWalker, NextTerminalAfterAtLeastOneSepWalker; - var init_interpreter = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/interpreter.js"() { - "use strict"; - init_lodash(); - init_first2(); - init_rest(); - init_api3(); - AbstractNextPossibleTokensWalker = class extends RestWalker { - static { - __name(this, "AbstractNextPossibleTokensWalker"); - } - constructor(topProd, path4) { - super(); - this.topProd = topProd; - this.path = path4; - this.possibleTokTypes = []; - this.nextProductionName = ""; - this.nextProductionOccurrence = 0; - this.found = false; - this.isAtEndOfPath = false; - } - startWalking() { - this.found = false; - if (this.path.ruleStack[0] !== this.topProd.name) { - throw Error("The path does not start with the walker's top Rule!"); + }, "allAre"), + is: /* @__PURE__ */ __name(function is(selector) { + var selObj = new Selector(selector); + return this.some(function(ele) { + return selObj.matches(ele); + }); + }, "is"), + some: /* @__PURE__ */ __name(function some2(fn3, thisArg) { + for (var i2 = 0; i2 < this.length; i2++) { + var ret = !thisArg ? fn3(this[i2], i2, this) : fn3.apply(thisArg, [this[i2], i2, this]); + if (ret) { + return true; + } } - this.ruleStack = clone_default2(this.path.ruleStack).reverse(); - this.occurrenceStack = clone_default2(this.path.occurrenceStack).reverse(); - this.ruleStack.pop(); - this.occurrenceStack.pop(); - this.updateExpectedNext(); - this.walk(this.topProd); - return this.possibleTokTypes; - } - walk(prod, prevRest = []) { - if (!this.found) { - super.walk(prod, prevRest); + return false; + }, "some"), + every: /* @__PURE__ */ __name(function every2(fn3, thisArg) { + for (var i2 = 0; i2 < this.length; i2++) { + var ret = !thisArg ? fn3(this[i2], i2, this) : fn3.apply(thisArg, [this[i2], i2, this]); + if (!ret) { + return false; + } } - } - walkProdRef(refProd, currRest, prevRest) { - if (refProd.referencedRule.name === this.nextProductionName && refProd.idx === this.nextProductionOccurrence) { - const fullRest = currRest.concat(prevRest); - this.updateExpectedNext(); - this.walk(refProd.referencedRule, fullRest); + return true; + }, "every"), + same: /* @__PURE__ */ __name(function same(collection4) { + if (this === collection4) { + return true; } - } - updateExpectedNext() { - if (isEmpty_default(this.ruleStack)) { - this.nextProductionName = ""; - this.nextProductionOccurrence = 0; - this.isAtEndOfPath = true; - } else { - this.nextProductionName = this.ruleStack.pop(); - this.nextProductionOccurrence = this.occurrenceStack.pop(); + collection4 = this.cy().collection(collection4); + var thisLength = this.length; + var collectionLength = collection4.length; + if (thisLength !== collectionLength) { + return false; } - } - }; - NextAfterTokenWalker = class extends AbstractNextPossibleTokensWalker { - static { - __name(this, "NextAfterTokenWalker"); - } - constructor(topProd, path4) { - super(topProd, path4); - this.path = path4; - this.nextTerminalName = ""; - this.nextTerminalOccurrence = 0; - this.nextTerminalName = this.path.lastTok.name; - this.nextTerminalOccurrence = this.path.lastTokOccurrence; - } - walkTerminal(terminal, currRest, prevRest) { - if (this.isAtEndOfPath && terminal.terminalType.name === this.nextTerminalName && terminal.idx === this.nextTerminalOccurrence && !this.found) { - const fullRest = currRest.concat(prevRest); - const restProd = new Alternative({ definition: fullRest }); - this.possibleTokTypes = first(restProd); - this.found = true; + if (thisLength === 1) { + return this[0] === collection4[0]; } - } - }; - AbstractNextTerminalAfterProductionWalker = class extends RestWalker { - static { - __name(this, "AbstractNextTerminalAfterProductionWalker"); - } - constructor(topRule, occurrence) { - super(); - this.topRule = topRule; - this.occurrence = occurrence; - this.result = { - token: void 0, - occurrence: void 0, - isEndOfRule: void 0 - }; - } - startWalking() { - this.walk(this.topRule); - return this.result; - } + return this.every(function(ele) { + return collection4.hasElementWithId(ele.id()); + }); + }, "same"), + anySame: /* @__PURE__ */ __name(function anySame(collection4) { + collection4 = this.cy().collection(collection4); + return this.some(function(ele) { + return collection4.hasElementWithId(ele.id()); + }); + }, "anySame"), + allAreNeighbors: /* @__PURE__ */ __name(function allAreNeighbors(collection4) { + collection4 = this.cy().collection(collection4); + var nhood = this.neighborhood(); + return collection4.every(function(ele) { + return nhood.hasElementWithId(ele.id()); + }); + }, "allAreNeighbors"), + contains: /* @__PURE__ */ __name(function contains3(collection4) { + collection4 = this.cy().collection(collection4); + var self2 = this; + return collection4.every(function(ele) { + return self2.hasElementWithId(ele.id()); + }); + }, "contains") }; - NextTerminalAfterManyWalker = class extends AbstractNextTerminalAfterProductionWalker { - static { - __name(this, "NextTerminalAfterManyWalker"); - } - walkMany(manyProd, currRest, prevRest) { - if (manyProd.idx === this.occurrence) { - const firstAfterMany = head_default(currRest.concat(prevRest)); - this.result.isEndOfRule = firstAfterMany === void 0; - if (firstAfterMany instanceof Terminal) { - this.result.token = firstAfterMany.terminalType; - this.result.occurrence = firstAfterMany.idx; + elesfn$g.allAreNeighbours = elesfn$g.allAreNeighbors; + elesfn$g.has = elesfn$g.contains; + elesfn$g.equal = elesfn$g.equals = elesfn$g.same; + cache = /* @__PURE__ */ __name(function cache2(fn3, name) { + return /* @__PURE__ */ __name(function traversalCache(arg1, arg2, arg3, arg4) { + var selectorOrEles = arg1; + var eles = this; + var key; + if (selectorOrEles == null) { + key = ""; + } else if (elementOrCollection(selectorOrEles) && selectorOrEles.length === 1) { + key = selectorOrEles.id(); + } + if (eles.length === 1 && key) { + var _p = eles[0]._private; + var tch = _p.traversalCache = _p.traversalCache || {}; + var ch = tch[name] = tch[name] || []; + var hash = hashString(key); + var cacheHit = ch[hash]; + if (cacheHit) { + return cacheHit; + } else { + return ch[hash] = fn3.call(eles, arg1, arg2, arg3, arg4); } } else { - super.walkMany(manyProd, currRest, prevRest); + return fn3.call(eles, arg1, arg2, arg3, arg4); } - } - }; - NextTerminalAfterManySepWalker = class extends AbstractNextTerminalAfterProductionWalker { - static { - __name(this, "NextTerminalAfterManySepWalker"); - } - walkManySep(manySepProd, currRest, prevRest) { - if (manySepProd.idx === this.occurrence) { - const firstAfterManySep = head_default(currRest.concat(prevRest)); - this.result.isEndOfRule = firstAfterManySep === void 0; - if (firstAfterManySep instanceof Terminal) { - this.result.token = firstAfterManySep.terminalType; - this.result.occurrence = firstAfterManySep.idx; + }, "traversalCache"); + }, "cache"); + elesfn$f = { + parent: /* @__PURE__ */ __name(function parent(selector) { + var parents3 = []; + if (this.length === 1) { + var parent4 = this[0]._private.parent; + if (parent4) { + return parent4; } - } else { - super.walkManySep(manySepProd, currRest, prevRest); } - } - }; - NextTerminalAfterAtLeastOneWalker = class extends AbstractNextTerminalAfterProductionWalker { - static { - __name(this, "NextTerminalAfterAtLeastOneWalker"); - } - walkAtLeastOne(atLeastOneProd, currRest, prevRest) { - if (atLeastOneProd.idx === this.occurrence) { - const firstAfterAtLeastOne = head_default(currRest.concat(prevRest)); - this.result.isEndOfRule = firstAfterAtLeastOne === void 0; - if (firstAfterAtLeastOne instanceof Terminal) { - this.result.token = firstAfterAtLeastOne.terminalType; - this.result.occurrence = firstAfterAtLeastOne.idx; + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + var _parent = ele._private.parent; + if (_parent) { + parents3.push(_parent); } - } else { - super.walkAtLeastOne(atLeastOneProd, currRest, prevRest); } - } - }; - NextTerminalAfterAtLeastOneSepWalker = class extends AbstractNextTerminalAfterProductionWalker { - static { - __name(this, "NextTerminalAfterAtLeastOneSepWalker"); - } - walkAtLeastOneSep(atleastOneSepProd, currRest, prevRest) { - if (atleastOneSepProd.idx === this.occurrence) { - const firstAfterfirstAfterAtLeastOneSep = head_default(currRest.concat(prevRest)); - this.result.isEndOfRule = firstAfterfirstAfterAtLeastOneSep === void 0; - if (firstAfterfirstAfterAtLeastOneSep instanceof Terminal) { - this.result.token = firstAfterfirstAfterAtLeastOneSep.terminalType; - this.result.occurrence = firstAfterfirstAfterAtLeastOneSep.idx; + return this.spawn(parents3, true).filter(selector); + }, "parent"), + parents: /* @__PURE__ */ __name(function parents2(selector) { + var parents3 = []; + var eles = this.parent(); + while (eles.nonempty()) { + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + parents3.push(ele); } - } else { - super.walkAtLeastOneSep(atleastOneSepProd, currRest, prevRest); + eles = eles.parent(); } - } - }; - __name(possiblePathsFrom, "possiblePathsFrom"); - __name(nextPossibleTokensAfter, "nextPossibleTokensAfter"); - __name(expandTopLevelRule, "expandTopLevelRule"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/lookahead.js - function getProdType(prod) { - if (prod instanceof Option2 || prod === "Option") { - return PROD_TYPE.OPTION; - } else if (prod instanceof Repetition || prod === "Repetition") { - return PROD_TYPE.REPETITION; - } else if (prod instanceof RepetitionMandatory || prod === "RepetitionMandatory") { - return PROD_TYPE.REPETITION_MANDATORY; - } else if (prod instanceof RepetitionMandatoryWithSeparator || prod === "RepetitionMandatoryWithSeparator") { - return PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR; - } else if (prod instanceof RepetitionWithSeparator || prod === "RepetitionWithSeparator") { - return PROD_TYPE.REPETITION_WITH_SEPARATOR; - } else if (prod instanceof Alternation || prod === "Alternation") { - return PROD_TYPE.ALTERNATION; - } else { - throw Error("non exhaustive match"); - } - } - function getLookaheadPaths(options3) { - const { occurrence, rule, prodType, maxLookahead } = options3; - const type3 = getProdType(prodType); - if (type3 === PROD_TYPE.ALTERNATION) { - return getLookaheadPathsForOr(occurrence, rule, maxLookahead); - } else { - return getLookaheadPathsForOptionalProd(occurrence, rule, type3, maxLookahead); - } - } - function buildLookaheadFuncForOr(occurrence, ruleGrammar, maxLookahead, hasPredicates, dynamicTokensEnabled, laFuncBuilder) { - const lookAheadPaths = getLookaheadPathsForOr(occurrence, ruleGrammar, maxLookahead); - const tokenMatcher2 = areTokenCategoriesNotUsed(lookAheadPaths) ? tokenStructuredMatcherNoCategories : tokenStructuredMatcher; - return laFuncBuilder(lookAheadPaths, hasPredicates, tokenMatcher2, dynamicTokensEnabled); - } - function buildLookaheadFuncForOptionalProd(occurrence, ruleGrammar, k2, dynamicTokensEnabled, prodType, lookaheadBuilder) { - const lookAheadPaths = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k2); - const tokenMatcher2 = areTokenCategoriesNotUsed(lookAheadPaths) ? tokenStructuredMatcherNoCategories : tokenStructuredMatcher; - return lookaheadBuilder(lookAheadPaths[0], tokenMatcher2, dynamicTokensEnabled); - } - function buildAlternativesLookAheadFunc(alts, hasPredicates, tokenMatcher2, dynamicTokensEnabled) { - const numOfAlts = alts.length; - const areAllOneTokenLookahead = every_default(alts, (currAlt) => { - return every_default(currAlt, (currPath) => { - return currPath.length === 1; - }); - }); - if (hasPredicates) { - return function(orAlts) { - const predicates = map_default(orAlts, (currAlt) => currAlt.GATE); - for (let t4 = 0; t4 < numOfAlts; t4++) { - const currAlt = alts[t4]; - const currNumOfPaths = currAlt.length; - const currPredicate = predicates[t4]; - if (currPredicate !== void 0 && currPredicate.call(this) === false) { - continue; + return this.spawn(parents3, true).filter(selector); + }, "parents"), + commonAncestors: /* @__PURE__ */ __name(function commonAncestors(selector) { + var ancestors; + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + var parents3 = ele.parents(); + ancestors = ancestors || parents3; + ancestors = ancestors.intersect(parents3); } - nextPath: for (let j2 = 0; j2 < currNumOfPaths; j2++) { - const currPath = currAlt[j2]; - const currPathLength = currPath.length; - for (let i2 = 0; i2 < currPathLength; i2++) { - const nextToken = this.LA(i2 + 1); - if (tokenMatcher2(nextToken, currPath[i2]) === false) { - continue nextPath; - } + return ancestors.filter(selector); + }, "commonAncestors"), + orphans: /* @__PURE__ */ __name(function orphans(selector) { + return this.stdFilter(function(ele) { + return ele.isOrphan(); + }).filter(selector); + }, "orphans"), + nonorphans: /* @__PURE__ */ __name(function nonorphans(selector) { + return this.stdFilter(function(ele) { + return ele.isChild(); + }).filter(selector); + }, "nonorphans"), + children: cache(function(selector) { + var children2 = []; + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + var eleChildren = ele._private.children; + for (var j3 = 0; j3 < eleChildren.length; j3++) { + children2.push(eleChildren[j3]); } - return t4; } - } - return void 0; - }; - } else if (areAllOneTokenLookahead && !dynamicTokensEnabled) { - const singleTokenAlts = map_default(alts, (currAlt) => { - return flatten_default(currAlt); - }); - const choiceToAlt = reduce_default(singleTokenAlts, (result, currAlt, idx) => { - forEach_default(currAlt, (currTokType) => { - if (!has_default(result, currTokType.tokenTypeIdx)) { - result[currTokType.tokenTypeIdx] = idx; + return this.spawn(children2, true).filter(selector); + }, "children"), + siblings: /* @__PURE__ */ __name(function siblings(selector) { + return this.parent().children().not(this).filter(selector); + }, "siblings"), + isParent: /* @__PURE__ */ __name(function isParent() { + var ele = this[0]; + if (ele) { + return ele.isNode() && ele._private.children.length !== 0; } - forEach_default(currTokType.categoryMatches, (currExtendingType) => { - if (!has_default(result, currExtendingType)) { - result[currExtendingType] = idx; - } - }); - }); - return result; - }, {}); - return function() { - const nextToken = this.LA(1); - return choiceToAlt[nextToken.tokenTypeIdx]; - }; - } else { - return function() { - for (let t4 = 0; t4 < numOfAlts; t4++) { - const currAlt = alts[t4]; - const currNumOfPaths = currAlt.length; - nextPath: for (let j2 = 0; j2 < currNumOfPaths; j2++) { - const currPath = currAlt[j2]; - const currPathLength = currPath.length; - for (let i2 = 0; i2 < currPathLength; i2++) { - const nextToken = this.LA(i2 + 1); - if (tokenMatcher2(nextToken, currPath[i2]) === false) { - continue nextPath; + }, "isParent"), + isChildless: /* @__PURE__ */ __name(function isChildless() { + var ele = this[0]; + if (ele) { + return ele.isNode() && ele._private.children.length === 0; + } + }, "isChildless"), + isChild: /* @__PURE__ */ __name(function isChild() { + var ele = this[0]; + if (ele) { + return ele.isNode() && ele._private.parent != null; + } + }, "isChild"), + isOrphan: /* @__PURE__ */ __name(function isOrphan() { + var ele = this[0]; + if (ele) { + return ele.isNode() && ele._private.parent == null; + } + }, "isOrphan"), + descendants: /* @__PURE__ */ __name(function descendants2(selector) { + var elements2 = []; + function add3(eles) { + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + elements2.push(ele); + if (ele.children().nonempty()) { + add3(ele.children()); } } - return t4; } - } - return void 0; + __name(add3, "add"); + add3(this.children()); + return this.spawn(elements2, true).filter(selector); + }, "descendants") }; - } - } - function buildSingleAlternativeLookaheadFunction(alt, tokenMatcher2, dynamicTokensEnabled) { - const areAllOneTokenLookahead = every_default(alt, (currPath) => { - return currPath.length === 1; - }); - const numOfPaths = alt.length; - if (areAllOneTokenLookahead && !dynamicTokensEnabled) { - const singleTokensTypes = flatten_default(alt); - if (singleTokensTypes.length === 1 && isEmpty_default(singleTokensTypes[0].categoryMatches)) { - const expectedTokenType = singleTokensTypes[0]; - const expectedTokenUniqueKey = expectedTokenType.tokenTypeIdx; - return function() { - return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey; - }; - } else { - const choiceToAlt = reduce_default(singleTokensTypes, (result, currTokType, idx) => { - result[currTokType.tokenTypeIdx] = true; - forEach_default(currTokType.categoryMatches, (currExtendingType) => { - result[currExtendingType] = true; - }); - return result; - }, []); - return function() { - const nextToken = this.LA(1); - return choiceToAlt[nextToken.tokenTypeIdx] === true; - }; - } - } else { - return function() { - nextPath: for (let j2 = 0; j2 < numOfPaths; j2++) { - const currPath = alt[j2]; - const currPathLength = currPath.length; - for (let i2 = 0; i2 < currPathLength; i2++) { - const nextToken = this.LA(i2 + 1); - if (tokenMatcher2(nextToken, currPath[i2]) === false) { - continue nextPath; + __name(forEachCompound, "forEachCompound"); + __name(addChildren, "addChildren"); + elesfn$f.forEachDown = function(fn3) { + var includeSelf = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + return forEachCompound(this, fn3, includeSelf, addChildren); + }; + __name(addParent, "addParent"); + elesfn$f.forEachUp = function(fn3) { + var includeSelf = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + return forEachCompound(this, fn3, includeSelf, addParent); + }; + __name(addParentAndChildren, "addParentAndChildren"); + elesfn$f.forEachUpAndDown = function(fn3) { + var includeSelf = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + return forEachCompound(this, fn3, includeSelf, addParentAndChildren); + }; + elesfn$f.ancestors = elesfn$f.parents; + fn$5 = elesfn$e = { + data: define2.data({ + field: "data", + bindingEvent: "data", + allowBinding: true, + allowSetting: true, + settingEvent: "data", + settingTriggersEvent: true, + triggerFnName: "trigger", + allowGetting: true, + immutableKeys: { + "id": true, + "source": true, + "target": true, + "parent": true + }, + updateStyle: true + }), + removeData: define2.removeData({ + field: "data", + event: "data", + triggerFnName: "trigger", + triggerEvent: true, + immutableKeys: { + "id": true, + "source": true, + "target": true, + "parent": true + }, + updateStyle: true + }), + scratch: define2.data({ + field: "scratch", + bindingEvent: "scratch", + allowBinding: true, + allowSetting: true, + settingEvent: "scratch", + settingTriggersEvent: true, + triggerFnName: "trigger", + allowGetting: true, + updateStyle: true + }), + removeScratch: define2.removeData({ + field: "scratch", + event: "scratch", + triggerFnName: "trigger", + triggerEvent: true, + updateStyle: true + }), + rscratch: define2.data({ + field: "rscratch", + allowBinding: false, + allowSetting: true, + settingTriggersEvent: false, + allowGetting: true + }), + removeRscratch: define2.removeData({ + field: "rscratch", + triggerEvent: false + }), + id: /* @__PURE__ */ __name(function id3() { + var ele = this[0]; + if (ele) { + return ele._private.data.id; + } + }, "id") + }; + fn$5.attr = fn$5.data; + fn$5.removeAttr = fn$5.removeData; + data3 = elesfn$e; + elesfn$d = {}; + __name(defineDegreeFunction, "defineDegreeFunction"); + extend4(elesfn$d, { + degree: defineDegreeFunction(function(node2, edge) { + if (edge.source().same(edge.target())) { + return 2; + } else { + return 1; + } + }), + indegree: defineDegreeFunction(function(node2, edge) { + if (edge.target().same(node2)) { + return 1; + } else { + return 0; + } + }), + outdegree: defineDegreeFunction(function(node2, edge) { + if (edge.source().same(node2)) { + return 1; + } else { + return 0; + } + }) + }); + __name(defineDegreeBoundsFunction, "defineDegreeBoundsFunction"); + extend4(elesfn$d, { + minDegree: defineDegreeBoundsFunction("degree", function(degree, min9) { + return degree < min9; + }), + maxDegree: defineDegreeBoundsFunction("degree", function(degree, max10) { + return degree > max10; + }), + minIndegree: defineDegreeBoundsFunction("indegree", function(degree, min9) { + return degree < min9; + }), + maxIndegree: defineDegreeBoundsFunction("indegree", function(degree, max10) { + return degree > max10; + }), + minOutdegree: defineDegreeBoundsFunction("outdegree", function(degree, min9) { + return degree < min9; + }), + maxOutdegree: defineDegreeBoundsFunction("outdegree", function(degree, max10) { + return degree > max10; + }) + }); + extend4(elesfn$d, { + totalDegree: /* @__PURE__ */ __name(function totalDegree(includeLoops) { + var total = 0; + var nodes5 = this.nodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + total += nodes5[i2].degree(includeLoops); + } + return total; + }, "totalDegree") + }); + beforePositionSet = /* @__PURE__ */ __name(function beforePositionSet2(eles, newPos, silent) { + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + if (!ele.locked()) { + var oldPos = ele._private.position; + var delta = { + x: newPos.x != null ? newPos.x - oldPos.x : 0, + y: newPos.y != null ? newPos.y - oldPos.y : 0 + }; + if (ele.isParent() && !(delta.x === 0 && delta.y === 0)) { + ele.children().shift(delta, silent); } + ele.dirtyBoundingBoxCache(); } - return true; } - return false; + }, "beforePositionSet"); + positionDef = { + field: "position", + bindingEvent: "position", + allowBinding: true, + allowSetting: true, + settingEvent: "position", + settingTriggersEvent: true, + triggerFnName: "emitAndNotify", + allowGetting: true, + validKeys: ["x", "y"], + beforeGet: /* @__PURE__ */ __name(function beforeGet(ele) { + ele.updateCompoundBounds(); + }, "beforeGet"), + beforeSet: /* @__PURE__ */ __name(function beforeSet(eles, newPos) { + beforePositionSet(eles, newPos, false); + }, "beforeSet"), + onSet: /* @__PURE__ */ __name(function onSet(eles) { + eles.dirtyCompoundBoundsCache(); + }, "onSet"), + canSet: /* @__PURE__ */ __name(function canSet(ele) { + return !ele.locked(); + }, "canSet") }; - } - } - function initializeArrayOfArrays(size5) { - const result = new Array(size5); - for (let i2 = 0; i2 < size5; i2++) { - result[i2] = []; - } - return result; - } - function pathToHashKeys(path4) { - let keys3 = [""]; - for (let i2 = 0; i2 < path4.length; i2++) { - const tokType = path4[i2]; - const longerKeys = []; - for (let j2 = 0; j2 < keys3.length; j2++) { - const currShorterKey = keys3[j2]; - longerKeys.push(currShorterKey + "_" + tokType.tokenTypeIdx); - for (let t4 = 0; t4 < tokType.categoryMatches.length; t4++) { - const categoriesKeySuffix = "_" + tokType.categoryMatches[t4]; - longerKeys.push(currShorterKey + categoriesKeySuffix); - } - } - keys3 = longerKeys; - } - return keys3; - } - function isUniquePrefixHash(altKnownPathsKeys, searchPathKeys, idx) { - for (let currAltIdx = 0; currAltIdx < altKnownPathsKeys.length; currAltIdx++) { - if (currAltIdx === idx) { - continue; - } - const otherAltKnownPathsKeys = altKnownPathsKeys[currAltIdx]; - for (let searchIdx = 0; searchIdx < searchPathKeys.length; searchIdx++) { - const searchKey = searchPathKeys[searchIdx]; - if (otherAltKnownPathsKeys[searchKey] === true) { - return false; - } - } - } - return true; - } - function lookAheadSequenceFromAlternatives(altsDefs, k2) { - const partialAlts = map_default(altsDefs, (currAlt) => possiblePathsFrom([currAlt], 1)); - const finalResult = initializeArrayOfArrays(partialAlts.length); - const altsHashes = map_default(partialAlts, (currAltPaths) => { - const dict = {}; - forEach_default(currAltPaths, (item) => { - const keys3 = pathToHashKeys(item.partialPath); - forEach_default(keys3, (currKey) => { - dict[currKey] = true; - }); - }); - return dict; - }); - let newData = partialAlts; - for (let pathLength = 1; pathLength <= k2; pathLength++) { - const currDataset = newData; - newData = initializeArrayOfArrays(currDataset.length); - for (let altIdx = 0; altIdx < currDataset.length; altIdx++) { - const currAltPathsAndSuffixes = currDataset[altIdx]; - for (let currPathIdx = 0; currPathIdx < currAltPathsAndSuffixes.length; currPathIdx++) { - const currPathPrefix = currAltPathsAndSuffixes[currPathIdx].partialPath; - const suffixDef = currAltPathsAndSuffixes[currPathIdx].suffixDef; - const prefixKeys = pathToHashKeys(currPathPrefix); - const isUnique = isUniquePrefixHash(altsHashes, prefixKeys, altIdx); - if (isUnique || isEmpty_default(suffixDef) || currPathPrefix.length === k2) { - const currAltResult = finalResult[altIdx]; - if (containsPath(currAltResult, currPathPrefix) === false) { - currAltResult.push(currPathPrefix); - for (let j2 = 0; j2 < prefixKeys.length; j2++) { - const currKey = prefixKeys[j2]; - altsHashes[altIdx][currKey] = true; + fn$4 = elesfn$c = { + position: define2.data(positionDef), + // position but no notification to renderer + silentPosition: define2.data(extend4({}, positionDef, { + allowBinding: false, + allowSetting: true, + settingTriggersEvent: false, + allowGetting: false, + beforeSet: /* @__PURE__ */ __name(function beforeSet2(eles, newPos) { + beforePositionSet(eles, newPos, true); + }, "beforeSet"), + onSet: /* @__PURE__ */ __name(function onSet2(eles) { + eles.dirtyCompoundBoundsCache(); + }, "onSet") + })), + positions: /* @__PURE__ */ __name(function positions(pos, silent) { + if (plainObject(pos)) { + if (silent) { + this.silentPosition(pos); + } else { + this.position(pos); + } + } else if (fn$6(pos)) { + var _fn = pos; + var cy = this.cy(); + cy.startBatch(); + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + var _pos = void 0; + if (_pos = _fn(ele, i2)) { + if (silent) { + ele.silentPosition(_pos); + } else { + ele.position(_pos); + } } } - } else { - const newPartialPathsAndSuffixes = possiblePathsFrom(suffixDef, pathLength + 1, currPathPrefix); - newData[altIdx] = newData[altIdx].concat(newPartialPathsAndSuffixes); - forEach_default(newPartialPathsAndSuffixes, (item) => { - const prefixKeys2 = pathToHashKeys(item.partialPath); - forEach_default(prefixKeys2, (key) => { - altsHashes[altIdx][key] = true; - }); - }); + cy.endBatch(); } + return this; + }, "positions"), + silentPositions: /* @__PURE__ */ __name(function silentPositions(pos) { + return this.positions(pos, true); + }, "silentPositions"), + shift: /* @__PURE__ */ __name(function shift(dim, val, silent) { + var delta; + if (plainObject(dim)) { + delta = { + x: number$1(dim.x) ? dim.x : 0, + y: number$1(dim.y) ? dim.y : 0 + }; + silent = val; + } else if (string(dim) && number$1(val)) { + delta = { + x: 0, + y: 0 + }; + delta[dim] = val; + } + if (delta != null) { + var cy = this.cy(); + cy.startBatch(); + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + if (cy.hasCompoundNodes() && ele.isChild() && ele.ancestors().anySame(this)) { + continue; + } + var pos = ele.position(); + var newPos = { + x: pos.x + delta.x, + y: pos.y + delta.y + }; + if (silent) { + ele.silentPosition(newPos); + } else { + ele.position(newPos); + } + } + cy.endBatch(); + } + return this; + }, "shift"), + silentShift: /* @__PURE__ */ __name(function silentShift(dim, val) { + if (plainObject(dim)) { + this.shift(dim, true); + } else if (string(dim) && number$1(val)) { + this.shift(dim, val, true); + } + return this; + }, "silentShift"), + // get/set the rendered (i.e. on screen) positon of the element + renderedPosition: /* @__PURE__ */ __name(function renderedPosition(dim, val) { + var ele = this[0]; + var cy = this.cy(); + var zoom2 = cy.zoom(); + var pan2 = cy.pan(); + var rpos = plainObject(dim) ? dim : void 0; + var setting = rpos !== void 0 || val !== void 0 && string(dim); + if (ele && ele.isNode()) { + if (setting) { + for (var i2 = 0; i2 < this.length; i2++) { + var _ele = this[i2]; + if (val !== void 0) { + _ele.position(dim, (val - pan2[dim]) / zoom2); + } else if (rpos !== void 0) { + _ele.position(renderedToModelPosition(rpos, zoom2, pan2)); + } + } + } else { + var pos = ele.position(); + rpos = modelToRenderedPosition$1(pos, zoom2, pan2); + if (dim === void 0) { + return rpos; + } else { + return rpos[dim]; + } + } + } else if (!setting) { + return void 0; + } + return this; + }, "renderedPosition"), + // get/set the position relative to the parent + relativePosition: /* @__PURE__ */ __name(function relativePosition(dim, val) { + var ele = this[0]; + var cy = this.cy(); + var ppos = plainObject(dim) ? dim : void 0; + var setting = ppos !== void 0 || val !== void 0 && string(dim); + var hasCompoundNodes2 = cy.hasCompoundNodes(); + if (ele && ele.isNode()) { + if (setting) { + for (var i2 = 0; i2 < this.length; i2++) { + var _ele2 = this[i2]; + var parent4 = hasCompoundNodes2 ? _ele2.parent() : null; + var hasParent = parent4 && parent4.length > 0; + var relativeToParent = hasParent; + if (hasParent) { + parent4 = parent4[0]; + } + var origin = relativeToParent ? parent4.position() : { + x: 0, + y: 0 + }; + if (val !== void 0) { + _ele2.position(dim, val + origin[dim]); + } else if (ppos !== void 0) { + _ele2.position({ + x: ppos.x + origin.x, + y: ppos.y + origin.y + }); + } + } + } else { + var pos = ele.position(); + var _parent = hasCompoundNodes2 ? ele.parent() : null; + var _hasParent = _parent && _parent.length > 0; + var _relativeToParent = _hasParent; + if (_hasParent) { + _parent = _parent[0]; + } + var _origin = _relativeToParent ? _parent.position() : { + x: 0, + y: 0 + }; + ppos = { + x: pos.x - _origin.x, + y: pos.y - _origin.y + }; + if (dim === void 0) { + return ppos; + } else { + return ppos[dim]; + } + } + } else if (!setting) { + return void 0; + } + return this; + }, "relativePosition") + }; + fn$4.modelPosition = fn$4.point = fn$4.position; + fn$4.modelPositions = fn$4.points = fn$4.positions; + fn$4.renderedPoint = fn$4.renderedPosition; + fn$4.relativePoint = fn$4.relativePosition; + position2 = elesfn$c; + fn$3 = elesfn$b = {}; + elesfn$b.renderedBoundingBox = function(options2) { + var bb = this.boundingBox(options2); + var cy = this.cy(); + var zoom2 = cy.zoom(); + var pan2 = cy.pan(); + var x1 = bb.x1 * zoom2 + pan2.x; + var x22 = bb.x2 * zoom2 + pan2.x; + var y1 = bb.y1 * zoom2 + pan2.y; + var y22 = bb.y2 * zoom2 + pan2.y; + return { + x1, + x2: x22, + y1, + y2: y22, + w: x22 - x1, + h: y22 - y1 + }; + }; + elesfn$b.dirtyCompoundBoundsCache = function() { + var silent = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; + var cy = this.cy(); + if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { + return this; } - } - } - return finalResult; - } - function getLookaheadPathsForOr(occurrence, ruleGrammar, k2, orProd) { - const visitor2 = new InsideDefinitionFinderVisitor(occurrence, PROD_TYPE.ALTERNATION, orProd); - ruleGrammar.accept(visitor2); - return lookAheadSequenceFromAlternatives(visitor2.result, k2); - } - function getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k2) { - const insideDefVisitor = new InsideDefinitionFinderVisitor(occurrence, prodType); - ruleGrammar.accept(insideDefVisitor); - const insideDef = insideDefVisitor.result; - const afterDefWalker = new RestDefinitionFinderWalker(ruleGrammar, occurrence, prodType); - const afterDef = afterDefWalker.startWalking(); - const insideFlat = new Alternative({ definition: insideDef }); - const afterFlat = new Alternative({ definition: afterDef }); - return lookAheadSequenceFromAlternatives([insideFlat, afterFlat], k2); - } - function containsPath(alternative, searchPath) { - compareOtherPath: for (let i2 = 0; i2 < alternative.length; i2++) { - const otherPath = alternative[i2]; - if (otherPath.length !== searchPath.length) { - continue; - } - for (let j2 = 0; j2 < otherPath.length; j2++) { - const searchTok = searchPath[j2]; - const otherTok = otherPath[j2]; - const matchingTokens = searchTok === otherTok || otherTok.categoryMatchesMap[searchTok.tokenTypeIdx] !== void 0; - if (matchingTokens === false) { - continue compareOtherPath; - } - } - return true; - } - return false; - } - function isStrictPrefixOfPath(prefix, other2) { - return prefix.length < other2.length && every_default(prefix, (tokType, idx) => { - const otherTokType = other2[idx]; - return tokType === otherTokType || otherTokType.categoryMatchesMap[tokType.tokenTypeIdx]; - }); - } - function areTokenCategoriesNotUsed(lookAheadPaths) { - return every_default(lookAheadPaths, (singleAltPaths) => every_default(singleAltPaths, (singlePath) => every_default(singlePath, (token2) => isEmpty_default(token2.categoryMatches)))); - } - var PROD_TYPE, RestDefinitionFinderWalker, InsideDefinitionFinderVisitor; - var init_lookahead = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/lookahead.js"() { - "use strict"; - init_lodash(); - init_interpreter(); - init_rest(); - init_tokens(); - init_api3(); - (function(PROD_TYPE2) { - PROD_TYPE2[PROD_TYPE2["OPTION"] = 0] = "OPTION"; - PROD_TYPE2[PROD_TYPE2["REPETITION"] = 1] = "REPETITION"; - PROD_TYPE2[PROD_TYPE2["REPETITION_MANDATORY"] = 2] = "REPETITION_MANDATORY"; - PROD_TYPE2[PROD_TYPE2["REPETITION_MANDATORY_WITH_SEPARATOR"] = 3] = "REPETITION_MANDATORY_WITH_SEPARATOR"; - PROD_TYPE2[PROD_TYPE2["REPETITION_WITH_SEPARATOR"] = 4] = "REPETITION_WITH_SEPARATOR"; - PROD_TYPE2[PROD_TYPE2["ALTERNATION"] = 5] = "ALTERNATION"; - })(PROD_TYPE || (PROD_TYPE = {})); - __name(getProdType, "getProdType"); - __name(getLookaheadPaths, "getLookaheadPaths"); - __name(buildLookaheadFuncForOr, "buildLookaheadFuncForOr"); - __name(buildLookaheadFuncForOptionalProd, "buildLookaheadFuncForOptionalProd"); - __name(buildAlternativesLookAheadFunc, "buildAlternativesLookAheadFunc"); - __name(buildSingleAlternativeLookaheadFunction, "buildSingleAlternativeLookaheadFunction"); - RestDefinitionFinderWalker = class extends RestWalker { - static { - __name(this, "RestDefinitionFinderWalker"); - } - constructor(topProd, targetOccurrence, targetProdType) { - super(); - this.topProd = topProd; - this.targetOccurrence = targetOccurrence; - this.targetProdType = targetProdType; + this.forEachUp(function(ele) { + if (ele.isParent()) { + var _p = ele._private; + _p.compoundBoundsClean = false; + _p.bbCache = null; + if (!silent) { + ele.emitAndNotify("bounds"); + } + } + }); + return this; + }; + elesfn$b.updateCompoundBounds = function() { + var force = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; + var cy = this.cy(); + if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { + return this; } - startWalking() { - this.walk(this.topProd); - return this.restDef; + if (!force && cy.batching()) { + return this; } - checkIsTarget(node2, expectedProdType, currRest, prevRest) { - if (node2.idx === this.targetOccurrence && this.targetProdType === expectedProdType) { - this.restDef = currRest.concat(prevRest); - return true; + function update2(parent4) { + if (!parent4.isParent()) { + return; } - return false; - } - walkOption(optionProd, currRest, prevRest) { - if (!this.checkIsTarget(optionProd, PROD_TYPE.OPTION, currRest, prevRest)) { - super.walkOption(optionProd, currRest, prevRest); + var _p2 = parent4._private; + var children2 = parent4.children(); + var includeLabels = parent4.pstyle("compound-sizing-wrt-labels").value === "include"; + var min9 = { + width: { + val: parent4.pstyle("min-width").pfValue, + left: parent4.pstyle("min-width-bias-left"), + right: parent4.pstyle("min-width-bias-right") + }, + height: { + val: parent4.pstyle("min-height").pfValue, + top: parent4.pstyle("min-height-bias-top"), + bottom: parent4.pstyle("min-height-bias-bottom") + } + }; + var bb = children2.boundingBox({ + includeLabels, + includeOverlays: false, + // updating the compound bounds happens outside of the regular + // cache cycle (i.e. before fired events) + useCache: false + }); + var pos = _p2.position; + if (bb.w === 0 || bb.h === 0) { + bb = { + w: parent4.pstyle("width").pfValue, + h: parent4.pstyle("height").pfValue + }; + bb.x1 = pos.x - bb.w / 2; + bb.x2 = pos.x + bb.w / 2; + bb.y1 = pos.y - bb.h / 2; + bb.y2 = pos.y + bb.h / 2; } - } - walkAtLeastOne(atLeastOneProd, currRest, prevRest) { - if (!this.checkIsTarget(atLeastOneProd, PROD_TYPE.REPETITION_MANDATORY, currRest, prevRest)) { - super.walkOption(atLeastOneProd, currRest, prevRest); + function computeBiasValues(propDiff, propBias, propBiasComplement) { + var biasDiff = 0; + var biasComplementDiff = 0; + var biasTotal = propBias + propBiasComplement; + if (propDiff > 0 && biasTotal > 0) { + biasDiff = propBias / biasTotal * propDiff; + biasComplementDiff = propBiasComplement / biasTotal * propDiff; + } + return { + biasDiff, + biasComplementDiff + }; } - } - walkAtLeastOneSep(atLeastOneSepProd, currRest, prevRest) { - if (!this.checkIsTarget(atLeastOneSepProd, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, currRest, prevRest)) { - super.walkOption(atLeastOneSepProd, currRest, prevRest); + __name(computeBiasValues, "computeBiasValues"); + function computePaddingValues(width3, height2, paddingObject, relativeTo) { + if (paddingObject.units === "%") { + switch (relativeTo) { + case "width": + return width3 > 0 ? paddingObject.pfValue * width3 : 0; + case "height": + return height2 > 0 ? paddingObject.pfValue * height2 : 0; + case "average": + return width3 > 0 && height2 > 0 ? paddingObject.pfValue * (width3 + height2) / 2 : 0; + case "min": + return width3 > 0 && height2 > 0 ? width3 > height2 ? paddingObject.pfValue * height2 : paddingObject.pfValue * width3 : 0; + case "max": + return width3 > 0 && height2 > 0 ? width3 > height2 ? paddingObject.pfValue * width3 : paddingObject.pfValue * height2 : 0; + default: + return 0; + } + } else if (paddingObject.units === "px") { + return paddingObject.pfValue; + } else { + return 0; + } } - } - walkMany(manyProd, currRest, prevRest) { - if (!this.checkIsTarget(manyProd, PROD_TYPE.REPETITION, currRest, prevRest)) { - super.walkOption(manyProd, currRest, prevRest); + __name(computePaddingValues, "computePaddingValues"); + var leftVal = min9.width.left.value; + if (min9.width.left.units === "px" && min9.width.val > 0) { + leftVal = leftVal * 100 / min9.width.val; + } + var rightVal = min9.width.right.value; + if (min9.width.right.units === "px" && min9.width.val > 0) { + rightVal = rightVal * 100 / min9.width.val; + } + var topVal = min9.height.top.value; + if (min9.height.top.units === "px" && min9.height.val > 0) { + topVal = topVal * 100 / min9.height.val; + } + var bottomVal = min9.height.bottom.value; + if (min9.height.bottom.units === "px" && min9.height.val > 0) { + bottomVal = bottomVal * 100 / min9.height.val; } + var widthBiasDiffs = computeBiasValues(min9.width.val - bb.w, leftVal, rightVal); + var diffLeft = widthBiasDiffs.biasDiff; + var diffRight = widthBiasDiffs.biasComplementDiff; + var heightBiasDiffs = computeBiasValues(min9.height.val - bb.h, topVal, bottomVal); + var diffTop = heightBiasDiffs.biasDiff; + var diffBottom = heightBiasDiffs.biasComplementDiff; + _p2.autoPadding = computePaddingValues(bb.w, bb.h, parent4.pstyle("padding"), parent4.pstyle("padding-relative-to").value); + _p2.autoWidth = Math.max(bb.w, min9.width.val); + pos.x = (-diffLeft + bb.x1 + bb.x2 + diffRight) / 2; + _p2.autoHeight = Math.max(bb.h, min9.height.val); + pos.y = (-diffTop + bb.y1 + bb.y2 + diffBottom) / 2; } - walkManySep(manySepProd, currRest, prevRest) { - if (!this.checkIsTarget(manySepProd, PROD_TYPE.REPETITION_WITH_SEPARATOR, currRest, prevRest)) { - super.walkOption(manySepProd, currRest, prevRest); + __name(update2, "update"); + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + var _p = ele._private; + if (!_p.compoundBoundsClean || force) { + update2(ele); + if (!cy.batching()) { + _p.compoundBoundsClean = true; + } } } + return this; }; - InsideDefinitionFinderVisitor = class extends GAstVisitor { - static { - __name(this, "InsideDefinitionFinderVisitor"); + noninf = /* @__PURE__ */ __name(function noninf2(x5) { + if (x5 === Infinity || x5 === -Infinity) { + return 0; } - constructor(targetOccurrence, targetProdType, targetRef) { - super(); - this.targetOccurrence = targetOccurrence; - this.targetProdType = targetProdType; - this.targetRef = targetRef; - this.result = []; + return x5; + }, "noninf"); + updateBounds = /* @__PURE__ */ __name(function updateBounds2(b3, x1, y1, x22, y22) { + if (x22 - x1 === 0 || y22 - y1 === 0) { + return; } - checkIsTarget(node2, expectedProdName) { - if (node2.idx === this.targetOccurrence && this.targetProdType === expectedProdName && (this.targetRef === void 0 || node2 === this.targetRef)) { - this.result = node2.definition; + if (x1 == null || y1 == null || x22 == null || y22 == null) { + return; + } + b3.x1 = x1 < b3.x1 ? x1 : b3.x1; + b3.x2 = x22 > b3.x2 ? x22 : b3.x2; + b3.y1 = y1 < b3.y1 ? y1 : b3.y1; + b3.y2 = y22 > b3.y2 ? y22 : b3.y2; + b3.w = b3.x2 - b3.x1; + b3.h = b3.y2 - b3.y1; + }, "updateBounds"); + updateBoundsFromBox = /* @__PURE__ */ __name(function updateBoundsFromBox2(b3, b22) { + if (b22 == null) { + return b3; + } + return updateBounds(b3, b22.x1, b22.y1, b22.x2, b22.y2); + }, "updateBoundsFromBox"); + prefixedProperty = /* @__PURE__ */ __name(function prefixedProperty2(obj, field, prefix) { + return getPrefixedProperty(obj, field, prefix); + }, "prefixedProperty"); + updateBoundsFromArrow = /* @__PURE__ */ __name(function updateBoundsFromArrow2(bounds4, ele, prefix) { + if (ele.cy().headless()) { + return; + } + var _p = ele._private; + var rstyle = _p.rstyle; + var halfArW = rstyle.arrowWidth / 2; + var arrowType = ele.pstyle(prefix + "-arrow-shape").value; + var x5; + var y6; + if (arrowType !== "none") { + if (prefix === "source") { + x5 = rstyle.srcX; + y6 = rstyle.srcY; + } else if (prefix === "target") { + x5 = rstyle.tgtX; + y6 = rstyle.tgtY; + } else { + x5 = rstyle.midX; + y6 = rstyle.midY; } + var bbs = _p.arrowBounds = _p.arrowBounds || {}; + var bb = bbs[prefix] = bbs[prefix] || {}; + bb.x1 = x5 - halfArW; + bb.y1 = y6 - halfArW; + bb.x2 = x5 + halfArW; + bb.y2 = y6 + halfArW; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + expandBoundingBox(bb, 1); + updateBounds(bounds4, bb.x1, bb.y1, bb.x2, bb.y2); } - visitOption(node2) { - this.checkIsTarget(node2, PROD_TYPE.OPTION); + }, "updateBoundsFromArrow"); + updateBoundsFromLabel = /* @__PURE__ */ __name(function updateBoundsFromLabel2(bounds4, ele, prefix) { + if (ele.cy().headless()) { + return; } - visitRepetition(node2) { - this.checkIsTarget(node2, PROD_TYPE.REPETITION); + var prefixDash; + if (prefix) { + prefixDash = prefix + "-"; + } else { + prefixDash = ""; } - visitRepetitionMandatory(node2) { - this.checkIsTarget(node2, PROD_TYPE.REPETITION_MANDATORY); + var _p = ele._private; + var rstyle = _p.rstyle; + var label = ele.pstyle(prefixDash + "label").strValue; + if (label) { + var halign = ele.pstyle("text-halign"); + var valign = ele.pstyle("text-valign"); + var labelWidth = prefixedProperty(rstyle, "labelWidth", prefix); + var labelHeight = prefixedProperty(rstyle, "labelHeight", prefix); + var labelX = prefixedProperty(rstyle, "labelX", prefix); + var labelY = prefixedProperty(rstyle, "labelY", prefix); + var marginX = ele.pstyle(prefixDash + "text-margin-x").pfValue; + var marginY = ele.pstyle(prefixDash + "text-margin-y").pfValue; + var isEdge2 = ele.isEdge(); + var rotation = ele.pstyle(prefixDash + "text-rotation"); + var outlineWidth = ele.pstyle("text-outline-width").pfValue; + var borderWidth = ele.pstyle("text-border-width").pfValue; + var halfBorderWidth = borderWidth / 2; + var padding2 = ele.pstyle("text-background-padding").pfValue; + var marginOfError = 2; + var lh = labelHeight; + var lw = labelWidth; + var lw_2 = lw / 2; + var lh_2 = lh / 2; + var lx1, lx2, ly1, ly2; + if (isEdge2) { + lx1 = labelX - lw_2; + lx2 = labelX + lw_2; + ly1 = labelY - lh_2; + ly2 = labelY + lh_2; + } else { + switch (halign.value) { + case "left": + lx1 = labelX - lw; + lx2 = labelX; + break; + case "center": + lx1 = labelX - lw_2; + lx2 = labelX + lw_2; + break; + case "right": + lx1 = labelX; + lx2 = labelX + lw; + break; + } + switch (valign.value) { + case "top": + ly1 = labelY - lh; + ly2 = labelY; + break; + case "center": + ly1 = labelY - lh_2; + ly2 = labelY + lh_2; + break; + case "bottom": + ly1 = labelY; + ly2 = labelY + lh; + break; + } + } + var leftPad = marginX - Math.max(outlineWidth, halfBorderWidth) - padding2 - marginOfError; + var rightPad = marginX + Math.max(outlineWidth, halfBorderWidth) + padding2 + marginOfError; + var topPad = marginY - Math.max(outlineWidth, halfBorderWidth) - padding2 - marginOfError; + var botPad = marginY + Math.max(outlineWidth, halfBorderWidth) + padding2 + marginOfError; + lx1 += leftPad; + lx2 += rightPad; + ly1 += topPad; + ly2 += botPad; + var bbPrefix = prefix || "main"; + var bbs = _p.labelBounds; + var bb = bbs[bbPrefix] = bbs[bbPrefix] || {}; + bb.x1 = lx1; + bb.y1 = ly1; + bb.x2 = lx2; + bb.y2 = ly2; + bb.w = lx2 - lx1; + bb.h = ly2 - ly1; + bb.leftPad = leftPad; + bb.rightPad = rightPad; + bb.topPad = topPad; + bb.botPad = botPad; + var isAutorotate = isEdge2 && rotation.strValue === "autorotate"; + var isPfValue = rotation.pfValue != null && rotation.pfValue !== 0; + if (isAutorotate || isPfValue) { + var theta = isAutorotate ? prefixedProperty(_p.rstyle, "labelAngle", prefix) : rotation.pfValue; + var cos3 = Math.cos(theta); + var sin3 = Math.sin(theta); + var xo = (lx1 + lx2) / 2; + var yo = (ly1 + ly2) / 2; + if (!isEdge2) { + switch (halign.value) { + case "left": + xo = lx2; + break; + case "right": + xo = lx1; + break; + } + switch (valign.value) { + case "top": + yo = ly2; + break; + case "bottom": + yo = ly1; + break; + } + } + var rotate2 = /* @__PURE__ */ __name(function rotate3(x5, y6) { + x5 = x5 - xo; + y6 = y6 - yo; + return { + x: x5 * cos3 - y6 * sin3 + xo, + y: x5 * sin3 + y6 * cos3 + yo + }; + }, "rotate"); + var px1y1 = rotate2(lx1, ly1); + var px1y2 = rotate2(lx1, ly2); + var px2y1 = rotate2(lx2, ly1); + var px2y2 = rotate2(lx2, ly2); + lx1 = Math.min(px1y1.x, px1y2.x, px2y1.x, px2y2.x); + lx2 = Math.max(px1y1.x, px1y2.x, px2y1.x, px2y2.x); + ly1 = Math.min(px1y1.y, px1y2.y, px2y1.y, px2y2.y); + ly2 = Math.max(px1y1.y, px1y2.y, px2y1.y, px2y2.y); + } + var bbPrefixRot = bbPrefix + "Rot"; + var bbRot = bbs[bbPrefixRot] = bbs[bbPrefixRot] || {}; + bbRot.x1 = lx1; + bbRot.y1 = ly1; + bbRot.x2 = lx2; + bbRot.y2 = ly2; + bbRot.w = lx2 - lx1; + bbRot.h = ly2 - ly1; + updateBounds(bounds4, lx1, ly1, lx2, ly2); + updateBounds(_p.labelBounds.all, lx1, ly1, lx2, ly2); } - visitRepetitionMandatoryWithSeparator(node2) { - this.checkIsTarget(node2, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR); + return bounds4; + }, "updateBoundsFromLabel"); + updateBoundsFromOutline = /* @__PURE__ */ __name(function updateBoundsFromOutline2(bounds4, ele) { + if (ele.cy().headless()) { + return; } - visitRepetitionWithSeparator(node2) { - this.checkIsTarget(node2, PROD_TYPE.REPETITION_WITH_SEPARATOR); + var outlineOpacity = ele.pstyle("outline-opacity").value; + var outlineWidth = ele.pstyle("outline-width").value; + var outlineOffset = ele.pstyle("outline-offset").value; + var expansion = outlineWidth + outlineOffset; + updateBoundsFromMiter(bounds4, ele, outlineOpacity, expansion, "outside", expansion / 2); + }, "updateBoundsFromOutline"); + updateBoundsFromMiter = /* @__PURE__ */ __name(function updateBoundsFromMiter2(bounds4, ele, opacity, expansionSize, expansionPosition, useFallbackValue) { + if (opacity === 0 || expansionSize <= 0 || expansionPosition === "inside") { + return; } - visitAlternation(node2) { - this.checkIsTarget(node2, PROD_TYPE.ALTERNATION); + var cy = ele.cy(); + var shape = ele.pstyle("shape").value; + var rshape = cy.renderer().nodeShapes[shape]; + var _ele$position = ele.position(), x5 = _ele$position.x, y6 = _ele$position.y; + var w4 = ele.width(); + var h3 = ele.height(); + if (rshape.hasMiterBounds) { + if (expansionPosition === "center") { + expansionSize /= 2; + } + var mbb = rshape.miterBounds(x5, y6, w4, h3, expansionSize); + updateBoundsFromBox(bounds4, mbb); + } else if (useFallbackValue != null && useFallbackValue > 0) { + expandBoundingBoxSides(bounds4, [useFallbackValue, useFallbackValue, useFallbackValue, useFallbackValue]); + } + }, "updateBoundsFromMiter"); + updateBoundsFromMiterBorder = /* @__PURE__ */ __name(function updateBoundsFromMiterBorder2(bounds4, ele) { + if (ele.cy().headless()) { + return; } - }; - __name(initializeArrayOfArrays, "initializeArrayOfArrays"); - __name(pathToHashKeys, "pathToHashKeys"); - __name(isUniquePrefixHash, "isUniquePrefixHash"); - __name(lookAheadSequenceFromAlternatives, "lookAheadSequenceFromAlternatives"); - __name(getLookaheadPathsForOr, "getLookaheadPathsForOr"); - __name(getLookaheadPathsForOptionalProd, "getLookaheadPathsForOptionalProd"); - __name(containsPath, "containsPath"); - __name(isStrictPrefixOfPath, "isStrictPrefixOfPath"); - __name(areTokenCategoriesNotUsed, "areTokenCategoriesNotUsed"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/checks.js - function validateLookahead(options3) { - const lookaheadValidationErrorMessages = options3.lookaheadStrategy.validate({ - rules: options3.rules, - tokenTypes: options3.tokenTypes, - grammarName: options3.grammarName - }); - return map_default(lookaheadValidationErrorMessages, (errorMessage) => Object.assign({ type: ParserDefinitionErrorType.CUSTOM_LOOKAHEAD_VALIDATION }, errorMessage)); - } - function validateGrammar(topLevels, tokenTypes, errMsgProvider, grammarName) { - const duplicateErrors = flatMap_default(topLevels, (currTopLevel) => validateDuplicateProductions(currTopLevel, errMsgProvider)); - const termsNamespaceConflictErrors = checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider); - const tooManyAltsErrors = flatMap_default(topLevels, (curRule) => validateTooManyAlts(curRule, errMsgProvider)); - const duplicateRulesError = flatMap_default(topLevels, (curRule) => validateRuleDoesNotAlreadyExist(curRule, topLevels, grammarName, errMsgProvider)); - return duplicateErrors.concat(termsNamespaceConflictErrors, tooManyAltsErrors, duplicateRulesError); - } - function validateDuplicateProductions(topLevelRule, errMsgProvider) { - const collectorVisitor2 = new OccurrenceValidationCollector(); - topLevelRule.accept(collectorVisitor2); - const allRuleProductions = collectorVisitor2.allProductions; - const productionGroups = groupBy_default(allRuleProductions, identifyProductionForDuplicates); - const duplicates = pickBy_default(productionGroups, (currGroup) => { - return currGroup.length > 1; - }); - const errors = map_default(values_default(duplicates), (currDuplicates) => { - const firstProd = head_default(currDuplicates); - const msg = errMsgProvider.buildDuplicateFoundError(topLevelRule, currDuplicates); - const dslName = getProductionDslName(firstProd); - const defError = { - message: msg, - type: ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS, - ruleName: topLevelRule.name, - dslName, - occurrence: firstProd.idx - }; - const param = getExtraProductionArgument(firstProd); - if (param) { - defError.parameter = param; - } - return defError; - }); - return errors; - } - function identifyProductionForDuplicates(prod) { - return `${getProductionDslName(prod)}_#_${prod.idx}_#_${getExtraProductionArgument(prod)}`; - } - function getExtraProductionArgument(prod) { - if (prod instanceof Terminal) { - return prod.terminalType.name; - } else if (prod instanceof NonTerminal) { - return prod.nonTerminalName; - } else { - return ""; - } - } - function validateRuleDoesNotAlreadyExist(rule, allRules, className, errMsgProvider) { - const errors = []; - const occurrences = reduce_default(allRules, (result, curRule) => { - if (curRule.name === rule.name) { - return result + 1; - } - return result; - }, 0); - if (occurrences > 1) { - const errMsg = errMsgProvider.buildDuplicateRuleNameError({ - topLevelRule: rule, - grammarName: className - }); - errors.push({ - message: errMsg, - type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME, - ruleName: rule.name - }); - } - return errors; - } - function validateRuleIsOverridden(ruleName, definedRulesNames, className) { - const errors = []; - let errMsg; - if (!includes_default(definedRulesNames, ruleName)) { - errMsg = `Invalid rule override, rule: ->${ruleName}<- cannot be overridden in the grammar: ->${className}<-as it is not defined in any of the super grammars `; - errors.push({ - message: errMsg, - type: ParserDefinitionErrorType.INVALID_RULE_OVERRIDE, - ruleName - }); - } - return errors; - } - function validateNoLeftRecursion(topRule, currRule, errMsgProvider, path4 = []) { - const errors = []; - const nextNonTerminals = getFirstNoneTerminal(currRule.definition); - if (isEmpty_default(nextNonTerminals)) { - return []; - } else { - const ruleName = topRule.name; - const foundLeftRecursion = includes_default(nextNonTerminals, topRule); - if (foundLeftRecursion) { - errors.push({ - message: errMsgProvider.buildLeftRecursionError({ - topLevelRule: topRule, - leftRecursionPath: path4 - }), - type: ParserDefinitionErrorType.LEFT_RECURSION, - ruleName - }); - } - const validNextSteps = difference_default(nextNonTerminals, path4.concat([topRule])); - const errorsFromNextSteps = flatMap_default(validNextSteps, (currRefRule) => { - const newPath = clone_default2(path4); - newPath.push(currRefRule); - return validateNoLeftRecursion(topRule, currRefRule, errMsgProvider, newPath); - }); - return errors.concat(errorsFromNextSteps); - } - } - function getFirstNoneTerminal(definition) { - let result = []; - if (isEmpty_default(definition)) { - return result; - } - const firstProd = head_default(definition); - if (firstProd instanceof NonTerminal) { - result.push(firstProd.referencedRule); - } else if (firstProd instanceof Alternative || firstProd instanceof Option2 || firstProd instanceof RepetitionMandatory || firstProd instanceof RepetitionMandatoryWithSeparator || firstProd instanceof RepetitionWithSeparator || firstProd instanceof Repetition) { - result = result.concat(getFirstNoneTerminal(firstProd.definition)); - } else if (firstProd instanceof Alternation) { - result = flatten_default(map_default(firstProd.definition, (currSubDef) => getFirstNoneTerminal(currSubDef.definition))); - } else if (firstProd instanceof Terminal) { - } else { - throw Error("non exhaustive match"); - } - const isFirstOptional = isOptionalProd(firstProd); - const hasMore = definition.length > 1; - if (isFirstOptional && hasMore) { - const rest = drop_default(definition); - return result.concat(getFirstNoneTerminal(rest)); - } else { - return result; - } - } - function validateEmptyOrAlternative(topLevelRule, errMsgProvider) { - const orCollector = new OrCollector(); - topLevelRule.accept(orCollector); - const ors = orCollector.alternations; - const errors = flatMap_default(ors, (currOr) => { - const exceptLast = dropRight_default(currOr.definition); - return flatMap_default(exceptLast, (currAlternative, currAltIdx) => { - const possibleFirstInAlt = nextPossibleTokensAfter([currAlternative], [], tokenStructuredMatcher, 1); - if (isEmpty_default(possibleFirstInAlt)) { - return [ - { - message: errMsgProvider.buildEmptyAlternationError({ - topLevelRule, - alternation: currOr, - emptyChoiceIdx: currAltIdx - }), - type: ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT, - ruleName: topLevelRule.name, - occurrence: currOr.idx, - alternative: currAltIdx + 1 + var borderOpacity = ele.pstyle("border-opacity").value; + var borderWidth = ele.pstyle("border-width").pfValue; + var borderPosition = ele.pstyle("border-position").value; + updateBoundsFromMiter(bounds4, ele, borderOpacity, borderWidth, borderPosition); + }, "updateBoundsFromMiterBorder"); + boundingBoxImpl = /* @__PURE__ */ __name(function boundingBoxImpl2(ele, options2) { + var cy = ele._private.cy; + var styleEnabled2 = cy.styleEnabled(); + var headless2 = cy.headless(); + var bounds4 = makeBoundingBox(); + var _p = ele._private; + var isNode2 = ele.isNode(); + var isEdge2 = ele.isEdge(); + var ex1, ex2, ey1, ey2; + var x5, y6; + var rstyle = _p.rstyle; + var manualExpansion = isNode2 && styleEnabled2 ? ele.pstyle("bounds-expansion").pfValue : [0]; + var isDisplayed = /* @__PURE__ */ __name(function isDisplayed2(ele2) { + return ele2.pstyle("display").value !== "none"; + }, "isDisplayed"); + var displayed = !styleEnabled2 || isDisplayed(ele) && (!isEdge2 || isDisplayed(ele.source()) && isDisplayed(ele.target())); + if (displayed) { + var overlayOpacity = 0; + var overlayPadding = 0; + if (styleEnabled2 && options2.includeOverlays) { + overlayOpacity = ele.pstyle("overlay-opacity").value; + if (overlayOpacity !== 0) { + overlayPadding = ele.pstyle("overlay-padding").value; } - ]; - } else { - return []; - } - }); - }); - return errors; - } - function validateAmbiguousAlternationAlternatives(topLevelRule, globalMaxLookahead, errMsgProvider) { - const orCollector = new OrCollector(); - topLevelRule.accept(orCollector); - let ors = orCollector.alternations; - ors = reject_default(ors, (currOr) => currOr.ignoreAmbiguities === true); - const errors = flatMap_default(ors, (currOr) => { - const currOccurrence = currOr.idx; - const actualMaxLookahead = currOr.maxLookahead || globalMaxLookahead; - const alternatives = getLookaheadPathsForOr(currOccurrence, topLevelRule, actualMaxLookahead, currOr); - const altsAmbiguityErrors = checkAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider); - const altsPrefixAmbiguityErrors = checkPrefixAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider); - return altsAmbiguityErrors.concat(altsPrefixAmbiguityErrors); - }); - return errors; - } - function validateTooManyAlts(topLevelRule, errMsgProvider) { - const orCollector = new OrCollector(); - topLevelRule.accept(orCollector); - const ors = orCollector.alternations; - const errors = flatMap_default(ors, (currOr) => { - if (currOr.definition.length > 255) { - return [ - { - message: errMsgProvider.buildTooManyAlternativesError({ - topLevelRule, - alternation: currOr - }), - type: ParserDefinitionErrorType.TOO_MANY_ALTS, - ruleName: topLevelRule.name, - occurrence: currOr.idx } - ]; - } else { - return []; - } - }); - return errors; - } - function validateSomeNonEmptyLookaheadPath(topLevelRules, maxLookahead, errMsgProvider) { - const errors = []; - forEach_default(topLevelRules, (currTopRule) => { - const collectorVisitor2 = new RepetitionCollector(); - currTopRule.accept(collectorVisitor2); - const allRuleProductions = collectorVisitor2.allProductions; - forEach_default(allRuleProductions, (currProd) => { - const prodType = getProdType(currProd); - const actualMaxLookahead = currProd.maxLookahead || maxLookahead; - const currOccurrence = currProd.idx; - const paths = getLookaheadPathsForOptionalProd(currOccurrence, currTopRule, prodType, actualMaxLookahead); - const pathsInsideProduction = paths[0]; - if (isEmpty_default(flatten_default(pathsInsideProduction))) { - const errMsg = errMsgProvider.buildEmptyRepetitionError({ - topLevelRule: currTopRule, - repetition: currProd - }); - errors.push({ - message: errMsg, - type: ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD, - ruleName: currTopRule.name - }); - } - }); - }); - return errors; - } - function checkAlternativesAmbiguities(alternatives, alternation2, rule, errMsgProvider) { - const foundAmbiguousPaths = []; - const identicalAmbiguities = reduce_default(alternatives, (result, currAlt, currAltIdx) => { - if (alternation2.definition[currAltIdx].ignoreAmbiguities === true) { - return result; - } - forEach_default(currAlt, (currPath) => { - const altsCurrPathAppearsIn = [currAltIdx]; - forEach_default(alternatives, (currOtherAlt, currOtherAltIdx) => { - if (currAltIdx !== currOtherAltIdx && containsPath(currOtherAlt, currPath) && // ignore (skip) ambiguities with this "other" alternative - alternation2.definition[currOtherAltIdx].ignoreAmbiguities !== true) { - altsCurrPathAppearsIn.push(currOtherAltIdx); + var underlayOpacity = 0; + var underlayPadding = 0; + if (styleEnabled2 && options2.includeUnderlays) { + underlayOpacity = ele.pstyle("underlay-opacity").value; + if (underlayOpacity !== 0) { + underlayPadding = ele.pstyle("underlay-padding").value; + } + } + var padding2 = Math.max(overlayPadding, underlayPadding); + var w4 = 0; + var wHalf = 0; + if (styleEnabled2) { + w4 = ele.pstyle("width").pfValue; + wHalf = w4 / 2; + } + if (isNode2 && options2.includeNodes) { + var pos = ele.position(); + x5 = pos.x; + y6 = pos.y; + var _w = ele.outerWidth(); + var halfW = _w / 2; + var h3 = ele.outerHeight(); + var halfH = h3 / 2; + ex1 = x5 - halfW; + ex2 = x5 + halfW; + ey1 = y6 - halfH; + ey2 = y6 + halfH; + updateBounds(bounds4, ex1, ey1, ex2, ey2); + if (styleEnabled2) { + updateBoundsFromOutline(bounds4, ele); + } + if (styleEnabled2 && options2.includeOutlines && !headless2) { + updateBoundsFromOutline(bounds4, ele); + } + if (styleEnabled2) { + updateBoundsFromMiterBorder(bounds4, ele); + } + } else if (isEdge2 && options2.includeEdges) { + if (styleEnabled2 && !headless2) { + var curveStyle = ele.pstyle("curve-style").strValue; + ex1 = Math.min(rstyle.srcX, rstyle.midX, rstyle.tgtX); + ex2 = Math.max(rstyle.srcX, rstyle.midX, rstyle.tgtX); + ey1 = Math.min(rstyle.srcY, rstyle.midY, rstyle.tgtY); + ey2 = Math.max(rstyle.srcY, rstyle.midY, rstyle.tgtY); + ex1 -= wHalf; + ex2 += wHalf; + ey1 -= wHalf; + ey2 += wHalf; + updateBounds(bounds4, ex1, ey1, ex2, ey2); + if (curveStyle === "haystack") { + var hpts = rstyle.haystackPts; + if (hpts && hpts.length === 2) { + ex1 = hpts[0].x; + ey1 = hpts[0].y; + ex2 = hpts[1].x; + ey2 = hpts[1].y; + if (ex1 > ex2) { + var temp = ex1; + ex1 = ex2; + ex2 = temp; + } + if (ey1 > ey2) { + var _temp = ey1; + ey1 = ey2; + ey2 = _temp; + } + updateBounds(bounds4, ex1 - wHalf, ey1 - wHalf, ex2 + wHalf, ey2 + wHalf); + } + } else if (curveStyle === "bezier" || curveStyle === "unbundled-bezier" || endsWith(curveStyle, "segments") || endsWith(curveStyle, "taxi")) { + var pts2; + switch (curveStyle) { + case "bezier": + case "unbundled-bezier": + pts2 = rstyle.bezierPts; + break; + case "segments": + case "taxi": + case "round-segments": + case "round-taxi": + pts2 = rstyle.linePts; + break; + } + if (pts2 != null) { + for (var j3 = 0; j3 < pts2.length; j3++) { + var pt = pts2[j3]; + ex1 = pt.x - wHalf; + ex2 = pt.x + wHalf; + ey1 = pt.y - wHalf; + ey2 = pt.y + wHalf; + updateBounds(bounds4, ex1, ey1, ex2, ey2); + } + } + } + } else { + var n1 = ele.source(); + var n1pos = n1.position(); + var n2 = ele.target(); + var n2pos = n2.position(); + ex1 = n1pos.x; + ex2 = n2pos.x; + ey1 = n1pos.y; + ey2 = n2pos.y; + if (ex1 > ex2) { + var _temp2 = ex1; + ex1 = ex2; + ex2 = _temp2; + } + if (ey1 > ey2) { + var _temp3 = ey1; + ey1 = ey2; + ey2 = _temp3; + } + ex1 -= wHalf; + ex2 += wHalf; + ey1 -= wHalf; + ey2 += wHalf; + updateBounds(bounds4, ex1, ey1, ex2, ey2); + } + } + if (styleEnabled2 && options2.includeEdges && isEdge2) { + updateBoundsFromArrow(bounds4, ele, "mid-source"); + updateBoundsFromArrow(bounds4, ele, "mid-target"); + updateBoundsFromArrow(bounds4, ele, "source"); + updateBoundsFromArrow(bounds4, ele, "target"); + } + if (styleEnabled2) { + var ghost = ele.pstyle("ghost").value === "yes"; + if (ghost) { + var gx = ele.pstyle("ghost-offset-x").pfValue; + var gy = ele.pstyle("ghost-offset-y").pfValue; + updateBounds(bounds4, bounds4.x1 + gx, bounds4.y1 + gy, bounds4.x2 + gx, bounds4.y2 + gy); + } + } + var bbBody = _p.bodyBounds = _p.bodyBounds || {}; + assignBoundingBox(bbBody, bounds4); + expandBoundingBoxSides(bbBody, manualExpansion); + expandBoundingBox(bbBody, 1); + if (styleEnabled2) { + ex1 = bounds4.x1; + ex2 = bounds4.x2; + ey1 = bounds4.y1; + ey2 = bounds4.y2; + updateBounds(bounds4, ex1 - padding2, ey1 - padding2, ex2 + padding2, ey2 + padding2); + } + var bbOverlay = _p.overlayBounds = _p.overlayBounds || {}; + assignBoundingBox(bbOverlay, bounds4); + expandBoundingBoxSides(bbOverlay, manualExpansion); + expandBoundingBox(bbOverlay, 1); + var bbLabels = _p.labelBounds = _p.labelBounds || {}; + if (bbLabels.all != null) { + clearBoundingBox(bbLabels.all); + } else { + bbLabels.all = makeBoundingBox(); + } + if (styleEnabled2 && options2.includeLabels) { + if (options2.includeMainLabels) { + updateBoundsFromLabel(bounds4, ele, null); + } + if (isEdge2) { + if (options2.includeSourceLabels) { + updateBoundsFromLabel(bounds4, ele, "source"); + } + if (options2.includeTargetLabels) { + updateBoundsFromLabel(bounds4, ele, "target"); + } + } } - }); - if (altsCurrPathAppearsIn.length > 1 && !containsPath(foundAmbiguousPaths, currPath)) { - foundAmbiguousPaths.push(currPath); - result.push({ - alts: altsCurrPathAppearsIn, - path: currPath - }); - } - }); - return result; - }, []); - const currErrors = map_default(identicalAmbiguities, (currAmbDescriptor) => { - const ambgIndices = map_default(currAmbDescriptor.alts, (currAltIdx) => currAltIdx + 1); - const currMessage = errMsgProvider.buildAlternationAmbiguityError({ - topLevelRule: rule, - alternation: alternation2, - ambiguityIndices: ambgIndices, - prefixPath: currAmbDescriptor.path - }); - return { - message: currMessage, - type: ParserDefinitionErrorType.AMBIGUOUS_ALTS, - ruleName: rule.name, - occurrence: alternation2.idx, - alternatives: currAmbDescriptor.alts - }; - }); - return currErrors; - } - function checkPrefixAlternativesAmbiguities(alternatives, alternation2, rule, errMsgProvider) { - const pathsAndIndices = reduce_default(alternatives, (result, currAlt, idx) => { - const currPathsAndIdx = map_default(currAlt, (currPath) => { - return { idx, path: currPath }; - }); - return result.concat(currPathsAndIdx); - }, []); - const errors = compact_default(flatMap_default(pathsAndIndices, (currPathAndIdx) => { - const alternativeGast = alternation2.definition[currPathAndIdx.idx]; - if (alternativeGast.ignoreAmbiguities === true) { - return []; - } - const targetIdx = currPathAndIdx.idx; - const targetPath = currPathAndIdx.path; - const prefixAmbiguitiesPathsAndIndices = filter_default3(pathsAndIndices, (searchPathAndIdx) => { - return ( - // ignore (skip) ambiguities with this "other" alternative - alternation2.definition[searchPathAndIdx.idx].ignoreAmbiguities !== true && searchPathAndIdx.idx < targetIdx && // checking for strict prefix because identical lookaheads - // will be be detected using a different validation. - isStrictPrefixOfPath(searchPathAndIdx.path, targetPath) - ); - }); - const currPathPrefixErrors = map_default(prefixAmbiguitiesPathsAndIndices, (currAmbPathAndIdx) => { - const ambgIndices = [currAmbPathAndIdx.idx + 1, targetIdx + 1]; - const occurrence = alternation2.idx === 0 ? "" : alternation2.idx; - const message = errMsgProvider.buildAlternationPrefixAmbiguityError({ - topLevelRule: rule, - alternation: alternation2, - ambiguityIndices: ambgIndices, - prefixPath: currAmbPathAndIdx.path - }); - return { - message, - type: ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS, - ruleName: rule.name, - occurrence, - alternatives: ambgIndices - }; - }); - return currPathPrefixErrors; - })); - return errors; - } - function checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider) { - const errors = []; - const tokenNames = map_default(tokenTypes, (currToken) => currToken.name); - forEach_default(topLevels, (currRule) => { - const currRuleName = currRule.name; - if (includes_default(tokenNames, currRuleName)) { - const errMsg = errMsgProvider.buildNamespaceConflictError(currRule); - errors.push({ - message: errMsg, - type: ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE, - ruleName: currRuleName - }); - } - }); - return errors; - } - var OccurrenceValidationCollector, OrCollector, RepetitionCollector; - var init_checks = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/checks.js"() { - "use strict"; - init_lodash(); - init_parser(); - init_api3(); - init_lookahead(); - init_interpreter(); - init_tokens(); - __name(validateLookahead, "validateLookahead"); - __name(validateGrammar, "validateGrammar"); - __name(validateDuplicateProductions, "validateDuplicateProductions"); - __name(identifyProductionForDuplicates, "identifyProductionForDuplicates"); - __name(getExtraProductionArgument, "getExtraProductionArgument"); - OccurrenceValidationCollector = class extends GAstVisitor { - static { - __name(this, "OccurrenceValidationCollector"); - } - constructor() { - super(...arguments); - this.allProductions = []; - } - visitNonTerminal(subrule) { - this.allProductions.push(subrule); - } - visitOption(option2) { - this.allProductions.push(option2); - } - visitRepetitionWithSeparator(manySep) { - this.allProductions.push(manySep); - } - visitRepetitionMandatory(atLeastOne) { - this.allProductions.push(atLeastOne); } - visitRepetitionMandatoryWithSeparator(atLeastOneSep) { - this.allProductions.push(atLeastOneSep); + bounds4.x1 = noninf(bounds4.x1); + bounds4.y1 = noninf(bounds4.y1); + bounds4.x2 = noninf(bounds4.x2); + bounds4.y2 = noninf(bounds4.y2); + bounds4.w = noninf(bounds4.x2 - bounds4.x1); + bounds4.h = noninf(bounds4.y2 - bounds4.y1); + if (bounds4.w > 0 && bounds4.h > 0 && displayed) { + expandBoundingBoxSides(bounds4, manualExpansion); + expandBoundingBox(bounds4, 1); } - visitRepetition(many) { - this.allProductions.push(many); + return bounds4; + }, "boundingBoxImpl"); + getKey = /* @__PURE__ */ __name(function getKey2(opts) { + var i2 = 0; + var tf = /* @__PURE__ */ __name(function tf2(val) { + return (val ? 1 : 0) << i2++; + }, "tf"); + var key = 0; + key += tf(opts.incudeNodes); + key += tf(opts.includeEdges); + key += tf(opts.includeLabels); + key += tf(opts.includeMainLabels); + key += tf(opts.includeSourceLabels); + key += tf(opts.includeTargetLabels); + key += tf(opts.includeOverlays); + key += tf(opts.includeOutlines); + return key; + }, "getKey"); + getBoundingBoxPosKey = /* @__PURE__ */ __name(function getBoundingBoxPosKey2(ele) { + var r2 = /* @__PURE__ */ __name(function r3(x5) { + return Math.round(x5); + }, "r"); + if (ele.isEdge()) { + var p1 = ele.source().position(); + var p22 = ele.target().position(); + return hashIntsArray([r2(p1.x), r2(p1.y), r2(p22.x), r2(p22.y)]); + } else { + var p3 = ele.position(); + return hashIntsArray([r2(p3.x), r2(p3.y)]); } - visitAlternation(or) { - this.allProductions.push(or); + }, "getBoundingBoxPosKey"); + cachedBoundingBoxImpl = /* @__PURE__ */ __name(function cachedBoundingBoxImpl2(ele, opts) { + var _p = ele._private; + var bb; + var isEdge2 = ele.isEdge(); + var key = opts == null ? defBbOptsKey : getKey(opts); + var usingDefOpts = key === defBbOptsKey; + if (_p.bbCache == null) { + bb = boundingBoxImpl(ele, defBbOpts); + _p.bbCache = bb; + _p.bbCachePosKey = getBoundingBoxPosKey(ele); + } else { + bb = _p.bbCache; } - visitTerminal(terminal) { - this.allProductions.push(terminal); + if (!usingDefOpts) { + var isNode2 = ele.isNode(); + bb = makeBoundingBox(); + if (opts.includeNodes && isNode2 || opts.includeEdges && !isNode2) { + if (opts.includeOverlays) { + updateBoundsFromBox(bb, _p.overlayBounds); + } else { + updateBoundsFromBox(bb, _p.bodyBounds); + } + } + if (opts.includeLabels) { + if (opts.includeMainLabels && (!isEdge2 || opts.includeSourceLabels && opts.includeTargetLabels)) { + updateBoundsFromBox(bb, _p.labelBounds.all); + } else { + if (opts.includeMainLabels) { + updateBoundsFromBox(bb, _p.labelBounds.mainRot); + } + if (opts.includeSourceLabels) { + updateBoundsFromBox(bb, _p.labelBounds.sourceRot); + } + if (opts.includeTargetLabels) { + updateBoundsFromBox(bb, _p.labelBounds.targetRot); + } + } + } + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; } + return bb; + }, "cachedBoundingBoxImpl"); + defBbOpts = { + includeNodes: true, + includeEdges: true, + includeLabels: true, + includeMainLabels: true, + includeSourceLabels: true, + includeTargetLabels: true, + includeOverlays: true, + includeUnderlays: true, + includeOutlines: true, + useCache: true }; - __name(validateRuleDoesNotAlreadyExist, "validateRuleDoesNotAlreadyExist"); - __name(validateRuleIsOverridden, "validateRuleIsOverridden"); - __name(validateNoLeftRecursion, "validateNoLeftRecursion"); - __name(getFirstNoneTerminal, "getFirstNoneTerminal"); - OrCollector = class extends GAstVisitor { - static { - __name(this, "OrCollector"); - } - constructor() { - super(...arguments); - this.alternations = []; - } - visitAlternation(node2) { - this.alternations.push(node2); + defBbOptsKey = getKey(defBbOpts); + filledBbOpts = defaults$g(defBbOpts); + elesfn$b.boundingBox = function(options2) { + var bounds4; + var useCache = options2 === void 0 || options2.useCache === void 0 || options2.useCache === true; + var isDirty = memoize2(function(ele2) { + var _p = ele2._private; + return _p.bbCache == null || _p.styleDirty || _p.bbCachePosKey !== getBoundingBoxPosKey(ele2); + }, function(ele2) { + return ele2.id(); + }); + if (useCache && this.length === 1 && !isDirty(this[0])) { + if (options2 === void 0) { + options2 = defBbOpts; + } else { + options2 = filledBbOpts(options2); + } + bounds4 = cachedBoundingBoxImpl(this[0], options2); + } else { + bounds4 = makeBoundingBox(); + options2 = options2 || defBbOpts; + var opts = filledBbOpts(options2); + var eles = this; + var cy = eles.cy(); + var styleEnabled2 = cy.styleEnabled(); + this.edges().forEach(isDirty); + this.nodes().forEach(isDirty); + if (styleEnabled2) { + this.recalculateRenderedStyle(useCache); + } + this.updateCompoundBounds(!useCache); + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + if (isDirty(ele)) { + ele.dirtyBoundingBoxCache(); + } + updateBoundsFromBox(bounds4, cachedBoundingBoxImpl(ele, opts)); + } } + bounds4.x1 = noninf(bounds4.x1); + bounds4.y1 = noninf(bounds4.y1); + bounds4.x2 = noninf(bounds4.x2); + bounds4.y2 = noninf(bounds4.y2); + bounds4.w = noninf(bounds4.x2 - bounds4.x1); + bounds4.h = noninf(bounds4.y2 - bounds4.y1); + return bounds4; }; - __name(validateEmptyOrAlternative, "validateEmptyOrAlternative"); - __name(validateAmbiguousAlternationAlternatives, "validateAmbiguousAlternationAlternatives"); - RepetitionCollector = class extends GAstVisitor { - static { - __name(this, "RepetitionCollector"); - } - constructor() { - super(...arguments); - this.allProductions = []; + elesfn$b.dirtyBoundingBoxCache = function() { + for (var i2 = 0; i2 < this.length; i2++) { + var _p = this[i2]._private; + _p.bbCache = null; + _p.bbCachePosKey = null; + _p.bodyBounds = null; + _p.overlayBounds = null; + _p.labelBounds.all = null; + _p.labelBounds.source = null; + _p.labelBounds.target = null; + _p.labelBounds.main = null; + _p.labelBounds.sourceRot = null; + _p.labelBounds.targetRot = null; + _p.labelBounds.mainRot = null; + _p.arrowBounds.source = null; + _p.arrowBounds.target = null; + _p.arrowBounds["mid-source"] = null; + _p.arrowBounds["mid-target"] = null; } - visitRepetitionWithSeparator(manySep) { - this.allProductions.push(manySep); + this.emitAndNotify("bounds"); + return this; + }; + elesfn$b.boundingBoxAt = function(fn3) { + var nodes5 = this.nodes(); + var cy = this.cy(); + var hasCompoundNodes2 = cy.hasCompoundNodes(); + var parents3 = cy.collection(); + if (hasCompoundNodes2) { + parents3 = nodes5.filter(function(node2) { + return node2.isParent(); + }); + nodes5 = nodes5.not(parents3); } - visitRepetitionMandatory(atLeastOne) { - this.allProductions.push(atLeastOne); + if (plainObject(fn3)) { + var obj = fn3; + fn3 = /* @__PURE__ */ __name(function fn4() { + return obj; + }, "fn"); } - visitRepetitionMandatoryWithSeparator(atLeastOneSep) { - this.allProductions.push(atLeastOneSep); + var storeOldPos = /* @__PURE__ */ __name(function storeOldPos2(node2, i2) { + return node2._private.bbAtOldPos = fn3(node2, i2); + }, "storeOldPos"); + var getOldPos = /* @__PURE__ */ __name(function getOldPos2(node2) { + return node2._private.bbAtOldPos; + }, "getOldPos"); + cy.startBatch(); + nodes5.forEach(storeOldPos).silentPositions(fn3); + if (hasCompoundNodes2) { + parents3.dirtyCompoundBoundsCache(); + parents3.dirtyBoundingBoxCache(); + parents3.updateCompoundBounds(true); } - visitRepetition(many) { - this.allProductions.push(many); + var bb = copyBoundingBox(this.boundingBox({ + useCache: false + })); + nodes5.silentPositions(getOldPos); + if (hasCompoundNodes2) { + parents3.dirtyCompoundBoundsCache(); + parents3.dirtyBoundingBoxCache(); + parents3.updateCompoundBounds(true); } + cy.endBatch(); + return bb; }; - __name(validateTooManyAlts, "validateTooManyAlts"); - __name(validateSomeNonEmptyLookaheadPath, "validateSomeNonEmptyLookaheadPath"); - __name(checkAlternativesAmbiguities, "checkAlternativesAmbiguities"); - __name(checkPrefixAlternativesAmbiguities, "checkPrefixAlternativesAmbiguities"); - __name(checkTerminalAndNoneTerminalsNameSpace, "checkTerminalAndNoneTerminalsNameSpace"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_resolver_public.js - function resolveGrammar2(options3) { - const actualOptions = defaults_default(options3, { - errMsgProvider: defaultGrammarResolverErrorProvider - }); - const topRulesTable = {}; - forEach_default(options3.rules, (rule) => { - topRulesTable[rule.name] = rule; - }); - return resolveGrammar(topRulesTable, actualOptions.errMsgProvider); - } - function validateGrammar2(options3) { - options3 = defaults_default(options3, { - errMsgProvider: defaultGrammarValidatorErrorProvider - }); - return validateGrammar(options3.rules, options3.tokenTypes, options3.errMsgProvider, options3.grammarName); - } - var init_gast_resolver_public = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_resolver_public.js"() { - "use strict"; - init_lodash(); - init_resolver(); - init_checks(); - init_errors_public(); - __name(resolveGrammar2, "resolveGrammar"); - __name(validateGrammar2, "validateGrammar"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/exceptions_public.js - function isRecognitionException(error3) { - return includes_default(RECOGNITION_EXCEPTION_NAMES, error3.name); - } - var MISMATCHED_TOKEN_EXCEPTION, NO_VIABLE_ALT_EXCEPTION, EARLY_EXIT_EXCEPTION, NOT_ALL_INPUT_PARSED_EXCEPTION, RECOGNITION_EXCEPTION_NAMES, RecognitionException, MismatchedTokenException, NoViableAltException, NotAllInputParsedException, EarlyExitException; - var init_exceptions_public = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/exceptions_public.js"() { - "use strict"; - init_lodash(); - MISMATCHED_TOKEN_EXCEPTION = "MismatchedTokenException"; - NO_VIABLE_ALT_EXCEPTION = "NoViableAltException"; - EARLY_EXIT_EXCEPTION = "EarlyExitException"; - NOT_ALL_INPUT_PARSED_EXCEPTION = "NotAllInputParsedException"; - RECOGNITION_EXCEPTION_NAMES = [ - MISMATCHED_TOKEN_EXCEPTION, - NO_VIABLE_ALT_EXCEPTION, - EARLY_EXIT_EXCEPTION, - NOT_ALL_INPUT_PARSED_EXCEPTION - ]; - Object.freeze(RECOGNITION_EXCEPTION_NAMES); - __name(isRecognitionException, "isRecognitionException"); - RecognitionException = class extends Error { - static { - __name(this, "RecognitionException"); - } - constructor(message, token2) { - super(message); - this.token = token2; - this.resyncedTokens = []; - Object.setPrototypeOf(this, new.target.prototype); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); + fn$3.boundingbox = fn$3.bb = fn$3.boundingBox; + fn$3.renderedBoundingbox = fn$3.renderedBoundingBox; + bounds = elesfn$b; + fn$2 = elesfn$a = {}; + defineDimFns = /* @__PURE__ */ __name(function defineDimFns2(opts) { + opts.uppercaseName = capitalize(opts.name); + opts.autoName = "auto" + opts.uppercaseName; + opts.labelName = "label" + opts.uppercaseName; + opts.outerName = "outer" + opts.uppercaseName; + opts.uppercaseOuterName = capitalize(opts.outerName); + fn$2[opts.name] = /* @__PURE__ */ __name(function dimImpl() { + var ele = this[0]; + var _p = ele._private; + var cy = _p.cy; + var styleEnabled2 = cy._private.styleEnabled; + if (ele) { + if (styleEnabled2) { + if (ele.isParent()) { + ele.updateCompoundBounds(); + return _p[opts.autoName] || 0; + } + var d3 = ele.pstyle(opts.name); + switch (d3.strValue) { + case "label": + ele.recalculateRenderedStyle(); + return _p.rstyle[opts.labelName] || 0; + default: + return d3.pfValue; + } + } else { + return 1; + } } + }, "dimImpl"); + fn$2["outer" + opts.uppercaseName] = /* @__PURE__ */ __name(function outerDimImpl() { + var ele = this[0]; + var _p = ele._private; + var cy = _p.cy; + var styleEnabled2 = cy._private.styleEnabled; + if (ele) { + if (styleEnabled2) { + var dim = ele[opts.name](); + var borderPos = ele.pstyle("border-position").value; + var border; + if (borderPos === "center") { + border = ele.pstyle("border-width").pfValue; + } else if (borderPos === "outside") { + border = 2 * ele.pstyle("border-width").pfValue; + } else { + border = 0; + } + var padding2 = 2 * ele.padding(); + return dim + border + padding2; + } else { + return 1; + } + } + }, "outerDimImpl"); + fn$2["rendered" + opts.uppercaseName] = /* @__PURE__ */ __name(function renderedDimImpl() { + var ele = this[0]; + if (ele) { + var d3 = ele[opts.name](); + return d3 * this.cy().zoom(); + } + }, "renderedDimImpl"); + fn$2["rendered" + opts.uppercaseOuterName] = /* @__PURE__ */ __name(function renderedOuterDimImpl() { + var ele = this[0]; + if (ele) { + var od = ele[opts.outerName](); + return od * this.cy().zoom(); + } + }, "renderedOuterDimImpl"); + }, "defineDimFns"); + defineDimFns({ + name: "width" + }); + defineDimFns({ + name: "height" + }); + elesfn$a.padding = function() { + var ele = this[0]; + var _p = ele._private; + if (ele.isParent()) { + ele.updateCompoundBounds(); + if (_p.autoPadding !== void 0) { + return _p.autoPadding; + } else { + return ele.pstyle("padding").pfValue; + } + } else { + return ele.pstyle("padding").pfValue; } }; - MismatchedTokenException = class extends RecognitionException { - static { - __name(this, "MismatchedTokenException"); - } - constructor(message, token2, previousToken) { - super(message, token2); - this.previousToken = previousToken; - this.name = MISMATCHED_TOKEN_EXCEPTION; - } - }; - NoViableAltException = class extends RecognitionException { - static { - __name(this, "NoViableAltException"); - } - constructor(message, token2, previousToken) { - super(message, token2); - this.previousToken = previousToken; - this.name = NO_VIABLE_ALT_EXCEPTION; - } + elesfn$a.paddedHeight = function() { + var ele = this[0]; + return ele.height() + 2 * ele.padding(); }; - NotAllInputParsedException = class extends RecognitionException { - static { - __name(this, "NotAllInputParsedException"); - } - constructor(message, token2) { - super(message, token2); - this.name = NOT_ALL_INPUT_PARSED_EXCEPTION; - } + elesfn$a.paddedWidth = function() { + var ele = this[0]; + return ele.width() + 2 * ele.padding(); }; - EarlyExitException = class extends RecognitionException { - static { - __name(this, "EarlyExitException"); + widthHeight = elesfn$a; + ifEdge = /* @__PURE__ */ __name(function ifEdge2(ele, getValue3) { + if (ele.isEdge() && ele.takesUpSpace()) { + return getValue3(ele); } - constructor(message, token2, previousToken) { - super(message, token2); - this.previousToken = previousToken; - this.name = EARLY_EXIT_EXCEPTION; + }, "ifEdge"); + ifEdgeRenderedPosition = /* @__PURE__ */ __name(function ifEdgeRenderedPosition2(ele, getPoint) { + if (ele.isEdge() && ele.takesUpSpace()) { + var cy = ele.cy(); + return modelToRenderedPosition$1(getPoint(ele), cy.zoom(), cy.pan()); } - }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recoverable.js - function attemptInRepetitionRecovery(prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) { - const key = this.getKeyForAutomaticLookahead(dslMethodIdx, prodOccurrence); - let firstAfterRepInfo = this.firstAfterRepMap[key]; - if (firstAfterRepInfo === void 0) { - const currRuleName = this.getCurrRuleFullName(); - const ruleGrammar = this.getGAstProductions()[currRuleName]; - const walker = new nextToksWalker(ruleGrammar, prodOccurrence); - firstAfterRepInfo = walker.startWalking(); - this.firstAfterRepMap[key] = firstAfterRepInfo; - } - let expectTokAfterLastMatch = firstAfterRepInfo.token; - let nextTokIdx = firstAfterRepInfo.occurrence; - const isEndOfRule = firstAfterRepInfo.isEndOfRule; - if (this.RULE_STACK.length === 1 && isEndOfRule && expectTokAfterLastMatch === void 0) { - expectTokAfterLastMatch = EOF; - nextTokIdx = 1; - } - if (expectTokAfterLastMatch === void 0 || nextTokIdx === void 0) { - return; - } - if (this.shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch, nextTokIdx, notStuck)) { - this.tryInRepetitionRecovery(prodFunc, args, lookaheadFunc, expectTokAfterLastMatch); - } - } - var EOF_FOLLOW_KEY, IN_RULE_RECOVERY_EXCEPTION, InRuleRecoveryException, Recoverable; - var init_recoverable = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recoverable.js"() { - "use strict"; - init_tokens_public(); - init_lodash(); - init_exceptions_public(); - init_constants2(); - init_parser(); - EOF_FOLLOW_KEY = {}; - IN_RULE_RECOVERY_EXCEPTION = "InRuleRecoveryException"; - InRuleRecoveryException = class extends Error { - static { - __name(this, "InRuleRecoveryException"); + }, "ifEdgeRenderedPosition"); + ifEdgeRenderedPositions = /* @__PURE__ */ __name(function ifEdgeRenderedPositions2(ele, getPoints) { + if (ele.isEdge() && ele.takesUpSpace()) { + var cy = ele.cy(); + var pan2 = cy.pan(); + var zoom2 = cy.zoom(); + return getPoints(ele).map(function(p3) { + return modelToRenderedPosition$1(p3, zoom2, pan2); + }); } - constructor(message) { - super(message); - this.name = IN_RULE_RECOVERY_EXCEPTION; + }, "ifEdgeRenderedPositions"); + controlPoints2 = /* @__PURE__ */ __name(function controlPoints3(ele) { + return ele.renderer().getControlPoints(ele); + }, "controlPoints"); + segmentPoints = /* @__PURE__ */ __name(function segmentPoints2(ele) { + return ele.renderer().getSegmentPoints(ele); + }, "segmentPoints"); + sourceEndpoint = /* @__PURE__ */ __name(function sourceEndpoint2(ele) { + return ele.renderer().getSourceEndpoint(ele); + }, "sourceEndpoint"); + targetEndpoint = /* @__PURE__ */ __name(function targetEndpoint2(ele) { + return ele.renderer().getTargetEndpoint(ele); + }, "targetEndpoint"); + midpoint = /* @__PURE__ */ __name(function midpoint2(ele) { + return ele.renderer().getEdgeMidpoint(ele); + }, "midpoint"); + pts = { + controlPoints: { + get: controlPoints2, + mult: true + }, + segmentPoints: { + get: segmentPoints, + mult: true + }, + sourceEndpoint: { + get: sourceEndpoint + }, + targetEndpoint: { + get: targetEndpoint + }, + midpoint: { + get: midpoint } }; - Recoverable = class { - static { - __name(this, "Recoverable"); - } - initRecoverable(config5) { - this.firstAfterRepMap = {}; - this.resyncFollows = {}; - this.recoveryEnabled = has_default(config5, "recoveryEnabled") ? config5.recoveryEnabled : DEFAULT_PARSER_CONFIG.recoveryEnabled; - if (this.recoveryEnabled) { - this.attemptInRepetitionRecovery = attemptInRepetitionRecovery; - } - } - getTokenToInsert(tokType) { - const tokToInsert = createTokenInstance(tokType, "", NaN, NaN, NaN, NaN, NaN, NaN); - tokToInsert.isInsertedInRecovery = true; - return tokToInsert; - } - canTokenTypeBeInsertedInRecovery(tokType) { - return true; - } - canTokenTypeBeDeletedInRecovery(tokType) { - return true; + renderedName = /* @__PURE__ */ __name(function renderedName2(name) { + return "rendered" + name[0].toUpperCase() + name.substr(1); + }, "renderedName"); + edgePoints = Object.keys(pts).reduce(function(obj, name) { + var spec = pts[name]; + var rName = renderedName(name); + obj[name] = function() { + return ifEdge(this, spec.get); + }; + if (spec.mult) { + obj[rName] = function() { + return ifEdgeRenderedPositions(this, spec.get); + }; + } else { + obj[rName] = function() { + return ifEdgeRenderedPosition(this, spec.get); + }; } - tryInRepetitionRecovery(grammarRule, grammarRuleArgs, lookAheadFunc, expectedTokType) { - const reSyncTokType = this.findReSyncTokenType(); - const savedLexerState = this.exportLexerState(); - const resyncedTokens = []; - let passedResyncPoint = false; - const nextTokenWithoutResync = this.LA(1); - let currToken = this.LA(1); - const generateErrorMessage = /* @__PURE__ */ __name(() => { - const previousToken = this.LA(0); - const msg = this.errorMessageProvider.buildMismatchTokenMessage({ - expected: expectedTokType, - actual: nextTokenWithoutResync, - previous: previousToken, - ruleName: this.getCurrRuleFullName() - }); - const error3 = new MismatchedTokenException(msg, nextTokenWithoutResync, this.LA(0)); - error3.resyncedTokens = dropRight_default(resyncedTokens); - this.SAVE_ERROR(error3); - }, "generateErrorMessage"); - while (!passedResyncPoint) { - if (this.tokenMatcher(currToken, expectedTokType)) { - generateErrorMessage(); - return; - } else if (lookAheadFunc.call(this)) { - generateErrorMessage(); - grammarRule.apply(this, grammarRuleArgs); - return; - } else if (this.tokenMatcher(currToken, reSyncTokType)) { - passedResyncPoint = true; - } else { - currToken = this.SKIP_TOKEN(); - this.addToResyncTokens(currToken, resyncedTokens); - } + return obj; + }, {}); + dimensions = extend4({}, position2, bounds, widthHeight, edgePoints); + Event = /* @__PURE__ */ __name(function Event2(src, props) { + this.recycle(src, props); + }, "Event"); + __name(returnFalse, "returnFalse"); + __name(returnTrue, "returnTrue"); + Event.prototype = { + instanceString: /* @__PURE__ */ __name(function instanceString2() { + return "event"; + }, "instanceString"), + recycle: /* @__PURE__ */ __name(function recycle(src, props) { + this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = returnFalse; + if (src != null && src.preventDefault) { + this.type = src.type; + this.isDefaultPrevented = src.defaultPrevented ? returnTrue : returnFalse; + } else if (src != null && src.type) { + props = src; + } else { + this.type = src; } - this.importLexerState(savedLexerState); - } - shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch, nextTokIdx, notStuck) { - if (notStuck === false) { - return false; + if (props != null) { + this.originalEvent = props.originalEvent; + this.type = props.type != null ? props.type : this.type; + this.cy = props.cy; + this.target = props.target; + this.position = props.position; + this.renderedPosition = props.renderedPosition; + this.namespace = props.namespace; + this.layout = props.layout; } - if (this.tokenMatcher(this.LA(1), expectTokAfterLastMatch)) { - return false; + if (this.cy != null && this.position != null && this.renderedPosition == null) { + var pos = this.position; + var zoom2 = this.cy.zoom(); + var pan2 = this.cy.pan(); + this.renderedPosition = { + x: pos.x * zoom2 + pan2.x, + y: pos.y * zoom2 + pan2.y + }; } - if (this.isBackTracking()) { - return false; + this.timeStamp = src && src.timeStamp || Date.now(); + }, "recycle"), + preventDefault: /* @__PURE__ */ __name(function preventDefault() { + this.isDefaultPrevented = returnTrue; + var e3 = this.originalEvent; + if (!e3) { + return; } - if (this.canPerformInRuleRecovery(expectTokAfterLastMatch, this.getFollowsForInRuleRecovery(expectTokAfterLastMatch, nextTokIdx))) { - return false; + if (e3.preventDefault) { + e3.preventDefault(); } - return true; - } - // Error Recovery functionality - getFollowsForInRuleRecovery(tokType, tokIdxInRule) { - const grammarPath = this.getCurrentGrammarPath(tokType, tokIdxInRule); - const follows = this.getNextPossibleTokenTypes(grammarPath); - return follows; - } - tryInRuleRecovery(expectedTokType, follows) { - if (this.canRecoverWithSingleTokenInsertion(expectedTokType, follows)) { - const tokToInsert = this.getTokenToInsert(expectedTokType); - return tokToInsert; + }, "preventDefault"), + stopPropagation: /* @__PURE__ */ __name(function stopPropagation() { + this.isPropagationStopped = returnTrue; + var e3 = this.originalEvent; + if (!e3) { + return; } - if (this.canRecoverWithSingleTokenDeletion(expectedTokType)) { - const nextTok = this.SKIP_TOKEN(); - this.consumeToken(); - return nextTok; + if (e3.stopPropagation) { + e3.stopPropagation(); } - throw new InRuleRecoveryException("sad sad panda"); - } - canPerformInRuleRecovery(expectedToken, follows) { - return this.canRecoverWithSingleTokenInsertion(expectedToken, follows) || this.canRecoverWithSingleTokenDeletion(expectedToken); + }, "stopPropagation"), + stopImmediatePropagation: /* @__PURE__ */ __name(function stopImmediatePropagation() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, "stopImmediatePropagation"), + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse + }; + eventRegex = /^([^.]+)(\.(?:[^.]+))?$/; + universalNamespace = ".*"; + defaults$8 = { + qualifierCompare: /* @__PURE__ */ __name(function qualifierCompare(q1, q22) { + return q1 === q22; + }, "qualifierCompare"), + eventMatches: /* @__PURE__ */ __name(function eventMatches() { + return true; + }, "eventMatches"), + addEventFields: /* @__PURE__ */ __name(function addEventFields() { + }, "addEventFields"), + callbackContext: /* @__PURE__ */ __name(function callbackContext(context) { + return context; + }, "callbackContext"), + beforeEmit: /* @__PURE__ */ __name(function beforeEmit() { + }, "beforeEmit"), + afterEmit: /* @__PURE__ */ __name(function afterEmit() { + }, "afterEmit"), + bubble: /* @__PURE__ */ __name(function bubble() { + return false; + }, "bubble"), + parent: /* @__PURE__ */ __name(function parent2() { + return null; + }, "parent"), + context: null + }; + defaultsKeys = Object.keys(defaults$8); + emptyOpts = {}; + __name(Emitter, "Emitter"); + p2 = Emitter.prototype; + forEachEvent = /* @__PURE__ */ __name(function forEachEvent2(self2, handler, events, qualifier, callback, conf5, confOverrides) { + if (fn$6(qualifier)) { + callback = qualifier; + qualifier = null; } - canRecoverWithSingleTokenInsertion(expectedTokType, follows) { - if (!this.canTokenTypeBeInsertedInRecovery(expectedTokType)) { - return false; - } - if (isEmpty_default(follows)) { - return false; + if (confOverrides) { + if (conf5 == null) { + conf5 = confOverrides; + } else { + conf5 = extend4({}, conf5, confOverrides); } - const mismatchedTok = this.LA(1); - const isMisMatchedTokInFollows = find_default(follows, (possibleFollowsTokType) => { - return this.tokenMatcher(mismatchedTok, possibleFollowsTokType); - }) !== void 0; - return isMisMatchedTokInFollows; } - canRecoverWithSingleTokenDeletion(expectedTokType) { - if (!this.canTokenTypeBeDeletedInRecovery(expectedTokType)) { - return false; + var eventList = array2(events) ? events : events.split(/\s+/); + for (var i2 = 0; i2 < eventList.length; i2++) { + var evt = eventList[i2]; + if (emptyString(evt)) { + continue; } - const isNextTokenWhatIsExpected = this.tokenMatcher(this.LA(2), expectedTokType); - return isNextTokenWhatIsExpected; - } - isInCurrentRuleReSyncSet(tokenTypeIdx) { - const followKey = this.getCurrFollowKey(); - const currentRuleReSyncSet = this.getFollowSetFromFollowKey(followKey); - return includes_default(currentRuleReSyncSet, tokenTypeIdx); - } - findReSyncTokenType() { - const allPossibleReSyncTokTypes = this.flattenFollowSet(); - let nextToken = this.LA(1); - let k2 = 2; - while (true) { - const foundMatch = find_default(allPossibleReSyncTokTypes, (resyncTokType) => { - const canMatch = tokenMatcher(nextToken, resyncTokType); - return canMatch; - }); - if (foundMatch !== void 0) { - return foundMatch; + var match2 = evt.match(eventRegex); + if (match2) { + var type3 = match2[1]; + var namespace = match2[2] ? match2[2] : null; + var ret = handler(self2, evt, type3, namespace, qualifier, callback, conf5); + if (ret === false) { + break; } - nextToken = this.LA(k2); - k2++; - } - } - getCurrFollowKey() { - if (this.RULE_STACK.length === 1) { - return EOF_FOLLOW_KEY; } - const currRuleShortName = this.getLastExplicitRuleShortName(); - const currRuleIdx = this.getLastExplicitRuleOccurrenceIndex(); - const prevRuleShortName = this.getPreviousExplicitRuleShortName(); - return { - ruleName: this.shortRuleNameToFullName(currRuleShortName), - idxInCallingRule: currRuleIdx, - inRule: this.shortRuleNameToFullName(prevRuleShortName) - }; - } - buildFullFollowKeyStack() { - const explicitRuleStack = this.RULE_STACK; - const explicitOccurrenceStack = this.RULE_OCCURRENCE_STACK; - return map_default(explicitRuleStack, (ruleName, idx) => { - if (idx === 0) { - return EOF_FOLLOW_KEY; - } - return { - ruleName: this.shortRuleNameToFullName(ruleName), - idxInCallingRule: explicitOccurrenceStack[idx], - inRule: this.shortRuleNameToFullName(explicitRuleStack[idx - 1]) - }; - }); - } - flattenFollowSet() { - const followStack = map_default(this.buildFullFollowKeyStack(), (currKey) => { - return this.getFollowSetFromFollowKey(currKey); - }); - return flatten_default(followStack); } - getFollowSetFromFollowKey(followKey) { - if (followKey === EOF_FOLLOW_KEY) { - return [EOF]; - } - const followName = followKey.ruleName + followKey.idxInCallingRule + IN + followKey.inRule; - return this.resyncFollows[followName]; + }, "forEachEvent"); + makeEventObj = /* @__PURE__ */ __name(function makeEventObj2(self2, obj) { + self2.addEventFields(self2.context, obj); + return new Event(obj.type, obj); + }, "makeEventObj"); + forEachEventObj = /* @__PURE__ */ __name(function forEachEventObj2(self2, handler, events) { + if (event(events)) { + handler(self2, events); + return; + } else if (plainObject(events)) { + handler(self2, makeEventObj(self2, events)); + return; } - // It does not make any sense to include a virtual EOF token in the list of resynced tokens - // as EOF does not really exist and thus does not contain any useful information (line/column numbers) - addToResyncTokens(token2, resyncTokens) { - if (!this.tokenMatcher(token2, EOF)) { - resyncTokens.push(token2); + var eventList = array2(events) ? events : events.split(/\s+/); + for (var i2 = 0; i2 < eventList.length; i2++) { + var evt = eventList[i2]; + if (emptyString(evt)) { + continue; } - return resyncTokens; - } - reSyncTo(tokType) { - const resyncedTokens = []; - let nextTok = this.LA(1); - while (this.tokenMatcher(nextTok, tokType) === false) { - nextTok = this.SKIP_TOKEN(); - this.addToResyncTokens(nextTok, resyncedTokens); + var match2 = evt.match(eventRegex); + if (match2) { + var type3 = match2[1]; + var namespace = match2[2] ? match2[2] : null; + var eventObj = makeEventObj(self2, { + type: type3, + namespace, + target: self2.context + }); + handler(self2, eventObj); } - return dropRight_default(resyncedTokens); - } - attemptInRepetitionRecovery(prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) { - } - getCurrentGrammarPath(tokType, tokIdxInRule) { - const pathRuleStack = this.getHumanReadableRuleStack(); - const pathOccurrenceStack = clone_default2(this.RULE_OCCURRENCE_STACK); - const grammarPath = { - ruleStack: pathRuleStack, - occurrenceStack: pathOccurrenceStack, - lastTok: tokType, - lastTokOccurrence: tokIdxInRule - }; - return grammarPath; - } - getHumanReadableRuleStack() { - return map_default(this.RULE_STACK, (currShortName) => this.shortRuleNameToFullName(currShortName)); - } - }; - __name(attemptInRepetitionRecovery, "attemptInRepetitionRecovery"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/keys.js - function getKeyForAutomaticLookahead(ruleIdx, dslMethodIdx, occurrence) { - return occurrence | dslMethodIdx | ruleIdx; - } - var BITS_FOR_METHOD_TYPE, BITS_FOR_OCCURRENCE_IDX, BITS_FOR_ALT_IDX, OR_IDX, OPTION_IDX, MANY_IDX, AT_LEAST_ONE_IDX, MANY_SEP_IDX, AT_LEAST_ONE_SEP_IDX, BITS_START_FOR_ALT_IDX; - var init_keys2 = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/keys.js"() { - "use strict"; - BITS_FOR_METHOD_TYPE = 4; - BITS_FOR_OCCURRENCE_IDX = 8; - BITS_FOR_ALT_IDX = 8; - OR_IDX = 1 << BITS_FOR_OCCURRENCE_IDX; - OPTION_IDX = 2 << BITS_FOR_OCCURRENCE_IDX; - MANY_IDX = 3 << BITS_FOR_OCCURRENCE_IDX; - AT_LEAST_ONE_IDX = 4 << BITS_FOR_OCCURRENCE_IDX; - MANY_SEP_IDX = 5 << BITS_FOR_OCCURRENCE_IDX; - AT_LEAST_ONE_SEP_IDX = 6 << BITS_FOR_OCCURRENCE_IDX; - __name(getKeyForAutomaticLookahead, "getKeyForAutomaticLookahead"); - BITS_START_FOR_ALT_IDX = 32 - BITS_FOR_ALT_IDX; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/llk_lookahead.js - var LLkLookaheadStrategy; - var init_llk_lookahead = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/llk_lookahead.js"() { - "use strict"; - init_lodash(); - init_errors_public(); - init_parser(); - init_checks(); - init_lookahead(); - LLkLookaheadStrategy = class { - static { - __name(this, "LLkLookaheadStrategy"); - } - constructor(options3) { - var _a; - this.maxLookahead = (_a = options3 === null || options3 === void 0 ? void 0 : options3.maxLookahead) !== null && _a !== void 0 ? _a : DEFAULT_PARSER_CONFIG.maxLookahead; } - validate(options3) { - const leftRecursionErrors = this.validateNoLeftRecursion(options3.rules); - if (isEmpty_default(leftRecursionErrors)) { - const emptyAltErrors = this.validateEmptyOrAlternatives(options3.rules); - const ambiguousAltsErrors = this.validateAmbiguousAlternationAlternatives(options3.rules, this.maxLookahead); - const emptyRepetitionErrors = this.validateSomeNonEmptyLookaheadPath(options3.rules, this.maxLookahead); - const allErrors = [ - ...leftRecursionErrors, - ...emptyAltErrors, - ...ambiguousAltsErrors, - ...emptyRepetitionErrors - ]; - return allErrors; + }, "forEachEventObj"); + p2.on = p2.addListener = function(events, qualifier, callback, conf5, confOverrides) { + forEachEvent(this, function(self2, event3, type3, namespace, qualifier2, callback2, conf6) { + if (fn$6(callback2)) { + self2.listeners.push({ + event: event3, + // full event string + callback: callback2, + // callback to run + type: type3, + // the event type (e.g. 'click') + namespace, + // the event namespace (e.g. ".foo") + qualifier: qualifier2, + // a restriction on whether to match this emitter + conf: conf6 + // additional configuration + }); } - return leftRecursionErrors; - } - validateNoLeftRecursion(rules) { - return flatMap_default(rules, (currTopRule) => validateNoLeftRecursion(currTopRule, currTopRule, defaultGrammarValidatorErrorProvider)); - } - validateEmptyOrAlternatives(rules) { - return flatMap_default(rules, (currTopRule) => validateEmptyOrAlternative(currTopRule, defaultGrammarValidatorErrorProvider)); - } - validateAmbiguousAlternationAlternatives(rules, maxLookahead) { - return flatMap_default(rules, (currTopRule) => validateAmbiguousAlternationAlternatives(currTopRule, maxLookahead, defaultGrammarValidatorErrorProvider)); - } - validateSomeNonEmptyLookaheadPath(rules, maxLookahead) { - return validateSomeNonEmptyLookaheadPath(rules, maxLookahead, defaultGrammarValidatorErrorProvider); - } - buildLookaheadForAlternation(options3) { - return buildLookaheadFuncForOr(options3.prodOccurrence, options3.rule, options3.maxLookahead, options3.hasPredicates, options3.dynamicTokensEnabled, buildAlternativesLookAheadFunc); - } - buildLookaheadForOptional(options3) { - return buildLookaheadFuncForOptionalProd(options3.prodOccurrence, options3.rule, options3.maxLookahead, options3.dynamicTokensEnabled, getProdType(options3.prodType), buildSingleAlternativeLookaheadFunction); - } + }, events, qualifier, callback, conf5, confOverrides); + return this; }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js - function collectMethods(rule) { - collectorVisitor.reset(); - rule.accept(collectorVisitor); - const dslMethods = collectorVisitor.dslMethods; - collectorVisitor.reset(); - return dslMethods; - } - var LooksAhead, DslMethodsCollectorVisitor, collectorVisitor; - var init_looksahead = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js"() { - "use strict"; - init_lodash(); - init_parser(); - init_keys2(); - init_api3(); - init_llk_lookahead(); - LooksAhead = class { - static { - __name(this, "LooksAhead"); - } - initLooksAhead(config5) { - this.dynamicTokensEnabled = has_default(config5, "dynamicTokensEnabled") ? config5.dynamicTokensEnabled : DEFAULT_PARSER_CONFIG.dynamicTokensEnabled; - this.maxLookahead = has_default(config5, "maxLookahead") ? config5.maxLookahead : DEFAULT_PARSER_CONFIG.maxLookahead; - this.lookaheadStrategy = has_default(config5, "lookaheadStrategy") ? config5.lookaheadStrategy : new LLkLookaheadStrategy({ maxLookahead: this.maxLookahead }); - this.lookAheadFuncsCache = /* @__PURE__ */ new Map(); - } - preComputeLookaheadFunctions(rules) { - forEach_default(rules, (currRule) => { - this.TRACE_INIT(`${currRule.name} Rule Lookahead`, () => { - const { alternation: alternation2, repetition: repetition2, option: option2, repetitionMandatory: repetitionMandatory2, repetitionMandatoryWithSeparator, repetitionWithSeparator } = collectMethods(currRule); - forEach_default(alternation2, (currProd) => { - const prodIdx = currProd.idx === 0 ? "" : currProd.idx; - this.TRACE_INIT(`${getProductionDslName(currProd)}${prodIdx}`, () => { - const laFunc = this.lookaheadStrategy.buildLookaheadForAlternation({ - prodOccurrence: currProd.idx, - rule: currRule, - maxLookahead: currProd.maxLookahead || this.maxLookahead, - hasPredicates: currProd.hasPredicates, - dynamicTokensEnabled: this.dynamicTokensEnabled - }); - const key = getKeyForAutomaticLookahead(this.fullRuleNameToShort[currRule.name], OR_IDX, currProd.idx); - this.setLaFuncCache(key, laFunc); - }); - }); - forEach_default(repetition2, (currProd) => { - this.computeLookaheadFunc(currRule, currProd.idx, MANY_IDX, "Repetition", currProd.maxLookahead, getProductionDslName(currProd)); - }); - forEach_default(option2, (currProd) => { - this.computeLookaheadFunc(currRule, currProd.idx, OPTION_IDX, "Option", currProd.maxLookahead, getProductionDslName(currProd)); - }); - forEach_default(repetitionMandatory2, (currProd) => { - this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_IDX, "RepetitionMandatory", currProd.maxLookahead, getProductionDslName(currProd)); - }); - forEach_default(repetitionMandatoryWithSeparator, (currProd) => { - this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_SEP_IDX, "RepetitionMandatoryWithSeparator", currProd.maxLookahead, getProductionDslName(currProd)); - }); - forEach_default(repetitionWithSeparator, (currProd) => { - this.computeLookaheadFunc(currRule, currProd.idx, MANY_SEP_IDX, "RepetitionWithSeparator", currProd.maxLookahead, getProductionDslName(currProd)); - }); - }); - }); - } - computeLookaheadFunc(rule, prodOccurrence, prodKey, prodType, prodMaxLookahead, dslMethodName) { - this.TRACE_INIT(`${dslMethodName}${prodOccurrence === 0 ? "" : prodOccurrence}`, () => { - const laFunc = this.lookaheadStrategy.buildLookaheadForOptional({ - prodOccurrence, - rule, - maxLookahead: prodMaxLookahead || this.maxLookahead, - dynamicTokensEnabled: this.dynamicTokensEnabled, - prodType - }); - const key = getKeyForAutomaticLookahead(this.fullRuleNameToShort[rule.name], prodKey, prodOccurrence); - this.setLaFuncCache(key, laFunc); - }); - } - // this actually returns a number, but it is always used as a string (object prop key) - getKeyForAutomaticLookahead(dslMethodIdx, occurrence) { - const currRuleShortName = this.getLastExplicitRuleShortName(); - return getKeyForAutomaticLookahead(currRuleShortName, dslMethodIdx, occurrence); - } - getLaFuncFromCache(key) { - return this.lookAheadFuncsCache.get(key); - } - /* istanbul ignore next */ - setLaFuncCache(key, value2) { - this.lookAheadFuncsCache.set(key, value2); - } + p2.one = function(events, qualifier, callback, conf5) { + return this.on(events, qualifier, callback, conf5, { + one: true + }); }; - DslMethodsCollectorVisitor = class extends GAstVisitor { - static { - __name(this, "DslMethodsCollectorVisitor"); - } - constructor() { - super(...arguments); - this.dslMethods = { - option: [], - alternation: [], - repetition: [], - repetitionWithSeparator: [], - repetitionMandatory: [], - repetitionMandatoryWithSeparator: [] - }; - } - reset() { - this.dslMethods = { - option: [], - alternation: [], - repetition: [], - repetitionWithSeparator: [], - repetitionMandatory: [], - repetitionMandatoryWithSeparator: [] - }; - } - visitOption(option2) { - this.dslMethods.option.push(option2); - } - visitRepetitionWithSeparator(manySep) { - this.dslMethods.repetitionWithSeparator.push(manySep); - } - visitRepetitionMandatory(atLeastOne) { - this.dslMethods.repetitionMandatory.push(atLeastOne); - } - visitRepetitionMandatoryWithSeparator(atLeastOneSep) { - this.dslMethods.repetitionMandatoryWithSeparator.push(atLeastOneSep); - } - visitRepetition(many) { - this.dslMethods.repetition.push(many); + p2.removeListener = p2.off = function(events, qualifier, callback, conf5) { + var _this = this; + if (this.emitting !== 0) { + this.listeners = copyArray2(this.listeners); } - visitAlternation(or) { - this.dslMethods.alternation.push(or); + var listeners = this.listeners; + var _loop = /* @__PURE__ */ __name(function _loop2(i3) { + var listener = listeners[i3]; + forEachEvent(_this, function(self2, event3, type3, namespace, qualifier2, callback2) { + if ((listener.type === type3 || events === "*") && (!namespace && listener.namespace !== ".*" || listener.namespace === namespace) && (!qualifier2 || self2.qualifierCompare(listener.qualifier, qualifier2)) && (!callback2 || listener.callback === callback2)) { + listeners.splice(i3, 1); + return false; + } + }, events, qualifier, callback, conf5); + }, "_loop"); + for (var i2 = listeners.length - 1; i2 >= 0; i2--) { + _loop(i2); } + return this; }; - collectorVisitor = new DslMethodsCollectorVisitor(); - __name(collectMethods, "collectMethods"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/cst/cst.js - function setNodeLocationOnlyOffset(currNodeLocation, newLocationInfo) { - if (isNaN(currNodeLocation.startOffset) === true) { - currNodeLocation.startOffset = newLocationInfo.startOffset; - currNodeLocation.endOffset = newLocationInfo.endOffset; - } else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) { - currNodeLocation.endOffset = newLocationInfo.endOffset; - } - } - function setNodeLocationFull(currNodeLocation, newLocationInfo) { - if (isNaN(currNodeLocation.startOffset) === true) { - currNodeLocation.startOffset = newLocationInfo.startOffset; - currNodeLocation.startColumn = newLocationInfo.startColumn; - currNodeLocation.startLine = newLocationInfo.startLine; - currNodeLocation.endOffset = newLocationInfo.endOffset; - currNodeLocation.endColumn = newLocationInfo.endColumn; - currNodeLocation.endLine = newLocationInfo.endLine; - } else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) { - currNodeLocation.endOffset = newLocationInfo.endOffset; - currNodeLocation.endColumn = newLocationInfo.endColumn; - currNodeLocation.endLine = newLocationInfo.endLine; - } - } - function addTerminalToCst(node2, token2, tokenTypeName) { - if (node2.children[tokenTypeName] === void 0) { - node2.children[tokenTypeName] = [token2]; - } else { - node2.children[tokenTypeName].push(token2); - } - } - function addNoneTerminalToCst(node2, ruleName, ruleResult) { - if (node2.children[ruleName] === void 0) { - node2.children[ruleName] = [ruleResult]; - } else { - node2.children[ruleName].push(ruleResult); - } - } - var init_cst = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/cst/cst.js"() { - "use strict"; - __name(setNodeLocationOnlyOffset, "setNodeLocationOnlyOffset"); - __name(setNodeLocationFull, "setNodeLocationFull"); - __name(addTerminalToCst, "addTerminalToCst"); - __name(addNoneTerminalToCst, "addNoneTerminalToCst"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/lang/lang_extensions.js - function defineNameProp(obj, nameValue) { - Object.defineProperty(obj, NAME, { - enumerable: false, - configurable: true, - writable: false, - value: nameValue - }); - } - var NAME; - var init_lang_extensions = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/lang/lang_extensions.js"() { - "use strict"; - NAME = "name"; - __name(defineNameProp, "defineNameProp"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/cst/cst_visitor.js - function defaultVisit(ctx, param) { - const childrenNames = keys_default(ctx); - const childrenNamesLength = childrenNames.length; - for (let i2 = 0; i2 < childrenNamesLength; i2++) { - const currChildName = childrenNames[i2]; - const currChildArray = ctx[currChildName]; - const currChildArrayLength = currChildArray.length; - for (let j2 = 0; j2 < currChildArrayLength; j2++) { - const currChild = currChildArray[j2]; - if (currChild.tokenTypeIdx === void 0) { - this[currChild.name](currChild.children, param); - } - } - } - } - function createBaseSemanticVisitorConstructor(grammarName, ruleNames) { - const derivedConstructor = /* @__PURE__ */ __name(function() { - }, "derivedConstructor"); - defineNameProp(derivedConstructor, grammarName + "BaseSemantics"); - const semanticProto = { - visit: /* @__PURE__ */ __name(function(cstNode, param) { - if (isArray_default(cstNode)) { - cstNode = cstNode[0]; - } - if (isUndefined_default(cstNode)) { - return void 0; - } - return this[cstNode.name](cstNode.children, param); - }, "visit"), - validateVisitor: /* @__PURE__ */ __name(function() { - const semanticDefinitionErrors = validateVisitor(this, ruleNames); - if (!isEmpty_default(semanticDefinitionErrors)) { - const errorMessages = map_default(semanticDefinitionErrors, (currDefError) => currDefError.msg); - throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: - ${errorMessages.join("\n\n").replace(/\n/g, "\n ")}`); - } - }, "validateVisitor") - }; - derivedConstructor.prototype = semanticProto; - derivedConstructor.prototype.constructor = derivedConstructor; - derivedConstructor._RULE_NAMES = ruleNames; - return derivedConstructor; - } - function createBaseVisitorConstructorWithDefaults(grammarName, ruleNames, baseConstructor) { - const derivedConstructor = /* @__PURE__ */ __name(function() { - }, "derivedConstructor"); - defineNameProp(derivedConstructor, grammarName + "BaseSemanticsWithDefaults"); - const withDefaultsProto = Object.create(baseConstructor.prototype); - forEach_default(ruleNames, (ruleName) => { - withDefaultsProto[ruleName] = defaultVisit; - }); - derivedConstructor.prototype = withDefaultsProto; - derivedConstructor.prototype.constructor = derivedConstructor; - return derivedConstructor; - } - function validateVisitor(visitorInstance, ruleNames) { - const missingErrors = validateMissingCstMethods(visitorInstance, ruleNames); - return missingErrors; - } - function validateMissingCstMethods(visitorInstance, ruleNames) { - const missingRuleNames = filter_default3(ruleNames, (currRuleName) => { - return isFunction_default(visitorInstance[currRuleName]) === false; - }); - const errors = map_default(missingRuleNames, (currRuleName) => { - return { - msg: `Missing visitor method: <${currRuleName}> on ${visitorInstance.constructor.name} CST Visitor.`, - type: CstVisitorDefinitionError.MISSING_METHOD, - methodName: currRuleName + p2.removeAllListeners = function() { + return this.removeListener("*"); }; - }); - return compact_default(errors); - } - var CstVisitorDefinitionError; - var init_cst_visitor = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/cst/cst_visitor.js"() { - "use strict"; - init_lodash(); - init_lang_extensions(); - __name(defaultVisit, "defaultVisit"); - __name(createBaseSemanticVisitorConstructor, "createBaseSemanticVisitorConstructor"); - __name(createBaseVisitorConstructorWithDefaults, "createBaseVisitorConstructorWithDefaults"); - (function(CstVisitorDefinitionError2) { - CstVisitorDefinitionError2[CstVisitorDefinitionError2["REDUNDANT_METHOD"] = 0] = "REDUNDANT_METHOD"; - CstVisitorDefinitionError2[CstVisitorDefinitionError2["MISSING_METHOD"] = 1] = "MISSING_METHOD"; - })(CstVisitorDefinitionError || (CstVisitorDefinitionError = {})); - __name(validateVisitor, "validateVisitor"); - __name(validateMissingCstMethods, "validateMissingCstMethods"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/tree_builder.js - var TreeBuilder; - var init_tree_builder = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/tree_builder.js"() { - "use strict"; - init_cst(); - init_lodash(); - init_cst_visitor(); - init_parser(); - TreeBuilder = class { - static { - __name(this, "TreeBuilder"); + p2.emit = p2.trigger = function(events, extraParams, manualCallback) { + var listeners = this.listeners; + var numListenersBeforeEmit = listeners.length; + this.emitting++; + if (!array2(extraParams)) { + extraParams = [extraParams]; } - initTreeBuilder(config5) { - this.CST_STACK = []; - this.outputCst = config5.outputCst; - this.nodeLocationTracking = has_default(config5, "nodeLocationTracking") ? config5.nodeLocationTracking : DEFAULT_PARSER_CONFIG.nodeLocationTracking; - if (!this.outputCst) { - this.cstInvocationStateUpdate = noop_default2; - this.cstFinallyStateUpdate = noop_default2; - this.cstPostTerminal = noop_default2; - this.cstPostNonTerminal = noop_default2; - this.cstPostRule = noop_default2; - } else { - if (/full/i.test(this.nodeLocationTracking)) { - if (this.recoveryEnabled) { - this.setNodeLocationFromToken = setNodeLocationFull; - this.setNodeLocationFromNode = setNodeLocationFull; - this.cstPostRule = noop_default2; - this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery; - } else { - this.setNodeLocationFromToken = noop_default2; - this.setNodeLocationFromNode = noop_default2; - this.cstPostRule = this.cstPostRuleFull; - this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular; + forEachEventObj(this, function(self2, eventObj) { + if (manualCallback != null) { + listeners = [{ + event: eventObj.event, + type: eventObj.type, + namespace: eventObj.namespace, + callback: manualCallback + }]; + numListenersBeforeEmit = listeners.length; + } + var _loop2 = /* @__PURE__ */ __name(function _loop22() { + var listener = listeners[i2]; + if (listener.type === eventObj.type && (!listener.namespace || listener.namespace === eventObj.namespace || listener.namespace === universalNamespace) && self2.eventMatches(self2.context, listener, eventObj)) { + var args = [eventObj]; + if (extraParams != null) { + push(args, extraParams); } - } else if (/onlyOffset/i.test(this.nodeLocationTracking)) { - if (this.recoveryEnabled) { - this.setNodeLocationFromToken = setNodeLocationOnlyOffset; - this.setNodeLocationFromNode = setNodeLocationOnlyOffset; - this.cstPostRule = noop_default2; - this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRecovery; - } else { - this.setNodeLocationFromToken = noop_default2; - this.setNodeLocationFromNode = noop_default2; - this.cstPostRule = this.cstPostRuleOnlyOffset; - this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRegular; + self2.beforeEmit(self2.context, listener, eventObj); + if (listener.conf && listener.conf.one) { + self2.listeners = self2.listeners.filter(function(l4) { + return l4 !== listener; + }); + } + var context = self2.callbackContext(self2.context, listener, eventObj); + var ret = listener.callback.apply(context, args); + self2.afterEmit(self2.context, listener, eventObj); + if (ret === false) { + eventObj.stopPropagation(); + eventObj.preventDefault(); } - } else if (/none/i.test(this.nodeLocationTracking)) { - this.setNodeLocationFromToken = noop_default2; - this.setNodeLocationFromNode = noop_default2; - this.cstPostRule = noop_default2; - this.setInitialNodeLocation = noop_default2; - } else { - throw Error(`Invalid config option: "${config5.nodeLocationTracking}"`); } + }, "_loop2"); + for (var i2 = 0; i2 < numListenersBeforeEmit; i2++) { + _loop2(); } - } - setInitialNodeLocationOnlyOffsetRecovery(cstNode) { - cstNode.location = { - startOffset: NaN, - endOffset: NaN - }; - } - setInitialNodeLocationOnlyOffsetRegular(cstNode) { - cstNode.location = { - // without error recovery the starting Location of a new CstNode is guaranteed - // To be the next Token's startOffset (for valid inputs). - // For invalid inputs there won't be any CSTOutput so this potential - // inaccuracy does not matter - startOffset: this.LA(1).startOffset, - endOffset: NaN - }; - } - setInitialNodeLocationFullRecovery(cstNode) { - cstNode.location = { - startOffset: NaN, - startLine: NaN, - startColumn: NaN, - endOffset: NaN, - endLine: NaN, - endColumn: NaN - }; - } - /** - * @see setInitialNodeLocationOnlyOffsetRegular for explanation why this work - - * @param cstNode - */ - setInitialNodeLocationFullRegular(cstNode) { - const nextToken = this.LA(1); - cstNode.location = { - startOffset: nextToken.startOffset, - startLine: nextToken.startLine, - startColumn: nextToken.startColumn, - endOffset: NaN, - endLine: NaN, - endColumn: NaN - }; - } - cstInvocationStateUpdate(fullRuleName) { - const cstNode = { - name: fullRuleName, - children: /* @__PURE__ */ Object.create(null) - }; - this.setInitialNodeLocation(cstNode); - this.CST_STACK.push(cstNode); - } - cstFinallyStateUpdate() { - this.CST_STACK.pop(); - } - cstPostRuleFull(ruleCstNode) { - const prevToken = this.LA(0); - const loc = ruleCstNode.location; - if (loc.startOffset <= prevToken.startOffset === true) { - loc.endOffset = prevToken.endOffset; - loc.endLine = prevToken.endLine; - loc.endColumn = prevToken.endColumn; - } else { - loc.startOffset = NaN; - loc.startLine = NaN; - loc.startColumn = NaN; + if (self2.bubble(self2.context) && !eventObj.isPropagationStopped()) { + self2.parent(self2.context).emit(eventObj, extraParams); } - } - cstPostRuleOnlyOffset(ruleCstNode) { - const prevToken = this.LA(0); - const loc = ruleCstNode.location; - if (loc.startOffset <= prevToken.startOffset === true) { - loc.endOffset = prevToken.endOffset; + }, events); + this.emitting--; + return this; + }; + emitterOptions$1 = { + qualifierCompare: /* @__PURE__ */ __name(function qualifierCompare2(selector1, selector2) { + if (selector1 == null || selector2 == null) { + return selector1 == null && selector2 == null; } else { - loc.startOffset = NaN; + return selector1.sameText(selector2); } - } - cstPostTerminal(key, consumedToken) { - const rootCst = this.CST_STACK[this.CST_STACK.length - 1]; - addTerminalToCst(rootCst, consumedToken, key); - this.setNodeLocationFromToken(rootCst.location, consumedToken); - } - cstPostNonTerminal(ruleCstResult, ruleName) { - const preCstNode = this.CST_STACK[this.CST_STACK.length - 1]; - addNoneTerminalToCst(preCstNode, ruleName, ruleCstResult); - this.setNodeLocationFromNode(preCstNode.location, ruleCstResult.location); - } - getBaseCstVisitorConstructor() { - if (isUndefined_default(this.baseCstVisitorConstructor)) { - const newBaseCstVisitorConstructor = createBaseSemanticVisitorConstructor(this.className, keys_default(this.gastProductionsCache)); - this.baseCstVisitorConstructor = newBaseCstVisitorConstructor; - return newBaseCstVisitorConstructor; + }, "qualifierCompare"), + eventMatches: /* @__PURE__ */ __name(function eventMatches2(ele, listener, eventObj) { + var selector = listener.qualifier; + if (selector != null) { + return ele !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); } - return this.baseCstVisitorConstructor; - } - getBaseCstVisitorConstructorWithDefaults() { - if (isUndefined_default(this.baseCstVisitorWithDefaultsConstructor)) { - const newConstructor = createBaseVisitorConstructorWithDefaults(this.className, keys_default(this.gastProductionsCache), this.getBaseCstVisitorConstructor()); - this.baseCstVisitorWithDefaultsConstructor = newConstructor; - return newConstructor; + return true; + }, "eventMatches"), + addEventFields: /* @__PURE__ */ __name(function addEventFields2(ele, evt) { + evt.cy = ele.cy(); + evt.target = ele; + }, "addEventFields"), + callbackContext: /* @__PURE__ */ __name(function callbackContext2(ele, listener, eventObj) { + return listener.qualifier != null ? eventObj.target : ele; + }, "callbackContext"), + beforeEmit: /* @__PURE__ */ __name(function beforeEmit2(context, listener) { + if (listener.conf && listener.conf.once) { + listener.conf.onceCollection.removeListener(listener.event, listener.qualifier, listener.callback); } - return this.baseCstVisitorWithDefaultsConstructor; - } - getLastExplicitRuleShortName() { - const ruleStack = this.RULE_STACK; - return ruleStack[ruleStack.length - 1]; - } - getPreviousExplicitRuleShortName() { - const ruleStack = this.RULE_STACK; - return ruleStack[ruleStack.length - 2]; - } - getLastExplicitRuleOccurrenceIndex() { - const occurrenceStack = this.RULE_OCCURRENCE_STACK; - return occurrenceStack[occurrenceStack.length - 1]; - } + }, "beforeEmit"), + bubble: /* @__PURE__ */ __name(function bubble2() { + return true; + }, "bubble"), + parent: /* @__PURE__ */ __name(function parent3(ele) { + return ele.isChild() ? ele.parent() : ele.cy(); + }, "parent") }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/lexer_adapter.js - var LexerAdapter; - var init_lexer_adapter = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/lexer_adapter.js"() { - "use strict"; - init_parser(); - LexerAdapter = class { - static { - __name(this, "LexerAdapter"); - } - initLexerAdapter() { - this.tokVector = []; - this.tokVectorLength = 0; - this.currIdx = -1; + argSelector$1 = /* @__PURE__ */ __name(function argSelector(arg) { + if (string(arg)) { + return new Selector(arg); + } else { + return arg; } - set input(newInput) { - if (this.selfAnalysisDone !== true) { - throw Error(`Missing invocation at the end of the Parser's constructor.`); + }, "argSelector"); + elesfn$9 = { + createEmitter: /* @__PURE__ */ __name(function createEmitter() { + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + var _p = ele._private; + if (!_p.emitter) { + _p.emitter = new Emitter(emitterOptions$1, ele); + } } - this.reset(); - this.tokVector = newInput; - this.tokVectorLength = newInput.length; - } - get input() { - return this.tokVector; - } - // skips a token and returns the next token - SKIP_TOKEN() { - if (this.currIdx <= this.tokVector.length - 2) { - this.consumeToken(); - return this.LA(1); - } else { - return END_OF_FILE; + return this; + }, "createEmitter"), + emitter: /* @__PURE__ */ __name(function emitter() { + return this._private.emitter; + }, "emitter"), + on: /* @__PURE__ */ __name(function on(events, selector, callback) { + var argSel = argSelector$1(selector); + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + ele.emitter().on(events, argSel, callback); } - } - // Lexer (accessing Token vector) related methods which can be overridden to implement lazy lexers - // or lexers dependent on parser context. - LA(howMuch) { - const soughtIdx = this.currIdx + howMuch; - if (soughtIdx < 0 || this.tokVectorLength <= soughtIdx) { - return END_OF_FILE; - } else { - return this.tokVector[soughtIdx]; + return this; + }, "on"), + removeListener: /* @__PURE__ */ __name(function removeListener(events, selector, callback) { + var argSel = argSelector$1(selector); + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + ele.emitter().removeListener(events, argSel, callback); } - } - consumeToken() { - this.currIdx++; - } - exportLexerState() { - return this.currIdx; - } - importLexerState(newState2) { - this.currIdx = newState2; - } - resetLexerState() { - this.currIdx = -1; - } - moveToTerminatedState() { - this.currIdx = this.tokVector.length - 1; - } - getLexerPosition() { - return this.exportLexerState(); - } + return this; + }, "removeListener"), + removeAllListeners: /* @__PURE__ */ __name(function removeAllListeners() { + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + ele.emitter().removeAllListeners(); + } + return this; + }, "removeAllListeners"), + one: /* @__PURE__ */ __name(function one2(events, selector, callback) { + var argSel = argSelector$1(selector); + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + ele.emitter().one(events, argSel, callback); + } + return this; + }, "one"), + once: /* @__PURE__ */ __name(function once(events, selector, callback) { + var argSel = argSelector$1(selector); + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + ele.emitter().on(events, argSel, callback, { + once: true, + onceCollection: this + }); + } + }, "once"), + emit: /* @__PURE__ */ __name(function emit(events, extraParams) { + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + ele.emitter().emit(events, extraParams); + } + return this; + }, "emit"), + emitAndNotify: /* @__PURE__ */ __name(function emitAndNotify(event3, extraParams) { + if (this.length === 0) { + return; + } + this.cy().notify(event3, this); + this.emit(event3, extraParams); + return this; + }, "emitAndNotify") }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js - var RecognizerApi; - var init_recognizer_api = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js"() { - "use strict"; - init_lodash(); - init_exceptions_public(); - init_parser(); - init_errors_public(); - init_checks(); - init_api3(); - RecognizerApi = class { - static { - __name(this, "RecognizerApi"); - } - ACTION(impl2) { - return impl2.call(this); - } - consume(idx, tokType, options3) { - return this.consumeInternal(tokType, idx, options3); - } - subrule(idx, ruleToCall, options3) { - return this.subruleInternal(ruleToCall, idx, options3); - } - option(idx, actionORMethodDef) { - return this.optionInternal(actionORMethodDef, idx); - } - or(idx, altsOrOpts) { - return this.orInternal(altsOrOpts, idx); - } - many(idx, actionORMethodDef) { - return this.manyInternal(idx, actionORMethodDef); - } - atLeastOne(idx, actionORMethodDef) { - return this.atLeastOneInternal(idx, actionORMethodDef); - } - CONSUME(tokType, options3) { - return this.consumeInternal(tokType, 0, options3); - } - CONSUME1(tokType, options3) { - return this.consumeInternal(tokType, 1, options3); - } - CONSUME2(tokType, options3) { - return this.consumeInternal(tokType, 2, options3); - } - CONSUME3(tokType, options3) { - return this.consumeInternal(tokType, 3, options3); - } - CONSUME4(tokType, options3) { - return this.consumeInternal(tokType, 4, options3); - } - CONSUME5(tokType, options3) { - return this.consumeInternal(tokType, 5, options3); - } - CONSUME6(tokType, options3) { - return this.consumeInternal(tokType, 6, options3); - } - CONSUME7(tokType, options3) { - return this.consumeInternal(tokType, 7, options3); - } - CONSUME8(tokType, options3) { - return this.consumeInternal(tokType, 8, options3); - } - CONSUME9(tokType, options3) { - return this.consumeInternal(tokType, 9, options3); - } - SUBRULE(ruleToCall, options3) { - return this.subruleInternal(ruleToCall, 0, options3); - } - SUBRULE1(ruleToCall, options3) { - return this.subruleInternal(ruleToCall, 1, options3); - } - SUBRULE2(ruleToCall, options3) { - return this.subruleInternal(ruleToCall, 2, options3); - } - SUBRULE3(ruleToCall, options3) { - return this.subruleInternal(ruleToCall, 3, options3); - } - SUBRULE4(ruleToCall, options3) { - return this.subruleInternal(ruleToCall, 4, options3); - } - SUBRULE5(ruleToCall, options3) { - return this.subruleInternal(ruleToCall, 5, options3); - } - SUBRULE6(ruleToCall, options3) { - return this.subruleInternal(ruleToCall, 6, options3); - } - SUBRULE7(ruleToCall, options3) { - return this.subruleInternal(ruleToCall, 7, options3); - } - SUBRULE8(ruleToCall, options3) { - return this.subruleInternal(ruleToCall, 8, options3); - } - SUBRULE9(ruleToCall, options3) { - return this.subruleInternal(ruleToCall, 9, options3); - } - OPTION(actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 0); - } - OPTION1(actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 1); - } - OPTION2(actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 2); - } - OPTION3(actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 3); - } - OPTION4(actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 4); - } - OPTION5(actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 5); - } - OPTION6(actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 6); - } - OPTION7(actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 7); - } - OPTION8(actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 8); - } - OPTION9(actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 9); - } - OR(altsOrOpts) { - return this.orInternal(altsOrOpts, 0); - } - OR1(altsOrOpts) { - return this.orInternal(altsOrOpts, 1); - } - OR2(altsOrOpts) { - return this.orInternal(altsOrOpts, 2); - } - OR3(altsOrOpts) { - return this.orInternal(altsOrOpts, 3); - } - OR4(altsOrOpts) { - return this.orInternal(altsOrOpts, 4); - } - OR5(altsOrOpts) { - return this.orInternal(altsOrOpts, 5); - } - OR6(altsOrOpts) { - return this.orInternal(altsOrOpts, 6); - } - OR7(altsOrOpts) { - return this.orInternal(altsOrOpts, 7); - } - OR8(altsOrOpts) { - return this.orInternal(altsOrOpts, 8); - } - OR9(altsOrOpts) { - return this.orInternal(altsOrOpts, 9); - } - MANY(actionORMethodDef) { - this.manyInternal(0, actionORMethodDef); - } - MANY1(actionORMethodDef) { - this.manyInternal(1, actionORMethodDef); - } - MANY2(actionORMethodDef) { - this.manyInternal(2, actionORMethodDef); - } - MANY3(actionORMethodDef) { - this.manyInternal(3, actionORMethodDef); - } - MANY4(actionORMethodDef) { - this.manyInternal(4, actionORMethodDef); - } - MANY5(actionORMethodDef) { - this.manyInternal(5, actionORMethodDef); - } - MANY6(actionORMethodDef) { - this.manyInternal(6, actionORMethodDef); - } - MANY7(actionORMethodDef) { - this.manyInternal(7, actionORMethodDef); - } - MANY8(actionORMethodDef) { - this.manyInternal(8, actionORMethodDef); - } - MANY9(actionORMethodDef) { - this.manyInternal(9, actionORMethodDef); - } - MANY_SEP(options3) { - this.manySepFirstInternal(0, options3); - } - MANY_SEP1(options3) { - this.manySepFirstInternal(1, options3); - } - MANY_SEP2(options3) { - this.manySepFirstInternal(2, options3); - } - MANY_SEP3(options3) { - this.manySepFirstInternal(3, options3); - } - MANY_SEP4(options3) { - this.manySepFirstInternal(4, options3); - } - MANY_SEP5(options3) { - this.manySepFirstInternal(5, options3); - } - MANY_SEP6(options3) { - this.manySepFirstInternal(6, options3); - } - MANY_SEP7(options3) { - this.manySepFirstInternal(7, options3); - } - MANY_SEP8(options3) { - this.manySepFirstInternal(8, options3); - } - MANY_SEP9(options3) { - this.manySepFirstInternal(9, options3); - } - AT_LEAST_ONE(actionORMethodDef) { - this.atLeastOneInternal(0, actionORMethodDef); - } - AT_LEAST_ONE1(actionORMethodDef) { - return this.atLeastOneInternal(1, actionORMethodDef); - } - AT_LEAST_ONE2(actionORMethodDef) { - this.atLeastOneInternal(2, actionORMethodDef); - } - AT_LEAST_ONE3(actionORMethodDef) { - this.atLeastOneInternal(3, actionORMethodDef); - } - AT_LEAST_ONE4(actionORMethodDef) { - this.atLeastOneInternal(4, actionORMethodDef); - } - AT_LEAST_ONE5(actionORMethodDef) { - this.atLeastOneInternal(5, actionORMethodDef); - } - AT_LEAST_ONE6(actionORMethodDef) { - this.atLeastOneInternal(6, actionORMethodDef); - } - AT_LEAST_ONE7(actionORMethodDef) { - this.atLeastOneInternal(7, actionORMethodDef); - } - AT_LEAST_ONE8(actionORMethodDef) { - this.atLeastOneInternal(8, actionORMethodDef); - } - AT_LEAST_ONE9(actionORMethodDef) { - this.atLeastOneInternal(9, actionORMethodDef); - } - AT_LEAST_ONE_SEP(options3) { - this.atLeastOneSepFirstInternal(0, options3); - } - AT_LEAST_ONE_SEP1(options3) { - this.atLeastOneSepFirstInternal(1, options3); - } - AT_LEAST_ONE_SEP2(options3) { - this.atLeastOneSepFirstInternal(2, options3); - } - AT_LEAST_ONE_SEP3(options3) { - this.atLeastOneSepFirstInternal(3, options3); - } - AT_LEAST_ONE_SEP4(options3) { - this.atLeastOneSepFirstInternal(4, options3); - } - AT_LEAST_ONE_SEP5(options3) { - this.atLeastOneSepFirstInternal(5, options3); - } - AT_LEAST_ONE_SEP6(options3) { - this.atLeastOneSepFirstInternal(6, options3); - } - AT_LEAST_ONE_SEP7(options3) { - this.atLeastOneSepFirstInternal(7, options3); - } - AT_LEAST_ONE_SEP8(options3) { - this.atLeastOneSepFirstInternal(8, options3); - } - AT_LEAST_ONE_SEP9(options3) { - this.atLeastOneSepFirstInternal(9, options3); - } - RULE(name, implementation, config5 = DEFAULT_RULE_CONFIG) { - if (includes_default(this.definedRulesNames, name)) { - const errMsg = defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({ - topLevelRule: name, - grammarName: this.className - }); - const error3 = { - message: errMsg, - type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME, - ruleName: name - }; - this.definitionErrors.push(error3); + define2.eventAliasesOn(elesfn$9); + elesfn$8 = { + nodes: /* @__PURE__ */ __name(function nodes(selector) { + return this.filter(function(ele) { + return ele.isNode(); + }).filter(selector); + }, "nodes"), + edges: /* @__PURE__ */ __name(function edges(selector) { + return this.filter(function(ele) { + return ele.isEdge(); + }).filter(selector); + }, "edges"), + // internal helper to get nodes and edges as separate collections with single iteration over elements + byGroup: /* @__PURE__ */ __name(function byGroup() { + var nodes5 = this.spawn(); + var edges3 = this.spawn(); + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + if (ele.isNode()) { + nodes5.push(ele); + } else { + edges3.push(ele); + } } - this.definedRulesNames.push(name); - const ruleImplementation = this.defineRule(name, implementation, config5); - this[name] = ruleImplementation; - return ruleImplementation; - } - OVERRIDE_RULE(name, impl2, config5 = DEFAULT_RULE_CONFIG) { - const ruleErrors = validateRuleIsOverridden(name, this.definedRulesNames, this.className); - this.definitionErrors = this.definitionErrors.concat(ruleErrors); - const ruleImplementation = this.defineRule(name, impl2, config5); - this[name] = ruleImplementation; - return ruleImplementation; - } - BACKTRACK(grammarRule, args) { - return function() { - this.isBackTrackingStack.push(1); - const orgState = this.saveRecogState(); - try { - grammarRule.apply(this, args); - return true; - } catch (e3) { - if (isRecognitionException(e3)) { - return false; - } else { - throw e3; + return { + nodes: nodes5, + edges: edges3 + }; + }, "byGroup"), + filter: /* @__PURE__ */ __name(function filter5(_filter, thisArg) { + if (_filter === void 0) { + return this; + } else if (string(_filter) || elementOrCollection(_filter)) { + return new Selector(_filter).filter(this); + } else if (fn$6(_filter)) { + var filterEles = this.spawn(); + var eles = this; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + var include = thisArg ? _filter.apply(thisArg, [ele, i2, eles]) : _filter(ele, i2, eles); + if (include) { + filterEles.push(ele); } - } finally { - this.reloadRecogState(orgState); - this.isBackTrackingStack.pop(); } - }; - } - // GAST export APIs - getGAstProductions() { - return this.gastProductionsCache; - } - getSerializedGastProductions() { - return serializeGrammar(values_default(this.gastProductionsCache)); - } - }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js - var RecognizerEngine; - var init_recognizer_engine = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js"() { - "use strict"; - init_lodash(); - init_keys2(); - init_exceptions_public(); - init_lookahead(); - init_interpreter(); - init_parser(); - init_recoverable(); - init_tokens_public(); - init_tokens(); - RecognizerEngine = class { - static { - __name(this, "RecognizerEngine"); - } - initRecognizerEngine(tokenVocabulary, config5) { - this.className = this.constructor.name; - this.shortRuleNameToFull = {}; - this.fullRuleNameToShort = {}; - this.ruleShortNameIdx = 256; - this.tokenMatcher = tokenStructuredMatcherNoCategories; - this.subruleIdx = 0; - this.definedRulesNames = []; - this.tokensMap = {}; - this.isBackTrackingStack = []; - this.RULE_STACK = []; - this.RULE_OCCURRENCE_STACK = []; - this.gastProductionsCache = {}; - if (has_default(config5, "serializedGrammar")) { - throw Error("The Parser's configuration can no longer contain a property.\n See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\n For Further details."); + return filterEles; } - if (isArray_default(tokenVocabulary)) { - if (isEmpty_default(tokenVocabulary)) { - throw Error("A Token Vocabulary cannot be empty.\n Note that the first argument for the parser constructor\n is no longer a Token vector (since v4.0)."); + return this.spawn(); + }, "filter"), + not: /* @__PURE__ */ __name(function not(toRemove) { + if (!toRemove) { + return this; + } else { + if (string(toRemove)) { + toRemove = this.filter(toRemove); } - if (typeof tokenVocabulary[0].startOffset === "number") { - throw Error("The Parser constructor no longer accepts a token vector as the first argument.\n See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\n For Further details."); + var elements2 = this.spawn(); + for (var i2 = 0; i2 < this.length; i2++) { + var element3 = this[i2]; + var remove3 = toRemove.has(element3); + if (!remove3) { + elements2.push(element3); + } } + return elements2; } - if (isArray_default(tokenVocabulary)) { - this.tokensMap = reduce_default(tokenVocabulary, (acc, tokType) => { - acc[tokType.name] = tokType; - return acc; - }, {}); - } else if (has_default(tokenVocabulary, "modes") && every_default(flatten_default(values_default(tokenVocabulary.modes)), isTokenType)) { - const allTokenTypes2 = flatten_default(values_default(tokenVocabulary.modes)); - const uniqueTokens = uniq_default(allTokenTypes2); - this.tokensMap = reduce_default(uniqueTokens, (acc, tokType) => { - acc[tokType.name] = tokType; - return acc; - }, {}); - } else if (isObject_default(tokenVocabulary)) { - this.tokensMap = clone_default2(tokenVocabulary); - } else { - throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition"); + }, "not"), + absoluteComplement: /* @__PURE__ */ __name(function absoluteComplement() { + var cy = this.cy(); + return cy.mutableElements().not(this); + }, "absoluteComplement"), + intersect: /* @__PURE__ */ __name(function intersect2(other) { + if (string(other)) { + var selector = other; + return this.filter(selector); } - this.tokensMap["EOF"] = EOF; - const allTokenTypes = has_default(tokenVocabulary, "modes") ? flatten_default(values_default(tokenVocabulary.modes)) : values_default(tokenVocabulary); - const noTokenCategoriesUsed = every_default(allTokenTypes, (tokenConstructor) => isEmpty_default(tokenConstructor.categoryMatches)); - this.tokenMatcher = noTokenCategoriesUsed ? tokenStructuredMatcherNoCategories : tokenStructuredMatcher; - augmentTokenTypes(values_default(this.tokensMap)); - } - defineRule(ruleName, impl2, config5) { - if (this.selfAnalysisDone) { - throw Error(`Grammar rule <${ruleName}> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`); + var elements2 = this.spawn(); + var col1 = this; + var col2 = other; + var col1Smaller = this.length < other.length; + var colS = col1Smaller ? col1 : col2; + var colL = col1Smaller ? col2 : col1; + for (var i2 = 0; i2 < colS.length; i2++) { + var ele = colS[i2]; + if (colL.has(ele)) { + elements2.push(ele); + } } - const resyncEnabled = has_default(config5, "resyncEnabled") ? config5.resyncEnabled : DEFAULT_RULE_CONFIG.resyncEnabled; - const recoveryValueFunc = has_default(config5, "recoveryValueFunc") ? config5.recoveryValueFunc : DEFAULT_RULE_CONFIG.recoveryValueFunc; - const shortName = this.ruleShortNameIdx << BITS_FOR_METHOD_TYPE + BITS_FOR_OCCURRENCE_IDX; - this.ruleShortNameIdx++; - this.shortRuleNameToFull[shortName] = ruleName; - this.fullRuleNameToShort[ruleName] = shortName; - let invokeRuleWithTry; - if (this.outputCst === true) { - invokeRuleWithTry = /* @__PURE__ */ __name(function invokeRuleWithTry2(...args) { - try { - this.ruleInvocationStateUpdate(shortName, ruleName, this.subruleIdx); - impl2.apply(this, args); - const cst = this.CST_STACK[this.CST_STACK.length - 1]; - this.cstPostRule(cst); - return cst; - } catch (e3) { - return this.invokeRuleCatch(e3, resyncEnabled, recoveryValueFunc); - } finally { - this.ruleFinallyStateUpdate(); - } - }, "invokeRuleWithTry"); - } else { - invokeRuleWithTry = /* @__PURE__ */ __name(function invokeRuleWithTryCst(...args) { - try { - this.ruleInvocationStateUpdate(shortName, ruleName, this.subruleIdx); - return impl2.apply(this, args); - } catch (e3) { - return this.invokeRuleCatch(e3, resyncEnabled, recoveryValueFunc); - } finally { - this.ruleFinallyStateUpdate(); + return elements2; + }, "intersect"), + xor: /* @__PURE__ */ __name(function xor(other) { + var cy = this._private.cy; + if (string(other)) { + other = cy.$(other); + } + var elements2 = this.spawn(); + var col1 = this; + var col2 = other; + var add3 = /* @__PURE__ */ __name(function add4(col, other2) { + for (var i2 = 0; i2 < col.length; i2++) { + var ele = col[i2]; + var id30 = ele._private.data.id; + var inOther = other2.hasElementWithId(id30); + if (!inOther) { + elements2.push(ele); } - }, "invokeRuleWithTryCst"); + } + }, "add"); + add3(col1, col2); + add3(col2, col1); + return elements2; + }, "xor"), + diff: /* @__PURE__ */ __name(function diff(other) { + var cy = this._private.cy; + if (string(other)) { + other = cy.$(other); } - const wrappedGrammarRule = Object.assign(invokeRuleWithTry, { ruleName, originalGrammarAction: impl2 }); - return wrappedGrammarRule; - } - invokeRuleCatch(e3, resyncEnabledConfig, recoveryValueFunc) { - const isFirstInvokedRule = this.RULE_STACK.length === 1; - const reSyncEnabled = resyncEnabledConfig && !this.isBackTracking() && this.recoveryEnabled; - if (isRecognitionException(e3)) { - const recogError = e3; - if (reSyncEnabled) { - const reSyncTokType = this.findReSyncTokenType(); - if (this.isInCurrentRuleReSyncSet(reSyncTokType)) { - recogError.resyncedTokens = this.reSyncTo(reSyncTokType); - if (this.outputCst) { - const partialCstResult = this.CST_STACK[this.CST_STACK.length - 1]; - partialCstResult.recoveredNode = true; - return partialCstResult; - } else { - return recoveryValueFunc(e3); - } + var left3 = this.spawn(); + var right3 = this.spawn(); + var both = this.spawn(); + var col1 = this; + var col2 = other; + var add3 = /* @__PURE__ */ __name(function add4(col, other2, retEles) { + for (var i2 = 0; i2 < col.length; i2++) { + var ele = col[i2]; + var id30 = ele._private.data.id; + var inOther = other2.hasElementWithId(id30); + if (inOther) { + both.merge(ele); } else { - if (this.outputCst) { - const partialCstResult = this.CST_STACK[this.CST_STACK.length - 1]; - partialCstResult.recoveredNode = true; - recogError.partialCstResult = partialCstResult; - } - throw recogError; + retEles.push(ele); } - } else if (isFirstInvokedRule) { - this.moveToTerminatedState(); - return recoveryValueFunc(e3); - } else { - throw recogError; } - } else { - throw e3; + }, "add"); + add3(col1, col2, left3); + add3(col2, col1, right3); + return { + left: left3, + right: right3, + both + }; + }, "diff"), + add: /* @__PURE__ */ __name(function add(toAdd) { + var cy = this._private.cy; + if (!toAdd) { + return this; } - } - // Implementation of parsing DSL - optionInternal(actionORMethodDef, occurrence) { - const key = this.getKeyForAutomaticLookahead(OPTION_IDX, occurrence); - return this.optionInternalLogic(actionORMethodDef, occurrence, key); - } - optionInternalLogic(actionORMethodDef, occurrence, key) { - let lookAheadFunc = this.getLaFuncFromCache(key); - let action; - if (typeof actionORMethodDef !== "function") { - action = actionORMethodDef.DEF; - const predicate = actionORMethodDef.GATE; - if (predicate !== void 0) { - const orgLookaheadFunction = lookAheadFunc; - lookAheadFunc = /* @__PURE__ */ __name(() => { - return predicate.call(this) && orgLookaheadFunction.call(this); - }, "lookAheadFunc"); + if (string(toAdd)) { + var selector = toAdd; + toAdd = cy.mutableElements().filter(selector); + } + var elements2 = this.spawnSelf(); + for (var i2 = 0; i2 < toAdd.length; i2++) { + var ele = toAdd[i2]; + var add3 = !this.has(ele); + if (add3) { + elements2.push(ele); } - } else { - action = actionORMethodDef; } - if (lookAheadFunc.call(this) === true) { - return action.call(this); + return elements2; + }, "add"), + // in place merge on calling collection + merge: /* @__PURE__ */ __name(function merge3(toAdd) { + var _p = this._private; + var cy = _p.cy; + if (!toAdd) { + return this; } - return void 0; - } - atLeastOneInternal(prodOccurrence, actionORMethodDef) { - const laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_IDX, prodOccurrence); - return this.atLeastOneInternalLogic(prodOccurrence, actionORMethodDef, laKey); - } - atLeastOneInternalLogic(prodOccurrence, actionORMethodDef, key) { - let lookAheadFunc = this.getLaFuncFromCache(key); - let action; - if (typeof actionORMethodDef !== "function") { - action = actionORMethodDef.DEF; - const predicate = actionORMethodDef.GATE; - if (predicate !== void 0) { - const orgLookaheadFunction = lookAheadFunc; - lookAheadFunc = /* @__PURE__ */ __name(() => { - return predicate.call(this) && orgLookaheadFunction.call(this); - }, "lookAheadFunc"); + if (toAdd && string(toAdd)) { + var selector = toAdd; + toAdd = cy.mutableElements().filter(selector); + } + var map5 = _p.map; + for (var i2 = 0; i2 < toAdd.length; i2++) { + var toAddEle = toAdd[i2]; + var id30 = toAddEle._private.data.id; + var add3 = !map5.has(id30); + if (add3) { + var index = this.length++; + this[index] = toAddEle; + map5.set(id30, { + ele: toAddEle, + index + }); } - } else { - action = actionORMethodDef; } - if (lookAheadFunc.call(this) === true) { - let notStuck = this.doSingleRepetition(action); - while (lookAheadFunc.call(this) === true && notStuck === true) { - notStuck = this.doSingleRepetition(action); + return this; + }, "merge"), + unmergeAt: /* @__PURE__ */ __name(function unmergeAt(i2) { + var ele = this[i2]; + var id30 = ele.id(); + var _p = this._private; + var map5 = _p.map; + this[i2] = void 0; + map5["delete"](id30); + var unmergedLastEle = i2 === this.length - 1; + if (this.length > 1 && !unmergedLastEle) { + var lastEleI = this.length - 1; + var lastEle = this[lastEleI]; + var lastEleId = lastEle._private.data.id; + this[lastEleI] = void 0; + this[i2] = lastEle; + map5.set(lastEleId, { + ele: lastEle, + index: i2 + }); + } + this.length--; + return this; + }, "unmergeAt"), + // remove single ele in place in calling collection + unmergeOne: /* @__PURE__ */ __name(function unmergeOne(ele) { + ele = ele[0]; + var _p = this._private; + var id30 = ele._private.data.id; + var map5 = _p.map; + var entry = map5.get(id30); + if (!entry) { + return this; + } + var i2 = entry.index; + this.unmergeAt(i2); + return this; + }, "unmergeOne"), + // remove eles in place on calling collection + unmerge: /* @__PURE__ */ __name(function unmerge(toRemove) { + var cy = this._private.cy; + if (!toRemove) { + return this; + } + if (toRemove && string(toRemove)) { + var selector = toRemove; + toRemove = cy.mutableElements().filter(selector); + } + for (var i2 = 0; i2 < toRemove.length; i2++) { + this.unmergeOne(toRemove[i2]); + } + return this; + }, "unmerge"), + unmergeBy: /* @__PURE__ */ __name(function unmergeBy(toRmFn) { + for (var i2 = this.length - 1; i2 >= 0; i2--) { + var ele = this[i2]; + if (toRmFn(ele)) { + this.unmergeAt(i2); } - } else { - throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY, actionORMethodDef.ERR_MSG); } - this.attemptInRepetitionRecovery(this.atLeastOneInternal, [prodOccurrence, actionORMethodDef], lookAheadFunc, AT_LEAST_ONE_IDX, prodOccurrence, NextTerminalAfterAtLeastOneWalker); - } - atLeastOneSepFirstInternal(prodOccurrence, options3) { - const laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_SEP_IDX, prodOccurrence); - this.atLeastOneSepFirstInternalLogic(prodOccurrence, options3, laKey); - } - atLeastOneSepFirstInternalLogic(prodOccurrence, options3, key) { - const action = options3.DEF; - const separator = options3.SEP; - const firstIterationLookaheadFunc = this.getLaFuncFromCache(key); - if (firstIterationLookaheadFunc.call(this) === true) { - action.call(this); - const separatorLookAheadFunc = /* @__PURE__ */ __name(() => { - return this.tokenMatcher(this.LA(1), separator); - }, "separatorLookAheadFunc"); - while (this.tokenMatcher(this.LA(1), separator) === true) { - this.CONSUME(separator); - action.call(this); + return this; + }, "unmergeBy"), + map: /* @__PURE__ */ __name(function map4(mapFn, thisArg) { + var arr = []; + var eles = this; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + var ret = thisArg ? mapFn.apply(thisArg, [ele, i2, eles]) : mapFn(ele, i2, eles); + arr.push(ret); + } + return arr; + }, "map"), + reduce: /* @__PURE__ */ __name(function reduce2(fn3, initialValue) { + var val = initialValue; + var eles = this; + for (var i2 = 0; i2 < eles.length; i2++) { + val = fn3(val, eles[i2], i2, eles); + } + return val; + }, "reduce"), + max: /* @__PURE__ */ __name(function max8(valFn, thisArg) { + var max10 = -Infinity; + var maxEle; + var eles = this; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + var val = thisArg ? valFn.apply(thisArg, [ele, i2, eles]) : valFn(ele, i2, eles); + if (val > max10) { + max10 = val; + maxEle = ele; } - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ - prodOccurrence, - separator, - separatorLookAheadFunc, - action, - NextTerminalAfterAtLeastOneSepWalker - ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, NextTerminalAfterAtLeastOneSepWalker); - } else { - throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, options3.ERR_MSG); } - } - manyInternal(prodOccurrence, actionORMethodDef) { - const laKey = this.getKeyForAutomaticLookahead(MANY_IDX, prodOccurrence); - return this.manyInternalLogic(prodOccurrence, actionORMethodDef, laKey); - } - manyInternalLogic(prodOccurrence, actionORMethodDef, key) { - let lookaheadFunction = this.getLaFuncFromCache(key); - let action; - if (typeof actionORMethodDef !== "function") { - action = actionORMethodDef.DEF; - const predicate = actionORMethodDef.GATE; - if (predicate !== void 0) { - const orgLookaheadFunction = lookaheadFunction; - lookaheadFunction = /* @__PURE__ */ __name(() => { - return predicate.call(this) && orgLookaheadFunction.call(this); - }, "lookaheadFunction"); + return { + value: max10, + ele: maxEle + }; + }, "max"), + min: /* @__PURE__ */ __name(function min7(valFn, thisArg) { + var min9 = Infinity; + var minEle; + var eles = this; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + var val = thisArg ? valFn.apply(thisArg, [ele, i2, eles]) : valFn(ele, i2, eles); + if (val < min9) { + min9 = val; + minEle = ele; } - } else { - action = actionORMethodDef; } - let notStuck = true; - while (lookaheadFunction.call(this) === true && notStuck === true) { - notStuck = this.doSingleRepetition(action); + return { + value: min9, + ele: minEle + }; + }, "min") + }; + fn$1 = elesfn$8; + fn$1["u"] = fn$1["|"] = fn$1["+"] = fn$1.union = fn$1.or = fn$1.add; + fn$1["\\"] = fn$1["!"] = fn$1["-"] = fn$1.difference = fn$1.relativeComplement = fn$1.subtract = fn$1.not; + fn$1["n"] = fn$1["&"] = fn$1["."] = fn$1.and = fn$1.intersection = fn$1.intersect; + fn$1["^"] = fn$1["(+)"] = fn$1["(-)"] = fn$1.symmetricDifference = fn$1.symdiff = fn$1.xor; + fn$1.fnFilter = fn$1.filterFn = fn$1.stdFilter = fn$1.filter; + fn$1.complement = fn$1.abscomp = fn$1.absoluteComplement; + elesfn$7 = { + isNode: /* @__PURE__ */ __name(function isNode() { + return this.group() === "nodes"; + }, "isNode"), + isEdge: /* @__PURE__ */ __name(function isEdge() { + return this.group() === "edges"; + }, "isEdge"), + isLoop: /* @__PURE__ */ __name(function isLoop() { + return this.isEdge() && this.source()[0] === this.target()[0]; + }, "isLoop"), + isSimple: /* @__PURE__ */ __name(function isSimple() { + return this.isEdge() && this.source()[0] !== this.target()[0]; + }, "isSimple"), + group: /* @__PURE__ */ __name(function group() { + var ele = this[0]; + if (ele) { + return ele._private.group; } - this.attemptInRepetitionRecovery( - this.manyInternal, - [prodOccurrence, actionORMethodDef], - lookaheadFunction, - MANY_IDX, - prodOccurrence, - NextTerminalAfterManyWalker, - // The notStuck parameter is only relevant when "attemptInRepetitionRecovery" - // is invoked from manyInternal, in the MANY_SEP case and AT_LEAST_ONE[_SEP] - // An infinite loop cannot occur as: - // - Either the lookahead is guaranteed to consume something (Single Token Separator) - // - AT_LEAST_ONE by definition is guaranteed to consume something (or error out). - notStuck - ); + }, "group") + }; + zIndexSort = /* @__PURE__ */ __name(function zIndexSort2(a2, b3) { + var cy = a2.cy(); + var hasCompoundNodes2 = cy.hasCompoundNodes(); + function getDepth(ele) { + var style3 = ele.pstyle("z-compound-depth"); + if (style3.value === "auto") { + return hasCompoundNodes2 ? ele.zDepth() : 0; + } else if (style3.value === "bottom") { + return -1; + } else if (style3.value === "top") { + return MAX_INT$1; + } + return 0; } - manySepFirstInternal(prodOccurrence, options3) { - const laKey = this.getKeyForAutomaticLookahead(MANY_SEP_IDX, prodOccurrence); - this.manySepFirstInternalLogic(prodOccurrence, options3, laKey); + __name(getDepth, "getDepth"); + var depthDiff = getDepth(a2) - getDepth(b3); + if (depthDiff !== 0) { + return depthDiff; } - manySepFirstInternalLogic(prodOccurrence, options3, key) { - const action = options3.DEF; - const separator = options3.SEP; - const firstIterationLaFunc = this.getLaFuncFromCache(key); - if (firstIterationLaFunc.call(this) === true) { - action.call(this); - const separatorLookAheadFunc = /* @__PURE__ */ __name(() => { - return this.tokenMatcher(this.LA(1), separator); - }, "separatorLookAheadFunc"); - while (this.tokenMatcher(this.LA(1), separator) === true) { - this.CONSUME(separator); - action.call(this); - } - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ - prodOccurrence, - separator, - separatorLookAheadFunc, - action, - NextTerminalAfterManySepWalker - ], separatorLookAheadFunc, MANY_SEP_IDX, prodOccurrence, NextTerminalAfterManySepWalker); + function getEleDepth(ele) { + var style3 = ele.pstyle("z-index-compare"); + if (style3.value === "auto") { + return ele.isNode() ? 1 : 0; } + return 0; } - repetitionSepSecondInternal(prodOccurrence, separator, separatorLookAheadFunc, action, nextTerminalAfterWalker) { - while (separatorLookAheadFunc()) { - this.CONSUME(separator); - action.call(this); - } - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ - prodOccurrence, - separator, - separatorLookAheadFunc, - action, - nextTerminalAfterWalker - ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, nextTerminalAfterWalker); + __name(getEleDepth, "getEleDepth"); + var eleDiff = getEleDepth(a2) - getEleDepth(b3); + if (eleDiff !== 0) { + return eleDiff; } - doSingleRepetition(action) { - const beforeIteration = this.getLexerPosition(); - action.call(this); - const afterIteration = this.getLexerPosition(); - return afterIteration > beforeIteration; + var zDiff = a2.pstyle("z-index").value - b3.pstyle("z-index").value; + if (zDiff !== 0) { + return zDiff; } - orInternal(altsOrOpts, occurrence) { - const laKey = this.getKeyForAutomaticLookahead(OR_IDX, occurrence); - const alts = isArray_default(altsOrOpts) ? altsOrOpts : altsOrOpts.DEF; - const laFunc = this.getLaFuncFromCache(laKey); - const altIdxToTake = laFunc.call(this, alts); - if (altIdxToTake !== void 0) { - const chosenAlternative = alts[altIdxToTake]; - return chosenAlternative.ALT.call(this); + return a2.poolIndex() - b3.poolIndex(); + }, "zIndexSort"); + elesfn$6 = { + forEach: /* @__PURE__ */ __name(function forEach2(fn3, thisArg) { + if (fn$6(fn3)) { + var N3 = this.length; + for (var i2 = 0; i2 < N3; i2++) { + var ele = this[i2]; + var ret = thisArg ? fn3.apply(thisArg, [ele, i2, this]) : fn3(ele, i2, this); + if (ret === false) { + break; + } + } } - this.raiseNoAltException(occurrence, altsOrOpts.ERR_MSG); - } - ruleFinallyStateUpdate() { - this.RULE_STACK.pop(); - this.RULE_OCCURRENCE_STACK.pop(); - this.cstFinallyStateUpdate(); - if (this.RULE_STACK.length === 0 && this.isAtEndOfInput() === false) { - const firstRedundantTok = this.LA(1); - const errMsg = this.errorMessageProvider.buildNotAllInputParsedMessage({ - firstRedundant: firstRedundantTok, - ruleName: this.getCurrRuleFullName() - }); - this.SAVE_ERROR(new NotAllInputParsedException(errMsg, firstRedundantTok)); + return this; + }, "forEach"), + toArray: /* @__PURE__ */ __name(function toArray2() { + var array4 = []; + for (var i2 = 0; i2 < this.length; i2++) { + array4.push(this[i2]); } - } - subruleInternal(ruleToCall, idx, options3) { - let ruleResult; - try { - const args = options3 !== void 0 ? options3.ARGS : void 0; - this.subruleIdx = idx; - ruleResult = ruleToCall.apply(this, args); - this.cstPostNonTerminal(ruleResult, options3 !== void 0 && options3.LABEL !== void 0 ? options3.LABEL : ruleToCall.ruleName); - return ruleResult; - } catch (e3) { - throw this.subruleInternalError(e3, options3, ruleToCall.ruleName); + return array4; + }, "toArray"), + slice: /* @__PURE__ */ __name(function slice2(start3, end2) { + var array4 = []; + var thisSize = this.length; + if (end2 == null) { + end2 = thisSize; } - } - subruleInternalError(e3, options3, ruleName) { - if (isRecognitionException(e3) && e3.partialCstResult !== void 0) { - this.cstPostNonTerminal(e3.partialCstResult, options3 !== void 0 && options3.LABEL !== void 0 ? options3.LABEL : ruleName); - delete e3.partialCstResult; + if (start3 == null) { + start3 = 0; } - throw e3; - } - consumeInternal(tokType, idx, options3) { - let consumedToken; - try { - const nextToken = this.LA(1); - if (this.tokenMatcher(nextToken, tokType) === true) { - this.consumeToken(); - consumedToken = nextToken; - } else { - this.consumeInternalError(tokType, nextToken, options3); - } - } catch (eFromConsumption) { - consumedToken = this.consumeInternalRecovery(tokType, idx, eFromConsumption); + if (start3 < 0) { + start3 = thisSize + start3; } - this.cstPostTerminal(options3 !== void 0 && options3.LABEL !== void 0 ? options3.LABEL : tokType.name, consumedToken); - return consumedToken; - } - consumeInternalError(tokType, nextToken, options3) { - let msg; - const previousToken = this.LA(0); - if (options3 !== void 0 && options3.ERR_MSG) { - msg = options3.ERR_MSG; - } else { - msg = this.errorMessageProvider.buildMismatchTokenMessage({ - expected: tokType, - actual: nextToken, - previous: previousToken, - ruleName: this.getCurrRuleFullName() - }); + if (end2 < 0) { + end2 = thisSize + end2; } - throw this.SAVE_ERROR(new MismatchedTokenException(msg, nextToken, previousToken)); - } - consumeInternalRecovery(tokType, idx, eFromConsumption) { - if (this.recoveryEnabled && // TODO: more robust checking of the exception type. Perhaps Typescript extending expressions? - eFromConsumption.name === "MismatchedTokenException" && !this.isBackTracking()) { - const follows = this.getFollowsForInRuleRecovery(tokType, idx); - try { - return this.tryInRuleRecovery(tokType, follows); - } catch (eFromInRuleRecovery) { - if (eFromInRuleRecovery.name === IN_RULE_RECOVERY_EXCEPTION) { - throw eFromConsumption; - } else { - throw eFromInRuleRecovery; - } + for (var i2 = start3; i2 >= 0 && i2 < end2 && i2 < thisSize; i2++) { + array4.push(this[i2]); + } + return this.spawn(array4); + }, "slice"), + size: /* @__PURE__ */ __name(function size2() { + return this.length; + }, "size"), + eq: /* @__PURE__ */ __name(function eq2(i2) { + return this[i2] || this.spawn(); + }, "eq"), + first: /* @__PURE__ */ __name(function first() { + return this[0] || this.spawn(); + }, "first"), + last: /* @__PURE__ */ __name(function last2() { + return this[this.length - 1] || this.spawn(); + }, "last"), + empty: /* @__PURE__ */ __name(function empty2() { + return this.length === 0; + }, "empty"), + nonempty: /* @__PURE__ */ __name(function nonempty() { + return !this.empty(); + }, "nonempty"), + sort: /* @__PURE__ */ __name(function sort2(sortFn) { + if (!fn$6(sortFn)) { + return this; + } + var sorted = this.toArray().sort(sortFn); + return this.spawn(sorted); + }, "sort"), + sortByZIndex: /* @__PURE__ */ __name(function sortByZIndex() { + return this.sort(zIndexSort); + }, "sortByZIndex"), + zDepth: /* @__PURE__ */ __name(function zDepth() { + var ele = this[0]; + if (!ele) { + return void 0; + } + var _p = ele._private; + var group2 = _p.group; + if (group2 === "nodes") { + var depth = _p.data.parent ? ele.parents().size() : 0; + if (!ele.isParent()) { + return MAX_INT$1 - 1; } + return depth; } else { - throw eFromConsumption; + var src = _p.source; + var tgt = _p.target; + var srcDepth = src.zDepth(); + var tgtDepth = tgt.zDepth(); + return Math.max(srcDepth, tgtDepth, 0); } - } - saveRecogState() { - const savedErrors = this.errors; - const savedRuleStack = clone_default2(this.RULE_STACK); - return { - errors: savedErrors, - lexerState: this.exportLexerState(), - RULE_STACK: savedRuleStack, - CST_STACK: this.CST_STACK - }; - } - reloadRecogState(newState2) { - this.errors = newState2.errors; - this.importLexerState(newState2.lexerState); - this.RULE_STACK = newState2.RULE_STACK; - } - ruleInvocationStateUpdate(shortName, fullName, idxInCallingRule) { - this.RULE_OCCURRENCE_STACK.push(idxInCallingRule); - this.RULE_STACK.push(shortName); - this.cstInvocationStateUpdate(fullName); - } - isBackTracking() { - return this.isBackTrackingStack.length !== 0; - } - getCurrRuleFullName() { - const shortName = this.getLastExplicitRuleShortName(); - return this.shortRuleNameToFull[shortName]; - } - shortRuleNameToFullName(shortName) { - return this.shortRuleNameToFull[shortName]; - } - isAtEndOfInput() { - return this.tokenMatcher(this.LA(1), EOF); - } - reset() { - this.resetLexerState(); - this.subruleIdx = 0; - this.isBackTrackingStack = []; - this.errors = []; - this.RULE_STACK = []; - this.CST_STACK = []; - this.RULE_OCCURRENCE_STACK = []; - } + }, "zDepth") }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/error_handler.js - var ErrorHandler; - var init_error_handler = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/error_handler.js"() { - "use strict"; - init_exceptions_public(); - init_lodash(); - init_lookahead(); - init_parser(); - ErrorHandler = class { - static { - __name(this, "ErrorHandler"); - } - initErrorHandler(config5) { - this._errors = []; - this.errorMessageProvider = has_default(config5, "errorMessageProvider") ? config5.errorMessageProvider : DEFAULT_PARSER_CONFIG.errorMessageProvider; + elesfn$6.each = elesfn$6.forEach; + defineSymbolIterator = /* @__PURE__ */ __name(function defineSymbolIterator2() { + var typeofUndef = "undefined"; + var isIteratorSupported = (typeof Symbol === "undefined" ? "undefined" : _typeof(Symbol)) != typeofUndef && _typeof(Symbol.iterator) != typeofUndef; + if (isIteratorSupported) { + elesfn$6[Symbol.iterator] = function() { + var _this = this; + var entry = { + value: void 0, + done: false + }; + var i2 = 0; + var length2 = this.length; + return _defineProperty$1({ + next: /* @__PURE__ */ __name(function next3() { + if (i2 < length2) { + entry.value = _this[i2++]; + } else { + entry.value = void 0; + entry.done = true; + } + return entry; + }, "next") + }, Symbol.iterator, function() { + return this; + }); + }; } - SAVE_ERROR(error3) { - if (isRecognitionException(error3)) { - error3.context = { - ruleStack: this.getHumanReadableRuleStack(), - ruleOccurrenceStack: clone_default2(this.RULE_OCCURRENCE_STACK) + }, "defineSymbolIterator"); + defineSymbolIterator(); + getLayoutDimensionOptions = defaults$g({ + nodeDimensionsIncludeLabels: false + }); + elesfn$5 = { + // Calculates and returns node dimensions { x, y } based on options given + layoutDimensions: /* @__PURE__ */ __name(function layoutDimensions(options2) { + options2 = getLayoutDimensionOptions(options2); + var dims; + if (!this.takesUpSpace()) { + dims = { + w: 0, + h: 0 + }; + } else if (options2.nodeDimensionsIncludeLabels) { + var bbDim = this.boundingBox(); + dims = { + w: bbDim.w, + h: bbDim.h }; - this._errors.push(error3); - return error3; } else { - throw Error("Trying to save an Error which is not a RecognitionException"); + dims = { + w: this.outerWidth(), + h: this.outerHeight() + }; } - } - get errors() { - return clone_default2(this._errors); - } - set errors(newErrors) { - this._errors = newErrors; - } - // TODO: consider caching the error message computed information - raiseEarlyExitException(occurrence, prodType, userDefinedErrMsg) { - const ruleName = this.getCurrRuleFullName(); - const ruleGrammar = this.getGAstProductions()[ruleName]; - const lookAheadPathsPerAlternative = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, this.maxLookahead); - const insideProdPaths = lookAheadPathsPerAlternative[0]; - const actualTokens = []; - for (let i2 = 1; i2 <= this.maxLookahead; i2++) { - actualTokens.push(this.LA(i2)); + if (dims.w === 0 || dims.h === 0) { + dims.w = dims.h = 1; } - const msg = this.errorMessageProvider.buildEarlyExitMessage({ - expectedIterationPaths: insideProdPaths, - actual: actualTokens, - previous: this.LA(0), - customUserDescription: userDefinedErrMsg, - ruleName + return dims; + }, "layoutDimensions"), + // using standard layout options, apply position function (w/ or w/o animation) + layoutPositions: /* @__PURE__ */ __name(function layoutPositions(layout6, options2, fn3) { + var nodes5 = this.nodes().filter(function(n2) { + return !n2.isParent(); }); - throw this.SAVE_ERROR(new EarlyExitException(msg, this.LA(1), this.LA(0))); - } - // TODO: consider caching the error message computed information - raiseNoAltException(occurrence, errMsgTypes) { - const ruleName = this.getCurrRuleFullName(); - const ruleGrammar = this.getGAstProductions()[ruleName]; - const lookAheadPathsPerAlternative = getLookaheadPathsForOr(occurrence, ruleGrammar, this.maxLookahead); - const actualTokens = []; - for (let i2 = 1; i2 <= this.maxLookahead; i2++) { - actualTokens.push(this.LA(i2)); - } - const previousToken = this.LA(0); - const errMsg = this.errorMessageProvider.buildNoViableAltMessage({ - expectedPathsPerAlt: lookAheadPathsPerAlternative, - actual: actualTokens, - previous: previousToken, - customUserDescription: errMsgTypes, - ruleName: this.getCurrRuleFullName() + var cy = this.cy(); + var layoutEles = options2.eles; + var getMemoizeKey = /* @__PURE__ */ __name(function getMemoizeKey2(node3) { + return node3.id(); + }, "getMemoizeKey"); + var fnMem = memoize2(fn3, getMemoizeKey); + layout6.emit({ + type: "layoutstart", + layout: layout6 }); - throw this.SAVE_ERROR(new NoViableAltException(errMsg, this.LA(1), previousToken)); - } - }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/context_assist.js - var ContentAssist; - var init_context_assist = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/context_assist.js"() { - "use strict"; - init_interpreter(); - init_lodash(); - ContentAssist = class { - static { - __name(this, "ContentAssist"); - } - initContentAssist() { - } - computeContentAssist(startRuleName, precedingInput) { - const startRuleGast = this.gastProductionsCache[startRuleName]; - if (isUndefined_default(startRuleGast)) { - throw Error(`Rule ->${startRuleName}<- does not exist in this grammar.`); - } - return nextPossibleTokensAfter([startRuleGast], precedingInput, this.tokenMatcher, this.maxLookahead); - } - // TODO: should this be a member method or a utility? it does not have any state or usage of 'this'... - // TODO: should this be more explicitly part of the public API? - getNextPossibleTokenTypes(grammarPath) { - const topRuleName = head_default(grammarPath.ruleStack); - const gastProductions = this.getGAstProductions(); - const topProduction = gastProductions[topRuleName]; - const nextPossibleTokenTypes = new NextAfterTokenWalker(topProduction, grammarPath).startWalking(); - return nextPossibleTokenTypes; - } - }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/gast_recorder.js - function recordProd(prodConstructor, mainProdArg, occurrence, handleSep = false) { - assertMethodIdxIsValid(occurrence); - const prevProd = last_default(this.recordingProdStack); - const grammarAction = isFunction_default(mainProdArg) ? mainProdArg : mainProdArg.DEF; - const newProd = new prodConstructor({ definition: [], idx: occurrence }); - if (handleSep) { - newProd.separator = mainProdArg.SEP; - } - if (has_default(mainProdArg, "MAX_LOOKAHEAD")) { - newProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD; - } - this.recordingProdStack.push(newProd); - grammarAction.call(this); - prevProd.definition.push(newProd); - this.recordingProdStack.pop(); - return RECORDING_NULL_OBJECT; - } - function recordOrProd(mainProdArg, occurrence) { - assertMethodIdxIsValid(occurrence); - const prevProd = last_default(this.recordingProdStack); - const hasOptions = isArray_default(mainProdArg) === false; - const alts = hasOptions === false ? mainProdArg : mainProdArg.DEF; - const newOrProd = new Alternation({ - definition: [], - idx: occurrence, - ignoreAmbiguities: hasOptions && mainProdArg.IGNORE_AMBIGUITIES === true - }); - if (has_default(mainProdArg, "MAX_LOOKAHEAD")) { - newOrProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD; - } - const hasPredicates = some_default(alts, (currAlt) => isFunction_default(currAlt.GATE)); - newOrProd.hasPredicates = hasPredicates; - prevProd.definition.push(newOrProd); - forEach_default(alts, (currAlt) => { - const currAltFlat = new Alternative({ definition: [] }); - newOrProd.definition.push(currAltFlat); - if (has_default(currAlt, "IGNORE_AMBIGUITIES")) { - currAltFlat.ignoreAmbiguities = currAlt.IGNORE_AMBIGUITIES; - } else if (has_default(currAlt, "GATE")) { - currAltFlat.ignoreAmbiguities = true; - } - this.recordingProdStack.push(currAltFlat); - currAlt.ALT.call(this); - this.recordingProdStack.pop(); - }); - return RECORDING_NULL_OBJECT; - } - function getIdxSuffix(idx) { - return idx === 0 ? "" : `${idx}`; - } - function assertMethodIdxIsValid(idx) { - if (idx < 0 || idx > MAX_METHOD_IDX) { - const error3 = new Error( - // The stack trace will contain all the needed details - `Invalid DSL Method idx value: <${idx}> - Idx value must be a none negative value smaller than ${MAX_METHOD_IDX + 1}` - ); - error3.KNOWN_RECORDER_ERROR = true; - throw error3; - } - } - var RECORDING_NULL_OBJECT, HANDLE_SEPARATOR, MAX_METHOD_IDX, RFT, RECORDING_PHASE_TOKEN, RECORDING_PHASE_CSTNODE, GastRecorder; - var init_gast_recorder = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/gast_recorder.js"() { - "use strict"; - init_lodash(); - init_api3(); - init_lexer_public(); - init_tokens(); - init_tokens_public(); - init_parser(); - init_keys2(); - RECORDING_NULL_OBJECT = { - description: "This Object indicates the Parser is during Recording Phase" - }; - Object.freeze(RECORDING_NULL_OBJECT); - HANDLE_SEPARATOR = true; - MAX_METHOD_IDX = Math.pow(2, BITS_FOR_OCCURRENCE_IDX) - 1; - RFT = createToken({ name: "RECORDING_PHASE_TOKEN", pattern: Lexer2.NA }); - augmentTokenTypes([RFT]); - RECORDING_PHASE_TOKEN = createTokenInstance( - RFT, - "This IToken indicates the Parser is in Recording Phase\n See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details", - // Using "-1" instead of NaN (as in EOF) because an actual number is less likely to - // cause errors if the output of LA or CONSUME would be (incorrectly) used during the recording phase. - -1, - -1, - -1, - -1, - -1, - -1 - ); - Object.freeze(RECORDING_PHASE_TOKEN); - RECORDING_PHASE_CSTNODE = { - name: "This CSTNode indicates the Parser is in Recording Phase\n See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details", - children: {} - }; - GastRecorder = class { - static { - __name(this, "GastRecorder"); - } - initGastRecorder(config5) { - this.recordingProdStack = []; - this.RECORDING_PHASE = false; - } - enableRecording() { - this.RECORDING_PHASE = true; - this.TRACE_INIT("Enable Recording", () => { - for (let i2 = 0; i2 < 10; i2++) { - const idx = i2 > 0 ? i2 : ""; - this[`CONSUME${idx}`] = function(arg1, arg2) { - return this.consumeInternalRecord(arg1, i2, arg2); - }; - this[`SUBRULE${idx}`] = function(arg1, arg2) { - return this.subruleInternalRecord(arg1, i2, arg2); - }; - this[`OPTION${idx}`] = function(arg1) { - return this.optionInternalRecord(arg1, i2); - }; - this[`OR${idx}`] = function(arg1) { - return this.orInternalRecord(arg1, i2); - }; - this[`MANY${idx}`] = function(arg1) { - this.manyInternalRecord(i2, arg1); - }; - this[`MANY_SEP${idx}`] = function(arg1) { - this.manySepFirstInternalRecord(i2, arg1); - }; - this[`AT_LEAST_ONE${idx}`] = function(arg1) { - this.atLeastOneInternalRecord(i2, arg1); - }; - this[`AT_LEAST_ONE_SEP${idx}`] = function(arg1) { - this.atLeastOneSepFirstInternalRecord(i2, arg1); - }; - } - this[`consume`] = function(idx, arg1, arg2) { - return this.consumeInternalRecord(arg1, idx, arg2); - }; - this[`subrule`] = function(idx, arg1, arg2) { - return this.subruleInternalRecord(arg1, idx, arg2); - }; - this[`option`] = function(idx, arg1) { - return this.optionInternalRecord(arg1, idx); - }; - this[`or`] = function(idx, arg1) { - return this.orInternalRecord(arg1, idx); + layout6.animations = []; + var calculateSpacing = /* @__PURE__ */ __name(function calculateSpacing2(spacing2, nodesBb, pos) { + var center4 = { + x: nodesBb.x1 + nodesBb.w / 2, + y: nodesBb.y1 + nodesBb.h / 2 }; - this[`many`] = function(idx, arg1) { - this.manyInternalRecord(idx, arg1); + var spacingVector = { + // scale from center of bounding box (not necessarily 0,0) + x: (pos.x - center4.x) * spacing2, + y: (pos.y - center4.y) * spacing2 }; - this[`atLeastOne`] = function(idx, arg1) { - this.atLeastOneInternalRecord(idx, arg1); + return { + x: center4.x + spacingVector.x, + y: center4.y + spacingVector.y }; - this.ACTION = this.ACTION_RECORD; - this.BACKTRACK = this.BACKTRACK_RECORD; - this.LA = this.LA_RECORD; - }); - } - disableRecording() { - this.RECORDING_PHASE = false; - this.TRACE_INIT("Deleting Recording methods", () => { - const that = this; - for (let i2 = 0; i2 < 10; i2++) { - const idx = i2 > 0 ? i2 : ""; - delete that[`CONSUME${idx}`]; - delete that[`SUBRULE${idx}`]; - delete that[`OPTION${idx}`]; - delete that[`OR${idx}`]; - delete that[`MANY${idx}`]; - delete that[`MANY_SEP${idx}`]; - delete that[`AT_LEAST_ONE${idx}`]; - delete that[`AT_LEAST_ONE_SEP${idx}`]; + }, "calculateSpacing"); + var useSpacingFactor = options2.spacingFactor && options2.spacingFactor !== 1; + var spacingBb = /* @__PURE__ */ __name(function spacingBb2() { + if (!useSpacingFactor) { + return null; } - delete that[`consume`]; - delete that[`subrule`]; - delete that[`option`]; - delete that[`or`]; - delete that[`many`]; - delete that[`atLeastOne`]; - delete that.ACTION; - delete that.BACKTRACK; - delete that.LA; - }); - } - // Parser methods are called inside an ACTION? - // Maybe try/catch/finally on ACTIONS while disabling the recorders state changes? - // @ts-expect-error -- noop place holder - ACTION_RECORD(impl2) { - } - // Executing backtracking logic will break our recording logic assumptions - BACKTRACK_RECORD(grammarRule, args) { - return () => true; - } - // LA is part of the official API and may be used for custom lookahead logic - // by end users who may forget to wrap it in ACTION or inside a GATE - LA_RECORD(howMuch) { - return END_OF_FILE; - } - topLevelRuleRecord(name, def2) { - try { - const newTopLevelRule = new Rule({ definition: [], name }); - newTopLevelRule.name = name; - this.recordingProdStack.push(newTopLevelRule); - def2.call(this); - this.recordingProdStack.pop(); - return newTopLevelRule; - } catch (originalError) { - if (originalError.KNOWN_RECORDER_ERROR !== true) { - try { - originalError.message = originalError.message + '\n This error was thrown during the "grammar recording phase" For more info see:\n https://chevrotain.io/docs/guide/internals.html#grammar-recording'; - } catch (mutabilityError) { - throw originalError; + var bb2 = makeBoundingBox(); + for (var i3 = 0; i3 < nodes5.length; i3++) { + var node3 = nodes5[i3]; + var pos = fnMem(node3, i3); + expandBoundingBoxByPoint(bb2, pos.x, pos.y); + } + return bb2; + }, "spacingBb"); + var bb = spacingBb(); + var getFinalPos = memoize2(function(node3, i3) { + var newPos2 = fnMem(node3, i3); + if (useSpacingFactor) { + var spacing2 = Math.abs(options2.spacingFactor); + newPos2 = calculateSpacing(spacing2, bb, newPos2); + } + if (options2.transform != null) { + newPos2 = options2.transform(node3, newPos2); + } + return newPos2; + }, getMemoizeKey); + if (options2.animate) { + for (var i2 = 0; i2 < nodes5.length; i2++) { + var node2 = nodes5[i2]; + var newPos = getFinalPos(node2, i2); + var animateNode = options2.animateFilter == null || options2.animateFilter(node2, i2); + if (animateNode) { + var ani = node2.animation({ + position: newPos, + duration: options2.animationDuration, + easing: options2.animationEasing + }); + layout6.animations.push(ani); + } else { + node2.position(newPos); } } - throw originalError; + if (options2.fit) { + var fitAni = cy.animation({ + fit: { + boundingBox: layoutEles.boundingBoxAt(getFinalPos), + padding: options2.padding + }, + duration: options2.animationDuration, + easing: options2.animationEasing + }); + layout6.animations.push(fitAni); + } else if (options2.zoom !== void 0 && options2.pan !== void 0) { + var zoomPanAni = cy.animation({ + zoom: options2.zoom, + pan: options2.pan, + duration: options2.animationDuration, + easing: options2.animationEasing + }); + layout6.animations.push(zoomPanAni); + } + layout6.animations.forEach(function(ani2) { + return ani2.play(); + }); + layout6.one("layoutready", options2.ready); + layout6.emit({ + type: "layoutready", + layout: layout6 + }); + Promise$1.all(layout6.animations.map(function(ani2) { + return ani2.promise(); + })).then(function() { + layout6.one("layoutstop", options2.stop); + layout6.emit({ + type: "layoutstop", + layout: layout6 + }); + }); + } else { + nodes5.positions(getFinalPos); + if (options2.fit) { + cy.fit(options2.eles, options2.padding); + } + if (options2.zoom != null) { + cy.zoom(options2.zoom); + } + if (options2.pan) { + cy.pan(options2.pan); + } + layout6.one("layoutready", options2.ready); + layout6.emit({ + type: "layoutready", + layout: layout6 + }); + layout6.one("layoutstop", options2.stop); + layout6.emit({ + type: "layoutstop", + layout: layout6 + }); } - } - // Implementation of parsing DSL - optionInternalRecord(actionORMethodDef, occurrence) { - return recordProd.call(this, Option2, actionORMethodDef, occurrence); - } - atLeastOneInternalRecord(occurrence, actionORMethodDef) { - recordProd.call(this, RepetitionMandatory, actionORMethodDef, occurrence); - } - atLeastOneSepFirstInternalRecord(occurrence, options3) { - recordProd.call(this, RepetitionMandatoryWithSeparator, options3, occurrence, HANDLE_SEPARATOR); - } - manyInternalRecord(occurrence, actionORMethodDef) { - recordProd.call(this, Repetition, actionORMethodDef, occurrence); - } - manySepFirstInternalRecord(occurrence, options3) { - recordProd.call(this, RepetitionWithSeparator, options3, occurrence, HANDLE_SEPARATOR); - } - orInternalRecord(altsOrOpts, occurrence) { - return recordOrProd.call(this, altsOrOpts, occurrence); - } - subruleInternalRecord(ruleToCall, occurrence, options3) { - assertMethodIdxIsValid(occurrence); - if (!ruleToCall || has_default(ruleToCall, "ruleName") === false) { - const error3 = new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(ruleToCall)}> - inside top level rule: <${this.recordingProdStack[0].name}>`); - error3.KNOWN_RECORDER_ERROR = true; - throw error3; + return this; + }, "layoutPositions"), + layout: /* @__PURE__ */ __name(function layout2(options2) { + var cy = this.cy(); + return cy.makeLayout(extend4({}, options2, { + eles: this + })); + }, "layout") + }; + elesfn$5.createLayout = elesfn$5.makeLayout = elesfn$5.layout; + __name(styleCache, "styleCache"); + __name(cacheStyleFunction, "cacheStyleFunction"); + __name(cachePrototypeStyleFunction, "cachePrototypeStyleFunction"); + elesfn$4 = { + recalculateRenderedStyle: /* @__PURE__ */ __name(function recalculateRenderedStyle(useCache) { + var cy = this.cy(); + var renderer10 = cy.renderer(); + var styleEnabled2 = cy.styleEnabled(); + if (renderer10 && styleEnabled2) { + renderer10.recalculateRenderedStyle(this, useCache); } - const prevProd = last_default(this.recordingProdStack); - const ruleName = ruleToCall.ruleName; - const newNoneTerminal = new NonTerminal({ - idx: occurrence, - nonTerminalName: ruleName, - label: options3 === null || options3 === void 0 ? void 0 : options3.LABEL, - // The resolving of the `referencedRule` property will be done once all the Rule's GASTs have been created - referencedRule: void 0 - }); - prevProd.definition.push(newNoneTerminal); - return this.outputCst ? RECORDING_PHASE_CSTNODE : RECORDING_NULL_OBJECT; - } - consumeInternalRecord(tokType, occurrence, options3) { - assertMethodIdxIsValid(occurrence); - if (!hasShortKeyProperty(tokType)) { - const error3 = new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(tokType)}> - inside top level rule: <${this.recordingProdStack[0].name}>`); - error3.KNOWN_RECORDER_ERROR = true; - throw error3; + return this; + }, "recalculateRenderedStyle"), + dirtyStyleCache: /* @__PURE__ */ __name(function dirtyStyleCache() { + var cy = this.cy(); + var dirty = /* @__PURE__ */ __name(function dirty2(ele) { + return ele._private.styleCache = null; + }, "dirty"); + if (cy.hasCompoundNodes()) { + var eles; + eles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); + eles.merge(eles.connectedEdges()); + eles.forEach(dirty); + } else { + this.forEach(function(ele) { + dirty(ele); + ele.connectedEdges().forEach(dirty); + }); } - const prevProd = last_default(this.recordingProdStack); - const newNoneTerminal = new Terminal({ - idx: occurrence, - terminalType: tokType, - label: options3 === null || options3 === void 0 ? void 0 : options3.LABEL - }); - prevProd.definition.push(newNoneTerminal); - return RECORDING_PHASE_TOKEN; - } - }; - __name(recordProd, "recordProd"); - __name(recordOrProd, "recordOrProd"); - __name(getIdxSuffix, "getIdxSuffix"); - __name(assertMethodIdxIsValid, "assertMethodIdxIsValid"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/perf_tracer.js - var PerformanceTracer; - var init_perf_tracer = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/perf_tracer.js"() { - "use strict"; - init_lodash(); - init_api2(); - init_parser(); - PerformanceTracer = class { - static { - __name(this, "PerformanceTracer"); - } - initPerformanceTracer(config5) { - if (has_default(config5, "traceInitPerf")) { - const userTraceInitPerf = config5.traceInitPerf; - const traceIsNumber = typeof userTraceInitPerf === "number"; - this.traceInitMaxIdent = traceIsNumber ? userTraceInitPerf : Infinity; - this.traceInitPerf = traceIsNumber ? userTraceInitPerf > 0 : userTraceInitPerf; + return this; + }, "dirtyStyleCache"), + // fully updates (recalculates) the style for the elements + updateStyle: /* @__PURE__ */ __name(function updateStyle(notifyRenderer) { + var cy = this._private.cy; + if (!cy.styleEnabled()) { + return this; + } + if (cy.batching()) { + var bEles = cy._private.batchStyleEles; + bEles.merge(this); + return this; + } + var hasCompounds = cy.hasCompoundNodes(); + var updatedEles = this; + notifyRenderer = notifyRenderer || notifyRenderer === void 0 ? true : false; + if (hasCompounds) { + updatedEles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); + } + var changedEles = updatedEles; + if (notifyRenderer) { + changedEles.emitAndNotify("style"); } else { - this.traceInitMaxIdent = 0; - this.traceInitPerf = DEFAULT_PARSER_CONFIG.traceInitPerf; + changedEles.emit("style"); } - this.traceInitIndent = -1; - } - TRACE_INIT(phaseDesc, phaseImpl) { - if (this.traceInitPerf === true) { - this.traceInitIndent++; - const indent = new Array(this.traceInitIndent + 1).join(" "); - if (this.traceInitIndent < this.traceInitMaxIdent) { - console.log(`${indent}--> <${phaseDesc}>`); + updatedEles.forEach(function(ele) { + return ele._private.styleDirty = true; + }); + return this; + }, "updateStyle"), + // private: clears dirty flag and recalculates style + cleanStyle: /* @__PURE__ */ __name(function cleanStyle() { + var cy = this.cy(); + if (!cy.styleEnabled()) { + return; + } + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + if (ele._private.styleDirty) { + ele._private.styleDirty = false; + cy.style().apply(ele); } - const { time: time4, value: value2 } = timer2(phaseImpl); - const traceMethod = time4 > 10 ? console.warn : console.log; - if (this.traceInitIndent < this.traceInitMaxIdent) { - traceMethod(`${indent}<-- <${phaseDesc}> time: ${time4}ms`); + } + }, "cleanStyle"), + // get the internal parsed style object for the specified property + parsedStyle: /* @__PURE__ */ __name(function parsedStyle(property2) { + var includeNonDefault = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + var ele = this[0]; + var cy = ele.cy(); + if (!cy.styleEnabled()) { + return; + } + if (ele) { + if (ele._private.styleDirty) { + ele._private.styleDirty = false; + cy.style().apply(ele); + } + var overriddenStyle = ele._private.style[property2]; + if (overriddenStyle != null) { + return overriddenStyle; + } else if (includeNonDefault) { + return cy.style().getDefaultProperty(property2); + } else { + return null; + } + } + }, "parsedStyle"), + numericStyle: /* @__PURE__ */ __name(function numericStyle(property2) { + var ele = this[0]; + if (!ele.cy().styleEnabled()) { + return; + } + if (ele) { + var pstyle = ele.pstyle(property2); + return pstyle.pfValue !== void 0 ? pstyle.pfValue : pstyle.value; + } + }, "numericStyle"), + numericStyleUnits: /* @__PURE__ */ __name(function numericStyleUnits(property2) { + var ele = this[0]; + if (!ele.cy().styleEnabled()) { + return; + } + if (ele) { + return ele.pstyle(property2).units; + } + }, "numericStyleUnits"), + // get the specified css property as a rendered value (i.e. on-screen value) + // or get the whole rendered style if no property specified (NB doesn't allow setting) + renderedStyle: /* @__PURE__ */ __name(function renderedStyle(property2) { + var cy = this.cy(); + if (!cy.styleEnabled()) { + return this; + } + var ele = this[0]; + if (ele) { + return cy.style().getRenderedStyle(ele, property2); + } + }, "renderedStyle"), + // read the calculated css style of the element or override the style (via a bypass) + style: /* @__PURE__ */ __name(function style(name, value2) { + var cy = this.cy(); + if (!cy.styleEnabled()) { + return this; + } + var updateTransitions = false; + var style3 = cy.style(); + if (plainObject(name)) { + var props = name; + style3.applyBypass(this, props, updateTransitions); + this.emitAndNotify("style"); + } else if (string(name)) { + if (value2 === void 0) { + var ele = this[0]; + if (ele) { + return style3.getStylePropertyValue(ele, name); + } else { + return; + } + } else { + style3.applyBypass(this, name, value2, updateTransitions); + this.emitAndNotify("style"); + } + } else if (name === void 0) { + var _ele = this[0]; + if (_ele) { + return style3.getRawStyle(_ele); + } else { + return; + } + } + return this; + }, "style"), + removeStyle: /* @__PURE__ */ __name(function removeStyle(names) { + var cy = this.cy(); + if (!cy.styleEnabled()) { + return this; + } + var updateTransitions = false; + var style3 = cy.style(); + var eles = this; + if (names === void 0) { + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + style3.removeAllBypasses(ele, updateTransitions); } - this.traceInitIndent--; - return value2; } else { - return phaseImpl(); + names = names.split(/\s+/); + for (var _i = 0; _i < eles.length; _i++) { + var _ele2 = eles[_i]; + style3.removeBypasses(_ele2, names, updateTransitions); + } + } + this.emitAndNotify("style"); + return this; + }, "removeStyle"), + show: /* @__PURE__ */ __name(function show() { + this.css("display", "element"); + return this; + }, "show"), + hide: /* @__PURE__ */ __name(function hide() { + this.css("display", "none"); + return this; + }, "hide"), + effectiveOpacity: /* @__PURE__ */ __name(function effectiveOpacity() { + var cy = this.cy(); + if (!cy.styleEnabled()) { + return 1; + } + var hasCompoundNodes2 = cy.hasCompoundNodes(); + var ele = this[0]; + if (ele) { + var _p = ele._private; + var parentOpacity = ele.pstyle("opacity").value; + if (!hasCompoundNodes2) { + return parentOpacity; + } + var parents3 = !_p.data.parent ? null : ele.parents(); + if (parents3) { + for (var i2 = 0; i2 < parents3.length; i2++) { + var parent4 = parents3[i2]; + var opacity = parent4.pstyle("opacity").value; + parentOpacity = opacity * parentOpacity; + } + } + return parentOpacity; + } + }, "effectiveOpacity"), + transparent: /* @__PURE__ */ __name(function transparent() { + var cy = this.cy(); + if (!cy.styleEnabled()) { + return false; + } + var ele = this[0]; + var hasCompoundNodes2 = ele.cy().hasCompoundNodes(); + if (ele) { + if (!hasCompoundNodes2) { + return ele.pstyle("opacity").value === 0; + } else { + return ele.effectiveOpacity() === 0; + } + } + }, "transparent"), + backgrounding: /* @__PURE__ */ __name(function backgrounding() { + var cy = this.cy(); + if (!cy.styleEnabled()) { + return false; } + var ele = this[0]; + return ele._private.backgrounding ? true : false; + }, "backgrounding") + }; + __name(checkCompound, "checkCompound"); + __name(defineDerivedStateFunction, "defineDerivedStateFunction"); + eleTakesUpSpace = cacheStyleFunction("eleTakesUpSpace", function(ele) { + return ele.pstyle("display").value === "element" && ele.width() !== 0 && (ele.isNode() ? ele.height() !== 0 : true); + }); + elesfn$4.takesUpSpace = cachePrototypeStyleFunction("takesUpSpace", defineDerivedStateFunction({ + ok: eleTakesUpSpace + })); + eleInteractive = cacheStyleFunction("eleInteractive", function(ele) { + return ele.pstyle("events").value === "yes" && ele.pstyle("visibility").value === "visible" && eleTakesUpSpace(ele); + }); + parentInteractive = cacheStyleFunction("parentInteractive", function(parent4) { + return parent4.pstyle("visibility").value === "visible" && eleTakesUpSpace(parent4); + }); + elesfn$4.interactive = cachePrototypeStyleFunction("interactive", defineDerivedStateFunction({ + ok: eleInteractive, + parentOk: parentInteractive, + edgeOkViaNode: eleTakesUpSpace + })); + elesfn$4.noninteractive = function() { + var ele = this[0]; + if (ele) { + return !ele.interactive(); } }; - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/utils/apply_mixins.js - function applyMixins(derivedCtor, baseCtors) { - baseCtors.forEach((baseCtor) => { - const baseProto = baseCtor.prototype; - Object.getOwnPropertyNames(baseProto).forEach((propName) => { - if (propName === "constructor") { - return; + eleVisible = cacheStyleFunction("eleVisible", function(ele) { + return ele.pstyle("visibility").value === "visible" && ele.pstyle("opacity").pfValue !== 0 && eleTakesUpSpace(ele); + }); + edgeVisibleViaNode = eleTakesUpSpace; + elesfn$4.visible = cachePrototypeStyleFunction("visible", defineDerivedStateFunction({ + ok: eleVisible, + edgeOkViaNode: edgeVisibleViaNode + })); + elesfn$4.hidden = function() { + var ele = this[0]; + if (ele) { + return !ele.visible(); } - const basePropDescriptor = Object.getOwnPropertyDescriptor(baseProto, propName); - if (basePropDescriptor && (basePropDescriptor.get || basePropDescriptor.set)) { - Object.defineProperty(derivedCtor.prototype, propName, basePropDescriptor); - } else { - derivedCtor.prototype[propName] = baseCtor.prototype[propName]; + }; + elesfn$4.isBundledBezier = cachePrototypeStyleFunction("isBundledBezier", function() { + if (!this.cy().styleEnabled()) { + return false; } + return !this.removed() && this.pstyle("curve-style").value === "bezier" && this.takesUpSpace(); }); - }); - } - var init_apply_mixins = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/utils/apply_mixins.js"() { - "use strict"; - __name(applyMixins, "applyMixins"); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/parser.js - function EMPTY_ALT(value2 = void 0) { - return function() { - return value2; - }; - } - var END_OF_FILE, DEFAULT_PARSER_CONFIG, DEFAULT_RULE_CONFIG, ParserDefinitionErrorType, Parser2, EmbeddedActionsParser; - var init_parser = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/parser.js"() { - "use strict"; - init_lodash(); - init_api2(); - init_follow(); - init_tokens_public(); - init_errors_public(); - init_gast_resolver_public(); - init_recoverable(); - init_looksahead(); - init_tree_builder(); - init_lexer_adapter(); - init_recognizer_api(); - init_recognizer_engine(); - init_error_handler(); - init_context_assist(); - init_gast_recorder(); - init_perf_tracer(); - init_apply_mixins(); - init_checks(); - END_OF_FILE = createTokenInstance(EOF, "", NaN, NaN, NaN, NaN, NaN, NaN); - Object.freeze(END_OF_FILE); - DEFAULT_PARSER_CONFIG = Object.freeze({ - recoveryEnabled: false, - maxLookahead: 3, - dynamicTokensEnabled: false, - outputCst: true, - errorMessageProvider: defaultParserErrorProvider, - nodeLocationTracking: "none", - traceInitPerf: false, - skipValidations: false + elesfn$4.bypass = elesfn$4.css = elesfn$4.style; + elesfn$4.renderedCss = elesfn$4.renderedStyle; + elesfn$4.removeBypass = elesfn$4.removeCss = elesfn$4.removeStyle; + elesfn$4.pstyle = elesfn$4.parsedStyle; + elesfn$3 = {}; + __name(defineSwitchFunction, "defineSwitchFunction"); + __name(defineSwitchSet, "defineSwitchSet"); + defineSwitchSet({ + field: "locked", + overrideField: /* @__PURE__ */ __name(function overrideField(ele) { + return ele.cy().autolock() ? true : void 0; + }, "overrideField"), + on: "lock", + off: "unlock" }); - DEFAULT_RULE_CONFIG = Object.freeze({ - recoveryValueFunc: /* @__PURE__ */ __name(() => void 0, "recoveryValueFunc"), - resyncEnabled: true + defineSwitchSet({ + field: "grabbable", + overrideField: /* @__PURE__ */ __name(function overrideField2(ele) { + return ele.cy().autoungrabify() || ele.pannable() ? false : void 0; + }, "overrideField"), + on: "grabify", + off: "ungrabify" }); - (function(ParserDefinitionErrorType2) { - ParserDefinitionErrorType2[ParserDefinitionErrorType2["INVALID_RULE_NAME"] = 0] = "INVALID_RULE_NAME"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["DUPLICATE_RULE_NAME"] = 1] = "DUPLICATE_RULE_NAME"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["INVALID_RULE_OVERRIDE"] = 2] = "INVALID_RULE_OVERRIDE"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["DUPLICATE_PRODUCTIONS"] = 3] = "DUPLICATE_PRODUCTIONS"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["UNRESOLVED_SUBRULE_REF"] = 4] = "UNRESOLVED_SUBRULE_REF"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["LEFT_RECURSION"] = 5] = "LEFT_RECURSION"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["NONE_LAST_EMPTY_ALT"] = 6] = "NONE_LAST_EMPTY_ALT"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["AMBIGUOUS_ALTS"] = 7] = "AMBIGUOUS_ALTS"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["CONFLICT_TOKENS_RULES_NAMESPACE"] = 8] = "CONFLICT_TOKENS_RULES_NAMESPACE"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["INVALID_TOKEN_NAME"] = 9] = "INVALID_TOKEN_NAME"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["NO_NON_EMPTY_LOOKAHEAD"] = 10] = "NO_NON_EMPTY_LOOKAHEAD"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["AMBIGUOUS_PREFIX_ALTS"] = 11] = "AMBIGUOUS_PREFIX_ALTS"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["TOO_MANY_ALTS"] = 12] = "TOO_MANY_ALTS"; - ParserDefinitionErrorType2[ParserDefinitionErrorType2["CUSTOM_LOOKAHEAD_VALIDATION"] = 13] = "CUSTOM_LOOKAHEAD_VALIDATION"; - })(ParserDefinitionErrorType || (ParserDefinitionErrorType = {})); - __name(EMPTY_ALT, "EMPTY_ALT"); - Parser2 = class _Parser2 { - static { - __name(this, "Parser"); + defineSwitchSet({ + field: "selected", + ableField: "selectable", + overrideAble: /* @__PURE__ */ __name(function overrideAble(ele) { + return ele.cy().autounselectify() ? false : void 0; + }, "overrideAble"), + on: "select", + off: "unselect" + }); + defineSwitchSet({ + field: "selectable", + overrideField: /* @__PURE__ */ __name(function overrideField3(ele) { + return ele.cy().autounselectify() ? false : void 0; + }, "overrideField"), + on: "selectify", + off: "unselectify" + }); + elesfn$3.deselect = elesfn$3.unselect; + elesfn$3.grabbed = function() { + var ele = this[0]; + if (ele) { + return ele._private.grabbed; } - /** - * @deprecated use the **instance** method with the same name instead - */ - static performSelfAnalysis(parserInstance) { - throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead."); + }; + defineSwitchSet({ + field: "active", + on: "activate", + off: "unactivate" + }); + defineSwitchSet({ + field: "pannable", + on: "panify", + off: "unpanify" + }); + elesfn$3.inactive = function() { + var ele = this[0]; + if (ele) { + return !ele._private.active; } - performSelfAnalysis() { - this.TRACE_INIT("performSelfAnalysis", () => { - let defErrorsMsgs; - this.selfAnalysisDone = true; - const className = this.className; - this.TRACE_INIT("toFastProps", () => { - toFastProperties(this); - }); - this.TRACE_INIT("Grammar Recording", () => { - try { - this.enableRecording(); - forEach_default(this.definedRulesNames, (currRuleName) => { - const wrappedRule = this[currRuleName]; - const originalGrammarAction = wrappedRule["originalGrammarAction"]; - let recordedRuleGast; - this.TRACE_INIT(`${currRuleName} Rule`, () => { - recordedRuleGast = this.topLevelRuleRecord(currRuleName, originalGrammarAction); - }); - this.gastProductionsCache[currRuleName] = recordedRuleGast; - }); - } finally { - this.disableRecording(); + }; + elesfn$2 = {}; + defineDagExtremity = /* @__PURE__ */ __name(function defineDagExtremity2(params) { + return /* @__PURE__ */ __name(function dagExtremityImpl(selector) { + var eles = this; + var ret = []; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + if (!ele.isNode()) { + continue; + } + var disqualified = false; + var edges3 = ele.connectedEdges(); + for (var j3 = 0; j3 < edges3.length; j3++) { + var edge = edges3[j3]; + var src = edge.source(); + var tgt = edge.target(); + if (params.noIncomingEdges && tgt === ele && src !== ele || params.noOutgoingEdges && src === ele && tgt !== ele) { + disqualified = true; + break; } - }); - let resolverErrors = []; - this.TRACE_INIT("Grammar Resolving", () => { - resolverErrors = resolveGrammar2({ - rules: values_default(this.gastProductionsCache) - }); - this.definitionErrors = this.definitionErrors.concat(resolverErrors); - }); - this.TRACE_INIT("Grammar Validations", () => { - if (isEmpty_default(resolverErrors) && this.skipValidations === false) { - const validationErrors = validateGrammar2({ - rules: values_default(this.gastProductionsCache), - tokenTypes: values_default(this.tokensMap), - errMsgProvider: defaultGrammarValidatorErrorProvider, - grammarName: className - }); - const lookaheadValidationErrors = validateLookahead({ - lookaheadStrategy: this.lookaheadStrategy, - rules: values_default(this.gastProductionsCache), - tokenTypes: values_default(this.tokensMap), - grammarName: className - }); - this.definitionErrors = this.definitionErrors.concat(validationErrors, lookaheadValidationErrors); + } + if (!disqualified) { + ret.push(ele); + } + } + return this.spawn(ret, true).filter(selector); + }, "dagExtremityImpl"); + }, "defineDagExtremity"); + defineDagOneHop = /* @__PURE__ */ __name(function defineDagOneHop2(params) { + return function(selector) { + var eles = this; + var oEles = []; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + if (!ele.isNode()) { + continue; + } + var edges3 = ele.connectedEdges(); + for (var j3 = 0; j3 < edges3.length; j3++) { + var edge = edges3[j3]; + var src = edge.source(); + var tgt = edge.target(); + if (params.outgoing && src === ele) { + oEles.push(edge); + oEles.push(tgt); + } else if (params.incoming && tgt === ele) { + oEles.push(edge); + oEles.push(src); } - }); - if (isEmpty_default(this.definitionErrors)) { - if (this.recoveryEnabled) { - this.TRACE_INIT("computeAllProdsFollows", () => { - const allFollows = computeAllProdsFollows(values_default(this.gastProductionsCache)); - this.resyncFollows = allFollows; - }); + } + } + return this.spawn(oEles, true).filter(selector); + }; + }, "defineDagOneHop"); + defineDagAllHops = /* @__PURE__ */ __name(function defineDagAllHops2(params) { + return function(selector) { + var eles = this; + var sEles = []; + var sElesIds = {}; + for (; ; ) { + var next3 = params.outgoing ? eles.outgoers() : eles.incomers(); + if (next3.length === 0) { + break; + } + var newNext = false; + for (var i2 = 0; i2 < next3.length; i2++) { + var n2 = next3[i2]; + var nid = n2.id(); + if (!sElesIds[nid]) { + sElesIds[nid] = true; + sEles.push(n2); + newNext = true; } - this.TRACE_INIT("ComputeLookaheadFunctions", () => { - var _a, _b; - (_b = (_a = this.lookaheadStrategy).initialize) === null || _b === void 0 ? void 0 : _b.call(_a, { - rules: values_default(this.gastProductionsCache) - }); - this.preComputeLookaheadFunctions(values_default(this.gastProductionsCache)); - }); } - if (!_Parser2.DEFER_DEFINITION_ERRORS_HANDLING && !isEmpty_default(this.definitionErrors)) { - defErrorsMsgs = map_default(this.definitionErrors, (defError) => defError.message); - throw new Error(`Parser Definition Errors detected: - ${defErrorsMsgs.join("\n-------------------------------\n")}`); + if (!newNext) { + break; } - }); - } - constructor(tokenVocabulary, config5) { - this.definitionErrors = []; - this.selfAnalysisDone = false; - const that = this; - that.initErrorHandler(config5); - that.initLexerAdapter(); - that.initLooksAhead(config5); - that.initRecognizerEngine(tokenVocabulary, config5); - that.initRecoverable(config5); - that.initTreeBuilder(config5); - that.initContentAssist(); - that.initGastRecorder(config5); - that.initPerformanceTracer(config5); - if (has_default(config5, "ignoredIssues")) { - throw new Error("The IParserConfig property has been deprecated.\n Please use the flag on the relevant DSL method instead.\n See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n For further details."); + eles = next3; } - this.skipValidations = has_default(config5, "skipValidations") ? config5.skipValidations : DEFAULT_PARSER_CONFIG.skipValidations; - } - }; - Parser2.DEFER_DEFINITION_ERRORS_HANDLING = false; - applyMixins(Parser2, [ - Recoverable, - LooksAhead, - TreeBuilder, - LexerAdapter, - RecognizerEngine, - RecognizerApi, - ErrorHandler, - ContentAssist, - GastRecorder, - PerformanceTracer - ]); - EmbeddedActionsParser = class extends Parser2 { - static { - __name(this, "EmbeddedActionsParser"); - } - constructor(tokenVocabulary, config5 = DEFAULT_PARSER_CONFIG) { - const configClone = clone_default2(config5); - configClone.outputCst = false; - super(tokenVocabulary, configClone); + return this.spawn(sEles, true).filter(selector); + }; + }, "defineDagAllHops"); + elesfn$2.clearTraversalCache = function() { + for (var i2 = 0; i2 < this.length; i2++) { + this[i2]._private.traversalCache = null; } }; - } - }); - - // ../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/model.js - var init_model2 = __esm({ - "../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/model.js"() { - "use strict"; - init_api3(); - } - }); - - // ../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/generate.js - var init_generate = __esm({ - "../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/generate.js"() { - "use strict"; - } - }); - - // ../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/api.js - var init_api4 = __esm({ - "../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/api.js"() { - "use strict"; - init_model2(); - init_generate(); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/diagrams/render_public.js - var init_render_public = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/diagrams/render_public.js"() { - "use strict"; - init_version(); - } - }); - - // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/api.js - var init_api5 = __esm({ - "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/api.js"() { - "use strict"; - init_version(); - init_parser(); - init_lexer_public(); - init_tokens_public(); - init_lookahead(); - init_llk_lookahead(); - init_errors_public(); - init_exceptions_public(); - init_lexer_errors_public(); - init_api3(); - init_api3(); - init_api4(); - init_render_public(); - } - }); - - // ../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/atn.js - function buildATNKey(rule, type3, occurrence) { - return `${rule.name}_${type3}_${occurrence}`; - } - function createATN(rules) { - const atn = { - decisionMap: {}, - decisionStates: [], - ruleToStartState: /* @__PURE__ */ new Map(), - ruleToStopState: /* @__PURE__ */ new Map(), - states: [] - }; - createRuleStartAndStopATNStates(atn, rules); - const ruleLength = rules.length; - for (let i2 = 0; i2 < ruleLength; i2++) { - const rule = rules[i2]; - const ruleBlock = block2(atn, rule, rule); - if (ruleBlock === void 0) { - continue; - } - buildRuleHandle(atn, rule, ruleBlock); - } - return atn; - } - function createRuleStartAndStopATNStates(atn, rules) { - const ruleLength = rules.length; - for (let i2 = 0; i2 < ruleLength; i2++) { - const rule = rules[i2]; - const start3 = newState(atn, rule, void 0, { - type: ATN_RULE_START + extend4(elesfn$2, { + // get the root nodes in the DAG + roots: defineDagExtremity({ + noIncomingEdges: true + }), + // get the leaf nodes in the DAG + leaves: defineDagExtremity({ + noOutgoingEdges: true + }), + // normally called children in graph theory + // these nodes =edges=> outgoing nodes + outgoers: cache(defineDagOneHop({ + outgoing: true + }), "outgoers"), + // aka DAG descendants + successors: defineDagAllHops({ + outgoing: true + }), + // normally called parents in graph theory + // these nodes <=edges= incoming nodes + incomers: cache(defineDagOneHop({ + incoming: true + }), "incomers"), + // aka DAG ancestors + predecessors: defineDagAllHops({}) }); - const stop5 = newState(atn, rule, void 0, { - type: ATN_RULE_STOP + extend4(elesfn$2, { + neighborhood: cache(function(selector) { + var elements2 = []; + var nodes5 = this.nodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + var node2 = nodes5[i2]; + var connectedEdges = node2.connectedEdges(); + for (var j3 = 0; j3 < connectedEdges.length; j3++) { + var edge = connectedEdges[j3]; + var src = edge.source(); + var tgt = edge.target(); + var otherNode = node2 === src ? tgt : src; + if (otherNode.length > 0) { + elements2.push(otherNode[0]); + } + elements2.push(edge[0]); + } + } + return this.spawn(elements2, true).filter(selector); + }, "neighborhood"), + closedNeighborhood: /* @__PURE__ */ __name(function closedNeighborhood(selector) { + return this.neighborhood().add(this).filter(selector); + }, "closedNeighborhood"), + openNeighborhood: /* @__PURE__ */ __name(function openNeighborhood(selector) { + return this.neighborhood(selector); + }, "openNeighborhood") }); - start3.stop = stop5; - atn.ruleToStartState.set(rule, start3); - atn.ruleToStopState.set(rule, stop5); - } - } - function atom(atn, rule, production) { - if (production instanceof Terminal) { - return tokenRef(atn, rule, production.terminalType, production); - } else if (production instanceof NonTerminal) { - return ruleRef(atn, rule, production); - } else if (production instanceof Alternation) { - return alternation(atn, rule, production); - } else if (production instanceof Option2) { - return option(atn, rule, production); - } else if (production instanceof Repetition) { - return repetition(atn, rule, production); - } else if (production instanceof RepetitionWithSeparator) { - return repetitionSep(atn, rule, production); - } else if (production instanceof RepetitionMandatory) { - return repetitionMandatory(atn, rule, production); - } else if (production instanceof RepetitionMandatoryWithSeparator) { - return repetitionMandatorySep(atn, rule, production); - } else { - return block2(atn, rule, production); - } - } - function repetition(atn, rule, repetition2) { - const starState = newState(atn, rule, repetition2, { - type: ATN_STAR_BLOCK_START - }); - defineDecisionState(atn, starState); - const handle = makeAlts(atn, rule, starState, repetition2, block2(atn, rule, repetition2)); - return star(atn, rule, repetition2, handle); - } - function repetitionSep(atn, rule, repetition2) { - const starState = newState(atn, rule, repetition2, { - type: ATN_STAR_BLOCK_START - }); - defineDecisionState(atn, starState); - const handle = makeAlts(atn, rule, starState, repetition2, block2(atn, rule, repetition2)); - const sep2 = tokenRef(atn, rule, repetition2.separator, repetition2); - return star(atn, rule, repetition2, handle, sep2); - } - function repetitionMandatory(atn, rule, repetition2) { - const plusState = newState(atn, rule, repetition2, { - type: ATN_PLUS_BLOCK_START - }); - defineDecisionState(atn, plusState); - const handle = makeAlts(atn, rule, plusState, repetition2, block2(atn, rule, repetition2)); - return plus(atn, rule, repetition2, handle); - } - function repetitionMandatorySep(atn, rule, repetition2) { - const plusState = newState(atn, rule, repetition2, { - type: ATN_PLUS_BLOCK_START - }); - defineDecisionState(atn, plusState); - const handle = makeAlts(atn, rule, plusState, repetition2, block2(atn, rule, repetition2)); - const sep2 = tokenRef(atn, rule, repetition2.separator, repetition2); - return plus(atn, rule, repetition2, handle, sep2); - } - function alternation(atn, rule, alternation2) { - const start3 = newState(atn, rule, alternation2, { - type: ATN_BASIC - }); - defineDecisionState(atn, start3); - const alts = map_default(alternation2.definition, (e3) => atom(atn, rule, e3)); - const handle = makeAlts(atn, rule, start3, alternation2, ...alts); - return handle; - } - function option(atn, rule, option2) { - const start3 = newState(atn, rule, option2, { - type: ATN_BASIC - }); - defineDecisionState(atn, start3); - const handle = makeAlts(atn, rule, start3, option2, block2(atn, rule, option2)); - return optional(atn, rule, option2, handle); - } - function block2(atn, rule, block3) { - const handles = filter_default3(map_default(block3.definition, (e3) => atom(atn, rule, e3)), (e3) => e3 !== void 0); - if (handles.length === 1) { - return handles[0]; - } else if (handles.length === 0) { - return void 0; - } else { - return makeBlock(atn, handles); - } - } - function plus(atn, rule, plus2, handle, sep2) { - const blkStart = handle.left; - const blkEnd = handle.right; - const loop = newState(atn, rule, plus2, { - type: ATN_PLUS_LOOP_BACK - }); - defineDecisionState(atn, loop); - const end2 = newState(atn, rule, plus2, { - type: ATN_LOOP_END - }); - blkStart.loopback = loop; - end2.loopback = loop; - atn.decisionMap[buildATNKey(rule, sep2 ? "RepetitionMandatoryWithSeparator" : "RepetitionMandatory", plus2.idx)] = loop; - epsilon4(blkEnd, loop); - if (sep2 === void 0) { - epsilon4(loop, blkStart); - epsilon4(loop, end2); - } else { - epsilon4(loop, end2); - epsilon4(loop, sep2.left); - epsilon4(sep2.right, blkStart); - } - return { - left: blkStart, - right: end2 - }; - } - function star(atn, rule, star2, handle, sep2) { - const start3 = handle.left; - const end2 = handle.right; - const entry = newState(atn, rule, star2, { - type: ATN_STAR_LOOP_ENTRY - }); - defineDecisionState(atn, entry); - const loopEnd = newState(atn, rule, star2, { - type: ATN_LOOP_END - }); - const loop = newState(atn, rule, star2, { - type: ATN_STAR_LOOP_BACK - }); - entry.loopback = loop; - loopEnd.loopback = loop; - epsilon4(entry, start3); - epsilon4(entry, loopEnd); - epsilon4(end2, loop); - if (sep2 !== void 0) { - epsilon4(loop, loopEnd); - epsilon4(loop, sep2.left); - epsilon4(sep2.right, start3); - } else { - epsilon4(loop, entry); - } - atn.decisionMap[buildATNKey(rule, sep2 ? "RepetitionWithSeparator" : "Repetition", star2.idx)] = entry; - return { - left: entry, - right: loopEnd - }; - } - function optional(atn, rule, optional2, handle) { - const start3 = handle.left; - const end2 = handle.right; - epsilon4(start3, end2); - atn.decisionMap[buildATNKey(rule, "Option", optional2.idx)] = start3; - return handle; - } - function defineDecisionState(atn, state4) { - atn.decisionStates.push(state4); - state4.decision = atn.decisionStates.length - 1; - return state4.decision; - } - function makeAlts(atn, rule, start3, production, ...alts) { - const end2 = newState(atn, rule, production, { - type: ATN_BLOCK_END, - start: start3 - }); - start3.end = end2; - for (const alt of alts) { - if (alt !== void 0) { - epsilon4(start3, alt.left); - epsilon4(alt.right, end2); - } else { - epsilon4(start3, end2); - } - } - const handle = { - left: start3, - right: end2 - }; - atn.decisionMap[buildATNKey(rule, getProdType2(production), production.idx)] = start3; - return handle; - } - function getProdType2(production) { - if (production instanceof Alternation) { - return "Alternation"; - } else if (production instanceof Option2) { - return "Option"; - } else if (production instanceof Repetition) { - return "Repetition"; - } else if (production instanceof RepetitionWithSeparator) { - return "RepetitionWithSeparator"; - } else if (production instanceof RepetitionMandatory) { - return "RepetitionMandatory"; - } else if (production instanceof RepetitionMandatoryWithSeparator) { - return "RepetitionMandatoryWithSeparator"; - } else { - throw new Error("Invalid production type encountered"); - } - } - function makeBlock(atn, alts) { - const altsLength = alts.length; - for (let i2 = 0; i2 < altsLength - 1; i2++) { - const handle = alts[i2]; - let transition2; - if (handle.left.transitions.length === 1) { - transition2 = handle.left.transitions[0]; - } - const isRuleTransition = transition2 instanceof RuleTransition; - const ruleTransition = transition2; - const next3 = alts[i2 + 1].left; - if (handle.left.type === ATN_BASIC && handle.right.type === ATN_BASIC && transition2 !== void 0 && (isRuleTransition && ruleTransition.followState === handle.right || transition2.target === handle.right)) { - if (isRuleTransition) { - ruleTransition.followState = next3; - } else { - transition2.target = next3; - } - removeState(atn, handle.right); - } else { - epsilon4(handle.right, next3); - } - } - const first3 = alts[0]; - const last3 = alts[altsLength - 1]; - return { - left: first3.left, - right: last3.right - }; - } - function tokenRef(atn, rule, tokenType, production) { - const left3 = newState(atn, rule, production, { - type: ATN_BASIC - }); - const right3 = newState(atn, rule, production, { - type: ATN_BASIC - }); - addTransition(left3, new AtomTransition(right3, tokenType)); - return { - left: left3, - right: right3 - }; - } - function ruleRef(atn, currentRule, nonTerminal) { - const rule = nonTerminal.referencedRule; - const start3 = atn.ruleToStartState.get(rule); - const left3 = newState(atn, currentRule, nonTerminal, { - type: ATN_BASIC - }); - const right3 = newState(atn, currentRule, nonTerminal, { - type: ATN_BASIC - }); - const call = new RuleTransition(start3, rule, right3); - addTransition(left3, call); - return { - left: left3, - right: right3 - }; - } - function buildRuleHandle(atn, rule, block3) { - const start3 = atn.ruleToStartState.get(rule); - epsilon4(start3, block3.left); - const stop5 = atn.ruleToStopState.get(rule); - epsilon4(block3.right, stop5); - const handle = { - left: start3, - right: stop5 - }; - return handle; - } - function epsilon4(a2, b2) { - const transition2 = new EpsilonTransition(b2); - addTransition(a2, transition2); - } - function newState(atn, rule, production, partial) { - const t4 = Object.assign({ - atn, - production, - epsilonOnlyTransitions: false, - rule, - transitions: [], - nextTokenWithinRule: [], - stateNumber: atn.states.length - }, partial); - atn.states.push(t4); - return t4; - } - function addTransition(state4, transition2) { - if (state4.transitions.length === 0) { - state4.epsilonOnlyTransitions = transition2.isEpsilon(); - } - state4.transitions.push(transition2); - } - function removeState(atn, state4) { - atn.states.splice(atn.states.indexOf(state4), 1); - } - var ATN_BASIC, ATN_RULE_START, ATN_PLUS_BLOCK_START, ATN_STAR_BLOCK_START, ATN_RULE_STOP, ATN_BLOCK_END, ATN_STAR_LOOP_BACK, ATN_STAR_LOOP_ENTRY, ATN_PLUS_LOOP_BACK, ATN_LOOP_END, AbstractTransition, AtomTransition, EpsilonTransition, RuleTransition; - var init_atn = __esm({ - "../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/atn.js"() { - "use strict"; - init_map(); - init_filter3(); - init_api5(); - __name(buildATNKey, "buildATNKey"); - ATN_BASIC = 1; - ATN_RULE_START = 2; - ATN_PLUS_BLOCK_START = 4; - ATN_STAR_BLOCK_START = 5; - ATN_RULE_STOP = 7; - ATN_BLOCK_END = 8; - ATN_STAR_LOOP_BACK = 9; - ATN_STAR_LOOP_ENTRY = 10; - ATN_PLUS_LOOP_BACK = 11; - ATN_LOOP_END = 12; - AbstractTransition = class { - static { - __name(this, "AbstractTransition"); + elesfn$2.neighbourhood = elesfn$2.neighborhood; + elesfn$2.closedNeighbourhood = elesfn$2.closedNeighborhood; + elesfn$2.openNeighbourhood = elesfn$2.openNeighborhood; + extend4(elesfn$2, { + source: cache(/* @__PURE__ */ __name(function sourceImpl(selector) { + var ele = this[0]; + var src; + if (ele) { + src = ele._private.source || ele.cy().collection(); + } + return src && selector ? src.filter(selector) : src; + }, "sourceImpl"), "source"), + target: cache(/* @__PURE__ */ __name(function targetImpl(selector) { + var ele = this[0]; + var tgt; + if (ele) { + tgt = ele._private.target || ele.cy().collection(); + } + return tgt && selector ? tgt.filter(selector) : tgt; + }, "targetImpl"), "target"), + sources: defineSourceFunction({ + attr: "source" + }), + targets: defineSourceFunction({ + attr: "target" + }) + }); + __name(defineSourceFunction, "defineSourceFunction"); + extend4(elesfn$2, { + edgesWith: cache(defineEdgesWithFunction(), "edgesWith"), + edgesTo: cache(defineEdgesWithFunction({ + thisIsSrc: true + }), "edgesTo") + }); + __name(defineEdgesWithFunction, "defineEdgesWithFunction"); + extend4(elesfn$2, { + connectedEdges: cache(function(selector) { + var retEles = []; + var eles = this; + for (var i2 = 0; i2 < eles.length; i2++) { + var node2 = eles[i2]; + if (!node2.isNode()) { + continue; + } + var edges3 = node2._private.edges; + for (var j3 = 0; j3 < edges3.length; j3++) { + var edge = edges3[j3]; + retEles.push(edge); + } + } + return this.spawn(retEles, true).filter(selector); + }, "connectedEdges"), + connectedNodes: cache(function(selector) { + var retEles = []; + var eles = this; + for (var i2 = 0; i2 < eles.length; i2++) { + var edge = eles[i2]; + if (!edge.isEdge()) { + continue; + } + retEles.push(edge.source()[0]); + retEles.push(edge.target()[0]); + } + return this.spawn(retEles, true).filter(selector); + }, "connectedNodes"), + parallelEdges: cache(defineParallelEdgesFunction(), "parallelEdges"), + codirectedEdges: cache(defineParallelEdgesFunction({ + codirected: true + }), "codirectedEdges") + }); + __name(defineParallelEdgesFunction, "defineParallelEdgesFunction"); + extend4(elesfn$2, { + components: /* @__PURE__ */ __name(function components2(root3) { + var self2 = this; + var cy = self2.cy(); + var visited = cy.collection(); + var unvisited = root3 == null ? self2.nodes() : root3.nodes(); + var components3 = []; + if (root3 != null && unvisited.empty()) { + unvisited = root3.sources(); + } + var visitInComponent = /* @__PURE__ */ __name(function visitInComponent2(node2, component2) { + visited.merge(node2); + unvisited.unmerge(node2); + component2.merge(node2); + }, "visitInComponent"); + if (unvisited.empty()) { + return self2.spawn(); + } + var _loop = /* @__PURE__ */ __name(function _loop2() { + var cmpt = cy.collection(); + components3.push(cmpt); + var root4 = unvisited[0]; + visitInComponent(root4, cmpt); + self2.bfs({ + directed: false, + roots: root4, + visit: /* @__PURE__ */ __name(function visit(v3) { + return visitInComponent(v3, cmpt); + }, "visit") + }); + cmpt.forEach(function(node2) { + node2.connectedEdges().forEach(function(e3) { + if (self2.has(e3) && cmpt.has(e3.source()) && cmpt.has(e3.target())) { + cmpt.merge(e3); + } + }); + }); + }, "_loop"); + do { + _loop(); + } while (unvisited.length > 0); + return components3; + }, "components"), + component: /* @__PURE__ */ __name(function component() { + var ele = this[0]; + return ele.cy().mutableElements().components(ele)[0]; + }, "component") + }); + elesfn$2.componentsOf = elesfn$2.components; + Collection = /* @__PURE__ */ __name(function Collection2(cy, elements2) { + var unique = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + var removed = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false; + if (cy === void 0) { + error("A collection must have a reference to the core"); + return; } - constructor(target) { - this.target = target; + var map5 = new Map$1(); + var createdElements = false; + if (!elements2) { + elements2 = []; + } else if (elements2.length > 0 && plainObject(elements2[0]) && !element(elements2[0])) { + createdElements = true; + var eles = []; + var elesIds = new Set$1(); + for (var i2 = 0, l4 = elements2.length; i2 < l4; i2++) { + var json3 = elements2[i2]; + if (json3.data == null) { + json3.data = {}; + } + var _data = json3.data; + if (_data.id == null) { + _data.id = uuid(); + } else if (cy.hasElementWithId(_data.id) || elesIds.has(_data.id)) { + continue; + } + var ele = new Element(cy, json3, false); + eles.push(ele); + elesIds.add(_data.id); + } + elements2 = eles; } - isEpsilon() { - return false; + this.length = 0; + for (var _i = 0, _l = elements2.length; _i < _l; _i++) { + var element$1 = elements2[_i][0]; + if (element$1 == null) { + continue; + } + var id30 = element$1._private.data.id; + if (!unique || !map5.has(id30)) { + if (unique) { + map5.set(id30, { + index: this.length, + ele: element$1 + }); + } + this[this.length] = element$1; + this.length++; + } } - }; - AtomTransition = class extends AbstractTransition { - static { - __name(this, "AtomTransition"); + this._private = { + eles: this, + cy, + get map() { + if (this.lazyMap == null) { + this.rebuildMap(); + } + return this.lazyMap; + }, + set map(m3) { + this.lazyMap = m3; + }, + rebuildMap: /* @__PURE__ */ __name(function rebuildMap() { + var m3 = this.lazyMap = new Map$1(); + var eles2 = this.eles; + for (var _i2 = 0; _i2 < eles2.length; _i2++) { + var _ele = eles2[_i2]; + m3.set(_ele.id(), { + index: _i2, + ele: _ele + }); + } + }, "rebuildMap") + }; + if (unique) { + this._private.map = map5; } - constructor(target, tokenType) { - super(target); - this.tokenType = tokenType; + if (createdElements && !removed) { + this.restore(); } + }, "Collection"); + elesfn$1 = Element.prototype = Collection.prototype = Object.create(Array.prototype); + elesfn$1.instanceString = function() { + return "collection"; }; - EpsilonTransition = class extends AbstractTransition { - static { - __name(this, "EpsilonTransition"); - } - constructor(target) { - super(target); - } - isEpsilon() { - return true; + elesfn$1.spawn = function(eles, unique) { + return new Collection(this.cy(), eles, unique); + }; + elesfn$1.spawnSelf = function() { + return this.spawn(this); + }; + elesfn$1.cy = function() { + return this._private.cy; + }; + elesfn$1.renderer = function() { + return this._private.cy.renderer(); + }; + elesfn$1.element = function() { + return this[0]; + }; + elesfn$1.collection = function() { + if (collection(this)) { + return this; + } else { + return new Collection(this._private.cy, [this]); } }; - RuleTransition = class extends AbstractTransition { - static { - __name(this, "RuleTransition"); + elesfn$1.unique = function() { + return new Collection(this._private.cy, this, true); + }; + elesfn$1.hasElementWithId = function(id30) { + id30 = "" + id30; + return this._private.map.has(id30); + }; + elesfn$1.getElementById = function(id30) { + id30 = "" + id30; + var cy = this._private.cy; + var entry = this._private.map.get(id30); + return entry ? entry.ele : new Collection(cy); + }; + elesfn$1.$id = elesfn$1.getElementById; + elesfn$1.poolIndex = function() { + var cy = this._private.cy; + var eles = cy._private.elements; + var id30 = this[0]._private.data.id; + return eles._private.map.get(id30).index; + }; + elesfn$1.indexOf = function(ele) { + var id30 = ele[0]._private.data.id; + return this._private.map.get(id30).index; + }; + elesfn$1.indexOfId = function(id30) { + id30 = "" + id30; + return this._private.map.get(id30).index; + }; + elesfn$1.json = function(obj) { + var ele = this.element(); + var cy = this.cy(); + if (ele == null && obj) { + return this; } - constructor(ruleStart, rule, followState) { - super(ruleStart); - this.rule = rule; - this.followState = followState; + if (ele == null) { + return void 0; } - isEpsilon() { - return true; + var p3 = ele._private; + if (plainObject(obj)) { + cy.startBatch(); + if (obj.data) { + ele.data(obj.data); + var _data2 = p3.data; + if (ele.isEdge()) { + var move = false; + var spec = {}; + var src = obj.data.source; + var tgt = obj.data.target; + if (src != null && src != _data2.source) { + spec.source = "" + src; + move = true; + } + if (tgt != null && tgt != _data2.target) { + spec.target = "" + tgt; + move = true; + } + if (move) { + ele = ele.move(spec); + } + } else { + var newParentValSpecd = "parent" in obj.data; + var parent4 = obj.data.parent; + if (newParentValSpecd && (parent4 != null || _data2.parent != null) && parent4 != _data2.parent) { + if (parent4 === void 0) { + parent4 = null; + } + if (parent4 != null) { + parent4 = "" + parent4; + } + ele = ele.move({ + parent: parent4 + }); + } + } + } + if (obj.position) { + ele.position(obj.position); + } + var checkSwitch = /* @__PURE__ */ __name(function checkSwitch2(k2, trueFnName, falseFnName) { + var obj_k = obj[k2]; + if (obj_k != null && obj_k !== p3[k2]) { + if (obj_k) { + ele[trueFnName](); + } else { + ele[falseFnName](); + } + } + }, "checkSwitch"); + checkSwitch("removed", "remove", "restore"); + checkSwitch("selected", "select", "unselect"); + checkSwitch("selectable", "selectify", "unselectify"); + checkSwitch("locked", "lock", "unlock"); + checkSwitch("grabbable", "grabify", "ungrabify"); + checkSwitch("pannable", "panify", "unpanify"); + if (obj.classes != null) { + ele.classes(obj.classes); + } + cy.endBatch(); + return this; + } else if (obj === void 0) { + var json3 = { + data: copy3(p3.data), + position: copy3(p3.position), + group: p3.group, + removed: p3.removed, + selected: p3.selected, + selectable: p3.selectable, + locked: p3.locked, + grabbable: p3.grabbable, + pannable: p3.pannable, + classes: null + }; + json3.classes = ""; + var i2 = 0; + p3.classes.forEach(function(cls) { + return json3.classes += i2++ === 0 ? cls : " " + cls; + }); + return json3; } }; - __name(createATN, "createATN"); - __name(createRuleStartAndStopATNStates, "createRuleStartAndStopATNStates"); - __name(atom, "atom"); - __name(repetition, "repetition"); - __name(repetitionSep, "repetitionSep"); - __name(repetitionMandatory, "repetitionMandatory"); - __name(repetitionMandatorySep, "repetitionMandatorySep"); - __name(alternation, "alternation"); - __name(option, "option"); - __name(block2, "block"); - __name(plus, "plus"); - __name(star, "star"); - __name(optional, "optional"); - __name(defineDecisionState, "defineDecisionState"); - __name(makeAlts, "makeAlts"); - __name(getProdType2, "getProdType"); - __name(makeBlock, "makeBlock"); - __name(tokenRef, "tokenRef"); - __name(ruleRef, "ruleRef"); - __name(buildRuleHandle, "buildRuleHandle"); - __name(epsilon4, "epsilon"); - __name(newState, "newState"); - __name(addTransition, "addTransition"); - __name(removeState, "removeState"); - } - }); - - // ../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/dfa.js - function getATNConfigKey(config5, alt = true) { - return `${alt ? `a${config5.alt}` : ""}s${config5.state.stateNumber}:${config5.stack.map((e3) => e3.stateNumber.toString()).join("_")}`; - } - var DFA_ERROR, ATNConfigSet; - var init_dfa = __esm({ - "../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/dfa.js"() { - "use strict"; - init_map(); - DFA_ERROR = {}; - ATNConfigSet = class { - static { - __name(this, "ATNConfigSet"); - } - constructor() { - this.map = {}; - this.configs = []; - } - get size() { - return this.configs.length; + elesfn$1.jsons = function() { + var jsons = []; + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + var json3 = ele.json(); + jsons.push(json3); } - finalize() { - this.map = {}; + return jsons; + }; + elesfn$1.clone = function() { + var cy = this.cy(); + var elesArr = []; + for (var i2 = 0; i2 < this.length; i2++) { + var ele = this[i2]; + var json3 = ele.json(); + var clone6 = new Element(cy, json3, false); + elesArr.push(clone6); } - add(config5) { - const key = getATNConfigKey(config5); - if (!(key in this.map)) { - this.map[key] = this.configs.length; - this.configs.push(config5); + return new Collection(cy, elesArr); + }; + elesfn$1.copy = elesfn$1.clone; + elesfn$1.restore = function() { + var notifyRenderer = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; + var addToPool2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + var self2 = this; + var cy = self2.cy(); + var cy_p = cy._private; + var nodes5 = []; + var edges3 = []; + var elements2; + for (var _i3 = 0, l4 = self2.length; _i3 < l4; _i3++) { + var ele = self2[_i3]; + if (addToPool2 && !ele.removed()) { + continue; + } + if (ele.isNode()) { + nodes5.push(ele); + } else { + edges3.push(ele); } } - get elements() { - return this.configs; - } - get alts() { - return map_default(this.configs, (e3) => e3.alt); - } - get key() { - let value2 = ""; - for (const k2 in this.map) { - value2 += k2 + ":"; + elements2 = nodes5.concat(edges3); + var i2; + var removeFromElements = /* @__PURE__ */ __name(function removeFromElements2() { + elements2.splice(i2, 1); + i2--; + }, "removeFromElements"); + for (i2 = 0; i2 < elements2.length; i2++) { + var _ele2 = elements2[i2]; + var _private = _ele2._private; + var _data3 = _private.data; + _ele2.clearTraversalCache(); + if (!addToPool2 && !_private.removed) ; + else if (_data3.id === void 0) { + _data3.id = uuid(); + } else if (number$1(_data3.id)) { + _data3.id = "" + _data3.id; + } else if (emptyString(_data3.id) || !string(_data3.id)) { + error("Can not create element with invalid string ID `" + _data3.id + "`"); + removeFromElements(); + continue; + } else if (cy.hasElementWithId(_data3.id)) { + error("Can not create second element with ID `" + _data3.id + "`"); + removeFromElements(); + continue; + } + var id30 = _data3.id; + if (_ele2.isNode()) { + var pos = _private.position; + if (pos.x == null) { + pos.x = 0; + } + if (pos.y == null) { + pos.y = 0; + } + } + if (_ele2.isEdge()) { + var edge = _ele2; + var fields = ["source", "target"]; + var fieldsLength = fields.length; + var badSourceOrTarget = false; + for (var j3 = 0; j3 < fieldsLength; j3++) { + var field = fields[j3]; + var val = _data3[field]; + if (number$1(val)) { + val = _data3[field] = "" + _data3[field]; + } + if (val == null || val === "") { + error("Can not create edge `" + id30 + "` with unspecified " + field); + badSourceOrTarget = true; + } else if (!cy.hasElementWithId(val)) { + error("Can not create edge `" + id30 + "` with nonexistant " + field + " `" + val + "`"); + badSourceOrTarget = true; + } + } + if (badSourceOrTarget) { + removeFromElements(); + continue; + } + var src = cy.getElementById(_data3.source); + var tgt = cy.getElementById(_data3.target); + if (src.same(tgt)) { + src._private.edges.push(edge); + } else { + src._private.edges.push(edge); + tgt._private.edges.push(edge); + } + edge._private.source = src; + edge._private.target = tgt; + } + _private.map = new Map$1(); + _private.map.set(id30, { + ele: _ele2, + index: 0 + }); + _private.removed = false; + if (addToPool2) { + cy.addToPool(_ele2); } - return value2; } - }; - __name(getATNConfigKey, "getATNConfigKey"); - } - }); - - // ../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/all-star-lookahead.js - function createDFACache(startState, decision) { - const map5 = {}; - return (predicateSet) => { - const key = predicateSet.toString(); - let existing = map5[key]; - if (existing !== void 0) { - return existing; - } else { - existing = { - atnStartState: startState, - decision, - states: {} - }; - map5[key] = existing; - return existing; - } - }; - } - function isLL1Sequence(sequences, allowEmpty = true) { - const fullSet = /* @__PURE__ */ new Set(); - for (const alt of sequences) { - const altSet = /* @__PURE__ */ new Set(); - for (const tokType of alt) { - if (tokType === void 0) { - if (allowEmpty) { - break; - } else { - return false; + for (var _i4 = 0; _i4 < nodes5.length; _i4++) { + var node2 = nodes5[_i4]; + var _data4 = node2._private.data; + if (number$1(_data4.parent)) { + _data4.parent = "" + _data4.parent; + } + var parentId = _data4.parent; + var specifiedParent = parentId != null; + if (specifiedParent || node2._private.parent) { + var parent4 = node2._private.parent ? cy.collection().merge(node2._private.parent) : cy.getElementById(parentId); + if (parent4.empty()) { + _data4.parent = void 0; + } else if (parent4[0].removed()) { + warn("Node added with missing parent, reference to parent removed"); + _data4.parent = void 0; + node2._private.parent = null; + } else { + var selfAsParent = false; + var ancestor = parent4; + while (!ancestor.empty()) { + if (node2.same(ancestor)) { + selfAsParent = true; + _data4.parent = void 0; + break; + } + ancestor = ancestor.parent(); + } + if (!selfAsParent) { + parent4[0]._private.children.push(node2); + node2._private.parent = parent4[0]; + cy_p.hasCompoundNodes = true; + } + } } } - const indices = [tokType.tokenTypeIdx].concat(tokType.categoryMatches); - for (const index of indices) { - if (fullSet.has(index)) { - if (!altSet.has(index)) { - return false; + if (elements2.length > 0) { + var restored = elements2.length === self2.length ? self2 : new Collection(cy, elements2); + for (var _i5 = 0; _i5 < restored.length; _i5++) { + var _ele3 = restored[_i5]; + if (_ele3.isNode()) { + continue; } + _ele3.parallelEdges().clearTraversalCache(); + _ele3.source().clearTraversalCache(); + _ele3.target().clearTraversalCache(); + } + var toUpdateStyle; + if (cy_p.hasCompoundNodes) { + toUpdateStyle = cy.collection().merge(restored).merge(restored.connectedNodes()).merge(restored.parent()); } else { - fullSet.add(index); - altSet.add(index); + toUpdateStyle = restored; + } + toUpdateStyle.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(notifyRenderer); + if (notifyRenderer) { + restored.emitAndNotify("add"); + } else if (addToPool2) { + restored.emit("add"); } } - } - } - return true; - } - function initATNSimulator(atn) { - const decisionLength = atn.decisionStates.length; - const decisionToDFA = Array(decisionLength); - for (let i2 = 0; i2 < decisionLength; i2++) { - decisionToDFA[i2] = createDFACache(atn.decisionStates[i2], i2); - } - return decisionToDFA; - } - function adaptivePredict(dfaCaches, decision, predicateSet, logging) { - const dfa = dfaCaches[decision](predicateSet); - let start3 = dfa.start; - if (start3 === void 0) { - const closure2 = computeStartState(dfa.atnStartState); - start3 = addDFAState(dfa, newDFAState(closure2)); - dfa.start = start3; - } - const alt = performLookahead.apply(this, [dfa, start3, predicateSet, logging]); - return alt; - } - function performLookahead(dfa, s0, predicateSet, logging) { - let previousD = s0; - let i2 = 1; - const path4 = []; - let t4 = this.LA(i2++); - while (true) { - let d2 = getExistingTargetState(previousD, t4); - if (d2 === void 0) { - d2 = computeLookaheadTarget.apply(this, [dfa, previousD, t4, i2, predicateSet, logging]); - } - if (d2 === DFA_ERROR) { - return buildAdaptivePredictError(path4, previousD, t4); - } - if (d2.isAcceptState === true) { - return d2.prediction; - } - previousD = d2; - path4.push(t4); - t4 = this.LA(i2++); - } - } - function computeLookaheadTarget(dfa, previousD, token2, lookahead, predicateSet, logging) { - const reach = computeReachSet(previousD.configs, token2, predicateSet); - if (reach.size === 0) { - addDFAEdge(dfa, previousD, token2, DFA_ERROR); - return DFA_ERROR; - } - let newState2 = newDFAState(reach); - const predictedAlt = getUniqueAlt(reach, predicateSet); - if (predictedAlt !== void 0) { - newState2.isAcceptState = true; - newState2.prediction = predictedAlt; - newState2.configs.uniqueAlt = predictedAlt; - } else if (hasConflictTerminatingPrediction(reach)) { - const prediction = min_default(reach.alts); - newState2.isAcceptState = true; - newState2.prediction = prediction; - newState2.configs.uniqueAlt = prediction; - reportLookaheadAmbiguity.apply(this, [dfa, lookahead, reach.alts, logging]); - } - newState2 = addDFAEdge(dfa, previousD, token2, newState2); - return newState2; - } - function reportLookaheadAmbiguity(dfa, lookahead, ambiguityIndices, logging) { - const prefixPath = []; - for (let i2 = 1; i2 <= lookahead; i2++) { - prefixPath.push(this.LA(i2).tokenType); - } - const atnState = dfa.atnStartState; - const topLevelRule = atnState.rule; - const production = atnState.production; - const message = buildAmbiguityError({ - topLevelRule, - ambiguityIndices, - production, - prefixPath - }); - logging(message); - } - function buildAmbiguityError(options3) { - const pathMsg = map_default(options3.prefixPath, (currtok) => tokenLabel2(currtok)).join(", "); - const occurrence = options3.production.idx === 0 ? "" : options3.production.idx; - let currMessage = `Ambiguous Alternatives Detected: <${options3.ambiguityIndices.join(", ")}> in <${getProductionDslName2(options3.production)}${occurrence}> inside <${options3.topLevelRule.name}> Rule, -<${pathMsg}> may appears as a prefix path in all these alternatives. -`; - currMessage = currMessage + `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`; - return currMessage; - } - function getProductionDslName2(prod) { - if (prod instanceof NonTerminal) { - return "SUBRULE"; - } else if (prod instanceof Option2) { - return "OPTION"; - } else if (prod instanceof Alternation) { - return "OR"; - } else if (prod instanceof RepetitionMandatory) { - return "AT_LEAST_ONE"; - } else if (prod instanceof RepetitionMandatoryWithSeparator) { - return "AT_LEAST_ONE_SEP"; - } else if (prod instanceof RepetitionWithSeparator) { - return "MANY_SEP"; - } else if (prod instanceof Repetition) { - return "MANY"; - } else if (prod instanceof Terminal) { - return "CONSUME"; - } else { - throw Error("non exhaustive match"); - } - } - function buildAdaptivePredictError(path4, previous, current) { - const nextTransitions = flatMap_default(previous.configs.elements, (e3) => e3.state.transitions); - const nextTokenTypes = uniqBy_default(nextTransitions.filter((e3) => e3 instanceof AtomTransition).map((e3) => e3.tokenType), (e3) => e3.tokenTypeIdx); - return { - actualToken: current, - possibleTokenTypes: nextTokenTypes, - tokenPath: path4 - }; - } - function getExistingTargetState(state4, token2) { - return state4.edges[token2.tokenTypeIdx]; - } - function computeReachSet(configs, token2, predicateSet) { - const intermediate = new ATNConfigSet(); - const skippedStopStates = []; - for (const c3 of configs.elements) { - if (predicateSet.is(c3.alt) === false) { - continue; - } - if (c3.state.type === ATN_RULE_STOP) { - skippedStopStates.push(c3); - continue; - } - const transitionLength = c3.state.transitions.length; - for (let i2 = 0; i2 < transitionLength; i2++) { - const transition2 = c3.state.transitions[i2]; - const target = getReachableTarget(transition2, token2); - if (target !== void 0) { - intermediate.add({ - state: target, - alt: c3.alt, - stack: c3.stack - }); - } - } - } - let reach; - if (skippedStopStates.length === 0 && intermediate.size === 1) { - reach = intermediate; - } - if (reach === void 0) { - reach = new ATNConfigSet(); - for (const c3 of intermediate.elements) { - closure(c3, reach); - } - } - if (skippedStopStates.length > 0 && !hasConfigInRuleStopState(reach)) { - for (const c3 of skippedStopStates) { - reach.add(c3); - } - } - return reach; - } - function getReachableTarget(transition2, token2) { - if (transition2 instanceof AtomTransition && tokenMatcher(token2, transition2.tokenType)) { - return transition2.target; - } - return void 0; - } - function getUniqueAlt(configs, predicateSet) { - let alt; - for (const c3 of configs.elements) { - if (predicateSet.is(c3.alt) === true) { - if (alt === void 0) { - alt = c3.alt; - } else if (alt !== c3.alt) { - return void 0; - } - } - } - return alt; - } - function newDFAState(closure2) { - return { - configs: closure2, - edges: {}, - isAcceptState: false, - prediction: -1 - }; - } - function addDFAEdge(dfa, from2, token2, to) { - to = addDFAState(dfa, to); - from2.edges[token2.tokenTypeIdx] = to; - return to; - } - function addDFAState(dfa, state4) { - if (state4 === DFA_ERROR) { - return state4; - } - const mapKey = state4.configs.key; - const existing = dfa.states[mapKey]; - if (existing !== void 0) { - return existing; - } - state4.configs.finalize(); - dfa.states[mapKey] = state4; - return state4; - } - function computeStartState(atnState) { - const configs = new ATNConfigSet(); - const numberOfTransitions = atnState.transitions.length; - for (let i2 = 0; i2 < numberOfTransitions; i2++) { - const target = atnState.transitions[i2].target; - const config5 = { - state: target, - alt: i2, - stack: [] + return self2; }; - closure(config5, configs); - } - return configs; - } - function closure(config5, configs) { - const p3 = config5.state; - if (p3.type === ATN_RULE_STOP) { - if (config5.stack.length > 0) { - const atnStack = [...config5.stack]; - const followState = atnStack.pop(); - const followConfig = { - state: followState, - alt: config5.alt, - stack: atnStack - }; - closure(followConfig, configs); - } else { - configs.add(config5); - } - return; - } - if (!p3.epsilonOnlyTransitions) { - configs.add(config5); - } - const transitionLength = p3.transitions.length; - for (let i2 = 0; i2 < transitionLength; i2++) { - const transition2 = p3.transitions[i2]; - const c3 = getEpsilonTarget(config5, transition2); - if (c3 !== void 0) { - closure(c3, configs); - } - } - } - function getEpsilonTarget(config5, transition2) { - if (transition2 instanceof EpsilonTransition) { - return { - state: transition2.target, - alt: config5.alt, - stack: config5.stack + elesfn$1.removed = function() { + var ele = this[0]; + return ele && ele._private.removed; }; - } else if (transition2 instanceof RuleTransition) { - const stack = [...config5.stack, transition2.followState]; - return { - state: transition2.target, - alt: config5.alt, - stack + elesfn$1.inside = function() { + var ele = this[0]; + return ele && !ele._private.removed; }; - } - return void 0; - } - function hasConfigInRuleStopState(configs) { - for (const c3 of configs.elements) { - if (c3.state.type === ATN_RULE_STOP) { - return true; - } - } - return false; - } - function allConfigsInRuleStopStates(configs) { - for (const c3 of configs.elements) { - if (c3.state.type !== ATN_RULE_STOP) { - return false; - } - } - return true; - } - function hasConflictTerminatingPrediction(configs) { - if (allConfigsInRuleStopStates(configs)) { - return true; - } - const altSets = getConflictingAltSets(configs.elements); - const heuristic2 = hasConflictingAltSet(altSets) && !hasStateAssociatedWithOneAlt(altSets); - return heuristic2; - } - function getConflictingAltSets(configs) { - const configToAlts = /* @__PURE__ */ new Map(); - for (const c3 of configs) { - const key = getATNConfigKey(c3, false); - let alts = configToAlts.get(key); - if (alts === void 0) { - alts = {}; - configToAlts.set(key, alts); - } - alts[c3.alt] = true; - } - return configToAlts; - } - function hasConflictingAltSet(altSets) { - for (const value2 of Array.from(altSets.values())) { - if (Object.keys(value2).length > 1) { - return true; - } - } - return false; - } - function hasStateAssociatedWithOneAlt(altSets) { - for (const value2 of Array.from(altSets.values())) { - if (Object.keys(value2).length === 1) { - return true; - } - } - return false; - } - var PredicateSet, EMPTY_PREDICATES, LLStarLookaheadStrategy; - var init_all_star_lookahead = __esm({ - "../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/all-star-lookahead.js"() { - "use strict"; - init_api5(); - init_atn(); - init_dfa(); - init_min2(); - init_flatMap(); - init_uniqBy(); - init_map(); - init_flatten(); - init_forEach(); - init_isEmpty(); - init_reduce(); - __name(createDFACache, "createDFACache"); - PredicateSet = class { - static { - __name(this, "PredicateSet"); - } - constructor() { - this.predicates = []; - } - is(index) { - return index >= this.predicates.length || this.predicates[index]; + elesfn$1.remove = function() { + var notifyRenderer = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; + var removeFromPool2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + var self2 = this; + var elesToRemove = []; + var elesToRemoveIds = {}; + var cy = self2._private.cy; + function addConnectedEdges(node2) { + var edges3 = node2._private.edges; + for (var i3 = 0; i3 < edges3.length; i3++) { + add3(edges3[i3]); + } } - set(index, value2) { - this.predicates[index] = value2; + __name(addConnectedEdges, "addConnectedEdges"); + function addChildren2(node2) { + var children2 = node2._private.children; + for (var i3 = 0; i3 < children2.length; i3++) { + add3(children2[i3]); + } } - toString() { - let value2 = ""; - const size5 = this.predicates.length; - for (let i2 = 0; i2 < size5; i2++) { - value2 += this.predicates[i2] === true ? "1" : "0"; + __name(addChildren2, "addChildren"); + function add3(ele2) { + var alreadyAdded = elesToRemoveIds[ele2.id()]; + if (removeFromPool2 && ele2.removed() || alreadyAdded) { + return; + } else { + elesToRemoveIds[ele2.id()] = true; + } + if (ele2.isNode()) { + elesToRemove.push(ele2); + addConnectedEdges(ele2); + addChildren2(ele2); + } else { + elesToRemove.unshift(ele2); } - return value2; } - }; - EMPTY_PREDICATES = new PredicateSet(); - LLStarLookaheadStrategy = class extends LLkLookaheadStrategy { - static { - __name(this, "LLStarLookaheadStrategy"); + __name(add3, "add"); + for (var i2 = 0, l4 = self2.length; i2 < l4; i2++) { + var ele = self2[i2]; + add3(ele); } - constructor(options3) { - var _a; - super(); - this.logging = (_a = options3 === null || options3 === void 0 ? void 0 : options3.logging) !== null && _a !== void 0 ? _a : (message) => console.log(message); + function removeEdgeRef(node2, edge) { + var connectedEdges = node2._private.edges; + removeFromArray(connectedEdges, edge); + node2.clearTraversalCache(); } - initialize(options3) { - this.atn = createATN(options3.rules); - this.dfas = initATNSimulator(this.atn); + __name(removeEdgeRef, "removeEdgeRef"); + function removeParallelRef(pllEdge2) { + pllEdge2.clearTraversalCache(); } - validateAmbiguousAlternationAlternatives() { - return []; + __name(removeParallelRef, "removeParallelRef"); + var alteredParents = []; + alteredParents.ids = {}; + function removeChildRef(parent5, ele2) { + ele2 = ele2[0]; + parent5 = parent5[0]; + var children2 = parent5._private.children; + var pid = parent5.id(); + removeFromArray(children2, ele2); + ele2._private.parent = null; + if (!alteredParents.ids[pid]) { + alteredParents.ids[pid] = true; + alteredParents.push(parent5); + } } - validateEmptyOrAlternatives() { - return []; + __name(removeChildRef, "removeChildRef"); + self2.dirtyCompoundBoundsCache(); + if (removeFromPool2) { + cy.removeFromPool(elesToRemove); } - buildLookaheadForAlternation(options3) { - const { prodOccurrence, rule, hasPredicates, dynamicTokensEnabled } = options3; - const dfas = this.dfas; - const logging = this.logging; - const key = buildATNKey(rule, "Alternation", prodOccurrence); - const decisionState = this.atn.decisionMap[key]; - const decisionIndex = decisionState.decision; - const partialAlts = map_default(getLookaheadPaths({ - maxLookahead: 1, - occurrence: prodOccurrence, - prodType: "Alternation", - rule - }), (currAlt) => map_default(currAlt, (path4) => path4[0])); - if (isLL1Sequence(partialAlts, false) && !dynamicTokensEnabled) { - const choiceToAlt = reduce_default(partialAlts, (result, currAlt, idx) => { - forEach_default(currAlt, (currTokType) => { - if (currTokType) { - result[currTokType.tokenTypeIdx] = idx; - forEach_default(currTokType.categoryMatches, (currExtendingType) => { - result[currExtendingType] = idx; - }); - } - }); - return result; - }, {}); - if (hasPredicates) { - return function(orAlts) { - var _a; - const nextToken = this.LA(1); - const prediction = choiceToAlt[nextToken.tokenTypeIdx]; - if (orAlts !== void 0 && prediction !== void 0) { - const gate = (_a = orAlts[prediction]) === null || _a === void 0 ? void 0 : _a.GATE; - if (gate !== void 0 && gate.call(this) === false) { - return void 0; - } - } - return prediction; - }; - } else { - return function() { - const nextToken = this.LA(1); - return choiceToAlt[nextToken.tokenTypeIdx]; - }; - } - } else if (hasPredicates) { - return function(orAlts) { - const predicates = new PredicateSet(); - const length2 = orAlts === void 0 ? 0 : orAlts.length; - for (let i2 = 0; i2 < length2; i2++) { - const gate = orAlts === null || orAlts === void 0 ? void 0 : orAlts[i2].GATE; - predicates.set(i2, gate === void 0 || gate.call(this)); + for (var _i6 = 0; _i6 < elesToRemove.length; _i6++) { + var _ele4 = elesToRemove[_i6]; + if (_ele4.isEdge()) { + var src = _ele4.source()[0]; + var tgt = _ele4.target()[0]; + removeEdgeRef(src, _ele4); + removeEdgeRef(tgt, _ele4); + var pllEdges = _ele4.parallelEdges(); + for (var j3 = 0; j3 < pllEdges.length; j3++) { + var pllEdge = pllEdges[j3]; + removeParallelRef(pllEdge); + if (pllEdge.isBundledBezier()) { + pllEdge.dirtyBoundingBoxCache(); } - const result = adaptivePredict.call(this, dfas, decisionIndex, predicates, logging); - return typeof result === "number" ? result : void 0; - }; + } } else { - return function() { - const result = adaptivePredict.call(this, dfas, decisionIndex, EMPTY_PREDICATES, logging); - return typeof result === "number" ? result : void 0; - }; - } - } - buildLookaheadForOptional(options3) { - const { prodOccurrence, rule, prodType, dynamicTokensEnabled } = options3; - const dfas = this.dfas; - const logging = this.logging; - const key = buildATNKey(rule, prodType, prodOccurrence); - const decisionState = this.atn.decisionMap[key]; - const decisionIndex = decisionState.decision; - const alts = map_default(getLookaheadPaths({ - maxLookahead: 1, - occurrence: prodOccurrence, - prodType, - rule - }), (e3) => { - return map_default(e3, (g2) => g2[0]); - }); - if (isLL1Sequence(alts) && alts[0][0] && !dynamicTokensEnabled) { - const alt = alts[0]; - const singleTokensTypes = flatten_default(alt); - if (singleTokensTypes.length === 1 && isEmpty_default(singleTokensTypes[0].categoryMatches)) { - const expectedTokenType = singleTokensTypes[0]; - const expectedTokenUniqueKey = expectedTokenType.tokenTypeIdx; - return function() { - return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey; - }; - } else { - const choiceToAlt = reduce_default(singleTokensTypes, (result, currTokType) => { - if (currTokType !== void 0) { - result[currTokType.tokenTypeIdx] = true; - forEach_default(currTokType.categoryMatches, (currExtendingType) => { - result[currExtendingType] = true; - }); - } - return result; - }, {}); - return function() { - const nextToken = this.LA(1); - return choiceToAlt[nextToken.tokenTypeIdx] === true; - }; + var parent4 = _ele4.parent(); + if (parent4.length !== 0) { + removeChildRef(parent4, _ele4); } } - return function() { - const result = adaptivePredict.call(this, dfas, decisionIndex, EMPTY_PREDICATES, logging); - return typeof result === "object" ? false : result === 0; - }; - } - }; - __name(isLL1Sequence, "isLL1Sequence"); - __name(initATNSimulator, "initATNSimulator"); - __name(adaptivePredict, "adaptivePredict"); - __name(performLookahead, "performLookahead"); - __name(computeLookaheadTarget, "computeLookaheadTarget"); - __name(reportLookaheadAmbiguity, "reportLookaheadAmbiguity"); - __name(buildAmbiguityError, "buildAmbiguityError"); - __name(getProductionDslName2, "getProductionDslName"); - __name(buildAdaptivePredictError, "buildAdaptivePredictError"); - __name(getExistingTargetState, "getExistingTargetState"); - __name(computeReachSet, "computeReachSet"); - __name(getReachableTarget, "getReachableTarget"); - __name(getUniqueAlt, "getUniqueAlt"); - __name(newDFAState, "newDFAState"); - __name(addDFAEdge, "addDFAEdge"); - __name(addDFAState, "addDFAState"); - __name(computeStartState, "computeStartState"); - __name(closure, "closure"); - __name(getEpsilonTarget, "getEpsilonTarget"); - __name(hasConfigInRuleStopState, "hasConfigInRuleStopState"); - __name(allConfigsInRuleStopStates, "allConfigsInRuleStopStates"); - __name(hasConflictTerminatingPrediction, "hasConflictTerminatingPrediction"); - __name(getConflictingAltSets, "getConflictingAltSets"); - __name(hasConflictingAltSet, "hasConflictingAltSet"); - __name(hasStateAssociatedWithOneAlt, "hasStateAssociatedWithOneAlt"); - } - }); - - // ../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/index.js - var init_lib2 = __esm({ - "../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/index.js"() { - "use strict"; - init_all_star_lookahead(); - } - }); - - // ../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js - var DocumentUri, URI, integer, uinteger, Position, Range, Location, LocationLink, Color3, ColorInformation, ColorPresentation, FoldingRangeKind, FoldingRange, DiagnosticRelatedInformation, DiagnosticSeverity, DiagnosticTag, CodeDescription, Diagnostic, Command, TextEdit, ChangeAnnotation, ChangeAnnotationIdentifier, AnnotatedTextEdit, TextDocumentEdit, CreateFile, RenameFile, DeleteFile, WorkspaceEdit, TextDocumentIdentifier, VersionedTextDocumentIdentifier, OptionalVersionedTextDocumentIdentifier, TextDocumentItem, MarkupKind, MarkupContent, CompletionItemKind, InsertTextFormat, CompletionItemTag, InsertReplaceEdit, InsertTextMode, CompletionItemLabelDetails, CompletionItem, CompletionList, MarkedString, Hover, ParameterInformation, SignatureInformation, DocumentHighlightKind, DocumentHighlight, SymbolKind, SymbolTag, SymbolInformation, WorkspaceSymbol, DocumentSymbol, CodeActionKind, CodeActionTriggerKind, CodeActionContext, CodeAction, CodeLens, FormattingOptions, DocumentLink, SelectionRange, SemanticTokenTypes, SemanticTokenModifiers, SemanticTokens, InlineValueText, InlineValueVariableLookup, InlineValueEvaluatableExpression, InlineValueContext, InlayHintKind, InlayHintLabelPart, InlayHint, StringValue, InlineCompletionItem, InlineCompletionList, InlineCompletionTriggerKind, SelectedCompletionInfo, InlineCompletionContext, WorkspaceFolder, TextDocument, FullTextDocument, Is; - var init_main = __esm({ - "../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js"() { - "use strict"; - (function(DocumentUri2) { - function is2(value2) { - return typeof value2 === "string"; + if (removeFromPool2) { + _ele4._private.removed = true; + } } - __name(is2, "is"); - DocumentUri2.is = is2; - })(DocumentUri || (DocumentUri = {})); - (function(URI3) { - function is2(value2) { - return typeof value2 === "string"; + var elesStillInside = cy._private.elements; + cy._private.hasCompoundNodes = false; + for (var _i7 = 0; _i7 < elesStillInside.length; _i7++) { + var _ele5 = elesStillInside[_i7]; + if (_ele5.isParent()) { + cy._private.hasCompoundNodes = true; + break; + } } - __name(is2, "is"); - URI3.is = is2; - })(URI || (URI = {})); - (function(integer4) { - integer4.MIN_VALUE = -2147483648; - integer4.MAX_VALUE = 2147483647; - function is2(value2) { - return typeof value2 === "number" && integer4.MIN_VALUE <= value2 && value2 <= integer4.MAX_VALUE; + var removedElements = new Collection(this.cy(), elesToRemove); + if (removedElements.size() > 0) { + if (notifyRenderer) { + removedElements.emitAndNotify("remove"); + } else if (removeFromPool2) { + removedElements.emit("remove"); + } } - __name(is2, "is"); - integer4.is = is2; - })(integer || (integer = {})); - (function(uinteger2) { - uinteger2.MIN_VALUE = 0; - uinteger2.MAX_VALUE = 2147483647; - function is2(value2) { - return typeof value2 === "number" && uinteger2.MIN_VALUE <= value2 && value2 <= uinteger2.MAX_VALUE; + for (var _i8 = 0; _i8 < alteredParents.length; _i8++) { + var _ele6 = alteredParents[_i8]; + if (!removeFromPool2 || !_ele6.removed()) { + _ele6.updateStyle(); + } } - __name(is2, "is"); - uinteger2.is = is2; - })(uinteger || (uinteger = {})); - (function(Position2) { - function create4(line2, character2) { - if (line2 === Number.MAX_VALUE) { - line2 = uinteger.MAX_VALUE; + return removedElements; + }; + elesfn$1.move = function(struct) { + var cy = this._private.cy; + var eles = this; + var notifyRenderer = false; + var modifyPool = false; + var toString6 = /* @__PURE__ */ __name(function toString7(id30) { + return id30 == null ? id30 : "" + id30; + }, "toString"); + if (struct.source !== void 0 || struct.target !== void 0) { + var srcId = toString6(struct.source); + var tgtId = toString6(struct.target); + var srcExists = srcId != null && cy.hasElementWithId(srcId); + var tgtExists = tgtId != null && cy.hasElementWithId(tgtId); + if (srcExists || tgtExists) { + cy.batch(function() { + eles.remove(notifyRenderer, modifyPool); + eles.emitAndNotify("moveout"); + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + var _data5 = ele._private.data; + if (ele.isEdge()) { + if (srcExists) { + _data5.source = srcId; + } + if (tgtExists) { + _data5.target = tgtId; + } + } + } + eles.restore(notifyRenderer, modifyPool); + }); + eles.emitAndNotify("move"); } - if (character2 === Number.MAX_VALUE) { - character2 = uinteger.MAX_VALUE; + } else if (struct.parent !== void 0) { + var parentId = toString6(struct.parent); + var parentExists = parentId === null || cy.hasElementWithId(parentId); + if (parentExists) { + var pidToAssign = parentId === null ? void 0 : parentId; + cy.batch(function() { + var updated = eles.remove(notifyRenderer, modifyPool); + updated.emitAndNotify("moveout"); + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + var _data6 = ele._private.data; + if (ele.isNode()) { + _data6.parent = pidToAssign; + } + } + updated.restore(notifyRenderer, modifyPool); + }); + eles.emitAndNotify("move"); } - return { line: line2, character: character2 }; - } - __name(create4, "create"); - Position2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character); } - __name(is2, "is"); - Position2.is = is2; - })(Position || (Position = {})); - (function(Range2) { - function create4(one4, two, three, four) { - if (Is.uinteger(one4) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) { - return { start: Position.create(one4, two), end: Position.create(three, four) }; - } else if (Position.is(one4) && Position.is(two)) { - return { start: one4, end: two }; + return this; + }; + [elesfn$j, elesfn$i, elesfn$h, elesfn$g, elesfn$f, data3, elesfn$d, dimensions, elesfn$9, elesfn$8, elesfn$7, elesfn$6, elesfn$5, elesfn$4, elesfn$3, elesfn$2].forEach(function(props) { + extend4(elesfn$1, props); + }); + corefn$9 = { + add: /* @__PURE__ */ __name(function add2(opts) { + var elements2; + var cy = this; + if (elementOrCollection(opts)) { + var eles = opts; + if (eles._private.cy === cy) { + elements2 = eles.restore(); + } else { + var jsons = []; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + jsons.push(ele.json()); + } + elements2 = new Collection(cy, jsons); + } + } else if (array2(opts)) { + var _jsons = opts; + elements2 = new Collection(cy, _jsons); + } else if (plainObject(opts) && (array2(opts.nodes) || array2(opts.edges))) { + var elesByGroup = opts; + var _jsons2 = []; + var grs = ["nodes", "edges"]; + for (var _i = 0, il = grs.length; _i < il; _i++) { + var group2 = grs[_i]; + var elesArray = elesByGroup[group2]; + if (array2(elesArray)) { + for (var j3 = 0, jl = elesArray.length; j3 < jl; j3++) { + var json3 = extend4({ + group: group2 + }, elesArray[j3]); + _jsons2.push(json3); + } + } + } + elements2 = new Collection(cy, _jsons2); } else { - throw new Error(`Range#create called with invalid arguments[${one4}, ${two}, ${three}, ${four}]`); + var _json = opts; + elements2 = new Element(cy, _json).collection(); } + return elements2; + }, "add"), + remove: /* @__PURE__ */ __name(function remove2(collection4) { + if (elementOrCollection(collection4)) ; + else if (string(collection4)) { + var selector = collection4; + collection4 = this.$(selector); + } + return collection4.remove(); + }, "remove") + }; + __name(generateCubicBezier, "generateCubicBezier"); + generateSpringRK4 = /* @__PURE__ */ (function() { + function springAccelerationForState(state3) { + return -state3.tension * state3.x - state3.friction * state3.v; } - __name(create4, "create"); - Range2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end); - } - __name(is2, "is"); - Range2.is = is2; - })(Range || (Range = {})); - (function(Location2) { - function create4(uri, range3) { - return { uri, range: range3 }; - } - __name(create4, "create"); - Location2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.objectLiteral(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri)); - } - __name(is2, "is"); - Location2.is = is2; - })(Location || (Location = {})); - (function(LocationLink2) { - function create4(targetUri, targetRange, targetSelectionRange, originSelectionRange) { - return { targetUri, targetRange, targetSelectionRange, originSelectionRange }; - } - __name(create4, "create"); - LocationLink2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.objectLiteral(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri) && Range.is(candidate.targetSelectionRange) && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange)); - } - __name(is2, "is"); - LocationLink2.is = is2; - })(LocationLink || (LocationLink = {})); - (function(Color4) { - function create4(red, green, blue, alpha) { - return { - red, - green, - blue, - alpha - }; - } - __name(create4, "create"); - Color4.create = create4; - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(candidate) && Is.numberRange(candidate.red, 0, 1) && Is.numberRange(candidate.green, 0, 1) && Is.numberRange(candidate.blue, 0, 1) && Is.numberRange(candidate.alpha, 0, 1); - } - __name(is2, "is"); - Color4.is = is2; - })(Color3 || (Color3 = {})); - (function(ColorInformation2) { - function create4(range3, color2) { - return { - range: range3, - color: color2 + __name(springAccelerationForState, "springAccelerationForState"); + function springEvaluateStateWithDerivative(initialState, dt, derivative) { + var state3 = { + x: initialState.x + derivative.dx * dt, + v: initialState.v + derivative.dv * dt, + tension: initialState.tension, + friction: initialState.friction }; - } - __name(create4, "create"); - ColorInformation2.create = create4; - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(candidate) && Range.is(candidate.range) && Color3.is(candidate.color); - } - __name(is2, "is"); - ColorInformation2.is = is2; - })(ColorInformation || (ColorInformation = {})); - (function(ColorPresentation2) { - function create4(label, textEdit, additionalTextEdits) { return { - label, - textEdit, - additionalTextEdits + dx: state3.v, + dv: springAccelerationForState(state3) }; } - __name(create4, "create"); - ColorPresentation2.create = create4; - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate)) && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is)); + __name(springEvaluateStateWithDerivative, "springEvaluateStateWithDerivative"); + function springIntegrateState(state3, dt) { + var a2 = { + dx: state3.v, + dv: springAccelerationForState(state3) + }, b3 = springEvaluateStateWithDerivative(state3, dt * 0.5, a2), c3 = springEvaluateStateWithDerivative(state3, dt * 0.5, b3), d3 = springEvaluateStateWithDerivative(state3, dt, c3), dxdt = 1 / 6 * (a2.dx + 2 * (b3.dx + c3.dx) + d3.dx), dvdt = 1 / 6 * (a2.dv + 2 * (b3.dv + c3.dv) + d3.dv); + state3.x = state3.x + dxdt * dt; + state3.v = state3.v + dvdt * dt; + return state3; } - __name(is2, "is"); - ColorPresentation2.is = is2; - })(ColorPresentation || (ColorPresentation = {})); - (function(FoldingRangeKind2) { - FoldingRangeKind2.Comment = "comment"; - FoldingRangeKind2.Imports = "imports"; - FoldingRangeKind2.Region = "region"; - })(FoldingRangeKind || (FoldingRangeKind = {})); - (function(FoldingRange2) { - function create4(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) { - const result = { - startLine, - endLine - }; - if (Is.defined(startCharacter)) { - result.startCharacter = startCharacter; - } - if (Is.defined(endCharacter)) { - result.endCharacter = endCharacter; + __name(springIntegrateState, "springIntegrateState"); + return /* @__PURE__ */ __name(function springRK4Factory(tension, friction, duration) { + var initState = { + x: -1, + v: 0, + tension: null, + friction: null + }, path4 = [0], time_lapsed = 0, tolerance = 1 / 1e4, DT = 16 / 1e3, have_duration, dt, last_state; + tension = parseFloat(tension) || 500; + friction = parseFloat(friction) || 20; + duration = duration || null; + initState.tension = tension; + initState.friction = friction; + have_duration = duration !== null; + if (have_duration) { + time_lapsed = springRK4Factory(tension, friction); + dt = time_lapsed / duration * DT; + } else { + dt = DT; } - if (Is.defined(kind)) { - result.kind = kind; + for (; ; ) { + last_state = springIntegrateState(last_state || initState, dt); + path4.push(1 + last_state.x); + time_lapsed += 16; + if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) { + break; + } } - if (Is.defined(collapsedText)) { - result.collapsedText = collapsedText; + return !have_duration ? time_lapsed : function(percentComplete) { + return path4[percentComplete * (path4.length - 1) | 0]; + }; + }, "springRK4Factory"); + })(); + cubicBezier = /* @__PURE__ */ __name(function cubicBezier2(t13, p1, t22, p22) { + var bezier = generateCubicBezier(t13, p1, t22, p22); + return function(start3, end2, percent) { + return start3 + (end2 - start3) * bezier(percent); + }; + }, "cubicBezier"); + easings = { + "linear": /* @__PURE__ */ __name(function linear3(start3, end2, percent) { + return start3 + (end2 - start3) * percent; + }, "linear"), + // default easings + "ease": cubicBezier(0.25, 0.1, 0.25, 1), + "ease-in": cubicBezier(0.42, 0, 1, 1), + "ease-out": cubicBezier(0, 0, 0.58, 1), + "ease-in-out": cubicBezier(0.42, 0, 0.58, 1), + // sine + "ease-in-sine": cubicBezier(0.47, 0, 0.745, 0.715), + "ease-out-sine": cubicBezier(0.39, 0.575, 0.565, 1), + "ease-in-out-sine": cubicBezier(0.445, 0.05, 0.55, 0.95), + // quad + "ease-in-quad": cubicBezier(0.55, 0.085, 0.68, 0.53), + "ease-out-quad": cubicBezier(0.25, 0.46, 0.45, 0.94), + "ease-in-out-quad": cubicBezier(0.455, 0.03, 0.515, 0.955), + // cubic + "ease-in-cubic": cubicBezier(0.55, 0.055, 0.675, 0.19), + "ease-out-cubic": cubicBezier(0.215, 0.61, 0.355, 1), + "ease-in-out-cubic": cubicBezier(0.645, 0.045, 0.355, 1), + // quart + "ease-in-quart": cubicBezier(0.895, 0.03, 0.685, 0.22), + "ease-out-quart": cubicBezier(0.165, 0.84, 0.44, 1), + "ease-in-out-quart": cubicBezier(0.77, 0, 0.175, 1), + // quint + "ease-in-quint": cubicBezier(0.755, 0.05, 0.855, 0.06), + "ease-out-quint": cubicBezier(0.23, 1, 0.32, 1), + "ease-in-out-quint": cubicBezier(0.86, 0, 0.07, 1), + // expo + "ease-in-expo": cubicBezier(0.95, 0.05, 0.795, 0.035), + "ease-out-expo": cubicBezier(0.19, 1, 0.22, 1), + "ease-in-out-expo": cubicBezier(1, 0, 0, 1), + // circ + "ease-in-circ": cubicBezier(0.6, 0.04, 0.98, 0.335), + "ease-out-circ": cubicBezier(0.075, 0.82, 0.165, 1), + "ease-in-out-circ": cubicBezier(0.785, 0.135, 0.15, 0.86), + // user param easings... + "spring": /* @__PURE__ */ __name(function spring(tension, friction, duration) { + if (duration === 0) { + return easings.linear; } - return result; - } - __name(create4, "create"); - FoldingRange2.create = create4; - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(candidate) && Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine) && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter)) && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter)) && (Is.undefined(candidate.kind) || Is.string(candidate.kind)); - } - __name(is2, "is"); - FoldingRange2.is = is2; - })(FoldingRange || (FoldingRange = {})); - (function(DiagnosticRelatedInformation2) { - function create4(location, message) { - return { - location, - message + var spring2 = generateSpringRK4(tension, friction, duration); + return function(start3, end2, percent) { + return start3 + (end2 - start3) * spring2(percent); }; - } - __name(create4, "create"); - DiagnosticRelatedInformation2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message); - } - __name(is2, "is"); - DiagnosticRelatedInformation2.is = is2; - })(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {})); - (function(DiagnosticSeverity2) { - DiagnosticSeverity2.Error = 1; - DiagnosticSeverity2.Warning = 2; - DiagnosticSeverity2.Information = 3; - DiagnosticSeverity2.Hint = 4; - })(DiagnosticSeverity || (DiagnosticSeverity = {})); - (function(DiagnosticTag2) { - DiagnosticTag2.Unnecessary = 1; - DiagnosticTag2.Deprecated = 2; - })(DiagnosticTag || (DiagnosticTag = {})); - (function(CodeDescription2) { - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(candidate) && Is.string(candidate.href); - } - __name(is2, "is"); - CodeDescription2.is = is2; - })(CodeDescription || (CodeDescription = {})); - (function(Diagnostic2) { - function create4(range3, message, severity, code, source, relatedInformation) { - let result = { range: range3, message }; - if (Is.defined(severity)) { - result.severity = severity; + }, "spring"), + "cubic-bezier": cubicBezier + }; + __name(getEasedValue, "getEasedValue"); + __name(getValue2, "getValue"); + __name(ease, "ease"); + __name(step$1, "step$1"); + __name(valid, "valid"); + __name(startAnimation, "startAnimation"); + __name(stepAll, "stepAll"); + corefn$8 = { + // pull in animation functions + animate: define2.animate(), + animation: define2.animation(), + animated: define2.animated(), + clearQueue: define2.clearQueue(), + delay: define2.delay(), + delayAnimation: define2.delayAnimation(), + stop: define2.stop(), + addToAnimationPool: /* @__PURE__ */ __name(function addToAnimationPool(eles) { + var cy = this; + if (!cy.styleEnabled()) { + return; } - if (Is.defined(code)) { - result.code = code; + cy._private.aniEles.merge(eles); + }, "addToAnimationPool"), + stopAnimationLoop: /* @__PURE__ */ __name(function stopAnimationLoop() { + this._private.animationsRunning = false; + }, "stopAnimationLoop"), + startAnimationLoop: /* @__PURE__ */ __name(function startAnimationLoop() { + var cy = this; + cy._private.animationsRunning = true; + if (!cy.styleEnabled()) { + return; } - if (Is.defined(source)) { - result.source = source; + function headlessStep() { + if (!cy._private.animationsRunning) { + return; + } + requestAnimationFrame2(/* @__PURE__ */ __name(function animationStep(now3) { + stepAll(now3, cy); + headlessStep(); + }, "animationStep")); } - if (Is.defined(relatedInformation)) { - result.relatedInformation = relatedInformation; + __name(headlessStep, "headlessStep"); + var renderer10 = cy.renderer(); + if (renderer10 && renderer10.beforeRender) { + renderer10.beforeRender(/* @__PURE__ */ __name(function rendererAnimationStep(willDraw, now3) { + stepAll(now3, cy); + }, "rendererAnimationStep"), renderer10.beforeRenderPriorities.animations); + } else { + headlessStep(); } - return result; - } - __name(create4, "create"); - Diagnostic2.create = create4; - function is2(value2) { - var _a; - let candidate = value2; - return Is.defined(candidate) && Range.is(candidate.range) && Is.string(candidate.message) && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) && (Is.undefined(candidate.codeDescription) || Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)) && (Is.string(candidate.source) || Is.undefined(candidate.source)) && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is)); - } - __name(is2, "is"); - Diagnostic2.is = is2; - })(Diagnostic || (Diagnostic = {})); - (function(Command2) { - function create4(title2, command, ...args) { - let result = { title: title2, command }; - if (Is.defined(args) && args.length > 0) { - result.arguments = args; + }, "startAnimationLoop") + }; + emitterOptions = { + qualifierCompare: /* @__PURE__ */ __name(function qualifierCompare3(selector1, selector2) { + if (selector1 == null || selector2 == null) { + return selector1 == null && selector2 == null; + } else { + return selector1.sameText(selector2); } - return result; - } - __name(create4, "create"); - Command2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command); - } - __name(is2, "is"); - Command2.is = is2; - })(Command || (Command = {})); - (function(TextEdit2) { - function replace2(range3, newText) { - return { range: range3, newText }; - } - __name(replace2, "replace"); - TextEdit2.replace = replace2; - function insert(position5, newText) { - return { range: { start: position5, end: position5 }, newText }; - } - __name(insert, "insert"); - TextEdit2.insert = insert; - function del(range3) { - return { range: range3, newText: "" }; - } - __name(del, "del"); - TextEdit2.del = del; - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range.is(candidate.range); + }, "qualifierCompare"), + eventMatches: /* @__PURE__ */ __name(function eventMatches3(cy, listener, eventObj) { + var selector = listener.qualifier; + if (selector != null) { + return cy !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); + } + return true; + }, "eventMatches"), + addEventFields: /* @__PURE__ */ __name(function addEventFields3(cy, evt) { + evt.cy = cy; + evt.target = cy; + }, "addEventFields"), + callbackContext: /* @__PURE__ */ __name(function callbackContext3(cy, listener, eventObj) { + return listener.qualifier != null ? eventObj.target : cy; + }, "callbackContext") + }; + argSelector2 = /* @__PURE__ */ __name(function argSelector3(arg) { + if (string(arg)) { + return new Selector(arg); + } else { + return arg; } - __name(is2, "is"); - TextEdit2.is = is2; - })(TextEdit || (TextEdit = {})); - (function(ChangeAnnotation2) { - function create4(label, needsConfirmation, description) { - const result = { label }; - if (needsConfirmation !== void 0) { - result.needsConfirmation = needsConfirmation; + }, "argSelector"); + elesfn = { + createEmitter: /* @__PURE__ */ __name(function createEmitter2() { + var _p = this._private; + if (!_p.emitter) { + _p.emitter = new Emitter(emitterOptions, this); } - if (description !== void 0) { - result.description = description; + return this; + }, "createEmitter"), + emitter: /* @__PURE__ */ __name(function emitter2() { + return this._private.emitter; + }, "emitter"), + on: /* @__PURE__ */ __name(function on2(events, selector, callback) { + this.emitter().on(events, argSelector2(selector), callback); + return this; + }, "on"), + removeListener: /* @__PURE__ */ __name(function removeListener2(events, selector, callback) { + this.emitter().removeListener(events, argSelector2(selector), callback); + return this; + }, "removeListener"), + removeAllListeners: /* @__PURE__ */ __name(function removeAllListeners2() { + this.emitter().removeAllListeners(); + return this; + }, "removeAllListeners"), + one: /* @__PURE__ */ __name(function one3(events, selector, callback) { + this.emitter().one(events, argSelector2(selector), callback); + return this; + }, "one"), + once: /* @__PURE__ */ __name(function once2(events, selector, callback) { + this.emitter().one(events, argSelector2(selector), callback); + return this; + }, "once"), + emit: /* @__PURE__ */ __name(function emit2(events, extraParams) { + this.emitter().emit(events, extraParams); + return this; + }, "emit"), + emitAndNotify: /* @__PURE__ */ __name(function emitAndNotify2(event3, eles) { + this.emit(event3); + this.notify(event3, eles); + return this; + }, "emitAndNotify") + }; + define2.eventAliasesOn(elesfn); + corefn$7 = { + png: /* @__PURE__ */ __name(function png(options2) { + var renderer10 = this._private.renderer; + options2 = options2 || {}; + return renderer10.png(options2); + }, "png"), + jpg: /* @__PURE__ */ __name(function jpg(options2) { + var renderer10 = this._private.renderer; + options2 = options2 || {}; + options2.bg = options2.bg || "#fff"; + return renderer10.jpg(options2); + }, "jpg") + }; + corefn$7.jpeg = corefn$7.jpg; + corefn$6 = { + layout: /* @__PURE__ */ __name(function layout3(options2) { + var cy = this; + if (options2 == null) { + error("Layout options must be specified to make a layout"); + return; } - return result; - } - __name(create4, "create"); - ChangeAnnotation2.create = create4; - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === void 0) && (Is.string(candidate.description) || candidate.description === void 0); - } - __name(is2, "is"); - ChangeAnnotation2.is = is2; - })(ChangeAnnotation || (ChangeAnnotation = {})); - (function(ChangeAnnotationIdentifier2) { - function is2(value2) { - const candidate = value2; - return Is.string(candidate); - } - __name(is2, "is"); - ChangeAnnotationIdentifier2.is = is2; - })(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {})); - (function(AnnotatedTextEdit2) { - function replace2(range3, newText, annotation) { - return { range: range3, newText, annotationId: annotation }; - } - __name(replace2, "replace"); - AnnotatedTextEdit2.replace = replace2; - function insert(position5, newText, annotation) { - return { range: { start: position5, end: position5 }, newText, annotationId: annotation }; - } - __name(insert, "insert"); - AnnotatedTextEdit2.insert = insert; - function del(range3, annotation) { - return { range: range3, newText: "", annotationId: annotation }; - } - __name(del, "del"); - AnnotatedTextEdit2.del = del; - function is2(value2) { - const candidate = value2; - return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId)); - } - __name(is2, "is"); - AnnotatedTextEdit2.is = is2; - })(AnnotatedTextEdit || (AnnotatedTextEdit = {})); - (function(TextDocumentEdit2) { - function create4(textDocument, edits) { - return { textDocument, edits }; - } - __name(create4, "create"); - TextDocumentEdit2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits); - } - __name(is2, "is"); - TextDocumentEdit2.is = is2; - })(TextDocumentEdit || (TextDocumentEdit = {})); - (function(CreateFile2) { - function create4(uri, options3, annotation) { - let result = { - kind: "create", - uri - }; - if (options3 !== void 0 && (options3.overwrite !== void 0 || options3.ignoreIfExists !== void 0)) { - result.options = options3; + if (options2.name == null) { + error("A `name` must be specified to make a layout"); + return; } - if (annotation !== void 0) { - result.annotationId = annotation; + var name = options2.name; + var Layout2 = cy.extension("layout", name); + if (Layout2 == null) { + error("No such layout `" + name + "` found. Did you forget to import it and `cytoscape.use()` it?"); + return; } - return result; - } - __name(create4, "create"); - CreateFile2.create = create4; - function is2(value2) { - let candidate = value2; - return candidate && candidate.kind === "create" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId)); - } - __name(is2, "is"); - CreateFile2.is = is2; - })(CreateFile || (CreateFile = {})); - (function(RenameFile2) { - function create4(oldUri, newUri, options3, annotation) { - let result = { - kind: "rename", - oldUri, - newUri - }; - if (options3 !== void 0 && (options3.overwrite !== void 0 || options3.ignoreIfExists !== void 0)) { - result.options = options3; + var eles; + if (string(options2.eles)) { + eles = cy.$(options2.eles); + } else { + eles = options2.eles != null ? options2.eles : cy.$(); } - if (annotation !== void 0) { - result.annotationId = annotation; + var layout6 = new Layout2(extend4({}, options2, { + cy, + eles + })); + return layout6; + }, "layout") + }; + corefn$6.createLayout = corefn$6.makeLayout = corefn$6.layout; + corefn$5 = { + notify: /* @__PURE__ */ __name(function notify(eventName, eventEles) { + var _p = this._private; + if (this.batching()) { + _p.batchNotifications = _p.batchNotifications || {}; + var eles = _p.batchNotifications[eventName] = _p.batchNotifications[eventName] || this.collection(); + if (eventEles != null) { + eles.merge(eventEles); + } + return; } - return result; - } - __name(create4, "create"); - RenameFile2.create = create4; - function is2(value2) { - let candidate = value2; - return candidate && candidate.kind === "rename" && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId)); - } - __name(is2, "is"); - RenameFile2.is = is2; - })(RenameFile || (RenameFile = {})); - (function(DeleteFile2) { - function create4(uri, options3, annotation) { - let result = { - kind: "delete", - uri - }; - if (options3 !== void 0 && (options3.recursive !== void 0 || options3.ignoreIfNotExists !== void 0)) { - result.options = options3; + if (!_p.notificationsEnabled) { + return; } - if (annotation !== void 0) { - result.annotationId = annotation; + var renderer10 = this.renderer(); + if (this.destroyed() || !renderer10) { + return; } - return result; - } - __name(create4, "create"); - DeleteFile2.create = create4; - function is2(value2) { - let candidate = value2; - return candidate && candidate.kind === "delete" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId)); - } - __name(is2, "is"); - DeleteFile2.is = is2; - })(DeleteFile || (DeleteFile = {})); - (function(WorkspaceEdit2) { - function is2(value2) { - let candidate = value2; - return candidate && (candidate.changes !== void 0 || candidate.documentChanges !== void 0) && (candidate.documentChanges === void 0 || candidate.documentChanges.every((change2) => { - if (Is.string(change2.kind)) { - return CreateFile.is(change2) || RenameFile.is(change2) || DeleteFile.is(change2); - } else { - return TextDocumentEdit.is(change2); + renderer10.notify(eventName, eventEles); + }, "notify"), + notifications: /* @__PURE__ */ __name(function notifications(bool2) { + var p3 = this._private; + if (bool2 === void 0) { + return p3.notificationsEnabled; + } else { + p3.notificationsEnabled = bool2 ? true : false; + } + return this; + }, "notifications"), + noNotifications: /* @__PURE__ */ __name(function noNotifications(callback) { + this.notifications(false); + callback(); + this.notifications(true); + }, "noNotifications"), + batching: /* @__PURE__ */ __name(function batching() { + return this._private.batchCount > 0; + }, "batching"), + startBatch: /* @__PURE__ */ __name(function startBatch() { + var _p = this._private; + if (_p.batchCount == null) { + _p.batchCount = 0; + } + if (_p.batchCount === 0) { + _p.batchStyleEles = this.collection(); + _p.batchNotifications = {}; + } + _p.batchCount++; + return this; + }, "startBatch"), + endBatch: /* @__PURE__ */ __name(function endBatch() { + var _p = this._private; + if (_p.batchCount === 0) { + return this; + } + _p.batchCount--; + if (_p.batchCount === 0) { + _p.batchStyleEles.updateStyle(); + var renderer10 = this.renderer(); + Object.keys(_p.batchNotifications).forEach(function(eventName) { + var eles = _p.batchNotifications[eventName]; + if (eles.empty()) { + renderer10.notify(eventName); + } else { + renderer10.notify(eventName, eles); + } + }); + } + return this; + }, "endBatch"), + batch: /* @__PURE__ */ __name(function batch(callback) { + this.startBatch(); + callback(); + this.endBatch(); + return this; + }, "batch"), + // for backwards compatibility + batchData: /* @__PURE__ */ __name(function batchData(map5) { + var cy = this; + return this.batch(function() { + var ids = Object.keys(map5); + for (var i2 = 0; i2 < ids.length; i2++) { + var id30 = ids[i2]; + var data5 = map5[id30]; + var ele = cy.getElementById(id30); + ele.data(data5); } - })); - } - __name(is2, "is"); - WorkspaceEdit2.is = is2; - })(WorkspaceEdit || (WorkspaceEdit = {})); - (function(TextDocumentIdentifier2) { - function create4(uri) { - return { uri }; - } - __name(create4, "create"); - TextDocumentIdentifier2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && Is.string(candidate.uri); - } - __name(is2, "is"); - TextDocumentIdentifier2.is = is2; - })(TextDocumentIdentifier || (TextDocumentIdentifier = {})); - (function(VersionedTextDocumentIdentifier2) { - function create4(uri, version2) { - return { uri, version: version2 }; - } - __name(create4, "create"); - VersionedTextDocumentIdentifier2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version); - } - __name(is2, "is"); - VersionedTextDocumentIdentifier2.is = is2; - })(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {})); - (function(OptionalVersionedTextDocumentIdentifier2) { - function create4(uri, version2) { - return { uri, version: version2 }; - } - __name(create4, "create"); - OptionalVersionedTextDocumentIdentifier2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version)); - } - __name(is2, "is"); - OptionalVersionedTextDocumentIdentifier2.is = is2; - })(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {})); - (function(TextDocumentItem2) { - function create4(uri, languageId, version2, text4) { - return { uri, languageId, version: version2, text: text4 }; - } - __name(create4, "create"); - TextDocumentItem2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text); - } - __name(is2, "is"); - TextDocumentItem2.is = is2; - })(TextDocumentItem || (TextDocumentItem = {})); - (function(MarkupKind2) { - MarkupKind2.PlainText = "plaintext"; - MarkupKind2.Markdown = "markdown"; - function is2(value2) { - const candidate = value2; - return candidate === MarkupKind2.PlainText || candidate === MarkupKind2.Markdown; - } - __name(is2, "is"); - MarkupKind2.is = is2; - })(MarkupKind || (MarkupKind = {})); - (function(MarkupContent2) { - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(value2) && MarkupKind.is(candidate.kind) && Is.string(candidate.value); - } - __name(is2, "is"); - MarkupContent2.is = is2; - })(MarkupContent || (MarkupContent = {})); - (function(CompletionItemKind2) { - CompletionItemKind2.Text = 1; - CompletionItemKind2.Method = 2; - CompletionItemKind2.Function = 3; - CompletionItemKind2.Constructor = 4; - CompletionItemKind2.Field = 5; - CompletionItemKind2.Variable = 6; - CompletionItemKind2.Class = 7; - CompletionItemKind2.Interface = 8; - CompletionItemKind2.Module = 9; - CompletionItemKind2.Property = 10; - CompletionItemKind2.Unit = 11; - CompletionItemKind2.Value = 12; - CompletionItemKind2.Enum = 13; - CompletionItemKind2.Keyword = 14; - CompletionItemKind2.Snippet = 15; - CompletionItemKind2.Color = 16; - CompletionItemKind2.File = 17; - CompletionItemKind2.Reference = 18; - CompletionItemKind2.Folder = 19; - CompletionItemKind2.EnumMember = 20; - CompletionItemKind2.Constant = 21; - CompletionItemKind2.Struct = 22; - CompletionItemKind2.Event = 23; - CompletionItemKind2.Operator = 24; - CompletionItemKind2.TypeParameter = 25; - })(CompletionItemKind || (CompletionItemKind = {})); - (function(InsertTextFormat2) { - InsertTextFormat2.PlainText = 1; - InsertTextFormat2.Snippet = 2; - })(InsertTextFormat || (InsertTextFormat = {})); - (function(CompletionItemTag2) { - CompletionItemTag2.Deprecated = 1; - })(CompletionItemTag || (CompletionItemTag = {})); - (function(InsertReplaceEdit2) { - function create4(newText, insert, replace2) { - return { newText, insert, replace: replace2 }; - } - __name(create4, "create"); - InsertReplaceEdit2.create = create4; - function is2(value2) { - const candidate = value2; - return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace); - } - __name(is2, "is"); - InsertReplaceEdit2.is = is2; - })(InsertReplaceEdit || (InsertReplaceEdit = {})); - (function(InsertTextMode2) { - InsertTextMode2.asIs = 1; - InsertTextMode2.adjustIndentation = 2; - })(InsertTextMode || (InsertTextMode = {})); - (function(CompletionItemLabelDetails2) { - function is2(value2) { - const candidate = value2; - return candidate && (Is.string(candidate.detail) || candidate.detail === void 0) && (Is.string(candidate.description) || candidate.description === void 0); - } - __name(is2, "is"); - CompletionItemLabelDetails2.is = is2; - })(CompletionItemLabelDetails || (CompletionItemLabelDetails = {})); - (function(CompletionItem2) { - function create4(label) { - return { label }; - } - __name(create4, "create"); - CompletionItem2.create = create4; - })(CompletionItem || (CompletionItem = {})); - (function(CompletionList2) { - function create4(items, isIncomplete) { - return { items: items ? items : [], isIncomplete: !!isIncomplete }; + }); + }, "batchData") + }; + rendererDefaults = defaults$g({ + hideEdgesOnViewport: false, + textureOnViewport: false, + motionBlur: false, + motionBlurOpacity: 0.05, + pixelRatio: void 0, + desktopTapThreshold: 4, + touchTapThreshold: 8, + wheelSensitivity: 1, + debug: false, + showFps: false, + // webgl options + webgl: false, + webglDebug: false, + webglDebugShowAtlases: false, + // defaults good for mobile + webglTexSize: 2048, + webglTexRows: 36, + webglTexRowsNodes: 18, + webglBatchSize: 2048, + webglTexPerBatch: 14, + webglBgColor: [255, 255, 255] + }); + corefn$4 = { + renderTo: /* @__PURE__ */ __name(function renderTo(context, zoom2, pan2, pxRatio) { + var r2 = this._private.renderer; + r2.renderTo(context, zoom2, pan2, pxRatio); + return this; + }, "renderTo"), + renderer: /* @__PURE__ */ __name(function renderer() { + return this._private.renderer; + }, "renderer"), + forceRender: /* @__PURE__ */ __name(function forceRender() { + this.notify("draw"); + return this; + }, "forceRender"), + resize: /* @__PURE__ */ __name(function resize() { + this.invalidateSize(); + this.emitAndNotify("resize"); + return this; + }, "resize"), + initRenderer: /* @__PURE__ */ __name(function initRenderer(options2) { + var cy = this; + var RendererProto = cy.extension("renderer", options2.name); + if (RendererProto == null) { + error("Can not initialise: No such renderer `".concat(options2.name, "` found. Did you forget to import it and `cytoscape.use()` it?")); + return; + } + if (options2.wheelSensitivity !== void 0) { + warn("You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine."); + } + var rOpts = rendererDefaults(options2); + rOpts.cy = cy; + cy._private.renderer = new RendererProto(rOpts); + this.notify("init"); + }, "initRenderer"), + destroyRenderer: /* @__PURE__ */ __name(function destroyRenderer() { + var cy = this; + cy.notify("destroy"); + var domEle = cy.container(); + if (domEle) { + domEle._cyreg = null; + while (domEle.childNodes.length > 0) { + domEle.removeChild(domEle.childNodes[0]); + } + } + cy._private.renderer = null; + cy.mutableElements().forEach(function(ele) { + var _p = ele._private; + _p.rscratch = {}; + _p.rstyle = {}; + _p.animation.current = []; + _p.animation.queue = []; + }); + }, "destroyRenderer"), + onRender: /* @__PURE__ */ __name(function onRender(fn3) { + return this.on("render", fn3); + }, "onRender"), + offRender: /* @__PURE__ */ __name(function offRender(fn3) { + return this.off("render", fn3); + }, "offRender") + }; + corefn$4.invalidateDimensions = corefn$4.resize; + corefn$3 = { + // get a collection + // - empty collection on no args + // - collection of elements in the graph on selector arg + // - guarantee a returned collection when elements or collection specified + collection: /* @__PURE__ */ __name(function collection3(eles, opts) { + if (string(eles)) { + return this.$(eles); + } else if (elementOrCollection(eles)) { + return eles.collection(); + } else if (array2(eles)) { + if (!opts) { + opts = {}; + } + return new Collection(this, eles, opts.unique, opts.removed); + } + return new Collection(this); + }, "collection"), + nodes: /* @__PURE__ */ __name(function nodes2(selector) { + var nodes5 = this.$(function(ele) { + return ele.isNode(); + }); + if (selector) { + return nodes5.filter(selector); + } + return nodes5; + }, "nodes"), + edges: /* @__PURE__ */ __name(function edges2(selector) { + var edges3 = this.$(function(ele) { + return ele.isEdge(); + }); + if (selector) { + return edges3.filter(selector); + } + return edges3; + }, "edges"), + // search the graph like jQuery + $: /* @__PURE__ */ __name(function $3(selector) { + var eles = this._private.elements; + if (selector) { + return eles.filter(selector); + } else { + return eles.spawnSelf(); + } + }, "$"), + mutableElements: /* @__PURE__ */ __name(function mutableElements() { + return this._private.elements; + }, "mutableElements") + }; + corefn$3.elements = corefn$3.filter = corefn$3.$; + styfn$8 = {}; + TRUE = "t"; + FALSE = "f"; + styfn$8.apply = function(eles) { + var self2 = this; + var _p = self2._private; + var cy = _p.cy; + var updatedEles = cy.collection(); + for (var ie2 = 0; ie2 < eles.length; ie2++) { + var ele = eles[ie2]; + var cxtMeta = self2.getContextMeta(ele); + if (cxtMeta.empty) { + continue; + } + var cxtStyle = self2.getContextStyle(cxtMeta); + var app = self2.applyContextStyle(cxtMeta, cxtStyle, ele); + if (ele._private.appliedInitStyle) { + self2.updateTransitions(ele, app.diffProps); + } else { + ele._private.appliedInitStyle = true; + } + var hintsDiff = self2.updateStyleHints(ele); + if (hintsDiff) { + updatedEles.push(ele); + } } - __name(create4, "create"); - CompletionList2.create = create4; - })(CompletionList || (CompletionList = {})); - (function(MarkedString2) { - function fromPlainText(plainText) { - return plainText.replace(/[\\`*_{}[\]()#+\-.!]/g, "\\$&"); + return updatedEles; + }; + styfn$8.getPropertiesDiff = function(oldCxtKey, newCxtKey) { + var self2 = this; + var cache3 = self2._private.propDiffs = self2._private.propDiffs || {}; + var dualCxtKey = oldCxtKey + "-" + newCxtKey; + var cachedVal = cache3[dualCxtKey]; + if (cachedVal) { + return cachedVal; } - __name(fromPlainText, "fromPlainText"); - MarkedString2.fromPlainText = fromPlainText; - function is2(value2) { - const candidate = value2; - return Is.string(candidate) || Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value); + var diffProps = []; + var addedProp = {}; + for (var i2 = 0; i2 < self2.length; i2++) { + var cxt = self2[i2]; + var oldHasCxt = oldCxtKey[i2] === TRUE; + var newHasCxt = newCxtKey[i2] === TRUE; + var cxtHasDiffed = oldHasCxt !== newHasCxt; + var cxtHasMappedProps = cxt.mappedProperties.length > 0; + if (cxtHasDiffed || newHasCxt && cxtHasMappedProps) { + var props = void 0; + if (cxtHasDiffed && cxtHasMappedProps) { + props = cxt.properties; + } else if (cxtHasDiffed) { + props = cxt.properties; + } else if (cxtHasMappedProps) { + props = cxt.mappedProperties; + } + for (var j3 = 0; j3 < props.length; j3++) { + var prop = props[j3]; + var name = prop.name; + var laterCxtOverrides = false; + for (var k2 = i2 + 1; k2 < self2.length; k2++) { + var laterCxt = self2[k2]; + var hasLaterCxt = newCxtKey[k2] === TRUE; + if (!hasLaterCxt) { + continue; + } + laterCxtOverrides = laterCxt.properties[prop.name] != null; + if (laterCxtOverrides) { + break; + } + } + if (!addedProp[name] && !laterCxtOverrides) { + addedProp[name] = true; + diffProps.push(name); + } + } + } } - __name(is2, "is"); - MarkedString2.is = is2; - })(MarkedString || (MarkedString = {})); - (function(Hover2) { - function is2(value2) { - let candidate = value2; - return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) || MarkedString.is(candidate.contents) || Is.typedArray(candidate.contents, MarkedString.is)) && (value2.range === void 0 || Range.is(value2.range)); + cache3[dualCxtKey] = diffProps; + return diffProps; + }; + styfn$8.getContextMeta = function(ele) { + var self2 = this; + var cxtKey = ""; + var diffProps; + var prevKey = ele._private.styleCxtKey || ""; + for (var i2 = 0; i2 < self2.length; i2++) { + var context = self2[i2]; + var contextSelectorMatches = context.selector && context.selector.matches(ele); + if (contextSelectorMatches) { + cxtKey += TRUE; + } else { + cxtKey += FALSE; + } } - __name(is2, "is"); - Hover2.is = is2; - })(Hover || (Hover = {})); - (function(ParameterInformation2) { - function create4(label, documentation) { - return documentation ? { label, documentation } : { label }; + diffProps = self2.getPropertiesDiff(prevKey, cxtKey); + ele._private.styleCxtKey = cxtKey; + return { + key: cxtKey, + diffPropNames: diffProps, + empty: diffProps.length === 0 + }; + }; + styfn$8.getContextStyle = function(cxtMeta) { + var cxtKey = cxtMeta.key; + var self2 = this; + var cxtStyles = this._private.contextStyles = this._private.contextStyles || {}; + if (cxtStyles[cxtKey]) { + return cxtStyles[cxtKey]; } - __name(create4, "create"); - ParameterInformation2.create = create4; - })(ParameterInformation || (ParameterInformation = {})); - (function(SignatureInformation2) { - function create4(label, documentation, ...parameters) { - let result = { label }; - if (Is.defined(documentation)) { - result.documentation = documentation; + var style3 = { + _private: { + key: cxtKey } - if (Is.defined(parameters)) { - result.parameters = parameters; - } else { - result.parameters = []; + }; + for (var i2 = 0; i2 < self2.length; i2++) { + var cxt = self2[i2]; + var hasCxt = cxtKey[i2] === TRUE; + if (!hasCxt) { + continue; } - return result; - } - __name(create4, "create"); - SignatureInformation2.create = create4; - })(SignatureInformation || (SignatureInformation = {})); - (function(DocumentHighlightKind2) { - DocumentHighlightKind2.Text = 1; - DocumentHighlightKind2.Read = 2; - DocumentHighlightKind2.Write = 3; - })(DocumentHighlightKind || (DocumentHighlightKind = {})); - (function(DocumentHighlight2) { - function create4(range3, kind) { - let result = { range: range3 }; - if (Is.number(kind)) { - result.kind = kind; + for (var j3 = 0; j3 < cxt.properties.length; j3++) { + var prop = cxt.properties[j3]; + style3[prop.name] = prop; } - return result; } - __name(create4, "create"); - DocumentHighlight2.create = create4; - })(DocumentHighlight || (DocumentHighlight = {})); - (function(SymbolKind2) { - SymbolKind2.File = 1; - SymbolKind2.Module = 2; - SymbolKind2.Namespace = 3; - SymbolKind2.Package = 4; - SymbolKind2.Class = 5; - SymbolKind2.Method = 6; - SymbolKind2.Property = 7; - SymbolKind2.Field = 8; - SymbolKind2.Constructor = 9; - SymbolKind2.Enum = 10; - SymbolKind2.Interface = 11; - SymbolKind2.Function = 12; - SymbolKind2.Variable = 13; - SymbolKind2.Constant = 14; - SymbolKind2.String = 15; - SymbolKind2.Number = 16; - SymbolKind2.Boolean = 17; - SymbolKind2.Array = 18; - SymbolKind2.Object = 19; - SymbolKind2.Key = 20; - SymbolKind2.Null = 21; - SymbolKind2.EnumMember = 22; - SymbolKind2.Struct = 23; - SymbolKind2.Event = 24; - SymbolKind2.Operator = 25; - SymbolKind2.TypeParameter = 26; - })(SymbolKind || (SymbolKind = {})); - (function(SymbolTag2) { - SymbolTag2.Deprecated = 1; - })(SymbolTag || (SymbolTag = {})); - (function(SymbolInformation2) { - function create4(name, kind, range3, uri, containerName) { - let result = { - name, - kind, - location: { uri, range: range3 } - }; - if (containerName) { - result.containerName = containerName; + cxtStyles[cxtKey] = style3; + return style3; + }; + styfn$8.applyContextStyle = function(cxtMeta, cxtStyle, ele) { + var self2 = this; + var diffProps = cxtMeta.diffPropNames; + var retDiffProps = {}; + var types = self2.types; + for (var i2 = 0; i2 < diffProps.length; i2++) { + var diffPropName = diffProps[i2]; + var cxtProp = cxtStyle[diffPropName]; + var eleProp = ele.pstyle(diffPropName); + if (!cxtProp) { + if (!eleProp) { + continue; + } else if (eleProp.bypass) { + cxtProp = { + name: diffPropName, + deleteBypassed: true + }; + } else { + cxtProp = { + name: diffPropName, + "delete": true + }; + } } - return result; - } - __name(create4, "create"); - SymbolInformation2.create = create4; - })(SymbolInformation || (SymbolInformation = {})); - (function(WorkspaceSymbol2) { - function create4(name, kind, uri, range3) { - return range3 !== void 0 ? { name, kind, location: { uri, range: range3 } } : { name, kind, location: { uri } }; - } - __name(create4, "create"); - WorkspaceSymbol2.create = create4; - })(WorkspaceSymbol || (WorkspaceSymbol = {})); - (function(DocumentSymbol2) { - function create4(name, detail, kind, range3, selectionRange, children2) { - let result = { - name, - detail, - kind, - range: range3, - selectionRange + if (eleProp === cxtProp) { + continue; + } + if (cxtProp.mapped === types.fn && eleProp != null && eleProp.mapping != null && eleProp.mapping.value === cxtProp.value) { + var mapping = eleProp.mapping; + var fnValue = mapping.fnValue = cxtProp.value(ele); + if (fnValue === mapping.prevFnValue) { + continue; + } + } + var retDiffProp = retDiffProps[diffPropName] = { + prev: eleProp }; - if (children2 !== void 0) { - result.children = children2; + self2.applyParsedProperty(ele, cxtProp); + retDiffProp.next = ele.pstyle(diffPropName); + if (retDiffProp.next && retDiffProp.next.bypass) { + retDiffProp.next = retDiffProp.next.bypassed; } - return result; } - __name(create4, "create"); - DocumentSymbol2.create = create4; - function is2(value2) { - let candidate = value2; - return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range.is(candidate.range) && Range.is(candidate.selectionRange) && (candidate.detail === void 0 || Is.string(candidate.detail)) && (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) && (candidate.children === void 0 || Array.isArray(candidate.children)) && (candidate.tags === void 0 || Array.isArray(candidate.tags)); + return { + diffProps: retDiffProps + }; + }; + styfn$8.updateStyleHints = function(ele) { + var _p = ele._private; + var self2 = this; + var propNames = self2.propertyGroupNames; + var propGrKeys = self2.propertyGroupKeys; + var propHash = /* @__PURE__ */ __name(function propHash2(ele2, propNames2, seedKey) { + return self2.getPropertiesHash(ele2, propNames2, seedKey); + }, "propHash"); + var oldStyleKey = _p.styleKey; + if (ele.removed()) { + return false; } - __name(is2, "is"); - DocumentSymbol2.is = is2; - })(DocumentSymbol || (DocumentSymbol = {})); - (function(CodeActionKind2) { - CodeActionKind2.Empty = ""; - CodeActionKind2.QuickFix = "quickfix"; - CodeActionKind2.Refactor = "refactor"; - CodeActionKind2.RefactorExtract = "refactor.extract"; - CodeActionKind2.RefactorInline = "refactor.inline"; - CodeActionKind2.RefactorRewrite = "refactor.rewrite"; - CodeActionKind2.Source = "source"; - CodeActionKind2.SourceOrganizeImports = "source.organizeImports"; - CodeActionKind2.SourceFixAll = "source.fixAll"; - })(CodeActionKind || (CodeActionKind = {})); - (function(CodeActionTriggerKind2) { - CodeActionTriggerKind2.Invoked = 1; - CodeActionTriggerKind2.Automatic = 2; - })(CodeActionTriggerKind || (CodeActionTriggerKind = {})); - (function(CodeActionContext2) { - function create4(diagnostics, only, triggerKind) { - let result = { diagnostics }; - if (only !== void 0 && only !== null) { - result.only = only; + var isNode2 = _p.group === "nodes"; + var overriddenStyles = ele._private.style; + propNames = Object.keys(overriddenStyles); + for (var i2 = 0; i2 < propGrKeys.length; i2++) { + var grKey = propGrKeys[i2]; + _p.styleKeys[grKey] = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; + } + var updateGrKey1 = /* @__PURE__ */ __name(function updateGrKey12(val, grKey2) { + return _p.styleKeys[grKey2][0] = hashInt(val, _p.styleKeys[grKey2][0]); + }, "updateGrKey1"); + var updateGrKey2 = /* @__PURE__ */ __name(function updateGrKey22(val, grKey2) { + return _p.styleKeys[grKey2][1] = hashIntAlt(val, _p.styleKeys[grKey2][1]); + }, "updateGrKey2"); + var updateGrKey = /* @__PURE__ */ __name(function updateGrKey3(val, grKey2) { + updateGrKey1(val, grKey2); + updateGrKey2(val, grKey2); + }, "updateGrKey"); + var updateGrKeyWStr = /* @__PURE__ */ __name(function updateGrKeyWStr2(strVal, grKey2) { + for (var j3 = 0; j3 < strVal.length; j3++) { + var ch = strVal.charCodeAt(j3); + updateGrKey1(ch, grKey2); + updateGrKey2(ch, grKey2); } - if (triggerKind !== void 0 && triggerKind !== null) { - result.triggerKind = triggerKind; + }, "updateGrKeyWStr"); + var N3 = 2e9; + var cleanNum = /* @__PURE__ */ __name(function cleanNum2(val) { + return -128 < val && val < 128 && Math.floor(val) !== val ? N3 - (val * 1024 | 0) : val; + }, "cleanNum"); + for (var _i = 0; _i < propNames.length; _i++) { + var name = propNames[_i]; + var parsedProp = overriddenStyles[name]; + if (parsedProp == null) { + continue; } - return result; - } - __name(create4, "create"); - CodeActionContext2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string)) && (candidate.triggerKind === void 0 || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic); - } - __name(is2, "is"); - CodeActionContext2.is = is2; - })(CodeActionContext || (CodeActionContext = {})); - (function(CodeAction2) { - function create4(title2, kindOrCommandOrEdit, kind) { - let result = { title: title2 }; - let checkKind = true; - if (typeof kindOrCommandOrEdit === "string") { - checkKind = false; - result.kind = kindOrCommandOrEdit; - } else if (Command.is(kindOrCommandOrEdit)) { - result.command = kindOrCommandOrEdit; - } else { - result.edit = kindOrCommandOrEdit; + var propInfo = this.properties[name]; + var type3 = propInfo.type; + var _grKey = propInfo.groupKey; + var normalizedNumberVal = void 0; + if (propInfo.hashOverride != null) { + normalizedNumberVal = propInfo.hashOverride(ele, parsedProp); + } else if (parsedProp.pfValue != null) { + normalizedNumberVal = parsedProp.pfValue; } - if (checkKind && kind !== void 0) { - result.kind = kind; + var numberVal = propInfo.enums == null ? parsedProp.value : null; + var haveNormNum = normalizedNumberVal != null; + var haveUnitedNum = numberVal != null; + var haveNum = haveNormNum || haveUnitedNum; + var units = parsedProp.units; + if (type3.number && haveNum && !type3.multiple) { + var v3 = haveNormNum ? normalizedNumberVal : numberVal; + updateGrKey(cleanNum(v3), _grKey); + if (!haveNormNum && units != null) { + updateGrKeyWStr(units, _grKey); + } + } else { + updateGrKeyWStr(parsedProp.strValue, _grKey); } - return result; } - __name(create4, "create"); - CodeAction2.create = create4; - function is2(value2) { - let candidate = value2; - return candidate && Is.string(candidate.title) && (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && (candidate.kind === void 0 || Is.string(candidate.kind)) && (candidate.edit !== void 0 || candidate.command !== void 0) && (candidate.command === void 0 || Command.is(candidate.command)) && (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) && (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit)); + var hash = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; + for (var _i2 = 0; _i2 < propGrKeys.length; _i2++) { + var _grKey2 = propGrKeys[_i2]; + var grHash = _p.styleKeys[_grKey2]; + hash[0] = hashInt(grHash[0], hash[0]); + hash[1] = hashIntAlt(grHash[1], hash[1]); } - __name(is2, "is"); - CodeAction2.is = is2; - })(CodeAction || (CodeAction = {})); - (function(CodeLens2) { - function create4(range3, data6) { - let result = { range: range3 }; - if (Is.defined(data6)) { - result.data = data6; - } - return result; + _p.styleKey = combineHashes(hash[0], hash[1]); + var sk = _p.styleKeys; + _p.labelDimsKey = combineHashesArray(sk.labelDimensions); + var labelKeys = propHash(ele, ["label"], sk.labelDimensions); + _p.labelKey = combineHashesArray(labelKeys); + _p.labelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, labelKeys)); + if (!isNode2) { + var sourceLabelKeys = propHash(ele, ["source-label"], sk.labelDimensions); + _p.sourceLabelKey = combineHashesArray(sourceLabelKeys); + _p.sourceLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, sourceLabelKeys)); + var targetLabelKeys = propHash(ele, ["target-label"], sk.labelDimensions); + _p.targetLabelKey = combineHashesArray(targetLabelKeys); + _p.targetLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, targetLabelKeys)); } - __name(create4, "create"); - CodeLens2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command)); + if (isNode2) { + var _p$styleKeys = _p.styleKeys, nodeBody = _p$styleKeys.nodeBody, nodeBorder = _p$styleKeys.nodeBorder, nodeOutline = _p$styleKeys.nodeOutline, backgroundImage = _p$styleKeys.backgroundImage, compound = _p$styleKeys.compound, pie2 = _p$styleKeys.pie, stripe = _p$styleKeys.stripe; + var nodeKeys = [nodeBody, nodeBorder, nodeOutline, backgroundImage, compound, pie2, stripe].filter(function(k2) { + return k2 != null; + }).reduce(hashArrays, [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]); + _p.nodeKey = combineHashesArray(nodeKeys); + _p.hasPie = pie2 != null && pie2[0] !== DEFAULT_HASH_SEED && pie2[1] !== DEFAULT_HASH_SEED_ALT; + _p.hasStripe = stripe != null && stripe[0] !== DEFAULT_HASH_SEED && stripe[1] !== DEFAULT_HASH_SEED_ALT; } - __name(is2, "is"); - CodeLens2.is = is2; - })(CodeLens || (CodeLens = {})); - (function(FormattingOptions2) { - function create4(tabSize, insertSpaces) { - return { tabSize, insertSpaces }; - } - __name(create4, "create"); - FormattingOptions2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces); - } - __name(is2, "is"); - FormattingOptions2.is = is2; - })(FormattingOptions || (FormattingOptions = {})); - (function(DocumentLink2) { - function create4(range3, target, data6) { - return { range: range3, target, data: data6 }; - } - __name(create4, "create"); - DocumentLink2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target)); - } - __name(is2, "is"); - DocumentLink2.is = is2; - })(DocumentLink || (DocumentLink = {})); - (function(SelectionRange2) { - function create4(range3, parent4) { - return { range: range3, parent: parent4 }; - } - __name(create4, "create"); - SelectionRange2.create = create4; - function is2(value2) { - let candidate = value2; - return Is.objectLiteral(candidate) && Range.is(candidate.range) && (candidate.parent === void 0 || SelectionRange2.is(candidate.parent)); - } - __name(is2, "is"); - SelectionRange2.is = is2; - })(SelectionRange || (SelectionRange = {})); - (function(SemanticTokenTypes2) { - SemanticTokenTypes2["namespace"] = "namespace"; - SemanticTokenTypes2["type"] = "type"; - SemanticTokenTypes2["class"] = "class"; - SemanticTokenTypes2["enum"] = "enum"; - SemanticTokenTypes2["interface"] = "interface"; - SemanticTokenTypes2["struct"] = "struct"; - SemanticTokenTypes2["typeParameter"] = "typeParameter"; - SemanticTokenTypes2["parameter"] = "parameter"; - SemanticTokenTypes2["variable"] = "variable"; - SemanticTokenTypes2["property"] = "property"; - SemanticTokenTypes2["enumMember"] = "enumMember"; - SemanticTokenTypes2["event"] = "event"; - SemanticTokenTypes2["function"] = "function"; - SemanticTokenTypes2["method"] = "method"; - SemanticTokenTypes2["macro"] = "macro"; - SemanticTokenTypes2["keyword"] = "keyword"; - SemanticTokenTypes2["modifier"] = "modifier"; - SemanticTokenTypes2["comment"] = "comment"; - SemanticTokenTypes2["string"] = "string"; - SemanticTokenTypes2["number"] = "number"; - SemanticTokenTypes2["regexp"] = "regexp"; - SemanticTokenTypes2["operator"] = "operator"; - SemanticTokenTypes2["decorator"] = "decorator"; - })(SemanticTokenTypes || (SemanticTokenTypes = {})); - (function(SemanticTokenModifiers2) { - SemanticTokenModifiers2["declaration"] = "declaration"; - SemanticTokenModifiers2["definition"] = "definition"; - SemanticTokenModifiers2["readonly"] = "readonly"; - SemanticTokenModifiers2["static"] = "static"; - SemanticTokenModifiers2["deprecated"] = "deprecated"; - SemanticTokenModifiers2["abstract"] = "abstract"; - SemanticTokenModifiers2["async"] = "async"; - SemanticTokenModifiers2["modification"] = "modification"; - SemanticTokenModifiers2["documentation"] = "documentation"; - SemanticTokenModifiers2["defaultLibrary"] = "defaultLibrary"; - })(SemanticTokenModifiers || (SemanticTokenModifiers = {})); - (function(SemanticTokens2) { - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(candidate) && (candidate.resultId === void 0 || typeof candidate.resultId === "string") && Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === "number"); - } - __name(is2, "is"); - SemanticTokens2.is = is2; - })(SemanticTokens || (SemanticTokens = {})); - (function(InlineValueText2) { - function create4(range3, text4) { - return { range: range3, text: text4 }; - } - __name(create4, "create"); - InlineValueText2.create = create4; - function is2(value2) { - const candidate = value2; - return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text); - } - __name(is2, "is"); - InlineValueText2.is = is2; - })(InlineValueText || (InlineValueText = {})); - (function(InlineValueVariableLookup2) { - function create4(range3, variableName, caseSensitiveLookup) { - return { range: range3, variableName, caseSensitiveLookup }; - } - __name(create4, "create"); - InlineValueVariableLookup2.create = create4; - function is2(value2) { - const candidate = value2; - return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup) && (Is.string(candidate.variableName) || candidate.variableName === void 0); - } - __name(is2, "is"); - InlineValueVariableLookup2.is = is2; - })(InlineValueVariableLookup || (InlineValueVariableLookup = {})); - (function(InlineValueEvaluatableExpression2) { - function create4(range3, expression) { - return { range: range3, expression }; - } - __name(create4, "create"); - InlineValueEvaluatableExpression2.create = create4; - function is2(value2) { - const candidate = value2; - return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && (Is.string(candidate.expression) || candidate.expression === void 0); - } - __name(is2, "is"); - InlineValueEvaluatableExpression2.is = is2; - })(InlineValueEvaluatableExpression || (InlineValueEvaluatableExpression = {})); - (function(InlineValueContext2) { - function create4(frameId, stoppedLocation) { - return { frameId, stoppedLocation }; - } - __name(create4, "create"); - InlineValueContext2.create = create4; - function is2(value2) { - const candidate = value2; - return Is.defined(candidate) && Range.is(value2.stoppedLocation); - } - __name(is2, "is"); - InlineValueContext2.is = is2; - })(InlineValueContext || (InlineValueContext = {})); - (function(InlayHintKind2) { - InlayHintKind2.Type = 1; - InlayHintKind2.Parameter = 2; - function is2(value2) { - return value2 === 1 || value2 === 2; - } - __name(is2, "is"); - InlayHintKind2.is = is2; - })(InlayHintKind || (InlayHintKind = {})); - (function(InlayHintLabelPart2) { - function create4(value2) { - return { value: value2 }; - } - __name(create4, "create"); - InlayHintLabelPart2.create = create4; - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(candidate) && (candidate.tooltip === void 0 || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.location === void 0 || Location.is(candidate.location)) && (candidate.command === void 0 || Command.is(candidate.command)); - } - __name(is2, "is"); - InlayHintLabelPart2.is = is2; - })(InlayHintLabelPart || (InlayHintLabelPart = {})); - (function(InlayHint2) { - function create4(position5, label, kind) { - const result = { position: position5, label }; - if (kind !== void 0) { - result.kind = kind; + return oldStyleKey !== _p.styleKey; + }; + styfn$8.clearStyleHints = function(ele) { + var _p = ele._private; + _p.styleCxtKey = ""; + _p.styleKeys = {}; + _p.styleKey = null; + _p.labelKey = null; + _p.labelStyleKey = null; + _p.sourceLabelKey = null; + _p.sourceLabelStyleKey = null; + _p.targetLabelKey = null; + _p.targetLabelStyleKey = null; + _p.nodeKey = null; + _p.hasPie = null; + _p.hasStripe = null; + }; + styfn$8.applyParsedProperty = function(ele, parsedProp) { + var self2 = this; + var prop = parsedProp; + var style3 = ele._private.style; + var flatProp; + var types = self2.types; + var type3 = self2.properties[prop.name].type; + var propIsBypass = prop.bypass; + var origProp = style3[prop.name]; + var origPropIsBypass = origProp && origProp.bypass; + var _p = ele._private; + var flatPropMapping = "mapping"; + var getVal = /* @__PURE__ */ __name(function getVal2(p3) { + if (p3 == null) { + return null; + } else if (p3.pfValue != null) { + return p3.pfValue; + } else { + return p3.value; } - return result; - } - __name(create4, "create"); - InlayHint2.create = create4; - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(candidate) && Position.is(candidate.position) && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is)) && (candidate.kind === void 0 || InlayHintKind.is(candidate.kind)) && candidate.textEdits === void 0 || Is.typedArray(candidate.textEdits, TextEdit.is) && (candidate.tooltip === void 0 || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.paddingLeft === void 0 || Is.boolean(candidate.paddingLeft)) && (candidate.paddingRight === void 0 || Is.boolean(candidate.paddingRight)); - } - __name(is2, "is"); - InlayHint2.is = is2; - })(InlayHint || (InlayHint = {})); - (function(StringValue2) { - function createSnippet(value2) { - return { kind: "snippet", value: value2 }; - } - __name(createSnippet, "createSnippet"); - StringValue2.createSnippet = createSnippet; - })(StringValue || (StringValue = {})); - (function(InlineCompletionItem2) { - function create4(insertText, filterText, range3, command) { - return { insertText, filterText, range: range3, command }; - } - __name(create4, "create"); - InlineCompletionItem2.create = create4; - })(InlineCompletionItem || (InlineCompletionItem = {})); - (function(InlineCompletionList2) { - function create4(items) { - return { items }; - } - __name(create4, "create"); - InlineCompletionList2.create = create4; - })(InlineCompletionList || (InlineCompletionList = {})); - (function(InlineCompletionTriggerKind2) { - InlineCompletionTriggerKind2.Invoked = 0; - InlineCompletionTriggerKind2.Automatic = 1; - })(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {})); - (function(SelectedCompletionInfo2) { - function create4(range3, text4) { - return { range: range3, text: text4 }; - } - __name(create4, "create"); - SelectedCompletionInfo2.create = create4; - })(SelectedCompletionInfo || (SelectedCompletionInfo = {})); - (function(InlineCompletionContext2) { - function create4(triggerKind, selectedCompletionInfo) { - return { triggerKind, selectedCompletionInfo }; + }, "getVal"); + var checkTriggers = /* @__PURE__ */ __name(function checkTriggers2() { + var fromVal = getVal(origProp); + var toVal = getVal(prop); + self2.checkTriggers(ele, prop.name, fromVal, toVal); + }, "checkTriggers"); + if (parsedProp.name === "curve-style" && ele.isEdge() && // loops must be bundled beziers + (parsedProp.value !== "bezier" && ele.isLoop() || // edges connected to compound nodes can not be haystacks + parsedProp.value === "haystack" && (ele.source().isParent() || ele.target().isParent()))) { + prop = parsedProp = this.parse(parsedProp.name, "bezier", propIsBypass); } - __name(create4, "create"); - InlineCompletionContext2.create = create4; - })(InlineCompletionContext || (InlineCompletionContext = {})); - (function(WorkspaceFolder2) { - function is2(value2) { - const candidate = value2; - return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name); + if (prop["delete"]) { + style3[prop.name] = void 0; + checkTriggers(); + return true; } - __name(is2, "is"); - WorkspaceFolder2.is = is2; - })(WorkspaceFolder || (WorkspaceFolder = {})); - (function(TextDocument3) { - function create4(uri, languageId, version2, content) { - return new FullTextDocument(uri, languageId, version2, content); + if (prop.deleteBypassed) { + if (!origProp) { + checkTriggers(); + return true; + } else if (origProp.bypass) { + origProp.bypassed = void 0; + checkTriggers(); + return true; + } else { + return false; + } } - __name(create4, "create"); - TextDocument3.create = create4; - function is2(value2) { - let candidate = value2; - return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false; + if (prop.deleteBypass) { + if (!origProp) { + checkTriggers(); + return true; + } else if (origProp.bypass) { + style3[prop.name] = origProp.bypassed; + checkTriggers(); + return true; + } else { + return false; + } } - __name(is2, "is"); - TextDocument3.is = is2; - function applyEdits(document2, edits) { - let text4 = document2.getText(); - let sortedEdits = mergeSort2(edits, (a2, b2) => { - let diff2 = a2.range.start.line - b2.range.start.line; - if (diff2 === 0) { - return a2.range.start.character - b2.range.start.character; + var printMappingErr = /* @__PURE__ */ __name(function printMappingErr2() { + warn("Do not assign mappings to elements without corresponding data (i.e. ele `" + ele.id() + "` has no mapping for property `" + prop.name + "` with data field `" + prop.field + "`); try a `[" + prop.field + "]` selector to limit scope to elements with `" + prop.field + "` defined"); + }, "printMappingErr"); + switch (prop.mapped) { + // flatten the property if mapped + case types.mapData: { + var fields = prop.field.split("."); + var fieldVal = _p.data; + for (var i2 = 0; i2 < fields.length && fieldVal; i2++) { + var field = fields[i2]; + fieldVal = fieldVal[field]; } - return diff2; - }); - let lastModifiedOffset = text4.length; - for (let i2 = sortedEdits.length - 1; i2 >= 0; i2--) { - let e3 = sortedEdits[i2]; - let startOffset = document2.offsetAt(e3.range.start); - let endOffset = document2.offsetAt(e3.range.end); - if (endOffset <= lastModifiedOffset) { - text4 = text4.substring(0, startOffset) + e3.newText + text4.substring(endOffset, text4.length); + if (fieldVal == null) { + printMappingErr(); + return false; + } + var percent; + if (!number$1(fieldVal)) { + warn("Do not use continuous mappers without specifying numeric data (i.e. `" + prop.field + ": " + fieldVal + "` for `" + ele.id() + "` is non-numeric)"); + return false; } else { - throw new Error("Overlapping edit"); + var fieldWidth = prop.fieldMax - prop.fieldMin; + if (fieldWidth === 0) { + percent = 0; + } else { + percent = (fieldVal - prop.fieldMin) / fieldWidth; + } } - lastModifiedOffset = startOffset; - } - return text4; - } - __name(applyEdits, "applyEdits"); - TextDocument3.applyEdits = applyEdits; - function mergeSort2(data6, compare) { - if (data6.length <= 1) { - return data6; - } - const p3 = data6.length / 2 | 0; - const left3 = data6.slice(0, p3); - const right3 = data6.slice(p3); - mergeSort2(left3, compare); - mergeSort2(right3, compare); - let leftIdx = 0; - let rightIdx = 0; - let i2 = 0; - while (leftIdx < left3.length && rightIdx < right3.length) { - let ret = compare(left3[leftIdx], right3[rightIdx]); - if (ret <= 0) { - data6[i2++] = left3[leftIdx++]; + if (percent < 0) { + percent = 0; + } else if (percent > 1) { + percent = 1; + } + if (type3.color) { + var r1 = prop.valueMin[0]; + var r2 = prop.valueMax[0]; + var g1 = prop.valueMin[1]; + var g2 = prop.valueMax[1]; + var b1 = prop.valueMin[2]; + var b22 = prop.valueMax[2]; + var a1 = prop.valueMin[3] == null ? 1 : prop.valueMin[3]; + var a2 = prop.valueMax[3] == null ? 1 : prop.valueMax[3]; + var clr = [Math.round(r1 + (r2 - r1) * percent), Math.round(g1 + (g2 - g1) * percent), Math.round(b1 + (b22 - b1) * percent), Math.round(a1 + (a2 - a1) * percent)]; + flatProp = { + // colours are simple, so just create the flat property instead of expensive string parsing + bypass: prop.bypass, + // we're a bypass if the mapping property is a bypass + name: prop.name, + value: clr, + strValue: "rgb(" + clr[0] + ", " + clr[1] + ", " + clr[2] + ")" + }; + } else if (type3.number) { + var calcValue = prop.valueMin + (prop.valueMax - prop.valueMin) * percent; + flatProp = this.parse(prop.name, calcValue, prop.bypass, flatPropMapping); } else { - data6[i2++] = right3[rightIdx++]; + return false; + } + if (!flatProp) { + printMappingErr(); + return false; } + flatProp.mapping = prop; + prop = flatProp; + break; } - while (leftIdx < left3.length) { - data6[i2++] = left3[leftIdx++]; + // direct mapping + case types.data: { + var _fields = prop.field.split("."); + var _fieldVal = _p.data; + for (var _i3 = 0; _i3 < _fields.length && _fieldVal; _i3++) { + var _field = _fields[_i3]; + _fieldVal = _fieldVal[_field]; + } + if (_fieldVal != null) { + flatProp = this.parse(prop.name, _fieldVal, prop.bypass, flatPropMapping); + } + if (!flatProp) { + printMappingErr(); + return false; + } + flatProp.mapping = prop; + prop = flatProp; + break; } - while (rightIdx < right3.length) { - data6[i2++] = right3[rightIdx++]; + case types.fn: { + var fn3 = prop.value; + var fnRetVal = prop.fnValue != null ? prop.fnValue : fn3(ele); + prop.prevFnValue = fnRetVal; + if (fnRetVal == null) { + warn("Custom function mappers may not return null (i.e. `" + prop.name + "` for ele `" + ele.id() + "` is null)"); + return false; + } + flatProp = this.parse(prop.name, fnRetVal, prop.bypass, flatPropMapping); + if (!flatProp) { + warn("Custom function mappers may not return invalid values for the property type (i.e. `" + prop.name + "` for ele `" + ele.id() + "` is invalid)"); + return false; + } + flatProp.mapping = copy3(prop); + prop = flatProp; + break; } - return data6; + case void 0: + break; + // just set the property + default: + return false; } - __name(mergeSort2, "mergeSort"); - })(TextDocument || (TextDocument = {})); - FullTextDocument = class { - static { - __name(this, "FullTextDocument"); + if (propIsBypass) { + if (origPropIsBypass) { + prop.bypassed = origProp.bypassed; + } else { + prop.bypassed = origProp; + } + style3[prop.name] = prop; + } else { + if (origPropIsBypass) { + origProp.bypassed = prop; + } else { + style3[prop.name] = prop; + } } - constructor(uri, languageId, version2, content) { - this._uri = uri; - this._languageId = languageId; - this._version = version2; - this._content = content; - this._lineOffsets = void 0; + checkTriggers(); + return true; + }; + styfn$8.cleanElements = function(eles, keepBypasses) { + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + this.clearStyleHints(ele); + ele.dirtyCompoundBoundsCache(); + ele.dirtyBoundingBoxCache(); + if (!keepBypasses) { + ele._private.style = {}; + } else { + var style3 = ele._private.style; + var propNames = Object.keys(style3); + for (var j3 = 0; j3 < propNames.length; j3++) { + var propName = propNames[j3]; + var eleProp = style3[propName]; + if (eleProp != null) { + if (eleProp.bypass) { + eleProp.bypassed = null; + } else { + style3[propName] = null; + } + } + } + } } - get uri() { - return this._uri; + }; + styfn$8.update = function() { + var cy = this._private.cy; + var eles = cy.mutableElements(); + eles.updateStyle(); + }; + styfn$8.updateTransitions = function(ele, diffProps) { + var self2 = this; + var _p = ele._private; + var props = ele.pstyle("transition-property").value; + var duration = ele.pstyle("transition-duration").pfValue; + var delay2 = ele.pstyle("transition-delay").pfValue; + if (props.length > 0 && duration > 0) { + var style3 = {}; + var anyPrev = false; + for (var i2 = 0; i2 < props.length; i2++) { + var prop = props[i2]; + var styProp = ele.pstyle(prop); + var diffProp = diffProps[prop]; + if (!diffProp) { + continue; + } + var prevProp = diffProp.prev; + var fromProp = prevProp; + var toProp = diffProp.next != null ? diffProp.next : styProp; + var diff2 = false; + var initVal = void 0; + var initDt = 1e-6; + if (!fromProp) { + continue; + } + if (number$1(fromProp.pfValue) && number$1(toProp.pfValue)) { + diff2 = toProp.pfValue - fromProp.pfValue; + initVal = fromProp.pfValue + initDt * diff2; + } else if (number$1(fromProp.value) && number$1(toProp.value)) { + diff2 = toProp.value - fromProp.value; + initVal = fromProp.value + initDt * diff2; + } else if (array2(fromProp.value) && array2(toProp.value)) { + diff2 = fromProp.value[0] !== toProp.value[0] || fromProp.value[1] !== toProp.value[1] || fromProp.value[2] !== toProp.value[2]; + initVal = fromProp.strValue; + } + if (diff2) { + style3[prop] = toProp.strValue; + this.applyBypass(ele, prop, initVal); + anyPrev = true; + } + } + if (!anyPrev) { + return; + } + _p.transitioning = true; + new Promise$1(function(resolve2) { + if (delay2 > 0) { + ele.delayAnimation(delay2).play().promise().then(resolve2); + } else { + resolve2(); + } + }).then(function() { + return ele.animation({ + style: style3, + duration, + easing: ele.pstyle("transition-timing-function").value, + queue: false + }).play().promise(); + }).then(function() { + self2.removeBypasses(ele, props); + ele.emitAndNotify("style"); + _p.transitioning = false; + }); + } else if (_p.transitioning) { + this.removeBypasses(ele, props); + ele.emitAndNotify("style"); + _p.transitioning = false; } - get languageId() { - return this._languageId; + }; + styfn$8.checkTrigger = function(ele, name, fromValue, toValue, getTrigger, onTrigger) { + var prop = this.properties[name]; + var triggerCheck = getTrigger(prop); + if (ele.removed()) { + return; } - get version() { - return this._version; + if (triggerCheck != null && triggerCheck(fromValue, toValue, ele)) { + onTrigger(prop); } - getText(range3) { - if (range3) { - let start3 = this.offsetAt(range3.start); - let end2 = this.offsetAt(range3.end); - return this._content.substring(start3, end2); + }; + styfn$8.checkZOrderTrigger = function(ele, name, fromValue, toValue) { + var _this = this; + this.checkTrigger(ele, name, fromValue, toValue, function(prop) { + return prop.triggersZOrder; + }, function() { + _this._private.cy.notify("zorder", ele); + }); + }; + styfn$8.checkBoundsTrigger = function(ele, name, fromValue, toValue) { + this.checkTrigger(ele, name, fromValue, toValue, function(prop) { + return prop.triggersBounds; + }, function(prop) { + ele.dirtyCompoundBoundsCache(); + ele.dirtyBoundingBoxCache(); + }); + }; + styfn$8.checkConnectedEdgesBoundsTrigger = function(ele, name, fromValue, toValue) { + this.checkTrigger(ele, name, fromValue, toValue, function(prop) { + return prop.triggersBoundsOfConnectedEdges; + }, function(prop) { + ele.connectedEdges().forEach(function(edge) { + edge.dirtyBoundingBoxCache(); + }); + }); + }; + styfn$8.checkParallelEdgesBoundsTrigger = function(ele, name, fromValue, toValue) { + this.checkTrigger(ele, name, fromValue, toValue, function(prop) { + return prop.triggersBoundsOfParallelEdges; + }, function(prop) { + ele.parallelEdges().forEach(function(pllEdge) { + pllEdge.dirtyBoundingBoxCache(); + }); + }); + }; + styfn$8.checkTriggers = function(ele, name, fromValue, toValue) { + ele.dirtyStyleCache(); + this.checkZOrderTrigger(ele, name, fromValue, toValue); + this.checkBoundsTrigger(ele, name, fromValue, toValue); + this.checkConnectedEdgesBoundsTrigger(ele, name, fromValue, toValue); + this.checkParallelEdgesBoundsTrigger(ele, name, fromValue, toValue); + }; + styfn$7 = {}; + styfn$7.applyBypass = function(eles, name, value2, updateTransitions) { + var self2 = this; + var props = []; + var isBypass = true; + if (name === "*" || name === "**") { + if (value2 !== void 0) { + for (var i2 = 0; i2 < self2.properties.length; i2++) { + var prop = self2.properties[i2]; + var _name = prop.name; + var parsedProp = this.parse(_name, value2, true); + if (parsedProp) { + props.push(parsedProp); + } + } } - return this._content; + } else if (string(name)) { + var _parsedProp = this.parse(name, value2, true); + if (_parsedProp) { + props.push(_parsedProp); + } + } else if (plainObject(name)) { + var specifiedProps = name; + updateTransitions = value2; + var names = Object.keys(specifiedProps); + for (var _i = 0; _i < names.length; _i++) { + var _name2 = names[_i]; + var _value = specifiedProps[_name2]; + if (_value === void 0) { + _value = specifiedProps[dash2camel(_name2)]; + } + if (_value !== void 0) { + var _parsedProp2 = this.parse(_name2, _value, true); + if (_parsedProp2) { + props.push(_parsedProp2); + } + } + } + } else { + return false; } - update(event3, version2) { - this._content = event3.text; - this._version = version2; - this._lineOffsets = void 0; + if (props.length === 0) { + return false; } - getLineOffsets() { - if (this._lineOffsets === void 0) { - let lineOffsets = []; - let text4 = this._content; - let isLineStart = true; - for (let i2 = 0; i2 < text4.length; i2++) { - if (isLineStart) { - lineOffsets.push(i2); - isLineStart = false; - } - let ch = text4.charAt(i2); - isLineStart = ch === "\r" || ch === "\n"; - if (ch === "\r" && i2 + 1 < text4.length && text4.charAt(i2 + 1) === "\n") { - i2++; - } + var ret = false; + for (var _i2 = 0; _i2 < eles.length; _i2++) { + var ele = eles[_i2]; + var diffProps = {}; + var diffProp = void 0; + for (var j3 = 0; j3 < props.length; j3++) { + var _prop = props[j3]; + if (updateTransitions) { + var prevProp = ele.pstyle(_prop.name); + diffProp = diffProps[_prop.name] = { + prev: prevProp + }; } - if (isLineStart && text4.length > 0) { - lineOffsets.push(text4.length); + ret = this.applyParsedProperty(ele, copy3(_prop)) || ret; + if (updateTransitions) { + diffProp.next = ele.pstyle(_prop.name); } - this._lineOffsets = lineOffsets; } - return this._lineOffsets; - } - positionAt(offset) { - offset = Math.max(Math.min(offset, this._content.length), 0); - let lineOffsets = this.getLineOffsets(); - let low = 0, high = lineOffsets.length; - if (high === 0) { - return Position.create(0, offset); + if (ret) { + this.updateStyleHints(ele); } - while (low < high) { - let mid = Math.floor((low + high) / 2); - if (lineOffsets[mid] > offset) { - high = mid; + if (updateTransitions) { + this.updateTransitions(ele, diffProps, isBypass); + } + } + return ret; + }; + styfn$7.overrideBypass = function(eles, name, value2) { + name = camel2dash(name); + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + var prop = ele._private.style[name]; + var type3 = this.properties[name].type; + var isColor = type3.color; + var isMulti = type3.mutiple; + var oldValue = !prop ? null : prop.pfValue != null ? prop.pfValue : prop.value; + if (!prop || !prop.bypass) { + this.applyBypass(ele, name, value2); + } else { + prop.value = value2; + if (prop.pfValue != null) { + prop.pfValue = value2; + } + if (isColor) { + prop.strValue = "rgb(" + value2.join(",") + ")"; + } else if (isMulti) { + prop.strValue = value2.join(" "); } else { - low = mid + 1; + prop.strValue = "" + value2; } + this.updateStyleHints(ele); } - let line2 = low - 1; - return Position.create(line2, offset - lineOffsets[line2]); + this.checkTriggers(ele, name, oldValue, value2); } - offsetAt(position5) { - let lineOffsets = this.getLineOffsets(); - if (position5.line >= lineOffsets.length) { - return this._content.length; - } else if (position5.line < 0) { - return 0; + }; + styfn$7.removeAllBypasses = function(eles, updateTransitions) { + return this.removeBypasses(eles, this.propertyNames, updateTransitions); + }; + styfn$7.removeBypasses = function(eles, props, updateTransitions) { + var isBypass = true; + for (var j3 = 0; j3 < eles.length; j3++) { + var ele = eles[j3]; + var diffProps = {}; + for (var i2 = 0; i2 < props.length; i2++) { + var name = props[i2]; + var prop = this.properties[name]; + var prevProp = ele.pstyle(prop.name); + if (!prevProp || !prevProp.bypass) { + continue; + } + var value2 = ""; + var parsedProp = this.parse(name, value2, true); + var diffProp = diffProps[prop.name] = { + prev: prevProp + }; + this.applyParsedProperty(ele, parsedProp); + diffProp.next = ele.pstyle(prop.name); + } + this.updateStyleHints(ele); + if (updateTransitions) { + this.updateTransitions(ele, diffProps, isBypass); } - let lineOffset = lineOffsets[position5.line]; - let nextLineOffset = position5.line + 1 < lineOffsets.length ? lineOffsets[position5.line + 1] : this._content.length; - return Math.max(Math.min(lineOffset + position5.character, nextLineOffset), lineOffset); - } - get lineCount() { - return this.getLineOffsets().length; } }; - (function(Is2) { - const toString6 = Object.prototype.toString; - function defined(value2) { - return typeof value2 !== "undefined"; - } - __name(defined, "defined"); - Is2.defined = defined; - function undefined2(value2) { - return typeof value2 === "undefined"; - } - __name(undefined2, "undefined"); - Is2.undefined = undefined2; - function boolean(value2) { - return value2 === true || value2 === false; - } - __name(boolean, "boolean"); - Is2.boolean = boolean; - function string3(value2) { - return toString6.call(value2) === "[object String]"; - } - __name(string3, "string"); - Is2.string = string3; - function number7(value2) { - return toString6.call(value2) === "[object Number]"; - } - __name(number7, "number"); - Is2.number = number7; - function numberRange(value2, min9, max10) { - return toString6.call(value2) === "[object Number]" && min9 <= value2 && value2 <= max10; - } - __name(numberRange, "numberRange"); - Is2.numberRange = numberRange; - function integer4(value2) { - return toString6.call(value2) === "[object Number]" && -2147483648 <= value2 && value2 <= 2147483647; - } - __name(integer4, "integer"); - Is2.integer = integer4; - function uinteger2(value2) { - return toString6.call(value2) === "[object Number]" && 0 <= value2 && value2 <= 2147483647; - } - __name(uinteger2, "uinteger"); - Is2.uinteger = uinteger2; - function func(value2) { - return toString6.call(value2) === "[object Function]"; - } - __name(func, "func"); - Is2.func = func; - function objectLiteral(value2) { - return value2 !== null && typeof value2 === "object"; - } - __name(objectLiteral, "objectLiteral"); - Is2.objectLiteral = objectLiteral; - function typedArray(value2, check) { - return Array.isArray(value2) && value2.every(check); - } - __name(typedArray, "typedArray"); - Is2.typedArray = typedArray; - })(Is || (Is = {})); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/cst-node-builder.js - var CstNodeBuilder, AbstractCstNode, LeafCstNodeImpl, CompositeCstNodeImpl, CstNodeContainer, RootCstNodeImpl; - var init_cst_node_builder = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/cst-node-builder.js"() { - "use strict"; - init_main(); - init_cst_utils(); - CstNodeBuilder = class { - static { - __name(this, "CstNodeBuilder"); - } - constructor() { - this.nodeStack = []; - } - get current() { - var _a; - return (_a = this.nodeStack[this.nodeStack.length - 1]) !== null && _a !== void 0 ? _a : this.rootNode; - } - buildRootNode(input) { - this.rootNode = new RootCstNodeImpl(input); - this.rootNode.root = this.rootNode; - this.nodeStack = [this.rootNode]; - return this.rootNode; + styfn$6 = {}; + styfn$6.getEmSizeInPixels = function() { + var px = this.containerCss("font-size"); + if (px != null) { + return parseFloat(px); + } else { + return 1; } - buildCompositeNode(feature) { - const compositeNode = new CompositeCstNodeImpl(); - compositeNode.grammarSource = feature; - compositeNode.root = this.rootNode; - this.current.content.push(compositeNode); - this.nodeStack.push(compositeNode); - return compositeNode; + }; + styfn$6.containerCss = function(propName) { + var cy = this._private.cy; + var domElement3 = cy.container(); + var containerWindow = cy.window(); + if (containerWindow && domElement3 && containerWindow.getComputedStyle) { + return containerWindow.getComputedStyle(domElement3).getPropertyValue(propName); } - buildLeafNode(token2, feature) { - const leafNode = new LeafCstNodeImpl(token2.startOffset, token2.image.length, tokenToRange(token2), token2.tokenType, !feature); - leafNode.grammarSource = feature; - leafNode.root = this.rootNode; - this.current.content.push(leafNode); - return leafNode; + }; + styfn$5 = {}; + styfn$5.getRenderedStyle = function(ele, prop) { + if (prop) { + return this.getStylePropertyValue(ele, prop, true); + } else { + return this.getRawStyle(ele, true); } - removeNode(node2) { - const parent4 = node2.container; - if (parent4) { - const index = parent4.content.indexOf(node2); - if (index >= 0) { - parent4.content.splice(index, 1); + }; + styfn$5.getRawStyle = function(ele, isRenderedVal) { + var self2 = this; + ele = ele[0]; + if (ele) { + var rstyle = {}; + for (var i2 = 0; i2 < self2.properties.length; i2++) { + var prop = self2.properties[i2]; + var val = self2.getStylePropertyValue(ele, prop.name, isRenderedVal); + if (val != null) { + rstyle[prop.name] = val; + rstyle[dash2camel(prop.name)] = val; } } + return rstyle; } - addHiddenNodes(tokens2) { - const nodes6 = []; - for (const token2 of tokens2) { - const leafNode = new LeafCstNodeImpl(token2.startOffset, token2.image.length, tokenToRange(token2), token2.tokenType, true); - leafNode.root = this.rootNode; - nodes6.push(leafNode); - } - let current = this.current; - let added = false; - if (current.content.length > 0) { - current.content.push(...nodes6); - return; + }; + styfn$5.getIndexedStyle = function(ele, property2, subproperty, index) { + var pstyle = ele.pstyle(property2)[subproperty][index]; + return pstyle != null ? pstyle : ele.cy().style().getDefaultProperty(property2)[subproperty][0]; + }; + styfn$5.getStylePropertyValue = function(ele, propName, isRenderedVal) { + var self2 = this; + ele = ele[0]; + if (ele) { + var prop = self2.properties[propName]; + if (prop.alias) { + prop = prop.pointsTo; } - while (current.container) { - const index = current.container.content.indexOf(current); - if (index > 0) { - current.container.content.splice(index, 0, ...nodes6); - added = true; - break; + var type3 = prop.type; + var styleProp = ele.pstyle(prop.name); + if (styleProp) { + var value2 = styleProp.value, units = styleProp.units, strValue = styleProp.strValue; + if (isRenderedVal && type3.number && value2 != null && number$1(value2)) { + var zoom2 = ele.cy().zoom(); + var getRenderedValue = /* @__PURE__ */ __name(function getRenderedValue2(val) { + return val * zoom2; + }, "getRenderedValue"); + var getValueStringWithUnits = /* @__PURE__ */ __name(function getValueStringWithUnits2(val, units2) { + return getRenderedValue(val) + units2; + }, "getValueStringWithUnits"); + var isArrayValue = array2(value2); + var haveUnits = isArrayValue ? units.every(function(u2) { + return u2 != null; + }) : units != null; + if (haveUnits) { + if (isArrayValue) { + return value2.map(function(v3, i2) { + return getValueStringWithUnits(v3, units[i2]); + }).join(" "); + } else { + return getValueStringWithUnits(value2, units); + } + } else { + if (isArrayValue) { + return value2.map(function(v3) { + return string(v3) ? v3 : "" + getRenderedValue(v3); + }).join(" "); + } else { + return "" + getRenderedValue(value2); + } + } + } else if (strValue != null) { + return strValue; } - current = current.container; - } - if (!added) { - this.rootNode.content.unshift(...nodes6); } + return null; } - construct(item) { - const current = this.current; - if (typeof item.$type === "string") { - this.current.astNode = item; + }; + styfn$5.getAnimationStartStyle = function(ele, aniProps) { + var rstyle = {}; + for (var i2 = 0; i2 < aniProps.length; i2++) { + var aniProp = aniProps[i2]; + var name = aniProp.name; + var styleProp = ele.pstyle(name); + if (styleProp !== void 0) { + if (plainObject(styleProp)) { + styleProp = this.parse(name, styleProp.strValue); + } else { + styleProp = this.parse(name, styleProp); + } } - item.$cstNode = current; - const node2 = this.nodeStack.pop(); - if ((node2 === null || node2 === void 0 ? void 0 : node2.content.length) === 0) { - this.removeNode(node2); + if (styleProp) { + rstyle[name] = styleProp; } } + return rstyle; }; - AbstractCstNode = class { - static { - __name(this, "AbstractCstNode"); - } - /** @deprecated use `container` instead. */ - get parent() { - return this.container; - } - /** @deprecated use `grammarSource` instead. */ - get feature() { - return this.grammarSource; - } - get hidden() { - return false; - } - get astNode() { - var _a, _b; - const node2 = typeof ((_a = this._astNode) === null || _a === void 0 ? void 0 : _a.$type) === "string" ? this._astNode : (_b = this.container) === null || _b === void 0 ? void 0 : _b.astNode; - if (!node2) { - throw new Error("This node has no associated AST element"); + styfn$5.getPropsList = function(propsObj) { + var self2 = this; + var rstyle = []; + var style3 = propsObj; + var props = self2.properties; + if (style3) { + var names = Object.keys(style3); + for (var i2 = 0; i2 < names.length; i2++) { + var name = names[i2]; + var val = style3[name]; + var prop = props[name] || props[camel2dash(name)]; + var styleProp = this.parse(prop.name, val); + if (styleProp) { + rstyle.push(styleProp); + } } - return node2; - } - set astNode(value2) { - this._astNode = value2; - } - /** @deprecated use `astNode` instead. */ - get element() { - return this.astNode; - } - get text() { - return this.root.fullText.substring(this.offset, this.end); } + return rstyle; }; - LeafCstNodeImpl = class extends AbstractCstNode { - static { - __name(this, "LeafCstNodeImpl"); - } - get offset() { - return this._offset; - } - get length() { - return this._length; - } - get end() { - return this._offset + this._length; - } - get hidden() { - return this._hidden; - } - get tokenType() { - return this._tokenType; - } - get range() { - return this._range; - } - constructor(offset, length2, range3, tokenType, hidden = false) { - super(); - this._hidden = hidden; - this._offset = offset; - this._tokenType = tokenType; - this._length = length2; - this._range = range3; - } - }; - CompositeCstNodeImpl = class extends AbstractCstNode { - static { - __name(this, "CompositeCstNodeImpl"); - } - constructor() { - super(...arguments); - this.content = new CstNodeContainer(this); - } - /** @deprecated use `content` instead. */ - get children() { - return this.content; - } - get offset() { - var _a, _b; - return (_b = (_a = this.firstNonHiddenNode) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0; - } - get length() { - return this.end - this.offset; - } - get end() { - var _a, _b; - return (_b = (_a = this.lastNonHiddenNode) === null || _a === void 0 ? void 0 : _a.end) !== null && _b !== void 0 ? _b : 0; - } - get range() { - const firstNode = this.firstNonHiddenNode; - const lastNode = this.lastNonHiddenNode; - if (firstNode && lastNode) { - if (this._rangeCache === void 0) { - const { range: firstRange } = firstNode; - const { range: lastRange } = lastNode; - this._rangeCache = { start: firstRange.start, end: lastRange.end.line < firstRange.start.line ? firstRange.start : lastRange.end }; - } - return this._rangeCache; + styfn$5.getNonDefaultPropertiesHash = function(ele, propNames, seed) { + var hash = seed.slice(); + var name, val, strVal, chVal; + var i2, j3; + for (i2 = 0; i2 < propNames.length; i2++) { + name = propNames[i2]; + val = ele.pstyle(name, false); + if (val == null) { + continue; + } else if (val.pfValue != null) { + hash[0] = hashInt(chVal, hash[0]); + hash[1] = hashIntAlt(chVal, hash[1]); } else { - return { start: Position.create(0, 0), end: Position.create(0, 0) }; - } - } - get firstNonHiddenNode() { - for (const child of this.content) { - if (!child.hidden) { - return child; - } - } - return this.content[0]; - } - get lastNonHiddenNode() { - for (let i2 = this.content.length - 1; i2 >= 0; i2--) { - const child = this.content[i2]; - if (!child.hidden) { - return child; + strVal = val.strValue; + for (j3 = 0; j3 < strVal.length; j3++) { + chVal = strVal.charCodeAt(j3); + hash[0] = hashInt(chVal, hash[0]); + hash[1] = hashIntAlt(chVal, hash[1]); } } - return this.content[this.content.length - 1]; } + return hash; }; - CstNodeContainer = class _CstNodeContainer extends Array { - static { - __name(this, "CstNodeContainer"); - } - constructor(parent4) { - super(); - this.parent = parent4; - Object.setPrototypeOf(this, _CstNodeContainer.prototype); - } - push(...items) { - this.addParents(items); - return super.push(...items); - } - unshift(...items) { - this.addParents(items); - return super.unshift(...items); - } - splice(start3, count, ...items) { - this.addParents(items); - return super.splice(start3, count, ...items); - } - addParents(items) { - for (const item of items) { - item.container = this.parent; + styfn$5.getPropertiesHash = styfn$5.getNonDefaultPropertiesHash; + styfn$4 = {}; + styfn$4.appendFromJson = function(json3) { + var style3 = this; + for (var i2 = 0; i2 < json3.length; i2++) { + var context = json3[i2]; + var selector = context.selector; + var props = context.style || context.css; + var names = Object.keys(props); + style3.selector(selector); + for (var j3 = 0; j3 < names.length; j3++) { + var name = names[j3]; + var value2 = props[name]; + style3.css(name, value2); } } + return style3; }; - RootCstNodeImpl = class extends CompositeCstNodeImpl { - static { - __name(this, "RootCstNodeImpl"); - } - get text() { - return this._text.substring(this.offset, this.end); - } - get fullText() { - return this._text; - } - constructor(input) { - super(); - this._text = ""; - this._text = input !== null && input !== void 0 ? input : ""; - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/langium-parser.js - function isDataTypeNode(node2) { - return node2.$type === DatatypeSymbol; - } - var DatatypeSymbol, ruleSuffix, withRuleSuffix, AbstractLangiumParser, LangiumParser, AbstractParserErrorMessageProvider, LangiumParserErrorMessageProvider, LangiumCompletionParser, defaultConfig3, ChevrotainWrapper; - var init_langium_parser = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/langium-parser.js"() { - "use strict"; - init_api5(); - init_lib2(); - init_ast(); - init_grammar_utils(); - init_ast_utils(); - init_cst_node_builder(); - DatatypeSymbol = Symbol("Datatype"); - __name(isDataTypeNode, "isDataTypeNode"); - ruleSuffix = "\u200B"; - withRuleSuffix = /* @__PURE__ */ __name((name) => name.endsWith(ruleSuffix) ? name : name + ruleSuffix, "withRuleSuffix"); - AbstractLangiumParser = class { - static { - __name(this, "AbstractLangiumParser"); - } - constructor(services) { - this._unorderedGroups = /* @__PURE__ */ new Map(); - this.allRules = /* @__PURE__ */ new Map(); - this.lexer = services.parser.Lexer; - const tokens2 = this.lexer.definition; - const production = services.LanguageMetaData.mode === "production"; - this.wrapper = new ChevrotainWrapper(tokens2, Object.assign(Object.assign({}, services.parser.ParserConfig), { skipValidations: production, errorMessageProvider: services.parser.ParserErrorMessageProvider })); - } - alternatives(idx, choices) { - this.wrapper.wrapOr(idx, choices); - } - optional(idx, callback) { - this.wrapper.wrapOption(idx, callback); - } - many(idx, callback) { - this.wrapper.wrapMany(idx, callback); - } - atLeastOne(idx, callback) { - this.wrapper.wrapAtLeastOne(idx, callback); - } - getRule(name) { - return this.allRules.get(name); - } - isRecording() { - return this.wrapper.IS_RECORDING; - } - get unorderedGroups() { - return this._unorderedGroups; - } - getRuleStack() { - return this.wrapper.RULE_STACK; - } - finalize() { - this.wrapper.wrapSelfAnalysis(); - } + styfn$4.fromJson = function(json3) { + var style3 = this; + style3.resetToDefault(); + style3.appendFromJson(json3); + return style3; }; - LangiumParser = class extends AbstractLangiumParser { - static { - __name(this, "LangiumParser"); - } - get current() { - return this.stack[this.stack.length - 1]; - } - constructor(services) { - super(services); - this.nodeBuilder = new CstNodeBuilder(); - this.stack = []; - this.assignmentMap = /* @__PURE__ */ new Map(); - this.linker = services.references.Linker; - this.converter = services.parser.ValueConverter; - this.astReflection = services.shared.AstReflection; - } - rule(rule, impl2) { - const type3 = this.computeRuleType(rule); - const ruleMethod = this.wrapper.DEFINE_RULE(withRuleSuffix(rule.name), this.startImplementation(type3, impl2).bind(this)); - this.allRules.set(rule.name, ruleMethod); - if (rule.entry) { - this.mainRule = ruleMethod; + styfn$4.json = function() { + var json3 = []; + for (var i2 = this.defaultLength; i2 < this.length; i2++) { + var cxt = this[i2]; + var selector = cxt.selector; + var props = cxt.properties; + var css = {}; + for (var j3 = 0; j3 < props.length; j3++) { + var prop = props[j3]; + css[prop.name] = prop.strValue; } - return ruleMethod; + json3.push({ + selector: !selector ? "core" : selector.toString(), + style: css + }); } - computeRuleType(rule) { - if (rule.fragment) { - return void 0; - } else if (isDataTypeRule(rule)) { - return DatatypeSymbol; + return json3; + }; + styfn$3 = {}; + styfn$3.appendFromString = function(string3) { + var self2 = this; + var style3 = this; + var remaining = "" + string3; + var selAndBlockStr; + var blockRem; + var propAndValStr; + remaining = remaining.replace(/[/][*](\s|.)+?[*][/]/g, ""); + function removeSelAndBlockFromRemaining() { + if (remaining.length > selAndBlockStr.length) { + remaining = remaining.substr(selAndBlockStr.length); } else { - const explicit = getExplicitRuleType(rule); - return explicit !== null && explicit !== void 0 ? explicit : rule.name; - } - } - parse(input, options3 = {}) { - this.nodeBuilder.buildRootNode(input); - const lexerResult = this.lexerResult = this.lexer.tokenize(input); - this.wrapper.input = lexerResult.tokens; - const ruleMethod = options3.rule ? this.allRules.get(options3.rule) : this.mainRule; - if (!ruleMethod) { - throw new Error(options3.rule ? `No rule found with name '${options3.rule}'` : "No main rule available."); - } - const result = ruleMethod.call(this.wrapper, {}); - this.nodeBuilder.addHiddenNodes(lexerResult.hidden); - this.unorderedGroups.clear(); - this.lexerResult = void 0; - return { - value: result, - lexerErrors: lexerResult.errors, - lexerReport: lexerResult.report, - parserErrors: this.wrapper.errors - }; - } - startImplementation($type, implementation) { - return (args) => { - const createNode = !this.isRecording() && $type !== void 0; - if (createNode) { - const node2 = { $type }; - this.stack.push(node2); - if ($type === DatatypeSymbol) { - node2.value = ""; - } - } - let result; - try { - result = implementation(args); - } catch (err) { - result = void 0; - } - if (result === void 0 && createNode) { - result = this.construct(); - } - return result; - }; - } - extractHiddenTokens(token2) { - const hiddenTokens = this.lexerResult.hidden; - if (!hiddenTokens.length) { - return []; - } - const offset = token2.startOffset; - for (let i2 = 0; i2 < hiddenTokens.length; i2++) { - const token3 = hiddenTokens[i2]; - if (token3.startOffset > offset) { - return hiddenTokens.splice(0, i2); - } + remaining = ""; } - return hiddenTokens.splice(0, hiddenTokens.length); } - consume(idx, tokenType, feature) { - const token2 = this.wrapper.wrapConsume(idx, tokenType); - if (!this.isRecording() && this.isValidToken(token2)) { - const hiddenTokens = this.extractHiddenTokens(token2); - this.nodeBuilder.addHiddenNodes(hiddenTokens); - const leafNode = this.nodeBuilder.buildLeafNode(token2, feature); - const { assignment, isCrossRef } = this.getAssignment(feature); - const current = this.current; - if (assignment) { - const convertedValue = isKeyword(feature) ? token2.image : this.converter.convert(token2.image, leafNode); - this.assign(assignment.operator, assignment.feature, convertedValue, leafNode, isCrossRef); - } else if (isDataTypeNode(current)) { - let text4 = token2.image; - if (!isKeyword(feature)) { - text4 = this.converter.convert(text4, leafNode).toString(); - } - current.value += text4; - } + __name(removeSelAndBlockFromRemaining, "removeSelAndBlockFromRemaining"); + function removePropAndValFromRem() { + if (blockRem.length > propAndValStr.length) { + blockRem = blockRem.substr(propAndValStr.length); + } else { + blockRem = ""; } } - /** - * Most consumed parser tokens are valid. However there are two cases in which they are not valid: - * - * 1. They were inserted during error recovery by the parser. These tokens don't really exist and should not be further processed - * 2. They contain invalid token ranges. This might include the special EOF token, or other tokens produced by invalid token builders. - */ - isValidToken(token2) { - return !token2.isInsertedInRecovery && !isNaN(token2.startOffset) && typeof token2.endOffset === "number" && !isNaN(token2.endOffset); - } - subrule(idx, rule, fragment, feature, args) { - let cstNode; - if (!this.isRecording() && !fragment) { - cstNode = this.nodeBuilder.buildCompositeNode(feature); - } - const subruleResult = this.wrapper.wrapSubrule(idx, rule, args); - if (!this.isRecording() && cstNode && cstNode.length > 0) { - this.performSubruleAssignment(subruleResult, feature, cstNode); + __name(removePropAndValFromRem, "removePropAndValFromRem"); + for (; ; ) { + var nothingLeftToParse = remaining.match(/^\s*$/); + if (nothingLeftToParse) { + break; } - } - performSubruleAssignment(result, feature, cstNode) { - const { assignment, isCrossRef } = this.getAssignment(feature); - if (assignment) { - this.assign(assignment.operator, assignment.feature, result, cstNode, isCrossRef); - } else if (!assignment) { - const current = this.current; - if (isDataTypeNode(current)) { - current.value += result.toString(); - } else if (typeof result === "object" && result) { - const object3 = this.assignWithoutOverride(result, current); - const newItem = object3; - this.stack.pop(); - this.stack.push(newItem); - } + var selAndBlock = remaining.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/); + if (!selAndBlock) { + warn("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: " + remaining); + break; } - } - action($type, action) { - if (!this.isRecording()) { - let last3 = this.current; - if (action.feature && action.operator) { - last3 = this.construct(); - this.nodeBuilder.removeNode(last3.$cstNode); - const node2 = this.nodeBuilder.buildCompositeNode(action); - node2.content.push(last3.$cstNode); - const newItem = { $type }; - this.stack.push(newItem); - this.assign(action.operator, action.feature, last3, last3.$cstNode, false); - } else { - last3.$type = $type; + selAndBlockStr = selAndBlock[0]; + var selectorStr = selAndBlock[1]; + if (selectorStr !== "core") { + var selector = new Selector(selectorStr); + if (selector.invalid) { + warn("Skipping parsing of block: Invalid selector found in string stylesheet: " + selectorStr); + removeSelAndBlockFromRemaining(); + continue; } } - } - construct() { - if (this.isRecording()) { - return void 0; - } - const obj = this.current; - linkContentToContainer(obj); - this.nodeBuilder.construct(obj); - this.stack.pop(); - if (isDataTypeNode(obj)) { - return this.converter.convert(obj.value, obj.$cstNode); - } else { - assignMandatoryProperties(this.astReflection, obj); - } - return obj; - } - getAssignment(feature) { - if (!this.assignmentMap.has(feature)) { - const assignment = getContainerOfType(feature, isAssignment); - this.assignmentMap.set(feature, { - assignment, - isCrossRef: assignment ? isCrossReference(assignment.terminal) : false - }); - } - return this.assignmentMap.get(feature); - } - assign(operator, feature, value2, cstNode, isCrossRef) { - const obj = this.current; - let item; - if (isCrossRef && typeof value2 === "string") { - item = this.linker.buildReference(obj, feature, cstNode, value2); - } else { - item = value2; - } - switch (operator) { - case "=": { - obj[feature] = item; + var blockStr = selAndBlock[2]; + var invalidBlock = false; + blockRem = blockStr; + var props = []; + for (; ; ) { + var _nothingLeftToParse = blockRem.match(/^\s*$/); + if (_nothingLeftToParse) { break; } - case "?=": { - obj[feature] = true; + var propAndVal = blockRem.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/); + if (!propAndVal) { + warn("Skipping parsing of block: Invalid formatting of style property and value definitions found in:" + blockStr); + invalidBlock = true; break; } - case "+=": { - if (!Array.isArray(obj[feature])) { - obj[feature] = []; - } - obj[feature].push(item); - } - } - } - assignWithoutOverride(target, source) { - for (const [name, existingValue] of Object.entries(source)) { - const newValue = target[name]; - if (newValue === void 0) { - target[name] = existingValue; - } else if (Array.isArray(newValue) && Array.isArray(existingValue)) { - existingValue.push(...newValue); - target[name] = existingValue; + propAndValStr = propAndVal[0]; + var propStr = propAndVal[1]; + var valStr = propAndVal[2]; + var prop = self2.properties[propStr]; + if (!prop) { + warn("Skipping property: Invalid property name in: " + propAndValStr); + removePropAndValFromRem(); + continue; } - } - const targetCstNode = target.$cstNode; - if (targetCstNode) { - targetCstNode.astNode = void 0; - target.$cstNode = void 0; - } - return target; - } - get definitionErrors() { - return this.wrapper.definitionErrors; - } - }; - AbstractParserErrorMessageProvider = class { - static { - __name(this, "AbstractParserErrorMessageProvider"); - } - buildMismatchTokenMessage(options3) { - return defaultParserErrorProvider.buildMismatchTokenMessage(options3); - } - buildNotAllInputParsedMessage(options3) { - return defaultParserErrorProvider.buildNotAllInputParsedMessage(options3); - } - buildNoViableAltMessage(options3) { - return defaultParserErrorProvider.buildNoViableAltMessage(options3); - } - buildEarlyExitMessage(options3) { - return defaultParserErrorProvider.buildEarlyExitMessage(options3); - } - }; - LangiumParserErrorMessageProvider = class extends AbstractParserErrorMessageProvider { - static { - __name(this, "LangiumParserErrorMessageProvider"); - } - buildMismatchTokenMessage({ expected, actual }) { - const expectedMsg = expected.LABEL ? "`" + expected.LABEL + "`" : expected.name.endsWith(":KW") ? `keyword '${expected.name.substring(0, expected.name.length - 3)}'` : `token of type '${expected.name}'`; - return `Expecting ${expectedMsg} but found \`${actual.image}\`.`; - } - buildNotAllInputParsedMessage({ firstRedundant }) { - return `Expecting end of file but found \`${firstRedundant.image}\`.`; - } - }; - LangiumCompletionParser = class extends AbstractLangiumParser { - static { - __name(this, "LangiumCompletionParser"); - } - constructor() { - super(...arguments); - this.tokens = []; - this.elementStack = []; - this.lastElementStack = []; - this.nextTokenIndex = 0; - this.stackSize = 0; - } - action() { - } - construct() { - return void 0; - } - parse(input) { - this.resetState(); - const tokens2 = this.lexer.tokenize(input, { mode: "partial" }); - this.tokens = tokens2.tokens; - this.wrapper.input = [...this.tokens]; - this.mainRule.call(this.wrapper, {}); - this.unorderedGroups.clear(); - return { - tokens: this.tokens, - elementStack: [...this.lastElementStack], - tokenIndex: this.nextTokenIndex - }; - } - rule(rule, impl2) { - const ruleMethod = this.wrapper.DEFINE_RULE(withRuleSuffix(rule.name), this.startImplementation(impl2).bind(this)); - this.allRules.set(rule.name, ruleMethod); - if (rule.entry) { - this.mainRule = ruleMethod; - } - return ruleMethod; - } - resetState() { - this.elementStack = []; - this.lastElementStack = []; - this.nextTokenIndex = 0; - this.stackSize = 0; - } - startImplementation(implementation) { - return (args) => { - const size5 = this.keepStackSize(); - try { - implementation(args); - } finally { - this.resetStackSize(size5); + var parsedProp = style3.parse(propStr, valStr); + if (!parsedProp) { + warn("Skipping property: Invalid property definition in: " + propAndValStr); + removePropAndValFromRem(); + continue; } - }; - } - removeUnexpectedElements() { - this.elementStack.splice(this.stackSize); - } - keepStackSize() { - const size5 = this.elementStack.length; - this.stackSize = size5; - return size5; - } - resetStackSize(size5) { - this.removeUnexpectedElements(); - this.stackSize = size5; - } - consume(idx, tokenType, feature) { - this.wrapper.wrapConsume(idx, tokenType); - if (!this.isRecording()) { - this.lastElementStack = [...this.elementStack, feature]; - this.nextTokenIndex = this.currIdx + 1; + props.push({ + name: propStr, + val: valStr + }); + removePropAndValFromRem(); } - } - subrule(idx, rule, fragment, feature, args) { - this.before(feature); - this.wrapper.wrapSubrule(idx, rule, args); - this.after(feature); - } - before(element3) { - if (!this.isRecording()) { - this.elementStack.push(element3); + if (invalidBlock) { + removeSelAndBlockFromRemaining(); + break; } - } - after(element3) { - if (!this.isRecording()) { - const index = this.elementStack.lastIndexOf(element3); - if (index >= 0) { - this.elementStack.splice(index); - } + style3.selector(selectorStr); + for (var i2 = 0; i2 < props.length; i2++) { + var _prop = props[i2]; + style3.css(_prop.name, _prop.val); } + removeSelAndBlockFromRemaining(); } - get currIdx() { - return this.wrapper.currIdx; - } - }; - defaultConfig3 = { - recoveryEnabled: true, - nodeLocationTracking: "full", - skipValidations: true, - errorMessageProvider: new LangiumParserErrorMessageProvider() - }; - ChevrotainWrapper = class extends EmbeddedActionsParser { - static { - __name(this, "ChevrotainWrapper"); - } - constructor(tokens2, config5) { - const useDefaultLookahead = config5 && "maxLookahead" in config5; - super(tokens2, Object.assign(Object.assign(Object.assign({}, defaultConfig3), { lookaheadStrategy: useDefaultLookahead ? new LLkLookaheadStrategy({ maxLookahead: config5.maxLookahead }) : new LLStarLookaheadStrategy({ - // If validations are skipped, don't log the lookahead warnings - logging: config5.skipValidations ? () => { - } : void 0 - }) }), config5)); - } - get IS_RECORDING() { - return this.RECORDING_PHASE; - } - DEFINE_RULE(name, impl2) { - return this.RULE(name, impl2); - } - wrapSelfAnalysis() { - this.performSelfAnalysis(); - } - wrapConsume(idx, tokenType) { - return this.consume(idx, tokenType); - } - wrapSubrule(idx, rule, args) { - return this.subrule(idx, rule, { - ARGS: [args] - }); - } - wrapOr(idx, choices) { - this.or(idx, choices); - } - wrapOption(idx, callback) { - this.option(idx, callback); - } - wrapMany(idx, callback) { - this.many(idx, callback); - } - wrapAtLeastOne(idx, callback) { - this.atLeastOne(idx, callback); - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/parser-builder-base.js - function createParser(grammar, parser24, tokens2) { - const parserContext = { - parser: parser24, - tokens: tokens2, - ruleNames: /* @__PURE__ */ new Map() - }; - buildRules(parserContext, grammar); - return parser24; - } - function buildRules(parserContext, grammar) { - const reachable = getAllReachableRules(grammar, false); - const parserRules = stream(grammar.rules).filter(isParserRule).filter((rule) => reachable.has(rule)); - for (const rule of parserRules) { - const ctx = Object.assign(Object.assign({}, parserContext), { consume: 1, optional: 1, subrule: 1, many: 1, or: 1 }); - parserContext.parser.rule(rule, buildElement(ctx, rule.definition)); - } - } - function buildElement(ctx, element3, ignoreGuard = false) { - let method; - if (isKeyword(element3)) { - method = buildKeyword(ctx, element3); - } else if (isAction(element3)) { - method = buildAction(ctx, element3); - } else if (isAssignment(element3)) { - method = buildElement(ctx, element3.terminal); - } else if (isCrossReference(element3)) { - method = buildCrossReference(ctx, element3); - } else if (isRuleCall(element3)) { - method = buildRuleCall(ctx, element3); - } else if (isAlternatives(element3)) { - method = buildAlternatives(ctx, element3); - } else if (isUnorderedGroup(element3)) { - method = buildUnorderedGroup(ctx, element3); - } else if (isGroup(element3)) { - method = buildGroup4(ctx, element3); - } else if (isEndOfFile(element3)) { - const idx = ctx.consume++; - method = /* @__PURE__ */ __name(() => ctx.parser.consume(idx, EOF, element3), "method"); - } else { - throw new ErrorWithLocation(element3.$cstNode, `Unexpected element type: ${element3.$type}`); - } - return wrap(ctx, ignoreGuard ? void 0 : getGuardCondition(element3), method, element3.cardinality); - } - function buildAction(ctx, action) { - const actionType = getTypeName(action); - return () => ctx.parser.action(actionType, action); - } - function buildRuleCall(ctx, ruleCall) { - const rule = ruleCall.rule.ref; - if (isParserRule(rule)) { - const idx = ctx.subrule++; - const fragment = rule.fragment; - const predicate = ruleCall.arguments.length > 0 ? buildRuleCallPredicate(rule, ruleCall.arguments) : () => ({}); - return (args) => ctx.parser.subrule(idx, getRule(ctx, rule), fragment, ruleCall, predicate(args)); - } else if (isTerminalRule(rule)) { - const idx = ctx.consume++; - const method = getToken(ctx, rule.name); - return () => ctx.parser.consume(idx, method, ruleCall); - } else if (!rule) { - throw new ErrorWithLocation(ruleCall.$cstNode, `Undefined rule: ${ruleCall.rule.$refText}`); - } else { - assertUnreachable(rule); - } - } - function buildRuleCallPredicate(rule, namedArgs) { - const predicates = namedArgs.map((e3) => buildPredicate(e3.value)); - return (args) => { - const ruleArgs = {}; - for (let i2 = 0; i2 < predicates.length; i2++) { - const ruleTarget = rule.parameters[i2]; - const predicate = predicates[i2]; - ruleArgs[ruleTarget.name] = predicate(args); - } - return ruleArgs; - }; - } - function buildPredicate(condition) { - if (isDisjunction(condition)) { - const left3 = buildPredicate(condition.left); - const right3 = buildPredicate(condition.right); - return (args) => left3(args) || right3(args); - } else if (isConjunction(condition)) { - const left3 = buildPredicate(condition.left); - const right3 = buildPredicate(condition.right); - return (args) => left3(args) && right3(args); - } else if (isNegation(condition)) { - const value2 = buildPredicate(condition.value); - return (args) => !value2(args); - } else if (isParameterReference(condition)) { - const name = condition.parameter.ref.name; - return (args) => args !== void 0 && args[name] === true; - } else if (isBooleanLiteral(condition)) { - const value2 = Boolean(condition.true); - return () => value2; - } - assertUnreachable(condition); - } - function buildAlternatives(ctx, alternatives) { - if (alternatives.elements.length === 1) { - return buildElement(ctx, alternatives.elements[0]); - } else { - const methods = []; - for (const element3 of alternatives.elements) { - const predicatedMethod = { - // Since we handle the guard condition in the alternative already - // We can ignore the group guard condition inside - ALT: buildElement(ctx, element3, true) - }; - const guard = getGuardCondition(element3); - if (guard) { - predicatedMethod.GATE = buildPredicate(guard); - } - methods.push(predicatedMethod); - } - const idx = ctx.or++; - return (args) => ctx.parser.alternatives(idx, methods.map((method) => { - const alt = { - ALT: /* @__PURE__ */ __name(() => method.ALT(args), "ALT") - }; - const gate = method.GATE; - if (gate) { - alt.GATE = () => gate(args); - } - return alt; - })); - } - } - function buildUnorderedGroup(ctx, group2) { - if (group2.elements.length === 1) { - return buildElement(ctx, group2.elements[0]); - } - const methods = []; - for (const element3 of group2.elements) { - const predicatedMethod = { - // Since we handle the guard condition in the alternative already - // We can ignore the group guard condition inside - ALT: buildElement(ctx, element3, true) + return style3; }; - const guard = getGuardCondition(element3); - if (guard) { - predicatedMethod.GATE = buildPredicate(guard); - } - methods.push(predicatedMethod); - } - const orIdx = ctx.or++; - const idFunc = /* @__PURE__ */ __name((groupIdx, lParser) => { - const stackId = lParser.getRuleStack().join("-"); - return `uGroup_${groupIdx}_${stackId}`; - }, "idFunc"); - const alternatives = /* @__PURE__ */ __name((args) => ctx.parser.alternatives(orIdx, methods.map((method, idx) => { - const alt = { ALT: /* @__PURE__ */ __name(() => true, "ALT") }; - const parser24 = ctx.parser; - alt.ALT = () => { - method.ALT(args); - if (!parser24.isRecording()) { - const key = idFunc(orIdx, parser24); - if (!parser24.unorderedGroups.get(key)) { - parser24.unorderedGroups.set(key, []); - } - const groupState = parser24.unorderedGroups.get(key); - if (typeof (groupState === null || groupState === void 0 ? void 0 : groupState[idx]) === "undefined") { - groupState[idx] = true; - } - } + styfn$3.fromString = function(string3) { + var style3 = this; + style3.resetToDefault(); + style3.appendFromString(string3); + return style3; }; - const gate = method.GATE; - if (gate) { - alt.GATE = () => gate(args); - } else { - alt.GATE = () => { - const trackedAlternatives = parser24.unorderedGroups.get(idFunc(orIdx, parser24)); - const allow = !(trackedAlternatives === null || trackedAlternatives === void 0 ? void 0 : trackedAlternatives[idx]); - return allow; - }; - } - return alt; - })), "alternatives"); - const wrapped = wrap(ctx, getGuardCondition(group2), alternatives, "*"); - return (args) => { - wrapped(args); - if (!ctx.parser.isRecording()) { - ctx.parser.unorderedGroups.delete(idFunc(orIdx, ctx.parser)); - } - }; - } - function buildGroup4(ctx, group2) { - const methods = group2.elements.map((e3) => buildElement(ctx, e3)); - return (args) => methods.forEach((method) => method(args)); - } - function getGuardCondition(element3) { - if (isGroup(element3)) { - return element3.guardCondition; - } - return void 0; - } - function buildCrossReference(ctx, crossRef, terminal = crossRef.terminal) { - if (!terminal) { - if (!crossRef.type.ref) { - throw new Error("Could not resolve reference to type: " + crossRef.type.$refText); - } - const assignment = findNameAssignment(crossRef.type.ref); - const assignTerminal = assignment === null || assignment === void 0 ? void 0 : assignment.terminal; - if (!assignTerminal) { - throw new Error("Could not find name assignment for type: " + getTypeName(crossRef.type.ref)); - } - return buildCrossReference(ctx, crossRef, assignTerminal); - } else if (isRuleCall(terminal) && isParserRule(terminal.rule.ref)) { - const rule = terminal.rule.ref; - const idx = ctx.subrule++; - return (args) => ctx.parser.subrule(idx, getRule(ctx, rule), false, crossRef, args); - } else if (isRuleCall(terminal) && isTerminalRule(terminal.rule.ref)) { - const idx = ctx.consume++; - const terminalRule = getToken(ctx, terminal.rule.ref.name); - return () => ctx.parser.consume(idx, terminalRule, crossRef); - } else if (isKeyword(terminal)) { - const idx = ctx.consume++; - const keyword = getToken(ctx, terminal.value); - return () => ctx.parser.consume(idx, keyword, crossRef); - } else { - throw new Error("Could not build cross reference parser"); - } - } - function buildKeyword(ctx, keyword) { - const idx = ctx.consume++; - const token2 = ctx.tokens[keyword.value]; - if (!token2) { - throw new Error("Could not find token for keyword: " + keyword.value); - } - return () => ctx.parser.consume(idx, token2, keyword); - } - function wrap(ctx, guard, method, cardinality) { - const gate = guard && buildPredicate(guard); - if (!cardinality) { - if (gate) { - const idx = ctx.or++; - return (args) => ctx.parser.alternatives(idx, [ - { - ALT: /* @__PURE__ */ __name(() => method(args), "ALT"), - GATE: /* @__PURE__ */ __name(() => gate(args), "GATE") + styfn$2 = {}; + (function() { + var number$12 = number6; + var rgba4 = rgbaNoBackRefs; + var hsla3 = hslaNoBackRefs; + var hex3$1 = hex3; + var hex6$1 = hex6; + var data5 = /* @__PURE__ */ __name(function data6(prefix) { + return "^" + prefix + "\\s*\\(\\s*([\\w\\.]+)\\s*\\)$"; + }, "data"); + var mapData = /* @__PURE__ */ __name(function mapData2(prefix) { + var mapArg = number$12 + "|\\w+|" + rgba4 + "|" + hsla3 + "|" + hex3$1 + "|" + hex6$1; + return "^" + prefix + "\\s*\\(([\\w\\.]+)\\s*\\,\\s*(" + number$12 + ")\\s*\\,\\s*(" + number$12 + ")\\s*,\\s*(" + mapArg + ")\\s*\\,\\s*(" + mapArg + ")\\)$"; + }, "mapData"); + var urlRegexes = [`^url\\s*\\(\\s*['"]?(.+?)['"]?\\s*\\)$`, "^(none)$", "^(.+)$"]; + styfn$2.types = { + time: { + number: true, + min: 0, + units: "s|ms", + implicitUnits: "ms" }, - { - ALT: EMPTY_ALT(), - GATE: /* @__PURE__ */ __name(() => !gate(args), "GATE") - } - ]); - } else { - return method; - } - } - if (cardinality === "*") { - const idx = ctx.many++; - return (args) => ctx.parser.many(idx, { - DEF: /* @__PURE__ */ __name(() => method(args), "DEF"), - GATE: gate ? () => gate(args) : void 0 - }); - } else if (cardinality === "+") { - const idx = ctx.many++; - if (gate) { - const orIdx = ctx.or++; - return (args) => ctx.parser.alternatives(orIdx, [ - { - ALT: /* @__PURE__ */ __name(() => ctx.parser.atLeastOne(idx, { - DEF: /* @__PURE__ */ __name(() => method(args), "DEF") - }), "ALT"), - GATE: /* @__PURE__ */ __name(() => gate(args), "GATE") + percent: { + number: true, + min: 0, + max: 100, + units: "%", + implicitUnits: "%" }, - { - ALT: EMPTY_ALT(), - GATE: /* @__PURE__ */ __name(() => !gate(args), "GATE") - } - ]); - } else { - return (args) => ctx.parser.atLeastOne(idx, { - DEF: /* @__PURE__ */ __name(() => method(args), "DEF") - }); - } - } else if (cardinality === "?") { - const idx = ctx.optional++; - return (args) => ctx.parser.optional(idx, { - DEF: /* @__PURE__ */ __name(() => method(args), "DEF"), - GATE: gate ? () => gate(args) : void 0 - }); - } else { - assertUnreachable(cardinality); - } - } - function getRule(ctx, element3) { - const name = getRuleName(ctx, element3); - const rule = ctx.parser.getRule(name); - if (!rule) - throw new Error(`Rule "${name}" not found."`); - return rule; - } - function getRuleName(ctx, element3) { - if (isParserRule(element3)) { - return element3.name; - } else if (ctx.ruleNames.has(element3)) { - return ctx.ruleNames.get(element3); - } else { - let item = element3; - let parent4 = item.$container; - let ruleName = element3.$type; - while (!isParserRule(parent4)) { - if (isGroup(parent4) || isAlternatives(parent4) || isUnorderedGroup(parent4)) { - const index = parent4.elements.indexOf(item); - ruleName = index.toString() + ":" + ruleName; - } - item = parent4; - parent4 = parent4.$container; - } - const rule = parent4; - ruleName = rule.name + ":" + ruleName; - ctx.ruleNames.set(element3, ruleName); - return ruleName; - } - } - function getToken(ctx, name) { - const token2 = ctx.tokens[name]; - if (!token2) - throw new Error(`Token "${name}" not found."`); - return token2; - } - var init_parser_builder_base = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/parser-builder-base.js"() { - "use strict"; - init_api5(); - init_ast(); - init_errors2(); - init_stream(); - init_grammar_utils(); - __name(createParser, "createParser"); - __name(buildRules, "buildRules"); - __name(buildElement, "buildElement"); - __name(buildAction, "buildAction"); - __name(buildRuleCall, "buildRuleCall"); - __name(buildRuleCallPredicate, "buildRuleCallPredicate"); - __name(buildPredicate, "buildPredicate"); - __name(buildAlternatives, "buildAlternatives"); - __name(buildUnorderedGroup, "buildUnorderedGroup"); - __name(buildGroup4, "buildGroup"); - __name(getGuardCondition, "getGuardCondition"); - __name(buildCrossReference, "buildCrossReference"); - __name(buildKeyword, "buildKeyword"); - __name(wrap, "wrap"); - __name(getRule, "getRule"); - __name(getRuleName, "getRuleName"); - __name(getToken, "getToken"); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/completion-parser-builder.js - function createCompletionParser(services) { - const grammar = services.Grammar; - const lexer2 = services.parser.Lexer; - const parser24 = new LangiumCompletionParser(services); - createParser(grammar, parser24, lexer2.definition); - parser24.finalize(); - return parser24; - } - var init_completion_parser_builder = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/completion-parser-builder.js"() { - "use strict"; - init_langium_parser(); - init_parser_builder_base(); - __name(createCompletionParser, "createCompletionParser"); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/langium-parser-builder.js - function createLangiumParser(services) { - const parser24 = prepareLangiumParser(services); - parser24.finalize(); - return parser24; - } - function prepareLangiumParser(services) { - const grammar = services.Grammar; - const lexer2 = services.parser.Lexer; - const parser24 = new LangiumParser(services); - return createParser(grammar, parser24, lexer2.definition); - } - var init_langium_parser_builder = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/langium-parser-builder.js"() { - "use strict"; - init_langium_parser(); - init_parser_builder_base(); - __name(createLangiumParser, "createLangiumParser"); - __name(prepareLangiumParser, "prepareLangiumParser"); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/token-builder.js - var DefaultTokenBuilder; - var init_token_builder = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/token-builder.js"() { - "use strict"; - init_api5(); - init_ast(); - init_ast_utils(); - init_grammar_utils(); - init_regexp_utils(); - init_stream(); - DefaultTokenBuilder = class { - static { - __name(this, "DefaultTokenBuilder"); - } - constructor() { - this.diagnostics = []; - } - buildTokens(grammar, options3) { - const reachableRules = stream(getAllReachableRules(grammar, false)); - const terminalTokens = this.buildTerminalTokens(reachableRules); - const tokens2 = this.buildKeywordTokens(reachableRules, terminalTokens, options3); - terminalTokens.forEach((terminalToken) => { - const pattern = terminalToken.PATTERN; - if (typeof pattern === "object" && pattern && "test" in pattern && isWhitespace2(pattern)) { - tokens2.unshift(terminalToken); - } else { - tokens2.push(terminalToken); - } - }); - return tokens2; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - flushLexingReport(text4) { - return { diagnostics: this.popDiagnostics() }; - } - popDiagnostics() { - const diagnostics = [...this.diagnostics]; - this.diagnostics = []; - return diagnostics; - } - buildTerminalTokens(rules) { - return rules.filter(isTerminalRule).filter((e3) => !e3.fragment).map((terminal) => this.buildTerminalToken(terminal)).toArray(); - } - buildTerminalToken(terminal) { - const regex2 = terminalRegex(terminal); - const pattern = this.requiresCustomPattern(regex2) ? this.regexPatternFunction(regex2) : regex2; - const tokenType = { - name: terminal.name, - PATTERN: pattern - }; - if (typeof pattern === "function") { - tokenType.LINE_BREAKS = true; - } - if (terminal.hidden) { - tokenType.GROUP = isWhitespace2(regex2) ? Lexer2.SKIPPED : "hidden"; - } - return tokenType; - } - requiresCustomPattern(regex2) { - if (regex2.flags.includes("u") || regex2.flags.includes("s")) { - return true; - } else if (regex2.source.includes("?<=") || regex2.source.includes("? { - stickyRegex.lastIndex = offset; - const execResult = stickyRegex.exec(text4); - return execResult; - }; - } - buildKeywordTokens(rules, terminalTokens, options3) { - return rules.filter(isParserRule).flatMap((rule) => streamAllContents(rule).filter(isKeyword)).distinct((e3) => e3.value).toArray().sort((a2, b2) => b2.value.length - a2.value.length).map((keyword) => this.buildKeywordToken(keyword, terminalTokens, Boolean(options3 === null || options3 === void 0 ? void 0 : options3.caseInsensitive))); - } - buildKeywordToken(keyword, terminalTokens, caseInsensitive) { - const keywordPattern = this.buildKeywordPattern(keyword, caseInsensitive); - const tokenType = { - name: keyword.value, - PATTERN: keywordPattern, - LONGER_ALT: this.findLongerAlt(keyword, terminalTokens) - }; - if (typeof keywordPattern === "function") { - tokenType.LINE_BREAKS = true; - } - return tokenType; - } - buildKeywordPattern(keyword, caseInsensitive) { - return caseInsensitive ? new RegExp(getCaseInsensitivePattern(keyword.value)) : keyword.value; - } - findLongerAlt(keyword, terminalTokens) { - return terminalTokens.reduce((longerAlts, token2) => { - const pattern = token2 === null || token2 === void 0 ? void 0 : token2.PATTERN; - if ((pattern === null || pattern === void 0 ? void 0 : pattern.source) && partialMatches("^" + pattern.source + "$", keyword.value)) { - longerAlts.push(token2); - } - return longerAlts; - }, []); - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/value-converter.js - var DefaultValueConverter, ValueConverter; - var init_value_converter = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/value-converter.js"() { - "use strict"; - init_ast(); - init_grammar_utils(); - DefaultValueConverter = class { - static { - __name(this, "DefaultValueConverter"); - } - convert(input, cstNode) { - let feature = cstNode.grammarSource; - if (isCrossReference(feature)) { - feature = getCrossReferenceTerminal(feature); + percentages: { + number: true, + min: 0, + max: 100, + units: "%", + implicitUnits: "%", + multiple: true + }, + zeroOneNumber: { + number: true, + min: 0, + max: 1, + unitless: true + }, + zeroOneNumbers: { + number: true, + min: 0, + max: 1, + unitless: true, + multiple: true + }, + nOneOneNumber: { + number: true, + min: -1, + max: 1, + unitless: true + }, + nonNegativeInt: { + number: true, + min: 0, + integer: true, + unitless: true + }, + nonNegativeNumber: { + number: true, + min: 0, + unitless: true + }, + position: { + enums: ["parent", "origin"] + }, + nodeSize: { + number: true, + min: 0, + enums: ["label"] + }, + number: { + number: true, + unitless: true + }, + numbers: { + number: true, + unitless: true, + multiple: true + }, + positiveNumber: { + number: true, + unitless: true, + min: 0, + strictMin: true + }, + size: { + number: true, + min: 0 + }, + bidirectionalSize: { + number: true + }, + // allows negative + bidirectionalSizeMaybePercent: { + number: true, + allowPercent: true + }, + // allows negative + bidirectionalSizes: { + number: true, + multiple: true + }, + // allows negative + sizeMaybePercent: { + number: true, + min: 0, + allowPercent: true + }, + axisDirection: { + enums: ["horizontal", "leftward", "rightward", "vertical", "upward", "downward", "auto"] + }, + axisDirectionExplicit: { + enums: ["leftward", "rightward", "upward", "downward"] + }, + axisDirectionPrimary: { + enums: ["horizontal", "vertical"] + }, + paddingRelativeTo: { + enums: ["width", "height", "average", "min", "max"] + }, + bgWH: { + number: true, + min: 0, + allowPercent: true, + enums: ["auto"], + multiple: true + }, + bgPos: { + number: true, + allowPercent: true, + multiple: true + }, + bgRelativeTo: { + enums: ["inner", "include-padding"], + multiple: true + }, + bgRepeat: { + enums: ["repeat", "repeat-x", "repeat-y", "no-repeat"], + multiple: true + }, + bgFit: { + enums: ["none", "contain", "cover"], + multiple: true + }, + bgCrossOrigin: { + enums: ["anonymous", "use-credentials", "null"], + multiple: true + }, + bgClip: { + enums: ["none", "node"], + multiple: true + }, + bgContainment: { + enums: ["inside", "over"], + multiple: true + }, + boxSelection: { + enums: ["contain", "overlap", "none"] + }, + color: { + color: true + }, + colors: { + color: true, + multiple: true + }, + fill: { + enums: ["solid", "linear-gradient", "radial-gradient"] + }, + bool: { + enums: ["yes", "no"] + }, + bools: { + enums: ["yes", "no"], + multiple: true + }, + lineStyle: { + enums: ["solid", "dotted", "dashed"] + }, + lineCap: { + enums: ["butt", "round", "square"] + }, + linePosition: { + enums: ["center", "inside", "outside"] + }, + lineJoin: { + enums: ["round", "bevel", "miter"] + }, + borderStyle: { + enums: ["solid", "dotted", "dashed", "double"] + }, + curveStyle: { + enums: ["bezier", "unbundled-bezier", "haystack", "segments", "straight", "straight-triangle", "taxi", "round-segments", "round-taxi"] + }, + radiusType: { + enums: ["arc-radius", "influence-radius"], + multiple: true + }, + fontFamily: { + regex: '^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$' + }, + fontStyle: { + enums: ["italic", "normal", "oblique"] + }, + fontWeight: { + enums: ["normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "800", "900", 100, 200, 300, 400, 500, 600, 700, 800, 900] + }, + textDecoration: { + enums: ["none", "underline", "overline", "line-through"] + }, + textTransform: { + enums: ["none", "uppercase", "lowercase"] + }, + textWrap: { + enums: ["none", "wrap", "ellipsis"] + }, + textOverflowWrap: { + enums: ["whitespace", "anywhere"] + }, + textBackgroundShape: { + enums: ["rectangle", "roundrectangle", "round-rectangle", "circle"] + }, + nodeShape: { + enums: ["rectangle", "roundrectangle", "round-rectangle", "cutrectangle", "cut-rectangle", "bottomroundrectangle", "bottom-round-rectangle", "barrel", "ellipse", "triangle", "round-triangle", "square", "pentagon", "round-pentagon", "hexagon", "round-hexagon", "concavehexagon", "concave-hexagon", "heptagon", "round-heptagon", "octagon", "round-octagon", "tag", "round-tag", "star", "diamond", "round-diamond", "vee", "rhomboid", "right-rhomboid", "polygon"] + }, + overlayShape: { + enums: ["roundrectangle", "round-rectangle", "ellipse"] + }, + cornerRadius: { + number: true, + min: 0, + units: "px|em", + implicitUnits: "px", + enums: ["auto"] + }, + compoundIncludeLabels: { + enums: ["include", "exclude"] + }, + arrowShape: { + enums: ["tee", "triangle", "triangle-tee", "circle-triangle", "triangle-cross", "triangle-backcurve", "vee", "square", "circle", "diamond", "chevron", "none"] + }, + arrowFill: { + enums: ["filled", "hollow"] + }, + arrowWidth: { + number: true, + units: "%|px|em", + implicitUnits: "px", + enums: ["match-line"] + }, + display: { + enums: ["element", "none"] + }, + visibility: { + enums: ["hidden", "visible"] + }, + zCompoundDepth: { + enums: ["bottom", "orphan", "auto", "top"] + }, + zIndexCompare: { + enums: ["auto", "manual"] + }, + valign: { + enums: ["top", "center", "bottom"] + }, + halign: { + enums: ["left", "center", "right"] + }, + justification: { + enums: ["left", "center", "right", "auto"] + }, + text: { + string: true + }, + data: { + mapping: true, + regex: data5("data") + }, + layoutData: { + mapping: true, + regex: data5("layoutData") + }, + scratch: { + mapping: true, + regex: data5("scratch") + }, + mapData: { + mapping: true, + regex: mapData("mapData") + }, + mapLayoutData: { + mapping: true, + regex: mapData("mapLayoutData") + }, + mapScratch: { + mapping: true, + regex: mapData("mapScratch") + }, + fn: { + mapping: true, + fn: true + }, + url: { + regexes: urlRegexes, + singleRegexMatchValue: true + }, + urls: { + regexes: urlRegexes, + singleRegexMatchValue: true, + multiple: true + }, + propList: { + propList: true + }, + angle: { + number: true, + units: "deg|rad", + implicitUnits: "rad" + }, + textRotation: { + number: true, + units: "deg|rad", + implicitUnits: "rad", + enums: ["none", "autorotate"] + }, + polygonPointList: { + number: true, + multiple: true, + evenMultiple: true, + min: -1, + max: 1, + unitless: true + }, + edgeDistances: { + enums: ["intersection", "node-position", "endpoints"] + }, + edgeEndpoint: { + number: true, + multiple: true, + units: "%|px|em|deg|rad", + implicitUnits: "px", + enums: ["inside-to-node", "outside-to-node", "outside-to-node-or-label", "outside-to-line", "outside-to-line-or-label"], + singleEnum: true, + validate: /* @__PURE__ */ __name(function validate(valArr, unitsArr) { + switch (valArr.length) { + case 2: + return unitsArr[0] !== "deg" && unitsArr[0] !== "rad" && unitsArr[1] !== "deg" && unitsArr[1] !== "rad"; + case 1: + return string(valArr[0]) || unitsArr[0] === "deg" || unitsArr[0] === "rad"; + default: + return false; + } + }, "validate") + }, + easing: { + regexes: ["^(spring)\\s*\\(\\s*(" + number$12 + ")\\s*,\\s*(" + number$12 + ")\\s*\\)$", "^(cubic-bezier)\\s*\\(\\s*(" + number$12 + ")\\s*,\\s*(" + number$12 + ")\\s*,\\s*(" + number$12 + ")\\s*,\\s*(" + number$12 + ")\\s*\\)$"], + enums: ["linear", "ease", "ease-in", "ease-out", "ease-in-out", "ease-in-sine", "ease-out-sine", "ease-in-out-sine", "ease-in-quad", "ease-out-quad", "ease-in-out-quad", "ease-in-cubic", "ease-out-cubic", "ease-in-out-cubic", "ease-in-quart", "ease-out-quart", "ease-in-out-quart", "ease-in-quint", "ease-out-quint", "ease-in-out-quint", "ease-in-expo", "ease-out-expo", "ease-in-out-expo", "ease-in-circ", "ease-out-circ", "ease-in-out-circ"] + }, + gradientDirection: { + enums: [ + "to-bottom", + "to-top", + "to-left", + "to-right", + "to-bottom-right", + "to-bottom-left", + "to-top-right", + "to-top-left", + "to-right-bottom", + "to-left-bottom", + "to-right-top", + "to-left-top" + // different order + ] + }, + boundsExpansion: { + number: true, + multiple: true, + min: 0, + validate: /* @__PURE__ */ __name(function validate(valArr) { + var length2 = valArr.length; + return length2 === 1 || length2 === 2 || length2 === 4; + }, "validate") } - if (isRuleCall(feature)) { - const rule = feature.rule.ref; - if (!rule) { - throw new Error("This cst node was not parsed by a rule."); + }; + var diff2 = { + zeroNonZero: /* @__PURE__ */ __name(function zeroNonZero(val1, val2) { + if ((val1 == null || val2 == null) && val1 !== val2) { + return true; } - return this.runConverter(rule, input, cstNode); - } - return input; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - runConverter(rule, input, cstNode) { - var _a; - switch (rule.name.toUpperCase()) { - case "INT": - return ValueConverter.convertInt(input); - case "STRING": - return ValueConverter.convertString(input); - case "ID": - return ValueConverter.convertID(input); - } - switch ((_a = getRuleType(rule)) === null || _a === void 0 ? void 0 : _a.toLowerCase()) { - case "number": - return ValueConverter.convertNumber(input); - case "boolean": - return ValueConverter.convertBoolean(input); - case "bigint": - return ValueConverter.convertBigint(input); - case "date": - return ValueConverter.convertDate(input); - default: - return input; - } - } - }; - (function(ValueConverter2) { - function convertString(input) { - let result = ""; - for (let i2 = 1; i2 < input.length - 1; i2++) { - const c3 = input.charAt(i2); - if (c3 === "\\") { - const c1 = input.charAt(++i2); - result += convertEscapeCharacter(c1); + if (val1 == 0 && val2 != 0) { + return true; + } else if (val1 != 0 && val2 == 0) { + return true; } else { - result += c3; + return false; } - } - return result; - } - __name(convertString, "convertString"); - ValueConverter2.convertString = convertString; - function convertEscapeCharacter(char2) { - switch (char2) { - case "b": - return "\b"; - case "f": - return "\f"; - case "n": - return "\n"; - case "r": - return "\r"; - case "t": - return " "; - case "v": - return "\v"; - case "0": - return "\0"; - default: - return char2; - } - } - __name(convertEscapeCharacter, "convertEscapeCharacter"); - function convertID(input) { - if (input.charAt(0) === "^") { - return input.substring(1); - } else { - return input; - } - } - __name(convertID, "convertID"); - ValueConverter2.convertID = convertID; - function convertInt(input) { - return parseInt(input); - } - __name(convertInt, "convertInt"); - ValueConverter2.convertInt = convertInt; - function convertBigint(input) { - return BigInt(input); - } - __name(convertBigint, "convertBigint"); - ValueConverter2.convertBigint = convertBigint; - function convertDate(input) { - return new Date(input); - } - __name(convertDate, "convertDate"); - ValueConverter2.convertDate = convertDate; - function convertNumber(input) { - return Number(input); - } - __name(convertNumber, "convertNumber"); - ValueConverter2.convertNumber = convertNumber; - function convertBoolean(input) { - return input.toLowerCase() === "true"; - } - __name(convertBoolean, "convertBoolean"); - ValueConverter2.convertBoolean = convertBoolean; - })(ValueConverter || (ValueConverter = {})); - } - }); - - // ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js - var require_ral = __commonJS({ - "../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - var _ral; - function RAL() { - if (_ral === void 0) { - throw new Error(`No runtime abstraction layer installed`); - } - return _ral; - } - __name(RAL, "RAL"); - (function(RAL2) { - function install(ral) { - if (ral === void 0) { - throw new Error(`No runtime abstraction layer provided`); - } - _ral = ral; - } - __name(install, "install"); - RAL2.install = install; - })(RAL || (RAL = {})); - exports2.default = RAL; - } - }); - - // ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js - var require_is = __commonJS({ - "../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.stringArray = exports2.array = exports2.func = exports2.error = exports2.number = exports2.string = exports2.boolean = void 0; - function boolean(value2) { - return value2 === true || value2 === false; - } - __name(boolean, "boolean"); - exports2.boolean = boolean; - function string3(value2) { - return typeof value2 === "string" || value2 instanceof String; - } - __name(string3, "string"); - exports2.string = string3; - function number7(value2) { - return typeof value2 === "number" || value2 instanceof Number; - } - __name(number7, "number"); - exports2.number = number7; - function error3(value2) { - return value2 instanceof Error; - } - __name(error3, "error"); - exports2.error = error3; - function func(value2) { - return typeof value2 === "function"; - } - __name(func, "func"); - exports2.func = func; - function array4(value2) { - return Array.isArray(value2); - } - __name(array4, "array"); - exports2.array = array4; - function stringArray(value2) { - return array4(value2) && value2.every((elem) => string3(elem)); - } - __name(stringArray, "stringArray"); - exports2.stringArray = stringArray; - } - }); - - // ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js - var require_events = __commonJS({ - "../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.Emitter = exports2.Event = void 0; - var ral_1 = require_ral(); - var Event3; - (function(Event4) { - const _disposable = { dispose() { - } }; - Event4.None = function() { - return _disposable; + }, "zeroNonZero"), + any: /* @__PURE__ */ __name(function any(val1, val2) { + return val1 != val2; + }, "any"), + emptyNonEmpty: /* @__PURE__ */ __name(function emptyNonEmpty(str1, str2) { + var empty1 = emptyString(str1); + var empty22 = emptyString(str2); + return empty1 && !empty22 || !empty1 && empty22; + }, "emptyNonEmpty") }; - })(Event3 || (exports2.Event = Event3 = {})); - var CallbackList = class { - static { - __name(this, "CallbackList"); - } - add(callback, context = null, bucket) { - if (!this._callbacks) { - this._callbacks = []; - this._contexts = []; - } - this._callbacks.push(callback); - this._contexts.push(context); - if (Array.isArray(bucket)) { - bucket.push({ dispose: /* @__PURE__ */ __name(() => this.remove(callback, context), "dispose") }); - } - } - remove(callback, context = null) { - if (!this._callbacks) { - return; - } - let foundCallbackWithDifferentContext = false; - for (let i2 = 0, len = this._callbacks.length; i2 < len; i2++) { - if (this._callbacks[i2] === callback) { - if (this._contexts[i2] === context) { - this._callbacks.splice(i2, 1); - this._contexts.splice(i2, 1); - return; - } else { - foundCallbackWithDifferentContext = true; - } + var t4 = styfn$2.types; + var mainLabel = [{ + name: "label", + type: t4.text, + triggersBounds: diff2.any, + triggersZOrder: diff2.emptyNonEmpty + }, { + name: "text-rotation", + type: t4.textRotation, + triggersBounds: diff2.any + }, { + name: "text-margin-x", + type: t4.bidirectionalSize, + triggersBounds: diff2.any + }, { + name: "text-margin-y", + type: t4.bidirectionalSize, + triggersBounds: diff2.any + }]; + var sourceLabel = [{ + name: "source-label", + type: t4.text, + triggersBounds: diff2.any + }, { + name: "source-text-rotation", + type: t4.textRotation, + triggersBounds: diff2.any + }, { + name: "source-text-margin-x", + type: t4.bidirectionalSize, + triggersBounds: diff2.any + }, { + name: "source-text-margin-y", + type: t4.bidirectionalSize, + triggersBounds: diff2.any + }, { + name: "source-text-offset", + type: t4.size, + triggersBounds: diff2.any + }]; + var targetLabel = [{ + name: "target-label", + type: t4.text, + triggersBounds: diff2.any + }, { + name: "target-text-rotation", + type: t4.textRotation, + triggersBounds: diff2.any + }, { + name: "target-text-margin-x", + type: t4.bidirectionalSize, + triggersBounds: diff2.any + }, { + name: "target-text-margin-y", + type: t4.bidirectionalSize, + triggersBounds: diff2.any + }, { + name: "target-text-offset", + type: t4.size, + triggersBounds: diff2.any + }]; + var labelDimensions = [{ + name: "font-family", + type: t4.fontFamily, + triggersBounds: diff2.any + }, { + name: "font-style", + type: t4.fontStyle, + triggersBounds: diff2.any + }, { + name: "font-weight", + type: t4.fontWeight, + triggersBounds: diff2.any + }, { + name: "font-size", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "text-transform", + type: t4.textTransform, + triggersBounds: diff2.any + }, { + name: "text-wrap", + type: t4.textWrap, + triggersBounds: diff2.any + }, { + name: "text-overflow-wrap", + type: t4.textOverflowWrap, + triggersBounds: diff2.any + }, { + name: "text-max-width", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "text-outline-width", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "line-height", + type: t4.positiveNumber, + triggersBounds: diff2.any + }]; + var commonLabel = [{ + name: "text-valign", + type: t4.valign, + triggersBounds: diff2.any + }, { + name: "text-halign", + type: t4.halign, + triggersBounds: diff2.any + }, { + name: "color", + type: t4.color + }, { + name: "text-outline-color", + type: t4.color + }, { + name: "text-outline-opacity", + type: t4.zeroOneNumber + }, { + name: "text-background-color", + type: t4.color + }, { + name: "text-background-opacity", + type: t4.zeroOneNumber + }, { + name: "text-background-padding", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "text-border-opacity", + type: t4.zeroOneNumber + }, { + name: "text-border-color", + type: t4.color + }, { + name: "text-border-width", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "text-border-style", + type: t4.borderStyle, + triggersBounds: diff2.any + }, { + name: "text-background-shape", + type: t4.textBackgroundShape, + triggersBounds: diff2.any + }, { + name: "text-justification", + type: t4.justification + }, { + name: "box-select-labels", + type: t4.bool, + triggersBounds: diff2.any + }]; + var behavior = [{ + name: "events", + type: t4.bool, + triggersZOrder: diff2.any + }, { + name: "text-events", + type: t4.bool, + triggersZOrder: diff2.any + }, { + name: "box-selection", + type: t4.boxSelection, + triggersZOrder: diff2.any + }]; + var visibility = [{ + name: "display", + type: t4.display, + triggersZOrder: diff2.any, + triggersBounds: diff2.any, + triggersBoundsOfConnectedEdges: diff2.any, + triggersBoundsOfParallelEdges: /* @__PURE__ */ __name(function triggersBoundsOfParallelEdges(fromValue, toValue, ele) { + if (fromValue === toValue) { + return false; } + return ele.pstyle("curve-style").value === "bezier"; + }, "triggersBoundsOfParallelEdges") + }, { + name: "visibility", + type: t4.visibility, + triggersZOrder: diff2.any + }, { + name: "opacity", + type: t4.zeroOneNumber, + triggersZOrder: diff2.zeroNonZero + }, { + name: "text-opacity", + type: t4.zeroOneNumber + }, { + name: "min-zoomed-font-size", + type: t4.size + }, { + name: "z-compound-depth", + type: t4.zCompoundDepth, + triggersZOrder: diff2.any + }, { + name: "z-index-compare", + type: t4.zIndexCompare, + triggersZOrder: diff2.any + }, { + name: "z-index", + type: t4.number, + triggersZOrder: diff2.any + }]; + var overlay = [{ + name: "overlay-padding", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "overlay-color", + type: t4.color + }, { + name: "overlay-opacity", + type: t4.zeroOneNumber, + triggersBounds: diff2.zeroNonZero + }, { + name: "overlay-shape", + type: t4.overlayShape, + triggersBounds: diff2.any + }, { + name: "overlay-corner-radius", + type: t4.cornerRadius + }]; + var underlay = [{ + name: "underlay-padding", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "underlay-color", + type: t4.color + }, { + name: "underlay-opacity", + type: t4.zeroOneNumber, + triggersBounds: diff2.zeroNonZero + }, { + name: "underlay-shape", + type: t4.overlayShape, + triggersBounds: diff2.any + }, { + name: "underlay-corner-radius", + type: t4.cornerRadius + }]; + var transition2 = [{ + name: "transition-property", + type: t4.propList + }, { + name: "transition-duration", + type: t4.time + }, { + name: "transition-delay", + type: t4.time + }, { + name: "transition-timing-function", + type: t4.easing + }]; + var nodeSizeHashOverride = /* @__PURE__ */ __name(function nodeSizeHashOverride2(ele, parsedProp) { + if (parsedProp.value === "label") { + return -ele.poolIndex(); + } else { + return parsedProp.pfValue; } - if (foundCallbackWithDifferentContext) { - throw new Error("When adding a listener with a context, you should remove it with the same context"); - } - } - invoke(...args) { - if (!this._callbacks) { - return []; - } - const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0); - for (let i2 = 0, len = callbacks.length; i2 < len; i2++) { - try { - ret.push(callbacks[i2].apply(contexts[i2], args)); - } catch (e3) { - (0, ral_1.default)().console.error(e3); + }, "nodeSizeHashOverride"); + var nodeBody = [{ + name: "height", + type: t4.nodeSize, + triggersBounds: diff2.any, + hashOverride: nodeSizeHashOverride + }, { + name: "width", + type: t4.nodeSize, + triggersBounds: diff2.any, + hashOverride: nodeSizeHashOverride + }, { + name: "shape", + type: t4.nodeShape, + triggersBounds: diff2.any + }, { + name: "shape-polygon-points", + type: t4.polygonPointList, + triggersBounds: diff2.any + }, { + name: "corner-radius", + type: t4.cornerRadius + }, { + name: "background-color", + type: t4.color + }, { + name: "background-fill", + type: t4.fill + }, { + name: "background-opacity", + type: t4.zeroOneNumber + }, { + name: "background-blacken", + type: t4.nOneOneNumber + }, { + name: "background-gradient-stop-colors", + type: t4.colors + }, { + name: "background-gradient-stop-positions", + type: t4.percentages + }, { + name: "background-gradient-direction", + type: t4.gradientDirection + }, { + name: "padding", + type: t4.sizeMaybePercent, + triggersBounds: diff2.any + }, { + name: "padding-relative-to", + type: t4.paddingRelativeTo, + triggersBounds: diff2.any + }, { + name: "bounds-expansion", + type: t4.boundsExpansion, + triggersBounds: diff2.any + }]; + var nodeBorder = [{ + name: "border-color", + type: t4.color + }, { + name: "border-opacity", + type: t4.zeroOneNumber + }, { + name: "border-width", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "border-style", + type: t4.borderStyle + }, { + name: "border-cap", + type: t4.lineCap + }, { + name: "border-join", + type: t4.lineJoin + }, { + name: "border-dash-pattern", + type: t4.numbers + }, { + name: "border-dash-offset", + type: t4.number + }, { + name: "border-position", + type: t4.linePosition + }]; + var nodeOutline = [{ + name: "outline-color", + type: t4.color + }, { + name: "outline-opacity", + type: t4.zeroOneNumber + }, { + name: "outline-width", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "outline-style", + type: t4.borderStyle + }, { + name: "outline-offset", + type: t4.size, + triggersBounds: diff2.any + }]; + var backgroundImage = [{ + name: "background-image", + type: t4.urls + }, { + name: "background-image-crossorigin", + type: t4.bgCrossOrigin + }, { + name: "background-image-opacity", + type: t4.zeroOneNumbers + }, { + name: "background-image-containment", + type: t4.bgContainment + }, { + name: "background-image-smoothing", + type: t4.bools + }, { + name: "background-position-x", + type: t4.bgPos + }, { + name: "background-position-y", + type: t4.bgPos + }, { + name: "background-width-relative-to", + type: t4.bgRelativeTo + }, { + name: "background-height-relative-to", + type: t4.bgRelativeTo + }, { + name: "background-repeat", + type: t4.bgRepeat + }, { + name: "background-fit", + type: t4.bgFit + }, { + name: "background-clip", + type: t4.bgClip + }, { + name: "background-width", + type: t4.bgWH + }, { + name: "background-height", + type: t4.bgWH + }, { + name: "background-offset-x", + type: t4.bgPos + }, { + name: "background-offset-y", + type: t4.bgPos + }]; + var compound = [{ + name: "position", + type: t4.position, + triggersBounds: diff2.any + }, { + name: "compound-sizing-wrt-labels", + type: t4.compoundIncludeLabels, + triggersBounds: diff2.any + }, { + name: "min-width", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "min-width-bias-left", + type: t4.sizeMaybePercent, + triggersBounds: diff2.any + }, { + name: "min-width-bias-right", + type: t4.sizeMaybePercent, + triggersBounds: diff2.any + }, { + name: "min-height", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "min-height-bias-top", + type: t4.sizeMaybePercent, + triggersBounds: diff2.any + }, { + name: "min-height-bias-bottom", + type: t4.sizeMaybePercent, + triggersBounds: diff2.any + }]; + var edgeLine = [{ + name: "line-style", + type: t4.lineStyle + }, { + name: "line-color", + type: t4.color + }, { + name: "line-fill", + type: t4.fill + }, { + name: "line-cap", + type: t4.lineCap + }, { + name: "line-opacity", + type: t4.zeroOneNumber + }, { + name: "line-dash-pattern", + type: t4.numbers + }, { + name: "line-dash-offset", + type: t4.number + }, { + name: "line-outline-width", + type: t4.size + }, { + name: "line-outline-color", + type: t4.color + }, { + name: "line-gradient-stop-colors", + type: t4.colors + }, { + name: "line-gradient-stop-positions", + type: t4.percentages + }, { + name: "curve-style", + type: t4.curveStyle, + triggersBounds: diff2.any, + triggersBoundsOfParallelEdges: /* @__PURE__ */ __name(function triggersBoundsOfParallelEdges(fromValue, toValue) { + if (fromValue === toValue) { + return false; } - } - return ret; + return fromValue === "bezier" || // remove from bundle + toValue === "bezier"; + }, "triggersBoundsOfParallelEdges") + }, { + name: "haystack-radius", + type: t4.zeroOneNumber, + triggersBounds: diff2.any + }, { + name: "source-endpoint", + type: t4.edgeEndpoint, + triggersBounds: diff2.any + }, { + name: "target-endpoint", + type: t4.edgeEndpoint, + triggersBounds: diff2.any + }, { + name: "control-point-step-size", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "control-point-distances", + type: t4.bidirectionalSizes, + triggersBounds: diff2.any + }, { + name: "control-point-weights", + type: t4.numbers, + triggersBounds: diff2.any + }, { + name: "segment-distances", + type: t4.bidirectionalSizes, + triggersBounds: diff2.any + }, { + name: "segment-weights", + type: t4.numbers, + triggersBounds: diff2.any + }, { + name: "segment-radii", + type: t4.numbers, + triggersBounds: diff2.any + }, { + name: "radius-type", + type: t4.radiusType, + triggersBounds: diff2.any + }, { + name: "taxi-turn", + type: t4.bidirectionalSizeMaybePercent, + triggersBounds: diff2.any + }, { + name: "taxi-turn-min-distance", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "taxi-direction", + type: t4.axisDirection, + triggersBounds: diff2.any + }, { + name: "taxi-radius", + type: t4.number, + triggersBounds: diff2.any + }, { + name: "edge-distances", + type: t4.edgeDistances, + triggersBounds: diff2.any + }, { + name: "arrow-scale", + type: t4.positiveNumber, + triggersBounds: diff2.any + }, { + name: "loop-direction", + type: t4.angle, + triggersBounds: diff2.any + }, { + name: "loop-sweep", + type: t4.angle, + triggersBounds: diff2.any + }, { + name: "source-distance-from-node", + type: t4.size, + triggersBounds: diff2.any + }, { + name: "target-distance-from-node", + type: t4.size, + triggersBounds: diff2.any + }]; + var ghost = [{ + name: "ghost", + type: t4.bool, + triggersBounds: diff2.any + }, { + name: "ghost-offset-x", + type: t4.bidirectionalSize, + triggersBounds: diff2.any + }, { + name: "ghost-offset-y", + type: t4.bidirectionalSize, + triggersBounds: diff2.any + }, { + name: "ghost-opacity", + type: t4.zeroOneNumber + }]; + var core4 = [{ + name: "selection-box-color", + type: t4.color + }, { + name: "selection-box-opacity", + type: t4.zeroOneNumber + }, { + name: "selection-box-border-color", + type: t4.color + }, { + name: "selection-box-border-width", + type: t4.size + }, { + name: "active-bg-color", + type: t4.color + }, { + name: "active-bg-opacity", + type: t4.zeroOneNumber + }, { + name: "active-bg-size", + type: t4.size + }, { + name: "outside-texture-bg-color", + type: t4.color + }, { + name: "outside-texture-bg-opacity", + type: t4.zeroOneNumber + }]; + var pie2 = []; + styfn$2.pieBackgroundN = 16; + pie2.push({ + name: "pie-size", + type: t4.sizeMaybePercent + }); + pie2.push({ + name: "pie-hole", + type: t4.sizeMaybePercent + }); + pie2.push({ + name: "pie-start-angle", + type: t4.angle + }); + for (var i2 = 1; i2 <= styfn$2.pieBackgroundN; i2++) { + pie2.push({ + name: "pie-" + i2 + "-background-color", + type: t4.color + }); + pie2.push({ + name: "pie-" + i2 + "-background-size", + type: t4.percent + }); + pie2.push({ + name: "pie-" + i2 + "-background-opacity", + type: t4.zeroOneNumber + }); } - isEmpty() { - return !this._callbacks || this._callbacks.length === 0; + var stripe = []; + styfn$2.stripeBackgroundN = 16; + stripe.push({ + name: "stripe-size", + type: t4.sizeMaybePercent + }); + stripe.push({ + name: "stripe-direction", + type: t4.axisDirectionPrimary + }); + for (var _i = 1; _i <= styfn$2.stripeBackgroundN; _i++) { + stripe.push({ + name: "stripe-" + _i + "-background-color", + type: t4.color + }); + stripe.push({ + name: "stripe-" + _i + "-background-size", + type: t4.percent + }); + stripe.push({ + name: "stripe-" + _i + "-background-opacity", + type: t4.zeroOneNumber + }); } - dispose() { - this._callbacks = void 0; - this._contexts = void 0; + var edgeArrow = []; + var arrowPrefixes = styfn$2.arrowPrefixes = ["source", "mid-source", "target", "mid-target"]; + [{ + name: "arrow-shape", + type: t4.arrowShape, + triggersBounds: diff2.any + }, { + name: "arrow-color", + type: t4.color + }, { + name: "arrow-fill", + type: t4.arrowFill + }, { + name: "arrow-width", + type: t4.arrowWidth + }].forEach(function(prop2) { + arrowPrefixes.forEach(function(prefix) { + var name = prefix + "-" + prop2.name; + var type3 = prop2.type, triggersBounds = prop2.triggersBounds; + edgeArrow.push({ + name, + type: type3, + triggersBounds + }); + }); + }, {}); + var props = styfn$2.properties = [].concat(behavior, transition2, visibility, overlay, underlay, ghost, commonLabel, labelDimensions, mainLabel, sourceLabel, targetLabel, nodeBody, nodeBorder, nodeOutline, backgroundImage, pie2, stripe, compound, edgeLine, edgeArrow, core4); + var propGroups = styfn$2.propertyGroups = { + // common to all eles + behavior, + transition: transition2, + visibility, + overlay, + underlay, + ghost, + // labels + commonLabel, + labelDimensions, + mainLabel, + sourceLabel, + targetLabel, + // node props + nodeBody, + nodeBorder, + nodeOutline, + backgroundImage, + pie: pie2, + stripe, + compound, + // edge props + edgeLine, + edgeArrow, + core: core4 + }; + var propGroupNames = styfn$2.propertyGroupNames = {}; + var propGroupKeys = styfn$2.propertyGroupKeys = Object.keys(propGroups); + propGroupKeys.forEach(function(key) { + propGroupNames[key] = propGroups[key].map(function(prop2) { + return prop2.name; + }); + propGroups[key].forEach(function(prop2) { + return prop2.groupKey = key; + }); + }); + var aliases = styfn$2.aliases = [{ + name: "content", + pointsTo: "label" + }, { + name: "control-point-distance", + pointsTo: "control-point-distances" + }, { + name: "control-point-weight", + pointsTo: "control-point-weights" + }, { + name: "segment-distance", + pointsTo: "segment-distances" + }, { + name: "segment-weight", + pointsTo: "segment-weights" + }, { + name: "segment-radius", + pointsTo: "segment-radii" + }, { + name: "edge-text-rotation", + pointsTo: "text-rotation" + }, { + name: "padding-left", + pointsTo: "padding" + }, { + name: "padding-right", + pointsTo: "padding" + }, { + name: "padding-top", + pointsTo: "padding" + }, { + name: "padding-bottom", + pointsTo: "padding" + }]; + styfn$2.propertyNames = props.map(function(p3) { + return p3.name; + }); + for (var _i2 = 0; _i2 < props.length; _i2++) { + var prop = props[_i2]; + props[prop.name] = prop; } - }; - var Emitter4 = class _Emitter { - static { - __name(this, "Emitter"); + for (var _i3 = 0; _i3 < aliases.length; _i3++) { + var alias = aliases[_i3]; + var pointsToProp = props[alias.pointsTo]; + var aliasProp = { + name: alias.name, + alias: true, + pointsTo: pointsToProp + }; + props.push(aliasProp); + props[alias.name] = aliasProp; } - constructor(_options) { - this._options = _options; + })(); + styfn$2.getDefaultProperty = function(name) { + return this.getDefaultProperties()[name]; + }; + styfn$2.getDefaultProperties = function() { + var _p = this._private; + if (_p.defaultProperties != null) { + return _p.defaultProperties; } - /** - * For the public to allow to subscribe - * to events from this Emitter - */ - get event() { - if (!this._event) { - this._event = (listener, thisArgs, disposables) => { - if (!this._callbacks) { - this._callbacks = new CallbackList(); - } - if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) { - this._options.onFirstListenerAdd(this); - } - this._callbacks.add(listener, thisArgs); - const result = { - dispose: /* @__PURE__ */ __name(() => { - if (!this._callbacks) { - return; - } - this._callbacks.remove(listener, thisArgs); - result.dispose = _Emitter._noop; - if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) { - this._options.onLastListenerRemove(this); - } - }, "dispose") - }; - if (Array.isArray(disposables)) { - disposables.push(result); - } - return result; - }; + var rawProps = extend4({ + // core props + "selection-box-color": "#ddd", + "selection-box-opacity": 0.65, + "selection-box-border-color": "#aaa", + "selection-box-border-width": 1, + "active-bg-color": "black", + "active-bg-opacity": 0.15, + "active-bg-size": 30, + "outside-texture-bg-color": "#000", + "outside-texture-bg-opacity": 0.125, + // common node/edge props + "events": "yes", + "text-events": "no", + "text-valign": "top", + "text-halign": "center", + "text-justification": "auto", + "line-height": 1, + "color": "#000", + "box-selection": "contain", + "text-outline-color": "#000", + "text-outline-width": 0, + "text-outline-opacity": 1, + "text-opacity": 1, + "text-decoration": "none", + "text-transform": "none", + "text-wrap": "none", + "text-overflow-wrap": "whitespace", + "text-max-width": 9999, + "text-background-color": "#000", + "text-background-opacity": 0, + "text-background-shape": "rectangle", + "text-background-padding": 0, + "text-border-opacity": 0, + "text-border-width": 0, + "text-border-style": "solid", + "text-border-color": "#000", + "font-family": "Helvetica Neue, Helvetica, sans-serif", + "font-style": "normal", + "font-weight": "normal", + "font-size": 16, + "min-zoomed-font-size": 0, + "text-rotation": "none", + "source-text-rotation": "none", + "target-text-rotation": "none", + "visibility": "visible", + "display": "element", + "opacity": 1, + "z-compound-depth": "auto", + "z-index-compare": "auto", + "z-index": 0, + "label": "", + "text-margin-x": 0, + "text-margin-y": 0, + "source-label": "", + "source-text-offset": 0, + "source-text-margin-x": 0, + "source-text-margin-y": 0, + "target-label": "", + "target-text-offset": 0, + "target-text-margin-x": 0, + "target-text-margin-y": 0, + "overlay-opacity": 0, + "overlay-color": "#000", + "overlay-padding": 10, + "overlay-shape": "round-rectangle", + "overlay-corner-radius": "auto", + "underlay-opacity": 0, + "underlay-color": "#000", + "underlay-padding": 10, + "underlay-shape": "round-rectangle", + "underlay-corner-radius": "auto", + "transition-property": "none", + "transition-duration": 0, + "transition-delay": 0, + "transition-timing-function": "linear", + "box-select-labels": "no", + // node props + "background-blacken": 0, + "background-color": "#999", + "background-fill": "solid", + "background-opacity": 1, + "background-image": "none", + "background-image-crossorigin": "anonymous", + "background-image-opacity": 1, + "background-image-containment": "inside", + "background-image-smoothing": "yes", + "background-position-x": "50%", + "background-position-y": "50%", + "background-offset-x": 0, + "background-offset-y": 0, + "background-width-relative-to": "include-padding", + "background-height-relative-to": "include-padding", + "background-repeat": "no-repeat", + "background-fit": "none", + "background-clip": "node", + "background-width": "auto", + "background-height": "auto", + "border-color": "#000", + "border-opacity": 1, + "border-width": 0, + "border-style": "solid", + "border-dash-pattern": [4, 2], + "border-dash-offset": 0, + "border-cap": "butt", + "border-join": "miter", + "border-position": "center", + "outline-color": "#999", + "outline-opacity": 1, + "outline-width": 0, + "outline-offset": 0, + "outline-style": "solid", + "height": 30, + "width": 30, + "shape": "ellipse", + "shape-polygon-points": "-1, -1, 1, -1, 1, 1, -1, 1", + "corner-radius": "auto", + "bounds-expansion": 0, + // node gradient + "background-gradient-direction": "to-bottom", + "background-gradient-stop-colors": "#999", + "background-gradient-stop-positions": "0%", + // ghost props + "ghost": "no", + "ghost-offset-y": 0, + "ghost-offset-x": 0, + "ghost-opacity": 0, + // compound props + "padding": 0, + "padding-relative-to": "width", + "position": "origin", + "compound-sizing-wrt-labels": "include", + "min-width": 0, + "min-width-bias-left": 0, + "min-width-bias-right": 0, + "min-height": 0, + "min-height-bias-top": 0, + "min-height-bias-bottom": 0 + }, { + // node pie bg + "pie-size": "100%", + "pie-hole": 0, + "pie-start-angle": "0deg" + }, [{ + name: "pie-{{i}}-background-color", + value: "black" + }, { + name: "pie-{{i}}-background-size", + value: "0%" + }, { + name: "pie-{{i}}-background-opacity", + value: 1 + }].reduce(function(css, prop2) { + for (var i3 = 1; i3 <= styfn$2.pieBackgroundN; i3++) { + var name2 = prop2.name.replace("{{i}}", i3); + var val2 = prop2.value; + css[name2] = val2; } - return this._event; - } - /** - * To be kept private to fire an event to - * subscribers - */ - fire(event3) { - if (this._callbacks) { - this._callbacks.invoke.call(this._callbacks, event3); + return css; + }, {}), { + // node stripes bg + "stripe-size": "100%", + "stripe-direction": "horizontal" + }, [{ + name: "stripe-{{i}}-background-color", + value: "black" + }, { + name: "stripe-{{i}}-background-size", + value: "0%" + }, { + name: "stripe-{{i}}-background-opacity", + value: 1 + }].reduce(function(css, prop2) { + for (var i3 = 1; i3 <= styfn$2.stripeBackgroundN; i3++) { + var name2 = prop2.name.replace("{{i}}", i3); + var val2 = prop2.value; + css[name2] = val2; + } + return css; + }, {}), { + // edge props + "line-style": "solid", + "line-color": "#999", + "line-fill": "solid", + "line-cap": "butt", + "line-opacity": 1, + "line-outline-width": 0, + "line-outline-color": "#000", + "line-gradient-stop-colors": "#999", + "line-gradient-stop-positions": "0%", + "control-point-step-size": 40, + "control-point-weights": 0.5, + "segment-weights": 0.5, + "segment-distances": 20, + "segment-radii": 15, + "radius-type": "arc-radius", + "taxi-turn": "50%", + "taxi-radius": 15, + "taxi-turn-min-distance": 10, + "taxi-direction": "auto", + "edge-distances": "intersection", + "curve-style": "haystack", + "haystack-radius": 0, + "arrow-scale": 1, + "loop-direction": "-45deg", + "loop-sweep": "-90deg", + "source-distance-from-node": 0, + "target-distance-from-node": 0, + "source-endpoint": "outside-to-node", + "target-endpoint": "outside-to-node", + "line-dash-pattern": [6, 3], + "line-dash-offset": 0 + }, [{ + name: "arrow-shape", + value: "none" + }, { + name: "arrow-color", + value: "#999" + }, { + name: "arrow-fill", + value: "filled" + }, { + name: "arrow-width", + value: 1 + }].reduce(function(css, prop2) { + styfn$2.arrowPrefixes.forEach(function(prefix) { + var name2 = prefix + "-" + prop2.name; + var val2 = prop2.value; + css[name2] = val2; + }); + return css; + }, {})); + var parsedProps = {}; + for (var i2 = 0; i2 < this.properties.length; i2++) { + var prop = this.properties[i2]; + if (prop.pointsTo) { + continue; } + var name = prop.name; + var val = rawProps[name]; + var parsedProp = this.parse(name, val); + parsedProps[name] = parsedProp; } - dispose() { - if (this._callbacks) { - this._callbacks.dispose(); - this._callbacks = void 0; + _p.defaultProperties = parsedProps; + return _p.defaultProperties; + }; + styfn$2.addDefaultStylesheet = function() { + this.selector(":parent").css({ + "shape": "rectangle", + "padding": 10, + "background-color": "#eee", + "border-color": "#ccc", + "border-width": 1 + }).selector("edge").css({ + "width": 3 + }).selector(":loop").css({ + "curve-style": "bezier" + }).selector("edge:compound").css({ + "curve-style": "bezier", + "source-endpoint": "outside-to-line", + "target-endpoint": "outside-to-line" + }).selector(":selected").css({ + "background-color": "#0169D9", + "line-color": "#0169D9", + "source-arrow-color": "#0169D9", + "target-arrow-color": "#0169D9", + "mid-source-arrow-color": "#0169D9", + "mid-target-arrow-color": "#0169D9" + }).selector(":parent:selected").css({ + "background-color": "#CCE1F9", + "border-color": "#aec8e5" + }).selector(":active").css({ + "overlay-color": "black", + "overlay-padding": 10, + "overlay-opacity": 0.25 + }); + this.defaultLength = this.length; + }; + styfn$1 = {}; + styfn$1.parse = function(name, value2, propIsBypass, propIsFlat) { + var self2 = this; + if (fn$6(value2)) { + return self2.parseImplWarn(name, value2, propIsBypass, propIsFlat); + } + var flatKey = propIsFlat === "mapping" || propIsFlat === true || propIsFlat === false || propIsFlat == null ? "dontcare" : propIsFlat; + var bypassKey = propIsBypass ? "t" : "f"; + var valueKey = "" + value2; + var argHash = hashStrings(name, valueKey, bypassKey, flatKey); + var propCache = self2.propCache = self2.propCache || []; + var ret; + if (!(ret = propCache[argHash])) { + ret = propCache[argHash] = self2.parseImplWarn(name, value2, propIsBypass, propIsFlat); + } + if (propIsBypass || propIsFlat === "mapping") { + ret = copy3(ret); + if (ret) { + ret.value = copy3(ret.value); } } + return ret; }; - exports2.Emitter = Emitter4; - Emitter4._noop = function() { + styfn$1.parseImplWarn = function(name, value2, propIsBypass, propIsFlat) { + var prop = this.parseImpl(name, value2, propIsBypass, propIsFlat); + if (!prop && value2 != null) { + warn("The style property `".concat(name, ": ").concat(value2, "` is invalid")); + } + if (prop && (prop.name === "width" || prop.name === "height") && value2 === "label") { + warn("The style value of `label` is deprecated for `" + prop.name + "`"); + } + return prop; }; - } - }); - - // ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js - var require_cancellation = __commonJS({ - "../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.CancellationTokenSource = exports2.CancellationToken = void 0; - var ral_1 = require_ral(); - var Is2 = require_is(); - var events_1 = require_events(); - var CancellationToken11; - (function(CancellationToken12) { - CancellationToken12.None = Object.freeze({ - isCancellationRequested: false, - onCancellationRequested: events_1.Event.None - }); - CancellationToken12.Cancelled = Object.freeze({ - isCancellationRequested: true, - onCancellationRequested: events_1.Event.None - }); - function is2(value2) { - const candidate = value2; - return candidate && (candidate === CancellationToken12.None || candidate === CancellationToken12.Cancelled || Is2.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested); + styfn$1.parseImpl = function(name, value2, propIsBypass, propIsFlat) { + var self2 = this; + name = camel2dash(name); + var property2 = self2.properties[name]; + var passedValue = value2; + var types = self2.types; + if (!property2) { + return null; } - __name(is2, "is"); - CancellationToken12.is = is2; - })(CancellationToken11 || (exports2.CancellationToken = CancellationToken11 = {})); - var shortcutEvent = Object.freeze(function(callback, context) { - const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0); - return { dispose() { - handle.dispose(); - } }; - }); - var MutableToken = class { - static { - __name(this, "MutableToken"); + if (value2 === void 0) { + return null; } - constructor() { - this._isCancelled = false; + if (property2.alias) { + property2 = property2.pointsTo; + name = property2.name; } - cancel() { - if (!this._isCancelled) { - this._isCancelled = true; - if (this._emitter) { - this._emitter.fire(void 0); - this.dispose(); - } - } + var valueIsString = string(value2); + if (valueIsString) { + value2 = value2.trim(); } - get isCancellationRequested() { - return this._isCancelled; + var type3 = property2.type; + if (!type3) { + return null; } - get onCancellationRequested() { - if (this._isCancelled) { - return shortcutEvent; + if (propIsBypass && (value2 === "" || value2 === null)) { + return { + name, + value: value2, + bypass: true, + deleteBypass: true + }; + } + if (fn$6(value2)) { + return { + name, + value: value2, + strValue: "fn", + mapped: types.fn, + bypass: propIsBypass + }; + } + var data5, mapData; + if (!valueIsString || propIsFlat || value2.length < 7 || value2[1] !== "a") ; + else if (value2.length >= 7 && value2[0] === "d" && (data5 = new RegExp(types.data.regex).exec(value2))) { + if (propIsBypass) { + return false; } - if (!this._emitter) { - this._emitter = new events_1.Emitter(); + var mapped = types.data; + return { + name, + value: data5, + strValue: "" + value2, + mapped, + field: data5[1], + bypass: propIsBypass + }; + } else if (value2.length >= 10 && value2[0] === "m" && (mapData = new RegExp(types.mapData.regex).exec(value2))) { + if (propIsBypass) { + return false; } - return this._emitter.event; - } - dispose() { - if (this._emitter) { - this._emitter.dispose(); - this._emitter = void 0; + if (type3.multiple) { + return false; } - } - }; - var CancellationTokenSource3 = class { - static { - __name(this, "CancellationTokenSource"); - } - get token() { - if (!this._token) { - this._token = new MutableToken(); + var _mapped = types.mapData; + if (!(type3.color || type3.number)) { + return false; } - return this._token; - } - cancel() { - if (!this._token) { - this._token = CancellationToken11.Cancelled; - } else { - this._token.cancel(); + var valueMin = this.parse(name, mapData[4]); + if (!valueMin || valueMin.mapped) { + return false; } - } - dispose() { - if (!this._token) { - this._token = CancellationToken11.None; - } else if (this._token instanceof MutableToken) { - this._token.dispose(); + var valueMax = this.parse(name, mapData[5]); + if (!valueMax || valueMax.mapped) { + return false; + } + if (valueMin.pfValue === valueMax.pfValue || valueMin.strValue === valueMax.strValue) { + warn("`" + name + ": " + value2 + "` is not a valid mapper because the output range is zero; converting to `" + name + ": " + valueMin.strValue + "`"); + return this.parse(name, valueMin.strValue); + } else if (type3.color) { + var c1 = valueMin.value; + var c22 = valueMax.value; + var same2 = c1[0] === c22[0] && c1[1] === c22[1] && c1[2] === c22[2] && // optional alpha + (c1[3] === c22[3] || (c1[3] == null || c1[3] === 1) && (c22[3] == null || c22[3] === 1)); + if (same2) { + return false; + } } + return { + name, + value: mapData, + strValue: "" + value2, + mapped: _mapped, + field: mapData[1], + fieldMin: parseFloat(mapData[2]), + // min & max are numeric + fieldMax: parseFloat(mapData[3]), + valueMin: valueMin.value, + valueMax: valueMax.value, + bypass: propIsBypass + }; } - }; - exports2.CancellationTokenSource = CancellationTokenSource3; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/cancellation.js - var cancellation_exports = {}; - var init_cancellation = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/cancellation.js"() { - "use strict"; - __reExport(cancellation_exports, __toESM(require_cancellation(), 1)); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/promise-utils.js - function delayNextTick() { - return new Promise((resolve3) => { - if (typeof setImmediate === "undefined") { - setTimeout(resolve3, 0); - } else { - setImmediate(resolve3); - } - }); - } - function startCancelableOperation() { - lastTick = performance.now(); - return new cancellation_exports.CancellationTokenSource(); - } - function setInterruptionPeriod(period) { - globalInterruptionPeriod = period; - } - function isOperationCancelled(err) { - return err === OperationCancelled; - } - async function interruptAndCheck(token2) { - if (token2 === cancellation_exports.CancellationToken.None) { - return; - } - const current = performance.now(); - if (current - lastTick >= globalInterruptionPeriod) { - lastTick = current; - await delayNextTick(); - lastTick = performance.now(); - } - if (token2.isCancellationRequested) { - throw OperationCancelled; - } - } - var lastTick, globalInterruptionPeriod, OperationCancelled, Deferred; - var init_promise_utils = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/promise-utils.js"() { - "use strict"; - init_cancellation(); - __name(delayNextTick, "delayNextTick"); - lastTick = 0; - globalInterruptionPeriod = 10; - __name(startCancelableOperation, "startCancelableOperation"); - __name(setInterruptionPeriod, "setInterruptionPeriod"); - OperationCancelled = Symbol("OperationCancelled"); - __name(isOperationCancelled, "isOperationCancelled"); - __name(interruptAndCheck, "interruptAndCheck"); - Deferred = class { - static { - __name(this, "Deferred"); - } - constructor() { - this.promise = new Promise((resolve3, reject3) => { - this.resolve = (arg) => { - resolve3(arg); - return this; - }; - this.reject = (err) => { - reject3(err); - return this; - }; - }); - } - }; - } - }); - - // ../../node_modules/.pnpm/vscode-languageserver-textdocument@1.0.12/node_modules/vscode-languageserver-textdocument/lib/esm/main.js - function mergeSort(data6, compare) { - if (data6.length <= 1) { - return data6; - } - const p3 = data6.length / 2 | 0; - const left3 = data6.slice(0, p3); - const right3 = data6.slice(p3); - mergeSort(left3, compare); - mergeSort(right3, compare); - let leftIdx = 0; - let rightIdx = 0; - let i2 = 0; - while (leftIdx < left3.length && rightIdx < right3.length) { - const ret = compare(left3[leftIdx], right3[rightIdx]); - if (ret <= 0) { - data6[i2++] = left3[leftIdx++]; - } else { - data6[i2++] = right3[rightIdx++]; - } - } - while (leftIdx < left3.length) { - data6[i2++] = left3[leftIdx++]; - } - while (rightIdx < right3.length) { - data6[i2++] = right3[rightIdx++]; - } - return data6; - } - function computeLineOffsets(text4, isAtLineStart, textOffset = 0) { - const result = isAtLineStart ? [textOffset] : []; - for (let i2 = 0; i2 < text4.length; i2++) { - const ch = text4.charCodeAt(i2); - if (isEOL(ch)) { - if (ch === 13 && i2 + 1 < text4.length && text4.charCodeAt(i2 + 1) === 10) { - i2++; - } - result.push(textOffset + i2 + 1); - } - } - return result; - } - function isEOL(char2) { - return char2 === 13 || char2 === 10; - } - function getWellformedRange(range3) { - const start3 = range3.start; - const end2 = range3.end; - if (start3.line > end2.line || start3.line === end2.line && start3.character > end2.character) { - return { start: end2, end: start3 }; - } - return range3; - } - function getWellformedEdit(textEdit) { - const range3 = getWellformedRange(textEdit.range); - if (range3 !== textEdit.range) { - return { newText: textEdit.newText, range: range3 }; - } - return textEdit; - } - var FullTextDocument2, TextDocument2; - var init_main2 = __esm({ - "../../node_modules/.pnpm/vscode-languageserver-textdocument@1.0.12/node_modules/vscode-languageserver-textdocument/lib/esm/main.js"() { - "use strict"; - FullTextDocument2 = class _FullTextDocument { - static { - __name(this, "FullTextDocument"); - } - constructor(uri, languageId, version2, content) { - this._uri = uri; - this._languageId = languageId; - this._version = version2; - this._content = content; - this._lineOffsets = void 0; - } - get uri() { - return this._uri; - } - get languageId() { - return this._languageId; - } - get version() { - return this._version; - } - getText(range3) { - if (range3) { - const start3 = this.offsetAt(range3.start); - const end2 = this.offsetAt(range3.end); - return this._content.substring(start3, end2); + if (type3.multiple && propIsFlat !== "multiple") { + var vals; + if (valueIsString) { + vals = value2.split(/\s+/); + } else if (array2(value2)) { + vals = value2; + } else { + vals = [value2]; } - return this._content; - } - update(changes, version2) { - for (const change2 of changes) { - if (_FullTextDocument.isIncremental(change2)) { - const range3 = getWellformedRange(change2.range); - const startOffset = this.offsetAt(range3.start); - const endOffset = this.offsetAt(range3.end); - this._content = this._content.substring(0, startOffset) + change2.text + this._content.substring(endOffset, this._content.length); - const startLine = Math.max(range3.start.line, 0); - const endLine = Math.max(range3.end.line, 0); - let lineOffsets = this._lineOffsets; - const addedLineOffsets = computeLineOffsets(change2.text, false, startOffset); - if (endLine - startLine === addedLineOffsets.length) { - for (let i2 = 0, len = addedLineOffsets.length; i2 < len; i2++) { - lineOffsets[i2 + startLine + 1] = addedLineOffsets[i2]; - } - } else { - if (addedLineOffsets.length < 1e4) { - lineOffsets.splice(startLine + 1, endLine - startLine, ...addedLineOffsets); - } else { - this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1)); - } - } - const diff2 = change2.text.length - (endOffset - startOffset); - if (diff2 !== 0) { - for (let i2 = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i2 < len; i2++) { - lineOffsets[i2] = lineOffsets[i2] + diff2; - } - } - } else if (_FullTextDocument.isFull(change2)) { - this._content = change2.text; - this._lineOffsets = void 0; - } else { - throw new Error("Unknown change event received"); - } + if (type3.evenMultiple && vals.length % 2 !== 0) { + return null; } - this._version = version2; - } - getLineOffsets() { - if (this._lineOffsets === void 0) { - this._lineOffsets = computeLineOffsets(this._content, true); + var valArr = []; + var unitsArr = []; + var pfValArr = []; + var strVal = ""; + var hasEnum = false; + for (var i2 = 0; i2 < vals.length; i2++) { + var p3 = self2.parse(name, vals[i2], propIsBypass, "multiple"); + hasEnum = hasEnum || string(p3.value); + valArr.push(p3.value); + pfValArr.push(p3.pfValue != null ? p3.pfValue : p3.value); + unitsArr.push(p3.units); + strVal += (i2 > 0 ? " " : "") + p3.strValue; } - return this._lineOffsets; - } - positionAt(offset) { - offset = Math.max(Math.min(offset, this._content.length), 0); - const lineOffsets = this.getLineOffsets(); - let low = 0, high = lineOffsets.length; - if (high === 0) { - return { line: 0, character: offset }; + if (type3.validate && !type3.validate(valArr, unitsArr)) { + return null; } - while (low < high) { - const mid = Math.floor((low + high) / 2); - if (lineOffsets[mid] > offset) { - high = mid; + if (type3.singleEnum && hasEnum) { + if (valArr.length === 1 && string(valArr[0])) { + return { + name, + value: valArr[0], + strValue: valArr[0], + bypass: propIsBypass + }; } else { - low = mid + 1; + return null; } } - const line2 = low - 1; - offset = this.ensureBeforeEOL(offset, lineOffsets[line2]); - return { line: line2, character: offset - lineOffsets[line2] }; - } - offsetAt(position5) { - const lineOffsets = this.getLineOffsets(); - if (position5.line >= lineOffsets.length) { - return this._content.length; - } else if (position5.line < 0) { - return 0; - } - const lineOffset = lineOffsets[position5.line]; - if (position5.character <= 0) { - return lineOffset; - } - const nextLineOffset = position5.line + 1 < lineOffsets.length ? lineOffsets[position5.line + 1] : this._content.length; - const offset = Math.min(lineOffset + position5.character, nextLineOffset); - return this.ensureBeforeEOL(offset, lineOffset); - } - ensureBeforeEOL(offset, lineOffset) { - while (offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1))) { - offset--; - } - return offset; - } - get lineCount() { - return this.getLineOffsets().length; - } - static isIncremental(event3) { - const candidate = event3; - return candidate !== void 0 && candidate !== null && typeof candidate.text === "string" && candidate.range !== void 0 && (candidate.rangeLength === void 0 || typeof candidate.rangeLength === "number"); - } - static isFull(event3) { - const candidate = event3; - return candidate !== void 0 && candidate !== null && typeof candidate.text === "string" && candidate.range === void 0 && candidate.rangeLength === void 0; - } - }; - (function(TextDocument3) { - function create4(uri, languageId, version2, content) { - return new FullTextDocument2(uri, languageId, version2, content); - } - __name(create4, "create"); - TextDocument3.create = create4; - function update2(document2, changes, version2) { - if (document2 instanceof FullTextDocument2) { - document2.update(changes, version2); - return document2; - } else { - throw new Error("TextDocument.update: document must be created by TextDocument.create"); - } + return { + name, + value: valArr, + pfValue: pfValArr, + strValue: strVal, + bypass: propIsBypass, + units: unitsArr + }; } - __name(update2, "update"); - TextDocument3.update = update2; - function applyEdits(document2, edits) { - const text4 = document2.getText(); - const sortedEdits = mergeSort(edits.map(getWellformedEdit), (a2, b2) => { - const diff2 = a2.range.start.line - b2.range.start.line; - if (diff2 === 0) { - return a2.range.start.character - b2.range.start.character; - } - return diff2; - }); - let lastModifiedOffset = 0; - const spans = []; - for (const e3 of sortedEdits) { - const startOffset = document2.offsetAt(e3.range.start); - if (startOffset < lastModifiedOffset) { - throw new Error("Overlapping edit"); - } else if (startOffset > lastModifiedOffset) { - spans.push(text4.substring(lastModifiedOffset, startOffset)); - } - if (e3.newText.length) { - spans.push(e3.newText); + var checkEnums = /* @__PURE__ */ __name(function checkEnums2() { + for (var _i = 0; _i < type3.enums.length; _i++) { + var en = type3.enums[_i]; + if (en === value2) { + return { + name, + value: value2, + strValue: "" + value2, + bypass: propIsBypass + }; } - lastModifiedOffset = document2.offsetAt(e3.range.end); } - spans.push(text4.substr(lastModifiedOffset)); - return spans.join(""); - } - __name(applyEdits, "applyEdits"); - TextDocument3.applyEdits = applyEdits; - })(TextDocument2 || (TextDocument2 = {})); - __name(mergeSort, "mergeSort"); - __name(computeLineOffsets, "computeLineOffsets"); - __name(isEOL, "isEOL"); - __name(getWellformedRange, "getWellformedRange"); - __name(getWellformedEdit, "getWellformedEdit"); - } - }); - - // ../../node_modules/.pnpm/vscode-uri@3.0.8/node_modules/vscode-uri/lib/esm/index.mjs - var LIB, URI2, Utils2; - var init_esm2 = __esm({ - "../../node_modules/.pnpm/vscode-uri@3.0.8/node_modules/vscode-uri/lib/esm/index.mjs"() { - "use strict"; - (() => { - "use strict"; - var t4 = { 470: (t5) => { - function e4(t6) { - if ("string" != typeof t6) throw new TypeError("Path must be a string. Received " + JSON.stringify(t6)); + return null; + }, "checkEnums"); + if (type3.number) { + var units; + var implicitUnits = "px"; + if (type3.units) { + units = type3.units; } - __name(e4, "e"); - function r3(t6, e6) { - for (var r4, n4 = "", i2 = 0, o2 = -1, s2 = 0, h2 = 0; h2 <= t6.length; ++h2) { - if (h2 < t6.length) r4 = t6.charCodeAt(h2); - else { - if (47 === r4) break; - r4 = 47; - } - if (47 === r4) { - if (o2 === h2 - 1 || 1 === s2) ; - else if (o2 !== h2 - 1 && 2 === s2) { - if (n4.length < 2 || 2 !== i2 || 46 !== n4.charCodeAt(n4.length - 1) || 46 !== n4.charCodeAt(n4.length - 2)) { - if (n4.length > 2) { - var a2 = n4.lastIndexOf("/"); - if (a2 !== n4.length - 1) { - -1 === a2 ? (n4 = "", i2 = 0) : i2 = (n4 = n4.slice(0, a2)).length - 1 - n4.lastIndexOf("/"), o2 = h2, s2 = 0; - continue; - } - } else if (2 === n4.length || 1 === n4.length) { - n4 = "", i2 = 0, o2 = h2, s2 = 0; - continue; - } - } - e6 && (n4.length > 0 ? n4 += "/.." : n4 = "..", i2 = 2); - } else n4.length > 0 ? n4 += "/" + t6.slice(o2 + 1, h2) : n4 = t6.slice(o2 + 1, h2), i2 = h2 - o2 - 1; - o2 = h2, s2 = 0; - } else 46 === r4 && -1 !== s2 ? ++s2 : s2 = -1; - } - return n4; + if (type3.implicitUnits) { + implicitUnits = type3.implicitUnits; } - __name(r3, "r"); - var n3 = { resolve: /* @__PURE__ */ __name(function() { - for (var t6, n4 = "", i2 = false, o2 = arguments.length - 1; o2 >= -1 && !i2; o2--) { - var s2; - o2 >= 0 ? s2 = arguments[o2] : (void 0 === t6 && (t6 = process.cwd()), s2 = t6), e4(s2), 0 !== s2.length && (n4 = s2 + "/" + n4, i2 = 47 === s2.charCodeAt(0)); - } - return n4 = r3(n4, !i2), i2 ? n4.length > 0 ? "/" + n4 : "/" : n4.length > 0 ? n4 : "."; - }, "resolve"), normalize: /* @__PURE__ */ __name(function(t6) { - if (e4(t6), 0 === t6.length) return "."; - var n4 = 47 === t6.charCodeAt(0), i2 = 47 === t6.charCodeAt(t6.length - 1); - return 0 !== (t6 = r3(t6, !n4)).length || n4 || (t6 = "."), t6.length > 0 && i2 && (t6 += "/"), n4 ? "/" + t6 : t6; - }, "normalize"), isAbsolute: /* @__PURE__ */ __name(function(t6) { - return e4(t6), t6.length > 0 && 47 === t6.charCodeAt(0); - }, "isAbsolute"), join: /* @__PURE__ */ __name(function() { - if (0 === arguments.length) return "."; - for (var t6, r4 = 0; r4 < arguments.length; ++r4) { - var i2 = arguments[r4]; - e4(i2), i2.length > 0 && (void 0 === t6 ? t6 = i2 : t6 += "/" + i2); - } - return void 0 === t6 ? "." : n3.normalize(t6); - }, "join"), relative: /* @__PURE__ */ __name(function(t6, r4) { - if (e4(t6), e4(r4), t6 === r4) return ""; - if ((t6 = n3.resolve(t6)) === (r4 = n3.resolve(r4))) return ""; - for (var i2 = 1; i2 < t6.length && 47 === t6.charCodeAt(i2); ++i2) ; - for (var o2 = t6.length, s2 = o2 - i2, h2 = 1; h2 < r4.length && 47 === r4.charCodeAt(h2); ++h2) ; - for (var a2 = r4.length - h2, c3 = s2 < a2 ? s2 : a2, f2 = -1, u2 = 0; u2 <= c3; ++u2) { - if (u2 === c3) { - if (a2 > c3) { - if (47 === r4.charCodeAt(h2 + u2)) return r4.slice(h2 + u2 + 1); - if (0 === u2) return r4.slice(h2 + u2); - } else s2 > c3 && (47 === t6.charCodeAt(i2 + u2) ? f2 = u2 : 0 === u2 && (f2 = 0)); - break; - } - var l2 = t6.charCodeAt(i2 + u2); - if (l2 !== r4.charCodeAt(h2 + u2)) break; - 47 === l2 && (f2 = u2); - } - var g2 = ""; - for (u2 = i2 + f2 + 1; u2 <= o2; ++u2) u2 !== o2 && 47 !== t6.charCodeAt(u2) || (0 === g2.length ? g2 += ".." : g2 += "/.."); - return g2.length > 0 ? g2 + r4.slice(h2 + f2) : (h2 += f2, 47 === r4.charCodeAt(h2) && ++h2, r4.slice(h2)); - }, "relative"), _makeLong: /* @__PURE__ */ __name(function(t6) { - return t6; - }, "_makeLong"), dirname: /* @__PURE__ */ __name(function(t6) { - if (e4(t6), 0 === t6.length) return "."; - for (var r4 = t6.charCodeAt(0), n4 = 47 === r4, i2 = -1, o2 = true, s2 = t6.length - 1; s2 >= 1; --s2) if (47 === (r4 = t6.charCodeAt(s2))) { - if (!o2) { - i2 = s2; - break; - } - } else o2 = false; - return -1 === i2 ? n4 ? "/" : "." : n4 && 1 === i2 ? "//" : t6.slice(0, i2); - }, "dirname"), basename: /* @__PURE__ */ __name(function(t6, r4) { - if (void 0 !== r4 && "string" != typeof r4) throw new TypeError('"ext" argument must be a string'); - e4(t6); - var n4, i2 = 0, o2 = -1, s2 = true; - if (void 0 !== r4 && r4.length > 0 && r4.length <= t6.length) { - if (r4.length === t6.length && r4 === t6) return ""; - var h2 = r4.length - 1, a2 = -1; - for (n4 = t6.length - 1; n4 >= 0; --n4) { - var c3 = t6.charCodeAt(n4); - if (47 === c3) { - if (!s2) { - i2 = n4 + 1; - break; - } - } else -1 === a2 && (s2 = false, a2 = n4 + 1), h2 >= 0 && (c3 === r4.charCodeAt(h2) ? -1 == --h2 && (o2 = n4) : (h2 = -1, o2 = a2)); - } - return i2 === o2 ? o2 = a2 : -1 === o2 && (o2 = t6.length), t6.slice(i2, o2); - } - for (n4 = t6.length - 1; n4 >= 0; --n4) if (47 === t6.charCodeAt(n4)) { - if (!s2) { - i2 = n4 + 1; - break; + if (!type3.unitless) { + if (valueIsString) { + var unitsRegex = "px|em" + (type3.allowPercent ? "|\\%" : ""); + if (units) { + unitsRegex = units; } - } else -1 === o2 && (s2 = false, o2 = n4 + 1); - return -1 === o2 ? "" : t6.slice(i2, o2); - }, "basename"), extname: /* @__PURE__ */ __name(function(t6) { - e4(t6); - for (var r4 = -1, n4 = 0, i2 = -1, o2 = true, s2 = 0, h2 = t6.length - 1; h2 >= 0; --h2) { - var a2 = t6.charCodeAt(h2); - if (47 !== a2) -1 === i2 && (o2 = false, i2 = h2 + 1), 46 === a2 ? -1 === r4 ? r4 = h2 : 1 !== s2 && (s2 = 1) : -1 !== r4 && (s2 = -1); - else if (!o2) { - n4 = h2 + 1; - break; + var match2 = value2.match("^(" + number6 + ")(" + unitsRegex + ")?$"); + if (match2) { + value2 = match2[1]; + units = match2[2] || implicitUnits; } + } else if (!units || type3.implicitUnits) { + units = implicitUnits; } - return -1 === r4 || -1 === i2 || 0 === s2 || 1 === s2 && r4 === i2 - 1 && r4 === n4 + 1 ? "" : t6.slice(r4, i2); - }, "extname"), format: /* @__PURE__ */ __name(function(t6) { - if (null === t6 || "object" != typeof t6) throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof t6); - return function(t7, e6) { - var r4 = e6.dir || e6.root, n4 = e6.base || (e6.name || "") + (e6.ext || ""); - return r4 ? r4 === e6.root ? r4 + n4 : r4 + "/" + n4 : n4; - }(0, t6); - }, "format"), parse: /* @__PURE__ */ __name(function(t6) { - e4(t6); - var r4 = { root: "", dir: "", base: "", ext: "", name: "" }; - if (0 === t6.length) return r4; - var n4, i2 = t6.charCodeAt(0), o2 = 47 === i2; - o2 ? (r4.root = "/", n4 = 1) : n4 = 0; - for (var s2 = -1, h2 = 0, a2 = -1, c3 = true, f2 = t6.length - 1, u2 = 0; f2 >= n4; --f2) if (47 !== (i2 = t6.charCodeAt(f2))) -1 === a2 && (c3 = false, a2 = f2 + 1), 46 === i2 ? -1 === s2 ? s2 = f2 : 1 !== u2 && (u2 = 1) : -1 !== s2 && (u2 = -1); - else if (!c3) { - h2 = f2 + 1; - break; - } - return -1 === s2 || -1 === a2 || 0 === u2 || 1 === u2 && s2 === a2 - 1 && s2 === h2 + 1 ? -1 !== a2 && (r4.base = r4.name = 0 === h2 && o2 ? t6.slice(1, a2) : t6.slice(h2, a2)) : (0 === h2 && o2 ? (r4.name = t6.slice(1, s2), r4.base = t6.slice(1, a2)) : (r4.name = t6.slice(h2, s2), r4.base = t6.slice(h2, a2)), r4.ext = t6.slice(s2, a2)), h2 > 0 ? r4.dir = t6.slice(0, h2 - 1) : o2 && (r4.dir = "/"), r4; - }, "parse"), sep: "/", delimiter: ":", win32: null, posix: null }; - n3.posix = n3, t5.exports = n3; - } }, e3 = {}; - function r2(n3) { - var i2 = e3[n3]; - if (void 0 !== i2) return i2.exports; - var o2 = e3[n3] = { exports: {} }; - return t4[n3](o2, o2.exports, r2), o2.exports; - } - __name(r2, "r"); - r2.d = (t5, e4) => { - for (var n3 in e4) r2.o(e4, n3) && !r2.o(t5, n3) && Object.defineProperty(t5, n3, { enumerable: true, get: e4[n3] }); - }, r2.o = (t5, e4) => Object.prototype.hasOwnProperty.call(t5, e4), r2.r = (t5) => { - "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t5, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t5, "__esModule", { value: true }); - }; - var n2 = {}; - (() => { - let t5; - if (r2.r(n2), r2.d(n2, { URI: /* @__PURE__ */ __name(() => f2, "URI"), Utils: /* @__PURE__ */ __name(() => P2, "Utils") }), "object" == typeof process) t5 = "win32" === process.platform; - else if ("object" == typeof navigator) { - let e6 = navigator.userAgent; - t5 = e6.indexOf("Windows") >= 0; } - const e4 = /^\w[\w\d+.-]*$/, i2 = /^\//, o2 = /^\/\//; - function s2(t6, r3) { - if (!t6.scheme && r3) throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${t6.authority}", path: "${t6.path}", query: "${t6.query}", fragment: "${t6.fragment}"}`); - if (t6.scheme && !e4.test(t6.scheme)) throw new Error("[UriError]: Scheme contains illegal characters."); - if (t6.path) { - if (t6.authority) { - if (!i2.test(t6.path)) throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character'); - } else if (o2.test(t6.path)) throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")'); - } + value2 = parseFloat(value2); + if (isNaN(value2) && type3.enums === void 0) { + return null; } - __name(s2, "s"); - const h2 = "", a2 = "/", c3 = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/; - class f2 { - static { - __name(this, "f"); - } - static isUri(t6) { - return t6 instanceof f2 || !!t6 && "string" == typeof t6.authority && "string" == typeof t6.fragment && "string" == typeof t6.path && "string" == typeof t6.query && "string" == typeof t6.scheme && "string" == typeof t6.fsPath && "function" == typeof t6.with && "function" == typeof t6.toString; - } - scheme; - authority; - path; - query; - fragment; - constructor(t6, e6, r3, n3, i3, o3 = false) { - "object" == typeof t6 ? (this.scheme = t6.scheme || h2, this.authority = t6.authority || h2, this.path = t6.path || h2, this.query = t6.query || h2, this.fragment = t6.fragment || h2) : (this.scheme = /* @__PURE__ */ function(t7, e7) { - return t7 || e7 ? t7 : "file"; - }(t6, o3), this.authority = e6 || h2, this.path = function(t7, e7) { - switch (t7) { - case "https": - case "http": - case "file": - e7 ? e7[0] !== a2 && (e7 = a2 + e7) : e7 = a2; - } - return e7; - }(this.scheme, r3 || h2), this.query = n3 || h2, this.fragment = i3 || h2, s2(this, o3)); - } - get fsPath() { - return m2(this, false); - } - with(t6) { - if (!t6) return this; - let { scheme: e6, authority: r3, path: n3, query: i3, fragment: o3 } = t6; - return void 0 === e6 ? e6 = this.scheme : null === e6 && (e6 = h2), void 0 === r3 ? r3 = this.authority : null === r3 && (r3 = h2), void 0 === n3 ? n3 = this.path : null === n3 && (n3 = h2), void 0 === i3 ? i3 = this.query : null === i3 && (i3 = h2), void 0 === o3 ? o3 = this.fragment : null === o3 && (o3 = h2), e6 === this.scheme && r3 === this.authority && n3 === this.path && i3 === this.query && o3 === this.fragment ? this : new l2(e6, r3, n3, i3, o3); - } - static parse(t6, e6 = false) { - const r3 = c3.exec(t6); - return r3 ? new l2(r3[2] || h2, C2(r3[4] || h2), C2(r3[5] || h2), C2(r3[7] || h2), C2(r3[9] || h2), e6) : new l2(h2, h2, h2, h2, h2); - } - static file(e6) { - let r3 = h2; - if (t5 && (e6 = e6.replace(/\\/g, a2)), e6[0] === a2 && e6[1] === a2) { - const t6 = e6.indexOf(a2, 2); - -1 === t6 ? (r3 = e6.substring(2), e6 = a2) : (r3 = e6.substring(2, t6), e6 = e6.substring(t6) || a2); - } - return new l2("file", r3, e6, h2, h2); - } - static from(t6) { - const e6 = new l2(t6.scheme, t6.authority, t6.path, t6.query, t6.fragment); - return s2(e6, true), e6; - } - toString(t6 = false) { - return y5(this, t6); - } - toJSON() { - return this; - } - static revive(t6) { - if (t6) { - if (t6 instanceof f2) return t6; - { - const e6 = new l2(t6); - return e6._formatted = t6.external, e6._fsPath = t6._sep === u2 ? t6.fsPath : null, e6; - } - } - return t6; - } + if (isNaN(value2) && type3.enums !== void 0) { + value2 = passedValue; + return checkEnums(); } - const u2 = t5 ? 1 : void 0; - class l2 extends f2 { - static { - __name(this, "l"); - } - _formatted = null; - _fsPath = null; - get fsPath() { - return this._fsPath || (this._fsPath = m2(this, false)), this._fsPath; - } - toString(t6 = false) { - return t6 ? y5(this, true) : (this._formatted || (this._formatted = y5(this, false)), this._formatted); - } - toJSON() { - const t6 = { $mid: 1 }; - return this._fsPath && (t6.fsPath = this._fsPath, t6._sep = u2), this._formatted && (t6.external = this._formatted), this.path && (t6.path = this.path), this.scheme && (t6.scheme = this.scheme), this.authority && (t6.authority = this.authority), this.query && (t6.query = this.query), this.fragment && (t6.fragment = this.fragment), t6; - } + if (type3.integer && !integer(value2)) { + return null; } - const g2 = { 58: "%3A", 47: "%2F", 63: "%3F", 35: "%23", 91: "%5B", 93: "%5D", 64: "%40", 33: "%21", 36: "%24", 38: "%26", 39: "%27", 40: "%28", 41: "%29", 42: "%2A", 43: "%2B", 44: "%2C", 59: "%3B", 61: "%3D", 32: "%20" }; - function d2(t6, e6, r3) { - let n3, i3 = -1; - for (let o3 = 0; o3 < t6.length; o3++) { - const s3 = t6.charCodeAt(o3); - if (s3 >= 97 && s3 <= 122 || s3 >= 65 && s3 <= 90 || s3 >= 48 && s3 <= 57 || 45 === s3 || 46 === s3 || 95 === s3 || 126 === s3 || e6 && 47 === s3 || r3 && 91 === s3 || r3 && 93 === s3 || r3 && 58 === s3) -1 !== i3 && (n3 += encodeURIComponent(t6.substring(i3, o3)), i3 = -1), void 0 !== n3 && (n3 += t6.charAt(o3)); - else { - void 0 === n3 && (n3 = t6.substr(0, o3)); - const e7 = g2[s3]; - void 0 !== e7 ? (-1 !== i3 && (n3 += encodeURIComponent(t6.substring(i3, o3)), i3 = -1), n3 += e7) : -1 === i3 && (i3 = o3); - } - } - return -1 !== i3 && (n3 += encodeURIComponent(t6.substring(i3))), void 0 !== n3 ? n3 : t6; + if (type3.min !== void 0 && (value2 < type3.min || type3.strictMin && value2 === type3.min) || type3.max !== void 0 && (value2 > type3.max || type3.strictMax && value2 === type3.max)) { + return null; } - __name(d2, "d"); - function p3(t6) { - let e6; - for (let r3 = 0; r3 < t6.length; r3++) { - const n3 = t6.charCodeAt(r3); - 35 === n3 || 63 === n3 ? (void 0 === e6 && (e6 = t6.substr(0, r3)), e6 += g2[n3]) : void 0 !== e6 && (e6 += t6[r3]); - } - return void 0 !== e6 ? e6 : t6; + var ret = { + name, + value: value2, + strValue: "" + value2 + (units ? units : ""), + units, + bypass: propIsBypass + }; + if (type3.unitless || units !== "px" && units !== "em") { + ret.pfValue = value2; + } else { + ret.pfValue = units === "px" || !units ? value2 : this.getEmSizeInPixels() * value2; } - __name(p3, "p"); - function m2(e6, r3) { - let n3; - return n3 = e6.authority && e6.path.length > 1 && "file" === e6.scheme ? `//${e6.authority}${e6.path}` : 47 === e6.path.charCodeAt(0) && (e6.path.charCodeAt(1) >= 65 && e6.path.charCodeAt(1) <= 90 || e6.path.charCodeAt(1) >= 97 && e6.path.charCodeAt(1) <= 122) && 58 === e6.path.charCodeAt(2) ? r3 ? e6.path.substr(1) : e6.path[1].toLowerCase() + e6.path.substr(2) : e6.path, t5 && (n3 = n3.replace(/\//g, "\\")), n3; + if (units === "ms" || units === "s") { + ret.pfValue = units === "ms" ? value2 : 1e3 * value2; } - __name(m2, "m"); - function y5(t6, e6) { - const r3 = e6 ? p3 : d2; - let n3 = "", { scheme: i3, authority: o3, path: s3, query: h3, fragment: c4 } = t6; - if (i3 && (n3 += i3, n3 += ":"), (o3 || "file" === i3) && (n3 += a2, n3 += a2), o3) { - let t7 = o3.indexOf("@"); - if (-1 !== t7) { - const e7 = o3.substr(0, t7); - o3 = o3.substr(t7 + 1), t7 = e7.lastIndexOf(":"), -1 === t7 ? n3 += r3(e7, false, false) : (n3 += r3(e7.substr(0, t7), false, false), n3 += ":", n3 += r3(e7.substr(t7 + 1), false, true)), n3 += "@"; + if (units === "deg" || units === "rad") { + ret.pfValue = units === "rad" ? value2 : deg2rad(value2); + } + if (units === "%") { + ret.pfValue = value2 / 100; + } + return ret; + } else if (type3.propList) { + var props = []; + var propsStr = "" + value2; + if (propsStr === "none") ; + else { + var propsSplit = propsStr.split(/\s*,\s*|\s+/); + for (var _i2 = 0; _i2 < propsSplit.length; _i2++) { + var propName = propsSplit[_i2].trim(); + if (self2.properties[propName]) { + props.push(propName); + } else { + warn("`" + propName + "` is not a valid property name"); } - o3 = o3.toLowerCase(), t7 = o3.lastIndexOf(":"), -1 === t7 ? n3 += r3(o3, false, true) : (n3 += r3(o3.substr(0, t7), false, true), n3 += o3.substr(t7)); } - if (s3) { - if (s3.length >= 3 && 47 === s3.charCodeAt(0) && 58 === s3.charCodeAt(2)) { - const t7 = s3.charCodeAt(1); - t7 >= 65 && t7 <= 90 && (s3 = `/${String.fromCharCode(t7 + 32)}:${s3.substr(3)}`); - } else if (s3.length >= 2 && 58 === s3.charCodeAt(1)) { - const t7 = s3.charCodeAt(0); - t7 >= 65 && t7 <= 90 && (s3 = `${String.fromCharCode(t7 + 32)}:${s3.substr(2)}`); - } - n3 += r3(s3, true, false); + if (props.length === 0) { + return null; } - return h3 && (n3 += "?", n3 += r3(h3, false, false)), c4 && (n3 += "#", n3 += e6 ? c4 : d2(c4, false, false)), n3; } - __name(y5, "y"); - function v3(t6) { - try { - return decodeURIComponent(t6); - } catch { - return t6.length > 3 ? t6.substr(0, 3) + v3(t6.substr(3)) : t6; - } + return { + name, + value: props, + strValue: props.length === 0 ? "none" : props.join(" "), + bypass: propIsBypass + }; + } else if (type3.color) { + var tuple = color2tuple(value2); + if (!tuple) { + return null; } - __name(v3, "v"); - const b2 = /(%[0-9A-Za-z][0-9A-Za-z])+/g; - function C2(t6) { - return t6.match(b2) ? t6.replace(b2, (t7) => v3(t7)) : t6; + return { + name, + value: tuple, + pfValue: tuple, + strValue: "rgb(" + tuple[0] + "," + tuple[1] + "," + tuple[2] + ")", + // n.b. no spaces b/c of multiple support + bypass: propIsBypass + }; + } else if (type3.regex || type3.regexes) { + if (type3.enums) { + var enumProp = checkEnums(); + if (enumProp) { + return enumProp; + } } - __name(C2, "C"); - var A2 = r2(470); - const w3 = A2.posix || A2, x5 = "/"; - var P2; - !function(t6) { - t6.joinPath = function(t7, ...e6) { - return t7.with({ path: w3.join(t7.path, ...e6) }); - }, t6.resolvePath = function(t7, ...e6) { - let r3 = t7.path, n3 = false; - r3[0] !== x5 && (r3 = x5 + r3, n3 = true); - let i3 = w3.resolve(r3, ...e6); - return n3 && i3[0] === x5 && !t7.authority && (i3 = i3.substring(1)), t7.with({ path: i3 }); - }, t6.dirname = function(t7) { - if (0 === t7.path.length || t7.path === x5) return t7; - let e6 = w3.dirname(t7.path); - return 1 === e6.length && 46 === e6.charCodeAt(0) && (e6 = ""), t7.with({ path: e6 }); - }, t6.basename = function(t7) { - return w3.basename(t7.path); - }, t6.extname = function(t7) { - return w3.extname(t7.path); - }; - }(P2 || (P2 = {})); - })(), LIB = n2; - })(); - ({ URI: URI2, Utils: Utils2 } = LIB); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/uri-utils.js - var UriUtils; - var init_uri_utils = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/uri-utils.js"() { - "use strict"; - init_esm2(); - (function(UriUtils2) { - UriUtils2.basename = Utils2.basename; - UriUtils2.dirname = Utils2.dirname; - UriUtils2.extname = Utils2.extname; - UriUtils2.joinPath = Utils2.joinPath; - UriUtils2.resolvePath = Utils2.resolvePath; - function equals(a2, b2) { - return (a2 === null || a2 === void 0 ? void 0 : a2.toString()) === (b2 === null || b2 === void 0 ? void 0 : b2.toString()); - } - __name(equals, "equals"); - UriUtils2.equals = equals; - function relative(from2, to) { - const fromPath = typeof from2 === "string" ? from2 : from2.path; - const toPath2 = typeof to === "string" ? to : to.path; - const fromParts = fromPath.split("/").filter((e3) => e3.length > 0); - const toParts = toPath2.split("/").filter((e3) => e3.length > 0); - let i2 = 0; - for (; i2 < fromParts.length; i2++) { - if (fromParts[i2] !== toParts[i2]) { - break; + var regexes = type3.regexes ? type3.regexes : [type3.regex]; + for (var _i3 = 0; _i3 < regexes.length; _i3++) { + var regex2 = new RegExp(regexes[_i3]); + var m3 = regex2.exec(value2); + if (m3) { + return { + name, + value: type3.singleRegexMatchValue ? m3[1] : m3, + strValue: "" + value2, + bypass: propIsBypass + }; } } - const backPart = "../".repeat(fromParts.length - i2); - const toPart = toParts.slice(i2).join("/"); - return backPart + toPart; - } - __name(relative, "relative"); - UriUtils2.relative = relative; - function normalize4(uri) { - return URI2.parse(uri.toString()).toString(); + return null; + } else if (type3.string) { + return { + name, + value: "" + value2, + strValue: "" + value2, + bypass: propIsBypass + }; + } else if (type3.enums) { + return checkEnums(); + } else { + return null; } - __name(normalize4, "normalize"); - UriUtils2.normalize = normalize4; - })(UriUtils || (UriUtils = {})); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/documents.js - var DocumentState, DefaultLangiumDocumentFactory, DefaultLangiumDocuments; - var init_documents = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/documents.js"() { - "use strict"; - init_main2(); - init_documents(); - init_cancellation(); - init_stream(); - init_uri_utils(); - (function(DocumentState2) { - DocumentState2[DocumentState2["Changed"] = 0] = "Changed"; - DocumentState2[DocumentState2["Parsed"] = 1] = "Parsed"; - DocumentState2[DocumentState2["IndexedContent"] = 2] = "IndexedContent"; - DocumentState2[DocumentState2["ComputedScopes"] = 3] = "ComputedScopes"; - DocumentState2[DocumentState2["Linked"] = 4] = "Linked"; - DocumentState2[DocumentState2["IndexedReferences"] = 5] = "IndexedReferences"; - DocumentState2[DocumentState2["Validated"] = 6] = "Validated"; - })(DocumentState || (DocumentState = {})); - DefaultLangiumDocumentFactory = class { - static { - __name(this, "DefaultLangiumDocumentFactory"); + }; + _Style = /* @__PURE__ */ __name(function Style2(cy) { + if (!(this instanceof _Style)) { + return new _Style(cy); } - constructor(services) { - this.serviceRegistry = services.ServiceRegistry; - this.textDocuments = services.workspace.TextDocuments; - this.fileSystemProvider = services.workspace.FileSystemProvider; + if (!core2(cy)) { + error("A style must have a core reference"); + return; } - async fromUri(uri, cancellationToken = cancellation_exports.CancellationToken.None) { - const content = await this.fileSystemProvider.readFile(uri); - return this.createAsync(uri, content, cancellationToken); + this._private = { + cy, + coreStyle: {} + }; + this.length = 0; + this.resetToDefault(); + }, "Style"); + styfn = _Style.prototype; + styfn.instanceString = function() { + return "style"; + }; + styfn.clear = function() { + var _p = this._private; + var cy = _p.cy; + var eles = cy.elements(); + for (var i2 = 0; i2 < this.length; i2++) { + this[i2] = void 0; } - fromTextDocument(textDocument, uri, token2) { - uri = uri !== null && uri !== void 0 ? uri : URI2.parse(textDocument.uri); - if (cancellation_exports.CancellationToken.is(token2)) { - return this.createAsync(uri, textDocument, token2); - } else { - return this.create(uri, textDocument, token2); + this.length = 0; + _p.contextStyles = {}; + _p.propDiffs = {}; + this.cleanElements(eles, true); + eles.forEach(function(ele) { + var ele_p = ele[0]._private; + ele_p.styleDirty = true; + ele_p.appliedInitStyle = false; + }); + return this; + }; + styfn.resetToDefault = function() { + this.clear(); + this.addDefaultStylesheet(); + return this; + }; + styfn.core = function(propName) { + return this._private.coreStyle[propName] || this.getDefaultProperty(propName); + }; + styfn.selector = function(selectorStr) { + var selector = selectorStr === "core" ? null : new Selector(selectorStr); + var i2 = this.length++; + this[i2] = { + selector, + properties: [], + mappedProperties: [], + index: i2 + }; + return this; + }; + styfn.css = function() { + var self2 = this; + var args = arguments; + if (args.length === 1) { + var map5 = args[0]; + for (var i2 = 0; i2 < self2.properties.length; i2++) { + var prop = self2.properties[i2]; + var mapVal = map5[prop.name]; + if (mapVal === void 0) { + mapVal = map5[dash2camel(prop.name)]; + } + if (mapVal !== void 0) { + this.cssRule(prop.name, mapVal); + } } + } else if (args.length === 2) { + this.cssRule(args[0], args[1]); } - fromString(text4, uri, token2) { - if (cancellation_exports.CancellationToken.is(token2)) { - return this.createAsync(uri, text4, token2); - } else { - return this.create(uri, text4, token2); + return this; + }; + styfn.style = styfn.css; + styfn.cssRule = function(name, value2) { + var property2 = this.parse(name, value2); + if (property2) { + var i2 = this.length - 1; + this[i2].properties.push(property2); + this[i2].properties[property2.name] = property2; + if (property2.name.match(/pie-(\d+)-background-size/) && property2.value) { + this._private.hasPie = true; + } + if (property2.name.match(/stripe-(\d+)-background-size/) && property2.value) { + this._private.hasStripe = true; + } + if (property2.mapped) { + this[i2].mappedProperties.push(property2); + } + var currentSelectorIsCore = !this[i2].selector; + if (currentSelectorIsCore) { + this._private.coreStyle[property2.name] = property2; } } - fromModel(model, uri) { - return this.create(uri, { $model: model }); + return this; + }; + styfn.append = function(style3) { + if (stylesheet(style3)) { + style3.appendToStyle(this); + } else if (array2(style3)) { + this.appendFromJson(style3); + } else if (string(style3)) { + this.appendFromString(style3); } - create(uri, content, options3) { - if (typeof content === "string") { - const parseResult = this.parse(uri, content, options3); - return this.createLangiumDocument(parseResult, uri, void 0, content); - } else if ("$model" in content) { - const parseResult = { value: content.$model, parserErrors: [], lexerErrors: [] }; - return this.createLangiumDocument(parseResult, uri); + return this; + }; + _Style.fromJson = function(cy, json3) { + var style3 = new _Style(cy); + style3.fromJson(json3); + return style3; + }; + _Style.fromString = function(cy, string3) { + return new _Style(cy).fromString(string3); + }; + [styfn$8, styfn$7, styfn$6, styfn$5, styfn$4, styfn$3, styfn$2, styfn$1].forEach(function(props) { + extend4(styfn, props); + }); + _Style.types = styfn.types; + _Style.properties = styfn.properties; + _Style.propertyGroups = styfn.propertyGroups; + _Style.propertyGroupNames = styfn.propertyGroupNames; + _Style.propertyGroupKeys = styfn.propertyGroupKeys; + corefn$2 = { + style: /* @__PURE__ */ __name(function style2(newStyle) { + if (newStyle) { + var s2 = this.setStyle(newStyle); + s2.update(); + } + return this._private.style; + }, "style"), + setStyle: /* @__PURE__ */ __name(function setStyle(style3) { + var _p = this._private; + if (stylesheet(style3)) { + _p.style = style3.generateStyle(this); + } else if (array2(style3)) { + _p.style = _Style.fromJson(this, style3); + } else if (string(style3)) { + _p.style = _Style.fromString(this, style3); } else { - const parseResult = this.parse(uri, content.getText(), options3); - return this.createLangiumDocument(parseResult, uri, content); + _p.style = _Style(this); } - } - async createAsync(uri, content, cancelToken) { - if (typeof content === "string") { - const parseResult = await this.parseAsync(uri, content, cancelToken); - return this.createLangiumDocument(parseResult, uri, void 0, content); + return _p.style; + }, "setStyle"), + // e.g. cy.data() changed => recalc ele mappers + updateStyle: /* @__PURE__ */ __name(function updateStyle2() { + this.mutableElements().updateStyle(); + }, "updateStyle") + }; + defaultSelectionType = "single"; + corefn$1 = { + autolock: /* @__PURE__ */ __name(function autolock(bool2) { + if (bool2 !== void 0) { + this._private.autolock = bool2 ? true : false; } else { - const parseResult = await this.parseAsync(uri, content.getText(), cancelToken); - return this.createLangiumDocument(parseResult, uri, content); + return this._private.autolock; } - } - /** - * Create a LangiumDocument from a given parse result. - * - * A TextDocument is created on demand if it is not provided as argument here. Usually this - * should not be necessary because the main purpose of the TextDocument is to convert between - * text ranges and offsets, which is done solely in LSP request handling. - * - * With the introduction of {@link update} below this method is supposed to be mainly called - * during workspace initialization and on addition/recognition of new files, while changes in - * existing documents are processed via {@link update}. - */ - createLangiumDocument(parseResult, uri, textDocument, text4) { - let document2; - if (textDocument) { - document2 = { - parseResult, - uri, - state: DocumentState.Parsed, - references: [], - textDocument - }; + return this; + }, "autolock"), + autoungrabify: /* @__PURE__ */ __name(function autoungrabify(bool2) { + if (bool2 !== void 0) { + this._private.autoungrabify = bool2 ? true : false; } else { - const textDocumentGetter = this.createTextDocumentGetter(uri, text4); - document2 = { - parseResult, - uri, - state: DocumentState.Parsed, - references: [], - get textDocument() { - return textDocumentGetter(); - } - }; + return this._private.autoungrabify; } - parseResult.value.$document = document2; - return document2; - } - async update(document2, cancellationToken) { - var _a, _b; - const oldText = (_a = document2.parseResult.value.$cstNode) === null || _a === void 0 ? void 0 : _a.root.fullText; - const textDocument = (_b = this.textDocuments) === null || _b === void 0 ? void 0 : _b.get(document2.uri.toString()); - const text4 = textDocument ? textDocument.getText() : await this.fileSystemProvider.readFile(document2.uri); - if (textDocument) { - Object.defineProperty(document2, "textDocument", { - value: textDocument - }); + return this; + }, "autoungrabify"), + autounselectify: /* @__PURE__ */ __name(function autounselectify(bool2) { + if (bool2 !== void 0) { + this._private.autounselectify = bool2 ? true : false; } else { - const textDocumentGetter = this.createTextDocumentGetter(document2.uri, text4); - Object.defineProperty(document2, "textDocument", { - get: textDocumentGetter - }); + return this._private.autounselectify; } - if (oldText !== text4) { - document2.parseResult = await this.parseAsync(document2.uri, text4, cancellationToken); - document2.parseResult.value.$document = document2; + return this; + }, "autounselectify"), + selectionType: /* @__PURE__ */ __name(function selectionType(selType) { + var _p = this._private; + if (_p.selectionType == null) { + _p.selectionType = defaultSelectionType; } - document2.state = DocumentState.Parsed; - return document2; - } - parse(uri, text4, options3) { - const services = this.serviceRegistry.getServices(uri); - return services.parser.LangiumParser.parse(text4, options3); - } - parseAsync(uri, text4, cancellationToken) { - const services = this.serviceRegistry.getServices(uri); - return services.parser.AsyncParser.parse(text4, cancellationToken); - } - createTextDocumentGetter(uri, text4) { - const serviceRegistry = this.serviceRegistry; - let textDoc = void 0; - return () => { - return textDoc !== null && textDoc !== void 0 ? textDoc : textDoc = TextDocument2.create(uri.toString(), serviceRegistry.getServices(uri).LanguageMetaData.languageId, 0, text4 !== null && text4 !== void 0 ? text4 : ""); - }; - } - }; - DefaultLangiumDocuments = class { - static { - __name(this, "DefaultLangiumDocuments"); - } - constructor(services) { - this.documentMap = /* @__PURE__ */ new Map(); - this.langiumDocumentFactory = services.workspace.LangiumDocumentFactory; - this.serviceRegistry = services.ServiceRegistry; - } - get all() { - return stream(this.documentMap.values()); - } - addDocument(document2) { - const uriString = document2.uri.toString(); - if (this.documentMap.has(uriString)) { - throw new Error(`A document with the URI '${uriString}' is already present.`); + if (selType !== void 0) { + if (selType === "additive" || selType === "single") { + _p.selectionType = selType; + } + } else { + return _p.selectionType; } - this.documentMap.set(uriString, document2); - } - getDocument(uri) { - const uriString = uri.toString(); - return this.documentMap.get(uriString); - } - async getOrCreateDocument(uri, cancellationToken) { - let document2 = this.getDocument(uri); - if (document2) { - return document2; + return this; + }, "selectionType"), + panningEnabled: /* @__PURE__ */ __name(function panningEnabled(bool2) { + if (bool2 !== void 0) { + this._private.panningEnabled = bool2 ? true : false; + } else { + return this._private.panningEnabled; } - document2 = await this.langiumDocumentFactory.fromUri(uri, cancellationToken); - this.addDocument(document2); - return document2; - } - createDocument(uri, text4, cancellationToken) { - if (cancellationToken) { - return this.langiumDocumentFactory.fromString(text4, uri, cancellationToken).then((document2) => { - this.addDocument(document2); - return document2; - }); + return this; + }, "panningEnabled"), + userPanningEnabled: /* @__PURE__ */ __name(function userPanningEnabled(bool2) { + if (bool2 !== void 0) { + this._private.userPanningEnabled = bool2 ? true : false; } else { - const document2 = this.langiumDocumentFactory.fromString(text4, uri); - this.addDocument(document2); - return document2; + return this._private.userPanningEnabled; } - } - hasDocument(uri) { - return this.documentMap.has(uri.toString()); - } - invalidateDocument(uri) { - const uriString = uri.toString(); - const langiumDoc = this.documentMap.get(uriString); - if (langiumDoc) { - const linker = this.serviceRegistry.getServices(uri).references.Linker; - linker.unlink(langiumDoc); - langiumDoc.state = DocumentState.Changed; - langiumDoc.precomputedScopes = void 0; - langiumDoc.diagnostics = void 0; + return this; + }, "userPanningEnabled"), + zoomingEnabled: /* @__PURE__ */ __name(function zoomingEnabled(bool2) { + if (bool2 !== void 0) { + this._private.zoomingEnabled = bool2 ? true : false; + } else { + return this._private.zoomingEnabled; } - return langiumDoc; - } - deleteDocument(uri) { - const uriString = uri.toString(); - const langiumDoc = this.documentMap.get(uriString); - if (langiumDoc) { - langiumDoc.state = DocumentState.Changed; - this.documentMap.delete(uriString); + return this; + }, "zoomingEnabled"), + userZoomingEnabled: /* @__PURE__ */ __name(function userZoomingEnabled(bool2) { + if (bool2 !== void 0) { + this._private.userZoomingEnabled = bool2 ? true : false; + } else { + return this._private.userZoomingEnabled; } - return langiumDoc; - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/linker.js - var ref_resolving, DefaultLinker; - var init_linker = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/linker.js"() { - "use strict"; - init_cancellation(); - init_syntax_tree(); - init_ast_utils(); - init_promise_utils(); - init_documents(); - ref_resolving = Symbol("ref_resolving"); - DefaultLinker = class { - static { - __name(this, "DefaultLinker"); - } - constructor(services) { - this.reflection = services.shared.AstReflection; - this.langiumDocuments = () => services.shared.workspace.LangiumDocuments; - this.scopeProvider = services.references.ScopeProvider; - this.astNodeLocator = services.workspace.AstNodeLocator; - } - async link(document2, cancelToken = cancellation_exports.CancellationToken.None) { - for (const node2 of streamAst(document2.parseResult.value)) { - await interruptAndCheck(cancelToken); - streamReferences(node2).forEach((ref) => this.doLink(ref, document2)); + return this; + }, "userZoomingEnabled"), + boxSelectionEnabled: /* @__PURE__ */ __name(function boxSelectionEnabled(bool2) { + if (bool2 !== void 0) { + this._private.boxSelectionEnabled = bool2 ? true : false; + } else { + return this._private.boxSelectionEnabled; } - } - doLink(refInfo, document2) { - var _a; - const ref = refInfo.reference; - if (ref._ref === void 0) { - ref._ref = ref_resolving; - try { - const description = this.getCandidate(refInfo); - if (isLinkingError(description)) { - ref._ref = description; - } else { - ref._nodeDescription = description; - if (this.langiumDocuments().hasDocument(description.documentUri)) { - const linkedNode = this.loadAstNode(description); - ref._ref = linkedNode !== null && linkedNode !== void 0 ? linkedNode : this.createLinkingError(refInfo, description); - } else { - ref._ref = void 0; + return this; + }, "boxSelectionEnabled"), + pan: /* @__PURE__ */ __name(function pan() { + var args = arguments; + var pan2 = this._private.pan; + var dim, val, dims, x5, y6; + switch (args.length) { + case 0: + return pan2; + case 1: + if (string(args[0])) { + dim = args[0]; + return pan2[dim]; + } else if (plainObject(args[0])) { + if (!this._private.panningEnabled) { + return this; } - } - } catch (err) { - console.error(`An error occurred while resolving reference to '${ref.$refText}':`, err); - const errorMessage = (_a = err.message) !== null && _a !== void 0 ? _a : String(err); - ref._ref = Object.assign(Object.assign({}, refInfo), { message: `An error occurred while resolving reference to '${ref.$refText}': ${errorMessage}` }); - } - document2.references.push(ref); - } - } - unlink(document2) { - for (const ref of document2.references) { - delete ref._ref; - delete ref._nodeDescription; - } - document2.references = []; - } - getCandidate(refInfo) { - const scope = this.scopeProvider.getScope(refInfo); - const description = scope.getElement(refInfo.reference.$refText); - return description !== null && description !== void 0 ? description : this.createLinkingError(refInfo); - } - buildReference(node2, property2, refNode, refText) { - const linker = this; - const reference = { - $refNode: refNode, - $refText: refText, - get ref() { - var _a; - if (isAstNode(this._ref)) { - return this._ref; - } else if (isAstNodeDescription(this._nodeDescription)) { - const linkedNode = linker.loadAstNode(this._nodeDescription); - this._ref = linkedNode !== null && linkedNode !== void 0 ? linkedNode : linker.createLinkingError({ reference, container: node2, property: property2 }, this._nodeDescription); - } else if (this._ref === void 0) { - this._ref = ref_resolving; - const document2 = findRootNode(node2).$document; - const refData = linker.getLinkedNode({ reference, container: node2, property: property2 }); - if (refData.error && document2 && document2.state < DocumentState.ComputedScopes) { - return this._ref = void 0; + dims = args[0]; + x5 = dims.x; + y6 = dims.y; + if (number$1(x5)) { + pan2.x = x5; } - this._ref = (_a = refData.node) !== null && _a !== void 0 ? _a : refData.error; - this._nodeDescription = refData.descr; - document2 === null || document2 === void 0 ? void 0 : document2.references.push(this); - } else if (this._ref === ref_resolving) { - throw new Error(`Cyclic reference resolution detected: ${linker.astNodeLocator.getAstNodePath(node2)}/${property2} (symbol '${refText}')`); + if (number$1(y6)) { + pan2.y = y6; + } + this.emit("pan viewport"); } - return isAstNode(this._ref) ? this._ref : void 0; - }, - get $nodeDescription() { - return this._nodeDescription; - }, - get error() { - return isLinkingError(this._ref) ? this._ref : void 0; - } - }; - return reference; - } - getLinkedNode(refInfo) { - var _a; - try { - const description = this.getCandidate(refInfo); - if (isLinkingError(description)) { - return { error: description }; - } - const linkedNode = this.loadAstNode(description); - if (linkedNode) { - return { node: linkedNode, descr: description }; - } else { - return { - descr: description, - error: this.createLinkingError(refInfo, description) - }; - } - } catch (err) { - console.error(`An error occurred while resolving reference to '${refInfo.reference.$refText}':`, err); - const errorMessage = (_a = err.message) !== null && _a !== void 0 ? _a : String(err); - return { - error: Object.assign(Object.assign({}, refInfo), { message: `An error occurred while resolving reference to '${refInfo.reference.$refText}': ${errorMessage}` }) - }; - } - } - loadAstNode(nodeDescription) { - if (nodeDescription.node) { - return nodeDescription.node; - } - const doc = this.langiumDocuments().getDocument(nodeDescription.documentUri); - if (!doc) { - return void 0; - } - return this.astNodeLocator.getAstNode(doc.parseResult.value, nodeDescription.path); - } - createLinkingError(refInfo, targetDescription) { - const document2 = findRootNode(refInfo.container).$document; - if (document2 && document2.state < DocumentState.ComputedScopes) { - console.warn(`Attempted reference resolution before document reached ComputedScopes state (${document2.uri}).`); + break; + case 2: + if (!this._private.panningEnabled) { + return this; + } + dim = args[0]; + val = args[1]; + if ((dim === "x" || dim === "y") && number$1(val)) { + pan2[dim] = val; + } + this.emit("pan viewport"); + break; } - const referenceType = this.reflection.getReferenceType(refInfo); - return Object.assign(Object.assign({}, refInfo), { message: `Could not resolve reference to ${referenceType} named '${refInfo.reference.$refText}'.`, targetDescription }); - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/name-provider.js - function isNamed(node2) { - return typeof node2.name === "string"; - } - var DefaultNameProvider; - var init_name_provider = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/name-provider.js"() { - "use strict"; - init_grammar_utils(); - __name(isNamed, "isNamed"); - DefaultNameProvider = class { - static { - __name(this, "DefaultNameProvider"); - } - getName(node2) { - if (isNamed(node2)) { - return node2.name; + this.notify("viewport"); + return this; + }, "pan"), + panBy: /* @__PURE__ */ __name(function panBy(arg0, arg1) { + var args = arguments; + var pan2 = this._private.pan; + var dim, val, dims, x5, y6; + if (!this._private.panningEnabled) { + return this; } - return void 0; - } - getNameNode(node2) { - return findNodeForProperty(node2.$cstNode, "name"); - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/references.js - var DefaultReferences; - var init_references = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/references.js"() { - "use strict"; - init_grammar_utils(); - init_syntax_tree(); - init_ast_utils(); - init_cst_utils(); - init_stream(); - init_uri_utils(); - DefaultReferences = class { - static { - __name(this, "DefaultReferences"); - } - constructor(services) { - this.nameProvider = services.references.NameProvider; - this.index = services.shared.workspace.IndexManager; - this.nodeLocator = services.workspace.AstNodeLocator; - } - findDeclaration(sourceCstNode) { - if (sourceCstNode) { - const assignment = findAssignment(sourceCstNode); - const nodeElem = sourceCstNode.astNode; - if (assignment && nodeElem) { - const reference = nodeElem[assignment.feature]; - if (isReference(reference)) { - return reference.ref; - } else if (Array.isArray(reference)) { - for (const ref of reference) { - if (isReference(ref) && ref.$refNode && ref.$refNode.offset <= sourceCstNode.offset && ref.$refNode.end >= sourceCstNode.end) { - return ref.ref; - } + switch (args.length) { + case 1: + if (plainObject(arg0)) { + dims = args[0]; + x5 = dims.x; + y6 = dims.y; + if (number$1(x5)) { + pan2.x += x5; } + if (number$1(y6)) { + pan2.y += y6; + } + this.emit("pan viewport"); } - } - if (nodeElem) { - const nameNode = this.nameProvider.getNameNode(nodeElem); - if (nameNode && (nameNode === sourceCstNode || isChildNode(sourceCstNode, nameNode))) { - return nodeElem; + break; + case 2: + dim = arg0; + val = arg1; + if ((dim === "x" || dim === "y") && number$1(val)) { + pan2[dim] += val; } - } + this.emit("pan viewport"); + break; } - return void 0; - } - findDeclarationNode(sourceCstNode) { - const astNode = this.findDeclaration(sourceCstNode); - if (astNode === null || astNode === void 0 ? void 0 : astNode.$cstNode) { - const targetNode = this.nameProvider.getNameNode(astNode); - return targetNode !== null && targetNode !== void 0 ? targetNode : astNode.$cstNode; + this.notify("viewport"); + return this; + }, "panBy"), + gc: /* @__PURE__ */ __name(function gc() { + this.notify("gc"); + }, "gc"), + fit: /* @__PURE__ */ __name(function fit(elements2, padding2) { + var viewportState = this.getFitViewport(elements2, padding2); + if (viewportState) { + var _p = this._private; + _p.zoom = viewportState.zoom; + _p.pan = viewportState.pan; + this.emit("pan zoom viewport"); + this.notify("viewport"); } - return void 0; - } - findReferences(targetNode, options3) { - const refs = []; - if (options3.includeDeclaration) { - const ref = this.getReferenceToSelf(targetNode); - if (ref) { - refs.push(ref); - } + return this; + }, "fit"), + getFitViewport: /* @__PURE__ */ __name(function getFitViewport(elements2, padding2) { + if (number$1(elements2) && padding2 === void 0) { + padding2 = elements2; + elements2 = void 0; } - let indexReferences = this.index.findAllReferences(targetNode, this.nodeLocator.getAstNodePath(targetNode)); - if (options3.documentUri) { - indexReferences = indexReferences.filter((ref) => UriUtils.equals(ref.sourceUri, options3.documentUri)); + if (!this._private.panningEnabled || !this._private.zoomingEnabled) { + return; } - refs.push(...indexReferences); - return stream(refs); - } - getReferenceToSelf(targetNode) { - const nameNode = this.nameProvider.getNameNode(targetNode); - if (nameNode) { - const doc = getDocument(targetNode); - const path4 = this.nodeLocator.getAstNodePath(targetNode); + var bb; + if (string(elements2)) { + var sel = elements2; + elements2 = this.$(sel); + } else if (boundingBox(elements2)) { + var bbe = elements2; + bb = { + x1: bbe.x1, + y1: bbe.y1, + x2: bbe.x2, + y2: bbe.y2 + }; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + } else if (!elementOrCollection(elements2)) { + elements2 = this.mutableElements(); + } + if (elementOrCollection(elements2) && elements2.empty()) { + return; + } + bb = bb || elements2.boundingBox(); + var w4 = this.width(); + var h3 = this.height(); + var zoom2; + padding2 = number$1(padding2) ? padding2 : 0; + if (!isNaN(w4) && !isNaN(h3) && w4 > 0 && h3 > 0 && !isNaN(bb.w) && !isNaN(bb.h) && bb.w > 0 && bb.h > 0) { + zoom2 = Math.min((w4 - 2 * padding2) / bb.w, (h3 - 2 * padding2) / bb.h); + zoom2 = zoom2 > this._private.maxZoom ? this._private.maxZoom : zoom2; + zoom2 = zoom2 < this._private.minZoom ? this._private.minZoom : zoom2; + var pan2 = { + // now pan to middle + x: (w4 - zoom2 * (bb.x1 + bb.x2)) / 2, + y: (h3 - zoom2 * (bb.y1 + bb.y2)) / 2 + }; return { - sourceUri: doc.uri, - sourcePath: path4, - targetUri: doc.uri, - targetPath: path4, - segment: toDocumentSegment(nameNode), - local: true + zoom: zoom2, + pan: pan2 }; } - return void 0; - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/collections.js - var MultiMap, BiMap; - var init_collections = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/collections.js"() { - "use strict"; - init_stream(); - MultiMap = class { - static { - __name(this, "MultiMap"); - } - constructor(elements3) { - this.map = /* @__PURE__ */ new Map(); - if (elements3) { - for (const [key, value2] of elements3) { - this.add(key, value2); - } + return; + }, "getFitViewport"), + zoomRange: /* @__PURE__ */ __name(function zoomRange(min9, max10) { + var _p = this._private; + if (max10 == null) { + var opts = min9; + min9 = opts.min; + max10 = opts.max; } - } - /** - * The total number of values in the multimap. - */ - get size() { - return Reduction.sum(stream(this.map.values()).map((a2) => a2.length)); - } - /** - * Clear all entries in the multimap. - */ - clear() { - this.map.clear(); - } - /** - * Operates differently depending on whether a `value` is given: - * * With a value, this method deletes the specific key / value pair from the multimap. - * * Without a value, all values associated with the given key are deleted. - * - * @returns `true` if a value existed and has been removed, or `false` if the specified - * key / value does not exist. - */ - delete(key, value2) { - if (value2 === void 0) { - return this.map.delete(key); + if (number$1(min9) && number$1(max10) && min9 <= max10) { + _p.minZoom = min9; + _p.maxZoom = max10; + } else if (number$1(min9) && max10 === void 0 && min9 <= _p.maxZoom) { + _p.minZoom = min9; + } else if (number$1(max10) && min9 === void 0 && max10 >= _p.minZoom) { + _p.maxZoom = max10; + } + return this; + }, "zoomRange"), + minZoom: /* @__PURE__ */ __name(function minZoom(zoom2) { + if (zoom2 === void 0) { + return this._private.minZoom; } else { - const values2 = this.map.get(key); - if (values2) { - const index = values2.indexOf(value2); - if (index >= 0) { - if (values2.length === 1) { - this.map.delete(key); - } else { - values2.splice(index, 1); - } - return true; - } - } - return false; + return this.zoomRange({ + min: zoom2 + }); } - } - /** - * Returns an array of all values associated with the given key. If no value exists, - * an empty array is returned. - * - * _Note:_ The returned array is assumed not to be modified. Use the `set` method to add a - * value and `delete` to remove a value from the multimap. - */ - get(key) { - var _a; - return (_a = this.map.get(key)) !== null && _a !== void 0 ? _a : []; - } - /** - * Operates differently depending on whether a `value` is given: - * * With a value, this method returns `true` if the specific key / value pair is present in the multimap. - * * Without a value, this method returns `true` if the given key is present in the multimap. - */ - has(key, value2) { - if (value2 === void 0) { - return this.map.has(key); + }, "minZoom"), + maxZoom: /* @__PURE__ */ __name(function maxZoom(zoom2) { + if (zoom2 === void 0) { + return this._private.maxZoom; } else { - const values2 = this.map.get(key); - if (values2) { - return values2.indexOf(value2) >= 0; + return this.zoomRange({ + max: zoom2 + }); + } + }, "maxZoom"), + getZoomedViewport: /* @__PURE__ */ __name(function getZoomedViewport(params) { + var _p = this._private; + var currentPan = _p.pan; + var currentZoom = _p.zoom; + var pos; + var zoom2; + var bail = false; + if (!_p.zoomingEnabled) { + bail = true; + } + if (number$1(params)) { + zoom2 = params; + } else if (plainObject(params)) { + zoom2 = params.level; + if (params.position != null) { + pos = modelToRenderedPosition$1(params.position, currentZoom, currentPan); + } else if (params.renderedPosition != null) { + pos = params.renderedPosition; + } + if (pos != null && !_p.panningEnabled) { + bail = true; } - return false; } - } - /** - * Add the given key / value pair to the multimap. - */ - add(key, value2) { - if (this.map.has(key)) { - this.map.get(key).push(value2); - } else { - this.map.set(key, [value2]); + zoom2 = zoom2 > _p.maxZoom ? _p.maxZoom : zoom2; + zoom2 = zoom2 < _p.minZoom ? _p.minZoom : zoom2; + if (bail || !number$1(zoom2) || zoom2 === currentZoom || pos != null && (!number$1(pos.x) || !number$1(pos.y))) { + return null; } - return this; - } - /** - * Add the given set of key / value pairs to the multimap. - */ - addAll(key, values2) { - if (this.map.has(key)) { - this.map.get(key).push(...values2); + if (pos != null) { + var pan1 = currentPan; + var zoom1 = currentZoom; + var zoom22 = zoom2; + var pan2 = { + x: -zoom22 / zoom1 * (pos.x - pan1.x) + pos.x, + y: -zoom22 / zoom1 * (pos.y - pan1.y) + pos.y + }; + return { + zoomed: true, + panned: true, + zoom: zoom22, + pan: pan2 + }; } else { - this.map.set(key, Array.from(values2)); + return { + zoomed: true, + panned: false, + zoom: zoom2, + pan: currentPan + }; } - return this; - } - /** - * Invokes the given callback function for every key / value pair in the multimap. - */ - forEach(callbackfn) { - this.map.forEach((array4, key) => array4.forEach((value2) => callbackfn(value2, key, this))); - } - /** - * Returns an iterator of key, value pairs for every entry in the map. - */ - [Symbol.iterator]() { - return this.entries().iterator(); - } - /** - * Returns a stream of key, value pairs for every entry in the map. - */ - entries() { - return stream(this.map.entries()).flatMap(([key, array4]) => array4.map((value2) => [key, value2])); - } - /** - * Returns a stream of keys in the map. - */ - keys() { - return stream(this.map.keys()); - } - /** - * Returns a stream of values in the map. - */ - values() { - return stream(this.map.values()).flat(); - } - /** - * Returns a stream of key, value set pairs for every key in the map. - */ - entriesGroupedByKey() { - return stream(this.map.entries()); - } - }; - BiMap = class { - static { - __name(this, "BiMap"); - } - get size() { - return this.map.size; - } - constructor(elements3) { - this.map = /* @__PURE__ */ new Map(); - this.inverse = /* @__PURE__ */ new Map(); - if (elements3) { - for (const [key, value2] of elements3) { - this.set(key, value2); + }, "getZoomedViewport"), + zoom: /* @__PURE__ */ __name(function zoom(params) { + if (params === void 0) { + return this._private.zoom; + } else { + var vp = this.getZoomedViewport(params); + var _p = this._private; + if (vp == null || !vp.zoomed) { + return this; + } + _p.zoom = vp.zoom; + if (vp.panned) { + _p.pan.x = vp.pan.x; + _p.pan.y = vp.pan.y; } + this.emit("zoom" + (vp.panned ? " pan" : "") + " viewport"); + this.notify("viewport"); + return this; } - } - clear() { - this.map.clear(); - this.inverse.clear(); - } - set(key, value2) { - this.map.set(key, value2); - this.inverse.set(value2, key); - return this; - } - get(key) { - return this.map.get(key); - } - getKey(value2) { - return this.inverse.get(value2); - } - delete(key) { - const value2 = this.map.get(key); - if (value2 !== void 0) { - this.map.delete(key); - this.inverse.delete(value2); - return true; + }, "zoom"), + viewport: /* @__PURE__ */ __name(function viewport(opts) { + var _p = this._private; + var zoomDefd = true; + var panDefd = true; + var events = []; + var zoomFailed = false; + var panFailed = false; + if (!opts) { + return this; } - return false; - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope-computation.js - var DefaultScopeComputation; - var init_scope_computation = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope-computation.js"() { - "use strict"; - init_cancellation(); - init_ast_utils(); - init_collections(); - init_promise_utils(); - DefaultScopeComputation = class { - static { - __name(this, "DefaultScopeComputation"); - } - constructor(services) { - this.nameProvider = services.references.NameProvider; - this.descriptions = services.workspace.AstNodeDescriptionProvider; - } - async computeExports(document2, cancelToken = cancellation_exports.CancellationToken.None) { - return this.computeExportsForNode(document2.parseResult.value, document2, void 0, cancelToken); - } - /** - * Creates {@link AstNodeDescription AstNodeDescriptions} for the given {@link AstNode parentNode} and its children. - * The list of children to be considered is determined by the function parameter {@link children}. - * By default only the direct children of {@link parentNode} are visited, nested nodes are not exported. - * - * @param parentNode AST node to be exported, i.e., of which an {@link AstNodeDescription} shall be added to the returned list. - * @param document The document containing the AST node to be exported. - * @param children A function called with {@link parentNode} as single argument and returning an {@link Iterable} supplying the children to be visited, which must be directly or transitively contained in {@link parentNode}. - * @param cancelToken Indicates when to cancel the current operation. - * @throws `OperationCancelled` if a user action occurs during execution. - * @returns A list of {@link AstNodeDescription AstNodeDescriptions} to be published to index. - */ - async computeExportsForNode(parentNode, document2, children2 = streamContents, cancelToken = cancellation_exports.CancellationToken.None) { - const exports2 = []; - this.exportNode(parentNode, exports2, document2); - for (const node2 of children2(parentNode)) { - await interruptAndCheck(cancelToken); - this.exportNode(node2, exports2, document2); + if (!number$1(opts.zoom)) { + zoomDefd = false; } - return exports2; - } - /** - * Add a single node to the list of exports if it has a name. Override this method to change how - * symbols are exported, e.g. by modifying their exported name. - */ - exportNode(node2, exports2, document2) { - const name = this.nameProvider.getName(node2); - if (name) { - exports2.push(this.descriptions.createDescription(node2, name, document2)); + if (!plainObject(opts.pan)) { + panDefd = false; } - } - async computeLocalScopes(document2, cancelToken = cancellation_exports.CancellationToken.None) { - const rootNode = document2.parseResult.value; - const scopes = new MultiMap(); - for (const node2 of streamAllContents(rootNode)) { - await interruptAndCheck(cancelToken); - this.processNode(node2, document2, scopes); + if (!zoomDefd && !panDefd) { + return this; } - return scopes; - } - /** - * Process a single node during scopes computation. The default implementation makes the node visible - * in the subtree of its container (if the node has a name). Override this method to change this, - * e.g. by increasing the visibility to a higher level in the AST. - */ - processNode(node2, document2, scopes) { - const container2 = node2.$container; - if (container2) { - const name = this.nameProvider.getName(node2); - if (name) { - scopes.add(container2, this.descriptions.createDescription(node2, name, document2)); + if (zoomDefd) { + var z3 = opts.zoom; + if (z3 < _p.minZoom || z3 > _p.maxZoom || !_p.zoomingEnabled) { + zoomFailed = true; + } else { + _p.zoom = z3; + events.push("zoom"); } } - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope.js - var StreamScope, MapScope, EMPTY_SCOPE; - var init_scope = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope.js"() { - "use strict"; - init_stream(); - StreamScope = class { - static { - __name(this, "StreamScope"); - } - constructor(elements3, outerScope, options3) { - var _a; - this.elements = elements3; - this.outerScope = outerScope; - this.caseInsensitive = (_a = options3 === null || options3 === void 0 ? void 0 : options3.caseInsensitive) !== null && _a !== void 0 ? _a : false; - } - getAllElements() { - if (this.outerScope) { - return this.elements.concat(this.outerScope.getAllElements()); - } else { - return this.elements; + if (panDefd && (!zoomFailed || !opts.cancelOnFailedZoom) && _p.panningEnabled) { + var p3 = opts.pan; + if (number$1(p3.x)) { + _p.pan.x = p3.x; + panFailed = false; + } + if (number$1(p3.y)) { + _p.pan.y = p3.y; + panFailed = false; + } + if (!panFailed) { + events.push("pan"); + } } - } - getElement(name) { - const local = this.caseInsensitive ? this.elements.find((e3) => e3.name.toLowerCase() === name.toLowerCase()) : this.elements.find((e3) => e3.name === name); - if (local) { - return local; + if (events.length > 0) { + events.push("viewport"); + this.emit(events.join(" ")); + this.notify("viewport"); } - if (this.outerScope) { - return this.outerScope.getElement(name); + return this; + }, "viewport"), + center: /* @__PURE__ */ __name(function center2(elements2) { + var pan2 = this.getCenterPan(elements2); + if (pan2) { + this._private.pan = pan2; + this.emit("pan viewport"); + this.notify("viewport"); } - return void 0; - } - }; - MapScope = class { - static { - __name(this, "MapScope"); - } - constructor(elements3, outerScope, options3) { - var _a; - this.elements = /* @__PURE__ */ new Map(); - this.caseInsensitive = (_a = options3 === null || options3 === void 0 ? void 0 : options3.caseInsensitive) !== null && _a !== void 0 ? _a : false; - for (const element3 of elements3) { - const name = this.caseInsensitive ? element3.name.toLowerCase() : element3.name; - this.elements.set(name, element3); + return this; + }, "center"), + getCenterPan: /* @__PURE__ */ __name(function getCenterPan(elements2, zoom2) { + if (!this._private.panningEnabled) { + return; } - this.outerScope = outerScope; - } - getElement(name) { - const localName = this.caseInsensitive ? name.toLowerCase() : name; - const local = this.elements.get(localName); - if (local) { - return local; + if (string(elements2)) { + var selector = elements2; + elements2 = this.mutableElements().filter(selector); + } else if (!elementOrCollection(elements2)) { + elements2 = this.mutableElements(); } - if (this.outerScope) { - return this.outerScope.getElement(name); + if (elements2.length === 0) { + return; } - return void 0; - } - getAllElements() { - let elementStream = stream(this.elements.values()); - if (this.outerScope) { - elementStream = elementStream.concat(this.outerScope.getAllElements()); + var bb = elements2.boundingBox(); + var w4 = this.width(); + var h3 = this.height(); + zoom2 = zoom2 === void 0 ? this._private.zoom : zoom2; + var pan2 = { + // middle + x: (w4 - zoom2 * (bb.x1 + bb.x2)) / 2, + y: (h3 - zoom2 * (bb.y1 + bb.y2)) / 2 + }; + return pan2; + }, "getCenterPan"), + reset: /* @__PURE__ */ __name(function reset2() { + if (!this._private.panningEnabled || !this._private.zoomingEnabled) { + return this; } - return elementStream; - } + this.viewport({ + pan: { + x: 0, + y: 0 + }, + zoom: 1 + }); + return this; + }, "reset"), + invalidateSize: /* @__PURE__ */ __name(function invalidateSize() { + this._private.sizeCache = null; + }, "invalidateSize"), + size: /* @__PURE__ */ __name(function size3() { + var _p = this._private; + var container2 = _p.container; + var cy = this; + return _p.sizeCache = _p.sizeCache || (container2 ? (function() { + var style3 = cy.window().getComputedStyle(container2); + var val = /* @__PURE__ */ __name(function val2(name) { + return parseFloat(style3.getPropertyValue(name)); + }, "val"); + return { + width: container2.clientWidth - val("padding-left") - val("padding-right"), + height: container2.clientHeight - val("padding-top") - val("padding-bottom") + }; + })() : { + // fallback if no container (not 0 b/c can be used for dividing etc) + width: 1, + height: 1 + }); + }, "size"), + width: /* @__PURE__ */ __name(function width2() { + return this.size().width; + }, "width"), + height: /* @__PURE__ */ __name(function height() { + return this.size().height; + }, "height"), + extent: /* @__PURE__ */ __name(function extent() { + var pan2 = this._private.pan; + var zoom2 = this._private.zoom; + var rb = this.renderedExtent(); + var b3 = { + x1: (rb.x1 - pan2.x) / zoom2, + x2: (rb.x2 - pan2.x) / zoom2, + y1: (rb.y1 - pan2.y) / zoom2, + y2: (rb.y2 - pan2.y) / zoom2 + }; + b3.w = b3.x2 - b3.x1; + b3.h = b3.y2 - b3.y1; + return b3; + }, "extent"), + renderedExtent: /* @__PURE__ */ __name(function renderedExtent() { + var width3 = this.width(); + var height2 = this.height(); + return { + x1: 0, + y1: 0, + x2: width3, + y2: height2, + w: width3, + h: height2 + }; + }, "renderedExtent"), + multiClickDebounceTime: /* @__PURE__ */ __name(function multiClickDebounceTime(_int) { + if (_int) this._private.multiClickDebounceTime = _int; + else return this._private.multiClickDebounceTime; + return this; + }, "multiClickDebounceTime") }; - EMPTY_SCOPE = { - getElement() { - return void 0; - }, - getAllElements() { - return EMPTY_STREAM; - } + corefn$1.centre = corefn$1.center; + corefn$1.autolockNodes = corefn$1.autolock; + corefn$1.autoungrabifyNodes = corefn$1.autoungrabify; + fn2 = { + data: define2.data({ + field: "data", + bindingEvent: "data", + allowBinding: true, + allowSetting: true, + settingEvent: "data", + settingTriggersEvent: true, + triggerFnName: "trigger", + allowGetting: true, + updateStyle: true + }), + removeData: define2.removeData({ + field: "data", + event: "data", + triggerFnName: "trigger", + triggerEvent: true, + updateStyle: true + }), + scratch: define2.data({ + field: "scratch", + bindingEvent: "scratch", + allowBinding: true, + allowSetting: true, + settingEvent: "scratch", + settingTriggersEvent: true, + triggerFnName: "trigger", + allowGetting: true, + updateStyle: true + }), + removeScratch: define2.removeData({ + field: "scratch", + event: "scratch", + triggerFnName: "trigger", + triggerEvent: true, + updateStyle: true + }) }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/caching.js - var DisposableCache, SimpleCache, ContextCache, DocumentCache, WorkspaceCache; - var init_caching = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/caching.js"() { - "use strict"; - DisposableCache = class { - static { - __name(this, "DisposableCache"); + fn2.attr = fn2.data; + fn2.removeAttr = fn2.removeData; + Core = /* @__PURE__ */ __name(function Core2(opts) { + var cy = this; + opts = extend4({}, opts); + var container2 = opts.container; + if (container2 && !htmlElement(container2) && htmlElement(container2[0])) { + container2 = container2[0]; } - constructor() { - this.toDispose = []; - this.isDisposed = false; + var reg = container2 ? container2._cyreg : null; + reg = reg || {}; + if (reg && reg.cy) { + reg.cy.destroy(); + reg = {}; } - onDispose(disposable) { - this.toDispose.push(disposable); - } - dispose() { - this.throwIfDisposed(); - this.clear(); - this.isDisposed = true; - this.toDispose.forEach((disposable) => disposable.dispose()); - } - throwIfDisposed() { - if (this.isDisposed) { - throw new Error("This cache has already been disposed"); - } - } - }; - SimpleCache = class extends DisposableCache { - static { - __name(this, "SimpleCache"); - } - constructor() { - super(...arguments); - this.cache = /* @__PURE__ */ new Map(); - } - has(key) { - this.throwIfDisposed(); - return this.cache.has(key); - } - set(key, value2) { - this.throwIfDisposed(); - this.cache.set(key, value2); + var readies = reg.readies = reg.readies || []; + if (container2) { + container2._cyreg = reg; } - get(key, provider) { - this.throwIfDisposed(); - if (this.cache.has(key)) { - return this.cache.get(key); - } else if (provider) { - const value2 = provider(); - this.cache.set(key, value2); - return value2; + reg.cy = cy; + var head2 = _window !== void 0 && container2 !== void 0 && !opts.headless; + var options2 = opts; + options2.layout = extend4({ + name: head2 ? "grid" : "null" + }, options2.layout); + options2.renderer = extend4({ + name: head2 ? "canvas" : "null" + }, options2.renderer); + var defVal = /* @__PURE__ */ __name(function defVal2(def, val, altVal) { + if (val !== void 0) { + return val; + } else if (altVal !== void 0) { + return altVal; } else { - return void 0; + return def; } - } - delete(key) { - this.throwIfDisposed(); - return this.cache.delete(key); - } - clear() { - this.throwIfDisposed(); - this.cache.clear(); - } - }; - ContextCache = class extends DisposableCache { - static { - __name(this, "ContextCache"); - } - constructor(converter) { - super(); - this.cache = /* @__PURE__ */ new Map(); - this.converter = converter !== null && converter !== void 0 ? converter : (value2) => value2; - } - has(contextKey, key) { - this.throwIfDisposed(); - return this.cacheForContext(contextKey).has(key); - } - set(contextKey, key, value2) { - this.throwIfDisposed(); - this.cacheForContext(contextKey).set(key, value2); - } - get(contextKey, key, provider) { - this.throwIfDisposed(); - const contextCache = this.cacheForContext(contextKey); - if (contextCache.has(key)) { - return contextCache.get(key); - } else if (provider) { - const value2 = provider(); - contextCache.set(key, value2); - return value2; + }, "defVal"); + var _p = this._private = { + container: container2, + // html dom ele container + ready: false, + // whether ready has been triggered + options: options2, + // cached options + elements: new Collection(this), + // elements in the graph + listeners: [], + // list of listeners + aniEles: new Collection(this), + // elements being animated + data: options2.data || {}, + // data for the core + scratch: {}, + // scratch object for core + layout: null, + renderer: null, + destroyed: false, + // whether destroy was called + notificationsEnabled: true, + // whether notifications are sent to the renderer + minZoom: 1e-50, + maxZoom: 1e50, + zoomingEnabled: defVal(true, options2.zoomingEnabled), + userZoomingEnabled: defVal(true, options2.userZoomingEnabled), + panningEnabled: defVal(true, options2.panningEnabled), + userPanningEnabled: defVal(true, options2.userPanningEnabled), + boxSelectionEnabled: defVal(true, options2.boxSelectionEnabled), + autolock: defVal(false, options2.autolock, options2.autolockNodes), + autoungrabify: defVal(false, options2.autoungrabify, options2.autoungrabifyNodes), + autounselectify: defVal(false, options2.autounselectify), + styleEnabled: options2.styleEnabled === void 0 ? head2 : options2.styleEnabled, + zoom: number$1(options2.zoom) ? options2.zoom : 1, + pan: { + x: plainObject(options2.pan) && number$1(options2.pan.x) ? options2.pan.x : 0, + y: plainObject(options2.pan) && number$1(options2.pan.y) ? options2.pan.y : 0 + }, + animation: { + // object for currently-running animations + current: [], + queue: [] + }, + hasCompoundNodes: false, + multiClickDebounceTime: defVal(250, options2.multiClickDebounceTime) + }; + this.createEmitter(); + this.selectionType(options2.selectionType); + this.zoomRange({ + min: options2.minZoom, + max: options2.maxZoom + }); + var loadExtData = /* @__PURE__ */ __name(function loadExtData2(extData, next3) { + var anyIsPromise = extData.some(promise); + if (anyIsPromise) { + return Promise$1.all(extData).then(next3); } else { - return void 0; + next3(extData); } + }, "loadExtData"); + if (_p.styleEnabled) { + cy.setStyle([]); } - delete(contextKey, key) { - this.throwIfDisposed(); - return this.cacheForContext(contextKey).delete(key); - } - clear(contextKey) { - this.throwIfDisposed(); - if (contextKey) { - const mapKey = this.converter(contextKey); - this.cache.delete(mapKey); - } else { - this.cache.clear(); + var rendererOptions = extend4({}, options2, options2.renderer); + cy.initRenderer(rendererOptions); + var setElesAndLayout = /* @__PURE__ */ __name(function setElesAndLayout2(elements2, onload, ondone) { + cy.notifications(false); + var oldEles = cy.mutableElements(); + if (oldEles.length > 0) { + oldEles.remove(); } - } - cacheForContext(contextKey) { - const mapKey = this.converter(contextKey); - let documentCache = this.cache.get(mapKey); - if (!documentCache) { - documentCache = /* @__PURE__ */ new Map(); - this.cache.set(mapKey, documentCache); + if (elements2 != null) { + if (plainObject(elements2) || array2(elements2)) { + cy.add(elements2); + } } - return documentCache; - } - }; - DocumentCache = class extends ContextCache { - static { - __name(this, "DocumentCache"); - } - /** - * Creates a new document cache. - * - * @param sharedServices Service container instance to hook into document lifecycle events. - * @param state Optional document state on which the cache should evict. - * If not provided, the cache will evict on `DocumentBuilder#onUpdate`. - * *Deleted* documents are considered in both cases. - * - * Providing a state here will use `DocumentBuilder#onDocumentPhase` instead, - * which triggers on all documents that have been affected by this change, assuming that the - * state is `DocumentState.Linked` or a later state. - */ - constructor(sharedServices, state4) { - super((uri) => uri.toString()); - if (state4) { - this.toDispose.push(sharedServices.workspace.DocumentBuilder.onDocumentPhase(state4, (document2) => { - this.clear(document2.uri.toString()); - })); - this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((_changed, deleted) => { - for (const uri of deleted) { - this.clear(uri); - } - })); - } else { - this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((changed, deleted) => { - const allUris = changed.concat(deleted); - for (const uri of allUris) { - this.clear(uri); - } - })); + cy.one("layoutready", function(e3) { + cy.notifications(true); + cy.emit(e3); + cy.one("load", onload); + cy.emitAndNotify("load"); + }).one("layoutstop", function() { + cy.one("done", ondone); + cy.emit("done"); + }); + var layoutOpts = extend4({}, cy._private.options.layout); + layoutOpts.eles = cy.elements(); + cy.layout(layoutOpts).run(); + }, "setElesAndLayout"); + loadExtData([options2.style, options2.elements], function(thens) { + var initStyle = thens[0]; + var initEles = thens[1]; + if (_p.styleEnabled) { + cy.style().append(initStyle); } - } - }; - WorkspaceCache = class extends SimpleCache { - static { - __name(this, "WorkspaceCache"); - } - /** - * Creates a new workspace cache. - * - * @param sharedServices Service container instance to hook into document lifecycle events. - * @param state Optional document state on which the cache should evict. - * If not provided, the cache will evict on `DocumentBuilder#onUpdate`. - * *Deleted* documents are considered in both cases. - */ - constructor(sharedServices, state4) { - super(); - if (state4) { - this.toDispose.push(sharedServices.workspace.DocumentBuilder.onBuildPhase(state4, () => { - this.clear(); - })); - this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((_changed, deleted) => { - if (deleted.length > 0) { - this.clear(); - } - })); + setElesAndLayout(initEles, function() { + cy.startAnimationLoop(); + _p.ready = true; + if (fn$6(options2.ready)) { + cy.on("ready", options2.ready); + } + for (var i2 = 0; i2 < readies.length; i2++) { + var fn3 = readies[i2]; + cy.on("ready", fn3); + } + if (reg) { + reg.readies = []; + } + cy.emit("ready"); + }, options2.done); + }); + }, "Core"); + corefn = Core.prototype; + extend4(corefn, { + instanceString: /* @__PURE__ */ __name(function instanceString3() { + return "core"; + }, "instanceString"), + isReady: /* @__PURE__ */ __name(function isReady() { + return this._private.ready; + }, "isReady"), + destroyed: /* @__PURE__ */ __name(function destroyed() { + return this._private.destroyed; + }, "destroyed"), + ready: /* @__PURE__ */ __name(function ready(fn3) { + if (this.isReady()) { + this.emitter().emit("ready", [], fn3); } else { - this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate(() => { - this.clear(); - })); + this.on("ready", fn3); } - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope-provider.js - var DefaultScopeProvider; - var init_scope_provider = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope-provider.js"() { - "use strict"; - init_scope(); - init_ast_utils(); - init_stream(); - init_caching(); - DefaultScopeProvider = class { - static { - __name(this, "DefaultScopeProvider"); - } - constructor(services) { - this.reflection = services.shared.AstReflection; - this.nameProvider = services.references.NameProvider; - this.descriptions = services.workspace.AstNodeDescriptionProvider; - this.indexManager = services.shared.workspace.IndexManager; - this.globalScopeCache = new WorkspaceCache(services.shared); - } - getScope(context) { - const scopes = []; - const referenceType = this.reflection.getReferenceType(context); - const precomputed = getDocument(context.container).precomputedScopes; - if (precomputed) { - let currentNode = context.container; - do { - const allDescriptions = precomputed.get(currentNode); - if (allDescriptions.length > 0) { - scopes.push(stream(allDescriptions).filter((desc) => this.reflection.isSubtype(desc.type, referenceType))); - } - currentNode = currentNode.$container; - } while (currentNode); + return this; + }, "ready"), + destroy: /* @__PURE__ */ __name(function destroy() { + var cy = this; + if (cy.destroyed()) return; + cy.stopAnimationLoop(); + cy.destroyRenderer(); + this.emit("destroy"); + cy._private.destroyed = true; + return cy; + }, "destroy"), + hasElementWithId: /* @__PURE__ */ __name(function hasElementWithId(id30) { + return this._private.elements.hasElementWithId(id30); + }, "hasElementWithId"), + getElementById: /* @__PURE__ */ __name(function getElementById(id30) { + return this._private.elements.getElementById(id30); + }, "getElementById"), + hasCompoundNodes: /* @__PURE__ */ __name(function hasCompoundNodes() { + return this._private.hasCompoundNodes; + }, "hasCompoundNodes"), + headless: /* @__PURE__ */ __name(function headless() { + return this._private.renderer.isHeadless(); + }, "headless"), + styleEnabled: /* @__PURE__ */ __name(function styleEnabled() { + return this._private.styleEnabled; + }, "styleEnabled"), + addToPool: /* @__PURE__ */ __name(function addToPool(eles) { + this._private.elements.merge(eles); + return this; + }, "addToPool"), + removeFromPool: /* @__PURE__ */ __name(function removeFromPool(eles) { + this._private.elements.unmerge(eles); + return this; + }, "removeFromPool"), + container: /* @__PURE__ */ __name(function container() { + return this._private.container || null; + }, "container"), + window: /* @__PURE__ */ __name(function window2() { + var container2 = this._private.container; + if (container2 == null) return _window; + var ownerDocument = this._private.container.ownerDocument; + if (ownerDocument === void 0 || ownerDocument == null) { + return _window; } - let result = this.getGlobalScope(referenceType, context); - for (let i2 = scopes.length - 1; i2 >= 0; i2--) { - result = this.createScope(scopes[i2], result); + return ownerDocument.defaultView || _window; + }, "window"), + mount: /* @__PURE__ */ __name(function mount(container2) { + if (container2 == null) { + return; } - return result; - } - /** - * Create a scope for the given collection of AST node descriptions. - */ - createScope(elements3, outerScope, options3) { - return new StreamScope(stream(elements3), outerScope, options3); - } - /** - * Create a scope for the given collection of AST nodes, which need to be transformed into respective - * descriptions first. This is done using the `NameProvider` and `AstNodeDescriptionProvider` services. - */ - createScopeForNodes(elements3, outerScope, options3) { - const s2 = stream(elements3).map((e3) => { - const name = this.nameProvider.getName(e3); - if (name) { - return this.descriptions.createDescription(e3, name); - } - return void 0; - }).nonNullable(); - return new StreamScope(s2, outerScope, options3); - } - /** - * Create a global scope filtered for the given reference type. - */ - getGlobalScope(referenceType, _context) { - return this.globalScopeCache.get(referenceType, () => new MapScope(this.indexManager.allElements(referenceType))); - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/json-serializer.js - function isAstNodeWithComment(node2) { - return typeof node2.$comment === "string"; - } - function isIntermediateReference(obj) { - return typeof obj === "object" && !!obj && ("$ref" in obj || "$error" in obj); - } - var DefaultJsonSerializer; - var init_json_serializer = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/json-serializer.js"() { - "use strict"; - init_esm2(); - init_syntax_tree(); - init_ast_utils(); - init_grammar_utils(); - __name(isAstNodeWithComment, "isAstNodeWithComment"); - __name(isIntermediateReference, "isIntermediateReference"); - DefaultJsonSerializer = class { - static { - __name(this, "DefaultJsonSerializer"); - } - constructor(services) { - this.ignoreProperties = /* @__PURE__ */ new Set(["$container", "$containerProperty", "$containerIndex", "$document", "$cstNode"]); - this.langiumDocuments = services.shared.workspace.LangiumDocuments; - this.astNodeLocator = services.workspace.AstNodeLocator; - this.nameProvider = services.references.NameProvider; - this.commentProvider = services.documentation.CommentProvider; - } - serialize(node2, options3) { - const serializeOptions = options3 !== null && options3 !== void 0 ? options3 : {}; - const specificReplacer = options3 === null || options3 === void 0 ? void 0 : options3.replacer; - const defaultReplacer = /* @__PURE__ */ __name((key, value2) => this.replacer(key, value2, serializeOptions), "defaultReplacer"); - const replacer = specificReplacer ? (key, value2) => specificReplacer(key, value2, defaultReplacer) : defaultReplacer; - try { - this.currentDocument = getDocument(node2); - return JSON.stringify(node2, replacer, options3 === null || options3 === void 0 ? void 0 : options3.space); - } finally { - this.currentDocument = void 0; + var cy = this; + var _p = cy._private; + var options2 = _p.options; + if (!htmlElement(container2) && htmlElement(container2[0])) { + container2 = container2[0]; } - } - deserialize(content, options3) { - const deserializeOptions = options3 !== null && options3 !== void 0 ? options3 : {}; - const root4 = JSON.parse(content); - this.linkNode(root4, root4, deserializeOptions); - return root4; - } - replacer(key, value2, { refText, sourceText, textRegions, comments, uriConverter }) { - var _a, _b, _c, _d; - if (this.ignoreProperties.has(key)) { - return void 0; - } else if (isReference(value2)) { - const refValue = value2.ref; - const $refText = refText ? value2.$refText : void 0; - if (refValue) { - const targetDocument = getDocument(refValue); - let targetUri = ""; - if (this.currentDocument && this.currentDocument !== targetDocument) { - if (uriConverter) { - targetUri = uriConverter(targetDocument.uri, value2); - } else { - targetUri = targetDocument.uri.toString(); + cy.stopAnimationLoop(); + cy.destroyRenderer(); + _p.container = container2; + _p.styleEnabled = true; + cy.invalidateSize(); + cy.initRenderer(extend4({}, options2, options2.renderer, { + // allow custom renderer name to be re-used, otherwise use canvas + name: options2.renderer.name === "null" ? "canvas" : options2.renderer.name + })); + cy.startAnimationLoop(); + cy.style(options2.style); + cy.emit("mount"); + return cy; + }, "mount"), + unmount: /* @__PURE__ */ __name(function unmount() { + var cy = this; + cy.stopAnimationLoop(); + cy.destroyRenderer(); + cy.initRenderer({ + name: "null" + }); + cy.emit("unmount"); + return cy; + }, "unmount"), + options: /* @__PURE__ */ __name(function options() { + return copy3(this._private.options); + }, "options"), + json: /* @__PURE__ */ __name(function json2(obj) { + var cy = this; + var _p = cy._private; + var eles = cy.mutableElements(); + var getFreshRef = /* @__PURE__ */ __name(function getFreshRef2(ele) { + return cy.getElementById(ele.id()); + }, "getFreshRef"); + if (plainObject(obj)) { + cy.startBatch(); + if (obj.elements) { + var idInJson = {}; + var updateEles = /* @__PURE__ */ __name(function updateEles2(jsons, gr2) { + var toAdd = []; + var toMod = []; + for (var i3 = 0; i3 < jsons.length; i3++) { + var json4 = jsons[i3]; + if (!json4.data.id) { + warn("cy.json() cannot handle elements without an ID attribute"); + continue; + } + var id30 = "" + json4.data.id; + var ele = cy.getElementById(id30); + idInJson[id30] = true; + if (ele.length !== 0) { + toMod.push({ + ele, + json: json4 + }); + } else { + if (gr2) { + json4.group = gr2; + toAdd.push(json4); + } else { + toAdd.push(json4); + } + } + } + cy.add(toAdd); + for (var _i = 0; _i < toMod.length; _i++) { + var _toMod$_i = toMod[_i], _ele = _toMod$_i.ele, _json = _toMod$_i.json; + _ele.json(_json); + } + }, "updateEles"); + if (array2(obj.elements)) { + updateEles(obj.elements); + } else { + var grs = ["nodes", "edges"]; + for (var i2 = 0; i2 < grs.length; i2++) { + var gr = grs[i2]; + var elements2 = obj.elements[gr]; + if (array2(elements2)) { + updateEles(elements2, gr); + } } } - const targetPath = this.astNodeLocator.getAstNodePath(refValue); - return { - $ref: `${targetUri}#${targetPath}`, - $refText - }; - } else { - return { - $error: (_b = (_a = value2.error) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : "Could not resolve reference", - $refText - }; + var parentsToRemove = cy.collection(); + eles.filter(function(ele) { + return !idInJson[ele.id()]; + }).forEach(function(ele) { + if (ele.isParent()) { + parentsToRemove.merge(ele); + } else { + ele.remove(); + } + }); + parentsToRemove.forEach(function(ele) { + return ele.children().move({ + parent: null + }); + }); + parentsToRemove.forEach(function(ele) { + return getFreshRef(ele).remove(); + }); } - } else if (isAstNode(value2)) { - let astNode = void 0; - if (textRegions) { - astNode = this.addAstNodeRegionWithAssignmentsTo(Object.assign({}, value2)); - if ((!key || value2.$document) && (astNode === null || astNode === void 0 ? void 0 : astNode.$textRegion)) { - astNode.$textRegion.documentURI = (_c = this.currentDocument) === null || _c === void 0 ? void 0 : _c.uri.toString(); + if (obj.style) { + cy.style(obj.style); + } + if (obj.zoom != null && obj.zoom !== _p.zoom) { + cy.zoom(obj.zoom); + } + if (obj.pan) { + if (obj.pan.x !== _p.pan.x || obj.pan.y !== _p.pan.y) { + cy.pan(obj.pan); } } - if (sourceText && !key) { - astNode !== null && astNode !== void 0 ? astNode : astNode = Object.assign({}, value2); - astNode.$sourceText = (_d = value2.$cstNode) === null || _d === void 0 ? void 0 : _d.text; + if (obj.data) { + cy.data(obj.data); } - if (comments) { - astNode !== null && astNode !== void 0 ? astNode : astNode = Object.assign({}, value2); - const comment2 = this.commentProvider.getComment(value2); - if (comment2) { - astNode.$comment = comment2.replace(/\r/g, ""); + var fields = ["minZoom", "maxZoom", "zoomingEnabled", "userZoomingEnabled", "panningEnabled", "userPanningEnabled", "boxSelectionEnabled", "autolock", "autoungrabify", "autounselectify", "multiClickDebounceTime"]; + for (var _i2 = 0; _i2 < fields.length; _i2++) { + var f2 = fields[_i2]; + if (obj[f2] != null) { + cy[f2](obj[f2]); } } - return astNode !== null && astNode !== void 0 ? astNode : value2; + cy.endBatch(); + return this; } else { - return value2; - } - } - addAstNodeRegionWithAssignmentsTo(node2) { - const createDocumentSegment = /* @__PURE__ */ __name((cstNode) => ({ - offset: cstNode.offset, - end: cstNode.end, - length: cstNode.length, - range: cstNode.range - }), "createDocumentSegment"); - if (node2.$cstNode) { - const textRegion = node2.$textRegion = createDocumentSegment(node2.$cstNode); - const assignments = textRegion.assignments = {}; - Object.keys(node2).filter((key) => !key.startsWith("$")).forEach((key) => { - const propertyAssignments = findNodesForProperty(node2.$cstNode, key).map(createDocumentSegment); - if (propertyAssignments.length !== 0) { - assignments[key] = propertyAssignments; - } - }); - return node2; - } - return void 0; - } - linkNode(node2, root4, options3, container2, containerProperty, containerIndex) { - for (const [propertyName, item] of Object.entries(node2)) { - if (Array.isArray(item)) { - for (let index = 0; index < item.length; index++) { - const element3 = item[index]; - if (isIntermediateReference(element3)) { - item[index] = this.reviveReference(node2, propertyName, root4, element3, options3); - } else if (isAstNode(element3)) { - this.linkNode(element3, root4, options3, node2, propertyName, index); + var flat = !!obj; + var json3 = {}; + if (flat) { + json3.elements = this.elements().map(function(ele) { + return ele.json(); + }); + } else { + json3.elements = {}; + eles.forEach(function(ele) { + var group2 = ele.group(); + if (!json3.elements[group2]) { + json3.elements[group2] = []; } - } - } else if (isIntermediateReference(item)) { - node2[propertyName] = this.reviveReference(node2, propertyName, root4, item, options3); - } else if (isAstNode(item)) { - this.linkNode(item, root4, options3, node2, propertyName); + json3.elements[group2].push(ele.json()); + }); } - } - const mutable = node2; - mutable.$container = container2; - mutable.$containerProperty = containerProperty; - mutable.$containerIndex = containerIndex; - } - reviveReference(container2, property2, root4, reference, options3) { - let refText = reference.$refText; - let error3 = reference.$error; - if (reference.$ref) { - const ref = this.getRefNode(root4, reference.$ref, options3.uriConverter); - if (isAstNode(ref)) { - if (!refText) { - refText = this.nameProvider.getName(ref); - } - return { - $refText: refText !== null && refText !== void 0 ? refText : "", - ref - }; - } else { - error3 = ref; + if (this._private.styleEnabled) { + json3.style = cy.style().json(); } + json3.data = copy3(cy.data()); + var options2 = _p.options; + json3.zoomingEnabled = _p.zoomingEnabled; + json3.userZoomingEnabled = _p.userZoomingEnabled; + json3.zoom = _p.zoom; + json3.minZoom = _p.minZoom; + json3.maxZoom = _p.maxZoom; + json3.panningEnabled = _p.panningEnabled; + json3.userPanningEnabled = _p.userPanningEnabled; + json3.pan = copy3(_p.pan); + json3.boxSelectionEnabled = _p.boxSelectionEnabled; + json3.renderer = copy3(options2.renderer); + json3.hideEdgesOnViewport = options2.hideEdgesOnViewport; + json3.textureOnViewport = options2.textureOnViewport; + json3.wheelSensitivity = options2.wheelSensitivity; + json3.motionBlur = options2.motionBlur; + json3.multiClickDebounceTime = options2.multiClickDebounceTime; + return json3; } - if (error3) { - const ref = { - $refText: refText !== null && refText !== void 0 ? refText : "" - }; - ref.error = { - container: container2, - property: property2, - message: error3, - reference: ref - }; - return ref; - } else { - return void 0; + }, "json") + }); + corefn.$id = corefn.getElementById; + [corefn$9, corefn$8, elesfn, corefn$7, corefn$6, corefn$5, corefn$4, corefn$3, corefn$2, corefn$1, fn2].forEach(function(props) { + extend4(corefn, props); + }); + defaults$7 = { + fit: true, + // whether to fit the viewport to the graph + directed: false, + // whether the tree is directed downwards (or edges can point in any direction if false) + direction: "downward", + // determines the direction in which the tree structure is drawn. The possible values are 'downward', 'upward', 'rightward', or 'leftward'. + padding: 30, + // padding on fit + circle: false, + // put depths in concentric circles if true, put depths top down if false + grid: false, + // whether to create an even grid into which the DAG is placed (circle:false only) + spacingFactor: 1.75, + // positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap) + boundingBox: void 0, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox if not enough space + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + roots: void 0, + // the roots of the trees + depthSort: void 0, + // a sorting function to order nodes at equal depth. e.g. function(a, b){ return a.data('weight') - b.data('weight') } + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled, + animateFilter: /* @__PURE__ */ __name(function animateFilter(node2, i2) { + return true; + }, "animateFilter"), + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: /* @__PURE__ */ __name(function transform2(node2, position5) { + return position5; + }, "transform") + // transform a given node position. Useful for changing flow direction in discrete layouts + }; + deprecatedOptionDefaults = { + maximal: false, + // whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only); setting acyclic to true sets maximal to true also + acyclic: false + // whether the tree is acyclic and thus a node could be shifted (due to the maximal option) multiple times without causing an infinite loop; setting to true sets maximal to true also; if you are uncertain whether a tree is acyclic, set to false to avoid potential infinite loops + }; + getInfo = /* @__PURE__ */ __name(function getInfo2(ele) { + return ele.scratch("breadthfirst"); + }, "getInfo"); + setInfo = /* @__PURE__ */ __name(function setInfo2(ele, obj) { + return ele.scratch("breadthfirst", obj); + }, "setInfo"); + __name(BreadthFirstLayout, "BreadthFirstLayout"); + BreadthFirstLayout.prototype.run = function() { + var options2 = this.options; + var cy = options2.cy; + var eles = options2.eles; + var nodes5 = eles.nodes().filter(function(n3) { + return n3.isChildless(); + }); + var graph = eles; + var directed = options2.directed; + var maximal = options2.acyclic || options2.maximal || options2.maximalAdjustments > 0; + var hasBoundingBox = !!options2.boundingBox; + var bb = makeBoundingBox(hasBoundingBox ? options2.boundingBox : structuredClone(cy.extent())); + var roots; + if (elementOrCollection(options2.roots)) { + roots = options2.roots; + } else if (array2(options2.roots)) { + var rootsArray = []; + for (var i2 = 0; i2 < options2.roots.length; i2++) { + var id30 = options2.roots[i2]; + var ele = cy.getElementById(id30); + rootsArray.push(ele); } - } - getRefNode(root4, uri, uriConverter) { - try { - const fragmentIndex = uri.indexOf("#"); - if (fragmentIndex === 0) { - const node3 = this.astNodeLocator.getAstNode(root4, uri.substring(1)); - if (!node3) { - return "Could not resolve path: " + uri; - } - return node3; - } - if (fragmentIndex < 0) { - const documentUri2 = uriConverter ? uriConverter(uri) : URI2.parse(uri); - const document3 = this.langiumDocuments.getDocument(documentUri2); - if (!document3) { - return "Could not find document for URI: " + uri; - } - return document3.parseResult.value; - } - const documentUri = uriConverter ? uriConverter(uri.substring(0, fragmentIndex)) : URI2.parse(uri.substring(0, fragmentIndex)); - const document2 = this.langiumDocuments.getDocument(documentUri); - if (!document2) { - return "Could not find document for URI: " + uri; - } - if (fragmentIndex === uri.length - 1) { - return document2.parseResult.value; - } - const node2 = this.astNodeLocator.getAstNode(document2.parseResult.value, uri.substring(fragmentIndex + 1)); - if (!node2) { - return "Could not resolve URI: " + uri; + roots = cy.collection(rootsArray); + } else if (string(options2.roots)) { + roots = cy.$(options2.roots); + } else { + if (directed) { + roots = nodes5.roots(); + } else { + var components3 = eles.components(); + roots = cy.collection(); + var _loop = /* @__PURE__ */ __name(function _loop2() { + var comp = components3[_i]; + var maxDegree = comp.maxDegree(false); + var compRoots = comp.filter(function(ele2) { + return ele2.degree(false) === maxDegree; + }); + roots = roots.add(compRoots); + }, "_loop"); + for (var _i = 0; _i < components3.length; _i++) { + _loop(); } - return node2; - } catch (err) { - return String(err); } } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/service-registry.js - var DefaultServiceRegistry; - var init_service_registry = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/service-registry.js"() { - "use strict"; - init_uri_utils(); - DefaultServiceRegistry = class { - static { - __name(this, "DefaultServiceRegistry"); - } - /** - * @deprecated Use the new `fileExtensionMap` (or `languageIdMap`) property instead. - */ - get map() { - return this.fileExtensionMap; - } - constructor(services) { - this.languageIdMap = /* @__PURE__ */ new Map(); - this.fileExtensionMap = /* @__PURE__ */ new Map(); - this.textDocuments = services === null || services === void 0 ? void 0 : services.workspace.TextDocuments; - } - register(language) { - const data6 = language.LanguageMetaData; - for (const ext of data6.fileExtensions) { - if (this.fileExtensionMap.has(ext)) { - console.warn(`The file extension ${ext} is used by multiple languages. It is now assigned to '${data6.languageId}'.`); - } - this.fileExtensionMap.set(ext, language); + var depths = []; + var foundByBfs = {}; + var addToDepth = /* @__PURE__ */ __name(function addToDepth2(ele2, d3) { + if (depths[d3] == null) { + depths[d3] = []; } - this.languageIdMap.set(data6.languageId, language); - if (this.languageIdMap.size === 1) { - this.singleton = language; + var i3 = depths[d3].length; + depths[d3].push(ele2); + setInfo(ele2, { + index: i3, + depth: d3 + }); + }, "addToDepth"); + var changeDepth = /* @__PURE__ */ __name(function changeDepth2(ele2, newDepth) { + var _getInfo = getInfo(ele2), depth = _getInfo.depth, index = _getInfo.index; + depths[depth][index] = null; + if (ele2.isChildless()) addToDepth(ele2, newDepth); + }, "changeDepth"); + graph.bfs({ + roots, + directed: options2.directed, + visit: /* @__PURE__ */ __name(function visit(node2, edge, pNode, i3, depth) { + var ele2 = node2[0]; + var id31 = ele2.id(); + if (ele2.isChildless()) addToDepth(ele2, depth); + foundByBfs[id31] = true; + }, "visit") + }); + var orphanNodes = []; + for (var _i2 = 0; _i2 < nodes5.length; _i2++) { + var _ele = nodes5[_i2]; + if (foundByBfs[_ele.id()]) { + continue; } else { - this.singleton = void 0; + orphanNodes.push(_ele); } } - getServices(uri) { - var _a, _b; - if (this.singleton !== void 0) { - return this.singleton; + var assignDepthsAt = /* @__PURE__ */ __name(function assignDepthsAt2(i3) { + var eles2 = depths[i3]; + for (var j3 = 0; j3 < eles2.length; j3++) { + var _ele2 = eles2[j3]; + if (_ele2 == null) { + eles2.splice(j3, 1); + j3--; + continue; + } + setInfo(_ele2, { + depth: i3, + index: j3 + }); } - if (this.languageIdMap.size === 0) { - throw new Error("The service registry is empty. Use `register` to register the services of a language."); + }, "assignDepthsAt"); + var adjustMaximally = /* @__PURE__ */ __name(function adjustMaximally2(ele2, shifted2) { + var eInfo = getInfo(ele2); + var incomers = ele2.incomers().filter(function(el) { + return el.isNode() && eles.has(el); + }); + var maxDepth = -1; + var id31 = ele2.id(); + for (var k2 = 0; k2 < incomers.length; k2++) { + var incmr = incomers[k2]; + var iInfo = getInfo(incmr); + maxDepth = Math.max(maxDepth, iInfo.depth); } - const languageId = (_b = (_a = this.textDocuments) === null || _a === void 0 ? void 0 : _a.get(uri)) === null || _b === void 0 ? void 0 : _b.languageId; - if (languageId !== void 0) { - const services2 = this.languageIdMap.get(languageId); - if (services2) { - return services2; + if (eInfo.depth <= maxDepth) { + if (!options2.acyclic && shifted2[id31]) { + return null; } + var newDepth = maxDepth + 1; + changeDepth(ele2, newDepth); + shifted2[id31] = newDepth; + return true; } - const ext = UriUtils.extname(uri); - const services = this.fileExtensionMap.get(ext); - if (!services) { - if (languageId) { - throw new Error(`The service registry contains no services for the extension '${ext}' for language '${languageId}'.`); - } else { - throw new Error(`The service registry contains no services for the extension '${ext}'.`); + return false; + }, "adjustMaximally"); + if (directed && maximal) { + var Q3 = []; + var shifted = {}; + var enqueue = /* @__PURE__ */ __name(function enqueue2(n3) { + return Q3.push(n3); + }, "enqueue"); + var dequeue = /* @__PURE__ */ __name(function dequeue2() { + return Q3.shift(); + }, "dequeue"); + nodes5.forEach(function(n3) { + return Q3.push(n3); + }); + while (Q3.length > 0) { + var _ele3 = dequeue(); + var didShift = adjustMaximally(_ele3, shifted); + if (didShift) { + _ele3.outgoers().filter(function(el) { + return el.isNode() && eles.has(el); + }).forEach(enqueue); + } else if (didShift === null) { + warn("Detected double maximal shift for node `" + _ele3.id() + "`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs."); + break; } } - return services; } - hasServices(uri) { - try { - this.getServices(uri); - return true; - } catch (_a) { - return false; + var minDistance = 0; + if (options2.avoidOverlap) { + for (var _i3 = 0; _i3 < nodes5.length; _i3++) { + var n2 = nodes5[_i3]; + var nbb = n2.layoutDimensions(options2); + var w4 = nbb.w; + var h3 = nbb.h; + minDistance = Math.max(minDistance, w4, h3); } } - get all() { - return Array.from(this.languageIdMap.values()); - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/validation-registry.js - function diagnosticData(code) { - return { code }; - } - var ValidationCategory, ValidationRegistry; - var init_validation_registry = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/validation-registry.js"() { - "use strict"; - init_lib3(); - init_collections(); - init_promise_utils(); - init_stream(); - __name(diagnosticData, "diagnosticData"); - (function(ValidationCategory2) { - ValidationCategory2.all = ["fast", "slow", "built-in"]; - })(ValidationCategory || (ValidationCategory = {})); - ValidationRegistry = class { - static { - __name(this, "ValidationRegistry"); - } - constructor(services) { - this.entries = new MultiMap(); - this.entriesBefore = []; - this.entriesAfter = []; - this.reflection = services.shared.AstReflection; - } - /** - * Register a set of validation checks. Each value in the record can be either a single validation check (i.e. a function) - * or an array of validation checks. - * - * @param checksRecord Set of validation checks to register. - * @param category Optional category for the validation checks (defaults to `'fast'`). - * @param thisObj Optional object to be used as `this` when calling the validation check functions. - */ - register(checksRecord, thisObj = this, category = "fast") { - if (category === "built-in") { - throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors."); + var cachedWeightedPercent = {}; + var getWeightedPercent = /* @__PURE__ */ __name(function getWeightedPercent2(ele2) { + if (cachedWeightedPercent[ele2.id()]) { + return cachedWeightedPercent[ele2.id()]; } - for (const [type3, ch] of Object.entries(checksRecord)) { - const callbacks = ch; - if (Array.isArray(callbacks)) { - for (const check of callbacks) { - const entry = { - check: this.wrapValidationException(check, thisObj), - category - }; - this.addEntry(type3, entry); - } - } else if (typeof callbacks === "function") { - const entry = { - check: this.wrapValidationException(callbacks, thisObj), - category - }; - this.addEntry(type3, entry); - } else { - assertUnreachable(callbacks); + var eleDepth = getInfo(ele2).depth; + var neighbors = ele2.neighborhood(); + var percent = 0; + var samples = 0; + for (var _i4 = 0; _i4 < neighbors.length; _i4++) { + var neighbor = neighbors[_i4]; + if (neighbor.isEdge() || neighbor.isParent() || !nodes5.has(neighbor)) { + continue; } - } - } - wrapValidationException(check, thisObj) { - return async (node2, accept, cancelToken) => { - await this.handleException(() => check.call(thisObj, node2, accept, cancelToken), "An error occurred during validation", accept, node2); - }; - } - async handleException(functionality, messageContext, accept, node2) { - try { - await functionality(); - } catch (err) { - if (isOperationCancelled(err)) { - throw err; + var bf = getInfo(neighbor); + if (bf == null) { + continue; } - console.error(`${messageContext}:`, err); - if (err instanceof Error && err.stack) { - console.error(err.stack); + var index = bf.index; + var depth = bf.depth; + if (index == null || depth == null) { + continue; + } + var nDepth = depths[depth].length; + if (depth < eleDepth) { + percent += index / nDepth; + samples++; } - const messageDetails = err instanceof Error ? err.message : String(err); - accept("error", `${messageContext}: ${messageDetails}`, { node: node2 }); } - } - addEntry(type3, entry) { - if (type3 === "AstNode") { - this.entries.add("AstNode", entry); - return; + samples = Math.max(1, samples); + percent = percent / samples; + if (samples === 0) { + percent = 0; } - for (const subtype of this.reflection.getAllSubTypes(type3)) { - this.entries.add(subtype, entry); + cachedWeightedPercent[ele2.id()] = percent; + return percent; + }, "getWeightedPercent"); + var sortFn = /* @__PURE__ */ __name(function sortFn2(a2, b3) { + var apct = getWeightedPercent(a2); + var bpct = getWeightedPercent(b3); + var diff2 = apct - bpct; + if (diff2 === 0) { + return ascending3(a2.id(), b3.id()); + } else { + return diff2; } + }, "sortFn"); + if (options2.depthSort !== void 0) { + sortFn = options2.depthSort; } - getChecks(type3, categories) { - let checks = stream(this.entries.get(type3)).concat(this.entries.get("AstNode")); - if (categories) { - checks = checks.filter((entry) => categories.includes(entry.category)); - } - return checks.map((entry) => entry.check); + var depthsLen = depths.length; + for (var _i5 = 0; _i5 < depthsLen; _i5++) { + depths[_i5].sort(sortFn); + assignDepthsAt(_i5); } - /** - * Register logic which will be executed once before validating all the nodes of an AST/Langium document. - * This helps to prepare or initialize some information which are required or reusable for the following checks on the AstNodes. - * - * As an example, for validating unique fully-qualified names of nodes in the AST, - * here the map for mapping names to nodes could be established. - * During the usual checks on the nodes, they are put into this map with their name. - * - * Note that this approach makes validations stateful, which is relevant e.g. when cancelling the validation. - * Therefore it is recommended to clear stored information - * _before_ validating an AST to validate each AST unaffected from other ASTs - * AND _after_ validating the AST to free memory by information which are no longer used. - * - * @param checkBefore a set-up function which will be called once before actually validating an AST - * @param thisObj Optional object to be used as `this` when calling the validation check functions. - */ - registerBeforeDocument(checkBefore, thisObj = this) { - this.entriesBefore.push(this.wrapPreparationException(checkBefore, "An error occurred during set-up of the validation", thisObj)); - } - /** - * Register logic which will be executed once after validating all the nodes of an AST/Langium document. - * This helps to finally evaluate information which are collected during the checks on the AstNodes. - * - * As an example, for validating unique fully-qualified names of nodes in the AST, - * here the map with all the collected nodes and their names is checked - * and validation hints are created for all nodes with the same name. - * - * Note that this approach makes validations stateful, which is relevant e.g. when cancelling the validation. - * Therefore it is recommended to clear stored information - * _before_ validating an AST to validate each AST unaffected from other ASTs - * AND _after_ validating the AST to free memory by information which are no longer used. - * - * @param checkBefore a set-up function which will be called once before actually validating an AST - * @param thisObj Optional object to be used as `this` when calling the validation check functions. - */ - registerAfterDocument(checkAfter, thisObj = this) { - this.entriesAfter.push(this.wrapPreparationException(checkAfter, "An error occurred during tear-down of the validation", thisObj)); + var orphanDepth = []; + for (var _i6 = 0; _i6 < orphanNodes.length; _i6++) { + orphanDepth.push(orphanNodes[_i6]); } - wrapPreparationException(check, messageContext, thisObj) { - return async (rootNode, accept, categories, cancelToken) => { - await this.handleException(() => check.call(thisObj, rootNode, accept, categories, cancelToken), messageContext, accept, rootNode); - }; + var assignDepths = /* @__PURE__ */ __name(function assignDepths2() { + for (var _i7 = 0; _i7 < depthsLen; _i7++) { + assignDepthsAt(_i7); + } + }, "assignDepths"); + if (orphanDepth.length) { + depths.unshift(orphanDepth); + depthsLen = depths.length; + assignDepths(); } - get checksBefore() { - return this.entriesBefore; + var biggestDepthSize = 0; + for (var _i8 = 0; _i8 < depthsLen; _i8++) { + biggestDepthSize = Math.max(depths[_i8].length, biggestDepthSize); } - get checksAfter() { - return this.entriesAfter; + var center4 = { + x: bb.x1 + bb.w / 2, + y: bb.y1 + bb.h / 2 + }; + var aveNodeSize = nodes5.reduce(function(acc, node2) { + return (function(box) { + return { + w: acc.w === -1 ? box.w : (acc.w + box.w) / 2, + h: acc.h === -1 ? box.h : (acc.h + box.h) / 2 + }; + })(node2.boundingBox({ + includeLabels: options2.nodeDimensionsIncludeLabels + })); + }, { + w: -1, + h: -1 + }); + var distanceY = Math.max( + // only one depth + depthsLen === 1 ? 0 : ( + // inside a bounding box, no need for top & bottom padding + hasBoundingBox ? (bb.h - options2.padding * 2 - aveNodeSize.h) / (depthsLen - 1) : (bb.h - options2.padding * 2 - aveNodeSize.h) / (depthsLen + 1) + ), + minDistance + ); + var maxDepthSize = depths.reduce(function(max10, eles2) { + return Math.max(max10, eles2.length); + }, 0); + var getPositionTopBottom = /* @__PURE__ */ __name(function getPositionTopBottom2(ele2) { + var _getInfo2 = getInfo(ele2), depth = _getInfo2.depth, index = _getInfo2.index; + if (options2.circle) { + var radiusStepSize = Math.min(bb.w / 2 / depthsLen, bb.h / 2 / depthsLen); + radiusStepSize = Math.max(radiusStepSize, minDistance); + var radius2 = radiusStepSize * depth + radiusStepSize - (depthsLen > 0 && depths[0].length <= 3 ? radiusStepSize / 2 : 0); + var theta = 2 * Math.PI / depths[depth].length * index; + if (depth === 0 && depths[0].length === 1) { + radius2 = 1; + } + return { + x: center4.x + radius2 * Math.cos(theta), + y: center4.y + radius2 * Math.sin(theta) + }; + } else { + var depthSize = depths[depth].length; + var distanceX = Math.max( + // only one depth + depthSize === 1 ? 0 : ( + // inside a bounding box, no need for left & right padding + hasBoundingBox ? (bb.w - options2.padding * 2 - aveNodeSize.w) / ((options2.grid ? maxDepthSize : depthSize) - 1) : (bb.w - options2.padding * 2 - aveNodeSize.w) / ((options2.grid ? maxDepthSize : depthSize) + 1) + ), + minDistance + ); + var epos = { + x: center4.x + (index + 1 - (depthSize + 1) / 2) * distanceX, + y: center4.y + (depth + 1 - (depthsLen + 1) / 2) * distanceY + }; + return epos; + } + }, "getPositionTopBottom"); + var rotateDegrees = { + "downward": 0, + "leftward": 90, + "upward": 180, + "rightward": -90 + }; + if (Object.keys(rotateDegrees).indexOf(options2.direction) === -1) { + error("Invalid direction '".concat(options2.direction, "' specified for breadthfirst layout. Valid values are: ").concat(Object.keys(rotateDegrees).join(", "))); } + var getPosition = /* @__PURE__ */ __name(function getPosition2(ele2) { + return rotatePosAndSkewByBox(getPositionTopBottom(ele2), bb, rotateDegrees[options2.direction]); + }, "getPosition"); + eles.nodes().layoutPositions(this, options2, getPosition); + return this; }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/document-validator.js - function getDiagnosticRange(info2) { - if (info2.range) { - return info2.range; - } - let cstNode; - if (typeof info2.property === "string") { - cstNode = findNodeForProperty(info2.node.$cstNode, info2.property, info2.index); - } else if (typeof info2.keyword === "string") { - cstNode = findNodeForKeyword(info2.node.$cstNode, info2.keyword, info2.index); - } - cstNode !== null && cstNode !== void 0 ? cstNode : cstNode = info2.node.$cstNode; - if (!cstNode) { - return { - start: { line: 0, character: 0 }, - end: { line: 0, character: 0 } + defaults$6 = { + fit: true, + // whether to fit the viewport to the graph + padding: 30, + // the padding on fit + boundingBox: void 0, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox and radius if not enough space + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + spacingFactor: void 0, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + radius: void 0, + // the radius of the circle + startAngle: 3 / 2 * Math.PI, + // where nodes start in radians + sweep: void 0, + // how many radians should be between the first and last node (defaults to full circle) + clockwise: true, + // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) + sort: void 0, + // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled + animateFilter: /* @__PURE__ */ __name(function animateFilter2(node2, i2) { + return true; + }, "animateFilter"), + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: /* @__PURE__ */ __name(function transform3(node2, position5) { + return position5; + }, "transform") + // transform a given node position. Useful for changing flow direction in discrete layouts }; - } - return cstNode.range; - } - function toDiagnosticSeverity(severity) { - switch (severity) { - case "error": - return 1; - case "warning": - return 2; - case "info": - return 3; - case "hint": - return 4; - default: - throw new Error("Invalid diagnostic severity: " + severity); - } - } - function toDiagnosticData(severity) { - switch (severity) { - case "error": - return diagnosticData(DocumentValidator.LexingError); - case "warning": - return diagnosticData(DocumentValidator.LexingWarning); - case "info": - return diagnosticData(DocumentValidator.LexingInfo); - case "hint": - return diagnosticData(DocumentValidator.LexingHint); - default: - throw new Error("Invalid diagnostic severity: " + severity); - } - } - var DefaultDocumentValidator, DocumentValidator; - var init_document_validator = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/document-validator.js"() { - "use strict"; - init_cancellation(); - init_grammar_utils(); - init_ast_utils(); - init_cst_utils(); - init_promise_utils(); - init_validation_registry(); - DefaultDocumentValidator = class { - static { - __name(this, "DefaultDocumentValidator"); + __name(CircleLayout, "CircleLayout"); + CircleLayout.prototype.run = function() { + var params = this.options; + var options2 = params; + var cy = params.cy; + var eles = options2.eles; + var clockwise = options2.counterclockwise !== void 0 ? !options2.counterclockwise : options2.clockwise; + var nodes5 = eles.nodes().not(":parent"); + if (options2.sort) { + nodes5 = nodes5.sort(options2.sort); } - constructor(services) { - this.validationRegistry = services.validation.ValidationRegistry; - this.metadata = services.LanguageMetaData; + var bb = makeBoundingBox(options2.boundingBox ? options2.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + var center4 = { + x: bb.x1 + bb.w / 2, + y: bb.y1 + bb.h / 2 + }; + var sweep = options2.sweep === void 0 ? 2 * Math.PI - 2 * Math.PI / nodes5.length : options2.sweep; + var dTheta = sweep / Math.max(1, nodes5.length - 1); + var r2; + var minDistance = 0; + for (var i2 = 0; i2 < nodes5.length; i2++) { + var n2 = nodes5[i2]; + var nbb = n2.layoutDimensions(options2); + var w4 = nbb.w; + var h3 = nbb.h; + minDistance = Math.max(minDistance, w4, h3); + } + if (number$1(options2.radius)) { + r2 = options2.radius; + } else if (nodes5.length <= 1) { + r2 = 0; + } else { + r2 = Math.min(bb.h, bb.w) / 2 - minDistance; } - async validateDocument(document2, options3 = {}, cancelToken = cancellation_exports.CancellationToken.None) { - const parseResult = document2.parseResult; - const diagnostics = []; - await interruptAndCheck(cancelToken); - if (!options3.categories || options3.categories.includes("built-in")) { - this.processLexingErrors(parseResult, diagnostics, options3); - if (options3.stopAfterLexingErrors && diagnostics.some((d2) => { - var _a; - return ((_a = d2.data) === null || _a === void 0 ? void 0 : _a.code) === DocumentValidator.LexingError; - })) { - return diagnostics; - } - this.processParsingErrors(parseResult, diagnostics, options3); - if (options3.stopAfterParsingErrors && diagnostics.some((d2) => { - var _a; - return ((_a = d2.data) === null || _a === void 0 ? void 0 : _a.code) === DocumentValidator.ParsingError; - })) { - return diagnostics; - } - this.processLinkingErrors(document2, diagnostics, options3); - if (options3.stopAfterLinkingErrors && diagnostics.some((d2) => { - var _a; - return ((_a = d2.data) === null || _a === void 0 ? void 0 : _a.code) === DocumentValidator.LinkingError; - })) { - return diagnostics; - } - } - try { - diagnostics.push(...await this.validateAst(parseResult.value, options3, cancelToken)); - } catch (err) { - if (isOperationCancelled(err)) { - throw err; - } - console.error("An error occurred during validation:", err); - } - await interruptAndCheck(cancelToken); - return diagnostics; + if (nodes5.length > 1 && options2.avoidOverlap) { + minDistance *= 1.75; + var dcos = Math.cos(dTheta) - Math.cos(0); + var dsin = Math.sin(dTheta) - Math.sin(0); + var rMin = Math.sqrt(minDistance * minDistance / (dcos * dcos + dsin * dsin)); + r2 = Math.max(rMin, r2); } - processLexingErrors(parseResult, diagnostics, _options) { - var _a, _b, _c; - const lexerDiagnostics = [...parseResult.lexerErrors, ...(_b = (_a = parseResult.lexerReport) === null || _a === void 0 ? void 0 : _a.diagnostics) !== null && _b !== void 0 ? _b : []]; - for (const lexerDiagnostic of lexerDiagnostics) { - const severity = (_c = lexerDiagnostic.severity) !== null && _c !== void 0 ? _c : "error"; - const diagnostic = { - severity: toDiagnosticSeverity(severity), - range: { - start: { - line: lexerDiagnostic.line - 1, - character: lexerDiagnostic.column - 1 - }, - end: { - line: lexerDiagnostic.line - 1, - character: lexerDiagnostic.column + lexerDiagnostic.length - 1 - } - }, - message: lexerDiagnostic.message, - data: toDiagnosticData(severity), - source: this.getSource() - }; - diagnostics.push(diagnostic); - } + var getPos = /* @__PURE__ */ __name(function getPos2(ele, i3) { + var theta = options2.startAngle + i3 * dTheta * (clockwise ? 1 : -1); + var rx = r2 * Math.cos(theta); + var ry = r2 * Math.sin(theta); + var pos = { + x: center4.x + rx, + y: center4.y + ry + }; + return pos; + }, "getPos"); + eles.nodes().layoutPositions(this, options2, getPos); + return this; + }; + defaults$5 = { + fit: true, + // whether to fit the viewport to the graph + padding: 30, + // the padding on fit + startAngle: 3 / 2 * Math.PI, + // where nodes start in radians + sweep: void 0, + // how many radians should be between the first and last node (defaults to full circle) + clockwise: true, + // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) + equidistant: false, + // whether levels have an equal radial distance betwen them, may cause bounding box overflow + minNodeSpacing: 10, + // min spacing between outside of nodes (used for radius adjustment) + boundingBox: void 0, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox if not enough space + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + height: void 0, + // height of layout area (overrides container height) + width: void 0, + // width of layout area (overrides container width) + spacingFactor: void 0, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + concentric: /* @__PURE__ */ __name(function concentric(node2) { + return node2.degree(); + }, "concentric"), + levelWidth: /* @__PURE__ */ __name(function levelWidth(nodes5) { + return nodes5.maxDegree() / 4; + }, "levelWidth"), + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled + animateFilter: /* @__PURE__ */ __name(function animateFilter3(node2, i2) { + return true; + }, "animateFilter"), + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: /* @__PURE__ */ __name(function transform4(node2, position5) { + return position5; + }, "transform") + // transform a given node position. Useful for changing flow direction in discrete layouts + }; + __name(ConcentricLayout, "ConcentricLayout"); + ConcentricLayout.prototype.run = function() { + var params = this.options; + var options2 = params; + var clockwise = options2.counterclockwise !== void 0 ? !options2.counterclockwise : options2.clockwise; + var cy = params.cy; + var eles = options2.eles; + var nodes5 = eles.nodes().not(":parent"); + var bb = makeBoundingBox(options2.boundingBox ? options2.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + var center4 = { + x: bb.x1 + bb.w / 2, + y: bb.y1 + bb.h / 2 + }; + var nodeValues = []; + var maxNodeSize = 0; + for (var i2 = 0; i2 < nodes5.length; i2++) { + var node2 = nodes5[i2]; + var value2 = void 0; + value2 = options2.concentric(node2); + nodeValues.push({ + value: value2, + node: node2 + }); + node2._private.scratch.concentric = value2; } - processParsingErrors(parseResult, diagnostics, _options) { - for (const parserError of parseResult.parserErrors) { - let range3 = void 0; - if (isNaN(parserError.token.startOffset)) { - if ("previousToken" in parserError) { - const token2 = parserError.previousToken; - if (!isNaN(token2.startOffset)) { - const position5 = { line: token2.endLine - 1, character: token2.endColumn }; - range3 = { start: position5, end: position5 }; - } else { - const position5 = { line: 0, character: 0 }; - range3 = { start: position5, end: position5 }; - } - } - } else { - range3 = tokenToRange(parserError.token); - } - if (range3) { - const diagnostic = { - severity: toDiagnosticSeverity("error"), - range: range3, - message: parserError.message, - data: diagnosticData(DocumentValidator.ParsingError), - source: this.getSource() - }; - diagnostics.push(diagnostic); - } - } + nodes5.updateStyle(); + for (var _i = 0; _i < nodes5.length; _i++) { + var _node = nodes5[_i]; + var nbb = _node.layoutDimensions(options2); + maxNodeSize = Math.max(maxNodeSize, nbb.w, nbb.h); } - processLinkingErrors(document2, diagnostics, _options) { - for (const reference of document2.references) { - const linkingError = reference.error; - if (linkingError) { - const info2 = { - node: linkingError.container, - property: linkingError.property, - index: linkingError.index, - data: { - code: DocumentValidator.LinkingError, - containerType: linkingError.container.$type, - property: linkingError.property, - refText: linkingError.reference.$refText - } - }; - diagnostics.push(this.toDiagnostic("error", linkingError.message, info2)); + nodeValues.sort(function(a2, b3) { + return b3.value - a2.value; + }); + var levelWidth2 = options2.levelWidth(nodes5); + var levels = [[]]; + var currentLevel = levels[0]; + for (var _i2 = 0; _i2 < nodeValues.length; _i2++) { + var val = nodeValues[_i2]; + if (currentLevel.length > 0) { + var diff2 = Math.abs(currentLevel[0].value - val.value); + if (diff2 >= levelWidth2) { + currentLevel = []; + levels.push(currentLevel); } } + currentLevel.push(val); } - async validateAst(rootNode, options3, cancelToken = cancellation_exports.CancellationToken.None) { - const validationItems = []; - const acceptor = /* @__PURE__ */ __name((severity, message, info2) => { - validationItems.push(this.toDiagnostic(severity, message, info2)); - }, "acceptor"); - await this.validateAstBefore(rootNode, options3, acceptor, cancelToken); - await this.validateAstNodes(rootNode, options3, acceptor, cancelToken); - await this.validateAstAfter(rootNode, options3, acceptor, cancelToken); - return validationItems; + var minDist = maxNodeSize + options2.minNodeSpacing; + if (!options2.avoidOverlap) { + var firstLvlHasMulti = levels.length > 0 && levels[0].length > 1; + var maxR = Math.min(bb.w, bb.h) / 2 - minDist; + var rStep = maxR / (levels.length + firstLvlHasMulti ? 1 : 0); + minDist = Math.min(minDist, rStep); } - async validateAstBefore(rootNode, options3, acceptor, cancelToken = cancellation_exports.CancellationToken.None) { - var _a; - const checksBefore = this.validationRegistry.checksBefore; - for (const checkBefore of checksBefore) { - await interruptAndCheck(cancelToken); - await checkBefore(rootNode, acceptor, (_a = options3.categories) !== null && _a !== void 0 ? _a : [], cancelToken); + var r2 = 0; + for (var _i3 = 0; _i3 < levels.length; _i3++) { + var level = levels[_i3]; + var sweep = options2.sweep === void 0 ? 2 * Math.PI - 2 * Math.PI / level.length : options2.sweep; + var dTheta = level.dTheta = sweep / Math.max(1, level.length - 1); + if (level.length > 1 && options2.avoidOverlap) { + var dcos = Math.cos(dTheta) - Math.cos(0); + var dsin = Math.sin(dTheta) - Math.sin(0); + var rMin = Math.sqrt(minDist * minDist / (dcos * dcos + dsin * dsin)); + r2 = Math.max(rMin, r2); } + level.r = r2; + r2 += minDist; } - async validateAstNodes(rootNode, options3, acceptor, cancelToken = cancellation_exports.CancellationToken.None) { - await Promise.all(streamAst(rootNode).map(async (node2) => { - await interruptAndCheck(cancelToken); - const checks = this.validationRegistry.getChecks(node2.$type, options3.categories); - for (const check of checks) { - await check(node2, acceptor, cancelToken); + if (options2.equidistant) { + var rDeltaMax = 0; + var _r = 0; + for (var _i4 = 0; _i4 < levels.length; _i4++) { + var _level = levels[_i4]; + var rDelta = _level.r - _r; + rDeltaMax = Math.max(rDeltaMax, rDelta); + } + _r = 0; + for (var _i5 = 0; _i5 < levels.length; _i5++) { + var _level2 = levels[_i5]; + if (_i5 === 0) { + _r = _level2.r; } - })); - } - async validateAstAfter(rootNode, options3, acceptor, cancelToken = cancellation_exports.CancellationToken.None) { - var _a; - const checksAfter = this.validationRegistry.checksAfter; - for (const checkAfter of checksAfter) { - await interruptAndCheck(cancelToken); - await checkAfter(rootNode, acceptor, (_a = options3.categories) !== null && _a !== void 0 ? _a : [], cancelToken); + _level2.r = _r; + _r += rDeltaMax; } } - toDiagnostic(severity, message, info2) { - return { - message, - range: getDiagnosticRange(info2), - severity: toDiagnosticSeverity(severity), - code: info2.code, - codeDescription: info2.codeDescription, - tags: info2.tags, - relatedInformation: info2.relatedInformation, - data: info2.data, - source: this.getSource() - }; - } - getSource() { - return this.metadata.languageId; + var pos = {}; + for (var _i6 = 0; _i6 < levels.length; _i6++) { + var _level3 = levels[_i6]; + var _dTheta = _level3.dTheta; + var _r2 = _level3.r; + for (var j3 = 0; j3 < _level3.length; j3++) { + var _val = _level3[j3]; + var theta = options2.startAngle + (clockwise ? 1 : -1) * _dTheta * j3; + var p3 = { + x: center4.x + _r2 * Math.cos(theta), + y: center4.y + _r2 * Math.sin(theta) + }; + pos[_val.node.id()] = p3; + } } + eles.nodes().layoutPositions(this, options2, function(ele) { + var id30 = ele.id(); + return pos[id30]; + }); + return this; }; - __name(getDiagnosticRange, "getDiagnosticRange"); - __name(toDiagnosticSeverity, "toDiagnosticSeverity"); - __name(toDiagnosticData, "toDiagnosticData"); - (function(DocumentValidator2) { - DocumentValidator2.LexingError = "lexing-error"; - DocumentValidator2.LexingWarning = "lexing-warning"; - DocumentValidator2.LexingInfo = "lexing-info"; - DocumentValidator2.LexingHint = "lexing-hint"; - DocumentValidator2.ParsingError = "parsing-error"; - DocumentValidator2.LinkingError = "linking-error"; - })(DocumentValidator || (DocumentValidator = {})); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/ast-descriptions.js - var DefaultAstNodeDescriptionProvider, DefaultReferenceDescriptionProvider; - var init_ast_descriptions = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/ast-descriptions.js"() { - "use strict"; - init_cancellation(); - init_syntax_tree(); - init_ast_utils(); - init_cst_utils(); - init_promise_utils(); - init_uri_utils(); - DefaultAstNodeDescriptionProvider = class { - static { - __name(this, "DefaultAstNodeDescriptionProvider"); - } - constructor(services) { - this.astNodeLocator = services.workspace.AstNodeLocator; - this.nameProvider = services.references.NameProvider; + defaults$4 = { + // Called on `layoutready` + ready: /* @__PURE__ */ __name(function ready2() { + }, "ready"), + // Called on `layoutstop` + stop: /* @__PURE__ */ __name(function stop3() { + }, "stop"), + // Whether to animate while running the layout + // true : Animate continuously as the layout is running + // false : Just show the end result + // 'end' : Animate with the end result, from the initial positions to the end positions + animate: true, + // Easing of the animation for animate:'end' + animationEasing: void 0, + // The duration of the animation for animate:'end' + animationDuration: void 0, + // A function that determines whether the node should be animated + // All nodes animated by default on animate enabled + // Non-animated nodes are positioned immediately when the layout starts + animateFilter: /* @__PURE__ */ __name(function animateFilter4(node2, i2) { + return true; + }, "animateFilter"), + // The layout animates only after this many milliseconds for animate:true + // (prevents flashing on fast runs) + animationThreshold: 250, + // Number of iterations between consecutive screen positions update + refresh: 20, + // Whether to fit the network view after when done + fit: true, + // Padding on fit + padding: 30, + // Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + boundingBox: void 0, + // Excludes the label when calculating node bounding boxes for the layout algorithm + nodeDimensionsIncludeLabels: false, + // Randomize the initial positions of the nodes (true) or use existing positions (false) + randomize: false, + // Extra spacing between components in non-compound graphs + componentSpacing: 40, + // Node repulsion (non overlapping) multiplier + nodeRepulsion: /* @__PURE__ */ __name(function nodeRepulsion(node2) { + return 2048; + }, "nodeRepulsion"), + // Node repulsion (overlapping) multiplier + nodeOverlap: 4, + // Ideal edge (non nested) length + idealEdgeLength: /* @__PURE__ */ __name(function idealEdgeLength(edge) { + return 32; + }, "idealEdgeLength"), + // Divisor to compute edge forces + edgeElasticity: /* @__PURE__ */ __name(function edgeElasticity(edge) { + return 32; + }, "edgeElasticity"), + // Nesting factor (multiplier) to compute ideal edge length for nested edges + nestingFactor: 1.2, + // Gravity force (constant) + gravity: 1, + // Maximum number of iterations to perform + numIter: 1e3, + // Initial temperature (maximum node displacement) + initialTemp: 1e3, + // Cooling factor (how the temperature is reduced between consecutive iterations + coolingFactor: 0.99, + // Lower temperature threshold (below this point the layout will end) + minTemp: 1 + }; + __name(CoseLayout, "CoseLayout"); + CoseLayout.prototype.run = function() { + var options2 = this.options; + var cy = options2.cy; + var layout6 = this; + layout6.stopped = false; + if (options2.animate === true || options2.animate === false) { + layout6.emit({ + type: "layoutstart", + layout: layout6 + }); } - createDescription(node2, name, document2) { - const doc = document2 !== null && document2 !== void 0 ? document2 : getDocument(node2); - name !== null && name !== void 0 ? name : name = this.nameProvider.getName(node2); - const path4 = this.astNodeLocator.getAstNodePath(node2); - if (!name) { - throw new Error(`Node at path ${path4} has no name.`); - } - let nameNodeSegment; - const nameSegmentGetter = /* @__PURE__ */ __name(() => { - var _a; - return nameNodeSegment !== null && nameNodeSegment !== void 0 ? nameNodeSegment : nameNodeSegment = toDocumentSegment((_a = this.nameProvider.getNameNode(node2)) !== null && _a !== void 0 ? _a : node2.$cstNode); - }, "nameSegmentGetter"); - return { - node: node2, - name, - get nameSegment() { - return nameSegmentGetter(); - }, - selectionSegment: toDocumentSegment(node2.$cstNode), - type: node2.$type, - documentUri: doc.uri, - path: path4 - }; + if (true === options2.debug) { + DEBUG = true; + } else { + DEBUG = false; } - }; - DefaultReferenceDescriptionProvider = class { - static { - __name(this, "DefaultReferenceDescriptionProvider"); + var layoutInfo = createLayoutInfo(cy, layout6, options2); + if (DEBUG) { + printLayoutInfo(layoutInfo); } - constructor(services) { - this.nodeLocator = services.workspace.AstNodeLocator; + if (options2.randomize) { + randomizePositions(layoutInfo); } - async createDescriptions(document2, cancelToken = cancellation_exports.CancellationToken.None) { - const descr = []; - const rootNode = document2.parseResult.value; - for (const astNode of streamAst(rootNode)) { - await interruptAndCheck(cancelToken); - streamReferences(astNode).filter((refInfo) => !isLinkingError(refInfo)).forEach((refInfo) => { - const description = this.createDescription(refInfo); - if (description) { - descr.push(description); - } + var startTime = performanceNow(); + var refresh = /* @__PURE__ */ __name(function refresh2() { + refreshPositions(layoutInfo, cy, options2); + if (true === options2.fit) { + cy.fit(options2.padding); + } + }, "refresh"); + var mainLoop = /* @__PURE__ */ __name(function mainLoop2(i3) { + if (layout6.stopped || i3 >= options2.numIter) { + return false; + } + step(layoutInfo, options2); + layoutInfo.temperature = layoutInfo.temperature * options2.coolingFactor; + if (layoutInfo.temperature < options2.minTemp) { + return false; + } + return true; + }, "mainLoop"); + var done = /* @__PURE__ */ __name(function done2() { + if (options2.animate === true || options2.animate === false) { + refresh(); + layout6.one("layoutstop", options2.stop); + layout6.emit({ + type: "layoutstop", + layout: layout6 }); + } else { + var nodes5 = options2.eles.nodes(); + var getScaledPos = getScaleInBoundsFn(layoutInfo, options2, nodes5); + nodes5.layoutPositions(layout6, options2, getScaledPos); } - return descr; - } - createDescription(refInfo) { - const targetNodeDescr = refInfo.reference.$nodeDescription; - const refCstNode = refInfo.reference.$refNode; - if (!targetNodeDescr || !refCstNode) { - return void 0; + }, "done"); + var i2 = 0; + var loopRet = true; + if (options2.animate === true) { + var _frame = /* @__PURE__ */ __name(function frame2() { + var f2 = 0; + while (loopRet && f2 < options2.refresh) { + loopRet = mainLoop(i2); + i2++; + f2++; + } + if (!loopRet) { + separateComponents(layoutInfo, options2); + done(); + } else { + var now3 = performanceNow(); + if (now3 - startTime >= options2.animationThreshold) { + refresh(); + } + requestAnimationFrame2(_frame); + } + }, "frame"); + _frame(); + } else { + while (loopRet) { + loopRet = mainLoop(i2); + i2++; } - const docUri = getDocument(refInfo.container).uri; - return { - sourceUri: docUri, - sourcePath: this.nodeLocator.getAstNodePath(refInfo.container), - targetUri: targetNodeDescr.documentUri, - targetPath: targetNodeDescr.path, - segment: toDocumentSegment(refCstNode), - local: UriUtils.equals(targetNodeDescr.documentUri, docUri) - }; + separateComponents(layoutInfo, options2); + done(); } + return this; }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/ast-node-locator.js - var DefaultAstNodeLocator; - var init_ast_node_locator = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/ast-node-locator.js"() { - "use strict"; - DefaultAstNodeLocator = class { - static { - __name(this, "DefaultAstNodeLocator"); + CoseLayout.prototype.stop = function() { + this.stopped = true; + if (this.thread) { + this.thread.stop(); } - constructor() { - this.segmentSeparator = "/"; - this.indexSeparator = "@"; + this.emit("layoutstop"); + return this; + }; + CoseLayout.prototype.destroy = function() { + if (this.thread) { + this.thread.stop(); } - getAstNodePath(node2) { - if (node2.$container) { - const containerPath = this.getAstNodePath(node2.$container); - const newSegment = this.getPathSegment(node2); - const nodePath = containerPath + this.segmentSeparator + newSegment; - return nodePath; + return this; + }; + createLayoutInfo = /* @__PURE__ */ __name(function createLayoutInfo2(cy, layout6, options2) { + var edges3 = options2.eles.edges(); + var nodes5 = options2.eles.nodes(); + var bb = makeBoundingBox(options2.boundingBox ? options2.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + var layoutInfo = { + isCompound: cy.hasCompoundNodes(), + layoutNodes: [], + idToIndex: {}, + nodeSize: nodes5.size(), + graphSet: [], + indexToGraph: [], + layoutEdges: [], + edgeSize: edges3.size(), + temperature: options2.initialTemp, + clientWidth: bb.w, + clientHeight: bb.h, + boundingBox: bb + }; + var components3 = options2.eles.components(); + var id2cmptId = {}; + for (var i2 = 0; i2 < components3.length; i2++) { + var component2 = components3[i2]; + for (var j3 = 0; j3 < component2.length; j3++) { + var node2 = component2[j3]; + id2cmptId[node2.id()] = i2; } - return ""; } - getPathSegment({ $containerProperty, $containerIndex }) { - if (!$containerProperty) { - throw new Error("Missing '$containerProperty' in AST node."); - } - if ($containerIndex !== void 0) { - return $containerProperty + this.indexSeparator + $containerIndex; + for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { + var n2 = nodes5[i2]; + var nbb = n2.layoutDimensions(options2); + var tempNode = {}; + tempNode.isLocked = n2.locked(); + tempNode.id = n2.data("id"); + tempNode.parentId = n2.data("parent"); + tempNode.cmptId = id2cmptId[n2.id()]; + tempNode.children = []; + tempNode.positionX = n2.position("x"); + tempNode.positionY = n2.position("y"); + tempNode.offsetX = 0; + tempNode.offsetY = 0; + tempNode.height = nbb.w; + tempNode.width = nbb.h; + tempNode.maxX = tempNode.positionX + tempNode.width / 2; + tempNode.minX = tempNode.positionX - tempNode.width / 2; + tempNode.maxY = tempNode.positionY + tempNode.height / 2; + tempNode.minY = tempNode.positionY - tempNode.height / 2; + tempNode.padLeft = parseFloat(n2.style("padding")); + tempNode.padRight = parseFloat(n2.style("padding")); + tempNode.padTop = parseFloat(n2.style("padding")); + tempNode.padBottom = parseFloat(n2.style("padding")); + tempNode.nodeRepulsion = fn$6(options2.nodeRepulsion) ? options2.nodeRepulsion(n2) : options2.nodeRepulsion; + layoutInfo.layoutNodes.push(tempNode); + layoutInfo.idToIndex[tempNode.id] = i2; + } + var queue = []; + var start3 = 0; + var end2 = -1; + var tempGraph = []; + for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { + var n2 = layoutInfo.layoutNodes[i2]; + var p_id = n2.parentId; + if (null != p_id) { + layoutInfo.layoutNodes[layoutInfo.idToIndex[p_id]].children.push(n2.id); + } else { + queue[++end2] = n2.id; + tempGraph.push(n2.id); } - return $containerProperty; } - getAstNode(node2, path4) { - const segments = path4.split(this.segmentSeparator); - return segments.reduce((previousValue, currentValue) => { - if (!previousValue || currentValue.length === 0) { - return previousValue; - } - const propertyIndex = currentValue.indexOf(this.indexSeparator); - if (propertyIndex > 0) { - const property2 = currentValue.substring(0, propertyIndex); - const arrayIndex = parseInt(currentValue.substring(propertyIndex + 1)); - const array4 = previousValue[property2]; - return array4 === null || array4 === void 0 ? void 0 : array4[arrayIndex]; + layoutInfo.graphSet.push(tempGraph); + while (start3 <= end2) { + var node_id = queue[start3++]; + var node_ix = layoutInfo.idToIndex[node_id]; + var node2 = layoutInfo.layoutNodes[node_ix]; + var children2 = node2.children; + if (children2.length > 0) { + layoutInfo.graphSet.push(children2); + for (var i2 = 0; i2 < children2.length; i2++) { + queue[++end2] = children2[i2]; } - return previousValue[currentValue]; - }, node2); + } } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/event.js - var event_exports = {}; - var init_event3 = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/event.js"() { - "use strict"; - __reExport(event_exports, __toESM(require_events(), 1)); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/configuration.js - var DefaultConfigurationProvider; - var init_configuration = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/configuration.js"() { - "use strict"; - init_event3(); - init_promise_utils(); - DefaultConfigurationProvider = class { - static { - __name(this, "DefaultConfigurationProvider"); + for (var i2 = 0; i2 < layoutInfo.graphSet.length; i2++) { + var graph = layoutInfo.graphSet[i2]; + for (var j3 = 0; j3 < graph.length; j3++) { + var index = layoutInfo.idToIndex[graph[j3]]; + layoutInfo.indexToGraph[index] = i2; + } } - constructor(services) { - this._ready = new Deferred(); - this.settings = {}; - this.workspaceConfig = false; - this.onConfigurationSectionUpdateEmitter = new event_exports.Emitter(); - this.serviceRegistry = services.ServiceRegistry; + for (var i2 = 0; i2 < layoutInfo.edgeSize; i2++) { + var e3 = edges3[i2]; + var tempEdge = {}; + tempEdge.id = e3.data("id"); + tempEdge.sourceId = e3.data("source"); + tempEdge.targetId = e3.data("target"); + var idealLength = fn$6(options2.idealEdgeLength) ? options2.idealEdgeLength(e3) : options2.idealEdgeLength; + var elasticity = fn$6(options2.edgeElasticity) ? options2.edgeElasticity(e3) : options2.edgeElasticity; + var sourceIx = layoutInfo.idToIndex[tempEdge.sourceId]; + var targetIx = layoutInfo.idToIndex[tempEdge.targetId]; + var sourceGraph = layoutInfo.indexToGraph[sourceIx]; + var targetGraph = layoutInfo.indexToGraph[targetIx]; + if (sourceGraph != targetGraph) { + var lca = findLCA(tempEdge.sourceId, tempEdge.targetId, layoutInfo); + var lcaGraph = layoutInfo.graphSet[lca]; + var depth = 0; + var tempNode = layoutInfo.layoutNodes[sourceIx]; + while (-1 === lcaGraph.indexOf(tempNode.id)) { + tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; + depth++; + } + tempNode = layoutInfo.layoutNodes[targetIx]; + while (-1 === lcaGraph.indexOf(tempNode.id)) { + tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; + depth++; + } + idealLength *= depth * options2.nestingFactor; + } + tempEdge.idealLength = idealLength; + tempEdge.elasticity = elasticity; + layoutInfo.layoutEdges.push(tempEdge); } - get ready() { - return this._ready.promise; + return layoutInfo; + }, "createLayoutInfo"); + findLCA = /* @__PURE__ */ __name(function findLCA2(node1, node2, layoutInfo) { + var res = _findLCA_aux(node1, node2, 0, layoutInfo); + if (2 > res.count) { + return 0; + } else { + return res.graph; } - initialize(params) { - var _a, _b; - this.workspaceConfig = (_b = (_a = params.capabilities.workspace) === null || _a === void 0 ? void 0 : _a.configuration) !== null && _b !== void 0 ? _b : false; + }, "findLCA"); + _findLCA_aux = /* @__PURE__ */ __name(function findLCA_aux(node1, node2, graphIx, layoutInfo) { + var graph = layoutInfo.graphSet[graphIx]; + if (-1 < graph.indexOf(node1) && -1 < graph.indexOf(node2)) { + return { + count: 2, + graph: graphIx + }; } - async initialized(params) { - if (this.workspaceConfig) { - if (params.register) { - const languages = this.serviceRegistry.all; - params.register({ - // Listen to configuration changes for all languages - section: languages.map((lang) => this.toSectionName(lang.LanguageMetaData.languageId)) - }); - } - if (params.fetchConfiguration) { - const configToUpdate = this.serviceRegistry.all.map((lang) => ({ - // Fetch the configuration changes for all languages - section: this.toSectionName(lang.LanguageMetaData.languageId) - })); - const configs = await params.fetchConfiguration(configToUpdate); - configToUpdate.forEach((conf5, idx) => { - this.updateSectionConfiguration(conf5.section, configs[idx]); - }); + var c3 = 0; + for (var i2 = 0; i2 < graph.length; i2++) { + var nodeId = graph[i2]; + var nodeIx = layoutInfo.idToIndex[nodeId]; + var children2 = layoutInfo.layoutNodes[nodeIx].children; + if (0 === children2.length) { + continue; + } + var childGraphIx = layoutInfo.indexToGraph[layoutInfo.idToIndex[children2[0]]]; + var result = _findLCA_aux(node1, node2, childGraphIx, layoutInfo); + if (0 === result.count) { + continue; + } else if (1 === result.count) { + c3++; + if (2 === c3) { + break; } + } else { + return result; } - this._ready.resolve(); } - /** - * Updates the cached configurations using the `change` notification parameters. - * - * @param change The parameters of a change configuration notification. - * `settings` property of the change object could be expressed as `Record>` - */ - updateConfiguration(change2) { - if (!change2.settings) { - return; + return { + count: c3, + graph: graphIx + }; + }, "findLCA_aux"); + randomizePositions = /* @__PURE__ */ __name(function randomizePositions2(layoutInfo, cy) { + var width3 = layoutInfo.clientWidth; + var height2 = layoutInfo.clientHeight; + for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { + var n2 = layoutInfo.layoutNodes[i2]; + if (0 === n2.children.length && !n2.isLocked) { + n2.positionX = Math.random() * width3; + n2.positionY = Math.random() * height2; } - Object.keys(change2.settings).forEach((section) => { - const configuration = change2.settings[section]; - this.updateSectionConfiguration(section, configuration); - this.onConfigurationSectionUpdateEmitter.fire({ section, configuration }); + } + }, "randomizePositions"); + getScaleInBoundsFn = /* @__PURE__ */ __name(function getScaleInBoundsFn2(layoutInfo, options2, nodes5) { + var bb = layoutInfo.boundingBox; + var coseBB = { + x1: Infinity, + x2: -Infinity, + y1: Infinity, + y2: -Infinity + }; + if (options2.boundingBox) { + nodes5.forEach(function(node2) { + var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[node2.data("id")]]; + coseBB.x1 = Math.min(coseBB.x1, lnode.positionX); + coseBB.x2 = Math.max(coseBB.x2, lnode.positionX); + coseBB.y1 = Math.min(coseBB.y1, lnode.positionY); + coseBB.y2 = Math.max(coseBB.y2, lnode.positionY); }); + coseBB.w = coseBB.x2 - coseBB.x1; + coseBB.h = coseBB.y2 - coseBB.y1; } - updateSectionConfiguration(section, configuration) { - this.settings[section] = configuration; + return function(ele, i2) { + var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[ele.data("id")]]; + if (options2.boundingBox) { + var pctX = coseBB.w === 0 ? 0.5 : (lnode.positionX - coseBB.x1) / coseBB.w; + var pctY = coseBB.h === 0 ? 0.5 : (lnode.positionY - coseBB.y1) / coseBB.h; + return { + x: bb.x1 + pctX * bb.w, + y: bb.y1 + pctY * bb.h + }; + } else { + return { + x: lnode.positionX, + y: lnode.positionY + }; + } + }; + }, "getScaleInBoundsFn"); + refreshPositions = /* @__PURE__ */ __name(function refreshPositions2(layoutInfo, cy, options2) { + var layout6 = options2.layout; + var nodes5 = options2.eles.nodes(); + var getScaledPos = getScaleInBoundsFn(layoutInfo, options2, nodes5); + nodes5.positions(getScaledPos); + if (true !== layoutInfo.ready) { + layoutInfo.ready = true; + layout6.one("layoutready", options2.ready); + layout6.emit({ + type: "layoutready", + layout: this + }); } - /** - * Returns a configuration value stored for the given language. - * - * @param language The language id - * @param configuration Configuration name - */ - async getConfiguration(language, configuration) { - await this.ready; - const sectionName = this.toSectionName(language); - if (this.settings[sectionName]) { - return this.settings[sectionName][configuration]; + }, "refreshPositions"); + step = /* @__PURE__ */ __name(function step2(layoutInfo, options2, _step) { + calculateNodeForces(layoutInfo, options2); + calculateEdgeForces(layoutInfo); + calculateGravityForces(layoutInfo, options2); + propagateForces(layoutInfo); + updatePositions(layoutInfo); + }, "step"); + calculateNodeForces = /* @__PURE__ */ __name(function calculateNodeForces2(layoutInfo, options2) { + for (var i2 = 0; i2 < layoutInfo.graphSet.length; i2++) { + var graph = layoutInfo.graphSet[i2]; + var numNodes = graph.length; + for (var j3 = 0; j3 < numNodes; j3++) { + var node1 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j3]]]; + for (var k2 = j3 + 1; k2 < numNodes; k2++) { + var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[k2]]]; + nodeRepulsion2(node1, node2, layoutInfo, options2); + } } } - toSectionName(languageId) { - return `${languageId}`; + }, "calculateNodeForces"); + randomDistance = /* @__PURE__ */ __name(function randomDistance2(max10) { + return -1 + 2 * max10 * Math.random(); + }, "randomDistance"); + nodeRepulsion2 = /* @__PURE__ */ __name(function nodeRepulsion3(node1, node2, layoutInfo, options2) { + var cmptId1 = node1.cmptId; + var cmptId2 = node2.cmptId; + if (cmptId1 !== cmptId2 && !layoutInfo.isCompound) { + return; } - get onConfigurationSectionUpdate() { - return this.onConfigurationSectionUpdateEmitter.event; + var directionX = node2.positionX - node1.positionX; + var directionY = node2.positionY - node1.positionY; + var maxRandDist = 1; + if (0 === directionX && 0 === directionY) { + directionX = randomDistance(maxRandDist); + directionY = randomDistance(maxRandDist); } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/disposable.js - var Disposable; - var init_disposable = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/disposable.js"() { - "use strict"; - (function(Disposable2) { - function create4(callback) { - return { - dispose: /* @__PURE__ */ __name(async () => await callback(), "dispose") - }; + var overlap = nodesOverlap(node1, node2, directionX, directionY); + if (overlap > 0) { + var force = options2.nodeOverlap * overlap; + var distance2 = Math.sqrt(directionX * directionX + directionY * directionY); + var forceX = force * directionX / distance2; + var forceY = force * directionY / distance2; + } else { + var point1 = findClippingPoint(node1, directionX, directionY); + var point22 = findClippingPoint(node2, -1 * directionX, -1 * directionY); + var distanceX = point22.x - point1.x; + var distanceY = point22.y - point1.y; + var distanceSqr = distanceX * distanceX + distanceY * distanceY; + var distance2 = Math.sqrt(distanceSqr); + var force = (node1.nodeRepulsion + node2.nodeRepulsion) / distanceSqr; + var forceX = force * distanceX / distance2; + var forceY = force * distanceY / distance2; } - __name(create4, "create"); - Disposable2.create = create4; - })(Disposable || (Disposable = {})); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/document-builder.js - var DefaultDocumentBuilder; - var init_document_builder = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/document-builder.js"() { - "use strict"; - init_cancellation(); - init_disposable(); - init_collections(); - init_promise_utils(); - init_stream(); - init_validation_registry(); - init_documents(); - DefaultDocumentBuilder = class { - static { - __name(this, "DefaultDocumentBuilder"); + if (!node1.isLocked) { + node1.offsetX -= forceX; + node1.offsetY -= forceY; } - constructor(services) { - this.updateBuildOptions = { - // Default: run only the built-in validation checks and those in the _fast_ category (includes those without category) - validation: { - categories: ["built-in", "fast"] - } - }; - this.updateListeners = []; - this.buildPhaseListeners = new MultiMap(); - this.documentPhaseListeners = new MultiMap(); - this.buildState = /* @__PURE__ */ new Map(); - this.documentBuildWaiters = /* @__PURE__ */ new Map(); - this.currentState = DocumentState.Changed; - this.langiumDocuments = services.workspace.LangiumDocuments; - this.langiumDocumentFactory = services.workspace.LangiumDocumentFactory; - this.textDocuments = services.workspace.TextDocuments; - this.indexManager = services.workspace.IndexManager; - this.serviceRegistry = services.ServiceRegistry; + if (!node2.isLocked) { + node2.offsetX += forceX; + node2.offsetY += forceY; } - async build(documents, options3 = {}, cancelToken = cancellation_exports.CancellationToken.None) { - var _a, _b; - for (const document2 of documents) { - const key = document2.uri.toString(); - if (document2.state === DocumentState.Validated) { - if (typeof options3.validation === "boolean" && options3.validation) { - document2.state = DocumentState.IndexedReferences; - document2.diagnostics = void 0; - this.buildState.delete(key); - } else if (typeof options3.validation === "object") { - const buildState2 = this.buildState.get(key); - const previousCategories = (_a = buildState2 === null || buildState2 === void 0 ? void 0 : buildState2.result) === null || _a === void 0 ? void 0 : _a.validationChecks; - if (previousCategories) { - const newCategories = (_b = options3.validation.categories) !== null && _b !== void 0 ? _b : ValidationCategory.all; - const categories = newCategories.filter((c3) => !previousCategories.includes(c3)); - if (categories.length > 0) { - this.buildState.set(key, { - completed: false, - options: { - validation: Object.assign(Object.assign({}, options3.validation), { categories }) - }, - result: buildState2.result - }); - document2.state = DocumentState.IndexedReferences; - } - } - } - } else { - this.buildState.delete(key); - } - } - this.currentState = DocumentState.Changed; - await this.emitUpdate(documents.map((e3) => e3.uri), []); - await this.buildDocuments(documents, options3, cancelToken); + return; + }, "nodeRepulsion"); + nodesOverlap = /* @__PURE__ */ __name(function nodesOverlap2(node1, node2, dX, dY) { + if (dX > 0) { + var overlapX = node1.maxX - node2.minX; + } else { + var overlapX = node2.maxX - node1.minX; } - async update(changed, deleted, cancelToken = cancellation_exports.CancellationToken.None) { - this.currentState = DocumentState.Changed; - for (const deletedUri of deleted) { - this.langiumDocuments.deleteDocument(deletedUri); - this.buildState.delete(deletedUri.toString()); - this.indexManager.remove(deletedUri); - } - for (const changedUri of changed) { - const invalidated = this.langiumDocuments.invalidateDocument(changedUri); - if (!invalidated) { - const newDocument = this.langiumDocumentFactory.fromModel({ $type: "INVALID" }, changedUri); - newDocument.state = DocumentState.Changed; - this.langiumDocuments.addDocument(newDocument); - } - this.buildState.delete(changedUri.toString()); - } - const allChangedUris = stream(changed).concat(deleted).map((uri) => uri.toString()).toSet(); - this.langiumDocuments.all.filter((doc) => !allChangedUris.has(doc.uri.toString()) && this.shouldRelink(doc, allChangedUris)).forEach((doc) => { - const linker = this.serviceRegistry.getServices(doc.uri).references.Linker; - linker.unlink(doc); - doc.state = Math.min(doc.state, DocumentState.ComputedScopes); - doc.diagnostics = void 0; - }); - await this.emitUpdate(changed, deleted); - await interruptAndCheck(cancelToken); - const rebuildDocuments = this.sortDocuments(this.langiumDocuments.all.filter((doc) => { - var _a; - return doc.state < DocumentState.Linked || !((_a = this.buildState.get(doc.uri.toString())) === null || _a === void 0 ? void 0 : _a.completed); - }).toArray()); - await this.buildDocuments(rebuildDocuments, this.updateBuildOptions, cancelToken); + if (dY > 0) { + var overlapY = node1.maxY - node2.minY; + } else { + var overlapY = node2.maxY - node1.minY; } - async emitUpdate(changed, deleted) { - await Promise.all(this.updateListeners.map((listener) => listener(changed, deleted))); + if (overlapX >= 0 && overlapY >= 0) { + return Math.sqrt(overlapX * overlapX + overlapY * overlapY); + } else { + return 0; } - /** - * Sort the given documents by priority. By default, documents with an open text document are prioritized. - * This is useful to ensure that visible documents show their diagnostics before all other documents. - * - * This improves the responsiveness in large workspaces as users usually don't care about diagnostics - * in files that are currently not opened in the editor. - */ - sortDocuments(documents) { - let left3 = 0; - let right3 = documents.length - 1; - while (left3 < right3) { - while (left3 < documents.length && this.hasTextDocument(documents[left3])) { - left3++; - } - while (right3 >= 0 && !this.hasTextDocument(documents[right3])) { - right3--; - } - if (left3 < right3) { - [documents[left3], documents[right3]] = [documents[right3], documents[left3]]; - } - } - return documents; + }, "nodesOverlap"); + findClippingPoint = /* @__PURE__ */ __name(function findClippingPoint2(node2, dX, dY) { + var X4 = node2.positionX; + var Y3 = node2.positionY; + var H2 = node2.height || 1; + var W3 = node2.width || 1; + var dirSlope = dY / dX; + var nodeSlope = H2 / W3; + var res = {}; + if (0 === dX && 0 < dY) { + res.x = X4; + res.y = Y3 + H2 / 2; + return res; } - hasTextDocument(doc) { - var _a; - return Boolean((_a = this.textDocuments) === null || _a === void 0 ? void 0 : _a.get(doc.uri)); + if (0 === dX && 0 > dY) { + res.x = X4; + res.y = Y3 + H2 / 2; + return res; } - /** - * Check whether the given document should be relinked after changes were found in the given URIs. - */ - shouldRelink(document2, changedUris) { - if (document2.references.some((ref) => ref.error !== void 0)) { - return true; - } - return this.indexManager.isAffected(document2, changedUris); + if (0 < dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { + res.x = X4 + W3 / 2; + res.y = Y3 + W3 * dY / 2 / dX; + return res; } - onUpdate(callback) { - this.updateListeners.push(callback); - return Disposable.create(() => { - const index = this.updateListeners.indexOf(callback); - if (index >= 0) { - this.updateListeners.splice(index, 1); - } - }); + if (0 > dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { + res.x = X4 - W3 / 2; + res.y = Y3 - W3 * dY / 2 / dX; + return res; } - /** - * Build the given documents by stepping through all build phases. If a document's state indicates - * that a certain build phase is already done, the phase is skipped for that document. - * - * @param documents The documents to build. - * @param options the {@link BuildOptions} to use. - * @param cancelToken A cancellation token that can be used to cancel the build. - * @returns A promise that resolves when the build is done. - */ - async buildDocuments(documents, options3, cancelToken) { - this.prepareBuild(documents, options3); - await this.runCancelable(documents, DocumentState.Parsed, cancelToken, (doc) => this.langiumDocumentFactory.update(doc, cancelToken)); - await this.runCancelable(documents, DocumentState.IndexedContent, cancelToken, (doc) => this.indexManager.updateContent(doc, cancelToken)); - await this.runCancelable(documents, DocumentState.ComputedScopes, cancelToken, async (doc) => { - const scopeComputation = this.serviceRegistry.getServices(doc.uri).references.ScopeComputation; - doc.precomputedScopes = await scopeComputation.computeLocalScopes(doc, cancelToken); - }); - await this.runCancelable(documents, DocumentState.Linked, cancelToken, (doc) => { - const linker = this.serviceRegistry.getServices(doc.uri).references.Linker; - return linker.link(doc, cancelToken); - }); - await this.runCancelable(documents, DocumentState.IndexedReferences, cancelToken, (doc) => this.indexManager.updateReferences(doc, cancelToken)); - const toBeValidated = documents.filter((doc) => this.shouldValidate(doc)); - await this.runCancelable(toBeValidated, DocumentState.Validated, cancelToken, (doc) => this.validate(doc, cancelToken)); - for (const doc of documents) { - const state4 = this.buildState.get(doc.uri.toString()); - if (state4) { - state4.completed = true; - } - } + if (0 < dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { + res.x = X4 + H2 * dX / 2 / dY; + res.y = Y3 + H2 / 2; + return res; } - /** - * Runs prior to beginning the build process to update the {@link DocumentBuildState} for each document - * - * @param documents collection of documents to be built - * @param options the {@link BuildOptions} to use - */ - prepareBuild(documents, options3) { - for (const doc of documents) { - const key = doc.uri.toString(); - const state4 = this.buildState.get(key); - if (!state4 || state4.completed) { - this.buildState.set(key, { - completed: false, - options: options3, - result: state4 === null || state4 === void 0 ? void 0 : state4.result - }); - } - } + if (0 > dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { + res.x = X4 - H2 * dX / 2 / dY; + res.y = Y3 - H2 / 2; + return res; } - /** - * Runs a cancelable operation on a set of documents to bring them to a specified {@link DocumentState}. - * - * @param documents The array of documents to process. - * @param targetState The target {@link DocumentState} to bring the documents to. - * @param cancelToken A token that can be used to cancel the operation. - * @param callback A function to be called for each document. - * @returns A promise that resolves when all documents have been processed or the operation is canceled. - * @throws Will throw `OperationCancelled` if the operation is canceled via a `CancellationToken`. - */ - async runCancelable(documents, targetState, cancelToken, callback) { - const filtered = documents.filter((doc) => doc.state < targetState); - for (const document2 of filtered) { - await interruptAndCheck(cancelToken); - await callback(document2); - document2.state = targetState; - await this.notifyDocumentPhase(document2, targetState, cancelToken); + return res; + }, "findClippingPoint"); + calculateEdgeForces = /* @__PURE__ */ __name(function calculateEdgeForces2(layoutInfo, options2) { + for (var i2 = 0; i2 < layoutInfo.edgeSize; i2++) { + var edge = layoutInfo.layoutEdges[i2]; + var sourceIx = layoutInfo.idToIndex[edge.sourceId]; + var source = layoutInfo.layoutNodes[sourceIx]; + var targetIx = layoutInfo.idToIndex[edge.targetId]; + var target = layoutInfo.layoutNodes[targetIx]; + var directionX = target.positionX - source.positionX; + var directionY = target.positionY - source.positionY; + if (0 === directionX && 0 === directionY) { + continue; + } + var point1 = findClippingPoint(source, directionX, directionY); + var point22 = findClippingPoint(target, -1 * directionX, -1 * directionY); + var lx = point22.x - point1.x; + var ly = point22.y - point1.y; + var l4 = Math.sqrt(lx * lx + ly * ly); + var force = Math.pow(edge.idealLength - l4, 2) / edge.elasticity; + if (0 !== l4) { + var forceX = force * lx / l4; + var forceY = force * ly / l4; + } else { + var forceX = 0; + var forceY = 0; + } + if (!source.isLocked) { + source.offsetX += forceX; + source.offsetY += forceY; + } + if (!target.isLocked) { + target.offsetX -= forceX; + target.offsetY -= forceY; } - const targetStateDocs = documents.filter((doc) => doc.state === targetState); - await this.notifyBuildPhase(targetStateDocs, targetState, cancelToken); - this.currentState = targetState; - } - onBuildPhase(targetState, callback) { - this.buildPhaseListeners.add(targetState, callback); - return Disposable.create(() => { - this.buildPhaseListeners.delete(targetState, callback); - }); } - onDocumentPhase(targetState, callback) { - this.documentPhaseListeners.add(targetState, callback); - return Disposable.create(() => { - this.documentPhaseListeners.delete(targetState, callback); - }); + }, "calculateEdgeForces"); + calculateGravityForces = /* @__PURE__ */ __name(function calculateGravityForces2(layoutInfo, options2) { + if (options2.gravity === 0) { + return; } - waitUntil(state4, uriOrToken, cancelToken) { - let uri = void 0; - if (uriOrToken && "path" in uriOrToken) { - uri = uriOrToken; + var distThreshold = 1; + for (var i2 = 0; i2 < layoutInfo.graphSet.length; i2++) { + var graph = layoutInfo.graphSet[i2]; + var numNodes = graph.length; + if (0 === i2) { + var centerX = layoutInfo.clientHeight / 2; + var centerY = layoutInfo.clientWidth / 2; } else { - cancelToken = uriOrToken; + var temp = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[0]]]; + var parent4 = layoutInfo.layoutNodes[layoutInfo.idToIndex[temp.parentId]]; + var centerX = parent4.positionX; + var centerY = parent4.positionY; } - cancelToken !== null && cancelToken !== void 0 ? cancelToken : cancelToken = cancellation_exports.CancellationToken.None; - if (uri) { - const document2 = this.langiumDocuments.getDocument(uri); - if (document2 && document2.state > state4) { - return Promise.resolve(uri); + for (var j3 = 0; j3 < numNodes; j3++) { + var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j3]]]; + if (node2.isLocked) { + continue; + } + var dx = centerX - node2.positionX; + var dy = centerY - node2.positionY; + var d3 = Math.sqrt(dx * dx + dy * dy); + if (d3 > distThreshold) { + var fx = options2.gravity * dx / d3; + var fy = options2.gravity * dy / d3; + node2.offsetX += fx; + node2.offsetY += fy; } } - if (this.currentState >= state4) { - return Promise.resolve(void 0); - } else if (cancelToken.isCancellationRequested) { - return Promise.reject(OperationCancelled); - } - return new Promise((resolve3, reject3) => { - const buildDisposable = this.onBuildPhase(state4, () => { - buildDisposable.dispose(); - cancelDisposable.dispose(); - if (uri) { - const document2 = this.langiumDocuments.getDocument(uri); - resolve3(document2 === null || document2 === void 0 ? void 0 : document2.uri); - } else { - resolve3(void 0); - } - }); - const cancelDisposable = cancelToken.onCancellationRequested(() => { - buildDisposable.dispose(); - cancelDisposable.dispose(); - reject3(OperationCancelled); - }); - }); } - async notifyDocumentPhase(document2, state4, cancelToken) { - const listeners = this.documentPhaseListeners.get(state4); - const listenersCopy = listeners.slice(); - for (const listener of listenersCopy) { - try { - await listener(document2, cancelToken); - } catch (err) { - if (!isOperationCancelled(err)) { - throw err; - } + }, "calculateGravityForces"); + propagateForces = /* @__PURE__ */ __name(function propagateForces2(layoutInfo, options2) { + var queue = []; + var start3 = 0; + var end2 = -1; + queue.push.apply(queue, layoutInfo.graphSet[0]); + end2 += layoutInfo.graphSet[0].length; + while (start3 <= end2) { + var nodeId = queue[start3++]; + var nodeIndex = layoutInfo.idToIndex[nodeId]; + var node2 = layoutInfo.layoutNodes[nodeIndex]; + var children2 = node2.children; + if (0 < children2.length && !node2.isLocked) { + var offX = node2.offsetX; + var offY = node2.offsetY; + for (var i2 = 0; i2 < children2.length; i2++) { + var childNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[children2[i2]]]; + childNode.offsetX += offX; + childNode.offsetY += offY; + queue[++end2] = children2[i2]; } + node2.offsetX = 0; + node2.offsetY = 0; } } - async notifyBuildPhase(documents, state4, cancelToken) { - if (documents.length === 0) { - return; - } - const listeners = this.buildPhaseListeners.get(state4); - const listenersCopy = listeners.slice(); - for (const listener of listenersCopy) { - await interruptAndCheck(cancelToken); - await listener(documents, cancelToken); + }, "propagateForces"); + updatePositions = /* @__PURE__ */ __name(function updatePositions2(layoutInfo, options2) { + for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { + var n2 = layoutInfo.layoutNodes[i2]; + if (0 < n2.children.length) { + n2.maxX = void 0; + n2.minX = void 0; + n2.maxY = void 0; + n2.minY = void 0; } } - /** - * Determine whether the given document should be validated during a build. The default - * implementation checks the `validation` property of the build options. If it's set to `true` - * or a `ValidationOptions` object, the document is included in the validation phase. - */ - shouldValidate(document2) { - return Boolean(this.getBuildOptions(document2).validation); - } - /** - * Run validation checks on the given document and store the resulting diagnostics in the document. - * If the document already contains diagnostics, the new ones are added to the list. - */ - async validate(document2, cancelToken) { - var _a, _b; - const validator = this.serviceRegistry.getServices(document2.uri).validation.DocumentValidator; - const validationSetting = this.getBuildOptions(document2).validation; - const options3 = typeof validationSetting === "object" ? validationSetting : void 0; - const diagnostics = await validator.validateDocument(document2, options3, cancelToken); - if (document2.diagnostics) { - document2.diagnostics.push(...diagnostics); - } else { - document2.diagnostics = diagnostics; + for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { + var n2 = layoutInfo.layoutNodes[i2]; + if (0 < n2.children.length || n2.isLocked) { + continue; } - const state4 = this.buildState.get(document2.uri.toString()); - if (state4) { - (_a = state4.result) !== null && _a !== void 0 ? _a : state4.result = {}; - const newCategories = (_b = options3 === null || options3 === void 0 ? void 0 : options3.categories) !== null && _b !== void 0 ? _b : ValidationCategory.all; - if (state4.result.validationChecks) { - state4.result.validationChecks.push(...newCategories); - } else { - state4.result.validationChecks = [...newCategories]; - } + var tempForce = limitForce(n2.offsetX, n2.offsetY, layoutInfo.temperature); + n2.positionX += tempForce.x; + n2.positionY += tempForce.y; + n2.offsetX = 0; + n2.offsetY = 0; + n2.minX = n2.positionX - n2.width; + n2.maxX = n2.positionX + n2.width; + n2.minY = n2.positionY - n2.height; + n2.maxY = n2.positionY + n2.height; + _updateAncestryBoundaries(n2, layoutInfo); + } + for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { + var n2 = layoutInfo.layoutNodes[i2]; + if (0 < n2.children.length && !n2.isLocked) { + n2.positionX = (n2.maxX + n2.minX) / 2; + n2.positionY = (n2.maxY + n2.minY) / 2; + n2.width = n2.maxX - n2.minX; + n2.height = n2.maxY - n2.minY; } } - getBuildOptions(document2) { - var _a, _b; - return (_b = (_a = this.buildState.get(document2.uri.toString())) === null || _a === void 0 ? void 0 : _a.options) !== null && _b !== void 0 ? _b : {}; + }, "updatePositions"); + limitForce = /* @__PURE__ */ __name(function limitForce2(forceX, forceY, max10) { + var force = Math.sqrt(forceX * forceX + forceY * forceY); + if (force > max10) { + var res = { + x: max10 * forceX / force, + y: max10 * forceY / force + }; + } else { + var res = { + x: forceX, + y: forceY + }; } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/index-manager.js - var DefaultIndexManager; - var init_index_manager = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/index-manager.js"() { - "use strict"; - init_ast_utils(); - init_caching(); - init_cancellation(); - init_stream(); - init_uri_utils(); - DefaultIndexManager = class { - static { - __name(this, "DefaultIndexManager"); + return res; + }, "limitForce"); + _updateAncestryBoundaries = /* @__PURE__ */ __name(function updateAncestryBoundaries(node2, layoutInfo) { + var parentId = node2.parentId; + if (null == parentId) { + return; } - constructor(services) { - this.symbolIndex = /* @__PURE__ */ new Map(); - this.symbolByTypeIndex = new ContextCache(); - this.referenceIndex = /* @__PURE__ */ new Map(); - this.documents = services.workspace.LangiumDocuments; - this.serviceRegistry = services.ServiceRegistry; - this.astReflection = services.AstReflection; + var p3 = layoutInfo.layoutNodes[layoutInfo.idToIndex[parentId]]; + var flag = false; + if (null == p3.maxX || node2.maxX + p3.padRight > p3.maxX) { + p3.maxX = node2.maxX + p3.padRight; + flag = true; } - findAllReferences(targetNode, astNodePath) { - const targetDocUri = getDocument(targetNode).uri; - const result = []; - this.referenceIndex.forEach((docRefs) => { - docRefs.forEach((refDescr) => { - if (UriUtils.equals(refDescr.targetUri, targetDocUri) && refDescr.targetPath === astNodePath) { - result.push(refDescr); - } - }); - }); - return stream(result); + if (null == p3.minX || node2.minX - p3.padLeft < p3.minX) { + p3.minX = node2.minX - p3.padLeft; + flag = true; } - allElements(nodeType3, uris) { - let documentUris = stream(this.symbolIndex.keys()); - if (uris) { - documentUris = documentUris.filter((uri) => !uris || uris.has(uri)); - } - return documentUris.map((uri) => this.getFileDescriptions(uri, nodeType3)).flat(); + if (null == p3.maxY || node2.maxY + p3.padBottom > p3.maxY) { + p3.maxY = node2.maxY + p3.padBottom; + flag = true; } - getFileDescriptions(uri, nodeType3) { - var _a; - if (!nodeType3) { - return (_a = this.symbolIndex.get(uri)) !== null && _a !== void 0 ? _a : []; - } - const descriptions = this.symbolByTypeIndex.get(uri, nodeType3, () => { - var _a2; - const allFileDescriptions = (_a2 = this.symbolIndex.get(uri)) !== null && _a2 !== void 0 ? _a2 : []; - return allFileDescriptions.filter((e3) => this.astReflection.isSubtype(e3.type, nodeType3)); - }); - return descriptions; + if (null == p3.minY || node2.minY - p3.padTop < p3.minY) { + p3.minY = node2.minY - p3.padTop; + flag = true; } - remove(uri) { - const uriString = uri.toString(); - this.symbolIndex.delete(uriString); - this.symbolByTypeIndex.clear(uriString); - this.referenceIndex.delete(uriString); + if (flag) { + return _updateAncestryBoundaries(p3, layoutInfo); } - async updateContent(document2, cancelToken = cancellation_exports.CancellationToken.None) { - const services = this.serviceRegistry.getServices(document2.uri); - const exports2 = await services.references.ScopeComputation.computeExports(document2, cancelToken); - const uri = document2.uri.toString(); - this.symbolIndex.set(uri, exports2); - this.symbolByTypeIndex.clear(uri); + return; + }, "updateAncestryBoundaries"); + separateComponents = /* @__PURE__ */ __name(function separateComponents2(layoutInfo, options2) { + var nodes5 = layoutInfo.layoutNodes; + var components3 = []; + for (var i2 = 0; i2 < nodes5.length; i2++) { + var node2 = nodes5[i2]; + var cid = node2.cmptId; + var component2 = components3[cid] = components3[cid] || []; + component2.push(node2); } - async updateReferences(document2, cancelToken = cancellation_exports.CancellationToken.None) { - const services = this.serviceRegistry.getServices(document2.uri); - const indexData = await services.workspace.ReferenceDescriptionProvider.createDescriptions(document2, cancelToken); - this.referenceIndex.set(document2.uri.toString(), indexData); + var totalA = 0; + for (var i2 = 0; i2 < components3.length; i2++) { + var c3 = components3[i2]; + if (!c3) { + continue; + } + c3.x1 = Infinity; + c3.x2 = -Infinity; + c3.y1 = Infinity; + c3.y2 = -Infinity; + for (var j3 = 0; j3 < c3.length; j3++) { + var n2 = c3[j3]; + c3.x1 = Math.min(c3.x1, n2.positionX - n2.width / 2); + c3.x2 = Math.max(c3.x2, n2.positionX + n2.width / 2); + c3.y1 = Math.min(c3.y1, n2.positionY - n2.height / 2); + c3.y2 = Math.max(c3.y2, n2.positionY + n2.height / 2); + } + c3.w = c3.x2 - c3.x1; + c3.h = c3.y2 - c3.y1; + totalA += c3.w * c3.h; } - isAffected(document2, changedUris) { - const references = this.referenceIndex.get(document2.uri.toString()); - if (!references) { - return false; + components3.sort(function(c1, c22) { + return c22.w * c22.h - c1.w * c1.h; + }); + var x5 = 0; + var y6 = 0; + var usedW = 0; + var rowH = 0; + var maxRowW = Math.sqrt(totalA) * layoutInfo.clientWidth / layoutInfo.clientHeight; + for (var i2 = 0; i2 < components3.length; i2++) { + var c3 = components3[i2]; + if (!c3) { + continue; + } + for (var j3 = 0; j3 < c3.length; j3++) { + var n2 = c3[j3]; + if (!n2.isLocked) { + n2.positionX += x5 - c3.x1; + n2.positionY += y6 - c3.y1; + } + } + x5 += c3.w + options2.componentSpacing; + usedW += c3.w + options2.componentSpacing; + rowH = Math.max(rowH, c3.h); + if (usedW > maxRowW) { + y6 += rowH + options2.componentSpacing; + x5 = 0; + usedW = 0; + rowH = 0; } - return references.some((ref) => !ref.local && changedUris.has(ref.targetUri.toString())); } + }, "separateComponents"); + defaults$3 = { + fit: true, + // whether to fit the viewport to the graph + padding: 30, + // padding used on fit + boundingBox: void 0, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox if not enough space + avoidOverlapPadding: 10, + // extra spacing around nodes when avoidOverlap: true + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + spacingFactor: void 0, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + condense: false, + // uses all available space on false, uses minimal space on true + rows: void 0, + // force num of rows in the grid + cols: void 0, + // force num of columns in the grid + position: /* @__PURE__ */ __name(function position3(node2) { + }, "position"), + // returns { row, col } for element + sort: void 0, + // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled + animateFilter: /* @__PURE__ */ __name(function animateFilter5(node2, i2) { + return true; + }, "animateFilter"), + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: /* @__PURE__ */ __name(function transform5(node2, position5) { + return position5; + }, "transform") + // transform a given node position. Useful for changing flow direction in discrete layouts }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/workspace-manager.js - var DefaultWorkspaceManager; - var init_workspace_manager = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/workspace-manager.js"() { - "use strict"; - init_cancellation(); - init_promise_utils(); - init_uri_utils(); - DefaultWorkspaceManager = class { - static { - __name(this, "DefaultWorkspaceManager"); - } - constructor(services) { - this.initialBuildOptions = {}; - this._ready = new Deferred(); - this.serviceRegistry = services.ServiceRegistry; - this.langiumDocuments = services.workspace.LangiumDocuments; - this.documentBuilder = services.workspace.DocumentBuilder; - this.fileSystemProvider = services.workspace.FileSystemProvider; - this.mutex = services.workspace.WorkspaceLock; - } - get ready() { - return this._ready.promise; - } - get workspaceFolders() { - return this.folders; - } - initialize(params) { - var _a; - this.folders = (_a = params.workspaceFolders) !== null && _a !== void 0 ? _a : void 0; + __name(GridLayout, "GridLayout"); + GridLayout.prototype.run = function() { + var params = this.options; + var options2 = params; + var cy = params.cy; + var eles = options2.eles; + var nodes5 = eles.nodes().not(":parent"); + if (options2.sort) { + nodes5 = nodes5.sort(options2.sort); } - initialized(_params) { - return this.mutex.write((token2) => { - var _a; - return this.initializeWorkspace((_a = this.folders) !== null && _a !== void 0 ? _a : [], token2); + var bb = makeBoundingBox(options2.boundingBox ? options2.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + if (bb.h === 0 || bb.w === 0) { + eles.nodes().layoutPositions(this, options2, function(ele) { + return { + x: bb.x1, + y: bb.y1 + }; }); - } - async initializeWorkspace(folders, cancelToken = cancellation_exports.CancellationToken.None) { - const documents = await this.performStartup(folders); - await interruptAndCheck(cancelToken); - await this.documentBuilder.build(documents, this.initialBuildOptions, cancelToken); - } - /** - * Performs the uninterruptable startup sequence of the workspace manager. - * This methods loads all documents in the workspace and other documents and returns them. - */ - async performStartup(folders) { - const fileExtensions = this.serviceRegistry.all.flatMap((e3) => e3.LanguageMetaData.fileExtensions); - const documents = []; - const collector = /* @__PURE__ */ __name((document2) => { - documents.push(document2); - if (!this.langiumDocuments.hasDocument(document2.uri)) { - this.langiumDocuments.addDocument(document2); + } else { + var cells = nodes5.size(); + var splits = Math.sqrt(cells * bb.h / bb.w); + var rows = Math.round(splits); + var cols = Math.round(bb.w / bb.h * splits); + var small = /* @__PURE__ */ __name(function small2(val) { + if (val == null) { + return Math.min(rows, cols); + } else { + var min9 = Math.min(rows, cols); + if (min9 == rows) { + rows = val; + } else { + cols = val; + } } - }, "collector"); - await this.loadAdditionalDocuments(folders, collector); - await Promise.all(folders.map((wf) => [wf, this.getRootFolder(wf)]).map(async (entry) => this.traverseFolder(...entry, fileExtensions, collector))); - this._ready.resolve(); - return documents; - } - /** - * Load all additional documents that shall be visible in the context of the given workspace - * folders and add them to the collector. This can be used to include built-in libraries of - * your language, which can be either loaded from provided files or constructed in memory. - */ - loadAdditionalDocuments(_folders, _collector) { - return Promise.resolve(); - } - /** - * Determine the root folder of the source documents in the given workspace folder. - * The default implementation returns the URI of the workspace folder, but you can override - * this to return a subfolder like `src` instead. - */ - getRootFolder(workspaceFolder) { - return URI2.parse(workspaceFolder.uri); - } - /** - * Traverse the file system folder identified by the given URI and its subfolders. All - * contained files that match the file extensions are added to the collector. - */ - async traverseFolder(workspaceFolder, folderPath, fileExtensions, collector) { - const content = await this.fileSystemProvider.readDirectory(folderPath); - await Promise.all(content.map(async (entry) => { - if (this.includeEntry(workspaceFolder, entry, fileExtensions)) { - if (entry.isDirectory) { - await this.traverseFolder(workspaceFolder, entry.uri, fileExtensions, collector); - } else if (entry.isFile) { - const document2 = await this.langiumDocuments.getOrCreateDocument(entry.uri); - collector(document2); + }, "small"); + var large = /* @__PURE__ */ __name(function large2(val) { + if (val == null) { + return Math.max(rows, cols); + } else { + var max10 = Math.max(rows, cols); + if (max10 == rows) { + rows = val; + } else { + cols = val; + } + } + }, "large"); + var oRows = options2.rows; + var oCols = options2.cols != null ? options2.cols : options2.columns; + if (oRows != null && oCols != null) { + rows = oRows; + cols = oCols; + } else if (oRows != null && oCols == null) { + rows = oRows; + cols = Math.ceil(cells / rows); + } else if (oRows == null && oCols != null) { + cols = oCols; + rows = Math.ceil(cells / cols); + } else if (cols * rows > cells) { + var sm = small(); + var lg = large(); + if ((sm - 1) * lg >= cells) { + small(sm - 1); + } else if ((lg - 1) * sm >= cells) { + large(lg - 1); + } + } else { + while (cols * rows < cells) { + var _sm = small(); + var _lg = large(); + if ((_lg + 1) * _sm >= cells) { + large(_lg + 1); + } else { + small(_sm + 1); } } - })); - } - /** - * Determine whether the given folder entry shall be included while indexing the workspace. - */ - includeEntry(_workspaceFolder, entry, fileExtensions) { - const name = UriUtils.basename(entry.uri); - if (name.startsWith(".")) { - return false; } - if (entry.isDirectory) { - return name !== "node_modules" && name !== "out"; - } else if (entry.isFile) { - const extname = UriUtils.extname(entry.uri); - return fileExtensions.includes(extname); + var cellWidth = bb.w / cols; + var cellHeight = bb.h / rows; + if (options2.condense) { + cellWidth = 0; + cellHeight = 0; } - return false; + if (options2.avoidOverlap) { + for (var i2 = 0; i2 < nodes5.length; i2++) { + var node2 = nodes5[i2]; + var pos = node2._private.position; + if (pos.x == null || pos.y == null) { + pos.x = 0; + pos.y = 0; + } + var nbb = node2.layoutDimensions(options2); + var p3 = options2.avoidOverlapPadding; + var w4 = nbb.w + p3; + var h3 = nbb.h + p3; + cellWidth = Math.max(cellWidth, w4); + cellHeight = Math.max(cellHeight, h3); + } + } + var cellUsed = {}; + var used = /* @__PURE__ */ __name(function used2(row2, col2) { + return cellUsed["c-" + row2 + "-" + col2] ? true : false; + }, "used"); + var use = /* @__PURE__ */ __name(function use2(row2, col2) { + cellUsed["c-" + row2 + "-" + col2] = true; + }, "use"); + var row = 0; + var col = 0; + var moveToNextCell = /* @__PURE__ */ __name(function moveToNextCell2() { + col++; + if (col >= cols) { + col = 0; + row++; + } + }, "moveToNextCell"); + var id2manPos = {}; + for (var _i = 0; _i < nodes5.length; _i++) { + var _node = nodes5[_i]; + var rcPos = options2.position(_node); + if (rcPos && (rcPos.row !== void 0 || rcPos.col !== void 0)) { + var _pos = { + row: rcPos.row, + col: rcPos.col + }; + if (_pos.col === void 0) { + _pos.col = 0; + while (used(_pos.row, _pos.col)) { + _pos.col++; + } + } else if (_pos.row === void 0) { + _pos.row = 0; + while (used(_pos.row, _pos.col)) { + _pos.row++; + } + } + id2manPos[_node.id()] = _pos; + use(_pos.row, _pos.col); + } + } + var getPos = /* @__PURE__ */ __name(function getPos2(element3, i3) { + var x5, y6; + if (element3.locked() || element3.isParent()) { + return false; + } + var rcPos2 = id2manPos[element3.id()]; + if (rcPos2) { + x5 = rcPos2.col * cellWidth + cellWidth / 2 + bb.x1; + y6 = rcPos2.row * cellHeight + cellHeight / 2 + bb.y1; + } else { + while (used(row, col)) { + moveToNextCell(); + } + x5 = col * cellWidth + cellWidth / 2 + bb.x1; + y6 = row * cellHeight + cellHeight / 2 + bb.y1; + use(row, col); + moveToNextCell(); + } + return { + x: x5, + y: y6 + }; + }, "getPos"); + nodes5.layoutPositions(this, options2, getPos); } + return this; }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/lexer.js - function isTokenTypeArray(tokenVocabulary) { - return Array.isArray(tokenVocabulary) && (tokenVocabulary.length === 0 || "name" in tokenVocabulary[0]); - } - function isIMultiModeLexerDefinition(tokenVocabulary) { - return tokenVocabulary && "modes" in tokenVocabulary && "defaultMode" in tokenVocabulary; - } - function isTokenTypeDictionary(tokenVocabulary) { - return !isTokenTypeArray(tokenVocabulary) && !isIMultiModeLexerDefinition(tokenVocabulary); - } - var DefaultLexerErrorMessageProvider, DEFAULT_TOKENIZE_OPTIONS, DefaultLexer; - var init_lexer2 = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/lexer.js"() { - "use strict"; - init_api5(); - DefaultLexerErrorMessageProvider = class { - static { - __name(this, "DefaultLexerErrorMessageProvider"); - } - buildUnexpectedCharactersMessage(fullText, startOffset, length2, line2, column2) { - return defaultLexerErrorProvider.buildUnexpectedCharactersMessage(fullText, startOffset, length2, line2, column2); - } - buildUnableToPopLexerModeMessage(token2) { - return defaultLexerErrorProvider.buildUnableToPopLexerModeMessage(token2); - } + defaults$2 = { + ready: /* @__PURE__ */ __name(function ready3() { + }, "ready"), + // on layoutready + stop: /* @__PURE__ */ __name(function stop4() { + }, "stop") + // on layoutstop }; - DEFAULT_TOKENIZE_OPTIONS = { mode: "full" }; - DefaultLexer = class { - static { - __name(this, "DefaultLexer"); - } - constructor(services) { - this.errorMessageProvider = services.parser.LexerErrorMessageProvider; - this.tokenBuilder = services.parser.TokenBuilder; - const tokens2 = this.tokenBuilder.buildTokens(services.Grammar, { - caseInsensitive: services.LanguageMetaData.caseInsensitive - }); - this.tokenTypes = this.toTokenTypeDictionary(tokens2); - const lexerTokens = isTokenTypeDictionary(tokens2) ? Object.values(tokens2) : tokens2; - const production = services.LanguageMetaData.mode === "production"; - this.chevrotainLexer = new Lexer2(lexerTokens, { - positionTracking: "full", - skipValidations: production, - errorMessageProvider: this.errorMessageProvider - }); - } - get definition() { - return this.tokenTypes; - } - tokenize(text4, _options = DEFAULT_TOKENIZE_OPTIONS) { - var _a, _b, _c; - const chevrotainResult = this.chevrotainLexer.tokenize(text4); + __name(NullLayout, "NullLayout"); + NullLayout.prototype.run = function() { + var options2 = this.options; + var eles = options2.eles; + var layout6 = this; + options2.cy; + layout6.emit("layoutstart"); + eles.nodes().positions(function() { return { - tokens: chevrotainResult.tokens, - errors: chevrotainResult.errors, - hidden: (_a = chevrotainResult.groups.hidden) !== null && _a !== void 0 ? _a : [], - report: (_c = (_b = this.tokenBuilder).flushLexingReport) === null || _c === void 0 ? void 0 : _c.call(_b, text4) + x: 0, + y: 0 }; - } - toTokenTypeDictionary(buildTokens) { - if (isTokenTypeDictionary(buildTokens)) - return buildTokens; - const tokens2 = isIMultiModeLexerDefinition(buildTokens) ? Object.values(buildTokens.modes).flat() : buildTokens; - const res = {}; - tokens2.forEach((token2) => res[token2.name] = token2); - return res; - } + }); + layout6.one("layoutready", options2.ready); + layout6.emit("layoutready"); + layout6.one("layoutstop", options2.stop); + layout6.emit("layoutstop"); + return this; }; - __name(isTokenTypeArray, "isTokenTypeArray"); - __name(isIMultiModeLexerDefinition, "isIMultiModeLexerDefinition"); - __name(isTokenTypeDictionary, "isTokenTypeDictionary"); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/jsdoc.js - function parseJSDoc(node2, start3, options3) { - let opts; - let position5; - if (typeof node2 === "string") { - position5 = start3; - opts = options3; - } else { - position5 = node2.range.start; - opts = start3; - } - if (!position5) { - position5 = Position.create(0, 0); - } - const lines = getLines(node2); - const normalizedOptions = normalizeOptions(opts); - const tokens2 = tokenize({ - lines, - position: position5, - options: normalizedOptions - }); - return parseJSDocComment({ - index: 0, - tokens: tokens2, - position: position5 - }); - } - function isJSDoc(node2, options3) { - const normalizedOptions = normalizeOptions(options3); - const lines = getLines(node2); - if (lines.length === 0) { - return false; - } - const first3 = lines[0]; - const last3 = lines[lines.length - 1]; - const firstRegex = normalizedOptions.start; - const lastRegex = normalizedOptions.end; - return Boolean(firstRegex === null || firstRegex === void 0 ? void 0 : firstRegex.exec(first3)) && Boolean(lastRegex === null || lastRegex === void 0 ? void 0 : lastRegex.exec(last3)); - } - function getLines(node2) { - let content = ""; - if (typeof node2 === "string") { - content = node2; - } else { - content = node2.text; - } - const lines = content.split(NEWLINE_REGEXP); - return lines; - } - function tokenize(context) { - var _a, _b, _c; - const tokens2 = []; - let currentLine = context.position.line; - let currentCharacter = context.position.character; - for (let i2 = 0; i2 < context.lines.length; i2++) { - const first3 = i2 === 0; - const last3 = i2 === context.lines.length - 1; - let line2 = context.lines[i2]; - let index = 0; - if (first3 && context.options.start) { - const match2 = (_a = context.options.start) === null || _a === void 0 ? void 0 : _a.exec(line2); - if (match2) { - index = match2.index + match2[0].length; - } - } else { - const match2 = (_b = context.options.line) === null || _b === void 0 ? void 0 : _b.exec(line2); - if (match2) { - index = match2.index + match2[0].length; - } - } - if (last3) { - const match2 = (_c = context.options.end) === null || _c === void 0 ? void 0 : _c.exec(line2); - if (match2) { - line2 = line2.substring(0, match2.index); - } - } - line2 = line2.substring(0, lastCharacter(line2)); - const whitespaceEnd = skipWhitespace(line2, index); - if (whitespaceEnd >= line2.length) { - if (tokens2.length > 0) { - const position5 = Position.create(currentLine, currentCharacter); - tokens2.push({ - type: "break", - content: "", - range: Range.create(position5, position5) - }); - } - } else { - tagRegex.lastIndex = index; - const tagMatch = tagRegex.exec(line2); - if (tagMatch) { - const fullMatch = tagMatch[0]; - const value2 = tagMatch[1]; - const start3 = Position.create(currentLine, currentCharacter + index); - const end2 = Position.create(currentLine, currentCharacter + index + fullMatch.length); - tokens2.push({ - type: "tag", - content: value2, - range: Range.create(start3, end2) - }); - index += fullMatch.length; - index = skipWhitespace(line2, index); - } - if (index < line2.length) { - const rest = line2.substring(index); - const inlineTagMatches = Array.from(rest.matchAll(inlineTagRegex)); - tokens2.push(...buildInlineTokens(inlineTagMatches, rest, currentLine, currentCharacter + index)); - } - } - currentLine++; - currentCharacter = 0; - } - if (tokens2.length > 0 && tokens2[tokens2.length - 1].type === "break") { - return tokens2.slice(0, -1); - } - return tokens2; - } - function buildInlineTokens(tags2, line2, lineIndex, characterIndex) { - const tokens2 = []; - if (tags2.length === 0) { - const start3 = Position.create(lineIndex, characterIndex); - const end2 = Position.create(lineIndex, characterIndex + line2.length); - tokens2.push({ - type: "text", - content: line2, - range: Range.create(start3, end2) - }); - } else { - let lastIndex = 0; - for (const match2 of tags2) { - const matchIndex = match2.index; - const startContent = line2.substring(lastIndex, matchIndex); - if (startContent.length > 0) { - tokens2.push({ - type: "text", - content: line2.substring(lastIndex, matchIndex), - range: Range.create(Position.create(lineIndex, lastIndex + characterIndex), Position.create(lineIndex, matchIndex + characterIndex)) - }); + NullLayout.prototype.stop = function() { + return this; + }; + defaults$1 = { + positions: void 0, + // map of (node id) => (position obj); or function(node){ return somPos; } + zoom: void 0, + // the zoom level to set (prob want fit = false if set) + pan: void 0, + // the pan level to set (prob want fit = false if set) + fit: true, + // whether to fit to viewport + padding: 30, + // padding on fit + spacingFactor: void 0, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled + animateFilter: /* @__PURE__ */ __name(function animateFilter6(node2, i2) { + return true; + }, "animateFilter"), + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: /* @__PURE__ */ __name(function transform6(node2, position5) { + return position5; + }, "transform") + // transform a given node position. Useful for changing flow direction in discrete layouts + }; + __name(PresetLayout, "PresetLayout"); + PresetLayout.prototype.run = function() { + var options2 = this.options; + var eles = options2.eles; + var nodes5 = eles.nodes(); + var posIsFn = fn$6(options2.positions); + function getPosition(node2) { + if (options2.positions == null) { + return copyPosition(node2.position()); + } + if (posIsFn) { + return options2.positions(node2); + } + var pos = options2.positions[node2._private.data.id]; + if (pos == null) { + return null; + } + return pos; } - let offset = startContent.length + 1; - const tagName = match2[1]; - tokens2.push({ - type: "inline-tag", - content: tagName, - range: Range.create(Position.create(lineIndex, lastIndex + offset + characterIndex), Position.create(lineIndex, lastIndex + offset + tagName.length + characterIndex)) + __name(getPosition, "getPosition"); + nodes5.layoutPositions(this, options2, function(node2, i2) { + var position5 = getPosition(node2); + if (node2.locked() || position5 == null) { + return false; + } + return position5; }); - offset += tagName.length; - if (match2.length === 4) { - offset += match2[2].length; - const value2 = match2[3]; - tokens2.push({ - type: "text", - content: value2, - range: Range.create(Position.create(lineIndex, lastIndex + offset + characterIndex), Position.create(lineIndex, lastIndex + offset + value2.length + characterIndex)) - }); - } else { - tokens2.push({ - type: "text", - content: "", - range: Range.create(Position.create(lineIndex, lastIndex + offset + characterIndex), Position.create(lineIndex, lastIndex + offset + characterIndex)) - }); - } - lastIndex = matchIndex + match2[0].length; - } - const endContent = line2.substring(lastIndex); - if (endContent.length > 0) { - tokens2.push({ - type: "text", - content: endContent, - range: Range.create(Position.create(lineIndex, lastIndex + characterIndex), Position.create(lineIndex, lastIndex + characterIndex + endContent.length)) + return this; + }; + defaults3 = { + fit: true, + // whether to fit to viewport + padding: 30, + // fit padding + boundingBox: void 0, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled + animateFilter: /* @__PURE__ */ __name(function animateFilter7(node2, i2) { + return true; + }, "animateFilter"), + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: /* @__PURE__ */ __name(function transform7(node2, position5) { + return position5; + }, "transform") + // transform a given node position. Useful for changing flow direction in discrete layouts + }; + __name(RandomLayout, "RandomLayout"); + RandomLayout.prototype.run = function() { + var options2 = this.options; + var cy = options2.cy; + var eles = options2.eles; + var bb = makeBoundingBox(options2.boundingBox ? options2.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() }); - } - } - return tokens2; - } - function skipWhitespace(line2, index) { - const match2 = line2.substring(index).match(nonWhitespaceRegex); - if (match2) { - return index + match2.index; - } else { - return line2.length; - } - } - function lastCharacter(line2) { - const match2 = line2.match(whitespaceEndRegex); - if (match2 && typeof match2.index === "number") { - return match2.index; - } - return void 0; - } - function parseJSDocComment(context) { - var _a, _b, _c, _d; - const startPosition = Position.create(context.position.line, context.position.character); - if (context.tokens.length === 0) { - return new JSDocCommentImpl([], Range.create(startPosition, startPosition)); - } - const elements3 = []; - while (context.index < context.tokens.length) { - const element3 = parseJSDocElement(context, elements3[elements3.length - 1]); - if (element3) { - elements3.push(element3); - } - } - const start3 = (_b = (_a = elements3[0]) === null || _a === void 0 ? void 0 : _a.range.start) !== null && _b !== void 0 ? _b : startPosition; - const end2 = (_d = (_c = elements3[elements3.length - 1]) === null || _c === void 0 ? void 0 : _c.range.end) !== null && _d !== void 0 ? _d : startPosition; - return new JSDocCommentImpl(elements3, Range.create(start3, end2)); - } - function parseJSDocElement(context, last3) { - const next3 = context.tokens[context.index]; - if (next3.type === "tag") { - return parseJSDocTag(context, false); - } else if (next3.type === "text" || next3.type === "inline-tag") { - return parseJSDocText(context); - } else { - appendEmptyLine(next3, last3); - context.index++; - return void 0; - } - } - function appendEmptyLine(token2, element3) { - if (element3) { - const line2 = new JSDocLineImpl("", token2.range); - if ("inlines" in element3) { - element3.inlines.push(line2); - } else { - element3.content.inlines.push(line2); - } - } - } - function parseJSDocText(context) { - let token2 = context.tokens[context.index]; - const firstToken = token2; - let lastToken = token2; - const lines = []; - while (token2 && token2.type !== "break" && token2.type !== "tag") { - lines.push(parseJSDocInline(context)); - lastToken = token2; - token2 = context.tokens[context.index]; - } - return new JSDocTextImpl(lines, Range.create(firstToken.range.start, lastToken.range.end)); - } - function parseJSDocInline(context) { - const token2 = context.tokens[context.index]; - if (token2.type === "inline-tag") { - return parseJSDocTag(context, true); - } else { - return parseJSDocLine(context); - } - } - function parseJSDocTag(context, inline2) { - const tagToken = context.tokens[context.index++]; - const name = tagToken.content.substring(1); - const nextToken = context.tokens[context.index]; - if ((nextToken === null || nextToken === void 0 ? void 0 : nextToken.type) === "text") { - if (inline2) { - const docLine = parseJSDocLine(context); - return new JSDocTagImpl(name, new JSDocTextImpl([docLine], docLine.range), inline2, Range.create(tagToken.range.start, docLine.range.end)); - } else { - const textDoc = parseJSDocText(context); - return new JSDocTagImpl(name, textDoc, inline2, Range.create(tagToken.range.start, textDoc.range.end)); - } - } else { - const range3 = tagToken.range; - return new JSDocTagImpl(name, new JSDocTextImpl([], range3), inline2, range3); - } - } - function parseJSDocLine(context) { - const token2 = context.tokens[context.index++]; - return new JSDocLineImpl(token2.content, token2.range); - } - function normalizeOptions(options3) { - if (!options3) { - return normalizeOptions({ - start: "/**", - end: "*/", - line: "*" - }); - } - const { start: start3, end: end2, line: line2 } = options3; - return { - start: normalizeOption(start3, true), - end: normalizeOption(end2, false), - line: normalizeOption(line2, true) - }; - } - function normalizeOption(option2, start3) { - if (typeof option2 === "string" || typeof option2 === "object") { - const escaped = typeof option2 === "string" ? escapeRegExp(option2) : option2.source; - if (start3) { - return new RegExp(`^\\s*${escaped}`); - } else { - return new RegExp(`\\s*${escaped}\\s*$`); - } - } else { - return option2; - } - } - function renderInlineTag(tag2, content, options3) { - var _a, _b; - if (tag2 === "linkplain" || tag2 === "linkcode" || tag2 === "link") { - const index = content.indexOf(" "); - let display = content; - if (index > 0) { - const displayStart = skipWhitespace(content, index); - display = content.substring(displayStart); - content = content.substring(0, index); - } - if (tag2 === "linkcode" || tag2 === "link" && options3.link === "code") { - display = `\`${display}\``; - } - const renderedLink = (_b = (_a = options3.renderLink) === null || _a === void 0 ? void 0 : _a.call(options3, content, display)) !== null && _b !== void 0 ? _b : renderLinkDefault(content, display); - return renderedLink; - } - return void 0; - } - function renderLinkDefault(content, display) { - try { - URI2.parse(content, true); - return `[${display}](${content})`; - } catch (_a) { - return content; - } - } - function fillNewlines(text4) { - if (text4.endsWith("\n")) { - return "\n"; - } else { - return "\n\n"; - } - } - var tagRegex, inlineTagRegex, nonWhitespaceRegex, whitespaceEndRegex, JSDocCommentImpl, JSDocTagImpl, JSDocTextImpl, JSDocLineImpl; - var init_jsdoc = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/jsdoc.js"() { - "use strict"; - init_main(); - init_regexp_utils(); - init_uri_utils(); - __name(parseJSDoc, "parseJSDoc"); - __name(isJSDoc, "isJSDoc"); - __name(getLines, "getLines"); - tagRegex = /\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy; - inlineTagRegex = /\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu; - __name(tokenize, "tokenize"); - __name(buildInlineTokens, "buildInlineTokens"); - nonWhitespaceRegex = /\S/; - whitespaceEndRegex = /\s*$/; - __name(skipWhitespace, "skipWhitespace"); - __name(lastCharacter, "lastCharacter"); - __name(parseJSDocComment, "parseJSDocComment"); - __name(parseJSDocElement, "parseJSDocElement"); - __name(appendEmptyLine, "appendEmptyLine"); - __name(parseJSDocText, "parseJSDocText"); - __name(parseJSDocInline, "parseJSDocInline"); - __name(parseJSDocTag, "parseJSDocTag"); - __name(parseJSDocLine, "parseJSDocLine"); - __name(normalizeOptions, "normalizeOptions"); - __name(normalizeOption, "normalizeOption"); - JSDocCommentImpl = class { - static { - __name(this, "JSDocCommentImpl"); - } - constructor(elements3, range3) { - this.elements = elements3; - this.range = range3; - } - getTag(name) { - return this.getAllTags().find((e3) => e3.name === name); - } - getTags(name) { - return this.getAllTags().filter((e3) => e3.name === name); + var getPos = /* @__PURE__ */ __name(function getPos2(node2, i2) { + return { + x: bb.x1 + Math.round(Math.random() * bb.w), + y: bb.y1 + Math.round(Math.random() * bb.h) + }; + }, "getPos"); + eles.nodes().layoutPositions(this, options2, getPos); + return this; + }; + layout4 = [{ + name: "breadthfirst", + impl: BreadthFirstLayout + }, { + name: "circle", + impl: CircleLayout + }, { + name: "concentric", + impl: ConcentricLayout + }, { + name: "cose", + impl: CoseLayout + }, { + name: "grid", + impl: GridLayout + }, { + name: "null", + impl: NullLayout + }, { + name: "preset", + impl: PresetLayout + }, { + name: "random", + impl: RandomLayout + }]; + __name(NullRenderer, "NullRenderer"); + noop4 = /* @__PURE__ */ __name(function noop5() { + }, "noop"); + throwImgErr = /* @__PURE__ */ __name(function throwImgErr2() { + throw new Error("A headless instance can not render images"); + }, "throwImgErr"); + NullRenderer.prototype = { + recalculateRenderedStyle: noop4, + notify: /* @__PURE__ */ __name(function notify2() { + this.notifications++; + }, "notify"), + init: noop4, + isHeadless: /* @__PURE__ */ __name(function isHeadless() { + return true; + }, "isHeadless"), + png: throwImgErr, + jpg: throwImgErr + }; + BRp$f = {}; + BRp$f.arrowShapeWidth = 0.3; + BRp$f.registerArrowShapes = function() { + var arrowShapes = this.arrowShapes = {}; + var renderer10 = this; + var bbCollide = /* @__PURE__ */ __name(function bbCollide2(x5, y6, size4, angle2, translation, edgeWidth, padding2) { + var x1 = translation.x - size4 / 2 - padding2; + var x22 = translation.x + size4 / 2 + padding2; + var y1 = translation.y - size4 / 2 - padding2; + var y22 = translation.y + size4 / 2 + padding2; + var inside = x1 <= x5 && x5 <= x22 && y1 <= y6 && y6 <= y22; + return inside; + }, "bbCollide"); + var transform8 = /* @__PURE__ */ __name(function transform9(x5, y6, size4, angle2, translation) { + var xRotated = x5 * Math.cos(angle2) - y6 * Math.sin(angle2); + var yRotated = x5 * Math.sin(angle2) + y6 * Math.cos(angle2); + var xScaled = xRotated * size4; + var yScaled = yRotated * size4; + var xTranslated = xScaled + translation.x; + var yTranslated = yScaled + translation.y; + return { + x: xTranslated, + y: yTranslated + }; + }, "transform"); + var transformPoints3 = /* @__PURE__ */ __name(function transformPoints4(pts2, size4, angle2, translation) { + var retPts = []; + for (var i2 = 0; i2 < pts2.length; i2 += 2) { + var x5 = pts2[i2]; + var y6 = pts2[i2 + 1]; + retPts.push(transform8(x5, y6, size4, angle2, translation)); + } + return retPts; + }, "transformPoints"); + var pointsToArr = /* @__PURE__ */ __name(function pointsToArr2(pts2) { + var ret = []; + for (var i2 = 0; i2 < pts2.length; i2++) { + var p3 = pts2[i2]; + ret.push(p3.x, p3.y); + } + return ret; + }, "pointsToArr"); + var standardGap = /* @__PURE__ */ __name(function standardGap2(edge) { + return edge.pstyle("width").pfValue * edge.pstyle("arrow-scale").pfValue * 2; + }, "standardGap"); + var defineArrowShape = /* @__PURE__ */ __name(function defineArrowShape2(name, defn) { + if (string(defn)) { + defn = arrowShapes[defn]; + } + arrowShapes[name] = extend4({ + name, + points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3], + collide: /* @__PURE__ */ __name(function collide(x5, y6, size4, angle2, translation, padding2) { + var points = pointsToArr(transformPoints3(this.points, size4 + 2 * padding2, angle2, translation)); + var inside = pointInsidePolygonPoints(x5, y6, points); + return inside; + }, "collide"), + roughCollide: bbCollide, + draw: /* @__PURE__ */ __name(function draw26(context, size4, angle2, translation) { + var points = transformPoints3(this.points, size4, angle2, translation); + renderer10.arrowShapeImpl("polygon")(context, points); + }, "draw"), + spacing: /* @__PURE__ */ __name(function spacing2(edge) { + return 0; + }, "spacing"), + gap: standardGap + }, defn); + }, "defineArrowShape"); + defineArrowShape("none", { + collide: falsify, + roughCollide: falsify, + draw: noop$1, + spacing: zeroify, + gap: zeroify + }); + defineArrowShape("triangle", { + points: [-0.15, -0.3, 0, 0, 0.15, -0.3] + }); + defineArrowShape("arrow", "triangle"); + defineArrowShape("triangle-backcurve", { + points: arrowShapes["triangle"].points, + controlPoint: [0, -0.15], + roughCollide: bbCollide, + draw: /* @__PURE__ */ __name(function draw26(context, size4, angle2, translation, edgeWidth) { + var ptsTrans = transformPoints3(this.points, size4, angle2, translation); + var ctrlPt = this.controlPoint; + var ctrlPtTrans = transform8(ctrlPt[0], ctrlPt[1], size4, angle2, translation); + renderer10.arrowShapeImpl(this.name)(context, ptsTrans, ctrlPtTrans); + }, "draw"), + gap: /* @__PURE__ */ __name(function gap(edge) { + return standardGap(edge) * 0.8; + }, "gap") + }); + defineArrowShape("triangle-tee", { + points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], + pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4], + collide: /* @__PURE__ */ __name(function collide(x5, y6, size4, angle2, translation, edgeWidth, padding2) { + var triPts = pointsToArr(transformPoints3(this.points, size4 + 2 * padding2, angle2, translation)); + var teePts = pointsToArr(transformPoints3(this.pointsTee, size4 + 2 * padding2, angle2, translation)); + var inside = pointInsidePolygonPoints(x5, y6, triPts) || pointInsidePolygonPoints(x5, y6, teePts); + return inside; + }, "collide"), + draw: /* @__PURE__ */ __name(function draw26(context, size4, angle2, translation, edgeWidth) { + var triPts = transformPoints3(this.points, size4, angle2, translation); + var teePts = transformPoints3(this.pointsTee, size4, angle2, translation); + renderer10.arrowShapeImpl(this.name)(context, triPts, teePts); + }, "draw") + }); + defineArrowShape("circle-triangle", { + radius: 0.15, + pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15], + collide: /* @__PURE__ */ __name(function collide(x5, y6, size4, angle2, translation, edgeWidth, padding2) { + var t4 = translation; + var circleInside = Math.pow(t4.x - x5, 2) + Math.pow(t4.y - y6, 2) <= Math.pow((size4 + 2 * padding2) * this.radius, 2); + var triPts = pointsToArr(transformPoints3(this.points, size4 + 2 * padding2, angle2, translation)); + return pointInsidePolygonPoints(x5, y6, triPts) || circleInside; + }, "collide"), + draw: /* @__PURE__ */ __name(function draw26(context, size4, angle2, translation, edgeWidth) { + var triPts = transformPoints3(this.pointsTr, size4, angle2, translation); + renderer10.arrowShapeImpl(this.name)(context, triPts, translation.x, translation.y, this.radius * size4); + }, "draw"), + spacing: /* @__PURE__ */ __name(function spacing2(edge) { + return renderer10.getArrowWidth(edge.pstyle("width").pfValue, edge.pstyle("arrow-scale").value) * this.radius; + }, "spacing") + }); + defineArrowShape("triangle-cross", { + points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], + baseCrossLinePts: [ + -0.15, + -0.4, + // first half of the rectangle + -0.15, + -0.4, + 0.15, + -0.4, + // second half of the rectangle + 0.15, + -0.4 + ], + crossLinePts: /* @__PURE__ */ __name(function crossLinePts(size4, edgeWidth) { + var p3 = this.baseCrossLinePts.slice(); + var shiftFactor = edgeWidth / size4; + var y0 = 3; + var y1 = 5; + p3[y0] = p3[y0] - shiftFactor; + p3[y1] = p3[y1] - shiftFactor; + return p3; + }, "crossLinePts"), + collide: /* @__PURE__ */ __name(function collide(x5, y6, size4, angle2, translation, edgeWidth, padding2) { + var triPts = pointsToArr(transformPoints3(this.points, size4 + 2 * padding2, angle2, translation)); + var teePts = pointsToArr(transformPoints3(this.crossLinePts(size4, edgeWidth), size4 + 2 * padding2, angle2, translation)); + var inside = pointInsidePolygonPoints(x5, y6, triPts) || pointInsidePolygonPoints(x5, y6, teePts); + return inside; + }, "collide"), + draw: /* @__PURE__ */ __name(function draw26(context, size4, angle2, translation, edgeWidth) { + var triPts = transformPoints3(this.points, size4, angle2, translation); + var crossLinePts = transformPoints3(this.crossLinePts(size4, edgeWidth), size4, angle2, translation); + renderer10.arrowShapeImpl(this.name)(context, triPts, crossLinePts); + }, "draw") + }); + defineArrowShape("vee", { + points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15], + gap: /* @__PURE__ */ __name(function gap(edge) { + return standardGap(edge) * 0.525; + }, "gap") + }); + defineArrowShape("circle", { + radius: 0.15, + collide: /* @__PURE__ */ __name(function collide(x5, y6, size4, angle2, translation, edgeWidth, padding2) { + var t4 = translation; + var inside = Math.pow(t4.x - x5, 2) + Math.pow(t4.y - y6, 2) <= Math.pow((size4 + 2 * padding2) * this.radius, 2); + return inside; + }, "collide"), + draw: /* @__PURE__ */ __name(function draw26(context, size4, angle2, translation, edgeWidth) { + renderer10.arrowShapeImpl(this.name)(context, translation.x, translation.y, this.radius * size4); + }, "draw"), + spacing: /* @__PURE__ */ __name(function spacing2(edge) { + return renderer10.getArrowWidth(edge.pstyle("width").pfValue, edge.pstyle("arrow-scale").value) * this.radius; + }, "spacing") + }); + defineArrowShape("tee", { + points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0], + spacing: /* @__PURE__ */ __name(function spacing2(edge) { + return 1; + }, "spacing"), + gap: /* @__PURE__ */ __name(function gap(edge) { + return 1; + }, "gap") + }); + defineArrowShape("square", { + points: [-0.15, 0, 0.15, 0, 0.15, -0.3, -0.15, -0.3] + }); + defineArrowShape("diamond", { + points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0], + gap: /* @__PURE__ */ __name(function gap(edge) { + return edge.pstyle("width").pfValue * edge.pstyle("arrow-scale").value; + }, "gap") + }); + defineArrowShape("chevron", { + points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15], + gap: /* @__PURE__ */ __name(function gap(edge) { + return 0.95 * edge.pstyle("width").pfValue * edge.pstyle("arrow-scale").value; + }, "gap") + }); + }; + BRp$e = {}; + BRp$e.projectIntoViewport = function(clientX, clientY) { + var cy = this.cy; + var offsets = this.findContainerClientCoords(); + var offsetLeft = offsets[0]; + var offsetTop = offsets[1]; + var scale2 = offsets[4]; + var pan2 = cy.pan(); + var zoom2 = cy.zoom(); + var x5 = ((clientX - offsetLeft) / scale2 - pan2.x) / zoom2; + var y6 = ((clientY - offsetTop) / scale2 - pan2.y) / zoom2; + return [x5, y6]; + }; + BRp$e.findContainerClientCoords = function() { + if (this.containerBB) { + return this.containerBB; } - getAllTags() { - return this.elements.filter((e3) => "name" in e3); + var container2 = this.container; + var rect3 = container2.getBoundingClientRect(); + var style3 = this.cy.window().getComputedStyle(container2); + var styleValue2 = /* @__PURE__ */ __name(function styleValue3(name) { + return parseFloat(style3.getPropertyValue(name)); + }, "styleValue"); + var padding2 = { + left: styleValue2("padding-left"), + right: styleValue2("padding-right"), + top: styleValue2("padding-top"), + bottom: styleValue2("padding-bottom") + }; + var border = { + left: styleValue2("border-left-width"), + right: styleValue2("border-right-width"), + top: styleValue2("border-top-width"), + bottom: styleValue2("border-bottom-width") + }; + var clientWidth = container2.clientWidth; + var clientHeight = container2.clientHeight; + var paddingHor = padding2.left + padding2.right; + var paddingVer = padding2.top + padding2.bottom; + var borderHor = border.left + border.right; + var scale2 = rect3.width / (clientWidth + borderHor); + var unscaledW = clientWidth - paddingHor; + var unscaledH = clientHeight - paddingVer; + var left3 = rect3.left + padding2.left + border.left; + var top2 = rect3.top + padding2.top + border.top; + return this.containerBB = [left3, top2, unscaledW, unscaledH, scale2]; + }; + BRp$e.invalidateContainerClientCoordsCache = function() { + this.containerBB = null; + }; + BRp$e.findNearestElement = function(x5, y6, interactiveElementsOnly, isTouch) { + return this.findNearestElements(x5, y6, interactiveElementsOnly, isTouch)[0]; + }; + BRp$e.findNearestElements = function(x5, y6, interactiveElementsOnly, isTouch) { + var self2 = this; + var r2 = this; + var eles = r2.getCachedZSortedEles(); + var near = []; + var zoom2 = r2.cy.zoom(); + var hasCompounds = r2.cy.hasCompoundNodes(); + var edgeThreshold = (isTouch ? 24 : 8) / zoom2; + var nodeThreshold = (isTouch ? 8 : 2) / zoom2; + var labelThreshold = (isTouch ? 8 : 2) / zoom2; + var minSqDist = Infinity; + var nearEdge; + var nearNode; + if (interactiveElementsOnly) { + eles = eles.interactive; } - toString() { - let value2 = ""; - for (const element3 of this.elements) { - if (value2.length === 0) { - value2 = element3.toString(); + function addEle(ele2, sqDist) { + if (ele2.isNode()) { + if (nearNode) { + return; } else { - const text4 = element3.toString(); - value2 += fillNewlines(value2) + text4; + nearNode = ele2; + near.push(ele2); } } - return value2.trim(); - } - toMarkdown(options3) { - let value2 = ""; - for (const element3 of this.elements) { - if (value2.length === 0) { - value2 = element3.toMarkdown(options3); + if (ele2.isEdge() && (sqDist == null || sqDist < minSqDist)) { + if (nearEdge) { + if (nearEdge.pstyle("z-compound-depth").value === ele2.pstyle("z-compound-depth").value && nearEdge.pstyle("z-compound-depth").value === ele2.pstyle("z-compound-depth").value) { + for (var i3 = 0; i3 < near.length; i3++) { + if (near[i3].isEdge()) { + near[i3] = ele2; + nearEdge = ele2; + minSqDist = sqDist != null ? sqDist : minSqDist; + break; + } + } + } } else { - const text4 = element3.toMarkdown(options3); - value2 += fillNewlines(value2) + text4; + near.push(ele2); + nearEdge = ele2; + minSqDist = sqDist != null ? sqDist : minSqDist; } } - return value2.trim(); - } - }; - JSDocTagImpl = class { - static { - __name(this, "JSDocTagImpl"); } - constructor(name, content, inline2, range3) { - this.name = name; - this.content = content; - this.inline = inline2; - this.range = range3; + __name(addEle, "addEle"); + function checkNode(node2) { + var width3 = node2.outerWidth() + 2 * nodeThreshold; + var height2 = node2.outerHeight() + 2 * nodeThreshold; + var hw = width3 / 2; + var hh = height2 / 2; + var pos = node2.position(); + var cornerRadius = node2.pstyle("corner-radius").value === "auto" ? "auto" : node2.pstyle("corner-radius").pfValue; + var rs = node2._private.rscratch; + if (pos.x - hw <= x5 && x5 <= pos.x + hw && pos.y - hh <= y6 && y6 <= pos.y + hh) { + var shape = r2.nodeShapes[self2.getNodeShape(node2)]; + if (shape.checkPoint(x5, y6, 0, width3, height2, pos.x, pos.y, cornerRadius, rs)) { + addEle(node2, 0); + return true; + } + } } - toString() { - let text4 = `@${this.name}`; - const content = this.content.toString(); - if (this.content.inlines.length === 1) { - text4 = `${text4} ${content}`; - } else if (this.content.inlines.length > 1) { - text4 = `${text4} -${content}`; + __name(checkNode, "checkNode"); + function checkEdge(edge) { + var _p = edge._private; + var rs = _p.rscratch; + var styleWidth = edge.pstyle("width").pfValue; + var scale2 = edge.pstyle("arrow-scale").value; + var width3 = styleWidth / 2 + edgeThreshold; + var widthSq = width3 * width3; + var width22 = width3 * 2; + var src = _p.source; + var tgt = _p.target; + var sqDist; + if (rs.edgeType === "segments" || rs.edgeType === "straight" || rs.edgeType === "haystack") { + var pts2 = rs.allpts; + for (var i3 = 0; i3 + 3 < pts2.length; i3 += 2) { + if (inLineVicinity(x5, y6, pts2[i3], pts2[i3 + 1], pts2[i3 + 2], pts2[i3 + 3], width22) && widthSq > (sqDist = sqdistToFiniteLine(x5, y6, pts2[i3], pts2[i3 + 1], pts2[i3 + 2], pts2[i3 + 3]))) { + addEle(edge, sqDist); + return true; + } + } + } else if (rs.edgeType === "bezier" || rs.edgeType === "multibezier" || rs.edgeType === "self" || rs.edgeType === "compound") { + var pts2 = rs.allpts; + for (var i3 = 0; i3 + 5 < rs.allpts.length; i3 += 4) { + if (inBezierVicinity(x5, y6, pts2[i3], pts2[i3 + 1], pts2[i3 + 2], pts2[i3 + 3], pts2[i3 + 4], pts2[i3 + 5], width22) && widthSq > (sqDist = sqdistToQuadraticBezier(x5, y6, pts2[i3], pts2[i3 + 1], pts2[i3 + 2], pts2[i3 + 3], pts2[i3 + 4], pts2[i3 + 5]))) { + addEle(edge, sqDist); + return true; + } + } } - if (this.inline) { - return `{${text4}}`; - } else { - return text4; + var src = src || _p.source; + var tgt = tgt || _p.target; + var arSize = self2.getArrowWidth(styleWidth, scale2); + var arrows = [{ + name: "source", + x: rs.arrowStartX, + y: rs.arrowStartY, + angle: rs.srcArrowAngle + }, { + name: "target", + x: rs.arrowEndX, + y: rs.arrowEndY, + angle: rs.tgtArrowAngle + }, { + name: "mid-source", + x: rs.midX, + y: rs.midY, + angle: rs.midsrcArrowAngle + }, { + name: "mid-target", + x: rs.midX, + y: rs.midY, + angle: rs.midtgtArrowAngle + }]; + for (var i3 = 0; i3 < arrows.length; i3++) { + var ar = arrows[i3]; + var shape = r2.arrowShapes[edge.pstyle(ar.name + "-arrow-shape").value]; + var edgeWidth = edge.pstyle("width").pfValue; + if (shape.roughCollide(x5, y6, arSize, ar.angle, { + x: ar.x, + y: ar.y + }, edgeWidth, edgeThreshold) && shape.collide(x5, y6, arSize, ar.angle, { + x: ar.x, + y: ar.y + }, edgeWidth, edgeThreshold)) { + addEle(edge); + return true; + } + } + if (hasCompounds && near.length > 0) { + checkNode(src); + checkNode(tgt); } } - toMarkdown(options3) { - var _a, _b; - return (_b = (_a = options3 === null || options3 === void 0 ? void 0 : options3.renderTag) === null || _a === void 0 ? void 0 : _a.call(options3, this)) !== null && _b !== void 0 ? _b : this.toMarkdownDefault(options3); + __name(checkEdge, "checkEdge"); + function preprop(obj, name, pre) { + return getPrefixedProperty(obj, name, pre); } - toMarkdownDefault(options3) { - const content = this.content.toMarkdown(options3); - if (this.inline) { - const rendered = renderInlineTag(this.name, content, options3 !== null && options3 !== void 0 ? options3 : {}); - if (typeof rendered === "string") { - return rendered; - } + __name(preprop, "preprop"); + function checkLabel(ele2, prefix) { + var _p = ele2._private; + var th = labelThreshold; + var prefixDash; + if (prefix) { + prefixDash = prefix + "-"; + } else { + prefixDash = ""; } - let marker = ""; - if ((options3 === null || options3 === void 0 ? void 0 : options3.tag) === "italic" || (options3 === null || options3 === void 0 ? void 0 : options3.tag) === void 0) { - marker = "*"; - } else if ((options3 === null || options3 === void 0 ? void 0 : options3.tag) === "bold") { - marker = "**"; - } else if ((options3 === null || options3 === void 0 ? void 0 : options3.tag) === "bold-italic") { - marker = "***"; + ele2.boundingBox(); + var bb = _p.labelBounds[prefix || "main"]; + var text4 = ele2.pstyle(prefixDash + "label").value; + var eventsEnabled = ele2.pstyle("text-events").strValue === "yes"; + if (!eventsEnabled || !text4) { + return; } - let text4 = `${marker}@${this.name}${marker}`; - if (this.content.inlines.length === 1) { - text4 = `${text4} \u2014 ${content}`; - } else if (this.content.inlines.length > 1) { - text4 = `${text4} -${content}`; + var lx = preprop(_p.rscratch, "labelX", prefix); + var ly = preprop(_p.rscratch, "labelY", prefix); + var theta = preprop(_p.rscratch, "labelAngle", prefix); + var ox = ele2.pstyle(prefixDash + "text-margin-x").pfValue; + var oy = ele2.pstyle(prefixDash + "text-margin-y").pfValue; + var lx1 = bb.x1 - th - ox; + var lx2 = bb.x2 + th - ox; + var ly1 = bb.y1 - th - oy; + var ly2 = bb.y2 + th - oy; + if (theta) { + var cos3 = Math.cos(theta); + var sin3 = Math.sin(theta); + var rotate2 = /* @__PURE__ */ __name(function rotate3(x6, y7) { + x6 = x6 - lx; + y7 = y7 - ly; + return { + x: x6 * cos3 - y7 * sin3 + lx, + y: x6 * sin3 + y7 * cos3 + ly + }; + }, "rotate"); + var px1y1 = rotate2(lx1, ly1); + var px1y2 = rotate2(lx1, ly2); + var px2y1 = rotate2(lx2, ly1); + var px2y2 = rotate2(lx2, ly2); + var points = [ + // with the margin added after the rotation is applied + px1y1.x + ox, + px1y1.y + oy, + px2y1.x + ox, + px2y1.y + oy, + px2y2.x + ox, + px2y2.y + oy, + px1y2.x + ox, + px1y2.y + oy + ]; + if (pointInsidePolygonPoints(x5, y6, points)) { + addEle(ele2); + return true; + } + } else { + if (inBoundingBox(bb, x5, y6)) { + addEle(ele2); + return true; + } } - if (this.inline) { - return `{${text4}}`; + } + __name(checkLabel, "checkLabel"); + for (var i2 = eles.length - 1; i2 >= 0; i2--) { + var ele = eles[i2]; + if (ele.isNode()) { + checkNode(ele) || checkLabel(ele); } else { - return text4; + checkEdge(ele) || checkLabel(ele) || checkLabel(ele, "source") || checkLabel(ele, "target"); } } + return near; }; - __name(renderInlineTag, "renderInlineTag"); - __name(renderLinkDefault, "renderLinkDefault"); - JSDocTextImpl = class { - static { - __name(this, "JSDocTextImpl"); + BRp$e.getAllInBox = function(x1, y1, x22, y22) { + var eles = this.getCachedZSortedEles().interactive; + var zoom2 = this.cy.zoom(); + var labelThreshold = 2 / zoom2; + var box = []; + var x1c = Math.min(x1, x22); + var x2c = Math.max(x1, x22); + var y1c = Math.min(y1, y22); + var y2c = Math.max(y1, y22); + x1 = x1c; + x22 = x2c; + y1 = y1c; + y22 = y2c; + var boxBb = makeBoundingBox({ + x1, + y1, + x2: x22, + y2: y22 + }); + var selectionBox = [{ + x: boxBb.x1, + y: boxBb.y1 + }, { + x: boxBb.x2, + y: boxBb.y1 + }, { + x: boxBb.x2, + y: boxBb.y2 + }, { + x: boxBb.x1, + y: boxBb.y2 + }]; + var boxEdges = [[selectionBox[0], selectionBox[1]], [selectionBox[1], selectionBox[2]], [selectionBox[2], selectionBox[3]], [selectionBox[3], selectionBox[0]]]; + function preprop(obj, name, pre) { + return getPrefixedProperty(obj, name, pre); } - constructor(lines, range3) { - this.inlines = lines; - this.range = range3; + __name(preprop, "preprop"); + function getRotatedLabelBox(ele2, prefix) { + var _p2 = ele2._private; + var th = labelThreshold; + var prefixDash = ""; + ele2.boundingBox(); + var bb = _p2.labelBounds["main"]; + if (!bb) { + return null; + } + var lx = preprop(_p2.rscratch, "labelX", prefix); + var ly = preprop(_p2.rscratch, "labelY", prefix); + var theta = preprop(_p2.rscratch, "labelAngle", prefix); + var ox = ele2.pstyle(prefixDash + "text-margin-x").pfValue; + var oy = ele2.pstyle(prefixDash + "text-margin-y").pfValue; + var lx1 = bb.x1 - th - ox; + var lx2 = bb.x2 + th - ox; + var ly1 = bb.y1 - th - oy; + var ly2 = bb.y2 + th - oy; + if (theta) { + var cos3 = Math.cos(theta); + var sin3 = Math.sin(theta); + var rotate2 = /* @__PURE__ */ __name(function rotate3(x5, y6) { + x5 = x5 - lx; + y6 = y6 - ly; + return { + x: x5 * cos3 - y6 * sin3 + lx, + y: x5 * sin3 + y6 * cos3 + ly + }; + }, "rotate"); + return [rotate2(lx1, ly1), rotate2(lx2, ly1), rotate2(lx2, ly2), rotate2(lx1, ly2)]; + } else { + return [{ + x: lx1, + y: ly1 + }, { + x: lx2, + y: ly1 + }, { + x: lx2, + y: ly2 + }, { + x: lx1, + y: ly2 + }]; + } } - toString() { - let text4 = ""; - for (let i2 = 0; i2 < this.inlines.length; i2++) { - const inline2 = this.inlines[i2]; - const next3 = this.inlines[i2 + 1]; - text4 += inline2.toString(); - if (next3 && next3.range.start.line > inline2.range.start.line) { - text4 += "\n"; - } + __name(getRotatedLabelBox, "getRotatedLabelBox"); + function doLinesIntersect(p1, p22, q1, q22) { + function ccw(a2, b4, c3) { + return (c3.y - a2.y) * (b4.x - a2.x) > (b4.y - a2.y) * (c3.x - a2.x); } - return text4; + __name(ccw, "ccw"); + return ccw(p1, q1, q22) !== ccw(p22, q1, q22) && ccw(p1, p22, q1) !== ccw(p1, p22, q22); } - toMarkdown(options3) { - let text4 = ""; - for (let i2 = 0; i2 < this.inlines.length; i2++) { - const inline2 = this.inlines[i2]; - const next3 = this.inlines[i2 + 1]; - text4 += inline2.toMarkdown(options3); - if (next3 && next3.range.start.line > inline2.range.start.line) { - text4 += "\n"; + __name(doLinesIntersect, "doLinesIntersect"); + for (var e3 = 0; e3 < eles.length; e3++) { + var ele = eles[e3]; + if (ele.isNode()) { + var node2 = ele; + var textEvents = node2.pstyle("text-events").strValue === "yes"; + var nodeBoxSelectMode = node2.pstyle("box-selection").strValue; + var labelBoxSelectEnabled = node2.pstyle("box-select-labels").strValue === "yes"; + if (nodeBoxSelectMode === "none") { + continue; + } + var includeLabels = (nodeBoxSelectMode === "overlap" || labelBoxSelectEnabled) && textEvents; + var nodeBb = node2.boundingBox({ + includeNodes: true, + includeEdges: false, + includeLabels + }); + if (nodeBoxSelectMode === "contain") { + var selected = false; + if (labelBoxSelectEnabled && textEvents) { + var rotatedLabelBox = getRotatedLabelBox(node2); + if (rotatedLabelBox && satPolygonIntersection(rotatedLabelBox, selectionBox)) { + box.push(node2); + selected = true; + } + } + if (!selected && boundingBoxInBoundingBox(boxBb, nodeBb)) { + box.push(node2); + } + } else if (nodeBoxSelectMode === "overlap") { + if (boundingBoxesIntersect(boxBb, nodeBb)) { + var nodeBodyBb = node2.boundingBox({ + includeNodes: true, + includeEdges: true, + includeLabels: false, + includeMainLabels: false, + includeSourceLabels: false, + includeTargetLabels: false + }); + var nodeBodyCorners = [{ + x: nodeBodyBb.x1, + y: nodeBodyBb.y1 + }, { + x: nodeBodyBb.x2, + y: nodeBodyBb.y1 + }, { + x: nodeBodyBb.x2, + y: nodeBodyBb.y2 + }, { + x: nodeBodyBb.x1, + y: nodeBodyBb.y2 + }]; + if (satPolygonIntersection(nodeBodyCorners, selectionBox)) { + box.push(node2); + } else { + var _rotatedLabelBox = getRotatedLabelBox(node2); + if (_rotatedLabelBox && satPolygonIntersection(_rotatedLabelBox, selectionBox)) { + box.push(node2); + } + } + } + } + } else { + var edge = ele; + var _p = edge._private; + var rs = _p.rscratch; + var edgeBoxSelectMode = edge.pstyle("box-selection").strValue; + if (edgeBoxSelectMode === "none") { + continue; + } + if (edgeBoxSelectMode === "contain") { + if (rs.startX != null && rs.startY != null && !inBoundingBox(boxBb, rs.startX, rs.startY)) { + continue; + } + if (rs.endX != null && rs.endY != null && !inBoundingBox(boxBb, rs.endX, rs.endY)) { + continue; + } + if (rs.edgeType === "bezier" || rs.edgeType === "multibezier" || rs.edgeType === "self" || rs.edgeType === "compound" || rs.edgeType === "segments" || rs.edgeType === "haystack") { + var pts2 = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts; + var allInside = true; + for (var i2 = 0; i2 < pts2.length; i2++) { + if (!pointInBoundingBox(boxBb, pts2[i2])) { + allInside = false; + break; + } + } + if (allInside) { + box.push(edge); + } + } else if (rs.edgeType === "straight") { + box.push(edge); + } + } else if (edgeBoxSelectMode === "overlap") { + var _selected = false; + if (rs.startX != null && rs.startY != null && rs.endX != null && rs.endY != null && (inBoundingBox(boxBb, rs.startX, rs.startY) || inBoundingBox(boxBb, rs.endX, rs.endY))) { + box.push(edge); + _selected = true; + } else if (!_selected && rs.edgeType === "haystack") { + var haystackPts = _p.rstyle.haystackPts; + for (var _i = 0; _i < haystackPts.length; _i++) { + if (pointInBoundingBox(boxBb, haystackPts[_i])) { + box.push(edge); + _selected = true; + break; + } + } + } + if (!_selected) { + var _pts = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts; + if ((!_pts || _pts.length < 2) && rs.edgeType === "straight") { + if (rs.startX != null && rs.startY != null && rs.endX != null && rs.endY != null) { + _pts = [{ + x: rs.startX, + y: rs.startY + }, { + x: rs.endX, + y: rs.endY + }]; + } + } + if (!_pts || _pts.length < 2) continue; + for (var _i2 = 0; _i2 < _pts.length - 1; _i2++) { + var segStart = _pts[_i2]; + var segEnd = _pts[_i2 + 1]; + for (var b3 = 0; b3 < boxEdges.length; b3++) { + var _boxEdges$b = _slicedToArray(boxEdges[b3], 2), boxStart = _boxEdges$b[0], boxEnd = _boxEdges$b[1]; + if (doLinesIntersect(segStart, segEnd, boxStart, boxEnd)) { + box.push(edge); + _selected = true; + break; + } + } + if (_selected) break; + } + } } } - return text4; } + return box; }; - JSDocLineImpl = class { - static { - __name(this, "JSDocLineImpl"); - } - constructor(text4, range3) { - this.text = text4; - this.range = range3; + BRp$d = {}; + BRp$d.calculateArrowAngles = function(edge) { + var rs = edge._private.rscratch; + var isHaystack = rs.edgeType === "haystack"; + var isBezier = rs.edgeType === "bezier"; + var isMultibezier = rs.edgeType === "multibezier"; + var isSegments = rs.edgeType === "segments"; + var isCompound = rs.edgeType === "compound"; + var isSelf = rs.edgeType === "self"; + var dispX, dispY; + var startX2, startY2, endX, endY, midX, midY; + if (isHaystack) { + startX2 = rs.haystackPts[0]; + startY2 = rs.haystackPts[1]; + endX = rs.haystackPts[2]; + endY = rs.haystackPts[3]; + } else { + startX2 = rs.arrowStartX; + startY2 = rs.arrowStartY; + endX = rs.arrowEndX; + endY = rs.arrowEndY; } - toString() { - return this.text; + midX = rs.midX; + midY = rs.midY; + if (isSegments) { + dispX = startX2 - rs.segpts[0]; + dispY = startY2 - rs.segpts[1]; + } else if (isMultibezier || isCompound || isSelf || isBezier) { + var pts2 = rs.allpts; + var bX = qbezierAt(pts2[0], pts2[2], pts2[4], 0.1); + var bY = qbezierAt(pts2[1], pts2[3], pts2[5], 0.1); + dispX = startX2 - bX; + dispY = startY2 - bY; + } else { + dispX = startX2 - midX; + dispY = startY2 - midY; } - toMarkdown() { - return this.text; - } - }; - __name(fillNewlines, "fillNewlines"); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/documentation-provider.js - var JSDocDocumentationProvider; - var init_documentation_provider = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/documentation-provider.js"() { - "use strict"; - init_ast_utils(); - init_jsdoc(); - JSDocDocumentationProvider = class { - static { - __name(this, "JSDocDocumentationProvider"); - } - constructor(services) { - this.indexManager = services.shared.workspace.IndexManager; - this.commentProvider = services.documentation.CommentProvider; + rs.srcArrowAngle = getAngleFromDisp(dispX, dispY); + var midX = rs.midX; + var midY = rs.midY; + if (isHaystack) { + midX = (startX2 + endX) / 2; + midY = (startY2 + endY) / 2; } - getDocumentation(node2) { - const comment2 = this.commentProvider.getComment(node2); - if (comment2 && isJSDoc(comment2)) { - const parsedJSDoc = parseJSDoc(comment2); - return parsedJSDoc.toMarkdown({ - renderLink: /* @__PURE__ */ __name((link3, display) => { - return this.documentationLinkRenderer(node2, link3, display); - }, "renderLink"), - renderTag: /* @__PURE__ */ __name((tag2) => { - return this.documentationTagRenderer(node2, tag2); - }, "renderTag") - }); + dispX = endX - startX2; + dispY = endY - startY2; + if (isSegments) { + var pts2 = rs.allpts; + if (pts2.length / 2 % 2 === 0) { + var i2 = pts2.length / 2; + var i1 = i2 - 2; + dispX = pts2[i2] - pts2[i1]; + dispY = pts2[i2 + 1] - pts2[i1 + 1]; + } else if (rs.isRound) { + dispX = rs.midVector[1]; + dispY = -rs.midVector[0]; + } else { + var i2 = pts2.length / 2 - 1; + var i1 = i2 - 2; + dispX = pts2[i2] - pts2[i1]; + dispY = pts2[i2 + 1] - pts2[i1 + 1]; } - return void 0; - } - documentationLinkRenderer(node2, name, display) { - var _a; - const description = (_a = this.findNameInPrecomputedScopes(node2, name)) !== null && _a !== void 0 ? _a : this.findNameInGlobalScope(node2, name); - if (description && description.nameSegment) { - const line2 = description.nameSegment.range.start.line + 1; - const character2 = description.nameSegment.range.start.character + 1; - const uri = description.documentUri.with({ fragment: `L${line2},${character2}` }); - return `[${display}](${uri.toString()})`; + } else if (isMultibezier || isCompound || isSelf) { + var pts2 = rs.allpts; + var cpts = rs.ctrlpts; + var bp0x, bp0y; + var bp1x, bp1y; + if (cpts.length / 2 % 2 === 0) { + var p0 = pts2.length / 2 - 1; + var ic = p0 + 2; + var p1 = ic + 2; + bp0x = qbezierAt(pts2[p0], pts2[ic], pts2[p1], 0); + bp0y = qbezierAt(pts2[p0 + 1], pts2[ic + 1], pts2[p1 + 1], 0); + bp1x = qbezierAt(pts2[p0], pts2[ic], pts2[p1], 1e-4); + bp1y = qbezierAt(pts2[p0 + 1], pts2[ic + 1], pts2[p1 + 1], 1e-4); } else { - return void 0; + var ic = pts2.length / 2 - 1; + var p0 = ic - 2; + var p1 = ic + 2; + bp0x = qbezierAt(pts2[p0], pts2[ic], pts2[p1], 0.4999); + bp0y = qbezierAt(pts2[p0 + 1], pts2[ic + 1], pts2[p1 + 1], 0.4999); + bp1x = qbezierAt(pts2[p0], pts2[ic], pts2[p1], 0.5); + bp1y = qbezierAt(pts2[p0 + 1], pts2[ic + 1], pts2[p1 + 1], 0.5); } + dispX = bp1x - bp0x; + dispY = bp1y - bp0y; } - documentationTagRenderer(_node, _tag2) { - return void 0; - } - findNameInPrecomputedScopes(node2, name) { - const document2 = getDocument(node2); - const precomputed = document2.precomputedScopes; - if (!precomputed) { - return void 0; + rs.midtgtArrowAngle = getAngleFromDisp(dispX, dispY); + rs.midDispX = dispX; + rs.midDispY = dispY; + dispX *= -1; + dispY *= -1; + if (isSegments) { + var pts2 = rs.allpts; + if (pts2.length / 2 % 2 === 0) ; + else if (!rs.isRound) { + var i2 = pts2.length / 2 - 1; + var i3 = i2 + 2; + dispX = -(pts2[i3] - pts2[i2]); + dispY = -(pts2[i3 + 1] - pts2[i2 + 1]); } - let currentNode = node2; - do { - const allDescriptions = precomputed.get(currentNode); - const description = allDescriptions.find((e3) => e3.name === name); - if (description) { - return description; - } - currentNode = currentNode.$container; - } while (currentNode); - return void 0; - } - findNameInGlobalScope(node2, name) { - const description = this.indexManager.allElements().find((e3) => e3.name === name); - return description; - } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/comment-provider.js - var DefaultCommentProvider; - var init_comment_provider = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/comment-provider.js"() { - "use strict"; - init_json_serializer(); - init_cst_utils(); - DefaultCommentProvider = class { - static { - __name(this, "DefaultCommentProvider"); - } - constructor(services) { - this.grammarConfig = () => services.parser.GrammarConfig; } - getComment(node2) { - var _a; - if (isAstNodeWithComment(node2)) { - return node2.$comment; - } - return (_a = findCommentNode(node2.$cstNode, this.grammarConfig().multilineCommentRules)) === null || _a === void 0 ? void 0 : _a.text; + rs.midsrcArrowAngle = getAngleFromDisp(dispX, dispY); + if (isSegments) { + dispX = endX - rs.segpts[rs.segpts.length - 2]; + dispY = endY - rs.segpts[rs.segpts.length - 1]; + } else if (isMultibezier || isCompound || isSelf || isBezier) { + var pts2 = rs.allpts; + var l4 = pts2.length; + var bX = qbezierAt(pts2[l4 - 6], pts2[l4 - 4], pts2[l4 - 2], 0.9); + var bY = qbezierAt(pts2[l4 - 5], pts2[l4 - 3], pts2[l4 - 1], 0.9); + dispX = endX - bX; + dispY = endY - bY; + } else { + dispX = endX - midX; + dispY = endY - midY; } + rs.tgtArrowAngle = getAngleFromDisp(dispX, dispY); }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/async-parser.js - var DefaultAsyncParser, AbstractThreadedAsyncParser, ParserWorker; - var init_async_parser = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/async-parser.js"() { - "use strict"; - init_promise_utils(); - init_event3(); - DefaultAsyncParser = class { - static { - __name(this, "DefaultAsyncParser"); - } - constructor(services) { - this.syncParser = services.parser.LangiumParser; - } - parse(text4, _cancelToken) { - return Promise.resolve(this.syncParser.parse(text4)); + BRp$d.getArrowWidth = BRp$d.getArrowHeight = function(edgeWidth, scale2) { + var cache3 = this.arrowWidthCache = this.arrowWidthCache || {}; + var cachedVal = cache3[edgeWidth + ", " + scale2]; + if (cachedVal) { + return cachedVal; } + cachedVal = Math.max(Math.pow(edgeWidth * 13.37, 0.9), 29) * scale2; + cache3[edgeWidth + ", " + scale2] = cachedVal; + return cachedVal; }; - AbstractThreadedAsyncParser = class { - static { - __name(this, "AbstractThreadedAsyncParser"); - } - constructor(services) { - this.threadCount = 8; - this.terminationDelay = 200; - this.workerPool = []; - this.queue = []; - this.hydrator = services.serializer.Hydrator; + v1 = {}; + v22 = {}; + asVec = /* @__PURE__ */ __name(function asVec2(p3, pp, v3) { + v3.x = pp.x - p3.x; + v3.y = pp.y - p3.y; + v3.len = Math.sqrt(v3.x * v3.x + v3.y * v3.y); + v3.nx = v3.x / v3.len; + v3.ny = v3.y / v3.len; + v3.ang = Math.atan2(v3.ny, v3.nx); + }, "asVec"); + invertVec = /* @__PURE__ */ __name(function invertVec2(originalV, invertedV) { + invertedV.x = originalV.x * -1; + invertedV.y = originalV.y * -1; + invertedV.nx = originalV.nx * -1; + invertedV.ny = originalV.ny * -1; + invertedV.ang = originalV.ang > 0 ? -(Math.PI - originalV.ang) : Math.PI + originalV.ang; + }, "invertVec"); + calcCornerArc = /* @__PURE__ */ __name(function calcCornerArc2(previousPoint, currentPoint, nextPoint, radiusMax, isArcRadius) { + previousPoint !== lastPoint ? asVec(currentPoint, previousPoint, v1) : invertVec(v22, v1); + asVec(currentPoint, nextPoint, v22); + sinA = v1.nx * v22.ny - v1.ny * v22.nx; + sinA90 = v1.nx * v22.nx - v1.ny * -v22.ny; + angle = Math.asin(Math.max(-1, Math.min(1, sinA))); + if (Math.abs(angle) < 1e-6) { + x3 = currentPoint.x; + y4 = currentPoint.y; + cRadius = radius = 0; + return; } - initializeWorkers() { - while (this.workerPool.length < this.threadCount) { - const worker = this.createWorker(); - worker.onReady(() => { - if (this.queue.length > 0) { - const deferred = this.queue.shift(); - if (deferred) { - worker.lock(); - deferred.resolve(worker); - } - } - }); - this.workerPool.push(worker); + radDirection = 1; + drawDirection = false; + if (sinA90 < 0) { + if (angle < 0) { + angle = Math.PI + angle; + } else { + angle = Math.PI - angle; + radDirection = -1; + drawDirection = true; + } + } else { + if (angle > 0) { + radDirection = -1; + drawDirection = true; } } - async parse(text4, cancelToken) { - const worker = await this.acquireParserWorker(cancelToken); - const deferred = new Deferred(); - let timeout2; - const cancellation = cancelToken.onCancellationRequested(() => { - timeout2 = setTimeout(() => { - this.terminateWorker(worker); - }, this.terminationDelay); - }); - worker.parse(text4).then((result) => { - const hydrated = this.hydrator.hydrate(result); - deferred.resolve(hydrated); - }).catch((err) => { - deferred.reject(err); - }).finally(() => { - cancellation.dispose(); - clearTimeout(timeout2); - }); - return deferred.promise; + if (currentPoint.radius !== void 0) { + radius = currentPoint.radius; + } else { + radius = radiusMax; } - terminateWorker(worker) { - worker.terminate(); - const index = this.workerPool.indexOf(worker); - if (index >= 0) { - this.workerPool.splice(index, 1); + halfAngle = angle / 2; + limit = Math.min(v1.len / 2, v22.len / 2); + if (isArcRadius) { + lenOut = Math.abs(Math.cos(halfAngle) * radius / Math.sin(halfAngle)); + if (lenOut > limit) { + lenOut = limit; + cRadius = Math.abs(lenOut * Math.sin(halfAngle) / Math.cos(halfAngle)); + } else { + cRadius = radius; } + } else { + lenOut = Math.min(limit, radius); + cRadius = Math.abs(lenOut * Math.sin(halfAngle) / Math.cos(halfAngle)); } - async acquireParserWorker(cancelToken) { - this.initializeWorkers(); - for (const worker of this.workerPool) { - if (worker.ready) { - worker.lock(); - return worker; + stopX = currentPoint.x + v22.nx * lenOut; + stopY = currentPoint.y + v22.ny * lenOut; + x3 = stopX - v22.ny * cRadius * radDirection; + y4 = stopY + v22.nx * cRadius * radDirection; + startX = currentPoint.x + v1.nx * lenOut; + startY = currentPoint.y + v1.ny * lenOut; + lastPoint = currentPoint; + }, "calcCornerArc"); + __name(drawPreparedRoundCorner, "drawPreparedRoundCorner"); + __name(getRoundCorner, "getRoundCorner"); + AVOID_IMPOSSIBLE_BEZIER_CONSTANT = 0.01; + AVOID_IMPOSSIBLE_BEZIER_CONSTANT_L = Math.sqrt(2 * AVOID_IMPOSSIBLE_BEZIER_CONSTANT); + BRp$c = {}; + BRp$c.findMidptPtsEtc = function(edge, pairInfo) { + var posPts = pairInfo.posPts, intersectionPts = pairInfo.intersectionPts, vectorNormInverse = pairInfo.vectorNormInverse; + var midptPts; + var srcManEndpt = edge.pstyle("source-endpoint"); + var tgtManEndpt = edge.pstyle("target-endpoint"); + var haveManualEndPts = srcManEndpt.units != null && tgtManEndpt.units != null; + var recalcVectorNormInverse = /* @__PURE__ */ __name(function recalcVectorNormInverse2(x12, y12, x23, y23) { + var dy = y23 - y12; + var dx = x23 - x12; + var l4 = Math.sqrt(dx * dx + dy * dy); + return { + x: -dy / l4, + y: dx / l4 + }; + }, "recalcVectorNormInverse"); + var edgeDistances = edge.pstyle("edge-distances").value; + switch (edgeDistances) { + case "node-position": + midptPts = posPts; + break; + case "intersection": + midptPts = intersectionPts; + break; + case "endpoints": { + if (haveManualEndPts) { + var _this$manualEndptToPx = this.manualEndptToPx(edge.source()[0], srcManEndpt), _this$manualEndptToPx2 = _slicedToArray(_this$manualEndptToPx, 2), x1 = _this$manualEndptToPx2[0], y1 = _this$manualEndptToPx2[1]; + var _this$manualEndptToPx3 = this.manualEndptToPx(edge.target()[0], tgtManEndpt), _this$manualEndptToPx4 = _slicedToArray(_this$manualEndptToPx3, 2), x22 = _this$manualEndptToPx4[0], y22 = _this$manualEndptToPx4[1]; + var endPts = { + x1, + y1, + x2: x22, + y2: y22 + }; + vectorNormInverse = recalcVectorNormInverse(x1, y1, x22, y22); + midptPts = endPts; + } else { + warn("Edge ".concat(edge.id(), " has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")); + midptPts = intersectionPts; } + break; } - const deferred = new Deferred(); - cancelToken.onCancellationRequested(() => { - const index = this.queue.indexOf(deferred); - if (index >= 0) { - this.queue.splice(index, 1); - } - deferred.reject(OperationCancelled); - }); - this.queue.push(deferred); - return deferred.promise; } + return { + midptPts, + vectorNormInverse + }; }; - ParserWorker = class { - static { - __name(this, "ParserWorker"); - } - get ready() { - return this._ready; - } - get onReady() { - return this.onReadyEmitter.event; - } - constructor(sendMessage, onMessage, onError, terminate) { - this.onReadyEmitter = new event_exports.Emitter(); - this.deferred = new Deferred(); - this._ready = true; - this._parsing = false; - this.sendMessage = sendMessage; - this._terminate = terminate; - onMessage((result) => { - const parseResult = result; - this.deferred.resolve(parseResult); - this.unlock(); - }); - onError((error3) => { - this.deferred.reject(error3); - this.unlock(); - }); + BRp$c.findHaystackPoints = function(edges3) { + for (var i2 = 0; i2 < edges3.length; i2++) { + var edge = edges3[i2]; + var _p = edge._private; + var rs = _p.rscratch; + if (!rs.haystack) { + var angle2 = Math.random() * 2 * Math.PI; + rs.source = { + x: Math.cos(angle2), + y: Math.sin(angle2) + }; + angle2 = Math.random() * 2 * Math.PI; + rs.target = { + x: Math.cos(angle2), + y: Math.sin(angle2) + }; + } + var src = _p.source; + var tgt = _p.target; + var srcPos = src.position(); + var tgtPos = tgt.position(); + var srcW = src.width(); + var tgtW = tgt.width(); + var srcH = src.height(); + var tgtH = tgt.height(); + var radius2 = edge.pstyle("haystack-radius").value; + var halfRadius = radius2 / 2; + rs.haystackPts = rs.allpts = [rs.source.x * srcW * halfRadius + srcPos.x, rs.source.y * srcH * halfRadius + srcPos.y, rs.target.x * tgtW * halfRadius + tgtPos.x, rs.target.y * tgtH * halfRadius + tgtPos.y]; + rs.midX = (rs.allpts[0] + rs.allpts[2]) / 2; + rs.midY = (rs.allpts[1] + rs.allpts[3]) / 2; + rs.edgeType = "haystack"; + rs.haystack = true; + this.storeEdgeProjections(edge); + this.calculateArrowAngles(edge); + this.recalculateEdgeLabelProjections(edge); + this.calculateLabelAngles(edge); } - terminate() { - this.deferred.reject(OperationCancelled); - this._terminate(); + }; + BRp$c.findSegmentsPoints = function(edge, pairInfo) { + var rs = edge._private.rscratch; + var segmentWs = edge.pstyle("segment-weights"); + var segmentDs = edge.pstyle("segment-distances"); + var segmentRs = edge.pstyle("segment-radii"); + var segmentTs = edge.pstyle("radius-type"); + var segmentsN = Math.min(segmentWs.pfValue.length, segmentDs.pfValue.length); + var lastRadius = segmentRs.pfValue[segmentRs.pfValue.length - 1]; + var lastRadiusType = segmentTs.pfValue[segmentTs.pfValue.length - 1]; + rs.edgeType = "segments"; + rs.segpts = []; + rs.radii = []; + rs.isArcRadius = []; + for (var s2 = 0; s2 < segmentsN; s2++) { + var w4 = segmentWs.pfValue[s2]; + var d3 = segmentDs.pfValue[s2]; + var w1 = 1 - w4; + var w22 = w4; + var _this$findMidptPtsEtc = this.findMidptPtsEtc(edge, pairInfo), midptPts = _this$findMidptPtsEtc.midptPts, vectorNormInverse = _this$findMidptPtsEtc.vectorNormInverse; + var adjustedMidpt = { + x: midptPts.x1 * w1 + midptPts.x2 * w22, + y: midptPts.y1 * w1 + midptPts.y2 * w22 + }; + rs.segpts.push(adjustedMidpt.x + vectorNormInverse.x * d3, adjustedMidpt.y + vectorNormInverse.y * d3); + rs.radii.push(segmentRs.pfValue[s2] !== void 0 ? segmentRs.pfValue[s2] : lastRadius); + rs.isArcRadius.push((segmentTs.pfValue[s2] !== void 0 ? segmentTs.pfValue[s2] : lastRadiusType) === "arc-radius"); } - lock() { - this._ready = false; + }; + BRp$c.findLoopPoints = function(edge, pairInfo, i2, edgeIsUnbundled) { + var rs = edge._private.rscratch; + var dirCounts = pairInfo.dirCounts, srcPos = pairInfo.srcPos; + var ctrlptDists = edge.pstyle("control-point-distances"); + var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : void 0; + var loopDir = edge.pstyle("loop-direction").pfValue; + var loopSwp = edge.pstyle("loop-sweep").pfValue; + var stepSize = edge.pstyle("control-point-step-size").pfValue; + rs.edgeType = "self"; + var j3 = i2; + var loopDist = stepSize; + if (edgeIsUnbundled) { + j3 = 0; + loopDist = ctrlptDist; } - unlock() { - this._parsing = false; - this._ready = true; - this.onReadyEmitter.fire(); + var loopAngle = loopDir - Math.PI / 2; + var outAngle = loopAngle - loopSwp / 2; + var inAngle = loopAngle + loopSwp / 2; + var dc = String(loopDir + "_" + loopSwp); + j3 = dirCounts[dc] === void 0 ? dirCounts[dc] = 0 : ++dirCounts[dc]; + rs.ctrlpts = [srcPos.x + Math.cos(outAngle) * 1.4 * loopDist * (j3 / 3 + 1), srcPos.y + Math.sin(outAngle) * 1.4 * loopDist * (j3 / 3 + 1), srcPos.x + Math.cos(inAngle) * 1.4 * loopDist * (j3 / 3 + 1), srcPos.y + Math.sin(inAngle) * 1.4 * loopDist * (j3 / 3 + 1)]; + }; + BRp$c.findCompoundLoopPoints = function(edge, pairInfo, i2, edgeIsUnbundled) { + var rs = edge._private.rscratch; + rs.edgeType = "compound"; + var srcPos = pairInfo.srcPos, tgtPos = pairInfo.tgtPos, srcW = pairInfo.srcW, srcH = pairInfo.srcH, tgtW = pairInfo.tgtW, tgtH = pairInfo.tgtH; + var stepSize = edge.pstyle("control-point-step-size").pfValue; + var ctrlptDists = edge.pstyle("control-point-distances"); + var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : void 0; + var j3 = i2; + var loopDist = stepSize; + if (edgeIsUnbundled) { + j3 = 0; + loopDist = ctrlptDist; } - parse(text4) { - if (this._parsing) { - throw new Error("Parser worker is busy"); + var loopW = 50; + var loopaPos = { + x: srcPos.x - srcW / 2, + y: srcPos.y - srcH / 2 + }; + var loopbPos = { + x: tgtPos.x - tgtW / 2, + y: tgtPos.y - tgtH / 2 + }; + var loopPos = { + x: Math.min(loopaPos.x, loopbPos.x), + y: Math.min(loopaPos.y, loopbPos.y) + }; + var minCompoundStretch = 0.5; + var compoundStretchA = Math.max(minCompoundStretch, Math.log(srcW * AVOID_IMPOSSIBLE_BEZIER_CONSTANT)); + var compoundStretchB = Math.max(minCompoundStretch, Math.log(tgtW * AVOID_IMPOSSIBLE_BEZIER_CONSTANT)); + rs.ctrlpts = [loopPos.x, loopPos.y - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j3 / 3 + 1) * compoundStretchA, loopPos.x - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j3 / 3 + 1) * compoundStretchB, loopPos.y]; + }; + BRp$c.findStraightEdgePoints = function(edge) { + edge._private.rscratch.edgeType = "straight"; + }; + BRp$c.findBezierPoints = function(edge, pairInfo, i2, edgeIsUnbundled, edgeIsSwapped) { + var rs = edge._private.rscratch; + var stepSize = edge.pstyle("control-point-step-size").pfValue; + var ctrlptDists = edge.pstyle("control-point-distances"); + var ctrlptWs = edge.pstyle("control-point-weights"); + var bezierN = ctrlptDists && ctrlptWs ? Math.min(ctrlptDists.value.length, ctrlptWs.value.length) : 1; + var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : void 0; + var ctrlptWeight = ctrlptWs.value[0]; + var multi = edgeIsUnbundled; + rs.edgeType = multi ? "multibezier" : "bezier"; + rs.ctrlpts = []; + for (var b3 = 0; b3 < bezierN; b3++) { + var normctrlptDist = (0.5 - pairInfo.eles.length / 2 + i2) * stepSize * (edgeIsSwapped ? -1 : 1); + var manctrlptDist = void 0; + var sign2 = signum(normctrlptDist); + if (multi) { + ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[b3] : stepSize; + ctrlptWeight = ctrlptWs.value[b3]; } - this._parsing = true; - this.deferred = new Deferred(); - this.sendMessage(text4); - return this.deferred.promise; + if (edgeIsUnbundled) { + manctrlptDist = ctrlptDist; + } else { + manctrlptDist = ctrlptDist !== void 0 ? sign2 * ctrlptDist : void 0; + } + var distanceFromMidpoint = manctrlptDist !== void 0 ? manctrlptDist : normctrlptDist; + var w1 = 1 - ctrlptWeight; + var w22 = ctrlptWeight; + var _this$findMidptPtsEtc2 = this.findMidptPtsEtc(edge, pairInfo), midptPts = _this$findMidptPtsEtc2.midptPts, vectorNormInverse = _this$findMidptPtsEtc2.vectorNormInverse; + var adjustedMidpt = { + x: midptPts.x1 * w1 + midptPts.x2 * w22, + y: midptPts.y1 * w1 + midptPts.y2 * w22 + }; + rs.ctrlpts.push(adjustedMidpt.x + vectorNormInverse.x * distanceFromMidpoint, adjustedMidpt.y + vectorNormInverse.y * distanceFromMidpoint); } }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/workspace-lock.js - var DefaultWorkspaceLock; - var init_workspace_lock = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/workspace-lock.js"() { - "use strict"; - init_cancellation(); - init_promise_utils(); - DefaultWorkspaceLock = class { - static { - __name(this, "DefaultWorkspaceLock"); - } - constructor() { - this.previousTokenSource = new cancellation_exports.CancellationTokenSource(); - this.writeQueue = []; - this.readQueue = []; - this.done = true; - } - write(action) { - this.cancelWrite(); - const tokenSource = startCancelableOperation(); - this.previousTokenSource = tokenSource; - return this.enqueue(this.writeQueue, action, tokenSource.token); + BRp$c.findTaxiPoints = function(edge, pairInfo) { + var rs = edge._private.rscratch; + rs.edgeType = "segments"; + var VERTICAL = "vertical"; + var HORIZONTAL = "horizontal"; + var LEFTWARD = "leftward"; + var RIGHTWARD = "rightward"; + var DOWNWARD = "downward"; + var UPWARD = "upward"; + var AUTO = "auto"; + var posPts = pairInfo.posPts, srcW = pairInfo.srcW, srcH = pairInfo.srcH, tgtW = pairInfo.tgtW, tgtH = pairInfo.tgtH; + var edgeDistances = edge.pstyle("edge-distances").value; + var dIncludesNodeBody = edgeDistances !== "node-position"; + var taxiDir = edge.pstyle("taxi-direction").value; + var rawTaxiDir = taxiDir; + var taxiTurn = edge.pstyle("taxi-turn"); + var turnIsPercent = taxiTurn.units === "%"; + var taxiTurnPfVal = taxiTurn.pfValue; + var turnIsNegative = taxiTurnPfVal < 0; + var minD = edge.pstyle("taxi-turn-min-distance").pfValue; + var dw = dIncludesNodeBody ? (srcW + tgtW) / 2 : 0; + var dh = dIncludesNodeBody ? (srcH + tgtH) / 2 : 0; + var pdx = posPts.x2 - posPts.x1; + var pdy = posPts.y2 - posPts.y1; + var subDWH = /* @__PURE__ */ __name(function subDWH2(dxy, dwh) { + if (dxy > 0) { + return Math.max(dxy - dwh, 0); + } else { + return Math.min(dxy + dwh, 0); + } + }, "subDWH"); + var dx = subDWH(pdx, dw); + var dy = subDWH(pdy, dh); + var isExplicitDir = false; + if (rawTaxiDir === AUTO) { + taxiDir = Math.abs(dx) > Math.abs(dy) ? HORIZONTAL : VERTICAL; + } else if (rawTaxiDir === UPWARD || rawTaxiDir === DOWNWARD) { + taxiDir = VERTICAL; + isExplicitDir = true; + } else if (rawTaxiDir === LEFTWARD || rawTaxiDir === RIGHTWARD) { + taxiDir = HORIZONTAL; + isExplicitDir = true; } - read(action) { - return this.enqueue(this.readQueue, action); + var isVert = taxiDir === VERTICAL; + var l4 = isVert ? dy : dx; + var pl = isVert ? pdy : pdx; + var sgnL = signum(pl); + var forcedDir = false; + if (!(isExplicitDir && (turnIsPercent || turnIsNegative)) && (rawTaxiDir === DOWNWARD && pl < 0 || rawTaxiDir === UPWARD && pl > 0 || rawTaxiDir === LEFTWARD && pl > 0 || rawTaxiDir === RIGHTWARD && pl < 0)) { + sgnL *= -1; + l4 = sgnL * Math.abs(l4); + forcedDir = true; } - enqueue(queue, action, cancellationToken = cancellation_exports.CancellationToken.None) { - const deferred = new Deferred(); - const entry = { - action, - deferred, - cancellationToken - }; - queue.push(entry); - this.performNextOperation(); - return deferred.promise; + var d3; + if (turnIsPercent) { + var p3 = taxiTurnPfVal < 0 ? 1 + taxiTurnPfVal : taxiTurnPfVal; + d3 = p3 * l4; + } else { + var k2 = taxiTurnPfVal < 0 ? l4 : 0; + d3 = k2 + taxiTurnPfVal * sgnL; } - async performNextOperation() { - if (!this.done) { - return; + var getIsTooClose = /* @__PURE__ */ __name(function getIsTooClose2(d4) { + return Math.abs(d4) < minD || Math.abs(d4) >= Math.abs(l4); + }, "getIsTooClose"); + var isTooCloseSrc = getIsTooClose(d3); + var isTooCloseTgt = getIsTooClose(Math.abs(l4) - Math.abs(d3)); + var isTooClose = isTooCloseSrc || isTooCloseTgt; + if (isTooClose && !forcedDir) { + if (isVert) { + var lShapeInsideSrc = Math.abs(pl) <= srcH / 2; + var lShapeInsideTgt = Math.abs(pdx) <= tgtW / 2; + if (lShapeInsideSrc) { + var x5 = (posPts.x1 + posPts.x2) / 2; + var y1 = posPts.y1, y22 = posPts.y2; + rs.segpts = [x5, y1, x5, y22]; + } else if (lShapeInsideTgt) { + var y6 = (posPts.y1 + posPts.y2) / 2; + var x1 = posPts.x1, x22 = posPts.x2; + rs.segpts = [x1, y6, x22, y6]; + } else { + rs.segpts = [posPts.x1, posPts.y2]; + } + } else { + var _lShapeInsideSrc = Math.abs(pl) <= srcW / 2; + var _lShapeInsideTgt = Math.abs(pdy) <= tgtH / 2; + if (_lShapeInsideSrc) { + var _y = (posPts.y1 + posPts.y2) / 2; + var _x = posPts.x1, _x2 = posPts.x2; + rs.segpts = [_x, _y, _x2, _y]; + } else if (_lShapeInsideTgt) { + var _x3 = (posPts.x1 + posPts.x2) / 2; + var _y2 = posPts.y1, _y3 = posPts.y2; + rs.segpts = [_x3, _y2, _x3, _y3]; + } else { + rs.segpts = [posPts.x2, posPts.y1]; + } } - const entries2 = []; - if (this.writeQueue.length > 0) { - entries2.push(this.writeQueue.shift()); - } else if (this.readQueue.length > 0) { - entries2.push(...this.readQueue.splice(0, this.readQueue.length)); + } else { + if (isVert) { + var _y4 = posPts.y1 + d3 + (dIncludesNodeBody ? srcH / 2 * sgnL : 0); + var _x4 = posPts.x1, _x5 = posPts.x2; + rs.segpts = [_x4, _y4, _x5, _y4]; } else { - return; + var _x6 = posPts.x1 + d3 + (dIncludesNodeBody ? srcW / 2 * sgnL : 0); + var _y5 = posPts.y1, _y6 = posPts.y2; + rs.segpts = [_x6, _y5, _x6, _y6]; } - this.done = false; - await Promise.all(entries2.map(async ({ action, deferred, cancellationToken }) => { - try { - const result = await Promise.resolve().then(() => action(cancellationToken)); - deferred.resolve(result); - } catch (err) { - if (isOperationCancelled(err)) { - deferred.resolve(void 0); - } else { - deferred.reject(err); - } - } - })); - this.done = true; - this.performNextOperation(); } - cancelWrite() { - this.previousTokenSource.cancel(); + if (rs.isRound) { + var radius2 = edge.pstyle("taxi-radius").value; + var isArcRadius = edge.pstyle("radius-type").value[0] === "arc-radius"; + rs.radii = new Array(rs.segpts.length / 2).fill(radius2); + rs.isArcRadius = new Array(rs.segpts.length / 2).fill(isArcRadius); } }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/hydrator.js - var DefaultHydrator; - var init_hydrator = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/hydrator.js"() { - "use strict"; - init_cst_node_builder(); - init_ast(); - init_syntax_tree(); - init_ast_utils(); - init_collections(); - init_cst_utils(); - DefaultHydrator = class { - static { - __name(this, "DefaultHydrator"); - } - constructor(services) { - this.grammarElementIdMap = new BiMap(); - this.tokenTypeIdMap = new BiMap(); - this.grammar = services.Grammar; - this.lexer = services.parser.Lexer; - this.linker = services.references.Linker; - } - dehydrate(result) { - return { - lexerErrors: result.lexerErrors, - lexerReport: result.lexerReport ? this.dehydrateLexerReport(result.lexerReport) : void 0, - // We need to create shallow copies of the errors - // The original errors inherit from the `Error` class, which is not transferable across worker threads - parserErrors: result.parserErrors.map((e3) => Object.assign(Object.assign({}, e3), { message: e3.message })), - value: this.dehydrateAstNode(result.value, this.createDehyrationContext(result.value)) - }; - } - dehydrateLexerReport(lexerReport) { - return lexerReport; - } - createDehyrationContext(node2) { - const astNodes = /* @__PURE__ */ new Map(); - const cstNodes = /* @__PURE__ */ new Map(); - for (const astNode of streamAst(node2)) { - astNodes.set(astNode, {}); + BRp$c.tryToCorrectInvalidPoints = function(edge, pairInfo) { + var rs = edge._private.rscratch; + if (rs.edgeType === "bezier") { + var srcPos = pairInfo.srcPos, tgtPos = pairInfo.tgtPos, srcW = pairInfo.srcW, srcH = pairInfo.srcH, tgtW = pairInfo.tgtW, tgtH = pairInfo.tgtH, srcShape = pairInfo.srcShape, tgtShape = pairInfo.tgtShape, srcCornerRadius = pairInfo.srcCornerRadius, tgtCornerRadius = pairInfo.tgtCornerRadius, srcRs = pairInfo.srcRs, tgtRs = pairInfo.tgtRs; + var badStart = !number$1(rs.startX) || !number$1(rs.startY); + var badAStart = !number$1(rs.arrowStartX) || !number$1(rs.arrowStartY); + var badEnd = !number$1(rs.endX) || !number$1(rs.endY); + var badAEnd = !number$1(rs.arrowEndX) || !number$1(rs.arrowEndY); + var minCpADistFactor = 3; + var arrowW = this.getArrowWidth(edge.pstyle("width").pfValue, edge.pstyle("arrow-scale").value) * this.arrowShapeWidth; + var minCpADist = minCpADistFactor * arrowW; + var startACpDist = dist({ + x: rs.ctrlpts[0], + y: rs.ctrlpts[1] + }, { + x: rs.startX, + y: rs.startY + }); + var closeStartACp = startACpDist < minCpADist; + var endACpDist = dist({ + x: rs.ctrlpts[0], + y: rs.ctrlpts[1] + }, { + x: rs.endX, + y: rs.endY + }); + var closeEndACp = endACpDist < minCpADist; + var overlapping = false; + if (badStart || badAStart || closeStartACp) { + overlapping = true; + var cpD = { + // delta + x: rs.ctrlpts[0] - srcPos.x, + y: rs.ctrlpts[1] - srcPos.y + }; + var cpL = Math.sqrt(cpD.x * cpD.x + cpD.y * cpD.y); + var cpM = { + // normalised delta + x: cpD.x / cpL, + y: cpD.y / cpL + }; + var radius2 = Math.max(srcW, srcH); + var cpProj = { + // *2 radius guarantees outside shape + x: rs.ctrlpts[0] + cpM.x * 2 * radius2, + y: rs.ctrlpts[1] + cpM.y * 2 * radius2 + }; + var srcCtrlPtIntn = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, cpProj.x, cpProj.y, 0, srcCornerRadius, srcRs); + if (closeStartACp) { + rs.ctrlpts[0] = rs.ctrlpts[0] + cpM.x * (minCpADist - startACpDist); + rs.ctrlpts[1] = rs.ctrlpts[1] + cpM.y * (minCpADist - startACpDist); + } else { + rs.ctrlpts[0] = srcCtrlPtIntn[0] + cpM.x * minCpADist; + rs.ctrlpts[1] = srcCtrlPtIntn[1] + cpM.y * minCpADist; + } } - if (node2.$cstNode) { - for (const cstNode of streamCst(node2.$cstNode)) { - cstNodes.set(cstNode, {}); + if (badEnd || badAEnd || closeEndACp) { + overlapping = true; + var _cpD = { + // delta + x: rs.ctrlpts[0] - tgtPos.x, + y: rs.ctrlpts[1] - tgtPos.y + }; + var _cpL = Math.sqrt(_cpD.x * _cpD.x + _cpD.y * _cpD.y); + var _cpM = { + // normalised delta + x: _cpD.x / _cpL, + y: _cpD.y / _cpL + }; + var _radius = Math.max(srcW, srcH); + var _cpProj = { + // *2 radius guarantees outside shape + x: rs.ctrlpts[0] + _cpM.x * 2 * _radius, + y: rs.ctrlpts[1] + _cpM.y * 2 * _radius + }; + var tgtCtrlPtIntn = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, _cpProj.x, _cpProj.y, 0, tgtCornerRadius, tgtRs); + if (closeEndACp) { + rs.ctrlpts[0] = rs.ctrlpts[0] + _cpM.x * (minCpADist - endACpDist); + rs.ctrlpts[1] = rs.ctrlpts[1] + _cpM.y * (minCpADist - endACpDist); + } else { + rs.ctrlpts[0] = tgtCtrlPtIntn[0] + _cpM.x * minCpADist; + rs.ctrlpts[1] = tgtCtrlPtIntn[1] + _cpM.y * minCpADist; } } - return { - astNodes, - cstNodes - }; + if (overlapping) { + this.findEndpoints(edge); + } } - dehydrateAstNode(node2, context) { - const obj = context.astNodes.get(node2); - obj.$type = node2.$type; - obj.$containerIndex = node2.$containerIndex; - obj.$containerProperty = node2.$containerProperty; - if (node2.$cstNode !== void 0) { - obj.$cstNode = this.dehydrateCstNode(node2.$cstNode, context); + }; + BRp$c.storeAllpts = function(edge) { + var rs = edge._private.rscratch; + if (rs.edgeType === "multibezier" || rs.edgeType === "bezier" || rs.edgeType === "self" || rs.edgeType === "compound") { + rs.allpts = []; + rs.allpts.push(rs.startX, rs.startY); + for (var b3 = 0; b3 + 1 < rs.ctrlpts.length; b3 += 2) { + rs.allpts.push(rs.ctrlpts[b3], rs.ctrlpts[b3 + 1]); + if (b3 + 3 < rs.ctrlpts.length) { + rs.allpts.push((rs.ctrlpts[b3] + rs.ctrlpts[b3 + 2]) / 2, (rs.ctrlpts[b3 + 1] + rs.ctrlpts[b3 + 3]) / 2); + } } - for (const [name, value2] of Object.entries(node2)) { - if (name.startsWith("$")) { - continue; + rs.allpts.push(rs.endX, rs.endY); + var m3, mt; + if (rs.ctrlpts.length / 2 % 2 === 0) { + m3 = rs.allpts.length / 2 - 1; + rs.midX = rs.allpts[m3]; + rs.midY = rs.allpts[m3 + 1]; + } else { + m3 = rs.allpts.length / 2 - 3; + mt = 0.5; + rs.midX = qbezierAt(rs.allpts[m3], rs.allpts[m3 + 2], rs.allpts[m3 + 4], mt); + rs.midY = qbezierAt(rs.allpts[m3 + 1], rs.allpts[m3 + 3], rs.allpts[m3 + 5], mt); + } + } else if (rs.edgeType === "straight") { + rs.allpts = [rs.startX, rs.startY, rs.endX, rs.endY]; + rs.midX = (rs.startX + rs.endX + rs.arrowStartX + rs.arrowEndX) / 4; + rs.midY = (rs.startY + rs.endY + rs.arrowStartY + rs.arrowEndY) / 4; + } else if (rs.edgeType === "segments") { + rs.allpts = []; + rs.allpts.push(rs.startX, rs.startY); + rs.allpts.push.apply(rs.allpts, rs.segpts); + rs.allpts.push(rs.endX, rs.endY); + if (rs.isRound) { + rs.roundCorners = []; + for (var i2 = 2; i2 + 3 < rs.allpts.length; i2 += 2) { + var radius2 = rs.radii[i2 / 2 - 1]; + var isArcRadius = rs.isArcRadius[i2 / 2 - 1]; + rs.roundCorners.push(getRoundCorner({ + x: rs.allpts[i2 - 2], + y: rs.allpts[i2 - 1] + }, { + x: rs.allpts[i2], + y: rs.allpts[i2 + 1], + radius: radius2 + }, { + x: rs.allpts[i2 + 2], + y: rs.allpts[i2 + 3] + }, radius2, isArcRadius)); } - if (Array.isArray(value2)) { - const arr = []; - obj[name] = arr; - for (const item of value2) { - if (isAstNode(item)) { - arr.push(this.dehydrateAstNode(item, context)); - } else if (isReference(item)) { - arr.push(this.dehydrateReference(item, context)); - } else { - arr.push(item); - } + } + if (rs.segpts.length % 4 === 0) { + var i22 = rs.segpts.length / 2; + var i1 = i22 - 2; + rs.midX = (rs.segpts[i1] + rs.segpts[i22]) / 2; + rs.midY = (rs.segpts[i1 + 1] + rs.segpts[i22 + 1]) / 2; + } else { + var _i = rs.segpts.length / 2 - 1; + if (!rs.isRound) { + rs.midX = rs.segpts[_i]; + rs.midY = rs.segpts[_i + 1]; + } else { + var point8 = { + x: rs.segpts[_i], + y: rs.segpts[_i + 1] + }; + var corner = rs.roundCorners[_i / 2]; + if (corner.radius === 0) { + var nextPoint = { + x: rs.segpts[_i + 2], + y: rs.segpts[_i + 3] + }; + rs.midX = point8.x; + rs.midY = point8.y; + rs.midVector = [point8.y - nextPoint.y, nextPoint.x - point8.x]; + } else { + var v3 = [point8.x - corner.cx, point8.y - corner.cy]; + var factor = corner.radius / Math.sqrt(Math.pow(v3[0], 2) + Math.pow(v3[1], 2)); + v3 = v3.map(function(c3) { + return c3 * factor; + }); + rs.midX = corner.cx + v3[0]; + rs.midY = corner.cy + v3[1]; + rs.midVector = v3; } - } else if (isAstNode(value2)) { - obj[name] = this.dehydrateAstNode(value2, context); - } else if (isReference(value2)) { - obj[name] = this.dehydrateReference(value2, context); - } else if (value2 !== void 0) { - obj[name] = value2; } } - return obj; } - dehydrateReference(reference, context) { - const obj = {}; - obj.$refText = reference.$refText; - if (reference.$refNode) { - obj.$refNode = context.cstNodes.get(reference.$refNode); + }; + BRp$c.checkForInvalidEdgeWarning = function(edge) { + var rs = edge[0]._private.rscratch; + if (rs.nodesOverlap || number$1(rs.startX) && number$1(rs.startY) && number$1(rs.endX) && number$1(rs.endY)) { + rs.loggedErr = false; + } else { + if (!rs.loggedErr) { + rs.loggedErr = true; + warn("Edge `" + edge.id() + "` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap."); } - return obj; } - dehydrateCstNode(node2, context) { - const cstNode = context.cstNodes.get(node2); - if (isRootCstNode(node2)) { - cstNode.fullText = node2.fullText; - } else { - cstNode.grammarSource = this.getGrammarElementId(node2.grammarSource); + }; + BRp$c.findEdgeControlPoints = function(edges3) { + var _this = this; + if (!edges3 || edges3.length === 0) { + return; + } + var r2 = this; + var cy = r2.cy; + var hasCompounds = cy.hasCompoundNodes(); + var hashTable = new Map$1(); + var getKey3 = /* @__PURE__ */ __name(function getKey4(pairId2, edgeIsUnbundled2) { + return [].concat(_toConsumableArray(pairId2), [edgeIsUnbundled2 ? 1 : 0]).join("-"); + }, "getKey"); + var pairIds = []; + var haystackEdges = []; + for (var i2 = 0; i2 < edges3.length; i2++) { + var edge = edges3[i2]; + var _p = edge._private; + var curveStyle = edge.pstyle("curve-style").value; + if (edge.removed() || !edge.takesUpSpace()) { + continue; } - cstNode.hidden = node2.hidden; - cstNode.astNode = context.astNodes.get(node2.astNode); - if (isCompositeCstNode(node2)) { - cstNode.content = node2.content.map((child) => this.dehydrateCstNode(child, context)); - } else if (isLeafCstNode(node2)) { - cstNode.tokenType = node2.tokenType.name; - cstNode.offset = node2.offset; - cstNode.length = node2.length; - cstNode.startLine = node2.range.start.line; - cstNode.startColumn = node2.range.start.character; - cstNode.endLine = node2.range.end.line; - cstNode.endColumn = node2.range.end.character; + if (curveStyle === "haystack") { + haystackEdges.push(edge); + continue; } - return cstNode; - } - hydrate(result) { - const node2 = result.value; - const context = this.createHydrationContext(node2); - if ("$cstNode" in node2) { - this.hydrateCstNode(node2.$cstNode, context); + var edgeIsUnbundled = curveStyle === "unbundled-bezier" || endsWith(curveStyle, "segments") || curveStyle === "straight" || curveStyle === "straight-triangle" || endsWith(curveStyle, "taxi"); + var edgeIsBezier = curveStyle === "unbundled-bezier" || curveStyle === "bezier"; + var src = _p.source; + var tgt = _p.target; + var srcIndex = src.poolIndex(); + var tgtIndex = tgt.poolIndex(); + var pairId = [srcIndex, tgtIndex].sort(); + var key = getKey3(pairId, edgeIsUnbundled); + var tableEntry = hashTable.get(key); + if (tableEntry == null) { + tableEntry = { + eles: [] + }; + pairIds.push({ + pairId, + edgeIsUnbundled + }); + hashTable.set(key, tableEntry); } - return { - lexerErrors: result.lexerErrors, - lexerReport: result.lexerReport, - parserErrors: result.parserErrors, - value: this.hydrateAstNode(node2, context) - }; - } - createHydrationContext(node2) { - const astNodes = /* @__PURE__ */ new Map(); - const cstNodes = /* @__PURE__ */ new Map(); - for (const astNode of streamAst(node2)) { - astNodes.set(astNode, {}); + tableEntry.eles.push(edge); + if (edgeIsUnbundled) { + tableEntry.hasUnbundled = true; } - let root4; - if (node2.$cstNode) { - for (const cstNode of streamCst(node2.$cstNode)) { - let cst; - if ("fullText" in cstNode) { - cst = new RootCstNodeImpl(cstNode.fullText); - root4 = cst; - } else if ("content" in cstNode) { - cst = new CompositeCstNodeImpl(); - } else if ("tokenType" in cstNode) { - cst = this.hydrateCstLeafNode(cstNode); - } - if (cst) { - cstNodes.set(cstNode, cst); - cst.root = root4; - } - } + if (edgeIsBezier) { + tableEntry.hasBezier = true; } - return { - astNodes, - cstNodes - }; } - hydrateAstNode(node2, context) { - const astNode = context.astNodes.get(node2); - astNode.$type = node2.$type; - astNode.$containerIndex = node2.$containerIndex; - astNode.$containerProperty = node2.$containerProperty; - if (node2.$cstNode) { - astNode.$cstNode = context.cstNodes.get(node2.$cstNode); + var _loop = /* @__PURE__ */ __name(function _loop2() { + var _pairIds$p = pairIds[p3], pairId2 = _pairIds$p.pairId, edgeIsUnbundled2 = _pairIds$p.edgeIsUnbundled; + var key2 = getKey3(pairId2, edgeIsUnbundled2); + var pairInfo = hashTable.get(key2); + var swappedpairInfo; + if (!pairInfo.hasUnbundled) { + var pllEdges = pairInfo.eles[0].parallelEdges().filter(function(e3) { + return e3.isBundledBezier(); + }); + clearArray(pairInfo.eles); + pllEdges.forEach(function(edge2) { + return pairInfo.eles.push(edge2); + }); + pairInfo.eles.sort(function(edge1, edge2) { + return edge1.poolIndex() - edge2.poolIndex(); + }); } - for (const [name, value2] of Object.entries(node2)) { - if (name.startsWith("$")) { - continue; - } - if (Array.isArray(value2)) { - const arr = []; - astNode[name] = arr; - for (const item of value2) { - if (isAstNode(item)) { - arr.push(this.setParent(this.hydrateAstNode(item, context), astNode)); - } else if (isReference(item)) { - arr.push(this.hydrateReference(item, astNode, name, context)); - } else { - arr.push(item); - } + var firstEdge = pairInfo.eles[0]; + var src2 = firstEdge.source(); + var tgt2 = firstEdge.target(); + if (src2.poolIndex() > tgt2.poolIndex()) { + var temp = src2; + src2 = tgt2; + tgt2 = temp; + } + var srcPos = pairInfo.srcPos = src2.position(); + var tgtPos = pairInfo.tgtPos = tgt2.position(); + var srcW = pairInfo.srcW = src2.outerWidth(); + var srcH = pairInfo.srcH = src2.outerHeight(); + var tgtW = pairInfo.tgtW = tgt2.outerWidth(); + var tgtH = pairInfo.tgtH = tgt2.outerHeight(); + var srcShape = pairInfo.srcShape = r2.nodeShapes[_this.getNodeShape(src2)]; + var tgtShape = pairInfo.tgtShape = r2.nodeShapes[_this.getNodeShape(tgt2)]; + var srcCornerRadius = pairInfo.srcCornerRadius = src2.pstyle("corner-radius").value === "auto" ? "auto" : src2.pstyle("corner-radius").pfValue; + var tgtCornerRadius = pairInfo.tgtCornerRadius = tgt2.pstyle("corner-radius").value === "auto" ? "auto" : tgt2.pstyle("corner-radius").pfValue; + var tgtRs = pairInfo.tgtRs = tgt2._private.rscratch; + var srcRs = pairInfo.srcRs = src2._private.rscratch; + pairInfo.dirCounts = { + "north": 0, + "west": 0, + "south": 0, + "east": 0, + "northwest": 0, + "southwest": 0, + "northeast": 0, + "southeast": 0 + }; + for (var _i2 = 0; _i2 < pairInfo.eles.length; _i2++) { + var _edge = pairInfo.eles[_i2]; + var rs = _edge[0]._private.rscratch; + var _curveStyle = _edge.pstyle("curve-style").value; + var _edgeIsUnbundled = _curveStyle === "unbundled-bezier" || endsWith(_curveStyle, "segments") || endsWith(_curveStyle, "taxi"); + var edgeIsSwapped = !src2.same(_edge.source()); + if (!pairInfo.calculatedIntersection && src2 !== tgt2 && (pairInfo.hasBezier || pairInfo.hasUnbundled)) { + pairInfo.calculatedIntersection = true; + var srcOutside = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, tgtPos.x, tgtPos.y, 0, srcCornerRadius, srcRs); + var srcIntn = pairInfo.srcIntn = srcOutside; + var tgtOutside = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, srcPos.x, srcPos.y, 0, tgtCornerRadius, tgtRs); + var tgtIntn = pairInfo.tgtIntn = tgtOutside; + var intersectionPts = pairInfo.intersectionPts = { + x1: srcOutside[0], + x2: tgtOutside[0], + y1: srcOutside[1], + y2: tgtOutside[1] + }; + var posPts = pairInfo.posPts = { + x1: srcPos.x, + x2: tgtPos.x, + y1: srcPos.y, + y2: tgtPos.y + }; + var dy = tgtOutside[1] - srcOutside[1]; + var dx = tgtOutside[0] - srcOutside[0]; + var l4 = Math.sqrt(dx * dx + dy * dy); + if (number$1(l4) && l4 >= AVOID_IMPOSSIBLE_BEZIER_CONSTANT_L) ; + else { + l4 = Math.sqrt(Math.max(dx * dx, AVOID_IMPOSSIBLE_BEZIER_CONSTANT) + Math.max(dy * dy, AVOID_IMPOSSIBLE_BEZIER_CONSTANT)); } - } else if (isAstNode(value2)) { - astNode[name] = this.setParent(this.hydrateAstNode(value2, context), astNode); - } else if (isReference(value2)) { - astNode[name] = this.hydrateReference(value2, astNode, name, context); - } else if (value2 !== void 0) { - astNode[name] = value2; + var vector = pairInfo.vector = { + x: dx, + y: dy + }; + var vectorNorm = pairInfo.vectorNorm = { + x: vector.x / l4, + y: vector.y / l4 + }; + var vectorNormInverse = { + x: -vectorNorm.y, + y: vectorNorm.x + }; + pairInfo.nodesOverlap = !number$1(l4) || tgtShape.checkPoint(srcOutside[0], srcOutside[1], 0, tgtW, tgtH, tgtPos.x, tgtPos.y, tgtCornerRadius, tgtRs) || srcShape.checkPoint(tgtOutside[0], tgtOutside[1], 0, srcW, srcH, srcPos.x, srcPos.y, srcCornerRadius, srcRs); + pairInfo.vectorNormInverse = vectorNormInverse; + swappedpairInfo = { + nodesOverlap: pairInfo.nodesOverlap, + dirCounts: pairInfo.dirCounts, + calculatedIntersection: true, + hasBezier: pairInfo.hasBezier, + hasUnbundled: pairInfo.hasUnbundled, + eles: pairInfo.eles, + srcPos: tgtPos, + srcRs: tgtRs, + tgtPos: srcPos, + tgtRs: srcRs, + srcW: tgtW, + srcH: tgtH, + tgtW: srcW, + tgtH: srcH, + srcIntn: tgtIntn, + tgtIntn: srcIntn, + srcShape: tgtShape, + tgtShape: srcShape, + posPts: { + x1: posPts.x2, + y1: posPts.y2, + x2: posPts.x1, + y2: posPts.y1 + }, + intersectionPts: { + x1: intersectionPts.x2, + y1: intersectionPts.y2, + x2: intersectionPts.x1, + y2: intersectionPts.y1 + }, + vector: { + x: -vector.x, + y: -vector.y + }, + vectorNorm: { + x: -vectorNorm.x, + y: -vectorNorm.y + }, + vectorNormInverse: { + x: -vectorNormInverse.x, + y: -vectorNormInverse.y + } + }; + } + var passedPairInfo = edgeIsSwapped ? swappedpairInfo : pairInfo; + rs.nodesOverlap = passedPairInfo.nodesOverlap; + rs.srcIntn = passedPairInfo.srcIntn; + rs.tgtIntn = passedPairInfo.tgtIntn; + rs.isRound = _curveStyle.startsWith("round"); + if (hasCompounds && (src2.isParent() || src2.isChild() || tgt2.isParent() || tgt2.isChild()) && (src2.parents().anySame(tgt2) || tgt2.parents().anySame(src2) || src2.same(tgt2) && src2.isParent())) { + _this.findCompoundLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); + } else if (src2 === tgt2) { + _this.findLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); + } else if (_curveStyle.endsWith("segments")) { + _this.findSegmentsPoints(_edge, passedPairInfo); + } else if (_curveStyle.endsWith("taxi")) { + _this.findTaxiPoints(_edge, passedPairInfo); + } else if (_curveStyle === "straight" || !_edgeIsUnbundled && pairInfo.eles.length % 2 === 1 && _i2 === Math.floor(pairInfo.eles.length / 2)) { + _this.findStraightEdgePoints(_edge); + } else { + _this.findBezierPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled, edgeIsSwapped); } + _this.findEndpoints(_edge); + _this.tryToCorrectInvalidPoints(_edge, passedPairInfo); + _this.checkForInvalidEdgeWarning(_edge); + _this.storeAllpts(_edge); + _this.storeEdgeProjections(_edge); + _this.calculateArrowAngles(_edge); + _this.recalculateEdgeLabelProjections(_edge); + _this.calculateLabelAngles(_edge); } - return astNode; + }, "_loop"); + for (var p3 = 0; p3 < pairIds.length; p3++) { + _loop(); } - setParent(node2, parent4) { - node2.$container = parent4; - return node2; + this.findHaystackPoints(haystackEdges); + }; + __name(getPts, "getPts"); + BRp$c.getSegmentPoints = function(edge) { + var rs = edge[0]._private.rscratch; + this.recalculateRenderedStyle(edge); + var type3 = rs.edgeType; + if (type3 === "segments") { + return getPts(rs.segpts); } - hydrateReference(reference, node2, name, context) { - return this.linker.buildReference(node2, name, context.cstNodes.get(reference.$refNode), reference.$refText); + }; + BRp$c.getControlPoints = function(edge) { + var rs = edge[0]._private.rscratch; + this.recalculateRenderedStyle(edge); + var type3 = rs.edgeType; + if (type3 === "bezier" || type3 === "multibezier" || type3 === "self" || type3 === "compound") { + return getPts(rs.ctrlpts); } - hydrateCstNode(cstNode, context, num = 0) { - const cstNodeObj = context.cstNodes.get(cstNode); - if (typeof cstNode.grammarSource === "number") { - cstNodeObj.grammarSource = this.getGrammarElement(cstNode.grammarSource); + }; + BRp$c.getEdgeMidpoint = function(edge) { + var rs = edge[0]._private.rscratch; + this.recalculateRenderedStyle(edge); + return { + x: rs.midX, + y: rs.midY + }; + }; + BRp$b = {}; + BRp$b.manualEndptToPx = function(node2, prop) { + var r2 = this; + var npos = node2.position(); + var w4 = node2.outerWidth(); + var h3 = node2.outerHeight(); + var rs = node2._private.rscratch; + if (prop.value.length === 2) { + var p3 = [prop.pfValue[0], prop.pfValue[1]]; + if (prop.units[0] === "%") { + p3[0] = p3[0] * w4; } - cstNodeObj.astNode = context.astNodes.get(cstNode.astNode); - if (isCompositeCstNode(cstNodeObj)) { - for (const child of cstNode.content) { - const hydrated = this.hydrateCstNode(child, context, num++); - cstNodeObj.content.push(hydrated); - } + if (prop.units[1] === "%") { + p3[1] = p3[1] * h3; } - return cstNodeObj; - } - hydrateCstLeafNode(cstNode) { - const tokenType = this.getTokenType(cstNode.tokenType); - const offset = cstNode.offset; - const length2 = cstNode.length; - const startLine = cstNode.startLine; - const startColumn = cstNode.startColumn; - const endLine = cstNode.endLine; - const endColumn = cstNode.endColumn; - const hidden = cstNode.hidden; - const node2 = new LeafCstNodeImpl(offset, length2, { - start: { - line: startLine, - character: startColumn - }, - end: { - line: endLine, - character: endColumn - } - }, tokenType, hidden); - return node2; + p3[0] += npos.x; + p3[1] += npos.y; + return p3; + } else { + var angle2 = prop.pfValue[0]; + angle2 = -Math.PI / 2 + angle2; + var l4 = 2 * Math.max(w4, h3); + var _p = [npos.x + Math.cos(angle2) * l4, npos.y + Math.sin(angle2) * l4]; + return r2.nodeShapes[this.getNodeShape(node2)].intersectLine(npos.x, npos.y, w4, h3, _p[0], _p[1], 0, node2.pstyle("corner-radius").value === "auto" ? "auto" : node2.pstyle("corner-radius").pfValue, rs); } - getTokenType(name) { - return this.lexer.definition[name]; + }; + BRp$b.findEndpoints = function(edge) { + var _ref, _tgtManEndpt$pfValue, _ref2, _srcManEndpt$pfValue; + var r2 = this; + var intersect3; + var source = edge.source()[0]; + var target = edge.target()[0]; + var srcPos = source.position(); + var tgtPos = target.position(); + var tgtArShape = edge.pstyle("target-arrow-shape").value; + var srcArShape = edge.pstyle("source-arrow-shape").value; + var tgtDist = edge.pstyle("target-distance-from-node").pfValue; + var srcDist = edge.pstyle("source-distance-from-node").pfValue; + var srcRs = source._private.rscratch; + var tgtRs = target._private.rscratch; + var curveStyle = edge.pstyle("curve-style").value; + var rs = edge._private.rscratch; + var et2 = rs.edgeType; + var taxi = endsWith(curveStyle, "taxi"); + var self2 = et2 === "self" || et2 === "compound"; + var bezier = et2 === "bezier" || et2 === "multibezier" || self2; + var multi = et2 !== "bezier"; + var lines = et2 === "straight" || et2 === "segments"; + var segments = et2 === "segments"; + var hasEndpts = bezier || multi || lines; + var overrideEndpts = self2 || taxi; + var srcManEndpt = edge.pstyle("source-endpoint"); + var srcManEndptVal = overrideEndpts ? "outside-to-node" : srcManEndpt.value; + var srcCornerRadius = source.pstyle("corner-radius").value === "auto" ? "auto" : source.pstyle("corner-radius").pfValue; + var tgtManEndpt = edge.pstyle("target-endpoint"); + var tgtManEndptVal = overrideEndpts ? "outside-to-node" : tgtManEndpt.value; + var tgtCornerRadius = target.pstyle("corner-radius").value === "auto" ? "auto" : target.pstyle("corner-radius").pfValue; + rs.srcManEndpt = srcManEndpt; + rs.tgtManEndpt = tgtManEndpt; + var p1; + var p22; + var p1_i; + var p2_i; + var tgtManEndptPt = (_ref = (tgtManEndpt === null || tgtManEndpt === void 0 || (_tgtManEndpt$pfValue = tgtManEndpt.pfValue) === null || _tgtManEndpt$pfValue === void 0 ? void 0 : _tgtManEndpt$pfValue.length) === 2 ? tgtManEndpt.pfValue : null) !== null && _ref !== void 0 ? _ref : [0, 0]; + var srcManEndptPt = (_ref2 = (srcManEndpt === null || srcManEndpt === void 0 || (_srcManEndpt$pfValue = srcManEndpt.pfValue) === null || _srcManEndpt$pfValue === void 0 ? void 0 : _srcManEndpt$pfValue.length) === 2 ? srcManEndpt.pfValue : null) !== null && _ref2 !== void 0 ? _ref2 : [0, 0]; + if (bezier) { + var cpStart = [rs.ctrlpts[0], rs.ctrlpts[1]]; + var cpEnd = multi ? [rs.ctrlpts[rs.ctrlpts.length - 2], rs.ctrlpts[rs.ctrlpts.length - 1]] : cpStart; + p1 = cpEnd; + p22 = cpStart; + } else if (lines) { + var srcArrowFromPt = !segments ? [tgtPos.x + tgtManEndptPt[0], tgtPos.y + tgtManEndptPt[1]] : rs.segpts.slice(0, 2); + var tgtArrowFromPt = !segments ? [srcPos.x + srcManEndptPt[0], srcPos.y + srcManEndptPt[1]] : rs.segpts.slice(rs.segpts.length - 2); + p1 = tgtArrowFromPt; + p22 = srcArrowFromPt; } - getGrammarElementId(node2) { - if (!node2) { - return void 0; + if (tgtManEndptVal === "inside-to-node") { + intersect3 = [tgtPos.x, tgtPos.y]; + } else if (tgtManEndpt.units) { + intersect3 = this.manualEndptToPx(target, tgtManEndpt); + } else if (tgtManEndptVal === "outside-to-line") { + intersect3 = rs.tgtIntn; + } else { + if (tgtManEndptVal === "outside-to-node" || tgtManEndptVal === "outside-to-node-or-label") { + p1_i = p1; + } else if (tgtManEndptVal === "outside-to-line" || tgtManEndptVal === "outside-to-line-or-label") { + p1_i = [srcPos.x, srcPos.y]; } - if (this.grammarElementIdMap.size === 0) { - this.createGrammarElementIdMap(); + intersect3 = r2.nodeShapes[this.getNodeShape(target)].intersectLine(tgtPos.x, tgtPos.y, target.outerWidth(), target.outerHeight(), p1_i[0], p1_i[1], 0, tgtCornerRadius, tgtRs); + if (tgtManEndptVal === "outside-to-node-or-label" || tgtManEndptVal === "outside-to-line-or-label") { + var trs = target._private.rscratch; + var lw = trs.labelWidth; + var lh = trs.labelHeight; + var lx = trs.labelX; + var ly = trs.labelY; + var lw2 = lw / 2; + var lh2 = lh / 2; + var va = target.pstyle("text-valign").value; + if (va === "top") { + ly -= lh2; + } else if (va === "bottom") { + ly += lh2; + } + var ha = target.pstyle("text-halign").value; + if (ha === "left") { + lx -= lw2; + } else if (ha === "right") { + lx += lw2; + } + var labelIntersect = polygonIntersectLine(p1_i[0], p1_i[1], [lx - lw2, ly - lh2, lx + lw2, ly - lh2, lx + lw2, ly + lh2, lx - lw2, ly + lh2], tgtPos.x, tgtPos.y); + if (labelIntersect.length > 0) { + var refPt = srcPos; + var intSqdist = sqdist(refPt, array2point(intersect3)); + var labIntSqdist = sqdist(refPt, array2point(labelIntersect)); + var minSqDist = intSqdist; + if (labIntSqdist < intSqdist) { + intersect3 = labelIntersect; + minSqDist = labIntSqdist; + } + if (labelIntersect.length > 2) { + var labInt2SqDist = sqdist(refPt, { + x: labelIntersect[2], + y: labelIntersect[3] + }); + if (labInt2SqDist < minSqDist) { + intersect3 = [labelIntersect[2], labelIntersect[3]]; + } + } + } } - return this.grammarElementIdMap.get(node2); } - getGrammarElement(id29) { - if (this.grammarElementIdMap.size === 0) { - this.createGrammarElementIdMap(); + var arrowEnd = shortenIntersection(intersect3, p1, r2.arrowShapes[tgtArShape].spacing(edge) + tgtDist); + var edgeEnd = shortenIntersection(intersect3, p1, r2.arrowShapes[tgtArShape].gap(edge) + tgtDist); + rs.endX = edgeEnd[0]; + rs.endY = edgeEnd[1]; + rs.arrowEndX = arrowEnd[0]; + rs.arrowEndY = arrowEnd[1]; + if (srcManEndptVal === "inside-to-node") { + intersect3 = [srcPos.x, srcPos.y]; + } else if (srcManEndpt.units) { + intersect3 = this.manualEndptToPx(source, srcManEndpt); + } else if (srcManEndptVal === "outside-to-line") { + intersect3 = rs.srcIntn; + } else { + if (srcManEndptVal === "outside-to-node" || srcManEndptVal === "outside-to-node-or-label") { + p2_i = p22; + } else if (srcManEndptVal === "outside-to-line" || srcManEndptVal === "outside-to-line-or-label") { + p2_i = [tgtPos.x, tgtPos.y]; } - const element3 = this.grammarElementIdMap.getKey(id29); - return element3; - } - createGrammarElementIdMap() { - let id29 = 0; - for (const element3 of streamAst(this.grammar)) { - if (isAbstractElement(element3)) { - this.grammarElementIdMap.set(element3, id29++); + intersect3 = r2.nodeShapes[this.getNodeShape(source)].intersectLine(srcPos.x, srcPos.y, source.outerWidth(), source.outerHeight(), p2_i[0], p2_i[1], 0, srcCornerRadius, srcRs); + if (srcManEndptVal === "outside-to-node-or-label" || srcManEndptVal === "outside-to-line-or-label") { + var srs = source._private.rscratch; + var _lw = srs.labelWidth; + var _lh = srs.labelHeight; + var _lx = srs.labelX; + var _ly = srs.labelY; + var _lw2 = _lw / 2; + var _lh2 = _lh / 2; + var _va = source.pstyle("text-valign").value; + if (_va === "top") { + _ly -= _lh2; + } else if (_va === "bottom") { + _ly += _lh2; + } + var _ha = source.pstyle("text-halign").value; + if (_ha === "left") { + _lx -= _lw2; + } else if (_ha === "right") { + _lx += _lw2; + } + var _labelIntersect = polygonIntersectLine(p2_i[0], p2_i[1], [_lx - _lw2, _ly - _lh2, _lx + _lw2, _ly - _lh2, _lx + _lw2, _ly + _lh2, _lx - _lw2, _ly + _lh2], srcPos.x, srcPos.y); + if (_labelIntersect.length > 0) { + var _refPt = tgtPos; + var _intSqdist = sqdist(_refPt, array2point(intersect3)); + var _labIntSqdist = sqdist(_refPt, array2point(_labelIntersect)); + var _minSqDist = _intSqdist; + if (_labIntSqdist < _intSqdist) { + intersect3 = [_labelIntersect[0], _labelIntersect[1]]; + _minSqDist = _labIntSqdist; + } + if (_labelIntersect.length > 2) { + var _labInt2SqDist = sqdist(_refPt, { + x: _labelIntersect[2], + y: _labelIntersect[3] + }); + if (_labInt2SqDist < _minSqDist) { + intersect3 = [_labelIntersect[2], _labelIntersect[3]]; + } + } } } } - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/default-module.js - function createDefaultCoreModule(context) { - return { - documentation: { - CommentProvider: /* @__PURE__ */ __name((services) => new DefaultCommentProvider(services), "CommentProvider"), - DocumentationProvider: /* @__PURE__ */ __name((services) => new JSDocDocumentationProvider(services), "DocumentationProvider") - }, - parser: { - AsyncParser: /* @__PURE__ */ __name((services) => new DefaultAsyncParser(services), "AsyncParser"), - GrammarConfig: /* @__PURE__ */ __name((services) => createGrammarConfig(services), "GrammarConfig"), - LangiumParser: /* @__PURE__ */ __name((services) => createLangiumParser(services), "LangiumParser"), - CompletionParser: /* @__PURE__ */ __name((services) => createCompletionParser(services), "CompletionParser"), - ValueConverter: /* @__PURE__ */ __name(() => new DefaultValueConverter(), "ValueConverter"), - TokenBuilder: /* @__PURE__ */ __name(() => new DefaultTokenBuilder(), "TokenBuilder"), - Lexer: /* @__PURE__ */ __name((services) => new DefaultLexer(services), "Lexer"), - ParserErrorMessageProvider: /* @__PURE__ */ __name(() => new LangiumParserErrorMessageProvider(), "ParserErrorMessageProvider"), - LexerErrorMessageProvider: /* @__PURE__ */ __name(() => new DefaultLexerErrorMessageProvider(), "LexerErrorMessageProvider") - }, - workspace: { - AstNodeLocator: /* @__PURE__ */ __name(() => new DefaultAstNodeLocator(), "AstNodeLocator"), - AstNodeDescriptionProvider: /* @__PURE__ */ __name((services) => new DefaultAstNodeDescriptionProvider(services), "AstNodeDescriptionProvider"), - ReferenceDescriptionProvider: /* @__PURE__ */ __name((services) => new DefaultReferenceDescriptionProvider(services), "ReferenceDescriptionProvider") - }, - references: { - Linker: /* @__PURE__ */ __name((services) => new DefaultLinker(services), "Linker"), - NameProvider: /* @__PURE__ */ __name(() => new DefaultNameProvider(), "NameProvider"), - ScopeProvider: /* @__PURE__ */ __name((services) => new DefaultScopeProvider(services), "ScopeProvider"), - ScopeComputation: /* @__PURE__ */ __name((services) => new DefaultScopeComputation(services), "ScopeComputation"), - References: /* @__PURE__ */ __name((services) => new DefaultReferences(services), "References") - }, - serializer: { - Hydrator: /* @__PURE__ */ __name((services) => new DefaultHydrator(services), "Hydrator"), - JsonSerializer: /* @__PURE__ */ __name((services) => new DefaultJsonSerializer(services), "JsonSerializer") - }, - validation: { - DocumentValidator: /* @__PURE__ */ __name((services) => new DefaultDocumentValidator(services), "DocumentValidator"), - ValidationRegistry: /* @__PURE__ */ __name((services) => new ValidationRegistry(services), "ValidationRegistry") - }, - shared: /* @__PURE__ */ __name(() => context.shared, "shared") - }; - } - function createDefaultSharedCoreModule(context) { - return { - ServiceRegistry: /* @__PURE__ */ __name((services) => new DefaultServiceRegistry(services), "ServiceRegistry"), - workspace: { - LangiumDocuments: /* @__PURE__ */ __name((services) => new DefaultLangiumDocuments(services), "LangiumDocuments"), - LangiumDocumentFactory: /* @__PURE__ */ __name((services) => new DefaultLangiumDocumentFactory(services), "LangiumDocumentFactory"), - DocumentBuilder: /* @__PURE__ */ __name((services) => new DefaultDocumentBuilder(services), "DocumentBuilder"), - IndexManager: /* @__PURE__ */ __name((services) => new DefaultIndexManager(services), "IndexManager"), - WorkspaceManager: /* @__PURE__ */ __name((services) => new DefaultWorkspaceManager(services), "WorkspaceManager"), - FileSystemProvider: /* @__PURE__ */ __name((services) => context.fileSystemProvider(services), "FileSystemProvider"), - WorkspaceLock: /* @__PURE__ */ __name(() => new DefaultWorkspaceLock(), "WorkspaceLock"), - ConfigurationProvider: /* @__PURE__ */ __name((services) => new DefaultConfigurationProvider(services), "ConfigurationProvider") - } - }; - } - var init_default_module = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/default-module.js"() { - "use strict"; - init_grammar_config(); - init_completion_parser_builder(); - init_langium_parser_builder(); - init_token_builder(); - init_value_converter(); - init_linker(); - init_name_provider(); - init_references(); - init_scope_computation(); - init_scope_provider(); - init_json_serializer(); - init_service_registry(); - init_document_validator(); - init_validation_registry(); - init_ast_descriptions(); - init_ast_node_locator(); - init_configuration(); - init_document_builder(); - init_documents(); - init_index_manager(); - init_workspace_manager(); - init_lexer2(); - init_documentation_provider(); - init_comment_provider(); - init_langium_parser(); - init_async_parser(); - init_workspace_lock(); - init_hydrator(); - __name(createDefaultCoreModule, "createDefaultCoreModule"); - __name(createDefaultSharedCoreModule, "createDefaultSharedCoreModule"); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/dependency-injection.js - function inject(module1, module2, module3, module4, module5, module6, module7, module8, module9) { - const module10 = [module1, module2, module3, module4, module5, module6, module7, module8, module9].reduce(_merge, {}); - return _inject(module10); - } - function eagerLoad(item) { - if (item && item[isProxy]) { - for (const value2 of Object.values(item)) { - eagerLoad(value2); - } - } - return item; - } - function _inject(module2, injector) { - const proxy = new Proxy({}, { - deleteProperty: /* @__PURE__ */ __name(() => false, "deleteProperty"), - set: /* @__PURE__ */ __name(() => { - throw new Error("Cannot set property on injected service container"); - }, "set"), - get: /* @__PURE__ */ __name((obj, prop) => { - if (prop === isProxy) { - return true; - } else { - return _resolve(obj, prop, module2, injector || proxy); - } - }, "get"), - getOwnPropertyDescriptor: /* @__PURE__ */ __name((obj, prop) => (_resolve(obj, prop, module2, injector || proxy), Object.getOwnPropertyDescriptor(obj, prop)), "getOwnPropertyDescriptor"), - // used by for..in - has: /* @__PURE__ */ __name((_2, prop) => prop in module2, "has"), - // used by ..in.. - ownKeys: /* @__PURE__ */ __name(() => [...Object.getOwnPropertyNames(module2)], "ownKeys") - // used by for..in - }); - return proxy; - } - function _resolve(obj, prop, module2, injector) { - if (prop in obj) { - if (obj[prop] instanceof Error) { - throw new Error("Construction failure. Please make sure that your dependencies are constructable.", { cause: obj[prop] }); - } - if (obj[prop] === __requested__) { - throw new Error('Cycle detected. Please make "' + String(prop) + '" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies'); - } - return obj[prop]; - } else if (prop in module2) { - const value2 = module2[prop]; - obj[prop] = __requested__; - try { - obj[prop] = typeof value2 === "function" ? value2(injector) : _inject(value2, injector); - } catch (error3) { - obj[prop] = error3 instanceof Error ? error3 : void 0; - throw error3; - } - return obj[prop]; - } else { - return void 0; - } - } - function _merge(target, source) { - if (source) { - for (const [key, value2] of Object.entries(source)) { - if (value2 !== void 0) { - const value1 = target[key]; - if (value1 !== null && value2 !== null && typeof value1 === "object" && typeof value2 === "object") { - target[key] = _merge(value1, value2); + var arrowStart = shortenIntersection(intersect3, p22, r2.arrowShapes[srcArShape].spacing(edge) + srcDist); + var edgeStart = shortenIntersection(intersect3, p22, r2.arrowShapes[srcArShape].gap(edge) + srcDist); + rs.startX = edgeStart[0]; + rs.startY = edgeStart[1]; + rs.arrowStartX = arrowStart[0]; + rs.arrowStartY = arrowStart[1]; + if (hasEndpts) { + if (!number$1(rs.startX) || !number$1(rs.startY) || !number$1(rs.endX) || !number$1(rs.endY)) { + rs.badLine = true; } else { - target[key] = value2; + rs.badLine = false; } } - } - } - return target; - } - var Module, isProxy, __requested__; - var init_dependency_injection = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/dependency-injection.js"() { - "use strict"; - (function(Module2) { - Module2.merge = (m1, m2) => _merge(_merge({}, m1), m2); - })(Module || (Module = {})); - __name(inject, "inject"); - isProxy = Symbol("isProxy"); - __name(eagerLoad, "eagerLoad"); - __name(_inject, "_inject"); - __requested__ = Symbol(); - __name(_resolve, "_resolve"); - __name(_merge, "_merge"); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/services.js - var init_services = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/services.js"() { - "use strict"; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/index.js - var init_documentation = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/index.js"() { - "use strict"; - init_comment_provider(); - init_documentation_provider(); - init_jsdoc(); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/language-meta-data.js - var init_language_meta_data = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/language-meta-data.js"() { - "use strict"; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/index.js - var init_languages = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/index.js"() { - "use strict"; - init_grammar_config(); - init_language_meta_data(); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/indentation-aware.js - var indentationBuilderDefaultOptions, LexingMode, IndentationAwareTokenBuilder, IndentationAwareLexer; - var init_indentation_aware = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/indentation-aware.js"() { - "use strict"; - init_api5(); - init_token_builder(); - init_lexer2(); - indentationBuilderDefaultOptions = { - indentTokenName: "INDENT", - dedentTokenName: "DEDENT", - whitespaceTokenName: "WS", - ignoreIndentationDelimiters: [] }; - (function(LexingMode2) { - LexingMode2["REGULAR"] = "indentation-sensitive"; - LexingMode2["IGNORE_INDENTATION"] = "ignore-indentation"; - })(LexingMode || (LexingMode = {})); - IndentationAwareTokenBuilder = class extends DefaultTokenBuilder { - static { - __name(this, "IndentationAwareTokenBuilder"); + BRp$b.getSourceEndpoint = function(edge) { + var rs = edge[0]._private.rscratch; + this.recalculateRenderedStyle(edge); + switch (rs.edgeType) { + case "haystack": + return { + x: rs.haystackPts[0], + y: rs.haystackPts[1] + }; + default: + return { + x: rs.arrowStartX, + y: rs.arrowStartY + }; } - constructor(options3 = indentationBuilderDefaultOptions) { - super(); - this.indentationStack = [0]; - this.whitespaceRegExp = /[ \t]+/y; - this.options = Object.assign(Object.assign({}, indentationBuilderDefaultOptions), options3); - this.indentTokenType = createToken({ - name: this.options.indentTokenName, - pattern: this.indentMatcher.bind(this), - line_breaks: false - }); - this.dedentTokenType = createToken({ - name: this.options.dedentTokenName, - pattern: this.dedentMatcher.bind(this), - line_breaks: false - }); + }; + BRp$b.getTargetEndpoint = function(edge) { + var rs = edge[0]._private.rscratch; + this.recalculateRenderedStyle(edge); + switch (rs.edgeType) { + case "haystack": + return { + x: rs.haystackPts[2], + y: rs.haystackPts[3] + }; + default: + return { + x: rs.arrowEndX, + y: rs.arrowEndY + }; } - buildTokens(grammar, options3) { - const tokenTypes = super.buildTokens(grammar, options3); - if (!isTokenTypeArray(tokenTypes)) { - throw new Error("Invalid tokens built by default builder"); - } - const { indentTokenName, dedentTokenName, whitespaceTokenName, ignoreIndentationDelimiters } = this.options; - let dedent2; - let indent; - let ws; - const otherTokens = []; - for (const tokenType of tokenTypes) { - for (const [begin, end2] of ignoreIndentationDelimiters) { - if (tokenType.name === begin) { - tokenType.PUSH_MODE = LexingMode.IGNORE_INDENTATION; - } else if (tokenType.name === end2) { - tokenType.POP_MODE = true; - } - } - if (tokenType.name === dedentTokenName) { - dedent2 = tokenType; - } else if (tokenType.name === indentTokenName) { - indent = tokenType; - } else if (tokenType.name === whitespaceTokenName) { - ws = tokenType; - } else { - otherTokens.push(tokenType); - } - } - if (!dedent2 || !indent || !ws) { - throw new Error("Some indentation/whitespace tokens not found!"); + }; + BRp$a = {}; + __name(pushBezierPts, "pushBezierPts"); + BRp$a.storeEdgeProjections = function(edge) { + var _p = edge._private; + var rs = _p.rscratch; + var et2 = rs.edgeType; + _p.rstyle.bezierPts = null; + _p.rstyle.linePts = null; + _p.rstyle.haystackPts = null; + if (et2 === "multibezier" || et2 === "bezier" || et2 === "self" || et2 === "compound") { + _p.rstyle.bezierPts = []; + for (var i2 = 0; i2 + 5 < rs.allpts.length; i2 += 4) { + pushBezierPts(this, edge, rs.allpts.slice(i2, i2 + 6)); } - if (ignoreIndentationDelimiters.length > 0) { - const multiModeLexerDef = { - modes: { - [LexingMode.REGULAR]: [dedent2, indent, ...otherTokens, ws], - [LexingMode.IGNORE_INDENTATION]: [...otherTokens, ws] - }, - defaultMode: LexingMode.REGULAR - }; - return multiModeLexerDef; - } else { - return [dedent2, indent, ws, ...otherTokens]; + } else if (et2 === "segments") { + var lpts = _p.rstyle.linePts = []; + for (var i2 = 0; i2 + 1 < rs.allpts.length; i2 += 2) { + lpts.push({ + x: rs.allpts[i2], + y: rs.allpts[i2 + 1] + }); } + } else if (et2 === "haystack") { + var hpts = rs.haystackPts; + _p.rstyle.haystackPts = [{ + x: hpts[0], + y: hpts[1] + }, { + x: hpts[2], + y: hpts[3] + }]; } - flushLexingReport(text4) { - const result = super.flushLexingReport(text4); - return Object.assign(Object.assign({}, result), { remainingDedents: this.flushRemainingDedents(text4) }); - } - /** - * Helper function to check if the current position is the start of a new line. - * - * @param text The full input string. - * @param offset The current position at which to check - * @returns Whether the current position is the start of a new line - */ - isStartOfLine(text4, offset) { - return offset === 0 || "\r\n".includes(text4[offset - 1]); + _p.rstyle.arrowWidth = this.getArrowWidth(edge.pstyle("width").pfValue, edge.pstyle("arrow-scale").value) * this.arrowShapeWidth; + }; + BRp$a.recalculateEdgeProjections = function(edges3) { + this.findEdgeControlPoints(edges3); + }; + BRp$9 = {}; + BRp$9.recalculateNodeLabelProjection = function(node2) { + var content = node2.pstyle("label").strValue; + if (emptyString(content)) { + return; } - /** - * A helper function used in matching both indents and dedents. - * - * @param text The full input string. - * @param offset The current position at which to attempt a match - * @param tokens Previously scanned tokens - * @param groups Token Groups - * @returns The current and previous indentation levels and the matched whitespace - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - matchWhitespace(text4, offset, tokens2, groups) { - var _a; - this.whitespaceRegExp.lastIndex = offset; - const match2 = this.whitespaceRegExp.exec(text4); - return { - currIndentLevel: (_a = match2 === null || match2 === void 0 ? void 0 : match2[0].length) !== null && _a !== void 0 ? _a : 0, - prevIndentLevel: this.indentationStack.at(-1), - match: match2 - }; + var textX, textY; + var _p = node2._private; + var nodeWidth = node2.width(); + var nodeHeight = node2.height(); + var padding2 = node2.padding(); + var nodePos = node2.position(); + var textHalign = node2.pstyle("text-halign").strValue; + var textValign = node2.pstyle("text-valign").strValue; + var rs = _p.rscratch; + var rstyle = _p.rstyle; + switch (textHalign) { + case "left": + textX = nodePos.x - nodeWidth / 2 - padding2; + break; + case "right": + textX = nodePos.x + nodeWidth / 2 + padding2; + break; + default: + textX = nodePos.x; } - /** - * Helper function to create an instance of an indentation token. - * - * @param tokenType Indent or dedent token type - * @param text Full input string, used to calculate the line number - * @param image The original image of the token (tabs or spaces) - * @param offset Current position in the input string - * @returns The indentation token instance - */ - createIndentationTokenInstance(tokenType, text4, image, offset) { - const lineNumber = this.getLineNumber(text4, offset); - return createTokenInstance(tokenType, image, offset, offset + image.length, lineNumber, lineNumber, 1, image.length); + switch (textValign) { + case "top": + textY = nodePos.y - nodeHeight / 2 - padding2; + break; + case "bottom": + textY = nodePos.y + nodeHeight / 2 + padding2; + break; + default: + textY = nodePos.y; } - /** - * Helper function to get the line number at a given offset. - * - * @param text Full input string, used to calculate the line number - * @param offset Current position in the input string - * @returns The line number at the given offset - */ - getLineNumber(text4, offset) { - return text4.substring(0, offset).split(/\r\n|\r|\n/).length; + rs.labelX = textX; + rs.labelY = textY; + rstyle.labelX = textX; + rstyle.labelY = textY; + this.calculateLabelAngles(node2); + this.applyLabelDimensions(node2); + }; + lineAngleFromDelta = /* @__PURE__ */ __name(function lineAngleFromDelta2(dx, dy) { + var angle2 = Math.atan(dy / dx); + if (dx === 0 && angle2 < 0) { + angle2 = angle2 * -1; } - /** - * A custom pattern for matching indents - * - * @param text The full input string. - * @param offset The offset at which to attempt a match - * @param tokens Previously scanned tokens - * @param groups Token Groups - */ - indentMatcher(text4, offset, tokens2, groups) { - if (!this.isStartOfLine(text4, offset)) { - return null; - } - const { currIndentLevel, prevIndentLevel, match: match2 } = this.matchWhitespace(text4, offset, tokens2, groups); - if (currIndentLevel <= prevIndentLevel) { - return null; - } - this.indentationStack.push(currIndentLevel); - return match2; + return angle2; + }, "lineAngleFromDelta"); + lineAngle = /* @__PURE__ */ __name(function lineAngle2(p0, p1) { + var dx = p1.x - p0.x; + var dy = p1.y - p0.y; + return lineAngleFromDelta(dx, dy); + }, "lineAngle"); + bezierAngle = /* @__PURE__ */ __name(function bezierAngle2(p0, p1, p22, t4) { + var t03 = bound(0, t4 - 1e-3, 1); + var t13 = bound(0, t4 + 1e-3, 1); + var lp0 = qbezierPtAt(p0, p1, p22, t03); + var lp1 = qbezierPtAt(p0, p1, p22, t13); + return lineAngle(lp0, lp1); + }, "bezierAngle"); + BRp$9.recalculateEdgeLabelProjections = function(edge) { + var p3; + var _p = edge._private; + var rs = _p.rscratch; + var r2 = this; + var content = { + mid: edge.pstyle("label").strValue, + source: edge.pstyle("source-label").strValue, + target: edge.pstyle("target-label").strValue + }; + if (content.mid || content.source || content.target) ; + else { + return; } - /** - * A custom pattern for matching dedents - * - * @param text The full input string. - * @param offset The offset at which to attempt a match - * @param tokens Previously scanned tokens - * @param groups Token Groups - */ - dedentMatcher(text4, offset, tokens2, groups) { - var _a, _b, _c, _d; - if (!this.isStartOfLine(text4, offset)) { - return null; - } - const { currIndentLevel, prevIndentLevel, match: match2 } = this.matchWhitespace(text4, offset, tokens2, groups); - if (currIndentLevel >= prevIndentLevel) { - return null; + p3 = { + x: rs.midX, + y: rs.midY + }; + var setRs = /* @__PURE__ */ __name(function setRs2(propName, prefix, value2) { + setPrefixedProperty(_p.rscratch, propName, prefix, value2); + setPrefixedProperty(_p.rstyle, propName, prefix, value2); + }, "setRs"); + setRs("labelX", null, p3.x); + setRs("labelY", null, p3.y); + var midAngle = lineAngleFromDelta(rs.midDispX, rs.midDispY); + setRs("labelAutoAngle", null, midAngle); + var _createControlPointInfo = /* @__PURE__ */ __name(function createControlPointInfo() { + if (_createControlPointInfo.cache) { + return _createControlPointInfo.cache; } - const matchIndentIndex = this.indentationStack.lastIndexOf(currIndentLevel); - if (matchIndentIndex === -1) { - this.diagnostics.push({ - severity: "error", - message: `Invalid dedent level ${currIndentLevel} at offset: ${offset}. Current indentation stack: ${this.indentationStack}`, - offset, - length: (_b = (_a = match2 === null || match2 === void 0 ? void 0 : match2[0]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0, - line: this.getLineNumber(text4, offset), - column: 1 + var ctrlpts = []; + for (var i2 = 0; i2 + 5 < rs.allpts.length; i2 += 4) { + var p0 = { + x: rs.allpts[i2], + y: rs.allpts[i2 + 1] + }; + var p1 = { + x: rs.allpts[i2 + 2], + y: rs.allpts[i2 + 3] + }; + var p22 = { + x: rs.allpts[i2 + 4], + y: rs.allpts[i2 + 5] + }; + ctrlpts.push({ + p0, + p1, + p2: p22, + startDist: 0, + length: 0, + segments: [] }); - return null; - } - const numberOfDedents = this.indentationStack.length - matchIndentIndex - 1; - const newlinesBeforeDedent = (_d = (_c = text4.substring(0, offset).match(/[\r\n]+$/)) === null || _c === void 0 ? void 0 : _c[0].length) !== null && _d !== void 0 ? _d : 1; - for (let i2 = 0; i2 < numberOfDedents; i2++) { - const token2 = this.createIndentationTokenInstance( - this.dedentTokenType, - text4, - "", - // Dedents are 0-width tokens - offset - (newlinesBeforeDedent - 1) - ); - tokens2.push(token2); - this.indentationStack.pop(); } - return null; - } - buildTerminalToken(terminal) { - const tokenType = super.buildTerminalToken(terminal); - const { indentTokenName, dedentTokenName, whitespaceTokenName } = this.options; - if (tokenType.name === indentTokenName) { - return this.indentTokenType; - } else if (tokenType.name === dedentTokenName) { - return this.dedentTokenType; - } else if (tokenType.name === whitespaceTokenName) { - return createToken({ - name: whitespaceTokenName, - pattern: this.whitespaceRegExp, - group: Lexer2.SKIPPED - }); + var bpts = _p.rstyle.bezierPts; + var nProjs = r2.bezierProjPcts.length; + function addSegment(cp2, p02, p12, t03, t13) { + var length2 = dist(p02, p12); + var prevSegment = cp2.segments[cp2.segments.length - 1]; + var segment = { + p0: p02, + p1: p12, + t0: t03, + t1: t13, + startDist: prevSegment ? prevSegment.startDist + prevSegment.length : 0, + length: length2 + }; + cp2.segments.push(segment); + cp2.length += length2; } - return tokenType; - } - /** - * Resets the indentation stack between different runs of the lexer - * - * @param text Full text that was tokenized - * @returns Remaining dedent tokens to match all previous indents at the end of the file - */ - flushRemainingDedents(text4) { - const remainingDedents = []; - while (this.indentationStack.length > 1) { - remainingDedents.push(this.createIndentationTokenInstance(this.dedentTokenType, text4, "", text4.length)); - this.indentationStack.pop(); + __name(addSegment, "addSegment"); + for (var _i = 0; _i < ctrlpts.length; _i++) { + var cp = ctrlpts[_i]; + var prevCp = ctrlpts[_i - 1]; + if (prevCp) { + cp.startDist = prevCp.startDist + prevCp.length; + } + addSegment(cp, cp.p0, bpts[_i * nProjs], 0, r2.bezierProjPcts[0]); + for (var j3 = 0; j3 < nProjs - 1; j3++) { + addSegment(cp, bpts[_i * nProjs + j3], bpts[_i * nProjs + j3 + 1], r2.bezierProjPcts[j3], r2.bezierProjPcts[j3 + 1]); + } + addSegment(cp, bpts[_i * nProjs + nProjs - 1], cp.p2, r2.bezierProjPcts[nProjs - 1], 1); } - this.indentationStack = [0]; - return remainingDedents; + return _createControlPointInfo.cache = ctrlpts; + }, "createControlPointInfo"); + var calculateEndProjection = /* @__PURE__ */ __name(function calculateEndProjection2(prefix) { + var angle2; + var isSrc = prefix === "source"; + if (!content[prefix]) { + return; + } + var offset = edge.pstyle(prefix + "-text-offset").pfValue; + switch (rs.edgeType) { + case "self": + case "compound": + case "bezier": + case "multibezier": { + var cps = _createControlPointInfo(); + var selected; + var startDist = 0; + var totalDist = 0; + for (var i2 = 0; i2 < cps.length; i2++) { + var _cp = cps[isSrc ? i2 : cps.length - 1 - i2]; + for (var j3 = 0; j3 < _cp.segments.length; j3++) { + var _seg = _cp.segments[isSrc ? j3 : _cp.segments.length - 1 - j3]; + var lastSeg = i2 === cps.length - 1 && j3 === _cp.segments.length - 1; + startDist = totalDist; + totalDist += _seg.length; + if (totalDist >= offset || lastSeg) { + selected = { + cp: _cp, + segment: _seg + }; + break; + } + } + if (selected) { + break; + } + } + var cp = selected.cp; + var seg = selected.segment; + var tSegment = (offset - startDist) / seg.length; + var segDt = seg.t1 - seg.t0; + var t4 = isSrc ? seg.t0 + segDt * tSegment : seg.t1 - segDt * tSegment; + t4 = bound(0, t4, 1); + p3 = qbezierPtAt(cp.p0, cp.p1, cp.p2, t4); + angle2 = bezierAngle(cp.p0, cp.p1, cp.p2, t4); + break; + } + case "straight": + case "segments": + case "haystack": { + var d3 = 0, di, d0; + var p0, p1; + var l4 = rs.allpts.length; + for (var _i2 = 0; _i2 + 3 < l4; _i2 += 2) { + if (isSrc) { + p0 = { + x: rs.allpts[_i2], + y: rs.allpts[_i2 + 1] + }; + p1 = { + x: rs.allpts[_i2 + 2], + y: rs.allpts[_i2 + 3] + }; + } else { + p0 = { + x: rs.allpts[l4 - 2 - _i2], + y: rs.allpts[l4 - 1 - _i2] + }; + p1 = { + x: rs.allpts[l4 - 4 - _i2], + y: rs.allpts[l4 - 3 - _i2] + }; + } + di = dist(p0, p1); + d0 = d3; + d3 += di; + if (d3 >= offset) { + break; + } + } + var pD = offset - d0; + var _t = pD / di; + _t = bound(0, _t, 1); + p3 = lineAt(p0, p1, _t); + angle2 = lineAngle(p0, p1); + break; + } + } + setRs("labelX", prefix, p3.x); + setRs("labelY", prefix, p3.y); + setRs("labelAutoAngle", prefix, angle2); + }, "calculateEndProjection"); + calculateEndProjection("source"); + calculateEndProjection("target"); + this.applyLabelDimensions(edge); + }; + BRp$9.applyLabelDimensions = function(ele) { + this.applyPrefixedLabelDimensions(ele); + if (ele.isEdge()) { + this.applyPrefixedLabelDimensions(ele, "source"); + this.applyPrefixedLabelDimensions(ele, "target"); } }; - IndentationAwareLexer = class extends DefaultLexer { - static { - __name(this, "IndentationAwareLexer"); + BRp$9.applyPrefixedLabelDimensions = function(ele, prefix) { + var _p = ele._private; + var text4 = this.getLabelText(ele, prefix); + var cacheKey = hashString(text4, ele._private.labelDimsKey); + if (getPrefixedProperty(_p.rscratch, "prefixedLabelDimsKey", prefix) === cacheKey) { + return; } - constructor(services) { - super(services); - if (services.parser.TokenBuilder instanceof IndentationAwareTokenBuilder) { - this.indentationTokenBuilder = services.parser.TokenBuilder; + setPrefixedProperty(_p.rscratch, "prefixedLabelDimsKey", prefix, cacheKey); + var labelDims = this.calculateLabelDimensions(ele, text4); + var lineHeight = ele.pstyle("line-height").pfValue; + var textWrap = ele.pstyle("text-wrap").strValue; + var lines = getPrefixedProperty(_p.rscratch, "labelWrapCachedLines", prefix) || []; + var numLines = textWrap !== "wrap" ? 1 : Math.max(lines.length, 1); + var normPerLineHeight = labelDims.height / numLines; + var labelLineHeight = normPerLineHeight * lineHeight; + var width3 = labelDims.width; + var height2 = labelDims.height + (numLines - 1) * (lineHeight - 1) * normPerLineHeight; + setPrefixedProperty(_p.rstyle, "labelWidth", prefix, width3); + setPrefixedProperty(_p.rscratch, "labelWidth", prefix, width3); + setPrefixedProperty(_p.rstyle, "labelHeight", prefix, height2); + setPrefixedProperty(_p.rscratch, "labelHeight", prefix, height2); + setPrefixedProperty(_p.rscratch, "labelLineHeight", prefix, labelLineHeight); + }; + BRp$9.getLabelText = function(ele, prefix) { + var _p = ele._private; + var pfd = prefix ? prefix + "-" : ""; + var text4 = ele.pstyle(pfd + "label").strValue; + var textTransform = ele.pstyle("text-transform").value; + var rscratch = /* @__PURE__ */ __name(function rscratch2(propName, value2) { + if (value2) { + setPrefixedProperty(_p.rscratch, propName, prefix, value2); + return value2; } else { - throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder"); + return getPrefixedProperty(_p.rscratch, propName, prefix); } + }, "rscratch"); + if (!text4) { + return ""; } - tokenize(text4, options3 = DEFAULT_TOKENIZE_OPTIONS) { - const result = super.tokenize(text4); - const report = result.report; - if ((options3 === null || options3 === void 0 ? void 0 : options3.mode) === "full") { - result.tokens.push(...report.remainingDedents); + if (textTransform == "none") ; + else if (textTransform == "uppercase") { + text4 = text4.toUpperCase(); + } else if (textTransform == "lowercase") { + text4 = text4.toLowerCase(); + } + var wrapStyle = ele.pstyle("text-wrap").value; + if (wrapStyle === "wrap") { + var labelKey = rscratch("labelKey"); + if (labelKey != null && rscratch("labelWrapKey") === labelKey) { + return rscratch("labelWrapCachedText"); } - report.remainingDedents = []; - const { indentTokenType, dedentTokenType } = this.indentationTokenBuilder; - const indentTokenIdx = indentTokenType.tokenTypeIdx; - const dedentTokenIdx = dedentTokenType.tokenTypeIdx; - const cleanTokens = []; - const length2 = result.tokens.length - 1; - for (let i2 = 0; i2 < length2; i2++) { - const token2 = result.tokens[i2]; - const nextToken = result.tokens[i2 + 1]; - if (token2.tokenTypeIdx === indentTokenIdx && nextToken.tokenTypeIdx === dedentTokenIdx) { - i2++; - continue; + var zwsp = "\u200B"; + var lines = text4.split("\n"); + var maxW = ele.pstyle("text-max-width").pfValue; + var overflow = ele.pstyle("text-overflow-wrap").value; + var overflowAny = overflow === "anywhere"; + var wrappedLines = []; + var separatorRegex = /[\s\u200b]+|$/g; + for (var l4 = 0; l4 < lines.length; l4++) { + var line2 = lines[l4]; + var lineDims = this.calculateLabelDimensions(ele, line2); + var lineW = lineDims.width; + if (overflowAny) { + var processedLine = line2.split("").join(zwsp); + line2 = processedLine; + } + if (lineW > maxW) { + var separatorMatches = line2.matchAll(separatorRegex); + var subline = ""; + var previousIndex = 0; + var _iterator = _createForOfIteratorHelper(separatorMatches), _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done; ) { + var separatorMatch = _step.value; + var wordSeparator = separatorMatch[0]; + var word = line2.substring(previousIndex, separatorMatch.index); + previousIndex = separatorMatch.index + wordSeparator.length; + var testLine = subline.length === 0 ? word : subline + word + wordSeparator; + var testDims = this.calculateLabelDimensions(ele, testLine); + var testW = testDims.width; + if (testW <= maxW) { + subline += word + wordSeparator; + } else { + if (subline) { + wrappedLines.push(subline); + } + subline = word + wordSeparator; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + if (!subline.match(/^[\s\u200b]+$/)) { + wrappedLines.push(subline); + } + } else { + wrappedLines.push(line2); } - cleanTokens.push(token2); } - if (length2 >= 0) { - cleanTokens.push(result.tokens[length2]); + rscratch("labelWrapCachedLines", wrappedLines); + text4 = rscratch("labelWrapCachedText", wrappedLines.join("\n")); + rscratch("labelWrapKey", labelKey); + } else if (wrapStyle === "ellipsis") { + var _maxW = ele.pstyle("text-max-width").pfValue; + var ellipsized = ""; + var ellipsis = "\u2026"; + var incLastCh = false; + if (this.calculateLabelDimensions(ele, text4).width < _maxW) { + return text4; } - result.tokens = cleanTokens; - return result; + for (var i2 = 0; i2 < text4.length; i2++) { + var widthWithNextCh = this.calculateLabelDimensions(ele, ellipsized + text4[i2] + ellipsis).width; + if (widthWithNextCh > _maxW) { + break; + } + ellipsized += text4[i2]; + if (i2 === text4.length - 1) { + incLastCh = true; + } + } + if (!incLastCh) { + ellipsized += ellipsis; + } + return ellipsized; } + return text4; }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/parser-config.js - var init_parser_config = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/parser-config.js"() { - "use strict"; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/index.js - var init_parser2 = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/index.js"() { - "use strict"; - init_async_parser(); - init_completion_parser_builder(); - init_cst_node_builder(); - init_indentation_aware(); - init_langium_parser_builder(); - init_langium_parser(); - init_lexer2(); - init_parser_builder_base(); - init_parser_config(); - init_token_builder(); - init_value_converter(); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/index.js - var init_references2 = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/index.js"() { - "use strict"; - init_linker(); - init_name_provider(); - init_references(); - init_scope(); - init_scope_computation(); - init_scope_provider(); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/index.js - var init_serializer = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/index.js"() { - "use strict"; - init_hydrator(); - init_json_serializer(); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/file-system-provider.js - var EmptyFileSystemProvider, EmptyFileSystem; - var init_file_system_provider = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/file-system-provider.js"() { - "use strict"; - EmptyFileSystemProvider = class { - static { - __name(this, "EmptyFileSystemProvider"); + BRp$9.getLabelJustification = function(ele) { + var justification = ele.pstyle("text-justification").strValue; + var textHalign = ele.pstyle("text-halign").strValue; + if (justification === "auto") { + if (ele.isNode()) { + switch (textHalign) { + case "left": + return "right"; + case "right": + return "left"; + default: + return "center"; + } + } else { + return "center"; + } + } else { + return justification; } - readFile() { - throw new Error("No file system is available."); + }; + BRp$9.calculateLabelDimensions = function(ele, text4) { + var r2 = this; + var containerWindow = r2.cy.window(); + var document2 = containerWindow.document; + var padding2 = 0; + var fStyle = ele.pstyle("font-style").strValue; + var size4 = ele.pstyle("font-size").pfValue; + var family = ele.pstyle("font-family").strValue; + var weight8 = ele.pstyle("font-weight").strValue; + var canvas = this.labelCalcCanvas; + var c2d = this.labelCalcCanvasContext; + if (!canvas) { + canvas = this.labelCalcCanvas = document2.createElement("canvas"); + c2d = this.labelCalcCanvasContext = canvas.getContext("2d"); + var ds = canvas.style; + ds.position = "absolute"; + ds.left = "-9999px"; + ds.top = "-9999px"; + ds.zIndex = "-1"; + ds.visibility = "hidden"; + ds.pointerEvents = "none"; } - async readDirectory() { - return []; + c2d.font = "".concat(fStyle, " ").concat(weight8, " ").concat(size4, "px ").concat(family); + var width3 = 0; + var height2 = 0; + var lines = text4.split("\n"); + for (var i2 = 0; i2 < lines.length; i2++) { + var line2 = lines[i2]; + var metrics = c2d.measureText(line2); + var w4 = Math.ceil(metrics.width); + var h3 = size4; + width3 = Math.max(w4, width3); + height2 += h3; } + width3 += padding2; + height2 += padding2; + return { + width: width3, + height: height2 + }; }; - EmptyFileSystem = { - fileSystemProvider: /* @__PURE__ */ __name(() => new EmptyFileSystemProvider(), "fileSystemProvider") - }; - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/grammar-loader.js - function createMinimalGrammarServices() { - const shared = inject(createDefaultSharedCoreModule(EmptyFileSystem), minimalSharedGrammarModule); - const grammar = inject(createDefaultCoreModule({ shared }), minimalGrammarModule); - shared.ServiceRegistry.register(grammar); - return grammar; - } - function loadGrammarFromJson(json3) { - var _a; - const services = createMinimalGrammarServices(); - const astNode = services.serializer.JsonSerializer.deserialize(json3); - services.shared.workspace.LangiumDocumentFactory.fromModel(astNode, URI2.parse(`memory://${(_a = astNode.name) !== null && _a !== void 0 ? _a : "grammar"}.langium`)); - return astNode; - } - var minimalGrammarModule, minimalSharedGrammarModule; - var init_grammar_loader = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/grammar-loader.js"() { - "use strict"; - init_default_module(); - init_dependency_injection(); - init_ast(); - init_file_system_provider(); - init_uri_utils(); - minimalGrammarModule = { - Grammar: /* @__PURE__ */ __name(() => void 0, "Grammar"), - LanguageMetaData: /* @__PURE__ */ __name(() => ({ - caseInsensitive: false, - fileExtensions: [".langium"], - languageId: "langium" - }), "LanguageMetaData") + BRp$9.calculateLabelAngle = function(ele, prefix) { + var _p = ele._private; + var rs = _p.rscratch; + var isEdge2 = ele.isEdge(); + var prefixDash = prefix ? prefix + "-" : ""; + var rot = ele.pstyle(prefixDash + "text-rotation"); + var rotStr = rot.strValue; + if (rotStr === "none") { + return 0; + } else if (isEdge2 && rotStr === "autorotate") { + return rs.labelAutoAngle; + } else if (rotStr === "autorotate") { + return 0; + } else { + return rot.pfValue; + } }; - minimalSharedGrammarModule = { - AstReflection: /* @__PURE__ */ __name(() => new LangiumGrammarAstReflection(), "AstReflection") + BRp$9.calculateLabelAngles = function(ele) { + var r2 = this; + var isEdge2 = ele.isEdge(); + var _p = ele._private; + var rs = _p.rscratch; + rs.labelAngle = r2.calculateLabelAngle(ele); + if (isEdge2) { + rs.sourceLabelAngle = r2.calculateLabelAngle(ele, "source"); + rs.targetLabelAngle = r2.calculateLabelAngle(ele, "target"); + } }; - __name(createMinimalGrammarServices, "createMinimalGrammarServices"); - __name(loadGrammarFromJson, "loadGrammarFromJson"); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/index.js - var utils_exports = {}; - __export(utils_exports, { - AstUtils: () => ast_utils_exports, - BiMap: () => BiMap, - Cancellation: () => cancellation_exports, - ContextCache: () => ContextCache, - CstUtils: () => cst_utils_exports, - DONE_RESULT: () => DONE_RESULT, - Deferred: () => Deferred, - Disposable: () => Disposable, - DisposableCache: () => DisposableCache, - DocumentCache: () => DocumentCache, - EMPTY_STREAM: () => EMPTY_STREAM, - ErrorWithLocation: () => ErrorWithLocation, - GrammarUtils: () => grammar_utils_exports, - MultiMap: () => MultiMap, - OperationCancelled: () => OperationCancelled, - Reduction: () => Reduction, - RegExpUtils: () => regexp_utils_exports, - SimpleCache: () => SimpleCache, - StreamImpl: () => StreamImpl, - TreeStreamImpl: () => TreeStreamImpl, - URI: () => URI2, - UriUtils: () => UriUtils, - WorkspaceCache: () => WorkspaceCache, - assertUnreachable: () => assertUnreachable, - delayNextTick: () => delayNextTick, - interruptAndCheck: () => interruptAndCheck, - isOperationCancelled: () => isOperationCancelled, - loadGrammarFromJson: () => loadGrammarFromJson, - setInterruptionPeriod: () => setInterruptionPeriod, - startCancelableOperation: () => startCancelableOperation, - stream: () => stream - }); - var init_utils4 = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/index.js"() { - "use strict"; - init_caching(); - init_event3(); - __reExport(utils_exports, event_exports); - init_collections(); - init_disposable(); - init_errors2(); - init_grammar_loader(); - init_promise_utils(); - init_stream(); - init_uri_utils(); - init_ast_utils(); - init_cancellation(); - init_cst_utils(); - init_grammar_utils(); - init_regexp_utils(); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/index.js - var init_validation = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/index.js"() { - "use strict"; - init_document_validator(); - init_validation_registry(); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/index.js - var init_workspace = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/index.js"() { - "use strict"; - init_ast_descriptions(); - init_ast_node_locator(); - init_configuration(); - init_document_builder(); - init_documents(); - init_file_system_provider(); - init_index_manager(); - init_workspace_lock(); - init_workspace_manager(); - } - }); - - // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/index.js - var lib_exports = {}; - __export(lib_exports, { - AbstractAstReflection: () => AbstractAstReflection, - AbstractCstNode: () => AbstractCstNode, - AbstractLangiumParser: () => AbstractLangiumParser, - AbstractParserErrorMessageProvider: () => AbstractParserErrorMessageProvider, - AbstractThreadedAsyncParser: () => AbstractThreadedAsyncParser, - AstUtils: () => ast_utils_exports, - BiMap: () => BiMap, - Cancellation: () => cancellation_exports, - CompositeCstNodeImpl: () => CompositeCstNodeImpl, - ContextCache: () => ContextCache, - CstNodeBuilder: () => CstNodeBuilder, - CstUtils: () => cst_utils_exports, - DEFAULT_TOKENIZE_OPTIONS: () => DEFAULT_TOKENIZE_OPTIONS, - DONE_RESULT: () => DONE_RESULT, - DatatypeSymbol: () => DatatypeSymbol, - DefaultAstNodeDescriptionProvider: () => DefaultAstNodeDescriptionProvider, - DefaultAstNodeLocator: () => DefaultAstNodeLocator, - DefaultAsyncParser: () => DefaultAsyncParser, - DefaultCommentProvider: () => DefaultCommentProvider, - DefaultConfigurationProvider: () => DefaultConfigurationProvider, - DefaultDocumentBuilder: () => DefaultDocumentBuilder, - DefaultDocumentValidator: () => DefaultDocumentValidator, - DefaultHydrator: () => DefaultHydrator, - DefaultIndexManager: () => DefaultIndexManager, - DefaultJsonSerializer: () => DefaultJsonSerializer, - DefaultLangiumDocumentFactory: () => DefaultLangiumDocumentFactory, - DefaultLangiumDocuments: () => DefaultLangiumDocuments, - DefaultLexer: () => DefaultLexer, - DefaultLexerErrorMessageProvider: () => DefaultLexerErrorMessageProvider, - DefaultLinker: () => DefaultLinker, - DefaultNameProvider: () => DefaultNameProvider, - DefaultReferenceDescriptionProvider: () => DefaultReferenceDescriptionProvider, - DefaultReferences: () => DefaultReferences, - DefaultScopeComputation: () => DefaultScopeComputation, - DefaultScopeProvider: () => DefaultScopeProvider, - DefaultServiceRegistry: () => DefaultServiceRegistry, - DefaultTokenBuilder: () => DefaultTokenBuilder, - DefaultValueConverter: () => DefaultValueConverter, - DefaultWorkspaceLock: () => DefaultWorkspaceLock, - DefaultWorkspaceManager: () => DefaultWorkspaceManager, - Deferred: () => Deferred, - Disposable: () => Disposable, - DisposableCache: () => DisposableCache, - DocumentCache: () => DocumentCache, - DocumentState: () => DocumentState, - DocumentValidator: () => DocumentValidator, - EMPTY_SCOPE: () => EMPTY_SCOPE, - EMPTY_STREAM: () => EMPTY_STREAM, - EmptyFileSystem: () => EmptyFileSystem, - EmptyFileSystemProvider: () => EmptyFileSystemProvider, - ErrorWithLocation: () => ErrorWithLocation, - GrammarAST: () => ast_exports, - GrammarUtils: () => grammar_utils_exports, - IndentationAwareLexer: () => IndentationAwareLexer, - IndentationAwareTokenBuilder: () => IndentationAwareTokenBuilder, - JSDocDocumentationProvider: () => JSDocDocumentationProvider, - LangiumCompletionParser: () => LangiumCompletionParser, - LangiumParser: () => LangiumParser, - LangiumParserErrorMessageProvider: () => LangiumParserErrorMessageProvider, - LeafCstNodeImpl: () => LeafCstNodeImpl, - LexingMode: () => LexingMode, - MapScope: () => MapScope, - Module: () => Module, - MultiMap: () => MultiMap, - OperationCancelled: () => OperationCancelled, - ParserWorker: () => ParserWorker, - Reduction: () => Reduction, - RegExpUtils: () => regexp_utils_exports, - RootCstNodeImpl: () => RootCstNodeImpl, - SimpleCache: () => SimpleCache, - StreamImpl: () => StreamImpl, - StreamScope: () => StreamScope, - TextDocument: () => TextDocument2, - TreeStreamImpl: () => TreeStreamImpl, - URI: () => URI2, - UriUtils: () => UriUtils, - ValidationCategory: () => ValidationCategory, - ValidationRegistry: () => ValidationRegistry, - ValueConverter: () => ValueConverter, - WorkspaceCache: () => WorkspaceCache, - assertUnreachable: () => assertUnreachable, - createCompletionParser: () => createCompletionParser, - createDefaultCoreModule: () => createDefaultCoreModule, - createDefaultSharedCoreModule: () => createDefaultSharedCoreModule, - createGrammarConfig: () => createGrammarConfig, - createLangiumParser: () => createLangiumParser, - createParser: () => createParser, - delayNextTick: () => delayNextTick, - diagnosticData: () => diagnosticData, - eagerLoad: () => eagerLoad, - getDiagnosticRange: () => getDiagnosticRange, - indentationBuilderDefaultOptions: () => indentationBuilderDefaultOptions, - inject: () => inject, - interruptAndCheck: () => interruptAndCheck, - isAstNode: () => isAstNode, - isAstNodeDescription: () => isAstNodeDescription, - isAstNodeWithComment: () => isAstNodeWithComment, - isCompositeCstNode: () => isCompositeCstNode, - isIMultiModeLexerDefinition: () => isIMultiModeLexerDefinition, - isJSDoc: () => isJSDoc, - isLeafCstNode: () => isLeafCstNode, - isLinkingError: () => isLinkingError, - isNamed: () => isNamed, - isOperationCancelled: () => isOperationCancelled, - isReference: () => isReference, - isRootCstNode: () => isRootCstNode, - isTokenTypeArray: () => isTokenTypeArray, - isTokenTypeDictionary: () => isTokenTypeDictionary, - loadGrammarFromJson: () => loadGrammarFromJson, - parseJSDoc: () => parseJSDoc, - prepareLangiumParser: () => prepareLangiumParser, - setInterruptionPeriod: () => setInterruptionPeriod, - startCancelableOperation: () => startCancelableOperation, - stream: () => stream, - toDiagnosticData: () => toDiagnosticData, - toDiagnosticSeverity: () => toDiagnosticSeverity - }); - var init_lib3 = __esm({ - "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/index.js"() { - "use strict"; - init_default_module(); - init_dependency_injection(); - init_service_registry(); - init_services(); - init_syntax_tree(); - init_documentation(); - init_languages(); - init_parser2(); - init_references2(); - init_serializer(); - init_utils4(); - __reExport(lib_exports, utils_exports); - init_validation(); - init_workspace(); - init_ast(); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/chunk-7PKI6E2E.mjs - function isArchitecture(item) { - return reflection2.isInstance(item, Architecture); - } - function isBranch(item) { - return reflection2.isInstance(item, Branch); - } - function isCommit(item) { - return reflection2.isInstance(item, Commit); - } - function isCommon(item) { - return reflection2.isInstance(item, Common); - } - function isGitGraph(item) { - return reflection2.isInstance(item, GitGraph); - } - function isInfo(item) { - return reflection2.isInstance(item, Info); - } - function isMerge(item) { - return reflection2.isInstance(item, Merge); - } - function isPacket(item) { - return reflection2.isInstance(item, Packet); - } - function isPacketBlock(item) { - return reflection2.isInstance(item, PacketBlock); - } - function isPie(item) { - return reflection2.isInstance(item, Pie); - } - function isPieSection(item) { - return reflection2.isInstance(item, PieSection); - } - var __defProp2, __name2, Statement, Architecture, Axis, Branch, Checkout, CherryPicking, Commit, Common, Curve, Edge, Entry, GitGraph, Group2, Info, Junction, Merge, Option3, Packet, PacketBlock, Pie, PieSection, Radar, Service, Direction, MermaidAstReflection, reflection2, loadedInfoGrammar, InfoGrammar, loadedPacketGrammar, PacketGrammar, loadedPieGrammar, PieGrammar, loadedArchitectureGrammar, ArchitectureGrammar, loadedGitGraphGrammar, GitGraphGrammar, loadedRadarGrammar, RadarGrammar, InfoLanguageMetaData, PacketLanguageMetaData, PieLanguageMetaData, ArchitectureLanguageMetaData, GitGraphLanguageMetaData, RadarLanguageMetaData, MermaidGeneratedSharedModule, InfoGeneratedModule, PacketGeneratedModule, PieGeneratedModule, ArchitectureGeneratedModule, GitGraphGeneratedModule, RadarGeneratedModule, accessibilityDescrRegex, accessibilityTitleRegex, titleRegex, rulesRegexes, AbstractMermaidValueConverter, CommonValueConverter, AbstractMermaidTokenBuilder, CommonTokenBuilder; - var init_chunk_7PKI6E2E = __esm({ - "../parser/dist/chunks/mermaid-parser.core/chunk-7PKI6E2E.mjs"() { - "use strict"; - init_lib3(); - init_lib3(); - init_lib3(); - init_lib3(); - __defProp2 = Object.defineProperty; - __name2 = /* @__PURE__ */ __name((target, value2) => __defProp2(target, "name", { value: value2, configurable: true }), "__name"); - Statement = "Statement"; - Architecture = "Architecture"; - __name(isArchitecture, "isArchitecture"); - __name2(isArchitecture, "isArchitecture"); - Axis = "Axis"; - Branch = "Branch"; - __name(isBranch, "isBranch"); - __name2(isBranch, "isBranch"); - Checkout = "Checkout"; - CherryPicking = "CherryPicking"; - Commit = "Commit"; - __name(isCommit, "isCommit"); - __name2(isCommit, "isCommit"); - Common = "Common"; - __name(isCommon, "isCommon"); - __name2(isCommon, "isCommon"); - Curve = "Curve"; - Edge = "Edge"; - Entry = "Entry"; - GitGraph = "GitGraph"; - __name(isGitGraph, "isGitGraph"); - __name2(isGitGraph, "isGitGraph"); - Group2 = "Group"; - Info = "Info"; - __name(isInfo, "isInfo"); - __name2(isInfo, "isInfo"); - Junction = "Junction"; - Merge = "Merge"; - __name(isMerge, "isMerge"); - __name2(isMerge, "isMerge"); - Option3 = "Option"; - Packet = "Packet"; - __name(isPacket, "isPacket"); - __name2(isPacket, "isPacket"); - PacketBlock = "PacketBlock"; - __name(isPacketBlock, "isPacketBlock"); - __name2(isPacketBlock, "isPacketBlock"); - Pie = "Pie"; - __name(isPie, "isPie"); - __name2(isPie, "isPie"); - PieSection = "PieSection"; - __name(isPieSection, "isPieSection"); - __name2(isPieSection, "isPieSection"); - Radar = "Radar"; - Service = "Service"; - Direction = "Direction"; - MermaidAstReflection = class extends AbstractAstReflection { - static { - __name(this, "MermaidAstReflection"); + BRp$8 = {}; + TOO_SMALL_CUT_RECT = 28; + warnedCutRect = false; + BRp$8.getNodeShape = function(node2) { + var r2 = this; + var shape = node2.pstyle("shape").value; + if (shape === "cutrectangle" && (node2.width() < TOO_SMALL_CUT_RECT || node2.height() < TOO_SMALL_CUT_RECT)) { + if (!warnedCutRect) { + warn("The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead"); + warnedCutRect = true; + } + return "rectangle"; } - static { - __name2(this, "MermaidAstReflection"); + if (node2.isParent()) { + if (shape === "rectangle" || shape === "roundrectangle" || shape === "round-rectangle" || shape === "cutrectangle" || shape === "cut-rectangle" || shape === "barrel") { + return shape; + } else { + return "rectangle"; + } } - getAllTypes() { - return [Architecture, Axis, Branch, Checkout, CherryPicking, Commit, Common, Curve, Direction, Edge, Entry, GitGraph, Group2, Info, Junction, Merge, Option3, Packet, PacketBlock, Pie, PieSection, Radar, Service, Statement]; + if (shape === "polygon") { + var points = node2.pstyle("shape-polygon-points").value; + return r2.nodeShapes.makePolygon(points).name; } - computeIsSubtype(subtype, supertype) { - switch (subtype) { - case Branch: - case Checkout: - case CherryPicking: - case Commit: - case Merge: { - return this.isSubtype(Statement, supertype); + return shape; + }; + BRp$7 = {}; + BRp$7.registerCalculationListeners = function() { + var cy = this.cy; + var elesToUpdate = cy.collection(); + var r2 = this; + var enqueue = /* @__PURE__ */ __name(function enqueue2(eles) { + var dirtyStyleCaches = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + elesToUpdate.merge(eles); + if (dirtyStyleCaches) { + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + var _p = ele._private; + var rstyle = _p.rstyle; + rstyle.clean = false; + rstyle.cleanConnected = false; } - case Direction: { - return this.isSubtype(GitGraph, supertype); + } + }, "enqueue"); + r2.binder(cy).on("bounds.* dirty.*", /* @__PURE__ */ __name(function onDirtyBounds(e3) { + var ele = e3.target; + enqueue(ele); + }, "onDirtyBounds")).on("style.* background.*", /* @__PURE__ */ __name(function onDirtyStyle(e3) { + var ele = e3.target; + enqueue(ele, false); + }, "onDirtyStyle")); + var updateEleCalcs = /* @__PURE__ */ __name(function updateEleCalcs2(willDraw) { + if (willDraw) { + var fns = r2.onUpdateEleCalcsFns; + elesToUpdate.cleanStyle(); + for (var i2 = 0; i2 < elesToUpdate.length; i2++) { + var ele = elesToUpdate[i2]; + var rstyle = ele._private.rstyle; + if (ele.isNode() && !rstyle.cleanConnected) { + enqueue(ele.connectedEdges()); + rstyle.cleanConnected = true; + } } - default: { - return false; + if (fns) { + for (var _i = 0; _i < fns.length; _i++) { + var fn3 = fns[_i]; + fn3(willDraw, elesToUpdate); + } } + r2.recalculateRenderedStyle(elesToUpdate); + elesToUpdate = cy.collection(); } + }, "updateEleCalcs"); + r2.flushRenderedStyleQueue = function() { + updateEleCalcs(true); + }; + r2.beforeRender(updateEleCalcs, r2.beforeRenderPriorities.eleCalcs); + }; + BRp$7.onUpdateEleCalcs = function(fn3) { + var fns = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || []; + fns.push(fn3); + }; + BRp$7.recalculateRenderedStyle = function(eles, useCache) { + var isCleanConnected = /* @__PURE__ */ __name(function isCleanConnected2(ele2) { + return ele2._private.rstyle.cleanConnected; + }, "isCleanConnected"); + if (eles.length === 0) { + return; } - getReferenceType(refInfo) { - const referenceId = `${refInfo.container.$type}:${refInfo.property}`; - switch (referenceId) { - case "Entry:axis": { - return Axis; - } - default: { - throw new Error(`${referenceId} is not a valid reference id.`); + var edges3 = []; + var nodes5 = []; + if (this.destroyed) { + return; + } + if (useCache === void 0) { + useCache = true; + } + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + var _p = ele._private; + var rstyle = _p.rstyle; + if (ele.isEdge() && (!isCleanConnected(ele.source()) || !isCleanConnected(ele.target()))) { + rstyle.clean = false; + } + if (ele.isEdge() && ele.isBundledBezier()) { + if (ele.parallelEdges().some(function(ele2) { + return !ele2._private.rstyle.clean && ele2.isBundledBezier(); + })) { + rstyle.clean = false; } } + if (useCache && rstyle.clean || ele.removed()) { + continue; + } + if (ele.pstyle("display").value === "none") { + continue; + } + if (_p.group === "nodes") { + nodes5.push(ele); + } else { + edges3.push(ele); + } + rstyle.clean = true; } - getTypeMetaData(type3) { - switch (type3) { - case Architecture: { - return { - name: Architecture, - properties: [ - { name: "accDescr" }, - { name: "accTitle" }, - { name: "edges", defaultValue: [] }, - { name: "groups", defaultValue: [] }, - { name: "junctions", defaultValue: [] }, - { name: "services", defaultValue: [] }, - { name: "title" } - ] - }; - } - case Axis: { - return { - name: Axis, - properties: [ - { name: "label" }, - { name: "name" } - ] - }; - } - case Branch: { - return { - name: Branch, - properties: [ - { name: "name" }, - { name: "order" } - ] - }; - } - case Checkout: { - return { - name: Checkout, - properties: [ - { name: "branch" } - ] - }; - } - case CherryPicking: { - return { - name: CherryPicking, - properties: [ - { name: "id" }, - { name: "parent" }, - { name: "tags", defaultValue: [] } - ] - }; - } - case Commit: { - return { - name: Commit, - properties: [ - { name: "id" }, - { name: "message" }, - { name: "tags", defaultValue: [] }, - { name: "type" } - ] - }; + for (var _i2 = 0; _i2 < nodes5.length; _i2++) { + var _ele = nodes5[_i2]; + var _p2 = _ele._private; + var _rstyle = _p2.rstyle; + var pos = _ele.position(); + this.recalculateNodeLabelProjection(_ele); + _rstyle.nodeX = pos.x; + _rstyle.nodeY = pos.y; + _rstyle.nodeW = _ele.pstyle("width").pfValue; + _rstyle.nodeH = _ele.pstyle("height").pfValue; + } + this.recalculateEdgeProjections(edges3); + for (var _i3 = 0; _i3 < edges3.length; _i3++) { + var _ele2 = edges3[_i3]; + var _p3 = _ele2._private; + var _rstyle2 = _p3.rstyle; + var rs = _p3.rscratch; + _rstyle2.srcX = rs.arrowStartX; + _rstyle2.srcY = rs.arrowStartY; + _rstyle2.tgtX = rs.arrowEndX; + _rstyle2.tgtY = rs.arrowEndY; + _rstyle2.midX = rs.midX; + _rstyle2.midY = rs.midY; + _rstyle2.labelAngle = rs.labelAngle; + _rstyle2.sourceLabelAngle = rs.sourceLabelAngle; + _rstyle2.targetLabelAngle = rs.targetLabelAngle; + } + }; + BRp$6 = {}; + BRp$6.updateCachedGrabbedEles = function() { + var eles = this.cachedZSortedEles; + if (!eles) { + return; + } + eles.drag = []; + eles.nondrag = []; + var grabTargets = []; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + var rs = ele._private.rscratch; + if (ele.grabbed() && !ele.isParent()) { + grabTargets.push(ele); + } else if (rs.inDragLayer) { + eles.drag.push(ele); + } else { + eles.nondrag.push(ele); + } + } + for (var i2 = 0; i2 < grabTargets.length; i2++) { + var ele = grabTargets[i2]; + eles.drag.push(ele); + } + }; + BRp$6.invalidateCachedZSortedEles = function() { + this.cachedZSortedEles = null; + }; + BRp$6.getCachedZSortedEles = function(forceRecalc) { + if (forceRecalc || !this.cachedZSortedEles) { + var eles = this.cy.mutableElements().toArray(); + eles.sort(zIndexSort); + eles.interactive = eles.filter(function(ele) { + return ele.interactive(); + }); + this.cachedZSortedEles = eles; + this.updateCachedGrabbedEles(); + } else { + eles = this.cachedZSortedEles; + } + return eles; + }; + BRp$5 = {}; + [BRp$e, BRp$d, BRp$c, BRp$b, BRp$a, BRp$9, BRp$8, BRp$7, BRp$6].forEach(function(props) { + extend4(BRp$5, props); + }); + BRp$4 = {}; + BRp$4.getCachedImage = function(url, crossOrigin, onLoad) { + var r2 = this; + var imageCache = r2.imageCache = r2.imageCache || {}; + var cache3 = imageCache[url]; + if (cache3) { + if (!cache3.image.complete) { + cache3.image.addEventListener("load", onLoad); + } + return cache3.image; + } else { + cache3 = imageCache[url] = imageCache[url] || {}; + var image = cache3.image = new Image(); + image.addEventListener("load", onLoad); + image.addEventListener("error", function() { + image.error = true; + }); + var dataUriPrefix = "data:"; + var isDataUri = url.substring(0, dataUriPrefix.length).toLowerCase() === dataUriPrefix; + if (!isDataUri) { + crossOrigin = crossOrigin === "null" ? null : crossOrigin; + image.crossOrigin = crossOrigin; + } + image.src = url; + return image; + } + }; + BRp$3 = {}; + BRp$3.registerBinding = function(target, event3, handler, useCapture) { + var args = Array.prototype.slice.apply(arguments, [1]); + if (Array.isArray(target)) { + var res = []; + for (var i2 = 0; i2 < target.length; i2++) { + var t4 = target[i2]; + if (t4 !== void 0) { + var b3 = this.binder(t4); + res.push(b3.on.apply(b3, args)); } - case Common: { - return { - name: Common, - properties: [ - { name: "accDescr" }, - { name: "accTitle" }, - { name: "title" } - ] - }; + } + return res; + } + var b3 = this.binder(target); + return b3.on.apply(b3, args); + }; + BRp$3.binder = function(tgt) { + var r2 = this; + var containerWindow = r2.cy.window(); + var tgtIsDom = tgt === containerWindow || tgt === containerWindow.document || tgt === containerWindow.document.body || domElement(tgt); + if (r2.supportsPassiveEvents == null) { + var supportsPassive = false; + try { + var opts = Object.defineProperty({}, "passive", { + get: /* @__PURE__ */ __name(function get5() { + supportsPassive = true; + return true; + }, "get") + }); + containerWindow.addEventListener("test", null, opts); + } catch (err) { + } + r2.supportsPassiveEvents = supportsPassive; + } + var on3 = /* @__PURE__ */ __name(function on4(event3, handler, useCapture) { + var args = Array.prototype.slice.call(arguments); + if (tgtIsDom && r2.supportsPassiveEvents) { + args[2] = { + capture: useCapture != null ? useCapture : false, + passive: false, + once: false + }; + } + r2.bindings.push({ + target: tgt, + args + }); + (tgt.addEventListener || tgt.on).apply(tgt, args); + return this; + }, "on"); + return { + on: on3, + addEventListener: on3, + addListener: on3, + bind: on3 + }; + }; + BRp$3.nodeIsDraggable = function(node2) { + return node2 && node2.isNode() && !node2.locked() && node2.grabbable(); + }; + BRp$3.nodeIsGrabbable = function(node2) { + return this.nodeIsDraggable(node2) && node2.interactive(); + }; + BRp$3.load = function() { + var r2 = this; + var containerWindow = r2.cy.window(); + var isSelected = /* @__PURE__ */ __name(function isSelected2(ele) { + return ele.selected(); + }, "isSelected"); + var getShadowRoot = /* @__PURE__ */ __name(function getShadowRoot2(element3) { + var rootNode = element3.getRootNode(); + if (rootNode && rootNode.nodeType === 11 && rootNode.host !== void 0) { + return rootNode; + } + }, "getShadowRoot"); + var triggerEvents = /* @__PURE__ */ __name(function triggerEvents2(target, names, e3, position5) { + if (target == null) { + target = r2.cy; + } + for (var i2 = 0; i2 < names.length; i2++) { + var name = names[i2]; + target.emit({ + originalEvent: e3, + type: name, + position: position5 + }); + } + }, "triggerEvents"); + var isMultSelKeyDown = /* @__PURE__ */ __name(function isMultSelKeyDown2(e3) { + return e3.shiftKey || e3.metaKey || e3.ctrlKey; + }, "isMultSelKeyDown"); + var allowPanningPassthrough = /* @__PURE__ */ __name(function allowPanningPassthrough2(down, downs) { + var allowPassthrough = true; + if (r2.cy.hasCompoundNodes() && down && down.pannable()) { + for (var i2 = 0; downs && i2 < downs.length; i2++) { + var down = downs[i2]; + if (down.isNode() && down.isParent() && !down.pannable()) { + allowPassthrough = false; + break; + } } - case Curve: { - return { - name: Curve, - properties: [ - { name: "entries", defaultValue: [] }, - { name: "label" }, - { name: "name" } - ] - }; + } else { + allowPassthrough = true; + } + return allowPassthrough; + }, "allowPanningPassthrough"); + var setGrabbed = /* @__PURE__ */ __name(function setGrabbed2(ele) { + ele[0]._private.grabbed = true; + }, "setGrabbed"); + var setFreed = /* @__PURE__ */ __name(function setFreed2(ele) { + ele[0]._private.grabbed = false; + }, "setFreed"); + var setInDragLayer = /* @__PURE__ */ __name(function setInDragLayer2(ele) { + ele[0]._private.rscratch.inDragLayer = true; + }, "setInDragLayer"); + var setOutDragLayer = /* @__PURE__ */ __name(function setOutDragLayer2(ele) { + ele[0]._private.rscratch.inDragLayer = false; + }, "setOutDragLayer"); + var setGrabTarget = /* @__PURE__ */ __name(function setGrabTarget2(ele) { + ele[0]._private.rscratch.isGrabTarget = true; + }, "setGrabTarget"); + var removeGrabTarget = /* @__PURE__ */ __name(function removeGrabTarget2(ele) { + ele[0]._private.rscratch.isGrabTarget = false; + }, "removeGrabTarget"); + var addToDragList = /* @__PURE__ */ __name(function addToDragList2(ele, opts) { + var list = opts.addToList; + var listHasEle = list.has(ele); + if (!listHasEle && ele.grabbable() && !ele.locked()) { + list.merge(ele); + setGrabbed(ele); + } + }, "addToDragList"); + var addDescendantsToDrag = /* @__PURE__ */ __name(function addDescendantsToDrag2(node2, opts) { + if (!node2.cy().hasCompoundNodes()) { + return; + } + if (opts.inDragLayer == null && opts.addToList == null) { + return; + } + var innerNodes = node2.descendants(); + if (opts.inDragLayer) { + innerNodes.forEach(setInDragLayer); + innerNodes.connectedEdges().forEach(setInDragLayer); + } + if (opts.addToList) { + addToDragList(innerNodes, opts); + } + }, "addDescendantsToDrag"); + var addNodesToDrag = /* @__PURE__ */ __name(function addNodesToDrag2(nodes5, opts) { + opts = opts || {}; + var hasCompoundNodes2 = nodes5.cy().hasCompoundNodes(); + if (opts.inDragLayer) { + nodes5.forEach(setInDragLayer); + nodes5.neighborhood().stdFilter(function(ele) { + return !hasCompoundNodes2 || ele.isEdge(); + }).forEach(setInDragLayer); + } + if (opts.addToList) { + nodes5.forEach(function(ele) { + addToDragList(ele, opts); + }); + } + addDescendantsToDrag(nodes5, opts); + updateAncestorsInDragLayer(nodes5, { + inDragLayer: opts.inDragLayer + }); + r2.updateCachedGrabbedEles(); + }, "addNodesToDrag"); + var addNodeToDrag = addNodesToDrag; + var freeDraggedElements = /* @__PURE__ */ __name(function freeDraggedElements2(grabbedEles) { + if (!grabbedEles) { + return; + } + r2.getCachedZSortedEles().forEach(function(ele) { + setFreed(ele); + setOutDragLayer(ele); + removeGrabTarget(ele); + }); + r2.updateCachedGrabbedEles(); + }, "freeDraggedElements"); + var updateAncestorsInDragLayer = /* @__PURE__ */ __name(function updateAncestorsInDragLayer2(node2, opts) { + if (opts.inDragLayer == null && opts.addToList == null) { + return; + } + if (!node2.cy().hasCompoundNodes()) { + return; + } + var parent4 = node2.ancestors().orphans(); + if (parent4.same(node2)) { + return; + } + var nodes5 = parent4.descendants().spawnSelf().merge(parent4).unmerge(node2).unmerge(node2.descendants()); + var edges3 = nodes5.connectedEdges(); + if (opts.inDragLayer) { + edges3.forEach(setInDragLayer); + nodes5.forEach(setInDragLayer); + } + if (opts.addToList) { + nodes5.forEach(function(ele) { + addToDragList(ele, opts); + }); + } + }, "updateAncestorsInDragLayer"); + var blurActiveDomElement = /* @__PURE__ */ __name(function blurActiveDomElement2() { + if (document.activeElement != null && document.activeElement.blur != null) { + document.activeElement.blur(); + } + }, "blurActiveDomElement"); + var haveMutationsApi = typeof MutationObserver !== "undefined"; + var haveResizeObserverApi = typeof ResizeObserver !== "undefined"; + if (haveMutationsApi) { + r2.removeObserver = new MutationObserver(function(mutns) { + for (var i2 = 0; i2 < mutns.length; i2++) { + var mutn = mutns[i2]; + var rNodes = mutn.removedNodes; + if (rNodes) { + for (var j3 = 0; j3 < rNodes.length; j3++) { + var rNode = rNodes[j3]; + if (rNode === r2.container) { + r2.destroy(); + break; + } + } + } } - case Edge: { - return { - name: Edge, - properties: [ - { name: "lhsDir" }, - { name: "lhsGroup", defaultValue: false }, - { name: "lhsId" }, - { name: "lhsInto", defaultValue: false }, - { name: "rhsDir" }, - { name: "rhsGroup", defaultValue: false }, - { name: "rhsId" }, - { name: "rhsInto", defaultValue: false }, - { name: "title" } - ] - }; + }); + if (r2.container.parentNode) { + r2.removeObserver.observe(r2.container.parentNode, { + childList: true + }); + } + } else { + r2.registerBinding(r2.container, "DOMNodeRemoved", function(e3) { + r2.destroy(); + }); + } + var onResize = debounce(function() { + r2.cy.resize(); + }, 100); + if (haveMutationsApi) { + r2.styleObserver = new MutationObserver(onResize); + r2.styleObserver.observe(r2.container, { + attributes: true + }); + } + r2.registerBinding(containerWindow, "resize", onResize); + if (haveResizeObserverApi) { + r2.resizeObserver = new ResizeObserver(onResize); + r2.resizeObserver.observe(r2.container); + } + var forEachUp = /* @__PURE__ */ __name(function forEachUp2(domEle, fn3) { + while (domEle != null) { + fn3(domEle); + domEle = domEle.parentNode; + } + }, "forEachUp"); + var invalidateCoords = /* @__PURE__ */ __name(function invalidateCoords2() { + r2.invalidateContainerClientCoordsCache(); + }, "invalidateCoords"); + forEachUp(r2.container, function(domEle) { + r2.registerBinding(domEle, "transitionend", invalidateCoords); + r2.registerBinding(domEle, "animationend", invalidateCoords); + r2.registerBinding(domEle, "scroll", invalidateCoords); + }); + r2.registerBinding(r2.container, "contextmenu", function(e3) { + e3.preventDefault(); + }); + var inBoxSelection = /* @__PURE__ */ __name(function inBoxSelection2() { + return r2.selection[4] !== 0; + }, "inBoxSelection"); + var eventInContainer = /* @__PURE__ */ __name(function eventInContainer2(e3) { + var containerPageCoords = r2.findContainerClientCoords(); + var x5 = containerPageCoords[0]; + var y6 = containerPageCoords[1]; + var width3 = containerPageCoords[2]; + var height2 = containerPageCoords[3]; + var positions2 = e3.touches ? e3.touches : [e3]; + var atLeastOnePosInside = false; + for (var i2 = 0; i2 < positions2.length; i2++) { + var p3 = positions2[i2]; + if (x5 <= p3.clientX && p3.clientX <= x5 + width3 && y6 <= p3.clientY && p3.clientY <= y6 + height2) { + atLeastOnePosInside = true; + break; } - case Entry: { - return { - name: Entry, - properties: [ - { name: "axis" }, - { name: "value" } - ] - }; + } + if (!atLeastOnePosInside) { + return false; + } + var container2 = r2.container; + var target = e3.target; + var tParent = target.parentNode; + var containerIsTarget = false; + while (tParent) { + if (tParent === container2) { + containerIsTarget = true; + break; } - case GitGraph: { - return { - name: GitGraph, - properties: [ - { name: "accDescr" }, - { name: "accTitle" }, - { name: "statements", defaultValue: [] }, - { name: "title" } - ] - }; + tParent = tParent.parentNode; + } + if (!containerIsTarget) { + return false; + } + return true; + }, "eventInContainer"); + r2.registerBinding(r2.container, "mousedown", /* @__PURE__ */ __name(function mousedownHandler(e3) { + if (!eventInContainer(e3)) { + return; + } + if (r2.hoverData.which === 1 && e3.which !== 1) { + return; + } + e3.preventDefault(); + blurActiveDomElement(); + r2.hoverData.capture = true; + r2.hoverData.which = e3.which; + var cy = r2.cy; + var gpos = [e3.clientX, e3.clientY]; + var pos = r2.projectIntoViewport(gpos[0], gpos[1]); + var select = r2.selection; + var nears = r2.findNearestElements(pos[0], pos[1], true, false); + var near = nears[0]; + var draggedElements = r2.dragData.possibleDragElements; + r2.hoverData.mdownPos = pos; + r2.hoverData.mdownGPos = gpos; + var makeEvent = /* @__PURE__ */ __name(function makeEvent2(type3) { + return { + originalEvent: e3, + type: type3, + position: { + x: pos[0], + y: pos[1] + } + }; + }, "makeEvent"); + var checkForTaphold = /* @__PURE__ */ __name(function checkForTaphold2() { + r2.hoverData.tapholdCancelled = false; + clearTimeout(r2.hoverData.tapholdTimeout); + r2.hoverData.tapholdTimeout = setTimeout(function() { + if (r2.hoverData.tapholdCancelled) { + return; + } else { + var ele = r2.hoverData.down; + if (ele) { + ele.emit(makeEvent("taphold")); + } else { + cy.emit(makeEvent("taphold")); + } + } + }, r2.tapholdDuration); + }, "checkForTaphold"); + if (e3.which == 3) { + r2.hoverData.cxtStarted = true; + var cxtEvt = { + originalEvent: e3, + type: "cxttapstart", + position: { + x: pos[0], + y: pos[1] + } + }; + if (near) { + near.activate(); + near.emit(cxtEvt); + r2.hoverData.down = near; + } else { + cy.emit(cxtEvt); } - case Group2: { - return { - name: Group2, - properties: [ - { name: "icon" }, - { name: "id" }, - { name: "in" }, - { name: "title" } - ] - }; + r2.hoverData.downTime = (/* @__PURE__ */ new Date()).getTime(); + r2.hoverData.cxtDragged = false; + } else if (e3.which == 1) { + if (near) { + near.activate(); } - case Info: { - return { - name: Info, - properties: [ - { name: "accDescr" }, - { name: "accTitle" }, - { name: "title" } - ] - }; + { + if (near != null) { + if (r2.nodeIsGrabbable(near)) { + var triggerGrab = /* @__PURE__ */ __name(function triggerGrab2(ele) { + ele.emit(makeEvent("grab")); + }, "triggerGrab"); + setGrabTarget(near); + if (!near.selected()) { + draggedElements = r2.dragData.possibleDragElements = cy.collection(); + addNodeToDrag(near, { + addToList: draggedElements + }); + near.emit(makeEvent("grabon")).emit(makeEvent("grab")); + } else { + draggedElements = r2.dragData.possibleDragElements = cy.collection(); + var selectedNodes = cy.$(function(ele) { + return ele.isNode() && ele.selected() && r2.nodeIsGrabbable(ele); + }); + addNodesToDrag(selectedNodes, { + addToList: draggedElements + }); + near.emit(makeEvent("grabon")); + selectedNodes.forEach(triggerGrab); + } + r2.redrawHint("eles", true); + r2.redrawHint("drag", true); + } + } + r2.hoverData.down = near; + r2.hoverData.downs = nears; + r2.hoverData.downTime = (/* @__PURE__ */ new Date()).getTime(); } - case Junction: { - return { - name: Junction, - properties: [ - { name: "id" }, - { name: "in" } - ] + triggerEvents(near, ["mousedown", "tapstart", "vmousedown"], e3, { + x: pos[0], + y: pos[1] + }); + if (near == null) { + select[4] = 1; + r2.data.bgActivePosistion = { + x: pos[0], + y: pos[1] }; + r2.redrawHint("select", true); + r2.redraw(); + } else if (near.pannable()) { + select[4] = 1; } - case Merge: { - return { - name: Merge, - properties: [ - { name: "branch" }, - { name: "id" }, - { name: "tags", defaultValue: [] }, - { name: "type" } - ] - }; + checkForTaphold(); + } + select[0] = select[2] = pos[0]; + select[1] = select[3] = pos[1]; + }, "mousedownHandler"), false); + var shadowRoot = getShadowRoot(r2.container); + r2.registerBinding([containerWindow, shadowRoot], "mousemove", /* @__PURE__ */ __name(function mousemoveHandler(e3) { + var capture = r2.hoverData.capture; + if (!capture && !eventInContainer(e3)) { + return; + } + var preventDefault2 = false; + var cy = r2.cy; + var zoom2 = cy.zoom(); + var gpos = [e3.clientX, e3.clientY]; + var pos = r2.projectIntoViewport(gpos[0], gpos[1]); + var mdownPos = r2.hoverData.mdownPos; + var mdownGPos = r2.hoverData.mdownGPos; + var select = r2.selection; + var near = null; + if (!r2.hoverData.draggingEles && !r2.hoverData.dragging && !r2.hoverData.selecting) { + near = r2.findNearestElement(pos[0], pos[1], true, false); + } + var last3 = r2.hoverData.last; + var down = r2.hoverData.down; + var disp = [pos[0] - select[2], pos[1] - select[3]]; + var draggedElements = r2.dragData.possibleDragElements; + var isOverThresholdDrag; + if (mdownGPos) { + var dx = gpos[0] - mdownGPos[0]; + var dx2 = dx * dx; + var dy = gpos[1] - mdownGPos[1]; + var dy2 = dy * dy; + var dist22 = dx2 + dy2; + r2.hoverData.isOverThresholdDrag = isOverThresholdDrag = dist22 >= r2.desktopTapThreshold2; + } + var multSelKeyDown = isMultSelKeyDown(e3); + if (isOverThresholdDrag) { + r2.hoverData.tapholdCancelled = true; + } + var updateDragDelta = /* @__PURE__ */ __name(function updateDragDelta2() { + var dragDelta2 = r2.hoverData.dragDelta = r2.hoverData.dragDelta || []; + if (dragDelta2.length === 0) { + dragDelta2.push(disp[0]); + dragDelta2.push(disp[1]); + } else { + dragDelta2[0] += disp[0]; + dragDelta2[1] += disp[1]; } - case Option3: { - return { - name: Option3, - properties: [ - { name: "name" }, - { name: "value", defaultValue: false } - ] - }; + }, "updateDragDelta"); + preventDefault2 = true; + triggerEvents(near, ["mousemove", "vmousemove", "tapdrag"], e3, { + x: pos[0], + y: pos[1] + }); + var makeEvent = /* @__PURE__ */ __name(function makeEvent2(type3) { + return { + originalEvent: e3, + type: type3, + position: { + x: pos[0], + y: pos[1] + } + }; + }, "makeEvent"); + var goIntoBoxMode = /* @__PURE__ */ __name(function goIntoBoxMode2() { + r2.data.bgActivePosistion = void 0; + if (!r2.hoverData.selecting) { + cy.emit(makeEvent("boxstart")); } - case Packet: { - return { - name: Packet, - properties: [ - { name: "accDescr" }, - { name: "accTitle" }, - { name: "blocks", defaultValue: [] }, - { name: "title" } - ] - }; + select[4] = 1; + r2.hoverData.selecting = true; + r2.redrawHint("select", true); + r2.redraw(); + }, "goIntoBoxMode"); + if (r2.hoverData.which === 3) { + if (isOverThresholdDrag) { + var cxtEvt = makeEvent("cxtdrag"); + if (down) { + down.emit(cxtEvt); + } else { + cy.emit(cxtEvt); + } + r2.hoverData.cxtDragged = true; + if (!r2.hoverData.cxtOver || near !== r2.hoverData.cxtOver) { + if (r2.hoverData.cxtOver) { + r2.hoverData.cxtOver.emit(makeEvent("cxtdragout")); + } + r2.hoverData.cxtOver = near; + if (near) { + near.emit(makeEvent("cxtdragover")); + } + } } - case PacketBlock: { - return { - name: PacketBlock, - properties: [ - { name: "end" }, - { name: "label" }, - { name: "start" } - ] - }; + } else if (r2.hoverData.dragging) { + preventDefault2 = true; + if (cy.panningEnabled() && cy.userPanningEnabled()) { + var deltaP; + if (r2.hoverData.justStartedPan) { + var mdPos = r2.hoverData.mdownPos; + deltaP = { + x: (pos[0] - mdPos[0]) * zoom2, + y: (pos[1] - mdPos[1]) * zoom2 + }; + r2.hoverData.justStartedPan = false; + } else { + deltaP = { + x: disp[0] * zoom2, + y: disp[1] * zoom2 + }; + } + cy.panBy(deltaP); + cy.emit(makeEvent("dragpan")); + r2.hoverData.dragged = true; } - case Pie: { - return { - name: Pie, - properties: [ - { name: "accDescr" }, - { name: "accTitle" }, - { name: "sections", defaultValue: [] }, - { name: "showData", defaultValue: false }, - { name: "title" } - ] - }; + pos = r2.projectIntoViewport(e3.clientX, e3.clientY); + } else if (select[4] == 1 && (down == null || down.pannable())) { + if (isOverThresholdDrag) { + if (!r2.hoverData.dragging && cy.boxSelectionEnabled() && (multSelKeyDown || !cy.panningEnabled() || !cy.userPanningEnabled())) { + goIntoBoxMode(); + } else if (!r2.hoverData.selecting && cy.panningEnabled() && cy.userPanningEnabled()) { + var allowPassthrough = allowPanningPassthrough(down, r2.hoverData.downs); + if (allowPassthrough) { + r2.hoverData.dragging = true; + r2.hoverData.justStartedPan = true; + select[4] = 0; + r2.data.bgActivePosistion = array2point(mdownPos); + r2.redrawHint("select", true); + r2.redraw(); + } + } + if (down && down.pannable() && down.active()) { + down.unactivate(); + } } - case PieSection: { - return { - name: PieSection, - properties: [ - { name: "label" }, - { name: "value" } - ] - }; + } else { + if (down && down.pannable() && down.active()) { + down.unactivate(); } - case Radar: { - return { - name: Radar, - properties: [ - { name: "accDescr" }, - { name: "accTitle" }, - { name: "axes", defaultValue: [] }, - { name: "curves", defaultValue: [] }, - { name: "options", defaultValue: [] }, - { name: "title" } - ] - }; + if ((!down || !down.grabbed()) && near != last3) { + if (last3) { + triggerEvents(last3, ["mouseout", "tapdragout"], e3, { + x: pos[0], + y: pos[1] + }); + } + if (near) { + triggerEvents(near, ["mouseover", "tapdragover"], e3, { + x: pos[0], + y: pos[1] + }); + } + r2.hoverData.last = near; } - case Service: { - return { - name: Service, - properties: [ - { name: "icon" }, - { name: "iconText" }, - { name: "id" }, - { name: "in" }, - { name: "title" } - ] - }; + if (down) { + if (isOverThresholdDrag) { + if (cy.boxSelectionEnabled() && multSelKeyDown) { + if (down && down.grabbed()) { + freeDraggedElements(draggedElements); + down.emit(makeEvent("freeon")); + draggedElements.emit(makeEvent("free")); + if (r2.dragData.didDrag) { + down.emit(makeEvent("dragfreeon")); + draggedElements.emit(makeEvent("dragfree")); + } + } + goIntoBoxMode(); + } else if (down && down.grabbed() && r2.nodeIsDraggable(down)) { + var justStartedDrag = !r2.dragData.didDrag; + if (justStartedDrag) { + r2.redrawHint("eles", true); + } + r2.dragData.didDrag = true; + if (!r2.hoverData.draggingEles) { + addNodesToDrag(draggedElements, { + inDragLayer: true + }); + } + var totalShift = { + x: 0, + y: 0 + }; + if (number$1(disp[0]) && number$1(disp[1])) { + totalShift.x += disp[0]; + totalShift.y += disp[1]; + if (justStartedDrag) { + var dragDelta = r2.hoverData.dragDelta; + if (dragDelta && number$1(dragDelta[0]) && number$1(dragDelta[1])) { + totalShift.x += dragDelta[0]; + totalShift.y += dragDelta[1]; + } + } + } + r2.hoverData.draggingEles = true; + draggedElements.silentShift(totalShift).emit(makeEvent("position")).emit(makeEvent("drag")); + r2.redrawHint("drag", true); + r2.redraw(); + } + } else { + updateDragDelta(); + } } - case Direction: { - return { - name: Direction, - properties: [ - { name: "accDescr" }, - { name: "accTitle" }, - { name: "dir" }, - { name: "statements", defaultValue: [] }, - { name: "title" } - ] - }; + preventDefault2 = true; + } + select[2] = pos[0]; + select[3] = pos[1]; + if (preventDefault2) { + if (e3.stopPropagation) e3.stopPropagation(); + if (e3.preventDefault) e3.preventDefault(); + return false; + } + }, "mousemoveHandler"), false); + var clickTimeout, didDoubleClick, prevClickTimeStamp; + r2.registerBinding(containerWindow, "mouseup", /* @__PURE__ */ __name(function mouseupHandler(e3) { + if (r2.hoverData.which === 1 && e3.which !== 1 && r2.hoverData.capture) { + return; + } + var capture = r2.hoverData.capture; + if (!capture) { + return; + } + r2.hoverData.capture = false; + var cy = r2.cy; + var pos = r2.projectIntoViewport(e3.clientX, e3.clientY); + var select = r2.selection; + var near = r2.findNearestElement(pos[0], pos[1], true, false); + var draggedElements = r2.dragData.possibleDragElements; + var down = r2.hoverData.down; + var multSelKeyDown = isMultSelKeyDown(e3); + if (r2.data.bgActivePosistion) { + r2.redrawHint("select", true); + r2.redraw(); + } + r2.hoverData.tapholdCancelled = true; + r2.data.bgActivePosistion = void 0; + if (down) { + down.unactivate(); + } + var makeEvent = /* @__PURE__ */ __name(function makeEvent2(type3) { + return { + originalEvent: e3, + type: type3, + position: { + x: pos[0], + y: pos[1] + } + }; + }, "makeEvent"); + if (r2.hoverData.which === 3) { + var cxtEvt = makeEvent("cxttapend"); + if (down) { + down.emit(cxtEvt); + } else { + cy.emit(cxtEvt); } - default: { - return { - name: type3, - properties: [] - }; + if (!r2.hoverData.cxtDragged) { + var cxtTap = makeEvent("cxttap"); + if (down) { + down.emit(cxtTap); + } else { + cy.emit(cxtTap); + } + } + r2.hoverData.cxtDragged = false; + r2.hoverData.which = null; + } else if (r2.hoverData.which === 1) { + triggerEvents(near, ["mouseup", "tapend", "vmouseup"], e3, { + x: pos[0], + y: pos[1] + }); + if (!r2.dragData.didDrag && // didn't move a node around + !r2.hoverData.dragged && // didn't pan + !r2.hoverData.selecting && // not box selection + !r2.hoverData.isOverThresholdDrag) { + triggerEvents(down, ["click", "tap", "vclick"], e3, { + x: pos[0], + y: pos[1] + }); + didDoubleClick = false; + if (e3.timeStamp - prevClickTimeStamp <= cy.multiClickDebounceTime()) { + clickTimeout && clearTimeout(clickTimeout); + didDoubleClick = true; + prevClickTimeStamp = null; + triggerEvents(down, ["dblclick", "dbltap", "vdblclick"], e3, { + x: pos[0], + y: pos[1] + }); + } else { + clickTimeout = setTimeout(function() { + if (didDoubleClick) return; + triggerEvents(down, ["oneclick", "onetap", "voneclick"], e3, { + x: pos[0], + y: pos[1] + }); + }, cy.multiClickDebounceTime()); + prevClickTimeStamp = e3.timeStamp; + } + } + if (down == null && !r2.dragData.didDrag && !r2.hoverData.selecting && !r2.hoverData.dragged && !isMultSelKeyDown(e3)) { + cy.$(isSelected).unselect(["tapunselect"]); + if (draggedElements.length > 0) { + r2.redrawHint("eles", true); + } + r2.dragData.possibleDragElements = draggedElements = cy.collection(); + } + if (near == down && !r2.dragData.didDrag && !r2.hoverData.selecting) { + if (near != null && near._private.selectable) { + if (r2.hoverData.dragging) ; + else if (cy.selectionType() === "additive" || multSelKeyDown) { + if (near.selected()) { + near.unselect(["tapunselect"]); + } else { + near.select(["tapselect"]); + } + } else { + if (!multSelKeyDown) { + cy.$(isSelected).unmerge(near).unselect(["tapunselect"]); + near.select(["tapselect"]); + } + } + r2.redrawHint("eles", true); + } + } + if (r2.hoverData.selecting) { + var box = cy.collection(r2.getAllInBox(select[0], select[1], select[2], select[3])); + r2.redrawHint("select", true); + if (box.length > 0) { + r2.redrawHint("eles", true); + } + cy.emit(makeEvent("boxend")); + var eleWouldBeSelected = /* @__PURE__ */ __name(function eleWouldBeSelected2(ele) { + return ele.selectable() && !ele.selected(); + }, "eleWouldBeSelected"); + if (cy.selectionType() === "additive") { + box.emit(makeEvent("box")).stdFilter(eleWouldBeSelected).select().emit(makeEvent("boxselect")); + } else { + if (!multSelKeyDown) { + cy.$(isSelected).unmerge(box).unselect(); + } + box.emit(makeEvent("box")).stdFilter(eleWouldBeSelected).select().emit(makeEvent("boxselect")); + } + r2.redraw(); + } + if (r2.hoverData.dragging) { + r2.hoverData.dragging = false; + r2.redrawHint("select", true); + r2.redrawHint("eles", true); + r2.redraw(); + } + if (!select[4]) { + r2.redrawHint("drag", true); + r2.redrawHint("eles", true); + var downWasGrabbed = down && down.grabbed(); + freeDraggedElements(draggedElements); + if (downWasGrabbed) { + down.emit(makeEvent("freeon")); + draggedElements.emit(makeEvent("free")); + if (r2.dragData.didDrag) { + down.emit(makeEvent("dragfreeon")); + draggedElements.emit(makeEvent("dragfree")); + } + } } } - } - }; - reflection2 = new MermaidAstReflection(); - InfoGrammar = /* @__PURE__ */ __name2(() => loadedInfoGrammar ?? (loadedInfoGrammar = loadGrammarFromJson('{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')), "InfoGrammar"); - PacketGrammar = /* @__PURE__ */ __name2(() => loadedPacketGrammar ?? (loadedPacketGrammar = loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"packet-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"?"},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}`)), "PacketGrammar"); - PieGrammar = /* @__PURE__ */ __name2(() => loadedPieGrammar ?? (loadedPieGrammar = loadGrammarFromJson('{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"PIE_SECTION_LABEL","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]+\\"/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PIE_SECTION_VALUE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/(0|[1-9][0-9]*)(\\\\.[0-9]+)?/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')), "PieGrammar"); - ArchitectureGrammar = /* @__PURE__ */ __name2(() => loadedArchitectureGrammar ?? (loadedArchitectureGrammar = loadGrammarFromJson('{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ID","definition":{"$type":"RegexToken","regex":"/[\\\\w]+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TEXT_ICON","definition":{"$type":"RegexToken","regex":"/\\\\(\\"[^\\"]+\\"\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')), "ArchitectureGrammar"); - GitGraphGrammar = /* @__PURE__ */ __name2(() => loadedGitGraphGrammar ?? (loadedGitGraphGrammar = loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+(?=\\\\s)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[]}`)), "GitGraphGrammar"); - RadarGrammar = /* @__PURE__ */ __name2(() => loadedRadarGrammar ?? (loadedRadarGrammar = loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"Radar","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@12"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@12"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/(0|[1-9][0-9]*)(\\\\.[0-9]+)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9\\\\-_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[]}`)), "RadarGrammar"); - InfoLanguageMetaData = { - languageId: "info", - fileExtensions: [".mmd", ".mermaid"], - caseInsensitive: false, - mode: "production" - }; - PacketLanguageMetaData = { - languageId: "packet", - fileExtensions: [".mmd", ".mermaid"], - caseInsensitive: false, - mode: "production" - }; - PieLanguageMetaData = { - languageId: "pie", - fileExtensions: [".mmd", ".mermaid"], - caseInsensitive: false, - mode: "production" - }; - ArchitectureLanguageMetaData = { - languageId: "architecture", - fileExtensions: [".mmd", ".mermaid"], - caseInsensitive: false, - mode: "production" - }; - GitGraphLanguageMetaData = { - languageId: "gitGraph", - fileExtensions: [".mmd", ".mermaid"], - caseInsensitive: false, - mode: "production" - }; - RadarLanguageMetaData = { - languageId: "radar", - fileExtensions: [".mmd", ".mermaid"], - caseInsensitive: false, - mode: "production" - }; - MermaidGeneratedSharedModule = { - AstReflection: /* @__PURE__ */ __name2(() => new MermaidAstReflection(), "AstReflection") - }; - InfoGeneratedModule = { - Grammar: /* @__PURE__ */ __name2(() => InfoGrammar(), "Grammar"), - LanguageMetaData: /* @__PURE__ */ __name2(() => InfoLanguageMetaData, "LanguageMetaData"), - parser: {} - }; - PacketGeneratedModule = { - Grammar: /* @__PURE__ */ __name2(() => PacketGrammar(), "Grammar"), - LanguageMetaData: /* @__PURE__ */ __name2(() => PacketLanguageMetaData, "LanguageMetaData"), - parser: {} - }; - PieGeneratedModule = { - Grammar: /* @__PURE__ */ __name2(() => PieGrammar(), "Grammar"), - LanguageMetaData: /* @__PURE__ */ __name2(() => PieLanguageMetaData, "LanguageMetaData"), - parser: {} - }; - ArchitectureGeneratedModule = { - Grammar: /* @__PURE__ */ __name2(() => ArchitectureGrammar(), "Grammar"), - LanguageMetaData: /* @__PURE__ */ __name2(() => ArchitectureLanguageMetaData, "LanguageMetaData"), - parser: {} - }; - GitGraphGeneratedModule = { - Grammar: /* @__PURE__ */ __name2(() => GitGraphGrammar(), "Grammar"), - LanguageMetaData: /* @__PURE__ */ __name2(() => GitGraphLanguageMetaData, "LanguageMetaData"), - parser: {} - }; - RadarGeneratedModule = { - Grammar: /* @__PURE__ */ __name2(() => RadarGrammar(), "Grammar"), - LanguageMetaData: /* @__PURE__ */ __name2(() => RadarLanguageMetaData, "LanguageMetaData"), - parser: {} - }; - accessibilityDescrRegex = /accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/; - accessibilityTitleRegex = /accTitle[\t ]*:([^\n\r]*)/; - titleRegex = /title([\t ][^\n\r]*|)/; - rulesRegexes = { - ACC_DESCR: accessibilityDescrRegex, - ACC_TITLE: accessibilityTitleRegex, - TITLE: titleRegex - }; - AbstractMermaidValueConverter = class extends DefaultValueConverter { - static { - __name(this, "AbstractMermaidValueConverter"); - } - static { - __name2(this, "AbstractMermaidValueConverter"); - } - runConverter(rule, input, cstNode) { - let value2 = this.runCommonConverter(rule, input, cstNode); - if (value2 === void 0) { - value2 = this.runCustomConverter(rule, input, cstNode); + select[4] = 0; + r2.hoverData.down = null; + r2.hoverData.cxtStarted = false; + r2.hoverData.draggingEles = false; + r2.hoverData.selecting = false; + r2.hoverData.isOverThresholdDrag = false; + r2.dragData.didDrag = false; + r2.hoverData.dragged = false; + r2.hoverData.dragDelta = []; + r2.hoverData.mdownPos = null; + r2.hoverData.mdownGPos = null; + r2.hoverData.which = null; + }, "mouseupHandler"), false); + var wheelDeltas = []; + var wheelDeltaN = 4; + var inaccurateScrollDevice; + var inaccurateScrollFactor = 1e5; + var allAreDivisibleBy = /* @__PURE__ */ __name(function allAreDivisibleBy2(list, factor) { + for (var i2 = 0; i2 < list.length; i2++) { + if (list[i2] % factor !== 0) { + return false; + } } - if (value2 === void 0) { - return super.runConverter(rule, input, cstNode); + return true; + }, "allAreDivisibleBy"); + var allAreSameMagnitude = /* @__PURE__ */ __name(function allAreSameMagnitude2(list) { + var firstMag = Math.abs(list[0]); + for (var i2 = 1; i2 < list.length; i2++) { + if (Math.abs(list[i2]) !== firstMag) { + return false; + } } - return value2; - } - runCommonConverter(rule, input, _cstNode) { - const regex2 = rulesRegexes[rule.name]; - if (regex2 === void 0) { - return void 0; + return true; + }, "allAreSameMagnitude"); + var wheelHandler = /* @__PURE__ */ __name(function wheelHandler2(e3) { + var clamp = false; + var delta = e3.deltaY; + if (delta == null) { + if (e3.wheelDeltaY != null) { + delta = e3.wheelDeltaY / 4; + } else if (e3.wheelDelta != null) { + delta = e3.wheelDelta / 4; + } } - const match2 = regex2.exec(input); - if (match2 === null) { - return void 0; + if (delta === 0) { + return; } - if (match2[1] !== void 0) { - return match2[1].trim().replace(/[\t ]{2,}/gm, " "); + if (inaccurateScrollDevice == null) { + if (wheelDeltas.length >= wheelDeltaN) { + var wds = wheelDeltas; + inaccurateScrollDevice = allAreDivisibleBy(wds, 5); + if (!inaccurateScrollDevice) { + var firstMag = Math.abs(wds[0]); + inaccurateScrollDevice = allAreSameMagnitude(wds) && firstMag > 5; + } + if (inaccurateScrollDevice) { + for (var i2 = 0; i2 < wds.length; i2++) { + inaccurateScrollFactor = Math.min(Math.abs(wds[i2]), inaccurateScrollFactor); + } + } + } else { + wheelDeltas.push(delta); + clamp = true; + } + } else if (inaccurateScrollDevice) { + inaccurateScrollFactor = Math.min(Math.abs(delta), inaccurateScrollFactor); } - if (match2[2] !== void 0) { - return match2[2].replace(/^\s*/gm, "").replace(/\s+$/gm, "").replace(/[\t ]{2,}/gm, " ").replace(/[\n\r]{2,}/gm, "\n"); + if (r2.scrollingPage) { + return; } - return void 0; - } - }; - CommonValueConverter = class extends AbstractMermaidValueConverter { - static { - __name(this, "CommonValueConverter"); - } - static { - __name2(this, "CommonValueConverter"); - } - runCustomConverter(_rule, _input, _cstNode) { - return void 0; - } - }; - AbstractMermaidTokenBuilder = class extends DefaultTokenBuilder { - static { - __name(this, "AbstractMermaidTokenBuilder"); - } - static { - __name2(this, "AbstractMermaidTokenBuilder"); - } - constructor(keywords) { - super(); - this.keywords = new Set(keywords); - } - buildKeywordTokens(rules, terminalTokens, options3) { - const tokenTypes = super.buildKeywordTokens(rules, terminalTokens, options3); - tokenTypes.forEach((tokenType) => { - if (this.keywords.has(tokenType.name) && tokenType.PATTERN !== void 0) { - tokenType.PATTERN = new RegExp(tokenType.PATTERN.toString() + "(?:(?=%%)|(?!\\S))"); + var cy = r2.cy; + var zoom2 = cy.zoom(); + var pan2 = cy.pan(); + var pos = r2.projectIntoViewport(e3.clientX, e3.clientY); + var rpos = [pos[0] * zoom2 + pan2.x, pos[1] * zoom2 + pan2.y]; + if (r2.hoverData.draggingEles || r2.hoverData.dragging || r2.hoverData.cxtStarted || inBoxSelection()) { + e3.preventDefault(); + return; + } + if (cy.panningEnabled() && cy.userPanningEnabled() && cy.zoomingEnabled() && cy.userZoomingEnabled()) { + e3.preventDefault(); + r2.data.wheelZooming = true; + clearTimeout(r2.data.wheelTimeout); + r2.data.wheelTimeout = setTimeout(function() { + r2.data.wheelZooming = false; + r2.redrawHint("eles", true); + r2.redraw(); + }, 150); + var diff2; + if (clamp && Math.abs(delta) > 5) { + delta = signum(delta) * 5; + } + diff2 = delta / -250; + if (inaccurateScrollDevice) { + diff2 /= inaccurateScrollFactor; + diff2 *= 3; + } + diff2 = diff2 * r2.wheelSensitivity; + var needsWheelFix = e3.deltaMode === 1; + if (needsWheelFix) { + diff2 *= 33; + } + var newZoom = cy.zoom() * Math.pow(10, diff2); + if (e3.type === "gesturechange") { + newZoom = r2.gestureStartZoom * e3.scale; + } + cy.zoom({ + level: newZoom, + renderedPosition: { + x: rpos[0], + y: rpos[1] + } + }); + cy.emit({ + type: e3.type === "gesturechange" ? "pinchzoom" : "scrollzoom", + originalEvent: e3, + position: { + x: pos[0], + y: pos[1] + } + }); + } + }, "wheelHandler"); + r2.registerBinding(r2.container, "wheel", wheelHandler, true); + r2.registerBinding(containerWindow, "scroll", /* @__PURE__ */ __name(function scrollHandler(e3) { + r2.scrollingPage = true; + clearTimeout(r2.scrollingPageTimeout); + r2.scrollingPageTimeout = setTimeout(function() { + r2.scrollingPage = false; + }, 250); + }, "scrollHandler"), true); + r2.registerBinding(r2.container, "gesturestart", /* @__PURE__ */ __name(function gestureStartHandler(e3) { + r2.gestureStartZoom = r2.cy.zoom(); + if (!r2.hasTouchStarted) { + e3.preventDefault(); + } + }, "gestureStartHandler"), true); + r2.registerBinding(r2.container, "gesturechange", function(e3) { + if (!r2.hasTouchStarted) { + wheelHandler(e3); + } + }, true); + r2.registerBinding(r2.container, "mouseout", /* @__PURE__ */ __name(function mouseOutHandler(e3) { + var pos = r2.projectIntoViewport(e3.clientX, e3.clientY); + r2.cy.emit({ + originalEvent: e3, + type: "mouseout", + position: { + x: pos[0], + y: pos[1] } }); - return tokenTypes; - } - }; - CommonTokenBuilder = class extends AbstractMermaidTokenBuilder { - static { - __name(this, "CommonTokenBuilder"); - } - static { - __name2(this, "CommonTokenBuilder"); - } - }; - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/chunk-2NYFTIL2.mjs - function createGitGraphServices(context = EmptyFileSystem) { - const shared = inject( - createDefaultSharedCoreModule(context), - MermaidGeneratedSharedModule - ); - const GitGraph2 = inject( - createDefaultCoreModule({ shared }), - GitGraphGeneratedModule, - GitGraphModule - ); - shared.ServiceRegistry.register(GitGraph2); - return { shared, GitGraph: GitGraph2 }; - } - var GitGraphTokenBuilder, GitGraphModule; - var init_chunk_2NYFTIL2 = __esm({ - "../parser/dist/chunks/mermaid-parser.core/chunk-2NYFTIL2.mjs"() { - "use strict"; - init_chunk_7PKI6E2E(); - init_lib3(); - GitGraphTokenBuilder = class extends AbstractMermaidTokenBuilder { - static { - __name(this, "GitGraphTokenBuilder"); - } - static { - __name2(this, "GitGraphTokenBuilder"); - } - constructor() { - super(["gitGraph"]); - } - }; - GitGraphModule = { - parser: { - TokenBuilder: /* @__PURE__ */ __name2(() => new GitGraphTokenBuilder(), "TokenBuilder"), - ValueConverter: /* @__PURE__ */ __name2(() => new CommonValueConverter(), "ValueConverter") - } - }; - __name(createGitGraphServices, "createGitGraphServices"); - __name2(createGitGraphServices, "createGitGraphServices"); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/chunk-EXZZNE6F.mjs - function createInfoServices(context = EmptyFileSystem) { - const shared = inject( - createDefaultSharedCoreModule(context), - MermaidGeneratedSharedModule - ); - const Info2 = inject( - createDefaultCoreModule({ shared }), - InfoGeneratedModule, - InfoModule - ); - shared.ServiceRegistry.register(Info2); - return { shared, Info: Info2 }; - } - var InfoTokenBuilder, InfoModule; - var init_chunk_EXZZNE6F = __esm({ - "../parser/dist/chunks/mermaid-parser.core/chunk-EXZZNE6F.mjs"() { - "use strict"; - init_chunk_7PKI6E2E(); - init_lib3(); - InfoTokenBuilder = class extends AbstractMermaidTokenBuilder { - static { - __name(this, "InfoTokenBuilder"); - } - static { - __name2(this, "InfoTokenBuilder"); - } - constructor() { - super(["info", "showInfo"]); - } - }; - InfoModule = { - parser: { - TokenBuilder: /* @__PURE__ */ __name2(() => new InfoTokenBuilder(), "TokenBuilder"), - ValueConverter: /* @__PURE__ */ __name2(() => new CommonValueConverter(), "ValueConverter") - } - }; - __name(createInfoServices, "createInfoServices"); - __name2(createInfoServices, "createInfoServices"); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/chunk-V4Q32G6S.mjs - function createPacketServices(context = EmptyFileSystem) { - const shared = inject( - createDefaultSharedCoreModule(context), - MermaidGeneratedSharedModule - ); - const Packet2 = inject( - createDefaultCoreModule({ shared }), - PacketGeneratedModule, - PacketModule - ); - shared.ServiceRegistry.register(Packet2); - return { shared, Packet: Packet2 }; - } - var PacketTokenBuilder, PacketModule; - var init_chunk_V4Q32G6S = __esm({ - "../parser/dist/chunks/mermaid-parser.core/chunk-V4Q32G6S.mjs"() { - "use strict"; - init_chunk_7PKI6E2E(); - init_lib3(); - PacketTokenBuilder = class extends AbstractMermaidTokenBuilder { - static { - __name(this, "PacketTokenBuilder"); - } - static { - __name2(this, "PacketTokenBuilder"); - } - constructor() { - super(["packet-beta"]); - } - }; - PacketModule = { - parser: { - TokenBuilder: /* @__PURE__ */ __name2(() => new PacketTokenBuilder(), "TokenBuilder"), - ValueConverter: /* @__PURE__ */ __name2(() => new CommonValueConverter(), "ValueConverter") - } - }; - __name(createPacketServices, "createPacketServices"); - __name2(createPacketServices, "createPacketServices"); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/chunk-ROXG7S4E.mjs - function createPieServices(context = EmptyFileSystem) { - const shared = inject( - createDefaultSharedCoreModule(context), - MermaidGeneratedSharedModule - ); - const Pie2 = inject( - createDefaultCoreModule({ shared }), - PieGeneratedModule, - PieModule - ); - shared.ServiceRegistry.register(Pie2); - return { shared, Pie: Pie2 }; - } - var PieTokenBuilder, PieValueConverter, PieModule; - var init_chunk_ROXG7S4E = __esm({ - "../parser/dist/chunks/mermaid-parser.core/chunk-ROXG7S4E.mjs"() { - "use strict"; - init_chunk_7PKI6E2E(); - init_lib3(); - PieTokenBuilder = class extends AbstractMermaidTokenBuilder { - static { - __name(this, "PieTokenBuilder"); - } - static { - __name2(this, "PieTokenBuilder"); - } - constructor() { - super(["pie", "showData"]); - } - }; - PieValueConverter = class extends AbstractMermaidValueConverter { - static { - __name(this, "PieValueConverter"); - } - static { - __name2(this, "PieValueConverter"); - } - runCustomConverter(rule, input, _cstNode) { - if (rule.name !== "PIE_SECTION_LABEL") { - return void 0; + }, "mouseOutHandler"), false); + r2.registerBinding(r2.container, "mouseover", /* @__PURE__ */ __name(function mouseOverHandler(e3) { + var pos = r2.projectIntoViewport(e3.clientX, e3.clientY); + r2.cy.emit({ + originalEvent: e3, + type: "mouseover", + position: { + x: pos[0], + y: pos[1] + } + }); + }, "mouseOverHandler"), false); + var f1x1, f1y1, f2x1, f2y1; + var distance1, distance1Sq; + var center1, modelCenter1; + var offsetLeft, offsetTop; + var containerWidth, containerHeight; + var twoFingersStartInside; + var distance2 = /* @__PURE__ */ __name(function distance3(x1, y1, x22, y22) { + return Math.sqrt((x22 - x1) * (x22 - x1) + (y22 - y1) * (y22 - y1)); + }, "distance"); + var distanceSq = /* @__PURE__ */ __name(function distanceSq2(x1, y1, x22, y22) { + return (x22 - x1) * (x22 - x1) + (y22 - y1) * (y22 - y1); + }, "distanceSq"); + var touchstartHandler; + r2.registerBinding(r2.container, "touchstart", touchstartHandler = /* @__PURE__ */ __name(function touchstartHandler2(e3) { + r2.hasTouchStarted = true; + if (!eventInContainer(e3)) { + return; } - return input.replace(/"/g, "").trim(); - } - }; - PieModule = { - parser: { - TokenBuilder: /* @__PURE__ */ __name2(() => new PieTokenBuilder(), "TokenBuilder"), - ValueConverter: /* @__PURE__ */ __name2(() => new PieValueConverter(), "ValueConverter") - } - }; - __name(createPieServices, "createPieServices"); - __name2(createPieServices, "createPieServices"); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/chunk-C4OEIS7N.mjs - function createArchitectureServices(context = EmptyFileSystem) { - const shared = inject( - createDefaultSharedCoreModule(context), - MermaidGeneratedSharedModule - ); - const Architecture2 = inject( - createDefaultCoreModule({ shared }), - ArchitectureGeneratedModule, - ArchitectureModule - ); - shared.ServiceRegistry.register(Architecture2); - return { shared, Architecture: Architecture2 }; - } - var ArchitectureTokenBuilder, ArchitectureValueConverter, ArchitectureModule; - var init_chunk_C4OEIS7N = __esm({ - "../parser/dist/chunks/mermaid-parser.core/chunk-C4OEIS7N.mjs"() { - "use strict"; - init_chunk_7PKI6E2E(); - init_lib3(); - ArchitectureTokenBuilder = class extends AbstractMermaidTokenBuilder { - static { - __name(this, "ArchitectureTokenBuilder"); - } - static { - __name2(this, "ArchitectureTokenBuilder"); - } - constructor() { - super(["architecture"]); - } - }; - ArchitectureValueConverter = class extends AbstractMermaidValueConverter { - static { - __name(this, "ArchitectureValueConverter"); - } - static { - __name2(this, "ArchitectureValueConverter"); - } - runCustomConverter(rule, input, _cstNode) { - if (rule.name === "ARCH_ICON") { - return input.replace(/[()]/g, "").trim(); - } else if (rule.name === "ARCH_TEXT_ICON") { - return input.replace(/["()]/g, ""); - } else if (rule.name === "ARCH_TITLE") { - return input.replace(/[[\]]/g, "").trim(); + blurActiveDomElement(); + r2.touchData.capture = true; + r2.data.bgActivePosistion = void 0; + var cy = r2.cy; + var now3 = r2.touchData.now; + var earlier = r2.touchData.earlier; + if (e3.touches[0]) { + var pos = r2.projectIntoViewport(e3.touches[0].clientX, e3.touches[0].clientY); + now3[0] = pos[0]; + now3[1] = pos[1]; } - return void 0; - } - }; - ArchitectureModule = { - parser: { - TokenBuilder: /* @__PURE__ */ __name2(() => new ArchitectureTokenBuilder(), "TokenBuilder"), - ValueConverter: /* @__PURE__ */ __name2(() => new ArchitectureValueConverter(), "ValueConverter") - } - }; - __name(createArchitectureServices, "createArchitectureServices"); - __name2(createArchitectureServices, "createArchitectureServices"); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/chunk-2O5ZK7RR.mjs - function createRadarServices(context = EmptyFileSystem) { - const shared = inject( - createDefaultSharedCoreModule(context), - MermaidGeneratedSharedModule - ); - const Radar2 = inject( - createDefaultCoreModule({ shared }), - RadarGeneratedModule, - RadarModule - ); - shared.ServiceRegistry.register(Radar2); - return { shared, Radar: Radar2 }; - } - var RadarTokenBuilder, RadarModule; - var init_chunk_2O5ZK7RR = __esm({ - "../parser/dist/chunks/mermaid-parser.core/chunk-2O5ZK7RR.mjs"() { - "use strict"; - init_chunk_7PKI6E2E(); - init_lib3(); - RadarTokenBuilder = class extends AbstractMermaidTokenBuilder { - static { - __name(this, "RadarTokenBuilder"); - } - static { - __name2(this, "RadarTokenBuilder"); - } - constructor() { - super(["radar-beta"]); - } - }; - RadarModule = { - parser: { - TokenBuilder: /* @__PURE__ */ __name2(() => new RadarTokenBuilder(), "TokenBuilder"), - ValueConverter: /* @__PURE__ */ __name2(() => new CommonValueConverter(), "ValueConverter") - } - }; - __name(createRadarServices, "createRadarServices"); - __name2(createRadarServices, "createRadarServices"); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/info-4N47QTOZ.mjs - var info_4N47QTOZ_exports = {}; - __export(info_4N47QTOZ_exports, { - InfoModule: () => InfoModule, - createInfoServices: () => createInfoServices - }); - var init_info_4N47QTOZ = __esm({ - "../parser/dist/chunks/mermaid-parser.core/info-4N47QTOZ.mjs"() { - "use strict"; - init_chunk_EXZZNE6F(); - init_chunk_7PKI6E2E(); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/packet-KVYON367.mjs - var packet_KVYON367_exports = {}; - __export(packet_KVYON367_exports, { - PacketModule: () => PacketModule, - createPacketServices: () => createPacketServices - }); - var init_packet_KVYON367 = __esm({ - "../parser/dist/chunks/mermaid-parser.core/packet-KVYON367.mjs"() { - "use strict"; - init_chunk_V4Q32G6S(); - init_chunk_7PKI6E2E(); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/pie-R6RNRRYF.mjs - var pie_R6RNRRYF_exports = {}; - __export(pie_R6RNRRYF_exports, { - PieModule: () => PieModule, - createPieServices: () => createPieServices - }); - var init_pie_R6RNRRYF = __esm({ - "../parser/dist/chunks/mermaid-parser.core/pie-R6RNRRYF.mjs"() { - "use strict"; - init_chunk_ROXG7S4E(); - init_chunk_7PKI6E2E(); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/architecture-4AB2E3PP.mjs - var architecture_4AB2E3PP_exports = {}; - __export(architecture_4AB2E3PP_exports, { - ArchitectureModule: () => ArchitectureModule, - createArchitectureServices: () => createArchitectureServices - }); - var init_architecture_4AB2E3PP = __esm({ - "../parser/dist/chunks/mermaid-parser.core/architecture-4AB2E3PP.mjs"() { - "use strict"; - init_chunk_C4OEIS7N(); - init_chunk_7PKI6E2E(); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/gitGraph-O2Q2CXLX.mjs - var gitGraph_O2Q2CXLX_exports = {}; - __export(gitGraph_O2Q2CXLX_exports, { - GitGraphModule: () => GitGraphModule, - createGitGraphServices: () => createGitGraphServices - }); - var init_gitGraph_O2Q2CXLX = __esm({ - "../parser/dist/chunks/mermaid-parser.core/gitGraph-O2Q2CXLX.mjs"() { - "use strict"; - init_chunk_2NYFTIL2(); - init_chunk_7PKI6E2E(); - } - }); - - // ../parser/dist/chunks/mermaid-parser.core/radar-MK3ICKWK.mjs - var radar_MK3ICKWK_exports = {}; - __export(radar_MK3ICKWK_exports, { - RadarModule: () => RadarModule, - createRadarServices: () => createRadarServices - }); - var init_radar_MK3ICKWK = __esm({ - "../parser/dist/chunks/mermaid-parser.core/radar-MK3ICKWK.mjs"() { - "use strict"; - init_chunk_2O5ZK7RR(); - init_chunk_7PKI6E2E(); - } - }); - - // ../parser/dist/mermaid-parser.core.mjs - async function parse(diagramType, text4) { - const initializer = initializers[diagramType]; - if (!initializer) { - throw new Error(`Unknown diagram type: ${diagramType}`); - } - if (!parsers[diagramType]) { - await initializer(); - } - const parser24 = parsers[diagramType]; - const result = parser24.parse(text4); - if (result.lexerErrors.length > 0 || result.parserErrors.length > 0) { - throw new MermaidParseError(result); - } - return result.value; - } - var parsers, initializers, MermaidParseError; - var init_mermaid_parser_core = __esm({ - "../parser/dist/mermaid-parser.core.mjs"() { - "use strict"; - init_chunk_2NYFTIL2(); - init_chunk_EXZZNE6F(); - init_chunk_V4Q32G6S(); - init_chunk_ROXG7S4E(); - init_chunk_C4OEIS7N(); - init_chunk_2O5ZK7RR(); - init_chunk_7PKI6E2E(); - parsers = {}; - initializers = { - info: /* @__PURE__ */ __name2(async () => { - const { createInfoServices: createInfoServices2 } = await Promise.resolve().then(() => (init_info_4N47QTOZ(), info_4N47QTOZ_exports)); - const parser24 = createInfoServices2().Info.parser.LangiumParser; - parsers.info = parser24; - }, "info"), - packet: /* @__PURE__ */ __name2(async () => { - const { createPacketServices: createPacketServices2 } = await Promise.resolve().then(() => (init_packet_KVYON367(), packet_KVYON367_exports)); - const parser24 = createPacketServices2().Packet.parser.LangiumParser; - parsers.packet = parser24; - }, "packet"), - pie: /* @__PURE__ */ __name2(async () => { - const { createPieServices: createPieServices2 } = await Promise.resolve().then(() => (init_pie_R6RNRRYF(), pie_R6RNRRYF_exports)); - const parser24 = createPieServices2().Pie.parser.LangiumParser; - parsers.pie = parser24; - }, "pie"), - architecture: /* @__PURE__ */ __name2(async () => { - const { createArchitectureServices: createArchitectureServices2 } = await Promise.resolve().then(() => (init_architecture_4AB2E3PP(), architecture_4AB2E3PP_exports)); - const parser24 = createArchitectureServices2().Architecture.parser.LangiumParser; - parsers.architecture = parser24; - }, "architecture"), - gitGraph: /* @__PURE__ */ __name2(async () => { - const { createGitGraphServices: createGitGraphServices2 } = await Promise.resolve().then(() => (init_gitGraph_O2Q2CXLX(), gitGraph_O2Q2CXLX_exports)); - const parser24 = createGitGraphServices2().GitGraph.parser.LangiumParser; - parsers.gitGraph = parser24; - }, "gitGraph"), - radar: /* @__PURE__ */ __name2(async () => { - const { createRadarServices: createRadarServices2 } = await Promise.resolve().then(() => (init_radar_MK3ICKWK(), radar_MK3ICKWK_exports)); - const parser24 = createRadarServices2().Radar.parser.LangiumParser; - parsers.radar = parser24; - }, "radar") - }; - __name(parse, "parse"); - __name2(parse, "parse"); - MermaidParseError = class extends Error { - static { - __name(this, "MermaidParseError"); - } - constructor(result) { - const lexerErrors = result.lexerErrors.map((err) => err.message).join("\n"); - const parserErrors = result.parserErrors.map((err) => err.message).join("\n"); - super(`Parsing failed: ${lexerErrors} ${parserErrors}`); - this.result = result; - } - static { - __name2(this, "MermaidParseError"); - } - }; - } - }); - - // src/diagrams/common/populateCommonDb.ts - function populateCommonDb(ast, db10) { - if (ast.accDescr) { - db10.setAccDescription?.(ast.accDescr); - } - if (ast.accTitle) { - db10.setAccTitle?.(ast.accTitle); - } - if (ast.title) { - db10.setDiagramTitle?.(ast.title); - } - } - var init_populateCommonDb = __esm({ - "src/diagrams/common/populateCommonDb.ts"() { - "use strict"; - __name(populateCommonDb, "populateCommonDb"); - } - }); - - // src/diagrams/git/gitGraphTypes.ts - var commitType; - var init_gitGraphTypes = __esm({ - "src/diagrams/git/gitGraphTypes.ts"() { - "use strict"; - commitType = { - NORMAL: 0, - REVERSE: 1, - HIGHLIGHT: 2, - MERGE: 3, - CHERRY_PICK: 4 - }; - } - }); - - // src/utils/imperativeState.ts - var ImperativeState; - var init_imperativeState = __esm({ - "src/utils/imperativeState.ts"() { - "use strict"; - ImperativeState = class { - /** - * @param init - Function that creates the default state. - */ - constructor(init3) { - this.init = init3; - this.records = this.init(); - } - static { - __name(this, "ImperativeState"); - } - reset() { - this.records = this.init(); - } - }; - } - }); - - // src/diagrams/git/gitGraphAst.ts - function getID() { - return random({ length: 7 }); - } - function uniqBy2(list2, fn3) { - const recordMap = /* @__PURE__ */ Object.create(null); - return list2.reduce((out, item) => { - const key = fn3(item); - if (!recordMap[key]) { - recordMap[key] = true; - out.push(item); - } - return out; - }, []); - } - function upsert(arr, key, newVal) { - const index = arr.indexOf(key); - if (index === -1) { - arr.push(newVal); - } else { - arr.splice(index, 1, newVal); - } - } - function prettyPrintCommitHistory(commitArr) { - const commit2 = commitArr.reduce((out, commit3) => { - if (out.seq > commit3.seq) { - return out; - } - return commit3; - }, commitArr[0]); - let line2 = ""; - commitArr.forEach(function(c3) { - if (c3 === commit2) { - line2 += " *"; - } else { - line2 += " |"; - } - }); - const label = [line2, commit2.id, commit2.seq]; - for (const branch2 in state2.records.branches) { - if (state2.records.branches.get(branch2) === commit2.id) { - label.push(branch2); - } - } - log.debug(label.join(" ")); - if (commit2.parents && commit2.parents.length == 2 && commit2.parents[0] && commit2.parents[1]) { - const newCommit = state2.records.commits.get(commit2.parents[0]); - upsert(commitArr, commit2, newCommit); - if (commit2.parents[1]) { - commitArr.push(state2.records.commits.get(commit2.parents[1])); - } - } else if (commit2.parents.length == 0) { - return; - } else { - if (commit2.parents[0]) { - const newCommit = state2.records.commits.get(commit2.parents[0]); - upsert(commitArr, commit2, newCommit); - } - } - commitArr = uniqBy2(commitArr, (c3) => c3.id); - prettyPrintCommitHistory(commitArr); - } - var DEFAULT_GITGRAPH_CONFIG, getConfig3, state2, setDirection, setOptions2, getOptions, commit, branch, merge3, cherryPick, checkout, prettyPrint, clear7, getBranchesAsObjArray, getBranches, getCommits, getCommitsArray, getCurrentBranch, getDirection, getHead, db; - var init_gitGraphAst = __esm({ - "src/diagrams/git/gitGraphAst.ts"() { - "use strict"; - init_logger(); - init_utils2(); - init_config(); - init_common(); - init_commonDb(); - init_gitGraphTypes(); - init_imperativeState(); - init_defaultConfig(); - DEFAULT_GITGRAPH_CONFIG = defaultConfig_default.gitGraph; - getConfig3 = /* @__PURE__ */ __name(() => { - const config5 = cleanAndMerge({ - ...DEFAULT_GITGRAPH_CONFIG, - ...getConfig().gitGraph - }); - return config5; - }, "getConfig"); - state2 = new ImperativeState(() => { - const config5 = getConfig3(); - const mainBranchName = config5.mainBranchName; - const mainBranchOrder = config5.mainBranchOrder; - return { - mainBranchName, - commits: /* @__PURE__ */ new Map(), - head: null, - branchConfig: /* @__PURE__ */ new Map([[mainBranchName, { name: mainBranchName, order: mainBranchOrder }]]), - branches: /* @__PURE__ */ new Map([[mainBranchName, null]]), - currBranch: mainBranchName, - direction: "LR", - seq: 0, - options: {} - }; - }); - __name(getID, "getID"); - __name(uniqBy2, "uniqBy"); - setDirection = /* @__PURE__ */ __name(function(dir2) { - state2.records.direction = dir2; - }, "setDirection"); - setOptions2 = /* @__PURE__ */ __name(function(rawOptString) { - log.debug("options str", rawOptString); - rawOptString = rawOptString?.trim(); - rawOptString = rawOptString || "{}"; - try { - state2.records.options = JSON.parse(rawOptString); - } catch (e3) { - log.error("error while parsing gitGraph options", e3.message); - } - }, "setOptions"); - getOptions = /* @__PURE__ */ __name(function() { - return state2.records.options; - }, "getOptions"); - commit = /* @__PURE__ */ __name(function(commitDB) { - let msg = commitDB.msg; - let id29 = commitDB.id; - const type3 = commitDB.type; - let tags2 = commitDB.tags; - log.info("commit", msg, id29, type3, tags2); - log.debug("Entering commit:", msg, id29, type3, tags2); - const config5 = getConfig3(); - id29 = common_default.sanitizeText(id29, config5); - msg = common_default.sanitizeText(msg, config5); - tags2 = tags2?.map((tag2) => common_default.sanitizeText(tag2, config5)); - const newCommit = { - id: id29 ? id29 : state2.records.seq + "-" + getID(), - message: msg, - seq: state2.records.seq++, - type: type3 ?? commitType.NORMAL, - tags: tags2 ?? [], - parents: state2.records.head == null ? [] : [state2.records.head.id], - branch: state2.records.currBranch - }; - state2.records.head = newCommit; - log.info("main branch", config5.mainBranchName); - state2.records.commits.set(newCommit.id, newCommit); - state2.records.branches.set(state2.records.currBranch, newCommit.id); - log.debug("in pushCommit " + newCommit.id); - }, "commit"); - branch = /* @__PURE__ */ __name(function(branchDB) { - let name = branchDB.name; - const order2 = branchDB.order; - name = common_default.sanitizeText(name, getConfig3()); - if (state2.records.branches.has(name)) { - throw new Error( - `Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${name}")` - ); - } - state2.records.branches.set(name, state2.records.head != null ? state2.records.head.id : null); - state2.records.branchConfig.set(name, { name, order: order2 }); - checkout(name); - log.debug("in createBranch"); - }, "branch"); - merge3 = /* @__PURE__ */ __name((mergeDB) => { - let otherBranch = mergeDB.branch; - let customId = mergeDB.id; - const overrideType = mergeDB.type; - const customTags = mergeDB.tags; - const config5 = getConfig3(); - otherBranch = common_default.sanitizeText(otherBranch, config5); - if (customId) { - customId = common_default.sanitizeText(customId, config5); - } - const currentBranchCheck = state2.records.branches.get(state2.records.currBranch); - const otherBranchCheck = state2.records.branches.get(otherBranch); - const currentCommit = currentBranchCheck ? state2.records.commits.get(currentBranchCheck) : void 0; - const otherCommit = otherBranchCheck ? state2.records.commits.get(otherBranchCheck) : void 0; - if (currentCommit && otherCommit && currentCommit.branch === otherBranch) { - throw new Error(`Cannot merge branch '${otherBranch}' into itself.`); - } - if (state2.records.currBranch === otherBranch) { - const error3 = new Error('Incorrect usage of "merge". Cannot merge a branch to itself'); - error3.hash = { - text: `merge ${otherBranch}`, - token: `merge ${otherBranch}`, - expected: ["branch abc"] - }; - throw error3; - } - if (currentCommit === void 0 || !currentCommit) { - const error3 = new Error( - `Incorrect usage of "merge". Current branch (${state2.records.currBranch})has no commits` - ); - error3.hash = { - text: `merge ${otherBranch}`, - token: `merge ${otherBranch}`, - expected: ["commit"] - }; - throw error3; - } - if (!state2.records.branches.has(otherBranch)) { - const error3 = new Error( - 'Incorrect usage of "merge". Branch to be merged (' + otherBranch + ") does not exist" - ); - error3.hash = { - text: `merge ${otherBranch}`, - token: `merge ${otherBranch}`, - expected: [`branch ${otherBranch}`] - }; - throw error3; - } - if (otherCommit === void 0 || !otherCommit) { - const error3 = new Error( - 'Incorrect usage of "merge". Branch to be merged (' + otherBranch + ") has no commits" - ); - error3.hash = { - text: `merge ${otherBranch}`, - token: `merge ${otherBranch}`, - expected: ['"commit"'] - }; - throw error3; - } - if (currentCommit === otherCommit) { - const error3 = new Error('Incorrect usage of "merge". Both branches have same head'); - error3.hash = { - text: `merge ${otherBranch}`, - token: `merge ${otherBranch}`, - expected: ["branch abc"] - }; - throw error3; - } - if (customId && state2.records.commits.has(customId)) { - const error3 = new Error( - 'Incorrect usage of "merge". Commit with id:' + customId + " already exists, use different custom Id" - ); - error3.hash = { - text: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(" ")}`, - token: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(" ")}`, - expected: [ - `merge ${otherBranch} ${customId}_UNIQUE ${overrideType} ${customTags?.join(" ")}` - ] - }; - throw error3; - } - const verifiedBranch = otherBranchCheck ? otherBranchCheck : ""; - const commit2 = { - id: customId || `${state2.records.seq}-${getID()}`, - message: `merged branch ${otherBranch} into ${state2.records.currBranch}`, - seq: state2.records.seq++, - parents: state2.records.head == null ? [] : [state2.records.head.id, verifiedBranch], - branch: state2.records.currBranch, - type: commitType.MERGE, - customType: overrideType, - customId: customId ? true : false, - tags: customTags ?? [] - }; - state2.records.head = commit2; - state2.records.commits.set(commit2.id, commit2); - state2.records.branches.set(state2.records.currBranch, commit2.id); - log.debug(state2.records.branches); - log.debug("in mergeBranch"); - }, "merge"); - cherryPick = /* @__PURE__ */ __name(function(cherryPickDB) { - let sourceId = cherryPickDB.id; - let targetId = cherryPickDB.targetId; - let tags2 = cherryPickDB.tags; - let parentCommitId = cherryPickDB.parent; - log.debug("Entering cherryPick:", sourceId, targetId, tags2); - const config5 = getConfig3(); - sourceId = common_default.sanitizeText(sourceId, config5); - targetId = common_default.sanitizeText(targetId, config5); - tags2 = tags2?.map((tag2) => common_default.sanitizeText(tag2, config5)); - parentCommitId = common_default.sanitizeText(parentCommitId, config5); - if (!sourceId || !state2.records.commits.has(sourceId)) { - const error3 = new Error( - 'Incorrect usage of "cherryPick". Source commit id should exist and provided' - ); - error3.hash = { - text: `cherryPick ${sourceId} ${targetId}`, - token: `cherryPick ${sourceId} ${targetId}`, - expected: ["cherry-pick abc"] - }; - throw error3; - } - const sourceCommit = state2.records.commits.get(sourceId); - if (sourceCommit === void 0 || !sourceCommit) { - throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided'); - } - if (parentCommitId && !(Array.isArray(sourceCommit.parents) && sourceCommit.parents.includes(parentCommitId))) { - const error3 = new Error( - "Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit." - ); - throw error3; - } - const sourceCommitBranch = sourceCommit.branch; - if (sourceCommit.type === commitType.MERGE && !parentCommitId) { - const error3 = new Error( - "Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified." - ); - throw error3; - } - if (!targetId || !state2.records.commits.has(targetId)) { - if (sourceCommitBranch === state2.records.currBranch) { - const error3 = new Error( - 'Incorrect usage of "cherryPick". Source commit is already on current branch' - ); - error3.hash = { - text: `cherryPick ${sourceId} ${targetId}`, - token: `cherryPick ${sourceId} ${targetId}`, - expected: ["cherry-pick abc"] - }; - throw error3; + if (e3.touches[1]) { + var pos = r2.projectIntoViewport(e3.touches[1].clientX, e3.touches[1].clientY); + now3[2] = pos[0]; + now3[3] = pos[1]; } - const currentCommitId = state2.records.branches.get(state2.records.currBranch); - if (currentCommitId === void 0 || !currentCommitId) { - const error3 = new Error( - `Incorrect usage of "cherry-pick". Current branch (${state2.records.currBranch})has no commits` - ); - error3.hash = { - text: `cherryPick ${sourceId} ${targetId}`, - token: `cherryPick ${sourceId} ${targetId}`, - expected: ["cherry-pick abc"] - }; - throw error3; + if (e3.touches[2]) { + var pos = r2.projectIntoViewport(e3.touches[2].clientX, e3.touches[2].clientY); + now3[4] = pos[0]; + now3[5] = pos[1]; } - const currentCommit = state2.records.commits.get(currentCommitId); - if (currentCommit === void 0 || !currentCommit) { - const error3 = new Error( - `Incorrect usage of "cherry-pick". Current branch (${state2.records.currBranch})has no commits` - ); - error3.hash = { - text: `cherryPick ${sourceId} ${targetId}`, - token: `cherryPick ${sourceId} ${targetId}`, - expected: ["cherry-pick abc"] + var makeEvent = /* @__PURE__ */ __name(function makeEvent2(type3) { + return { + originalEvent: e3, + type: type3, + position: { + x: now3[0], + y: now3[1] + } }; - throw error3; + }, "makeEvent"); + if (e3.touches[1]) { + r2.touchData.singleTouchMoved = true; + freeDraggedElements(r2.dragData.touchDragEles); + var offsets = r2.findContainerClientCoords(); + offsetLeft = offsets[0]; + offsetTop = offsets[1]; + containerWidth = offsets[2]; + containerHeight = offsets[3]; + f1x1 = e3.touches[0].clientX - offsetLeft; + f1y1 = e3.touches[0].clientY - offsetTop; + f2x1 = e3.touches[1].clientX - offsetLeft; + f2y1 = e3.touches[1].clientY - offsetTop; + twoFingersStartInside = 0 <= f1x1 && f1x1 <= containerWidth && 0 <= f2x1 && f2x1 <= containerWidth && 0 <= f1y1 && f1y1 <= containerHeight && 0 <= f2y1 && f2y1 <= containerHeight; + var pan2 = cy.pan(); + var zoom2 = cy.zoom(); + distance1 = distance2(f1x1, f1y1, f2x1, f2y1); + distance1Sq = distanceSq(f1x1, f1y1, f2x1, f2y1); + center1 = [(f1x1 + f2x1) / 2, (f1y1 + f2y1) / 2]; + modelCenter1 = [(center1[0] - pan2.x) / zoom2, (center1[1] - pan2.y) / zoom2]; + var cxtDistThreshold = 200; + var cxtDistThresholdSq = cxtDistThreshold * cxtDistThreshold; + if (distance1Sq < cxtDistThresholdSq && !e3.touches[2]) { + var near1 = r2.findNearestElement(now3[0], now3[1], true, true); + var near2 = r2.findNearestElement(now3[2], now3[3], true, true); + if (near1 && near1.isNode()) { + near1.activate().emit(makeEvent("cxttapstart")); + r2.touchData.start = near1; + } else if (near2 && near2.isNode()) { + near2.activate().emit(makeEvent("cxttapstart")); + r2.touchData.start = near2; + } else { + cy.emit(makeEvent("cxttapstart")); + } + if (r2.touchData.start) { + r2.touchData.start._private.grabbed = false; + } + r2.touchData.cxt = true; + r2.touchData.cxtDragged = false; + r2.data.bgActivePosistion = void 0; + r2.redraw(); + return; + } } - const commit2 = { - id: state2.records.seq + "-" + getID(), - message: `cherry-picked ${sourceCommit?.message} into ${state2.records.currBranch}`, - seq: state2.records.seq++, - parents: state2.records.head == null ? [] : [state2.records.head.id, sourceCommit.id], - branch: state2.records.currBranch, - type: commitType.CHERRY_PICK, - tags: tags2 ? tags2.filter(Boolean) : [ - `cherry-pick:${sourceCommit.id}${sourceCommit.type === commitType.MERGE ? `|parent:${parentCommitId}` : ""}` - ] - }; - state2.records.head = commit2; - state2.records.commits.set(commit2.id, commit2); - state2.records.branches.set(state2.records.currBranch, commit2.id); - log.debug(state2.records.branches); - log.debug("in cherryPick"); - } - }, "cherryPick"); - checkout = /* @__PURE__ */ __name(function(branch2) { - branch2 = common_default.sanitizeText(branch2, getConfig3()); - if (!state2.records.branches.has(branch2)) { - const error3 = new Error( - `Trying to checkout branch which is not yet created. (Help try using "branch ${branch2}")` - ); - error3.hash = { - text: `checkout ${branch2}`, - token: `checkout ${branch2}`, - expected: [`branch ${branch2}`] - }; - throw error3; - } else { - state2.records.currBranch = branch2; - const id29 = state2.records.branches.get(state2.records.currBranch); - if (id29 === void 0 || !id29) { - state2.records.head = null; - } else { - state2.records.head = state2.records.commits.get(id29) ?? null; + if (e3.touches[2]) { + if (cy.boxSelectionEnabled()) { + e3.preventDefault(); + } + } else if (e3.touches[1]) ; + else if (e3.touches[0]) { + var nears = r2.findNearestElements(now3[0], now3[1], true, true); + var near = nears[0]; + if (near != null) { + near.activate(); + r2.touchData.start = near; + r2.touchData.starts = nears; + if (r2.nodeIsGrabbable(near)) { + var draggedEles = r2.dragData.touchDragEles = cy.collection(); + var selectedNodes = null; + r2.redrawHint("eles", true); + r2.redrawHint("drag", true); + if (near.selected()) { + selectedNodes = cy.$(function(ele) { + return ele.selected() && r2.nodeIsGrabbable(ele); + }); + addNodesToDrag(selectedNodes, { + addToList: draggedEles + }); + } else { + addNodeToDrag(near, { + addToList: draggedEles + }); + } + setGrabTarget(near); + near.emit(makeEvent("grabon")); + if (selectedNodes) { + selectedNodes.forEach(function(n2) { + n2.emit(makeEvent("grab")); + }); + } else { + near.emit(makeEvent("grab")); + } + } + } + triggerEvents(near, ["touchstart", "tapstart", "vmousedown"], e3, { + x: now3[0], + y: now3[1] + }); + if (near == null) { + r2.data.bgActivePosistion = { + x: pos[0], + y: pos[1] + }; + r2.redrawHint("select", true); + r2.redraw(); + } + r2.touchData.singleTouchMoved = false; + r2.touchData.singleTouchStartTime = +/* @__PURE__ */ new Date(); + clearTimeout(r2.touchData.tapholdTimeout); + r2.touchData.tapholdTimeout = setTimeout(function() { + if (r2.touchData.singleTouchMoved === false && !r2.pinching && !r2.touchData.selecting) { + triggerEvents(r2.touchData.start, ["taphold"], e3, { + x: now3[0], + y: now3[1] + }); + } + }, r2.tapholdDuration); } - } - }, "checkout"); - __name(upsert, "upsert"); - __name(prettyPrintCommitHistory, "prettyPrintCommitHistory"); - prettyPrint = /* @__PURE__ */ __name(function() { - log.debug(state2.records.commits); - const node2 = getCommitsArray()[0]; - prettyPrintCommitHistory([node2]); - }, "prettyPrint"); - clear7 = /* @__PURE__ */ __name(function() { - state2.reset(); - clear(); - }, "clear"); - getBranchesAsObjArray = /* @__PURE__ */ __name(function() { - const branchesArray = [...state2.records.branchConfig.values()].map((branchConfig, i2) => { - if (branchConfig.order !== null && branchConfig.order !== void 0) { - return branchConfig; + if (e3.touches.length >= 1) { + var sPos = r2.touchData.startPosition = [null, null, null, null, null, null]; + for (var i2 = 0; i2 < now3.length; i2++) { + sPos[i2] = earlier[i2] = now3[i2]; + } + var touch0 = e3.touches[0]; + r2.touchData.startGPosition = [touch0.clientX, touch0.clientY]; } - return { - ...branchConfig, - order: parseFloat(`0.${i2}`) - }; - }).sort((a2, b2) => (a2.order ?? 0) - (b2.order ?? 0)).map(({ name }) => ({ name })); - return branchesArray; - }, "getBranchesAsObjArray"); - getBranches = /* @__PURE__ */ __name(function() { - return state2.records.branches; - }, "getBranches"); - getCommits = /* @__PURE__ */ __name(function() { - return state2.records.commits; - }, "getCommits"); - getCommitsArray = /* @__PURE__ */ __name(function() { - const commitArr = [...state2.records.commits.values()]; - commitArr.forEach(function(o2) { - log.debug(o2.id); - }); - commitArr.sort((a2, b2) => a2.seq - b2.seq); - return commitArr; - }, "getCommitsArray"); - getCurrentBranch = /* @__PURE__ */ __name(function() { - return state2.records.currBranch; - }, "getCurrentBranch"); - getDirection = /* @__PURE__ */ __name(function() { - return state2.records.direction; - }, "getDirection"); - getHead = /* @__PURE__ */ __name(function() { - return state2.records.head; - }, "getHead"); - db = { - commitType, - getConfig: getConfig3, - setDirection, - setOptions: setOptions2, - getOptions, - commit, - branch, - merge: merge3, - cherryPick, - checkout, - //reset, - prettyPrint, - clear: clear7, - getBranchesAsObjArray, - getBranches, - getCommits, - getCommitsArray, - getCurrentBranch, - getDirection, - getHead, - setAccTitle, - getAccTitle, - getAccDescription, - setAccDescription, - setDiagramTitle, - getDiagramTitle - }; - } - }); - - // src/diagrams/git/gitGraphParser.ts - var populate, parseStatement, parseCommit, parseBranch, parseMerge, parseCheckout, parseCherryPicking, parser5; - var init_gitGraphParser = __esm({ - "src/diagrams/git/gitGraphParser.ts"() { - "use strict"; - init_mermaid_parser_core(); - init_logger(); - init_populateCommonDb(); - init_gitGraphAst(); - init_gitGraphTypes(); - populate = /* @__PURE__ */ __name((ast, db10) => { - populateCommonDb(ast, db10); - if (ast.dir) { - db10.setDirection(ast.dir); - } - for (const statement of ast.statements) { - parseStatement(statement, db10); - } - }, "populate"); - parseStatement = /* @__PURE__ */ __name((statement, db10) => { - const parsers2 = { - Commit: /* @__PURE__ */ __name((stmt) => db10.commit(parseCommit(stmt)), "Commit"), - Branch: /* @__PURE__ */ __name((stmt) => db10.branch(parseBranch(stmt)), "Branch"), - Merge: /* @__PURE__ */ __name((stmt) => db10.merge(parseMerge(stmt)), "Merge"), - Checkout: /* @__PURE__ */ __name((stmt) => db10.checkout(parseCheckout(stmt)), "Checkout"), - CherryPicking: /* @__PURE__ */ __name((stmt) => db10.cherryPick(parseCherryPicking(stmt)), "CherryPicking") - }; - const parser24 = parsers2[statement.$type]; - if (parser24) { - parser24(statement); - } else { - log.error(`Unknown statement type: ${statement.$type}`); - } - }, "parseStatement"); - parseCommit = /* @__PURE__ */ __name((commit2) => { - const commitDB = { - id: commit2.id, - msg: commit2.message ?? "", - type: commit2.type !== void 0 ? commitType[commit2.type] : commitType.NORMAL, - tags: commit2.tags ?? void 0 - }; - return commitDB; - }, "parseCommit"); - parseBranch = /* @__PURE__ */ __name((branch2) => { - const branchDB = { - name: branch2.name, - order: branch2.order ?? 0 - }; - return branchDB; - }, "parseBranch"); - parseMerge = /* @__PURE__ */ __name((merge5) => { - const mergeDB = { - branch: merge5.branch, - id: merge5.id ?? "", - type: merge5.type !== void 0 ? commitType[merge5.type] : void 0, - tags: merge5.tags ?? void 0 - }; - return mergeDB; - }, "parseMerge"); - parseCheckout = /* @__PURE__ */ __name((checkout2) => { - const branch2 = checkout2.branch; - return branch2; - }, "parseCheckout"); - parseCherryPicking = /* @__PURE__ */ __name((cherryPicking) => { - const cherryPickDB = { - id: cherryPicking.id, - targetId: "", - tags: cherryPicking.tags?.length === 0 ? void 0 : cherryPicking.tags, - parent: cherryPicking.parent - }; - return cherryPickDB; - }, "parseCherryPicking"); - parser5 = { - parse: /* @__PURE__ */ __name(async (input) => { - const ast = await parse("gitGraph", input); - log.debug(ast); - populate(ast, db); - }, "parse") - }; - if (void 0) { - const { it, expect, describe } = void 0; - const mockDB = { - commitType, - setDirection: vi.fn(), - commit: vi.fn(), - branch: vi.fn(), - merge: vi.fn(), - cherryPick: vi.fn(), - checkout: vi.fn() - }; - describe("GitGraph Parser", () => { - it("should parse a commit statement", () => { - const commit2 = { - $type: "Commit", - id: "1", - message: "test", - tags: ["tag1", "tag2"], - type: "NORMAL" - }; - parseStatement(commit2, mockDB); - expect(mockDB.commit).toHaveBeenCalledWith({ - id: "1", - msg: "test", - tags: ["tag1", "tag2"], - type: 0 - }); - }); - it("should parse a branch statement", () => { - const branch2 = { - $type: "Branch", - name: "newBranch", - order: 1 - }; - parseStatement(branch2, mockDB); - expect(mockDB.branch).toHaveBeenCalledWith({ name: "newBranch", order: 1 }); - }); - it("should parse a checkout statement", () => { - const checkout2 = { - $type: "Checkout", - branch: "newBranch" - }; - parseStatement(checkout2, mockDB); - expect(mockDB.checkout).toHaveBeenCalledWith("newBranch"); - }); - it("should parse a merge statement", () => { - const merge5 = { - $type: "Merge", - branch: "newBranch", - id: "1", - tags: ["tag1", "tag2"], - type: "NORMAL" - }; - parseStatement(merge5, mockDB); - expect(mockDB.merge).toHaveBeenCalledWith({ - branch: "newBranch", - id: "1", - tags: ["tag1", "tag2"], - type: 0 - }); - }); - it("should parse a cherry picking statement", () => { - const cherryPick2 = { - $type: "CherryPicking", - id: "1", - tags: ["tag1", "tag2"], - parent: "2" - }; - parseStatement(cherryPick2, mockDB); - expect(mockDB.cherryPick).toHaveBeenCalledWith({ - id: "1", - targetId: "", - parent: "2", - tags: ["tag1", "tag2"] - }); - }); - it("should parse a langium generated gitGraph ast", () => { - const dummy = { - $type: "GitGraph", - statements: [] - }; - const gitGraphAst = { - $type: "GitGraph", - statements: [ - { - $container: dummy, - $type: "Commit", - id: "1", - message: "test", - tags: ["tag1", "tag2"], - type: "NORMAL" - }, - { - $container: dummy, - $type: "Branch", - name: "newBranch", - order: 1 - }, - { - $container: dummy, - $type: "Merge", - branch: "newBranch", - id: "1", - tags: ["tag1", "tag2"], - type: "NORMAL" - }, - { - $container: dummy, - $type: "Checkout", - branch: "newBranch" - }, - { - $container: dummy, - $type: "CherryPicking", - id: "1", - tags: ["tag1", "tag2"], - parent: "2" - } - ] - }; - populate(gitGraphAst, mockDB); - expect(mockDB.commit).toHaveBeenCalledWith({ - id: "1", - msg: "test", - tags: ["tag1", "tag2"], - type: 0 - }); - expect(mockDB.branch).toHaveBeenCalledWith({ name: "newBranch", order: 1 }); - expect(mockDB.merge).toHaveBeenCalledWith({ - branch: "newBranch", - id: "1", - tags: ["tag1", "tag2"], - type: 0 - }); - expect(mockDB.checkout).toHaveBeenCalledWith("newBranch"); - }); - }); - } - } - }); - - // src/diagrams/git/gitGraphRenderer.ts - var DEFAULT_CONFIG, DEFAULT_GITGRAPH_CONFIG2, LAYOUT_OFFSET, COMMIT_STEP, PX, PY, THEME_COLOR_LIMIT, branchPos, commitPos, defaultPos, allCommitsDict, lanes, maxPos, dir, clear8, drawText2, findClosestParent, findClosestParentBT, setParallelBTPos, findClosestParentPos, calculateCommitPosition, setCommitPosition, setRootPosition, drawCommitBullet, drawCommitLabel, drawCommitTags, getCommitClassType, calculatePosition, getCommitPosition, drawCommits, shouldRerouteArrow, findLane, drawArrow, drawArrows, drawBranches, setBranchPosition, draw4, gitGraphRenderer_default; - var init_gitGraphRenderer = __esm({ - "src/diagrams/git/gitGraphRenderer.ts"() { - "use strict"; - init_src32(); - init_diagramAPI(); - init_logger(); - init_utils2(); - init_gitGraphTypes(); - DEFAULT_CONFIG = getConfig2(); - DEFAULT_GITGRAPH_CONFIG2 = DEFAULT_CONFIG?.gitGraph; - LAYOUT_OFFSET = 10; - COMMIT_STEP = 40; - PX = 4; - PY = 2; - THEME_COLOR_LIMIT = 8; - branchPos = /* @__PURE__ */ new Map(); - commitPos = /* @__PURE__ */ new Map(); - defaultPos = 30; - allCommitsDict = /* @__PURE__ */ new Map(); - lanes = []; - maxPos = 0; - dir = "LR"; - clear8 = /* @__PURE__ */ __name(() => { - branchPos.clear(); - commitPos.clear(); - allCommitsDict.clear(); - maxPos = 0; - lanes = []; - dir = "LR"; - }, "clear"); - drawText2 = /* @__PURE__ */ __name((txt) => { - const svgLabel = document.createElementNS("http://www.w3.org/2000/svg", "text"); - const rows = typeof txt === "string" ? txt.split(/\\n|\n|/gi) : txt; - rows.forEach((row) => { - const tspan = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - tspan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"); - tspan.setAttribute("dy", "1em"); - tspan.setAttribute("x", "0"); - tspan.setAttribute("class", "row"); - tspan.textContent = row.trim(); - svgLabel.appendChild(tspan); - }); - return svgLabel; - }, "drawText"); - findClosestParent = /* @__PURE__ */ __name((parents3) => { - let closestParent; - let comparisonFunc; - let targetPosition; - if (dir === "BT") { - comparisonFunc = /* @__PURE__ */ __name((a2, b2) => a2 <= b2, "comparisonFunc"); - targetPosition = Infinity; - } else { - comparisonFunc = /* @__PURE__ */ __name((a2, b2) => a2 >= b2, "comparisonFunc"); - targetPosition = 0; - } - parents3.forEach((parent4) => { - const parentPosition = dir === "TB" || dir == "BT" ? commitPos.get(parent4)?.y : commitPos.get(parent4)?.x; - if (parentPosition !== void 0 && comparisonFunc(parentPosition, targetPosition)) { - closestParent = parent4; - targetPosition = parentPosition; + }, "touchstartHandler"), false); + var touchmoveHandler; + r2.registerBinding(containerWindow, "touchmove", touchmoveHandler = /* @__PURE__ */ __name(function touchmoveHandler2(e3) { + var capture = r2.touchData.capture; + if (!capture && !eventInContainer(e3)) { + return; } - }); - return closestParent; - }, "findClosestParent"); - findClosestParentBT = /* @__PURE__ */ __name((parents3) => { - let closestParent = ""; - let maxPosition = Infinity; - parents3.forEach((parent4) => { - const parentPosition = commitPos.get(parent4).y; - if (parentPosition <= maxPosition) { - closestParent = parent4; - maxPosition = parentPosition; + var select = r2.selection; + var cy = r2.cy; + var now3 = r2.touchData.now; + var earlier = r2.touchData.earlier; + var zoom2 = cy.zoom(); + if (e3.touches[0]) { + var pos = r2.projectIntoViewport(e3.touches[0].clientX, e3.touches[0].clientY); + now3[0] = pos[0]; + now3[1] = pos[1]; } - }); - return closestParent || void 0; - }, "findClosestParentBT"); - setParallelBTPos = /* @__PURE__ */ __name((sortedKeys, commits, defaultPos2) => { - let curPos = defaultPos2; - let maxPosition = defaultPos2; - const roots = []; - sortedKeys.forEach((key) => { - const commit2 = commits.get(key); - if (!commit2) { - throw new Error(`Commit not found for key ${key}`); + if (e3.touches[1]) { + var pos = r2.projectIntoViewport(e3.touches[1].clientX, e3.touches[1].clientY); + now3[2] = pos[0]; + now3[3] = pos[1]; } - if (commit2.parents.length) { - curPos = calculateCommitPosition(commit2); - maxPosition = Math.max(curPos, maxPosition); - } else { - roots.push(commit2); + if (e3.touches[2]) { + var pos = r2.projectIntoViewport(e3.touches[2].clientX, e3.touches[2].clientY); + now3[4] = pos[0]; + now3[5] = pos[1]; } - setCommitPosition(commit2, curPos); - }); - curPos = maxPosition; - roots.forEach((commit2) => { - setRootPosition(commit2, curPos, defaultPos2); - }); - sortedKeys.forEach((key) => { - const commit2 = commits.get(key); - if (commit2?.parents.length) { - const closestParent = findClosestParentBT(commit2.parents); - curPos = commitPos.get(closestParent).y - COMMIT_STEP; - if (curPos <= maxPosition) { - maxPosition = curPos; + var makeEvent = /* @__PURE__ */ __name(function makeEvent2(type3) { + return { + originalEvent: e3, + type: type3, + position: { + x: now3[0], + y: now3[1] + } + }; + }, "makeEvent"); + var startGPos = r2.touchData.startGPosition; + var isOverThresholdDrag; + if (capture && e3.touches[0] && startGPos) { + var disp = []; + for (var j3 = 0; j3 < now3.length; j3++) { + disp[j3] = now3[j3] - earlier[j3]; } - const x5 = branchPos.get(commit2.branch).pos; - const y5 = curPos - LAYOUT_OFFSET; - commitPos.set(commit2.id, { x: x5, y: y5 }); - } - }); - }, "setParallelBTPos"); - findClosestParentPos = /* @__PURE__ */ __name((commit2) => { - const closestParent = findClosestParent(commit2.parents.filter((p3) => p3 !== null)); - if (!closestParent) { - throw new Error(`Closest parent not found for commit ${commit2.id}`); - } - const closestParentPos = commitPos.get(closestParent)?.y; - if (closestParentPos === void 0) { - throw new Error(`Closest parent position not found for commit ${commit2.id}`); - } - return closestParentPos; - }, "findClosestParentPos"); - calculateCommitPosition = /* @__PURE__ */ __name((commit2) => { - const closestParentPos = findClosestParentPos(commit2); - return closestParentPos + COMMIT_STEP; - }, "calculateCommitPosition"); - setCommitPosition = /* @__PURE__ */ __name((commit2, curPos) => { - const branch2 = branchPos.get(commit2.branch); - if (!branch2) { - throw new Error(`Branch not found for commit ${commit2.id}`); - } - const x5 = branch2.pos; - const y5 = curPos + LAYOUT_OFFSET; - commitPos.set(commit2.id, { x: x5, y: y5 }); - return { x: x5, y: y5 }; - }, "setCommitPosition"); - setRootPosition = /* @__PURE__ */ __name((commit2, curPos, defaultPos2) => { - const branch2 = branchPos.get(commit2.branch); - if (!branch2) { - throw new Error(`Branch not found for commit ${commit2.id}`); - } - const y5 = curPos + defaultPos2; - const x5 = branch2.pos; - commitPos.set(commit2.id, { x: x5, y: y5 }); - }, "setRootPosition"); - drawCommitBullet = /* @__PURE__ */ __name((gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType) => { - if (commitSymbolType === commitType.HIGHLIGHT) { - gBullets.append("rect").attr("x", commitPosition.x - 10).attr("y", commitPosition.y - 10).attr("width", 20).attr("height", 20).attr( - "class", - `commit ${commit2.id} commit-highlight${branchIndex % THEME_COLOR_LIMIT} ${typeClass}-outer` - ); - gBullets.append("rect").attr("x", commitPosition.x - 6).attr("y", commitPosition.y - 6).attr("width", 12).attr("height", 12).attr( - "class", - `commit ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT} ${typeClass}-inner` - ); - } else if (commitSymbolType === commitType.CHERRY_PICK) { - gBullets.append("circle").attr("cx", commitPosition.x).attr("cy", commitPosition.y).attr("r", 10).attr("class", `commit ${commit2.id} ${typeClass}`); - gBullets.append("circle").attr("cx", commitPosition.x - 3).attr("cy", commitPosition.y + 2).attr("r", 2.75).attr("fill", "#fff").attr("class", `commit ${commit2.id} ${typeClass}`); - gBullets.append("circle").attr("cx", commitPosition.x + 3).attr("cy", commitPosition.y + 2).attr("r", 2.75).attr("fill", "#fff").attr("class", `commit ${commit2.id} ${typeClass}`); - gBullets.append("line").attr("x1", commitPosition.x + 3).attr("y1", commitPosition.y + 1).attr("x2", commitPosition.x).attr("y2", commitPosition.y - 5).attr("stroke", "#fff").attr("class", `commit ${commit2.id} ${typeClass}`); - gBullets.append("line").attr("x1", commitPosition.x - 3).attr("y1", commitPosition.y + 1).attr("x2", commitPosition.x).attr("y2", commitPosition.y - 5).attr("stroke", "#fff").attr("class", `commit ${commit2.id} ${typeClass}`); - } else { - const circle6 = gBullets.append("circle"); - circle6.attr("cx", commitPosition.x); - circle6.attr("cy", commitPosition.y); - circle6.attr("r", commit2.type === commitType.MERGE ? 9 : 10); - circle6.attr("class", `commit ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}`); - if (commitSymbolType === commitType.MERGE) { - const circle22 = gBullets.append("circle"); - circle22.attr("cx", commitPosition.x); - circle22.attr("cy", commitPosition.y); - circle22.attr("r", 6); - circle22.attr( - "class", - `commit ${typeClass} ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}` - ); - } - if (commitSymbolType === commitType.REVERSE) { - const cross3 = gBullets.append("path"); - cross3.attr( - "d", - `M ${commitPosition.x - 5},${commitPosition.y - 5}L${commitPosition.x + 5},${commitPosition.y + 5}M${commitPosition.x - 5},${commitPosition.y + 5}L${commitPosition.x + 5},${commitPosition.y - 5}` - ).attr("class", `commit ${typeClass} ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}`); + var dx = e3.touches[0].clientX - startGPos[0]; + var dx2 = dx * dx; + var dy = e3.touches[0].clientY - startGPos[1]; + var dy2 = dy * dy; + var dist22 = dx2 + dy2; + isOverThresholdDrag = dist22 >= r2.touchTapThreshold2; } - } - }, "drawCommitBullet"); - drawCommitLabel = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos) => { - if (commit2.type !== commitType.CHERRY_PICK && (commit2.customId && commit2.type === commitType.MERGE || commit2.type !== commitType.MERGE) && DEFAULT_GITGRAPH_CONFIG2?.showCommitLabel) { - const wrapper = gLabels.append("g"); - const labelBkg = wrapper.insert("rect").attr("class", "commit-label-bkg"); - const text4 = wrapper.append("text").attr("x", pos).attr("y", commitPosition.y + 25).attr("class", "commit-label").text(commit2.id); - const bbox = text4.node()?.getBBox(); - if (bbox) { - labelBkg.attr("x", commitPosition.posWithOffset - bbox.width / 2 - PY).attr("y", commitPosition.y + 13.5).attr("width", bbox.width + 2 * PY).attr("height", bbox.height + 2 * PY); - if (dir === "TB" || dir === "BT") { - labelBkg.attr("x", commitPosition.x - (bbox.width + 4 * PX + 5)).attr("y", commitPosition.y - 12); - text4.attr("x", commitPosition.x - (bbox.width + 4 * PX)).attr("y", commitPosition.y + bbox.height - 12); - } else { - text4.attr("x", commitPosition.posWithOffset - bbox.width / 2); - } - if (DEFAULT_GITGRAPH_CONFIG2.rotateCommitLabel) { - if (dir === "TB" || dir === "BT") { - text4.attr( - "transform", - "rotate(-45, " + commitPosition.x + ", " + commitPosition.y + ")" - ); - labelBkg.attr( - "transform", - "rotate(-45, " + commitPosition.x + ", " + commitPosition.y + ")" - ); + if (capture && r2.touchData.cxt) { + e3.preventDefault(); + var f1x2 = e3.touches[0].clientX - offsetLeft, f1y2 = e3.touches[0].clientY - offsetTop; + var f2x2 = e3.touches[1].clientX - offsetLeft, f2y2 = e3.touches[1].clientY - offsetTop; + var distance2Sq = distanceSq(f1x2, f1y2, f2x2, f2y2); + var factorSq = distance2Sq / distance1Sq; + var distThreshold = 150; + var distThresholdSq = distThreshold * distThreshold; + var factorThreshold = 1.5; + var factorThresholdSq = factorThreshold * factorThreshold; + if (factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq) { + r2.touchData.cxt = false; + r2.data.bgActivePosistion = void 0; + r2.redrawHint("select", true); + var cxtEvt = makeEvent("cxttapend"); + if (r2.touchData.start) { + r2.touchData.start.unactivate().emit(cxtEvt); + r2.touchData.start = null; } else { - const r_x = -7.5 - (bbox.width + 10) / 25 * 9.5; - const r_y = 10 + bbox.width / 25 * 8.5; - wrapper.attr( - "transform", - "translate(" + r_x + ", " + r_y + ") rotate(-45, " + pos + ", " + commitPosition.y + ")" - ); + cy.emit(cxtEvt); } } } - } - }, "drawCommitLabel"); - drawCommitTags = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos) => { - if (commit2.tags.length > 0) { - let yOffset = 0; - let maxTagBboxWidth = 0; - let maxTagBboxHeight = 0; - const tagElements = []; - for (const tagValue of commit2.tags.reverse()) { - const rect3 = gLabels.insert("polygon"); - const hole = gLabels.append("circle"); - const tag2 = gLabels.append("text").attr("y", commitPosition.y - 16 - yOffset).attr("class", "tag-label").text(tagValue); - const tagBbox = tag2.node()?.getBBox(); - if (!tagBbox) { - throw new Error("Tag bbox not found"); - } - maxTagBboxWidth = Math.max(maxTagBboxWidth, tagBbox.width); - maxTagBboxHeight = Math.max(maxTagBboxHeight, tagBbox.height); - tag2.attr("x", commitPosition.posWithOffset - tagBbox.width / 2); - tagElements.push({ - tag: tag2, - hole, - rect: rect3, - yOffset - }); - yOffset += 20; - } - for (const { tag: tag2, hole, rect: rect3, yOffset: yOffset2 } of tagElements) { - const h2 = maxTagBboxHeight / 2; - const ly = commitPosition.y - 19.2 - yOffset2; - rect3.attr("class", "tag-label-bkg").attr( - "points", - ` - ${pos - maxTagBboxWidth / 2 - PX / 2},${ly + PY} - ${pos - maxTagBboxWidth / 2 - PX / 2},${ly - PY} - ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly - h2 - PY} - ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly - h2 - PY} - ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly + h2 + PY} - ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly + h2 + PY}` - ); - hole.attr("cy", ly).attr("cx", pos - maxTagBboxWidth / 2 + PX / 2).attr("r", 1.5).attr("class", "tag-hole"); - if (dir === "TB" || dir === "BT") { - const yOrigin = pos + yOffset2; - rect3.attr("class", "tag-label-bkg").attr( - "points", - ` - ${commitPosition.x},${yOrigin + 2} - ${commitPosition.x},${yOrigin - 2} - ${commitPosition.x + LAYOUT_OFFSET},${yOrigin - h2 - 2} - ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin - h2 - 2} - ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin + h2 + 2} - ${commitPosition.x + LAYOUT_OFFSET},${yOrigin + h2 + 2}` - ).attr("transform", "translate(12,12) rotate(45, " + commitPosition.x + "," + pos + ")"); - hole.attr("cx", commitPosition.x + PX / 2).attr("cy", yOrigin).attr("transform", "translate(12,12) rotate(45, " + commitPosition.x + "," + pos + ")"); - tag2.attr("x", commitPosition.x + 5).attr("y", yOrigin + 3).attr("transform", "translate(14,14) rotate(45, " + commitPosition.x + "," + pos + ")"); - } - } - } - }, "drawCommitTags"); - getCommitClassType = /* @__PURE__ */ __name((commit2) => { - const commitSymbolType = commit2.customType ?? commit2.type; - switch (commitSymbolType) { - case commitType.NORMAL: - return "commit-normal"; - case commitType.REVERSE: - return "commit-reverse"; - case commitType.HIGHLIGHT: - return "commit-highlight"; - case commitType.MERGE: - return "commit-merge"; - case commitType.CHERRY_PICK: - return "commit-cherry-pick"; - default: - return "commit-normal"; - } - }, "getCommitClassType"); - calculatePosition = /* @__PURE__ */ __name((commit2, dir2, pos, commitPos2) => { - const defaultCommitPosition = { x: 0, y: 0 }; - if (commit2.parents.length > 0) { - const closestParent = findClosestParent(commit2.parents); - if (closestParent) { - const parentPosition = commitPos2.get(closestParent) ?? defaultCommitPosition; - if (dir2 === "TB") { - return parentPosition.y + COMMIT_STEP; - } else if (dir2 === "BT") { - const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition; - return currentPosition.y - COMMIT_STEP; + if (capture && r2.touchData.cxt) { + var cxtEvt = makeEvent("cxtdrag"); + r2.data.bgActivePosistion = void 0; + r2.redrawHint("select", true); + if (r2.touchData.start) { + r2.touchData.start.emit(cxtEvt); } else { - return parentPosition.x + COMMIT_STEP; + cy.emit(cxtEvt); } - } - } else { - if (dir2 === "TB") { - return defaultPos; - } else if (dir2 === "BT") { - const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition; - return currentPosition.y - COMMIT_STEP; - } else { - return 0; - } - } - return 0; - }, "calculatePosition"); - getCommitPosition = /* @__PURE__ */ __name((commit2, pos, isParallelCommits) => { - const posWithOffset = dir === "BT" && isParallelCommits ? pos : pos + LAYOUT_OFFSET; - const y5 = dir === "TB" || dir === "BT" ? posWithOffset : branchPos.get(commit2.branch)?.pos; - const x5 = dir === "TB" || dir === "BT" ? branchPos.get(commit2.branch)?.pos : posWithOffset; - if (x5 === void 0 || y5 === void 0) { - throw new Error(`Position were undefined for commit ${commit2.id}`); - } - return { x: x5, y: y5, posWithOffset }; - }, "getCommitPosition"); - drawCommits = /* @__PURE__ */ __name((svg2, commits, modifyGraph) => { - if (!DEFAULT_GITGRAPH_CONFIG2) { - throw new Error("GitGraph config not found"); - } - const gBullets = svg2.append("g").attr("class", "commit-bullets"); - const gLabels = svg2.append("g").attr("class", "commit-labels"); - let pos = dir === "TB" || dir === "BT" ? defaultPos : 0; - const keys3 = [...commits.keys()]; - const isParallelCommits = DEFAULT_GITGRAPH_CONFIG2?.parallelCommits ?? false; - const sortKeys = /* @__PURE__ */ __name((a2, b2) => { - const seqA = commits.get(a2)?.seq; - const seqB = commits.get(b2)?.seq; - return seqA !== void 0 && seqB !== void 0 ? seqA - seqB : 0; - }, "sortKeys"); - let sortedKeys = keys3.sort(sortKeys); - if (dir === "BT") { - if (isParallelCommits) { - setParallelBTPos(sortedKeys, commits, pos); - } - sortedKeys = sortedKeys.reverse(); - } - sortedKeys.forEach((key) => { - const commit2 = commits.get(key); - if (!commit2) { - throw new Error(`Commit not found for key ${key}`); - } - if (isParallelCommits) { - pos = calculatePosition(commit2, dir, pos, commitPos); - } - const commitPosition = getCommitPosition(commit2, pos, isParallelCommits); - if (modifyGraph) { - const typeClass = getCommitClassType(commit2); - const commitSymbolType = commit2.customType ?? commit2.type; - const branchIndex = branchPos.get(commit2.branch)?.index ?? 0; - drawCommitBullet(gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType); - drawCommitLabel(gLabels, commit2, commitPosition, pos); - drawCommitTags(gLabels, commit2, commitPosition, pos); - } - if (dir === "TB" || dir === "BT") { - commitPos.set(commit2.id, { x: commitPosition.x, y: commitPosition.posWithOffset }); - } else { - commitPos.set(commit2.id, { x: commitPosition.posWithOffset, y: commitPosition.y }); - } - pos = dir === "BT" && isParallelCommits ? pos + COMMIT_STEP : pos + COMMIT_STEP + LAYOUT_OFFSET; - if (pos > maxPos) { - maxPos = pos; - } - }); - }, "drawCommits"); - shouldRerouteArrow = /* @__PURE__ */ __name((commitA, commitB, p1, p22, allCommits) => { - const commitBIsFurthest = dir === "TB" || dir === "BT" ? p1.x < p22.x : p1.y < p22.y; - const branchToGetCurve = commitBIsFurthest ? commitB.branch : commitA.branch; - const isOnBranchToGetCurve = /* @__PURE__ */ __name((x5) => x5.branch === branchToGetCurve, "isOnBranchToGetCurve"); - const isBetweenCommits = /* @__PURE__ */ __name((x5) => x5.seq > commitA.seq && x5.seq < commitB.seq, "isBetweenCommits"); - return [...allCommits.values()].some((commitX) => { - return isBetweenCommits(commitX) && isOnBranchToGetCurve(commitX); - }); - }, "shouldRerouteArrow"); - findLane = /* @__PURE__ */ __name((y1, y22, depth = 0) => { - const candidate = y1 + Math.abs(y1 - y22) / 2; - if (depth > 5) { - return candidate; - } - const ok = lanes.every((lane) => Math.abs(lane - candidate) >= 10); - if (ok) { - lanes.push(candidate); - return candidate; - } - const diff2 = Math.abs(y1 - y22); - return findLane(y1, y22 - diff2 / 5, depth + 1); - }, "findLane"); - drawArrow = /* @__PURE__ */ __name((svg2, commitA, commitB, allCommits) => { - const p1 = commitPos.get(commitA.id); - const p22 = commitPos.get(commitB.id); - if (p1 === void 0 || p22 === void 0) { - throw new Error(`Commit positions not found for commits ${commitA.id} and ${commitB.id}`); - } - const arrowNeedsRerouting = shouldRerouteArrow(commitA, commitB, p1, p22, allCommits); - let arc = ""; - let arc2 = ""; - let radius2 = 0; - let offset = 0; - let colorClassNum = branchPos.get(commitB.branch)?.index; - if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { - colorClassNum = branchPos.get(commitA.branch)?.index; - } - let lineDef; - if (arrowNeedsRerouting) { - arc = "A 10 10, 0, 0, 0,"; - arc2 = "A 10 10, 0, 0, 1,"; - radius2 = 10; - offset = 10; - const lineY = p1.y < p22.y ? findLane(p1.y, p22.y) : findLane(p22.y, p1.y); - const lineX = p1.x < p22.x ? findLane(p1.x, p22.x) : findLane(p22.x, p1.x); - if (dir === "TB") { - if (p1.x < p22.x) { - lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius2} ${p1.y} ${arc2} ${lineX} ${p1.y + offset} L ${lineX} ${p22.y - radius2} ${arc} ${lineX + offset} ${p22.y} L ${p22.x} ${p22.y}`; - } else { - colorClassNum = branchPos.get(commitA.branch)?.index; - lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius2} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p22.y - radius2} ${arc2} ${lineX - offset} ${p22.y} L ${p22.x} ${p22.y}`; + if (r2.touchData.start) { + r2.touchData.start._private.grabbed = false; } - } else if (dir === "BT") { - if (p1.x < p22.x) { - lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius2} ${p1.y} ${arc} ${lineX} ${p1.y - offset} L ${lineX} ${p22.y + radius2} ${arc2} ${lineX + offset} ${p22.y} L ${p22.x} ${p22.y}`; - } else { - colorClassNum = branchPos.get(commitA.branch)?.index; - lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius2} ${p1.y} ${arc2} ${lineX} ${p1.y - offset} L ${lineX} ${p22.y + radius2} ${arc} ${lineX - offset} ${p22.y} L ${p22.x} ${p22.y}`; + r2.touchData.cxtDragged = true; + var near = r2.findNearestElement(now3[0], now3[1], true, true); + if (!r2.touchData.cxtOver || near !== r2.touchData.cxtOver) { + if (r2.touchData.cxtOver) { + r2.touchData.cxtOver.emit(makeEvent("cxtdragout")); + } + r2.touchData.cxtOver = near; + if (near) { + near.emit(makeEvent("cxtdragover")); + } } - } else { - if (p1.y < p22.y) { - lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius2} ${arc} ${p1.x + offset} ${lineY} L ${p22.x - radius2} ${lineY} ${arc2} ${p22.x} ${lineY + offset} L ${p22.x} ${p22.y}`; + } else if (capture && e3.touches[2] && cy.boxSelectionEnabled()) { + e3.preventDefault(); + r2.data.bgActivePosistion = void 0; + this.lastThreeTouch = +/* @__PURE__ */ new Date(); + if (!r2.touchData.selecting) { + cy.emit(makeEvent("boxstart")); + } + r2.touchData.selecting = true; + r2.touchData.didSelect = true; + select[4] = 1; + if (!select || select.length === 0 || select[0] === void 0) { + select[0] = (now3[0] + now3[2] + now3[4]) / 3; + select[1] = (now3[1] + now3[3] + now3[5]) / 3; + select[2] = (now3[0] + now3[2] + now3[4]) / 3 + 1; + select[3] = (now3[1] + now3[3] + now3[5]) / 3 + 1; } else { - colorClassNum = branchPos.get(commitA.branch)?.index; - lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius2} ${arc2} ${p1.x + offset} ${lineY} L ${p22.x - radius2} ${lineY} ${arc} ${p22.x} ${lineY - offset} L ${p22.x} ${p22.y}`; + select[2] = (now3[0] + now3[2] + now3[4]) / 3; + select[3] = (now3[1] + now3[3] + now3[5]) / 3; } - } - } else { - arc = "A 20 20, 0, 0, 0,"; - arc2 = "A 20 20, 0, 0, 1,"; - radius2 = 20; - offset = 20; - if (dir === "TB") { - if (p1.x < p22.x) { - if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { - lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y - radius2} ${arc} ${p1.x + offset} ${p22.y} L ${p22.x} ${p22.y}`; - } else { - lineDef = `M ${p1.x} ${p1.y} L ${p22.x - radius2} ${p1.y} ${arc2} ${p22.x} ${p1.y + offset} L ${p22.x} ${p22.y}`; + r2.redrawHint("select", true); + r2.redraw(); + } else if (capture && e3.touches[1] && !r2.touchData.didSelect && cy.zoomingEnabled() && cy.panningEnabled() && cy.userZoomingEnabled() && cy.userPanningEnabled()) { + e3.preventDefault(); + r2.data.bgActivePosistion = void 0; + r2.redrawHint("select", true); + var draggedEles = r2.dragData.touchDragEles; + if (draggedEles) { + r2.redrawHint("drag", true); + for (var i2 = 0; i2 < draggedEles.length; i2++) { + var de_p = draggedEles[i2]._private; + de_p.grabbed = false; + de_p.rscratch.inDragLayer = false; } } - if (p1.x > p22.x) { - arc = "A 20 20, 0, 0, 0,"; - arc2 = "A 20 20, 0, 0, 1,"; - radius2 = 20; - offset = 20; - if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { - lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y - radius2} ${arc2} ${p1.x - offset} ${p22.y} L ${p22.x} ${p22.y}`; - } else { - lineDef = `M ${p1.x} ${p1.y} L ${p22.x + radius2} ${p1.y} ${arc} ${p22.x} ${p1.y + offset} L ${p22.x} ${p22.y}`; + var _start = r2.touchData.start; + var f1x2 = e3.touches[0].clientX - offsetLeft, f1y2 = e3.touches[0].clientY - offsetTop; + var f2x2 = e3.touches[1].clientX - offsetLeft, f2y2 = e3.touches[1].clientY - offsetTop; + var distance22 = distance2(f1x2, f1y2, f2x2, f2y2); + var factor = distance22 / distance1; + if (twoFingersStartInside) { + var df1x = f1x2 - f1x1; + var df1y = f1y2 - f1y1; + var df2x = f2x2 - f2x1; + var df2y = f2y2 - f2y1; + var tx = (df1x + df2x) / 2; + var ty = (df1y + df2y) / 2; + var zoom1 = cy.zoom(); + var zoom22 = zoom1 * factor; + var pan1 = cy.pan(); + var ctrx = modelCenter1[0] * zoom1 + pan1.x; + var ctry = modelCenter1[1] * zoom1 + pan1.y; + var pan2 = { + x: -zoom22 / zoom1 * (ctrx - pan1.x - tx) + ctrx, + y: -zoom22 / zoom1 * (ctry - pan1.y - ty) + ctry + }; + if (_start && _start.active()) { + var draggedEles = r2.dragData.touchDragEles; + freeDraggedElements(draggedEles); + r2.redrawHint("drag", true); + r2.redrawHint("eles", true); + _start.unactivate().emit(makeEvent("freeon")); + draggedEles.emit(makeEvent("free")); + if (r2.dragData.didDrag) { + _start.emit(makeEvent("dragfreeon")); + draggedEles.emit(makeEvent("dragfree")); + } } + cy.viewport({ + zoom: zoom22, + pan: pan2, + cancelOnFailedZoom: true + }); + cy.emit(makeEvent("pinchzoom")); + distance1 = distance22; + f1x1 = f1x2; + f1y1 = f1y2; + f2x1 = f2x2; + f2y1 = f2y2; + r2.pinching = true; } - if (p1.x === p22.x) { - lineDef = `M ${p1.x} ${p1.y} L ${p22.x} ${p22.y}`; + if (e3.touches[0]) { + var pos = r2.projectIntoViewport(e3.touches[0].clientX, e3.touches[0].clientY); + now3[0] = pos[0]; + now3[1] = pos[1]; } - } else if (dir === "BT") { - if (p1.x < p22.x) { - if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { - lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y + radius2} ${arc2} ${p1.x + offset} ${p22.y} L ${p22.x} ${p22.y}`; - } else { - lineDef = `M ${p1.x} ${p1.y} L ${p22.x - radius2} ${p1.y} ${arc} ${p22.x} ${p1.y - offset} L ${p22.x} ${p22.y}`; - } + if (e3.touches[1]) { + var pos = r2.projectIntoViewport(e3.touches[1].clientX, e3.touches[1].clientY); + now3[2] = pos[0]; + now3[3] = pos[1]; } - if (p1.x > p22.x) { - arc = "A 20 20, 0, 0, 0,"; - arc2 = "A 20 20, 0, 0, 1,"; - radius2 = 20; - offset = 20; - if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { - lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y + radius2} ${arc} ${p1.x - offset} ${p22.y} L ${p22.x} ${p22.y}`; - } else { - lineDef = `M ${p1.x} ${p1.y} L ${p22.x - radius2} ${p1.y} ${arc} ${p22.x} ${p1.y - offset} L ${p22.x} ${p22.y}`; - } + if (e3.touches[2]) { + var pos = r2.projectIntoViewport(e3.touches[2].clientX, e3.touches[2].clientY); + now3[4] = pos[0]; + now3[5] = pos[1]; } - if (p1.x === p22.x) { - lineDef = `M ${p1.x} ${p1.y} L ${p22.x} ${p22.y}`; + } else if (e3.touches[0] && !r2.touchData.didSelect) { + var start3 = r2.touchData.start; + var last3 = r2.touchData.last; + var near; + if (!r2.hoverData.draggingEles && !r2.swipePanning) { + near = r2.findNearestElement(now3[0], now3[1], true, true); } - } else { - if (p1.y < p22.y) { - if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { - lineDef = `M ${p1.x} ${p1.y} L ${p22.x - radius2} ${p1.y} ${arc2} ${p22.x} ${p1.y + offset} L ${p22.x} ${p22.y}`; + if (capture && start3 != null) { + e3.preventDefault(); + } + if (capture && start3 != null && r2.nodeIsDraggable(start3)) { + if (isOverThresholdDrag) { + var draggedEles = r2.dragData.touchDragEles; + var justStartedDrag = !r2.dragData.didDrag; + if (justStartedDrag) { + addNodesToDrag(draggedEles, { + inDragLayer: true + }); + } + r2.dragData.didDrag = true; + var totalShift = { + x: 0, + y: 0 + }; + if (number$1(disp[0]) && number$1(disp[1])) { + totalShift.x += disp[0]; + totalShift.y += disp[1]; + if (justStartedDrag) { + r2.redrawHint("eles", true); + var dragDelta = r2.touchData.dragDelta; + if (dragDelta && number$1(dragDelta[0]) && number$1(dragDelta[1])) { + totalShift.x += dragDelta[0]; + totalShift.y += dragDelta[1]; + } + } + } + r2.hoverData.draggingEles = true; + draggedEles.silentShift(totalShift).emit(makeEvent("position")).emit(makeEvent("drag")); + r2.redrawHint("drag", true); + if (r2.touchData.startPosition[0] == earlier[0] && r2.touchData.startPosition[1] == earlier[1]) { + r2.redrawHint("eles", true); + } + r2.redraw(); } else { - lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y - radius2} ${arc} ${p1.x + offset} ${p22.y} L ${p22.x} ${p22.y}`; + var dragDelta = r2.touchData.dragDelta = r2.touchData.dragDelta || []; + if (dragDelta.length === 0) { + dragDelta.push(disp[0]); + dragDelta.push(disp[1]); + } else { + dragDelta[0] += disp[0]; + dragDelta[1] += disp[1]; + } } } - if (p1.y > p22.y) { - if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { - lineDef = `M ${p1.x} ${p1.y} L ${p22.x - radius2} ${p1.y} ${arc} ${p22.x} ${p1.y - offset} L ${p22.x} ${p22.y}`; - } else { - lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y + radius2} ${arc2} ${p1.x + offset} ${p22.y} L ${p22.x} ${p22.y}`; + { + triggerEvents(start3 || near, ["touchmove", "tapdrag", "vmousemove"], e3, { + x: now3[0], + y: now3[1] + }); + if ((!start3 || !start3.grabbed()) && near != last3) { + if (last3) { + last3.emit(makeEvent("tapdragout")); + } + if (near) { + near.emit(makeEvent("tapdragover")); + } } + r2.touchData.last = near; } - if (p1.y === p22.y) { - lineDef = `M ${p1.x} ${p1.y} L ${p22.x} ${p22.y}`; + if (capture) { + for (var i2 = 0; i2 < now3.length; i2++) { + if (now3[i2] && r2.touchData.startPosition[i2] && isOverThresholdDrag) { + r2.touchData.singleTouchMoved = true; + } + } + } + if (capture && (start3 == null || start3.pannable()) && cy.panningEnabled() && cy.userPanningEnabled()) { + var allowPassthrough = allowPanningPassthrough(start3, r2.touchData.starts); + if (allowPassthrough) { + e3.preventDefault(); + if (!r2.data.bgActivePosistion) { + r2.data.bgActivePosistion = array2point(r2.touchData.startPosition); + } + if (r2.swipePanning) { + cy.panBy({ + x: disp[0] * zoom2, + y: disp[1] * zoom2 + }); + cy.emit(makeEvent("dragpan")); + } else if (isOverThresholdDrag) { + r2.swipePanning = true; + cy.panBy({ + x: dx * zoom2, + y: dy * zoom2 + }); + cy.emit(makeEvent("dragpan")); + if (start3) { + start3.unactivate(); + r2.redrawHint("select", true); + r2.touchData.start = null; + } + } + } + var pos = r2.projectIntoViewport(e3.touches[0].clientX, e3.touches[0].clientY); + now3[0] = pos[0]; + now3[1] = pos[1]; } } - } - if (lineDef === void 0) { - throw new Error("Line definition not found"); - } - svg2.append("path").attr("d", lineDef).attr("class", "arrow arrow" + colorClassNum % THEME_COLOR_LIMIT); - }, "drawArrow"); - drawArrows = /* @__PURE__ */ __name((svg2, commits) => { - const gArrows = svg2.append("g").attr("class", "commit-arrows"); - [...commits.keys()].forEach((key) => { - const commit2 = commits.get(key); - if (commit2.parents && commit2.parents.length > 0) { - commit2.parents.forEach((parent4) => { - drawArrow(gArrows, commits.get(parent4), commit2, commits); - }); + for (var j3 = 0; j3 < now3.length; j3++) { + earlier[j3] = now3[j3]; } - }); - }, "drawArrows"); - drawBranches = /* @__PURE__ */ __name((svg2, branches) => { - const g2 = svg2.append("g"); - branches.forEach((branch2, index) => { - const adjustIndexForTheme = index % THEME_COLOR_LIMIT; - const pos = branchPos.get(branch2.name)?.pos; - if (pos === void 0) { - throw new Error(`Position not found for branch ${branch2.name}`); + if (capture && e3.touches.length > 0 && !r2.hoverData.draggingEles && !r2.swipePanning && r2.data.bgActivePosistion != null) { + r2.data.bgActivePosistion = void 0; + r2.redrawHint("select", true); + r2.redraw(); } - const line2 = g2.append("line"); - line2.attr("x1", 0); - line2.attr("y1", pos); - line2.attr("x2", maxPos); - line2.attr("y2", pos); - line2.attr("class", "branch branch" + adjustIndexForTheme); - if (dir === "TB") { - line2.attr("y1", defaultPos); - line2.attr("x1", pos); - line2.attr("y2", maxPos); - line2.attr("x2", pos); - } else if (dir === "BT") { - line2.attr("y1", maxPos); - line2.attr("x1", pos); - line2.attr("y2", defaultPos); - line2.attr("x2", pos); + }, "touchmoveHandler"), false); + var touchcancelHandler; + r2.registerBinding(containerWindow, "touchcancel", touchcancelHandler = /* @__PURE__ */ __name(function touchcancelHandler2(e3) { + var start3 = r2.touchData.start; + r2.touchData.capture = false; + if (start3) { + start3.unactivate(); } - lanes.push(pos); - const name = branch2.name; - const labelElement = drawText2(name); - const bkg = g2.insert("rect"); - const branchLabel = g2.insert("g").attr("class", "branchLabel"); - const label = branchLabel.insert("g").attr("class", "label branch-label" + adjustIndexForTheme); - label.node().appendChild(labelElement); - const bbox = labelElement.getBBox(); - bkg.attr("class", "branchLabelBkg label" + adjustIndexForTheme).attr("rx", 4).attr("ry", 4).attr("x", -bbox.width - 4 - (DEFAULT_GITGRAPH_CONFIG2?.rotateCommitLabel === true ? 30 : 0)).attr("y", -bbox.height / 2 + 8).attr("width", bbox.width + 18).attr("height", bbox.height + 4); - label.attr( - "transform", - "translate(" + (-bbox.width - 14 - (DEFAULT_GITGRAPH_CONFIG2?.rotateCommitLabel === true ? 30 : 0)) + ", " + (pos - bbox.height / 2 - 1) + ")" - ); - if (dir === "TB") { - bkg.attr("x", pos - bbox.width / 2 - 10).attr("y", 0); - label.attr("transform", "translate(" + (pos - bbox.width / 2 - 5) + ", 0)"); - } else if (dir === "BT") { - bkg.attr("x", pos - bbox.width / 2 - 10).attr("y", maxPos); - label.attr("transform", "translate(" + (pos - bbox.width / 2 - 5) + ", " + maxPos + ")"); + }, "touchcancelHandler")); + var touchendHandler, didDoubleTouch, touchTimeout, prevTouchTimeStamp; + r2.registerBinding(containerWindow, "touchend", touchendHandler = /* @__PURE__ */ __name(function touchendHandler2(e3) { + var start3 = r2.touchData.start; + var capture = r2.touchData.capture; + if (capture) { + if (e3.touches.length === 0) { + r2.touchData.capture = false; + } + e3.preventDefault(); } else { - bkg.attr("transform", "translate(-19, " + (pos - bbox.height / 2) + ")"); + return; } - }); - }, "drawBranches"); - setBranchPosition = /* @__PURE__ */ __name(function(name, pos, index, bbox, rotateCommitLabel) { - branchPos.set(name, { pos, index }); - pos += 50 + (rotateCommitLabel ? 40 : 0) + (dir === "TB" || dir === "BT" ? bbox.width / 2 : 0); - return pos; - }, "setBranchPosition"); - draw4 = /* @__PURE__ */ __name(function(txt, id29, ver, diagObj) { - clear8(); - log.debug("in gitgraph renderer", txt + "\n", "id:", id29, ver); - if (!DEFAULT_GITGRAPH_CONFIG2) { - throw new Error("GitGraph config not found"); - } - const rotateCommitLabel = DEFAULT_GITGRAPH_CONFIG2.rotateCommitLabel ?? false; - const db10 = diagObj.db; - allCommitsDict = db10.getCommits(); - const branches = db10.getBranchesAsObjArray(); - dir = db10.getDirection(); - const diagram26 = select_default2(`[id="${id29}"]`); - let pos = 0; - branches.forEach((branch2, index) => { - const labelElement = drawText2(branch2.name); - const g2 = diagram26.append("g"); - const branchLabel = g2.insert("g").attr("class", "branchLabel"); - const label = branchLabel.insert("g").attr("class", "label branch-label"); - label.node()?.appendChild(labelElement); - const bbox = labelElement.getBBox(); - pos = setBranchPosition(branch2.name, pos, index, bbox, rotateCommitLabel); - label.remove(); - branchLabel.remove(); - g2.remove(); - }); - drawCommits(diagram26, allCommitsDict, false); - if (DEFAULT_GITGRAPH_CONFIG2.showBranches) { - drawBranches(diagram26, branches); - } - drawArrows(diagram26, allCommitsDict); - drawCommits(diagram26, allCommitsDict, true); - utils_default2.insertTitle( - diagram26, - "gitTitleText", - DEFAULT_GITGRAPH_CONFIG2.titleTopMargin ?? 0, - db10.getDiagramTitle() - ); - setupGraphViewbox2( - void 0, - diagram26, - DEFAULT_GITGRAPH_CONFIG2.diagramPadding, - DEFAULT_GITGRAPH_CONFIG2.useMaxWidth - ); - }, "draw"); - gitGraphRenderer_default = { - draw: draw4 - }; - if (void 0) { - const { it, expect, describe } = void 0; - describe("drawText", () => { - it("should drawText", () => { - const svgLabel = drawText2("main"); - expect(svgLabel).toBeDefined(); - expect(svgLabel.children[0].innerHTML).toBe("main"); - }); - }); - describe("branchPosition", () => { - const bbox = { - x: 0, - y: 0, - width: 10, - height: 10, - top: 0, - right: 0, - bottom: 0, - left: 0, - toJSON: /* @__PURE__ */ __name(() => "", "toJSON") - }; - it("should setBranchPositions LR with two branches", () => { - dir = "LR"; - const pos = setBranchPosition("main", 0, 0, bbox, true); - expect(pos).toBe(90); - expect(branchPos.get("main")).toEqual({ pos: 0, index: 0 }); - const posNext = setBranchPosition("develop", pos, 1, bbox, true); - expect(posNext).toBe(180); - expect(branchPos.get("develop")).toEqual({ pos, index: 1 }); - }); - it("should setBranchPositions TB with two branches", () => { - dir = "TB"; - bbox.width = 34.9921875; - const pos = setBranchPosition("main", 0, 0, bbox, true); - expect(pos).toBe(107.49609375); - expect(branchPos.get("main")).toEqual({ pos: 0, index: 0 }); - bbox.width = 56.421875; - const posNext = setBranchPosition("develop", pos, 1, bbox, true); - expect(posNext).toBe(225.70703125); - expect(branchPos.get("develop")).toEqual({ pos, index: 1 }); - }); - }); - describe("commitPosition", () => { - const commits = /* @__PURE__ */ new Map([ - [ - "commitZero", - { - id: "ZERO", - message: "", - seq: 0, - type: commitType.NORMAL, - tags: [], - parents: [], - branch: "main" - } - ], - [ - "commitA", - { - id: "A", - message: "", - seq: 1, - type: commitType.NORMAL, - tags: [], - parents: ["ZERO"], - branch: "feature" - } - ], - [ - "commitB", - { - id: "B", - message: "", - seq: 2, - type: commitType.NORMAL, - tags: [], - parents: ["A"], - branch: "feature" - } - ], - [ - "commitM", - { - id: "M", - message: "merged branch feature into main", - seq: 3, - type: commitType.MERGE, - tags: [], - parents: ["ZERO", "B"], - branch: "main", - customId: true - } - ], - [ - "commitC", - { - id: "C", - message: "", - seq: 4, - type: commitType.NORMAL, - tags: [], - parents: ["ZERO"], - branch: "release" - } - ], - [ - "commit5_8928ea0", - { - id: "5-8928ea0", - message: "cherry-picked [object Object] into release", - seq: 5, - type: commitType.CHERRY_PICK, - tags: [], - parents: ["C", "M"], - branch: "release" + var select = r2.selection; + r2.swipePanning = false; + r2.hoverData.draggingEles = false; + var cy = r2.cy; + var zoom2 = cy.zoom(); + var now3 = r2.touchData.now; + var earlier = r2.touchData.earlier; + if (e3.touches[0]) { + var pos = r2.projectIntoViewport(e3.touches[0].clientX, e3.touches[0].clientY); + now3[0] = pos[0]; + now3[1] = pos[1]; + } + if (e3.touches[1]) { + var pos = r2.projectIntoViewport(e3.touches[1].clientX, e3.touches[1].clientY); + now3[2] = pos[0]; + now3[3] = pos[1]; + } + if (e3.touches[2]) { + var pos = r2.projectIntoViewport(e3.touches[2].clientX, e3.touches[2].clientY); + now3[4] = pos[0]; + now3[5] = pos[1]; + } + var makeEvent = /* @__PURE__ */ __name(function makeEvent2(type3) { + return { + originalEvent: e3, + type: type3, + position: { + x: now3[0], + y: now3[1] } - ], - [ - "commitD", - { - id: "D", - message: "", - seq: 6, - type: commitType.NORMAL, - tags: [], - parents: ["5-8928ea0"], - branch: "release" + }; + }, "makeEvent"); + if (start3) { + start3.unactivate(); + } + var ctxTapend; + if (r2.touchData.cxt) { + ctxTapend = makeEvent("cxttapend"); + if (start3) { + start3.emit(ctxTapend); + } else { + cy.emit(ctxTapend); + } + if (!r2.touchData.cxtDragged) { + var ctxTap = makeEvent("cxttap"); + if (start3) { + start3.emit(ctxTap); + } else { + cy.emit(ctxTap); } - ], - [ - "commit7_ed848ba", - { - id: "7-ed848ba", - message: "cherry-picked [object Object] into release", - seq: 7, - type: commitType.CHERRY_PICK, - tags: [], - parents: ["D", "M"], - branch: "release" + } + if (r2.touchData.start) { + r2.touchData.start._private.grabbed = false; + } + r2.touchData.cxt = false; + r2.touchData.start = null; + r2.redraw(); + return; + } + if (!e3.touches[2] && cy.boxSelectionEnabled() && r2.touchData.selecting) { + r2.touchData.selecting = false; + var box = cy.collection(r2.getAllInBox(select[0], select[1], select[2], select[3])); + select[0] = void 0; + select[1] = void 0; + select[2] = void 0; + select[3] = void 0; + select[4] = 0; + r2.redrawHint("select", true); + cy.emit(makeEvent("boxend")); + var eleWouldBeSelected = /* @__PURE__ */ __name(function eleWouldBeSelected2(ele) { + return ele.selectable() && !ele.selected(); + }, "eleWouldBeSelected"); + box.emit(makeEvent("box")).stdFilter(eleWouldBeSelected).select().emit(makeEvent("boxselect")); + if (box.nonempty()) { + r2.redrawHint("eles", true); + } + r2.redraw(); + } + if (start3 != null) { + start3.unactivate(); + } + if (e3.touches[2]) { + r2.data.bgActivePosistion = void 0; + r2.redrawHint("select", true); + } else if (e3.touches[1]) ; + else if (e3.touches[0]) ; + else if (!e3.touches[0]) { + r2.data.bgActivePosistion = void 0; + r2.redrawHint("select", true); + var draggedEles = r2.dragData.touchDragEles; + if (start3 != null) { + var startWasGrabbed = start3._private.grabbed; + freeDraggedElements(draggedEles); + r2.redrawHint("drag", true); + r2.redrawHint("eles", true); + if (startWasGrabbed) { + start3.emit(makeEvent("freeon")); + draggedEles.emit(makeEvent("free")); + if (r2.dragData.didDrag) { + start3.emit(makeEvent("dragfreeon")); + draggedEles.emit(makeEvent("dragfree")); + } } - ] - ]); - let pos = 0; - branchPos.set("main", { pos: 0, index: 0 }); - branchPos.set("feature", { pos: 107.49609375, index: 1 }); - branchPos.set("release", { pos: 224.03515625, index: 2 }); - describe("TB", () => { - pos = 30; - dir = "TB"; - const expectedCommitPositionTB = /* @__PURE__ */ new Map([ - ["commitZero", { x: 0, y: 40, posWithOffset: 40 }], - ["commitA", { x: 107.49609375, y: 90, posWithOffset: 90 }], - ["commitB", { x: 107.49609375, y: 140, posWithOffset: 140 }], - ["commitM", { x: 0, y: 190, posWithOffset: 190 }], - ["commitC", { x: 224.03515625, y: 240, posWithOffset: 240 }], - ["commit5_8928ea0", { x: 224.03515625, y: 290, posWithOffset: 290 }], - ["commitD", { x: 224.03515625, y: 340, posWithOffset: 340 }], - ["commit7_ed848ba", { x: 224.03515625, y: 390, posWithOffset: 390 }] - ]); - commits.forEach((commit2, key) => { - it(`should give the correct position for commit ${key}`, () => { - const position5 = getCommitPosition(commit2, pos, false); - expect(position5).toEqual(expectedCommitPositionTB.get(key)); - pos += 50; - }); - }); - }); - describe("LR", () => { - let pos2 = 30; - dir = "LR"; - const expectedCommitPositionLR = /* @__PURE__ */ new Map([ - ["commitZero", { x: 0, y: 40, posWithOffset: 40 }], - ["commitA", { x: 107.49609375, y: 90, posWithOffset: 90 }], - ["commitB", { x: 107.49609375, y: 140, posWithOffset: 140 }], - ["commitM", { x: 0, y: 190, posWithOffset: 190 }], - ["commitC", { x: 224.03515625, y: 240, posWithOffset: 240 }], - ["commit5_8928ea0", { x: 224.03515625, y: 290, posWithOffset: 290 }], - ["commitD", { x: 224.03515625, y: 340, posWithOffset: 340 }], - ["commit7_ed848ba", { x: 224.03515625, y: 390, posWithOffset: 390 }] - ]); - commits.forEach((commit2, key) => { - it(`should give the correct position for commit ${key}`, () => { - const position5 = getCommitPosition(commit2, pos2, false); - expect(position5).toEqual(expectedCommitPositionLR.get(key)); - pos2 += 50; + triggerEvents(start3, ["touchend", "tapend", "vmouseup", "tapdragout"], e3, { + x: now3[0], + y: now3[1] }); - }); - }); - describe("getCommitClassType", () => { - const expectedCommitClassType = /* @__PURE__ */ new Map([ - ["commitZero", "commit-normal"], - ["commitA", "commit-normal"], - ["commitB", "commit-normal"], - ["commitM", "commit-merge"], - ["commitC", "commit-normal"], - ["commit5_8928ea0", "commit-cherry-pick"], - ["commitD", "commit-normal"], - ["commit7_ed848ba", "commit-cherry-pick"] - ]); - commits.forEach((commit2, key) => { - it(`should give the correct class type for commit ${key}`, () => { - const classType = getCommitClassType(commit2); - expect(classType).toBe(expectedCommitClassType.get(key)); + start3.unactivate(); + r2.touchData.start = null; + } else { + var near = r2.findNearestElement(now3[0], now3[1], true, true); + triggerEvents(near, ["touchend", "tapend", "vmouseup", "tapdragout"], e3, { + x: now3[0], + y: now3[1] }); - }); - }); - }); - describe("building BT parallel commit diagram", () => { - const commits = /* @__PURE__ */ new Map([ - [ - "1-abcdefg", - { - id: "1-abcdefg", - message: "", - seq: 0, - type: 0, - tags: [], - parents: [], - branch: "main" - } - ], - [ - "2-abcdefg", - { - id: "2-abcdefg", - message: "", - seq: 1, - type: 0, - tags: [], - parents: ["1-abcdefg"], - branch: "main" - } - ], - [ - "3-abcdefg", - { - id: "3-abcdefg", - message: "", - seq: 2, - type: 0, - tags: [], - parents: ["2-abcdefg"], - branch: "develop" - } - ], - [ - "4-abcdefg", - { - id: "4-abcdefg", - message: "", - seq: 3, - type: 0, - tags: [], - parents: ["3-abcdefg"], - branch: "develop" - } - ], - [ - "5-abcdefg", - { - id: "5-abcdefg", - message: "", - seq: 4, - type: 0, - tags: [], - parents: ["2-abcdefg"], - branch: "feature" - } - ], - [ - "6-abcdefg", - { - id: "6-abcdefg", - message: "", - seq: 5, - type: 0, - tags: [], - parents: ["5-abcdefg"], - branch: "feature" + } + var dx = r2.touchData.startPosition[0] - now3[0]; + var dx2 = dx * dx; + var dy = r2.touchData.startPosition[1] - now3[1]; + var dy2 = dy * dy; + var dist22 = dx2 + dy2; + var rdist2 = dist22 * zoom2 * zoom2; + if (!r2.touchData.singleTouchMoved) { + if (!start3) { + cy.$(":selected").unselect(["tapunselect"]); } - ], - [ - "7-abcdefg", - { - id: "7-abcdefg", - message: "", - seq: 6, - type: 0, - tags: [], - parents: ["2-abcdefg"], - branch: "main" + triggerEvents(start3, ["tap", "vclick"], e3, { + x: now3[0], + y: now3[1] + }); + didDoubleTouch = false; + if (e3.timeStamp - prevTouchTimeStamp <= cy.multiClickDebounceTime()) { + touchTimeout && clearTimeout(touchTimeout); + didDoubleTouch = true; + prevTouchTimeStamp = null; + triggerEvents(start3, ["dbltap", "vdblclick"], e3, { + x: now3[0], + y: now3[1] + }); + } else { + touchTimeout = setTimeout(function() { + if (didDoubleTouch) return; + triggerEvents(start3, ["onetap", "voneclick"], e3, { + x: now3[0], + y: now3[1] + }); + }, cy.multiClickDebounceTime()); + prevTouchTimeStamp = e3.timeStamp; } - ], - [ - "8-abcdefg", - { - id: "8-abcdefg", - message: "", - seq: 7, - type: 0, - tags: [], - parents: ["7-abcdefg"], - branch: "main" + } + if (start3 != null && !r2.dragData.didDrag && start3._private.selectable && rdist2 < r2.touchTapThreshold2 && !r2.pinching) { + if (cy.selectionType() === "single") { + cy.$(isSelected).unmerge(start3).unselect(["tapunselect"]); + start3.select(["tapselect"]); + } else { + if (start3.selected()) { + start3.unselect(["tapunselect"]); + } else { + start3.select(["tapselect"]); + } } - ] - ]); - const expectedCommitPosition = /* @__PURE__ */ new Map([ - ["1-abcdefg", { x: 0, y: 40 }], - ["2-abcdefg", { x: 0, y: 90 }], - ["3-abcdefg", { x: 107.49609375, y: 140 }], - ["4-abcdefg", { x: 107.49609375, y: 190 }], - ["5-abcdefg", { x: 225.70703125, y: 140 }], - ["6-abcdefg", { x: 225.70703125, y: 190 }], - ["7-abcdefg", { x: 0, y: 140 }], - ["8-abcdefg", { x: 0, y: 190 }] - ]); - const expectedCommitPositionAfterParallel = /* @__PURE__ */ new Map([ - ["1-abcdefg", { x: 0, y: 210 }], - ["2-abcdefg", { x: 0, y: 160 }], - ["3-abcdefg", { x: 107.49609375, y: 110 }], - ["4-abcdefg", { x: 107.49609375, y: 60 }], - ["5-abcdefg", { x: 225.70703125, y: 110 }], - ["6-abcdefg", { x: 225.70703125, y: 60 }], - ["7-abcdefg", { x: 0, y: 110 }], - ["8-abcdefg", { x: 0, y: 60 }] - ]); - const expectedCommitCurrentPosition = /* @__PURE__ */ new Map([ - ["1-abcdefg", 30], - ["2-abcdefg", 80], - ["3-abcdefg", 130], - ["4-abcdefg", 180], - ["5-abcdefg", 130], - ["6-abcdefg", 180], - ["7-abcdefg", 130], - ["8-abcdefg", 180] - ]); - const sortedKeys = [...expectedCommitPosition.keys()]; - it("should get the correct commit position and current position", () => { - dir = "BT"; - let curPos = 30; - commitPos.clear(); - branchPos.clear(); - branchPos.set("main", { pos: 0, index: 0 }); - branchPos.set("develop", { pos: 107.49609375, index: 1 }); - branchPos.set("feature", { pos: 225.70703125, index: 2 }); - DEFAULT_GITGRAPH_CONFIG2.parallelCommits = true; - commits.forEach((commit2, key) => { - if (commit2.parents.length > 0) { - curPos = calculateCommitPosition(commit2); + r2.redrawHint("eles", true); + } + r2.touchData.singleTouchMoved = true; + } + for (var j3 = 0; j3 < now3.length; j3++) { + earlier[j3] = now3[j3]; + } + r2.dragData.didDrag = false; + if (e3.touches.length === 0) { + r2.touchData.dragDelta = []; + r2.touchData.startPosition = [null, null, null, null, null, null]; + r2.touchData.startGPosition = null; + r2.touchData.didSelect = false; + } + if (e3.touches.length < 2) { + if (e3.touches.length === 1) { + r2.touchData.startGPosition = [e3.touches[0].clientX, e3.touches[0].clientY]; + } + r2.pinching = false; + r2.redrawHint("eles", true); + r2.redraw(); + } + }, "touchendHandler"), false); + if (typeof TouchEvent === "undefined") { + var pointers = []; + var makeTouch = /* @__PURE__ */ __name(function makeTouch2(e3) { + return { + clientX: e3.clientX, + clientY: e3.clientY, + force: 1, + identifier: e3.pointerId, + pageX: e3.pageX, + pageY: e3.pageY, + radiusX: e3.width / 2, + radiusY: e3.height / 2, + screenX: e3.screenX, + screenY: e3.screenY, + target: e3.target + }; + }, "makeTouch"); + var makePointer = /* @__PURE__ */ __name(function makePointer2(e3) { + return { + event: e3, + touch: makeTouch(e3) + }; + }, "makePointer"); + var addPointer = /* @__PURE__ */ __name(function addPointer2(e3) { + pointers.push(makePointer(e3)); + }, "addPointer"); + var removePointer = /* @__PURE__ */ __name(function removePointer2(e3) { + for (var i2 = 0; i2 < pointers.length; i2++) { + var p3 = pointers[i2]; + if (p3.event.pointerId === e3.pointerId) { + pointers.splice(i2, 1); + return; } - const position5 = setCommitPosition(commit2, curPos); - expect(position5).toEqual(expectedCommitPosition.get(key)); - expect(curPos).toEqual(expectedCommitCurrentPosition.get(key)); + } + }, "removePointer"); + var updatePointer = /* @__PURE__ */ __name(function updatePointer2(e3) { + var p3 = pointers.filter(function(p4) { + return p4.event.pointerId === e3.pointerId; + })[0]; + p3.event = e3; + p3.touch = makeTouch(e3); + }, "updatePointer"); + var addTouchesToEvent = /* @__PURE__ */ __name(function addTouchesToEvent2(e3) { + e3.touches = pointers.map(function(p3) { + return p3.touch; }); + }, "addTouchesToEvent"); + var pointerIsMouse = /* @__PURE__ */ __name(function pointerIsMouse2(e3) { + return e3.pointerType === "mouse" || e3.pointerType === 4; + }, "pointerIsMouse"); + r2.registerBinding(r2.container, "pointerdown", function(e3) { + if (pointerIsMouse(e3)) { + return; + } + e3.preventDefault(); + addPointer(e3); + addTouchesToEvent(e3); + touchstartHandler(e3); }); - it("should get the correct commit position after parallel commits", () => { - commitPos.clear(); - branchPos.clear(); - dir = "BT"; - const curPos = 30; - commitPos.clear(); - branchPos.clear(); - branchPos.set("main", { pos: 0, index: 0 }); - branchPos.set("develop", { pos: 107.49609375, index: 1 }); - branchPos.set("feature", { pos: 225.70703125, index: 2 }); - setParallelBTPos(sortedKeys, commits, curPos); - sortedKeys.forEach((commit2) => { - const position5 = commitPos.get(commit2); - expect(position5).toEqual(expectedCommitPositionAfterParallel.get(commit2)); - }); + r2.registerBinding(r2.container, "pointerup", function(e3) { + if (pointerIsMouse(e3)) { + return; + } + removePointer(e3); + addTouchesToEvent(e3); + touchendHandler(e3); }); - }); - DEFAULT_GITGRAPH_CONFIG2.parallelCommits = false; - it("add", () => { - commitPos.set("parent1", { x: 1, y: 1 }); - commitPos.set("parent2", { x: 2, y: 2 }); - commitPos.set("parent3", { x: 3, y: 3 }); - dir = "LR"; - const parents3 = ["parent1", "parent2", "parent3"]; - const closestParent = findClosestParent(parents3); - expect(closestParent).toBe("parent3"); - commitPos.clear(); - }); - } - } - }); - - // src/diagrams/git/styles.js - var getStyles5, styles_default5; - var init_styles5 = __esm({ - "src/diagrams/git/styles.js"() { - "use strict"; - getStyles5 = /* @__PURE__ */ __name((options3) => ` - .commit-id, - .commit-msg, - .branch-label { - fill: lightgrey; - color: lightgrey; - font-family: 'trebuchet ms', verdana, arial, sans-serif; - font-family: var(--mermaid-font-family); - } - ${[0, 1, 2, 3, 4, 5, 6, 7].map( - (i2) => ` - .branch-label${i2} { fill: ${options3["gitBranchLabel" + i2]}; } - .commit${i2} { stroke: ${options3["git" + i2]}; fill: ${options3["git" + i2]}; } - .commit-highlight${i2} { stroke: ${options3["gitInv" + i2]}; fill: ${options3["gitInv" + i2]}; } - .label${i2} { fill: ${options3["git" + i2]}; } - .arrow${i2} { stroke: ${options3["git" + i2]}; } - ` - ).join("\n")} - - .branch { - stroke-width: 1; - stroke: ${options3.lineColor}; - stroke-dasharray: 2; - } - .commit-label { font-size: ${options3.commitLabelFontSize}; fill: ${options3.commitLabelColor};} - .commit-label-bkg { font-size: ${options3.commitLabelFontSize}; fill: ${options3.commitLabelBackground}; opacity: 0.5; } - .tag-label { font-size: ${options3.tagLabelFontSize}; fill: ${options3.tagLabelColor};} - .tag-label-bkg { fill: ${options3.tagLabelBackground}; stroke: ${options3.tagLabelBorder}; } - .tag-hole { fill: ${options3.textColor}; } - - .commit-merge { - stroke: ${options3.primaryColor}; - fill: ${options3.primaryColor}; - } - .commit-reverse { - stroke: ${options3.primaryColor}; - fill: ${options3.primaryColor}; - stroke-width: 3; - } - .commit-highlight-outer { - } - .commit-highlight-inner { - stroke: ${options3.primaryColor}; - fill: ${options3.primaryColor}; - } - - .arrow { stroke-width: 8; stroke-linecap: round; fill: none} - .gitTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${options3.textColor}; - } -`, "getStyles"); - styles_default5 = getStyles5; - } - }); - - // src/diagrams/git/gitGraphDiagram.ts - var gitGraphDiagram_exports = {}; - __export(gitGraphDiagram_exports, { - diagram: () => diagram4 - }); - var diagram4; - var init_gitGraphDiagram = __esm({ - "src/diagrams/git/gitGraphDiagram.ts"() { - "use strict"; - init_gitGraphParser(); - init_gitGraphAst(); - init_gitGraphRenderer(); - init_styles5(); - diagram4 = { - parser: parser5, - db, - renderer: gitGraphRenderer_default, - styles: styles_default5 + r2.registerBinding(r2.container, "pointercancel", function(e3) { + if (pointerIsMouse(e3)) { + return; + } + removePointer(e3); + addTouchesToEvent(e3); + touchcancelHandler(e3); + }); + r2.registerBinding(r2.container, "pointermove", function(e3) { + if (pointerIsMouse(e3)) { + return; + } + e3.preventDefault(); + updatePointer(e3); + addTouchesToEvent(e3); + touchmoveHandler(e3); + }); + } }; - } - }); - - // src/diagrams/gantt/parser/gantt.jison - var parser6, gantt_default; - var init_gantt = __esm({ - "src/diagrams/gantt/parser/gantt.jison"() { - "use strict"; - parser6 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; - return o3; - }, "o"), $V0 = [6, 8, 10, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 35, 36, 38, 40], $V1 = [1, 26], $V2 = [1, 27], $V3 = [1, 28], $V4 = [1, 29], $V5 = [1, 30], $V6 = [1, 31], $V7 = [1, 32], $V8 = [1, 33], $V9 = [1, 34], $Va = [1, 9], $Vb = [1, 10], $Vc = [1, 11], $Vd = [1, 12], $Ve = [1, 13], $Vf = [1, 14], $Vg = [1, 15], $Vh = [1, 16], $Vi = [1, 19], $Vj = [1, 20], $Vk = [1, 21], $Vl = [1, 22], $Vm = [1, 23], $Vn = [1, 25], $Vo = [1, 35]; - var parser24 = { - trace: /* @__PURE__ */ __name(function trace() { - }, "trace"), - yy: {}, - symbols_: { "error": 2, "start": 3, "gantt": 4, "document": 5, "EOF": 6, "line": 7, "SPACE": 8, "statement": 9, "NL": 10, "weekday": 11, "weekday_monday": 12, "weekday_tuesday": 13, "weekday_wednesday": 14, "weekday_thursday": 15, "weekday_friday": 16, "weekday_saturday": 17, "weekday_sunday": 18, "weekend": 19, "weekend_friday": 20, "weekend_saturday": 21, "dateFormat": 22, "inclusiveEndDates": 23, "topAxis": 24, "axisFormat": 25, "tickInterval": 26, "excludes": 27, "includes": 28, "todayMarker": 29, "title": 30, "acc_title": 31, "acc_title_value": 32, "acc_descr": 33, "acc_descr_value": 34, "acc_descr_multiline_value": 35, "section": 36, "clickStatement": 37, "taskTxt": 38, "taskData": 39, "click": 40, "callbackname": 41, "callbackargs": 42, "href": 43, "clickStatementDebug": 44, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 4: "gantt", 6: "EOF", 8: "SPACE", 10: "NL", 12: "weekday_monday", 13: "weekday_tuesday", 14: "weekday_wednesday", 15: "weekday_thursday", 16: "weekday_friday", 17: "weekday_saturday", 18: "weekday_sunday", 20: "weekend_friday", 21: "weekend_saturday", 22: "dateFormat", 23: "inclusiveEndDates", 24: "topAxis", 25: "axisFormat", 26: "tickInterval", 27: "excludes", 28: "includes", 29: "todayMarker", 30: "title", 31: "acc_title", 32: "acc_title_value", 33: "acc_descr", 34: "acc_descr_value", 35: "acc_descr_multiline_value", 36: "section", 38: "taskTxt", 39: "taskData", 40: "click", 41: "callbackname", 42: "callbackargs", 43: "href" }, - productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [19, 1], [19, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 2], [37, 2], [37, 3], [37, 3], [37, 4], [37, 3], [37, 4], [37, 2], [44, 2], [44, 3], [44, 3], [44, 4], [44, 3], [44, 4], [44, 2]], - performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 1: - return $$[$0 - 1]; - break; - case 2: - this.$ = []; - break; - case 3: - $$[$0 - 1].push($$[$0]); - this.$ = $$[$0 - 1]; - break; - case 4: - case 5: - this.$ = $$[$0]; - break; - case 6: - case 7: - this.$ = []; - break; - case 8: - yy.setWeekday("monday"); - break; - case 9: - yy.setWeekday("tuesday"); - break; - case 10: - yy.setWeekday("wednesday"); - break; - case 11: - yy.setWeekday("thursday"); - break; - case 12: - yy.setWeekday("friday"); - break; - case 13: - yy.setWeekday("saturday"); - break; - case 14: - yy.setWeekday("sunday"); - break; - case 15: - yy.setWeekend("friday"); - break; - case 16: - yy.setWeekend("saturday"); - break; - case 17: - yy.setDateFormat($$[$0].substr(11)); - this.$ = $$[$0].substr(11); - break; - case 18: - yy.enableInclusiveEndDates(); - this.$ = $$[$0].substr(18); - break; - case 19: - yy.TopAxis(); - this.$ = $$[$0].substr(8); - break; - case 20: - yy.setAxisFormat($$[$0].substr(11)); - this.$ = $$[$0].substr(11); - break; - case 21: - yy.setTickInterval($$[$0].substr(13)); - this.$ = $$[$0].substr(13); - break; - case 22: - yy.setExcludes($$[$0].substr(9)); - this.$ = $$[$0].substr(9); - break; - case 23: - yy.setIncludes($$[$0].substr(9)); - this.$ = $$[$0].substr(9); - break; - case 24: - yy.setTodayMarker($$[$0].substr(12)); - this.$ = $$[$0].substr(12); - break; - case 27: - yy.setDiagramTitle($$[$0].substr(6)); - this.$ = $$[$0].substr(6); - break; - case 28: - this.$ = $$[$0].trim(); - yy.setAccTitle(this.$); - break; - case 29: - case 30: - this.$ = $$[$0].trim(); - yy.setAccDescription(this.$); - break; - case 31: - yy.addSection($$[$0].substr(8)); - this.$ = $$[$0].substr(8); - break; - case 33: - yy.addTask($$[$0 - 1], $$[$0]); - this.$ = "task"; - break; - case 34: - this.$ = $$[$0 - 1]; - yy.setClickEvent($$[$0 - 1], $$[$0], null); - break; - case 35: - this.$ = $$[$0 - 2]; - yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]); - break; - case 36: - this.$ = $$[$0 - 2]; - yy.setClickEvent($$[$0 - 2], $$[$0 - 1], null); - yy.setLink($$[$0 - 2], $$[$0]); - break; - case 37: - this.$ = $$[$0 - 3]; - yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]); - yy.setLink($$[$0 - 3], $$[$0]); - break; - case 38: - this.$ = $$[$0 - 2]; - yy.setClickEvent($$[$0 - 2], $$[$0], null); - yy.setLink($$[$0 - 2], $$[$0 - 1]); - break; - case 39: - this.$ = $$[$0 - 3]; - yy.setClickEvent($$[$0 - 3], $$[$0 - 1], $$[$0]); - yy.setLink($$[$0 - 3], $$[$0 - 2]); - break; - case 40: - this.$ = $$[$0 - 1]; - yy.setLink($$[$0 - 1], $$[$0]); - break; - case 41: - case 47: - this.$ = $$[$0 - 1] + " " + $$[$0]; - break; - case 42: - case 43: - case 45: - this.$ = $$[$0 - 2] + " " + $$[$0 - 1] + " " + $$[$0]; - break; - case 44: - case 46: - this.$ = $$[$0 - 3] + " " + $$[$0 - 2] + " " + $$[$0 - 1] + " " + $$[$0]; - break; + BRp$2 = {}; + BRp$2.generatePolygon = function(name, points) { + return this.nodeShapes[name] = { + renderer: this, + name, + points, + draw: /* @__PURE__ */ __name(function draw26(context, centerX, centerY, width3, height2, cornerRadius) { + this.renderer.nodeShapeImpl("polygon", context, centerX, centerY, width3, height2, this.points); + }, "draw"), + intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y6, padding2, cornerRadius) { + return polygonIntersectLine(x5, y6, this.points, nodeX, nodeY, width3 / 2, height2 / 2, padding2); + }, "intersectLine"), + checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y6, padding2, width3, height2, centerX, centerY, cornerRadius) { + return pointInsidePolygon(x5, y6, this.points, centerX, centerY, width3, height2, [0, -1], padding2); + }, "checkPoint"), + hasMiterBounds: name !== "rectangle", + miterBounds: /* @__PURE__ */ __name(function miterBounds(centerX, centerY, width3, height2, strokeWidth, strokePosition) { + return miterBox(this.points, centerX, centerY, width3, height2, strokeWidth); + }, "miterBounds") + }; + }; + BRp$2.generateEllipse = function() { + return this.nodeShapes["ellipse"] = { + renderer: this, + name: "ellipse", + draw: /* @__PURE__ */ __name(function draw26(context, centerX, centerY, width3, height2, cornerRadius) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width3, height2); + }, "draw"), + intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y6, padding2, cornerRadius) { + return intersectLineEllipse(x5, y6, nodeX, nodeY, width3 / 2 + padding2, height2 / 2 + padding2); + }, "intersectLine"), + checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y6, padding2, width3, height2, centerX, centerY, cornerRadius) { + return checkInEllipse(x5, y6, width3, height2, centerX, centerY, padding2); + }, "checkPoint") + }; + }; + BRp$2.generateRoundPolygon = function(name, points) { + return this.nodeShapes[name] = { + renderer: this, + name, + points, + getOrCreateCorners: /* @__PURE__ */ __name(function getOrCreateCorners(centerX, centerY, width3, height2, cornerRadius, rs, field) { + if (rs[field] !== void 0 && rs[field + "-cx"] === centerX && rs[field + "-cy"] === centerY) { + return rs[field]; } - }, "anonymous"), - table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o2($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: 17, 12: $V1, 13: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: 18, 20: $V8, 21: $V9, 22: $Va, 23: $Vb, 24: $Vc, 25: $Vd, 26: $Ve, 27: $Vf, 28: $Vg, 29: $Vh, 30: $Vi, 31: $Vj, 33: $Vk, 35: $Vl, 36: $Vm, 37: 24, 38: $Vn, 40: $Vo }, o2($V0, [2, 7], { 1: [2, 1] }), o2($V0, [2, 3]), { 9: 36, 11: 17, 12: $V1, 13: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: 18, 20: $V8, 21: $V9, 22: $Va, 23: $Vb, 24: $Vc, 25: $Vd, 26: $Ve, 27: $Vf, 28: $Vg, 29: $Vh, 30: $Vi, 31: $Vj, 33: $Vk, 35: $Vl, 36: $Vm, 37: 24, 38: $Vn, 40: $Vo }, o2($V0, [2, 5]), o2($V0, [2, 6]), o2($V0, [2, 17]), o2($V0, [2, 18]), o2($V0, [2, 19]), o2($V0, [2, 20]), o2($V0, [2, 21]), o2($V0, [2, 22]), o2($V0, [2, 23]), o2($V0, [2, 24]), o2($V0, [2, 25]), o2($V0, [2, 26]), o2($V0, [2, 27]), { 32: [1, 37] }, { 34: [1, 38] }, o2($V0, [2, 30]), o2($V0, [2, 31]), o2($V0, [2, 32]), { 39: [1, 39] }, o2($V0, [2, 8]), o2($V0, [2, 9]), o2($V0, [2, 10]), o2($V0, [2, 11]), o2($V0, [2, 12]), o2($V0, [2, 13]), o2($V0, [2, 14]), o2($V0, [2, 15]), o2($V0, [2, 16]), { 41: [1, 40], 43: [1, 41] }, o2($V0, [2, 4]), o2($V0, [2, 28]), o2($V0, [2, 29]), o2($V0, [2, 33]), o2($V0, [2, 34], { 42: [1, 42], 43: [1, 43] }), o2($V0, [2, 40], { 41: [1, 44] }), o2($V0, [2, 35], { 43: [1, 45] }), o2($V0, [2, 36]), o2($V0, [2, 38], { 42: [1, 46] }), o2($V0, [2, 37]), o2($V0, [2, 39])], - defaultActions: {}, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); - } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; + rs[field] = new Array(points.length / 2); + rs[field + "-cx"] = centerX; + rs[field + "-cy"] = centerY; + var halfW = width3 / 2; + var halfH = height2 / 2; + cornerRadius = cornerRadius === "auto" ? getRoundPolygonRadius(width3, height2) : cornerRadius; + var p3 = new Array(points.length / 2); + for (var _i = 0; _i < points.length / 2; _i++) { + p3[_i] = { + x: centerX + halfW * points[_i * 2], + y: centerY + halfH * points[_i * 2 + 1] + }; } - }, "parseError"), - parse: /* @__PURE__ */ __name(function parse7(input) { - var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; - var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k2 in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { - sharedState.yy[k2] = this.yy[k2]; - } + var i2, p1, p22, p32, len = p3.length; + p1 = p3[len - 1]; + for (i2 = 0; i2 < len; i2++) { + p22 = p3[i2 % len]; + p32 = p3[(i2 + 1) % len]; + rs[field][i2] = getRoundCorner(p1, p22, p32, cornerRadius); + p1 = p22; + p22 = p32; } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; - sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; + return rs[field]; + }, "getOrCreateCorners"), + draw: /* @__PURE__ */ __name(function draw26(context, centerX, centerY, width3, height2, cornerRadius, rs) { + this.renderer.nodeShapeImpl("round-polygon", context, centerX, centerY, width3, height2, this.points, this.getOrCreateCorners(centerX, centerY, width3, height2, cornerRadius, rs, "drawCorners")); + }, "draw"), + intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y6, padding2, cornerRadius, rs) { + return roundPolygonIntersectLine(x5, y6, this.points, nodeX, nodeY, width3, height2, padding2, this.getOrCreateCorners(nodeX, nodeY, width3, height2, cornerRadius, rs, "corners")); + }, "intersectLine"), + checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y6, padding2, width3, height2, centerX, centerY, cornerRadius, rs) { + return pointInsideRoundPolygon(x5, y6, this.points, centerX, centerY, width3, height2, this.getOrCreateCorners(centerX, centerY, width3, height2, cornerRadius, rs, "corners")); + }, "checkPoint") + }; + }; + BRp$2.generateRoundRectangle = function() { + return this.nodeShapes["round-rectangle"] = this.nodeShapes["roundrectangle"] = { + renderer: this, + name: "round-rectangle", + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: /* @__PURE__ */ __name(function draw26(context, centerX, centerY, width3, height2, cornerRadius) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width3, height2, this.points, cornerRadius); + }, "draw"), + intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y6, padding2, cornerRadius) { + return roundRectangleIntersectLine(x5, y6, nodeX, nodeY, width3, height2, padding2, cornerRadius); + }, "intersectLine"), + checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y6, padding2, width3, height2, centerX, centerY, cornerRadius) { + var halfWidth = width3 / 2; + var halfHeight = height2 / 2; + cornerRadius = cornerRadius === "auto" ? getRoundRectangleRadius(width3, height2) : cornerRadius; + cornerRadius = Math.min(halfWidth, halfHeight, cornerRadius); + var diam = cornerRadius * 2; + if (pointInsidePolygon(x5, y6, this.points, centerX, centerY, width3, height2 - diam, [0, -1], padding2)) { + return true; } - var yyloc = lexer3.yylloc; - lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; + if (pointInsidePolygon(x5, y6, this.points, centerX, centerY, width3 - diam, height2, [0, -1], padding2)) { + return true; } - function popStack(n2) { - stack.length = stack.length - 2 * n2; - vstack.length = vstack.length - n2; - lstack.length = lstack.length - n2; + if (checkInEllipse(x5, y6, diam, diam, centerX - halfWidth + cornerRadius, centerY - halfHeight + cornerRadius, padding2)) { + return true; } - __name(popStack, "popStack"); - function lex() { - var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; - if (typeof token2 !== "number") { - if (token2 instanceof Array) { - tstack = token2; - token2 = tstack.pop(); - } - token2 = self2.symbols_[token2] || token2; - } - return token2; + if (checkInEllipse(x5, y6, diam, diam, centerX + halfWidth - cornerRadius, centerY - halfHeight + cornerRadius, padding2)) { + return true; } - __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; - while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state4] && table[state4][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p3 in table[state4]) { - if (this.terminals_[p3] && p3 > TERROR) { - expected.push("'" + this.terminals_[p3] + "'"); - } - } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); - } - this.parseError(errStr, { - text: lexer3.match, - token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, - loc: yyloc, - expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r2 = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r2 !== "undefined") { - return r2; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState2); - break; - case 3: - return true; - } + if (checkInEllipse(x5, y6, diam, diam, centerX + halfWidth - cornerRadius, centerY + halfHeight - cornerRadius, padding2)) { + return true; } - return true; - }, "parse") + if (checkInEllipse(x5, y6, diam, diam, centerX - halfWidth + cornerRadius, centerY + halfHeight - cornerRadius, padding2)) { + return true; + } + return false; + }, "checkPoint") }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { - EOF: 1, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str2, hash); - } else { - throw new Error(str2); - } - }, "parseError"), - // resets the lexer, sets new input - setInput: /* @__PURE__ */ __name(function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 - }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; - } - this.offset = 0; - return this; - }, "setInput"), - // consumes and returns one char from the input - input: /* @__PURE__ */ __name(function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } - this._input = this._input.slice(1); - return ch; - }, "input"), - // unshifts one char (or a string) into the input - unput: /* @__PURE__ */ __name(function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r2 = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len - }; - if (this.options.ranges) { - this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, "unput"), - // When called from action, caches matched text and appends it on next action - more: /* @__PURE__ */ __name(function() { - this._more = true; - return this; - }, "more"), - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: /* @__PURE__ */ __name(function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno + }; + BRp$2.generateCutRectangle = function() { + return this.nodeShapes["cut-rectangle"] = this.nodeShapes["cutrectangle"] = { + renderer: this, + name: "cut-rectangle", + cornerLength: getCutRectangleCornerLength(), + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: /* @__PURE__ */ __name(function draw26(context, centerX, centerY, width3, height2, cornerRadius) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width3, height2, null, cornerRadius); + }, "draw"), + generateCutTrianglePts: /* @__PURE__ */ __name(function generateCutTrianglePts(width3, height2, centerX, centerY, cornerRadius) { + var cl = cornerRadius === "auto" ? this.cornerLength : cornerRadius; + var hh = height2 / 2; + var hw = width3 / 2; + var xBegin = centerX - hw; + var xEnd = centerX + hw; + var yBegin = centerY - hh; + var yEnd = centerY + hh; + return { + topLeft: [xBegin, yBegin + cl, xBegin + cl, yBegin, xBegin + cl, yBegin + cl], + topRight: [xEnd - cl, yBegin, xEnd, yBegin + cl, xEnd - cl, yBegin + cl], + bottomRight: [xEnd, yEnd - cl, xEnd - cl, yEnd, xEnd - cl, yEnd - cl], + bottomLeft: [xBegin + cl, yEnd, xBegin, yEnd - cl, xBegin + cl, yEnd - cl] + }; + }, "generateCutTrianglePts"), + intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y6, padding2, cornerRadius) { + var cPts = this.generateCutTrianglePts(width3 + 2 * padding2, height2 + 2 * padding2, nodeX, nodeY, cornerRadius); + var pts2 = [].concat.apply([], [cPts.topLeft.splice(0, 4), cPts.topRight.splice(0, 4), cPts.bottomRight.splice(0, 4), cPts.bottomLeft.splice(0, 4)]); + return polygonIntersectLine(x5, y6, pts2, nodeX, nodeY); + }, "intersectLine"), + checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y6, padding2, width3, height2, centerX, centerY, cornerRadius) { + var cl = cornerRadius === "auto" ? this.cornerLength : cornerRadius; + if (pointInsidePolygon(x5, y6, this.points, centerX, centerY, width3, height2 - 2 * cl, [0, -1], padding2)) { + return true; + } + if (pointInsidePolygon(x5, y6, this.points, centerX, centerY, width3 - 2 * cl, height2, [0, -1], padding2)) { + return true; + } + var cutTrianglePts = this.generateCutTrianglePts(width3, height2, centerX, centerY); + return pointInsidePolygonPoints(x5, y6, cutTrianglePts.topLeft) || pointInsidePolygonPoints(x5, y6, cutTrianglePts.topRight) || pointInsidePolygonPoints(x5, y6, cutTrianglePts.bottomRight) || pointInsidePolygonPoints(x5, y6, cutTrianglePts.bottomLeft); + }, "checkPoint") + }; + }; + BRp$2.generateBarrel = function() { + return this.nodeShapes["barrel"] = { + renderer: this, + name: "barrel", + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: /* @__PURE__ */ __name(function draw26(context, centerX, centerY, width3, height2, cornerRadius) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width3, height2); + }, "draw"), + intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y6, padding2, cornerRadius) { + var t03 = 0.15; + var t13 = 0.5; + var t22 = 0.85; + var bPts = this.generateBarrelBezierPts(width3 + 2 * padding2, height2 + 2 * padding2, nodeX, nodeY); + var approximateBarrelCurvePts = /* @__PURE__ */ __name(function approximateBarrelCurvePts2(pts3) { + var m0 = qbezierPtAt({ + x: pts3[0], + y: pts3[1] + }, { + x: pts3[2], + y: pts3[3] + }, { + x: pts3[4], + y: pts3[5] + }, t03); + var m1 = qbezierPtAt({ + x: pts3[0], + y: pts3[1] + }, { + x: pts3[2], + y: pts3[3] + }, { + x: pts3[4], + y: pts3[5] + }, t13); + var m22 = qbezierPtAt({ + x: pts3[0], + y: pts3[1] + }, { + x: pts3[2], + y: pts3[3] + }, { + x: pts3[4], + y: pts3[5] + }, t22); + return [pts3[0], pts3[1], m0.x, m0.y, m1.x, m1.y, m22.x, m22.y, pts3[4], pts3[5]]; + }, "approximateBarrelCurvePts"); + var pts2 = [].concat(approximateBarrelCurvePts(bPts.topLeft), approximateBarrelCurvePts(bPts.topRight), approximateBarrelCurvePts(bPts.bottomRight), approximateBarrelCurvePts(bPts.bottomLeft)); + return polygonIntersectLine(x5, y6, pts2, nodeX, nodeY); + }, "intersectLine"), + generateBarrelBezierPts: /* @__PURE__ */ __name(function generateBarrelBezierPts(width3, height2, centerX, centerY) { + var hh = height2 / 2; + var hw = width3 / 2; + var xBegin = centerX - hw; + var xEnd = centerX + hw; + var yBegin = centerY - hh; + var yEnd = centerY + hh; + var curveConstants = getBarrelCurveConstants(width3, height2); + var hOffset = curveConstants.heightOffset; + var wOffset = curveConstants.widthOffset; + var ctrlPtXOffset = curveConstants.ctrlPtOffsetPct * width3; + var pts2 = { + topLeft: [xBegin, yBegin + hOffset, xBegin + ctrlPtXOffset, yBegin, xBegin + wOffset, yBegin], + topRight: [xEnd - wOffset, yBegin, xEnd - ctrlPtXOffset, yBegin, xEnd, yBegin + hOffset], + bottomRight: [xEnd, yEnd - hOffset, xEnd - ctrlPtXOffset, yEnd, xEnd - wOffset, yEnd], + bottomLeft: [xBegin + wOffset, yEnd, xBegin + ctrlPtXOffset, yEnd, xBegin, yEnd - hOffset] + }; + pts2.topLeft.isTop = true; + pts2.topRight.isTop = true; + pts2.bottomLeft.isBottom = true; + pts2.bottomRight.isBottom = true; + return pts2; + }, "generateBarrelBezierPts"), + checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y6, padding2, width3, height2, centerX, centerY, cornerRadius) { + var curveConstants = getBarrelCurveConstants(width3, height2); + var hOffset = curveConstants.heightOffset; + var wOffset = curveConstants.widthOffset; + if (pointInsidePolygon(x5, y6, this.points, centerX, centerY, width3, height2 - 2 * hOffset, [0, -1], padding2)) { + return true; + } + if (pointInsidePolygon(x5, y6, this.points, centerX, centerY, width3 - 2 * wOffset, height2, [0, -1], padding2)) { + return true; + } + var barrelCurvePts = this.generateBarrelBezierPts(width3, height2, centerX, centerY); + var getCurveT = /* @__PURE__ */ __name(function getCurveT2(x6, y7, curvePts) { + var x0 = curvePts[4]; + var x1 = curvePts[2]; + var x22 = curvePts[0]; + var y02 = curvePts[5]; + var y23 = curvePts[1]; + var xMin = Math.min(x0, x22); + var xMax = Math.max(x0, x22); + var yMin = Math.min(y02, y23); + var yMax = Math.max(y02, y23); + if (xMin <= x6 && x6 <= xMax && yMin <= y7 && y7 <= yMax) { + var coeff = bezierPtsToQuadCoeff(x0, x1, x22); + var roots = solveQuadratic(coeff[0], coeff[1], coeff[2], x6); + var validRoots = roots.filter(function(r2) { + return 0 <= r2 && r2 <= 1; }); - } - return this; - }, "reject"), - // retain first n characters of the match - less: /* @__PURE__ */ __name(function(n2) { - this.unput(this.match.slice(n2)); - }, "less"), - // displays already matched input, i.e. for error messages - pastInput: /* @__PURE__ */ __name(function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, "pastInput"), - // displays upcoming input, i.e. for error messages - upcomingInput: /* @__PURE__ */ __name(function() { - var next3 = this.match; - if (next3.length < 20) { - next3 += this._input.substr(0, 20 - next3.length); - } - return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, "upcomingInput"), - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: /* @__PURE__ */ __name(function() { - var pre = this.pastInput(); - var c3 = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c3 + "^"; - }, "showPosition"), - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { - var token2, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); - } - } - lines = match2[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length - }; - this.yytext += match2[0]; - this.match += match2[0]; - this.matches = match2; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match2[0].length); - this.matched += match2[0]; - token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token2) { - return token2; - } else if (this._backtrack) { - for (var k2 in backup) { - this[k2] = backup[k2]; - } - return false; - } - return false; - }, "test_match"), - // return next match in input - next: /* @__PURE__ */ __name(function() { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; - } - var token2, match2, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; - } - var rules = this._currentRules(); - for (var i2 = 0; i2 < rules.length; i2++) { - tempMatch = this._input.match(this.rules[rules[i2]]); - if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { - match2 = tempMatch; - index = i2; - if (this.options.backtrack_lexer) { - token2 = this.test_match(tempMatch, rules[i2]); - if (token2 !== false) { - return token2; - } else if (this._backtrack) { - match2 = false; - continue; - } else { - return false; - } - } else if (!this.options.flex) { - break; - } - } - } - if (match2) { - token2 = this.test_match(match2, rules[index]); - if (token2 !== false) { - return token2; + if (validRoots.length > 0) { + return validRoots[0]; } - return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, "next"), - // return next match that has a token - lex: /* @__PURE__ */ __name(function lex() { - var r2 = this.next(); - if (r2) { - return r2; - } else { - return this.lex(); - } - }, "lex"), - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: /* @__PURE__ */ __name(function begin(condition) { - this.conditionStack.push(condition); - }, "begin"), - // pop the previously active lexer condition state off the condition stack - popState: /* @__PURE__ */ __name(function popState() { - var n2 = this.conditionStack.length - 1; - if (n2 > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; } - }, "popState"), - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: /* @__PURE__ */ __name(function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; + return null; + }, "getCurveT"); + var curveRegions = Object.keys(barrelCurvePts); + for (var i2 = 0; i2 < curveRegions.length; i2++) { + var corner = curveRegions[i2]; + var cornerPts = barrelCurvePts[corner]; + var t4 = getCurveT(x5, y6, cornerPts); + if (t4 == null) { + continue; } - }, "_currentRules"), - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: /* @__PURE__ */ __name(function topState(n2) { - n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); - if (n2 >= 0) { - return this.conditionStack[n2]; - } else { - return "INITIAL"; + var y0 = cornerPts[5]; + var y1 = cornerPts[3]; + var y22 = cornerPts[1]; + var bezY = qbezierAt(y0, y1, y22, t4); + if (cornerPts.isTop && bezY <= y6) { + return true; } - }, "topState"), - // alias for begin(condition) - pushState: /* @__PURE__ */ __name(function pushState(condition) { - this.begin(condition); - }, "pushState"), - // return the number of states currently on the stack - stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { - return this.conditionStack.length; - }, "stateStackSize"), - options: { "case-insensitive": true }, - performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - this.begin("open_directive"); - return "open_directive"; - break; - case 1: - this.begin("acc_title"); - return 31; - break; - case 2: - this.popState(); - return "acc_title_value"; - break; - case 3: - this.begin("acc_descr"); - return 33; - break; - case 4: - this.popState(); - return "acc_descr_value"; - break; - case 5: - this.begin("acc_descr_multiline"); - break; - case 6: - this.popState(); - break; - case 7: - return "acc_descr_multiline_value"; - break; - case 8: - break; - case 9: - break; - case 10: - break; - case 11: - return 10; - break; - case 12: - break; - case 13: - break; - case 14: - this.begin("href"); - break; - case 15: - this.popState(); - break; - case 16: - return 43; - break; - case 17: - this.begin("callbackname"); - break; - case 18: - this.popState(); - break; - case 19: - this.popState(); - this.begin("callbackargs"); - break; - case 20: - return 41; - break; - case 21: - this.popState(); - break; - case 22: - return 42; - break; - case 23: - this.begin("click"); - break; - case 24: - this.popState(); - break; - case 25: - return 40; - break; - case 26: - return 4; - break; - case 27: - return 22; - break; - case 28: - return 23; - break; - case 29: - return 24; - break; - case 30: - return 25; - break; - case 31: - return 26; - break; - case 32: - return 28; - break; - case 33: - return 27; - break; - case 34: - return 29; - break; - case 35: - return 12; - break; - case 36: - return 13; - break; - case 37: - return 14; - break; - case 38: - return 15; - break; - case 39: - return 16; - break; - case 40: - return 17; - break; - case 41: - return 18; - break; - case 42: - return 20; - break; - case 43: - return 21; - break; - case 44: - return "date"; - break; - case 45: - return 30; - break; - case 46: - return "accDescription"; - break; - case 47: - return 36; - break; - case 48: - return 38; - break; - case 49: - return 39; - break; - case 50: - return ":"; - break; - case 51: - return 6; - break; - case 52: - return "INVALID"; - break; + if (cornerPts.isBottom && y6 <= bezY) { + return true; } - }, "anonymous"), - rules: [/^(?:%%\{)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:%%(?!\{)*[^\n]*)/i, /^(?:[^\}]%%*[^\n]*)/i, /^(?:%%*[^\n]*[\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:%[^\n]*)/i, /^(?:href[\s]+["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:call[\s]+)/i, /^(?:\([\s]*\))/i, /^(?:\()/i, /^(?:[^(]*)/i, /^(?:\))/i, /^(?:[^)]*)/i, /^(?:click[\s]+)/i, /^(?:[\s\n])/i, /^(?:[^\s\n]*)/i, /^(?:gantt\b)/i, /^(?:dateFormat\s[^#\n;]+)/i, /^(?:inclusiveEndDates\b)/i, /^(?:topAxis\b)/i, /^(?:axisFormat\s[^#\n;]+)/i, /^(?:tickInterval\s[^#\n;]+)/i, /^(?:includes\s[^#\n;]+)/i, /^(?:excludes\s[^#\n;]+)/i, /^(?:todayMarker\s[^\n;]+)/i, /^(?:weekday\s+monday\b)/i, /^(?:weekday\s+tuesday\b)/i, /^(?:weekday\s+wednesday\b)/i, /^(?:weekday\s+thursday\b)/i, /^(?:weekday\s+friday\b)/i, /^(?:weekday\s+saturday\b)/i, /^(?:weekday\s+sunday\b)/i, /^(?:weekend\s+friday\b)/i, /^(?:weekend\s+saturday\b)/i, /^(?:\d\d\d\d-\d\d-\d\d\b)/i, /^(?:title\s[^\n]+)/i, /^(?:accDescription\s[^#\n;]+)/i, /^(?:section\s[^\n]+)/i, /^(?:[^:\n]+)/i, /^(?::[^#\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i], - conditions: { "acc_descr_multiline": { "rules": [6, 7], "inclusive": false }, "acc_descr": { "rules": [4], "inclusive": false }, "acc_title": { "rules": [2], "inclusive": false }, "callbackargs": { "rules": [21, 22], "inclusive": false }, "callbackname": { "rules": [18, 19, 20], "inclusive": false }, "href": { "rules": [15, 16], "inclusive": false }, "click": { "rules": [24, 25], "inclusive": false }, "INITIAL": { "rules": [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 17, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52], "inclusive": true } } - }; - return lexer3; - }(); - parser24.lexer = lexer2; - function Parser3() { - this.yy = {}; - } - __name(Parser3, "Parser"); - Parser3.prototype = parser24; - parser24.Parser = Parser3; - return new Parser3(); - }(); - parser6.parser = parser6; - gantt_default = parser6; - } - }); - - // ../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/isoWeek.js - var require_isoWeek = __commonJS({ - "../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/isoWeek.js"(exports2, module2) { - "use strict"; - !function(e3, t4) { - "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = t4() : "function" == typeof define && define.amd ? define(t4) : (e3 = "undefined" != typeof globalThis ? globalThis : e3 || self).dayjs_plugin_isoWeek = t4(); - }(exports2, function() { - "use strict"; - var e3 = "day"; - return function(t4, i2, s2) { - var a2 = /* @__PURE__ */ __name(function(t5) { - return t5.add(4 - t5.isoWeekday(), e3); - }, "a"), d2 = i2.prototype; - d2.isoWeekYear = function() { - return a2(this).year(); - }, d2.isoWeek = function(t5) { - if (!this.$utils().u(t5)) return this.add(7 * (t5 - this.isoWeek()), e3); - var i3, d3, n3, o2, r2 = a2(this), u2 = (i3 = this.isoWeekYear(), d3 = this.$u, n3 = (d3 ? s2.utc : s2)().year(i3).startOf("year"), o2 = 4 - n3.isoWeekday(), n3.isoWeekday() > 4 && (o2 += 7), n3.add(o2, e3)); - return r2.diff(u2, "week") + 1; - }, d2.isoWeekday = function(e4) { - return this.$utils().u(e4) ? this.day() || 7 : this.day(this.day() % 7 ? e4 : e4 - 7); - }; - var n2 = d2.startOf; - d2.startOf = function(e4, t5) { - var i3 = this.$utils(), s3 = !!i3.u(t5) || t5; - return "isoweek" === i3.p(e4) ? s3 ? this.date(this.date() - (this.isoWeekday() - 1)).startOf("day") : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf("day") : n2.bind(this)(e4, t5); - }; + } + return false; + }, "checkPoint") }; - }); - } - }); - - // ../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/customParseFormat.js - var require_customParseFormat = __commonJS({ - "../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/customParseFormat.js"(exports2, module2) { - "use strict"; - !function(e3, t4) { - "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = t4() : "function" == typeof define && define.amd ? define(t4) : (e3 = "undefined" != typeof globalThis ? globalThis : e3 || self).dayjs_plugin_customParseFormat = t4(); - }(exports2, function() { - "use strict"; - var e3 = { 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" }, t4 = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g, n2 = /\d/, r2 = /\d\d/, i2 = /\d\d?/, o2 = /\d*[^-_:/,()\s\d]+/, s2 = {}, a2 = /* @__PURE__ */ __name(function(e4) { - return (e4 = +e4) + (e4 > 68 ? 1900 : 2e3); - }, "a"); - var f2 = /* @__PURE__ */ __name(function(e4) { - return function(t5) { - this[e4] = +t5; - }; - }, "f"), h2 = [/[+-]\d\d:?(\d\d)?|Z/, function(e4) { - (this.zone || (this.zone = {})).offset = function(e6) { - if (!e6) return 0; - if ("Z" === e6) return 0; - var t5 = e6.match(/([+-]|\d\d)/g), n3 = 60 * t5[1] + (+t5[2] || 0); - return 0 === n3 ? 0 : "+" === t5[0] ? -n3 : n3; - }(e4); - }], u2 = /* @__PURE__ */ __name(function(e4) { - var t5 = s2[e4]; - return t5 && (t5.indexOf ? t5 : t5.s.concat(t5.f)); - }, "u"), d2 = /* @__PURE__ */ __name(function(e4, t5) { - var n3, r3 = s2.meridiem; - if (r3) { - for (var i3 = 1; i3 <= 24; i3 += 1) if (e4.indexOf(r3(i3, 0, t5)) > -1) { - n3 = i3 > 12; - break; + }; + BRp$2.generateBottomRoundrectangle = function() { + return this.nodeShapes["bottom-round-rectangle"] = this.nodeShapes["bottomroundrectangle"] = { + renderer: this, + name: "bottom-round-rectangle", + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: /* @__PURE__ */ __name(function draw26(context, centerX, centerY, width3, height2, cornerRadius) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width3, height2, this.points, cornerRadius); + }, "draw"), + intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y6, padding2, cornerRadius) { + var topStartX = nodeX - (width3 / 2 + padding2); + var topStartY = nodeY - (height2 / 2 + padding2); + var topEndY = topStartY; + var topEndX = nodeX + (width3 / 2 + padding2); + var topIntersections = finiteLinesIntersect(x5, y6, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); + if (topIntersections.length > 0) { + return topIntersections; } - } else n3 = e4 === (t5 ? "pm" : "PM"); - return n3; - }, "d"), c3 = { A: [o2, function(e4) { - this.afternoon = d2(e4, false); - }], a: [o2, function(e4) { - this.afternoon = d2(e4, true); - }], Q: [n2, function(e4) { - this.month = 3 * (e4 - 1) + 1; - }], S: [n2, function(e4) { - this.milliseconds = 100 * +e4; - }], SS: [r2, function(e4) { - this.milliseconds = 10 * +e4; - }], SSS: [/\d{3}/, function(e4) { - this.milliseconds = +e4; - }], s: [i2, f2("seconds")], ss: [i2, f2("seconds")], m: [i2, f2("minutes")], mm: [i2, f2("minutes")], H: [i2, f2("hours")], h: [i2, f2("hours")], HH: [i2, f2("hours")], hh: [i2, f2("hours")], D: [i2, f2("day")], DD: [r2, f2("day")], Do: [o2, function(e4) { - var t5 = s2.ordinal, n3 = e4.match(/\d+/); - if (this.day = n3[0], t5) for (var r3 = 1; r3 <= 31; r3 += 1) t5(r3).replace(/\[|\]/g, "") === e4 && (this.day = r3); - }], w: [i2, f2("week")], ww: [r2, f2("week")], M: [i2, f2("month")], MM: [r2, f2("month")], MMM: [o2, function(e4) { - var t5 = u2("months"), n3 = (u2("monthsShort") || t5.map(function(e6) { - return e6.slice(0, 3); - })).indexOf(e4) + 1; - if (n3 < 1) throw new Error(); - this.month = n3 % 12 || n3; - }], MMMM: [o2, function(e4) { - var t5 = u2("months").indexOf(e4) + 1; - if (t5 < 1) throw new Error(); - this.month = t5 % 12 || t5; - }], Y: [/[+-]?\d+/, f2("year")], YY: [r2, function(e4) { - this.year = a2(e4); - }], YYYY: [/\d{4}/, f2("year")], Z: h2, ZZ: h2 }; - function l2(n3) { - var r3, i3; - r3 = n3, i3 = s2 && s2.formats; - for (var o3 = (n3 = r3.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, function(t5, n4, r4) { - var o4 = r4 && r4.toUpperCase(); - return n4 || i3[r4] || e3[r4] || i3[o4].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function(e4, t6, n5) { - return t6 || n5.slice(1); - }); - })).match(t4), a3 = o3.length, f3 = 0; f3 < a3; f3 += 1) { - var h3 = o3[f3], u3 = c3[h3], d3 = u3 && u3[0], l3 = u3 && u3[1]; - o3[f3] = l3 ? { regex: d3, parser: l3 } : h3.replace(/^\[|\]$/g, ""); - } - return function(e4) { - for (var t5 = {}, n4 = 0, r4 = 0; n4 < a3; n4 += 1) { - var i4 = o3[n4]; - if ("string" == typeof i4) r4 += i4.length; - else { - var s3 = i4.regex, f4 = i4.parser, h4 = e4.slice(r4), u4 = s3.exec(h4)[0]; - f4.call(t5, u4), e4 = e4.replace(u4, ""); - } + return roundRectangleIntersectLine(x5, y6, nodeX, nodeY, width3, height2, padding2, cornerRadius); + }, "intersectLine"), + checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y6, padding2, width3, height2, centerX, centerY, cornerRadius) { + cornerRadius = cornerRadius === "auto" ? getRoundRectangleRadius(width3, height2) : cornerRadius; + var diam = 2 * cornerRadius; + if (pointInsidePolygon(x5, y6, this.points, centerX, centerY, width3, height2 - diam, [0, -1], padding2)) { + return true; } - return function(e6) { - var t6 = e6.afternoon; - if (void 0 !== t6) { - var n5 = e6.hours; - t6 ? n5 < 12 && (e6.hours += 12) : 12 === n5 && (e6.hours = 0), delete e6.afternoon; - } - }(t5), t5; - }; - } - __name(l2, "l"); - return function(e4, t5, n3) { - n3.p.customParseFormat = true, e4 && e4.parseTwoDigitYear && (a2 = e4.parseTwoDigitYear); - var r3 = t5.prototype, i3 = r3.parse; - r3.parse = function(e6) { - var t6 = e6.date, r4 = e6.utc, o3 = e6.args; - this.$u = r4; - var a3 = o3[1]; - if ("string" == typeof a3) { - var f3 = true === o3[2], h3 = true === o3[3], u3 = f3 || h3, d3 = o3[2]; - h3 && (d3 = o3[2]), s2 = this.$locale(), !f3 && d3 && (s2 = n3.Ls[d3]), this.$d = function(e7, t7, n4, r5) { - try { - if (["x", "X"].indexOf(t7) > -1) return new Date(("X" === t7 ? 1e3 : 1) * e7); - var i4 = l2(t7)(e7), o4 = i4.year, s3 = i4.month, a4 = i4.day, f4 = i4.hours, h4 = i4.minutes, u4 = i4.seconds, d4 = i4.milliseconds, c5 = i4.zone, m3 = i4.week, M3 = /* @__PURE__ */ new Date(), Y3 = a4 || (o4 || s3 ? 1 : M3.getDate()), p3 = o4 || M3.getFullYear(), v3 = 0; - o4 && !s3 || (v3 = s3 > 0 ? s3 - 1 : M3.getMonth()); - var D3, w3 = f4 || 0, g2 = h4 || 0, y5 = u4 || 0, L2 = d4 || 0; - return c5 ? new Date(Date.UTC(p3, v3, Y3, w3, g2, y5, L2 + 60 * c5.offset * 1e3)) : n4 ? new Date(Date.UTC(p3, v3, Y3, w3, g2, y5, L2)) : (D3 = new Date(p3, v3, Y3, w3, g2, y5, L2), m3 && (D3 = r5(D3).week(m3).toDate()), D3); - } catch (e8) { - return /* @__PURE__ */ new Date(""); - } - }(t6, a3, r4, n3), this.init(), d3 && true !== d3 && (this.$L = this.locale(d3).$L), u3 && t6 != this.format(a3) && (this.$d = /* @__PURE__ */ new Date("")), s2 = {}; - } else if (a3 instanceof Array) for (var c4 = a3.length, m2 = 1; m2 <= c4; m2 += 1) { - o3[1] = a3[m2 - 1]; - var M2 = n3.apply(this, o3); - if (M2.isValid()) { - this.$d = M2.$d, this.$L = M2.$L, this.init(); - break; - } - m2 === c4 && (this.$d = /* @__PURE__ */ new Date("")); + if (pointInsidePolygon(x5, y6, this.points, centerX, centerY, width3 - diam, height2, [0, -1], padding2)) { + return true; } - else i3.call(this, e6); - }; - }; - }); - } - }); - - // ../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/advancedFormat.js - var require_advancedFormat = __commonJS({ - "../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/advancedFormat.js"(exports2, module2) { - "use strict"; - !function(e3, t4) { - "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = t4() : "function" == typeof define && define.amd ? define(t4) : (e3 = "undefined" != typeof globalThis ? globalThis : e3 || self).dayjs_plugin_advancedFormat = t4(); - }(exports2, function() { - "use strict"; - return function(e3, t4) { - var r2 = t4.prototype, n2 = r2.format; - r2.format = function(e4) { - var t5 = this, r3 = this.$locale(); - if (!this.isValid()) return n2.bind(this)(e4); - var s2 = this.$utils(), a2 = (e4 || "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(e6) { - switch (e6) { - case "Q": - return Math.ceil((t5.$M + 1) / 3); - case "Do": - return r3.ordinal(t5.$D); - case "gggg": - return t5.weekYear(); - case "GGGG": - return t5.isoWeekYear(); - case "wo": - return r3.ordinal(t5.week(), "W"); - case "w": - case "ww": - return s2.s(t5.week(), "w" === e6 ? 1 : 2, "0"); - case "W": - case "WW": - return s2.s(t5.isoWeek(), "W" === e6 ? 1 : 2, "0"); - case "k": - case "kk": - return s2.s(String(0 === t5.$H ? 24 : t5.$H), "k" === e6 ? 1 : 2, "0"); - case "X": - return Math.floor(t5.$d.getTime() / 1e3); - case "x": - return t5.$d.getTime(); - case "z": - return "[" + t5.offsetName() + "]"; - case "zzz": - return "[" + t5.offsetName("long") + "]"; - default: - return e6; - } - }); - return n2.bind(this)(a2); - }; + var outerWidth = width3 / 2 + 2 * padding2; + var outerHeight = height2 / 2 + 2 * padding2; + var points = [centerX - outerWidth, centerY - outerHeight, centerX - outerWidth, centerY, centerX + outerWidth, centerY, centerX + outerWidth, centerY - outerHeight]; + if (pointInsidePolygonPoints(x5, y6, points)) { + return true; + } + if (checkInEllipse(x5, y6, diam, diam, centerX + width3 / 2 - cornerRadius, centerY + height2 / 2 - cornerRadius, padding2)) { + return true; + } + if (checkInEllipse(x5, y6, diam, diam, centerX - width3 / 2 + cornerRadius, centerY + height2 / 2 - cornerRadius, padding2)) { + return true; + } + return false; + }, "checkPoint") }; - }); - } - }); - - // src/diagrams/gantt/ganttDb.js - function getTaskTags(data6, task, tags2) { - let matchFound = true; - while (matchFound) { - matchFound = false; - tags2.forEach(function(t4) { - const pattern = "^\\s*" + t4 + "\\s*$"; - const regex2 = new RegExp(pattern); - if (data6[0].match(regex2)) { - task[t4] = true; - data6.shift(1); - matchFound = true; + }; + BRp$2.registerNodeShapes = function() { + var nodeShapes = this.nodeShapes = {}; + var renderer10 = this; + this.generateEllipse(); + this.generatePolygon("triangle", generateUnitNgonPointsFitToSquare(3, 0)); + this.generateRoundPolygon("round-triangle", generateUnitNgonPointsFitToSquare(3, 0)); + this.generatePolygon("rectangle", generateUnitNgonPointsFitToSquare(4, 0)); + nodeShapes["square"] = nodeShapes["rectangle"]; + this.generateRoundRectangle(); + this.generateCutRectangle(); + this.generateBarrel(); + this.generateBottomRoundrectangle(); + { + var diamondPoints = [0, 1, 1, 0, 0, -1, -1, 0]; + this.generatePolygon("diamond", diamondPoints); + this.generateRoundPolygon("round-diamond", diamondPoints); } - }); - } - } - var import_sanitize_url4, import_dayjs2, import_isoWeek, import_customParseFormat, import_advancedFormat, WEEKEND_START_DAY, dateFormat, axisFormat, tickInterval, todayMarker, includes2, excludes, links, sections, tasks, currentSection, displayMode, tags, funs, inclusiveEndDates, topAxis, weekday, weekend, lastOrder, clear9, setAxisFormat, getAxisFormat, setTickInterval, getTickInterval, setTodayMarker, getTodayMarker, setDateFormat, enableInclusiveEndDates, endDatesAreInclusive, enableTopAxis, topAxisEnabled, setDisplayMode, getDisplayMode, getDateFormat, setIncludes, getIncludes, setExcludes, getExcludes, getLinks, addSection, getSections, getTasks, isInvalidDate, setWeekday, getWeekday, setWeekend, checkTaskDates, fixTaskDates, getStartDate, parseDuration, getEndDate, taskCnt, parseId, compileData, parseData, lastTask, lastTaskID, rawTasks, taskDb, addTask, findTaskById, addTaskOrg, compileTasks, setLink, setClass, setClickFun, pushFun, setClickEvent, bindFunctions, ganttDb_default; - var init_ganttDb = __esm({ - "src/diagrams/gantt/ganttDb.js"() { - "use strict"; - import_sanitize_url4 = __toESM(require_dist(), 1); - import_dayjs2 = __toESM(require_dayjs_min(), 1); - import_isoWeek = __toESM(require_isoWeek(), 1); - import_customParseFormat = __toESM(require_customParseFormat(), 1); - import_advancedFormat = __toESM(require_advancedFormat(), 1); - init_logger(); - init_diagramAPI(); - init_utils2(); - init_commonDb(); - import_dayjs2.default.extend(import_isoWeek.default); - import_dayjs2.default.extend(import_customParseFormat.default); - import_dayjs2.default.extend(import_advancedFormat.default); - WEEKEND_START_DAY = { friday: 5, saturday: 6 }; - dateFormat = ""; - axisFormat = ""; - tickInterval = void 0; - todayMarker = ""; - includes2 = []; - excludes = []; - links = /* @__PURE__ */ new Map(); - sections = []; - tasks = []; - currentSection = ""; - displayMode = ""; - tags = ["active", "done", "crit", "milestone"]; - funs = []; - inclusiveEndDates = false; - topAxis = false; - weekday = "sunday"; - weekend = "saturday"; - lastOrder = 0; - clear9 = /* @__PURE__ */ __name(function() { - sections = []; - tasks = []; - currentSection = ""; - funs = []; - taskCnt = 0; - lastTask = void 0; - lastTaskID = void 0; - rawTasks = []; - dateFormat = ""; - axisFormat = ""; - displayMode = ""; - tickInterval = void 0; - todayMarker = ""; - includes2 = []; - excludes = []; - inclusiveEndDates = false; - topAxis = false; - lastOrder = 0; - links = /* @__PURE__ */ new Map(); - clear(); - weekday = "sunday"; - weekend = "saturday"; - }, "clear"); - setAxisFormat = /* @__PURE__ */ __name(function(txt) { - axisFormat = txt; - }, "setAxisFormat"); - getAxisFormat = /* @__PURE__ */ __name(function() { - return axisFormat; - }, "getAxisFormat"); - setTickInterval = /* @__PURE__ */ __name(function(txt) { - tickInterval = txt; - }, "setTickInterval"); - getTickInterval = /* @__PURE__ */ __name(function() { - return tickInterval; - }, "getTickInterval"); - setTodayMarker = /* @__PURE__ */ __name(function(txt) { - todayMarker = txt; - }, "setTodayMarker"); - getTodayMarker = /* @__PURE__ */ __name(function() { - return todayMarker; - }, "getTodayMarker"); - setDateFormat = /* @__PURE__ */ __name(function(txt) { - dateFormat = txt; - }, "setDateFormat"); - enableInclusiveEndDates = /* @__PURE__ */ __name(function() { - inclusiveEndDates = true; - }, "enableInclusiveEndDates"); - endDatesAreInclusive = /* @__PURE__ */ __name(function() { - return inclusiveEndDates; - }, "endDatesAreInclusive"); - enableTopAxis = /* @__PURE__ */ __name(function() { - topAxis = true; - }, "enableTopAxis"); - topAxisEnabled = /* @__PURE__ */ __name(function() { - return topAxis; - }, "topAxisEnabled"); - setDisplayMode = /* @__PURE__ */ __name(function(txt) { - displayMode = txt; - }, "setDisplayMode"); - getDisplayMode = /* @__PURE__ */ __name(function() { - return displayMode; - }, "getDisplayMode"); - getDateFormat = /* @__PURE__ */ __name(function() { - return dateFormat; - }, "getDateFormat"); - setIncludes = /* @__PURE__ */ __name(function(txt) { - includes2 = txt.toLowerCase().split(/[\s,]+/); - }, "setIncludes"); - getIncludes = /* @__PURE__ */ __name(function() { - return includes2; - }, "getIncludes"); - setExcludes = /* @__PURE__ */ __name(function(txt) { - excludes = txt.toLowerCase().split(/[\s,]+/); - }, "setExcludes"); - getExcludes = /* @__PURE__ */ __name(function() { - return excludes; - }, "getExcludes"); - getLinks = /* @__PURE__ */ __name(function() { - return links; - }, "getLinks"); - addSection = /* @__PURE__ */ __name(function(txt) { - currentSection = txt; - sections.push(txt); - }, "addSection"); - getSections = /* @__PURE__ */ __name(function() { - return sections; - }, "getSections"); - getTasks = /* @__PURE__ */ __name(function() { - let allItemsProcessed = compileTasks(); - const maxDepth = 10; - let iterationCount = 0; - while (!allItemsProcessed && iterationCount < maxDepth) { - allItemsProcessed = compileTasks(); - iterationCount++; + this.generatePolygon("pentagon", generateUnitNgonPointsFitToSquare(5, 0)); + this.generateRoundPolygon("round-pentagon", generateUnitNgonPointsFitToSquare(5, 0)); + this.generatePolygon("hexagon", generateUnitNgonPointsFitToSquare(6, 0)); + this.generateRoundPolygon("round-hexagon", generateUnitNgonPointsFitToSquare(6, 0)); + this.generatePolygon("heptagon", generateUnitNgonPointsFitToSquare(7, 0)); + this.generateRoundPolygon("round-heptagon", generateUnitNgonPointsFitToSquare(7, 0)); + this.generatePolygon("octagon", generateUnitNgonPointsFitToSquare(8, 0)); + this.generateRoundPolygon("round-octagon", generateUnitNgonPointsFitToSquare(8, 0)); + var star5Points = new Array(20); + { + var outerPoints = generateUnitNgonPoints(5, 0); + var innerPoints = generateUnitNgonPoints(5, Math.PI / 5); + var innerRadius = 0.5 * (3 - Math.sqrt(5)); + innerRadius *= 1.57; + for (var i2 = 0; i2 < innerPoints.length / 2; i2++) { + innerPoints[i2 * 2] *= innerRadius; + innerPoints[i2 * 2 + 1] *= innerRadius; + } + for (var i2 = 0; i2 < 20 / 4; i2++) { + star5Points[i2 * 4] = outerPoints[i2 * 2]; + star5Points[i2 * 4 + 1] = outerPoints[i2 * 2 + 1]; + star5Points[i2 * 4 + 2] = innerPoints[i2 * 2]; + star5Points[i2 * 4 + 3] = innerPoints[i2 * 2 + 1]; + } } - tasks = rawTasks; - return tasks; - }, "getTasks"); - isInvalidDate = /* @__PURE__ */ __name(function(date2, dateFormat2, excludes2, includes3) { - if (includes3.includes(date2.format(dateFormat2.trim()))) { - return false; + star5Points = fitPolygonToSquare(star5Points); + this.generatePolygon("star", star5Points); + this.generatePolygon("vee", [-1, -1, 0, -0.333, 1, -1, 0, 1]); + this.generatePolygon("rhomboid", [-1, -1, 0.333, -1, 1, 1, -0.333, 1]); + this.generatePolygon("right-rhomboid", [-0.333, -1, 1, -1, 0.333, 1, -1, 1]); + this.nodeShapes["concavehexagon"] = this.generatePolygon("concave-hexagon", [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]); + { + var tagPoints = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1]; + this.generatePolygon("tag", tagPoints); + this.generateRoundPolygon("round-tag", tagPoints); } - if (excludes2.includes("weekends") && (date2.isoWeekday() === WEEKEND_START_DAY[weekend] || date2.isoWeekday() === WEEKEND_START_DAY[weekend] + 1)) { - return true; + nodeShapes.makePolygon = function(points) { + var key = points.join("$"); + var name = "polygon-" + key; + var shape; + if (shape = this[name]) { + return shape; + } + return renderer10.generatePolygon(name, points); + }; + }; + BRp$1 = {}; + BRp$1.timeToRender = function() { + return this.redrawTotalTime / this.redrawCount; + }; + BRp$1.redraw = function(options2) { + options2 = options2 || staticEmptyObject(); + var r2 = this; + if (r2.averageRedrawTime === void 0) { + r2.averageRedrawTime = 0; } - if (excludes2.includes(date2.format("dddd").toLowerCase())) { - return true; + if (r2.lastRedrawTime === void 0) { + r2.lastRedrawTime = 0; } - return excludes2.includes(date2.format(dateFormat2.trim())); - }, "isInvalidDate"); - setWeekday = /* @__PURE__ */ __name(function(txt) { - weekday = txt; - }, "setWeekday"); - getWeekday = /* @__PURE__ */ __name(function() { - return weekday; - }, "getWeekday"); - setWeekend = /* @__PURE__ */ __name(function(startDay) { - weekend = startDay; - }, "setWeekend"); - checkTaskDates = /* @__PURE__ */ __name(function(task, dateFormat2, excludes2, includes3) { - if (!excludes2.length || task.manualEndTime) { + if (r2.lastDrawTime === void 0) { + r2.lastDrawTime = 0; + } + r2.requestedFrame = true; + r2.renderOptions = options2; + }; + BRp$1.beforeRender = function(fn3, priority3) { + if (this.destroyed) { return; } - let startTime; - if (task.startTime instanceof Date) { - startTime = (0, import_dayjs2.default)(task.startTime); - } else { - startTime = (0, import_dayjs2.default)(task.startTime, dateFormat2, true); + if (priority3 == null) { + error("Priority is not optional for beforeRender"); } - startTime = startTime.add(1, "d"); - let originalEndTime; - if (task.endTime instanceof Date) { - originalEndTime = (0, import_dayjs2.default)(task.endTime); + var cbs = this.beforeRenderCallbacks; + cbs.push({ + fn: fn3, + priority: priority3 + }); + cbs.sort(function(a2, b3) { + return b3.priority - a2.priority; + }); + }; + beforeRenderCallbacks = /* @__PURE__ */ __name(function beforeRenderCallbacks2(r2, willDraw, startTime) { + var cbs = r2.beforeRenderCallbacks; + for (var i2 = 0; i2 < cbs.length; i2++) { + cbs[i2].fn(willDraw, startTime); + } + }, "beforeRenderCallbacks"); + BRp$1.startRenderLoop = function() { + var r2 = this; + var cy = r2.cy; + if (r2.renderLoopStarted) { + return; } else { - originalEndTime = (0, import_dayjs2.default)(task.endTime, dateFormat2, true); + r2.renderLoopStarted = true; } - const [fixedEndTime, renderEndTime] = fixTaskDates( - startTime, - originalEndTime, - dateFormat2, - excludes2, - includes3 - ); - task.endTime = fixedEndTime.toDate(); - task.renderEndTime = renderEndTime; - }, "checkTaskDates"); - fixTaskDates = /* @__PURE__ */ __name(function(startTime, endTime, dateFormat2, excludes2, includes3) { - let invalid = false; - let renderEndTime = null; - while (startTime <= endTime) { - if (!invalid) { - renderEndTime = endTime.toDate(); - } - invalid = isInvalidDate(startTime, dateFormat2, excludes2, includes3); - if (invalid) { - endTime = endTime.add(1, "d"); + var _renderFn = /* @__PURE__ */ __name(function renderFn(requestTime) { + if (r2.destroyed) { + return; } - startTime = startTime.add(1, "d"); - } - return [endTime, renderEndTime]; - }, "fixTaskDates"); - getStartDate = /* @__PURE__ */ __name(function(prevTime, dateFormat2, str2) { - str2 = str2.trim(); - const afterRePattern = /^after\s+(?[\d\w- ]+)/; - const afterStatement = afterRePattern.exec(str2); - if (afterStatement !== null) { - let latestTask = null; - for (const id29 of afterStatement.groups.ids.split(" ")) { - let task = findTaskById(id29); - if (task !== void 0 && (!latestTask || task.endTime > latestTask.endTime)) { - latestTask = task; + if (cy.batching()) ; + else if (r2.requestedFrame && !r2.skipFrame) { + beforeRenderCallbacks(r2, true, requestTime); + var startTime = performanceNow(); + r2.render(r2.renderOptions); + var endTime = r2.lastDrawTime = performanceNow(); + if (r2.averageRedrawTime === void 0) { + r2.averageRedrawTime = endTime - startTime; + } + if (r2.redrawCount === void 0) { + r2.redrawCount = 0; + } + r2.redrawCount++; + if (r2.redrawTotalTime === void 0) { + r2.redrawTotalTime = 0; } + var duration = endTime - startTime; + r2.redrawTotalTime += duration; + r2.lastRedrawTime = duration; + r2.averageRedrawTime = r2.averageRedrawTime / 2 + duration / 2; + r2.requestedFrame = false; + } else { + beforeRenderCallbacks(r2, false, requestTime); } - if (latestTask) { - return latestTask.endTime; + r2.skipFrame = false; + requestAnimationFrame2(_renderFn); + }, "renderFn"); + requestAnimationFrame2(_renderFn); + }; + BaseRenderer = /* @__PURE__ */ __name(function BaseRenderer2(options2) { + this.init(options2); + }, "BaseRenderer"); + BR = BaseRenderer; + BRp = BR.prototype; + BRp.clientFunctions = ["redrawHint", "render", "renderTo", "matchCanvasSize", "nodeShapeImpl", "arrowShapeImpl"]; + BRp.init = function(options2) { + var r2 = this; + r2.options = options2; + r2.cy = options2.cy; + var ctr = r2.container = options2.cy.container(); + var containerWindow = r2.cy.window(); + if (containerWindow) { + var document2 = containerWindow.document; + var head2 = document2.head; + var stylesheetId = "__________cytoscape_stylesheet"; + var className = "__________cytoscape_container"; + var stylesheetAlreadyExists = document2.getElementById(stylesheetId) != null; + if (ctr.className.indexOf(className) < 0) { + ctr.className = (ctr.className || "") + " " + className; } - const today = /* @__PURE__ */ new Date(); - today.setHours(0, 0, 0, 0); - return today; - } - let mDate = (0, import_dayjs2.default)(str2, dateFormat2.trim(), true); - if (mDate.isValid()) { - return mDate.toDate(); - } else { - log.debug("Invalid date:" + str2); - log.debug("With date format:" + dateFormat2.trim()); - const d2 = new Date(str2); - if (d2 === void 0 || isNaN(d2.getTime()) || // WebKit browsers can mis-parse invalid dates to be ridiculously - // huge numbers, e.g. new Date('202304') gets parsed as January 1, 202304. - // This can cause virtually infinite loops while rendering, so for the - // purposes of Gantt charts we'll just treat any date beyond 10,000 AD/BC as - // invalid. - d2.getFullYear() < -1e4 || d2.getFullYear() > 1e4) { - throw new Error("Invalid date:" + str2); + if (!stylesheetAlreadyExists) { + var stylesheet3 = document2.createElement("style"); + stylesheet3.id = stylesheetId; + stylesheet3.textContent = "." + className + " { position: relative; }"; + head2.insertBefore(stylesheet3, head2.children[0]); + } + var computedStyle = containerWindow.getComputedStyle(ctr); + var position5 = computedStyle.getPropertyValue("position"); + if (position5 === "static") { + warn("A Cytoscape container has style position:static and so can not use UI extensions properly"); } - return d2; } - }, "getStartDate"); - parseDuration = /* @__PURE__ */ __name(function(str2) { - const statement = /^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(str2.trim()); - if (statement !== null) { - return [Number.parseFloat(statement[1]), statement[2]]; + r2.selection = [void 0, void 0, void 0, void 0, 0]; + r2.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95]; + r2.hoverData = { + down: null, + last: null, + downTime: null, + triggerMode: null, + dragging: false, + initialPan: [null, null], + capture: false + }; + r2.dragData = { + possibleDragElements: [] + }; + r2.touchData = { + start: null, + capture: false, + // These 3 fields related to tap, taphold events + startPosition: [null, null, null, null, null, null], + singleTouchStartTime: null, + singleTouchMoved: true, + now: [null, null, null, null, null, null], + earlier: [null, null, null, null, null, null] + }; + r2.redraws = 0; + r2.showFps = options2.showFps; + r2.debug = options2.debug; + r2.webgl = options2.webgl; + r2.hideEdgesOnViewport = options2.hideEdgesOnViewport; + r2.textureOnViewport = options2.textureOnViewport; + r2.wheelSensitivity = options2.wheelSensitivity; + r2.motionBlurEnabled = options2.motionBlur; + r2.forcedPixelRatio = number$1(options2.pixelRatio) ? options2.pixelRatio : null; + r2.motionBlur = options2.motionBlur; + r2.motionBlurOpacity = options2.motionBlurOpacity; + r2.motionBlurTransparency = 1 - r2.motionBlurOpacity; + r2.motionBlurPxRatio = 1; + r2.mbPxRBlurry = 1; + r2.minMbLowQualFrames = 4; + r2.fullQualityMb = false; + r2.clearedForMotionBlur = []; + r2.desktopTapThreshold = options2.desktopTapThreshold; + r2.desktopTapThreshold2 = options2.desktopTapThreshold * options2.desktopTapThreshold; + r2.touchTapThreshold = options2.touchTapThreshold; + r2.touchTapThreshold2 = options2.touchTapThreshold * options2.touchTapThreshold; + r2.tapholdDuration = 500; + r2.bindings = []; + r2.beforeRenderCallbacks = []; + r2.beforeRenderPriorities = { + // higher priority execs before lower one + animations: 400, + eleCalcs: 300, + eleTxrDeq: 200, + lyrTxrDeq: 150, + lyrTxrSkip: 100 + }; + r2.registerNodeShapes(); + r2.registerArrowShapes(); + r2.registerCalculationListeners(); + }; + BRp.notify = function(eventName, eles) { + var r2 = this; + var cy = r2.cy; + if (this.destroyed) { + return; } - return [NaN, "ms"]; - }, "parseDuration"); - getEndDate = /* @__PURE__ */ __name(function(prevTime, dateFormat2, str2, inclusive = false) { - str2 = str2.trim(); - const untilRePattern = /^until\s+(?[\d\w- ]+)/; - const untilStatement = untilRePattern.exec(str2); - if (untilStatement !== null) { - let earliestTask = null; - for (const id29 of untilStatement.groups.ids.split(" ")) { - let task = findTaskById(id29); - if (task !== void 0 && (!earliestTask || task.startTime < earliestTask.startTime)) { - earliestTask = task; - } - } - if (earliestTask) { - return earliestTask.startTime; - } - const today = /* @__PURE__ */ new Date(); - today.setHours(0, 0, 0, 0); - return today; + if (eventName === "init") { + r2.load(); + return; } - let parsedDate = (0, import_dayjs2.default)(str2, dateFormat2.trim(), true); - if (parsedDate.isValid()) { - if (inclusive) { - parsedDate = parsedDate.add(1, "d"); - } - return parsedDate.toDate(); + if (eventName === "destroy") { + r2.destroy(); + return; } - let endTime = (0, import_dayjs2.default)(prevTime); - const [durationValue, durationUnit] = parseDuration(str2); - if (!Number.isNaN(durationValue)) { - const newEndTime = endTime.add(durationValue, durationUnit); - if (newEndTime.isValid()) { - endTime = newEndTime; - } + if (eventName === "add" || eventName === "remove" || eventName === "move" && cy.hasCompoundNodes() || eventName === "load" || eventName === "zorder" || eventName === "mount") { + r2.invalidateCachedZSortedEles(); } - return endTime.toDate(); - }, "getEndDate"); - taskCnt = 0; - parseId = /* @__PURE__ */ __name(function(idStr) { - if (idStr === void 0) { - taskCnt = taskCnt + 1; - return "task" + taskCnt; + if (eventName === "viewport") { + r2.redrawHint("select", true); } - return idStr; - }, "parseId"); - compileData = /* @__PURE__ */ __name(function(prevTask, dataStr) { - let ds; - if (dataStr.substr(0, 1) === ":") { - ds = dataStr.substr(1, dataStr.length); - } else { - ds = dataStr; + if (eventName === "gc") { + r2.redrawHint("gc", true); } - const data6 = ds.split(","); - const task = {}; - getTaskTags(data6, task, tags); - for (let i2 = 0; i2 < data6.length; i2++) { - data6[i2] = data6[i2].trim(); + if (eventName === "load" || eventName === "resize" || eventName === "mount") { + r2.invalidateContainerClientCoordsCache(); + r2.matchCanvasSize(r2.container); } - let endTimeData = ""; - switch (data6.length) { - case 1: - task.id = parseId(); - task.startTime = prevTask.endTime; - endTimeData = data6[0]; - break; - case 2: - task.id = parseId(); - task.startTime = getStartDate(void 0, dateFormat, data6[0]); - endTimeData = data6[1]; - break; - case 3: - task.id = parseId(data6[0]); - task.startTime = getStartDate(void 0, dateFormat, data6[1]); - endTimeData = data6[2]; - break; - default: + r2.redrawHint("eles", true); + r2.redrawHint("drag", true); + this.startRenderLoop(); + this.redraw(); + }; + BRp.destroy = function() { + var r2 = this; + r2.destroyed = true; + r2.cy.stopAnimationLoop(); + for (var i2 = 0; i2 < r2.bindings.length; i2++) { + var binding = r2.bindings[i2]; + var b3 = binding; + var tgt = b3.target; + (tgt.off || tgt.removeEventListener).apply(tgt, b3.args); } - if (endTimeData) { - task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates); - task.manualEndTime = (0, import_dayjs2.default)(endTimeData, "YYYY-MM-DD", true).isValid(); - checkTaskDates(task, dateFormat, excludes, includes2); + r2.bindings = []; + r2.beforeRenderCallbacks = []; + r2.onUpdateEleCalcsFns = []; + if (r2.removeObserver) { + r2.removeObserver.disconnect(); } - return task; - }, "compileData"); - parseData = /* @__PURE__ */ __name(function(prevTaskId, dataStr) { - let ds; - if (dataStr.substr(0, 1) === ":") { - ds = dataStr.substr(1, dataStr.length); - } else { - ds = dataStr; + if (r2.styleObserver) { + r2.styleObserver.disconnect(); } - const data6 = ds.split(","); - const task = {}; - getTaskTags(data6, task, tags); - for (let i2 = 0; i2 < data6.length; i2++) { - data6[i2] = data6[i2].trim(); + if (r2.resizeObserver) { + r2.resizeObserver.disconnect(); } - switch (data6.length) { - case 1: - task.id = parseId(); - task.startTime = { - type: "prevTaskEnd", - id: prevTaskId - }; - task.endTime = { - data: data6[0] - }; - break; - case 2: - task.id = parseId(); - task.startTime = { - type: "getStartDate", - startData: data6[0] - }; - task.endTime = { - data: data6[1] - }; - break; - case 3: - task.id = parseId(data6[0]); - task.startTime = { - type: "getStartDate", - startData: data6[1] - }; - task.endTime = { - data: data6[2] - }; - break; - default: + if (r2.labelCalcDiv) { + try { + document.body.removeChild(r2.labelCalcDiv); + } catch (e3) { + } } - return task; - }, "parseData"); - rawTasks = []; - taskDb = {}; - addTask = /* @__PURE__ */ __name(function(descr, data6) { - const rawTask = { - section: currentSection, - type: currentSection, - processed: false, - manualEndTime: false, - renderEndTime: null, - raw: { data: data6 }, - task: descr, - classes: [] - }; - const taskInfo = parseData(lastTaskID, data6); - rawTask.raw.startTime = taskInfo.startTime; - rawTask.raw.endTime = taskInfo.endTime; - rawTask.id = taskInfo.id; - rawTask.prevTaskId = lastTaskID; - rawTask.active = taskInfo.active; - rawTask.done = taskInfo.done; - rawTask.crit = taskInfo.crit; - rawTask.milestone = taskInfo.milestone; - rawTask.order = lastOrder; - lastOrder++; - const pos = rawTasks.push(rawTask); - lastTaskID = rawTask.id; - taskDb[rawTask.id] = pos - 1; - }, "addTask"); - findTaskById = /* @__PURE__ */ __name(function(id29) { - const pos = taskDb[id29]; - return rawTasks[pos]; - }, "findTaskById"); - addTaskOrg = /* @__PURE__ */ __name(function(descr, data6) { - const newTask = { - section: currentSection, - type: currentSection, - description: descr, - task: descr, - classes: [] - }; - const taskInfo = compileData(lastTask, data6); - newTask.startTime = taskInfo.startTime; - newTask.endTime = taskInfo.endTime; - newTask.id = taskInfo.id; - newTask.active = taskInfo.active; - newTask.done = taskInfo.done; - newTask.crit = taskInfo.crit; - newTask.milestone = taskInfo.milestone; - lastTask = newTask; - tasks.push(newTask); - }, "addTaskOrg"); - compileTasks = /* @__PURE__ */ __name(function() { - const compileTask = /* @__PURE__ */ __name(function(pos) { - const task = rawTasks[pos]; - let startTime = ""; - switch (rawTasks[pos].raw.startTime.type) { - case "prevTaskEnd": { - const prevTask = findTaskById(task.prevTaskId); - task.startTime = prevTask.endTime; - break; + }; + BRp.isHeadless = function() { + return false; + }; + [BRp$f, BRp$5, BRp$4, BRp$3, BRp$2, BRp$1].forEach(function(props) { + extend4(BRp, props); + }); + fullFpsTime = 1e3 / 60; + defs = { + setupDequeueing: /* @__PURE__ */ __name(function setupDequeueing(opts) { + return /* @__PURE__ */ __name(function setupDequeueingImpl() { + var self2 = this; + var r2 = this.renderer; + if (self2.dequeueingSetup) { + return; + } else { + self2.dequeueingSetup = true; } - case "getStartDate": - startTime = getStartDate(void 0, dateFormat, rawTasks[pos].raw.startTime.startData); - if (startTime) { - rawTasks[pos].startTime = startTime; + var queueRedraw = debounce(function() { + r2.redrawHint("eles", true); + r2.redrawHint("drag", true); + r2.redraw(); + }, opts.deqRedrawThreshold); + var dequeue = /* @__PURE__ */ __name(function dequeue2(willDraw, frameStartTime) { + var startTime = performanceNow(); + var avgRenderTime = r2.averageRedrawTime; + var renderTime = r2.lastRedrawTime; + var deqd = []; + var extent2 = r2.cy.extent(); + var pixelRatio = r2.getPixelRatio(); + if (!willDraw) { + r2.flushRenderedStyleQueue(); } - break; - } - if (rawTasks[pos].startTime) { - rawTasks[pos].endTime = getEndDate( - rawTasks[pos].startTime, - dateFormat, - rawTasks[pos].raw.endTime.data, - inclusiveEndDates - ); - if (rawTasks[pos].endTime) { - rawTasks[pos].processed = true; - rawTasks[pos].manualEndTime = (0, import_dayjs2.default)( - rawTasks[pos].raw.endTime.data, - "YYYY-MM-DD", - true - ).isValid(); - checkTaskDates(rawTasks[pos], dateFormat, excludes, includes2); - } - } - return rawTasks[pos].processed; - }, "compileTask"); - let allProcessed = true; - for (const [i2, rawTask] of rawTasks.entries()) { - compileTask(i2); - allProcessed = allProcessed && rawTask.processed; - } - return allProcessed; - }, "compileTasks"); - setLink = /* @__PURE__ */ __name(function(ids, _linkStr) { - let linkStr = _linkStr; - if (getConfig2().securityLevel !== "loose") { - linkStr = (0, import_sanitize_url4.sanitizeUrl)(_linkStr); + while (true) { + var now3 = performanceNow(); + var duration = now3 - startTime; + var frameDuration = now3 - frameStartTime; + if (renderTime < fullFpsTime) { + var timeAvailable = fullFpsTime - (willDraw ? avgRenderTime : 0); + if (frameDuration >= opts.deqFastCost * timeAvailable) { + break; + } + } else { + if (willDraw) { + if (duration >= opts.deqCost * renderTime || duration >= opts.deqAvgCost * avgRenderTime) { + break; + } + } else if (frameDuration >= opts.deqNoDrawCost * fullFpsTime) { + break; + } + } + var thisDeqd = opts.deq(self2, pixelRatio, extent2); + if (thisDeqd.length > 0) { + for (var i2 = 0; i2 < thisDeqd.length; i2++) { + deqd.push(thisDeqd[i2]); + } + } else { + break; + } + } + if (deqd.length > 0) { + opts.onDeqd(self2, deqd); + if (!willDraw && opts.shouldRedraw(self2, deqd, pixelRatio, extent2)) { + queueRedraw(); + } + } + }, "dequeue"); + var priority3 = opts.priority || noop$1; + r2.beforeRender(dequeue, priority3(self2)); + }, "setupDequeueingImpl"); + }, "setupDequeueing") + }; + ElementTextureCacheLookup = /* @__PURE__ */ (function() { + function ElementTextureCacheLookup2(getKey3) { + var doesEleInvalidateKey = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : falsify; + _classCallCheck(this, ElementTextureCacheLookup2); + this.idsByKey = new Map$1(); + this.keyForId = new Map$1(); + this.cachesByLvl = new Map$1(); + this.lvls = []; + this.getKey = getKey3; + this.doesEleInvalidateKey = doesEleInvalidateKey; } - ids.split(",").forEach(function(id29) { - let rawTask = findTaskById(id29); - if (rawTask !== void 0) { - pushFun(id29, () => { - window.open(linkStr, "_self"); + __name(ElementTextureCacheLookup2, "ElementTextureCacheLookup"); + return _createClass(ElementTextureCacheLookup2, [{ + key: "getIdsFor", + value: /* @__PURE__ */ __name(function getIdsFor(key) { + if (key == null) { + error("Can not get id list for null key"); + } + var idsByKey = this.idsByKey; + var ids = this.idsByKey.get(key); + if (!ids) { + ids = new Set$1(); + idsByKey.set(key, ids); + } + return ids; + }, "getIdsFor") + }, { + key: "addIdForKey", + value: /* @__PURE__ */ __name(function addIdForKey(key, id30) { + if (key != null) { + this.getIdsFor(key).add(id30); + } + }, "addIdForKey") + }, { + key: "deleteIdForKey", + value: /* @__PURE__ */ __name(function deleteIdForKey(key, id30) { + if (key != null) { + this.getIdsFor(key)["delete"](id30); + } + }, "deleteIdForKey") + }, { + key: "getNumberOfIdsForKey", + value: /* @__PURE__ */ __name(function getNumberOfIdsForKey(key) { + if (key == null) { + return 0; + } else { + return this.getIdsFor(key).size; + } + }, "getNumberOfIdsForKey") + }, { + key: "updateKeyMappingFor", + value: /* @__PURE__ */ __name(function updateKeyMappingFor(ele) { + var id30 = ele.id(); + var prevKey = this.keyForId.get(id30); + var currKey = this.getKey(ele); + this.deleteIdForKey(prevKey, id30); + this.addIdForKey(currKey, id30); + this.keyForId.set(id30, currKey); + }, "updateKeyMappingFor") + }, { + key: "deleteKeyMappingFor", + value: /* @__PURE__ */ __name(function deleteKeyMappingFor(ele) { + var id30 = ele.id(); + var prevKey = this.keyForId.get(id30); + this.deleteIdForKey(prevKey, id30); + this.keyForId["delete"](id30); + }, "deleteKeyMappingFor") + }, { + key: "keyHasChangedFor", + value: /* @__PURE__ */ __name(function keyHasChangedFor(ele) { + var id30 = ele.id(); + var prevKey = this.keyForId.get(id30); + var newKey = this.getKey(ele); + return prevKey !== newKey; + }, "keyHasChangedFor") + }, { + key: "isInvalid", + value: /* @__PURE__ */ __name(function isInvalid(ele) { + return this.keyHasChangedFor(ele) || this.doesEleInvalidateKey(ele); + }, "isInvalid") + }, { + key: "getCachesAt", + value: /* @__PURE__ */ __name(function getCachesAt(lvl) { + var cachesByLvl = this.cachesByLvl, lvls = this.lvls; + var caches = cachesByLvl.get(lvl); + if (!caches) { + caches = new Map$1(); + cachesByLvl.set(lvl, caches); + lvls.push(lvl); + } + return caches; + }, "getCachesAt") + }, { + key: "getCache", + value: /* @__PURE__ */ __name(function getCache(key, lvl) { + return this.getCachesAt(lvl).get(key); + }, "getCache") + }, { + key: "get", + value: /* @__PURE__ */ __name(function get5(ele, lvl) { + var key = this.getKey(ele); + var cache3 = this.getCache(key, lvl); + if (cache3 != null) { + this.updateKeyMappingFor(ele); + } + return cache3; + }, "get") + }, { + key: "getForCachedKey", + value: /* @__PURE__ */ __name(function getForCachedKey(ele, lvl) { + var key = this.keyForId.get(ele.id()); + var cache3 = this.getCache(key, lvl); + return cache3; + }, "getForCachedKey") + }, { + key: "hasCache", + value: /* @__PURE__ */ __name(function hasCache(key, lvl) { + return this.getCachesAt(lvl).has(key); + }, "hasCache") + }, { + key: "has", + value: /* @__PURE__ */ __name(function has2(ele, lvl) { + var key = this.getKey(ele); + return this.hasCache(key, lvl); + }, "has") + }, { + key: "setCache", + value: /* @__PURE__ */ __name(function setCache(key, lvl, cache3) { + cache3.key = key; + this.getCachesAt(lvl).set(key, cache3); + }, "setCache") + }, { + key: "set", + value: /* @__PURE__ */ __name(function set5(ele, lvl, cache3) { + var key = this.getKey(ele); + this.setCache(key, lvl, cache3); + this.updateKeyMappingFor(ele); + }, "set") + }, { + key: "deleteCache", + value: /* @__PURE__ */ __name(function deleteCache(key, lvl) { + this.getCachesAt(lvl)["delete"](key); + }, "deleteCache") + }, { + key: "delete", + value: /* @__PURE__ */ __name(function _delete(ele, lvl) { + var key = this.getKey(ele); + this.deleteCache(key, lvl); + }, "_delete") + }, { + key: "invalidateKey", + value: /* @__PURE__ */ __name(function invalidateKey(key) { + var _this = this; + this.lvls.forEach(function(lvl) { + return _this.deleteCache(key, lvl); }); - links.set(id29, linkStr); - } - }); - setClass(ids, "clickable"); - }, "setLink"); - setClass = /* @__PURE__ */ __name(function(ids, className) { - ids.split(",").forEach(function(id29) { - let rawTask = findTaskById(id29); - if (rawTask !== void 0) { - rawTask.classes.push(className); - } + }, "invalidateKey") + // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key) + }, { + key: "invalidate", + value: /* @__PURE__ */ __name(function invalidate(ele) { + var id30 = ele.id(); + var key = this.keyForId.get(id30); + this.deleteKeyMappingFor(ele); + var entireKeyInvalidated = this.doesEleInvalidateKey(ele); + if (entireKeyInvalidated) { + this.invalidateKey(key); + } + return entireKeyInvalidated || this.getNumberOfIdsForKey(key) === 0; + }, "invalidate") + }]); + })(); + minTxrH = 25; + txrStepH = 50; + minLvl$1 = -4; + maxLvl$1 = 3; + maxZoom$1 = 7.99; + eleTxrSpacing = 8; + defTxrWidth = 1024; + maxTxrW = 1024; + maxTxrH = 1024; + minUtility = 0.2; + maxFullness = 0.8; + maxFullnessChecks = 10; + deqCost$1 = 0.15; + deqAvgCost$1 = 0.1; + deqNoDrawCost$1 = 0.9; + deqFastCost$1 = 0.9; + deqRedrawThreshold$1 = 100; + maxDeqSize$1 = 1; + getTxrReasons = { + dequeue: "dequeue", + downscale: "downscale", + highQuality: "highQuality" + }; + initDefaults = defaults$g({ + getKey: null, + doesEleInvalidateKey: falsify, + drawElement: null, + getBoundingBox: null, + getRotationPoint: null, + getRotationOffset: null, + isVisible: trueify, + allowEdgeTxrCaching: true, + allowParentTxrCaching: true + }); + ElementTextureCache = /* @__PURE__ */ __name(function ElementTextureCache2(renderer10, initOptions) { + var self2 = this; + self2.renderer = renderer10; + self2.onDequeues = []; + var opts = initDefaults(initOptions); + extend4(self2, opts); + self2.lookup = new ElementTextureCacheLookup(opts.getKey, opts.doesEleInvalidateKey); + self2.setupDequeueing(); + }, "ElementTextureCache"); + ETCp = ElementTextureCache.prototype; + ETCp.reasons = getTxrReasons; + ETCp.getTextureQueue = function(txrH) { + var self2 = this; + self2.eleImgCaches = self2.eleImgCaches || {}; + return self2.eleImgCaches[txrH] = self2.eleImgCaches[txrH] || []; + }; + ETCp.getRetiredTextureQueue = function(txrH) { + var self2 = this; + var rtxtrQs = self2.eleImgCaches.retired = self2.eleImgCaches.retired || {}; + var rtxtrQ = rtxtrQs[txrH] = rtxtrQs[txrH] || []; + return rtxtrQ; + }; + ETCp.getElementQueue = function() { + var self2 = this; + var q3 = self2.eleCacheQueue = self2.eleCacheQueue || new Heap(function(a2, b3) { + return b3.reqs - a2.reqs; }); - }, "setClass"); - setClickFun = /* @__PURE__ */ __name(function(id29, functionName, functionArgs) { - if (getConfig2().securityLevel !== "loose") { - return; + return q3; + }; + ETCp.getElementKeyToQueue = function() { + var self2 = this; + var k2q = self2.eleKeyToCacheQueue = self2.eleKeyToCacheQueue || {}; + return k2q; + }; + ETCp.getElement = function(ele, bb, pxRatio, lvl, reason) { + var self2 = this; + var r2 = this.renderer; + var zoom2 = r2.cy.zoom(); + var lookup2 = this.lookup; + if (!bb || bb.w === 0 || bb.h === 0 || isNaN(bb.w) || isNaN(bb.h) || !ele.visible() || ele.removed()) { + return null; } - if (functionName === void 0) { - return; + if (!self2.allowEdgeTxrCaching && ele.isEdge() || !self2.allowParentTxrCaching && ele.isParent()) { + return null; } - let argList = []; - if (typeof functionArgs === "string") { - argList = functionArgs.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/); - for (let i2 = 0; i2 < argList.length; i2++) { - let item = argList[i2].trim(); - if (item.startsWith('"') && item.endsWith('"')) { - item = item.substr(1, item.length - 2); - } - argList[i2] = item; - } + if (lvl == null) { + lvl = Math.ceil(log22(zoom2 * pxRatio)); } - if (argList.length === 0) { - argList.push(id29); + if (lvl < minLvl$1) { + lvl = minLvl$1; + } else if (zoom2 >= maxZoom$1 || lvl > maxLvl$1) { + return null; } - let rawTask = findTaskById(id29); - if (rawTask !== void 0) { - pushFun(id29, () => { - utils_default2.runFunc(functionName, ...argList); - }); + var scale2 = Math.pow(2, lvl); + var eleScaledH = bb.h * scale2; + var eleScaledW = bb.w * scale2; + var scaledLabelShown = r2.eleTextBiggerThanMin(ele, scale2); + if (!this.isVisible(ele, scaledLabelShown)) { + return null; } - }, "setClickFun"); - pushFun = /* @__PURE__ */ __name(function(id29, callbackFunction) { - funs.push( - function() { - const elem = document.querySelector(`[id="${id29}"]`); - if (elem !== null) { - elem.addEventListener("click", function() { - callbackFunction(); - }); - } - }, - function() { - const elem = document.querySelector(`[id="${id29}-text"]`); - if (elem !== null) { - elem.addEventListener("click", function() { - callbackFunction(); - }); - } - } - ); - }, "pushFun"); - setClickEvent = /* @__PURE__ */ __name(function(ids, functionName, functionArgs) { - ids.split(",").forEach(function(id29) { - setClickFun(id29, functionName, functionArgs); - }); - setClass(ids, "clickable"); - }, "setClickEvent"); - bindFunctions = /* @__PURE__ */ __name(function(element3) { - funs.forEach(function(fun) { - fun(element3); - }); - }, "bindFunctions"); - ganttDb_default = { - getConfig: /* @__PURE__ */ __name(() => getConfig2().gantt, "getConfig"), - clear: clear9, - setDateFormat, - getDateFormat, - enableInclusiveEndDates, - endDatesAreInclusive, - enableTopAxis, - topAxisEnabled, - setAxisFormat, - getAxisFormat, - setTickInterval, - getTickInterval, - setTodayMarker, - getTodayMarker, - setAccTitle, - getAccTitle, - setDiagramTitle, - getDiagramTitle, - setDisplayMode, - getDisplayMode, - setAccDescription, - getAccDescription, - addSection, - getSections, - getTasks, - addTask, - findTaskById, - addTaskOrg, - setIncludes, - getIncludes, - setExcludes, - getExcludes, - setClickEvent, - setLink, - getLinks, - bindFunctions, - parseDuration, - isInvalidDate, - setWeekday, - getWeekday, - setWeekend - }; - __name(getTaskTags, "getTaskTags"); - } - }); - - // src/diagrams/gantt/ganttRenderer.js - var import_dayjs3, setConf2, mapWeekdayToTimeFunction, getMaxIntersections, w2, draw5, ganttRenderer_default; - var init_ganttRenderer = __esm({ - "src/diagrams/gantt/ganttRenderer.js"() { - "use strict"; - import_dayjs3 = __toESM(require_dayjs_min(), 1); - init_logger(); - init_src32(); - init_common(); - init_diagramAPI(); - init_setupGraphViewbox(); - setConf2 = /* @__PURE__ */ __name(function() { - log.debug("Something is calling, setConf, remove the call"); - }, "setConf"); - mapWeekdayToTimeFunction = { - monday: timeMonday, - tuesday: timeTuesday, - wednesday: timeWednesday, - thursday: timeThursday, - friday: timeFriday, - saturday: timeSaturday, - sunday: timeSunday - }; - getMaxIntersections = /* @__PURE__ */ __name((tasks4, orderOffset) => { - let timeline = [...tasks4].map(() => -Infinity); - let sorted = [...tasks4].sort((a2, b2) => a2.startTime - b2.startTime || a2.order - b2.order); - let maxIntersections = 0; - for (const element3 of sorted) { - for (let j2 = 0; j2 < timeline.length; j2++) { - if (element3.startTime >= timeline[j2]) { - timeline[j2] = element3.endTime; - element3.order = j2 + orderOffset; - if (j2 > maxIntersections) { - maxIntersections = j2; - } - break; - } - } + var eleCache = lookup2.get(ele, lvl); + if (eleCache && eleCache.invalidated) { + eleCache.invalidated = false; + eleCache.texture.invalidatedWidth -= eleCache.width; } - return maxIntersections; - }, "getMaxIntersections"); - draw5 = /* @__PURE__ */ __name(function(text4, id29, version2, diagObj) { - const conf5 = getConfig2().gantt; - const securityLevel = getConfig2().securityLevel; - let sandboxElement; - if (securityLevel === "sandbox") { - sandboxElement = select_default2("#i" + id29); + if (eleCache) { + return eleCache; } - const root4 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); - const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document; - const elem = doc.getElementById(id29); - w2 = elem.parentElement.offsetWidth; - if (w2 === void 0) { - w2 = 1200; + var txrH; + if (eleScaledH <= minTxrH) { + txrH = minTxrH; + } else if (eleScaledH <= txrStepH) { + txrH = txrStepH; + } else { + txrH = Math.ceil(eleScaledH / txrStepH) * txrStepH; } - if (conf5.useWidth !== void 0) { - w2 = conf5.useWidth; + if (eleScaledH > maxTxrH || eleScaledW > maxTxrW) { + return null; } - const taskArray = diagObj.db.getTasks(); - let categories = []; - for (const element3 of taskArray) { - categories.push(element3.type); + var txrQ = self2.getTextureQueue(txrH); + var txr = txrQ[txrQ.length - 2]; + var addNewTxr = /* @__PURE__ */ __name(function addNewTxr2() { + return self2.recycleTexture(txrH, eleScaledW) || self2.addTexture(txrH, eleScaledW); + }, "addNewTxr"); + if (!txr) { + txr = txrQ[txrQ.length - 1]; } - categories = checkUnique(categories); - const categoryHeights = {}; - let h2 = 2 * conf5.topPadding; - if (diagObj.db.getDisplayMode() === "compact" || conf5.displayMode === "compact") { - const categoryElements = {}; - for (const element3 of taskArray) { - if (categoryElements[element3.section] === void 0) { - categoryElements[element3.section] = [element3]; - } else { - categoryElements[element3.section].push(element3); - } + if (!txr) { + txr = addNewTxr(); + } + if (txr.width - txr.usedWidth < eleScaledW) { + txr = addNewTxr(); + } + var scalableFrom = /* @__PURE__ */ __name(function scalableFrom2(otherCache) { + return otherCache && otherCache.scaledLabelShown === scaledLabelShown; + }, "scalableFrom"); + var deqing = reason && reason === getTxrReasons.dequeue; + var highQualityReq = reason && reason === getTxrReasons.highQuality; + var downscaleReq = reason && reason === getTxrReasons.downscale; + var higherCache; + for (var l4 = lvl + 1; l4 <= maxLvl$1; l4++) { + var c3 = lookup2.get(ele, l4); + if (c3) { + higherCache = c3; + break; } - let intersections = 0; - for (const category of Object.keys(categoryElements)) { - const categoryHeight = getMaxIntersections(categoryElements[category], intersections) + 1; - intersections += categoryHeight; - h2 += categoryHeight * (conf5.barHeight + conf5.barGap); - categoryHeights[category] = categoryHeight; + } + var oneUpCache = higherCache && higherCache.level === lvl + 1 ? higherCache : null; + var downscale = /* @__PURE__ */ __name(function downscale2() { + txr.context.drawImage(oneUpCache.texture.canvas, oneUpCache.x, 0, oneUpCache.width, oneUpCache.height, txr.usedWidth, 0, eleScaledW, eleScaledH); + }, "downscale"); + txr.context.setTransform(1, 0, 0, 1, 0, 0); + txr.context.clearRect(txr.usedWidth, 0, eleScaledW, txrH); + if (scalableFrom(oneUpCache)) { + downscale(); + } else if (scalableFrom(higherCache)) { + if (highQualityReq) { + for (var _l = higherCache.level; _l > lvl; _l--) { + oneUpCache = self2.getElement(ele, bb, pxRatio, _l, getTxrReasons.downscale); + } + downscale(); + } else { + self2.queueElement(ele, higherCache.level - 1); + return higherCache; } } else { - h2 += taskArray.length * (conf5.barHeight + conf5.barGap); - for (const category of categories) { - categoryHeights[category] = taskArray.filter((task) => task.type === category).length; + var lowerCache; + if (!deqing && !highQualityReq && !downscaleReq) { + for (var _l2 = lvl - 1; _l2 >= minLvl$1; _l2--) { + var _c = lookup2.get(ele, _l2); + if (_c) { + lowerCache = _c; + break; + } + } } - } - elem.setAttribute("viewBox", "0 0 " + w2 + " " + h2); - const svg2 = root4.select(`[id="${id29}"]`); - const timeScale = time().domain([ - min(taskArray, function(d2) { - return d2.startTime; - }), - max(taskArray, function(d2) { - return d2.endTime; - }) - ]).rangeRound([0, w2 - conf5.leftPadding - conf5.rightPadding]); - function taskCompare(a2, b2) { - const taskA = a2.startTime; - const taskB = b2.startTime; - let result = 0; - if (taskA > taskB) { - result = 1; - } else if (taskA < taskB) { - result = -1; + if (scalableFrom(lowerCache)) { + self2.queueElement(ele, lvl); + return lowerCache; } - return result; + txr.context.translate(txr.usedWidth, 0); + txr.context.scale(scale2, scale2); + this.drawElement(txr.context, ele, bb, scaledLabelShown, false); + txr.context.scale(1 / scale2, 1 / scale2); + txr.context.translate(-txr.usedWidth, 0); } - __name(taskCompare, "taskCompare"); - taskArray.sort(taskCompare); - makeGantt(taskArray, w2, h2); - configureSvgSize(svg2, h2, w2, conf5.useMaxWidth); - svg2.append("text").text(diagObj.db.getDiagramTitle()).attr("x", w2 / 2).attr("y", conf5.titleTopMargin).attr("class", "titleText"); - function makeGantt(tasks4, pageWidth, pageHeight) { - const barHeight = conf5.barHeight; - const gap = barHeight + conf5.barGap; - const topPadding = conf5.topPadding; - const leftPadding = conf5.leftPadding; - const colorScale = linear2().domain([0, categories.length]).range(["#00B9FA", "#F95002"]).interpolate(hcl_default); - drawExcludeDays( - gap, - topPadding, - leftPadding, - pageWidth, - pageHeight, - tasks4, - diagObj.db.getExcludes(), - diagObj.db.getIncludes() - ); - makeGrid(leftPadding, topPadding, pageWidth, pageHeight); - drawRects(tasks4, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight); - vertLabels(gap, topPadding, leftPadding, barHeight, colorScale); - drawToday(leftPadding, topPadding, pageWidth, pageHeight); + eleCache = { + x: txr.usedWidth, + texture: txr, + level: lvl, + scale: scale2, + width: eleScaledW, + height: eleScaledH, + scaledLabelShown + }; + txr.usedWidth += Math.ceil(eleScaledW + eleTxrSpacing); + txr.eleCaches.push(eleCache); + lookup2.set(ele, lvl, eleCache); + self2.checkTextureFullness(txr); + return eleCache; + }; + ETCp.invalidateElements = function(eles) { + for (var i2 = 0; i2 < eles.length; i2++) { + this.invalidateElement(eles[i2]); } - __name(makeGantt, "makeGantt"); - function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w3) { - const uniqueTaskOrderIds = [...new Set(theArray.map((item) => item.order))]; - const uniqueTasks = uniqueTaskOrderIds.map((id30) => theArray.find((item) => item.order === id30)); - svg2.append("g").selectAll("rect").data(uniqueTasks).enter().append("rect").attr("x", 0).attr("y", function(d2, i2) { - i2 = d2.order; - return i2 * theGap + theTopPad - 2; - }).attr("width", function() { - return w3 - conf5.rightPadding / 2; - }).attr("height", theGap).attr("class", function(d2) { - for (const [i2, category] of categories.entries()) { - if (d2.type === category) { - return "section section" + i2 % conf5.numberSectionStyles; - } - } - return "section section0"; - }); - const rectangles = svg2.append("g").selectAll("rect").data(theArray).enter(); - const links3 = diagObj.db.getLinks(); - rectangles.append("rect").attr("id", function(d2) { - return d2.id; - }).attr("rx", 3).attr("ry", 3).attr("x", function(d2) { - if (d2.milestone) { - return timeScale(d2.startTime) + theSidePad + 0.5 * (timeScale(d2.endTime) - timeScale(d2.startTime)) - 0.5 * theBarHeight; - } - return timeScale(d2.startTime) + theSidePad; - }).attr("y", function(d2, i2) { - i2 = d2.order; - return i2 * theGap + theTopPad; - }).attr("width", function(d2) { - if (d2.milestone) { - return theBarHeight; - } - return timeScale(d2.renderEndTime || d2.endTime) - timeScale(d2.startTime); - }).attr("height", theBarHeight).attr("transform-origin", function(d2, i2) { - i2 = d2.order; - return (timeScale(d2.startTime) + theSidePad + 0.5 * (timeScale(d2.endTime) - timeScale(d2.startTime))).toString() + "px " + (i2 * theGap + theTopPad + 0.5 * theBarHeight).toString() + "px"; - }).attr("class", function(d2) { - const res = "task"; - let classStr = ""; - if (d2.classes.length > 0) { - classStr = d2.classes.join(" "); - } - let secNum = 0; - for (const [i2, category] of categories.entries()) { - if (d2.type === category) { - secNum = i2 % conf5.numberSectionStyles; - } + }; + ETCp.invalidateElement = function(ele) { + var self2 = this; + var lookup2 = self2.lookup; + var caches = []; + var invalid = lookup2.isInvalid(ele); + if (!invalid) { + return; + } + for (var lvl = minLvl$1; lvl <= maxLvl$1; lvl++) { + var cache3 = lookup2.getForCachedKey(ele, lvl); + if (cache3) { + caches.push(cache3); + } + } + var noOtherElesUseCache = lookup2.invalidate(ele); + if (noOtherElesUseCache) { + for (var i2 = 0; i2 < caches.length; i2++) { + var _cache = caches[i2]; + var txr = _cache.texture; + txr.invalidatedWidth += _cache.width; + _cache.invalidated = true; + self2.checkTextureUtility(txr); + } + } + self2.removeFromQueue(ele); + }; + ETCp.checkTextureUtility = function(txr) { + if (txr.invalidatedWidth >= minUtility * txr.width) { + this.retireTexture(txr); + } + }; + ETCp.checkTextureFullness = function(txr) { + var self2 = this; + var txrQ = self2.getTextureQueue(txr.height); + if (txr.usedWidth / txr.width > maxFullness && txr.fullnessChecks >= maxFullnessChecks) { + removeFromArray(txrQ, txr); + } else { + txr.fullnessChecks++; + } + }; + ETCp.retireTexture = function(txr) { + var self2 = this; + var txrH = txr.height; + var txrQ = self2.getTextureQueue(txrH); + var lookup2 = this.lookup; + removeFromArray(txrQ, txr); + txr.retired = true; + var eleCaches = txr.eleCaches; + for (var i2 = 0; i2 < eleCaches.length; i2++) { + var eleCache = eleCaches[i2]; + lookup2.deleteCache(eleCache.key, eleCache.level); + } + clearArray(eleCaches); + var rtxtrQ = self2.getRetiredTextureQueue(txrH); + rtxtrQ.push(txr); + }; + ETCp.addTexture = function(txrH, minW) { + var self2 = this; + var txrQ = self2.getTextureQueue(txrH); + var txr = {}; + txrQ.push(txr); + txr.eleCaches = []; + txr.height = txrH; + txr.width = Math.max(defTxrWidth, minW); + txr.usedWidth = 0; + txr.invalidatedWidth = 0; + txr.fullnessChecks = 0; + txr.canvas = self2.renderer.makeOffscreenCanvas(txr.width, txr.height); + txr.context = txr.canvas.getContext("2d"); + return txr; + }; + ETCp.recycleTexture = function(txrH, minW) { + var self2 = this; + var txrQ = self2.getTextureQueue(txrH); + var rtxtrQ = self2.getRetiredTextureQueue(txrH); + for (var i2 = 0; i2 < rtxtrQ.length; i2++) { + var txr = rtxtrQ[i2]; + if (txr.width >= minW) { + txr.retired = false; + txr.usedWidth = 0; + txr.invalidatedWidth = 0; + txr.fullnessChecks = 0; + clearArray(txr.eleCaches); + txr.context.setTransform(1, 0, 0, 1, 0, 0); + txr.context.clearRect(0, 0, txr.width, txr.height); + removeFromArray(rtxtrQ, txr); + txrQ.push(txr); + return txr; + } + } + }; + ETCp.queueElement = function(ele, lvl) { + var self2 = this; + var q3 = self2.getElementQueue(); + var k2q = self2.getElementKeyToQueue(); + var key = this.getKey(ele); + var existingReq = k2q[key]; + if (existingReq) { + existingReq.level = Math.max(existingReq.level, lvl); + existingReq.eles.merge(ele); + existingReq.reqs++; + q3.updateItem(existingReq); + } else { + var req = { + eles: ele.spawn().merge(ele), + level: lvl, + reqs: 1, + key + }; + q3.push(req); + k2q[key] = req; + } + }; + ETCp.dequeue = function(pxRatio) { + var self2 = this; + var q3 = self2.getElementQueue(); + var k2q = self2.getElementKeyToQueue(); + var dequeued = []; + var lookup2 = self2.lookup; + for (var i2 = 0; i2 < maxDeqSize$1; i2++) { + if (q3.size() > 0) { + var req = q3.pop(); + var key = req.key; + var ele = req.eles[0]; + var cacheExists = lookup2.hasCache(ele, req.level); + k2q[key] = null; + if (cacheExists) { + continue; } - let taskClass = ""; - if (d2.active) { - if (d2.crit) { - taskClass += " activeCrit"; - } else { - taskClass = " active"; - } - } else if (d2.done) { - if (d2.crit) { - taskClass = " doneCrit"; - } else { - taskClass = " done"; - } - } else { - if (d2.crit) { - taskClass += " crit"; + dequeued.push(req); + var bb = self2.getBoundingBox(ele); + self2.getElement(ele, bb, pxRatio, req.level, getTxrReasons.dequeue); + } else { + break; + } + } + return dequeued; + }; + ETCp.removeFromQueue = function(ele) { + var self2 = this; + var q3 = self2.getElementQueue(); + var k2q = self2.getElementKeyToQueue(); + var key = this.getKey(ele); + var req = k2q[key]; + if (req != null) { + if (req.eles.length === 1) { + req.reqs = MAX_INT$1; + q3.updateItem(req); + q3.pop(); + k2q[key] = null; + } else { + req.eles.unmerge(ele); + } + } + }; + ETCp.onDequeue = function(fn3) { + this.onDequeues.push(fn3); + }; + ETCp.offDequeue = function(fn3) { + removeFromArray(this.onDequeues, fn3); + }; + ETCp.setupDequeueing = defs.setupDequeueing({ + deqRedrawThreshold: deqRedrawThreshold$1, + deqCost: deqCost$1, + deqAvgCost: deqAvgCost$1, + deqNoDrawCost: deqNoDrawCost$1, + deqFastCost: deqFastCost$1, + deq: /* @__PURE__ */ __name(function deq(self2, pxRatio, extent2) { + return self2.dequeue(pxRatio, extent2); + }, "deq"), + onDeqd: /* @__PURE__ */ __name(function onDeqd(self2, deqd) { + for (var i2 = 0; i2 < self2.onDequeues.length; i2++) { + var fn3 = self2.onDequeues[i2]; + fn3(deqd); + } + }, "onDeqd"), + shouldRedraw: /* @__PURE__ */ __name(function shouldRedraw(self2, deqd, pxRatio, extent2) { + for (var i2 = 0; i2 < deqd.length; i2++) { + var eles = deqd[i2].eles; + for (var j3 = 0; j3 < eles.length; j3++) { + var bb = eles[j3].boundingBox(); + if (boundingBoxesIntersect(bb, extent2)) { + return true; } } - if (taskClass.length === 0) { - taskClass = " task"; - } - if (d2.milestone) { - taskClass = " milestone " + taskClass; + } + return false; + }, "shouldRedraw"), + priority: /* @__PURE__ */ __name(function priority(self2) { + return self2.renderer.beforeRenderPriorities.eleTxrDeq; + }, "priority") + }); + defNumLayers = 1; + minLvl = -4; + maxLvl = 2; + maxZoom2 = 3.99; + deqRedrawThreshold = 50; + refineEleDebounceTime = 50; + deqCost = 0.15; + deqAvgCost = 0.1; + deqNoDrawCost = 0.9; + deqFastCost = 0.9; + maxDeqSize = 1; + invalidThreshold = 250; + maxLayerArea = 4e3 * 4e3; + maxLayerDim = 32767; + useHighQualityEleTxrReqs = true; + LayeredTextureCache = /* @__PURE__ */ __name(function LayeredTextureCache2(renderer10) { + var self2 = this; + var r2 = self2.renderer = renderer10; + var cy = r2.cy; + self2.layersByLevel = {}; + self2.firstGet = true; + self2.lastInvalidationTime = performanceNow() - 2 * invalidThreshold; + self2.skipping = false; + self2.eleTxrDeqs = cy.collection(); + self2.scheduleElementRefinement = debounce(function() { + self2.refineElementTextures(self2.eleTxrDeqs); + self2.eleTxrDeqs.unmerge(self2.eleTxrDeqs); + }, refineEleDebounceTime); + r2.beforeRender(function(willDraw, now3) { + if (now3 - self2.lastInvalidationTime <= invalidThreshold) { + self2.skipping = true; + } else { + self2.skipping = false; + } + }, r2.beforeRenderPriorities.lyrTxrSkip); + var qSort = /* @__PURE__ */ __name(function qSort2(a2, b3) { + return b3.reqs - a2.reqs; + }, "qSort"); + self2.layersQueue = new Heap(qSort); + self2.setupDequeueing(); + }, "LayeredTextureCache"); + LTCp = LayeredTextureCache.prototype; + layerIdPool = 0; + MAX_INT = Math.pow(2, 53) - 1; + LTCp.makeLayer = function(bb, lvl) { + var scale2 = Math.pow(2, lvl); + var w4 = Math.ceil(bb.w * scale2); + var h3 = Math.ceil(bb.h * scale2); + var canvas = this.renderer.makeOffscreenCanvas(w4, h3); + var layer = { + id: layerIdPool = ++layerIdPool % MAX_INT, + bb, + level: lvl, + width: w4, + height: h3, + canvas, + context: canvas.getContext("2d"), + eles: [], + elesQueue: [], + reqs: 0 + }; + var cxt = layer.context; + var dx = -layer.bb.x1; + var dy = -layer.bb.y1; + cxt.scale(scale2, scale2); + cxt.translate(dx, dy); + return layer; + }; + LTCp.getLayers = function(eles, pxRatio, lvl) { + var self2 = this; + var r2 = self2.renderer; + var cy = r2.cy; + var zoom2 = cy.zoom(); + var firstGet = self2.firstGet; + self2.firstGet = false; + if (lvl == null) { + lvl = Math.ceil(log22(zoom2 * pxRatio)); + if (lvl < minLvl) { + lvl = minLvl; + } else if (zoom2 >= maxZoom2 || lvl > maxLvl) { + return null; + } + } + self2.validateLayersElesOrdering(lvl, eles); + var layersByLvl = self2.layersByLevel; + var scale2 = Math.pow(2, lvl); + var layers = layersByLvl[lvl] = layersByLvl[lvl] || []; + var bb; + var lvlComplete = self2.levelIsComplete(lvl, eles); + var tmpLayers; + var checkTempLevels = /* @__PURE__ */ __name(function checkTempLevels2() { + var canUseAsTmpLvl = /* @__PURE__ */ __name(function canUseAsTmpLvl2(l4) { + self2.validateLayersElesOrdering(l4, eles); + if (self2.levelIsComplete(l4, eles)) { + tmpLayers = layersByLvl[l4]; + return true; } - taskClass += secNum; - taskClass += " " + classStr; - return res + taskClass; - }); - rectangles.append("text").attr("id", function(d2) { - return d2.id + "-text"; - }).text(function(d2) { - return d2.task; - }).attr("font-size", conf5.fontSize).attr("x", function(d2) { - let startX2 = timeScale(d2.startTime); - let endX = timeScale(d2.renderEndTime || d2.endTime); - if (d2.milestone) { - startX2 += 0.5 * (timeScale(d2.endTime) - timeScale(d2.startTime)) - 0.5 * theBarHeight; - } - if (d2.milestone) { - endX = startX2 + theBarHeight; + }, "canUseAsTmpLvl"); + var checkLvls = /* @__PURE__ */ __name(function checkLvls2(dir2) { + if (tmpLayers) { + return; } - const textWidth = this.getBBox().width; - if (textWidth > endX - startX2) { - if (endX + textWidth + 1.5 * conf5.leftPadding > w3) { - return startX2 + theSidePad - 5; - } else { - return endX + theSidePad + 5; + for (var l4 = lvl + dir2; minLvl <= l4 && l4 <= maxLvl; l4 += dir2) { + if (canUseAsTmpLvl(l4)) { + break; } - } else { - return (endX - startX2) / 2 + startX2 + theSidePad; } - }).attr("y", function(d2, i2) { - i2 = d2.order; - return i2 * theGap + conf5.barHeight / 2 + (conf5.fontSize / 2 - 2) + theTopPad; - }).attr("text-height", theBarHeight).attr("class", function(d2) { - const startX2 = timeScale(d2.startTime); - let endX = timeScale(d2.endTime); - if (d2.milestone) { - endX = startX2 + theBarHeight; + }, "checkLvls"); + checkLvls(1); + checkLvls(-1); + for (var i3 = layers.length - 1; i3 >= 0; i3--) { + var layer2 = layers[i3]; + if (layer2.invalid) { + removeFromArray(layers, layer2); } - const textWidth = this.getBBox().width; - let classStr = ""; - if (d2.classes.length > 0) { - classStr = d2.classes.join(" "); + } + }, "checkTempLevels"); + if (!lvlComplete) { + checkTempLevels(); + } else { + return layers; + } + var getBb = /* @__PURE__ */ __name(function getBb2() { + if (!bb) { + bb = makeBoundingBox(); + for (var i3 = 0; i3 < eles.length; i3++) { + updateBoundingBox(bb, eles[i3].boundingBox()); } - let secNum = 0; - for (const [i2, category] of categories.entries()) { - if (d2.type === category) { - secNum = i2 % conf5.numberSectionStyles; - } + } + return bb; + }, "getBb"); + var makeLayer = /* @__PURE__ */ __name(function makeLayer2(opts) { + opts = opts || {}; + var after = opts.after; + getBb(); + var w4 = Math.ceil(bb.w * scale2); + var h3 = Math.ceil(bb.h * scale2); + if (w4 > maxLayerDim || h3 > maxLayerDim) { + return null; + } + var area = w4 * h3; + if (area > maxLayerArea) { + return null; + } + var layer2 = self2.makeLayer(bb, lvl); + if (after != null) { + var index = layers.indexOf(after) + 1; + layers.splice(index, 0, layer2); + } else if (opts.insert === void 0 || opts.insert) { + layers.unshift(layer2); + } + return layer2; + }, "makeLayer"); + if (self2.skipping && !firstGet) { + return null; + } + var layer = null; + var maxElesPerLayer = eles.length / defNumLayers; + var allowLazyQueueing = !firstGet; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + var rs = ele._private.rscratch; + var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; + var existingLayer = caches[lvl]; + if (existingLayer) { + layer = existingLayer; + continue; + } + if (!layer || layer.eles.length >= maxElesPerLayer || !boundingBoxInBoundingBox(layer.bb, ele.boundingBox())) { + layer = makeLayer({ + insert: true, + after: layer + }); + if (!layer) { + return null; } - let taskType = ""; - if (d2.active) { - if (d2.crit) { - taskType = "activeCritText" + secNum; - } else { - taskType = "activeText" + secNum; - } + } + if (tmpLayers || allowLazyQueueing) { + self2.queueLayer(layer, ele); + } else { + self2.drawEleInLayer(layer, ele, lvl, pxRatio); + } + layer.eles.push(ele); + caches[lvl] = layer; + } + if (tmpLayers) { + return tmpLayers; + } + if (allowLazyQueueing) { + return null; + } + return layers; + }; + LTCp.getEleLevelForLayerLevel = function(lvl, pxRatio) { + return lvl; + }; + LTCp.drawEleInLayer = function(layer, ele, lvl, pxRatio) { + var self2 = this; + var r2 = this.renderer; + var context = layer.context; + var bb = ele.boundingBox(); + if (bb.w === 0 || bb.h === 0 || !ele.visible()) { + return; + } + lvl = self2.getEleLevelForLayerLevel(lvl, pxRatio); + { + r2.setImgSmoothing(context, false); + } + { + r2.drawCachedElement(context, ele, null, null, lvl, useHighQualityEleTxrReqs); + } + { + r2.setImgSmoothing(context, true); + } + }; + LTCp.levelIsComplete = function(lvl, eles) { + var self2 = this; + var layers = self2.layersByLevel[lvl]; + if (!layers || layers.length === 0) { + return false; + } + var numElesInLayers = 0; + for (var i2 = 0; i2 < layers.length; i2++) { + var layer = layers[i2]; + if (layer.reqs > 0) { + return false; + } + if (layer.invalid) { + return false; + } + numElesInLayers += layer.eles.length; + } + if (numElesInLayers !== eles.length) { + return false; + } + return true; + }; + LTCp.validateLayersElesOrdering = function(lvl, eles) { + var layers = this.layersByLevel[lvl]; + if (!layers) { + return; + } + for (var i2 = 0; i2 < layers.length; i2++) { + var layer = layers[i2]; + var offset = -1; + for (var j3 = 0; j3 < eles.length; j3++) { + if (layer.eles[0] === eles[j3]) { + offset = j3; + break; } - if (d2.done) { - if (d2.crit) { - taskType = taskType + " doneCritText" + secNum; - } else { - taskType = taskType + " doneText" + secNum; - } - } else { - if (d2.crit) { - taskType = taskType + " critText" + secNum; - } + } + if (offset < 0) { + this.invalidateLayer(layer); + continue; + } + var o2 = offset; + for (var j3 = 0; j3 < layer.eles.length; j3++) { + if (layer.eles[j3] !== eles[o2 + j3]) { + this.invalidateLayer(layer); + break; } - if (d2.milestone) { - taskType += " milestoneText"; + } + } + }; + LTCp.updateElementsInLayers = function(eles, update2) { + var self2 = this; + var isEles = element(eles[0]); + for (var i2 = 0; i2 < eles.length; i2++) { + var req = isEles ? null : eles[i2]; + var ele = isEles ? eles[i2] : eles[i2].ele; + var rs = ele._private.rscratch; + var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; + for (var l4 = minLvl; l4 <= maxLvl; l4++) { + var layer = caches[l4]; + if (!layer) { + continue; } - if (textWidth > endX - startX2) { - if (endX + textWidth + 1.5 * conf5.leftPadding > w3) { - return classStr + " taskTextOutsideLeft taskTextOutside" + secNum + " " + taskType; - } else { - return classStr + " taskTextOutsideRight taskTextOutside" + secNum + " " + taskType + " width-" + textWidth; - } - } else { - return classStr + " taskText taskText" + secNum + " " + taskType + " width-" + textWidth; + if (req && self2.getEleLevelForLayerLevel(layer.level) !== req.level) { + continue; } - }); - const securityLevel2 = getConfig2().securityLevel; - if (securityLevel2 === "sandbox") { - let sandboxElement2; - sandboxElement2 = select_default2("#i" + id29); - const doc2 = sandboxElement2.nodes()[0].contentDocument; - rectangles.filter(function(d2) { - return links3.has(d2.id); - }).each(function(o2) { - var taskRect = doc2.querySelector("#" + o2.id); - var taskText = doc2.querySelector("#" + o2.id + "-text"); - const oldParent = taskRect.parentNode; - var Link = doc2.createElement("a"); - Link.setAttribute("xlink:href", links3.get(o2.id)); - Link.setAttribute("target", "_top"); - oldParent.appendChild(Link); - Link.appendChild(taskRect); - Link.appendChild(taskText); - }); + update2(layer, ele, req); } } - __name(drawRects, "drawRects"); - function drawExcludeDays(theGap, theTopPad, theSidePad, w3, h3, tasks4, excludes2, includes3) { - if (excludes2.length === 0 && includes3.length === 0) { - return; + }; + LTCp.haveLayers = function() { + var self2 = this; + var haveLayers = false; + for (var l4 = minLvl; l4 <= maxLvl; l4++) { + var layers = self2.layersByLevel[l4]; + if (layers && layers.length > 0) { + haveLayers = true; + break; } - let minTime; - let maxTime; - for (const { startTime, endTime } of tasks4) { - if (minTime === void 0 || startTime < minTime) { - minTime = startTime; - } - if (maxTime === void 0 || endTime > maxTime) { - maxTime = endTime; + } + return haveLayers; + }; + LTCp.invalidateElements = function(eles) { + var self2 = this; + if (eles.length === 0) { + return; + } + self2.lastInvalidationTime = performanceNow(); + if (eles.length === 0 || !self2.haveLayers()) { + return; + } + self2.updateElementsInLayers(eles, /* @__PURE__ */ __name(function invalAssocLayers(layer, ele, req) { + self2.invalidateLayer(layer); + }, "invalAssocLayers")); + }; + LTCp.invalidateLayer = function(layer) { + this.lastInvalidationTime = performanceNow(); + if (layer.invalid) { + return; + } + var lvl = layer.level; + var eles = layer.eles; + var layers = this.layersByLevel[lvl]; + removeFromArray(layers, layer); + layer.elesQueue = []; + layer.invalid = true; + if (layer.replacement) { + layer.replacement.invalid = true; + } + for (var i2 = 0; i2 < eles.length; i2++) { + var caches = eles[i2]._private.rscratch.imgLayerCaches; + if (caches) { + caches[lvl] = null; + } + } + }; + LTCp.refineElementTextures = function(eles) { + var self2 = this; + self2.updateElementsInLayers(eles, /* @__PURE__ */ __name(function refineEachEle(layer, ele, req) { + var rLyr = layer.replacement; + if (!rLyr) { + rLyr = layer.replacement = self2.makeLayer(layer.bb, layer.level); + rLyr.replaces = layer; + rLyr.eles = layer.eles; + } + if (!rLyr.reqs) { + for (var i2 = 0; i2 < rLyr.eles.length; i2++) { + self2.queueLayer(rLyr, rLyr.eles[i2]); } } - if (!minTime || !maxTime) { + }, "refineEachEle")); + }; + LTCp.enqueueElementRefinement = function(ele) { + this.eleTxrDeqs.merge(ele); + this.scheduleElementRefinement(); + }; + LTCp.queueLayer = function(layer, ele) { + var self2 = this; + var q3 = self2.layersQueue; + var elesQ = layer.elesQueue; + var hasId = elesQ.hasId = elesQ.hasId || {}; + if (layer.replacement) { + return; + } + if (ele) { + if (hasId[ele.id()]) { return; } - if ((0, import_dayjs3.default)(maxTime).diff((0, import_dayjs3.default)(minTime), "year") > 5) { - log.warn( - "The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days." - ); - return; + elesQ.push(ele); + hasId[ele.id()] = true; + } + if (layer.reqs) { + layer.reqs++; + q3.updateItem(layer); + } else { + layer.reqs = 1; + q3.push(layer); + } + }; + LTCp.dequeue = function(pxRatio) { + var self2 = this; + var q3 = self2.layersQueue; + var deqd = []; + var eleDeqs = 0; + while (eleDeqs < maxDeqSize) { + if (q3.size() === 0) { + break; } - const dateFormat2 = diagObj.db.getDateFormat(); - const excludeRanges = []; - let range3 = null; - let d2 = (0, import_dayjs3.default)(minTime); - while (d2.valueOf() <= maxTime) { - if (diagObj.db.isInvalidDate(d2, dateFormat2, excludes2, includes3)) { - if (!range3) { - range3 = { - start: d2, - end: d2 - }; - } else { - range3.end = d2; - } - } else { - if (range3) { - excludeRanges.push(range3); - range3 = null; - } + var layer = q3.peek(); + if (layer.replacement) { + q3.pop(); + continue; + } + if (layer.replaces && layer !== layer.replaces.replacement) { + q3.pop(); + continue; + } + if (layer.invalid) { + q3.pop(); + continue; + } + var ele = layer.elesQueue.shift(); + if (ele) { + self2.drawEleInLayer(layer, ele, layer.level, pxRatio); + eleDeqs++; + } + if (deqd.length === 0) { + deqd.push(true); + } + if (layer.elesQueue.length === 0) { + q3.pop(); + layer.reqs = 0; + if (layer.replaces) { + self2.applyLayerReplacement(layer); } - d2 = d2.add(1, "d"); + self2.requestRedraw(); } - const rectangles = svg2.append("g").selectAll("rect").data(excludeRanges).enter(); - rectangles.append("rect").attr("id", function(d3) { - return "exclude-" + d3.start.format("YYYY-MM-DD"); - }).attr("x", function(d3) { - return timeScale(d3.start) + theSidePad; - }).attr("y", conf5.gridLineStartPadding).attr("width", function(d3) { - const renderEnd = d3.end.add(1, "day"); - return timeScale(renderEnd) - timeScale(d3.start); - }).attr("height", h3 - theTopPad - conf5.gridLineStartPadding).attr("transform-origin", function(d3, i2) { - return (timeScale(d3.start) + theSidePad + 0.5 * (timeScale(d3.end) - timeScale(d3.start))).toString() + "px " + (i2 * theGap + 0.5 * h3).toString() + "px"; - }).attr("class", "exclude-range"); } - __name(drawExcludeDays, "drawExcludeDays"); - function makeGrid(theSidePad, theTopPad, w3, h3) { - let bottomXAxis = axisBottom(timeScale).tickSize(-h3 + theTopPad + conf5.gridLineStartPadding).tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf5.axisFormat || "%Y-%m-%d")); - const reTickInterval = /^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/; - const resultTickInterval = reTickInterval.exec( - diagObj.db.getTickInterval() || conf5.tickInterval - ); - if (resultTickInterval !== null) { - const every3 = resultTickInterval[1]; - const interval2 = resultTickInterval[2]; - const weekday2 = diagObj.db.getWeekday() || conf5.weekday; - switch (interval2) { - case "millisecond": - bottomXAxis.ticks(millisecond.every(every3)); - break; - case "second": - bottomXAxis.ticks(second.every(every3)); - break; - case "minute": - bottomXAxis.ticks(timeMinute.every(every3)); - break; - case "hour": - bottomXAxis.ticks(timeHour.every(every3)); - break; - case "day": - bottomXAxis.ticks(timeDay.every(every3)); - break; - case "week": - bottomXAxis.ticks(mapWeekdayToTimeFunction[weekday2].every(every3)); - break; - case "month": - bottomXAxis.ticks(timeMonth.every(every3)); - break; + return deqd; + }; + LTCp.applyLayerReplacement = function(layer) { + var self2 = this; + var layersInLevel = self2.layersByLevel[layer.level]; + var replaced = layer.replaces; + var index = layersInLevel.indexOf(replaced); + if (index < 0 || replaced.invalid) { + return; + } + layersInLevel[index] = layer; + for (var i2 = 0; i2 < layer.eles.length; i2++) { + var _p = layer.eles[i2]._private; + var cache3 = _p.imgLayerCaches = _p.imgLayerCaches || {}; + if (cache3) { + cache3[layer.level] = layer; + } + } + self2.requestRedraw(); + }; + LTCp.requestRedraw = debounce(function() { + var r2 = this.renderer; + r2.redrawHint("eles", true); + r2.redrawHint("drag", true); + r2.redraw(); + }, 100); + LTCp.setupDequeueing = defs.setupDequeueing({ + deqRedrawThreshold, + deqCost, + deqAvgCost, + deqNoDrawCost, + deqFastCost, + deq: /* @__PURE__ */ __name(function deq2(self2, pxRatio) { + return self2.dequeue(pxRatio); + }, "deq"), + onDeqd: noop$1, + shouldRedraw: trueify, + priority: /* @__PURE__ */ __name(function priority2(self2) { + return self2.renderer.beforeRenderPriorities.lyrTxrDeq; + }, "priority") + }); + CRp$b = {}; + __name(polygon, "polygon"); + __name(triangleBackcurve, "triangleBackcurve"); + __name(triangleTee, "triangleTee"); + __name(circleTriangle, "circleTriangle"); + __name(circle$1, "circle$1"); + CRp$b.arrowShapeImpl = function(name) { + return (impl || (impl = { + "polygon": polygon, + "triangle-backcurve": triangleBackcurve, + "triangle-tee": triangleTee, + "circle-triangle": circleTriangle, + "triangle-cross": triangleTee, + "circle": circle$1 + }))[name]; + }; + CRp$a = {}; + CRp$a.drawElement = function(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity) { + var r2 = this; + if (ele.isNode()) { + r2.drawNode(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); + } else { + r2.drawEdge(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); + } + }; + CRp$a.drawElementOverlay = function(context, ele) { + var r2 = this; + if (ele.isNode()) { + r2.drawNodeOverlay(context, ele); + } else { + r2.drawEdgeOverlay(context, ele); + } + }; + CRp$a.drawElementUnderlay = function(context, ele) { + var r2 = this; + if (ele.isNode()) { + r2.drawNodeUnderlay(context, ele); + } else { + r2.drawEdgeUnderlay(context, ele); + } + }; + CRp$a.drawCachedElementPortion = function(context, ele, eleTxrCache, pxRatio, lvl, reason, getRotation, getOpacity3) { + var r2 = this; + var bb = eleTxrCache.getBoundingBox(ele); + if (bb.w === 0 || bb.h === 0) { + return; + } + var eleCache = eleTxrCache.getElement(ele, bb, pxRatio, lvl, reason); + if (eleCache != null) { + var opacity = getOpacity3(r2, ele); + if (opacity === 0) { + return; + } + var theta = getRotation(r2, ele); + var x1 = bb.x1, y1 = bb.y1, w4 = bb.w, h3 = bb.h; + var x5, y6, sx, sy, smooth; + if (theta !== 0) { + var rotPt = eleTxrCache.getRotationPoint(ele); + sx = rotPt.x; + sy = rotPt.y; + context.translate(sx, sy); + context.rotate(theta); + smooth = r2.getImgSmoothing(context); + if (!smooth) { + r2.setImgSmoothing(context, true); } + var off = eleTxrCache.getRotationOffset(ele); + x5 = off.x; + y6 = off.y; + } else { + x5 = x1; + y6 = y1; } - svg2.append("g").attr("class", "grid").attr("transform", "translate(" + theSidePad + ", " + (h3 - 50) + ")").call(bottomXAxis).selectAll("text").style("text-anchor", "middle").attr("fill", "#000").attr("stroke", "none").attr("font-size", 10).attr("dy", "1em"); - if (diagObj.db.topAxisEnabled() || conf5.topAxis) { - let topXAxis = axisTop(timeScale).tickSize(-h3 + theTopPad + conf5.gridLineStartPadding).tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf5.axisFormat || "%Y-%m-%d")); - if (resultTickInterval !== null) { - const every3 = resultTickInterval[1]; - const interval2 = resultTickInterval[2]; - const weekday2 = diagObj.db.getWeekday() || conf5.weekday; - switch (interval2) { - case "millisecond": - topXAxis.ticks(millisecond.every(every3)); - break; - case "second": - topXAxis.ticks(second.every(every3)); - break; - case "minute": - topXAxis.ticks(timeMinute.every(every3)); - break; - case "hour": - topXAxis.ticks(timeHour.every(every3)); - break; - case "day": - topXAxis.ticks(timeDay.every(every3)); - break; - case "week": - topXAxis.ticks(mapWeekdayToTimeFunction[weekday2].every(every3)); - break; - case "month": - topXAxis.ticks(timeMonth.every(every3)); - break; - } + var oldGlobalAlpha; + if (opacity !== 1) { + oldGlobalAlpha = context.globalAlpha; + context.globalAlpha = oldGlobalAlpha * opacity; + } + context.drawImage(eleCache.texture.canvas, eleCache.x, 0, eleCache.width, eleCache.height, x5, y6, w4, h3); + if (opacity !== 1) { + context.globalAlpha = oldGlobalAlpha; + } + if (theta !== 0) { + context.rotate(-theta); + context.translate(-sx, -sy); + if (!smooth) { + r2.setImgSmoothing(context, false); } - svg2.append("g").attr("class", "grid").attr("transform", "translate(" + theSidePad + ", " + theTopPad + ")").call(topXAxis).selectAll("text").style("text-anchor", "middle").attr("fill", "#000").attr("stroke", "none").attr("font-size", 10); } + } else { + eleTxrCache.drawElement(context, ele); } - __name(makeGrid, "makeGrid"); - function vertLabels(theGap, theTopPad) { - let prevGap = 0; - const numOccurrences = Object.keys(categoryHeights).map((d2) => [d2, categoryHeights[d2]]); - svg2.append("g").selectAll("text").data(numOccurrences).enter().append(function(d2) { - const rows = d2[0].split(common_default.lineBreakRegex); - const dy = -(rows.length - 1) / 2; - const svgLabel = doc.createElementNS("http://www.w3.org/2000/svg", "text"); - svgLabel.setAttribute("dy", dy + "em"); - for (const [j2, row] of rows.entries()) { - const tspan = doc.createElementNS("http://www.w3.org/2000/svg", "tspan"); - tspan.setAttribute("alignment-baseline", "central"); - tspan.setAttribute("x", "10"); - if (j2 > 0) { - tspan.setAttribute("dy", "1em"); - } - tspan.textContent = row; - svgLabel.appendChild(tspan); - } - return svgLabel; - }).attr("x", 10).attr("y", function(d2, i2) { - if (i2 > 0) { - for (let j2 = 0; j2 < i2; j2++) { - prevGap += numOccurrences[i2 - 1][1]; - return d2[1] * theGap / 2 + prevGap * theGap + theTopPad; - } - } else { - return d2[1] * theGap / 2 + theTopPad; - } - }).attr("font-size", conf5.sectionFontSize).attr("class", function(d2) { - for (const [i2, category] of categories.entries()) { - if (d2[0] === category) { - return "sectionTitle sectionTitle" + i2 % conf5.numberSectionStyles; - } - } - return "sectionTitle"; - }); + }; + getZeroRotation = /* @__PURE__ */ __name(function getZeroRotation2() { + return 0; + }, "getZeroRotation"); + getLabelRotation = /* @__PURE__ */ __name(function getLabelRotation2(r2, ele) { + return r2.getTextAngle(ele, null); + }, "getLabelRotation"); + getSourceLabelRotation = /* @__PURE__ */ __name(function getSourceLabelRotation2(r2, ele) { + return r2.getTextAngle(ele, "source"); + }, "getSourceLabelRotation"); + getTargetLabelRotation = /* @__PURE__ */ __name(function getTargetLabelRotation2(r2, ele) { + return r2.getTextAngle(ele, "target"); + }, "getTargetLabelRotation"); + getOpacity = /* @__PURE__ */ __name(function getOpacity2(r2, ele) { + return ele.effectiveOpacity(); + }, "getOpacity"); + getTextOpacity = /* @__PURE__ */ __name(function getTextOpacity2(e3, ele) { + return ele.pstyle("text-opacity").pfValue * ele.effectiveOpacity(); + }, "getTextOpacity"); + CRp$a.drawCachedElement = function(context, ele, pxRatio, extent2, lvl, requestHighQuality) { + var r2 = this; + var _r$data = r2.data, eleTxrCache = _r$data.eleTxrCache, lblTxrCache = _r$data.lblTxrCache, slbTxrCache = _r$data.slbTxrCache, tlbTxrCache = _r$data.tlbTxrCache; + var bb = ele.boundingBox(); + var reason = requestHighQuality === true ? eleTxrCache.reasons.highQuality : null; + if (bb.w === 0 || bb.h === 0 || !ele.visible()) { + return; } - __name(vertLabels, "vertLabels"); - function drawToday(theSidePad, theTopPad, w3, h3) { - const todayMarker2 = diagObj.db.getTodayMarker(); - if (todayMarker2 === "off") { - return; + if (!extent2 || boundingBoxesIntersect(bb, extent2)) { + var isEdge2 = ele.isEdge(); + var badLine = ele.element()._private.rscratch.badLine; + r2.drawElementUnderlay(context, ele); + r2.drawCachedElementPortion(context, ele, eleTxrCache, pxRatio, lvl, reason, getZeroRotation, getOpacity); + if (!isEdge2 || !badLine) { + r2.drawCachedElementPortion(context, ele, lblTxrCache, pxRatio, lvl, reason, getLabelRotation, getTextOpacity); } - const todayG = svg2.append("g").attr("class", "today"); - const today = /* @__PURE__ */ new Date(); - const todayLine = todayG.append("line"); - todayLine.attr("x1", timeScale(today) + theSidePad).attr("x2", timeScale(today) + theSidePad).attr("y1", conf5.titleTopMargin).attr("y2", h3 - conf5.titleTopMargin).attr("class", "today"); - if (todayMarker2 !== "") { - todayLine.attr("style", todayMarker2.replace(/,/g, ";")); + if (isEdge2 && !badLine) { + r2.drawCachedElementPortion(context, ele, slbTxrCache, pxRatio, lvl, reason, getSourceLabelRotation, getTextOpacity); + r2.drawCachedElementPortion(context, ele, tlbTxrCache, pxRatio, lvl, reason, getTargetLabelRotation, getTextOpacity); } + r2.drawElementOverlay(context, ele); } - __name(drawToday, "drawToday"); - function checkUnique(arr) { - const hash = {}; - const result = []; - for (let i2 = 0, l2 = arr.length; i2 < l2; ++i2) { - if (!Object.prototype.hasOwnProperty.call(hash, arr[i2])) { - hash[arr[i2]] = true; - result.push(arr[i2]); + }; + CRp$a.drawElements = function(context, eles) { + var r2 = this; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + r2.drawElement(context, ele); + } + }; + CRp$a.drawCachedElements = function(context, eles, pxRatio, extent2) { + var r2 = this; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + r2.drawCachedElement(context, ele, pxRatio, extent2); + } + }; + CRp$a.drawCachedNodes = function(context, eles, pxRatio, extent2) { + var r2 = this; + for (var i2 = 0; i2 < eles.length; i2++) { + var ele = eles[i2]; + if (!ele.isNode()) { + continue; + } + r2.drawCachedElement(context, ele, pxRatio, extent2); + } + }; + CRp$a.drawLayeredElements = function(context, eles, pxRatio, extent2) { + var r2 = this; + var layers = r2.data.lyrTxrCache.getLayers(eles, pxRatio); + if (layers) { + for (var i2 = 0; i2 < layers.length; i2++) { + var layer = layers[i2]; + var bb = layer.bb; + if (bb.w === 0 || bb.h === 0) { + continue; } + context.drawImage(layer.canvas, bb.x1, bb.y1, bb.w, bb.h); } - return result; + } else { + r2.drawCachedElements(context, eles, pxRatio, extent2); } - __name(checkUnique, "checkUnique"); - }, "draw"); - ganttRenderer_default = { - setConf: setConf2, - draw: draw5 }; - } - }); - - // src/diagrams/gantt/styles.js - var getStyles6, styles_default6; - var init_styles6 = __esm({ - "src/diagrams/gantt/styles.js"() { - "use strict"; - getStyles6 = /* @__PURE__ */ __name((options3) => ` - .mermaid-main-font { - font-family: ${options3.fontFamily}; - } - - .exclude-range { - fill: ${options3.excludeBkgColor}; - } - - .section { - stroke: none; - opacity: 0.2; - } - - .section0 { - fill: ${options3.sectionBkgColor}; - } - - .section2 { - fill: ${options3.sectionBkgColor2}; - } - - .section1, - .section3 { - fill: ${options3.altSectionBkgColor}; - opacity: 0.2; - } - - .sectionTitle0 { - fill: ${options3.titleColor}; - } - - .sectionTitle1 { - fill: ${options3.titleColor}; - } - - .sectionTitle2 { - fill: ${options3.titleColor}; - } - - .sectionTitle3 { - fill: ${options3.titleColor}; - } - - .sectionTitle { - text-anchor: start; - font-family: ${options3.fontFamily}; - } - - - /* Grid and axis */ - - .grid .tick { - stroke: ${options3.gridColor}; - opacity: 0.8; - shape-rendering: crispEdges; - } - - .grid .tick text { - font-family: ${options3.fontFamily}; - fill: ${options3.textColor}; - } - - .grid path { - stroke-width: 0; - } - - - /* Today line */ - - .today { - fill: none; - stroke: ${options3.todayLineColor}; - stroke-width: 2px; - } - - - /* Task styling */ - - /* Default task */ - - .task { - stroke-width: 2; - } - - .taskText { - text-anchor: middle; - font-family: ${options3.fontFamily}; - } - - .taskTextOutsideRight { - fill: ${options3.taskTextDarkColor}; - text-anchor: start; - font-family: ${options3.fontFamily}; - } - - .taskTextOutsideLeft { - fill: ${options3.taskTextDarkColor}; - text-anchor: end; - } - - - /* Special case clickable */ - - .task.clickable { - cursor: pointer; - } - - .taskText.clickable { - cursor: pointer; - fill: ${options3.taskTextClickableColor} !important; - font-weight: bold; - } - - .taskTextOutsideLeft.clickable { - cursor: pointer; - fill: ${options3.taskTextClickableColor} !important; - font-weight: bold; - } - - .taskTextOutsideRight.clickable { - cursor: pointer; - fill: ${options3.taskTextClickableColor} !important; - font-weight: bold; - } - - - /* Specific task settings for the sections*/ - - .taskText0, - .taskText1, - .taskText2, - .taskText3 { - fill: ${options3.taskTextColor}; - } - - .task0, - .task1, - .task2, - .task3 { - fill: ${options3.taskBkgColor}; - stroke: ${options3.taskBorderColor}; - } - - .taskTextOutside0, - .taskTextOutside2 - { - fill: ${options3.taskTextOutsideColor}; - } - - .taskTextOutside1, - .taskTextOutside3 { - fill: ${options3.taskTextOutsideColor}; - } - - - /* Active task */ - - .active0, - .active1, - .active2, - .active3 { - fill: ${options3.activeTaskBkgColor}; - stroke: ${options3.activeTaskBorderColor}; - } - - .activeText0, - .activeText1, - .activeText2, - .activeText3 { - fill: ${options3.taskTextDarkColor} !important; - } - - - /* Completed task */ - - .done0, - .done1, - .done2, - .done3 { - stroke: ${options3.doneTaskBorderColor}; - fill: ${options3.doneTaskBkgColor}; - stroke-width: 2; - } - - .doneText0, - .doneText1, - .doneText2, - .doneText3 { - fill: ${options3.taskTextDarkColor} !important; - } - - - /* Tasks on the critical line */ - - .crit0, - .crit1, - .crit2, - .crit3 { - stroke: ${options3.critBorderColor}; - fill: ${options3.critBkgColor}; - stroke-width: 2; - } - - .activeCrit0, - .activeCrit1, - .activeCrit2, - .activeCrit3 { - stroke: ${options3.critBorderColor}; - fill: ${options3.activeTaskBkgColor}; - stroke-width: 2; - } - - .doneCrit0, - .doneCrit1, - .doneCrit2, - .doneCrit3 { - stroke: ${options3.critBorderColor}; - fill: ${options3.doneTaskBkgColor}; - stroke-width: 2; - cursor: pointer; - shape-rendering: crispEdges; - } - - .milestone { - transform: rotate(45deg) scale(0.8,0.8); - } - - .milestoneText { - font-style: italic; - } - .doneCritText0, - .doneCritText1, - .doneCritText2, - .doneCritText3 { - fill: ${options3.taskTextDarkColor} !important; - } - - .activeCritText0, - .activeCritText1, - .activeCritText2, - .activeCritText3 { - fill: ${options3.taskTextDarkColor} !important; - } - - .titleText { - text-anchor: middle; - font-size: 18px; - fill: ${options3.titleColor || options3.textColor}; - font-family: ${options3.fontFamily}; - } -`, "getStyles"); - styles_default6 = getStyles6; - } - }); - - // src/diagrams/gantt/ganttDiagram.ts - var ganttDiagram_exports = {}; - __export(ganttDiagram_exports, { - diagram: () => diagram5 - }); - var diagram5; - var init_ganttDiagram = __esm({ - "src/diagrams/gantt/ganttDiagram.ts"() { - "use strict"; - init_gantt(); - init_ganttDb(); - init_ganttRenderer(); - init_styles6(); - diagram5 = { - parser: gantt_default, - db: ganttDb_default, - renderer: ganttRenderer_default, - styles: styles_default6 - }; - } - }); - - // src/diagrams/info/infoParser.ts - var parser7; - var init_infoParser = __esm({ - "src/diagrams/info/infoParser.ts"() { - "use strict"; - init_mermaid_parser_core(); - init_logger(); - parser7 = { - parse: /* @__PURE__ */ __name(async (input) => { - const ast = await parse("info", input); - log.debug(ast); - }, "parse") + CRp$9 = {}; + CRp$9.drawEdge = function(context, edge, shiftToOriginWithBb) { + var drawLabel4 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; + var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true; + var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : true; + var r2 = this; + var rs = edge._private.rscratch; + if (shouldDrawOpacity && !edge.visible()) { + return; + } + if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) { + return; + } + var bb; + if (shiftToOriginWithBb) { + bb = shiftToOriginWithBb; + context.translate(-bb.x1, -bb.y1); + } + var opacity = shouldDrawOpacity ? edge.pstyle("opacity").value : 1; + var lineOpacity = shouldDrawOpacity ? edge.pstyle("line-opacity").value : 1; + var curveStyle = edge.pstyle("curve-style").value; + var lineStyle = edge.pstyle("line-style").value; + var edgeWidth = edge.pstyle("width").pfValue; + var lineCap = edge.pstyle("line-cap").value; + var lineOutlineWidth = edge.pstyle("line-outline-width").value; + var lineOutlineColor = edge.pstyle("line-outline-color").value; + var effectiveLineOpacity = opacity * lineOpacity; + var effectiveArrowOpacity = opacity * lineOpacity; + var drawLine = /* @__PURE__ */ __name(function drawLine2() { + var strokeOpacity = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : effectiveLineOpacity; + if (curveStyle === "straight-triangle") { + r2.eleStrokeStyle(context, edge, strokeOpacity); + r2.drawEdgeTrianglePath(edge, context, rs.allpts); + } else { + context.lineWidth = edgeWidth; + context.lineCap = lineCap; + r2.eleStrokeStyle(context, edge, strokeOpacity); + r2.drawEdgePath(edge, context, rs.allpts, lineStyle); + context.lineCap = "butt"; + } + }, "drawLine"); + var drawLineOutline = /* @__PURE__ */ __name(function drawLineOutline2() { + var strokeOpacity = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : effectiveLineOpacity; + context.lineWidth = edgeWidth + lineOutlineWidth; + context.lineCap = lineCap; + if (lineOutlineWidth > 0) { + r2.colorStrokeStyle(context, lineOutlineColor[0], lineOutlineColor[1], lineOutlineColor[2], strokeOpacity); + } else { + context.lineCap = "butt"; + return; + } + if (curveStyle === "straight-triangle") { + r2.drawEdgeTrianglePath(edge, context, rs.allpts); + } else { + r2.drawEdgePath(edge, context, rs.allpts, lineStyle); + context.lineCap = "butt"; + } + }, "drawLineOutline"); + var drawOverlay = /* @__PURE__ */ __name(function drawOverlay2() { + if (!shouldDrawOverlay) { + return; + } + r2.drawEdgeOverlay(context, edge); + }, "drawOverlay"); + var drawUnderlay = /* @__PURE__ */ __name(function drawUnderlay2() { + if (!shouldDrawOverlay) { + return; + } + r2.drawEdgeUnderlay(context, edge); + }, "drawUnderlay"); + var drawArrows2 = /* @__PURE__ */ __name(function drawArrows3() { + var arrowOpacity = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : effectiveArrowOpacity; + r2.drawArrowheads(context, edge, arrowOpacity); + }, "drawArrows"); + var drawText6 = /* @__PURE__ */ __name(function drawText7() { + r2.drawElementText(context, edge, null, drawLabel4); + }, "drawText"); + context.lineJoin = "round"; + var ghost = edge.pstyle("ghost").value === "yes"; + if (ghost) { + var gx = edge.pstyle("ghost-offset-x").pfValue; + var gy = edge.pstyle("ghost-offset-y").pfValue; + var ghostOpacity = edge.pstyle("ghost-opacity").value; + var effectiveGhostOpacity = effectiveLineOpacity * ghostOpacity; + context.translate(gx, gy); + drawLine(effectiveGhostOpacity); + drawArrows2(effectiveGhostOpacity); + context.translate(-gx, -gy); + } else { + drawLineOutline(); + } + drawUnderlay(); + drawLine(); + drawArrows2(); + drawOverlay(); + drawText6(); + if (shiftToOriginWithBb) { + context.translate(bb.x1, bb.y1); + } }; - } - }); - - // package.json - var package_default; - var init_package = __esm({ - "package.json"() { - package_default = { - name: "mermaid", - version: "11.6.0", - description: "Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.", - type: "module", - module: "./dist/mermaid.core.mjs", - types: "./dist/mermaid.d.ts", - exports: { - ".": { - types: "./dist/mermaid.d.ts", - import: "./dist/mermaid.core.mjs", - default: "./dist/mermaid.core.mjs" - }, - "./*": "./*" - }, - keywords: [ - "diagram", - "markdown", - "flowchart", - "sequence diagram", - "gantt", - "class diagram", - "git graph", - "mindmap", - "packet diagram", - "c4 diagram", - "er diagram", - "pie chart", - "pie diagram", - "quadrant chart", - "requirement diagram", - "graph" - ], - scripts: { - clean: "rimraf dist", - dev: "pnpm -w dev", - "docs:code": "typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup", - "docs:build": "rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts", - "docs:verify": "pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify", - "docs:pre:vitepress": "pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts", - "docs:build:vitepress": "pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing", - "docs:dev": 'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"', - "docs:dev:docker": 'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"', - "docs:serve": "pnpm docs:build:vitepress && vitepress serve src/vitepress", - "docs:spellcheck": 'cspell "src/docs/**/*.md"', - "docs:release-version": "tsx scripts/update-release-version.mts", - "docs:verify-version": "tsx scripts/update-release-version.mts --verify", - "types:build-config": "tsx scripts/create-types-from-json-schema.mts", - "types:verify-config": "tsx scripts/create-types-from-json-schema.mts --verify", - checkCircle: "npx madge --circular ./src", - prepublishOnly: "pnpm docs:verify-version" - }, - repository: { - type: "git", - url: "https://github.com/mermaid-js/mermaid" - }, - author: "Knut Sveidqvist", - license: "MIT", - standard: { - ignore: [ - "**/parser/*.js", - "dist/**/*.js", - "cypress/**/*.js" - ], - globals: [ - "page" - ] - }, - dependencies: { - "@braintree/sanitize-url": "^7.0.4", - "@iconify/utils": "^2.1.33", - "@mermaid-js/parser": "workspace:^", - "@types/d3": "^7.4.3", - cytoscape: "^3.29.3", - "cytoscape-cose-bilkent": "^4.1.0", - "cytoscape-fcose": "^2.2.0", - d3: "^7.9.0", - "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.11", - dayjs: "^1.11.13", - dompurify: "^3.2.4", - katex: "^0.16.9", - khroma: "^2.1.0", - "lodash-es": "^4.17.21", - marked: "^15.0.7", - roughjs: "^4.6.6", - stylis: "^4.3.6", - "ts-dedent": "^2.2.0", - uuid: "^11.1.0" - }, - devDependencies: { - "@adobe/jsonschema2md": "^8.0.2", - "@iconify/types": "^2.0.0", - "@types/cytoscape": "^3.21.9", - "@types/cytoscape-fcose": "^2.2.4", - "@types/d3-sankey": "^0.12.4", - "@types/d3-scale": "^4.0.9", - "@types/d3-scale-chromatic": "^3.1.0", - "@types/d3-selection": "^3.0.11", - "@types/d3-shape": "^3.1.7", - "@types/jsdom": "^21.1.7", - "@types/katex": "^0.16.7", - "@types/lodash-es": "^4.17.12", - "@types/micromatch": "^4.0.9", - "@types/stylis": "^4.2.7", - "@types/uuid": "^10.0.0", - ajv: "^8.17.1", - chokidar: "^4.0.3", - concurrently: "^9.1.2", - "csstree-validator": "^4.0.1", - globby: "^14.0.2", - jison: "^0.4.18", - "js-base64": "^3.7.7", - jsdom: "^26.0.0", - "json-schema-to-typescript": "^15.0.4", - micromatch: "^4.0.8", - "path-browserify": "^1.0.1", - prettier: "^3.5.2", - remark: "^15.0.1", - "remark-frontmatter": "^5.0.0", - "remark-gfm": "^4.0.1", - rimraf: "^6.0.1", - "start-server-and-test": "^2.0.10", - "type-fest": "^4.35.0", - typedoc: "^0.27.8", - "typedoc-plugin-markdown": "^4.4.2", - typescript: "~5.7.3", - "unist-util-flatmap": "^1.0.0", - "unist-util-visit": "^5.0.0", - vitepress: "^1.0.2", - "vitepress-plugin-search": "1.0.4-alpha.22" - }, - files: [ - "dist/", - "README.md" - ], - publishConfig: { - access: "public" + drawEdgeOverlayUnderlay = /* @__PURE__ */ __name(function drawEdgeOverlayUnderlay2(overlayOrUnderlay) { + if (!["overlay", "underlay"].includes(overlayOrUnderlay)) { + throw new Error("Invalid state"); + } + return function(context, edge) { + if (!edge.visible()) { + return; + } + var opacity = edge.pstyle("".concat(overlayOrUnderlay, "-opacity")).value; + if (opacity === 0) { + return; + } + var r2 = this; + var usePaths = r2.usePaths(); + var rs = edge._private.rscratch; + var padding2 = edge.pstyle("".concat(overlayOrUnderlay, "-padding")).pfValue; + var width3 = 2 * padding2; + var color2 = edge.pstyle("".concat(overlayOrUnderlay, "-color")).value; + context.lineWidth = width3; + if (rs.edgeType === "self" && !usePaths) { + context.lineCap = "butt"; + } else { + context.lineCap = "round"; + } + r2.colorStrokeStyle(context, color2[0], color2[1], color2[2], opacity); + r2.drawEdgePath(edge, context, rs.allpts, "solid"); + }; + }, "drawEdgeOverlayUnderlay"); + CRp$9.drawEdgeOverlay = drawEdgeOverlayUnderlay("overlay"); + CRp$9.drawEdgeUnderlay = drawEdgeOverlayUnderlay("underlay"); + CRp$9.drawEdgePath = function(edge, context, pts2, type3) { + var rs = edge._private.rscratch; + var canvasCxt = context; + var path4; + var pathCacheHit = false; + var usePaths = this.usePaths(); + var lineDashPattern = edge.pstyle("line-dash-pattern").pfValue; + var lineDashOffset = edge.pstyle("line-dash-offset").pfValue; + if (usePaths) { + var pathCacheKey = pts2.join("$"); + var keyMatches = rs.pathCacheKey && rs.pathCacheKey === pathCacheKey; + if (keyMatches) { + path4 = context = rs.pathCache; + pathCacheHit = true; + } else { + path4 = context = new Path2D(); + rs.pathCacheKey = pathCacheKey; + rs.pathCache = path4; + } + } + if (canvasCxt.setLineDash) { + switch (type3) { + case "dotted": + canvasCxt.setLineDash([1, 1]); + break; + case "dashed": + canvasCxt.setLineDash(lineDashPattern); + canvasCxt.lineDashOffset = lineDashOffset; + break; + case "solid": + canvasCxt.setLineDash([]); + break; + } + } + if (!pathCacheHit && !rs.badLine) { + if (context.beginPath) { + context.beginPath(); + } + context.moveTo(pts2[0], pts2[1]); + switch (rs.edgeType) { + case "bezier": + case "self": + case "compound": + case "multibezier": + for (var i2 = 2; i2 + 3 < pts2.length; i2 += 4) { + context.quadraticCurveTo(pts2[i2], pts2[i2 + 1], pts2[i2 + 2], pts2[i2 + 3]); + } + break; + case "straight": + case "haystack": + for (var _i = 2; _i + 1 < pts2.length; _i += 2) { + context.lineTo(pts2[_i], pts2[_i + 1]); + } + break; + case "segments": + if (rs.isRound) { + var _iterator = _createForOfIteratorHelper(rs.roundCorners), _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done; ) { + var corner = _step.value; + drawPreparedRoundCorner(context, corner); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + context.lineTo(pts2[pts2.length - 2], pts2[pts2.length - 1]); + } else { + for (var _i2 = 2; _i2 + 1 < pts2.length; _i2 += 2) { + context.lineTo(pts2[_i2], pts2[_i2 + 1]); + } + } + break; + } + } + context = canvasCxt; + if (usePaths) { + context.stroke(path4); + } else { + context.stroke(); + } + if (context.setLineDash) { + context.setLineDash([]); } }; - } - }); - - // src/diagrams/info/infoDb.ts - var DEFAULT_INFO_DB, getVersion, db2; - var init_infoDb = __esm({ - "src/diagrams/info/infoDb.ts"() { - "use strict"; - init_package(); - DEFAULT_INFO_DB = { version: package_default.version }; - getVersion = /* @__PURE__ */ __name(() => DEFAULT_INFO_DB.version, "getVersion"); - db2 = { - getVersion + CRp$9.drawEdgeTrianglePath = function(edge, context, pts2) { + context.fillStyle = context.strokeStyle; + var edgeWidth = edge.pstyle("width").pfValue; + for (var i2 = 0; i2 + 1 < pts2.length; i2 += 2) { + var vector = [pts2[i2 + 2] - pts2[i2], pts2[i2 + 3] - pts2[i2 + 1]]; + var length2 = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]); + var normal = [vector[1] / length2, -vector[0] / length2]; + var triangleHead = [normal[0] * edgeWidth / 2, normal[1] * edgeWidth / 2]; + context.beginPath(); + context.moveTo(pts2[i2] - triangleHead[0], pts2[i2 + 1] - triangleHead[1]); + context.lineTo(pts2[i2] + triangleHead[0], pts2[i2 + 1] + triangleHead[1]); + context.lineTo(pts2[i2 + 2], pts2[i2 + 3]); + context.closePath(); + context.fill(); + } }; - } - }); - - // src/rendering-util/selectSvgElement.ts - var selectSvgElement; - var init_selectSvgElement = __esm({ - "src/rendering-util/selectSvgElement.ts"() { - "use strict"; - init_src32(); - init_diagramAPI(); - selectSvgElement = /* @__PURE__ */ __name((id29) => { - const { securityLevel } = getConfig2(); - let root4 = select_default2("body"); - if (securityLevel === "sandbox") { - const sandboxElement = select_default2(`#i${id29}`); - const doc = sandboxElement.node()?.contentDocument ?? document; - root4 = select_default2(doc.body); + CRp$9.drawArrowheads = function(context, edge, opacity) { + var rs = edge._private.rscratch; + var isHaystack = rs.edgeType === "haystack"; + if (!isHaystack) { + this.drawArrowhead(context, edge, "source", rs.arrowStartX, rs.arrowStartY, rs.srcArrowAngle, opacity); + } + this.drawArrowhead(context, edge, "mid-target", rs.midX, rs.midY, rs.midtgtArrowAngle, opacity); + this.drawArrowhead(context, edge, "mid-source", rs.midX, rs.midY, rs.midsrcArrowAngle, opacity); + if (!isHaystack) { + this.drawArrowhead(context, edge, "target", rs.arrowEndX, rs.arrowEndY, rs.tgtArrowAngle, opacity); } - const svg2 = root4.select(`#${id29}`); - return svg2; - }, "selectSvgElement"); - } - }); - - // src/diagrams/info/infoRenderer.ts - var draw6, renderer; - var init_infoRenderer = __esm({ - "src/diagrams/info/infoRenderer.ts"() { - "use strict"; - init_logger(); - init_selectSvgElement(); - init_setupGraphViewbox(); - draw6 = /* @__PURE__ */ __name((text4, id29, version2) => { - log.debug("rendering info diagram\n" + text4); - const svg2 = selectSvgElement(id29); - configureSvgSize(svg2, 100, 400, true); - const group2 = svg2.append("g"); - group2.append("text").attr("x", 100).attr("y", 40).attr("class", "version").attr("font-size", 32).style("text-anchor", "middle").text(`v${version2}`); - }, "draw"); - renderer = { draw: draw6 }; - } - }); - - // src/diagrams/info/infoDiagram.ts - var infoDiagram_exports = {}; - __export(infoDiagram_exports, { - diagram: () => diagram6 - }); - var diagram6; - var init_infoDiagram = __esm({ - "src/diagrams/info/infoDiagram.ts"() { - "use strict"; - init_infoParser(); - init_infoDb(); - init_infoRenderer(); - diagram6 = { - parser: parser7, - db: db2, - renderer }; - } - }); - - // src/diagrams/pie/pieDb.ts - var DEFAULT_PIE_CONFIG, DEFAULT_PIE_DB, sections2, showData, config2, getConfig4, clear10, addSection2, getSections2, setShowData, getShowData, db3; - var init_pieDb = __esm({ - "src/diagrams/pie/pieDb.ts"() { - "use strict"; - init_logger(); - init_commonDb(); - init_defaultConfig(); - DEFAULT_PIE_CONFIG = defaultConfig_default.pie; - DEFAULT_PIE_DB = { - sections: /* @__PURE__ */ new Map(), - showData: false, - config: DEFAULT_PIE_CONFIG + CRp$9.drawArrowhead = function(context, edge, prefix, x5, y6, angle2, opacity) { + if (isNaN(x5) || x5 == null || isNaN(y6) || y6 == null || isNaN(angle2) || angle2 == null) { + return; + } + var self2 = this; + var arrowShape = edge.pstyle(prefix + "-arrow-shape").value; + if (arrowShape === "none") { + return; + } + var arrowClearFill = edge.pstyle(prefix + "-arrow-fill").value === "hollow" ? "both" : "filled"; + var arrowFill = edge.pstyle(prefix + "-arrow-fill").value; + var edgeWidth = edge.pstyle("width").pfValue; + var pArrowWidth = edge.pstyle(prefix + "-arrow-width"); + var arrowWidth = pArrowWidth.value === "match-line" ? edgeWidth : pArrowWidth.pfValue; + if (pArrowWidth.units === "%") arrowWidth *= edgeWidth; + var edgeOpacity = edge.pstyle("opacity").value; + if (opacity === void 0) { + opacity = edgeOpacity; + } + var gco = context.globalCompositeOperation; + if (opacity !== 1 || arrowFill === "hollow") { + context.globalCompositeOperation = "destination-out"; + self2.colorFillStyle(context, 255, 255, 255, 1); + self2.colorStrokeStyle(context, 255, 255, 255, 1); + self2.drawArrowShape(edge, context, arrowClearFill, edgeWidth, arrowShape, arrowWidth, x5, y6, angle2); + context.globalCompositeOperation = gco; + } + var color2 = edge.pstyle(prefix + "-arrow-color").value; + self2.colorFillStyle(context, color2[0], color2[1], color2[2], opacity); + self2.colorStrokeStyle(context, color2[0], color2[1], color2[2], opacity); + self2.drawArrowShape(edge, context, arrowFill, edgeWidth, arrowShape, arrowWidth, x5, y6, angle2); }; - sections2 = DEFAULT_PIE_DB.sections; - showData = DEFAULT_PIE_DB.showData; - config2 = structuredClone(DEFAULT_PIE_CONFIG); - getConfig4 = /* @__PURE__ */ __name(() => structuredClone(config2), "getConfig"); - clear10 = /* @__PURE__ */ __name(() => { - sections2 = /* @__PURE__ */ new Map(); - showData = DEFAULT_PIE_DB.showData; - clear(); - }, "clear"); - addSection2 = /* @__PURE__ */ __name(({ label, value: value2 }) => { - if (!sections2.has(label)) { - sections2.set(label, value2); - log.debug(`added new section: ${label}, with value: ${value2}`); + CRp$9.drawArrowShape = function(edge, context, fill, edgeWidth, shape, shapeWidth, x5, y6, angle2) { + var r2 = this; + var usePaths = this.usePaths() && shape !== "triangle-cross"; + var pathCacheHit = false; + var path4; + var canvasContext = context; + var translation = { + x: x5, + y: y6 + }; + var scale2 = edge.pstyle("arrow-scale").value; + var size4 = this.getArrowWidth(edgeWidth, scale2); + var shapeImpl = r2.arrowShapes[shape]; + if (usePaths) { + var cache3 = r2.arrowPathCache = r2.arrowPathCache || []; + var key = hashString(shape); + var cachedPath = cache3[key]; + if (cachedPath != null) { + path4 = context = cachedPath; + pathCacheHit = true; + } else { + path4 = context = new Path2D(); + cache3[key] = path4; + } + } + if (!pathCacheHit) { + if (context.beginPath) { + context.beginPath(); + } + if (usePaths) { + shapeImpl.draw(context, 1, 0, { + x: 0, + y: 0 + }, 1); + } else { + shapeImpl.draw(context, size4, angle2, translation, edgeWidth); + } + if (context.closePath) { + context.closePath(); + } + } + context = canvasContext; + if (usePaths) { + context.translate(x5, y6); + context.rotate(angle2); + context.scale(size4, size4); + } + if (fill === "filled" || fill === "both") { + if (usePaths) { + context.fill(path4); + } else { + context.fill(); + } + } + if (fill === "hollow" || fill === "both") { + context.lineWidth = shapeWidth / (usePaths ? size4 : 1); + context.lineJoin = "miter"; + if (usePaths) { + context.stroke(path4); + } else { + context.stroke(); + } + } + if (usePaths) { + context.scale(1 / size4, 1 / size4); + context.rotate(-angle2); + context.translate(-x5, -y6); } - }, "addSection"); - getSections2 = /* @__PURE__ */ __name(() => sections2, "getSections"); - setShowData = /* @__PURE__ */ __name((toggle) => { - showData = toggle; - }, "setShowData"); - getShowData = /* @__PURE__ */ __name(() => showData, "getShowData"); - db3 = { - getConfig: getConfig4, - clear: clear10, - setDiagramTitle, - getDiagramTitle, - setAccTitle, - getAccTitle, - setAccDescription, - getAccDescription, - addSection: addSection2, - getSections: getSections2, - setShowData, - getShowData }; - } - }); - - // src/diagrams/pie/pieParser.ts - var populateDb, parser8; - var init_pieParser = __esm({ - "src/diagrams/pie/pieParser.ts"() { - "use strict"; - init_mermaid_parser_core(); - init_logger(); - init_populateCommonDb(); - init_pieDb(); - populateDb = /* @__PURE__ */ __name((ast, db10) => { - populateCommonDb(ast, db10); - db10.setShowData(ast.showData); - ast.sections.map(db10.addSection); - }, "populateDb"); - parser8 = { - parse: /* @__PURE__ */ __name(async (input) => { - const ast = await parse("pie", input); - log.debug(ast); - populateDb(ast, db3); - }, "parse") + CRp$8 = {}; + CRp$8.safeDrawImage = function(context, img, ix, iy, iw, ih, x5, y6, w4, h3) { + if (iw <= 0 || ih <= 0 || w4 <= 0 || h3 <= 0) { + return; + } + try { + context.drawImage(img, ix, iy, iw, ih, x5, y6, w4, h3); + } catch (e3) { + warn(e3); + } }; - } - }); - - // src/diagrams/pie/pieStyles.ts - var getStyles7, pieStyles_default; - var init_pieStyles = __esm({ - "src/diagrams/pie/pieStyles.ts"() { - "use strict"; - getStyles7 = /* @__PURE__ */ __name((options3) => ` - .pieCircle{ - stroke: ${options3.pieStrokeColor}; - stroke-width : ${options3.pieStrokeWidth}; - opacity : ${options3.pieOpacity}; - } - .pieOuterCircle{ - stroke: ${options3.pieOuterStrokeColor}; - stroke-width: ${options3.pieOuterStrokeWidth}; - fill: none; - } - .pieTitleText { - text-anchor: middle; - font-size: ${options3.pieTitleTextSize}; - fill: ${options3.pieTitleTextColor}; - font-family: ${options3.fontFamily}; - } - .slice { - font-family: ${options3.fontFamily}; - fill: ${options3.pieSectionTextColor}; - font-size:${options3.pieSectionTextSize}; - // fill: white; - } - .legend text { - fill: ${options3.pieLegendTextColor}; - font-family: ${options3.fontFamily}; - font-size: ${options3.pieLegendTextSize}; - } -`, "getStyles"); - pieStyles_default = getStyles7; - } - }); - - // src/diagrams/pie/pieRenderer.ts - var createPieArcs, draw7, renderer2; - var init_pieRenderer = __esm({ - "src/diagrams/pie/pieRenderer.ts"() { - "use strict"; - init_src32(); - init_diagramAPI(); - init_logger(); - init_selectSvgElement(); - init_setupGraphViewbox(); - init_utils2(); - createPieArcs = /* @__PURE__ */ __name((sections6) => { - const pieData = [...sections6.entries()].map((element3) => { - return { - label: element3[0], - value: element3[1] - }; - }).sort((a2, b2) => { - return b2.value - a2.value; - }); - const pie2 = pie_default().value( - (d3Section) => d3Section.value - ); - return pie2(pieData); - }, "createPieArcs"); - draw7 = /* @__PURE__ */ __name((text4, id29, _version, diagObj) => { - log.debug("rendering pie chart\n" + text4); - const db10 = diagObj.db; - const globalConfig = getConfig2(); - const pieConfig = cleanAndMerge(db10.getConfig(), globalConfig.pie); - const MARGIN = 40; - const LEGEND_RECT_SIZE = 18; - const LEGEND_SPACING = 4; - const height2 = 450; - const pieWidth = height2; - const svg2 = selectSvgElement(id29); - const group2 = svg2.append("g"); - group2.attr("transform", "translate(" + pieWidth / 2 + "," + height2 / 2 + ")"); - const { themeVariables } = globalConfig; - let [outerStrokeWidth] = parseFontSize(themeVariables.pieOuterStrokeWidth); - outerStrokeWidth ??= 2; - const textPosition = pieConfig.textPosition; - const radius2 = Math.min(pieWidth, height2) / 2 - MARGIN; - const arcGenerator = arc_default().innerRadius(0).outerRadius(radius2); - const labelArcGenerator = arc_default().innerRadius(radius2 * textPosition).outerRadius(radius2 * textPosition); - group2.append("circle").attr("cx", 0).attr("cy", 0).attr("r", radius2 + outerStrokeWidth / 2).attr("class", "pieOuterCircle"); - const sections6 = db10.getSections(); - const arcs = createPieArcs(sections6); - const myGeneratedColors = [ - themeVariables.pie1, - themeVariables.pie2, - themeVariables.pie3, - themeVariables.pie4, - themeVariables.pie5, - themeVariables.pie6, - themeVariables.pie7, - themeVariables.pie8, - themeVariables.pie9, - themeVariables.pie10, - themeVariables.pie11, - themeVariables.pie12 - ]; - const color2 = ordinal(myGeneratedColors); - group2.selectAll("mySlices").data(arcs).enter().append("path").attr("d", arcGenerator).attr("fill", (datum2) => { - return color2(datum2.data.label); - }).attr("class", "pieCircle"); - let sum2 = 0; - sections6.forEach((section) => { - sum2 += section; - }); - group2.selectAll("mySlices").data(arcs).enter().append("text").text((datum2) => { - return (datum2.data.value / sum2 * 100).toFixed(0) + "%"; - }).attr("transform", (datum2) => { - return "translate(" + labelArcGenerator.centroid(datum2) + ")"; - }).style("text-anchor", "middle").attr("class", "slice"); - group2.append("text").text(db10.getDiagramTitle()).attr("x", 0).attr("y", -(height2 - 50) / 2).attr("class", "pieTitleText"); - const legend = group2.selectAll(".legend").data(color2.domain()).enter().append("g").attr("class", "legend").attr("transform", (_datum, index) => { - const height3 = LEGEND_RECT_SIZE + LEGEND_SPACING; - const offset = height3 * color2.domain().length / 2; - const horizontal = 12 * LEGEND_RECT_SIZE; - const vertical = index * height3 - offset; - return "translate(" + horizontal + "," + vertical + ")"; - }); - legend.append("rect").attr("width", LEGEND_RECT_SIZE).attr("height", LEGEND_RECT_SIZE).style("fill", color2).style("stroke", color2); - legend.data(arcs).append("text").attr("x", LEGEND_RECT_SIZE + LEGEND_SPACING).attr("y", LEGEND_RECT_SIZE - LEGEND_SPACING).text((datum2) => { - const { label, value: value2 } = datum2.data; - if (db10.getShowData()) { - return `${label} [${value2}]`; + CRp$8.drawInscribedImage = function(context, img, node2, index, nodeOpacity) { + var r2 = this; + var pos = node2.position(); + var nodeX = pos.x; + var nodeY = pos.y; + var styleObj = node2.cy().style(); + var getIndexedStyle = styleObj.getIndexedStyle.bind(styleObj); + var fit2 = getIndexedStyle(node2, "background-fit", "value", index); + var repeat2 = getIndexedStyle(node2, "background-repeat", "value", index); + var nodeW = node2.width(); + var nodeH = node2.height(); + var paddingX2 = node2.padding() * 2; + var nodeTW = nodeW + (getIndexedStyle(node2, "background-width-relative-to", "value", index) === "inner" ? 0 : paddingX2); + var nodeTH = nodeH + (getIndexedStyle(node2, "background-height-relative-to", "value", index) === "inner" ? 0 : paddingX2); + var rs = node2._private.rscratch; + var clip = getIndexedStyle(node2, "background-clip", "value", index); + var shouldClip = clip === "node"; + var imgOpacity = getIndexedStyle(node2, "background-image-opacity", "value", index) * nodeOpacity; + var smooth = getIndexedStyle(node2, "background-image-smoothing", "value", index); + var cornerRadius = node2.pstyle("corner-radius").value; + if (cornerRadius !== "auto") cornerRadius = node2.pstyle("corner-radius").pfValue; + var imgW = img.width || img.cachedW; + var imgH = img.height || img.cachedH; + if (null == imgW || null == imgH) { + document.body.appendChild(img); + imgW = img.cachedW = img.width || img.offsetWidth; + imgH = img.cachedH = img.height || img.offsetHeight; + document.body.removeChild(img); + } + var w4 = imgW; + var h3 = imgH; + if (getIndexedStyle(node2, "background-width", "value", index) !== "auto") { + if (getIndexedStyle(node2, "background-width", "units", index) === "%") { + w4 = getIndexedStyle(node2, "background-width", "pfValue", index) * nodeTW; + } else { + w4 = getIndexedStyle(node2, "background-width", "pfValue", index); } - return label; - }); - const longestTextWidth = Math.max( - ...legend.selectAll("text").nodes().map((node2) => node2?.getBoundingClientRect().width ?? 0) - ); - const totalWidth = pieWidth + MARGIN + LEGEND_RECT_SIZE + LEGEND_SPACING + longestTextWidth; - svg2.attr("viewBox", `0 0 ${totalWidth} ${height2}`); - configureSvgSize(svg2, height2, totalWidth, pieConfig.useMaxWidth); - }, "draw"); - renderer2 = { draw: draw7 }; - } - }); - - // src/diagrams/pie/pieDiagram.ts - var pieDiagram_exports = {}; - __export(pieDiagram_exports, { - diagram: () => diagram7 - }); - var diagram7; - var init_pieDiagram = __esm({ - "src/diagrams/pie/pieDiagram.ts"() { - "use strict"; - init_pieParser(); - init_pieDb(); - init_pieStyles(); - init_pieRenderer(); - diagram7 = { - parser: parser8, - db: db3, - renderer: renderer2, - styles: pieStyles_default + } + if (getIndexedStyle(node2, "background-height", "value", index) !== "auto") { + if (getIndexedStyle(node2, "background-height", "units", index) === "%") { + h3 = getIndexedStyle(node2, "background-height", "pfValue", index) * nodeTH; + } else { + h3 = getIndexedStyle(node2, "background-height", "pfValue", index); + } + } + if (w4 === 0 || h3 === 0) { + return; + } + if (fit2 === "contain") { + var scale2 = Math.min(nodeTW / w4, nodeTH / h3); + w4 *= scale2; + h3 *= scale2; + } else if (fit2 === "cover") { + var scale2 = Math.max(nodeTW / w4, nodeTH / h3); + w4 *= scale2; + h3 *= scale2; + } + var x5 = nodeX - nodeTW / 2; + var posXUnits = getIndexedStyle(node2, "background-position-x", "units", index); + var posXPfVal = getIndexedStyle(node2, "background-position-x", "pfValue", index); + if (posXUnits === "%") { + x5 += (nodeTW - w4) * posXPfVal; + } else { + x5 += posXPfVal; + } + var offXUnits = getIndexedStyle(node2, "background-offset-x", "units", index); + var offXPfVal = getIndexedStyle(node2, "background-offset-x", "pfValue", index); + if (offXUnits === "%") { + x5 += (nodeTW - w4) * offXPfVal; + } else { + x5 += offXPfVal; + } + var y6 = nodeY - nodeTH / 2; + var posYUnits = getIndexedStyle(node2, "background-position-y", "units", index); + var posYPfVal = getIndexedStyle(node2, "background-position-y", "pfValue", index); + if (posYUnits === "%") { + y6 += (nodeTH - h3) * posYPfVal; + } else { + y6 += posYPfVal; + } + var offYUnits = getIndexedStyle(node2, "background-offset-y", "units", index); + var offYPfVal = getIndexedStyle(node2, "background-offset-y", "pfValue", index); + if (offYUnits === "%") { + y6 += (nodeTH - h3) * offYPfVal; + } else { + y6 += offYPfVal; + } + if (rs.pathCache) { + x5 -= nodeX; + y6 -= nodeY; + nodeX = 0; + nodeY = 0; + } + var gAlpha = context.globalAlpha; + context.globalAlpha = imgOpacity; + var smoothingEnabled = r2.getImgSmoothing(context); + var isSmoothingSwitched = false; + if (smooth === "no" && smoothingEnabled) { + r2.setImgSmoothing(context, false); + isSmoothingSwitched = true; + } else if (smooth === "yes" && !smoothingEnabled) { + r2.setImgSmoothing(context, true); + isSmoothingSwitched = true; + } + if (repeat2 === "no-repeat") { + if (shouldClip) { + context.save(); + if (rs.pathCache) { + context.clip(rs.pathCache); + } else { + r2.nodeShapes[r2.getNodeShape(node2)].draw(context, nodeX, nodeY, nodeTW, nodeTH, cornerRadius, rs); + context.clip(); + } + } + r2.safeDrawImage(context, img, 0, 0, imgW, imgH, x5, y6, w4, h3); + if (shouldClip) { + context.restore(); + } + } else { + var pattern = context.createPattern(img, repeat2); + context.fillStyle = pattern; + r2.nodeShapes[r2.getNodeShape(node2)].draw(context, nodeX, nodeY, nodeTW, nodeTH, cornerRadius, rs); + context.translate(x5, y6); + context.fill(); + context.translate(-x5, -y6); + } + context.globalAlpha = gAlpha; + if (isSmoothingSwitched) { + r2.setImgSmoothing(context, smoothingEnabled); + } }; - } - }); - - // src/diagrams/quadrant-chart/parser/quadrant.jison - var parser9, quadrant_default; - var init_quadrant = __esm({ - "src/diagrams/quadrant-chart/parser/quadrant.jison"() { - "use strict"; - parser9 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; - return o3; - }, "o"), $V0 = [1, 3], $V1 = [1, 4], $V2 = [1, 5], $V3 = [1, 6], $V4 = [1, 7], $V5 = [1, 4, 5, 10, 12, 13, 14, 18, 25, 35, 37, 39, 41, 42, 48, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 63, 64, 65, 66, 67], $V6 = [1, 4, 5, 10, 12, 13, 14, 18, 25, 28, 35, 37, 39, 41, 42, 48, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 63, 64, 65, 66, 67], $V7 = [55, 56, 57], $V8 = [2, 36], $V9 = [1, 37], $Va = [1, 36], $Vb = [1, 38], $Vc = [1, 35], $Vd = [1, 43], $Ve = [1, 41], $Vf = [1, 14], $Vg = [1, 23], $Vh = [1, 18], $Vi = [1, 19], $Vj = [1, 20], $Vk = [1, 21], $Vl = [1, 22], $Vm = [1, 24], $Vn = [1, 25], $Vo = [1, 26], $Vp = [1, 27], $Vq = [1, 28], $Vr = [1, 29], $Vs = [1, 32], $Vt = [1, 33], $Vu = [1, 34], $Vv = [1, 39], $Vw = [1, 40], $Vx = [1, 42], $Vy = [1, 44], $Vz = [1, 62], $VA = [1, 61], $VB = [4, 5, 8, 10, 12, 13, 14, 18, 44, 47, 49, 55, 56, 57, 63, 64, 65, 66, 67], $VC = [1, 65], $VD = [1, 66], $VE = [1, 67], $VF = [1, 68], $VG = [1, 69], $VH = [1, 70], $VI = [1, 71], $VJ = [1, 72], $VK = [1, 73], $VL = [1, 74], $VM = [1, 75], $VN = [1, 76], $VO = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], $VP = [1, 90], $VQ = [1, 91], $VR = [1, 92], $VS = [1, 99], $VT = [1, 93], $VU = [1, 96], $VV = [1, 94], $VW = [1, 95], $VX = [1, 97], $VY = [1, 98], $VZ = [1, 102], $V_ = [10, 55, 56, 57], $V$ = [4, 5, 6, 8, 10, 11, 13, 17, 18, 19, 20, 55, 56, 57]; - var parser24 = { - trace: /* @__PURE__ */ __name(function trace() { - }, "trace"), - yy: {}, - symbols_: { "error": 2, "idStringToken": 3, "ALPHA": 4, "NUM": 5, "NODE_STRING": 6, "DOWN": 7, "MINUS": 8, "DEFAULT": 9, "COMMA": 10, "COLON": 11, "AMP": 12, "BRKT": 13, "MULT": 14, "UNICODE_TEXT": 15, "styleComponent": 16, "UNIT": 17, "SPACE": 18, "STYLE": 19, "PCT": 20, "idString": 21, "style": 22, "stylesOpt": 23, "classDefStatement": 24, "CLASSDEF": 25, "start": 26, "eol": 27, "QUADRANT": 28, "document": 29, "line": 30, "statement": 31, "axisDetails": 32, "quadrantDetails": 33, "points": 34, "title": 35, "title_value": 36, "acc_title": 37, "acc_title_value": 38, "acc_descr": 39, "acc_descr_value": 40, "acc_descr_multiline_value": 41, "section": 42, "text": 43, "point_start": 44, "point_x": 45, "point_y": 46, "class_name": 47, "X-AXIS": 48, "AXIS-TEXT-DELIMITER": 49, "Y-AXIS": 50, "QUADRANT_1": 51, "QUADRANT_2": 52, "QUADRANT_3": 53, "QUADRANT_4": 54, "NEWLINE": 55, "SEMI": 56, "EOF": 57, "alphaNumToken": 58, "textNoTagsToken": 59, "STR": 60, "MD_STR": 61, "alphaNum": 62, "PUNCTUATION": 63, "PLUS": 64, "EQUALS": 65, "DOT": 66, "UNDERSCORE": 67, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 4: "ALPHA", 5: "NUM", 6: "NODE_STRING", 7: "DOWN", 8: "MINUS", 9: "DEFAULT", 10: "COMMA", 11: "COLON", 12: "AMP", 13: "BRKT", 14: "MULT", 15: "UNICODE_TEXT", 17: "UNIT", 18: "SPACE", 19: "STYLE", 20: "PCT", 25: "CLASSDEF", 28: "QUADRANT", 35: "title", 36: "title_value", 37: "acc_title", 38: "acc_title_value", 39: "acc_descr", 40: "acc_descr_value", 41: "acc_descr_multiline_value", 42: "section", 44: "point_start", 45: "point_x", 46: "point_y", 47: "class_name", 48: "X-AXIS", 49: "AXIS-TEXT-DELIMITER", 50: "Y-AXIS", 51: "QUADRANT_1", 52: "QUADRANT_2", 53: "QUADRANT_3", 54: "QUADRANT_4", 55: "NEWLINE", 56: "SEMI", 57: "EOF", 60: "STR", 61: "MD_STR", 63: "PUNCTUATION", 64: "PLUS", 65: "EQUALS", 66: "DOT", 67: "UNDERSCORE" }, - productions_: [0, [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [21, 1], [21, 2], [22, 1], [22, 2], [23, 1], [23, 3], [24, 5], [26, 2], [26, 2], [26, 2], [29, 0], [29, 2], [30, 2], [31, 0], [31, 1], [31, 2], [31, 1], [31, 1], [31, 1], [31, 2], [31, 2], [31, 2], [31, 1], [31, 1], [34, 4], [34, 5], [34, 5], [34, 6], [32, 4], [32, 3], [32, 2], [32, 4], [32, 3], [32, 2], [33, 2], [33, 2], [33, 2], [33, 2], [27, 1], [27, 1], [27, 1], [43, 1], [43, 2], [43, 1], [43, 1], [62, 1], [62, 2], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [59, 1], [59, 1], [59, 1]], - performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 23: - this.$ = $$[$0]; - break; - case 24: - this.$ = $$[$0 - 1] + "" + $$[$0]; - break; - case 26: - this.$ = $$[$0 - 1] + $$[$0]; - break; - case 27: - this.$ = [$$[$0].trim()]; - break; - case 28: - $$[$0 - 2].push($$[$0].trim()); - this.$ = $$[$0 - 2]; - break; - case 29: - this.$ = $$[$0 - 4]; - yy.addClass($$[$0 - 2], $$[$0]); - break; - case 37: - this.$ = []; - break; - case 42: - this.$ = $$[$0].trim(); - yy.setDiagramTitle(this.$); - break; - case 43: - this.$ = $$[$0].trim(); - yy.setAccTitle(this.$); - break; - case 44: - case 45: - this.$ = $$[$0].trim(); - yy.setAccDescription(this.$); - break; - case 46: - yy.addSection($$[$0].substr(8)); - this.$ = $$[$0].substr(8); - break; - case 47: - yy.addPoint($$[$0 - 3], "", $$[$0 - 1], $$[$0], []); - break; - case 48: - yy.addPoint($$[$0 - 4], $$[$0 - 3], $$[$0 - 1], $$[$0], []); - break; - case 49: - yy.addPoint($$[$0 - 4], "", $$[$0 - 2], $$[$0 - 1], $$[$0]); - break; - case 50: - yy.addPoint($$[$0 - 5], $$[$0 - 4], $$[$0 - 2], $$[$0 - 1], $$[$0]); - break; - case 51: - yy.setXAxisLeftText($$[$0 - 2]); - yy.setXAxisRightText($$[$0]); - break; - case 52: - $$[$0 - 1].text += " \u27F6 "; - yy.setXAxisLeftText($$[$0 - 1]); - break; - case 53: - yy.setXAxisLeftText($$[$0]); - break; - case 54: - yy.setYAxisBottomText($$[$0 - 2]); - yy.setYAxisTopText($$[$0]); - break; - case 55: - $$[$0 - 1].text += " \u27F6 "; - yy.setYAxisBottomText($$[$0 - 1]); - break; - case 56: - yy.setYAxisBottomText($$[$0]); - break; - case 57: - yy.setQuadrant1Text($$[$0]); - break; - case 58: - yy.setQuadrant2Text($$[$0]); - break; - case 59: - yy.setQuadrant3Text($$[$0]); - break; - case 60: - yy.setQuadrant4Text($$[$0]); - break; - case 64: - this.$ = { text: $$[$0], type: "text" }; - break; - case 65: - this.$ = { text: $$[$0 - 1].text + "" + $$[$0], type: $$[$0 - 1].type }; - break; - case 66: - this.$ = { text: $$[$0], type: "text" }; - break; - case 67: - this.$ = { text: $$[$0], type: "markdown" }; - break; - case 68: - this.$ = $$[$0]; + CRp$7 = {}; + CRp$7.eleTextBiggerThanMin = function(ele, scale2) { + if (!scale2) { + var zoom2 = ele.cy().zoom(); + var pxRatio = this.getPixelRatio(); + var lvl = Math.ceil(log22(zoom2 * pxRatio)); + scale2 = Math.pow(2, lvl); + } + var computedSize = ele.pstyle("font-size").pfValue * scale2; + var minSize = ele.pstyle("min-zoomed-font-size").pfValue; + if (computedSize < minSize) { + return false; + } + return true; + }; + CRp$7.drawElementText = function(context, ele, shiftToOriginWithBb, force, prefix) { + var useEleOpacity = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : true; + var r2 = this; + if (force == null) { + if (useEleOpacity && !r2.eleTextBiggerThanMin(ele)) { + return; + } + } else if (force === false) { + return; + } + if (ele.isNode()) { + var label = ele.pstyle("label"); + if (!label || !label.value) { + return; + } + var justification = r2.getLabelJustification(ele); + context.textAlign = justification; + context.textBaseline = "bottom"; + } else { + var badLine = ele.element()._private.rscratch.badLine; + var _label = ele.pstyle("label"); + var srcLabel = ele.pstyle("source-label"); + var tgtLabel = ele.pstyle("target-label"); + if (badLine || (!_label || !_label.value) && (!srcLabel || !srcLabel.value) && (!tgtLabel || !tgtLabel.value)) { + return; + } + context.textAlign = "center"; + context.textBaseline = "bottom"; + } + var applyRotation = !shiftToOriginWithBb; + var bb; + if (shiftToOriginWithBb) { + bb = shiftToOriginWithBb; + context.translate(-bb.x1, -bb.y1); + } + if (prefix == null) { + r2.drawText(context, ele, null, applyRotation, useEleOpacity); + if (ele.isEdge()) { + r2.drawText(context, ele, "source", applyRotation, useEleOpacity); + r2.drawText(context, ele, "target", applyRotation, useEleOpacity); + } + } else { + r2.drawText(context, ele, prefix, applyRotation, useEleOpacity); + } + if (shiftToOriginWithBb) { + context.translate(bb.x1, bb.y1); + } + }; + CRp$7.getFontCache = function(context) { + var cache3; + this.fontCaches = this.fontCaches || []; + for (var i2 = 0; i2 < this.fontCaches.length; i2++) { + cache3 = this.fontCaches[i2]; + if (cache3.context === context) { + return cache3; + } + } + cache3 = { + context + }; + this.fontCaches.push(cache3); + return cache3; + }; + CRp$7.setupTextStyle = function(context, ele) { + var useEleOpacity = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; + var labelStyle = ele.pstyle("font-style").strValue; + var labelSize = ele.pstyle("font-size").pfValue + "px"; + var labelFamily = ele.pstyle("font-family").strValue; + var labelWeight = ele.pstyle("font-weight").strValue; + var opacity = useEleOpacity ? ele.effectiveOpacity() * ele.pstyle("text-opacity").value : 1; + var outlineOpacity = ele.pstyle("text-outline-opacity").value * opacity; + var color2 = ele.pstyle("color").value; + var outlineColor = ele.pstyle("text-outline-color").value; + context.font = labelStyle + " " + labelWeight + " " + labelSize + " " + labelFamily; + context.lineJoin = "round"; + this.colorFillStyle(context, color2[0], color2[1], color2[2], opacity); + this.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], outlineOpacity); + }; + __name(circle3, "circle"); + __name(roundRect, "roundRect"); + CRp$7.getTextAngle = function(ele, prefix) { + var theta; + var _p = ele._private; + var rscratch = _p.rscratch; + var pdash = prefix ? prefix + "-" : ""; + var rotation = ele.pstyle(pdash + "text-rotation"); + if (rotation.strValue === "autorotate") { + var textAngle = getPrefixedProperty(rscratch, "labelAngle", prefix); + theta = ele.isEdge() ? textAngle : 0; + } else if (rotation.strValue === "none") { + theta = 0; + } else { + theta = rotation.pfValue; + } + return theta; + }; + CRp$7.drawText = function(context, ele, prefix) { + var applyRotation = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; + var useEleOpacity = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true; + var _p = ele._private; + var rscratch = _p.rscratch; + var parentOpacity = useEleOpacity ? ele.effectiveOpacity() : 1; + if (useEleOpacity && (parentOpacity === 0 || ele.pstyle("text-opacity").value === 0)) { + return; + } + if (prefix === "main") { + prefix = null; + } + var textX = getPrefixedProperty(rscratch, "labelX", prefix); + var textY = getPrefixedProperty(rscratch, "labelY", prefix); + var orgTextX, orgTextY; + var text4 = this.getLabelText(ele, prefix); + if (text4 != null && text4 !== "" && !isNaN(textX) && !isNaN(textY)) { + this.setupTextStyle(context, ele, useEleOpacity); + var pdash = prefix ? prefix + "-" : ""; + var textW = getPrefixedProperty(rscratch, "labelWidth", prefix); + var textH = getPrefixedProperty(rscratch, "labelHeight", prefix); + var marginX = ele.pstyle(pdash + "text-margin-x").pfValue; + var marginY = ele.pstyle(pdash + "text-margin-y").pfValue; + var isEdge2 = ele.isEdge(); + var halign = ele.pstyle("text-halign").value; + var valign = ele.pstyle("text-valign").value; + if (isEdge2) { + halign = "center"; + valign = "center"; + } + textX += marginX; + textY += marginY; + var theta; + if (!applyRotation) { + theta = 0; + } else { + theta = this.getTextAngle(ele, prefix); + } + if (theta !== 0) { + orgTextX = textX; + orgTextY = textY; + context.translate(orgTextX, orgTextY); + context.rotate(theta); + textX = 0; + textY = 0; + } + switch (valign) { + case "top": + break; + case "center": + textY += textH / 2; + break; + case "bottom": + textY += textH; + break; + } + var backgroundOpacity = ele.pstyle("text-background-opacity").value; + var borderOpacity = ele.pstyle("text-border-opacity").value; + var textBorderWidth = ele.pstyle("text-border-width").pfValue; + var backgroundPadding = ele.pstyle("text-background-padding").pfValue; + var styleShape = ele.pstyle("text-background-shape").strValue; + var rounded = styleShape === "round-rectangle" || styleShape === "roundrectangle"; + var circled = styleShape === "circle"; + var roundRadius = 2; + if (backgroundOpacity > 0 || textBorderWidth > 0 && borderOpacity > 0) { + var textFill = context.fillStyle; + var textStroke = context.strokeStyle; + var textLineWidth = context.lineWidth; + var textBackgroundColor = ele.pstyle("text-background-color").value; + var textBorderColor = ele.pstyle("text-border-color").value; + var textBorderStyle = ele.pstyle("text-border-style").value; + var doFill = backgroundOpacity > 0; + var doStroke = textBorderWidth > 0 && borderOpacity > 0; + var bgX = textX - backgroundPadding; + switch (halign) { + case "left": + bgX -= textW; break; - case 69: - this.$ = $$[$0 - 1] + "" + $$[$0]; + case "center": + bgX -= textW / 2; break; } - }, "anonymous"), - table: [{ 18: $V0, 26: 1, 27: 2, 28: $V1, 55: $V2, 56: $V3, 57: $V4 }, { 1: [3] }, { 18: $V0, 26: 8, 27: 2, 28: $V1, 55: $V2, 56: $V3, 57: $V4 }, { 18: $V0, 26: 9, 27: 2, 28: $V1, 55: $V2, 56: $V3, 57: $V4 }, o2($V5, [2, 33], { 29: 10 }), o2($V6, [2, 61]), o2($V6, [2, 62]), o2($V6, [2, 63]), { 1: [2, 30] }, { 1: [2, 31] }, o2($V7, $V8, { 30: 11, 31: 12, 24: 13, 32: 15, 33: 16, 34: 17, 43: 30, 58: 31, 1: [2, 32], 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $Vf, 25: $Vg, 35: $Vh, 37: $Vi, 39: $Vj, 41: $Vk, 42: $Vl, 48: $Vm, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V5, [2, 34]), { 27: 45, 55: $V2, 56: $V3, 57: $V4 }, o2($V7, [2, 37]), o2($V7, $V8, { 24: 13, 32: 15, 33: 16, 34: 17, 43: 30, 58: 31, 31: 46, 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $Vf, 25: $Vg, 35: $Vh, 37: $Vi, 39: $Vj, 41: $Vk, 42: $Vl, 48: $Vm, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 39]), o2($V7, [2, 40]), o2($V7, [2, 41]), { 36: [1, 47] }, { 38: [1, 48] }, { 40: [1, 49] }, o2($V7, [2, 45]), o2($V7, [2, 46]), { 18: [1, 50] }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 51, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 52, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 53, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 54, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 55, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 56, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 44: [1, 57], 47: [1, 58], 58: 60, 59: 59, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, o2($VB, [2, 64]), o2($VB, [2, 66]), o2($VB, [2, 67]), o2($VB, [2, 70]), o2($VB, [2, 71]), o2($VB, [2, 72]), o2($VB, [2, 73]), o2($VB, [2, 74]), o2($VB, [2, 75]), o2($VB, [2, 76]), o2($VB, [2, 77]), o2($VB, [2, 78]), o2($VB, [2, 79]), o2($VB, [2, 80]), o2($V5, [2, 35]), o2($V7, [2, 38]), o2($V7, [2, 42]), o2($V7, [2, 43]), o2($V7, [2, 44]), { 3: 64, 4: $VC, 5: $VD, 6: $VE, 7: $VF, 8: $VG, 9: $VH, 10: $VI, 11: $VJ, 12: $VK, 13: $VL, 14: $VM, 15: $VN, 21: 63 }, o2($V7, [2, 53], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 49: [1, 77], 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 56], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 49: [1, 78], 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 57], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 58], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 59], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 60], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), { 45: [1, 79] }, { 44: [1, 80] }, o2($VB, [2, 65]), o2($VB, [2, 81]), o2($VB, [2, 82]), o2($VB, [2, 83]), { 3: 82, 4: $VC, 5: $VD, 6: $VE, 7: $VF, 8: $VG, 9: $VH, 10: $VI, 11: $VJ, 12: $VK, 13: $VL, 14: $VM, 15: $VN, 18: [1, 81] }, o2($VO, [2, 23]), o2($VO, [2, 1]), o2($VO, [2, 2]), o2($VO, [2, 3]), o2($VO, [2, 4]), o2($VO, [2, 5]), o2($VO, [2, 6]), o2($VO, [2, 7]), o2($VO, [2, 8]), o2($VO, [2, 9]), o2($VO, [2, 10]), o2($VO, [2, 11]), o2($VO, [2, 12]), o2($V7, [2, 52], { 58: 31, 43: 83, 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 55], { 58: 31, 43: 84, 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), { 46: [1, 85] }, { 45: [1, 86] }, { 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 16: 89, 17: $VV, 18: $VW, 19: $VX, 20: $VY, 22: 88, 23: 87 }, o2($VO, [2, 24]), o2($V7, [2, 51], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 54], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 47], { 22: 88, 16: 89, 23: 100, 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 17: $VV, 18: $VW, 19: $VX, 20: $VY }), { 46: [1, 101] }, o2($V7, [2, 29], { 10: $VZ }), o2($V_, [2, 27], { 16: 103, 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 17: $VV, 18: $VW, 19: $VX, 20: $VY }), o2($V$, [2, 25]), o2($V$, [2, 13]), o2($V$, [2, 14]), o2($V$, [2, 15]), o2($V$, [2, 16]), o2($V$, [2, 17]), o2($V$, [2, 18]), o2($V$, [2, 19]), o2($V$, [2, 20]), o2($V$, [2, 21]), o2($V$, [2, 22]), o2($V7, [2, 49], { 10: $VZ }), o2($V7, [2, 48], { 22: 88, 16: 89, 23: 104, 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 17: $VV, 18: $VW, 19: $VX, 20: $VY }), { 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 16: 89, 17: $VV, 18: $VW, 19: $VX, 20: $VY, 22: 105 }, o2($V$, [2, 26]), o2($V7, [2, 50], { 10: $VZ }), o2($V_, [2, 28], { 16: 103, 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 17: $VV, 18: $VW, 19: $VX, 20: $VY })], - defaultActions: { 8: [2, 30], 9: [2, 31] }, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); - } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; - } - }, "parseError"), - parse: /* @__PURE__ */ __name(function parse7(input) { - var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; - var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k2 in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { - sharedState.yy[k2] = this.yy[k2]; - } - } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; - sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; - } - var yyloc = lexer3.yylloc; - lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n2) { - stack.length = stack.length - 2 * n2; - vstack.length = vstack.length - n2; - lstack.length = lstack.length - n2; + var bgY = textY - textH - backgroundPadding; + var bgW = textW + 2 * backgroundPadding; + var bgH = textH + 2 * backgroundPadding; + if (doFill) { + context.fillStyle = "rgba(".concat(textBackgroundColor[0], ",").concat(textBackgroundColor[1], ",").concat(textBackgroundColor[2], ",").concat(backgroundOpacity * parentOpacity, ")"); } - __name(popStack, "popStack"); - function lex() { - var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; - if (typeof token2 !== "number") { - if (token2 instanceof Array) { - tstack = token2; - token2 = tstack.pop(); + if (doStroke) { + context.strokeStyle = "rgba(".concat(textBorderColor[0], ",").concat(textBorderColor[1], ",").concat(textBorderColor[2], ",").concat(borderOpacity * parentOpacity, ")"); + context.lineWidth = textBorderWidth; + if (context.setLineDash) { + switch (textBorderStyle) { + case "dotted": + context.setLineDash([1, 1]); + break; + case "dashed": + context.setLineDash([4, 2]); + break; + case "double": + context.lineWidth = textBorderWidth / 4; + context.setLineDash([]); + break; + case "solid": + default: + context.setLineDash([]); + break; } - token2 = self2.symbols_[token2] || token2; } - return token2; } - __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; - while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; + if (rounded) { + context.beginPath(); + roundRect(context, bgX, bgY, bgW, bgH, roundRadius); + } else if (circled) { + context.beginPath(); + circle3(context, bgX, bgY, bgW, bgH); + } else { + context.beginPath(); + context.rect(bgX, bgY, bgW, bgH); + } + if (doFill) context.fill(); + if (doStroke) context.stroke(); + if (doStroke && textBorderStyle === "double") { + var whiteWidth = textBorderWidth / 2; + context.beginPath(); + if (rounded) { + roundRect(context, bgX + whiteWidth, bgY + whiteWidth, bgW - 2 * whiteWidth, bgH - 2 * whiteWidth, roundRadius); } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state4] && table[state4][symbol]; + context.rect(bgX + whiteWidth, bgY + whiteWidth, bgW - 2 * whiteWidth, bgH - 2 * whiteWidth); } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p3 in table[state4]) { - if (this.terminals_[p3] && p3 > TERROR) { - expected.push("'" + this.terminals_[p3] + "'"); - } - } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); - } - this.parseError(errStr, { - text: lexer3.match, - token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, - loc: yyloc, - expected - }); + context.stroke(); + } + context.fillStyle = textFill; + context.strokeStyle = textStroke; + context.lineWidth = textLineWidth; + if (context.setLineDash) context.setLineDash([]); + } + var lineWidth = 2 * ele.pstyle("text-outline-width").pfValue; + if (lineWidth > 0) { + context.lineWidth = lineWidth; + } + if (ele.pstyle("text-wrap").value === "wrap") { + var lines = getPrefixedProperty(rscratch, "labelWrapCachedLines", prefix); + var lineHeight = getPrefixedProperty(rscratch, "labelLineHeight", prefix); + var halfTextW = textW / 2; + var justification = this.getLabelJustification(ele); + if (justification === "auto") ; + else if (halign === "left") { + if (justification === "left") { + textX += -textW; + } else if (justification === "center") { + textX += -halfTextW; } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); + } else if (halign === "center") { + if (justification === "left") { + textX += -halfTextW; + } else if (justification === "right") { + textX += halfTextW; } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r2 = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r2 !== "undefined") { - return r2; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState2); - break; - case 3: - return true; + } else if (halign === "right") { + if (justification === "center") { + textX += halfTextW; + } else if (justification === "right") { + textX += textW; } } - return true; - }, "parse") - }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { - EOF: 1, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str2, hash); - } else { - throw new Error(str2); + switch (valign) { + case "top": + textY -= (lines.length - 1) * lineHeight; + break; + case "center": + case "bottom": + textY -= (lines.length - 1) * lineHeight; + break; + } + for (var l4 = 0; l4 < lines.length; l4++) { + if (lineWidth > 0) { + context.strokeText(lines[l4], textX, textY); } - }, "parseError"), - // resets the lexer, sets new input - setInput: /* @__PURE__ */ __name(function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 + context.fillText(lines[l4], textX, textY); + textY += lineHeight; + } + } else { + if (lineWidth > 0) { + context.strokeText(text4, textX, textY); + } + context.fillText(text4, textX, textY); + } + if (theta !== 0) { + context.rotate(-theta); + context.translate(-orgTextX, -orgTextY); + } + } + }; + CRp$6 = {}; + CRp$6.drawNode = function(context, node2, shiftToOriginWithBb) { + var drawLabel4 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; + var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true; + var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : true; + var r2 = this; + var nodeWidth, nodeHeight; + var _p = node2._private; + var rs = _p.rscratch; + var pos = node2.position(); + if (!number$1(pos.x) || !number$1(pos.y)) { + return; + } + if (shouldDrawOpacity && !node2.visible()) { + return; + } + var eleOpacity = shouldDrawOpacity ? node2.effectiveOpacity() : 1; + var usePaths = r2.usePaths(); + var path4; + var pathCacheHit = false; + var padding2 = node2.padding(); + nodeWidth = node2.width() + 2 * padding2; + nodeHeight = node2.height() + 2 * padding2; + var bb; + if (shiftToOriginWithBb) { + bb = shiftToOriginWithBb; + context.translate(-bb.x1, -bb.y1); + } + var bgImgProp = node2.pstyle("background-image"); + var urls = bgImgProp.value; + var urlDefined = new Array(urls.length); + var image = new Array(urls.length); + var numImages = 0; + for (var i2 = 0; i2 < urls.length; i2++) { + var url = urls[i2]; + var defd = urlDefined[i2] = url != null && url !== "none"; + if (defd) { + var bgImgCrossOrigin = node2.cy().style().getIndexedStyle(node2, "background-image-crossorigin", "value", i2); + numImages++; + image[i2] = r2.getCachedImage(url, bgImgCrossOrigin, function() { + _p.backgroundTimestamp = Date.now(); + node2.emitAndNotify("background"); + }); + } + } + var darkness = node2.pstyle("background-blacken").value; + var borderWidth = node2.pstyle("border-width").pfValue; + var bgOpacity = node2.pstyle("background-opacity").value * eleOpacity; + var borderColor = node2.pstyle("border-color").value; + var borderStyle = node2.pstyle("border-style").value; + var borderJoin = node2.pstyle("border-join").value; + var borderCap = node2.pstyle("border-cap").value; + var borderPosition = node2.pstyle("border-position").value; + var borderPattern = node2.pstyle("border-dash-pattern").pfValue; + var borderOffset = node2.pstyle("border-dash-offset").pfValue; + var borderOpacity = node2.pstyle("border-opacity").value * eleOpacity; + var outlineWidth = node2.pstyle("outline-width").pfValue; + var outlineColor = node2.pstyle("outline-color").value; + var outlineStyle = node2.pstyle("outline-style").value; + var outlineOpacity = node2.pstyle("outline-opacity").value * eleOpacity; + var outlineOffset = node2.pstyle("outline-offset").value; + var cornerRadius = node2.pstyle("corner-radius").value; + if (cornerRadius !== "auto") cornerRadius = node2.pstyle("corner-radius").pfValue; + var setupShapeColor = /* @__PURE__ */ __name(function setupShapeColor2() { + var bgOpy = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : bgOpacity; + r2.eleFillStyle(context, node2, bgOpy); + }, "setupShapeColor"); + var setupBorderColor = /* @__PURE__ */ __name(function setupBorderColor2() { + var bdrOpy = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : borderOpacity; + r2.colorStrokeStyle(context, borderColor[0], borderColor[1], borderColor[2], bdrOpy); + }, "setupBorderColor"); + var setupOutlineColor = /* @__PURE__ */ __name(function setupOutlineColor2() { + var otlnOpy = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : outlineOpacity; + r2.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], otlnOpy); + }, "setupOutlineColor"); + var getPath = /* @__PURE__ */ __name(function getPath2(width3, height2, shape, points) { + var pathCache = r2.nodePathCache = r2.nodePathCache || []; + var key = hashStrings(shape === "polygon" ? shape + "," + points.join(",") : shape, "" + height2, "" + width3, "" + cornerRadius); + var cachedPath = pathCache[key]; + var path5; + var cacheHit = false; + if (cachedPath != null) { + path5 = cachedPath; + cacheHit = true; + rs.pathCache = path5; + } else { + path5 = new Path2D(); + pathCache[key] = rs.pathCache = path5; + } + return { + path: path5, + cacheHit + }; + }, "getPath"); + var styleShape = node2.pstyle("shape").strValue; + var shapePts = node2.pstyle("shape-polygon-points").pfValue; + if (usePaths) { + context.translate(pos.x, pos.y); + var shapePath = getPath(nodeWidth, nodeHeight, styleShape, shapePts); + path4 = shapePath.path; + pathCacheHit = shapePath.cacheHit; + } + var drawShape = /* @__PURE__ */ __name(function drawShape2() { + if (!pathCacheHit) { + var npos = pos; + if (usePaths) { + npos = { + x: 0, + y: 0 }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; - } - this.offset = 0; - return this; - }, "setInput"), - // consumes and returns one char from the input - input: /* @__PURE__ */ __name(function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; + } + r2.nodeShapes[r2.getNodeShape(node2)].draw(path4 || context, npos.x, npos.y, nodeWidth, nodeHeight, cornerRadius, rs); + } + if (usePaths) { + context.fill(path4); + } else { + context.fill(); + } + }, "drawShape"); + var drawImages = /* @__PURE__ */ __name(function drawImages2() { + var nodeOpacity = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : eleOpacity; + var inside = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + var prevBging = _p.backgrounding; + var totalCompleted = 0; + for (var _i = 0; _i < image.length; _i++) { + var bgContainment = node2.cy().style().getIndexedStyle(node2, "background-image-containment", "value", _i); + if (inside && bgContainment === "over" || !inside && bgContainment === "inside") { + totalCompleted++; + continue; + } + if (urlDefined[_i] && image[_i].complete && !image[_i].error) { + totalCompleted++; + r2.drawInscribedImage(context, image[_i], node2, _i, nodeOpacity); + } + } + _p.backgrounding = !(totalCompleted === numImages); + if (prevBging !== _p.backgrounding) { + node2.updateStyle(false); + } + }, "drawImages"); + var drawPie = /* @__PURE__ */ __name(function drawPie2() { + var redrawShape = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; + var pieOpacity = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : eleOpacity; + if (r2.hasPie(node2)) { + r2.drawPie(context, node2, pieOpacity); + if (redrawShape) { + if (!usePaths) { + r2.nodeShapes[r2.getNodeShape(node2)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight, cornerRadius, rs); } - this._input = this._input.slice(1); - return ch; - }, "input"), - // unshifts one char (or a string) into the input - unput: /* @__PURE__ */ __name(function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; + } + } + }, "drawPie"); + var drawStripe = /* @__PURE__ */ __name(function drawStripe2() { + var redrawShape = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; + var stripeOpacity = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : eleOpacity; + if (r2.hasStripe(node2)) { + context.save(); + if (usePaths) { + context.clip(rs.pathCache); + } else { + r2.nodeShapes[r2.getNodeShape(node2)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight, cornerRadius, rs); + context.clip(); + } + r2.drawStripe(context, node2, stripeOpacity); + context.restore(); + if (redrawShape) { + if (!usePaths) { + r2.nodeShapes[r2.getNodeShape(node2)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight, cornerRadius, rs); } - var r2 = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len - }; - if (this.options.ranges) { - this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + } + }, "drawStripe"); + var darken2 = /* @__PURE__ */ __name(function darken3() { + var darkenOpacity = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : eleOpacity; + var opacity = (darkness > 0 ? darkness : -darkness) * darkenOpacity; + var c3 = darkness > 0 ? 0 : 255; + if (darkness !== 0) { + r2.colorFillStyle(context, c3, c3, c3, opacity); + if (usePaths) { + context.fill(path4); + } else { + context.fill(); + } + } + }, "darken"); + var drawBorder = /* @__PURE__ */ __name(function drawBorder2() { + if (borderWidth > 0) { + context.lineWidth = borderWidth; + context.lineCap = borderCap; + context.lineJoin = borderJoin; + if (context.setLineDash) { + switch (borderStyle) { + case "dotted": + context.setLineDash([1, 1]); + break; + case "dashed": + context.setLineDash(borderPattern); + context.lineDashOffset = borderOffset; + break; + case "solid": + case "double": + context.setLineDash([]); + break; } - this.yyleng = this.yytext.length; - return this; - }, "unput"), - // When called from action, caches matched text and appends it on next action - more: /* @__PURE__ */ __name(function() { - this._more = true; - return this; - }, "more"), - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: /* @__PURE__ */ __name(function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; + } + if (borderPosition !== "center") { + context.save(); + context.lineWidth *= 2; + if (borderPosition === "inside") { + usePaths ? context.clip(path4) : context.clip(); } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - return this; - }, "reject"), - // retain first n characters of the match - less: /* @__PURE__ */ __name(function(n2) { - this.unput(this.match.slice(n2)); - }, "less"), - // displays already matched input, i.e. for error messages - pastInput: /* @__PURE__ */ __name(function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, "pastInput"), - // displays upcoming input, i.e. for error messages - upcomingInput: /* @__PURE__ */ __name(function() { - var next3 = this.match; - if (next3.length < 20) { - next3 += this._input.substr(0, 20 - next3.length); + var region = new Path2D(); + region.rect(-nodeWidth / 2 - borderWidth, -nodeHeight / 2 - borderWidth, nodeWidth + 2 * borderWidth, nodeHeight + 2 * borderWidth); + region.addPath(path4); + context.clip(region, "evenodd"); } - return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, "upcomingInput"), - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: /* @__PURE__ */ __name(function() { - var pre = this.pastInput(); - var c3 = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c3 + "^"; - }, "showPosition"), - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { - var token2, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); - } + usePaths ? context.stroke(path4) : context.stroke(); + context.restore(); + } else { + usePaths ? context.stroke(path4) : context.stroke(); + } + if (borderStyle === "double") { + context.lineWidth = borderWidth / 3; + var gco = context.globalCompositeOperation; + context.globalCompositeOperation = "destination-out"; + if (usePaths) { + context.stroke(path4); + } else { + context.stroke(); } - lines = match2[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; + context.globalCompositeOperation = gco; + } + if (context.setLineDash) { + context.setLineDash([]); + } + } + }, "drawBorder"); + var drawOutline = /* @__PURE__ */ __name(function drawOutline2() { + if (outlineWidth > 0) { + context.lineWidth = outlineWidth; + context.lineCap = "butt"; + if (context.setLineDash) { + switch (outlineStyle) { + case "dotted": + context.setLineDash([1, 1]); + break; + case "dashed": + context.setLineDash([4, 2]); + break; + case "solid": + case "double": + context.setLineDash([]); + break; } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length + } + var npos = pos; + if (usePaths) { + npos = { + x: 0, + y: 0 }; - this.yytext += match2[0]; - this.match += match2[0]; - this.matches = match2; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match2[0].length); - this.matched += match2[0]; - token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token2) { - return token2; - } else if (this._backtrack) { - for (var k2 in backup) { - this[k2] = backup[k2]; - } - return false; - } - return false; - }, "test_match"), - // return next match in input - next: /* @__PURE__ */ __name(function() { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; - } - var token2, match2, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; - } - var rules = this._currentRules(); - for (var i2 = 0; i2 < rules.length; i2++) { - tempMatch = this._input.match(this.rules[rules[i2]]); - if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { - match2 = tempMatch; - index = i2; - if (this.options.backtrack_lexer) { - token2 = this.test_match(tempMatch, rules[i2]); - if (token2 !== false) { - return token2; - } else if (this._backtrack) { - match2 = false; - continue; - } else { - return false; - } - } else if (!this.options.flex) { - break; - } - } + } + var shape = r2.getNodeShape(node2); + var bWidth = borderWidth; + if (borderPosition === "inside") bWidth = 0; + if (borderPosition === "outside") bWidth *= 2; + var scaleX = (nodeWidth + bWidth + (outlineWidth + outlineOffset)) / nodeWidth; + var scaleY = (nodeHeight + bWidth + (outlineWidth + outlineOffset)) / nodeHeight; + var sWidth = nodeWidth * scaleX; + var sHeight = nodeHeight * scaleY; + var points = r2.nodeShapes[shape].points; + var _path; + if (usePaths) { + var outlinePath = getPath(sWidth, sHeight, shape, points); + _path = outlinePath.path; + } + if (shape === "ellipse") { + r2.drawEllipsePath(_path || context, npos.x, npos.y, sWidth, sHeight); + } else if (["round-diamond", "round-heptagon", "round-hexagon", "round-octagon", "round-pentagon", "round-polygon", "round-triangle", "round-tag"].includes(shape)) { + var sMult = 0; + var offsetX = 0; + var offsetY = 0; + if (shape === "round-diamond") { + sMult = (bWidth + outlineOffset + outlineWidth) * 1.4; + } else if (shape === "round-heptagon") { + sMult = (bWidth + outlineOffset + outlineWidth) * 1.075; + offsetY = -(bWidth / 2 + outlineOffset + outlineWidth) / 35; + } else if (shape === "round-hexagon") { + sMult = (bWidth + outlineOffset + outlineWidth) * 1.12; + } else if (shape === "round-pentagon") { + sMult = (bWidth + outlineOffset + outlineWidth) * 1.13; + offsetY = -(bWidth / 2 + outlineOffset + outlineWidth) / 15; + } else if (shape === "round-tag") { + sMult = (bWidth + outlineOffset + outlineWidth) * 1.12; + offsetX = (bWidth / 2 + outlineWidth + outlineOffset) * 0.07; + } else if (shape === "round-triangle") { + sMult = (bWidth + outlineOffset + outlineWidth) * (Math.PI / 2); + offsetY = -(bWidth + outlineOffset / 2 + outlineWidth) / Math.PI; } - if (match2) { - token2 = this.test_match(match2, rules[index]); - if (token2 !== false) { - return token2; + if (sMult !== 0) { + scaleX = (nodeWidth + sMult) / nodeWidth; + sWidth = nodeWidth * scaleX; + if (!["round-hexagon", "round-tag"].includes(shape)) { + scaleY = (nodeHeight + sMult) / nodeHeight; + sHeight = nodeHeight * scaleY; } - return false; } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, "next"), - // return next match that has a token - lex: /* @__PURE__ */ __name(function lex() { - var r2 = this.next(); - if (r2) { - return r2; - } else { - return this.lex(); + cornerRadius = cornerRadius === "auto" ? getRoundPolygonRadius(sWidth, sHeight) : cornerRadius; + var halfW = sWidth / 2; + var halfH = sHeight / 2; + var radius2 = cornerRadius + (bWidth + outlineWidth + outlineOffset) / 2; + var p3 = new Array(points.length / 2); + var corners = new Array(points.length / 2); + for (var _i2 = 0; _i2 < points.length / 2; _i2++) { + p3[_i2] = { + x: npos.x + offsetX + halfW * points[_i2 * 2], + y: npos.y + offsetY + halfH * points[_i2 * 2 + 1] + }; } - }, "lex"), - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: /* @__PURE__ */ __name(function begin(condition) { - this.conditionStack.push(condition); - }, "begin"), - // pop the previously active lexer condition state off the condition stack - popState: /* @__PURE__ */ __name(function popState() { - var n2 = this.conditionStack.length - 1; - if (n2 > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; + var _i3, p1, p22, p32, len = p3.length; + p1 = p3[len - 1]; + for (_i3 = 0; _i3 < len; _i3++) { + p22 = p3[_i3 % len]; + p32 = p3[(_i3 + 1) % len]; + corners[_i3] = getRoundCorner(p1, p22, p32, radius2); + p1 = p22; + p22 = p32; } - }, "popState"), - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: /* @__PURE__ */ __name(function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + r2.drawRoundPolygonPath(_path || context, npos.x + offsetX, npos.y + offsetY, nodeWidth * scaleX, nodeHeight * scaleY, points, corners); + } else if (["roundrectangle", "round-rectangle"].includes(shape)) { + cornerRadius = cornerRadius === "auto" ? getRoundRectangleRadius(sWidth, sHeight) : cornerRadius; + r2.drawRoundRectanglePath(_path || context, npos.x, npos.y, sWidth, sHeight, cornerRadius + (bWidth + outlineWidth + outlineOffset) / 2); + } else if (["cutrectangle", "cut-rectangle"].includes(shape)) { + cornerRadius = cornerRadius === "auto" ? getCutRectangleCornerLength() : cornerRadius; + r2.drawCutRectanglePath(_path || context, npos.x, npos.y, sWidth, sHeight, null, cornerRadius + (bWidth + outlineWidth + outlineOffset) / 4); + } else if (["bottomroundrectangle", "bottom-round-rectangle"].includes(shape)) { + cornerRadius = cornerRadius === "auto" ? getRoundRectangleRadius(sWidth, sHeight) : cornerRadius; + r2.drawBottomRoundRectanglePath(_path || context, npos.x, npos.y, sWidth, sHeight, cornerRadius + (bWidth + outlineWidth + outlineOffset) / 2); + } else if (shape === "barrel") { + r2.drawBarrelPath(_path || context, npos.x, npos.y, sWidth, sHeight); + } else if (shape.startsWith("polygon") || ["rhomboid", "right-rhomboid", "round-tag", "tag", "vee"].includes(shape)) { + var pad3 = (bWidth + outlineWidth + outlineOffset) / nodeWidth; + points = joinLines(expandPolygon(points, pad3)); + r2.drawPolygonPath(_path || context, npos.x, npos.y, nodeWidth, nodeHeight, points); + } else { + var _pad = (bWidth + outlineWidth + outlineOffset) / nodeWidth; + points = joinLines(expandPolygon(points, -_pad)); + r2.drawPolygonPath(_path || context, npos.x, npos.y, nodeWidth, nodeHeight, points); + } + if (usePaths) { + context.stroke(_path); + } else { + context.stroke(); + } + if (outlineStyle === "double") { + context.lineWidth = bWidth / 3; + var gco = context.globalCompositeOperation; + context.globalCompositeOperation = "destination-out"; + if (usePaths) { + context.stroke(_path); } else { - return this.conditions["INITIAL"].rules; + context.stroke(); } - }, "_currentRules"), - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: /* @__PURE__ */ __name(function topState(n2) { - n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); - if (n2 >= 0) { - return this.conditionStack[n2]; - } else { - return "INITIAL"; - } - }, "topState"), - // alias for begin(condition) - pushState: /* @__PURE__ */ __name(function pushState(condition) { - this.begin(condition); - }, "pushState"), - // return the number of states currently on the stack - stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { - return this.conditionStack.length; - }, "stateStackSize"), - options: { "case-insensitive": true }, - performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - break; - case 1: - break; - case 2: - return 55; - break; - case 3: - break; - case 4: - this.begin("title"); - return 35; - break; - case 5: - this.popState(); - return "title_value"; - break; - case 6: - this.begin("acc_title"); - return 37; - break; - case 7: - this.popState(); - return "acc_title_value"; - break; - case 8: - this.begin("acc_descr"); - return 39; - break; - case 9: - this.popState(); - return "acc_descr_value"; - break; - case 10: - this.begin("acc_descr_multiline"); - break; - case 11: - this.popState(); - break; - case 12: - return "acc_descr_multiline_value"; - break; - case 13: - return 48; - break; - case 14: - return 50; - break; - case 15: - return 49; - break; - case 16: - return 51; - break; - case 17: - return 52; - break; - case 18: - return 53; - break; - case 19: - return 54; - break; - case 20: - return 25; - break; - case 21: - this.begin("md_string"); - break; - case 22: - return "MD_STR"; - break; - case 23: - this.popState(); - break; - case 24: - this.begin("string"); - break; - case 25: - this.popState(); - break; - case 26: - return "STR"; - break; - case 27: - this.begin("class_name"); - break; - case 28: - this.popState(); - return 47; - break; - case 29: - this.begin("point_start"); - return 44; - break; - case 30: - this.begin("point_x"); - return 45; - break; - case 31: - this.popState(); - break; - case 32: - this.popState(); - this.begin("point_y"); - break; - case 33: - this.popState(); - return 46; - break; - case 34: - return 28; - break; - case 35: - return 4; - break; - case 36: - return 11; - break; - case 37: - return 64; - break; - case 38: - return 10; - break; - case 39: - return 65; - break; - case 40: - return 65; - break; - case 41: - return 14; - break; - case 42: - return 13; - break; - case 43: - return 67; - break; - case 44: - return 66; - break; - case 45: - return 12; - break; - case 46: - return 8; - break; - case 47: - return 5; - break; - case 48: - return 18; - break; - case 49: - return 56; - break; - case 50: - return 63; - break; - case 51: - return 57; - break; - } - }, "anonymous"), - rules: [/^(?:%%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n\r]+)/i, /^(?:%%[^\n]*)/i, /^(?:title\b)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?: *x-axis *)/i, /^(?: *y-axis *)/i, /^(?: *--+> *)/i, /^(?: *quadrant-1 *)/i, /^(?: *quadrant-2 *)/i, /^(?: *quadrant-3 *)/i, /^(?: *quadrant-4 *)/i, /^(?:classDef\b)/i, /^(?:["][`])/i, /^(?:[^`"]+)/i, /^(?:[`]["])/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?::::)/i, /^(?:^\w+)/i, /^(?:\s*:\s*\[\s*)/i, /^(?:(1)|(0(.\d+)?))/i, /^(?:\s*\] *)/i, /^(?:\s*,\s*)/i, /^(?:(1)|(0(.\d+)?))/i, /^(?: *quadrantChart *)/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:=)/i, /^(?:\*)/i, /^(?:#)/i, /^(?:[\_])/i, /^(?:\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\s)/i, /^(?:;)/i, /^(?:[!"#$%&'*+,-.`?\\_/])/i, /^(?:$)/i], - conditions: { "class_name": { "rules": [28], "inclusive": false }, "point_y": { "rules": [33], "inclusive": false }, "point_x": { "rules": [32], "inclusive": false }, "point_start": { "rules": [30, 31], "inclusive": false }, "acc_descr_multiline": { "rules": [11, 12], "inclusive": false }, "acc_descr": { "rules": [9], "inclusive": false }, "acc_title": { "rules": [7], "inclusive": false }, "title": { "rules": [5], "inclusive": false }, "md_string": { "rules": [22, 23], "inclusive": false }, "string": { "rules": [25, 26], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 27, 29, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51], "inclusive": true } } - }; - return lexer3; - }(); - parser24.lexer = lexer2; - function Parser3() { - this.yy = {}; + context.globalCompositeOperation = gco; + } + if (context.setLineDash) { + context.setLineDash([]); + } + } + }, "drawOutline"); + var drawOverlay = /* @__PURE__ */ __name(function drawOverlay2() { + if (shouldDrawOverlay) { + r2.drawNodeOverlay(context, node2, pos, nodeWidth, nodeHeight); + } + }, "drawOverlay"); + var drawUnderlay = /* @__PURE__ */ __name(function drawUnderlay2() { + if (shouldDrawOverlay) { + r2.drawNodeUnderlay(context, node2, pos, nodeWidth, nodeHeight); + } + }, "drawUnderlay"); + var drawText6 = /* @__PURE__ */ __name(function drawText7() { + r2.drawElementText(context, node2, null, drawLabel4); + }, "drawText"); + var ghost = node2.pstyle("ghost").value === "yes"; + if (ghost) { + var gx = node2.pstyle("ghost-offset-x").pfValue; + var gy = node2.pstyle("ghost-offset-y").pfValue; + var ghostOpacity = node2.pstyle("ghost-opacity").value; + var effGhostOpacity = ghostOpacity * eleOpacity; + context.translate(gx, gy); + setupOutlineColor(); + drawOutline(); + setupShapeColor(ghostOpacity * bgOpacity); + drawShape(); + drawImages(effGhostOpacity, true); + setupBorderColor(ghostOpacity * borderOpacity); + drawBorder(); + drawPie(darkness !== 0 || borderWidth !== 0); + drawStripe(darkness !== 0 || borderWidth !== 0); + drawImages(effGhostOpacity, false); + darken2(effGhostOpacity); + context.translate(-gx, -gy); } - __name(Parser3, "Parser"); - Parser3.prototype = parser24; - parser24.Parser = Parser3; - return new Parser3(); - }(); - parser9.parser = parser9; - quadrant_default = parser9; - } - }); - - // src/diagrams/quadrant-chart/quadrantBuilder.ts - var defaultThemeVariables, QuadrantBuilder; - var init_quadrantBuilder = __esm({ - "src/diagrams/quadrant-chart/quadrantBuilder.ts"() { - "use strict"; - init_src32(); - init_defaultConfig(); - init_logger(); - init_theme_default(); - defaultThemeVariables = getThemeVariables3(); - QuadrantBuilder = class { - constructor() { - this.classes = /* @__PURE__ */ new Map(); - this.config = this.getDefaultConfig(); - this.themeConfig = this.getDefaultThemeConfig(); - this.data = this.getDefaultData(); + if (usePaths) { + context.translate(-pos.x, -pos.y); } - static { - __name(this, "QuadrantBuilder"); + drawUnderlay(); + if (usePaths) { + context.translate(pos.x, pos.y); } - getDefaultData() { - return { - titleText: "", - quadrant1Text: "", - quadrant2Text: "", - quadrant3Text: "", - quadrant4Text: "", - xAxisLeftText: "", - xAxisRightText: "", - yAxisBottomText: "", - yAxisTopText: "", - points: [] - }; + setupOutlineColor(); + drawOutline(); + setupShapeColor(); + drawShape(); + drawImages(eleOpacity, true); + setupBorderColor(); + drawBorder(); + drawPie(darkness !== 0 || borderWidth !== 0); + drawStripe(darkness !== 0 || borderWidth !== 0); + drawImages(eleOpacity, false); + darken2(); + if (usePaths) { + context.translate(-pos.x, -pos.y); } - getDefaultConfig() { - return { - showXAxis: true, - showYAxis: true, - showTitle: true, - chartHeight: defaultConfig_default.quadrantChart?.chartWidth || 500, - chartWidth: defaultConfig_default.quadrantChart?.chartHeight || 500, - titlePadding: defaultConfig_default.quadrantChart?.titlePadding || 10, - titleFontSize: defaultConfig_default.quadrantChart?.titleFontSize || 20, - quadrantPadding: defaultConfig_default.quadrantChart?.quadrantPadding || 5, - xAxisLabelPadding: defaultConfig_default.quadrantChart?.xAxisLabelPadding || 5, - yAxisLabelPadding: defaultConfig_default.quadrantChart?.yAxisLabelPadding || 5, - xAxisLabelFontSize: defaultConfig_default.quadrantChart?.xAxisLabelFontSize || 16, - yAxisLabelFontSize: defaultConfig_default.quadrantChart?.yAxisLabelFontSize || 16, - quadrantLabelFontSize: defaultConfig_default.quadrantChart?.quadrantLabelFontSize || 16, - quadrantTextTopPadding: defaultConfig_default.quadrantChart?.quadrantTextTopPadding || 5, - pointTextPadding: defaultConfig_default.quadrantChart?.pointTextPadding || 5, - pointLabelFontSize: defaultConfig_default.quadrantChart?.pointLabelFontSize || 12, - pointRadius: defaultConfig_default.quadrantChart?.pointRadius || 5, - xAxisPosition: defaultConfig_default.quadrantChart?.xAxisPosition || "top", - yAxisPosition: defaultConfig_default.quadrantChart?.yAxisPosition || "left", - quadrantInternalBorderStrokeWidth: defaultConfig_default.quadrantChart?.quadrantInternalBorderStrokeWidth || 1, - quadrantExternalBorderStrokeWidth: defaultConfig_default.quadrantChart?.quadrantExternalBorderStrokeWidth || 2 - }; + drawText6(); + drawOverlay(); + if (shiftToOriginWithBb) { + context.translate(bb.x1, bb.y1); } - getDefaultThemeConfig() { - return { - quadrant1Fill: defaultThemeVariables.quadrant1Fill, - quadrant2Fill: defaultThemeVariables.quadrant2Fill, - quadrant3Fill: defaultThemeVariables.quadrant3Fill, - quadrant4Fill: defaultThemeVariables.quadrant4Fill, - quadrant1TextFill: defaultThemeVariables.quadrant1TextFill, - quadrant2TextFill: defaultThemeVariables.quadrant2TextFill, - quadrant3TextFill: defaultThemeVariables.quadrant3TextFill, - quadrant4TextFill: defaultThemeVariables.quadrant4TextFill, - quadrantPointFill: defaultThemeVariables.quadrantPointFill, - quadrantPointTextFill: defaultThemeVariables.quadrantPointTextFill, - quadrantXAxisTextFill: defaultThemeVariables.quadrantXAxisTextFill, - quadrantYAxisTextFill: defaultThemeVariables.quadrantYAxisTextFill, - quadrantTitleFill: defaultThemeVariables.quadrantTitleFill, - quadrantInternalBorderStrokeFill: defaultThemeVariables.quadrantInternalBorderStrokeFill, - quadrantExternalBorderStrokeFill: defaultThemeVariables.quadrantExternalBorderStrokeFill - }; + }; + drawNodeOverlayUnderlay = /* @__PURE__ */ __name(function drawNodeOverlayUnderlay2(overlayOrUnderlay) { + if (!["overlay", "underlay"].includes(overlayOrUnderlay)) { + throw new Error("Invalid state"); } - clear() { - this.config = this.getDefaultConfig(); - this.themeConfig = this.getDefaultThemeConfig(); - this.data = this.getDefaultData(); - this.classes = /* @__PURE__ */ new Map(); - log.info("clear called"); + return function(context, node2, pos, nodeWidth, nodeHeight) { + var r2 = this; + if (!node2.visible()) { + return; + } + var padding2 = node2.pstyle("".concat(overlayOrUnderlay, "-padding")).pfValue; + var opacity = node2.pstyle("".concat(overlayOrUnderlay, "-opacity")).value; + var color2 = node2.pstyle("".concat(overlayOrUnderlay, "-color")).value; + var shape = node2.pstyle("".concat(overlayOrUnderlay, "-shape")).value; + var radius2 = node2.pstyle("".concat(overlayOrUnderlay, "-corner-radius")).value; + if (opacity > 0) { + pos = pos || node2.position(); + if (nodeWidth == null || nodeHeight == null) { + var _padding = node2.padding(); + nodeWidth = node2.width() + 2 * _padding; + nodeHeight = node2.height() + 2 * _padding; + } + r2.colorFillStyle(context, color2[0], color2[1], color2[2], opacity); + r2.nodeShapes[shape].draw(context, pos.x, pos.y, nodeWidth + padding2 * 2, nodeHeight + padding2 * 2, radius2); + context.fill(); + } + }; + }, "drawNodeOverlayUnderlay"); + CRp$6.drawNodeOverlay = drawNodeOverlayUnderlay("overlay"); + CRp$6.drawNodeUnderlay = drawNodeOverlayUnderlay("underlay"); + CRp$6.hasPie = function(node2) { + node2 = node2[0]; + return node2._private.hasPie; + }; + CRp$6.hasStripe = function(node2) { + node2 = node2[0]; + return node2._private.hasStripe; + }; + CRp$6.drawPie = function(context, node2, nodeOpacity, pos) { + node2 = node2[0]; + pos = pos || node2.position(); + var cyStyle = node2.cy().style(); + var pieSize = node2.pstyle("pie-size"); + var hole = node2.pstyle("pie-hole"); + var overallStartAngle = node2.pstyle("pie-start-angle").pfValue; + var x5 = pos.x; + var y6 = pos.y; + var nodeW = node2.width(); + var nodeH = node2.height(); + var radius2 = Math.min(nodeW, nodeH) / 2; + var holeRadius; + var lastPercent = 0; + var usePaths = this.usePaths(); + if (usePaths) { + x5 = 0; + y6 = 0; } - setData(data6) { - this.data = { ...this.data, ...data6 }; + if (pieSize.units === "%") { + radius2 = radius2 * pieSize.pfValue; + } else if (pieSize.pfValue !== void 0) { + radius2 = pieSize.pfValue / 2; } - addPoints(points) { - this.data.points = [...points, ...this.data.points]; + if (hole.units === "%") { + holeRadius = radius2 * hole.pfValue; + } else if (hole.pfValue !== void 0) { + holeRadius = hole.pfValue / 2; } - addClass(className, styles4) { - this.classes.set(className, styles4); + if (holeRadius >= radius2) { + return; } - setConfig(config5) { - log.trace("setConfig called with: ", config5); - this.config = { ...this.config, ...config5 }; + for (var i2 = 1; i2 <= cyStyle.pieBackgroundN; i2++) { + var size4 = node2.pstyle("pie-" + i2 + "-background-size").value; + var color2 = node2.pstyle("pie-" + i2 + "-background-color").value; + var opacity = node2.pstyle("pie-" + i2 + "-background-opacity").value * nodeOpacity; + var percent = size4 / 100; + if (percent + lastPercent > 1) { + percent = 1 - lastPercent; + } + var angleStart = 1.5 * Math.PI + 2 * Math.PI * lastPercent; + angleStart += overallStartAngle; + var angleDelta = 2 * Math.PI * percent; + var angleEnd = angleStart + angleDelta; + if (size4 === 0 || lastPercent >= 1 || lastPercent + percent > 1) { + continue; + } + if (holeRadius === 0) { + context.beginPath(); + context.moveTo(x5, y6); + context.arc(x5, y6, radius2, angleStart, angleEnd); + context.closePath(); + } else { + context.beginPath(); + context.arc(x5, y6, radius2, angleStart, angleEnd); + context.arc(x5, y6, holeRadius, angleEnd, angleStart, true); + context.closePath(); + } + this.colorFillStyle(context, color2[0], color2[1], color2[2], opacity); + context.fill(); + lastPercent += percent; } - setThemeConfig(themeConfig) { - log.trace("setThemeConfig called with: ", themeConfig); - this.themeConfig = { ...this.themeConfig, ...themeConfig }; + }; + CRp$6.drawStripe = function(context, node2, nodeOpacity, pos) { + node2 = node2[0]; + pos = pos || node2.position(); + var cyStyle = node2.cy().style(); + var x5 = pos.x; + var y6 = pos.y; + var nodeW = node2.width(); + var nodeH = node2.height(); + var lastPercent = 0; + var usePaths = this.usePaths(); + context.save(); + var direction = node2.pstyle("stripe-direction").value; + var stripeSize = node2.pstyle("stripe-size"); + switch (direction) { + case "vertical": + break; + // default + case "righward": + context.rotate(-Math.PI / 2); + break; } - calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle) { - const xAxisSpaceCalculation = this.config.xAxisLabelPadding * 2 + this.config.xAxisLabelFontSize; - const xAxisSpace = { - top: xAxisPosition === "top" && showXAxis ? xAxisSpaceCalculation : 0, - bottom: xAxisPosition === "bottom" && showXAxis ? xAxisSpaceCalculation : 0 - }; - const yAxisSpaceCalculation = this.config.yAxisLabelPadding * 2 + this.config.yAxisLabelFontSize; - const yAxisSpace = { - left: this.config.yAxisPosition === "left" && showYAxis ? yAxisSpaceCalculation : 0, - right: this.config.yAxisPosition === "right" && showYAxis ? yAxisSpaceCalculation : 0 - }; - const titleSpaceCalculation = this.config.titleFontSize + this.config.titlePadding * 2; - const titleSpace = { - top: showTitle ? titleSpaceCalculation : 0 - }; - const quadrantLeft = this.config.quadrantPadding + yAxisSpace.left; - const quadrantTop = this.config.quadrantPadding + xAxisSpace.top + titleSpace.top; - const quadrantWidth = this.config.chartWidth - this.config.quadrantPadding * 2 - yAxisSpace.left - yAxisSpace.right; - const quadrantHeight = this.config.chartHeight - this.config.quadrantPadding * 2 - xAxisSpace.top - xAxisSpace.bottom - titleSpace.top; - const quadrantHalfWidth = quadrantWidth / 2; - const quadrantHalfHeight = quadrantHeight / 2; - const quadrantSpace = { - quadrantLeft, - quadrantTop, - quadrantWidth, - quadrantHalfWidth, - quadrantHeight, - quadrantHalfHeight - }; - return { - xAxisSpace, - yAxisSpace, - titleSpace, - quadrantSpace - }; + var stripeW = nodeW; + var stripeH = nodeH; + if (stripeSize.units === "%") { + stripeW = stripeW * stripeSize.pfValue; + stripeH = stripeH * stripeSize.pfValue; + } else if (stripeSize.pfValue !== void 0) { + stripeW = stripeSize.pfValue; + stripeH = stripeSize.pfValue; } - getAxisLabels(xAxisPosition, showXAxis, showYAxis, spaceData) { - const { quadrantSpace, titleSpace } = spaceData; - const { - quadrantHalfHeight, - quadrantHeight, - quadrantLeft, - quadrantHalfWidth, - quadrantTop, - quadrantWidth - } = quadrantSpace; - const drawXAxisLabelsInMiddle = Boolean(this.data.xAxisRightText); - const drawYAxisLabelsInMiddle = Boolean(this.data.yAxisTopText); - const axisLabels = []; - if (this.data.xAxisLeftText && showXAxis) { - axisLabels.push({ - text: this.data.xAxisLeftText, - fill: this.themeConfig.quadrantXAxisTextFill, - x: quadrantLeft + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0), - y: xAxisPosition === "top" ? this.config.xAxisLabelPadding + titleSpace.top : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight + this.config.quadrantPadding, - fontSize: this.config.xAxisLabelFontSize, - verticalPos: drawXAxisLabelsInMiddle ? "center" : "left", - horizontalPos: "top", - rotation: 0 - }); - } - if (this.data.xAxisRightText && showXAxis) { - axisLabels.push({ - text: this.data.xAxisRightText, - fill: this.themeConfig.quadrantXAxisTextFill, - x: quadrantLeft + quadrantHalfWidth + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0), - y: xAxisPosition === "top" ? this.config.xAxisLabelPadding + titleSpace.top : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight + this.config.quadrantPadding, - fontSize: this.config.xAxisLabelFontSize, - verticalPos: drawXAxisLabelsInMiddle ? "center" : "left", - horizontalPos: "top", - rotation: 0 - }); + if (usePaths) { + x5 = 0; + y6 = 0; + } + y6 -= stripeW / 2; + x5 -= stripeH / 2; + for (var i2 = 1; i2 <= cyStyle.stripeBackgroundN; i2++) { + var size4 = node2.pstyle("stripe-" + i2 + "-background-size").value; + var color2 = node2.pstyle("stripe-" + i2 + "-background-color").value; + var opacity = node2.pstyle("stripe-" + i2 + "-background-opacity").value * nodeOpacity; + var percent = size4 / 100; + if (percent + lastPercent > 1) { + percent = 1 - lastPercent; } - if (this.data.yAxisBottomText && showYAxis) { - axisLabels.push({ - text: this.data.yAxisBottomText, - fill: this.themeConfig.quadrantYAxisTextFill, - x: this.config.yAxisPosition === "left" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth + this.config.quadrantPadding, - y: quadrantTop + quadrantHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0), - fontSize: this.config.yAxisLabelFontSize, - verticalPos: drawYAxisLabelsInMiddle ? "center" : "left", - horizontalPos: "top", - rotation: -90 - }); + if (size4 === 0 || lastPercent >= 1 || lastPercent + percent > 1) { + continue; } - if (this.data.yAxisTopText && showYAxis) { - axisLabels.push({ - text: this.data.yAxisTopText, - fill: this.themeConfig.quadrantYAxisTextFill, - x: this.config.yAxisPosition === "left" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth + this.config.quadrantPadding, - y: quadrantTop + quadrantHalfHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0), - fontSize: this.config.yAxisLabelFontSize, - verticalPos: drawYAxisLabelsInMiddle ? "center" : "left", - horizontalPos: "top", - rotation: -90 - }); + context.beginPath(); + context.rect(x5, y6 + stripeH * lastPercent, stripeW, stripeH * percent); + context.closePath(); + this.colorFillStyle(context, color2[0], color2[1], color2[2], opacity); + context.fill(); + lastPercent += percent; + } + context.restore(); + }; + CRp$5 = {}; + motionBlurDelay = 100; + CRp$5.getPixelRatio = function() { + var context = this.data.contexts[0]; + if (this.forcedPixelRatio != null) { + return this.forcedPixelRatio; + } + var containerWindow = this.cy.window(); + var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1; + return (containerWindow.devicePixelRatio || 1) / backingStore; + }; + CRp$5.paintCache = function(context) { + var caches = this.paintCaches = this.paintCaches || []; + var needToCreateCache = true; + var cache3; + for (var i2 = 0; i2 < caches.length; i2++) { + cache3 = caches[i2]; + if (cache3.context === context) { + needToCreateCache = false; + break; } - return axisLabels; } - getQuadrants(spaceData) { - const { quadrantSpace } = spaceData; - const { quadrantHalfHeight, quadrantLeft, quadrantHalfWidth, quadrantTop } = quadrantSpace; - const quadrants = [ - { - text: { - text: this.data.quadrant1Text, - fill: this.themeConfig.quadrant1TextFill, - x: 0, - y: 0, - fontSize: this.config.quadrantLabelFontSize, - verticalPos: "center", - horizontalPos: "middle", - rotation: 0 - }, - x: quadrantLeft + quadrantHalfWidth, - y: quadrantTop, - width: quadrantHalfWidth, - height: quadrantHalfHeight, - fill: this.themeConfig.quadrant1Fill - }, - { - text: { - text: this.data.quadrant2Text, - fill: this.themeConfig.quadrant2TextFill, - x: 0, - y: 0, - fontSize: this.config.quadrantLabelFontSize, - verticalPos: "center", - horizontalPos: "middle", - rotation: 0 - }, - x: quadrantLeft, - y: quadrantTop, - width: quadrantHalfWidth, - height: quadrantHalfHeight, - fill: this.themeConfig.quadrant2Fill - }, - { - text: { - text: this.data.quadrant3Text, - fill: this.themeConfig.quadrant3TextFill, - x: 0, - y: 0, - fontSize: this.config.quadrantLabelFontSize, - verticalPos: "center", - horizontalPos: "middle", - rotation: 0 - }, - x: quadrantLeft, - y: quadrantTop + quadrantHalfHeight, - width: quadrantHalfWidth, - height: quadrantHalfHeight, - fill: this.themeConfig.quadrant3Fill - }, - { - text: { - text: this.data.quadrant4Text, - fill: this.themeConfig.quadrant4TextFill, - x: 0, - y: 0, - fontSize: this.config.quadrantLabelFontSize, - verticalPos: "center", - horizontalPos: "middle", - rotation: 0 - }, - x: quadrantLeft + quadrantHalfWidth, - y: quadrantTop + quadrantHalfHeight, - width: quadrantHalfWidth, - height: quadrantHalfHeight, - fill: this.themeConfig.quadrant4Fill - } - ]; - for (const quadrant of quadrants) { - quadrant.text.x = quadrant.x + quadrant.width / 2; - if (this.data.points.length === 0) { - quadrant.text.y = quadrant.y + quadrant.height / 2; - quadrant.text.horizontalPos = "middle"; - } else { - quadrant.text.y = quadrant.y + this.config.quadrantTextTopPadding; - quadrant.text.horizontalPos = "top"; + if (needToCreateCache) { + cache3 = { + context + }; + caches.push(cache3); + } + return cache3; + }; + CRp$5.createGradientStyleFor = function(context, shapeStyleName, ele, fill, opacity) { + var gradientStyle; + var usePaths = this.usePaths(); + var colors2 = ele.pstyle(shapeStyleName + "-gradient-stop-colors").value, positions2 = ele.pstyle(shapeStyleName + "-gradient-stop-positions").pfValue; + if (fill === "radial-gradient") { + if (ele.isEdge()) { + var start3 = ele.sourceEndpoint(), end2 = ele.targetEndpoint(), mid = ele.midpoint(); + var d1 = dist(start3, mid); + var d22 = dist(end2, mid); + gradientStyle = context.createRadialGradient(mid.x, mid.y, 0, mid.x, mid.y, Math.max(d1, d22)); + } else { + var pos = usePaths ? { + x: 0, + y: 0 + } : ele.position(), width3 = ele.paddedWidth(), height2 = ele.paddedHeight(); + gradientStyle = context.createRadialGradient(pos.x, pos.y, 0, pos.x, pos.y, Math.max(width3, height2)); + } + } else { + if (ele.isEdge()) { + var _start = ele.sourceEndpoint(), _end = ele.targetEndpoint(); + gradientStyle = context.createLinearGradient(_start.x, _start.y, _end.x, _end.y); + } else { + var _pos = usePaths ? { + x: 0, + y: 0 + } : ele.position(), _width = ele.paddedWidth(), _height = ele.paddedHeight(), halfWidth = _width / 2, halfHeight = _height / 2; + var direction = ele.pstyle("background-gradient-direction").value; + switch (direction) { + case "to-bottom": + gradientStyle = context.createLinearGradient(_pos.x, _pos.y - halfHeight, _pos.x, _pos.y + halfHeight); + break; + case "to-top": + gradientStyle = context.createLinearGradient(_pos.x, _pos.y + halfHeight, _pos.x, _pos.y - halfHeight); + break; + case "to-left": + gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y, _pos.x - halfWidth, _pos.y); + break; + case "to-right": + gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y, _pos.x + halfWidth, _pos.y); + break; + case "to-bottom-right": + case "to-right-bottom": + gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y - halfHeight, _pos.x + halfWidth, _pos.y + halfHeight); + break; + case "to-top-right": + case "to-right-top": + gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y + halfHeight, _pos.x + halfWidth, _pos.y - halfHeight); + break; + case "to-bottom-left": + case "to-left-bottom": + gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y - halfHeight, _pos.x - halfWidth, _pos.y + halfHeight); + break; + case "to-top-left": + case "to-left-top": + gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y + halfHeight, _pos.x - halfWidth, _pos.y - halfHeight); + break; } } - return quadrants; } - getQuadrantPoints(spaceData) { - const { quadrantSpace } = spaceData; - const { quadrantHeight, quadrantLeft, quadrantTop, quadrantWidth } = quadrantSpace; - const xAxis = linear2().domain([0, 1]).range([quadrantLeft, quadrantWidth + quadrantLeft]); - const yAxis = linear2().domain([0, 1]).range([quadrantHeight + quadrantTop, quadrantTop]); - const points = this.data.points.map((point8) => { - const classStyles = this.classes.get(point8.className); - if (classStyles) { - point8 = { ...classStyles, ...point8 }; - } - const props = { - x: xAxis(point8.x), - y: yAxis(point8.y), - fill: point8.color ?? this.themeConfig.quadrantPointFill, - radius: point8.radius ?? this.config.pointRadius, - text: { - text: point8.text, - fill: this.themeConfig.quadrantPointTextFill, - x: xAxis(point8.x), - y: yAxis(point8.y) + this.config.pointTextPadding, - verticalPos: "center", - horizontalPos: "top", - fontSize: this.config.pointLabelFontSize, - rotation: 0 - }, - strokeColor: point8.strokeColor ?? this.themeConfig.quadrantPointFill, - strokeWidth: point8.strokeWidth ?? "0px" - }; - return props; - }); - return points; + if (!gradientStyle) return null; + var hasPositions = positions2.length === colors2.length; + var length2 = colors2.length; + for (var i2 = 0; i2 < length2; i2++) { + gradientStyle.addColorStop(hasPositions ? positions2[i2] : i2 / (length2 - 1), "rgba(" + colors2[i2][0] + "," + colors2[i2][1] + "," + colors2[i2][2] + "," + opacity + ")"); } - getBorders(spaceData) { - const halfExternalBorderWidth = this.config.quadrantExternalBorderStrokeWidth / 2; - const { quadrantSpace } = spaceData; - const { - quadrantHalfHeight, - quadrantHeight, - quadrantLeft, - quadrantHalfWidth, - quadrantTop, - quadrantWidth - } = quadrantSpace; - const borderLines = [ - // top border - { - strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, - strokeWidth: this.config.quadrantExternalBorderStrokeWidth, - x1: quadrantLeft - halfExternalBorderWidth, - y1: quadrantTop, - x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth, - y2: quadrantTop - }, - // right border - { - strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, - strokeWidth: this.config.quadrantExternalBorderStrokeWidth, - x1: quadrantLeft + quadrantWidth, - y1: quadrantTop + halfExternalBorderWidth, - x2: quadrantLeft + quadrantWidth, - y2: quadrantTop + quadrantHeight - halfExternalBorderWidth - }, - // bottom border - { - strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, - strokeWidth: this.config.quadrantExternalBorderStrokeWidth, - x1: quadrantLeft - halfExternalBorderWidth, - y1: quadrantTop + quadrantHeight, - x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth, - y2: quadrantTop + quadrantHeight - }, - // left border - { - strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, - strokeWidth: this.config.quadrantExternalBorderStrokeWidth, - x1: quadrantLeft, - y1: quadrantTop + halfExternalBorderWidth, - x2: quadrantLeft, - y2: quadrantTop + quadrantHeight - halfExternalBorderWidth - }, - // vertical inner border - { - strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill, - strokeWidth: this.config.quadrantInternalBorderStrokeWidth, - x1: quadrantLeft + quadrantHalfWidth, - y1: quadrantTop + halfExternalBorderWidth, - x2: quadrantLeft + quadrantHalfWidth, - y2: quadrantTop + quadrantHeight - halfExternalBorderWidth - }, - // horizontal inner border - { - strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill, - strokeWidth: this.config.quadrantInternalBorderStrokeWidth, - x1: quadrantLeft + halfExternalBorderWidth, - y1: quadrantTop + quadrantHalfHeight, - x2: quadrantLeft + quadrantWidth - halfExternalBorderWidth, - y2: quadrantTop + quadrantHalfHeight - } - ]; - return borderLines; + return gradientStyle; + }; + CRp$5.gradientFillStyle = function(context, ele, fill, opacity) { + var gradientStyle = this.createGradientStyleFor(context, "background", ele, fill, opacity); + if (!gradientStyle) return null; + context.fillStyle = gradientStyle; + }; + CRp$5.colorFillStyle = function(context, r2, g2, b3, a2) { + context.fillStyle = "rgba(" + r2 + "," + g2 + "," + b3 + "," + a2 + ")"; + }; + CRp$5.eleFillStyle = function(context, ele, opacity) { + var backgroundFill = ele.pstyle("background-fill").value; + if (backgroundFill === "linear-gradient" || backgroundFill === "radial-gradient") { + this.gradientFillStyle(context, ele, backgroundFill, opacity); + } else { + var backgroundColor = ele.pstyle("background-color").value; + this.colorFillStyle(context, backgroundColor[0], backgroundColor[1], backgroundColor[2], opacity); } - getTitle(showTitle) { - if (showTitle) { - return { - text: this.data.titleText, - fill: this.themeConfig.quadrantTitleFill, - fontSize: this.config.titleFontSize, - horizontalPos: "top", - verticalPos: "center", - rotation: 0, - y: this.config.titlePadding, - x: this.config.chartWidth / 2 - }; - } + }; + CRp$5.gradientStrokeStyle = function(context, ele, fill, opacity) { + var gradientStyle = this.createGradientStyleFor(context, "line", ele, fill, opacity); + if (!gradientStyle) return null; + context.strokeStyle = gradientStyle; + }; + CRp$5.colorStrokeStyle = function(context, r2, g2, b3, a2) { + context.strokeStyle = "rgba(" + r2 + "," + g2 + "," + b3 + "," + a2 + ")"; + }; + CRp$5.eleStrokeStyle = function(context, ele, opacity) { + var lineFill = ele.pstyle("line-fill").value; + if (lineFill === "linear-gradient" || lineFill === "radial-gradient") { + this.gradientStrokeStyle(context, ele, lineFill, opacity); + } else { + var lineColor = ele.pstyle("line-color").value; + this.colorStrokeStyle(context, lineColor[0], lineColor[1], lineColor[2], opacity); + } + }; + CRp$5.matchCanvasSize = function(container2) { + var r2 = this; + var data5 = r2.data; + var bb = r2.findContainerClientCoords(); + var width3 = bb[2]; + var height2 = bb[3]; + var pixelRatio = r2.getPixelRatio(); + var mbPxRatio = r2.motionBlurPxRatio; + if (container2 === r2.data.bufferCanvases[r2.MOTIONBLUR_BUFFER_NODE] || container2 === r2.data.bufferCanvases[r2.MOTIONBLUR_BUFFER_DRAG]) { + pixelRatio = mbPxRatio; + } + var canvasWidth = width3 * pixelRatio; + var canvasHeight = height2 * pixelRatio; + var canvas; + if (canvasWidth === r2.canvasWidth && canvasHeight === r2.canvasHeight) { return; } - build() { - const showXAxis = this.config.showXAxis && !!(this.data.xAxisLeftText || this.data.xAxisRightText); - const showYAxis = this.config.showYAxis && !!(this.data.yAxisTopText || this.data.yAxisBottomText); - const showTitle = this.config.showTitle && !!this.data.titleText; - const xAxisPosition = this.data.points.length > 0 ? "bottom" : this.config.xAxisPosition; - const calculatedSpace = this.calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle); - return { - points: this.getQuadrantPoints(calculatedSpace), - quadrants: this.getQuadrants(calculatedSpace), - axisLabels: this.getAxisLabels(xAxisPosition, showXAxis, showYAxis, calculatedSpace), - borderLines: this.getBorders(calculatedSpace), - title: this.getTitle(showTitle) - }; + r2.fontCaches = null; + var canvasContainer = data5.canvasContainer; + canvasContainer.style.width = width3 + "px"; + canvasContainer.style.height = height2 + "px"; + for (var i2 = 0; i2 < r2.CANVAS_LAYERS; i2++) { + canvas = data5.canvases[i2]; + canvas.width = canvasWidth; + canvas.height = canvasHeight; + canvas.style.width = width3 + "px"; + canvas.style.height = height2 + "px"; } - }; - } - }); - - // src/diagrams/quadrant-chart/utils.ts - function validateHexCode(value2) { - return !/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(value2); - } - function validateNumber(value2) { - return !/^\d+$/.test(value2); - } - function validateSizeInPixels(value2) { - return !/^\d+px$/.test(value2); - } - var InvalidStyleError; - var init_utils5 = __esm({ - "src/diagrams/quadrant-chart/utils.ts"() { - "use strict"; - InvalidStyleError = class extends Error { - static { - __name(this, "InvalidStyleError"); + for (var i2 = 0; i2 < r2.BUFFER_COUNT; i2++) { + canvas = data5.bufferCanvases[i2]; + canvas.width = canvasWidth; + canvas.height = canvasHeight; + canvas.style.width = width3 + "px"; + canvas.style.height = height2 + "px"; } - constructor(style3, value2, type3) { - super(`value for ${style3} ${value2} is invalid, please use a valid ${type3}`); - this.name = "InvalidStyleError"; + r2.textureMult = 1; + if (pixelRatio <= 1) { + canvas = data5.bufferCanvases[r2.TEXTURE_BUFFER]; + r2.textureMult = 2; + canvas.width = canvasWidth * r2.textureMult; + canvas.height = canvasHeight * r2.textureMult; } + r2.canvasWidth = canvasWidth; + r2.canvasHeight = canvasHeight; + r2.pixelRatio = pixelRatio; }; - __name(validateHexCode, "validateHexCode"); - __name(validateNumber, "validateNumber"); - __name(validateSizeInPixels, "validateSizeInPixels"); - } - }); - - // src/diagrams/quadrant-chart/quadrantDb.ts - function textSanitizer(text4) { - return sanitizeText(text4.trim(), config3); - } - function setQuadrant1Text(textObj) { - quadrantBuilder.setData({ quadrant1Text: textSanitizer(textObj.text) }); - } - function setQuadrant2Text(textObj) { - quadrantBuilder.setData({ quadrant2Text: textSanitizer(textObj.text) }); - } - function setQuadrant3Text(textObj) { - quadrantBuilder.setData({ quadrant3Text: textSanitizer(textObj.text) }); - } - function setQuadrant4Text(textObj) { - quadrantBuilder.setData({ quadrant4Text: textSanitizer(textObj.text) }); - } - function setXAxisLeftText(textObj) { - quadrantBuilder.setData({ xAxisLeftText: textSanitizer(textObj.text) }); - } - function setXAxisRightText(textObj) { - quadrantBuilder.setData({ xAxisRightText: textSanitizer(textObj.text) }); - } - function setYAxisTopText(textObj) { - quadrantBuilder.setData({ yAxisTopText: textSanitizer(textObj.text) }); - } - function setYAxisBottomText(textObj) { - quadrantBuilder.setData({ yAxisBottomText: textSanitizer(textObj.text) }); - } - function parseStyles(styles4) { - const stylesObject = {}; - for (const style3 of styles4) { - const [key, value2] = style3.trim().split(/\s*:\s*/); - if (key === "radius") { - if (validateNumber(value2)) { - throw new InvalidStyleError(key, value2, "number"); + CRp$5.renderTo = function(cxt, zoom2, pan2, pxRatio) { + this.render({ + forcedContext: cxt, + forcedZoom: zoom2, + forcedPan: pan2, + drawAllLayers: true, + forcedPxRatio: pxRatio + }); + }; + CRp$5.clearCanvas = function() { + var r2 = this; + var data5 = r2.data; + function clear19(context) { + context.clearRect(0, 0, r2.canvasWidth, r2.canvasHeight); } - stylesObject.radius = parseInt(value2); - } else if (key === "color") { - if (validateHexCode(value2)) { - throw new InvalidStyleError(key, value2, "hex code"); + __name(clear19, "clear"); + clear19(data5.contexts[r2.NODE]); + clear19(data5.contexts[r2.DRAG]); + }; + CRp$5.render = function(options2) { + var r2 = this; + options2 = options2 || staticEmptyObject(); + var cy = r2.cy; + var forcedContext = options2.forcedContext; + var drawAllLayers = options2.drawAllLayers; + var drawOnlyNodeLayer = options2.drawOnlyNodeLayer; + var forcedZoom = options2.forcedZoom; + var forcedPan = options2.forcedPan; + var pixelRatio = options2.forcedPxRatio === void 0 ? this.getPixelRatio() : options2.forcedPxRatio; + var data5 = r2.data; + var needDraw = data5.canvasNeedsRedraw; + var textureDraw = r2.textureOnViewport && !forcedContext && (r2.pinching || r2.hoverData.dragging || r2.swipePanning || r2.data.wheelZooming); + var motionBlur = options2.motionBlur !== void 0 ? options2.motionBlur : r2.motionBlur; + var mbPxRatio = r2.motionBlurPxRatio; + var hasCompoundNodes2 = cy.hasCompoundNodes(); + var inNodeDragGesture = r2.hoverData.draggingEles; + var inBoxSelection = r2.hoverData.selecting || r2.touchData.selecting ? true : false; + motionBlur = motionBlur && !forcedContext && r2.motionBlurEnabled && !inBoxSelection; + var motionBlurFadeEffect = motionBlur; + if (!forcedContext) { + if (r2.prevPxRatio !== pixelRatio) { + r2.invalidateContainerClientCoordsCache(); + r2.matchCanvasSize(r2.container); + r2.redrawHint("eles", true); + r2.redrawHint("drag", true); + } + r2.prevPxRatio = pixelRatio; } - stylesObject.color = value2; - } else if (key === "stroke-color") { - if (validateHexCode(value2)) { - throw new InvalidStyleError(key, value2, "hex code"); + if (!forcedContext && r2.motionBlurTimeout) { + clearTimeout(r2.motionBlurTimeout); } - stylesObject.strokeColor = value2; - } else if (key === "stroke-width") { - if (validateSizeInPixels(value2)) { - throw new InvalidStyleError(key, value2, "number of pixels (eg. 10px)"); + if (motionBlur) { + if (r2.mbFrames == null) { + r2.mbFrames = 0; + } + r2.mbFrames++; + if (r2.mbFrames < 3) { + motionBlurFadeEffect = false; + } + if (r2.mbFrames > r2.minMbLowQualFrames) { + r2.motionBlurPxRatio = r2.mbPxRBlurry; + } } - stylesObject.strokeWidth = value2; - } else { - throw new Error(`style named ${key} is not supported.`); - } - } - return stylesObject; - } - function addPoint(textObj, className, x5, y5, styles4) { - const stylesObject = parseStyles(styles4); - quadrantBuilder.addPoints([ - { - x: x5, - y: y5, - text: textSanitizer(textObj.text), - className, - ...stylesObject - } - ]); - } - function addClass(className, styles4) { - quadrantBuilder.addClass(className, parseStyles(styles4)); - } - function setWidth(width3) { - quadrantBuilder.setConfig({ chartWidth: width3 }); - } - function setHeight(height2) { - quadrantBuilder.setConfig({ chartHeight: height2 }); - } - function getQuadrantData() { - const config5 = getConfig2(); - const { themeVariables, quadrantChart: quadrantChartConfig } = config5; - if (quadrantChartConfig) { - quadrantBuilder.setConfig(quadrantChartConfig); - } - quadrantBuilder.setThemeConfig({ - quadrant1Fill: themeVariables.quadrant1Fill, - quadrant2Fill: themeVariables.quadrant2Fill, - quadrant3Fill: themeVariables.quadrant3Fill, - quadrant4Fill: themeVariables.quadrant4Fill, - quadrant1TextFill: themeVariables.quadrant1TextFill, - quadrant2TextFill: themeVariables.quadrant2TextFill, - quadrant3TextFill: themeVariables.quadrant3TextFill, - quadrant4TextFill: themeVariables.quadrant4TextFill, - quadrantPointFill: themeVariables.quadrantPointFill, - quadrantPointTextFill: themeVariables.quadrantPointTextFill, - quadrantXAxisTextFill: themeVariables.quadrantXAxisTextFill, - quadrantYAxisTextFill: themeVariables.quadrantYAxisTextFill, - quadrantExternalBorderStrokeFill: themeVariables.quadrantExternalBorderStrokeFill, - quadrantInternalBorderStrokeFill: themeVariables.quadrantInternalBorderStrokeFill, - quadrantTitleFill: themeVariables.quadrantTitleFill - }); - quadrantBuilder.setData({ titleText: getDiagramTitle() }); - return quadrantBuilder.build(); - } - var config3, quadrantBuilder, clear11, quadrantDb_default; - var init_quadrantDb = __esm({ - "src/diagrams/quadrant-chart/quadrantDb.ts"() { - "use strict"; - init_diagramAPI(); - init_common(); - init_commonDb(); - init_quadrantBuilder(); - init_utils5(); - config3 = getConfig2(); - __name(textSanitizer, "textSanitizer"); - quadrantBuilder = new QuadrantBuilder(); - __name(setQuadrant1Text, "setQuadrant1Text"); - __name(setQuadrant2Text, "setQuadrant2Text"); - __name(setQuadrant3Text, "setQuadrant3Text"); - __name(setQuadrant4Text, "setQuadrant4Text"); - __name(setXAxisLeftText, "setXAxisLeftText"); - __name(setXAxisRightText, "setXAxisRightText"); - __name(setYAxisTopText, "setYAxisTopText"); - __name(setYAxisBottomText, "setYAxisBottomText"); - __name(parseStyles, "parseStyles"); - __name(addPoint, "addPoint"); - __name(addClass, "addClass"); - __name(setWidth, "setWidth"); - __name(setHeight, "setHeight"); - __name(getQuadrantData, "getQuadrantData"); - clear11 = /* @__PURE__ */ __name(function() { - quadrantBuilder.clear(); - clear(); - }, "clear"); - quadrantDb_default = { - setWidth, - setHeight, - setQuadrant1Text, - setQuadrant2Text, - setQuadrant3Text, - setQuadrant4Text, - setXAxisLeftText, - setXAxisRightText, - setYAxisTopText, - setYAxisBottomText, - parseStyles, - addPoint, - addClass, - getQuadrantData, - clear: clear11, - setAccTitle, - getAccTitle, - setDiagramTitle, - getDiagramTitle, - getAccDescription, - setAccDescription - }; - } - }); - - // src/diagrams/quadrant-chart/quadrantRenderer.ts - var draw8, quadrantRenderer_default; - var init_quadrantRenderer = __esm({ - "src/diagrams/quadrant-chart/quadrantRenderer.ts"() { - "use strict"; - init_src32(); - init_diagramAPI(); - init_logger(); - init_setupGraphViewbox(); - draw8 = /* @__PURE__ */ __name((txt, id29, _version, diagObj) => { - function getDominantBaseLine(horizontalPos) { - return horizontalPos === "top" ? "hanging" : "middle"; + if (r2.clearingMotionBlur) { + r2.motionBlurPxRatio = 1; } - __name(getDominantBaseLine, "getDominantBaseLine"); - function getTextAnchor(verticalPos) { - return verticalPos === "left" ? "start" : "middle"; + if (r2.textureDrawLastFrame && !textureDraw) { + needDraw[r2.NODE] = true; + needDraw[r2.SELECT_BOX] = true; } - __name(getTextAnchor, "getTextAnchor"); - function getTransformation(data6) { - return `translate(${data6.x}, ${data6.y}) rotate(${data6.rotation || 0})`; + var style3 = cy.style(); + var zoom2 = cy.zoom(); + var effectiveZoom = forcedZoom !== void 0 ? forcedZoom : zoom2; + var pan2 = cy.pan(); + var effectivePan = { + x: pan2.x, + y: pan2.y + }; + var vp = { + zoom: zoom2, + pan: { + x: pan2.x, + y: pan2.y + } + }; + var prevVp = r2.prevViewport; + var viewportIsDiff = prevVp === void 0 || vp.zoom !== prevVp.zoom || vp.pan.x !== prevVp.pan.x || vp.pan.y !== prevVp.pan.y; + if (!viewportIsDiff && !(inNodeDragGesture && !hasCompoundNodes2)) { + r2.motionBlurPxRatio = 1; } - __name(getTransformation, "getTransformation"); - const conf5 = getConfig2(); - log.debug("Rendering quadrant chart\n" + txt); - const securityLevel = conf5.securityLevel; - let sandboxElement; - if (securityLevel === "sandbox") { - sandboxElement = select_default2("#i" + id29); + if (forcedPan) { + effectivePan = forcedPan; } - const root4 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); - const svg2 = root4.select(`[id="${id29}"]`); - const group2 = svg2.append("g").attr("class", "main"); - const width3 = conf5.quadrantChart?.chartWidth ?? 500; - const height2 = conf5.quadrantChart?.chartHeight ?? 500; - configureSvgSize(svg2, height2, width3, conf5.quadrantChart?.useMaxWidth ?? true); - svg2.attr("viewBox", "0 0 " + width3 + " " + height2); - diagObj.db.setHeight(height2); - diagObj.db.setWidth(width3); - const quadrantData = diagObj.db.getQuadrantData(); - const quadrantsGroup = group2.append("g").attr("class", "quadrants"); - const borderGroup = group2.append("g").attr("class", "border"); - const dataPointGroup = group2.append("g").attr("class", "data-points"); - const labelGroup = group2.append("g").attr("class", "labels"); - const titleGroup = group2.append("g").attr("class", "title"); - if (quadrantData.title) { - titleGroup.append("text").attr("x", 0).attr("y", 0).attr("fill", quadrantData.title.fill).attr("font-size", quadrantData.title.fontSize).attr("dominant-baseline", getDominantBaseLine(quadrantData.title.horizontalPos)).attr("text-anchor", getTextAnchor(quadrantData.title.verticalPos)).attr("transform", getTransformation(quadrantData.title)).text(quadrantData.title.text); + effectiveZoom *= pixelRatio; + effectivePan.x *= pixelRatio; + effectivePan.y *= pixelRatio; + var eles = r2.getCachedZSortedEles(); + function mbclear(context2, x5, y6, w4, h3) { + var gco = context2.globalCompositeOperation; + context2.globalCompositeOperation = "destination-out"; + r2.colorFillStyle(context2, 255, 255, 255, r2.motionBlurTransparency); + context2.fillRect(x5, y6, w4, h3); + context2.globalCompositeOperation = gco; } - if (quadrantData.borderLines) { - borderGroup.selectAll("line").data(quadrantData.borderLines).enter().append("line").attr("x1", (data6) => data6.x1).attr("y1", (data6) => data6.y1).attr("x2", (data6) => data6.x2).attr("y2", (data6) => data6.y2).style("stroke", (data6) => data6.strokeFill).style("stroke-width", (data6) => data6.strokeWidth); + __name(mbclear, "mbclear"); + function setContextTransform2(context2, clear20) { + var ePan, eZoom, w4, h3; + if (!r2.clearingMotionBlur && (context2 === data5.bufferContexts[r2.MOTIONBLUR_BUFFER_NODE] || context2 === data5.bufferContexts[r2.MOTIONBLUR_BUFFER_DRAG])) { + ePan = { + x: pan2.x * mbPxRatio, + y: pan2.y * mbPxRatio + }; + eZoom = zoom2 * mbPxRatio; + w4 = r2.canvasWidth * mbPxRatio; + h3 = r2.canvasHeight * mbPxRatio; + } else { + ePan = effectivePan; + eZoom = effectiveZoom; + w4 = r2.canvasWidth; + h3 = r2.canvasHeight; + } + context2.setTransform(1, 0, 0, 1, 0, 0); + if (clear20 === "motionBlur") { + mbclear(context2, 0, 0, w4, h3); + } else if (!forcedContext && (clear20 === void 0 || clear20)) { + context2.clearRect(0, 0, w4, h3); + } + if (!drawAllLayers) { + context2.translate(ePan.x, ePan.y); + context2.scale(eZoom, eZoom); + } + if (forcedPan) { + context2.translate(forcedPan.x, forcedPan.y); + } + if (forcedZoom) { + context2.scale(forcedZoom, forcedZoom); + } + } + __name(setContextTransform2, "setContextTransform"); + if (!textureDraw) { + r2.textureDrawLastFrame = false; + } + if (textureDraw) { + r2.textureDrawLastFrame = true; + if (!r2.textureCache) { + r2.textureCache = {}; + r2.textureCache.bb = cy.mutableElements().boundingBox(); + r2.textureCache.texture = r2.data.bufferCanvases[r2.TEXTURE_BUFFER]; + var cxt = r2.data.bufferContexts[r2.TEXTURE_BUFFER]; + cxt.setTransform(1, 0, 0, 1, 0, 0); + cxt.clearRect(0, 0, r2.canvasWidth * r2.textureMult, r2.canvasHeight * r2.textureMult); + r2.render({ + forcedContext: cxt, + drawOnlyNodeLayer: true, + forcedPxRatio: pixelRatio * r2.textureMult + }); + var vp = r2.textureCache.viewport = { + zoom: cy.zoom(), + pan: cy.pan(), + width: r2.canvasWidth, + height: r2.canvasHeight + }; + vp.mpan = { + x: (0 - vp.pan.x) / vp.zoom, + y: (0 - vp.pan.y) / vp.zoom + }; + } + needDraw[r2.DRAG] = false; + needDraw[r2.NODE] = false; + var context = data5.contexts[r2.NODE]; + var texture = r2.textureCache.texture; + var vp = r2.textureCache.viewport; + context.setTransform(1, 0, 0, 1, 0, 0); + if (motionBlur) { + mbclear(context, 0, 0, vp.width, vp.height); + } else { + context.clearRect(0, 0, vp.width, vp.height); + } + var outsideBgColor = style3.core("outside-texture-bg-color").value; + var outsideBgOpacity = style3.core("outside-texture-bg-opacity").value; + r2.colorFillStyle(context, outsideBgColor[0], outsideBgColor[1], outsideBgColor[2], outsideBgOpacity); + context.fillRect(0, 0, vp.width, vp.height); + var zoom2 = cy.zoom(); + setContextTransform2(context, false); + context.clearRect(vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); + context.drawImage(texture, vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); + } else if (r2.textureOnViewport && !forcedContext) { + r2.textureCache = null; + } + var extent2 = cy.extent(); + var vpManip = r2.pinching || r2.hoverData.dragging || r2.swipePanning || r2.data.wheelZooming || r2.hoverData.draggingEles || r2.cy.animated(); + var hideEdges = r2.hideEdgesOnViewport && vpManip; + var needMbClear = []; + needMbClear[r2.NODE] = !needDraw[r2.NODE] && motionBlur && !r2.clearedForMotionBlur[r2.NODE] || r2.clearingMotionBlur; + if (needMbClear[r2.NODE]) { + r2.clearedForMotionBlur[r2.NODE] = true; + } + needMbClear[r2.DRAG] = !needDraw[r2.DRAG] && motionBlur && !r2.clearedForMotionBlur[r2.DRAG] || r2.clearingMotionBlur; + if (needMbClear[r2.DRAG]) { + r2.clearedForMotionBlur[r2.DRAG] = true; + } + if (needDraw[r2.NODE] || drawAllLayers || drawOnlyNodeLayer || needMbClear[r2.NODE]) { + var useBuffer = motionBlur && !needMbClear[r2.NODE] && mbPxRatio !== 1; + var context = forcedContext || (useBuffer ? r2.data.bufferContexts[r2.MOTIONBLUR_BUFFER_NODE] : data5.contexts[r2.NODE]); + var clear19 = motionBlur && !useBuffer ? "motionBlur" : void 0; + setContextTransform2(context, clear19); + if (hideEdges) { + r2.drawCachedNodes(context, eles.nondrag, pixelRatio, extent2); + } else { + r2.drawLayeredElements(context, eles.nondrag, pixelRatio, extent2); + } + if (r2.debug) { + r2.drawDebugPoints(context, eles.nondrag); + } + if (!drawAllLayers && !motionBlur) { + needDraw[r2.NODE] = false; + } + } + if (!drawOnlyNodeLayer && (needDraw[r2.DRAG] || drawAllLayers || needMbClear[r2.DRAG])) { + var useBuffer = motionBlur && !needMbClear[r2.DRAG] && mbPxRatio !== 1; + var context = forcedContext || (useBuffer ? r2.data.bufferContexts[r2.MOTIONBLUR_BUFFER_DRAG] : data5.contexts[r2.DRAG]); + setContextTransform2(context, motionBlur && !useBuffer ? "motionBlur" : void 0); + if (hideEdges) { + r2.drawCachedNodes(context, eles.drag, pixelRatio, extent2); + } else { + r2.drawCachedElements(context, eles.drag, pixelRatio, extent2); + } + if (r2.debug) { + r2.drawDebugPoints(context, eles.drag); + } + if (!drawAllLayers && !motionBlur) { + needDraw[r2.DRAG] = false; + } + } + this.drawSelectionRectangle(options2, setContextTransform2); + if (motionBlur && mbPxRatio !== 1) { + var cxtNode = data5.contexts[r2.NODE]; + var txtNode = r2.data.bufferCanvases[r2.MOTIONBLUR_BUFFER_NODE]; + var cxtDrag = data5.contexts[r2.DRAG]; + var txtDrag = r2.data.bufferCanvases[r2.MOTIONBLUR_BUFFER_DRAG]; + var drawMotionBlur = /* @__PURE__ */ __name(function drawMotionBlur2(cxt2, txt, needClear) { + cxt2.setTransform(1, 0, 0, 1, 0, 0); + if (needClear || !motionBlurFadeEffect) { + cxt2.clearRect(0, 0, r2.canvasWidth, r2.canvasHeight); + } else { + mbclear(cxt2, 0, 0, r2.canvasWidth, r2.canvasHeight); + } + var pxr = mbPxRatio; + cxt2.drawImage( + txt, + // img + 0, + 0, + // sx, sy + r2.canvasWidth * pxr, + r2.canvasHeight * pxr, + // sw, sh + 0, + 0, + // x, y + r2.canvasWidth, + r2.canvasHeight + // w, h + ); + }, "drawMotionBlur"); + if (needDraw[r2.NODE] || needMbClear[r2.NODE]) { + drawMotionBlur(cxtNode, txtNode, needMbClear[r2.NODE]); + needDraw[r2.NODE] = false; + } + if (needDraw[r2.DRAG] || needMbClear[r2.DRAG]) { + drawMotionBlur(cxtDrag, txtDrag, needMbClear[r2.DRAG]); + needDraw[r2.DRAG] = false; + } + } + r2.prevViewport = vp; + if (r2.clearingMotionBlur) { + r2.clearingMotionBlur = false; + r2.motionBlurCleared = true; + r2.motionBlur = true; + } + if (motionBlur) { + r2.motionBlurTimeout = setTimeout(function() { + r2.motionBlurTimeout = null; + r2.clearedForMotionBlur[r2.NODE] = false; + r2.clearedForMotionBlur[r2.DRAG] = false; + r2.motionBlur = false; + r2.clearingMotionBlur = !textureDraw; + r2.mbFrames = 0; + needDraw[r2.NODE] = true; + needDraw[r2.DRAG] = true; + r2.redraw(); + }, motionBlurDelay); + } + if (!forcedContext) { + cy.emit("render"); } - const quadrants = quadrantsGroup.selectAll("g.quadrant").data(quadrantData.quadrants).enter().append("g").attr("class", "quadrant"); - quadrants.append("rect").attr("x", (data6) => data6.x).attr("y", (data6) => data6.y).attr("width", (data6) => data6.width).attr("height", (data6) => data6.height).attr("fill", (data6) => data6.fill); - quadrants.append("text").attr("x", 0).attr("y", 0).attr("fill", (data6) => data6.text.fill).attr("font-size", (data6) => data6.text.fontSize).attr( - "dominant-baseline", - (data6) => getDominantBaseLine(data6.text.horizontalPos) - ).attr("text-anchor", (data6) => getTextAnchor(data6.text.verticalPos)).attr("transform", (data6) => getTransformation(data6.text)).text((data6) => data6.text.text); - const labels = labelGroup.selectAll("g.label").data(quadrantData.axisLabels).enter().append("g").attr("class", "label"); - labels.append("text").attr("x", 0).attr("y", 0).text((data6) => data6.text).attr("fill", (data6) => data6.fill).attr("font-size", (data6) => data6.fontSize).attr("dominant-baseline", (data6) => getDominantBaseLine(data6.horizontalPos)).attr("text-anchor", (data6) => getTextAnchor(data6.verticalPos)).attr("transform", (data6) => getTransformation(data6)); - const dataPoints = dataPointGroup.selectAll("g.data-point").data(quadrantData.points).enter().append("g").attr("class", "data-point"); - dataPoints.append("circle").attr("cx", (data6) => data6.x).attr("cy", (data6) => data6.y).attr("r", (data6) => data6.radius).attr("fill", (data6) => data6.fill).attr("stroke", (data6) => data6.strokeColor).attr("stroke-width", (data6) => data6.strokeWidth); - dataPoints.append("text").attr("x", 0).attr("y", 0).text((data6) => data6.text.text).attr("fill", (data6) => data6.text.fill).attr("font-size", (data6) => data6.text.fontSize).attr( - "dominant-baseline", - (data6) => getDominantBaseLine(data6.text.horizontalPos) - ).attr("text-anchor", (data6) => getTextAnchor(data6.text.verticalPos)).attr("transform", (data6) => getTransformation(data6.text)); - }, "draw"); - quadrantRenderer_default = { - draw: draw8 }; - } - }); - - // src/diagrams/quadrant-chart/quadrantDiagram.ts - var quadrantDiagram_exports = {}; - __export(quadrantDiagram_exports, { - diagram: () => diagram8 - }); - var diagram8; - var init_quadrantDiagram = __esm({ - "src/diagrams/quadrant-chart/quadrantDiagram.ts"() { - "use strict"; - init_quadrant(); - init_quadrantDb(); - init_quadrantRenderer(); - diagram8 = { - parser: quadrant_default, - db: quadrantDb_default, - renderer: quadrantRenderer_default, - styles: /* @__PURE__ */ __name(() => "", "styles") + CRp$5.drawSelectionRectangle = function(options2, setContextTransform2) { + var r2 = this; + var cy = r2.cy; + var data5 = r2.data; + var style3 = cy.style(); + var drawOnlyNodeLayer = options2.drawOnlyNodeLayer; + var drawAllLayers = options2.drawAllLayers; + var needDraw = data5.canvasNeedsRedraw; + var forcedContext = options2.forcedContext; + if (r2.showFps || !drawOnlyNodeLayer && needDraw[r2.SELECT_BOX] && !drawAllLayers) { + var context = forcedContext || data5.contexts[r2.SELECT_BOX]; + setContextTransform2(context); + if (r2.selection[4] == 1 && (r2.hoverData.selecting || r2.touchData.selecting)) { + var zoom2 = r2.cy.zoom(); + var borderWidth = style3.core("selection-box-border-width").value / zoom2; + context.lineWidth = borderWidth; + context.fillStyle = "rgba(" + style3.core("selection-box-color").value[0] + "," + style3.core("selection-box-color").value[1] + "," + style3.core("selection-box-color").value[2] + "," + style3.core("selection-box-opacity").value + ")"; + context.fillRect(r2.selection[0], r2.selection[1], r2.selection[2] - r2.selection[0], r2.selection[3] - r2.selection[1]); + if (borderWidth > 0) { + context.strokeStyle = "rgba(" + style3.core("selection-box-border-color").value[0] + "," + style3.core("selection-box-border-color").value[1] + "," + style3.core("selection-box-border-color").value[2] + "," + style3.core("selection-box-opacity").value + ")"; + context.strokeRect(r2.selection[0], r2.selection[1], r2.selection[2] - r2.selection[0], r2.selection[3] - r2.selection[1]); + } + } + if (data5.bgActivePosistion && !r2.hoverData.selecting) { + var zoom2 = r2.cy.zoom(); + var pos = data5.bgActivePosistion; + context.fillStyle = "rgba(" + style3.core("active-bg-color").value[0] + "," + style3.core("active-bg-color").value[1] + "," + style3.core("active-bg-color").value[2] + "," + style3.core("active-bg-opacity").value + ")"; + context.beginPath(); + context.arc(pos.x, pos.y, style3.core("active-bg-size").pfValue / zoom2, 0, 2 * Math.PI); + context.fill(); + } + var timeToRender = r2.lastRedrawTime; + if (r2.showFps && timeToRender) { + timeToRender = Math.round(timeToRender); + var fps = Math.round(1e3 / timeToRender); + var text4 = "1 frame = " + timeToRender + " ms = " + fps + " fps"; + context.setTransform(1, 0, 0, 1, 0, 0); + context.fillStyle = "rgba(255, 0, 0, 0.75)"; + context.strokeStyle = "rgba(255, 0, 0, 0.75)"; + context.font = "30px Arial"; + if (!fpsHeight) { + var dims = context.measureText(text4); + fpsHeight = dims.actualBoundingBoxAscent; + } + context.fillText(text4, 0, fpsHeight); + var maxFps = 60; + context.strokeRect(0, fpsHeight + 10, 250, 20); + context.fillRect(0, fpsHeight + 10, 250 * Math.min(fps / maxFps, 1), 20); + } + if (!drawAllLayers) { + needDraw[r2.SELECT_BOX] = false; + } + } }; - } - }); - - // src/diagrams/xychart/parser/xychart.jison - var parser10, xychart_default; - var init_xychart = __esm({ - "src/diagrams/xychart/parser/xychart.jison"() { - "use strict"; - parser10 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; - return o3; - }, "o"), $V0 = [1, 10, 12, 14, 16, 18, 19, 21, 23], $V1 = [2, 6], $V2 = [1, 3], $V3 = [1, 5], $V4 = [1, 6], $V5 = [1, 7], $V6 = [1, 5, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $V7 = [1, 25], $V8 = [1, 26], $V9 = [1, 28], $Va = [1, 29], $Vb = [1, 30], $Vc = [1, 31], $Vd = [1, 32], $Ve = [1, 33], $Vf = [1, 34], $Vg = [1, 35], $Vh = [1, 36], $Vi = [1, 37], $Vj = [1, 43], $Vk = [1, 42], $Vl = [1, 47], $Vm = [1, 50], $Vn = [1, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $Vo = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36], $Vp = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], $Vq = [1, 64]; - var parser24 = { - trace: /* @__PURE__ */ __name(function trace() { - }, "trace"), - yy: {}, - symbols_: { "error": 2, "start": 3, "eol": 4, "XYCHART": 5, "chartConfig": 6, "document": 7, "CHART_ORIENTATION": 8, "statement": 9, "title": 10, "text": 11, "X_AXIS": 12, "parseXAxis": 13, "Y_AXIS": 14, "parseYAxis": 15, "LINE": 16, "plotData": 17, "BAR": 18, "acc_title": 19, "acc_title_value": 20, "acc_descr": 21, "acc_descr_value": 22, "acc_descr_multiline_value": 23, "SQUARE_BRACES_START": 24, "commaSeparatedNumbers": 25, "SQUARE_BRACES_END": 26, "NUMBER_WITH_DECIMAL": 27, "COMMA": 28, "xAxisData": 29, "bandData": 30, "ARROW_DELIMITER": 31, "commaSeparatedTexts": 32, "yAxisData": 33, "NEWLINE": 34, "SEMI": 35, "EOF": 36, "alphaNum": 37, "STR": 38, "MD_STR": 39, "alphaNumToken": 40, "AMP": 41, "NUM": 42, "ALPHA": 43, "PLUS": 44, "EQUALS": 45, "MULT": 46, "DOT": 47, "BRKT": 48, "MINUS": 49, "UNDERSCORE": 50, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 5: "XYCHART", 8: "CHART_ORIENTATION", 10: "title", 12: "X_AXIS", 14: "Y_AXIS", 16: "LINE", 18: "BAR", 19: "acc_title", 20: "acc_title_value", 21: "acc_descr", 22: "acc_descr_value", 23: "acc_descr_multiline_value", 24: "SQUARE_BRACES_START", 26: "SQUARE_BRACES_END", 27: "NUMBER_WITH_DECIMAL", 28: "COMMA", 31: "ARROW_DELIMITER", 34: "NEWLINE", 35: "SEMI", 36: "EOF", 38: "STR", 39: "MD_STR", 41: "AMP", 42: "NUM", 43: "ALPHA", 44: "PLUS", 45: "EQUALS", 46: "MULT", 47: "DOT", 48: "BRKT", 49: "MINUS", 50: "UNDERSCORE" }, - productions_: [0, [3, 2], [3, 3], [3, 2], [3, 1], [6, 1], [7, 0], [7, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 3], [9, 2], [9, 3], [9, 2], [9, 2], [9, 1], [17, 3], [25, 3], [25, 1], [13, 1], [13, 2], [13, 1], [29, 1], [29, 3], [30, 3], [32, 3], [32, 1], [15, 1], [15, 2], [15, 1], [33, 3], [4, 1], [4, 1], [4, 1], [11, 1], [11, 1], [11, 1], [37, 1], [37, 2], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1]], - performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 5: - yy.setOrientation($$[$0]); - break; - case 9: - yy.setDiagramTitle($$[$0].text.trim()); - break; - case 12: - yy.setLineData({ text: "", type: "text" }, $$[$0]); - break; - case 13: - yy.setLineData($$[$0 - 1], $$[$0]); - break; - case 14: - yy.setBarData({ text: "", type: "text" }, $$[$0]); - break; - case 15: - yy.setBarData($$[$0 - 1], $$[$0]); - break; - case 16: - this.$ = $$[$0].trim(); - yy.setAccTitle(this.$); - break; - case 17: - case 18: - this.$ = $$[$0].trim(); - yy.setAccDescription(this.$); - break; - case 19: - this.$ = $$[$0 - 1]; - break; - case 20: - this.$ = [Number($$[$0 - 2]), ...$$[$0]]; - break; - case 21: - this.$ = [Number($$[$0])]; - break; - case 22: - yy.setXAxisTitle($$[$0]); - break; - case 23: - yy.setXAxisTitle($$[$0 - 1]); - break; - case 24: - yy.setXAxisTitle({ type: "text", text: "" }); - break; - case 25: - yy.setXAxisBand($$[$0]); - break; - case 26: - yy.setXAxisRangeData(Number($$[$0 - 2]), Number($$[$0])); - break; - case 27: - this.$ = $$[$0 - 1]; - break; - case 28: - this.$ = [$$[$0 - 2], ...$$[$0]]; - break; - case 29: - this.$ = [$$[$0]]; - break; - case 30: - yy.setYAxisTitle($$[$0]); - break; - case 31: - yy.setYAxisTitle($$[$0 - 1]); - break; - case 32: - yy.setYAxisTitle({ type: "text", text: "" }); - break; - case 33: - yy.setYAxisRangeData(Number($$[$0 - 2]), Number($$[$0])); - break; - case 37: - this.$ = { text: $$[$0], type: "text" }; - break; - case 38: - this.$ = { text: $$[$0], type: "text" }; - break; - case 39: - this.$ = { text: $$[$0], type: "markdown" }; - break; - case 40: - this.$ = $$[$0]; - break; - case 41: - this.$ = $$[$0 - 1] + "" + $$[$0]; - break; + __name(compileShader, "compileShader"); + __name(createProgram, "createProgram"); + __name(createTextureCanvas, "createTextureCanvas"); + __name(getEffectivePanZoom, "getEffectivePanZoom"); + __name(getEffectiveZoom, "getEffectiveZoom"); + __name(modelToRenderedPosition2, "modelToRenderedPosition"); + __name(isSimpleShape, "isSimpleShape"); + __name(arrayEqual, "arrayEqual"); + __name(toWebGLColor, "toWebGLColor"); + __name(indexToVec4, "indexToVec4"); + __name(vec4ToIndex, "vec4ToIndex"); + __name(createTexture, "createTexture"); + __name(getTypeInfo, "getTypeInfo"); + __name(createTypedArray, "createTypedArray"); + __name(createTypedArrayView, "createTypedArrayView"); + __name(createBufferStaticDraw, "createBufferStaticDraw"); + __name(createBufferDynamicDraw, "createBufferDynamicDraw"); + __name(create3x3MatrixBufferDynamicDraw, "create3x3MatrixBufferDynamicDraw"); + __name(createPickingFrameBuffer, "createPickingFrameBuffer"); + ARRAY_TYPE = typeof Float32Array !== "undefined" ? Float32Array : Array; + if (!Math.hypot) Math.hypot = function() { + var y6 = 0, i2 = arguments.length; + while (i2--) { + y6 += arguments[i2] * arguments[i2]; + } + return Math.sqrt(y6); + }; + __name(create3, "create"); + __name(identity6, "identity"); + __name(multiply, "multiply"); + __name(translate, "translate"); + __name(rotate, "rotate"); + __name(scale, "scale"); + __name(projection, "projection"); + Atlas = /* @__PURE__ */ (function() { + function Atlas2(r2, texSize, texRows, createTextureCanvas2) { + _classCallCheck(this, Atlas2); + this.debugID = Math.floor(Math.random() * 1e4); + this.r = r2; + this.texSize = texSize; + this.texRows = texRows; + this.texHeight = Math.floor(texSize / texRows); + this.enableWrapping = true; + this.locked = false; + this.texture = null; + this.needsBuffer = true; + this.freePointer = { + x: 0, + row: 0 + }; + this.keyToLocation = /* @__PURE__ */ new Map(); + this.canvas = createTextureCanvas2(r2, texSize, texSize); + this.scratch = createTextureCanvas2(r2, texSize, this.texHeight, "scratch"); + } + __name(Atlas2, "Atlas"); + return _createClass(Atlas2, [{ + key: "lock", + value: /* @__PURE__ */ __name(function lock() { + this.locked = true; + }, "lock") + }, { + key: "getKeys", + value: /* @__PURE__ */ __name(function getKeys() { + return new Set(this.keyToLocation.keys()); + }, "getKeys") + }, { + key: "getScale", + value: /* @__PURE__ */ __name(function getScale(_ref) { + var w4 = _ref.w, h3 = _ref.h; + var texHeight = this.texHeight, maxTexWidth = this.texSize; + var scale2 = texHeight / h3; + var texW = w4 * scale2; + var texH = h3 * scale2; + if (texW > maxTexWidth) { + scale2 = maxTexWidth / w4; + texW = w4 * scale2; + texH = h3 * scale2; } - }, "anonymous"), - table: [o2($V0, $V1, { 3: 1, 4: 2, 7: 4, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [3] }, o2($V0, $V1, { 4: 2, 7: 4, 3: 8, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), o2($V0, $V1, { 4: 2, 7: 4, 6: 9, 3: 10, 5: $V2, 8: [1, 11], 34: $V3, 35: $V4, 36: $V5 }), { 1: [2, 4], 9: 12, 10: [1, 13], 12: [1, 14], 14: [1, 15], 16: [1, 16], 18: [1, 17], 19: [1, 18], 21: [1, 19], 23: [1, 20] }, o2($V6, [2, 34]), o2($V6, [2, 35]), o2($V6, [2, 36]), { 1: [2, 1] }, o2($V0, $V1, { 4: 2, 7: 4, 3: 21, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [2, 3] }, o2($V6, [2, 5]), o2($V0, [2, 7], { 4: 22, 34: $V3, 35: $V4, 36: $V5 }), { 11: 23, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 39, 13: 38, 24: $Vj, 27: $Vk, 29: 40, 30: 41, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 45, 15: 44, 27: $Vl, 33: 46, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 49, 17: 48, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 52, 17: 51, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 20: [1, 53] }, { 22: [1, 54] }, o2($Vn, [2, 18]), { 1: [2, 2] }, o2($Vn, [2, 8]), o2($Vn, [2, 9]), o2($Vo, [2, 37], { 40: 55, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }), o2($Vo, [2, 38]), o2($Vo, [2, 39]), o2($Vp, [2, 40]), o2($Vp, [2, 42]), o2($Vp, [2, 43]), o2($Vp, [2, 44]), o2($Vp, [2, 45]), o2($Vp, [2, 46]), o2($Vp, [2, 47]), o2($Vp, [2, 48]), o2($Vp, [2, 49]), o2($Vp, [2, 50]), o2($Vp, [2, 51]), o2($Vn, [2, 10]), o2($Vn, [2, 22], { 30: 41, 29: 56, 24: $Vj, 27: $Vk }), o2($Vn, [2, 24]), o2($Vn, [2, 25]), { 31: [1, 57] }, { 11: 59, 32: 58, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o2($Vn, [2, 11]), o2($Vn, [2, 30], { 33: 60, 27: $Vl }), o2($Vn, [2, 32]), { 31: [1, 61] }, o2($Vn, [2, 12]), { 17: 62, 24: $Vm }, { 25: 63, 27: $Vq }, o2($Vn, [2, 14]), { 17: 65, 24: $Vm }, o2($Vn, [2, 16]), o2($Vn, [2, 17]), o2($Vp, [2, 41]), o2($Vn, [2, 23]), { 27: [1, 66] }, { 26: [1, 67] }, { 26: [2, 29], 28: [1, 68] }, o2($Vn, [2, 31]), { 27: [1, 69] }, o2($Vn, [2, 13]), { 26: [1, 70] }, { 26: [2, 21], 28: [1, 71] }, o2($Vn, [2, 15]), o2($Vn, [2, 26]), o2($Vn, [2, 27]), { 11: 59, 32: 72, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o2($Vn, [2, 33]), o2($Vn, [2, 19]), { 25: 73, 27: $Vq }, { 26: [2, 28] }, { 26: [2, 20] }], - defaultActions: { 8: [2, 1], 10: [2, 3], 21: [2, 2], 72: [2, 28], 73: [2, 20] }, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); + return { + scale: scale2, + texW, + texH + }; + }, "getScale") + }, { + key: "draw", + value: /* @__PURE__ */ __name(function draw26(key, bb, doDrawing) { + var _this = this; + if (this.locked) throw new Error("can't draw, atlas is locked"); + var texSize = this.texSize, texRows = this.texRows, texHeight = this.texHeight; + var _this$getScale = this.getScale(bb), scale2 = _this$getScale.scale, texW = _this$getScale.texW, texH = _this$getScale.texH; + var drawAt = /* @__PURE__ */ __name(function drawAt2(location, canvas) { + if (doDrawing && canvas) { + var context = canvas.context; + var x5 = location.x, row = location.row; + var xOffset = x5; + var yOffset = texHeight * row; + context.save(); + context.translate(xOffset, yOffset); + context.scale(scale2, scale2); + doDrawing(context, bb); + context.restore(); + } + }, "drawAt"); + var locations = [null, null]; + var drawNormal = /* @__PURE__ */ __name(function drawNormal2() { + drawAt(_this.freePointer, _this.canvas); + locations[0] = { + x: _this.freePointer.x, + y: _this.freePointer.row * texHeight, + w: texW, + h: texH + }; + locations[1] = { + // create a second location with a width of 0, for convenience + x: _this.freePointer.x + texW, + y: _this.freePointer.row * texHeight, + w: 0, + h: texH + }; + _this.freePointer.x += texW; + if (_this.freePointer.x == texSize) { + _this.freePointer.x = 0; + _this.freePointer.row++; + } + }, "drawNormal"); + var drawWrapped = /* @__PURE__ */ __name(function drawWrapped2() { + var scratch = _this.scratch, canvas = _this.canvas; + scratch.clear(); + drawAt({ + x: 0, + row: 0 + }, scratch); + var firstTexW = texSize - _this.freePointer.x; + var secondTexW = texW - firstTexW; + var h3 = texHeight; + { + var dx = _this.freePointer.x; + var dy = _this.freePointer.row * texHeight; + var w4 = firstTexW; + canvas.context.drawImage(scratch, 0, 0, w4, h3, dx, dy, w4, h3); + locations[0] = { + x: dx, + y: dy, + w: w4, + h: texH + }; + } + { + var sx = firstTexW; + var _dy = (_this.freePointer.row + 1) * texHeight; + var _w = secondTexW; + if (canvas) { + canvas.context.drawImage(scratch, sx, 0, _w, h3, 0, _dy, _w, h3); + } + locations[1] = { + x: 0, + y: _dy, + w: _w, + h: texH + }; + } + _this.freePointer.x = secondTexW; + _this.freePointer.row++; + }, "drawWrapped"); + var moveToStartOfNextRow = /* @__PURE__ */ __name(function moveToStartOfNextRow2() { + _this.freePointer.x = 0; + _this.freePointer.row++; + }, "moveToStartOfNextRow"); + if (this.freePointer.x + texW <= texSize) { + drawNormal(); + } else if (this.freePointer.row >= texRows - 1) { + return false; + } else if (this.freePointer.x === texSize) { + moveToStartOfNextRow(); + drawNormal(); + } else if (this.enableWrapping) { + drawWrapped(); } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; + moveToStartOfNextRow(); + drawNormal(); } - }, "parseError"), - parse: /* @__PURE__ */ __name(function parse7(input) { - var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; - var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k2 in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { - sharedState.yy[k2] = this.yy[k2]; - } + this.keyToLocation.set(key, locations); + this.needsBuffer = true; + return locations; + }, "draw") + }, { + key: "getOffsets", + value: /* @__PURE__ */ __name(function getOffsets(key) { + return this.keyToLocation.get(key); + }, "getOffsets") + }, { + key: "isEmpty", + value: /* @__PURE__ */ __name(function isEmpty2() { + return this.freePointer.x === 0 && this.freePointer.row === 0; + }, "isEmpty") + }, { + key: "canFit", + value: /* @__PURE__ */ __name(function canFit(bb) { + if (this.locked) return false; + var texSize = this.texSize, texRows = this.texRows; + var _this$getScale2 = this.getScale(bb), texW = _this$getScale2.texW; + if (this.freePointer.x + texW > texSize) { + return this.freePointer.row < texRows - 1; } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; - sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; + return true; + }, "canFit") + // called on every frame + }, { + key: "bufferIfNeeded", + value: /* @__PURE__ */ __name(function bufferIfNeeded(gl) { + if (!this.texture) { + this.texture = createTexture(gl, this.debugID); } - var yyloc = lexer3.yylloc; - lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; + if (this.needsBuffer) { + this.texture.buffer(this.canvas); + this.needsBuffer = false; + if (this.locked) { + this.canvas = null; + this.scratch = null; + } } - function popStack(n2) { - stack.length = stack.length - 2 * n2; - vstack.length = vstack.length - n2; - lstack.length = lstack.length - n2; + }, "bufferIfNeeded") + }, { + key: "dispose", + value: /* @__PURE__ */ __name(function dispose() { + if (this.texture) { + this.texture.deleteTexture(); + this.texture = null; } - __name(popStack, "popStack"); - function lex() { - var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; - if (typeof token2 !== "number") { - if (token2 instanceof Array) { - tstack = token2; - token2 = tstack.pop(); - } - token2 = self2.symbols_[token2] || token2; + this.canvas = null; + this.scratch = null; + this.locked = true; + }, "dispose") + }]); + })(); + AtlasCollection = /* @__PURE__ */ (function() { + function AtlasCollection2(r2, texSize, texRows, createTextureCanvas2) { + _classCallCheck(this, AtlasCollection2); + this.r = r2; + this.texSize = texSize; + this.texRows = texRows; + this.createTextureCanvas = createTextureCanvas2; + this.atlases = []; + this.styleKeyToAtlas = /* @__PURE__ */ new Map(); + this.markedKeys = /* @__PURE__ */ new Set(); + } + __name(AtlasCollection2, "AtlasCollection"); + return _createClass(AtlasCollection2, [{ + key: "getKeys", + value: /* @__PURE__ */ __name(function getKeys() { + return new Set(this.styleKeyToAtlas.keys()); + }, "getKeys") + }, { + key: "_createAtlas", + value: /* @__PURE__ */ __name(function _createAtlas() { + var r2 = this.r, texSize = this.texSize, texRows = this.texRows, createTextureCanvas2 = this.createTextureCanvas; + return new Atlas(r2, texSize, texRows, createTextureCanvas2); + }, "_createAtlas") + }, { + key: "_getScratchCanvas", + value: /* @__PURE__ */ __name(function _getScratchCanvas() { + if (!this.scratch) { + var r2 = this.r, texSize = this.texSize, texRows = this.texRows, createTextureCanvas2 = this.createTextureCanvas; + var texHeight = Math.floor(texSize / texRows); + this.scratch = createTextureCanvas2(r2, texSize, texHeight, "scratch"); + } + return this.scratch; + }, "_getScratchCanvas") + }, { + key: "draw", + value: /* @__PURE__ */ __name(function draw26(key, bb, doDrawing) { + var atlas = this.styleKeyToAtlas.get(key); + if (!atlas) { + atlas = this.atlases[this.atlases.length - 1]; + if (!atlas || !atlas.canFit(bb)) { + if (atlas) atlas.lock(); + atlas = this._createAtlas(); + this.atlases.push(atlas); } - return token2; + atlas.draw(key, bb, doDrawing); + this.styleKeyToAtlas.set(key, atlas); } - __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; - while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); + return atlas; + }, "draw") + }, { + key: "getAtlas", + value: /* @__PURE__ */ __name(function getAtlas(key) { + return this.styleKeyToAtlas.get(key); + }, "getAtlas") + }, { + key: "hasAtlas", + value: /* @__PURE__ */ __name(function hasAtlas(key) { + return this.styleKeyToAtlas.has(key); + }, "hasAtlas") + }, { + key: "markKeyForGC", + value: /* @__PURE__ */ __name(function markKeyForGC(key) { + this.markedKeys.add(key); + }, "markKeyForGC") + }, { + key: "gc", + value: /* @__PURE__ */ __name(function gc2() { + var _this2 = this; + var markedKeys = this.markedKeys; + if (markedKeys.size === 0) { + console.log("nothing to garbage collect"); + return; + } + var newAtlases = []; + var newStyleKeyToAtlas = /* @__PURE__ */ new Map(); + var newAtlas = null; + var _iterator = _createForOfIteratorHelper(this.atlases), _step; + try { + var _loop = /* @__PURE__ */ __name(function _loop2() { + var atlas = _step.value; + var keys2 = atlas.getKeys(); + var keysToCollect = intersection2(markedKeys, keys2); + if (keysToCollect.size === 0) { + newAtlases.push(atlas); + keys2.forEach(function(k2) { + return newStyleKeyToAtlas.set(k2, atlas); + }); + return 1; } - action = table[state4] && table[state4][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p3 in table[state4]) { - if (this.terminals_[p3] && p3 > TERROR) { - expected.push("'" + this.terminals_[p3] + "'"); - } + if (!newAtlas) { + newAtlas = _this2._createAtlas(); + newAtlases.push(newAtlas); } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + var _iterator2 = _createForOfIteratorHelper(keys2), _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { + var key = _step2.value; + if (!keysToCollect.has(key)) { + var _atlas$getOffsets = atlas.getOffsets(key), _atlas$getOffsets2 = _slicedToArray(_atlas$getOffsets, 2), s1 = _atlas$getOffsets2[0], s2 = _atlas$getOffsets2[1]; + if (!newAtlas.canFit({ + w: s1.w + s2.w, + h: s1.h + })) { + newAtlas.lock(); + newAtlas = _this2._createAtlas(); + newAtlases.push(newAtlas); + } + if (atlas.canvas) { + _this2._copyTextureToNewAtlas(key, atlas, newAtlas); + newStyleKeyToAtlas.set(key, newAtlas); + } + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } - this.parseError(errStr, { - text: lexer3.match, - token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, - loc: yyloc, - expected - }); + atlas.dispose(); + }, "_loop"); + for (_iterator.s(); !(_step = _iterator.n()).done; ) { + if (_loop()) continue; } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + this.atlases = newAtlases; + this.styleKeyToAtlas = newStyleKeyToAtlas; + this.markedKeys = /* @__PURE__ */ new Set(); + }, "gc") + }, { + key: "_copyTextureToNewAtlas", + value: /* @__PURE__ */ __name(function _copyTextureToNewAtlas(key, oldAtlas, newAtlas) { + var _oldAtlas$getOffsets = oldAtlas.getOffsets(key), _oldAtlas$getOffsets2 = _slicedToArray(_oldAtlas$getOffsets, 2), s1 = _oldAtlas$getOffsets2[0], s2 = _oldAtlas$getOffsets2[1]; + if (s2.w === 0) { + newAtlas.draw(key, s1, function(context) { + context.drawImage(oldAtlas.canvas, s1.x, s1.y, s1.w, s1.h, 0, 0, s1.w, s1.h); + }); + } else { + var scratch = this._getScratchCanvas(); + scratch.clear(); + scratch.context.drawImage(oldAtlas.canvas, s1.x, s1.y, s1.w, s1.h, 0, 0, s1.w, s1.h); + scratch.context.drawImage(oldAtlas.canvas, s2.x, s2.y, s2.w, s2.h, s1.w, 0, s2.w, s2.h); + var w4 = s1.w + s2.w; + var h3 = s1.h; + newAtlas.draw(key, { + w: w4, + h: h3 + }, function(context) { + context.drawImage( + scratch, + 0, + 0, + w4, + h3, + 0, + 0, + w4, + h3 + // the destination context has already been translated to the correct position + ); + }); + } + }, "_copyTextureToNewAtlas") + }, { + key: "getCounts", + value: /* @__PURE__ */ __name(function getCounts() { + return { + keyCount: this.styleKeyToAtlas.size, + atlasCount: new Set(this.styleKeyToAtlas.values()).size + }; + }, "getCounts") + }]); + })(); + __name(intersection2, "intersection"); + AtlasManager = /* @__PURE__ */ (function() { + function AtlasManager2(r2, globalOptions) { + _classCallCheck(this, AtlasManager2); + this.r = r2; + this.globalOptions = globalOptions; + this.atlasSize = globalOptions.webglTexSize; + this.maxAtlasesPerBatch = globalOptions.webglTexPerBatch; + this.renderTypes = /* @__PURE__ */ new Map(); + this.collections = /* @__PURE__ */ new Map(); + this.typeAndIdToKey = /* @__PURE__ */ new Map(); + } + __name(AtlasManager2, "AtlasManager"); + return _createClass(AtlasManager2, [{ + key: "getAtlasSize", + value: /* @__PURE__ */ __name(function getAtlasSize() { + return this.atlasSize; + }, "getAtlasSize") + }, { + key: "addAtlasCollection", + value: /* @__PURE__ */ __name(function addAtlasCollection(collectionName, atlasCollectionOptions) { + var _this$globalOptions = this.globalOptions, webglTexSize = _this$globalOptions.webglTexSize, createTextureCanvas2 = _this$globalOptions.createTextureCanvas; + var texRows = atlasCollectionOptions.texRows; + var cachedCreateTextureCanvas = this._cacheScratchCanvas(createTextureCanvas2); + var atlasCollection = new AtlasCollection(this.r, webglTexSize, texRows, cachedCreateTextureCanvas); + this.collections.set(collectionName, atlasCollection); + }, "addAtlasCollection") + }, { + key: "addRenderType", + value: /* @__PURE__ */ __name(function addRenderType(type3, renderTypeOptions) { + var collection4 = renderTypeOptions.collection; + if (!this.collections.has(collection4)) throw new Error("invalid atlas collection name '".concat(collection4, "'")); + var atlasCollection = this.collections.get(collection4); + var opts = extend4({ + type: type3, + atlasCollection + }, renderTypeOptions); + this.renderTypes.set(type3, opts); + }, "addRenderType") + }, { + key: "getRenderTypeOpts", + value: /* @__PURE__ */ __name(function getRenderTypeOpts(type3) { + return this.renderTypes.get(type3); + }, "getRenderTypeOpts") + }, { + key: "getAtlasCollection", + value: /* @__PURE__ */ __name(function getAtlasCollection(name) { + return this.collections.get(name); + }, "getAtlasCollection") + }, { + key: "_cacheScratchCanvas", + value: /* @__PURE__ */ __name(function _cacheScratchCanvas(createTextureCanvas2) { + var prevW = -1; + var prevH = -1; + var scratchCanvas = null; + return function(r2, w4, h3, scratch) { + if (scratch) { + if (!scratchCanvas || w4 != prevW || h3 != prevH) { + prevW = w4; + prevH = h3; + scratchCanvas = createTextureCanvas2(r2, w4, h3); + } + return scratchCanvas; + } else { + return createTextureCanvas2(r2, w4, h3); } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; - if (recovering > 0) { - recovering--; + }; + }, "_cacheScratchCanvas") + }, { + key: "_key", + value: /* @__PURE__ */ __name(function _key(renderType, id30) { + return "".concat(renderType, "-").concat(id30); + }, "_key") + /** Marks textues associated with the element for garbage collection. */ + }, { + key: "invalidate", + value: /* @__PURE__ */ __name(function invalidate(eles) { + var _this3 = this; + var _ref2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref2$forceRedraw = _ref2.forceRedraw, forceRedraw = _ref2$forceRedraw === void 0 ? false : _ref2$forceRedraw, _ref2$filterEle = _ref2.filterEle, filterEle = _ref2$filterEle === void 0 ? function() { + return true; + } : _ref2$filterEle, _ref2$filterType = _ref2.filterType, filterType = _ref2$filterType === void 0 ? function() { + return true; + } : _ref2$filterType; + var needGC = false; + var runGCNow = false; + var _iterator3 = _createForOfIteratorHelper(eles), _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) { + var ele = _step3.value; + if (filterEle(ele)) { + var _iterator4 = _createForOfIteratorHelper(this.renderTypes.values()), _step4; + try { + var _loop2 = /* @__PURE__ */ __name(function _loop22() { + var opts = _step4.value; + var renderType = opts.type; + if (filterType(renderType)) { + var atlasCollection = _this3.collections.get(opts.collection); + var key = opts.getKey(ele); + var keyArray = Array.isArray(key) ? key : [key]; + if (forceRedraw) { + keyArray.forEach(function(key2) { + return atlasCollection.markKeyForGC(key2); + }); + runGCNow = true; + } else { + var id30 = opts.getID ? opts.getID(ele) : ele.id(); + var mapKey = _this3._key(renderType, id30); + var oldKeyArray = _this3.typeAndIdToKey.get(mapKey); + if (oldKeyArray !== void 0 && !arrayEqual(keyArray, oldKeyArray)) { + needGC = true; + _this3.typeAndIdToKey["delete"](mapKey); + oldKeyArray.forEach(function(oldKey) { + return atlasCollection.markKeyForGC(oldKey); + }); + } + } + } + }, "_loop2"); + for (_iterator4.s(); !(_step4 = _iterator4.n()).done; ) { + _loop2(); } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r2 = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r2 !== "undefined") { - return r2; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState2); - break; - case 3: - return true; + } } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); } - return true; - }, "parse") - }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { - EOF: 1, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str2, hash); + if (runGCNow) { + this.gc(); + needGC = false; + } + return needGC; + }, "invalidate") + /** Garbage collect */ + }, { + key: "gc", + value: /* @__PURE__ */ __name(function gc2() { + var _iterator5 = _createForOfIteratorHelper(this.collections.values()), _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done; ) { + var collection4 = _step5.value; + collection4.gc(); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + }, "gc") + }, { + key: "getOrCreateAtlas", + value: /* @__PURE__ */ __name(function getOrCreateAtlas(ele, type3, bb, styleKey) { + var opts = this.renderTypes.get(type3); + var atlasCollection = this.collections.get(opts.collection); + var drawn = false; + var atlas = atlasCollection.draw(styleKey, bb, function(context) { + if (opts.drawClipped) { + context.save(); + context.beginPath(); + context.rect(0, 0, bb.w, bb.h); + context.clip(); + opts.drawElement(context, ele, bb, true, true); + context.restore(); } else { - throw new Error(str2); + opts.drawElement(context, ele, bb, true, true); } - }, "parseError"), - // resets the lexer, sets new input - setInput: /* @__PURE__ */ __name(function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 - }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; - } - this.offset = 0; - return this; - }, "setInput"), - // consumes and returns one char from the input - input: /* @__PURE__ */ __name(function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; + drawn = true; + }); + if (drawn) { + var id30 = opts.getID ? opts.getID(ele) : ele.id(); + var mapKey = this._key(type3, id30); + if (this.typeAndIdToKey.has(mapKey)) { + this.typeAndIdToKey.get(mapKey).push(styleKey); } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } - this._input = this._input.slice(1); - return ch; - }, "input"), - // unshifts one char (or a string) into the input - unput: /* @__PURE__ */ __name(function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; + this.typeAndIdToKey.set(mapKey, [styleKey]); } - var r2 = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + } + return atlas; + }, "getOrCreateAtlas") + }, { + key: "getAtlasInfo", + value: /* @__PURE__ */ __name(function getAtlasInfo(ele, type3) { + var _this4 = this; + var opts = this.renderTypes.get(type3); + var key = opts.getKey(ele); + var keyArray = Array.isArray(key) ? key : [key]; + return keyArray.map(function(styleKey) { + var bb = opts.getBoundingBox(ele, styleKey); + var atlas = _this4.getOrCreateAtlas(ele, type3, bb, styleKey); + var _atlas$getOffsets3 = atlas.getOffsets(styleKey), _atlas$getOffsets4 = _slicedToArray(_atlas$getOffsets3, 2), tex1 = _atlas$getOffsets4[0], tex2 = _atlas$getOffsets4[1]; + return { + atlas, + tex: tex1, + tex1, + tex2, + bb }; - if (this.options.ranges) { - this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, "unput"), - // When called from action, caches matched text and appends it on next action - more: /* @__PURE__ */ __name(function() { - this._more = true; - return this; - }, "more"), - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: /* @__PURE__ */ __name(function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno + }); + }, "getAtlasInfo") + }, { + key: "getDebugInfo", + value: /* @__PURE__ */ __name(function getDebugInfo() { + var debugInfo = []; + var _iterator6 = _createForOfIteratorHelper(this.collections), _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done; ) { + var _step6$value = _slicedToArray(_step6.value, 2), name = _step6$value[0], collection4 = _step6$value[1]; + var _collection$getCounts = collection4.getCounts(), keyCount = _collection$getCounts.keyCount, atlasCount = _collection$getCounts.atlasCount; + debugInfo.push({ + type: name, + keyCount, + atlasCount }); } - return this; - }, "reject"), - // retain first n characters of the match - less: /* @__PURE__ */ __name(function(n2) { - this.unput(this.match.slice(n2)); - }, "less"), - // displays already matched input, i.e. for error messages - pastInput: /* @__PURE__ */ __name(function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, "pastInput"), - // displays upcoming input, i.e. for error messages - upcomingInput: /* @__PURE__ */ __name(function() { - var next3 = this.match; - if (next3.length < 20) { - next3 += this._input.substr(0, 20 - next3.length); - } - return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, "upcomingInput"), - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: /* @__PURE__ */ __name(function() { - var pre = this.pastInput(); - var c3 = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c3 + "^"; - }, "showPosition"), - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { - var token2, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); - } - } - lines = match2[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } + return debugInfo; + }, "getDebugInfo") + }]); + })(); + AtlasBatchManager = /* @__PURE__ */ (function() { + function AtlasBatchManager2(globalOptions) { + _classCallCheck(this, AtlasBatchManager2); + this.globalOptions = globalOptions; + this.atlasSize = globalOptions.webglTexSize; + this.maxAtlasesPerBatch = globalOptions.webglTexPerBatch; + this.batchAtlases = []; + } + __name(AtlasBatchManager2, "AtlasBatchManager"); + return _createClass(AtlasBatchManager2, [{ + key: "getMaxAtlasesPerBatch", + value: /* @__PURE__ */ __name(function getMaxAtlasesPerBatch() { + return this.maxAtlasesPerBatch; + }, "getMaxAtlasesPerBatch") + }, { + key: "getAtlasSize", + value: /* @__PURE__ */ __name(function getAtlasSize() { + return this.atlasSize; + }, "getAtlasSize") + }, { + key: "getIndexArray", + value: /* @__PURE__ */ __name(function getIndexArray() { + return Array.from({ + length: this.maxAtlasesPerBatch + }, function(v3, i2) { + return i2; + }); + }, "getIndexArray") + }, { + key: "startBatch", + value: /* @__PURE__ */ __name(function startBatch2() { + this.batchAtlases = []; + }, "startBatch") + }, { + key: "getAtlasCount", + value: /* @__PURE__ */ __name(function getAtlasCount() { + return this.batchAtlases.length; + }, "getAtlasCount") + }, { + key: "getAtlases", + value: /* @__PURE__ */ __name(function getAtlases() { + return this.batchAtlases; + }, "getAtlases") + }, { + key: "canAddToCurrentBatch", + value: /* @__PURE__ */ __name(function canAddToCurrentBatch(atlas) { + if (this.batchAtlases.length === this.maxAtlasesPerBatch) { + return this.batchAtlases.includes(atlas); + } + return true; + }, "canAddToCurrentBatch") + }, { + key: "getAtlasIndexForBatch", + value: /* @__PURE__ */ __name(function getAtlasIndexForBatch(atlas) { + var atlasID = this.batchAtlases.indexOf(atlas); + if (atlasID < 0) { + if (this.batchAtlases.length === this.maxAtlasesPerBatch) { + throw new Error("cannot add more atlases to batch"); } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length - }; - this.yytext += match2[0]; - this.match += match2[0]; - this.matches = match2; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; + this.batchAtlases.push(atlas); + atlasID = this.batchAtlases.length - 1; + } + return atlasID; + }, "getAtlasIndexForBatch") + }]); + })(); + circleSD = "\n float circleSD(vec2 p, float r) {\n return distance(vec2(0), p) - r; // signed distance\n }\n"; + rectangleSD = "\n float rectangleSD(vec2 p, vec2 b) {\n vec2 d = abs(p)-b;\n return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0);\n }\n"; + roundRectangleSD = "\n float roundRectangleSD(vec2 p, vec2 b, vec4 cr) {\n cr.xy = (p.x > 0.0) ? cr.xy : cr.zw;\n cr.x = (p.y > 0.0) ? cr.x : cr.y;\n vec2 q = abs(p) - b + cr.x;\n return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x;\n }\n"; + ellipseSD = "\n float ellipseSD(vec2 p, vec2 ab) {\n p = abs( p ); // symmetry\n\n // find root with Newton solver\n vec2 q = ab*(p-ab);\n float w = (q.x1.0) ? d : -d;\n }\n"; + RENDER_TARGET = { + SCREEN: { + name: "screen", + screen: true + }, + PICKING: { + name: "picking", + picking: true + } + }; + TEX_PICKING_MODE = { + // render the texture just like in RENDER_TARGET.SCREEN mode + IGNORE: 1, + // don't render the texture at all + USE_BB: 2 + // render the bounding box as an opaque rectangle + }; + TEXTURE = 0; + EDGE_STRAIGHT = 1; + EDGE_CURVE_SEGMENT = 2; + EDGE_ARROW = 3; + RECTANGLE = 4; + ROUND_RECTANGLE = 5; + BOTTOM_ROUND_RECTANGLE = 6; + ELLIPSE = 7; + ElementDrawingWebGL = /* @__PURE__ */ (function() { + function ElementDrawingWebGL2(r2, gl, opts) { + _classCallCheck(this, ElementDrawingWebGL2); + this.r = r2; + this.gl = gl; + this.maxInstances = opts.webglBatchSize; + this.atlasSize = opts.webglTexSize; + this.bgColor = opts.bgColor; + this.debug = opts.webglDebug; + this.batchDebugInfo = []; + opts.enableWrapping = true; + opts.createTextureCanvas = createTextureCanvas; + this.atlasManager = new AtlasManager(r2, opts); + this.batchManager = new AtlasBatchManager(opts); + this.simpleShapeOptions = /* @__PURE__ */ new Map(); + this.program = this._createShaderProgram(RENDER_TARGET.SCREEN); + this.pickingProgram = this._createShaderProgram(RENDER_TARGET.PICKING); + this.vao = this._createVAO(); + } + __name(ElementDrawingWebGL2, "ElementDrawingWebGL"); + return _createClass(ElementDrawingWebGL2, [{ + key: "addAtlasCollection", + value: /* @__PURE__ */ __name(function addAtlasCollection(collectionName, opts) { + this.atlasManager.addAtlasCollection(collectionName, opts); + }, "addAtlasCollection") + /** + * @typedef { Object } TextureRenderTypeOpts + * @property { string } collection - name of atlas collection to render textures to + * @property { function } getKey - returns the "style key" for an element, may be a single value or an array for multi-line lables + * @property { function } drawElement - uses a canvas renderer to draw the element to the texture atlas + * @property { boolean } drawClipped - if true the context will be clipped to the bounding box before drawElement() is called, may affect performance + * @property { function } getBoundingBox - returns the bounding box for an element + * @property { function } getRotation + * @property { function } getRotationPoint + * @property { function } getRotationOffset + * @property { function } isVisible - an extra check for visibility in addition to ele.visible() + * @property { function } getTexPickingMode - returns a value from the TEX_PICKING_MODE enum + */ + /** + * @param { string } typeName + * @param { TextureRenderTypeOpts } opts + */ + }, { + key: "addTextureAtlasRenderType", + value: /* @__PURE__ */ __name(function addTextureAtlasRenderType(typeName, opts) { + this.atlasManager.addRenderType(typeName, opts); + }, "addTextureAtlasRenderType") + /** + * @typedef { Object } SimpleShapeRenderTypeOpts + * @property { function } getBoundingBox - returns the bounding box for an element + * @property { function } isVisible - this is an extra check for visibility in addition to ele.visible() + * @property { function } isSimple - check if element is a simple shape, or if it needs to fall back to texture rendering + * @property { ShapeVisualProperties } shapeProps + */ + /** + * @typedef { Object } ShapeVisualProperties + * @property { string } shape + * @property { string } color + * @property { string } opacity + * @property { string } padding + * @property { string } radius + * @property { boolean } border + */ + /** + * @param { string } typeName + * @param { SimpleShapeRenderTypeOpts } opts + */ + }, { + key: "addSimpleShapeRenderType", + value: /* @__PURE__ */ __name(function addSimpleShapeRenderType(typeName, opts) { + this.simpleShapeOptions.set(typeName, opts); + }, "addSimpleShapeRenderType") + /** + * Inform the atlasManager when element style keys may have changed. + * The atlasManager can then mark unused textures for "garbage collection". + */ + }, { + key: "invalidate", + value: /* @__PURE__ */ __name(function invalidate(eles) { + var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, type3 = _ref.type; + var atlasManager = this.atlasManager; + if (type3) { + return atlasManager.invalidate(eles, { + filterType: /* @__PURE__ */ __name(function filterType(t4) { + return t4 === type3; + }, "filterType"), + forceRedraw: true + }); + } else { + return atlasManager.invalidate(eles); + } + }, "invalidate") + /** + * Run texture garbage collection. + */ + }, { + key: "gc", + value: /* @__PURE__ */ __name(function gc2() { + this.atlasManager.gc(); + }, "gc") + }, { + key: "_createShaderProgram", + value: /* @__PURE__ */ __name(function _createShaderProgram(renderTarget) { + var gl = this.gl; + var vertexShaderSource = "#version 300 es\n precision highp float;\n\n uniform mat3 uPanZoomMatrix;\n uniform int uAtlasSize;\n \n // instanced\n in vec2 aPosition; // a vertex from the unit square\n \n in mat3 aTransform; // used to transform verticies, eg into a bounding box\n in int aVertType; // the type of thing we are rendering\n\n // the z-index that is output when using picking mode\n in vec4 aIndex;\n \n // For textures\n in int aAtlasId; // which shader unit/atlas to use\n in vec4 aTex; // x/y/w/h of texture in atlas\n\n // for edges\n in vec4 aPointAPointB;\n in vec4 aPointCPointD;\n in vec2 aLineWidth; // also used for node border width\n\n // simple shapes\n in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left]\n in vec4 aColor; // also used for edges\n in vec4 aBorderColor; // aLineWidth is used for border width\n\n // output values passed to the fragment shader\n out vec2 vTexCoord;\n out vec4 vColor;\n out vec2 vPosition;\n // flat values are not interpolated\n flat out int vAtlasId; \n flat out int vVertType;\n flat out vec2 vTopRight;\n flat out vec2 vBotLeft;\n flat out vec4 vCornerRadius;\n flat out vec4 vBorderColor;\n flat out vec2 vBorderWidth;\n flat out vec4 vIndex;\n \n void main(void) {\n int vid = gl_VertexID;\n vec2 position = aPosition; // TODO make this a vec3, simplifies some code below\n\n if(aVertType == ".concat(TEXTURE, ") {\n float texX = aTex.x; // texture coordinates\n float texY = aTex.y;\n float texW = aTex.z;\n float texH = aTex.w;\n\n if(vid == 1 || vid == 2 || vid == 4) {\n texX += texW;\n }\n if(vid == 2 || vid == 4 || vid == 5) {\n texY += texH;\n }\n\n float d = float(uAtlasSize);\n vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(RECTANGLE, " || aVertType == ").concat(ELLIPSE, " \n || aVertType == ").concat(ROUND_RECTANGLE, " || aVertType == ").concat(BOTTOM_ROUND_RECTANGLE, ") { // simple shapes\n\n // the bounding box is needed by the fragment shader\n vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat\n vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat\n vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated\n\n // calculations are done in the fragment shader, just pass these along\n vColor = aColor;\n vCornerRadius = aCornerRadius;\n vBorderColor = aBorderColor;\n vBorderWidth = aLineWidth;\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(EDGE_STRAIGHT, ") {\n vec2 source = aPointAPointB.xy;\n vec2 target = aPointAPointB.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n // stretch the unit square into a long skinny rectangle\n vec2 xBasis = target - source;\n vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x));\n vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y;\n\n gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);\n vColor = aColor;\n } \n else if(aVertType == ").concat(EDGE_CURVE_SEGMENT, ") {\n vec2 pointA = aPointAPointB.xy;\n vec2 pointB = aPointAPointB.zw;\n vec2 pointC = aPointCPointD.xy;\n vec2 pointD = aPointCPointD.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n vec2 p0, p1, p2, pos;\n if(position.x == 0.0) { // The left side of the unit square\n p0 = pointA;\n p1 = pointB;\n p2 = pointC;\n pos = position;\n } else { // The right side of the unit square, use same approach but flip the geometry upside down\n p0 = pointD;\n p1 = pointC;\n p2 = pointB;\n pos = vec2(0.0, -position.y);\n }\n\n vec2 p01 = p1 - p0;\n vec2 p12 = p2 - p1;\n vec2 p21 = p1 - p2;\n\n // Find the normal vector.\n vec2 tangent = normalize(normalize(p12) + normalize(p01));\n vec2 normal = vec2(-tangent.y, tangent.x);\n\n // Find the vector perpendicular to p0 -> p1.\n vec2 p01Norm = normalize(vec2(-p01.y, p01.x));\n\n // Determine the bend direction.\n float sigma = sign(dot(p01 + p21, normal));\n float width = aLineWidth[0];\n\n if(sign(pos.y) == -sigma) {\n // This is an intersecting vertex. Adjust the position so that there's no overlap.\n vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n } else {\n // This is a non-intersecting vertex. Treat it like a mitre join.\n vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n }\n\n vColor = aColor;\n } \n else if(aVertType == ").concat(EDGE_ARROW, " && vid < 3) {\n // massage the first triangle into an edge arrow\n if(vid == 0)\n position = vec2(-0.15, -0.3);\n if(vid == 1)\n position = vec2( 0.0, 0.0);\n if(vid == 2)\n position = vec2( 0.15, -0.3);\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n vColor = aColor;\n }\n else {\n gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space\n }\n\n vAtlasId = aAtlasId;\n vVertType = aVertType;\n vIndex = aIndex;\n }\n "); + var idxs = this.batchManager.getIndexArray(); + var fragmentShaderSource = "#version 300 es\n precision highp float;\n\n // declare texture unit for each texture atlas in the batch\n ".concat(idxs.map(function(i3) { + return "uniform sampler2D uTexture".concat(i3, ";"); + }).join("\n "), "\n\n uniform vec4 uBGColor;\n uniform float uZoom;\n\n in vec2 vTexCoord;\n in vec4 vColor;\n in vec2 vPosition; // model coordinates\n\n flat in int vAtlasId;\n flat in vec4 vIndex;\n flat in int vVertType;\n flat in vec2 vTopRight;\n flat in vec2 vBotLeft;\n flat in vec4 vCornerRadius;\n flat in vec4 vBorderColor;\n flat in vec2 vBorderWidth;\n\n out vec4 outColor;\n\n ").concat(circleSD, "\n ").concat(rectangleSD, "\n ").concat(roundRectangleSD, "\n ").concat(ellipseSD, "\n\n vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha\n return vec4( \n top.rgb + (bot.rgb * (1.0 - top.a)),\n top.a + (bot.a * (1.0 - top.a)) \n );\n }\n\n vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance\n // scale to the zoom level so that borders don't look blurry when zoomed in\n // note 1.5 is an aribitrary value chosen because it looks good\n return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); \n }\n\n void main(void) {\n if(vVertType == ").concat(TEXTURE, ") {\n // look up the texel from the texture unit\n ").concat(idxs.map(function(i3) { + return "if(vAtlasId == ".concat(i3, ") outColor = texture(uTexture").concat(i3, ", vTexCoord);"); + }).join("\n else "), "\n } \n else if(vVertType == ").concat(EDGE_ARROW, ") {\n // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out';\n outColor = blend(vColor, uBGColor);\n outColor.a = 1.0; // make opaque, masks out line under arrow\n }\n else if(vVertType == ").concat(RECTANGLE, " && vBorderWidth == vec2(0.0)) { // simple rectangle with no border\n outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done\n }\n else if(vVertType == ").concat(RECTANGLE, " || vVertType == ").concat(ELLIPSE, " \n || vVertType == ").concat(ROUND_RECTANGLE, " || vVertType == ").concat(BOTTOM_ROUND_RECTANGLE, ") { // use SDF\n\n float outerBorder = vBorderWidth[0];\n float innerBorder = vBorderWidth[1];\n float borderPadding = outerBorder * 2.0;\n float w = vTopRight.x - vBotLeft.x - borderPadding;\n float h = vTopRight.y - vBotLeft.y - borderPadding;\n vec2 b = vec2(w/2.0, h/2.0); // half width, half height\n vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center\n\n float d; // signed distance\n if(vVertType == ").concat(RECTANGLE, ") {\n d = rectangleSD(p, b);\n } else if(vVertType == ").concat(ELLIPSE, " && w == h) {\n d = circleSD(p, b.x); // faster than ellipse\n } else if(vVertType == ").concat(ELLIPSE, ") {\n d = ellipseSD(p, b);\n } else {\n d = roundRectangleSD(p, b, vCornerRadius.wzyx);\n }\n\n // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling\n // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box\n if(d > 0.0) {\n if(d > outerBorder) {\n discard;\n } else {\n outColor = distInterp(vBorderColor, vec4(0), d - outerBorder);\n }\n } else {\n if(d > innerBorder) {\n vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor;\n vec4 innerBorderColor = blend(vBorderColor, vColor);\n outColor = distInterp(innerBorderColor, outerColor, d);\n } \n else {\n vec4 outerColor;\n if(innerBorder == 0.0 && outerBorder == 0.0) {\n outerColor = vec4(0);\n } else if(innerBorder == 0.0) {\n outerColor = vBorderColor;\n } else {\n outerColor = blend(vBorderColor, vColor);\n }\n outColor = distInterp(vColor, outerColor, d - innerBorder);\n }\n }\n }\n else {\n outColor = vColor;\n }\n\n ").concat(renderTarget.picking ? "if(outColor.a == 0.0) discard;\n else outColor = vIndex;" : "", "\n }\n "); + var program = createProgram(gl, vertexShaderSource, fragmentShaderSource); + program.aPosition = gl.getAttribLocation(program, "aPosition"); + program.aIndex = gl.getAttribLocation(program, "aIndex"); + program.aVertType = gl.getAttribLocation(program, "aVertType"); + program.aTransform = gl.getAttribLocation(program, "aTransform"); + program.aAtlasId = gl.getAttribLocation(program, "aAtlasId"); + program.aTex = gl.getAttribLocation(program, "aTex"); + program.aPointAPointB = gl.getAttribLocation(program, "aPointAPointB"); + program.aPointCPointD = gl.getAttribLocation(program, "aPointCPointD"); + program.aLineWidth = gl.getAttribLocation(program, "aLineWidth"); + program.aColor = gl.getAttribLocation(program, "aColor"); + program.aCornerRadius = gl.getAttribLocation(program, "aCornerRadius"); + program.aBorderColor = gl.getAttribLocation(program, "aBorderColor"); + program.uPanZoomMatrix = gl.getUniformLocation(program, "uPanZoomMatrix"); + program.uAtlasSize = gl.getUniformLocation(program, "uAtlasSize"); + program.uBGColor = gl.getUniformLocation(program, "uBGColor"); + program.uZoom = gl.getUniformLocation(program, "uZoom"); + program.uTextures = []; + for (var i2 = 0; i2 < this.batchManager.getMaxAtlasesPerBatch(); i2++) { + program.uTextures.push(gl.getUniformLocation(program, "uTexture".concat(i2))); + } + return program; + }, "_createShaderProgram") + }, { + key: "_createVAO", + value: /* @__PURE__ */ __name(function _createVAO() { + var unitSquare = [0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1]; + this.vertexCount = unitSquare.length / 2; + var n2 = this.maxInstances; + var gl = this.gl, program = this.program; + var vao = gl.createVertexArray(); + gl.bindVertexArray(vao); + createBufferStaticDraw(gl, "vec2", program.aPosition, unitSquare); + this.transformBuffer = create3x3MatrixBufferDynamicDraw(gl, n2, program.aTransform); + this.indexBuffer = createBufferDynamicDraw(gl, n2, "vec4", program.aIndex); + this.vertTypeBuffer = createBufferDynamicDraw(gl, n2, "int", program.aVertType); + this.atlasIdBuffer = createBufferDynamicDraw(gl, n2, "int", program.aAtlasId); + this.texBuffer = createBufferDynamicDraw(gl, n2, "vec4", program.aTex); + this.pointAPointBBuffer = createBufferDynamicDraw(gl, n2, "vec4", program.aPointAPointB); + this.pointCPointDBuffer = createBufferDynamicDraw(gl, n2, "vec4", program.aPointCPointD); + this.lineWidthBuffer = createBufferDynamicDraw(gl, n2, "vec2", program.aLineWidth); + this.colorBuffer = createBufferDynamicDraw(gl, n2, "vec4", program.aColor); + this.cornerRadiusBuffer = createBufferDynamicDraw(gl, n2, "vec4", program.aCornerRadius); + this.borderColorBuffer = createBufferDynamicDraw(gl, n2, "vec4", program.aBorderColor); + gl.bindVertexArray(null); + return vao; + }, "_createVAO") + }, { + key: "buffers", + get: /* @__PURE__ */ __name(function get5() { + var _this = this; + if (!this._buffers) { + this._buffers = Object.keys(this).filter(function(k2) { + return endsWith(k2, "Buffer"); + }).map(function(k2) { + return _this[k2]; + }); + } + return this._buffers; + }, "get") + }, { + key: "startFrame", + value: /* @__PURE__ */ __name(function startFrame(panZoomMatrix) { + var renderTarget = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : RENDER_TARGET.SCREEN; + this.panZoomMatrix = panZoomMatrix; + this.renderTarget = renderTarget; + this.batchDebugInfo = []; + this.wrappedCount = 0; + this.simpleCount = 0; + this.startBatch(); + }, "startFrame") + }, { + key: "startBatch", + value: /* @__PURE__ */ __name(function startBatch2() { + this.instanceCount = 0; + this.batchManager.startBatch(); + }, "startBatch") + }, { + key: "endFrame", + value: /* @__PURE__ */ __name(function endFrame() { + this.endBatch(); + }, "endFrame") + }, { + key: "_isVisible", + value: /* @__PURE__ */ __name(function _isVisible(ele, opts) { + if (ele.visible()) { + if (opts && opts.isVisible) { + return opts.isVisible(ele); } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match2[0].length); - this.matched += match2[0]; - token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; + return true; + } + return false; + }, "_isVisible") + /** + * Draws a texture using the texture atlas. + */ + }, { + key: "drawTexture", + value: /* @__PURE__ */ __name(function drawTexture(ele, eleIndex, type3) { + var atlasManager = this.atlasManager, batchManager = this.batchManager; + var opts = atlasManager.getRenderTypeOpts(type3); + if (!this._isVisible(ele, opts)) { + return; + } + if (ele.isEdge() && !this._isValidEdge(ele)) { + return; + } + if (this.renderTarget.picking && opts.getTexPickingMode) { + var mode = opts.getTexPickingMode(ele); + if (mode === TEX_PICKING_MODE.IGNORE) { + return; + } else if (mode == TEX_PICKING_MODE.USE_BB) { + this.drawPickingRectangle(ele, eleIndex, type3); + return; } - if (token2) { - return token2; - } else if (this._backtrack) { - for (var k2 in backup) { - this[k2] = backup[k2]; + } + var atlasInfoArray = atlasManager.getAtlasInfo(ele, type3); + var _iterator = _createForOfIteratorHelper(atlasInfoArray), _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done; ) { + var atlasInfo = _step.value; + var atlas = atlasInfo.atlas, tex1 = atlasInfo.tex1, tex2 = atlasInfo.tex2; + if (!batchManager.canAddToCurrentBatch(atlas)) { + this.endBatch(); } - return false; - } - return false; - }, "test_match"), - // return next match in input - next: /* @__PURE__ */ __name(function() { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; - } - var token2, match2, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; - } - var rules = this._currentRules(); - for (var i2 = 0; i2 < rules.length; i2++) { - tempMatch = this._input.match(this.rules[rules[i2]]); - if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { - match2 = tempMatch; - index = i2; - if (this.options.backtrack_lexer) { - token2 = this.test_match(tempMatch, rules[i2]); - if (token2 !== false) { - return token2; - } else if (this._backtrack) { - match2 = false; - continue; - } else { - return false; + var atlasIndex = batchManager.getAtlasIndexForBatch(atlas); + for (var _i = 0, _arr = [[tex1, true], [tex2, false]]; _i < _arr.length; _i++) { + var _arr$_i = _slicedToArray(_arr[_i], 2), tex = _arr$_i[0], first3 = _arr$_i[1]; + if (tex.w != 0) { + var instance2 = this.instanceCount; + this.vertTypeBuffer.getView(instance2)[0] = TEXTURE; + var indexView = this.indexBuffer.getView(instance2); + indexToVec4(eleIndex, indexView); + var atlasIdView = this.atlasIdBuffer.getView(instance2); + atlasIdView[0] = atlasIndex; + var texView = this.texBuffer.getView(instance2); + texView[0] = tex.x; + texView[1] = tex.y; + texView[2] = tex.w; + texView[3] = tex.h; + var matrixView = this.transformBuffer.getMatrixView(instance2); + this.setTransformMatrix(ele, matrixView, opts, atlasInfo, first3); + this.instanceCount++; + if (!first3) this.wrappedCount++; + if (this.instanceCount >= this.maxInstances) { + this.endBatch(); } - } else if (!this.options.flex) { - break; } } } - if (match2) { - token2 = this.test_match(match2, rules[index]); - if (token2 !== false) { - return token2; - } - return false; + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + }, "drawTexture") + /** + * matrix is expected to be a 9 element array + * this function follows same pattern as CRp.drawCachedElementPortion(...) + */ + }, { + key: "setTransformMatrix", + value: /* @__PURE__ */ __name(function setTransformMatrix(ele, matrix, opts, atlasInfo) { + var first3 = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true; + var padding2 = 0; + if (opts.shapeProps && opts.shapeProps.padding) { + padding2 = ele.pstyle(opts.shapeProps.padding).pfValue; + } + if (atlasInfo) { + var bb = atlasInfo.bb, tex1 = atlasInfo.tex1, tex2 = atlasInfo.tex2; + var ratio = tex1.w / (tex1.w + tex2.w); + if (!first3) { + ratio = 1 - ratio; + } + var adjBB = this._getAdjustedBB(bb, padding2, first3, ratio); + this._applyTransformMatrix(matrix, adjBB, opts, ele); + } else { + var _bb = opts.getBoundingBox(ele); + var _adjBB = this._getAdjustedBB(_bb, padding2, true, 1); + this._applyTransformMatrix(matrix, _adjBB, opts, ele); + } + }, "setTransformMatrix") + }, { + key: "_applyTransformMatrix", + value: /* @__PURE__ */ __name(function _applyTransformMatrix(matrix, adjBB, opts, ele) { + var x5, y6; + identity6(matrix); + var theta = opts.getRotation ? opts.getRotation(ele) : 0; + if (theta !== 0) { + var _opts$getRotationPoin = opts.getRotationPoint(ele), sx = _opts$getRotationPoin.x, sy = _opts$getRotationPoin.y; + translate(matrix, matrix, [sx, sy]); + rotate(matrix, matrix, theta); + var offset = opts.getRotationOffset(ele); + x5 = offset.x + (adjBB.xOffset || 0); + y6 = offset.y + (adjBB.yOffset || 0); + } else { + x5 = adjBB.x1; + y6 = adjBB.y1; + } + translate(matrix, matrix, [x5, y6]); + scale(matrix, matrix, [adjBB.w, adjBB.h]); + }, "_applyTransformMatrix") + /** + * Adjusts a node or label BB to accomodate padding and split for wrapped textures. + * @param bb - the original bounding box + * @param padding - the padding to add to the bounding box + * @param first - whether this is the first part of a wrapped texture + * @param ratio - the ratio of the texture width of part of the text to the entire texture + */ + }, { + key: "_getAdjustedBB", + value: /* @__PURE__ */ __name(function _getAdjustedBB(bb, padding2, first3, ratio) { + var x1 = bb.x1, y1 = bb.y1, w4 = bb.w, h3 = bb.h, yOffset = bb.yOffset; + if (padding2) { + x1 -= padding2; + y1 -= padding2; + w4 += 2 * padding2; + h3 += 2 * padding2; + } + var xOffset = 0; + var adjW = w4 * ratio; + if (first3 && ratio < 1) { + w4 = adjW; + } else if (!first3 && ratio < 1) { + xOffset = w4 - adjW; + x1 += xOffset; + w4 = adjW; + } + return { + x1, + y1, + w: w4, + h: h3, + xOffset, + yOffset + }; + }, "_getAdjustedBB") + /** + * Draw a solid opaque rectangle matching the element's Bounding Box. + * Used by the PICKING mode to make the entire BB of a label clickable. + */ + }, { + key: "drawPickingRectangle", + value: /* @__PURE__ */ __name(function drawPickingRectangle(ele, eleIndex, type3) { + var opts = this.atlasManager.getRenderTypeOpts(type3); + var instance2 = this.instanceCount; + this.vertTypeBuffer.getView(instance2)[0] = RECTANGLE; + var indexView = this.indexBuffer.getView(instance2); + indexToVec4(eleIndex, indexView); + var colorView = this.colorBuffer.getView(instance2); + toWebGLColor([0, 0, 0], 1, colorView); + var matrixView = this.transformBuffer.getMatrixView(instance2); + this.setTransformMatrix(ele, matrixView, opts); + this.simpleCount++; + this.instanceCount++; + if (this.instanceCount >= this.maxInstances) { + this.endBatch(); + } + }, "drawPickingRectangle") + /** + * Draw a node using either a texture or a "simple shape". + */ + }, { + key: "drawNode", + value: /* @__PURE__ */ __name(function drawNode2(node2, eleIndex, type3) { + var opts = this.simpleShapeOptions.get(type3); + if (!this._isVisible(node2, opts)) { + return; + } + var props = opts.shapeProps; + var vertType = this._getVertTypeForShape(node2, props.shape); + if (vertType === void 0 || opts.isSimple && !opts.isSimple(node2)) { + this.drawTexture(node2, eleIndex, type3); + return; + } + var instance2 = this.instanceCount; + this.vertTypeBuffer.getView(instance2)[0] = vertType; + if (vertType === ROUND_RECTANGLE || vertType === BOTTOM_ROUND_RECTANGLE) { + var bb = opts.getBoundingBox(node2); + var radius2 = this._getCornerRadius(node2, props.radius, bb); + var radiusView = this.cornerRadiusBuffer.getView(instance2); + radiusView[0] = radius2; + radiusView[1] = radius2; + radiusView[2] = radius2; + radiusView[3] = radius2; + if (vertType === BOTTOM_ROUND_RECTANGLE) { + radiusView[0] = 0; + radiusView[2] = 0; } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); + } + var indexView = this.indexBuffer.getView(instance2); + indexToVec4(eleIndex, indexView); + var color2 = node2.pstyle(props.color).value; + var opacity = node2.pstyle(props.opacity).value; + var colorView = this.colorBuffer.getView(instance2); + toWebGLColor(color2, opacity, colorView); + var lineWidthView = this.lineWidthBuffer.getView(instance2); + lineWidthView[0] = 0; + lineWidthView[1] = 0; + if (props.border) { + var borderWidth = node2.pstyle("border-width").value; + if (borderWidth > 0) { + var borderColor = node2.pstyle("border-color").value; + var borderOpacity = node2.pstyle("border-opacity").value; + var borderColorView = this.borderColorBuffer.getView(instance2); + toWebGLColor(borderColor, borderOpacity, borderColorView); + var borderPos = node2.pstyle("border-position").value; + if (borderPos === "inside") { + lineWidthView[0] = 0; + lineWidthView[1] = -borderWidth; + } else if (borderPos === "outside") { + lineWidthView[0] = borderWidth; + lineWidthView[1] = 0; + } else { + var halfWidth = borderWidth / 2; + lineWidthView[0] = halfWidth; + lineWidthView[1] = -halfWidth; + } } - }, "next"), - // return next match that has a token - lex: /* @__PURE__ */ __name(function lex() { - var r2 = this.next(); - if (r2) { - return r2; - } else { - return this.lex(); + } + var matrixView = this.transformBuffer.getMatrixView(instance2); + this.setTransformMatrix(node2, matrixView, opts); + this.simpleCount++; + this.instanceCount++; + if (this.instanceCount >= this.maxInstances) { + this.endBatch(); + } + }, "drawNode") + }, { + key: "_getVertTypeForShape", + value: /* @__PURE__ */ __name(function _getVertTypeForShape(node2, shapeProp) { + var shape = node2.pstyle(shapeProp).value; + switch (shape) { + case "rectangle": + return RECTANGLE; + case "ellipse": + return ELLIPSE; + case "roundrectangle": + case "round-rectangle": + return ROUND_RECTANGLE; + case "bottom-round-rectangle": + return BOTTOM_ROUND_RECTANGLE; + default: + return void 0; + } + }, "_getVertTypeForShape") + }, { + key: "_getCornerRadius", + value: /* @__PURE__ */ __name(function _getCornerRadius(node2, radiusProp, _ref2) { + var w4 = _ref2.w, h3 = _ref2.h; + if (node2.pstyle(radiusProp).value === "auto") { + return getRoundRectangleRadius(w4, h3); + } else { + var radius2 = node2.pstyle(radiusProp).pfValue; + var halfWidth = w4 / 2; + var halfHeight = h3 / 2; + return Math.min(radius2, halfHeight, halfWidth); + } + }, "_getCornerRadius") + /** + * Only supports drawing triangles at the moment. + */ + }, { + key: "drawEdgeArrow", + value: /* @__PURE__ */ __name(function drawEdgeArrow(edge, eleIndex, prefix) { + if (!edge.visible()) { + return; + } + var rs = edge._private.rscratch; + var x5, y6, angle2; + if (prefix === "source") { + x5 = rs.arrowStartX; + y6 = rs.arrowStartY; + angle2 = rs.srcArrowAngle; + } else { + x5 = rs.arrowEndX; + y6 = rs.arrowEndY; + angle2 = rs.tgtArrowAngle; + } + if (isNaN(x5) || x5 == null || isNaN(y6) || y6 == null || isNaN(angle2) || angle2 == null) { + return; + } + var arrowShape = edge.pstyle(prefix + "-arrow-shape").value; + if (arrowShape === "none") { + return; + } + var color2 = edge.pstyle(prefix + "-arrow-color").value; + var baseOpacity = edge.pstyle("opacity").value; + var lineOpacity = edge.pstyle("line-opacity").value; + var opacity = baseOpacity * lineOpacity; + var lineWidth = edge.pstyle("width").pfValue; + var scale$1 = edge.pstyle("arrow-scale").value; + var size4 = this.r.getArrowWidth(lineWidth, scale$1); + var instance2 = this.instanceCount; + var transform8 = this.transformBuffer.getMatrixView(instance2); + identity6(transform8); + translate(transform8, transform8, [x5, y6]); + scale(transform8, transform8, [size4, size4]); + rotate(transform8, transform8, angle2); + this.vertTypeBuffer.getView(instance2)[0] = EDGE_ARROW; + var indexView = this.indexBuffer.getView(instance2); + indexToVec4(eleIndex, indexView); + var colorView = this.colorBuffer.getView(instance2); + toWebGLColor(color2, opacity, colorView); + this.instanceCount++; + if (this.instanceCount >= this.maxInstances) { + this.endBatch(); + } + }, "drawEdgeArrow") + /** + * Draw straight-line or bezier curve edges. + */ + }, { + key: "drawEdgeLine", + value: /* @__PURE__ */ __name(function drawEdgeLine(edge, eleIndex) { + if (!edge.visible()) { + return; + } + var points = this._getEdgePoints(edge); + if (!points) { + return; + } + var baseOpacity = edge.pstyle("opacity").value; + var lineOpacity = edge.pstyle("line-opacity").value; + var width3 = edge.pstyle("width").pfValue; + var color2 = edge.pstyle("line-color").value; + var opacity = baseOpacity * lineOpacity; + if (points.length / 2 + this.instanceCount > this.maxInstances) { + this.endBatch(); + } + if (points.length == 4) { + var instance2 = this.instanceCount; + this.vertTypeBuffer.getView(instance2)[0] = EDGE_STRAIGHT; + var indexView = this.indexBuffer.getView(instance2); + indexToVec4(eleIndex, indexView); + var colorView = this.colorBuffer.getView(instance2); + toWebGLColor(color2, opacity, colorView); + var lineWidthBuffer = this.lineWidthBuffer.getView(instance2); + lineWidthBuffer[0] = width3; + var sourceTargetView = this.pointAPointBBuffer.getView(instance2); + sourceTargetView[0] = points[0]; + sourceTargetView[1] = points[1]; + sourceTargetView[2] = points[2]; + sourceTargetView[3] = points[3]; + this.instanceCount++; + if (this.instanceCount >= this.maxInstances) { + this.endBatch(); } - }, "lex"), - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: /* @__PURE__ */ __name(function begin(condition) { - this.conditionStack.push(condition); - }, "begin"), - // pop the previously active lexer condition state off the condition stack - popState: /* @__PURE__ */ __name(function popState() { - var n2 = this.conditionStack.length - 1; - if (n2 > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; + } else { + for (var i2 = 0; i2 < points.length - 2; i2 += 2) { + var _instance = this.instanceCount; + this.vertTypeBuffer.getView(_instance)[0] = EDGE_CURVE_SEGMENT; + var _indexView = this.indexBuffer.getView(_instance); + indexToVec4(eleIndex, _indexView); + var _colorView = this.colorBuffer.getView(_instance); + toWebGLColor(color2, opacity, _colorView); + var _lineWidthBuffer = this.lineWidthBuffer.getView(_instance); + _lineWidthBuffer[0] = width3; + var pAx = points[i2 - 2], pAy = points[i2 - 1]; + var pBx = points[i2], pBy = points[i2 + 1]; + var pCx = points[i2 + 2], pCy = points[i2 + 3]; + var pDx = points[i2 + 4], pDy = points[i2 + 5]; + if (i2 == 0) { + pAx = 2 * pBx - pCx + 1e-3; + pAy = 2 * pBy - pCy + 1e-3; + } + if (i2 == points.length - 4) { + pDx = 2 * pCx - pBx + 1e-3; + pDy = 2 * pCy - pBy + 1e-3; + } + var pointABView = this.pointAPointBBuffer.getView(_instance); + pointABView[0] = pAx; + pointABView[1] = pAy; + pointABView[2] = pBx; + pointABView[3] = pBy; + var pointCDView = this.pointCPointDBuffer.getView(_instance); + pointCDView[0] = pCx; + pointCDView[1] = pCy; + pointCDView[2] = pDx; + pointCDView[3] = pDy; + this.instanceCount++; + if (this.instanceCount >= this.maxInstances) { + this.endBatch(); + } } - }, "popState"), - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: /* @__PURE__ */ __name(function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } + }, "drawEdgeLine") + }, { + key: "_isValidEdge", + value: /* @__PURE__ */ __name(function _isValidEdge(edge) { + var rs = edge._private.rscratch; + if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) { + return false; + } + return true; + }, "_isValidEdge") + }, { + key: "_getEdgePoints", + value: /* @__PURE__ */ __name(function _getEdgePoints(edge) { + var rs = edge._private.rscratch; + if (!this._isValidEdge(edge)) { + return; + } + var controlPoints4 = rs.allpts; + if (controlPoints4.length == 4) { + return controlPoints4; + } + var numSegments = this._getNumSegments(edge); + return this._getCurveSegmentPoints(controlPoints4, numSegments); + }, "_getEdgePoints") + }, { + key: "_getNumSegments", + value: /* @__PURE__ */ __name(function _getNumSegments(edge) { + var numSegments = 15; + return Math.min(Math.max(numSegments, 5), this.maxInstances); + }, "_getNumSegments") + }, { + key: "_getCurveSegmentPoints", + value: /* @__PURE__ */ __name(function _getCurveSegmentPoints(controlPoints4, segments) { + if (controlPoints4.length == 4) { + return controlPoints4; + } + var curvePoints = Array((segments + 1) * 2); + for (var i2 = 0; i2 <= segments; i2++) { + if (i2 == 0) { + curvePoints[0] = controlPoints4[0]; + curvePoints[1] = controlPoints4[1]; + } else if (i2 == segments) { + curvePoints[i2 * 2] = controlPoints4[controlPoints4.length - 2]; + curvePoints[i2 * 2 + 1] = controlPoints4[controlPoints4.length - 1]; } else { - return this.conditions["INITIAL"].rules; + var t4 = i2 / segments; + this._setCurvePoint(controlPoints4, t4, curvePoints, i2 * 2); } - }, "_currentRules"), - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: /* @__PURE__ */ __name(function topState(n2) { - n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); - if (n2 >= 0) { - return this.conditionStack[n2]; - } else { - return "INITIAL"; + } + return curvePoints; + }, "_getCurveSegmentPoints") + }, { + key: "_setCurvePoint", + value: /* @__PURE__ */ __name(function _setCurvePoint(points, t4, curvePoints, cpi) { + if (points.length <= 2) { + curvePoints[cpi] = points[0]; + curvePoints[cpi + 1] = points[1]; + } else { + var newpoints = Array(points.length - 2); + for (var i2 = 0; i2 < newpoints.length; i2 += 2) { + var x5 = (1 - t4) * points[i2] + t4 * points[i2 + 2]; + var y6 = (1 - t4) * points[i2 + 1] + t4 * points[i2 + 3]; + newpoints[i2] = x5; + newpoints[i2 + 1] = y6; } - }, "topState"), - // alias for begin(condition) - pushState: /* @__PURE__ */ __name(function pushState(condition) { - this.begin(condition); - }, "pushState"), - // return the number of states currently on the stack - stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { - return this.conditionStack.length; - }, "stateStackSize"), - options: { "case-insensitive": true }, - performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - break; - case 1: - break; - case 2: - this.popState(); - return 34; - break; - case 3: - this.popState(); - return 34; - break; - case 4: - return 34; - break; - case 5: - break; - case 6: - return 10; - break; - case 7: - this.pushState("acc_title"); - return 19; - break; - case 8: - this.popState(); - return "acc_title_value"; - break; - case 9: - this.pushState("acc_descr"); - return 21; - break; - case 10: - this.popState(); - return "acc_descr_value"; - break; - case 11: - this.pushState("acc_descr_multiline"); - break; - case 12: - this.popState(); - break; - case 13: - return "acc_descr_multiline_value"; - break; - case 14: - return 5; - break; - case 15: - return 8; - break; - case 16: - this.pushState("axis_data"); - return "X_AXIS"; - break; - case 17: - this.pushState("axis_data"); - return "Y_AXIS"; - break; - case 18: - this.pushState("axis_band_data"); - return 24; - break; - case 19: - return 31; - break; - case 20: - this.pushState("data"); - return 16; - break; - case 21: - this.pushState("data"); - return 18; - break; - case 22: - this.pushState("data_inner"); - return 24; - break; - case 23: - return 27; - break; - case 24: - this.popState(); - return 26; - break; - case 25: - this.popState(); - break; - case 26: - this.pushState("string"); - break; - case 27: - this.popState(); - break; - case 28: - return "STR"; - break; - case 29: - return 24; - break; - case 30: - return 26; - break; - case 31: - return 43; - break; - case 32: - return "COLON"; - break; - case 33: - return 44; - break; - case 34: - return 28; - break; - case 35: - return 45; - break; - case 36: - return 46; - break; - case 37: - return 48; - break; - case 38: - return 50; - break; - case 39: - return 47; - break; - case 40: - return 41; - break; - case 41: - return 49; - break; - case 42: - return 42; - break; - case 43: - break; - case 44: - return 35; - break; - case 45: - return 36; - break; + return this._setCurvePoint(newpoints, t4, curvePoints, cpi); + } + }, "_setCurvePoint") + }, { + key: "endBatch", + value: /* @__PURE__ */ __name(function endBatch2() { + var gl = this.gl, vao = this.vao, vertexCount = this.vertexCount, count2 = this.instanceCount; + if (count2 === 0) return; + var program = this.renderTarget.picking ? this.pickingProgram : this.program; + gl.useProgram(program); + gl.bindVertexArray(vao); + var _iterator2 = _createForOfIteratorHelper(this.buffers), _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { + var buffer = _step2.value; + buffer.bufferSubData(count2); } - }, "anonymous"), - rules: [/^(?:%%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:(\r?\n))/i, /^(?:(\r?\n))/i, /^(?:[\n\r]+)/i, /^(?:%%[^\n]*)/i, /^(?:title\b)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:\{)/i, /^(?:[^\}]*)/i, /^(?:xychart-beta\b)/i, /^(?:(?:vertical|horizontal))/i, /^(?:x-axis\b)/i, /^(?:y-axis\b)/i, /^(?:\[)/i, /^(?:-->)/i, /^(?:line\b)/i, /^(?:bar\b)/i, /^(?:\[)/i, /^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i, /^(?:\])/i, /^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:\[)/i, /^(?:\])/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:\*)/i, /^(?:#)/i, /^(?:[\_])/i, /^(?:\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\s+)/i, /^(?:;)/i, /^(?:$)/i], - conditions: { "data_inner": { "rules": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], "inclusive": true }, "data": { "rules": [0, 1, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], "inclusive": true }, "axis_band_data": { "rules": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], "inclusive": true }, "axis_data": { "rules": [0, 1, 2, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], "inclusive": true }, "acc_descr_multiline": { "rules": [12, 13], "inclusive": false }, "acc_descr": { "rules": [10], "inclusive": false }, "acc_title": { "rules": [8], "inclusive": false }, "title": { "rules": [], "inclusive": false }, "md_string": { "rules": [], "inclusive": false }, "string": { "rules": [27, 28], "inclusive": false }, "INITIAL": { "rules": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], "inclusive": true } } - }; - return lexer3; - }(); - parser24.lexer = lexer2; - function Parser3() { - this.yy = {}; - } - __name(Parser3, "Parser"); - Parser3.prototype = parser24; - parser24.Parser = Parser3; - return new Parser3(); - }(); - parser10.parser = parser10; - xychart_default = parser10; - } - }); - - // src/diagrams/xychart/chartBuilder/interfaces.ts - function isBarPlot(data6) { - return data6.type === "bar"; - } - function isBandAxisData(data6) { - return data6.type === "band"; - } - function isLinearAxisData(data6) { - return data6.type === "linear"; - } - var init_interfaces = __esm({ - "src/diagrams/xychart/chartBuilder/interfaces.ts"() { - "use strict"; - __name(isBarPlot, "isBarPlot"); - __name(isBandAxisData, "isBandAxisData"); - __name(isLinearAxisData, "isLinearAxisData"); - } - }); - - // src/diagrams/xychart/chartBuilder/textDimensionCalculator.ts - var TextDimensionCalculatorWithFont; - var init_textDimensionCalculator = __esm({ - "src/diagrams/xychart/chartBuilder/textDimensionCalculator.ts"() { - "use strict"; - init_createText(); - TextDimensionCalculatorWithFont = class { - constructor(parentGroup) { - this.parentGroup = parentGroup; - } - static { - __name(this, "TextDimensionCalculatorWithFont"); - } - getMaxDimension(texts, fontSize) { - if (!this.parentGroup) { + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + var atlases = this.batchManager.getAtlases(); + for (var i2 = 0; i2 < atlases.length; i2++) { + atlases[i2].bufferIfNeeded(gl); + } + for (var _i2 = 0; _i2 < atlases.length; _i2++) { + gl.activeTexture(gl.TEXTURE0 + _i2); + gl.bindTexture(gl.TEXTURE_2D, atlases[_i2].texture); + gl.uniform1i(program.uTextures[_i2], _i2); + } + gl.uniform1f(program.uZoom, getEffectiveZoom(this.r)); + gl.uniformMatrix3fv(program.uPanZoomMatrix, false, this.panZoomMatrix); + gl.uniform1i(program.uAtlasSize, this.batchManager.getAtlasSize()); + var webglBgColor = toWebGLColor(this.bgColor, 1); + gl.uniform4fv(program.uBGColor, webglBgColor); + gl.drawArraysInstanced(gl.TRIANGLES, 0, vertexCount, count2); + gl.bindVertexArray(null); + gl.bindTexture(gl.TEXTURE_2D, null); + if (this.debug) { + this.batchDebugInfo.push({ + count: count2, + // instance count + atlasCount: atlases.length + }); + } + this.startBatch(); + }, "endBatch") + }, { + key: "getDebugInfo", + value: /* @__PURE__ */ __name(function getDebugInfo() { + var atlasInfo = this.atlasManager.getDebugInfo(); + var totalAtlases = atlasInfo.reduce(function(count2, info2) { + return count2 + info2.atlasCount; + }, 0); + var batchInfo = this.batchDebugInfo; + var totalInstances = batchInfo.reduce(function(count2, info2) { + return count2 + info2.count; + }, 0); return { - width: texts.reduce((acc, cur) => Math.max(cur.length, acc), 0) * fontSize, - height: fontSize + atlasInfo, + totalAtlases, + wrappedCount: this.wrappedCount, + simpleCount: this.simpleCount, + batchCount: batchInfo.length, + batchInfo, + totalInstances }; - } - const dimension = { - width: 0, - height: 0 + }, "getDebugInfo") + }]); + })(); + CRp$4 = {}; + CRp$4.initWebgl = function(opts, fns) { + var r2 = this; + var gl = r2.data.contexts[r2.WEBGL]; + opts.bgColor = getBGColor(r2); + opts.webglTexSize = Math.min(opts.webglTexSize, gl.getParameter(gl.MAX_TEXTURE_SIZE)); + opts.webglTexRows = Math.min(opts.webglTexRows, 54); + opts.webglTexRowsNodes = Math.min(opts.webglTexRowsNodes, 54); + opts.webglBatchSize = Math.min(opts.webglBatchSize, 16384); + opts.webglTexPerBatch = Math.min(opts.webglTexPerBatch, gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)); + r2.webglDebug = opts.webglDebug; + r2.webglDebugShowAtlases = opts.webglDebugShowAtlases; + r2.pickingFrameBuffer = createPickingFrameBuffer(gl); + r2.pickingFrameBuffer.needsDraw = true; + r2.drawing = new ElementDrawingWebGL(r2, gl, opts); + var getLabelRotation3 = /* @__PURE__ */ __name(function getLabelRotation4(prop) { + return function(ele) { + return r2.getTextAngle(ele, prop); }; - const elem = this.parentGroup.append("g").attr("visibility", "hidden").attr("font-size", fontSize); - for (const t4 of texts) { - const bbox = computeDimensionOfText(elem, 1, t4); - const width3 = bbox ? bbox.width : t4.length * fontSize; - const height2 = bbox ? bbox.height : fontSize; - dimension.width = Math.max(dimension.width, width3); - dimension.height = Math.max(dimension.height, height2); + }, "getLabelRotation"); + var isLabelVisible = /* @__PURE__ */ __name(function isLabelVisible2(prop) { + return function(ele) { + var label = ele.pstyle(prop); + return label && label.value; + }; + }, "isLabelVisible"); + var isLayerVisible = /* @__PURE__ */ __name(function isLayerVisible2(prefix) { + return function(node2) { + return node2.pstyle("".concat(prefix, "-opacity")).value > 0; + }; + }, "isLayerVisible"); + var getTexPickingMode = /* @__PURE__ */ __name(function getTexPickingMode2(ele) { + var enabled = ele.pstyle("text-events").strValue === "yes"; + return enabled ? TEX_PICKING_MODE.USE_BB : TEX_PICKING_MODE.IGNORE; + }, "getTexPickingMode"); + var getBBForSimpleShape = /* @__PURE__ */ __name(function getBBForSimpleShape2(node2) { + var _node$position = node2.position(), x5 = _node$position.x, y6 = _node$position.y; + var w4 = node2.outerWidth(); + var h3 = node2.outerHeight(); + return { + w: w4, + h: h3, + x1: x5 - w4 / 2, + y1: y6 - h3 / 2 + }; + }, "getBBForSimpleShape"); + r2.drawing.addAtlasCollection("node", { + texRows: opts.webglTexRowsNodes + }); + r2.drawing.addAtlasCollection("label", { + texRows: opts.webglTexRows + }); + r2.drawing.addTextureAtlasRenderType("node-body", { + collection: "node", + getKey: fns.getStyleKey, + getBoundingBox: fns.getElementBox, + drawElement: fns.drawElement + }); + r2.drawing.addSimpleShapeRenderType("node-body", { + getBoundingBox: getBBForSimpleShape, + isSimple: isSimpleShape, + shapeProps: { + shape: "shape", + color: "background-color", + opacity: "background-opacity", + radius: "corner-radius", + border: true } - elem.remove(); - return dimension; - } - }; - } - }); - - // src/diagrams/xychart/chartBuilder/components/axis/baseAxis.ts - var BAR_WIDTH_TO_TICK_WIDTH_RATIO, MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL, BaseAxis; - var init_baseAxis = __esm({ - "src/diagrams/xychart/chartBuilder/components/axis/baseAxis.ts"() { - "use strict"; - BAR_WIDTH_TO_TICK_WIDTH_RATIO = 0.7; - MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL = 0.2; - BaseAxis = class { - constructor(axisConfig, title2, textDimensionCalculator, axisThemeConfig) { - this.axisConfig = axisConfig; - this.title = title2; - this.textDimensionCalculator = textDimensionCalculator; - this.axisThemeConfig = axisThemeConfig; - this.boundingRect = { x: 0, y: 0, width: 0, height: 0 }; - this.axisPosition = "left"; - this.showTitle = false; - this.showLabel = false; - this.showTick = false; - this.showAxisLine = false; - this.outerPadding = 0; - this.titleTextHeight = 0; - this.labelTextHeight = 0; - this.range = [0, 10]; - this.boundingRect = { x: 0, y: 0, width: 0, height: 0 }; - this.axisPosition = "left"; - } - static { - __name(this, "BaseAxis"); - } - setRange(range3) { - this.range = range3; - if (this.axisPosition === "left" || this.axisPosition === "right") { - this.boundingRect.height = range3[1] - range3[0]; - } else { - this.boundingRect.width = range3[1] - range3[0]; + }); + r2.drawing.addSimpleShapeRenderType("node-overlay", { + getBoundingBox: getBBForSimpleShape, + isVisible: isLayerVisible("overlay"), + shapeProps: { + shape: "overlay-shape", + color: "overlay-color", + opacity: "overlay-opacity", + padding: "overlay-padding", + radius: "overlay-corner-radius" } - this.recalculateScale(); - } - getRange() { - return [this.range[0] + this.outerPadding, this.range[1] - this.outerPadding]; - } - setAxisPosition(axisPosition) { - this.axisPosition = axisPosition; - this.setRange(this.range); - } - getTickDistance() { - const range3 = this.getRange(); - return Math.abs(range3[0] - range3[1]) / this.getTickValues().length; - } - getAxisOuterPadding() { - return this.outerPadding; - } - getLabelDimension() { - return this.textDimensionCalculator.getMaxDimension( - this.getTickValues().map((tick) => tick.toString()), - this.axisConfig.labelFontSize - ); - } - recalculateOuterPaddingToDrawBar() { - if (BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() > this.outerPadding * 2) { - this.outerPadding = Math.floor(BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() / 2); + }); + r2.drawing.addSimpleShapeRenderType("node-underlay", { + getBoundingBox: getBBForSimpleShape, + isVisible: isLayerVisible("underlay"), + shapeProps: { + shape: "underlay-shape", + color: "underlay-color", + opacity: "underlay-opacity", + padding: "underlay-padding", + radius: "underlay-corner-radius" } - this.recalculateScale(); - } - calculateSpaceIfDrawnHorizontally(availableSpace) { - let availableHeight = availableSpace.height; - if (this.axisConfig.showAxisLine && availableHeight > this.axisConfig.axisLineWidth) { - availableHeight -= this.axisConfig.axisLineWidth; - this.showAxisLine = true; + }); + r2.drawing.addTextureAtlasRenderType("label", { + // node label or edge mid label + collection: "label", + getTexPickingMode, + getKey: getStyleKeysForLabel(fns.getLabelKey, null), + getBoundingBox: getBoundingBoxForLabel(fns.getLabelBox, null), + drawClipped: true, + drawElement: fns.drawLabel, + getRotation: getLabelRotation3(null), + getRotationPoint: fns.getLabelRotationPoint, + getRotationOffset: fns.getLabelRotationOffset, + isVisible: isLabelVisible("label") + }); + r2.drawing.addTextureAtlasRenderType("edge-source-label", { + collection: "label", + getTexPickingMode, + getKey: getStyleKeysForLabel(fns.getSourceLabelKey, "source"), + getBoundingBox: getBoundingBoxForLabel(fns.getSourceLabelBox, "source"), + drawClipped: true, + drawElement: fns.drawSourceLabel, + getRotation: getLabelRotation3("source"), + getRotationPoint: fns.getSourceLabelRotationPoint, + getRotationOffset: fns.getSourceLabelRotationOffset, + isVisible: isLabelVisible("source-label") + }); + r2.drawing.addTextureAtlasRenderType("edge-target-label", { + collection: "label", + getTexPickingMode, + getKey: getStyleKeysForLabel(fns.getTargetLabelKey, "target"), + getBoundingBox: getBoundingBoxForLabel(fns.getTargetLabelBox, "target"), + drawClipped: true, + drawElement: fns.drawTargetLabel, + getRotation: getLabelRotation3("target"), + getRotationPoint: fns.getTargetLabelRotationPoint, + getRotationOffset: fns.getTargetLabelRotationOffset, + isVisible: isLabelVisible("target-label") + }); + var setGCFlag = debounce(function() { + console.log("garbage collect flag set"); + r2.data.gc = true; + }, 1e4); + r2.onUpdateEleCalcs(function(willDraw, eles) { + var gcNeeded = false; + if (eles && eles.length > 0) { + gcNeeded |= r2.drawing.invalidate(eles); } - if (this.axisConfig.showLabel) { - const spaceRequired = this.getLabelDimension(); - const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.width; - this.outerPadding = Math.min(spaceRequired.width / 2, maxPadding); - const heightRequired = spaceRequired.height + this.axisConfig.labelPadding * 2; - this.labelTextHeight = spaceRequired.height; - if (heightRequired <= availableHeight) { - availableHeight -= heightRequired; - this.showLabel = true; - } + if (gcNeeded) { + setGCFlag(); } - if (this.axisConfig.showTick && availableHeight >= this.axisConfig.tickLength) { - this.showTick = true; - availableHeight -= this.axisConfig.tickLength; + }); + overrideCanvasRendererFunctions(r2); + }; + __name(getBGColor, "getBGColor"); + __name(getLabelLines, "getLabelLines"); + getStyleKeysForLabel = /* @__PURE__ */ __name(function getStyleKeysForLabel2(getKey3, prefix) { + return function(ele) { + var key = getKey3(ele); + var lines = getLabelLines(ele, prefix); + if (lines.length > 1) { + return lines.map(function(line2, index) { + return "".concat(key, "_").concat(index); + }); } - if (this.axisConfig.showTitle && this.title) { - const spaceRequired = this.textDimensionCalculator.getMaxDimension( - [this.title], - this.axisConfig.titleFontSize - ); - const heightRequired = spaceRequired.height + this.axisConfig.titlePadding * 2; - this.titleTextHeight = spaceRequired.height; - if (heightRequired <= availableHeight) { - availableHeight -= heightRequired; - this.showTitle = true; + return key; + }; + }, "getStyleKeysForLabel"); + getBoundingBoxForLabel = /* @__PURE__ */ __name(function getBoundingBoxForLabel2(getBoundingBox, prefix) { + return function(ele, styleKey) { + var bb = getBoundingBox(ele); + if (typeof styleKey === "string") { + var ui = styleKey.indexOf("_"); + if (ui > 0) { + var lineIndex = Number(styleKey.substring(ui + 1)); + var lines = getLabelLines(ele, prefix); + var h3 = bb.h / lines.length; + var yOffset = h3 * lineIndex; + var y1 = bb.y1 + yOffset; + return { + x1: bb.x1, + w: bb.w, + y1, + h: h3, + yOffset + }; } } - this.boundingRect.width = availableSpace.width; - this.boundingRect.height = availableSpace.height - availableHeight; + return bb; + }; + }, "getBoundingBoxForLabel"); + __name(overrideCanvasRendererFunctions, "overrideCanvasRendererFunctions"); + __name(clearWebgl, "clearWebgl"); + __name(clearCanvas, "clearCanvas"); + __name(createPanZoomMatrix, "createPanZoomMatrix"); + __name(setContextTransform, "setContextTransform"); + __name(drawSelectionRectangle, "drawSelectionRectangle"); + __name(drawAxes, "drawAxes"); + __name(drawAtlases, "drawAtlases"); + __name(getPickingIndexes, "getPickingIndexes"); + __name(findNearestElementsWebgl, "findNearestElementsWebgl"); + __name(drawEle, "drawEle"); + __name(renderWebgl, "renderWebgl"); + CRp$3 = {}; + CRp$3.drawPolygonPath = function(context, x5, y6, width3, height2, points) { + var halfW = width3 / 2; + var halfH = height2 / 2; + if (context.beginPath) { + context.beginPath(); } - calculateSpaceIfDrawnVertical(availableSpace) { - let availableWidth = availableSpace.width; - if (this.axisConfig.showAxisLine && availableWidth > this.axisConfig.axisLineWidth) { - availableWidth -= this.axisConfig.axisLineWidth; - this.showAxisLine = true; - } - if (this.axisConfig.showLabel) { - const spaceRequired = this.getLabelDimension(); - const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.height; - this.outerPadding = Math.min(spaceRequired.height / 2, maxPadding); - const widthRequired = spaceRequired.width + this.axisConfig.labelPadding * 2; - if (widthRequired <= availableWidth) { - availableWidth -= widthRequired; - this.showLabel = true; - } - } - if (this.axisConfig.showTick && availableWidth >= this.axisConfig.tickLength) { - this.showTick = true; - availableWidth -= this.axisConfig.tickLength; - } - if (this.axisConfig.showTitle && this.title) { - const spaceRequired = this.textDimensionCalculator.getMaxDimension( - [this.title], - this.axisConfig.titleFontSize - ); - const widthRequired = spaceRequired.height + this.axisConfig.titlePadding * 2; - this.titleTextHeight = spaceRequired.height; - if (widthRequired <= availableWidth) { - availableWidth -= widthRequired; - this.showTitle = true; - } - } - this.boundingRect.width = availableSpace.width - availableWidth; - this.boundingRect.height = availableSpace.height; + context.moveTo(x5 + halfW * points[0], y6 + halfH * points[1]); + for (var i2 = 1; i2 < points.length / 2; i2++) { + context.lineTo(x5 + halfW * points[i2 * 2], y6 + halfH * points[i2 * 2 + 1]); } - calculateSpace(availableSpace) { - if (this.axisPosition === "left" || this.axisPosition === "right") { - this.calculateSpaceIfDrawnVertical(availableSpace); - } else { - this.calculateSpaceIfDrawnHorizontally(availableSpace); - } - this.recalculateScale(); - return { - width: this.boundingRect.width, - height: this.boundingRect.height - }; + context.closePath(); + }; + CRp$3.drawRoundPolygonPath = function(context, x5, y6, width3, height2, points, corners) { + corners.forEach(function(corner) { + return drawPreparedRoundCorner(context, corner); + }); + context.closePath(); + }; + CRp$3.drawRoundRectanglePath = function(context, x5, y6, width3, height2, radius2) { + var halfWidth = width3 / 2; + var halfHeight = height2 / 2; + var cornerRadius = radius2 === "auto" ? getRoundRectangleRadius(width3, height2) : Math.min(radius2, halfHeight, halfWidth); + if (context.beginPath) { + context.beginPath(); } - setBoundingBoxXY(point8) { - this.boundingRect.x = point8.x; - this.boundingRect.y = point8.y; + context.moveTo(x5, y6 - halfHeight); + context.arcTo(x5 + halfWidth, y6 - halfHeight, x5 + halfWidth, y6, cornerRadius); + context.arcTo(x5 + halfWidth, y6 + halfHeight, x5, y6 + halfHeight, cornerRadius); + context.arcTo(x5 - halfWidth, y6 + halfHeight, x5 - halfWidth, y6, cornerRadius); + context.arcTo(x5 - halfWidth, y6 - halfHeight, x5, y6 - halfHeight, cornerRadius); + context.lineTo(x5, y6 - halfHeight); + context.closePath(); + }; + CRp$3.drawBottomRoundRectanglePath = function(context, x5, y6, width3, height2, radius2) { + var halfWidth = width3 / 2; + var halfHeight = height2 / 2; + var cornerRadius = radius2 === "auto" ? getRoundRectangleRadius(width3, height2) : radius2; + if (context.beginPath) { + context.beginPath(); } - getDrawableElementsForLeftAxis() { - const drawableElement = []; - if (this.showAxisLine) { - const x5 = this.boundingRect.x + this.boundingRect.width - this.axisConfig.axisLineWidth / 2; - drawableElement.push({ - type: "path", - groupTexts: ["left-axis", "axisl-line"], - data: [ - { - path: `M ${x5},${this.boundingRect.y} L ${x5},${this.boundingRect.y + this.boundingRect.height} `, - strokeFill: this.axisThemeConfig.axisLineColor, - strokeWidth: this.axisConfig.axisLineWidth - } - ] - }); - } - if (this.showLabel) { - drawableElement.push({ - type: "text", - groupTexts: ["left-axis", "label"], - data: this.getTickValues().map((tick) => ({ - text: tick.toString(), - x: this.boundingRect.x + this.boundingRect.width - (this.showLabel ? this.axisConfig.labelPadding : 0) - (this.showTick ? this.axisConfig.tickLength : 0) - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0), - y: this.getScaleValue(tick), - fill: this.axisThemeConfig.labelColor, - fontSize: this.axisConfig.labelFontSize, - rotation: 0, - verticalPos: "middle", - horizontalPos: "right" - })) - }); - } - if (this.showTick) { - const x5 = this.boundingRect.x + this.boundingRect.width - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0); - drawableElement.push({ - type: "path", - groupTexts: ["left-axis", "ticks"], - data: this.getTickValues().map((tick) => ({ - path: `M ${x5},${this.getScaleValue(tick)} L ${x5 - this.axisConfig.tickLength},${this.getScaleValue(tick)}`, - strokeFill: this.axisThemeConfig.tickColor, - strokeWidth: this.axisConfig.tickWidth - })) - }); - } - if (this.showTitle) { - drawableElement.push({ - type: "text", - groupTexts: ["left-axis", "title"], - data: [ - { - text: this.title, - x: this.boundingRect.x + this.axisConfig.titlePadding, - y: this.boundingRect.y + this.boundingRect.height / 2, - fill: this.axisThemeConfig.titleColor, - fontSize: this.axisConfig.titleFontSize, - rotation: 270, - verticalPos: "top", - horizontalPos: "center" - } - ] - }); - } - return drawableElement; + context.moveTo(x5, y6 - halfHeight); + context.lineTo(x5 + halfWidth, y6 - halfHeight); + context.lineTo(x5 + halfWidth, y6); + context.arcTo(x5 + halfWidth, y6 + halfHeight, x5, y6 + halfHeight, cornerRadius); + context.arcTo(x5 - halfWidth, y6 + halfHeight, x5 - halfWidth, y6, cornerRadius); + context.lineTo(x5 - halfWidth, y6 - halfHeight); + context.lineTo(x5, y6 - halfHeight); + context.closePath(); + }; + CRp$3.drawCutRectanglePath = function(context, x5, y6, width3, height2, points, corners) { + var halfWidth = width3 / 2; + var halfHeight = height2 / 2; + var cornerLength = corners === "auto" ? getCutRectangleCornerLength() : corners; + if (context.beginPath) { + context.beginPath(); } - getDrawableElementsForBottomAxis() { - const drawableElement = []; - if (this.showAxisLine) { - const y5 = this.boundingRect.y + this.axisConfig.axisLineWidth / 2; - drawableElement.push({ - type: "path", - groupTexts: ["bottom-axis", "axis-line"], - data: [ - { - path: `M ${this.boundingRect.x},${y5} L ${this.boundingRect.x + this.boundingRect.width},${y5}`, - strokeFill: this.axisThemeConfig.axisLineColor, - strokeWidth: this.axisConfig.axisLineWidth - } - ] - }); - } - if (this.showLabel) { - drawableElement.push({ - type: "text", - groupTexts: ["bottom-axis", "label"], - data: this.getTickValues().map((tick) => ({ - text: tick.toString(), - x: this.getScaleValue(tick), - y: this.boundingRect.y + this.axisConfig.labelPadding + (this.showTick ? this.axisConfig.tickLength : 0) + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0), - fill: this.axisThemeConfig.labelColor, - fontSize: this.axisConfig.labelFontSize, - rotation: 0, - verticalPos: "top", - horizontalPos: "center" - })) - }); - } - if (this.showTick) { - const y5 = this.boundingRect.y + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0); - drawableElement.push({ - type: "path", - groupTexts: ["bottom-axis", "ticks"], - data: this.getTickValues().map((tick) => ({ - path: `M ${this.getScaleValue(tick)},${y5} L ${this.getScaleValue(tick)},${y5 + this.axisConfig.tickLength}`, - strokeFill: this.axisThemeConfig.tickColor, - strokeWidth: this.axisConfig.tickWidth - })) - }); - } - if (this.showTitle) { - drawableElement.push({ - type: "text", - groupTexts: ["bottom-axis", "title"], - data: [ - { - text: this.title, - x: this.range[0] + (this.range[1] - this.range[0]) / 2, - y: this.boundingRect.y + this.boundingRect.height - this.axisConfig.titlePadding - this.titleTextHeight, - fill: this.axisThemeConfig.titleColor, - fontSize: this.axisConfig.titleFontSize, - rotation: 0, - verticalPos: "top", - horizontalPos: "center" - } - ] - }); - } - return drawableElement; + context.moveTo(x5 - halfWidth + cornerLength, y6 - halfHeight); + context.lineTo(x5 + halfWidth - cornerLength, y6 - halfHeight); + context.lineTo(x5 + halfWidth, y6 - halfHeight + cornerLength); + context.lineTo(x5 + halfWidth, y6 + halfHeight - cornerLength); + context.lineTo(x5 + halfWidth - cornerLength, y6 + halfHeight); + context.lineTo(x5 - halfWidth + cornerLength, y6 + halfHeight); + context.lineTo(x5 - halfWidth, y6 + halfHeight - cornerLength); + context.lineTo(x5 - halfWidth, y6 - halfHeight + cornerLength); + context.closePath(); + }; + CRp$3.drawBarrelPath = function(context, x5, y6, width3, height2) { + var halfWidth = width3 / 2; + var halfHeight = height2 / 2; + var xBegin = x5 - halfWidth; + var xEnd = x5 + halfWidth; + var yBegin = y6 - halfHeight; + var yEnd = y6 + halfHeight; + var barrelCurveConstants = getBarrelCurveConstants(width3, height2); + var wOffset = barrelCurveConstants.widthOffset; + var hOffset = barrelCurveConstants.heightOffset; + var ctrlPtXOffset = barrelCurveConstants.ctrlPtOffsetPct * wOffset; + if (context.beginPath) { + context.beginPath(); } - getDrawableElementsForTopAxis() { - const drawableElement = []; - if (this.showAxisLine) { - const y5 = this.boundingRect.y + this.boundingRect.height - this.axisConfig.axisLineWidth / 2; - drawableElement.push({ - type: "path", - groupTexts: ["top-axis", "axis-line"], - data: [ - { - path: `M ${this.boundingRect.x},${y5} L ${this.boundingRect.x + this.boundingRect.width},${y5}`, - strokeFill: this.axisThemeConfig.axisLineColor, - strokeWidth: this.axisConfig.axisLineWidth - } - ] - }); - } - if (this.showLabel) { - drawableElement.push({ - type: "text", - groupTexts: ["top-axis", "label"], - data: this.getTickValues().map((tick) => ({ - text: tick.toString(), - x: this.getScaleValue(tick), - y: this.boundingRect.y + (this.showTitle ? this.titleTextHeight + this.axisConfig.titlePadding * 2 : 0) + this.axisConfig.labelPadding, - fill: this.axisThemeConfig.labelColor, - fontSize: this.axisConfig.labelFontSize, - rotation: 0, - verticalPos: "top", - horizontalPos: "center" - })) - }); - } - if (this.showTick) { - const y5 = this.boundingRect.y; - drawableElement.push({ - type: "path", - groupTexts: ["top-axis", "ticks"], - data: this.getTickValues().map((tick) => ({ - path: `M ${this.getScaleValue(tick)},${y5 + this.boundingRect.height - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)} L ${this.getScaleValue(tick)},${y5 + this.boundingRect.height - this.axisConfig.tickLength - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)}`, - strokeFill: this.axisThemeConfig.tickColor, - strokeWidth: this.axisConfig.tickWidth - })) - }); - } - if (this.showTitle) { - drawableElement.push({ - type: "text", - groupTexts: ["top-axis", "title"], - data: [ - { - text: this.title, - x: this.boundingRect.x + this.boundingRect.width / 2, - y: this.boundingRect.y + this.axisConfig.titlePadding, - fill: this.axisThemeConfig.titleColor, - fontSize: this.axisConfig.titleFontSize, - rotation: 0, - verticalPos: "top", - horizontalPos: "center" - } - ] - }); + context.moveTo(xBegin, yBegin + hOffset); + context.lineTo(xBegin, yEnd - hOffset); + context.quadraticCurveTo(xBegin + ctrlPtXOffset, yEnd, xBegin + wOffset, yEnd); + context.lineTo(xEnd - wOffset, yEnd); + context.quadraticCurveTo(xEnd - ctrlPtXOffset, yEnd, xEnd, yEnd - hOffset); + context.lineTo(xEnd, yBegin + hOffset); + context.quadraticCurveTo(xEnd - ctrlPtXOffset, yBegin, xEnd - wOffset, yBegin); + context.lineTo(xBegin + wOffset, yBegin); + context.quadraticCurveTo(xBegin + ctrlPtXOffset, yBegin, xBegin, yBegin + hOffset); + context.closePath(); + }; + sin0 = Math.sin(0); + cos0 = Math.cos(0); + sin2 = {}; + cos2 = {}; + ellipseStepSize = Math.PI / 40; + for (i2 = 0 * Math.PI; i2 < 2 * Math.PI; i2 += ellipseStepSize) { + sin2[i2] = Math.sin(i2); + cos2[i2] = Math.cos(i2); + } + CRp$3.drawEllipsePath = function(context, centerX, centerY, width3, height2) { + if (context.beginPath) { + context.beginPath(); + } + if (context.ellipse) { + context.ellipse(centerX, centerY, width3 / 2, height2 / 2, 0, 0, 2 * Math.PI); + } else { + var xPos, yPos; + var rw = width3 / 2; + var rh = height2 / 2; + for (var i2 = 0 * Math.PI; i2 < 2 * Math.PI; i2 += ellipseStepSize) { + xPos = centerX - rw * sin2[i2] * sin0 + rw * cos2[i2] * cos0; + yPos = centerY + rh * cos2[i2] * sin0 + rh * sin2[i2] * cos0; + if (i2 === 0) { + context.moveTo(xPos, yPos); + } else { + context.lineTo(xPos, yPos); + } } - return drawableElement; } - getDrawableElements() { - if (this.axisPosition === "left") { - return this.getDrawableElementsForLeftAxis(); + context.closePath(); + }; + CRp$2 = {}; + CRp$2.createBuffer = function(w4, h3) { + var buffer = document.createElement("canvas"); + buffer.width = w4; + buffer.height = h3; + return [buffer, buffer.getContext("2d")]; + }; + CRp$2.bufferCanvasImage = function(options2) { + var cy = this.cy; + var eles = cy.mutableElements(); + var bb = eles.boundingBox(); + var ctrRect = this.findContainerClientCoords(); + var width3 = options2.full ? Math.ceil(bb.w) : ctrRect[2]; + var height2 = options2.full ? Math.ceil(bb.h) : ctrRect[3]; + var specdMaxDims = number$1(options2.maxWidth) || number$1(options2.maxHeight); + var pxRatio = this.getPixelRatio(); + var scale2 = 1; + if (options2.scale !== void 0) { + width3 *= options2.scale; + height2 *= options2.scale; + scale2 = options2.scale; + } else if (specdMaxDims) { + var maxScaleW = Infinity; + var maxScaleH = Infinity; + if (number$1(options2.maxWidth)) { + maxScaleW = scale2 * options2.maxWidth / width3; } - if (this.axisPosition === "right") { - throw Error("Drawing of right axis is not implemented"); + if (number$1(options2.maxHeight)) { + maxScaleH = scale2 * options2.maxHeight / height2; } - if (this.axisPosition === "bottom") { - return this.getDrawableElementsForBottomAxis(); + scale2 = Math.min(maxScaleW, maxScaleH); + width3 *= scale2; + height2 *= scale2; + } + if (!specdMaxDims) { + width3 *= pxRatio; + height2 *= pxRatio; + scale2 *= pxRatio; + } + var buffCanvas = document.createElement("canvas"); + buffCanvas.width = width3; + buffCanvas.height = height2; + buffCanvas.style.width = width3 + "px"; + buffCanvas.style.height = height2 + "px"; + var buffCxt = buffCanvas.getContext("2d"); + if (width3 > 0 && height2 > 0) { + buffCxt.clearRect(0, 0, width3, height2); + buffCxt.globalCompositeOperation = "source-over"; + var zsortedEles = this.getCachedZSortedEles(); + if (options2.full) { + buffCxt.translate(-bb.x1 * scale2, -bb.y1 * scale2); + buffCxt.scale(scale2, scale2); + this.drawElements(buffCxt, zsortedEles); + buffCxt.scale(1 / scale2, 1 / scale2); + buffCxt.translate(bb.x1 * scale2, bb.y1 * scale2); + } else { + var pan2 = cy.pan(); + var translation = { + x: pan2.x * scale2, + y: pan2.y * scale2 + }; + scale2 *= cy.zoom(); + buffCxt.translate(translation.x, translation.y); + buffCxt.scale(scale2, scale2); + this.drawElements(buffCxt, zsortedEles); + buffCxt.scale(1 / scale2, 1 / scale2); + buffCxt.translate(-translation.x, -translation.y); } - if (this.axisPosition === "top") { - return this.getDrawableElementsForTopAxis(); + if (options2.bg) { + buffCxt.globalCompositeOperation = "destination-over"; + buffCxt.fillStyle = options2.bg; + buffCxt.rect(0, 0, width3, height2); + buffCxt.fill(); } - return []; } + return buffCanvas; }; - } - }); - - // src/diagrams/xychart/chartBuilder/components/axis/bandAxis.ts - var BandAxis; - var init_bandAxis = __esm({ - "src/diagrams/xychart/chartBuilder/components/axis/bandAxis.ts"() { - "use strict"; - init_src32(); - init_logger(); - init_baseAxis(); - BandAxis = class extends BaseAxis { - static { - __name(this, "BandAxis"); - } - constructor(axisConfig, axisThemeConfig, categories, title2, textDimensionCalculator) { - super(axisConfig, title2, textDimensionCalculator, axisThemeConfig); - this.categories = categories; - this.scale = band().domain(this.categories).range(this.getRange()); - } - setRange(range3) { - super.setRange(range3); - } - recalculateScale() { - this.scale = band().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(0.5); - log.trace("BandAxis axis final categories, range: ", this.categories, this.getRange()); - } - getTickValues() { - return this.categories; - } - getScaleValue(value2) { - return this.scale(value2) ?? this.getRange()[0]; - } + __name(b64ToBlob, "b64ToBlob"); + __name(b64UriToB64, "b64UriToB64"); + __name(output, "output"); + CRp$2.png = function(options2) { + return output(options2, this.bufferCanvasImage(options2), "image/png"); }; - } - }); - - // src/diagrams/xychart/chartBuilder/components/axis/linearAxis.ts - var LinearAxis; - var init_linearAxis = __esm({ - "src/diagrams/xychart/chartBuilder/components/axis/linearAxis.ts"() { - "use strict"; - init_src32(); - init_baseAxis(); - LinearAxis = class extends BaseAxis { - static { - __name(this, "LinearAxis"); - } - constructor(axisConfig, axisThemeConfig, domain, title2, textDimensionCalculator) { - super(axisConfig, title2, textDimensionCalculator, axisThemeConfig); - this.domain = domain; - this.scale = linear2().domain(this.domain).range(this.getRange()); + CRp$2.jpg = function(options2) { + return output(options2, this.bufferCanvasImage(options2), "image/jpeg"); + }; + CRp$1 = {}; + CRp$1.nodeShapeImpl = function(name, context, centerX, centerY, width3, height2, points, corners) { + switch (name) { + case "ellipse": + return this.drawEllipsePath(context, centerX, centerY, width3, height2); + case "polygon": + return this.drawPolygonPath(context, centerX, centerY, width3, height2, points); + case "round-polygon": + return this.drawRoundPolygonPath(context, centerX, centerY, width3, height2, points, corners); + case "roundrectangle": + case "round-rectangle": + return this.drawRoundRectanglePath(context, centerX, centerY, width3, height2, corners); + case "cutrectangle": + case "cut-rectangle": + return this.drawCutRectanglePath(context, centerX, centerY, width3, height2, points, corners); + case "bottomroundrectangle": + case "bottom-round-rectangle": + return this.drawBottomRoundRectanglePath(context, centerX, centerY, width3, height2, corners); + case "barrel": + return this.drawBarrelPath(context, centerX, centerY, width3, height2); } - getTickValues() { - return this.scale.ticks(); + }; + CR = CanvasRenderer; + CRp = CanvasRenderer.prototype; + CRp.CANVAS_LAYERS = 3; + CRp.SELECT_BOX = 0; + CRp.DRAG = 1; + CRp.NODE = 2; + CRp.WEBGL = 3; + CRp.CANVAS_TYPES = ["2d", "2d", "2d", "webgl2"]; + CRp.BUFFER_COUNT = 3; + CRp.TEXTURE_BUFFER = 0; + CRp.MOTIONBLUR_BUFFER_NODE = 1; + CRp.MOTIONBLUR_BUFFER_DRAG = 2; + __name(CanvasRenderer, "CanvasRenderer"); + CRp.redrawHint = function(group2, bool2) { + var r2 = this; + switch (group2) { + case "eles": + r2.data.canvasNeedsRedraw[CRp.NODE] = bool2; + break; + case "drag": + r2.data.canvasNeedsRedraw[CRp.DRAG] = bool2; + break; + case "select": + r2.data.canvasNeedsRedraw[CRp.SELECT_BOX] = bool2; + break; + case "gc": + r2.data.gc = true; + break; } - recalculateScale() { - const domain = [...this.domain]; - if (this.axisPosition === "left") { - domain.reverse(); - } - this.scale = linear2().domain(domain).range(this.getRange()); + }; + pathsImpld = typeof Path2D !== "undefined"; + CRp.path2dEnabled = function(on3) { + if (on3 === void 0) { + return this.pathsEnabled; } - getScaleValue(value2) { - return this.scale(value2); + this.pathsEnabled = on3 ? true : false; + }; + CRp.usePaths = function() { + return pathsImpld && this.pathsEnabled; + }; + CRp.setImgSmoothing = function(context, bool2) { + if (context.imageSmoothingEnabled != null) { + context.imageSmoothingEnabled = bool2; + } else { + context.webkitImageSmoothingEnabled = bool2; + context.mozImageSmoothingEnabled = bool2; + context.msImageSmoothingEnabled = bool2; } }; - } - }); - - // src/diagrams/xychart/chartBuilder/components/axis/index.ts - function getAxis(data6, axisConfig, axisThemeConfig, tmpSVGGroup2) { - const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2); - if (isBandAxisData(data6)) { - return new BandAxis( - axisConfig, - axisThemeConfig, - data6.categories, - data6.title, - textDimensionCalculator - ); - } - return new LinearAxis( - axisConfig, - axisThemeConfig, - [data6.min, data6.max], - data6.title, - textDimensionCalculator - ); - } - var init_axis2 = __esm({ - "src/diagrams/xychart/chartBuilder/components/axis/index.ts"() { - "use strict"; - init_interfaces(); - init_textDimensionCalculator(); - init_bandAxis(); - init_linearAxis(); - __name(getAxis, "getAxis"); - } - }); - - // src/diagrams/xychart/chartBuilder/components/chartTitle.ts - function getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) { - const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2); - return new ChartTitle(textDimensionCalculator, chartConfig, chartData, chartThemeConfig); - } - var ChartTitle; - var init_chartTitle = __esm({ - "src/diagrams/xychart/chartBuilder/components/chartTitle.ts"() { - "use strict"; - init_textDimensionCalculator(); - ChartTitle = class { - constructor(textDimensionCalculator, chartConfig, chartData, chartThemeConfig) { - this.textDimensionCalculator = textDimensionCalculator; - this.chartConfig = chartConfig; - this.chartData = chartData; - this.chartThemeConfig = chartThemeConfig; - this.boundingRect = { - x: 0, - y: 0, - width: 0, - height: 0 - }; - this.showChartTitle = false; + CRp.getImgSmoothing = function(context) { + if (context.imageSmoothingEnabled != null) { + return context.imageSmoothingEnabled; + } else { + return context.webkitImageSmoothingEnabled || context.mozImageSmoothingEnabled || context.msImageSmoothingEnabled; } - static { - __name(this, "ChartTitle"); + }; + CRp.makeOffscreenCanvas = function(width3, height2) { + var canvas; + if ((typeof OffscreenCanvas === "undefined" ? "undefined" : _typeof(OffscreenCanvas)) !== "undefined") { + canvas = new OffscreenCanvas(width3, height2); + } else { + var containerWindow = this.cy.window(); + var document2 = containerWindow.document; + canvas = document2.createElement("canvas"); + canvas.width = width3; + canvas.height = height2; } - setBoundingBoxXY(point8) { - this.boundingRect.x = point8.x; - this.boundingRect.y = point8.y; + return canvas; + }; + [CRp$b, CRp$a, CRp$9, CRp$8, CRp$7, CRp$6, CRp$5, CRp$4, CRp$3, CRp$2, CRp$1].forEach(function(props) { + extend4(CRp, props); + }); + renderer2 = [{ + name: "null", + impl: NullRenderer + }, { + name: "base", + impl: BR + }, { + name: "canvas", + impl: CR + }]; + incExts = [{ + type: "layout", + extensions: layout4 + }, { + type: "renderer", + extensions: renderer2 + }]; + extensions = {}; + modules = {}; + __name(setExtension, "setExtension"); + __name(getExtension, "getExtension"); + __name(setModule, "setModule"); + __name(getModule, "getModule"); + extension2 = /* @__PURE__ */ __name(function extension3() { + if (arguments.length === 2) { + return getExtension.apply(null, arguments); + } else if (arguments.length === 3) { + return setExtension.apply(null, arguments); + } else if (arguments.length === 4) { + return getModule.apply(null, arguments); + } else if (arguments.length === 5) { + return setModule.apply(null, arguments); + } else { + error("Invalid extension access syntax"); } - calculateSpace(availableSpace) { - const titleDimension = this.textDimensionCalculator.getMaxDimension( - [this.chartData.title], - this.chartConfig.titleFontSize - ); - const widthRequired = Math.max(titleDimension.width, availableSpace.width); - const heightRequired = titleDimension.height + 2 * this.chartConfig.titlePadding; - if (titleDimension.width <= widthRequired && titleDimension.height <= heightRequired && this.chartConfig.showTitle && this.chartData.title) { - this.boundingRect.width = widthRequired; - this.boundingRect.height = heightRequired; - this.showChartTitle = true; - } - return { - width: this.boundingRect.width, - height: this.boundingRect.height - }; + }, "extension"); + Core.prototype.extension = extension2; + incExts.forEach(function(group2) { + group2.extensions.forEach(function(ext) { + setExtension(group2.type, ext.name, ext.impl); + }); + }); + _Stylesheet = /* @__PURE__ */ __name(function Stylesheet() { + if (!(this instanceof _Stylesheet)) { + return new _Stylesheet(); } - getDrawableElements() { - const drawableElem = []; - if (this.showChartTitle) { - drawableElem.push({ - groupTexts: ["chart-title"], - type: "text", - data: [ - { - fontSize: this.chartConfig.titleFontSize, - text: this.chartData.title, - verticalPos: "middle", - horizontalPos: "center", - x: this.boundingRect.x + this.boundingRect.width / 2, - y: this.boundingRect.y + this.boundingRect.height / 2, - fill: this.chartThemeConfig.titleColor, - rotation: 0 - } - ] + this.length = 0; + }, "Stylesheet"); + sheetfn = _Stylesheet.prototype; + sheetfn.instanceString = function() { + return "stylesheet"; + }; + sheetfn.selector = function(selector) { + var i2 = this.length++; + this[i2] = { + selector, + properties: [] + }; + return this; + }; + sheetfn.css = function(name, value2) { + var i2 = this.length - 1; + if (string(name)) { + this[i2].properties.push({ + name, + value: value2 + }); + } else if (plainObject(name)) { + var map5 = name; + var propNames = Object.keys(map5); + for (var j3 = 0; j3 < propNames.length; j3++) { + var key = propNames[j3]; + var mapVal = map5[key]; + if (mapVal == null) { + continue; + } + var prop = _Style.properties[key] || _Style.properties[dash2camel(key)]; + if (prop == null) { + continue; + } + var _name = prop.name; + var _value = mapVal; + this[i2].properties.push({ + name: _name, + value: _value }); } - return drawableElem; } + return this; }; - __name(getChartTitleComponent, "getChartTitleComponent"); - } - }); - - // src/diagrams/xychart/chartBuilder/components/plot/linePlot.ts - var LinePlot; - var init_linePlot = __esm({ - "src/diagrams/xychart/chartBuilder/components/plot/linePlot.ts"() { - "use strict"; - init_src32(); - LinePlot = class { - constructor(plotData, xAxis, yAxis, orientation, plotIndex2) { - this.plotData = plotData; - this.xAxis = xAxis; - this.yAxis = yAxis; - this.orientation = orientation; - this.plotIndex = plotIndex2; - } - static { - __name(this, "LinePlot"); - } - getDrawableElement() { - const finalData = this.plotData.data.map((d2) => [ - this.xAxis.getScaleValue(d2[0]), - this.yAxis.getScaleValue(d2[1]) - ]); - let path4; - if (this.orientation === "horizontal") { - path4 = line_default().y((d2) => d2[0]).x((d2) => d2[1])(finalData); - } else { - path4 = line_default().x((d2) => d2[0]).y((d2) => d2[1])(finalData); - } - if (!path4) { - return []; - } - return [ - { - groupTexts: ["plot", `line-plot-${this.plotIndex}`], - type: "path", - data: [ - { - path: path4, - strokeFill: this.plotData.strokeFill, - strokeWidth: this.plotData.strokeWidth - } - ] - } - ]; - } + sheetfn.style = sheetfn.css; + sheetfn.generateStyle = function(cy) { + var style3 = new _Style(cy); + return this.appendToStyle(style3); }; - } - }); - - // src/diagrams/xychart/chartBuilder/components/plot/barPlot.ts - var BarPlot; - var init_barPlot = __esm({ - "src/diagrams/xychart/chartBuilder/components/plot/barPlot.ts"() { - "use strict"; - BarPlot = class { - constructor(barData, boundingRect, xAxis, yAxis, orientation, plotIndex2) { - this.barData = barData; - this.boundingRect = boundingRect; - this.xAxis = xAxis; - this.yAxis = yAxis; - this.orientation = orientation; - this.plotIndex = plotIndex2; - } - static { - __name(this, "BarPlot"); - } - getDrawableElement() { - const finalData = this.barData.data.map((d2) => [ - this.xAxis.getScaleValue(d2[0]), - this.yAxis.getScaleValue(d2[1]) - ]); - const barPaddingPercent = 0.05; - const barWidth = Math.min(this.xAxis.getAxisOuterPadding() * 2, this.xAxis.getTickDistance()) * (1 - barPaddingPercent); - const barWidthHalf = barWidth / 2; - if (this.orientation === "horizontal") { - return [ - { - groupTexts: ["plot", `bar-plot-${this.plotIndex}`], - type: "rect", - data: finalData.map((data6) => ({ - x: this.boundingRect.x, - y: data6[0] - barWidthHalf, - height: barWidth, - width: data6[1] - this.boundingRect.x, - fill: this.barData.fill, - strokeWidth: 0, - strokeFill: this.barData.fill - })) - } - ]; + sheetfn.appendToStyle = function(style3) { + for (var i2 = 0; i2 < this.length; i2++) { + var context = this[i2]; + var selector = context.selector; + var props = context.properties; + style3.selector(selector); + for (var j3 = 0; j3 < props.length; j3++) { + var prop = props[j3]; + style3.css(prop.name, prop.value); } - return [ - { - groupTexts: ["plot", `bar-plot-${this.plotIndex}`], - type: "rect", - data: finalData.map((data6) => ({ - x: data6[0] - barWidthHalf, - y: data6[1], - width: barWidth, - height: this.boundingRect.y + this.boundingRect.height - data6[1], - fill: this.barData.fill, - strokeWidth: 0, - strokeFill: this.barData.fill - })) - } - ]; } + return style3; }; - } - }); - - // src/diagrams/xychart/chartBuilder/components/plot/index.ts - function getPlotComponent(chartConfig, chartData, chartThemeConfig) { - return new BasePlot(chartConfig, chartData, chartThemeConfig); - } - var BasePlot; - var init_plot = __esm({ - "src/diagrams/xychart/chartBuilder/components/plot/index.ts"() { - "use strict"; - init_linePlot(); - init_barPlot(); - BasePlot = class { - constructor(chartConfig, chartData, chartThemeConfig) { - this.chartConfig = chartConfig; - this.chartData = chartData; - this.chartThemeConfig = chartThemeConfig; - this.boundingRect = { - x: 0, - y: 0, - width: 0, - height: 0 - }; - } - static { - __name(this, "BasePlot"); - } - setAxes(xAxis, yAxis) { - this.xAxis = xAxis; - this.yAxis = yAxis; - } - setBoundingBoxXY(point8) { - this.boundingRect.x = point8.x; - this.boundingRect.y = point8.y; - } - calculateSpace(availableSpace) { - this.boundingRect.width = availableSpace.width; - this.boundingRect.height = availableSpace.height; - return { - width: this.boundingRect.width, - height: this.boundingRect.height - }; + version2 = "3.33.1"; + cytoscape2 = /* @__PURE__ */ __name(function cytoscape3(options2) { + if (options2 === void 0) { + options2 = {}; } - getDrawableElements() { - if (!(this.xAxis && this.yAxis)) { - throw Error("Axes must be passed to render Plots"); - } - const drawableElem = []; - for (const [i2, plot] of this.chartData.plots.entries()) { - switch (plot.type) { - case "line": - { - const linePlot = new LinePlot( - plot, - this.xAxis, - this.yAxis, - this.chartConfig.chartOrientation, - i2 - ); - drawableElem.push(...linePlot.getDrawableElement()); - } - break; - case "bar": - { - const barPlot = new BarPlot( - plot, - this.boundingRect, - this.xAxis, - this.yAxis, - this.chartConfig.chartOrientation, - i2 - ); - drawableElem.push(...barPlot.getDrawableElement()); - } - break; - } - } - return drawableElem; + if (plainObject(options2)) { + return new Core(options2); + } else if (string(options2)) { + return extension2.apply(extension2, arguments); } + }, "cytoscape"); + cytoscape2.use = function(ext) { + var args = Array.prototype.slice.call(arguments, 1); + args.unshift(cytoscape2); + ext.apply(null, args); + return this; }; - __name(getPlotComponent, "getPlotComponent"); + cytoscape2.warnings = function(bool2) { + return warnings(bool2); + }; + cytoscape2.version = version2; + cytoscape2.stylesheet = cytoscape2.Stylesheet = _Stylesheet; } }); - // src/diagrams/xychart/chartBuilder/orchestrator.ts - var Orchestrator; - var init_orchestrator = __esm({ - "src/diagrams/xychart/chartBuilder/orchestrator.ts"() { + // ../../node_modules/.pnpm/layout-base@1.0.2/node_modules/layout-base/layout-base.js + var require_layout_base = __commonJS({ + "../../node_modules/.pnpm/layout-base@1.0.2/node_modules/layout-base/layout-base.js"(exports2, module2) { "use strict"; - init_axis2(); - init_chartTitle(); - init_plot(); - init_interfaces(); - Orchestrator = class { - constructor(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) { - this.chartConfig = chartConfig; - this.chartData = chartData; - this.componentStore = { - title: getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2), - plot: getPlotComponent(chartConfig, chartData, chartThemeConfig), - xAxis: getAxis( - chartData.xAxis, - chartConfig.xAxis, - { - titleColor: chartThemeConfig.xAxisTitleColor, - labelColor: chartThemeConfig.xAxisLabelColor, - tickColor: chartThemeConfig.xAxisTickColor, - axisLineColor: chartThemeConfig.xAxisLineColor - }, - tmpSVGGroup2 - ), - yAxis: getAxis( - chartData.yAxis, - chartConfig.yAxis, - { - titleColor: chartThemeConfig.yAxisTitleColor, - labelColor: chartThemeConfig.yAxisLabelColor, - tickColor: chartThemeConfig.yAxisTickColor, - axisLineColor: chartThemeConfig.yAxisLineColor - }, - tmpSVGGroup2 - ) - }; - } - static { - __name(this, "Orchestrator"); - } - calculateVerticalSpace() { - let availableWidth = this.chartConfig.width; - let availableHeight = this.chartConfig.height; - let plotX = 0; - let plotY = 0; - let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100); - let chartHeight = Math.floor( - availableHeight * this.chartConfig.plotReservedSpacePercent / 100 - ); - let spaceUsed = this.componentStore.plot.calculateSpace({ - width: chartWidth, - height: chartHeight - }); - availableWidth -= spaceUsed.width; - availableHeight -= spaceUsed.height; - spaceUsed = this.componentStore.title.calculateSpace({ - width: this.chartConfig.width, - height: availableHeight - }); - plotY = spaceUsed.height; - availableHeight -= spaceUsed.height; - this.componentStore.xAxis.setAxisPosition("bottom"); - spaceUsed = this.componentStore.xAxis.calculateSpace({ - width: availableWidth, - height: availableHeight - }); - availableHeight -= spaceUsed.height; - this.componentStore.yAxis.setAxisPosition("left"); - spaceUsed = this.componentStore.yAxis.calculateSpace({ - width: availableWidth, - height: availableHeight - }); - plotX = spaceUsed.width; - availableWidth -= spaceUsed.width; - if (availableWidth > 0) { - chartWidth += availableWidth; - availableWidth = 0; - } - if (availableHeight > 0) { - chartHeight += availableHeight; - availableHeight = 0; - } - this.componentStore.plot.calculateSpace({ - width: chartWidth, - height: chartHeight - }); - this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY }); - this.componentStore.xAxis.setRange([plotX, plotX + chartWidth]); - this.componentStore.xAxis.setBoundingBoxXY({ x: plotX, y: plotY + chartHeight }); - this.componentStore.yAxis.setRange([plotY, plotY + chartHeight]); - this.componentStore.yAxis.setBoundingBoxXY({ x: 0, y: plotY }); - if (this.chartData.plots.some((p3) => isBarPlot(p3))) { - this.componentStore.xAxis.recalculateOuterPaddingToDrawBar(); - } - } - calculateHorizontalSpace() { - let availableWidth = this.chartConfig.width; - let availableHeight = this.chartConfig.height; - let titleYEnd = 0; - let plotX = 0; - let plotY = 0; - let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100); - let chartHeight = Math.floor( - availableHeight * this.chartConfig.plotReservedSpacePercent / 100 - ); - let spaceUsed = this.componentStore.plot.calculateSpace({ - width: chartWidth, - height: chartHeight - }); - availableWidth -= spaceUsed.width; - availableHeight -= spaceUsed.height; - spaceUsed = this.componentStore.title.calculateSpace({ - width: this.chartConfig.width, - height: availableHeight - }); - titleYEnd = spaceUsed.height; - availableHeight -= spaceUsed.height; - this.componentStore.xAxis.setAxisPosition("left"); - spaceUsed = this.componentStore.xAxis.calculateSpace({ - width: availableWidth, - height: availableHeight - }); - availableWidth -= spaceUsed.width; - plotX = spaceUsed.width; - this.componentStore.yAxis.setAxisPosition("top"); - spaceUsed = this.componentStore.yAxis.calculateSpace({ - width: availableWidth, - height: availableHeight - }); - availableHeight -= spaceUsed.height; - plotY = titleYEnd + spaceUsed.height; - if (availableWidth > 0) { - chartWidth += availableWidth; - availableWidth = 0; - } - if (availableHeight > 0) { - chartHeight += availableHeight; - availableHeight = 0; - } - this.componentStore.plot.calculateSpace({ - width: chartWidth, - height: chartHeight - }); - this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY }); - this.componentStore.yAxis.setRange([plotX, plotX + chartWidth]); - this.componentStore.yAxis.setBoundingBoxXY({ x: plotX, y: titleYEnd }); - this.componentStore.xAxis.setRange([plotY, plotY + chartHeight]); - this.componentStore.xAxis.setBoundingBoxXY({ x: 0, y: plotY }); - if (this.chartData.plots.some((p3) => isBarPlot(p3))) { - this.componentStore.xAxis.recalculateOuterPaddingToDrawBar(); - } - } - calculateSpace() { - if (this.chartConfig.chartOrientation === "horizontal") { - this.calculateHorizontalSpace(); - } else { - this.calculateVerticalSpace(); - } - } - getDrawableElement() { - this.calculateSpace(); - const drawableElem = []; - this.componentStore.plot.setAxes(this.componentStore.xAxis, this.componentStore.yAxis); - for (const component2 of Object.values(this.componentStore)) { - drawableElem.push(...component2.getDrawableElements()); - } - return drawableElem; - } - }; - } - }); - - // src/diagrams/xychart/chartBuilder/index.ts - var XYChartBuilder; - var init_chartBuilder = __esm({ - "src/diagrams/xychart/chartBuilder/index.ts"() { - "use strict"; - init_orchestrator(); - XYChartBuilder = class { - static { - __name(this, "XYChartBuilder"); - } - static build(config5, chartData, chartThemeConfig, tmpSVGGroup2) { - const orchestrator = new Orchestrator(config5, chartData, chartThemeConfig, tmpSVGGroup2); - return orchestrator.getDrawableElement(); - } - }; - } - }); - - // src/diagrams/xychart/xychartDb.ts - function getChartDefaultThemeConfig() { - const defaultThemeVariables2 = getThemeVariables3(); - const config5 = getConfig(); - return cleanAndMerge(defaultThemeVariables2.xyChart, config5.themeVariables.xyChart); - } - function getChartDefaultConfig() { - const config5 = getConfig(); - return cleanAndMerge( - defaultConfig_default.xyChart, - config5.xyChart - ); - } - function getChartDefaultData() { - return { - yAxis: { - type: "linear", - title: "", - min: Infinity, - max: -Infinity - }, - xAxis: { - type: "band", - title: "", - categories: [] - }, - title: "", - plots: [] - }; - } - function textSanitizer2(text4) { - const config5 = getConfig(); - return sanitizeText(text4.trim(), config5); - } - function setTmpSVGG(SVGG) { - tmpSVGGroup = SVGG; - } - function setOrientation(orientation) { - if (orientation === "horizontal") { - xyChartConfig.chartOrientation = "horizontal"; - } else { - xyChartConfig.chartOrientation = "vertical"; - } - } - function setXAxisTitle(title2) { - xyChartData.xAxis.title = textSanitizer2(title2.text); - } - function setXAxisRangeData(min9, max10) { - xyChartData.xAxis = { type: "linear", title: xyChartData.xAxis.title, min: min9, max: max10 }; - hasSetXAxis = true; - } - function setXAxisBand(categories) { - xyChartData.xAxis = { - type: "band", - title: xyChartData.xAxis.title, - categories: categories.map((c3) => textSanitizer2(c3.text)) - }; - hasSetXAxis = true; - } - function setYAxisTitle(title2) { - xyChartData.yAxis.title = textSanitizer2(title2.text); - } - function setYAxisRangeData(min9, max10) { - xyChartData.yAxis = { type: "linear", title: xyChartData.yAxis.title, min: min9, max: max10 }; - hasSetYAxis = true; - } - function setYAxisRangeFromPlotData(data6) { - const minValue = Math.min(...data6); - const maxValue = Math.max(...data6); - const prevMinValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.min : Infinity; - const prevMaxValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.max : -Infinity; - xyChartData.yAxis = { - type: "linear", - title: xyChartData.yAxis.title, - min: Math.min(prevMinValue, minValue), - max: Math.max(prevMaxValue, maxValue) - }; - } - function transformDataWithoutCategory(data6) { - let retData = []; - if (data6.length === 0) { - return retData; - } - if (!hasSetXAxis) { - const prevMinValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.min : Infinity; - const prevMaxValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.max : -Infinity; - setXAxisRangeData(Math.min(prevMinValue, 1), Math.max(prevMaxValue, data6.length)); - } - if (!hasSetYAxis) { - setYAxisRangeFromPlotData(data6); - } - if (isBandAxisData(xyChartData.xAxis)) { - retData = xyChartData.xAxis.categories.map((c3, i2) => [c3, data6[i2]]); - } - if (isLinearAxisData(xyChartData.xAxis)) { - const min9 = xyChartData.xAxis.min; - const max10 = xyChartData.xAxis.max; - const step3 = (max10 - min9) / (data6.length - 1); - const categories = []; - for (let i2 = min9; i2 <= max10; i2 += step3) { - categories.push(`${i2}`); - } - retData = categories.map((c3, i2) => [c3, data6[i2]]); - } - return retData; - } - function getPlotColorFromPalette(plotIndex2) { - return plotColorPalette[plotIndex2 === 0 ? 0 : plotIndex2 % plotColorPalette.length]; - } - function setLineData(title2, data6) { - const plotData = transformDataWithoutCategory(data6); - xyChartData.plots.push({ - type: "line", - strokeFill: getPlotColorFromPalette(plotIndex), - strokeWidth: 2, - data: plotData - }); - plotIndex++; - } - function setBarData(title2, data6) { - const plotData = transformDataWithoutCategory(data6); - xyChartData.plots.push({ - type: "bar", - fill: getPlotColorFromPalette(plotIndex), - data: plotData - }); - plotIndex++; - } - function getDrawableElem() { - if (xyChartData.plots.length === 0) { - throw Error("No Plot to render, please provide a plot with some data"); - } - xyChartData.title = getDiagramTitle(); - return XYChartBuilder.build(xyChartConfig, xyChartData, xyChartThemeConfig, tmpSVGGroup); - } - function getChartThemeConfig() { - return xyChartThemeConfig; - } - function getChartConfig() { - return xyChartConfig; - } - var plotIndex, tmpSVGGroup, xyChartConfig, xyChartThemeConfig, xyChartData, plotColorPalette, hasSetXAxis, hasSetYAxis, clear12, xychartDb_default; - var init_xychartDb = __esm({ - "src/diagrams/xychart/xychartDb.ts"() { - "use strict"; - init_config(); - init_defaultConfig(); - init_theme_default(); - init_utils2(); - init_common(); - init_commonDb(); - init_chartBuilder(); - init_interfaces(); - plotIndex = 0; - xyChartConfig = getChartDefaultConfig(); - xyChartThemeConfig = getChartDefaultThemeConfig(); - xyChartData = getChartDefaultData(); - plotColorPalette = xyChartThemeConfig.plotColorPalette.split(",").map((color2) => color2.trim()); - hasSetXAxis = false; - hasSetYAxis = false; - __name(getChartDefaultThemeConfig, "getChartDefaultThemeConfig"); - __name(getChartDefaultConfig, "getChartDefaultConfig"); - __name(getChartDefaultData, "getChartDefaultData"); - __name(textSanitizer2, "textSanitizer"); - __name(setTmpSVGG, "setTmpSVGG"); - __name(setOrientation, "setOrientation"); - __name(setXAxisTitle, "setXAxisTitle"); - __name(setXAxisRangeData, "setXAxisRangeData"); - __name(setXAxisBand, "setXAxisBand"); - __name(setYAxisTitle, "setYAxisTitle"); - __name(setYAxisRangeData, "setYAxisRangeData"); - __name(setYAxisRangeFromPlotData, "setYAxisRangeFromPlotData"); - __name(transformDataWithoutCategory, "transformDataWithoutCategory"); - __name(getPlotColorFromPalette, "getPlotColorFromPalette"); - __name(setLineData, "setLineData"); - __name(setBarData, "setBarData"); - __name(getDrawableElem, "getDrawableElem"); - __name(getChartThemeConfig, "getChartThemeConfig"); - __name(getChartConfig, "getChartConfig"); - clear12 = /* @__PURE__ */ __name(function() { - clear(); - plotIndex = 0; - xyChartConfig = getChartDefaultConfig(); - xyChartData = getChartDefaultData(); - xyChartThemeConfig = getChartDefaultThemeConfig(); - plotColorPalette = xyChartThemeConfig.plotColorPalette.split(",").map((color2) => color2.trim()); - hasSetXAxis = false; - hasSetYAxis = false; - }, "clear"); - xychartDb_default = { - getDrawableElem, - clear: clear12, - setAccTitle, - getAccTitle, - setDiagramTitle, - getDiagramTitle, - getAccDescription, - setAccDescription, - setOrientation, - setXAxisTitle, - setXAxisRangeData, - setXAxisBand, - setYAxisTitle, - setYAxisRangeData, - setLineData, - setBarData, - setTmpSVGG, - getChartThemeConfig, - getChartConfig - }; - } - }); - - // src/diagrams/xychart/xychartRenderer.ts - var draw9, xychartRenderer_default; - var init_xychartRenderer = __esm({ - "src/diagrams/xychart/xychartRenderer.ts"() { - "use strict"; - init_logger(); - init_selectSvgElement(); - init_setupGraphViewbox(); - draw9 = /* @__PURE__ */ __name((txt, id29, _version, diagObj) => { - const db10 = diagObj.db; - const themeConfig = db10.getChartThemeConfig(); - const chartConfig = db10.getChartConfig(); - function getDominantBaseLine(horizontalPos) { - return horizontalPos === "top" ? "text-before-edge" : "middle"; - } - __name(getDominantBaseLine, "getDominantBaseLine"); - function getTextAnchor(verticalPos) { - return verticalPos === "left" ? "start" : verticalPos === "right" ? "end" : "middle"; - } - __name(getTextAnchor, "getTextAnchor"); - function getTextTransformation(data6) { - return `translate(${data6.x}, ${data6.y}) rotate(${data6.rotation || 0})`; - } - __name(getTextTransformation, "getTextTransformation"); - log.debug("Rendering xychart chart\n" + txt); - const svg2 = selectSvgElement(id29); - const group2 = svg2.append("g").attr("class", "main"); - const background = group2.append("rect").attr("width", chartConfig.width).attr("height", chartConfig.height).attr("class", "background"); - configureSvgSize(svg2, chartConfig.height, chartConfig.width, true); - svg2.attr("viewBox", `0 0 ${chartConfig.width} ${chartConfig.height}`); - background.attr("fill", themeConfig.backgroundColor); - db10.setTmpSVGG(svg2.append("g").attr("class", "mermaid-tmp-group")); - const shapes4 = db10.getDrawableElem(); - const groups = {}; - function getGroup(gList) { - let elem = group2; - let prefix = ""; - for (const [i2] of gList.entries()) { - let parent4 = group2; - if (i2 > 0 && groups[prefix]) { - parent4 = groups[prefix]; - } - prefix += gList[i2]; - elem = groups[prefix]; - if (!elem) { - elem = groups[prefix] = parent4.append("g").attr("class", gList[i2]); - } - } - return elem; - } - __name(getGroup, "getGroup"); - for (const shape of shapes4) { - if (shape.data.length === 0) { - continue; - } - const shapeGroup = getGroup(shape.groupTexts); - switch (shape.type) { - case "rect": - shapeGroup.selectAll("rect").data(shape.data).enter().append("rect").attr("x", (data6) => data6.x).attr("y", (data6) => data6.y).attr("width", (data6) => data6.width).attr("height", (data6) => data6.height).attr("fill", (data6) => data6.fill).attr("stroke", (data6) => data6.strokeFill).attr("stroke-width", (data6) => data6.strokeWidth); - break; - case "text": - shapeGroup.selectAll("text").data(shape.data).enter().append("text").attr("x", 0).attr("y", 0).attr("fill", (data6) => data6.fill).attr("font-size", (data6) => data6.fontSize).attr("dominant-baseline", (data6) => getDominantBaseLine(data6.verticalPos)).attr("text-anchor", (data6) => getTextAnchor(data6.horizontalPos)).attr("transform", (data6) => getTextTransformation(data6)).text((data6) => data6.text); - break; - case "path": - shapeGroup.selectAll("path").data(shape.data).enter().append("path").attr("d", (data6) => data6.path).attr("fill", (data6) => data6.fill ? data6.fill : "none").attr("stroke", (data6) => data6.strokeFill).attr("stroke-width", (data6) => data6.strokeWidth); - break; - } - } - }, "draw"); - xychartRenderer_default = { - draw: draw9 - }; - } - }); - - // src/diagrams/xychart/xychartDiagram.ts - var xychartDiagram_exports = {}; - __export(xychartDiagram_exports, { - diagram: () => diagram9 - }); - var diagram9; - var init_xychartDiagram = __esm({ - "src/diagrams/xychart/xychartDiagram.ts"() { - "use strict"; - init_xychart(); - init_xychartDb(); - init_xychartRenderer(); - diagram9 = { - parser: xychart_default, - db: xychartDb_default, - renderer: xychartRenderer_default - }; - } - }); - - // src/diagrams/requirement/parser/requirementDiagram.jison - var parser11, requirementDiagram_default; - var init_requirementDiagram = __esm({ - "src/diagrams/requirement/parser/requirementDiagram.jison"() { - "use strict"; - parser11 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; - return o3; - }, "o"), $V0 = [1, 3], $V1 = [1, 4], $V2 = [1, 5], $V3 = [1, 6], $V4 = [5, 6, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 77, 89, 90], $V5 = [1, 22], $V6 = [2, 7], $V7 = [1, 26], $V8 = [1, 27], $V9 = [1, 28], $Va = [1, 29], $Vb = [1, 33], $Vc = [1, 34], $Vd = [1, 35], $Ve = [1, 36], $Vf = [1, 37], $Vg = [1, 38], $Vh = [1, 24], $Vi = [1, 31], $Vj = [1, 32], $Vk = [1, 30], $Vl = [1, 39], $Vm = [1, 40], $Vn = [5, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 77, 89, 90], $Vo = [1, 61], $Vp = [89, 90], $Vq = [5, 8, 9, 11, 13, 21, 22, 23, 24, 27, 29, 41, 42, 43, 44, 45, 46, 54, 61, 63, 72, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], $Vr = [27, 29], $Vs = [1, 70], $Vt = [1, 71], $Vu = [1, 72], $Vv = [1, 73], $Vw = [1, 74], $Vx = [1, 75], $Vy = [1, 76], $Vz = [1, 83], $VA = [1, 80], $VB = [1, 84], $VC = [1, 85], $VD = [1, 86], $VE = [1, 87], $VF = [1, 88], $VG = [1, 89], $VH = [1, 90], $VI = [1, 91], $VJ = [1, 92], $VK = [5, 8, 9, 11, 13, 21, 22, 23, 24, 27, 41, 42, 43, 44, 45, 46, 54, 72, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], $VL = [63, 64], $VM = [1, 101], $VN = [5, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 76, 77, 89, 90], $VO = [5, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], $VP = [1, 110], $VQ = [1, 106], $VR = [1, 107], $VS = [1, 108], $VT = [1, 109], $VU = [1, 111], $VV = [1, 116], $VW = [1, 117], $VX = [1, 114], $VY = [1, 115]; - var parser24 = { - trace: /* @__PURE__ */ __name(function trace() { - }, "trace"), - yy: {}, - symbols_: { "error": 2, "start": 3, "directive": 4, "NEWLINE": 5, "RD": 6, "diagram": 7, "EOF": 8, "acc_title": 9, "acc_title_value": 10, "acc_descr": 11, "acc_descr_value": 12, "acc_descr_multiline_value": 13, "requirementDef": 14, "elementDef": 15, "relationshipDef": 16, "direction": 17, "styleStatement": 18, "classDefStatement": 19, "classStatement": 20, "direction_tb": 21, "direction_bt": 22, "direction_rl": 23, "direction_lr": 24, "requirementType": 25, "requirementName": 26, "STRUCT_START": 27, "requirementBody": 28, "STYLE_SEPARATOR": 29, "idList": 30, "ID": 31, "COLONSEP": 32, "id": 33, "TEXT": 34, "text": 35, "RISK": 36, "riskLevel": 37, "VERIFYMTHD": 38, "verifyType": 39, "STRUCT_STOP": 40, "REQUIREMENT": 41, "FUNCTIONAL_REQUIREMENT": 42, "INTERFACE_REQUIREMENT": 43, "PERFORMANCE_REQUIREMENT": 44, "PHYSICAL_REQUIREMENT": 45, "DESIGN_CONSTRAINT": 46, "LOW_RISK": 47, "MED_RISK": 48, "HIGH_RISK": 49, "VERIFY_ANALYSIS": 50, "VERIFY_DEMONSTRATION": 51, "VERIFY_INSPECTION": 52, "VERIFY_TEST": 53, "ELEMENT": 54, "elementName": 55, "elementBody": 56, "TYPE": 57, "type": 58, "DOCREF": 59, "ref": 60, "END_ARROW_L": 61, "relationship": 62, "LINE": 63, "END_ARROW_R": 64, "CONTAINS": 65, "COPIES": 66, "DERIVES": 67, "SATISFIES": 68, "VERIFIES": 69, "REFINES": 70, "TRACES": 71, "CLASSDEF": 72, "stylesOpt": 73, "CLASS": 74, "ALPHA": 75, "COMMA": 76, "STYLE": 77, "style": 78, "styleComponent": 79, "NUM": 80, "COLON": 81, "UNIT": 82, "SPACE": 83, "BRKT": 84, "PCT": 85, "MINUS": 86, "LABEL": 87, "SEMICOLON": 88, "unqString": 89, "qString": 90, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 5: "NEWLINE", 6: "RD", 8: "EOF", 9: "acc_title", 10: "acc_title_value", 11: "acc_descr", 12: "acc_descr_value", 13: "acc_descr_multiline_value", 21: "direction_tb", 22: "direction_bt", 23: "direction_rl", 24: "direction_lr", 27: "STRUCT_START", 29: "STYLE_SEPARATOR", 31: "ID", 32: "COLONSEP", 34: "TEXT", 36: "RISK", 38: "VERIFYMTHD", 40: "STRUCT_STOP", 41: "REQUIREMENT", 42: "FUNCTIONAL_REQUIREMENT", 43: "INTERFACE_REQUIREMENT", 44: "PERFORMANCE_REQUIREMENT", 45: "PHYSICAL_REQUIREMENT", 46: "DESIGN_CONSTRAINT", 47: "LOW_RISK", 48: "MED_RISK", 49: "HIGH_RISK", 50: "VERIFY_ANALYSIS", 51: "VERIFY_DEMONSTRATION", 52: "VERIFY_INSPECTION", 53: "VERIFY_TEST", 54: "ELEMENT", 57: "TYPE", 59: "DOCREF", 61: "END_ARROW_L", 63: "LINE", 64: "END_ARROW_R", 65: "CONTAINS", 66: "COPIES", 67: "DERIVES", 68: "SATISFIES", 69: "VERIFIES", 70: "REFINES", 71: "TRACES", 72: "CLASSDEF", 74: "CLASS", 75: "ALPHA", 76: "COMMA", 77: "STYLE", 80: "NUM", 81: "COLON", 82: "UNIT", 83: "SPACE", 84: "BRKT", 85: "PCT", 86: "MINUS", 87: "LABEL", 88: "SEMICOLON", 89: "unqString", 90: "qString" }, - productions_: [0, [3, 3], [3, 2], [3, 4], [4, 2], [4, 2], [4, 1], [7, 0], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [17, 1], [17, 1], [17, 1], [17, 1], [14, 5], [14, 7], [28, 5], [28, 5], [28, 5], [28, 5], [28, 2], [28, 1], [25, 1], [25, 1], [25, 1], [25, 1], [25, 1], [25, 1], [37, 1], [37, 1], [37, 1], [39, 1], [39, 1], [39, 1], [39, 1], [15, 5], [15, 7], [56, 5], [56, 5], [56, 2], [56, 1], [16, 5], [16, 5], [62, 1], [62, 1], [62, 1], [62, 1], [62, 1], [62, 1], [62, 1], [19, 3], [20, 3], [20, 3], [30, 1], [30, 3], [30, 1], [30, 3], [18, 3], [73, 1], [73, 3], [78, 1], [78, 2], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [26, 1], [26, 1], [33, 1], [33, 1], [35, 1], [35, 1], [55, 1], [55, 1], [58, 1], [58, 1], [60, 1], [60, 1]], - performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 4: - this.$ = $$[$0].trim(); - yy.setAccTitle(this.$); - break; - case 5: - case 6: - this.$ = $$[$0].trim(); - yy.setAccDescription(this.$); - break; - case 7: - this.$ = []; - break; - case 17: - yy.setDirection("TB"); - break; - case 18: - yy.setDirection("BT"); - break; - case 19: - yy.setDirection("RL"); - break; - case 20: - yy.setDirection("LR"); - break; - case 21: - yy.addRequirement($$[$0 - 3], $$[$0 - 4]); - break; - case 22: - yy.addRequirement($$[$0 - 5], $$[$0 - 6]); - yy.setClass([$$[$0 - 5]], $$[$0 - 3]); - break; - case 23: - yy.setNewReqId($$[$0 - 2]); - break; - case 24: - yy.setNewReqText($$[$0 - 2]); - break; - case 25: - yy.setNewReqRisk($$[$0 - 2]); - break; - case 26: - yy.setNewReqVerifyMethod($$[$0 - 2]); - break; - case 29: - this.$ = yy.RequirementType.REQUIREMENT; - break; - case 30: - this.$ = yy.RequirementType.FUNCTIONAL_REQUIREMENT; - break; - case 31: - this.$ = yy.RequirementType.INTERFACE_REQUIREMENT; - break; - case 32: - this.$ = yy.RequirementType.PERFORMANCE_REQUIREMENT; - break; - case 33: - this.$ = yy.RequirementType.PHYSICAL_REQUIREMENT; - break; - case 34: - this.$ = yy.RequirementType.DESIGN_CONSTRAINT; - break; - case 35: - this.$ = yy.RiskLevel.LOW_RISK; - break; - case 36: - this.$ = yy.RiskLevel.MED_RISK; - break; - case 37: - this.$ = yy.RiskLevel.HIGH_RISK; - break; - case 38: - this.$ = yy.VerifyType.VERIFY_ANALYSIS; - break; - case 39: - this.$ = yy.VerifyType.VERIFY_DEMONSTRATION; - break; - case 40: - this.$ = yy.VerifyType.VERIFY_INSPECTION; - break; - case 41: - this.$ = yy.VerifyType.VERIFY_TEST; - break; - case 42: - yy.addElement($$[$0 - 3]); - break; - case 43: - yy.addElement($$[$0 - 5]); - yy.setClass([$$[$0 - 5]], $$[$0 - 3]); - break; - case 44: - yy.setNewElementType($$[$0 - 2]); - break; - case 45: - yy.setNewElementDocRef($$[$0 - 2]); - break; - case 48: - yy.addRelationship($$[$0 - 2], $$[$0], $$[$0 - 4]); - break; - case 49: - yy.addRelationship($$[$0 - 2], $$[$0 - 4], $$[$0]); - break; - case 50: - this.$ = yy.Relationships.CONTAINS; - break; - case 51: - this.$ = yy.Relationships.COPIES; - break; - case 52: - this.$ = yy.Relationships.DERIVES; - break; - case 53: - this.$ = yy.Relationships.SATISFIES; - break; - case 54: - this.$ = yy.Relationships.VERIFIES; - break; - case 55: - this.$ = yy.Relationships.REFINES; - break; - case 56: - this.$ = yy.Relationships.TRACES; - break; - case 57: - this.$ = $$[$0 - 2]; - yy.defineClass($$[$0 - 1], $$[$0]); - break; - case 58: - yy.setClass($$[$0 - 1], $$[$0]); - break; - case 59: - yy.setClass([$$[$0 - 2]], $$[$0]); - break; - case 60: - case 62: - this.$ = [$$[$0]]; - break; - case 61: - case 63: - this.$ = $$[$0 - 2].concat([$$[$0]]); - break; - case 64: - this.$ = $$[$0 - 2]; - yy.setCssStyle($$[$0 - 1], $$[$0]); - break; - case 65: - this.$ = [$$[$0]]; - break; - case 66: - $$[$0 - 2].push($$[$0]); - this.$ = $$[$0 - 2]; - break; - case 68: - this.$ = $$[$0 - 1] + $$[$0]; - break; - } - }, "anonymous"), - table: [{ 3: 1, 4: 2, 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 1: [3] }, { 3: 8, 4: 2, 5: [1, 7], 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 5: [1, 9] }, { 10: [1, 10] }, { 12: [1, 11] }, o2($V4, [2, 6]), { 3: 12, 4: 2, 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 1: [2, 2] }, { 4: 17, 5: $V5, 7: 13, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, o2($V4, [2, 4]), o2($V4, [2, 5]), { 1: [2, 1] }, { 8: [1, 41] }, { 4: 17, 5: $V5, 7: 42, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 43, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 44, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 45, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 46, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 47, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 48, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 49, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 50, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 26: 51, 89: [1, 52], 90: [1, 53] }, { 55: 54, 89: [1, 55], 90: [1, 56] }, { 29: [1, 59], 61: [1, 57], 63: [1, 58] }, o2($Vn, [2, 17]), o2($Vn, [2, 18]), o2($Vn, [2, 19]), o2($Vn, [2, 20]), { 30: 60, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, { 30: 63, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, { 30: 64, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, o2($Vp, [2, 29]), o2($Vp, [2, 30]), o2($Vp, [2, 31]), o2($Vp, [2, 32]), o2($Vp, [2, 33]), o2($Vp, [2, 34]), o2($Vq, [2, 81]), o2($Vq, [2, 82]), { 1: [2, 3] }, { 8: [2, 8] }, { 8: [2, 9] }, { 8: [2, 10] }, { 8: [2, 11] }, { 8: [2, 12] }, { 8: [2, 13] }, { 8: [2, 14] }, { 8: [2, 15] }, { 8: [2, 16] }, { 27: [1, 65], 29: [1, 66] }, o2($Vr, [2, 79]), o2($Vr, [2, 80]), { 27: [1, 67], 29: [1, 68] }, o2($Vr, [2, 85]), o2($Vr, [2, 86]), { 62: 69, 65: $Vs, 66: $Vt, 67: $Vu, 68: $Vv, 69: $Vw, 70: $Vx, 71: $Vy }, { 62: 77, 65: $Vs, 66: $Vt, 67: $Vu, 68: $Vv, 69: $Vw, 70: $Vx, 71: $Vy }, { 30: 78, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, { 73: 79, 75: $Vz, 76: $VA, 78: 81, 79: 82, 80: $VB, 81: $VC, 82: $VD, 83: $VE, 84: $VF, 85: $VG, 86: $VH, 87: $VI, 88: $VJ }, o2($VK, [2, 60]), o2($VK, [2, 62]), { 73: 93, 75: $Vz, 76: $VA, 78: 81, 79: 82, 80: $VB, 81: $VC, 82: $VD, 83: $VE, 84: $VF, 85: $VG, 86: $VH, 87: $VI, 88: $VJ }, { 30: 94, 33: 62, 75: $Vo, 76: $VA, 89: $Vl, 90: $Vm }, { 5: [1, 95] }, { 30: 96, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, { 5: [1, 97] }, { 30: 98, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, { 63: [1, 99] }, o2($VL, [2, 50]), o2($VL, [2, 51]), o2($VL, [2, 52]), o2($VL, [2, 53]), o2($VL, [2, 54]), o2($VL, [2, 55]), o2($VL, [2, 56]), { 64: [1, 100] }, o2($Vn, [2, 59], { 76: $VA }), o2($Vn, [2, 64], { 76: $VM }), { 33: 103, 75: [1, 102], 89: $Vl, 90: $Vm }, o2($VN, [2, 65], { 79: 104, 75: $Vz, 80: $VB, 81: $VC, 82: $VD, 83: $VE, 84: $VF, 85: $VG, 86: $VH, 87: $VI, 88: $VJ }), o2($VO, [2, 67]), o2($VO, [2, 69]), o2($VO, [2, 70]), o2($VO, [2, 71]), o2($VO, [2, 72]), o2($VO, [2, 73]), o2($VO, [2, 74]), o2($VO, [2, 75]), o2($VO, [2, 76]), o2($VO, [2, 77]), o2($VO, [2, 78]), o2($Vn, [2, 57], { 76: $VM }), o2($Vn, [2, 58], { 76: $VA }), { 5: $VP, 28: 105, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 27: [1, 112], 76: $VA }, { 5: $VV, 40: $VW, 56: 113, 57: $VX, 59: $VY }, { 27: [1, 118], 76: $VA }, { 33: 119, 89: $Vl, 90: $Vm }, { 33: 120, 89: $Vl, 90: $Vm }, { 75: $Vz, 78: 121, 79: 82, 80: $VB, 81: $VC, 82: $VD, 83: $VE, 84: $VF, 85: $VG, 86: $VH, 87: $VI, 88: $VJ }, o2($VK, [2, 61]), o2($VK, [2, 63]), o2($VO, [2, 68]), o2($Vn, [2, 21]), { 32: [1, 122] }, { 32: [1, 123] }, { 32: [1, 124] }, { 32: [1, 125] }, { 5: $VP, 28: 126, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, o2($Vn, [2, 28]), { 5: [1, 127] }, o2($Vn, [2, 42]), { 32: [1, 128] }, { 32: [1, 129] }, { 5: $VV, 40: $VW, 56: 130, 57: $VX, 59: $VY }, o2($Vn, [2, 47]), { 5: [1, 131] }, o2($Vn, [2, 48]), o2($Vn, [2, 49]), o2($VN, [2, 66], { 79: 104, 75: $Vz, 80: $VB, 81: $VC, 82: $VD, 83: $VE, 84: $VF, 85: $VG, 86: $VH, 87: $VI, 88: $VJ }), { 33: 132, 89: $Vl, 90: $Vm }, { 35: 133, 89: [1, 134], 90: [1, 135] }, { 37: 136, 47: [1, 137], 48: [1, 138], 49: [1, 139] }, { 39: 140, 50: [1, 141], 51: [1, 142], 52: [1, 143], 53: [1, 144] }, o2($Vn, [2, 27]), { 5: $VP, 28: 145, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 58: 146, 89: [1, 147], 90: [1, 148] }, { 60: 149, 89: [1, 150], 90: [1, 151] }, o2($Vn, [2, 46]), { 5: $VV, 40: $VW, 56: 152, 57: $VX, 59: $VY }, { 5: [1, 153] }, { 5: [1, 154] }, { 5: [2, 83] }, { 5: [2, 84] }, { 5: [1, 155] }, { 5: [2, 35] }, { 5: [2, 36] }, { 5: [2, 37] }, { 5: [1, 156] }, { 5: [2, 38] }, { 5: [2, 39] }, { 5: [2, 40] }, { 5: [2, 41] }, o2($Vn, [2, 22]), { 5: [1, 157] }, { 5: [2, 87] }, { 5: [2, 88] }, { 5: [1, 158] }, { 5: [2, 89] }, { 5: [2, 90] }, o2($Vn, [2, 43]), { 5: $VP, 28: 159, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 5: $VP, 28: 160, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 5: $VP, 28: 161, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 5: $VP, 28: 162, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 5: $VV, 40: $VW, 56: 163, 57: $VX, 59: $VY }, { 5: $VV, 40: $VW, 56: 164, 57: $VX, 59: $VY }, o2($Vn, [2, 23]), o2($Vn, [2, 24]), o2($Vn, [2, 25]), o2($Vn, [2, 26]), o2($Vn, [2, 44]), o2($Vn, [2, 45])], - defaultActions: { 8: [2, 2], 12: [2, 1], 41: [2, 3], 42: [2, 8], 43: [2, 9], 44: [2, 10], 45: [2, 11], 46: [2, 12], 47: [2, 13], 48: [2, 14], 49: [2, 15], 50: [2, 16], 134: [2, 83], 135: [2, 84], 137: [2, 35], 138: [2, 36], 139: [2, 37], 141: [2, 38], 142: [2, 39], 143: [2, 40], 144: [2, 41], 147: [2, 87], 148: [2, 88], 150: [2, 89], 151: [2, 90] }, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); - } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; - } - }, "parseError"), - parse: /* @__PURE__ */ __name(function parse7(input) { - var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; - var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k2 in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { - sharedState.yy[k2] = this.yy[k2]; + (/* @__PURE__ */ __name((function webpackUniversalModuleDefinition(root3, factory) { + if (typeof exports2 === "object" && typeof module2 === "object") + module2.exports = factory(); + else if (typeof define === "function" && define.amd) + define([], factory); + else if (typeof exports2 === "object") + exports2["layoutBase"] = factory(); + else + root3["layoutBase"] = factory(); + }), "webpackUniversalModuleDefinition"))(exports2, function() { + return ( + /******/ + (function(modules2) { + var installedModules = {}; + function __webpack_require__(moduleId) { + if (installedModules[moduleId]) { + return installedModules[moduleId].exports; } + var module3 = installedModules[moduleId] = { + /******/ + i: moduleId, + /******/ + l: false, + /******/ + exports: {} + /******/ + }; + modules2[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); + module3.l = true; + return module3.exports; } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; - sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; - } - var yyloc = lexer3.yylloc; - lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n2) { - stack.length = stack.length - 2 * n2; - vstack.length = vstack.length - n2; - lstack.length = lstack.length - n2; - } - __name(popStack, "popStack"); - function lex() { - var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; - if (typeof token2 !== "number") { - if (token2 instanceof Array) { - tstack = token2; - token2 = tstack.pop(); - } - token2 = self2.symbols_[token2] || token2; + __name(__webpack_require__, "__webpack_require__"); + __webpack_require__.m = modules2; + __webpack_require__.c = installedModules; + __webpack_require__.i = function(value2) { + return value2; + }; + __webpack_require__.d = function(exports3, name, getter) { + if (!__webpack_require__.o(exports3, name)) { + Object.defineProperty(exports3, name, { + /******/ + configurable: false, + /******/ + enumerable: true, + /******/ + get: getter + /******/ + }); } - return token2; - } - __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; - while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state4] && table[state4][symbol]; + }; + __webpack_require__.n = function(module3) { + var getter = module3 && module3.__esModule ? ( + /******/ + /* @__PURE__ */ __name(function getDefault() { + return module3["default"]; + }, "getDefault") + ) : ( + /******/ + /* @__PURE__ */ __name(function getModuleExports() { + return module3; + }, "getModuleExports") + ); + __webpack_require__.d(getter, "a", getter); + return getter; + }; + __webpack_require__.o = function(object3, property2) { + return Object.prototype.hasOwnProperty.call(object3, property2); + }; + __webpack_require__.p = ""; + return __webpack_require__(__webpack_require__.s = 26); + })([ + /* 0 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function LayoutConstants() { } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p3 in table[state4]) { - if (this.terminals_[p3] && p3 > TERROR) { - expected.push("'" + this.terminals_[p3] + "'"); - } - } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); - } - this.parseError(errStr, { - text: lexer3.match, - token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, - loc: yyloc, - expected - }); + __name(LayoutConstants, "LayoutConstants"); + LayoutConstants.QUALITY = 1; + LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false; + LayoutConstants.DEFAULT_INCREMENTAL = false; + LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true; + LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false; + LayoutConstants.DEFAULT_ANIMATION_PERIOD = 50; + LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false; + LayoutConstants.DEFAULT_GRAPH_MARGIN = 15; + LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false; + LayoutConstants.SIMPLE_NODE_SIZE = 40; + LayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2; + LayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40; + LayoutConstants.MIN_EDGE_LENGTH = 1; + LayoutConstants.WORLD_BOUNDARY = 1e6; + LayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1e3; + LayoutConstants.WORLD_CENTER_X = 1200; + LayoutConstants.WORLD_CENTER_Y = 900; + module3.exports = LayoutConstants; + }), + /* 1 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var LGraphObject = __webpack_require__(2); + var IGeometry = __webpack_require__(8); + var IMath = __webpack_require__(9); + function LEdge(source, target, vEdge) { + LGraphObject.call(this, vEdge); + this.isOverlapingSourceAndTarget = false; + this.vGraphObject = vEdge; + this.bendpoints = []; + this.source = source; + this.target = target; } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); + __name(LEdge, "LEdge"); + LEdge.prototype = Object.create(LGraphObject.prototype); + for (var prop in LGraphObject) { + LEdge[prop] = LGraphObject[prop]; } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; + LEdge.prototype.getSource = function() { + return this.source; + }; + LEdge.prototype.getTarget = function() { + return this.target; + }; + LEdge.prototype.isInterGraph = function() { + return this.isInterGraph; + }; + LEdge.prototype.getLength = function() { + return this.length; + }; + LEdge.prototype.isOverlapingSourceAndTarget = function() { + return this.isOverlapingSourceAndTarget; + }; + LEdge.prototype.getBendpoints = function() { + return this.bendpoints; + }; + LEdge.prototype.getLca = function() { + return this.lca; + }; + LEdge.prototype.getSourceInLca = function() { + return this.sourceInLca; + }; + LEdge.prototype.getTargetInLca = function() { + return this.targetInLca; + }; + LEdge.prototype.getOtherEnd = function(node2) { + if (this.source === node2) { + return this.target; + } else if (this.target === node2) { + return this.source; + } else { + throw "Node is not incident with this edge"; + } + }; + LEdge.prototype.getOtherEndInGraph = function(node2, graph) { + var otherEnd = this.getOtherEnd(node2); + var root3 = graph.getGraphManager().getRoot(); + while (true) { + if (otherEnd.getOwner() == graph) { + return otherEnd; } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; + if (otherEnd.getOwner() == root3) { + break; } - r2 = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r2 !== "undefined") { - return r2; + otherEnd = otherEnd.getOwner().getParent(); + } + return null; + }; + LEdge.prototype.updateLength = function() { + var clipPointCoordinates = new Array(4); + this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates); + if (!this.isOverlapingSourceAndTarget) { + this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2]; + this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3]; + if (Math.abs(this.lengthX) < 1) { + this.lengthX = IMath.sign(this.lengthX); } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); + if (Math.abs(this.lengthY) < 1) { + this.lengthY = IMath.sign(this.lengthY); } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState2); - break; - case 3: - return true; - } - } - return true; - }, "parse") - }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { - EOF: 1, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str2, hash); - } else { - throw new Error(str2); - } - }, "parseError"), - // resets the lexer, sets new input - setInput: /* @__PURE__ */ __name(function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 + this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); + } }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; - } - this.offset = 0; - return this; - }, "setInput"), - // consumes and returns one char from the input - input: /* @__PURE__ */ __name(function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } - this._input = this._input.slice(1); - return ch; - }, "input"), - // unshifts one char (or a string) into the input - unput: /* @__PURE__ */ __name(function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r2 = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + LEdge.prototype.updateLengthSimple = function() { + this.lengthX = this.target.getCenterX() - this.source.getCenterX(); + this.lengthY = this.target.getCenterY() - this.source.getCenterY(); + if (Math.abs(this.lengthX) < 1) { + this.lengthX = IMath.sign(this.lengthX); + } + if (Math.abs(this.lengthY) < 1) { + this.lengthY = IMath.sign(this.lengthY); + } + this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); }; - if (this.options.ranges) { - this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + module3.exports = LEdge; + }), + /* 2 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function LGraphObject(vGraphObject) { + this.vGraphObject = vGraphObject; } - this.yyleng = this.yytext.length; - return this; - }, "unput"), - // When called from action, caches matched text and appends it on next action - more: /* @__PURE__ */ __name(function() { - this._more = true; - return this; - }, "more"), - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: /* @__PURE__ */ __name(function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); + __name(LGraphObject, "LGraphObject"); + module3.exports = LGraphObject; + }), + /* 3 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var LGraphObject = __webpack_require__(2); + var Integer = __webpack_require__(10); + var RectangleD = __webpack_require__(13); + var LayoutConstants = __webpack_require__(0); + var RandomSeed = __webpack_require__(16); + var PointD = __webpack_require__(4); + function LNode(gm, loc, size4, vNode) { + if (size4 == null && vNode == null) { + vNode = loc; + } + LGraphObject.call(this, vNode); + if (gm.graphManager != null) gm = gm.graphManager; + this.estimatedSize = Integer.MIN_VALUE; + this.inclusionTreeDepth = Integer.MAX_VALUE; + this.vGraphObject = vNode; + this.edges = []; + this.graphManager = gm; + if (size4 != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size4.width, size4.height); + else this.rect = new RectangleD(); } - return this; - }, "reject"), - // retain first n characters of the match - less: /* @__PURE__ */ __name(function(n2) { - this.unput(this.match.slice(n2)); - }, "less"), - // displays already matched input, i.e. for error messages - pastInput: /* @__PURE__ */ __name(function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, "pastInput"), - // displays upcoming input, i.e. for error messages - upcomingInput: /* @__PURE__ */ __name(function() { - var next3 = this.match; - if (next3.length < 20) { - next3 += this._input.substr(0, 20 - next3.length); + __name(LNode, "LNode"); + LNode.prototype = Object.create(LGraphObject.prototype); + for (var prop in LGraphObject) { + LNode[prop] = LGraphObject[prop]; } - return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, "upcomingInput"), - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: /* @__PURE__ */ __name(function() { - var pre = this.pastInput(); - var c3 = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c3 + "^"; - }, "showPosition"), - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { - var token2, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); + LNode.prototype.getEdges = function() { + return this.edges; + }; + LNode.prototype.getChild = function() { + return this.child; + }; + LNode.prototype.getOwner = function() { + return this.owner; + }; + LNode.prototype.getWidth = function() { + return this.rect.width; + }; + LNode.prototype.setWidth = function(width3) { + this.rect.width = width3; + }; + LNode.prototype.getHeight = function() { + return this.rect.height; + }; + LNode.prototype.setHeight = function(height2) { + this.rect.height = height2; + }; + LNode.prototype.getCenterX = function() { + return this.rect.x + this.rect.width / 2; + }; + LNode.prototype.getCenterY = function() { + return this.rect.y + this.rect.height / 2; + }; + LNode.prototype.getCenter = function() { + return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2); + }; + LNode.prototype.getLocation = function() { + return new PointD(this.rect.x, this.rect.y); + }; + LNode.prototype.getRect = function() { + return this.rect; + }; + LNode.prototype.getDiagonal = function() { + return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height); + }; + LNode.prototype.getHalfTheDiagonal = function() { + return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2; + }; + LNode.prototype.setRect = function(upperLeft, dimension) { + this.rect.x = upperLeft.x; + this.rect.y = upperLeft.y; + this.rect.width = dimension.width; + this.rect.height = dimension.height; + }; + LNode.prototype.setCenter = function(cx, cy) { + this.rect.x = cx - this.rect.width / 2; + this.rect.y = cy - this.rect.height / 2; + }; + LNode.prototype.setLocation = function(x5, y6) { + this.rect.x = x5; + this.rect.y = y6; + }; + LNode.prototype.moveBy = function(dx, dy) { + this.rect.x += dx; + this.rect.y += dy; + }; + LNode.prototype.getEdgeListToNode = function(to) { + var edgeList2 = []; + var edge; + var self2 = this; + self2.edges.forEach(function(edge2) { + if (edge2.target == to) { + if (edge2.source != self2) throw "Incorrect edge source!"; + edgeList2.push(edge2); + } + }); + return edgeList2; + }; + LNode.prototype.getEdgesBetween = function(other) { + var edgeList2 = []; + var edge; + var self2 = this; + self2.edges.forEach(function(edge2) { + if (!(edge2.source == self2 || edge2.target == self2)) throw "Incorrect edge source and/or target"; + if (edge2.target == other || edge2.source == other) { + edgeList2.push(edge2); + } + }); + return edgeList2; + }; + LNode.prototype.getNeighborsList = function() { + var neighbors = /* @__PURE__ */ new Set(); + var self2 = this; + self2.edges.forEach(function(edge) { + if (edge.source == self2) { + neighbors.add(edge.target); + } else { + if (edge.target != self2) { + throw "Incorrect incidency!"; + } + neighbors.add(edge.source); + } + }); + return neighbors; + }; + LNode.prototype.withChildren = function() { + var withNeighborsList = /* @__PURE__ */ new Set(); + var childNode; + var children2; + withNeighborsList.add(this); + if (this.child != null) { + var nodes5 = this.child.getNodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + childNode = nodes5[i2]; + children2 = childNode.withChildren(); + children2.forEach(function(node2) { + withNeighborsList.add(node2); + }); + } } - } - lines = match2[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length + return withNeighborsList; }; - this.yytext += match2[0]; - this.match += match2[0]; - this.matches = match2; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match2[0].length); - this.matched += match2[0]; - token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token2) { - return token2; - } else if (this._backtrack) { - for (var k2 in backup) { - this[k2] = backup[k2]; + LNode.prototype.getNoOfChildren = function() { + var noOfChildren = 0; + var childNode; + if (this.child == null) { + noOfChildren = 1; + } else { + var nodes5 = this.child.getNodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + childNode = nodes5[i2]; + noOfChildren += childNode.getNoOfChildren(); + } + } + if (noOfChildren == 0) { + noOfChildren = 1; + } + return noOfChildren; + }; + LNode.prototype.getEstimatedSize = function() { + if (this.estimatedSize == Integer.MIN_VALUE) { + throw "assert failed"; + } + return this.estimatedSize; + }; + LNode.prototype.calcEstimatedSize = function() { + if (this.child == null) { + return this.estimatedSize = (this.rect.width + this.rect.height) / 2; + } else { + this.estimatedSize = this.child.calcEstimatedSize(); + this.rect.width = this.estimatedSize; + this.rect.height = this.estimatedSize; + return this.estimatedSize; + } + }; + LNode.prototype.scatter = function() { + var randomCenterX; + var randomCenterY; + var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY; + var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY; + randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX; + var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY; + var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY; + randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY; + this.rect.x = randomCenterX; + this.rect.y = randomCenterY; + }; + LNode.prototype.updateBounds = function() { + if (this.getChild() == null) { + throw "assert failed"; + } + if (this.getChild().getNodes().length != 0) { + var childGraph = this.getChild(); + childGraph.updateBounds(true); + this.rect.x = childGraph.getLeft(); + this.rect.y = childGraph.getTop(); + this.setWidth(childGraph.getRight() - childGraph.getLeft()); + this.setHeight(childGraph.getBottom() - childGraph.getTop()); + if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) { + var width3 = childGraph.getRight() - childGraph.getLeft(); + var height2 = childGraph.getBottom() - childGraph.getTop(); + if (this.labelWidth > width3) { + this.rect.x -= (this.labelWidth - width3) / 2; + this.setWidth(this.labelWidth); + } + if (this.labelHeight > height2) { + if (this.labelPos == "center") { + this.rect.y -= (this.labelHeight - height2) / 2; + } else if (this.labelPos == "top") { + this.rect.y -= this.labelHeight - height2; + } + this.setHeight(this.labelHeight); + } + } + } + }; + LNode.prototype.getInclusionTreeDepth = function() { + if (this.inclusionTreeDepth == Integer.MAX_VALUE) { + throw "assert failed"; + } + return this.inclusionTreeDepth; + }; + LNode.prototype.transform = function(trans) { + var left3 = this.rect.x; + if (left3 > LayoutConstants.WORLD_BOUNDARY) { + left3 = LayoutConstants.WORLD_BOUNDARY; + } else if (left3 < -LayoutConstants.WORLD_BOUNDARY) { + left3 = -LayoutConstants.WORLD_BOUNDARY; + } + var top2 = this.rect.y; + if (top2 > LayoutConstants.WORLD_BOUNDARY) { + top2 = LayoutConstants.WORLD_BOUNDARY; + } else if (top2 < -LayoutConstants.WORLD_BOUNDARY) { + top2 = -LayoutConstants.WORLD_BOUNDARY; + } + var leftTop = new PointD(left3, top2); + var vLeftTop = trans.inverseTransformPoint(leftTop); + this.setLocation(vLeftTop.x, vLeftTop.y); + }; + LNode.prototype.getLeft = function() { + return this.rect.x; + }; + LNode.prototype.getRight = function() { + return this.rect.x + this.rect.width; + }; + LNode.prototype.getTop = function() { + return this.rect.y; + }; + LNode.prototype.getBottom = function() { + return this.rect.y + this.rect.height; + }; + LNode.prototype.getParent = function() { + if (this.owner == null) { + return null; + } + return this.owner.getParent(); + }; + module3.exports = LNode; + }), + /* 4 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function PointD(x5, y6) { + if (x5 == null && y6 == null) { + this.x = 0; + this.y = 0; + } else { + this.x = x5; + this.y = y6; } - return false; - } - return false; - }, "test_match"), - // return next match in input - next: /* @__PURE__ */ __name(function() { - if (this.done) { - return this.EOF; } - if (!this._input) { - this.done = true; + __name(PointD, "PointD"); + PointD.prototype.getX = function() { + return this.x; + }; + PointD.prototype.getY = function() { + return this.y; + }; + PointD.prototype.setX = function(x5) { + this.x = x5; + }; + PointD.prototype.setY = function(y6) { + this.y = y6; + }; + PointD.prototype.getDifference = function(pt) { + return new DimensionD(this.x - pt.x, this.y - pt.y); + }; + PointD.prototype.getCopy = function() { + return new PointD(this.x, this.y); + }; + PointD.prototype.translate = function(dim) { + this.x += dim.width; + this.y += dim.height; + return this; + }; + module3.exports = PointD; + }), + /* 5 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var LGraphObject = __webpack_require__(2); + var Integer = __webpack_require__(10); + var LayoutConstants = __webpack_require__(0); + var LGraphManager = __webpack_require__(6); + var LNode = __webpack_require__(3); + var LEdge = __webpack_require__(1); + var RectangleD = __webpack_require__(13); + var Point3 = __webpack_require__(12); + var LinkedList = __webpack_require__(11); + function LGraph(parent4, obj2, vGraph) { + LGraphObject.call(this, vGraph); + this.estimatedSize = Integer.MIN_VALUE; + this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN; + this.edges = []; + this.nodes = []; + this.isConnected = false; + this.parent = parent4; + if (obj2 != null && obj2 instanceof LGraphManager) { + this.graphManager = obj2; + } else if (obj2 != null && obj2 instanceof Layout) { + this.graphManager = obj2.graphManager; + } } - var token2, match2, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; + __name(LGraph, "LGraph"); + LGraph.prototype = Object.create(LGraphObject.prototype); + for (var prop in LGraphObject) { + LGraph[prop] = LGraphObject[prop]; } - var rules = this._currentRules(); - for (var i2 = 0; i2 < rules.length; i2++) { - tempMatch = this._input.match(this.rules[rules[i2]]); - if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { - match2 = tempMatch; - index = i2; - if (this.options.backtrack_lexer) { - token2 = this.test_match(tempMatch, rules[i2]); - if (token2 !== false) { - return token2; - } else if (this._backtrack) { - match2 = false; - continue; + LGraph.prototype.getNodes = function() { + return this.nodes; + }; + LGraph.prototype.getEdges = function() { + return this.edges; + }; + LGraph.prototype.getGraphManager = function() { + return this.graphManager; + }; + LGraph.prototype.getParent = function() { + return this.parent; + }; + LGraph.prototype.getLeft = function() { + return this.left; + }; + LGraph.prototype.getRight = function() { + return this.right; + }; + LGraph.prototype.getTop = function() { + return this.top; + }; + LGraph.prototype.getBottom = function() { + return this.bottom; + }; + LGraph.prototype.isConnected = function() { + return this.isConnected; + }; + LGraph.prototype.add = function(obj1, sourceNode, targetNode) { + if (sourceNode == null && targetNode == null) { + var newNode = obj1; + if (this.graphManager == null) { + throw "Graph has no graph mgr!"; + } + if (this.getNodes().indexOf(newNode) > -1) { + throw "Node already in graph!"; + } + newNode.owner = this; + this.getNodes().push(newNode); + return newNode; + } else { + var newEdge = obj1; + if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) { + throw "Source or target not in graph!"; + } + if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) { + throw "Both owners must be this graph!"; + } + if (sourceNode.owner != targetNode.owner) { + return null; + } + newEdge.source = sourceNode; + newEdge.target = targetNode; + newEdge.isInterGraph = false; + this.getEdges().push(newEdge); + sourceNode.edges.push(newEdge); + if (targetNode != sourceNode) { + targetNode.edges.push(newEdge); + } + return newEdge; + } + }; + LGraph.prototype.remove = function(obj) { + var node2 = obj; + if (obj instanceof LNode) { + if (node2 == null) { + throw "Node is null!"; + } + if (!(node2.owner != null && node2.owner == this)) { + throw "Owner graph is invalid!"; + } + if (this.graphManager == null) { + throw "Owner graph manager is invalid!"; + } + var edgesToBeRemoved = node2.edges.slice(); + var edge; + var s2 = edgesToBeRemoved.length; + for (var i2 = 0; i2 < s2; i2++) { + edge = edgesToBeRemoved[i2]; + if (edge.isInterGraph) { + this.graphManager.remove(edge); } else { - return false; + edge.source.owner.remove(edge); } - } else if (!this.options.flex) { - break; + } + var index = this.nodes.indexOf(node2); + if (index == -1) { + throw "Node not in owner node list!"; + } + this.nodes.splice(index, 1); + } else if (obj instanceof LEdge) { + var edge = obj; + if (edge == null) { + throw "Edge is null!"; + } + if (!(edge.source != null && edge.target != null)) { + throw "Source and/or target is null!"; + } + if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) { + throw "Source and/or target owner is invalid!"; + } + var sourceIndex = edge.source.edges.indexOf(edge); + var targetIndex = edge.target.edges.indexOf(edge); + if (!(sourceIndex > -1 && targetIndex > -1)) { + throw "Source and/or target doesn't know this edge!"; + } + edge.source.edges.splice(sourceIndex, 1); + if (edge.target != edge.source) { + edge.target.edges.splice(targetIndex, 1); + } + var index = edge.source.owner.getEdges().indexOf(edge); + if (index == -1) { + throw "Not in owner's edge list!"; + } + edge.source.owner.getEdges().splice(index, 1); + } + }; + LGraph.prototype.updateLeftTop = function() { + var top2 = Integer.MAX_VALUE; + var left3 = Integer.MAX_VALUE; + var nodeTop; + var nodeLeft; + var margin; + var nodes5 = this.getNodes(); + var s2 = nodes5.length; + for (var i2 = 0; i2 < s2; i2++) { + var lNode = nodes5[i2]; + nodeTop = lNode.getTop(); + nodeLeft = lNode.getLeft(); + if (top2 > nodeTop) { + top2 = nodeTop; + } + if (left3 > nodeLeft) { + left3 = nodeLeft; + } + } + if (top2 == Integer.MAX_VALUE) { + return null; + } + if (nodes5[0].getParent().paddingLeft != void 0) { + margin = nodes5[0].getParent().paddingLeft; + } else { + margin = this.margin; + } + this.left = left3 - margin; + this.top = top2 - margin; + return new Point3(this.left, this.top); + }; + LGraph.prototype.updateBounds = function(recursive) { + var left3 = Integer.MAX_VALUE; + var right3 = -Integer.MAX_VALUE; + var top2 = Integer.MAX_VALUE; + var bottom2 = -Integer.MAX_VALUE; + var nodeLeft; + var nodeRight; + var nodeTop; + var nodeBottom; + var margin; + var nodes5 = this.nodes; + var s2 = nodes5.length; + for (var i2 = 0; i2 < s2; i2++) { + var lNode = nodes5[i2]; + if (recursive && lNode.child != null) { + lNode.updateBounds(); + } + nodeLeft = lNode.getLeft(); + nodeRight = lNode.getRight(); + nodeTop = lNode.getTop(); + nodeBottom = lNode.getBottom(); + if (left3 > nodeLeft) { + left3 = nodeLeft; + } + if (right3 < nodeRight) { + right3 = nodeRight; + } + if (top2 > nodeTop) { + top2 = nodeTop; + } + if (bottom2 < nodeBottom) { + bottom2 = nodeBottom; + } + } + var boundingRect = new RectangleD(left3, top2, right3 - left3, bottom2 - top2); + if (left3 == Integer.MAX_VALUE) { + this.left = this.parent.getLeft(); + this.right = this.parent.getRight(); + this.top = this.parent.getTop(); + this.bottom = this.parent.getBottom(); + } + if (nodes5[0].getParent().paddingLeft != void 0) { + margin = nodes5[0].getParent().paddingLeft; + } else { + margin = this.margin; + } + this.left = boundingRect.x - margin; + this.right = boundingRect.x + boundingRect.width + margin; + this.top = boundingRect.y - margin; + this.bottom = boundingRect.y + boundingRect.height + margin; + }; + LGraph.calculateBounds = function(nodes5) { + var left3 = Integer.MAX_VALUE; + var right3 = -Integer.MAX_VALUE; + var top2 = Integer.MAX_VALUE; + var bottom2 = -Integer.MAX_VALUE; + var nodeLeft; + var nodeRight; + var nodeTop; + var nodeBottom; + var s2 = nodes5.length; + for (var i2 = 0; i2 < s2; i2++) { + var lNode = nodes5[i2]; + nodeLeft = lNode.getLeft(); + nodeRight = lNode.getRight(); + nodeTop = lNode.getTop(); + nodeBottom = lNode.getBottom(); + if (left3 > nodeLeft) { + left3 = nodeLeft; + } + if (right3 < nodeRight) { + right3 = nodeRight; + } + if (top2 > nodeTop) { + top2 = nodeTop; + } + if (bottom2 < nodeBottom) { + bottom2 = nodeBottom; + } + } + var boundingRect = new RectangleD(left3, top2, right3 - left3, bottom2 - top2); + return boundingRect; + }; + LGraph.prototype.getInclusionTreeDepth = function() { + if (this == this.graphManager.getRoot()) { + return 1; + } else { + return this.parent.getInclusionTreeDepth(); + } + }; + LGraph.prototype.getEstimatedSize = function() { + if (this.estimatedSize == Integer.MIN_VALUE) { + throw "assert failed"; + } + return this.estimatedSize; + }; + LGraph.prototype.calcEstimatedSize = function() { + var size4 = 0; + var nodes5 = this.nodes; + var s2 = nodes5.length; + for (var i2 = 0; i2 < s2; i2++) { + var lNode = nodes5[i2]; + size4 += lNode.calcEstimatedSize(); + } + if (size4 == 0) { + this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE; + } else { + this.estimatedSize = size4 / Math.sqrt(this.nodes.length); + } + return this.estimatedSize; + }; + LGraph.prototype.updateConnected = function() { + var self2 = this; + if (this.nodes.length == 0) { + this.isConnected = true; + return; + } + var queue = new LinkedList(); + var visited = /* @__PURE__ */ new Set(); + var currentNode = this.nodes[0]; + var neighborEdges; + var currentNeighbor; + var childrenOfNode = currentNode.withChildren(); + childrenOfNode.forEach(function(node2) { + queue.push(node2); + visited.add(node2); + }); + while (queue.length !== 0) { + currentNode = queue.shift(); + neighborEdges = currentNode.getEdges(); + var size4 = neighborEdges.length; + for (var i2 = 0; i2 < size4; i2++) { + var neighborEdge = neighborEdges[i2]; + currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this); + if (currentNeighbor != null && !visited.has(currentNeighbor)) { + var childrenOfNeighbor = currentNeighbor.withChildren(); + childrenOfNeighbor.forEach(function(node2) { + queue.push(node2); + visited.add(node2); + }); + } + } + } + this.isConnected = false; + if (visited.size >= this.nodes.length) { + var noOfVisitedInThisGraph = 0; + visited.forEach(function(visitedNode) { + if (visitedNode.owner == self2) { + noOfVisitedInThisGraph++; + } + }); + if (noOfVisitedInThisGraph == this.nodes.length) { + this.isConnected = true; } } + }; + module3.exports = LGraph; + }), + /* 6 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var LGraph; + var LEdge = __webpack_require__(1); + function LGraphManager(layout6) { + LGraph = __webpack_require__(5); + this.layout = layout6; + this.graphs = []; + this.edges = []; } - if (match2) { - token2 = this.test_match(match2, rules[index]); - if (token2 !== false) { - return token2; + __name(LGraphManager, "LGraphManager"); + LGraphManager.prototype.addRoot = function() { + var ngraph = this.layout.newGraph(); + var nnode = this.layout.newNode(null); + var root3 = this.add(ngraph, nnode); + this.setRootGraph(root3); + return this.rootGraph; + }; + LGraphManager.prototype.add = function(newGraph, parentNode, newEdge, sourceNode, targetNode) { + if (newEdge == null && sourceNode == null && targetNode == null) { + if (newGraph == null) { + throw "Graph is null!"; + } + if (parentNode == null) { + throw "Parent node is null!"; + } + if (this.graphs.indexOf(newGraph) > -1) { + throw "Graph already in this graph mgr!"; + } + this.graphs.push(newGraph); + if (newGraph.parent != null) { + throw "Already has a parent!"; + } + if (parentNode.child != null) { + throw "Already has a child!"; + } + newGraph.parent = parentNode; + parentNode.child = newGraph; + return newGraph; + } else { + targetNode = newEdge; + sourceNode = parentNode; + newEdge = newGraph; + var sourceGraph = sourceNode.getOwner(); + var targetGraph = targetNode.getOwner(); + if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) { + throw "Source not in this graph mgr!"; + } + if (!(targetGraph != null && targetGraph.getGraphManager() == this)) { + throw "Target not in this graph mgr!"; + } + if (sourceGraph == targetGraph) { + newEdge.isInterGraph = false; + return sourceGraph.add(newEdge, sourceNode, targetNode); + } else { + newEdge.isInterGraph = true; + newEdge.source = sourceNode; + newEdge.target = targetNode; + if (this.edges.indexOf(newEdge) > -1) { + throw "Edge already in inter-graph edge list!"; + } + this.edges.push(newEdge); + if (!(newEdge.source != null && newEdge.target != null)) { + throw "Edge source and/or target is null!"; + } + if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) { + throw "Edge already in source and/or target incidency list!"; + } + newEdge.source.edges.push(newEdge); + newEdge.target.edges.push(newEdge); + return newEdge; + } + } + }; + LGraphManager.prototype.remove = function(lObj) { + if (lObj instanceof LGraph) { + var graph = lObj; + if (graph.getGraphManager() != this) { + throw "Graph not in this graph mgr"; + } + if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) { + throw "Invalid parent node!"; + } + var edgesToBeRemoved = []; + edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges()); + var edge; + var s2 = edgesToBeRemoved.length; + for (var i2 = 0; i2 < s2; i2++) { + edge = edgesToBeRemoved[i2]; + graph.remove(edge); + } + var nodesToBeRemoved = []; + nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes()); + var node2; + s2 = nodesToBeRemoved.length; + for (var i2 = 0; i2 < s2; i2++) { + node2 = nodesToBeRemoved[i2]; + graph.remove(node2); + } + if (graph == this.rootGraph) { + this.setRootGraph(null); + } + var index = this.graphs.indexOf(graph); + this.graphs.splice(index, 1); + graph.parent = null; + } else if (lObj instanceof LEdge) { + edge = lObj; + if (edge == null) { + throw "Edge is null!"; + } + if (!edge.isInterGraph) { + throw "Not an inter-graph edge!"; + } + if (!(edge.source != null && edge.target != null)) { + throw "Source and/or target is null!"; + } + if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) { + throw "Source and/or target doesn't know this edge!"; + } + var index = edge.source.edges.indexOf(edge); + edge.source.edges.splice(index, 1); + index = edge.target.edges.indexOf(edge); + edge.target.edges.splice(index, 1); + if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) { + throw "Edge owner graph or owner graph manager is null!"; + } + if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) { + throw "Not in owner graph manager's edge list!"; + } + var index = edge.source.owner.getGraphManager().edges.indexOf(edge); + edge.source.owner.getGraphManager().edges.splice(index, 1); + } + }; + LGraphManager.prototype.updateBounds = function() { + this.rootGraph.updateBounds(true); + }; + LGraphManager.prototype.getGraphs = function() { + return this.graphs; + }; + LGraphManager.prototype.getAllNodes = function() { + if (this.allNodes == null) { + var nodeList = []; + var graphs = this.getGraphs(); + var s2 = graphs.length; + for (var i2 = 0; i2 < s2; i2++) { + nodeList = nodeList.concat(graphs[i2].getNodes()); + } + this.allNodes = nodeList; + } + return this.allNodes; + }; + LGraphManager.prototype.resetAllNodes = function() { + this.allNodes = null; + }; + LGraphManager.prototype.resetAllEdges = function() { + this.allEdges = null; + }; + LGraphManager.prototype.resetAllNodesToApplyGravitation = function() { + this.allNodesToApplyGravitation = null; + }; + LGraphManager.prototype.getAllEdges = function() { + if (this.allEdges == null) { + var edgeList2 = []; + var graphs = this.getGraphs(); + var s2 = graphs.length; + for (var i2 = 0; i2 < graphs.length; i2++) { + edgeList2 = edgeList2.concat(graphs[i2].getEdges()); + } + edgeList2 = edgeList2.concat(this.edges); + this.allEdges = edgeList2; + } + return this.allEdges; + }; + LGraphManager.prototype.getAllNodesToApplyGravitation = function() { + return this.allNodesToApplyGravitation; + }; + LGraphManager.prototype.setAllNodesToApplyGravitation = function(nodeList) { + if (this.allNodesToApplyGravitation != null) { + throw "assert failed"; + } + this.allNodesToApplyGravitation = nodeList; + }; + LGraphManager.prototype.getRoot = function() { + return this.rootGraph; + }; + LGraphManager.prototype.setRootGraph = function(graph) { + if (graph.getGraphManager() != this) { + throw "Root not in this graph mgr!"; + } + this.rootGraph = graph; + if (graph.parent == null) { + graph.parent = this.layout.newNode("Root node"); + } + }; + LGraphManager.prototype.getLayout = function() { + return this.layout; + }; + LGraphManager.prototype.isOneAncestorOfOther = function(firstNode, secondNode) { + if (!(firstNode != null && secondNode != null)) { + throw "assert failed"; + } + if (firstNode == secondNode) { + return true; + } + var ownerGraph = firstNode.getOwner(); + var parentNode; + do { + parentNode = ownerGraph.getParent(); + if (parentNode == null) { + break; + } + if (parentNode == secondNode) { + return true; + } + ownerGraph = parentNode.getOwner(); + if (ownerGraph == null) { + break; + } + } while (true); + ownerGraph = secondNode.getOwner(); + do { + parentNode = ownerGraph.getParent(); + if (parentNode == null) { + break; + } + if (parentNode == firstNode) { + return true; + } + ownerGraph = parentNode.getOwner(); + if (ownerGraph == null) { + break; + } + } while (true); + return false; + }; + LGraphManager.prototype.calcLowestCommonAncestors = function() { + var edge; + var sourceNode; + var targetNode; + var sourceAncestorGraph; + var targetAncestorGraph; + var edges3 = this.getAllEdges(); + var s2 = edges3.length; + for (var i2 = 0; i2 < s2; i2++) { + edge = edges3[i2]; + sourceNode = edge.source; + targetNode = edge.target; + edge.lca = null; + edge.sourceInLca = sourceNode; + edge.targetInLca = targetNode; + if (sourceNode == targetNode) { + edge.lca = sourceNode.getOwner(); + continue; + } + sourceAncestorGraph = sourceNode.getOwner(); + while (edge.lca == null) { + edge.targetInLca = targetNode; + targetAncestorGraph = targetNode.getOwner(); + while (edge.lca == null) { + if (targetAncestorGraph == sourceAncestorGraph) { + edge.lca = targetAncestorGraph; + break; + } + if (targetAncestorGraph == this.rootGraph) { + break; + } + if (edge.lca != null) { + throw "assert failed"; + } + edge.targetInLca = targetAncestorGraph.getParent(); + targetAncestorGraph = edge.targetInLca.getOwner(); + } + if (sourceAncestorGraph == this.rootGraph) { + break; + } + if (edge.lca == null) { + edge.sourceInLca = sourceAncestorGraph.getParent(); + sourceAncestorGraph = edge.sourceInLca.getOwner(); + } + } + if (edge.lca == null) { + throw "assert failed"; + } + } + }; + LGraphManager.prototype.calcLowestCommonAncestor = function(firstNode, secondNode) { + if (firstNode == secondNode) { + return firstNode.getOwner(); + } + var firstOwnerGraph = firstNode.getOwner(); + do { + if (firstOwnerGraph == null) { + break; + } + var secondOwnerGraph = secondNode.getOwner(); + do { + if (secondOwnerGraph == null) { + break; + } + if (secondOwnerGraph == firstOwnerGraph) { + return secondOwnerGraph; + } + secondOwnerGraph = secondOwnerGraph.getParent().getOwner(); + } while (true); + firstOwnerGraph = firstOwnerGraph.getParent().getOwner(); + } while (true); + return firstOwnerGraph; + }; + LGraphManager.prototype.calcInclusionTreeDepths = function(graph, depth) { + if (graph == null && depth == null) { + graph = this.rootGraph; + depth = 1; + } + var node2; + var nodes5 = graph.getNodes(); + var s2 = nodes5.length; + for (var i2 = 0; i2 < s2; i2++) { + node2 = nodes5[i2]; + node2.inclusionTreeDepth = depth; + if (node2.child != null) { + this.calcInclusionTreeDepths(node2.child, depth + 1); + } + } + }; + LGraphManager.prototype.includesInvalidEdge = function() { + var edge; + var s2 = this.edges.length; + for (var i2 = 0; i2 < s2; i2++) { + edge = this.edges[i2]; + if (this.isOneAncestorOfOther(edge.source, edge.target)) { + return true; + } } return false; + }; + module3.exports = LGraphManager; + }), + /* 7 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var LayoutConstants = __webpack_require__(0); + function FDLayoutConstants() { } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); + __name(FDLayoutConstants, "FDLayoutConstants"); + for (var prop in LayoutConstants) { + FDLayoutConstants[prop] = LayoutConstants[prop]; } - }, "next"), - // return next match that has a token - lex: /* @__PURE__ */ __name(function lex() { - var r2 = this.next(); - if (r2) { - return r2; - } else { - return this.lex(); + FDLayoutConstants.MAX_ITERATIONS = 2500; + FDLayoutConstants.DEFAULT_EDGE_LENGTH = 50; + FDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45; + FDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500; + FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4; + FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1; + FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8; + FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5; + FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true; + FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true; + FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3; + FDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33; + FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1e3; + FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5e3; + FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100; + FDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3; + FDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10; + FDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100; + FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1; + FDLayoutConstants.MIN_EDGE_LENGTH = 1; + FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10; + module3.exports = FDLayoutConstants; + }), + /* 8 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var Point3 = __webpack_require__(12); + function IGeometry() { } - }, "lex"), - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: /* @__PURE__ */ __name(function begin(condition) { - this.conditionStack.push(condition); - }, "begin"), - // pop the previously active lexer condition state off the condition stack - popState: /* @__PURE__ */ __name(function popState() { - var n2 = this.conditionStack.length - 1; - if (n2 > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, "popState"), - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: /* @__PURE__ */ __name(function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, "_currentRules"), - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: /* @__PURE__ */ __name(function topState(n2) { - n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); - if (n2 >= 0) { - return this.conditionStack[n2]; - } else { - return "INITIAL"; - } - }, "topState"), - // alias for begin(condition) - pushState: /* @__PURE__ */ __name(function pushState(condition) { - this.begin(condition); - }, "pushState"), - // return the number of states currently on the stack - stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { - return this.conditionStack.length; - }, "stateStackSize"), - options: { "case-insensitive": true }, - performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - return "title"; - break; - case 1: - this.begin("acc_title"); - return 9; - break; - case 2: - this.popState(); - return "acc_title_value"; - break; - case 3: - this.begin("acc_descr"); - return 11; - break; - case 4: - this.popState(); - return "acc_descr_value"; - break; - case 5: - this.begin("acc_descr_multiline"); - break; - case 6: - this.popState(); - break; - case 7: - return "acc_descr_multiline_value"; - break; - case 8: - return 21; - break; - case 9: - return 22; - break; - case 10: - return 23; - break; - case 11: - return 24; - break; - case 12: - return 5; - break; - case 13: - break; - case 14: - break; - case 15: - break; - case 16: - return 8; - break; - case 17: - return 6; - break; - case 18: - return 27; - break; - case 19: - return 40; - break; - case 20: - return 29; - break; - case 21: - return 32; - break; - case 22: - return 31; - break; - case 23: - return 34; - break; - case 24: - return 36; - break; - case 25: - return 38; - break; - case 26: - return 41; - break; - case 27: - return 42; - break; - case 28: - return 43; - break; - case 29: - return 44; - break; - case 30: - return 45; - break; - case 31: - return 46; - break; - case 32: - return 47; - break; - case 33: - return 48; - break; - case 34: - return 49; - break; - case 35: - return 50; - break; - case 36: - return 51; - break; - case 37: - return 52; - break; - case 38: - return 53; - break; - case 39: - return 54; - break; - case 40: - return 65; - break; - case 41: - return 66; - break; - case 42: - return 67; - break; - case 43: - return 68; - break; - case 44: - return 69; - break; - case 45: - return 70; - break; - case 46: - return 71; - break; - case 47: - return 57; - break; - case 48: - return 59; - break; - case 49: - this.begin("style"); - return 77; - break; - case 50: - return 75; - break; - case 51: - return 81; - break; - case 52: - return 88; - break; - case 53: - return "PERCENT"; - break; - case 54: - return 86; - break; - case 55: - return 84; - break; - case 56: - break; - case 57: - this.begin("string"); - break; - case 58: - this.popState(); - break; - case 59: - this.begin("style"); - return 72; - break; - case 60: - this.begin("style"); - return 74; - break; - case 61: - return 61; - break; - case 62: - return 64; - break; - case 63: - return 63; - break; - case 64: - this.begin("string"); - break; - case 65: - this.popState(); - break; - case 66: - return "qString"; - break; - case 67: - yy_.yytext = yy_.yytext.trim(); - return 89; - break; - case 68: - return 75; - break; - case 69: - return 80; - break; - case 70: - return 76; - break; - } - }, "anonymous"), - rules: [/^(?:title\s[^#\n;]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:.*direction\s+TB[^\n]*)/i, /^(?:.*direction\s+BT[^\n]*)/i, /^(?:.*direction\s+RL[^\n]*)/i, /^(?:.*direction\s+LR[^\n]*)/i, /^(?:(\r?\n)+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:$)/i, /^(?:requirementDiagram\b)/i, /^(?:\{)/i, /^(?:\})/i, /^(?::{3})/i, /^(?::)/i, /^(?:id\b)/i, /^(?:text\b)/i, /^(?:risk\b)/i, /^(?:verifyMethod\b)/i, /^(?:requirement\b)/i, /^(?:functionalRequirement\b)/i, /^(?:interfaceRequirement\b)/i, /^(?:performanceRequirement\b)/i, /^(?:physicalRequirement\b)/i, /^(?:designConstraint\b)/i, /^(?:low\b)/i, /^(?:medium\b)/i, /^(?:high\b)/i, /^(?:analysis\b)/i, /^(?:demonstration\b)/i, /^(?:inspection\b)/i, /^(?:test\b)/i, /^(?:element\b)/i, /^(?:contains\b)/i, /^(?:copies\b)/i, /^(?:derives\b)/i, /^(?:satisfies\b)/i, /^(?:verifies\b)/i, /^(?:refines\b)/i, /^(?:traces\b)/i, /^(?:type\b)/i, /^(?:docref\b)/i, /^(?:style\b)/i, /^(?:\w+)/i, /^(?::)/i, /^(?:;)/i, /^(?:%)/i, /^(?:-)/i, /^(?:#)/i, /^(?: )/i, /^(?:["])/i, /^(?:\n)/i, /^(?:classDef\b)/i, /^(?:class\b)/i, /^(?:<-)/i, /^(?:->)/i, /^(?:-)/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i, /^(?:\w+)/i, /^(?:[0-9]+)/i, /^(?:,)/i], - conditions: { "acc_descr_multiline": { "rules": [6, 7, 68, 69, 70], "inclusive": false }, "acc_descr": { "rules": [4, 68, 69, 70], "inclusive": false }, "acc_title": { "rules": [2, 68, 69, 70], "inclusive": false }, "style": { "rules": [50, 51, 52, 53, 54, 55, 56, 57, 58, 68, 69, 70], "inclusive": false }, "unqString": { "rules": [68, 69, 70], "inclusive": false }, "token": { "rules": [68, 69, 70], "inclusive": false }, "string": { "rules": [65, 66, 68, 69, 70], "inclusive": false }, "INITIAL": { "rules": [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 59, 60, 61, 62, 63, 64, 67, 68, 69, 70], "inclusive": true } } - }; - return lexer3; - }(); - parser24.lexer = lexer2; - function Parser3() { - this.yy = {}; - } - __name(Parser3, "Parser"); - Parser3.prototype = parser24; - parser24.Parser = Parser3; - return new Parser3(); - }(); - parser11.parser = parser11; - requirementDiagram_default = parser11; - } - }); - - // src/diagrams/requirement/requirementDb.ts - var RequirementDB; - var init_requirementDb = __esm({ - "src/diagrams/requirement/requirementDb.ts"() { - "use strict"; - init_diagramAPI(); - init_logger(); - init_commonDb(); - RequirementDB = class { - constructor() { - this.relations = []; - this.latestRequirement = this.getInitialRequirement(); - this.requirements = /* @__PURE__ */ new Map(); - this.latestElement = this.getInitialElement(); - this.elements = /* @__PURE__ */ new Map(); - this.classes = /* @__PURE__ */ new Map(); - this.direction = "TB"; - this.RequirementType = { - REQUIREMENT: "Requirement", - FUNCTIONAL_REQUIREMENT: "Functional Requirement", - INTERFACE_REQUIREMENT: "Interface Requirement", - PERFORMANCE_REQUIREMENT: "Performance Requirement", - PHYSICAL_REQUIREMENT: "Physical Requirement", - DESIGN_CONSTRAINT: "Design Constraint" - }; - this.RiskLevel = { - LOW_RISK: "Low", - MED_RISK: "Medium", - HIGH_RISK: "High" - }; - this.VerifyType = { - VERIFY_ANALYSIS: "Analysis", - VERIFY_DEMONSTRATION: "Demonstration", - VERIFY_INSPECTION: "Inspection", - VERIFY_TEST: "Test" - }; - this.Relationships = { - CONTAINS: "contains", - COPIES: "copies", - DERIVES: "derives", - SATISFIES: "satisfies", - VERIFIES: "verifies", - REFINES: "refines", - TRACES: "traces" - }; - this.setAccTitle = setAccTitle; - this.getAccTitle = getAccTitle; - this.setAccDescription = setAccDescription; - this.getAccDescription = getAccDescription; - this.setDiagramTitle = setDiagramTitle; - this.getDiagramTitle = getDiagramTitle; - this.getConfig = /* @__PURE__ */ __name(() => getConfig2().requirement, "getConfig"); - this.clear(); - this.setDirection = this.setDirection.bind(this); - this.addRequirement = this.addRequirement.bind(this); - this.setNewReqId = this.setNewReqId.bind(this); - this.setNewReqRisk = this.setNewReqRisk.bind(this); - this.setNewReqText = this.setNewReqText.bind(this); - this.setNewReqVerifyMethod = this.setNewReqVerifyMethod.bind(this); - this.addElement = this.addElement.bind(this); - this.setNewElementType = this.setNewElementType.bind(this); - this.setNewElementDocRef = this.setNewElementDocRef.bind(this); - this.addRelationship = this.addRelationship.bind(this); - this.setCssStyle = this.setCssStyle.bind(this); - this.setClass = this.setClass.bind(this); - this.defineClass = this.defineClass.bind(this); - this.setAccTitle = this.setAccTitle.bind(this); - this.setAccDescription = this.setAccDescription.bind(this); - } - static { - __name(this, "RequirementDB"); - } - getDirection() { - return this.direction; - } - setDirection(dir2) { - this.direction = dir2; - } - resetLatestRequirement() { - this.latestRequirement = this.getInitialRequirement(); - } - resetLatestElement() { - this.latestElement = this.getInitialElement(); - } - getInitialRequirement() { - return { - requirementId: "", - text: "", - risk: "", - verifyMethod: "", - name: "", - type: "", - cssStyles: [], - classes: ["default"] - }; - } - getInitialElement() { - return { - name: "", - type: "", - docRef: "", - cssStyles: [], - classes: ["default"] - }; - } - addRequirement(name, type3) { - if (!this.requirements.has(name)) { - this.requirements.set(name, { - name, - type: type3, - requirementId: this.latestRequirement.requirementId, - text: this.latestRequirement.text, - risk: this.latestRequirement.risk, - verifyMethod: this.latestRequirement.verifyMethod, - cssStyles: [], - classes: ["default"] - }); - } - this.resetLatestRequirement(); - return this.requirements.get(name); - } - getRequirements() { - return this.requirements; - } - setNewReqId(id29) { - if (this.latestRequirement !== void 0) { - this.latestRequirement.requirementId = id29; - } - } - setNewReqText(text4) { - if (this.latestRequirement !== void 0) { - this.latestRequirement.text = text4; - } - } - setNewReqRisk(risk) { - if (this.latestRequirement !== void 0) { - this.latestRequirement.risk = risk; - } - } - setNewReqVerifyMethod(verifyMethod) { - if (this.latestRequirement !== void 0) { - this.latestRequirement.verifyMethod = verifyMethod; - } - } - addElement(name) { - if (!this.elements.has(name)) { - this.elements.set(name, { - name, - type: this.latestElement.type, - docRef: this.latestElement.docRef, - cssStyles: [], - classes: ["default"] - }); - log.info("Added new element: ", name); - } - this.resetLatestElement(); - return this.elements.get(name); - } - getElements() { - return this.elements; - } - setNewElementType(type3) { - if (this.latestElement !== void 0) { - this.latestElement.type = type3; - } - } - setNewElementDocRef(docRef) { - if (this.latestElement !== void 0) { - this.latestElement.docRef = docRef; - } - } - addRelationship(type3, src, dst) { - this.relations.push({ - type: type3, - src, - dst - }); - } - getRelationships() { - return this.relations; - } - clear() { - this.relations = []; - this.resetLatestRequirement(); - this.requirements = /* @__PURE__ */ new Map(); - this.resetLatestElement(); - this.elements = /* @__PURE__ */ new Map(); - this.classes = /* @__PURE__ */ new Map(); - clear(); - } - setCssStyle(ids, styles4) { - for (const id29 of ids) { - const node2 = this.requirements.get(id29) ?? this.elements.get(id29); - if (!styles4 || !node2) { - return; - } - for (const s2 of styles4) { - if (s2.includes(",")) { - node2.cssStyles.push(...s2.split(",")); - } else { - node2.cssStyles.push(s2); - } - } - } - } - setClass(ids, classNames) { - for (const id29 of ids) { - const node2 = this.requirements.get(id29) ?? this.elements.get(id29); - if (node2) { - for (const _class2 of classNames) { - node2.classes.push(_class2); - const styles4 = this.classes.get(_class2)?.styles; - if (styles4) { - node2.cssStyles.push(...styles4); + __name(IGeometry, "IGeometry"); + IGeometry.calcSeparationAmount = function(rectA, rectB, overlapAmount, separationBuffer) { + if (!rectA.intersects(rectB)) { + throw "assert failed"; } - } - } - } - } - defineClass(ids, style3) { - for (const id29 of ids) { - let styleClass = this.classes.get(id29); - if (styleClass === void 0) { - styleClass = { id: id29, styles: [], textStyles: [] }; - this.classes.set(id29, styleClass); - } - if (style3) { - style3.forEach(function(s2) { - if (/color/.exec(s2)) { - const newStyle = s2.replace("fill", "bgFill"); - styleClass.textStyles.push(newStyle); + var directions = new Array(2); + this.decideDirectionsForOverlappingNodes(rectA, rectB, directions); + overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x); + overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y); + if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) { + overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight()); + } else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) { + overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight()); } - styleClass.styles.push(s2); - }); - } - this.requirements.forEach((value2) => { - if (value2.classes.includes(id29)) { - value2.cssStyles.push(...style3.flatMap((s2) => s2.split(","))); - } - }); - this.elements.forEach((value2) => { - if (value2.classes.includes(id29)) { - value2.cssStyles.push(...style3.flatMap((s2) => s2.split(","))); - } - }); - } - } - getClasses() { - return this.classes; - } - getData() { - const config5 = getConfig2(); - const nodes6 = []; - const edges3 = []; - for (const requirement of this.requirements.values()) { - const node2 = requirement; - node2.id = requirement.name; - node2.cssStyles = requirement.cssStyles; - node2.cssClasses = requirement.classes.join(" "); - node2.shape = "requirementBox"; - node2.look = config5.look; - nodes6.push(node2); - } - for (const element3 of this.elements.values()) { - const node2 = element3; - node2.shape = "requirementBox"; - node2.look = config5.look; - node2.id = element3.name; - node2.cssStyles = element3.cssStyles; - node2.cssClasses = element3.classes.join(" "); - nodes6.push(node2); - } - for (const relation of this.relations) { - let counter2 = 0; - const isContains = relation.type === this.Relationships.CONTAINS; - const edge = { - id: `${relation.src}-${relation.dst}-${counter2}`, - start: this.requirements.get(relation.src)?.name ?? this.elements.get(relation.src)?.name, - end: this.requirements.get(relation.dst)?.name ?? this.elements.get(relation.dst)?.name, - label: `<<${relation.type}>>`, - classes: "relationshipLine", - style: ["fill:none", isContains ? "" : "stroke-dasharray: 10,7"], - labelpos: "c", - thickness: "normal", - type: "normal", - pattern: isContains ? "normal" : "dashed", - arrowTypeStart: isContains ? "requirement_contains" : "", - arrowTypeEnd: isContains ? "" : "requirement_arrow", - look: config5.look - }; - edges3.push(edge); - counter2++; - } - return { nodes: nodes6, edges: edges3, other: {}, config: config5, direction: this.getDirection() }; - } - }; - } - }); - - // src/diagrams/requirement/styles.js - var getStyles8, styles_default7; - var init_styles7 = __esm({ - "src/diagrams/requirement/styles.js"() { - "use strict"; - getStyles8 = /* @__PURE__ */ __name((options3) => ` - - marker { - fill: ${options3.relationColor}; - stroke: ${options3.relationColor}; - } - - marker.cross { - stroke: ${options3.lineColor}; - } - - svg { - font-family: ${options3.fontFamily}; - font-size: ${options3.fontSize}; - } - - .reqBox { - fill: ${options3.requirementBackground}; - fill-opacity: 1.0; - stroke: ${options3.requirementBorderColor}; - stroke-width: ${options3.requirementBorderSize}; - } - - .reqTitle, .reqLabel{ - fill: ${options3.requirementTextColor}; - } - .reqLabelBox { - fill: ${options3.relationLabelBackground}; - fill-opacity: 1.0; - } - - .req-title-line { - stroke: ${options3.requirementBorderColor}; - stroke-width: ${options3.requirementBorderSize}; - } - .relationshipLine { - stroke: ${options3.relationColor}; - stroke-width: 1; - } - .relationshipLabel { - fill: ${options3.relationLabelColor}; - } - .divider { - stroke: ${options3.nodeBorder}; - stroke-width: 1; - } - .label { - font-family: ${options3.fontFamily}; - color: ${options3.nodeTextColor || options3.textColor}; - } - .label text,span { - fill: ${options3.nodeTextColor || options3.textColor}; - color: ${options3.nodeTextColor || options3.textColor}; - } - .labelBkg { - background-color: ${options3.edgeLabelBackground}; - } - -`, "getStyles"); - styles_default7 = getStyles8; - } - }); - - // src/diagrams/requirement/requirementRenderer.ts - var requirementRenderer_exports = {}; - __export(requirementRenderer_exports, { - draw: () => draw10 - }); - var draw10; - var init_requirementRenderer = __esm({ - "src/diagrams/requirement/requirementRenderer.ts"() { - "use strict"; - init_diagramAPI(); - init_logger(); - init_insertElementsForSize(); - init_render(); - init_setupViewPortForSVG(); - init_utils2(); - draw10 = /* @__PURE__ */ __name(async function(text4, id29, _version, diag) { - log.info("REF0:"); - log.info("Drawing requirement diagram (unified)", id29); - const { securityLevel, state: conf5, layout: layout6 } = getConfig2(); - const data4Layout = diag.db.getData(); - const svg2 = getDiagramElement(id29, securityLevel); - data4Layout.type = diag.type; - data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout6); - data4Layout.nodeSpacing = conf5?.nodeSpacing ?? 50; - data4Layout.rankSpacing = conf5?.rankSpacing ?? 50; - data4Layout.markers = ["requirement_contains", "requirement_arrow"]; - data4Layout.diagramId = id29; - await render4(data4Layout, svg2); - const padding2 = 8; - utils_default2.insertTitle( - svg2, - "requirementDiagramTitleText", - conf5?.titleTopMargin ?? 25, - diag.db.getDiagramTitle() - ); - setupViewPortForSVG(svg2, padding2, "requirementDiagram", conf5?.useMaxWidth ?? true); - }, "draw"); - } - }); - - // src/diagrams/requirement/requirementDiagram.ts - var requirementDiagram_exports = {}; - __export(requirementDiagram_exports, { - diagram: () => diagram10 - }); - var diagram10; - var init_requirementDiagram2 = __esm({ - "src/diagrams/requirement/requirementDiagram.ts"() { - "use strict"; - init_requirementDiagram(); - init_requirementDb(); - init_styles7(); - init_requirementRenderer(); - diagram10 = { - parser: requirementDiagram_default, - get db() { - return new RequirementDB(); - }, - renderer: requirementRenderer_exports, - styles: styles_default7 - }; - } - }); - - // src/diagrams/sequence/parser/sequenceDiagram.jison - var parser12, sequenceDiagram_default; - var init_sequenceDiagram = __esm({ - "src/diagrams/sequence/parser/sequenceDiagram.jison"() { - "use strict"; - parser12 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; - return o3; - }, "o"), $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 4], $V3 = [2, 4], $V4 = [1, 9], $V5 = [1, 11], $V6 = [1, 13], $V7 = [1, 14], $V8 = [1, 16], $V9 = [1, 17], $Va = [1, 18], $Vb = [1, 24], $Vc = [1, 25], $Vd = [1, 26], $Ve = [1, 27], $Vf = [1, 28], $Vg = [1, 29], $Vh = [1, 30], $Vi = [1, 31], $Vj = [1, 32], $Vk = [1, 33], $Vl = [1, 34], $Vm = [1, 35], $Vn = [1, 36], $Vo = [1, 37], $Vp = [1, 38], $Vq = [1, 39], $Vr = [1, 41], $Vs = [1, 42], $Vt = [1, 43], $Vu = [1, 44], $Vv = [1, 45], $Vw = [1, 46], $Vx = [1, 4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 48, 49, 50, 52, 53, 54, 59, 60, 61, 62, 70], $Vy = [4, 5, 16, 50, 52, 53], $Vz = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VA = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 49, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VB = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 48, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VC = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VD = [68, 69, 70], $VE = [1, 122]; - var parser24 = { - trace: /* @__PURE__ */ __name(function trace() { - }, "trace"), - yy: {}, - symbols_: { "error": 2, "start": 3, "SPACE": 4, "NEWLINE": 5, "SD": 6, "document": 7, "line": 8, "statement": 9, "box_section": 10, "box_line": 11, "participant_statement": 12, "create": 13, "box": 14, "restOfLine": 15, "end": 16, "signal": 17, "autonumber": 18, "NUM": 19, "off": 20, "activate": 21, "actor": 22, "deactivate": 23, "note_statement": 24, "links_statement": 25, "link_statement": 26, "properties_statement": 27, "details_statement": 28, "title": 29, "legacy_title": 30, "acc_title": 31, "acc_title_value": 32, "acc_descr": 33, "acc_descr_value": 34, "acc_descr_multiline_value": 35, "loop": 36, "rect": 37, "opt": 38, "alt": 39, "else_sections": 40, "par": 41, "par_sections": 42, "par_over": 43, "critical": 44, "option_sections": 45, "break": 46, "option": 47, "and": 48, "else": 49, "participant": 50, "AS": 51, "participant_actor": 52, "destroy": 53, "note": 54, "placement": 55, "text2": 56, "over": 57, "actor_pair": 58, "links": 59, "link": 60, "properties": 61, "details": 62, "spaceList": 63, ",": 64, "left_of": 65, "right_of": 66, "signaltype": 67, "+": 68, "-": 69, "ACTOR": 70, "SOLID_OPEN_ARROW": 71, "DOTTED_OPEN_ARROW": 72, "SOLID_ARROW": 73, "BIDIRECTIONAL_SOLID_ARROW": 74, "DOTTED_ARROW": 75, "BIDIRECTIONAL_DOTTED_ARROW": 76, "SOLID_CROSS": 77, "DOTTED_CROSS": 78, "SOLID_POINT": 79, "DOTTED_POINT": 80, "TXT": 81, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 4: "SPACE", 5: "NEWLINE", 6: "SD", 13: "create", 14: "box", 15: "restOfLine", 16: "end", 18: "autonumber", 19: "NUM", 20: "off", 21: "activate", 23: "deactivate", 29: "title", 30: "legacy_title", 31: "acc_title", 32: "acc_title_value", 33: "acc_descr", 34: "acc_descr_value", 35: "acc_descr_multiline_value", 36: "loop", 37: "rect", 38: "opt", 39: "alt", 41: "par", 43: "par_over", 44: "critical", 46: "break", 47: "option", 48: "and", 49: "else", 50: "participant", 51: "AS", 52: "participant_actor", 53: "destroy", 54: "note", 57: "over", 59: "links", 60: "link", 61: "properties", 62: "details", 64: ",", 65: "left_of", 66: "right_of", 68: "+", 69: "-", 70: "ACTOR", 71: "SOLID_OPEN_ARROW", 72: "DOTTED_OPEN_ARROW", 73: "SOLID_ARROW", 74: "BIDIRECTIONAL_SOLID_ARROW", 75: "DOTTED_ARROW", 76: "BIDIRECTIONAL_DOTTED_ARROW", 77: "SOLID_CROSS", 78: "DOTTED_CROSS", 79: "SOLID_POINT", 80: "DOTTED_POINT", 81: "TXT" }, - productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [10, 0], [10, 2], [11, 2], [11, 1], [11, 1], [9, 1], [9, 2], [9, 4], [9, 2], [9, 4], [9, 3], [9, 3], [9, 2], [9, 3], [9, 3], [9, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [45, 1], [45, 4], [42, 1], [42, 4], [40, 1], [40, 4], [12, 5], [12, 3], [12, 5], [12, 3], [12, 3], [24, 4], [24, 4], [25, 3], [26, 3], [27, 3], [28, 3], [63, 2], [63, 1], [58, 3], [58, 1], [55, 1], [55, 1], [17, 5], [17, 5], [17, 4], [22, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [56, 1]], - performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 3: - yy.apply($$[$0]); - return $$[$0]; - break; - case 4: - case 9: - this.$ = []; - break; - case 5: - case 10: - $$[$0 - 1].push($$[$0]); - this.$ = $$[$0 - 1]; - break; - case 6: - case 7: - case 11: - case 12: - this.$ = $$[$0]; - break; - case 8: - case 13: - this.$ = []; - break; - case 15: - $$[$0].type = "createParticipant"; - this.$ = $$[$0]; - break; - case 16: - $$[$0 - 1].unshift({ type: "boxStart", boxData: yy.parseBoxData($$[$0 - 2]) }); - $$[$0 - 1].push({ type: "boxEnd", boxText: $$[$0 - 2] }); - this.$ = $$[$0 - 1]; - break; - case 18: - this.$ = { type: "sequenceIndex", sequenceIndex: Number($$[$0 - 2]), sequenceIndexStep: Number($$[$0 - 1]), sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER }; - break; - case 19: - this.$ = { type: "sequenceIndex", sequenceIndex: Number($$[$0 - 1]), sequenceIndexStep: 1, sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER }; - break; - case 20: - this.$ = { type: "sequenceIndex", sequenceVisible: false, signalType: yy.LINETYPE.AUTONUMBER }; - break; - case 21: - this.$ = { type: "sequenceIndex", sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER }; - break; - case 22: - this.$ = { type: "activeStart", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1].actor }; - break; - case 23: - this.$ = { type: "activeEnd", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 1].actor }; - break; - case 29: - yy.setDiagramTitle($$[$0].substring(6)); - this.$ = $$[$0].substring(6); - break; - case 30: - yy.setDiagramTitle($$[$0].substring(7)); - this.$ = $$[$0].substring(7); - break; - case 31: - this.$ = $$[$0].trim(); - yy.setAccTitle(this.$); - break; - case 32: - case 33: - this.$ = $$[$0].trim(); - yy.setAccDescription(this.$); - break; - case 34: - $$[$0 - 1].unshift({ type: "loopStart", loopText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.LOOP_START }); - $$[$0 - 1].push({ type: "loopEnd", loopText: $$[$0 - 2], signalType: yy.LINETYPE.LOOP_END }); - this.$ = $$[$0 - 1]; - break; - case 35: - $$[$0 - 1].unshift({ type: "rectStart", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_START }); - $$[$0 - 1].push({ type: "rectEnd", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_END }); - this.$ = $$[$0 - 1]; - break; - case 36: - $$[$0 - 1].unshift({ type: "optStart", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_START }); - $$[$0 - 1].push({ type: "optEnd", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_END }); - this.$ = $$[$0 - 1]; - break; - case 37: - $$[$0 - 1].unshift({ type: "altStart", altText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.ALT_START }); - $$[$0 - 1].push({ type: "altEnd", signalType: yy.LINETYPE.ALT_END }); - this.$ = $$[$0 - 1]; - break; - case 38: - $$[$0 - 1].unshift({ type: "parStart", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_START }); - $$[$0 - 1].push({ type: "parEnd", signalType: yy.LINETYPE.PAR_END }); - this.$ = $$[$0 - 1]; - break; - case 39: - $$[$0 - 1].unshift({ type: "parStart", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_OVER_START }); - $$[$0 - 1].push({ type: "parEnd", signalType: yy.LINETYPE.PAR_END }); - this.$ = $$[$0 - 1]; - break; - case 40: - $$[$0 - 1].unshift({ type: "criticalStart", criticalText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.CRITICAL_START }); - $$[$0 - 1].push({ type: "criticalEnd", signalType: yy.LINETYPE.CRITICAL_END }); - this.$ = $$[$0 - 1]; - break; - case 41: - $$[$0 - 1].unshift({ type: "breakStart", breakText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_START }); - $$[$0 - 1].push({ type: "breakEnd", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_END }); - this.$ = $$[$0 - 1]; - break; - case 43: - this.$ = $$[$0 - 3].concat([{ type: "option", optionText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.CRITICAL_OPTION }, $$[$0]]); - break; - case 45: - this.$ = $$[$0 - 3].concat([{ type: "and", parText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.PAR_AND }, $$[$0]]); - break; - case 47: - this.$ = $$[$0 - 3].concat([{ type: "else", altText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.ALT_ELSE }, $$[$0]]); - break; - case 48: - $$[$0 - 3].draw = "participant"; - $$[$0 - 3].type = "addParticipant"; - $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]); - this.$ = $$[$0 - 3]; - break; - case 49: - $$[$0 - 1].draw = "participant"; - $$[$0 - 1].type = "addParticipant"; - this.$ = $$[$0 - 1]; - break; - case 50: - $$[$0 - 3].draw = "actor"; - $$[$0 - 3].type = "addParticipant"; - $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]); - this.$ = $$[$0 - 3]; - break; - case 51: - $$[$0 - 1].draw = "actor"; - $$[$0 - 1].type = "addParticipant"; - this.$ = $$[$0 - 1]; - break; - case 52: - $$[$0 - 1].type = "destroyParticipant"; - this.$ = $$[$0 - 1]; - break; - case 53: - this.$ = [$$[$0 - 1], { type: "addNote", placement: $$[$0 - 2], actor: $$[$0 - 1].actor, text: $$[$0] }]; - break; - case 54: - $$[$0 - 2] = [].concat($$[$0 - 1], $$[$0 - 1]).slice(0, 2); - $$[$0 - 2][0] = $$[$0 - 2][0].actor; - $$[$0 - 2][1] = $$[$0 - 2][1].actor; - this.$ = [$$[$0 - 1], { type: "addNote", placement: yy.PLACEMENT.OVER, actor: $$[$0 - 2].slice(0, 2), text: $$[$0] }]; - break; - case 55: - this.$ = [$$[$0 - 1], { type: "addLinks", actor: $$[$0 - 1].actor, text: $$[$0] }]; - break; - case 56: - this.$ = [$$[$0 - 1], { type: "addALink", actor: $$[$0 - 1].actor, text: $$[$0] }]; - break; - case 57: - this.$ = [$$[$0 - 1], { type: "addProperties", actor: $$[$0 - 1].actor, text: $$[$0] }]; - break; - case 58: - this.$ = [$$[$0 - 1], { type: "addDetails", actor: $$[$0 - 1].actor, text: $$[$0] }]; - break; - case 61: - this.$ = [$$[$0 - 2], $$[$0]]; - break; - case 62: - this.$ = $$[$0]; - break; - case 63: - this.$ = yy.PLACEMENT.LEFTOF; - break; - case 64: - this.$ = yy.PLACEMENT.RIGHTOF; - break; - case 65: - this.$ = [ - $$[$0 - 4], - $$[$0 - 1], - { type: "addMessage", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0], activate: true }, - { type: "activeStart", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1].actor } - ]; - break; - case 66: - this.$ = [ - $$[$0 - 4], - $$[$0 - 1], - { type: "addMessage", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0] }, - { type: "activeEnd", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 4].actor } - ]; - break; - case 67: - this.$ = [$$[$0 - 3], $$[$0 - 1], { type: "addMessage", from: $$[$0 - 3].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 2], msg: $$[$0] }]; - break; - case 68: - this.$ = { type: "addParticipant", actor: $$[$0] }; - break; - case 69: - this.$ = yy.LINETYPE.SOLID_OPEN; - break; - case 70: - this.$ = yy.LINETYPE.DOTTED_OPEN; - break; - case 71: - this.$ = yy.LINETYPE.SOLID; - break; - case 72: - this.$ = yy.LINETYPE.BIDIRECTIONAL_SOLID; - break; - case 73: - this.$ = yy.LINETYPE.DOTTED; - break; - case 74: - this.$ = yy.LINETYPE.BIDIRECTIONAL_DOTTED; - break; - case 75: - this.$ = yy.LINETYPE.SOLID_CROSS; - break; - case 76: - this.$ = yy.LINETYPE.DOTTED_CROSS; - break; - case 77: - this.$ = yy.LINETYPE.SOLID_POINT; - break; - case 78: - this.$ = yy.LINETYPE.DOTTED_POINT; - break; - case 79: - this.$ = yy.parseMessage($$[$0].trim().substring(1)); - break; - } - }, "anonymous"), - table: [{ 3: 1, 4: $V0, 5: $V1, 6: $V2 }, { 1: [3] }, { 3: 5, 4: $V0, 5: $V1, 6: $V2 }, { 3: 6, 4: $V0, 5: $V1, 6: $V2 }, o2([1, 4, 5, 13, 14, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 50, 52, 53, 54, 59, 60, 61, 62, 70], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, o2($Vx, [2, 5]), { 9: 47, 12: 12, 13: $V6, 14: $V7, 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, o2($Vx, [2, 7]), o2($Vx, [2, 8]), o2($Vx, [2, 14]), { 12: 48, 50: $Vo, 52: $Vp, 53: $Vq }, { 15: [1, 49] }, { 5: [1, 50] }, { 5: [1, 53], 19: [1, 51], 20: [1, 52] }, { 22: 54, 70: $Vw }, { 22: 55, 70: $Vw }, { 5: [1, 56] }, { 5: [1, 57] }, { 5: [1, 58] }, { 5: [1, 59] }, { 5: [1, 60] }, o2($Vx, [2, 29]), o2($Vx, [2, 30]), { 32: [1, 61] }, { 34: [1, 62] }, o2($Vx, [2, 33]), { 15: [1, 63] }, { 15: [1, 64] }, { 15: [1, 65] }, { 15: [1, 66] }, { 15: [1, 67] }, { 15: [1, 68] }, { 15: [1, 69] }, { 15: [1, 70] }, { 22: 71, 70: $Vw }, { 22: 72, 70: $Vw }, { 22: 73, 70: $Vw }, { 67: 74, 71: [1, 75], 72: [1, 76], 73: [1, 77], 74: [1, 78], 75: [1, 79], 76: [1, 80], 77: [1, 81], 78: [1, 82], 79: [1, 83], 80: [1, 84] }, { 55: 85, 57: [1, 86], 65: [1, 87], 66: [1, 88] }, { 22: 89, 70: $Vw }, { 22: 90, 70: $Vw }, { 22: 91, 70: $Vw }, { 22: 92, 70: $Vw }, o2([5, 51, 64, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81], [2, 68]), o2($Vx, [2, 6]), o2($Vx, [2, 15]), o2($Vy, [2, 9], { 10: 93 }), o2($Vx, [2, 17]), { 5: [1, 95], 19: [1, 94] }, { 5: [1, 96] }, o2($Vx, [2, 21]), { 5: [1, 97] }, { 5: [1, 98] }, o2($Vx, [2, 24]), o2($Vx, [2, 25]), o2($Vx, [2, 26]), o2($Vx, [2, 27]), o2($Vx, [2, 28]), o2($Vx, [2, 31]), o2($Vx, [2, 32]), o2($Vz, $V3, { 7: 99 }), o2($Vz, $V3, { 7: 100 }), o2($Vz, $V3, { 7: 101 }), o2($VA, $V3, { 40: 102, 7: 103 }), o2($VB, $V3, { 42: 104, 7: 105 }), o2($VB, $V3, { 7: 105, 42: 106 }), o2($VC, $V3, { 45: 107, 7: 108 }), o2($Vz, $V3, { 7: 109 }), { 5: [1, 111], 51: [1, 110] }, { 5: [1, 113], 51: [1, 112] }, { 5: [1, 114] }, { 22: 117, 68: [1, 115], 69: [1, 116], 70: $Vw }, o2($VD, [2, 69]), o2($VD, [2, 70]), o2($VD, [2, 71]), o2($VD, [2, 72]), o2($VD, [2, 73]), o2($VD, [2, 74]), o2($VD, [2, 75]), o2($VD, [2, 76]), o2($VD, [2, 77]), o2($VD, [2, 78]), { 22: 118, 70: $Vw }, { 22: 120, 58: 119, 70: $Vw }, { 70: [2, 63] }, { 70: [2, 64] }, { 56: 121, 81: $VE }, { 56: 123, 81: $VE }, { 56: 124, 81: $VE }, { 56: 125, 81: $VE }, { 4: [1, 128], 5: [1, 130], 11: 127, 12: 129, 16: [1, 126], 50: $Vo, 52: $Vp, 53: $Vq }, { 5: [1, 131] }, o2($Vx, [2, 19]), o2($Vx, [2, 20]), o2($Vx, [2, 22]), o2($Vx, [2, 23]), { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 132], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 133], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 134], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 16: [1, 135] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 46], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 49: [1, 136], 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 16: [1, 137] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 44], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 48: [1, 138], 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 16: [1, 139] }, { 16: [1, 140] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 42], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 47: [1, 141], 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 142], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 15: [1, 143] }, o2($Vx, [2, 49]), { 15: [1, 144] }, o2($Vx, [2, 51]), o2($Vx, [2, 52]), { 22: 145, 70: $Vw }, { 22: 146, 70: $Vw }, { 56: 147, 81: $VE }, { 56: 148, 81: $VE }, { 56: 149, 81: $VE }, { 64: [1, 150], 81: [2, 62] }, { 5: [2, 55] }, { 5: [2, 79] }, { 5: [2, 56] }, { 5: [2, 57] }, { 5: [2, 58] }, o2($Vx, [2, 16]), o2($Vy, [2, 10]), { 12: 151, 50: $Vo, 52: $Vp, 53: $Vq }, o2($Vy, [2, 12]), o2($Vy, [2, 13]), o2($Vx, [2, 18]), o2($Vx, [2, 34]), o2($Vx, [2, 35]), o2($Vx, [2, 36]), o2($Vx, [2, 37]), { 15: [1, 152] }, o2($Vx, [2, 38]), { 15: [1, 153] }, o2($Vx, [2, 39]), o2($Vx, [2, 40]), { 15: [1, 154] }, o2($Vx, [2, 41]), { 5: [1, 155] }, { 5: [1, 156] }, { 56: 157, 81: $VE }, { 56: 158, 81: $VE }, { 5: [2, 67] }, { 5: [2, 53] }, { 5: [2, 54] }, { 22: 159, 70: $Vw }, o2($Vy, [2, 11]), o2($VA, $V3, { 7: 103, 40: 160 }), o2($VB, $V3, { 7: 105, 42: 161 }), o2($VC, $V3, { 7: 108, 45: 162 }), o2($Vx, [2, 48]), o2($Vx, [2, 50]), { 5: [2, 65] }, { 5: [2, 66] }, { 81: [2, 61] }, { 16: [2, 47] }, { 16: [2, 45] }, { 16: [2, 43] }], - defaultActions: { 5: [2, 1], 6: [2, 2], 87: [2, 63], 88: [2, 64], 121: [2, 55], 122: [2, 79], 123: [2, 56], 124: [2, 57], 125: [2, 58], 147: [2, 67], 148: [2, 53], 149: [2, 54], 157: [2, 65], 158: [2, 66], 159: [2, 61], 160: [2, 47], 161: [2, 45], 162: [2, 43] }, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); - } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; - } - }, "parseError"), - parse: /* @__PURE__ */ __name(function parse7(input) { - var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; - var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k2 in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { - sharedState.yy[k2] = this.yy[k2]; - } - } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; - sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; - } - var yyloc = lexer3.yylloc; - lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n2) { - stack.length = stack.length - 2 * n2; - vstack.length = vstack.length - n2; - lstack.length = lstack.length - n2; - } - __name(popStack, "popStack"); - function lex() { - var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; - if (typeof token2 !== "number") { - if (token2 instanceof Array) { - tstack = token2; - token2 = tstack.pop(); + if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) { + overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom()); + } else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) { + overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom()); } - token2 = self2.symbols_[token2] || token2; - } - return token2; - } - __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; - while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); + var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX())); + if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) { + slope = 1; } - action = table[state4] && table[state4][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p3 in table[state4]) { - if (this.terminals_[p3] && p3 > TERROR) { - expected.push("'" + this.terminals_[p3] + "'"); - } + var moveByY = slope * overlapAmount[0]; + var moveByX = overlapAmount[1] / slope; + if (overlapAmount[0] < moveByX) { + moveByX = overlapAmount[0]; + } else { + moveByY = overlapAmount[1]; } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer); + overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer); + }; + IGeometry.decideDirectionsForOverlappingNodes = function(rectA, rectB, directions) { + if (rectA.getCenterX() < rectB.getCenterX()) { + directions[0] = -1; } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + directions[0] = 1; } - this.parseError(errStr, { - text: lexer3.match, - token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, - loc: yyloc, - expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; + if (rectA.getCenterY() < rectB.getCenterY()) { + directions[1] = -1; + } else { + directions[1] = 1; + } + }; + IGeometry.getIntersection2 = function(rectA, rectB, result) { + var p1x = rectA.getCenterX(); + var p1y = rectA.getCenterY(); + var p2x = rectB.getCenterX(); + var p2y = rectB.getCenterY(); + if (rectA.intersects(rectB)) { + result[0] = p1x; + result[1] = p1y; + result[2] = p2x; + result[3] = p2y; + return true; + } + var topLeftAx = rectA.getX(); + var topLeftAy = rectA.getY(); + var topRightAx = rectA.getRight(); + var bottomLeftAx = rectA.getX(); + var bottomLeftAy = rectA.getBottom(); + var bottomRightAx = rectA.getRight(); + var halfWidthA = rectA.getWidthHalf(); + var halfHeightA = rectA.getHeightHalf(); + var topLeftBx = rectB.getX(); + var topLeftBy = rectB.getY(); + var topRightBx = rectB.getRight(); + var bottomLeftBx = rectB.getX(); + var bottomLeftBy = rectB.getBottom(); + var bottomRightBx = rectB.getRight(); + var halfWidthB = rectB.getWidthHalf(); + var halfHeightB = rectB.getHeightHalf(); + var clipPointAFound = false; + var clipPointBFound = false; + if (p1x === p2x) { + if (p1y > p2y) { + result[0] = p1x; + result[1] = topLeftAy; + result[2] = p2x; + result[3] = bottomLeftBy; + return false; + } else if (p1y < p2y) { + result[0] = p1x; + result[1] = bottomLeftAy; + result[2] = p2x; + result[3] = topLeftBy; + return false; + } else { } - r2 = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r2 !== "undefined") { - return r2; + } else if (p1y === p2y) { + if (p1x > p2x) { + result[0] = topLeftAx; + result[1] = p1y; + result[2] = topRightBx; + result[3] = p2y; + return false; + } else if (p1x < p2x) { + result[0] = topRightAx; + result[1] = p1y; + result[2] = topLeftBx; + result[3] = p2y; + return false; + } else { } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); + } else { + var slopeA = rectA.height / rectA.width; + var slopeB = rectB.height / rectB.width; + var slopePrime = (p2y - p1y) / (p2x - p1x); + var cardinalDirectionA = void 0; + var cardinalDirectionB = void 0; + var tempPointAx = void 0; + var tempPointAy = void 0; + var tempPointBx = void 0; + var tempPointBy = void 0; + if (-slopeA === slopePrime) { + if (p1x > p2x) { + result[0] = bottomLeftAx; + result[1] = bottomLeftAy; + clipPointAFound = true; + } else { + result[0] = topRightAx; + result[1] = topLeftAy; + clipPointAFound = true; + } + } else if (slopeA === slopePrime) { + if (p1x > p2x) { + result[0] = topLeftAx; + result[1] = topLeftAy; + clipPointAFound = true; + } else { + result[0] = bottomRightAx; + result[1] = bottomLeftAy; + clipPointAFound = true; + } } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState2); - break; - case 3: - return true; - } - } - return true; - }, "parse") - }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { - EOF: 1, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str2, hash); - } else { - throw new Error(str2); - } - }, "parseError"), - // resets the lexer, sets new input - setInput: /* @__PURE__ */ __name(function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 + if (-slopeB === slopePrime) { + if (p2x > p1x) { + result[2] = bottomLeftBx; + result[3] = bottomLeftBy; + clipPointBFound = true; + } else { + result[2] = topRightBx; + result[3] = topLeftBy; + clipPointBFound = true; + } + } else if (slopeB === slopePrime) { + if (p2x > p1x) { + result[2] = topLeftBx; + result[3] = topLeftBy; + clipPointBFound = true; + } else { + result[2] = bottomRightBx; + result[3] = bottomLeftBy; + clipPointBFound = true; + } + } + if (clipPointAFound && clipPointBFound) { + return false; + } + if (p1x > p2x) { + if (p1y > p2y) { + cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4); + cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2); + } else { + cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3); + cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1); + } + } else { + if (p1y > p2y) { + cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1); + cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3); + } else { + cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2); + cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4); + } + } + if (!clipPointAFound) { + switch (cardinalDirectionA) { + case 1: + tempPointAy = topLeftAy; + tempPointAx = p1x + -halfHeightA / slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + case 2: + tempPointAx = bottomRightAx; + tempPointAy = p1y + halfWidthA * slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + case 3: + tempPointAy = bottomLeftAy; + tempPointAx = p1x + halfHeightA / slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + case 4: + tempPointAx = bottomLeftAx; + tempPointAy = p1y + -halfWidthA * slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + } + } + if (!clipPointBFound) { + switch (cardinalDirectionB) { + case 1: + tempPointBy = topLeftBy; + tempPointBx = p2x + -halfHeightB / slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + case 2: + tempPointBx = bottomRightBx; + tempPointBy = p2y + halfWidthB * slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + case 3: + tempPointBy = bottomLeftBy; + tempPointBx = p2x + halfHeightB / slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + case 4: + tempPointBx = bottomLeftBx; + tempPointBy = p2y + -halfWidthB * slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + } + } + } + return false; }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; - } - this.offset = 0; - return this; - }, "setInput"), - // consumes and returns one char from the input - input: /* @__PURE__ */ __name(function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } - this._input = this._input.slice(1); - return ch; - }, "input"), - // unshifts one char (or a string) into the input - unput: /* @__PURE__ */ __name(function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r2 = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + IGeometry.getCardinalDirection = function(slope, slopePrime, line2) { + if (slope > slopePrime) { + return line2; + } else { + return 1 + line2 % 4; + } }; - if (this.options.ranges) { - this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, "unput"), - // When called from action, caches matched text and appends it on next action - more: /* @__PURE__ */ __name(function() { - this._more = true; - return this; - }, "more"), - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: /* @__PURE__ */ __name(function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); + IGeometry.getIntersection = function(s1, s2, f1, f2) { + if (f2 == null) { + return this.getIntersection2(s1, s2, f1); + } + var x1 = s1.x; + var y1 = s1.y; + var x22 = s2.x; + var y22 = s2.y; + var x32 = f1.x; + var y32 = f1.y; + var x42 = f2.x; + var y42 = f2.y; + var x5 = void 0, y6 = void 0; + var a1 = void 0, a2 = void 0, b1 = void 0, b22 = void 0, c1 = void 0, c22 = void 0; + var denom = void 0; + a1 = y22 - y1; + b1 = x1 - x22; + c1 = x22 * y1 - x1 * y22; + a2 = y42 - y32; + b22 = x32 - x42; + c22 = x42 * y32 - x32 * y42; + denom = a1 * b22 - a2 * b1; + if (denom === 0) { + return null; + } + x5 = (b1 * c22 - b22 * c1) / denom; + y6 = (a2 * c1 - a1 * c22) / denom; + return new Point3(x5, y6); + }; + IGeometry.angleOfVector = function(Cx, Cy, Nx, Ny) { + var C_angle = void 0; + if (Cx !== Nx) { + C_angle = Math.atan((Ny - Cy) / (Nx - Cx)); + if (Nx < Cx) { + C_angle += Math.PI; + } else if (Ny < Cy) { + C_angle += this.TWO_PI; + } + } else if (Ny < Cy) { + C_angle = this.ONE_AND_HALF_PI; + } else { + C_angle = this.HALF_PI; + } + return C_angle; + }; + IGeometry.doIntersect = function(p1, p22, p3, p4) { + var a2 = p1.x; + var b3 = p1.y; + var c3 = p22.x; + var d3 = p22.y; + var p5 = p3.x; + var q3 = p3.y; + var r2 = p4.x; + var s2 = p4.y; + var det = (c3 - a2) * (s2 - q3) - (r2 - p5) * (d3 - b3); + if (det === 0) { + return false; + } else { + var lambda = ((s2 - q3) * (r2 - a2) + (p5 - r2) * (s2 - b3)) / det; + var gamma2 = ((b3 - d3) * (r2 - a2) + (c3 - a2) * (s2 - b3)) / det; + return 0 < lambda && lambda < 1 && 0 < gamma2 && gamma2 < 1; + } + }; + IGeometry.HALF_PI = 0.5 * Math.PI; + IGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI; + IGeometry.TWO_PI = 2 * Math.PI; + IGeometry.THREE_PI = 3 * Math.PI; + module3.exports = IGeometry; + }), + /* 9 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function IMath() { } - return this; - }, "reject"), - // retain first n characters of the match - less: /* @__PURE__ */ __name(function(n2) { - this.unput(this.match.slice(n2)); - }, "less"), - // displays already matched input, i.e. for error messages - pastInput: /* @__PURE__ */ __name(function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, "pastInput"), - // displays upcoming input, i.e. for error messages - upcomingInput: /* @__PURE__ */ __name(function() { - var next3 = this.match; - if (next3.length < 20) { - next3 += this._input.substr(0, 20 - next3.length); + __name(IMath, "IMath"); + IMath.sign = function(value2) { + if (value2 > 0) { + return 1; + } else if (value2 < 0) { + return -1; + } else { + return 0; + } + }; + IMath.floor = function(value2) { + return value2 < 0 ? Math.ceil(value2) : Math.floor(value2); + }; + IMath.ceil = function(value2) { + return value2 < 0 ? Math.floor(value2) : Math.ceil(value2); + }; + module3.exports = IMath; + }), + /* 10 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function Integer() { } - return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, "upcomingInput"), - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: /* @__PURE__ */ __name(function() { - var pre = this.pastInput(); - var c3 = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c3 + "^"; - }, "showPosition"), - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { - var token2, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done + __name(Integer, "Integer"); + Integer.MAX_VALUE = 2147483647; + Integer.MIN_VALUE = -2147483648; + module3.exports = Integer; + }), + /* 11 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var _createClass2 = /* @__PURE__ */ (function() { + function defineProperties(target, props) { + for (var i2 = 0; i2 < props.length; i2++) { + var descriptor = props[i2]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + __name(defineProperties, "defineProperties"); + return function(Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); + })(); + function _classCallCheck2(instance2, Constructor) { + if (!(instance2 instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); } } - lines = match2[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; + __name(_classCallCheck2, "_classCallCheck"); + var nodeFrom = /* @__PURE__ */ __name(function nodeFrom2(value2) { + return { value: value2, next: null, prev: null }; + }, "nodeFrom"); + var add3 = /* @__PURE__ */ __name(function add4(prev2, node2, next3, list) { + if (prev2 !== null) { + prev2.next = node2; + } else { + list.head = node2; + } + if (next3 !== null) { + next3.prev = node2; + } else { + list.tail = node2; + } + node2.prev = prev2; + node2.next = next3; + list.length++; + return node2; + }, "add"); + var _remove = /* @__PURE__ */ __name(function _remove2(node2, list) { + var prev2 = node2.prev, next3 = node2.next; + if (prev2 !== null) { + prev2.next = next3; + } else { + list.head = next3; + } + if (next3 !== null) { + next3.prev = prev2; + } else { + list.tail = prev2; + } + node2.prev = node2.next = null; + list.length--; + return node2; + }, "_remove"); + var LinkedList = (function() { + function LinkedList2(vals) { + var _this = this; + _classCallCheck2(this, LinkedList2); + this.length = 0; + this.head = null; + this.tail = null; + if (vals != null) { + vals.forEach(function(v3) { + return _this.push(v3); + }); + } + } + __name(LinkedList2, "LinkedList"); + _createClass2(LinkedList2, [{ + key: "size", + value: /* @__PURE__ */ __name(function size4() { + return this.length; + }, "size") + }, { + key: "insertBefore", + value: /* @__PURE__ */ __name(function insertBefore(val, otherNode) { + return add3(otherNode.prev, nodeFrom(val), otherNode, this); + }, "insertBefore") + }, { + key: "insertAfter", + value: /* @__PURE__ */ __name(function insertAfter(val, otherNode) { + return add3(otherNode, nodeFrom(val), otherNode.next, this); + }, "insertAfter") + }, { + key: "insertNodeBefore", + value: /* @__PURE__ */ __name(function insertNodeBefore(newNode, otherNode) { + return add3(otherNode.prev, newNode, otherNode, this); + }, "insertNodeBefore") + }, { + key: "insertNodeAfter", + value: /* @__PURE__ */ __name(function insertNodeAfter(newNode, otherNode) { + return add3(otherNode, newNode, otherNode.next, this); + }, "insertNodeAfter") + }, { + key: "push", + value: /* @__PURE__ */ __name(function push3(val) { + return add3(this.tail, nodeFrom(val), null, this); + }, "push") + }, { + key: "unshift", + value: /* @__PURE__ */ __name(function unshift(val) { + return add3(null, nodeFrom(val), this.head, this); + }, "unshift") + }, { + key: "remove", + value: /* @__PURE__ */ __name(function remove3(node2) { + return _remove(node2, this); + }, "remove") + }, { + key: "pop", + value: /* @__PURE__ */ __name(function pop() { + return _remove(this.tail, this).value; + }, "pop") + }, { + key: "popNode", + value: /* @__PURE__ */ __name(function popNode() { + return _remove(this.tail, this); + }, "popNode") + }, { + key: "shift", + value: /* @__PURE__ */ __name(function shift2() { + return _remove(this.head, this).value; + }, "shift") + }, { + key: "shiftNode", + value: /* @__PURE__ */ __name(function shiftNode() { + return _remove(this.head, this); + }, "shiftNode") + }, { + key: "get_object_at", + value: /* @__PURE__ */ __name(function get_object_at(index) { + if (index <= this.length()) { + var i2 = 1; + var current = this.head; + while (i2 < index) { + current = current.next; + i2++; + } + return current.value; + } + }, "get_object_at") + }, { + key: "set_object_at", + value: /* @__PURE__ */ __name(function set_object_at(index, value2) { + if (index <= this.length()) { + var i2 = 1; + var current = this.head; + while (i2 < index) { + current = current.next; + i2++; + } + current.value = value2; + } + }, "set_object_at") + }]); + return LinkedList2; + })(); + module3.exports = LinkedList; + }), + /* 12 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function Point3(x5, y6, p3) { + this.x = null; + this.y = null; + if (x5 == null && y6 == null && p3 == null) { + this.x = 0; + this.y = 0; + } else if (typeof x5 == "number" && typeof y6 == "number" && p3 == null) { + this.x = x5; + this.y = y6; + } else if (x5.constructor.name == "Point" && y6 == null && p3 == null) { + p3 = x5; + this.x = p3.x; + this.y = p3.y; + } } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length + __name(Point3, "Point"); + Point3.prototype.getX = function() { + return this.x; }; - this.yytext += match2[0]; - this.match += match2[0]; - this.matches = match2; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match2[0].length); - this.matched += match2[0]; - token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token2) { - return token2; - } else if (this._backtrack) { - for (var k2 in backup) { - this[k2] = backup[k2]; + Point3.prototype.getY = function() { + return this.y; + }; + Point3.prototype.getLocation = function() { + return new Point3(this.x, this.y); + }; + Point3.prototype.setLocation = function(x5, y6, p3) { + if (x5.constructor.name == "Point" && y6 == null && p3 == null) { + p3 = x5; + this.setLocation(p3.x, p3.y); + } else if (typeof x5 == "number" && typeof y6 == "number" && p3 == null) { + if (parseInt(x5) == x5 && parseInt(y6) == y6) { + this.move(x5, y6); + } else { + this.x = Math.floor(x5 + 0.5); + this.y = Math.floor(y6 + 0.5); + } + } + }; + Point3.prototype.move = function(x5, y6) { + this.x = x5; + this.y = y6; + }; + Point3.prototype.translate = function(dx, dy) { + this.x += dx; + this.y += dy; + }; + Point3.prototype.equals = function(obj) { + if (obj.constructor.name == "Point") { + var pt = obj; + return this.x == pt.x && this.y == pt.y; + } + return this == obj; + }; + Point3.prototype.toString = function() { + return new Point3().constructor.name + "[x=" + this.x + ",y=" + this.y + "]"; + }; + module3.exports = Point3; + }), + /* 13 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function RectangleD(x5, y6, width3, height2) { + this.x = 0; + this.y = 0; + this.width = 0; + this.height = 0; + if (x5 != null && y6 != null && width3 != null && height2 != null) { + this.x = x5; + this.y = y6; + this.width = width3; + this.height = height2; } - return false; } - return false; - }, "test_match"), - // return next match in input - next: /* @__PURE__ */ __name(function() { - if (this.done) { - return this.EOF; + __name(RectangleD, "RectangleD"); + RectangleD.prototype.getX = function() { + return this.x; + }; + RectangleD.prototype.setX = function(x5) { + this.x = x5; + }; + RectangleD.prototype.getY = function() { + return this.y; + }; + RectangleD.prototype.setY = function(y6) { + this.y = y6; + }; + RectangleD.prototype.getWidth = function() { + return this.width; + }; + RectangleD.prototype.setWidth = function(width3) { + this.width = width3; + }; + RectangleD.prototype.getHeight = function() { + return this.height; + }; + RectangleD.prototype.setHeight = function(height2) { + this.height = height2; + }; + RectangleD.prototype.getRight = function() { + return this.x + this.width; + }; + RectangleD.prototype.getBottom = function() { + return this.y + this.height; + }; + RectangleD.prototype.intersects = function(a2) { + if (this.getRight() < a2.x) { + return false; + } + if (this.getBottom() < a2.y) { + return false; + } + if (a2.getRight() < this.x) { + return false; + } + if (a2.getBottom() < this.y) { + return false; + } + return true; + }; + RectangleD.prototype.getCenterX = function() { + return this.x + this.width / 2; + }; + RectangleD.prototype.getMinX = function() { + return this.getX(); + }; + RectangleD.prototype.getMaxX = function() { + return this.getX() + this.width; + }; + RectangleD.prototype.getCenterY = function() { + return this.y + this.height / 2; + }; + RectangleD.prototype.getMinY = function() { + return this.getY(); + }; + RectangleD.prototype.getMaxY = function() { + return this.getY() + this.height; + }; + RectangleD.prototype.getWidthHalf = function() { + return this.width / 2; + }; + RectangleD.prototype.getHeightHalf = function() { + return this.height / 2; + }; + module3.exports = RectangleD; + }), + /* 14 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + function UniqueIDGeneretor() { } - if (!this._input) { - this.done = true; + __name(UniqueIDGeneretor, "UniqueIDGeneretor"); + UniqueIDGeneretor.lastID = 0; + UniqueIDGeneretor.createID = function(obj) { + if (UniqueIDGeneretor.isPrimitive(obj)) { + return obj; + } + if (obj.uniqueID != null) { + return obj.uniqueID; + } + obj.uniqueID = UniqueIDGeneretor.getString(); + UniqueIDGeneretor.lastID++; + return obj.uniqueID; + }; + UniqueIDGeneretor.getString = function(id30) { + if (id30 == null) id30 = UniqueIDGeneretor.lastID; + return "Object#" + id30; + }; + UniqueIDGeneretor.isPrimitive = function(arg) { + var type3 = typeof arg === "undefined" ? "undefined" : _typeof2(arg); + return arg == null || type3 != "object" && type3 != "function"; + }; + module3.exports = UniqueIDGeneretor; + }), + /* 15 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function _toConsumableArray2(arr) { + if (Array.isArray(arr)) { + for (var i2 = 0, arr2 = Array(arr.length); i2 < arr.length; i2++) { + arr2[i2] = arr[i2]; + } + return arr2; + } else { + return Array.from(arr); + } } - var token2, match2, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; + __name(_toConsumableArray2, "_toConsumableArray"); + var LayoutConstants = __webpack_require__(0); + var LGraphManager = __webpack_require__(6); + var LNode = __webpack_require__(3); + var LEdge = __webpack_require__(1); + var LGraph = __webpack_require__(5); + var PointD = __webpack_require__(4); + var Transform2 = __webpack_require__(17); + var Emitter4 = __webpack_require__(27); + function Layout2(isRemoteUse) { + Emitter4.call(this); + this.layoutQuality = LayoutConstants.QUALITY; + this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; + this.incremental = LayoutConstants.DEFAULT_INCREMENTAL; + this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT; + this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT; + this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD; + this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES; + this.edgeToDummyNodes = /* @__PURE__ */ new Map(); + this.graphManager = new LGraphManager(this); + this.isLayoutFinished = false; + this.isSubLayout = false; + this.isRemoteUse = false; + if (isRemoteUse != null) { + this.isRemoteUse = isRemoteUse; + } } - var rules = this._currentRules(); - for (var i2 = 0; i2 < rules.length; i2++) { - tempMatch = this._input.match(this.rules[rules[i2]]); - if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { - match2 = tempMatch; - index = i2; - if (this.options.backtrack_lexer) { - token2 = this.test_match(tempMatch, rules[i2]); - if (token2 !== false) { - return token2; - } else if (this._backtrack) { - match2 = false; - continue; + __name(Layout2, "Layout"); + Layout2.RANDOM_SEED = 1; + Layout2.prototype = Object.create(Emitter4.prototype); + Layout2.prototype.getGraphManager = function() { + return this.graphManager; + }; + Layout2.prototype.getAllNodes = function() { + return this.graphManager.getAllNodes(); + }; + Layout2.prototype.getAllEdges = function() { + return this.graphManager.getAllEdges(); + }; + Layout2.prototype.getAllNodesToApplyGravitation = function() { + return this.graphManager.getAllNodesToApplyGravitation(); + }; + Layout2.prototype.newGraphManager = function() { + var gm = new LGraphManager(this); + this.graphManager = gm; + return gm; + }; + Layout2.prototype.newGraph = function(vGraph) { + return new LGraph(null, this.graphManager, vGraph); + }; + Layout2.prototype.newNode = function(vNode) { + return new LNode(this.graphManager, vNode); + }; + Layout2.prototype.newEdge = function(vEdge) { + return new LEdge(null, null, vEdge); + }; + Layout2.prototype.checkLayoutSuccess = function() { + return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge(); + }; + Layout2.prototype.runLayout = function() { + this.isLayoutFinished = false; + if (this.tilingPreLayout) { + this.tilingPreLayout(); + } + this.initParameters(); + var isLayoutSuccessfull; + if (this.checkLayoutSuccess()) { + isLayoutSuccessfull = false; + } else { + isLayoutSuccessfull = this.layout(); + } + if (LayoutConstants.ANIMATE === "during") { + return false; + } + if (isLayoutSuccessfull) { + if (!this.isSubLayout) { + this.doPostLayout(); + } + } + if (this.tilingPostLayout) { + this.tilingPostLayout(); + } + this.isLayoutFinished = true; + return isLayoutSuccessfull; + }; + Layout2.prototype.doPostLayout = function() { + if (!this.incremental) { + this.transform(); + } + this.update(); + }; + Layout2.prototype.update2 = function() { + if (this.createBendsAsNeeded) { + this.createBendpointsFromDummyNodes(); + this.graphManager.resetAllEdges(); + } + if (!this.isRemoteUse) { + var edge; + var allEdges = this.graphManager.getAllEdges(); + for (var i2 = 0; i2 < allEdges.length; i2++) { + edge = allEdges[i2]; + } + var node2; + var nodes5 = this.graphManager.getRoot().getNodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + node2 = nodes5[i2]; + } + this.update(this.graphManager.getRoot()); + } + }; + Layout2.prototype.update = function(obj) { + if (obj == null) { + this.update2(); + } else if (obj instanceof LNode) { + var node2 = obj; + if (node2.getChild() != null) { + var nodes5 = node2.getChild().getNodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + update(nodes5[i2]); + } + } + if (node2.vGraphObject != null) { + var vNode = node2.vGraphObject; + vNode.update(node2); + } + } else if (obj instanceof LEdge) { + var edge = obj; + if (edge.vGraphObject != null) { + var vEdge = edge.vGraphObject; + vEdge.update(edge); + } + } else if (obj instanceof LGraph) { + var graph = obj; + if (graph.vGraphObject != null) { + var vGraph = graph.vGraphObject; + vGraph.update(graph); + } + } + }; + Layout2.prototype.initParameters = function() { + if (!this.isSubLayout) { + this.layoutQuality = LayoutConstants.QUALITY; + this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT; + this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD; + this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT; + this.incremental = LayoutConstants.DEFAULT_INCREMENTAL; + this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; + this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES; + } + if (this.animationDuringLayout) { + this.animationOnLayout = false; + } + }; + Layout2.prototype.transform = function(newLeftTop) { + if (newLeftTop == void 0) { + this.transform(new PointD(0, 0)); + } else { + var trans = new Transform2(); + var leftTop = this.graphManager.getRoot().updateLeftTop(); + if (leftTop != null) { + trans.setWorldOrgX(newLeftTop.x); + trans.setWorldOrgY(newLeftTop.y); + trans.setDeviceOrgX(leftTop.x); + trans.setDeviceOrgY(leftTop.y); + var nodes5 = this.getAllNodes(); + var node2; + for (var i2 = 0; i2 < nodes5.length; i2++) { + node2 = nodes5[i2]; + node2.transform(trans); + } + } + } + }; + Layout2.prototype.positionNodesRandomly = function(graph) { + if (graph == void 0) { + this.positionNodesRandomly(this.getGraphManager().getRoot()); + this.getGraphManager().getRoot().updateBounds(true); + } else { + var lNode; + var childGraph; + var nodes5 = graph.getNodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + lNode = nodes5[i2]; + childGraph = lNode.getChild(); + if (childGraph == null) { + lNode.scatter(); + } else if (childGraph.getNodes().length == 0) { + lNode.scatter(); } else { - return false; + this.positionNodesRandomly(childGraph); + lNode.updateBounds(); } - } else if (!this.options.flex) { - break; } } - } - if (match2) { - token2 = this.test_match(match2, rules[index]); - if (token2 !== false) { - return token2; + }; + Layout2.prototype.getFlatForest = function() { + var flatForest = []; + var isForest = true; + var allNodes = this.graphManager.getRoot().getNodes(); + var isFlat = true; + for (var i2 = 0; i2 < allNodes.length; i2++) { + if (allNodes[i2].getChild() != null) { + isFlat = false; + } } - return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, "next"), - // return next match that has a token - lex: /* @__PURE__ */ __name(function lex() { - var r2 = this.next(); - if (r2) { - return r2; - } else { - return this.lex(); - } - }, "lex"), - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: /* @__PURE__ */ __name(function begin(condition) { - this.conditionStack.push(condition); - }, "begin"), - // pop the previously active lexer condition state off the condition stack - popState: /* @__PURE__ */ __name(function popState() { - var n2 = this.conditionStack.length - 1; - if (n2 > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, "popState"), - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: /* @__PURE__ */ __name(function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, "_currentRules"), - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: /* @__PURE__ */ __name(function topState(n2) { - n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); - if (n2 >= 0) { - return this.conditionStack[n2]; - } else { - return "INITIAL"; - } - }, "topState"), - // alias for begin(condition) - pushState: /* @__PURE__ */ __name(function pushState(condition) { - this.begin(condition); - }, "pushState"), - // return the number of states currently on the stack - stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { - return this.conditionStack.length; - }, "stateStackSize"), - options: { "case-insensitive": true }, - performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - return 5; - break; - case 1: - break; - case 2: - break; - case 3: - break; - case 4: - break; - case 5: - break; - case 6: - return 19; - break; - case 7: - this.begin("LINE"); - return 14; - break; - case 8: - this.begin("ID"); - return 50; - break; - case 9: - this.begin("ID"); - return 52; - break; - case 10: - return 13; - break; - case 11: - this.begin("ID"); - return 53; - break; - case 12: - yy_.yytext = yy_.yytext.trim(); - this.begin("ALIAS"); - return 70; - break; - case 13: - this.popState(); - this.popState(); - this.begin("LINE"); - return 51; - break; - case 14: - this.popState(); - this.popState(); - return 5; - break; - case 15: - this.begin("LINE"); - return 36; - break; - case 16: - this.begin("LINE"); - return 37; - break; - case 17: - this.begin("LINE"); - return 38; - break; - case 18: - this.begin("LINE"); - return 39; - break; - case 19: - this.begin("LINE"); - return 49; - break; - case 20: - this.begin("LINE"); - return 41; - break; - case 21: - this.begin("LINE"); - return 43; - break; - case 22: - this.begin("LINE"); - return 48; - break; - case 23: - this.begin("LINE"); - return 44; - break; - case 24: - this.begin("LINE"); - return 47; - break; - case 25: - this.begin("LINE"); - return 46; - break; - case 26: - this.popState(); - return 15; - break; - case 27: - return 16; - break; - case 28: - return 65; - break; - case 29: - return 66; - break; - case 30: - return 59; - break; - case 31: - return 60; - break; - case 32: - return 61; - break; - case 33: - return 62; - break; - case 34: - return 57; - break; - case 35: - return 54; - break; - case 36: - this.begin("ID"); - return 21; - break; - case 37: - this.begin("ID"); - return 23; - break; - case 38: - return 29; - break; - case 39: - return 30; - break; - case 40: - this.begin("acc_title"); - return 31; - break; - case 41: - this.popState(); - return "acc_title_value"; - break; - case 42: - this.begin("acc_descr"); - return 33; - break; - case 43: - this.popState(); - return "acc_descr_value"; - break; - case 44: - this.begin("acc_descr_multiline"); - break; - case 45: - this.popState(); - break; - case 46: - return "acc_descr_multiline_value"; - break; - case 47: - return 6; - break; - case 48: - return 18; - break; - case 49: - return 20; - break; - case 50: - return 64; - break; - case 51: - return 5; - break; - case 52: - yy_.yytext = yy_.yytext.trim(); - return 70; - break; - case 53: - return 73; - break; - case 54: - return 74; - break; - case 55: - return 75; - break; - case 56: - return 76; - break; - case 57: - return 71; - break; - case 58: - return 72; - break; - case 59: - return 77; - break; - case 60: - return 78; - break; - case 61: - return 79; - break; - case 62: - return 80; - break; - case 63: - return 81; - break; - case 64: - return 68; - break; - case 65: - return 69; - break; - case 66: - return 5; - break; - case 67: - return "INVALID"; - break; - } - }, "anonymous"), - rules: [/^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:((?!\n)\s)+)/i, /^(?:#[^\n]*)/i, /^(?:%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[0-9]+(?=[ \n]+))/i, /^(?:box\b)/i, /^(?:participant\b)/i, /^(?:actor\b)/i, /^(?:create\b)/i, /^(?:destroy\b)/i, /^(?:[^\<->\->:\n,;]+?([\-]*[^\<->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i, /^(?:as\b)/i, /^(?:(?:))/i, /^(?:loop\b)/i, /^(?:rect\b)/i, /^(?:opt\b)/i, /^(?:alt\b)/i, /^(?:else\b)/i, /^(?:par\b)/i, /^(?:par_over\b)/i, /^(?:and\b)/i, /^(?:critical\b)/i, /^(?:option\b)/i, /^(?:break\b)/i, /^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i, /^(?:end\b)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:links\b)/i, /^(?:link\b)/i, /^(?:properties\b)/i, /^(?:details\b)/i, /^(?:over\b)/i, /^(?:note\b)/i, /^(?:activate\b)/i, /^(?:deactivate\b)/i, /^(?:title\s[^#\n;]+)/i, /^(?:title:\s[^#\n;]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:sequenceDiagram\b)/i, /^(?:autonumber\b)/i, /^(?:off\b)/i, /^(?:,)/i, /^(?:;)/i, /^(?:[^\+\<->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\<->\->:\n,;]+)*)/i, /^(?:->>)/i, /^(?:<<->>)/i, /^(?:-->>)/i, /^(?:<<-->>)/i, /^(?:->)/i, /^(?:-->)/i, /^(?:-[x])/i, /^(?:--[x])/i, /^(?:-[\)])/i, /^(?:--[\)])/i, /^(?::(?:(?:no)?wrap)?[^#\n;]+)/i, /^(?:\+)/i, /^(?:-)/i, /^(?:$)/i, /^(?:.)/i], - conditions: { "acc_descr_multiline": { "rules": [45, 46], "inclusive": false }, "acc_descr": { "rules": [43], "inclusive": false }, "acc_title": { "rules": [41], "inclusive": false }, "ID": { "rules": [2, 3, 12], "inclusive": false }, "ALIAS": { "rules": [2, 3, 13, 14], "inclusive": false }, "LINE": { "rules": [2, 3, 26], "inclusive": false }, "INITIAL": { "rules": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 44, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67], "inclusive": true } } - }; - return lexer3; - }(); - parser24.lexer = lexer2; - function Parser3() { - this.yy = {}; - } - __name(Parser3, "Parser"); - Parser3.prototype = parser24; - parser24.Parser = Parser3; - return new Parser3(); - }(); - parser12.parser = parser12; - sequenceDiagram_default = parser12; - } - }); - - // src/diagrams/sequence/sequenceDb.ts - var LINETYPE2, ARROWTYPE2, PLACEMENT2, SequenceDB; - var init_sequenceDb = __esm({ - "src/diagrams/sequence/sequenceDb.ts"() { - "use strict"; - init_diagramAPI(); - init_logger(); - init_imperativeState(); - init_common(); - init_commonDb(); - LINETYPE2 = { - SOLID: 0, - DOTTED: 1, - NOTE: 2, - SOLID_CROSS: 3, - DOTTED_CROSS: 4, - SOLID_OPEN: 5, - DOTTED_OPEN: 6, - LOOP_START: 10, - LOOP_END: 11, - ALT_START: 12, - ALT_ELSE: 13, - ALT_END: 14, - OPT_START: 15, - OPT_END: 16, - ACTIVE_START: 17, - ACTIVE_END: 18, - PAR_START: 19, - PAR_AND: 20, - PAR_END: 21, - RECT_START: 22, - RECT_END: 23, - SOLID_POINT: 24, - DOTTED_POINT: 25, - AUTONUMBER: 26, - CRITICAL_START: 27, - CRITICAL_OPTION: 28, - CRITICAL_END: 29, - BREAK_START: 30, - BREAK_END: 31, - PAR_OVER_START: 32, - BIDIRECTIONAL_SOLID: 33, - BIDIRECTIONAL_DOTTED: 34 - }; - ARROWTYPE2 = { - FILLED: 0, - OPEN: 1 - }; - PLACEMENT2 = { - LEFTOF: 0, - RIGHTOF: 1, - OVER: 2 - }; - SequenceDB = class { - constructor() { - this.state = new ImperativeState(() => ({ - prevActor: void 0, - actors: /* @__PURE__ */ new Map(), - createdActors: /* @__PURE__ */ new Map(), - destroyedActors: /* @__PURE__ */ new Map(), - boxes: [], - messages: [], - notes: [], - sequenceNumbersEnabled: false, - wrapEnabled: void 0, - currentBox: void 0, - lastCreated: void 0, - lastDestroyed: void 0 - })); - this.setAccTitle = setAccTitle; - this.setAccDescription = setAccDescription; - this.setDiagramTitle = setDiagramTitle; - this.getAccTitle = getAccTitle; - this.getAccDescription = getAccDescription; - this.getDiagramTitle = getDiagramTitle; - this.apply = this.apply.bind(this); - this.parseBoxData = this.parseBoxData.bind(this); - this.parseMessage = this.parseMessage.bind(this); - this.clear(); - this.setWrap(getConfig2().wrap); - this.LINETYPE = LINETYPE2; - this.ARROWTYPE = ARROWTYPE2; - this.PLACEMENT = PLACEMENT2; - } - static { - __name(this, "SequenceDB"); - } - addBox(data6) { - this.state.records.boxes.push({ - name: data6.text, - wrap: data6.wrap ?? this.autoWrap(), - fill: data6.color, - actorKeys: [] - }); - this.state.records.currentBox = this.state.records.boxes.slice(-1)[0]; - } - addActor(id29, name, description, type3) { - let assignedBox = this.state.records.currentBox; - const old = this.state.records.actors.get(id29); - if (old) { - if (this.state.records.currentBox && old.box && this.state.records.currentBox !== old.box) { - throw new Error( - `A same participant should only be defined in one Box: ${old.name} can't be in '${old.box.name}' and in '${this.state.records.currentBox.name}' at the same time.` - ); - } - assignedBox = old.box ? old.box : this.state.records.currentBox; - old.box = assignedBox; - if (old && name === old.name && description == null) { - return; - } - } - if (description?.text == null) { - description = { text: name, type: type3 }; - } - if (type3 == null || description.text == null) { - description = { text: name, type: type3 }; - } - this.state.records.actors.set(id29, { - box: assignedBox, - name, - description: description.text, - wrap: description.wrap ?? this.autoWrap(), - prevActor: this.state.records.prevActor, - links: {}, - properties: {}, - actorCnt: null, - rectData: null, - type: type3 ?? "participant" - }); - if (this.state.records.prevActor) { - const prevActorInRecords = this.state.records.actors.get(this.state.records.prevActor); - if (prevActorInRecords) { - prevActorInRecords.nextActor = id29; - } - } - if (this.state.records.currentBox) { - this.state.records.currentBox.actorKeys.push(id29); - } - this.state.records.prevActor = id29; - } - activationCount(part) { - let i2; - let count = 0; - if (!part) { - return 0; - } - for (i2 = 0; i2 < this.state.records.messages.length; i2++) { - if (this.state.records.messages[i2].type === this.LINETYPE.ACTIVE_START && this.state.records.messages[i2].from === part) { - count++; - } - if (this.state.records.messages[i2].type === this.LINETYPE.ACTIVE_END && this.state.records.messages[i2].from === part) { - count--; - } - } - return count; - } - addMessage(idFrom, idTo, message, answer) { - this.state.records.messages.push({ - id: this.state.records.messages.length.toString(), - from: idFrom, - to: idTo, - message: message.text, - wrap: message.wrap ?? this.autoWrap(), - answer - }); - } - addSignal(idFrom, idTo, message, messageType, activate = false) { - if (messageType === this.LINETYPE.ACTIVE_END) { - const cnt5 = this.activationCount(idFrom ?? ""); - if (cnt5 < 1) { - const error3 = new Error("Trying to inactivate an inactive participant (" + idFrom + ")"); - error3.hash = { - text: "->>-", - token: "->>-", - line: "1", - loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, - expected: ["'ACTIVE_PARTICIPANT'"] + if (!isFlat) { + return flatForest; + } + var visited = /* @__PURE__ */ new Set(); + var toBeVisited = []; + var parents3 = /* @__PURE__ */ new Map(); + var unProcessedNodes = []; + unProcessedNodes = unProcessedNodes.concat(allNodes); + while (unProcessedNodes.length > 0 && isForest) { + toBeVisited.push(unProcessedNodes[0]); + while (toBeVisited.length > 0 && isForest) { + var currentNode = toBeVisited[0]; + toBeVisited.splice(0, 1); + visited.add(currentNode); + var neighborEdges = currentNode.getEdges(); + for (var i2 = 0; i2 < neighborEdges.length; i2++) { + var currentNeighbor = neighborEdges[i2].getOtherEnd(currentNode); + if (parents3.get(currentNode) != currentNeighbor) { + if (!visited.has(currentNeighbor)) { + toBeVisited.push(currentNeighbor); + parents3.set(currentNeighbor, currentNode); + } else { + isForest = false; + break; + } + } + } + } + if (!isForest) { + flatForest = []; + } else { + var temp = [].concat(_toConsumableArray2(visited)); + flatForest.push(temp); + for (var i2 = 0; i2 < temp.length; i2++) { + var value2 = temp[i2]; + var index = unProcessedNodes.indexOf(value2); + if (index > -1) { + unProcessedNodes.splice(index, 1); + } + } + visited = /* @__PURE__ */ new Set(); + parents3 = /* @__PURE__ */ new Map(); + } + } + return flatForest; }; - throw error3; - } - } - this.state.records.messages.push({ - id: this.state.records.messages.length.toString(), - from: idFrom, - to: idTo, - message: message?.text ?? "", - wrap: message?.wrap ?? this.autoWrap(), - type: messageType, - activate - }); - return true; - } - hasAtLeastOneBox() { - return this.state.records.boxes.length > 0; - } - hasAtLeastOneBoxWithTitle() { - return this.state.records.boxes.some((b2) => b2.name); - } - getMessages() { - return this.state.records.messages; - } - getBoxes() { - return this.state.records.boxes; - } - getActors() { - return this.state.records.actors; - } - getCreatedActors() { - return this.state.records.createdActors; - } - getDestroyedActors() { - return this.state.records.destroyedActors; - } - getActor(id29) { - return this.state.records.actors.get(id29); - } - getActorKeys() { - return [...this.state.records.actors.keys()]; - } - enableSequenceNumbers() { - this.state.records.sequenceNumbersEnabled = true; - } - disableSequenceNumbers() { - this.state.records.sequenceNumbersEnabled = false; - } - showSequenceNumbers() { - return this.state.records.sequenceNumbersEnabled; - } - setWrap(wrapSetting) { - this.state.records.wrapEnabled = wrapSetting; - } - extractWrap(text4) { - if (text4 === void 0) { - return {}; - } - text4 = text4.trim(); - const wrap3 = /^:?wrap:/.exec(text4) !== null ? true : /^:?nowrap:/.exec(text4) !== null ? false : void 0; - const cleanedText = (wrap3 === void 0 ? text4 : text4.replace(/^:?(?:no)?wrap:/, "")).trim(); - return { cleanedText, wrap: wrap3 }; - } - autoWrap() { - if (this.state.records.wrapEnabled !== void 0) { - return this.state.records.wrapEnabled; - } - return getConfig2().sequence?.wrap ?? false; - } - clear() { - this.state.reset(); - clear(); - } - parseMessage(str2) { - const trimmedStr = str2.trim(); - const { wrap: wrap3, cleanedText } = this.extractWrap(trimmedStr); - const message = { - text: cleanedText, - wrap: wrap3 - }; - log.debug(`parseMessage: ${JSON.stringify(message)}`); - return message; - } - // We expect the box statement to be color first then description - // The color can be rgb,rgba,hsl,hsla, or css code names #hex codes are not supported for now because of the way the char # is handled - // We extract first segment as color, the rest of the line is considered as text - parseBoxData(str2) { - const match2 = /^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(str2); - let color2 = match2?.[1] ? match2[1].trim() : "transparent"; - let title2 = match2?.[2] ? match2[2].trim() : void 0; - if (window?.CSS) { - if (!window.CSS.supports("color", color2)) { - color2 = "transparent"; - title2 = str2.trim(); - } - } else { - const style3 = new Option().style; - style3.color = color2; - if (style3.color !== color2) { - color2 = "transparent"; - title2 = str2.trim(); - } - } - const { wrap: wrap3, cleanedText } = this.extractWrap(title2); - return { - text: cleanedText ? sanitizeText(cleanedText, getConfig2()) : void 0, - color: color2, - wrap: wrap3 - }; - } - addNote(actor, placement, message) { - const note3 = { - actor, - placement, - message: message.text, - wrap: message.wrap ?? this.autoWrap() - }; - const actors2 = [].concat(actor, actor); - this.state.records.notes.push(note3); - this.state.records.messages.push({ - id: this.state.records.messages.length.toString(), - from: actors2[0], - to: actors2[1], - message: message.text, - wrap: message.wrap ?? this.autoWrap(), - type: this.LINETYPE.NOTE, - placement - }); - } - addLinks(actorId, text4) { - const actor = this.getActor(actorId); - try { - let sanitizedText = sanitizeText(text4.text, getConfig2()); - sanitizedText = sanitizedText.replace(/=/g, "="); - sanitizedText = sanitizedText.replace(/&/g, "&"); - const links3 = JSON.parse(sanitizedText); - this.insertLinks(actor, links3); - } catch (e3) { - log.error("error while parsing actor link text", e3); - } - } - addALink(actorId, text4) { - const actor = this.getActor(actorId); - try { - const links3 = {}; - let sanitizedText = sanitizeText(text4.text, getConfig2()); - const sep2 = sanitizedText.indexOf("@"); - sanitizedText = sanitizedText.replace(/=/g, "="); - sanitizedText = sanitizedText.replace(/&/g, "&"); - const label = sanitizedText.slice(0, sep2 - 1).trim(); - const link3 = sanitizedText.slice(sep2 + 1).trim(); - links3[label] = link3; - this.insertLinks(actor, links3); - } catch (e3) { - log.error("error while parsing actor link text", e3); - } - } - insertLinks(actor, links3) { - if (actor.links == null) { - actor.links = links3; - } else { - for (const key in links3) { - actor.links[key] = links3[key]; - } - } - } - addProperties(actorId, text4) { - const actor = this.getActor(actorId); - try { - const sanitizedText = sanitizeText(text4.text, getConfig2()); - const properties = JSON.parse(sanitizedText); - this.insertProperties(actor, properties); - } catch (e3) { - log.error("error while parsing actor properties text", e3); - } - } - insertProperties(actor, properties) { - if (actor.properties == null) { - actor.properties = properties; - } else { - for (const key in properties) { - actor.properties[key] = properties[key]; - } - } - } - boxEnd() { - this.state.records.currentBox = void 0; - } - addDetails(actorId, text4) { - const actor = this.getActor(actorId); - const elem = document.getElementById(text4.text); - try { - const text5 = elem.innerHTML; - const details = JSON.parse(text5); - if (details.properties) { - this.insertProperties(actor, details.properties); - } - if (details.links) { - this.insertLinks(actor, details.links); - } - } catch (e3) { - log.error("error while parsing actor details text", e3); - } - } - getActorProperty(actor, key) { - if (actor?.properties !== void 0) { - return actor.properties[key]; - } - return void 0; - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-redundant-type-constituents - apply(param) { - if (Array.isArray(param)) { - param.forEach((item) => { - this.apply(item); - }); - } else { - switch (param.type) { - case "sequenceIndex": - this.state.records.messages.push({ - id: this.state.records.messages.length.toString(), - from: void 0, - to: void 0, - message: { - start: param.sequenceIndex, - step: param.sequenceIndexStep, - visible: param.sequenceVisible - }, - wrap: false, - type: param.signalType - }); - break; - case "addParticipant": - this.addActor(param.actor, param.actor, param.description, param.draw); - break; - case "createParticipant": - if (this.state.records.actors.has(param.actor)) { - throw new Error( - "It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior" - ); + Layout2.prototype.createDummyNodesForBendpoints = function(edge) { + var dummyNodes = []; + var prev2 = edge.source; + var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target); + for (var i2 = 0; i2 < edge.bendpoints.length; i2++) { + var dummyNode = this.newNode(null); + dummyNode.setRect(new Point(0, 0), new Dimension(1, 1)); + graph.add(dummyNode); + var dummyEdge = this.newEdge(null); + this.graphManager.add(dummyEdge, prev2, dummyNode); + dummyNodes.add(dummyNode); + prev2 = dummyNode; } - this.state.records.lastCreated = param.actor; - this.addActor(param.actor, param.actor, param.description, param.draw); - this.state.records.createdActors.set(param.actor, this.state.records.messages.length); - break; - case "destroyParticipant": - this.state.records.lastDestroyed = param.actor; - this.state.records.destroyedActors.set(param.actor, this.state.records.messages.length); - break; - case "activeStart": - this.addSignal(param.actor, void 0, void 0, param.signalType); - break; - case "activeEnd": - this.addSignal(param.actor, void 0, void 0, param.signalType); - break; - case "addNote": - this.addNote(param.actor, param.placement, param.text); - break; - case "addLinks": - this.addLinks(param.actor, param.text); - break; - case "addALink": - this.addALink(param.actor, param.text); - break; - case "addProperties": - this.addProperties(param.actor, param.text); - break; - case "addDetails": - this.addDetails(param.actor, param.text); - break; - case "addMessage": - if (this.state.records.lastCreated) { - if (param.to !== this.state.records.lastCreated) { - throw new Error( - "The created participant " + this.state.records.lastCreated.name + " does not have an associated creating message after its declaration. Please check the sequence diagram." - ); + var dummyEdge = this.newEdge(null); + this.graphManager.add(dummyEdge, prev2, edge.target); + this.edgeToDummyNodes.set(edge, dummyNodes); + if (edge.isInterGraph()) { + this.graphManager.remove(edge); + } else { + graph.remove(edge); + } + return dummyNodes; + }; + Layout2.prototype.createBendpointsFromDummyNodes = function() { + var edges3 = []; + edges3 = edges3.concat(this.graphManager.getAllEdges()); + edges3 = [].concat(_toConsumableArray2(this.edgeToDummyNodes.keys())).concat(edges3); + for (var k2 = 0; k2 < edges3.length; k2++) { + var lEdge = edges3[k2]; + if (lEdge.bendpoints.length > 0) { + var path4 = this.edgeToDummyNodes.get(lEdge); + for (var i2 = 0; i2 < path4.length; i2++) { + var dummyNode = path4[i2]; + var p3 = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY()); + var ebp = lEdge.bendpoints.get(i2); + ebp.x = p3.x; + ebp.y = p3.y; + dummyNode.getOwner().remove(dummyNode); + } + this.graphManager.add(lEdge, lEdge.source, lEdge.target); + } + } + }; + Layout2.transform = function(sliderValue, defaultValue, minDiv, maxMul) { + if (minDiv != void 0 && maxMul != void 0) { + var value2 = defaultValue; + if (sliderValue <= 50) { + var minValue = defaultValue / minDiv; + value2 -= (defaultValue - minValue) / 50 * (50 - sliderValue); } else { - this.state.records.lastCreated = void 0; + var maxValue = defaultValue * maxMul; + value2 += (maxValue - defaultValue) / 50 * (sliderValue - 50); } - } else if (this.state.records.lastDestroyed) { - if (param.to !== this.state.records.lastDestroyed && param.from !== this.state.records.lastDestroyed) { - throw new Error( - "The destroyed participant " + this.state.records.lastDestroyed.name + " does not have an associated destroying message after its declaration. Please check the sequence diagram." - ); + return value2; + } else { + var a2, b3; + if (sliderValue <= 50) { + a2 = 9 * defaultValue / 500; + b3 = defaultValue / 10; } else { - this.state.records.lastDestroyed = void 0; + a2 = 9 * defaultValue / 50; + b3 = -8 * defaultValue; } + return a2 * sliderValue + b3; } - this.addSignal(param.from, param.to, param.msg, param.signalType, param.activate); - break; - case "boxStart": - this.addBox(param.boxData); - break; - case "boxEnd": - this.boxEnd(); - break; - case "loopStart": - this.addSignal(void 0, void 0, param.loopText, param.signalType); - break; - case "loopEnd": - this.addSignal(void 0, void 0, void 0, param.signalType); - break; - case "rectStart": - this.addSignal(void 0, void 0, param.color, param.signalType); - break; - case "rectEnd": - this.addSignal(void 0, void 0, void 0, param.signalType); - break; - case "optStart": - this.addSignal(void 0, void 0, param.optText, param.signalType); - break; - case "optEnd": - this.addSignal(void 0, void 0, void 0, param.signalType); - break; - case "altStart": - this.addSignal(void 0, void 0, param.altText, param.signalType); - break; - case "else": - this.addSignal(void 0, void 0, param.altText, param.signalType); - break; - case "altEnd": - this.addSignal(void 0, void 0, void 0, param.signalType); - break; - case "setAccTitle": - setAccTitle(param.text); - break; - case "parStart": - this.addSignal(void 0, void 0, param.parText, param.signalType); - break; - case "and": - this.addSignal(void 0, void 0, param.parText, param.signalType); - break; - case "parEnd": - this.addSignal(void 0, void 0, void 0, param.signalType); - break; - case "criticalStart": - this.addSignal(void 0, void 0, param.criticalText, param.signalType); - break; - case "option": - this.addSignal(void 0, void 0, param.optionText, param.signalType); - break; - case "criticalEnd": - this.addSignal(void 0, void 0, void 0, param.signalType); - break; - case "breakStart": - this.addSignal(void 0, void 0, param.breakText, param.signalType); - break; - case "breakEnd": - this.addSignal(void 0, void 0, void 0, param.signalType); - break; - } - } - } - getConfig() { - return getConfig2().sequence; - } - }; - } - }); - - // src/diagrams/sequence/styles.js - var getStyles9, styles_default8; - var init_styles8 = __esm({ - "src/diagrams/sequence/styles.js"() { - "use strict"; - getStyles9 = /* @__PURE__ */ __name((options3) => `.actor { - stroke: ${options3.actorBorder}; - fill: ${options3.actorBkg}; - } - - text.actor > tspan { - fill: ${options3.actorTextColor}; - stroke: none; - } - - .actor-line { - stroke: ${options3.actorLineColor}; - } - - .messageLine0 { - stroke-width: 1.5; - stroke-dasharray: none; - stroke: ${options3.signalColor}; - } - - .messageLine1 { - stroke-width: 1.5; - stroke-dasharray: 2, 2; - stroke: ${options3.signalColor}; - } - - #arrowhead path { - fill: ${options3.signalColor}; - stroke: ${options3.signalColor}; - } - - .sequenceNumber { - fill: ${options3.sequenceNumberColor}; - } - - #sequencenumber { - fill: ${options3.signalColor}; - } - - #crosshead path { - fill: ${options3.signalColor}; - stroke: ${options3.signalColor}; - } - - .messageText { - fill: ${options3.signalTextColor}; - stroke: none; - } - - .labelBox { - stroke: ${options3.labelBoxBorderColor}; - fill: ${options3.labelBoxBkgColor}; - } - - .labelText, .labelText > tspan { - fill: ${options3.labelTextColor}; - stroke: none; - } - - .loopText, .loopText > tspan { - fill: ${options3.loopTextColor}; - stroke: none; - } - - .loopLine { - stroke-width: 2px; - stroke-dasharray: 2, 2; - stroke: ${options3.labelBoxBorderColor}; - fill: ${options3.labelBoxBorderColor}; - } - - .note { - //stroke: #decc93; - stroke: ${options3.noteBorderColor}; - fill: ${options3.noteBkgColor}; - } - - .noteText, .noteText > tspan { - fill: ${options3.noteTextColor}; - stroke: none; - } - - .activation0 { - fill: ${options3.activationBkgColor}; - stroke: ${options3.activationBorderColor}; - } - - .activation1 { - fill: ${options3.activationBkgColor}; - stroke: ${options3.activationBorderColor}; - } - - .activation2 { - fill: ${options3.activationBkgColor}; - stroke: ${options3.activationBorderColor}; - } - - .actorPopupMenu { - position: absolute; - } - - .actorPopupMenuPanel { - position: absolute; - fill: ${options3.actorBkg}; - box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); - filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); -} - .actor-man line { - stroke: ${options3.actorBorder}; - fill: ${options3.actorBkg}; - } - .actor-man circle, line { - stroke: ${options3.actorBorder}; - fill: ${options3.actorBkg}; - stroke-width: 2px; - } -`, "getStyles"); - styles_default8 = getStyles9; - } - }); - - // src/diagrams/sequence/svgDraw.js - var import_sanitize_url5, ACTOR_TYPE_WIDTH, TOP_ACTOR_CLASS, BOTTOM_ACTOR_CLASS, ACTOR_BOX_CLASS, ACTOR_MAN_FIGURE_CLASS, drawRect4, drawPopup, popupMenuToggle, drawKatex, drawText3, drawLabel, actorCnt, fixLifeLineHeights, drawActorTypeParticipant, drawActorTypeActor, drawActor, drawBox, anchorElement, drawActivation, drawLoop, drawBackgroundRect2, insertDatabaseIcon2, insertComputerIcon2, insertClockIcon2, insertArrowHead2, insertArrowFilledHead2, insertSequenceNumber, insertArrowCrossHead2, getTextObj3, getNoteRect2, _drawTextCandidateFunc2, _drawMenuItemTextCandidateFunc, svgDraw_default2; - var init_svgDraw2 = __esm({ - "src/diagrams/sequence/svgDraw.js"() { - "use strict"; - init_common(); - init_svgDrawCommon(); - init_utils2(); - import_sanitize_url5 = __toESM(require_dist(), 1); - init_config(); - ACTOR_TYPE_WIDTH = 18 * 2; - TOP_ACTOR_CLASS = "actor-top"; - BOTTOM_ACTOR_CLASS = "actor-bottom"; - ACTOR_BOX_CLASS = "actor-box"; - ACTOR_MAN_FIGURE_CLASS = "actor-man"; - drawRect4 = /* @__PURE__ */ __name(function(elem, rectData) { - return drawRect(elem, rectData); - }, "drawRect"); - drawPopup = /* @__PURE__ */ __name(function(elem, actor, minMenuWidth, textAttrs, forceMenus) { - if (actor.links === void 0 || actor.links === null || Object.keys(actor.links).length === 0) { - return { height: 0, width: 0 }; - } - const links3 = actor.links; - const actorCnt2 = actor.actorCnt; - const rectData = actor.rectData; - var displayValue = "none"; - if (forceMenus) { - displayValue = "block !important"; - } - const g2 = elem.append("g"); - g2.attr("id", "actor" + actorCnt2 + "_popup"); - g2.attr("class", "actorPopupMenu"); - g2.attr("display", displayValue); - var actorClass = ""; - if (rectData.class !== void 0) { - actorClass = " " + rectData.class; - } - let menuWidth = rectData.width > minMenuWidth ? rectData.width : minMenuWidth; - const rectElem = g2.append("rect"); - rectElem.attr("class", "actorPopupMenuPanel" + actorClass); - rectElem.attr("x", rectData.x); - rectElem.attr("y", rectData.height); - rectElem.attr("fill", rectData.fill); - rectElem.attr("stroke", rectData.stroke); - rectElem.attr("width", menuWidth); - rectElem.attr("height", rectData.height); - rectElem.attr("rx", rectData.rx); - rectElem.attr("ry", rectData.ry); - if (links3 != null) { - var linkY = 20; - for (let key in links3) { - var linkElem = g2.append("a"); - var sanitizedLink = (0, import_sanitize_url5.sanitizeUrl)(links3[key]); - linkElem.attr("xlink:href", sanitizedLink); - linkElem.attr("target", "_blank"); - _drawMenuItemTextCandidateFunc(textAttrs)( - key, - linkElem, - rectData.x + 10, - rectData.height + linkY, - menuWidth, - 20, - { class: "actor" }, - textAttrs - ); - linkY += 30; - } - } - rectElem.attr("height", linkY); - return { height: rectData.height + linkY, width: menuWidth }; - }, "drawPopup"); - popupMenuToggle = /* @__PURE__ */ __name(function(popId) { - return "var pu = document.getElementById('" + popId + "'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"; - }, "popupMenuToggle"); - drawKatex = /* @__PURE__ */ __name(async function(elem, textData, msgModel = null) { - let textElem = elem.append("foreignObject"); - const lines = await renderKatex(textData.text, getConfig()); - const divElem = textElem.append("xhtml:div").attr("style", "width: fit-content;").attr("xmlns", "http://www.w3.org/1999/xhtml").html(lines); - const dim = divElem.node().getBoundingClientRect(); - textElem.attr("height", Math.round(dim.height)).attr("width", Math.round(dim.width)); - if (textData.class === "noteText") { - const rectElem = elem.node().firstChild; - rectElem.setAttribute("height", dim.height + 2 * textData.textMargin); - const rectDim = rectElem.getBBox(); - textElem.attr("x", Math.round(rectDim.x + rectDim.width / 2 - dim.width / 2)).attr("y", Math.round(rectDim.y + rectDim.height / 2 - dim.height / 2)); - } else if (msgModel) { - let { startx, stopx, starty } = msgModel; - if (startx > stopx) { - const temp = startx; - startx = stopx; - stopx = temp; - } - textElem.attr("x", Math.round(startx + Math.abs(startx - stopx) / 2 - dim.width / 2)); - if (textData.class === "loopText") { - textElem.attr("y", Math.round(starty)); - } else { - textElem.attr("y", Math.round(starty - dim.height)); - } - } - return [textElem]; - }, "drawKatex"); - drawText3 = /* @__PURE__ */ __name(function(elem, textData) { - let prevTextHeight = 0; - let textHeight = 0; - const lines = textData.text.split(common_default.lineBreakRegex); - const [_textFontSize, _textFontSizePx] = parseFontSize(textData.fontSize); - let textElems = []; - let dy = 0; - let yfunc = /* @__PURE__ */ __name(() => textData.y, "yfunc"); - if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) { - switch (textData.valign) { - case "top": - case "start": - yfunc = /* @__PURE__ */ __name(() => Math.round(textData.y + textData.textMargin), "yfunc"); - break; - case "middle": - case "center": - yfunc = /* @__PURE__ */ __name(() => Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2), "yfunc"); - break; - case "bottom": - case "end": - yfunc = /* @__PURE__ */ __name(() => Math.round( - textData.y + (prevTextHeight + textHeight + 2 * textData.textMargin) - textData.textMargin - ), "yfunc"); - break; - } - } - if (textData.anchor !== void 0 && textData.textMargin !== void 0 && textData.width !== void 0) { - switch (textData.anchor) { - case "left": - case "start": - textData.x = Math.round(textData.x + textData.textMargin); - textData.anchor = "start"; - textData.dominantBaseline = "middle"; - textData.alignmentBaseline = "middle"; - break; - case "middle": - case "center": - textData.x = Math.round(textData.x + textData.width / 2); - textData.anchor = "middle"; - textData.dominantBaseline = "middle"; - textData.alignmentBaseline = "middle"; - break; - case "right": - case "end": - textData.x = Math.round(textData.x + textData.width - textData.textMargin); - textData.anchor = "end"; - textData.dominantBaseline = "middle"; - textData.alignmentBaseline = "middle"; - break; - } - } - for (let [i2, line2] of lines.entries()) { - if (textData.textMargin !== void 0 && textData.textMargin === 0 && _textFontSize !== void 0) { - dy = i2 * _textFontSize; - } - const textElem = elem.append("text"); - textElem.attr("x", textData.x); - textElem.attr("y", yfunc()); - if (textData.anchor !== void 0) { - textElem.attr("text-anchor", textData.anchor).attr("dominant-baseline", textData.dominantBaseline).attr("alignment-baseline", textData.alignmentBaseline); - } - if (textData.fontFamily !== void 0) { - textElem.style("font-family", textData.fontFamily); - } - if (_textFontSizePx !== void 0) { - textElem.style("font-size", _textFontSizePx); - } - if (textData.fontWeight !== void 0) { - textElem.style("font-weight", textData.fontWeight); - } - if (textData.fill !== void 0) { - textElem.attr("fill", textData.fill); - } - if (textData.class !== void 0) { - textElem.attr("class", textData.class); - } - if (textData.dy !== void 0) { - textElem.attr("dy", textData.dy); - } else if (dy !== 0) { - textElem.attr("dy", dy); - } - const text4 = line2 || ZERO_WIDTH_SPACE; - if (textData.tspan) { - const span = textElem.append("tspan"); - span.attr("x", textData.x); - if (textData.fill !== void 0) { - span.attr("fill", textData.fill); - } - span.text(text4); - } else { - textElem.text(text4); - } - if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) { - textHeight += (textElem._groups || textElem)[0][0].getBBox().height; - prevTextHeight = textHeight; - } - textElems.push(textElem); - } - return textElems; - }, "drawText"); - drawLabel = /* @__PURE__ */ __name(function(elem, txtObject) { - function genPoints(x5, y5, width3, height2, cut) { - return x5 + "," + y5 + " " + (x5 + width3) + "," + y5 + " " + (x5 + width3) + "," + (y5 + height2 - cut) + " " + (x5 + width3 - cut * 1.2) + "," + (y5 + height2) + " " + x5 + "," + (y5 + height2); - } - __name(genPoints, "genPoints"); - const polygon2 = elem.append("polygon"); - polygon2.attr("points", genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7)); - polygon2.attr("class", "labelBox"); - txtObject.y = txtObject.y + txtObject.height / 2; - drawText3(elem, txtObject); - return polygon2; - }, "drawLabel"); - actorCnt = -1; - fixLifeLineHeights = /* @__PURE__ */ __name((diagram26, actors2, actorKeys, conf5) => { - if (!diagram26.select) { - return; - } - actorKeys.forEach((actorKey) => { - const actor = actors2.get(actorKey); - const actorDOM = diagram26.select("#actor" + actor.actorCnt); - if (!conf5.mirrorActors && actor.stopy) { - actorDOM.attr("y2", actor.stopy + actor.height / 2); - } else if (conf5.mirrorActors) { - actorDOM.attr("y2", actor.stopy); - } - }); - }, "fixLifeLineHeights"); - drawActorTypeParticipant = /* @__PURE__ */ __name(function(elem, actor, conf5, isFooter) { - const actorY = isFooter ? actor.stopy : actor.starty; - const center4 = actor.x + actor.width / 2; - const centerY = actorY + actor.height; - const boxplusLineGroup = elem.append("g").lower(); - var g2 = boxplusLineGroup; - if (!isFooter) { - actorCnt++; - if (Object.keys(actor.links || {}).length && !conf5.forceMenus) { - g2.attr("onclick", popupMenuToggle(`actor${actorCnt}_popup`)).attr("cursor", "pointer"); - } - g2.append("line").attr("id", "actor" + actorCnt).attr("x1", center4).attr("y1", centerY).attr("x2", center4).attr("y2", 2e3).attr("class", "actor-line 200").attr("stroke-width", "0.5px").attr("stroke", "#999").attr("name", actor.name); - g2 = boxplusLineGroup.append("g"); - actor.actorCnt = actorCnt; - if (actor.links != null) { - g2.attr("id", "root-" + actorCnt); - } - } - const rect3 = getNoteRect(); - var cssclass = "actor"; - if (actor.properties?.class) { - cssclass = actor.properties.class; - } else { - rect3.fill = "#eaeaea"; - } - if (isFooter) { - cssclass += ` ${BOTTOM_ACTOR_CLASS}`; - } else { - cssclass += ` ${TOP_ACTOR_CLASS}`; - } - rect3.x = actor.x; - rect3.y = actorY; - rect3.width = actor.width; - rect3.height = actor.height; - rect3.class = cssclass; - rect3.rx = 3; - rect3.ry = 3; - rect3.name = actor.name; - const rectElem = drawRect4(g2, rect3); - actor.rectData = rect3; - if (actor.properties?.icon) { - const iconSrc = actor.properties.icon.trim(); - if (iconSrc.charAt(0) === "@") { - drawEmbeddedImage(g2, rect3.x + rect3.width - 20, rect3.y + 10, iconSrc.substr(1)); - } else { - drawImage(g2, rect3.x + rect3.width - 20, rect3.y + 10, iconSrc); - } - } - _drawTextCandidateFunc2(conf5, hasKatex(actor.description))( - actor.description, - g2, - rect3.x, - rect3.y, - rect3.width, - rect3.height, - { class: `actor ${ACTOR_BOX_CLASS}` }, - conf5 - ); - let height2 = actor.height; - if (rectElem.node) { - const bounds4 = rectElem.node().getBBox(); - actor.height = bounds4.height; - height2 = bounds4.height; - } - return height2; - }, "drawActorTypeParticipant"); - drawActorTypeActor = /* @__PURE__ */ __name(function(elem, actor, conf5, isFooter) { - const actorY = isFooter ? actor.stopy : actor.starty; - const center4 = actor.x + actor.width / 2; - const centerY = actorY + 80; - const line2 = elem.append("g").lower(); - if (!isFooter) { - actorCnt++; - line2.append("line").attr("id", "actor" + actorCnt).attr("x1", center4).attr("y1", centerY).attr("x2", center4).attr("y2", 2e3).attr("class", "actor-line 200").attr("stroke-width", "0.5px").attr("stroke", "#999").attr("name", actor.name); - actor.actorCnt = actorCnt; - } - const actElem = elem.append("g"); - let cssClass = ACTOR_MAN_FIGURE_CLASS; - if (isFooter) { - cssClass += ` ${BOTTOM_ACTOR_CLASS}`; - } else { - cssClass += ` ${TOP_ACTOR_CLASS}`; - } - actElem.attr("class", cssClass); - actElem.attr("name", actor.name); - const rect3 = getNoteRect(); - rect3.x = actor.x; - rect3.y = actorY; - rect3.fill = "#eaeaea"; - rect3.width = actor.width; - rect3.height = actor.height; - rect3.class = "actor"; - rect3.rx = 3; - rect3.ry = 3; - actElem.append("line").attr("id", "actor-man-torso" + actorCnt).attr("x1", center4).attr("y1", actorY + 25).attr("x2", center4).attr("y2", actorY + 45); - actElem.append("line").attr("id", "actor-man-arms" + actorCnt).attr("x1", center4 - ACTOR_TYPE_WIDTH / 2).attr("y1", actorY + 33).attr("x2", center4 + ACTOR_TYPE_WIDTH / 2).attr("y2", actorY + 33); - actElem.append("line").attr("x1", center4 - ACTOR_TYPE_WIDTH / 2).attr("y1", actorY + 60).attr("x2", center4).attr("y2", actorY + 45); - actElem.append("line").attr("x1", center4).attr("y1", actorY + 45).attr("x2", center4 + ACTOR_TYPE_WIDTH / 2 - 2).attr("y2", actorY + 60); - const circle6 = actElem.append("circle"); - circle6.attr("cx", actor.x + actor.width / 2); - circle6.attr("cy", actorY + 10); - circle6.attr("r", 15); - circle6.attr("width", actor.width); - circle6.attr("height", actor.height); - const bounds4 = actElem.node().getBBox(); - actor.height = bounds4.height; - _drawTextCandidateFunc2(conf5, hasKatex(actor.description))( - actor.description, - actElem, - rect3.x, - rect3.y + 35, - rect3.width, - rect3.height, - { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` }, - conf5 - ); - return actor.height; - }, "drawActorTypeActor"); - drawActor = /* @__PURE__ */ __name(async function(elem, actor, conf5, isFooter) { - switch (actor.type) { - case "actor": - return await drawActorTypeActor(elem, actor, conf5, isFooter); - case "participant": - return await drawActorTypeParticipant(elem, actor, conf5, isFooter); - } - }, "drawActor"); - drawBox = /* @__PURE__ */ __name(function(elem, box, conf5) { - const boxplusTextGroup = elem.append("g"); - const g2 = boxplusTextGroup; - drawBackgroundRect2(g2, box); - if (box.name) { - _drawTextCandidateFunc2(conf5)( - box.name, - g2, - box.x, - box.y + (box.textMaxHeight || 0) / 2, - box.width, - 0, - { class: "text" }, - conf5 - ); - } - g2.lower(); - }, "drawBox"); - anchorElement = /* @__PURE__ */ __name(function(elem) { - return elem.append("g"); - }, "anchorElement"); - drawActivation = /* @__PURE__ */ __name(function(elem, bounds4, verticalPos, conf5, actorActivations2) { - const rect3 = getNoteRect(); - const g2 = bounds4.anchored; - rect3.x = bounds4.startx; - rect3.y = bounds4.starty; - rect3.class = "activation" + actorActivations2 % 3; - rect3.width = bounds4.stopx - bounds4.startx; - rect3.height = verticalPos - bounds4.starty; - drawRect4(g2, rect3); - }, "drawActivation"); - drawLoop = /* @__PURE__ */ __name(async function(elem, loopModel, labelText, conf5) { - const { - boxMargin, - boxTextMargin, - labelBoxHeight, - labelBoxWidth, - messageFontFamily: fontFamily, - messageFontSize: fontSize, - messageFontWeight: fontWeight - } = conf5; - const g2 = elem.append("g"); - const drawLoopLine = /* @__PURE__ */ __name(function(startx, starty, stopx, stopy) { - return g2.append("line").attr("x1", startx).attr("y1", starty).attr("x2", stopx).attr("y2", stopy).attr("class", "loopLine"); - }, "drawLoopLine"); - drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty); - drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy); - drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy); - drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy); - if (loopModel.sections !== void 0) { - loopModel.sections.forEach(function(item) { - drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style( - "stroke-dasharray", - "3, 3" - ); - }); - } - let txt = getTextObj(); - txt.text = labelText; - txt.x = loopModel.startx; - txt.y = loopModel.starty; - txt.fontFamily = fontFamily; - txt.fontSize = fontSize; - txt.fontWeight = fontWeight; - txt.anchor = "middle"; - txt.valign = "middle"; - txt.tspan = false; - txt.width = labelBoxWidth || 50; - txt.height = labelBoxHeight || 20; - txt.textMargin = boxTextMargin; - txt.class = "labelText"; - drawLabel(g2, txt); - txt = getTextObj3(); - txt.text = loopModel.title; - txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2; - txt.y = loopModel.starty + boxMargin + boxTextMargin; - txt.anchor = "middle"; - txt.valign = "middle"; - txt.textMargin = boxTextMargin; - txt.class = "loopText"; - txt.fontFamily = fontFamily; - txt.fontSize = fontSize; - txt.fontWeight = fontWeight; - txt.wrap = true; - let textElem = hasKatex(txt.text) ? await drawKatex(g2, txt, loopModel) : drawText3(g2, txt); - if (loopModel.sectionTitles !== void 0) { - for (const [idx, item] of Object.entries(loopModel.sectionTitles)) { - if (item.message) { - txt.text = item.message; - txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2; - txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin; - txt.class = "loopText"; - txt.anchor = "middle"; - txt.valign = "middle"; - txt.tspan = false; - txt.fontFamily = fontFamily; - txt.fontSize = fontSize; - txt.fontWeight = fontWeight; - txt.wrap = loopModel.wrap; - if (hasKatex(txt.text)) { - loopModel.starty = loopModel.sections[idx].y; - await drawKatex(g2, txt, loopModel); - } else { - drawText3(g2, txt); + }; + Layout2.findCenterOfTree = function(nodes5) { + var list = []; + list = list.concat(nodes5); + var removedNodes = []; + var remainingDegrees = /* @__PURE__ */ new Map(); + var foundCenter = false; + var centerNode = null; + if (list.length == 1 || list.length == 2) { + foundCenter = true; + centerNode = list[0]; + } + for (var i2 = 0; i2 < list.length; i2++) { + var node2 = list[i2]; + var degree = node2.getNeighborsList().size; + remainingDegrees.set(node2, node2.getNeighborsList().size); + if (degree == 1) { + removedNodes.push(node2); + } + } + var tempList = []; + tempList = tempList.concat(removedNodes); + while (!foundCenter) { + var tempList2 = []; + tempList2 = tempList2.concat(tempList); + tempList = []; + for (var i2 = 0; i2 < list.length; i2++) { + var node2 = list[i2]; + var index = list.indexOf(node2); + if (index >= 0) { + list.splice(index, 1); + } + var neighbours = node2.getNeighborsList(); + neighbours.forEach(function(neighbour) { + if (removedNodes.indexOf(neighbour) < 0) { + var otherDegree = remainingDegrees.get(neighbour); + var newDegree = otherDegree - 1; + if (newDegree == 1) { + tempList.push(neighbour); + } + remainingDegrees.set(neighbour, newDegree); + } + }); + } + removedNodes = removedNodes.concat(tempList); + if (list.length == 1 || list.length == 2) { + foundCenter = true; + centerNode = list[0]; + } + } + return centerNode; + }; + Layout2.prototype.setGraphManager = function(gm) { + this.graphManager = gm; + }; + module3.exports = Layout2; + }), + /* 16 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function RandomSeed() { } - let sectionHeight = Math.round( - textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr) - ); - loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin); - } - } - } - loopModel.height = Math.round(loopModel.stopy - loopModel.starty); - return g2; - }, "drawLoop"); - drawBackgroundRect2 = /* @__PURE__ */ __name(function(elem, bounds4) { - drawBackgroundRect(elem, bounds4); - }, "drawBackgroundRect"); - insertDatabaseIcon2 = /* @__PURE__ */ __name(function(elem) { - elem.append("defs").append("symbol").attr("id", "database").attr("fill-rule", "evenodd").attr("clip-rule", "evenodd").append("path").attr("transform", "scale(.5)").attr( - "d", - "M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z" - ); - }, "insertDatabaseIcon"); - insertComputerIcon2 = /* @__PURE__ */ __name(function(elem) { - elem.append("defs").append("symbol").attr("id", "computer").attr("width", "24").attr("height", "24").append("path").attr("transform", "scale(.5)").attr( - "d", - "M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z" - ); - }, "insertComputerIcon"); - insertClockIcon2 = /* @__PURE__ */ __name(function(elem) { - elem.append("defs").append("symbol").attr("id", "clock").attr("width", "24").attr("height", "24").append("path").attr("transform", "scale(.5)").attr( - "d", - "M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z" - ); - }, "insertClockIcon"); - insertArrowHead2 = /* @__PURE__ */ __name(function(elem) { - elem.append("defs").append("marker").attr("id", "arrowhead").attr("refX", 7.9).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto-start-reverse").append("path").attr("d", "M -1 0 L 10 5 L 0 10 z"); - }, "insertArrowHead"); - insertArrowFilledHead2 = /* @__PURE__ */ __name(function(elem) { - elem.append("defs").append("marker").attr("id", "filled-head").attr("refX", 15.5).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z"); - }, "insertArrowFilledHead"); - insertSequenceNumber = /* @__PURE__ */ __name(function(elem) { - elem.append("defs").append("marker").attr("id", "sequencenumber").attr("refX", 15).attr("refY", 15).attr("markerWidth", 60).attr("markerHeight", 40).attr("orient", "auto").append("circle").attr("cx", 15).attr("cy", 15).attr("r", 6); - }, "insertSequenceNumber"); - insertArrowCrossHead2 = /* @__PURE__ */ __name(function(elem) { - const defs2 = elem.append("defs"); - const marker = defs2.append("marker").attr("id", "crosshead").attr("markerWidth", 15).attr("markerHeight", 8).attr("orient", "auto").attr("refX", 4).attr("refY", 4.5); - marker.append("path").attr("fill", "none").attr("stroke", "#000000").style("stroke-dasharray", "0, 0").attr("stroke-width", "1pt").attr("d", "M 1,2 L 6,7 M 6,2 L 1,7"); - }, "insertArrowCrossHead"); - getTextObj3 = /* @__PURE__ */ __name(function() { - return { - x: 0, - y: 0, - fill: void 0, - anchor: void 0, - style: "#666", - width: void 0, - height: void 0, - textMargin: 0, - rx: 0, - ry: 0, - tspan: true, - valign: void 0 - }; - }, "getTextObj"); - getNoteRect2 = /* @__PURE__ */ __name(function() { - return { - x: 0, - y: 0, - fill: "#EDF2AE", - stroke: "#666", - width: 100, - anchor: "start", - height: 100, - rx: 0, - ry: 0 - }; - }, "getNoteRect"); - _drawTextCandidateFunc2 = /* @__PURE__ */ function() { - function byText(content, g2, x5, y5, width3, height2, textAttrs) { - const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y5 + height2 / 2 + 5).style("text-anchor", "middle").text(content); - _setTextAttrs(text4, textAttrs); - } - __name(byText, "byText"); - function byTspan(content, g2, x5, y5, width3, height2, textAttrs, conf5) { - const { actorFontSize, actorFontFamily, actorFontWeight } = conf5; - const [_actorFontSize, _actorFontSizePx] = parseFontSize(actorFontSize); - const lines = content.split(common_default.lineBreakRegex); - for (let i2 = 0; i2 < lines.length; i2++) { - const dy = i2 * _actorFontSize - _actorFontSize * (lines.length - 1) / 2; - const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y5).style("text-anchor", "middle").style("font-size", _actorFontSizePx).style("font-weight", actorFontWeight).style("font-family", actorFontFamily); - text4.append("tspan").attr("x", x5 + width3 / 2).attr("dy", dy).text(lines[i2]); - text4.attr("y", y5 + height2 / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central"); - _setTextAttrs(text4, textAttrs); - } - } - __name(byTspan, "byTspan"); - function byFo(content, g2, x5, y5, width3, height2, textAttrs, conf5) { - const s2 = g2.append("switch"); - const f2 = s2.append("foreignObject").attr("x", x5).attr("y", y5).attr("width", width3).attr("height", height2); - const text4 = f2.append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); - text4.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(content); - byTspan(content, s2, x5, y5, width3, height2, textAttrs, conf5); - _setTextAttrs(text4, textAttrs); - } - __name(byFo, "byFo"); - async function byKatex(content, g2, x5, y5, width3, height2, textAttrs, conf5) { - const dim = await calculateMathMLDimensions(content, getConfig()); - const s2 = g2.append("switch"); - const f2 = s2.append("foreignObject").attr("x", x5 + width3 / 2 - dim.width / 2).attr("y", y5 + height2 / 2 - dim.height / 2).attr("width", dim.width).attr("height", dim.height); - const text4 = f2.append("xhtml:div").style("height", "100%").style("width", "100%"); - text4.append("div").style("text-align", "center").style("vertical-align", "middle").html(await renderKatex(content, getConfig())); - byTspan(content, s2, x5, y5, width3, height2, textAttrs, conf5); - _setTextAttrs(text4, textAttrs); - } - __name(byKatex, "byKatex"); - function _setTextAttrs(toText, fromTextAttrsDict) { - for (const key in fromTextAttrsDict) { - if (fromTextAttrsDict.hasOwnProperty(key)) { - toText.attr(key, fromTextAttrsDict[key]); - } - } - } - __name(_setTextAttrs, "_setTextAttrs"); - return function(conf5, hasKatex2 = false) { - if (hasKatex2) { - return byKatex; - } - return conf5.textPlacement === "fo" ? byFo : conf5.textPlacement === "old" ? byText : byTspan; - }; - }(); - _drawMenuItemTextCandidateFunc = /* @__PURE__ */ function() { - function byText(content, g2, x5, y5, width3, height2, textAttrs) { - const text4 = g2.append("text").attr("x", x5).attr("y", y5).style("text-anchor", "start").text(content); - _setTextAttrs(text4, textAttrs); - } - __name(byText, "byText"); - function byTspan(content, g2, x5, y5, width3, height2, textAttrs, conf5) { - const { actorFontSize, actorFontFamily, actorFontWeight } = conf5; - const lines = content.split(common_default.lineBreakRegex); - for (let i2 = 0; i2 < lines.length; i2++) { - const dy = i2 * actorFontSize - actorFontSize * (lines.length - 1) / 2; - const text4 = g2.append("text").attr("x", x5).attr("y", y5).style("text-anchor", "start").style("font-size", actorFontSize).style("font-weight", actorFontWeight).style("font-family", actorFontFamily); - text4.append("tspan").attr("x", x5).attr("dy", dy).text(lines[i2]); - text4.attr("y", y5 + height2 / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central"); - _setTextAttrs(text4, textAttrs); - } - } - __name(byTspan, "byTspan"); - function byFo(content, g2, x5, y5, width3, height2, textAttrs, conf5) { - const s2 = g2.append("switch"); - const f2 = s2.append("foreignObject").attr("x", x5).attr("y", y5).attr("width", width3).attr("height", height2); - const text4 = f2.append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); - text4.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(content); - byTspan(content, s2, x5, y5, width3, height2, textAttrs, conf5); - _setTextAttrs(text4, textAttrs); - } - __name(byFo, "byFo"); - function _setTextAttrs(toText, fromTextAttrsDict) { - for (const key in fromTextAttrsDict) { - if (fromTextAttrsDict.hasOwnProperty(key)) { - toText.attr(key, fromTextAttrsDict[key]); - } - } - } - __name(_setTextAttrs, "_setTextAttrs"); - return function(conf5) { - return conf5.textPlacement === "fo" ? byFo : conf5.textPlacement === "old" ? byText : byTspan; - }; - }(); - svgDraw_default2 = { - drawRect: drawRect4, - drawText: drawText3, - drawLabel, - drawActor, - drawBox, - drawPopup, - anchorElement, - drawActivation, - drawLoop, - drawBackgroundRect: drawBackgroundRect2, - insertArrowHead: insertArrowHead2, - insertArrowFilledHead: insertArrowFilledHead2, - insertSequenceNumber, - insertArrowCrossHead: insertArrowCrossHead2, - insertDatabaseIcon: insertDatabaseIcon2, - insertComputerIcon: insertComputerIcon2, - insertClockIcon: insertClockIcon2, - getTextObj: getTextObj3, - getNoteRect: getNoteRect2, - fixLifeLineHeights, - sanitizeUrl: import_sanitize_url5.sanitizeUrl - }; - } - }); - - // src/diagrams/sequence/sequenceRenderer.ts - async function boundMessage(_diagram, msgModel) { - bounds.bumpVerticalPos(10); - const { startx, stopx, message } = msgModel; - const lines = common_default.splitBreaks(message).length; - const isKatexMsg = hasKatex(message); - const textDims = isKatexMsg ? await calculateMathMLDimensions(message, getConfig2()) : utils_default2.calculateTextDimensions(message, messageFont2(conf2)); - if (!isKatexMsg) { - const lineHeight = textDims.height / lines; - msgModel.height += lineHeight; - bounds.bumpVerticalPos(lineHeight); - } - let lineStartY; - let totalOffset = textDims.height - 10; - const textWidth = textDims.width; - if (startx === stopx) { - lineStartY = bounds.getVerticalPos() + totalOffset; - if (!conf2.rightAngles) { - totalOffset += conf2.boxMargin; - lineStartY = bounds.getVerticalPos() + totalOffset; - } - totalOffset += 30; - const dx = common_default.getMax(textWidth / 2, conf2.width / 2); - bounds.insert( - startx - dx, - bounds.getVerticalPos() - 10 + totalOffset, - stopx + dx, - bounds.getVerticalPos() + 30 + totalOffset - ); - } else { - totalOffset += conf2.boxMargin; - lineStartY = bounds.getVerticalPos() + totalOffset; - bounds.insert(startx, lineStartY - 10, stopx, lineStartY); - } - bounds.bumpVerticalPos(totalOffset); - msgModel.height += totalOffset; - msgModel.stopy = msgModel.starty + msgModel.height; - bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy); - return lineStartY; - } - function adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) { - bounds.bumpVerticalPos(preMargin); - let heightAdjust = postMargin; - if (msg.id && msg.message && loopWidths[msg.id]) { - const loopWidth = loopWidths[msg.id].width; - const textConf = messageFont2(conf2); - msg.message = utils_default2.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf2.wrapPadding, textConf); - msg.width = loopWidth; - msg.wrap = true; - const textDims = utils_default2.calculateTextDimensions(msg.message, textConf); - const totalOffset = common_default.getMax(textDims.height, conf2.labelBoxHeight); - heightAdjust = postMargin + totalOffset; - log.debug(`${totalOffset} - ${msg.message}`); - } - addLoopFn(msg); - bounds.bumpVerticalPos(heightAdjust); - } - function adjustCreatedDestroyedData(msg, msgModel, lineStartY, index, actors2, createdActors, destroyedActors) { - function receiverAdjustment(actor, adjustment) { - if (actor.x < actors2.get(msg.from).x) { - bounds.insert( - msgModel.stopx - adjustment, - msgModel.starty, - msgModel.startx, - msgModel.stopy + actor.height / 2 + conf2.noteMargin - ); - msgModel.stopx = msgModel.stopx + adjustment; - } else { - bounds.insert( - msgModel.startx, - msgModel.starty, - msgModel.stopx + adjustment, - msgModel.stopy + actor.height / 2 + conf2.noteMargin - ); - msgModel.stopx = msgModel.stopx - adjustment; - } - } - __name(receiverAdjustment, "receiverAdjustment"); - function senderAdjustment(actor, adjustment) { - if (actor.x < actors2.get(msg.to).x) { - bounds.insert( - msgModel.startx - adjustment, - msgModel.starty, - msgModel.stopx, - msgModel.stopy + actor.height / 2 + conf2.noteMargin - ); - msgModel.startx = msgModel.startx + adjustment; - } else { - bounds.insert( - msgModel.stopx, - msgModel.starty, - msgModel.startx + adjustment, - msgModel.stopy + actor.height / 2 + conf2.noteMargin - ); - msgModel.startx = msgModel.startx - adjustment; - } - } - __name(senderAdjustment, "senderAdjustment"); - if (createdActors.get(msg.to) == index) { - const actor = actors2.get(msg.to); - const adjustment = actor.type == "actor" ? ACTOR_TYPE_WIDTH / 2 + 3 : actor.width / 2 + 3; - receiverAdjustment(actor, adjustment); - actor.starty = lineStartY - actor.height / 2; - bounds.bumpVerticalPos(actor.height / 2); - } else if (destroyedActors.get(msg.from) == index) { - const actor = actors2.get(msg.from); - if (conf2.mirrorActors) { - const adjustment = actor.type == "actor" ? ACTOR_TYPE_WIDTH / 2 : actor.width / 2; - senderAdjustment(actor, adjustment); - } - actor.stopy = lineStartY - actor.height / 2; - bounds.bumpVerticalPos(actor.height / 2); - } else if (destroyedActors.get(msg.to) == index) { - const actor = actors2.get(msg.to); - if (conf2.mirrorActors) { - const adjustment = actor.type == "actor" ? ACTOR_TYPE_WIDTH / 2 + 3 : actor.width / 2 + 3; - receiverAdjustment(actor, adjustment); - } - actor.stopy = lineStartY - actor.height / 2; - bounds.bumpVerticalPos(actor.height / 2); - } - } - async function getMaxMessageWidthPerActor(actors2, messages, diagObj) { - const maxMessageWidthPerActor = {}; - for (const msg of messages) { - if (actors2.get(msg.to) && actors2.get(msg.from)) { - const actor = actors2.get(msg.to); - if (msg.placement === diagObj.db.PLACEMENT.LEFTOF && !actor.prevActor) { - continue; - } - if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF && !actor.nextActor) { - continue; - } - const isNote = msg.placement !== void 0; - const isMessage = !isNote; - const textFont = isNote ? noteFont(conf2) : messageFont2(conf2); - const wrappedMessage = msg.wrap ? utils_default2.wrapLabel(msg.message, conf2.width - 2 * conf2.wrapPadding, textFont) : msg.message; - const messageDimensions = hasKatex(wrappedMessage) ? await calculateMathMLDimensions(msg.message, getConfig2()) : utils_default2.calculateTextDimensions(wrappedMessage, textFont); - const messageWidth = messageDimensions.width + 2 * conf2.wrapPadding; - if (isMessage && msg.from === actor.nextActor) { - maxMessageWidthPerActor[msg.to] = common_default.getMax( - maxMessageWidthPerActor[msg.to] || 0, - messageWidth - ); - } else if (isMessage && msg.from === actor.prevActor) { - maxMessageWidthPerActor[msg.from] = common_default.getMax( - maxMessageWidthPerActor[msg.from] || 0, - messageWidth - ); - } else if (isMessage && msg.from === msg.to) { - maxMessageWidthPerActor[msg.from] = common_default.getMax( - maxMessageWidthPerActor[msg.from] || 0, - messageWidth / 2 - ); - maxMessageWidthPerActor[msg.to] = common_default.getMax( - maxMessageWidthPerActor[msg.to] || 0, - messageWidth / 2 - ); - } else if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) { - maxMessageWidthPerActor[msg.from] = common_default.getMax( - maxMessageWidthPerActor[msg.from] || 0, - messageWidth - ); - } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) { - maxMessageWidthPerActor[actor.prevActor] = common_default.getMax( - maxMessageWidthPerActor[actor.prevActor] || 0, - messageWidth - ); - } else if (msg.placement === diagObj.db.PLACEMENT.OVER) { - if (actor.prevActor) { - maxMessageWidthPerActor[actor.prevActor] = common_default.getMax( - maxMessageWidthPerActor[actor.prevActor] || 0, - messageWidth / 2 - ); - } - if (actor.nextActor) { - maxMessageWidthPerActor[msg.from] = common_default.getMax( - maxMessageWidthPerActor[msg.from] || 0, - messageWidth / 2 - ); - } - } - } - } - log.debug("maxMessageWidthPerActor:", maxMessageWidthPerActor); - return maxMessageWidthPerActor; - } - async function calculateActorMargins(actors2, actorToMessageWidth, boxes) { - let maxHeight = 0; - for (const prop of actors2.keys()) { - const actor = actors2.get(prop); - if (actor.wrap) { - actor.description = utils_default2.wrapLabel( - actor.description, - conf2.width - 2 * conf2.wrapPadding, - actorFont(conf2) - ); - } - const actDims = hasKatex(actor.description) ? await calculateMathMLDimensions(actor.description, getConfig2()) : utils_default2.calculateTextDimensions(actor.description, actorFont(conf2)); - actor.width = actor.wrap ? conf2.width : common_default.getMax(conf2.width, actDims.width + 2 * conf2.wrapPadding); - actor.height = actor.wrap ? common_default.getMax(actDims.height, conf2.height) : conf2.height; - maxHeight = common_default.getMax(maxHeight, actor.height); - } - for (const actorKey in actorToMessageWidth) { - const actor = actors2.get(actorKey); - if (!actor) { - continue; - } - const nextActor = actors2.get(actor.nextActor); - if (!nextActor) { - const messageWidth2 = actorToMessageWidth[actorKey]; - const actorWidth2 = messageWidth2 + conf2.actorMargin - actor.width / 2; - actor.margin = common_default.getMax(actorWidth2, conf2.actorMargin); - continue; - } - const messageWidth = actorToMessageWidth[actorKey]; - const actorWidth = messageWidth + conf2.actorMargin - actor.width / 2 - nextActor.width / 2; - actor.margin = common_default.getMax(actorWidth, conf2.actorMargin); - } - let maxBoxHeight = 0; - boxes.forEach((box) => { - const textFont = messageFont2(conf2); - let totalWidth = box.actorKeys.reduce((total, aKey) => { - return total += actors2.get(aKey).width + (actors2.get(aKey).margin || 0); - }, 0); - totalWidth -= 2 * conf2.boxTextMargin; - if (box.wrap) { - box.name = utils_default2.wrapLabel(box.name, totalWidth - 2 * conf2.wrapPadding, textFont); - } - const boxMsgDimensions = utils_default2.calculateTextDimensions(box.name, textFont); - maxBoxHeight = common_default.getMax(boxMsgDimensions.height, maxBoxHeight); - const minWidth = common_default.getMax(totalWidth, boxMsgDimensions.width + 2 * conf2.wrapPadding); - box.margin = conf2.boxTextMargin; - if (totalWidth < minWidth) { - const missing = (minWidth - totalWidth) / 2; - box.margin += missing; - } - }); - boxes.forEach((box) => box.textMaxHeight = maxBoxHeight); - return common_default.getMax(maxHeight, conf2.height); - } - var conf2, bounds, drawNote, messageFont2, noteFont, actorFont, drawMessage, addActorRenderingData, drawActors, drawActorsPopup, setConf3, actorActivations, activationBounds, draw11, getRequiredPopupWidth, buildNoteModel, buildMessageModel, calculateLoopBounds, sequenceRenderer_default; - var init_sequenceRenderer = __esm({ - "src/diagrams/sequence/sequenceRenderer.ts"() { - "use strict"; - init_src32(); - init_svgDraw2(); - init_logger(); - init_common(); - init_svgDrawCommon(); - init_diagramAPI(); - init_assignWithDepth(); - init_utils2(); - init_setupGraphViewbox(); - conf2 = {}; - bounds = { - data: { - startx: void 0, - stopx: void 0, - starty: void 0, - stopy: void 0 - }, - verticalPos: 0, - sequenceItems: [], - activations: [], - models: { - getHeight: /* @__PURE__ */ __name(function() { - return Math.max.apply( - null, - this.actors.length === 0 ? [0] : this.actors.map((actor) => actor.height || 0) - ) + (this.loops.length === 0 ? 0 : this.loops.map((it) => it.height || 0).reduce((acc, h2) => acc + h2)) + (this.messages.length === 0 ? 0 : this.messages.map((it) => it.height || 0).reduce((acc, h2) => acc + h2)) + (this.notes.length === 0 ? 0 : this.notes.map((it) => it.height || 0).reduce((acc, h2) => acc + h2)); - }, "getHeight"), - clear: /* @__PURE__ */ __name(function() { - this.actors = []; - this.boxes = []; - this.loops = []; - this.messages = []; - this.notes = []; - }, "clear"), - addBox: /* @__PURE__ */ __name(function(boxModel) { - this.boxes.push(boxModel); - }, "addBox"), - addActor: /* @__PURE__ */ __name(function(actorModel) { - this.actors.push(actorModel); - }, "addActor"), - addLoop: /* @__PURE__ */ __name(function(loopModel) { - this.loops.push(loopModel); - }, "addLoop"), - addMessage: /* @__PURE__ */ __name(function(msgModel) { - this.messages.push(msgModel); - }, "addMessage"), - addNote: /* @__PURE__ */ __name(function(noteModel) { - this.notes.push(noteModel); - }, "addNote"), - lastActor: /* @__PURE__ */ __name(function() { - return this.actors[this.actors.length - 1]; - }, "lastActor"), - lastLoop: /* @__PURE__ */ __name(function() { - return this.loops[this.loops.length - 1]; - }, "lastLoop"), - lastMessage: /* @__PURE__ */ __name(function() { - return this.messages[this.messages.length - 1]; - }, "lastMessage"), - lastNote: /* @__PURE__ */ __name(function() { - return this.notes[this.notes.length - 1]; - }, "lastNote"), - actors: [], - boxes: [], - loops: [], - messages: [], - notes: [] - }, - init: /* @__PURE__ */ __name(function() { - this.sequenceItems = []; - this.activations = []; - this.models.clear(); - this.data = { - startx: void 0, - stopx: void 0, - starty: void 0, - stopy: void 0 - }; - this.verticalPos = 0; - setConf3(getConfig2()); - }, "init"), - updateVal: /* @__PURE__ */ __name(function(obj, key, val, fun) { - if (obj[key] === void 0) { - obj[key] = val; - } else { - obj[key] = fun(val, obj[key]); - } - }, "updateVal"), - updateBounds: /* @__PURE__ */ __name(function(startx, starty, stopx, stopy) { - const _self = this; - let cnt5 = 0; - function updateFn(type3) { - return /* @__PURE__ */ __name(function updateItemBounds(item) { - cnt5++; - const n2 = _self.sequenceItems.length - cnt5 + 1; - _self.updateVal(item, "starty", starty - n2 * conf2.boxMargin, Math.min); - _self.updateVal(item, "stopy", stopy + n2 * conf2.boxMargin, Math.max); - _self.updateVal(bounds.data, "startx", startx - n2 * conf2.boxMargin, Math.min); - _self.updateVal(bounds.data, "stopx", stopx + n2 * conf2.boxMargin, Math.max); - if (!(type3 === "activation")) { - _self.updateVal(item, "startx", startx - n2 * conf2.boxMargin, Math.min); - _self.updateVal(item, "stopx", stopx + n2 * conf2.boxMargin, Math.max); - _self.updateVal(bounds.data, "starty", starty - n2 * conf2.boxMargin, Math.min); - _self.updateVal(bounds.data, "stopy", stopy + n2 * conf2.boxMargin, Math.max); + __name(RandomSeed, "RandomSeed"); + RandomSeed.seed = 1; + RandomSeed.x = 0; + RandomSeed.nextDouble = function() { + RandomSeed.x = Math.sin(RandomSeed.seed++) * 1e4; + return RandomSeed.x - Math.floor(RandomSeed.x); + }; + module3.exports = RandomSeed; + }), + /* 17 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var PointD = __webpack_require__(4); + function Transform2(x5, y6) { + this.lworldOrgX = 0; + this.lworldOrgY = 0; + this.ldeviceOrgX = 0; + this.ldeviceOrgY = 0; + this.lworldExtX = 1; + this.lworldExtY = 1; + this.ldeviceExtX = 1; + this.ldeviceExtY = 1; } - }, "updateItemBounds"); - } - __name(updateFn, "updateFn"); - this.sequenceItems.forEach(updateFn()); - this.activations.forEach(updateFn("activation")); - }, "updateBounds"), - insert: /* @__PURE__ */ __name(function(startx, starty, stopx, stopy) { - const _startx = common_default.getMin(startx, stopx); - const _stopx = common_default.getMax(startx, stopx); - const _starty = common_default.getMin(starty, stopy); - const _stopy = common_default.getMax(starty, stopy); - this.updateVal(bounds.data, "startx", _startx, Math.min); - this.updateVal(bounds.data, "starty", _starty, Math.min); - this.updateVal(bounds.data, "stopx", _stopx, Math.max); - this.updateVal(bounds.data, "stopy", _stopy, Math.max); - this.updateBounds(_startx, _starty, _stopx, _stopy); - }, "insert"), - newActivation: /* @__PURE__ */ __name(function(message, diagram26, actors2) { - const actorRect = actors2.get(message.from); - const stackedSize = actorActivations(message.from).length || 0; - const x5 = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf2.activationWidth / 2; - this.activations.push({ - startx: x5, - starty: this.verticalPos + 2, - stopx: x5 + conf2.activationWidth, - stopy: void 0, - actor: message.from, - anchored: svgDraw_default2.anchorElement(diagram26) - }); - }, "newActivation"), - endActivation: /* @__PURE__ */ __name(function(message) { - const lastActorActivationIdx = this.activations.map(function(activation) { - return activation.actor; - }).lastIndexOf(message.from); - return this.activations.splice(lastActorActivationIdx, 1)[0]; - }, "endActivation"), - createLoop: /* @__PURE__ */ __name(function(title2 = { message: void 0, wrap: false, width: void 0 }, fill) { - return { - startx: void 0, - starty: this.verticalPos, - stopx: void 0, - stopy: void 0, - title: title2.message, - wrap: title2.wrap, - width: title2.width, - height: 0, - fill - }; - }, "createLoop"), - newLoop: /* @__PURE__ */ __name(function(title2 = { message: void 0, wrap: false, width: void 0 }, fill) { - this.sequenceItems.push(this.createLoop(title2, fill)); - }, "newLoop"), - endLoop: /* @__PURE__ */ __name(function() { - return this.sequenceItems.pop(); - }, "endLoop"), - isLoopOverlap: /* @__PURE__ */ __name(function() { - return this.sequenceItems.length ? this.sequenceItems[this.sequenceItems.length - 1].overlap : false; - }, "isLoopOverlap"), - addSectionToLoop: /* @__PURE__ */ __name(function(message) { - const loop = this.sequenceItems.pop(); - loop.sections = loop.sections || []; - loop.sectionTitles = loop.sectionTitles || []; - loop.sections.push({ y: bounds.getVerticalPos(), height: 0 }); - loop.sectionTitles.push(message); - this.sequenceItems.push(loop); - }, "addSectionToLoop"), - saveVerticalPos: /* @__PURE__ */ __name(function() { - if (this.isLoopOverlap()) { - this.savedVerticalPos = this.verticalPos; - } - }, "saveVerticalPos"), - resetVerticalPos: /* @__PURE__ */ __name(function() { - if (this.isLoopOverlap()) { - this.verticalPos = this.savedVerticalPos; - } - }, "resetVerticalPos"), - bumpVerticalPos: /* @__PURE__ */ __name(function(bump) { - this.verticalPos = this.verticalPos + bump; - this.data.stopy = common_default.getMax(this.data.stopy, this.verticalPos); - }, "bumpVerticalPos"), - getVerticalPos: /* @__PURE__ */ __name(function() { - return this.verticalPos; - }, "getVerticalPos"), - getBounds: /* @__PURE__ */ __name(function() { - return { bounds: this.data, models: this.models }; - }, "getBounds") - }; - drawNote = /* @__PURE__ */ __name(async function(elem, noteModel) { - bounds.bumpVerticalPos(conf2.boxMargin); - noteModel.height = conf2.boxMargin; - noteModel.starty = bounds.getVerticalPos(); - const rect3 = getNoteRect(); - rect3.x = noteModel.startx; - rect3.y = noteModel.starty; - rect3.width = noteModel.width || conf2.width; - rect3.class = "note"; - const g2 = elem.append("g"); - const rectElem = svgDraw_default2.drawRect(g2, rect3); - const textObj = getTextObj(); - textObj.x = noteModel.startx; - textObj.y = noteModel.starty; - textObj.width = rect3.width; - textObj.dy = "1em"; - textObj.text = noteModel.message; - textObj.class = "noteText"; - textObj.fontFamily = conf2.noteFontFamily; - textObj.fontSize = conf2.noteFontSize; - textObj.fontWeight = conf2.noteFontWeight; - textObj.anchor = conf2.noteAlign; - textObj.textMargin = conf2.noteMargin; - textObj.valign = "center"; - const textElem = hasKatex(textObj.text) ? await drawKatex(g2, textObj) : drawText3(g2, textObj); - const textHeight = Math.round( - textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr) - ); - rectElem.attr("height", textHeight + 2 * conf2.noteMargin); - noteModel.height += textHeight + 2 * conf2.noteMargin; - bounds.bumpVerticalPos(textHeight + 2 * conf2.noteMargin); - noteModel.stopy = noteModel.starty + textHeight + 2 * conf2.noteMargin; - noteModel.stopx = noteModel.startx + rect3.width; - bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy); - bounds.models.addNote(noteModel); - }, "drawNote"); - messageFont2 = /* @__PURE__ */ __name((cnf) => { - return { - fontFamily: cnf.messageFontFamily, - fontSize: cnf.messageFontSize, - fontWeight: cnf.messageFontWeight - }; - }, "messageFont"); - noteFont = /* @__PURE__ */ __name((cnf) => { - return { - fontFamily: cnf.noteFontFamily, - fontSize: cnf.noteFontSize, - fontWeight: cnf.noteFontWeight - }; - }, "noteFont"); - actorFont = /* @__PURE__ */ __name((cnf) => { - return { - fontFamily: cnf.actorFontFamily, - fontSize: cnf.actorFontSize, - fontWeight: cnf.actorFontWeight - }; - }, "actorFont"); - __name(boundMessage, "boundMessage"); - drawMessage = /* @__PURE__ */ __name(async function(diagram26, msgModel, lineStartY, diagObj) { - const { startx, stopx, starty, message, type: type3, sequenceIndex, sequenceVisible } = msgModel; - const textDims = utils_default2.calculateTextDimensions(message, messageFont2(conf2)); - const textObj = getTextObj(); - textObj.x = startx; - textObj.y = starty + 10; - textObj.width = stopx - startx; - textObj.class = "messageText"; - textObj.dy = "1em"; - textObj.text = message; - textObj.fontFamily = conf2.messageFontFamily; - textObj.fontSize = conf2.messageFontSize; - textObj.fontWeight = conf2.messageFontWeight; - textObj.anchor = conf2.messageAlign; - textObj.valign = "center"; - textObj.textMargin = conf2.wrapPadding; - textObj.tspan = false; - if (hasKatex(textObj.text)) { - await drawKatex(diagram26, textObj, { startx, stopx, starty: lineStartY }); - } else { - drawText3(diagram26, textObj); - } - const textWidth = textDims.width; - let line2; - if (startx === stopx) { - if (conf2.rightAngles) { - line2 = diagram26.append("path").attr( - "d", - `M ${startx},${lineStartY} H ${startx + common_default.getMax(conf2.width / 2, textWidth / 2)} V ${lineStartY + 25} H ${startx}` - ); - } else { - line2 = diagram26.append("path").attr( - "d", - "M " + startx + "," + lineStartY + " C " + (startx + 60) + "," + (lineStartY - 10) + " " + (startx + 60) + "," + (lineStartY + 30) + " " + startx + "," + (lineStartY + 20) - ); - } - } else { - line2 = diagram26.append("line"); - line2.attr("x1", startx); - line2.attr("y1", lineStartY); - line2.attr("x2", stopx); - line2.attr("y2", lineStartY); - } - if (type3 === diagObj.db.LINETYPE.DOTTED || type3 === diagObj.db.LINETYPE.DOTTED_CROSS || type3 === diagObj.db.LINETYPE.DOTTED_POINT || type3 === diagObj.db.LINETYPE.DOTTED_OPEN || type3 === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED) { - line2.style("stroke-dasharray", "3, 3"); - line2.attr("class", "messageLine1"); - } else { - line2.attr("class", "messageLine0"); - } - let url = ""; - if (conf2.arrowMarkerAbsolute) { - url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search; - url = url.replace(/\(/g, "\\("); - url = url.replace(/\)/g, "\\)"); - } - line2.attr("stroke-width", 2); - line2.attr("stroke", "none"); - line2.style("fill", "none"); - if (type3 === diagObj.db.LINETYPE.SOLID || type3 === diagObj.db.LINETYPE.DOTTED) { - line2.attr("marker-end", "url(" + url + "#arrowhead)"); - } - if (type3 === diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID || type3 === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED) { - line2.attr("marker-start", "url(" + url + "#arrowhead)"); - line2.attr("marker-end", "url(" + url + "#arrowhead)"); - } - if (type3 === diagObj.db.LINETYPE.SOLID_POINT || type3 === diagObj.db.LINETYPE.DOTTED_POINT) { - line2.attr("marker-end", "url(" + url + "#filled-head)"); - } - if (type3 === diagObj.db.LINETYPE.SOLID_CROSS || type3 === diagObj.db.LINETYPE.DOTTED_CROSS) { - line2.attr("marker-end", "url(" + url + "#crosshead)"); - } - if (sequenceVisible || conf2.showSequenceNumbers) { - line2.attr("marker-start", "url(" + url + "#sequencenumber)"); - diagram26.append("text").attr("x", startx).attr("y", lineStartY + 4).attr("font-family", "sans-serif").attr("font-size", "12px").attr("text-anchor", "middle").attr("class", "sequenceNumber").text(sequenceIndex); - } - }, "drawMessage"); - addActorRenderingData = /* @__PURE__ */ __name(function(diagram26, actors2, createdActors, actorKeys, verticalPos, messages, isFooter) { - let prevWidth = 0; - let prevMargin = 0; - let prevBox = void 0; - let maxHeight = 0; - for (const actorKey of actorKeys) { - const actor = actors2.get(actorKey); - const box = actor.box; - if (prevBox && prevBox != box) { - if (!isFooter) { - bounds.models.addBox(prevBox); - } - prevMargin += conf2.boxMargin + prevBox.margin; - } - if (box && box != prevBox) { - if (!isFooter) { - box.x = prevWidth + prevMargin; - box.y = verticalPos; - } - prevMargin += box.margin; - } - actor.width = actor.width || conf2.width; - actor.height = common_default.getMax(actor.height || conf2.height, conf2.height); - actor.margin = actor.margin || conf2.actorMargin; - maxHeight = common_default.getMax(maxHeight, actor.height); - if (createdActors.get(actor.name)) { - prevMargin += actor.width / 2; - } - actor.x = prevWidth + prevMargin; - actor.starty = bounds.getVerticalPos(); - bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height); - prevWidth += actor.width + prevMargin; - if (actor.box) { - actor.box.width = prevWidth + box.margin - actor.box.x; - } - prevMargin = actor.margin; - prevBox = actor.box; - bounds.models.addActor(actor); - } - if (prevBox && !isFooter) { - bounds.models.addBox(prevBox); - } - bounds.bumpVerticalPos(maxHeight); - }, "addActorRenderingData"); - drawActors = /* @__PURE__ */ __name(async function(diagram26, actors2, actorKeys, isFooter) { - if (!isFooter) { - for (const actorKey of actorKeys) { - const actor = actors2.get(actorKey); - await svgDraw_default2.drawActor(diagram26, actor, conf2, false); - } - } else { - let maxHeight = 0; - bounds.bumpVerticalPos(conf2.boxMargin * 2); - for (const actorKey of actorKeys) { - const actor = actors2.get(actorKey); - if (!actor.stopy) { - actor.stopy = bounds.getVerticalPos(); - } - const height2 = await svgDraw_default2.drawActor(diagram26, actor, conf2, true); - maxHeight = common_default.getMax(maxHeight, height2); - } - bounds.bumpVerticalPos(maxHeight + conf2.boxMargin); - } - }, "drawActors"); - drawActorsPopup = /* @__PURE__ */ __name(function(diagram26, actors2, actorKeys, doc) { - let maxHeight = 0; - let maxWidth = 0; - for (const actorKey of actorKeys) { - const actor = actors2.get(actorKey); - const minMenuWidth = getRequiredPopupWidth(actor); - const menuDimensions = svgDraw_default2.drawPopup( - diagram26, - actor, - minMenuWidth, - conf2, - conf2.forceMenus, - doc - ); - if (menuDimensions.height > maxHeight) { - maxHeight = menuDimensions.height; - } - if (menuDimensions.width + actor.x > maxWidth) { - maxWidth = menuDimensions.width + actor.x; - } - } - return { maxHeight, maxWidth }; - }, "drawActorsPopup"); - setConf3 = /* @__PURE__ */ __name(function(cnf) { - assignWithDepth_default(conf2, cnf); - if (cnf.fontFamily) { - conf2.actorFontFamily = conf2.noteFontFamily = conf2.messageFontFamily = cnf.fontFamily; - } - if (cnf.fontSize) { - conf2.actorFontSize = conf2.noteFontSize = conf2.messageFontSize = cnf.fontSize; - } - if (cnf.fontWeight) { - conf2.actorFontWeight = conf2.noteFontWeight = conf2.messageFontWeight = cnf.fontWeight; - } - }, "setConf"); - actorActivations = /* @__PURE__ */ __name(function(actor) { - return bounds.activations.filter(function(activation) { - return activation.actor === actor; - }); - }, "actorActivations"); - activationBounds = /* @__PURE__ */ __name(function(actor, actors2) { - const actorObj = actors2.get(actor); - const activations = actorActivations(actor); - const left3 = activations.reduce( - function(acc, activation) { - return common_default.getMin(acc, activation.startx); - }, - actorObj.x + actorObj.width / 2 - 1 - ); - const right3 = activations.reduce( - function(acc, activation) { - return common_default.getMax(acc, activation.stopx); - }, - actorObj.x + actorObj.width / 2 + 1 - ); - return [left3, right3]; - }, "activationBounds"); - __name(adjustLoopHeightForWrap, "adjustLoopHeightForWrap"); - __name(adjustCreatedDestroyedData, "adjustCreatedDestroyedData"); - draw11 = /* @__PURE__ */ __name(async function(_text, id29, _version, diagObj) { - const { securityLevel, sequence } = getConfig2(); - conf2 = sequence; - let sandboxElement; - if (securityLevel === "sandbox") { - sandboxElement = select_default2("#i" + id29); - } - const root4 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); - const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document; - bounds.init(); - log.debug(diagObj.db); - const diagram26 = securityLevel === "sandbox" ? root4.select(`[id="${id29}"]`) : select_default2(`[id="${id29}"]`); - const actors2 = diagObj.db.getActors(); - const createdActors = diagObj.db.getCreatedActors(); - const destroyedActors = diagObj.db.getDestroyedActors(); - const boxes = diagObj.db.getBoxes(); - let actorKeys = diagObj.db.getActorKeys(); - const messages = diagObj.db.getMessages(); - const title2 = diagObj.db.getDiagramTitle(); - const hasBoxes = diagObj.db.hasAtLeastOneBox(); - const hasBoxTitles = diagObj.db.hasAtLeastOneBoxWithTitle(); - const maxMessageWidthPerActor = await getMaxMessageWidthPerActor(actors2, messages, diagObj); - conf2.height = await calculateActorMargins(actors2, maxMessageWidthPerActor, boxes); - svgDraw_default2.insertComputerIcon(diagram26); - svgDraw_default2.insertDatabaseIcon(diagram26); - svgDraw_default2.insertClockIcon(diagram26); - if (hasBoxes) { - bounds.bumpVerticalPos(conf2.boxMargin); - if (hasBoxTitles) { - bounds.bumpVerticalPos(boxes[0].textMaxHeight); - } - } - if (conf2.hideUnusedParticipants === true) { - const newActors = /* @__PURE__ */ new Set(); - messages.forEach((message) => { - newActors.add(message.from); - newActors.add(message.to); - }); - actorKeys = actorKeys.filter((actorKey) => newActors.has(actorKey)); - } - addActorRenderingData(diagram26, actors2, createdActors, actorKeys, 0, messages, false); - const loopWidths = await calculateLoopBounds(messages, actors2, maxMessageWidthPerActor, diagObj); - svgDraw_default2.insertArrowHead(diagram26); - svgDraw_default2.insertArrowCrossHead(diagram26); - svgDraw_default2.insertArrowFilledHead(diagram26); - svgDraw_default2.insertSequenceNumber(diagram26); - function activeEnd(msg, verticalPos) { - const activationData = bounds.endActivation(msg); - if (activationData.starty + 18 > verticalPos) { - activationData.starty = verticalPos - 6; - verticalPos += 12; - } - svgDraw_default2.drawActivation( - diagram26, - activationData, - verticalPos, - conf2, - actorActivations(msg.from).length - ); - bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos); - } - __name(activeEnd, "activeEnd"); - let sequenceIndex = 1; - let sequenceIndexStep = 1; - const messagesToDraw = []; - const backgrounds = []; - let index = 0; - for (const msg of messages) { - let loopModel, noteModel, msgModel; - switch (msg.type) { - case diagObj.db.LINETYPE.NOTE: - bounds.resetVerticalPos(); - noteModel = msg.noteModel; - await drawNote(diagram26, noteModel); - break; - case diagObj.db.LINETYPE.ACTIVE_START: - bounds.newActivation(msg, diagram26, actors2); - break; - case diagObj.db.LINETYPE.ACTIVE_END: - activeEnd(msg, bounds.getVerticalPos()); - break; - case diagObj.db.LINETYPE.LOOP_START: - adjustLoopHeightForWrap( - loopWidths, - msg, - conf2.boxMargin, - conf2.boxMargin + conf2.boxTextMargin, - (message) => bounds.newLoop(message) - ); - break; - case diagObj.db.LINETYPE.LOOP_END: - loopModel = bounds.endLoop(); - await svgDraw_default2.drawLoop(diagram26, loopModel, "loop", conf2); - bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos()); - bounds.models.addLoop(loopModel); - break; - case diagObj.db.LINETYPE.RECT_START: - adjustLoopHeightForWrap( - loopWidths, - msg, - conf2.boxMargin, - conf2.boxMargin, - (message) => bounds.newLoop(void 0, message.message) - ); - break; - case diagObj.db.LINETYPE.RECT_END: - loopModel = bounds.endLoop(); - backgrounds.push(loopModel); - bounds.models.addLoop(loopModel); - bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos()); - break; - case diagObj.db.LINETYPE.OPT_START: - adjustLoopHeightForWrap( - loopWidths, - msg, - conf2.boxMargin, - conf2.boxMargin + conf2.boxTextMargin, - (message) => bounds.newLoop(message) - ); - break; - case diagObj.db.LINETYPE.OPT_END: - loopModel = bounds.endLoop(); - await svgDraw_default2.drawLoop(diagram26, loopModel, "opt", conf2); - bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos()); - bounds.models.addLoop(loopModel); - break; - case diagObj.db.LINETYPE.ALT_START: - adjustLoopHeightForWrap( - loopWidths, - msg, - conf2.boxMargin, - conf2.boxMargin + conf2.boxTextMargin, - (message) => bounds.newLoop(message) - ); - break; - case diagObj.db.LINETYPE.ALT_ELSE: - adjustLoopHeightForWrap( - loopWidths, - msg, - conf2.boxMargin + conf2.boxTextMargin, - conf2.boxMargin, - (message) => bounds.addSectionToLoop(message) - ); - break; - case diagObj.db.LINETYPE.ALT_END: - loopModel = bounds.endLoop(); - await svgDraw_default2.drawLoop(diagram26, loopModel, "alt", conf2); - bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos()); - bounds.models.addLoop(loopModel); - break; - case diagObj.db.LINETYPE.PAR_START: - case diagObj.db.LINETYPE.PAR_OVER_START: - adjustLoopHeightForWrap( - loopWidths, - msg, - conf2.boxMargin, - conf2.boxMargin + conf2.boxTextMargin, - (message) => bounds.newLoop(message) - ); - bounds.saveVerticalPos(); - break; - case diagObj.db.LINETYPE.PAR_AND: - adjustLoopHeightForWrap( - loopWidths, - msg, - conf2.boxMargin + conf2.boxTextMargin, - conf2.boxMargin, - (message) => bounds.addSectionToLoop(message) - ); - break; - case diagObj.db.LINETYPE.PAR_END: - loopModel = bounds.endLoop(); - await svgDraw_default2.drawLoop(diagram26, loopModel, "par", conf2); - bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos()); - bounds.models.addLoop(loopModel); - break; - case diagObj.db.LINETYPE.AUTONUMBER: - sequenceIndex = msg.message.start || sequenceIndex; - sequenceIndexStep = msg.message.step || sequenceIndexStep; - if (msg.message.visible) { - diagObj.db.enableSequenceNumbers(); - } else { - diagObj.db.disableSequenceNumbers(); - } - break; - case diagObj.db.LINETYPE.CRITICAL_START: - adjustLoopHeightForWrap( - loopWidths, - msg, - conf2.boxMargin, - conf2.boxMargin + conf2.boxTextMargin, - (message) => bounds.newLoop(message) - ); - break; - case diagObj.db.LINETYPE.CRITICAL_OPTION: - adjustLoopHeightForWrap( - loopWidths, - msg, - conf2.boxMargin + conf2.boxTextMargin, - conf2.boxMargin, - (message) => bounds.addSectionToLoop(message) - ); - break; - case diagObj.db.LINETYPE.CRITICAL_END: - loopModel = bounds.endLoop(); - await svgDraw_default2.drawLoop(diagram26, loopModel, "critical", conf2); - bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos()); - bounds.models.addLoop(loopModel); - break; - case diagObj.db.LINETYPE.BREAK_START: - adjustLoopHeightForWrap( - loopWidths, - msg, - conf2.boxMargin, - conf2.boxMargin + conf2.boxTextMargin, - (message) => bounds.newLoop(message) - ); - break; - case diagObj.db.LINETYPE.BREAK_END: - loopModel = bounds.endLoop(); - await svgDraw_default2.drawLoop(diagram26, loopModel, "break", conf2); - bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos()); - bounds.models.addLoop(loopModel); - break; - default: - try { - msgModel = msg.msgModel; - msgModel.starty = bounds.getVerticalPos(); - msgModel.sequenceIndex = sequenceIndex; - msgModel.sequenceVisible = diagObj.db.showSequenceNumbers(); - const lineStartY = await boundMessage(diagram26, msgModel); - adjustCreatedDestroyedData( - msg, - msgModel, - lineStartY, - index, - actors2, - createdActors, - destroyedActors - ); - messagesToDraw.push({ messageModel: msgModel, lineStartY }); - bounds.models.addMessage(msgModel); - } catch (e3) { - log.error("error while drawing message", e3); - } - } - if ([ - diagObj.db.LINETYPE.SOLID_OPEN, - diagObj.db.LINETYPE.DOTTED_OPEN, - diagObj.db.LINETYPE.SOLID, - diagObj.db.LINETYPE.DOTTED, - diagObj.db.LINETYPE.SOLID_CROSS, - diagObj.db.LINETYPE.DOTTED_CROSS, - diagObj.db.LINETYPE.SOLID_POINT, - diagObj.db.LINETYPE.DOTTED_POINT, - diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID, - diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED - ].includes(msg.type)) { - sequenceIndex = sequenceIndex + sequenceIndexStep; - } - index++; - } - log.debug("createdActors", createdActors); - log.debug("destroyedActors", destroyedActors); - await drawActors(diagram26, actors2, actorKeys, false); - for (const e3 of messagesToDraw) { - await drawMessage(diagram26, e3.messageModel, e3.lineStartY, diagObj); - } - if (conf2.mirrorActors) { - await drawActors(diagram26, actors2, actorKeys, true); - } - backgrounds.forEach((e3) => svgDraw_default2.drawBackgroundRect(diagram26, e3)); - fixLifeLineHeights(diagram26, actors2, actorKeys, conf2); - for (const box2 of bounds.models.boxes) { - box2.height = bounds.getVerticalPos() - box2.y; - bounds.insert(box2.x, box2.y, box2.x + box2.width, box2.height); - box2.startx = box2.x; - box2.starty = box2.y; - box2.stopx = box2.startx + box2.width; - box2.stopy = box2.starty + box2.height; - box2.stroke = "rgb(0,0,0, 0.5)"; - svgDraw_default2.drawBox(diagram26, box2, conf2); - } - if (hasBoxes) { - bounds.bumpVerticalPos(conf2.boxMargin); - } - const requiredBoxSize = drawActorsPopup(diagram26, actors2, actorKeys, doc); - const { bounds: box } = bounds.getBounds(); - if (box.startx === void 0) { - box.startx = 0; - } - if (box.starty === void 0) { - box.starty = 0; - } - if (box.stopx === void 0) { - box.stopx = 0; - } - if (box.stopy === void 0) { - box.stopy = 0; - } - let boxHeight = box.stopy - box.starty; - if (boxHeight < requiredBoxSize.maxHeight) { - boxHeight = requiredBoxSize.maxHeight; - } - let height2 = boxHeight + 2 * conf2.diagramMarginY; - if (conf2.mirrorActors) { - height2 = height2 - conf2.boxMargin + conf2.bottomMarginAdj; - } - let boxWidth = box.stopx - box.startx; - if (boxWidth < requiredBoxSize.maxWidth) { - boxWidth = requiredBoxSize.maxWidth; - } - const width3 = boxWidth + 2 * conf2.diagramMarginX; - if (title2) { - diagram26.append("text").text(title2).attr("x", (box.stopx - box.startx) / 2 - 2 * conf2.diagramMarginX).attr("y", -25); - } - configureSvgSize(diagram26, height2, width3, conf2.useMaxWidth); - const extraVertForTitle = title2 ? 40 : 0; - diagram26.attr( - "viewBox", - box.startx - conf2.diagramMarginX + " -" + (conf2.diagramMarginY + extraVertForTitle) + " " + width3 + " " + (height2 + extraVertForTitle) - ); - log.debug(`models:`, bounds.models); - }, "draw"); - __name(getMaxMessageWidthPerActor, "getMaxMessageWidthPerActor"); - getRequiredPopupWidth = /* @__PURE__ */ __name(function(actor) { - let requiredPopupWidth = 0; - const textFont = actorFont(conf2); - for (const key in actor.links) { - const labelDimensions = utils_default2.calculateTextDimensions(key, textFont); - const labelWidth = labelDimensions.width + 2 * conf2.wrapPadding + 2 * conf2.boxMargin; - if (requiredPopupWidth < labelWidth) { - requiredPopupWidth = labelWidth; - } - } - return requiredPopupWidth; - }, "getRequiredPopupWidth"); - __name(calculateActorMargins, "calculateActorMargins"); - buildNoteModel = /* @__PURE__ */ __name(async function(msg, actors2, diagObj) { - const fromActor = actors2.get(msg.from); - const toActor = actors2.get(msg.to); - const startx = fromActor.x; - const stopx = toActor.x; - const shouldWrap = msg.wrap && msg.message; - let textDimensions = hasKatex(msg.message) ? await calculateMathMLDimensions(msg.message, getConfig2()) : utils_default2.calculateTextDimensions( - shouldWrap ? utils_default2.wrapLabel(msg.message, conf2.width, noteFont(conf2)) : msg.message, - noteFont(conf2) - ); - const noteModel = { - width: shouldWrap ? conf2.width : common_default.getMax(conf2.width, textDimensions.width + 2 * conf2.noteMargin), - height: 0, - startx: fromActor.x, - stopx: 0, - starty: 0, - stopy: 0, - message: msg.message - }; - if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) { - noteModel.width = shouldWrap ? common_default.getMax(conf2.width, textDimensions.width) : common_default.getMax( - fromActor.width / 2 + toActor.width / 2, - textDimensions.width + 2 * conf2.noteMargin - ); - noteModel.startx = startx + (fromActor.width + conf2.actorMargin) / 2; - } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) { - noteModel.width = shouldWrap ? common_default.getMax(conf2.width, textDimensions.width + 2 * conf2.noteMargin) : common_default.getMax( - fromActor.width / 2 + toActor.width / 2, - textDimensions.width + 2 * conf2.noteMargin - ); - noteModel.startx = startx - noteModel.width + (fromActor.width - conf2.actorMargin) / 2; - } else if (msg.to === msg.from) { - textDimensions = utils_default2.calculateTextDimensions( - shouldWrap ? utils_default2.wrapLabel(msg.message, common_default.getMax(conf2.width, fromActor.width), noteFont(conf2)) : msg.message, - noteFont(conf2) - ); - noteModel.width = shouldWrap ? common_default.getMax(conf2.width, fromActor.width) : common_default.getMax(fromActor.width, conf2.width, textDimensions.width + 2 * conf2.noteMargin); - noteModel.startx = startx + (fromActor.width - noteModel.width) / 2; - } else { - noteModel.width = Math.abs(startx + fromActor.width / 2 - (stopx + toActor.width / 2)) + conf2.actorMargin; - noteModel.startx = startx < stopx ? startx + fromActor.width / 2 - conf2.actorMargin / 2 : stopx + toActor.width / 2 - conf2.actorMargin / 2; - } - if (shouldWrap) { - noteModel.message = utils_default2.wrapLabel( - msg.message, - noteModel.width - 2 * conf2.wrapPadding, - noteFont(conf2) - ); - } - log.debug( - `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]` - ); - return noteModel; - }, "buildNoteModel"); - buildMessageModel = /* @__PURE__ */ __name(function(msg, actors2, diagObj) { - if (![ - diagObj.db.LINETYPE.SOLID_OPEN, - diagObj.db.LINETYPE.DOTTED_OPEN, - diagObj.db.LINETYPE.SOLID, - diagObj.db.LINETYPE.DOTTED, - diagObj.db.LINETYPE.SOLID_CROSS, - diagObj.db.LINETYPE.DOTTED_CROSS, - diagObj.db.LINETYPE.SOLID_POINT, - diagObj.db.LINETYPE.DOTTED_POINT, - diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID, - diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED - ].includes(msg.type)) { - return {}; - } - const [fromLeft, fromRight] = activationBounds(msg.from, actors2); - const [toLeft, toRight] = activationBounds(msg.to, actors2); - const isArrowToRight = fromLeft <= toLeft; - let startx = isArrowToRight ? fromRight : fromLeft; - let stopx = isArrowToRight ? toLeft : toRight; - const isArrowToActivation = Math.abs(toLeft - toRight) > 2; - const adjustValue = /* @__PURE__ */ __name((value2) => { - return isArrowToRight ? -value2 : value2; - }, "adjustValue"); - if (msg.from === msg.to) { - stopx = startx; - } else { - if (msg.activate && !isArrowToActivation) { - stopx += adjustValue(conf2.activationWidth / 2 - 1); - } - if (![diagObj.db.LINETYPE.SOLID_OPEN, diagObj.db.LINETYPE.DOTTED_OPEN].includes(msg.type)) { - stopx += adjustValue(3); - } - if ([diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID, diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes( - msg.type - )) { - startx -= adjustValue(3); - } - } - const allBounds = [fromLeft, fromRight, toLeft, toRight]; - const boundedWidth = Math.abs(startx - stopx); - if (msg.wrap && msg.message) { - msg.message = utils_default2.wrapLabel( - msg.message, - common_default.getMax(boundedWidth + 2 * conf2.wrapPadding, conf2.width), - messageFont2(conf2) - ); - } - const msgDims = utils_default2.calculateTextDimensions(msg.message, messageFont2(conf2)); - return { - width: common_default.getMax( - msg.wrap ? 0 : msgDims.width + 2 * conf2.wrapPadding, - boundedWidth + 2 * conf2.wrapPadding, - conf2.width - ), - height: 0, - startx, - stopx, - starty: 0, - stopy: 0, - message: msg.message, - type: msg.type, - wrap: msg.wrap, - fromBounds: Math.min.apply(null, allBounds), - toBounds: Math.max.apply(null, allBounds) - }; - }, "buildMessageModel"); - calculateLoopBounds = /* @__PURE__ */ __name(async function(messages, actors2, _maxWidthPerActor, diagObj) { - const loops = {}; - const stack = []; - let current, noteModel, msgModel; - for (const msg of messages) { - switch (msg.type) { - case diagObj.db.LINETYPE.LOOP_START: - case diagObj.db.LINETYPE.ALT_START: - case diagObj.db.LINETYPE.OPT_START: - case diagObj.db.LINETYPE.PAR_START: - case diagObj.db.LINETYPE.PAR_OVER_START: - case diagObj.db.LINETYPE.CRITICAL_START: - case diagObj.db.LINETYPE.BREAK_START: - stack.push({ - id: msg.id, - msg: msg.message, - from: Number.MAX_SAFE_INTEGER, - to: Number.MIN_SAFE_INTEGER, - width: 0 - }); - break; - case diagObj.db.LINETYPE.ALT_ELSE: - case diagObj.db.LINETYPE.PAR_AND: - case diagObj.db.LINETYPE.CRITICAL_OPTION: - if (msg.message) { - current = stack.pop(); - loops[current.id] = current; - loops[msg.id] = current; - stack.push(current); + __name(Transform2, "Transform"); + Transform2.prototype.getWorldOrgX = function() { + return this.lworldOrgX; + }; + Transform2.prototype.setWorldOrgX = function(wox) { + this.lworldOrgX = wox; + }; + Transform2.prototype.getWorldOrgY = function() { + return this.lworldOrgY; + }; + Transform2.prototype.setWorldOrgY = function(woy) { + this.lworldOrgY = woy; + }; + Transform2.prototype.getWorldExtX = function() { + return this.lworldExtX; + }; + Transform2.prototype.setWorldExtX = function(wex) { + this.lworldExtX = wex; + }; + Transform2.prototype.getWorldExtY = function() { + return this.lworldExtY; + }; + Transform2.prototype.setWorldExtY = function(wey) { + this.lworldExtY = wey; + }; + Transform2.prototype.getDeviceOrgX = function() { + return this.ldeviceOrgX; + }; + Transform2.prototype.setDeviceOrgX = function(dox) { + this.ldeviceOrgX = dox; + }; + Transform2.prototype.getDeviceOrgY = function() { + return this.ldeviceOrgY; + }; + Transform2.prototype.setDeviceOrgY = function(doy) { + this.ldeviceOrgY = doy; + }; + Transform2.prototype.getDeviceExtX = function() { + return this.ldeviceExtX; + }; + Transform2.prototype.setDeviceExtX = function(dex) { + this.ldeviceExtX = dex; + }; + Transform2.prototype.getDeviceExtY = function() { + return this.ldeviceExtY; + }; + Transform2.prototype.setDeviceExtY = function(dey) { + this.ldeviceExtY = dey; + }; + Transform2.prototype.transformX = function(x5) { + var xDevice = 0; + var worldExtX = this.lworldExtX; + if (worldExtX != 0) { + xDevice = this.ldeviceOrgX + (x5 - this.lworldOrgX) * this.ldeviceExtX / worldExtX; + } + return xDevice; + }; + Transform2.prototype.transformY = function(y6) { + var yDevice = 0; + var worldExtY = this.lworldExtY; + if (worldExtY != 0) { + yDevice = this.ldeviceOrgY + (y6 - this.lworldOrgY) * this.ldeviceExtY / worldExtY; + } + return yDevice; + }; + Transform2.prototype.inverseTransformX = function(x5) { + var xWorld = 0; + var deviceExtX = this.ldeviceExtX; + if (deviceExtX != 0) { + xWorld = this.lworldOrgX + (x5 - this.ldeviceOrgX) * this.lworldExtX / deviceExtX; + } + return xWorld; + }; + Transform2.prototype.inverseTransformY = function(y6) { + var yWorld = 0; + var deviceExtY = this.ldeviceExtY; + if (deviceExtY != 0) { + yWorld = this.lworldOrgY + (y6 - this.ldeviceOrgY) * this.lworldExtY / deviceExtY; + } + return yWorld; + }; + Transform2.prototype.inverseTransformPoint = function(inPoint) { + var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y)); + return outPoint; + }; + module3.exports = Transform2; + }), + /* 18 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function _toConsumableArray2(arr) { + if (Array.isArray(arr)) { + for (var i2 = 0, arr2 = Array(arr.length); i2 < arr.length; i2++) { + arr2[i2] = arr[i2]; + } + return arr2; + } else { + return Array.from(arr); + } } - break; - case diagObj.db.LINETYPE.LOOP_END: - case diagObj.db.LINETYPE.ALT_END: - case diagObj.db.LINETYPE.OPT_END: - case diagObj.db.LINETYPE.PAR_END: - case diagObj.db.LINETYPE.CRITICAL_END: - case diagObj.db.LINETYPE.BREAK_END: - current = stack.pop(); - loops[current.id] = current; - break; - case diagObj.db.LINETYPE.ACTIVE_START: - { - const actorRect = actors2.get(msg.from ? msg.from : msg.to.actor); - const stackedSize = actorActivations(msg.from ? msg.from : msg.to.actor).length; - const x5 = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf2.activationWidth / 2; - const toAdd = { - startx: x5, - stopx: x5 + conf2.activationWidth, - actor: msg.from, - enabled: true - }; - bounds.activations.push(toAdd); + __name(_toConsumableArray2, "_toConsumableArray"); + var Layout2 = __webpack_require__(15); + var FDLayoutConstants = __webpack_require__(7); + var LayoutConstants = __webpack_require__(0); + var IGeometry = __webpack_require__(8); + var IMath = __webpack_require__(9); + function FDLayout() { + Layout2.call(this); + this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION; + this.idealEdgeLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH; + this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH; + this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH; + this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH; + this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH; + this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR; + this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR; + this.displacementThresholdPerNode = 3 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100; + this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; + this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; + this.totalDisplacement = 0; + this.oldTotalDisplacement = 0; + this.maxIterations = FDLayoutConstants.MAX_ITERATIONS; } - break; - case diagObj.db.LINETYPE.ACTIVE_END: - { - const lastActorActivationIdx = bounds.activations.map((a2) => a2.actor).lastIndexOf(msg.from); - bounds.activations.splice(lastActorActivationIdx, 1).splice(0, 1); + __name(FDLayout, "FDLayout"); + FDLayout.prototype = Object.create(Layout2.prototype); + for (var prop in Layout2) { + FDLayout[prop] = Layout2[prop]; } - break; - } - const isNote = msg.placement !== void 0; - if (isNote) { - noteModel = await buildNoteModel(msg, actors2, diagObj); - msg.noteModel = noteModel; - stack.forEach((stk) => { - current = stk; - current.from = common_default.getMin(current.from, noteModel.startx); - current.to = common_default.getMax(current.to, noteModel.startx + noteModel.width); - current.width = common_default.getMax(current.width, Math.abs(current.from - current.to)) - conf2.labelBoxWidth; - }); - } else { - msgModel = buildMessageModel(msg, actors2, diagObj); - msg.msgModel = msgModel; - if (msgModel.startx && msgModel.stopx && stack.length > 0) { - stack.forEach((stk) => { - current = stk; - if (msgModel.startx === msgModel.stopx) { - const from2 = actors2.get(msg.from); - const to = actors2.get(msg.to); - current.from = common_default.getMin( - from2.x - msgModel.width / 2, - from2.x - from2.width / 2, - current.from - ); - current.to = common_default.getMax( - to.x + msgModel.width / 2, - to.x + from2.width / 2, - current.to - ); - current.width = common_default.getMax(current.width, Math.abs(current.to - current.from)) - conf2.labelBoxWidth; + FDLayout.prototype.initParameters = function() { + Layout2.prototype.initParameters.call(this, arguments); + this.totalIterations = 0; + this.notAnimatedIterations = 0; + this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION; + this.grid = []; + }; + FDLayout.prototype.calcIdealEdgeLengths = function() { + var edge; + var lcaDepth; + var source; + var target; + var sizeOfSourceInLca; + var sizeOfTargetInLca; + var allEdges = this.getGraphManager().getAllEdges(); + for (var i2 = 0; i2 < allEdges.length; i2++) { + edge = allEdges[i2]; + edge.idealLength = this.idealEdgeLength; + if (edge.isInterGraph) { + source = edge.getSource(); + target = edge.getTarget(); + sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize(); + sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize(); + if (this.useSmartIdealEdgeLengthCalculation) { + edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE; + } + lcaDepth = edge.getLca().getInclusionTreeDepth(); + edge.idealLength += FDLayoutConstants.DEFAULT_EDGE_LENGTH * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth); + } + } + }; + FDLayout.prototype.initSpringEmbedder = function() { + var s2 = this.getAllNodes().length; + if (this.incremental) { + if (s2 > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) { + this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s2 - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR)); + } + this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL; } else { - current.from = common_default.getMin(msgModel.startx, current.from); - current.to = common_default.getMax(msgModel.stopx, current.to); - current.width = common_default.getMax(current.width, msgModel.width) - conf2.labelBoxWidth; + if (s2 > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) { + this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1 - (s2 - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR)); + } else { + this.coolingFactor = 1; + } + this.initialCoolingFactor = this.coolingFactor; + this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT; } - }); - } - } - } - bounds.activations = []; - log.debug("Loop type widths:", loops); - return loops; - }, "calculateLoopBounds"); - sequenceRenderer_default = { - bounds, - drawActors, - drawActorsPopup, - setConf: setConf3, - draw: draw11 - }; - } - }); - - // src/diagrams/sequence/sequenceDiagram.ts - var sequenceDiagram_exports = {}; - __export(sequenceDiagram_exports, { - diagram: () => diagram11 - }); - var diagram11; - var init_sequenceDiagram2 = __esm({ - "src/diagrams/sequence/sequenceDiagram.ts"() { - "use strict"; - init_sequenceDiagram(); - init_sequenceDb(); - init_styles8(); - init_diagramAPI(); - init_sequenceRenderer(); - diagram11 = { - parser: sequenceDiagram_default, - get db() { - return new SequenceDB(); - }, - renderer: sequenceRenderer_default, - styles: styles_default8, - init: /* @__PURE__ */ __name((cnf) => { - if (!cnf.sequence) { - cnf.sequence = {}; - } - if (cnf.wrap) { - cnf.sequence.wrap = cnf.wrap; - setConfig2({ sequence: { wrap: cnf.wrap } }); - } - }, "init") - }; - } - }); - - // src/diagrams/class/parser/classDiagram.jison - var parser13, classDiagram_default; - var init_classDiagram = __esm({ - "src/diagrams/class/parser/classDiagram.jison"() { - "use strict"; - parser13 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; - return o3; - }, "o"), $V0 = [1, 18], $V1 = [1, 19], $V2 = [1, 20], $V3 = [1, 41], $V4 = [1, 42], $V5 = [1, 26], $V6 = [1, 24], $V7 = [1, 25], $V8 = [1, 32], $V9 = [1, 33], $Va = [1, 34], $Vb = [1, 45], $Vc = [1, 35], $Vd = [1, 36], $Ve = [1, 37], $Vf = [1, 38], $Vg = [1, 27], $Vh = [1, 28], $Vi = [1, 29], $Vj = [1, 30], $Vk = [1, 31], $Vl = [1, 44], $Vm = [1, 46], $Vn = [1, 43], $Vo = [1, 47], $Vp = [1, 9], $Vq = [1, 8, 9], $Vr = [1, 58], $Vs = [1, 59], $Vt = [1, 60], $Vu = [1, 61], $Vv = [1, 62], $Vw = [1, 63], $Vx = [1, 64], $Vy = [1, 8, 9, 41], $Vz = [1, 76], $VA = [1, 8, 9, 12, 13, 22, 39, 41, 44, 66, 67, 68, 69, 70, 71, 72, 77, 79], $VB = [1, 8, 9, 12, 13, 17, 20, 22, 39, 41, 44, 48, 58, 66, 67, 68, 69, 70, 71, 72, 77, 79, 84, 99, 101, 102], $VC = [13, 58, 84, 99, 101, 102], $VD = [13, 58, 71, 72, 84, 99, 101, 102], $VE = [13, 58, 66, 67, 68, 69, 70, 84, 99, 101, 102], $VF = [1, 98], $VG = [1, 115], $VH = [1, 107], $VI = [1, 113], $VJ = [1, 108], $VK = [1, 109], $VL = [1, 110], $VM = [1, 111], $VN = [1, 112], $VO = [1, 114], $VP = [22, 58, 59, 80, 84, 85, 86, 87, 88, 89], $VQ = [1, 8, 9, 39, 41, 44], $VR = [1, 8, 9, 22], $VS = [1, 143], $VT = [1, 8, 9, 59], $VU = [1, 8, 9, 22, 58, 59, 80, 84, 85, 86, 87, 88, 89]; - var parser24 = { - trace: /* @__PURE__ */ __name(function trace() { - }, "trace"), - yy: {}, - symbols_: { "error": 2, "start": 3, "mermaidDoc": 4, "statements": 5, "graphConfig": 6, "CLASS_DIAGRAM": 7, "NEWLINE": 8, "EOF": 9, "statement": 10, "classLabel": 11, "SQS": 12, "STR": 13, "SQE": 14, "namespaceName": 15, "alphaNumToken": 16, "DOT": 17, "className": 18, "classLiteralName": 19, "GENERICTYPE": 20, "relationStatement": 21, "LABEL": 22, "namespaceStatement": 23, "classStatement": 24, "memberStatement": 25, "annotationStatement": 26, "clickStatement": 27, "styleStatement": 28, "cssClassStatement": 29, "noteStatement": 30, "classDefStatement": 31, "direction": 32, "acc_title": 33, "acc_title_value": 34, "acc_descr": 35, "acc_descr_value": 36, "acc_descr_multiline_value": 37, "namespaceIdentifier": 38, "STRUCT_START": 39, "classStatements": 40, "STRUCT_STOP": 41, "NAMESPACE": 42, "classIdentifier": 43, "STYLE_SEPARATOR": 44, "members": 45, "CLASS": 46, "ANNOTATION_START": 47, "ANNOTATION_END": 48, "MEMBER": 49, "SEPARATOR": 50, "relation": 51, "NOTE_FOR": 52, "noteText": 53, "NOTE": 54, "CLASSDEF": 55, "classList": 56, "stylesOpt": 57, "ALPHA": 58, "COMMA": 59, "direction_tb": 60, "direction_bt": 61, "direction_rl": 62, "direction_lr": 63, "relationType": 64, "lineType": 65, "AGGREGATION": 66, "EXTENSION": 67, "COMPOSITION": 68, "DEPENDENCY": 69, "LOLLIPOP": 70, "LINE": 71, "DOTTED_LINE": 72, "CALLBACK": 73, "LINK": 74, "LINK_TARGET": 75, "CLICK": 76, "CALLBACK_NAME": 77, "CALLBACK_ARGS": 78, "HREF": 79, "STYLE": 80, "CSSCLASS": 81, "style": 82, "styleComponent": 83, "NUM": 84, "COLON": 85, "UNIT": 86, "SPACE": 87, "BRKT": 88, "PCT": 89, "commentToken": 90, "textToken": 91, "graphCodeTokens": 92, "textNoTagsToken": 93, "TAGSTART": 94, "TAGEND": 95, "==": 96, "--": 97, "DEFAULT": 98, "MINUS": 99, "keywords": 100, "UNICODE_TEXT": 101, "BQUOTE_STR": 102, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 7: "CLASS_DIAGRAM", 8: "NEWLINE", 9: "EOF", 12: "SQS", 13: "STR", 14: "SQE", 17: "DOT", 20: "GENERICTYPE", 22: "LABEL", 33: "acc_title", 34: "acc_title_value", 35: "acc_descr", 36: "acc_descr_value", 37: "acc_descr_multiline_value", 39: "STRUCT_START", 41: "STRUCT_STOP", 42: "NAMESPACE", 44: "STYLE_SEPARATOR", 46: "CLASS", 47: "ANNOTATION_START", 48: "ANNOTATION_END", 49: "MEMBER", 50: "SEPARATOR", 52: "NOTE_FOR", 54: "NOTE", 55: "CLASSDEF", 58: "ALPHA", 59: "COMMA", 60: "direction_tb", 61: "direction_bt", 62: "direction_rl", 63: "direction_lr", 66: "AGGREGATION", 67: "EXTENSION", 68: "COMPOSITION", 69: "DEPENDENCY", 70: "LOLLIPOP", 71: "LINE", 72: "DOTTED_LINE", 73: "CALLBACK", 74: "LINK", 75: "LINK_TARGET", 76: "CLICK", 77: "CALLBACK_NAME", 78: "CALLBACK_ARGS", 79: "HREF", 80: "STYLE", 81: "CSSCLASS", 84: "NUM", 85: "COLON", 86: "UNIT", 87: "SPACE", 88: "BRKT", 89: "PCT", 92: "graphCodeTokens", 94: "TAGSTART", 95: "TAGEND", 96: "==", 97: "--", 98: "DEFAULT", 99: "MINUS", 100: "keywords", 101: "UNICODE_TEXT", 102: "BQUOTE_STR" }, - productions_: [0, [3, 1], [3, 1], [4, 1], [6, 4], [5, 1], [5, 2], [5, 3], [11, 3], [15, 1], [15, 3], [15, 2], [18, 1], [18, 3], [18, 1], [18, 2], [18, 2], [18, 2], [10, 1], [10, 2], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [10, 1], [23, 4], [23, 5], [38, 2], [40, 1], [40, 2], [40, 3], [24, 1], [24, 3], [24, 4], [24, 6], [43, 2], [43, 3], [26, 4], [45, 1], [45, 2], [25, 1], [25, 2], [25, 1], [25, 1], [21, 3], [21, 4], [21, 4], [21, 5], [30, 3], [30, 2], [31, 3], [56, 1], [56, 3], [32, 1], [32, 1], [32, 1], [32, 1], [51, 3], [51, 2], [51, 2], [51, 1], [64, 1], [64, 1], [64, 1], [64, 1], [64, 1], [65, 1], [65, 1], [27, 3], [27, 4], [27, 3], [27, 4], [27, 4], [27, 5], [27, 3], [27, 4], [27, 4], [27, 5], [27, 4], [27, 5], [27, 5], [27, 6], [28, 3], [29, 3], [57, 1], [57, 3], [82, 1], [82, 2], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [90, 1], [90, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [93, 1], [93, 1], [93, 1], [93, 1], [16, 1], [16, 1], [16, 1], [16, 1], [19, 1], [53, 1]], - performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 8: - this.$ = $$[$0 - 1]; - break; - case 9: - case 12: - case 14: - this.$ = $$[$0]; - break; - case 10: - case 13: - this.$ = $$[$0 - 2] + "." + $$[$0]; - break; - case 11: - case 15: - this.$ = $$[$0 - 1] + $$[$0]; - break; - case 16: - case 17: - this.$ = $$[$0 - 1] + "~" + $$[$0] + "~"; - break; - case 18: - yy.addRelation($$[$0]); - break; - case 19: - $$[$0 - 1].title = yy.cleanupLabel($$[$0]); - yy.addRelation($$[$0 - 1]); - break; - case 30: - this.$ = $$[$0].trim(); - yy.setAccTitle(this.$); - break; - case 31: - case 32: - this.$ = $$[$0].trim(); - yy.setAccDescription(this.$); - break; - case 33: - yy.addClassesToNamespace($$[$0 - 3], $$[$0 - 1]); - break; - case 34: - yy.addClassesToNamespace($$[$0 - 4], $$[$0 - 1]); - break; - case 35: - this.$ = $$[$0]; - yy.addNamespace($$[$0]); - break; - case 36: - this.$ = [$$[$0]]; - break; - case 37: - this.$ = [$$[$0 - 1]]; - break; - case 38: - $$[$0].unshift($$[$0 - 2]); - this.$ = $$[$0]; - break; - case 40: - yy.setCssClass($$[$0 - 2], $$[$0]); - break; - case 41: - yy.addMembers($$[$0 - 3], $$[$0 - 1]); - break; - case 42: - yy.setCssClass($$[$0 - 5], $$[$0 - 3]); - yy.addMembers($$[$0 - 5], $$[$0 - 1]); - break; - case 43: - this.$ = $$[$0]; - yy.addClass($$[$0]); - break; - case 44: - this.$ = $$[$0 - 1]; - yy.addClass($$[$0 - 1]); - yy.setClassLabel($$[$0 - 1], $$[$0]); - break; - case 45: - yy.addAnnotation($$[$0], $$[$0 - 2]); - break; - case 46: - case 59: - this.$ = [$$[$0]]; - break; - case 47: - $$[$0].push($$[$0 - 1]); - this.$ = $$[$0]; - break; - case 48: - break; - case 49: - yy.addMember($$[$0 - 1], yy.cleanupLabel($$[$0])); - break; - case 50: - break; - case 51: - break; - case 52: - this.$ = { "id1": $$[$0 - 2], "id2": $$[$0], relation: $$[$0 - 1], relationTitle1: "none", relationTitle2: "none" }; - break; - case 53: - this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 1], relationTitle1: $$[$0 - 2], relationTitle2: "none" }; - break; - case 54: - this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: "none", relationTitle2: $$[$0 - 1] }; - break; - case 55: - this.$ = { id1: $$[$0 - 4], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: $$[$0 - 3], relationTitle2: $$[$0 - 1] }; - break; - case 56: - yy.addNote($$[$0], $$[$0 - 1]); - break; - case 57: - yy.addNote($$[$0]); - break; - case 58: - this.$ = $$[$0 - 2]; - yy.defineClass($$[$0 - 1], $$[$0]); - break; - case 60: - this.$ = $$[$0 - 2].concat([$$[$0]]); - break; - case 61: - yy.setDirection("TB"); - break; - case 62: - yy.setDirection("BT"); - break; - case 63: - yy.setDirection("RL"); - break; - case 64: - yy.setDirection("LR"); - break; - case 65: - this.$ = { type1: $$[$0 - 2], type2: $$[$0], lineType: $$[$0 - 1] }; - break; - case 66: - this.$ = { type1: "none", type2: $$[$0], lineType: $$[$0 - 1] }; - break; - case 67: - this.$ = { type1: $$[$0 - 1], type2: "none", lineType: $$[$0] }; - break; - case 68: - this.$ = { type1: "none", type2: "none", lineType: $$[$0] }; - break; - case 69: - this.$ = yy.relationType.AGGREGATION; - break; - case 70: - this.$ = yy.relationType.EXTENSION; - break; - case 71: - this.$ = yy.relationType.COMPOSITION; - break; - case 72: - this.$ = yy.relationType.DEPENDENCY; - break; - case 73: - this.$ = yy.relationType.LOLLIPOP; - break; - case 74: - this.$ = yy.lineType.LINE; - break; - case 75: - this.$ = yy.lineType.DOTTED_LINE; - break; - case 76: - case 82: - this.$ = $$[$0 - 2]; - yy.setClickEvent($$[$0 - 1], $$[$0]); - break; - case 77: - case 83: - this.$ = $$[$0 - 3]; - yy.setClickEvent($$[$0 - 2], $$[$0 - 1]); - yy.setTooltip($$[$0 - 2], $$[$0]); - break; - case 78: - this.$ = $$[$0 - 2]; - yy.setLink($$[$0 - 1], $$[$0]); - break; - case 79: - this.$ = $$[$0 - 3]; - yy.setLink($$[$0 - 2], $$[$0 - 1], $$[$0]); - break; - case 80: - this.$ = $$[$0 - 3]; - yy.setLink($$[$0 - 2], $$[$0 - 1]); - yy.setTooltip($$[$0 - 2], $$[$0]); - break; - case 81: - this.$ = $$[$0 - 4]; - yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]); - yy.setTooltip($$[$0 - 3], $$[$0 - 1]); - break; - case 84: - this.$ = $$[$0 - 3]; - yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]); - break; - case 85: - this.$ = $$[$0 - 4]; - yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]); - yy.setTooltip($$[$0 - 3], $$[$0]); - break; - case 86: - this.$ = $$[$0 - 3]; - yy.setLink($$[$0 - 2], $$[$0]); - break; - case 87: - this.$ = $$[$0 - 4]; - yy.setLink($$[$0 - 3], $$[$0 - 1], $$[$0]); - break; - case 88: - this.$ = $$[$0 - 4]; - yy.setLink($$[$0 - 3], $$[$0 - 1]); - yy.setTooltip($$[$0 - 3], $$[$0]); - break; - case 89: - this.$ = $$[$0 - 5]; - yy.setLink($$[$0 - 4], $$[$0 - 2], $$[$0]); - yy.setTooltip($$[$0 - 4], $$[$0 - 1]); - break; - case 90: - this.$ = $$[$0 - 2]; - yy.setCssStyle($$[$0 - 1], $$[$0]); - break; - case 91: - yy.setCssClass($$[$0 - 1], $$[$0]); - break; - case 92: - this.$ = [$$[$0]]; - break; - case 93: - $$[$0 - 2].push($$[$0]); - this.$ = $$[$0 - 2]; - break; - case 95: - this.$ = $$[$0 - 1] + $$[$0]; - break; - } - }, "anonymous"), - table: [{ 3: 1, 4: 2, 5: 3, 6: 4, 7: [1, 6], 10: 5, 16: 39, 18: 21, 19: 40, 21: 7, 23: 8, 24: 9, 25: 10, 26: 11, 27: 12, 28: 13, 29: 14, 30: 15, 31: 16, 32: 17, 33: $V0, 35: $V1, 37: $V2, 38: 22, 42: $V3, 43: 23, 46: $V4, 47: $V5, 49: $V6, 50: $V7, 52: $V8, 54: $V9, 55: $Va, 58: $Vb, 60: $Vc, 61: $Vd, 62: $Ve, 63: $Vf, 73: $Vg, 74: $Vh, 76: $Vi, 80: $Vj, 81: $Vk, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3] }, o2($Vp, [2, 5], { 8: [1, 48] }), { 8: [1, 49] }, o2($Vq, [2, 18], { 22: [1, 50] }), o2($Vq, [2, 20]), o2($Vq, [2, 21]), o2($Vq, [2, 22]), o2($Vq, [2, 23]), o2($Vq, [2, 24]), o2($Vq, [2, 25]), o2($Vq, [2, 26]), o2($Vq, [2, 27]), o2($Vq, [2, 28]), o2($Vq, [2, 29]), { 34: [1, 51] }, { 36: [1, 52] }, o2($Vq, [2, 32]), o2($Vq, [2, 48], { 51: 53, 64: 56, 65: 57, 13: [1, 54], 22: [1, 55], 66: $Vr, 67: $Vs, 68: $Vt, 69: $Vu, 70: $Vv, 71: $Vw, 72: $Vx }), { 39: [1, 65] }, o2($Vy, [2, 39], { 39: [1, 67], 44: [1, 66] }), o2($Vq, [2, 50]), o2($Vq, [2, 51]), { 16: 68, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn }, { 16: 39, 18: 69, 19: 40, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, { 16: 39, 18: 70, 19: 40, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, { 16: 39, 18: 71, 19: 40, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, { 58: [1, 72] }, { 13: [1, 73] }, { 16: 39, 18: 74, 19: 40, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, { 13: $Vz, 53: 75 }, { 56: 77, 58: [1, 78] }, o2($Vq, [2, 61]), o2($Vq, [2, 62]), o2($Vq, [2, 63]), o2($Vq, [2, 64]), o2($VA, [2, 12], { 16: 39, 19: 40, 18: 80, 17: [1, 79], 20: [1, 81], 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }), o2($VA, [2, 14], { 20: [1, 82] }), { 15: 83, 16: 84, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn }, { 16: 39, 18: 85, 19: 40, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, o2($VB, [2, 118]), o2($VB, [2, 119]), o2($VB, [2, 120]), o2($VB, [2, 121]), o2([1, 8, 9, 12, 13, 20, 22, 39, 41, 44, 66, 67, 68, 69, 70, 71, 72, 77, 79], [2, 122]), o2($Vp, [2, 6], { 10: 5, 21: 7, 23: 8, 24: 9, 25: 10, 26: 11, 27: 12, 28: 13, 29: 14, 30: 15, 31: 16, 32: 17, 18: 21, 38: 22, 43: 23, 16: 39, 19: 40, 5: 86, 33: $V0, 35: $V1, 37: $V2, 42: $V3, 46: $V4, 47: $V5, 49: $V6, 50: $V7, 52: $V8, 54: $V9, 55: $Va, 58: $Vb, 60: $Vc, 61: $Vd, 62: $Ve, 63: $Vf, 73: $Vg, 74: $Vh, 76: $Vi, 80: $Vj, 81: $Vk, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }), { 5: 87, 10: 5, 16: 39, 18: 21, 19: 40, 21: 7, 23: 8, 24: 9, 25: 10, 26: 11, 27: 12, 28: 13, 29: 14, 30: 15, 31: 16, 32: 17, 33: $V0, 35: $V1, 37: $V2, 38: 22, 42: $V3, 43: 23, 46: $V4, 47: $V5, 49: $V6, 50: $V7, 52: $V8, 54: $V9, 55: $Va, 58: $Vb, 60: $Vc, 61: $Vd, 62: $Ve, 63: $Vf, 73: $Vg, 74: $Vh, 76: $Vi, 80: $Vj, 81: $Vk, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, o2($Vq, [2, 19]), o2($Vq, [2, 30]), o2($Vq, [2, 31]), { 13: [1, 89], 16: 39, 18: 88, 19: 40, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, { 51: 90, 64: 56, 65: 57, 66: $Vr, 67: $Vs, 68: $Vt, 69: $Vu, 70: $Vv, 71: $Vw, 72: $Vx }, o2($Vq, [2, 49]), { 65: 91, 71: $Vw, 72: $Vx }, o2($VC, [2, 68], { 64: 92, 66: $Vr, 67: $Vs, 68: $Vt, 69: $Vu, 70: $Vv }), o2($VD, [2, 69]), o2($VD, [2, 70]), o2($VD, [2, 71]), o2($VD, [2, 72]), o2($VD, [2, 73]), o2($VE, [2, 74]), o2($VE, [2, 75]), { 8: [1, 94], 24: 95, 40: 93, 43: 23, 46: $V4 }, { 16: 96, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn }, { 45: 97, 49: $VF }, { 48: [1, 99] }, { 13: [1, 100] }, { 13: [1, 101] }, { 77: [1, 102], 79: [1, 103] }, { 22: $VG, 57: 104, 58: $VH, 80: $VI, 82: 105, 83: 106, 84: $VJ, 85: $VK, 86: $VL, 87: $VM, 88: $VN, 89: $VO }, { 58: [1, 116] }, { 13: $Vz, 53: 117 }, o2($Vq, [2, 57]), o2($Vq, [2, 123]), { 22: $VG, 57: 118, 58: $VH, 59: [1, 119], 80: $VI, 82: 105, 83: 106, 84: $VJ, 85: $VK, 86: $VL, 87: $VM, 88: $VN, 89: $VO }, o2($VP, [2, 59]), { 16: 39, 18: 120, 19: 40, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, o2($VA, [2, 15]), o2($VA, [2, 16]), o2($VA, [2, 17]), { 39: [2, 35] }, { 15: 122, 16: 84, 17: [1, 121], 39: [2, 9], 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn }, o2($VQ, [2, 43], { 11: 123, 12: [1, 124] }), o2($Vp, [2, 7]), { 9: [1, 125] }, o2($VR, [2, 52]), { 16: 39, 18: 126, 19: 40, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, { 13: [1, 128], 16: 39, 18: 127, 19: 40, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, o2($VC, [2, 67], { 64: 129, 66: $Vr, 67: $Vs, 68: $Vt, 69: $Vu, 70: $Vv }), o2($VC, [2, 66]), { 41: [1, 130] }, { 24: 95, 40: 131, 43: 23, 46: $V4 }, { 8: [1, 132], 41: [2, 36] }, o2($Vy, [2, 40], { 39: [1, 133] }), { 41: [1, 134] }, { 41: [2, 46], 45: 135, 49: $VF }, { 16: 39, 18: 136, 19: 40, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, o2($Vq, [2, 76], { 13: [1, 137] }), o2($Vq, [2, 78], { 13: [1, 139], 75: [1, 138] }), o2($Vq, [2, 82], { 13: [1, 140], 78: [1, 141] }), { 13: [1, 142] }, o2($Vq, [2, 90], { 59: $VS }), o2($VT, [2, 92], { 83: 144, 22: $VG, 58: $VH, 80: $VI, 84: $VJ, 85: $VK, 86: $VL, 87: $VM, 88: $VN, 89: $VO }), o2($VU, [2, 94]), o2($VU, [2, 96]), o2($VU, [2, 97]), o2($VU, [2, 98]), o2($VU, [2, 99]), o2($VU, [2, 100]), o2($VU, [2, 101]), o2($VU, [2, 102]), o2($VU, [2, 103]), o2($VU, [2, 104]), o2($Vq, [2, 91]), o2($Vq, [2, 56]), o2($Vq, [2, 58], { 59: $VS }), { 58: [1, 145] }, o2($VA, [2, 13]), { 15: 146, 16: 84, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn }, { 39: [2, 11] }, o2($VQ, [2, 44]), { 13: [1, 147] }, { 1: [2, 4] }, o2($VR, [2, 54]), o2($VR, [2, 53]), { 16: 39, 18: 148, 19: 40, 58: $Vb, 84: $Vl, 99: $Vm, 101: $Vn, 102: $Vo }, o2($VC, [2, 65]), o2($Vq, [2, 33]), { 41: [1, 149] }, { 24: 95, 40: 150, 41: [2, 37], 43: 23, 46: $V4 }, { 45: 151, 49: $VF }, o2($Vy, [2, 41]), { 41: [2, 47] }, o2($Vq, [2, 45]), o2($Vq, [2, 77]), o2($Vq, [2, 79]), o2($Vq, [2, 80], { 75: [1, 152] }), o2($Vq, [2, 83]), o2($Vq, [2, 84], { 13: [1, 153] }), o2($Vq, [2, 86], { 13: [1, 155], 75: [1, 154] }), { 22: $VG, 58: $VH, 80: $VI, 82: 156, 83: 106, 84: $VJ, 85: $VK, 86: $VL, 87: $VM, 88: $VN, 89: $VO }, o2($VU, [2, 95]), o2($VP, [2, 60]), { 39: [2, 10] }, { 14: [1, 157] }, o2($VR, [2, 55]), o2($Vq, [2, 34]), { 41: [2, 38] }, { 41: [1, 158] }, o2($Vq, [2, 81]), o2($Vq, [2, 85]), o2($Vq, [2, 87]), o2($Vq, [2, 88], { 75: [1, 159] }), o2($VT, [2, 93], { 83: 144, 22: $VG, 58: $VH, 80: $VI, 84: $VJ, 85: $VK, 86: $VL, 87: $VM, 88: $VN, 89: $VO }), o2($VQ, [2, 8]), o2($Vy, [2, 42]), o2($Vq, [2, 89])], - defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 3], 83: [2, 35], 122: [2, 11], 125: [2, 4], 135: [2, 47], 146: [2, 10], 150: [2, 38] }, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); - } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; - } - }, "parseError"), - parse: /* @__PURE__ */ __name(function parse7(input) { - var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; - var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k2 in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { - sharedState.yy[k2] = this.yy[k2]; - } - } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; - sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; - } - var yyloc = lexer3.yylloc; - lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n2) { - stack.length = stack.length - 2 * n2; - vstack.length = vstack.length - n2; - lstack.length = lstack.length - n2; - } - __name(popStack, "popStack"); - function lex() { - var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; - if (typeof token2 !== "number") { - if (token2 instanceof Array) { - tstack = token2; - token2 = tstack.pop(); + this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations); + this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length; + this.repulsionRange = this.calcRepulsionRange(); + }; + FDLayout.prototype.calcSpringForces = function() { + var lEdges = this.getAllEdges(); + var edge; + for (var i2 = 0; i2 < lEdges.length; i2++) { + edge = lEdges[i2]; + this.calcSpringForce(edge, edge.idealLength); } - token2 = self2.symbols_[token2] || token2; - } - return token2; - } - __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; - while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); + }; + FDLayout.prototype.calcRepulsionForces = function() { + var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; + var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + var i2, j3; + var nodeA, nodeB; + var lNodes = this.getAllNodes(); + var processedNodeSet; + if (this.useFRGridVariant) { + if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) { + this.updateGrid(); + } + processedNodeSet = /* @__PURE__ */ new Set(); + for (i2 = 0; i2 < lNodes.length; i2++) { + nodeA = lNodes[i2]; + this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate); + processedNodeSet.add(nodeA); + } + } else { + for (i2 = 0; i2 < lNodes.length; i2++) { + nodeA = lNodes[i2]; + for (j3 = i2 + 1; j3 < lNodes.length; j3++) { + nodeB = lNodes[j3]; + if (nodeA.getOwner() != nodeB.getOwner()) { + continue; + } + this.calcRepulsionForce(nodeA, nodeB); + } + } } - action = table[state4] && table[state4][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p3 in table[state4]) { - if (this.terminals_[p3] && p3 > TERROR) { - expected.push("'" + this.terminals_[p3] + "'"); + }; + FDLayout.prototype.calcGravitationalForces = function() { + var node2; + var lNodes = this.getAllNodesToApplyGravitation(); + for (var i2 = 0; i2 < lNodes.length; i2++) { + node2 = lNodes[i2]; + this.calcGravitationalForce(node2); + } + }; + FDLayout.prototype.moveNodes = function() { + var lNodes = this.getAllNodes(); + var node2; + for (var i2 = 0; i2 < lNodes.length; i2++) { + node2 = lNodes[i2]; + node2.move(); + } + }; + FDLayout.prototype.calcSpringForce = function(edge, idealLength) { + var sourceNode = edge.getSource(); + var targetNode = edge.getTarget(); + var length2; + var springForce; + var springForceX; + var springForceY; + if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) { + edge.updateLengthSimple(); + } else { + edge.updateLength(); + if (edge.isOverlapingSourceAndTarget) { + return; } } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + length2 = edge.getLength(); + if (length2 == 0) return; + springForce = this.springConstant * (length2 - idealLength); + springForceX = springForce * (edge.lengthX / length2); + springForceY = springForce * (edge.lengthY / length2); + sourceNode.springForceX += springForceX; + sourceNode.springForceY += springForceY; + targetNode.springForceX -= springForceX; + targetNode.springForceY -= springForceY; + }; + FDLayout.prototype.calcRepulsionForce = function(nodeA, nodeB) { + var rectA = nodeA.getRect(); + var rectB = nodeB.getRect(); + var overlapAmount = new Array(2); + var clipPoints = new Array(4); + var distanceX; + var distanceY; + var distanceSquared; + var distance2; + var repulsionForce; + var repulsionForceX; + var repulsionForceY; + if (rectA.intersects(rectB)) { + IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2); + repulsionForceX = 2 * overlapAmount[0]; + repulsionForceY = 2 * overlapAmount[1]; + var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren); + nodeA.repulsionForceX -= childrenConstant * repulsionForceX; + nodeA.repulsionForceY -= childrenConstant * repulsionForceY; + nodeB.repulsionForceX += childrenConstant * repulsionForceX; + nodeB.repulsionForceY += childrenConstant * repulsionForceY; } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) { + distanceX = rectB.getCenterX() - rectA.getCenterX(); + distanceY = rectB.getCenterY() - rectA.getCenterY(); + } else { + IGeometry.getIntersection(rectA, rectB, clipPoints); + distanceX = clipPoints[2] - clipPoints[0]; + distanceY = clipPoints[3] - clipPoints[1]; + } + if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) { + distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST; + } + if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) { + distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST; + } + distanceSquared = distanceX * distanceX + distanceY * distanceY; + distance2 = Math.sqrt(distanceSquared); + repulsionForce = this.repulsionConstant * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared; + repulsionForceX = repulsionForce * distanceX / distance2; + repulsionForceY = repulsionForce * distanceY / distance2; + nodeA.repulsionForceX -= repulsionForceX; + nodeA.repulsionForceY -= repulsionForceY; + nodeB.repulsionForceX += repulsionForceX; + nodeB.repulsionForceY += repulsionForceY; } - this.parseError(errStr, { - text: lexer3.match, - token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, - loc: yyloc, - expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; - if (recovering > 0) { - recovering--; - } + }; + FDLayout.prototype.calcGravitationalForce = function(node2) { + var ownerGraph; + var ownerCenterX; + var ownerCenterY; + var distanceX; + var distanceY; + var absDistanceX; + var absDistanceY; + var estimatedSize; + ownerGraph = node2.getOwner(); + ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2; + ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2; + distanceX = node2.getCenterX() - ownerCenterX; + distanceY = node2.getCenterY() - ownerCenterY; + absDistanceX = Math.abs(distanceX) + node2.getWidth() / 2; + absDistanceY = Math.abs(distanceY) + node2.getHeight() / 2; + if (node2.getOwner() == this.graphManager.getRoot()) { + estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor; + if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) { + node2.gravitationForceX = -this.gravityConstant * distanceX; + node2.gravitationForceY = -this.gravityConstant * distanceY; + } + } else { + estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor; + if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) { + node2.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant; + node2.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant; + } + } + }; + FDLayout.prototype.isConverged = function() { + var converged; + var oscilating = false; + if (this.totalIterations > this.maxIterations / 3) { + oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2; + } + converged = this.totalDisplacement < this.totalDisplacementThreshold; + this.oldTotalDisplacement = this.totalDisplacement; + return converged || oscilating; + }; + FDLayout.prototype.animate = function() { + if (this.animationDuringLayout && !this.isSubLayout) { + if (this.notAnimatedIterations == this.animationPeriod) { + this.update(); + this.notAnimatedIterations = 0; } else { - symbol = preErrorSymbol; - preErrorSymbol = null; + this.notAnimatedIterations++; } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; + } + }; + FDLayout.prototype.calcNoOfChildrenForAllNodes = function() { + var node2; + var allNodes = this.graphManager.getAllNodes(); + for (var i2 = 0; i2 < allNodes.length; i2++) { + node2 = allNodes[i2]; + node2.noOfChildren = node2.getNoOfChildren(); + } + }; + FDLayout.prototype.calcGrid = function(graph) { + var sizeX = 0; + var sizeY = 0; + sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange)); + sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange)); + var grid = new Array(sizeX); + for (var i2 = 0; i2 < sizeX; i2++) { + grid[i2] = new Array(sizeY); + } + for (var i2 = 0; i2 < sizeX; i2++) { + for (var j3 = 0; j3 < sizeY; j3++) { + grid[i2][j3] = new Array(); } - r2 = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r2 !== "undefined") { - return r2; + } + return grid; + }; + FDLayout.prototype.addNodeToGrid = function(v3, left3, top2) { + var startX2 = 0; + var finishX = 0; + var startY2 = 0; + var finishY = 0; + startX2 = parseInt(Math.floor((v3.getRect().x - left3) / this.repulsionRange)); + finishX = parseInt(Math.floor((v3.getRect().width + v3.getRect().x - left3) / this.repulsionRange)); + startY2 = parseInt(Math.floor((v3.getRect().y - top2) / this.repulsionRange)); + finishY = parseInt(Math.floor((v3.getRect().height + v3.getRect().y - top2) / this.repulsionRange)); + for (var i2 = startX2; i2 <= finishX; i2++) { + for (var j3 = startY2; j3 <= finishY; j3++) { + this.grid[i2][j3].push(v3); + v3.setGridCoordinates(startX2, finishX, startY2, finishY); } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); + } + }; + FDLayout.prototype.updateGrid = function() { + var i2; + var nodeA; + var lNodes = this.getAllNodes(); + this.grid = this.calcGrid(this.graphManager.getRoot()); + for (i2 = 0; i2 < lNodes.length; i2++) { + nodeA = lNodes[i2]; + this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop()); + } + }; + FDLayout.prototype.calculateRepulsionForceOfANode = function(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) { + if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) { + var surrounding = /* @__PURE__ */ new Set(); + nodeA.surrounding = new Array(); + var nodeB; + var grid = this.grid; + for (var i2 = nodeA.startX - 1; i2 < nodeA.finishX + 2; i2++) { + for (var j3 = nodeA.startY - 1; j3 < nodeA.finishY + 2; j3++) { + if (!(i2 < 0 || j3 < 0 || i2 >= grid.length || j3 >= grid[0].length)) { + for (var k2 = 0; k2 < grid[i2][j3].length; k2++) { + nodeB = grid[i2][j3][k2]; + if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) { + continue; + } + if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) { + var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2); + var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2); + if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) { + surrounding.add(nodeB); + } + } + } + } + } } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState2); - break; - case 3: - return true; - } - } - return true; - }, "parse") - }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { - EOF: 1, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str2, hash); - } else { - throw new Error(str2); - } - }, "parseError"), - // resets the lexer, sets new input - setInput: /* @__PURE__ */ __name(function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 + nodeA.surrounding = [].concat(_toConsumableArray2(surrounding)); + } + for (i2 = 0; i2 < nodeA.surrounding.length; i2++) { + this.calcRepulsionForce(nodeA, nodeA.surrounding[i2]); + } }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; + FDLayout.prototype.calcRepulsionRange = function() { + return 0; + }; + module3.exports = FDLayout; + }), + /* 19 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var LEdge = __webpack_require__(1); + var FDLayoutConstants = __webpack_require__(7); + function FDLayoutEdge(source, target, vEdge) { + LEdge.call(this, source, target, vEdge); + this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH; } - this.offset = 0; - return this; - }, "setInput"), - // consumes and returns one char from the input - input: /* @__PURE__ */ __name(function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; + __name(FDLayoutEdge, "FDLayoutEdge"); + FDLayoutEdge.prototype = Object.create(LEdge.prototype); + for (var prop in LEdge) { + FDLayoutEdge[prop] = LEdge[prop]; } - if (this.options.ranges) { - this.yylloc.range[1]++; + module3.exports = FDLayoutEdge; + }), + /* 20 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var LNode = __webpack_require__(3); + function FDLayoutNode(gm, loc, size4, vNode) { + LNode.call(this, gm, loc, size4, vNode); + this.springForceX = 0; + this.springForceY = 0; + this.repulsionForceX = 0; + this.repulsionForceY = 0; + this.gravitationForceX = 0; + this.gravitationForceY = 0; + this.displacementX = 0; + this.displacementY = 0; + this.startX = 0; + this.finishX = 0; + this.startY = 0; + this.finishY = 0; + this.surrounding = []; } - this._input = this._input.slice(1); - return ch; - }, "input"), - // unshifts one char (or a string) into the input - unput: /* @__PURE__ */ __name(function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; + __name(FDLayoutNode, "FDLayoutNode"); + FDLayoutNode.prototype = Object.create(LNode.prototype); + for (var prop in LNode) { + FDLayoutNode[prop] = LNode[prop]; } - var r2 = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + FDLayoutNode.prototype.setGridCoordinates = function(_startX, _finishX, _startY, _finishY) { + this.startX = _startX; + this.finishX = _finishX; + this.startY = _startY; + this.finishY = _finishY; }; - if (this.options.ranges) { - this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, "unput"), - // When called from action, caches matched text and appends it on next action - more: /* @__PURE__ */ __name(function() { - this._more = true; - return this; - }, "more"), - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: /* @__PURE__ */ __name(function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - return this; - }, "reject"), - // retain first n characters of the match - less: /* @__PURE__ */ __name(function(n2) { - this.unput(this.match.slice(n2)); - }, "less"), - // displays already matched input, i.e. for error messages - pastInput: /* @__PURE__ */ __name(function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, "pastInput"), - // displays upcoming input, i.e. for error messages - upcomingInput: /* @__PURE__ */ __name(function() { - var next3 = this.match; - if (next3.length < 20) { - next3 += this._input.substr(0, 20 - next3.length); - } - return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, "upcomingInput"), - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: /* @__PURE__ */ __name(function() { - var pre = this.pastInput(); - var c3 = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c3 + "^"; - }, "showPosition"), - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { - var token2, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); + module3.exports = FDLayoutNode; + }), + /* 21 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function DimensionD2(width3, height2) { + this.width = 0; + this.height = 0; + if (width3 !== null && height2 !== null) { + this.height = height2; + this.width = width3; } } - lines = match2[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length + __name(DimensionD2, "DimensionD"); + DimensionD2.prototype.getWidth = function() { + return this.width; }; - this.yytext += match2[0]; - this.match += match2[0]; - this.matches = match2; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match2[0].length); - this.matched += match2[0]; - token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; + DimensionD2.prototype.setWidth = function(width3) { + this.width = width3; + }; + DimensionD2.prototype.getHeight = function() { + return this.height; + }; + DimensionD2.prototype.setHeight = function(height2) { + this.height = height2; + }; + module3.exports = DimensionD2; + }), + /* 22 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var UniqueIDGeneretor = __webpack_require__(14); + function HashMap() { + this.map = {}; + this.keys = []; } - if (token2) { - return token2; - } else if (this._backtrack) { - for (var k2 in backup) { - this[k2] = backup[k2]; + __name(HashMap, "HashMap"); + HashMap.prototype.put = function(key, value2) { + var theId = UniqueIDGeneretor.createID(key); + if (!this.contains(theId)) { + this.map[theId] = value2; + this.keys.push(key); } - return false; - } - return false; - }, "test_match"), - // return next match in input - next: /* @__PURE__ */ __name(function() { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; + }; + HashMap.prototype.contains = function(key) { + var theId = UniqueIDGeneretor.createID(key); + return this.map[key] != null; + }; + HashMap.prototype.get = function(key) { + var theId = UniqueIDGeneretor.createID(key); + return this.map[theId]; + }; + HashMap.prototype.keySet = function() { + return this.keys; + }; + module3.exports = HashMap; + }), + /* 23 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var UniqueIDGeneretor = __webpack_require__(14); + function HashSet() { + this.set = {}; } - var token2, match2, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; + __name(HashSet, "HashSet"); + ; + HashSet.prototype.add = function(obj) { + var theId = UniqueIDGeneretor.createID(obj); + if (!this.contains(theId)) this.set[theId] = obj; + }; + HashSet.prototype.remove = function(obj) { + delete this.set[UniqueIDGeneretor.createID(obj)]; + }; + HashSet.prototype.clear = function() { + this.set = {}; + }; + HashSet.prototype.contains = function(obj) { + return this.set[UniqueIDGeneretor.createID(obj)] == obj; + }; + HashSet.prototype.isEmpty = function() { + return this.size() === 0; + }; + HashSet.prototype.size = function() { + return Object.keys(this.set).length; + }; + HashSet.prototype.addAllTo = function(list) { + var keys2 = Object.keys(this.set); + var length2 = keys2.length; + for (var i2 = 0; i2 < length2; i2++) { + list.push(this.set[keys2[i2]]); + } + }; + HashSet.prototype.size = function() { + return Object.keys(this.set).length; + }; + HashSet.prototype.addAll = function(list) { + var s2 = list.length; + for (var i2 = 0; i2 < s2; i2++) { + var v3 = list[i2]; + this.add(v3); + } + }; + module3.exports = HashSet; + }), + /* 24 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var _createClass2 = /* @__PURE__ */ (function() { + function defineProperties(target, props) { + for (var i2 = 0; i2 < props.length; i2++) { + var descriptor = props[i2]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + __name(defineProperties, "defineProperties"); + return function(Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + })(); + function _classCallCheck2(instance2, Constructor) { + if (!(instance2 instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } } - var rules = this._currentRules(); - for (var i2 = 0; i2 < rules.length; i2++) { - tempMatch = this._input.match(this.rules[rules[i2]]); - if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { - match2 = tempMatch; - index = i2; - if (this.options.backtrack_lexer) { - token2 = this.test_match(tempMatch, rules[i2]); - if (token2 !== false) { - return token2; - } else if (this._backtrack) { - match2 = false; - continue; - } else { - return false; + __name(_classCallCheck2, "_classCallCheck"); + var LinkedList = __webpack_require__(11); + var Quicksort = (function() { + function Quicksort2(A2, compareFunction) { + _classCallCheck2(this, Quicksort2); + if (compareFunction !== null || compareFunction !== void 0) this.compareFunction = this._defaultCompareFunction; + var length2 = void 0; + if (A2 instanceof LinkedList) length2 = A2.size(); + else length2 = A2.length; + this._quicksort(A2, 0, length2 - 1); + } + __name(Quicksort2, "Quicksort"); + _createClass2(Quicksort2, [{ + key: "_quicksort", + value: /* @__PURE__ */ __name(function _quicksort(A2, p3, r2) { + if (p3 < r2) { + var q3 = this._partition(A2, p3, r2); + this._quicksort(A2, p3, q3); + this._quicksort(A2, q3 + 1, r2); } - } else if (!this.options.flex) { - break; + }, "_quicksort") + }, { + key: "_partition", + value: /* @__PURE__ */ __name(function _partition(A2, p3, r2) { + var x5 = this._get(A2, p3); + var i2 = p3; + var j3 = r2; + while (true) { + while (this.compareFunction(x5, this._get(A2, j3))) { + j3--; + } + while (this.compareFunction(this._get(A2, i2), x5)) { + i2++; + } + if (i2 < j3) { + this._swap(A2, i2, j3); + i2++; + j3--; + } else return j3; + } + }, "_partition") + }, { + key: "_get", + value: /* @__PURE__ */ __name(function _get(object3, index) { + if (object3 instanceof LinkedList) return object3.get_object_at(index); + else return object3[index]; + }, "_get") + }, { + key: "_set", + value: /* @__PURE__ */ __name(function _set(object3, index, value2) { + if (object3 instanceof LinkedList) object3.set_object_at(index, value2); + else object3[index] = value2; + }, "_set") + }, { + key: "_swap", + value: /* @__PURE__ */ __name(function _swap(A2, i2, j3) { + var temp = this._get(A2, i2); + this._set(A2, i2, this._get(A2, j3)); + this._set(A2, j3, temp); + }, "_swap") + }, { + key: "_defaultCompareFunction", + value: /* @__PURE__ */ __name(function _defaultCompareFunction(a2, b3) { + return b3 > a2; + }, "_defaultCompareFunction") + }]); + return Quicksort2; + })(); + module3.exports = Quicksort; + }), + /* 25 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var _createClass2 = /* @__PURE__ */ (function() { + function defineProperties(target, props) { + for (var i2 = 0; i2 < props.length; i2++) { + var descriptor = props[i2]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); } } - } - if (match2) { - token2 = this.test_match(match2, rules[index]); - if (token2 !== false) { - return token2; + __name(defineProperties, "defineProperties"); + return function(Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + })(); + function _classCallCheck2(instance2, Constructor) { + if (!(instance2 instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); } - return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, "next"), - // return next match that has a token - lex: /* @__PURE__ */ __name(function lex() { - var r2 = this.next(); - if (r2) { - return r2; - } else { - return this.lex(); - } - }, "lex"), - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: /* @__PURE__ */ __name(function begin(condition) { - this.conditionStack.push(condition); - }, "begin"), - // pop the previously active lexer condition state off the condition stack - popState: /* @__PURE__ */ __name(function popState() { - var n2 = this.conditionStack.length - 1; - if (n2 > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, "popState"), - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: /* @__PURE__ */ __name(function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, "_currentRules"), - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: /* @__PURE__ */ __name(function topState(n2) { - n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); - if (n2 >= 0) { - return this.conditionStack[n2]; - } else { - return "INITIAL"; } - }, "topState"), - // alias for begin(condition) - pushState: /* @__PURE__ */ __name(function pushState(condition) { - this.begin(condition); - }, "pushState"), - // return the number of states currently on the stack - stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { - return this.conditionStack.length; - }, "stateStackSize"), - options: {}, - performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - return 60; - break; - case 1: - return 61; - break; - case 2: - return 62; - break; - case 3: - return 63; - break; - case 4: - break; - case 5: - break; - case 6: - this.begin("acc_title"); - return 33; - break; - case 7: - this.popState(); - return "acc_title_value"; - break; - case 8: - this.begin("acc_descr"); - return 35; - break; - case 9: - this.popState(); - return "acc_descr_value"; - break; - case 10: - this.begin("acc_descr_multiline"); - break; - case 11: - this.popState(); - break; - case 12: - return "acc_descr_multiline_value"; - break; - case 13: - return 8; - break; - case 14: - break; - case 15: - return 7; - break; - case 16: - return 7; - break; - case 17: - return "EDGE_STATE"; - break; - case 18: - this.begin("callback_name"); - break; - case 19: - this.popState(); - break; - case 20: - this.popState(); - this.begin("callback_args"); - break; - case 21: - return 77; - break; - case 22: - this.popState(); - break; - case 23: - return 78; - break; - case 24: - this.popState(); - break; - case 25: - return "STR"; - break; - case 26: - this.begin("string"); - break; - case 27: - return 80; - break; - case 28: - return 55; - break; - case 29: - this.begin("namespace"); - return 42; - break; - case 30: - this.popState(); - return 8; - break; - case 31: - break; - case 32: - this.begin("namespace-body"); - return 39; - break; - case 33: - this.popState(); - return 41; - break; - case 34: - return "EOF_IN_STRUCT"; - break; - case 35: - return 8; - break; - case 36: - break; - case 37: - return "EDGE_STATE"; - break; - case 38: - this.begin("class"); - return 46; - break; - case 39: - this.popState(); - return 8; - break; - case 40: - break; - case 41: - this.popState(); - this.popState(); - return 41; - break; - case 42: - this.begin("class-body"); - return 39; - break; - case 43: - this.popState(); - return 41; - break; - case 44: - return "EOF_IN_STRUCT"; - break; - case 45: - return "EDGE_STATE"; - break; - case 46: - return "OPEN_IN_STRUCT"; - break; - case 47: - break; - case 48: - return "MEMBER"; - break; - case 49: - return 81; - break; - case 50: - return 73; - break; - case 51: - return 74; - break; - case 52: - return 76; - break; - case 53: - return 52; - break; - case 54: - return 54; - break; - case 55: - return 47; - break; - case 56: - return 48; - break; - case 57: - return 79; - break; - case 58: - this.popState(); - break; - case 59: - return "GENERICTYPE"; - break; - case 60: - this.begin("generic"); - break; - case 61: - this.popState(); - break; - case 62: - return "BQUOTE_STR"; - break; - case 63: - this.begin("bqstring"); - break; - case 64: - return 75; - break; - case 65: - return 75; - break; - case 66: - return 75; - break; - case 67: - return 75; - break; - case 68: - return 67; - break; - case 69: - return 67; - break; - case 70: - return 69; - break; - case 71: - return 69; - break; - case 72: - return 68; - break; - case 73: - return 66; - break; - case 74: - return 70; - break; - case 75: - return 71; - break; - case 76: - return 72; - break; - case 77: - return 22; - break; - case 78: - return 44; - break; - case 79: - return 99; - break; - case 80: - return 17; - break; - case 81: - return "PLUS"; - break; - case 82: - return 85; - break; - case 83: - return 59; - break; - case 84: - return 88; - break; - case 85: - return 88; - break; - case 86: - return 89; - break; - case 87: - return "EQUALS"; - break; - case 88: - return "EQUALS"; - break; - case 89: - return 58; - break; - case 90: - return 12; - break; - case 91: - return 14; - break; - case 92: - return "PUNCTUATION"; - break; - case 93: - return 84; - break; - case 94: - return 101; - break; - case 95: - return 87; - break; - case 96: - return 87; - break; - case 97: - return 9; - break; - } - }, "anonymous"), - rules: [/^(?:.*direction\s+TB[^\n]*)/, /^(?:.*direction\s+BT[^\n]*)/, /^(?:.*direction\s+RL[^\n]*)/, /^(?:.*direction\s+LR[^\n]*)/, /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/, /^(?:%%[^\n]*(\r?\n)*)/, /^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:classDiagram-v2\b)/, /^(?:classDiagram\b)/, /^(?:\[\*\])/, /^(?:call[\s]+)/, /^(?:\([\s]*\))/, /^(?:\()/, /^(?:[^(]*)/, /^(?:\))/, /^(?:[^)]*)/, /^(?:["])/, /^(?:[^"]*)/, /^(?:["])/, /^(?:style\b)/, /^(?:classDef\b)/, /^(?:namespace\b)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:\[\*\])/, /^(?:class\b)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:[}])/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\[\*\])/, /^(?:[{])/, /^(?:[\n])/, /^(?:[^{}\n]*)/, /^(?:cssClass\b)/, /^(?:callback\b)/, /^(?:link\b)/, /^(?:click\b)/, /^(?:note for\b)/, /^(?:note\b)/, /^(?:<<)/, /^(?:>>)/, /^(?:href\b)/, /^(?:[~])/, /^(?:[^~]*)/, /^(?:~)/, /^(?:[`])/, /^(?:[^`]+)/, /^(?:[`])/, /^(?:_self\b)/, /^(?:_blank\b)/, /^(?:_parent\b)/, /^(?:_top\b)/, /^(?:\s*<\|)/, /^(?:\s*\|>)/, /^(?:\s*>)/, /^(?:\s*<)/, /^(?:\s*\*)/, /^(?:\s*o\b)/, /^(?:\s*\(\))/, /^(?:--)/, /^(?:\.\.)/, /^(?::{1}[^:\n;]+)/, /^(?::{3})/, /^(?:-)/, /^(?:\.)/, /^(?:\+)/, /^(?::)/, /^(?:,)/, /^(?:#)/, /^(?:#)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:\w+)/, /^(?:\[)/, /^(?:\])/, /^(?:[!"#$%&'*+,-.`?\\/])/, /^(?:[0-9]+)/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\s)/, /^(?:\s)/, /^(?:$)/], - conditions: { "namespace-body": { "rules": [26, 33, 34, 35, 36, 37, 38, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "namespace": { "rules": [26, 29, 30, 31, 32, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "class-body": { "rules": [26, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "class": { "rules": [26, 39, 40, 41, 42, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "acc_descr_multiline": { "rules": [11, 12, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "acc_descr": { "rules": [9, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "acc_title": { "rules": [7, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "callback_args": { "rules": [22, 23, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "callback_name": { "rules": [19, 20, 21, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "href": { "rules": [26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "struct": { "rules": [26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "generic": { "rules": [26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "bqstring": { "rules": [26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "string": { "rules": [24, 25, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 26, 27, 28, 29, 38, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], "inclusive": true } } - }; - return lexer3; - }(); - parser24.lexer = lexer2; - function Parser3() { - this.yy = {}; - } - __name(Parser3, "Parser"); - Parser3.prototype = parser24; - parser24.Parser = Parser3; - return new Parser3(); - }(); - parser13.parser = parser13; - classDiagram_default = parser13; - } - }); - - // src/diagrams/class/classTypes.ts - var visibilityValues, ClassMember; - var init_classTypes = __esm({ - "src/diagrams/class/classTypes.ts"() { - "use strict"; - init_diagramAPI(); - init_common(); - visibilityValues = ["#", "+", "~", "-", ""]; - ClassMember = class { - static { - __name(this, "ClassMember"); - } - constructor(input, memberType) { - this.memberType = memberType; - this.visibility = ""; - this.classifier = ""; - this.text = ""; - const sanitizedInput = sanitizeText(input, getConfig2()); - this.parseMember(sanitizedInput); - } - getDisplayDetails() { - let displayText = this.visibility + parseGenericTypes(this.id); - if (this.memberType === "method") { - displayText += `(${parseGenericTypes(this.parameters.trim())})`; - if (this.returnType) { - displayText += " : " + parseGenericTypes(this.returnType); - } - } - displayText = displayText.trim(); - const cssStyle = this.parseClassifier(); - return { - displayText, - cssStyle - }; - } - parseMember(input) { - let potentialClassifier = ""; - if (this.memberType === "method") { - const methodRegEx = /([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/; - const match2 = methodRegEx.exec(input); - if (match2) { - const detectedVisibility = match2[1] ? match2[1].trim() : ""; - if (visibilityValues.includes(detectedVisibility)) { - this.visibility = detectedVisibility; - } - this.id = match2[2]; - this.parameters = match2[3] ? match2[3].trim() : ""; - potentialClassifier = match2[4] ? match2[4].trim() : ""; - this.returnType = match2[5] ? match2[5].trim() : ""; - if (potentialClassifier === "") { - const lastChar = this.returnType.substring(this.returnType.length - 1); - if (/[$*]/.exec(lastChar)) { - potentialClassifier = lastChar; - this.returnType = this.returnType.substring(0, this.returnType.length - 1); + __name(_classCallCheck2, "_classCallCheck"); + var NeedlemanWunsch = (function() { + function NeedlemanWunsch2(sequence1, sequence2) { + var match_score = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1; + var mismatch_penalty = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : -1; + var gap_penalty = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : -1; + _classCallCheck2(this, NeedlemanWunsch2); + this.sequence1 = sequence1; + this.sequence2 = sequence2; + this.match_score = match_score; + this.mismatch_penalty = mismatch_penalty; + this.gap_penalty = gap_penalty; + this.iMax = sequence1.length + 1; + this.jMax = sequence2.length + 1; + this.grid = new Array(this.iMax); + for (var i2 = 0; i2 < this.iMax; i2++) { + this.grid[i2] = new Array(this.jMax); + for (var j3 = 0; j3 < this.jMax; j3++) { + this.grid[i2][j3] = 0; + } + } + this.tracebackGrid = new Array(this.iMax); + for (var _i = 0; _i < this.iMax; _i++) { + this.tracebackGrid[_i] = new Array(this.jMax); + for (var _j = 0; _j < this.jMax; _j++) { + this.tracebackGrid[_i][_j] = [null, null, null]; + } + } + this.alignments = []; + this.score = -1; + this.computeGrids(); } + __name(NeedlemanWunsch2, "NeedlemanWunsch"); + _createClass2(NeedlemanWunsch2, [{ + key: "getScore", + value: /* @__PURE__ */ __name(function getScore() { + return this.score; + }, "getScore") + }, { + key: "getAlignments", + value: /* @__PURE__ */ __name(function getAlignments2() { + return this.alignments; + }, "getAlignments") + // Main dynamic programming procedure + }, { + key: "computeGrids", + value: /* @__PURE__ */ __name(function computeGrids() { + for (var j3 = 1; j3 < this.jMax; j3++) { + this.grid[0][j3] = this.grid[0][j3 - 1] + this.gap_penalty; + this.tracebackGrid[0][j3] = [false, false, true]; + } + for (var i2 = 1; i2 < this.iMax; i2++) { + this.grid[i2][0] = this.grid[i2 - 1][0] + this.gap_penalty; + this.tracebackGrid[i2][0] = [false, true, false]; + } + for (var _i2 = 1; _i2 < this.iMax; _i2++) { + for (var _j2 = 1; _j2 < this.jMax; _j2++) { + var diag = void 0; + if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score; + else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty; + var up = this.grid[_i2 - 1][_j2] + this.gap_penalty; + var left3 = this.grid[_i2][_j2 - 1] + this.gap_penalty; + var maxOf = [diag, up, left3]; + var indices = this.arrayAllMaxIndexes(maxOf); + this.grid[_i2][_j2] = maxOf[indices[0]]; + this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)]; + } + } + this.score = this.grid[this.iMax - 1][this.jMax - 1]; + }, "computeGrids") + // Gets all possible valid sequence combinations + }, { + key: "alignmentTraceback", + value: /* @__PURE__ */ __name(function alignmentTraceback() { + var inProcessAlignments = []; + inProcessAlignments.push({ + pos: [this.sequence1.length, this.sequence2.length], + seq1: "", + seq2: "" + }); + while (inProcessAlignments[0]) { + var current = inProcessAlignments[0]; + var directions = this.tracebackGrid[current.pos[0]][current.pos[1]]; + if (directions[0]) { + inProcessAlignments.push({ + pos: [current.pos[0] - 1, current.pos[1] - 1], + seq1: this.sequence1[current.pos[0] - 1] + current.seq1, + seq2: this.sequence2[current.pos[1] - 1] + current.seq2 + }); + } + if (directions[1]) { + inProcessAlignments.push({ + pos: [current.pos[0] - 1, current.pos[1]], + seq1: this.sequence1[current.pos[0] - 1] + current.seq1, + seq2: "-" + current.seq2 + }); + } + if (directions[2]) { + inProcessAlignments.push({ + pos: [current.pos[0], current.pos[1] - 1], + seq1: "-" + current.seq1, + seq2: this.sequence2[current.pos[1] - 1] + current.seq2 + }); + } + if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ + sequence1: current.seq1, + sequence2: current.seq2 + }); + inProcessAlignments.shift(); + } + return this.alignments; + }, "alignmentTraceback") + // Helper Functions + }, { + key: "getAllIndexes", + value: /* @__PURE__ */ __name(function getAllIndexes(arr, val) { + var indexes = [], i2 = -1; + while ((i2 = arr.indexOf(val, i2 + 1)) !== -1) { + indexes.push(i2); + } + return indexes; + }, "getAllIndexes") + }, { + key: "arrayAllMaxIndexes", + value: /* @__PURE__ */ __name(function arrayAllMaxIndexes(array4) { + return this.getAllIndexes(array4, Math.max.apply(null, array4)); + }, "arrayAllMaxIndexes") + }]); + return NeedlemanWunsch2; + })(); + module3.exports = NeedlemanWunsch; + }), + /* 26 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var layoutBase = /* @__PURE__ */ __name(function layoutBase2() { + return; + }, "layoutBase"); + layoutBase.FDLayout = __webpack_require__(18); + layoutBase.FDLayoutConstants = __webpack_require__(7); + layoutBase.FDLayoutEdge = __webpack_require__(19); + layoutBase.FDLayoutNode = __webpack_require__(20); + layoutBase.DimensionD = __webpack_require__(21); + layoutBase.HashMap = __webpack_require__(22); + layoutBase.HashSet = __webpack_require__(23); + layoutBase.IGeometry = __webpack_require__(8); + layoutBase.IMath = __webpack_require__(9); + layoutBase.Integer = __webpack_require__(10); + layoutBase.Point = __webpack_require__(12); + layoutBase.PointD = __webpack_require__(4); + layoutBase.RandomSeed = __webpack_require__(16); + layoutBase.RectangleD = __webpack_require__(13); + layoutBase.Transform = __webpack_require__(17); + layoutBase.UniqueIDGeneretor = __webpack_require__(14); + layoutBase.Quicksort = __webpack_require__(24); + layoutBase.LinkedList = __webpack_require__(11); + layoutBase.LGraphObject = __webpack_require__(2); + layoutBase.LGraph = __webpack_require__(5); + layoutBase.LEdge = __webpack_require__(1); + layoutBase.LGraphManager = __webpack_require__(6); + layoutBase.LNode = __webpack_require__(3); + layoutBase.Layout = __webpack_require__(15); + layoutBase.LayoutConstants = __webpack_require__(0); + layoutBase.NeedlemanWunsch = __webpack_require__(25); + module3.exports = layoutBase; + }), + /* 27 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + function Emitter4() { + this.listeners = []; } - } - } else { - const length2 = input.length; - const firstChar = input.substring(0, 1); - const lastChar = input.substring(length2 - 1); - if (visibilityValues.includes(firstChar)) { - this.visibility = firstChar; - } - if (/[$*]/.exec(lastChar)) { - potentialClassifier = lastChar; - } - this.id = input.substring( - this.visibility === "" ? 0 : 1, - potentialClassifier === "" ? length2 : length2 - 1 - ); - } - this.classifier = potentialClassifier; - this.id = this.id.startsWith(" ") ? " " + this.id.trim() : this.id.trim(); - const combinedText = `${this.visibility ? "\\" + this.visibility : ""}${parseGenericTypes(this.id)}${this.memberType === "method" ? `(${parseGenericTypes(this.parameters)})${this.returnType ? " : " + parseGenericTypes(this.returnType) : ""}` : ""}`; - this.text = combinedText.replaceAll("<", "<").replaceAll(">", ">"); - if (this.text.startsWith("\\<")) { - this.text = this.text.replace("\\<", "~"); - } - } - parseClassifier() { - switch (this.classifier) { - case "*": - return "font-style:italic;"; - case "$": - return "text-decoration:underline;"; - default: - return ""; - } - } - }; + __name(Emitter4, "Emitter"); + var p3 = Emitter4.prototype; + p3.addListener = function(event3, callback) { + this.listeners.push({ + event: event3, + callback + }); + }; + p3.removeListener = function(event3, callback) { + for (var i2 = this.listeners.length; i2 >= 0; i2--) { + var l4 = this.listeners[i2]; + if (l4.event === event3 && l4.callback === callback) { + this.listeners.splice(i2, 1); + } + } + }; + p3.emit = function(event3, data5) { + for (var i2 = 0; i2 < this.listeners.length; i2++) { + var l4 = this.listeners[i2]; + if (event3 === l4.event) { + l4.callback(data5); + } + } + }; + module3.exports = Emitter4; + }) + /******/ + ]) + ); + }); } }); - // src/diagrams/class/classDb.ts - var MERMAID_DOM_ID_PREFIX2, classCounter, sanitizeText4, ClassDB; - var init_classDb = __esm({ - "src/diagrams/class/classDb.ts"() { + // ../../node_modules/.pnpm/cose-base@1.0.3/node_modules/cose-base/cose-base.js + var require_cose_base = __commonJS({ + "../../node_modules/.pnpm/cose-base@1.0.3/node_modules/cose-base/cose-base.js"(exports2, module2) { "use strict"; - init_src32(); - init_logger(); - init_diagramAPI(); - init_common(); - init_utils2(); - init_commonDb(); - init_classTypes(); - MERMAID_DOM_ID_PREFIX2 = "classId-"; - classCounter = 0; - sanitizeText4 = /* @__PURE__ */ __name((txt) => common_default.sanitizeText(txt, getConfig2()), "sanitizeText"); - ClassDB = class { - constructor() { - this.relations = []; - this.classes = /* @__PURE__ */ new Map(); - this.styleClasses = /* @__PURE__ */ new Map(); - this.notes = []; - this.interfaces = []; - // private static classCounter = 0; - this.namespaces = /* @__PURE__ */ new Map(); - this.namespaceCounter = 0; - this.functions = []; - this.lineType = { - LINE: 0, - DOTTED_LINE: 1 - }; - this.relationType = { - AGGREGATION: 0, - EXTENSION: 1, - COMPOSITION: 2, - DEPENDENCY: 3, - LOLLIPOP: 4 - }; - this.setupToolTips = /* @__PURE__ */ __name((element3) => { - let tooltipElem = select_default2(".mermaidTooltip"); - if ((tooltipElem._groups || tooltipElem)[0][0] === null) { - tooltipElem = select_default2("body").append("div").attr("class", "mermaidTooltip").style("opacity", 0); - } - const svg2 = select_default2(element3).select("svg"); - const nodes6 = svg2.selectAll("g.node"); - nodes6.on("mouseover", (event3) => { - const el = select_default2(event3.currentTarget); - const title2 = el.attr("title"); - if (title2 === null) { - return; - } - const rect3 = this.getBoundingClientRect(); - tooltipElem.transition().duration(200).style("opacity", ".9"); - tooltipElem.text(el.attr("title")).style("left", window.scrollX + rect3.left + (rect3.right - rect3.left) / 2 + "px").style("top", window.scrollY + rect3.top - 14 + document.body.scrollTop + "px"); - tooltipElem.html(tooltipElem.html().replace(/<br\/>/g, "
    ")); - el.classed("hover", true); - }).on("mouseout", (event3) => { - tooltipElem.transition().duration(500).style("opacity", 0); - const el = select_default2(event3.currentTarget); - el.classed("hover", false); - }); - }, "setupToolTips"); - this.direction = "TB"; - this.setAccTitle = setAccTitle; - this.getAccTitle = getAccTitle; - this.setAccDescription = setAccDescription; - this.getAccDescription = getAccDescription; - this.setDiagramTitle = setDiagramTitle; - this.getDiagramTitle = getDiagramTitle; - this.getConfig = /* @__PURE__ */ __name(() => getConfig2().class, "getConfig"); - this.functions.push(this.setupToolTips.bind(this)); - this.clear(); - this.addRelation = this.addRelation.bind(this); - this.addClassesToNamespace = this.addClassesToNamespace.bind(this); - this.addNamespace = this.addNamespace.bind(this); - this.setCssClass = this.setCssClass.bind(this); - this.addMembers = this.addMembers.bind(this); - this.addClass = this.addClass.bind(this); - this.setClassLabel = this.setClassLabel.bind(this); - this.addAnnotation = this.addAnnotation.bind(this); - this.addMember = this.addMember.bind(this); - this.cleanupLabel = this.cleanupLabel.bind(this); - this.addNote = this.addNote.bind(this); - this.defineClass = this.defineClass.bind(this); - this.setDirection = this.setDirection.bind(this); - this.setLink = this.setLink.bind(this); - this.bindFunctions = this.bindFunctions.bind(this); - this.clear = this.clear.bind(this); - this.setTooltip = this.setTooltip.bind(this); - this.setClickEvent = this.setClickEvent.bind(this); - this.setCssStyle = this.setCssStyle.bind(this); - } - static { - __name(this, "ClassDB"); - } - splitClassNameAndType(_id) { - const id29 = common_default.sanitizeText(_id, getConfig2()); - let genericType = ""; - let className = id29; - if (id29.indexOf("~") > 0) { - const split = id29.split("~"); - className = sanitizeText4(split[0]); - genericType = sanitizeText4(split[1]); - } - return { className, type: genericType }; - } - setClassLabel(_id, label) { - const id29 = common_default.sanitizeText(_id, getConfig2()); - if (label) { - label = sanitizeText4(label); - } - const { className } = this.splitClassNameAndType(id29); - this.classes.get(className).label = label; - this.classes.get(className).text = `${label}${this.classes.get(className).type ? `<${this.classes.get(className).type}>` : ""}`; - } - /** - * Function called by parser when a node definition has been found. - * - * @param id - Id of the class to add - * @public - */ - addClass(_id) { - const id29 = common_default.sanitizeText(_id, getConfig2()); - const { className, type: type3 } = this.splitClassNameAndType(id29); - if (this.classes.has(className)) { - return; - } - const name = common_default.sanitizeText(className, getConfig2()); - this.classes.set(name, { - id: name, - type: type3, - label: name, - text: `${name}${type3 ? `<${type3}>` : ""}`, - shape: "classBox", - cssClasses: "default", - methods: [], - members: [], - annotations: [], - styles: [], - domId: MERMAID_DOM_ID_PREFIX2 + name + "-" + classCounter - }); - classCounter++; - } - addInterface(label, classId) { - const classInterface = { - id: `interface${this.interfaces.length}`, - label, - classId - }; - this.interfaces.push(classInterface); - } - /** - * Function to lookup domId from id in the graph definition. - * - * @param id - class ID to lookup - * @public - */ - lookUpDomId(_id) { - const id29 = common_default.sanitizeText(_id, getConfig2()); - if (this.classes.has(id29)) { - return this.classes.get(id29).domId; - } - throw new Error("Class not found: " + id29); - } - clear() { - this.relations = []; - this.classes = /* @__PURE__ */ new Map(); - this.notes = []; - this.interfaces = []; - this.functions = []; - this.functions.push(this.setupToolTips.bind(this)); - this.namespaces = /* @__PURE__ */ new Map(); - this.namespaceCounter = 0; - this.direction = "TB"; - clear(); - } - getClass(id29) { - return this.classes.get(id29); - } - getClasses() { - return this.classes; - } - getRelations() { - return this.relations; - } - getNotes() { - return this.notes; - } - addRelation(classRelation) { - log.debug("Adding relation: " + JSON.stringify(classRelation)); - const invalidTypes = [ - this.relationType.LOLLIPOP, - this.relationType.AGGREGATION, - this.relationType.COMPOSITION, - this.relationType.DEPENDENCY, - this.relationType.EXTENSION - ]; - if (classRelation.relation.type1 === this.relationType.LOLLIPOP && !invalidTypes.includes(classRelation.relation.type2)) { - this.addClass(classRelation.id2); - this.addInterface(classRelation.id1, classRelation.id2); - classRelation.id1 = `interface${this.interfaces.length - 1}`; - } else if (classRelation.relation.type2 === this.relationType.LOLLIPOP && !invalidTypes.includes(classRelation.relation.type1)) { - this.addClass(classRelation.id1); - this.addInterface(classRelation.id2, classRelation.id1); - classRelation.id2 = `interface${this.interfaces.length - 1}`; - } else { - this.addClass(classRelation.id1); - this.addClass(classRelation.id2); - } - classRelation.id1 = this.splitClassNameAndType(classRelation.id1).className; - classRelation.id2 = this.splitClassNameAndType(classRelation.id2).className; - classRelation.relationTitle1 = common_default.sanitizeText( - classRelation.relationTitle1.trim(), - getConfig2() - ); - classRelation.relationTitle2 = common_default.sanitizeText( - classRelation.relationTitle2.trim(), - getConfig2() - ); - this.relations.push(classRelation); - } - /** - * Adds an annotation to the specified class Annotations mark special properties of the given type - * (like 'interface' or 'service') - * - * @param className - The class name - * @param annotation - The name of the annotation without any brackets - * @public - */ - addAnnotation(className, annotation) { - const validatedClassName = this.splitClassNameAndType(className).className; - this.classes.get(validatedClassName).annotations.push(annotation); - } - /** - * Adds a member to the specified class - * - * @param className - The class name - * @param member - The full name of the member. If the member is enclosed in `<>` it is - * treated as an annotation If the member is ending with a closing bracket ) it is treated as a - * method Otherwise the member will be treated as a normal property - * @public - */ - addMember(className, member) { - this.addClass(className); - const validatedClassName = this.splitClassNameAndType(className).className; - const theClass = this.classes.get(validatedClassName); - if (typeof member === "string") { - const memberString = member.trim(); - if (memberString.startsWith("<<") && memberString.endsWith(">>")) { - theClass.annotations.push(sanitizeText4(memberString.substring(2, memberString.length - 2))); - } else if (memberString.indexOf(")") > 0) { - theClass.methods.push(new ClassMember(memberString, "method")); - } else if (memberString) { - theClass.members.push(new ClassMember(memberString, "attribute")); - } - } - } - addMembers(className, members) { - if (Array.isArray(members)) { - members.reverse(); - members.forEach((member) => this.addMember(className, member)); - } - } - addNote(text4, className) { - const note3 = { - id: `note${this.notes.length}`, - class: className, - text: text4 - }; - this.notes.push(note3); - } - cleanupLabel(label) { - if (label.startsWith(":")) { - label = label.substring(1); - } - return sanitizeText4(label.trim()); - } - /** - * Called by parser when assigning cssClass to a class - * - * @param ids - Comma separated list of ids - * @param className - Class to add - */ - setCssClass(ids, className) { - ids.split(",").forEach((_id) => { - let id29 = _id; - if (/\d/.exec(_id[0])) { - id29 = MERMAID_DOM_ID_PREFIX2 + id29; - } - const classNode = this.classes.get(id29); - if (classNode) { - classNode.cssClasses += " " + className; - } - }); - } - defineClass(ids, style3) { - for (const id29 of ids) { - let styleClass = this.styleClasses.get(id29); - if (styleClass === void 0) { - styleClass = { id: id29, styles: [], textStyles: [] }; - this.styleClasses.set(id29, styleClass); - } - if (style3) { - style3.forEach((s2) => { - if (/color/.exec(s2)) { - const newStyle = s2.replace("fill", "bgFill"); - styleClass.textStyles.push(newStyle); - } - styleClass.styles.push(s2); - }); - } - this.classes.forEach((value2) => { - if (value2.cssClasses.includes(id29)) { - value2.styles.push(...style3.flatMap((s2) => s2.split(","))); + (/* @__PURE__ */ __name((function webpackUniversalModuleDefinition(root3, factory) { + if (typeof exports2 === "object" && typeof module2 === "object") + module2.exports = factory(require_layout_base()); + else if (typeof define === "function" && define.amd) + define(["layout-base"], factory); + else if (typeof exports2 === "object") + exports2["coseBase"] = factory(require_layout_base()); + else + root3["coseBase"] = factory(root3["layoutBase"]); + }), "webpackUniversalModuleDefinition"))(exports2, function(__WEBPACK_EXTERNAL_MODULE_0__) { + return ( + /******/ + (function(modules2) { + var installedModules = {}; + function __webpack_require__(moduleId) { + if (installedModules[moduleId]) { + return installedModules[moduleId].exports; } - }); - } - } - /** - * Called by parser when a tooltip is found, e.g. a clickable element. - * - * @param ids - Comma separated list of ids - * @param tooltip - Tooltip to add - */ - setTooltip(ids, tooltip) { - ids.split(",").forEach((id29) => { - if (tooltip !== void 0) { - this.classes.get(id29).tooltip = sanitizeText4(tooltip); - } - }); - } - getTooltip(id29, namespace) { - if (namespace && this.namespaces.has(namespace)) { - return this.namespaces.get(namespace).classes.get(id29).tooltip; - } - return this.classes.get(id29).tooltip; - } - /** - * Called by parser when a link is found. Adds the URL to the vertex data. - * - * @param ids - Comma separated list of ids - * @param linkStr - URL to create a link for - * @param target - Target of the link, _blank by default as originally defined in the svgDraw.js file - */ - setLink(ids, linkStr, target) { - const config5 = getConfig2(); - ids.split(",").forEach((_id) => { - let id29 = _id; - if (/\d/.exec(_id[0])) { - id29 = MERMAID_DOM_ID_PREFIX2 + id29; + var module3 = installedModules[moduleId] = { + /******/ + i: moduleId, + /******/ + l: false, + /******/ + exports: {} + /******/ + }; + modules2[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); + module3.l = true; + return module3.exports; } - const theClass = this.classes.get(id29); - if (theClass) { - theClass.link = utils_default2.formatUrl(linkStr, config5); - if (config5.securityLevel === "sandbox") { - theClass.linkTarget = "_top"; - } else if (typeof target === "string") { - theClass.linkTarget = sanitizeText4(target); - } else { - theClass.linkTarget = "_blank"; + __name(__webpack_require__, "__webpack_require__"); + __webpack_require__.m = modules2; + __webpack_require__.c = installedModules; + __webpack_require__.i = function(value2) { + return value2; + }; + __webpack_require__.d = function(exports3, name, getter) { + if (!__webpack_require__.o(exports3, name)) { + Object.defineProperty(exports3, name, { + /******/ + configurable: false, + /******/ + enumerable: true, + /******/ + get: getter + /******/ + }); } - } - }); - this.setCssClass(ids, "clickable"); - } - /** - * Called by parser when a click definition is found. Registers an event handler. - * - * @param ids - Comma separated list of ids - * @param functionName - Function to be called on click - * @param functionArgs - Function args the function should be called with - */ - setClickEvent(ids, functionName, functionArgs) { - ids.split(",").forEach((id29) => { - this.setClickFunc(id29, functionName, functionArgs); - this.classes.get(id29).haveCallback = true; - }); - this.setCssClass(ids, "clickable"); - } - setClickFunc(_domId, functionName, functionArgs) { - const domId = common_default.sanitizeText(_domId, getConfig2()); - const config5 = getConfig2(); - if (config5.securityLevel !== "loose") { - return; - } - if (functionName === void 0) { - return; - } - const id29 = domId; - if (this.classes.has(id29)) { - const elemId = this.lookUpDomId(id29); - let argList = []; - if (typeof functionArgs === "string") { - argList = functionArgs.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/); - for (let i2 = 0; i2 < argList.length; i2++) { - let item = argList[i2].trim(); - if (item.startsWith('"') && item.endsWith('"')) { - item = item.substr(1, item.length - 2); - } - argList[i2] = item; + }; + __webpack_require__.n = function(module3) { + var getter = module3 && module3.__esModule ? ( + /******/ + /* @__PURE__ */ __name(function getDefault() { + return module3["default"]; + }, "getDefault") + ) : ( + /******/ + /* @__PURE__ */ __name(function getModuleExports() { + return module3; + }, "getModuleExports") + ); + __webpack_require__.d(getter, "a", getter); + return getter; + }; + __webpack_require__.o = function(object3, property2) { + return Object.prototype.hasOwnProperty.call(object3, property2); + }; + __webpack_require__.p = ""; + return __webpack_require__(__webpack_require__.s = 7); + })([ + /* 0 */ + /***/ + (function(module3, exports3) { + module3.exports = __WEBPACK_EXTERNAL_MODULE_0__; + }), + /* 1 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var FDLayoutConstants = __webpack_require__(0).FDLayoutConstants; + function CoSEConstants() { } - } - if (argList.length === 0) { - argList.push(elemId); - } - this.functions.push(() => { - const elem = document.querySelector(`[id="${elemId}"]`); - if (elem !== null) { - elem.addEventListener( - "click", - () => { - utils_default2.runFunc(functionName, ...argList); - }, - false - ); + __name(CoSEConstants, "CoSEConstants"); + for (var prop in FDLayoutConstants) { + CoSEConstants[prop] = FDLayoutConstants[prop]; } - }); - } - } - bindFunctions(element3) { - this.functions.forEach((fun) => { - fun(element3); - }); - } - getDirection() { - return this.direction; - } - setDirection(dir2) { - this.direction = dir2; - } - /** - * Function called by parser when a namespace definition has been found. - * - * @param id - Id of the namespace to add - * @public - */ - addNamespace(id29) { - if (this.namespaces.has(id29)) { - return; - } - this.namespaces.set(id29, { - id: id29, - classes: /* @__PURE__ */ new Map(), - children: {}, - domId: MERMAID_DOM_ID_PREFIX2 + id29 + "-" + this.namespaceCounter - }); - this.namespaceCounter++; - } - getNamespace(name) { - return this.namespaces.get(name); - } - getNamespaces() { - return this.namespaces; - } - /** - * Function called by parser when a namespace definition has been found. - * - * @param id - Id of the namespace to add - * @param classNames - Ids of the class to add - * @public - */ - addClassesToNamespace(id29, classNames) { - if (!this.namespaces.has(id29)) { - return; - } - for (const name of classNames) { - const { className } = this.splitClassNameAndType(name); - this.classes.get(className).parent = id29; - this.namespaces.get(id29).classes.set(className, this.classes.get(className)); - } - } - setCssStyle(id29, styles4) { - const thisClass = this.classes.get(id29); - if (!styles4 || !thisClass) { - return; - } - for (const s2 of styles4) { - if (s2.includes(",")) { - thisClass.styles.push(...s2.split(",")); - } else { - thisClass.styles.push(s2); - } - } - } - /** - * Gets the arrow marker for a type index - * - * @param type - The type to look for - * @returns The arrow marker - */ - getArrowMarker(type3) { - let marker; - switch (type3) { - case 0: - marker = "aggregation"; - break; - case 1: - marker = "extension"; - break; - case 2: - marker = "composition"; - break; - case 3: - marker = "dependency"; - break; - case 4: - marker = "lollipop"; - break; - default: - marker = "none"; - } - return marker; - } - getData() { - const nodes6 = []; - const edges3 = []; - const config5 = getConfig2(); - for (const namespaceKey of this.namespaces.keys()) { - const namespace = this.namespaces.get(namespaceKey); - if (namespace) { - const node2 = { - id: namespace.id, - label: namespace.id, - isGroup: true, - padding: config5.class.padding ?? 16, - // parent node must be one of [rect, roundedWithTitle, noteGroup, divider] - shape: "rect", - cssStyles: ["fill: none", "stroke: black"], - look: config5.look - }; - nodes6.push(node2); - } - } - for (const classKey of this.classes.keys()) { - const classNode = this.classes.get(classKey); - if (classNode) { - const node2 = classNode; - node2.parentId = classNode.parent; - node2.look = config5.look; - nodes6.push(node2); - } - } - let cnt5 = 0; - for (const note3 of this.notes) { - cnt5++; - const noteNode = { - id: note3.id, - label: note3.text, - isGroup: false, - shape: "note", - padding: config5.class.padding ?? 6, - cssStyles: [ - "text-align: left", - "white-space: nowrap", - `fill: ${config5.themeVariables.noteBkgColor}`, - `stroke: ${config5.themeVariables.noteBorderColor}` - ], - look: config5.look - }; - nodes6.push(noteNode); - const noteClassId = this.classes.get(note3.class)?.id ?? ""; - if (noteClassId) { - const edge = { - id: `edgeNote${cnt5}`, - start: note3.id, - end: noteClassId, - type: "normal", - thickness: "normal", - classes: "relation", - arrowTypeStart: "none", - arrowTypeEnd: "none", - arrowheadStyle: "", - labelStyle: [""], - style: ["fill: none"], - pattern: "dotted", - look: config5.look - }; - edges3.push(edge); - } - } - for (const _interface of this.interfaces) { - const interfaceNode = { - id: _interface.id, - label: _interface.label, - isGroup: false, - shape: "rect", - cssStyles: ["opacity: 0;"], - look: config5.look - }; - nodes6.push(interfaceNode); - } - cnt5 = 0; - for (const classRelation of this.relations) { - cnt5++; - const edge = { - id: getEdgeId(classRelation.id1, classRelation.id2, { - prefix: "id", - counter: cnt5 - }), - start: classRelation.id1, - end: classRelation.id2, - type: "normal", - label: classRelation.title, - labelpos: "c", - thickness: "normal", - classes: "relation", - arrowTypeStart: this.getArrowMarker(classRelation.relation.type1), - arrowTypeEnd: this.getArrowMarker(classRelation.relation.type2), - startLabelRight: classRelation.relationTitle1 === "none" ? "" : classRelation.relationTitle1, - endLabelLeft: classRelation.relationTitle2 === "none" ? "" : classRelation.relationTitle2, - arrowheadStyle: "", - labelStyle: ["display: inline-block"], - style: classRelation.style || "", - pattern: classRelation.relation.lineType == 1 ? "dashed" : "solid", - look: config5.look - }; - edges3.push(edge); - } - return { nodes: nodes6, edges: edges3, other: {}, config: config5, direction: this.getDirection() }; - } - }; - } - }); - - // src/diagrams/class/styles.js - var getStyles10, styles_default9; - var init_styles9 = __esm({ - "src/diagrams/class/styles.js"() { - "use strict"; - getStyles10 = /* @__PURE__ */ __name((options3) => `g.classGroup text { - fill: ${options3.nodeBorder || options3.classText}; - stroke: none; - font-family: ${options3.fontFamily}; - font-size: 10px; - - .title { - font-weight: bolder; - } - -} - -.nodeLabel, .edgeLabel { - color: ${options3.classText}; -} -.edgeLabel .label rect { - fill: ${options3.mainBkg}; -} -.label text { - fill: ${options3.classText}; -} - -.labelBkg { - background: ${options3.mainBkg}; -} -.edgeLabel .label span { - background: ${options3.mainBkg}; -} - -.classTitle { - font-weight: bolder; -} -.node rect, - .node circle, - .node ellipse, - .node polygon, - .node path { - fill: ${options3.mainBkg}; - stroke: ${options3.nodeBorder}; - stroke-width: 1px; - } - - -.divider { - stroke: ${options3.nodeBorder}; - stroke-width: 1; -} - -g.clickable { - cursor: pointer; -} - -g.classGroup rect { - fill: ${options3.mainBkg}; - stroke: ${options3.nodeBorder}; -} - -g.classGroup line { - stroke: ${options3.nodeBorder}; - stroke-width: 1; -} - -.classLabel .box { - stroke: none; - stroke-width: 0; - fill: ${options3.mainBkg}; - opacity: 0.5; -} - -.classLabel .label { - fill: ${options3.nodeBorder}; - font-size: 10px; -} - -.relation { - stroke: ${options3.lineColor}; - stroke-width: 1; - fill: none; -} - -.dashed-line{ - stroke-dasharray: 3; -} - -.dotted-line{ - stroke-dasharray: 1 2; -} - -#compositionStart, .composition { - fill: ${options3.lineColor} !important; - stroke: ${options3.lineColor} !important; - stroke-width: 1; -} - -#compositionEnd, .composition { - fill: ${options3.lineColor} !important; - stroke: ${options3.lineColor} !important; - stroke-width: 1; -} - -#dependencyStart, .dependency { - fill: ${options3.lineColor} !important; - stroke: ${options3.lineColor} !important; - stroke-width: 1; -} - -#dependencyStart, .dependency { - fill: ${options3.lineColor} !important; - stroke: ${options3.lineColor} !important; - stroke-width: 1; -} - -#extensionStart, .extension { - fill: transparent !important; - stroke: ${options3.lineColor} !important; - stroke-width: 1; -} - -#extensionEnd, .extension { - fill: transparent !important; - stroke: ${options3.lineColor} !important; - stroke-width: 1; -} - -#aggregationStart, .aggregation { - fill: transparent !important; - stroke: ${options3.lineColor} !important; - stroke-width: 1; -} - -#aggregationEnd, .aggregation { - fill: transparent !important; - stroke: ${options3.lineColor} !important; - stroke-width: 1; -} - -#lollipopStart, .lollipop { - fill: ${options3.mainBkg} !important; - stroke: ${options3.lineColor} !important; - stroke-width: 1; -} - -#lollipopEnd, .lollipop { - fill: ${options3.mainBkg} !important; - stroke: ${options3.lineColor} !important; - stroke-width: 1; -} - -.edgeTerminals { - font-size: 11px; - line-height: initial; -} - -.classTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${options3.textColor}; -} -`, "getStyles"); - styles_default9 = getStyles10; - } - }); - - // src/diagrams/class/classRenderer-v3-unified.ts - var getDir, getClasses2, draw12, classRenderer_v3_unified_default; - var init_classRenderer_v3_unified = __esm({ - "src/diagrams/class/classRenderer-v3-unified.ts"() { - "use strict"; - init_diagramAPI(); - init_logger(); - init_insertElementsForSize(); - init_render(); - init_setupViewPortForSVG(); - init_utils2(); - getDir = /* @__PURE__ */ __name((parsedItem, defaultDir = "TB") => { - if (!parsedItem.doc) { - return defaultDir; - } - let dir2 = defaultDir; - for (const parsedItemDoc of parsedItem.doc) { - if (parsedItemDoc.stmt === "dir") { - dir2 = parsedItemDoc.value; - } - } - return dir2; - }, "getDir"); - getClasses2 = /* @__PURE__ */ __name(function(text4, diagramObj) { - return diagramObj.db.getClasses(); - }, "getClasses"); - draw12 = /* @__PURE__ */ __name(async function(text4, id29, _version, diag) { - log.info("REF0:"); - log.info("Drawing class diagram (v3)", id29); - const { securityLevel, state: conf5, layout: layout6 } = getConfig2(); - const data4Layout = diag.db.getData(); - const svg2 = getDiagramElement(id29, securityLevel); - data4Layout.type = diag.type; - data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout6); - data4Layout.nodeSpacing = conf5?.nodeSpacing || 50; - data4Layout.rankSpacing = conf5?.rankSpacing || 50; - data4Layout.markers = ["aggregation", "extension", "composition", "dependency", "lollipop"]; - data4Layout.diagramId = id29; - await render4(data4Layout, svg2); - const padding2 = 8; - utils_default2.insertTitle( - svg2, - "classDiagramTitleText", - conf5?.titleTopMargin ?? 25, - diag.db.getDiagramTitle() - ); - setupViewPortForSVG(svg2, padding2, "classDiagram", conf5?.useMaxWidth ?? true); - }, "draw"); - classRenderer_v3_unified_default = { - getClasses: getClasses2, - draw: draw12, - getDir - }; - } - }); - - // src/diagrams/class/classDiagram.ts - var classDiagram_exports = {}; - __export(classDiagram_exports, { - diagram: () => diagram12 - }); - var diagram12; - var init_classDiagram2 = __esm({ - "src/diagrams/class/classDiagram.ts"() { - "use strict"; - init_classDiagram(); - init_classDb(); - init_styles9(); - init_classRenderer_v3_unified(); - diagram12 = { - parser: classDiagram_default, - get db() { - return new ClassDB(); - }, - renderer: classRenderer_v3_unified_default, - styles: styles_default9, - init: /* @__PURE__ */ __name((cnf) => { - if (!cnf.class) { - cnf.class = {}; - } - cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute; - }, "init") - }; - } - }); - - // src/diagrams/class/classDiagram-v2.ts - var classDiagram_v2_exports = {}; - __export(classDiagram_v2_exports, { - diagram: () => diagram13 - }); - var diagram13; - var init_classDiagram_v2 = __esm({ - "src/diagrams/class/classDiagram-v2.ts"() { - "use strict"; - init_classDiagram(); - init_classDb(); - init_styles9(); - init_classRenderer_v3_unified(); - diagram13 = { - parser: classDiagram_default, - get db() { - return new ClassDB(); - }, - renderer: classRenderer_v3_unified_default, - styles: styles_default9, - init: /* @__PURE__ */ __name((cnf) => { - if (!cnf.class) { - cnf.class = {}; - } - cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute; - }, "init") - }; - } - }); - - // src/diagrams/state/parser/stateDiagram.jison - var parser14, stateDiagram_default; - var init_stateDiagram = __esm({ - "src/diagrams/state/parser/stateDiagram.jison"() { - "use strict"; - parser14 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; - return o3; - }, "o"), $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 4], $V3 = [2, 4], $V4 = [1, 9], $V5 = [1, 11], $V6 = [1, 16], $V7 = [1, 17], $V8 = [1, 18], $V9 = [1, 19], $Va = [1, 32], $Vb = [1, 20], $Vc = [1, 21], $Vd = [1, 22], $Ve = [1, 23], $Vf = [1, 24], $Vg = [1, 26], $Vh = [1, 27], $Vi = [1, 28], $Vj = [1, 29], $Vk = [1, 30], $Vl = [1, 31], $Vm = [1, 34], $Vn = [1, 35], $Vo = [1, 36], $Vp = [1, 37], $Vq = [1, 33], $Vr = [1, 4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 45, 48, 49, 50, 51, 54], $Vs = [1, 4, 5, 14, 15, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 45, 48, 49, 50, 51, 54], $Vt = [4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 45, 48, 49, 50, 51, 54]; - var parser24 = { - trace: /* @__PURE__ */ __name(function trace() { - }, "trace"), - yy: {}, - symbols_: { "error": 2, "start": 3, "SPACE": 4, "NL": 5, "SD": 6, "document": 7, "line": 8, "statement": 9, "classDefStatement": 10, "styleStatement": 11, "cssClassStatement": 12, "idStatement": 13, "DESCR": 14, "-->": 15, "HIDE_EMPTY": 16, "scale": 17, "WIDTH": 18, "COMPOSIT_STATE": 19, "STRUCT_START": 20, "STRUCT_STOP": 21, "STATE_DESCR": 22, "AS": 23, "ID": 24, "FORK": 25, "JOIN": 26, "CHOICE": 27, "CONCURRENT": 28, "note": 29, "notePosition": 30, "NOTE_TEXT": 31, "direction": 32, "acc_title": 33, "acc_title_value": 34, "acc_descr": 35, "acc_descr_value": 36, "acc_descr_multiline_value": 37, "classDef": 38, "CLASSDEF_ID": 39, "CLASSDEF_STYLEOPTS": 40, "DEFAULT": 41, "style": 42, "STYLE_IDS": 43, "STYLEDEF_STYLEOPTS": 44, "class": 45, "CLASSENTITY_IDS": 46, "STYLECLASS": 47, "direction_tb": 48, "direction_bt": 49, "direction_rl": 50, "direction_lr": 51, "eol": 52, ";": 53, "EDGE_STATE": 54, "STYLE_SEPARATOR": 55, "left_of": 56, "right_of": 57, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 4: "SPACE", 5: "NL", 6: "SD", 14: "DESCR", 15: "-->", 16: "HIDE_EMPTY", 17: "scale", 18: "WIDTH", 19: "COMPOSIT_STATE", 20: "STRUCT_START", 21: "STRUCT_STOP", 22: "STATE_DESCR", 23: "AS", 24: "ID", 25: "FORK", 26: "JOIN", 27: "CHOICE", 28: "CONCURRENT", 29: "note", 31: "NOTE_TEXT", 33: "acc_title", 34: "acc_title_value", 35: "acc_descr", 36: "acc_descr_value", 37: "acc_descr_multiline_value", 38: "classDef", 39: "CLASSDEF_ID", 40: "CLASSDEF_STYLEOPTS", 41: "DEFAULT", 42: "style", 43: "STYLE_IDS", 44: "STYLEDEF_STYLEOPTS", 45: "class", 46: "CLASSENTITY_IDS", 47: "STYLECLASS", 48: "direction_tb", 49: "direction_bt", 50: "direction_rl", 51: "direction_lr", 53: ";", 54: "EDGE_STATE", 55: "STYLE_SEPARATOR", 56: "left_of", 57: "right_of" }, - productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 3], [9, 4], [9, 1], [9, 2], [9, 1], [9, 4], [9, 3], [9, 6], [9, 1], [9, 1], [9, 1], [9, 1], [9, 4], [9, 4], [9, 1], [9, 2], [9, 2], [9, 1], [10, 3], [10, 3], [11, 3], [12, 3], [32, 1], [32, 1], [32, 1], [32, 1], [52, 1], [52, 1], [13, 1], [13, 1], [13, 3], [13, 3], [30, 1], [30, 1]], - performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 3: - yy.setRootDoc($$[$0]); - return $$[$0]; - break; - case 4: - this.$ = []; - break; - case 5: - if ($$[$0] != "nl") { - $$[$0 - 1].push($$[$0]); - this.$ = $$[$0 - 1]; - } - break; - case 6: - case 7: - this.$ = $$[$0]; - break; - case 8: - this.$ = "nl"; - break; - case 12: - this.$ = $$[$0]; - break; - case 13: - const stateStmt = $$[$0 - 1]; - stateStmt.description = yy.trimColon($$[$0]); - this.$ = stateStmt; - break; - case 14: - this.$ = { stmt: "relation", state1: $$[$0 - 2], state2: $$[$0] }; - break; - case 15: - const relDescription = yy.trimColon($$[$0]); - this.$ = { stmt: "relation", state1: $$[$0 - 3], state2: $$[$0 - 1], description: relDescription }; - break; - case 19: - this.$ = { stmt: "state", id: $$[$0 - 3], type: "default", description: "", doc: $$[$0 - 1] }; - break; - case 20: - var id29 = $$[$0]; - var description = $$[$0 - 2].trim(); - if ($$[$0].match(":")) { - var parts = $$[$0].split(":"); - id29 = parts[0]; - description = [description, parts[1]]; - } - this.$ = { stmt: "state", id: id29, type: "default", description }; - break; - case 21: - this.$ = { stmt: "state", id: $$[$0 - 3], type: "default", description: $$[$0 - 5], doc: $$[$0 - 1] }; - break; - case 22: - this.$ = { stmt: "state", id: $$[$0], type: "fork" }; - break; - case 23: - this.$ = { stmt: "state", id: $$[$0], type: "join" }; - break; - case 24: - this.$ = { stmt: "state", id: $$[$0], type: "choice" }; - break; - case 25: - this.$ = { stmt: "state", id: yy.getDividerId(), type: "divider" }; - break; - case 26: - this.$ = { stmt: "state", id: $$[$0 - 1].trim(), note: { position: $$[$0 - 2].trim(), text: $$[$0].trim() } }; - break; - case 29: - this.$ = $$[$0].trim(); - yy.setAccTitle(this.$); - break; - case 30: - case 31: - this.$ = $$[$0].trim(); - yy.setAccDescription(this.$); - break; - case 32: - case 33: - this.$ = { stmt: "classDef", id: $$[$0 - 1].trim(), classes: $$[$0].trim() }; - break; - case 34: - this.$ = { stmt: "style", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() }; - break; - case 35: - this.$ = { stmt: "applyClass", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() }; - break; - case 36: - yy.setDirection("TB"); - this.$ = { stmt: "dir", value: "TB" }; - break; - case 37: - yy.setDirection("BT"); - this.$ = { stmt: "dir", value: "BT" }; - break; - case 38: - yy.setDirection("RL"); - this.$ = { stmt: "dir", value: "RL" }; - break; - case 39: - yy.setDirection("LR"); - this.$ = { stmt: "dir", value: "LR" }; - break; - case 42: - case 43: - this.$ = { stmt: "state", id: $$[$0].trim(), type: "default", description: "" }; - break; - case 44: - this.$ = { stmt: "state", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: "default", description: "" }; - break; - case 45: - this.$ = { stmt: "state", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: "default", description: "" }; - break; - } - }, "anonymous"), - table: [{ 3: 1, 4: $V0, 5: $V1, 6: $V2 }, { 1: [3] }, { 3: 5, 4: $V0, 5: $V1, 6: $V2 }, { 3: 6, 4: $V0, 5: $V1, 6: $V2 }, o2([1, 4, 5, 16, 17, 19, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 45, 48, 49, 50, 51, 54], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 42: $Vk, 45: $Vl, 48: $Vm, 49: $Vn, 50: $Vo, 51: $Vp, 54: $Vq }, o2($Vr, [2, 5]), { 9: 38, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 42: $Vk, 45: $Vl, 48: $Vm, 49: $Vn, 50: $Vo, 51: $Vp, 54: $Vq }, o2($Vr, [2, 7]), o2($Vr, [2, 8]), o2($Vr, [2, 9]), o2($Vr, [2, 10]), o2($Vr, [2, 11]), o2($Vr, [2, 12], { 14: [1, 39], 15: [1, 40] }), o2($Vr, [2, 16]), { 18: [1, 41] }, o2($Vr, [2, 18], { 20: [1, 42] }), { 23: [1, 43] }, o2($Vr, [2, 22]), o2($Vr, [2, 23]), o2($Vr, [2, 24]), o2($Vr, [2, 25]), { 30: 44, 31: [1, 45], 56: [1, 46], 57: [1, 47] }, o2($Vr, [2, 28]), { 34: [1, 48] }, { 36: [1, 49] }, o2($Vr, [2, 31]), { 39: [1, 50], 41: [1, 51] }, { 43: [1, 52] }, { 46: [1, 53] }, o2($Vs, [2, 42], { 55: [1, 54] }), o2($Vs, [2, 43], { 55: [1, 55] }), o2($Vr, [2, 36]), o2($Vr, [2, 37]), o2($Vr, [2, 38]), o2($Vr, [2, 39]), o2($Vr, [2, 6]), o2($Vr, [2, 13]), { 13: 56, 24: $Va, 54: $Vq }, o2($Vr, [2, 17]), o2($Vt, $V3, { 7: 57 }), { 24: [1, 58] }, { 24: [1, 59] }, { 23: [1, 60] }, { 24: [2, 46] }, { 24: [2, 47] }, o2($Vr, [2, 29]), o2($Vr, [2, 30]), { 40: [1, 61] }, { 40: [1, 62] }, { 44: [1, 63] }, { 47: [1, 64] }, { 24: [1, 65] }, { 24: [1, 66] }, o2($Vr, [2, 14], { 14: [1, 67] }), { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 21: [1, 68], 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 42: $Vk, 45: $Vl, 48: $Vm, 49: $Vn, 50: $Vo, 51: $Vp, 54: $Vq }, o2($Vr, [2, 20], { 20: [1, 69] }), { 31: [1, 70] }, { 24: [1, 71] }, o2($Vr, [2, 32]), o2($Vr, [2, 33]), o2($Vr, [2, 34]), o2($Vr, [2, 35]), o2($Vs, [2, 44]), o2($Vs, [2, 45]), o2($Vr, [2, 15]), o2($Vr, [2, 19]), o2($Vt, $V3, { 7: 72 }), o2($Vr, [2, 26]), o2($Vr, [2, 27]), { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 21: [1, 73], 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 42: $Vk, 45: $Vl, 48: $Vm, 49: $Vn, 50: $Vo, 51: $Vp, 54: $Vq }, o2($Vr, [2, 21])], - defaultActions: { 5: [2, 1], 6: [2, 2], 46: [2, 46], 47: [2, 47] }, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); - } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; - } - }, "parseError"), - parse: /* @__PURE__ */ __name(function parse7(input) { - var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; - var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k2 in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { - sharedState.yy[k2] = this.yy[k2]; + CoSEConstants.DEFAULT_USE_MULTI_LEVEL_SCALING = false; + CoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH; + CoSEConstants.DEFAULT_COMPONENT_SEPERATION = 60; + CoSEConstants.TILE = true; + CoSEConstants.TILING_PADDING_VERTICAL = 10; + CoSEConstants.TILING_PADDING_HORIZONTAL = 10; + CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false; + module3.exports = CoSEConstants; + }), + /* 2 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var FDLayoutEdge = __webpack_require__(0).FDLayoutEdge; + function CoSEEdge(source, target, vEdge) { + FDLayoutEdge.call(this, source, target, vEdge); } - } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; - sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; - } - var yyloc = lexer3.yylloc; - lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n2) { - stack.length = stack.length - 2 * n2; - vstack.length = vstack.length - n2; - lstack.length = lstack.length - n2; - } - __name(popStack, "popStack"); - function lex() { - var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; - if (typeof token2 !== "number") { - if (token2 instanceof Array) { - tstack = token2; - token2 = tstack.pop(); - } - token2 = self2.symbols_[token2] || token2; + __name(CoSEEdge, "CoSEEdge"); + CoSEEdge.prototype = Object.create(FDLayoutEdge.prototype); + for (var prop in FDLayoutEdge) { + CoSEEdge[prop] = FDLayoutEdge[prop]; } - return token2; - } - __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; - while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state4] && table[state4][symbol]; + module3.exports = CoSEEdge; + }), + /* 3 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var LGraph = __webpack_require__(0).LGraph; + function CoSEGraph(parent4, graphMgr, vGraph) { + LGraph.call(this, parent4, graphMgr, vGraph); } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p3 in table[state4]) { - if (this.terminals_[p3] && p3 > TERROR) { - expected.push("'" + this.terminals_[p3] + "'"); - } + __name(CoSEGraph, "CoSEGraph"); + CoSEGraph.prototype = Object.create(LGraph.prototype); + for (var prop in LGraph) { + CoSEGraph[prop] = LGraph[prop]; + } + module3.exports = CoSEGraph; + }), + /* 4 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var LGraphManager = __webpack_require__(0).LGraphManager; + function CoSEGraphManager(layout6) { + LGraphManager.call(this, layout6); + } + __name(CoSEGraphManager, "CoSEGraphManager"); + CoSEGraphManager.prototype = Object.create(LGraphManager.prototype); + for (var prop in LGraphManager) { + CoSEGraphManager[prop] = LGraphManager[prop]; + } + module3.exports = CoSEGraphManager; + }), + /* 5 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var FDLayoutNode = __webpack_require__(0).FDLayoutNode; + var IMath = __webpack_require__(0).IMath; + function CoSENode(gm, loc, size4, vNode) { + FDLayoutNode.call(this, gm, loc, size4, vNode); + } + __name(CoSENode, "CoSENode"); + CoSENode.prototype = Object.create(FDLayoutNode.prototype); + for (var prop in FDLayoutNode) { + CoSENode[prop] = FDLayoutNode[prop]; + } + CoSENode.prototype.move = function() { + var layout6 = this.graphManager.getLayout(); + this.displacementX = layout6.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren; + this.displacementY = layout6.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren; + if (Math.abs(this.displacementX) > layout6.coolingFactor * layout6.maxNodeDisplacement) { + this.displacementX = layout6.coolingFactor * layout6.maxNodeDisplacement * IMath.sign(this.displacementX); + } + if (Math.abs(this.displacementY) > layout6.coolingFactor * layout6.maxNodeDisplacement) { + this.displacementY = layout6.coolingFactor * layout6.maxNodeDisplacement * IMath.sign(this.displacementY); } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + if (this.child == null) { + this.moveBy(this.displacementX, this.displacementY); + } else if (this.child.getNodes().length == 0) { + this.moveBy(this.displacementX, this.displacementY); } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + this.propogateDisplacementToChildren(this.displacementX, this.displacementY); } - this.parseError(errStr, { - text: lexer3.match, - token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, - loc: yyloc, - expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; - if (recovering > 0) { - recovering--; - } + layout6.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY); + this.springForceX = 0; + this.springForceY = 0; + this.repulsionForceX = 0; + this.repulsionForceY = 0; + this.gravitationForceX = 0; + this.gravitationForceY = 0; + this.displacementX = 0; + this.displacementY = 0; + }; + CoSENode.prototype.propogateDisplacementToChildren = function(dX, dY) { + var nodes5 = this.getChild().getNodes(); + var node2; + for (var i2 = 0; i2 < nodes5.length; i2++) { + node2 = nodes5[i2]; + if (node2.getChild() == null) { + node2.moveBy(dX, dY); + node2.displacementX += dX; + node2.displacementY += dY; } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r2 = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r2 !== "undefined") { - return r2; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); + node2.propogateDisplacementToChildren(dX, dY); } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState2); - break; - case 3: - return true; - } - } - return true; - }, "parse") - }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { - EOF: 1, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str2, hash); - } else { - throw new Error(str2); - } - }, "parseError"), - // resets the lexer, sets new input - setInput: /* @__PURE__ */ __name(function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 + } }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; - } - this.offset = 0; - return this; - }, "setInput"), - // consumes and returns one char from the input - input: /* @__PURE__ */ __name(function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } - this._input = this._input.slice(1); - return ch; - }, "input"), - // unshifts one char (or a string) into the input - unput: /* @__PURE__ */ __name(function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r2 = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + CoSENode.prototype.setPred1 = function(pred12) { + this.pred1 = pred12; }; - if (this.options.ranges) { - this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, "unput"), - // When called from action, caches matched text and appends it on next action - more: /* @__PURE__ */ __name(function() { - this._more = true; - return this; - }, "more"), - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: /* @__PURE__ */ __name(function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); + CoSENode.prototype.getPred1 = function() { + return pred1; + }; + CoSENode.prototype.getPred2 = function() { + return pred2; + }; + CoSENode.prototype.setNext = function(next3) { + this.next = next3; + }; + CoSENode.prototype.getNext = function() { + return next; + }; + CoSENode.prototype.setProcessed = function(processed2) { + this.processed = processed2; + }; + CoSENode.prototype.isProcessed = function() { + return processed; + }; + module3.exports = CoSENode; + }), + /* 6 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var FDLayout = __webpack_require__(0).FDLayout; + var CoSEGraphManager = __webpack_require__(4); + var CoSEGraph = __webpack_require__(3); + var CoSENode = __webpack_require__(5); + var CoSEEdge = __webpack_require__(2); + var CoSEConstants = __webpack_require__(1); + var FDLayoutConstants = __webpack_require__(0).FDLayoutConstants; + var LayoutConstants = __webpack_require__(0).LayoutConstants; + var Point3 = __webpack_require__(0).Point; + var PointD = __webpack_require__(0).PointD; + var Layout2 = __webpack_require__(0).Layout; + var Integer = __webpack_require__(0).Integer; + var IGeometry = __webpack_require__(0).IGeometry; + var LGraph = __webpack_require__(0).LGraph; + var Transform2 = __webpack_require__(0).Transform; + function CoSELayout() { + FDLayout.call(this); + this.toBeTiled = {}; } - return this; - }, "reject"), - // retain first n characters of the match - less: /* @__PURE__ */ __name(function(n2) { - this.unput(this.match.slice(n2)); - }, "less"), - // displays already matched input, i.e. for error messages - pastInput: /* @__PURE__ */ __name(function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, "pastInput"), - // displays upcoming input, i.e. for error messages - upcomingInput: /* @__PURE__ */ __name(function() { - var next3 = this.match; - if (next3.length < 20) { - next3 += this._input.substr(0, 20 - next3.length); + __name(CoSELayout, "CoSELayout"); + CoSELayout.prototype = Object.create(FDLayout.prototype); + for (var prop in FDLayout) { + CoSELayout[prop] = FDLayout[prop]; } - return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, "upcomingInput"), - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: /* @__PURE__ */ __name(function() { - var pre = this.pastInput(); - var c3 = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c3 + "^"; - }, "showPosition"), - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { - var token2, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); + CoSELayout.prototype.newGraphManager = function() { + var gm = new CoSEGraphManager(this); + this.graphManager = gm; + return gm; + }; + CoSELayout.prototype.newGraph = function(vGraph) { + return new CoSEGraph(null, this.graphManager, vGraph); + }; + CoSELayout.prototype.newNode = function(vNode) { + return new CoSENode(this.graphManager, vNode); + }; + CoSELayout.prototype.newEdge = function(vEdge) { + return new CoSEEdge(null, null, vEdge); + }; + CoSELayout.prototype.initParameters = function() { + FDLayout.prototype.initParameters.call(this, arguments); + if (!this.isSubLayout) { + if (CoSEConstants.DEFAULT_EDGE_LENGTH < 10) { + this.idealEdgeLength = 10; + } else { + this.idealEdgeLength = CoSEConstants.DEFAULT_EDGE_LENGTH; + } + this.useSmartIdealEdgeLengthCalculation = CoSEConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION; + this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH; + this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH; + this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH; + this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH; + this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR; + this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR; + this.prunedNodesAll = []; + this.growTreeIterations = 0; + this.afterGrowthIterations = 0; + this.isTreeGrowing = false; + this.isGrowthFinished = false; + this.coolingCycle = 0; + this.maxCoolingCycle = this.maxIterations / FDLayoutConstants.CONVERGENCE_CHECK_PERIOD; + this.finalTemperature = FDLayoutConstants.CONVERGENCE_CHECK_PERIOD / this.maxIterations; + this.coolingAdjuster = 1; } - } - lines = match2[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length }; - this.yytext += match2[0]; - this.match += match2[0]; - this.matches = match2; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match2[0].length); - this.matched += match2[0]; - token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token2) { - return token2; - } else if (this._backtrack) { - for (var k2 in backup) { - this[k2] = backup[k2]; + CoSELayout.prototype.layout = function() { + var createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; + if (createBendsAsNeeded) { + this.createBendpoints(); + this.graphManager.resetAllEdges(); } - return false; - } - return false; - }, "test_match"), - // return next match in input - next: /* @__PURE__ */ __name(function() { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; - } - var token2, match2, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; - } - var rules = this._currentRules(); - for (var i2 = 0; i2 < rules.length; i2++) { - tempMatch = this._input.match(this.rules[rules[i2]]); - if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { - match2 = tempMatch; - index = i2; - if (this.options.backtrack_lexer) { - token2 = this.test_match(tempMatch, rules[i2]); - if (token2 !== false) { - return token2; - } else if (this._backtrack) { - match2 = false; - continue; + this.level = 0; + return this.classicLayout(); + }; + CoSELayout.prototype.classicLayout = function() { + this.nodesWithGravity = this.calculateNodesToApplyGravitationTo(); + this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity); + this.calcNoOfChildrenForAllNodes(); + this.graphManager.calcLowestCommonAncestors(); + this.graphManager.calcInclusionTreeDepths(); + this.graphManager.getRoot().calcEstimatedSize(); + this.calcIdealEdgeLengths(); + if (!this.incremental) { + var forest = this.getFlatForest(); + if (forest.length > 0) { + this.positionNodesRadially(forest); + } else { + this.reduceTrees(); + this.graphManager.resetAllNodesToApplyGravitation(); + var allNodes = new Set(this.getAllNodes()); + var intersection4 = this.nodesWithGravity.filter(function(x5) { + return allNodes.has(x5); + }); + this.graphManager.setAllNodesToApplyGravitation(intersection4); + this.positionNodesRandomly(); + } + } else { + if (CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL) { + this.reduceTrees(); + this.graphManager.resetAllNodesToApplyGravitation(); + var allNodes = new Set(this.getAllNodes()); + var intersection4 = this.nodesWithGravity.filter(function(x5) { + return allNodes.has(x5); + }); + this.graphManager.setAllNodesToApplyGravitation(intersection4); + } + } + this.initSpringEmbedder(); + this.runSpringEmbedder(); + return true; + }; + CoSELayout.prototype.tick = function() { + this.totalIterations++; + if (this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) { + if (this.prunedNodesAll.length > 0) { + this.isTreeGrowing = true; + } else { + return true; + } + } + if (this.totalIterations % FDLayoutConstants.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) { + if (this.isConverged()) { + if (this.prunedNodesAll.length > 0) { + this.isTreeGrowing = true; } else { - return false; + return true; } - } else if (!this.options.flex) { - break; } + this.coolingCycle++; + if (this.layoutQuality == 0) { + this.coolingAdjuster = this.coolingCycle; + } else if (this.layoutQuality == 1) { + this.coolingAdjuster = this.coolingCycle / 3; + } + this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature); + this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor)); } - } - if (match2) { - token2 = this.test_match(match2, rules[index]); - if (token2 !== false) { - return token2; + if (this.isTreeGrowing) { + if (this.growTreeIterations % 10 == 0) { + if (this.prunedNodesAll.length > 0) { + this.graphManager.updateBounds(); + this.updateGrid(); + this.growTree(this.prunedNodesAll); + this.graphManager.resetAllNodesToApplyGravitation(); + var allNodes = new Set(this.getAllNodes()); + var intersection4 = this.nodesWithGravity.filter(function(x5) { + return allNodes.has(x5); + }); + this.graphManager.setAllNodesToApplyGravitation(intersection4); + this.graphManager.updateBounds(); + this.updateGrid(); + this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; + } else { + this.isTreeGrowing = false; + this.isGrowthFinished = true; + } + } + this.growTreeIterations++; + } + if (this.isGrowthFinished) { + if (this.isConverged()) { + return true; + } + if (this.afterGrowthIterations % 10 == 0) { + this.graphManager.updateBounds(); + this.updateGrid(); + } + this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100); + this.afterGrowthIterations++; } + var gridUpdateAllowed = !this.isTreeGrowing && !this.isGrowthFinished; + var forceToNodeSurroundingUpdate = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished; + this.totalDisplacement = 0; + this.graphManager.updateBounds(); + this.calcSpringForces(); + this.calcRepulsionForces(gridUpdateAllowed, forceToNodeSurroundingUpdate); + this.calcGravitationalForces(); + this.moveNodes(); + this.animate(); return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno + }; + CoSELayout.prototype.getPositionsData = function() { + var allNodes = this.graphManager.getAllNodes(); + var pData = {}; + for (var i2 = 0; i2 < allNodes.length; i2++) { + var rect3 = allNodes[i2].rect; + var id30 = allNodes[i2].id; + pData[id30] = { + id: id30, + x: rect3.getCenterX(), + y: rect3.getCenterY(), + w: rect3.width, + h: rect3.height + }; + } + return pData; + }; + CoSELayout.prototype.runSpringEmbedder = function() { + this.initialAnimationPeriod = 25; + this.animationPeriod = this.initialAnimationPeriod; + var layoutEnded = false; + if (FDLayoutConstants.ANIMATE === "during") { + this.emit("layoutstarted"); + } else { + while (!layoutEnded) { + layoutEnded = this.tick(); + } + this.graphManager.updateBounds(); + } + }; + CoSELayout.prototype.calculateNodesToApplyGravitationTo = function() { + var nodeList = []; + var graph; + var graphs = this.graphManager.getGraphs(); + var size4 = graphs.length; + var i2; + for (i2 = 0; i2 < size4; i2++) { + graph = graphs[i2]; + graph.updateConnected(); + if (!graph.isConnected) { + nodeList = nodeList.concat(graph.getNodes()); + } + } + return nodeList; + }; + CoSELayout.prototype.createBendpoints = function() { + var edges3 = []; + edges3 = edges3.concat(this.graphManager.getAllEdges()); + var visited = /* @__PURE__ */ new Set(); + var i2; + for (i2 = 0; i2 < edges3.length; i2++) { + var edge = edges3[i2]; + if (!visited.has(edge)) { + var source = edge.getSource(); + var target = edge.getTarget(); + if (source == target) { + edge.getBendpoints().push(new PointD()); + edge.getBendpoints().push(new PointD()); + this.createDummyNodesForBendpoints(edge); + visited.add(edge); + } else { + var edgeList2 = []; + edgeList2 = edgeList2.concat(source.getEdgeListToNode(target)); + edgeList2 = edgeList2.concat(target.getEdgeListToNode(source)); + if (!visited.has(edgeList2[0])) { + if (edgeList2.length > 1) { + var k2; + for (k2 = 0; k2 < edgeList2.length; k2++) { + var multiEdge = edgeList2[k2]; + multiEdge.getBendpoints().push(new PointD()); + this.createDummyNodesForBendpoints(multiEdge); + } + } + edgeList2.forEach(function(edge2) { + visited.add(edge2); + }); + } + } + } + if (visited.size == edges3.length) { + break; + } + } + }; + CoSELayout.prototype.positionNodesRadially = function(forest) { + var currentStartingPoint = new Point3(0, 0); + var numberOfColumns = Math.ceil(Math.sqrt(forest.length)); + var height2 = 0; + var currentY = 0; + var currentX = 0; + var point8 = new PointD(0, 0); + for (var i2 = 0; i2 < forest.length; i2++) { + if (i2 % numberOfColumns == 0) { + currentX = 0; + currentY = height2; + if (i2 != 0) { + currentY += CoSEConstants.DEFAULT_COMPONENT_SEPERATION; + } + height2 = 0; + } + var tree = forest[i2]; + var centerNode = Layout2.findCenterOfTree(tree); + currentStartingPoint.x = currentX; + currentStartingPoint.y = currentY; + point8 = CoSELayout.radialLayout(tree, centerNode, currentStartingPoint); + if (point8.y > height2) { + height2 = Math.floor(point8.y); + } + currentX = Math.floor(point8.x + CoSEConstants.DEFAULT_COMPONENT_SEPERATION); + } + this.transform(new PointD(LayoutConstants.WORLD_CENTER_X - point8.x / 2, LayoutConstants.WORLD_CENTER_Y - point8.y / 2)); + }; + CoSELayout.radialLayout = function(tree, centerNode, startingPoint) { + var radialSep = Math.max(this.maxDiagonalInTree(tree), CoSEConstants.DEFAULT_RADIAL_SEPARATION); + CoSELayout.branchRadialLayout(centerNode, null, 0, 359, 0, radialSep); + var bounds4 = LGraph.calculateBounds(tree); + var transform8 = new Transform2(); + transform8.setDeviceOrgX(bounds4.getMinX()); + transform8.setDeviceOrgY(bounds4.getMinY()); + transform8.setWorldOrgX(startingPoint.x); + transform8.setWorldOrgY(startingPoint.y); + for (var i2 = 0; i2 < tree.length; i2++) { + var node2 = tree[i2]; + node2.transform(transform8); + } + var bottomRight = new PointD(bounds4.getMaxX(), bounds4.getMaxY()); + return transform8.inverseTransformPoint(bottomRight); + }; + CoSELayout.branchRadialLayout = function(node2, parentOfNode, startAngle, endAngle, distance2, radialSeparation) { + var halfInterval = (endAngle - startAngle + 1) / 2; + if (halfInterval < 0) { + halfInterval += 180; + } + var nodeAngle = (halfInterval + startAngle) % 360; + var teta = nodeAngle * IGeometry.TWO_PI / 360; + var cos_teta = Math.cos(teta); + var x_ = distance2 * Math.cos(teta); + var y_ = distance2 * Math.sin(teta); + node2.setCenter(x_, y_); + var neighborEdges = []; + neighborEdges = neighborEdges.concat(node2.getEdges()); + var childCount = neighborEdges.length; + if (parentOfNode != null) { + childCount--; + } + var branchCount = 0; + var incEdgesCount = neighborEdges.length; + var startIndex; + var edges3 = node2.getEdgesBetween(parentOfNode); + while (edges3.length > 1) { + var temp = edges3[0]; + edges3.splice(0, 1); + var index = neighborEdges.indexOf(temp); + if (index >= 0) { + neighborEdges.splice(index, 1); + } + incEdgesCount--; + childCount--; + } + if (parentOfNode != null) { + startIndex = (neighborEdges.indexOf(edges3[0]) + 1) % incEdgesCount; + } else { + startIndex = 0; + } + var stepAngle = Math.abs(endAngle - startAngle) / childCount; + for (var i2 = startIndex; branchCount != childCount; i2 = ++i2 % incEdgesCount) { + var currentNeighbor = neighborEdges[i2].getOtherEnd(node2); + if (currentNeighbor == parentOfNode) { + continue; + } + var childStartAngle = (startAngle + branchCount * stepAngle) % 360; + var childEndAngle = (childStartAngle + stepAngle) % 360; + CoSELayout.branchRadialLayout(currentNeighbor, node2, childStartAngle, childEndAngle, distance2 + radialSeparation, radialSeparation); + branchCount++; + } + }; + CoSELayout.maxDiagonalInTree = function(tree) { + var maxDiagonal = Integer.MIN_VALUE; + for (var i2 = 0; i2 < tree.length; i2++) { + var node2 = tree[i2]; + var diagonal = node2.getDiagonal(); + if (diagonal > maxDiagonal) { + maxDiagonal = diagonal; + } + } + return maxDiagonal; + }; + CoSELayout.prototype.calcRepulsionRange = function() { + return 2 * (this.level + 1) * this.idealEdgeLength; + }; + CoSELayout.prototype.groupZeroDegreeMembers = function() { + var self2 = this; + var tempMemberGroups = {}; + this.memberGroups = {}; + this.idToDummyNode = {}; + var zeroDegree = []; + var allNodes = this.graphManager.getAllNodes(); + for (var i2 = 0; i2 < allNodes.length; i2++) { + var node2 = allNodes[i2]; + var parent4 = node2.getParent(); + if (this.getNodeDegreeWithChildren(node2) === 0 && (parent4.id == void 0 || !this.getToBeTiled(parent4))) { + zeroDegree.push(node2); + } + } + for (var i2 = 0; i2 < zeroDegree.length; i2++) { + var node2 = zeroDegree[i2]; + var p_id = node2.getParent().id; + if (typeof tempMemberGroups[p_id] === "undefined") tempMemberGroups[p_id] = []; + tempMemberGroups[p_id] = tempMemberGroups[p_id].concat(node2); + } + Object.keys(tempMemberGroups).forEach(function(p_id2) { + if (tempMemberGroups[p_id2].length > 1) { + var dummyCompoundId = "DummyCompound_" + p_id2; + self2.memberGroups[dummyCompoundId] = tempMemberGroups[p_id2]; + var parent5 = tempMemberGroups[p_id2][0].getParent(); + var dummyCompound = new CoSENode(self2.graphManager); + dummyCompound.id = dummyCompoundId; + dummyCompound.paddingLeft = parent5.paddingLeft || 0; + dummyCompound.paddingRight = parent5.paddingRight || 0; + dummyCompound.paddingBottom = parent5.paddingBottom || 0; + dummyCompound.paddingTop = parent5.paddingTop || 0; + self2.idToDummyNode[dummyCompoundId] = dummyCompound; + var dummyParentGraph = self2.getGraphManager().add(self2.newGraph(), dummyCompound); + var parentGraph = parent5.getChild(); + parentGraph.add(dummyCompound); + for (var i3 = 0; i3 < tempMemberGroups[p_id2].length; i3++) { + var node3 = tempMemberGroups[p_id2][i3]; + parentGraph.remove(node3); + dummyParentGraph.add(node3); + } + } }); - } - }, "next"), - // return next match that has a token - lex: /* @__PURE__ */ __name(function lex() { - var r2 = this.next(); - if (r2) { + }; + CoSELayout.prototype.clearCompounds = function() { + var childGraphMap = {}; + var idToNode = {}; + this.performDFSOnCompounds(); + for (var i2 = 0; i2 < this.compoundOrder.length; i2++) { + idToNode[this.compoundOrder[i2].id] = this.compoundOrder[i2]; + childGraphMap[this.compoundOrder[i2].id] = [].concat(this.compoundOrder[i2].getChild().getNodes()); + this.graphManager.remove(this.compoundOrder[i2].getChild()); + this.compoundOrder[i2].child = null; + } + this.graphManager.resetAllNodes(); + this.tileCompoundMembers(childGraphMap, idToNode); + }; + CoSELayout.prototype.clearZeroDegreeMembers = function() { + var self2 = this; + var tiledZeroDegreePack = this.tiledZeroDegreePack = []; + Object.keys(this.memberGroups).forEach(function(id30) { + var compoundNode = self2.idToDummyNode[id30]; + tiledZeroDegreePack[id30] = self2.tileNodes(self2.memberGroups[id30], compoundNode.paddingLeft + compoundNode.paddingRight); + compoundNode.rect.width = tiledZeroDegreePack[id30].width; + compoundNode.rect.height = tiledZeroDegreePack[id30].height; + }); + }; + CoSELayout.prototype.repopulateCompounds = function() { + for (var i2 = this.compoundOrder.length - 1; i2 >= 0; i2--) { + var lCompoundNode = this.compoundOrder[i2]; + var id30 = lCompoundNode.id; + var horizontalMargin = lCompoundNode.paddingLeft; + var verticalMargin = lCompoundNode.paddingTop; + this.adjustLocations(this.tiledMemberPack[id30], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin); + } + }; + CoSELayout.prototype.repopulateZeroDegreeMembers = function() { + var self2 = this; + var tiledPack = this.tiledZeroDegreePack; + Object.keys(tiledPack).forEach(function(id30) { + var compoundNode = self2.idToDummyNode[id30]; + var horizontalMargin = compoundNode.paddingLeft; + var verticalMargin = compoundNode.paddingTop; + self2.adjustLocations(tiledPack[id30], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin); + }); + }; + CoSELayout.prototype.getToBeTiled = function(node2) { + var id30 = node2.id; + if (this.toBeTiled[id30] != null) { + return this.toBeTiled[id30]; + } + var childGraph = node2.getChild(); + if (childGraph == null) { + this.toBeTiled[id30] = false; + return false; + } + var children2 = childGraph.getNodes(); + for (var i2 = 0; i2 < children2.length; i2++) { + var theChild = children2[i2]; + if (this.getNodeDegree(theChild) > 0) { + this.toBeTiled[id30] = false; + return false; + } + if (theChild.getChild() == null) { + this.toBeTiled[theChild.id] = false; + continue; + } + if (!this.getToBeTiled(theChild)) { + this.toBeTiled[id30] = false; + return false; + } + } + this.toBeTiled[id30] = true; + return true; + }; + CoSELayout.prototype.getNodeDegree = function(node2) { + var id30 = node2.id; + var edges3 = node2.getEdges(); + var degree = 0; + for (var i2 = 0; i2 < edges3.length; i2++) { + var edge = edges3[i2]; + if (edge.getSource().id !== edge.getTarget().id) { + degree = degree + 1; + } + } + return degree; + }; + CoSELayout.prototype.getNodeDegreeWithChildren = function(node2) { + var degree = this.getNodeDegree(node2); + if (node2.getChild() == null) { + return degree; + } + var children2 = node2.getChild().getNodes(); + for (var i2 = 0; i2 < children2.length; i2++) { + var child = children2[i2]; + degree += this.getNodeDegreeWithChildren(child); + } + return degree; + }; + CoSELayout.prototype.performDFSOnCompounds = function() { + this.compoundOrder = []; + this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes()); + }; + CoSELayout.prototype.fillCompexOrderByDFS = function(children2) { + for (var i2 = 0; i2 < children2.length; i2++) { + var child = children2[i2]; + if (child.getChild() != null) { + this.fillCompexOrderByDFS(child.getChild().getNodes()); + } + if (this.getToBeTiled(child)) { + this.compoundOrder.push(child); + } + } + }; + CoSELayout.prototype.adjustLocations = function(organization, x5, y6, compoundHorizontalMargin, compoundVerticalMargin) { + x5 += compoundHorizontalMargin; + y6 += compoundVerticalMargin; + var left3 = x5; + for (var i2 = 0; i2 < organization.rows.length; i2++) { + var row = organization.rows[i2]; + x5 = left3; + var maxHeight = 0; + for (var j3 = 0; j3 < row.length; j3++) { + var lnode = row[j3]; + lnode.rect.x = x5; + lnode.rect.y = y6; + x5 += lnode.rect.width + organization.horizontalPadding; + if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height; + } + y6 += maxHeight + organization.verticalPadding; + } + }; + CoSELayout.prototype.tileCompoundMembers = function(childGraphMap, idToNode) { + var self2 = this; + this.tiledMemberPack = []; + Object.keys(childGraphMap).forEach(function(id30) { + var compoundNode = idToNode[id30]; + self2.tiledMemberPack[id30] = self2.tileNodes(childGraphMap[id30], compoundNode.paddingLeft + compoundNode.paddingRight); + compoundNode.rect.width = self2.tiledMemberPack[id30].width; + compoundNode.rect.height = self2.tiledMemberPack[id30].height; + }); + }; + CoSELayout.prototype.tileNodes = function(nodes5, minWidth) { + var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL; + var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL; + var organization = { + rows: [], + rowWidth: [], + rowHeight: [], + width: 0, + height: minWidth, + // assume minHeight equals to minWidth + verticalPadding, + horizontalPadding + }; + nodes5.sort(function(n1, n2) { + if (n1.rect.width * n1.rect.height > n2.rect.width * n2.rect.height) return -1; + if (n1.rect.width * n1.rect.height < n2.rect.width * n2.rect.height) return 1; + return 0; + }); + for (var i2 = 0; i2 < nodes5.length; i2++) { + var lNode = nodes5[i2]; + if (organization.rows.length == 0) { + this.insertNodeToRow(organization, lNode, 0, minWidth); + } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) { + this.insertNodeToRow(organization, lNode, this.getShortestRowIndex(organization), minWidth); + } else { + this.insertNodeToRow(organization, lNode, organization.rows.length, minWidth); + } + this.shiftToLastRow(organization); + } + return organization; + }; + CoSELayout.prototype.insertNodeToRow = function(organization, node2, rowIndex, minWidth) { + var minCompoundSize = minWidth; + if (rowIndex == organization.rows.length) { + var secondDimension = []; + organization.rows.push(secondDimension); + organization.rowWidth.push(minCompoundSize); + organization.rowHeight.push(0); + } + var w4 = organization.rowWidth[rowIndex] + node2.rect.width; + if (organization.rows[rowIndex].length > 0) { + w4 += organization.horizontalPadding; + } + organization.rowWidth[rowIndex] = w4; + if (organization.width < w4) { + organization.width = w4; + } + var h3 = node2.rect.height; + if (rowIndex > 0) h3 += organization.verticalPadding; + var extraHeight = 0; + if (h3 > organization.rowHeight[rowIndex]) { + extraHeight = organization.rowHeight[rowIndex]; + organization.rowHeight[rowIndex] = h3; + extraHeight = organization.rowHeight[rowIndex] - extraHeight; + } + organization.height += extraHeight; + organization.rows[rowIndex].push(node2); + }; + CoSELayout.prototype.getShortestRowIndex = function(organization) { + var r2 = -1; + var min9 = Number.MAX_VALUE; + for (var i2 = 0; i2 < organization.rows.length; i2++) { + if (organization.rowWidth[i2] < min9) { + r2 = i2; + min9 = organization.rowWidth[i2]; + } + } return r2; - } else { - return this.lex(); + }; + CoSELayout.prototype.getLongestRowIndex = function(organization) { + var r2 = -1; + var max10 = Number.MIN_VALUE; + for (var i2 = 0; i2 < organization.rows.length; i2++) { + if (organization.rowWidth[i2] > max10) { + r2 = i2; + max10 = organization.rowWidth[i2]; + } + } + return r2; + }; + CoSELayout.prototype.canAddHorizontal = function(organization, extraWidth, extraHeight) { + var sri = this.getShortestRowIndex(organization); + if (sri < 0) { + return true; + } + var min9 = organization.rowWidth[sri]; + if (min9 + organization.horizontalPadding + extraWidth <= organization.width) return true; + var hDiff = 0; + if (organization.rowHeight[sri] < extraHeight) { + if (sri > 0) hDiff = extraHeight + organization.verticalPadding - organization.rowHeight[sri]; + } + var add_to_row_ratio; + if (organization.width - min9 >= extraWidth + organization.horizontalPadding) { + add_to_row_ratio = (organization.height + hDiff) / (min9 + extraWidth + organization.horizontalPadding); + } else { + add_to_row_ratio = (organization.height + hDiff) / organization.width; + } + hDiff = extraHeight + organization.verticalPadding; + var add_new_row_ratio; + if (organization.width < extraWidth) { + add_new_row_ratio = (organization.height + hDiff) / extraWidth; + } else { + add_new_row_ratio = (organization.height + hDiff) / organization.width; + } + if (add_new_row_ratio < 1) add_new_row_ratio = 1 / add_new_row_ratio; + if (add_to_row_ratio < 1) add_to_row_ratio = 1 / add_to_row_ratio; + return add_to_row_ratio < add_new_row_ratio; + }; + CoSELayout.prototype.shiftToLastRow = function(organization) { + var longest = this.getLongestRowIndex(organization); + var last3 = organization.rowWidth.length - 1; + var row = organization.rows[longest]; + var node2 = row[row.length - 1]; + var diff2 = node2.width + organization.horizontalPadding; + if (organization.width - organization.rowWidth[last3] > diff2 && longest != last3) { + row.splice(-1, 1); + organization.rows[last3].push(node2); + organization.rowWidth[longest] = organization.rowWidth[longest] - diff2; + organization.rowWidth[last3] = organization.rowWidth[last3] + diff2; + organization.width = organization.rowWidth[instance.getLongestRowIndex(organization)]; + var maxHeight = Number.MIN_VALUE; + for (var i2 = 0; i2 < row.length; i2++) { + if (row[i2].height > maxHeight) maxHeight = row[i2].height; + } + if (longest > 0) maxHeight += organization.verticalPadding; + var prevTotal = organization.rowHeight[longest] + organization.rowHeight[last3]; + organization.rowHeight[longest] = maxHeight; + if (organization.rowHeight[last3] < node2.height + organization.verticalPadding) organization.rowHeight[last3] = node2.height + organization.verticalPadding; + var finalTotal = organization.rowHeight[longest] + organization.rowHeight[last3]; + organization.height += finalTotal - prevTotal; + this.shiftToLastRow(organization); + } + }; + CoSELayout.prototype.tilingPreLayout = function() { + if (CoSEConstants.TILE) { + this.groupZeroDegreeMembers(); + this.clearCompounds(); + this.clearZeroDegreeMembers(); + } + }; + CoSELayout.prototype.tilingPostLayout = function() { + if (CoSEConstants.TILE) { + this.repopulateZeroDegreeMembers(); + this.repopulateCompounds(); + } + }; + CoSELayout.prototype.reduceTrees = function() { + var prunedNodesAll = []; + var containsLeaf = true; + var node2; + while (containsLeaf) { + var allNodes = this.graphManager.getAllNodes(); + var prunedNodesInStepTemp = []; + containsLeaf = false; + for (var i2 = 0; i2 < allNodes.length; i2++) { + node2 = allNodes[i2]; + if (node2.getEdges().length == 1 && !node2.getEdges()[0].isInterGraph && node2.getChild() == null) { + prunedNodesInStepTemp.push([node2, node2.getEdges()[0], node2.getOwner()]); + containsLeaf = true; + } + } + if (containsLeaf == true) { + var prunedNodesInStep = []; + for (var j3 = 0; j3 < prunedNodesInStepTemp.length; j3++) { + if (prunedNodesInStepTemp[j3][0].getEdges().length == 1) { + prunedNodesInStep.push(prunedNodesInStepTemp[j3]); + prunedNodesInStepTemp[j3][0].getOwner().remove(prunedNodesInStepTemp[j3][0]); + } + } + prunedNodesAll.push(prunedNodesInStep); + this.graphManager.resetAllNodes(); + this.graphManager.resetAllEdges(); + } + } + this.prunedNodesAll = prunedNodesAll; + }; + CoSELayout.prototype.growTree = function(prunedNodesAll) { + var lengthOfPrunedNodesInStep = prunedNodesAll.length; + var prunedNodesInStep = prunedNodesAll[lengthOfPrunedNodesInStep - 1]; + var nodeData2; + for (var i2 = 0; i2 < prunedNodesInStep.length; i2++) { + nodeData2 = prunedNodesInStep[i2]; + this.findPlaceforPrunedNode(nodeData2); + nodeData2[2].add(nodeData2[0]); + nodeData2[2].add(nodeData2[1], nodeData2[1].source, nodeData2[1].target); + } + prunedNodesAll.splice(prunedNodesAll.length - 1, 1); + this.graphManager.resetAllNodes(); + this.graphManager.resetAllEdges(); + }; + CoSELayout.prototype.findPlaceforPrunedNode = function(nodeData2) { + var gridForPrunedNode; + var nodeToConnect; + var prunedNode = nodeData2[0]; + if (prunedNode == nodeData2[1].source) { + nodeToConnect = nodeData2[1].target; + } else { + nodeToConnect = nodeData2[1].source; + } + var startGridX = nodeToConnect.startX; + var finishGridX = nodeToConnect.finishX; + var startGridY = nodeToConnect.startY; + var finishGridY = nodeToConnect.finishY; + var upNodeCount = 0; + var downNodeCount = 0; + var rightNodeCount = 0; + var leftNodeCount = 0; + var controlRegions = [upNodeCount, rightNodeCount, downNodeCount, leftNodeCount]; + if (startGridY > 0) { + for (var i2 = startGridX; i2 <= finishGridX; i2++) { + controlRegions[0] += this.grid[i2][startGridY - 1].length + this.grid[i2][startGridY].length - 1; + } + } + if (finishGridX < this.grid.length - 1) { + for (var i2 = startGridY; i2 <= finishGridY; i2++) { + controlRegions[1] += this.grid[finishGridX + 1][i2].length + this.grid[finishGridX][i2].length - 1; + } + } + if (finishGridY < this.grid[0].length - 1) { + for (var i2 = startGridX; i2 <= finishGridX; i2++) { + controlRegions[2] += this.grid[i2][finishGridY + 1].length + this.grid[i2][finishGridY].length - 1; + } + } + if (startGridX > 0) { + for (var i2 = startGridY; i2 <= finishGridY; i2++) { + controlRegions[3] += this.grid[startGridX - 1][i2].length + this.grid[startGridX][i2].length - 1; + } + } + var min9 = Integer.MAX_VALUE; + var minCount; + var minIndex; + for (var j3 = 0; j3 < controlRegions.length; j3++) { + if (controlRegions[j3] < min9) { + min9 = controlRegions[j3]; + minCount = 1; + minIndex = j3; + } else if (controlRegions[j3] == min9) { + minCount++; + } + } + if (minCount == 3 && min9 == 0) { + if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[2] == 0) { + gridForPrunedNode = 1; + } else if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[3] == 0) { + gridForPrunedNode = 0; + } else if (controlRegions[0] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) { + gridForPrunedNode = 3; + } else if (controlRegions[1] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) { + gridForPrunedNode = 2; + } + } else if (minCount == 2 && min9 == 0) { + var random2 = Math.floor(Math.random() * 2); + if (controlRegions[0] == 0 && controlRegions[1] == 0) { + ; + if (random2 == 0) { + gridForPrunedNode = 0; + } else { + gridForPrunedNode = 1; + } + } else if (controlRegions[0] == 0 && controlRegions[2] == 0) { + if (random2 == 0) { + gridForPrunedNode = 0; + } else { + gridForPrunedNode = 2; + } + } else if (controlRegions[0] == 0 && controlRegions[3] == 0) { + if (random2 == 0) { + gridForPrunedNode = 0; + } else { + gridForPrunedNode = 3; + } + } else if (controlRegions[1] == 0 && controlRegions[2] == 0) { + if (random2 == 0) { + gridForPrunedNode = 1; + } else { + gridForPrunedNode = 2; + } + } else if (controlRegions[1] == 0 && controlRegions[3] == 0) { + if (random2 == 0) { + gridForPrunedNode = 1; + } else { + gridForPrunedNode = 3; + } + } else { + if (random2 == 0) { + gridForPrunedNode = 2; + } else { + gridForPrunedNode = 3; + } + } + } else if (minCount == 4 && min9 == 0) { + var random2 = Math.floor(Math.random() * 4); + gridForPrunedNode = random2; + } else { + gridForPrunedNode = minIndex; + } + if (gridForPrunedNode == 0) { + prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() - nodeToConnect.getHeight() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getHeight() / 2); + } else if (gridForPrunedNode == 1) { + prunedNode.setCenter(nodeToConnect.getCenterX() + nodeToConnect.getWidth() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getWidth() / 2, nodeToConnect.getCenterY()); + } else if (gridForPrunedNode == 2) { + prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() + nodeToConnect.getHeight() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getHeight() / 2); + } else { + prunedNode.setCenter(nodeToConnect.getCenterX() - nodeToConnect.getWidth() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getWidth() / 2, nodeToConnect.getCenterY()); + } + }; + module3.exports = CoSELayout; + }), + /* 7 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var coseBase = {}; + coseBase.layoutBase = __webpack_require__(0); + coseBase.CoSEConstants = __webpack_require__(1); + coseBase.CoSEEdge = __webpack_require__(2); + coseBase.CoSEGraph = __webpack_require__(3); + coseBase.CoSEGraphManager = __webpack_require__(4); + coseBase.CoSELayout = __webpack_require__(6); + coseBase.CoSENode = __webpack_require__(5); + module3.exports = coseBase; + }) + /******/ + ]) + ); + }); + } + }); + + // ../../node_modules/.pnpm/cytoscape-cose-bilkent@4.1.0_cytoscape@3.33.1/node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js + var require_cytoscape_cose_bilkent = __commonJS({ + "../../node_modules/.pnpm/cytoscape-cose-bilkent@4.1.0_cytoscape@3.33.1/node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js"(exports2, module2) { + "use strict"; + (/* @__PURE__ */ __name((function webpackUniversalModuleDefinition(root3, factory) { + if (typeof exports2 === "object" && typeof module2 === "object") + module2.exports = factory(require_cose_base()); + else if (typeof define === "function" && define.amd) + define(["cose-base"], factory); + else if (typeof exports2 === "object") + exports2["cytoscapeCoseBilkent"] = factory(require_cose_base()); + else + root3["cytoscapeCoseBilkent"] = factory(root3["coseBase"]); + }), "webpackUniversalModuleDefinition"))(exports2, function(__WEBPACK_EXTERNAL_MODULE_0__) { + return ( + /******/ + (function(modules2) { + var installedModules = {}; + function __webpack_require__(moduleId) { + if (installedModules[moduleId]) { + return installedModules[moduleId].exports; } - }, "lex"), - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: /* @__PURE__ */ __name(function begin(condition) { - this.conditionStack.push(condition); - }, "begin"), - // pop the previously active lexer condition state off the condition stack - popState: /* @__PURE__ */ __name(function popState() { - var n2 = this.conditionStack.length - 1; - if (n2 > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; + var module3 = installedModules[moduleId] = { + /******/ + i: moduleId, + /******/ + l: false, + /******/ + exports: {} + /******/ + }; + modules2[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); + module3.l = true; + return module3.exports; + } + __name(__webpack_require__, "__webpack_require__"); + __webpack_require__.m = modules2; + __webpack_require__.c = installedModules; + __webpack_require__.i = function(value2) { + return value2; + }; + __webpack_require__.d = function(exports3, name, getter) { + if (!__webpack_require__.o(exports3, name)) { + Object.defineProperty(exports3, name, { + /******/ + configurable: false, + /******/ + enumerable: true, + /******/ + get: getter + /******/ + }); } - }, "popState"), - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: /* @__PURE__ */ __name(function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; + }; + __webpack_require__.n = function(module3) { + var getter = module3 && module3.__esModule ? ( + /******/ + /* @__PURE__ */ __name(function getDefault() { + return module3["default"]; + }, "getDefault") + ) : ( + /******/ + /* @__PURE__ */ __name(function getModuleExports() { + return module3; + }, "getModuleExports") + ); + __webpack_require__.d(getter, "a", getter); + return getter; + }; + __webpack_require__.o = function(object3, property2) { + return Object.prototype.hasOwnProperty.call(object3, property2); + }; + __webpack_require__.p = ""; + return __webpack_require__(__webpack_require__.s = 1); + })([ + /* 0 */ + /***/ + (function(module3, exports3) { + module3.exports = __WEBPACK_EXTERNAL_MODULE_0__; + }), + /* 1 */ + /***/ + (function(module3, exports3, __webpack_require__) { + "use strict"; + var LayoutConstants = __webpack_require__(0).layoutBase.LayoutConstants; + var FDLayoutConstants = __webpack_require__(0).layoutBase.FDLayoutConstants; + var CoSEConstants = __webpack_require__(0).CoSEConstants; + var CoSELayout = __webpack_require__(0).CoSELayout; + var CoSENode = __webpack_require__(0).CoSENode; + var PointD = __webpack_require__(0).layoutBase.PointD; + var DimensionD2 = __webpack_require__(0).layoutBase.DimensionD; + var defaults4 = { + // Called on `layoutready` + ready: /* @__PURE__ */ __name(function ready4() { + }, "ready"), + // Called on `layoutstop` + stop: /* @__PURE__ */ __name(function stop5() { + }, "stop"), + // 'draft', 'default' or 'proof" + // - 'draft' fast cooling rate + // - 'default' moderate cooling rate + // - "proof" slow cooling rate + quality: "default", + // include labels in node dimensions + nodeDimensionsIncludeLabels: false, + // number of ticks per frame; higher is faster but more jerky + refresh: 30, + // Whether to fit the network view after when done + fit: true, + // Padding on fit + padding: 10, + // Whether to enable incremental mode + randomize: true, + // Node repulsion (non overlapping) multiplier + nodeRepulsion: 4500, + // Ideal edge (non nested) length + idealEdgeLength: 50, + // Divisor to compute edge forces + edgeElasticity: 0.45, + // Nesting factor (multiplier) to compute ideal edge length for nested edges + nestingFactor: 0.1, + // Gravity force (constant) + gravity: 0.25, + // Maximum number of iterations to perform + numIter: 2500, + // For enabling tiling + tile: true, + // Type of layout animation. The option set is {'during', 'end', false} + animate: "end", + // Duration for animate:end + animationDuration: 500, + // Represents the amount of the vertical space to put between the zero degree members during the tiling operation(can also be a function) + tilingPaddingVertical: 10, + // Represents the amount of the horizontal space to put between the zero degree members during the tiling operation(can also be a function) + tilingPaddingHorizontal: 10, + // Gravity range (constant) for compounds + gravityRangeCompound: 1.5, + // Gravity force (constant) for compounds + gravityCompound: 1, + // Gravity range (constant) + gravityRange: 3.8, + // Initial cooling factor for incremental layout + initialEnergyOnIncremental: 0.5 + }; + function extend5(defaults5, options2) { + var obj = {}; + for (var i2 in defaults5) { + obj[i2] = defaults5[i2]; + } + for (var i2 in options2) { + obj[i2] = options2[i2]; + } + return obj; } - }, "_currentRules"), - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: /* @__PURE__ */ __name(function topState(n2) { - n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); - if (n2 >= 0) { - return this.conditionStack[n2]; - } else { - return "INITIAL"; + __name(extend5, "extend"); + ; + function _CoSELayout(_options) { + this.options = extend5(defaults4, _options); + getUserOptions(this.options); } - }, "topState"), - // alias for begin(condition) - pushState: /* @__PURE__ */ __name(function pushState(condition) { - this.begin(condition); - }, "pushState"), - // return the number of states currently on the stack - stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { - return this.conditionStack.length; - }, "stateStackSize"), - options: { "case-insensitive": true }, - performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - return 41; - break; - case 1: - return 48; - break; - case 2: - return 49; - break; - case 3: - return 50; - break; - case 4: - return 51; - break; - case 5: - break; - case 6: - { + __name(_CoSELayout, "_CoSELayout"); + var getUserOptions = /* @__PURE__ */ __name(function getUserOptions2(options2) { + if (options2.nodeRepulsion != null) CoSEConstants.DEFAULT_REPULSION_STRENGTH = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH = options2.nodeRepulsion; + if (options2.idealEdgeLength != null) CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = options2.idealEdgeLength; + if (options2.edgeElasticity != null) CoSEConstants.DEFAULT_SPRING_STRENGTH = FDLayoutConstants.DEFAULT_SPRING_STRENGTH = options2.edgeElasticity; + if (options2.nestingFactor != null) CoSEConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = options2.nestingFactor; + if (options2.gravity != null) CoSEConstants.DEFAULT_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = options2.gravity; + if (options2.numIter != null) CoSEConstants.MAX_ITERATIONS = FDLayoutConstants.MAX_ITERATIONS = options2.numIter; + if (options2.gravityRange != null) CoSEConstants.DEFAULT_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = options2.gravityRange; + if (options2.gravityCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = options2.gravityCompound; + if (options2.gravityRangeCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = options2.gravityRangeCompound; + if (options2.initialEnergyOnIncremental != null) CoSEConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = options2.initialEnergyOnIncremental; + if (options2.quality == "draft") LayoutConstants.QUALITY = 0; + else if (options2.quality == "proof") LayoutConstants.QUALITY = 2; + else LayoutConstants.QUALITY = 1; + CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS = FDLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = options2.nodeDimensionsIncludeLabels; + CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = !options2.randomize; + CoSEConstants.ANIMATE = FDLayoutConstants.ANIMATE = LayoutConstants.ANIMATE = options2.animate; + CoSEConstants.TILE = options2.tile; + CoSEConstants.TILING_PADDING_VERTICAL = typeof options2.tilingPaddingVertical === "function" ? options2.tilingPaddingVertical.call() : options2.tilingPaddingVertical; + CoSEConstants.TILING_PADDING_HORIZONTAL = typeof options2.tilingPaddingHorizontal === "function" ? options2.tilingPaddingHorizontal.call() : options2.tilingPaddingHorizontal; + }, "getUserOptions"); + _CoSELayout.prototype.run = function() { + var ready4; + var frameId; + var options2 = this.options; + var idToLNode = this.idToLNode = {}; + var layout6 = this.layout = new CoSELayout(); + var self2 = this; + self2.stopped = false; + this.cy = this.options.cy; + this.cy.trigger({ type: "layoutstart", layout: this }); + var gm = layout6.newGraphManager(); + this.gm = gm; + var nodes5 = this.options.eles.nodes(); + var edges3 = this.options.eles.edges(); + this.root = gm.addRoot(); + this.processChildrenList(this.root, this.getTopMostNodes(nodes5), layout6); + for (var i2 = 0; i2 < edges3.length; i2++) { + var edge = edges3[i2]; + var sourceNode = this.idToLNode[edge.data("source")]; + var targetNode = this.idToLNode[edge.data("target")]; + if (sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length == 0) { + var e1 = gm.add(layout6.newEdge(), sourceNode, targetNode); + e1.id = edge.id(); } - break; - case 7: - return 5; - break; - case 8: - break; - case 9: - break; - case 10: - break; - case 11: - break; - case 12: - this.pushState("SCALE"); - return 17; - break; - case 13: - return 18; - break; - case 14: - this.popState(); - break; - case 15: - this.begin("acc_title"); - return 33; - break; - case 16: - this.popState(); - return "acc_title_value"; - break; - case 17: - this.begin("acc_descr"); - return 35; - break; - case 18: - this.popState(); - return "acc_descr_value"; - break; - case 19: - this.begin("acc_descr_multiline"); - break; - case 20: - this.popState(); - break; - case 21: - return "acc_descr_multiline_value"; - break; - case 22: - this.pushState("CLASSDEF"); - return 38; - break; - case 23: - this.popState(); - this.pushState("CLASSDEFID"); - return "DEFAULT_CLASSDEF_ID"; - break; - case 24: - this.popState(); - this.pushState("CLASSDEFID"); - return 39; - break; - case 25: - this.popState(); - return 40; - break; - case 26: - this.pushState("CLASS"); - return 45; - break; - case 27: - this.popState(); - this.pushState("CLASS_STYLE"); - return 46; - break; - case 28: - this.popState(); - return 47; - break; - case 29: - this.pushState("STYLE"); - return 42; - break; - case 30: - this.popState(); - this.pushState("STYLEDEF_STYLES"); - return 43; - break; - case 31: - this.popState(); - return 44; - break; - case 32: - this.pushState("SCALE"); - return 17; - break; - case 33: - return 18; - break; - case 34: - this.popState(); - break; - case 35: - this.pushState("STATE"); - break; - case 36: - this.popState(); - yy_.yytext = yy_.yytext.slice(0, -8).trim(); - return 25; - break; - case 37: - this.popState(); - yy_.yytext = yy_.yytext.slice(0, -8).trim(); - return 26; - break; - case 38: - this.popState(); - yy_.yytext = yy_.yytext.slice(0, -10).trim(); - return 27; - break; - case 39: - this.popState(); - yy_.yytext = yy_.yytext.slice(0, -8).trim(); - return 25; - break; - case 40: - this.popState(); - yy_.yytext = yy_.yytext.slice(0, -8).trim(); - return 26; - break; - case 41: - this.popState(); - yy_.yytext = yy_.yytext.slice(0, -10).trim(); - return 27; - break; - case 42: - return 48; - break; - case 43: - return 49; - break; - case 44: - return 50; - break; - case 45: - return 51; - break; - case 46: - this.pushState("STATE_STRING"); - break; - case 47: - this.pushState("STATE_ID"); - return "AS"; - break; - case 48: - this.popState(); - return "ID"; - break; - case 49: - this.popState(); - break; - case 50: - return "STATE_DESCR"; - break; - case 51: - return 19; - break; - case 52: - this.popState(); - break; - case 53: - this.popState(); - this.pushState("struct"); - return 20; - break; - case 54: - break; - case 55: - this.popState(); - return 21; - break; - case 56: - break; - case 57: - this.begin("NOTE"); - return 29; - break; - case 58: - this.popState(); - this.pushState("NOTE_ID"); - return 56; - break; - case 59: - this.popState(); - this.pushState("NOTE_ID"); - return 57; - break; - case 60: - this.popState(); - this.pushState("FLOATING_NOTE"); - break; - case 61: - this.popState(); - this.pushState("FLOATING_NOTE_ID"); - return "AS"; - break; - case 62: - break; - case 63: - return "NOTE_TEXT"; - break; - case 64: - this.popState(); - return "ID"; - break; - case 65: - this.popState(); - this.pushState("NOTE_TEXT"); - return 24; - break; - case 66: - this.popState(); - yy_.yytext = yy_.yytext.substr(2).trim(); - return 31; - break; - case 67: - this.popState(); - yy_.yytext = yy_.yytext.slice(0, -8).trim(); - return 31; - break; - case 68: - return 6; - break; - case 69: - return 6; - break; - case 70: - return 16; - break; - case 71: - return 54; - break; - case 72: - return 24; - break; - case 73: - yy_.yytext = yy_.yytext.trim(); - return 14; - break; - case 74: - return 15; - break; - case 75: - return 28; - break; - case 76: - return 55; - break; - case 77: - return 5; - break; - case 78: - return "INVALID"; - break; + } + var getPositions = /* @__PURE__ */ __name(function getPositions2(ele, i3) { + if (typeof ele === "number") { + ele = i3; + } + var theId = ele.data("id"); + var lNode = self2.idToLNode[theId]; + return { + x: lNode.getRect().getCenterX(), + y: lNode.getRect().getCenterY() + }; + }, "getPositions"); + var iterateAnimated = /* @__PURE__ */ __name(function iterateAnimated2() { + var afterReposition = /* @__PURE__ */ __name(function afterReposition2() { + if (options2.fit) { + options2.cy.fit(options2.eles, options2.padding); + } + if (!ready4) { + ready4 = true; + self2.cy.one("layoutready", options2.ready); + self2.cy.trigger({ type: "layoutready", layout: self2 }); + } + }, "afterReposition"); + var ticksPerFrame = self2.options.refresh; + var isDone; + for (var i3 = 0; i3 < ticksPerFrame && !isDone; i3++) { + isDone = self2.stopped || self2.layout.tick(); + } + if (isDone) { + if (layout6.checkLayoutSuccess() && !layout6.isSubLayout) { + layout6.doPostLayout(); + } + if (layout6.tilingPostLayout) { + layout6.tilingPostLayout(); + } + layout6.isLayoutFinished = true; + self2.options.eles.nodes().positions(getPositions); + afterReposition(); + self2.cy.one("layoutstop", self2.options.stop); + self2.cy.trigger({ type: "layoutstop", layout: self2 }); + if (frameId) { + cancelAnimationFrame(frameId); + } + ready4 = false; + return; + } + var animationData = self2.layout.getPositionsData(); + options2.eles.nodes().positions(function(ele, i4) { + if (typeof ele === "number") { + ele = i4; + } + if (!ele.isParent()) { + var theId = ele.id(); + var pNode = animationData[theId]; + var temp = ele; + while (pNode == null) { + pNode = animationData[temp.data("parent")] || animationData["DummyCompound_" + temp.data("parent")]; + animationData[theId] = pNode; + temp = temp.parent()[0]; + if (temp == void 0) { + break; + } + } + if (pNode != null) { + return { + x: pNode.x, + y: pNode.y + }; + } else { + return { + x: ele.position("x"), + y: ele.position("y") + }; + } + } + }); + afterReposition(); + frameId = requestAnimationFrame(iterateAnimated2); + }, "iterateAnimated"); + layout6.addListener("layoutstarted", function() { + if (self2.options.animate === "during") { + frameId = requestAnimationFrame(iterateAnimated); + } + }); + layout6.runLayout(); + if (this.options.animate !== "during") { + self2.options.eles.nodes().not(":parent").layoutPositions(self2, self2.options, getPositions); + ready4 = false; + } + return this; + }; + _CoSELayout.prototype.getTopMostNodes = function(nodes5) { + var nodesMap2 = {}; + for (var i2 = 0; i2 < nodes5.length; i2++) { + nodesMap2[nodes5[i2].id()] = true; + } + var roots = nodes5.filter(function(ele, i3) { + if (typeof ele === "number") { + ele = i3; + } + var parent4 = ele.parent()[0]; + while (parent4 != null) { + if (nodesMap2[parent4.id()]) { + return false; + } + parent4 = parent4.parent()[0]; + } + return true; + }); + return roots; + }; + _CoSELayout.prototype.processChildrenList = function(parent4, children2, layout6) { + var size4 = children2.length; + for (var i2 = 0; i2 < size4; i2++) { + var theChild = children2[i2]; + var children_of_children = theChild.children(); + var theNode; + var dimensions2 = theChild.layoutDimensions({ + nodeDimensionsIncludeLabels: this.options.nodeDimensionsIncludeLabels + }); + if (theChild.outerWidth() != null && theChild.outerHeight() != null) { + theNode = parent4.add(new CoSENode(layout6.graphManager, new PointD(theChild.position("x") - dimensions2.w / 2, theChild.position("y") - dimensions2.h / 2), new DimensionD2(parseFloat(dimensions2.w), parseFloat(dimensions2.h)))); + } else { + theNode = parent4.add(new CoSENode(this.graphManager)); + } + theNode.id = theChild.data("id"); + theNode.paddingLeft = parseInt(theChild.css("padding")); + theNode.paddingTop = parseInt(theChild.css("padding")); + theNode.paddingRight = parseInt(theChild.css("padding")); + theNode.paddingBottom = parseInt(theChild.css("padding")); + if (this.options.nodeDimensionsIncludeLabels) { + if (theChild.isParent()) { + var labelWidth = theChild.boundingBox({ includeLabels: true, includeNodes: false }).w; + var labelHeight = theChild.boundingBox({ includeLabels: true, includeNodes: false }).h; + var labelPos = theChild.css("text-halign"); + theNode.labelWidth = labelWidth; + theNode.labelHeight = labelHeight; + theNode.labelPos = labelPos; + } + } + this.idToLNode[theChild.data("id")] = theNode; + if (isNaN(theNode.rect.x)) { + theNode.rect.x = 0; + } + if (isNaN(theNode.rect.y)) { + theNode.rect.y = 0; + } + if (children_of_children != null && children_of_children.length > 0) { + var theNewGraph; + theNewGraph = layout6.getGraphManager().add(layout6.newGraph(), theNode); + this.processChildrenList(theNewGraph, children_of_children, layout6); + } + } + }; + _CoSELayout.prototype.stop = function() { + this.stopped = true; + return this; + }; + var register = /* @__PURE__ */ __name(function register2(cytoscape4) { + cytoscape4("layout", "cose-bilkent", _CoSELayout); + }, "register"); + if (typeof cytoscape !== "undefined") { + register(cytoscape); } - }, "anonymous"), - rules: [/^(?:default\b)/i, /^(?:.*direction\s+TB[^\n]*)/i, /^(?:.*direction\s+BT[^\n]*)/i, /^(?:.*direction\s+RL[^\n]*)/i, /^(?:.*direction\s+LR[^\n]*)/i, /^(?:%%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n]+)/i, /^(?:[\s]+)/i, /^(?:((?!\n)\s)+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:scale\s+)/i, /^(?:\d+)/i, /^(?:\s+width\b)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:classDef\s+)/i, /^(?:DEFAULT\s+)/i, /^(?:\w+\s+)/i, /^(?:[^\n]*)/i, /^(?:class\s+)/i, /^(?:(\w+)+((,\s*\w+)*))/i, /^(?:[^\n]*)/i, /^(?:style\s+)/i, /^(?:[\w,]+\s+)/i, /^(?:[^\n]*)/i, /^(?:scale\s+)/i, /^(?:\d+)/i, /^(?:\s+width\b)/i, /^(?:state\s+)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*\[\[fork\]\])/i, /^(?:.*\[\[join\]\])/i, /^(?:.*\[\[choice\]\])/i, /^(?:.*direction\s+TB[^\n]*)/i, /^(?:.*direction\s+BT[^\n]*)/i, /^(?:.*direction\s+RL[^\n]*)/i, /^(?:.*direction\s+LR[^\n]*)/i, /^(?:["])/i, /^(?:\s*as\s+)/i, /^(?:[^\n\{]*)/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[^\n\s\{]+)/i, /^(?:\n)/i, /^(?:\{)/i, /^(?:%%(?!\{)[^\n]*)/i, /^(?:\})/i, /^(?:[\n])/i, /^(?:note\s+)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:")/i, /^(?:\s*as\s*)/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[^\n]*)/i, /^(?:\s*[^:\n\s\-]+)/i, /^(?:\s*:[^:\n;]+)/i, /^(?:[\s\S]*?end note\b)/i, /^(?:stateDiagram\s+)/i, /^(?:stateDiagram-v2\s+)/i, /^(?:hide empty description\b)/i, /^(?:\[\*\])/i, /^(?:[^:\n\s\-\{]+)/i, /^(?:\s*:[^:\n;]+)/i, /^(?:-->)/i, /^(?:--)/i, /^(?::::)/i, /^(?:$)/i, /^(?:.)/i], - conditions: { "LINE": { "rules": [9, 10], "inclusive": false }, "struct": { "rules": [9, 10, 22, 26, 29, 35, 42, 43, 44, 45, 54, 55, 56, 57, 71, 72, 73, 74, 75], "inclusive": false }, "FLOATING_NOTE_ID": { "rules": [64], "inclusive": false }, "FLOATING_NOTE": { "rules": [61, 62, 63], "inclusive": false }, "NOTE_TEXT": { "rules": [66, 67], "inclusive": false }, "NOTE_ID": { "rules": [65], "inclusive": false }, "NOTE": { "rules": [58, 59, 60], "inclusive": false }, "STYLEDEF_STYLEOPTS": { "rules": [], "inclusive": false }, "STYLEDEF_STYLES": { "rules": [31], "inclusive": false }, "STYLE_IDS": { "rules": [], "inclusive": false }, "STYLE": { "rules": [30], "inclusive": false }, "CLASS_STYLE": { "rules": [28], "inclusive": false }, "CLASS": { "rules": [27], "inclusive": false }, "CLASSDEFID": { "rules": [25], "inclusive": false }, "CLASSDEF": { "rules": [23, 24], "inclusive": false }, "acc_descr_multiline": { "rules": [20, 21], "inclusive": false }, "acc_descr": { "rules": [18], "inclusive": false }, "acc_title": { "rules": [16], "inclusive": false }, "SCALE": { "rules": [13, 14, 33, 34], "inclusive": false }, "ALIAS": { "rules": [], "inclusive": false }, "STATE_ID": { "rules": [48], "inclusive": false }, "STATE_STRING": { "rules": [49, 50], "inclusive": false }, "FORK_STATE": { "rules": [], "inclusive": false }, "STATE": { "rules": [9, 10, 36, 37, 38, 39, 40, 41, 46, 47, 51, 52, 53], "inclusive": false }, "ID": { "rules": [9, 10], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 15, 17, 19, 22, 26, 29, 32, 35, 53, 57, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78], "inclusive": true } } - }; - return lexer3; - }(); - parser24.lexer = lexer2; - function Parser3() { - this.yy = {}; - } - __name(Parser3, "Parser"); - Parser3.prototype = parser24; - parser24.Parser = Parser3; - return new Parser3(); - }(); - parser14.parser = parser14; - stateDiagram_default = parser14; + module3.exports = register; + }) + /******/ + ]) + ); + }); } }); - // src/diagrams/state/stateCommon.ts - var DEFAULT_DIAGRAM_DIRECTION, DEFAULT_NESTED_DOC_DIR, STMT_DIRECTION, STMT_STATE, STMT_RELATION, STMT_CLASSDEF, STMT_STYLEDEF, STMT_APPLYCLASS, DEFAULT_STATE_TYPE, DIVIDER_TYPE, G_EDGE_STYLE, G_EDGE_ARROWHEADSTYLE, G_EDGE_LABELPOS, G_EDGE_LABELTYPE, G_EDGE_THICKNESS, SHAPE_STATE, SHAPE_STATE_WITH_DESC, SHAPE_START, SHAPE_END, SHAPE_DIVIDER, SHAPE_GROUP, SHAPE_NOTE, SHAPE_NOTEGROUP, CSS_DIAGRAM, CSS_STATE, CSS_DIAGRAM_STATE, CSS_EDGE, CSS_NOTE, CSS_NOTE_EDGE, CSS_EDGE_NOTE_EDGE, CSS_DIAGRAM_NOTE, CSS_CLUSTER, CSS_DIAGRAM_CLUSTER, CSS_CLUSTER_ALT, CSS_DIAGRAM_CLUSTER_ALT, PARENT2, NOTE, DOMID_STATE, DOMID_TYPE_SPACER, NOTE_ID, PARENT_ID; - var init_stateCommon = __esm({ - "src/diagrams/state/stateCommon.ts"() { + // src/rendering-util/layout-algorithms/cose-bilkent/cytoscape-setup.ts + function addNodes(nodes5, cy) { + nodes5.forEach((node2) => { + const nodeData2 = { + id: node2.id, + labelText: node2.label, + height: node2.height, + width: node2.width, + padding: node2.padding ?? 0 + }; + Object.keys(node2).forEach((key) => { + if (!["id", "label", "height", "width", "padding", "x", "y"].includes(key)) { + nodeData2[key] = node2[key]; + } + }); + cy.add({ + group: "nodes", + data: nodeData2, + position: { + x: node2.x ?? 0, + y: node2.y ?? 0 + } + }); + }); + } + function addEdges(edges3, cy) { + edges3.forEach((edge) => { + const edgeData2 = { + id: edge.id, + source: edge.start, + target: edge.end + }; + Object.keys(edge).forEach((key) => { + if (!["id", "start", "end"].includes(key)) { + edgeData2[key] = edge[key]; + } + }); + cy.add({ + group: "edges", + data: edgeData2 + }); + }); + } + function createCytoscapeInstance(data5) { + return new Promise((resolve2) => { + const renderEl = select_default2("body").append("div").attr("id", "cy").attr("style", "display:none"); + const cy = cytoscape2({ + container: document.getElementById("cy"), + // container to render in + style: [ + { + selector: "edge", + style: { + "curve-style": "bezier" + } + } + ] + }); + renderEl.remove(); + addNodes(data5.nodes, cy); + addEdges(data5.edges, cy); + cy.nodes().forEach(function(n2) { + n2.layoutDimensions = () => { + const nodeData2 = n2.data(); + return { w: nodeData2.width, h: nodeData2.height }; + }; + }); + const layoutConfig = { + name: "cose-bilkent", + // @ts-ignore Types for cose-bilkent are not correct? + quality: "proof", + styleEnabled: false, + animate: false + }; + cy.layout(layoutConfig).run(); + cy.ready((e3) => { + log.info("Cytoscape ready", e3); + resolve2(cy); + }); + }); + } + function extractPositionedNodes(cy) { + return cy.nodes().map((node2) => { + const data5 = node2.data(); + const position5 = node2.position(); + const positionedNode = { + id: data5.id, + x: position5.x, + y: position5.y + }; + Object.keys(data5).forEach((key) => { + if (key !== "id") { + positionedNode[key] = data5[key]; + } + }); + return positionedNode; + }); + } + function extractPositionedEdges(cy) { + return cy.edges().map((edge) => { + const data5 = edge.data(); + const rscratch = edge._private.rscratch; + const positionedEdge = { + id: data5.id, + source: data5.source, + target: data5.target, + startX: rscratch.startX, + startY: rscratch.startY, + midX: rscratch.midX, + midY: rscratch.midY, + endX: rscratch.endX, + endY: rscratch.endY + }; + Object.keys(data5).forEach((key) => { + if (!["id", "source", "target"].includes(key)) { + positionedEdge[key] = data5[key]; + } + }); + return positionedEdge; + }); + } + var import_cytoscape_cose_bilkent; + var init_cytoscape_setup = __esm({ + "src/rendering-util/layout-algorithms/cose-bilkent/cytoscape-setup.ts"() { "use strict"; - DEFAULT_DIAGRAM_DIRECTION = "TB"; - DEFAULT_NESTED_DOC_DIR = "TB"; - STMT_DIRECTION = "dir"; - STMT_STATE = "state"; - STMT_RELATION = "relation"; - STMT_CLASSDEF = "classDef"; - STMT_STYLEDEF = "style"; - STMT_APPLYCLASS = "applyClass"; - DEFAULT_STATE_TYPE = "default"; - DIVIDER_TYPE = "divider"; - G_EDGE_STYLE = "fill:none"; - G_EDGE_ARROWHEADSTYLE = "fill: #333"; - G_EDGE_LABELPOS = "c"; - G_EDGE_LABELTYPE = "text"; - G_EDGE_THICKNESS = "normal"; - SHAPE_STATE = "rect"; - SHAPE_STATE_WITH_DESC = "rectWithTitle"; - SHAPE_START = "stateStart"; - SHAPE_END = "stateEnd"; - SHAPE_DIVIDER = "divider"; - SHAPE_GROUP = "roundedWithTitle"; - SHAPE_NOTE = "note"; - SHAPE_NOTEGROUP = "noteGroup"; - CSS_DIAGRAM = "statediagram"; - CSS_STATE = "state"; - CSS_DIAGRAM_STATE = `${CSS_DIAGRAM}-${CSS_STATE}`; - CSS_EDGE = "transition"; - CSS_NOTE = "note"; - CSS_NOTE_EDGE = "note-edge"; - CSS_EDGE_NOTE_EDGE = `${CSS_EDGE} ${CSS_NOTE_EDGE}`; - CSS_DIAGRAM_NOTE = `${CSS_DIAGRAM}-${CSS_NOTE}`; - CSS_CLUSTER = "cluster"; - CSS_DIAGRAM_CLUSTER = `${CSS_DIAGRAM}-${CSS_CLUSTER}`; - CSS_CLUSTER_ALT = "cluster-alt"; - CSS_DIAGRAM_CLUSTER_ALT = `${CSS_DIAGRAM}-${CSS_CLUSTER_ALT}`; - PARENT2 = "parent"; - NOTE = "note"; - DOMID_STATE = "state"; - DOMID_TYPE_SPACER = "----"; - NOTE_ID = `${DOMID_TYPE_SPACER}${NOTE}`; - PARENT_ID = `${DOMID_TYPE_SPACER}${PARENT2}`; + init_cytoscape_esm(); + import_cytoscape_cose_bilkent = __toESM(require_cytoscape_cose_bilkent(), 1); + init_src32(); + init_logger(); + cytoscape2.use(import_cytoscape_cose_bilkent.default); + __name(addNodes, "addNodes"); + __name(addEdges, "addEdges"); + __name(createCytoscapeInstance, "createCytoscapeInstance"); + __name(extractPositionedNodes, "extractPositionedNodes"); + __name(extractPositionedEdges, "extractPositionedEdges"); } }); - // src/diagrams/state/dataFetcher.js - function stateDomId(itemId = "", counter2 = 0, type3 = "", typeSpacer = DOMID_TYPE_SPACER) { - const typeStr = type3 !== null && type3.length > 0 ? `${typeSpacer}${type3}` : ""; - return `${DOMID_STATE}-${itemId}${typeStr}-${counter2}`; + // src/rendering-util/layout-algorithms/cose-bilkent/layout.ts + async function executeCoseBilkentLayout(data5, _config) { + log.debug("Starting cose-bilkent layout algorithm"); + try { + validateLayoutData(data5); + const cy = await createCytoscapeInstance(data5); + const positionedNodes = extractPositionedNodes(cy); + const positionedEdges = extractPositionedEdges(cy); + log.debug(`Layout completed: ${positionedNodes.length} nodes, ${positionedEdges.length} edges`); + return { + nodes: positionedNodes, + edges: positionedEdges + }; + } catch (error3) { + log.error("Error in cose-bilkent layout algorithm:", error3); + throw error3; + } } - function insertOrUpdateNode(nodes6, nodeData2, classes3) { - if (!nodeData2.id || nodeData2.id === "" || nodeData2.id === "") { - return; + function validateLayoutData(data5) { + if (!data5) { + throw new Error("Layout data is required"); } - if (nodeData2.cssClasses) { - if (!Array.isArray(nodeData2.cssCompiledStyles)) { - nodeData2.cssCompiledStyles = []; - } - nodeData2.cssClasses.split(" ").forEach((cssClass) => { - if (classes3.get(cssClass)) { - const classDef = classes3.get(cssClass); - nodeData2.cssCompiledStyles = [...nodeData2.cssCompiledStyles, ...classDef.styles]; - } - }); + if (!data5.config) { + throw new Error("Configuration is required in layout data"); } - const existingNodeData = nodes6.find((node2) => node2.id === nodeData2.id); - if (existingNodeData) { - Object.assign(existingNodeData, nodeData2); - } else { - nodes6.push(nodeData2); + if (!data5.rootNode) { + throw new Error("Root node is required"); } + if (!data5.nodes || !Array.isArray(data5.nodes)) { + throw new Error("No nodes found in layout data"); + } + if (!Array.isArray(data5.edges)) { + throw new Error("Edges array is required in layout data"); + } + return true; } - function getClassesFromDbInfo(dbInfoItem) { - return dbInfoItem?.classes?.join(" ") ?? ""; - } - function getStylesFromDbInfo(dbInfoItem) { - return dbInfoItem?.styles ?? []; - } - var nodeDb, graphItemCount, setupDoc, getDir2, dataFetcher, reset2; - var init_dataFetcher = __esm({ - "src/diagrams/state/dataFetcher.js"() { + var init_layout2 = __esm({ + "src/rendering-util/layout-algorithms/cose-bilkent/layout.ts"() { "use strict"; - init_diagramAPI(); init_logger(); - init_common(); - init_stateCommon(); - nodeDb = /* @__PURE__ */ new Map(); - graphItemCount = 0; - __name(stateDomId, "stateDomId"); - setupDoc = /* @__PURE__ */ __name((parentParsedItem, doc, diagramStates, nodes6, edges3, altFlag, look, classes3) => { - log.trace("items", doc); - doc.forEach((item) => { - switch (item.stmt) { - case STMT_STATE: - dataFetcher(parentParsedItem, item, diagramStates, nodes6, edges3, altFlag, look, classes3); - break; - case DEFAULT_STATE_TYPE: - dataFetcher(parentParsedItem, item, diagramStates, nodes6, edges3, altFlag, look, classes3); - break; - case STMT_RELATION: - { - dataFetcher( - parentParsedItem, - item.state1, - diagramStates, - nodes6, - edges3, - altFlag, - look, - classes3 - ); - dataFetcher( - parentParsedItem, - item.state2, - diagramStates, - nodes6, - edges3, - altFlag, - look, - classes3 - ); - const edgeData2 = { - id: "edge" + graphItemCount, - start: item.state1.id, - end: item.state2.id, - arrowhead: "normal", - arrowTypeEnd: "arrow_barb", - style: G_EDGE_STYLE, - labelStyle: "", - label: common_default.sanitizeText(item.description, getConfig2()), - arrowheadStyle: G_EDGE_ARROWHEADSTYLE, - labelpos: G_EDGE_LABELPOS, - labelType: G_EDGE_LABELTYPE, - thickness: G_EDGE_THICKNESS, - classes: CSS_EDGE, - look - }; - edges3.push(edgeData2); - graphItemCount++; - } - break; - } - }); - }, "setupDoc"); - getDir2 = /* @__PURE__ */ __name((parsedItem, defaultDir = DEFAULT_NESTED_DOC_DIR) => { - let dir2 = defaultDir; - if (parsedItem.doc) { - for (const parsedItemDoc of parsedItem.doc) { - if (parsedItemDoc.stmt === "dir") { - dir2 = parsedItemDoc.value; + init_cytoscape_setup(); + __name(executeCoseBilkentLayout, "executeCoseBilkentLayout"); + __name(validateLayoutData, "validateLayoutData"); + } + }); + + // src/rendering-util/layout-algorithms/cose-bilkent/render.ts + var render4; + var init_render = __esm({ + "src/rendering-util/layout-algorithms/cose-bilkent/render.ts"() { + "use strict"; + init_layout2(); + render4 = /* @__PURE__ */ __name(async (data4Layout, svg2, { + insertCluster: insertCluster2, + insertEdge: insertEdge3, + insertEdgeLabel: insertEdgeLabel3, + insertMarkers: insertMarkers4, + insertNode: insertNode3, + log: log3, + positionEdgeLabel: positionEdgeLabel3 + }, { algorithm: _algorithm }) => { + const nodeDb2 = {}; + const clusterDb2 = {}; + const element3 = svg2.select("g"); + insertMarkers4(element3, data4Layout.markers, data4Layout.type, data4Layout.diagramId); + const subGraphsEl = element3.insert("g").attr("class", "subgraphs"); + const edgePaths = element3.insert("g").attr("class", "edgePaths"); + const edgeLabels3 = element3.insert("g").attr("class", "edgeLabels"); + const nodes5 = element3.insert("g").attr("class", "nodes"); + log3.debug("Inserting nodes into DOM for dimension calculation"); + await Promise.all( + data4Layout.nodes.map(async (node2) => { + if (node2.isGroup) { + const clusterNode = { ...node2 }; + clusterDb2[node2.id] = clusterNode; + nodeDb2[node2.id] = clusterNode; + await insertCluster2(subGraphsEl, node2); + } else { + const nodeWithPosition = { ...node2 }; + nodeDb2[node2.id] = nodeWithPosition; + const nodeEl = await insertNode3(nodes5, node2, { + config: data4Layout.config, + dir: data4Layout.direction || "TB" + }); + const boundingBox3 = nodeEl.node().getBBox(); + nodeWithPosition.width = boundingBox3.width; + nodeWithPosition.height = boundingBox3.height; + nodeWithPosition.domId = nodeEl; + log3.debug(`Node ${node2.id} dimensions: ${boundingBox3.width}x${boundingBox3.height}`); } + }) + ); + log3.debug("Running cose-bilkent layout algorithm"); + const updatedLayoutData = { + ...data4Layout, + nodes: data4Layout.nodes.map((node2) => { + const nodeWithDimensions = nodeDb2[node2.id]; + return { + ...node2, + width: nodeWithDimensions.width, + height: nodeWithDimensions.height + }; + }) + }; + const layoutResult = await executeCoseBilkentLayout(updatedLayoutData, data4Layout.config); + log3.debug("Positioning nodes based on layout results"); + layoutResult.nodes.forEach((positionedNode) => { + const node2 = nodeDb2[positionedNode.id]; + if (node2?.domId) { + node2.domId.attr( + "transform", + `translate(${positionedNode.x}, ${positionedNode.y})` + ); + node2.x = positionedNode.x; + node2.y = positionedNode.y; + log3.debug(`Positioned node ${node2.id} at center (${positionedNode.x}, ${positionedNode.y})`); } - } - return dir2; - }, "getDir"); - __name(insertOrUpdateNode, "insertOrUpdateNode"); - __name(getClassesFromDbInfo, "getClassesFromDbInfo"); - __name(getStylesFromDbInfo, "getStylesFromDbInfo"); - dataFetcher = /* @__PURE__ */ __name((parent4, parsedItem, diagramStates, nodes6, edges3, altFlag, look, classes3) => { - const itemId = parsedItem.id; - const dbState = diagramStates.get(itemId); - const classStr = getClassesFromDbInfo(dbState); - const style3 = getStylesFromDbInfo(dbState); - log.info("dataFetcher parsedItem", parsedItem, dbState, style3); - if (itemId !== "root") { - let shape = SHAPE_STATE; - if (parsedItem.start === true) { - shape = SHAPE_START; - } else if (parsedItem.start === false) { - shape = SHAPE_END; - } - if (parsedItem.type !== DEFAULT_STATE_TYPE) { - shape = parsedItem.type; - } - if (!nodeDb.get(itemId)) { - nodeDb.set(itemId, { - id: itemId, - shape, - description: common_default.sanitizeText(itemId, getConfig2()), - cssClasses: `${classStr} ${CSS_DIAGRAM_STATE}`, - cssStyles: style3 - }); + }); + layoutResult.edges.forEach((positionedEdge) => { + const edge = data4Layout.edges.find((e3) => e3.id === positionedEdge.id); + if (edge) { + edge.points = [ + { x: positionedEdge.startX, y: positionedEdge.startY }, + { x: positionedEdge.midX, y: positionedEdge.midY }, + { x: positionedEdge.endX, y: positionedEdge.endY } + ]; } - const newNode = nodeDb.get(itemId); - if (parsedItem.description) { - if (Array.isArray(newNode.description)) { - newNode.shape = SHAPE_STATE_WITH_DESC; - newNode.description.push(parsedItem.description); - } else { - if (newNode.description?.length > 0) { - newNode.shape = SHAPE_STATE_WITH_DESC; - if (newNode.description === itemId) { - newNode.description = [parsedItem.description]; - } else { - newNode.description = [newNode.description, parsedItem.description]; - } + }); + log3.debug("Inserting and positioning edges"); + await Promise.all( + data4Layout.edges.map(async (edge) => { + const _edgeLabel = await insertEdgeLabel3(edgeLabels3, edge); + const startNode = nodeDb2[edge.start ?? ""]; + const endNode = nodeDb2[edge.end ?? ""]; + if (startNode && endNode) { + const positionedEdge = layoutResult.edges.find((e3) => e3.id === edge.id); + if (positionedEdge) { + log3.debug("APA01 positionedEdge", positionedEdge); + const edgeWithPath = { ...edge }; + const paths = insertEdge3( + edgePaths, + edgeWithPath, + clusterDb2, + data4Layout.type, + startNode, + endNode, + data4Layout.diagramId + ); + positionEdgeLabel3(edgeWithPath, paths); } else { - newNode.shape = SHAPE_STATE; - newNode.description = parsedItem.description; + const edgeWithPath = { + ...edge, + points: [ + { x: startNode.x || 0, y: startNode.y || 0 }, + { x: endNode.x || 0, y: endNode.y || 0 } + ] + }; + const paths = insertEdge3( + edgePaths, + edgeWithPath, + clusterDb2, + data4Layout.type, + startNode, + endNode, + data4Layout.diagramId + ); + positionEdgeLabel3(edgeWithPath, paths); } } - newNode.description = common_default.sanitizeTextOrArray(newNode.description, getConfig2()); - } - if (newNode.description?.length === 1 && newNode.shape === SHAPE_STATE_WITH_DESC) { - if (newNode.type === "group") { - newNode.shape = SHAPE_GROUP; - } else { - newNode.shape = SHAPE_STATE; - } - } - if (!newNode.type && parsedItem.doc) { - log.info("Setting cluster for XCX", itemId, getDir2(parsedItem)); - newNode.type = "group"; - newNode.isGroup = true; - newNode.dir = getDir2(parsedItem); - newNode.shape = parsedItem.type === DIVIDER_TYPE ? SHAPE_DIVIDER : SHAPE_GROUP; - newNode.cssClasses = `${newNode.cssClasses} ${CSS_DIAGRAM_CLUSTER} ${altFlag ? CSS_DIAGRAM_CLUSTER_ALT : ""}`; - } - const nodeData2 = { - labelStyle: "", - shape: newNode.shape, - label: newNode.description, - cssClasses: newNode.cssClasses, - cssCompiledStyles: [], - cssStyles: newNode.cssStyles, - id: itemId, - dir: newNode.dir, - domId: stateDomId(itemId, graphItemCount), - type: newNode.type, - isGroup: newNode.type === "group", - padding: 8, - rx: 10, - ry: 10, - look - }; - if (nodeData2.shape === SHAPE_DIVIDER) { - nodeData2.label = ""; - } - if (parent4 && parent4.id !== "root") { - log.trace("Setting node ", itemId, " to be child of its parent ", parent4.id); - nodeData2.parentId = parent4.id; - } - nodeData2.centerLabel = true; - if (parsedItem.note) { - const noteData = { - labelStyle: "", - shape: SHAPE_NOTE, - label: parsedItem.note.text, - cssClasses: CSS_DIAGRAM_NOTE, - // useHtmlLabels: false, - cssStyles: [], - cssCompilesStyles: [], - id: itemId + NOTE_ID + "-" + graphItemCount, - domId: stateDomId(itemId, graphItemCount, NOTE), - type: newNode.type, - isGroup: newNode.type === "group", - padding: getConfig2().flowchart.padding, - look, - position: parsedItem.note.position - }; - const parentNodeId = itemId + PARENT_ID; - const groupData = { - labelStyle: "", - shape: SHAPE_NOTEGROUP, - label: parsedItem.note.text, - cssClasses: newNode.cssClasses, - cssStyles: [], - id: itemId + PARENT_ID, - domId: stateDomId(itemId, graphItemCount, PARENT2), - type: "group", - isGroup: true, - padding: 16, - //getConfig().flowchart.padding - look, - position: parsedItem.note.position - }; - graphItemCount++; - groupData.id = parentNodeId; - noteData.parentId = parentNodeId; - insertOrUpdateNode(nodes6, groupData, classes3); - insertOrUpdateNode(nodes6, noteData, classes3); - insertOrUpdateNode(nodes6, nodeData2, classes3); - let from2 = itemId; - let to = noteData.id; - if (parsedItem.note.position === "left of") { - from2 = noteData.id; - to = itemId; + }) + ); + log3.debug("Cose-bilkent rendering completed"); + }, "render"); + } + }); + + // src/rendering-util/layout-algorithms/cose-bilkent/index.ts + var cose_bilkent_exports = {}; + __export(cose_bilkent_exports, { + render: () => render5 + }); + var render5; + var init_cose_bilkent = __esm({ + "src/rendering-util/layout-algorithms/cose-bilkent/index.ts"() { + "use strict"; + init_render(); + render5 = render4; + } + }); + + // src/rendering-util/render.ts + var layoutAlgorithms, registerLayoutLoaders, registerDefaultLayoutLoaders, render6, getRegisteredLayoutAlgorithm; + var init_render2 = __esm({ + "src/rendering-util/render.ts"() { + "use strict"; + init_internals(); + init_logger(); + layoutAlgorithms = {}; + registerLayoutLoaders = /* @__PURE__ */ __name((loaders) => { + for (const loader29 of loaders) { + layoutAlgorithms[loader29.name] = loader29; + } + }, "registerLayoutLoaders"); + registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => { + registerLayoutLoaders([ + { + name: "dagre", + loader: /* @__PURE__ */ __name(async () => await Promise.resolve().then(() => (init_dagre2(), dagre_exports)), "loader") + }, + ...true ? [ + { + name: "cose-bilkent", + loader: /* @__PURE__ */ __name(async () => await Promise.resolve().then(() => (init_cose_bilkent(), cose_bilkent_exports)), "loader") } - edges3.push({ - id: from2 + "-" + to, - start: from2, - end: to, - arrowhead: "none", - arrowTypeEnd: "", - style: G_EDGE_STYLE, - labelStyle: "", - classes: CSS_EDGE_NOTE_EDGE, - arrowheadStyle: G_EDGE_ARROWHEADSTYLE, - labelpos: G_EDGE_LABELPOS, - labelType: G_EDGE_LABELTYPE, - thickness: G_EDGE_THICKNESS, - look - }); - } else { - insertOrUpdateNode(nodes6, nodeData2, classes3); - } + ] : [] + ]); + }, "registerDefaultLayoutLoaders"); + registerDefaultLayoutLoaders(); + render6 = /* @__PURE__ */ __name(async (data4Layout, svg2) => { + if (!(data4Layout.layoutAlgorithm in layoutAlgorithms)) { + throw new Error(`Unknown layout algorithm: ${data4Layout.layoutAlgorithm}`); } - if (parsedItem.doc) { - log.trace("Adding nodes children "); - setupDoc(parsedItem, parsedItem.doc, diagramStates, nodes6, edges3, !altFlag, look, classes3); + const layoutDefinition = layoutAlgorithms[data4Layout.layoutAlgorithm]; + const layoutRenderer = await layoutDefinition.loader(); + return layoutRenderer.render(data4Layout, svg2, internalHelpers, { + algorithm: layoutDefinition.algorithm + }); + }, "render"); + getRegisteredLayoutAlgorithm = /* @__PURE__ */ __name((algorithm = "", { fallback = "dagre" } = {}) => { + if (algorithm in layoutAlgorithms) { + return algorithm; } - }, "dataFetcher"); - reset2 = /* @__PURE__ */ __name(() => { - nodeDb.clear(); - graphItemCount = 0; - }, "reset"); + if (fallback in layoutAlgorithms) { + log.warn(`Layout algorithm ${algorithm} is not registered. Using ${fallback} as fallback.`); + return fallback; + } + throw new Error(`Both layout algorithms ${algorithm} and ${fallback} are not registered.`); + }, "getRegisteredLayoutAlgorithm"); } }); - // src/diagrams/state/stateRenderer-v3-unified.ts - var getDir3, getClasses3, draw13, stateRenderer_v3_unified_default; - var init_stateRenderer_v3_unified = __esm({ - "src/diagrams/state/stateRenderer-v3-unified.ts"() { + // src/rendering-util/setupViewPortForSVG.ts + var setupViewPortForSVG, calculateDimensionsWithPadding, createViewBox; + var init_setupViewPortForSVG = __esm({ + "src/rendering-util/setupViewPortForSVG.ts"() { + "use strict"; + init_setupGraphViewbox(); + init_logger(); + setupViewPortForSVG = /* @__PURE__ */ __name((svg2, padding2, cssDiagram, useMaxWidth) => { + svg2.attr("class", cssDiagram); + const { width: width3, height: height2, x: x5, y: y6 } = calculateDimensionsWithPadding(svg2, padding2); + configureSvgSize(svg2, height2, width3, useMaxWidth); + const viewBox = createViewBox(x5, y6, width3, height2, padding2); + svg2.attr("viewBox", viewBox); + log.debug(`viewBox configured: ${viewBox} with padding: ${padding2}`); + }, "setupViewPortForSVG"); + calculateDimensionsWithPadding = /* @__PURE__ */ __name((svg2, padding2) => { + const bounds4 = svg2.node()?.getBBox() || { width: 0, height: 0, x: 0, y: 0 }; + return { + width: bounds4.width + padding2 * 2, + height: bounds4.height + padding2 * 2, + x: bounds4.x, + y: bounds4.y + }; + }, "calculateDimensionsWithPadding"); + createViewBox = /* @__PURE__ */ __name((x5, y6, width3, height2, padding2) => { + return `${x5 - padding2} ${y6 - padding2} ${width3} ${height2}`; + }, "createViewBox"); + } + }); + + // src/diagrams/flowchart/flowRenderer-v3-unified.ts + var getClasses, draw2, flowRenderer_v3_unified_default; + var init_flowRenderer_v3_unified = __esm({ + "src/diagrams/flowchart/flowRenderer-v3-unified.ts"() { "use strict"; + init_src32(); init_diagramAPI(); init_logger(); init_insertElementsForSize(); - init_render(); + init_render2(); init_setupViewPortForSVG(); init_utils2(); - init_stateCommon(); - getDir3 = /* @__PURE__ */ __name((parsedItem, defaultDir = DEFAULT_NESTED_DOC_DIR) => { - if (!parsedItem.doc) { - return defaultDir; - } - let dir2 = defaultDir; - for (const parsedItemDoc of parsedItem.doc) { - if (parsedItemDoc.stmt === "dir") { - dir2 = parsedItemDoc.value; - } - } - return dir2; - }, "getDir"); - getClasses3 = /* @__PURE__ */ __name(function(text4, diagramObj) { + getClasses = /* @__PURE__ */ __name(function(text4, diagramObj) { return diagramObj.db.getClasses(); }, "getClasses"); - draw13 = /* @__PURE__ */ __name(async function(text4, id29, _version, diag) { + draw2 = /* @__PURE__ */ __name(async function(text4, id30, _version, diag) { log.info("REF0:"); - log.info("Drawing state diagram (v2)", id29); - const { securityLevel, state: conf5, layout: layout6 } = getConfig2(); - diag.db.extract(diag.db.getRootDocV2()); + log.info("Drawing state diagram (v2)", id30); + const { securityLevel, flowchart: conf5, layout: layout6 } = getConfig2(); + let sandboxElement; + if (securityLevel === "sandbox") { + sandboxElement = select_default2("#i" + id30); + } + const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document; + log.debug("Before getData: "); const data4Layout = diag.db.getData(); - const svg2 = getDiagramElement(id29, securityLevel); + log.debug("Data: ", data4Layout); + const svg2 = getDiagramElement(id30, securityLevel); + const direction = diag.db.getDirection(); data4Layout.type = diag.type; - data4Layout.layoutAlgorithm = layout6; + data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout6); + if (data4Layout.layoutAlgorithm === "dagre" && layout6 === "elk") { + log.warn( + "flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback." + ); + } + data4Layout.direction = direction; data4Layout.nodeSpacing = conf5?.nodeSpacing || 50; data4Layout.rankSpacing = conf5?.rankSpacing || 50; - data4Layout.markers = ["barb"]; - data4Layout.diagramId = id29; - await render4(data4Layout, svg2); - const padding2 = 8; + data4Layout.markers = ["point", "circle", "cross"]; + data4Layout.diagramId = id30; + log.debug("REF1:", data4Layout); + await render6(data4Layout, svg2); + const padding2 = data4Layout.config.flowchart?.diagramPadding ?? 8; utils_default2.insertTitle( svg2, - "statediagramTitleText", - conf5?.titleTopMargin ?? 25, + "flowchartTitleText", + conf5?.titleTopMargin || 0, diag.db.getDiagramTitle() ); - setupViewPortForSVG(svg2, padding2, CSS_DIAGRAM, conf5?.useMaxWidth ?? true); + setupViewPortForSVG(svg2, padding2, "flowchart", conf5?.useMaxWidth || false); + for (const vertex of data4Layout.nodes) { + const node2 = select_default2(`#${id30} [id="${vertex.id}"]`); + if (!node2 || !vertex.link) { + continue; + } + const link2 = doc.createElementNS("http://www.w3.org/2000/svg", "a"); + link2.setAttributeNS("http://www.w3.org/2000/svg", "class", vertex.cssClasses); + link2.setAttributeNS("http://www.w3.org/2000/svg", "rel", "noopener"); + if (securityLevel === "sandbox") { + link2.setAttributeNS("http://www.w3.org/2000/svg", "target", "_top"); + } else if (vertex.linkTarget) { + link2.setAttributeNS("http://www.w3.org/2000/svg", "target", vertex.linkTarget); + } + const linkNode = node2.insert(function() { + return link2; + }, ":first-child"); + const shape = node2.select(".label-container"); + if (shape) { + linkNode.append(function() { + return shape.node(); + }); + } + const label = node2.select(".label"); + if (label) { + linkNode.append(function() { + return label.node(); + }); + } + } }, "draw"); - stateRenderer_v3_unified_default = { - getClasses: getClasses3, - draw: draw13, - getDir: getDir3 + flowRenderer_v3_unified_default = { + getClasses, + draw: draw2 }; } }); - // src/diagrams/state/stateDb.js - function newClassesList() { - return /* @__PURE__ */ new Map(); - } - var START_NODE, START_TYPE, END_NODE, END_TYPE, COLOR_KEYWORD, FILL_KEYWORD, BG_FILL, STYLECLASS_SEP, newDoc, clone3, StateDB; - var init_stateDb = __esm({ - "src/diagrams/state/stateDb.js"() { + // src/diagrams/flowchart/parser/flow.jison + var parser2, flow_default; + var init_flow = __esm({ + "src/diagrams/flowchart/parser/flow.jison"() { "use strict"; - init_diagramAPI(); - init_logger(); - init_utils2(); - init_common(); - init_commonDb(); - init_dataFetcher(); - init_stateRenderer_v3_unified(); - init_stateCommon(); - START_NODE = "[*]"; - START_TYPE = "start"; - END_NODE = START_NODE; - END_TYPE = "end"; - COLOR_KEYWORD = "color"; - FILL_KEYWORD = "fill"; - BG_FILL = "bgFill"; - STYLECLASS_SEP = ","; - __name(newClassesList, "newClassesList"); - newDoc = /* @__PURE__ */ __name(() => { - return { - /** @type {{ id1: string, id2: string, relationTitle: string }[]} */ - relations: [], - states: /* @__PURE__ */ new Map(), - documents: {} - }; - }, "newDoc"); - clone3 = /* @__PURE__ */ __name((o2) => JSON.parse(JSON.stringify(o2)), "clone"); - StateDB = class { - static { - __name(this, "StateDB"); - } - /** - * @param {1 | 2} version - v1 renderer or v2 renderer. - */ - constructor(version2) { - this.clear(); - this.version = version2; - this.setRootDoc = this.setRootDoc.bind(this); - this.getDividerId = this.getDividerId.bind(this); - this.setDirection = this.setDirection.bind(this); - this.trimColon = this.trimColon.bind(this); - } - /** - * @private - * @type {1 | 2} - */ - version; - /** - * @private - * @type {Array} - */ - nodes = []; - /** - * @private - * @type {Array} - */ - edges = []; - /** - * @private - * @type {Array} - */ - rootDoc = []; - /** - * @private - * @type {Map} - */ - classes = newClassesList(); - // style classes defined by a classDef - /** - * @private - * @type {Object} - */ - documents = { - root: newDoc() - }; - /** - * @private - * @type {Object} - */ - currentDocument = this.documents.root; - /** - * @private - * @type {number} - */ - startEndCount = 0; - /** - * @private - * @type {number} - */ - dividerCnt = 0; - static relationType = { - AGGREGATION: 0, - EXTENSION: 1, - COMPOSITION: 2, - DEPENDENCY: 3 - }; - setRootDoc(o2) { - log.info("Setting root doc", o2); - this.rootDoc = o2; - if (this.version === 1) { - this.extract(o2); - } else { - this.extract(this.getRootDocV2()); - } - } - getRootDoc() { - return this.rootDoc; - } - /** - * @private - * @param {Object} parent - * @param {Object} node - * @param {boolean} first - */ - docTranslator(parent4, node2, first3) { - if (node2.stmt === STMT_RELATION) { - this.docTranslator(parent4, node2.state1, true); - this.docTranslator(parent4, node2.state2, false); - } else { - if (node2.stmt === STMT_STATE) { - if (node2.id === "[*]") { - node2.id = first3 ? parent4.id + "_start" : parent4.id + "_end"; - node2.start = first3; - } else { - node2.id = node2.id.trim(); - } - } - if (node2.doc) { - const doc = []; - let currentDoc = []; - let i2; - for (i2 = 0; i2 < node2.doc.length; i2++) { - if (node2.doc[i2].type === DIVIDER_TYPE) { - const newNode = clone3(node2.doc[i2]); - newNode.doc = clone3(currentDoc); - doc.push(newNode); - currentDoc = []; - } else { - currentDoc.push(node2.doc[i2]); - } - } - if (doc.length > 0 && currentDoc.length > 0) { - const newNode = { - stmt: STMT_STATE, - id: generateId(), - type: "divider", - doc: clone3(currentDoc) - }; - doc.push(clone3(newNode)); - node2.doc = doc; - } - node2.doc.forEach((docNode) => this.docTranslator(node2, docNode, true)); - } - } - } - /** - * @private - */ - getRootDocV2() { - this.docTranslator({ id: "root" }, { id: "root", doc: this.rootDoc }, true); - return { id: "root", doc: this.rootDoc }; - } - /** - * Convert all of the statements (stmts) that were parsed into states and relationships. - * This is done because a state diagram may have nested sections, - * where each section is a 'document' and has its own set of statements. - * Ex: the section within a fork has its own statements, and incoming and outgoing statements - * refer to the fork as a whole (document). - * See the parser grammar: the definition of a document is a document then a 'line', where a line can be a statement. - * This will push the statement into the list of statements for the current document. - * @private - * @param _doc - */ - extract(_doc) { - let doc; - if (_doc.doc) { - doc = _doc.doc; - } else { - doc = _doc; - } - log.info(doc); - this.clear(true); - log.info("Extract initial document:", doc); - doc.forEach((item) => { - log.warn("Statement", item.stmt); - switch (item.stmt) { - case STMT_STATE: - this.addState( - item.id.trim(), - item.type, - item.doc, - item.description, - item.note, - item.classes, - item.styles, - item.textStyles - ); - break; - case STMT_RELATION: - this.addRelation(item.state1, item.state2, item.description); - break; - case STMT_CLASSDEF: - this.addStyleClass(item.id.trim(), item.classes); - break; - case STMT_STYLEDEF: - { - const ids = item.id.trim().split(","); - const styles4 = item.styleClass.split(","); - ids.forEach((id29) => { - let foundState = this.getState(id29); - if (foundState === void 0) { - const trimmedId = id29.trim(); - this.addState(trimmedId); - foundState = this.getState(trimmedId); - } - foundState.styles = styles4.map((s2) => s2.replace(/;/g, "")?.trim()); - }); - } - break; - case STMT_APPLYCLASS: - this.setCssClass(item.id.trim(), item.styleClass); - break; - } - }); - const diagramStates = this.getStates(); - const config5 = getConfig2(); - const look = config5.look; - reset2(); - dataFetcher( - void 0, - this.getRootDocV2(), - diagramStates, - this.nodes, - this.edges, - true, - look, - this.classes - ); - this.nodes.forEach((node2) => { - if (Array.isArray(node2.label)) { - node2.description = node2.label.slice(1); - if (node2.isGroup && node2.description.length > 0) { - throw new Error( - "Group nodes can only have label. Remove the additional description for node [" + node2.id + "]" - ); - } - node2.label = node2.label[0]; - } - }); - } - /** - * Function called by parser when a node definition has been found. - * - * @param {null | string} id - * @param {null | string} type - * @param {null | string} doc - * @param {null | string | string[]} descr - description for the state. Can be a string or a list or strings - * @param {null | string} note - * @param {null | string | string[]} classes - class styles to apply to this state. Can be a string (1 style) or an array of styles. If it's just 1 class, convert it to an array of that 1 class. - * @param {null | string | string[]} styles - styles to apply to this state. Can be a string (1 style) or an array of styles. If it's just 1 style, convert it to an array of that 1 style. - * @param {null | string | string[]} textStyles - text styles to apply to this state. Can be a string (1 text test) or an array of text styles. If it's just 1 text style, convert it to an array of that 1 text style. - */ - addState(id29, type3 = DEFAULT_STATE_TYPE, doc = null, descr = null, note3 = null, classes3 = null, styles4 = null, textStyles = null) { - const trimmedId = id29?.trim(); - if (!this.currentDocument.states.has(trimmedId)) { - log.info("Adding state ", trimmedId, descr); - this.currentDocument.states.set(trimmedId, { - id: trimmedId, - descriptions: [], - type: type3, - doc, - note: note3, - classes: [], - styles: [], - textStyles: [] - }); - } else { - if (!this.currentDocument.states.get(trimmedId).doc) { - this.currentDocument.states.get(trimmedId).doc = doc; - } - if (!this.currentDocument.states.get(trimmedId).type) { - this.currentDocument.states.get(trimmedId).type = type3; - } - } - if (descr) { - log.info("Setting state description", trimmedId, descr); - if (typeof descr === "string") { - this.addDescription(trimmedId, descr.trim()); - } - if (typeof descr === "object") { - descr.forEach((des) => this.addDescription(trimmedId, des.trim())); - } - } - if (note3) { - const doc2 = this.currentDocument.states.get(trimmedId); - doc2.note = note3; - doc2.note.text = common_default.sanitizeText(doc2.note.text, getConfig2()); - } - if (classes3) { - log.info("Setting state classes", trimmedId, classes3); - const classesList = typeof classes3 === "string" ? [classes3] : classes3; - classesList.forEach((cssClass) => this.setCssClass(trimmedId, cssClass.trim())); - } - if (styles4) { - log.info("Setting state styles", trimmedId, styles4); - const stylesList = typeof styles4 === "string" ? [styles4] : styles4; - stylesList.forEach((style3) => this.setStyle(trimmedId, style3.trim())); - } - if (textStyles) { - log.info("Setting state styles", trimmedId, styles4); - const textStylesList = typeof textStyles === "string" ? [textStyles] : textStyles; - textStylesList.forEach((textStyle) => this.setTextStyle(trimmedId, textStyle.trim())); - } - } - clear(saveCommon) { - this.nodes = []; - this.edges = []; - this.documents = { - root: newDoc() - }; - this.currentDocument = this.documents.root; - this.startEndCount = 0; - this.classes = newClassesList(); - if (!saveCommon) { - clear(); - } - } - getState(id29) { - return this.currentDocument.states.get(id29); - } - getStates() { - return this.currentDocument.states; - } - logDocuments() { - log.info("Documents = ", this.documents); - } - getRelations() { - return this.currentDocument.relations; - } - /** - * If the id is a start node ( [*] ), then return a new id constructed from - * the start node name and the current start node count. - * else return the given id - * - * @param {string} id - * @returns {string} - the id (original or constructed) - * @private - */ - startIdIfNeeded(id29 = "") { - let fixedId = id29; - if (id29 === START_NODE) { - this.startEndCount++; - fixedId = `${START_TYPE}${this.startEndCount}`; - } - return fixedId; - } - /** - * If the id is a start node ( [*] ), then return the start type ('start') - * else return the given type - * - * @param {string} id - * @param {string} type - * @returns {string} - the type that should be used - * @private - */ - startTypeIfNeeded(id29 = "", type3 = DEFAULT_STATE_TYPE) { - return id29 === START_NODE ? START_TYPE : type3; - } - /** - * If the id is an end node ( [*] ), then return a new id constructed from - * the end node name and the current start_end node count. - * else return the given id - * - * @param {string} id - * @returns {string} - the id (original or constructed) - * @private - */ - endIdIfNeeded(id29 = "") { - let fixedId = id29; - if (id29 === END_NODE) { - this.startEndCount++; - fixedId = `${END_TYPE}${this.startEndCount}`; - } - return fixedId; - } - /** - * If the id is an end node ( [*] ), then return the end type - * else return the given type - * - * @param {string} id - * @param {string} type - * @returns {string} - the type that should be used - * @private - */ - endTypeIfNeeded(id29 = "", type3 = DEFAULT_STATE_TYPE) { - return id29 === END_NODE ? END_TYPE : type3; - } - /** - * - * @param item1 - * @param item2 - * @param relationTitle - */ - addRelationObjs(item1, item2, relationTitle) { - let id1 = this.startIdIfNeeded(item1.id.trim()); - let type1 = this.startTypeIfNeeded(item1.id.trim(), item1.type); - let id29 = this.startIdIfNeeded(item2.id.trim()); - let type22 = this.startTypeIfNeeded(item2.id.trim(), item2.type); - this.addState( - id1, - type1, - item1.doc, - item1.description, - item1.note, - item1.classes, - item1.styles, - item1.textStyles - ); - this.addState( - id29, - type22, - item2.doc, - item2.description, - item2.note, - item2.classes, - item2.styles, - item2.textStyles - ); - this.currentDocument.relations.push({ - id1, - id2: id29, - relationTitle: common_default.sanitizeText(relationTitle, getConfig2()) - }); - } - /** - * Add a relation between two items. The items may be full objects or just the string id of a state. - * - * @param {string | object} item1 - * @param {string | object} item2 - * @param {string} title - */ - addRelation(item1, item2, title2) { - if (typeof item1 === "object") { - this.addRelationObjs(item1, item2, title2); - } else { - const id1 = this.startIdIfNeeded(item1.trim()); - const type1 = this.startTypeIfNeeded(item1); - const id29 = this.endIdIfNeeded(item2.trim()); - const type22 = this.endTypeIfNeeded(item2); - this.addState(id1, type1); - this.addState(id29, type22); - this.currentDocument.relations.push({ - id1, - id2: id29, - title: common_default.sanitizeText(title2, getConfig2()) - }); - } - } - addDescription(id29, descr) { - const theState = this.currentDocument.states.get(id29); - const _descr = descr.startsWith(":") ? descr.replace(":", "").trim() : descr; - theState.descriptions.push(common_default.sanitizeText(_descr, getConfig2())); - } - cleanupLabel(label) { - if (label.substring(0, 1) === ":") { - return label.substr(2).trim(); - } else { - return label.trim(); - } - } - getDividerId() { - this.dividerCnt++; - return "divider-id-" + this.dividerCnt; - } - /** - * Called when the parser comes across a (style) class definition - * @example classDef my-style fill:#f96; - * - * @param {string} id - the id of this (style) class - * @param {string | null} styleAttributes - the string with 1 or more style attributes (each separated by a comma) - */ - addStyleClass(id29, styleAttributes = "") { - if (!this.classes.has(id29)) { - this.classes.set(id29, { id: id29, styles: [], textStyles: [] }); - } - const foundClass = this.classes.get(id29); - if (styleAttributes !== void 0 && styleAttributes !== null) { - styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => { - const fixedAttrib = attrib.replace(/([^;]*);/, "$1").trim(); - if (RegExp(COLOR_KEYWORD).exec(attrib)) { - const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL); - const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD); - foundClass.textStyles.push(newStyle2); - } - foundClass.styles.push(fixedAttrib); - }); - } - } - /** - * Return all of the style classes - * @returns {{} | any | classes} - */ - getClasses() { - return this.classes; - } - /** - * Add a (style) class or css class to a state with the given id. - * If the state isn't already in the list of known states, add it. - * Might be called by parser when a style class or CSS class should be applied to a state - * - * @param {string | string[]} itemIds The id or a list of ids of the item(s) to apply the css class to - * @param {string} cssClassName CSS class name - */ - setCssClass(itemIds, cssClassName) { - itemIds.split(",").forEach((id29) => { - let foundState = this.getState(id29); - if (foundState === void 0) { - const trimmedId = id29.trim(); - this.addState(trimmedId); - foundState = this.getState(trimmedId); - } - foundState.classes.push(cssClassName); - }); - } - /** - * Add a style to a state with the given id. - * @example style stateId fill:#f9f,stroke:#333,stroke-width:4px - * where 'style' is the keyword - * stateId is the id of a state - * the rest of the string is the styleText (all of the attributes to be applied to the state) - * - * @param itemId The id of item to apply the style to - * @param styleText - the text of the attributes for the style - */ - setStyle(itemId, styleText) { - const item = this.getState(itemId); - if (item !== void 0) { - item.styles.push(styleText); - } - } - /** - * Add a text style to a state with the given id - * - * @param itemId The id of item to apply the css class to - * @param cssClassName CSS class name - */ - setTextStyle(itemId, cssClassName) { - const item = this.getState(itemId); - if (item !== void 0) { - item.textStyles.push(cssClassName); - } - } - /** - * Finds the direction statement in the root document. - * @private - * @returns {{ value: string } | undefined} - the direction statement if present - */ - getDirectionStatement() { - return this.rootDoc.find((doc) => doc.stmt === STMT_DIRECTION); - } - getDirection() { - return this.getDirectionStatement()?.value ?? DEFAULT_DIAGRAM_DIRECTION; - } - setDirection(dir2) { - const doc = this.getDirectionStatement(); - if (doc) { - doc.value = dir2; - } else { - this.rootDoc.unshift({ stmt: STMT_DIRECTION, value: dir2 }); - } - } - trimColon(str2) { - return str2 && str2[0] === ":" ? str2.substr(1).trim() : str2.trim(); - } - getData() { - const config5 = getConfig2(); - return { - nodes: this.nodes, - edges: this.edges, - other: {}, - config: config5, - direction: getDir3(this.getRootDocV2()) - }; - } - getConfig() { - return getConfig2().state; - } - getAccTitle = getAccTitle; - setAccTitle = setAccTitle; - getAccDescription = getAccDescription; - setAccDescription = setAccDescription; - setDiagramTitle = setDiagramTitle; - getDiagramTitle = getDiagramTitle; - }; - } - }); - - // src/diagrams/state/styles.js - var getStyles11, styles_default10; - var init_styles10 = __esm({ - "src/diagrams/state/styles.js"() { - "use strict"; - getStyles11 = /* @__PURE__ */ __name((options3) => ` -defs #statediagram-barbEnd { - fill: ${options3.transitionColor}; - stroke: ${options3.transitionColor}; - } -g.stateGroup text { - fill: ${options3.nodeBorder}; - stroke: none; - font-size: 10px; -} -g.stateGroup text { - fill: ${options3.textColor}; - stroke: none; - font-size: 10px; - -} -g.stateGroup .state-title { - font-weight: bolder; - fill: ${options3.stateLabelColor}; -} - -g.stateGroup rect { - fill: ${options3.mainBkg}; - stroke: ${options3.nodeBorder}; -} - -g.stateGroup line { - stroke: ${options3.lineColor}; - stroke-width: 1; -} - -.transition { - stroke: ${options3.transitionColor}; - stroke-width: 1; - fill: none; -} - -.stateGroup .composit { - fill: ${options3.background}; - border-bottom: 1px -} - -.stateGroup .alt-composit { - fill: #e0e0e0; - border-bottom: 1px -} - -.state-note { - stroke: ${options3.noteBorderColor}; - fill: ${options3.noteBkgColor}; - - text { - fill: ${options3.noteTextColor}; - stroke: none; - font-size: 10px; - } -} - -.stateLabel .box { - stroke: none; - stroke-width: 0; - fill: ${options3.mainBkg}; - opacity: 0.5; -} - -.edgeLabel .label rect { - fill: ${options3.labelBackgroundColor}; - opacity: 0.5; -} -.edgeLabel { - background-color: ${options3.edgeLabelBackground}; - p { - background-color: ${options3.edgeLabelBackground}; - } - rect { - opacity: 0.5; - background-color: ${options3.edgeLabelBackground}; - fill: ${options3.edgeLabelBackground}; - } - text-align: center; -} -.edgeLabel .label text { - fill: ${options3.transitionLabelColor || options3.tertiaryTextColor}; -} -.label div .edgeLabel { - color: ${options3.transitionLabelColor || options3.tertiaryTextColor}; -} - -.stateLabel text { - fill: ${options3.stateLabelColor}; - font-size: 10px; - font-weight: bold; -} - -.node circle.state-start { - fill: ${options3.specialStateColor}; - stroke: ${options3.specialStateColor}; -} - -.node .fork-join { - fill: ${options3.specialStateColor}; - stroke: ${options3.specialStateColor}; -} - -.node circle.state-end { - fill: ${options3.innerEndBackground}; - stroke: ${options3.background}; - stroke-width: 1.5 -} -.end-state-inner { - fill: ${options3.compositeBackground || options3.background}; - // stroke: ${options3.background}; - stroke-width: 1.5 -} - -.node rect { - fill: ${options3.stateBkg || options3.mainBkg}; - stroke: ${options3.stateBorder || options3.nodeBorder}; - stroke-width: 1px; -} -.node polygon { - fill: ${options3.mainBkg}; - stroke: ${options3.stateBorder || options3.nodeBorder};; - stroke-width: 1px; -} -#statediagram-barbEnd { - fill: ${options3.lineColor}; -} - -.statediagram-cluster rect { - fill: ${options3.compositeTitleBackground}; - stroke: ${options3.stateBorder || options3.nodeBorder}; - stroke-width: 1px; -} - -.cluster-label, .nodeLabel { - color: ${options3.stateLabelColor}; - // line-height: 1; -} - -.statediagram-cluster rect.outer { - rx: 5px; - ry: 5px; -} -.statediagram-state .divider { - stroke: ${options3.stateBorder || options3.nodeBorder}; -} - -.statediagram-state .title-state { - rx: 5px; - ry: 5px; -} -.statediagram-cluster.statediagram-cluster .inner { - fill: ${options3.compositeBackground || options3.background}; -} -.statediagram-cluster.statediagram-cluster-alt .inner { - fill: ${options3.altBackground ? options3.altBackground : "#efefef"}; -} - -.statediagram-cluster .inner { - rx:0; - ry:0; -} - -.statediagram-state rect.basic { - rx: 5px; - ry: 5px; -} -.statediagram-state rect.divider { - stroke-dasharray: 10,10; - fill: ${options3.altBackground ? options3.altBackground : "#efefef"}; -} - -.note-edge { - stroke-dasharray: 5; -} - -.statediagram-note rect { - fill: ${options3.noteBkgColor}; - stroke: ${options3.noteBorderColor}; - stroke-width: 1px; - rx: 0; - ry: 0; -} -.statediagram-note rect { - fill: ${options3.noteBkgColor}; - stroke: ${options3.noteBorderColor}; - stroke-width: 1px; - rx: 0; - ry: 0; -} - -.statediagram-note text { - fill: ${options3.noteTextColor}; -} - -.statediagram-note .nodeLabel { - color: ${options3.noteTextColor}; -} -.statediagram .edgeLabel { - color: red; // ${options3.noteTextColor}; -} - -#dependencyStart, #dependencyEnd { - fill: ${options3.lineColor}; - stroke: ${options3.lineColor}; - stroke-width: 1; -} - -.statediagramTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${options3.textColor}; -} -`, "getStyles"); - styles_default10 = getStyles11; - } - }); - - // src/diagrams/state/id-cache.js - var idCache, set4, get4, keys2, size2, id_cache_default; - var init_id_cache = __esm({ - "src/diagrams/state/id-cache.js"() { - "use strict"; - idCache = {}; - set4 = /* @__PURE__ */ __name((key, val) => { - idCache[key] = val; - }, "set"); - get4 = /* @__PURE__ */ __name((k2) => idCache[k2], "get"); - keys2 = /* @__PURE__ */ __name(() => Object.keys(idCache), "keys"); - size2 = /* @__PURE__ */ __name(() => keys2().length, "size"); - id_cache_default = { - get: get4, - set: set4, - keys: keys2, - size: size2 - }; - } - }); - - // src/diagrams/state/shapes.js - var drawStartState, drawDivider, drawSimpleState, drawDescrState, addTitleAndBox, drawEndState, drawForkJoinState, _drawLongText, drawNote2, drawState, edgeCount, drawEdge; - var init_shapes2 = __esm({ - "src/diagrams/state/shapes.js"() { - "use strict"; - init_src32(); - init_id_cache(); - init_stateDb(); - init_utils2(); - init_common(); - init_diagramAPI(); - init_logger(); - drawStartState = /* @__PURE__ */ __name((g2) => g2.append("circle").attr("class", "start-state").attr("r", getConfig2().state.sizeUnit).attr("cx", getConfig2().state.padding + getConfig2().state.sizeUnit).attr("cy", getConfig2().state.padding + getConfig2().state.sizeUnit), "drawStartState"); - drawDivider = /* @__PURE__ */ __name((g2) => g2.append("line").style("stroke", "grey").style("stroke-dasharray", "3").attr("x1", getConfig2().state.textHeight).attr("class", "divider").attr("x2", getConfig2().state.textHeight * 2).attr("y1", 0).attr("y2", 0), "drawDivider"); - drawSimpleState = /* @__PURE__ */ __name((g2, stateDef) => { - const state4 = g2.append("text").attr("x", 2 * getConfig2().state.padding).attr("y", getConfig2().state.textHeight + 2 * getConfig2().state.padding).attr("font-size", getConfig2().state.fontSize).attr("class", "state-title").text(stateDef.id); - const classBox2 = state4.node().getBBox(); - g2.insert("rect", ":first-child").attr("x", getConfig2().state.padding).attr("y", getConfig2().state.padding).attr("width", classBox2.width + 2 * getConfig2().state.padding).attr("height", classBox2.height + 2 * getConfig2().state.padding).attr("rx", getConfig2().state.radius); - return state4; - }, "drawSimpleState"); - drawDescrState = /* @__PURE__ */ __name((g2, stateDef) => { - const addTspan = /* @__PURE__ */ __name(function(textEl, txt, isFirst2) { - const tSpan = textEl.append("tspan").attr("x", 2 * getConfig2().state.padding).text(txt); - if (!isFirst2) { - tSpan.attr("dy", getConfig2().state.textHeight); - } - }, "addTspan"); - const title2 = g2.append("text").attr("x", 2 * getConfig2().state.padding).attr("y", getConfig2().state.textHeight + 1.3 * getConfig2().state.padding).attr("font-size", getConfig2().state.fontSize).attr("class", "state-title").text(stateDef.descriptions[0]); - const titleBox = title2.node().getBBox(); - const titleHeight = titleBox.height; - const description = g2.append("text").attr("x", getConfig2().state.padding).attr( - "y", - titleHeight + getConfig2().state.padding * 0.4 + getConfig2().state.dividerMargin + getConfig2().state.textHeight - ).attr("class", "state-description"); - let isFirst = true; - let isSecond = true; - stateDef.descriptions.forEach(function(descr) { - if (!isFirst) { - addTspan(description, descr, isSecond); - isSecond = false; - } - isFirst = false; - }); - const descrLine = g2.append("line").attr("x1", getConfig2().state.padding).attr("y1", getConfig2().state.padding + titleHeight + getConfig2().state.dividerMargin / 2).attr("y2", getConfig2().state.padding + titleHeight + getConfig2().state.dividerMargin / 2).attr("class", "descr-divider"); - const descrBox = description.node().getBBox(); - const width3 = Math.max(descrBox.width, titleBox.width); - descrLine.attr("x2", width3 + 3 * getConfig2().state.padding); - g2.insert("rect", ":first-child").attr("x", getConfig2().state.padding).attr("y", getConfig2().state.padding).attr("width", width3 + 2 * getConfig2().state.padding).attr("height", descrBox.height + titleHeight + 2 * getConfig2().state.padding).attr("rx", getConfig2().state.radius); - return g2; - }, "drawDescrState"); - addTitleAndBox = /* @__PURE__ */ __name((g2, stateDef, altBkg) => { - const pad3 = getConfig2().state.padding; - const dblPad = 2 * getConfig2().state.padding; - const orgBox = g2.node().getBBox(); - const orgWidth = orgBox.width; - const orgX = orgBox.x; - const title2 = g2.append("text").attr("x", 0).attr("y", getConfig2().state.titleShift).attr("font-size", getConfig2().state.fontSize).attr("class", "state-title").text(stateDef.id); - const titleBox = title2.node().getBBox(); - const titleWidth = titleBox.width + dblPad; - let width3 = Math.max(titleWidth, orgWidth); - if (width3 === orgWidth) { - width3 = width3 + dblPad; - } - let startX2; - const graphBox = g2.node().getBBox(); - if (stateDef.doc) { - } - startX2 = orgX - pad3; - if (titleWidth > orgWidth) { - startX2 = (orgWidth - width3) / 2 + pad3; - } - if (Math.abs(orgX - graphBox.x) < pad3 && titleWidth > orgWidth) { - startX2 = orgX - (titleWidth - orgWidth) / 2; - } - const lineY = 1 - getConfig2().state.textHeight; - g2.insert("rect", ":first-child").attr("x", startX2).attr("y", lineY).attr("class", altBkg ? "alt-composit" : "composit").attr("width", width3).attr( - "height", - graphBox.height + getConfig2().state.textHeight + getConfig2().state.titleShift + 1 - ).attr("rx", "0"); - title2.attr("x", startX2 + pad3); - if (titleWidth <= orgWidth) { - title2.attr("x", orgX + (width3 - dblPad) / 2 - titleWidth / 2 + pad3); - } - g2.insert("rect", ":first-child").attr("x", startX2).attr( - "y", - getConfig2().state.titleShift - getConfig2().state.textHeight - getConfig2().state.padding - ).attr("width", width3).attr("height", getConfig2().state.textHeight * 3).attr("rx", getConfig2().state.radius); - g2.insert("rect", ":first-child").attr("x", startX2).attr( - "y", - getConfig2().state.titleShift - getConfig2().state.textHeight - getConfig2().state.padding - ).attr("width", width3).attr("height", graphBox.height + 3 + 2 * getConfig2().state.textHeight).attr("rx", getConfig2().state.radius); - return g2; - }, "addTitleAndBox"); - drawEndState = /* @__PURE__ */ __name((g2) => { - g2.append("circle").attr("class", "end-state-outer").attr("r", getConfig2().state.sizeUnit + getConfig2().state.miniPadding).attr( - "cx", - getConfig2().state.padding + getConfig2().state.sizeUnit + getConfig2().state.miniPadding - ).attr( - "cy", - getConfig2().state.padding + getConfig2().state.sizeUnit + getConfig2().state.miniPadding - ); - return g2.append("circle").attr("class", "end-state-inner").attr("r", getConfig2().state.sizeUnit).attr("cx", getConfig2().state.padding + getConfig2().state.sizeUnit + 2).attr("cy", getConfig2().state.padding + getConfig2().state.sizeUnit + 2); - }, "drawEndState"); - drawForkJoinState = /* @__PURE__ */ __name((g2, stateDef) => { - let width3 = getConfig2().state.forkWidth; - let height2 = getConfig2().state.forkHeight; - if (stateDef.parentId) { - let tmp = width3; - width3 = height2; - height2 = tmp; - } - return g2.append("rect").style("stroke", "black").style("fill", "black").attr("width", width3).attr("height", height2).attr("x", getConfig2().state.padding).attr("y", getConfig2().state.padding); - }, "drawForkJoinState"); - _drawLongText = /* @__PURE__ */ __name((_text, x5, y5, g2) => { - let textHeight = 0; - const textElem = g2.append("text"); - textElem.style("text-anchor", "start"); - textElem.attr("class", "noteText"); - let text4 = _text.replace(/\r\n/g, "
    "); - text4 = text4.replace(/\n/g, "
    "); - const lines = text4.split(common_default.lineBreakRegex); - let tHeight = 1.25 * getConfig2().state.noteMargin; - for (const line2 of lines) { - const txt = line2.trim(); - if (txt.length > 0) { - const span = textElem.append("tspan"); - span.text(txt); - if (tHeight === 0) { - const textBounds = span.node().getBBox(); - tHeight += textBounds.height; - } - textHeight += tHeight; - span.attr("x", x5 + getConfig2().state.noteMargin); - span.attr("y", y5 + textHeight + 1.25 * getConfig2().state.noteMargin); - } - } - return { textWidth: textElem.node().getBBox().width, textHeight }; - }, "_drawLongText"); - drawNote2 = /* @__PURE__ */ __name((text4, g2) => { - g2.attr("class", "state-note"); - const note3 = g2.append("rect").attr("x", 0).attr("y", getConfig2().state.padding); - const rectElem = g2.append("g"); - const { textWidth, textHeight } = _drawLongText(text4, 0, 0, rectElem); - note3.attr("height", textHeight + 2 * getConfig2().state.noteMargin); - note3.attr("width", textWidth + getConfig2().state.noteMargin * 2); - return note3; - }, "drawNote"); - drawState = /* @__PURE__ */ __name(function(elem, stateDef) { - const id29 = stateDef.id; - const stateInfo = { - id: id29, - label: stateDef.id, - width: 0, - height: 0 - }; - const g2 = elem.append("g").attr("id", id29).attr("class", "stateGroup"); - if (stateDef.type === "start") { - drawStartState(g2); - } - if (stateDef.type === "end") { - drawEndState(g2); - } - if (stateDef.type === "fork" || stateDef.type === "join") { - drawForkJoinState(g2, stateDef); - } - if (stateDef.type === "note") { - drawNote2(stateDef.note.text, g2); - } - if (stateDef.type === "divider") { - drawDivider(g2); - } - if (stateDef.type === "default" && stateDef.descriptions.length === 0) { - drawSimpleState(g2, stateDef); - } - if (stateDef.type === "default" && stateDef.descriptions.length > 0) { - drawDescrState(g2, stateDef); - } - const stateBox = g2.node().getBBox(); - stateInfo.width = stateBox.width + 2 * getConfig2().state.padding; - stateInfo.height = stateBox.height + 2 * getConfig2().state.padding; - id_cache_default.set(id29, stateInfo); - return stateInfo; - }, "drawState"); - edgeCount = 0; - drawEdge = /* @__PURE__ */ __name(function(elem, path4, relation) { - const getRelationType = /* @__PURE__ */ __name(function(type3) { - switch (type3) { - case StateDB.relationType.AGGREGATION: - return "aggregation"; - case StateDB.relationType.EXTENSION: - return "extension"; - case StateDB.relationType.COMPOSITION: - return "composition"; - case StateDB.relationType.DEPENDENCY: - return "dependency"; - } - }, "getRelationType"); - path4.points = path4.points.filter((p3) => !Number.isNaN(p3.y)); - const lineData = path4.points; - const lineFunction = line_default().x(function(d2) { - return d2.x; - }).y(function(d2) { - return d2.y; - }).curve(basis_default2); - const svgPath = elem.append("path").attr("d", lineFunction(lineData)).attr("id", "edge" + edgeCount).attr("class", "transition"); - let url = ""; - if (getConfig2().state.arrowMarkerAbsolute) { - url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search; - url = url.replace(/\(/g, "\\("); - url = url.replace(/\)/g, "\\)"); - } - svgPath.attr( - "marker-end", - "url(" + url + "#" + getRelationType(StateDB.relationType.DEPENDENCY) + "End)" - ); - if (relation.title !== void 0) { - const label = elem.append("g").attr("class", "stateLabel"); - const { x: x5, y: y5 } = utils_default2.calcLabelPosition(path4.points); - const rows = common_default.getRows(relation.title); - let titleHeight = 0; - const titleRows = []; - let maxWidth = 0; - let minX = 0; - for (let i2 = 0; i2 <= rows.length; i2++) { - const title2 = label.append("text").attr("text-anchor", "middle").text(rows[i2]).attr("x", x5).attr("y", y5 + titleHeight); - const boundsTmp = title2.node().getBBox(); - maxWidth = Math.max(maxWidth, boundsTmp.width); - minX = Math.min(minX, boundsTmp.x); - log.info(boundsTmp.x, x5, y5 + titleHeight); - if (titleHeight === 0) { - const titleBox = title2.node().getBBox(); - titleHeight = titleBox.height; - log.info("Title height", titleHeight, y5); - } - titleRows.push(title2); - } - let boxHeight = titleHeight * rows.length; - if (rows.length > 1) { - const heightAdj = (rows.length - 1) * titleHeight * 0.5; - titleRows.forEach((title2, i2) => title2.attr("y", y5 + i2 * titleHeight - heightAdj)); - boxHeight = titleHeight * rows.length; - } - const bounds4 = label.node().getBBox(); - label.insert("rect", ":first-child").attr("class", "box").attr("x", x5 - maxWidth / 2 - getConfig2().state.padding / 2).attr("y", y5 - boxHeight / 2 - getConfig2().state.padding / 2 - 3.5).attr("width", maxWidth + getConfig2().state.padding).attr("height", boxHeight + getConfig2().state.padding); - log.info(bounds4); - } - edgeCount++; - }, "drawEdge"); - } - }); - - // src/diagrams/state/stateRenderer.js - var conf3, transformationLog, setConf4, insertMarkers2, draw14, getLabelWidth, renderDoc, stateRenderer_default; - var init_stateRenderer = __esm({ - "src/diagrams/state/stateRenderer.js"() { - "use strict"; - init_src32(); - init_dagre(); - init_graphlib(); - init_logger(); - init_common(); - init_shapes2(); - init_diagramAPI(); - init_setupGraphViewbox(); - transformationLog = {}; - setConf4 = /* @__PURE__ */ __name(function() { - }, "setConf"); - insertMarkers2 = /* @__PURE__ */ __name(function(elem) { - elem.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z"); - }, "insertMarkers"); - draw14 = /* @__PURE__ */ __name(function(text4, id29, _version, diagObj) { - conf3 = getConfig2().state; - const securityLevel = getConfig2().securityLevel; - let sandboxElement; - if (securityLevel === "sandbox") { - sandboxElement = select_default2("#i" + id29); - } - const root4 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); - const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document; - log.debug("Rendering diagram " + text4); - const diagram26 = root4.select(`[id='${id29}']`); - insertMarkers2(diagram26); - const rootDoc = diagObj.db.getRootDoc(); - renderDoc(rootDoc, diagram26, void 0, false, root4, doc, diagObj); - const padding2 = conf3.padding; - const bounds4 = diagram26.node().getBBox(); - const width3 = bounds4.width + padding2 * 2; - const height2 = bounds4.height + padding2 * 2; - const svgWidth = width3 * 1.75; - configureSvgSize(diagram26, height2, svgWidth, conf3.useMaxWidth); - diagram26.attr( - "viewBox", - `${bounds4.x - conf3.padding} ${bounds4.y - conf3.padding} ` + width3 + " " + height2 - ); - }, "draw"); - getLabelWidth = /* @__PURE__ */ __name((text4) => { - return text4 ? text4.length * conf3.fontSizeFactor : 1; - }, "getLabelWidth"); - renderDoc = /* @__PURE__ */ __name((doc, diagram26, parentId, altBkg, root4, domDocument, diagObj) => { - const graph = new Graph({ - compound: true, - multigraph: true - }); - let i2; - let edgeFreeDoc = true; - for (i2 = 0; i2 < doc.length; i2++) { - if (doc[i2].stmt === "relation") { - edgeFreeDoc = false; - break; - } - } - if (parentId) { - graph.setGraph({ - rankdir: "LR", - multigraph: true, - compound: true, - // acyclicer: 'greedy', - ranker: "tight-tree", - ranksep: edgeFreeDoc ? 1 : conf3.edgeLengthFactor, - nodeSep: edgeFreeDoc ? 1 : 50, - isMultiGraph: true - // ranksep: 5, - // nodesep: 1 - }); - } else { - graph.setGraph({ - rankdir: "TB", - multigraph: true, - compound: true, - // isCompound: true, - // acyclicer: 'greedy', - // ranker: 'longest-path' - ranksep: edgeFreeDoc ? 1 : conf3.edgeLengthFactor, - nodeSep: edgeFreeDoc ? 1 : 50, - ranker: "tight-tree", - // ranker: 'network-simplex' - isMultiGraph: true - }); - } - graph.setDefaultEdgeLabel(function() { - return {}; - }); - const states = diagObj.db.getStates(); - const relations = diagObj.db.getRelations(); - const keys3 = Object.keys(states); - let first3 = true; - for (const key of keys3) { - const stateDef = states[key]; - if (parentId) { - stateDef.parentId = parentId; - } - let node2; - if (stateDef.doc) { - let sub2 = diagram26.append("g").attr("id", stateDef.id).attr("class", "stateGroup"); - node2 = renderDoc(stateDef.doc, sub2, stateDef.id, !altBkg, root4, domDocument, diagObj); - if (first3) { - sub2 = addTitleAndBox(sub2, stateDef, altBkg); - let boxBounds = sub2.node().getBBox(); - node2.width = boxBounds.width; - node2.height = boxBounds.height + conf3.padding / 2; - transformationLog[stateDef.id] = { y: conf3.compositTitleSize }; - } else { - let boxBounds = sub2.node().getBBox(); - node2.width = boxBounds.width; - node2.height = boxBounds.height; - } - } else { - node2 = drawState(diagram26, stateDef, graph); - } - if (stateDef.note) { - const noteDef = { - descriptions: [], - id: stateDef.id + "-note", - note: stateDef.note, - type: "note" - }; - const note3 = drawState(diagram26, noteDef, graph); - if (stateDef.note.position === "left of") { - graph.setNode(node2.id + "-note", note3); - graph.setNode(node2.id, node2); - } else { - graph.setNode(node2.id, node2); - graph.setNode(node2.id + "-note", note3); - } - graph.setParent(node2.id, node2.id + "-group"); - graph.setParent(node2.id + "-note", node2.id + "-group"); - } else { - graph.setNode(node2.id, node2); - } - } - log.debug("Count=", graph.nodeCount(), graph); - let cnt5 = 0; - relations.forEach(function(relation) { - cnt5++; - log.debug("Setting edge", relation); - graph.setEdge( - relation.id1, - relation.id2, - { - relation, - width: getLabelWidth(relation.title), - height: conf3.labelHeight * common_default.getRows(relation.title).length, - labelpos: "c" - }, - "id" + cnt5 - ); - }); - layout(graph); - log.debug("Graph after layout", graph.nodes()); - const svgElem = diagram26.node(); - graph.nodes().forEach(function(v3) { - if (v3 !== void 0 && graph.node(v3) !== void 0) { - log.warn("Node " + v3 + ": " + JSON.stringify(graph.node(v3))); - root4.select("#" + svgElem.id + " #" + v3).attr( - "transform", - "translate(" + (graph.node(v3).x - graph.node(v3).width / 2) + "," + (graph.node(v3).y + (transformationLog[v3] ? transformationLog[v3].y : 0) - graph.node(v3).height / 2) + " )" - ); - root4.select("#" + svgElem.id + " #" + v3).attr("data-x-shift", graph.node(v3).x - graph.node(v3).width / 2); - const dividers = domDocument.querySelectorAll("#" + svgElem.id + " #" + v3 + " .divider"); - dividers.forEach((divider2) => { - const parent4 = divider2.parentElement; - let pWidth = 0; - let pShift = 0; - if (parent4) { - if (parent4.parentElement) { - pWidth = parent4.parentElement.getBBox().width; - } - pShift = parseInt(parent4.getAttribute("data-x-shift"), 10); - if (Number.isNaN(pShift)) { - pShift = 0; - } - } - divider2.setAttribute("x1", 0 - pShift + 8); - divider2.setAttribute("x2", pWidth - pShift - 8); - }); - } else { - log.debug("No Node " + v3 + ": " + JSON.stringify(graph.node(v3))); - } - }); - let stateBox = svgElem.getBBox(); - graph.edges().forEach(function(e3) { - if (e3 !== void 0 && graph.edge(e3) !== void 0) { - log.debug("Edge " + e3.v + " -> " + e3.w + ": " + JSON.stringify(graph.edge(e3))); - drawEdge(diagram26, graph.edge(e3), graph.edge(e3).relation); - } - }); - stateBox = svgElem.getBBox(); - const stateInfo = { - id: parentId ? parentId : "root", - label: parentId ? parentId : "root", - width: 0, - height: 0 - }; - stateInfo.width = stateBox.width + 2 * conf3.padding; - stateInfo.height = stateBox.height + 2 * conf3.padding; - log.debug("Doc rendered", stateInfo, graph); - return stateInfo; - }, "renderDoc"); - stateRenderer_default = { - setConf: setConf4, - draw: draw14 - }; - } - }); - - // src/diagrams/state/stateDiagram.ts - var stateDiagram_exports = {}; - __export(stateDiagram_exports, { - diagram: () => diagram14 - }); - var diagram14; - var init_stateDiagram2 = __esm({ - "src/diagrams/state/stateDiagram.ts"() { - "use strict"; - init_stateDiagram(); - init_stateDb(); - init_styles10(); - init_stateRenderer(); - diagram14 = { - parser: stateDiagram_default, - get db() { - return new StateDB(1); - }, - renderer: stateRenderer_default, - styles: styles_default10, - init: /* @__PURE__ */ __name((cnf) => { - if (!cnf.state) { - cnf.state = {}; - } - cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute; - }, "init") - }; - } - }); - - // src/diagrams/state/stateDiagram-v2.ts - var stateDiagram_v2_exports = {}; - __export(stateDiagram_v2_exports, { - diagram: () => diagram15 - }); - var diagram15; - var init_stateDiagram_v2 = __esm({ - "src/diagrams/state/stateDiagram-v2.ts"() { - "use strict"; - init_stateDiagram(); - init_stateDb(); - init_styles10(); - init_stateRenderer_v3_unified(); - diagram15 = { - parser: stateDiagram_default, - get db() { - return new StateDB(2); - }, - renderer: stateRenderer_v3_unified_default, - styles: styles_default10, - init: /* @__PURE__ */ __name((cnf) => { - if (!cnf.state) { - cnf.state = {}; - } - cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute; - }, "init") - }; - } - }); - - // src/diagrams/user-journey/parser/journey.jison - var parser15, journey_default; - var init_journey = __esm({ - "src/diagrams/user-journey/parser/journey.jison"() { - "use strict"; - parser15 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; + parser2 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; return o3; - }, "o"), $V0 = [6, 8, 10, 11, 12, 14, 16, 17, 18], $V1 = [1, 9], $V2 = [1, 10], $V3 = [1, 11], $V4 = [1, 12], $V5 = [1, 13], $V6 = [1, 14]; + }, "o"), $V0 = [1, 4], $V1 = [1, 3], $V2 = [1, 5], $V3 = [1, 8, 9, 10, 11, 27, 34, 36, 38, 44, 60, 84, 85, 86, 87, 88, 89, 102, 105, 106, 109, 111, 114, 115, 116, 121, 122, 123, 124], $V4 = [2, 2], $V5 = [1, 13], $V6 = [1, 14], $V7 = [1, 15], $V8 = [1, 16], $V9 = [1, 23], $Va = [1, 25], $Vb = [1, 26], $Vc = [1, 27], $Vd = [1, 49], $Ve = [1, 48], $Vf = [1, 29], $Vg = [1, 30], $Vh = [1, 31], $Vi = [1, 32], $Vj = [1, 33], $Vk = [1, 44], $Vl = [1, 46], $Vm = [1, 42], $Vn = [1, 47], $Vo = [1, 43], $Vp = [1, 50], $Vq = [1, 45], $Vr = [1, 51], $Vs = [1, 52], $Vt = [1, 34], $Vu = [1, 35], $Vv = [1, 36], $Vw = [1, 37], $Vx = [1, 57], $Vy = [1, 8, 9, 10, 11, 27, 32, 34, 36, 38, 44, 60, 84, 85, 86, 87, 88, 89, 102, 105, 106, 109, 111, 114, 115, 116, 121, 122, 123, 124], $Vz = [1, 61], $VA = [1, 60], $VB = [1, 62], $VC = [8, 9, 11, 75, 77, 78], $VD = [1, 78], $VE = [1, 91], $VF = [1, 96], $VG = [1, 95], $VH = [1, 92], $VI = [1, 88], $VJ = [1, 94], $VK = [1, 90], $VL = [1, 97], $VM = [1, 93], $VN = [1, 98], $VO = [1, 89], $VP = [8, 9, 10, 11, 40, 75, 77, 78], $VQ = [8, 9, 10, 11, 40, 46, 75, 77, 78], $VR = [8, 9, 10, 11, 29, 40, 44, 46, 48, 50, 52, 54, 56, 58, 60, 63, 65, 67, 68, 70, 75, 77, 78, 89, 102, 105, 106, 109, 111, 114, 115, 116], $VS = [8, 9, 11, 44, 60, 75, 77, 78, 89, 102, 105, 106, 109, 111, 114, 115, 116], $VT = [44, 60, 89, 102, 105, 106, 109, 111, 114, 115, 116], $VU = [1, 121], $VV = [1, 122], $VW = [1, 124], $VX = [1, 123], $VY = [44, 60, 62, 74, 89, 102, 105, 106, 109, 111, 114, 115, 116], $VZ = [1, 133], $V_ = [1, 147], $V$ = [1, 148], $V01 = [1, 149], $V11 = [1, 150], $V21 = [1, 135], $V31 = [1, 137], $V41 = [1, 141], $V51 = [1, 142], $V61 = [1, 143], $V71 = [1, 144], $V81 = [1, 145], $V91 = [1, 146], $Va1 = [1, 151], $Vb1 = [1, 152], $Vc1 = [1, 131], $Vd1 = [1, 132], $Ve1 = [1, 139], $Vf1 = [1, 134], $Vg1 = [1, 138], $Vh1 = [1, 136], $Vi1 = [8, 9, 10, 11, 27, 32, 34, 36, 38, 44, 60, 84, 85, 86, 87, 88, 89, 102, 105, 106, 109, 111, 114, 115, 116, 121, 122, 123, 124], $Vj1 = [1, 154], $Vk1 = [1, 156], $Vl1 = [8, 9, 11], $Vm1 = [8, 9, 10, 11, 14, 44, 60, 89, 105, 106, 109, 111, 114, 115, 116], $Vn1 = [1, 176], $Vo1 = [1, 172], $Vp1 = [1, 173], $Vq1 = [1, 177], $Vr1 = [1, 174], $Vs1 = [1, 175], $Vt1 = [77, 116, 119], $Vu1 = [8, 9, 10, 11, 12, 14, 27, 29, 32, 44, 60, 75, 84, 85, 86, 87, 88, 89, 90, 105, 109, 111, 114, 115, 116], $Vv1 = [10, 106], $Vw1 = [31, 49, 51, 53, 55, 57, 62, 64, 66, 67, 69, 71, 116, 117, 118], $Vx1 = [1, 247], $Vy1 = [1, 245], $Vz1 = [1, 249], $VA1 = [1, 243], $VB1 = [1, 244], $VC1 = [1, 246], $VD1 = [1, 248], $VE1 = [1, 250], $VF1 = [1, 268], $VG1 = [8, 9, 11, 106], $VH1 = [8, 9, 10, 11, 60, 84, 105, 106, 109, 110, 111, 112]; var parser24 = { trace: /* @__PURE__ */ __name(function trace() { }, "trace"), yy: {}, - symbols_: { "error": 2, "start": 3, "journey": 4, "document": 5, "EOF": 6, "line": 7, "SPACE": 8, "statement": 9, "NEWLINE": 10, "title": 11, "acc_title": 12, "acc_title_value": 13, "acc_descr": 14, "acc_descr_value": 15, "acc_descr_multiline_value": 16, "section": 17, "taskName": 18, "taskData": 19, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 4: "journey", 6: "EOF", 8: "SPACE", 10: "NEWLINE", 11: "title", 12: "acc_title", 13: "acc_title_value", 14: "acc_descr", 15: "acc_descr_value", 16: "acc_descr_multiline_value", 17: "section", 18: "taskName", 19: "taskData" }, - productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 2]], + symbols_: { "error": 2, "start": 3, "graphConfig": 4, "document": 5, "line": 6, "statement": 7, "SEMI": 8, "NEWLINE": 9, "SPACE": 10, "EOF": 11, "GRAPH": 12, "NODIR": 13, "DIR": 14, "FirstStmtSeparator": 15, "ending": 16, "endToken": 17, "spaceList": 18, "spaceListNewline": 19, "vertexStatement": 20, "separator": 21, "styleStatement": 22, "linkStyleStatement": 23, "classDefStatement": 24, "classStatement": 25, "clickStatement": 26, "subgraph": 27, "textNoTags": 28, "SQS": 29, "text": 30, "SQE": 31, "end": 32, "direction": 33, "acc_title": 34, "acc_title_value": 35, "acc_descr": 36, "acc_descr_value": 37, "acc_descr_multiline_value": 38, "shapeData": 39, "SHAPE_DATA": 40, "link": 41, "node": 42, "styledVertex": 43, "AMP": 44, "vertex": 45, "STYLE_SEPARATOR": 46, "idString": 47, "DOUBLECIRCLESTART": 48, "DOUBLECIRCLEEND": 49, "PS": 50, "PE": 51, "(-": 52, "-)": 53, "STADIUMSTART": 54, "STADIUMEND": 55, "SUBROUTINESTART": 56, "SUBROUTINEEND": 57, "VERTEX_WITH_PROPS_START": 58, "NODE_STRING[field]": 59, "COLON": 60, "NODE_STRING[value]": 61, "PIPE": 62, "CYLINDERSTART": 63, "CYLINDEREND": 64, "DIAMOND_START": 65, "DIAMOND_STOP": 66, "TAGEND": 67, "TRAPSTART": 68, "TRAPEND": 69, "INVTRAPSTART": 70, "INVTRAPEND": 71, "linkStatement": 72, "arrowText": 73, "TESTSTR": 74, "START_LINK": 75, "edgeText": 76, "LINK": 77, "LINK_ID": 78, "edgeTextToken": 79, "STR": 80, "MD_STR": 81, "textToken": 82, "keywords": 83, "STYLE": 84, "LINKSTYLE": 85, "CLASSDEF": 86, "CLASS": 87, "CLICK": 88, "DOWN": 89, "UP": 90, "textNoTagsToken": 91, "stylesOpt": 92, "idString[vertex]": 93, "idString[class]": 94, "CALLBACKNAME": 95, "CALLBACKARGS": 96, "HREF": 97, "LINK_TARGET": 98, "STR[link]": 99, "STR[tooltip]": 100, "alphaNum": 101, "DEFAULT": 102, "numList": 103, "INTERPOLATE": 104, "NUM": 105, "COMMA": 106, "style": 107, "styleComponent": 108, "NODE_STRING": 109, "UNIT": 110, "BRKT": 111, "PCT": 112, "idStringToken": 113, "MINUS": 114, "MULT": 115, "UNICODE_TEXT": 116, "TEXT": 117, "TAGSTART": 118, "EDGE_TEXT": 119, "alphaNumToken": 120, "direction_tb": 121, "direction_bt": 122, "direction_rl": 123, "direction_lr": 124, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 8: "SEMI", 9: "NEWLINE", 10: "SPACE", 11: "EOF", 12: "GRAPH", 13: "NODIR", 14: "DIR", 27: "subgraph", 29: "SQS", 31: "SQE", 32: "end", 34: "acc_title", 35: "acc_title_value", 36: "acc_descr", 37: "acc_descr_value", 38: "acc_descr_multiline_value", 40: "SHAPE_DATA", 44: "AMP", 46: "STYLE_SEPARATOR", 48: "DOUBLECIRCLESTART", 49: "DOUBLECIRCLEEND", 50: "PS", 51: "PE", 52: "(-", 53: "-)", 54: "STADIUMSTART", 55: "STADIUMEND", 56: "SUBROUTINESTART", 57: "SUBROUTINEEND", 58: "VERTEX_WITH_PROPS_START", 59: "NODE_STRING[field]", 60: "COLON", 61: "NODE_STRING[value]", 62: "PIPE", 63: "CYLINDERSTART", 64: "CYLINDEREND", 65: "DIAMOND_START", 66: "DIAMOND_STOP", 67: "TAGEND", 68: "TRAPSTART", 69: "TRAPEND", 70: "INVTRAPSTART", 71: "INVTRAPEND", 74: "TESTSTR", 75: "START_LINK", 77: "LINK", 78: "LINK_ID", 80: "STR", 81: "MD_STR", 84: "STYLE", 85: "LINKSTYLE", 86: "CLASSDEF", 87: "CLASS", 88: "CLICK", 89: "DOWN", 90: "UP", 93: "idString[vertex]", 94: "idString[class]", 95: "CALLBACKNAME", 96: "CALLBACKARGS", 97: "HREF", 98: "LINK_TARGET", 99: "STR[link]", 100: "STR[tooltip]", 102: "DEFAULT", 104: "INTERPOLATE", 105: "NUM", 106: "COMMA", 109: "NODE_STRING", 110: "UNIT", 111: "BRKT", 112: "PCT", 114: "MINUS", 115: "MULT", 116: "UNICODE_TEXT", 117: "TEXT", 118: "TAGSTART", 119: "EDGE_TEXT", 121: "direction_tb", 122: "direction_bt", 123: "direction_rl", 124: "direction_lr" }, + productions_: [0, [3, 2], [5, 0], [5, 2], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [4, 2], [4, 2], [4, 2], [4, 3], [16, 2], [16, 1], [17, 1], [17, 1], [17, 1], [15, 1], [15, 1], [15, 2], [19, 2], [19, 2], [19, 1], [19, 1], [18, 2], [18, 1], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 9], [7, 6], [7, 4], [7, 1], [7, 2], [7, 2], [7, 1], [21, 1], [21, 1], [21, 1], [39, 2], [39, 1], [20, 4], [20, 3], [20, 4], [20, 2], [20, 2], [20, 1], [42, 1], [42, 6], [42, 5], [43, 1], [43, 3], [45, 4], [45, 4], [45, 6], [45, 4], [45, 4], [45, 4], [45, 8], [45, 4], [45, 4], [45, 4], [45, 6], [45, 4], [45, 4], [45, 4], [45, 4], [45, 4], [45, 1], [41, 2], [41, 3], [41, 3], [41, 1], [41, 3], [41, 4], [76, 1], [76, 2], [76, 1], [76, 1], [72, 1], [72, 2], [73, 3], [30, 1], [30, 2], [30, 1], [30, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [28, 1], [28, 2], [28, 1], [28, 1], [24, 5], [25, 5], [26, 2], [26, 4], [26, 3], [26, 5], [26, 3], [26, 5], [26, 5], [26, 7], [26, 2], [26, 4], [26, 2], [26, 4], [26, 4], [26, 6], [22, 5], [23, 5], [23, 5], [23, 9], [23, 9], [23, 7], [23, 7], [103, 1], [103, 3], [92, 1], [92, 3], [107, 1], [107, 2], [108, 1], [108, 1], [108, 1], [108, 1], [108, 1], [108, 1], [108, 1], [108, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [113, 1], [82, 1], [82, 1], [82, 1], [82, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [91, 1], [79, 1], [79, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [120, 1], [47, 1], [47, 2], [101, 1], [101, 2], [33, 1], [33, 1], [33, 1], [33, 1]], performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { var $0 = $$.length - 1; switch (yystate) { - case 1: - return $$[$0 - 1]; - break; case 2: this.$ = []; break; case 3: - $$[$0 - 1].push($$[$0]); + if (!Array.isArray($$[$0]) || $$[$0].length > 0) { + $$[$0 - 1].push($$[$0]); + } this.$ = $$[$0 - 1]; break; case 4: - case 5: + case 183: this.$ = $$[$0]; break; - case 6: - case 7: + case 11: + yy.setDirection("TB"); + this.$ = "TB"; + break; + case 12: + yy.setDirection($$[$0 - 1]); + this.$ = $$[$0 - 1]; + break; + case 27: + this.$ = $$[$0 - 1].nodes; + break; + case 28: + case 29: + case 30: + case 31: + case 32: this.$ = []; break; - case 8: - yy.setDiagramTitle($$[$0].substr(6)); - this.$ = $$[$0].substr(6); + case 33: + this.$ = yy.addSubGraph($$[$0 - 6], $$[$0 - 1], $$[$0 - 4]); break; - case 9: + case 34: + this.$ = yy.addSubGraph($$[$0 - 3], $$[$0 - 1], $$[$0 - 3]); + break; + case 35: + this.$ = yy.addSubGraph(void 0, $$[$0 - 1], void 0); + break; + case 37: this.$ = $$[$0].trim(); yy.setAccTitle(this.$); break; - case 10: - case 11: + case 38: + case 39: this.$ = $$[$0].trim(); yy.setAccDescription(this.$); break; - case 12: - yy.addSection($$[$0].substr(8)); - this.$ = $$[$0].substr(8); + case 43: + this.$ = $$[$0 - 1] + $$[$0]; break; - case 13: - yy.addTask($$[$0 - 1], $$[$0]); - this.$ = "task"; + case 44: + this.$ = $$[$0]; break; - } - }, "anonymous"), - table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o2($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: $V6 }, o2($V0, [2, 7], { 1: [2, 1] }), o2($V0, [2, 3]), { 9: 15, 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: $V6 }, o2($V0, [2, 5]), o2($V0, [2, 6]), o2($V0, [2, 8]), { 13: [1, 16] }, { 15: [1, 17] }, o2($V0, [2, 11]), o2($V0, [2, 12]), { 19: [1, 18] }, o2($V0, [2, 4]), o2($V0, [2, 9]), o2($V0, [2, 10]), o2($V0, [2, 13])], - defaultActions: {}, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); - } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; + case 45: + yy.addVertex($$[$0 - 1][$$[$0 - 1].length - 1], void 0, void 0, void 0, void 0, void 0, void 0, $$[$0]); + yy.addLink($$[$0 - 3].stmt, $$[$0 - 1], $$[$0 - 2]); + this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1].concat($$[$0 - 3].nodes) }; + break; + case 46: + yy.addLink($$[$0 - 2].stmt, $$[$0], $$[$0 - 1]); + this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0 - 2].nodes) }; + break; + case 47: + yy.addLink($$[$0 - 3].stmt, $$[$0 - 1], $$[$0 - 2]); + this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1].concat($$[$0 - 3].nodes) }; + break; + case 48: + this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1] }; + break; + case 49: + yy.addVertex($$[$0 - 1][$$[$0 - 1].length - 1], void 0, void 0, void 0, void 0, void 0, void 0, $$[$0]); + this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1], shapeData: $$[$0] }; + break; + case 50: + this.$ = { stmt: $$[$0], nodes: $$[$0] }; + break; + case 51: + this.$ = [$$[$0]]; + break; + case 52: + yy.addVertex($$[$0 - 5][$$[$0 - 5].length - 1], void 0, void 0, void 0, void 0, void 0, void 0, $$[$0 - 4]); + this.$ = $$[$0 - 5].concat($$[$0]); + break; + case 53: + this.$ = $$[$0 - 4].concat($$[$0]); + break; + case 54: + this.$ = $$[$0]; + break; + case 55: + this.$ = $$[$0 - 2]; + yy.setClass($$[$0 - 2], $$[$0]); + break; + case 56: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "square"); + break; + case 57: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "doublecircle"); + break; + case 58: + this.$ = $$[$0 - 5]; + yy.addVertex($$[$0 - 5], $$[$0 - 2], "circle"); + break; + case 59: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "ellipse"); + break; + case 60: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "stadium"); + break; + case 61: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "subroutine"); + break; + case 62: + this.$ = $$[$0 - 7]; + yy.addVertex($$[$0 - 7], $$[$0 - 1], "rect", void 0, void 0, void 0, Object.fromEntries([[$$[$0 - 5], $$[$0 - 3]]])); + break; + case 63: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "cylinder"); + break; + case 64: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "round"); + break; + case 65: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "diamond"); + break; + case 66: + this.$ = $$[$0 - 5]; + yy.addVertex($$[$0 - 5], $$[$0 - 2], "hexagon"); + break; + case 67: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "odd"); + break; + case 68: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "trapezoid"); + break; + case 69: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "inv_trapezoid"); + break; + case 70: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "lean_right"); + break; + case 71: + this.$ = $$[$0 - 3]; + yy.addVertex($$[$0 - 3], $$[$0 - 1], "lean_left"); + break; + case 72: + this.$ = $$[$0]; + yy.addVertex($$[$0]); + break; + case 73: + $$[$0 - 1].text = $$[$0]; + this.$ = $$[$0 - 1]; + break; + case 74: + case 75: + $$[$0 - 2].text = $$[$0 - 1]; + this.$ = $$[$0 - 2]; + break; + case 76: + this.$ = $$[$0]; + break; + case 77: + var inf = yy.destructLink($$[$0], $$[$0 - 2]); + this.$ = { "type": inf.type, "stroke": inf.stroke, "length": inf.length, "text": $$[$0 - 1] }; + break; + case 78: + var inf = yy.destructLink($$[$0], $$[$0 - 2]); + this.$ = { "type": inf.type, "stroke": inf.stroke, "length": inf.length, "text": $$[$0 - 1], "id": $$[$0 - 3] }; + break; + case 79: + this.$ = { text: $$[$0], type: "text" }; + break; + case 80: + this.$ = { text: $$[$0 - 1].text + "" + $$[$0], type: $$[$0 - 1].type }; + break; + case 81: + this.$ = { text: $$[$0], type: "string" }; + break; + case 82: + this.$ = { text: $$[$0], type: "markdown" }; + break; + case 83: + var inf = yy.destructLink($$[$0]); + this.$ = { "type": inf.type, "stroke": inf.stroke, "length": inf.length }; + break; + case 84: + var inf = yy.destructLink($$[$0]); + this.$ = { "type": inf.type, "stroke": inf.stroke, "length": inf.length, "id": $$[$0 - 1] }; + break; + case 85: + this.$ = $$[$0 - 1]; + break; + case 86: + this.$ = { text: $$[$0], type: "text" }; + break; + case 87: + this.$ = { text: $$[$0 - 1].text + "" + $$[$0], type: $$[$0 - 1].type }; + break; + case 88: + this.$ = { text: $$[$0], type: "string" }; + break; + case 89: + case 104: + this.$ = { text: $$[$0], type: "markdown" }; + break; + case 101: + this.$ = { text: $$[$0], type: "text" }; + break; + case 102: + this.$ = { text: $$[$0 - 1].text + "" + $$[$0], type: $$[$0 - 1].type }; + break; + case 103: + this.$ = { text: $$[$0], type: "text" }; + break; + case 105: + this.$ = $$[$0 - 4]; + yy.addClass($$[$0 - 2], $$[$0]); + break; + case 106: + this.$ = $$[$0 - 4]; + yy.setClass($$[$0 - 2], $$[$0]); + break; + case 107: + case 115: + this.$ = $$[$0 - 1]; + yy.setClickEvent($$[$0 - 1], $$[$0]); + break; + case 108: + case 116: + this.$ = $$[$0 - 3]; + yy.setClickEvent($$[$0 - 3], $$[$0 - 2]); + yy.setTooltip($$[$0 - 3], $$[$0]); + break; + case 109: + this.$ = $$[$0 - 2]; + yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]); + break; + case 110: + this.$ = $$[$0 - 4]; + yy.setClickEvent($$[$0 - 4], $$[$0 - 3], $$[$0 - 2]); + yy.setTooltip($$[$0 - 4], $$[$0]); + break; + case 111: + this.$ = $$[$0 - 2]; + yy.setLink($$[$0 - 2], $$[$0]); + break; + case 112: + this.$ = $$[$0 - 4]; + yy.setLink($$[$0 - 4], $$[$0 - 2]); + yy.setTooltip($$[$0 - 4], $$[$0]); + break; + case 113: + this.$ = $$[$0 - 4]; + yy.setLink($$[$0 - 4], $$[$0 - 2], $$[$0]); + break; + case 114: + this.$ = $$[$0 - 6]; + yy.setLink($$[$0 - 6], $$[$0 - 4], $$[$0]); + yy.setTooltip($$[$0 - 6], $$[$0 - 2]); + break; + case 117: + this.$ = $$[$0 - 1]; + yy.setLink($$[$0 - 1], $$[$0]); + break; + case 118: + this.$ = $$[$0 - 3]; + yy.setLink($$[$0 - 3], $$[$0 - 2]); + yy.setTooltip($$[$0 - 3], $$[$0]); + break; + case 119: + this.$ = $$[$0 - 3]; + yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]); + break; + case 120: + this.$ = $$[$0 - 5]; + yy.setLink($$[$0 - 5], $$[$0 - 4], $$[$0]); + yy.setTooltip($$[$0 - 5], $$[$0 - 2]); + break; + case 121: + this.$ = $$[$0 - 4]; + yy.addVertex($$[$0 - 2], void 0, void 0, $$[$0]); + break; + case 122: + this.$ = $$[$0 - 4]; + yy.updateLink([$$[$0 - 2]], $$[$0]); + break; + case 123: + this.$ = $$[$0 - 4]; + yy.updateLink($$[$0 - 2], $$[$0]); + break; + case 124: + this.$ = $$[$0 - 8]; + yy.updateLinkInterpolate([$$[$0 - 6]], $$[$0 - 2]); + yy.updateLink([$$[$0 - 6]], $$[$0]); + break; + case 125: + this.$ = $$[$0 - 8]; + yy.updateLinkInterpolate($$[$0 - 6], $$[$0 - 2]); + yy.updateLink($$[$0 - 6], $$[$0]); + break; + case 126: + this.$ = $$[$0 - 6]; + yy.updateLinkInterpolate([$$[$0 - 4]], $$[$0]); + break; + case 127: + this.$ = $$[$0 - 6]; + yy.updateLinkInterpolate($$[$0 - 4], $$[$0]); + break; + case 128: + case 130: + this.$ = [$$[$0]]; + break; + case 129: + case 131: + $$[$0 - 2].push($$[$0]); + this.$ = $$[$0 - 2]; + break; + case 133: + this.$ = $$[$0 - 1] + $$[$0]; + break; + case 181: + this.$ = $$[$0]; + break; + case 182: + this.$ = $$[$0 - 1] + "" + $$[$0]; + break; + case 184: + this.$ = $$[$0 - 1] + "" + $$[$0]; + break; + case 185: + this.$ = { stmt: "dir", value: "TB" }; + break; + case 186: + this.$ = { stmt: "dir", value: "BT" }; + break; + case 187: + this.$ = { stmt: "dir", value: "RL" }; + break; + case 188: + this.$ = { stmt: "dir", value: "LR" }; + break; + } + }, "anonymous"), + table: [{ 3: 1, 4: 2, 9: $V0, 10: $V1, 12: $V2 }, { 1: [3] }, o2($V3, $V4, { 5: 6 }), { 4: 7, 9: $V0, 10: $V1, 12: $V2 }, { 4: 8, 9: $V0, 10: $V1, 12: $V2 }, { 13: [1, 9], 14: [1, 10] }, { 1: [2, 1], 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 42: 28, 43: 38, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 84: $Vf, 85: $Vg, 86: $Vh, 87: $Vi, 88: $Vj, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs, 121: $Vt, 122: $Vu, 123: $Vv, 124: $Vw }, o2($V3, [2, 9]), o2($V3, [2, 10]), o2($V3, [2, 11]), { 8: [1, 54], 9: [1, 55], 10: $Vx, 15: 53, 18: 56 }, o2($Vy, [2, 3]), o2($Vy, [2, 4]), o2($Vy, [2, 5]), o2($Vy, [2, 6]), o2($Vy, [2, 7]), o2($Vy, [2, 8]), { 8: $Vz, 9: $VA, 11: $VB, 21: 58, 41: 59, 72: 63, 75: [1, 64], 77: [1, 66], 78: [1, 65] }, { 8: $Vz, 9: $VA, 11: $VB, 21: 67 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 68 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 69 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 70 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 71 }, { 8: $Vz, 9: $VA, 10: [1, 72], 11: $VB, 21: 73 }, o2($Vy, [2, 36]), { 35: [1, 74] }, { 37: [1, 75] }, o2($Vy, [2, 39]), o2($VC, [2, 50], { 18: 76, 39: 77, 10: $Vx, 40: $VD }), { 10: [1, 79] }, { 10: [1, 80] }, { 10: [1, 81] }, { 10: [1, 82] }, { 14: $VE, 44: $VF, 60: $VG, 80: [1, 86], 89: $VH, 95: [1, 83], 97: [1, 84], 101: 85, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO, 120: 87 }, o2($Vy, [2, 185]), o2($Vy, [2, 186]), o2($Vy, [2, 187]), o2($Vy, [2, 188]), o2($VP, [2, 51]), o2($VP, [2, 54], { 46: [1, 99] }), o2($VQ, [2, 72], { 113: 112, 29: [1, 100], 44: $Vd, 48: [1, 101], 50: [1, 102], 52: [1, 103], 54: [1, 104], 56: [1, 105], 58: [1, 106], 60: $Ve, 63: [1, 107], 65: [1, 108], 67: [1, 109], 68: [1, 110], 70: [1, 111], 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 114: $Vq, 115: $Vr, 116: $Vs }), o2($VR, [2, 181]), o2($VR, [2, 142]), o2($VR, [2, 143]), o2($VR, [2, 144]), o2($VR, [2, 145]), o2($VR, [2, 146]), o2($VR, [2, 147]), o2($VR, [2, 148]), o2($VR, [2, 149]), o2($VR, [2, 150]), o2($VR, [2, 151]), o2($VR, [2, 152]), o2($V3, [2, 12]), o2($V3, [2, 18]), o2($V3, [2, 19]), { 9: [1, 113] }, o2($VS, [2, 26], { 18: 114, 10: $Vx }), o2($Vy, [2, 27]), { 42: 115, 43: 38, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, o2($Vy, [2, 40]), o2($Vy, [2, 41]), o2($Vy, [2, 42]), o2($VT, [2, 76], { 73: 116, 62: [1, 118], 74: [1, 117] }), { 76: 119, 79: 120, 80: $VU, 81: $VV, 116: $VW, 119: $VX }, { 75: [1, 125], 77: [1, 126] }, o2($VY, [2, 83]), o2($Vy, [2, 28]), o2($Vy, [2, 29]), o2($Vy, [2, 30]), o2($Vy, [2, 31]), o2($Vy, [2, 32]), { 10: $VZ, 12: $V_, 14: $V$, 27: $V01, 28: 127, 32: $V11, 44: $V21, 60: $V31, 75: $V41, 80: [1, 129], 81: [1, 130], 83: 140, 84: $V51, 85: $V61, 86: $V71, 87: $V81, 88: $V91, 89: $Va1, 90: $Vb1, 91: 128, 105: $Vc1, 109: $Vd1, 111: $Ve1, 114: $Vf1, 115: $Vg1, 116: $Vh1 }, o2($Vi1, $V4, { 5: 153 }), o2($Vy, [2, 37]), o2($Vy, [2, 38]), o2($VC, [2, 48], { 44: $Vj1 }), o2($VC, [2, 49], { 18: 155, 10: $Vx, 40: $Vk1 }), o2($VP, [2, 44]), { 44: $Vd, 47: 157, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, { 102: [1, 158], 103: 159, 105: [1, 160] }, { 44: $Vd, 47: 161, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, { 44: $Vd, 47: 162, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, o2($Vl1, [2, 107], { 10: [1, 163], 96: [1, 164] }), { 80: [1, 165] }, o2($Vl1, [2, 115], { 120: 167, 10: [1, 166], 14: $VE, 44: $VF, 60: $VG, 89: $VH, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO }), o2($Vl1, [2, 117], { 10: [1, 168] }), o2($Vm1, [2, 183]), o2($Vm1, [2, 170]), o2($Vm1, [2, 171]), o2($Vm1, [2, 172]), o2($Vm1, [2, 173]), o2($Vm1, [2, 174]), o2($Vm1, [2, 175]), o2($Vm1, [2, 176]), o2($Vm1, [2, 177]), o2($Vm1, [2, 178]), o2($Vm1, [2, 179]), o2($Vm1, [2, 180]), { 44: $Vd, 47: 169, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, { 30: 170, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 178, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 180, 50: [1, 179], 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 181, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 182, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 183, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 109: [1, 184] }, { 30: 185, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 186, 65: [1, 187], 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 188, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 189, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 190, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VR, [2, 182]), o2($V3, [2, 20]), o2($VS, [2, 25]), o2($VC, [2, 46], { 39: 191, 18: 192, 10: $Vx, 40: $VD }), o2($VT, [2, 73], { 10: [1, 193] }), { 10: [1, 194] }, { 30: 195, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 77: [1, 196], 79: 197, 116: $VW, 119: $VX }, o2($Vt1, [2, 79]), o2($Vt1, [2, 81]), o2($Vt1, [2, 82]), o2($Vt1, [2, 168]), o2($Vt1, [2, 169]), { 76: 198, 79: 120, 80: $VU, 81: $VV, 116: $VW, 119: $VX }, o2($VY, [2, 84]), { 8: $Vz, 9: $VA, 10: $VZ, 11: $VB, 12: $V_, 14: $V$, 21: 200, 27: $V01, 29: [1, 199], 32: $V11, 44: $V21, 60: $V31, 75: $V41, 83: 140, 84: $V51, 85: $V61, 86: $V71, 87: $V81, 88: $V91, 89: $Va1, 90: $Vb1, 91: 201, 105: $Vc1, 109: $Vd1, 111: $Ve1, 114: $Vf1, 115: $Vg1, 116: $Vh1 }, o2($Vu1, [2, 101]), o2($Vu1, [2, 103]), o2($Vu1, [2, 104]), o2($Vu1, [2, 157]), o2($Vu1, [2, 158]), o2($Vu1, [2, 159]), o2($Vu1, [2, 160]), o2($Vu1, [2, 161]), o2($Vu1, [2, 162]), o2($Vu1, [2, 163]), o2($Vu1, [2, 164]), o2($Vu1, [2, 165]), o2($Vu1, [2, 166]), o2($Vu1, [2, 167]), o2($Vu1, [2, 90]), o2($Vu1, [2, 91]), o2($Vu1, [2, 92]), o2($Vu1, [2, 93]), o2($Vu1, [2, 94]), o2($Vu1, [2, 95]), o2($Vu1, [2, 96]), o2($Vu1, [2, 97]), o2($Vu1, [2, 98]), o2($Vu1, [2, 99]), o2($Vu1, [2, 100]), { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 202], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 42: 28, 43: 38, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 84: $Vf, 85: $Vg, 86: $Vh, 87: $Vi, 88: $Vj, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs, 121: $Vt, 122: $Vu, 123: $Vv, 124: $Vw }, { 10: $Vx, 18: 203 }, { 44: [1, 204] }, o2($VP, [2, 43]), { 10: [1, 205], 44: $Vd, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 112, 114: $Vq, 115: $Vr, 116: $Vs }, { 10: [1, 206] }, { 10: [1, 207], 106: [1, 208] }, o2($Vv1, [2, 128]), { 10: [1, 209], 44: $Vd, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 112, 114: $Vq, 115: $Vr, 116: $Vs }, { 10: [1, 210], 44: $Vd, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 112, 114: $Vq, 115: $Vr, 116: $Vs }, { 80: [1, 211] }, o2($Vl1, [2, 109], { 10: [1, 212] }), o2($Vl1, [2, 111], { 10: [1, 213] }), { 80: [1, 214] }, o2($Vm1, [2, 184]), { 80: [1, 215], 98: [1, 216] }, o2($VP, [2, 55], { 113: 112, 44: $Vd, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 114: $Vq, 115: $Vr, 116: $Vs }), { 31: [1, 217], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($Vw1, [2, 86]), o2($Vw1, [2, 88]), o2($Vw1, [2, 89]), o2($Vw1, [2, 153]), o2($Vw1, [2, 154]), o2($Vw1, [2, 155]), o2($Vw1, [2, 156]), { 49: [1, 219], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 220, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 51: [1, 221], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 53: [1, 222], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 55: [1, 223], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 57: [1, 224], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 60: [1, 225] }, { 64: [1, 226], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 66: [1, 227], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 30: 228, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 31: [1, 229], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 67: $Vn1, 69: [1, 230], 71: [1, 231], 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 67: $Vn1, 69: [1, 233], 71: [1, 232], 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VC, [2, 45], { 18: 155, 10: $Vx, 40: $Vk1 }), o2($VC, [2, 47], { 44: $Vj1 }), o2($VT, [2, 75]), o2($VT, [2, 74]), { 62: [1, 234], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VT, [2, 77]), o2($Vt1, [2, 80]), { 77: [1, 235], 79: 197, 116: $VW, 119: $VX }, { 30: 236, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($Vi1, $V4, { 5: 237 }), o2($Vu1, [2, 102]), o2($Vy, [2, 35]), { 43: 238, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, { 10: $Vx, 18: 239 }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 240, 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 251, 104: [1, 252], 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 253, 104: [1, 254], 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, { 105: [1, 255] }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 256, 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, { 44: $Vd, 47: 257, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, o2($Vl1, [2, 108]), { 80: [1, 258] }, { 80: [1, 259], 98: [1, 260] }, o2($Vl1, [2, 116]), o2($Vl1, [2, 118], { 10: [1, 261] }), o2($Vl1, [2, 119]), o2($VQ, [2, 56]), o2($Vw1, [2, 87]), o2($VQ, [2, 57]), { 51: [1, 262], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VQ, [2, 64]), o2($VQ, [2, 59]), o2($VQ, [2, 60]), o2($VQ, [2, 61]), { 109: [1, 263] }, o2($VQ, [2, 63]), o2($VQ, [2, 65]), { 66: [1, 264], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VQ, [2, 67]), o2($VQ, [2, 68]), o2($VQ, [2, 70]), o2($VQ, [2, 69]), o2($VQ, [2, 71]), o2([10, 44, 60, 89, 102, 105, 106, 109, 111, 114, 115, 116], [2, 85]), o2($VT, [2, 78]), { 31: [1, 265], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 266], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 42: 28, 43: 38, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 84: $Vf, 85: $Vg, 86: $Vh, 87: $Vi, 88: $Vj, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs, 121: $Vt, 122: $Vu, 123: $Vv, 124: $Vw }, o2($VP, [2, 53]), { 43: 267, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs }, o2($Vl1, [2, 121], { 106: $VF1 }), o2($VG1, [2, 130], { 108: 269, 10: $Vx1, 60: $Vy1, 84: $Vz1, 105: $VA1, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }), o2($VH1, [2, 132]), o2($VH1, [2, 134]), o2($VH1, [2, 135]), o2($VH1, [2, 136]), o2($VH1, [2, 137]), o2($VH1, [2, 138]), o2($VH1, [2, 139]), o2($VH1, [2, 140]), o2($VH1, [2, 141]), o2($Vl1, [2, 122], { 106: $VF1 }), { 10: [1, 270] }, o2($Vl1, [2, 123], { 106: $VF1 }), { 10: [1, 271] }, o2($Vv1, [2, 129]), o2($Vl1, [2, 105], { 106: $VF1 }), o2($Vl1, [2, 106], { 113: 112, 44: $Vd, 60: $Ve, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 114: $Vq, 115: $Vr, 116: $Vs }), o2($Vl1, [2, 110]), o2($Vl1, [2, 112], { 10: [1, 272] }), o2($Vl1, [2, 113]), { 98: [1, 273] }, { 51: [1, 274] }, { 62: [1, 275] }, { 66: [1, 276] }, { 8: $Vz, 9: $VA, 11: $VB, 21: 277 }, o2($Vy, [2, 34]), o2($VP, [2, 52]), { 10: $Vx1, 60: $Vy1, 84: $Vz1, 105: $VA1, 107: 278, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, o2($VH1, [2, 133]), { 14: $VE, 44: $VF, 60: $VG, 89: $VH, 101: 279, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO, 120: 87 }, { 14: $VE, 44: $VF, 60: $VG, 89: $VH, 101: 280, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO, 120: 87 }, { 98: [1, 281] }, o2($Vl1, [2, 120]), o2($VQ, [2, 58]), { 30: 282, 67: $Vn1, 80: $Vo1, 81: $Vp1, 82: 171, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, o2($VQ, [2, 66]), o2($Vi1, $V4, { 5: 283 }), o2($VG1, [2, 131], { 108: 269, 10: $Vx1, 60: $Vy1, 84: $Vz1, 105: $VA1, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }), o2($Vl1, [2, 126], { 120: 167, 10: [1, 284], 14: $VE, 44: $VF, 60: $VG, 89: $VH, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO }), o2($Vl1, [2, 127], { 120: 167, 10: [1, 285], 14: $VE, 44: $VF, 60: $VG, 89: $VH, 105: $VI, 106: $VJ, 109: $VK, 111: $VL, 114: $VM, 115: $VN, 116: $VO }), o2($Vl1, [2, 114]), { 31: [1, 286], 67: $Vn1, 82: 218, 116: $Vq1, 117: $Vr1, 118: $Vs1 }, { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 287], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 42: 28, 43: 38, 44: $Vd, 45: 39, 47: 40, 60: $Ve, 84: $Vf, 85: $Vg, 86: $Vh, 87: $Vi, 88: $Vj, 89: $Vk, 102: $Vl, 105: $Vm, 106: $Vn, 109: $Vo, 111: $Vp, 113: 41, 114: $Vq, 115: $Vr, 116: $Vs, 121: $Vt, 122: $Vu, 123: $Vv, 124: $Vw }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 288, 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, { 10: $Vx1, 60: $Vy1, 84: $Vz1, 92: 289, 105: $VA1, 107: 241, 108: 242, 109: $VB1, 110: $VC1, 111: $VD1, 112: $VE1 }, o2($VQ, [2, 62]), o2($Vy, [2, 33]), o2($Vl1, [2, 124], { 106: $VF1 }), o2($Vl1, [2, 125], { 106: $VF1 })], + defaultActions: {}, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); + } else { + var error3 = new Error(str2); + error3.hash = hash; + throw error3; } }, "parseError"), parse: /* @__PURE__ */ __name(function parse7(input) { var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); + var lexer2 = Object.create(this.lexer); var sharedState = { yy: {} }; for (var k2 in this.yy) { if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { sharedState.yy[k2] = this.yy[k2]; } } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; } - var yyloc = lexer3.yylloc; + var yyloc = lexer2.yylloc; lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; + var ranges = lexer2.options && lexer2.options.ranges; if (typeof sharedState.yy.parseError === "function") { this.parseError = sharedState.yy.parseError; } else { @@ -96448,7 +91270,7 @@ g.stateGroup line { __name(popStack, "popStack"); function lex() { var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; + token2 = tstack.pop() || lexer2.lex() || EOF2; if (typeof token2 !== "number") { if (token2 instanceof Array) { tstack = token2; @@ -96459,53 +91281,53 @@ g.stateGroup line { return token2; } __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; } else { if (symbol === null || typeof symbol == "undefined") { symbol = lex(); } - action = table[state4] && table[state4][symbol]; + action = table[state3] && table[state3][symbol]; } if (typeof action === "undefined" || !action.length || !action[0]) { var errStr = ""; expected = []; - for (p3 in table[state4]) { + for (p3 in table[state3]) { if (this.terminals_[p3] && p3 > TERROR) { expected.push("'" + this.terminals_[p3] + "'"); } } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; } else { errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); } this.parseError(errStr, { - text: lexer3.match, + text: lexer2.match, token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, + line: lexer2.yylineno, loc: yyloc, expected }); } if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); } switch (action[0]) { case 1: stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); stack.push(action[1]); symbol = null; if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; if (recovering > 0) { recovering--; } @@ -96559,8 +91381,8 @@ g.stateGroup line { return true; }, "parse") }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { EOF: 1, parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { if (this.yy.parser) { @@ -96838,78 +91660,438 @@ g.stateGroup line { stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { return this.conditionStack.length; }, "stateStackSize"), - options: { "case-insensitive": true }, + options: {}, performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { var YYSTATE = YY_START; switch ($avoiding_name_collisions) { case 0: + this.begin("acc_title"); + return 34; break; case 1: + this.popState(); + return "acc_title_value"; break; case 2: - return 10; + this.begin("acc_descr"); + return 36; break; case 3: + this.popState(); + return "acc_descr_value"; break; case 4: + this.begin("acc_descr_multiline"); break; case 5: - return 4; + this.popState(); break; case 6: - return 11; + return "acc_descr_multiline_value"; break; case 7: - this.begin("acc_title"); - return 12; + this.pushState("shapeData"); + yy_.yytext = ""; + return 40; break; case 8: - this.popState(); - return "acc_title_value"; + this.pushState("shapeDataStr"); + return 40; break; case 9: - this.begin("acc_descr"); - return 14; + this.popState(); + return 40; break; case 10: - this.popState(); - return "acc_descr_value"; + const re3 = /\n\s*/g; + yy_.yytext = yy_.yytext.replace(re3, "
    "); + return 40; break; case 11: - this.begin("acc_descr_multiline"); + return 40; break; case 12: this.popState(); break; case 13: - return "acc_descr_multiline_value"; + this.begin("callbackname"); break; case 14: - return 17; + this.popState(); break; case 15: - return 18; + this.popState(); + this.begin("callbackargs"); break; case 16: - return 19; + return 95; break; case 17: - return ":"; + this.popState(); break; case 18: - return 6; + return 96; break; case 19: - return "INVALID"; + return "MD_STR"; + break; + case 20: + this.popState(); + break; + case 21: + this.begin("md_string"); + break; + case 22: + return "STR"; + break; + case 23: + this.popState(); + break; + case 24: + this.pushState("string"); + break; + case 25: + return 84; + break; + case 26: + return 102; + break; + case 27: + return 85; + break; + case 28: + return 104; + break; + case 29: + return 86; + break; + case 30: + return 87; + break; + case 31: + return 97; + break; + case 32: + this.begin("click"); + break; + case 33: + this.popState(); + break; + case 34: + return 88; + break; + case 35: + if (yy.lex.firstGraph()) { + this.begin("dir"); + } + return 12; + break; + case 36: + if (yy.lex.firstGraph()) { + this.begin("dir"); + } + return 12; + break; + case 37: + if (yy.lex.firstGraph()) { + this.begin("dir"); + } + return 12; + break; + case 38: + return 27; + break; + case 39: + return 32; + break; + case 40: + return 98; + break; + case 41: + return 98; + break; + case 42: + return 98; + break; + case 43: + return 98; + break; + case 44: + this.popState(); + return 13; + break; + case 45: + this.popState(); + return 14; + break; + case 46: + this.popState(); + return 14; + break; + case 47: + this.popState(); + return 14; + break; + case 48: + this.popState(); + return 14; + break; + case 49: + this.popState(); + return 14; + break; + case 50: + this.popState(); + return 14; + break; + case 51: + this.popState(); + return 14; + break; + case 52: + this.popState(); + return 14; + break; + case 53: + this.popState(); + return 14; + break; + case 54: + this.popState(); + return 14; + break; + case 55: + return 121; + break; + case 56: + return 122; + break; + case 57: + return 123; + break; + case 58: + return 124; + break; + case 59: + return 78; + break; + case 60: + return 105; + break; + case 61: + return 111; + break; + case 62: + return 46; + break; + case 63: + return 60; + break; + case 64: + return 44; + break; + case 65: + return 8; + break; + case 66: + return 106; + break; + case 67: + return 115; + break; + case 68: + this.popState(); + return 77; + break; + case 69: + this.pushState("edgeText"); + return 75; + break; + case 70: + return 119; + break; + case 71: + this.popState(); + return 77; + break; + case 72: + this.pushState("thickEdgeText"); + return 75; + break; + case 73: + return 119; + break; + case 74: + this.popState(); + return 77; + break; + case 75: + this.pushState("dottedEdgeText"); + return 75; + break; + case 76: + return 119; + break; + case 77: + return 77; + break; + case 78: + this.popState(); + return 53; + break; + case 79: + return "TEXT"; + break; + case 80: + this.pushState("ellipseText"); + return 52; + break; + case 81: + this.popState(); + return 55; + break; + case 82: + this.pushState("text"); + return 54; + break; + case 83: + this.popState(); + return 57; + break; + case 84: + this.pushState("text"); + return 56; + break; + case 85: + return 58; + break; + case 86: + this.pushState("text"); + return 67; + break; + case 87: + this.popState(); + return 64; + break; + case 88: + this.pushState("text"); + return 63; + break; + case 89: + this.popState(); + return 49; + break; + case 90: + this.pushState("text"); + return 48; + break; + case 91: + this.popState(); + return 69; + break; + case 92: + this.popState(); + return 71; + break; + case 93: + return 117; + break; + case 94: + this.pushState("trapText"); + return 68; + break; + case 95: + this.pushState("trapText"); + return 70; + break; + case 96: + return 118; + break; + case 97: + return 67; + break; + case 98: + return 90; + break; + case 99: + return "SEP"; + break; + case 100: + return 89; + break; + case 101: + return 115; + break; + case 102: + return 111; + break; + case 103: + return 44; + break; + case 104: + return 109; + break; + case 105: + return 114; + break; + case 106: + return 116; + break; + case 107: + this.popState(); + return 62; + break; + case 108: + this.pushState("text"); + return 62; + break; + case 109: + this.popState(); + return 51; + break; + case 110: + this.pushState("text"); + return 50; + break; + case 111: + this.popState(); + return 31; + break; + case 112: + this.pushState("text"); + return 29; + break; + case 113: + this.popState(); + return 66; + break; + case 114: + this.pushState("text"); + return 65; + break; + case 115: + return "TEXT"; + break; + case 116: + return "QUOTE"; + break; + case 117: + return 9; + break; + case 118: + return 10; + break; + case 119: + return 11; break; } }, "anonymous"), - rules: [/^(?:%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:journey\b)/i, /^(?:title\s[^#\n;]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:section\s[^#:\n;]+)/i, /^(?:[^#:\n;]+)/i, /^(?::[^#\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i], - conditions: { "acc_descr_multiline": { "rules": [12, 13], "inclusive": false }, "acc_descr": { "rules": [10], "inclusive": false }, "acc_title": { "rules": [8], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19], "inclusive": true } } + rules: [/^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:@\{)/, /^(?:["])/, /^(?:["])/, /^(?:[^\"]+)/, /^(?:[^}^"]+)/, /^(?:\})/, /^(?:call[\s]+)/, /^(?:\([\s]*\))/, /^(?:\()/, /^(?:[^(]*)/, /^(?:\))/, /^(?:[^)]*)/, /^(?:[^`"]+)/, /^(?:[`]["])/, /^(?:["][`])/, /^(?:[^"]+)/, /^(?:["])/, /^(?:["])/, /^(?:style\b)/, /^(?:default\b)/, /^(?:linkStyle\b)/, /^(?:interpolate\b)/, /^(?:classDef\b)/, /^(?:class\b)/, /^(?:href[\s])/, /^(?:click[\s]+)/, /^(?:[\s\n])/, /^(?:[^\s\n]*)/, /^(?:flowchart-elk\b)/, /^(?:graph\b)/, /^(?:flowchart\b)/, /^(?:subgraph\b)/, /^(?:end\b\s*)/, /^(?:_self\b)/, /^(?:_blank\b)/, /^(?:_parent\b)/, /^(?:_top\b)/, /^(?:(\r?\n)*\s*\n)/, /^(?:\s*LR\b)/, /^(?:\s*RL\b)/, /^(?:\s*TB\b)/, /^(?:\s*BT\b)/, /^(?:\s*TD\b)/, /^(?:\s*BR\b)/, /^(?:\s*<)/, /^(?:\s*>)/, /^(?:\s*\^)/, /^(?:\s*v\b)/, /^(?:.*direction\s+TB[^\n]*)/, /^(?:.*direction\s+BT[^\n]*)/, /^(?:.*direction\s+RL[^\n]*)/, /^(?:.*direction\s+LR[^\n]*)/, /^(?:[^\s\"]+@(?=[^\{\"]))/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::::)/, /^(?::)/, /^(?:&)/, /^(?:;)/, /^(?:,)/, /^(?:\*)/, /^(?:\s*[xo<]?--+[-xo>]\s*)/, /^(?:\s*[xo<]?--\s*)/, /^(?:[^-]|-(?!-)+)/, /^(?:\s*[xo<]?==+[=xo>]\s*)/, /^(?:\s*[xo<]?==\s*)/, /^(?:[^=]|=(?!))/, /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/, /^(?:\s*[xo<]?-\.\s*)/, /^(?:[^\.]|\.(?!))/, /^(?:\s*~~[\~]+\s*)/, /^(?:[-/\)][\)])/, /^(?:[^\(\)\[\]\{\}]|!\)+)/, /^(?:\(-)/, /^(?:\]\))/, /^(?:\(\[)/, /^(?:\]\])/, /^(?:\[\[)/, /^(?:\[\|)/, /^(?:>)/, /^(?:\)\])/, /^(?:\[\()/, /^(?:\)\)\))/, /^(?:\(\(\()/, /^(?:[\\(?=\])][\]])/, /^(?:\/(?=\])\])/, /^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/, /^(?:\[\/)/, /^(?:\[\\)/, /^(?:<)/, /^(?:>)/, /^(?:\^)/, /^(?:\\\|)/, /^(?:v\b)/, /^(?:\*)/, /^(?:#)/, /^(?:&)/, /^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/, /^(?:-)/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\|)/, /^(?:\|)/, /^(?:\))/, /^(?:\()/, /^(?:\])/, /^(?:\[)/, /^(?:(\}))/, /^(?:\{)/, /^(?:[^\[\]\(\)\{\}\|\"]+)/, /^(?:")/, /^(?:(\r?\n)+)/, /^(?:\s)/, /^(?:$)/], + conditions: { "shapeDataEndBracket": { "rules": [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "shapeDataStr": { "rules": [9, 10, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "shapeData": { "rules": [8, 11, 12, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "callbackargs": { "rules": [17, 18, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "callbackname": { "rules": [14, 15, 16, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "href": { "rules": [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "click": { "rules": [21, 24, 33, 34, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "dottedEdgeText": { "rules": [21, 24, 74, 76, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "thickEdgeText": { "rules": [21, 24, 71, 73, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "edgeText": { "rules": [21, 24, 68, 70, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "trapText": { "rules": [21, 24, 77, 80, 82, 84, 88, 90, 91, 92, 93, 94, 95, 108, 110, 112, 114], "inclusive": false }, "ellipseText": { "rules": [21, 24, 77, 78, 79, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "text": { "rules": [21, 24, 77, 80, 81, 82, 83, 84, 87, 88, 89, 90, 94, 95, 107, 108, 109, 110, 111, 112, 113, 114, 115], "inclusive": false }, "vertex": { "rules": [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "dir": { "rules": [21, 24, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "acc_descr_multiline": { "rules": [5, 6, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "acc_descr": { "rules": [3, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "acc_title": { "rules": [1, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "md_string": { "rules": [19, 20, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "string": { "rules": [21, 22, 23, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], "inclusive": false }, "INITIAL": { "rules": [0, 2, 4, 7, 13, 21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 74, 75, 77, 80, 82, 84, 85, 86, 88, 90, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 110, 112, 114, 116, 117, 118, 119], "inclusive": true } } }; - return lexer3; - }(); - parser24.lexer = lexer2; + return lexer2; + })(); + parser24.lexer = lexer; function Parser3() { this.yy = {}; } @@ -96917,154 +92099,81 @@ g.stateGroup line { Parser3.prototype = parser24; parser24.Parser = Parser3; return new Parser3(); - }(); - parser15.parser = parser15; - journey_default = parser15; + })(); + parser2.parser = parser2; + flow_default = parser2; } }); - // src/diagrams/user-journey/journeyDb.js - var currentSection2, sections3, tasks2, rawTasks2, clear13, addSection3, getSections3, getTasks2, updateActors, addTask2, addTaskOrg2, compileTasks2, getActors, journeyDb_default; - var init_journeyDb = __esm({ - "src/diagrams/user-journey/journeyDb.js"() { + // src/diagrams/flowchart/parser/flowParser.ts + var newParser, flowParser_default; + var init_flowParser = __esm({ + "src/diagrams/flowchart/parser/flowParser.ts"() { "use strict"; - init_diagramAPI(); - init_commonDb(); - currentSection2 = ""; - sections3 = []; - tasks2 = []; - rawTasks2 = []; - clear13 = /* @__PURE__ */ __name(function() { - sections3.length = 0; - tasks2.length = 0; - currentSection2 = ""; - rawTasks2.length = 0; - clear(); - }, "clear"); - addSection3 = /* @__PURE__ */ __name(function(txt) { - currentSection2 = txt; - sections3.push(txt); - }, "addSection"); - getSections3 = /* @__PURE__ */ __name(function() { - return sections3; - }, "getSections"); - getTasks2 = /* @__PURE__ */ __name(function() { - let allItemsProcessed = compileTasks2(); - const maxDepth = 100; - let iterationCount = 0; - while (!allItemsProcessed && iterationCount < maxDepth) { - allItemsProcessed = compileTasks2(); - iterationCount++; - } - tasks2.push(...rawTasks2); - return tasks2; - }, "getTasks"); - updateActors = /* @__PURE__ */ __name(function() { - const tempActors = []; - tasks2.forEach((task) => { - if (task.people) { - tempActors.push(...task.people); - } - }); - const unique = new Set(tempActors); - return [...unique].sort(); - }, "updateActors"); - addTask2 = /* @__PURE__ */ __name(function(descr, taskData) { - const pieces = taskData.substr(1).split(":"); - let score = 0; - let peeps = []; - if (pieces.length === 1) { - score = Number(pieces[0]); - peeps = []; - } else { - score = Number(pieces[0]); - peeps = pieces[1].split(","); - } - const peopleList = peeps.map((s2) => s2.trim()); - const rawTask = { - section: currentSection2, - type: currentSection2, - people: peopleList, - task: descr, - score - }; - rawTasks2.push(rawTask); - }, "addTask"); - addTaskOrg2 = /* @__PURE__ */ __name(function(descr) { - const newTask = { - section: currentSection2, - type: currentSection2, - description: descr, - task: descr, - classes: [] - }; - tasks2.push(newTask); - }, "addTaskOrg"); - compileTasks2 = /* @__PURE__ */ __name(function() { - const compileTask = /* @__PURE__ */ __name(function(pos) { - return rawTasks2[pos].processed; - }, "compileTask"); - let allProcessed = true; - for (const [i2, rawTask] of rawTasks2.entries()) { - compileTask(i2); - allProcessed = allProcessed && rawTask.processed; - } - return allProcessed; - }, "compileTasks"); - getActors = /* @__PURE__ */ __name(function() { - return updateActors(); - }, "getActors"); - journeyDb_default = { - getConfig: /* @__PURE__ */ __name(() => getConfig2().journey, "getConfig"), - clear: clear13, - setDiagramTitle, - getDiagramTitle, - setAccTitle, - getAccTitle, - setAccDescription, - getAccDescription, - addSection: addSection3, - getSections: getSections3, - getTasks: getTasks2, - addTask: addTask2, - addTaskOrg: addTaskOrg2, - getActors + init_flow(); + newParser = Object.assign({}, flow_default); + newParser.parse = (src) => { + const newSrc = src.replace(/}\s*\n/g, "}\n"); + return flow_default.parse(newSrc); }; + flowParser_default = newParser; } }); - // src/diagrams/user-journey/styles.js - var getStyles12, styles_default11; - var init_styles11 = __esm({ - "src/diagrams/user-journey/styles.js"() { + // src/diagrams/globalStyles.ts + var getIconStyles; + var init_globalStyles = __esm({ + "src/diagrams/globalStyles.ts"() { "use strict"; - getStyles12 = /* @__PURE__ */ __name((options3) => `.label { - font-family: ${options3.fontFamily}; - color: ${options3.textColor}; + getIconStyles = /* @__PURE__ */ __name(() => ` + /* Font Awesome icon styling - consolidated */ + .label-icon { + display: inline-block; + height: 1em; + overflow: visible; + vertical-align: -0.125em; } - .mouth { - stroke: #666; + + .node .label-icon path { + fill: currentColor; + stroke: revert; + stroke-width: revert; } +`, "getIconStyles"); + } + }); - line { - stroke: ${options3.textColor} + // src/diagrams/flowchart/styles.ts + var fade, getStyles3, styles_default3; + var init_styles3 = __esm({ + "src/diagrams/flowchart/styles.ts"() { + "use strict"; + init_dist(); + init_globalStyles(); + fade = /* @__PURE__ */ __name((color2, opacity) => { + const channel2 = channel_default2; + const r2 = channel2(color2, "r"); + const g2 = channel2(color2, "g"); + const b3 = channel2(color2, "b"); + return rgba_default(r2, g2, b3, opacity); + }, "fade"); + getStyles3 = /* @__PURE__ */ __name((options2) => `.label { + font-family: ${options2.fontFamily}; + color: ${options2.nodeTextColor || options2.textColor}; } - - .legend { - fill: ${options3.textColor}; - font-family: ${options3.fontFamily}; + .cluster-label text { + fill: ${options2.titleColor}; } - - .label text { - fill: #333; + .cluster-label span { + color: ${options2.titleColor}; } - .label { - color: ${options3.textColor} + .cluster-label span p { + background-color: transparent; } - .face { - ${options3.faceColor ? `fill: ${options3.faceColor}` : "fill: #FFF8DC"}; - stroke: #999; + .label text,span { + fill: ${options2.nodeTextColor || options2.textColor}; + color: ${options2.nodeTextColor || options2.textColor}; } .node rect, @@ -97072,578 +92181,190 @@ g.stateGroup line { .node ellipse, .node polygon, .node path { - fill: ${options3.mainBkg}; - stroke: ${options3.nodeBorder}; + fill: ${options2.mainBkg}; + stroke: ${options2.nodeBorder}; stroke-width: 1px; } + .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } - .node .label { + .node .katex path { + fill: #000; + stroke: #000; + stroke-width: 1px; + } + + .rough-node .label,.node .label, .image-shape .label, .icon-shape .label { text-align: center; } .node.clickable { cursor: pointer; } + + .root .anchor path { + fill: ${options2.lineColor} !important; + stroke-width: 0; + stroke: ${options2.lineColor}; + } + .arrowheadPath { - fill: ${options3.arrowheadColor}; + fill: ${options2.arrowheadColor}; } .edgePath .path { - stroke: ${options3.lineColor}; - stroke-width: 1.5px; + stroke: ${options2.lineColor}; + stroke-width: 2.0px; } .flowchart-link { - stroke: ${options3.lineColor}; + stroke: ${options2.lineColor}; fill: none; } .edgeLabel { - background-color: ${options3.edgeLabelBackground}; + background-color: ${options2.edgeLabelBackground}; + p { + background-color: ${options2.edgeLabelBackground}; + } rect { opacity: 0.5; + background-color: ${options2.edgeLabelBackground}; + fill: ${options2.edgeLabelBackground}; } text-align: center; } + /* For html labels only */ + .labelBkg { + background-color: ${fade(options2.edgeLabelBackground, 0.5)}; + // background-color: + } + .cluster rect { + fill: ${options2.clusterBkg}; + stroke: ${options2.clusterBorder}; + stroke-width: 1px; } .cluster text { - fill: ${options3.titleColor}; + fill: ${options2.titleColor}; } + .cluster span { + color: ${options2.titleColor}; + } + /* .cluster div { + color: ${options2.titleColor}; + } */ + div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; - font-family: ${options3.fontFamily}; + font-family: ${options2.fontFamily}; font-size: 12px; - background: ${options3.tertiaryColor}; - border: 1px solid ${options3.border2}; + background: ${options2.tertiaryColor}; + border: 1px solid ${options2.border2}; border-radius: 2px; pointer-events: none; z-index: 100; } - .task-type-0, .section-type-0 { - ${options3.fillType0 ? `fill: ${options3.fillType0}` : ""}; - } - .task-type-1, .section-type-1 { - ${options3.fillType0 ? `fill: ${options3.fillType1}` : ""}; - } - .task-type-2, .section-type-2 { - ${options3.fillType0 ? `fill: ${options3.fillType2}` : ""}; - } - .task-type-3, .section-type-3 { - ${options3.fillType0 ? `fill: ${options3.fillType3}` : ""}; - } - .task-type-4, .section-type-4 { - ${options3.fillType0 ? `fill: ${options3.fillType4}` : ""}; - } - .task-type-5, .section-type-5 { - ${options3.fillType0 ? `fill: ${options3.fillType5}` : ""}; - } - .task-type-6, .section-type-6 { - ${options3.fillType0 ? `fill: ${options3.fillType6}` : ""}; - } - .task-type-7, .section-type-7 { - ${options3.fillType0 ? `fill: ${options3.fillType7}` : ""}; + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${options2.textColor}; } - .actor-0 { - ${options3.actor0 ? `fill: ${options3.actor0}` : ""}; - } - .actor-1 { - ${options3.actor1 ? `fill: ${options3.actor1}` : ""}; - } - .actor-2 { - ${options3.actor2 ? `fill: ${options3.actor2}` : ""}; - } - .actor-3 { - ${options3.actor3 ? `fill: ${options3.actor3}` : ""}; - } - .actor-4 { - ${options3.actor4 ? `fill: ${options3.actor4}` : ""}; + rect.text { + fill: none; + stroke-width: 0; } - .actor-5 { - ${options3.actor5 ? `fill: ${options3.actor5}` : ""}; + + .icon-shape, .image-shape { + background-color: ${options2.edgeLabelBackground}; + p { + background-color: ${options2.edgeLabelBackground}; + padding: 2px; + } + rect { + opacity: 0.5; + background-color: ${options2.edgeLabelBackground}; + fill: ${options2.edgeLabelBackground}; + } + text-align: center; } + ${getIconStyles()} `, "getStyles"); - styles_default11 = getStyles12; + styles_default3 = getStyles3; } }); - // src/diagrams/user-journey/svgDraw.js - var drawRect5, drawFace, drawCircle, drawText4, drawLabel2, drawSection, taskCount, drawTask, drawBackgroundRect3, _drawTextCandidateFunc3, initGraphics, svgDraw_default3; - var init_svgDraw3 = __esm({ - "src/diagrams/user-journey/svgDraw.js"() { + // src/diagrams/flowchart/flowDiagram.ts + var flowDiagram_exports = {}; + __export(flowDiagram_exports, { + diagram: () => diagram2 + }); + var diagram2; + var init_flowDiagram = __esm({ + "src/diagrams/flowchart/flowDiagram.ts"() { "use strict"; - init_src32(); - init_svgDrawCommon(); - drawRect5 = /* @__PURE__ */ __name(function(elem, rectData) { - return drawRect(elem, rectData); - }, "drawRect"); - drawFace = /* @__PURE__ */ __name(function(element3, faceData) { - const radius2 = 15; - const circleElement = element3.append("circle").attr("cx", faceData.cx).attr("cy", faceData.cy).attr("class", "face").attr("r", radius2).attr("stroke-width", 2).attr("overflow", "visible"); - const face = element3.append("g"); - face.append("circle").attr("cx", faceData.cx - radius2 / 3).attr("cy", faceData.cy - radius2 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"); - face.append("circle").attr("cx", faceData.cx + radius2 / 3).attr("cy", faceData.cy - radius2 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"); - function smile(face2) { - const arc = arc_default().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius2 / 2).outerRadius(radius2 / 2.2); - face2.append("path").attr("class", "mouth").attr("d", arc).attr("transform", "translate(" + faceData.cx + "," + (faceData.cy + 2) + ")"); - } - __name(smile, "smile"); - function sad(face2) { - const arc = arc_default().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius2 / 2).outerRadius(radius2 / 2.2); - face2.append("path").attr("class", "mouth").attr("d", arc).attr("transform", "translate(" + faceData.cx + "," + (faceData.cy + 7) + ")"); - } - __name(sad, "sad"); - function ambivalent(face2) { - face2.append("line").attr("class", "mouth").attr("stroke", 2).attr("x1", faceData.cx - 5).attr("y1", faceData.cy + 7).attr("x2", faceData.cx + 5).attr("y2", faceData.cy + 7).attr("class", "mouth").attr("stroke-width", "1px").attr("stroke", "#666"); - } - __name(ambivalent, "ambivalent"); - if (faceData.score > 3) { - smile(face); - } else if (faceData.score < 3) { - sad(face); - } else { - ambivalent(face); - } - return circleElement; - }, "drawFace"); - drawCircle = /* @__PURE__ */ __name(function(element3, circleData) { - const circleElement = element3.append("circle"); - circleElement.attr("cx", circleData.cx); - circleElement.attr("cy", circleData.cy); - circleElement.attr("class", "actor-" + circleData.pos); - circleElement.attr("fill", circleData.fill); - circleElement.attr("stroke", circleData.stroke); - circleElement.attr("r", circleData.r); - if (circleElement.class !== void 0) { - circleElement.attr("class", circleElement.class); - } - if (circleData.title !== void 0) { - circleElement.append("title").text(circleData.title); - } - return circleElement; - }, "drawCircle"); - drawText4 = /* @__PURE__ */ __name(function(elem, textData) { - return drawText(elem, textData); - }, "drawText"); - drawLabel2 = /* @__PURE__ */ __name(function(elem, txtObject) { - function genPoints(x5, y5, width3, height2, cut) { - return x5 + "," + y5 + " " + (x5 + width3) + "," + y5 + " " + (x5 + width3) + "," + (y5 + height2 - cut) + " " + (x5 + width3 - cut * 1.2) + "," + (y5 + height2) + " " + x5 + "," + (y5 + height2); - } - __name(genPoints, "genPoints"); - const polygon2 = elem.append("polygon"); - polygon2.attr("points", genPoints(txtObject.x, txtObject.y, 50, 20, 7)); - polygon2.attr("class", "labelBox"); - txtObject.y = txtObject.y + txtObject.labelMargin; - txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin; - drawText4(elem, txtObject); - }, "drawLabel"); - drawSection = /* @__PURE__ */ __name(function(elem, section, conf5) { - const g2 = elem.append("g"); - const rect3 = getNoteRect(); - rect3.x = section.x; - rect3.y = section.y; - rect3.fill = section.fill; - rect3.width = conf5.width * section.taskCount + // width of the tasks - conf5.diagramMarginX * (section.taskCount - 1); - rect3.height = conf5.height; - rect3.class = "journey-section section-type-" + section.num; - rect3.rx = 3; - rect3.ry = 3; - drawRect5(g2, rect3); - _drawTextCandidateFunc3(conf5)( - section.text, - g2, - rect3.x, - rect3.y, - rect3.width, - rect3.height, - { class: "journey-section section-type-" + section.num }, - conf5, - section.colour - ); - }, "drawSection"); - taskCount = -1; - drawTask = /* @__PURE__ */ __name(function(elem, task, conf5) { - const center4 = task.x + conf5.width / 2; - const g2 = elem.append("g"); - taskCount++; - const maxHeight = 300 + 5 * 30; - g2.append("line").attr("id", "task" + taskCount).attr("x1", center4).attr("y1", task.y).attr("x2", center4).attr("y2", maxHeight).attr("class", "task-line").attr("stroke-width", "1px").attr("stroke-dasharray", "4 2").attr("stroke", "#666"); - drawFace(g2, { - cx: center4, - cy: 300 + (5 - task.score) * 30, - score: task.score - }); - const rect3 = getNoteRect(); - rect3.x = task.x; - rect3.y = task.y; - rect3.fill = task.fill; - rect3.width = conf5.width; - rect3.height = conf5.height; - rect3.class = "task task-type-" + task.num; - rect3.rx = 3; - rect3.ry = 3; - drawRect5(g2, rect3); - let xPos = task.x + 14; - task.people.forEach((person) => { - const colour = task.actors[person].color; - const circle6 = { - cx: xPos, - cy: task.y, - r: 7, - fill: colour, - stroke: "#000", - title: person, - pos: task.actors[person].position - }; - drawCircle(g2, circle6); - xPos += 10; - }); - _drawTextCandidateFunc3(conf5)( - task.task, - g2, - rect3.x, - rect3.y, - rect3.width, - rect3.height, - { class: "task" }, - conf5, - task.colour - ); - }, "drawTask"); - drawBackgroundRect3 = /* @__PURE__ */ __name(function(elem, bounds4) { - drawBackgroundRect(elem, bounds4); - }, "drawBackgroundRect"); - _drawTextCandidateFunc3 = /* @__PURE__ */ function() { - function byText(content, g2, x5, y5, width3, height2, textAttrs, colour) { - const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y5 + height2 / 2 + 5).style("font-color", colour).style("text-anchor", "middle").text(content); - _setTextAttrs(text4, textAttrs); - } - __name(byText, "byText"); - function byTspan(content, g2, x5, y5, width3, height2, textAttrs, conf5, colour) { - const { taskFontSize, taskFontFamily } = conf5; - const lines = content.split(//gi); - for (let i2 = 0; i2 < lines.length; i2++) { - const dy = i2 * taskFontSize - taskFontSize * (lines.length - 1) / 2; - const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y5).attr("fill", colour).style("text-anchor", "middle").style("font-size", taskFontSize).style("font-family", taskFontFamily); - text4.append("tspan").attr("x", x5 + width3 / 2).attr("dy", dy).text(lines[i2]); - text4.attr("y", y5 + height2 / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central"); - _setTextAttrs(text4, textAttrs); - } - } - __name(byTspan, "byTspan"); - function byFo(content, g2, x5, y5, width3, height2, textAttrs, conf5) { - const body = g2.append("switch"); - const f2 = body.append("foreignObject").attr("x", x5).attr("y", y5).attr("width", width3).attr("height", height2).attr("position", "fixed"); - const text4 = f2.append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); - text4.append("div").attr("class", "label").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(content); - byTspan(content, body, x5, y5, width3, height2, textAttrs, conf5); - _setTextAttrs(text4, textAttrs); - } - __name(byFo, "byFo"); - function _setTextAttrs(toText, fromTextAttrsDict) { - for (const key in fromTextAttrsDict) { - if (key in fromTextAttrsDict) { - toText.attr(key, fromTextAttrsDict[key]); - } - } - } - __name(_setTextAttrs, "_setTextAttrs"); - return function(conf5) { - return conf5.textPlacement === "fo" ? byFo : conf5.textPlacement === "old" ? byText : byTspan; - }; - }(); - initGraphics = /* @__PURE__ */ __name(function(graphics) { - graphics.append("defs").append("marker").attr("id", "arrowhead").attr("refX", 5).attr("refY", 2).attr("markerWidth", 6).attr("markerHeight", 4).attr("orient", "auto").append("path").attr("d", "M 0,0 V 4 L6,2 Z"); - }, "initGraphics"); - svgDraw_default3 = { - drawRect: drawRect5, - drawCircle, - drawSection, - drawText: drawText4, - drawLabel: drawLabel2, - drawTask, - drawBackgroundRect: drawBackgroundRect3, - initGraphics - }; - } - }); - - // src/diagrams/user-journey/journeyRenderer.ts - function drawActorLegend(diagram26) { - const conf5 = getConfig2().journey; - let yPos = 60; - Object.keys(actors).forEach((person) => { - const colour = actors[person].color; - const circleData = { - cx: 20, - cy: yPos, - r: 7, - fill: colour, - stroke: "#000", - pos: actors[person].position - }; - svgDraw_default3.drawCircle(diagram26, circleData); - const labelData = { - x: 40, - y: yPos + 7, - fill: "#666", - text: person, - textMargin: conf5.boxTextMargin | 5 - }; - svgDraw_default3.drawText(diagram26, labelData); - yPos += 20; - }); - } - var setConf5, actors, conf4, LEFT_MARGIN, draw15, bounds2, fills, textColours, drawTasks, journeyRenderer_default; - var init_journeyRenderer = __esm({ - "src/diagrams/user-journey/journeyRenderer.ts"() { - "use strict"; - init_src32(); - init_svgDraw3(); init_diagramAPI(); - init_setupGraphViewbox(); - setConf5 = /* @__PURE__ */ __name(function(cnf) { - const keys3 = Object.keys(cnf); - keys3.forEach(function(key) { - conf4[key] = cnf[key]; - }); - }, "setConf"); - actors = {}; - __name(drawActorLegend, "drawActorLegend"); - conf4 = getConfig2().journey; - LEFT_MARGIN = conf4.leftMargin; - draw15 = /* @__PURE__ */ __name(function(text4, id29, version2, diagObj) { - const conf5 = getConfig2().journey; - const securityLevel = getConfig2().securityLevel; - let sandboxElement; - if (securityLevel === "sandbox") { - sandboxElement = select_default2("#i" + id29); - } - const root4 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); - bounds2.init(); - const diagram26 = root4.select("#" + id29); - svgDraw_default3.initGraphics(diagram26); - const tasks4 = diagObj.db.getTasks(); - const title2 = diagObj.db.getDiagramTitle(); - const actorNames = diagObj.db.getActors(); - for (const member in actors) { - delete actors[member]; - } - let actorPos = 0; - actorNames.forEach((actorName) => { - actors[actorName] = { - color: conf5.actorColours[actorPos % conf5.actorColours.length], - position: actorPos - }; - actorPos++; - }); - drawActorLegend(diagram26); - bounds2.insert(0, 0, LEFT_MARGIN, Object.keys(actors).length * 50); - drawTasks(diagram26, tasks4, 0); - const box = bounds2.getBounds(); - if (title2) { - diagram26.append("text").text(title2).attr("x", LEFT_MARGIN).attr("font-size", "4ex").attr("font-weight", "bold").attr("y", 25); - } - const height2 = box.stopy - box.starty + 2 * conf5.diagramMarginY; - const width3 = LEFT_MARGIN + box.stopx + 2 * conf5.diagramMarginX; - configureSvgSize(diagram26, height2, width3, conf5.useMaxWidth); - diagram26.append("line").attr("x1", LEFT_MARGIN).attr("y1", conf5.height * 4).attr("x2", width3 - LEFT_MARGIN - 4).attr("y2", conf5.height * 4).attr("stroke-width", 4).attr("stroke", "black").attr("marker-end", "url(#arrowhead)"); - const extraVertForTitle = title2 ? 70 : 0; - diagram26.attr("viewBox", `${box.startx} -25 ${width3} ${height2 + extraVertForTitle}`); - diagram26.attr("preserveAspectRatio", "xMinYMin meet"); - diagram26.attr("height", height2 + extraVertForTitle + 25); - }, "draw"); - bounds2 = { - data: { - startx: void 0, - stopx: void 0, - starty: void 0, - stopy: void 0 + init_flowDb(); + init_flowRenderer_v3_unified(); + init_flowParser(); + init_styles3(); + diagram2 = { + parser: flowParser_default, + get db() { + return new FlowDB(); }, - verticalPos: 0, - sequenceItems: [], - init: /* @__PURE__ */ __name(function() { - this.sequenceItems = []; - this.data = { - startx: void 0, - stopx: void 0, - starty: void 0, - stopy: void 0 - }; - this.verticalPos = 0; - }, "init"), - updateVal: /* @__PURE__ */ __name(function(obj, key, val, fun) { - if (obj[key] === void 0) { - obj[key] = val; - } else { - obj[key] = fun(val, obj[key]); - } - }, "updateVal"), - updateBounds: /* @__PURE__ */ __name(function(startx, starty, stopx, stopy) { - const conf5 = getConfig2().journey; - const _self = this; - let cnt5 = 0; - function updateFn(type3) { - return /* @__PURE__ */ __name(function updateItemBounds(item) { - cnt5++; - const n2 = _self.sequenceItems.length - cnt5 + 1; - _self.updateVal(item, "starty", starty - n2 * conf5.boxMargin, Math.min); - _self.updateVal(item, "stopy", stopy + n2 * conf5.boxMargin, Math.max); - _self.updateVal(bounds2.data, "startx", startx - n2 * conf5.boxMargin, Math.min); - _self.updateVal(bounds2.data, "stopx", stopx + n2 * conf5.boxMargin, Math.max); - if (!(type3 === "activation")) { - _self.updateVal(item, "startx", startx - n2 * conf5.boxMargin, Math.min); - _self.updateVal(item, "stopx", stopx + n2 * conf5.boxMargin, Math.max); - _self.updateVal(bounds2.data, "starty", starty - n2 * conf5.boxMargin, Math.min); - _self.updateVal(bounds2.data, "stopy", stopy + n2 * conf5.boxMargin, Math.max); - } - }, "updateItemBounds"); + renderer: flowRenderer_v3_unified_default, + styles: styles_default3, + init: /* @__PURE__ */ __name((cnf) => { + if (!cnf.flowchart) { + cnf.flowchart = {}; } - __name(updateFn, "updateFn"); - this.sequenceItems.forEach(updateFn()); - }, "updateBounds"), - insert: /* @__PURE__ */ __name(function(startx, starty, stopx, stopy) { - const _startx = Math.min(startx, stopx); - const _stopx = Math.max(startx, stopx); - const _starty = Math.min(starty, stopy); - const _stopy = Math.max(starty, stopy); - this.updateVal(bounds2.data, "startx", _startx, Math.min); - this.updateVal(bounds2.data, "starty", _starty, Math.min); - this.updateVal(bounds2.data, "stopx", _stopx, Math.max); - this.updateVal(bounds2.data, "stopy", _stopy, Math.max); - this.updateBounds(_startx, _starty, _stopx, _stopy); - }, "insert"), - bumpVerticalPos: /* @__PURE__ */ __name(function(bump) { - this.verticalPos = this.verticalPos + bump; - this.data.stopy = this.verticalPos; - }, "bumpVerticalPos"), - getVerticalPos: /* @__PURE__ */ __name(function() { - return this.verticalPos; - }, "getVerticalPos"), - getBounds: /* @__PURE__ */ __name(function() { - return this.data; - }, "getBounds") - }; - fills = conf4.sectionFills; - textColours = conf4.sectionColours; - drawTasks = /* @__PURE__ */ __name(function(diagram26, tasks4, verticalPos) { - const conf5 = getConfig2().journey; - let lastSection = ""; - const sectionVHeight = conf5.height * 2 + conf5.diagramMarginY; - const taskPos = verticalPos + sectionVHeight; - let sectionNumber = 0; - let fill = "#CCC"; - let colour = "black"; - let num = 0; - for (const [i2, task] of tasks4.entries()) { - if (lastSection !== task.section) { - fill = fills[sectionNumber % fills.length]; - num = sectionNumber % fills.length; - colour = textColours[sectionNumber % textColours.length]; - let taskInSectionCount = 0; - const currentSection4 = task.section; - for (let taskIndex = i2; taskIndex < tasks4.length; taskIndex++) { - if (tasks4[taskIndex].section == currentSection4) { - taskInSectionCount = taskInSectionCount + 1; - } else { - break; - } - } - const section = { - x: i2 * conf5.taskMargin + i2 * conf5.width + LEFT_MARGIN, - y: 50, - text: task.section, - fill, - num, - colour, - taskCount: taskInSectionCount - }; - svgDraw_default3.drawSection(diagram26, section, conf5); - lastSection = task.section; - sectionNumber++; + if (cnf.layout) { + setConfig2({ layout: cnf.layout }); } - const taskActors = task.people.reduce((acc, actorName) => { - if (actors[actorName]) { - acc[actorName] = actors[actorName]; - } - return acc; - }, {}); - task.x = i2 * conf5.taskMargin + i2 * conf5.width + LEFT_MARGIN; - task.y = taskPos; - task.width = conf5.diagramMarginX; - task.height = conf5.diagramMarginY; - task.colour = colour; - task.fill = fill; - task.num = num; - task.actors = taskActors; - svgDraw_default3.drawTask(diagram26, task, conf5); - bounds2.insert(task.x, task.y, task.x + task.width + conf5.taskMargin, 300 + 5 * 30); - } - }, "drawTasks"); - journeyRenderer_default = { - setConf: setConf5, - draw: draw15 - }; - } - }); - - // src/diagrams/user-journey/journeyDiagram.ts - var journeyDiagram_exports = {}; - __export(journeyDiagram_exports, { - diagram: () => diagram16 - }); - var diagram16; - var init_journeyDiagram = __esm({ - "src/diagrams/user-journey/journeyDiagram.ts"() { - "use strict"; - init_journey(); - init_journeyDb(); - init_styles11(); - init_journeyRenderer(); - diagram16 = { - parser: journey_default, - db: journeyDb_default, - renderer: journeyRenderer_default, - styles: styles_default11, - init: /* @__PURE__ */ __name((cnf) => { - journeyRenderer_default.setConf(cnf.journey); - journeyDb_default.clear(); + cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute; + setConfig2({ flowchart: { arrowMarkerAbsolute: cnf.arrowMarkerAbsolute } }); }, "init") }; } }); - // src/diagrams/timeline/parser/timeline.jison - var parser16, timeline_default; - var init_timeline = __esm({ - "src/diagrams/timeline/parser/timeline.jison"() { + // src/diagrams/er/parser/erDiagram.jison + var parser3, erDiagram_default; + var init_erDiagram = __esm({ + "src/diagrams/er/parser/erDiagram.jison"() { "use strict"; - parser16 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; + parser3 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; return o3; - }, "o"), $V0 = [6, 8, 10, 11, 12, 14, 16, 17, 20, 21], $V1 = [1, 9], $V2 = [1, 10], $V3 = [1, 11], $V4 = [1, 12], $V5 = [1, 13], $V6 = [1, 16], $V7 = [1, 17]; + }, "o"), $V0 = [6, 8, 10, 22, 24, 26, 28, 33, 34, 35, 36, 37, 40, 43, 44, 50], $V1 = [1, 10], $V2 = [1, 11], $V3 = [1, 12], $V4 = [1, 13], $V5 = [1, 20], $V6 = [1, 21], $V7 = [1, 22], $V8 = [1, 23], $V9 = [1, 24], $Va = [1, 19], $Vb = [1, 25], $Vc = [1, 26], $Vd = [1, 18], $Ve = [1, 33], $Vf = [1, 34], $Vg = [1, 35], $Vh = [1, 36], $Vi = [1, 37], $Vj = [6, 8, 10, 13, 15, 17, 20, 21, 22, 24, 26, 28, 33, 34, 35, 36, 37, 40, 43, 44, 50, 63, 64, 65, 66, 67], $Vk = [1, 42], $Vl = [1, 43], $Vm = [1, 52], $Vn = [40, 50, 68, 69], $Vo = [1, 63], $Vp = [1, 61], $Vq = [1, 58], $Vr = [1, 62], $Vs = [1, 64], $Vt = [6, 8, 10, 13, 17, 22, 24, 26, 28, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 48, 49, 50, 63, 64, 65, 66, 67], $Vu = [63, 64, 65, 66, 67], $Vv = [1, 81], $Vw = [1, 80], $Vx = [1, 78], $Vy = [1, 79], $Vz = [6, 10, 42, 47], $VA = [6, 10, 13, 41, 42, 47, 48, 49], $VB = [1, 89], $VC = [1, 88], $VD = [1, 87], $VE = [19, 56], $VF = [1, 98], $VG = [1, 97], $VH = [19, 56, 58, 60]; var parser24 = { trace: /* @__PURE__ */ __name(function trace() { }, "trace"), yy: {}, - symbols_: { "error": 2, "start": 3, "timeline": 4, "document": 5, "EOF": 6, "line": 7, "SPACE": 8, "statement": 9, "NEWLINE": 10, "title": 11, "acc_title": 12, "acc_title_value": 13, "acc_descr": 14, "acc_descr_value": 15, "acc_descr_multiline_value": 16, "section": 17, "period_statement": 18, "event_statement": 19, "period": 20, "event": 21, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 4: "timeline", 6: "EOF", 8: "SPACE", 10: "NEWLINE", 11: "title", 12: "acc_title", 13: "acc_title_value", 14: "acc_descr", 15: "acc_descr_value", 16: "acc_descr_multiline_value", 17: "section", 20: "period", 21: "event" }, - productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 1], [18, 1], [19, 1]], + symbols_: { "error": 2, "start": 3, "ER_DIAGRAM": 4, "document": 5, "EOF": 6, "line": 7, "SPACE": 8, "statement": 9, "NEWLINE": 10, "entityName": 11, "relSpec": 12, "COLON": 13, "role": 14, "STYLE_SEPARATOR": 15, "idList": 16, "BLOCK_START": 17, "attributes": 18, "BLOCK_STOP": 19, "SQS": 20, "SQE": 21, "title": 22, "title_value": 23, "acc_title": 24, "acc_title_value": 25, "acc_descr": 26, "acc_descr_value": 27, "acc_descr_multiline_value": 28, "direction": 29, "classDefStatement": 30, "classStatement": 31, "styleStatement": 32, "direction_tb": 33, "direction_bt": 34, "direction_rl": 35, "direction_lr": 36, "CLASSDEF": 37, "stylesOpt": 38, "separator": 39, "UNICODE_TEXT": 40, "STYLE_TEXT": 41, "COMMA": 42, "CLASS": 43, "STYLE": 44, "style": 45, "styleComponent": 46, "SEMI": 47, "NUM": 48, "BRKT": 49, "ENTITY_NAME": 50, "attribute": 51, "attributeType": 52, "attributeName": 53, "attributeKeyTypeList": 54, "attributeComment": 55, "ATTRIBUTE_WORD": 56, "attributeKeyType": 57, ",": 58, "ATTRIBUTE_KEY": 59, "COMMENT": 60, "cardinality": 61, "relType": 62, "ZERO_OR_ONE": 63, "ZERO_OR_MORE": 64, "ONE_OR_MORE": 65, "ONLY_ONE": 66, "MD_PARENT": 67, "NON_IDENTIFYING": 68, "IDENTIFYING": 69, "WORD": 70, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 4: "ER_DIAGRAM", 6: "EOF", 8: "SPACE", 10: "NEWLINE", 13: "COLON", 15: "STYLE_SEPARATOR", 17: "BLOCK_START", 19: "BLOCK_STOP", 20: "SQS", 21: "SQE", 22: "title", 23: "title_value", 24: "acc_title", 25: "acc_title_value", 26: "acc_descr", 27: "acc_descr_value", 28: "acc_descr_multiline_value", 33: "direction_tb", 34: "direction_bt", 35: "direction_rl", 36: "direction_lr", 37: "CLASSDEF", 40: "UNICODE_TEXT", 41: "STYLE_TEXT", 42: "COMMA", 43: "CLASS", 44: "STYLE", 47: "SEMI", 48: "NUM", 49: "BRKT", 50: "ENTITY_NAME", 56: "ATTRIBUTE_WORD", 58: ",", 59: "ATTRIBUTE_KEY", 60: "COMMENT", 63: "ZERO_OR_ONE", 64: "ZERO_OR_MORE", 65: "ONE_OR_MORE", 66: "ONLY_ONE", 67: "MD_PARENT", 68: "NON_IDENTIFYING", 69: "IDENTIFYING", 70: "WORD" }, + productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 5], [9, 9], [9, 7], [9, 7], [9, 4], [9, 6], [9, 3], [9, 5], [9, 1], [9, 3], [9, 7], [9, 9], [9, 6], [9, 8], [9, 4], [9, 6], [9, 2], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [29, 1], [29, 1], [29, 1], [29, 1], [30, 4], [16, 1], [16, 1], [16, 3], [16, 3], [31, 3], [32, 4], [38, 1], [38, 3], [45, 1], [45, 2], [39, 1], [39, 1], [39, 1], [46, 1], [46, 1], [46, 1], [46, 1], [11, 1], [11, 1], [18, 1], [18, 2], [51, 2], [51, 3], [51, 3], [51, 4], [52, 1], [53, 1], [54, 1], [54, 3], [57, 1], [55, 1], [12, 3], [61, 1], [61, 1], [61, 1], [61, 1], [61, 1], [62, 1], [62, 1], [14, 1], [14, 1], [14, 1]], performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { var $0 = $$.length - 1; switch (yystate) { case 1: - return $$[$0 - 1]; break; case 2: this.$ = []; @@ -97661,34 +92382,195 @@ g.stateGroup line { this.$ = []; break; case 8: - yy.getCommonDb().setDiagramTitle($$[$0].substr(6)); - this.$ = $$[$0].substr(6); + yy.addEntity($$[$0 - 4]); + yy.addEntity($$[$0 - 2]); + yy.addRelationship($$[$0 - 4], $$[$0], $$[$0 - 2], $$[$0 - 3]); break; case 9: - this.$ = $$[$0].trim(); - yy.getCommonDb().setAccTitle(this.$); + yy.addEntity($$[$0 - 8]); + yy.addEntity($$[$0 - 4]); + yy.addRelationship($$[$0 - 8], $$[$0], $$[$0 - 4], $$[$0 - 5]); + yy.setClass([$$[$0 - 8]], $$[$0 - 6]); + yy.setClass([$$[$0 - 4]], $$[$0 - 2]); break; case 10: + yy.addEntity($$[$0 - 6]); + yy.addEntity($$[$0 - 2]); + yy.addRelationship($$[$0 - 6], $$[$0], $$[$0 - 2], $$[$0 - 3]); + yy.setClass([$$[$0 - 6]], $$[$0 - 4]); + break; case 11: - this.$ = $$[$0].trim(); - yy.getCommonDb().setAccDescription(this.$); + yy.addEntity($$[$0 - 6]); + yy.addEntity($$[$0 - 4]); + yy.addRelationship($$[$0 - 6], $$[$0], $$[$0 - 4], $$[$0 - 5]); + yy.setClass([$$[$0 - 4]], $$[$0 - 2]); break; case 12: - yy.addSection($$[$0].substr(8)); - this.$ = $$[$0].substr(8); + yy.addEntity($$[$0 - 3]); + yy.addAttributes($$[$0 - 3], $$[$0 - 1]); + break; + case 13: + yy.addEntity($$[$0 - 5]); + yy.addAttributes($$[$0 - 5], $$[$0 - 1]); + yy.setClass([$$[$0 - 5]], $$[$0 - 3]); + break; + case 14: + yy.addEntity($$[$0 - 2]); break; case 15: - yy.addTask($$[$0], 0, ""); - this.$ = $$[$0]; + yy.addEntity($$[$0 - 4]); + yy.setClass([$$[$0 - 4]], $$[$0 - 2]); break; case 16: - yy.addEvent($$[$0].substr(2)); + yy.addEntity($$[$0]); + break; + case 17: + yy.addEntity($$[$0 - 2]); + yy.setClass([$$[$0 - 2]], $$[$0]); + break; + case 18: + yy.addEntity($$[$0 - 6], $$[$0 - 4]); + yy.addAttributes($$[$0 - 6], $$[$0 - 1]); + break; + case 19: + yy.addEntity($$[$0 - 8], $$[$0 - 6]); + yy.addAttributes($$[$0 - 8], $$[$0 - 1]); + yy.setClass([$$[$0 - 8]], $$[$0 - 3]); + break; + case 20: + yy.addEntity($$[$0 - 5], $$[$0 - 3]); + break; + case 21: + yy.addEntity($$[$0 - 7], $$[$0 - 5]); + yy.setClass([$$[$0 - 7]], $$[$0 - 2]); + break; + case 22: + yy.addEntity($$[$0 - 3], $$[$0 - 1]); + break; + case 23: + yy.addEntity($$[$0 - 5], $$[$0 - 3]); + yy.setClass([$$[$0 - 5]], $$[$0]); + break; + case 24: + case 25: + this.$ = $$[$0].trim(); + yy.setAccTitle(this.$); + break; + case 26: + case 27: + this.$ = $$[$0].trim(); + yy.setAccDescription(this.$); + break; + case 32: + yy.setDirection("TB"); + break; + case 33: + yy.setDirection("BT"); + break; + case 34: + yy.setDirection("RL"); + break; + case 35: + yy.setDirection("LR"); + break; + case 36: + this.$ = $$[$0 - 3]; + yy.addClass($$[$0 - 2], $$[$0 - 1]); + break; + case 37: + case 38: + case 56: + case 64: + this.$ = [$$[$0]]; + break; + case 39: + case 40: + this.$ = $$[$0 - 2].concat([$$[$0]]); + break; + case 41: + this.$ = $$[$0 - 2]; + yy.setClass($$[$0 - 1], $$[$0]); + break; + case 42: + ; + this.$ = $$[$0 - 3]; + yy.addCssStyles($$[$0 - 2], $$[$0 - 1]); + break; + case 43: + this.$ = [$$[$0]]; + break; + case 44: + $$[$0 - 2].push($$[$0]); + this.$ = $$[$0 - 2]; + break; + case 46: + this.$ = $$[$0 - 1] + $$[$0]; + break; + case 54: + case 76: + case 77: + this.$ = $$[$0].replace(/"/g, ""); + break; + case 55: + case 78: + this.$ = $$[$0]; + break; + case 57: + $$[$0].push($$[$0 - 1]); + this.$ = $$[$0]; + break; + case 58: + this.$ = { type: $$[$0 - 1], name: $$[$0] }; + break; + case 59: + this.$ = { type: $$[$0 - 2], name: $$[$0 - 1], keys: $$[$0] }; + break; + case 60: + this.$ = { type: $$[$0 - 2], name: $$[$0 - 1], comment: $$[$0] }; + break; + case 61: + this.$ = { type: $$[$0 - 3], name: $$[$0 - 2], keys: $$[$0 - 1], comment: $$[$0] }; + break; + case 62: + case 63: + case 66: this.$ = $$[$0]; break; + case 65: + $$[$0 - 2].push($$[$0]); + this.$ = $$[$0 - 2]; + break; + case 67: + this.$ = $$[$0].replace(/"/g, ""); + break; + case 68: + this.$ = { cardA: $$[$0], relType: $$[$0 - 1], cardB: $$[$0 - 2] }; + break; + case 69: + this.$ = yy.Cardinality.ZERO_OR_ONE; + break; + case 70: + this.$ = yy.Cardinality.ZERO_OR_MORE; + break; + case 71: + this.$ = yy.Cardinality.ONE_OR_MORE; + break; + case 72: + this.$ = yy.Cardinality.ONLY_ONE; + break; + case 73: + this.$ = yy.Cardinality.MD_PARENT; + break; + case 74: + this.$ = yy.Identification.NON_IDENTIFYING; + break; + case 75: + this.$ = yy.Identification.IDENTIFYING; + break; } }, "anonymous"), - table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o2($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o2($V0, [2, 7], { 1: [2, 1] }), o2($V0, [2, 3]), { 9: 18, 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o2($V0, [2, 5]), o2($V0, [2, 6]), o2($V0, [2, 8]), { 13: [1, 19] }, { 15: [1, 20] }, o2($V0, [2, 11]), o2($V0, [2, 12]), o2($V0, [2, 13]), o2($V0, [2, 14]), o2($V0, [2, 15]), o2($V0, [2, 16]), o2($V0, [2, 4]), o2($V0, [2, 9]), o2($V0, [2, 10])], - defaultActions: {}, + table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o2($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: 9, 22: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 14, 30: 15, 31: 16, 32: 17, 33: $V5, 34: $V6, 35: $V7, 36: $V8, 37: $V9, 40: $Va, 43: $Vb, 44: $Vc, 50: $Vd }, o2($V0, [2, 7], { 1: [2, 1] }), o2($V0, [2, 3]), { 9: 27, 11: 9, 22: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 14, 30: 15, 31: 16, 32: 17, 33: $V5, 34: $V6, 35: $V7, 36: $V8, 37: $V9, 40: $Va, 43: $Vb, 44: $Vc, 50: $Vd }, o2($V0, [2, 5]), o2($V0, [2, 6]), o2($V0, [2, 16], { 12: 28, 61: 32, 15: [1, 29], 17: [1, 30], 20: [1, 31], 63: $Ve, 64: $Vf, 65: $Vg, 66: $Vh, 67: $Vi }), { 23: [1, 38] }, { 25: [1, 39] }, { 27: [1, 40] }, o2($V0, [2, 27]), o2($V0, [2, 28]), o2($V0, [2, 29]), o2($V0, [2, 30]), o2($V0, [2, 31]), o2($Vj, [2, 54]), o2($Vj, [2, 55]), o2($V0, [2, 32]), o2($V0, [2, 33]), o2($V0, [2, 34]), o2($V0, [2, 35]), { 16: 41, 40: $Vk, 41: $Vl }, { 16: 44, 40: $Vk, 41: $Vl }, { 16: 45, 40: $Vk, 41: $Vl }, o2($V0, [2, 4]), { 11: 46, 40: $Va, 50: $Vd }, { 16: 47, 40: $Vk, 41: $Vl }, { 18: 48, 19: [1, 49], 51: 50, 52: 51, 56: $Vm }, { 11: 53, 40: $Va, 50: $Vd }, { 62: 54, 68: [1, 55], 69: [1, 56] }, o2($Vn, [2, 69]), o2($Vn, [2, 70]), o2($Vn, [2, 71]), o2($Vn, [2, 72]), o2($Vn, [2, 73]), o2($V0, [2, 24]), o2($V0, [2, 25]), o2($V0, [2, 26]), { 13: $Vo, 38: 57, 41: $Vp, 42: $Vq, 45: 59, 46: 60, 48: $Vr, 49: $Vs }, o2($Vt, [2, 37]), o2($Vt, [2, 38]), { 16: 65, 40: $Vk, 41: $Vl, 42: $Vq }, { 13: $Vo, 38: 66, 41: $Vp, 42: $Vq, 45: 59, 46: 60, 48: $Vr, 49: $Vs }, { 13: [1, 67], 15: [1, 68] }, o2($V0, [2, 17], { 61: 32, 12: 69, 17: [1, 70], 42: $Vq, 63: $Ve, 64: $Vf, 65: $Vg, 66: $Vh, 67: $Vi }), { 19: [1, 71] }, o2($V0, [2, 14]), { 18: 72, 19: [2, 56], 51: 50, 52: 51, 56: $Vm }, { 53: 73, 56: [1, 74] }, { 56: [2, 62] }, { 21: [1, 75] }, { 61: 76, 63: $Ve, 64: $Vf, 65: $Vg, 66: $Vh, 67: $Vi }, o2($Vu, [2, 74]), o2($Vu, [2, 75]), { 6: $Vv, 10: $Vw, 39: 77, 42: $Vx, 47: $Vy }, { 40: [1, 82], 41: [1, 83] }, o2($Vz, [2, 43], { 46: 84, 13: $Vo, 41: $Vp, 48: $Vr, 49: $Vs }), o2($VA, [2, 45]), o2($VA, [2, 50]), o2($VA, [2, 51]), o2($VA, [2, 52]), o2($VA, [2, 53]), o2($V0, [2, 41], { 42: $Vq }), { 6: $Vv, 10: $Vw, 39: 85, 42: $Vx, 47: $Vy }, { 14: 86, 40: $VB, 50: $VC, 70: $VD }, { 16: 90, 40: $Vk, 41: $Vl }, { 11: 91, 40: $Va, 50: $Vd }, { 18: 92, 19: [1, 93], 51: 50, 52: 51, 56: $Vm }, o2($V0, [2, 12]), { 19: [2, 57] }, o2($VE, [2, 58], { 54: 94, 55: 95, 57: 96, 59: $VF, 60: $VG }), o2([19, 56, 59, 60], [2, 63]), o2($V0, [2, 22], { 15: [1, 100], 17: [1, 99] }), o2([40, 50], [2, 68]), o2($V0, [2, 36]), { 13: $Vo, 41: $Vp, 45: 101, 46: 60, 48: $Vr, 49: $Vs }, o2($V0, [2, 47]), o2($V0, [2, 48]), o2($V0, [2, 49]), o2($Vt, [2, 39]), o2($Vt, [2, 40]), o2($VA, [2, 46]), o2($V0, [2, 42]), o2($V0, [2, 8]), o2($V0, [2, 76]), o2($V0, [2, 77]), o2($V0, [2, 78]), { 13: [1, 102], 42: $Vq }, { 13: [1, 104], 15: [1, 103] }, { 19: [1, 105] }, o2($V0, [2, 15]), o2($VE, [2, 59], { 55: 106, 58: [1, 107], 60: $VG }), o2($VE, [2, 60]), o2($VH, [2, 64]), o2($VE, [2, 67]), o2($VH, [2, 66]), { 18: 108, 19: [1, 109], 51: 50, 52: 51, 56: $Vm }, { 16: 110, 40: $Vk, 41: $Vl }, o2($Vz, [2, 44], { 46: 84, 13: $Vo, 41: $Vp, 48: $Vr, 49: $Vs }), { 14: 111, 40: $VB, 50: $VC, 70: $VD }, { 16: 112, 40: $Vk, 41: $Vl }, { 14: 113, 40: $VB, 50: $VC, 70: $VD }, o2($V0, [2, 13]), o2($VE, [2, 61]), { 57: 114, 59: $VF }, { 19: [1, 115] }, o2($V0, [2, 20]), o2($V0, [2, 23], { 17: [1, 116], 42: $Vq }), o2($V0, [2, 11]), { 13: [1, 117], 42: $Vq }, o2($V0, [2, 10]), o2($VH, [2, 65]), o2($V0, [2, 18]), { 18: 118, 19: [1, 119], 51: 50, 52: 51, 56: $Vm }, { 14: 120, 40: $VB, 50: $VC, 70: $VD }, { 19: [1, 121] }, o2($V0, [2, 21]), o2($V0, [2, 9]), o2($V0, [2, 19])], + defaultActions: { 52: [2, 62], 72: [2, 57] }, parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { if (hash.recoverable) { this.trace(str2); @@ -97701,22 +92583,22 @@ g.stateGroup line { parse: /* @__PURE__ */ __name(function parse7(input) { var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); + var lexer2 = Object.create(this.lexer); var sharedState = { yy: {} }; for (var k2 in this.yy) { if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { sharedState.yy[k2] = this.yy[k2]; } } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; } - var yyloc = lexer3.yylloc; + var yyloc = lexer2.yylloc; lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; + var ranges = lexer2.options && lexer2.options.ranges; if (typeof sharedState.yy.parseError === "function") { this.parseError = sharedState.yy.parseError; } else { @@ -97730,7 +92612,7 @@ g.stateGroup line { __name(popStack, "popStack"); function lex() { var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; + token2 = tstack.pop() || lexer2.lex() || EOF2; if (typeof token2 !== "number") { if (token2 instanceof Array) { tstack = token2; @@ -97741,53 +92623,53 @@ g.stateGroup line { return token2; } __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; } else { if (symbol === null || typeof symbol == "undefined") { symbol = lex(); } - action = table[state4] && table[state4][symbol]; + action = table[state3] && table[state3][symbol]; } if (typeof action === "undefined" || !action.length || !action[0]) { var errStr = ""; expected = []; - for (p3 in table[state4]) { + for (p3 in table[state3]) { if (this.terminals_[p3] && p3 > TERROR) { expected.push("'" + this.terminals_[p3] + "'"); } } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; } else { errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); } this.parseError(errStr, { - text: lexer3.match, + text: lexer2.match, token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, + line: lexer2.yylineno, loc: yyloc, expected }); } if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); } switch (action[0]) { case 1: stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); stack.push(action[1]); symbol = null; if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; if (recovering > 0) { recovering--; } @@ -97841,8 +92723,8 @@ g.stateGroup line { return true; }, "parse") }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { EOF: 1, parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { if (this.yy.parser) { @@ -98125,70 +93007,243 @@ g.stateGroup line { var YYSTATE = YY_START; switch ($avoiding_name_collisions) { case 0: + this.begin("acc_title"); + return 24; break; case 1: + this.popState(); + return "acc_title_value"; break; case 2: - return 10; + this.begin("acc_descr"); + return 26; break; case 3: + this.popState(); + return "acc_descr_value"; break; case 4: + this.begin("acc_descr_multiline"); break; case 5: - return 4; + this.popState(); break; case 6: - return 11; + return "acc_descr_multiline_value"; break; case 7: - this.begin("acc_title"); - return 12; + return 33; break; case 8: - this.popState(); - return "acc_title_value"; + return 34; break; case 9: - this.begin("acc_descr"); - return 14; + return 35; break; case 10: - this.popState(); - return "acc_descr_value"; + return 36; break; case 11: - this.begin("acc_descr_multiline"); + return 10; break; case 12: - this.popState(); break; case 13: - return "acc_descr_multiline_value"; + return 8; break; case 14: - return 17; + return 50; break; case 15: - return 21; + return 70; break; case 16: - return 20; + return 4; break; case 17: - return 6; + this.begin("block"); + return 17; break; case 18: - return "INVALID"; + return 49; + break; + case 19: + return 49; + break; + case 20: + return 42; + break; + case 21: + return 15; + break; + case 22: + return 13; + break; + case 23: + break; + case 24: + return 59; + break; + case 25: + return 56; + break; + case 26: + return 56; + break; + case 27: + return 60; + break; + case 28: + break; + case 29: + this.popState(); + return 19; + break; + case 30: + return yy_.yytext[0]; + break; + case 31: + return 20; + break; + case 32: + return 21; + break; + case 33: + this.begin("style"); + return 44; + break; + case 34: + this.popState(); + return 10; + break; + case 35: + break; + case 36: + return 13; + break; + case 37: + return 42; + break; + case 38: + return 49; + break; + case 39: + this.begin("style"); + return 37; + break; + case 40: + return 43; + break; + case 41: + return 63; + break; + case 42: + return 65; + break; + case 43: + return 65; + break; + case 44: + return 65; + break; + case 45: + return 63; + break; + case 46: + return 63; + break; + case 47: + return 64; + break; + case 48: + return 64; + break; + case 49: + return 64; + break; + case 50: + return 64; + break; + case 51: + return 64; + break; + case 52: + return 65; + break; + case 53: + return 64; + break; + case 54: + return 65; + break; + case 55: + return 66; + break; + case 56: + return 66; + break; + case 57: + return 66; + break; + case 58: + return 66; + break; + case 59: + return 63; + break; + case 60: + return 64; + break; + case 61: + return 65; + break; + case 62: + return 67; + break; + case 63: + return 68; + break; + case 64: + return 69; + break; + case 65: + return 69; + break; + case 66: + return 68; + break; + case 67: + return 68; + break; + case 68: + return 68; + break; + case 69: + return 41; + break; + case 70: + return 47; + break; + case 71: + return 40; + break; + case 72: + return 48; + break; + case 73: + return yy_.yytext[0]; + break; + case 74: + return 6; break; } }, "anonymous"), - rules: [/^(?:%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:timeline\b)/i, /^(?:title\s[^\n]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:section\s[^:\n]+)/i, /^(?::\s[^:\n]+)/i, /^(?:[^#:\n]+)/i, /^(?:$)/i, /^(?:.)/i], - conditions: { "acc_descr_multiline": { "rules": [12, 13], "inclusive": false }, "acc_descr": { "rules": [10], "inclusive": false }, "acc_title": { "rules": [8], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18], "inclusive": true } } + rules: [/^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:.*direction\s+TB[^\n]*)/i, /^(?:.*direction\s+BT[^\n]*)/i, /^(?:.*direction\s+RL[^\n]*)/i, /^(?:.*direction\s+LR[^\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:[\s]+)/i, /^(?:"[^"%\r\n\v\b\\]+")/i, /^(?:"[^"]*")/i, /^(?:erDiagram\b)/i, /^(?:\{)/i, /^(?:#)/i, /^(?:#)/i, /^(?:,)/i, /^(?::::)/i, /^(?::)/i, /^(?:\s+)/i, /^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i, /^(?:([^\s]*)[~].*[~]([^\s]*))/i, /^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i, /^(?:"[^"]*")/i, /^(?:[\n]+)/i, /^(?:\})/i, /^(?:.)/i, /^(?:\[)/i, /^(?:\])/i, /^(?:style\b)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?::)/i, /^(?:,)/i, /^(?:#)/i, /^(?:classDef\b)/i, /^(?:class\b)/i, /^(?:one or zero\b)/i, /^(?:one or more\b)/i, /^(?:one or many\b)/i, /^(?:1\+)/i, /^(?:\|o\b)/i, /^(?:zero or one\b)/i, /^(?:zero or more\b)/i, /^(?:zero or many\b)/i, /^(?:0\+)/i, /^(?:\}o\b)/i, /^(?:many\(0\))/i, /^(?:many\(1\))/i, /^(?:many\b)/i, /^(?:\}\|)/i, /^(?:one\b)/i, /^(?:only one\b)/i, /^(?:1\b)/i, /^(?:\|\|)/i, /^(?:o\|)/i, /^(?:o\{)/i, /^(?:\|\{)/i, /^(?:\s*u\b)/i, /^(?:\.\.)/i, /^(?:--)/i, /^(?:to\b)/i, /^(?:optionally to\b)/i, /^(?:\.-)/i, /^(?:-\.)/i, /^(?:([^\x00-\x7F]|\w|-|\*)+)/i, /^(?:;)/i, /^(?:([^\x00-\x7F]|\w|-|\*)+)/i, /^(?:[0-9])/i, /^(?:.)/i, /^(?:$)/i], + conditions: { "style": { "rules": [34, 35, 36, 37, 38, 69, 70], "inclusive": false }, "acc_descr_multiline": { "rules": [5, 6], "inclusive": false }, "acc_descr": { "rules": [3], "inclusive": false }, "acc_title": { "rules": [1], "inclusive": false }, "block": { "rules": [23, 24, 25, 26, 27, 28, 29, 30], "inclusive": false }, "INITIAL": { "rules": [0, 2, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 31, 32, 33, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73, 74], "inclusive": true } } }; - return lexer3; - }(); - parser24.lexer = lexer2; + return lexer2; + })(); + parser24.lexer = lexer; function Parser3() { this.yy = {}; } @@ -98196,35709 +93251,42793 @@ g.stateGroup line { Parser3.prototype = parser24; parser24.Parser = Parser3; return new Parser3(); - }(); - parser16.parser = parser16; - timeline_default = parser16; + })(); + parser3.parser = parser3; + erDiagram_default = parser3; } }); - // src/diagrams/timeline/timelineDb.js - var timelineDb_exports = {}; - __export(timelineDb_exports, { - addEvent: () => addEvent, - addSection: () => addSection4, - addTask: () => addTask3, - addTaskOrg: () => addTaskOrg3, - clear: () => clear14, - default: () => timelineDb_default, - getCommonDb: () => getCommonDb2, - getSections: () => getSections4, - getTasks: () => getTasks3 - }); - var currentSection3, currentTaskId, sections4, tasks3, rawTasks3, getCommonDb2, clear14, addSection4, getSections4, getTasks3, addTask3, addEvent, addTaskOrg3, compileTasks3, timelineDb_default; - var init_timelineDb = __esm({ - "src/diagrams/timeline/timelineDb.js"() { + // src/diagrams/er/erDb.ts + var ErDB; + var init_erDb = __esm({ + "src/diagrams/er/erDb.ts"() { "use strict"; + init_logger(); + init_diagramAPI(); init_commonDb(); - currentSection3 = ""; - currentTaskId = 0; - sections4 = []; - tasks3 = []; - rawTasks3 = []; - getCommonDb2 = /* @__PURE__ */ __name(() => commonDb_exports, "getCommonDb"); - clear14 = /* @__PURE__ */ __name(function() { - sections4.length = 0; - tasks3.length = 0; - currentSection3 = ""; - rawTasks3.length = 0; - clear(); - }, "clear"); - addSection4 = /* @__PURE__ */ __name(function(txt) { - currentSection3 = txt; - sections4.push(txt); - }, "addSection"); - getSections4 = /* @__PURE__ */ __name(function() { - return sections4; - }, "getSections"); - getTasks3 = /* @__PURE__ */ __name(function() { - let allItemsProcessed = compileTasks3(); - const maxDepth = 100; - let iterationCount = 0; - while (!allItemsProcessed && iterationCount < maxDepth) { - allItemsProcessed = compileTasks3(); - iterationCount++; + init_utils2(); + ErDB = class { + constructor() { + this.entities = /* @__PURE__ */ new Map(); + this.relationships = []; + this.classes = /* @__PURE__ */ new Map(); + this.direction = "TB"; + this.Cardinality = { + ZERO_OR_ONE: "ZERO_OR_ONE", + ZERO_OR_MORE: "ZERO_OR_MORE", + ONE_OR_MORE: "ONE_OR_MORE", + ONLY_ONE: "ONLY_ONE", + MD_PARENT: "MD_PARENT" + }; + this.Identification = { + NON_IDENTIFYING: "NON_IDENTIFYING", + IDENTIFYING: "IDENTIFYING" + }; + this.setAccTitle = setAccTitle; + this.getAccTitle = getAccTitle; + this.setAccDescription = setAccDescription; + this.getAccDescription = getAccDescription; + this.setDiagramTitle = setDiagramTitle; + this.getDiagramTitle = getDiagramTitle; + this.getConfig = /* @__PURE__ */ __name(() => getConfig2().er, "getConfig"); + this.clear(); + this.addEntity = this.addEntity.bind(this); + this.addAttributes = this.addAttributes.bind(this); + this.addRelationship = this.addRelationship.bind(this); + this.setDirection = this.setDirection.bind(this); + this.addCssStyles = this.addCssStyles.bind(this); + this.addClass = this.addClass.bind(this); + this.setClass = this.setClass.bind(this); + this.setAccTitle = this.setAccTitle.bind(this); + this.setAccDescription = this.setAccDescription.bind(this); } - tasks3.push(...rawTasks3); - return tasks3; - }, "getTasks"); - addTask3 = /* @__PURE__ */ __name(function(period, length2, event3) { - const rawTask = { - id: currentTaskId++, - section: currentSection3, - type: currentSection3, - task: period, - score: length2 ? length2 : 0, - //if event is defined, then add it the events array - events: event3 ? [event3] : [] - }; - rawTasks3.push(rawTask); - }, "addTask"); - addEvent = /* @__PURE__ */ __name(function(event3) { - const currentTask = rawTasks3.find((task) => task.id === currentTaskId - 1); - currentTask.events.push(event3); - }, "addEvent"); - addTaskOrg3 = /* @__PURE__ */ __name(function(descr) { - const newTask = { - section: currentSection3, - type: currentSection3, - description: descr, - task: descr, - classes: [] - }; - tasks3.push(newTask); - }, "addTaskOrg"); - compileTasks3 = /* @__PURE__ */ __name(function() { - const compileTask = /* @__PURE__ */ __name(function(pos) { - return rawTasks3[pos].processed; - }, "compileTask"); - let allProcessed = true; - for (const [i2, rawTask] of rawTasks3.entries()) { - compileTask(i2); - allProcessed = allProcessed && rawTask.processed; + static { + __name(this, "ErDB"); } - return allProcessed; - }, "compileTasks"); - timelineDb_default = { - clear: clear14, - getCommonDb: getCommonDb2, - addSection: addSection4, - getSections: getSections4, - getTasks: getTasks3, - addTask: addTask3, - addTaskOrg: addTaskOrg3, - addEvent - }; - } - }); - - // src/diagrams/timeline/svgDraw.js - function wrap2(text4, width3) { - text4.each(function() { - var text5 = select_default2(this), words = text5.text().split(/(\s+|
    )/).reverse(), word, line2 = [], lineHeight = 1.1, y5 = text5.attr("y"), dy = parseFloat(text5.attr("dy")), tspan = text5.text(null).append("tspan").attr("x", 0).attr("y", y5).attr("dy", dy + "em"); - for (let j2 = 0; j2 < words.length; j2++) { - word = words[words.length - 1 - j2]; - line2.push(word); - tspan.text(line2.join(" ").trim()); - if (tspan.node().getComputedTextLength() > width3 || word === "
    ") { - line2.pop(); - tspan.text(line2.join(" ").trim()); - if (word === "
    ") { - line2 = [""]; - } else { - line2 = [word]; + /** + * Add entity + * @param name - The name of the entity + * @param alias - The alias of the entity + */ + addEntity(name, alias = "") { + if (!this.entities.has(name)) { + this.entities.set(name, { + id: `entity-${name}-${this.entities.size}`, + label: name, + attributes: [], + alias, + shape: "erBox", + look: getConfig2().look ?? "default", + cssClasses: "default", + cssStyles: [] + }); + log.info("Added new entity :", name); + } else if (!this.entities.get(name)?.alias && alias) { + this.entities.get(name).alias = alias; + log.info(`Add alias '${alias}' to entity '${name}'`); } - tspan = text5.append("tspan").attr("x", 0).attr("y", y5).attr("dy", lineHeight + "em").text(word); + return this.entities.get(name); } - } - }); - } - var MAX_SECTIONS, drawRect6, drawFace2, drawCircle2, drawText5, drawLabel3, drawSection2, taskCount2, drawTask2, drawBackgroundRect4, getTextObj4, getNoteRect3, _drawTextCandidateFunc4, initGraphics2, drawNode, getVirtualNodeHeight, defaultBkg, svgDraw_default4; - var init_svgDraw4 = __esm({ - "src/diagrams/timeline/svgDraw.js"() { - "use strict"; - init_src32(); - MAX_SECTIONS = 12; - drawRect6 = /* @__PURE__ */ __name(function(elem, rectData) { - const rectElem = elem.append("rect"); - rectElem.attr("x", rectData.x); - rectElem.attr("y", rectData.y); - rectElem.attr("fill", rectData.fill); - rectElem.attr("stroke", rectData.stroke); - rectElem.attr("width", rectData.width); - rectElem.attr("height", rectData.height); - rectElem.attr("rx", rectData.rx); - rectElem.attr("ry", rectData.ry); - if (rectData.class !== void 0) { - rectElem.attr("class", rectData.class); + getEntity(name) { + return this.entities.get(name); } - return rectElem; - }, "drawRect"); - drawFace2 = /* @__PURE__ */ __name(function(element3, faceData) { - const radius2 = 15; - const circleElement = element3.append("circle").attr("cx", faceData.cx).attr("cy", faceData.cy).attr("class", "face").attr("r", radius2).attr("stroke-width", 2).attr("overflow", "visible"); - const face = element3.append("g"); - face.append("circle").attr("cx", faceData.cx - radius2 / 3).attr("cy", faceData.cy - radius2 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"); - face.append("circle").attr("cx", faceData.cx + radius2 / 3).attr("cy", faceData.cy - radius2 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"); - function smile(face2) { - const arc = arc_default().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius2 / 2).outerRadius(radius2 / 2.2); - face2.append("path").attr("class", "mouth").attr("d", arc).attr("transform", "translate(" + faceData.cx + "," + (faceData.cy + 2) + ")"); + getEntities() { + return this.entities; } - __name(smile, "smile"); - function sad(face2) { - const arc = arc_default().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius2 / 2).outerRadius(radius2 / 2.2); - face2.append("path").attr("class", "mouth").attr("d", arc).attr("transform", "translate(" + faceData.cx + "," + (faceData.cy + 7) + ")"); + getClasses() { + return this.classes; } - __name(sad, "sad"); - function ambivalent(face2) { - face2.append("line").attr("class", "mouth").attr("stroke", 2).attr("x1", faceData.cx - 5).attr("y1", faceData.cy + 7).attr("x2", faceData.cx + 5).attr("y2", faceData.cy + 7).attr("class", "mouth").attr("stroke-width", "1px").attr("stroke", "#666"); + addAttributes(entityName, attribs) { + const entity = this.addEntity(entityName); + let i2; + for (i2 = attribs.length - 1; i2 >= 0; i2--) { + if (!attribs[i2].keys) { + attribs[i2].keys = []; + } + if (!attribs[i2].comment) { + attribs[i2].comment = ""; + } + entity.attributes.push(attribs[i2]); + log.debug("Added attribute ", attribs[i2].name); + } } - __name(ambivalent, "ambivalent"); - if (faceData.score > 3) { - smile(face); - } else if (faceData.score < 3) { - sad(face); - } else { - ambivalent(face); + /** + * Add a relationship + * + * @param entA - The first entity in the relationship + * @param rolA - The role played by the first entity in relation to the second + * @param entB - The second entity in the relationship + * @param rSpec - The details of the relationship between the two entities + */ + addRelationship(entA, rolA, entB, rSpec) { + const entityA = this.entities.get(entA); + const entityB = this.entities.get(entB); + if (!entityA || !entityB) { + return; + } + const rel2 = { + entityA: entityA.id, + roleA: rolA, + entityB: entityB.id, + relSpec: rSpec + }; + this.relationships.push(rel2); + log.debug("Added new relationship :", rel2); } - return circleElement; - }, "drawFace"); - drawCircle2 = /* @__PURE__ */ __name(function(element3, circleData) { - const circleElement = element3.append("circle"); - circleElement.attr("cx", circleData.cx); - circleElement.attr("cy", circleData.cy); - circleElement.attr("class", "actor-" + circleData.pos); - circleElement.attr("fill", circleData.fill); - circleElement.attr("stroke", circleData.stroke); - circleElement.attr("r", circleData.r); - if (circleElement.class !== void 0) { - circleElement.attr("class", circleElement.class); + getRelationships() { + return this.relationships; } - if (circleData.title !== void 0) { - circleElement.append("title").text(circleData.title); + getDirection() { + return this.direction; } - return circleElement; - }, "drawCircle"); - drawText5 = /* @__PURE__ */ __name(function(elem, textData) { - const nText = textData.text.replace(//gi, " "); - const textElem = elem.append("text"); - textElem.attr("x", textData.x); - textElem.attr("y", textData.y); - textElem.attr("class", "legend"); - textElem.style("text-anchor", textData.anchor); - if (textData.class !== void 0) { - textElem.attr("class", textData.class); + setDirection(dir2) { + this.direction = dir2; } - const span = textElem.append("tspan"); - span.attr("x", textData.x + textData.textMargin * 2); - span.text(nText); - return textElem; - }, "drawText"); - drawLabel3 = /* @__PURE__ */ __name(function(elem, txtObject) { - function genPoints(x5, y5, width3, height2, cut) { - return x5 + "," + y5 + " " + (x5 + width3) + "," + y5 + " " + (x5 + width3) + "," + (y5 + height2 - cut) + " " + (x5 + width3 - cut * 1.2) + "," + (y5 + height2) + " " + x5 + "," + (y5 + height2); + getCompiledStyles(classDefs) { + let compiledStyles = []; + for (const customClass of classDefs) { + const cssClass = this.classes.get(customClass); + if (cssClass?.styles) { + compiledStyles = [...compiledStyles, ...cssClass.styles ?? []].map((s2) => s2.trim()); + } + if (cssClass?.textStyles) { + compiledStyles = [...compiledStyles, ...cssClass.textStyles ?? []].map((s2) => s2.trim()); + } + } + return compiledStyles; } - __name(genPoints, "genPoints"); - const polygon2 = elem.append("polygon"); - polygon2.attr("points", genPoints(txtObject.x, txtObject.y, 50, 20, 7)); - polygon2.attr("class", "labelBox"); - txtObject.y = txtObject.y + txtObject.labelMargin; - txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin; - drawText5(elem, txtObject); - }, "drawLabel"); - drawSection2 = /* @__PURE__ */ __name(function(elem, section, conf5) { - const g2 = elem.append("g"); - const rect3 = getNoteRect3(); - rect3.x = section.x; - rect3.y = section.y; - rect3.fill = section.fill; - rect3.width = conf5.width; - rect3.height = conf5.height; - rect3.class = "journey-section section-type-" + section.num; - rect3.rx = 3; - rect3.ry = 3; - drawRect6(g2, rect3); - _drawTextCandidateFunc4(conf5)( - section.text, - g2, - rect3.x, - rect3.y, - rect3.width, - rect3.height, - { class: "journey-section section-type-" + section.num }, - conf5, - section.colour - ); - }, "drawSection"); - taskCount2 = -1; - drawTask2 = /* @__PURE__ */ __name(function(elem, task, conf5) { - const center4 = task.x + conf5.width / 2; - const g2 = elem.append("g"); - taskCount2++; - const maxHeight = 300 + 5 * 30; - g2.append("line").attr("id", "task" + taskCount2).attr("x1", center4).attr("y1", task.y).attr("x2", center4).attr("y2", maxHeight).attr("class", "task-line").attr("stroke-width", "1px").attr("stroke-dasharray", "4 2").attr("stroke", "#666"); - drawFace2(g2, { - cx: center4, - cy: 300 + (5 - task.score) * 30, - score: task.score - }); - const rect3 = getNoteRect3(); - rect3.x = task.x; - rect3.y = task.y; - rect3.fill = task.fill; - rect3.width = conf5.width; - rect3.height = conf5.height; - rect3.class = "task task-type-" + task.num; - rect3.rx = 3; - rect3.ry = 3; - drawRect6(g2, rect3); - _drawTextCandidateFunc4(conf5)( - task.task, - g2, - rect3.x, - rect3.y, - rect3.width, - rect3.height, - { class: "task" }, - conf5, - task.colour - ); - }, "drawTask"); - drawBackgroundRect4 = /* @__PURE__ */ __name(function(elem, bounds4) { - const rectElem = drawRect6(elem, { - x: bounds4.startx, - y: bounds4.starty, - width: bounds4.stopx - bounds4.startx, - height: bounds4.stopy - bounds4.starty, - fill: bounds4.fill, - class: "rect" - }); - rectElem.lower(); - }, "drawBackgroundRect"); - getTextObj4 = /* @__PURE__ */ __name(function() { - return { - x: 0, - y: 0, - fill: void 0, - "text-anchor": "start", - width: 100, - height: 100, - textMargin: 0, - rx: 0, - ry: 0 - }; - }, "getTextObj"); - getNoteRect3 = /* @__PURE__ */ __name(function() { - return { - x: 0, - y: 0, - width: 100, - anchor: "start", - height: 100, - rx: 0, - ry: 0 - }; - }, "getNoteRect"); - _drawTextCandidateFunc4 = /* @__PURE__ */ function() { - function byText(content, g2, x5, y5, width3, height2, textAttrs, colour) { - const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y5 + height2 / 2 + 5).style("font-color", colour).style("text-anchor", "middle").text(content); - _setTextAttrs(text4, textAttrs); + addCssStyles(ids, styles4) { + for (const id30 of ids) { + const entity = this.entities.get(id30); + if (!styles4 || !entity) { + return; + } + for (const style3 of styles4) { + entity.cssStyles.push(style3); + } + } } - __name(byText, "byText"); - function byTspan(content, g2, x5, y5, width3, height2, textAttrs, conf5, colour) { - const { taskFontSize, taskFontFamily } = conf5; - const lines = content.split(//gi); - for (let i2 = 0; i2 < lines.length; i2++) { - const dy = i2 * taskFontSize - taskFontSize * (lines.length - 1) / 2; - const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y5).attr("fill", colour).style("text-anchor", "middle").style("font-size", taskFontSize).style("font-family", taskFontFamily); - text4.append("tspan").attr("x", x5 + width3 / 2).attr("dy", dy).text(lines[i2]); - text4.attr("y", y5 + height2 / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central"); - _setTextAttrs(text4, textAttrs); + addClass(ids, style3) { + ids.forEach((id30) => { + let classNode = this.classes.get(id30); + if (classNode === void 0) { + classNode = { id: id30, styles: [], textStyles: [] }; + this.classes.set(id30, classNode); + } + if (style3) { + style3.forEach(function(s2) { + if (/color/.exec(s2)) { + const newStyle = s2.replace("fill", "bgFill"); + classNode.textStyles.push(newStyle); + } + classNode.styles.push(s2); + }); + } + }); + } + setClass(ids, classNames) { + for (const id30 of ids) { + const entity = this.entities.get(id30); + if (entity) { + for (const className of classNames) { + entity.cssClasses += " " + className; + } + } } } - __name(byTspan, "byTspan"); - function byFo(content, g2, x5, y5, width3, height2, textAttrs, conf5) { - const body = g2.append("switch"); - const f2 = body.append("foreignObject").attr("x", x5).attr("y", y5).attr("width", width3).attr("height", height2).attr("position", "fixed"); - const text4 = f2.append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); - text4.append("div").attr("class", "label").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(content); - byTspan(content, body, x5, y5, width3, height2, textAttrs, conf5); - _setTextAttrs(text4, textAttrs); + clear() { + this.entities = /* @__PURE__ */ new Map(); + this.classes = /* @__PURE__ */ new Map(); + this.relationships = []; + clear(); } - __name(byFo, "byFo"); - function _setTextAttrs(toText, fromTextAttrsDict) { - for (const key in fromTextAttrsDict) { - if (key in fromTextAttrsDict) { - toText.attr(key, fromTextAttrsDict[key]); + getData() { + const nodes5 = []; + const edges3 = []; + const config5 = getConfig2(); + for (const entityKey of this.entities.keys()) { + const entityNode = this.entities.get(entityKey); + if (entityNode) { + entityNode.cssCompiledStyles = this.getCompiledStyles(entityNode.cssClasses.split(" ")); + nodes5.push(entityNode); } } + let count2 = 0; + for (const relationship of this.relationships) { + const edge = { + id: getEdgeId(relationship.entityA, relationship.entityB, { + prefix: "id", + counter: count2++ + }), + type: "normal", + curve: "basis", + start: relationship.entityA, + end: relationship.entityB, + label: relationship.roleA, + labelpos: "c", + thickness: "normal", + classes: "relationshipLine", + arrowTypeStart: relationship.relSpec.cardB.toLowerCase(), + arrowTypeEnd: relationship.relSpec.cardA.toLowerCase(), + pattern: relationship.relSpec.relType == "IDENTIFYING" ? "solid" : "dashed", + look: config5.look + }; + edges3.push(edge); + } + return { nodes: nodes5, edges: edges3, other: {}, config: config5, direction: "TB" }; } - __name(_setTextAttrs, "_setTextAttrs"); - return function(conf5) { - return conf5.textPlacement === "fo" ? byFo : conf5.textPlacement === "old" ? byText : byTspan; - }; - }(); - initGraphics2 = /* @__PURE__ */ __name(function(graphics) { - graphics.append("defs").append("marker").attr("id", "arrowhead").attr("refX", 5).attr("refY", 2).attr("markerWidth", 6).attr("markerHeight", 4).attr("orient", "auto").append("path").attr("d", "M 0,0 V 4 L6,2 Z"); - }, "initGraphics"); - __name(wrap2, "wrap"); - drawNode = /* @__PURE__ */ __name(function(elem, node2, fullSection, conf5) { - const section = fullSection % MAX_SECTIONS - 1; - const nodeElem = elem.append("g"); - node2.section = section; - nodeElem.attr( - "class", - (node2.class ? node2.class + " " : "") + "timeline-node " + ("section-" + section) - ); - const bkgElem = nodeElem.append("g"); - const textElem = nodeElem.append("g"); - const txt = textElem.append("text").text(node2.descr).attr("dy", "1em").attr("alignment-baseline", "middle").attr("dominant-baseline", "middle").attr("text-anchor", "middle").call(wrap2, node2.width); - const bbox = txt.node().getBBox(); - const fontSize = conf5.fontSize?.replace ? conf5.fontSize.replace("px", "") : conf5.fontSize; - node2.height = bbox.height + fontSize * 1.1 * 0.5 + node2.padding; - node2.height = Math.max(node2.height, node2.maxHeight); - node2.width = node2.width + 2 * node2.padding; - textElem.attr("transform", "translate(" + node2.width / 2 + ", " + node2.padding / 2 + ")"); - defaultBkg(bkgElem, node2, section, conf5); - return node2; - }, "drawNode"); - getVirtualNodeHeight = /* @__PURE__ */ __name(function(elem, node2, conf5) { - const textElem = elem.append("g"); - const txt = textElem.append("text").text(node2.descr).attr("dy", "1em").attr("alignment-baseline", "middle").attr("dominant-baseline", "middle").attr("text-anchor", "middle").call(wrap2, node2.width); - const bbox = txt.node().getBBox(); - const fontSize = conf5.fontSize?.replace ? conf5.fontSize.replace("px", "") : conf5.fontSize; - textElem.remove(); - return bbox.height + fontSize * 1.1 * 0.5 + node2.padding; - }, "getVirtualNodeHeight"); - defaultBkg = /* @__PURE__ */ __name(function(elem, node2, section) { - const rd = 5; - elem.append("path").attr("id", "node-" + node2.id).attr("class", "node-bkg node-" + node2.type).attr( - "d", - `M0 ${node2.height - rd} v${-node2.height + 2 * rd} q0,-5 5,-5 h${node2.width - 2 * rd} q5,0 5,5 v${node2.height - rd} H0 Z` - ); - elem.append("line").attr("class", "node-line-" + section).attr("x1", 0).attr("y1", node2.height).attr("x2", node2.width).attr("y2", node2.height); - }, "defaultBkg"); - svgDraw_default4 = { - drawRect: drawRect6, - drawCircle: drawCircle2, - drawSection: drawSection2, - drawText: drawText5, - drawLabel: drawLabel3, - drawTask: drawTask2, - drawBackgroundRect: drawBackgroundRect4, - getTextObj: getTextObj4, - getNoteRect: getNoteRect3, - initGraphics: initGraphics2, - drawNode, - getVirtualNodeHeight }; } }); - // src/diagrams/timeline/timelineRenderer.ts - var draw17, drawTasks2, drawEvents, timelineRenderer_default; - var init_timelineRenderer = __esm({ - "src/diagrams/timeline/timelineRenderer.ts"() { + // src/diagrams/er/erRenderer-unified.ts + var erRenderer_unified_exports = {}; + __export(erRenderer_unified_exports, { + draw: () => draw3 + }); + var draw3; + var init_erRenderer_unified = __esm({ + "src/diagrams/er/erRenderer-unified.ts"() { "use strict"; - init_src32(); - init_svgDraw4(); - init_logger(); init_diagramAPI(); - init_setupGraphViewbox(); - draw17 = /* @__PURE__ */ __name(function(text4, id29, version2, diagObj) { - const conf5 = getConfig2(); - const LEFT_MARGIN2 = conf5.leftMargin ?? 50; - log.debug("timeline", diagObj.db); - const securityLevel = conf5.securityLevel; - let sandboxElement; - if (securityLevel === "sandbox") { - sandboxElement = select_default2("#i" + id29); - } - const root4 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); - const svg2 = root4.select("#" + id29); - svg2.append("g"); - const tasks4 = diagObj.db.getTasks(); - const title2 = diagObj.db.getCommonDb().getDiagramTitle(); - log.debug("task", tasks4); - svgDraw_default4.initGraphics(svg2); - const sections6 = diagObj.db.getSections(); - log.debug("sections", sections6); - let maxSectionHeight = 0; - let maxTaskHeight = 0; - let depthY = 0; - let sectionBeginY = 0; - let masterX = 50 + LEFT_MARGIN2; - let masterY = 50; - sectionBeginY = 50; - let sectionNumber = 0; - let hasSections = true; - sections6.forEach(function(section) { - const sectionNode = { - number: sectionNumber, - descr: section, - section: sectionNumber, - width: 150, - padding: 20, - maxHeight: maxSectionHeight - }; - const sectionHeight = svgDraw_default4.getVirtualNodeHeight(svg2, sectionNode, conf5); - log.debug("sectionHeight before draw", sectionHeight); - maxSectionHeight = Math.max(maxSectionHeight, sectionHeight + 20); - }); - let maxEventCount = 0; - let maxEventLineLength = 0; - log.debug("tasks.length", tasks4.length); - for (const [i2, task] of tasks4.entries()) { - const taskNode = { - number: i2, - descr: task, - section: task.section, - width: 150, - padding: 20, - maxHeight: maxTaskHeight - }; - const taskHeight = svgDraw_default4.getVirtualNodeHeight(svg2, taskNode, conf5); - log.debug("taskHeight before draw", taskHeight); - maxTaskHeight = Math.max(maxTaskHeight, taskHeight + 20); - maxEventCount = Math.max(maxEventCount, task.events.length); - let maxEventLineLengthTemp = 0; - for (const event3 of task.events) { - const eventNode = { - descr: event3, - section: task.section, - number: task.section, - width: 150, - padding: 20, - maxHeight: 50 - }; - maxEventLineLengthTemp += svgDraw_default4.getVirtualNodeHeight(svg2, eventNode, conf5); - } - maxEventLineLength = Math.max(maxEventLineLength, maxEventLineLengthTemp); + init_logger(); + init_insertElementsForSize(); + init_render2(); + init_setupViewPortForSVG(); + init_utils2(); + init_src32(); + draw3 = /* @__PURE__ */ __name(async function(text4, id30, _version, diag) { + log.info("REF0:"); + log.info("Drawing er diagram (unified)", id30); + const { securityLevel, er: conf5, layout: layout6 } = getConfig2(); + const data4Layout = diag.db.getData(); + const svg2 = getDiagramElement(id30, securityLevel); + data4Layout.type = diag.type; + data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout6); + data4Layout.config.flowchart.nodeSpacing = conf5?.nodeSpacing || 140; + data4Layout.config.flowchart.rankSpacing = conf5?.rankSpacing || 80; + data4Layout.direction = diag.db.getDirection(); + data4Layout.markers = ["only_one", "zero_or_one", "one_or_more", "zero_or_more"]; + data4Layout.diagramId = id30; + await render6(data4Layout, svg2); + if (data4Layout.layoutAlgorithm === "elk") { + svg2.select(".edges").lower(); } - log.debug("maxSectionHeight before draw", maxSectionHeight); - log.debug("maxTaskHeight before draw", maxTaskHeight); - if (sections6 && sections6.length > 0) { - sections6.forEach((section) => { - const tasksForSection = tasks4.filter((task) => task.section === section); - const sectionNode = { - number: sectionNumber, - descr: section, - section: sectionNumber, - width: 200 * Math.max(tasksForSection.length, 1) - 50, - padding: 20, - maxHeight: maxSectionHeight - }; - log.debug("sectionNode", sectionNode); - const sectionNodeWrapper = svg2.append("g"); - const node2 = svgDraw_default4.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf5); - log.debug("sectionNode output", node2); - sectionNodeWrapper.attr("transform", `translate(${masterX}, ${sectionBeginY})`); - masterY += maxSectionHeight + 50; - if (tasksForSection.length > 0) { - drawTasks2( - svg2, - tasksForSection, - sectionNumber, - masterX, - masterY, - maxTaskHeight, - conf5, - maxEventCount, - maxEventLineLength, - maxSectionHeight, - false - ); + const backgroundNodes = svg2.selectAll('[id*="-background"]'); + if (Array.from(backgroundNodes).length > 0) { + backgroundNodes.each(function() { + const backgroundNode = select_default2(this); + const backgroundId = backgroundNode.attr("id"); + const nonBackgroundId = backgroundId.replace("-background", ""); + const nonBackgroundNode = svg2.select(`#${CSS.escape(nonBackgroundId)}`); + if (!nonBackgroundNode.empty()) { + const transform8 = nonBackgroundNode.attr("transform"); + backgroundNode.attr("transform", transform8); } - masterX += 200 * Math.max(tasksForSection.length, 1); - masterY = sectionBeginY; - sectionNumber++; }); - } else { - hasSections = false; - drawTasks2( - svg2, - tasks4, - sectionNumber, - masterX, - masterY, - maxTaskHeight, - conf5, - maxEventCount, - maxEventLineLength, - maxSectionHeight, - true - ); - } - const box = svg2.node().getBBox(); - log.debug("bounds", box); - if (title2) { - svg2.append("text").text(title2).attr("x", box.width / 2 - LEFT_MARGIN2).attr("font-size", "4ex").attr("font-weight", "bold").attr("y", 20); } - depthY = hasSections ? maxSectionHeight + maxTaskHeight + 150 : maxTaskHeight + 100; - const lineWrapper = svg2.append("g").attr("class", "lineWrapper"); - lineWrapper.append("line").attr("x1", LEFT_MARGIN2).attr("y1", depthY).attr("x2", box.width + 3 * LEFT_MARGIN2).attr("y2", depthY).attr("stroke-width", 4).attr("stroke", "black").attr("marker-end", "url(#arrowhead)"); - setupGraphViewbox( - void 0, + const padding2 = 8; + utils_default2.insertTitle( svg2, - conf5.timeline?.padding ?? 50, - conf5.timeline?.useMaxWidth ?? false + "erDiagramTitleText", + conf5?.titleTopMargin ?? 25, + diag.db.getDiagramTitle() ); + setupViewPortForSVG(svg2, padding2, "erDiagram", conf5?.useMaxWidth ?? true); }, "draw"); - drawTasks2 = /* @__PURE__ */ __name(function(diagram26, tasks4, sectionColor, masterX, masterY, maxTaskHeight, conf5, maxEventCount, maxEventLineLength, maxSectionHeight, isWithoutSections) { - for (const task of tasks4) { - const taskNode = { - descr: task.task, - section: sectionColor, - number: sectionColor, - width: 150, - padding: 20, - maxHeight: maxTaskHeight - }; - log.debug("taskNode", taskNode); - const taskWrapper = diagram26.append("g").attr("class", "taskWrapper"); - const node2 = svgDraw_default4.drawNode(taskWrapper, taskNode, sectionColor, conf5); - const taskHeight = node2.height; - log.debug("taskHeight after draw", taskHeight); - taskWrapper.attr("transform", `translate(${masterX}, ${masterY})`); - maxTaskHeight = Math.max(maxTaskHeight, taskHeight); - if (task.events) { - const lineWrapper = diagram26.append("g").attr("class", "lineWrapper"); - let lineLength = maxTaskHeight; - masterY += 100; - lineLength = lineLength + drawEvents(diagram26, task.events, sectionColor, masterX, masterY, conf5); - masterY -= 100; - lineWrapper.append("line").attr("x1", masterX + 190 / 2).attr("y1", masterY + maxTaskHeight).attr("x2", masterX + 190 / 2).attr( - "y2", - masterY + maxTaskHeight + (isWithoutSections ? maxTaskHeight : maxSectionHeight) + maxEventLineLength + 120 - ).attr("stroke-width", 2).attr("stroke", "black").attr("marker-end", "url(#arrowhead)").attr("stroke-dasharray", "5,5"); - } - masterX = masterX + 200; - if (isWithoutSections && !conf5.timeline?.disableMulticolor) { - sectionColor++; - } - } - masterY = masterY - 10; - }, "drawTasks"); - drawEvents = /* @__PURE__ */ __name(function(diagram26, events, sectionColor, masterX, masterY, conf5) { - let maxEventHeight = 0; - const eventBeginY = masterY; - masterY = masterY + 100; - for (const event3 of events) { - const eventNode = { - descr: event3, - section: sectionColor, - number: sectionColor, - width: 150, - padding: 20, - maxHeight: 50 - }; - log.debug("eventNode", eventNode); - const eventWrapper = diagram26.append("g").attr("class", "eventWrapper"); - const node2 = svgDraw_default4.drawNode(eventWrapper, eventNode, sectionColor, conf5); - const eventHeight = node2.height; - maxEventHeight = maxEventHeight + eventHeight; - eventWrapper.attr("transform", `translate(${masterX}, ${masterY})`); - masterY = masterY + 10 + eventHeight; - } - masterY = eventBeginY; - return maxEventHeight; - }, "drawEvents"); - timelineRenderer_default = { - setConf: /* @__PURE__ */ __name(() => { - }, "setConf"), - draw: draw17 - }; } }); - // src/diagrams/timeline/styles.js - var genSections, getStyles13, styles_default12; - var init_styles12 = __esm({ - "src/diagrams/timeline/styles.js"() { + // src/diagrams/er/styles.ts + var fade2, getStyles4, styles_default4; + var init_styles4 = __esm({ + "src/diagrams/er/styles.ts"() { "use strict"; init_dist(); - genSections = /* @__PURE__ */ __name((options3) => { - let sections6 = ""; - for (let i2 = 0; i2 < options3.THEME_COLOR_LIMIT; i2++) { - options3["lineColor" + i2] = options3["lineColor" + i2] || options3["cScaleInv" + i2]; - if (is_dark_default(options3["lineColor" + i2])) { - options3["lineColor" + i2] = lighten_default(options3["lineColor" + i2], 20); - } else { - options3["lineColor" + i2] = darken_default(options3["lineColor" + i2], 20); - } - } - for (let i2 = 0; i2 < options3.THEME_COLOR_LIMIT; i2++) { - const sw = "" + (17 - 3 * i2); - sections6 += ` - .section-${i2 - 1} rect, .section-${i2 - 1} path, .section-${i2 - 1} circle, .section-${i2 - 1} path { - fill: ${options3["cScale" + i2]}; - } - .section-${i2 - 1} text { - fill: ${options3["cScaleLabel" + i2]}; - } - .node-icon-${i2 - 1} { - font-size: 40px; - color: ${options3["cScaleLabel" + i2]}; - } - .section-edge-${i2 - 1}{ - stroke: ${options3["cScale" + i2]}; - } - .edge-depth-${i2 - 1}{ - stroke-width: ${sw}; - } - .section-${i2 - 1} line { - stroke: ${options3["cScaleInv" + i2]} ; - stroke-width: 3; - } + fade2 = /* @__PURE__ */ __name((color2, opacity) => { + const channel2 = channel_default2; + const r2 = channel2(color2, "r"); + const g2 = channel2(color2, "g"); + const b3 = channel2(color2, "b"); + return rgba_default(r2, g2, b3, opacity); + }, "fade"); + getStyles4 = /* @__PURE__ */ __name((options2) => ` + .entityBox { + fill: ${options2.mainBkg}; + stroke: ${options2.nodeBorder}; + } - .lineWrapper line{ - stroke: ${options3["cScaleLabel" + i2]} ; - } + .relationshipLabelBox { + fill: ${options2.tertiaryColor}; + opacity: 0.7; + background-color: ${options2.tertiaryColor}; + rect { + opacity: 0.5; + } + } - .disabled, .disabled circle, .disabled text { - fill: lightgray; - } - .disabled text { - fill: #efefef; - } - `; - } - return sections6; - }, "genSections"); - getStyles13 = /* @__PURE__ */ __name((options3) => ` - .edge { - stroke-width: 3; + .labelBkg { + background-color: ${fade2(options2.tertiaryColor, 0.5)}; } - ${genSections(options3)} - .section-root rect, .section-root path, .section-root circle { - fill: ${options3.git0}; + + .edgeLabel .label { + fill: ${options2.nodeBorder}; + font-size: 14px; } - .section-root text { - fill: ${options3.gitBranchLabel0}; + + .label { + font-family: ${options2.fontFamily}; + color: ${options2.nodeTextColor || options2.textColor}; } - .icon-container { - height:100%; - display: flex; - justify-content: center; - align-items: center; + + .edge-pattern-dashed { + stroke-dasharray: 8,8; } - .edge { + + .node rect, + .node circle, + .node ellipse, + .node polygon + { + fill: ${options2.mainBkg}; + stroke: ${options2.nodeBorder}; + stroke-width: 1px; + } + + .relationshipLine { + stroke: ${options2.lineColor}; + stroke-width: 1; fill: none; } - .eventWrapper { - filter: brightness(120%); + + .marker { + fill: none !important; + stroke: ${options2.lineColor} !important; + stroke-width: 1; } `, "getStyles"); - styles_default12 = getStyles13; + styles_default4 = getStyles4; } }); - // src/diagrams/timeline/timeline-definition.ts - var timeline_definition_exports = {}; - __export(timeline_definition_exports, { - diagram: () => diagram18 + // src/diagrams/er/erDiagram.ts + var erDiagram_exports = {}; + __export(erDiagram_exports, { + diagram: () => diagram3 }); - var diagram18; - var init_timeline_definition = __esm({ - "src/diagrams/timeline/timeline-definition.ts"() { + var diagram3; + var init_erDiagram2 = __esm({ + "src/diagrams/er/erDiagram.ts"() { "use strict"; - init_timeline(); - init_timelineDb(); - init_timelineRenderer(); - init_styles12(); - diagram18 = { - db: timelineDb_exports, - renderer: timelineRenderer_default, - parser: timeline_default, - styles: styles_default12 + init_erDiagram(); + init_erDb(); + init_erRenderer_unified(); + init_styles4(); + diagram3 = { + parser: erDiagram_default, + get db() { + return new ErDB(); + }, + renderer: erRenderer_unified_exports, + styles: styles_default4 }; } }); - // src/diagrams/mindmap/parser/mindmap.jison - var parser17, mindmap_default; - var init_mindmap = __esm({ - "src/diagrams/mindmap/parser/mindmap.jison"() { + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/syntax-tree.js + function isAstNode(obj) { + return typeof obj === "object" && obj !== null && typeof obj.$type === "string"; + } + function isReference(obj) { + return typeof obj === "object" && obj !== null && typeof obj.$refText === "string"; + } + function isAstNodeDescription(obj) { + return typeof obj === "object" && obj !== null && typeof obj.name === "string" && typeof obj.type === "string" && typeof obj.path === "string"; + } + function isLinkingError(obj) { + return typeof obj === "object" && obj !== null && isAstNode(obj.container) && isReference(obj.reference) && typeof obj.message === "string"; + } + function isCompositeCstNode(node2) { + return typeof node2 === "object" && node2 !== null && Array.isArray(node2.content); + } + function isLeafCstNode(node2) { + return typeof node2 === "object" && node2 !== null && typeof node2.tokenType === "object"; + } + function isRootCstNode(node2) { + return isCompositeCstNode(node2) && typeof node2.fullText === "string"; + } + var AbstractAstReflection; + var init_syntax_tree = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/syntax-tree.js"() { "use strict"; - parser17 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; - return o3; - }, "o"), $V0 = [1, 4], $V1 = [1, 13], $V2 = [1, 12], $V3 = [1, 15], $V4 = [1, 16], $V5 = [1, 20], $V6 = [1, 19], $V7 = [6, 7, 8], $V8 = [1, 26], $V9 = [1, 24], $Va = [1, 25], $Vb = [6, 7, 11], $Vc = [1, 6, 13, 15, 16, 19, 22], $Vd = [1, 33], $Ve = [1, 34], $Vf = [1, 6, 7, 11, 13, 15, 16, 19, 22]; - var parser24 = { - trace: /* @__PURE__ */ __name(function trace() { - }, "trace"), - yy: {}, - symbols_: { "error": 2, "start": 3, "mindMap": 4, "spaceLines": 5, "SPACELINE": 6, "NL": 7, "MINDMAP": 8, "document": 9, "stop": 10, "EOF": 11, "statement": 12, "SPACELIST": 13, "node": 14, "ICON": 15, "CLASS": 16, "nodeWithId": 17, "nodeWithoutId": 18, "NODE_DSTART": 19, "NODE_DESCR": 20, "NODE_DEND": 21, "NODE_ID": 22, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 6: "SPACELINE", 7: "NL", 8: "MINDMAP", 11: "EOF", 13: "SPACELIST", 15: "ICON", 16: "CLASS", 19: "NODE_DSTART", 20: "NODE_DESCR", 21: "NODE_DEND", 22: "NODE_ID" }, - productions_: [0, [3, 1], [3, 2], [5, 1], [5, 2], [5, 2], [4, 2], [4, 3], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [9, 3], [9, 2], [12, 2], [12, 2], [12, 2], [12, 1], [12, 1], [12, 1], [12, 1], [12, 1], [14, 1], [14, 1], [18, 3], [17, 1], [17, 4]], - performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 6: - case 7: - return yy; - break; - case 8: - yy.getLogger().trace("Stop NL "); - break; - case 9: - yy.getLogger().trace("Stop EOF "); - break; - case 11: - yy.getLogger().trace("Stop NL2 "); - break; - case 12: - yy.getLogger().trace("Stop EOF2 "); - break; - case 15: - yy.getLogger().info("Node: ", $$[$0].id); - yy.addNode($$[$0 - 1].length, $$[$0].id, $$[$0].descr, $$[$0].type); - break; - case 16: - yy.getLogger().trace("Icon: ", $$[$0]); - yy.decorateNode({ icon: $$[$0] }); - break; - case 17: - case 21: - yy.decorateNode({ class: $$[$0] }); - break; - case 18: - yy.getLogger().trace("SPACELIST"); - break; - case 19: - yy.getLogger().trace("Node: ", $$[$0].id); - yy.addNode(0, $$[$0].id, $$[$0].descr, $$[$0].type); - break; - case 20: - yy.decorateNode({ icon: $$[$0] }); - break; - case 25: - yy.getLogger().trace("node found ..", $$[$0 - 2]); - this.$ = { id: $$[$0 - 1], descr: $$[$0 - 1], type: yy.getType($$[$0 - 2], $$[$0]) }; - break; - case 26: - this.$ = { id: $$[$0], descr: $$[$0], type: yy.nodeType.DEFAULT }; - break; - case 27: - yy.getLogger().trace("node found ..", $$[$0 - 3]); - this.$ = { id: $$[$0 - 3], descr: $$[$0 - 1], type: yy.getType($$[$0 - 2], $$[$0]) }; - break; - } - }, "anonymous"), - table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 8: $V0 }, { 1: [3] }, { 1: [2, 1] }, { 4: 6, 6: [1, 7], 7: [1, 8], 8: $V0 }, { 6: $V1, 7: [1, 10], 9: 9, 12: 11, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, o2($V7, [2, 3]), { 1: [2, 2] }, o2($V7, [2, 4]), o2($V7, [2, 5]), { 1: [2, 6], 6: $V1, 12: 21, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, { 6: $V1, 9: 22, 12: 11, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, { 6: $V8, 7: $V9, 10: 23, 11: $Va }, o2($Vb, [2, 22], { 17: 17, 18: 18, 14: 27, 15: [1, 28], 16: [1, 29], 19: $V5, 22: $V6 }), o2($Vb, [2, 18]), o2($Vb, [2, 19]), o2($Vb, [2, 20]), o2($Vb, [2, 21]), o2($Vb, [2, 23]), o2($Vb, [2, 24]), o2($Vb, [2, 26], { 19: [1, 30] }), { 20: [1, 31] }, { 6: $V8, 7: $V9, 10: 32, 11: $Va }, { 1: [2, 7], 6: $V1, 12: 21, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, o2($Vc, [2, 14], { 7: $Vd, 11: $Ve }), o2($Vf, [2, 8]), o2($Vf, [2, 9]), o2($Vf, [2, 10]), o2($Vb, [2, 15]), o2($Vb, [2, 16]), o2($Vb, [2, 17]), { 20: [1, 35] }, { 21: [1, 36] }, o2($Vc, [2, 13], { 7: $Vd, 11: $Ve }), o2($Vf, [2, 11]), o2($Vf, [2, 12]), { 21: [1, 37] }, o2($Vb, [2, 25]), o2($Vb, [2, 27])], - defaultActions: { 2: [2, 1], 6: [2, 2] }, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (hash.recoverable) { - this.trace(str2); - } else { - var error3 = new Error(str2); - error3.hash = hash; - throw error3; - } - }, "parseError"), - parse: /* @__PURE__ */ __name(function parse7(input) { - var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; - var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k2 in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { - sharedState.yy[k2] = this.yy[k2]; + __name(isAstNode, "isAstNode"); + __name(isReference, "isReference"); + __name(isAstNodeDescription, "isAstNodeDescription"); + __name(isLinkingError, "isLinkingError"); + AbstractAstReflection = class { + static { + __name(this, "AbstractAstReflection"); + } + constructor() { + this.subtypes = {}; + this.allSubtypes = {}; + } + isInstance(node2, type3) { + return isAstNode(node2) && this.isSubtype(node2.$type, type3); + } + isSubtype(subtype, supertype) { + if (subtype === supertype) { + return true; + } + let nested = this.subtypes[subtype]; + if (!nested) { + nested = this.subtypes[subtype] = {}; + } + const existing = nested[supertype]; + if (existing !== void 0) { + return existing; + } else { + const result = this.computeIsSubtype(subtype, supertype); + nested[supertype] = result; + return result; + } + } + getAllSubTypes(type3) { + const existing = this.allSubtypes[type3]; + if (existing) { + return existing; + } else { + const allTypes = this.getAllTypes(); + const types = []; + for (const possibleSubType of allTypes) { + if (this.isSubtype(possibleSubType, type3)) { + types.push(possibleSubType); } } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; - sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; + this.allSubtypes[type3] = types; + return types; + } + } + }; + __name(isCompositeCstNode, "isCompositeCstNode"); + __name(isLeafCstNode, "isLeafCstNode"); + __name(isRootCstNode, "isRootCstNode"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/stream.js + function toString5(item) { + if (typeof item === "string") { + return item; + } + if (typeof item === "undefined") { + return "undefined"; + } + if (typeof item.toString === "function") { + return item.toString(); + } + return Object.prototype.toString.call(item); + } + function isIterable(obj) { + return !!obj && typeof obj[Symbol.iterator] === "function"; + } + function stream(...collections) { + if (collections.length === 1) { + const collection4 = collections[0]; + if (collection4 instanceof StreamImpl) { + return collection4; + } + if (isIterable(collection4)) { + return new StreamImpl(() => collection4[Symbol.iterator](), (iterator) => iterator.next()); + } + if (typeof collection4.length === "number") { + return new StreamImpl(() => ({ index: 0 }), (state3) => { + if (state3.index < collection4.length) { + return { done: false, value: collection4[state3.index++] }; + } else { + return DONE_RESULT; + } + }); + } + } + if (collections.length > 1) { + return new StreamImpl(() => ({ collIndex: 0, arrIndex: 0 }), (state3) => { + do { + if (state3.iterator) { + const next3 = state3.iterator.next(); + if (!next3.done) { + return next3; } - var yyloc = lexer3.yylloc; - lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; - if (typeof sharedState.yy.parseError === "function") { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; + state3.iterator = void 0; + } + if (state3.array) { + if (state3.arrIndex < state3.array.length) { + return { done: false, value: state3.array[state3.arrIndex++] }; } - function popStack(n2) { - stack.length = stack.length - 2 * n2; - vstack.length = vstack.length - n2; - lstack.length = lstack.length - n2; + state3.array = void 0; + state3.arrIndex = 0; + } + if (state3.collIndex < collections.length) { + const collection4 = collections[state3.collIndex++]; + if (isIterable(collection4)) { + state3.iterator = collection4[Symbol.iterator](); + } else if (collection4 && typeof collection4.length === "number") { + state3.array = collection4; } - __name(popStack, "popStack"); - function lex() { - var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; - if (typeof token2 !== "number") { - if (token2 instanceof Array) { - tstack = token2; - token2 = tstack.pop(); - } - token2 = self2.symbols_[token2] || token2; - } - return token2; + } + } while (state3.iterator || state3.array || state3.collIndex < collections.length); + return DONE_RESULT; + }); + } + return EMPTY_STREAM; + } + var StreamImpl, EMPTY_STREAM, DONE_RESULT, TreeStreamImpl, Reduction; + var init_stream = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/stream.js"() { + "use strict"; + StreamImpl = class _StreamImpl { + static { + __name(this, "StreamImpl"); + } + constructor(startFn, nextFn) { + this.startFn = startFn; + this.nextFn = nextFn; + } + iterator() { + const iterator = { + state: this.startFn(), + next: /* @__PURE__ */ __name(() => this.nextFn(iterator.state), "next"), + [Symbol.iterator]: () => iterator + }; + return iterator; + } + [Symbol.iterator]() { + return this.iterator(); + } + isEmpty() { + const iterator = this.iterator(); + return Boolean(iterator.next().done); + } + count() { + const iterator = this.iterator(); + let count2 = 0; + let next3 = iterator.next(); + while (!next3.done) { + count2++; + next3 = iterator.next(); + } + return count2; + } + toArray() { + const result = []; + const iterator = this.iterator(); + let next3; + do { + next3 = iterator.next(); + if (next3.value !== void 0) { + result.push(next3.value); } - __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; - while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state4] && table[state4][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - expected = []; - for (p3 in table[state4]) { - if (this.terminals_[p3] && p3 > TERROR) { - expected.push("'" + this.terminals_[p3] + "'"); - } - } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + } while (!next3.done); + return result; + } + toSet() { + return new Set(this); + } + toMap(keyFn, valueFn) { + const entryStream = this.map((element3) => [ + keyFn ? keyFn(element3) : element3, + valueFn ? valueFn(element3) : element3 + ]); + return new Map(entryStream); + } + toString() { + return this.join(); + } + concat(other) { + return new _StreamImpl(() => ({ first: this.startFn(), firstDone: false, iterator: other[Symbol.iterator]() }), (state3) => { + let result; + if (!state3.firstDone) { + do { + result = this.nextFn(state3.first); + if (!result.done) { + return result; } - this.parseError(errStr, { - text: lexer3.match, - token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, - loc: yyloc, - expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); + } while (!result.done); + state3.firstDone = true; + } + do { + result = state3.iterator.next(); + if (!result.done) { + return result; } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r2 = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r2 !== "undefined") { - return r2; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState2); - break; - case 3: - return true; + } while (!result.done); + return DONE_RESULT; + }); + } + join(separator = ",") { + const iterator = this.iterator(); + let value2 = ""; + let result; + let addSeparator = false; + do { + result = iterator.next(); + if (!result.done) { + if (addSeparator) { + value2 += separator; } + value2 += toString5(result.value); } - return true; - }, "parse") - }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { - EOF: 1, - parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str2, hash); - } else { - throw new Error(str2); - } - }, "parseError"), - // resets the lexer, sets new input - setInput: /* @__PURE__ */ __name(function(input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 - }; - if (this.options.ranges) { - this.yylloc.range = [0, 0]; - } - this.offset = 0; - return this; - }, "setInput"), - // consumes and returns one char from the input - input: /* @__PURE__ */ __name(function() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } - this._input = this._input.slice(1); - return ch; - }, "input"), - // unshifts one char (or a string) into the input - unput: /* @__PURE__ */ __name(function(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r2 = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len - }; - if (this.options.ranges) { - this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, "unput"), - // When called from action, caches matched text and appends it on next action - more: /* @__PURE__ */ __name(function() { - this._more = true; - return this; - }, "more"), - // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. - reject: /* @__PURE__ */ __name(function() { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - return this; - }, "reject"), - // retain first n characters of the match - less: /* @__PURE__ */ __name(function(n2) { - this.unput(this.match.slice(n2)); - }, "less"), - // displays already matched input, i.e. for error messages - pastInput: /* @__PURE__ */ __name(function() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, "pastInput"), - // displays upcoming input, i.e. for error messages - upcomingInput: /* @__PURE__ */ __name(function() { - var next3 = this.match; - if (next3.length < 20) { - next3 += this._input.substr(0, 20 - next3.length); + addSeparator = true; + } while (!result.done); + return value2; + } + indexOf(searchElement, fromIndex = 0) { + const iterator = this.iterator(); + let index = 0; + let next3 = iterator.next(); + while (!next3.done) { + if (index >= fromIndex && next3.value === searchElement) { + return index; + } + next3 = iterator.next(); + index++; + } + return -1; + } + every(predicate) { + const iterator = this.iterator(); + let next3 = iterator.next(); + while (!next3.done) { + if (!predicate(next3.value)) { + return false; + } + next3 = iterator.next(); + } + return true; + } + some(predicate) { + const iterator = this.iterator(); + let next3 = iterator.next(); + while (!next3.done) { + if (predicate(next3.value)) { + return true; + } + next3 = iterator.next(); + } + return false; + } + forEach(callbackfn) { + const iterator = this.iterator(); + let index = 0; + let next3 = iterator.next(); + while (!next3.done) { + callbackfn(next3.value, index); + next3 = iterator.next(); + index++; + } + } + map(callbackfn) { + return new _StreamImpl(this.startFn, (state3) => { + const { done, value: value2 } = this.nextFn(state3); + if (done) { + return DONE_RESULT; + } else { + return { done: false, value: callbackfn(value2) }; + } + }); + } + filter(predicate) { + return new _StreamImpl(this.startFn, (state3) => { + let result; + do { + result = this.nextFn(state3); + if (!result.done && predicate(result.value)) { + return result; } - return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, "upcomingInput"), - // displays the character position where the lexing error occurred, i.e. for error messages - showPosition: /* @__PURE__ */ __name(function() { - var pre = this.pastInput(); - var c3 = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c3 + "^"; - }, "showPosition"), - // test the lexed token: return FALSE when not a match, otherwise return token - test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { - var token2, lines, backup; - if (this.options.backtrack_lexer) { - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); + } while (!result.done); + return DONE_RESULT; + }); + } + nonNullable() { + return this.filter((e3) => e3 !== void 0 && e3 !== null); + } + reduce(callbackfn, initialValue) { + const iterator = this.iterator(); + let previousValue = initialValue; + let next3 = iterator.next(); + while (!next3.done) { + if (previousValue === void 0) { + previousValue = next3.value; + } else { + previousValue = callbackfn(previousValue, next3.value); + } + next3 = iterator.next(); + } + return previousValue; + } + reduceRight(callbackfn, initialValue) { + return this.recursiveReduce(this.iterator(), callbackfn, initialValue); + } + recursiveReduce(iterator, callbackfn, initialValue) { + const next3 = iterator.next(); + if (next3.done) { + return initialValue; + } + const previousValue = this.recursiveReduce(iterator, callbackfn, initialValue); + if (previousValue === void 0) { + return next3.value; + } + return callbackfn(previousValue, next3.value); + } + find(predicate) { + const iterator = this.iterator(); + let next3 = iterator.next(); + while (!next3.done) { + if (predicate(next3.value)) { + return next3.value; + } + next3 = iterator.next(); + } + return void 0; + } + findIndex(predicate) { + const iterator = this.iterator(); + let index = 0; + let next3 = iterator.next(); + while (!next3.done) { + if (predicate(next3.value)) { + return index; + } + next3 = iterator.next(); + index++; + } + return -1; + } + includes(searchElement) { + const iterator = this.iterator(); + let next3 = iterator.next(); + while (!next3.done) { + if (next3.value === searchElement) { + return true; + } + next3 = iterator.next(); + } + return false; + } + flatMap(callbackfn) { + return new _StreamImpl(() => ({ this: this.startFn() }), (state3) => { + do { + if (state3.iterator) { + const next3 = state3.iterator.next(); + if (next3.done) { + state3.iterator = void 0; + } else { + return next3; } } - lines = match2[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length - }; - this.yytext += match2[0]; - this.match += match2[0]; - this.matches = match2; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match2[0].length); - this.matched += match2[0]; - token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token2) { - return token2; - } else if (this._backtrack) { - for (var k2 in backup) { - this[k2] = backup[k2]; + const { done, value: value2 } = this.nextFn(state3.this); + if (!done) { + const mapped = callbackfn(value2); + if (isIterable(mapped)) { + state3.iterator = mapped[Symbol.iterator](); + } else { + return { done: false, value: mapped }; } - return false; - } - return false; - }, "test_match"), - // return next match in input - next: /* @__PURE__ */ __name(function() { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; } - var token2, match2, tempMatch, index; - if (!this._more) { - this.yytext = ""; - this.match = ""; - } - var rules = this._currentRules(); - for (var i2 = 0; i2 < rules.length; i2++) { - tempMatch = this._input.match(this.rules[rules[i2]]); - if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { - match2 = tempMatch; - index = i2; - if (this.options.backtrack_lexer) { - token2 = this.test_match(tempMatch, rules[i2]); - if (token2 !== false) { - return token2; - } else if (this._backtrack) { - match2 = false; - continue; - } else { - return false; - } - } else if (!this.options.flex) { - break; - } + } while (state3.iterator); + return DONE_RESULT; + }); + } + flat(depth) { + if (depth === void 0) { + depth = 1; + } + if (depth <= 0) { + return this; + } + const stream2 = depth > 1 ? this.flat(depth - 1) : this; + return new _StreamImpl(() => ({ this: stream2.startFn() }), (state3) => { + do { + if (state3.iterator) { + const next3 = state3.iterator.next(); + if (next3.done) { + state3.iterator = void 0; + } else { + return next3; } } - if (match2) { - token2 = this.test_match(match2, rules[index]); - if (token2 !== false) { - return token2; + const { done, value: value2 } = stream2.nextFn(state3.this); + if (!done) { + if (isIterable(value2)) { + state3.iterator = value2[Symbol.iterator](); + } else { + return { done: false, value: value2 }; } - return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, "next"), - // return next match that has a token - lex: /* @__PURE__ */ __name(function lex() { - var r2 = this.next(); - if (r2) { - return r2; - } else { - return this.lex(); - } - }, "lex"), - // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) - begin: /* @__PURE__ */ __name(function begin(condition) { - this.conditionStack.push(condition); - }, "begin"), - // pop the previously active lexer condition state off the condition stack - popState: /* @__PURE__ */ __name(function popState() { - var n2 = this.conditionStack.length - 1; - if (n2 > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, "popState"), - // produce the lexer rule set which is active for the currently active lexer condition state - _currentRules: /* @__PURE__ */ __name(function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, "_currentRules"), - // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available - topState: /* @__PURE__ */ __name(function topState(n2) { - n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); - if (n2 >= 0) { - return this.conditionStack[n2]; - } else { - return "INITIAL"; - } - }, "topState"), - // alias for begin(condition) - pushState: /* @__PURE__ */ __name(function pushState(condition) { - this.begin(condition); - }, "pushState"), - // return the number of states currently on the stack - stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { - return this.conditionStack.length; - }, "stateStackSize"), - options: { "case-insensitive": true }, - performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - yy.getLogger().trace("Found comment", yy_.yytext); - return 6; - break; - case 1: - return 8; - break; - case 2: - this.begin("CLASS"); - break; - case 3: - this.popState(); - return 16; - break; - case 4: - this.popState(); - break; - case 5: - yy.getLogger().trace("Begin icon"); - this.begin("ICON"); - break; - case 6: - yy.getLogger().trace("SPACELINE"); - return 6; - break; - case 7: - return 7; - break; - case 8: - return 15; - break; - case 9: - yy.getLogger().trace("end icon"); - this.popState(); - break; - case 10: - yy.getLogger().trace("Exploding node"); - this.begin("NODE"); - return 19; - break; - case 11: - yy.getLogger().trace("Cloud"); - this.begin("NODE"); - return 19; - break; - case 12: - yy.getLogger().trace("Explosion Bang"); - this.begin("NODE"); - return 19; - break; - case 13: - yy.getLogger().trace("Cloud Bang"); - this.begin("NODE"); - return 19; - break; - case 14: - this.begin("NODE"); - return 19; - break; - case 15: - this.begin("NODE"); - return 19; - break; - case 16: - this.begin("NODE"); - return 19; - break; - case 17: - this.begin("NODE"); - return 19; - break; - case 18: - return 13; - break; - case 19: - return 22; - break; - case 20: - return 11; - break; - case 21: - this.begin("NSTR2"); - break; - case 22: - return "NODE_DESCR"; - break; - case 23: - this.popState(); - break; - case 24: - yy.getLogger().trace("Starting NSTR"); - this.begin("NSTR"); - break; - case 25: - yy.getLogger().trace("description:", yy_.yytext); - return "NODE_DESCR"; - break; - case 26: - this.popState(); - break; - case 27: - this.popState(); - yy.getLogger().trace("node end ))"); - return "NODE_DEND"; - break; - case 28: - this.popState(); - yy.getLogger().trace("node end )"); - return "NODE_DEND"; - break; - case 29: - this.popState(); - yy.getLogger().trace("node end ...", yy_.yytext); - return "NODE_DEND"; - break; - case 30: - this.popState(); - yy.getLogger().trace("node end (("); - return "NODE_DEND"; - break; - case 31: - this.popState(); - yy.getLogger().trace("node end (-"); - return "NODE_DEND"; - break; - case 32: - this.popState(); - yy.getLogger().trace("node end (-"); - return "NODE_DEND"; - break; - case 33: - this.popState(); - yy.getLogger().trace("node end (("); - return "NODE_DEND"; - break; - case 34: - this.popState(); - yy.getLogger().trace("node end (("); - return "NODE_DEND"; - break; - case 35: - yy.getLogger().trace("Long description:", yy_.yytext); - return 20; - break; - case 36: - yy.getLogger().trace("Long description:", yy_.yytext); - return 20; - break; } - }, "anonymous"), - rules: [/^(?:\s*%%.*)/i, /^(?:mindmap\b)/i, /^(?::::)/i, /^(?:.+)/i, /^(?:\n)/i, /^(?:::icon\()/i, /^(?:[\s]+[\n])/i, /^(?:[\n]+)/i, /^(?:[^\)]+)/i, /^(?:\))/i, /^(?:-\))/i, /^(?:\(-)/i, /^(?:\)\))/i, /^(?:\))/i, /^(?:\(\()/i, /^(?:\{\{)/i, /^(?:\()/i, /^(?:\[)/i, /^(?:[\s]+)/i, /^(?:[^\(\[\n\)\{\}]+)/i, /^(?:$)/i, /^(?:["][`])/i, /^(?:[^`"]+)/i, /^(?:[`]["])/i, /^(?:["])/i, /^(?:[^"]+)/i, /^(?:["])/i, /^(?:[\)]\))/i, /^(?:[\)])/i, /^(?:[\]])/i, /^(?:\}\})/i, /^(?:\(-)/i, /^(?:-\))/i, /^(?:\(\()/i, /^(?:\()/i, /^(?:[^\)\]\(\}]+)/i, /^(?:.+(?!\(\())/i], - conditions: { "CLASS": { "rules": [3, 4], "inclusive": false }, "ICON": { "rules": [8, 9], "inclusive": false }, "NSTR2": { "rules": [22, 23], "inclusive": false }, "NSTR": { "rules": [25, 26], "inclusive": false }, "NODE": { "rules": [21, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "inclusive": true } } - }; - return lexer3; - }(); - parser24.lexer = lexer2; - function Parser3() { - this.yy = {}; + } while (state3.iterator); + return DONE_RESULT; + }); } - __name(Parser3, "Parser"); - Parser3.prototype = parser24; - parser24.Parser = Parser3; - return new Parser3(); - }(); - parser17.parser = parser17; - mindmap_default = parser17; - } - }); - - // src/diagrams/mindmap/mindmapDb.ts - var nodes, cnt2, elements, clear15, getParent, getMindmap, addNode, nodeType, getType, setElementForId, decorateNode, type2Str, getLogger, getElementById, db4, mindmapDb_default; - var init_mindmapDb = __esm({ - "src/diagrams/mindmap/mindmapDb.ts"() { - "use strict"; - init_diagramAPI(); - init_common(); - init_logger(); - init_defaultConfig(); - nodes = []; - cnt2 = 0; - elements = {}; - clear15 = /* @__PURE__ */ __name(() => { - nodes = []; - cnt2 = 0; - elements = {}; - }, "clear"); - getParent = /* @__PURE__ */ __name(function(level) { - for (let i2 = nodes.length - 1; i2 >= 0; i2--) { - if (nodes[i2].level < level) { - return nodes[i2]; + head() { + const iterator = this.iterator(); + const result = iterator.next(); + if (result.done) { + return void 0; } + return result.value; } - return null; - }, "getParent"); - getMindmap = /* @__PURE__ */ __name(() => { - return nodes.length > 0 ? nodes[0] : null; - }, "getMindmap"); - addNode = /* @__PURE__ */ __name((level, id29, descr, type3) => { - log.info("addNode", level, id29, descr, type3); - const conf5 = getConfig2(); - let padding2 = conf5.mindmap?.padding ?? defaultConfig_default.mindmap.padding; - switch (type3) { - case nodeType.ROUNDED_RECT: - case nodeType.RECT: - case nodeType.HEXAGON: - padding2 *= 2; + tail(skipCount = 1) { + return new _StreamImpl(() => { + const state3 = this.startFn(); + for (let i2 = 0; i2 < skipCount; i2++) { + const next3 = this.nextFn(state3); + if (next3.done) { + return state3; + } + } + return state3; + }, this.nextFn); } - const node2 = { - id: cnt2++, - nodeId: sanitizeText(id29, conf5), - level, - descr: sanitizeText(descr, conf5), - type: type3, - children: [], - width: conf5.mindmap?.maxNodeWidth ?? defaultConfig_default.mindmap.maxNodeWidth, - padding: padding2 - }; - const parent4 = getParent(level); - if (parent4) { - parent4.children.push(node2); - nodes.push(node2); - } else { - if (nodes.length === 0) { - nodes.push(node2); - } else { - throw new Error( - 'There can be only one root. No parent could be found for ("' + node2.descr + '")' - ); + limit(maxSize) { + return new _StreamImpl(() => ({ size: 0, state: this.startFn() }), (state3) => { + state3.size++; + if (state3.size > maxSize) { + return DONE_RESULT; + } + return this.nextFn(state3.state); + }); + } + distinct(by) { + return new _StreamImpl(() => ({ set: /* @__PURE__ */ new Set(), internalState: this.startFn() }), (state3) => { + let result; + do { + result = this.nextFn(state3.internalState); + if (!result.done) { + const value2 = by ? by(result.value) : result.value; + if (!state3.set.has(value2)) { + state3.set.add(value2); + return result; + } + } + } while (!result.done); + return DONE_RESULT; + }); + } + exclude(other, key) { + const otherKeySet = /* @__PURE__ */ new Set(); + for (const item of other) { + const value2 = key ? key(item) : item; + otherKeySet.add(value2); } + return this.filter((e3) => { + const ownKey = key ? key(e3) : e3; + return !otherKeySet.has(ownKey); + }); } - }, "addNode"); - nodeType = { - DEFAULT: 0, - NO_BORDER: 0, - ROUNDED_RECT: 1, - RECT: 2, - CIRCLE: 3, - CLOUD: 4, - BANG: 5, - HEXAGON: 6 }; - getType = /* @__PURE__ */ __name((startStr, endStr) => { - log.debug("In get type", startStr, endStr); - switch (startStr) { - case "[": - return nodeType.RECT; - case "(": - return endStr === ")" ? nodeType.ROUNDED_RECT : nodeType.CLOUD; - case "((": - return nodeType.CIRCLE; - case ")": - return nodeType.CLOUD; - case "))": - return nodeType.BANG; - case "{{": - return nodeType.HEXAGON; - default: - return nodeType.DEFAULT; + __name(toString5, "toString"); + __name(isIterable, "isIterable"); + EMPTY_STREAM = new StreamImpl(() => void 0, () => DONE_RESULT); + DONE_RESULT = Object.freeze({ done: true, value: void 0 }); + __name(stream, "stream"); + TreeStreamImpl = class extends StreamImpl { + static { + __name(this, "TreeStreamImpl"); } - }, "getType"); - setElementForId = /* @__PURE__ */ __name((id29, element3) => { - elements[id29] = element3; - }, "setElementForId"); - decorateNode = /* @__PURE__ */ __name((decoration) => { - if (!decoration) { - return; + constructor(root3, children2, options2) { + super(() => ({ + iterators: (options2 === null || options2 === void 0 ? void 0 : options2.includeRoot) ? [[root3][Symbol.iterator]()] : [children2(root3)[Symbol.iterator]()], + pruned: false + }), (state3) => { + if (state3.pruned) { + state3.iterators.pop(); + state3.pruned = false; + } + while (state3.iterators.length > 0) { + const iterator = state3.iterators[state3.iterators.length - 1]; + const next3 = iterator.next(); + if (next3.done) { + state3.iterators.pop(); + } else { + state3.iterators.push(children2(next3.value)[Symbol.iterator]()); + return next3; + } + } + return DONE_RESULT; + }); } - const config5 = getConfig2(); - const node2 = nodes[nodes.length - 1]; - if (decoration.icon) { - node2.icon = sanitizeText(decoration.icon, config5); + iterator() { + const iterator = { + state: this.startFn(), + next: /* @__PURE__ */ __name(() => this.nextFn(iterator.state), "next"), + prune: /* @__PURE__ */ __name(() => { + iterator.state.pruned = true; + }, "prune"), + [Symbol.iterator]: () => iterator + }; + return iterator; } - if (decoration.class) { - node2.class = sanitizeText(decoration.class, config5); + }; + (function(Reduction2) { + function sum2(stream2) { + return stream2.reduce((a2, b3) => a2 + b3, 0); } - }, "decorateNode"); - type2Str = /* @__PURE__ */ __name((type3) => { - switch (type3) { - case nodeType.DEFAULT: - return "no-border"; - case nodeType.RECT: - return "rect"; - case nodeType.ROUNDED_RECT: - return "rounded-rect"; - case nodeType.CIRCLE: - return "circle"; - case nodeType.CLOUD: - return "cloud"; - case nodeType.BANG: - return "bang"; - case nodeType.HEXAGON: - return "hexgon"; - // cspell: disable-line - default: - return "no-border"; + __name(sum2, "sum"); + Reduction2.sum = sum2; + function product(stream2) { + return stream2.reduce((a2, b3) => a2 * b3, 0); } - }, "type2Str"); - getLogger = /* @__PURE__ */ __name(() => log, "getLogger"); - getElementById = /* @__PURE__ */ __name((id29) => elements[id29], "getElementById"); - db4 = { - clear: clear15, - addNode, - getMindmap, - nodeType, - getType, - setElementForId, - decorateNode, - type2Str, - getLogger, - getElementById - }; - mindmapDb_default = db4; + __name(product, "product"); + Reduction2.product = product; + function min9(stream2) { + return stream2.reduce((a2, b3) => Math.min(a2, b3)); + } + __name(min9, "min"); + Reduction2.min = min9; + function max10(stream2) { + return stream2.reduce((a2, b3) => Math.max(a2, b3)); + } + __name(max10, "max"); + Reduction2.max = max10; + })(Reduction || (Reduction = {})); } }); - // ../../node_modules/.pnpm/cytoscape@3.31.0/node_modules/cytoscape/dist/cytoscape.esm.mjs - function _typeof(obj) { - "@babel/helpers - typeof"; - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) { - return typeof obj2; - } : function(obj2) { - return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }, _typeof(obj); - } - function _classCallCheck(instance2, Constructor) { - if (!(instance2 instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _defineProperty$1(obj, key, value2) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value2, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value2; - } - return obj; - } - function _slicedToArray(arr, i2) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i2) || _unsupportedIterableToArray(arr, i2) || _nonIterableRest(); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); - } - function _iterableToArrayLimit(arr, i2) { - var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; - if (_i == null) return; - var _arr = []; - var _n = true; - var _d = false; - var _s, _e; - try { - for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i2 && _arr.length === i2) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/cst-utils.js + var cst_utils_exports = {}; + __export(cst_utils_exports, { + DefaultNameRegexp: () => DefaultNameRegexp, + RangeComparison: () => RangeComparison, + compareRange: () => compareRange, + findCommentNode: () => findCommentNode, + findDeclarationNodeAtOffset: () => findDeclarationNodeAtOffset, + findLeafNodeAtOffset: () => findLeafNodeAtOffset, + findLeafNodeBeforeOffset: () => findLeafNodeBeforeOffset, + flattenCst: () => flattenCst, + getInteriorNodes: () => getInteriorNodes, + getNextNode: () => getNextNode, + getPreviousNode: () => getPreviousNode, + getStartlineNode: () => getStartlineNode, + inRange: () => inRange, + isChildNode: () => isChildNode, + isCommentNode: () => isCommentNode, + streamCst: () => streamCst, + toDocumentSegment: () => toDocumentSegment, + tokenToRange: () => tokenToRange + }); + function streamCst(node2) { + return new TreeStreamImpl(node2, (element3) => { + if (isCompositeCstNode(element3)) { + return element3.content; + } else { + return []; } - } - return _arr; - } - function _unsupportedIterableToArray(o2, minLen) { - if (!o2) return; - if (typeof o2 === "string") return _arrayLikeToArray(o2, minLen); - var n2 = Object.prototype.toString.call(o2).slice(8, -1); - if (n2 === "Object" && o2.constructor) n2 = o2.constructor.name; - if (n2 === "Map" || n2 === "Set") return Array.from(o2); - if (n2 === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n2)) return _arrayLikeToArray(o2, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i2 = 0, arr2 = new Array(len); i2 < len; i2++) arr2[i2] = arr[i2]; - return arr2; - } - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + }, { includeRoot: true }); } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + function flattenCst(node2) { + return streamCst(node2).filter(isLeafCstNode); } - function _createForOfIteratorHelper(o2, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o2[Symbol.iterator] || o2["@@iterator"]; - if (!it) { - if (Array.isArray(o2) || (it = _unsupportedIterableToArray(o2)) || allowArrayLike && o2 && typeof o2.length === "number") { - if (it) o2 = it; - var i2 = 0; - var F2 = /* @__PURE__ */ __name(function() { - }, "F"); - return { - s: F2, - n: /* @__PURE__ */ __name(function() { - if (i2 >= o2.length) return { - done: true - }; - return { - done: false, - value: o2[i2++] - }; - }, "n"), - e: /* @__PURE__ */ __name(function(e3) { - throw e3; - }, "e"), - f: F2 - }; + function isChildNode(child, parent4) { + while (child.container) { + child = child.container; + if (child === parent4) { + return true; } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - var normalCompletion = true, didErr = false, err; + return false; + } + function tokenToRange(token2) { return { - s: /* @__PURE__ */ __name(function() { - it = it.call(o2); - }, "s"), - n: /* @__PURE__ */ __name(function() { - var step3 = it.next(); - normalCompletion = step3.done; - return step3; - }, "n"), - e: /* @__PURE__ */ __name(function(e3) { - didErr = true; - err = e3; - }, "e"), - f: /* @__PURE__ */ __name(function() { - try { - if (!normalCompletion && it.return != null) it.return(); - } finally { - if (didErr) throw err; - } - }, "f") + start: { + character: token2.startColumn - 1, + line: token2.startLine - 1 + }, + end: { + character: token2.endColumn, + // endColumn uses the correct index + line: token2.endLine - 1 + } }; } - function isObject3(value2) { - var type3 = typeof value2; - return value2 != null && (type3 == "object" || type3 == "function"); - } - function createCommonjsModule(fn3, module2) { - return module2 = { exports: {} }, fn3(module2, module2.exports), module2.exports; - } - function trimmedEndIndex2(string3) { - var index = string3.length; - while (index-- && reWhitespace2.test(string3.charAt(index))) { + function toDocumentSegment(node2) { + if (!node2) { + return void 0; } - return index; - } - function baseTrim2(string3) { - return string3 ? string3.slice(0, _trimmedEndIndex(string3) + 1).replace(reTrimStart2, "") : string3; + const { offset, end: end2, range: range3 } = node2; + return { + range: range3, + offset, + end: end2, + length: end2 - offset + }; } - function getRawTag2(value2) { - var isOwn = hasOwnProperty$4.call(value2, symToStringTag$1), tag2 = value2[symToStringTag$1]; - try { - value2[symToStringTag$1] = void 0; - var unmasked = true; - } catch (e3) { + function compareRange(range3, to) { + if (range3.end.line < to.start.line || range3.end.line === to.start.line && range3.end.character <= to.start.character) { + return RangeComparison.Before; + } else if (range3.start.line > to.end.line || range3.start.line === to.end.line && range3.start.character >= to.end.character) { + return RangeComparison.After; } - var result = nativeObjectToString$1.call(value2); - if (unmasked) { - if (isOwn) { - value2[symToStringTag$1] = tag2; - } else { - delete value2[symToStringTag$1]; - } + const startInside = range3.start.line > to.start.line || range3.start.line === to.start.line && range3.start.character >= to.start.character; + const endInside = range3.end.line < to.end.line || range3.end.line === to.end.line && range3.end.character <= to.end.character; + if (startInside && endInside) { + return RangeComparison.Inside; + } else if (startInside) { + return RangeComparison.OverlapBack; + } else if (endInside) { + return RangeComparison.OverlapFront; + } else { + return RangeComparison.Outside; } - return result; } - function objectToString2(value2) { - return nativeObjectToString3.call(value2); + function inRange(range3, to) { + const comparison = compareRange(range3, to); + return comparison > RangeComparison.After; } - function baseGetTag2(value2) { - if (value2 == null) { - return value2 === void 0 ? undefinedTag2 : nullTag2; + function findDeclarationNodeAtOffset(cstNode, offset, nameRegexp = DefaultNameRegexp) { + if (cstNode) { + if (offset > 0) { + const localOffset = offset - cstNode.offset; + const textAtOffset = cstNode.text.charAt(localOffset); + if (!nameRegexp.test(textAtOffset)) { + offset--; + } + } + return findLeafNodeAtOffset(cstNode, offset); } - return symToStringTag3 && symToStringTag3 in Object(value2) ? _getRawTag(value2) : _objectToString(value2); - } - function isObjectLike2(value2) { - return value2 != null && typeof value2 == "object"; - } - function isSymbol2(value2) { - return typeof value2 == "symbol" || isObjectLike_1(value2) && _baseGetTag(value2) == symbolTag5; + return void 0; } - function toNumber2(value2) { - if (typeof value2 == "number") { - return value2; - } - if (isSymbol_1(value2)) { - return NAN2; - } - if (isObject_12(value2)) { - var other2 = typeof value2.valueOf == "function" ? value2.valueOf() : value2; - value2 = isObject_12(other2) ? other2 + "" : other2; - } - if (typeof value2 != "string") { - return value2 === 0 ? value2 : +value2; - } - value2 = _baseTrim(value2); - var isBinary2 = reIsBinary2.test(value2); - return isBinary2 || reIsOctal2.test(value2) ? freeParseInt2(value2.slice(2), isBinary2 ? 2 : 8) : reIsBadHex2.test(value2) ? NAN2 : +value2; - } - function debounce(func, wait, options3) { - var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; - if (typeof func != "function") { - throw new TypeError(FUNC_ERROR_TEXT$1); - } - wait = toNumber_1(wait) || 0; - if (isObject_12(options3)) { - leading = !!options3.leading; - maxing = "maxWait" in options3; - maxWait = maxing ? nativeMax6(toNumber_1(options3.maxWait) || 0, wait) : maxWait; - trailing = "trailing" in options3 ? !!options3.trailing : trailing; - } - function invokeFunc(time4) { - var args = lastArgs, thisArg = lastThis; - lastArgs = lastThis = void 0; - lastInvokeTime = time4; - result = func.apply(thisArg, args); - return result; - } - __name(invokeFunc, "invokeFunc"); - function leadingEdge(time4) { - lastInvokeTime = time4; - timerId = setTimeout(timerExpired, wait); - return leading ? invokeFunc(time4) : result; - } - __name(leadingEdge, "leadingEdge"); - function remainingWait(time4) { - var timeSinceLastCall = time4 - lastCallTime, timeSinceLastInvoke = time4 - lastInvokeTime, timeWaiting = wait - timeSinceLastCall; - return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; - } - __name(remainingWait, "remainingWait"); - function shouldInvoke(time4) { - var timeSinceLastCall = time4 - lastCallTime, timeSinceLastInvoke = time4 - lastInvokeTime; - return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; - } - __name(shouldInvoke, "shouldInvoke"); - function timerExpired() { - var time4 = now_1(); - if (shouldInvoke(time4)) { - return trailingEdge(time4); - } - timerId = setTimeout(timerExpired, remainingWait(time4)); - } - __name(timerExpired, "timerExpired"); - function trailingEdge(time4) { - timerId = void 0; - if (trailing && lastArgs) { - return invokeFunc(time4); - } - lastArgs = lastThis = void 0; - return result; - } - __name(trailingEdge, "trailingEdge"); - function cancel() { - if (timerId !== void 0) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = void 0; - } - __name(cancel, "cancel"); - function flush() { - return timerId === void 0 ? result : trailingEdge(now_1()); - } - __name(flush, "flush"); - function debounced() { - var time4 = now_1(), isInvoking = shouldInvoke(time4); - lastArgs = arguments; - lastThis = this; - lastCallTime = time4; - if (isInvoking) { - if (timerId === void 0) { - return leadingEdge(lastCallTime); - } - if (maxing) { - clearTimeout(timerId); - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } + function findCommentNode(cstNode, commentNames) { + if (cstNode) { + const previous = getPreviousNode(cstNode, true); + if (previous && isCommentNode(previous, commentNames)) { + return previous; } - if (timerId === void 0) { - timerId = setTimeout(timerExpired, wait); + if (isRootCstNode(cstNode)) { + const endIndex = cstNode.content.findIndex((e3) => !e3.hidden); + for (let i2 = endIndex - 1; i2 >= 0; i2--) { + const child = cstNode.content[i2]; + if (isCommentNode(child, commentNames)) { + return child; + } + } } - return result; } - __name(debounced, "debounced"); - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; + return void 0; } - function clusteringDistance(method, length2, getP, getQ, nodeP, nodeQ) { - var impl2; - if (fn$6(method)) { - impl2 = method; - } else { - impl2 = distances[method] || distances.euclidean; - } - if (length2 === 0 && fn$6(method)) { - return impl2(nodeP, nodeQ); - } else { - return impl2(length2, getP, getQ, nodeP, nodeQ); - } + function isCommentNode(cstNode, commentNames) { + return isLeafCstNode(cstNode) && commentNames.includes(cstNode.tokenType.name); } - function isKey2(value2, object3) { - if (isArray_1(value2)) { - return false; - } - var type3 = typeof value2; - if (type3 == "number" || type3 == "symbol" || type3 == "boolean" || value2 == null || isSymbol_1(value2)) { - return true; + function findLeafNodeAtOffset(node2, offset) { + if (isLeafCstNode(node2)) { + return node2; + } else if (isCompositeCstNode(node2)) { + const searchResult = binarySearch(node2, offset, false); + if (searchResult) { + return findLeafNodeAtOffset(searchResult, offset); + } } - return reIsPlainProp2.test(value2) || !reIsDeepProp2.test(value2) || object3 != null && value2 in Object(object3); + return void 0; } - function isFunction2(value2) { - if (!isObject_12(value2)) { - return false; + function findLeafNodeBeforeOffset(node2, offset) { + if (isLeafCstNode(node2)) { + return node2; + } else if (isCompositeCstNode(node2)) { + const searchResult = binarySearch(node2, offset, true); + if (searchResult) { + return findLeafNodeBeforeOffset(searchResult, offset); + } } - var tag2 = _baseGetTag(value2); - return tag2 == funcTag4 || tag2 == genTag3 || tag2 == asyncTag2 || tag2 == proxyTag2; - } - function isMasked2(func) { - return !!maskSrcKey2 && maskSrcKey2 in func; + return void 0; } - function toSource2(func) { - if (func != null) { - try { - return funcToString$1.call(func); - } catch (e3) { + function binarySearch(node2, offset, closest) { + let left3 = 0; + let right3 = node2.content.length - 1; + let closestNode = void 0; + while (left3 <= right3) { + const middle = Math.floor((left3 + right3) / 2); + const middleNode = node2.content[middle]; + if (middleNode.offset <= offset && middleNode.end > offset) { + return middleNode; } - try { - return func + ""; - } catch (e3) { + if (middleNode.end <= offset) { + closestNode = closest ? middleNode : void 0; + left3 = middle + 1; + } else { + right3 = middle - 1; } } - return ""; + return closestNode; } - function baseIsNative2(value2) { - if (!isObject_12(value2) || _isMasked(value2)) { - return false; + function getPreviousNode(node2, hidden = true) { + while (node2.container) { + const parent4 = node2.container; + let index = parent4.content.indexOf(node2); + while (index > 0) { + index--; + const previous = parent4.content[index]; + if (hidden || !previous.hidden) { + return previous; + } + } + node2 = parent4; } - var pattern = isFunction_1(value2) ? reIsNative2 : reIsHostCtor2; - return pattern.test(_toSource(value2)); + return void 0; } - function getValue$1(object3, key) { - return object3 == null ? void 0 : object3[key]; + function getNextNode(node2, hidden = true) { + while (node2.container) { + const parent4 = node2.container; + let index = parent4.content.indexOf(node2); + const last3 = parent4.content.length - 1; + while (index < last3) { + index++; + const next3 = parent4.content[index]; + if (hidden || !next3.hidden) { + return next3; + } + } + node2 = parent4; + } + return void 0; } - function getNative2(object3, key) { - var value2 = _getValue(object3, key); - return _baseIsNative(value2) ? value2 : void 0; - } - function hashClear2() { - this.__data__ = _nativeCreate ? _nativeCreate(null) : {}; - this.size = 0; + function getStartlineNode(node2) { + if (node2.range.start.character === 0) { + return node2; + } + const line2 = node2.range.start.line; + let last3 = node2; + let index; + while (node2.container) { + const parent4 = node2.container; + const selfIndex = index !== null && index !== void 0 ? index : parent4.content.indexOf(node2); + if (selfIndex === 0) { + node2 = parent4; + index = void 0; + } else { + index = selfIndex - 1; + node2 = parent4.content[index]; + } + if (node2.range.start.line !== line2) { + break; + } + last3 = node2; + } + return last3; } - function hashDelete2(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; + function getInteriorNodes(start3, end2) { + const commonParent = getCommonParent(start3, end2); + if (!commonParent) { + return []; + } + return commonParent.parent.content.slice(commonParent.a + 1, commonParent.b); } - function hashGet2(key) { - var data6 = this.__data__; - if (_nativeCreate) { - var result = data6[key]; - return result === HASH_UNDEFINED$1 ? void 0 : result; + function getCommonParent(a2, b3) { + const aParents = getParentChain(a2); + const bParents = getParentChain(b3); + let current; + for (let i2 = 0; i2 < aParents.length && i2 < bParents.length; i2++) { + const aParent = aParents[i2]; + const bParent = bParents[i2]; + if (aParent.parent === bParent.parent) { + current = { + parent: aParent.parent, + a: aParent.index, + b: bParent.index + }; + } else { + break; + } } - return hasOwnProperty$2.call(data6, key) ? data6[key] : void 0; + return current; } - function hashHas2(key) { - var data6 = this.__data__; - return _nativeCreate ? data6[key] !== void 0 : hasOwnProperty$1.call(data6, key); + function getParentChain(node2) { + const chain = []; + while (node2.container) { + const parent4 = node2.container; + const index = parent4.content.indexOf(node2); + chain.push({ + parent: parent4, + index + }); + node2 = parent4; + } + return chain.reverse(); } - function hashSet2(key, value2) { - var data6 = this.__data__; - this.size += this.has(key) ? 0 : 1; - data6[key] = _nativeCreate && value2 === void 0 ? HASH_UNDEFINED4 : value2; - return this; + var RangeComparison, DefaultNameRegexp; + var init_cst_utils = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/cst-utils.js"() { + "use strict"; + init_syntax_tree(); + init_stream(); + __name(streamCst, "streamCst"); + __name(flattenCst, "flattenCst"); + __name(isChildNode, "isChildNode"); + __name(tokenToRange, "tokenToRange"); + __name(toDocumentSegment, "toDocumentSegment"); + (function(RangeComparison2) { + RangeComparison2[RangeComparison2["Before"] = 0] = "Before"; + RangeComparison2[RangeComparison2["After"] = 1] = "After"; + RangeComparison2[RangeComparison2["OverlapFront"] = 2] = "OverlapFront"; + RangeComparison2[RangeComparison2["OverlapBack"] = 3] = "OverlapBack"; + RangeComparison2[RangeComparison2["Inside"] = 4] = "Inside"; + RangeComparison2[RangeComparison2["Outside"] = 5] = "Outside"; + })(RangeComparison || (RangeComparison = {})); + __name(compareRange, "compareRange"); + __name(inRange, "inRange"); + DefaultNameRegexp = /^[\w\p{L}]$/u; + __name(findDeclarationNodeAtOffset, "findDeclarationNodeAtOffset"); + __name(findCommentNode, "findCommentNode"); + __name(isCommentNode, "isCommentNode"); + __name(findLeafNodeAtOffset, "findLeafNodeAtOffset"); + __name(findLeafNodeBeforeOffset, "findLeafNodeBeforeOffset"); + __name(binarySearch, "binarySearch"); + __name(getPreviousNode, "getPreviousNode"); + __name(getNextNode, "getNextNode"); + __name(getStartlineNode, "getStartlineNode"); + __name(getInteriorNodes, "getInteriorNodes"); + __name(getCommonParent, "getCommonParent"); + __name(getParentChain, "getParentChain"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/errors.js + function assertUnreachable(_3) { + throw new Error("Error! The input value was not handled."); } - function Hash2(entries2) { - var index = -1, length2 = entries2 == null ? 0 : entries2.length; - this.clear(); - while (++index < length2) { - var entry = entries2[index]; - this.set(entry[0], entry[1]); + var ErrorWithLocation; + var init_errors2 = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/errors.js"() { + "use strict"; + ErrorWithLocation = class extends Error { + static { + __name(this, "ErrorWithLocation"); + } + constructor(node2, message) { + super(node2 ? `${message} at ${node2.range.start.line}:${node2.range.start.character}` : message); + } + }; + __name(assertUnreachable, "assertUnreachable"); } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/generated/ast.js + var ast_exports = {}; + __export(ast_exports, { + AbstractElement: () => AbstractElement, + AbstractRule: () => AbstractRule, + AbstractType: () => AbstractType, + Action: () => Action, + Alternatives: () => Alternatives, + ArrayLiteral: () => ArrayLiteral, + ArrayType: () => ArrayType, + Assignment: () => Assignment, + BooleanLiteral: () => BooleanLiteral, + CharacterRange: () => CharacterRange, + Condition: () => Condition, + Conjunction: () => Conjunction, + CrossReference: () => CrossReference, + Disjunction: () => Disjunction, + EndOfFile: () => EndOfFile, + Grammar: () => Grammar, + GrammarImport: () => GrammarImport, + Group: () => Group, + InferredType: () => InferredType, + Interface: () => Interface, + Keyword: () => Keyword2, + LangiumGrammarAstReflection: () => LangiumGrammarAstReflection, + LangiumGrammarTerminals: () => LangiumGrammarTerminals, + NamedArgument: () => NamedArgument, + NegatedToken: () => NegatedToken, + Negation: () => Negation, + NumberLiteral: () => NumberLiteral, + Parameter: () => Parameter, + ParameterReference: () => ParameterReference, + ParserRule: () => ParserRule, + ReferenceType: () => ReferenceType, + RegexToken: () => RegexToken, + ReturnType: () => ReturnType, + RuleCall: () => RuleCall, + SimpleType: () => SimpleType, + StringLiteral: () => StringLiteral, + TerminalAlternatives: () => TerminalAlternatives, + TerminalGroup: () => TerminalGroup, + TerminalRule: () => TerminalRule, + TerminalRuleCall: () => TerminalRuleCall, + Type: () => Type3, + TypeAttribute: () => TypeAttribute, + TypeDefinition: () => TypeDefinition, + UnionType: () => UnionType, + UnorderedGroup: () => UnorderedGroup, + UntilToken: () => UntilToken, + ValueLiteral: () => ValueLiteral, + Wildcard: () => Wildcard, + isAbstractElement: () => isAbstractElement, + isAbstractRule: () => isAbstractRule, + isAbstractType: () => isAbstractType, + isAction: () => isAction, + isAlternatives: () => isAlternatives, + isArrayLiteral: () => isArrayLiteral, + isArrayType: () => isArrayType, + isAssignment: () => isAssignment, + isBooleanLiteral: () => isBooleanLiteral, + isCharacterRange: () => isCharacterRange, + isCondition: () => isCondition, + isConjunction: () => isConjunction, + isCrossReference: () => isCrossReference, + isDisjunction: () => isDisjunction, + isEndOfFile: () => isEndOfFile, + isFeatureName: () => isFeatureName, + isGrammar: () => isGrammar, + isGrammarImport: () => isGrammarImport, + isGroup: () => isGroup, + isInferredType: () => isInferredType, + isInterface: () => isInterface, + isKeyword: () => isKeyword, + isNamedArgument: () => isNamedArgument, + isNegatedToken: () => isNegatedToken, + isNegation: () => isNegation, + isNumberLiteral: () => isNumberLiteral, + isParameter: () => isParameter, + isParameterReference: () => isParameterReference, + isParserRule: () => isParserRule, + isPrimitiveType: () => isPrimitiveType, + isReferenceType: () => isReferenceType, + isRegexToken: () => isRegexToken, + isReturnType: () => isReturnType, + isRuleCall: () => isRuleCall, + isSimpleType: () => isSimpleType, + isStringLiteral: () => isStringLiteral, + isTerminalAlternatives: () => isTerminalAlternatives, + isTerminalGroup: () => isTerminalGroup, + isTerminalRule: () => isTerminalRule, + isTerminalRuleCall: () => isTerminalRuleCall, + isType: () => isType, + isTypeAttribute: () => isTypeAttribute, + isTypeDefinition: () => isTypeDefinition, + isUnionType: () => isUnionType, + isUnorderedGroup: () => isUnorderedGroup, + isUntilToken: () => isUntilToken, + isValueLiteral: () => isValueLiteral, + isWildcard: () => isWildcard, + reflection: () => reflection + }); + function isAbstractRule(item) { + return reflection.isInstance(item, AbstractRule); } - function listCacheClear2() { - this.__data__ = []; - this.size = 0; + function isAbstractType(item) { + return reflection.isInstance(item, AbstractType); } - function eq2(value2, other2) { - return value2 === other2 || value2 !== value2 && other2 !== other2; + function isCondition(item) { + return reflection.isInstance(item, Condition); } - function assocIndexOf2(array4, key) { - var length2 = array4.length; - while (length2--) { - if (eq_1(array4[length2][0], key)) { - return length2; - } - } - return -1; + function isFeatureName(item) { + return isPrimitiveType(item) || item === "current" || item === "entry" || item === "extends" || item === "false" || item === "fragment" || item === "grammar" || item === "hidden" || item === "import" || item === "interface" || item === "returns" || item === "terminal" || item === "true" || item === "type" || item === "infer" || item === "infers" || item === "with" || typeof item === "string" && /\^?[_a-zA-Z][\w_]*/.test(item); } - function listCacheDelete2(key) { - var data6 = this.__data__, index = _assocIndexOf(data6, key); - if (index < 0) { - return false; - } - var lastIndex = data6.length - 1; - if (index == lastIndex) { - data6.pop(); - } else { - splice2.call(data6, index, 1); - } - --this.size; - return true; + function isPrimitiveType(item) { + return item === "string" || item === "number" || item === "boolean" || item === "Date" || item === "bigint"; } - function listCacheGet2(key) { - var data6 = this.__data__, index = _assocIndexOf(data6, key); - return index < 0 ? void 0 : data6[index][1]; + function isTypeDefinition(item) { + return reflection.isInstance(item, TypeDefinition); } - function listCacheHas2(key) { - return _assocIndexOf(this.__data__, key) > -1; + function isValueLiteral(item) { + return reflection.isInstance(item, ValueLiteral); } - function listCacheSet2(key, value2) { - var data6 = this.__data__, index = _assocIndexOf(data6, key); - if (index < 0) { - ++this.size; - data6.push([key, value2]); - } else { - data6[index][1] = value2; - } - return this; + function isAbstractElement(item) { + return reflection.isInstance(item, AbstractElement); } - function ListCache2(entries2) { - var index = -1, length2 = entries2 == null ? 0 : entries2.length; - this.clear(); - while (++index < length2) { - var entry = entries2[index]; - this.set(entry[0], entry[1]); - } + function isArrayLiteral(item) { + return reflection.isInstance(item, ArrayLiteral); } - function mapCacheClear2() { - this.size = 0; - this.__data__ = { - "hash": new _Hash(), - "map": new (_Map || _ListCache)(), - "string": new _Hash() - }; + function isArrayType(item) { + return reflection.isInstance(item, ArrayType); } - function isKeyable2(value2) { - var type3 = typeof value2; - return type3 == "string" || type3 == "number" || type3 == "symbol" || type3 == "boolean" ? value2 !== "__proto__" : value2 === null; + function isBooleanLiteral(item) { + return reflection.isInstance(item, BooleanLiteral); } - function getMapData2(map5, key) { - var data6 = map5.__data__; - return _isKeyable(key) ? data6[typeof key == "string" ? "string" : "hash"] : data6.map; + function isConjunction(item) { + return reflection.isInstance(item, Conjunction); } - function mapCacheDelete2(key) { - var result = _getMapData(this, key)["delete"](key); - this.size -= result ? 1 : 0; - return result; + function isDisjunction(item) { + return reflection.isInstance(item, Disjunction); } - function mapCacheGet2(key) { - return _getMapData(this, key).get(key); + function isGrammar(item) { + return reflection.isInstance(item, Grammar); } - function mapCacheHas2(key) { - return _getMapData(this, key).has(key); + function isGrammarImport(item) { + return reflection.isInstance(item, GrammarImport); } - function mapCacheSet2(key, value2) { - var data6 = _getMapData(this, key), size5 = data6.size; - data6.set(key, value2); - this.size += data6.size == size5 ? 0 : 1; - return this; + function isInferredType(item) { + return reflection.isInstance(item, InferredType); } - function MapCache2(entries2) { - var index = -1, length2 = entries2 == null ? 0 : entries2.length; - this.clear(); - while (++index < length2) { - var entry = entries2[index]; - this.set(entry[0], entry[1]); - } + function isInterface(item) { + return reflection.isInstance(item, Interface); } - function memoize3(func, resolver3) { - if (typeof func != "function" || resolver3 != null && typeof resolver3 != "function") { - throw new TypeError(FUNC_ERROR_TEXT3); - } - var memoized = /* @__PURE__ */ __name(function() { - var args = arguments, key = resolver3 ? resolver3.apply(this, args) : args[0], cache3 = memoized.cache; - if (cache3.has(key)) { - return cache3.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache3.set(key, result) || cache3; - return result; - }, "memoized"); - memoized.cache = new (memoize3.Cache || _MapCache)(); - return memoized; + function isNamedArgument(item) { + return reflection.isInstance(item, NamedArgument); } - function memoizeCapped2(func) { - var result = memoize_1(func, function(key) { - if (cache3.size === MAX_MEMOIZE_SIZE2) { - cache3.clear(); - } - return key; - }); - var cache3 = result.cache; - return result; + function isNegation(item) { + return reflection.isInstance(item, Negation); } - function arrayMap2(array4, iteratee) { - var index = -1, length2 = array4 == null ? 0 : array4.length, result = Array(length2); - while (++index < length2) { - result[index] = iteratee(array4[index], index, array4); - } - return result; + function isNumberLiteral(item) { + return reflection.isInstance(item, NumberLiteral); } - function baseToString2(value2) { - if (typeof value2 == "string") { - return value2; - } - if (isArray_1(value2)) { - return _arrayMap(value2, baseToString2) + ""; - } - if (isSymbol_1(value2)) { - return symbolToString2 ? symbolToString2.call(value2) : ""; - } - var result = value2 + ""; - return result == "0" && 1 / value2 == -INFINITY$1 ? "-0" : result; + function isParameter(item) { + return reflection.isInstance(item, Parameter); } - function toString$1(value2) { - return value2 == null ? "" : _baseToString(value2); + function isParameterReference(item) { + return reflection.isInstance(item, ParameterReference); } - function castPath2(value2, object3) { - if (isArray_1(value2)) { - return value2; - } - return _isKey(value2, object3) ? [value2] : _stringToPath(toString_1(value2)); + function isParserRule(item) { + return reflection.isInstance(item, ParserRule); } - function toKey2(value2) { - if (typeof value2 == "string" || isSymbol_1(value2)) { - return value2; - } - var result = value2 + ""; - return result == "0" && 1 / value2 == -INFINITY5 ? "-0" : result; + function isReferenceType(item) { + return reflection.isInstance(item, ReferenceType); } - function baseGet2(object3, path4) { - path4 = _castPath(path4, object3); - var index = 0, length2 = path4.length; - while (object3 != null && index < length2) { - object3 = object3[_toKey(path4[index++])]; - } - return index && index == length2 ? object3 : void 0; + function isReturnType(item) { + return reflection.isInstance(item, ReturnType); } - function get5(object3, path4, defaultValue) { - var result = object3 == null ? void 0 : _baseGet(object3, path4); - return result === void 0 ? defaultValue : result; + function isSimpleType(item) { + return reflection.isInstance(item, SimpleType); } - function baseAssignValue2(object3, key, value2) { - if (key == "__proto__" && _defineProperty) { - _defineProperty(object3, key, { - "configurable": true, - "enumerable": true, - "value": value2, - "writable": true - }); - } else { - object3[key] = value2; - } + function isStringLiteral(item) { + return reflection.isInstance(item, StringLiteral); } - function assignValue2(object3, key, value2) { - var objValue = object3[key]; - if (!(hasOwnProperty19.call(object3, key) && eq_1(objValue, value2)) || value2 === void 0 && !(key in object3)) { - _baseAssignValue(object3, key, value2); - } + function isTerminalRule(item) { + return reflection.isInstance(item, TerminalRule); } - function isIndex2(value2, length2) { - var type3 = typeof value2; - length2 = length2 == null ? MAX_SAFE_INTEGER3 : length2; - return !!length2 && (type3 == "number" || type3 != "symbol" && reIsUint2.test(value2)) && (value2 > -1 && value2 % 1 == 0 && value2 < length2); + function isType(item) { + return reflection.isInstance(item, Type3); } - function baseSet2(object3, path4, value2, customizer) { - if (!isObject_12(object3)) { - return object3; - } - path4 = _castPath(path4, object3); - var index = -1, length2 = path4.length, lastIndex = length2 - 1, nested = object3; - while (nested != null && ++index < length2) { - var key = _toKey(path4[index]), newValue = value2; - if (key === "__proto__" || key === "constructor" || key === "prototype") { - return object3; - } - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : void 0; - if (newValue === void 0) { - newValue = isObject_12(objValue) ? objValue : _isIndex(path4[index + 1]) ? [] : {}; - } - } - _assignValue(nested, key, newValue); - nested = nested[key]; - } - return object3; + function isTypeAttribute(item) { + return reflection.isInstance(item, TypeAttribute); } - function set5(object3, path4, value2) { - return object3 == null ? object3 : _baseSet(object3, path4, value2); + function isUnionType(item) { + return reflection.isInstance(item, UnionType); } - function copyArray3(source, array4) { - var index = -1, length2 = source.length; - array4 || (array4 = Array(length2)); - while (++index < length2) { - array4[index] = source[index]; - } - return array4; + function isAction(item) { + return reflection.isInstance(item, Action); } - function toPath(value2) { - if (isArray_1(value2)) { - return _arrayMap(value2, _toKey); - } - return isSymbol_1(value2) ? [value2] : _copyArray(_stringToPath(toString_1(value2))); + function isAlternatives(item) { + return reflection.isInstance(item, Alternatives); } - function forEachCompound(eles, fn3, includeSelf, recursiveStep) { - var q2 = []; - var did = new Set$1(); - var cy = eles.cy(); - var hasCompounds = cy.hasCompoundNodes(); - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - if (includeSelf) { - q2.push(ele); - } else if (hasCompounds) { - recursiveStep(q2, did, ele); - } - } - while (q2.length > 0) { - var _ele = q2.shift(); - fn3(_ele); - did.add(_ele.id()); - if (hasCompounds) { - recursiveStep(q2, did, _ele); - } - } - return eles; + function isAssignment(item) { + return reflection.isInstance(item, Assignment); } - function addChildren(q2, did, ele) { - if (ele.isParent()) { - var children2 = ele._private.children; - for (var i2 = 0; i2 < children2.length; i2++) { - var child = children2[i2]; - if (!did.has(child.id())) { - q2.push(child); - } - } - } + function isCharacterRange(item) { + return reflection.isInstance(item, CharacterRange); } - function addParent(q2, did, ele) { - if (ele.isChild()) { - var parent4 = ele._private.parent; - if (!did.has(parent4.id())) { - q2.push(parent4); - } - } + function isCrossReference(item) { + return reflection.isInstance(item, CrossReference); } - function addParentAndChildren(q2, did, ele) { - addParent(q2, did, ele); - addChildren(q2, did, ele); + function isEndOfFile(item) { + return reflection.isInstance(item, EndOfFile); } - function defineDegreeFunction(callback) { - return function(includeLoops) { - var self2 = this; - if (includeLoops === void 0) { - includeLoops = true; - } - if (self2.length === 0) { - return; - } - if (self2.isNode() && !self2.removed()) { - var degree = 0; - var node2 = self2[0]; - var connectedEdges = node2._private.edges; - for (var i2 = 0; i2 < connectedEdges.length; i2++) { - var edge = connectedEdges[i2]; - if (!includeLoops && edge.isLoop()) { - continue; - } - degree += callback(node2, edge); - } - return degree; - } else { - return; - } - }; + function isGroup(item) { + return reflection.isInstance(item, Group); } - function defineDegreeBoundsFunction(degreeFn, callback) { - return function(includeLoops) { - var ret; - var nodes6 = this.nodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - var ele = nodes6[i2]; - var degree = ele[degreeFn](includeLoops); - if (degree !== void 0 && (ret === void 0 || callback(degree, ret))) { - ret = degree; - } - } - return ret; - }; + function isKeyword(item) { + return reflection.isInstance(item, Keyword2); } - function returnFalse() { - return false; + function isNegatedToken(item) { + return reflection.isInstance(item, NegatedToken); } - function returnTrue() { - return true; + function isRegexToken(item) { + return reflection.isInstance(item, RegexToken); } - function Emitter3() { - var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : emptyOpts; - var context = arguments.length > 1 ? arguments[1] : void 0; - for (var i2 = 0; i2 < defaultsKeys.length; i2++) { - var key = defaultsKeys[i2]; - this[key] = opts[key] || defaults$8[key]; - } - this.context = context || this.context; - this.listeners = []; - this.emitting = 0; + function isRuleCall(item) { + return reflection.isInstance(item, RuleCall); } - function styleCache(key, fn3, ele) { - var _p = ele._private; - var cache3 = _p.styleCache = _p.styleCache || []; - var val; - if ((val = cache3[key]) != null) { - return val; - } else { - val = cache3[key] = fn3(ele); - return val; - } + function isTerminalAlternatives(item) { + return reflection.isInstance(item, TerminalAlternatives); } - function cacheStyleFunction(key, fn3) { - key = hashString(key); - return /* @__PURE__ */ __name(function cachedStyleFunction(ele) { - return styleCache(key, fn3, ele); - }, "cachedStyleFunction"); + function isTerminalGroup(item) { + return reflection.isInstance(item, TerminalGroup); } - function cachePrototypeStyleFunction(key, fn3) { - key = hashString(key); - var selfFn = /* @__PURE__ */ __name(function selfFn2(ele) { - return fn3.call(ele); - }, "selfFn"); - return /* @__PURE__ */ __name(function cachedPrototypeStyleFunction() { - var ele = this[0]; - if (ele) { - return styleCache(key, selfFn, ele); - } - }, "cachedPrototypeStyleFunction"); + function isTerminalRuleCall(item) { + return reflection.isInstance(item, TerminalRuleCall); } - function checkCompound(ele, parentOk) { - var _p = ele._private; - var parents3 = _p.data.parent ? ele.parents() : null; - if (parents3) { - for (var i2 = 0; i2 < parents3.length; i2++) { - var parent4 = parents3[i2]; - if (!parentOk(parent4)) { - return false; - } - } - } - return true; + function isUnorderedGroup(item) { + return reflection.isInstance(item, UnorderedGroup); } - function defineDerivedStateFunction(specs) { - var ok = specs.ok; - var edgeOkViaNode = specs.edgeOkViaNode || specs.ok; - var parentOk = specs.parentOk || specs.ok; - return function() { - var cy = this.cy(); - if (!cy.styleEnabled()) { - return true; - } - var ele = this[0]; - var hasCompoundNodes2 = cy.hasCompoundNodes(); - if (ele) { - var _p = ele._private; - if (!ok(ele)) { - return false; - } - if (ele.isNode()) { - return !hasCompoundNodes2 || checkCompound(ele, parentOk); - } else { - var src = _p.source; - var tgt = _p.target; - return edgeOkViaNode(src) && (!hasCompoundNodes2 || checkCompound(src, edgeOkViaNode)) && (src === tgt || edgeOkViaNode(tgt) && (!hasCompoundNodes2 || checkCompound(tgt, edgeOkViaNode))); - } - } - }; + function isUntilToken(item) { + return reflection.isInstance(item, UntilToken); } - function defineSwitchFunction(params) { - return function() { - var args = arguments; - var changedEles = []; - if (args.length === 2) { - var data6 = args[0]; - var handler = args[1]; - this.on(params.event, data6, handler); - } else if (args.length === 1 && fn$6(args[0])) { - var _handler = args[0]; - this.on(params.event, _handler); - } else if (args.length === 0 || args.length === 1 && array2(args[0])) { - var addlEvents = args.length === 1 ? args[0] : null; - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - var able = !params.ableField || ele._private[params.ableField]; - var changed = ele._private[params.field] != params.value; - if (params.overrideAble) { - var overrideAble2 = params.overrideAble(ele); - if (overrideAble2 !== void 0) { - able = overrideAble2; - if (!overrideAble2) { - return this; - } - } - } - if (able) { - ele._private[params.field] = params.value; - if (changed) { - changedEles.push(ele); - } - } - } - var changedColl = this.spawn(changedEles); - changedColl.updateStyle(); - changedColl.emit(params.event); - if (addlEvents) { - changedColl.emit(addlEvents); - } - } - return this; - }; + function isWildcard(item) { + return reflection.isInstance(item, Wildcard); } - function defineSwitchSet(params) { - elesfn$3[params.field] = function() { - var ele = this[0]; - if (ele) { - if (params.overrideField) { - var val = params.overrideField(ele); - if (val !== void 0) { - return val; - } + var LangiumGrammarTerminals, AbstractRule, AbstractType, Condition, TypeDefinition, ValueLiteral, AbstractElement, ArrayLiteral, ArrayType, BooleanLiteral, Conjunction, Disjunction, Grammar, GrammarImport, InferredType, Interface, NamedArgument, Negation, NumberLiteral, Parameter, ParameterReference, ParserRule, ReferenceType, ReturnType, SimpleType, StringLiteral, TerminalRule, Type3, TypeAttribute, UnionType, Action, Alternatives, Assignment, CharacterRange, CrossReference, EndOfFile, Group, Keyword2, NegatedToken, RegexToken, RuleCall, TerminalAlternatives, TerminalGroup, TerminalRuleCall, UnorderedGroup, UntilToken, Wildcard, LangiumGrammarAstReflection, reflection; + var init_ast = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/generated/ast.js"() { + "use strict"; + init_syntax_tree(); + LangiumGrammarTerminals = { + ID: /\^?[_a-zA-Z][\w_]*/, + STRING: /"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/, + NUMBER: /NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/, + RegexLiteral: /\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/, + WS: /\s+/, + ML_COMMENT: /\/\*[\s\S]*?\*\//, + SL_COMMENT: /\/\/[^\n\r]*/ + }; + AbstractRule = "AbstractRule"; + __name(isAbstractRule, "isAbstractRule"); + AbstractType = "AbstractType"; + __name(isAbstractType, "isAbstractType"); + Condition = "Condition"; + __name(isCondition, "isCondition"); + __name(isFeatureName, "isFeatureName"); + __name(isPrimitiveType, "isPrimitiveType"); + TypeDefinition = "TypeDefinition"; + __name(isTypeDefinition, "isTypeDefinition"); + ValueLiteral = "ValueLiteral"; + __name(isValueLiteral, "isValueLiteral"); + AbstractElement = "AbstractElement"; + __name(isAbstractElement, "isAbstractElement"); + ArrayLiteral = "ArrayLiteral"; + __name(isArrayLiteral, "isArrayLiteral"); + ArrayType = "ArrayType"; + __name(isArrayType, "isArrayType"); + BooleanLiteral = "BooleanLiteral"; + __name(isBooleanLiteral, "isBooleanLiteral"); + Conjunction = "Conjunction"; + __name(isConjunction, "isConjunction"); + Disjunction = "Disjunction"; + __name(isDisjunction, "isDisjunction"); + Grammar = "Grammar"; + __name(isGrammar, "isGrammar"); + GrammarImport = "GrammarImport"; + __name(isGrammarImport, "isGrammarImport"); + InferredType = "InferredType"; + __name(isInferredType, "isInferredType"); + Interface = "Interface"; + __name(isInterface, "isInterface"); + NamedArgument = "NamedArgument"; + __name(isNamedArgument, "isNamedArgument"); + Negation = "Negation"; + __name(isNegation, "isNegation"); + NumberLiteral = "NumberLiteral"; + __name(isNumberLiteral, "isNumberLiteral"); + Parameter = "Parameter"; + __name(isParameter, "isParameter"); + ParameterReference = "ParameterReference"; + __name(isParameterReference, "isParameterReference"); + ParserRule = "ParserRule"; + __name(isParserRule, "isParserRule"); + ReferenceType = "ReferenceType"; + __name(isReferenceType, "isReferenceType"); + ReturnType = "ReturnType"; + __name(isReturnType, "isReturnType"); + SimpleType = "SimpleType"; + __name(isSimpleType, "isSimpleType"); + StringLiteral = "StringLiteral"; + __name(isStringLiteral, "isStringLiteral"); + TerminalRule = "TerminalRule"; + __name(isTerminalRule, "isTerminalRule"); + Type3 = "Type"; + __name(isType, "isType"); + TypeAttribute = "TypeAttribute"; + __name(isTypeAttribute, "isTypeAttribute"); + UnionType = "UnionType"; + __name(isUnionType, "isUnionType"); + Action = "Action"; + __name(isAction, "isAction"); + Alternatives = "Alternatives"; + __name(isAlternatives, "isAlternatives"); + Assignment = "Assignment"; + __name(isAssignment, "isAssignment"); + CharacterRange = "CharacterRange"; + __name(isCharacterRange, "isCharacterRange"); + CrossReference = "CrossReference"; + __name(isCrossReference, "isCrossReference"); + EndOfFile = "EndOfFile"; + __name(isEndOfFile, "isEndOfFile"); + Group = "Group"; + __name(isGroup, "isGroup"); + Keyword2 = "Keyword"; + __name(isKeyword, "isKeyword"); + NegatedToken = "NegatedToken"; + __name(isNegatedToken, "isNegatedToken"); + RegexToken = "RegexToken"; + __name(isRegexToken, "isRegexToken"); + RuleCall = "RuleCall"; + __name(isRuleCall, "isRuleCall"); + TerminalAlternatives = "TerminalAlternatives"; + __name(isTerminalAlternatives, "isTerminalAlternatives"); + TerminalGroup = "TerminalGroup"; + __name(isTerminalGroup, "isTerminalGroup"); + TerminalRuleCall = "TerminalRuleCall"; + __name(isTerminalRuleCall, "isTerminalRuleCall"); + UnorderedGroup = "UnorderedGroup"; + __name(isUnorderedGroup, "isUnorderedGroup"); + UntilToken = "UntilToken"; + __name(isUntilToken, "isUntilToken"); + Wildcard = "Wildcard"; + __name(isWildcard, "isWildcard"); + LangiumGrammarAstReflection = class extends AbstractAstReflection { + static { + __name(this, "LangiumGrammarAstReflection"); } - return ele._private[params.field]; - } - }; - elesfn$3[params.on] = defineSwitchFunction({ - event: params.on, - field: params.field, - ableField: params.ableField, - overrideAble: params.overrideAble, - value: true - }); - elesfn$3[params.off] = defineSwitchFunction({ - event: params.off, - field: params.field, - ableField: params.ableField, - overrideAble: params.overrideAble, - value: false - }); - } - function defineSourceFunction(params) { - return /* @__PURE__ */ __name(function sourceImpl2(selector) { - var sources = []; - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - var src = ele._private[params.attr]; - if (src) { - sources.push(src); + getAllTypes() { + return [AbstractElement, AbstractRule, AbstractType, Action, Alternatives, ArrayLiteral, ArrayType, Assignment, BooleanLiteral, CharacterRange, Condition, Conjunction, CrossReference, Disjunction, EndOfFile, Grammar, GrammarImport, Group, InferredType, Interface, Keyword2, NamedArgument, NegatedToken, Negation, NumberLiteral, Parameter, ParameterReference, ParserRule, ReferenceType, RegexToken, ReturnType, RuleCall, SimpleType, StringLiteral, TerminalAlternatives, TerminalGroup, TerminalRule, TerminalRuleCall, Type3, TypeAttribute, TypeDefinition, UnionType, UnorderedGroup, UntilToken, ValueLiteral, Wildcard]; } - } - return this.spawn(sources, true).filter(selector); - }, "sourceImpl"); - } - function defineEdgesWithFunction(params) { - return /* @__PURE__ */ __name(function edgesWithImpl(otherNodes) { - var elements3 = []; - var cy = this._private.cy; - var p3 = params || {}; - if (string(otherNodes)) { - otherNodes = cy.$(otherNodes); - } - for (var h2 = 0; h2 < otherNodes.length; h2++) { - var edges3 = otherNodes[h2]._private.edges; - for (var i2 = 0; i2 < edges3.length; i2++) { - var edge = edges3[i2]; - var edgeData2 = edge._private.data; - var thisToOther = this.hasElementWithId(edgeData2.source) && otherNodes.hasElementWithId(edgeData2.target); - var otherToThis = otherNodes.hasElementWithId(edgeData2.source) && this.hasElementWithId(edgeData2.target); - var edgeConnectsThisAndOther = thisToOther || otherToThis; - if (!edgeConnectsThisAndOther) { - continue; - } - if (p3.thisIsSrc || p3.thisIsTgt) { - if (p3.thisIsSrc && !thisToOther) { - continue; + computeIsSubtype(subtype, supertype) { + switch (subtype) { + case Action: + case Alternatives: + case Assignment: + case CharacterRange: + case CrossReference: + case EndOfFile: + case Group: + case Keyword2: + case NegatedToken: + case RegexToken: + case RuleCall: + case TerminalAlternatives: + case TerminalGroup: + case TerminalRuleCall: + case UnorderedGroup: + case UntilToken: + case Wildcard: { + return this.isSubtype(AbstractElement, supertype); } - if (p3.thisIsTgt && !otherToThis) { - continue; + case ArrayLiteral: + case NumberLiteral: + case StringLiteral: { + return this.isSubtype(ValueLiteral, supertype); + } + case ArrayType: + case ReferenceType: + case SimpleType: + case UnionType: { + return this.isSubtype(TypeDefinition, supertype); + } + case BooleanLiteral: { + return this.isSubtype(Condition, supertype) || this.isSubtype(ValueLiteral, supertype); + } + case Conjunction: + case Disjunction: + case Negation: + case ParameterReference: { + return this.isSubtype(Condition, supertype); + } + case InferredType: + case Interface: + case Type3: { + return this.isSubtype(AbstractType, supertype); + } + case ParserRule: { + return this.isSubtype(AbstractRule, supertype) || this.isSubtype(AbstractType, supertype); + } + case TerminalRule: { + return this.isSubtype(AbstractRule, supertype); + } + default: { + return false; } } - elements3.push(edge); } - } - return this.spawn(elements3, true); - }, "edgesWithImpl"); - } - function defineParallelEdgesFunction(params) { - var defaults4 = { - codirected: false - }; - params = extend4({}, defaults4, params); - return /* @__PURE__ */ __name(function parallelEdgesImpl(selector) { - var elements3 = []; - var edges3 = this.edges(); - var p3 = params; - for (var i2 = 0; i2 < edges3.length; i2++) { - var edge1 = edges3[i2]; - var edge1_p = edge1._private; - var src1 = edge1_p.source; - var srcid1 = src1._private.data.id; - var tgtid1 = edge1_p.data.target; - var srcEdges1 = src1._private.edges; - for (var j2 = 0; j2 < srcEdges1.length; j2++) { - var edge2 = srcEdges1[j2]; - var edge2data = edge2._private.data; - var tgtid2 = edge2data.target; - var srcid2 = edge2data.source; - var codirected = tgtid2 === tgtid1 && srcid2 === srcid1; - var oppdirected = srcid1 === tgtid2 && tgtid1 === srcid2; - if (p3.codirected && codirected || !p3.codirected && (codirected || oppdirected)) { - elements3.push(edge2); + getReferenceType(refInfo) { + const referenceId = `${refInfo.container.$type}:${refInfo.property}`; + switch (referenceId) { + case "Action:type": + case "CrossReference:type": + case "Interface:superTypes": + case "ParserRule:returnType": + case "SimpleType:typeRef": { + return AbstractType; + } + case "Grammar:hiddenTokens": + case "ParserRule:hiddenTokens": + case "RuleCall:rule": { + return AbstractRule; + } + case "Grammar:usedGrammars": { + return Grammar; + } + case "NamedArgument:parameter": + case "ParameterReference:parameter": { + return Parameter; + } + case "TerminalRuleCall:rule": { + return TerminalRule; + } + default: { + throw new Error(`${referenceId} is not a valid reference id.`); + } } } + getTypeMetaData(type3) { + switch (type3) { + case AbstractElement: { + return { + name: AbstractElement, + properties: [ + { name: "cardinality" }, + { name: "lookahead" } + ] + }; + } + case ArrayLiteral: { + return { + name: ArrayLiteral, + properties: [ + { name: "elements", defaultValue: [] } + ] + }; + } + case ArrayType: { + return { + name: ArrayType, + properties: [ + { name: "elementType" } + ] + }; + } + case BooleanLiteral: { + return { + name: BooleanLiteral, + properties: [ + { name: "true", defaultValue: false } + ] + }; + } + case Conjunction: { + return { + name: Conjunction, + properties: [ + { name: "left" }, + { name: "right" } + ] + }; + } + case Disjunction: { + return { + name: Disjunction, + properties: [ + { name: "left" }, + { name: "right" } + ] + }; + } + case Grammar: { + return { + name: Grammar, + properties: [ + { name: "definesHiddenTokens", defaultValue: false }, + { name: "hiddenTokens", defaultValue: [] }, + { name: "imports", defaultValue: [] }, + { name: "interfaces", defaultValue: [] }, + { name: "isDeclared", defaultValue: false }, + { name: "name" }, + { name: "rules", defaultValue: [] }, + { name: "types", defaultValue: [] }, + { name: "usedGrammars", defaultValue: [] } + ] + }; + } + case GrammarImport: { + return { + name: GrammarImport, + properties: [ + { name: "path" } + ] + }; + } + case InferredType: { + return { + name: InferredType, + properties: [ + { name: "name" } + ] + }; + } + case Interface: { + return { + name: Interface, + properties: [ + { name: "attributes", defaultValue: [] }, + { name: "name" }, + { name: "superTypes", defaultValue: [] } + ] + }; + } + case NamedArgument: { + return { + name: NamedArgument, + properties: [ + { name: "calledByName", defaultValue: false }, + { name: "parameter" }, + { name: "value" } + ] + }; + } + case Negation: { + return { + name: Negation, + properties: [ + { name: "value" } + ] + }; + } + case NumberLiteral: { + return { + name: NumberLiteral, + properties: [ + { name: "value" } + ] + }; + } + case Parameter: { + return { + name: Parameter, + properties: [ + { name: "name" } + ] + }; + } + case ParameterReference: { + return { + name: ParameterReference, + properties: [ + { name: "parameter" } + ] + }; + } + case ParserRule: { + return { + name: ParserRule, + properties: [ + { name: "dataType" }, + { name: "definesHiddenTokens", defaultValue: false }, + { name: "definition" }, + { name: "entry", defaultValue: false }, + { name: "fragment", defaultValue: false }, + { name: "hiddenTokens", defaultValue: [] }, + { name: "inferredType" }, + { name: "name" }, + { name: "parameters", defaultValue: [] }, + { name: "returnType" }, + { name: "wildcard", defaultValue: false } + ] + }; + } + case ReferenceType: { + return { + name: ReferenceType, + properties: [ + { name: "referenceType" } + ] + }; + } + case ReturnType: { + return { + name: ReturnType, + properties: [ + { name: "name" } + ] + }; + } + case SimpleType: { + return { + name: SimpleType, + properties: [ + { name: "primitiveType" }, + { name: "stringType" }, + { name: "typeRef" } + ] + }; + } + case StringLiteral: { + return { + name: StringLiteral, + properties: [ + { name: "value" } + ] + }; + } + case TerminalRule: { + return { + name: TerminalRule, + properties: [ + { name: "definition" }, + { name: "fragment", defaultValue: false }, + { name: "hidden", defaultValue: false }, + { name: "name" }, + { name: "type" } + ] + }; + } + case Type3: { + return { + name: Type3, + properties: [ + { name: "name" }, + { name: "type" } + ] + }; + } + case TypeAttribute: { + return { + name: TypeAttribute, + properties: [ + { name: "defaultValue" }, + { name: "isOptional", defaultValue: false }, + { name: "name" }, + { name: "type" } + ] + }; + } + case UnionType: { + return { + name: UnionType, + properties: [ + { name: "types", defaultValue: [] } + ] + }; + } + case Action: { + return { + name: Action, + properties: [ + { name: "cardinality" }, + { name: "feature" }, + { name: "inferredType" }, + { name: "lookahead" }, + { name: "operator" }, + { name: "type" } + ] + }; + } + case Alternatives: { + return { + name: Alternatives, + properties: [ + { name: "cardinality" }, + { name: "elements", defaultValue: [] }, + { name: "lookahead" } + ] + }; + } + case Assignment: { + return { + name: Assignment, + properties: [ + { name: "cardinality" }, + { name: "feature" }, + { name: "lookahead" }, + { name: "operator" }, + { name: "terminal" } + ] + }; + } + case CharacterRange: { + return { + name: CharacterRange, + properties: [ + { name: "cardinality" }, + { name: "left" }, + { name: "lookahead" }, + { name: "right" } + ] + }; + } + case CrossReference: { + return { + name: CrossReference, + properties: [ + { name: "cardinality" }, + { name: "deprecatedSyntax", defaultValue: false }, + { name: "lookahead" }, + { name: "terminal" }, + { name: "type" } + ] + }; + } + case EndOfFile: { + return { + name: EndOfFile, + properties: [ + { name: "cardinality" }, + { name: "lookahead" } + ] + }; + } + case Group: { + return { + name: Group, + properties: [ + { name: "cardinality" }, + { name: "elements", defaultValue: [] }, + { name: "guardCondition" }, + { name: "lookahead" } + ] + }; + } + case Keyword2: { + return { + name: Keyword2, + properties: [ + { name: "cardinality" }, + { name: "lookahead" }, + { name: "value" } + ] + }; + } + case NegatedToken: { + return { + name: NegatedToken, + properties: [ + { name: "cardinality" }, + { name: "lookahead" }, + { name: "terminal" } + ] + }; + } + case RegexToken: { + return { + name: RegexToken, + properties: [ + { name: "cardinality" }, + { name: "lookahead" }, + { name: "regex" } + ] + }; + } + case RuleCall: { + return { + name: RuleCall, + properties: [ + { name: "arguments", defaultValue: [] }, + { name: "cardinality" }, + { name: "lookahead" }, + { name: "rule" } + ] + }; + } + case TerminalAlternatives: { + return { + name: TerminalAlternatives, + properties: [ + { name: "cardinality" }, + { name: "elements", defaultValue: [] }, + { name: "lookahead" } + ] + }; + } + case TerminalGroup: { + return { + name: TerminalGroup, + properties: [ + { name: "cardinality" }, + { name: "elements", defaultValue: [] }, + { name: "lookahead" } + ] + }; + } + case TerminalRuleCall: { + return { + name: TerminalRuleCall, + properties: [ + { name: "cardinality" }, + { name: "lookahead" }, + { name: "rule" } + ] + }; + } + case UnorderedGroup: { + return { + name: UnorderedGroup, + properties: [ + { name: "cardinality" }, + { name: "elements", defaultValue: [] }, + { name: "lookahead" } + ] + }; + } + case UntilToken: { + return { + name: UntilToken, + properties: [ + { name: "cardinality" }, + { name: "lookahead" }, + { name: "terminal" } + ] + }; + } + case Wildcard: { + return { + name: Wildcard, + properties: [ + { name: "cardinality" }, + { name: "lookahead" } + ] + }; + } + default: { + return { + name: type3, + properties: [] + }; + } + } + } + }; + reflection = new LangiumGrammarAstReflection(); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/ast-utils.js + var ast_utils_exports = {}; + __export(ast_utils_exports, { + assignMandatoryProperties: () => assignMandatoryProperties, + copyAstNode: () => copyAstNode, + findLocalReferences: () => findLocalReferences, + findRootNode: () => findRootNode, + getContainerOfType: () => getContainerOfType, + getDocument: () => getDocument, + hasContainerOfType: () => hasContainerOfType, + linkContentToContainer: () => linkContentToContainer, + streamAllContents: () => streamAllContents, + streamAst: () => streamAst, + streamContents: () => streamContents, + streamReferences: () => streamReferences + }); + function linkContentToContainer(node2) { + for (const [name, value2] of Object.entries(node2)) { + if (!name.startsWith("$")) { + if (Array.isArray(value2)) { + value2.forEach((item, index) => { + if (isAstNode(item)) { + item.$container = node2; + item.$containerProperty = name; + item.$containerIndex = index; + } + }); + } else if (isAstNode(value2)) { + value2.$container = node2; + value2.$containerProperty = name; + } } - return this.spawn(elements3, true).filter(selector); - }, "parallelEdgesImpl"); - } - function generateCubicBezier(mX1, mY1, mX2, mY2) { - var NEWTON_ITERATIONS = 4, NEWTON_MIN_SLOPE = 1e-3, SUBDIVISION_PRECISION = 1e-7, SUBDIVISION_MAX_ITERATIONS = 10, kSplineTableSize = 11, kSampleStepSize = 1 / (kSplineTableSize - 1), float32ArraySupported = typeof Float32Array !== "undefined"; - if (arguments.length !== 4) { - return false; - } - for (var i2 = 0; i2 < 4; ++i2) { - if (typeof arguments[i2] !== "number" || isNaN(arguments[i2]) || !isFinite(arguments[i2])) { - return false; - } - } - mX1 = Math.min(mX1, 1); - mX2 = Math.min(mX2, 1); - mX1 = Math.max(mX1, 0); - mX2 = Math.max(mX2, 0); - var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); - function A2(aA1, aA2) { - return 1 - 3 * aA2 + 3 * aA1; - } - __name(A2, "A"); - function B2(aA1, aA2) { - return 3 * aA2 - 6 * aA1; - } - __name(B2, "B"); - function C2(aA1) { - return 3 * aA1; - } - __name(C2, "C"); - function calcBezier(aT, aA1, aA2) { - return ((A2(aA1, aA2) * aT + B2(aA1, aA2)) * aT + C2(aA1)) * aT; - } - __name(calcBezier, "calcBezier"); - function getSlope(aT, aA1, aA2) { - return 3 * A2(aA1, aA2) * aT * aT + 2 * B2(aA1, aA2) * aT + C2(aA1); - } - __name(getSlope, "getSlope"); - function newtonRaphsonIterate(aX, aGuessT) { - for (var _i = 0; _i < NEWTON_ITERATIONS; ++_i) { - var currentSlope = getSlope(aGuessT, mX1, mX2); - if (currentSlope === 0) { - return aGuessT; - } - var currentX = calcBezier(aGuessT, mX1, mX2) - aX; - aGuessT -= currentX / currentSlope; - } - return aGuessT; - } - __name(newtonRaphsonIterate, "newtonRaphsonIterate"); - function calcSampleValues() { - for (var _i2 = 0; _i2 < kSplineTableSize; ++_i2) { - mSampleValues[_i2] = calcBezier(_i2 * kSampleStepSize, mX1, mX2); - } - } - __name(calcSampleValues, "calcSampleValues"); - function binarySubdivide(aX, aA, aB) { - var currentX, currentT, i3 = 0; - do { - currentT = aA + (aB - aA) / 2; - currentX = calcBezier(currentT, mX1, mX2) - aX; - if (currentX > 0) { - aB = currentT; - } else { - aA = currentT; - } - } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i3 < SUBDIVISION_MAX_ITERATIONS); - return currentT; - } - __name(binarySubdivide, "binarySubdivide"); - function getTForX(aX) { - var intervalStart = 0, currentSample = 1, lastSample = kSplineTableSize - 1; - for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) { - intervalStart += kSampleStepSize; - } - --currentSample; - var dist3 = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]), guessForT = intervalStart + dist3 * kSampleStepSize, initialSlope = getSlope(guessForT, mX1, mX2); - if (initialSlope >= NEWTON_MIN_SLOPE) { - return newtonRaphsonIterate(aX, guessForT); - } else if (initialSlope === 0) { - return guessForT; - } else { - return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize); - } - } - __name(getTForX, "getTForX"); - var _precomputed = false; - function precompute() { - _precomputed = true; - if (mX1 !== mY1 || mX2 !== mY2) { - calcSampleValues(); - } - } - __name(precompute, "precompute"); - var f2 = /* @__PURE__ */ __name(function f3(aX) { - if (!_precomputed) { - precompute(); - } - if (mX1 === mY1 && mX2 === mY2) { - return aX; - } - if (aX === 0) { - return 0; - } - if (aX === 1) { - return 1; - } - return calcBezier(getTForX(aX), mY1, mY2); - }, "f"); - f2.getControlPoints = function() { - return [{ - x: mX1, - y: mY1 - }, { - x: mX2, - y: mY2 - }]; - }; - var str2 = "generateBezier(" + [mX1, mY1, mX2, mY2] + ")"; - f2.toString = function() { - return str2; - }; - return f2; - } - function getEasedValue(type3, start3, end2, percent, easingFn) { - if (percent === 1) { - return end2; - } - if (start3 === end2) { - return end2; - } - var val = easingFn(start3, end2, percent); - if (type3 == null) { - return val; - } - if (type3.roundValue || type3.color) { - val = Math.round(val); - } - if (type3.min !== void 0) { - val = Math.max(val, type3.min); - } - if (type3.max !== void 0) { - val = Math.min(val, type3.max); - } - return val; - } - function getValue2(prop, spec) { - if (prop.pfValue != null || prop.value != null) { - if (prop.pfValue != null && (spec == null || spec.type.units !== "%")) { - return prop.pfValue; - } else { - return prop.value; - } - } else { - return prop; } } - function ease(startProp, endProp, percent, easingFn, propSpec) { - var type3 = propSpec != null ? propSpec.type : null; - if (percent < 0) { - percent = 0; - } else if (percent > 1) { - percent = 1; - } - var start3 = getValue2(startProp, propSpec); - var end2 = getValue2(endProp, propSpec); - if (number$1(start3) && number$1(end2)) { - return getEasedValue(type3, start3, end2, percent, easingFn); - } else if (array2(start3) && array2(end2)) { - var easedArr = []; - for (var i2 = 0; i2 < end2.length; i2++) { - var si = start3[i2]; - var ei = end2[i2]; - if (si != null && ei != null) { - var val = getEasedValue(type3, si, ei, percent, easingFn); - easedArr.push(val); - } else { - easedArr.push(ei); - } + function getContainerOfType(node2, typePredicate) { + let item = node2; + while (item) { + if (typePredicate(item)) { + return item; } - return easedArr; + item = item.$container; } return void 0; } - function step$1(self2, ani, now4, isCore) { - var isEles = !isCore; - var _p = self2._private; - var ani_p = ani._private; - var pEasing = ani_p.easing; - var startTime = ani_p.startTime; - var cy = isCore ? self2 : self2.cy(); - var style3 = cy.style(); - if (!ani_p.easingImpl) { - if (pEasing == null) { - ani_p.easingImpl = easings["linear"]; - } else { - var easingVals; - if (string(pEasing)) { - var easingProp = style3.parse("transition-timing-function", pEasing); - easingVals = easingProp.value; - } else { - easingVals = pEasing; - } - var name, args; - if (string(easingVals)) { - name = easingVals; - args = []; - } else { - name = easingVals[1]; - args = easingVals.slice(2).map(function(n2) { - return +n2; - }); - } - if (args.length > 0) { - if (name === "spring") { - args.push(ani_p.duration); - } - ani_p.easingImpl = easings[name].apply(null, args); - } else { - ani_p.easingImpl = easings[name]; - } + function hasContainerOfType(node2, predicate) { + let item = node2; + while (item) { + if (predicate(item)) { + return true; } + item = item.$container; } - var easing = ani_p.easingImpl; - var percent; - if (ani_p.duration === 0) { - percent = 1; - } else { - percent = (now4 - startTime) / ani_p.duration; + return false; + } + function getDocument(node2) { + const rootNode = findRootNode(node2); + const result = rootNode.$document; + if (!result) { + throw new Error("AST node has no document."); } - if (ani_p.applying) { - percent = ani_p.progress; + return result; + } + function findRootNode(node2) { + while (node2.$container) { + node2 = node2.$container; } - if (percent < 0) { - percent = 0; - } else if (percent > 1) { - percent = 1; + return node2; + } + function streamContents(node2, options2) { + if (!node2) { + throw new Error("Node must be an AstNode."); } - if (ani_p.delay == null) { - var startPos = ani_p.startPosition; - var endPos = ani_p.position; - if (endPos && isEles && !self2.locked()) { - var newPos = {}; - if (valid(startPos.x, endPos.x)) { - newPos.x = ease(startPos.x, endPos.x, percent, easing); - } - if (valid(startPos.y, endPos.y)) { - newPos.y = ease(startPos.y, endPos.y, percent, easing); - } - self2.position(newPos); - } - var startPan = ani_p.startPan; - var endPan = ani_p.pan; - var pan2 = _p.pan; - var animatingPan = endPan != null && isCore; - if (animatingPan) { - if (valid(startPan.x, endPan.x)) { - pan2.x = ease(startPan.x, endPan.x, percent, easing); - } - if (valid(startPan.y, endPan.y)) { - pan2.y = ease(startPan.y, endPan.y, percent, easing); - } - self2.emit("pan"); - } - var startZoom = ani_p.startZoom; - var endZoom = ani_p.zoom; - var animatingZoom = endZoom != null && isCore; - if (animatingZoom) { - if (valid(startZoom, endZoom)) { - _p.zoom = bound(_p.minZoom, ease(startZoom, endZoom, percent, easing), _p.maxZoom); - } - self2.emit("zoom"); - } - if (animatingPan || animatingZoom) { - self2.emit("viewport"); - } - var props = ani_p.style; - if (props && props.length > 0 && isEles) { - for (var i2 = 0; i2 < props.length; i2++) { - var prop = props[i2]; - var _name = prop.name; - var end2 = prop; - var start3 = ani_p.startStyle[_name]; - var propSpec = style3.properties[start3.name]; - var easedVal = ease(start3, end2, percent, easing, propSpec); - style3.overrideBypass(self2, _name, easedVal); + const range3 = options2 === null || options2 === void 0 ? void 0 : options2.range; + return new StreamImpl(() => ({ + keys: Object.keys(node2), + keyIndex: 0, + arrayIndex: 0 + }), (state3) => { + while (state3.keyIndex < state3.keys.length) { + const property2 = state3.keys[state3.keyIndex]; + if (!property2.startsWith("$")) { + const value2 = node2[property2]; + if (isAstNode(value2)) { + state3.keyIndex++; + if (isAstNodeInRange(value2, range3)) { + return { done: false, value: value2 }; + } + } else if (Array.isArray(value2)) { + while (state3.arrayIndex < value2.length) { + const index = state3.arrayIndex++; + const element3 = value2[index]; + if (isAstNode(element3) && isAstNodeInRange(element3, range3)) { + return { done: false, value: element3 }; + } + } + state3.arrayIndex = 0; + } } - self2.emit("style"); + state3.keyIndex++; } + return DONE_RESULT; + }); + } + function streamAllContents(root3, options2) { + if (!root3) { + throw new Error("Root node must be an AstNode."); } - ani_p.progress = percent; - return percent; + return new TreeStreamImpl(root3, (node2) => streamContents(node2, options2)); } - function valid(start3, end2) { - if (start3 == null || end2 == null) { - return false; + function streamAst(root3, options2) { + if (!root3) { + throw new Error("Root node must be an AstNode."); + } else if ((options2 === null || options2 === void 0 ? void 0 : options2.range) && !isAstNodeInRange(root3, options2.range)) { + return new TreeStreamImpl(root3, () => []); } - if (number$1(start3) && number$1(end2)) { - return true; - } else if (start3 && end2) { + return new TreeStreamImpl(root3, (node2) => streamContents(node2, options2), { includeRoot: true }); + } + function isAstNodeInRange(astNode, range3) { + var _a; + if (!range3) { return true; } - return false; - } - function startAnimation(self2, ani, now4, isCore) { - var ani_p = ani._private; - ani_p.started = true; - ani_p.startTime = now4 - ani_p.progress * ani_p.duration; + const nodeRange = (_a = astNode.$cstNode) === null || _a === void 0 ? void 0 : _a.range; + if (!nodeRange) { + return false; + } + return inRange(nodeRange, range3); } - function stepAll(now4, cy) { - var eles = cy._private.aniEles; - var doneEles = []; - function stepOne(ele2, isCore) { - var _p = ele2._private; - var current = _p.animation.current; - var queue = _p.animation.queue; - var ranAnis = false; - if (current.length === 0) { - var next3 = queue.shift(); - if (next3) { - current.push(next3); - } - } - var callbacks = /* @__PURE__ */ __name(function callbacks2(_callbacks) { - for (var j2 = _callbacks.length - 1; j2 >= 0; j2--) { - var cb = _callbacks[j2]; - cb(); - } - _callbacks.splice(0, _callbacks.length); - }, "callbacks"); - for (var i2 = current.length - 1; i2 >= 0; i2--) { - var ani = current[i2]; - var ani_p = ani._private; - if (ani_p.stopped) { - current.splice(i2, 1); - ani_p.hooked = false; - ani_p.playing = false; - ani_p.started = false; - callbacks(ani_p.frames); - continue; - } - if (!ani_p.playing && !ani_p.applying) { - continue; - } - if (ani_p.playing && ani_p.applying) { - ani_p.applying = false; - } - if (!ani_p.started) { - startAnimation(ele2, ani, now4); - } - step$1(ele2, ani, now4, isCore); - if (ani_p.applying) { - ani_p.applying = false; - } - callbacks(ani_p.frames); - if (ani_p.step != null) { - ani_p.step(now4); - } - if (ani.completed()) { - current.splice(i2, 1); - ani_p.hooked = false; - ani_p.playing = false; - ani_p.started = false; - callbacks(ani_p.completes); + function streamReferences(node2) { + return new StreamImpl(() => ({ + keys: Object.keys(node2), + keyIndex: 0, + arrayIndex: 0 + }), (state3) => { + while (state3.keyIndex < state3.keys.length) { + const property2 = state3.keys[state3.keyIndex]; + if (!property2.startsWith("$")) { + const value2 = node2[property2]; + if (isReference(value2)) { + state3.keyIndex++; + return { done: false, value: { reference: value2, container: node2, property: property2 } }; + } else if (Array.isArray(value2)) { + while (state3.arrayIndex < value2.length) { + const index = state3.arrayIndex++; + const element3 = value2[index]; + if (isReference(element3)) { + return { done: false, value: { reference: element3, container: node2, property: property2, index } }; + } + } + state3.arrayIndex = 0; + } } - ranAnis = true; - } - if (!isCore && current.length === 0 && queue.length === 0) { - doneEles.push(ele2); - } - return ranAnis; - } - __name(stepOne, "stepOne"); - var ranEleAni = false; - for (var e3 = 0; e3 < eles.length; e3++) { - var ele = eles[e3]; - var handledThisEle = stepOne(ele); - ranEleAni = ranEleAni || handledThisEle; - } - var ranCoreAni = stepOne(cy, true); - if (ranEleAni || ranCoreAni) { - if (eles.length > 0) { - cy.notify("draw", eles); - } else { - cy.notify("draw"); + state3.keyIndex++; } - } - eles.unmerge(doneEles); - cy.emit("step"); - } - function BreadthFirstLayout(options3) { - this.options = extend4({}, defaults$7, deprecatedOptionDefaults, options3); - } - function CircleLayout(options3) { - this.options = extend4({}, defaults$6, options3); - } - function ConcentricLayout(options3) { - this.options = extend4({}, defaults$5, options3); - } - function CoseLayout(options3) { - this.options = extend4({}, defaults$4, options3); - this.options.layout = this; - var nodes6 = this.options.eles.nodes(); - var edges3 = this.options.eles.edges(); - var notEdges = edges3.filter(function(e3) { - var sourceId = e3.source().data("id"); - var targetId = e3.target().data("id"); - var hasSource = nodes6.some(function(n2) { - return n2.data("id") === sourceId; - }); - var hasTarget = nodes6.some(function(n2) { - return n2.data("id") === targetId; - }); - return !hasSource || !hasTarget; + return DONE_RESULT; }); - this.options.eles = this.options.eles.not(notEdges); - } - function GridLayout(options3) { - this.options = extend4({}, defaults$3, options3); - } - function NullLayout(options3) { - this.options = extend4({}, defaults$2, options3); - } - function PresetLayout(options3) { - this.options = extend4({}, defaults$1, options3); - } - function RandomLayout(options3) { - this.options = extend4({}, defaults3, options3); - } - function NullRenderer(options3) { - this.options = options3; - this.notifications = 0; - } - function drawPreparedRoundCorner(ctx, roundCorner) { - if (roundCorner.radius === 0) ctx.lineTo(roundCorner.cx, roundCorner.cy); - else ctx.arc(roundCorner.cx, roundCorner.cy, roundCorner.radius, roundCorner.startAngle, roundCorner.endAngle, roundCorner.counterClockwise); - } - function getRoundCorner(previousPoint, currentPoint, nextPoint, radiusMax) { - var isArcRadius = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true; - if (radiusMax === 0 || currentPoint.radius === 0) return { - cx: currentPoint.x, - cy: currentPoint.y, - radius: 0, - startX: currentPoint.x, - startY: currentPoint.y, - stopX: currentPoint.x, - stopY: currentPoint.y, - startAngle: void 0, - endAngle: void 0, - counterClockwise: void 0 - }; - calcCornerArc(previousPoint, currentPoint, nextPoint, radiusMax, isArcRadius); - return { - cx: x3, - cy: y3, - radius: cRadius, - startX, - startY, - stopX, - stopY, - startAngle: v1.ang + Math.PI / 2 * radDirection, - endAngle: v2.ang - Math.PI / 2 * radDirection, - counterClockwise: drawDirection - }; } - function getPts(pts2) { - var retPts = []; - if (pts2 == null) { - return; - } - for (var i2 = 0; i2 < pts2.length; i2 += 2) { - var x5 = pts2[i2]; - var y5 = pts2[i2 + 1]; - retPts.push({ - x: x5, - y: y5 + function findLocalReferences(targetNode, lookup2 = getDocument(targetNode).parseResult.value) { + const refs = []; + streamAst(lookup2).forEach((node2) => { + streamReferences(node2).forEach((refInfo) => { + if (refInfo.reference.ref === targetNode) { + refs.push(refInfo.reference); + } }); - } - return retPts; + }); + return stream(refs); } - function pushBezierPts(r2, edge, pts2) { - var qbezierAt$1 = /* @__PURE__ */ __name(function qbezierAt$12(p1, p22, p32, t4) { - return qbezierAt(p1, p22, p32, t4); - }, "qbezierAt$1"); - var _p = edge._private; - var bpts = _p.rstyle.bezierPts; - for (var i2 = 0; i2 < r2.bezierProjPcts.length; i2++) { - var p3 = r2.bezierProjPcts[i2]; - bpts.push({ - x: qbezierAt$1(pts2[0], pts2[2], pts2[4], p3), - y: qbezierAt$1(pts2[1], pts2[3], pts2[5], p3) - }); + function assignMandatoryProperties(reflection3, node2) { + const typeMetaData = reflection3.getTypeMetaData(node2.$type); + const genericNode = node2; + for (const property2 of typeMetaData.properties) { + if (property2.defaultValue !== void 0 && genericNode[property2.name] === void 0) { + genericNode[property2.name] = copyDefaultValue(property2.defaultValue); + } } } - function polygon(context, points) { - for (var i2 = 0; i2 < points.length; i2++) { - var pt = points[i2]; - context.lineTo(pt.x, pt.y); + function copyDefaultValue(propertyType) { + if (Array.isArray(propertyType)) { + return [...propertyType.map(copyDefaultValue)]; + } else { + return propertyType; } } - function triangleBackcurve(context, points, controlPoint) { - var firstPt; - for (var i2 = 0; i2 < points.length; i2++) { - var pt = points[i2]; - if (i2 === 0) { - firstPt = pt; + function copyAstNode(node2, buildReference) { + const copy5 = { $type: node2.$type }; + for (const [name, value2] of Object.entries(node2)) { + if (!name.startsWith("$")) { + if (isAstNode(value2)) { + copy5[name] = copyAstNode(value2, buildReference); + } else if (isReference(value2)) { + copy5[name] = buildReference(copy5, name, value2.$refNode, value2.$refText); + } else if (Array.isArray(value2)) { + const copiedArray = []; + for (const element3 of value2) { + if (isAstNode(element3)) { + copiedArray.push(copyAstNode(element3, buildReference)); + } else if (isReference(element3)) { + copiedArray.push(buildReference(copy5, name, element3.$refNode, element3.$refText)); + } else { + copiedArray.push(element3); + } + } + copy5[name] = copiedArray; + } else { + copy5[name] = value2; + } } - context.lineTo(pt.x, pt.y); - } - context.quadraticCurveTo(controlPoint.x, controlPoint.y, firstPt.x, firstPt.y); - } - function triangleTee(context, trianglePoints, teePoints) { - if (context.beginPath) { - context.beginPath(); - } - var triPts = trianglePoints; - for (var i2 = 0; i2 < triPts.length; i2++) { - var pt = triPts[i2]; - context.lineTo(pt.x, pt.y); - } - var teePts = teePoints; - var firstTeePt = teePoints[0]; - context.moveTo(firstTeePt.x, firstTeePt.y); - for (var i2 = 1; i2 < teePts.length; i2++) { - var pt = teePts[i2]; - context.lineTo(pt.x, pt.y); - } - if (context.closePath) { - context.closePath(); } + linkContentToContainer(copy5); + return copy5; } - function circleTriangle(context, trianglePoints, rx, ry, r2) { - if (context.beginPath) { - context.beginPath(); - } - context.arc(rx, ry, r2, 0, Math.PI * 2, false); - var triPts = trianglePoints; - var firstTrPt = triPts[0]; - context.moveTo(firstTrPt.x, firstTrPt.y); - for (var i2 = 0; i2 < triPts.length; i2++) { - var pt = triPts[i2]; - context.lineTo(pt.x, pt.y); - } - if (context.closePath) { - context.closePath(); + var init_ast_utils = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/ast-utils.js"() { + "use strict"; + init_syntax_tree(); + init_stream(); + init_cst_utils(); + __name(linkContentToContainer, "linkContentToContainer"); + __name(getContainerOfType, "getContainerOfType"); + __name(hasContainerOfType, "hasContainerOfType"); + __name(getDocument, "getDocument"); + __name(findRootNode, "findRootNode"); + __name(streamContents, "streamContents"); + __name(streamAllContents, "streamAllContents"); + __name(streamAst, "streamAst"); + __name(isAstNodeInRange, "isAstNodeInRange"); + __name(streamReferences, "streamReferences"); + __name(findLocalReferences, "findLocalReferences"); + __name(assignMandatoryProperties, "assignMandatoryProperties"); + __name(copyDefaultValue, "copyDefaultValue"); + __name(copyAstNode, "copyAstNode"); } + }); + + // ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/utils.js + function cc(char2) { + return char2.charCodeAt(0); } - function circle3(context, rx, ry, r2) { - context.arc(rx, ry, r2, 0, Math.PI * 2, false); - } - function roundRect(ctx, x5, y5, width3, height2) { - var radius2 = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : 5; - var stroke = arguments.length > 6 ? arguments[6] : void 0; - ctx.beginPath(); - ctx.moveTo(x5 + radius2, y5); - ctx.lineTo(x5 + width3 - radius2, y5); - ctx.quadraticCurveTo(x5 + width3, y5, x5 + width3, y5 + radius2); - ctx.lineTo(x5 + width3, y5 + height2 - radius2); - ctx.quadraticCurveTo(x5 + width3, y5 + height2, x5 + width3 - radius2, y5 + height2); - ctx.lineTo(x5 + radius2, y5 + height2); - ctx.quadraticCurveTo(x5, y5 + height2, x5, y5 + height2 - radius2); - ctx.lineTo(x5, y5 + radius2); - ctx.quadraticCurveTo(x5, y5, x5 + radius2, y5); - ctx.closePath(); - if (stroke) ctx.stroke(); - else ctx.fill(); - } - function compileShader(gl, type3, source) { - var shader = gl.createShader(type3); - gl.shaderSource(shader, source); - gl.compileShader(shader); - if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - throw new Error(gl.getShaderInfoLog(shader)); + function insertToSet(item, set5) { + if (Array.isArray(item)) { + item.forEach(function(subItem) { + set5.push(subItem); + }); + } else { + set5.push(item); } - return shader; } - function createProgram(gl, vertexSource, fragementSource) { - var vertexShader = compileShader(gl, gl.VERTEX_SHADER, vertexSource); - var fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, fragementSource); - var program = gl.createProgram(); - gl.attachShader(program, vertexShader); - gl.attachShader(program, fragmentShader); - gl.linkProgram(program); - if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - throw new Error("Could not initialize shaders"); + function addFlag(flagObj, flagKey) { + if (flagObj[flagKey] === true) { + throw "duplicate flag " + flagKey; } - return program; + const x5 = flagObj[flagKey]; + flagObj[flagKey] = true; } - function createTextureCanvas(r2, width3, height2) { - if (height2 === void 0) { - height2 = width3; + function ASSERT_EXISTS(obj) { + if (obj === void 0) { + throw Error("Internal Error - Should never get here!"); } - var canvas = r2.makeOffscreenCanvas(width3, height2); - var ctx = canvas.context = canvas.getContext("2d"); - canvas.clear = function() { - return ctx.clearRect(0, 0, canvas.width, canvas.height); - }; - canvas.clear(); - return canvas; - } - function getEffectivePanZoom(r2) { - var pixelRatio = r2.pixelRatio; - var zoom2 = r2.cy.zoom(); - var pan2 = r2.cy.pan(); - return { - zoom: zoom2 * pixelRatio, - pan: { - x: pan2.x * pixelRatio, - y: pan2.y * pixelRatio - } - }; - } - function modelToRenderedPosition2(r2, pan2, zoom2, x5, y5) { - var rx = x5 * zoom2 + pan2.x; - var ry = y5 * zoom2 + pan2.y; - ry = Math.round(r2.canvasHeight - ry); - return [rx, ry]; - } - function toWebGLColor(color2, opacity, outArray) { - var r2 = color2[0] / 255; - var g2 = color2[1] / 255; - var b2 = color2[2] / 255; - var a2 = opacity; - var arr = outArray || new Array(4); - arr[0] = r2 * a2; - arr[1] = g2 * a2; - arr[2] = b2 * a2; - arr[3] = a2; - return arr; + return true; } - function indexToVec4(index, outArray) { - var arr = outArray || new Array(4); - arr[0] = (index >> 0 & 255) / 255; - arr[1] = (index >> 8 & 255) / 255; - arr[2] = (index >> 16 & 255) / 255; - arr[3] = (index >> 24 & 255) / 255; - return arr; + function ASSERT_NEVER_REACH_HERE() { + throw Error("Internal Error - Should never get here!"); } - function vec4ToIndex(vec4) { - return vec4[0] + (vec4[1] << 8) + (vec4[2] << 16) + (vec4[3] << 24); + function isCharacter(obj) { + return obj["type"] === "Character"; } - function createTexture(gl, debugID) { - var texture = gl.createTexture(); - texture.buffer = function(offscreenCanvas) { - gl.bindTexture(gl.TEXTURE_2D, texture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST); - gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, offscreenCanvas); - gl.generateMipmap(gl.TEXTURE_2D); - gl.bindTexture(gl.TEXTURE_2D, null); - }; - texture.deleteTexture = function() { - gl.deleteTexture(texture); - }; - return texture; - } - function getTypeInfo(gl, glslType) { - switch (glslType) { - case "float": - return [1, gl.FLOAT, 4]; - case "vec2": - return [2, gl.FLOAT, 4]; - case "vec3": - return [3, gl.FLOAT, 4]; - case "vec4": - return [4, gl.FLOAT, 4]; - case "int": - return [1, gl.INT, 4]; - case "ivec2": - return [2, gl.INT, 4]; - } - } - function createTypedArray(gl, glType, dataOrSize) { - switch (glType) { - case gl.FLOAT: - return new Float32Array(dataOrSize); - case gl.INT: - return new Int32Array(dataOrSize); - } - } - function createTypedArrayView(gl, glType, array4, stride, size5, i2) { - switch (glType) { - case gl.FLOAT: - return new Float32Array(array4.buffer, i2 * stride, size5); - case gl.INT: - return new Int32Array(array4.buffer, i2 * stride, size5); - } - } - function createBufferStaticDraw(gl, type3, attributeLoc, dataArray) { - var _getTypeInfo = getTypeInfo(gl, type3), _getTypeInfo2 = _slicedToArray(_getTypeInfo, 2), size5 = _getTypeInfo2[0], glType = _getTypeInfo2[1]; - var data6 = createTypedArray(gl, glType, dataArray); - var buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, buffer); - gl.bufferData(gl.ARRAY_BUFFER, data6, gl.STATIC_DRAW); - if (glType === gl.FLOAT) { - gl.vertexAttribPointer(attributeLoc, size5, glType, false, 0, 0); - } else if (glType === gl.INT) { - gl.vertexAttribIPointer(attributeLoc, size5, glType, 0, 0); - } - gl.enableVertexAttribArray(attributeLoc); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - return buffer; - } - function createBufferDynamicDraw(gl, instances, type3, attributeLoc) { - var _getTypeInfo3 = getTypeInfo(gl, type3), _getTypeInfo4 = _slicedToArray(_getTypeInfo3, 3), size5 = _getTypeInfo4[0], glType = _getTypeInfo4[1], bytes = _getTypeInfo4[2]; - var dataArray = createTypedArray(gl, glType, instances * size5); - var stride = size5 * bytes; - var buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, buffer); - gl.bufferData(gl.ARRAY_BUFFER, instances * stride, gl.DYNAMIC_DRAW); - gl.enableVertexAttribArray(attributeLoc); - if (glType === gl.FLOAT) { - gl.vertexAttribPointer(attributeLoc, size5, glType, false, stride, 0); - } else if (glType === gl.INT) { - gl.vertexAttribIPointer(attributeLoc, size5, glType, stride, 0); - } - gl.vertexAttribDivisor(attributeLoc, 1); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - var views = new Array(instances); - for (var i2 = 0; i2 < instances; i2++) { - views[i2] = createTypedArrayView(gl, glType, dataArray, stride, size5, i2); + var init_utils3 = __esm({ + "../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/utils.js"() { + "use strict"; + __name(cc, "cc"); + __name(insertToSet, "insertToSet"); + __name(addFlag, "addFlag"); + __name(ASSERT_EXISTS, "ASSERT_EXISTS"); + __name(ASSERT_NEVER_REACH_HERE, "ASSERT_NEVER_REACH_HERE"); + __name(isCharacter, "isCharacter"); } - buffer.dataArray = dataArray; - buffer.stride = stride; - buffer.size = size5; - buffer.getView = function(i3) { - return views[i3]; - }; - buffer.setPoint = function(i3, x5, y5) { - var view = views[i3]; - view[0] = x5; - view[1] = y5; - }; - buffer.bufferSubData = function(count) { - gl.bindBuffer(gl.ARRAY_BUFFER, buffer); - if (count) { - gl.bufferSubData(gl.ARRAY_BUFFER, 0, dataArray, 0, count * size5); - } else { - gl.bufferSubData(gl.ARRAY_BUFFER, 0, dataArray); + }); + + // ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/character-classes.js + var digitsCharCodes, wordCharCodes, whitespaceCodes; + var init_character_classes = __esm({ + "../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/character-classes.js"() { + "use strict"; + init_utils3(); + digitsCharCodes = []; + for (let i2 = cc("0"); i2 <= cc("9"); i2++) { + digitsCharCodes.push(i2); } - }; - return buffer; - } - function createPickingFrameBuffer(gl) { - var fb = gl.createFramebuffer(); - gl.bindFramebuffer(gl.FRAMEBUFFER, fb); - var targetTexture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, targetTexture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, targetTexture, 0); - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - fb.setFramebufferAttachmentSizes = function(width3, height2) { - gl.bindTexture(gl.TEXTURE_2D, targetTexture); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width3, height2, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); - }; - return fb; - } - function create3() { - var out = new ARRAY_TYPE(9); - if (ARRAY_TYPE != Float32Array) { - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[5] = 0; - out[6] = 0; - out[7] = 0; - } - out[0] = 1; - out[4] = 1; - out[8] = 1; - return out; - } - function identity6(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 1; - out[5] = 0; - out[6] = 0; - out[7] = 0; - out[8] = 1; - return out; - } - function multiply(out, a2, b2) { - var a00 = a2[0], a01 = a2[1], a02 = a2[2]; - var a10 = a2[3], a11 = a2[4], a12 = a2[5]; - var a20 = a2[6], a21 = a2[7], a22 = a2[8]; - var b00 = b2[0], b01 = b2[1], b02 = b2[2]; - var b10 = b2[3], b11 = b2[4], b12 = b2[5]; - var b20 = b2[6], b21 = b2[7], b22 = b2[8]; - out[0] = b00 * a00 + b01 * a10 + b02 * a20; - out[1] = b00 * a01 + b01 * a11 + b02 * a21; - out[2] = b00 * a02 + b01 * a12 + b02 * a22; - out[3] = b10 * a00 + b11 * a10 + b12 * a20; - out[4] = b10 * a01 + b11 * a11 + b12 * a21; - out[5] = b10 * a02 + b11 * a12 + b12 * a22; - out[6] = b20 * a00 + b21 * a10 + b22 * a20; - out[7] = b20 * a01 + b21 * a11 + b22 * a21; - out[8] = b20 * a02 + b21 * a12 + b22 * a22; - return out; - } - function translate(out, a2, v3) { - var a00 = a2[0], a01 = a2[1], a02 = a2[2], a10 = a2[3], a11 = a2[4], a12 = a2[5], a20 = a2[6], a21 = a2[7], a22 = a2[8], x5 = v3[0], y5 = v3[1]; - out[0] = a00; - out[1] = a01; - out[2] = a02; - out[3] = a10; - out[4] = a11; - out[5] = a12; - out[6] = x5 * a00 + y5 * a10 + a20; - out[7] = x5 * a01 + y5 * a11 + a21; - out[8] = x5 * a02 + y5 * a12 + a22; - return out; - } - function rotate(out, a2, rad) { - var a00 = a2[0], a01 = a2[1], a02 = a2[2], a10 = a2[3], a11 = a2[4], a12 = a2[5], a20 = a2[6], a21 = a2[7], a22 = a2[8], s2 = Math.sin(rad), c3 = Math.cos(rad); - out[0] = c3 * a00 + s2 * a10; - out[1] = c3 * a01 + s2 * a11; - out[2] = c3 * a02 + s2 * a12; - out[3] = c3 * a10 - s2 * a00; - out[4] = c3 * a11 - s2 * a01; - out[5] = c3 * a12 - s2 * a02; - out[6] = a20; - out[7] = a21; - out[8] = a22; - return out; - } - function scale(out, a2, v3) { - var x5 = v3[0], y5 = v3[1]; - out[0] = x5 * a2[0]; - out[1] = x5 * a2[1]; - out[2] = x5 * a2[2]; - out[3] = y5 * a2[3]; - out[4] = y5 * a2[4]; - out[5] = y5 * a2[5]; - out[6] = a2[6]; - out[7] = a2[7]; - out[8] = a2[8]; - return out; - } - function projection(out, width3, height2) { - out[0] = 2 / width3; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = -2 / height2; - out[5] = 0; - out[6] = -1; - out[7] = 1; - out[8] = 1; - return out; - } - function intersection2(set1, set22) { - if (set1.intersection) return set1.intersection(set22); - else return new Set(_toConsumableArray(set1).filter(function(x5) { - return set22.has(x5); - })); - } - function fillStyle(color2, opacity) { - return "rgba(".concat(color2[0], ", ").concat(color2[1], ", ").concat(color2[2], ", ").concat(opacity, ")"); - } - function getBGColor(container2) { - var cssColor = container2 && container2.style && container2.style.backgroundColor || "white"; - return color2tuple(cssColor); - } - function overrideCanvasRendererFunctions(r2) { - { - var renderCanvas = r2.render; - r2.render = function(options3) { - options3 = options3 || {}; - var cy = r2.cy; - if (r2.webgl) { - if (cy.zoom() > maxZoom$1) { - clearWebgl(r2); - renderCanvas.call(r2, options3); - } else { - clearCanvas(r2); - renderWebgl(r2, options3, RENDER_TARGET.SCREEN); - } - } - }; - } - { - var baseFunc = r2.matchCanvasSize; - r2.matchCanvasSize = function(container2) { - baseFunc.call(r2, container2); - r2.pickingFrameBuffer.setFramebufferAttachmentSizes(r2.canvasWidth, r2.canvasHeight); - r2.pickingFrameBuffer.needsDraw = true; - }; - } - { - r2.findNearestElements = function(x5, y5, interactiveElementsOnly, isTouch) { - return findNearestElementsWebgl(r2, x5, y5); - }; - } - { - var _baseFunc = r2.invalidateCachedZSortedEles; - r2.invalidateCachedZSortedEles = function() { - _baseFunc.call(r2); - r2.pickingFrameBuffer.needsDraw = true; - }; - } - { - var _baseFunc2 = r2.notify; - r2.notify = function(eventName, eles) { - _baseFunc2.call(r2, eventName, eles); - if (eventName === "viewport" || eventName === "bounds") { - r2.pickingFrameBuffer.needsDraw = true; - } else if (eventName === "background") { - r2.eleDrawing.invalidate(eles, { - type: "node-body" - }); - } - }; - } - } - function clearWebgl(r2) { - var gl = r2.data.contexts[r2.WEBGL]; - gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); - } - function clearCanvas(r2) { - var clear22 = /* @__PURE__ */ __name(function clear23(context) { - context.save(); - context.setTransform(1, 0, 0, 1, 0, 0); - context.clearRect(0, 0, r2.canvasWidth, r2.canvasHeight); - context.restore(); - }, "clear"); - clear22(r2.data.contexts[r2.NODE]); - clear22(r2.data.contexts[r2.DRAG]); - } - function createPanZoomMatrix(r2) { - var width3 = r2.canvasWidth; - var height2 = r2.canvasHeight; - var _util$getEffectivePan = getEffectivePanZoom(r2), pan2 = _util$getEffectivePan.pan, zoom2 = _util$getEffectivePan.zoom; - var transform8 = create3(); - translate(transform8, transform8, [pan2.x, pan2.y]); - scale(transform8, transform8, [zoom2, zoom2]); - var projection$1 = create3(); - projection(projection$1, width3, height2); - var product = create3(); - multiply(product, projection$1, transform8); - return product; - } - function setContextTransform(r2, context) { - var width3 = r2.canvasWidth; - var height2 = r2.canvasHeight; - var _util$getEffectivePan2 = getEffectivePanZoom(r2), pan2 = _util$getEffectivePan2.pan, zoom2 = _util$getEffectivePan2.zoom; - context.setTransform(1, 0, 0, 1, 0, 0); - context.clearRect(0, 0, width3, height2); - context.translate(pan2.x, pan2.y); - context.scale(zoom2, zoom2); - } - function drawSelectionRectangle(r2, options3) { - r2.drawSelectionRectangle(options3, function(context) { - return setContextTransform(r2, context); - }); - } - function drawAxes(r2) { - var context = r2.data.contexts[r2.NODE]; - context.save(); - setContextTransform(r2, context); - context.strokeStyle = "rgba(0, 0, 0, 0.3)"; - context.beginPath(); - context.moveTo(-1e3, 0); - context.lineTo(1e3, 0); - context.stroke(); - context.beginPath(); - context.moveTo(0, -1e3); - context.lineTo(0, 1e3); - context.stroke(); - context.restore(); - } - function drawAtlases(r2) { - var draw25 = /* @__PURE__ */ __name(function draw26(drawing, renderType, row) { - var opts = drawing.atlasManager.getRenderTypeOpts(renderType); - var context = r2.data.contexts[r2.NODE]; - var scale2 = 0.125; - var atlases = opts.atlasCollection.atlases; - for (var _i = 0; _i < atlases.length; _i++) { - var atlas = atlases[_i]; - var canvas = atlas.canvas; - var w3 = canvas.width; - var h2 = canvas.height; - var x5 = w3 * _i; - var y5 = canvas.height * row; - context.save(); - context.scale(scale2, scale2); - context.drawImage(canvas, x5, y5); - context.strokeStyle = "black"; - context.rect(x5, y5, w3, h2); - context.stroke(); - context.restore(); + wordCharCodes = [cc("_")].concat(digitsCharCodes); + for (let i2 = cc("a"); i2 <= cc("z"); i2++) { + wordCharCodes.push(i2); } - }, "draw"); - var i2 = 0; - draw25(r2.eleDrawing, "node-body", i2++); - draw25(r2.eleDrawing, "node-label", i2++); - } - function getPickingIndexes(r2, mX1, mY1, mX2, mY2) { - var x5, y5, w3, h2; - var _util$getEffectivePan3 = getEffectivePanZoom(r2), pan2 = _util$getEffectivePan3.pan, zoom2 = _util$getEffectivePan3.zoom; - if (mX2 === void 0 || mY2 === void 0) { - var _util$modelToRendered = modelToRenderedPosition2(r2, pan2, zoom2, mX1, mY1), _util$modelToRendered2 = _slicedToArray(_util$modelToRendered, 2), cX1 = _util$modelToRendered2[0], cY1 = _util$modelToRendered2[1]; - var t4 = 6; - x5 = cX1 - t4 / 2; - y5 = cY1 - t4 / 2; - w3 = t4; - h2 = t4; - } else { - var _util$modelToRendered3 = modelToRenderedPosition2(r2, pan2, zoom2, mX1, mY1), _util$modelToRendered4 = _slicedToArray(_util$modelToRendered3, 2), _cX = _util$modelToRendered4[0], _cY = _util$modelToRendered4[1]; - var _util$modelToRendered5 = modelToRenderedPosition2(r2, pan2, zoom2, mX2, mY2), _util$modelToRendered6 = _slicedToArray(_util$modelToRendered5, 2), cX2 = _util$modelToRendered6[0], cY2 = _util$modelToRendered6[1]; - x5 = _cX; - y5 = cY2; - w3 = Math.abs(cX2 - _cX); - h2 = Math.abs(cY2 - _cY); - } - if (w3 === 0 || h2 === 0) { - return []; - } - var gl = r2.data.contexts[r2.WEBGL]; - gl.bindFramebuffer(gl.FRAMEBUFFER, r2.pickingFrameBuffer); - if (r2.pickingFrameBuffer.needsDraw) { - gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); - renderWebgl(r2, null, RENDER_TARGET.PICKING); - r2.pickingFrameBuffer.needsDraw = false; - } - var n2 = w3 * h2; - var data6 = new Uint8Array(n2 * 4); - gl.readPixels(x5, y5, w3, h2, gl.RGBA, gl.UNSIGNED_BYTE, data6); - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - var indexes = /* @__PURE__ */ new Set(); - for (var i2 = 0; i2 < n2; i2++) { - var pixel = data6.slice(i2 * 4, i2 * 4 + 4); - var index = vec4ToIndex(pixel) - 1; - if (index >= 0) { - indexes.add(index); + for (let i2 = cc("A"); i2 <= cc("Z"); i2++) { + wordCharCodes.push(i2); } + whitespaceCodes = [ + cc(" "), + cc("\f"), + cc("\n"), + cc("\r"), + cc(" "), + cc("\v"), + cc(" "), + cc("\xA0"), + cc("\u1680"), + cc("\u2000"), + cc("\u2001"), + cc("\u2002"), + cc("\u2003"), + cc("\u2004"), + cc("\u2005"), + cc("\u2006"), + cc("\u2007"), + cc("\u2008"), + cc("\u2009"), + cc("\u200A"), + cc("\u2028"), + cc("\u2029"), + cc("\u202F"), + cc("\u205F"), + cc("\u3000"), + cc("\uFEFF") + ]; } - return indexes; - } - function findNearestElementsWebgl(r2, x5, y5) { - var indexes = getPickingIndexes(r2, x5, y5); - var eles = r2.getCachedZSortedEles(); - var node2, edge; - var _iterator = _createForOfIteratorHelper(indexes), _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done; ) { - var index = _step.value; - var ele = eles[index]; - if (!node2 && ele.isNode()) { - node2 = ele; - } - if (!edge && ele.isEdge()) { - edge = ele; + }); + + // ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/regexp-parser.js + var hexDigitPattern, decimalPattern, decimalPatternNoZero, RegExpParser; + var init_regexp_parser = __esm({ + "../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/regexp-parser.js"() { + "use strict"; + init_utils3(); + init_character_classes(); + hexDigitPattern = /[0-9a-fA-F]/; + decimalPattern = /[0-9]/; + decimalPatternNoZero = /[1-9]/; + RegExpParser = class { + static { + __name(this, "RegExpParser"); } - if (node2 && edge) { - break; + constructor() { + this.idx = 0; + this.input = ""; + this.groupIdx = 0; } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - return [node2, edge].filter(Boolean); - } - function renderWebgl(r2, options3, renderTarget) { - var start3; - var debugInfo; - if (r2.webglDebug) { - debugInfo = []; - start3 = performance.now(); - } - var eleDrawing = r2.eleDrawing; - var eleCount = 0; - if (renderTarget.screen) { - if (r2.data.canvasNeedsRedraw[r2.SELECT_BOX]) { - drawSelectionRectangle(r2, options3); - } - } - if (r2.data.canvasNeedsRedraw[r2.NODE] || renderTarget.picking) { - var draw25 = /* @__PURE__ */ __name(function draw26(ele, index) { - index += 1; - if (ele.isNode()) { - eleDrawing.drawTexture(ele, index, "node-underlay"); - eleDrawing.drawTexture(ele, index, "node-body"); - eleDrawing.drawTexture(ele, index, "node-label"); - eleDrawing.drawTexture(ele, index, "node-overlay"); - } else { - eleDrawing.drawEdgeLine(ele, index); - eleDrawing.drawEdgeArrow(ele, index, "source"); - eleDrawing.drawEdgeArrow(ele, index, "target"); - eleDrawing.drawTexture(ele, index, "edge-label"); + saveState() { + return { + idx: this.idx, + input: this.input, + groupIdx: this.groupIdx + }; } - }, "draw"); - var gl = r2.data.contexts[r2.WEBGL]; - if (renderTarget.screen) { - gl.clearColor(0, 0, 0, 0); - gl.enable(gl.BLEND); - gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - } else { - gl.disable(gl.BLEND); - } - gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); - gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); - var panZoomMatrix = createPanZoomMatrix(r2); - var eles = r2.getCachedZSortedEles(); - eleCount = eles.length; - eleDrawing.startFrame(panZoomMatrix, debugInfo, renderTarget); - if (renderTarget.screen) { - for (var i2 = 0; i2 < eles.nondrag.length; i2++) { - draw25(eles.nondrag[i2], i2); + restoreState(newState2) { + this.idx = newState2.idx; + this.input = newState2.input; + this.groupIdx = newState2.groupIdx; } - for (var _i2 = 0; _i2 < eles.drag.length; _i2++) { - draw25(eles.drag[_i2], -1); + pattern(input) { + this.idx = 0; + this.input = input; + this.groupIdx = 0; + this.consumeChar("/"); + const value2 = this.disjunction(); + this.consumeChar("/"); + const flags = { + type: "Flags", + loc: { begin: this.idx, end: input.length }, + global: false, + ignoreCase: false, + multiLine: false, + unicode: false, + sticky: false + }; + while (this.isRegExpFlag()) { + switch (this.popChar()) { + case "g": + addFlag(flags, "global"); + break; + case "i": + addFlag(flags, "ignoreCase"); + break; + case "m": + addFlag(flags, "multiLine"); + break; + case "u": + addFlag(flags, "unicode"); + break; + case "y": + addFlag(flags, "sticky"); + break; + } + } + if (this.idx !== this.input.length) { + throw Error("Redundant input: " + this.input.substring(this.idx)); + } + return { + type: "Pattern", + flags, + value: value2, + loc: this.loc(0) + }; } - } else if (renderTarget.picking) { - for (var _i3 = 0; _i3 < eles.length; _i3++) { - draw25(eles[_i3], _i3); + disjunction() { + const alts = []; + const begin = this.idx; + alts.push(this.alternative()); + while (this.peekChar() === "|") { + this.consumeChar("|"); + alts.push(this.alternative()); + } + return { type: "Disjunction", value: alts, loc: this.loc(begin) }; } - } - eleDrawing.endFrame(); - if (r2.data.gc) { - console.log("Garbage Collect!"); - r2.data.gc = false; - eleDrawing.gc(); - } - if (renderTarget.screen && r2.webglDebugShowAtlases) { - drawAxes(r2); - drawAtlases(r2); - } - r2.data.canvasNeedsRedraw[r2.NODE] = false; - r2.data.canvasNeedsRedraw[r2.DRAG] = false; - } - if (r2.webglDebug) { - var end2 = performance.now(); - var compact2 = true; - var batchCount = 0; - var count = 0; - var _iterator3 = _createForOfIteratorHelper(debugInfo), _step3; - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) { - var _info = _step3.value; - batchCount++; - count += _info.count; + alternative() { + const terms = []; + const begin = this.idx; + while (this.isTerm()) { + terms.push(this.term()); + } + return { type: "Alternative", value: terms, loc: this.loc(begin) }; } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - var time4 = Math.ceil(end2 - start3); - var report = "".concat(eleCount, " elements, ").concat(count, " rectangles, ").concat(batchCount, " batches"); - if (compact2) { - console.log("WebGL (".concat(renderTarget.name, ") - ").concat(report)); - } else { - console.log("WebGL render (".concat(renderTarget.name, ") - frame time ").concat(time4, "ms")); - console.log(" ".concat(report)); - console.log("Texture Atlases Used:"); - var atlasInfo = eleDrawing.getAtlasDebugInfo(); - var _iterator4 = _createForOfIteratorHelper(atlasInfo), _step4; - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done; ) { - var info2 = _step4.value; - console.log(" ".concat(info2.type, ": ").concat(info2.keyCount, " keys, ").concat(info2.atlasCount, " atlases")); + term() { + if (this.isAssertion()) { + return this.assertion(); + } else { + return this.atom(); } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); } - console.log(""); - } - } - } - function b64ToBlob(b64, mimeType) { - var bytes = atob(b64); - var buff = new ArrayBuffer(bytes.length); - var buffUint8 = new Uint8Array(buff); - for (var i2 = 0; i2 < bytes.length; i2++) { - buffUint8[i2] = bytes.charCodeAt(i2); - } - return new Blob([buff], { - type: mimeType - }); - } - function b64UriToB64(b64uri) { - var i2 = b64uri.indexOf(","); - return b64uri.substr(i2 + 1); - } - function output(options3, canvas, mimeType) { - var getB64Uri = /* @__PURE__ */ __name(function getB64Uri2() { - return canvas.toDataURL(mimeType, options3.quality); - }, "getB64Uri"); - switch (options3.output) { - case "blob-promise": - return new Promise$1(function(resolve3, reject3) { - try { - canvas.toBlob(function(blob) { - if (blob != null) { - resolve3(blob); - } else { - reject3(new Error("`canvas.toBlob()` sent a null value in its callback")); + assertion() { + const begin = this.idx; + switch (this.popChar()) { + case "^": + return { + type: "StartAnchor", + loc: this.loc(begin) + }; + case "$": + return { type: "EndAnchor", loc: this.loc(begin) }; + // '\b' or '\B' + case "\\": + switch (this.popChar()) { + case "b": + return { + type: "WordBoundary", + loc: this.loc(begin) + }; + case "B": + return { + type: "NonWordBoundary", + loc: this.loc(begin) + }; } - }, mimeType, options3.quality); - } catch (err) { - reject3(err); + throw Error("Invalid Assertion Escape"); + // '(?=' or '(?!' + case "(": + this.consumeChar("?"); + let type3; + switch (this.popChar()) { + case "=": + type3 = "Lookahead"; + break; + case "!": + type3 = "NegativeLookahead"; + break; + } + ASSERT_EXISTS(type3); + const disjunction = this.disjunction(); + this.consumeChar(")"); + return { + type: type3, + value: disjunction, + loc: this.loc(begin) + }; } - }); - case "blob": - return b64ToBlob(b64UriToB64(getB64Uri()), mimeType); - case "base64": - return b64UriToB64(getB64Uri()); - case "base64uri": - default: - return getB64Uri(); - } - } - function CanvasRenderer(options3) { - var r2 = this; - var containerWindow = r2.cy.window(); - var document2 = containerWindow.document; - if (options3.webgl) { - CRp.CANVAS_LAYERS = r2.CANVAS_LAYERS = 4; - console.log("webgl rendering enabled"); - } - r2.data = { - canvases: new Array(CRp.CANVAS_LAYERS), - contexts: new Array(CRp.CANVAS_LAYERS), - canvasNeedsRedraw: new Array(CRp.CANVAS_LAYERS), - bufferCanvases: new Array(CRp.BUFFER_COUNT), - bufferContexts: new Array(CRp.CANVAS_LAYERS) - }; - var tapHlOffAttr = "-webkit-tap-highlight-color"; - var tapHlOffStyle = "rgba(0,0,0,0)"; - r2.data.canvasContainer = document2.createElement("div"); - var containerStyle = r2.data.canvasContainer.style; - r2.data.canvasContainer.style[tapHlOffAttr] = tapHlOffStyle; - containerStyle.position = "relative"; - containerStyle.zIndex = "0"; - containerStyle.overflow = "hidden"; - var container2 = options3.cy.container(); - container2.appendChild(r2.data.canvasContainer); - container2.style[tapHlOffAttr] = tapHlOffStyle; - var styleMap2 = { - "-webkit-user-select": "none", - "-moz-user-select": "-moz-none", - "user-select": "none", - "-webkit-tap-highlight-color": "rgba(0,0,0,0)", - "outline-style": "none" - }; - if (ms()) { - styleMap2["-ms-touch-action"] = "none"; - styleMap2["touch-action"] = "none"; - } - for (var i2 = 0; i2 < CRp.CANVAS_LAYERS; i2++) { - var canvas = r2.data.canvases[i2] = document2.createElement("canvas"); - var type3 = CRp.CANVAS_TYPES[i2]; - r2.data.contexts[i2] = canvas.getContext(type3); - if (!r2.data.contexts[i2]) { - error("Could not create canvas of type " + type3); - } - Object.keys(styleMap2).forEach(function(k2) { - canvas.style[k2] = styleMap2[k2]; - }); - canvas.style.position = "absolute"; - canvas.setAttribute("data-id", "layer" + i2); - canvas.style.zIndex = String(CRp.CANVAS_LAYERS - i2); - r2.data.canvasContainer.appendChild(canvas); - r2.data.canvasNeedsRedraw[i2] = false; - } - r2.data.topCanvas = r2.data.canvases[0]; - r2.data.canvases[CRp.NODE].setAttribute("data-id", "layer" + CRp.NODE + "-node"); - r2.data.canvases[CRp.SELECT_BOX].setAttribute("data-id", "layer" + CRp.SELECT_BOX + "-selectbox"); - r2.data.canvases[CRp.DRAG].setAttribute("data-id", "layer" + CRp.DRAG + "-drag"); - if (r2.data.canvases[CRp.WEBGL]) { - r2.data.canvases[CRp.WEBGL].setAttribute("data-id", "layer" + CRp.WEBGL + "-webgl"); - } - for (var i2 = 0; i2 < CRp.BUFFER_COUNT; i2++) { - r2.data.bufferCanvases[i2] = document2.createElement("canvas"); - r2.data.bufferContexts[i2] = r2.data.bufferCanvases[i2].getContext("2d"); - r2.data.bufferCanvases[i2].style.position = "absolute"; - r2.data.bufferCanvases[i2].setAttribute("data-id", "buffer" + i2); - r2.data.bufferCanvases[i2].style.zIndex = String(-i2 - 1); - r2.data.bufferCanvases[i2].style.visibility = "hidden"; - } - r2.pathsEnabled = true; - var emptyBb = makeBoundingBox(); - var getBoxCenter = /* @__PURE__ */ __name(function getBoxCenter2(bb) { - return { - x: (bb.x1 + bb.x2) / 2, - y: (bb.y1 + bb.y2) / 2 - }; - }, "getBoxCenter"); - var getCenterOffset = /* @__PURE__ */ __name(function getCenterOffset2(bb) { - return { - x: -bb.w / 2, - y: -bb.h / 2 - }; - }, "getCenterOffset"); - var backgroundTimestampHasChanged = /* @__PURE__ */ __name(function backgroundTimestampHasChanged2(ele) { - var _p = ele[0]._private; - var same2 = _p.oldBackgroundTimestamp === _p.backgroundTimestamp; - return !same2; - }, "backgroundTimestampHasChanged"); - var getStyleKey = /* @__PURE__ */ __name(function getStyleKey2(ele) { - return ele[0]._private.nodeKey; - }, "getStyleKey"); - var getLabelKey = /* @__PURE__ */ __name(function getLabelKey2(ele) { - return ele[0]._private.labelStyleKey; - }, "getLabelKey"); - var getSourceLabelKey = /* @__PURE__ */ __name(function getSourceLabelKey2(ele) { - return ele[0]._private.sourceLabelStyleKey; - }, "getSourceLabelKey"); - var getTargetLabelKey = /* @__PURE__ */ __name(function getTargetLabelKey2(ele) { - return ele[0]._private.targetLabelStyleKey; - }, "getTargetLabelKey"); - var drawElement = /* @__PURE__ */ __name(function drawElement2(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r2.drawElement(context, ele, bb, false, false, useEleOpacity); - }, "drawElement"); - var drawLabel4 = /* @__PURE__ */ __name(function drawLabel5(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r2.drawElementText(context, ele, bb, scaledLabelShown, "main", useEleOpacity); - }, "drawLabel"); - var drawSourceLabel = /* @__PURE__ */ __name(function drawSourceLabel2(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r2.drawElementText(context, ele, bb, scaledLabelShown, "source", useEleOpacity); - }, "drawSourceLabel"); - var drawTargetLabel = /* @__PURE__ */ __name(function drawTargetLabel2(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r2.drawElementText(context, ele, bb, scaledLabelShown, "target", useEleOpacity); - }, "drawTargetLabel"); - var getElementBox = /* @__PURE__ */ __name(function getElementBox2(ele) { - ele.boundingBox(); - return ele[0]._private.bodyBounds; - }, "getElementBox"); - var getLabelBox = /* @__PURE__ */ __name(function getLabelBox2(ele) { - ele.boundingBox(); - return ele[0]._private.labelBounds.main || emptyBb; - }, "getLabelBox"); - var getSourceLabelBox = /* @__PURE__ */ __name(function getSourceLabelBox2(ele) { - ele.boundingBox(); - return ele[0]._private.labelBounds.source || emptyBb; - }, "getSourceLabelBox"); - var getTargetLabelBox = /* @__PURE__ */ __name(function getTargetLabelBox2(ele) { - ele.boundingBox(); - return ele[0]._private.labelBounds.target || emptyBb; - }, "getTargetLabelBox"); - var isLabelVisibleAtScale = /* @__PURE__ */ __name(function isLabelVisibleAtScale2(ele, scaledLabelShown) { - return scaledLabelShown; - }, "isLabelVisibleAtScale"); - var getElementRotationPoint = /* @__PURE__ */ __name(function getElementRotationPoint2(ele) { - return getBoxCenter(getElementBox(ele)); - }, "getElementRotationPoint"); - var addTextMargin = /* @__PURE__ */ __name(function addTextMargin2(prefix, pt, ele) { - var pre = prefix ? prefix + "-" : ""; - return { - x: pt.x + ele.pstyle(pre + "text-margin-x").pfValue, - y: pt.y + ele.pstyle(pre + "text-margin-y").pfValue - }; - }, "addTextMargin"); - var getRsPt = /* @__PURE__ */ __name(function getRsPt2(ele, x5, y5) { - var rs = ele[0]._private.rscratch; - return { - x: rs[x5], - y: rs[y5] - }; - }, "getRsPt"); - var getLabelRotationPoint = /* @__PURE__ */ __name(function getLabelRotationPoint2(ele) { - return addTextMargin("", getRsPt(ele, "labelX", "labelY"), ele); - }, "getLabelRotationPoint"); - var getSourceLabelRotationPoint = /* @__PURE__ */ __name(function getSourceLabelRotationPoint2(ele) { - return addTextMargin("source", getRsPt(ele, "sourceLabelX", "sourceLabelY"), ele); - }, "getSourceLabelRotationPoint"); - var getTargetLabelRotationPoint = /* @__PURE__ */ __name(function getTargetLabelRotationPoint2(ele) { - return addTextMargin("target", getRsPt(ele, "targetLabelX", "targetLabelY"), ele); - }, "getTargetLabelRotationPoint"); - var getElementRotationOffset = /* @__PURE__ */ __name(function getElementRotationOffset2(ele) { - return getCenterOffset(getElementBox(ele)); - }, "getElementRotationOffset"); - var getSourceLabelRotationOffset = /* @__PURE__ */ __name(function getSourceLabelRotationOffset2(ele) { - return getCenterOffset(getSourceLabelBox(ele)); - }, "getSourceLabelRotationOffset"); - var getTargetLabelRotationOffset = /* @__PURE__ */ __name(function getTargetLabelRotationOffset2(ele) { - return getCenterOffset(getTargetLabelBox(ele)); - }, "getTargetLabelRotationOffset"); - var getLabelRotationOffset = /* @__PURE__ */ __name(function getLabelRotationOffset2(ele) { - var bb = getLabelBox(ele); - var p3 = getCenterOffset(getLabelBox(ele)); - if (ele.isNode()) { - switch (ele.pstyle("text-halign").value) { - case "left": - p3.x = -bb.w - (bb.leftPad || 0); - break; - case "right": - p3.x = -(bb.rightPad || 0); - break; - } - switch (ele.pstyle("text-valign").value) { - case "top": - p3.y = -bb.h - (bb.topPad || 0); - break; - case "bottom": - p3.y = -(bb.botPad || 0); - break; + return ASSERT_NEVER_REACH_HERE(); } - } - return p3; - }, "getLabelRotationOffset"); - var eleTxrCache = r2.data.eleTxrCache = new ElementTextureCache(r2, { - getKey: getStyleKey, - doesEleInvalidateKey: backgroundTimestampHasChanged, - drawElement, - getBoundingBox: getElementBox, - getRotationPoint: getElementRotationPoint, - getRotationOffset: getElementRotationOffset, - allowEdgeTxrCaching: false, - allowParentTxrCaching: false - }); - var lblTxrCache = r2.data.lblTxrCache = new ElementTextureCache(r2, { - getKey: getLabelKey, - drawElement: drawLabel4, - getBoundingBox: getLabelBox, - getRotationPoint: getLabelRotationPoint, - getRotationOffset: getLabelRotationOffset, - isVisible: isLabelVisibleAtScale - }); - var slbTxrCache = r2.data.slbTxrCache = new ElementTextureCache(r2, { - getKey: getSourceLabelKey, - drawElement: drawSourceLabel, - getBoundingBox: getSourceLabelBox, - getRotationPoint: getSourceLabelRotationPoint, - getRotationOffset: getSourceLabelRotationOffset, - isVisible: isLabelVisibleAtScale - }); - var tlbTxrCache = r2.data.tlbTxrCache = new ElementTextureCache(r2, { - getKey: getTargetLabelKey, - drawElement: drawTargetLabel, - getBoundingBox: getTargetLabelBox, - getRotationPoint: getTargetLabelRotationPoint, - getRotationOffset: getTargetLabelRotationOffset, - isVisible: isLabelVisibleAtScale - }); - var lyrTxrCache = r2.data.lyrTxrCache = new LayeredTextureCache(r2); - r2.onUpdateEleCalcs(/* @__PURE__ */ __name(function invalidateTextureCaches(willDraw, eles) { - eleTxrCache.invalidateElements(eles); - lblTxrCache.invalidateElements(eles); - slbTxrCache.invalidateElements(eles); - tlbTxrCache.invalidateElements(eles); - lyrTxrCache.invalidateElements(eles); - for (var _i = 0; _i < eles.length; _i++) { - var _p = eles[_i]._private; - _p.oldBackgroundTimestamp = _p.backgroundTimestamp; - } - }, "invalidateTextureCaches")); - var refineInLayers = /* @__PURE__ */ __name(function refineInLayers2(reqs) { - for (var i3 = 0; i3 < reqs.length; i3++) { - lyrTxrCache.enqueueElementRefinement(reqs[i3].ele); - } - }, "refineInLayers"); - eleTxrCache.onDequeue(refineInLayers); - lblTxrCache.onDequeue(refineInLayers); - slbTxrCache.onDequeue(refineInLayers); - tlbTxrCache.onDequeue(refineInLayers); - if (options3.webgl) { - r2.initWebgl(options3, { - getStyleKey, - getLabelKey, - drawElement, - drawLabel: drawLabel4, - getElementBox, - getLabelBox, - getElementRotationPoint, - getElementRotationOffset, - getLabelRotationPoint, - getLabelRotationOffset - }); - } - } - function setExtension(type3, name, registrant) { - var ext = registrant; - var overrideErr = /* @__PURE__ */ __name(function overrideErr2(field) { - warn("Can not register `" + name + "` for `" + type3 + "` since `" + field + "` already exists in the prototype and can not be overridden"); - }, "overrideErr"); - if (type3 === "core") { - if (Core.prototype[name]) { - return overrideErr(name); - } else { - Core.prototype[name] = registrant; - } - } else if (type3 === "collection") { - if (Collection.prototype[name]) { - return overrideErr(name); - } else { - Collection.prototype[name] = registrant; - } - } else if (type3 === "layout") { - var Layout2 = /* @__PURE__ */ __name(function Layout3(options3) { - this.options = options3; - registrant.call(this, options3); - if (!plainObject(this._private)) { - this._private = {}; + quantifier(isBacktracking = false) { + let range3 = void 0; + const begin = this.idx; + switch (this.popChar()) { + case "*": + range3 = { + atLeast: 0, + atMost: Infinity + }; + break; + case "+": + range3 = { + atLeast: 1, + atMost: Infinity + }; + break; + case "?": + range3 = { + atLeast: 0, + atMost: 1 + }; + break; + case "{": + const atLeast = this.integerIncludingZero(); + switch (this.popChar()) { + case "}": + range3 = { + atLeast, + atMost: atLeast + }; + break; + case ",": + let atMost; + if (this.isDigit()) { + atMost = this.integerIncludingZero(); + range3 = { + atLeast, + atMost + }; + } else { + range3 = { + atLeast, + atMost: Infinity + }; + } + this.consumeChar("}"); + break; + } + if (isBacktracking === true && range3 === void 0) { + return void 0; + } + ASSERT_EXISTS(range3); + break; + } + if (isBacktracking === true && range3 === void 0) { + return void 0; + } + if (ASSERT_EXISTS(range3)) { + if (this.peekChar(0) === "?") { + this.consumeChar("?"); + range3.greedy = false; + } else { + range3.greedy = true; + } + range3.type = "Quantifier"; + range3.loc = this.loc(begin); + return range3; + } } - this._private.cy = options3.cy; - this._private.listeners = []; - this.createEmitter(); - }, "Layout"); - var layoutProto = Layout2.prototype = Object.create(registrant.prototype); - var optLayoutFns = []; - for (var i2 = 0; i2 < optLayoutFns.length; i2++) { - var fnName = optLayoutFns[i2]; - layoutProto[fnName] = layoutProto[fnName] || function() { - return this; - }; - } - if (layoutProto.start && !layoutProto.run) { - layoutProto.run = function() { - this.start(); - return this; - }; - } else if (!layoutProto.start && layoutProto.run) { - layoutProto.start = function() { - this.run(); - return this; - }; - } - var regStop = registrant.prototype.stop; - layoutProto.stop = function() { - var opts = this.options; - if (opts && opts.animate) { - var anis = this.animations; - if (anis) { - for (var _i = 0; _i < anis.length; _i++) { - anis[_i].stop(); + atom() { + let atom2; + const begin = this.idx; + switch (this.peekChar()) { + case ".": + atom2 = this.dotAll(); + break; + case "\\": + atom2 = this.atomEscape(); + break; + case "[": + atom2 = this.characterClass(); + break; + case "(": + atom2 = this.group(); + break; + } + if (atom2 === void 0 && this.isPatternCharacter()) { + atom2 = this.patternCharacter(); + } + if (ASSERT_EXISTS(atom2)) { + atom2.loc = this.loc(begin); + if (this.isQuantifier()) { + atom2.quantifier = this.quantifier(); } + return atom2; } + return ASSERT_NEVER_REACH_HERE(); } - if (regStop) { - regStop.call(this); - } else { - this.emit("layoutstop"); + dotAll() { + this.consumeChar("."); + return { + type: "Set", + complement: true, + value: [cc("\n"), cc("\r"), cc("\u2028"), cc("\u2029")] + }; } - return this; - }; - if (!layoutProto.destroy) { - layoutProto.destroy = function() { - return this; - }; - } - layoutProto.cy = function() { - return this._private.cy; - }; - var getCy = /* @__PURE__ */ __name(function getCy2(layout6) { - return layout6._private.cy; - }, "getCy"); - var emitterOpts = { - addEventFields: /* @__PURE__ */ __name(function addEventFields4(layout6, evt) { - evt.layout = layout6; - evt.cy = getCy(layout6); - evt.target = layout6; - }, "addEventFields"), - bubble: /* @__PURE__ */ __name(function bubble3() { - return true; - }, "bubble"), - parent: /* @__PURE__ */ __name(function parent4(layout6) { - return getCy(layout6); - }, "parent") - }; - extend4(layoutProto, { - createEmitter: /* @__PURE__ */ __name(function createEmitter3() { - this._private.emitter = new Emitter3(emitterOpts, this); - return this; - }, "createEmitter"), - emitter: /* @__PURE__ */ __name(function emitter3() { - return this._private.emitter; - }, "emitter"), - on: /* @__PURE__ */ __name(function on3(evt, cb) { - this.emitter().on(evt, cb); - return this; - }, "on"), - one: /* @__PURE__ */ __name(function one4(evt, cb) { - this.emitter().one(evt, cb); - return this; - }, "one"), - once: /* @__PURE__ */ __name(function once3(evt, cb) { - this.emitter().one(evt, cb); - return this; - }, "once"), - removeListener: /* @__PURE__ */ __name(function removeListener3(evt, cb) { - this.emitter().removeListener(evt, cb); - return this; - }, "removeListener"), - removeAllListeners: /* @__PURE__ */ __name(function removeAllListeners3() { - this.emitter().removeAllListeners(); - return this; - }, "removeAllListeners"), - emit: /* @__PURE__ */ __name(function emit3(evt, params) { - this.emitter().emit(evt, params); - return this; - }, "emit") - }); - define2.eventAliasesOn(layoutProto); - ext = Layout2; - } else if (type3 === "renderer" && name !== "null" && name !== "base") { - var BaseRenderer3 = getExtension("renderer", "base"); - var bProto = BaseRenderer3.prototype; - var RegistrantRenderer = registrant; - var rProto = registrant.prototype; - var Renderer = /* @__PURE__ */ __name(function Renderer2() { - BaseRenderer3.apply(this, arguments); - RegistrantRenderer.apply(this, arguments); - }, "Renderer"); - var proto = Renderer.prototype; - for (var pName in bProto) { - var pVal = bProto[pName]; - var existsInR = rProto[pName] != null; - if (existsInR) { - return overrideErr(pName); - } - proto[pName] = pVal; - } - for (var _pName in rProto) { - proto[_pName] = rProto[_pName]; - } - bProto.clientFunctions.forEach(function(name2) { - proto[name2] = proto[name2] || function() { - error("Renderer does not implement `renderer." + name2 + "()` on its prototype"); - }; - }); - ext = Renderer; - } else if (type3 === "__proto__" || type3 === "constructor" || type3 === "prototype") { - return error(type3 + " is an illegal type to be registered, possibly lead to prototype pollutions"); - } - return setMap({ - map: extensions, - keys: [type3, name], - value: ext - }); - } - function getExtension(type3, name) { - return getMap({ - map: extensions, - keys: [type3, name] - }); - } - function setModule(type3, name, moduleType, moduleName, registrant) { - return setMap({ - map: modules, - keys: [type3, name, moduleType, moduleName], - value: registrant - }); - } - function getModule(type3, name, moduleType, moduleName) { - return getMap({ - map: modules, - keys: [type3, name, moduleType, moduleName] - }); - } - var _window, navigator2, typeofstr, typeofobj, typeoffn, typeofhtmlele, instanceStr, string, fn$6, array2, plainObject, object, number$1, integer2, htmlElement, elementOrCollection, element, collection, core2, stylesheet, event, emptyString, domElement, boundingBox, promise, ms, memoize$1, camel2dash, dash2camel, prependCamel, capitalize, number6, rgba3, rgbaNoBackRefs, hsla2, hslaNoBackRefs, hex3, hex6, ascending3, descending2, extend4, hex2tuple, hsl2tuple, rgb2tuple, colorname2tuple, color2tuple, colors, setMap, getMap, isObject_12, commonjsGlobal, freeGlobal2, _freeGlobal, freeSelf2, root3, _root, now3, now_1, reWhitespace2, _trimmedEndIndex, reTrimStart2, _baseTrim, Symbol$1, _Symbol, objectProto$5, hasOwnProperty$4, nativeObjectToString$1, symToStringTag$1, _getRawTag, objectProto$4, nativeObjectToString3, _objectToString, nullTag2, undefinedTag2, symToStringTag3, _baseGetTag, isObjectLike_1, symbolTag5, isSymbol_1, NAN2, reIsBadHex2, reIsBinary2, reIsOctal2, freeParseInt2, toNumber_1, FUNC_ERROR_TEXT$1, nativeMax6, nativeMin, debounce_1, performance$1, pnow, raf, requestAnimationFrame2, performanceNow, DEFAULT_HASH_SEED, K3, DEFAULT_HASH_SEED_ALT, hashIterableInts, hashInt, hashIntAlt, combineHashes, combineHashesArray, hashArrays, hashIntsArray, hashString, hashStrings, hashStringsArray, warningsEnabled, warnSupported, traceSupported, MAX_INT$1, trueify, falsify, zeroify, noop$1, error, warnings, warn, clone4, copy3, copyArray$1, uuid, _staticEmptyObject, staticEmptyObject, defaults$g, removeFromArray, clearArray, push, getPrefixedProperty, setPrefixedProperty, ObjectMap, Map$2, undef, ObjectSet, Set$1, Element2, defineSearch, elesfn$v, heap$1, heap, dijkstraDefaults, elesfn$u, elesfn$t, aStarDefaults, elesfn$s, floydWarshallDefaults, elesfn$r, bellmanFordDefaults, elesfn$q, sqrt2, collapse, contractUntil, elesfn$p, copyPosition, modelToRenderedPosition$1, renderedToModelPosition, array2point, min5, max5, mean, median, deg2rad, getAngleFromDisp, log22, signum, dist, sqdist, inPlaceSumNormalize, qbezierAt, qbezierPtAt, lineAt, bound, makeBoundingBox, copyBoundingBox, clearBoundingBox, shiftBoundingBox, updateBoundingBox, expandBoundingBoxByPoint, expandBoundingBox, expandBoundingBoxSides, assignBoundingBox, boundingBoxesIntersect, inBoundingBox, pointInBoundingBox, boundingBoxInBoundingBox, roundRectangleIntersectLine, inLineVicinity, inBezierVicinity, solveQuadratic, solveCubic, sqdistToQuadraticBezier, sqdistToFiniteLine, pointInsidePolygonPoints, pointInsidePolygon, pointInsideRoundPolygon, joinLines, expandPolygon, intersectLineEllipse, checkInEllipse, intersectLineCircle, midOfThree, finiteLinesIntersect, polygonIntersectLine, roundPolygonIntersectLine, shortenIntersection, generateUnitNgonPointsFitToSquare, fitPolygonToSquare, generateUnitNgonPoints, getRoundRectangleRadius, getRoundPolygonRadius, getCutRectangleCornerLength, bezierPtsToQuadCoeff, getBarrelCurveConstants, pageRankDefaults, elesfn$o, defaults$f, elesfn$n, defaults$e, elesfn$m, defaults$d, elesfn$l, defaults$c, setOptions$3, getSimilarity$1, addLoops, normalize2, mmult, expand, inflate, hasConverged, assign$2, isDuplicate, removeDuplicates, markovClustering, markovClustering$1, identity$1, absDiff, addAbsDiff, addSquaredDiff, sqrt3, maxAbsDiff, getDistance, distances, defaults$b, setOptions$2, getDist, randomCentroids, classify, buildCluster, haveValuesConverged, haveMatricesConverged, seenBefore, randomMedoids, findCost, kMeans, kMedoids, updateCentroids, updateMembership, assign$1, fuzzyCMeans, kClustering, defaults$a, linkageAliases, setOptions$1, mergeClosest, getAllChildren, buildDendrogram, buildClustersFromTree, hierarchicalClustering, hierarchicalClustering$1, defaults$9, setOptions6, getSimilarity2, getPreference, findExemplars, assignClusters, assign4, affinityPropagation, affinityPropagation$1, hierholzerDefaults, elesfn$k, hopcroftTarjanBiconnected, hopcroftTarjanBiconnected$1, tarjanStronglyConnected, tarjanStronglyConnected$1, elesfn$j, STATE_PENDING, STATE_FULFILLED, STATE_REJECTED, api, deliver, execute, execute_handlers, resolver, resolve, Promise$1, Animation, anifn, define$3, isArray2, isArray_1, reIsDeepProp2, reIsPlainProp2, _isKey, asyncTag2, funcTag4, genTag3, proxyTag2, isFunction_1, coreJsData2, _coreJsData, maskSrcKey2, _isMasked, funcProto$1, funcToString$1, _toSource, reRegExpChar2, reIsHostCtor2, funcProto4, objectProto$3, funcToString4, hasOwnProperty$3, reIsNative2, _baseIsNative, _getValue, _getNative, nativeCreate2, _nativeCreate, _hashClear, _hashDelete, HASH_UNDEFINED$1, objectProto$2, hasOwnProperty$2, _hashGet, objectProto$1, hasOwnProperty$1, _hashHas, HASH_UNDEFINED4, _hashSet, _Hash, _listCacheClear, eq_1, _assocIndexOf, arrayProto2, splice2, _listCacheDelete, _listCacheGet, _listCacheHas, _listCacheSet, _ListCache, Map$1, _Map, _mapCacheClear, _isKeyable, _getMapData, _mapCacheDelete, _mapCacheGet, _mapCacheHas, _mapCacheSet, _MapCache, FUNC_ERROR_TEXT3, memoize_1, MAX_MEMOIZE_SIZE2, _memoizeCapped, rePropName2, reEscapeChar2, stringToPath2, _stringToPath, _arrayMap, INFINITY$1, symbolProto4, symbolToString2, _baseToString, toString_1, _castPath, INFINITY5, _toKey, _baseGet, get_1, defineProperty2, _defineProperty, _baseAssignValue, objectProto22, hasOwnProperty19, _assignValue, MAX_SAFE_INTEGER3, reIsUint2, _isIndex, _baseSet, set_1, _copyArray, toPath_1, define$2, define$1, define2, elesfn$i, elesfn$h, tokens, newQuery, Type3, stateSelectors, lookup, stateSelectorMatches, stateSelectorRegex, cleanMetaChars, replaceLastQuery, exprs, consumeExpr, consumeWhitespace, parse2, toString4, parse$1, valCmp, boolCmp, existCmp, data$1, meta, match, matches$1, filter3, matches31, matching, Selector, selfn, elesfn$g, cache, elesfn$f, fn$5, elesfn$e, data3, elesfn$d, fn$4, elesfn$c, beforePositionSet, positionDef, position2, fn$3, elesfn$b, noninf, updateBounds, updateBoundsFromBox, prefixedProperty, updateBoundsFromArrow, updateBoundsFromLabel, updateBoundsFromOutline, boundingBoxImpl, getKey, getBoundingBoxPosKey, cachedBoundingBoxImpl, defBbOpts, defBbOptsKey, filledBbOpts, bounds3, fn$2, elesfn$a, defineDimFns, widthHeight, ifEdge, ifEdgeRenderedPosition, ifEdgeRenderedPositions, controlPoints2, segmentPoints, sourceEndpoint, targetEndpoint, midpoint, pts, renderedName, edgePoints, dimensions, Event, eventRegex, universalNamespace, defaults$8, defaultsKeys, emptyOpts, p2, forEachEvent, makeEventObj, forEachEventObj, emitterOptions$1, argSelector$1, elesfn$9, elesfn$8, fn$1, elesfn$7, zIndexSort, elesfn$6, defineSymbolIterator, getLayoutDimensionOptions, elesfn$5, elesfn$4, eleTakesUpSpace, eleInteractive, parentInteractive, eleVisible, edgeVisibleViaNode, elesfn$3, elesfn$2, defineDagExtremity, defineDagOneHop, defineDagAllHops, Collection, elesfn$1, corefn$9, generateSpringRK4, cubicBezier, easings, corefn$8, emitterOptions, argSelector2, elesfn, corefn$7, corefn$6, corefn$5, rendererDefaults, corefn$4, corefn$3, styfn$8, TRUE, FALSE, styfn$7, styfn$6, styfn$5, styfn$4, styfn$3, styfn$2, styfn$1, Style2, styfn, corefn$2, defaultSelectionType, corefn$1, fn2, Core, corefn, defaults$7, deprecatedOptionDefaults, getInfo, setInfo, defaults$6, defaults$5, DEBUG, defaults$4, createLayoutInfo, findLCA, findLCA_aux, printLayoutInfo, randomizePositions, getScaleInBoundsFn, refreshPositions, step, calculateNodeForces, randomDistance, nodeRepulsion2, nodesOverlap, findClippingPoint, calculateEdgeForces, calculateGravityForces, propagateForces, updatePositions, limitForce, updateAncestryBoundaries, separateComponents, defaults$3, defaults$2, defaults$1, defaults3, layout4, noop4, throwImgErr, BRp$f, BRp$e, BRp$d, x3, y3, v1, v2, sinA, sinA90, radDirection, drawDirection, angle, halfAngle, cRadius, lenOut, radius, limit, startX, startY, stopX, stopY, lastPoint, asVec, invertVec, calcCornerArc, BRp$c, BRp$b, BRp$a, BRp$9, lineAngleFromDelta, lineAngle, bezierAngle, BRp$8, TOO_SMALL_CUT_RECT, warnedCutRect, BRp$7, BRp$6, BRp$5, BRp$4, BRp$3, BRp$2, BRp$1, beforeRenderCallbacks, BaseRenderer, BR, BRp, fullFpsTime, defs, ElementTextureCacheLookup, minTxrH, txrStepH, minLvl$1, maxLvl$1, maxZoom$1, eleTxrSpacing, defTxrWidth, maxTxrW, maxTxrH, minUtility, maxFullness, maxFullnessChecks, deqCost$1, deqAvgCost$1, deqNoDrawCost$1, deqFastCost$1, deqRedrawThreshold$1, maxDeqSize$1, getTxrReasons, initDefaults, ElementTextureCache, ETCp, defNumLayers, minLvl, maxLvl, maxZoom2, deqRedrawThreshold, refineEleDebounceTime, deqCost, deqAvgCost, deqNoDrawCost, deqFastCost, maxDeqSize, invalidThreshold, maxLayerArea, maxLayerDim, useHighQualityEleTxrReqs, LayeredTextureCache, LTCp, layerIdPool, MAX_INT, CRp$b, impl, CRp$a, getZeroRotation, getLabelRotation, getSourceLabelRotation, getTargetLabelRotation, getOpacity, getTextOpacity, CRp$9, drawEdgeOverlayUnderlay, CRp$8, CRp$7, CRp$6, drawNodeOverlayUnderlay, CRp$5, motionBlurDelay, fpsHeight, ARRAY_TYPE, RENDER_TARGET, renderDefaults, Atlas, AtlasCollection, AtlasManager, TEXTURE, EDGE_STRAIGHT, EDGE_CURVE_SEGMENT, EDGE_ARROW, ElementDrawingWebGL, OverlayUnderlayRenderer, CRp$4, CRp$3, sin0, cos0, sin2, cos2, ellipseStepSize, i2, CRp$2, CRp$1, CR, CRp, pathsImpld, renderer5, incExts, extensions, modules, extension2, Stylesheet, sheetfn, version, cytoscape2; - var init_cytoscape_esm = __esm({ - "../../node_modules/.pnpm/cytoscape@3.31.0/node_modules/cytoscape/dist/cytoscape.esm.mjs"() { - "use strict"; - __name(_typeof, "_typeof"); - __name(_classCallCheck, "_classCallCheck"); - __name(_defineProperties, "_defineProperties"); - __name(_createClass, "_createClass"); - __name(_defineProperty$1, "_defineProperty$1"); - __name(_slicedToArray, "_slicedToArray"); - __name(_toConsumableArray, "_toConsumableArray"); - __name(_arrayWithoutHoles, "_arrayWithoutHoles"); - __name(_arrayWithHoles, "_arrayWithHoles"); - __name(_iterableToArray, "_iterableToArray"); - __name(_iterableToArrayLimit, "_iterableToArrayLimit"); - __name(_unsupportedIterableToArray, "_unsupportedIterableToArray"); - __name(_arrayLikeToArray, "_arrayLikeToArray"); - __name(_nonIterableSpread, "_nonIterableSpread"); - __name(_nonIterableRest, "_nonIterableRest"); - __name(_createForOfIteratorHelper, "_createForOfIteratorHelper"); - _window = typeof window === "undefined" ? null : window; - navigator2 = _window ? _window.navigator : null; - _window ? _window.document : null; - typeofstr = _typeof(""); - typeofobj = _typeof({}); - typeoffn = _typeof(function() { - }); - typeofhtmlele = typeof HTMLElement === "undefined" ? "undefined" : _typeof(HTMLElement); - instanceStr = /* @__PURE__ */ __name(function instanceStr2(obj) { - return obj && obj.instanceString && fn$6(obj.instanceString) ? obj.instanceString() : null; - }, "instanceStr"); - string = /* @__PURE__ */ __name(function string2(obj) { - return obj != null && _typeof(obj) == typeofstr; - }, "string"); - fn$6 = /* @__PURE__ */ __name(function fn(obj) { - return obj != null && _typeof(obj) === typeoffn; - }, "fn"); - array2 = /* @__PURE__ */ __name(function array3(obj) { - return !elementOrCollection(obj) && (Array.isArray ? Array.isArray(obj) : obj != null && obj instanceof Array); - }, "array"); - plainObject = /* @__PURE__ */ __name(function plainObject2(obj) { - return obj != null && _typeof(obj) === typeofobj && !array2(obj) && obj.constructor === Object; - }, "plainObject"); - object = /* @__PURE__ */ __name(function object2(obj) { - return obj != null && _typeof(obj) === typeofobj; - }, "object"); - number$1 = /* @__PURE__ */ __name(function number5(obj) { - return obj != null && _typeof(obj) === _typeof(1) && !isNaN(obj); - }, "number"); - integer2 = /* @__PURE__ */ __name(function integer3(obj) { - return number$1(obj) && Math.floor(obj) === obj; - }, "integer"); - htmlElement = /* @__PURE__ */ __name(function htmlElement2(obj) { - if ("undefined" === typeofhtmlele) { - return void 0; - } else { - return null != obj && obj instanceof HTMLElement; - } - }, "htmlElement"); - elementOrCollection = /* @__PURE__ */ __name(function elementOrCollection2(obj) { - return element(obj) || collection(obj); - }, "elementOrCollection"); - element = /* @__PURE__ */ __name(function element2(obj) { - return instanceStr(obj) === "collection" && obj._private.single; - }, "element"); - collection = /* @__PURE__ */ __name(function collection2(obj) { - return instanceStr(obj) === "collection" && !obj._private.single; - }, "collection"); - core2 = /* @__PURE__ */ __name(function core3(obj) { - return instanceStr(obj) === "core"; - }, "core"); - stylesheet = /* @__PURE__ */ __name(function stylesheet2(obj) { - return instanceStr(obj) === "stylesheet"; - }, "stylesheet"); - event = /* @__PURE__ */ __name(function event2(obj) { - return instanceStr(obj) === "event"; - }, "event"); - emptyString = /* @__PURE__ */ __name(function emptyString2(obj) { - if (obj === void 0 || obj === null) { - return true; - } else if (obj === "" || obj.match(/^\s+$/)) { - return true; - } - return false; - }, "emptyString"); - domElement = /* @__PURE__ */ __name(function domElement2(obj) { - if (typeof HTMLElement === "undefined") { - return false; - } else { - return obj instanceof HTMLElement; + atomEscape() { + this.consumeChar("\\"); + switch (this.peekChar()) { + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + return this.decimalEscapeAtom(); + case "d": + case "D": + case "s": + case "S": + case "w": + case "W": + return this.characterClassEscape(); + case "f": + case "n": + case "r": + case "t": + case "v": + return this.controlEscapeAtom(); + case "c": + return this.controlLetterEscapeAtom(); + case "0": + return this.nulCharacterAtom(); + case "x": + return this.hexEscapeSequenceAtom(); + case "u": + return this.regExpUnicodeEscapeSequenceAtom(); + default: + return this.identityEscapeAtom(); + } } - }, "domElement"); - boundingBox = /* @__PURE__ */ __name(function boundingBox2(obj) { - return plainObject(obj) && number$1(obj.x1) && number$1(obj.x2) && number$1(obj.y1) && number$1(obj.y2); - }, "boundingBox"); - promise = /* @__PURE__ */ __name(function promise2(obj) { - return object(obj) && fn$6(obj.then); - }, "promise"); - ms = /* @__PURE__ */ __name(function ms2() { - return navigator2 && navigator2.userAgent.match(/msie|trident|edge/i); - }, "ms"); - memoize$1 = /* @__PURE__ */ __name(function memoize2(fn3, keyFn) { - if (!keyFn) { - keyFn = /* @__PURE__ */ __name(function keyFn2() { - if (arguments.length === 1) { - return arguments[0]; - } else if (arguments.length === 0) { - return "undefined"; - } - var args = []; - for (var i2 = 0; i2 < arguments.length; i2++) { - args.push(arguments[i2]); - } - return args.join("$"); - }, "keyFn"); + decimalEscapeAtom() { + const value2 = this.positiveInteger(); + return { type: "GroupBackReference", value: value2 }; } - var memoizedFn = /* @__PURE__ */ __name(function memoizedFn2() { - var self2 = this; - var args = arguments; - var ret; - var k2 = keyFn.apply(self2, args); - var cache3 = memoizedFn2.cache; - if (!(ret = cache3[k2])) { - ret = cache3[k2] = fn3.apply(self2, args); + characterClassEscape() { + let set5; + let complement = false; + switch (this.popChar()) { + case "d": + set5 = digitsCharCodes; + break; + case "D": + set5 = digitsCharCodes; + complement = true; + break; + case "s": + set5 = whitespaceCodes; + break; + case "S": + set5 = whitespaceCodes; + complement = true; + break; + case "w": + set5 = wordCharCodes; + break; + case "W": + set5 = wordCharCodes; + complement = true; + break; } - return ret; - }, "memoizedFn"); - memoizedFn.cache = {}; - return memoizedFn; - }, "memoize"); - camel2dash = memoize$1(function(str2) { - return str2.replace(/([A-Z])/g, function(v3) { - return "-" + v3.toLowerCase(); - }); - }); - dash2camel = memoize$1(function(str2) { - return str2.replace(/(-\w)/g, function(v3) { - return v3[1].toUpperCase(); - }); - }); - prependCamel = memoize$1(function(prefix, str2) { - return prefix + str2[0].toUpperCase() + str2.substring(1); - }, function(prefix, str2) { - return prefix + "$" + str2; - }); - capitalize = /* @__PURE__ */ __name(function capitalize2(str2) { - if (emptyString(str2)) { - return str2; - } - return str2.charAt(0).toUpperCase() + str2.substring(1); - }, "capitalize"); - number6 = "(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))"; - rgba3 = "rgb[a]?\\((" + number6 + "[%]?)\\s*,\\s*(" + number6 + "[%]?)\\s*,\\s*(" + number6 + "[%]?)(?:\\s*,\\s*(" + number6 + "))?\\)"; - rgbaNoBackRefs = "rgb[a]?\\((?:" + number6 + "[%]?)\\s*,\\s*(?:" + number6 + "[%]?)\\s*,\\s*(?:" + number6 + "[%]?)(?:\\s*,\\s*(?:" + number6 + "))?\\)"; - hsla2 = "hsl[a]?\\((" + number6 + ")\\s*,\\s*(" + number6 + "[%])\\s*,\\s*(" + number6 + "[%])(?:\\s*,\\s*(" + number6 + "))?\\)"; - hslaNoBackRefs = "hsl[a]?\\((?:" + number6 + ")\\s*,\\s*(?:" + number6 + "[%])\\s*,\\s*(?:" + number6 + "[%])(?:\\s*,\\s*(?:" + number6 + "))?\\)"; - hex3 = "\\#[0-9a-fA-F]{3}"; - hex6 = "\\#[0-9a-fA-F]{6}"; - ascending3 = /* @__PURE__ */ __name(function ascending4(a2, b2) { - if (a2 < b2) { - return -1; - } else if (a2 > b2) { - return 1; - } else { - return 0; + if (ASSERT_EXISTS(set5)) { + return { type: "Set", value: set5, complement }; + } + return ASSERT_NEVER_REACH_HERE(); } - }, "ascending"); - descending2 = /* @__PURE__ */ __name(function descending3(a2, b2) { - return -1 * ascending3(a2, b2); - }, "descending"); - extend4 = Object.assign != null ? Object.assign.bind(Object) : function(tgt) { - var args = arguments; - for (var i2 = 1; i2 < args.length; i2++) { - var obj = args[i2]; - if (obj == null) { - continue; + controlEscapeAtom() { + let escapeCode; + switch (this.popChar()) { + case "f": + escapeCode = cc("\f"); + break; + case "n": + escapeCode = cc("\n"); + break; + case "r": + escapeCode = cc("\r"); + break; + case "t": + escapeCode = cc(" "); + break; + case "v": + escapeCode = cc("\v"); + break; } - var keys3 = Object.keys(obj); - for (var j2 = 0; j2 < keys3.length; j2++) { - var k2 = keys3[j2]; - tgt[k2] = obj[k2]; + if (ASSERT_EXISTS(escapeCode)) { + return { type: "Character", value: escapeCode }; } + return ASSERT_NEVER_REACH_HERE(); } - return tgt; - }; - hex2tuple = /* @__PURE__ */ __name(function hex2tuple2(hex2) { - if (!(hex2.length === 4 || hex2.length === 7) || hex2[0] !== "#") { - return; + controlLetterEscapeAtom() { + this.consumeChar("c"); + const letter = this.popChar(); + if (/[a-zA-Z]/.test(letter) === false) { + throw Error("Invalid "); + } + const letterCode = letter.toUpperCase().charCodeAt(0) - 64; + return { type: "Character", value: letterCode }; } - var shortHex = hex2.length === 4; - var r2, g2, b2; - var base = 16; - if (shortHex) { - r2 = parseInt(hex2[1] + hex2[1], base); - g2 = parseInt(hex2[2] + hex2[2], base); - b2 = parseInt(hex2[3] + hex2[3], base); - } else { - r2 = parseInt(hex2[1] + hex2[2], base); - g2 = parseInt(hex2[3] + hex2[4], base); - b2 = parseInt(hex2[5] + hex2[6], base); + nulCharacterAtom() { + this.consumeChar("0"); + return { type: "Character", value: cc("\0") }; } - return [r2, g2, b2]; - }, "hex2tuple"); - hsl2tuple = /* @__PURE__ */ __name(function hsl2tuple2(hsl2) { - var ret; - var h2, s2, l2, a2, r2, g2, b2; - function hue2rgb(p4, q3, t4) { - if (t4 < 0) t4 += 1; - if (t4 > 1) t4 -= 1; - if (t4 < 1 / 6) return p4 + (q3 - p4) * 6 * t4; - if (t4 < 1 / 2) return q3; - if (t4 < 2 / 3) return p4 + (q3 - p4) * (2 / 3 - t4) * 6; - return p4; + hexEscapeSequenceAtom() { + this.consumeChar("x"); + return this.parseHexDigits(2); } - __name(hue2rgb, "hue2rgb"); - var m2 = new RegExp("^" + hsla2 + "$").exec(hsl2); - if (m2) { - h2 = parseInt(m2[1]); - if (h2 < 0) { - h2 = (360 - -1 * h2 % 360) % 360; - } else if (h2 > 360) { - h2 = h2 % 360; - } - h2 /= 360; - s2 = parseFloat(m2[2]); - if (s2 < 0 || s2 > 100) { - return; + regExpUnicodeEscapeSequenceAtom() { + this.consumeChar("u"); + return this.parseHexDigits(4); + } + identityEscapeAtom() { + const escapedChar = this.popChar(); + return { type: "Character", value: cc(escapedChar) }; + } + classPatternCharacterAtom() { + switch (this.peekChar()) { + // istanbul ignore next + case "\n": + // istanbul ignore next + case "\r": + // istanbul ignore next + case "\u2028": + // istanbul ignore next + case "\u2029": + // istanbul ignore next + case "\\": + // istanbul ignore next + case "]": + throw Error("TBD"); + default: + const nextChar = this.popChar(); + return { type: "Character", value: cc(nextChar) }; } - s2 = s2 / 100; - l2 = parseFloat(m2[3]); - if (l2 < 0 || l2 > 100) { - return; + } + characterClass() { + const set5 = []; + let complement = false; + this.consumeChar("["); + if (this.peekChar(0) === "^") { + this.consumeChar("^"); + complement = true; } - l2 = l2 / 100; - a2 = m2[4]; - if (a2 !== void 0) { - a2 = parseFloat(a2); - if (a2 < 0 || a2 > 1) { - return; + while (this.isClassAtom()) { + const from2 = this.classAtom(); + const isFromSingleChar = from2.type === "Character"; + if (isCharacter(from2) && this.isRangeDash()) { + this.consumeChar("-"); + const to = this.classAtom(); + const isToSingleChar = to.type === "Character"; + if (isCharacter(to)) { + if (to.value < from2.value) { + throw Error("Range out of order in character class"); + } + set5.push({ from: from2.value, to: to.value }); + } else { + insertToSet(from2.value, set5); + set5.push(cc("-")); + insertToSet(to.value, set5); + } + } else { + insertToSet(from2.value, set5); } } - if (s2 === 0) { - r2 = g2 = b2 = Math.round(l2 * 255); - } else { - var q2 = l2 < 0.5 ? l2 * (1 + s2) : l2 + s2 - l2 * s2; - var p3 = 2 * l2 - q2; - r2 = Math.round(255 * hue2rgb(p3, q2, h2 + 1 / 3)); - g2 = Math.round(255 * hue2rgb(p3, q2, h2)); - b2 = Math.round(255 * hue2rgb(p3, q2, h2 - 1 / 3)); - } - ret = [r2, g2, b2, a2]; + this.consumeChar("]"); + return { type: "Set", complement, value: set5 }; } - return ret; - }, "hsl2tuple"); - rgb2tuple = /* @__PURE__ */ __name(function rgb2tuple2(rgb2) { - var ret; - var m2 = new RegExp("^" + rgba3 + "$").exec(rgb2); - if (m2) { - ret = []; - var isPct = []; - for (var i2 = 1; i2 <= 3; i2++) { - var channel2 = m2[i2]; - if (channel2[channel2.length - 1] === "%") { - isPct[i2] = true; - } - channel2 = parseFloat(channel2); - if (isPct[i2]) { - channel2 = channel2 / 100 * 255; - } - if (channel2 < 0 || channel2 > 255) { - return; - } - ret.push(Math.floor(channel2)); - } - var atLeastOneIsPct = isPct[1] || isPct[2] || isPct[3]; - var allArePct = isPct[1] && isPct[2] && isPct[3]; - if (atLeastOneIsPct && !allArePct) { - return; + classAtom() { + switch (this.peekChar()) { + // istanbul ignore next + case "]": + // istanbul ignore next + case "\n": + // istanbul ignore next + case "\r": + // istanbul ignore next + case "\u2028": + // istanbul ignore next + case "\u2029": + throw Error("TBD"); + case "\\": + return this.classEscape(); + default: + return this.classPatternCharacterAtom(); } - var alpha = m2[4]; - if (alpha !== void 0) { - alpha = parseFloat(alpha); - if (alpha < 0 || alpha > 1) { - return; - } - ret.push(alpha); + } + classEscape() { + this.consumeChar("\\"); + switch (this.peekChar()) { + // Matches a backspace. + // (Not to be confused with \b word boundary outside characterClass) + case "b": + this.consumeChar("b"); + return { type: "Character", value: cc("\b") }; + case "d": + case "D": + case "s": + case "S": + case "w": + case "W": + return this.characterClassEscape(); + case "f": + case "n": + case "r": + case "t": + case "v": + return this.controlEscapeAtom(); + case "c": + return this.controlLetterEscapeAtom(); + case "0": + return this.nulCharacterAtom(); + case "x": + return this.hexEscapeSequenceAtom(); + case "u": + return this.regExpUnicodeEscapeSequenceAtom(); + default: + return this.identityEscapeAtom(); } } - return ret; - }, "rgb2tuple"); - colorname2tuple = /* @__PURE__ */ __name(function colorname2tuple2(color2) { - return colors[color2.toLowerCase()]; - }, "colorname2tuple"); - color2tuple = /* @__PURE__ */ __name(function color2tuple2(color2) { - return (array2(color2) ? color2 : null) || colorname2tuple(color2) || hex2tuple(color2) || rgb2tuple(color2) || hsl2tuple(color2); - }, "color2tuple"); - colors = { - // special colour names - transparent: [0, 0, 0, 0], - // NB alpha === 0 - // regular colours - aliceblue: [240, 248, 255], - antiquewhite: [250, 235, 215], - aqua: [0, 255, 255], - aquamarine: [127, 255, 212], - azure: [240, 255, 255], - beige: [245, 245, 220], - bisque: [255, 228, 196], - black: [0, 0, 0], - blanchedalmond: [255, 235, 205], - blue: [0, 0, 255], - blueviolet: [138, 43, 226], - brown: [165, 42, 42], - burlywood: [222, 184, 135], - cadetblue: [95, 158, 160], - chartreuse: [127, 255, 0], - chocolate: [210, 105, 30], - coral: [255, 127, 80], - cornflowerblue: [100, 149, 237], - cornsilk: [255, 248, 220], - crimson: [220, 20, 60], - cyan: [0, 255, 255], - darkblue: [0, 0, 139], - darkcyan: [0, 139, 139], - darkgoldenrod: [184, 134, 11], - darkgray: [169, 169, 169], - darkgreen: [0, 100, 0], - darkgrey: [169, 169, 169], - darkkhaki: [189, 183, 107], - darkmagenta: [139, 0, 139], - darkolivegreen: [85, 107, 47], - darkorange: [255, 140, 0], - darkorchid: [153, 50, 204], - darkred: [139, 0, 0], - darksalmon: [233, 150, 122], - darkseagreen: [143, 188, 143], - darkslateblue: [72, 61, 139], - darkslategray: [47, 79, 79], - darkslategrey: [47, 79, 79], - darkturquoise: [0, 206, 209], - darkviolet: [148, 0, 211], - deeppink: [255, 20, 147], - deepskyblue: [0, 191, 255], - dimgray: [105, 105, 105], - dimgrey: [105, 105, 105], - dodgerblue: [30, 144, 255], - firebrick: [178, 34, 34], - floralwhite: [255, 250, 240], - forestgreen: [34, 139, 34], - fuchsia: [255, 0, 255], - gainsboro: [220, 220, 220], - ghostwhite: [248, 248, 255], - gold: [255, 215, 0], - goldenrod: [218, 165, 32], - gray: [128, 128, 128], - grey: [128, 128, 128], - green: [0, 128, 0], - greenyellow: [173, 255, 47], - honeydew: [240, 255, 240], - hotpink: [255, 105, 180], - indianred: [205, 92, 92], - indigo: [75, 0, 130], - ivory: [255, 255, 240], - khaki: [240, 230, 140], - lavender: [230, 230, 250], - lavenderblush: [255, 240, 245], - lawngreen: [124, 252, 0], - lemonchiffon: [255, 250, 205], - lightblue: [173, 216, 230], - lightcoral: [240, 128, 128], - lightcyan: [224, 255, 255], - lightgoldenrodyellow: [250, 250, 210], - lightgray: [211, 211, 211], - lightgreen: [144, 238, 144], - lightgrey: [211, 211, 211], - lightpink: [255, 182, 193], - lightsalmon: [255, 160, 122], - lightseagreen: [32, 178, 170], - lightskyblue: [135, 206, 250], - lightslategray: [119, 136, 153], - lightslategrey: [119, 136, 153], - lightsteelblue: [176, 196, 222], - lightyellow: [255, 255, 224], - lime: [0, 255, 0], - limegreen: [50, 205, 50], - linen: [250, 240, 230], - magenta: [255, 0, 255], - maroon: [128, 0, 0], - mediumaquamarine: [102, 205, 170], - mediumblue: [0, 0, 205], - mediumorchid: [186, 85, 211], - mediumpurple: [147, 112, 219], - mediumseagreen: [60, 179, 113], - mediumslateblue: [123, 104, 238], - mediumspringgreen: [0, 250, 154], - mediumturquoise: [72, 209, 204], - mediumvioletred: [199, 21, 133], - midnightblue: [25, 25, 112], - mintcream: [245, 255, 250], - mistyrose: [255, 228, 225], - moccasin: [255, 228, 181], - navajowhite: [255, 222, 173], - navy: [0, 0, 128], - oldlace: [253, 245, 230], - olive: [128, 128, 0], - olivedrab: [107, 142, 35], - orange: [255, 165, 0], - orangered: [255, 69, 0], - orchid: [218, 112, 214], - palegoldenrod: [238, 232, 170], - palegreen: [152, 251, 152], - paleturquoise: [175, 238, 238], - palevioletred: [219, 112, 147], - papayawhip: [255, 239, 213], - peachpuff: [255, 218, 185], - peru: [205, 133, 63], - pink: [255, 192, 203], - plum: [221, 160, 221], - powderblue: [176, 224, 230], - purple: [128, 0, 128], - red: [255, 0, 0], - rosybrown: [188, 143, 143], - royalblue: [65, 105, 225], - saddlebrown: [139, 69, 19], - salmon: [250, 128, 114], - sandybrown: [244, 164, 96], - seagreen: [46, 139, 87], - seashell: [255, 245, 238], - sienna: [160, 82, 45], - silver: [192, 192, 192], - skyblue: [135, 206, 235], - slateblue: [106, 90, 205], - slategray: [112, 128, 144], - slategrey: [112, 128, 144], - snow: [255, 250, 250], - springgreen: [0, 255, 127], - steelblue: [70, 130, 180], - tan: [210, 180, 140], - teal: [0, 128, 128], - thistle: [216, 191, 216], - tomato: [255, 99, 71], - turquoise: [64, 224, 208], - violet: [238, 130, 238], - wheat: [245, 222, 179], - white: [255, 255, 255], - whitesmoke: [245, 245, 245], - yellow: [255, 255, 0], - yellowgreen: [154, 205, 50] - }; - setMap = /* @__PURE__ */ __name(function setMap2(options3) { - var obj = options3.map; - var keys3 = options3.keys; - var l2 = keys3.length; - for (var i2 = 0; i2 < l2; i2++) { - var key = keys3[i2]; - if (plainObject(key)) { - throw Error("Tried to set map with object key"); + group() { + let capturing = true; + this.consumeChar("("); + switch (this.peekChar(0)) { + case "?": + this.consumeChar("?"); + this.consumeChar(":"); + capturing = false; + break; + default: + this.groupIdx++; + break; } - if (i2 < keys3.length - 1) { - if (obj[key] == null) { - obj[key] = {}; - } - obj = obj[key]; - } else { - obj[key] = options3.value; + const value2 = this.disjunction(); + this.consumeChar(")"); + const groupAst = { + type: "Group", + capturing, + value: value2 + }; + if (capturing) { + groupAst["idx"] = this.groupIdx; } + return groupAst; } - }, "setMap"); - getMap = /* @__PURE__ */ __name(function getMap2(options3) { - var obj = options3.map; - var keys3 = options3.keys; - var l2 = keys3.length; - for (var i2 = 0; i2 < l2; i2++) { - var key = keys3[i2]; - if (plainObject(key)) { - throw Error("Tried to get map with object key"); + positiveInteger() { + let number7 = this.popChar(); + if (decimalPatternNoZero.test(number7) === false) { + throw Error("Expecting a positive integer"); } - obj = obj[key]; - if (obj == null) { - return obj; + while (decimalPattern.test(this.peekChar(0))) { + number7 += this.popChar(); } + return parseInt(number7, 10); } - return obj; - }, "getMap"); - __name(isObject3, "isObject"); - isObject_12 = isObject3; - commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; - __name(createCommonjsModule, "createCommonjsModule"); - freeGlobal2 = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - _freeGlobal = freeGlobal2; - freeSelf2 = typeof self == "object" && self && self.Object === Object && self; - root3 = _freeGlobal || freeSelf2 || Function("return this")(); - _root = root3; - now3 = /* @__PURE__ */ __name(function() { - return _root.Date.now(); - }, "now"); - now_1 = now3; - reWhitespace2 = /\s/; - __name(trimmedEndIndex2, "trimmedEndIndex"); - _trimmedEndIndex = trimmedEndIndex2; - reTrimStart2 = /^\s+/; - __name(baseTrim2, "baseTrim"); - _baseTrim = baseTrim2; - Symbol$1 = _root.Symbol; - _Symbol = Symbol$1; - objectProto$5 = Object.prototype; - hasOwnProperty$4 = objectProto$5.hasOwnProperty; - nativeObjectToString$1 = objectProto$5.toString; - symToStringTag$1 = _Symbol ? _Symbol.toStringTag : void 0; - __name(getRawTag2, "getRawTag"); - _getRawTag = getRawTag2; - objectProto$4 = Object.prototype; - nativeObjectToString3 = objectProto$4.toString; - __name(objectToString2, "objectToString"); - _objectToString = objectToString2; - nullTag2 = "[object Null]"; - undefinedTag2 = "[object Undefined]"; - symToStringTag3 = _Symbol ? _Symbol.toStringTag : void 0; - __name(baseGetTag2, "baseGetTag"); - _baseGetTag = baseGetTag2; - __name(isObjectLike2, "isObjectLike"); - isObjectLike_1 = isObjectLike2; - symbolTag5 = "[object Symbol]"; - __name(isSymbol2, "isSymbol"); - isSymbol_1 = isSymbol2; - NAN2 = 0 / 0; - reIsBadHex2 = /^[-+]0x[0-9a-f]+$/i; - reIsBinary2 = /^0b[01]+$/i; - reIsOctal2 = /^0o[0-7]+$/i; - freeParseInt2 = parseInt; - __name(toNumber2, "toNumber"); - toNumber_1 = toNumber2; - FUNC_ERROR_TEXT$1 = "Expected a function"; - nativeMax6 = Math.max; - nativeMin = Math.min; - __name(debounce, "debounce"); - debounce_1 = debounce; - performance$1 = _window ? _window.performance : null; - pnow = performance$1 && performance$1.now ? function() { - return performance$1.now(); - } : function() { - return Date.now(); - }; - raf = function() { - if (_window) { - if (_window.requestAnimationFrame) { - return function(fn3) { - _window.requestAnimationFrame(fn3); - }; - } else if (_window.mozRequestAnimationFrame) { - return function(fn3) { - _window.mozRequestAnimationFrame(fn3); - }; - } else if (_window.webkitRequestAnimationFrame) { - return function(fn3) { - _window.webkitRequestAnimationFrame(fn3); - }; - } else if (_window.msRequestAnimationFrame) { - return function(fn3) { - _window.msRequestAnimationFrame(fn3); - }; + integerIncludingZero() { + let number7 = this.popChar(); + if (decimalPattern.test(number7) === false) { + throw Error("Expecting an integer"); } - } - return function(fn3) { - if (fn3) { - setTimeout(function() { - fn3(pnow()); - }, 1e3 / 60); + while (decimalPattern.test(this.peekChar(0))) { + number7 += this.popChar(); } - }; - }(); - requestAnimationFrame2 = /* @__PURE__ */ __name(function requestAnimationFrame3(fn3) { - return raf(fn3); - }, "requestAnimationFrame"); - performanceNow = pnow; - DEFAULT_HASH_SEED = 9261; - K3 = 65599; - DEFAULT_HASH_SEED_ALT = 5381; - hashIterableInts = /* @__PURE__ */ __name(function hashIterableInts2(iterator) { - var seed = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : DEFAULT_HASH_SEED; - var hash = seed; - var entry; - for (; ; ) { - entry = iterator.next(); - if (entry.done) { - break; + return parseInt(number7, 10); + } + patternCharacter() { + const nextChar = this.popChar(); + switch (nextChar) { + // istanbul ignore next + case "\n": + // istanbul ignore next + case "\r": + // istanbul ignore next + case "\u2028": + // istanbul ignore next + case "\u2029": + // istanbul ignore next + case "^": + // istanbul ignore next + case "$": + // istanbul ignore next + case "\\": + // istanbul ignore next + case ".": + // istanbul ignore next + case "*": + // istanbul ignore next + case "+": + // istanbul ignore next + case "?": + // istanbul ignore next + case "(": + // istanbul ignore next + case ")": + // istanbul ignore next + case "[": + // istanbul ignore next + case "|": + throw Error("TBD"); + default: + return { type: "Character", value: cc(nextChar) }; } - hash = hash * K3 + entry.value | 0; } - return hash; - }, "hashIterableInts"); - hashInt = /* @__PURE__ */ __name(function hashInt2(num) { - var seed = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : DEFAULT_HASH_SEED; - return seed * K3 + num | 0; - }, "hashInt"); - hashIntAlt = /* @__PURE__ */ __name(function hashIntAlt2(num) { - var seed = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : DEFAULT_HASH_SEED_ALT; - return (seed << 5) + seed + num | 0; - }, "hashIntAlt"); - combineHashes = /* @__PURE__ */ __name(function combineHashes2(hash1, hash2) { - return hash1 * 2097152 + hash2; - }, "combineHashes"); - combineHashesArray = /* @__PURE__ */ __name(function combineHashesArray2(hashes) { - return hashes[0] * 2097152 + hashes[1]; - }, "combineHashesArray"); - hashArrays = /* @__PURE__ */ __name(function hashArrays2(hashes1, hashes2) { - return [hashInt(hashes1[0], hashes2[0]), hashIntAlt(hashes1[1], hashes2[1])]; - }, "hashArrays"); - hashIntsArray = /* @__PURE__ */ __name(function hashIntsArray2(ints, seed) { - var entry = { - value: 0, - done: false - }; - var i2 = 0; - var length2 = ints.length; - var iterator = { - next: /* @__PURE__ */ __name(function next3() { - if (i2 < length2) { - entry.value = ints[i2++]; - } else { - entry.done = true; - } - return entry; - }, "next") - }; - return hashIterableInts(iterator, seed); - }, "hashIntsArray"); - hashString = /* @__PURE__ */ __name(function hashString2(str2, seed) { - var entry = { - value: 0, - done: false - }; - var i2 = 0; - var length2 = str2.length; - var iterator = { - next: /* @__PURE__ */ __name(function next3() { - if (i2 < length2) { - entry.value = str2.charCodeAt(i2++); - } else { - entry.done = true; - } - return entry; - }, "next") - }; - return hashIterableInts(iterator, seed); - }, "hashString"); - hashStrings = /* @__PURE__ */ __name(function hashStrings2() { - return hashStringsArray(arguments); - }, "hashStrings"); - hashStringsArray = /* @__PURE__ */ __name(function hashStringsArray2(strs) { - var hash; - for (var i2 = 0; i2 < strs.length; i2++) { - var str2 = strs[i2]; - if (i2 === 0) { - hash = hashString(str2); - } else { - hash = hashString(str2, hash); + isRegExpFlag() { + switch (this.peekChar(0)) { + case "g": + case "i": + case "m": + case "u": + case "y": + return true; + default: + return false; } } - return hash; - }, "hashStringsArray"); - warningsEnabled = true; - warnSupported = console.warn != null; - traceSupported = console.trace != null; - MAX_INT$1 = Number.MAX_SAFE_INTEGER || 9007199254740991; - trueify = /* @__PURE__ */ __name(function trueify2() { - return true; - }, "trueify"); - falsify = /* @__PURE__ */ __name(function falsify2() { - return false; - }, "falsify"); - zeroify = /* @__PURE__ */ __name(function zeroify2() { - return 0; - }, "zeroify"); - noop$1 = /* @__PURE__ */ __name(function noop3() { - }, "noop"); - error = /* @__PURE__ */ __name(function error2(msg) { - throw new Error(msg); - }, "error"); - warnings = /* @__PURE__ */ __name(function warnings2(enabled) { - if (enabled !== void 0) { - warningsEnabled = !!enabled; - } else { - return warningsEnabled; + isRangeDash() { + return this.peekChar() === "-" && this.isClassAtom(1); } - }, "warnings"); - warn = /* @__PURE__ */ __name(function warn2(msg) { - if (!warnings()) { - return; + isDigit() { + return decimalPattern.test(this.peekChar(0)); } - if (warnSupported) { - console.warn(msg); - } else { - console.log(msg); - if (traceSupported) { - console.trace(); + isClassAtom(howMuch = 0) { + switch (this.peekChar(howMuch)) { + case "]": + case "\n": + case "\r": + case "\u2028": + case "\u2029": + return false; + default: + return true; } } - }, "warn"); - clone4 = /* @__PURE__ */ __name(function clone5(obj) { - return extend4({}, obj); - }, "clone"); - copy3 = /* @__PURE__ */ __name(function copy4(obj) { - if (obj == null) { - return obj; - } - if (array2(obj)) { - return obj.slice(); - } else if (plainObject(obj)) { - return clone4(obj); - } else { - return obj; - } - }, "copy"); - copyArray$1 = /* @__PURE__ */ __name(function copyArray2(arr) { - return arr.slice(); - }, "copyArray"); - uuid = /* @__PURE__ */ __name(function uuid2(a2, b2) { - for ( - // loop :) - b2 = a2 = ""; - // b - result , a - numeric letiable - a2++ < 36; - // - b2 += a2 * 51 & 52 ? ( - // return a random number or 4 - (a2 ^ 15 ? ( - // generate a random number from 0 to 15 - 8 ^ Math.random() * (a2 ^ 20 ? 16 : 4) - ) : 4).toString(16) - ) : "-" - ) { + isTerm() { + return this.isAtom() || this.isAssertion(); } - return b2; - }, "uuid"); - _staticEmptyObject = {}; - staticEmptyObject = /* @__PURE__ */ __name(function staticEmptyObject2() { - return _staticEmptyObject; - }, "staticEmptyObject"); - defaults$g = /* @__PURE__ */ __name(function defaults2(_defaults2) { - var keys3 = Object.keys(_defaults2); - return function(opts) { - var filledOpts = {}; - for (var i2 = 0; i2 < keys3.length; i2++) { - var key = keys3[i2]; - var optVal = opts == null ? void 0 : opts[key]; - filledOpts[key] = optVal === void 0 ? _defaults2[key] : optVal; + isAtom() { + if (this.isPatternCharacter()) { + return true; } - return filledOpts; - }; - }, "defaults"); - removeFromArray = /* @__PURE__ */ __name(function removeFromArray2(arr, ele, oneCopy) { - for (var i2 = arr.length - 1; i2 >= 0; i2--) { - if (arr[i2] === ele) { - arr.splice(i2, 1); - if (oneCopy) { - break; - } + switch (this.peekChar(0)) { + case ".": + case "\\": + // atomEscape + case "[": + // characterClass + // TODO: isAtom must be called before isAssertion - disambiguate + case "(": + return true; + default: + return false; } } - }, "removeFromArray"); - clearArray = /* @__PURE__ */ __name(function clearArray2(arr) { - arr.splice(0, arr.length); - }, "clearArray"); - push = /* @__PURE__ */ __name(function push2(arr, otherArr) { - for (var i2 = 0; i2 < otherArr.length; i2++) { - var el = otherArr[i2]; - arr.push(el); - } - }, "push"); - getPrefixedProperty = /* @__PURE__ */ __name(function getPrefixedProperty2(obj, propName, prefix) { - if (prefix) { - propName = prependCamel(prefix, propName); - } - return obj[propName]; - }, "getPrefixedProperty"); - setPrefixedProperty = /* @__PURE__ */ __name(function setPrefixedProperty2(obj, propName, prefix, value2) { - if (prefix) { - propName = prependCamel(prefix, propName); - } - obj[propName] = value2; - }, "setPrefixedProperty"); - ObjectMap = /* @__PURE__ */ function() { - function ObjectMap2() { - _classCallCheck(this, ObjectMap2); - this._obj = {}; - } - __name(ObjectMap2, "ObjectMap"); - _createClass(ObjectMap2, [{ - key: "set", - value: /* @__PURE__ */ __name(function set6(key, val) { - this._obj[key] = val; - return this; - }, "set") - }, { - key: "delete", - value: /* @__PURE__ */ __name(function _delete(key) { - this._obj[key] = void 0; - return this; - }, "_delete") - }, { - key: "clear", - value: /* @__PURE__ */ __name(function clear22() { - this._obj = {}; - }, "clear") - }, { - key: "has", - value: /* @__PURE__ */ __name(function has2(key) { - return this._obj[key] !== void 0; - }, "has") - }, { - key: "get", - value: /* @__PURE__ */ __name(function get6(key) { - return this._obj[key]; - }, "get") - }]); - return ObjectMap2; - }(); - Map$2 = typeof Map !== "undefined" ? Map : ObjectMap; - undef = "undefined"; - ObjectSet = /* @__PURE__ */ function() { - function ObjectSet2(arrayOrObjectSet) { - _classCallCheck(this, ObjectSet2); - this._obj = /* @__PURE__ */ Object.create(null); - this.size = 0; - if (arrayOrObjectSet != null) { - var arr; - if (arrayOrObjectSet.instanceString != null && arrayOrObjectSet.instanceString() === this.instanceString()) { - arr = arrayOrObjectSet.toArray(); - } else { - arr = arrayOrObjectSet; - } - for (var i2 = 0; i2 < arr.length; i2++) { - this.add(arr[i2]); - } + isAssertion() { + switch (this.peekChar(0)) { + case "^": + case "$": + return true; + // '\b' or '\B' + case "\\": + switch (this.peekChar(1)) { + case "b": + case "B": + return true; + default: + return false; + } + // '(?=' or '(?!' + case "(": + return this.peekChar(1) === "?" && (this.peekChar(2) === "=" || this.peekChar(2) === "!"); + default: + return false; } } - __name(ObjectSet2, "ObjectSet"); - _createClass(ObjectSet2, [{ - key: "instanceString", - value: /* @__PURE__ */ __name(function instanceString4() { - return "set"; - }, "instanceString") - }, { - key: "add", - value: /* @__PURE__ */ __name(function add3(val) { - var o2 = this._obj; - if (o2[val] !== 1) { - o2[val] = 1; - this.size++; - } - }, "add") - }, { - key: "delete", - value: /* @__PURE__ */ __name(function _delete(val) { - var o2 = this._obj; - if (o2[val] === 1) { - o2[val] = 0; - this.size--; - } - }, "_delete") - }, { - key: "clear", - value: /* @__PURE__ */ __name(function clear22() { - this._obj = /* @__PURE__ */ Object.create(null); - }, "clear") - }, { - key: "has", - value: /* @__PURE__ */ __name(function has2(val) { - return this._obj[val] === 1; - }, "has") - }, { - key: "toArray", - value: /* @__PURE__ */ __name(function toArray3() { - var _this = this; - return Object.keys(this._obj).filter(function(key) { - return _this.has(key); - }); - }, "toArray") - }, { - key: "forEach", - value: /* @__PURE__ */ __name(function forEach3(callback, thisArg) { - return this.toArray().forEach(callback, thisArg); - }, "forEach") - }]); - return ObjectSet2; - }(); - Set$1 = (typeof Set === "undefined" ? "undefined" : _typeof(Set)) !== undef ? Set : ObjectSet; - Element2 = /* @__PURE__ */ __name(function Element3(cy, params) { - var restore = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; - if (cy === void 0 || params === void 0 || !core2(cy)) { - error("An element must have a core reference and parameters set"); - return; - } - var group2 = params.group; - if (group2 == null) { - if (params.data && params.data.source != null && params.data.target != null) { - group2 = "edges"; - } else { - group2 = "nodes"; + isQuantifier() { + const prevState = this.saveState(); + try { + return this.quantifier(true) !== void 0; + } catch (e3) { + return false; + } finally { + this.restoreState(prevState); } } - if (group2 !== "nodes" && group2 !== "edges") { - error("An element must be of type `nodes` or `edges`; you specified `" + group2 + "`"); - return; - } - this.length = 1; - this[0] = this; - var _p = this._private = { - cy, - single: true, - // indicates this is an element - data: params.data || {}, - // data object - position: params.position || { - x: 0, - y: 0 - }, - // (x, y) position pair - autoWidth: void 0, - // width and height of nodes calculated by the renderer when set to special 'auto' value - autoHeight: void 0, - autoPadding: void 0, - compoundBoundsClean: false, - // whether the compound dimensions need to be recalculated the next time dimensions are read - listeners: [], - // array of bound listeners - group: group2, - // string; 'nodes' or 'edges' - style: {}, - // properties as set by the style - rstyle: {}, - // properties for style sent from the renderer to the core - styleCxts: [], - // applied style contexts from the styler - styleKeys: {}, - // per-group keys of style property values - removed: true, - // whether it's inside the vis; true if removed (set true here since we call restore) - selected: params.selected ? true : false, - // whether it's selected - selectable: params.selectable === void 0 ? true : params.selectable ? true : false, - // whether it's selectable - locked: params.locked ? true : false, - // whether the element is locked (cannot be moved) - grabbed: false, - // whether the element is grabbed by the mouse; renderer sets this privately - grabbable: params.grabbable === void 0 ? true : params.grabbable ? true : false, - // whether the element can be grabbed - pannable: params.pannable === void 0 ? group2 === "edges" ? true : false : params.pannable ? true : false, - // whether the element has passthrough panning enabled - active: false, - // whether the element is active from user interaction - classes: new Set$1(), - // map ( className => true ) - animation: { - // object for currently-running animations - current: [], - queue: [] - }, - rscratch: {}, - // object in which the renderer can store information - scratch: params.scratch || {}, - // scratch objects - edges: [], - // array of connected edges - children: [], - // array of children - parent: params.parent && params.parent.isNode() ? params.parent : null, - // parent ref - traversalCache: {}, - // cache of output of traversal functions - backgrounding: false, - // whether background images are loading - bbCache: null, - // cache of the current bounding box - bbCacheShift: { - x: 0, - y: 0 - }, - // shift applied to cached bb to be applied on next get - bodyBounds: null, - // bounds cache of element body, w/o overlay - overlayBounds: null, - // bounds cache of element body, including overlay - labelBounds: { - // bounds cache of labels - all: null, - source: null, - target: null, - main: null - }, - arrowBounds: { - // bounds cache of edge arrows - source: null, - target: null, - "mid-source": null, - "mid-target": null + isPatternCharacter() { + switch (this.peekChar()) { + case "^": + case "$": + case "\\": + case ".": + case "*": + case "+": + case "?": + case "(": + case ")": + case "[": + case "|": + case "/": + case "\n": + case "\r": + case "\u2028": + case "\u2029": + return false; + default: + return true; } - }; - if (_p.position.x == null) { - _p.position.x = 0; } - if (_p.position.y == null) { - _p.position.y = 0; + parseHexDigits(howMany) { + let hexString = ""; + for (let i2 = 0; i2 < howMany; i2++) { + const hexChar = this.popChar(); + if (hexDigitPattern.test(hexChar) === false) { + throw Error("Expecting a HexDecimal digits"); + } + hexString += hexChar; + } + const charCode = parseInt(hexString, 16); + return { type: "Character", value: charCode }; } - if (params.renderedPosition) { - var rpos = params.renderedPosition; - var pan2 = cy.pan(); - var zoom2 = cy.zoom(); - _p.position = { - x: (rpos.x - pan2.x) / zoom2, - y: (rpos.y - pan2.y) / zoom2 - }; + peekChar(howMuch = 0) { + return this.input[this.idx + howMuch]; } - var classes3 = []; - if (array2(params.classes)) { - classes3 = params.classes; - } else if (string(params.classes)) { - classes3 = params.classes.split(/\s+/); + popChar() { + const nextChar = this.peekChar(0); + this.consumeChar(void 0); + return nextChar; } - for (var i2 = 0, l2 = classes3.length; i2 < l2; i2++) { - var cls = classes3[i2]; - if (!cls || cls === "") { - continue; + consumeChar(char2) { + if (char2 !== void 0 && this.input[this.idx] !== char2) { + throw Error("Expected: '" + char2 + "' but found: '" + this.input[this.idx] + "' at offset: " + this.idx); } - _p.classes.add(cls); + if (this.idx >= this.input.length) { + throw Error("Unexpected end of input"); + } + this.idx++; } - this.createEmitter(); - var bypass = params.style || params.css; - if (bypass) { - warn("Setting a `style` bypass at element creation should be done only when absolutely necessary. Try to use the stylesheet instead."); - this.style(bypass); + loc(begin) { + return { begin, end: this.idx }; } - if (restore === void 0 || restore) { - this.restore(); + }; + } + }); + + // ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/base-regexp-visitor.js + var BaseRegExpVisitor; + var init_base_regexp_visitor = __esm({ + "../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/base-regexp-visitor.js"() { + "use strict"; + BaseRegExpVisitor = class { + static { + __name(this, "BaseRegExpVisitor"); } - }, "Element"); - defineSearch = /* @__PURE__ */ __name(function defineSearch2(params) { - params = { - bfs: params.bfs || !params.dfs, - dfs: params.dfs || !params.bfs - }; - return /* @__PURE__ */ __name(function searchFn(roots, fn3, directed) { - var options3; - if (plainObject(roots) && !elementOrCollection(roots)) { - options3 = roots; - roots = options3.roots || options3.root; - fn3 = options3.visit; - directed = options3.directed; - } - directed = arguments.length === 2 && !fn$6(fn3) ? fn3 : directed; - fn3 = fn$6(fn3) ? fn3 : function() { - }; - var cy = this._private.cy; - var v3 = roots = string(roots) ? this.filter(roots) : roots; - var Q2 = []; - var connectedNodes = []; - var connectedBy = {}; - var id2depth = {}; - var V2 = {}; - var j2 = 0; - var found; - var _this$byGroup = this.byGroup(), nodes6 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; - for (var i2 = 0; i2 < v3.length; i2++) { - var vi2 = v3[i2]; - var viId = vi2.id(); - if (vi2.isNode()) { - Q2.unshift(vi2); - if (params.bfs) { - V2[viId] = true; - connectedNodes.push(vi2); - } - id2depth[viId] = 0; - } - } - var _loop = /* @__PURE__ */ __name(function _loop2() { - var v4 = params.bfs ? Q2.shift() : Q2.pop(); - var vId = v4.id(); - if (params.dfs) { - if (V2[vId]) { - return "continue"; - } - V2[vId] = true; - connectedNodes.push(v4); - } - var depth = id2depth[vId]; - var prevEdge = connectedBy[vId]; - var src = prevEdge != null ? prevEdge.source() : null; - var tgt = prevEdge != null ? prevEdge.target() : null; - var prevNode = prevEdge == null ? void 0 : v4.same(src) ? tgt[0] : src[0]; - var ret = void 0; - ret = fn3(v4, prevEdge, prevNode, j2++, depth); - if (ret === true) { - found = v4; - return "break"; - } - if (ret === false) { - return "break"; - } - var vwEdges = v4.connectedEdges().filter(function(e4) { - return (!directed || e4.source().same(v4)) && edges3.has(e4); - }); - for (var _i2 = 0; _i2 < vwEdges.length; _i2++) { - var e3 = vwEdges[_i2]; - var w3 = e3.connectedNodes().filter(function(n2) { - return !n2.same(v4) && nodes6.has(n2); - }); - var wId = w3.id(); - if (w3.length !== 0 && !V2[wId]) { - w3 = w3[0]; - Q2.push(w3); - if (params.bfs) { - V2[wId] = true; - connectedNodes.push(w3); - } - connectedBy[wId] = e3; - id2depth[wId] = id2depth[vId] + 1; + visitChildren(node2) { + for (const key in node2) { + const child = node2[key]; + if (node2.hasOwnProperty(key)) { + if (child.type !== void 0) { + this.visit(child); + } else if (Array.isArray(child)) { + child.forEach((subChild) => { + this.visit(subChild); + }, this); } } - }, "_loop"); - while (Q2.length !== 0) { - var _ret = _loop(); - if (_ret === "continue") continue; - if (_ret === "break") break; } - var connectedEles = cy.collection(); - for (var _i = 0; _i < connectedNodes.length; _i++) { - var node2 = connectedNodes[_i]; - var edge = connectedBy[node2.id()]; - if (edge != null) { - connectedEles.push(edge); - } - connectedEles.push(node2); + } + visit(node2) { + switch (node2.type) { + case "Pattern": + this.visitPattern(node2); + break; + case "Flags": + this.visitFlags(node2); + break; + case "Disjunction": + this.visitDisjunction(node2); + break; + case "Alternative": + this.visitAlternative(node2); + break; + case "StartAnchor": + this.visitStartAnchor(node2); + break; + case "EndAnchor": + this.visitEndAnchor(node2); + break; + case "WordBoundary": + this.visitWordBoundary(node2); + break; + case "NonWordBoundary": + this.visitNonWordBoundary(node2); + break; + case "Lookahead": + this.visitLookahead(node2); + break; + case "NegativeLookahead": + this.visitNegativeLookahead(node2); + break; + case "Character": + this.visitCharacter(node2); + break; + case "Set": + this.visitSet(node2); + break; + case "Group": + this.visitGroup(node2); + break; + case "GroupBackReference": + this.visitGroupBackReference(node2); + break; + case "Quantifier": + this.visitQuantifier(node2); + break; } - return { - path: cy.collection(connectedEles), - found: cy.collection(found) - }; - }, "searchFn"); - }, "defineSearch"); - elesfn$v = { - breadthFirstSearch: defineSearch({ - bfs: true - }), - depthFirstSearch: defineSearch({ - dfs: true - }) + this.visitChildren(node2); + } + visitPattern(node2) { + } + visitFlags(node2) { + } + visitDisjunction(node2) { + } + visitAlternative(node2) { + } + // Assertion + visitStartAnchor(node2) { + } + visitEndAnchor(node2) { + } + visitWordBoundary(node2) { + } + visitNonWordBoundary(node2) { + } + visitLookahead(node2) { + } + visitNegativeLookahead(node2) { + } + // atoms + visitCharacter(node2) { + } + visitSet(node2) { + } + visitGroup(node2) { + } + visitGroupBackReference(node2) { + } + visitQuantifier(node2) { + } }; - elesfn$v.bfs = elesfn$v.breadthFirstSearch; - elesfn$v.dfs = elesfn$v.depthFirstSearch; - heap$1 = createCommonjsModule(function(module2, exports2) { - (function() { - var Heap, defaultCmp, floor, heapify, heappop, heappush, heappushpop, heapreplace, insort, min9, nlargest, nsmallest, updateItem, _siftdown, _siftup; - floor = Math.floor, min9 = Math.min; - defaultCmp = /* @__PURE__ */ __name(function(x5, y5) { - if (x5 < y5) { - return -1; - } - if (x5 > y5) { - return 1; - } - return 0; - }, "defaultCmp"); - insort = /* @__PURE__ */ __name(function(a2, x5, lo, hi, cmp) { - var mid; - if (lo == null) { - lo = 0; - } - if (cmp == null) { - cmp = defaultCmp; - } - if (lo < 0) { - throw new Error("lo must be non-negative"); - } - if (hi == null) { - hi = a2.length; + } + }); + + // ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/api.js + var init_api = __esm({ + "../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.0.3/node_modules/@chevrotain/regexp-to-ast/lib/src/api.js"() { + "use strict"; + init_regexp_parser(); + init_base_regexp_visitor(); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/regexp-utils.js + var regexp_utils_exports = {}; + __export(regexp_utils_exports, { + NEWLINE_REGEXP: () => NEWLINE_REGEXP, + escapeRegExp: () => escapeRegExp, + getCaseInsensitivePattern: () => getCaseInsensitivePattern, + getTerminalParts: () => getTerminalParts, + isMultilineComment: () => isMultilineComment, + isWhitespace: () => isWhitespace2, + partialMatches: () => partialMatches, + partialRegExp: () => partialRegExp, + whitespaceCharacters: () => whitespaceCharacters + }); + function getTerminalParts(regexp) { + try { + if (typeof regexp !== "string") { + regexp = regexp.source; + } + regexp = `/${regexp}/`; + const pattern = regexpParser.pattern(regexp); + const parts = []; + for (const alternative of pattern.value.value) { + visitor.reset(regexp); + visitor.visit(alternative); + parts.push({ + start: visitor.startRegexp, + end: visitor.endRegex + }); + } + return parts; + } catch (_a) { + return []; + } + } + function isMultilineComment(regexp) { + try { + if (typeof regexp === "string") { + regexp = new RegExp(regexp); + } + regexp = regexp.toString(); + visitor.reset(regexp); + visitor.visit(regexpParser.pattern(regexp)); + return visitor.multiline; + } catch (_a) { + return false; + } + } + function isWhitespace2(value2) { + const regexp = typeof value2 === "string" ? new RegExp(value2) : value2; + return whitespaceCharacters.some((ws) => regexp.test(ws)); + } + function escapeRegExp(value2) { + return value2.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + } + function getCaseInsensitivePattern(keyword) { + return Array.prototype.map.call(keyword, (letter) => /\w/.test(letter) ? `[${letter.toLowerCase()}${letter.toUpperCase()}]` : escapeRegExp(letter)).join(""); + } + function partialMatches(regex2, input) { + const partial = partialRegExp(regex2); + const match2 = input.match(partial); + return !!match2 && match2[0].length > 0; + } + function partialRegExp(regex2) { + if (typeof regex2 === "string") { + regex2 = new RegExp(regex2); + } + const re3 = regex2, source = regex2.source; + let i2 = 0; + function process2() { + let result = "", tmp; + function appendRaw(nbChars) { + result += source.substr(i2, nbChars); + i2 += nbChars; + } + __name(appendRaw, "appendRaw"); + function appendOptional(nbChars) { + result += "(?:" + source.substr(i2, nbChars) + "|$)"; + i2 += nbChars; + } + __name(appendOptional, "appendOptional"); + while (i2 < source.length) { + switch (source[i2]) { + case "\\": + switch (source[i2 + 1]) { + case "c": + appendOptional(3); + break; + case "x": + appendOptional(4); + break; + case "u": + if (re3.unicode) { + if (source[i2 + 2] === "{") { + appendOptional(source.indexOf("}", i2) - i2 + 1); + } else { + appendOptional(6); + } + } else { + appendOptional(2); + } + break; + case "p": + case "P": + if (re3.unicode) { + appendOptional(source.indexOf("}", i2) - i2 + 1); + } else { + appendOptional(2); + } + break; + case "k": + appendOptional(source.indexOf(">", i2) - i2 + 1); + break; + default: + appendOptional(2); + break; } - while (lo < hi) { - mid = floor((lo + hi) / 2); - if (cmp(x5, a2[mid]) < 0) { - hi = mid; - } else { - lo = mid + 1; - } - } - return [].splice.apply(a2, [lo, lo - lo].concat(x5)), x5; - }, "insort"); - heappush = /* @__PURE__ */ __name(function(array4, item, cmp) { - if (cmp == null) { - cmp = defaultCmp; - } - array4.push(item); - return _siftdown(array4, 0, array4.length - 1, cmp); - }, "heappush"); - heappop = /* @__PURE__ */ __name(function(array4, cmp) { - var lastelt, returnitem; - if (cmp == null) { - cmp = defaultCmp; - } - lastelt = array4.pop(); - if (array4.length) { - returnitem = array4[0]; - array4[0] = lastelt; - _siftup(array4, 0, cmp); + break; + case "[": + tmp = /\[(?:\\.|.)*?\]/g; + tmp.lastIndex = i2; + tmp = tmp.exec(source) || []; + appendOptional(tmp[0].length); + break; + case "|": + case "^": + case "$": + case "*": + case "+": + case "?": + appendRaw(1); + break; + case "{": + tmp = /\{\d+,?\d*\}/g; + tmp.lastIndex = i2; + tmp = tmp.exec(source); + if (tmp) { + appendRaw(tmp[0].length); } else { - returnitem = lastelt; - } - return returnitem; - }, "heappop"); - heapreplace = /* @__PURE__ */ __name(function(array4, item, cmp) { - var returnitem; - if (cmp == null) { - cmp = defaultCmp; - } - returnitem = array4[0]; - array4[0] = item; - _siftup(array4, 0, cmp); - return returnitem; - }, "heapreplace"); - heappushpop = /* @__PURE__ */ __name(function(array4, item, cmp) { - var _ref; - if (cmp == null) { - cmp = defaultCmp; - } - if (array4.length && cmp(array4[0], item) < 0) { - _ref = [array4[0], item], item = _ref[0], array4[0] = _ref[1]; - _siftup(array4, 0, cmp); - } - return item; - }, "heappushpop"); - heapify = /* @__PURE__ */ __name(function(array4, cmp) { - var i2, _i, _len, _ref1, _results, _results1; - if (cmp == null) { - cmp = defaultCmp; - } - _ref1 = function() { - _results1 = []; - for (var _j = 0, _ref = floor(array4.length / 2); 0 <= _ref ? _j < _ref : _j > _ref; 0 <= _ref ? _j++ : _j--) { - _results1.push(_j); - } - return _results1; - }.apply(this).reverse(); - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - i2 = _ref1[_i]; - _results.push(_siftup(array4, i2, cmp)); - } - return _results; - }, "heapify"); - updateItem = /* @__PURE__ */ __name(function(array4, item, cmp) { - var pos; - if (cmp == null) { - cmp = defaultCmp; - } - pos = array4.indexOf(item); - if (pos === -1) { - return; - } - _siftdown(array4, 0, pos, cmp); - return _siftup(array4, pos, cmp); - }, "updateItem"); - nlargest = /* @__PURE__ */ __name(function(array4, n2, cmp) { - var elem, result, _i, _len, _ref; - if (cmp == null) { - cmp = defaultCmp; - } - result = array4.slice(0, n2); - if (!result.length) { - return result; - } - heapify(result, cmp); - _ref = array4.slice(n2); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - elem = _ref[_i]; - heappushpop(result, elem, cmp); - } - return result.sort(cmp).reverse(); - }, "nlargest"); - nsmallest = /* @__PURE__ */ __name(function(array4, n2, cmp) { - var elem, los, result, _i, _j, _len, _ref, _ref1, _results; - if (cmp == null) { - cmp = defaultCmp; - } - if (n2 * 10 <= array4.length) { - result = array4.slice(0, n2).sort(cmp); - if (!result.length) { - return result; - } - los = result[result.length - 1]; - _ref = array4.slice(n2); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - elem = _ref[_i]; - if (cmp(elem, los) < 0) { - insort(result, elem, 0, null, cmp); - result.pop(); - los = result[result.length - 1]; - } - } - return result; + appendOptional(1); } - heapify(array4, cmp); - _results = []; - for (_j = 0, _ref1 = min9(n2, array4.length); 0 <= _ref1 ? _j < _ref1 : _j > _ref1; 0 <= _ref1 ? ++_j : --_j) { - _results.push(heappop(array4, cmp)); - } - return _results; - }, "nsmallest"); - _siftdown = /* @__PURE__ */ __name(function(array4, startpos, pos, cmp) { - var newitem, parent4, parentpos; - if (cmp == null) { - cmp = defaultCmp; - } - newitem = array4[pos]; - while (pos > startpos) { - parentpos = pos - 1 >> 1; - parent4 = array4[parentpos]; - if (cmp(newitem, parent4) < 0) { - array4[pos] = parent4; - pos = parentpos; - continue; + break; + case "(": + if (source[i2 + 1] === "?") { + switch (source[i2 + 2]) { + case ":": + result += "(?:"; + i2 += 3; + result += process2() + "|$)"; + break; + case "=": + result += "(?="; + i2 += 3; + result += process2() + ")"; + break; + case "!": + tmp = i2; + i2 += 3; + process2(); + result += source.substr(tmp, i2 - tmp); + break; + case "<": + switch (source[i2 + 3]) { + case "=": + case "!": + tmp = i2; + i2 += 4; + process2(); + result += source.substr(tmp, i2 - tmp); + break; + default: + appendRaw(source.indexOf(">", i2) - i2 + 1); + result += process2() + "|$)"; + break; + } + break; } - break; - } - return array4[pos] = newitem; - }, "_siftdown"); - _siftup = /* @__PURE__ */ __name(function(array4, pos, cmp) { - var childpos, endpos, newitem, rightpos, startpos; - if (cmp == null) { - cmp = defaultCmp; - } - endpos = array4.length; - startpos = pos; - newitem = array4[pos]; - childpos = 2 * pos + 1; - while (childpos < endpos) { - rightpos = childpos + 1; - if (rightpos < endpos && !(cmp(array4[childpos], array4[rightpos]) < 0)) { - childpos = rightpos; - } - array4[pos] = array4[childpos]; - pos = childpos; - childpos = 2 * pos + 1; - } - array4[pos] = newitem; - return _siftdown(array4, startpos, pos, cmp); - }, "_siftup"); - Heap = function() { - Heap2.push = heappush; - Heap2.pop = heappop; - Heap2.replace = heapreplace; - Heap2.pushpop = heappushpop; - Heap2.heapify = heapify; - Heap2.updateItem = updateItem; - Heap2.nlargest = nlargest; - Heap2.nsmallest = nsmallest; - function Heap2(cmp) { - this.cmp = cmp != null ? cmp : defaultCmp; - this.nodes = []; - } - __name(Heap2, "Heap"); - Heap2.prototype.push = function(x5) { - return heappush(this.nodes, x5, this.cmp); - }; - Heap2.prototype.pop = function() { - return heappop(this.nodes, this.cmp); - }; - Heap2.prototype.peek = function() { - return this.nodes[0]; - }; - Heap2.prototype.contains = function(x5) { - return this.nodes.indexOf(x5) !== -1; - }; - Heap2.prototype.replace = function(x5) { - return heapreplace(this.nodes, x5, this.cmp); - }; - Heap2.prototype.pushpop = function(x5) { - return heappushpop(this.nodes, x5, this.cmp); - }; - Heap2.prototype.heapify = function() { - return heapify(this.nodes, this.cmp); - }; - Heap2.prototype.updateItem = function(x5) { - return updateItem(this.nodes, x5, this.cmp); - }; - Heap2.prototype.clear = function() { - return this.nodes = []; - }; - Heap2.prototype.empty = function() { - return this.nodes.length === 0; - }; - Heap2.prototype.size = function() { - return this.nodes.length; - }; - Heap2.prototype.clone = function() { - var heap2; - heap2 = new Heap2(); - heap2.nodes = this.nodes.slice(0); - return heap2; - }; - Heap2.prototype.toArray = function() { - return this.nodes.slice(0); - }; - Heap2.prototype.insert = Heap2.prototype.push; - Heap2.prototype.top = Heap2.prototype.peek; - Heap2.prototype.front = Heap2.prototype.peek; - Heap2.prototype.has = Heap2.prototype.contains; - Heap2.prototype.copy = Heap2.prototype.clone; - return Heap2; - }(); - (function(root4, factory) { - { - return module2.exports = factory(); + } else { + appendRaw(1); + result += process2() + "|$)"; } - })(this, function() { - return Heap; - }); - }).call(commonjsGlobal); - }); - heap = heap$1; - dijkstraDefaults = defaults$g({ - root: null, - weight: /* @__PURE__ */ __name(function weight(edge) { - return 1; - }, "weight"), - directed: false - }); - elesfn$u = { - dijkstra: /* @__PURE__ */ __name(function dijkstra2(options3) { - if (!plainObject(options3)) { - var args = arguments; - options3 = { - root: args[0], - weight: args[1], - directed: args[2] - }; + break; + case ")": + ++i2; + return result; + default: + appendOptional(1); + break; + } + } + return result; + } + __name(process2, "process"); + return new RegExp(process2(), regex2.flags); + } + var NEWLINE_REGEXP, regexpParser, TerminalRegExpVisitor, visitor, whitespaceCharacters; + var init_regexp_utils = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/regexp-utils.js"() { + "use strict"; + init_api(); + NEWLINE_REGEXP = /\r?\n/gm; + regexpParser = new RegExpParser(); + TerminalRegExpVisitor = class extends BaseRegExpVisitor { + static { + __name(this, "TerminalRegExpVisitor"); + } + constructor() { + super(...arguments); + this.isStarting = true; + this.endRegexpStack = []; + this.multiline = false; + } + get endRegex() { + return this.endRegexpStack.join(""); + } + reset(regex2) { + this.multiline = false; + this.regex = regex2; + this.startRegexp = ""; + this.isStarting = true; + this.endRegexpStack = []; + } + visitGroup(node2) { + if (node2.quantifier) { + this.isStarting = false; + this.endRegexpStack = []; } - var _dijkstraDefaults = dijkstraDefaults(options3), root4 = _dijkstraDefaults.root, weight8 = _dijkstraDefaults.weight, directed = _dijkstraDefaults.directed; - var eles = this; - var weightFn = weight8; - var source = string(root4) ? this.filter(root4)[0] : root4[0]; - var dist3 = {}; - var prev2 = {}; - var knownDist = {}; - var _this$byGroup = this.byGroup(), nodes6 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; - edges3.unmergeBy(function(ele) { - return ele.isLoop(); - }); - var getDist3 = /* @__PURE__ */ __name(function getDist4(node3) { - return dist3[node3.id()]; - }, "getDist"); - var setDist = /* @__PURE__ */ __name(function setDist2(node3, d2) { - dist3[node3.id()] = d2; - Q2.updateItem(node3); - }, "setDist"); - var Q2 = new heap(function(a2, b2) { - return getDist3(a2) - getDist3(b2); - }); - for (var i2 = 0; i2 < nodes6.length; i2++) { - var node2 = nodes6[i2]; - dist3[node2.id()] = node2.same(source) ? 0 : Infinity; - Q2.push(node2); + } + visitCharacter(node2) { + const char2 = String.fromCharCode(node2.value); + if (!this.multiline && char2 === "\n") { + this.multiline = true; } - var distBetween = /* @__PURE__ */ __name(function distBetween2(u3, v4) { - var uvs = (directed ? u3.edgesTo(v4) : u3.edgesWith(v4)).intersect(edges3); - var smallestDistance = Infinity; - var smallestEdge; - for (var _i = 0; _i < uvs.length; _i++) { - var edge = uvs[_i]; - var _weight = weightFn(edge); - if (_weight < smallestDistance || !smallestEdge) { - smallestDistance = _weight; - smallestEdge = edge; - } - } - return { - edge: smallestEdge, - dist: smallestDistance - }; - }, "distBetween"); - while (Q2.size() > 0) { - var u2 = Q2.pop(); - var smalletsDist = getDist3(u2); - var uid = u2.id(); - knownDist[uid] = smalletsDist; - if (smalletsDist === Infinity) { - continue; - } - var neighbors = u2.neighborhood().intersect(nodes6); - for (var _i2 = 0; _i2 < neighbors.length; _i2++) { - var v3 = neighbors[_i2]; - var vid = v3.id(); - var vDist = distBetween(u2, v3); - var alt = smalletsDist + vDist.dist; - if (alt < getDist3(v3)) { - setDist(v3, alt); - prev2[vid] = { - node: u2, - edge: vDist.edge - }; - } + if (node2.quantifier) { + this.isStarting = false; + this.endRegexpStack = []; + } else { + const escapedChar = escapeRegExp(char2); + this.endRegexpStack.push(escapedChar); + if (this.isStarting) { + this.startRegexp += escapedChar; } } - return { - distanceTo: /* @__PURE__ */ __name(function distanceTo(node3) { - var target = string(node3) ? nodes6.filter(node3)[0] : node3[0]; - return knownDist[target.id()]; - }, "distanceTo"), - pathTo: /* @__PURE__ */ __name(function pathTo(node3) { - var target = string(node3) ? nodes6.filter(node3)[0] : node3[0]; - var S3 = []; - var u3 = target; - var uid2 = u3.id(); - if (target.length > 0) { - S3.unshift(target); - while (prev2[uid2]) { - var p3 = prev2[uid2]; - S3.unshift(p3.edge); - S3.unshift(p3.node); - u3 = p3.node; - uid2 = u3.id(); - } - } - return eles.spawn(S3); - }, "pathTo") - }; - }, "dijkstra") - }; - elesfn$t = { - // kruskal's algorithm (finds min spanning tree, assuming undirected graph) - // implemented from pseudocode from wikipedia - kruskal: /* @__PURE__ */ __name(function kruskal(weightFn) { - weightFn = weightFn || function(edge2) { - return 1; - }; - var _this$byGroup = this.byGroup(), nodes6 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; - var numNodes = nodes6.length; - var forest = new Array(numNodes); - var A2 = nodes6; - var findSetIndex = /* @__PURE__ */ __name(function findSetIndex2(ele) { - for (var i3 = 0; i3 < forest.length; i3++) { - var eles = forest[i3]; - if (eles.has(ele)) { - return i3; - } - } - }, "findSetIndex"); - for (var i2 = 0; i2 < numNodes; i2++) { - forest[i2] = this.spawn(nodes6[i2]); + } + visitSet(node2) { + if (!this.multiline) { + const set5 = this.regex.substring(node2.loc.begin, node2.loc.end); + const regex2 = new RegExp(set5); + this.multiline = Boolean("\n".match(regex2)); } - var S3 = edges3.sort(function(a2, b2) { - return weightFn(a2) - weightFn(b2); - }); - for (var _i = 0; _i < S3.length; _i++) { - var edge = S3[_i]; - var u2 = edge.source()[0]; - var v3 = edge.target()[0]; - var setUIndex = findSetIndex(u2); - var setVIndex = findSetIndex(v3); - var setU = forest[setUIndex]; - var setV = forest[setVIndex]; - if (setUIndex !== setVIndex) { - A2.merge(edge); - setU.merge(setV); - forest.splice(setVIndex, 1); + if (node2.quantifier) { + this.isStarting = false; + this.endRegexpStack = []; + } else { + const set5 = this.regex.substring(node2.loc.begin, node2.loc.end); + this.endRegexpStack.push(set5); + if (this.isStarting) { + this.startRegexp += set5; } } - return A2; - }, "kruskal") - }; - aStarDefaults = defaults$g({ - root: null, - goal: null, - weight: /* @__PURE__ */ __name(function weight2(edge) { - return 1; - }, "weight"), - heuristic: /* @__PURE__ */ __name(function heuristic(edge) { - return 0; - }, "heuristic"), - directed: false - }); - elesfn$s = { - // Implemented from pseudocode from wikipedia - aStar: /* @__PURE__ */ __name(function aStar(options3) { - var cy = this.cy(); - var _aStarDefaults = aStarDefaults(options3), root4 = _aStarDefaults.root, goal = _aStarDefaults.goal, heuristic2 = _aStarDefaults.heuristic, directed = _aStarDefaults.directed, weight8 = _aStarDefaults.weight; - root4 = cy.collection(root4)[0]; - goal = cy.collection(goal)[0]; - var sid = root4.id(); - var tid = goal.id(); - var gScore = {}; - var fScore = {}; - var closedSetIds = {}; - var openSet = new heap(function(a2, b2) { - return fScore[a2.id()] - fScore[b2.id()]; - }); - var openSetIds = new Set$1(); - var cameFrom = {}; - var cameFromEdge = {}; - var addToOpenSet = /* @__PURE__ */ __name(function addToOpenSet2(ele, id29) { - openSet.push(ele); - openSetIds.add(id29); - }, "addToOpenSet"); - var cMin, cMinId; - var popFromOpenSet = /* @__PURE__ */ __name(function popFromOpenSet2() { - cMin = openSet.pop(); - cMinId = cMin.id(); - openSetIds["delete"](cMinId); - }, "popFromOpenSet"); - var isInOpenSet = /* @__PURE__ */ __name(function isInOpenSet2(id29) { - return openSetIds.has(id29); - }, "isInOpenSet"); - addToOpenSet(root4, sid); - gScore[sid] = 0; - fScore[sid] = heuristic2(root4); - var steps = 0; - while (openSet.size() > 0) { - popFromOpenSet(); - steps++; - if (cMinId === tid) { - var path4 = []; - var pathNode = goal; - var pathNodeId = tid; - var pathEdge = cameFromEdge[pathNodeId]; - for (; ; ) { - path4.unshift(pathNode); - if (pathEdge != null) { - path4.unshift(pathEdge); - } - pathNode = cameFrom[pathNodeId]; - if (pathNode == null) { - break; - } - pathNodeId = pathNode.id(); - pathEdge = cameFromEdge[pathNodeId]; - } - return { - found: true, - distance: gScore[cMinId], - path: this.spawn(path4), - steps - }; - } - closedSetIds[cMinId] = true; - var vwEdges = cMin._private.edges; - for (var i2 = 0; i2 < vwEdges.length; i2++) { - var e3 = vwEdges[i2]; - if (!this.hasElementWithId(e3.id())) { - continue; - } - if (directed && e3.data("source") !== cMinId) { - continue; - } - var wSrc = e3.source(); - var wTgt = e3.target(); - var w3 = wSrc.id() !== cMinId ? wSrc : wTgt; - var wid = w3.id(); - if (!this.hasElementWithId(wid)) { - continue; - } - if (closedSetIds[wid]) { - continue; - } - var tempScore = gScore[cMinId] + weight8(e3); - if (!isInOpenSet(wid)) { - gScore[wid] = tempScore; - fScore[wid] = tempScore + heuristic2(w3); - addToOpenSet(w3, wid); - cameFrom[wid] = cMin; - cameFromEdge[wid] = e3; - continue; - } - if (tempScore < gScore[wid]) { - gScore[wid] = tempScore; - fScore[wid] = tempScore + heuristic2(w3); - cameFrom[wid] = cMin; - cameFromEdge[wid] = e3; - } + } + visitChildren(node2) { + if (node2.type === "Group") { + const group2 = node2; + if (group2.quantifier) { + return; } } - return { - found: false, - distance: void 0, - path: void 0, - steps - }; - }, "aStar") + super.visitChildren(node2); + } }; - floydWarshallDefaults = defaults$g({ - weight: /* @__PURE__ */ __name(function weight3(edge) { - return 1; - }, "weight"), - directed: false - }); - elesfn$r = { - // Implemented from pseudocode from wikipedia - floydWarshall: /* @__PURE__ */ __name(function floydWarshall2(options3) { - var cy = this.cy(); - var _floydWarshallDefault = floydWarshallDefaults(options3), weight8 = _floydWarshallDefault.weight, directed = _floydWarshallDefault.directed; - var weightFn = weight8; - var _this$byGroup = this.byGroup(), nodes6 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; - var N2 = nodes6.length; - var Nsq = N2 * N2; - var indexOf2 = /* @__PURE__ */ __name(function indexOf3(node2) { - return nodes6.indexOf(node2); - }, "indexOf"); - var atIndex = /* @__PURE__ */ __name(function atIndex2(i3) { - return nodes6[i3]; - }, "atIndex"); - var dist3 = new Array(Nsq); - for (var n2 = 0; n2 < Nsq; n2++) { - var j2 = n2 % N2; - var i2 = (n2 - j2) / N2; - if (i2 === j2) { - dist3[n2] = 0; - } else { - dist3[n2] = Infinity; - } - } - var next3 = new Array(Nsq); - var edgeNext = new Array(Nsq); - for (var _i = 0; _i < edges3.length; _i++) { - var edge = edges3[_i]; - var src = edge.source()[0]; - var tgt = edge.target()[0]; - if (src === tgt) { - continue; - } - var s2 = indexOf2(src); - var t4 = indexOf2(tgt); - var st2 = s2 * N2 + t4; - var _weight = weightFn(edge); - if (dist3[st2] > _weight) { - dist3[st2] = _weight; - next3[st2] = t4; - edgeNext[st2] = edge; - } - if (!directed) { - var ts = t4 * N2 + s2; - if (!directed && dist3[ts] > _weight) { - dist3[ts] = _weight; - next3[ts] = s2; - edgeNext[ts] = edge; - } - } - } - for (var k2 = 0; k2 < N2; k2++) { - for (var _i2 = 0; _i2 < N2; _i2++) { - var ik = _i2 * N2 + k2; - for (var _j = 0; _j < N2; _j++) { - var ij = _i2 * N2 + _j; - var kj = k2 * N2 + _j; - if (dist3[ik] + dist3[kj] < dist3[ij]) { - dist3[ij] = dist3[ik] + dist3[kj]; - next3[ij] = next3[ik]; - } - } - } - } - var getArgEle = /* @__PURE__ */ __name(function getArgEle2(ele) { - return (string(ele) ? cy.filter(ele) : ele)[0]; - }, "getArgEle"); - var indexOfArgEle = /* @__PURE__ */ __name(function indexOfArgEle2(ele) { - return indexOf2(getArgEle(ele)); - }, "indexOfArgEle"); - var res = { - distance: /* @__PURE__ */ __name(function distance2(from2, to) { - var i3 = indexOfArgEle(from2); - var j3 = indexOfArgEle(to); - return dist3[i3 * N2 + j3]; - }, "distance"), - path: /* @__PURE__ */ __name(function path4(from2, to) { - var i3 = indexOfArgEle(from2); - var j3 = indexOfArgEle(to); - var fromNode = atIndex(i3); - if (i3 === j3) { - return fromNode.collection(); - } - if (next3[i3 * N2 + j3] == null) { - return cy.collection(); - } - var path5 = cy.collection(); - var prev2 = i3; - var edge2; - path5.merge(fromNode); - while (i3 !== j3) { - prev2 = i3; - i3 = next3[i3 * N2 + j3]; - edge2 = edgeNext[prev2 * N2 + i3]; - path5.merge(edge2); - path5.merge(atIndex(i3)); - } - return path5; - }, "path") - }; - return res; - }, "floydWarshall") - // floydWarshall - }; - bellmanFordDefaults = defaults$g({ - weight: /* @__PURE__ */ __name(function weight4(edge) { - return 1; - }, "weight"), - directed: false, - root: null - }); - elesfn$q = { - // Implemented from pseudocode from wikipedia - bellmanFord: /* @__PURE__ */ __name(function bellmanFord(options3) { - var _this = this; - var _bellmanFordDefaults = bellmanFordDefaults(options3), weight8 = _bellmanFordDefaults.weight, directed = _bellmanFordDefaults.directed, root4 = _bellmanFordDefaults.root; - var weightFn = weight8; - var eles = this; - var cy = this.cy(); - var _this$byGroup = this.byGroup(), edges3 = _this$byGroup.edges, nodes6 = _this$byGroup.nodes; - var numNodes = nodes6.length; - var infoMap = new Map$2(); - var hasNegativeWeightCycle = false; - var negativeWeightCycles = []; - root4 = cy.collection(root4)[0]; - edges3.unmergeBy(function(edge2) { - return edge2.isLoop(); - }); - var numEdges = edges3.length; - var getInfo3 = /* @__PURE__ */ __name(function getInfo4(node3) { - var obj = infoMap.get(node3.id()); - if (!obj) { - obj = {}; - infoMap.set(node3.id(), obj); - } - return obj; - }, "getInfo"); - var getNodeFromTo = /* @__PURE__ */ __name(function getNodeFromTo2(to) { - return (string(to) ? cy.$(to) : to)[0]; - }, "getNodeFromTo"); - var distanceTo = /* @__PURE__ */ __name(function distanceTo2(to) { - return getInfo3(getNodeFromTo(to)).dist; - }, "distanceTo"); - var pathTo = /* @__PURE__ */ __name(function pathTo2(to) { - var thisStart = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : root4; - var end2 = getNodeFromTo(to); - var path4 = []; - var node3 = end2; - for (; ; ) { - if (node3 == null) { - return _this.spawn(); - } - var _getInfo = getInfo3(node3), edge2 = _getInfo.edge, pred = _getInfo.pred; - path4.unshift(node3[0]); - if (node3.same(thisStart) && path4.length > 0) { - break; - } - if (edge2 != null) { - path4.unshift(edge2); - } - node3 = pred; - } - return eles.spawn(path4); - }, "pathTo"); - for (var i2 = 0; i2 < numNodes; i2++) { - var node2 = nodes6[i2]; - var info2 = getInfo3(node2); - if (node2.same(root4)) { - info2.dist = 0; - } else { - info2.dist = Infinity; - } - info2.pred = null; - info2.edge = null; - } - var replacedEdge = false; - var checkForEdgeReplacement = /* @__PURE__ */ __name(function checkForEdgeReplacement2(node1, node22, edge2, info1, info22, weight9) { - var dist3 = info1.dist + weight9; - if (dist3 < info22.dist && !edge2.same(info1.edge)) { - info22.dist = dist3; - info22.pred = node1; - info22.edge = edge2; - replacedEdge = true; - } - }, "checkForEdgeReplacement"); - for (var _i = 1; _i < numNodes; _i++) { - replacedEdge = false; - for (var e3 = 0; e3 < numEdges; e3++) { - var edge = edges3[e3]; - var src = edge.source(); - var tgt = edge.target(); - var _weight = weightFn(edge); - var srcInfo = getInfo3(src); - var tgtInfo = getInfo3(tgt); - checkForEdgeReplacement(src, tgt, edge, srcInfo, tgtInfo, _weight); - if (!directed) { - checkForEdgeReplacement(tgt, src, edge, tgtInfo, srcInfo, _weight); - } - } - if (!replacedEdge) { - break; - } - } - if (replacedEdge) { - var negativeWeightCycleIds = []; - for (var _e = 0; _e < numEdges; _e++) { - var _edge = edges3[_e]; - var _src = _edge.source(); - var _tgt = _edge.target(); - var _weight2 = weightFn(_edge); - var srcDist = getInfo3(_src).dist; - var tgtDist = getInfo3(_tgt).dist; - if (srcDist + _weight2 < tgtDist || !directed && tgtDist + _weight2 < srcDist) { - if (!hasNegativeWeightCycle) { - warn("Graph contains a negative weight cycle for Bellman-Ford"); - hasNegativeWeightCycle = true; - } - if (options3.findNegativeWeightCycles !== false) { - var negativeNodes = []; - if (srcDist + _weight2 < tgtDist) { - negativeNodes.push(_src); - } - if (!directed && tgtDist + _weight2 < srcDist) { - negativeNodes.push(_tgt); - } - var numNegativeNodes = negativeNodes.length; - for (var n2 = 0; n2 < numNegativeNodes; n2++) { - var start3 = negativeNodes[n2]; - var cycle = [start3]; - cycle.push(getInfo3(start3).edge); - var _node = getInfo3(start3).pred; - while (cycle.indexOf(_node) === -1) { - cycle.push(_node); - cycle.push(getInfo3(_node).edge); - _node = getInfo3(_node).pred; - } - cycle = cycle.slice(cycle.indexOf(_node)); - var smallestId = cycle[0].id(); - var smallestIndex = 0; - for (var c3 = 2; c3 < cycle.length; c3 += 2) { - if (cycle[c3].id() < smallestId) { - smallestId = cycle[c3].id(); - smallestIndex = c3; - } - } - cycle = cycle.slice(smallestIndex).concat(cycle.slice(0, smallestIndex)); - cycle.push(cycle[0]); - var cycleId = cycle.map(function(el) { - return el.id(); - }).join(","); - if (negativeWeightCycleIds.indexOf(cycleId) === -1) { - negativeWeightCycles.push(eles.spawn(cycle)); - negativeWeightCycleIds.push(cycleId); - } - } - } else { - break; - } - } - } - } - return { - distanceTo, - pathTo, - hasNegativeWeightCycle, - negativeWeightCycles - }; - }, "bellmanFord") - // bellmanFord - }; - sqrt2 = Math.sqrt(2); - collapse = /* @__PURE__ */ __name(function collapse2(edgeIndex, nodeMap, remainingEdges) { - if (remainingEdges.length === 0) { - error("Karger-Stein must be run on a connected (sub)graph"); - } - var edgeInfo = remainingEdges[edgeIndex]; - var sourceIn = edgeInfo[1]; - var targetIn = edgeInfo[2]; - var partition1 = nodeMap[sourceIn]; - var partition2 = nodeMap[targetIn]; - var newEdges = remainingEdges; - for (var i2 = newEdges.length - 1; i2 >= 0; i2--) { - var edge = newEdges[i2]; - var src = edge[1]; - var tgt = edge[2]; - if (nodeMap[src] === partition1 && nodeMap[tgt] === partition2 || nodeMap[src] === partition2 && nodeMap[tgt] === partition1) { - newEdges.splice(i2, 1); - } - } - for (var _i = 0; _i < newEdges.length; _i++) { - var _edge = newEdges[_i]; - if (_edge[1] === partition2) { - newEdges[_i] = _edge.slice(); - newEdges[_i][1] = partition1; - } else if (_edge[2] === partition2) { - newEdges[_i] = _edge.slice(); - newEdges[_i][2] = partition1; - } - } - for (var _i2 = 0; _i2 < nodeMap.length; _i2++) { - if (nodeMap[_i2] === partition2) { - nodeMap[_i2] = partition1; - } - } - return newEdges; - }, "collapse"); - contractUntil = /* @__PURE__ */ __name(function contractUntil2(metaNodeMap, remainingEdges, size5, sizeLimit) { - while (size5 > sizeLimit) { - var edgeIndex = Math.floor(Math.random() * remainingEdges.length); - remainingEdges = collapse(edgeIndex, metaNodeMap, remainingEdges); - size5--; - } - return remainingEdges; - }, "contractUntil"); - elesfn$p = { - // Computes the minimum cut of an undirected graph - // Returns the correct answer with high probability - kargerStein: /* @__PURE__ */ __name(function kargerStein() { - var _this = this; - var _this$byGroup = this.byGroup(), nodes6 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; - edges3.unmergeBy(function(edge) { - return edge.isLoop(); - }); - var numNodes = nodes6.length; - var numEdges = edges3.length; - var numIter = Math.ceil(Math.pow(Math.log(numNodes) / Math.LN2, 2)); - var stopSize = Math.floor(numNodes / sqrt2); - if (numNodes < 2) { - error("At least 2 nodes are required for Karger-Stein algorithm"); - return void 0; - } - var edgeIndexes = []; - for (var i2 = 0; i2 < numEdges; i2++) { - var e3 = edges3[i2]; - edgeIndexes.push([i2, nodes6.indexOf(e3.source()), nodes6.indexOf(e3.target())]); - } - var minCutSize = Infinity; - var minCutEdgeIndexes = []; - var minCutNodeMap = new Array(numNodes); - var metaNodeMap = new Array(numNodes); - var metaNodeMap2 = new Array(numNodes); - var copyNodesMap = /* @__PURE__ */ __name(function copyNodesMap2(from2, to) { - for (var _i3 = 0; _i3 < numNodes; _i3++) { - to[_i3] = from2[_i3]; - } - }, "copyNodesMap"); - for (var iter = 0; iter <= numIter; iter++) { - for (var _i4 = 0; _i4 < numNodes; _i4++) { - metaNodeMap[_i4] = _i4; - } - var edgesState = contractUntil(metaNodeMap, edgeIndexes.slice(), numNodes, stopSize); - var edgesState2 = edgesState.slice(); - copyNodesMap(metaNodeMap, metaNodeMap2); - var res1 = contractUntil(metaNodeMap, edgesState, stopSize, 2); - var res2 = contractUntil(metaNodeMap2, edgesState2, stopSize, 2); - if (res1.length <= res2.length && res1.length < minCutSize) { - minCutSize = res1.length; - minCutEdgeIndexes = res1; - copyNodesMap(metaNodeMap, minCutNodeMap); - } else if (res2.length <= res1.length && res2.length < minCutSize) { - minCutSize = res2.length; - minCutEdgeIndexes = res2; - copyNodesMap(metaNodeMap2, minCutNodeMap); - } - } - var cut = this.spawn(minCutEdgeIndexes.map(function(e4) { - return edges3[e4[0]]; - })); - var partition1 = this.spawn(); - var partition2 = this.spawn(); - var witnessNodePartition = minCutNodeMap[0]; - for (var _i5 = 0; _i5 < minCutNodeMap.length; _i5++) { - var partitionId = minCutNodeMap[_i5]; - var node2 = nodes6[_i5]; - if (partitionId === witnessNodePartition) { - partition1.merge(node2); - } else { - partition2.merge(node2); - } - } - var constructComponent = /* @__PURE__ */ __name(function constructComponent2(subset) { - var component2 = _this.spawn(); - subset.forEach(function(node3) { - component2.merge(node3); - node3.connectedEdges().forEach(function(edge) { - if (_this.contains(edge) && !cut.contains(edge)) { - component2.merge(edge); - } - }); - }); - return component2; - }, "constructComponent"); - var components3 = [constructComponent(partition1), constructComponent(partition2)]; - var ret = { - cut, - components: components3, - // n.b. partitions are included to be compatible with the old api spec - // (could be removed in a future major version) - partition1, - partition2 - }; - return ret; - }, "kargerStein") - }; - copyPosition = /* @__PURE__ */ __name(function copyPosition2(p3) { - return { - x: p3.x, - y: p3.y - }; - }, "copyPosition"); - modelToRenderedPosition$1 = /* @__PURE__ */ __name(function modelToRenderedPosition(p3, zoom2, pan2) { - return { - x: p3.x * zoom2 + pan2.x, - y: p3.y * zoom2 + pan2.y - }; - }, "modelToRenderedPosition"); - renderedToModelPosition = /* @__PURE__ */ __name(function renderedToModelPosition2(p3, zoom2, pan2) { - return { - x: (p3.x - pan2.x) / zoom2, - y: (p3.y - pan2.y) / zoom2 - }; - }, "renderedToModelPosition"); - array2point = /* @__PURE__ */ __name(function array2point2(arr) { - return { - x: arr[0], - y: arr[1] - }; - }, "array2point"); - min5 = /* @__PURE__ */ __name(function min6(arr) { - var begin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - var end2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : arr.length; - var min9 = Infinity; - for (var i2 = begin; i2 < end2; i2++) { - var val = arr[i2]; - if (isFinite(val)) { - min9 = Math.min(val, min9); - } - } - return min9; - }, "min"); - max5 = /* @__PURE__ */ __name(function max6(arr) { - var begin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - var end2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : arr.length; - var max10 = -Infinity; - for (var i2 = begin; i2 < end2; i2++) { - var val = arr[i2]; - if (isFinite(val)) { - max10 = Math.max(val, max10); - } - } - return max10; - }, "max"); - mean = /* @__PURE__ */ __name(function mean2(arr) { - var begin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - var end2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : arr.length; - var total = 0; - var n2 = 0; - for (var i2 = begin; i2 < end2; i2++) { - var val = arr[i2]; - if (isFinite(val)) { - total += val; - n2++; - } - } - return total / n2; - }, "mean"); - median = /* @__PURE__ */ __name(function median2(arr) { - var begin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - var end2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : arr.length; - var copy5 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; - var sort3 = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true; - var includeHoles = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : true; - if (copy5) { - arr = arr.slice(begin, end2); - } else { - if (end2 < arr.length) { - arr.splice(end2, arr.length - end2); - } - if (begin > 0) { - arr.splice(0, begin); - } + visitor = new TerminalRegExpVisitor(); + __name(getTerminalParts, "getTerminalParts"); + __name(isMultilineComment, "isMultilineComment"); + whitespaceCharacters = "\f\n\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF".split(""); + __name(isWhitespace2, "isWhitespace"); + __name(escapeRegExp, "escapeRegExp"); + __name(getCaseInsensitivePattern, "getCaseInsensitivePattern"); + __name(partialMatches, "partialMatches"); + __name(partialRegExp, "partialRegExp"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/grammar-utils.js + var grammar_utils_exports = {}; + __export(grammar_utils_exports, { + findAssignment: () => findAssignment, + findNameAssignment: () => findNameAssignment, + findNodeForKeyword: () => findNodeForKeyword, + findNodeForProperty: () => findNodeForProperty, + findNodesForKeyword: () => findNodesForKeyword, + findNodesForKeywordInternal: () => findNodesForKeywordInternal, + findNodesForProperty: () => findNodesForProperty, + getActionAtElement: () => getActionAtElement, + getActionType: () => getActionType, + getAllReachableRules: () => getAllReachableRules, + getCrossReferenceTerminal: () => getCrossReferenceTerminal, + getEntryRule: () => getEntryRule, + getExplicitRuleType: () => getExplicitRuleType, + getHiddenRules: () => getHiddenRules, + getRuleType: () => getRuleType, + getRuleTypeName: () => getRuleTypeName, + getTypeName: () => getTypeName, + isArrayCardinality: () => isArrayCardinality, + isArrayOperator: () => isArrayOperator, + isCommentTerminal: () => isCommentTerminal, + isDataType: () => isDataType, + isDataTypeRule: () => isDataTypeRule, + isOptionalCardinality: () => isOptionalCardinality, + terminalRegex: () => terminalRegex + }); + function getEntryRule(grammar) { + return grammar.rules.find((e3) => isParserRule(e3) && e3.entry); + } + function getHiddenRules(grammar) { + return grammar.rules.filter((e3) => isTerminalRule(e3) && e3.hidden); + } + function getAllReachableRules(grammar, allTerminals) { + const ruleNames = /* @__PURE__ */ new Set(); + const entryRule = getEntryRule(grammar); + if (!entryRule) { + return new Set(grammar.rules); + } + const topMostRules = [entryRule].concat(getHiddenRules(grammar)); + for (const rule of topMostRules) { + ruleDfs(rule, ruleNames, allTerminals); + } + const rules = /* @__PURE__ */ new Set(); + for (const rule of grammar.rules) { + if (ruleNames.has(rule.name) || isTerminalRule(rule) && rule.hidden) { + rules.add(rule); + } + } + return rules; + } + function ruleDfs(rule, visitedSet, allTerminals) { + visitedSet.add(rule.name); + streamAllContents(rule).forEach((node2) => { + if (isRuleCall(node2) || allTerminals && isTerminalRuleCall(node2)) { + const refRule = node2.rule.ref; + if (refRule && !visitedSet.has(refRule.name)) { + ruleDfs(refRule, visitedSet, allTerminals); } - var off = 0; - for (var i2 = arr.length - 1; i2 >= 0; i2--) { - var v3 = arr[i2]; - if (includeHoles) { - if (!isFinite(v3)) { - arr[i2] = -Infinity; - off++; - } - } else { - arr.splice(i2, 1); + } + }); + } + function getCrossReferenceTerminal(crossRef) { + if (crossRef.terminal) { + return crossRef.terminal; + } else if (crossRef.type.ref) { + const nameAssigment = findNameAssignment(crossRef.type.ref); + return nameAssigment === null || nameAssigment === void 0 ? void 0 : nameAssigment.terminal; + } + return void 0; + } + function isCommentTerminal(terminalRule) { + return terminalRule.hidden && !isWhitespace2(terminalRegex(terminalRule)); + } + function findNodesForProperty(node2, property2) { + if (!node2 || !property2) { + return []; + } + return findNodesForPropertyInternal(node2, property2, node2.astNode, true); + } + function findNodeForProperty(node2, property2, index) { + if (!node2 || !property2) { + return void 0; + } + const nodes5 = findNodesForPropertyInternal(node2, property2, node2.astNode, true); + if (nodes5.length === 0) { + return void 0; + } + if (index !== void 0) { + index = Math.max(0, Math.min(index, nodes5.length - 1)); + } else { + index = 0; + } + return nodes5[index]; + } + function findNodesForPropertyInternal(node2, property2, element3, first3) { + if (!first3) { + const nodeFeature = getContainerOfType(node2.grammarSource, isAssignment); + if (nodeFeature && nodeFeature.feature === property2) { + return [node2]; + } + } + if (isCompositeCstNode(node2) && node2.astNode === element3) { + return node2.content.flatMap((e3) => findNodesForPropertyInternal(e3, property2, element3, false)); + } + return []; + } + function findNodesForKeyword(node2, keyword) { + if (!node2) { + return []; + } + return findNodesForKeywordInternal(node2, keyword, node2 === null || node2 === void 0 ? void 0 : node2.astNode); + } + function findNodeForKeyword(node2, keyword, index) { + if (!node2) { + return void 0; + } + const nodes5 = findNodesForKeywordInternal(node2, keyword, node2 === null || node2 === void 0 ? void 0 : node2.astNode); + if (nodes5.length === 0) { + return void 0; + } + if (index !== void 0) { + index = Math.max(0, Math.min(index, nodes5.length - 1)); + } else { + index = 0; + } + return nodes5[index]; + } + function findNodesForKeywordInternal(node2, keyword, element3) { + if (node2.astNode !== element3) { + return []; + } + if (isKeyword(node2.grammarSource) && node2.grammarSource.value === keyword) { + return [node2]; + } + const treeIterator = streamCst(node2).iterator(); + let result; + const keywordNodes = []; + do { + result = treeIterator.next(); + if (!result.done) { + const childNode = result.value; + if (childNode.astNode === element3) { + if (isKeyword(childNode.grammarSource) && childNode.grammarSource.value === keyword) { + keywordNodes.push(childNode); } - } - if (sort3) { - arr.sort(function(a2, b2) { - return a2 - b2; - }); - } - var len = arr.length; - var mid = Math.floor(len / 2); - if (len % 2 !== 0) { - return arr[mid + 1 + off]; } else { - return (arr[mid - 1 + off] + arr[mid + off]) / 2; + treeIterator.prune(); } - }, "median"); - deg2rad = /* @__PURE__ */ __name(function deg2rad2(deg) { - return Math.PI * deg / 180; - }, "deg2rad"); - getAngleFromDisp = /* @__PURE__ */ __name(function getAngleFromDisp2(dispX, dispY) { - return Math.atan2(dispY, dispX) - Math.PI / 2; - }, "getAngleFromDisp"); - log22 = Math.log2 || function(n2) { - return Math.log(n2) / Math.log(2); - }; - signum = /* @__PURE__ */ __name(function signum2(x5) { - if (x5 > 0) { - return 1; - } else if (x5 < 0) { - return -1; + } + } while (!result.done); + return keywordNodes; + } + function findAssignment(cstNode) { + var _a; + const astNode = cstNode.astNode; + while (astNode === ((_a = cstNode.container) === null || _a === void 0 ? void 0 : _a.astNode)) { + const assignment = getContainerOfType(cstNode.grammarSource, isAssignment); + if (assignment) { + return assignment; + } + cstNode = cstNode.container; + } + return void 0; + } + function findNameAssignment(type3) { + let startNode = type3; + if (isInferredType(startNode)) { + if (isAction(startNode.$container)) { + startNode = startNode.$container.$container; + } else if (isParserRule(startNode.$container)) { + startNode = startNode.$container; + } else { + assertUnreachable(startNode.$container); + } + } + return findNameAssignmentInternal(type3, startNode, /* @__PURE__ */ new Map()); + } + function findNameAssignmentInternal(type3, startNode, cache3) { + var _a; + function go(node2, refType) { + let childAssignment = void 0; + const parentAssignment = getContainerOfType(node2, isAssignment); + if (!parentAssignment) { + childAssignment = findNameAssignmentInternal(refType, refType, cache3); + } + cache3.set(type3, childAssignment); + return childAssignment; + } + __name(go, "go"); + if (cache3.has(type3)) { + return cache3.get(type3); + } + cache3.set(type3, void 0); + for (const node2 of streamAllContents(startNode)) { + if (isAssignment(node2) && node2.feature.toLowerCase() === "name") { + cache3.set(type3, node2); + return node2; + } else if (isRuleCall(node2) && isParserRule(node2.rule.ref)) { + return go(node2, node2.rule.ref); + } else if (isSimpleType(node2) && ((_a = node2.typeRef) === null || _a === void 0 ? void 0 : _a.ref)) { + return go(node2, node2.typeRef.ref); + } + } + return void 0; + } + function getActionAtElement(element3) { + const parent4 = element3.$container; + if (isGroup(parent4)) { + const elements2 = parent4.elements; + const index = elements2.indexOf(element3); + for (let i2 = index - 1; i2 >= 0; i2--) { + const item = elements2[i2]; + if (isAction(item)) { + return item; } else { - return 0; - } - }, "signum"); - dist = /* @__PURE__ */ __name(function dist2(p1, p22) { - return Math.sqrt(sqdist(p1, p22)); - }, "dist"); - sqdist = /* @__PURE__ */ __name(function sqdist2(p1, p22) { - var dx = p22.x - p1.x; - var dy = p22.y - p1.y; - return dx * dx + dy * dy; - }, "sqdist"); - inPlaceSumNormalize = /* @__PURE__ */ __name(function inPlaceSumNormalize2(v3) { - var length2 = v3.length; - var total = 0; - for (var i2 = 0; i2 < length2; i2++) { - total += v3[i2]; - } - for (var _i = 0; _i < length2; _i++) { - v3[_i] = v3[_i] / total; - } - return v3; - }, "inPlaceSumNormalize"); - qbezierAt = /* @__PURE__ */ __name(function qbezierAt2(p0, p1, p22, t4) { - return (1 - t4) * (1 - t4) * p0 + 2 * (1 - t4) * t4 * p1 + t4 * t4 * p22; - }, "qbezierAt"); - qbezierPtAt = /* @__PURE__ */ __name(function qbezierPtAt2(p0, p1, p22, t4) { - return { - x: qbezierAt(p0.x, p1.x, p22.x, t4), - y: qbezierAt(p0.y, p1.y, p22.y, t4) - }; - }, "qbezierPtAt"); - lineAt = /* @__PURE__ */ __name(function lineAt2(p0, p1, t4, d2) { - var vec = { - x: p1.x - p0.x, - y: p1.y - p0.y - }; - var vecDist = dist(p0, p1); - var normVec = { - x: vec.x / vecDist, - y: vec.y / vecDist - }; - t4 = t4 == null ? 0 : t4; - d2 = d2 != null ? d2 : t4 * vecDist; - return { - x: p0.x + normVec.x * d2, - y: p0.y + normVec.y * d2 - }; - }, "lineAt"); - bound = /* @__PURE__ */ __name(function bound2(min9, val, max10) { - return Math.max(min9, Math.min(max10, val)); - }, "bound"); - makeBoundingBox = /* @__PURE__ */ __name(function makeBoundingBox2(bb) { - if (bb == null) { - return { - x1: Infinity, - y1: Infinity, - x2: -Infinity, - y2: -Infinity, - w: 0, - h: 0 - }; - } else if (bb.x1 != null && bb.y1 != null) { - if (bb.x2 != null && bb.y2 != null && bb.x2 >= bb.x1 && bb.y2 >= bb.y1) { - return { - x1: bb.x1, - y1: bb.y1, - x2: bb.x2, - y2: bb.y2, - w: bb.x2 - bb.x1, - h: bb.y2 - bb.y1 - }; - } else if (bb.w != null && bb.h != null && bb.w >= 0 && bb.h >= 0) { - return { - x1: bb.x1, - y1: bb.y1, - x2: bb.x1 + bb.w, - y2: bb.y1 + bb.h, - w: bb.w, - h: bb.h - }; + const action = streamAllContents(elements2[i2]).find(isAction); + if (action) { + return action; } } - }, "makeBoundingBox"); - copyBoundingBox = /* @__PURE__ */ __name(function copyBoundingBox2(bb) { - return { - x1: bb.x1, - x2: bb.x2, - w: bb.w, - y1: bb.y1, - y2: bb.y2, - h: bb.h - }; - }, "copyBoundingBox"); - clearBoundingBox = /* @__PURE__ */ __name(function clearBoundingBox2(bb) { - bb.x1 = Infinity; - bb.y1 = Infinity; - bb.x2 = -Infinity; - bb.y2 = -Infinity; - bb.w = 0; - bb.h = 0; - }, "clearBoundingBox"); - shiftBoundingBox = /* @__PURE__ */ __name(function shiftBoundingBox2(bb, dx, dy) { - return { - x1: bb.x1 + dx, - x2: bb.x2 + dx, - y1: bb.y1 + dy, - y2: bb.y2 + dy, - w: bb.w, - h: bb.h - }; - }, "shiftBoundingBox"); - updateBoundingBox = /* @__PURE__ */ __name(function updateBoundingBox2(bb1, bb2) { - bb1.x1 = Math.min(bb1.x1, bb2.x1); - bb1.x2 = Math.max(bb1.x2, bb2.x2); - bb1.w = bb1.x2 - bb1.x1; - bb1.y1 = Math.min(bb1.y1, bb2.y1); - bb1.y2 = Math.max(bb1.y2, bb2.y2); - bb1.h = bb1.y2 - bb1.y1; - }, "updateBoundingBox"); - expandBoundingBoxByPoint = /* @__PURE__ */ __name(function expandBoundingBoxByPoint2(bb, x5, y5) { - bb.x1 = Math.min(bb.x1, x5); - bb.x2 = Math.max(bb.x2, x5); - bb.w = bb.x2 - bb.x1; - bb.y1 = Math.min(bb.y1, y5); - bb.y2 = Math.max(bb.y2, y5); - bb.h = bb.y2 - bb.y1; - }, "expandBoundingBoxByPoint"); - expandBoundingBox = /* @__PURE__ */ __name(function expandBoundingBox2(bb) { - var padding2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - bb.x1 -= padding2; - bb.x2 += padding2; - bb.y1 -= padding2; - bb.y2 += padding2; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - return bb; - }, "expandBoundingBox"); - expandBoundingBoxSides = /* @__PURE__ */ __name(function expandBoundingBoxSides2(bb) { - var padding2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [0]; - var top2, right3, bottom2, left3; - if (padding2.length === 1) { - top2 = right3 = bottom2 = left3 = padding2[0]; - } else if (padding2.length === 2) { - top2 = bottom2 = padding2[0]; - left3 = right3 = padding2[1]; - } else if (padding2.length === 4) { - var _padding = _slicedToArray(padding2, 4); - top2 = _padding[0]; - right3 = _padding[1]; - bottom2 = _padding[2]; - left3 = _padding[3]; - } - bb.x1 -= left3; - bb.x2 += right3; - bb.y1 -= top2; - bb.y2 += bottom2; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - return bb; - }, "expandBoundingBoxSides"); - assignBoundingBox = /* @__PURE__ */ __name(function assignBoundingBox2(bb1, bb2) { - bb1.x1 = bb2.x1; - bb1.y1 = bb2.y1; - bb1.x2 = bb2.x2; - bb1.y2 = bb2.y2; - bb1.w = bb1.x2 - bb1.x1; - bb1.h = bb1.y2 - bb1.y1; - }, "assignBoundingBox"); - boundingBoxesIntersect = /* @__PURE__ */ __name(function boundingBoxesIntersect2(bb1, bb2) { - if (bb1.x1 > bb2.x2) { - return false; - } - if (bb2.x1 > bb1.x2) { - return false; - } - if (bb1.x2 < bb2.x1) { - return false; - } - if (bb2.x2 < bb1.x1) { - return false; - } - if (bb1.y2 < bb2.y1) { - return false; - } - if (bb2.y2 < bb1.y1) { - return false; - } - if (bb1.y1 > bb2.y2) { + } + } + if (isAbstractElement(parent4)) { + return getActionAtElement(parent4); + } else { + return void 0; + } + } + function isOptionalCardinality(cardinality, element3) { + return cardinality === "?" || cardinality === "*" || isGroup(element3) && Boolean(element3.guardCondition); + } + function isArrayCardinality(cardinality) { + return cardinality === "*" || cardinality === "+"; + } + function isArrayOperator(operator) { + return operator === "+="; + } + function isDataTypeRule(rule) { + return isDataTypeRuleInternal(rule, /* @__PURE__ */ new Set()); + } + function isDataTypeRuleInternal(rule, visited) { + if (visited.has(rule)) { + return true; + } else { + visited.add(rule); + } + for (const node2 of streamAllContents(rule)) { + if (isRuleCall(node2)) { + if (!node2.rule.ref) { return false; } - if (bb2.y1 > bb1.y2) { + if (isParserRule(node2.rule.ref) && !isDataTypeRuleInternal(node2.rule.ref, visited)) { return false; } + } else if (isAssignment(node2)) { + return false; + } else if (isAction(node2)) { + return false; + } + } + return Boolean(rule.definition); + } + function isDataType(type3) { + return isDataTypeInternal(type3.type, /* @__PURE__ */ new Set()); + } + function isDataTypeInternal(type3, visited) { + if (visited.has(type3)) { + return true; + } else { + visited.add(type3); + } + if (isArrayType(type3)) { + return false; + } else if (isReferenceType(type3)) { + return false; + } else if (isUnionType(type3)) { + return type3.types.every((e3) => isDataTypeInternal(e3, visited)); + } else if (isSimpleType(type3)) { + if (type3.primitiveType !== void 0) { return true; - }, "boundingBoxesIntersect"); - inBoundingBox = /* @__PURE__ */ __name(function inBoundingBox2(bb, x5, y5) { - return bb.x1 <= x5 && x5 <= bb.x2 && bb.y1 <= y5 && y5 <= bb.y2; - }, "inBoundingBox"); - pointInBoundingBox = /* @__PURE__ */ __name(function pointInBoundingBox2(bb, pt) { - return inBoundingBox(bb, pt.x, pt.y); - }, "pointInBoundingBox"); - boundingBoxInBoundingBox = /* @__PURE__ */ __name(function boundingBoxInBoundingBox2(bb1, bb2) { - return inBoundingBox(bb1, bb2.x1, bb2.y1) && inBoundingBox(bb1, bb2.x2, bb2.y2); - }, "boundingBoxInBoundingBox"); - roundRectangleIntersectLine = /* @__PURE__ */ __name(function roundRectangleIntersectLine2(x5, y5, nodeX, nodeY, width3, height2, padding2) { - var radius2 = arguments.length > 7 && arguments[7] !== void 0 ? arguments[7] : "auto"; - var cornerRadius = radius2 === "auto" ? getRoundRectangleRadius(width3, height2) : radius2; - var halfWidth = width3 / 2; - var halfHeight = height2 / 2; - cornerRadius = Math.min(cornerRadius, halfWidth, halfHeight); - var doWidth = cornerRadius !== halfWidth, doHeight = cornerRadius !== halfHeight; - var straightLineIntersections; - if (doWidth) { - var topStartX = nodeX - halfWidth + cornerRadius - padding2; - var topStartY = nodeY - halfHeight - padding2; - var topEndX = nodeX + halfWidth - cornerRadius + padding2; - var topEndY = topStartY; - straightLineIntersections = finiteLinesIntersect(x5, y5, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } - if (doHeight) { - var rightStartX = nodeX + halfWidth + padding2; - var rightStartY = nodeY - halfHeight + cornerRadius - padding2; - var rightEndX = rightStartX; - var rightEndY = nodeY + halfHeight - cornerRadius + padding2; - straightLineIntersections = finiteLinesIntersect(x5, y5, nodeX, nodeY, rightStartX, rightStartY, rightEndX, rightEndY, false); - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } - if (doWidth) { - var bottomStartX = nodeX - halfWidth + cornerRadius - padding2; - var bottomStartY = nodeY + halfHeight + padding2; - var bottomEndX = nodeX + halfWidth - cornerRadius + padding2; - var bottomEndY = bottomStartY; - straightLineIntersections = finiteLinesIntersect(x5, y5, nodeX, nodeY, bottomStartX, bottomStartY, bottomEndX, bottomEndY, false); - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } - if (doHeight) { - var leftStartX = nodeX - halfWidth - padding2; - var leftStartY = nodeY - halfHeight + cornerRadius - padding2; - var leftEndX = leftStartX; - var leftEndY = nodeY + halfHeight - cornerRadius + padding2; - straightLineIntersections = finiteLinesIntersect(x5, y5, nodeX, nodeY, leftStartX, leftStartY, leftEndX, leftEndY, false); - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } - var arcIntersections; - { - var topLeftCenterX = nodeX - halfWidth + cornerRadius; - var topLeftCenterY = nodeY - halfHeight + cornerRadius; - arcIntersections = intersectLineCircle(x5, y5, nodeX, nodeY, topLeftCenterX, topLeftCenterY, cornerRadius + padding2); - if (arcIntersections.length > 0 && arcIntersections[0] <= topLeftCenterX && arcIntersections[1] <= topLeftCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } - { - var topRightCenterX = nodeX + halfWidth - cornerRadius; - var topRightCenterY = nodeY - halfHeight + cornerRadius; - arcIntersections = intersectLineCircle(x5, y5, nodeX, nodeY, topRightCenterX, topRightCenterY, cornerRadius + padding2); - if (arcIntersections.length > 0 && arcIntersections[0] >= topRightCenterX && arcIntersections[1] <= topRightCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } - { - var bottomRightCenterX = nodeX + halfWidth - cornerRadius; - var bottomRightCenterY = nodeY + halfHeight - cornerRadius; - arcIntersections = intersectLineCircle(x5, y5, nodeX, nodeY, bottomRightCenterX, bottomRightCenterY, cornerRadius + padding2); - if (arcIntersections.length > 0 && arcIntersections[0] >= bottomRightCenterX && arcIntersections[1] >= bottomRightCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } - { - var bottomLeftCenterX = nodeX - halfWidth + cornerRadius; - var bottomLeftCenterY = nodeY + halfHeight - cornerRadius; - arcIntersections = intersectLineCircle(x5, y5, nodeX, nodeY, bottomLeftCenterX, bottomLeftCenterY, cornerRadius + padding2); - if (arcIntersections.length > 0 && arcIntersections[0] <= bottomLeftCenterX && arcIntersections[1] >= bottomLeftCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } - return []; - }, "roundRectangleIntersectLine"); - inLineVicinity = /* @__PURE__ */ __name(function inLineVicinity2(x5, y5, lx1, ly1, lx2, ly2, tolerance) { - var t4 = tolerance; - var x1 = Math.min(lx1, lx2); - var x22 = Math.max(lx1, lx2); - var y1 = Math.min(ly1, ly2); - var y22 = Math.max(ly1, ly2); - return x1 - t4 <= x5 && x5 <= x22 + t4 && y1 - t4 <= y5 && y5 <= y22 + t4; - }, "inLineVicinity"); - inBezierVicinity = /* @__PURE__ */ __name(function inBezierVicinity2(x5, y5, x1, y1, x22, y22, x32, y32, tolerance) { - var bb = { - x1: Math.min(x1, x32, x22) - tolerance, - x2: Math.max(x1, x32, x22) + tolerance, - y1: Math.min(y1, y32, y22) - tolerance, - y2: Math.max(y1, y32, y22) + tolerance - }; - if (x5 < bb.x1 || x5 > bb.x2 || y5 < bb.y1 || y5 > bb.y2) { - return false; + } else if (type3.stringType !== void 0) { + return true; + } else if (type3.typeRef !== void 0) { + const ref = type3.typeRef.ref; + if (isType(ref)) { + return isDataTypeInternal(ref.type, visited); } else { - return true; - } - }, "inBezierVicinity"); - solveQuadratic = /* @__PURE__ */ __name(function solveQuadratic2(a2, b2, c3, val) { - c3 -= val; - var r2 = b2 * b2 - 4 * a2 * c3; - if (r2 < 0) { - return []; + return false; } - var sqrtR = Math.sqrt(r2); - var denom = 2 * a2; - var root1 = (-b2 + sqrtR) / denom; - var root22 = (-b2 - sqrtR) / denom; - return [root1, root22]; - }, "solveQuadratic"); - solveCubic = /* @__PURE__ */ __name(function solveCubic2(a2, b2, c3, d2, result) { - var epsilon6 = 1e-5; - if (a2 === 0) { - a2 = epsilon6; + } else { + return false; + } + } else { + return false; + } + } + function getExplicitRuleType(rule) { + if (rule.inferredType) { + return rule.inferredType.name; + } else if (rule.dataType) { + return rule.dataType; + } else if (rule.returnType) { + const refType = rule.returnType.ref; + if (refType) { + if (isParserRule(refType)) { + return refType.name; + } else if (isInterface(refType) || isType(refType)) { + return refType.name; } - b2 /= a2; - c3 /= a2; - d2 /= a2; - var discriminant, q2, r2, dum1, s2, t4, term1, r13; - q2 = (3 * c3 - b2 * b2) / 9; - r2 = -(27 * d2) + b2 * (9 * c3 - 2 * (b2 * b2)); - r2 /= 54; - discriminant = q2 * q2 * q2 + r2 * r2; - result[1] = 0; - term1 = b2 / 3; - if (discriminant > 0) { - s2 = r2 + Math.sqrt(discriminant); - s2 = s2 < 0 ? -Math.pow(-s2, 1 / 3) : Math.pow(s2, 1 / 3); - t4 = r2 - Math.sqrt(discriminant); - t4 = t4 < 0 ? -Math.pow(-t4, 1 / 3) : Math.pow(t4, 1 / 3); - result[0] = -term1 + s2 + t4; - term1 += (s2 + t4) / 2; - result[4] = result[2] = -term1; - term1 = Math.sqrt(3) * (-t4 + s2) / 2; - result[3] = term1; - result[5] = -term1; - return; + } + } + return void 0; + } + function getTypeName(type3) { + var _a; + if (isParserRule(type3)) { + return isDataTypeRule(type3) ? type3.name : (_a = getExplicitRuleType(type3)) !== null && _a !== void 0 ? _a : type3.name; + } else if (isInterface(type3) || isType(type3) || isReturnType(type3)) { + return type3.name; + } else if (isAction(type3)) { + const actionType = getActionType(type3); + if (actionType) { + return actionType; + } + } else if (isInferredType(type3)) { + return type3.name; + } + throw new Error("Cannot get name of Unknown Type"); + } + function getActionType(action) { + var _a; + if (action.inferredType) { + return action.inferredType.name; + } else if ((_a = action.type) === null || _a === void 0 ? void 0 : _a.ref) { + return getTypeName(action.type.ref); + } + return void 0; + } + function getRuleTypeName(rule) { + var _a, _b, _c; + if (isTerminalRule(rule)) { + return (_b = (_a = rule.type) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : "string"; + } else { + return isDataTypeRule(rule) ? rule.name : (_c = getExplicitRuleType(rule)) !== null && _c !== void 0 ? _c : rule.name; + } + } + function getRuleType(rule) { + var _a, _b, _c; + if (isTerminalRule(rule)) { + return (_b = (_a = rule.type) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : "string"; + } else { + return (_c = getExplicitRuleType(rule)) !== null && _c !== void 0 ? _c : rule.name; + } + } + function terminalRegex(terminalRule) { + const flags = { + s: false, + i: false, + u: false + }; + const source = abstractElementToRegex(terminalRule.definition, flags); + const flagText = Object.entries(flags).filter(([, value2]) => value2).map(([name]) => name).join(""); + return new RegExp(source, flagText); + } + function abstractElementToRegex(element3, flags) { + if (isTerminalAlternatives(element3)) { + return terminalAlternativesToRegex(element3); + } else if (isTerminalGroup(element3)) { + return terminalGroupToRegex(element3); + } else if (isCharacterRange(element3)) { + return characterRangeToRegex(element3); + } else if (isTerminalRuleCall(element3)) { + const rule = element3.rule.ref; + if (!rule) { + throw new Error("Missing rule reference."); + } + return withCardinality(abstractElementToRegex(rule.definition), { + cardinality: element3.cardinality, + lookahead: element3.lookahead + }); + } else if (isNegatedToken(element3)) { + return negateTokenToRegex(element3); + } else if (isUntilToken(element3)) { + return untilTokenToRegex(element3); + } else if (isRegexToken(element3)) { + const lastSlash = element3.regex.lastIndexOf("/"); + const source = element3.regex.substring(1, lastSlash); + const regexFlags = element3.regex.substring(lastSlash + 1); + if (flags) { + flags.i = regexFlags.includes("i"); + flags.s = regexFlags.includes("s"); + flags.u = regexFlags.includes("u"); + } + return withCardinality(source, { + cardinality: element3.cardinality, + lookahead: element3.lookahead, + wrap: false + }); + } else if (isWildcard(element3)) { + return withCardinality(WILDCARD, { + cardinality: element3.cardinality, + lookahead: element3.lookahead + }); + } else { + throw new Error(`Invalid terminal element: ${element3 === null || element3 === void 0 ? void 0 : element3.$type}`); + } + } + function terminalAlternativesToRegex(alternatives) { + return withCardinality(alternatives.elements.map((e3) => abstractElementToRegex(e3)).join("|"), { + cardinality: alternatives.cardinality, + lookahead: alternatives.lookahead + }); + } + function terminalGroupToRegex(group2) { + return withCardinality(group2.elements.map((e3) => abstractElementToRegex(e3)).join(""), { + cardinality: group2.cardinality, + lookahead: group2.lookahead + }); + } + function untilTokenToRegex(until) { + return withCardinality(`${WILDCARD}*?${abstractElementToRegex(until.terminal)}`, { + cardinality: until.cardinality, + lookahead: until.lookahead + }); + } + function negateTokenToRegex(negate2) { + return withCardinality(`(?!${abstractElementToRegex(negate2.terminal)})${WILDCARD}*?`, { + cardinality: negate2.cardinality, + lookahead: negate2.lookahead + }); + } + function characterRangeToRegex(range3) { + if (range3.right) { + return withCardinality(`[${keywordToRegex(range3.left)}-${keywordToRegex(range3.right)}]`, { + cardinality: range3.cardinality, + lookahead: range3.lookahead, + wrap: false + }); + } + return withCardinality(keywordToRegex(range3.left), { + cardinality: range3.cardinality, + lookahead: range3.lookahead, + wrap: false + }); + } + function keywordToRegex(keyword) { + return escapeRegExp(keyword.value); + } + function withCardinality(regex2, options2) { + var _a; + if (options2.wrap !== false || options2.lookahead) { + regex2 = `(${(_a = options2.lookahead) !== null && _a !== void 0 ? _a : ""}${regex2})`; + } + if (options2.cardinality) { + return `${regex2}${options2.cardinality}`; + } + return regex2; + } + var WILDCARD; + var init_grammar_utils = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/grammar-utils.js"() { + "use strict"; + init_errors2(); + init_ast(); + init_syntax_tree(); + init_ast_utils(); + init_cst_utils(); + init_regexp_utils(); + __name(getEntryRule, "getEntryRule"); + __name(getHiddenRules, "getHiddenRules"); + __name(getAllReachableRules, "getAllReachableRules"); + __name(ruleDfs, "ruleDfs"); + __name(getCrossReferenceTerminal, "getCrossReferenceTerminal"); + __name(isCommentTerminal, "isCommentTerminal"); + __name(findNodesForProperty, "findNodesForProperty"); + __name(findNodeForProperty, "findNodeForProperty"); + __name(findNodesForPropertyInternal, "findNodesForPropertyInternal"); + __name(findNodesForKeyword, "findNodesForKeyword"); + __name(findNodeForKeyword, "findNodeForKeyword"); + __name(findNodesForKeywordInternal, "findNodesForKeywordInternal"); + __name(findAssignment, "findAssignment"); + __name(findNameAssignment, "findNameAssignment"); + __name(findNameAssignmentInternal, "findNameAssignmentInternal"); + __name(getActionAtElement, "getActionAtElement"); + __name(isOptionalCardinality, "isOptionalCardinality"); + __name(isArrayCardinality, "isArrayCardinality"); + __name(isArrayOperator, "isArrayOperator"); + __name(isDataTypeRule, "isDataTypeRule"); + __name(isDataTypeRuleInternal, "isDataTypeRuleInternal"); + __name(isDataType, "isDataType"); + __name(isDataTypeInternal, "isDataTypeInternal"); + __name(getExplicitRuleType, "getExplicitRuleType"); + __name(getTypeName, "getTypeName"); + __name(getActionType, "getActionType"); + __name(getRuleTypeName, "getRuleTypeName"); + __name(getRuleType, "getRuleType"); + __name(terminalRegex, "terminalRegex"); + WILDCARD = /[\s\S]/.source; + __name(abstractElementToRegex, "abstractElementToRegex"); + __name(terminalAlternativesToRegex, "terminalAlternativesToRegex"); + __name(terminalGroupToRegex, "terminalGroupToRegex"); + __name(untilTokenToRegex, "untilTokenToRegex"); + __name(negateTokenToRegex, "negateTokenToRegex"); + __name(characterRangeToRegex, "characterRangeToRegex"); + __name(keywordToRegex, "keywordToRegex"); + __name(withCardinality, "withCardinality"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/grammar-config.js + function createGrammarConfig(services) { + const rules = []; + const grammar = services.Grammar; + for (const rule of grammar.rules) { + if (isTerminalRule(rule) && isCommentTerminal(rule) && isMultilineComment(terminalRegex(rule))) { + rules.push(rule.name); + } + } + return { + multilineCommentRules: rules, + nameRegexp: DefaultNameRegexp + }; + } + var init_grammar_config = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/grammar-config.js"() { + "use strict"; + init_cst_utils(); + init_grammar_utils(); + init_regexp_utils(); + init_ast(); + __name(createGrammarConfig, "createGrammarConfig"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/version.js + var init_version = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/version.js"() { + "use strict"; + } + }); + + // ../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/print.js + function PRINT_ERROR(msg) { + if (console && console.error) { + console.error(`Error: ${msg}`); + } + } + function PRINT_WARNING(msg) { + if (console && console.warn) { + console.warn(`Warning: ${msg}`); + } + } + var init_print = __esm({ + "../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/print.js"() { + "use strict"; + __name(PRINT_ERROR, "PRINT_ERROR"); + __name(PRINT_WARNING, "PRINT_WARNING"); + } + }); + + // ../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/timer.js + function timer2(func) { + const start3 = (/* @__PURE__ */ new Date()).getTime(); + const val = func(); + const end2 = (/* @__PURE__ */ new Date()).getTime(); + const total = end2 - start3; + return { time: total, value: val }; + } + var init_timer2 = __esm({ + "../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/timer.js"() { + "use strict"; + __name(timer2, "timer"); + } + }); + + // ../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/to-fast-properties.js + function toFastProperties(toBecomeFast) { + function FakeConstructor() { + } + __name(FakeConstructor, "FakeConstructor"); + FakeConstructor.prototype = toBecomeFast; + const fakeInstance = new FakeConstructor(); + function fakeAccess() { + return typeof fakeInstance.bar; + } + __name(fakeAccess, "fakeAccess"); + fakeAccess(); + fakeAccess(); + if (1) + return toBecomeFast; + (0, eval)(toBecomeFast); + } + var init_to_fast_properties = __esm({ + "../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/to-fast-properties.js"() { + "use strict"; + __name(toFastProperties, "toFastProperties"); + } + }); + + // ../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/api.js + var init_api2 = __esm({ + "../../node_modules/.pnpm/@chevrotain+utils@11.0.3/node_modules/@chevrotain/utils/lib/src/api.js"() { + "use strict"; + init_print(); + init_timer2(); + init_to_fast_properties(); + } + }); + + // ../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/model.js + function tokenLabel(tokType) { + if (hasTokenLabel(tokType)) { + return tokType.LABEL; + } else { + return tokType.name; + } + } + function hasTokenLabel(obj) { + return isString_default(obj.LABEL) && obj.LABEL !== ""; + } + function serializeGrammar(topRules) { + return map_default(topRules, serializeProduction); + } + function serializeProduction(node2) { + function convertDefinition(definition) { + return map_default(definition, serializeProduction); + } + __name(convertDefinition, "convertDefinition"); + if (node2 instanceof NonTerminal) { + const serializedNonTerminal = { + type: "NonTerminal", + name: node2.nonTerminalName, + idx: node2.idx + }; + if (isString_default(node2.label)) { + serializedNonTerminal.label = node2.label; + } + return serializedNonTerminal; + } else if (node2 instanceof Alternative) { + return { + type: "Alternative", + definition: convertDefinition(node2.definition) + }; + } else if (node2 instanceof Option2) { + return { + type: "Option", + idx: node2.idx, + definition: convertDefinition(node2.definition) + }; + } else if (node2 instanceof RepetitionMandatory) { + return { + type: "RepetitionMandatory", + idx: node2.idx, + definition: convertDefinition(node2.definition) + }; + } else if (node2 instanceof RepetitionMandatoryWithSeparator) { + return { + type: "RepetitionMandatoryWithSeparator", + idx: node2.idx, + separator: serializeProduction(new Terminal({ terminalType: node2.separator })), + definition: convertDefinition(node2.definition) + }; + } else if (node2 instanceof RepetitionWithSeparator) { + return { + type: "RepetitionWithSeparator", + idx: node2.idx, + separator: serializeProduction(new Terminal({ terminalType: node2.separator })), + definition: convertDefinition(node2.definition) + }; + } else if (node2 instanceof Repetition) { + return { + type: "Repetition", + idx: node2.idx, + definition: convertDefinition(node2.definition) + }; + } else if (node2 instanceof Alternation) { + return { + type: "Alternation", + idx: node2.idx, + definition: convertDefinition(node2.definition) + }; + } else if (node2 instanceof Terminal) { + const serializedTerminal = { + type: "Terminal", + name: node2.terminalType.name, + label: tokenLabel(node2.terminalType), + idx: node2.idx + }; + if (isString_default(node2.label)) { + serializedTerminal.terminalLabel = node2.label; + } + const pattern = node2.terminalType.PATTERN; + if (node2.terminalType.PATTERN) { + serializedTerminal.pattern = isRegExp_default(pattern) ? pattern.source : pattern; + } + return serializedTerminal; + } else if (node2 instanceof Rule) { + return { + type: "Rule", + name: node2.name, + orgText: node2.orgText, + definition: convertDefinition(node2.definition) + }; + } else { + throw Error("non exhaustive match"); + } + } + var AbstractProduction, NonTerminal, Rule, Alternative, Option2, RepetitionMandatory, RepetitionMandatoryWithSeparator, Repetition, RepetitionWithSeparator, Alternation, Terminal; + var init_model = __esm({ + "../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/model.js"() { + "use strict"; + init_lodash(); + __name(tokenLabel, "tokenLabel"); + __name(hasTokenLabel, "hasTokenLabel"); + AbstractProduction = class { + static { + __name(this, "AbstractProduction"); } - result[5] = result[3] = 0; - if (discriminant === 0) { - r13 = r2 < 0 ? -Math.pow(-r2, 1 / 3) : Math.pow(r2, 1 / 3); - result[0] = -term1 + 2 * r13; - result[4] = result[2] = -(r13 + term1); - return; + get definition() { + return this._definition; } - q2 = -q2; - dum1 = q2 * q2 * q2; - dum1 = Math.acos(r2 / Math.sqrt(dum1)); - r13 = 2 * Math.sqrt(q2); - result[0] = -term1 + r13 * Math.cos(dum1 / 3); - result[2] = -term1 + r13 * Math.cos((dum1 + 2 * Math.PI) / 3); - result[4] = -term1 + r13 * Math.cos((dum1 + 4 * Math.PI) / 3); - return; - }, "solveCubic"); - sqdistToQuadraticBezier = /* @__PURE__ */ __name(function sqdistToQuadraticBezier2(x5, y5, x1, y1, x22, y22, x32, y32) { - var a2 = 1 * x1 * x1 - 4 * x1 * x22 + 2 * x1 * x32 + 4 * x22 * x22 - 4 * x22 * x32 + x32 * x32 + y1 * y1 - 4 * y1 * y22 + 2 * y1 * y32 + 4 * y22 * y22 - 4 * y22 * y32 + y32 * y32; - var b2 = 1 * 9 * x1 * x22 - 3 * x1 * x1 - 3 * x1 * x32 - 6 * x22 * x22 + 3 * x22 * x32 + 9 * y1 * y22 - 3 * y1 * y1 - 3 * y1 * y32 - 6 * y22 * y22 + 3 * y22 * y32; - var c3 = 1 * 3 * x1 * x1 - 6 * x1 * x22 + x1 * x32 - x1 * x5 + 2 * x22 * x22 + 2 * x22 * x5 - x32 * x5 + 3 * y1 * y1 - 6 * y1 * y22 + y1 * y32 - y1 * y5 + 2 * y22 * y22 + 2 * y22 * y5 - y32 * y5; - var d2 = 1 * x1 * x22 - x1 * x1 + x1 * x5 - x22 * x5 + y1 * y22 - y1 * y1 + y1 * y5 - y22 * y5; - var roots = []; - solveCubic(a2, b2, c3, d2, roots); - var zeroThreshold = 1e-7; - var params = []; - for (var index = 0; index < 6; index += 2) { - if (Math.abs(roots[index + 1]) < zeroThreshold && roots[index] >= 0 && roots[index] <= 1) { - params.push(roots[index]); - } + set definition(value2) { + this._definition = value2; } - params.push(1); - params.push(0); - var minDistanceSquared = -1; - var curX, curY, distSquared; - for (var i2 = 0; i2 < params.length; i2++) { - curX = Math.pow(1 - params[i2], 2) * x1 + 2 * (1 - params[i2]) * params[i2] * x22 + params[i2] * params[i2] * x32; - curY = Math.pow(1 - params[i2], 2) * y1 + 2 * (1 - params[i2]) * params[i2] * y22 + params[i2] * params[i2] * y32; - distSquared = Math.pow(curX - x5, 2) + Math.pow(curY - y5, 2); - if (minDistanceSquared >= 0) { - if (distSquared < minDistanceSquared) { - minDistanceSquared = distSquared; - } - } else { - minDistanceSquared = distSquared; - } + constructor(_definition) { + this._definition = _definition; } - return minDistanceSquared; - }, "sqdistToQuadraticBezier"); - sqdistToFiniteLine = /* @__PURE__ */ __name(function sqdistToFiniteLine2(x5, y5, x1, y1, x22, y22) { - var offset = [x5 - x1, y5 - y1]; - var line2 = [x22 - x1, y22 - y1]; - var lineSq = line2[0] * line2[0] + line2[1] * line2[1]; - var hypSq = offset[0] * offset[0] + offset[1] * offset[1]; - var dotProduct = offset[0] * line2[0] + offset[1] * line2[1]; - var adjSq = dotProduct * dotProduct / lineSq; - if (dotProduct < 0) { - return hypSq; + accept(visitor2) { + visitor2.visit(this); + forEach_default(this.definition, (prod) => { + prod.accept(visitor2); + }); } - if (adjSq > lineSq) { - return (x5 - x22) * (x5 - x22) + (y5 - y22) * (y5 - y22); + }; + NonTerminal = class extends AbstractProduction { + static { + __name(this, "NonTerminal"); } - return hypSq - adjSq; - }, "sqdistToFiniteLine"); - pointInsidePolygonPoints = /* @__PURE__ */ __name(function pointInsidePolygonPoints2(x5, y5, points) { - var x1, y1, x22, y22; - var y32; - var up = 0; - for (var i2 = 0; i2 < points.length / 2; i2++) { - x1 = points[i2 * 2]; - y1 = points[i2 * 2 + 1]; - if (i2 + 1 < points.length / 2) { - x22 = points[(i2 + 1) * 2]; - y22 = points[(i2 + 1) * 2 + 1]; - } else { - x22 = points[(i2 + 1 - points.length / 2) * 2]; - y22 = points[(i2 + 1 - points.length / 2) * 2 + 1]; - } - if (x1 == x5 && x22 == x5) ; - else if (x1 >= x5 && x5 >= x22 || x1 <= x5 && x5 <= x22) { - y32 = (x5 - x1) / (x22 - x1) * (y22 - y1) + y1; - if (y32 > y5) { - up++; - } - } else { - continue; - } + constructor(options2) { + super([]); + this.idx = 1; + assign_default(this, pickBy_default(options2, (v3) => v3 !== void 0)); } - if (up % 2 === 0) { - return false; - } else { - return true; + set definition(definition) { } - }, "pointInsidePolygonPoints"); - pointInsidePolygon = /* @__PURE__ */ __name(function pointInsidePolygon2(x5, y5, basePoints, centerX, centerY, width3, height2, direction, padding2) { - var transformedPoints = new Array(basePoints.length); - var angle2; - if (direction[0] != null) { - angle2 = Math.atan(direction[1] / direction[0]); - if (direction[0] < 0) { - angle2 = angle2 + Math.PI / 2; - } else { - angle2 = -angle2 - Math.PI / 2; + get definition() { + if (this.referencedRule !== void 0) { + return this.referencedRule.definition; } - } else { - angle2 = direction; + return []; } - var cos3 = Math.cos(-angle2); - var sin3 = Math.sin(-angle2); - for (var i2 = 0; i2 < transformedPoints.length / 2; i2++) { - transformedPoints[i2 * 2] = width3 / 2 * (basePoints[i2 * 2] * cos3 - basePoints[i2 * 2 + 1] * sin3); - transformedPoints[i2 * 2 + 1] = height2 / 2 * (basePoints[i2 * 2 + 1] * cos3 + basePoints[i2 * 2] * sin3); - transformedPoints[i2 * 2] += centerX; - transformedPoints[i2 * 2 + 1] += centerY; + accept(visitor2) { + visitor2.visit(this); } - var points; - if (padding2 > 0) { - var expandedLineSet = expandPolygon(transformedPoints, -padding2); - points = joinLines(expandedLineSet); - } else { - points = transformedPoints; + }; + Rule = class extends AbstractProduction { + static { + __name(this, "Rule"); } - return pointInsidePolygonPoints(x5, y5, points); - }, "pointInsidePolygon"); - pointInsideRoundPolygon = /* @__PURE__ */ __name(function pointInsideRoundPolygon2(x5, y5, basePoints, centerX, centerY, width3, height2, corners) { - var cutPolygonPoints = new Array(basePoints.length * 2); - for (var i2 = 0; i2 < corners.length; i2++) { - var corner = corners[i2]; - cutPolygonPoints[i2 * 4 + 0] = corner.startX; - cutPolygonPoints[i2 * 4 + 1] = corner.startY; - cutPolygonPoints[i2 * 4 + 2] = corner.stopX; - cutPolygonPoints[i2 * 4 + 3] = corner.stopY; - var squaredDistance = Math.pow(corner.cx - x5, 2) + Math.pow(corner.cy - y5, 2); - if (squaredDistance <= Math.pow(corner.radius, 2)) { - return true; - } + constructor(options2) { + super(options2.definition); + this.orgText = ""; + assign_default(this, pickBy_default(options2, (v3) => v3 !== void 0)); } - return pointInsidePolygonPoints(x5, y5, cutPolygonPoints); - }, "pointInsideRoundPolygon"); - joinLines = /* @__PURE__ */ __name(function joinLines2(lineSet) { - var vertices = new Array(lineSet.length / 2); - var currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY; - var nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY; - for (var i2 = 0; i2 < lineSet.length / 4; i2++) { - currentLineStartX = lineSet[i2 * 4]; - currentLineStartY = lineSet[i2 * 4 + 1]; - currentLineEndX = lineSet[i2 * 4 + 2]; - currentLineEndY = lineSet[i2 * 4 + 3]; - if (i2 < lineSet.length / 4 - 1) { - nextLineStartX = lineSet[(i2 + 1) * 4]; - nextLineStartY = lineSet[(i2 + 1) * 4 + 1]; - nextLineEndX = lineSet[(i2 + 1) * 4 + 2]; - nextLineEndY = lineSet[(i2 + 1) * 4 + 3]; - } else { - nextLineStartX = lineSet[0]; - nextLineStartY = lineSet[1]; - nextLineEndX = lineSet[2]; - nextLineEndY = lineSet[3]; - } - var intersection4 = finiteLinesIntersect(currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY, nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY, true); - vertices[i2 * 2] = intersection4[0]; - vertices[i2 * 2 + 1] = intersection4[1]; + }; + Alternative = class extends AbstractProduction { + static { + __name(this, "Alternative"); } - return vertices; - }, "joinLines"); - expandPolygon = /* @__PURE__ */ __name(function expandPolygon2(points, pad3) { - var expandedLineSet = new Array(points.length * 2); - var currentPointX, currentPointY, nextPointX, nextPointY; - for (var i2 = 0; i2 < points.length / 2; i2++) { - currentPointX = points[i2 * 2]; - currentPointY = points[i2 * 2 + 1]; - if (i2 < points.length / 2 - 1) { - nextPointX = points[(i2 + 1) * 2]; - nextPointY = points[(i2 + 1) * 2 + 1]; - } else { - nextPointX = points[0]; - nextPointY = points[1]; - } - var offsetX = nextPointY - currentPointY; - var offsetY = -(nextPointX - currentPointX); - var offsetLength = Math.sqrt(offsetX * offsetX + offsetY * offsetY); - var normalizedOffsetX = offsetX / offsetLength; - var normalizedOffsetY = offsetY / offsetLength; - expandedLineSet[i2 * 4] = currentPointX + normalizedOffsetX * pad3; - expandedLineSet[i2 * 4 + 1] = currentPointY + normalizedOffsetY * pad3; - expandedLineSet[i2 * 4 + 2] = nextPointX + normalizedOffsetX * pad3; - expandedLineSet[i2 * 4 + 3] = nextPointY + normalizedOffsetY * pad3; + constructor(options2) { + super(options2.definition); + this.ignoreAmbiguities = false; + assign_default(this, pickBy_default(options2, (v3) => v3 !== void 0)); } - return expandedLineSet; - }, "expandPolygon"); - intersectLineEllipse = /* @__PURE__ */ __name(function intersectLineEllipse2(x5, y5, centerX, centerY, ellipseWradius, ellipseHradius) { - var dispX = centerX - x5; - var dispY = centerY - y5; - dispX /= ellipseWradius; - dispY /= ellipseHradius; - var len = Math.sqrt(dispX * dispX + dispY * dispY); - var newLength = len - 1; - if (newLength < 0) { - return []; + }; + Option2 = class extends AbstractProduction { + static { + __name(this, "Option"); } - var lenProportion = newLength / len; - return [(centerX - x5) * lenProportion + x5, (centerY - y5) * lenProportion + y5]; - }, "intersectLineEllipse"); - checkInEllipse = /* @__PURE__ */ __name(function checkInEllipse2(x5, y5, width3, height2, centerX, centerY, padding2) { - x5 -= centerX; - y5 -= centerY; - x5 /= width3 / 2 + padding2; - y5 /= height2 / 2 + padding2; - return x5 * x5 + y5 * y5 <= 1; - }, "checkInEllipse"); - intersectLineCircle = /* @__PURE__ */ __name(function intersectLineCircle2(x1, y1, x22, y22, centerX, centerY, radius2) { - var d2 = [x22 - x1, y22 - y1]; - var f2 = [x1 - centerX, y1 - centerY]; - var a2 = d2[0] * d2[0] + d2[1] * d2[1]; - var b2 = 2 * (f2[0] * d2[0] + f2[1] * d2[1]); - var c3 = f2[0] * f2[0] + f2[1] * f2[1] - radius2 * radius2; - var discriminant = b2 * b2 - 4 * a2 * c3; - if (discriminant < 0) { - return []; + constructor(options2) { + super(options2.definition); + this.idx = 1; + assign_default(this, pickBy_default(options2, (v3) => v3 !== void 0)); } - var t13 = (-b2 + Math.sqrt(discriminant)) / (2 * a2); - var t22 = (-b2 - Math.sqrt(discriminant)) / (2 * a2); - var tMin = Math.min(t13, t22); - var tMax = Math.max(t13, t22); - var inRangeParams = []; - if (tMin >= 0 && tMin <= 1) { - inRangeParams.push(tMin); + }; + RepetitionMandatory = class extends AbstractProduction { + static { + __name(this, "RepetitionMandatory"); } - if (tMax >= 0 && tMax <= 1) { - inRangeParams.push(tMax); + constructor(options2) { + super(options2.definition); + this.idx = 1; + assign_default(this, pickBy_default(options2, (v3) => v3 !== void 0)); } - if (inRangeParams.length === 0) { - return []; + }; + RepetitionMandatoryWithSeparator = class extends AbstractProduction { + static { + __name(this, "RepetitionMandatoryWithSeparator"); } - var nearIntersectionX = inRangeParams[0] * d2[0] + x1; - var nearIntersectionY = inRangeParams[0] * d2[1] + y1; - if (inRangeParams.length > 1) { - if (inRangeParams[0] == inRangeParams[1]) { - return [nearIntersectionX, nearIntersectionY]; - } else { - var farIntersectionX = inRangeParams[1] * d2[0] + x1; - var farIntersectionY = inRangeParams[1] * d2[1] + y1; - return [nearIntersectionX, nearIntersectionY, farIntersectionX, farIntersectionY]; - } - } else { - return [nearIntersectionX, nearIntersectionY]; + constructor(options2) { + super(options2.definition); + this.idx = 1; + assign_default(this, pickBy_default(options2, (v3) => v3 !== void 0)); } - }, "intersectLineCircle"); - midOfThree = /* @__PURE__ */ __name(function midOfThree2(a2, b2, c3) { - if (b2 <= a2 && a2 <= c3 || c3 <= a2 && a2 <= b2) { - return a2; - } else if (a2 <= b2 && b2 <= c3 || c3 <= b2 && b2 <= a2) { - return b2; - } else { - return c3; + }; + Repetition = class extends AbstractProduction { + static { + __name(this, "Repetition"); } - }, "midOfThree"); - finiteLinesIntersect = /* @__PURE__ */ __name(function finiteLinesIntersect2(x1, y1, x22, y22, x32, y32, x42, y42, infiniteLines) { - var dx13 = x1 - x32; - var dx21 = x22 - x1; - var dx43 = x42 - x32; - var dy13 = y1 - y32; - var dy21 = y22 - y1; - var dy43 = y42 - y32; - var ua_t = dx43 * dy13 - dy43 * dx13; - var ub_t = dx21 * dy13 - dy21 * dx13; - var u_b = dy43 * dx21 - dx43 * dy21; - if (u_b !== 0) { - var ua = ua_t / u_b; - var ub = ub_t / u_b; - var flptThreshold = 1e-3; - var _min = 0 - flptThreshold; - var _max = 1 + flptThreshold; - if (_min <= ua && ua <= _max && _min <= ub && ub <= _max) { - return [x1 + ua * dx21, y1 + ua * dy21]; - } else { - if (!infiniteLines) { - return []; - } else { - return [x1 + ua * dx21, y1 + ua * dy21]; - } - } - } else { - if (ua_t === 0 || ub_t === 0) { - if (midOfThree(x1, x22, x42) === x42) { - return [x42, y42]; - } - if (midOfThree(x1, x22, x32) === x32) { - return [x32, y32]; - } - if (midOfThree(x32, x42, x22) === x22) { - return [x22, y22]; - } - return []; - } else { - return []; - } + constructor(options2) { + super(options2.definition); + this.idx = 1; + assign_default(this, pickBy_default(options2, (v3) => v3 !== void 0)); } - }, "finiteLinesIntersect"); - polygonIntersectLine = /* @__PURE__ */ __name(function polygonIntersectLine2(x5, y5, basePoints, centerX, centerY, width3, height2, padding2) { - var intersections = []; - var intersection4; - var transformedPoints = new Array(basePoints.length); - var doTransform = true; - if (width3 == null) { - doTransform = false; + }; + RepetitionWithSeparator = class extends AbstractProduction { + static { + __name(this, "RepetitionWithSeparator"); } - var points; - if (doTransform) { - for (var i2 = 0; i2 < transformedPoints.length / 2; i2++) { - transformedPoints[i2 * 2] = basePoints[i2 * 2] * width3 + centerX; - transformedPoints[i2 * 2 + 1] = basePoints[i2 * 2 + 1] * height2 + centerY; - } - if (padding2 > 0) { - var expandedLineSet = expandPolygon(transformedPoints, -padding2); - points = joinLines(expandedLineSet); - } else { - points = transformedPoints; - } - } else { - points = basePoints; + constructor(options2) { + super(options2.definition); + this.idx = 1; + assign_default(this, pickBy_default(options2, (v3) => v3 !== void 0)); } - var currentX, currentY, nextX, nextY; - for (var _i2 = 0; _i2 < points.length / 2; _i2++) { - currentX = points[_i2 * 2]; - currentY = points[_i2 * 2 + 1]; - if (_i2 < points.length / 2 - 1) { - nextX = points[(_i2 + 1) * 2]; - nextY = points[(_i2 + 1) * 2 + 1]; - } else { - nextX = points[0]; - nextY = points[1]; - } - intersection4 = finiteLinesIntersect(x5, y5, centerX, centerY, currentX, currentY, nextX, nextY); - if (intersection4.length !== 0) { - intersections.push(intersection4[0], intersection4[1]); - } + }; + Alternation = class extends AbstractProduction { + static { + __name(this, "Alternation"); } - return intersections; - }, "polygonIntersectLine"); - roundPolygonIntersectLine = /* @__PURE__ */ __name(function roundPolygonIntersectLine2(x5, y5, basePoints, centerX, centerY, width3, height2, padding2, corners) { - var intersections = []; - var intersection4; - var lines = new Array(basePoints.length * 2); - corners.forEach(function(corner, i3) { - if (i3 === 0) { - lines[lines.length - 2] = corner.startX; - lines[lines.length - 1] = corner.startY; - } else { - lines[i3 * 4 - 2] = corner.startX; - lines[i3 * 4 - 1] = corner.startY; - } - lines[i3 * 4] = corner.stopX; - lines[i3 * 4 + 1] = corner.stopY; - intersection4 = intersectLineCircle(x5, y5, centerX, centerY, corner.cx, corner.cy, corner.radius); - if (intersection4.length !== 0) { - intersections.push(intersection4[0], intersection4[1]); - } - }); - for (var i2 = 0; i2 < lines.length / 4; i2++) { - intersection4 = finiteLinesIntersect(x5, y5, centerX, centerY, lines[i2 * 4], lines[i2 * 4 + 1], lines[i2 * 4 + 2], lines[i2 * 4 + 3], false); - if (intersection4.length !== 0) { - intersections.push(intersection4[0], intersection4[1]); - } + get definition() { + return this._definition; } - if (intersections.length > 2) { - var lowestIntersection = [intersections[0], intersections[1]]; - var lowestSquaredDistance = Math.pow(lowestIntersection[0] - x5, 2) + Math.pow(lowestIntersection[1] - y5, 2); - for (var _i3 = 1; _i3 < intersections.length / 2; _i3++) { - var squaredDistance = Math.pow(intersections[_i3 * 2] - x5, 2) + Math.pow(intersections[_i3 * 2 + 1] - y5, 2); - if (squaredDistance <= lowestSquaredDistance) { - lowestIntersection[0] = intersections[_i3 * 2]; - lowestIntersection[1] = intersections[_i3 * 2 + 1]; - lowestSquaredDistance = squaredDistance; - } - } - return lowestIntersection; + set definition(value2) { + this._definition = value2; } - return intersections; - }, "roundPolygonIntersectLine"); - shortenIntersection = /* @__PURE__ */ __name(function shortenIntersection2(intersection4, offset, amount) { - var disp = [intersection4[0] - offset[0], intersection4[1] - offset[1]]; - var length2 = Math.sqrt(disp[0] * disp[0] + disp[1] * disp[1]); - var lenRatio = (length2 - amount) / length2; - if (lenRatio < 0) { - lenRatio = 1e-5; + constructor(options2) { + super(options2.definition); + this.idx = 1; + this.ignoreAmbiguities = false; + this.hasPredicates = false; + assign_default(this, pickBy_default(options2, (v3) => v3 !== void 0)); } - return [offset[0] + lenRatio * disp[0], offset[1] + lenRatio * disp[1]]; - }, "shortenIntersection"); - generateUnitNgonPointsFitToSquare = /* @__PURE__ */ __name(function generateUnitNgonPointsFitToSquare2(sides, rotationRadians) { - var points = generateUnitNgonPoints(sides, rotationRadians); - points = fitPolygonToSquare(points); - return points; - }, "generateUnitNgonPointsFitToSquare"); - fitPolygonToSquare = /* @__PURE__ */ __name(function fitPolygonToSquare2(points) { - var x5, y5; - var sides = points.length / 2; - var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity; - for (var i2 = 0; i2 < sides; i2++) { - x5 = points[2 * i2]; - y5 = points[2 * i2 + 1]; - minX = Math.min(minX, x5); - maxX = Math.max(maxX, x5); - minY = Math.min(minY, y5); - maxY = Math.max(maxY, y5); + }; + Terminal = class { + static { + __name(this, "Terminal"); } - var sx = 2 / (maxX - minX); - var sy = 2 / (maxY - minY); - for (var _i4 = 0; _i4 < sides; _i4++) { - x5 = points[2 * _i4] = points[2 * _i4] * sx; - y5 = points[2 * _i4 + 1] = points[2 * _i4 + 1] * sy; - minX = Math.min(minX, x5); - maxX = Math.max(maxX, x5); - minY = Math.min(minY, y5); - maxY = Math.max(maxY, y5); + constructor(options2) { + this.idx = 1; + assign_default(this, pickBy_default(options2, (v3) => v3 !== void 0)); } - if (minY < -1) { - for (var _i5 = 0; _i5 < sides; _i5++) { - y5 = points[2 * _i5 + 1] = points[2 * _i5 + 1] + (-1 - minY); - } + accept(visitor2) { + visitor2.visit(this); } - return points; - }, "fitPolygonToSquare"); - generateUnitNgonPoints = /* @__PURE__ */ __name(function generateUnitNgonPoints2(sides, rotationRadians) { - var increment = 1 / sides * 2 * Math.PI; - var startAngle = sides % 2 === 0 ? Math.PI / 2 + increment / 2 : Math.PI / 2; - startAngle += rotationRadians; - var points = new Array(sides * 2); - var currentAngle; - for (var i2 = 0; i2 < sides; i2++) { - currentAngle = i2 * increment + startAngle; - points[2 * i2] = Math.cos(currentAngle); - points[2 * i2 + 1] = Math.sin(-currentAngle); + }; + __name(serializeGrammar, "serializeGrammar"); + __name(serializeProduction, "serializeProduction"); + } + }); + + // ../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/visitor.js + var GAstVisitor; + var init_visitor = __esm({ + "../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/visitor.js"() { + "use strict"; + init_model(); + GAstVisitor = class { + static { + __name(this, "GAstVisitor"); } - return points; - }, "generateUnitNgonPoints"); - getRoundRectangleRadius = /* @__PURE__ */ __name(function getRoundRectangleRadius2(width3, height2) { - return Math.min(width3 / 4, height2 / 4, 8); - }, "getRoundRectangleRadius"); - getRoundPolygonRadius = /* @__PURE__ */ __name(function getRoundPolygonRadius2(width3, height2) { - return Math.min(width3 / 10, height2 / 10, 8); - }, "getRoundPolygonRadius"); - getCutRectangleCornerLength = /* @__PURE__ */ __name(function getCutRectangleCornerLength2() { - return 8; - }, "getCutRectangleCornerLength"); - bezierPtsToQuadCoeff = /* @__PURE__ */ __name(function bezierPtsToQuadCoeff2(p0, p1, p22) { - return [p0 - 2 * p1 + p22, 2 * (p1 - p0), p0]; - }, "bezierPtsToQuadCoeff"); - getBarrelCurveConstants = /* @__PURE__ */ __name(function getBarrelCurveConstants2(width3, height2) { - return { - heightOffset: Math.min(15, 0.05 * height2), - widthOffset: Math.min(100, 0.25 * width3), - ctrlPtOffsetPct: 0.05 - }; - }, "getBarrelCurveConstants"); - pageRankDefaults = defaults$g({ - dampingFactor: 0.8, - precision: 1e-6, - iterations: 200, - weight: /* @__PURE__ */ __name(function weight5(edge) { - return 1; - }, "weight") - }); - elesfn$o = { - pageRank: /* @__PURE__ */ __name(function pageRank(options3) { - var _pageRankDefaults = pageRankDefaults(options3), dampingFactor = _pageRankDefaults.dampingFactor, precision = _pageRankDefaults.precision, iterations = _pageRankDefaults.iterations, weight8 = _pageRankDefaults.weight; - var cy = this._private.cy; - var _this$byGroup = this.byGroup(), nodes6 = _this$byGroup.nodes, edges3 = _this$byGroup.edges; - var numNodes = nodes6.length; - var numNodesSqd = numNodes * numNodes; - var numEdges = edges3.length; - var matrix = new Array(numNodesSqd); - var columnSum = new Array(numNodes); - var additionalProb = (1 - dampingFactor) / numNodes; - for (var i2 = 0; i2 < numNodes; i2++) { - for (var j2 = 0; j2 < numNodes; j2++) { - var n2 = i2 * numNodes + j2; - matrix[n2] = 0; - } - columnSum[i2] = 0; - } - for (var _i = 0; _i < numEdges; _i++) { - var edge = edges3[_i]; - var srcId = edge.data("source"); - var tgtId = edge.data("target"); - if (srcId === tgtId) { - continue; - } - var s2 = nodes6.indexOfId(srcId); - var t4 = nodes6.indexOfId(tgtId); - var w3 = weight8(edge); - var _n = t4 * numNodes + s2; - matrix[_n] += w3; - columnSum[s2] += w3; - } - var p3 = 1 / numNodes + additionalProb; - for (var _j = 0; _j < numNodes; _j++) { - if (columnSum[_j] === 0) { - for (var _i2 = 0; _i2 < numNodes; _i2++) { - var _n2 = _i2 * numNodes + _j; - matrix[_n2] = p3; - } - } else { - for (var _i3 = 0; _i3 < numNodes; _i3++) { - var _n3 = _i3 * numNodes + _j; - matrix[_n3] = matrix[_n3] / columnSum[_j] + additionalProb; - } - } - } - var eigenvector = new Array(numNodes); - var temp = new Array(numNodes); - var previous; - for (var _i4 = 0; _i4 < numNodes; _i4++) { - eigenvector[_i4] = 1; - } - for (var iter = 0; iter < iterations; iter++) { - for (var _i5 = 0; _i5 < numNodes; _i5++) { - temp[_i5] = 0; - } - for (var _i6 = 0; _i6 < numNodes; _i6++) { - for (var _j2 = 0; _j2 < numNodes; _j2++) { - var _n4 = _i6 * numNodes + _j2; - temp[_i6] += matrix[_n4] * eigenvector[_j2]; - } - } - inPlaceSumNormalize(temp); - previous = eigenvector; - eigenvector = temp; - temp = previous; - var diff2 = 0; - for (var _i7 = 0; _i7 < numNodes; _i7++) { - var delta = previous[_i7] - eigenvector[_i7]; - diff2 += delta * delta; - } - if (diff2 < precision) { - break; - } + visit(node2) { + const nodeAny = node2; + switch (nodeAny.constructor) { + case NonTerminal: + return this.visitNonTerminal(nodeAny); + case Alternative: + return this.visitAlternative(nodeAny); + case Option2: + return this.visitOption(nodeAny); + case RepetitionMandatory: + return this.visitRepetitionMandatory(nodeAny); + case RepetitionMandatoryWithSeparator: + return this.visitRepetitionMandatoryWithSeparator(nodeAny); + case RepetitionWithSeparator: + return this.visitRepetitionWithSeparator(nodeAny); + case Repetition: + return this.visitRepetition(nodeAny); + case Alternation: + return this.visitAlternation(nodeAny); + case Terminal: + return this.visitTerminal(nodeAny); + case Rule: + return this.visitRule(nodeAny); + /* c8 ignore next 2 */ + default: + throw Error("non exhaustive match"); } - var res = { - rank: /* @__PURE__ */ __name(function rank2(node2) { - node2 = cy.collection(node2)[0]; - return eigenvector[nodes6.indexOf(node2)]; - }, "rank") - }; - return res; - }, "pageRank") - // pageRank + } + /* c8 ignore next */ + visitNonTerminal(node2) { + } + /* c8 ignore next */ + visitAlternative(node2) { + } + /* c8 ignore next */ + visitOption(node2) { + } + /* c8 ignore next */ + visitRepetition(node2) { + } + /* c8 ignore next */ + visitRepetitionMandatory(node2) { + } + /* c8 ignore next 3 */ + visitRepetitionMandatoryWithSeparator(node2) { + } + /* c8 ignore next */ + visitRepetitionWithSeparator(node2) { + } + /* c8 ignore next */ + visitAlternation(node2) { + } + /* c8 ignore next */ + visitTerminal(node2) { + } + /* c8 ignore next */ + visitRule(node2) { + } }; - defaults$f = defaults$g({ - root: null, - weight: /* @__PURE__ */ __name(function weight6(edge) { - return 1; - }, "weight"), - directed: false, - alpha: 0 + } + }); + + // ../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/helpers.js + function isSequenceProd(prod) { + return prod instanceof Alternative || prod instanceof Option2 || prod instanceof Repetition || prod instanceof RepetitionMandatory || prod instanceof RepetitionMandatoryWithSeparator || prod instanceof RepetitionWithSeparator || prod instanceof Terminal || prod instanceof Rule; + } + function isOptionalProd(prod, alreadyVisited = []) { + const isDirectlyOptional = prod instanceof Option2 || prod instanceof Repetition || prod instanceof RepetitionWithSeparator; + if (isDirectlyOptional) { + return true; + } + if (prod instanceof Alternation) { + return some_default(prod.definition, (subProd) => { + return isOptionalProd(subProd, alreadyVisited); }); - elesfn$n = { - degreeCentralityNormalized: /* @__PURE__ */ __name(function degreeCentralityNormalized(options3) { - options3 = defaults$f(options3); - var cy = this.cy(); - var nodes6 = this.nodes(); - var numNodes = nodes6.length; - if (!options3.directed) { - var degrees3 = {}; - var maxDegree = 0; - for (var i2 = 0; i2 < numNodes; i2++) { - var node2 = nodes6[i2]; - options3.root = node2; - var currDegree = this.degreeCentrality(options3); - if (maxDegree < currDegree.degree) { - maxDegree = currDegree.degree; - } - degrees3[node2.id()] = currDegree.degree; - } - return { - degree: /* @__PURE__ */ __name(function degree(node3) { - if (maxDegree === 0) { - return 0; - } - if (string(node3)) { - node3 = cy.filter(node3); - } - return degrees3[node3.id()] / maxDegree; - }, "degree") - }; - } else { - var indegrees = {}; - var outdegrees = {}; - var maxIndegree = 0; - var maxOutdegree = 0; - for (var _i = 0; _i < numNodes; _i++) { - var _node = nodes6[_i]; - var id29 = _node.id(); - options3.root = _node; - var _currDegree = this.degreeCentrality(options3); - if (maxIndegree < _currDegree.indegree) maxIndegree = _currDegree.indegree; - if (maxOutdegree < _currDegree.outdegree) maxOutdegree = _currDegree.outdegree; - indegrees[id29] = _currDegree.indegree; - outdegrees[id29] = _currDegree.outdegree; - } - return { - indegree: /* @__PURE__ */ __name(function indegree(node3) { - if (maxIndegree == 0) { - return 0; - } - if (string(node3)) { - node3 = cy.filter(node3); - } - return indegrees[node3.id()] / maxIndegree; - }, "indegree"), - outdegree: /* @__PURE__ */ __name(function outdegree(node3) { - if (maxOutdegree === 0) { - return 0; - } - if (string(node3)) { - node3 = cy.filter(node3); - } - return outdegrees[node3.id()] / maxOutdegree; - }, "outdegree") - }; - } - }, "degreeCentralityNormalized"), - // degreeCentralityNormalized - // Implemented from the algorithm in Opsahl's paper - // "Node centrality in weighted networks: Generalizing degree and shortest paths" - // check the heading 2 "Degree" - degreeCentrality: /* @__PURE__ */ __name(function degreeCentrality(options3) { - options3 = defaults$f(options3); - var cy = this.cy(); - var callingEles = this; - var _options = options3, root4 = _options.root, weight8 = _options.weight, directed = _options.directed, alpha = _options.alpha; - root4 = cy.collection(root4)[0]; - if (!directed) { - var connEdges = root4.connectedEdges().intersection(callingEles); - var k2 = connEdges.length; - var s2 = 0; - for (var i2 = 0; i2 < connEdges.length; i2++) { - s2 += weight8(connEdges[i2]); - } - return { - degree: Math.pow(k2, 1 - alpha) * Math.pow(s2, alpha) - }; - } else { - var edges3 = root4.connectedEdges(); - var incoming = edges3.filter(function(edge) { - return edge.target().same(root4) && callingEles.has(edge); - }); - var outgoing = edges3.filter(function(edge) { - return edge.source().same(root4) && callingEles.has(edge); - }); - var k_in = incoming.length; - var k_out = outgoing.length; - var s_in = 0; - var s_out = 0; - for (var _i2 = 0; _i2 < incoming.length; _i2++) { - s_in += weight8(incoming[_i2]); - } - for (var _i3 = 0; _i3 < outgoing.length; _i3++) { - s_out += weight8(outgoing[_i3]); - } - return { - indegree: Math.pow(k_in, 1 - alpha) * Math.pow(s_in, alpha), - outdegree: Math.pow(k_out, 1 - alpha) * Math.pow(s_out, alpha) - }; - } - }, "degreeCentrality") - // degreeCentrality - }; - elesfn$n.dc = elesfn$n.degreeCentrality; - elesfn$n.dcn = elesfn$n.degreeCentralityNormalised = elesfn$n.degreeCentralityNormalized; - defaults$e = defaults$g({ - harmonic: true, - weight: /* @__PURE__ */ __name(function weight7() { - return 1; - }, "weight"), - directed: false, - root: null - }); - elesfn$m = { - closenessCentralityNormalized: /* @__PURE__ */ __name(function closenessCentralityNormalized(options3) { - var _defaults2 = defaults$e(options3), harmonic = _defaults2.harmonic, weight8 = _defaults2.weight, directed = _defaults2.directed; - var cy = this.cy(); - var closenesses = {}; - var maxCloseness = 0; - var nodes6 = this.nodes(); - var fw = this.floydWarshall({ - weight: weight8, - directed - }); - for (var i2 = 0; i2 < nodes6.length; i2++) { - var currCloseness = 0; - var node_i = nodes6[i2]; - for (var j2 = 0; j2 < nodes6.length; j2++) { - if (i2 !== j2) { - var d2 = fw.distance(node_i, nodes6[j2]); - if (harmonic) { - currCloseness += 1 / d2; - } else { - currCloseness += d2; - } - } - } - if (!harmonic) { - currCloseness = 1 / currCloseness; - } - if (maxCloseness < currCloseness) { - maxCloseness = currCloseness; - } - closenesses[node_i.id()] = currCloseness; - } - return { - closeness: /* @__PURE__ */ __name(function closeness(node2) { - if (maxCloseness == 0) { - return 0; - } - if (string(node2)) { - node2 = cy.filter(node2)[0].id(); - } else { - node2 = node2.id(); - } - return closenesses[node2] / maxCloseness; - }, "closeness") - }; - }, "closenessCentralityNormalized"), - // Implemented from pseudocode from wikipedia - closenessCentrality: /* @__PURE__ */ __name(function closenessCentrality(options3) { - var _defaults2 = defaults$e(options3), root4 = _defaults2.root, weight8 = _defaults2.weight, directed = _defaults2.directed, harmonic = _defaults2.harmonic; - root4 = this.filter(root4)[0]; - var dijkstra3 = this.dijkstra({ - root: root4, - weight: weight8, - directed - }); - var totalDistance = 0; - var nodes6 = this.nodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - var n2 = nodes6[i2]; - if (!n2.same(root4)) { - var d2 = dijkstra3.distanceTo(n2); - if (harmonic) { - totalDistance += 1 / d2; - } else { - totalDistance += d2; - } - } - } - return harmonic ? totalDistance : 1 / totalDistance; - }, "closenessCentrality") - // closenessCentrality - }; - elesfn$m.cc = elesfn$m.closenessCentrality; - elesfn$m.ccn = elesfn$m.closenessCentralityNormalised = elesfn$m.closenessCentralityNormalized; - defaults$d = defaults$g({ - weight: null, - directed: false + } else if (prod instanceof NonTerminal && includes_default(alreadyVisited, prod)) { + return false; + } else if (prod instanceof AbstractProduction) { + if (prod instanceof NonTerminal) { + alreadyVisited.push(prod); + } + return every_default(prod.definition, (subProd) => { + return isOptionalProd(subProd, alreadyVisited); }); - elesfn$l = { - // Implemented from the algorithm in the paper "On Variants of Shortest-Path Betweenness Centrality and their Generic Computation" by Ulrik Brandes - betweennessCentrality: /* @__PURE__ */ __name(function betweennessCentrality(options3) { - var _defaults2 = defaults$d(options3), directed = _defaults2.directed, weight8 = _defaults2.weight; - var weighted = weight8 != null; - var cy = this.cy(); - var V2 = this.nodes(); - var A2 = {}; - var _C = {}; - var max10 = 0; - var C2 = { - set: /* @__PURE__ */ __name(function set6(key, val) { - _C[key] = val; - if (val > max10) { - max10 = val; - } - }, "set"), - get: /* @__PURE__ */ __name(function get6(key) { - return _C[key]; - }, "get") - }; - for (var i2 = 0; i2 < V2.length; i2++) { - var v3 = V2[i2]; - var vid = v3.id(); - if (directed) { - A2[vid] = v3.outgoers().nodes(); + } else { + return false; + } + } + function isBranchingProd(prod) { + return prod instanceof Alternation; + } + function getProductionDslName(prod) { + if (prod instanceof NonTerminal) { + return "SUBRULE"; + } else if (prod instanceof Option2) { + return "OPTION"; + } else if (prod instanceof Alternation) { + return "OR"; + } else if (prod instanceof RepetitionMandatory) { + return "AT_LEAST_ONE"; + } else if (prod instanceof RepetitionMandatoryWithSeparator) { + return "AT_LEAST_ONE_SEP"; + } else if (prod instanceof RepetitionWithSeparator) { + return "MANY_SEP"; + } else if (prod instanceof Repetition) { + return "MANY"; + } else if (prod instanceof Terminal) { + return "CONSUME"; + } else { + throw Error("non exhaustive match"); + } + } + var init_helpers = __esm({ + "../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/helpers.js"() { + "use strict"; + init_lodash(); + init_model(); + __name(isSequenceProd, "isSequenceProd"); + __name(isOptionalProd, "isOptionalProd"); + __name(isBranchingProd, "isBranchingProd"); + __name(getProductionDslName, "getProductionDslName"); + } + }); + + // ../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/api.js + var init_api3 = __esm({ + "../../node_modules/.pnpm/@chevrotain+gast@11.0.3/node_modules/@chevrotain/gast/lib/src/api.js"() { + "use strict"; + init_model(); + init_visitor(); + init_helpers(); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/rest.js + function restForRepetitionWithSeparator(repSepProd, currRest, prevRest) { + const repSepRest = [ + new Option2({ + definition: [ + new Terminal({ terminalType: repSepProd.separator }) + ].concat(repSepProd.definition) + }) + ]; + const fullRepSepRest = repSepRest.concat(currRest, prevRest); + return fullRepSepRest; + } + var RestWalker; + var init_rest = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/rest.js"() { + "use strict"; + init_lodash(); + init_api3(); + RestWalker = class { + static { + __name(this, "RestWalker"); + } + walk(prod, prevRest = []) { + forEach_default(prod.definition, (subProd, index) => { + const currRest = drop_default(prod.definition, index + 1); + if (subProd instanceof NonTerminal) { + this.walkProdRef(subProd, currRest, prevRest); + } else if (subProd instanceof Terminal) { + this.walkTerminal(subProd, currRest, prevRest); + } else if (subProd instanceof Alternative) { + this.walkFlat(subProd, currRest, prevRest); + } else if (subProd instanceof Option2) { + this.walkOption(subProd, currRest, prevRest); + } else if (subProd instanceof RepetitionMandatory) { + this.walkAtLeastOne(subProd, currRest, prevRest); + } else if (subProd instanceof RepetitionMandatoryWithSeparator) { + this.walkAtLeastOneSep(subProd, currRest, prevRest); + } else if (subProd instanceof RepetitionWithSeparator) { + this.walkManySep(subProd, currRest, prevRest); + } else if (subProd instanceof Repetition) { + this.walkMany(subProd, currRest, prevRest); + } else if (subProd instanceof Alternation) { + this.walkOr(subProd, currRest, prevRest); } else { - A2[vid] = v3.openNeighborhood().nodes(); - } - C2.set(vid, 0); - } - var _loop = /* @__PURE__ */ __name(function _loop2(s3) { - var sid = V2[s3].id(); - var S3 = []; - var P2 = {}; - var g2 = {}; - var d2 = {}; - var Q2 = new heap(function(a2, b2) { - return d2[a2] - d2[b2]; - }); - for (var _i = 0; _i < V2.length; _i++) { - var _vid = V2[_i].id(); - P2[_vid] = []; - g2[_vid] = 0; - d2[_vid] = Infinity; - } - g2[sid] = 1; - d2[sid] = 0; - Q2.push(sid); - while (!Q2.empty()) { - var _v = Q2.pop(); - S3.push(_v); - if (weighted) { - for (var j2 = 0; j2 < A2[_v].length; j2++) { - var w3 = A2[_v][j2]; - var vEle = cy.getElementById(_v); - var edge = void 0; - if (vEle.edgesTo(w3).length > 0) { - edge = vEle.edgesTo(w3)[0]; - } else { - edge = w3.edgesTo(vEle)[0]; - } - var edgeWeight = weight8(edge); - w3 = w3.id(); - if (d2[w3] > d2[_v] + edgeWeight) { - d2[w3] = d2[_v] + edgeWeight; - if (Q2.nodes.indexOf(w3) < 0) { - Q2.push(w3); - } else { - Q2.updateItem(w3); - } - g2[w3] = 0; - P2[w3] = []; - } - if (d2[w3] == d2[_v] + edgeWeight) { - g2[w3] = g2[w3] + g2[_v]; - P2[w3].push(_v); - } - } - } else { - for (var _j = 0; _j < A2[_v].length; _j++) { - var _w = A2[_v][_j].id(); - if (d2[_w] == Infinity) { - Q2.push(_w); - d2[_w] = d2[_v] + 1; - } - if (d2[_w] == d2[_v] + 1) { - g2[_w] = g2[_w] + g2[_v]; - P2[_w].push(_v); - } - } - } - } - var e3 = {}; - for (var _i2 = 0; _i2 < V2.length; _i2++) { - e3[V2[_i2].id()] = 0; - } - while (S3.length > 0) { - var _w2 = S3.pop(); - for (var _j2 = 0; _j2 < P2[_w2].length; _j2++) { - var _v2 = P2[_w2][_j2]; - e3[_v2] = e3[_v2] + g2[_v2] / g2[_w2] * (1 + e3[_w2]); - } - if (_w2 != V2[s3].id()) { - C2.set(_w2, C2.get(_w2) + e3[_w2]); - } + throw Error("non exhaustive match"); } - }, "_loop"); - for (var s2 = 0; s2 < V2.length; s2++) { - _loop(s2); - } - var ret = { - betweenness: /* @__PURE__ */ __name(function betweenness(node2) { - var id29 = cy.collection(node2).id(); - return C2.get(id29); - }, "betweenness"), - betweennessNormalized: /* @__PURE__ */ __name(function betweennessNormalized(node2) { - if (max10 == 0) { - return 0; - } - var id29 = cy.collection(node2).id(); - return C2.get(id29) / max10; - }, "betweennessNormalized") - }; - ret.betweennessNormalised = ret.betweennessNormalized; - return ret; - }, "betweennessCentrality") - // betweennessCentrality - }; - elesfn$l.bc = elesfn$l.betweennessCentrality; - defaults$c = defaults$g({ - expandFactor: 2, - // affects time of computation and cluster granularity to some extent: M * M - inflateFactor: 2, - // affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j) - multFactor: 1, - // optional self loops for each node. Use a neutral value to improve cluster computations. - maxIterations: 20, - // maximum number of iterations of the MCL algorithm in a single run - attributes: [ - // attributes/features used to group nodes, ie. similarity values between nodes - function(edge) { - return 1; - } - ] - }); - setOptions$3 = /* @__PURE__ */ __name(function setOptions3(options3) { - return defaults$c(options3); - }, "setOptions"); - getSimilarity$1 = /* @__PURE__ */ __name(function getSimilarity(edge, attributes) { - var total = 0; - for (var i2 = 0; i2 < attributes.length; i2++) { - total += attributes[i2](edge); + }); } - return total; - }, "getSimilarity"); - addLoops = /* @__PURE__ */ __name(function addLoops2(M2, n2, val) { - for (var i2 = 0; i2 < n2; i2++) { - M2[i2 * n2 + i2] = val; + walkTerminal(terminal, currRest, prevRest) { } - }, "addLoops"); - normalize2 = /* @__PURE__ */ __name(function normalize3(M2, n2) { - var sum2; - for (var col = 0; col < n2; col++) { - sum2 = 0; - for (var row = 0; row < n2; row++) { - sum2 += M2[row * n2 + col]; - } - for (var _row = 0; _row < n2; _row++) { - M2[_row * n2 + col] = M2[_row * n2 + col] / sum2; - } + walkProdRef(refProd, currRest, prevRest) { } - }, "normalize"); - mmult = /* @__PURE__ */ __name(function mmult2(A2, B2, n2) { - var C2 = new Array(n2 * n2); - for (var i2 = 0; i2 < n2; i2++) { - for (var j2 = 0; j2 < n2; j2++) { - C2[i2 * n2 + j2] = 0; - } - for (var k2 = 0; k2 < n2; k2++) { - for (var _j = 0; _j < n2; _j++) { - C2[i2 * n2 + _j] += A2[i2 * n2 + k2] * B2[k2 * n2 + _j]; - } - } + walkFlat(flatProd, currRest, prevRest) { + const fullOrRest = currRest.concat(prevRest); + this.walk(flatProd, fullOrRest); } - return C2; - }, "mmult"); - expand = /* @__PURE__ */ __name(function expand2(M2, n2, expandFactor) { - var _M = M2.slice(0); - for (var p3 = 1; p3 < expandFactor; p3++) { - M2 = mmult(M2, _M, n2); + walkOption(optionProd, currRest, prevRest) { + const fullOrRest = currRest.concat(prevRest); + this.walk(optionProd, fullOrRest); } - return M2; - }, "expand"); - inflate = /* @__PURE__ */ __name(function inflate2(M2, n2, inflateFactor) { - var _M = new Array(n2 * n2); - for (var i2 = 0; i2 < n2 * n2; i2++) { - _M[i2] = Math.pow(M2[i2], inflateFactor); + walkAtLeastOne(atLeastOneProd, currRest, prevRest) { + const fullAtLeastOneRest = [ + new Option2({ definition: atLeastOneProd.definition }) + ].concat(currRest, prevRest); + this.walk(atLeastOneProd, fullAtLeastOneRest); } - normalize2(_M, n2); - return _M; - }, "inflate"); - hasConverged = /* @__PURE__ */ __name(function hasConverged2(M2, _M, n2, roundFactor) { - for (var i2 = 0; i2 < n2; i2++) { - var v12 = Math.round(M2[i2] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); - var v22 = Math.round(_M[i2] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); - if (v12 !== v22) { - return false; - } + walkAtLeastOneSep(atLeastOneSepProd, currRest, prevRest) { + const fullAtLeastOneSepRest = restForRepetitionWithSeparator(atLeastOneSepProd, currRest, prevRest); + this.walk(atLeastOneSepProd, fullAtLeastOneSepRest); } - return true; - }, "hasConverged"); - assign$2 = /* @__PURE__ */ __name(function assign2(M2, n2, nodes6, cy) { - var clusters = []; - for (var i2 = 0; i2 < n2; i2++) { - var cluster = []; - for (var j2 = 0; j2 < n2; j2++) { - if (Math.round(M2[i2 * n2 + j2] * 1e3) / 1e3 > 0) { - cluster.push(nodes6[j2]); - } - } - if (cluster.length !== 0) { - clusters.push(cy.collection(cluster)); - } + walkMany(manyProd, currRest, prevRest) { + const fullManyRest = [ + new Option2({ definition: manyProd.definition }) + ].concat(currRest, prevRest); + this.walk(manyProd, fullManyRest); } - return clusters; - }, "assign"); - isDuplicate = /* @__PURE__ */ __name(function isDuplicate2(c1, c22) { - for (var i2 = 0; i2 < c1.length; i2++) { - if (!c22[i2] || c1[i2].id() !== c22[i2].id()) { - return false; - } + walkManySep(manySepProd, currRest, prevRest) { + const fullManySepRest = restForRepetitionWithSeparator(manySepProd, currRest, prevRest); + this.walk(manySepProd, fullManySepRest); } - return true; - }, "isDuplicate"); - removeDuplicates = /* @__PURE__ */ __name(function removeDuplicates2(clusters) { - for (var i2 = 0; i2 < clusters.length; i2++) { - for (var j2 = 0; j2 < clusters.length; j2++) { - if (i2 != j2 && isDuplicate(clusters[i2], clusters[j2])) { - clusters.splice(j2, 1); - } - } + walkOr(orProd, currRest, prevRest) { + const fullOrRest = currRest.concat(prevRest); + forEach_default(orProd.definition, (alt) => { + const prodWrapper = new Alternative({ definition: [alt] }); + this.walk(prodWrapper, fullOrRest); + }); } - return clusters; - }, "removeDuplicates"); - markovClustering = /* @__PURE__ */ __name(function markovClustering2(options3) { - var nodes6 = this.nodes(); - var edges3 = this.edges(); - var cy = this.cy(); - var opts = setOptions$3(options3); - var id2position = {}; - for (var i2 = 0; i2 < nodes6.length; i2++) { - id2position[nodes6[i2].id()] = i2; + }; + __name(restForRepetitionWithSeparator, "restForRepetitionWithSeparator"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/first.js + function first2(prod) { + if (prod instanceof NonTerminal) { + return first2(prod.referencedRule); + } else if (prod instanceof Terminal) { + return firstForTerminal(prod); + } else if (isSequenceProd(prod)) { + return firstForSequence(prod); + } else if (isBranchingProd(prod)) { + return firstForBranching(prod); + } else { + throw Error("non exhaustive match"); + } + } + function firstForSequence(prod) { + let firstSet = []; + const seq2 = prod.definition; + let nextSubProdIdx = 0; + let hasInnerProdsRemaining = seq2.length > nextSubProdIdx; + let currSubProd; + let isLastInnerProdOptional = true; + while (hasInnerProdsRemaining && isLastInnerProdOptional) { + currSubProd = seq2[nextSubProdIdx]; + isLastInnerProdOptional = isOptionalProd(currSubProd); + firstSet = firstSet.concat(first2(currSubProd)); + nextSubProdIdx = nextSubProdIdx + 1; + hasInnerProdsRemaining = seq2.length > nextSubProdIdx; + } + return uniq_default(firstSet); + } + function firstForBranching(prod) { + const allAlternativesFirsts = map_default(prod.definition, (innerProd) => { + return first2(innerProd); + }); + return uniq_default(flatten_default(allAlternativesFirsts)); + } + function firstForTerminal(terminal) { + return [terminal.terminalType]; + } + var init_first2 = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/first.js"() { + "use strict"; + init_lodash(); + init_api3(); + __name(first2, "first"); + __name(firstForSequence, "firstForSequence"); + __name(firstForBranching, "firstForBranching"); + __name(firstForTerminal, "firstForTerminal"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/constants.js + var IN; + var init_constants2 = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/constants.js"() { + "use strict"; + IN = "_~IN~_"; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/follow.js + function computeAllProdsFollows(topProductions) { + const reSyncFollows = {}; + forEach_default(topProductions, (topProd) => { + const currRefsFollow = new ResyncFollowsWalker(topProd).startWalking(); + assign_default(reSyncFollows, currRefsFollow); + }); + return reSyncFollows; + } + function buildBetweenProdsFollowPrefix(inner2, occurenceInParent) { + return inner2.name + occurenceInParent + IN; + } + var ResyncFollowsWalker; + var init_follow = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/follow.js"() { + "use strict"; + init_rest(); + init_first2(); + init_lodash(); + init_constants2(); + init_api3(); + ResyncFollowsWalker = class extends RestWalker { + static { + __name(this, "ResyncFollowsWalker"); } - var n2 = nodes6.length, n22 = n2 * n2; - var M2 = new Array(n22), _M; - for (var _i = 0; _i < n22; _i++) { - M2[_i] = 0; + constructor(topProd) { + super(); + this.topProd = topProd; + this.follows = {}; } - for (var e3 = 0; e3 < edges3.length; e3++) { - var edge = edges3[e3]; - var _i2 = id2position[edge.source().id()]; - var j2 = id2position[edge.target().id()]; - var sim = getSimilarity$1(edge, opts.attributes); - M2[_i2 * n2 + j2] += sim; - M2[j2 * n2 + _i2] += sim; + startWalking() { + this.walk(this.topProd); + return this.follows; } - addLoops(M2, n2, opts.multFactor); - normalize2(M2, n2); - var isStillMoving = true; - var iterations = 0; - while (isStillMoving && iterations < opts.maxIterations) { - isStillMoving = false; - _M = expand(M2, n2, opts.expandFactor); - M2 = inflate(_M, n2, opts.inflateFactor); - if (!hasConverged(M2, _M, n22, 4)) { - isStillMoving = true; - } - iterations++; + walkTerminal(terminal, currRest, prevRest) { } - var clusters = assign$2(M2, n2, nodes6, cy); - clusters = removeDuplicates(clusters); - return clusters; - }, "markovClustering"); - markovClustering$1 = { - markovClustering, - mcl: markovClustering - }; - identity$1 = /* @__PURE__ */ __name(function identity5(x5) { - return x5; - }, "identity"); - absDiff = /* @__PURE__ */ __name(function absDiff2(p3, q2) { - return Math.abs(q2 - p3); - }, "absDiff"); - addAbsDiff = /* @__PURE__ */ __name(function addAbsDiff2(total, p3, q2) { - return total + absDiff(p3, q2); - }, "addAbsDiff"); - addSquaredDiff = /* @__PURE__ */ __name(function addSquaredDiff2(total, p3, q2) { - return total + Math.pow(q2 - p3, 2); - }, "addSquaredDiff"); - sqrt3 = /* @__PURE__ */ __name(function sqrt4(x5) { - return Math.sqrt(x5); - }, "sqrt"); - maxAbsDiff = /* @__PURE__ */ __name(function maxAbsDiff2(currentMax, p3, q2) { - return Math.max(currentMax, absDiff(p3, q2)); - }, "maxAbsDiff"); - getDistance = /* @__PURE__ */ __name(function getDistance2(length2, getP, getQ, init3, visit) { - var post = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : identity$1; - var ret = init3; - var p3, q2; - for (var dim = 0; dim < length2; dim++) { - p3 = getP(dim); - q2 = getQ(dim); - ret = visit(ret, p3, q2); + walkProdRef(refProd, currRest, prevRest) { + const followName = buildBetweenProdsFollowPrefix(refProd.referencedRule, refProd.idx) + this.topProd.name; + const fullRest = currRest.concat(prevRest); + const restProd = new Alternative({ definition: fullRest }); + const t_in_topProd_follows = first2(restProd); + this.follows[followName] = t_in_topProd_follows; } - return post(ret); - }, "getDistance"); - distances = { - euclidean: /* @__PURE__ */ __name(function euclidean(length2, getP, getQ) { - if (length2 >= 2) { - return getDistance(length2, getP, getQ, 0, addSquaredDiff, sqrt3); - } else { - return getDistance(length2, getP, getQ, 0, addAbsDiff); - } - }, "euclidean"), - squaredEuclidean: /* @__PURE__ */ __name(function squaredEuclidean(length2, getP, getQ) { - return getDistance(length2, getP, getQ, 0, addSquaredDiff); - }, "squaredEuclidean"), - manhattan: /* @__PURE__ */ __name(function manhattan(length2, getP, getQ) { - return getDistance(length2, getP, getQ, 0, addAbsDiff); - }, "manhattan"), - max: /* @__PURE__ */ __name(function max7(length2, getP, getQ) { - return getDistance(length2, getP, getQ, -Infinity, maxAbsDiff); - }, "max") }; - distances["squared-euclidean"] = distances["squaredEuclidean"]; - distances["squaredeuclidean"] = distances["squaredEuclidean"]; - __name(clusteringDistance, "clusteringDistance"); - defaults$b = defaults$g({ - k: 2, - m: 2, - sensitivityThreshold: 1e-4, - distance: "euclidean", - maxIterations: 10, - attributes: [], - testMode: false, - testCentroids: null - }); - setOptions$2 = /* @__PURE__ */ __name(function setOptions4(options3) { - return defaults$b(options3); - }, "setOptions"); - getDist = /* @__PURE__ */ __name(function getDist2(type3, node2, centroid, attributes, mode) { - var noNodeP = mode !== "kMedoids"; - var getP = noNodeP ? function(i2) { - return centroid[i2]; - } : function(i2) { - return attributes[i2](centroid); - }; - var getQ = /* @__PURE__ */ __name(function getQ2(i2) { - return attributes[i2](node2); - }, "getQ"); - var nodeP = centroid; - var nodeQ = node2; - return clusteringDistance(type3, attributes.length, getP, getQ, nodeP, nodeQ); - }, "getDist"); - randomCentroids = /* @__PURE__ */ __name(function randomCentroids2(nodes6, k2, attributes) { - var ndim = attributes.length; - var min9 = new Array(ndim); - var max10 = new Array(ndim); - var centroids = new Array(k2); - var centroid = null; - for (var i2 = 0; i2 < ndim; i2++) { - min9[i2] = nodes6.min(attributes[i2]).value; - max10[i2] = nodes6.max(attributes[i2]).value; + __name(computeAllProdsFollows, "computeAllProdsFollows"); + __name(buildBetweenProdsFollowPrefix, "buildBetweenProdsFollowPrefix"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/reg_exp_parser.js + function getRegExpAst(regExp) { + const regExpStr = regExp.toString(); + if (regExpAstCache.hasOwnProperty(regExpStr)) { + return regExpAstCache[regExpStr]; + } else { + const regExpAst = regExpParser.pattern(regExpStr); + regExpAstCache[regExpStr] = regExpAst; + return regExpAst; + } + } + function clearRegExpParserCache() { + regExpAstCache = {}; + } + var regExpAstCache, regExpParser; + var init_reg_exp_parser = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/reg_exp_parser.js"() { + "use strict"; + init_api(); + regExpAstCache = {}; + regExpParser = new RegExpParser(); + __name(getRegExpAst, "getRegExpAst"); + __name(clearRegExpParserCache, "clearRegExpParserCache"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/reg_exp.js + function getOptimizedStartCodesIndices(regExp, ensureOptimizations = false) { + try { + const ast = getRegExpAst(regExp); + const firstChars = firstCharOptimizedIndices(ast.value, {}, ast.flags.ignoreCase); + return firstChars; + } catch (e3) { + if (e3.message === complementErrorMessage) { + if (ensureOptimizations) { + PRINT_WARNING(`${failedOptimizationPrefixMsg} Unable to optimize: < ${regExp.toString()} > + Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`); } - for (var c3 = 0; c3 < k2; c3++) { - centroid = []; - for (var _i = 0; _i < ndim; _i++) { - centroid[_i] = Math.random() * (max10[_i] - min9[_i]) + min9[_i]; - } - centroids[c3] = centroid; + } else { + let msgSuffix = ""; + if (ensureOptimizations) { + msgSuffix = "\n This will disable the lexer's first char optimizations.\n See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details."; } - return centroids; - }, "randomCentroids"); - classify = /* @__PURE__ */ __name(function classify2(node2, centroids, distance2, attributes, type3) { - var min9 = Infinity; - var index = 0; - for (var i2 = 0; i2 < centroids.length; i2++) { - var dist3 = getDist(distance2, node2, centroids[i2], attributes, type3); - if (dist3 < min9) { - min9 = dist3; - index = i2; - } + PRINT_ERROR(`${failedOptimizationPrefixMsg} + Failed parsing: < ${regExp.toString()} > + Using the @chevrotain/regexp-to-ast library + Please open an issue at: https://github.com/chevrotain/chevrotain/issues` + msgSuffix); + } + } + return []; + } + function firstCharOptimizedIndices(ast, result, ignoreCase) { + switch (ast.type) { + case "Disjunction": + for (let i2 = 0; i2 < ast.value.length; i2++) { + firstCharOptimizedIndices(ast.value[i2], result, ignoreCase); } - return index; - }, "classify"); - buildCluster = /* @__PURE__ */ __name(function buildCluster2(centroid, nodes6, assignment) { - var cluster = []; - var node2 = null; - for (var n2 = 0; n2 < nodes6.length; n2++) { - node2 = nodes6[n2]; - if (assignment[node2.id()] === centroid) { - cluster.push(node2); + break; + case "Alternative": + const terms = ast.value; + for (let i2 = 0; i2 < terms.length; i2++) { + const term = terms[i2]; + switch (term.type) { + case "EndAnchor": + // A group back reference cannot affect potential starting char. + // because if a back reference is the first production than automatically + // the group being referenced has had to come BEFORE so its codes have already been added + case "GroupBackReference": + // assertions do not affect potential starting codes + case "Lookahead": + case "NegativeLookahead": + case "StartAnchor": + case "WordBoundary": + case "NonWordBoundary": + continue; } - } - return cluster; - }, "buildCluster"); - haveValuesConverged = /* @__PURE__ */ __name(function haveValuesConverged2(v12, v22, sensitivityThreshold) { - return Math.abs(v22 - v12) <= sensitivityThreshold; - }, "haveValuesConverged"); - haveMatricesConverged = /* @__PURE__ */ __name(function haveMatricesConverged2(v12, v22, sensitivityThreshold) { - for (var i2 = 0; i2 < v12.length; i2++) { - for (var j2 = 0; j2 < v12[i2].length; j2++) { - var diff2 = Math.abs(v12[i2][j2] - v22[i2][j2]); - if (diff2 > sensitivityThreshold) { - return false; - } + const atom2 = term; + switch (atom2.type) { + case "Character": + addOptimizedIdxToResult(atom2.value, result, ignoreCase); + break; + case "Set": + if (atom2.complement === true) { + throw Error(complementErrorMessage); + } + forEach_default(atom2.value, (code) => { + if (typeof code === "number") { + addOptimizedIdxToResult(code, result, ignoreCase); + } else { + const range3 = code; + if (ignoreCase === true) { + for (let rangeCode = range3.from; rangeCode <= range3.to; rangeCode++) { + addOptimizedIdxToResult(rangeCode, result, ignoreCase); + } + } else { + for (let rangeCode = range3.from; rangeCode <= range3.to && rangeCode < minOptimizationVal; rangeCode++) { + addOptimizedIdxToResult(rangeCode, result, ignoreCase); + } + if (range3.to >= minOptimizationVal) { + const minUnOptVal = range3.from >= minOptimizationVal ? range3.from : minOptimizationVal; + const maxUnOptVal = range3.to; + const minOptIdx = charCodeToOptimizedIndex(minUnOptVal); + const maxOptIdx = charCodeToOptimizedIndex(maxUnOptVal); + for (let currOptIdx = minOptIdx; currOptIdx <= maxOptIdx; currOptIdx++) { + result[currOptIdx] = currOptIdx; + } + } + } + } + }); + break; + case "Group": + firstCharOptimizedIndices(atom2.value, result, ignoreCase); + break; + /* istanbul ignore next */ + default: + throw Error("Non Exhaustive Match"); + } + const isOptionalQuantifier = atom2.quantifier !== void 0 && atom2.quantifier.atLeast === 0; + if ( + // A group may be optional due to empty contents /(?:)/ + // or if everything inside it is optional /((a)?)/ + atom2.type === "Group" && isWholeOptional(atom2) === false || // If this term is not a group it may only be optional if it has an optional quantifier + atom2.type !== "Group" && isOptionalQuantifier === false + ) { + break; } } - return true; - }, "haveMatricesConverged"); - seenBefore = /* @__PURE__ */ __name(function seenBefore2(node2, medoids, n2) { - for (var i2 = 0; i2 < n2; i2++) { - if (node2 === medoids[i2]) return true; + break; + /* istanbul ignore next */ + default: + throw Error("non exhaustive match!"); + } + return values_default(result); + } + function addOptimizedIdxToResult(code, result, ignoreCase) { + const optimizedCharIdx = charCodeToOptimizedIndex(code); + result[optimizedCharIdx] = optimizedCharIdx; + if (ignoreCase === true) { + handleIgnoreCase(code, result); + } + } + function handleIgnoreCase(code, result) { + const char2 = String.fromCharCode(code); + const upperChar = char2.toUpperCase(); + if (upperChar !== char2) { + const optimizedCharIdx = charCodeToOptimizedIndex(upperChar.charCodeAt(0)); + result[optimizedCharIdx] = optimizedCharIdx; + } else { + const lowerChar = char2.toLowerCase(); + if (lowerChar !== char2) { + const optimizedCharIdx = charCodeToOptimizedIndex(lowerChar.charCodeAt(0)); + result[optimizedCharIdx] = optimizedCharIdx; + } + } + } + function findCode(setNode, targetCharCodes) { + return find_default2(setNode.value, (codeOrRange) => { + if (typeof codeOrRange === "number") { + return includes_default(targetCharCodes, codeOrRange); + } else { + const range3 = codeOrRange; + return find_default2(targetCharCodes, (targetCode) => range3.from <= targetCode && targetCode <= range3.to) !== void 0; + } + }); + } + function isWholeOptional(ast) { + const quantifier = ast.quantifier; + if (quantifier && quantifier.atLeast === 0) { + return true; + } + if (!ast.value) { + return false; + } + return isArray_default(ast.value) ? every_default(ast.value, isWholeOptional) : isWholeOptional(ast.value); + } + function canMatchCharCode(charCodes, pattern) { + if (pattern instanceof RegExp) { + const ast = getRegExpAst(pattern); + const charCodeFinder = new CharCodeFinder(charCodes); + charCodeFinder.visit(ast); + return charCodeFinder.found; + } else { + return find_default2(pattern, (char2) => { + return includes_default(charCodes, char2.charCodeAt(0)); + }) !== void 0; + } + } + var complementErrorMessage, failedOptimizationPrefixMsg, CharCodeFinder; + var init_reg_exp = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/reg_exp.js"() { + "use strict"; + init_api(); + init_lodash(); + init_api2(); + init_reg_exp_parser(); + init_lexer(); + complementErrorMessage = "Complement Sets are not supported for first char optimization"; + failedOptimizationPrefixMsg = 'Unable to use "first char" lexer optimizations:\n'; + __name(getOptimizedStartCodesIndices, "getOptimizedStartCodesIndices"); + __name(firstCharOptimizedIndices, "firstCharOptimizedIndices"); + __name(addOptimizedIdxToResult, "addOptimizedIdxToResult"); + __name(handleIgnoreCase, "handleIgnoreCase"); + __name(findCode, "findCode"); + __name(isWholeOptional, "isWholeOptional"); + CharCodeFinder = class extends BaseRegExpVisitor { + static { + __name(this, "CharCodeFinder"); } - return false; - }, "seenBefore"); - randomMedoids = /* @__PURE__ */ __name(function randomMedoids2(nodes6, k2) { - var medoids = new Array(k2); - if (nodes6.length < 50) { - for (var i2 = 0; i2 < k2; i2++) { - var node2 = nodes6[Math.floor(Math.random() * nodes6.length)]; - while (seenBefore(node2, medoids, i2)) { - node2 = nodes6[Math.floor(Math.random() * nodes6.length)]; - } - medoids[i2] = node2; + constructor(targetCharCodes) { + super(); + this.targetCharCodes = targetCharCodes; + this.found = false; + } + visitChildren(node2) { + if (this.found === true) { + return; } - } else { - for (var _i2 = 0; _i2 < k2; _i2++) { - medoids[_i2] = nodes6[Math.floor(Math.random() * nodes6.length)]; + switch (node2.type) { + case "Lookahead": + this.visitLookahead(node2); + return; + case "NegativeLookahead": + this.visitNegativeLookahead(node2); + return; } + super.visitChildren(node2); } - return medoids; - }, "randomMedoids"); - findCost = /* @__PURE__ */ __name(function findCost2(potentialNewMedoid, cluster, attributes) { - var cost = 0; - for (var n2 = 0; n2 < cluster.length; n2++) { - cost += getDist("manhattan", cluster[n2], potentialNewMedoid, attributes, "kMedoids"); - } - return cost; - }, "findCost"); - kMeans = /* @__PURE__ */ __name(function kMeans2(options3) { - var cy = this.cy(); - var nodes6 = this.nodes(); - var node2 = null; - var opts = setOptions$2(options3); - var clusters = new Array(opts.k); - var assignment = {}; - var centroids; - if (opts.testMode) { - if (typeof opts.testCentroids === "number") { - opts.testCentroids; - centroids = randomCentroids(nodes6, opts.k, opts.attributes); - } else if (_typeof(opts.testCentroids) === "object") { - centroids = opts.testCentroids; - } else { - centroids = randomCentroids(nodes6, opts.k, opts.attributes); + visitCharacter(node2) { + if (includes_default(this.targetCharCodes, node2.value)) { + this.found = true; } - } else { - centroids = randomCentroids(nodes6, opts.k, opts.attributes); } - var isStillMoving = true; - var iterations = 0; - while (isStillMoving && iterations < opts.maxIterations) { - for (var n2 = 0; n2 < nodes6.length; n2++) { - node2 = nodes6[n2]; - assignment[node2.id()] = classify(node2, centroids, opts.distance, opts.attributes, "kMeans"); - } - isStillMoving = false; - for (var c3 = 0; c3 < opts.k; c3++) { - var cluster = buildCluster(c3, nodes6, assignment); - if (cluster.length === 0) { - continue; + visitSet(node2) { + if (node2.complement) { + if (findCode(node2, this.targetCharCodes) === void 0) { + this.found = true; } - var ndim = opts.attributes.length; - var centroid = centroids[c3]; - var newCentroid = new Array(ndim); - var sum2 = new Array(ndim); - for (var d2 = 0; d2 < ndim; d2++) { - sum2[d2] = 0; - for (var i2 = 0; i2 < cluster.length; i2++) { - node2 = cluster[i2]; - sum2[d2] += opts.attributes[d2](node2); - } - newCentroid[d2] = sum2[d2] / cluster.length; - if (!haveValuesConverged(newCentroid[d2], centroid[d2], opts.sensitivityThreshold)) { - isStillMoving = true; - } + } else { + if (findCode(node2, this.targetCharCodes) !== void 0) { + this.found = true; } - centroids[c3] = newCentroid; - clusters[c3] = cy.collection(cluster); } - iterations++; } - return clusters; - }, "kMeans"); - kMedoids = /* @__PURE__ */ __name(function kMedoids2(options3) { - var cy = this.cy(); - var nodes6 = this.nodes(); - var node2 = null; - var opts = setOptions$2(options3); - var clusters = new Array(opts.k); - var medoids; - var assignment = {}; - var curCost; - var minCosts = new Array(opts.k); - if (opts.testMode) { - if (typeof opts.testCentroids === "number") ; - else if (_typeof(opts.testCentroids) === "object") { - medoids = opts.testCentroids; + }; + __name(canMatchCharCode, "canMatchCharCode"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer.js + function analyzeTokenTypes(tokenTypes, options2) { + options2 = defaults_default(options2, { + useSticky: SUPPORT_STICKY, + debug: false, + safeMode: false, + positionTracking: "full", + lineTerminatorCharacters: ["\r", "\n"], + tracer: /* @__PURE__ */ __name((msg, action) => action(), "tracer") + }); + const tracer = options2.tracer; + tracer("initCharCodeToOptimizedIndexMap", () => { + initCharCodeToOptimizedIndexMap(); + }); + let onlyRelevantTypes; + tracer("Reject Lexer.NA", () => { + onlyRelevantTypes = reject_default(tokenTypes, (currType) => { + return currType[PATTERN] === Lexer2.NA; + }); + }); + let hasCustom = false; + let allTransformedPatterns; + tracer("Transform Patterns", () => { + hasCustom = false; + allTransformedPatterns = map_default(onlyRelevantTypes, (currType) => { + const currPattern = currType[PATTERN]; + if (isRegExp_default(currPattern)) { + const regExpSource = currPattern.source; + if (regExpSource.length === 1 && // only these regExp meta characters which can appear in a length one regExp + regExpSource !== "^" && regExpSource !== "$" && regExpSource !== "." && !currPattern.ignoreCase) { + return regExpSource; + } else if (regExpSource.length === 2 && regExpSource[0] === "\\" && // not a meta character + !includes_default([ + "d", + "D", + "s", + "S", + "t", + "r", + "n", + "t", + "0", + "c", + "b", + "B", + "f", + "v", + "w", + "W" + ], regExpSource[1])) { + return regExpSource[1]; + } else { + return options2.useSticky ? addStickyFlag(currPattern) : addStartOfInput(currPattern); + } + } else if (isFunction_default(currPattern)) { + hasCustom = true; + return { exec: currPattern }; + } else if (typeof currPattern === "object") { + hasCustom = true; + return currPattern; + } else if (typeof currPattern === "string") { + if (currPattern.length === 1) { + return currPattern; } else { - medoids = randomMedoids(nodes6, opts.k); + const escapedRegExpString = currPattern.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&"); + const wrappedRegExp = new RegExp(escapedRegExpString); + return options2.useSticky ? addStickyFlag(wrappedRegExp) : addStartOfInput(wrappedRegExp); } } else { - medoids = randomMedoids(nodes6, opts.k); + throw Error("non exhaustive match"); } - var isStillMoving = true; - var iterations = 0; - while (isStillMoving && iterations < opts.maxIterations) { - for (var n2 = 0; n2 < nodes6.length; n2++) { - node2 = nodes6[n2]; - assignment[node2.id()] = classify(node2, medoids, opts.distance, opts.attributes, "kMedoids"); - } - isStillMoving = false; - for (var m2 = 0; m2 < medoids.length; m2++) { - var cluster = buildCluster(m2, nodes6, assignment); - if (cluster.length === 0) { - continue; - } - minCosts[m2] = findCost(medoids[m2], cluster, opts.attributes); - for (var _n = 0; _n < cluster.length; _n++) { - curCost = findCost(cluster[_n], cluster, opts.attributes); - if (curCost < minCosts[m2]) { - minCosts[m2] = curCost; - medoids[m2] = cluster[_n]; - isStillMoving = true; - } - } - clusters[m2] = cy.collection(cluster); - } - iterations++; - } - return clusters; - }, "kMedoids"); - updateCentroids = /* @__PURE__ */ __name(function updateCentroids2(centroids, nodes6, U2, weight8, opts) { - var numerator, denominator; - for (var n2 = 0; n2 < nodes6.length; n2++) { - for (var c3 = 0; c3 < centroids.length; c3++) { - weight8[n2][c3] = Math.pow(U2[n2][c3], opts.m); - } - } - for (var _c = 0; _c < centroids.length; _c++) { - for (var dim = 0; dim < opts.attributes.length; dim++) { - numerator = 0; - denominator = 0; - for (var _n2 = 0; _n2 < nodes6.length; _n2++) { - numerator += weight8[_n2][_c] * opts.attributes[dim](nodes6[_n2]); - denominator += weight8[_n2][_c]; - } - centroids[_c][dim] = numerator / denominator; - } - } - }, "updateCentroids"); - updateMembership = /* @__PURE__ */ __name(function updateMembership2(U2, _U, centroids, nodes6, opts) { - for (var i2 = 0; i2 < U2.length; i2++) { - _U[i2] = U2[i2].slice(); - } - var sum2, numerator, denominator; - var pow = 2 / (opts.m - 1); - for (var c3 = 0; c3 < centroids.length; c3++) { - for (var n2 = 0; n2 < nodes6.length; n2++) { - sum2 = 0; - for (var k2 = 0; k2 < centroids.length; k2++) { - numerator = getDist(opts.distance, nodes6[n2], centroids[c3], opts.attributes, "cmeans"); - denominator = getDist(opts.distance, nodes6[n2], centroids[k2], opts.attributes, "cmeans"); - sum2 += Math.pow(numerator / denominator, pow); - } - U2[n2][c3] = 1 / sum2; - } - } - }, "updateMembership"); - assign$1 = /* @__PURE__ */ __name(function assign3(nodes6, U2, opts, cy) { - var clusters = new Array(opts.k); - for (var c3 = 0; c3 < clusters.length; c3++) { - clusters[c3] = []; - } - var max10; - var index; - for (var n2 = 0; n2 < U2.length; n2++) { - max10 = -Infinity; - index = -1; - for (var _c2 = 0; _c2 < U2[0].length; _c2++) { - if (U2[n2][_c2] > max10) { - max10 = U2[n2][_c2]; - index = _c2; - } - } - clusters[index].push(nodes6[n2]); - } - for (var _c3 = 0; _c3 < clusters.length; _c3++) { - clusters[_c3] = cy.collection(clusters[_c3]); - } - return clusters; - }, "assign"); - fuzzyCMeans = /* @__PURE__ */ __name(function fuzzyCMeans2(options3) { - var cy = this.cy(); - var nodes6 = this.nodes(); - var opts = setOptions$2(options3); - var clusters; - var centroids; - var U2; - var _U; - var weight8; - _U = new Array(nodes6.length); - for (var i2 = 0; i2 < nodes6.length; i2++) { - _U[i2] = new Array(opts.k); - } - U2 = new Array(nodes6.length); - for (var _i3 = 0; _i3 < nodes6.length; _i3++) { - U2[_i3] = new Array(opts.k); - } - for (var _i4 = 0; _i4 < nodes6.length; _i4++) { - var total = 0; - for (var j2 = 0; j2 < opts.k; j2++) { - U2[_i4][j2] = Math.random(); - total += U2[_i4][j2]; - } - for (var _j = 0; _j < opts.k; _j++) { - U2[_i4][_j] = U2[_i4][_j] / total; - } - } - centroids = new Array(opts.k); - for (var _i5 = 0; _i5 < opts.k; _i5++) { - centroids[_i5] = new Array(opts.attributes.length); - } - weight8 = new Array(nodes6.length); - for (var _i6 = 0; _i6 < nodes6.length; _i6++) { - weight8[_i6] = new Array(opts.k); - } - var isStillMoving = true; - var iterations = 0; - while (isStillMoving && iterations < opts.maxIterations) { - isStillMoving = false; - updateCentroids(centroids, nodes6, U2, weight8, opts); - updateMembership(U2, _U, centroids, nodes6, opts); - if (!haveMatricesConverged(U2, _U, opts.sensitivityThreshold)) { - isStillMoving = true; - } - iterations++; - } - clusters = assign$1(nodes6, U2, opts, cy); - return { - clusters, - degreeOfMembership: U2 - }; - }, "fuzzyCMeans"); - kClustering = { - kMeans, - kMedoids, - fuzzyCMeans, - fcm: fuzzyCMeans - }; - defaults$a = defaults$g({ - distance: "euclidean", - // distance metric to compare nodes - linkage: "min", - // linkage criterion : how to determine the distance between clusters of nodes - mode: "threshold", - // mode:'threshold' => clusters must be threshold distance apart - threshold: Infinity, - // the distance threshold - // mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters - addDendrogram: false, - // whether to add the dendrogram to the graph for viz - dendrogramDepth: 0, - // depth at which dendrogram branches are merged into the returned clusters - attributes: [] - // array of attr functions }); - linkageAliases = { - "single": "min", - "complete": "max" - }; - setOptions$1 = /* @__PURE__ */ __name(function setOptions5(options3) { - var opts = defaults$a(options3); - var preferredAlias = linkageAliases[opts.linkage]; - if (preferredAlias != null) { - opts.linkage = preferredAlias; - } - return opts; - }, "setOptions"); - mergeClosest = /* @__PURE__ */ __name(function mergeClosest2(clusters, index, dists, mins, opts) { - var minKey = 0; - var min9 = Infinity; - var dist3; - var attrs = opts.attributes; - var getDist3 = /* @__PURE__ */ __name(function getDist4(n1, n2) { - return clusteringDistance(opts.distance, attrs.length, function(i3) { - return attrs[i3](n1); - }, function(i3) { - return attrs[i3](n2); - }, n1, n2); - }, "getDist"); - for (var i2 = 0; i2 < clusters.length; i2++) { - var key = clusters[i2].key; - var _dist = dists[key][mins[key]]; - if (_dist < min9) { - minKey = key; - min9 = _dist; - } - } - if (opts.mode === "threshold" && min9 >= opts.threshold || opts.mode === "dendrogram" && clusters.length === 1) { + }); + let patternIdxToType; + let patternIdxToGroup; + let patternIdxToLongerAltIdxArr; + let patternIdxToPushMode; + let patternIdxToPopMode; + tracer("misc mapping", () => { + patternIdxToType = map_default(onlyRelevantTypes, (currType) => currType.tokenTypeIdx); + patternIdxToGroup = map_default(onlyRelevantTypes, (clazz) => { + const groupName = clazz.GROUP; + if (groupName === Lexer2.SKIPPED) { + return void 0; + } else if (isString_default(groupName)) { + return groupName; + } else if (isUndefined_default(groupName)) { return false; - } - var c1 = index[minKey]; - var c22 = index[mins[minKey]]; - var merged; - if (opts.mode === "dendrogram") { - merged = { - left: c1, - right: c22, - key: c1.key - }; - } else { - merged = { - value: c1.value.concat(c22.value), - key: c1.key - }; - } - clusters[c1.index] = merged; - clusters.splice(c22.index, 1); - index[c1.key] = merged; - for (var _i = 0; _i < clusters.length; _i++) { - var cur = clusters[_i]; - if (c1.key === cur.key) { - dist3 = Infinity; - } else if (opts.linkage === "min") { - dist3 = dists[c1.key][cur.key]; - if (dists[c1.key][cur.key] > dists[c22.key][cur.key]) { - dist3 = dists[c22.key][cur.key]; - } - } else if (opts.linkage === "max") { - dist3 = dists[c1.key][cur.key]; - if (dists[c1.key][cur.key] < dists[c22.key][cur.key]) { - dist3 = dists[c22.key][cur.key]; - } - } else if (opts.linkage === "mean") { - dist3 = (dists[c1.key][cur.key] * c1.size + dists[c22.key][cur.key] * c22.size) / (c1.size + c22.size); - } else { - if (opts.mode === "dendrogram") dist3 = getDist3(cur.value, c1.value); - else dist3 = getDist3(cur.value[0], c1.value[0]); - } - dists[c1.key][cur.key] = dists[cur.key][c1.key] = dist3; - } - for (var _i2 = 0; _i2 < clusters.length; _i2++) { - var key1 = clusters[_i2].key; - if (mins[key1] === c1.key || mins[key1] === c22.key) { - var _min = key1; - for (var j2 = 0; j2 < clusters.length; j2++) { - var key2 = clusters[j2].key; - if (dists[key1][key2] < dists[key1][_min]) { - _min = key2; - } - } - mins[key1] = _min; - } - clusters[_i2].index = _i2; - } - c1.key = c22.key = c1.index = c22.index = null; - return true; - }, "mergeClosest"); - getAllChildren = /* @__PURE__ */ __name(function getAllChildren2(root4, arr, cy) { - if (!root4) return; - if (root4.value) { - arr.push(root4.value); } else { - if (root4.left) getAllChildren2(root4.left, arr); - if (root4.right) getAllChildren2(root4.right, arr); + throw Error("non exhaustive match"); } - }, "getAllChildren"); - buildDendrogram = /* @__PURE__ */ __name(function buildDendrogram2(root4, cy) { - if (!root4) return ""; - if (root4.left && root4.right) { - var leftStr = buildDendrogram2(root4.left, cy); - var rightStr = buildDendrogram2(root4.right, cy); - var node2 = cy.add({ - group: "nodes", - data: { - id: leftStr + "," + rightStr - } - }); - cy.add({ - group: "edges", - data: { - source: leftStr, - target: node2.id() - } - }); - cy.add({ - group: "edges", - data: { - source: rightStr, - target: node2.id() - } - }); - return node2.id(); - } else if (root4.value) { - return root4.value.id(); + }); + patternIdxToLongerAltIdxArr = map_default(onlyRelevantTypes, (clazz) => { + const longerAltType = clazz.LONGER_ALT; + if (longerAltType) { + const longerAltIdxArr = isArray_default(longerAltType) ? map_default(longerAltType, (type3) => indexOf_default(onlyRelevantTypes, type3)) : [indexOf_default(onlyRelevantTypes, longerAltType)]; + return longerAltIdxArr; } - }, "buildDendrogram"); - buildClustersFromTree = /* @__PURE__ */ __name(function buildClustersFromTree2(root4, k2, cy) { - if (!root4) return []; - var left3 = [], right3 = [], leaves = []; - if (k2 === 0) { - if (root4.left) getAllChildren(root4.left, left3); - if (root4.right) getAllChildren(root4.right, right3); - leaves = left3.concat(right3); - return [cy.collection(leaves)]; - } else if (k2 === 1) { - if (root4.value) { - return [cy.collection(root4.value)]; - } else { - if (root4.left) getAllChildren(root4.left, left3); - if (root4.right) getAllChildren(root4.right, right3); - return [cy.collection(left3), cy.collection(right3)]; - } - } else { - if (root4.value) { - return [cy.collection(root4.value)]; + }); + patternIdxToPushMode = map_default(onlyRelevantTypes, (clazz) => clazz.PUSH_MODE); + patternIdxToPopMode = map_default(onlyRelevantTypes, (clazz) => has_default(clazz, "POP_MODE")); + }); + let patternIdxToCanLineTerminator; + tracer("Line Terminator Handling", () => { + const lineTerminatorCharCodes = getCharCodes(options2.lineTerminatorCharacters); + patternIdxToCanLineTerminator = map_default(onlyRelevantTypes, (tokType) => false); + if (options2.positionTracking !== "onlyOffset") { + patternIdxToCanLineTerminator = map_default(onlyRelevantTypes, (tokType) => { + if (has_default(tokType, "LINE_BREAKS")) { + return !!tokType.LINE_BREAKS; } else { - if (root4.left) left3 = buildClustersFromTree2(root4.left, k2 - 1, cy); - if (root4.right) right3 = buildClustersFromTree2(root4.right, k2 - 1, cy); - return left3.concat(right3); - } - } - }, "buildClustersFromTree"); - hierarchicalClustering = /* @__PURE__ */ __name(function hierarchicalClustering2(options3) { - var cy = this.cy(); - var nodes6 = this.nodes(); - var opts = setOptions$1(options3); - var attrs = opts.attributes; - var getDist3 = /* @__PURE__ */ __name(function getDist4(n1, n22) { - return clusteringDistance(opts.distance, attrs.length, function(i3) { - return attrs[i3](n1); - }, function(i3) { - return attrs[i3](n22); - }, n1, n22); - }, "getDist"); - var clusters = []; - var dists = []; - var mins = []; - var index = []; - for (var n2 = 0; n2 < nodes6.length; n2++) { - var cluster = { - value: opts.mode === "dendrogram" ? nodes6[n2] : [nodes6[n2]], - key: n2, - index: n2 - }; - clusters[n2] = cluster; - index[n2] = cluster; - dists[n2] = []; - mins[n2] = 0; - } - for (var i2 = 0; i2 < clusters.length; i2++) { - for (var j2 = 0; j2 <= i2; j2++) { - var dist3 = void 0; - if (opts.mode === "dendrogram") { - dist3 = i2 === j2 ? Infinity : getDist3(clusters[i2].value, clusters[j2].value); - } else { - dist3 = i2 === j2 ? Infinity : getDist3(clusters[i2].value[0], clusters[j2].value[0]); - } - dists[i2][j2] = dist3; - dists[j2][i2] = dist3; - if (dist3 < dists[i2][mins[i2]]) { - mins[i2] = j2; - } + return checkLineBreaksIssues(tokType, lineTerminatorCharCodes) === false && canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN); } + }); + } + }); + let patternIdxToIsCustom; + let patternIdxToShort; + let emptyGroups; + let patternIdxToConfig; + tracer("Misc Mapping #2", () => { + patternIdxToIsCustom = map_default(onlyRelevantTypes, isCustomPattern); + patternIdxToShort = map_default(allTransformedPatterns, isShortPattern); + emptyGroups = reduce_default(onlyRelevantTypes, (acc, clazz) => { + const groupName = clazz.GROUP; + if (isString_default(groupName) && !(groupName === Lexer2.SKIPPED)) { + acc[groupName] = []; } - var merged = mergeClosest(clusters, index, dists, mins, opts); - while (merged) { - merged = mergeClosest(clusters, index, dists, mins, opts); - } - var retClusters; - if (opts.mode === "dendrogram") { - retClusters = buildClustersFromTree(clusters[0], opts.dendrogramDepth, cy); - if (opts.addDendrogram) buildDendrogram(clusters[0], cy); - } else { - retClusters = new Array(clusters.length); - clusters.forEach(function(cluster2, i3) { - cluster2.key = cluster2.index = null; - retClusters[i3] = cy.collection(cluster2.value); - }); - } - return retClusters; - }, "hierarchicalClustering"); - hierarchicalClustering$1 = { - hierarchicalClustering, - hca: hierarchicalClustering - }; - defaults$9 = defaults$g({ - distance: "euclidean", - // distance metric to compare attributes between two nodes - preference: "median", - // suitability of a data point to serve as an exemplar - damping: 0.8, - // damping factor between [0.5, 1) - maxIterations: 1e3, - // max number of iterations to run - minIterations: 100, - // min number of iterations to run in order for clustering to stop - attributes: [ - // functions to quantify the similarity between any two points - // e.g. node => node.data('weight') - ] + return acc; + }, {}); + patternIdxToConfig = map_default(allTransformedPatterns, (x5, idx) => { + return { + pattern: allTransformedPatterns[idx], + longerAlt: patternIdxToLongerAltIdxArr[idx], + canLineTerminator: patternIdxToCanLineTerminator[idx], + isCustom: patternIdxToIsCustom[idx], + short: patternIdxToShort[idx], + group: patternIdxToGroup[idx], + push: patternIdxToPushMode[idx], + pop: patternIdxToPopMode[idx], + tokenTypeIdx: patternIdxToType[idx], + tokenType: onlyRelevantTypes[idx] + }; }); - setOptions6 = /* @__PURE__ */ __name(function setOptions7(options3) { - var dmp = options3.damping; - var pref = options3.preference; - if (!(0.5 <= dmp && dmp < 1)) { - error("Damping must range on [0.5, 1). Got: ".concat(dmp)); - } - var validPrefs = ["median", "mean", "min", "max"]; - if (!(validPrefs.some(function(v3) { - return v3 === pref; - }) || number$1(pref))) { - error("Preference must be one of [".concat(validPrefs.map(function(p3) { - return "'".concat(p3, "'"); - }).join(", "), "] or a number. Got: ").concat(pref)); - } - return defaults$9(options3); - }, "setOptions"); - getSimilarity2 = /* @__PURE__ */ __name(function getSimilarity3(type3, n1, n2, attributes) { - var attr = /* @__PURE__ */ __name(function attr2(n3, i2) { - return attributes[i2](n3); - }, "attr"); - return -clusteringDistance(type3, attributes.length, function(i2) { - return attr(n1, i2); - }, function(i2) { - return attr(n2, i2); - }, n1, n2); - }, "getSimilarity"); - getPreference = /* @__PURE__ */ __name(function getPreference2(S3, preference) { - var p3 = null; - if (preference === "median") { - p3 = median(S3); - } else if (preference === "mean") { - p3 = mean(S3); - } else if (preference === "min") { - p3 = min5(S3); - } else if (preference === "max") { - p3 = max5(S3); - } else { - p3 = preference; - } - return p3; - }, "getPreference"); - findExemplars = /* @__PURE__ */ __name(function findExemplars2(n2, R2, A2) { - var indices = []; - for (var i2 = 0; i2 < n2; i2++) { - if (R2[i2 * n2 + i2] + A2[i2 * n2 + i2] > 0) { - indices.push(i2); - } - } - return indices; - }, "findExemplars"); - assignClusters = /* @__PURE__ */ __name(function assignClusters2(n2, S3, exemplars) { - var clusters = []; - for (var i2 = 0; i2 < n2; i2++) { - var index = -1; - var max10 = -Infinity; - for (var ei = 0; ei < exemplars.length; ei++) { - var e3 = exemplars[ei]; - if (S3[i2 * n2 + e3] > max10) { - index = e3; - max10 = S3[i2 * n2 + e3]; - } - } - if (index > 0) { - clusters.push(index); - } - } - for (var _ei = 0; _ei < exemplars.length; _ei++) { - clusters[exemplars[_ei]] = exemplars[_ei]; - } - return clusters; - }, "assignClusters"); - assign4 = /* @__PURE__ */ __name(function assign5(n2, S3, exemplars) { - var clusters = assignClusters(n2, S3, exemplars); - for (var ei = 0; ei < exemplars.length; ei++) { - var ii = []; - for (var c3 = 0; c3 < clusters.length; c3++) { - if (clusters[c3] === exemplars[ei]) { - ii.push(c3); - } - } - var maxI = -1; - var maxSum = -Infinity; - for (var i2 = 0; i2 < ii.length; i2++) { - var sum2 = 0; - for (var j2 = 0; j2 < ii.length; j2++) { - sum2 += S3[ii[j2] * n2 + ii[i2]]; - } - if (sum2 > maxSum) { - maxI = i2; - maxSum = sum2; - } - } - exemplars[ei] = ii[maxI]; - } - clusters = assignClusters(n2, S3, exemplars); - return clusters; - }, "assign"); - affinityPropagation = /* @__PURE__ */ __name(function affinityPropagation2(options3) { - var cy = this.cy(); - var nodes6 = this.nodes(); - var opts = setOptions6(options3); - var id2position = {}; - for (var i2 = 0; i2 < nodes6.length; i2++) { - id2position[nodes6[i2].id()] = i2; - } - var n2; - var n22; - var S3; - var p3; - var R2; - var A2; - n2 = nodes6.length; - n22 = n2 * n2; - S3 = new Array(n22); - for (var _i = 0; _i < n22; _i++) { - S3[_i] = -Infinity; - } - for (var _i2 = 0; _i2 < n2; _i2++) { - for (var j2 = 0; j2 < n2; j2++) { - if (_i2 !== j2) { - S3[_i2 * n2 + j2] = getSimilarity2(opts.distance, nodes6[_i2], nodes6[j2], opts.attributes); - } - } - } - p3 = getPreference(S3, opts.preference); - for (var _i3 = 0; _i3 < n2; _i3++) { - S3[_i3 * n2 + _i3] = p3; - } - R2 = new Array(n22); - for (var _i4 = 0; _i4 < n22; _i4++) { - R2[_i4] = 0; - } - A2 = new Array(n22); - for (var _i5 = 0; _i5 < n22; _i5++) { - A2[_i5] = 0; - } - var old = new Array(n2); - var Rp = new Array(n2); - var se = new Array(n2); - for (var _i6 = 0; _i6 < n2; _i6++) { - old[_i6] = 0; - Rp[_i6] = 0; - se[_i6] = 0; - } - var e3 = new Array(n2 * opts.minIterations); - for (var _i7 = 0; _i7 < e3.length; _i7++) { - e3[_i7] = 0; - } - var iter; - for (iter = 0; iter < opts.maxIterations; iter++) { - for (var _i8 = 0; _i8 < n2; _i8++) { - var max10 = -Infinity, max22 = -Infinity, maxI = -1, AS = 0; - for (var _j = 0; _j < n2; _j++) { - old[_j] = R2[_i8 * n2 + _j]; - AS = A2[_i8 * n2 + _j] + S3[_i8 * n2 + _j]; - if (AS >= max10) { - max22 = max10; - max10 = AS; - maxI = _j; - } else if (AS > max22) { - max22 = AS; + }); + let canBeOptimized = true; + let charCodeToPatternIdxToConfig = []; + if (!options2.safeMode) { + tracer("First Char Optimization", () => { + charCodeToPatternIdxToConfig = reduce_default(onlyRelevantTypes, (result, currTokType, idx) => { + if (typeof currTokType.PATTERN === "string") { + const charCode = currTokType.PATTERN.charCodeAt(0); + const optimizedIdx = charCodeToOptimizedIndex(charCode); + addToMapOfArrays(result, optimizedIdx, patternIdxToConfig[idx]); + } else if (isArray_default(currTokType.START_CHARS_HINT)) { + let lastOptimizedIdx; + forEach_default(currTokType.START_CHARS_HINT, (charOrInt) => { + const charCode = typeof charOrInt === "string" ? charOrInt.charCodeAt(0) : charOrInt; + const currOptimizedIdx = charCodeToOptimizedIndex(charCode); + if (lastOptimizedIdx !== currOptimizedIdx) { + lastOptimizedIdx = currOptimizedIdx; + addToMapOfArrays(result, currOptimizedIdx, patternIdxToConfig[idx]); } - } - for (var _j2 = 0; _j2 < n2; _j2++) { - R2[_i8 * n2 + _j2] = (1 - opts.damping) * (S3[_i8 * n2 + _j2] - max10) + opts.damping * old[_j2]; - } - R2[_i8 * n2 + maxI] = (1 - opts.damping) * (S3[_i8 * n2 + maxI] - max22) + opts.damping * old[maxI]; - } - for (var _i9 = 0; _i9 < n2; _i9++) { - var sum2 = 0; - for (var _j3 = 0; _j3 < n2; _j3++) { - old[_j3] = A2[_j3 * n2 + _i9]; - Rp[_j3] = Math.max(0, R2[_j3 * n2 + _i9]); - sum2 += Rp[_j3]; - } - sum2 -= Rp[_i9]; - Rp[_i9] = R2[_i9 * n2 + _i9]; - sum2 += Rp[_i9]; - for (var _j4 = 0; _j4 < n2; _j4++) { - A2[_j4 * n2 + _i9] = (1 - opts.damping) * Math.min(0, sum2 - Rp[_j4]) + opts.damping * old[_j4]; - } - A2[_i9 * n2 + _i9] = (1 - opts.damping) * (sum2 - Rp[_i9]) + opts.damping * old[_i9]; - } - var K4 = 0; - for (var _i10 = 0; _i10 < n2; _i10++) { - var E2 = A2[_i10 * n2 + _i10] + R2[_i10 * n2 + _i10] > 0 ? 1 : 0; - e3[iter % opts.minIterations * n2 + _i10] = E2; - K4 += E2; - } - if (K4 > 0 && (iter >= opts.minIterations - 1 || iter == opts.maxIterations - 1)) { - var _sum = 0; - for (var _i11 = 0; _i11 < n2; _i11++) { - se[_i11] = 0; - for (var _j5 = 0; _j5 < opts.minIterations; _j5++) { - se[_i11] += e3[_j5 * n2 + _i11]; + }); + } else if (isRegExp_default(currTokType.PATTERN)) { + if (currTokType.PATTERN.unicode) { + canBeOptimized = false; + if (options2.ensureOptimizations) { + PRINT_ERROR(`${failedOptimizationPrefixMsg} Unable to analyze < ${currTokType.PATTERN.toString()} > pattern. + The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`); } - if (se[_i11] === 0 || se[_i11] === opts.minIterations) { - _sum++; + } else { + const optimizedCodes = getOptimizedStartCodesIndices(currTokType.PATTERN, options2.ensureOptimizations); + if (isEmpty_default(optimizedCodes)) { + canBeOptimized = false; } + forEach_default(optimizedCodes, (code) => { + addToMapOfArrays(result, code, patternIdxToConfig[idx]); + }); } - if (_sum === n2) { - break; + } else { + if (options2.ensureOptimizations) { + PRINT_ERROR(`${failedOptimizationPrefixMsg} TokenType: <${currTokType.name}> is using a custom token pattern without providing parameter. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`); } + canBeOptimized = false; } + return result; + }, []); + }); + } + return { + emptyGroups, + patternIdxToConfig, + charCodeToPatternIdxToConfig, + hasCustom, + canBeOptimized + }; + } + function validatePatterns(tokenTypes, validModesNames) { + let errors = []; + const missingResult = findMissingPatterns(tokenTypes); + errors = errors.concat(missingResult.errors); + const invalidResult = findInvalidPatterns(missingResult.valid); + const validTokenTypes = invalidResult.valid; + errors = errors.concat(invalidResult.errors); + errors = errors.concat(validateRegExpPattern(validTokenTypes)); + errors = errors.concat(findInvalidGroupType(validTokenTypes)); + errors = errors.concat(findModesThatDoNotExist(validTokenTypes, validModesNames)); + errors = errors.concat(findUnreachablePatterns(validTokenTypes)); + return errors; + } + function validateRegExpPattern(tokenTypes) { + let errors = []; + const withRegExpPatterns = filter_default3(tokenTypes, (currTokType) => isRegExp_default(currTokType[PATTERN])); + errors = errors.concat(findEndOfInputAnchor(withRegExpPatterns)); + errors = errors.concat(findStartOfInputAnchor(withRegExpPatterns)); + errors = errors.concat(findUnsupportedFlags(withRegExpPatterns)); + errors = errors.concat(findDuplicatePatterns(withRegExpPatterns)); + errors = errors.concat(findEmptyMatchRegExps(withRegExpPatterns)); + return errors; + } + function findMissingPatterns(tokenTypes) { + const tokenTypesWithMissingPattern = filter_default3(tokenTypes, (currType) => { + return !has_default(currType, PATTERN); + }); + const errors = map_default(tokenTypesWithMissingPattern, (currType) => { + return { + message: "Token Type: ->" + currType.name + "<- missing static 'PATTERN' property", + type: LexerDefinitionErrorType.MISSING_PATTERN, + tokenTypes: [currType] + }; + }); + const valid2 = difference_default(tokenTypes, tokenTypesWithMissingPattern); + return { errors, valid: valid2 }; + } + function findInvalidPatterns(tokenTypes) { + const tokenTypesWithInvalidPattern = filter_default3(tokenTypes, (currType) => { + const pattern = currType[PATTERN]; + return !isRegExp_default(pattern) && !isFunction_default(pattern) && !has_default(pattern, "exec") && !isString_default(pattern); + }); + const errors = map_default(tokenTypesWithInvalidPattern, (currType) => { + return { + message: "Token Type: ->" + currType.name + "<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.", + type: LexerDefinitionErrorType.INVALID_PATTERN, + tokenTypes: [currType] + }; + }); + const valid2 = difference_default(tokenTypes, tokenTypesWithInvalidPattern); + return { errors, valid: valid2 }; + } + function findEndOfInputAnchor(tokenTypes) { + class EndAnchorFinder extends BaseRegExpVisitor { + static { + __name(this, "EndAnchorFinder"); + } + constructor() { + super(...arguments); + this.found = false; + } + visitEndAnchor(node2) { + this.found = true; + } + } + const invalidRegex = filter_default3(tokenTypes, (currType) => { + const pattern = currType.PATTERN; + try { + const regexpAst = getRegExpAst(pattern); + const endAnchorVisitor = new EndAnchorFinder(); + endAnchorVisitor.visit(regexpAst); + return endAnchorVisitor.found; + } catch (e3) { + return end_of_input.test(pattern.source); + } + }); + const errors = map_default(invalidRegex, (currType) => { + return { + message: "Unexpected RegExp Anchor Error:\n Token Type: ->" + currType.name + "<- static 'PATTERN' cannot contain end of input anchor '$'\n See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.", + type: LexerDefinitionErrorType.EOI_ANCHOR_FOUND, + tokenTypes: [currType] + }; + }); + return errors; + } + function findEmptyMatchRegExps(tokenTypes) { + const matchesEmptyString = filter_default3(tokenTypes, (currType) => { + const pattern = currType.PATTERN; + return pattern.test(""); + }); + const errors = map_default(matchesEmptyString, (currType) => { + return { + message: "Token Type: ->" + currType.name + "<- static 'PATTERN' must not match an empty string", + type: LexerDefinitionErrorType.EMPTY_MATCH_PATTERN, + tokenTypes: [currType] + }; + }); + return errors; + } + function findStartOfInputAnchor(tokenTypes) { + class StartAnchorFinder extends BaseRegExpVisitor { + static { + __name(this, "StartAnchorFinder"); + } + constructor() { + super(...arguments); + this.found = false; + } + visitStartAnchor(node2) { + this.found = true; + } + } + const invalidRegex = filter_default3(tokenTypes, (currType) => { + const pattern = currType.PATTERN; + try { + const regexpAst = getRegExpAst(pattern); + const startAnchorVisitor = new StartAnchorFinder(); + startAnchorVisitor.visit(regexpAst); + return startAnchorVisitor.found; + } catch (e3) { + return start_of_input.test(pattern.source); + } + }); + const errors = map_default(invalidRegex, (currType) => { + return { + message: "Unexpected RegExp Anchor Error:\n Token Type: ->" + currType.name + "<- static 'PATTERN' cannot contain start of input anchor '^'\n See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.", + type: LexerDefinitionErrorType.SOI_ANCHOR_FOUND, + tokenTypes: [currType] + }; + }); + return errors; + } + function findUnsupportedFlags(tokenTypes) { + const invalidFlags = filter_default3(tokenTypes, (currType) => { + const pattern = currType[PATTERN]; + return pattern instanceof RegExp && (pattern.multiline || pattern.global); + }); + const errors = map_default(invalidFlags, (currType) => { + return { + message: "Token Type: ->" + currType.name + "<- static 'PATTERN' may NOT contain global('g') or multiline('m')", + type: LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND, + tokenTypes: [currType] + }; + }); + return errors; + } + function findDuplicatePatterns(tokenTypes) { + const found = []; + let identicalPatterns = map_default(tokenTypes, (outerType) => { + return reduce_default(tokenTypes, (result, innerType) => { + if (outerType.PATTERN.source === innerType.PATTERN.source && !includes_default(found, innerType) && innerType.PATTERN !== Lexer2.NA) { + found.push(innerType); + result.push(innerType); + return result; } - var exemplarsIndices = findExemplars(n2, R2, A2); - var clusterIndices = assign4(n2, S3, exemplarsIndices); - var clusters = {}; - for (var c3 = 0; c3 < exemplarsIndices.length; c3++) { - clusters[exemplarsIndices[c3]] = []; - } - for (var _i12 = 0; _i12 < nodes6.length; _i12++) { - var pos = id2position[nodes6[_i12].id()]; - var clusterIndex = clusterIndices[pos]; - if (clusterIndex != null) { - clusters[clusterIndex].push(nodes6[_i12]); - } - } - var retClusters = new Array(exemplarsIndices.length); - for (var _c = 0; _c < exemplarsIndices.length; _c++) { - retClusters[_c] = cy.collection(clusters[exemplarsIndices[_c]]); - } - return retClusters; - }, "affinityPropagation"); - affinityPropagation$1 = { - affinityPropagation, - ap: affinityPropagation + return result; + }, []); + }); + identicalPatterns = compact_default(identicalPatterns); + const duplicatePatterns = filter_default3(identicalPatterns, (currIdenticalSet) => { + return currIdenticalSet.length > 1; + }); + const errors = map_default(duplicatePatterns, (setOfIdentical) => { + const tokenTypeNames = map_default(setOfIdentical, (currType) => { + return currType.name; + }); + const dupPatternSrc = head_default(setOfIdentical).PATTERN; + return { + message: `The same RegExp pattern ->${dupPatternSrc}<-has been used in all of the following Token Types: ${tokenTypeNames.join(", ")} <-`, + type: LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND, + tokenTypes: setOfIdentical }; - hierholzerDefaults = defaults$g({ - root: void 0, - directed: false + }); + return errors; + } + function findInvalidGroupType(tokenTypes) { + const invalidTypes = filter_default3(tokenTypes, (clazz) => { + if (!has_default(clazz, "GROUP")) { + return false; + } + const group2 = clazz.GROUP; + return group2 !== Lexer2.SKIPPED && group2 !== Lexer2.NA && !isString_default(group2); + }); + const errors = map_default(invalidTypes, (currType) => { + return { + message: "Token Type: ->" + currType.name + "<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String", + type: LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND, + tokenTypes: [currType] + }; + }); + return errors; + } + function findModesThatDoNotExist(tokenTypes, validModes) { + const invalidModes = filter_default3(tokenTypes, (clazz) => { + return clazz.PUSH_MODE !== void 0 && !includes_default(validModes, clazz.PUSH_MODE); + }); + const errors = map_default(invalidModes, (tokType) => { + const msg = `Token Type: ->${tokType.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${tokType.PUSH_MODE}<-which does not exist`; + return { + message: msg, + type: LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST, + tokenTypes: [tokType] + }; + }); + return errors; + } + function findUnreachablePatterns(tokenTypes) { + const errors = []; + const canBeTested = reduce_default(tokenTypes, (result, tokType, idx) => { + const pattern = tokType.PATTERN; + if (pattern === Lexer2.NA) { + return result; + } + if (isString_default(pattern)) { + result.push({ str: pattern, idx, tokenType: tokType }); + } else if (isRegExp_default(pattern) && noMetaChar(pattern)) { + result.push({ str: pattern.source, idx, tokenType: tokType }); + } + return result; + }, []); + forEach_default(tokenTypes, (tokType, testIdx) => { + forEach_default(canBeTested, ({ str: str2, idx, tokenType }) => { + if (testIdx < idx && testTokenType(str2, tokType.PATTERN)) { + const msg = `Token: ->${tokenType.name}<- can never be matched. +Because it appears AFTER the Token Type ->${tokType.name}<-in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`; + errors.push({ + message: msg, + type: LexerDefinitionErrorType.UNREACHABLE_PATTERN, + tokenTypes: [tokType, tokenType] + }); + } }); - elesfn$k = { - hierholzer: /* @__PURE__ */ __name(function hierholzer(options3) { - if (!plainObject(options3)) { - var args = arguments; - options3 = { - root: args[0], - directed: args[1] - }; - } - var _hierholzerDefaults = hierholzerDefaults(options3), root4 = _hierholzerDefaults.root, directed = _hierholzerDefaults.directed; - var eles = this; - var dflag = false; - var oddIn; - var oddOut; - var startVertex; - if (root4) startVertex = string(root4) ? this.filter(root4)[0].id() : root4[0].id(); - var nodes6 = {}; - var edges3 = {}; - if (directed) { - eles.forEach(function(ele) { - var id29 = ele.id(); - if (ele.isNode()) { - var ind = ele.indegree(true); - var outd = ele.outdegree(true); - var d1 = ind - outd; - var d22 = outd - ind; - if (d1 == 1) { - if (oddIn) dflag = true; - else oddIn = id29; - } else if (d22 == 1) { - if (oddOut) dflag = true; - else oddOut = id29; - } else if (d22 > 1 || d1 > 1) { - dflag = true; - } - nodes6[id29] = []; - ele.outgoers().forEach(function(e3) { - if (e3.isEdge()) nodes6[id29].push(e3.id()); - }); - } else { - edges3[id29] = [void 0, ele.target().id()]; - } + }); + return errors; + } + function testTokenType(str2, pattern) { + if (isRegExp_default(pattern)) { + const regExpArray = pattern.exec(str2); + return regExpArray !== null && regExpArray.index === 0; + } else if (isFunction_default(pattern)) { + return pattern(str2, 0, [], {}); + } else if (has_default(pattern, "exec")) { + return pattern.exec(str2, 0, [], {}); + } else if (typeof pattern === "string") { + return pattern === str2; + } else { + throw Error("non exhaustive match"); + } + } + function noMetaChar(regExp) { + const metaChars = [ + ".", + "\\", + "[", + "]", + "|", + "^", + "$", + "(", + ")", + "?", + "*", + "+", + "{" + ]; + return find_default2(metaChars, (char2) => regExp.source.indexOf(char2) !== -1) === void 0; + } + function addStartOfInput(pattern) { + const flags = pattern.ignoreCase ? "i" : ""; + return new RegExp(`^(?:${pattern.source})`, flags); + } + function addStickyFlag(pattern) { + const flags = pattern.ignoreCase ? "iy" : "y"; + return new RegExp(`${pattern.source}`, flags); + } + function performRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) { + const errors = []; + if (!has_default(lexerDefinition, DEFAULT_MODE)) { + errors.push({ + message: "A MultiMode Lexer cannot be initialized without a <" + DEFAULT_MODE + "> property in its definition\n", + type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE + }); + } + if (!has_default(lexerDefinition, MODES)) { + errors.push({ + message: "A MultiMode Lexer cannot be initialized without a <" + MODES + "> property in its definition\n", + type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY + }); + } + if (has_default(lexerDefinition, MODES) && has_default(lexerDefinition, DEFAULT_MODE) && !has_default(lexerDefinition.modes, lexerDefinition.defaultMode)) { + errors.push({ + message: `A MultiMode Lexer cannot be initialized with a ${DEFAULT_MODE}: <${lexerDefinition.defaultMode}>which does not exist +`, + type: LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST + }); + } + if (has_default(lexerDefinition, MODES)) { + forEach_default(lexerDefinition.modes, (currModeValue, currModeName) => { + forEach_default(currModeValue, (currTokType, currIdx) => { + if (isUndefined_default(currTokType)) { + errors.push({ + message: `A Lexer cannot be initialized using an undefined Token Type. Mode:<${currModeName}> at index: <${currIdx}> +`, + type: LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED }); - } else { - eles.forEach(function(ele) { - var id29 = ele.id(); - if (ele.isNode()) { - var d3 = ele.degree(true); - if (d3 % 2) { - if (!oddIn) oddIn = id29; - else if (!oddOut) oddOut = id29; - else dflag = true; - } - nodes6[id29] = []; - ele.connectedEdges().forEach(function(e3) { - return nodes6[id29].push(e3.id()); + } else if (has_default(currTokType, "LONGER_ALT")) { + const longerAlt = isArray_default(currTokType.LONGER_ALT) ? currTokType.LONGER_ALT : [currTokType.LONGER_ALT]; + forEach_default(longerAlt, (currLongerAlt) => { + if (!isUndefined_default(currLongerAlt) && !includes_default(currModeValue, currLongerAlt)) { + errors.push({ + message: `A MultiMode Lexer cannot be initialized with a longer_alt <${currLongerAlt.name}> on token <${currTokType.name}> outside of mode <${currModeName}> +`, + type: LexerDefinitionErrorType.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE }); - } else { - edges3[id29] = [ele.source().id(), ele.target().id()]; } }); } - var result = { - found: false, - trail: void 0 + }); + }); + } + return errors; + } + function performWarningRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) { + const warnings3 = []; + let hasAnyLineBreak = false; + const allTokenTypes = compact_default(flatten_default(values_default(lexerDefinition.modes))); + const concreteTokenTypes = reject_default(allTokenTypes, (currType) => currType[PATTERN] === Lexer2.NA); + const terminatorCharCodes = getCharCodes(lineTerminatorCharacters); + if (trackLines) { + forEach_default(concreteTokenTypes, (tokType) => { + const currIssue = checkLineBreaksIssues(tokType, terminatorCharCodes); + if (currIssue !== false) { + const message = buildLineBreakIssueMessage(tokType, currIssue); + const warningDescriptor = { + message, + type: currIssue.issue, + tokenType: tokType }; - if (dflag) return result; - else if (oddOut && oddIn) { - if (directed) { - if (startVertex && oddOut != startVertex) { - return result; - } - startVertex = oddOut; - } else { - if (startVertex && oddOut != startVertex && oddIn != startVertex) { - return result; - } else if (!startVertex) { - startVertex = oddOut; - } + warnings3.push(warningDescriptor); + } else { + if (has_default(tokType, "LINE_BREAKS")) { + if (tokType.LINE_BREAKS === true) { + hasAnyLineBreak = true; } } else { - if (!startVertex) startVertex = eles[0].id(); - } - var walk = /* @__PURE__ */ __name(function walk2(v3) { - var currentNode = v3; - var subtour2 = [v3]; - var adj, adjTail, adjHead; - while (nodes6[currentNode].length) { - adj = nodes6[currentNode].shift(); - adjTail = edges3[adj][0]; - adjHead = edges3[adj][1]; - if (currentNode != adjHead) { - nodes6[adjHead] = nodes6[adjHead].filter(function(e3) { - return e3 != adj; - }); - currentNode = adjHead; - } else if (!directed && currentNode != adjTail) { - nodes6[adjTail] = nodes6[adjTail].filter(function(e3) { - return e3 != adj; - }); - currentNode = adjTail; - } - subtour2.unshift(adj); - subtour2.unshift(currentNode); - } - return subtour2; - }, "walk"); - var trail = []; - var subtour = []; - subtour = walk(startVertex); - while (subtour.length != 1) { - if (nodes6[subtour[0]].length == 0) { - trail.unshift(eles.getElementById(subtour.shift())); - trail.unshift(eles.getElementById(subtour.shift())); - } else { - subtour = walk(subtour.shift()).concat(subtour); - } - } - trail.unshift(eles.getElementById(subtour.shift())); - for (var d2 in nodes6) { - if (nodes6[d2].length) { - return result; + if (canMatchCharCode(terminatorCharCodes, tokType.PATTERN)) { + hasAnyLineBreak = true; } } - result.found = true; - result.trail = this.spawn(trail, true); - return result; - }, "hierholzer") - }; - hopcroftTarjanBiconnected = /* @__PURE__ */ __name(function hopcroftTarjanBiconnected2() { - var eles = this; - var nodes6 = {}; - var id29 = 0; - var edgeCount3 = 0; - var components3 = []; - var stack = []; - var visitedEdges = {}; - var buildComponent = /* @__PURE__ */ __name(function buildComponent2(x5, y5) { - var i2 = stack.length - 1; - var cutset = []; - var component2 = eles.spawn(); - while (stack[i2].x != x5 || stack[i2].y != y5) { - cutset.push(stack.pop().edge); - i2--; - } - cutset.push(stack.pop().edge); - cutset.forEach(function(edge) { - var connectedNodes = edge.connectedNodes().intersection(eles); - component2.merge(edge); - connectedNodes.forEach(function(node2) { - var nodeId = node2.id(); - var connectedEdges = node2.connectedEdges().intersection(eles); - component2.merge(node2); - if (!nodes6[nodeId].cutVertex) { - component2.merge(connectedEdges); - } else { - component2.merge(connectedEdges.filter(function(edge2) { - return edge2.isLoop(); - })); - } - }); - }); - components3.push(component2); - }, "buildComponent"); - var biconnectedSearch = /* @__PURE__ */ __name(function biconnectedSearch2(root4, currentNode, parent4) { - if (root4 === parent4) edgeCount3 += 1; - nodes6[currentNode] = { - id: id29, - low: id29++, - cutVertex: false + } + }); + } + if (trackLines && !hasAnyLineBreak) { + warnings3.push({ + message: "Warning: No LINE_BREAKS Found.\n This Lexer has been defined to track line and column information,\n But none of the Token Types can be identified as matching a line terminator.\n See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \n for details.", + type: LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS + }); + } + return warnings3; + } + function cloneEmptyGroups(emptyGroups) { + const clonedResult = {}; + const groupKeys = keys_default(emptyGroups); + forEach_default(groupKeys, (currKey) => { + const currGroupValue = emptyGroups[currKey]; + if (isArray_default(currGroupValue)) { + clonedResult[currKey] = []; + } else { + throw Error("non exhaustive match"); + } + }); + return clonedResult; + } + function isCustomPattern(tokenType) { + const pattern = tokenType.PATTERN; + if (isRegExp_default(pattern)) { + return false; + } else if (isFunction_default(pattern)) { + return true; + } else if (has_default(pattern, "exec")) { + return true; + } else if (isString_default(pattern)) { + return false; + } else { + throw Error("non exhaustive match"); + } + } + function isShortPattern(pattern) { + if (isString_default(pattern) && pattern.length === 1) { + return pattern.charCodeAt(0); + } else { + return false; + } + } + function checkLineBreaksIssues(tokType, lineTerminatorCharCodes) { + if (has_default(tokType, "LINE_BREAKS")) { + return false; + } else { + if (isRegExp_default(tokType.PATTERN)) { + try { + canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN); + } catch (e3) { + return { + issue: LexerDefinitionErrorType.IDENTIFY_TERMINATOR, + errMsg: e3.message }; - var edges3 = eles.getElementById(currentNode).connectedEdges().intersection(eles); - if (edges3.size() === 0) { - components3.push(eles.spawn(eles.getElementById(currentNode))); - } else { - var sourceId, targetId, otherNodeId, edgeId; - edges3.forEach(function(edge) { - sourceId = edge.source().id(); - targetId = edge.target().id(); - otherNodeId = sourceId === currentNode ? targetId : sourceId; - if (otherNodeId !== parent4) { - edgeId = edge.id(); - if (!visitedEdges[edgeId]) { - visitedEdges[edgeId] = true; - stack.push({ - x: currentNode, - y: otherNodeId, - edge + } + return false; + } else if (isString_default(tokType.PATTERN)) { + return false; + } else if (isCustomPattern(tokType)) { + return { issue: LexerDefinitionErrorType.CUSTOM_LINE_BREAK }; + } else { + throw Error("non exhaustive match"); + } + } + } + function buildLineBreakIssueMessage(tokType, details) { + if (details.issue === LexerDefinitionErrorType.IDENTIFY_TERMINATOR) { + return `Warning: unable to identify line terminator usage in pattern. + The problem is in the <${tokType.name}> Token Type + Root cause: ${details.errMsg}. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`; + } else if (details.issue === LexerDefinitionErrorType.CUSTOM_LINE_BREAK) { + return `Warning: A Custom Token Pattern should specify the option. + The problem is in the <${tokType.name}> Token Type + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`; + } else { + throw Error("non exhaustive match"); + } + } + function getCharCodes(charsOrCodes) { + const charCodes = map_default(charsOrCodes, (numOrString) => { + if (isString_default(numOrString)) { + return numOrString.charCodeAt(0); + } else { + return numOrString; + } + }); + return charCodes; + } + function addToMapOfArrays(map5, key, value2) { + if (map5[key] === void 0) { + map5[key] = [value2]; + } else { + map5[key].push(value2); + } + } + function charCodeToOptimizedIndex(charCode) { + return charCode < minOptimizationVal ? charCode : charCodeToOptimizedIdxMap[charCode]; + } + function initCharCodeToOptimizedIndexMap() { + if (isEmpty_default(charCodeToOptimizedIdxMap)) { + charCodeToOptimizedIdxMap = new Array(65536); + for (let i2 = 0; i2 < 65536; i2++) { + charCodeToOptimizedIdxMap[i2] = i2 > 255 ? 255 + ~~(i2 / 255) : i2; + } + } + } + var PATTERN, DEFAULT_MODE, MODES, SUPPORT_STICKY, end_of_input, start_of_input, LineTerminatorOptimizedTester, minOptimizationVal, charCodeToOptimizedIdxMap; + var init_lexer = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer.js"() { + "use strict"; + init_api(); + init_lexer_public(); + init_lodash(); + init_api2(); + init_reg_exp(); + init_reg_exp_parser(); + PATTERN = "PATTERN"; + DEFAULT_MODE = "defaultMode"; + MODES = "modes"; + SUPPORT_STICKY = typeof new RegExp("(?:)").sticky === "boolean"; + __name(analyzeTokenTypes, "analyzeTokenTypes"); + __name(validatePatterns, "validatePatterns"); + __name(validateRegExpPattern, "validateRegExpPattern"); + __name(findMissingPatterns, "findMissingPatterns"); + __name(findInvalidPatterns, "findInvalidPatterns"); + end_of_input = /[^\\][$]/; + __name(findEndOfInputAnchor, "findEndOfInputAnchor"); + __name(findEmptyMatchRegExps, "findEmptyMatchRegExps"); + start_of_input = /[^\\[][\^]|^\^/; + __name(findStartOfInputAnchor, "findStartOfInputAnchor"); + __name(findUnsupportedFlags, "findUnsupportedFlags"); + __name(findDuplicatePatterns, "findDuplicatePatterns"); + __name(findInvalidGroupType, "findInvalidGroupType"); + __name(findModesThatDoNotExist, "findModesThatDoNotExist"); + __name(findUnreachablePatterns, "findUnreachablePatterns"); + __name(testTokenType, "testTokenType"); + __name(noMetaChar, "noMetaChar"); + __name(addStartOfInput, "addStartOfInput"); + __name(addStickyFlag, "addStickyFlag"); + __name(performRuntimeChecks, "performRuntimeChecks"); + __name(performWarningRuntimeChecks, "performWarningRuntimeChecks"); + __name(cloneEmptyGroups, "cloneEmptyGroups"); + __name(isCustomPattern, "isCustomPattern"); + __name(isShortPattern, "isShortPattern"); + LineTerminatorOptimizedTester = { + // implements /\n|\r\n?/g.test + test: /* @__PURE__ */ __name(function(text4) { + const len = text4.length; + for (let i2 = this.lastIndex; i2 < len; i2++) { + const c3 = text4.charCodeAt(i2); + if (c3 === 10) { + this.lastIndex = i2 + 1; + return true; + } else if (c3 === 13) { + if (text4.charCodeAt(i2 + 1) === 10) { + this.lastIndex = i2 + 2; + } else { + this.lastIndex = i2 + 1; + } + return true; + } + } + return false; + }, "test"), + lastIndex: 0 + }; + __name(checkLineBreaksIssues, "checkLineBreaksIssues"); + __name(buildLineBreakIssueMessage, "buildLineBreakIssueMessage"); + __name(getCharCodes, "getCharCodes"); + __name(addToMapOfArrays, "addToMapOfArrays"); + minOptimizationVal = 256; + charCodeToOptimizedIdxMap = []; + __name(charCodeToOptimizedIndex, "charCodeToOptimizedIndex"); + __name(initCharCodeToOptimizedIndexMap, "initCharCodeToOptimizedIndexMap"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/tokens.js + function tokenStructuredMatcher(tokInstance, tokConstructor) { + const instanceType = tokInstance.tokenTypeIdx; + if (instanceType === tokConstructor.tokenTypeIdx) { + return true; + } else { + return tokConstructor.isParent === true && tokConstructor.categoryMatchesMap[instanceType] === true; + } + } + function tokenStructuredMatcherNoCategories(token2, tokType) { + return token2.tokenTypeIdx === tokType.tokenTypeIdx; + } + function augmentTokenTypes(tokenTypes) { + const tokenTypesAndParents = expandCategories(tokenTypes); + assignTokenDefaultProps(tokenTypesAndParents); + assignCategoriesMapProp(tokenTypesAndParents); + assignCategoriesTokensProp(tokenTypesAndParents); + forEach_default(tokenTypesAndParents, (tokType) => { + tokType.isParent = tokType.categoryMatches.length > 0; + }); + } + function expandCategories(tokenTypes) { + let result = clone_default2(tokenTypes); + let categories = tokenTypes; + let searching = true; + while (searching) { + categories = compact_default(flatten_default(map_default(categories, (currTokType) => currTokType.CATEGORIES))); + const newCategories = difference_default(categories, result); + result = result.concat(newCategories); + if (isEmpty_default(newCategories)) { + searching = false; + } else { + categories = newCategories; + } + } + return result; + } + function assignTokenDefaultProps(tokenTypes) { + forEach_default(tokenTypes, (currTokType) => { + if (!hasShortKeyProperty(currTokType)) { + tokenIdxToClass[tokenShortNameIdx] = currTokType; + currTokType.tokenTypeIdx = tokenShortNameIdx++; + } + if (hasCategoriesProperty(currTokType) && !isArray_default(currTokType.CATEGORIES)) { + currTokType.CATEGORIES = [currTokType.CATEGORIES]; + } + if (!hasCategoriesProperty(currTokType)) { + currTokType.CATEGORIES = []; + } + if (!hasExtendingTokensTypesProperty(currTokType)) { + currTokType.categoryMatches = []; + } + if (!hasExtendingTokensTypesMapProperty(currTokType)) { + currTokType.categoryMatchesMap = {}; + } + }); + } + function assignCategoriesTokensProp(tokenTypes) { + forEach_default(tokenTypes, (currTokType) => { + currTokType.categoryMatches = []; + forEach_default(currTokType.categoryMatchesMap, (val, key) => { + currTokType.categoryMatches.push(tokenIdxToClass[key].tokenTypeIdx); + }); + }); + } + function assignCategoriesMapProp(tokenTypes) { + forEach_default(tokenTypes, (currTokType) => { + singleAssignCategoriesToksMap([], currTokType); + }); + } + function singleAssignCategoriesToksMap(path4, nextNode) { + forEach_default(path4, (pathNode) => { + nextNode.categoryMatchesMap[pathNode.tokenTypeIdx] = true; + }); + forEach_default(nextNode.CATEGORIES, (nextCategory) => { + const newPath = path4.concat(nextNode); + if (!includes_default(newPath, nextCategory)) { + singleAssignCategoriesToksMap(newPath, nextCategory); + } + }); + } + function hasShortKeyProperty(tokType) { + return has_default(tokType, "tokenTypeIdx"); + } + function hasCategoriesProperty(tokType) { + return has_default(tokType, "CATEGORIES"); + } + function hasExtendingTokensTypesProperty(tokType) { + return has_default(tokType, "categoryMatches"); + } + function hasExtendingTokensTypesMapProperty(tokType) { + return has_default(tokType, "categoryMatchesMap"); + } + function isTokenType(tokType) { + return has_default(tokType, "tokenTypeIdx"); + } + var tokenShortNameIdx, tokenIdxToClass; + var init_tokens = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/tokens.js"() { + "use strict"; + init_lodash(); + __name(tokenStructuredMatcher, "tokenStructuredMatcher"); + __name(tokenStructuredMatcherNoCategories, "tokenStructuredMatcherNoCategories"); + tokenShortNameIdx = 1; + tokenIdxToClass = {}; + __name(augmentTokenTypes, "augmentTokenTypes"); + __name(expandCategories, "expandCategories"); + __name(assignTokenDefaultProps, "assignTokenDefaultProps"); + __name(assignCategoriesTokensProp, "assignCategoriesTokensProp"); + __name(assignCategoriesMapProp, "assignCategoriesMapProp"); + __name(singleAssignCategoriesToksMap, "singleAssignCategoriesToksMap"); + __name(hasShortKeyProperty, "hasShortKeyProperty"); + __name(hasCategoriesProperty, "hasCategoriesProperty"); + __name(hasExtendingTokensTypesProperty, "hasExtendingTokensTypesProperty"); + __name(hasExtendingTokensTypesMapProperty, "hasExtendingTokensTypesMapProperty"); + __name(isTokenType, "isTokenType"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer_errors_public.js + var defaultLexerErrorProvider; + var init_lexer_errors_public = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer_errors_public.js"() { + "use strict"; + defaultLexerErrorProvider = { + buildUnableToPopLexerModeMessage(token2) { + return `Unable to pop Lexer Mode after encountering Token ->${token2.image}<- The Mode Stack is empty`; + }, + buildUnexpectedCharactersMessage(fullText, startOffset, length2, line2, column2) { + return `unexpected character: ->${fullText.charAt(startOffset)}<- at offset: ${startOffset}, skipped ${length2} characters.`; + } + }; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer_public.js + var LexerDefinitionErrorType, DEFAULT_LEXER_CONFIG, Lexer2; + var init_lexer_public = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/lexer_public.js"() { + "use strict"; + init_lexer(); + init_lodash(); + init_api2(); + init_tokens(); + init_lexer_errors_public(); + init_reg_exp_parser(); + (function(LexerDefinitionErrorType2) { + LexerDefinitionErrorType2[LexerDefinitionErrorType2["MISSING_PATTERN"] = 0] = "MISSING_PATTERN"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["INVALID_PATTERN"] = 1] = "INVALID_PATTERN"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["EOI_ANCHOR_FOUND"] = 2] = "EOI_ANCHOR_FOUND"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["UNSUPPORTED_FLAGS_FOUND"] = 3] = "UNSUPPORTED_FLAGS_FOUND"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["DUPLICATE_PATTERNS_FOUND"] = 4] = "DUPLICATE_PATTERNS_FOUND"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["INVALID_GROUP_TYPE_FOUND"] = 5] = "INVALID_GROUP_TYPE_FOUND"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["PUSH_MODE_DOES_NOT_EXIST"] = 6] = "PUSH_MODE_DOES_NOT_EXIST"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE"] = 7] = "MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY"] = 8] = "MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST"] = 9] = "MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED"] = 10] = "LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["SOI_ANCHOR_FOUND"] = 11] = "SOI_ANCHOR_FOUND"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["EMPTY_MATCH_PATTERN"] = 12] = "EMPTY_MATCH_PATTERN"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["NO_LINE_BREAKS_FLAGS"] = 13] = "NO_LINE_BREAKS_FLAGS"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["UNREACHABLE_PATTERN"] = 14] = "UNREACHABLE_PATTERN"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["IDENTIFY_TERMINATOR"] = 15] = "IDENTIFY_TERMINATOR"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["CUSTOM_LINE_BREAK"] = 16] = "CUSTOM_LINE_BREAK"; + LexerDefinitionErrorType2[LexerDefinitionErrorType2["MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"] = 17] = "MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"; + })(LexerDefinitionErrorType || (LexerDefinitionErrorType = {})); + DEFAULT_LEXER_CONFIG = { + deferDefinitionErrorsHandling: false, + positionTracking: "full", + lineTerminatorsPattern: /\n|\r\n?/g, + lineTerminatorCharacters: ["\n", "\r"], + ensureOptimizations: false, + safeMode: false, + errorMessageProvider: defaultLexerErrorProvider, + traceInitPerf: false, + skipValidations: false, + recoveryEnabled: true + }; + Object.freeze(DEFAULT_LEXER_CONFIG); + Lexer2 = class { + static { + __name(this, "Lexer"); + } + constructor(lexerDefinition, config5 = DEFAULT_LEXER_CONFIG) { + this.lexerDefinition = lexerDefinition; + this.lexerDefinitionErrors = []; + this.lexerDefinitionWarning = []; + this.patternIdxToConfig = {}; + this.charCodeToPatternIdxToConfig = {}; + this.modes = []; + this.emptyGroups = {}; + this.trackStartLines = true; + this.trackEndLines = true; + this.hasCustom = false; + this.canModeBeOptimized = {}; + this.TRACE_INIT = (phaseDesc, phaseImpl) => { + if (this.traceInitPerf === true) { + this.traceInitIndent++; + const indent = new Array(this.traceInitIndent + 1).join(" "); + if (this.traceInitIndent < this.traceInitMaxIdent) { + console.log(`${indent}--> <${phaseDesc}>`); + } + const { time: time4, value: value2 } = timer2(phaseImpl); + const traceMethod = time4 > 10 ? console.warn : console.log; + if (this.traceInitIndent < this.traceInitMaxIdent) { + traceMethod(`${indent}<-- <${phaseDesc}> time: ${time4}ms`); + } + this.traceInitIndent--; + return value2; + } else { + return phaseImpl(); + } + }; + if (typeof config5 === "boolean") { + throw Error("The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported"); + } + this.config = assign_default({}, DEFAULT_LEXER_CONFIG, config5); + const traceInitVal = this.config.traceInitPerf; + if (traceInitVal === true) { + this.traceInitMaxIdent = Infinity; + this.traceInitPerf = true; + } else if (typeof traceInitVal === "number") { + this.traceInitMaxIdent = traceInitVal; + this.traceInitPerf = true; + } + this.traceInitIndent = -1; + this.TRACE_INIT("Lexer Constructor", () => { + let actualDefinition; + let hasOnlySingleMode = true; + this.TRACE_INIT("Lexer Config handling", () => { + if (this.config.lineTerminatorsPattern === DEFAULT_LEXER_CONFIG.lineTerminatorsPattern) { + this.config.lineTerminatorsPattern = LineTerminatorOptimizedTester; + } else { + if (this.config.lineTerminatorCharacters === DEFAULT_LEXER_CONFIG.lineTerminatorCharacters) { + throw Error("Error: Missing property on the Lexer config.\n For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS"); + } + } + if (config5.safeMode && config5.ensureOptimizations) { + throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.'); + } + this.trackStartLines = /full|onlyStart/i.test(this.config.positionTracking); + this.trackEndLines = /full/i.test(this.config.positionTracking); + if (isArray_default(lexerDefinition)) { + actualDefinition = { + modes: { defaultMode: clone_default2(lexerDefinition) }, + defaultMode: DEFAULT_MODE + }; + } else { + hasOnlySingleMode = false; + actualDefinition = clone_default2(lexerDefinition); + } + }); + if (this.config.skipValidations === false) { + this.TRACE_INIT("performRuntimeChecks", () => { + this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(performRuntimeChecks(actualDefinition, this.trackStartLines, this.config.lineTerminatorCharacters)); + }); + this.TRACE_INIT("performWarningRuntimeChecks", () => { + this.lexerDefinitionWarning = this.lexerDefinitionWarning.concat(performWarningRuntimeChecks(actualDefinition, this.trackStartLines, this.config.lineTerminatorCharacters)); + }); + } + actualDefinition.modes = actualDefinition.modes ? actualDefinition.modes : {}; + forEach_default(actualDefinition.modes, (currModeValue, currModeName) => { + actualDefinition.modes[currModeName] = reject_default(currModeValue, (currTokType) => isUndefined_default(currTokType)); + }); + const allModeNames = keys_default(actualDefinition.modes); + forEach_default(actualDefinition.modes, (currModDef, currModName) => { + this.TRACE_INIT(`Mode: <${currModName}> processing`, () => { + this.modes.push(currModName); + if (this.config.skipValidations === false) { + this.TRACE_INIT(`validatePatterns`, () => { + this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(validatePatterns(currModDef, allModeNames)); }); } - if (!(otherNodeId in nodes6)) { - biconnectedSearch2(root4, otherNodeId, currentNode); - nodes6[currentNode].low = Math.min(nodes6[currentNode].low, nodes6[otherNodeId].low); - if (nodes6[currentNode].id <= nodes6[otherNodeId].low) { - nodes6[currentNode].cutVertex = true; - buildComponent(currentNode, otherNodeId); - } - } else { - nodes6[currentNode].low = Math.min(nodes6[currentNode].low, nodes6[otherNodeId].id); + if (isEmpty_default(this.lexerDefinitionErrors)) { + augmentTokenTypes(currModDef); + let currAnalyzeResult; + this.TRACE_INIT(`analyzeTokenTypes`, () => { + currAnalyzeResult = analyzeTokenTypes(currModDef, { + lineTerminatorCharacters: this.config.lineTerminatorCharacters, + positionTracking: config5.positionTracking, + ensureOptimizations: config5.ensureOptimizations, + safeMode: config5.safeMode, + tracer: this.TRACE_INIT + }); + }); + this.patternIdxToConfig[currModName] = currAnalyzeResult.patternIdxToConfig; + this.charCodeToPatternIdxToConfig[currModName] = currAnalyzeResult.charCodeToPatternIdxToConfig; + this.emptyGroups = assign_default({}, this.emptyGroups, currAnalyzeResult.emptyGroups); + this.hasCustom = currAnalyzeResult.hasCustom || this.hasCustom; + this.canModeBeOptimized[currModName] = currAnalyzeResult.canBeOptimized; + } + }); + }); + this.defaultMode = actualDefinition.defaultMode; + if (!isEmpty_default(this.lexerDefinitionErrors) && !this.config.deferDefinitionErrorsHandling) { + const allErrMessages = map_default(this.lexerDefinitionErrors, (error3) => { + return error3.message; + }); + const allErrMessagesString = allErrMessages.join("-----------------------\n"); + throw new Error("Errors detected in definition of Lexer:\n" + allErrMessagesString); + } + forEach_default(this.lexerDefinitionWarning, (warningDescriptor) => { + PRINT_WARNING(warningDescriptor.message); + }); + this.TRACE_INIT("Choosing sub-methods implementations", () => { + if (SUPPORT_STICKY) { + this.chopInput = identity_default4; + this.match = this.matchWithTest; + } else { + this.updateLastIndex = noop_default2; + this.match = this.matchWithExec; + } + if (hasOnlySingleMode) { + this.handleModes = noop_default2; + } + if (this.trackStartLines === false) { + this.computeNewColumn = identity_default4; + } + if (this.trackEndLines === false) { + this.updateTokenEndLineColumnLocation = noop_default2; + } + if (/full/i.test(this.config.positionTracking)) { + this.createTokenInstance = this.createFullToken; + } else if (/onlyStart/i.test(this.config.positionTracking)) { + this.createTokenInstance = this.createStartOnlyToken; + } else if (/onlyOffset/i.test(this.config.positionTracking)) { + this.createTokenInstance = this.createOffsetOnlyToken; + } else { + throw Error(`Invalid config option: "${this.config.positionTracking}"`); + } + if (this.hasCustom) { + this.addToken = this.addTokenUsingPush; + this.handlePayload = this.handlePayloadWithCustom; + } else { + this.addToken = this.addTokenUsingMemberAccess; + this.handlePayload = this.handlePayloadNoCustom; + } + }); + this.TRACE_INIT("Failed Optimization Warnings", () => { + const unOptimizedModes = reduce_default(this.canModeBeOptimized, (cannotBeOptimized, canBeOptimized, modeName) => { + if (canBeOptimized === false) { + cannotBeOptimized.push(modeName); } + return cannotBeOptimized; + }, []); + if (config5.ensureOptimizations && !isEmpty_default(unOptimizedModes)) { + throw Error(`Lexer Modes: < ${unOptimizedModes.join(", ")} > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`); } }); + this.TRACE_INIT("clearRegExpParserCache", () => { + clearRegExpParserCache(); + }); + this.TRACE_INIT("toFastProperties", () => { + toFastProperties(this); + }); + }); + } + tokenize(text4, initialMode = this.defaultMode) { + if (!isEmpty_default(this.lexerDefinitionErrors)) { + const allErrMessages = map_default(this.lexerDefinitionErrors, (error3) => { + return error3.message; + }); + const allErrMessagesString = allErrMessages.join("-----------------------\n"); + throw new Error("Unable to Tokenize because Errors detected in definition of Lexer:\n" + allErrMessagesString); } - }, "biconnectedSearch"); - eles.forEach(function(ele) { - if (ele.isNode()) { - var nodeId = ele.id(); - if (!(nodeId in nodes6)) { - edgeCount3 = 0; - biconnectedSearch(nodeId, nodeId); - nodes6[nodeId].cutVertex = edgeCount3 > 1; + return this.tokenizeInternal(text4, initialMode); + } + // There is quite a bit of duplication between this and "tokenizeInternalLazy" + // This is intentional due to performance considerations. + // this method also used quite a bit of `!` none null assertions because it is too optimized + // for `tsc` to always understand it is "safe" + tokenizeInternal(text4, initialMode) { + let i2, j3, k2, matchAltImage, longerAlt, matchedImage, payload, altPayload, imageLength, group2, tokType, newToken, errLength, droppedChar, msg, match2; + const orgText = text4; + const orgLength = orgText.length; + let offset = 0; + let matchedTokensIndex = 0; + const guessedNumberOfTokens = this.hasCustom ? 0 : Math.floor(text4.length / 10); + const matchedTokens = new Array(guessedNumberOfTokens); + const errors = []; + let line2 = this.trackStartLines ? 1 : void 0; + let column2 = this.trackStartLines ? 1 : void 0; + const groups = cloneEmptyGroups(this.emptyGroups); + const trackLines = this.trackStartLines; + const lineTerminatorPattern = this.config.lineTerminatorsPattern; + let currModePatternsLength = 0; + let patternIdxToConfig = []; + let currCharCodeToPatternIdxToConfig = []; + const modeStack = []; + const emptyArray = []; + Object.freeze(emptyArray); + let getPossiblePatterns; + function getPossiblePatternsSlow() { + return patternIdxToConfig; + } + __name(getPossiblePatternsSlow, "getPossiblePatternsSlow"); + function getPossiblePatternsOptimized(charCode) { + const optimizedCharIdx = charCodeToOptimizedIndex(charCode); + const possiblePatterns = currCharCodeToPatternIdxToConfig[optimizedCharIdx]; + if (possiblePatterns === void 0) { + return emptyArray; + } else { + return possiblePatterns; } } - }); - var cutVertices = Object.keys(nodes6).filter(function(id30) { - return nodes6[id30].cutVertex; - }).map(function(id30) { - return eles.getElementById(id30); - }); - return { - cut: eles.spawn(cutVertices), - components: components3 - }; - }, "hopcroftTarjanBiconnected"); - hopcroftTarjanBiconnected$1 = { - hopcroftTarjanBiconnected, - htbc: hopcroftTarjanBiconnected, - htb: hopcroftTarjanBiconnected, - hopcroftTarjanBiconnectedComponents: hopcroftTarjanBiconnected - }; - tarjanStronglyConnected = /* @__PURE__ */ __name(function tarjanStronglyConnected2() { - var eles = this; - var nodes6 = {}; - var index = 0; - var components3 = []; - var stack = []; - var cut = eles.spawn(eles); - var stronglyConnectedSearch = /* @__PURE__ */ __name(function stronglyConnectedSearch2(sourceNodeId) { - stack.push(sourceNodeId); - nodes6[sourceNodeId] = { - index, - low: index++, - explored: false - }; - var connectedEdges = eles.getElementById(sourceNodeId).connectedEdges().intersection(eles); - connectedEdges.forEach(function(edge) { - var targetNodeId = edge.target().id(); - if (targetNodeId !== sourceNodeId) { - if (!(targetNodeId in nodes6)) { - stronglyConnectedSearch2(targetNodeId); + __name(getPossiblePatternsOptimized, "getPossiblePatternsOptimized"); + const pop_mode = /* @__PURE__ */ __name((popToken) => { + if (modeStack.length === 1 && // if we have both a POP_MODE and a PUSH_MODE this is in-fact a "transition" + // So no error should occur. + popToken.tokenType.PUSH_MODE === void 0) { + const msg2 = this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(popToken); + errors.push({ + offset: popToken.startOffset, + line: popToken.startLine, + column: popToken.startColumn, + length: popToken.image.length, + message: msg2 + }); + } else { + modeStack.pop(); + const newMode = last_default(modeStack); + patternIdxToConfig = this.patternIdxToConfig[newMode]; + currCharCodeToPatternIdxToConfig = this.charCodeToPatternIdxToConfig[newMode]; + currModePatternsLength = patternIdxToConfig.length; + const modeCanBeOptimized = this.canModeBeOptimized[newMode] && this.config.safeMode === false; + if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) { + getPossiblePatterns = getPossiblePatternsOptimized; + } else { + getPossiblePatterns = getPossiblePatternsSlow; + } + } + }, "pop_mode"); + function push_mode(newMode) { + modeStack.push(newMode); + currCharCodeToPatternIdxToConfig = this.charCodeToPatternIdxToConfig[newMode]; + patternIdxToConfig = this.patternIdxToConfig[newMode]; + currModePatternsLength = patternIdxToConfig.length; + currModePatternsLength = patternIdxToConfig.length; + const modeCanBeOptimized = this.canModeBeOptimized[newMode] && this.config.safeMode === false; + if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) { + getPossiblePatterns = getPossiblePatternsOptimized; + } else { + getPossiblePatterns = getPossiblePatternsSlow; + } + } + __name(push_mode, "push_mode"); + push_mode.call(this, initialMode); + let currConfig; + const recoveryEnabled = this.config.recoveryEnabled; + while (offset < orgLength) { + matchedImage = null; + const nextCharCode = orgText.charCodeAt(offset); + const chosenPatternIdxToConfig = getPossiblePatterns(nextCharCode); + const chosenPatternsLength = chosenPatternIdxToConfig.length; + for (i2 = 0; i2 < chosenPatternsLength; i2++) { + currConfig = chosenPatternIdxToConfig[i2]; + const currPattern = currConfig.pattern; + payload = null; + const singleCharCode = currConfig.short; + if (singleCharCode !== false) { + if (nextCharCode === singleCharCode) { + matchedImage = currPattern; + } + } else if (currConfig.isCustom === true) { + match2 = currPattern.exec(orgText, offset, matchedTokens, groups); + if (match2 !== null) { + matchedImage = match2[0]; + if (match2.payload !== void 0) { + payload = match2.payload; + } + } else { + matchedImage = null; + } + } else { + this.updateLastIndex(currPattern, offset); + matchedImage = this.match(currPattern, text4, offset); } - if (!nodes6[targetNodeId].explored) { - nodes6[sourceNodeId].low = Math.min(nodes6[sourceNodeId].low, nodes6[targetNodeId].low); + if (matchedImage !== null) { + longerAlt = currConfig.longerAlt; + if (longerAlt !== void 0) { + const longerAltLength = longerAlt.length; + for (k2 = 0; k2 < longerAltLength; k2++) { + const longerAltConfig = patternIdxToConfig[longerAlt[k2]]; + const longerAltPattern = longerAltConfig.pattern; + altPayload = null; + if (longerAltConfig.isCustom === true) { + match2 = longerAltPattern.exec(orgText, offset, matchedTokens, groups); + if (match2 !== null) { + matchAltImage = match2[0]; + if (match2.payload !== void 0) { + altPayload = match2.payload; + } + } else { + matchAltImage = null; + } + } else { + this.updateLastIndex(longerAltPattern, offset); + matchAltImage = this.match(longerAltPattern, text4, offset); + } + if (matchAltImage && matchAltImage.length > matchedImage.length) { + matchedImage = matchAltImage; + payload = altPayload; + currConfig = longerAltConfig; + break; + } + } + } + break; } } - }); - if (nodes6[sourceNodeId].index === nodes6[sourceNodeId].low) { - var componentNodes = eles.spawn(); - for (; ; ) { - var nodeId = stack.pop(); - componentNodes.merge(eles.getElementById(nodeId)); - nodes6[nodeId].low = nodes6[sourceNodeId].index; - nodes6[nodeId].explored = true; - if (nodeId === sourceNodeId) { + if (matchedImage !== null) { + imageLength = matchedImage.length; + group2 = currConfig.group; + if (group2 !== void 0) { + tokType = currConfig.tokenTypeIdx; + newToken = this.createTokenInstance(matchedImage, offset, tokType, currConfig.tokenType, line2, column2, imageLength); + this.handlePayload(newToken, payload); + if (group2 === false) { + matchedTokensIndex = this.addToken(matchedTokens, matchedTokensIndex, newToken); + } else { + groups[group2].push(newToken); + } + } + text4 = this.chopInput(text4, imageLength); + offset = offset + imageLength; + column2 = this.computeNewColumn(column2, imageLength); + if (trackLines === true && currConfig.canLineTerminator === true) { + let numOfLTsInMatch = 0; + let foundTerminator; + let lastLTEndOffset; + lineTerminatorPattern.lastIndex = 0; + do { + foundTerminator = lineTerminatorPattern.test(matchedImage); + if (foundTerminator === true) { + lastLTEndOffset = lineTerminatorPattern.lastIndex - 1; + numOfLTsInMatch++; + } + } while (foundTerminator === true); + if (numOfLTsInMatch !== 0) { + line2 = line2 + numOfLTsInMatch; + column2 = imageLength - lastLTEndOffset; + this.updateTokenEndLineColumnLocation(newToken, group2, lastLTEndOffset, numOfLTsInMatch, line2, column2, imageLength); + } + } + this.handleModes(currConfig, pop_mode, push_mode, newToken); + } else { + const errorStartOffset = offset; + const errorLine = line2; + const errorColumn = column2; + let foundResyncPoint = recoveryEnabled === false; + while (foundResyncPoint === false && offset < orgLength) { + text4 = this.chopInput(text4, 1); + offset++; + for (j3 = 0; j3 < currModePatternsLength; j3++) { + const currConfig2 = patternIdxToConfig[j3]; + const currPattern = currConfig2.pattern; + const singleCharCode = currConfig2.short; + if (singleCharCode !== false) { + if (orgText.charCodeAt(offset) === singleCharCode) { + foundResyncPoint = true; + } + } else if (currConfig2.isCustom === true) { + foundResyncPoint = currPattern.exec(orgText, offset, matchedTokens, groups) !== null; + } else { + this.updateLastIndex(currPattern, offset); + foundResyncPoint = currPattern.exec(text4) !== null; + } + if (foundResyncPoint === true) { + break; + } + } + } + errLength = offset - errorStartOffset; + column2 = this.computeNewColumn(column2, errLength); + msg = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(orgText, errorStartOffset, errLength, errorLine, errorColumn); + errors.push({ + offset: errorStartOffset, + line: errorLine, + column: errorColumn, + length: errLength, + message: msg + }); + if (recoveryEnabled === false) { break; } } - var componentEdges = componentNodes.edgesWith(componentNodes); - var component2 = componentNodes.merge(componentEdges); - components3.push(component2); - cut = cut.difference(component2); } - }, "stronglyConnectedSearch"); - eles.forEach(function(ele) { - if (ele.isNode()) { - var nodeId = ele.id(); - if (!(nodeId in nodes6)) { - stronglyConnectedSearch(nodeId); - } + if (!this.hasCustom) { + matchedTokens.length = matchedTokensIndex; } - }); - return { - cut, - components: components3 - }; - }, "tarjanStronglyConnected"); - tarjanStronglyConnected$1 = { - tarjanStronglyConnected, - tsc: tarjanStronglyConnected, - tscc: tarjanStronglyConnected, - tarjanStronglyConnectedComponents: tarjanStronglyConnected - }; - elesfn$j = {}; - [elesfn$v, elesfn$u, elesfn$t, elesfn$s, elesfn$r, elesfn$q, elesfn$p, elesfn$o, elesfn$n, elesfn$m, elesfn$l, markovClustering$1, kClustering, hierarchicalClustering$1, affinityPropagation$1, elesfn$k, hopcroftTarjanBiconnected$1, tarjanStronglyConnected$1].forEach(function(props) { - extend4(elesfn$j, props); - }); - STATE_PENDING = 0; - STATE_FULFILLED = 1; - STATE_REJECTED = 2; - api = /* @__PURE__ */ __name(function api2(executor) { - if (!(this instanceof api2)) return new api2(executor); - this.id = "Thenable/1.0.7"; - this.state = STATE_PENDING; - this.fulfillValue = void 0; - this.rejectReason = void 0; - this.onFulfilled = []; - this.onRejected = []; - this.proxy = { - then: this.then.bind(this) - }; - if (typeof executor === "function") executor.call(this, this.fulfill.bind(this), this.reject.bind(this)); - }, "api"); - api.prototype = { - /* promise resolving methods */ - fulfill: /* @__PURE__ */ __name(function fulfill(value2) { - return deliver(this, STATE_FULFILLED, "fulfillValue", value2); - }, "fulfill"), - reject: /* @__PURE__ */ __name(function reject2(value2) { - return deliver(this, STATE_REJECTED, "rejectReason", value2); - }, "reject"), - /* "The then Method" [Promises/A+ 1.1, 1.2, 2.2] */ - then: /* @__PURE__ */ __name(function then(onFulfilled, onRejected) { - var curr = this; - var next3 = new api(); - curr.onFulfilled.push(resolver(onFulfilled, next3, "fulfill")); - curr.onRejected.push(resolver(onRejected, next3, "reject")); - execute(curr); - return next3.proxy; - }, "then") - }; - deliver = /* @__PURE__ */ __name(function deliver2(curr, state4, name, value2) { - if (curr.state === STATE_PENDING) { - curr.state = state4; - curr[name] = value2; - execute(curr); + return { + tokens: matchedTokens, + groups, + errors + }; } - return curr; - }, "deliver"); - execute = /* @__PURE__ */ __name(function execute2(curr) { - if (curr.state === STATE_FULFILLED) execute_handlers(curr, "onFulfilled", curr.fulfillValue); - else if (curr.state === STATE_REJECTED) execute_handlers(curr, "onRejected", curr.rejectReason); - }, "execute"); - execute_handlers = /* @__PURE__ */ __name(function execute_handlers2(curr, name, value2) { - if (curr[name].length === 0) return; - var handlers = curr[name]; - curr[name] = []; - var func = /* @__PURE__ */ __name(function func2() { - for (var i2 = 0; i2 < handlers.length; i2++) { - handlers[i2](value2); - } - }, "func"); - if (typeof setImmediate === "function") setImmediate(func); - else setTimeout(func, 0); - }, "execute_handlers"); - resolver = /* @__PURE__ */ __name(function resolver2(cb, next3, method) { - return function(value2) { - if (typeof cb !== "function") - next3[method].call(next3, value2); - else { - var result; - try { - result = cb(value2); - } catch (e3) { - next3.reject(e3); - return; + handleModes(config5, pop_mode, push_mode, newToken) { + if (config5.pop === true) { + const pushMode = config5.push; + pop_mode(newToken); + if (pushMode !== void 0) { + push_mode.call(this, pushMode); } - resolve(next3, result); + } else if (config5.push !== void 0) { + push_mode.call(this, config5.push); } - }; - }, "resolver"); - resolve = /* @__PURE__ */ __name(function resolve2(promise4, x5) { - if (promise4 === x5 || promise4.proxy === x5) { - promise4.reject(new TypeError("cannot resolve promise with itself")); - return; } - var then2; - if (_typeof(x5) === "object" && x5 !== null || typeof x5 === "function") { - try { - then2 = x5.then; - } catch (e3) { - promise4.reject(e3); - return; - } + chopInput(text4, length2) { + return text4.substring(length2); } - if (typeof then2 === "function") { - var resolved = false; - try { - then2.call( - x5, - /* resolvePromise */ - /* [Promises/A+ 2.3.3.3.1] */ - function(y5) { - if (resolved) return; - resolved = true; - if (y5 === x5) - promise4.reject(new TypeError("circular thenable chain")); - else resolve2(promise4, y5); - }, - /* rejectPromise */ - /* [Promises/A+ 2.3.3.3.2] */ - function(r2) { - if (resolved) return; - resolved = true; - promise4.reject(r2); - } - ); - } catch (e3) { - if (!resolved) - promise4.reject(e3); - } - return; + updateLastIndex(regExp, newLastIndex) { + regExp.lastIndex = newLastIndex; } - promise4.fulfill(x5); - }, "resolve"); - api.all = function(ps) { - return new api(function(resolveAll, rejectAll) { - var vals = new Array(ps.length); - var doneCount = 0; - var fulfill2 = /* @__PURE__ */ __name(function fulfill3(i3, val) { - vals[i3] = val; - doneCount++; - if (doneCount === ps.length) { - resolveAll(vals); + // TODO: decrease this under 600 characters? inspect stripping comments option in TSC compiler + updateTokenEndLineColumnLocation(newToken, group2, lastLTIdx, numOfLTsInMatch, line2, column2, imageLength) { + let lastCharIsLT, fixForEndingInLT; + if (group2 !== void 0) { + lastCharIsLT = lastLTIdx === imageLength - 1; + fixForEndingInLT = lastCharIsLT ? -1 : 0; + if (!(numOfLTsInMatch === 1 && lastCharIsLT === true)) { + newToken.endLine = line2 + fixForEndingInLT; + newToken.endColumn = column2 - 1 + -fixForEndingInLT; } - }, "fulfill"); - for (var i2 = 0; i2 < ps.length; i2++) { - (function(i3) { - var p3 = ps[i3]; - var isPromise = p3 != null && p3.then != null; - if (isPromise) { - p3.then(function(val2) { - fulfill2(i3, val2); - }, function(err) { - rejectAll(err); - }); - } else { - var val = p3; - fulfill2(i3, val); - } - })(i2); } - }); - }; - api.resolve = function(val) { - return new api(function(resolve3, reject3) { - resolve3(val); - }); - }; - api.reject = function(val) { - return new api(function(resolve3, reject3) { - reject3(val); - }); - }; - Promise$1 = typeof Promise !== "undefined" ? Promise : api; - Animation = /* @__PURE__ */ __name(function Animation2(target, opts, opts2) { - var isCore = core2(target); - var isEle = !isCore; - var _p = this._private = extend4({ - duration: 1e3 - }, opts, opts2); - _p.target = target; - _p.style = _p.style || _p.css; - _p.started = false; - _p.playing = false; - _p.hooked = false; - _p.applying = false; - _p.progress = 0; - _p.completes = []; - _p.frames = []; - if (_p.complete && fn$6(_p.complete)) { - _p.completes.push(_p.complete); } - if (isEle) { - var pos = target.position(); - _p.startPosition = _p.startPosition || { - x: pos.x, - y: pos.y - }; - _p.startStyle = _p.startStyle || target.cy().style().getAnimationStartStyle(target, _p.style); + computeNewColumn(oldColumn, imageLength) { + return oldColumn + imageLength; } - if (isCore) { - var pan2 = target.pan(); - _p.startPan = { - x: pan2.x, - y: pan2.y + createOffsetOnlyToken(image, startOffset, tokenTypeIdx, tokenType) { + return { + image, + startOffset, + tokenTypeIdx, + tokenType }; - _p.startZoom = target.zoom(); } - this.length = 1; - this[0] = this; - }, "Animation"); - anifn = Animation.prototype; - extend4(anifn, { - instanceString: /* @__PURE__ */ __name(function instanceString() { - return "animation"; - }, "instanceString"), - hook: /* @__PURE__ */ __name(function hook() { - var _p = this._private; - if (!_p.hooked) { - var q2; - var tAni = _p.target._private.animation; - if (_p.queue) { - q2 = tAni.queue; + createStartOnlyToken(image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn) { + return { + image, + startOffset, + startLine, + startColumn, + tokenTypeIdx, + tokenType + }; + } + createFullToken(image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn, imageLength) { + return { + image, + startOffset, + endOffset: startOffset + imageLength - 1, + startLine, + endLine: startLine, + startColumn, + endColumn: startColumn + imageLength - 1, + tokenTypeIdx, + tokenType + }; + } + addTokenUsingPush(tokenVector, index, tokenToAdd) { + tokenVector.push(tokenToAdd); + return index; + } + addTokenUsingMemberAccess(tokenVector, index, tokenToAdd) { + tokenVector[index] = tokenToAdd; + index++; + return index; + } + handlePayloadNoCustom(token2, payload) { + } + handlePayloadWithCustom(token2, payload) { + if (payload !== null) { + token2.payload = payload; + } + } + matchWithTest(pattern, text4, offset) { + const found = pattern.test(text4); + if (found === true) { + return text4.substring(offset, pattern.lastIndex); + } + return null; + } + matchWithExec(pattern, text4) { + const regExpArray = pattern.exec(text4); + return regExpArray !== null ? regExpArray[0] : null; + } + }; + Lexer2.SKIPPED = "This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace."; + Lexer2.NA = /NOT_APPLICABLE/; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/tokens_public.js + function tokenLabel2(tokType) { + if (hasTokenLabel2(tokType)) { + return tokType.LABEL; + } else { + return tokType.name; + } + } + function hasTokenLabel2(obj) { + return isString_default(obj.LABEL) && obj.LABEL !== ""; + } + function createToken(config5) { + return createTokenInternal(config5); + } + function createTokenInternal(config5) { + const pattern = config5.pattern; + const tokenType = {}; + tokenType.name = config5.name; + if (!isUndefined_default(pattern)) { + tokenType.PATTERN = pattern; + } + if (has_default(config5, PARENT)) { + throw "The parent property is no longer supported.\nSee: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details."; + } + if (has_default(config5, CATEGORIES)) { + tokenType.CATEGORIES = config5[CATEGORIES]; + } + augmentTokenTypes([tokenType]); + if (has_default(config5, LABEL)) { + tokenType.LABEL = config5[LABEL]; + } + if (has_default(config5, GROUP)) { + tokenType.GROUP = config5[GROUP]; + } + if (has_default(config5, POP_MODE)) { + tokenType.POP_MODE = config5[POP_MODE]; + } + if (has_default(config5, PUSH_MODE)) { + tokenType.PUSH_MODE = config5[PUSH_MODE]; + } + if (has_default(config5, LONGER_ALT)) { + tokenType.LONGER_ALT = config5[LONGER_ALT]; + } + if (has_default(config5, LINE_BREAKS)) { + tokenType.LINE_BREAKS = config5[LINE_BREAKS]; + } + if (has_default(config5, START_CHARS_HINT)) { + tokenType.START_CHARS_HINT = config5[START_CHARS_HINT]; + } + return tokenType; + } + function createTokenInstance(tokType, image, startOffset, endOffset, startLine, endLine, startColumn, endColumn) { + return { + image, + startOffset, + endOffset, + startLine, + endLine, + startColumn, + endColumn, + tokenTypeIdx: tokType.tokenTypeIdx, + tokenType: tokType + }; + } + function tokenMatcher(token2, tokType) { + return tokenStructuredMatcher(token2, tokType); + } + var PARENT, CATEGORIES, LABEL, GROUP, PUSH_MODE, POP_MODE, LONGER_ALT, LINE_BREAKS, START_CHARS_HINT, EOF; + var init_tokens_public = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/scan/tokens_public.js"() { + "use strict"; + init_lodash(); + init_lexer_public(); + init_tokens(); + __name(tokenLabel2, "tokenLabel"); + __name(hasTokenLabel2, "hasTokenLabel"); + PARENT = "parent"; + CATEGORIES = "categories"; + LABEL = "label"; + GROUP = "group"; + PUSH_MODE = "push_mode"; + POP_MODE = "pop_mode"; + LONGER_ALT = "longer_alt"; + LINE_BREAKS = "line_breaks"; + START_CHARS_HINT = "start_chars_hint"; + __name(createToken, "createToken"); + __name(createTokenInternal, "createTokenInternal"); + EOF = createToken({ name: "EOF", pattern: Lexer2.NA }); + augmentTokenTypes([EOF]); + __name(createTokenInstance, "createTokenInstance"); + __name(tokenMatcher, "tokenMatcher"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/errors_public.js + var defaultParserErrorProvider, defaultGrammarResolverErrorProvider, defaultGrammarValidatorErrorProvider; + var init_errors_public = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/errors_public.js"() { + "use strict"; + init_tokens_public(); + init_lodash(); + init_api3(); + defaultParserErrorProvider = { + buildMismatchTokenMessage({ expected, actual, previous, ruleName }) { + const hasLabel = hasTokenLabel2(expected); + const expectedMsg = hasLabel ? `--> ${tokenLabel2(expected)} <--` : `token of type --> ${expected.name} <--`; + const msg = `Expecting ${expectedMsg} but found --> '${actual.image}' <--`; + return msg; + }, + buildNotAllInputParsedMessage({ firstRedundant, ruleName }) { + return "Redundant input, expecting EOF but found: " + firstRedundant.image; + }, + buildNoViableAltMessage({ expectedPathsPerAlt, actual, previous, customUserDescription, ruleName }) { + const errPrefix = "Expecting: "; + const actualText = head_default(actual).image; + const errSuffix = "\nbut found: '" + actualText + "'"; + if (customUserDescription) { + return errPrefix + customUserDescription + errSuffix; + } else { + const allLookAheadPaths = reduce_default(expectedPathsPerAlt, (result, currAltPaths) => result.concat(currAltPaths), []); + const nextValidTokenSequences = map_default(allLookAheadPaths, (currPath) => `[${map_default(currPath, (currTokenType) => tokenLabel2(currTokenType)).join(", ")}]`); + const nextValidSequenceItems = map_default(nextValidTokenSequences, (itemMsg, idx) => ` ${idx + 1}. ${itemMsg}`); + const calculatedDescription = `one of these possible Token sequences: +${nextValidSequenceItems.join("\n")}`; + return errPrefix + calculatedDescription + errSuffix; + } + }, + buildEarlyExitMessage({ expectedIterationPaths, actual, customUserDescription, ruleName }) { + const errPrefix = "Expecting: "; + const actualText = head_default(actual).image; + const errSuffix = "\nbut found: '" + actualText + "'"; + if (customUserDescription) { + return errPrefix + customUserDescription + errSuffix; + } else { + const nextValidTokenSequences = map_default(expectedIterationPaths, (currPath) => `[${map_default(currPath, (currTokenType) => tokenLabel2(currTokenType)).join(",")}]`); + const calculatedDescription = `expecting at least one iteration which starts with one of these possible Token sequences:: + <${nextValidTokenSequences.join(" ,")}>`; + return errPrefix + calculatedDescription + errSuffix; + } + } + }; + Object.freeze(defaultParserErrorProvider); + defaultGrammarResolverErrorProvider = { + buildRuleNotFoundError(topLevelRule, undefinedRule) { + const msg = "Invalid grammar, reference to a rule which is not defined: ->" + undefinedRule.nonTerminalName + "<-\ninside top level rule: ->" + topLevelRule.name + "<-"; + return msg; + } + }; + defaultGrammarValidatorErrorProvider = { + buildDuplicateFoundError(topLevelRule, duplicateProds) { + function getExtraProductionArgument2(prod) { + if (prod instanceof Terminal) { + return prod.terminalType.name; + } else if (prod instanceof NonTerminal) { + return prod.nonTerminalName; } else { - q2 = tAni.current; - } - q2.push(this); - if (elementOrCollection(_p.target)) { - _p.target.cy().addToAnimationPool(_p.target); + return ""; } - _p.hooked = true; } - return this; - }, "hook"), - play: /* @__PURE__ */ __name(function play() { - var _p = this._private; - if (_p.progress === 1) { - _p.progress = 0; + __name(getExtraProductionArgument2, "getExtraProductionArgument"); + const topLevelName = topLevelRule.name; + const duplicateProd = head_default(duplicateProds); + const index = duplicateProd.idx; + const dslName = getProductionDslName(duplicateProd); + const extraArgument = getExtraProductionArgument2(duplicateProd); + const hasExplicitIndex = index > 0; + let msg = `->${dslName}${hasExplicitIndex ? index : ""}<- ${extraArgument ? `with argument: ->${extraArgument}<-` : ""} + appears more than once (${duplicateProds.length} times) in the top level rule: ->${topLevelName}<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `; + msg = msg.replace(/[ \t]+/g, " "); + msg = msg.replace(/\s\s+/g, "\n"); + return msg; + }, + buildNamespaceConflictError(rule) { + const errMsg = `Namespace conflict found in grammar. +The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${rule.name}>. +To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`; + return errMsg; + }, + buildAlternationPrefixAmbiguityError(options2) { + const pathMsg = map_default(options2.prefixPath, (currTok) => tokenLabel2(currTok)).join(", "); + const occurrence = options2.alternation.idx === 0 ? "" : options2.alternation.idx; + const errMsg = `Ambiguous alternatives: <${options2.ambiguityIndices.join(" ,")}> due to common lookahead prefix +in inside <${options2.topLevelRule.name}> Rule, +<${pathMsg}> may appears as a prefix path in all these alternatives. +See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`; + return errMsg; + }, + buildAlternationAmbiguityError(options2) { + const pathMsg = map_default(options2.prefixPath, (currtok) => tokenLabel2(currtok)).join(", "); + const occurrence = options2.alternation.idx === 0 ? "" : options2.alternation.idx; + let currMessage = `Ambiguous Alternatives Detected: <${options2.ambiguityIndices.join(" ,")}> in inside <${options2.topLevelRule.name}> Rule, +<${pathMsg}> may appears as a prefix path in all these alternatives. +`; + currMessage = currMessage + `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`; + return currMessage; + }, + buildEmptyRepetitionError(options2) { + let dslName = getProductionDslName(options2.repetition); + if (options2.repetition.idx !== 0) { + dslName += options2.repetition.idx; } - _p.playing = true; - _p.started = false; - _p.stopped = false; - this.hook(); - return this; - }, "play"), - playing: /* @__PURE__ */ __name(function playing() { - return this._private.playing; - }, "playing"), - apply: /* @__PURE__ */ __name(function apply3() { - var _p = this._private; - _p.applying = true; - _p.started = false; - _p.stopped = false; - this.hook(); - return this; - }, "apply"), - applying: /* @__PURE__ */ __name(function applying() { - return this._private.applying; - }, "applying"), - pause: /* @__PURE__ */ __name(function pause() { - var _p = this._private; - _p.playing = false; - _p.started = false; - return this; - }, "pause"), - stop: /* @__PURE__ */ __name(function stop() { - var _p = this._private; - _p.playing = false; - _p.started = false; - _p.stopped = true; - return this; - }, "stop"), - rewind: /* @__PURE__ */ __name(function rewind() { - return this.progress(0); - }, "rewind"), - fastforward: /* @__PURE__ */ __name(function fastforward() { - return this.progress(1); - }, "fastforward"), - time: /* @__PURE__ */ __name(function time3(t4) { - var _p = this._private; - if (t4 === void 0) { - return _p.progress * _p.duration; + const errMsg = `The repetition <${dslName}> within Rule <${options2.topLevelRule.name}> can never consume any tokens. +This could lead to an infinite loop.`; + return errMsg; + }, + // TODO: remove - `errors_public` from nyc.config.js exclude + // once this method is fully removed from this file + buildTokenNameError(options2) { + return "deprecated"; + }, + buildEmptyAlternationError(options2) { + const errMsg = `Ambiguous empty alternative: <${options2.emptyChoiceIdx + 1}> in inside <${options2.topLevelRule.name}> Rule. +Only the last alternative may be an empty alternative.`; + return errMsg; + }, + buildTooManyAlternativesError(options2) { + const errMsg = `An Alternation cannot have more than 256 alternatives: + inside <${options2.topLevelRule.name}> Rule. + has ${options2.alternation.definition.length + 1} alternatives.`; + return errMsg; + }, + buildLeftRecursionError(options2) { + const ruleName = options2.topLevelRule.name; + const pathNames = map_default(options2.leftRecursionPath, (currRule) => currRule.name); + const leftRecursivePath = `${ruleName} --> ${pathNames.concat([ruleName]).join(" --> ")}`; + const errMsg = `Left Recursion found in grammar. +rule: <${ruleName}> can be invoked from itself (directly or indirectly) +without consuming any Tokens. The grammar path that causes this is: + ${leftRecursivePath} + To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`; + return errMsg; + }, + // TODO: remove - `errors_public` from nyc.config.js exclude + // once this method is fully removed from this file + buildInvalidRuleNameError(options2) { + return "deprecated"; + }, + buildDuplicateRuleNameError(options2) { + let ruleName; + if (options2.topLevelRule instanceof Rule) { + ruleName = options2.topLevelRule.name; } else { - return this.progress(t4 / _p.duration); + ruleName = options2.topLevelRule; } - }, "time"), - progress: /* @__PURE__ */ __name(function progress(p3) { - var _p = this._private; - var wasPlaying = _p.playing; - if (p3 === void 0) { - return _p.progress; + const errMsg = `Duplicate definition, rule: ->${ruleName}<- is already defined in the grammar: ->${options2.grammarName}<-`; + return errMsg; + } + }; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/resolver.js + function resolveGrammar(topLevels, errMsgProvider) { + const refResolver = new GastRefResolverVisitor(topLevels, errMsgProvider); + refResolver.resolveRefs(); + return refResolver.errors; + } + var GastRefResolverVisitor; + var init_resolver = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/resolver.js"() { + "use strict"; + init_parser(); + init_lodash(); + init_api3(); + __name(resolveGrammar, "resolveGrammar"); + GastRefResolverVisitor = class extends GAstVisitor { + static { + __name(this, "GastRefResolverVisitor"); + } + constructor(nameToTopRule, errMsgProvider) { + super(); + this.nameToTopRule = nameToTopRule; + this.errMsgProvider = errMsgProvider; + this.errors = []; + } + resolveRefs() { + forEach_default(values_default(this.nameToTopRule), (prod) => { + this.currTopLevel = prod; + prod.accept(this); + }); + } + visitNonTerminal(node2) { + const ref = this.nameToTopRule[node2.nonTerminalName]; + if (!ref) { + const msg = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, node2); + this.errors.push({ + message: msg, + type: ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF, + ruleName: this.currTopLevel.name, + unresolvedRefName: node2.nonTerminalName + }); } else { - if (wasPlaying) { - this.pause(); - } - _p.progress = p3; - _p.started = false; - if (wasPlaying) { - this.play(); - } + node2.referencedRule = ref; } - return this; - }, "progress"), - completed: /* @__PURE__ */ __name(function completed() { - return this._private.progress === 1; - }, "completed"), - reverse: /* @__PURE__ */ __name(function reverse() { - var _p = this._private; - var wasPlaying = _p.playing; - if (wasPlaying) { - this.pause(); + } + }; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/interpreter.js + function possiblePathsFrom(targetDef, maxLength, currPath = []) { + currPath = clone_default2(currPath); + let result = []; + let i2 = 0; + function remainingPathWith(nextDef) { + return nextDef.concat(drop_default(targetDef, i2 + 1)); + } + __name(remainingPathWith, "remainingPathWith"); + function getAlternativesForProd(definition) { + const alternatives = possiblePathsFrom(remainingPathWith(definition), maxLength, currPath); + return result.concat(alternatives); + } + __name(getAlternativesForProd, "getAlternativesForProd"); + while (currPath.length < maxLength && i2 < targetDef.length) { + const prod = targetDef[i2]; + if (prod instanceof Alternative) { + return getAlternativesForProd(prod.definition); + } else if (prod instanceof NonTerminal) { + return getAlternativesForProd(prod.definition); + } else if (prod instanceof Option2) { + result = getAlternativesForProd(prod.definition); + } else if (prod instanceof RepetitionMandatory) { + const newDef = prod.definition.concat([ + new Repetition({ + definition: prod.definition + }) + ]); + return getAlternativesForProd(newDef); + } else if (prod instanceof RepetitionMandatoryWithSeparator) { + const newDef = [ + new Alternative({ definition: prod.definition }), + new Repetition({ + definition: [new Terminal({ terminalType: prod.separator })].concat(prod.definition) + }) + ]; + return getAlternativesForProd(newDef); + } else if (prod instanceof RepetitionWithSeparator) { + const newDef = prod.definition.concat([ + new Repetition({ + definition: [new Terminal({ terminalType: prod.separator })].concat(prod.definition) + }) + ]); + result = getAlternativesForProd(newDef); + } else if (prod instanceof Repetition) { + const newDef = prod.definition.concat([ + new Repetition({ + definition: prod.definition + }) + ]); + result = getAlternativesForProd(newDef); + } else if (prod instanceof Alternation) { + forEach_default(prod.definition, (currAlt) => { + if (isEmpty_default(currAlt.definition) === false) { + result = getAlternativesForProd(currAlt.definition); } - _p.progress = 1 - _p.progress; - _p.started = false; - var swap = /* @__PURE__ */ __name(function swap2(a2, b2) { - var _pa = _p[a2]; - if (_pa == null) { - return; + }); + return result; + } else if (prod instanceof Terminal) { + currPath.push(prod.terminalType); + } else { + throw Error("non exhaustive match"); + } + i2++; + } + result.push({ + partialPath: currPath, + suffixDef: drop_default(targetDef, i2) + }); + return result; + } + function nextPossibleTokensAfter(initialDef, tokenVector, tokMatcher, maxLookAhead) { + const EXIT_NON_TERMINAL = "EXIT_NONE_TERMINAL"; + const EXIT_NON_TERMINAL_ARR = [EXIT_NON_TERMINAL]; + const EXIT_ALTERNATIVE = "EXIT_ALTERNATIVE"; + let foundCompletePath = false; + const tokenVectorLength = tokenVector.length; + const minimalAlternativesIndex = tokenVectorLength - maxLookAhead - 1; + const result = []; + const possiblePaths = []; + possiblePaths.push({ + idx: -1, + def: initialDef, + ruleStack: [], + occurrenceStack: [] + }); + while (!isEmpty_default(possiblePaths)) { + const currPath = possiblePaths.pop(); + if (currPath === EXIT_ALTERNATIVE) { + if (foundCompletePath && last_default(possiblePaths).idx <= minimalAlternativesIndex) { + possiblePaths.pop(); + } + continue; + } + const currDef = currPath.def; + const currIdx = currPath.idx; + const currRuleStack = currPath.ruleStack; + const currOccurrenceStack = currPath.occurrenceStack; + if (isEmpty_default(currDef)) { + continue; + } + const prod = currDef[0]; + if (prod === EXIT_NON_TERMINAL) { + const nextPath = { + idx: currIdx, + def: drop_default(currDef), + ruleStack: dropRight_default(currRuleStack), + occurrenceStack: dropRight_default(currOccurrenceStack) + }; + possiblePaths.push(nextPath); + } else if (prod instanceof Terminal) { + if (currIdx < tokenVectorLength - 1) { + const nextIdx = currIdx + 1; + const actualToken = tokenVector[nextIdx]; + if (tokMatcher(actualToken, prod.terminalType)) { + const nextPath = { + idx: nextIdx, + def: drop_default(currDef), + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }; + possiblePaths.push(nextPath); + } + } else if (currIdx === tokenVectorLength - 1) { + result.push({ + nextTokenType: prod.terminalType, + nextTokenOccurrence: prod.idx, + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }); + foundCompletePath = true; + } else { + throw Error("non exhaustive match"); + } + } else if (prod instanceof NonTerminal) { + const newRuleStack = clone_default2(currRuleStack); + newRuleStack.push(prod.nonTerminalName); + const newOccurrenceStack = clone_default2(currOccurrenceStack); + newOccurrenceStack.push(prod.idx); + const nextPath = { + idx: currIdx, + def: prod.definition.concat(EXIT_NON_TERMINAL_ARR, drop_default(currDef)), + ruleStack: newRuleStack, + occurrenceStack: newOccurrenceStack + }; + possiblePaths.push(nextPath); + } else if (prod instanceof Option2) { + const nextPathWithout = { + idx: currIdx, + def: drop_default(currDef), + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }; + possiblePaths.push(nextPathWithout); + possiblePaths.push(EXIT_ALTERNATIVE); + const nextPathWith = { + idx: currIdx, + def: prod.definition.concat(drop_default(currDef)), + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }; + possiblePaths.push(nextPathWith); + } else if (prod instanceof RepetitionMandatory) { + const secondIteration = new Repetition({ + definition: prod.definition, + idx: prod.idx + }); + const nextDef = prod.definition.concat([secondIteration], drop_default(currDef)); + const nextPath = { + idx: currIdx, + def: nextDef, + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }; + possiblePaths.push(nextPath); + } else if (prod instanceof RepetitionMandatoryWithSeparator) { + const separatorGast = new Terminal({ + terminalType: prod.separator + }); + const secondIteration = new Repetition({ + definition: [separatorGast].concat(prod.definition), + idx: prod.idx + }); + const nextDef = prod.definition.concat([secondIteration], drop_default(currDef)); + const nextPath = { + idx: currIdx, + def: nextDef, + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }; + possiblePaths.push(nextPath); + } else if (prod instanceof RepetitionWithSeparator) { + const nextPathWithout = { + idx: currIdx, + def: drop_default(currDef), + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }; + possiblePaths.push(nextPathWithout); + possiblePaths.push(EXIT_ALTERNATIVE); + const separatorGast = new Terminal({ + terminalType: prod.separator + }); + const nthRepetition = new Repetition({ + definition: [separatorGast].concat(prod.definition), + idx: prod.idx + }); + const nextDef = prod.definition.concat([nthRepetition], drop_default(currDef)); + const nextPathWith = { + idx: currIdx, + def: nextDef, + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }; + possiblePaths.push(nextPathWith); + } else if (prod instanceof Repetition) { + const nextPathWithout = { + idx: currIdx, + def: drop_default(currDef), + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }; + possiblePaths.push(nextPathWithout); + possiblePaths.push(EXIT_ALTERNATIVE); + const nthRepetition = new Repetition({ + definition: prod.definition, + idx: prod.idx + }); + const nextDef = prod.definition.concat([nthRepetition], drop_default(currDef)); + const nextPathWith = { + idx: currIdx, + def: nextDef, + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }; + possiblePaths.push(nextPathWith); + } else if (prod instanceof Alternation) { + for (let i2 = prod.definition.length - 1; i2 >= 0; i2--) { + const currAlt = prod.definition[i2]; + const currAltPath = { + idx: currIdx, + def: currAlt.definition.concat(drop_default(currDef)), + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }; + possiblePaths.push(currAltPath); + possiblePaths.push(EXIT_ALTERNATIVE); + } + } else if (prod instanceof Alternative) { + possiblePaths.push({ + idx: currIdx, + def: prod.definition.concat(drop_default(currDef)), + ruleStack: currRuleStack, + occurrenceStack: currOccurrenceStack + }); + } else if (prod instanceof Rule) { + possiblePaths.push(expandTopLevelRule(prod, currIdx, currRuleStack, currOccurrenceStack)); + } else { + throw Error("non exhaustive match"); + } + } + return result; + } + function expandTopLevelRule(topRule, currIdx, currRuleStack, currOccurrenceStack) { + const newRuleStack = clone_default2(currRuleStack); + newRuleStack.push(topRule.name); + const newCurrOccurrenceStack = clone_default2(currOccurrenceStack); + newCurrOccurrenceStack.push(1); + return { + idx: currIdx, + def: topRule.definition, + ruleStack: newRuleStack, + occurrenceStack: newCurrOccurrenceStack + }; + } + var AbstractNextPossibleTokensWalker, NextAfterTokenWalker, AbstractNextTerminalAfterProductionWalker, NextTerminalAfterManyWalker, NextTerminalAfterManySepWalker, NextTerminalAfterAtLeastOneWalker, NextTerminalAfterAtLeastOneSepWalker; + var init_interpreter = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/interpreter.js"() { + "use strict"; + init_lodash(); + init_first2(); + init_rest(); + init_api3(); + AbstractNextPossibleTokensWalker = class extends RestWalker { + static { + __name(this, "AbstractNextPossibleTokensWalker"); + } + constructor(topProd, path4) { + super(); + this.topProd = topProd; + this.path = path4; + this.possibleTokTypes = []; + this.nextProductionName = ""; + this.nextProductionOccurrence = 0; + this.found = false; + this.isAtEndOfPath = false; + } + startWalking() { + this.found = false; + if (this.path.ruleStack[0] !== this.topProd.name) { + throw Error("The path does not start with the walker's top Rule!"); + } + this.ruleStack = clone_default2(this.path.ruleStack).reverse(); + this.occurrenceStack = clone_default2(this.path.occurrenceStack).reverse(); + this.ruleStack.pop(); + this.occurrenceStack.pop(); + this.updateExpectedNext(); + this.walk(this.topProd); + return this.possibleTokTypes; + } + walk(prod, prevRest = []) { + if (!this.found) { + super.walk(prod, prevRest); + } + } + walkProdRef(refProd, currRest, prevRest) { + if (refProd.referencedRule.name === this.nextProductionName && refProd.idx === this.nextProductionOccurrence) { + const fullRest = currRest.concat(prevRest); + this.updateExpectedNext(); + this.walk(refProd.referencedRule, fullRest); + } + } + updateExpectedNext() { + if (isEmpty_default(this.ruleStack)) { + this.nextProductionName = ""; + this.nextProductionOccurrence = 0; + this.isAtEndOfPath = true; + } else { + this.nextProductionName = this.ruleStack.pop(); + this.nextProductionOccurrence = this.occurrenceStack.pop(); + } + } + }; + NextAfterTokenWalker = class extends AbstractNextPossibleTokensWalker { + static { + __name(this, "NextAfterTokenWalker"); + } + constructor(topProd, path4) { + super(topProd, path4); + this.path = path4; + this.nextTerminalName = ""; + this.nextTerminalOccurrence = 0; + this.nextTerminalName = this.path.lastTok.name; + this.nextTerminalOccurrence = this.path.lastTokOccurrence; + } + walkTerminal(terminal, currRest, prevRest) { + if (this.isAtEndOfPath && terminal.terminalType.name === this.nextTerminalName && terminal.idx === this.nextTerminalOccurrence && !this.found) { + const fullRest = currRest.concat(prevRest); + const restProd = new Alternative({ definition: fullRest }); + this.possibleTokTypes = first2(restProd); + this.found = true; + } + } + }; + AbstractNextTerminalAfterProductionWalker = class extends RestWalker { + static { + __name(this, "AbstractNextTerminalAfterProductionWalker"); + } + constructor(topRule, occurrence) { + super(); + this.topRule = topRule; + this.occurrence = occurrence; + this.result = { + token: void 0, + occurrence: void 0, + isEndOfRule: void 0 + }; + } + startWalking() { + this.walk(this.topRule); + return this.result; + } + }; + NextTerminalAfterManyWalker = class extends AbstractNextTerminalAfterProductionWalker { + static { + __name(this, "NextTerminalAfterManyWalker"); + } + walkMany(manyProd, currRest, prevRest) { + if (manyProd.idx === this.occurrence) { + const firstAfterMany = head_default(currRest.concat(prevRest)); + this.result.isEndOfRule = firstAfterMany === void 0; + if (firstAfterMany instanceof Terminal) { + this.result.token = firstAfterMany.terminalType; + this.result.occurrence = firstAfterMany.idx; } - _p[a2] = _p[b2]; - _p[b2] = _pa; - }, "swap"); - swap("zoom", "startZoom"); - swap("pan", "startPan"); - swap("position", "startPosition"); - if (_p.style) { - for (var i2 = 0; i2 < _p.style.length; i2++) { - var prop = _p.style[i2]; - var name = prop.name; - var startStyleProp = _p.startStyle[name]; - _p.startStyle[name] = prop; - _p.style[i2] = startStyleProp; + } else { + super.walkMany(manyProd, currRest, prevRest); + } + } + }; + NextTerminalAfterManySepWalker = class extends AbstractNextTerminalAfterProductionWalker { + static { + __name(this, "NextTerminalAfterManySepWalker"); + } + walkManySep(manySepProd, currRest, prevRest) { + if (manySepProd.idx === this.occurrence) { + const firstAfterManySep = head_default(currRest.concat(prevRest)); + this.result.isEndOfRule = firstAfterManySep === void 0; + if (firstAfterManySep instanceof Terminal) { + this.result.token = firstAfterManySep.terminalType; + this.result.occurrence = firstAfterManySep.idx; } + } else { + super.walkManySep(manySepProd, currRest, prevRest); } - if (wasPlaying) { - this.play(); + } + }; + NextTerminalAfterAtLeastOneWalker = class extends AbstractNextTerminalAfterProductionWalker { + static { + __name(this, "NextTerminalAfterAtLeastOneWalker"); + } + walkAtLeastOne(atLeastOneProd, currRest, prevRest) { + if (atLeastOneProd.idx === this.occurrence) { + const firstAfterAtLeastOne = head_default(currRest.concat(prevRest)); + this.result.isEndOfRule = firstAfterAtLeastOne === void 0; + if (firstAfterAtLeastOne instanceof Terminal) { + this.result.token = firstAfterAtLeastOne.terminalType; + this.result.occurrence = firstAfterAtLeastOne.idx; + } + } else { + super.walkAtLeastOne(atLeastOneProd, currRest, prevRest); } - return this; - }, "reverse"), - promise: /* @__PURE__ */ __name(function promise3(type3) { - var _p = this._private; - var arr; - switch (type3) { - case "frame": - arr = _p.frames; - break; - default: - case "complete": - case "completed": - arr = _p.completes; + } + }; + NextTerminalAfterAtLeastOneSepWalker = class extends AbstractNextTerminalAfterProductionWalker { + static { + __name(this, "NextTerminalAfterAtLeastOneSepWalker"); + } + walkAtLeastOneSep(atleastOneSepProd, currRest, prevRest) { + if (atleastOneSepProd.idx === this.occurrence) { + const firstAfterfirstAfterAtLeastOneSep = head_default(currRest.concat(prevRest)); + this.result.isEndOfRule = firstAfterfirstAfterAtLeastOneSep === void 0; + if (firstAfterfirstAfterAtLeastOneSep instanceof Terminal) { + this.result.token = firstAfterfirstAfterAtLeastOneSep.terminalType; + this.result.occurrence = firstAfterfirstAfterAtLeastOneSep.idx; + } + } else { + super.walkAtLeastOneSep(atleastOneSepProd, currRest, prevRest); } - return new Promise$1(function(resolve3, reject3) { - arr.push(function() { - resolve3(); - }); - }); - }, "promise") + } + }; + __name(possiblePathsFrom, "possiblePathsFrom"); + __name(nextPossibleTokensAfter, "nextPossibleTokensAfter"); + __name(expandTopLevelRule, "expandTopLevelRule"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/lookahead.js + function getProdType(prod) { + if (prod instanceof Option2 || prod === "Option") { + return PROD_TYPE.OPTION; + } else if (prod instanceof Repetition || prod === "Repetition") { + return PROD_TYPE.REPETITION; + } else if (prod instanceof RepetitionMandatory || prod === "RepetitionMandatory") { + return PROD_TYPE.REPETITION_MANDATORY; + } else if (prod instanceof RepetitionMandatoryWithSeparator || prod === "RepetitionMandatoryWithSeparator") { + return PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR; + } else if (prod instanceof RepetitionWithSeparator || prod === "RepetitionWithSeparator") { + return PROD_TYPE.REPETITION_WITH_SEPARATOR; + } else if (prod instanceof Alternation || prod === "Alternation") { + return PROD_TYPE.ALTERNATION; + } else { + throw Error("non exhaustive match"); + } + } + function getLookaheadPaths(options2) { + const { occurrence, rule, prodType, maxLookahead } = options2; + const type3 = getProdType(prodType); + if (type3 === PROD_TYPE.ALTERNATION) { + return getLookaheadPathsForOr(occurrence, rule, maxLookahead); + } else { + return getLookaheadPathsForOptionalProd(occurrence, rule, type3, maxLookahead); + } + } + function buildLookaheadFuncForOr(occurrence, ruleGrammar, maxLookahead, hasPredicates, dynamicTokensEnabled, laFuncBuilder) { + const lookAheadPaths = getLookaheadPathsForOr(occurrence, ruleGrammar, maxLookahead); + const tokenMatcher2 = areTokenCategoriesNotUsed(lookAheadPaths) ? tokenStructuredMatcherNoCategories : tokenStructuredMatcher; + return laFuncBuilder(lookAheadPaths, hasPredicates, tokenMatcher2, dynamicTokensEnabled); + } + function buildLookaheadFuncForOptionalProd(occurrence, ruleGrammar, k2, dynamicTokensEnabled, prodType, lookaheadBuilder) { + const lookAheadPaths = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k2); + const tokenMatcher2 = areTokenCategoriesNotUsed(lookAheadPaths) ? tokenStructuredMatcherNoCategories : tokenStructuredMatcher; + return lookaheadBuilder(lookAheadPaths[0], tokenMatcher2, dynamicTokensEnabled); + } + function buildAlternativesLookAheadFunc(alts, hasPredicates, tokenMatcher2, dynamicTokensEnabled) { + const numOfAlts = alts.length; + const areAllOneTokenLookahead = every_default(alts, (currAlt) => { + return every_default(currAlt, (currPath) => { + return currPath.length === 1; }); - anifn.complete = anifn.completed; - anifn.run = anifn.play; - anifn.running = anifn.playing; - define$3 = { - animated: /* @__PURE__ */ __name(function animated() { - return /* @__PURE__ */ __name(function animatedImpl() { - var self2 = this; - var selfIsArrayLike = self2.length !== void 0; - var all = selfIsArrayLike ? self2 : [self2]; - var cy = this._private.cy || this; - if (!cy.styleEnabled()) { - return false; - } - var ele = all[0]; - if (ele) { - return ele._private.animation.current.length > 0; + }); + if (hasPredicates) { + return function(orAlts) { + const predicates = map_default(orAlts, (currAlt) => currAlt.GATE); + for (let t4 = 0; t4 < numOfAlts; t4++) { + const currAlt = alts[t4]; + const currNumOfPaths = currAlt.length; + const currPredicate = predicates[t4]; + if (currPredicate !== void 0 && currPredicate.call(this) === false) { + continue; + } + nextPath: for (let j3 = 0; j3 < currNumOfPaths; j3++) { + const currPath = currAlt[j3]; + const currPathLength = currPath.length; + for (let i2 = 0; i2 < currPathLength; i2++) { + const nextToken = this.LA(i2 + 1); + if (tokenMatcher2(nextToken, currPath[i2]) === false) { + continue nextPath; + } } - }, "animatedImpl"); - }, "animated"), - // animated - clearQueue: /* @__PURE__ */ __name(function clearQueue() { - return /* @__PURE__ */ __name(function clearQueueImpl() { - var self2 = this; - var selfIsArrayLike = self2.length !== void 0; - var all = selfIsArrayLike ? self2 : [self2]; - var cy = this._private.cy || this; - if (!cy.styleEnabled()) { - return this; + return t4; + } + } + return void 0; + }; + } else if (areAllOneTokenLookahead && !dynamicTokensEnabled) { + const singleTokenAlts = map_default(alts, (currAlt) => { + return flatten_default(currAlt); + }); + const choiceToAlt = reduce_default(singleTokenAlts, (result, currAlt, idx) => { + forEach_default(currAlt, (currTokType) => { + if (!has_default(result, currTokType.tokenTypeIdx)) { + result[currTokType.tokenTypeIdx] = idx; + } + forEach_default(currTokType.categoryMatches, (currExtendingType) => { + if (!has_default(result, currExtendingType)) { + result[currExtendingType] = idx; } - for (var i2 = 0; i2 < all.length; i2++) { - var ele = all[i2]; - ele._private.animation.queue = []; + }); + }); + return result; + }, {}); + return function() { + const nextToken = this.LA(1); + return choiceToAlt[nextToken.tokenTypeIdx]; + }; + } else { + return function() { + for (let t4 = 0; t4 < numOfAlts; t4++) { + const currAlt = alts[t4]; + const currNumOfPaths = currAlt.length; + nextPath: for (let j3 = 0; j3 < currNumOfPaths; j3++) { + const currPath = currAlt[j3]; + const currPathLength = currPath.length; + for (let i2 = 0; i2 < currPathLength; i2++) { + const nextToken = this.LA(i2 + 1); + if (tokenMatcher2(nextToken, currPath[i2]) === false) { + continue nextPath; + } } - return this; - }, "clearQueueImpl"); - }, "clearQueue"), - // clearQueue - delay: /* @__PURE__ */ __name(function delay() { - return /* @__PURE__ */ __name(function delayImpl(time4, complete) { - var cy = this._private.cy || this; - if (!cy.styleEnabled()) { - return this; - } - return this.animate({ - delay: time4, - duration: time4, - complete - }); - }, "delayImpl"); - }, "delay"), - // delay - delayAnimation: /* @__PURE__ */ __name(function delayAnimation() { - return /* @__PURE__ */ __name(function delayAnimationImpl(time4, complete) { - var cy = this._private.cy || this; - if (!cy.styleEnabled()) { - return this; - } - return this.animation({ - delay: time4, - duration: time4, - complete - }); - }, "delayAnimationImpl"); - }, "delayAnimation"), - // delay - animation: /* @__PURE__ */ __name(function animation() { - return /* @__PURE__ */ __name(function animationImpl(properties, params) { - var self2 = this; - var selfIsArrayLike = self2.length !== void 0; - var all = selfIsArrayLike ? self2 : [self2]; - var cy = this._private.cy || this; - var isCore = !selfIsArrayLike; - var isEles = !isCore; - if (!cy.styleEnabled()) { - return this; - } - var style3 = cy.style(); - properties = extend4({}, properties, params); - var propertiesEmpty = Object.keys(properties).length === 0; - if (propertiesEmpty) { - return new Animation(all[0], properties); - } - if (properties.duration === void 0) { - properties.duration = 400; - } - switch (properties.duration) { - case "slow": - properties.duration = 600; - break; - case "fast": - properties.duration = 200; - break; - } - if (isEles) { - properties.style = style3.getPropsList(properties.style || properties.css); - properties.css = void 0; - } - if (isEles && properties.renderedPosition != null) { - var rpos = properties.renderedPosition; - var pan2 = cy.pan(); - var zoom2 = cy.zoom(); - properties.position = renderedToModelPosition(rpos, zoom2, pan2); - } - if (isCore && properties.panBy != null) { - var panBy2 = properties.panBy; - var cyPan = cy.pan(); - properties.pan = { - x: cyPan.x + panBy2.x, - y: cyPan.y + panBy2.y - }; - } - var center4 = properties.center || properties.centre; - if (isCore && center4 != null) { - var centerPan = cy.getCenterPan(center4.eles, properties.zoom); - if (centerPan != null) { - properties.pan = centerPan; - } - } - if (isCore && properties.fit != null) { - var fit2 = properties.fit; - var fitVp = cy.getFitViewport(fit2.eles || fit2.boundingBox, fit2.padding); - if (fitVp != null) { - properties.pan = fitVp.pan; - properties.zoom = fitVp.zoom; - } - } - if (isCore && plainObject(properties.zoom)) { - var vp = cy.getZoomedViewport(properties.zoom); - if (vp != null) { - if (vp.zoomed) { - properties.zoom = vp.zoom; - } - if (vp.panned) { - properties.pan = vp.pan; - } - } else { - properties.zoom = null; - } - } - return new Animation(all[0], properties); - }, "animationImpl"); - }, "animation"), - // animate - animate: /* @__PURE__ */ __name(function animate() { - return /* @__PURE__ */ __name(function animateImpl(properties, params) { - var self2 = this; - var selfIsArrayLike = self2.length !== void 0; - var all = selfIsArrayLike ? self2 : [self2]; - var cy = this._private.cy || this; - if (!cy.styleEnabled()) { - return this; - } - if (params) { - properties = extend4({}, properties, params); - } - for (var i2 = 0; i2 < all.length; i2++) { - var ele = all[i2]; - var queue = ele.animated() && (properties.queue === void 0 || properties.queue); - var ani = ele.animation(properties, queue ? { - queue: true - } : void 0); - ani.play(); - } - return this; - }, "animateImpl"); - }, "animate"), - // animate - stop: /* @__PURE__ */ __name(function stop2() { - return /* @__PURE__ */ __name(function stopImpl(clearQueue2, jumpToEnd) { - var self2 = this; - var selfIsArrayLike = self2.length !== void 0; - var all = selfIsArrayLike ? self2 : [self2]; - var cy = this._private.cy || this; - if (!cy.styleEnabled()) { - return this; - } - for (var i2 = 0; i2 < all.length; i2++) { - var ele = all[i2]; - var _p = ele._private; - var anis = _p.animation.current; - for (var j2 = 0; j2 < anis.length; j2++) { - var ani = anis[j2]; - var ani_p = ani._private; - if (jumpToEnd) { - ani_p.duration = 0; - } - } - if (clearQueue2) { - _p.animation.queue = []; - } - if (!jumpToEnd) { - _p.animation.current = []; - } + return t4; + } + } + return void 0; + }; + } + } + function buildSingleAlternativeLookaheadFunction(alt, tokenMatcher2, dynamicTokensEnabled) { + const areAllOneTokenLookahead = every_default(alt, (currPath) => { + return currPath.length === 1; + }); + const numOfPaths = alt.length; + if (areAllOneTokenLookahead && !dynamicTokensEnabled) { + const singleTokensTypes = flatten_default(alt); + if (singleTokensTypes.length === 1 && isEmpty_default(singleTokensTypes[0].categoryMatches)) { + const expectedTokenType = singleTokensTypes[0]; + const expectedTokenUniqueKey = expectedTokenType.tokenTypeIdx; + return function() { + return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey; + }; + } else { + const choiceToAlt = reduce_default(singleTokensTypes, (result, currTokType, idx) => { + result[currTokType.tokenTypeIdx] = true; + forEach_default(currTokType.categoryMatches, (currExtendingType) => { + result[currExtendingType] = true; + }); + return result; + }, []); + return function() { + const nextToken = this.LA(1); + return choiceToAlt[nextToken.tokenTypeIdx] === true; + }; + } + } else { + return function() { + nextPath: for (let j3 = 0; j3 < numOfPaths; j3++) { + const currPath = alt[j3]; + const currPathLength = currPath.length; + for (let i2 = 0; i2 < currPathLength; i2++) { + const nextToken = this.LA(i2 + 1); + if (tokenMatcher2(nextToken, currPath[i2]) === false) { + continue nextPath; } - cy.notify("draw"); - return this; - }, "stopImpl"); - }, "stop") - // stop + } + return true; + } + return false; }; - isArray2 = Array.isArray; - isArray_1 = isArray2; - reIsDeepProp2 = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/; - reIsPlainProp2 = /^\w*$/; - __name(isKey2, "isKey"); - _isKey = isKey2; - asyncTag2 = "[object AsyncFunction]"; - funcTag4 = "[object Function]"; - genTag3 = "[object GeneratorFunction]"; - proxyTag2 = "[object Proxy]"; - __name(isFunction2, "isFunction"); - isFunction_1 = isFunction2; - coreJsData2 = _root["__core-js_shared__"]; - _coreJsData = coreJsData2; - maskSrcKey2 = function() { - var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || ""); - return uid ? "Symbol(src)_1." + uid : ""; - }(); - __name(isMasked2, "isMasked"); - _isMasked = isMasked2; - funcProto$1 = Function.prototype; - funcToString$1 = funcProto$1.toString; - __name(toSource2, "toSource"); - _toSource = toSource2; - reRegExpChar2 = /[\\^$.*+?()[\]{}|]/g; - reIsHostCtor2 = /^\[object .+?Constructor\]$/; - funcProto4 = Function.prototype; - objectProto$3 = Object.prototype; - funcToString4 = funcProto4.toString; - hasOwnProperty$3 = objectProto$3.hasOwnProperty; - reIsNative2 = RegExp( - "^" + funcToString4.call(hasOwnProperty$3).replace(reRegExpChar2, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" - ); - __name(baseIsNative2, "baseIsNative"); - _baseIsNative = baseIsNative2; - __name(getValue$1, "getValue$1"); - _getValue = getValue$1; - __name(getNative2, "getNative"); - _getNative = getNative2; - nativeCreate2 = _getNative(Object, "create"); - _nativeCreate = nativeCreate2; - __name(hashClear2, "hashClear"); - _hashClear = hashClear2; - __name(hashDelete2, "hashDelete"); - _hashDelete = hashDelete2; - HASH_UNDEFINED$1 = "__lodash_hash_undefined__"; - objectProto$2 = Object.prototype; - hasOwnProperty$2 = objectProto$2.hasOwnProperty; - __name(hashGet2, "hashGet"); - _hashGet = hashGet2; - objectProto$1 = Object.prototype; - hasOwnProperty$1 = objectProto$1.hasOwnProperty; - __name(hashHas2, "hashHas"); - _hashHas = hashHas2; - HASH_UNDEFINED4 = "__lodash_hash_undefined__"; - __name(hashSet2, "hashSet"); - _hashSet = hashSet2; - __name(Hash2, "Hash"); - Hash2.prototype.clear = _hashClear; - Hash2.prototype["delete"] = _hashDelete; - Hash2.prototype.get = _hashGet; - Hash2.prototype.has = _hashHas; - Hash2.prototype.set = _hashSet; - _Hash = Hash2; - __name(listCacheClear2, "listCacheClear"); - _listCacheClear = listCacheClear2; - __name(eq2, "eq"); - eq_1 = eq2; - __name(assocIndexOf2, "assocIndexOf"); - _assocIndexOf = assocIndexOf2; - arrayProto2 = Array.prototype; - splice2 = arrayProto2.splice; - __name(listCacheDelete2, "listCacheDelete"); - _listCacheDelete = listCacheDelete2; - __name(listCacheGet2, "listCacheGet"); - _listCacheGet = listCacheGet2; - __name(listCacheHas2, "listCacheHas"); - _listCacheHas = listCacheHas2; - __name(listCacheSet2, "listCacheSet"); - _listCacheSet = listCacheSet2; - __name(ListCache2, "ListCache"); - ListCache2.prototype.clear = _listCacheClear; - ListCache2.prototype["delete"] = _listCacheDelete; - ListCache2.prototype.get = _listCacheGet; - ListCache2.prototype.has = _listCacheHas; - ListCache2.prototype.set = _listCacheSet; - _ListCache = ListCache2; - Map$1 = _getNative(_root, "Map"); - _Map = Map$1; - __name(mapCacheClear2, "mapCacheClear"); - _mapCacheClear = mapCacheClear2; - __name(isKeyable2, "isKeyable"); - _isKeyable = isKeyable2; - __name(getMapData2, "getMapData"); - _getMapData = getMapData2; - __name(mapCacheDelete2, "mapCacheDelete"); - _mapCacheDelete = mapCacheDelete2; - __name(mapCacheGet2, "mapCacheGet"); - _mapCacheGet = mapCacheGet2; - __name(mapCacheHas2, "mapCacheHas"); - _mapCacheHas = mapCacheHas2; - __name(mapCacheSet2, "mapCacheSet"); - _mapCacheSet = mapCacheSet2; - __name(MapCache2, "MapCache"); - MapCache2.prototype.clear = _mapCacheClear; - MapCache2.prototype["delete"] = _mapCacheDelete; - MapCache2.prototype.get = _mapCacheGet; - MapCache2.prototype.has = _mapCacheHas; - MapCache2.prototype.set = _mapCacheSet; - _MapCache = MapCache2; - FUNC_ERROR_TEXT3 = "Expected a function"; - __name(memoize3, "memoize"); - memoize3.Cache = _MapCache; - memoize_1 = memoize3; - MAX_MEMOIZE_SIZE2 = 500; - __name(memoizeCapped2, "memoizeCapped"); - _memoizeCapped = memoizeCapped2; - rePropName2 = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - reEscapeChar2 = /\\(\\)?/g; - stringToPath2 = _memoizeCapped(function(string3) { - var result = []; - if (string3.charCodeAt(0) === 46) { - result.push(""); + } + } + function initializeArrayOfArrays(size4) { + const result = new Array(size4); + for (let i2 = 0; i2 < size4; i2++) { + result[i2] = []; + } + return result; + } + function pathToHashKeys(path4) { + let keys2 = [""]; + for (let i2 = 0; i2 < path4.length; i2++) { + const tokType = path4[i2]; + const longerKeys = []; + for (let j3 = 0; j3 < keys2.length; j3++) { + const currShorterKey = keys2[j3]; + longerKeys.push(currShorterKey + "_" + tokType.tokenTypeIdx); + for (let t4 = 0; t4 < tokType.categoryMatches.length; t4++) { + const categoriesKeySuffix = "_" + tokType.categoryMatches[t4]; + longerKeys.push(currShorterKey + categoriesKeySuffix); + } + } + keys2 = longerKeys; + } + return keys2; + } + function isUniquePrefixHash(altKnownPathsKeys, searchPathKeys, idx) { + for (let currAltIdx = 0; currAltIdx < altKnownPathsKeys.length; currAltIdx++) { + if (currAltIdx === idx) { + continue; + } + const otherAltKnownPathsKeys = altKnownPathsKeys[currAltIdx]; + for (let searchIdx = 0; searchIdx < searchPathKeys.length; searchIdx++) { + const searchKey = searchPathKeys[searchIdx]; + if (otherAltKnownPathsKeys[searchKey] === true) { + return false; } - string3.replace(rePropName2, function(match2, number7, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar2, "$1") : number7 || match2); + } + } + return true; + } + function lookAheadSequenceFromAlternatives(altsDefs, k2) { + const partialAlts = map_default(altsDefs, (currAlt) => possiblePathsFrom([currAlt], 1)); + const finalResult = initializeArrayOfArrays(partialAlts.length); + const altsHashes = map_default(partialAlts, (currAltPaths) => { + const dict = {}; + forEach_default(currAltPaths, (item) => { + const keys2 = pathToHashKeys(item.partialPath); + forEach_default(keys2, (currKey) => { + dict[currKey] = true; }); - return result; }); - _stringToPath = stringToPath2; - __name(arrayMap2, "arrayMap"); - _arrayMap = arrayMap2; - INFINITY$1 = 1 / 0; - symbolProto4 = _Symbol ? _Symbol.prototype : void 0; - symbolToString2 = symbolProto4 ? symbolProto4.toString : void 0; - __name(baseToString2, "baseToString"); - _baseToString = baseToString2; - __name(toString$1, "toString$1"); - toString_1 = toString$1; - __name(castPath2, "castPath"); - _castPath = castPath2; - INFINITY5 = 1 / 0; - __name(toKey2, "toKey"); - _toKey = toKey2; - __name(baseGet2, "baseGet"); - _baseGet = baseGet2; - __name(get5, "get"); - get_1 = get5; - defineProperty2 = function() { - try { - var func = _getNative(Object, "defineProperty"); - func({}, "", {}); - return func; - } catch (e3) { - } - }(); - _defineProperty = defineProperty2; - __name(baseAssignValue2, "baseAssignValue"); - _baseAssignValue = baseAssignValue2; - objectProto22 = Object.prototype; - hasOwnProperty19 = objectProto22.hasOwnProperty; - __name(assignValue2, "assignValue"); - _assignValue = assignValue2; - MAX_SAFE_INTEGER3 = 9007199254740991; - reIsUint2 = /^(?:0|[1-9]\d*)$/; - __name(isIndex2, "isIndex"); - _isIndex = isIndex2; - __name(baseSet2, "baseSet"); - _baseSet = baseSet2; - __name(set5, "set"); - set_1 = set5; - __name(copyArray3, "copyArray"); - _copyArray = copyArray3; - __name(toPath, "toPath"); - toPath_1 = toPath; - define$2 = { - // access data field - data: /* @__PURE__ */ __name(function data(params) { - var defaults4 = { - field: "data", - bindingEvent: "data", - allowBinding: false, - allowSetting: false, - allowGetting: false, - settingEvent: "data", - settingTriggersEvent: false, - triggerFnName: "trigger", - immutableKeys: {}, - // key => true if immutable - updateStyle: false, - beforeGet: /* @__PURE__ */ __name(function beforeGet2(self2) { - }, "beforeGet"), - beforeSet: /* @__PURE__ */ __name(function beforeSet3(self2, obj) { - }, "beforeSet"), - onSet: /* @__PURE__ */ __name(function onSet3(self2) { - }, "onSet"), - canSet: /* @__PURE__ */ __name(function canSet2(self2) { - return true; - }, "canSet") - }; - params = extend4({}, defaults4, params); - return /* @__PURE__ */ __name(function dataImpl(name, value2) { - var p3 = params; - var self2 = this; - var selfIsArrayLike = self2.length !== void 0; - var all = selfIsArrayLike ? self2 : [self2]; - var single = selfIsArrayLike ? self2[0] : self2; - if (string(name)) { - var isPathLike = name.indexOf(".") !== -1; - var path4 = isPathLike && toPath_1(name); - if (p3.allowGetting && value2 === void 0) { - var ret; - if (single) { - p3.beforeGet(single); - if (path4 && single._private[p3.field][name] === void 0) { - ret = get_1(single._private[p3.field], path4); - } else { - ret = single._private[p3.field][name]; - } - } - return ret; - } else if (p3.allowSetting && value2 !== void 0) { - var valid2 = !p3.immutableKeys[name]; - if (valid2) { - var change2 = _defineProperty$1({}, name, value2); - p3.beforeSet(self2, change2); - for (var i2 = 0, l2 = all.length; i2 < l2; i2++) { - var ele = all[i2]; - if (p3.canSet(ele)) { - if (path4 && single._private[p3.field][name] === void 0) { - set_1(ele._private[p3.field], path4, value2); - } else { - ele._private[p3.field][name] = value2; - } - } - } - if (p3.updateStyle) { - self2.updateStyle(); - } - p3.onSet(self2); - if (p3.settingTriggersEvent) { - self2[p3.triggerFnName](p3.settingEvent); - } - } - } - } else if (p3.allowSetting && plainObject(name)) { - var obj = name; - var k2, v3; - var keys3 = Object.keys(obj); - p3.beforeSet(self2, obj); - for (var _i = 0; _i < keys3.length; _i++) { - k2 = keys3[_i]; - v3 = obj[k2]; - var _valid = !p3.immutableKeys[k2]; - if (_valid) { - for (var j2 = 0; j2 < all.length; j2++) { - var _ele = all[j2]; - if (p3.canSet(_ele)) { - _ele._private[p3.field][k2] = v3; - } - } - } - } - if (p3.updateStyle) { - self2.updateStyle(); - } - p3.onSet(self2); - if (p3.settingTriggersEvent) { - self2[p3.triggerFnName](p3.settingEvent); - } - } else if (p3.allowBinding && fn$6(name)) { - var fn3 = name; - self2.on(p3.bindingEvent, fn3); - } else if (p3.allowGetting && name === void 0) { - var _ret; - if (single) { - p3.beforeGet(single); - _ret = single._private[p3.field]; - } - return _ret; - } - return self2; - }, "dataImpl"); - }, "data"), - // data - // remove data field - removeData: /* @__PURE__ */ __name(function removeData(params) { - var defaults4 = { - field: "data", - event: "data", - triggerFnName: "trigger", - triggerEvent: false, - immutableKeys: {} - // key => true if immutable - }; - params = extend4({}, defaults4, params); - return /* @__PURE__ */ __name(function removeDataImpl(names) { - var p3 = params; - var self2 = this; - var selfIsArrayLike = self2.length !== void 0; - var all = selfIsArrayLike ? self2 : [self2]; - if (string(names)) { - var keys3 = names.split(/\s+/); - var l2 = keys3.length; - for (var i2 = 0; i2 < l2; i2++) { - var key = keys3[i2]; - if (emptyString(key)) { - continue; - } - var valid2 = !p3.immutableKeys[key]; - if (valid2) { - for (var i_a = 0, l_a = all.length; i_a < l_a; i_a++) { - all[i_a]._private[p3.field][key] = void 0; - } - } - } - if (p3.triggerEvent) { - self2[p3.triggerFnName](p3.event); - } - } else if (names === void 0) { - for (var _i_a = 0, _l_a = all.length; _i_a < _l_a; _i_a++) { - var _privateFields = all[_i_a]._private[p3.field]; - var _keys = Object.keys(_privateFields); - for (var _i2 = 0; _i2 < _keys.length; _i2++) { - var _key = _keys[_i2]; - var validKeyToDelete = !p3.immutableKeys[_key]; - if (validKeyToDelete) { - _privateFields[_key] = void 0; - } - } - } - if (p3.triggerEvent) { - self2[p3.triggerFnName](p3.event); + return dict; + }); + let newData = partialAlts; + for (let pathLength = 1; pathLength <= k2; pathLength++) { + const currDataset = newData; + newData = initializeArrayOfArrays(currDataset.length); + for (let altIdx = 0; altIdx < currDataset.length; altIdx++) { + const currAltPathsAndSuffixes = currDataset[altIdx]; + for (let currPathIdx = 0; currPathIdx < currAltPathsAndSuffixes.length; currPathIdx++) { + const currPathPrefix = currAltPathsAndSuffixes[currPathIdx].partialPath; + const suffixDef = currAltPathsAndSuffixes[currPathIdx].suffixDef; + const prefixKeys = pathToHashKeys(currPathPrefix); + const isUnique = isUniquePrefixHash(altsHashes, prefixKeys, altIdx); + if (isUnique || isEmpty_default(suffixDef) || currPathPrefix.length === k2) { + const currAltResult = finalResult[altIdx]; + if (containsPath(currAltResult, currPathPrefix) === false) { + currAltResult.push(currPathPrefix); + for (let j3 = 0; j3 < prefixKeys.length; j3++) { + const currKey = prefixKeys[j3]; + altsHashes[altIdx][currKey] = true; } } - return self2; - }, "removeDataImpl"); - }, "removeData") - // removeData - }; - define$1 = { - eventAliasesOn: /* @__PURE__ */ __name(function eventAliasesOn(proto) { - var p3 = proto; - p3.addListener = p3.listen = p3.bind = p3.on; - p3.unlisten = p3.unbind = p3.off = p3.removeListener; - p3.trigger = p3.emit; - p3.pon = p3.promiseOn = function(events, selector) { - var self2 = this; - var args = Array.prototype.slice.call(arguments, 0); - return new Promise$1(function(resolve3, reject3) { - var callback = /* @__PURE__ */ __name(function callback2(e3) { - self2.off.apply(self2, offArgs); - resolve3(e3); - }, "callback"); - var onArgs = args.concat([callback]); - var offArgs = onArgs.concat([]); - self2.on.apply(self2, onArgs); - }); - }; - }, "eventAliasesOn") - }; - define2 = {}; - [define$3, define$2, define$1].forEach(function(m2) { - extend4(define2, m2); - }); - elesfn$i = { - animate: define2.animate(), - animation: define2.animation(), - animated: define2.animated(), - clearQueue: define2.clearQueue(), - delay: define2.delay(), - delayAnimation: define2.delayAnimation(), - stop: define2.stop() - }; - elesfn$h = { - classes: /* @__PURE__ */ __name(function classes(_classes) { - var self2 = this; - if (_classes === void 0) { - var ret = []; - self2[0]._private.classes.forEach(function(cls2) { - return ret.push(cls2); + } else { + const newPartialPathsAndSuffixes = possiblePathsFrom(suffixDef, pathLength + 1, currPathPrefix); + newData[altIdx] = newData[altIdx].concat(newPartialPathsAndSuffixes); + forEach_default(newPartialPathsAndSuffixes, (item) => { + const prefixKeys2 = pathToHashKeys(item.partialPath); + forEach_default(prefixKeys2, (key) => { + altsHashes[altIdx][key] = true; + }); }); - return ret; - } else if (!array2(_classes)) { - _classes = (_classes || "").match(/\S+/g) || []; } - var changed = []; - var classesSet = new Set$1(_classes); - for (var j2 = 0; j2 < self2.length; j2++) { - var ele = self2[j2]; - var _p = ele._private; - var eleClasses = _p.classes; - var changedEle = false; - for (var i2 = 0; i2 < _classes.length; i2++) { - var cls = _classes[i2]; - var eleHasClass = eleClasses.has(cls); - if (!eleHasClass) { - changedEle = true; - break; - } - } - if (!changedEle) { - changedEle = eleClasses.size !== _classes.length; - } - if (changedEle) { - _p.classes = classesSet; - changed.push(ele); - } + } + } + } + return finalResult; + } + function getLookaheadPathsForOr(occurrence, ruleGrammar, k2, orProd) { + const visitor2 = new InsideDefinitionFinderVisitor(occurrence, PROD_TYPE.ALTERNATION, orProd); + ruleGrammar.accept(visitor2); + return lookAheadSequenceFromAlternatives(visitor2.result, k2); + } + function getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k2) { + const insideDefVisitor = new InsideDefinitionFinderVisitor(occurrence, prodType); + ruleGrammar.accept(insideDefVisitor); + const insideDef = insideDefVisitor.result; + const afterDefWalker = new RestDefinitionFinderWalker(ruleGrammar, occurrence, prodType); + const afterDef = afterDefWalker.startWalking(); + const insideFlat = new Alternative({ definition: insideDef }); + const afterFlat = new Alternative({ definition: afterDef }); + return lookAheadSequenceFromAlternatives([insideFlat, afterFlat], k2); + } + function containsPath(alternative, searchPath) { + compareOtherPath: for (let i2 = 0; i2 < alternative.length; i2++) { + const otherPath = alternative[i2]; + if (otherPath.length !== searchPath.length) { + continue; + } + for (let j3 = 0; j3 < otherPath.length; j3++) { + const searchTok = searchPath[j3]; + const otherTok = otherPath[j3]; + const matchingTokens = searchTok === otherTok || otherTok.categoryMatchesMap[searchTok.tokenTypeIdx] !== void 0; + if (matchingTokens === false) { + continue compareOtherPath; + } + } + return true; + } + return false; + } + function isStrictPrefixOfPath(prefix, other) { + return prefix.length < other.length && every_default(prefix, (tokType, idx) => { + const otherTokType = other[idx]; + return tokType === otherTokType || otherTokType.categoryMatchesMap[tokType.tokenTypeIdx]; + }); + } + function areTokenCategoriesNotUsed(lookAheadPaths) { + return every_default(lookAheadPaths, (singleAltPaths) => every_default(singleAltPaths, (singlePath) => every_default(singlePath, (token2) => isEmpty_default(token2.categoryMatches)))); + } + var PROD_TYPE, RestDefinitionFinderWalker, InsideDefinitionFinderVisitor; + var init_lookahead = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/lookahead.js"() { + "use strict"; + init_lodash(); + init_interpreter(); + init_rest(); + init_tokens(); + init_api3(); + (function(PROD_TYPE2) { + PROD_TYPE2[PROD_TYPE2["OPTION"] = 0] = "OPTION"; + PROD_TYPE2[PROD_TYPE2["REPETITION"] = 1] = "REPETITION"; + PROD_TYPE2[PROD_TYPE2["REPETITION_MANDATORY"] = 2] = "REPETITION_MANDATORY"; + PROD_TYPE2[PROD_TYPE2["REPETITION_MANDATORY_WITH_SEPARATOR"] = 3] = "REPETITION_MANDATORY_WITH_SEPARATOR"; + PROD_TYPE2[PROD_TYPE2["REPETITION_WITH_SEPARATOR"] = 4] = "REPETITION_WITH_SEPARATOR"; + PROD_TYPE2[PROD_TYPE2["ALTERNATION"] = 5] = "ALTERNATION"; + })(PROD_TYPE || (PROD_TYPE = {})); + __name(getProdType, "getProdType"); + __name(getLookaheadPaths, "getLookaheadPaths"); + __name(buildLookaheadFuncForOr, "buildLookaheadFuncForOr"); + __name(buildLookaheadFuncForOptionalProd, "buildLookaheadFuncForOptionalProd"); + __name(buildAlternativesLookAheadFunc, "buildAlternativesLookAheadFunc"); + __name(buildSingleAlternativeLookaheadFunction, "buildSingleAlternativeLookaheadFunction"); + RestDefinitionFinderWalker = class extends RestWalker { + static { + __name(this, "RestDefinitionFinderWalker"); + } + constructor(topProd, targetOccurrence, targetProdType) { + super(); + this.topProd = topProd; + this.targetOccurrence = targetOccurrence; + this.targetProdType = targetProdType; + } + startWalking() { + this.walk(this.topProd); + return this.restDef; + } + checkIsTarget(node2, expectedProdType, currRest, prevRest) { + if (node2.idx === this.targetOccurrence && this.targetProdType === expectedProdType) { + this.restDef = currRest.concat(prevRest); + return true; } - if (changed.length > 0) { - this.spawn(changed).updateStyle().emit("class"); + return false; + } + walkOption(optionProd, currRest, prevRest) { + if (!this.checkIsTarget(optionProd, PROD_TYPE.OPTION, currRest, prevRest)) { + super.walkOption(optionProd, currRest, prevRest); } - return self2; - }, "classes"), - addClass: /* @__PURE__ */ __name(function addClass2(classes3) { - return this.toggleClass(classes3, true); - }, "addClass"), - hasClass: /* @__PURE__ */ __name(function hasClass(className) { - var ele = this[0]; - return ele != null && ele._private.classes.has(className); - }, "hasClass"), - toggleClass: /* @__PURE__ */ __name(function toggleClass(classes3, toggle) { - if (!array2(classes3)) { - classes3 = classes3.match(/\S+/g) || []; + } + walkAtLeastOne(atLeastOneProd, currRest, prevRest) { + if (!this.checkIsTarget(atLeastOneProd, PROD_TYPE.REPETITION_MANDATORY, currRest, prevRest)) { + super.walkOption(atLeastOneProd, currRest, prevRest); } - var self2 = this; - var toggleUndefd = toggle === void 0; - var changed = []; - for (var i2 = 0, il = self2.length; i2 < il; i2++) { - var ele = self2[i2]; - var eleClasses = ele._private.classes; - var changedEle = false; - for (var j2 = 0; j2 < classes3.length; j2++) { - var cls = classes3[j2]; - var hasClass2 = eleClasses.has(cls); - var changedNow = false; - if (toggle || toggleUndefd && !hasClass2) { - eleClasses.add(cls); - changedNow = true; - } else if (!toggle || toggleUndefd && hasClass2) { - eleClasses["delete"](cls); - changedNow = true; - } - if (!changedEle && changedNow) { - changed.push(ele); - changedEle = true; - } - } + } + walkAtLeastOneSep(atLeastOneSepProd, currRest, prevRest) { + if (!this.checkIsTarget(atLeastOneSepProd, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, currRest, prevRest)) { + super.walkOption(atLeastOneSepProd, currRest, prevRest); } - if (changed.length > 0) { - this.spawn(changed).updateStyle().emit("class"); + } + walkMany(manyProd, currRest, prevRest) { + if (!this.checkIsTarget(manyProd, PROD_TYPE.REPETITION, currRest, prevRest)) { + super.walkOption(manyProd, currRest, prevRest); } - return self2; - }, "toggleClass"), - removeClass: /* @__PURE__ */ __name(function removeClass(classes3) { - return this.toggleClass(classes3, false); - }, "removeClass"), - flashClass: /* @__PURE__ */ __name(function flashClass(classes3, duration) { - var self2 = this; - if (duration == null) { - duration = 250; - } else if (duration === 0) { - return self2; + } + walkManySep(manySepProd, currRest, prevRest) { + if (!this.checkIsTarget(manySepProd, PROD_TYPE.REPETITION_WITH_SEPARATOR, currRest, prevRest)) { + super.walkOption(manySepProd, currRest, prevRest); } - self2.addClass(classes3); - setTimeout(function() { - self2.removeClass(classes3); - }, duration); - return self2; - }, "flashClass") - }; - elesfn$h.className = elesfn$h.classNames = elesfn$h.classes; - tokens = { - metaChar: "[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]", - // chars we need to escape in let names, etc - comparatorOp: "=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=", - // binary comparison op (used in data selectors) - boolOp: "\\?|\\!|\\^", - // boolean (unary) operators (used in data selectors) - string: `"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`, - // string literals (used in data selectors) -- doublequotes | singlequotes - number: number6, - // number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123 - meta: "degree|indegree|outdegree", - // allowed metadata fields (i.e. allowed functions to use from Collection) - separator: "\\s*,\\s*", - // queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass - descendant: "\\s+", - child: "\\s+>\\s+", - subject: "\\$", - group: "node|edge|\\*", - directedEdge: "\\s+->\\s+", - undirectedEdge: "\\s+<->\\s+" + } }; - tokens.variable = "(?:[\\w-.]|(?:\\\\" + tokens.metaChar + "))+"; - tokens.className = "(?:[\\w-]|(?:\\\\" + tokens.metaChar + "))+"; - tokens.value = tokens.string + "|" + tokens.number; - tokens.id = tokens.variable; - (function() { - var ops, op2, i2; - ops = tokens.comparatorOp.split("|"); - for (i2 = 0; i2 < ops.length; i2++) { - op2 = ops[i2]; - tokens.comparatorOp += "|@" + op2; + InsideDefinitionFinderVisitor = class extends GAstVisitor { + static { + __name(this, "InsideDefinitionFinderVisitor"); } - ops = tokens.comparatorOp.split("|"); - for (i2 = 0; i2 < ops.length; i2++) { - op2 = ops[i2]; - if (op2.indexOf("!") >= 0) { - continue; - } - if (op2 === "=") { - continue; + constructor(targetOccurrence, targetProdType, targetRef) { + super(); + this.targetOccurrence = targetOccurrence; + this.targetProdType = targetProdType; + this.targetRef = targetRef; + this.result = []; + } + checkIsTarget(node2, expectedProdName) { + if (node2.idx === this.targetOccurrence && this.targetProdType === expectedProdName && (this.targetRef === void 0 || node2 === this.targetRef)) { + this.result = node2.definition; } - tokens.comparatorOp += "|\\!" + op2; } - })(); - newQuery = /* @__PURE__ */ __name(function newQuery2() { - return { - checks: [] - }; - }, "newQuery"); - Type3 = { - /** E.g. node */ - GROUP: 0, - /** A collection of elements */ - COLLECTION: 1, - /** A filter(ele) function */ - FILTER: 2, - /** E.g. [foo > 1] */ - DATA_COMPARE: 3, - /** E.g. [foo] */ - DATA_EXIST: 4, - /** E.g. [?foo] */ - DATA_BOOL: 5, - /** E.g. [[degree > 2]] */ - META_COMPARE: 6, - /** E.g. :selected */ - STATE: 7, - /** E.g. #foo */ - ID: 8, - /** E.g. .foo */ - CLASS: 9, - /** E.g. #foo <-> #bar */ - UNDIRECTED_EDGE: 10, - /** E.g. #foo -> #bar */ - DIRECTED_EDGE: 11, - /** E.g. $#foo -> #bar */ - NODE_SOURCE: 12, - /** E.g. #foo -> $#bar */ - NODE_TARGET: 13, - /** E.g. $#foo <-> #bar */ - NODE_NEIGHBOR: 14, - /** E.g. #foo > #bar */ - CHILD: 15, - /** E.g. #foo #bar */ - DESCENDANT: 16, - /** E.g. $#foo > #bar */ - PARENT: 17, - /** E.g. $#foo #bar */ - ANCESTOR: 18, - /** E.g. #foo > $bar > #baz */ - COMPOUND_SPLIT: 19, - /** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */ - TRUE: 20 + visitOption(node2) { + this.checkIsTarget(node2, PROD_TYPE.OPTION); + } + visitRepetition(node2) { + this.checkIsTarget(node2, PROD_TYPE.REPETITION); + } + visitRepetitionMandatory(node2) { + this.checkIsTarget(node2, PROD_TYPE.REPETITION_MANDATORY); + } + visitRepetitionMandatoryWithSeparator(node2) { + this.checkIsTarget(node2, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR); + } + visitRepetitionWithSeparator(node2) { + this.checkIsTarget(node2, PROD_TYPE.REPETITION_WITH_SEPARATOR); + } + visitAlternation(node2) { + this.checkIsTarget(node2, PROD_TYPE.ALTERNATION); + } }; - stateSelectors = [{ - selector: ":selected", - matches: /* @__PURE__ */ __name(function matches(ele) { - return ele.selected(); - }, "matches") - }, { - selector: ":unselected", - matches: /* @__PURE__ */ __name(function matches2(ele) { - return !ele.selected(); - }, "matches") - }, { - selector: ":selectable", - matches: /* @__PURE__ */ __name(function matches3(ele) { - return ele.selectable(); - }, "matches") - }, { - selector: ":unselectable", - matches: /* @__PURE__ */ __name(function matches4(ele) { - return !ele.selectable(); - }, "matches") - }, { - selector: ":locked", - matches: /* @__PURE__ */ __name(function matches5(ele) { - return ele.locked(); - }, "matches") - }, { - selector: ":unlocked", - matches: /* @__PURE__ */ __name(function matches6(ele) { - return !ele.locked(); - }, "matches") - }, { - selector: ":visible", - matches: /* @__PURE__ */ __name(function matches7(ele) { - return ele.visible(); - }, "matches") - }, { - selector: ":hidden", - matches: /* @__PURE__ */ __name(function matches8(ele) { - return !ele.visible(); - }, "matches") - }, { - selector: ":transparent", - matches: /* @__PURE__ */ __name(function matches9(ele) { - return ele.transparent(); - }, "matches") - }, { - selector: ":grabbed", - matches: /* @__PURE__ */ __name(function matches10(ele) { - return ele.grabbed(); - }, "matches") - }, { - selector: ":free", - matches: /* @__PURE__ */ __name(function matches11(ele) { - return !ele.grabbed(); - }, "matches") - }, { - selector: ":removed", - matches: /* @__PURE__ */ __name(function matches12(ele) { - return ele.removed(); - }, "matches") - }, { - selector: ":inside", - matches: /* @__PURE__ */ __name(function matches13(ele) { - return !ele.removed(); - }, "matches") - }, { - selector: ":grabbable", - matches: /* @__PURE__ */ __name(function matches14(ele) { - return ele.grabbable(); - }, "matches") - }, { - selector: ":ungrabbable", - matches: /* @__PURE__ */ __name(function matches15(ele) { - return !ele.grabbable(); - }, "matches") - }, { - selector: ":animated", - matches: /* @__PURE__ */ __name(function matches16(ele) { - return ele.animated(); - }, "matches") - }, { - selector: ":unanimated", - matches: /* @__PURE__ */ __name(function matches17(ele) { - return !ele.animated(); - }, "matches") - }, { - selector: ":parent", - matches: /* @__PURE__ */ __name(function matches18(ele) { - return ele.isParent(); - }, "matches") - }, { - selector: ":childless", - matches: /* @__PURE__ */ __name(function matches19(ele) { - return ele.isChildless(); - }, "matches") - }, { - selector: ":child", - matches: /* @__PURE__ */ __name(function matches20(ele) { - return ele.isChild(); - }, "matches") - }, { - selector: ":orphan", - matches: /* @__PURE__ */ __name(function matches21(ele) { - return ele.isOrphan(); - }, "matches") - }, { - selector: ":nonorphan", - matches: /* @__PURE__ */ __name(function matches22(ele) { - return ele.isChild(); - }, "matches") - }, { - selector: ":compound", - matches: /* @__PURE__ */ __name(function matches23(ele) { - if (ele.isNode()) { - return ele.isParent(); - } else { - return ele.source().isParent() || ele.target().isParent(); - } - }, "matches") - }, { - selector: ":loop", - matches: /* @__PURE__ */ __name(function matches24(ele) { - return ele.isLoop(); - }, "matches") - }, { - selector: ":simple", - matches: /* @__PURE__ */ __name(function matches25(ele) { - return ele.isSimple(); - }, "matches") - }, { - selector: ":active", - matches: /* @__PURE__ */ __name(function matches26(ele) { - return ele.active(); - }, "matches") - }, { - selector: ":inactive", - matches: /* @__PURE__ */ __name(function matches27(ele) { - return !ele.active(); - }, "matches") - }, { - selector: ":backgrounding", - matches: /* @__PURE__ */ __name(function matches28(ele) { - return ele.backgrounding(); - }, "matches") - }, { - selector: ":nonbackgrounding", - matches: /* @__PURE__ */ __name(function matches29(ele) { - return !ele.backgrounding(); - }, "matches") - }].sort(function(a2, b2) { - return descending2(a2.selector, b2.selector); + __name(initializeArrayOfArrays, "initializeArrayOfArrays"); + __name(pathToHashKeys, "pathToHashKeys"); + __name(isUniquePrefixHash, "isUniquePrefixHash"); + __name(lookAheadSequenceFromAlternatives, "lookAheadSequenceFromAlternatives"); + __name(getLookaheadPathsForOr, "getLookaheadPathsForOr"); + __name(getLookaheadPathsForOptionalProd, "getLookaheadPathsForOptionalProd"); + __name(containsPath, "containsPath"); + __name(isStrictPrefixOfPath, "isStrictPrefixOfPath"); + __name(areTokenCategoriesNotUsed, "areTokenCategoriesNotUsed"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/checks.js + function validateLookahead(options2) { + const lookaheadValidationErrorMessages = options2.lookaheadStrategy.validate({ + rules: options2.rules, + tokenTypes: options2.tokenTypes, + grammarName: options2.grammarName + }); + return map_default(lookaheadValidationErrorMessages, (errorMessage) => Object.assign({ type: ParserDefinitionErrorType.CUSTOM_LOOKAHEAD_VALIDATION }, errorMessage)); + } + function validateGrammar(topLevels, tokenTypes, errMsgProvider, grammarName) { + const duplicateErrors = flatMap_default(topLevels, (currTopLevel) => validateDuplicateProductions(currTopLevel, errMsgProvider)); + const termsNamespaceConflictErrors = checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider); + const tooManyAltsErrors = flatMap_default(topLevels, (curRule) => validateTooManyAlts(curRule, errMsgProvider)); + const duplicateRulesError = flatMap_default(topLevels, (curRule) => validateRuleDoesNotAlreadyExist(curRule, topLevels, grammarName, errMsgProvider)); + return duplicateErrors.concat(termsNamespaceConflictErrors, tooManyAltsErrors, duplicateRulesError); + } + function validateDuplicateProductions(topLevelRule, errMsgProvider) { + const collectorVisitor2 = new OccurrenceValidationCollector(); + topLevelRule.accept(collectorVisitor2); + const allRuleProductions = collectorVisitor2.allProductions; + const productionGroups = groupBy_default(allRuleProductions, identifyProductionForDuplicates); + const duplicates = pickBy_default(productionGroups, (currGroup) => { + return currGroup.length > 1; + }); + const errors = map_default(values_default(duplicates), (currDuplicates) => { + const firstProd = head_default(currDuplicates); + const msg = errMsgProvider.buildDuplicateFoundError(topLevelRule, currDuplicates); + const dslName = getProductionDslName(firstProd); + const defError = { + message: msg, + type: ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS, + ruleName: topLevelRule.name, + dslName, + occurrence: firstProd.idx + }; + const param = getExtraProductionArgument(firstProd); + if (param) { + defError.parameter = param; + } + return defError; + }); + return errors; + } + function identifyProductionForDuplicates(prod) { + return `${getProductionDslName(prod)}_#_${prod.idx}_#_${getExtraProductionArgument(prod)}`; + } + function getExtraProductionArgument(prod) { + if (prod instanceof Terminal) { + return prod.terminalType.name; + } else if (prod instanceof NonTerminal) { + return prod.nonTerminalName; + } else { + return ""; + } + } + function validateRuleDoesNotAlreadyExist(rule, allRules, className, errMsgProvider) { + const errors = []; + const occurrences = reduce_default(allRules, (result, curRule) => { + if (curRule.name === rule.name) { + return result + 1; + } + return result; + }, 0); + if (occurrences > 1) { + const errMsg = errMsgProvider.buildDuplicateRuleNameError({ + topLevelRule: rule, + grammarName: className }); - lookup = function() { - var selToFn = {}; - var s2; - for (var i2 = 0; i2 < stateSelectors.length; i2++) { - s2 = stateSelectors[i2]; - selToFn[s2.selector] = s2.matches; - } - return selToFn; - }(); - stateSelectorMatches = /* @__PURE__ */ __name(function stateSelectorMatches2(sel, ele) { - return lookup[sel](ele); - }, "stateSelectorMatches"); - stateSelectorRegex = "(" + stateSelectors.map(function(s2) { - return s2.selector; - }).join("|") + ")"; - cleanMetaChars = /* @__PURE__ */ __name(function cleanMetaChars2(str2) { - return str2.replace(new RegExp("\\\\(" + tokens.metaChar + ")", "g"), function(match2, $1) { - return $1; - }); - }, "cleanMetaChars"); - replaceLastQuery = /* @__PURE__ */ __name(function replaceLastQuery2(selector, examiningQuery, replacementQuery) { - selector[selector.length - 1] = replacementQuery; - }, "replaceLastQuery"); - exprs = [{ - name: "group", - // just used for identifying when debugging - query: true, - regex: "(" + tokens.group + ")", - populate: /* @__PURE__ */ __name(function populate2(selector, query, _ref) { - var _ref2 = _slicedToArray(_ref, 1), group2 = _ref2[0]; - query.checks.push({ - type: Type3.GROUP, - value: group2 === "*" ? group2 : group2 + "s" - }); - }, "populate") - }, { - name: "state", - query: true, - regex: stateSelectorRegex, - populate: /* @__PURE__ */ __name(function populate3(selector, query, _ref3) { - var _ref4 = _slicedToArray(_ref3, 1), state4 = _ref4[0]; - query.checks.push({ - type: Type3.STATE, - value: state4 - }); - }, "populate") - }, { - name: "id", - query: true, - regex: "\\#(" + tokens.id + ")", - populate: /* @__PURE__ */ __name(function populate4(selector, query, _ref5) { - var _ref6 = _slicedToArray(_ref5, 1), id29 = _ref6[0]; - query.checks.push({ - type: Type3.ID, - value: cleanMetaChars(id29) - }); - }, "populate") - }, { - name: "className", - query: true, - regex: "\\.(" + tokens.className + ")", - populate: /* @__PURE__ */ __name(function populate5(selector, query, _ref7) { - var _ref8 = _slicedToArray(_ref7, 1), className = _ref8[0]; - query.checks.push({ - type: Type3.CLASS, - value: cleanMetaChars(className) - }); - }, "populate") - }, { - name: "dataExists", - query: true, - regex: "\\[\\s*(" + tokens.variable + ")\\s*\\]", - populate: /* @__PURE__ */ __name(function populate6(selector, query, _ref9) { - var _ref10 = _slicedToArray(_ref9, 1), variable = _ref10[0]; - query.checks.push({ - type: Type3.DATA_EXIST, - field: cleanMetaChars(variable) - }); - }, "populate") - }, { - name: "dataCompare", - query: true, - regex: "\\[\\s*(" + tokens.variable + ")\\s*(" + tokens.comparatorOp + ")\\s*(" + tokens.value + ")\\s*\\]", - populate: /* @__PURE__ */ __name(function populate7(selector, query, _ref11) { - var _ref12 = _slicedToArray(_ref11, 3), variable = _ref12[0], comparatorOp = _ref12[1], value2 = _ref12[2]; - var valueIsString = new RegExp("^" + tokens.string + "$").exec(value2) != null; - if (valueIsString) { - value2 = value2.substring(1, value2.length - 1); - } else { - value2 = parseFloat(value2); + errors.push({ + message: errMsg, + type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME, + ruleName: rule.name + }); + } + return errors; + } + function validateRuleIsOverridden(ruleName, definedRulesNames, className) { + const errors = []; + let errMsg; + if (!includes_default(definedRulesNames, ruleName)) { + errMsg = `Invalid rule override, rule: ->${ruleName}<- cannot be overridden in the grammar: ->${className}<-as it is not defined in any of the super grammars `; + errors.push({ + message: errMsg, + type: ParserDefinitionErrorType.INVALID_RULE_OVERRIDE, + ruleName + }); + } + return errors; + } + function validateNoLeftRecursion(topRule, currRule, errMsgProvider, path4 = []) { + const errors = []; + const nextNonTerminals = getFirstNoneTerminal(currRule.definition); + if (isEmpty_default(nextNonTerminals)) { + return []; + } else { + const ruleName = topRule.name; + const foundLeftRecursion = includes_default(nextNonTerminals, topRule); + if (foundLeftRecursion) { + errors.push({ + message: errMsgProvider.buildLeftRecursionError({ + topLevelRule: topRule, + leftRecursionPath: path4 + }), + type: ParserDefinitionErrorType.LEFT_RECURSION, + ruleName + }); + } + const validNextSteps = difference_default(nextNonTerminals, path4.concat([topRule])); + const errorsFromNextSteps = flatMap_default(validNextSteps, (currRefRule) => { + const newPath = clone_default2(path4); + newPath.push(currRefRule); + return validateNoLeftRecursion(topRule, currRefRule, errMsgProvider, newPath); + }); + return errors.concat(errorsFromNextSteps); + } + } + function getFirstNoneTerminal(definition) { + let result = []; + if (isEmpty_default(definition)) { + return result; + } + const firstProd = head_default(definition); + if (firstProd instanceof NonTerminal) { + result.push(firstProd.referencedRule); + } else if (firstProd instanceof Alternative || firstProd instanceof Option2 || firstProd instanceof RepetitionMandatory || firstProd instanceof RepetitionMandatoryWithSeparator || firstProd instanceof RepetitionWithSeparator || firstProd instanceof Repetition) { + result = result.concat(getFirstNoneTerminal(firstProd.definition)); + } else if (firstProd instanceof Alternation) { + result = flatten_default(map_default(firstProd.definition, (currSubDef) => getFirstNoneTerminal(currSubDef.definition))); + } else if (firstProd instanceof Terminal) { + } else { + throw Error("non exhaustive match"); + } + const isFirstOptional = isOptionalProd(firstProd); + const hasMore = definition.length > 1; + if (isFirstOptional && hasMore) { + const rest = drop_default(definition); + return result.concat(getFirstNoneTerminal(rest)); + } else { + return result; + } + } + function validateEmptyOrAlternative(topLevelRule, errMsgProvider) { + const orCollector = new OrCollector(); + topLevelRule.accept(orCollector); + const ors = orCollector.alternations; + const errors = flatMap_default(ors, (currOr) => { + const exceptLast = dropRight_default(currOr.definition); + return flatMap_default(exceptLast, (currAlternative, currAltIdx) => { + const possibleFirstInAlt = nextPossibleTokensAfter([currAlternative], [], tokenStructuredMatcher, 1); + if (isEmpty_default(possibleFirstInAlt)) { + return [ + { + message: errMsgProvider.buildEmptyAlternationError({ + topLevelRule, + alternation: currOr, + emptyChoiceIdx: currAltIdx + }), + type: ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT, + ruleName: topLevelRule.name, + occurrence: currOr.idx, + alternative: currAltIdx + 1 + } + ]; + } else { + return []; + } + }); + }); + return errors; + } + function validateAmbiguousAlternationAlternatives(topLevelRule, globalMaxLookahead, errMsgProvider) { + const orCollector = new OrCollector(); + topLevelRule.accept(orCollector); + let ors = orCollector.alternations; + ors = reject_default(ors, (currOr) => currOr.ignoreAmbiguities === true); + const errors = flatMap_default(ors, (currOr) => { + const currOccurrence = currOr.idx; + const actualMaxLookahead = currOr.maxLookahead || globalMaxLookahead; + const alternatives = getLookaheadPathsForOr(currOccurrence, topLevelRule, actualMaxLookahead, currOr); + const altsAmbiguityErrors = checkAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider); + const altsPrefixAmbiguityErrors = checkPrefixAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider); + return altsAmbiguityErrors.concat(altsPrefixAmbiguityErrors); + }); + return errors; + } + function validateTooManyAlts(topLevelRule, errMsgProvider) { + const orCollector = new OrCollector(); + topLevelRule.accept(orCollector); + const ors = orCollector.alternations; + const errors = flatMap_default(ors, (currOr) => { + if (currOr.definition.length > 255) { + return [ + { + message: errMsgProvider.buildTooManyAlternativesError({ + topLevelRule, + alternation: currOr + }), + type: ParserDefinitionErrorType.TOO_MANY_ALTS, + ruleName: topLevelRule.name, + occurrence: currOr.idx } - query.checks.push({ - type: Type3.DATA_COMPARE, - field: cleanMetaChars(variable), - operator: comparatorOp, - value: value2 - }); - }, "populate") - }, { - name: "dataBool", - query: true, - regex: "\\[\\s*(" + tokens.boolOp + ")\\s*(" + tokens.variable + ")\\s*\\]", - populate: /* @__PURE__ */ __name(function populate8(selector, query, _ref13) { - var _ref14 = _slicedToArray(_ref13, 2), boolOp = _ref14[0], variable = _ref14[1]; - query.checks.push({ - type: Type3.DATA_BOOL, - field: cleanMetaChars(variable), - operator: boolOp + ]; + } else { + return []; + } + }); + return errors; + } + function validateSomeNonEmptyLookaheadPath(topLevelRules, maxLookahead, errMsgProvider) { + const errors = []; + forEach_default(topLevelRules, (currTopRule) => { + const collectorVisitor2 = new RepetitionCollector(); + currTopRule.accept(collectorVisitor2); + const allRuleProductions = collectorVisitor2.allProductions; + forEach_default(allRuleProductions, (currProd) => { + const prodType = getProdType(currProd); + const actualMaxLookahead = currProd.maxLookahead || maxLookahead; + const currOccurrence = currProd.idx; + const paths = getLookaheadPathsForOptionalProd(currOccurrence, currTopRule, prodType, actualMaxLookahead); + const pathsInsideProduction = paths[0]; + if (isEmpty_default(flatten_default(pathsInsideProduction))) { + const errMsg = errMsgProvider.buildEmptyRepetitionError({ + topLevelRule: currTopRule, + repetition: currProd }); - }, "populate") - }, { - name: "metaCompare", - query: true, - regex: "\\[\\[\\s*(" + tokens.meta + ")\\s*(" + tokens.comparatorOp + ")\\s*(" + tokens.number + ")\\s*\\]\\]", - populate: /* @__PURE__ */ __name(function populate9(selector, query, _ref15) { - var _ref16 = _slicedToArray(_ref15, 3), meta3 = _ref16[0], comparatorOp = _ref16[1], number7 = _ref16[2]; - query.checks.push({ - type: Type3.META_COMPARE, - field: cleanMetaChars(meta3), - operator: comparatorOp, - value: parseFloat(number7) + errors.push({ + message: errMsg, + type: ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD, + ruleName: currTopRule.name }); - }, "populate") - }, { - name: "nextQuery", - separator: true, - regex: tokens.separator, - populate: /* @__PURE__ */ __name(function populate10(selector, query) { - var currentSubject = selector.currentSubject; - var edgeCount3 = selector.edgeCount; - var compoundCount = selector.compoundCount; - var lastQ = selector[selector.length - 1]; - if (currentSubject != null) { - lastQ.subject = currentSubject; - selector.currentSubject = null; - } - lastQ.edgeCount = edgeCount3; - lastQ.compoundCount = compoundCount; - selector.edgeCount = 0; - selector.compoundCount = 0; - var nextQuery = selector[selector.length++] = newQuery(); - return nextQuery; - }, "populate") - }, { - name: "directedEdge", - separator: true, - regex: tokens.directedEdge, - populate: /* @__PURE__ */ __name(function populate11(selector, query) { - if (selector.currentSubject == null) { - var edgeQuery = newQuery(); - var source = query; - var target = newQuery(); - edgeQuery.checks.push({ - type: Type3.DIRECTED_EDGE, - source, - target - }); - replaceLastQuery(selector, query, edgeQuery); - selector.edgeCount++; - return target; - } else { - var srcTgtQ = newQuery(); - var _source = query; - var _target = newQuery(); - srcTgtQ.checks.push({ - type: Type3.NODE_SOURCE, - source: _source, - target: _target - }); - replaceLastQuery(selector, query, srcTgtQ); - selector.edgeCount++; - return _target; - } - }, "populate") - }, { - name: "undirectedEdge", - separator: true, - regex: tokens.undirectedEdge, - populate: /* @__PURE__ */ __name(function populate12(selector, query) { - if (selector.currentSubject == null) { - var edgeQuery = newQuery(); - var source = query; - var target = newQuery(); - edgeQuery.checks.push({ - type: Type3.UNDIRECTED_EDGE, - nodes: [source, target] - }); - replaceLastQuery(selector, query, edgeQuery); - selector.edgeCount++; - return target; - } else { - var nhoodQ = newQuery(); - var node2 = query; - var neighbor = newQuery(); - nhoodQ.checks.push({ - type: Type3.NODE_NEIGHBOR, - node: node2, - neighbor - }); - replaceLastQuery(selector, query, nhoodQ); - return neighbor; - } - }, "populate") - }, { - name: "child", - separator: true, - regex: tokens.child, - populate: /* @__PURE__ */ __name(function populate13(selector, query) { - if (selector.currentSubject == null) { - var parentChildQuery = newQuery(); - var child = newQuery(); - var parent4 = selector[selector.length - 1]; - parentChildQuery.checks.push({ - type: Type3.CHILD, - parent: parent4, - child - }); - replaceLastQuery(selector, query, parentChildQuery); - selector.compoundCount++; - return child; - } else if (selector.currentSubject === query) { - var compound = newQuery(); - var left3 = selector[selector.length - 1]; - var right3 = newQuery(); - var subject = newQuery(); - var _child = newQuery(); - var _parent = newQuery(); - compound.checks.push({ - type: Type3.COMPOUND_SPLIT, - left: left3, - right: right3, - subject - }); - subject.checks = query.checks; - query.checks = [{ - type: Type3.TRUE - }]; - _parent.checks.push({ - type: Type3.TRUE - }); - right3.checks.push({ - type: Type3.PARENT, - // type is swapped on right side queries - parent: _parent, - child: _child - // empty for now - }); - replaceLastQuery(selector, left3, compound); - selector.currentSubject = subject; - selector.compoundCount++; - return _child; - } else { - var _parent2 = newQuery(); - var _child2 = newQuery(); - var pcQChecks = [{ - type: Type3.PARENT, - parent: _parent2, - child: _child2 - }]; - _parent2.checks = query.checks; - query.checks = pcQChecks; - selector.compoundCount++; - return _child2; - } - }, "populate") - }, { - name: "descendant", - separator: true, - regex: tokens.descendant, - populate: /* @__PURE__ */ __name(function populate14(selector, query) { - if (selector.currentSubject == null) { - var ancChQuery = newQuery(); - var descendant = newQuery(); - var ancestor = selector[selector.length - 1]; - ancChQuery.checks.push({ - type: Type3.DESCENDANT, - ancestor, - descendant - }); - replaceLastQuery(selector, query, ancChQuery); - selector.compoundCount++; - return descendant; - } else if (selector.currentSubject === query) { - var compound = newQuery(); - var left3 = selector[selector.length - 1]; - var right3 = newQuery(); - var subject = newQuery(); - var _descendant = newQuery(); - var _ancestor = newQuery(); - compound.checks.push({ - type: Type3.COMPOUND_SPLIT, - left: left3, - right: right3, - subject - }); - subject.checks = query.checks; - query.checks = [{ - type: Type3.TRUE - }]; - _ancestor.checks.push({ - type: Type3.TRUE - }); - right3.checks.push({ - type: Type3.ANCESTOR, - // type is swapped on right side queries - ancestor: _ancestor, - descendant: _descendant - // empty for now - }); - replaceLastQuery(selector, left3, compound); - selector.currentSubject = subject; - selector.compoundCount++; - return _descendant; - } else { - var _ancestor2 = newQuery(); - var _descendant2 = newQuery(); - var adQChecks = [{ - type: Type3.ANCESTOR, - ancestor: _ancestor2, - descendant: _descendant2 - }]; - _ancestor2.checks = query.checks; - query.checks = adQChecks; - selector.compoundCount++; - return _descendant2; - } - }, "populate") - }, { - name: "subject", - modifier: true, - regex: tokens.subject, - populate: /* @__PURE__ */ __name(function populate15(selector, query) { - if (selector.currentSubject != null && selector.currentSubject !== query) { - warn("Redefinition of subject in selector `" + selector.toString() + "`"); - return false; - } - selector.currentSubject = query; - var topQ = selector[selector.length - 1]; - var topChk = topQ.checks[0]; - var topType = topChk == null ? null : topChk.type; - if (topType === Type3.DIRECTED_EDGE) { - topChk.type = Type3.NODE_TARGET; - } else if (topType === Type3.UNDIRECTED_EDGE) { - topChk.type = Type3.NODE_NEIGHBOR; - topChk.node = topChk.nodes[1]; - topChk.neighbor = topChk.nodes[0]; - topChk.nodes = null; - } - }, "populate") - }]; - exprs.forEach(function(e3) { - return e3.regexObj = new RegExp("^" + e3.regex); + } }); - consumeExpr = /* @__PURE__ */ __name(function consumeExpr2(remaining) { - var expr; - var match2; - var name; - for (var j2 = 0; j2 < exprs.length; j2++) { - var e3 = exprs[j2]; - var n2 = e3.name; - var m2 = remaining.match(e3.regexObj); - if (m2 != null) { - match2 = m2; - expr = e3; - name = n2; - var consumed = m2[0]; - remaining = remaining.substring(consumed.length); - break; + }); + return errors; + } + function checkAlternativesAmbiguities(alternatives, alternation2, rule, errMsgProvider) { + const foundAmbiguousPaths = []; + const identicalAmbiguities = reduce_default(alternatives, (result, currAlt, currAltIdx) => { + if (alternation2.definition[currAltIdx].ignoreAmbiguities === true) { + return result; + } + forEach_default(currAlt, (currPath) => { + const altsCurrPathAppearsIn = [currAltIdx]; + forEach_default(alternatives, (currOtherAlt, currOtherAltIdx) => { + if (currAltIdx !== currOtherAltIdx && containsPath(currOtherAlt, currPath) && // ignore (skip) ambiguities with this "other" alternative + alternation2.definition[currOtherAltIdx].ignoreAmbiguities !== true) { + altsCurrPathAppearsIn.push(currOtherAltIdx); } + }); + if (altsCurrPathAppearsIn.length > 1 && !containsPath(foundAmbiguousPaths, currPath)) { + foundAmbiguousPaths.push(currPath); + result.push({ + alts: altsCurrPathAppearsIn, + path: currPath + }); } + }); + return result; + }, []); + const currErrors = map_default(identicalAmbiguities, (currAmbDescriptor) => { + const ambgIndices = map_default(currAmbDescriptor.alts, (currAltIdx) => currAltIdx + 1); + const currMessage = errMsgProvider.buildAlternationAmbiguityError({ + topLevelRule: rule, + alternation: alternation2, + ambiguityIndices: ambgIndices, + prefixPath: currAmbDescriptor.path + }); + return { + message: currMessage, + type: ParserDefinitionErrorType.AMBIGUOUS_ALTS, + ruleName: rule.name, + occurrence: alternation2.idx, + alternatives: currAmbDescriptor.alts + }; + }); + return currErrors; + } + function checkPrefixAlternativesAmbiguities(alternatives, alternation2, rule, errMsgProvider) { + const pathsAndIndices = reduce_default(alternatives, (result, currAlt, idx) => { + const currPathsAndIdx = map_default(currAlt, (currPath) => { + return { idx, path: currPath }; + }); + return result.concat(currPathsAndIdx); + }, []); + const errors = compact_default(flatMap_default(pathsAndIndices, (currPathAndIdx) => { + const alternativeGast = alternation2.definition[currPathAndIdx.idx]; + if (alternativeGast.ignoreAmbiguities === true) { + return []; + } + const targetIdx = currPathAndIdx.idx; + const targetPath = currPathAndIdx.path; + const prefixAmbiguitiesPathsAndIndices = filter_default3(pathsAndIndices, (searchPathAndIdx) => { + return ( + // ignore (skip) ambiguities with this "other" alternative + alternation2.definition[searchPathAndIdx.idx].ignoreAmbiguities !== true && searchPathAndIdx.idx < targetIdx && // checking for strict prefix because identical lookaheads + // will be be detected using a different validation. + isStrictPrefixOfPath(searchPathAndIdx.path, targetPath) + ); + }); + const currPathPrefixErrors = map_default(prefixAmbiguitiesPathsAndIndices, (currAmbPathAndIdx) => { + const ambgIndices = [currAmbPathAndIdx.idx + 1, targetIdx + 1]; + const occurrence = alternation2.idx === 0 ? "" : alternation2.idx; + const message = errMsgProvider.buildAlternationPrefixAmbiguityError({ + topLevelRule: rule, + alternation: alternation2, + ambiguityIndices: ambgIndices, + prefixPath: currAmbPathAndIdx.path + }); return { - expr, - match: match2, - name, - remaining + message, + type: ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS, + ruleName: rule.name, + occurrence, + alternatives: ambgIndices }; - }, "consumeExpr"); - consumeWhitespace = /* @__PURE__ */ __name(function consumeWhitespace2(remaining) { - var match2 = remaining.match(/^\s+/); - if (match2) { - var consumed = match2[0]; - remaining = remaining.substring(consumed.length); + }); + return currPathPrefixErrors; + })); + return errors; + } + function checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider) { + const errors = []; + const tokenNames = map_default(tokenTypes, (currToken) => currToken.name); + forEach_default(topLevels, (currRule) => { + const currRuleName = currRule.name; + if (includes_default(tokenNames, currRuleName)) { + const errMsg = errMsgProvider.buildNamespaceConflictError(currRule); + errors.push({ + message: errMsg, + type: ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE, + ruleName: currRuleName + }); + } + }); + return errors; + } + var OccurrenceValidationCollector, OrCollector, RepetitionCollector; + var init_checks = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/checks.js"() { + "use strict"; + init_lodash(); + init_parser(); + init_api3(); + init_lookahead(); + init_interpreter(); + init_tokens(); + __name(validateLookahead, "validateLookahead"); + __name(validateGrammar, "validateGrammar"); + __name(validateDuplicateProductions, "validateDuplicateProductions"); + __name(identifyProductionForDuplicates, "identifyProductionForDuplicates"); + __name(getExtraProductionArgument, "getExtraProductionArgument"); + OccurrenceValidationCollector = class extends GAstVisitor { + static { + __name(this, "OccurrenceValidationCollector"); } - return remaining; - }, "consumeWhitespace"); - parse2 = /* @__PURE__ */ __name(function parse3(selector) { - var self2 = this; - var remaining = self2.inputText = selector; - var currentQuery = self2[0] = newQuery(); - self2.length = 1; - remaining = consumeWhitespace(remaining); - for (; ; ) { - var exprInfo = consumeExpr(remaining); - if (exprInfo.expr == null) { - warn("The selector `" + selector + "`is invalid"); - return false; - } else { - var args = exprInfo.match.slice(1); - var ret = exprInfo.expr.populate(self2, currentQuery, args); - if (ret === false) { - return false; - } else if (ret != null) { - currentQuery = ret; - } - } - remaining = exprInfo.remaining; - if (remaining.match(/^\s*$/)) { - break; - } + constructor() { + super(...arguments); + this.allProductions = []; } - var lastQ = self2[self2.length - 1]; - if (self2.currentSubject != null) { - lastQ.subject = self2.currentSubject; + visitNonTerminal(subrule) { + this.allProductions.push(subrule); } - lastQ.edgeCount = self2.edgeCount; - lastQ.compoundCount = self2.compoundCount; - for (var i2 = 0; i2 < self2.length; i2++) { - var q2 = self2[i2]; - if (q2.compoundCount > 0 && q2.edgeCount > 0) { - warn("The selector `" + selector + "` is invalid because it uses both a compound selector and an edge selector"); - return false; - } - if (q2.edgeCount > 1) { - warn("The selector `" + selector + "` is invalid because it uses multiple edge selectors"); - return false; - } else if (q2.edgeCount === 1) { - warn("The selector `" + selector + "` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes."); - } + visitOption(option2) { + this.allProductions.push(option2); } - return true; - }, "parse"); - toString4 = /* @__PURE__ */ __name(function toString5() { - if (this.toStringCache != null) { - return this.toStringCache; + visitRepetitionWithSeparator(manySep) { + this.allProductions.push(manySep); } - var clean = /* @__PURE__ */ __name(function clean2(obj) { - if (obj == null) { - return ""; - } else { - return obj; - } - }, "clean"); - var cleanVal = /* @__PURE__ */ __name(function cleanVal2(val) { - if (string(val)) { - return '"' + val + '"'; - } else { - return clean(val); - } - }, "cleanVal"); - var space = /* @__PURE__ */ __name(function space2(val) { - return " " + val + " "; - }, "space"); - var checkToString = /* @__PURE__ */ __name(function checkToString2(check, subject) { - var type3 = check.type, value2 = check.value; - switch (type3) { - case Type3.GROUP: { - var group2 = clean(value2); - return group2.substring(0, group2.length - 1); - } - case Type3.DATA_COMPARE: { - var field = check.field, operator = check.operator; - return "[" + field + space(clean(operator)) + cleanVal(value2) + "]"; - } - case Type3.DATA_BOOL: { - var _operator = check.operator, _field = check.field; - return "[" + clean(_operator) + _field + "]"; - } - case Type3.DATA_EXIST: { - var _field2 = check.field; - return "[" + _field2 + "]"; - } - case Type3.META_COMPARE: { - var _operator2 = check.operator, _field3 = check.field; - return "[[" + _field3 + space(clean(_operator2)) + cleanVal(value2) + "]]"; - } - case Type3.STATE: { - return value2; - } - case Type3.ID: { - return "#" + value2; - } - case Type3.CLASS: { - return "." + value2; - } - case Type3.PARENT: - case Type3.CHILD: { - return queryToString(check.parent, subject) + space(">") + queryToString(check.child, subject); - } - case Type3.ANCESTOR: - case Type3.DESCENDANT: { - return queryToString(check.ancestor, subject) + " " + queryToString(check.descendant, subject); - } - case Type3.COMPOUND_SPLIT: { - var lhs = queryToString(check.left, subject); - var sub2 = queryToString(check.subject, subject); - var rhs = queryToString(check.right, subject); - return lhs + (lhs.length > 0 ? " " : "") + sub2 + rhs; - } - case Type3.TRUE: { - return ""; - } - } - }, "checkToString"); - var queryToString = /* @__PURE__ */ __name(function queryToString2(query2, subject) { - return query2.checks.reduce(function(str3, chk, i3) { - return str3 + (subject === query2 && i3 === 0 ? "$" : "") + checkToString(chk, subject); - }, ""); - }, "queryToString"); - var str2 = ""; - for (var i2 = 0; i2 < this.length; i2++) { - var query = this[i2]; - str2 += queryToString(query, query.subject); - if (this.length > 1 && i2 < this.length - 1) { - str2 += ", "; - } + visitRepetitionMandatory(atLeastOne) { + this.allProductions.push(atLeastOne); } - this.toStringCache = str2; - return str2; - }, "toString"); - parse$1 = { - parse: parse2, - toString: toString4 - }; - valCmp = /* @__PURE__ */ __name(function valCmp2(fieldVal, operator, value2) { - var matches33; - var isFieldStr = string(fieldVal); - var isFieldNum = number$1(fieldVal); - var isValStr = string(value2); - var fieldStr, valStr; - var caseInsensitive = false; - var notExpr = false; - var isIneqCmp = false; - if (operator.indexOf("!") >= 0) { - operator = operator.replace("!", ""); - notExpr = true; + visitRepetitionMandatoryWithSeparator(atLeastOneSep) { + this.allProductions.push(atLeastOneSep); } - if (operator.indexOf("@") >= 0) { - operator = operator.replace("@", ""); - caseInsensitive = true; + visitRepetition(many) { + this.allProductions.push(many); } - if (isFieldStr || isValStr || caseInsensitive) { - fieldStr = !isFieldStr && !isFieldNum ? "" : "" + fieldVal; - valStr = "" + value2; + visitAlternation(or) { + this.allProductions.push(or); } - if (caseInsensitive) { - fieldVal = fieldStr = fieldStr.toLowerCase(); - value2 = valStr = valStr.toLowerCase(); + visitTerminal(terminal) { + this.allProductions.push(terminal); } - switch (operator) { - case "*=": - matches33 = fieldStr.indexOf(valStr) >= 0; - break; - case "$=": - matches33 = fieldStr.indexOf(valStr, fieldStr.length - valStr.length) >= 0; - break; - case "^=": - matches33 = fieldStr.indexOf(valStr) === 0; - break; - case "=": - matches33 = fieldVal === value2; - break; - case ">": - isIneqCmp = true; - matches33 = fieldVal > value2; - break; - case ">=": - isIneqCmp = true; - matches33 = fieldVal >= value2; - break; - case "<": - isIneqCmp = true; - matches33 = fieldVal < value2; - break; - case "<=": - isIneqCmp = true; - matches33 = fieldVal <= value2; - break; - default: - matches33 = false; - break; + }; + __name(validateRuleDoesNotAlreadyExist, "validateRuleDoesNotAlreadyExist"); + __name(validateRuleIsOverridden, "validateRuleIsOverridden"); + __name(validateNoLeftRecursion, "validateNoLeftRecursion"); + __name(getFirstNoneTerminal, "getFirstNoneTerminal"); + OrCollector = class extends GAstVisitor { + static { + __name(this, "OrCollector"); } - if (notExpr && (fieldVal != null || !isIneqCmp)) { - matches33 = !matches33; + constructor() { + super(...arguments); + this.alternations = []; } - return matches33; - }, "valCmp"); - boolCmp = /* @__PURE__ */ __name(function boolCmp2(fieldVal, operator) { - switch (operator) { - case "?": - return fieldVal ? true : false; - case "!": - return fieldVal ? false : true; - case "^": - return fieldVal === void 0; + visitAlternation(node2) { + this.alternations.push(node2); } - }, "boolCmp"); - existCmp = /* @__PURE__ */ __name(function existCmp2(fieldVal) { - return fieldVal !== void 0; - }, "existCmp"); - data$1 = /* @__PURE__ */ __name(function data2(ele, field) { - return ele.data(field); - }, "data"); - meta = /* @__PURE__ */ __name(function meta2(ele, field) { - return ele[field](); - }, "meta"); - match = []; - matches$1 = /* @__PURE__ */ __name(function matches30(query, ele) { - return query.checks.every(function(chk) { - return match[chk.type](chk, ele); - }); - }, "matches"); - match[Type3.GROUP] = function(check, ele) { - var group2 = check.value; - return group2 === "*" || group2 === ele.group(); - }; - match[Type3.STATE] = function(check, ele) { - var stateSelector = check.value; - return stateSelectorMatches(stateSelector, ele); - }; - match[Type3.ID] = function(check, ele) { - var id29 = check.value; - return ele.id() === id29; - }; - match[Type3.CLASS] = function(check, ele) { - var cls = check.value; - return ele.hasClass(cls); - }; - match[Type3.META_COMPARE] = function(check, ele) { - var field = check.field, operator = check.operator, value2 = check.value; - return valCmp(meta(ele, field), operator, value2); - }; - match[Type3.DATA_COMPARE] = function(check, ele) { - var field = check.field, operator = check.operator, value2 = check.value; - return valCmp(data$1(ele, field), operator, value2); - }; - match[Type3.DATA_BOOL] = function(check, ele) { - var field = check.field, operator = check.operator; - return boolCmp(data$1(ele, field), operator); - }; - match[Type3.DATA_EXIST] = function(check, ele) { - var field = check.field; - check.operator; - return existCmp(data$1(ele, field)); - }; - match[Type3.UNDIRECTED_EDGE] = function(check, ele) { - var qA = check.nodes[0]; - var qB = check.nodes[1]; - var src = ele.source(); - var tgt = ele.target(); - return matches$1(qA, src) && matches$1(qB, tgt) || matches$1(qB, src) && matches$1(qA, tgt); - }; - match[Type3.NODE_NEIGHBOR] = function(check, ele) { - return matches$1(check.node, ele) && ele.neighborhood().some(function(n2) { - return n2.isNode() && matches$1(check.neighbor, n2); - }); - }; - match[Type3.DIRECTED_EDGE] = function(check, ele) { - return matches$1(check.source, ele.source()) && matches$1(check.target, ele.target()); - }; - match[Type3.NODE_SOURCE] = function(check, ele) { - return matches$1(check.source, ele) && ele.outgoers().some(function(n2) { - return n2.isNode() && matches$1(check.target, n2); - }); - }; - match[Type3.NODE_TARGET] = function(check, ele) { - return matches$1(check.target, ele) && ele.incomers().some(function(n2) { - return n2.isNode() && matches$1(check.source, n2); - }); - }; - match[Type3.CHILD] = function(check, ele) { - return matches$1(check.child, ele) && matches$1(check.parent, ele.parent()); - }; - match[Type3.PARENT] = function(check, ele) { - return matches$1(check.parent, ele) && ele.children().some(function(c3) { - return matches$1(check.child, c3); - }); - }; - match[Type3.DESCENDANT] = function(check, ele) { - return matches$1(check.descendant, ele) && ele.ancestors().some(function(a2) { - return matches$1(check.ancestor, a2); - }); - }; - match[Type3.ANCESTOR] = function(check, ele) { - return matches$1(check.ancestor, ele) && ele.descendants().some(function(d2) { - return matches$1(check.descendant, d2); - }); - }; - match[Type3.COMPOUND_SPLIT] = function(check, ele) { - return matches$1(check.subject, ele) && matches$1(check.left, ele) && matches$1(check.right, ele); - }; - match[Type3.TRUE] = function() { - return true; - }; - match[Type3.COLLECTION] = function(check, ele) { - var collection4 = check.value; - return collection4.has(ele); }; - match[Type3.FILTER] = function(check, ele) { - var filter6 = check.value; - return filter6(ele); - }; - filter3 = /* @__PURE__ */ __name(function filter4(collection4) { - var self2 = this; - if (self2.length === 1 && self2[0].checks.length === 1 && self2[0].checks[0].type === Type3.ID) { - return collection4.getElementById(self2[0].checks[0].value).collection(); + __name(validateEmptyOrAlternative, "validateEmptyOrAlternative"); + __name(validateAmbiguousAlternationAlternatives, "validateAmbiguousAlternationAlternatives"); + RepetitionCollector = class extends GAstVisitor { + static { + __name(this, "RepetitionCollector"); } - var selectorFunction = /* @__PURE__ */ __name(function selectorFunction2(element3) { - for (var j2 = 0; j2 < self2.length; j2++) { - var query = self2[j2]; - if (matches$1(query, element3)) { - return true; - } - } - return false; - }, "selectorFunction"); - if (self2.text() == null) { - selectorFunction = /* @__PURE__ */ __name(function selectorFunction2() { - return true; - }, "selectorFunction"); + constructor() { + super(...arguments); + this.allProductions = []; } - return collection4.filter(selectorFunction); - }, "filter"); - matches31 = /* @__PURE__ */ __name(function matches32(ele) { - var self2 = this; - for (var j2 = 0; j2 < self2.length; j2++) { - var query = self2[j2]; - if (matches$1(query, ele)) { - return true; - } + visitRepetitionWithSeparator(manySep) { + this.allProductions.push(manySep); + } + visitRepetitionMandatory(atLeastOne) { + this.allProductions.push(atLeastOne); + } + visitRepetitionMandatoryWithSeparator(atLeastOneSep) { + this.allProductions.push(atLeastOneSep); + } + visitRepetition(many) { + this.allProductions.push(many); } - return false; - }, "matches"); - matching = { - matches: matches31, - filter: filter3 }; - Selector = /* @__PURE__ */ __name(function Selector2(selector) { - this.inputText = selector; - this.currentSubject = null; - this.compoundCount = 0; - this.edgeCount = 0; - this.length = 0; - if (selector == null || string(selector) && selector.match(/^\s*$/)) ; - else if (elementOrCollection(selector)) { - this.addQuery({ - checks: [{ - type: Type3.COLLECTION, - value: selector.collection() - }] - }); - } else if (fn$6(selector)) { - this.addQuery({ - checks: [{ - type: Type3.FILTER, - value: selector - }] - }); - } else if (string(selector)) { - if (!this.parse(selector)) { - this.invalid = true; + __name(validateTooManyAlts, "validateTooManyAlts"); + __name(validateSomeNonEmptyLookaheadPath, "validateSomeNonEmptyLookaheadPath"); + __name(checkAlternativesAmbiguities, "checkAlternativesAmbiguities"); + __name(checkPrefixAlternativesAmbiguities, "checkPrefixAlternativesAmbiguities"); + __name(checkTerminalAndNoneTerminalsNameSpace, "checkTerminalAndNoneTerminalsNameSpace"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_resolver_public.js + function resolveGrammar2(options2) { + const actualOptions = defaults_default(options2, { + errMsgProvider: defaultGrammarResolverErrorProvider + }); + const topRulesTable = {}; + forEach_default(options2.rules, (rule) => { + topRulesTable[rule.name] = rule; + }); + return resolveGrammar(topRulesTable, actualOptions.errMsgProvider); + } + function validateGrammar2(options2) { + options2 = defaults_default(options2, { + errMsgProvider: defaultGrammarValidatorErrorProvider + }); + return validateGrammar(options2.rules, options2.tokenTypes, options2.errMsgProvider, options2.grammarName); + } + var init_gast_resolver_public = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_resolver_public.js"() { + "use strict"; + init_lodash(); + init_resolver(); + init_checks(); + init_errors_public(); + __name(resolveGrammar2, "resolveGrammar"); + __name(validateGrammar2, "validateGrammar"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/exceptions_public.js + function isRecognitionException(error3) { + return includes_default(RECOGNITION_EXCEPTION_NAMES, error3.name); + } + var MISMATCHED_TOKEN_EXCEPTION, NO_VIABLE_ALT_EXCEPTION, EARLY_EXIT_EXCEPTION, NOT_ALL_INPUT_PARSED_EXCEPTION, RECOGNITION_EXCEPTION_NAMES, RecognitionException, MismatchedTokenException, NoViableAltException, NotAllInputParsedException, EarlyExitException; + var init_exceptions_public = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/exceptions_public.js"() { + "use strict"; + init_lodash(); + MISMATCHED_TOKEN_EXCEPTION = "MismatchedTokenException"; + NO_VIABLE_ALT_EXCEPTION = "NoViableAltException"; + EARLY_EXIT_EXCEPTION = "EarlyExitException"; + NOT_ALL_INPUT_PARSED_EXCEPTION = "NotAllInputParsedException"; + RECOGNITION_EXCEPTION_NAMES = [ + MISMATCHED_TOKEN_EXCEPTION, + NO_VIABLE_ALT_EXCEPTION, + EARLY_EXIT_EXCEPTION, + NOT_ALL_INPUT_PARSED_EXCEPTION + ]; + Object.freeze(RECOGNITION_EXCEPTION_NAMES); + __name(isRecognitionException, "isRecognitionException"); + RecognitionException = class extends Error { + static { + __name(this, "RecognitionException"); + } + constructor(message, token2) { + super(message); + this.token = token2; + this.resyncedTokens = []; + Object.setPrototypeOf(this, new.target.prototype); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); } - } else { - error("A selector must be created from a string; found "); } - }, "Selector"); - selfn = Selector.prototype; - [parse$1, matching].forEach(function(p3) { - return extend4(selfn, p3); - }); - selfn.text = function() { - return this.inputText; }; - selfn.size = function() { - return this.length; + MismatchedTokenException = class extends RecognitionException { + static { + __name(this, "MismatchedTokenException"); + } + constructor(message, token2, previousToken) { + super(message, token2); + this.previousToken = previousToken; + this.name = MISMATCHED_TOKEN_EXCEPTION; + } }; - selfn.eq = function(i2) { - return this[i2]; + NoViableAltException = class extends RecognitionException { + static { + __name(this, "NoViableAltException"); + } + constructor(message, token2, previousToken) { + super(message, token2); + this.previousToken = previousToken; + this.name = NO_VIABLE_ALT_EXCEPTION; + } }; - selfn.sameText = function(otherSel) { - return !this.invalid && !otherSel.invalid && this.text() === otherSel.text(); + NotAllInputParsedException = class extends RecognitionException { + static { + __name(this, "NotAllInputParsedException"); + } + constructor(message, token2) { + super(message, token2); + this.name = NOT_ALL_INPUT_PARSED_EXCEPTION; + } }; - selfn.addQuery = function(q2) { - this[this.length++] = q2; + EarlyExitException = class extends RecognitionException { + static { + __name(this, "EarlyExitException"); + } + constructor(message, token2, previousToken) { + super(message, token2); + this.previousToken = previousToken; + this.name = EARLY_EXIT_EXCEPTION; + } }; - selfn.selector = selfn.toString; - elesfn$g = { - allAre: /* @__PURE__ */ __name(function allAre(selector) { - var selObj = new Selector(selector); - return this.every(function(ele) { - return selObj.matches(ele); - }); - }, "allAre"), - is: /* @__PURE__ */ __name(function is(selector) { - var selObj = new Selector(selector); - return this.some(function(ele) { - return selObj.matches(ele); - }); - }, "is"), - some: /* @__PURE__ */ __name(function some2(fn3, thisArg) { - for (var i2 = 0; i2 < this.length; i2++) { - var ret = !thisArg ? fn3(this[i2], i2, this) : fn3.apply(thisArg, [this[i2], i2, this]); - if (ret) { - return true; - } - } - return false; - }, "some"), - every: /* @__PURE__ */ __name(function every2(fn3, thisArg) { - for (var i2 = 0; i2 < this.length; i2++) { - var ret = !thisArg ? fn3(this[i2], i2, this) : fn3.apply(thisArg, [this[i2], i2, this]); - if (!ret) { - return false; - } - } - return true; - }, "every"), - same: /* @__PURE__ */ __name(function same(collection4) { - if (this === collection4) { - return true; - } - collection4 = this.cy().collection(collection4); - var thisLength = this.length; - var collectionLength = collection4.length; - if (thisLength !== collectionLength) { - return false; - } - if (thisLength === 1) { - return this[0] === collection4[0]; - } - return this.every(function(ele) { - return collection4.hasElementWithId(ele.id()); - }); - }, "same"), - anySame: /* @__PURE__ */ __name(function anySame(collection4) { - collection4 = this.cy().collection(collection4); - return this.some(function(ele) { - return collection4.hasElementWithId(ele.id()); - }); - }, "anySame"), - allAreNeighbors: /* @__PURE__ */ __name(function allAreNeighbors(collection4) { - collection4 = this.cy().collection(collection4); - var nhood = this.neighborhood(); - return collection4.every(function(ele) { - return nhood.hasElementWithId(ele.id()); - }); - }, "allAreNeighbors"), - contains: /* @__PURE__ */ __name(function contains3(collection4) { - collection4 = this.cy().collection(collection4); - var self2 = this; - return collection4.every(function(ele) { - return self2.hasElementWithId(ele.id()); - }); - }, "contains") + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recoverable.js + function attemptInRepetitionRecovery(prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) { + const key = this.getKeyForAutomaticLookahead(dslMethodIdx, prodOccurrence); + let firstAfterRepInfo = this.firstAfterRepMap[key]; + if (firstAfterRepInfo === void 0) { + const currRuleName = this.getCurrRuleFullName(); + const ruleGrammar = this.getGAstProductions()[currRuleName]; + const walker = new nextToksWalker(ruleGrammar, prodOccurrence); + firstAfterRepInfo = walker.startWalking(); + this.firstAfterRepMap[key] = firstAfterRepInfo; + } + let expectTokAfterLastMatch = firstAfterRepInfo.token; + let nextTokIdx = firstAfterRepInfo.occurrence; + const isEndOfRule = firstAfterRepInfo.isEndOfRule; + if (this.RULE_STACK.length === 1 && isEndOfRule && expectTokAfterLastMatch === void 0) { + expectTokAfterLastMatch = EOF; + nextTokIdx = 1; + } + if (expectTokAfterLastMatch === void 0 || nextTokIdx === void 0) { + return; + } + if (this.shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch, nextTokIdx, notStuck)) { + this.tryInRepetitionRecovery(prodFunc, args, lookaheadFunc, expectTokAfterLastMatch); + } + } + var EOF_FOLLOW_KEY, IN_RULE_RECOVERY_EXCEPTION, InRuleRecoveryException, Recoverable; + var init_recoverable = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recoverable.js"() { + "use strict"; + init_tokens_public(); + init_lodash(); + init_exceptions_public(); + init_constants2(); + init_parser(); + EOF_FOLLOW_KEY = {}; + IN_RULE_RECOVERY_EXCEPTION = "InRuleRecoveryException"; + InRuleRecoveryException = class extends Error { + static { + __name(this, "InRuleRecoveryException"); + } + constructor(message) { + super(message); + this.name = IN_RULE_RECOVERY_EXCEPTION; + } }; - elesfn$g.allAreNeighbours = elesfn$g.allAreNeighbors; - elesfn$g.has = elesfn$g.contains; - elesfn$g.equal = elesfn$g.equals = elesfn$g.same; - cache = /* @__PURE__ */ __name(function cache2(fn3, name) { - return /* @__PURE__ */ __name(function traversalCache(arg1, arg2, arg3, arg4) { - var selectorOrEles = arg1; - var eles = this; - var key; - if (selectorOrEles == null) { - key = ""; - } else if (elementOrCollection(selectorOrEles) && selectorOrEles.length === 1) { - key = selectorOrEles.id(); + Recoverable = class { + static { + __name(this, "Recoverable"); + } + initRecoverable(config5) { + this.firstAfterRepMap = {}; + this.resyncFollows = {}; + this.recoveryEnabled = has_default(config5, "recoveryEnabled") ? config5.recoveryEnabled : DEFAULT_PARSER_CONFIG.recoveryEnabled; + if (this.recoveryEnabled) { + this.attemptInRepetitionRecovery = attemptInRepetitionRecovery; } - if (eles.length === 1 && key) { - var _p = eles[0]._private; - var tch = _p.traversalCache = _p.traversalCache || {}; - var ch = tch[name] = tch[name] || []; - var hash = hashString(key); - var cacheHit = ch[hash]; - if (cacheHit) { - return cacheHit; + } + getTokenToInsert(tokType) { + const tokToInsert = createTokenInstance(tokType, "", NaN, NaN, NaN, NaN, NaN, NaN); + tokToInsert.isInsertedInRecovery = true; + return tokToInsert; + } + canTokenTypeBeInsertedInRecovery(tokType) { + return true; + } + canTokenTypeBeDeletedInRecovery(tokType) { + return true; + } + tryInRepetitionRecovery(grammarRule, grammarRuleArgs, lookAheadFunc, expectedTokType) { + const reSyncTokType = this.findReSyncTokenType(); + const savedLexerState = this.exportLexerState(); + const resyncedTokens = []; + let passedResyncPoint = false; + const nextTokenWithoutResync = this.LA(1); + let currToken = this.LA(1); + const generateErrorMessage = /* @__PURE__ */ __name(() => { + const previousToken = this.LA(0); + const msg = this.errorMessageProvider.buildMismatchTokenMessage({ + expected: expectedTokType, + actual: nextTokenWithoutResync, + previous: previousToken, + ruleName: this.getCurrRuleFullName() + }); + const error3 = new MismatchedTokenException(msg, nextTokenWithoutResync, this.LA(0)); + error3.resyncedTokens = dropRight_default(resyncedTokens); + this.SAVE_ERROR(error3); + }, "generateErrorMessage"); + while (!passedResyncPoint) { + if (this.tokenMatcher(currToken, expectedTokType)) { + generateErrorMessage(); + return; + } else if (lookAheadFunc.call(this)) { + generateErrorMessage(); + grammarRule.apply(this, grammarRuleArgs); + return; + } else if (this.tokenMatcher(currToken, reSyncTokType)) { + passedResyncPoint = true; } else { - return ch[hash] = fn3.call(eles, arg1, arg2, arg3, arg4); - } - } else { - return fn3.call(eles, arg1, arg2, arg3, arg4); - } - }, "traversalCache"); - }, "cache"); - elesfn$f = { - parent: /* @__PURE__ */ __name(function parent(selector) { - var parents3 = []; - if (this.length === 1) { - var parent4 = this[0]._private.parent; - if (parent4) { - return parent4; - } - } - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - var _parent = ele._private.parent; - if (_parent) { - parents3.push(_parent); - } - } - return this.spawn(parents3, true).filter(selector); - }, "parent"), - parents: /* @__PURE__ */ __name(function parents2(selector) { - var parents3 = []; - var eles = this.parent(); - while (eles.nonempty()) { - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - parents3.push(ele); - } - eles = eles.parent(); - } - return this.spawn(parents3, true).filter(selector); - }, "parents"), - commonAncestors: /* @__PURE__ */ __name(function commonAncestors(selector) { - var ancestors; - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - var parents3 = ele.parents(); - ancestors = ancestors || parents3; - ancestors = ancestors.intersect(parents3); - } - return ancestors.filter(selector); - }, "commonAncestors"), - orphans: /* @__PURE__ */ __name(function orphans(selector) { - return this.stdFilter(function(ele) { - return ele.isOrphan(); - }).filter(selector); - }, "orphans"), - nonorphans: /* @__PURE__ */ __name(function nonorphans(selector) { - return this.stdFilter(function(ele) { - return ele.isChild(); - }).filter(selector); - }, "nonorphans"), - children: cache(function(selector) { - var children2 = []; - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - var eleChildren = ele._private.children; - for (var j2 = 0; j2 < eleChildren.length; j2++) { - children2.push(eleChildren[j2]); - } - } - return this.spawn(children2, true).filter(selector); - }, "children"), - siblings: /* @__PURE__ */ __name(function siblings(selector) { - return this.parent().children().not(this).filter(selector); - }, "siblings"), - isParent: /* @__PURE__ */ __name(function isParent() { - var ele = this[0]; - if (ele) { - return ele.isNode() && ele._private.children.length !== 0; - } - }, "isParent"), - isChildless: /* @__PURE__ */ __name(function isChildless() { - var ele = this[0]; - if (ele) { - return ele.isNode() && ele._private.children.length === 0; - } - }, "isChildless"), - isChild: /* @__PURE__ */ __name(function isChild() { - var ele = this[0]; - if (ele) { - return ele.isNode() && ele._private.parent != null; - } - }, "isChild"), - isOrphan: /* @__PURE__ */ __name(function isOrphan() { - var ele = this[0]; - if (ele) { - return ele.isNode() && ele._private.parent == null; - } - }, "isOrphan"), - descendants: /* @__PURE__ */ __name(function descendants2(selector) { - var elements3 = []; - function add3(eles) { - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - elements3.push(ele); - if (ele.children().nonempty()) { - add3(ele.children()); - } + currToken = this.SKIP_TOKEN(); + this.addToResyncTokens(currToken, resyncedTokens); } } - __name(add3, "add"); - add3(this.children()); - return this.spawn(elements3, true).filter(selector); - }, "descendants") - }; - __name(forEachCompound, "forEachCompound"); - __name(addChildren, "addChildren"); - elesfn$f.forEachDown = function(fn3) { - var includeSelf = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - return forEachCompound(this, fn3, includeSelf, addChildren); - }; - __name(addParent, "addParent"); - elesfn$f.forEachUp = function(fn3) { - var includeSelf = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - return forEachCompound(this, fn3, includeSelf, addParent); - }; - __name(addParentAndChildren, "addParentAndChildren"); - elesfn$f.forEachUpAndDown = function(fn3) { - var includeSelf = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - return forEachCompound(this, fn3, includeSelf, addParentAndChildren); - }; - elesfn$f.ancestors = elesfn$f.parents; - fn$5 = elesfn$e = { - data: define2.data({ - field: "data", - bindingEvent: "data", - allowBinding: true, - allowSetting: true, - settingEvent: "data", - settingTriggersEvent: true, - triggerFnName: "trigger", - allowGetting: true, - immutableKeys: { - "id": true, - "source": true, - "target": true, - "parent": true - }, - updateStyle: true - }), - removeData: define2.removeData({ - field: "data", - event: "data", - triggerFnName: "trigger", - triggerEvent: true, - immutableKeys: { - "id": true, - "source": true, - "target": true, - "parent": true - }, - updateStyle: true - }), - scratch: define2.data({ - field: "scratch", - bindingEvent: "scratch", - allowBinding: true, - allowSetting: true, - settingEvent: "scratch", - settingTriggersEvent: true, - triggerFnName: "trigger", - allowGetting: true, - updateStyle: true - }), - removeScratch: define2.removeData({ - field: "scratch", - event: "scratch", - triggerFnName: "trigger", - triggerEvent: true, - updateStyle: true - }), - rscratch: define2.data({ - field: "rscratch", - allowBinding: false, - allowSetting: true, - settingTriggersEvent: false, - allowGetting: true - }), - removeRscratch: define2.removeData({ - field: "rscratch", - triggerEvent: false - }), - id: /* @__PURE__ */ __name(function id21() { - var ele = this[0]; - if (ele) { - return ele._private.data.id; - } - }, "id") - }; - fn$5.attr = fn$5.data; - fn$5.removeAttr = fn$5.removeData; - data3 = elesfn$e; - elesfn$d = {}; - __name(defineDegreeFunction, "defineDegreeFunction"); - extend4(elesfn$d, { - degree: defineDegreeFunction(function(node2, edge) { - if (edge.source().same(edge.target())) { - return 2; - } else { - return 1; - } - }), - indegree: defineDegreeFunction(function(node2, edge) { - if (edge.target().same(node2)) { - return 1; - } else { - return 0; + this.importLexerState(savedLexerState); + } + shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch, nextTokIdx, notStuck) { + if (notStuck === false) { + return false; } - }), - outdegree: defineDegreeFunction(function(node2, edge) { - if (edge.source().same(node2)) { - return 1; - } else { - return 0; + if (this.tokenMatcher(this.LA(1), expectTokAfterLastMatch)) { + return false; } - }) - }); - __name(defineDegreeBoundsFunction, "defineDegreeBoundsFunction"); - extend4(elesfn$d, { - minDegree: defineDegreeBoundsFunction("degree", function(degree, min9) { - return degree < min9; - }), - maxDegree: defineDegreeBoundsFunction("degree", function(degree, max10) { - return degree > max10; - }), - minIndegree: defineDegreeBoundsFunction("indegree", function(degree, min9) { - return degree < min9; - }), - maxIndegree: defineDegreeBoundsFunction("indegree", function(degree, max10) { - return degree > max10; - }), - minOutdegree: defineDegreeBoundsFunction("outdegree", function(degree, min9) { - return degree < min9; - }), - maxOutdegree: defineDegreeBoundsFunction("outdegree", function(degree, max10) { - return degree > max10; - }) - }); - extend4(elesfn$d, { - totalDegree: /* @__PURE__ */ __name(function totalDegree(includeLoops) { - var total = 0; - var nodes6 = this.nodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - total += nodes6[i2].degree(includeLoops); + if (this.isBackTracking()) { + return false; } - return total; - }, "totalDegree") - }); - beforePositionSet = /* @__PURE__ */ __name(function beforePositionSet2(eles, newPos, silent) { - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - if (!ele.locked()) { - var oldPos = ele._private.position; - var delta = { - x: newPos.x != null ? newPos.x - oldPos.x : 0, - y: newPos.y != null ? newPos.y - oldPos.y : 0 - }; - if (ele.isParent() && !(delta.x === 0 && delta.y === 0)) { - ele.children().shift(delta, silent); - } - ele.dirtyBoundingBoxCache(); + if (this.canPerformInRuleRecovery(expectTokAfterLastMatch, this.getFollowsForInRuleRecovery(expectTokAfterLastMatch, nextTokIdx))) { + return false; } + return true; } - }, "beforePositionSet"); - positionDef = { - field: "position", - bindingEvent: "position", - allowBinding: true, - allowSetting: true, - settingEvent: "position", - settingTriggersEvent: true, - triggerFnName: "emitAndNotify", - allowGetting: true, - validKeys: ["x", "y"], - beforeGet: /* @__PURE__ */ __name(function beforeGet(ele) { - ele.updateCompoundBounds(); - }, "beforeGet"), - beforeSet: /* @__PURE__ */ __name(function beforeSet(eles, newPos) { - beforePositionSet(eles, newPos, false); - }, "beforeSet"), - onSet: /* @__PURE__ */ __name(function onSet(eles) { - eles.dirtyCompoundBoundsCache(); - }, "onSet"), - canSet: /* @__PURE__ */ __name(function canSet(ele) { - return !ele.locked(); - }, "canSet") - }; - fn$4 = elesfn$c = { - position: define2.data(positionDef), - // position but no notification to renderer - silentPosition: define2.data(extend4({}, positionDef, { - allowBinding: false, - allowSetting: true, - settingTriggersEvent: false, - allowGetting: false, - beforeSet: /* @__PURE__ */ __name(function beforeSet2(eles, newPos) { - beforePositionSet(eles, newPos, true); - }, "beforeSet"), - onSet: /* @__PURE__ */ __name(function onSet2(eles) { - eles.dirtyCompoundBoundsCache(); - }, "onSet") - })), - positions: /* @__PURE__ */ __name(function positions(pos, silent) { - if (plainObject(pos)) { - if (silent) { - this.silentPosition(pos); - } else { - this.position(pos); - } - } else if (fn$6(pos)) { - var _fn = pos; - var cy = this.cy(); - cy.startBatch(); - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - var _pos = void 0; - if (_pos = _fn(ele, i2)) { - if (silent) { - ele.silentPosition(_pos); - } else { - ele.position(_pos); - } - } - } - cy.endBatch(); - } - return this; - }, "positions"), - silentPositions: /* @__PURE__ */ __name(function silentPositions(pos) { - return this.positions(pos, true); - }, "silentPositions"), - shift: /* @__PURE__ */ __name(function shift(dim, val, silent) { - var delta; - if (plainObject(dim)) { - delta = { - x: number$1(dim.x) ? dim.x : 0, - y: number$1(dim.y) ? dim.y : 0 - }; - silent = val; - } else if (string(dim) && number$1(val)) { - delta = { - x: 0, - y: 0 - }; - delta[dim] = val; + // Error Recovery functionality + getFollowsForInRuleRecovery(tokType, tokIdxInRule) { + const grammarPath = this.getCurrentGrammarPath(tokType, tokIdxInRule); + const follows = this.getNextPossibleTokenTypes(grammarPath); + return follows; + } + tryInRuleRecovery(expectedTokType, follows) { + if (this.canRecoverWithSingleTokenInsertion(expectedTokType, follows)) { + const tokToInsert = this.getTokenToInsert(expectedTokType); + return tokToInsert; } - if (delta != null) { - var cy = this.cy(); - cy.startBatch(); - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - if (cy.hasCompoundNodes() && ele.isChild() && ele.ancestors().anySame(this)) { - continue; - } - var pos = ele.position(); - var newPos = { - x: pos.x + delta.x, - y: pos.y + delta.y - }; - if (silent) { - ele.silentPosition(newPos); - } else { - ele.position(newPos); - } - } - cy.endBatch(); + if (this.canRecoverWithSingleTokenDeletion(expectedTokType)) { + const nextTok = this.SKIP_TOKEN(); + this.consumeToken(); + return nextTok; } - return this; - }, "shift"), - silentShift: /* @__PURE__ */ __name(function silentShift(dim, val) { - if (plainObject(dim)) { - this.shift(dim, true); - } else if (string(dim) && number$1(val)) { - this.shift(dim, val, true); + throw new InRuleRecoveryException("sad sad panda"); + } + canPerformInRuleRecovery(expectedToken, follows) { + return this.canRecoverWithSingleTokenInsertion(expectedToken, follows) || this.canRecoverWithSingleTokenDeletion(expectedToken); + } + canRecoverWithSingleTokenInsertion(expectedTokType, follows) { + if (!this.canTokenTypeBeInsertedInRecovery(expectedTokType)) { + return false; } - return this; - }, "silentShift"), - // get/set the rendered (i.e. on screen) positon of the element - renderedPosition: /* @__PURE__ */ __name(function renderedPosition(dim, val) { - var ele = this[0]; - var cy = this.cy(); - var zoom2 = cy.zoom(); - var pan2 = cy.pan(); - var rpos = plainObject(dim) ? dim : void 0; - var setting = rpos !== void 0 || val !== void 0 && string(dim); - if (ele && ele.isNode()) { - if (setting) { - for (var i2 = 0; i2 < this.length; i2++) { - var _ele = this[i2]; - if (val !== void 0) { - _ele.position(dim, (val - pan2[dim]) / zoom2); - } else if (rpos !== void 0) { - _ele.position(renderedToModelPosition(rpos, zoom2, pan2)); - } - } - } else { - var pos = ele.position(); - rpos = modelToRenderedPosition$1(pos, zoom2, pan2); - if (dim === void 0) { - return rpos; - } else { - return rpos[dim]; - } - } - } else if (!setting) { - return void 0; + if (isEmpty_default(follows)) { + return false; } - return this; - }, "renderedPosition"), - // get/set the position relative to the parent - relativePosition: /* @__PURE__ */ __name(function relativePosition(dim, val) { - var ele = this[0]; - var cy = this.cy(); - var ppos = plainObject(dim) ? dim : void 0; - var setting = ppos !== void 0 || val !== void 0 && string(dim); - var hasCompoundNodes2 = cy.hasCompoundNodes(); - if (ele && ele.isNode()) { - if (setting) { - for (var i2 = 0; i2 < this.length; i2++) { - var _ele2 = this[i2]; - var parent4 = hasCompoundNodes2 ? _ele2.parent() : null; - var hasParent = parent4 && parent4.length > 0; - var relativeToParent = hasParent; - if (hasParent) { - parent4 = parent4[0]; - } - var origin = relativeToParent ? parent4.position() : { - x: 0, - y: 0 - }; - if (val !== void 0) { - _ele2.position(dim, val + origin[dim]); - } else if (ppos !== void 0) { - _ele2.position({ - x: ppos.x + origin.x, - y: ppos.y + origin.y - }); - } - } - } else { - var pos = ele.position(); - var _parent = hasCompoundNodes2 ? ele.parent() : null; - var _hasParent = _parent && _parent.length > 0; - var _relativeToParent = _hasParent; - if (_hasParent) { - _parent = _parent[0]; - } - var _origin = _relativeToParent ? _parent.position() : { - x: 0, - y: 0 - }; - ppos = { - x: pos.x - _origin.x, - y: pos.y - _origin.y - }; - if (dim === void 0) { - return ppos; - } else { - return ppos[dim]; - } - } - } else if (!setting) { - return void 0; + const mismatchedTok = this.LA(1); + const isMisMatchedTokInFollows = find_default2(follows, (possibleFollowsTokType) => { + return this.tokenMatcher(mismatchedTok, possibleFollowsTokType); + }) !== void 0; + return isMisMatchedTokInFollows; + } + canRecoverWithSingleTokenDeletion(expectedTokType) { + if (!this.canTokenTypeBeDeletedInRecovery(expectedTokType)) { + return false; } - return this; - }, "relativePosition") - }; - fn$4.modelPosition = fn$4.point = fn$4.position; - fn$4.modelPositions = fn$4.points = fn$4.positions; - fn$4.renderedPoint = fn$4.renderedPosition; - fn$4.relativePoint = fn$4.relativePosition; - position2 = elesfn$c; - fn$3 = elesfn$b = {}; - elesfn$b.renderedBoundingBox = function(options3) { - var bb = this.boundingBox(options3); - var cy = this.cy(); - var zoom2 = cy.zoom(); - var pan2 = cy.pan(); - var x1 = bb.x1 * zoom2 + pan2.x; - var x22 = bb.x2 * zoom2 + pan2.x; - var y1 = bb.y1 * zoom2 + pan2.y; - var y22 = bb.y2 * zoom2 + pan2.y; - return { - x1, - x2: x22, - y1, - y2: y22, - w: x22 - x1, - h: y22 - y1 - }; - }; - elesfn$b.dirtyCompoundBoundsCache = function() { - var silent = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; - var cy = this.cy(); - if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { - return this; + const isNextTokenWhatIsExpected = this.tokenMatcher(this.LA(2), expectedTokType); + return isNextTokenWhatIsExpected; } - this.forEachUp(function(ele) { - if (ele.isParent()) { - var _p = ele._private; - _p.compoundBoundsClean = false; - _p.bbCache = null; - if (!silent) { - ele.emitAndNotify("bounds"); + isInCurrentRuleReSyncSet(tokenTypeIdx) { + const followKey = this.getCurrFollowKey(); + const currentRuleReSyncSet = this.getFollowSetFromFollowKey(followKey); + return includes_default(currentRuleReSyncSet, tokenTypeIdx); + } + findReSyncTokenType() { + const allPossibleReSyncTokTypes = this.flattenFollowSet(); + let nextToken = this.LA(1); + let k2 = 2; + while (true) { + const foundMatch = find_default2(allPossibleReSyncTokTypes, (resyncTokType) => { + const canMatch = tokenMatcher(nextToken, resyncTokType); + return canMatch; + }); + if (foundMatch !== void 0) { + return foundMatch; } + nextToken = this.LA(k2); + k2++; } - }); - return this; - }; - elesfn$b.updateCompoundBounds = function() { - var force = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; - var cy = this.cy(); - if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { - return this; - } - if (!force && cy.batching()) { - return this; } - function update2(parent4) { - if (!parent4.isParent()) { - return; + getCurrFollowKey() { + if (this.RULE_STACK.length === 1) { + return EOF_FOLLOW_KEY; } - var _p2 = parent4._private; - var children2 = parent4.children(); - var includeLabels = parent4.pstyle("compound-sizing-wrt-labels").value === "include"; - var min9 = { - width: { - val: parent4.pstyle("min-width").pfValue, - left: parent4.pstyle("min-width-bias-left"), - right: parent4.pstyle("min-width-bias-right") - }, - height: { - val: parent4.pstyle("min-height").pfValue, - top: parent4.pstyle("min-height-bias-top"), - bottom: parent4.pstyle("min-height-bias-bottom") - } + const currRuleShortName = this.getLastExplicitRuleShortName(); + const currRuleIdx = this.getLastExplicitRuleOccurrenceIndex(); + const prevRuleShortName = this.getPreviousExplicitRuleShortName(); + return { + ruleName: this.shortRuleNameToFullName(currRuleShortName), + idxInCallingRule: currRuleIdx, + inRule: this.shortRuleNameToFullName(prevRuleShortName) }; - var bb = children2.boundingBox({ - includeLabels, - includeOverlays: false, - // updating the compound bounds happens outside of the regular - // cache cycle (i.e. before fired events) - useCache: false - }); - var pos = _p2.position; - if (bb.w === 0 || bb.h === 0) { - bb = { - w: parent4.pstyle("width").pfValue, - h: parent4.pstyle("height").pfValue - }; - bb.x1 = pos.x - bb.w / 2; - bb.x2 = pos.x + bb.w / 2; - bb.y1 = pos.y - bb.h / 2; - bb.y2 = pos.y + bb.h / 2; - } - function computeBiasValues(propDiff, propBias, propBiasComplement) { - var biasDiff = 0; - var biasComplementDiff = 0; - var biasTotal = propBias + propBiasComplement; - if (propDiff > 0 && biasTotal > 0) { - biasDiff = propBias / biasTotal * propDiff; - biasComplementDiff = propBiasComplement / biasTotal * propDiff; + } + buildFullFollowKeyStack() { + const explicitRuleStack = this.RULE_STACK; + const explicitOccurrenceStack = this.RULE_OCCURRENCE_STACK; + return map_default(explicitRuleStack, (ruleName, idx) => { + if (idx === 0) { + return EOF_FOLLOW_KEY; } return { - biasDiff, - biasComplementDiff + ruleName: this.shortRuleNameToFullName(ruleName), + idxInCallingRule: explicitOccurrenceStack[idx], + inRule: this.shortRuleNameToFullName(explicitRuleStack[idx - 1]) }; + }); + } + flattenFollowSet() { + const followStack = map_default(this.buildFullFollowKeyStack(), (currKey) => { + return this.getFollowSetFromFollowKey(currKey); + }); + return flatten_default(followStack); + } + getFollowSetFromFollowKey(followKey) { + if (followKey === EOF_FOLLOW_KEY) { + return [EOF]; } - __name(computeBiasValues, "computeBiasValues"); - function computePaddingValues(width3, height2, paddingObject, relativeTo) { - if (paddingObject.units === "%") { - switch (relativeTo) { - case "width": - return width3 > 0 ? paddingObject.pfValue * width3 : 0; - case "height": - return height2 > 0 ? paddingObject.pfValue * height2 : 0; - case "average": - return width3 > 0 && height2 > 0 ? paddingObject.pfValue * (width3 + height2) / 2 : 0; - case "min": - return width3 > 0 && height2 > 0 ? width3 > height2 ? paddingObject.pfValue * height2 : paddingObject.pfValue * width3 : 0; - case "max": - return width3 > 0 && height2 > 0 ? width3 > height2 ? paddingObject.pfValue * width3 : paddingObject.pfValue * height2 : 0; - default: - return 0; - } - } else if (paddingObject.units === "px") { - return paddingObject.pfValue; - } else { - return 0; - } - } - __name(computePaddingValues, "computePaddingValues"); - var leftVal = min9.width.left.value; - if (min9.width.left.units === "px" && min9.width.val > 0) { - leftVal = leftVal * 100 / min9.width.val; - } - var rightVal = min9.width.right.value; - if (min9.width.right.units === "px" && min9.width.val > 0) { - rightVal = rightVal * 100 / min9.width.val; - } - var topVal = min9.height.top.value; - if (min9.height.top.units === "px" && min9.height.val > 0) { - topVal = topVal * 100 / min9.height.val; - } - var bottomVal = min9.height.bottom.value; - if (min9.height.bottom.units === "px" && min9.height.val > 0) { - bottomVal = bottomVal * 100 / min9.height.val; + const followName = followKey.ruleName + followKey.idxInCallingRule + IN + followKey.inRule; + return this.resyncFollows[followName]; + } + // It does not make any sense to include a virtual EOF token in the list of resynced tokens + // as EOF does not really exist and thus does not contain any useful information (line/column numbers) + addToResyncTokens(token2, resyncTokens) { + if (!this.tokenMatcher(token2, EOF)) { + resyncTokens.push(token2); } - var widthBiasDiffs = computeBiasValues(min9.width.val - bb.w, leftVal, rightVal); - var diffLeft = widthBiasDiffs.biasDiff; - var diffRight = widthBiasDiffs.biasComplementDiff; - var heightBiasDiffs = computeBiasValues(min9.height.val - bb.h, topVal, bottomVal); - var diffTop = heightBiasDiffs.biasDiff; - var diffBottom = heightBiasDiffs.biasComplementDiff; - _p2.autoPadding = computePaddingValues(bb.w, bb.h, parent4.pstyle("padding"), parent4.pstyle("padding-relative-to").value); - _p2.autoWidth = Math.max(bb.w, min9.width.val); - pos.x = (-diffLeft + bb.x1 + bb.x2 + diffRight) / 2; - _p2.autoHeight = Math.max(bb.h, min9.height.val); - pos.y = (-diffTop + bb.y1 + bb.y2 + diffBottom) / 2; + return resyncTokens; } - __name(update2, "update"); - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - var _p = ele._private; - if (!_p.compoundBoundsClean || force) { - update2(ele); - if (!cy.batching()) { - _p.compoundBoundsClean = true; - } + reSyncTo(tokType) { + const resyncedTokens = []; + let nextTok = this.LA(1); + while (this.tokenMatcher(nextTok, tokType) === false) { + nextTok = this.SKIP_TOKEN(); + this.addToResyncTokens(nextTok, resyncedTokens); } + return dropRight_default(resyncedTokens); } - return this; - }; - noninf = /* @__PURE__ */ __name(function noninf2(x5) { - if (x5 === Infinity || x5 === -Infinity) { - return 0; + attemptInRepetitionRecovery(prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) { } - return x5; - }, "noninf"); - updateBounds = /* @__PURE__ */ __name(function updateBounds2(b2, x1, y1, x22, y22) { - if (x22 - x1 === 0 || y22 - y1 === 0) { - return; + getCurrentGrammarPath(tokType, tokIdxInRule) { + const pathRuleStack = this.getHumanReadableRuleStack(); + const pathOccurrenceStack = clone_default2(this.RULE_OCCURRENCE_STACK); + const grammarPath = { + ruleStack: pathRuleStack, + occurrenceStack: pathOccurrenceStack, + lastTok: tokType, + lastTokOccurrence: tokIdxInRule + }; + return grammarPath; } - if (x1 == null || y1 == null || x22 == null || y22 == null) { - return; + getHumanReadableRuleStack() { + return map_default(this.RULE_STACK, (currShortName) => this.shortRuleNameToFullName(currShortName)); } - b2.x1 = x1 < b2.x1 ? x1 : b2.x1; - b2.x2 = x22 > b2.x2 ? x22 : b2.x2; - b2.y1 = y1 < b2.y1 ? y1 : b2.y1; - b2.y2 = y22 > b2.y2 ? y22 : b2.y2; - b2.w = b2.x2 - b2.x1; - b2.h = b2.y2 - b2.y1; - }, "updateBounds"); - updateBoundsFromBox = /* @__PURE__ */ __name(function updateBoundsFromBox2(b2, b22) { - if (b22 == null) { - return b2; + }; + __name(attemptInRepetitionRecovery, "attemptInRepetitionRecovery"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/keys.js + function getKeyForAutomaticLookahead(ruleIdx, dslMethodIdx, occurrence) { + return occurrence | dslMethodIdx | ruleIdx; + } + var BITS_FOR_METHOD_TYPE, BITS_FOR_OCCURRENCE_IDX, BITS_FOR_ALT_IDX, OR_IDX, OPTION_IDX, MANY_IDX, AT_LEAST_ONE_IDX, MANY_SEP_IDX, AT_LEAST_ONE_SEP_IDX, BITS_START_FOR_ALT_IDX; + var init_keys2 = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/keys.js"() { + "use strict"; + BITS_FOR_METHOD_TYPE = 4; + BITS_FOR_OCCURRENCE_IDX = 8; + BITS_FOR_ALT_IDX = 8; + OR_IDX = 1 << BITS_FOR_OCCURRENCE_IDX; + OPTION_IDX = 2 << BITS_FOR_OCCURRENCE_IDX; + MANY_IDX = 3 << BITS_FOR_OCCURRENCE_IDX; + AT_LEAST_ONE_IDX = 4 << BITS_FOR_OCCURRENCE_IDX; + MANY_SEP_IDX = 5 << BITS_FOR_OCCURRENCE_IDX; + AT_LEAST_ONE_SEP_IDX = 6 << BITS_FOR_OCCURRENCE_IDX; + __name(getKeyForAutomaticLookahead, "getKeyForAutomaticLookahead"); + BITS_START_FOR_ALT_IDX = 32 - BITS_FOR_ALT_IDX; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/llk_lookahead.js + var LLkLookaheadStrategy; + var init_llk_lookahead = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/grammar/llk_lookahead.js"() { + "use strict"; + init_lodash(); + init_errors_public(); + init_parser(); + init_checks(); + init_lookahead(); + LLkLookaheadStrategy = class { + static { + __name(this, "LLkLookaheadStrategy"); } - return updateBounds(b2, b22.x1, b22.y1, b22.x2, b22.y2); - }, "updateBoundsFromBox"); - prefixedProperty = /* @__PURE__ */ __name(function prefixedProperty2(obj, field, prefix) { - return getPrefixedProperty(obj, field, prefix); - }, "prefixedProperty"); - updateBoundsFromArrow = /* @__PURE__ */ __name(function updateBoundsFromArrow2(bounds4, ele, prefix) { - if (ele.cy().headless()) { - return; + constructor(options2) { + var _a; + this.maxLookahead = (_a = options2 === null || options2 === void 0 ? void 0 : options2.maxLookahead) !== null && _a !== void 0 ? _a : DEFAULT_PARSER_CONFIG.maxLookahead; } - var _p = ele._private; - var rstyle = _p.rstyle; - var halfArW = rstyle.arrowWidth / 2; - var arrowType = ele.pstyle(prefix + "-arrow-shape").value; - var x5; - var y5; - if (arrowType !== "none") { - if (prefix === "source") { - x5 = rstyle.srcX; - y5 = rstyle.srcY; - } else if (prefix === "target") { - x5 = rstyle.tgtX; - y5 = rstyle.tgtY; - } else { - x5 = rstyle.midX; - y5 = rstyle.midY; + validate(options2) { + const leftRecursionErrors = this.validateNoLeftRecursion(options2.rules); + if (isEmpty_default(leftRecursionErrors)) { + const emptyAltErrors = this.validateEmptyOrAlternatives(options2.rules); + const ambiguousAltsErrors = this.validateAmbiguousAlternationAlternatives(options2.rules, this.maxLookahead); + const emptyRepetitionErrors = this.validateSomeNonEmptyLookaheadPath(options2.rules, this.maxLookahead); + const allErrors = [ + ...leftRecursionErrors, + ...emptyAltErrors, + ...ambiguousAltsErrors, + ...emptyRepetitionErrors + ]; + return allErrors; } - var bbs = _p.arrowBounds = _p.arrowBounds || {}; - var bb = bbs[prefix] = bbs[prefix] || {}; - bb.x1 = x5 - halfArW; - bb.y1 = y5 - halfArW; - bb.x2 = x5 + halfArW; - bb.y2 = y5 + halfArW; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - expandBoundingBox(bb, 1); - updateBounds(bounds4, bb.x1, bb.y1, bb.x2, bb.y2); + return leftRecursionErrors; } - }, "updateBoundsFromArrow"); - updateBoundsFromLabel = /* @__PURE__ */ __name(function updateBoundsFromLabel2(bounds4, ele, prefix) { - if (ele.cy().headless()) { - return; + validateNoLeftRecursion(rules) { + return flatMap_default(rules, (currTopRule) => validateNoLeftRecursion(currTopRule, currTopRule, defaultGrammarValidatorErrorProvider)); } - var prefixDash; - if (prefix) { - prefixDash = prefix + "-"; - } else { - prefixDash = ""; + validateEmptyOrAlternatives(rules) { + return flatMap_default(rules, (currTopRule) => validateEmptyOrAlternative(currTopRule, defaultGrammarValidatorErrorProvider)); } - var _p = ele._private; - var rstyle = _p.rstyle; - var label = ele.pstyle(prefixDash + "label").strValue; - if (label) { - var halign = ele.pstyle("text-halign"); - var valign = ele.pstyle("text-valign"); - var labelWidth = prefixedProperty(rstyle, "labelWidth", prefix); - var labelHeight = prefixedProperty(rstyle, "labelHeight", prefix); - var labelX = prefixedProperty(rstyle, "labelX", prefix); - var labelY = prefixedProperty(rstyle, "labelY", prefix); - var marginX = ele.pstyle(prefixDash + "text-margin-x").pfValue; - var marginY = ele.pstyle(prefixDash + "text-margin-y").pfValue; - var isEdge2 = ele.isEdge(); - var rotation = ele.pstyle(prefixDash + "text-rotation"); - var outlineWidth = ele.pstyle("text-outline-width").pfValue; - var borderWidth = ele.pstyle("text-border-width").pfValue; - var halfBorderWidth = borderWidth / 2; - var padding2 = ele.pstyle("text-background-padding").pfValue; - var marginOfError = 2; - var lh = labelHeight; - var lw = labelWidth; - var lw_2 = lw / 2; - var lh_2 = lh / 2; - var lx1, lx2, ly1, ly2; - if (isEdge2) { - lx1 = labelX - lw_2; - lx2 = labelX + lw_2; - ly1 = labelY - lh_2; - ly2 = labelY + lh_2; - } else { - switch (halign.value) { - case "left": - lx1 = labelX - lw; - lx2 = labelX; - break; - case "center": - lx1 = labelX - lw_2; - lx2 = labelX + lw_2; - break; - case "right": - lx1 = labelX; - lx2 = labelX + lw; - break; - } - switch (valign.value) { - case "top": - ly1 = labelY - lh; - ly2 = labelY; - break; - case "center": - ly1 = labelY - lh_2; - ly2 = labelY + lh_2; - break; - case "bottom": - ly1 = labelY; - ly2 = labelY + lh; - break; - } - } - var leftPad = marginX - Math.max(outlineWidth, halfBorderWidth) - padding2 - marginOfError; - var rightPad = marginX + Math.max(outlineWidth, halfBorderWidth) + padding2 + marginOfError; - var topPad = marginY - Math.max(outlineWidth, halfBorderWidth) - padding2 - marginOfError; - var botPad = marginY + Math.max(outlineWidth, halfBorderWidth) + padding2 + marginOfError; - lx1 += leftPad; - lx2 += rightPad; - ly1 += topPad; - ly2 += botPad; - var bbPrefix = prefix || "main"; - var bbs = _p.labelBounds; - var bb = bbs[bbPrefix] = bbs[bbPrefix] || {}; - bb.x1 = lx1; - bb.y1 = ly1; - bb.x2 = lx2; - bb.y2 = ly2; - bb.w = lx2 - lx1; - bb.h = ly2 - ly1; - bb.leftPad = leftPad; - bb.rightPad = rightPad; - bb.topPad = topPad; - bb.botPad = botPad; - var isAutorotate = isEdge2 && rotation.strValue === "autorotate"; - var isPfValue = rotation.pfValue != null && rotation.pfValue !== 0; - if (isAutorotate || isPfValue) { - var theta = isAutorotate ? prefixedProperty(_p.rstyle, "labelAngle", prefix) : rotation.pfValue; - var cos3 = Math.cos(theta); - var sin3 = Math.sin(theta); - var xo = (lx1 + lx2) / 2; - var yo = (ly1 + ly2) / 2; - if (!isEdge2) { - switch (halign.value) { - case "left": - xo = lx2; - break; - case "right": - xo = lx1; - break; - } - switch (valign.value) { - case "top": - yo = ly2; - break; - case "bottom": - yo = ly1; - break; - } - } - var rotate2 = /* @__PURE__ */ __name(function rotate3(x5, y5) { - x5 = x5 - xo; - y5 = y5 - yo; - return { - x: x5 * cos3 - y5 * sin3 + xo, - y: x5 * sin3 + y5 * cos3 + yo - }; - }, "rotate"); - var px1y1 = rotate2(lx1, ly1); - var px1y2 = rotate2(lx1, ly2); - var px2y1 = rotate2(lx2, ly1); - var px2y2 = rotate2(lx2, ly2); - lx1 = Math.min(px1y1.x, px1y2.x, px2y1.x, px2y2.x); - lx2 = Math.max(px1y1.x, px1y2.x, px2y1.x, px2y2.x); - ly1 = Math.min(px1y1.y, px1y2.y, px2y1.y, px2y2.y); - ly2 = Math.max(px1y1.y, px1y2.y, px2y1.y, px2y2.y); - } - var bbPrefixRot = bbPrefix + "Rot"; - var bbRot = bbs[bbPrefixRot] = bbs[bbPrefixRot] || {}; - bbRot.x1 = lx1; - bbRot.y1 = ly1; - bbRot.x2 = lx2; - bbRot.y2 = ly2; - bbRot.w = lx2 - lx1; - bbRot.h = ly2 - ly1; - updateBounds(bounds4, lx1, ly1, lx2, ly2); - updateBounds(_p.labelBounds.all, lx1, ly1, lx2, ly2); + validateAmbiguousAlternationAlternatives(rules, maxLookahead) { + return flatMap_default(rules, (currTopRule) => validateAmbiguousAlternationAlternatives(currTopRule, maxLookahead, defaultGrammarValidatorErrorProvider)); } - return bounds4; - }, "updateBoundsFromLabel"); - updateBoundsFromOutline = /* @__PURE__ */ __name(function updateBoundsFromOutline2(bounds4, ele) { - if (ele.cy().headless()) { - return; + validateSomeNonEmptyLookaheadPath(rules, maxLookahead) { + return validateSomeNonEmptyLookaheadPath(rules, maxLookahead, defaultGrammarValidatorErrorProvider); } - var outlineOpacity = ele.pstyle("outline-opacity").value; - var outlineWidth = ele.pstyle("outline-width").value; - if (outlineOpacity > 0 && outlineWidth > 0) { - var outlineOffset = ele.pstyle("outline-offset").value; - var nodeShape = ele.pstyle("shape").value; - var outlineSize = outlineWidth + outlineOffset; - var scaleX = (bounds4.w + outlineSize * 2) / bounds4.w; - var scaleY = (bounds4.h + outlineSize * 2) / bounds4.h; - var xOffset = 0; - var yOffset = 0; - if (["diamond", "pentagon", "round-triangle"].includes(nodeShape)) { - scaleX = (bounds4.w + outlineSize * 2.4) / bounds4.w; - yOffset = -outlineSize / 3.6; - } else if (["concave-hexagon", "rhomboid", "right-rhomboid"].includes(nodeShape)) { - scaleX = (bounds4.w + outlineSize * 2.4) / bounds4.w; - } else if (nodeShape === "star") { - scaleX = (bounds4.w + outlineSize * 2.8) / bounds4.w; - scaleY = (bounds4.h + outlineSize * 2.6) / bounds4.h; - yOffset = -outlineSize / 3.8; - } else if (nodeShape === "triangle") { - scaleX = (bounds4.w + outlineSize * 2.8) / bounds4.w; - scaleY = (bounds4.h + outlineSize * 2.4) / bounds4.h; - yOffset = -outlineSize / 1.4; - } else if (nodeShape === "vee") { - scaleX = (bounds4.w + outlineSize * 4.4) / bounds4.w; - scaleY = (bounds4.h + outlineSize * 3.8) / bounds4.h; - yOffset = -outlineSize * 0.5; - } - var hDelta = bounds4.h * scaleY - bounds4.h; - var wDelta = bounds4.w * scaleX - bounds4.w; - expandBoundingBoxSides(bounds4, [Math.ceil(hDelta / 2), Math.ceil(wDelta / 2)]); - if (xOffset != 0 || yOffset !== 0) { - var oBounds = shiftBoundingBox(bounds4, xOffset, yOffset); - updateBoundingBox(bounds4, oBounds); - } + buildLookaheadForAlternation(options2) { + return buildLookaheadFuncForOr(options2.prodOccurrence, options2.rule, options2.maxLookahead, options2.hasPredicates, options2.dynamicTokensEnabled, buildAlternativesLookAheadFunc); } - }, "updateBoundsFromOutline"); - boundingBoxImpl = /* @__PURE__ */ __name(function boundingBoxImpl2(ele, options3) { - var cy = ele._private.cy; - var styleEnabled2 = cy.styleEnabled(); - var headless2 = cy.headless(); - var bounds4 = makeBoundingBox(); - var _p = ele._private; - var isNode2 = ele.isNode(); - var isEdge2 = ele.isEdge(); - var ex1, ex2, ey1, ey2; - var x5, y5; - var rstyle = _p.rstyle; - var manualExpansion = isNode2 && styleEnabled2 ? ele.pstyle("bounds-expansion").pfValue : [0]; - var isDisplayed = /* @__PURE__ */ __name(function isDisplayed2(ele2) { - return ele2.pstyle("display").value !== "none"; - }, "isDisplayed"); - var displayed = !styleEnabled2 || isDisplayed(ele) && (!isEdge2 || isDisplayed(ele.source()) && isDisplayed(ele.target())); - if (displayed) { - var overlayOpacity = 0; - var overlayPadding = 0; - if (styleEnabled2 && options3.includeOverlays) { - overlayOpacity = ele.pstyle("overlay-opacity").value; - if (overlayOpacity !== 0) { - overlayPadding = ele.pstyle("overlay-padding").value; - } - } - var underlayOpacity = 0; - var underlayPadding = 0; - if (styleEnabled2 && options3.includeUnderlays) { - underlayOpacity = ele.pstyle("underlay-opacity").value; - if (underlayOpacity !== 0) { - underlayPadding = ele.pstyle("underlay-padding").value; - } - } - var padding2 = Math.max(overlayPadding, underlayPadding); - var w3 = 0; - var wHalf = 0; - if (styleEnabled2) { - w3 = ele.pstyle("width").pfValue; - wHalf = w3 / 2; - } - if (isNode2 && options3.includeNodes) { - var pos = ele.position(); - x5 = pos.x; - y5 = pos.y; - var _w = ele.outerWidth(); - var halfW = _w / 2; - var h2 = ele.outerHeight(); - var halfH = h2 / 2; - ex1 = x5 - halfW; - ex2 = x5 + halfW; - ey1 = y5 - halfH; - ey2 = y5 + halfH; - updateBounds(bounds4, ex1, ey1, ex2, ey2); - if (styleEnabled2 && options3.includeOutlines) { - updateBoundsFromOutline(bounds4, ele); - } - } else if (isEdge2 && options3.includeEdges) { - if (styleEnabled2 && !headless2) { - var curveStyle = ele.pstyle("curve-style").strValue; - ex1 = Math.min(rstyle.srcX, rstyle.midX, rstyle.tgtX); - ex2 = Math.max(rstyle.srcX, rstyle.midX, rstyle.tgtX); - ey1 = Math.min(rstyle.srcY, rstyle.midY, rstyle.tgtY); - ey2 = Math.max(rstyle.srcY, rstyle.midY, rstyle.tgtY); - ex1 -= wHalf; - ex2 += wHalf; - ey1 -= wHalf; - ey2 += wHalf; - updateBounds(bounds4, ex1, ey1, ex2, ey2); - if (curveStyle === "haystack") { - var hpts = rstyle.haystackPts; - if (hpts && hpts.length === 2) { - ex1 = hpts[0].x; - ey1 = hpts[0].y; - ex2 = hpts[1].x; - ey2 = hpts[1].y; - if (ex1 > ex2) { - var temp = ex1; - ex1 = ex2; - ex2 = temp; - } - if (ey1 > ey2) { - var _temp = ey1; - ey1 = ey2; - ey2 = _temp; - } - updateBounds(bounds4, ex1 - wHalf, ey1 - wHalf, ex2 + wHalf, ey2 + wHalf); - } - } else if (curveStyle === "bezier" || curveStyle === "unbundled-bezier" || curveStyle.endsWith("segments") || curveStyle.endsWith("taxi")) { - var pts2; - switch (curveStyle) { - case "bezier": - case "unbundled-bezier": - pts2 = rstyle.bezierPts; - break; - case "segments": - case "taxi": - case "round-segments": - case "round-taxi": - pts2 = rstyle.linePts; - break; - } - if (pts2 != null) { - for (var j2 = 0; j2 < pts2.length; j2++) { - var pt = pts2[j2]; - ex1 = pt.x - wHalf; - ex2 = pt.x + wHalf; - ey1 = pt.y - wHalf; - ey2 = pt.y + wHalf; - updateBounds(bounds4, ex1, ey1, ex2, ey2); - } - } - } - } else { - var n1 = ele.source(); - var n1pos = n1.position(); - var n2 = ele.target(); - var n2pos = n2.position(); - ex1 = n1pos.x; - ex2 = n2pos.x; - ey1 = n1pos.y; - ey2 = n2pos.y; - if (ex1 > ex2) { - var _temp2 = ex1; - ex1 = ex2; - ex2 = _temp2; - } - if (ey1 > ey2) { - var _temp3 = ey1; - ey1 = ey2; - ey2 = _temp3; - } - ex1 -= wHalf; - ex2 += wHalf; - ey1 -= wHalf; - ey2 += wHalf; - updateBounds(bounds4, ex1, ey1, ex2, ey2); - } - } - if (styleEnabled2 && options3.includeEdges && isEdge2) { - updateBoundsFromArrow(bounds4, ele, "mid-source"); - updateBoundsFromArrow(bounds4, ele, "mid-target"); - updateBoundsFromArrow(bounds4, ele, "source"); - updateBoundsFromArrow(bounds4, ele, "target"); - } - if (styleEnabled2) { - var ghost = ele.pstyle("ghost").value === "yes"; - if (ghost) { - var gx = ele.pstyle("ghost-offset-x").pfValue; - var gy = ele.pstyle("ghost-offset-y").pfValue; - updateBounds(bounds4, bounds4.x1 + gx, bounds4.y1 + gy, bounds4.x2 + gx, bounds4.y2 + gy); - } - } - var bbBody = _p.bodyBounds = _p.bodyBounds || {}; - assignBoundingBox(bbBody, bounds4); - expandBoundingBoxSides(bbBody, manualExpansion); - expandBoundingBox(bbBody, 1); - if (styleEnabled2) { - ex1 = bounds4.x1; - ex2 = bounds4.x2; - ey1 = bounds4.y1; - ey2 = bounds4.y2; - updateBounds(bounds4, ex1 - padding2, ey1 - padding2, ex2 + padding2, ey2 + padding2); - } - var bbOverlay = _p.overlayBounds = _p.overlayBounds || {}; - assignBoundingBox(bbOverlay, bounds4); - expandBoundingBoxSides(bbOverlay, manualExpansion); - expandBoundingBox(bbOverlay, 1); - var bbLabels = _p.labelBounds = _p.labelBounds || {}; - if (bbLabels.all != null) { - clearBoundingBox(bbLabels.all); - } else { - bbLabels.all = makeBoundingBox(); - } - if (styleEnabled2 && options3.includeLabels) { - if (options3.includeMainLabels) { - updateBoundsFromLabel(bounds4, ele, null); - } - if (isEdge2) { - if (options3.includeSourceLabels) { - updateBoundsFromLabel(bounds4, ele, "source"); - } - if (options3.includeTargetLabels) { - updateBoundsFromLabel(bounds4, ele, "target"); - } - } - } + buildLookaheadForOptional(options2) { + return buildLookaheadFuncForOptionalProd(options2.prodOccurrence, options2.rule, options2.maxLookahead, options2.dynamicTokensEnabled, getProdType(options2.prodType), buildSingleAlternativeLookaheadFunction); } - bounds4.x1 = noninf(bounds4.x1); - bounds4.y1 = noninf(bounds4.y1); - bounds4.x2 = noninf(bounds4.x2); - bounds4.y2 = noninf(bounds4.y2); - bounds4.w = noninf(bounds4.x2 - bounds4.x1); - bounds4.h = noninf(bounds4.y2 - bounds4.y1); - if (bounds4.w > 0 && bounds4.h > 0 && displayed) { - expandBoundingBoxSides(bounds4, manualExpansion); - expandBoundingBox(bounds4, 1); + }; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js + function collectMethods(rule) { + collectorVisitor.reset(); + rule.accept(collectorVisitor); + const dslMethods = collectorVisitor.dslMethods; + collectorVisitor.reset(); + return dslMethods; + } + var LooksAhead, DslMethodsCollectorVisitor, collectorVisitor; + var init_looksahead = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js"() { + "use strict"; + init_lodash(); + init_parser(); + init_keys2(); + init_api3(); + init_llk_lookahead(); + LooksAhead = class { + static { + __name(this, "LooksAhead"); } - return bounds4; - }, "boundingBoxImpl"); - getKey = /* @__PURE__ */ __name(function getKey2(opts) { - var i2 = 0; - var tf = /* @__PURE__ */ __name(function tf2(val) { - return (val ? 1 : 0) << i2++; - }, "tf"); - var key = 0; - key += tf(opts.incudeNodes); - key += tf(opts.includeEdges); - key += tf(opts.includeLabels); - key += tf(opts.includeMainLabels); - key += tf(opts.includeSourceLabels); - key += tf(opts.includeTargetLabels); - key += tf(opts.includeOverlays); - key += tf(opts.includeOutlines); - return key; - }, "getKey"); - getBoundingBoxPosKey = /* @__PURE__ */ __name(function getBoundingBoxPosKey2(ele) { - if (ele.isEdge()) { - var p1 = ele.source().position(); - var p22 = ele.target().position(); - var r2 = /* @__PURE__ */ __name(function r3(x5) { - return Math.round(x5); - }, "r"); - return hashIntsArray([r2(p1.x), r2(p1.y), r2(p22.x), r2(p22.y)]); - } else { - return 0; + initLooksAhead(config5) { + this.dynamicTokensEnabled = has_default(config5, "dynamicTokensEnabled") ? config5.dynamicTokensEnabled : DEFAULT_PARSER_CONFIG.dynamicTokensEnabled; + this.maxLookahead = has_default(config5, "maxLookahead") ? config5.maxLookahead : DEFAULT_PARSER_CONFIG.maxLookahead; + this.lookaheadStrategy = has_default(config5, "lookaheadStrategy") ? config5.lookaheadStrategy : new LLkLookaheadStrategy({ maxLookahead: this.maxLookahead }); + this.lookAheadFuncsCache = /* @__PURE__ */ new Map(); } - }, "getBoundingBoxPosKey"); - cachedBoundingBoxImpl = /* @__PURE__ */ __name(function cachedBoundingBoxImpl2(ele, opts) { - var _p = ele._private; - var bb; - var isEdge2 = ele.isEdge(); - var key = opts == null ? defBbOptsKey : getKey(opts); - var usingDefOpts = key === defBbOptsKey; - var currPosKey = getBoundingBoxPosKey(ele); - var isPosKeySame = _p.bbCachePosKey === currPosKey; - var useCache = opts.useCache && isPosKeySame; - var isDirty = /* @__PURE__ */ __name(function isDirty2(ele2) { - return ele2._private.bbCache == null || ele2._private.styleDirty; - }, "isDirty"); - var needRecalc = !useCache || isDirty(ele) || isEdge2 && (isDirty(ele.source()) || isDirty(ele.target())); - if (needRecalc) { - if (!isPosKeySame) { - ele.recalculateRenderedStyle(useCache); - } - bb = boundingBoxImpl(ele, defBbOpts); - _p.bbCache = bb; - _p.bbCachePosKey = currPosKey; - } else { - bb = _p.bbCache; + preComputeLookaheadFunctions(rules) { + forEach_default(rules, (currRule) => { + this.TRACE_INIT(`${currRule.name} Rule Lookahead`, () => { + const { alternation: alternation2, repetition: repetition2, option: option2, repetitionMandatory: repetitionMandatory2, repetitionMandatoryWithSeparator, repetitionWithSeparator } = collectMethods(currRule); + forEach_default(alternation2, (currProd) => { + const prodIdx = currProd.idx === 0 ? "" : currProd.idx; + this.TRACE_INIT(`${getProductionDslName(currProd)}${prodIdx}`, () => { + const laFunc = this.lookaheadStrategy.buildLookaheadForAlternation({ + prodOccurrence: currProd.idx, + rule: currRule, + maxLookahead: currProd.maxLookahead || this.maxLookahead, + hasPredicates: currProd.hasPredicates, + dynamicTokensEnabled: this.dynamicTokensEnabled + }); + const key = getKeyForAutomaticLookahead(this.fullRuleNameToShort[currRule.name], OR_IDX, currProd.idx); + this.setLaFuncCache(key, laFunc); + }); + }); + forEach_default(repetition2, (currProd) => { + this.computeLookaheadFunc(currRule, currProd.idx, MANY_IDX, "Repetition", currProd.maxLookahead, getProductionDslName(currProd)); + }); + forEach_default(option2, (currProd) => { + this.computeLookaheadFunc(currRule, currProd.idx, OPTION_IDX, "Option", currProd.maxLookahead, getProductionDslName(currProd)); + }); + forEach_default(repetitionMandatory2, (currProd) => { + this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_IDX, "RepetitionMandatory", currProd.maxLookahead, getProductionDslName(currProd)); + }); + forEach_default(repetitionMandatoryWithSeparator, (currProd) => { + this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_SEP_IDX, "RepetitionMandatoryWithSeparator", currProd.maxLookahead, getProductionDslName(currProd)); + }); + forEach_default(repetitionWithSeparator, (currProd) => { + this.computeLookaheadFunc(currRule, currProd.idx, MANY_SEP_IDX, "RepetitionWithSeparator", currProd.maxLookahead, getProductionDslName(currProd)); + }); + }); + }); } - if (!usingDefOpts) { - var isNode2 = ele.isNode(); - bb = makeBoundingBox(); - if (opts.includeNodes && isNode2 || opts.includeEdges && !isNode2) { - if (opts.includeOverlays) { - updateBoundsFromBox(bb, _p.overlayBounds); - } else { - updateBoundsFromBox(bb, _p.bodyBounds); - } - } - if (opts.includeLabels) { - if (opts.includeMainLabels && (!isEdge2 || opts.includeSourceLabels && opts.includeTargetLabels)) { - updateBoundsFromBox(bb, _p.labelBounds.all); - } else { - if (opts.includeMainLabels) { - updateBoundsFromBox(bb, _p.labelBounds.mainRot); - } - if (opts.includeSourceLabels) { - updateBoundsFromBox(bb, _p.labelBounds.sourceRot); - } - if (opts.includeTargetLabels) { - updateBoundsFromBox(bb, _p.labelBounds.targetRot); - } - } - } - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; + computeLookaheadFunc(rule, prodOccurrence, prodKey, prodType, prodMaxLookahead, dslMethodName) { + this.TRACE_INIT(`${dslMethodName}${prodOccurrence === 0 ? "" : prodOccurrence}`, () => { + const laFunc = this.lookaheadStrategy.buildLookaheadForOptional({ + prodOccurrence, + rule, + maxLookahead: prodMaxLookahead || this.maxLookahead, + dynamicTokensEnabled: this.dynamicTokensEnabled, + prodType + }); + const key = getKeyForAutomaticLookahead(this.fullRuleNameToShort[rule.name], prodKey, prodOccurrence); + this.setLaFuncCache(key, laFunc); + }); } - return bb; - }, "cachedBoundingBoxImpl"); - defBbOpts = { - includeNodes: true, - includeEdges: true, - includeLabels: true, - includeMainLabels: true, - includeSourceLabels: true, - includeTargetLabels: true, - includeOverlays: true, - includeUnderlays: true, - includeOutlines: true, - useCache: true - }; - defBbOptsKey = getKey(defBbOpts); - filledBbOpts = defaults$g(defBbOpts); - elesfn$b.boundingBox = function(options3) { - var bounds4; - if (this.length === 1 && this[0]._private.bbCache != null && !this[0]._private.styleDirty && (options3 === void 0 || options3.useCache === void 0 || options3.useCache === true)) { - if (options3 === void 0) { - options3 = defBbOpts; - } else { - options3 = filledBbOpts(options3); - } - bounds4 = cachedBoundingBoxImpl(this[0], options3); - } else { - bounds4 = makeBoundingBox(); - options3 = options3 || defBbOpts; - var opts = filledBbOpts(options3); - var eles = this; - var cy = eles.cy(); - var styleEnabled2 = cy.styleEnabled(); - if (styleEnabled2) { - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var _p = ele._private; - var currPosKey = getBoundingBoxPosKey(ele); - var isPosKeySame = _p.bbCachePosKey === currPosKey; - var useCache = opts.useCache && isPosKeySame && !_p.styleDirty; - ele.recalculateRenderedStyle(useCache); - } - } - this.updateCompoundBounds(!options3.useCache); - for (var _i = 0; _i < eles.length; _i++) { - var _ele = eles[_i]; - updateBoundsFromBox(bounds4, cachedBoundingBoxImpl(_ele, opts)); - } + // this actually returns a number, but it is always used as a string (object prop key) + getKeyForAutomaticLookahead(dslMethodIdx, occurrence) { + const currRuleShortName = this.getLastExplicitRuleShortName(); + return getKeyForAutomaticLookahead(currRuleShortName, dslMethodIdx, occurrence); + } + getLaFuncFromCache(key) { + return this.lookAheadFuncsCache.get(key); + } + /* istanbul ignore next */ + setLaFuncCache(key, value2) { + this.lookAheadFuncsCache.set(key, value2); } - bounds4.x1 = noninf(bounds4.x1); - bounds4.y1 = noninf(bounds4.y1); - bounds4.x2 = noninf(bounds4.x2); - bounds4.y2 = noninf(bounds4.y2); - bounds4.w = noninf(bounds4.x2 - bounds4.x1); - bounds4.h = noninf(bounds4.y2 - bounds4.y1); - return bounds4; }; - elesfn$b.dirtyBoundingBoxCache = function() { - for (var i2 = 0; i2 < this.length; i2++) { - var _p = this[i2]._private; - _p.bbCache = null; - _p.bbCachePosKey = null; - _p.bodyBounds = null; - _p.overlayBounds = null; - _p.labelBounds.all = null; - _p.labelBounds.source = null; - _p.labelBounds.target = null; - _p.labelBounds.main = null; - _p.labelBounds.sourceRot = null; - _p.labelBounds.targetRot = null; - _p.labelBounds.mainRot = null; - _p.arrowBounds.source = null; - _p.arrowBounds.target = null; - _p.arrowBounds["mid-source"] = null; - _p.arrowBounds["mid-target"] = null; + DslMethodsCollectorVisitor = class extends GAstVisitor { + static { + __name(this, "DslMethodsCollectorVisitor"); + } + constructor() { + super(...arguments); + this.dslMethods = { + option: [], + alternation: [], + repetition: [], + repetitionWithSeparator: [], + repetitionMandatory: [], + repetitionMandatoryWithSeparator: [] + }; + } + reset() { + this.dslMethods = { + option: [], + alternation: [], + repetition: [], + repetitionWithSeparator: [], + repetitionMandatory: [], + repetitionMandatoryWithSeparator: [] + }; + } + visitOption(option2) { + this.dslMethods.option.push(option2); + } + visitRepetitionWithSeparator(manySep) { + this.dslMethods.repetitionWithSeparator.push(manySep); + } + visitRepetitionMandatory(atLeastOne) { + this.dslMethods.repetitionMandatory.push(atLeastOne); + } + visitRepetitionMandatoryWithSeparator(atLeastOneSep) { + this.dslMethods.repetitionMandatoryWithSeparator.push(atLeastOneSep); + } + visitRepetition(many) { + this.dslMethods.repetition.push(many); + } + visitAlternation(or) { + this.dslMethods.alternation.push(or); } - this.emitAndNotify("bounds"); - return this; }; - elesfn$b.boundingBoxAt = function(fn3) { - var nodes6 = this.nodes(); - var cy = this.cy(); - var hasCompoundNodes2 = cy.hasCompoundNodes(); - var parents3 = cy.collection(); - if (hasCompoundNodes2) { - parents3 = nodes6.filter(function(node2) { - return node2.isParent(); - }); - nodes6 = nodes6.not(parents3); + collectorVisitor = new DslMethodsCollectorVisitor(); + __name(collectMethods, "collectMethods"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/cst/cst.js + function setNodeLocationOnlyOffset(currNodeLocation, newLocationInfo) { + if (isNaN(currNodeLocation.startOffset) === true) { + currNodeLocation.startOffset = newLocationInfo.startOffset; + currNodeLocation.endOffset = newLocationInfo.endOffset; + } else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) { + currNodeLocation.endOffset = newLocationInfo.endOffset; + } + } + function setNodeLocationFull(currNodeLocation, newLocationInfo) { + if (isNaN(currNodeLocation.startOffset) === true) { + currNodeLocation.startOffset = newLocationInfo.startOffset; + currNodeLocation.startColumn = newLocationInfo.startColumn; + currNodeLocation.startLine = newLocationInfo.startLine; + currNodeLocation.endOffset = newLocationInfo.endOffset; + currNodeLocation.endColumn = newLocationInfo.endColumn; + currNodeLocation.endLine = newLocationInfo.endLine; + } else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) { + currNodeLocation.endOffset = newLocationInfo.endOffset; + currNodeLocation.endColumn = newLocationInfo.endColumn; + currNodeLocation.endLine = newLocationInfo.endLine; + } + } + function addTerminalToCst(node2, token2, tokenTypeName) { + if (node2.children[tokenTypeName] === void 0) { + node2.children[tokenTypeName] = [token2]; + } else { + node2.children[tokenTypeName].push(token2); + } + } + function addNoneTerminalToCst(node2, ruleName, ruleResult) { + if (node2.children[ruleName] === void 0) { + node2.children[ruleName] = [ruleResult]; + } else { + node2.children[ruleName].push(ruleResult); + } + } + var init_cst = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/cst/cst.js"() { + "use strict"; + __name(setNodeLocationOnlyOffset, "setNodeLocationOnlyOffset"); + __name(setNodeLocationFull, "setNodeLocationFull"); + __name(addTerminalToCst, "addTerminalToCst"); + __name(addNoneTerminalToCst, "addNoneTerminalToCst"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/lang/lang_extensions.js + function defineNameProp(obj, nameValue) { + Object.defineProperty(obj, NAME, { + enumerable: false, + configurable: true, + writable: false, + value: nameValue + }); + } + var NAME; + var init_lang_extensions = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/lang/lang_extensions.js"() { + "use strict"; + NAME = "name"; + __name(defineNameProp, "defineNameProp"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/cst/cst_visitor.js + function defaultVisit(ctx, param) { + const childrenNames = keys_default(ctx); + const childrenNamesLength = childrenNames.length; + for (let i2 = 0; i2 < childrenNamesLength; i2++) { + const currChildName = childrenNames[i2]; + const currChildArray = ctx[currChildName]; + const currChildArrayLength = currChildArray.length; + for (let j3 = 0; j3 < currChildArrayLength; j3++) { + const currChild = currChildArray[j3]; + if (currChild.tokenTypeIdx === void 0) { + this[currChild.name](currChild.children, param); } - if (plainObject(fn3)) { - var obj = fn3; - fn3 = /* @__PURE__ */ __name(function fn4() { - return obj; - }, "fn"); + } + } + } + function createBaseSemanticVisitorConstructor(grammarName, ruleNames) { + const derivedConstructor = /* @__PURE__ */ __name(function() { + }, "derivedConstructor"); + defineNameProp(derivedConstructor, grammarName + "BaseSemantics"); + const semanticProto = { + visit: /* @__PURE__ */ __name(function(cstNode, param) { + if (isArray_default(cstNode)) { + cstNode = cstNode[0]; } - var storeOldPos = /* @__PURE__ */ __name(function storeOldPos2(node2, i2) { - return node2._private.bbAtOldPos = fn3(node2, i2); - }, "storeOldPos"); - var getOldPos = /* @__PURE__ */ __name(function getOldPos2(node2) { - return node2._private.bbAtOldPos; - }, "getOldPos"); - cy.startBatch(); - nodes6.forEach(storeOldPos).silentPositions(fn3); - if (hasCompoundNodes2) { - parents3.dirtyCompoundBoundsCache(); - parents3.dirtyBoundingBoxCache(); - parents3.updateCompoundBounds(true); + if (isUndefined_default(cstNode)) { + return void 0; } - var bb = copyBoundingBox(this.boundingBox({ - useCache: false - })); - nodes6.silentPositions(getOldPos); - if (hasCompoundNodes2) { - parents3.dirtyCompoundBoundsCache(); - parents3.dirtyBoundingBoxCache(); - parents3.updateCompoundBounds(true); + return this[cstNode.name](cstNode.children, param); + }, "visit"), + validateVisitor: /* @__PURE__ */ __name(function() { + const semanticDefinitionErrors = validateVisitor(this, ruleNames); + if (!isEmpty_default(semanticDefinitionErrors)) { + const errorMessages = map_default(semanticDefinitionErrors, (currDefError) => currDefError.msg); + throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: + ${errorMessages.join("\n\n").replace(/\n/g, "\n ")}`); } - cy.endBatch(); - return bb; + }, "validateVisitor") + }; + derivedConstructor.prototype = semanticProto; + derivedConstructor.prototype.constructor = derivedConstructor; + derivedConstructor._RULE_NAMES = ruleNames; + return derivedConstructor; + } + function createBaseVisitorConstructorWithDefaults(grammarName, ruleNames, baseConstructor) { + const derivedConstructor = /* @__PURE__ */ __name(function() { + }, "derivedConstructor"); + defineNameProp(derivedConstructor, grammarName + "BaseSemanticsWithDefaults"); + const withDefaultsProto = Object.create(baseConstructor.prototype); + forEach_default(ruleNames, (ruleName) => { + withDefaultsProto[ruleName] = defaultVisit; + }); + derivedConstructor.prototype = withDefaultsProto; + derivedConstructor.prototype.constructor = derivedConstructor; + return derivedConstructor; + } + function validateVisitor(visitorInstance, ruleNames) { + const missingErrors = validateMissingCstMethods(visitorInstance, ruleNames); + return missingErrors; + } + function validateMissingCstMethods(visitorInstance, ruleNames) { + const missingRuleNames = filter_default3(ruleNames, (currRuleName) => { + return isFunction_default(visitorInstance[currRuleName]) === false; + }); + const errors = map_default(missingRuleNames, (currRuleName) => { + return { + msg: `Missing visitor method: <${currRuleName}> on ${visitorInstance.constructor.name} CST Visitor.`, + type: CstVisitorDefinitionError.MISSING_METHOD, + methodName: currRuleName }; - fn$3.boundingbox = fn$3.bb = fn$3.boundingBox; - fn$3.renderedBoundingbox = fn$3.renderedBoundingBox; - bounds3 = elesfn$b; - fn$2 = elesfn$a = {}; - defineDimFns = /* @__PURE__ */ __name(function defineDimFns2(opts) { - opts.uppercaseName = capitalize(opts.name); - opts.autoName = "auto" + opts.uppercaseName; - opts.labelName = "label" + opts.uppercaseName; - opts.outerName = "outer" + opts.uppercaseName; - opts.uppercaseOuterName = capitalize(opts.outerName); - fn$2[opts.name] = /* @__PURE__ */ __name(function dimImpl() { - var ele = this[0]; - var _p = ele._private; - var cy = _p.cy; - var styleEnabled2 = cy._private.styleEnabled; - if (ele) { - if (styleEnabled2) { - if (ele.isParent()) { - ele.updateCompoundBounds(); - return _p[opts.autoName] || 0; + }); + return compact_default(errors); + } + var CstVisitorDefinitionError; + var init_cst_visitor = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/cst/cst_visitor.js"() { + "use strict"; + init_lodash(); + init_lang_extensions(); + __name(defaultVisit, "defaultVisit"); + __name(createBaseSemanticVisitorConstructor, "createBaseSemanticVisitorConstructor"); + __name(createBaseVisitorConstructorWithDefaults, "createBaseVisitorConstructorWithDefaults"); + (function(CstVisitorDefinitionError2) { + CstVisitorDefinitionError2[CstVisitorDefinitionError2["REDUNDANT_METHOD"] = 0] = "REDUNDANT_METHOD"; + CstVisitorDefinitionError2[CstVisitorDefinitionError2["MISSING_METHOD"] = 1] = "MISSING_METHOD"; + })(CstVisitorDefinitionError || (CstVisitorDefinitionError = {})); + __name(validateVisitor, "validateVisitor"); + __name(validateMissingCstMethods, "validateMissingCstMethods"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/tree_builder.js + var TreeBuilder; + var init_tree_builder = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/tree_builder.js"() { + "use strict"; + init_cst(); + init_lodash(); + init_cst_visitor(); + init_parser(); + TreeBuilder = class { + static { + __name(this, "TreeBuilder"); + } + initTreeBuilder(config5) { + this.CST_STACK = []; + this.outputCst = config5.outputCst; + this.nodeLocationTracking = has_default(config5, "nodeLocationTracking") ? config5.nodeLocationTracking : DEFAULT_PARSER_CONFIG.nodeLocationTracking; + if (!this.outputCst) { + this.cstInvocationStateUpdate = noop_default2; + this.cstFinallyStateUpdate = noop_default2; + this.cstPostTerminal = noop_default2; + this.cstPostNonTerminal = noop_default2; + this.cstPostRule = noop_default2; + } else { + if (/full/i.test(this.nodeLocationTracking)) { + if (this.recoveryEnabled) { + this.setNodeLocationFromToken = setNodeLocationFull; + this.setNodeLocationFromNode = setNodeLocationFull; + this.cstPostRule = noop_default2; + this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery; + } else { + this.setNodeLocationFromToken = noop_default2; + this.setNodeLocationFromNode = noop_default2; + this.cstPostRule = this.cstPostRuleFull; + this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular; } - var d2 = ele.pstyle(opts.name); - switch (d2.strValue) { - case "label": - ele.recalculateRenderedStyle(); - return _p.rstyle[opts.labelName] || 0; - default: - return d2.pfValue; + } else if (/onlyOffset/i.test(this.nodeLocationTracking)) { + if (this.recoveryEnabled) { + this.setNodeLocationFromToken = setNodeLocationOnlyOffset; + this.setNodeLocationFromNode = setNodeLocationOnlyOffset; + this.cstPostRule = noop_default2; + this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRecovery; + } else { + this.setNodeLocationFromToken = noop_default2; + this.setNodeLocationFromNode = noop_default2; + this.cstPostRule = this.cstPostRuleOnlyOffset; + this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRegular; } + } else if (/none/i.test(this.nodeLocationTracking)) { + this.setNodeLocationFromToken = noop_default2; + this.setNodeLocationFromNode = noop_default2; + this.cstPostRule = noop_default2; + this.setInitialNodeLocation = noop_default2; } else { - return 1; + throw Error(`Invalid config option: "${config5.nodeLocationTracking}"`); } } - }, "dimImpl"); - fn$2["outer" + opts.uppercaseName] = /* @__PURE__ */ __name(function outerDimImpl() { - var ele = this[0]; - var _p = ele._private; - var cy = _p.cy; - var styleEnabled2 = cy._private.styleEnabled; - if (ele) { - if (styleEnabled2) { - var dim = ele[opts.name](); - var border = ele.pstyle("border-width").pfValue; - var padding2 = 2 * ele.padding(); - return dim + border + padding2; - } else { - return 1; - } + } + setInitialNodeLocationOnlyOffsetRecovery(cstNode) { + cstNode.location = { + startOffset: NaN, + endOffset: NaN + }; + } + setInitialNodeLocationOnlyOffsetRegular(cstNode) { + cstNode.location = { + // without error recovery the starting Location of a new CstNode is guaranteed + // To be the next Token's startOffset (for valid inputs). + // For invalid inputs there won't be any CSTOutput so this potential + // inaccuracy does not matter + startOffset: this.LA(1).startOffset, + endOffset: NaN + }; + } + setInitialNodeLocationFullRecovery(cstNode) { + cstNode.location = { + startOffset: NaN, + startLine: NaN, + startColumn: NaN, + endOffset: NaN, + endLine: NaN, + endColumn: NaN + }; + } + /** + * @see setInitialNodeLocationOnlyOffsetRegular for explanation why this work + + * @param cstNode + */ + setInitialNodeLocationFullRegular(cstNode) { + const nextToken = this.LA(1); + cstNode.location = { + startOffset: nextToken.startOffset, + startLine: nextToken.startLine, + startColumn: nextToken.startColumn, + endOffset: NaN, + endLine: NaN, + endColumn: NaN + }; + } + cstInvocationStateUpdate(fullRuleName) { + const cstNode = { + name: fullRuleName, + children: /* @__PURE__ */ Object.create(null) + }; + this.setInitialNodeLocation(cstNode); + this.CST_STACK.push(cstNode); + } + cstFinallyStateUpdate() { + this.CST_STACK.pop(); + } + cstPostRuleFull(ruleCstNode) { + const prevToken = this.LA(0); + const loc = ruleCstNode.location; + if (loc.startOffset <= prevToken.startOffset === true) { + loc.endOffset = prevToken.endOffset; + loc.endLine = prevToken.endLine; + loc.endColumn = prevToken.endColumn; + } else { + loc.startOffset = NaN; + loc.startLine = NaN; + loc.startColumn = NaN; } - }, "outerDimImpl"); - fn$2["rendered" + opts.uppercaseName] = /* @__PURE__ */ __name(function renderedDimImpl() { - var ele = this[0]; - if (ele) { - var d2 = ele[opts.name](); - return d2 * this.cy().zoom(); + } + cstPostRuleOnlyOffset(ruleCstNode) { + const prevToken = this.LA(0); + const loc = ruleCstNode.location; + if (loc.startOffset <= prevToken.startOffset === true) { + loc.endOffset = prevToken.endOffset; + } else { + loc.startOffset = NaN; } - }, "renderedDimImpl"); - fn$2["rendered" + opts.uppercaseOuterName] = /* @__PURE__ */ __name(function renderedOuterDimImpl() { - var ele = this[0]; - if (ele) { - var od = ele[opts.outerName](); - return od * this.cy().zoom(); + } + cstPostTerminal(key, consumedToken) { + const rootCst = this.CST_STACK[this.CST_STACK.length - 1]; + addTerminalToCst(rootCst, consumedToken, key); + this.setNodeLocationFromToken(rootCst.location, consumedToken); + } + cstPostNonTerminal(ruleCstResult, ruleName) { + const preCstNode = this.CST_STACK[this.CST_STACK.length - 1]; + addNoneTerminalToCst(preCstNode, ruleName, ruleCstResult); + this.setNodeLocationFromNode(preCstNode.location, ruleCstResult.location); + } + getBaseCstVisitorConstructor() { + if (isUndefined_default(this.baseCstVisitorConstructor)) { + const newBaseCstVisitorConstructor = createBaseSemanticVisitorConstructor(this.className, keys_default(this.gastProductionsCache)); + this.baseCstVisitorConstructor = newBaseCstVisitorConstructor; + return newBaseCstVisitorConstructor; } - }, "renderedOuterDimImpl"); - }, "defineDimFns"); - defineDimFns({ - name: "width" - }); - defineDimFns({ - name: "height" - }); - elesfn$a.padding = function() { - var ele = this[0]; - var _p = ele._private; - if (ele.isParent()) { - ele.updateCompoundBounds(); - if (_p.autoPadding !== void 0) { - return _p.autoPadding; - } else { - return ele.pstyle("padding").pfValue; + return this.baseCstVisitorConstructor; + } + getBaseCstVisitorConstructorWithDefaults() { + if (isUndefined_default(this.baseCstVisitorWithDefaultsConstructor)) { + const newConstructor = createBaseVisitorConstructorWithDefaults(this.className, keys_default(this.gastProductionsCache), this.getBaseCstVisitorConstructor()); + this.baseCstVisitorWithDefaultsConstructor = newConstructor; + return newConstructor; } - } else { - return ele.pstyle("padding").pfValue; + return this.baseCstVisitorWithDefaultsConstructor; } - }; - elesfn$a.paddedHeight = function() { - var ele = this[0]; - return ele.height() + 2 * ele.padding(); - }; - elesfn$a.paddedWidth = function() { - var ele = this[0]; - return ele.width() + 2 * ele.padding(); - }; - widthHeight = elesfn$a; - ifEdge = /* @__PURE__ */ __name(function ifEdge2(ele, getValue3) { - if (ele.isEdge()) { - return getValue3(ele); + getLastExplicitRuleShortName() { + const ruleStack = this.RULE_STACK; + return ruleStack[ruleStack.length - 1]; } - }, "ifEdge"); - ifEdgeRenderedPosition = /* @__PURE__ */ __name(function ifEdgeRenderedPosition2(ele, getPoint) { - if (ele.isEdge()) { - var cy = ele.cy(); - return modelToRenderedPosition$1(getPoint(ele), cy.zoom(), cy.pan()); + getPreviousExplicitRuleShortName() { + const ruleStack = this.RULE_STACK; + return ruleStack[ruleStack.length - 2]; } - }, "ifEdgeRenderedPosition"); - ifEdgeRenderedPositions = /* @__PURE__ */ __name(function ifEdgeRenderedPositions2(ele, getPoints) { - if (ele.isEdge()) { - var cy = ele.cy(); - var pan2 = cy.pan(); - var zoom2 = cy.zoom(); - return getPoints(ele).map(function(p3) { - return modelToRenderedPosition$1(p3, zoom2, pan2); - }); - } - }, "ifEdgeRenderedPositions"); - controlPoints2 = /* @__PURE__ */ __name(function controlPoints3(ele) { - return ele.renderer().getControlPoints(ele); - }, "controlPoints"); - segmentPoints = /* @__PURE__ */ __name(function segmentPoints2(ele) { - return ele.renderer().getSegmentPoints(ele); - }, "segmentPoints"); - sourceEndpoint = /* @__PURE__ */ __name(function sourceEndpoint2(ele) { - return ele.renderer().getSourceEndpoint(ele); - }, "sourceEndpoint"); - targetEndpoint = /* @__PURE__ */ __name(function targetEndpoint2(ele) { - return ele.renderer().getTargetEndpoint(ele); - }, "targetEndpoint"); - midpoint = /* @__PURE__ */ __name(function midpoint2(ele) { - return ele.renderer().getEdgeMidpoint(ele); - }, "midpoint"); - pts = { - controlPoints: { - get: controlPoints2, - mult: true - }, - segmentPoints: { - get: segmentPoints, - mult: true - }, - sourceEndpoint: { - get: sourceEndpoint - }, - targetEndpoint: { - get: targetEndpoint - }, - midpoint: { - get: midpoint + getLastExplicitRuleOccurrenceIndex() { + const occurrenceStack = this.RULE_OCCURRENCE_STACK; + return occurrenceStack[occurrenceStack.length - 1]; } }; - renderedName = /* @__PURE__ */ __name(function renderedName2(name) { - return "rendered" + name[0].toUpperCase() + name.substr(1); - }, "renderedName"); - edgePoints = Object.keys(pts).reduce(function(obj, name) { - var spec = pts[name]; - var rName = renderedName(name); - obj[name] = function() { - return ifEdge(this, spec.get); - }; - if (spec.mult) { - obj[rName] = function() { - return ifEdgeRenderedPositions(this, spec.get); - }; - } else { - obj[rName] = function() { - return ifEdgeRenderedPosition(this, spec.get); - }; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/lexer_adapter.js + var LexerAdapter; + var init_lexer_adapter = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/lexer_adapter.js"() { + "use strict"; + init_parser(); + LexerAdapter = class { + static { + __name(this, "LexerAdapter"); } - return obj; - }, {}); - dimensions = extend4({}, position2, bounds3, widthHeight, edgePoints); - Event = /* @__PURE__ */ __name(function Event2(src, props) { - this.recycle(src, props); - }, "Event"); - __name(returnFalse, "returnFalse"); - __name(returnTrue, "returnTrue"); - Event.prototype = { - instanceString: /* @__PURE__ */ __name(function instanceString2() { - return "event"; - }, "instanceString"), - recycle: /* @__PURE__ */ __name(function recycle(src, props) { - this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = returnFalse; - if (src != null && src.preventDefault) { - this.type = src.type; - this.isDefaultPrevented = src.defaultPrevented ? returnTrue : returnFalse; - } else if (src != null && src.type) { - props = src; - } else { - this.type = src; - } - if (props != null) { - this.originalEvent = props.originalEvent; - this.type = props.type != null ? props.type : this.type; - this.cy = props.cy; - this.target = props.target; - this.position = props.position; - this.renderedPosition = props.renderedPosition; - this.namespace = props.namespace; - this.layout = props.layout; - } - if (this.cy != null && this.position != null && this.renderedPosition == null) { - var pos = this.position; - var zoom2 = this.cy.zoom(); - var pan2 = this.cy.pan(); - this.renderedPosition = { - x: pos.x * zoom2 + pan2.x, - y: pos.y * zoom2 + pan2.y - }; - } - this.timeStamp = src && src.timeStamp || Date.now(); - }, "recycle"), - preventDefault: /* @__PURE__ */ __name(function preventDefault() { - this.isDefaultPrevented = returnTrue; - var e3 = this.originalEvent; - if (!e3) { - return; - } - if (e3.preventDefault) { - e3.preventDefault(); - } - }, "preventDefault"), - stopPropagation: /* @__PURE__ */ __name(function stopPropagation() { - this.isPropagationStopped = returnTrue; - var e3 = this.originalEvent; - if (!e3) { - return; - } - if (e3.stopPropagation) { - e3.stopPropagation(); + initLexerAdapter() { + this.tokVector = []; + this.tokVectorLength = 0; + this.currIdx = -1; + } + set input(newInput) { + if (this.selfAnalysisDone !== true) { + throw Error(`Missing invocation at the end of the Parser's constructor.`); } - }, "stopPropagation"), - stopImmediatePropagation: /* @__PURE__ */ __name(function stopImmediatePropagation() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, "stopImmediatePropagation"), - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse - }; - eventRegex = /^([^.]+)(\.(?:[^.]+))?$/; - universalNamespace = ".*"; - defaults$8 = { - qualifierCompare: /* @__PURE__ */ __name(function qualifierCompare(q1, q2) { - return q1 === q2; - }, "qualifierCompare"), - eventMatches: /* @__PURE__ */ __name(function eventMatches() { - return true; - }, "eventMatches"), - addEventFields: /* @__PURE__ */ __name(function addEventFields() { - }, "addEventFields"), - callbackContext: /* @__PURE__ */ __name(function callbackContext(context) { - return context; - }, "callbackContext"), - beforeEmit: /* @__PURE__ */ __name(function beforeEmit() { - }, "beforeEmit"), - afterEmit: /* @__PURE__ */ __name(function afterEmit() { - }, "afterEmit"), - bubble: /* @__PURE__ */ __name(function bubble() { - return false; - }, "bubble"), - parent: /* @__PURE__ */ __name(function parent2() { - return null; - }, "parent"), - context: null - }; - defaultsKeys = Object.keys(defaults$8); - emptyOpts = {}; - __name(Emitter3, "Emitter"); - p2 = Emitter3.prototype; - forEachEvent = /* @__PURE__ */ __name(function forEachEvent2(self2, handler, events, qualifier, callback, conf5, confOverrides) { - if (fn$6(qualifier)) { - callback = qualifier; - qualifier = null; + this.reset(); + this.tokVector = newInput; + this.tokVectorLength = newInput.length; } - if (confOverrides) { - if (conf5 == null) { - conf5 = confOverrides; + get input() { + return this.tokVector; + } + // skips a token and returns the next token + SKIP_TOKEN() { + if (this.currIdx <= this.tokVector.length - 2) { + this.consumeToken(); + return this.LA(1); } else { - conf5 = extend4({}, conf5, confOverrides); + return END_OF_FILE; } } - var eventList = array2(events) ? events : events.split(/\s+/); - for (var i2 = 0; i2 < eventList.length; i2++) { - var evt = eventList[i2]; - if (emptyString(evt)) { - continue; - } - var match2 = evt.match(eventRegex); - if (match2) { - var type3 = match2[1]; - var namespace = match2[2] ? match2[2] : null; - var ret = handler(self2, evt, type3, namespace, qualifier, callback, conf5); - if (ret === false) { - break; - } + // Lexer (accessing Token vector) related methods which can be overridden to implement lazy lexers + // or lexers dependent on parser context. + LA(howMuch) { + const soughtIdx = this.currIdx + howMuch; + if (soughtIdx < 0 || this.tokVectorLength <= soughtIdx) { + return END_OF_FILE; + } else { + return this.tokVector[soughtIdx]; } } - }, "forEachEvent"); - makeEventObj = /* @__PURE__ */ __name(function makeEventObj2(self2, obj) { - self2.addEventFields(self2.context, obj); - return new Event(obj.type, obj); - }, "makeEventObj"); - forEachEventObj = /* @__PURE__ */ __name(function forEachEventObj2(self2, handler, events) { - if (event(events)) { - handler(self2, events); - return; - } else if (plainObject(events)) { - handler(self2, makeEventObj(self2, events)); - return; + consumeToken() { + this.currIdx++; } - var eventList = array2(events) ? events : events.split(/\s+/); - for (var i2 = 0; i2 < eventList.length; i2++) { - var evt = eventList[i2]; - if (emptyString(evt)) { - continue; - } - var match2 = evt.match(eventRegex); - if (match2) { - var type3 = match2[1]; - var namespace = match2[2] ? match2[2] : null; - var eventObj = makeEventObj(self2, { - type: type3, - namespace, - target: self2.context - }); - handler(self2, eventObj); - } + exportLexerState() { + return this.currIdx; } - }, "forEachEventObj"); - p2.on = p2.addListener = function(events, qualifier, callback, conf5, confOverrides) { - forEachEvent(this, function(self2, event3, type3, namespace, qualifier2, callback2, conf6) { - if (fn$6(callback2)) { - self2.listeners.push({ - event: event3, - // full event string - callback: callback2, - // callback to run - type: type3, - // the event type (e.g. 'click') - namespace, - // the event namespace (e.g. ".foo") - qualifier: qualifier2, - // a restriction on whether to match this emitter - conf: conf6 - // additional configuration + importLexerState(newState2) { + this.currIdx = newState2; + } + resetLexerState() { + this.currIdx = -1; + } + moveToTerminatedState() { + this.currIdx = this.tokVector.length - 1; + } + getLexerPosition() { + return this.exportLexerState(); + } + }; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js + var RecognizerApi; + var init_recognizer_api = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js"() { + "use strict"; + init_lodash(); + init_exceptions_public(); + init_parser(); + init_errors_public(); + init_checks(); + init_api3(); + RecognizerApi = class { + static { + __name(this, "RecognizerApi"); + } + ACTION(impl2) { + return impl2.call(this); + } + consume(idx, tokType, options2) { + return this.consumeInternal(tokType, idx, options2); + } + subrule(idx, ruleToCall, options2) { + return this.subruleInternal(ruleToCall, idx, options2); + } + option(idx, actionORMethodDef) { + return this.optionInternal(actionORMethodDef, idx); + } + or(idx, altsOrOpts) { + return this.orInternal(altsOrOpts, idx); + } + many(idx, actionORMethodDef) { + return this.manyInternal(idx, actionORMethodDef); + } + atLeastOne(idx, actionORMethodDef) { + return this.atLeastOneInternal(idx, actionORMethodDef); + } + CONSUME(tokType, options2) { + return this.consumeInternal(tokType, 0, options2); + } + CONSUME1(tokType, options2) { + return this.consumeInternal(tokType, 1, options2); + } + CONSUME2(tokType, options2) { + return this.consumeInternal(tokType, 2, options2); + } + CONSUME3(tokType, options2) { + return this.consumeInternal(tokType, 3, options2); + } + CONSUME4(tokType, options2) { + return this.consumeInternal(tokType, 4, options2); + } + CONSUME5(tokType, options2) { + return this.consumeInternal(tokType, 5, options2); + } + CONSUME6(tokType, options2) { + return this.consumeInternal(tokType, 6, options2); + } + CONSUME7(tokType, options2) { + return this.consumeInternal(tokType, 7, options2); + } + CONSUME8(tokType, options2) { + return this.consumeInternal(tokType, 8, options2); + } + CONSUME9(tokType, options2) { + return this.consumeInternal(tokType, 9, options2); + } + SUBRULE(ruleToCall, options2) { + return this.subruleInternal(ruleToCall, 0, options2); + } + SUBRULE1(ruleToCall, options2) { + return this.subruleInternal(ruleToCall, 1, options2); + } + SUBRULE2(ruleToCall, options2) { + return this.subruleInternal(ruleToCall, 2, options2); + } + SUBRULE3(ruleToCall, options2) { + return this.subruleInternal(ruleToCall, 3, options2); + } + SUBRULE4(ruleToCall, options2) { + return this.subruleInternal(ruleToCall, 4, options2); + } + SUBRULE5(ruleToCall, options2) { + return this.subruleInternal(ruleToCall, 5, options2); + } + SUBRULE6(ruleToCall, options2) { + return this.subruleInternal(ruleToCall, 6, options2); + } + SUBRULE7(ruleToCall, options2) { + return this.subruleInternal(ruleToCall, 7, options2); + } + SUBRULE8(ruleToCall, options2) { + return this.subruleInternal(ruleToCall, 8, options2); + } + SUBRULE9(ruleToCall, options2) { + return this.subruleInternal(ruleToCall, 9, options2); + } + OPTION(actionORMethodDef) { + return this.optionInternal(actionORMethodDef, 0); + } + OPTION1(actionORMethodDef) { + return this.optionInternal(actionORMethodDef, 1); + } + OPTION2(actionORMethodDef) { + return this.optionInternal(actionORMethodDef, 2); + } + OPTION3(actionORMethodDef) { + return this.optionInternal(actionORMethodDef, 3); + } + OPTION4(actionORMethodDef) { + return this.optionInternal(actionORMethodDef, 4); + } + OPTION5(actionORMethodDef) { + return this.optionInternal(actionORMethodDef, 5); + } + OPTION6(actionORMethodDef) { + return this.optionInternal(actionORMethodDef, 6); + } + OPTION7(actionORMethodDef) { + return this.optionInternal(actionORMethodDef, 7); + } + OPTION8(actionORMethodDef) { + return this.optionInternal(actionORMethodDef, 8); + } + OPTION9(actionORMethodDef) { + return this.optionInternal(actionORMethodDef, 9); + } + OR(altsOrOpts) { + return this.orInternal(altsOrOpts, 0); + } + OR1(altsOrOpts) { + return this.orInternal(altsOrOpts, 1); + } + OR2(altsOrOpts) { + return this.orInternal(altsOrOpts, 2); + } + OR3(altsOrOpts) { + return this.orInternal(altsOrOpts, 3); + } + OR4(altsOrOpts) { + return this.orInternal(altsOrOpts, 4); + } + OR5(altsOrOpts) { + return this.orInternal(altsOrOpts, 5); + } + OR6(altsOrOpts) { + return this.orInternal(altsOrOpts, 6); + } + OR7(altsOrOpts) { + return this.orInternal(altsOrOpts, 7); + } + OR8(altsOrOpts) { + return this.orInternal(altsOrOpts, 8); + } + OR9(altsOrOpts) { + return this.orInternal(altsOrOpts, 9); + } + MANY(actionORMethodDef) { + this.manyInternal(0, actionORMethodDef); + } + MANY1(actionORMethodDef) { + this.manyInternal(1, actionORMethodDef); + } + MANY2(actionORMethodDef) { + this.manyInternal(2, actionORMethodDef); + } + MANY3(actionORMethodDef) { + this.manyInternal(3, actionORMethodDef); + } + MANY4(actionORMethodDef) { + this.manyInternal(4, actionORMethodDef); + } + MANY5(actionORMethodDef) { + this.manyInternal(5, actionORMethodDef); + } + MANY6(actionORMethodDef) { + this.manyInternal(6, actionORMethodDef); + } + MANY7(actionORMethodDef) { + this.manyInternal(7, actionORMethodDef); + } + MANY8(actionORMethodDef) { + this.manyInternal(8, actionORMethodDef); + } + MANY9(actionORMethodDef) { + this.manyInternal(9, actionORMethodDef); + } + MANY_SEP(options2) { + this.manySepFirstInternal(0, options2); + } + MANY_SEP1(options2) { + this.manySepFirstInternal(1, options2); + } + MANY_SEP2(options2) { + this.manySepFirstInternal(2, options2); + } + MANY_SEP3(options2) { + this.manySepFirstInternal(3, options2); + } + MANY_SEP4(options2) { + this.manySepFirstInternal(4, options2); + } + MANY_SEP5(options2) { + this.manySepFirstInternal(5, options2); + } + MANY_SEP6(options2) { + this.manySepFirstInternal(6, options2); + } + MANY_SEP7(options2) { + this.manySepFirstInternal(7, options2); + } + MANY_SEP8(options2) { + this.manySepFirstInternal(8, options2); + } + MANY_SEP9(options2) { + this.manySepFirstInternal(9, options2); + } + AT_LEAST_ONE(actionORMethodDef) { + this.atLeastOneInternal(0, actionORMethodDef); + } + AT_LEAST_ONE1(actionORMethodDef) { + return this.atLeastOneInternal(1, actionORMethodDef); + } + AT_LEAST_ONE2(actionORMethodDef) { + this.atLeastOneInternal(2, actionORMethodDef); + } + AT_LEAST_ONE3(actionORMethodDef) { + this.atLeastOneInternal(3, actionORMethodDef); + } + AT_LEAST_ONE4(actionORMethodDef) { + this.atLeastOneInternal(4, actionORMethodDef); + } + AT_LEAST_ONE5(actionORMethodDef) { + this.atLeastOneInternal(5, actionORMethodDef); + } + AT_LEAST_ONE6(actionORMethodDef) { + this.atLeastOneInternal(6, actionORMethodDef); + } + AT_LEAST_ONE7(actionORMethodDef) { + this.atLeastOneInternal(7, actionORMethodDef); + } + AT_LEAST_ONE8(actionORMethodDef) { + this.atLeastOneInternal(8, actionORMethodDef); + } + AT_LEAST_ONE9(actionORMethodDef) { + this.atLeastOneInternal(9, actionORMethodDef); + } + AT_LEAST_ONE_SEP(options2) { + this.atLeastOneSepFirstInternal(0, options2); + } + AT_LEAST_ONE_SEP1(options2) { + this.atLeastOneSepFirstInternal(1, options2); + } + AT_LEAST_ONE_SEP2(options2) { + this.atLeastOneSepFirstInternal(2, options2); + } + AT_LEAST_ONE_SEP3(options2) { + this.atLeastOneSepFirstInternal(3, options2); + } + AT_LEAST_ONE_SEP4(options2) { + this.atLeastOneSepFirstInternal(4, options2); + } + AT_LEAST_ONE_SEP5(options2) { + this.atLeastOneSepFirstInternal(5, options2); + } + AT_LEAST_ONE_SEP6(options2) { + this.atLeastOneSepFirstInternal(6, options2); + } + AT_LEAST_ONE_SEP7(options2) { + this.atLeastOneSepFirstInternal(7, options2); + } + AT_LEAST_ONE_SEP8(options2) { + this.atLeastOneSepFirstInternal(8, options2); + } + AT_LEAST_ONE_SEP9(options2) { + this.atLeastOneSepFirstInternal(9, options2); + } + RULE(name, implementation, config5 = DEFAULT_RULE_CONFIG) { + if (includes_default(this.definedRulesNames, name)) { + const errMsg = defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({ + topLevelRule: name, + grammarName: this.className }); + const error3 = { + message: errMsg, + type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME, + ruleName: name + }; + this.definitionErrors.push(error3); } - }, events, qualifier, callback, conf5, confOverrides); - return this; - }; - p2.one = function(events, qualifier, callback, conf5) { - return this.on(events, qualifier, callback, conf5, { - one: true - }); - }; - p2.removeListener = p2.off = function(events, qualifier, callback, conf5) { - var _this = this; - if (this.emitting !== 0) { - this.listeners = copyArray$1(this.listeners); + this.definedRulesNames.push(name); + const ruleImplementation = this.defineRule(name, implementation, config5); + this[name] = ruleImplementation; + return ruleImplementation; } - var listeners = this.listeners; - var _loop = /* @__PURE__ */ __name(function _loop2(i3) { - var listener = listeners[i3]; - forEachEvent(_this, function(self2, event3, type3, namespace, qualifier2, callback2) { - if ((listener.type === type3 || events === "*") && (!namespace && listener.namespace !== ".*" || listener.namespace === namespace) && (!qualifier2 || self2.qualifierCompare(listener.qualifier, qualifier2)) && (!callback2 || listener.callback === callback2)) { - listeners.splice(i3, 1); - return false; + OVERRIDE_RULE(name, impl2, config5 = DEFAULT_RULE_CONFIG) { + const ruleErrors = validateRuleIsOverridden(name, this.definedRulesNames, this.className); + this.definitionErrors = this.definitionErrors.concat(ruleErrors); + const ruleImplementation = this.defineRule(name, impl2, config5); + this[name] = ruleImplementation; + return ruleImplementation; + } + BACKTRACK(grammarRule, args) { + return function() { + this.isBackTrackingStack.push(1); + const orgState = this.saveRecogState(); + try { + grammarRule.apply(this, args); + return true; + } catch (e3) { + if (isRecognitionException(e3)) { + return false; + } else { + throw e3; + } + } finally { + this.reloadRecogState(orgState); + this.isBackTrackingStack.pop(); } - }, events, qualifier, callback, conf5); - }, "_loop"); - for (var i2 = listeners.length - 1; i2 >= 0; i2--) { - _loop(i2); + }; + } + // GAST export APIs + getGAstProductions() { + return this.gastProductionsCache; + } + getSerializedGastProductions() { + return serializeGrammar(values_default(this.gastProductionsCache)); } - return this; - }; - p2.removeAllListeners = function() { - return this.removeListener("*"); }; - p2.emit = p2.trigger = function(events, extraParams, manualCallback) { - var listeners = this.listeners; - var numListenersBeforeEmit = listeners.length; - this.emitting++; - if (!array2(extraParams)) { - extraParams = [extraParams]; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js + var RecognizerEngine; + var init_recognizer_engine = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js"() { + "use strict"; + init_lodash(); + init_keys2(); + init_exceptions_public(); + init_lookahead(); + init_interpreter(); + init_parser(); + init_recoverable(); + init_tokens_public(); + init_tokens(); + RecognizerEngine = class { + static { + __name(this, "RecognizerEngine"); } - forEachEventObj(this, function(self2, eventObj) { - if (manualCallback != null) { - listeners = [{ - event: eventObj.event, - type: eventObj.type, - namespace: eventObj.namespace, - callback: manualCallback - }]; - numListenersBeforeEmit = listeners.length; + initRecognizerEngine(tokenVocabulary, config5) { + this.className = this.constructor.name; + this.shortRuleNameToFull = {}; + this.fullRuleNameToShort = {}; + this.ruleShortNameIdx = 256; + this.tokenMatcher = tokenStructuredMatcherNoCategories; + this.subruleIdx = 0; + this.definedRulesNames = []; + this.tokensMap = {}; + this.isBackTrackingStack = []; + this.RULE_STACK = []; + this.RULE_OCCURRENCE_STACK = []; + this.gastProductionsCache = {}; + if (has_default(config5, "serializedGrammar")) { + throw Error("The Parser's configuration can no longer contain a property.\n See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\n For Further details."); } - var _loop2 = /* @__PURE__ */ __name(function _loop22(i3) { - var listener = listeners[i3]; - if (listener.type === eventObj.type && (!listener.namespace || listener.namespace === eventObj.namespace || listener.namespace === universalNamespace) && self2.eventMatches(self2.context, listener, eventObj)) { - var args = [eventObj]; - if (extraParams != null) { - push(args, extraParams); + if (isArray_default(tokenVocabulary)) { + if (isEmpty_default(tokenVocabulary)) { + throw Error("A Token Vocabulary cannot be empty.\n Note that the first argument for the parser constructor\n is no longer a Token vector (since v4.0)."); + } + if (typeof tokenVocabulary[0].startOffset === "number") { + throw Error("The Parser constructor no longer accepts a token vector as the first argument.\n See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\n For Further details."); + } + } + if (isArray_default(tokenVocabulary)) { + this.tokensMap = reduce_default(tokenVocabulary, (acc, tokType) => { + acc[tokType.name] = tokType; + return acc; + }, {}); + } else if (has_default(tokenVocabulary, "modes") && every_default(flatten_default(values_default(tokenVocabulary.modes)), isTokenType)) { + const allTokenTypes2 = flatten_default(values_default(tokenVocabulary.modes)); + const uniqueTokens = uniq_default(allTokenTypes2); + this.tokensMap = reduce_default(uniqueTokens, (acc, tokType) => { + acc[tokType.name] = tokType; + return acc; + }, {}); + } else if (isObject_default(tokenVocabulary)) { + this.tokensMap = clone_default2(tokenVocabulary); + } else { + throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition"); + } + this.tokensMap["EOF"] = EOF; + const allTokenTypes = has_default(tokenVocabulary, "modes") ? flatten_default(values_default(tokenVocabulary.modes)) : values_default(tokenVocabulary); + const noTokenCategoriesUsed = every_default(allTokenTypes, (tokenConstructor) => isEmpty_default(tokenConstructor.categoryMatches)); + this.tokenMatcher = noTokenCategoriesUsed ? tokenStructuredMatcherNoCategories : tokenStructuredMatcher; + augmentTokenTypes(values_default(this.tokensMap)); + } + defineRule(ruleName, impl2, config5) { + if (this.selfAnalysisDone) { + throw Error(`Grammar rule <${ruleName}> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`); + } + const resyncEnabled = has_default(config5, "resyncEnabled") ? config5.resyncEnabled : DEFAULT_RULE_CONFIG.resyncEnabled; + const recoveryValueFunc = has_default(config5, "recoveryValueFunc") ? config5.recoveryValueFunc : DEFAULT_RULE_CONFIG.recoveryValueFunc; + const shortName = this.ruleShortNameIdx << BITS_FOR_METHOD_TYPE + BITS_FOR_OCCURRENCE_IDX; + this.ruleShortNameIdx++; + this.shortRuleNameToFull[shortName] = ruleName; + this.fullRuleNameToShort[ruleName] = shortName; + let invokeRuleWithTry; + if (this.outputCst === true) { + invokeRuleWithTry = /* @__PURE__ */ __name(function invokeRuleWithTry2(...args) { + try { + this.ruleInvocationStateUpdate(shortName, ruleName, this.subruleIdx); + impl2.apply(this, args); + const cst = this.CST_STACK[this.CST_STACK.length - 1]; + this.cstPostRule(cst); + return cst; + } catch (e3) { + return this.invokeRuleCatch(e3, resyncEnabled, recoveryValueFunc); + } finally { + this.ruleFinallyStateUpdate(); } - self2.beforeEmit(self2.context, listener, eventObj); - if (listener.conf && listener.conf.one) { - self2.listeners = self2.listeners.filter(function(l2) { - return l2 !== listener; - }); + }, "invokeRuleWithTry"); + } else { + invokeRuleWithTry = /* @__PURE__ */ __name(function invokeRuleWithTryCst(...args) { + try { + this.ruleInvocationStateUpdate(shortName, ruleName, this.subruleIdx); + return impl2.apply(this, args); + } catch (e3) { + return this.invokeRuleCatch(e3, resyncEnabled, recoveryValueFunc); + } finally { + this.ruleFinallyStateUpdate(); } - var context = self2.callbackContext(self2.context, listener, eventObj); - var ret = listener.callback.apply(context, args); - self2.afterEmit(self2.context, listener, eventObj); - if (ret === false) { - eventObj.stopPropagation(); - eventObj.preventDefault(); + }, "invokeRuleWithTryCst"); + } + const wrappedGrammarRule = Object.assign(invokeRuleWithTry, { ruleName, originalGrammarAction: impl2 }); + return wrappedGrammarRule; + } + invokeRuleCatch(e3, resyncEnabledConfig, recoveryValueFunc) { + const isFirstInvokedRule = this.RULE_STACK.length === 1; + const reSyncEnabled = resyncEnabledConfig && !this.isBackTracking() && this.recoveryEnabled; + if (isRecognitionException(e3)) { + const recogError = e3; + if (reSyncEnabled) { + const reSyncTokType = this.findReSyncTokenType(); + if (this.isInCurrentRuleReSyncSet(reSyncTokType)) { + recogError.resyncedTokens = this.reSyncTo(reSyncTokType); + if (this.outputCst) { + const partialCstResult = this.CST_STACK[this.CST_STACK.length - 1]; + partialCstResult.recoveredNode = true; + return partialCstResult; + } else { + return recoveryValueFunc(e3); + } + } else { + if (this.outputCst) { + const partialCstResult = this.CST_STACK[this.CST_STACK.length - 1]; + partialCstResult.recoveredNode = true; + recogError.partialCstResult = partialCstResult; + } + throw recogError; } + } else if (isFirstInvokedRule) { + this.moveToTerminatedState(); + return recoveryValueFunc(e3); + } else { + throw recogError; } - }, "_loop2"); - for (var i2 = 0; i2 < numListenersBeforeEmit; i2++) { - _loop2(i2); + } else { + throw e3; } - if (self2.bubble(self2.context) && !eventObj.isPropagationStopped()) { - self2.parent(self2.context).emit(eventObj, extraParams); + } + // Implementation of parsing DSL + optionInternal(actionORMethodDef, occurrence) { + const key = this.getKeyForAutomaticLookahead(OPTION_IDX, occurrence); + return this.optionInternalLogic(actionORMethodDef, occurrence, key); + } + optionInternalLogic(actionORMethodDef, occurrence, key) { + let lookAheadFunc = this.getLaFuncFromCache(key); + let action; + if (typeof actionORMethodDef !== "function") { + action = actionORMethodDef.DEF; + const predicate = actionORMethodDef.GATE; + if (predicate !== void 0) { + const orgLookaheadFunction = lookAheadFunc; + lookAheadFunc = /* @__PURE__ */ __name(() => { + return predicate.call(this) && orgLookaheadFunction.call(this); + }, "lookAheadFunc"); + } + } else { + action = actionORMethodDef; } - }, events); - this.emitting--; - return this; - }; - emitterOptions$1 = { - qualifierCompare: /* @__PURE__ */ __name(function qualifierCompare2(selector1, selector2) { - if (selector1 == null || selector2 == null) { - return selector1 == null && selector2 == null; + if (lookAheadFunc.call(this) === true) { + return action.call(this); + } + return void 0; + } + atLeastOneInternal(prodOccurrence, actionORMethodDef) { + const laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_IDX, prodOccurrence); + return this.atLeastOneInternalLogic(prodOccurrence, actionORMethodDef, laKey); + } + atLeastOneInternalLogic(prodOccurrence, actionORMethodDef, key) { + let lookAheadFunc = this.getLaFuncFromCache(key); + let action; + if (typeof actionORMethodDef !== "function") { + action = actionORMethodDef.DEF; + const predicate = actionORMethodDef.GATE; + if (predicate !== void 0) { + const orgLookaheadFunction = lookAheadFunc; + lookAheadFunc = /* @__PURE__ */ __name(() => { + return predicate.call(this) && orgLookaheadFunction.call(this); + }, "lookAheadFunc"); + } } else { - return selector1.sameText(selector2); + action = actionORMethodDef; } - }, "qualifierCompare"), - eventMatches: /* @__PURE__ */ __name(function eventMatches2(ele, listener, eventObj) { - var selector = listener.qualifier; - if (selector != null) { - return ele !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); + if (lookAheadFunc.call(this) === true) { + let notStuck = this.doSingleRepetition(action); + while (lookAheadFunc.call(this) === true && notStuck === true) { + notStuck = this.doSingleRepetition(action); + } + } else { + throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY, actionORMethodDef.ERR_MSG); } - return true; - }, "eventMatches"), - addEventFields: /* @__PURE__ */ __name(function addEventFields2(ele, evt) { - evt.cy = ele.cy(); - evt.target = ele; - }, "addEventFields"), - callbackContext: /* @__PURE__ */ __name(function callbackContext2(ele, listener, eventObj) { - return listener.qualifier != null ? eventObj.target : ele; - }, "callbackContext"), - beforeEmit: /* @__PURE__ */ __name(function beforeEmit2(context, listener) { - if (listener.conf && listener.conf.once) { - listener.conf.onceCollection.removeListener(listener.event, listener.qualifier, listener.callback); + this.attemptInRepetitionRecovery(this.atLeastOneInternal, [prodOccurrence, actionORMethodDef], lookAheadFunc, AT_LEAST_ONE_IDX, prodOccurrence, NextTerminalAfterAtLeastOneWalker); + } + atLeastOneSepFirstInternal(prodOccurrence, options2) { + const laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_SEP_IDX, prodOccurrence); + this.atLeastOneSepFirstInternalLogic(prodOccurrence, options2, laKey); + } + atLeastOneSepFirstInternalLogic(prodOccurrence, options2, key) { + const action = options2.DEF; + const separator = options2.SEP; + const firstIterationLookaheadFunc = this.getLaFuncFromCache(key); + if (firstIterationLookaheadFunc.call(this) === true) { + action.call(this); + const separatorLookAheadFunc = /* @__PURE__ */ __name(() => { + return this.tokenMatcher(this.LA(1), separator); + }, "separatorLookAheadFunc"); + while (this.tokenMatcher(this.LA(1), separator) === true) { + this.CONSUME(separator); + action.call(this); + } + this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ + prodOccurrence, + separator, + separatorLookAheadFunc, + action, + NextTerminalAfterAtLeastOneSepWalker + ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, NextTerminalAfterAtLeastOneSepWalker); + } else { + throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, options2.ERR_MSG); } - }, "beforeEmit"), - bubble: /* @__PURE__ */ __name(function bubble2() { - return true; - }, "bubble"), - parent: /* @__PURE__ */ __name(function parent3(ele) { - return ele.isChild() ? ele.parent() : ele.cy(); - }, "parent") - }; - argSelector$1 = /* @__PURE__ */ __name(function argSelector(arg) { - if (string(arg)) { - return new Selector(arg); - } else { - return arg; } - }, "argSelector"); - elesfn$9 = { - createEmitter: /* @__PURE__ */ __name(function createEmitter() { - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - var _p = ele._private; - if (!_p.emitter) { - _p.emitter = new Emitter3(emitterOptions$1, ele); + manyInternal(prodOccurrence, actionORMethodDef) { + const laKey = this.getKeyForAutomaticLookahead(MANY_IDX, prodOccurrence); + return this.manyInternalLogic(prodOccurrence, actionORMethodDef, laKey); + } + manyInternalLogic(prodOccurrence, actionORMethodDef, key) { + let lookaheadFunction = this.getLaFuncFromCache(key); + let action; + if (typeof actionORMethodDef !== "function") { + action = actionORMethodDef.DEF; + const predicate = actionORMethodDef.GATE; + if (predicate !== void 0) { + const orgLookaheadFunction = lookaheadFunction; + lookaheadFunction = /* @__PURE__ */ __name(() => { + return predicate.call(this) && orgLookaheadFunction.call(this); + }, "lookaheadFunction"); } + } else { + action = actionORMethodDef; } - return this; - }, "createEmitter"), - emitter: /* @__PURE__ */ __name(function emitter() { - return this._private.emitter; - }, "emitter"), - on: /* @__PURE__ */ __name(function on(events, selector, callback) { - var argSel = argSelector$1(selector); - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - ele.emitter().on(events, argSel, callback); + let notStuck = true; + while (lookaheadFunction.call(this) === true && notStuck === true) { + notStuck = this.doSingleRepetition(action); } - return this; - }, "on"), - removeListener: /* @__PURE__ */ __name(function removeListener(events, selector, callback) { - var argSel = argSelector$1(selector); - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - ele.emitter().removeListener(events, argSel, callback); + this.attemptInRepetitionRecovery( + this.manyInternal, + [prodOccurrence, actionORMethodDef], + lookaheadFunction, + MANY_IDX, + prodOccurrence, + NextTerminalAfterManyWalker, + // The notStuck parameter is only relevant when "attemptInRepetitionRecovery" + // is invoked from manyInternal, in the MANY_SEP case and AT_LEAST_ONE[_SEP] + // An infinite loop cannot occur as: + // - Either the lookahead is guaranteed to consume something (Single Token Separator) + // - AT_LEAST_ONE by definition is guaranteed to consume something (or error out). + notStuck + ); + } + manySepFirstInternal(prodOccurrence, options2) { + const laKey = this.getKeyForAutomaticLookahead(MANY_SEP_IDX, prodOccurrence); + this.manySepFirstInternalLogic(prodOccurrence, options2, laKey); + } + manySepFirstInternalLogic(prodOccurrence, options2, key) { + const action = options2.DEF; + const separator = options2.SEP; + const firstIterationLaFunc = this.getLaFuncFromCache(key); + if (firstIterationLaFunc.call(this) === true) { + action.call(this); + const separatorLookAheadFunc = /* @__PURE__ */ __name(() => { + return this.tokenMatcher(this.LA(1), separator); + }, "separatorLookAheadFunc"); + while (this.tokenMatcher(this.LA(1), separator) === true) { + this.CONSUME(separator); + action.call(this); + } + this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ + prodOccurrence, + separator, + separatorLookAheadFunc, + action, + NextTerminalAfterManySepWalker + ], separatorLookAheadFunc, MANY_SEP_IDX, prodOccurrence, NextTerminalAfterManySepWalker); } - return this; - }, "removeListener"), - removeAllListeners: /* @__PURE__ */ __name(function removeAllListeners() { - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - ele.emitter().removeAllListeners(); + } + repetitionSepSecondInternal(prodOccurrence, separator, separatorLookAheadFunc, action, nextTerminalAfterWalker) { + while (separatorLookAheadFunc()) { + this.CONSUME(separator); + action.call(this); } - return this; - }, "removeAllListeners"), - one: /* @__PURE__ */ __name(function one2(events, selector, callback) { - var argSel = argSelector$1(selector); - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - ele.emitter().one(events, argSel, callback); + this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ + prodOccurrence, + separator, + separatorLookAheadFunc, + action, + nextTerminalAfterWalker + ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, nextTerminalAfterWalker); + } + doSingleRepetition(action) { + const beforeIteration = this.getLexerPosition(); + action.call(this); + const afterIteration = this.getLexerPosition(); + return afterIteration > beforeIteration; + } + orInternal(altsOrOpts, occurrence) { + const laKey = this.getKeyForAutomaticLookahead(OR_IDX, occurrence); + const alts = isArray_default(altsOrOpts) ? altsOrOpts : altsOrOpts.DEF; + const laFunc = this.getLaFuncFromCache(laKey); + const altIdxToTake = laFunc.call(this, alts); + if (altIdxToTake !== void 0) { + const chosenAlternative = alts[altIdxToTake]; + return chosenAlternative.ALT.call(this); } - return this; - }, "one"), - once: /* @__PURE__ */ __name(function once(events, selector, callback) { - var argSel = argSelector$1(selector); - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - ele.emitter().on(events, argSel, callback, { - once: true, - onceCollection: this + this.raiseNoAltException(occurrence, altsOrOpts.ERR_MSG); + } + ruleFinallyStateUpdate() { + this.RULE_STACK.pop(); + this.RULE_OCCURRENCE_STACK.pop(); + this.cstFinallyStateUpdate(); + if (this.RULE_STACK.length === 0 && this.isAtEndOfInput() === false) { + const firstRedundantTok = this.LA(1); + const errMsg = this.errorMessageProvider.buildNotAllInputParsedMessage({ + firstRedundant: firstRedundantTok, + ruleName: this.getCurrRuleFullName() }); + this.SAVE_ERROR(new NotAllInputParsedException(errMsg, firstRedundantTok)); } - }, "once"), - emit: /* @__PURE__ */ __name(function emit(events, extraParams) { - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - ele.emitter().emit(events, extraParams); + } + subruleInternal(ruleToCall, idx, options2) { + let ruleResult; + try { + const args = options2 !== void 0 ? options2.ARGS : void 0; + this.subruleIdx = idx; + ruleResult = ruleToCall.apply(this, args); + this.cstPostNonTerminal(ruleResult, options2 !== void 0 && options2.LABEL !== void 0 ? options2.LABEL : ruleToCall.ruleName); + return ruleResult; + } catch (e3) { + throw this.subruleInternalError(e3, options2, ruleToCall.ruleName); } - return this; - }, "emit"), - emitAndNotify: /* @__PURE__ */ __name(function emitAndNotify(event3, extraParams) { - if (this.length === 0) { - return; + } + subruleInternalError(e3, options2, ruleName) { + if (isRecognitionException(e3) && e3.partialCstResult !== void 0) { + this.cstPostNonTerminal(e3.partialCstResult, options2 !== void 0 && options2.LABEL !== void 0 ? options2.LABEL : ruleName); + delete e3.partialCstResult; } - this.cy().notify(event3, this); - this.emit(event3, extraParams); - return this; - }, "emitAndNotify") - }; - define2.eventAliasesOn(elesfn$9); - elesfn$8 = { - nodes: /* @__PURE__ */ __name(function nodes2(selector) { - return this.filter(function(ele) { - return ele.isNode(); - }).filter(selector); - }, "nodes"), - edges: /* @__PURE__ */ __name(function edges(selector) { - return this.filter(function(ele) { - return ele.isEdge(); - }).filter(selector); - }, "edges"), - // internal helper to get nodes and edges as separate collections with single iteration over elements - byGroup: /* @__PURE__ */ __name(function byGroup() { - var nodes6 = this.spawn(); - var edges3 = this.spawn(); - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - if (ele.isNode()) { - nodes6.push(ele); + throw e3; + } + consumeInternal(tokType, idx, options2) { + let consumedToken; + try { + const nextToken = this.LA(1); + if (this.tokenMatcher(nextToken, tokType) === true) { + this.consumeToken(); + consumedToken = nextToken; } else { - edges3.push(ele); - } - } - return { - nodes: nodes6, - edges: edges3 - }; - }, "byGroup"), - filter: /* @__PURE__ */ __name(function filter5(_filter, thisArg) { - if (_filter === void 0) { - return this; - } else if (string(_filter) || elementOrCollection(_filter)) { - return new Selector(_filter).filter(this); - } else if (fn$6(_filter)) { - var filterEles = this.spawn(); - var eles = this; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var include = thisArg ? _filter.apply(thisArg, [ele, i2, eles]) : _filter(ele, i2, eles); - if (include) { - filterEles.push(ele); - } + this.consumeInternalError(tokType, nextToken, options2); } - return filterEles; + } catch (eFromConsumption) { + consumedToken = this.consumeInternalRecovery(tokType, idx, eFromConsumption); } - return this.spawn(); - }, "filter"), - not: /* @__PURE__ */ __name(function not(toRemove) { - if (!toRemove) { - return this; - } else { - if (string(toRemove)) { - toRemove = this.filter(toRemove); - } - var elements3 = this.spawn(); - for (var i2 = 0; i2 < this.length; i2++) { - var element3 = this[i2]; - var remove3 = toRemove.has(element3); - if (!remove3) { - elements3.push(element3); - } - } - return elements3; - } - }, "not"), - absoluteComplement: /* @__PURE__ */ __name(function absoluteComplement() { - var cy = this.cy(); - return cy.mutableElements().not(this); - }, "absoluteComplement"), - intersect: /* @__PURE__ */ __name(function intersect2(other2) { - if (string(other2)) { - var selector = other2; - return this.filter(selector); - } - var elements3 = this.spawn(); - var col1 = this; - var col2 = other2; - var col1Smaller = this.length < other2.length; - var colS = col1Smaller ? col1 : col2; - var colL = col1Smaller ? col2 : col1; - for (var i2 = 0; i2 < colS.length; i2++) { - var ele = colS[i2]; - if (colL.has(ele)) { - elements3.push(ele); - } - } - return elements3; - }, "intersect"), - xor: /* @__PURE__ */ __name(function xor(other2) { - var cy = this._private.cy; - if (string(other2)) { - other2 = cy.$(other2); - } - var elements3 = this.spawn(); - var col1 = this; - var col2 = other2; - var add3 = /* @__PURE__ */ __name(function add4(col, other3) { - for (var i2 = 0; i2 < col.length; i2++) { - var ele = col[i2]; - var id29 = ele._private.data.id; - var inOther = other3.hasElementWithId(id29); - if (!inOther) { - elements3.push(ele); - } - } - }, "add"); - add3(col1, col2); - add3(col2, col1); - return elements3; - }, "xor"), - diff: /* @__PURE__ */ __name(function diff(other2) { - var cy = this._private.cy; - if (string(other2)) { - other2 = cy.$(other2); + this.cstPostTerminal(options2 !== void 0 && options2.LABEL !== void 0 ? options2.LABEL : tokType.name, consumedToken); + return consumedToken; + } + consumeInternalError(tokType, nextToken, options2) { + let msg; + const previousToken = this.LA(0); + if (options2 !== void 0 && options2.ERR_MSG) { + msg = options2.ERR_MSG; + } else { + msg = this.errorMessageProvider.buildMismatchTokenMessage({ + expected: tokType, + actual: nextToken, + previous: previousToken, + ruleName: this.getCurrRuleFullName() + }); } - var left3 = this.spawn(); - var right3 = this.spawn(); - var both = this.spawn(); - var col1 = this; - var col2 = other2; - var add3 = /* @__PURE__ */ __name(function add4(col, other3, retEles) { - for (var i2 = 0; i2 < col.length; i2++) { - var ele = col[i2]; - var id29 = ele._private.data.id; - var inOther = other3.hasElementWithId(id29); - if (inOther) { - both.merge(ele); + throw this.SAVE_ERROR(new MismatchedTokenException(msg, nextToken, previousToken)); + } + consumeInternalRecovery(tokType, idx, eFromConsumption) { + if (this.recoveryEnabled && // TODO: more robust checking of the exception type. Perhaps Typescript extending expressions? + eFromConsumption.name === "MismatchedTokenException" && !this.isBackTracking()) { + const follows = this.getFollowsForInRuleRecovery(tokType, idx); + try { + return this.tryInRuleRecovery(tokType, follows); + } catch (eFromInRuleRecovery) { + if (eFromInRuleRecovery.name === IN_RULE_RECOVERY_EXCEPTION) { + throw eFromConsumption; } else { - retEles.push(ele); + throw eFromInRuleRecovery; } } - }, "add"); - add3(col1, col2, left3); - add3(col2, col1, right3); - return { - left: left3, - right: right3, - both - }; - }, "diff"), - add: /* @__PURE__ */ __name(function add(toAdd) { - var cy = this._private.cy; - if (!toAdd) { - return this; - } - if (string(toAdd)) { - var selector = toAdd; - toAdd = cy.mutableElements().filter(selector); - } - var elements3 = this.spawnSelf(); - for (var i2 = 0; i2 < toAdd.length; i2++) { - var ele = toAdd[i2]; - var add3 = !this.has(ele); - if (add3) { - elements3.push(ele); - } - } - return elements3; - }, "add"), - // in place merge on calling collection - merge: /* @__PURE__ */ __name(function merge4(toAdd) { - var _p = this._private; - var cy = _p.cy; - if (!toAdd) { - return this; - } - if (toAdd && string(toAdd)) { - var selector = toAdd; - toAdd = cy.mutableElements().filter(selector); - } - var map5 = _p.map; - for (var i2 = 0; i2 < toAdd.length; i2++) { - var toAddEle = toAdd[i2]; - var id29 = toAddEle._private.data.id; - var add3 = !map5.has(id29); - if (add3) { - var index = this.length++; - this[index] = toAddEle; - map5.set(id29, { - ele: toAddEle, - index - }); - } - } - return this; - }, "merge"), - unmergeAt: /* @__PURE__ */ __name(function unmergeAt(i2) { - var ele = this[i2]; - var id29 = ele.id(); - var _p = this._private; - var map5 = _p.map; - this[i2] = void 0; - map5["delete"](id29); - var unmergedLastEle = i2 === this.length - 1; - if (this.length > 1 && !unmergedLastEle) { - var lastEleI = this.length - 1; - var lastEle = this[lastEleI]; - var lastEleId = lastEle._private.data.id; - this[lastEleI] = void 0; - this[i2] = lastEle; - map5.set(lastEleId, { - ele: lastEle, - index: i2 - }); - } - this.length--; - return this; - }, "unmergeAt"), - // remove single ele in place in calling collection - unmergeOne: /* @__PURE__ */ __name(function unmergeOne(ele) { - ele = ele[0]; - var _p = this._private; - var id29 = ele._private.data.id; - var map5 = _p.map; - var entry = map5.get(id29); - if (!entry) { - return this; - } - var i2 = entry.index; - this.unmergeAt(i2); - return this; - }, "unmergeOne"), - // remove eles in place on calling collection - unmerge: /* @__PURE__ */ __name(function unmerge(toRemove) { - var cy = this._private.cy; - if (!toRemove) { - return this; - } - if (toRemove && string(toRemove)) { - var selector = toRemove; - toRemove = cy.mutableElements().filter(selector); - } - for (var i2 = 0; i2 < toRemove.length; i2++) { - this.unmergeOne(toRemove[i2]); - } - return this; - }, "unmerge"), - unmergeBy: /* @__PURE__ */ __name(function unmergeBy(toRmFn) { - for (var i2 = this.length - 1; i2 >= 0; i2--) { - var ele = this[i2]; - if (toRmFn(ele)) { - this.unmergeAt(i2); - } - } - return this; - }, "unmergeBy"), - map: /* @__PURE__ */ __name(function map4(mapFn, thisArg) { - var arr = []; - var eles = this; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var ret = thisArg ? mapFn.apply(thisArg, [ele, i2, eles]) : mapFn(ele, i2, eles); - arr.push(ret); - } - return arr; - }, "map"), - reduce: /* @__PURE__ */ __name(function reduce2(fn3, initialValue) { - var val = initialValue; - var eles = this; - for (var i2 = 0; i2 < eles.length; i2++) { - val = fn3(val, eles[i2], i2, eles); - } - return val; - }, "reduce"), - max: /* @__PURE__ */ __name(function max8(valFn, thisArg) { - var max10 = -Infinity; - var maxEle; - var eles = this; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var val = thisArg ? valFn.apply(thisArg, [ele, i2, eles]) : valFn(ele, i2, eles); - if (val > max10) { - max10 = val; - maxEle = ele; - } - } - return { - value: max10, - ele: maxEle - }; - }, "max"), - min: /* @__PURE__ */ __name(function min7(valFn, thisArg) { - var min9 = Infinity; - var minEle; - var eles = this; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var val = thisArg ? valFn.apply(thisArg, [ele, i2, eles]) : valFn(ele, i2, eles); - if (val < min9) { - min9 = val; - minEle = ele; - } + } else { + throw eFromConsumption; } + } + saveRecogState() { + const savedErrors = this.errors; + const savedRuleStack = clone_default2(this.RULE_STACK); return { - value: min9, - ele: minEle + errors: savedErrors, + lexerState: this.exportLexerState(), + RULE_STACK: savedRuleStack, + CST_STACK: this.CST_STACK }; - }, "min") - }; - fn$1 = elesfn$8; - fn$1["u"] = fn$1["|"] = fn$1["+"] = fn$1.union = fn$1.or = fn$1.add; - fn$1["\\"] = fn$1["!"] = fn$1["-"] = fn$1.difference = fn$1.relativeComplement = fn$1.subtract = fn$1.not; - fn$1["n"] = fn$1["&"] = fn$1["."] = fn$1.and = fn$1.intersection = fn$1.intersect; - fn$1["^"] = fn$1["(+)"] = fn$1["(-)"] = fn$1.symmetricDifference = fn$1.symdiff = fn$1.xor; - fn$1.fnFilter = fn$1.filterFn = fn$1.stdFilter = fn$1.filter; - fn$1.complement = fn$1.abscomp = fn$1.absoluteComplement; - elesfn$7 = { - isNode: /* @__PURE__ */ __name(function isNode() { - return this.group() === "nodes"; - }, "isNode"), - isEdge: /* @__PURE__ */ __name(function isEdge() { - return this.group() === "edges"; - }, "isEdge"), - isLoop: /* @__PURE__ */ __name(function isLoop() { - return this.isEdge() && this.source()[0] === this.target()[0]; - }, "isLoop"), - isSimple: /* @__PURE__ */ __name(function isSimple() { - return this.isEdge() && this.source()[0] !== this.target()[0]; - }, "isSimple"), - group: /* @__PURE__ */ __name(function group() { - var ele = this[0]; - if (ele) { - return ele._private.group; - } - }, "group") + } + reloadRecogState(newState2) { + this.errors = newState2.errors; + this.importLexerState(newState2.lexerState); + this.RULE_STACK = newState2.RULE_STACK; + } + ruleInvocationStateUpdate(shortName, fullName, idxInCallingRule) { + this.RULE_OCCURRENCE_STACK.push(idxInCallingRule); + this.RULE_STACK.push(shortName); + this.cstInvocationStateUpdate(fullName); + } + isBackTracking() { + return this.isBackTrackingStack.length !== 0; + } + getCurrRuleFullName() { + const shortName = this.getLastExplicitRuleShortName(); + return this.shortRuleNameToFull[shortName]; + } + shortRuleNameToFullName(shortName) { + return this.shortRuleNameToFull[shortName]; + } + isAtEndOfInput() { + return this.tokenMatcher(this.LA(1), EOF); + } + reset() { + this.resetLexerState(); + this.subruleIdx = 0; + this.isBackTrackingStack = []; + this.errors = []; + this.RULE_STACK = []; + this.CST_STACK = []; + this.RULE_OCCURRENCE_STACK = []; + } }; - zIndexSort = /* @__PURE__ */ __name(function zIndexSort2(a2, b2) { - var cy = a2.cy(); - var hasCompoundNodes2 = cy.hasCompoundNodes(); - function getDepth(ele) { - var style3 = ele.pstyle("z-compound-depth"); - if (style3.value === "auto") { - return hasCompoundNodes2 ? ele.zDepth() : 0; - } else if (style3.value === "bottom") { - return -1; - } else if (style3.value === "top") { - return MAX_INT$1; - } - return 0; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/error_handler.js + var ErrorHandler; + var init_error_handler = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/error_handler.js"() { + "use strict"; + init_exceptions_public(); + init_lodash(); + init_lookahead(); + init_parser(); + ErrorHandler = class { + static { + __name(this, "ErrorHandler"); } - __name(getDepth, "getDepth"); - var depthDiff = getDepth(a2) - getDepth(b2); - if (depthDiff !== 0) { - return depthDiff; + initErrorHandler(config5) { + this._errors = []; + this.errorMessageProvider = has_default(config5, "errorMessageProvider") ? config5.errorMessageProvider : DEFAULT_PARSER_CONFIG.errorMessageProvider; } - function getEleDepth(ele) { - var style3 = ele.pstyle("z-index-compare"); - if (style3.value === "auto") { - return ele.isNode() ? 1 : 0; + SAVE_ERROR(error3) { + if (isRecognitionException(error3)) { + error3.context = { + ruleStack: this.getHumanReadableRuleStack(), + ruleOccurrenceStack: clone_default2(this.RULE_OCCURRENCE_STACK) + }; + this._errors.push(error3); + return error3; + } else { + throw Error("Trying to save an Error which is not a RecognitionException"); } - return 0; } - __name(getEleDepth, "getEleDepth"); - var eleDiff = getEleDepth(a2) - getEleDepth(b2); - if (eleDiff !== 0) { - return eleDiff; + get errors() { + return clone_default2(this._errors); } - var zDiff = a2.pstyle("z-index").value - b2.pstyle("z-index").value; - if (zDiff !== 0) { - return zDiff; + set errors(newErrors) { + this._errors = newErrors; } - return a2.poolIndex() - b2.poolIndex(); - }, "zIndexSort"); - elesfn$6 = { - forEach: /* @__PURE__ */ __name(function forEach2(fn3, thisArg) { - if (fn$6(fn3)) { - var N2 = this.length; - for (var i2 = 0; i2 < N2; i2++) { - var ele = this[i2]; - var ret = thisArg ? fn3.apply(thisArg, [ele, i2, this]) : fn3(ele, i2, this); - if (ret === false) { - break; - } - } - } - return this; - }, "forEach"), - toArray: /* @__PURE__ */ __name(function toArray2() { - var array4 = []; - for (var i2 = 0; i2 < this.length; i2++) { - array4.push(this[i2]); - } - return array4; - }, "toArray"), - slice: /* @__PURE__ */ __name(function slice2(start3, end2) { - var array4 = []; - var thisSize = this.length; - if (end2 == null) { - end2 = thisSize; - } - if (start3 == null) { - start3 = 0; - } - if (start3 < 0) { - start3 = thisSize + start3; - } - if (end2 < 0) { - end2 = thisSize + end2; - } - for (var i2 = start3; i2 >= 0 && i2 < end2 && i2 < thisSize; i2++) { - array4.push(this[i2]); - } - return this.spawn(array4); - }, "slice"), - size: /* @__PURE__ */ __name(function size3() { - return this.length; - }, "size"), - eq: /* @__PURE__ */ __name(function eq3(i2) { - return this[i2] || this.spawn(); - }, "eq"), - first: /* @__PURE__ */ __name(function first2() { - return this[0] || this.spawn(); - }, "first"), - last: /* @__PURE__ */ __name(function last2() { - return this[this.length - 1] || this.spawn(); - }, "last"), - empty: /* @__PURE__ */ __name(function empty2() { - return this.length === 0; - }, "empty"), - nonempty: /* @__PURE__ */ __name(function nonempty() { - return !this.empty(); - }, "nonempty"), - sort: /* @__PURE__ */ __name(function sort2(sortFn) { - if (!fn$6(sortFn)) { - return this; + // TODO: consider caching the error message computed information + raiseEarlyExitException(occurrence, prodType, userDefinedErrMsg) { + const ruleName = this.getCurrRuleFullName(); + const ruleGrammar = this.getGAstProductions()[ruleName]; + const lookAheadPathsPerAlternative = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, this.maxLookahead); + const insideProdPaths = lookAheadPathsPerAlternative[0]; + const actualTokens = []; + for (let i2 = 1; i2 <= this.maxLookahead; i2++) { + actualTokens.push(this.LA(i2)); } - var sorted = this.toArray().sort(sortFn); - return this.spawn(sorted); - }, "sort"), - sortByZIndex: /* @__PURE__ */ __name(function sortByZIndex() { - return this.sort(zIndexSort); - }, "sortByZIndex"), - zDepth: /* @__PURE__ */ __name(function zDepth() { - var ele = this[0]; - if (!ele) { - return void 0; + const msg = this.errorMessageProvider.buildEarlyExitMessage({ + expectedIterationPaths: insideProdPaths, + actual: actualTokens, + previous: this.LA(0), + customUserDescription: userDefinedErrMsg, + ruleName + }); + throw this.SAVE_ERROR(new EarlyExitException(msg, this.LA(1), this.LA(0))); + } + // TODO: consider caching the error message computed information + raiseNoAltException(occurrence, errMsgTypes) { + const ruleName = this.getCurrRuleFullName(); + const ruleGrammar = this.getGAstProductions()[ruleName]; + const lookAheadPathsPerAlternative = getLookaheadPathsForOr(occurrence, ruleGrammar, this.maxLookahead); + const actualTokens = []; + for (let i2 = 1; i2 <= this.maxLookahead; i2++) { + actualTokens.push(this.LA(i2)); } - var _p = ele._private; - var group2 = _p.group; - if (group2 === "nodes") { - var depth = _p.data.parent ? ele.parents().size() : 0; - if (!ele.isParent()) { - return MAX_INT$1 - 1; - } - return depth; - } else { - var src = _p.source; - var tgt = _p.target; - var srcDepth = src.zDepth(); - var tgtDepth = tgt.zDepth(); - return Math.max(srcDepth, tgtDepth, 0); + const previousToken = this.LA(0); + const errMsg = this.errorMessageProvider.buildNoViableAltMessage({ + expectedPathsPerAlt: lookAheadPathsPerAlternative, + actual: actualTokens, + previous: previousToken, + customUserDescription: errMsgTypes, + ruleName: this.getCurrRuleFullName() + }); + throw this.SAVE_ERROR(new NoViableAltException(errMsg, this.LA(1), previousToken)); + } + }; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/context_assist.js + var ContentAssist; + var init_context_assist = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/context_assist.js"() { + "use strict"; + init_interpreter(); + init_lodash(); + ContentAssist = class { + static { + __name(this, "ContentAssist"); + } + initContentAssist() { + } + computeContentAssist(startRuleName, precedingInput) { + const startRuleGast = this.gastProductionsCache[startRuleName]; + if (isUndefined_default(startRuleGast)) { + throw Error(`Rule ->${startRuleName}<- does not exist in this grammar.`); } - }, "zDepth") + return nextPossibleTokensAfter([startRuleGast], precedingInput, this.tokenMatcher, this.maxLookahead); + } + // TODO: should this be a member method or a utility? it does not have any state or usage of 'this'... + // TODO: should this be more explicitly part of the public API? + getNextPossibleTokenTypes(grammarPath) { + const topRuleName = head_default(grammarPath.ruleStack); + const gastProductions = this.getGAstProductions(); + const topProduction = gastProductions[topRuleName]; + const nextPossibleTokenTypes = new NextAfterTokenWalker(topProduction, grammarPath).startWalking(); + return nextPossibleTokenTypes; + } }; - elesfn$6.each = elesfn$6.forEach; - defineSymbolIterator = /* @__PURE__ */ __name(function defineSymbolIterator2() { - var typeofUndef = "undefined"; - var isIteratorSupported = (typeof Symbol === "undefined" ? "undefined" : _typeof(Symbol)) != typeofUndef && _typeof(Symbol.iterator) != typeofUndef; - if (isIteratorSupported) { - elesfn$6[Symbol.iterator] = function() { - var _this = this; - var entry = { - value: void 0, - done: false - }; - var i2 = 0; - var length2 = this.length; - return _defineProperty$1({ - next: /* @__PURE__ */ __name(function next3() { - if (i2 < length2) { - entry.value = _this[i2++]; - } else { - entry.value = void 0; - entry.done = true; - } - return entry; - }, "next") - }, Symbol.iterator, function() { - return this; - }); - }; + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/gast_recorder.js + function recordProd(prodConstructor, mainProdArg, occurrence, handleSep = false) { + assertMethodIdxIsValid(occurrence); + const prevProd = last_default(this.recordingProdStack); + const grammarAction = isFunction_default(mainProdArg) ? mainProdArg : mainProdArg.DEF; + const newProd = new prodConstructor({ definition: [], idx: occurrence }); + if (handleSep) { + newProd.separator = mainProdArg.SEP; + } + if (has_default(mainProdArg, "MAX_LOOKAHEAD")) { + newProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD; + } + this.recordingProdStack.push(newProd); + grammarAction.call(this); + prevProd.definition.push(newProd); + this.recordingProdStack.pop(); + return RECORDING_NULL_OBJECT; + } + function recordOrProd(mainProdArg, occurrence) { + assertMethodIdxIsValid(occurrence); + const prevProd = last_default(this.recordingProdStack); + const hasOptions = isArray_default(mainProdArg) === false; + const alts = hasOptions === false ? mainProdArg : mainProdArg.DEF; + const newOrProd = new Alternation({ + definition: [], + idx: occurrence, + ignoreAmbiguities: hasOptions && mainProdArg.IGNORE_AMBIGUITIES === true + }); + if (has_default(mainProdArg, "MAX_LOOKAHEAD")) { + newOrProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD; + } + const hasPredicates = some_default(alts, (currAlt) => isFunction_default(currAlt.GATE)); + newOrProd.hasPredicates = hasPredicates; + prevProd.definition.push(newOrProd); + forEach_default(alts, (currAlt) => { + const currAltFlat = new Alternative({ definition: [] }); + newOrProd.definition.push(currAltFlat); + if (has_default(currAlt, "IGNORE_AMBIGUITIES")) { + currAltFlat.ignoreAmbiguities = currAlt.IGNORE_AMBIGUITIES; + } else if (has_default(currAlt, "GATE")) { + currAltFlat.ignoreAmbiguities = true; + } + this.recordingProdStack.push(currAltFlat); + currAlt.ALT.call(this); + this.recordingProdStack.pop(); + }); + return RECORDING_NULL_OBJECT; + } + function getIdxSuffix(idx) { + return idx === 0 ? "" : `${idx}`; + } + function assertMethodIdxIsValid(idx) { + if (idx < 0 || idx > MAX_METHOD_IDX) { + const error3 = new Error( + // The stack trace will contain all the needed details + `Invalid DSL Method idx value: <${idx}> + Idx value must be a none negative value smaller than ${MAX_METHOD_IDX + 1}` + ); + error3.KNOWN_RECORDER_ERROR = true; + throw error3; + } + } + var RECORDING_NULL_OBJECT, HANDLE_SEPARATOR, MAX_METHOD_IDX, RFT, RECORDING_PHASE_TOKEN, RECORDING_PHASE_CSTNODE, GastRecorder; + var init_gast_recorder = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/gast_recorder.js"() { + "use strict"; + init_lodash(); + init_api3(); + init_lexer_public(); + init_tokens(); + init_tokens_public(); + init_parser(); + init_keys2(); + RECORDING_NULL_OBJECT = { + description: "This Object indicates the Parser is during Recording Phase" + }; + Object.freeze(RECORDING_NULL_OBJECT); + HANDLE_SEPARATOR = true; + MAX_METHOD_IDX = Math.pow(2, BITS_FOR_OCCURRENCE_IDX) - 1; + RFT = createToken({ name: "RECORDING_PHASE_TOKEN", pattern: Lexer2.NA }); + augmentTokenTypes([RFT]); + RECORDING_PHASE_TOKEN = createTokenInstance( + RFT, + "This IToken indicates the Parser is in Recording Phase\n See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details", + // Using "-1" instead of NaN (as in EOF) because an actual number is less likely to + // cause errors if the output of LA or CONSUME would be (incorrectly) used during the recording phase. + -1, + -1, + -1, + -1, + -1, + -1 + ); + Object.freeze(RECORDING_PHASE_TOKEN); + RECORDING_PHASE_CSTNODE = { + name: "This CSTNode indicates the Parser is in Recording Phase\n See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details", + children: {} + }; + GastRecorder = class { + static { + __name(this, "GastRecorder"); } - }, "defineSymbolIterator"); - defineSymbolIterator(); - getLayoutDimensionOptions = defaults$g({ - nodeDimensionsIncludeLabels: false - }); - elesfn$5 = { - // Calculates and returns node dimensions { x, y } based on options given - layoutDimensions: /* @__PURE__ */ __name(function layoutDimensions(options3) { - options3 = getLayoutDimensionOptions(options3); - var dims; - if (!this.takesUpSpace()) { - dims = { - w: 0, - h: 0 + initGastRecorder(config5) { + this.recordingProdStack = []; + this.RECORDING_PHASE = false; + } + enableRecording() { + this.RECORDING_PHASE = true; + this.TRACE_INIT("Enable Recording", () => { + for (let i2 = 0; i2 < 10; i2++) { + const idx = i2 > 0 ? i2 : ""; + this[`CONSUME${idx}`] = function(arg1, arg2) { + return this.consumeInternalRecord(arg1, i2, arg2); + }; + this[`SUBRULE${idx}`] = function(arg1, arg2) { + return this.subruleInternalRecord(arg1, i2, arg2); + }; + this[`OPTION${idx}`] = function(arg1) { + return this.optionInternalRecord(arg1, i2); + }; + this[`OR${idx}`] = function(arg1) { + return this.orInternalRecord(arg1, i2); + }; + this[`MANY${idx}`] = function(arg1) { + this.manyInternalRecord(i2, arg1); + }; + this[`MANY_SEP${idx}`] = function(arg1) { + this.manySepFirstInternalRecord(i2, arg1); + }; + this[`AT_LEAST_ONE${idx}`] = function(arg1) { + this.atLeastOneInternalRecord(i2, arg1); + }; + this[`AT_LEAST_ONE_SEP${idx}`] = function(arg1) { + this.atLeastOneSepFirstInternalRecord(i2, arg1); + }; + } + this[`consume`] = function(idx, arg1, arg2) { + return this.consumeInternalRecord(arg1, idx, arg2); }; - } else if (options3.nodeDimensionsIncludeLabels) { - var bbDim = this.boundingBox(); - dims = { - w: bbDim.w, - h: bbDim.h + this[`subrule`] = function(idx, arg1, arg2) { + return this.subruleInternalRecord(arg1, idx, arg2); }; - } else { - dims = { - w: this.outerWidth(), - h: this.outerHeight() + this[`option`] = function(idx, arg1) { + return this.optionInternalRecord(arg1, idx); }; - } - if (dims.w === 0 || dims.h === 0) { - dims.w = dims.h = 1; - } - return dims; - }, "layoutDimensions"), - // using standard layout options, apply position function (w/ or w/o animation) - layoutPositions: /* @__PURE__ */ __name(function layoutPositions(layout6, options3, fn3) { - var nodes6 = this.nodes().filter(function(n2) { - return !n2.isParent(); - }); - var cy = this.cy(); - var layoutEles = options3.eles; - var getMemoizeKey = /* @__PURE__ */ __name(function getMemoizeKey2(node3) { - return node3.id(); - }, "getMemoizeKey"); - var fnMem = memoize$1(fn3, getMemoizeKey); - layout6.emit({ - type: "layoutstart", - layout: layout6 - }); - layout6.animations = []; - var calculateSpacing = /* @__PURE__ */ __name(function calculateSpacing2(spacing2, nodesBb, pos) { - var center4 = { - x: nodesBb.x1 + nodesBb.w / 2, - y: nodesBb.y1 + nodesBb.h / 2 + this[`or`] = function(idx, arg1) { + return this.orInternalRecord(arg1, idx); }; - var spacingVector = { - // scale from center of bounding box (not necessarily 0,0) - x: (pos.x - center4.x) * spacing2, - y: (pos.y - center4.y) * spacing2 + this[`many`] = function(idx, arg1) { + this.manyInternalRecord(idx, arg1); }; - return { - x: center4.x + spacingVector.x, - y: center4.y + spacingVector.y + this[`atLeastOne`] = function(idx, arg1) { + this.atLeastOneInternalRecord(idx, arg1); }; - }, "calculateSpacing"); - var useSpacingFactor = options3.spacingFactor && options3.spacingFactor !== 1; - var spacingBb = /* @__PURE__ */ __name(function spacingBb2() { - if (!useSpacingFactor) { - return null; - } - var bb2 = makeBoundingBox(); - for (var i3 = 0; i3 < nodes6.length; i3++) { - var node3 = nodes6[i3]; - var pos = fnMem(node3, i3); - expandBoundingBoxByPoint(bb2, pos.x, pos.y); - } - return bb2; - }, "spacingBb"); - var bb = spacingBb(); - var getFinalPos = memoize$1(function(node3, i3) { - var newPos2 = fnMem(node3, i3); - if (useSpacingFactor) { - var spacing2 = Math.abs(options3.spacingFactor); - newPos2 = calculateSpacing(spacing2, bb, newPos2); - } - if (options3.transform != null) { - newPos2 = options3.transform(node3, newPos2); + this.ACTION = this.ACTION_RECORD; + this.BACKTRACK = this.BACKTRACK_RECORD; + this.LA = this.LA_RECORD; + }); + } + disableRecording() { + this.RECORDING_PHASE = false; + this.TRACE_INIT("Deleting Recording methods", () => { + const that = this; + for (let i2 = 0; i2 < 10; i2++) { + const idx = i2 > 0 ? i2 : ""; + delete that[`CONSUME${idx}`]; + delete that[`SUBRULE${idx}`]; + delete that[`OPTION${idx}`]; + delete that[`OR${idx}`]; + delete that[`MANY${idx}`]; + delete that[`MANY_SEP${idx}`]; + delete that[`AT_LEAST_ONE${idx}`]; + delete that[`AT_LEAST_ONE_SEP${idx}`]; } - return newPos2; - }, getMemoizeKey); - if (options3.animate) { - for (var i2 = 0; i2 < nodes6.length; i2++) { - var node2 = nodes6[i2]; - var newPos = getFinalPos(node2, i2); - var animateNode = options3.animateFilter == null || options3.animateFilter(node2, i2); - if (animateNode) { - var ani = node2.animation({ - position: newPos, - duration: options3.animationDuration, - easing: options3.animationEasing - }); - layout6.animations.push(ani); - } else { - node2.position(newPos); + delete that[`consume`]; + delete that[`subrule`]; + delete that[`option`]; + delete that[`or`]; + delete that[`many`]; + delete that[`atLeastOne`]; + delete that.ACTION; + delete that.BACKTRACK; + delete that.LA; + }); + } + // Parser methods are called inside an ACTION? + // Maybe try/catch/finally on ACTIONS while disabling the recorders state changes? + // @ts-expect-error -- noop place holder + ACTION_RECORD(impl2) { + } + // Executing backtracking logic will break our recording logic assumptions + BACKTRACK_RECORD(grammarRule, args) { + return () => true; + } + // LA is part of the official API and may be used for custom lookahead logic + // by end users who may forget to wrap it in ACTION or inside a GATE + LA_RECORD(howMuch) { + return END_OF_FILE; + } + topLevelRuleRecord(name, def) { + try { + const newTopLevelRule = new Rule({ definition: [], name }); + newTopLevelRule.name = name; + this.recordingProdStack.push(newTopLevelRule); + def.call(this); + this.recordingProdStack.pop(); + return newTopLevelRule; + } catch (originalError) { + if (originalError.KNOWN_RECORDER_ERROR !== true) { + try { + originalError.message = originalError.message + '\n This error was thrown during the "grammar recording phase" For more info see:\n https://chevrotain.io/docs/guide/internals.html#grammar-recording'; + } catch (mutabilityError) { + throw originalError; } } - if (options3.fit) { - var fitAni = cy.animation({ - fit: { - boundingBox: layoutEles.boundingBoxAt(getFinalPos), - padding: options3.padding - }, - duration: options3.animationDuration, - easing: options3.animationEasing - }); - layout6.animations.push(fitAni); - } else if (options3.zoom !== void 0 && options3.pan !== void 0) { - var zoomPanAni = cy.animation({ - zoom: options3.zoom, - pan: options3.pan, - duration: options3.animationDuration, - easing: options3.animationEasing - }); - layout6.animations.push(zoomPanAni); - } - layout6.animations.forEach(function(ani2) { - return ani2.play(); - }); - layout6.one("layoutready", options3.ready); - layout6.emit({ - type: "layoutready", - layout: layout6 - }); - Promise$1.all(layout6.animations.map(function(ani2) { - return ani2.promise(); - })).then(function() { - layout6.one("layoutstop", options3.stop); - layout6.emit({ - type: "layoutstop", - layout: layout6 - }); - }); - } else { - nodes6.positions(getFinalPos); - if (options3.fit) { - cy.fit(options3.eles, options3.padding); - } - if (options3.zoom != null) { - cy.zoom(options3.zoom); - } - if (options3.pan) { - cy.pan(options3.pan); - } - layout6.one("layoutready", options3.ready); - layout6.emit({ - type: "layoutready", - layout: layout6 - }); - layout6.one("layoutstop", options3.stop); - layout6.emit({ - type: "layoutstop", - layout: layout6 - }); - } - return this; - }, "layoutPositions"), - layout: /* @__PURE__ */ __name(function layout2(options3) { - var cy = this.cy(); - return cy.makeLayout(extend4({}, options3, { - eles: this - })); - }, "layout") - }; - elesfn$5.createLayout = elesfn$5.makeLayout = elesfn$5.layout; - __name(styleCache, "styleCache"); - __name(cacheStyleFunction, "cacheStyleFunction"); - __name(cachePrototypeStyleFunction, "cachePrototypeStyleFunction"); - elesfn$4 = { - recalculateRenderedStyle: /* @__PURE__ */ __name(function recalculateRenderedStyle(useCache) { - var cy = this.cy(); - var renderer9 = cy.renderer(); - var styleEnabled2 = cy.styleEnabled(); - if (renderer9 && styleEnabled2) { - renderer9.recalculateRenderedStyle(this, useCache); - } - return this; - }, "recalculateRenderedStyle"), - dirtyStyleCache: /* @__PURE__ */ __name(function dirtyStyleCache() { - var cy = this.cy(); - var dirty = /* @__PURE__ */ __name(function dirty2(ele) { - return ele._private.styleCache = null; - }, "dirty"); - if (cy.hasCompoundNodes()) { - var eles; - eles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); - eles.merge(eles.connectedEdges()); - eles.forEach(dirty); - } else { - this.forEach(function(ele) { - dirty(ele); - ele.connectedEdges().forEach(dirty); - }); - } - return this; - }, "dirtyStyleCache"), - // fully updates (recalculates) the style for the elements - updateStyle: /* @__PURE__ */ __name(function updateStyle(notifyRenderer) { - var cy = this._private.cy; - if (!cy.styleEnabled()) { - return this; - } - if (cy.batching()) { - var bEles = cy._private.batchStyleEles; - bEles.merge(this); - return this; + throw originalError; } - var hasCompounds = cy.hasCompoundNodes(); - var updatedEles = this; - notifyRenderer = notifyRenderer || notifyRenderer === void 0 ? true : false; - if (hasCompounds) { - updatedEles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); + } + // Implementation of parsing DSL + optionInternalRecord(actionORMethodDef, occurrence) { + return recordProd.call(this, Option2, actionORMethodDef, occurrence); + } + atLeastOneInternalRecord(occurrence, actionORMethodDef) { + recordProd.call(this, RepetitionMandatory, actionORMethodDef, occurrence); + } + atLeastOneSepFirstInternalRecord(occurrence, options2) { + recordProd.call(this, RepetitionMandatoryWithSeparator, options2, occurrence, HANDLE_SEPARATOR); + } + manyInternalRecord(occurrence, actionORMethodDef) { + recordProd.call(this, Repetition, actionORMethodDef, occurrence); + } + manySepFirstInternalRecord(occurrence, options2) { + recordProd.call(this, RepetitionWithSeparator, options2, occurrence, HANDLE_SEPARATOR); + } + orInternalRecord(altsOrOpts, occurrence) { + return recordOrProd.call(this, altsOrOpts, occurrence); + } + subruleInternalRecord(ruleToCall, occurrence, options2) { + assertMethodIdxIsValid(occurrence); + if (!ruleToCall || has_default(ruleToCall, "ruleName") === false) { + const error3 = new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(ruleToCall)}> + inside top level rule: <${this.recordingProdStack[0].name}>`); + error3.KNOWN_RECORDER_ERROR = true; + throw error3; } - var changedEles = updatedEles; - if (notifyRenderer) { - changedEles.emitAndNotify("style"); - } else { - changedEles.emit("style"); + const prevProd = last_default(this.recordingProdStack); + const ruleName = ruleToCall.ruleName; + const newNoneTerminal = new NonTerminal({ + idx: occurrence, + nonTerminalName: ruleName, + label: options2 === null || options2 === void 0 ? void 0 : options2.LABEL, + // The resolving of the `referencedRule` property will be done once all the Rule's GASTs have been created + referencedRule: void 0 + }); + prevProd.definition.push(newNoneTerminal); + return this.outputCst ? RECORDING_PHASE_CSTNODE : RECORDING_NULL_OBJECT; + } + consumeInternalRecord(tokType, occurrence, options2) { + assertMethodIdxIsValid(occurrence); + if (!hasShortKeyProperty(tokType)) { + const error3 = new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(tokType)}> + inside top level rule: <${this.recordingProdStack[0].name}>`); + error3.KNOWN_RECORDER_ERROR = true; + throw error3; } - updatedEles.forEach(function(ele) { - return ele._private.styleDirty = true; + const prevProd = last_default(this.recordingProdStack); + const newNoneTerminal = new Terminal({ + idx: occurrence, + terminalType: tokType, + label: options2 === null || options2 === void 0 ? void 0 : options2.LABEL }); - return this; - }, "updateStyle"), - // private: clears dirty flag and recalculates style - cleanStyle: /* @__PURE__ */ __name(function cleanStyle() { - var cy = this.cy(); - if (!cy.styleEnabled()) { - return; + prevProd.definition.push(newNoneTerminal); + return RECORDING_PHASE_TOKEN; + } + }; + __name(recordProd, "recordProd"); + __name(recordOrProd, "recordOrProd"); + __name(getIdxSuffix, "getIdxSuffix"); + __name(assertMethodIdxIsValid, "assertMethodIdxIsValid"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/perf_tracer.js + var PerformanceTracer; + var init_perf_tracer = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/traits/perf_tracer.js"() { + "use strict"; + init_lodash(); + init_api2(); + init_parser(); + PerformanceTracer = class { + static { + __name(this, "PerformanceTracer"); + } + initPerformanceTracer(config5) { + if (has_default(config5, "traceInitPerf")) { + const userTraceInitPerf = config5.traceInitPerf; + const traceIsNumber = typeof userTraceInitPerf === "number"; + this.traceInitMaxIdent = traceIsNumber ? userTraceInitPerf : Infinity; + this.traceInitPerf = traceIsNumber ? userTraceInitPerf > 0 : userTraceInitPerf; + } else { + this.traceInitMaxIdent = 0; + this.traceInitPerf = DEFAULT_PARSER_CONFIG.traceInitPerf; } - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - if (ele._private.styleDirty) { - ele._private.styleDirty = false; - cy.style().apply(ele); + this.traceInitIndent = -1; + } + TRACE_INIT(phaseDesc, phaseImpl) { + if (this.traceInitPerf === true) { + this.traceInitIndent++; + const indent = new Array(this.traceInitIndent + 1).join(" "); + if (this.traceInitIndent < this.traceInitMaxIdent) { + console.log(`${indent}--> <${phaseDesc}>`); } - } - }, "cleanStyle"), - // get the internal parsed style object for the specified property - parsedStyle: /* @__PURE__ */ __name(function parsedStyle(property2) { - var includeNonDefault = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - var ele = this[0]; - var cy = ele.cy(); - if (!cy.styleEnabled()) { - return; - } - if (ele) { - if (ele._private.styleDirty) { - ele._private.styleDirty = false; - cy.style().apply(ele); - } - var overriddenStyle = ele._private.style[property2]; - if (overriddenStyle != null) { - return overriddenStyle; - } else if (includeNonDefault) { - return cy.style().getDefaultProperty(property2); - } else { - return null; - } - } - }, "parsedStyle"), - numericStyle: /* @__PURE__ */ __name(function numericStyle(property2) { - var ele = this[0]; - if (!ele.cy().styleEnabled()) { - return; - } - if (ele) { - var pstyle = ele.pstyle(property2); - return pstyle.pfValue !== void 0 ? pstyle.pfValue : pstyle.value; - } - }, "numericStyle"), - numericStyleUnits: /* @__PURE__ */ __name(function numericStyleUnits(property2) { - var ele = this[0]; - if (!ele.cy().styleEnabled()) { - return; - } - if (ele) { - return ele.pstyle(property2).units; - } - }, "numericStyleUnits"), - // get the specified css property as a rendered value (i.e. on-screen value) - // or get the whole rendered style if no property specified (NB doesn't allow setting) - renderedStyle: /* @__PURE__ */ __name(function renderedStyle(property2) { - var cy = this.cy(); - if (!cy.styleEnabled()) { - return this; - } - var ele = this[0]; - if (ele) { - return cy.style().getRenderedStyle(ele, property2); - } - }, "renderedStyle"), - // read the calculated css style of the element or override the style (via a bypass) - style: /* @__PURE__ */ __name(function style(name, value2) { - var cy = this.cy(); - if (!cy.styleEnabled()) { - return this; - } - var updateTransitions = false; - var style3 = cy.style(); - if (plainObject(name)) { - var props = name; - style3.applyBypass(this, props, updateTransitions); - this.emitAndNotify("style"); - } else if (string(name)) { - if (value2 === void 0) { - var ele = this[0]; - if (ele) { - return style3.getStylePropertyValue(ele, name); - } else { - return; - } - } else { - style3.applyBypass(this, name, value2, updateTransitions); - this.emitAndNotify("style"); - } - } else if (name === void 0) { - var _ele = this[0]; - if (_ele) { - return style3.getRawStyle(_ele); - } else { - return; - } - } - return this; - }, "style"), - removeStyle: /* @__PURE__ */ __name(function removeStyle(names) { - var cy = this.cy(); - if (!cy.styleEnabled()) { - return this; - } - var updateTransitions = false; - var style3 = cy.style(); - var eles = this; - if (names === void 0) { - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - style3.removeAllBypasses(ele, updateTransitions); + const { time: time4, value: value2 } = timer2(phaseImpl); + const traceMethod = time4 > 10 ? console.warn : console.log; + if (this.traceInitIndent < this.traceInitMaxIdent) { + traceMethod(`${indent}<-- <${phaseDesc}> time: ${time4}ms`); } + this.traceInitIndent--; + return value2; } else { - names = names.split(/\s+/); - for (var _i = 0; _i < eles.length; _i++) { - var _ele2 = eles[_i]; - style3.removeBypasses(_ele2, names, updateTransitions); - } - } - this.emitAndNotify("style"); - return this; - }, "removeStyle"), - show: /* @__PURE__ */ __name(function show() { - this.css("display", "element"); - return this; - }, "show"), - hide: /* @__PURE__ */ __name(function hide() { - this.css("display", "none"); - return this; - }, "hide"), - effectiveOpacity: /* @__PURE__ */ __name(function effectiveOpacity() { - var cy = this.cy(); - if (!cy.styleEnabled()) { - return 1; - } - var hasCompoundNodes2 = cy.hasCompoundNodes(); - var ele = this[0]; - if (ele) { - var _p = ele._private; - var parentOpacity = ele.pstyle("opacity").value; - if (!hasCompoundNodes2) { - return parentOpacity; - } - var parents3 = !_p.data.parent ? null : ele.parents(); - if (parents3) { - for (var i2 = 0; i2 < parents3.length; i2++) { - var parent4 = parents3[i2]; - var opacity = parent4.pstyle("opacity").value; - parentOpacity = opacity * parentOpacity; - } - } - return parentOpacity; - } - }, "effectiveOpacity"), - transparent: /* @__PURE__ */ __name(function transparent() { - var cy = this.cy(); - if (!cy.styleEnabled()) { - return false; - } - var ele = this[0]; - var hasCompoundNodes2 = ele.cy().hasCompoundNodes(); - if (ele) { - if (!hasCompoundNodes2) { - return ele.pstyle("opacity").value === 0; - } else { - return ele.effectiveOpacity() === 0; - } - } - }, "transparent"), - backgrounding: /* @__PURE__ */ __name(function backgrounding() { - var cy = this.cy(); - if (!cy.styleEnabled()) { - return false; + return phaseImpl(); } - var ele = this[0]; - return ele._private.backgrounding ? true : false; - }, "backgrounding") - }; - __name(checkCompound, "checkCompound"); - __name(defineDerivedStateFunction, "defineDerivedStateFunction"); - eleTakesUpSpace = cacheStyleFunction("eleTakesUpSpace", function(ele) { - return ele.pstyle("display").value === "element" && ele.width() !== 0 && (ele.isNode() ? ele.height() !== 0 : true); - }); - elesfn$4.takesUpSpace = cachePrototypeStyleFunction("takesUpSpace", defineDerivedStateFunction({ - ok: eleTakesUpSpace - })); - eleInteractive = cacheStyleFunction("eleInteractive", function(ele) { - return ele.pstyle("events").value === "yes" && ele.pstyle("visibility").value === "visible" && eleTakesUpSpace(ele); - }); - parentInteractive = cacheStyleFunction("parentInteractive", function(parent4) { - return parent4.pstyle("visibility").value === "visible" && eleTakesUpSpace(parent4); - }); - elesfn$4.interactive = cachePrototypeStyleFunction("interactive", defineDerivedStateFunction({ - ok: eleInteractive, - parentOk: parentInteractive, - edgeOkViaNode: eleTakesUpSpace - })); - elesfn$4.noninteractive = function() { - var ele = this[0]; - if (ele) { - return !ele.interactive(); } }; - eleVisible = cacheStyleFunction("eleVisible", function(ele) { - return ele.pstyle("visibility").value === "visible" && ele.pstyle("opacity").pfValue !== 0 && eleTakesUpSpace(ele); - }); - edgeVisibleViaNode = eleTakesUpSpace; - elesfn$4.visible = cachePrototypeStyleFunction("visible", defineDerivedStateFunction({ - ok: eleVisible, - edgeOkViaNode: edgeVisibleViaNode - })); - elesfn$4.hidden = function() { - var ele = this[0]; - if (ele) { - return !ele.visible(); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/utils/apply_mixins.js + function applyMixins(derivedCtor, baseCtors) { + baseCtors.forEach((baseCtor) => { + const baseProto = baseCtor.prototype; + Object.getOwnPropertyNames(baseProto).forEach((propName) => { + if (propName === "constructor") { + return; } - }; - elesfn$4.isBundledBezier = cachePrototypeStyleFunction("isBundledBezier", function() { - if (!this.cy().styleEnabled()) { - return false; + const basePropDescriptor = Object.getOwnPropertyDescriptor(baseProto, propName); + if (basePropDescriptor && (basePropDescriptor.get || basePropDescriptor.set)) { + Object.defineProperty(derivedCtor.prototype, propName, basePropDescriptor); + } else { + derivedCtor.prototype[propName] = baseCtor.prototype[propName]; } - return !this.removed() && this.pstyle("curve-style").value === "bezier" && this.takesUpSpace(); - }); - elesfn$4.bypass = elesfn$4.css = elesfn$4.style; - elesfn$4.renderedCss = elesfn$4.renderedStyle; - elesfn$4.removeBypass = elesfn$4.removeCss = elesfn$4.removeStyle; - elesfn$4.pstyle = elesfn$4.parsedStyle; - elesfn$3 = {}; - __name(defineSwitchFunction, "defineSwitchFunction"); - __name(defineSwitchSet, "defineSwitchSet"); - defineSwitchSet({ - field: "locked", - overrideField: /* @__PURE__ */ __name(function overrideField(ele) { - return ele.cy().autolock() ? true : void 0; - }, "overrideField"), - on: "lock", - off: "unlock" - }); - defineSwitchSet({ - field: "grabbable", - overrideField: /* @__PURE__ */ __name(function overrideField2(ele) { - return ele.cy().autoungrabify() || ele.pannable() ? false : void 0; - }, "overrideField"), - on: "grabify", - off: "ungrabify" - }); - defineSwitchSet({ - field: "selected", - ableField: "selectable", - overrideAble: /* @__PURE__ */ __name(function overrideAble(ele) { - return ele.cy().autounselectify() ? false : void 0; - }, "overrideAble"), - on: "select", - off: "unselect" - }); - defineSwitchSet({ - field: "selectable", - overrideField: /* @__PURE__ */ __name(function overrideField3(ele) { - return ele.cy().autounselectify() ? false : void 0; - }, "overrideField"), - on: "selectify", - off: "unselectify" }); - elesfn$3.deselect = elesfn$3.unselect; - elesfn$3.grabbed = function() { - var ele = this[0]; - if (ele) { - return ele._private.grabbed; - } - }; - defineSwitchSet({ - field: "active", - on: "activate", - off: "unactivate" + }); + } + var init_apply_mixins = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/utils/apply_mixins.js"() { + "use strict"; + __name(applyMixins, "applyMixins"); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/parser.js + function EMPTY_ALT(value2 = void 0) { + return function() { + return value2; + }; + } + var END_OF_FILE, DEFAULT_PARSER_CONFIG, DEFAULT_RULE_CONFIG, ParserDefinitionErrorType, Parser2, EmbeddedActionsParser; + var init_parser = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/parse/parser/parser.js"() { + "use strict"; + init_lodash(); + init_api2(); + init_follow(); + init_tokens_public(); + init_errors_public(); + init_gast_resolver_public(); + init_recoverable(); + init_looksahead(); + init_tree_builder(); + init_lexer_adapter(); + init_recognizer_api(); + init_recognizer_engine(); + init_error_handler(); + init_context_assist(); + init_gast_recorder(); + init_perf_tracer(); + init_apply_mixins(); + init_checks(); + END_OF_FILE = createTokenInstance(EOF, "", NaN, NaN, NaN, NaN, NaN, NaN); + Object.freeze(END_OF_FILE); + DEFAULT_PARSER_CONFIG = Object.freeze({ + recoveryEnabled: false, + maxLookahead: 3, + dynamicTokensEnabled: false, + outputCst: true, + errorMessageProvider: defaultParserErrorProvider, + nodeLocationTracking: "none", + traceInitPerf: false, + skipValidations: false }); - defineSwitchSet({ - field: "pannable", - on: "panify", - off: "unpanify" + DEFAULT_RULE_CONFIG = Object.freeze({ + recoveryValueFunc: /* @__PURE__ */ __name(() => void 0, "recoveryValueFunc"), + resyncEnabled: true }); - elesfn$3.inactive = function() { - var ele = this[0]; - if (ele) { - return !ele._private.active; + (function(ParserDefinitionErrorType2) { + ParserDefinitionErrorType2[ParserDefinitionErrorType2["INVALID_RULE_NAME"] = 0] = "INVALID_RULE_NAME"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["DUPLICATE_RULE_NAME"] = 1] = "DUPLICATE_RULE_NAME"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["INVALID_RULE_OVERRIDE"] = 2] = "INVALID_RULE_OVERRIDE"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["DUPLICATE_PRODUCTIONS"] = 3] = "DUPLICATE_PRODUCTIONS"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["UNRESOLVED_SUBRULE_REF"] = 4] = "UNRESOLVED_SUBRULE_REF"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["LEFT_RECURSION"] = 5] = "LEFT_RECURSION"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["NONE_LAST_EMPTY_ALT"] = 6] = "NONE_LAST_EMPTY_ALT"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["AMBIGUOUS_ALTS"] = 7] = "AMBIGUOUS_ALTS"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["CONFLICT_TOKENS_RULES_NAMESPACE"] = 8] = "CONFLICT_TOKENS_RULES_NAMESPACE"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["INVALID_TOKEN_NAME"] = 9] = "INVALID_TOKEN_NAME"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["NO_NON_EMPTY_LOOKAHEAD"] = 10] = "NO_NON_EMPTY_LOOKAHEAD"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["AMBIGUOUS_PREFIX_ALTS"] = 11] = "AMBIGUOUS_PREFIX_ALTS"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["TOO_MANY_ALTS"] = 12] = "TOO_MANY_ALTS"; + ParserDefinitionErrorType2[ParserDefinitionErrorType2["CUSTOM_LOOKAHEAD_VALIDATION"] = 13] = "CUSTOM_LOOKAHEAD_VALIDATION"; + })(ParserDefinitionErrorType || (ParserDefinitionErrorType = {})); + __name(EMPTY_ALT, "EMPTY_ALT"); + Parser2 = class _Parser { + static { + __name(this, "Parser"); } - }; - elesfn$2 = {}; - defineDagExtremity = /* @__PURE__ */ __name(function defineDagExtremity2(params) { - return /* @__PURE__ */ __name(function dagExtremityImpl(selector) { - var eles = this; - var ret = []; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - if (!ele.isNode()) { - continue; - } - var disqualified = false; - var edges3 = ele.connectedEdges(); - for (var j2 = 0; j2 < edges3.length; j2++) { - var edge = edges3[j2]; - var src = edge.source(); - var tgt = edge.target(); - if (params.noIncomingEdges && tgt === ele && src !== ele || params.noOutgoingEdges && src === ele && tgt !== ele) { - disqualified = true; - break; - } - } - if (!disqualified) { - ret.push(ele); - } - } - return this.spawn(ret, true).filter(selector); - }, "dagExtremityImpl"); - }, "defineDagExtremity"); - defineDagOneHop = /* @__PURE__ */ __name(function defineDagOneHop2(params) { - return function(selector) { - var eles = this; - var oEles = []; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - if (!ele.isNode()) { - continue; - } - var edges3 = ele.connectedEdges(); - for (var j2 = 0; j2 < edges3.length; j2++) { - var edge = edges3[j2]; - var src = edge.source(); - var tgt = edge.target(); - if (params.outgoing && src === ele) { - oEles.push(edge); - oEles.push(tgt); - } else if (params.incoming && tgt === ele) { - oEles.push(edge); - oEles.push(src); - } - } - } - return this.spawn(oEles, true).filter(selector); - }; - }, "defineDagOneHop"); - defineDagAllHops = /* @__PURE__ */ __name(function defineDagAllHops2(params) { - return function(selector) { - var eles = this; - var sEles = []; - var sElesIds = {}; - for (; ; ) { - var next3 = params.outgoing ? eles.outgoers() : eles.incomers(); - if (next3.length === 0) { - break; - } - var newNext = false; - for (var i2 = 0; i2 < next3.length; i2++) { - var n2 = next3[i2]; - var nid = n2.id(); - if (!sElesIds[nid]) { - sElesIds[nid] = true; - sEles.push(n2); - newNext = true; - } - } - if (!newNext) { - break; - } - eles = next3; - } - return this.spawn(sEles, true).filter(selector); - }; - }, "defineDagAllHops"); - elesfn$2.clearTraversalCache = function() { - for (var i2 = 0; i2 < this.length; i2++) { - this[i2]._private.traversalCache = null; + /** + * @deprecated use the **instance** method with the same name instead + */ + static performSelfAnalysis(parserInstance) { + throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead."); } - }; - extend4(elesfn$2, { - // get the root nodes in the DAG - roots: defineDagExtremity({ - noIncomingEdges: true - }), - // get the leaf nodes in the DAG - leaves: defineDagExtremity({ - noOutgoingEdges: true - }), - // normally called children in graph theory - // these nodes =edges=> outgoing nodes - outgoers: cache(defineDagOneHop({ - outgoing: true - }), "outgoers"), - // aka DAG descendants - successors: defineDagAllHops({ - outgoing: true - }), - // normally called parents in graph theory - // these nodes <=edges= incoming nodes - incomers: cache(defineDagOneHop({ - incoming: true - }), "incomers"), - // aka DAG ancestors - predecessors: defineDagAllHops({ - incoming: true - }) - }); - extend4(elesfn$2, { - neighborhood: cache(function(selector) { - var elements3 = []; - var nodes6 = this.nodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - var node2 = nodes6[i2]; - var connectedEdges = node2.connectedEdges(); - for (var j2 = 0; j2 < connectedEdges.length; j2++) { - var edge = connectedEdges[j2]; - var src = edge.source(); - var tgt = edge.target(); - var otherNode = node2 === src ? tgt : src; - if (otherNode.length > 0) { - elements3.push(otherNode[0]); + performSelfAnalysis() { + this.TRACE_INIT("performSelfAnalysis", () => { + let defErrorsMsgs; + this.selfAnalysisDone = true; + const className = this.className; + this.TRACE_INIT("toFastProps", () => { + toFastProperties(this); + }); + this.TRACE_INIT("Grammar Recording", () => { + try { + this.enableRecording(); + forEach_default(this.definedRulesNames, (currRuleName) => { + const wrappedRule = this[currRuleName]; + const originalGrammarAction = wrappedRule["originalGrammarAction"]; + let recordedRuleGast; + this.TRACE_INIT(`${currRuleName} Rule`, () => { + recordedRuleGast = this.topLevelRuleRecord(currRuleName, originalGrammarAction); + }); + this.gastProductionsCache[currRuleName] = recordedRuleGast; + }); + } finally { + this.disableRecording(); } - elements3.push(edge[0]); - } - } - return this.spawn(elements3, true).filter(selector); - }, "neighborhood"), - closedNeighborhood: /* @__PURE__ */ __name(function closedNeighborhood(selector) { - return this.neighborhood().add(this).filter(selector); - }, "closedNeighborhood"), - openNeighborhood: /* @__PURE__ */ __name(function openNeighborhood(selector) { - return this.neighborhood(selector); - }, "openNeighborhood") - }); - elesfn$2.neighbourhood = elesfn$2.neighborhood; - elesfn$2.closedNeighbourhood = elesfn$2.closedNeighborhood; - elesfn$2.openNeighbourhood = elesfn$2.openNeighborhood; - extend4(elesfn$2, { - source: cache(/* @__PURE__ */ __name(function sourceImpl(selector) { - var ele = this[0]; - var src; - if (ele) { - src = ele._private.source || ele.cy().collection(); - } - return src && selector ? src.filter(selector) : src; - }, "sourceImpl"), "source"), - target: cache(/* @__PURE__ */ __name(function targetImpl(selector) { - var ele = this[0]; - var tgt; - if (ele) { - tgt = ele._private.target || ele.cy().collection(); - } - return tgt && selector ? tgt.filter(selector) : tgt; - }, "targetImpl"), "target"), - sources: defineSourceFunction({ - attr: "source" - }), - targets: defineSourceFunction({ - attr: "target" - }) - }); - __name(defineSourceFunction, "defineSourceFunction"); - extend4(elesfn$2, { - edgesWith: cache(defineEdgesWithFunction(), "edgesWith"), - edgesTo: cache(defineEdgesWithFunction({ - thisIsSrc: true - }), "edgesTo") - }); - __name(defineEdgesWithFunction, "defineEdgesWithFunction"); - extend4(elesfn$2, { - connectedEdges: cache(function(selector) { - var retEles = []; - var eles = this; - for (var i2 = 0; i2 < eles.length; i2++) { - var node2 = eles[i2]; - if (!node2.isNode()) { - continue; - } - var edges3 = node2._private.edges; - for (var j2 = 0; j2 < edges3.length; j2++) { - var edge = edges3[j2]; - retEles.push(edge); - } - } - return this.spawn(retEles, true).filter(selector); - }, "connectedEdges"), - connectedNodes: cache(function(selector) { - var retEles = []; - var eles = this; - for (var i2 = 0; i2 < eles.length; i2++) { - var edge = eles[i2]; - if (!edge.isEdge()) { - continue; - } - retEles.push(edge.source()[0]); - retEles.push(edge.target()[0]); - } - return this.spawn(retEles, true).filter(selector); - }, "connectedNodes"), - parallelEdges: cache(defineParallelEdgesFunction(), "parallelEdges"), - codirectedEdges: cache(defineParallelEdgesFunction({ - codirected: true - }), "codirectedEdges") - }); - __name(defineParallelEdgesFunction, "defineParallelEdgesFunction"); - extend4(elesfn$2, { - components: /* @__PURE__ */ __name(function components2(root4) { - var self2 = this; - var cy = self2.cy(); - var visited = cy.collection(); - var unvisited = root4 == null ? self2.nodes() : root4.nodes(); - var components3 = []; - if (root4 != null && unvisited.empty()) { - unvisited = root4.sources(); - } - var visitInComponent = /* @__PURE__ */ __name(function visitInComponent2(node2, component2) { - visited.merge(node2); - unvisited.unmerge(node2); - component2.merge(node2); - }, "visitInComponent"); - if (unvisited.empty()) { - return self2.spawn(); - } - var _loop = /* @__PURE__ */ __name(function _loop2() { - var cmpt = cy.collection(); - components3.push(cmpt); - var root5 = unvisited[0]; - visitInComponent(root5, cmpt); - self2.bfs({ - directed: false, - roots: root5, - visit: /* @__PURE__ */ __name(function visit(v3) { - return visitInComponent(v3, cmpt); - }, "visit") }); - cmpt.forEach(function(node2) { - node2.connectedEdges().forEach(function(e3) { - if (self2.has(e3) && cmpt.has(e3.source()) && cmpt.has(e3.target())) { - cmpt.merge(e3); - } + let resolverErrors = []; + this.TRACE_INIT("Grammar Resolving", () => { + resolverErrors = resolveGrammar2({ + rules: values_default(this.gastProductionsCache) }); + this.definitionErrors = this.definitionErrors.concat(resolverErrors); }); - }, "_loop"); - do { - _loop(); - } while (unvisited.length > 0); - return components3; - }, "components"), - component: /* @__PURE__ */ __name(function component() { - var ele = this[0]; - return ele.cy().mutableElements().components(ele)[0]; - }, "component") - }); - elesfn$2.componentsOf = elesfn$2.components; - Collection = /* @__PURE__ */ __name(function Collection2(cy, elements3) { - var unique = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; - var removed = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false; - if (cy === void 0) { - error("A collection must have a reference to the core"); - return; - } - var map5 = new Map$2(); - var createdElements = false; - if (!elements3) { - elements3 = []; - } else if (elements3.length > 0 && plainObject(elements3[0]) && !element(elements3[0])) { - createdElements = true; - var eles = []; - var elesIds = new Set$1(); - for (var i2 = 0, l2 = elements3.length; i2 < l2; i2++) { - var json3 = elements3[i2]; - if (json3.data == null) { - json3.data = {}; - } - var _data = json3.data; - if (_data.id == null) { - _data.id = uuid(); - } else if (cy.hasElementWithId(_data.id) || elesIds.has(_data.id)) { - continue; - } - var ele = new Element2(cy, json3, false); - eles.push(ele); - elesIds.add(_data.id); - } - elements3 = eles; - } - this.length = 0; - for (var _i = 0, _l = elements3.length; _i < _l; _i++) { - var element$1 = elements3[_i][0]; - if (element$1 == null) { - continue; - } - var id29 = element$1._private.data.id; - if (!unique || !map5.has(id29)) { - if (unique) { - map5.set(id29, { - index: this.length, - ele: element$1 - }); - } - this[this.length] = element$1; - this.length++; - } - } - this._private = { - eles: this, - cy, - get map() { - if (this.lazyMap == null) { - this.rebuildMap(); - } - return this.lazyMap; - }, - set map(m2) { - this.lazyMap = m2; - }, - rebuildMap: /* @__PURE__ */ __name(function rebuildMap() { - var m2 = this.lazyMap = new Map$2(); - var eles2 = this.eles; - for (var _i2 = 0; _i2 < eles2.length; _i2++) { - var _ele = eles2[_i2]; - m2.set(_ele.id(), { - index: _i2, - ele: _ele - }); - } - }, "rebuildMap") - }; - if (unique) { - this._private.map = map5; - } - if (createdElements && !removed) { - this.restore(); - } - }, "Collection"); - elesfn$1 = Element2.prototype = Collection.prototype = Object.create(Array.prototype); - elesfn$1.instanceString = function() { - return "collection"; - }; - elesfn$1.spawn = function(eles, unique) { - return new Collection(this.cy(), eles, unique); - }; - elesfn$1.spawnSelf = function() { - return this.spawn(this); - }; - elesfn$1.cy = function() { - return this._private.cy; - }; - elesfn$1.renderer = function() { - return this._private.cy.renderer(); - }; - elesfn$1.element = function() { - return this[0]; - }; - elesfn$1.collection = function() { - if (collection(this)) { - return this; - } else { - return new Collection(this._private.cy, [this]); - } - }; - elesfn$1.unique = function() { - return new Collection(this._private.cy, this, true); - }; - elesfn$1.hasElementWithId = function(id29) { - id29 = "" + id29; - return this._private.map.has(id29); - }; - elesfn$1.getElementById = function(id29) { - id29 = "" + id29; - var cy = this._private.cy; - var entry = this._private.map.get(id29); - return entry ? entry.ele : new Collection(cy); - }; - elesfn$1.$id = elesfn$1.getElementById; - elesfn$1.poolIndex = function() { - var cy = this._private.cy; - var eles = cy._private.elements; - var id29 = this[0]._private.data.id; - return eles._private.map.get(id29).index; - }; - elesfn$1.indexOf = function(ele) { - var id29 = ele[0]._private.data.id; - return this._private.map.get(id29).index; - }; - elesfn$1.indexOfId = function(id29) { - id29 = "" + id29; - return this._private.map.get(id29).index; - }; - elesfn$1.json = function(obj) { - var ele = this.element(); - var cy = this.cy(); - if (ele == null && obj) { - return this; - } - if (ele == null) { - return void 0; - } - var p3 = ele._private; - if (plainObject(obj)) { - cy.startBatch(); - if (obj.data) { - ele.data(obj.data); - var _data2 = p3.data; - if (ele.isEdge()) { - var move = false; - var spec = {}; - var src = obj.data.source; - var tgt = obj.data.target; - if (src != null && src != _data2.source) { - spec.source = "" + src; - move = true; - } - if (tgt != null && tgt != _data2.target) { - spec.target = "" + tgt; - move = true; - } - if (move) { - ele = ele.move(spec); + this.TRACE_INIT("Grammar Validations", () => { + if (isEmpty_default(resolverErrors) && this.skipValidations === false) { + const validationErrors = validateGrammar2({ + rules: values_default(this.gastProductionsCache), + tokenTypes: values_default(this.tokensMap), + errMsgProvider: defaultGrammarValidatorErrorProvider, + grammarName: className + }); + const lookaheadValidationErrors = validateLookahead({ + lookaheadStrategy: this.lookaheadStrategy, + rules: values_default(this.gastProductionsCache), + tokenTypes: values_default(this.tokensMap), + grammarName: className + }); + this.definitionErrors = this.definitionErrors.concat(validationErrors, lookaheadValidationErrors); } - } else { - var newParentValSpecd = "parent" in obj.data; - var parent4 = obj.data.parent; - if (newParentValSpecd && (parent4 != null || _data2.parent != null) && parent4 != _data2.parent) { - if (parent4 === void 0) { - parent4 = null; - } - if (parent4 != null) { - parent4 = "" + parent4; - } - ele = ele.move({ - parent: parent4 + }); + if (isEmpty_default(this.definitionErrors)) { + if (this.recoveryEnabled) { + this.TRACE_INIT("computeAllProdsFollows", () => { + const allFollows = computeAllProdsFollows(values_default(this.gastProductionsCache)); + this.resyncFollows = allFollows; }); } + this.TRACE_INIT("ComputeLookaheadFunctions", () => { + var _a, _b; + (_b = (_a = this.lookaheadStrategy).initialize) === null || _b === void 0 ? void 0 : _b.call(_a, { + rules: values_default(this.gastProductionsCache) + }); + this.preComputeLookaheadFunctions(values_default(this.gastProductionsCache)); + }); } - } - if (obj.position) { - ele.position(obj.position); - } - var checkSwitch = /* @__PURE__ */ __name(function checkSwitch2(k2, trueFnName, falseFnName) { - var obj_k = obj[k2]; - if (obj_k != null && obj_k !== p3[k2]) { - if (obj_k) { - ele[trueFnName](); - } else { - ele[falseFnName](); - } + if (!_Parser.DEFER_DEFINITION_ERRORS_HANDLING && !isEmpty_default(this.definitionErrors)) { + defErrorsMsgs = map_default(this.definitionErrors, (defError) => defError.message); + throw new Error(`Parser Definition Errors detected: + ${defErrorsMsgs.join("\n-------------------------------\n")}`); } - }, "checkSwitch"); - checkSwitch("removed", "remove", "restore"); - checkSwitch("selected", "select", "unselect"); - checkSwitch("selectable", "selectify", "unselectify"); - checkSwitch("locked", "lock", "unlock"); - checkSwitch("grabbable", "grabify", "ungrabify"); - checkSwitch("pannable", "panify", "unpanify"); - if (obj.classes != null) { - ele.classes(obj.classes); - } - cy.endBatch(); - return this; - } else if (obj === void 0) { - var json3 = { - data: copy3(p3.data), - position: copy3(p3.position), - group: p3.group, - removed: p3.removed, - selected: p3.selected, - selectable: p3.selectable, - locked: p3.locked, - grabbable: p3.grabbable, - pannable: p3.pannable, - classes: null - }; - json3.classes = ""; - var i2 = 0; - p3.classes.forEach(function(cls) { - return json3.classes += i2++ === 0 ? cls : " " + cls; }); - return json3; - } - }; - elesfn$1.jsons = function() { - var jsons = []; - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - var json3 = ele.json(); - jsons.push(json3); - } - return jsons; - }; - elesfn$1.clone = function() { - var cy = this.cy(); - var elesArr = []; - for (var i2 = 0; i2 < this.length; i2++) { - var ele = this[i2]; - var json3 = ele.json(); - var clone6 = new Element2(cy, json3, false); - elesArr.push(clone6); - } - return new Collection(cy, elesArr); - }; - elesfn$1.copy = elesfn$1.clone; - elesfn$1.restore = function() { - var notifyRenderer = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; - var addToPool2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - var self2 = this; - var cy = self2.cy(); - var cy_p = cy._private; - var nodes6 = []; - var edges3 = []; - var elements3; - for (var _i3 = 0, l2 = self2.length; _i3 < l2; _i3++) { - var ele = self2[_i3]; - if (addToPool2 && !ele.removed()) { - continue; - } - if (ele.isNode()) { - nodes6.push(ele); - } else { - edges3.push(ele); - } } - elements3 = nodes6.concat(edges3); - var i2; - var removeFromElements = /* @__PURE__ */ __name(function removeFromElements2() { - elements3.splice(i2, 1); - i2--; - }, "removeFromElements"); - for (i2 = 0; i2 < elements3.length; i2++) { - var _ele2 = elements3[i2]; - var _private = _ele2._private; - var _data3 = _private.data; - _ele2.clearTraversalCache(); - if (!addToPool2 && !_private.removed) ; - else if (_data3.id === void 0) { - _data3.id = uuid(); - } else if (number$1(_data3.id)) { - _data3.id = "" + _data3.id; - } else if (emptyString(_data3.id) || !string(_data3.id)) { - error("Can not create element with invalid string ID `" + _data3.id + "`"); - removeFromElements(); - continue; - } else if (cy.hasElementWithId(_data3.id)) { - error("Can not create second element with ID `" + _data3.id + "`"); - removeFromElements(); - continue; - } - var id29 = _data3.id; - if (_ele2.isNode()) { - var pos = _private.position; - if (pos.x == null) { - pos.x = 0; - } - if (pos.y == null) { - pos.y = 0; - } - } - if (_ele2.isEdge()) { - var edge = _ele2; - var fields = ["source", "target"]; - var fieldsLength = fields.length; - var badSourceOrTarget = false; - for (var j2 = 0; j2 < fieldsLength; j2++) { - var field = fields[j2]; - var val = _data3[field]; - if (number$1(val)) { - val = _data3[field] = "" + _data3[field]; - } - if (val == null || val === "") { - error("Can not create edge `" + id29 + "` with unspecified " + field); - badSourceOrTarget = true; - } else if (!cy.hasElementWithId(val)) { - error("Can not create edge `" + id29 + "` with nonexistant " + field + " `" + val + "`"); - badSourceOrTarget = true; - } - } - if (badSourceOrTarget) { - removeFromElements(); - continue; - } - var src = cy.getElementById(_data3.source); - var tgt = cy.getElementById(_data3.target); - if (src.same(tgt)) { - src._private.edges.push(edge); - } else { - src._private.edges.push(edge); - tgt._private.edges.push(edge); - } - edge._private.source = src; - edge._private.target = tgt; - } - _private.map = new Map$2(); - _private.map.set(id29, { - ele: _ele2, - index: 0 - }); - _private.removed = false; - if (addToPool2) { - cy.addToPool(_ele2); + constructor(tokenVocabulary, config5) { + this.definitionErrors = []; + this.selfAnalysisDone = false; + const that = this; + that.initErrorHandler(config5); + that.initLexerAdapter(); + that.initLooksAhead(config5); + that.initRecognizerEngine(tokenVocabulary, config5); + that.initRecoverable(config5); + that.initTreeBuilder(config5); + that.initContentAssist(); + that.initGastRecorder(config5); + that.initPerformanceTracer(config5); + if (has_default(config5, "ignoredIssues")) { + throw new Error("The IParserConfig property has been deprecated.\n Please use the flag on the relevant DSL method instead.\n See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n For further details."); } + this.skipValidations = has_default(config5, "skipValidations") ? config5.skipValidations : DEFAULT_PARSER_CONFIG.skipValidations; } - for (var _i4 = 0; _i4 < nodes6.length; _i4++) { - var node2 = nodes6[_i4]; - var _data4 = node2._private.data; - if (number$1(_data4.parent)) { - _data4.parent = "" + _data4.parent; - } - var parentId = _data4.parent; - var specifiedParent = parentId != null; - if (specifiedParent || node2._private.parent) { - var parent4 = node2._private.parent ? cy.collection().merge(node2._private.parent) : cy.getElementById(parentId); - if (parent4.empty()) { - _data4.parent = void 0; - } else if (parent4[0].removed()) { - warn("Node added with missing parent, reference to parent removed"); - _data4.parent = void 0; - node2._private.parent = null; - } else { - var selfAsParent = false; - var ancestor = parent4; - while (!ancestor.empty()) { - if (node2.same(ancestor)) { - selfAsParent = true; - _data4.parent = void 0; - break; - } - ancestor = ancestor.parent(); - } - if (!selfAsParent) { - parent4[0]._private.children.push(node2); - node2._private.parent = parent4[0]; - cy_p.hasCompoundNodes = true; - } - } - } + }; + Parser2.DEFER_DEFINITION_ERRORS_HANDLING = false; + applyMixins(Parser2, [ + Recoverable, + LooksAhead, + TreeBuilder, + LexerAdapter, + RecognizerEngine, + RecognizerApi, + ErrorHandler, + ContentAssist, + GastRecorder, + PerformanceTracer + ]); + EmbeddedActionsParser = class extends Parser2 { + static { + __name(this, "EmbeddedActionsParser"); } - if (elements3.length > 0) { - var restored = elements3.length === self2.length ? self2 : new Collection(cy, elements3); - for (var _i5 = 0; _i5 < restored.length; _i5++) { - var _ele3 = restored[_i5]; - if (_ele3.isNode()) { - continue; - } - _ele3.parallelEdges().clearTraversalCache(); - _ele3.source().clearTraversalCache(); - _ele3.target().clearTraversalCache(); - } - var toUpdateStyle; - if (cy_p.hasCompoundNodes) { - toUpdateStyle = cy.collection().merge(restored).merge(restored.connectedNodes()).merge(restored.parent()); - } else { - toUpdateStyle = restored; - } - toUpdateStyle.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(notifyRenderer); - if (notifyRenderer) { - restored.emitAndNotify("add"); - } else if (addToPool2) { - restored.emit("add"); - } + constructor(tokenVocabulary, config5 = DEFAULT_PARSER_CONFIG) { + const configClone = clone_default2(config5); + configClone.outputCst = false; + super(tokenVocabulary, configClone); } - return self2; - }; - elesfn$1.removed = function() { - var ele = this[0]; - return ele && ele._private.removed; - }; - elesfn$1.inside = function() { - var ele = this[0]; - return ele && !ele._private.removed; }; - elesfn$1.remove = function() { - var notifyRenderer = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; - var removeFromPool2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - var self2 = this; - var elesToRemove = []; - var elesToRemoveIds = {}; - var cy = self2._private.cy; - function addConnectedEdges(node2) { - var edges3 = node2._private.edges; - for (var i3 = 0; i3 < edges3.length; i3++) { - add3(edges3[i3]); - } + } + }); + + // ../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/model.js + var init_model2 = __esm({ + "../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/model.js"() { + "use strict"; + init_api3(); + } + }); + + // ../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/generate.js + var init_generate = __esm({ + "../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/generate.js"() { + "use strict"; + } + }); + + // ../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/api.js + var init_api4 = __esm({ + "../../node_modules/.pnpm/@chevrotain+cst-dts-gen@11.0.3/node_modules/@chevrotain/cst-dts-gen/lib/src/api.js"() { + "use strict"; + init_model2(); + init_generate(); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/diagrams/render_public.js + var init_render_public = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/diagrams/render_public.js"() { + "use strict"; + init_version(); + } + }); + + // ../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/api.js + var init_api5 = __esm({ + "../../node_modules/.pnpm/chevrotain@11.0.3/node_modules/chevrotain/lib/src/api.js"() { + "use strict"; + init_version(); + init_parser(); + init_lexer_public(); + init_tokens_public(); + init_lookahead(); + init_llk_lookahead(); + init_errors_public(); + init_exceptions_public(); + init_lexer_errors_public(); + init_api3(); + init_api3(); + init_api4(); + init_render_public(); + } + }); + + // ../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/atn.js + function buildATNKey(rule, type3, occurrence) { + return `${rule.name}_${type3}_${occurrence}`; + } + function createATN(rules) { + const atn = { + decisionMap: {}, + decisionStates: [], + ruleToStartState: /* @__PURE__ */ new Map(), + ruleToStopState: /* @__PURE__ */ new Map(), + states: [] + }; + createRuleStartAndStopATNStates(atn, rules); + const ruleLength = rules.length; + for (let i2 = 0; i2 < ruleLength; i2++) { + const rule = rules[i2]; + const ruleBlock = block(atn, rule, rule); + if (ruleBlock === void 0) { + continue; + } + buildRuleHandle(atn, rule, ruleBlock); + } + return atn; + } + function createRuleStartAndStopATNStates(atn, rules) { + const ruleLength = rules.length; + for (let i2 = 0; i2 < ruleLength; i2++) { + const rule = rules[i2]; + const start3 = newState(atn, rule, void 0, { + type: ATN_RULE_START + }); + const stop5 = newState(atn, rule, void 0, { + type: ATN_RULE_STOP + }); + start3.stop = stop5; + atn.ruleToStartState.set(rule, start3); + atn.ruleToStopState.set(rule, stop5); + } + } + function atom(atn, rule, production) { + if (production instanceof Terminal) { + return tokenRef(atn, rule, production.terminalType, production); + } else if (production instanceof NonTerminal) { + return ruleRef(atn, rule, production); + } else if (production instanceof Alternation) { + return alternation(atn, rule, production); + } else if (production instanceof Option2) { + return option(atn, rule, production); + } else if (production instanceof Repetition) { + return repetition(atn, rule, production); + } else if (production instanceof RepetitionWithSeparator) { + return repetitionSep(atn, rule, production); + } else if (production instanceof RepetitionMandatory) { + return repetitionMandatory(atn, rule, production); + } else if (production instanceof RepetitionMandatoryWithSeparator) { + return repetitionMandatorySep(atn, rule, production); + } else { + return block(atn, rule, production); + } + } + function repetition(atn, rule, repetition2) { + const starState = newState(atn, rule, repetition2, { + type: ATN_STAR_BLOCK_START + }); + defineDecisionState(atn, starState); + const handle = makeAlts(atn, rule, starState, repetition2, block(atn, rule, repetition2)); + return star(atn, rule, repetition2, handle); + } + function repetitionSep(atn, rule, repetition2) { + const starState = newState(atn, rule, repetition2, { + type: ATN_STAR_BLOCK_START + }); + defineDecisionState(atn, starState); + const handle = makeAlts(atn, rule, starState, repetition2, block(atn, rule, repetition2)); + const sep2 = tokenRef(atn, rule, repetition2.separator, repetition2); + return star(atn, rule, repetition2, handle, sep2); + } + function repetitionMandatory(atn, rule, repetition2) { + const plusState = newState(atn, rule, repetition2, { + type: ATN_PLUS_BLOCK_START + }); + defineDecisionState(atn, plusState); + const handle = makeAlts(atn, rule, plusState, repetition2, block(atn, rule, repetition2)); + return plus(atn, rule, repetition2, handle); + } + function repetitionMandatorySep(atn, rule, repetition2) { + const plusState = newState(atn, rule, repetition2, { + type: ATN_PLUS_BLOCK_START + }); + defineDecisionState(atn, plusState); + const handle = makeAlts(atn, rule, plusState, repetition2, block(atn, rule, repetition2)); + const sep2 = tokenRef(atn, rule, repetition2.separator, repetition2); + return plus(atn, rule, repetition2, handle, sep2); + } + function alternation(atn, rule, alternation2) { + const start3 = newState(atn, rule, alternation2, { + type: ATN_BASIC + }); + defineDecisionState(atn, start3); + const alts = map_default(alternation2.definition, (e3) => atom(atn, rule, e3)); + const handle = makeAlts(atn, rule, start3, alternation2, ...alts); + return handle; + } + function option(atn, rule, option2) { + const start3 = newState(atn, rule, option2, { + type: ATN_BASIC + }); + defineDecisionState(atn, start3); + const handle = makeAlts(atn, rule, start3, option2, block(atn, rule, option2)); + return optional(atn, rule, option2, handle); + } + function block(atn, rule, block2) { + const handles = filter_default3(map_default(block2.definition, (e3) => atom(atn, rule, e3)), (e3) => e3 !== void 0); + if (handles.length === 1) { + return handles[0]; + } else if (handles.length === 0) { + return void 0; + } else { + return makeBlock(atn, handles); + } + } + function plus(atn, rule, plus2, handle, sep2) { + const blkStart = handle.left; + const blkEnd = handle.right; + const loop = newState(atn, rule, plus2, { + type: ATN_PLUS_LOOP_BACK + }); + defineDecisionState(atn, loop); + const end2 = newState(atn, rule, plus2, { + type: ATN_LOOP_END + }); + blkStart.loopback = loop; + end2.loopback = loop; + atn.decisionMap[buildATNKey(rule, sep2 ? "RepetitionMandatoryWithSeparator" : "RepetitionMandatory", plus2.idx)] = loop; + epsilon4(blkEnd, loop); + if (sep2 === void 0) { + epsilon4(loop, blkStart); + epsilon4(loop, end2); + } else { + epsilon4(loop, end2); + epsilon4(loop, sep2.left); + epsilon4(sep2.right, blkStart); + } + return { + left: blkStart, + right: end2 + }; + } + function star(atn, rule, star2, handle, sep2) { + const start3 = handle.left; + const end2 = handle.right; + const entry = newState(atn, rule, star2, { + type: ATN_STAR_LOOP_ENTRY + }); + defineDecisionState(atn, entry); + const loopEnd = newState(atn, rule, star2, { + type: ATN_LOOP_END + }); + const loop = newState(atn, rule, star2, { + type: ATN_STAR_LOOP_BACK + }); + entry.loopback = loop; + loopEnd.loopback = loop; + epsilon4(entry, start3); + epsilon4(entry, loopEnd); + epsilon4(end2, loop); + if (sep2 !== void 0) { + epsilon4(loop, loopEnd); + epsilon4(loop, sep2.left); + epsilon4(sep2.right, start3); + } else { + epsilon4(loop, entry); + } + atn.decisionMap[buildATNKey(rule, sep2 ? "RepetitionWithSeparator" : "Repetition", star2.idx)] = entry; + return { + left: entry, + right: loopEnd + }; + } + function optional(atn, rule, optional2, handle) { + const start3 = handle.left; + const end2 = handle.right; + epsilon4(start3, end2); + atn.decisionMap[buildATNKey(rule, "Option", optional2.idx)] = start3; + return handle; + } + function defineDecisionState(atn, state3) { + atn.decisionStates.push(state3); + state3.decision = atn.decisionStates.length - 1; + return state3.decision; + } + function makeAlts(atn, rule, start3, production, ...alts) { + const end2 = newState(atn, rule, production, { + type: ATN_BLOCK_END, + start: start3 + }); + start3.end = end2; + for (const alt of alts) { + if (alt !== void 0) { + epsilon4(start3, alt.left); + epsilon4(alt.right, end2); + } else { + epsilon4(start3, end2); + } + } + const handle = { + left: start3, + right: end2 + }; + atn.decisionMap[buildATNKey(rule, getProdType2(production), production.idx)] = start3; + return handle; + } + function getProdType2(production) { + if (production instanceof Alternation) { + return "Alternation"; + } else if (production instanceof Option2) { + return "Option"; + } else if (production instanceof Repetition) { + return "Repetition"; + } else if (production instanceof RepetitionWithSeparator) { + return "RepetitionWithSeparator"; + } else if (production instanceof RepetitionMandatory) { + return "RepetitionMandatory"; + } else if (production instanceof RepetitionMandatoryWithSeparator) { + return "RepetitionMandatoryWithSeparator"; + } else { + throw new Error("Invalid production type encountered"); + } + } + function makeBlock(atn, alts) { + const altsLength = alts.length; + for (let i2 = 0; i2 < altsLength - 1; i2++) { + const handle = alts[i2]; + let transition2; + if (handle.left.transitions.length === 1) { + transition2 = handle.left.transitions[0]; + } + const isRuleTransition = transition2 instanceof RuleTransition; + const ruleTransition = transition2; + const next3 = alts[i2 + 1].left; + if (handle.left.type === ATN_BASIC && handle.right.type === ATN_BASIC && transition2 !== void 0 && (isRuleTransition && ruleTransition.followState === handle.right || transition2.target === handle.right)) { + if (isRuleTransition) { + ruleTransition.followState = next3; + } else { + transition2.target = next3; } - __name(addConnectedEdges, "addConnectedEdges"); - function addChildren2(node2) { - var children2 = node2._private.children; - for (var i3 = 0; i3 < children2.length; i3++) { - add3(children2[i3]); - } + removeState(atn, handle.right); + } else { + epsilon4(handle.right, next3); + } + } + const first3 = alts[0]; + const last3 = alts[altsLength - 1]; + return { + left: first3.left, + right: last3.right + }; + } + function tokenRef(atn, rule, tokenType, production) { + const left3 = newState(atn, rule, production, { + type: ATN_BASIC + }); + const right3 = newState(atn, rule, production, { + type: ATN_BASIC + }); + addTransition(left3, new AtomTransition(right3, tokenType)); + return { + left: left3, + right: right3 + }; + } + function ruleRef(atn, currentRule, nonTerminal) { + const rule = nonTerminal.referencedRule; + const start3 = atn.ruleToStartState.get(rule); + const left3 = newState(atn, currentRule, nonTerminal, { + type: ATN_BASIC + }); + const right3 = newState(atn, currentRule, nonTerminal, { + type: ATN_BASIC + }); + const call = new RuleTransition(start3, rule, right3); + addTransition(left3, call); + return { + left: left3, + right: right3 + }; + } + function buildRuleHandle(atn, rule, block2) { + const start3 = atn.ruleToStartState.get(rule); + epsilon4(start3, block2.left); + const stop5 = atn.ruleToStopState.get(rule); + epsilon4(block2.right, stop5); + const handle = { + left: start3, + right: stop5 + }; + return handle; + } + function epsilon4(a2, b3) { + const transition2 = new EpsilonTransition(b3); + addTransition(a2, transition2); + } + function newState(atn, rule, production, partial) { + const t4 = Object.assign({ + atn, + production, + epsilonOnlyTransitions: false, + rule, + transitions: [], + nextTokenWithinRule: [], + stateNumber: atn.states.length + }, partial); + atn.states.push(t4); + return t4; + } + function addTransition(state3, transition2) { + if (state3.transitions.length === 0) { + state3.epsilonOnlyTransitions = transition2.isEpsilon(); + } + state3.transitions.push(transition2); + } + function removeState(atn, state3) { + atn.states.splice(atn.states.indexOf(state3), 1); + } + var ATN_BASIC, ATN_RULE_START, ATN_PLUS_BLOCK_START, ATN_STAR_BLOCK_START, ATN_RULE_STOP, ATN_BLOCK_END, ATN_STAR_LOOP_BACK, ATN_STAR_LOOP_ENTRY, ATN_PLUS_LOOP_BACK, ATN_LOOP_END, AbstractTransition, AtomTransition, EpsilonTransition, RuleTransition; + var init_atn = __esm({ + "../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/atn.js"() { + "use strict"; + init_map(); + init_filter3(); + init_api5(); + __name(buildATNKey, "buildATNKey"); + ATN_BASIC = 1; + ATN_RULE_START = 2; + ATN_PLUS_BLOCK_START = 4; + ATN_STAR_BLOCK_START = 5; + ATN_RULE_STOP = 7; + ATN_BLOCK_END = 8; + ATN_STAR_LOOP_BACK = 9; + ATN_STAR_LOOP_ENTRY = 10; + ATN_PLUS_LOOP_BACK = 11; + ATN_LOOP_END = 12; + AbstractTransition = class { + static { + __name(this, "AbstractTransition"); } - __name(addChildren2, "addChildren"); - function add3(ele2) { - var alreadyAdded = elesToRemoveIds[ele2.id()]; - if (removeFromPool2 && ele2.removed() || alreadyAdded) { - return; - } else { - elesToRemoveIds[ele2.id()] = true; - } - if (ele2.isNode()) { - elesToRemove.push(ele2); - addConnectedEdges(ele2); - addChildren2(ele2); - } else { - elesToRemove.unshift(ele2); - } + constructor(target) { + this.target = target; } - __name(add3, "add"); - for (var i2 = 0, l2 = self2.length; i2 < l2; i2++) { - var ele = self2[i2]; - add3(ele); + isEpsilon() { + return false; } - function removeEdgeRef(node2, edge) { - var connectedEdges = node2._private.edges; - removeFromArray(connectedEdges, edge); - node2.clearTraversalCache(); + }; + AtomTransition = class extends AbstractTransition { + static { + __name(this, "AtomTransition"); } - __name(removeEdgeRef, "removeEdgeRef"); - function removeParallelRef(pllEdge2) { - pllEdge2.clearTraversalCache(); + constructor(target, tokenType) { + super(target); + this.tokenType = tokenType; } - __name(removeParallelRef, "removeParallelRef"); - var alteredParents = []; - alteredParents.ids = {}; - function removeChildRef(parent5, ele2) { - ele2 = ele2[0]; - parent5 = parent5[0]; - var children2 = parent5._private.children; - var pid = parent5.id(); - removeFromArray(children2, ele2); - ele2._private.parent = null; - if (!alteredParents.ids[pid]) { - alteredParents.ids[pid] = true; - alteredParents.push(parent5); - } + }; + EpsilonTransition = class extends AbstractTransition { + static { + __name(this, "EpsilonTransition"); } - __name(removeChildRef, "removeChildRef"); - self2.dirtyCompoundBoundsCache(); - if (removeFromPool2) { - cy.removeFromPool(elesToRemove); + constructor(target) { + super(target); } - for (var _i6 = 0; _i6 < elesToRemove.length; _i6++) { - var _ele4 = elesToRemove[_i6]; - if (_ele4.isEdge()) { - var src = _ele4.source()[0]; - var tgt = _ele4.target()[0]; - removeEdgeRef(src, _ele4); - removeEdgeRef(tgt, _ele4); - var pllEdges = _ele4.parallelEdges(); - for (var j2 = 0; j2 < pllEdges.length; j2++) { - var pllEdge = pllEdges[j2]; - removeParallelRef(pllEdge); - if (pllEdge.isBundledBezier()) { - pllEdge.dirtyBoundingBoxCache(); - } - } - } else { - var parent4 = _ele4.parent(); - if (parent4.length !== 0) { - removeChildRef(parent4, _ele4); - } - } - if (removeFromPool2) { - _ele4._private.removed = true; - } + isEpsilon() { + return true; } - var elesStillInside = cy._private.elements; - cy._private.hasCompoundNodes = false; - for (var _i7 = 0; _i7 < elesStillInside.length; _i7++) { - var _ele5 = elesStillInside[_i7]; - if (_ele5.isParent()) { - cy._private.hasCompoundNodes = true; - break; - } + }; + RuleTransition = class extends AbstractTransition { + static { + __name(this, "RuleTransition"); } - var removedElements = new Collection(this.cy(), elesToRemove); - if (removedElements.size() > 0) { - if (notifyRenderer) { - removedElements.emitAndNotify("remove"); - } else if (removeFromPool2) { - removedElements.emit("remove"); - } + constructor(ruleStart, rule, followState) { + super(ruleStart); + this.rule = rule; + this.followState = followState; } - for (var _i8 = 0; _i8 < alteredParents.length; _i8++) { - var _ele6 = alteredParents[_i8]; - if (!removeFromPool2 || !_ele6.removed()) { - _ele6.updateStyle(); - } + isEpsilon() { + return true; } - return removedElements; }; - elesfn$1.move = function(struct) { - var cy = this._private.cy; - var eles = this; - var notifyRenderer = false; - var modifyPool = false; - var toString6 = /* @__PURE__ */ __name(function toString7(id29) { - return id29 == null ? id29 : "" + id29; - }, "toString"); - if (struct.source !== void 0 || struct.target !== void 0) { - var srcId = toString6(struct.source); - var tgtId = toString6(struct.target); - var srcExists = srcId != null && cy.hasElementWithId(srcId); - var tgtExists = tgtId != null && cy.hasElementWithId(tgtId); - if (srcExists || tgtExists) { - cy.batch(function() { - eles.remove(notifyRenderer, modifyPool); - eles.emitAndNotify("moveout"); - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var _data5 = ele._private.data; - if (ele.isEdge()) { - if (srcExists) { - _data5.source = srcId; - } - if (tgtExists) { - _data5.target = tgtId; - } - } - } - eles.restore(notifyRenderer, modifyPool); - }); - eles.emitAndNotify("move"); - } - } else if (struct.parent !== void 0) { - var parentId = toString6(struct.parent); - var parentExists = parentId === null || cy.hasElementWithId(parentId); - if (parentExists) { - var pidToAssign = parentId === null ? void 0 : parentId; - cy.batch(function() { - var updated = eles.remove(notifyRenderer, modifyPool); - updated.emitAndNotify("moveout"); - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var _data6 = ele._private.data; - if (ele.isNode()) { - _data6.parent = pidToAssign; - } - } - updated.restore(notifyRenderer, modifyPool); - }); - eles.emitAndNotify("move"); - } + __name(createATN, "createATN"); + __name(createRuleStartAndStopATNStates, "createRuleStartAndStopATNStates"); + __name(atom, "atom"); + __name(repetition, "repetition"); + __name(repetitionSep, "repetitionSep"); + __name(repetitionMandatory, "repetitionMandatory"); + __name(repetitionMandatorySep, "repetitionMandatorySep"); + __name(alternation, "alternation"); + __name(option, "option"); + __name(block, "block"); + __name(plus, "plus"); + __name(star, "star"); + __name(optional, "optional"); + __name(defineDecisionState, "defineDecisionState"); + __name(makeAlts, "makeAlts"); + __name(getProdType2, "getProdType"); + __name(makeBlock, "makeBlock"); + __name(tokenRef, "tokenRef"); + __name(ruleRef, "ruleRef"); + __name(buildRuleHandle, "buildRuleHandle"); + __name(epsilon4, "epsilon"); + __name(newState, "newState"); + __name(addTransition, "addTransition"); + __name(removeState, "removeState"); + } + }); + + // ../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/dfa.js + function getATNConfigKey(config5, alt = true) { + return `${alt ? `a${config5.alt}` : ""}s${config5.state.stateNumber}:${config5.stack.map((e3) => e3.stateNumber.toString()).join("_")}`; + } + var DFA_ERROR, ATNConfigSet; + var init_dfa = __esm({ + "../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/dfa.js"() { + "use strict"; + init_map(); + DFA_ERROR = {}; + ATNConfigSet = class { + static { + __name(this, "ATNConfigSet"); } - return this; - }; - [elesfn$j, elesfn$i, elesfn$h, elesfn$g, elesfn$f, data3, elesfn$d, dimensions, elesfn$9, elesfn$8, elesfn$7, elesfn$6, elesfn$5, elesfn$4, elesfn$3, elesfn$2].forEach(function(props) { - extend4(elesfn$1, props); - }); - corefn$9 = { - add: /* @__PURE__ */ __name(function add2(opts) { - var elements3; - var cy = this; - if (elementOrCollection(opts)) { - var eles = opts; - if (eles._private.cy === cy) { - elements3 = eles.restore(); - } else { - var jsons = []; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - jsons.push(ele.json()); - } - elements3 = new Collection(cy, jsons); - } - } else if (array2(opts)) { - var _jsons = opts; - elements3 = new Collection(cy, _jsons); - } else if (plainObject(opts) && (array2(opts.nodes) || array2(opts.edges))) { - var elesByGroup = opts; - var _jsons2 = []; - var grs = ["nodes", "edges"]; - for (var _i = 0, il = grs.length; _i < il; _i++) { - var group2 = grs[_i]; - var elesArray = elesByGroup[group2]; - if (array2(elesArray)) { - for (var j2 = 0, jl = elesArray.length; j2 < jl; j2++) { - var json3 = extend4({ - group: group2 - }, elesArray[j2]); - _jsons2.push(json3); - } - } - } - elements3 = new Collection(cy, _jsons2); - } else { - var _json = opts; - elements3 = new Element2(cy, _json).collection(); - } - return elements3; - }, "add"), - remove: /* @__PURE__ */ __name(function remove2(collection4) { - if (elementOrCollection(collection4)) ; - else if (string(collection4)) { - var selector = collection4; - collection4 = this.$(selector); - } - return collection4.remove(); - }, "remove") - }; - __name(generateCubicBezier, "generateCubicBezier"); - generateSpringRK4 = /* @__PURE__ */ function() { - function springAccelerationForState(state4) { - return -state4.tension * state4.x - state4.friction * state4.v; + constructor() { + this.map = {}; + this.configs = []; } - __name(springAccelerationForState, "springAccelerationForState"); - function springEvaluateStateWithDerivative(initialState, dt, derivative) { - var state4 = { - x: initialState.x + derivative.dx * dt, - v: initialState.v + derivative.dv * dt, - tension: initialState.tension, - friction: initialState.friction - }; - return { - dx: state4.v, - dv: springAccelerationForState(state4) - }; + get size() { + return this.configs.length; } - __name(springEvaluateStateWithDerivative, "springEvaluateStateWithDerivative"); - function springIntegrateState(state4, dt) { - var a2 = { - dx: state4.v, - dv: springAccelerationForState(state4) - }, b2 = springEvaluateStateWithDerivative(state4, dt * 0.5, a2), c3 = springEvaluateStateWithDerivative(state4, dt * 0.5, b2), d2 = springEvaluateStateWithDerivative(state4, dt, c3), dxdt = 1 / 6 * (a2.dx + 2 * (b2.dx + c3.dx) + d2.dx), dvdt = 1 / 6 * (a2.dv + 2 * (b2.dv + c3.dv) + d2.dv); - state4.x = state4.x + dxdt * dt; - state4.v = state4.v + dvdt * dt; - return state4; + finalize() { + this.map = {}; } - __name(springIntegrateState, "springIntegrateState"); - return /* @__PURE__ */ __name(function springRK4Factory(tension, friction, duration) { - var initState = { - x: -1, - v: 0, - tension: null, - friction: null - }, path4 = [0], time_lapsed = 0, tolerance = 1 / 1e4, DT = 16 / 1e3, have_duration, dt, last_state; - tension = parseFloat(tension) || 500; - friction = parseFloat(friction) || 20; - duration = duration || null; - initState.tension = tension; - initState.friction = friction; - have_duration = duration !== null; - if (have_duration) { - time_lapsed = springRK4Factory(tension, friction); - dt = time_lapsed / duration * DT; - } else { - dt = DT; - } - for (; ; ) { - last_state = springIntegrateState(last_state || initState, dt); - path4.push(1 + last_state.x); - time_lapsed += 16; - if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) { - break; - } - } - return !have_duration ? time_lapsed : function(percentComplete) { - return path4[percentComplete * (path4.length - 1) | 0]; - }; - }, "springRK4Factory"); - }(); - cubicBezier = /* @__PURE__ */ __name(function cubicBezier2(t13, p1, t22, p22) { - var bezier = generateCubicBezier(t13, p1, t22, p22); - return function(start3, end2, percent) { - return start3 + (end2 - start3) * bezier(percent); - }; - }, "cubicBezier"); - easings = { - "linear": /* @__PURE__ */ __name(function linear3(start3, end2, percent) { - return start3 + (end2 - start3) * percent; - }, "linear"), - // default easings - "ease": cubicBezier(0.25, 0.1, 0.25, 1), - "ease-in": cubicBezier(0.42, 0, 1, 1), - "ease-out": cubicBezier(0, 0, 0.58, 1), - "ease-in-out": cubicBezier(0.42, 0, 0.58, 1), - // sine - "ease-in-sine": cubicBezier(0.47, 0, 0.745, 0.715), - "ease-out-sine": cubicBezier(0.39, 0.575, 0.565, 1), - "ease-in-out-sine": cubicBezier(0.445, 0.05, 0.55, 0.95), - // quad - "ease-in-quad": cubicBezier(0.55, 0.085, 0.68, 0.53), - "ease-out-quad": cubicBezier(0.25, 0.46, 0.45, 0.94), - "ease-in-out-quad": cubicBezier(0.455, 0.03, 0.515, 0.955), - // cubic - "ease-in-cubic": cubicBezier(0.55, 0.055, 0.675, 0.19), - "ease-out-cubic": cubicBezier(0.215, 0.61, 0.355, 1), - "ease-in-out-cubic": cubicBezier(0.645, 0.045, 0.355, 1), - // quart - "ease-in-quart": cubicBezier(0.895, 0.03, 0.685, 0.22), - "ease-out-quart": cubicBezier(0.165, 0.84, 0.44, 1), - "ease-in-out-quart": cubicBezier(0.77, 0, 0.175, 1), - // quint - "ease-in-quint": cubicBezier(0.755, 0.05, 0.855, 0.06), - "ease-out-quint": cubicBezier(0.23, 1, 0.32, 1), - "ease-in-out-quint": cubicBezier(0.86, 0, 0.07, 1), - // expo - "ease-in-expo": cubicBezier(0.95, 0.05, 0.795, 0.035), - "ease-out-expo": cubicBezier(0.19, 1, 0.22, 1), - "ease-in-out-expo": cubicBezier(1, 0, 0, 1), - // circ - "ease-in-circ": cubicBezier(0.6, 0.04, 0.98, 0.335), - "ease-out-circ": cubicBezier(0.075, 0.82, 0.165, 1), - "ease-in-out-circ": cubicBezier(0.785, 0.135, 0.15, 0.86), - // user param easings... - "spring": /* @__PURE__ */ __name(function spring(tension, friction, duration) { - if (duration === 0) { - return easings.linear; - } - var spring2 = generateSpringRK4(tension, friction, duration); - return function(start3, end2, percent) { - return start3 + (end2 - start3) * spring2(percent); - }; - }, "spring"), - "cubic-bezier": cubicBezier - }; - __name(getEasedValue, "getEasedValue"); - __name(getValue2, "getValue"); - __name(ease, "ease"); - __name(step$1, "step$1"); - __name(valid, "valid"); - __name(startAnimation, "startAnimation"); - __name(stepAll, "stepAll"); - corefn$8 = { - // pull in animation functions - animate: define2.animate(), - animation: define2.animation(), - animated: define2.animated(), - clearQueue: define2.clearQueue(), - delay: define2.delay(), - delayAnimation: define2.delayAnimation(), - stop: define2.stop(), - addToAnimationPool: /* @__PURE__ */ __name(function addToAnimationPool(eles) { - var cy = this; - if (!cy.styleEnabled()) { - return; - } - cy._private.aniEles.merge(eles); - }, "addToAnimationPool"), - stopAnimationLoop: /* @__PURE__ */ __name(function stopAnimationLoop() { - this._private.animationsRunning = false; - }, "stopAnimationLoop"), - startAnimationLoop: /* @__PURE__ */ __name(function startAnimationLoop() { - var cy = this; - cy._private.animationsRunning = true; - if (!cy.styleEnabled()) { - return; - } - function headlessStep() { - if (!cy._private.animationsRunning) { - return; - } - requestAnimationFrame2(/* @__PURE__ */ __name(function animationStep(now4) { - stepAll(now4, cy); - headlessStep(); - }, "animationStep")); - } - __name(headlessStep, "headlessStep"); - var renderer9 = cy.renderer(); - if (renderer9 && renderer9.beforeRender) { - renderer9.beforeRender(/* @__PURE__ */ __name(function rendererAnimationStep(willDraw, now4) { - stepAll(now4, cy); - }, "rendererAnimationStep"), renderer9.beforeRenderPriorities.animations); - } else { - headlessStep(); - } - }, "startAnimationLoop") - }; - emitterOptions = { - qualifierCompare: /* @__PURE__ */ __name(function qualifierCompare3(selector1, selector2) { - if (selector1 == null || selector2 == null) { - return selector1 == null && selector2 == null; - } else { - return selector1.sameText(selector2); - } - }, "qualifierCompare"), - eventMatches: /* @__PURE__ */ __name(function eventMatches3(cy, listener, eventObj) { - var selector = listener.qualifier; - if (selector != null) { - return cy !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); + add(config5) { + const key = getATNConfigKey(config5); + if (!(key in this.map)) { + this.map[key] = this.configs.length; + this.configs.push(config5); } - return true; - }, "eventMatches"), - addEventFields: /* @__PURE__ */ __name(function addEventFields3(cy, evt) { - evt.cy = cy; - evt.target = cy; - }, "addEventFields"), - callbackContext: /* @__PURE__ */ __name(function callbackContext3(cy, listener, eventObj) { - return listener.qualifier != null ? eventObj.target : cy; - }, "callbackContext") - }; - argSelector2 = /* @__PURE__ */ __name(function argSelector3(arg) { - if (string(arg)) { - return new Selector(arg); - } else { - return arg; } - }, "argSelector"); - elesfn = { - createEmitter: /* @__PURE__ */ __name(function createEmitter2() { - var _p = this._private; - if (!_p.emitter) { - _p.emitter = new Emitter3(emitterOptions, this); + get elements() { + return this.configs; + } + get alts() { + return map_default(this.configs, (e3) => e3.alt); + } + get key() { + let value2 = ""; + for (const k2 in this.map) { + value2 += k2 + ":"; } - return this; - }, "createEmitter"), - emitter: /* @__PURE__ */ __name(function emitter2() { - return this._private.emitter; - }, "emitter"), - on: /* @__PURE__ */ __name(function on2(events, selector, callback) { - this.emitter().on(events, argSelector2(selector), callback); - return this; - }, "on"), - removeListener: /* @__PURE__ */ __name(function removeListener2(events, selector, callback) { - this.emitter().removeListener(events, argSelector2(selector), callback); - return this; - }, "removeListener"), - removeAllListeners: /* @__PURE__ */ __name(function removeAllListeners2() { - this.emitter().removeAllListeners(); - return this; - }, "removeAllListeners"), - one: /* @__PURE__ */ __name(function one3(events, selector, callback) { - this.emitter().one(events, argSelector2(selector), callback); - return this; - }, "one"), - once: /* @__PURE__ */ __name(function once2(events, selector, callback) { - this.emitter().one(events, argSelector2(selector), callback); - return this; - }, "once"), - emit: /* @__PURE__ */ __name(function emit2(events, extraParams) { - this.emitter().emit(events, extraParams); - return this; - }, "emit"), - emitAndNotify: /* @__PURE__ */ __name(function emitAndNotify2(event3, eles) { - this.emit(event3); - this.notify(event3, eles); - return this; - }, "emitAndNotify") - }; - define2.eventAliasesOn(elesfn); - corefn$7 = { - png: /* @__PURE__ */ __name(function png(options3) { - var renderer9 = this._private.renderer; - options3 = options3 || {}; - return renderer9.png(options3); - }, "png"), - jpg: /* @__PURE__ */ __name(function jpg(options3) { - var renderer9 = this._private.renderer; - options3 = options3 || {}; - options3.bg = options3.bg || "#fff"; - return renderer9.jpg(options3); - }, "jpg") + return value2; + } }; - corefn$7.jpeg = corefn$7.jpg; - corefn$6 = { - layout: /* @__PURE__ */ __name(function layout3(options3) { - var cy = this; - if (options3 == null) { - error("Layout options must be specified to make a layout"); - return; - } - if (options3.name == null) { - error("A `name` must be specified to make a layout"); - return; - } - var name = options3.name; - var Layout2 = cy.extension("layout", name); - if (Layout2 == null) { - error("No such layout `" + name + "` found. Did you forget to import it and `cytoscape.use()` it?"); - return; - } - var eles; - if (string(options3.eles)) { - eles = cy.$(options3.eles); + __name(getATNConfigKey, "getATNConfigKey"); + } + }); + + // ../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/all-star-lookahead.js + function createDFACache(startState, decision) { + const map5 = {}; + return (predicateSet) => { + const key = predicateSet.toString(); + let existing = map5[key]; + if (existing !== void 0) { + return existing; + } else { + existing = { + atnStartState: startState, + decision, + states: {} + }; + map5[key] = existing; + return existing; + } + }; + } + function isLL1Sequence(sequences, allowEmpty = true) { + const fullSet = /* @__PURE__ */ new Set(); + for (const alt of sequences) { + const altSet = /* @__PURE__ */ new Set(); + for (const tokType of alt) { + if (tokType === void 0) { + if (allowEmpty) { + break; } else { - eles = options3.eles != null ? options3.eles : cy.$(); + return false; } - var layout6 = new Layout2(extend4({}, options3, { - cy, - eles - })); - return layout6; - }, "layout") - }; - corefn$6.createLayout = corefn$6.makeLayout = corefn$6.layout; - corefn$5 = { - notify: /* @__PURE__ */ __name(function notify(eventName, eventEles) { - var _p = this._private; - if (this.batching()) { - _p.batchNotifications = _p.batchNotifications || {}; - var eles = _p.batchNotifications[eventName] = _p.batchNotifications[eventName] || this.collection(); - if (eventEles != null) { - eles.merge(eventEles); + } + const indices = [tokType.tokenTypeIdx].concat(tokType.categoryMatches); + for (const index of indices) { + if (fullSet.has(index)) { + if (!altSet.has(index)) { + return false; } - return; - } - if (!_p.notificationsEnabled) { - return; - } - var renderer9 = this.renderer(); - if (this.destroyed() || !renderer9) { - return; - } - renderer9.notify(eventName, eventEles); - }, "notify"), - notifications: /* @__PURE__ */ __name(function notifications(bool2) { - var p3 = this._private; - if (bool2 === void 0) { - return p3.notificationsEnabled; } else { - p3.notificationsEnabled = bool2 ? true : false; - } - return this; - }, "notifications"), - noNotifications: /* @__PURE__ */ __name(function noNotifications(callback) { - this.notifications(false); - callback(); - this.notifications(true); - }, "noNotifications"), - batching: /* @__PURE__ */ __name(function batching() { - return this._private.batchCount > 0; - }, "batching"), - startBatch: /* @__PURE__ */ __name(function startBatch() { - var _p = this._private; - if (_p.batchCount == null) { - _p.batchCount = 0; - } - if (_p.batchCount === 0) { - _p.batchStyleEles = this.collection(); - _p.batchNotifications = {}; - } - _p.batchCount++; - return this; - }, "startBatch"), - endBatch: /* @__PURE__ */ __name(function endBatch() { - var _p = this._private; - if (_p.batchCount === 0) { - return this; - } - _p.batchCount--; - if (_p.batchCount === 0) { - _p.batchStyleEles.updateStyle(); - var renderer9 = this.renderer(); - Object.keys(_p.batchNotifications).forEach(function(eventName) { - var eles = _p.batchNotifications[eventName]; - if (eles.empty()) { - renderer9.notify(eventName); - } else { - renderer9.notify(eventName, eles); - } - }); + fullSet.add(index); + altSet.add(index); } - return this; - }, "endBatch"), - batch: /* @__PURE__ */ __name(function batch(callback) { - this.startBatch(); - callback(); - this.endBatch(); - return this; - }, "batch"), - // for backwards compatibility - batchData: /* @__PURE__ */ __name(function batchData(map5) { - var cy = this; - return this.batch(function() { - var ids = Object.keys(map5); - for (var i2 = 0; i2 < ids.length; i2++) { - var id29 = ids[i2]; - var data6 = map5[id29]; - var ele = cy.getElementById(id29); - ele.data(data6); - } - }); - }, "batchData") - }; - rendererDefaults = defaults$g({ - hideEdgesOnViewport: false, - textureOnViewport: false, - motionBlur: false, - motionBlurOpacity: 0.05, - pixelRatio: void 0, - desktopTapThreshold: 4, - touchTapThreshold: 8, - wheelSensitivity: 1, - debug: false, - showFps: false, - // webgl options - webgl: false, - webglDebug: false, - webglDebugShowAtlases: false, - // defaults good for mobile - webglTexSize: 2048, - webglTexRows: 12, - webglBatchSize: 2048, - webglTexPerBatch: 14, - webglBgColor: [255, 255, 255] - }); - corefn$4 = { - renderTo: /* @__PURE__ */ __name(function renderTo(context, zoom2, pan2, pxRatio) { - var r2 = this._private.renderer; - r2.renderTo(context, zoom2, pan2, pxRatio); - return this; - }, "renderTo"), - renderer: /* @__PURE__ */ __name(function renderer4() { - return this._private.renderer; - }, "renderer"), - forceRender: /* @__PURE__ */ __name(function forceRender() { - this.notify("draw"); - return this; - }, "forceRender"), - resize: /* @__PURE__ */ __name(function resize() { - this.invalidateSize(); - this.emitAndNotify("resize"); - return this; - }, "resize"), - initRenderer: /* @__PURE__ */ __name(function initRenderer(options3) { - var cy = this; - var RendererProto = cy.extension("renderer", options3.name); - if (RendererProto == null) { - error("Can not initialise: No such renderer `".concat(options3.name, "` found. Did you forget to import it and `cytoscape.use()` it?")); - return; - } - if (options3.wheelSensitivity !== void 0) { - warn("You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine."); - } - var rOpts = rendererDefaults(options3); - rOpts.cy = cy; - cy._private.renderer = new RendererProto(rOpts); - this.notify("init"); - }, "initRenderer"), - destroyRenderer: /* @__PURE__ */ __name(function destroyRenderer() { - var cy = this; - cy.notify("destroy"); - var domEle = cy.container(); - if (domEle) { - domEle._cyreg = null; - while (domEle.childNodes.length > 0) { - domEle.removeChild(domEle.childNodes[0]); - } - } - cy._private.renderer = null; - cy.mutableElements().forEach(function(ele) { - var _p = ele._private; - _p.rscratch = {}; - _p.rstyle = {}; - _p.animation.current = []; - _p.animation.queue = []; + } + } + } + return true; + } + function initATNSimulator(atn) { + const decisionLength = atn.decisionStates.length; + const decisionToDFA = Array(decisionLength); + for (let i2 = 0; i2 < decisionLength; i2++) { + decisionToDFA[i2] = createDFACache(atn.decisionStates[i2], i2); + } + return decisionToDFA; + } + function adaptivePredict(dfaCaches, decision, predicateSet, logging) { + const dfa = dfaCaches[decision](predicateSet); + let start3 = dfa.start; + if (start3 === void 0) { + const closure2 = computeStartState(dfa.atnStartState); + start3 = addDFAState(dfa, newDFAState(closure2)); + dfa.start = start3; + } + const alt = performLookahead.apply(this, [dfa, start3, predicateSet, logging]); + return alt; + } + function performLookahead(dfa, s0, predicateSet, logging) { + let previousD = s0; + let i2 = 1; + const path4 = []; + let t4 = this.LA(i2++); + while (true) { + let d3 = getExistingTargetState(previousD, t4); + if (d3 === void 0) { + d3 = computeLookaheadTarget.apply(this, [dfa, previousD, t4, i2, predicateSet, logging]); + } + if (d3 === DFA_ERROR) { + return buildAdaptivePredictError(path4, previousD, t4); + } + if (d3.isAcceptState === true) { + return d3.prediction; + } + previousD = d3; + path4.push(t4); + t4 = this.LA(i2++); + } + } + function computeLookaheadTarget(dfa, previousD, token2, lookahead, predicateSet, logging) { + const reach = computeReachSet(previousD.configs, token2, predicateSet); + if (reach.size === 0) { + addDFAEdge(dfa, previousD, token2, DFA_ERROR); + return DFA_ERROR; + } + let newState2 = newDFAState(reach); + const predictedAlt = getUniqueAlt(reach, predicateSet); + if (predictedAlt !== void 0) { + newState2.isAcceptState = true; + newState2.prediction = predictedAlt; + newState2.configs.uniqueAlt = predictedAlt; + } else if (hasConflictTerminatingPrediction(reach)) { + const prediction = min_default(reach.alts); + newState2.isAcceptState = true; + newState2.prediction = prediction; + newState2.configs.uniqueAlt = prediction; + reportLookaheadAmbiguity.apply(this, [dfa, lookahead, reach.alts, logging]); + } + newState2 = addDFAEdge(dfa, previousD, token2, newState2); + return newState2; + } + function reportLookaheadAmbiguity(dfa, lookahead, ambiguityIndices, logging) { + const prefixPath = []; + for (let i2 = 1; i2 <= lookahead; i2++) { + prefixPath.push(this.LA(i2).tokenType); + } + const atnState = dfa.atnStartState; + const topLevelRule = atnState.rule; + const production = atnState.production; + const message = buildAmbiguityError({ + topLevelRule, + ambiguityIndices, + production, + prefixPath + }); + logging(message); + } + function buildAmbiguityError(options2) { + const pathMsg = map_default(options2.prefixPath, (currtok) => tokenLabel2(currtok)).join(", "); + const occurrence = options2.production.idx === 0 ? "" : options2.production.idx; + let currMessage = `Ambiguous Alternatives Detected: <${options2.ambiguityIndices.join(", ")}> in <${getProductionDslName2(options2.production)}${occurrence}> inside <${options2.topLevelRule.name}> Rule, +<${pathMsg}> may appears as a prefix path in all these alternatives. +`; + currMessage = currMessage + `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`; + return currMessage; + } + function getProductionDslName2(prod) { + if (prod instanceof NonTerminal) { + return "SUBRULE"; + } else if (prod instanceof Option2) { + return "OPTION"; + } else if (prod instanceof Alternation) { + return "OR"; + } else if (prod instanceof RepetitionMandatory) { + return "AT_LEAST_ONE"; + } else if (prod instanceof RepetitionMandatoryWithSeparator) { + return "AT_LEAST_ONE_SEP"; + } else if (prod instanceof RepetitionWithSeparator) { + return "MANY_SEP"; + } else if (prod instanceof Repetition) { + return "MANY"; + } else if (prod instanceof Terminal) { + return "CONSUME"; + } else { + throw Error("non exhaustive match"); + } + } + function buildAdaptivePredictError(path4, previous, current) { + const nextTransitions = flatMap_default(previous.configs.elements, (e3) => e3.state.transitions); + const nextTokenTypes = uniqBy_default(nextTransitions.filter((e3) => e3 instanceof AtomTransition).map((e3) => e3.tokenType), (e3) => e3.tokenTypeIdx); + return { + actualToken: current, + possibleTokenTypes: nextTokenTypes, + tokenPath: path4 + }; + } + function getExistingTargetState(state3, token2) { + return state3.edges[token2.tokenTypeIdx]; + } + function computeReachSet(configs, token2, predicateSet) { + const intermediate = new ATNConfigSet(); + const skippedStopStates = []; + for (const c3 of configs.elements) { + if (predicateSet.is(c3.alt) === false) { + continue; + } + if (c3.state.type === ATN_RULE_STOP) { + skippedStopStates.push(c3); + continue; + } + const transitionLength = c3.state.transitions.length; + for (let i2 = 0; i2 < transitionLength; i2++) { + const transition2 = c3.state.transitions[i2]; + const target = getReachableTarget(transition2, token2); + if (target !== void 0) { + intermediate.add({ + state: target, + alt: c3.alt, + stack: c3.stack }); - }, "destroyRenderer"), - onRender: /* @__PURE__ */ __name(function onRender(fn3) { - return this.on("render", fn3); - }, "onRender"), - offRender: /* @__PURE__ */ __name(function offRender(fn3) { - return this.off("render", fn3); - }, "offRender") + } + } + } + let reach; + if (skippedStopStates.length === 0 && intermediate.size === 1) { + reach = intermediate; + } + if (reach === void 0) { + reach = new ATNConfigSet(); + for (const c3 of intermediate.elements) { + closure(c3, reach); + } + } + if (skippedStopStates.length > 0 && !hasConfigInRuleStopState(reach)) { + for (const c3 of skippedStopStates) { + reach.add(c3); + } + } + return reach; + } + function getReachableTarget(transition2, token2) { + if (transition2 instanceof AtomTransition && tokenMatcher(token2, transition2.tokenType)) { + return transition2.target; + } + return void 0; + } + function getUniqueAlt(configs, predicateSet) { + let alt; + for (const c3 of configs.elements) { + if (predicateSet.is(c3.alt) === true) { + if (alt === void 0) { + alt = c3.alt; + } else if (alt !== c3.alt) { + return void 0; + } + } + } + return alt; + } + function newDFAState(closure2) { + return { + configs: closure2, + edges: {}, + isAcceptState: false, + prediction: -1 + }; + } + function addDFAEdge(dfa, from2, token2, to) { + to = addDFAState(dfa, to); + from2.edges[token2.tokenTypeIdx] = to; + return to; + } + function addDFAState(dfa, state3) { + if (state3 === DFA_ERROR) { + return state3; + } + const mapKey = state3.configs.key; + const existing = dfa.states[mapKey]; + if (existing !== void 0) { + return existing; + } + state3.configs.finalize(); + dfa.states[mapKey] = state3; + return state3; + } + function computeStartState(atnState) { + const configs = new ATNConfigSet(); + const numberOfTransitions = atnState.transitions.length; + for (let i2 = 0; i2 < numberOfTransitions; i2++) { + const target = atnState.transitions[i2].target; + const config5 = { + state: target, + alt: i2, + stack: [] }; - corefn$4.invalidateDimensions = corefn$4.resize; - corefn$3 = { - // get a collection - // - empty collection on no args - // - collection of elements in the graph on selector arg - // - guarantee a returned collection when elements or collection specified - collection: /* @__PURE__ */ __name(function collection3(eles, opts) { - if (string(eles)) { - return this.$(eles); - } else if (elementOrCollection(eles)) { - return eles.collection(); - } else if (array2(eles)) { - if (!opts) { - opts = {}; - } - return new Collection(this, eles, opts.unique, opts.removed); - } - return new Collection(this); - }, "collection"), - nodes: /* @__PURE__ */ __name(function nodes3(selector) { - var nodes6 = this.$(function(ele) { - return ele.isNode(); - }); - if (selector) { - return nodes6.filter(selector); - } - return nodes6; - }, "nodes"), - edges: /* @__PURE__ */ __name(function edges2(selector) { - var edges3 = this.$(function(ele) { - return ele.isEdge(); - }); - if (selector) { - return edges3.filter(selector); - } - return edges3; - }, "edges"), - // search the graph like jQuery - $: /* @__PURE__ */ __name(function $2(selector) { - var eles = this._private.elements; - if (selector) { - return eles.filter(selector); - } else { - return eles.spawnSelf(); - } - }, "$"), - mutableElements: /* @__PURE__ */ __name(function mutableElements() { - return this._private.elements; - }, "mutableElements") + closure(config5, configs); + } + return configs; + } + function closure(config5, configs) { + const p3 = config5.state; + if (p3.type === ATN_RULE_STOP) { + if (config5.stack.length > 0) { + const atnStack = [...config5.stack]; + const followState = atnStack.pop(); + const followConfig = { + state: followState, + alt: config5.alt, + stack: atnStack + }; + closure(followConfig, configs); + } else { + configs.add(config5); + } + return; + } + if (!p3.epsilonOnlyTransitions) { + configs.add(config5); + } + const transitionLength = p3.transitions.length; + for (let i2 = 0; i2 < transitionLength; i2++) { + const transition2 = p3.transitions[i2]; + const c3 = getEpsilonTarget(config5, transition2); + if (c3 !== void 0) { + closure(c3, configs); + } + } + } + function getEpsilonTarget(config5, transition2) { + if (transition2 instanceof EpsilonTransition) { + return { + state: transition2.target, + alt: config5.alt, + stack: config5.stack }; - corefn$3.elements = corefn$3.filter = corefn$3.$; - styfn$8 = {}; - TRUE = "t"; - FALSE = "f"; - styfn$8.apply = function(eles) { - var self2 = this; - var _p = self2._private; - var cy = _p.cy; - var updatedEles = cy.collection(); - for (var ie = 0; ie < eles.length; ie++) { - var ele = eles[ie]; - var cxtMeta = self2.getContextMeta(ele); - if (cxtMeta.empty) { - continue; - } - var cxtStyle = self2.getContextStyle(cxtMeta); - var app = self2.applyContextStyle(cxtMeta, cxtStyle, ele); - if (ele._private.appliedInitStyle) { - self2.updateTransitions(ele, app.diffProps); - } else { - ele._private.appliedInitStyle = true; - } - var hintsDiff = self2.updateStyleHints(ele); - if (hintsDiff) { - updatedEles.push(ele); - } - } - return updatedEles; + } else if (transition2 instanceof RuleTransition) { + const stack = [...config5.stack, transition2.followState]; + return { + state: transition2.target, + alt: config5.alt, + stack }; - styfn$8.getPropertiesDiff = function(oldCxtKey, newCxtKey) { - var self2 = this; - var cache3 = self2._private.propDiffs = self2._private.propDiffs || {}; - var dualCxtKey = oldCxtKey + "-" + newCxtKey; - var cachedVal = cache3[dualCxtKey]; - if (cachedVal) { - return cachedVal; + } + return void 0; + } + function hasConfigInRuleStopState(configs) { + for (const c3 of configs.elements) { + if (c3.state.type === ATN_RULE_STOP) { + return true; + } + } + return false; + } + function allConfigsInRuleStopStates(configs) { + for (const c3 of configs.elements) { + if (c3.state.type !== ATN_RULE_STOP) { + return false; + } + } + return true; + } + function hasConflictTerminatingPrediction(configs) { + if (allConfigsInRuleStopStates(configs)) { + return true; + } + const altSets = getConflictingAltSets(configs.elements); + const heuristic2 = hasConflictingAltSet(altSets) && !hasStateAssociatedWithOneAlt(altSets); + return heuristic2; + } + function getConflictingAltSets(configs) { + const configToAlts = /* @__PURE__ */ new Map(); + for (const c3 of configs) { + const key = getATNConfigKey(c3, false); + let alts = configToAlts.get(key); + if (alts === void 0) { + alts = {}; + configToAlts.set(key, alts); + } + alts[c3.alt] = true; + } + return configToAlts; + } + function hasConflictingAltSet(altSets) { + for (const value2 of Array.from(altSets.values())) { + if (Object.keys(value2).length > 1) { + return true; + } + } + return false; + } + function hasStateAssociatedWithOneAlt(altSets) { + for (const value2 of Array.from(altSets.values())) { + if (Object.keys(value2).length === 1) { + return true; + } + } + return false; + } + var PredicateSet, EMPTY_PREDICATES, LLStarLookaheadStrategy; + var init_all_star_lookahead = __esm({ + "../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/all-star-lookahead.js"() { + "use strict"; + init_api5(); + init_atn(); + init_dfa(); + init_min2(); + init_flatMap(); + init_uniqBy(); + init_map(); + init_flatten(); + init_forEach(); + init_isEmpty(); + init_reduce(); + __name(createDFACache, "createDFACache"); + PredicateSet = class { + static { + __name(this, "PredicateSet"); } - var diffProps = []; - var addedProp = {}; - for (var i2 = 0; i2 < self2.length; i2++) { - var cxt = self2[i2]; - var oldHasCxt = oldCxtKey[i2] === TRUE; - var newHasCxt = newCxtKey[i2] === TRUE; - var cxtHasDiffed = oldHasCxt !== newHasCxt; - var cxtHasMappedProps = cxt.mappedProperties.length > 0; - if (cxtHasDiffed || newHasCxt && cxtHasMappedProps) { - var props = void 0; - if (cxtHasDiffed && cxtHasMappedProps) { - props = cxt.properties; - } else if (cxtHasDiffed) { - props = cxt.properties; - } else if (cxtHasMappedProps) { - props = cxt.mappedProperties; - } - for (var j2 = 0; j2 < props.length; j2++) { - var prop = props[j2]; - var name = prop.name; - var laterCxtOverrides = false; - for (var k2 = i2 + 1; k2 < self2.length; k2++) { - var laterCxt = self2[k2]; - var hasLaterCxt = newCxtKey[k2] === TRUE; - if (!hasLaterCxt) { - continue; - } - laterCxtOverrides = laterCxt.properties[prop.name] != null; - if (laterCxtOverrides) { - break; - } - } - if (!addedProp[name] && !laterCxtOverrides) { - addedProp[name] = true; - diffProps.push(name); - } - } - } + constructor() { + this.predicates = []; } - cache3[dualCxtKey] = diffProps; - return diffProps; - }; - styfn$8.getContextMeta = function(ele) { - var self2 = this; - var cxtKey = ""; - var diffProps; - var prevKey = ele._private.styleCxtKey || ""; - for (var i2 = 0; i2 < self2.length; i2++) { - var context = self2[i2]; - var contextSelectorMatches = context.selector && context.selector.matches(ele); - if (contextSelectorMatches) { - cxtKey += TRUE; - } else { - cxtKey += FALSE; - } + is(index) { + return index >= this.predicates.length || this.predicates[index]; } - diffProps = self2.getPropertiesDiff(prevKey, cxtKey); - ele._private.styleCxtKey = cxtKey; - return { - key: cxtKey, - diffPropNames: diffProps, - empty: diffProps.length === 0 - }; - }; - styfn$8.getContextStyle = function(cxtMeta) { - var cxtKey = cxtMeta.key; - var self2 = this; - var cxtStyles = this._private.contextStyles = this._private.contextStyles || {}; - if (cxtStyles[cxtKey]) { - return cxtStyles[cxtKey]; + set(index, value2) { + this.predicates[index] = value2; } - var style3 = { - _private: { - key: cxtKey - } - }; - for (var i2 = 0; i2 < self2.length; i2++) { - var cxt = self2[i2]; - var hasCxt = cxtKey[i2] === TRUE; - if (!hasCxt) { - continue; - } - for (var j2 = 0; j2 < cxt.properties.length; j2++) { - var prop = cxt.properties[j2]; - style3[prop.name] = prop; + toString() { + let value2 = ""; + const size4 = this.predicates.length; + for (let i2 = 0; i2 < size4; i2++) { + value2 += this.predicates[i2] === true ? "1" : "0"; } + return value2; } - cxtStyles[cxtKey] = style3; - return style3; }; - styfn$8.applyContextStyle = function(cxtMeta, cxtStyle, ele) { - var self2 = this; - var diffProps = cxtMeta.diffPropNames; - var retDiffProps = {}; - var types = self2.types; - for (var i2 = 0; i2 < diffProps.length; i2++) { - var diffPropName = diffProps[i2]; - var cxtProp = cxtStyle[diffPropName]; - var eleProp = ele.pstyle(diffPropName); - if (!cxtProp) { - if (!eleProp) { - continue; - } else if (eleProp.bypass) { - cxtProp = { - name: diffPropName, - deleteBypassed: true + EMPTY_PREDICATES = new PredicateSet(); + LLStarLookaheadStrategy = class extends LLkLookaheadStrategy { + static { + __name(this, "LLStarLookaheadStrategy"); + } + constructor(options2) { + var _a; + super(); + this.logging = (_a = options2 === null || options2 === void 0 ? void 0 : options2.logging) !== null && _a !== void 0 ? _a : ((message) => console.log(message)); + } + initialize(options2) { + this.atn = createATN(options2.rules); + this.dfas = initATNSimulator(this.atn); + } + validateAmbiguousAlternationAlternatives() { + return []; + } + validateEmptyOrAlternatives() { + return []; + } + buildLookaheadForAlternation(options2) { + const { prodOccurrence, rule, hasPredicates, dynamicTokensEnabled } = options2; + const dfas = this.dfas; + const logging = this.logging; + const key = buildATNKey(rule, "Alternation", prodOccurrence); + const decisionState = this.atn.decisionMap[key]; + const decisionIndex = decisionState.decision; + const partialAlts = map_default(getLookaheadPaths({ + maxLookahead: 1, + occurrence: prodOccurrence, + prodType: "Alternation", + rule + }), (currAlt) => map_default(currAlt, (path4) => path4[0])); + if (isLL1Sequence(partialAlts, false) && !dynamicTokensEnabled) { + const choiceToAlt = reduce_default(partialAlts, (result, currAlt, idx) => { + forEach_default(currAlt, (currTokType) => { + if (currTokType) { + result[currTokType.tokenTypeIdx] = idx; + forEach_default(currTokType.categoryMatches, (currExtendingType) => { + result[currExtendingType] = idx; + }); + } + }); + return result; + }, {}); + if (hasPredicates) { + return function(orAlts) { + var _a; + const nextToken = this.LA(1); + const prediction = choiceToAlt[nextToken.tokenTypeIdx]; + if (orAlts !== void 0 && prediction !== void 0) { + const gate = (_a = orAlts[prediction]) === null || _a === void 0 ? void 0 : _a.GATE; + if (gate !== void 0 && gate.call(this) === false) { + return void 0; + } + } + return prediction; }; } else { - cxtProp = { - name: diffPropName, - "delete": true + return function() { + const nextToken = this.LA(1); + return choiceToAlt[nextToken.tokenTypeIdx]; }; } + } else if (hasPredicates) { + return function(orAlts) { + const predicates = new PredicateSet(); + const length2 = orAlts === void 0 ? 0 : orAlts.length; + for (let i2 = 0; i2 < length2; i2++) { + const gate = orAlts === null || orAlts === void 0 ? void 0 : orAlts[i2].GATE; + predicates.set(i2, gate === void 0 || gate.call(this)); + } + const result = adaptivePredict.call(this, dfas, decisionIndex, predicates, logging); + return typeof result === "number" ? result : void 0; + }; + } else { + return function() { + const result = adaptivePredict.call(this, dfas, decisionIndex, EMPTY_PREDICATES, logging); + return typeof result === "number" ? result : void 0; + }; } - if (eleProp === cxtProp) { - continue; - } - if (cxtProp.mapped === types.fn && eleProp != null && eleProp.mapping != null && eleProp.mapping.value === cxtProp.value) { - var mapping = eleProp.mapping; - var fnValue = mapping.fnValue = cxtProp.value(ele); - if (fnValue === mapping.prevFnValue) { - continue; + } + buildLookaheadForOptional(options2) { + const { prodOccurrence, rule, prodType, dynamicTokensEnabled } = options2; + const dfas = this.dfas; + const logging = this.logging; + const key = buildATNKey(rule, prodType, prodOccurrence); + const decisionState = this.atn.decisionMap[key]; + const decisionIndex = decisionState.decision; + const alts = map_default(getLookaheadPaths({ + maxLookahead: 1, + occurrence: prodOccurrence, + prodType, + rule + }), (e3) => { + return map_default(e3, (g2) => g2[0]); + }); + if (isLL1Sequence(alts) && alts[0][0] && !dynamicTokensEnabled) { + const alt = alts[0]; + const singleTokensTypes = flatten_default(alt); + if (singleTokensTypes.length === 1 && isEmpty_default(singleTokensTypes[0].categoryMatches)) { + const expectedTokenType = singleTokensTypes[0]; + const expectedTokenUniqueKey = expectedTokenType.tokenTypeIdx; + return function() { + return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey; + }; + } else { + const choiceToAlt = reduce_default(singleTokensTypes, (result, currTokType) => { + if (currTokType !== void 0) { + result[currTokType.tokenTypeIdx] = true; + forEach_default(currTokType.categoryMatches, (currExtendingType) => { + result[currExtendingType] = true; + }); + } + return result; + }, {}); + return function() { + const nextToken = this.LA(1); + return choiceToAlt[nextToken.tokenTypeIdx] === true; + }; } } - var retDiffProp = retDiffProps[diffPropName] = { - prev: eleProp + return function() { + const result = adaptivePredict.call(this, dfas, decisionIndex, EMPTY_PREDICATES, logging); + return typeof result === "object" ? false : result === 0; }; - self2.applyParsedProperty(ele, cxtProp); - retDiffProp.next = ele.pstyle(diffPropName); - if (retDiffProp.next && retDiffProp.next.bypass) { - retDiffProp.next = retDiffProp.next.bypassed; - } } - return { - diffProps: retDiffProps - }; }; - styfn$8.updateStyleHints = function(ele) { - var _p = ele._private; - var self2 = this; - var propNames = self2.propertyGroupNames; - var propGrKeys = self2.propertyGroupKeys; - var propHash = /* @__PURE__ */ __name(function propHash2(ele2, propNames2, seedKey) { - return self2.getPropertiesHash(ele2, propNames2, seedKey); - }, "propHash"); - var oldStyleKey = _p.styleKey; - if (ele.removed()) { - return false; + __name(isLL1Sequence, "isLL1Sequence"); + __name(initATNSimulator, "initATNSimulator"); + __name(adaptivePredict, "adaptivePredict"); + __name(performLookahead, "performLookahead"); + __name(computeLookaheadTarget, "computeLookaheadTarget"); + __name(reportLookaheadAmbiguity, "reportLookaheadAmbiguity"); + __name(buildAmbiguityError, "buildAmbiguityError"); + __name(getProductionDslName2, "getProductionDslName"); + __name(buildAdaptivePredictError, "buildAdaptivePredictError"); + __name(getExistingTargetState, "getExistingTargetState"); + __name(computeReachSet, "computeReachSet"); + __name(getReachableTarget, "getReachableTarget"); + __name(getUniqueAlt, "getUniqueAlt"); + __name(newDFAState, "newDFAState"); + __name(addDFAEdge, "addDFAEdge"); + __name(addDFAState, "addDFAState"); + __name(computeStartState, "computeStartState"); + __name(closure, "closure"); + __name(getEpsilonTarget, "getEpsilonTarget"); + __name(hasConfigInRuleStopState, "hasConfigInRuleStopState"); + __name(allConfigsInRuleStopStates, "allConfigsInRuleStopStates"); + __name(hasConflictTerminatingPrediction, "hasConflictTerminatingPrediction"); + __name(getConflictingAltSets, "getConflictingAltSets"); + __name(hasConflictingAltSet, "hasConflictingAltSet"); + __name(hasStateAssociatedWithOneAlt, "hasStateAssociatedWithOneAlt"); + } + }); + + // ../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/index.js + var init_lib2 = __esm({ + "../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.0.3/node_modules/chevrotain-allstar/lib/index.js"() { + "use strict"; + init_all_star_lookahead(); + } + }); + + // ../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js + var DocumentUri, URI, integer3, uinteger, Position, Range, Location, LocationLink, Color3, ColorInformation, ColorPresentation, FoldingRangeKind, FoldingRange, DiagnosticRelatedInformation, DiagnosticSeverity, DiagnosticTag, CodeDescription, Diagnostic, Command, TextEdit, ChangeAnnotation, ChangeAnnotationIdentifier, AnnotatedTextEdit, TextDocumentEdit, CreateFile, RenameFile, DeleteFile, WorkspaceEdit, TextDocumentIdentifier, VersionedTextDocumentIdentifier, OptionalVersionedTextDocumentIdentifier, TextDocumentItem, MarkupKind, MarkupContent, CompletionItemKind, InsertTextFormat, CompletionItemTag, InsertReplaceEdit, InsertTextMode, CompletionItemLabelDetails, CompletionItem, CompletionList, MarkedString, Hover, ParameterInformation, SignatureInformation, DocumentHighlightKind, DocumentHighlight, SymbolKind, SymbolTag, SymbolInformation, WorkspaceSymbol, DocumentSymbol, CodeActionKind, CodeActionTriggerKind, CodeActionContext, CodeAction, CodeLens, FormattingOptions, DocumentLink, SelectionRange, SemanticTokenTypes, SemanticTokenModifiers, SemanticTokens, InlineValueText, InlineValueVariableLookup, InlineValueEvaluatableExpression, InlineValueContext, InlayHintKind, InlayHintLabelPart, InlayHint, StringValue, InlineCompletionItem, InlineCompletionList, InlineCompletionTriggerKind, SelectedCompletionInfo, InlineCompletionContext, WorkspaceFolder, TextDocument, FullTextDocument, Is; + var init_main = __esm({ + "../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js"() { + "use strict"; + (function(DocumentUri2) { + function is2(value2) { + return typeof value2 === "string"; } - var isNode2 = _p.group === "nodes"; - var overriddenStyles = ele._private.style; - propNames = Object.keys(overriddenStyles); - for (var i2 = 0; i2 < propGrKeys.length; i2++) { - var grKey = propGrKeys[i2]; - _p.styleKeys[grKey] = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; + __name(is2, "is"); + DocumentUri2.is = is2; + })(DocumentUri || (DocumentUri = {})); + (function(URI3) { + function is2(value2) { + return typeof value2 === "string"; } - var updateGrKey1 = /* @__PURE__ */ __name(function updateGrKey12(val, grKey2) { - return _p.styleKeys[grKey2][0] = hashInt(val, _p.styleKeys[grKey2][0]); - }, "updateGrKey1"); - var updateGrKey2 = /* @__PURE__ */ __name(function updateGrKey22(val, grKey2) { - return _p.styleKeys[grKey2][1] = hashIntAlt(val, _p.styleKeys[grKey2][1]); - }, "updateGrKey2"); - var updateGrKey = /* @__PURE__ */ __name(function updateGrKey3(val, grKey2) { - updateGrKey1(val, grKey2); - updateGrKey2(val, grKey2); - }, "updateGrKey"); - var updateGrKeyWStr = /* @__PURE__ */ __name(function updateGrKeyWStr2(strVal, grKey2) { - for (var j2 = 0; j2 < strVal.length; j2++) { - var ch = strVal.charCodeAt(j2); - updateGrKey1(ch, grKey2); - updateGrKey2(ch, grKey2); - } - }, "updateGrKeyWStr"); - var N2 = 2e9; - var cleanNum = /* @__PURE__ */ __name(function cleanNum2(val) { - return -128 < val && val < 128 && Math.floor(val) !== val ? N2 - (val * 1024 | 0) : val; - }, "cleanNum"); - for (var _i = 0; _i < propNames.length; _i++) { - var name = propNames[_i]; - var parsedProp = overriddenStyles[name]; - if (parsedProp == null) { - continue; + __name(is2, "is"); + URI3.is = is2; + })(URI || (URI = {})); + (function(integer4) { + integer4.MIN_VALUE = -2147483648; + integer4.MAX_VALUE = 2147483647; + function is2(value2) { + return typeof value2 === "number" && integer4.MIN_VALUE <= value2 && value2 <= integer4.MAX_VALUE; + } + __name(is2, "is"); + integer4.is = is2; + })(integer3 || (integer3 = {})); + (function(uinteger2) { + uinteger2.MIN_VALUE = 0; + uinteger2.MAX_VALUE = 2147483647; + function is2(value2) { + return typeof value2 === "number" && uinteger2.MIN_VALUE <= value2 && value2 <= uinteger2.MAX_VALUE; + } + __name(is2, "is"); + uinteger2.is = is2; + })(uinteger || (uinteger = {})); + (function(Position2) { + function create4(line2, character2) { + if (line2 === Number.MAX_VALUE) { + line2 = uinteger.MAX_VALUE; } - var propInfo = this.properties[name]; - var type3 = propInfo.type; - var _grKey = propInfo.groupKey; - var normalizedNumberVal = void 0; - if (propInfo.hashOverride != null) { - normalizedNumberVal = propInfo.hashOverride(ele, parsedProp); - } else if (parsedProp.pfValue != null) { - normalizedNumberVal = parsedProp.pfValue; + if (character2 === Number.MAX_VALUE) { + character2 = uinteger.MAX_VALUE; } - var numberVal = propInfo.enums == null ? parsedProp.value : null; - var haveNormNum = normalizedNumberVal != null; - var haveUnitedNum = numberVal != null; - var haveNum = haveNormNum || haveUnitedNum; - var units = parsedProp.units; - if (type3.number && haveNum && !type3.multiple) { - var v3 = haveNormNum ? normalizedNumberVal : numberVal; - updateGrKey(cleanNum(v3), _grKey); - if (!haveNormNum && units != null) { - updateGrKeyWStr(units, _grKey); - } + return { line: line2, character: character2 }; + } + __name(create4, "create"); + Position2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character); + } + __name(is2, "is"); + Position2.is = is2; + })(Position || (Position = {})); + (function(Range2) { + function create4(one4, two, three, four) { + if (Is.uinteger(one4) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) { + return { start: Position.create(one4, two), end: Position.create(three, four) }; + } else if (Position.is(one4) && Position.is(two)) { + return { start: one4, end: two }; } else { - updateGrKeyWStr(parsedProp.strValue, _grKey); + throw new Error(`Range#create called with invalid arguments[${one4}, ${two}, ${three}, ${four}]`); } } - var hash = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; - for (var _i2 = 0; _i2 < propGrKeys.length; _i2++) { - var _grKey2 = propGrKeys[_i2]; - var grHash = _p.styleKeys[_grKey2]; - hash[0] = hashInt(grHash[0], hash[0]); - hash[1] = hashIntAlt(grHash[1], hash[1]); + __name(create4, "create"); + Range2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end); } - _p.styleKey = combineHashes(hash[0], hash[1]); - var sk = _p.styleKeys; - _p.labelDimsKey = combineHashesArray(sk.labelDimensions); - var labelKeys = propHash(ele, ["label"], sk.labelDimensions); - _p.labelKey = combineHashesArray(labelKeys); - _p.labelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, labelKeys)); - if (!isNode2) { - var sourceLabelKeys = propHash(ele, ["source-label"], sk.labelDimensions); - _p.sourceLabelKey = combineHashesArray(sourceLabelKeys); - _p.sourceLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, sourceLabelKeys)); - var targetLabelKeys = propHash(ele, ["target-label"], sk.labelDimensions); - _p.targetLabelKey = combineHashesArray(targetLabelKeys); - _p.targetLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, targetLabelKeys)); + __name(is2, "is"); + Range2.is = is2; + })(Range || (Range = {})); + (function(Location2) { + function create4(uri, range3) { + return { uri, range: range3 }; } - if (isNode2) { - var _p$styleKeys = _p.styleKeys, nodeBody = _p$styleKeys.nodeBody, nodeBorder = _p$styleKeys.nodeBorder, nodeOutline = _p$styleKeys.nodeOutline, backgroundImage = _p$styleKeys.backgroundImage, compound = _p$styleKeys.compound, pie2 = _p$styleKeys.pie; - var nodeKeys = [nodeBody, nodeBorder, nodeOutline, backgroundImage, compound, pie2].filter(function(k2) { - return k2 != null; - }).reduce(hashArrays, [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]); - _p.nodeKey = combineHashesArray(nodeKeys); - _p.hasPie = pie2 != null && pie2[0] !== DEFAULT_HASH_SEED && pie2[1] !== DEFAULT_HASH_SEED_ALT; + __name(create4, "create"); + Location2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.objectLiteral(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri)); } - return oldStyleKey !== _p.styleKey; - }; - styfn$8.clearStyleHints = function(ele) { - var _p = ele._private; - _p.styleCxtKey = ""; - _p.styleKeys = {}; - _p.styleKey = null; - _p.labelKey = null; - _p.labelStyleKey = null; - _p.sourceLabelKey = null; - _p.sourceLabelStyleKey = null; - _p.targetLabelKey = null; - _p.targetLabelStyleKey = null; - _p.nodeKey = null; - _p.hasPie = null; - }; - styfn$8.applyParsedProperty = function(ele, parsedProp) { - var self2 = this; - var prop = parsedProp; - var style3 = ele._private.style; - var flatProp; - var types = self2.types; - var type3 = self2.properties[prop.name].type; - var propIsBypass = prop.bypass; - var origProp = style3[prop.name]; - var origPropIsBypass = origProp && origProp.bypass; - var _p = ele._private; - var flatPropMapping = "mapping"; - var getVal = /* @__PURE__ */ __name(function getVal2(p3) { - if (p3 == null) { - return null; - } else if (p3.pfValue != null) { - return p3.pfValue; - } else { - return p3.value; - } - }, "getVal"); - var checkTriggers = /* @__PURE__ */ __name(function checkTriggers2() { - var fromVal = getVal(origProp); - var toVal = getVal(prop); - self2.checkTriggers(ele, prop.name, fromVal, toVal); - }, "checkTriggers"); - if (parsedProp.name === "curve-style" && ele.isEdge() && // loops must be bundled beziers - (parsedProp.value !== "bezier" && ele.isLoop() || // edges connected to compound nodes can not be haystacks - parsedProp.value === "haystack" && (ele.source().isParent() || ele.target().isParent()))) { - prop = parsedProp = this.parse(parsedProp.name, "bezier", propIsBypass); + __name(is2, "is"); + Location2.is = is2; + })(Location || (Location = {})); + (function(LocationLink2) { + function create4(targetUri, targetRange, targetSelectionRange, originSelectionRange) { + return { targetUri, targetRange, targetSelectionRange, originSelectionRange }; } - if (prop["delete"]) { - style3[prop.name] = void 0; - checkTriggers(); - return true; + __name(create4, "create"); + LocationLink2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.objectLiteral(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri) && Range.is(candidate.targetSelectionRange) && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange)); } - if (prop.deleteBypassed) { - if (!origProp) { - checkTriggers(); - return true; - } else if (origProp.bypass) { - origProp.bypassed = void 0; - checkTriggers(); - return true; - } else { - return false; - } + __name(is2, "is"); + LocationLink2.is = is2; + })(LocationLink || (LocationLink = {})); + (function(Color4) { + function create4(red, green, blue, alpha) { + return { + red, + green, + blue, + alpha + }; } - if (prop.deleteBypass) { - if (!origProp) { - checkTriggers(); - return true; - } else if (origProp.bypass) { - style3[prop.name] = origProp.bypassed; - checkTriggers(); - return true; - } else { - return false; - } + __name(create4, "create"); + Color4.create = create4; + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(candidate) && Is.numberRange(candidate.red, 0, 1) && Is.numberRange(candidate.green, 0, 1) && Is.numberRange(candidate.blue, 0, 1) && Is.numberRange(candidate.alpha, 0, 1); } - var printMappingErr = /* @__PURE__ */ __name(function printMappingErr2() { - warn("Do not assign mappings to elements without corresponding data (i.e. ele `" + ele.id() + "` has no mapping for property `" + prop.name + "` with data field `" + prop.field + "`); try a `[" + prop.field + "]` selector to limit scope to elements with `" + prop.field + "` defined"); - }, "printMappingErr"); - switch (prop.mapped) { - // flatten the property if mapped - case types.mapData: { - var fields = prop.field.split("."); - var fieldVal = _p.data; - for (var i2 = 0; i2 < fields.length && fieldVal; i2++) { - var field = fields[i2]; - fieldVal = fieldVal[field]; - } - if (fieldVal == null) { - printMappingErr(); - return false; - } - var percent; - if (!number$1(fieldVal)) { - warn("Do not use continuous mappers without specifying numeric data (i.e. `" + prop.field + ": " + fieldVal + "` for `" + ele.id() + "` is non-numeric)"); - return false; - } else { - var fieldWidth = prop.fieldMax - prop.fieldMin; - if (fieldWidth === 0) { - percent = 0; - } else { - percent = (fieldVal - prop.fieldMin) / fieldWidth; - } - } - if (percent < 0) { - percent = 0; - } else if (percent > 1) { - percent = 1; - } - if (type3.color) { - var r1 = prop.valueMin[0]; - var r2 = prop.valueMax[0]; - var g1 = prop.valueMin[1]; - var g2 = prop.valueMax[1]; - var b1 = prop.valueMin[2]; - var b2 = prop.valueMax[2]; - var a1 = prop.valueMin[3] == null ? 1 : prop.valueMin[3]; - var a2 = prop.valueMax[3] == null ? 1 : prop.valueMax[3]; - var clr = [Math.round(r1 + (r2 - r1) * percent), Math.round(g1 + (g2 - g1) * percent), Math.round(b1 + (b2 - b1) * percent), Math.round(a1 + (a2 - a1) * percent)]; - flatProp = { - // colours are simple, so just create the flat property instead of expensive string parsing - bypass: prop.bypass, - // we're a bypass if the mapping property is a bypass - name: prop.name, - value: clr, - strValue: "rgb(" + clr[0] + ", " + clr[1] + ", " + clr[2] + ")" - }; - } else if (type3.number) { - var calcValue = prop.valueMin + (prop.valueMax - prop.valueMin) * percent; - flatProp = this.parse(prop.name, calcValue, prop.bypass, flatPropMapping); - } else { - return false; - } - if (!flatProp) { - printMappingErr(); - return false; - } - flatProp.mapping = prop; - prop = flatProp; - break; - } - // direct mapping - case types.data: { - var _fields = prop.field.split("."); - var _fieldVal = _p.data; - for (var _i3 = 0; _i3 < _fields.length && _fieldVal; _i3++) { - var _field = _fields[_i3]; - _fieldVal = _fieldVal[_field]; - } - if (_fieldVal != null) { - flatProp = this.parse(prop.name, _fieldVal, prop.bypass, flatPropMapping); - } - if (!flatProp) { - printMappingErr(); - return false; - } - flatProp.mapping = prop; - prop = flatProp; - break; + __name(is2, "is"); + Color4.is = is2; + })(Color3 || (Color3 = {})); + (function(ColorInformation2) { + function create4(range3, color2) { + return { + range: range3, + color: color2 + }; + } + __name(create4, "create"); + ColorInformation2.create = create4; + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(candidate) && Range.is(candidate.range) && Color3.is(candidate.color); + } + __name(is2, "is"); + ColorInformation2.is = is2; + })(ColorInformation || (ColorInformation = {})); + (function(ColorPresentation2) { + function create4(label, textEdit, additionalTextEdits) { + return { + label, + textEdit, + additionalTextEdits + }; + } + __name(create4, "create"); + ColorPresentation2.create = create4; + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate)) && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is)); + } + __name(is2, "is"); + ColorPresentation2.is = is2; + })(ColorPresentation || (ColorPresentation = {})); + (function(FoldingRangeKind2) { + FoldingRangeKind2.Comment = "comment"; + FoldingRangeKind2.Imports = "imports"; + FoldingRangeKind2.Region = "region"; + })(FoldingRangeKind || (FoldingRangeKind = {})); + (function(FoldingRange2) { + function create4(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) { + const result = { + startLine, + endLine + }; + if (Is.defined(startCharacter)) { + result.startCharacter = startCharacter; } - case types.fn: { - var fn3 = prop.value; - var fnRetVal = prop.fnValue != null ? prop.fnValue : fn3(ele); - prop.prevFnValue = fnRetVal; - if (fnRetVal == null) { - warn("Custom function mappers may not return null (i.e. `" + prop.name + "` for ele `" + ele.id() + "` is null)"); - return false; - } - flatProp = this.parse(prop.name, fnRetVal, prop.bypass, flatPropMapping); - if (!flatProp) { - warn("Custom function mappers may not return invalid values for the property type (i.e. `" + prop.name + "` for ele `" + ele.id() + "` is invalid)"); - return false; - } - flatProp.mapping = copy3(prop); - prop = flatProp; - break; + if (Is.defined(endCharacter)) { + result.endCharacter = endCharacter; } - case void 0: - break; - // just set the property - default: - return false; - } - if (propIsBypass) { - if (origPropIsBypass) { - prop.bypassed = origProp.bypassed; - } else { - prop.bypassed = origProp; + if (Is.defined(kind)) { + result.kind = kind; } - style3[prop.name] = prop; - } else { - if (origPropIsBypass) { - origProp.bypassed = prop; - } else { - style3[prop.name] = prop; + if (Is.defined(collapsedText)) { + result.collapsedText = collapsedText; } + return result; } - checkTriggers(); - return true; - }; - styfn$8.cleanElements = function(eles, keepBypasses) { - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - this.clearStyleHints(ele); - ele.dirtyCompoundBoundsCache(); - ele.dirtyBoundingBoxCache(); - if (!keepBypasses) { - ele._private.style = {}; - } else { - var style3 = ele._private.style; - var propNames = Object.keys(style3); - for (var j2 = 0; j2 < propNames.length; j2++) { - var propName = propNames[j2]; - var eleProp = style3[propName]; - if (eleProp != null) { - if (eleProp.bypass) { - eleProp.bypassed = null; - } else { - style3[propName] = null; - } - } - } - } + __name(create4, "create"); + FoldingRange2.create = create4; + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(candidate) && Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine) && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter)) && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter)) && (Is.undefined(candidate.kind) || Is.string(candidate.kind)); } - }; - styfn$8.update = function() { - var cy = this._private.cy; - var eles = cy.mutableElements(); - eles.updateStyle(); - }; - styfn$8.updateTransitions = function(ele, diffProps) { - var self2 = this; - var _p = ele._private; - var props = ele.pstyle("transition-property").value; - var duration = ele.pstyle("transition-duration").pfValue; - var delay2 = ele.pstyle("transition-delay").pfValue; - if (props.length > 0 && duration > 0) { - var style3 = {}; - var anyPrev = false; - for (var i2 = 0; i2 < props.length; i2++) { - var prop = props[i2]; - var styProp = ele.pstyle(prop); - var diffProp = diffProps[prop]; - if (!diffProp) { - continue; - } - var prevProp = diffProp.prev; - var fromProp = prevProp; - var toProp = diffProp.next != null ? diffProp.next : styProp; - var diff2 = false; - var initVal = void 0; - var initDt = 1e-6; - if (!fromProp) { - continue; - } - if (number$1(fromProp.pfValue) && number$1(toProp.pfValue)) { - diff2 = toProp.pfValue - fromProp.pfValue; - initVal = fromProp.pfValue + initDt * diff2; - } else if (number$1(fromProp.value) && number$1(toProp.value)) { - diff2 = toProp.value - fromProp.value; - initVal = fromProp.value + initDt * diff2; - } else if (array2(fromProp.value) && array2(toProp.value)) { - diff2 = fromProp.value[0] !== toProp.value[0] || fromProp.value[1] !== toProp.value[1] || fromProp.value[2] !== toProp.value[2]; - initVal = fromProp.strValue; - } - if (diff2) { - style3[prop] = toProp.strValue; - this.applyBypass(ele, prop, initVal); - anyPrev = true; - } - } - if (!anyPrev) { - return; - } - _p.transitioning = true; - new Promise$1(function(resolve3) { - if (delay2 > 0) { - ele.delayAnimation(delay2).play().promise().then(resolve3); - } else { - resolve3(); - } - }).then(function() { - return ele.animation({ - style: style3, - duration, - easing: ele.pstyle("transition-timing-function").value, - queue: false - }).play().promise(); - }).then(function() { - self2.removeBypasses(ele, props); - ele.emitAndNotify("style"); - _p.transitioning = false; - }); - } else if (_p.transitioning) { - this.removeBypasses(ele, props); - ele.emitAndNotify("style"); - _p.transitioning = false; + __name(is2, "is"); + FoldingRange2.is = is2; + })(FoldingRange || (FoldingRange = {})); + (function(DiagnosticRelatedInformation2) { + function create4(location, message) { + return { + location, + message + }; } - }; - styfn$8.checkTrigger = function(ele, name, fromValue, toValue, getTrigger, onTrigger) { - var prop = this.properties[name]; - var triggerCheck = getTrigger(prop); - if (triggerCheck != null && triggerCheck(fromValue, toValue)) { - onTrigger(prop); + __name(create4, "create"); + DiagnosticRelatedInformation2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message); } - }; - styfn$8.checkZOrderTrigger = function(ele, name, fromValue, toValue) { - var _this = this; - this.checkTrigger(ele, name, fromValue, toValue, function(prop) { - return prop.triggersZOrder; - }, function() { - _this._private.cy.notify("zorder", ele); - }); - }; - styfn$8.checkBoundsTrigger = function(ele, name, fromValue, toValue) { - this.checkTrigger(ele, name, fromValue, toValue, function(prop) { - return prop.triggersBounds; - }, function(prop) { - ele.dirtyCompoundBoundsCache(); - ele.dirtyBoundingBoxCache(); - if ( - // only for beziers -- so performance of other edges isn't affected - prop.triggersBoundsOfParallelBeziers && name === "curve-style" && (fromValue === "bezier" || toValue === "bezier") - ) { - ele.parallelEdges().forEach(function(pllEdge) { - pllEdge.dirtyBoundingBoxCache(); - }); - } - if (prop.triggersBoundsOfConnectedEdges && name === "display" && (fromValue === "none" || toValue === "none")) { - ele.connectedEdges().forEach(function(edge) { - edge.dirtyBoundingBoxCache(); - }); + __name(is2, "is"); + DiagnosticRelatedInformation2.is = is2; + })(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {})); + (function(DiagnosticSeverity2) { + DiagnosticSeverity2.Error = 1; + DiagnosticSeverity2.Warning = 2; + DiagnosticSeverity2.Information = 3; + DiagnosticSeverity2.Hint = 4; + })(DiagnosticSeverity || (DiagnosticSeverity = {})); + (function(DiagnosticTag2) { + DiagnosticTag2.Unnecessary = 1; + DiagnosticTag2.Deprecated = 2; + })(DiagnosticTag || (DiagnosticTag = {})); + (function(CodeDescription2) { + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(candidate) && Is.string(candidate.href); + } + __name(is2, "is"); + CodeDescription2.is = is2; + })(CodeDescription || (CodeDescription = {})); + (function(Diagnostic2) { + function create4(range3, message, severity, code, source, relatedInformation) { + let result = { range: range3, message }; + if (Is.defined(severity)) { + result.severity = severity; } - }); - }; - styfn$8.checkTriggers = function(ele, name, fromValue, toValue) { - ele.dirtyStyleCache(); - this.checkZOrderTrigger(ele, name, fromValue, toValue); - this.checkBoundsTrigger(ele, name, fromValue, toValue); - }; - styfn$7 = {}; - styfn$7.applyBypass = function(eles, name, value2, updateTransitions) { - var self2 = this; - var props = []; - var isBypass = true; - if (name === "*" || name === "**") { - if (value2 !== void 0) { - for (var i2 = 0; i2 < self2.properties.length; i2++) { - var prop = self2.properties[i2]; - var _name = prop.name; - var parsedProp = this.parse(_name, value2, true); - if (parsedProp) { - props.push(parsedProp); - } - } + if (Is.defined(code)) { + result.code = code; } - } else if (string(name)) { - var _parsedProp = this.parse(name, value2, true); - if (_parsedProp) { - props.push(_parsedProp); + if (Is.defined(source)) { + result.source = source; } - } else if (plainObject(name)) { - var specifiedProps = name; - updateTransitions = value2; - var names = Object.keys(specifiedProps); - for (var _i = 0; _i < names.length; _i++) { - var _name2 = names[_i]; - var _value = specifiedProps[_name2]; - if (_value === void 0) { - _value = specifiedProps[dash2camel(_name2)]; - } - if (_value !== void 0) { - var _parsedProp2 = this.parse(_name2, _value, true); - if (_parsedProp2) { - props.push(_parsedProp2); - } - } + if (Is.defined(relatedInformation)) { + result.relatedInformation = relatedInformation; } - } else { - return false; + return result; } - if (props.length === 0) { - return false; + __name(create4, "create"); + Diagnostic2.create = create4; + function is2(value2) { + var _a; + let candidate = value2; + return Is.defined(candidate) && Range.is(candidate.range) && Is.string(candidate.message) && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) && (Is.undefined(candidate.codeDescription) || Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)) && (Is.string(candidate.source) || Is.undefined(candidate.source)) && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is)); } - var ret = false; - for (var _i2 = 0; _i2 < eles.length; _i2++) { - var ele = eles[_i2]; - var diffProps = {}; - var diffProp = void 0; - for (var j2 = 0; j2 < props.length; j2++) { - var _prop = props[j2]; - if (updateTransitions) { - var prevProp = ele.pstyle(_prop.name); - diffProp = diffProps[_prop.name] = { - prev: prevProp - }; - } - ret = this.applyParsedProperty(ele, copy3(_prop)) || ret; - if (updateTransitions) { - diffProp.next = ele.pstyle(_prop.name); - } - } - if (ret) { - this.updateStyleHints(ele); - } - if (updateTransitions) { - this.updateTransitions(ele, diffProps, isBypass); + __name(is2, "is"); + Diagnostic2.is = is2; + })(Diagnostic || (Diagnostic = {})); + (function(Command2) { + function create4(title2, command, ...args) { + let result = { title: title2, command }; + if (Is.defined(args) && args.length > 0) { + result.arguments = args; } + return result; } - return ret; - }; - styfn$7.overrideBypass = function(eles, name, value2) { - name = camel2dash(name); - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var prop = ele._private.style[name]; - var type3 = this.properties[name].type; - var isColor = type3.color; - var isMulti = type3.mutiple; - var oldValue = !prop ? null : prop.pfValue != null ? prop.pfValue : prop.value; - if (!prop || !prop.bypass) { - this.applyBypass(ele, name, value2); - } else { - prop.value = value2; - if (prop.pfValue != null) { - prop.pfValue = value2; - } - if (isColor) { - prop.strValue = "rgb(" + value2.join(",") + ")"; - } else if (isMulti) { - prop.strValue = value2.join(" "); - } else { - prop.strValue = "" + value2; - } - this.updateStyleHints(ele); - } - this.checkTriggers(ele, name, oldValue, value2); + __name(create4, "create"); + Command2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command); } - }; - styfn$7.removeAllBypasses = function(eles, updateTransitions) { - return this.removeBypasses(eles, this.propertyNames, updateTransitions); - }; - styfn$7.removeBypasses = function(eles, props, updateTransitions) { - var isBypass = true; - for (var j2 = 0; j2 < eles.length; j2++) { - var ele = eles[j2]; - var diffProps = {}; - for (var i2 = 0; i2 < props.length; i2++) { - var name = props[i2]; - var prop = this.properties[name]; - var prevProp = ele.pstyle(prop.name); - if (!prevProp || !prevProp.bypass) { - continue; - } - var value2 = ""; - var parsedProp = this.parse(name, value2, true); - var diffProp = diffProps[prop.name] = { - prev: prevProp - }; - this.applyParsedProperty(ele, parsedProp); - diffProp.next = ele.pstyle(prop.name); + __name(is2, "is"); + Command2.is = is2; + })(Command || (Command = {})); + (function(TextEdit2) { + function replace2(range3, newText) { + return { range: range3, newText }; + } + __name(replace2, "replace"); + TextEdit2.replace = replace2; + function insert(position5, newText) { + return { range: { start: position5, end: position5 }, newText }; + } + __name(insert, "insert"); + TextEdit2.insert = insert; + function del(range3) { + return { range: range3, newText: "" }; + } + __name(del, "del"); + TextEdit2.del = del; + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range.is(candidate.range); + } + __name(is2, "is"); + TextEdit2.is = is2; + })(TextEdit || (TextEdit = {})); + (function(ChangeAnnotation2) { + function create4(label, needsConfirmation, description) { + const result = { label }; + if (needsConfirmation !== void 0) { + result.needsConfirmation = needsConfirmation; } - this.updateStyleHints(ele); - if (updateTransitions) { - this.updateTransitions(ele, diffProps, isBypass); + if (description !== void 0) { + result.description = description; } + return result; } - }; - styfn$6 = {}; - styfn$6.getEmSizeInPixels = function() { - var px = this.containerCss("font-size"); - if (px != null) { - return parseFloat(px); - } else { - return 1; + __name(create4, "create"); + ChangeAnnotation2.create = create4; + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === void 0) && (Is.string(candidate.description) || candidate.description === void 0); } - }; - styfn$6.containerCss = function(propName) { - var cy = this._private.cy; - var domElement3 = cy.container(); - var containerWindow = cy.window(); - if (containerWindow && domElement3 && containerWindow.getComputedStyle) { - return containerWindow.getComputedStyle(domElement3).getPropertyValue(propName); + __name(is2, "is"); + ChangeAnnotation2.is = is2; + })(ChangeAnnotation || (ChangeAnnotation = {})); + (function(ChangeAnnotationIdentifier2) { + function is2(value2) { + const candidate = value2; + return Is.string(candidate); } - }; - styfn$5 = {}; - styfn$5.getRenderedStyle = function(ele, prop) { - if (prop) { - return this.getStylePropertyValue(ele, prop, true); - } else { - return this.getRawStyle(ele, true); + __name(is2, "is"); + ChangeAnnotationIdentifier2.is = is2; + })(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {})); + (function(AnnotatedTextEdit2) { + function replace2(range3, newText, annotation) { + return { range: range3, newText, annotationId: annotation }; } - }; - styfn$5.getRawStyle = function(ele, isRenderedVal) { - var self2 = this; - ele = ele[0]; - if (ele) { - var rstyle = {}; - for (var i2 = 0; i2 < self2.properties.length; i2++) { - var prop = self2.properties[i2]; - var val = self2.getStylePropertyValue(ele, prop.name, isRenderedVal); - if (val != null) { - rstyle[prop.name] = val; - rstyle[dash2camel(prop.name)] = val; - } - } - return rstyle; + __name(replace2, "replace"); + AnnotatedTextEdit2.replace = replace2; + function insert(position5, newText, annotation) { + return { range: { start: position5, end: position5 }, newText, annotationId: annotation }; } - }; - styfn$5.getIndexedStyle = function(ele, property2, subproperty, index) { - var pstyle = ele.pstyle(property2)[subproperty][index]; - return pstyle != null ? pstyle : ele.cy().style().getDefaultProperty(property2)[subproperty][0]; - }; - styfn$5.getStylePropertyValue = function(ele, propName, isRenderedVal) { - var self2 = this; - ele = ele[0]; - if (ele) { - var prop = self2.properties[propName]; - if (prop.alias) { - prop = prop.pointsTo; + __name(insert, "insert"); + AnnotatedTextEdit2.insert = insert; + function del(range3, annotation) { + return { range: range3, newText: "", annotationId: annotation }; + } + __name(del, "del"); + AnnotatedTextEdit2.del = del; + function is2(value2) { + const candidate = value2; + return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + __name(is2, "is"); + AnnotatedTextEdit2.is = is2; + })(AnnotatedTextEdit || (AnnotatedTextEdit = {})); + (function(TextDocumentEdit2) { + function create4(textDocument, edits) { + return { textDocument, edits }; + } + __name(create4, "create"); + TextDocumentEdit2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits); + } + __name(is2, "is"); + TextDocumentEdit2.is = is2; + })(TextDocumentEdit || (TextDocumentEdit = {})); + (function(CreateFile2) { + function create4(uri, options2, annotation) { + let result = { + kind: "create", + uri + }; + if (options2 !== void 0 && (options2.overwrite !== void 0 || options2.ignoreIfExists !== void 0)) { + result.options = options2; } - var type3 = prop.type; - var styleProp = ele.pstyle(prop.name); - if (styleProp) { - var value2 = styleProp.value, units = styleProp.units, strValue = styleProp.strValue; - if (isRenderedVal && type3.number && value2 != null && number$1(value2)) { - var zoom2 = ele.cy().zoom(); - var getRenderedValue = /* @__PURE__ */ __name(function getRenderedValue2(val) { - return val * zoom2; - }, "getRenderedValue"); - var getValueStringWithUnits = /* @__PURE__ */ __name(function getValueStringWithUnits2(val, units2) { - return getRenderedValue(val) + units2; - }, "getValueStringWithUnits"); - var isArrayValue = array2(value2); - var haveUnits = isArrayValue ? units.every(function(u2) { - return u2 != null; - }) : units != null; - if (haveUnits) { - if (isArrayValue) { - return value2.map(function(v3, i2) { - return getValueStringWithUnits(v3, units[i2]); - }).join(" "); - } else { - return getValueStringWithUnits(value2, units); - } - } else { - if (isArrayValue) { - return value2.map(function(v3) { - return string(v3) ? v3 : "" + getRenderedValue(v3); - }).join(" "); - } else { - return "" + getRenderedValue(value2); - } - } - } else if (strValue != null) { - return strValue; - } + if (annotation !== void 0) { + result.annotationId = annotation; } - return null; + return result; } - }; - styfn$5.getAnimationStartStyle = function(ele, aniProps) { - var rstyle = {}; - for (var i2 = 0; i2 < aniProps.length; i2++) { - var aniProp = aniProps[i2]; - var name = aniProp.name; - var styleProp = ele.pstyle(name); - if (styleProp !== void 0) { - if (plainObject(styleProp)) { - styleProp = this.parse(name, styleProp.strValue); - } else { - styleProp = this.parse(name, styleProp); - } + __name(create4, "create"); + CreateFile2.create = create4; + function is2(value2) { + let candidate = value2; + return candidate && candidate.kind === "create" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + __name(is2, "is"); + CreateFile2.is = is2; + })(CreateFile || (CreateFile = {})); + (function(RenameFile2) { + function create4(oldUri, newUri, options2, annotation) { + let result = { + kind: "rename", + oldUri, + newUri + }; + if (options2 !== void 0 && (options2.overwrite !== void 0 || options2.ignoreIfExists !== void 0)) { + result.options = options2; } - if (styleProp) { - rstyle[name] = styleProp; + if (annotation !== void 0) { + result.annotationId = annotation; } + return result; } - return rstyle; - }; - styfn$5.getPropsList = function(propsObj) { - var self2 = this; - var rstyle = []; - var style3 = propsObj; - var props = self2.properties; - if (style3) { - var names = Object.keys(style3); - for (var i2 = 0; i2 < names.length; i2++) { - var name = names[i2]; - var val = style3[name]; - var prop = props[name] || props[camel2dash(name)]; - var styleProp = this.parse(prop.name, val); - if (styleProp) { - rstyle.push(styleProp); - } + __name(create4, "create"); + RenameFile2.create = create4; + function is2(value2) { + let candidate = value2; + return candidate && candidate.kind === "rename" && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + __name(is2, "is"); + RenameFile2.is = is2; + })(RenameFile || (RenameFile = {})); + (function(DeleteFile2) { + function create4(uri, options2, annotation) { + let result = { + kind: "delete", + uri + }; + if (options2 !== void 0 && (options2.recursive !== void 0 || options2.ignoreIfNotExists !== void 0)) { + result.options = options2; + } + if (annotation !== void 0) { + result.annotationId = annotation; } + return result; } - return rstyle; - }; - styfn$5.getNonDefaultPropertiesHash = function(ele, propNames, seed) { - var hash = seed.slice(); - var name, val, strVal, chVal; - var i2, j2; - for (i2 = 0; i2 < propNames.length; i2++) { - name = propNames[i2]; - val = ele.pstyle(name, false); - if (val == null) { - continue; - } else if (val.pfValue != null) { - hash[0] = hashInt(chVal, hash[0]); - hash[1] = hashIntAlt(chVal, hash[1]); - } else { - strVal = val.strValue; - for (j2 = 0; j2 < strVal.length; j2++) { - chVal = strVal.charCodeAt(j2); - hash[0] = hashInt(chVal, hash[0]); - hash[1] = hashIntAlt(chVal, hash[1]); + __name(create4, "create"); + DeleteFile2.create = create4; + function is2(value2) { + let candidate = value2; + return candidate && candidate.kind === "delete" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + __name(is2, "is"); + DeleteFile2.is = is2; + })(DeleteFile || (DeleteFile = {})); + (function(WorkspaceEdit2) { + function is2(value2) { + let candidate = value2; + return candidate && (candidate.changes !== void 0 || candidate.documentChanges !== void 0) && (candidate.documentChanges === void 0 || candidate.documentChanges.every((change2) => { + if (Is.string(change2.kind)) { + return CreateFile.is(change2) || RenameFile.is(change2) || DeleteFile.is(change2); + } else { + return TextDocumentEdit.is(change2); } - } + })); } - return hash; - }; - styfn$5.getPropertiesHash = styfn$5.getNonDefaultPropertiesHash; - styfn$4 = {}; - styfn$4.appendFromJson = function(json3) { - var style3 = this; - for (var i2 = 0; i2 < json3.length; i2++) { - var context = json3[i2]; - var selector = context.selector; - var props = context.style || context.css; - var names = Object.keys(props); - style3.selector(selector); - for (var j2 = 0; j2 < names.length; j2++) { - var name = names[j2]; - var value2 = props[name]; - style3.css(name, value2); - } + __name(is2, "is"); + WorkspaceEdit2.is = is2; + })(WorkspaceEdit || (WorkspaceEdit = {})); + (function(TextDocumentIdentifier2) { + function create4(uri) { + return { uri }; } - return style3; - }; - styfn$4.fromJson = function(json3) { - var style3 = this; - style3.resetToDefault(); - style3.appendFromJson(json3); - return style3; - }; - styfn$4.json = function() { - var json3 = []; - for (var i2 = this.defaultLength; i2 < this.length; i2++) { - var cxt = this[i2]; - var selector = cxt.selector; - var props = cxt.properties; - var css = {}; - for (var j2 = 0; j2 < props.length; j2++) { - var prop = props[j2]; - css[prop.name] = prop.strValue; - } - json3.push({ - selector: !selector ? "core" : selector.toString(), - style: css - }); + __name(create4, "create"); + TextDocumentIdentifier2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && Is.string(candidate.uri); } - return json3; - }; - styfn$3 = {}; - styfn$3.appendFromString = function(string3) { - var self2 = this; - var style3 = this; - var remaining = "" + string3; - var selAndBlockStr; - var blockRem; - var propAndValStr; - remaining = remaining.replace(/[/][*](\s|.)+?[*][/]/g, ""); - function removeSelAndBlockFromRemaining() { - if (remaining.length > selAndBlockStr.length) { - remaining = remaining.substr(selAndBlockStr.length); - } else { - remaining = ""; - } + __name(is2, "is"); + TextDocumentIdentifier2.is = is2; + })(TextDocumentIdentifier || (TextDocumentIdentifier = {})); + (function(VersionedTextDocumentIdentifier2) { + function create4(uri, version3) { + return { uri, version: version3 }; } - __name(removeSelAndBlockFromRemaining, "removeSelAndBlockFromRemaining"); - function removePropAndValFromRem() { - if (blockRem.length > propAndValStr.length) { - blockRem = blockRem.substr(propAndValStr.length); - } else { - blockRem = ""; - } + __name(create4, "create"); + VersionedTextDocumentIdentifier2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version); } - __name(removePropAndValFromRem, "removePropAndValFromRem"); - for (; ; ) { - var nothingLeftToParse = remaining.match(/^\s*$/); - if (nothingLeftToParse) { - break; + __name(is2, "is"); + VersionedTextDocumentIdentifier2.is = is2; + })(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {})); + (function(OptionalVersionedTextDocumentIdentifier2) { + function create4(uri, version3) { + return { uri, version: version3 }; + } + __name(create4, "create"); + OptionalVersionedTextDocumentIdentifier2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version)); + } + __name(is2, "is"); + OptionalVersionedTextDocumentIdentifier2.is = is2; + })(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {})); + (function(TextDocumentItem2) { + function create4(uri, languageId, version3, text4) { + return { uri, languageId, version: version3, text: text4 }; + } + __name(create4, "create"); + TextDocumentItem2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text); + } + __name(is2, "is"); + TextDocumentItem2.is = is2; + })(TextDocumentItem || (TextDocumentItem = {})); + (function(MarkupKind2) { + MarkupKind2.PlainText = "plaintext"; + MarkupKind2.Markdown = "markdown"; + function is2(value2) { + const candidate = value2; + return candidate === MarkupKind2.PlainText || candidate === MarkupKind2.Markdown; + } + __name(is2, "is"); + MarkupKind2.is = is2; + })(MarkupKind || (MarkupKind = {})); + (function(MarkupContent2) { + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(value2) && MarkupKind.is(candidate.kind) && Is.string(candidate.value); + } + __name(is2, "is"); + MarkupContent2.is = is2; + })(MarkupContent || (MarkupContent = {})); + (function(CompletionItemKind2) { + CompletionItemKind2.Text = 1; + CompletionItemKind2.Method = 2; + CompletionItemKind2.Function = 3; + CompletionItemKind2.Constructor = 4; + CompletionItemKind2.Field = 5; + CompletionItemKind2.Variable = 6; + CompletionItemKind2.Class = 7; + CompletionItemKind2.Interface = 8; + CompletionItemKind2.Module = 9; + CompletionItemKind2.Property = 10; + CompletionItemKind2.Unit = 11; + CompletionItemKind2.Value = 12; + CompletionItemKind2.Enum = 13; + CompletionItemKind2.Keyword = 14; + CompletionItemKind2.Snippet = 15; + CompletionItemKind2.Color = 16; + CompletionItemKind2.File = 17; + CompletionItemKind2.Reference = 18; + CompletionItemKind2.Folder = 19; + CompletionItemKind2.EnumMember = 20; + CompletionItemKind2.Constant = 21; + CompletionItemKind2.Struct = 22; + CompletionItemKind2.Event = 23; + CompletionItemKind2.Operator = 24; + CompletionItemKind2.TypeParameter = 25; + })(CompletionItemKind || (CompletionItemKind = {})); + (function(InsertTextFormat2) { + InsertTextFormat2.PlainText = 1; + InsertTextFormat2.Snippet = 2; + })(InsertTextFormat || (InsertTextFormat = {})); + (function(CompletionItemTag2) { + CompletionItemTag2.Deprecated = 1; + })(CompletionItemTag || (CompletionItemTag = {})); + (function(InsertReplaceEdit2) { + function create4(newText, insert, replace2) { + return { newText, insert, replace: replace2 }; + } + __name(create4, "create"); + InsertReplaceEdit2.create = create4; + function is2(value2) { + const candidate = value2; + return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace); + } + __name(is2, "is"); + InsertReplaceEdit2.is = is2; + })(InsertReplaceEdit || (InsertReplaceEdit = {})); + (function(InsertTextMode2) { + InsertTextMode2.asIs = 1; + InsertTextMode2.adjustIndentation = 2; + })(InsertTextMode || (InsertTextMode = {})); + (function(CompletionItemLabelDetails2) { + function is2(value2) { + const candidate = value2; + return candidate && (Is.string(candidate.detail) || candidate.detail === void 0) && (Is.string(candidate.description) || candidate.description === void 0); + } + __name(is2, "is"); + CompletionItemLabelDetails2.is = is2; + })(CompletionItemLabelDetails || (CompletionItemLabelDetails = {})); + (function(CompletionItem2) { + function create4(label) { + return { label }; + } + __name(create4, "create"); + CompletionItem2.create = create4; + })(CompletionItem || (CompletionItem = {})); + (function(CompletionList2) { + function create4(items, isIncomplete) { + return { items: items ? items : [], isIncomplete: !!isIncomplete }; + } + __name(create4, "create"); + CompletionList2.create = create4; + })(CompletionList || (CompletionList = {})); + (function(MarkedString2) { + function fromPlainText(plainText) { + return plainText.replace(/[\\`*_{}[\]()#+\-.!]/g, "\\$&"); + } + __name(fromPlainText, "fromPlainText"); + MarkedString2.fromPlainText = fromPlainText; + function is2(value2) { + const candidate = value2; + return Is.string(candidate) || Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value); + } + __name(is2, "is"); + MarkedString2.is = is2; + })(MarkedString || (MarkedString = {})); + (function(Hover2) { + function is2(value2) { + let candidate = value2; + return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) || MarkedString.is(candidate.contents) || Is.typedArray(candidate.contents, MarkedString.is)) && (value2.range === void 0 || Range.is(value2.range)); + } + __name(is2, "is"); + Hover2.is = is2; + })(Hover || (Hover = {})); + (function(ParameterInformation2) { + function create4(label, documentation) { + return documentation ? { label, documentation } : { label }; + } + __name(create4, "create"); + ParameterInformation2.create = create4; + })(ParameterInformation || (ParameterInformation = {})); + (function(SignatureInformation2) { + function create4(label, documentation, ...parameters) { + let result = { label }; + if (Is.defined(documentation)) { + result.documentation = documentation; } - var selAndBlock = remaining.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/); - if (!selAndBlock) { - warn("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: " + remaining); - break; + if (Is.defined(parameters)) { + result.parameters = parameters; + } else { + result.parameters = []; } - selAndBlockStr = selAndBlock[0]; - var selectorStr = selAndBlock[1]; - if (selectorStr !== "core") { - var selector = new Selector(selectorStr); - if (selector.invalid) { - warn("Skipping parsing of block: Invalid selector found in string stylesheet: " + selectorStr); - removeSelAndBlockFromRemaining(); - continue; - } + return result; + } + __name(create4, "create"); + SignatureInformation2.create = create4; + })(SignatureInformation || (SignatureInformation = {})); + (function(DocumentHighlightKind2) { + DocumentHighlightKind2.Text = 1; + DocumentHighlightKind2.Read = 2; + DocumentHighlightKind2.Write = 3; + })(DocumentHighlightKind || (DocumentHighlightKind = {})); + (function(DocumentHighlight2) { + function create4(range3, kind) { + let result = { range: range3 }; + if (Is.number(kind)) { + result.kind = kind; } - var blockStr = selAndBlock[2]; - var invalidBlock = false; - blockRem = blockStr; - var props = []; - for (; ; ) { - var _nothingLeftToParse = blockRem.match(/^\s*$/); - if (_nothingLeftToParse) { - break; - } - var propAndVal = blockRem.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/); - if (!propAndVal) { - warn("Skipping parsing of block: Invalid formatting of style property and value definitions found in:" + blockStr); - invalidBlock = true; - break; - } - propAndValStr = propAndVal[0]; - var propStr = propAndVal[1]; - var valStr = propAndVal[2]; - var prop = self2.properties[propStr]; - if (!prop) { - warn("Skipping property: Invalid property name in: " + propAndValStr); - removePropAndValFromRem(); - continue; - } - var parsedProp = style3.parse(propStr, valStr); - if (!parsedProp) { - warn("Skipping property: Invalid property definition in: " + propAndValStr); - removePropAndValFromRem(); - continue; + return result; + } + __name(create4, "create"); + DocumentHighlight2.create = create4; + })(DocumentHighlight || (DocumentHighlight = {})); + (function(SymbolKind2) { + SymbolKind2.File = 1; + SymbolKind2.Module = 2; + SymbolKind2.Namespace = 3; + SymbolKind2.Package = 4; + SymbolKind2.Class = 5; + SymbolKind2.Method = 6; + SymbolKind2.Property = 7; + SymbolKind2.Field = 8; + SymbolKind2.Constructor = 9; + SymbolKind2.Enum = 10; + SymbolKind2.Interface = 11; + SymbolKind2.Function = 12; + SymbolKind2.Variable = 13; + SymbolKind2.Constant = 14; + SymbolKind2.String = 15; + SymbolKind2.Number = 16; + SymbolKind2.Boolean = 17; + SymbolKind2.Array = 18; + SymbolKind2.Object = 19; + SymbolKind2.Key = 20; + SymbolKind2.Null = 21; + SymbolKind2.EnumMember = 22; + SymbolKind2.Struct = 23; + SymbolKind2.Event = 24; + SymbolKind2.Operator = 25; + SymbolKind2.TypeParameter = 26; + })(SymbolKind || (SymbolKind = {})); + (function(SymbolTag2) { + SymbolTag2.Deprecated = 1; + })(SymbolTag || (SymbolTag = {})); + (function(SymbolInformation2) { + function create4(name, kind, range3, uri, containerName) { + let result = { + name, + kind, + location: { uri, range: range3 } + }; + if (containerName) { + result.containerName = containerName; + } + return result; + } + __name(create4, "create"); + SymbolInformation2.create = create4; + })(SymbolInformation || (SymbolInformation = {})); + (function(WorkspaceSymbol2) { + function create4(name, kind, uri, range3) { + return range3 !== void 0 ? { name, kind, location: { uri, range: range3 } } : { name, kind, location: { uri } }; + } + __name(create4, "create"); + WorkspaceSymbol2.create = create4; + })(WorkspaceSymbol || (WorkspaceSymbol = {})); + (function(DocumentSymbol2) { + function create4(name, detail, kind, range3, selectionRange, children2) { + let result = { + name, + detail, + kind, + range: range3, + selectionRange + }; + if (children2 !== void 0) { + result.children = children2; + } + return result; + } + __name(create4, "create"); + DocumentSymbol2.create = create4; + function is2(value2) { + let candidate = value2; + return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range.is(candidate.range) && Range.is(candidate.selectionRange) && (candidate.detail === void 0 || Is.string(candidate.detail)) && (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) && (candidate.children === void 0 || Array.isArray(candidate.children)) && (candidate.tags === void 0 || Array.isArray(candidate.tags)); + } + __name(is2, "is"); + DocumentSymbol2.is = is2; + })(DocumentSymbol || (DocumentSymbol = {})); + (function(CodeActionKind2) { + CodeActionKind2.Empty = ""; + CodeActionKind2.QuickFix = "quickfix"; + CodeActionKind2.Refactor = "refactor"; + CodeActionKind2.RefactorExtract = "refactor.extract"; + CodeActionKind2.RefactorInline = "refactor.inline"; + CodeActionKind2.RefactorRewrite = "refactor.rewrite"; + CodeActionKind2.Source = "source"; + CodeActionKind2.SourceOrganizeImports = "source.organizeImports"; + CodeActionKind2.SourceFixAll = "source.fixAll"; + })(CodeActionKind || (CodeActionKind = {})); + (function(CodeActionTriggerKind2) { + CodeActionTriggerKind2.Invoked = 1; + CodeActionTriggerKind2.Automatic = 2; + })(CodeActionTriggerKind || (CodeActionTriggerKind = {})); + (function(CodeActionContext2) { + function create4(diagnostics, only, triggerKind) { + let result = { diagnostics }; + if (only !== void 0 && only !== null) { + result.only = only; + } + if (triggerKind !== void 0 && triggerKind !== null) { + result.triggerKind = triggerKind; + } + return result; + } + __name(create4, "create"); + CodeActionContext2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string)) && (candidate.triggerKind === void 0 || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic); + } + __name(is2, "is"); + CodeActionContext2.is = is2; + })(CodeActionContext || (CodeActionContext = {})); + (function(CodeAction2) { + function create4(title2, kindOrCommandOrEdit, kind) { + let result = { title: title2 }; + let checkKind = true; + if (typeof kindOrCommandOrEdit === "string") { + checkKind = false; + result.kind = kindOrCommandOrEdit; + } else if (Command.is(kindOrCommandOrEdit)) { + result.command = kindOrCommandOrEdit; + } else { + result.edit = kindOrCommandOrEdit; + } + if (checkKind && kind !== void 0) { + result.kind = kind; + } + return result; + } + __name(create4, "create"); + CodeAction2.create = create4; + function is2(value2) { + let candidate = value2; + return candidate && Is.string(candidate.title) && (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && (candidate.kind === void 0 || Is.string(candidate.kind)) && (candidate.edit !== void 0 || candidate.command !== void 0) && (candidate.command === void 0 || Command.is(candidate.command)) && (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) && (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit)); + } + __name(is2, "is"); + CodeAction2.is = is2; + })(CodeAction || (CodeAction = {})); + (function(CodeLens2) { + function create4(range3, data5) { + let result = { range: range3 }; + if (Is.defined(data5)) { + result.data = data5; + } + return result; + } + __name(create4, "create"); + CodeLens2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command)); + } + __name(is2, "is"); + CodeLens2.is = is2; + })(CodeLens || (CodeLens = {})); + (function(FormattingOptions2) { + function create4(tabSize, insertSpaces) { + return { tabSize, insertSpaces }; + } + __name(create4, "create"); + FormattingOptions2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces); + } + __name(is2, "is"); + FormattingOptions2.is = is2; + })(FormattingOptions || (FormattingOptions = {})); + (function(DocumentLink2) { + function create4(range3, target, data5) { + return { range: range3, target, data: data5 }; + } + __name(create4, "create"); + DocumentLink2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target)); + } + __name(is2, "is"); + DocumentLink2.is = is2; + })(DocumentLink || (DocumentLink = {})); + (function(SelectionRange2) { + function create4(range3, parent4) { + return { range: range3, parent: parent4 }; + } + __name(create4, "create"); + SelectionRange2.create = create4; + function is2(value2) { + let candidate = value2; + return Is.objectLiteral(candidate) && Range.is(candidate.range) && (candidate.parent === void 0 || SelectionRange2.is(candidate.parent)); + } + __name(is2, "is"); + SelectionRange2.is = is2; + })(SelectionRange || (SelectionRange = {})); + (function(SemanticTokenTypes2) { + SemanticTokenTypes2["namespace"] = "namespace"; + SemanticTokenTypes2["type"] = "type"; + SemanticTokenTypes2["class"] = "class"; + SemanticTokenTypes2["enum"] = "enum"; + SemanticTokenTypes2["interface"] = "interface"; + SemanticTokenTypes2["struct"] = "struct"; + SemanticTokenTypes2["typeParameter"] = "typeParameter"; + SemanticTokenTypes2["parameter"] = "parameter"; + SemanticTokenTypes2["variable"] = "variable"; + SemanticTokenTypes2["property"] = "property"; + SemanticTokenTypes2["enumMember"] = "enumMember"; + SemanticTokenTypes2["event"] = "event"; + SemanticTokenTypes2["function"] = "function"; + SemanticTokenTypes2["method"] = "method"; + SemanticTokenTypes2["macro"] = "macro"; + SemanticTokenTypes2["keyword"] = "keyword"; + SemanticTokenTypes2["modifier"] = "modifier"; + SemanticTokenTypes2["comment"] = "comment"; + SemanticTokenTypes2["string"] = "string"; + SemanticTokenTypes2["number"] = "number"; + SemanticTokenTypes2["regexp"] = "regexp"; + SemanticTokenTypes2["operator"] = "operator"; + SemanticTokenTypes2["decorator"] = "decorator"; + })(SemanticTokenTypes || (SemanticTokenTypes = {})); + (function(SemanticTokenModifiers2) { + SemanticTokenModifiers2["declaration"] = "declaration"; + SemanticTokenModifiers2["definition"] = "definition"; + SemanticTokenModifiers2["readonly"] = "readonly"; + SemanticTokenModifiers2["static"] = "static"; + SemanticTokenModifiers2["deprecated"] = "deprecated"; + SemanticTokenModifiers2["abstract"] = "abstract"; + SemanticTokenModifiers2["async"] = "async"; + SemanticTokenModifiers2["modification"] = "modification"; + SemanticTokenModifiers2["documentation"] = "documentation"; + SemanticTokenModifiers2["defaultLibrary"] = "defaultLibrary"; + })(SemanticTokenModifiers || (SemanticTokenModifiers = {})); + (function(SemanticTokens2) { + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(candidate) && (candidate.resultId === void 0 || typeof candidate.resultId === "string") && Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === "number"); + } + __name(is2, "is"); + SemanticTokens2.is = is2; + })(SemanticTokens || (SemanticTokens = {})); + (function(InlineValueText2) { + function create4(range3, text4) { + return { range: range3, text: text4 }; + } + __name(create4, "create"); + InlineValueText2.create = create4; + function is2(value2) { + const candidate = value2; + return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text); + } + __name(is2, "is"); + InlineValueText2.is = is2; + })(InlineValueText || (InlineValueText = {})); + (function(InlineValueVariableLookup2) { + function create4(range3, variableName, caseSensitiveLookup) { + return { range: range3, variableName, caseSensitiveLookup }; + } + __name(create4, "create"); + InlineValueVariableLookup2.create = create4; + function is2(value2) { + const candidate = value2; + return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup) && (Is.string(candidate.variableName) || candidate.variableName === void 0); + } + __name(is2, "is"); + InlineValueVariableLookup2.is = is2; + })(InlineValueVariableLookup || (InlineValueVariableLookup = {})); + (function(InlineValueEvaluatableExpression2) { + function create4(range3, expression) { + return { range: range3, expression }; + } + __name(create4, "create"); + InlineValueEvaluatableExpression2.create = create4; + function is2(value2) { + const candidate = value2; + return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && (Is.string(candidate.expression) || candidate.expression === void 0); + } + __name(is2, "is"); + InlineValueEvaluatableExpression2.is = is2; + })(InlineValueEvaluatableExpression || (InlineValueEvaluatableExpression = {})); + (function(InlineValueContext2) { + function create4(frameId, stoppedLocation) { + return { frameId, stoppedLocation }; + } + __name(create4, "create"); + InlineValueContext2.create = create4; + function is2(value2) { + const candidate = value2; + return Is.defined(candidate) && Range.is(value2.stoppedLocation); + } + __name(is2, "is"); + InlineValueContext2.is = is2; + })(InlineValueContext || (InlineValueContext = {})); + (function(InlayHintKind2) { + InlayHintKind2.Type = 1; + InlayHintKind2.Parameter = 2; + function is2(value2) { + return value2 === 1 || value2 === 2; + } + __name(is2, "is"); + InlayHintKind2.is = is2; + })(InlayHintKind || (InlayHintKind = {})); + (function(InlayHintLabelPart2) { + function create4(value2) { + return { value: value2 }; + } + __name(create4, "create"); + InlayHintLabelPart2.create = create4; + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(candidate) && (candidate.tooltip === void 0 || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.location === void 0 || Location.is(candidate.location)) && (candidate.command === void 0 || Command.is(candidate.command)); + } + __name(is2, "is"); + InlayHintLabelPart2.is = is2; + })(InlayHintLabelPart || (InlayHintLabelPart = {})); + (function(InlayHint2) { + function create4(position5, label, kind) { + const result = { position: position5, label }; + if (kind !== void 0) { + result.kind = kind; + } + return result; + } + __name(create4, "create"); + InlayHint2.create = create4; + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(candidate) && Position.is(candidate.position) && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is)) && (candidate.kind === void 0 || InlayHintKind.is(candidate.kind)) && candidate.textEdits === void 0 || Is.typedArray(candidate.textEdits, TextEdit.is) && (candidate.tooltip === void 0 || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.paddingLeft === void 0 || Is.boolean(candidate.paddingLeft)) && (candidate.paddingRight === void 0 || Is.boolean(candidate.paddingRight)); + } + __name(is2, "is"); + InlayHint2.is = is2; + })(InlayHint || (InlayHint = {})); + (function(StringValue2) { + function createSnippet(value2) { + return { kind: "snippet", value: value2 }; + } + __name(createSnippet, "createSnippet"); + StringValue2.createSnippet = createSnippet; + })(StringValue || (StringValue = {})); + (function(InlineCompletionItem2) { + function create4(insertText, filterText, range3, command) { + return { insertText, filterText, range: range3, command }; + } + __name(create4, "create"); + InlineCompletionItem2.create = create4; + })(InlineCompletionItem || (InlineCompletionItem = {})); + (function(InlineCompletionList2) { + function create4(items) { + return { items }; + } + __name(create4, "create"); + InlineCompletionList2.create = create4; + })(InlineCompletionList || (InlineCompletionList = {})); + (function(InlineCompletionTriggerKind2) { + InlineCompletionTriggerKind2.Invoked = 0; + InlineCompletionTriggerKind2.Automatic = 1; + })(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {})); + (function(SelectedCompletionInfo2) { + function create4(range3, text4) { + return { range: range3, text: text4 }; + } + __name(create4, "create"); + SelectedCompletionInfo2.create = create4; + })(SelectedCompletionInfo || (SelectedCompletionInfo = {})); + (function(InlineCompletionContext2) { + function create4(triggerKind, selectedCompletionInfo) { + return { triggerKind, selectedCompletionInfo }; + } + __name(create4, "create"); + InlineCompletionContext2.create = create4; + })(InlineCompletionContext || (InlineCompletionContext = {})); + (function(WorkspaceFolder2) { + function is2(value2) { + const candidate = value2; + return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name); + } + __name(is2, "is"); + WorkspaceFolder2.is = is2; + })(WorkspaceFolder || (WorkspaceFolder = {})); + (function(TextDocument3) { + function create4(uri, languageId, version3, content) { + return new FullTextDocument(uri, languageId, version3, content); + } + __name(create4, "create"); + TextDocument3.create = create4; + function is2(value2) { + let candidate = value2; + return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false; + } + __name(is2, "is"); + TextDocument3.is = is2; + function applyEdits(document2, edits) { + let text4 = document2.getText(); + let sortedEdits = mergeSort2(edits, (a2, b3) => { + let diff2 = a2.range.start.line - b3.range.start.line; + if (diff2 === 0) { + return a2.range.start.character - b3.range.start.character; } - props.push({ - name: propStr, - val: valStr - }); - removePropAndValFromRem(); + return diff2; + }); + let lastModifiedOffset = text4.length; + for (let i2 = sortedEdits.length - 1; i2 >= 0; i2--) { + let e3 = sortedEdits[i2]; + let startOffset = document2.offsetAt(e3.range.start); + let endOffset = document2.offsetAt(e3.range.end); + if (endOffset <= lastModifiedOffset) { + text4 = text4.substring(0, startOffset) + e3.newText + text4.substring(endOffset, text4.length); + } else { + throw new Error("Overlapping edit"); + } + lastModifiedOffset = startOffset; } - if (invalidBlock) { - removeSelAndBlockFromRemaining(); - break; + return text4; + } + __name(applyEdits, "applyEdits"); + TextDocument3.applyEdits = applyEdits; + function mergeSort2(data5, compare) { + if (data5.length <= 1) { + return data5; } - style3.selector(selectorStr); - for (var i2 = 0; i2 < props.length; i2++) { - var _prop = props[i2]; - style3.css(_prop.name, _prop.val); + const p3 = data5.length / 2 | 0; + const left3 = data5.slice(0, p3); + const right3 = data5.slice(p3); + mergeSort2(left3, compare); + mergeSort2(right3, compare); + let leftIdx = 0; + let rightIdx = 0; + let i2 = 0; + while (leftIdx < left3.length && rightIdx < right3.length) { + let ret = compare(left3[leftIdx], right3[rightIdx]); + if (ret <= 0) { + data5[i2++] = left3[leftIdx++]; + } else { + data5[i2++] = right3[rightIdx++]; + } } - removeSelAndBlockFromRemaining(); + while (leftIdx < left3.length) { + data5[i2++] = left3[leftIdx++]; + } + while (rightIdx < right3.length) { + data5[i2++] = right3[rightIdx++]; + } + return data5; } - return style3; - }; - styfn$3.fromString = function(string3) { - var style3 = this; - style3.resetToDefault(); - style3.appendFromString(string3); - return style3; - }; - styfn$2 = {}; - (function() { - var number$12 = number6; - var rgba4 = rgbaNoBackRefs; - var hsla3 = hslaNoBackRefs; - var hex3$1 = hex3; - var hex6$1 = hex6; - var data6 = /* @__PURE__ */ __name(function data7(prefix) { - return "^" + prefix + "\\s*\\(\\s*([\\w\\.]+)\\s*\\)$"; - }, "data"); - var mapData = /* @__PURE__ */ __name(function mapData2(prefix) { - var mapArg = number$12 + "|\\w+|" + rgba4 + "|" + hsla3 + "|" + hex3$1 + "|" + hex6$1; - return "^" + prefix + "\\s*\\(([\\w\\.]+)\\s*\\,\\s*(" + number$12 + ")\\s*\\,\\s*(" + number$12 + ")\\s*,\\s*(" + mapArg + ")\\s*\\,\\s*(" + mapArg + ")\\)$"; - }, "mapData"); - var urlRegexes = [`^url\\s*\\(\\s*['"]?(.+?)['"]?\\s*\\)$`, "^(none)$", "^(.+)$"]; - styfn$2.types = { - time: { - number: true, - min: 0, - units: "s|ms", - implicitUnits: "ms" - }, - percent: { - number: true, - min: 0, - max: 100, - units: "%", - implicitUnits: "%" - }, - percentages: { - number: true, - min: 0, - max: 100, - units: "%", - implicitUnits: "%", - multiple: true - }, - zeroOneNumber: { - number: true, - min: 0, - max: 1, - unitless: true - }, - zeroOneNumbers: { - number: true, - min: 0, - max: 1, - unitless: true, - multiple: true - }, - nOneOneNumber: { - number: true, - min: -1, - max: 1, - unitless: true - }, - nonNegativeInt: { - number: true, - min: 0, - integer: true, - unitless: true - }, - nonNegativeNumber: { - number: true, - min: 0, - unitless: true - }, - position: { - enums: ["parent", "origin"] - }, - nodeSize: { - number: true, - min: 0, - enums: ["label"] - }, - number: { - number: true, - unitless: true - }, - numbers: { - number: true, - unitless: true, - multiple: true - }, - positiveNumber: { - number: true, - unitless: true, - min: 0, - strictMin: true - }, - size: { - number: true, - min: 0 - }, - bidirectionalSize: { - number: true - }, - // allows negative - bidirectionalSizeMaybePercent: { - number: true, - allowPercent: true - }, - // allows negative - bidirectionalSizes: { - number: true, - multiple: true - }, - // allows negative - sizeMaybePercent: { - number: true, - min: 0, - allowPercent: true - }, - axisDirection: { - enums: ["horizontal", "leftward", "rightward", "vertical", "upward", "downward", "auto"] - }, - paddingRelativeTo: { - enums: ["width", "height", "average", "min", "max"] - }, - bgWH: { - number: true, - min: 0, - allowPercent: true, - enums: ["auto"], - multiple: true - }, - bgPos: { - number: true, - allowPercent: true, - multiple: true - }, - bgRelativeTo: { - enums: ["inner", "include-padding"], - multiple: true - }, - bgRepeat: { - enums: ["repeat", "repeat-x", "repeat-y", "no-repeat"], - multiple: true - }, - bgFit: { - enums: ["none", "contain", "cover"], - multiple: true - }, - bgCrossOrigin: { - enums: ["anonymous", "use-credentials", "null"], - multiple: true - }, - bgClip: { - enums: ["none", "node"], - multiple: true - }, - bgContainment: { - enums: ["inside", "over"], - multiple: true - }, - color: { - color: true - }, - colors: { - color: true, - multiple: true - }, - fill: { - enums: ["solid", "linear-gradient", "radial-gradient"] - }, - bool: { - enums: ["yes", "no"] - }, - bools: { - enums: ["yes", "no"], - multiple: true - }, - lineStyle: { - enums: ["solid", "dotted", "dashed"] - }, - lineCap: { - enums: ["butt", "round", "square"] - }, - linePosition: { - enums: ["center", "inside", "outside"] - }, - lineJoin: { - enums: ["round", "bevel", "miter"] - }, - borderStyle: { - enums: ["solid", "dotted", "dashed", "double"] - }, - curveStyle: { - enums: ["bezier", "unbundled-bezier", "haystack", "segments", "straight", "straight-triangle", "taxi", "round-segments", "round-taxi"] - }, - radiusType: { - enums: ["arc-radius", "influence-radius"], - multiple: true - }, - fontFamily: { - regex: '^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$' - }, - fontStyle: { - enums: ["italic", "normal", "oblique"] - }, - fontWeight: { - enums: ["normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "800", "900", 100, 200, 300, 400, 500, 600, 700, 800, 900] - }, - textDecoration: { - enums: ["none", "underline", "overline", "line-through"] - }, - textTransform: { - enums: ["none", "uppercase", "lowercase"] - }, - textWrap: { - enums: ["none", "wrap", "ellipsis"] - }, - textOverflowWrap: { - enums: ["whitespace", "anywhere"] - }, - textBackgroundShape: { - enums: ["rectangle", "roundrectangle", "round-rectangle"] - }, - nodeShape: { - enums: ["rectangle", "roundrectangle", "round-rectangle", "cutrectangle", "cut-rectangle", "bottomroundrectangle", "bottom-round-rectangle", "barrel", "ellipse", "triangle", "round-triangle", "square", "pentagon", "round-pentagon", "hexagon", "round-hexagon", "concavehexagon", "concave-hexagon", "heptagon", "round-heptagon", "octagon", "round-octagon", "tag", "round-tag", "star", "diamond", "round-diamond", "vee", "rhomboid", "right-rhomboid", "polygon"] - }, - overlayShape: { - enums: ["roundrectangle", "round-rectangle", "ellipse"] - }, - cornerRadius: { - number: true, - min: 0, - units: "px|em", - implicitUnits: "px", - enums: ["auto"] - }, - compoundIncludeLabels: { - enums: ["include", "exclude"] - }, - arrowShape: { - enums: ["tee", "triangle", "triangle-tee", "circle-triangle", "triangle-cross", "triangle-backcurve", "vee", "square", "circle", "diamond", "chevron", "none"] - }, - arrowFill: { - enums: ["filled", "hollow"] - }, - arrowWidth: { - number: true, - units: "%|px|em", - implicitUnits: "px", - enums: ["match-line"] - }, - display: { - enums: ["element", "none"] - }, - visibility: { - enums: ["hidden", "visible"] - }, - zCompoundDepth: { - enums: ["bottom", "orphan", "auto", "top"] - }, - zIndexCompare: { - enums: ["auto", "manual"] - }, - valign: { - enums: ["top", "center", "bottom"] - }, - halign: { - enums: ["left", "center", "right"] - }, - justification: { - enums: ["left", "center", "right", "auto"] - }, - text: { - string: true - }, - data: { - mapping: true, - regex: data6("data") - }, - layoutData: { - mapping: true, - regex: data6("layoutData") - }, - scratch: { - mapping: true, - regex: data6("scratch") - }, - mapData: { - mapping: true, - regex: mapData("mapData") - }, - mapLayoutData: { - mapping: true, - regex: mapData("mapLayoutData") - }, - mapScratch: { - mapping: true, - regex: mapData("mapScratch") - }, - fn: { - mapping: true, - fn: true - }, - url: { - regexes: urlRegexes, - singleRegexMatchValue: true - }, - urls: { - regexes: urlRegexes, - singleRegexMatchValue: true, - multiple: true - }, - propList: { - propList: true - }, - angle: { - number: true, - units: "deg|rad", - implicitUnits: "rad" - }, - textRotation: { - number: true, - units: "deg|rad", - implicitUnits: "rad", - enums: ["none", "autorotate"] - }, - polygonPointList: { - number: true, - multiple: true, - evenMultiple: true, - min: -1, - max: 1, - unitless: true - }, - edgeDistances: { - enums: ["intersection", "node-position", "endpoints"] - }, - edgeEndpoint: { - number: true, - multiple: true, - units: "%|px|em|deg|rad", - implicitUnits: "px", - enums: ["inside-to-node", "outside-to-node", "outside-to-node-or-label", "outside-to-line", "outside-to-line-or-label"], - singleEnum: true, - validate: /* @__PURE__ */ __name(function validate(valArr, unitsArr) { - switch (valArr.length) { - case 2: - return unitsArr[0] !== "deg" && unitsArr[0] !== "rad" && unitsArr[1] !== "deg" && unitsArr[1] !== "rad"; - case 1: - return string(valArr[0]) || unitsArr[0] === "deg" || unitsArr[0] === "rad"; - default: - return false; - } - }, "validate") - }, - easing: { - regexes: ["^(spring)\\s*\\(\\s*(" + number$12 + ")\\s*,\\s*(" + number$12 + ")\\s*\\)$", "^(cubic-bezier)\\s*\\(\\s*(" + number$12 + ")\\s*,\\s*(" + number$12 + ")\\s*,\\s*(" + number$12 + ")\\s*,\\s*(" + number$12 + ")\\s*\\)$"], - enums: ["linear", "ease", "ease-in", "ease-out", "ease-in-out", "ease-in-sine", "ease-out-sine", "ease-in-out-sine", "ease-in-quad", "ease-out-quad", "ease-in-out-quad", "ease-in-cubic", "ease-out-cubic", "ease-in-out-cubic", "ease-in-quart", "ease-out-quart", "ease-in-out-quart", "ease-in-quint", "ease-out-quint", "ease-in-out-quint", "ease-in-expo", "ease-out-expo", "ease-in-out-expo", "ease-in-circ", "ease-out-circ", "ease-in-out-circ"] - }, - gradientDirection: { - enums: [ - "to-bottom", - "to-top", - "to-left", - "to-right", - "to-bottom-right", - "to-bottom-left", - "to-top-right", - "to-top-left", - "to-right-bottom", - "to-left-bottom", - "to-right-top", - "to-left-top" - // different order - ] - }, - boundsExpansion: { - number: true, - multiple: true, - min: 0, - validate: /* @__PURE__ */ __name(function validate(valArr) { - var length2 = valArr.length; - return length2 === 1 || length2 === 2 || length2 === 4; - }, "validate") + __name(mergeSort2, "mergeSort"); + })(TextDocument || (TextDocument = {})); + FullTextDocument = class { + static { + __name(this, "FullTextDocument"); + } + constructor(uri, languageId, version3, content) { + this._uri = uri; + this._languageId = languageId; + this._version = version3; + this._content = content; + this._lineOffsets = void 0; + } + get uri() { + return this._uri; + } + get languageId() { + return this._languageId; + } + get version() { + return this._version; + } + getText(range3) { + if (range3) { + let start3 = this.offsetAt(range3.start); + let end2 = this.offsetAt(range3.end); + return this._content.substring(start3, end2); } - }; - var diff2 = { - zeroNonZero: /* @__PURE__ */ __name(function zeroNonZero(val1, val2) { - if ((val1 == null || val2 == null) && val1 !== val2) { - return true; + return this._content; + } + update(event3, version3) { + this._content = event3.text; + this._version = version3; + this._lineOffsets = void 0; + } + getLineOffsets() { + if (this._lineOffsets === void 0) { + let lineOffsets = []; + let text4 = this._content; + let isLineStart = true; + for (let i2 = 0; i2 < text4.length; i2++) { + if (isLineStart) { + lineOffsets.push(i2); + isLineStart = false; + } + let ch = text4.charAt(i2); + isLineStart = ch === "\r" || ch === "\n"; + if (ch === "\r" && i2 + 1 < text4.length && text4.charAt(i2 + 1) === "\n") { + i2++; + } } - if (val1 == 0 && val2 != 0) { - return true; - } else if (val1 != 0 && val2 == 0) { - return true; + if (isLineStart && text4.length > 0) { + lineOffsets.push(text4.length); + } + this._lineOffsets = lineOffsets; + } + return this._lineOffsets; + } + positionAt(offset) { + offset = Math.max(Math.min(offset, this._content.length), 0); + let lineOffsets = this.getLineOffsets(); + let low = 0, high = lineOffsets.length; + if (high === 0) { + return Position.create(0, offset); + } + while (low < high) { + let mid = Math.floor((low + high) / 2); + if (lineOffsets[mid] > offset) { + high = mid; } else { - return false; + low = mid + 1; } - }, "zeroNonZero"), - any: /* @__PURE__ */ __name(function any(val1, val2) { - return val1 != val2; - }, "any"), - emptyNonEmpty: /* @__PURE__ */ __name(function emptyNonEmpty(str1, str2) { - var empty1 = emptyString(str1); - var empty22 = emptyString(str2); - return empty1 && !empty22 || !empty1 && empty22; - }, "emptyNonEmpty") - }; - var t4 = styfn$2.types; - var mainLabel = [{ - name: "label", - type: t4.text, - triggersBounds: diff2.any, - triggersZOrder: diff2.emptyNonEmpty - }, { - name: "text-rotation", - type: t4.textRotation, - triggersBounds: diff2.any - }, { - name: "text-margin-x", - type: t4.bidirectionalSize, - triggersBounds: diff2.any - }, { - name: "text-margin-y", - type: t4.bidirectionalSize, - triggersBounds: diff2.any - }]; - var sourceLabel = [{ - name: "source-label", - type: t4.text, - triggersBounds: diff2.any - }, { - name: "source-text-rotation", - type: t4.textRotation, - triggersBounds: diff2.any - }, { - name: "source-text-margin-x", - type: t4.bidirectionalSize, - triggersBounds: diff2.any - }, { - name: "source-text-margin-y", - type: t4.bidirectionalSize, - triggersBounds: diff2.any - }, { - name: "source-text-offset", - type: t4.size, - triggersBounds: diff2.any - }]; - var targetLabel = [{ - name: "target-label", - type: t4.text, - triggersBounds: diff2.any - }, { - name: "target-text-rotation", - type: t4.textRotation, - triggersBounds: diff2.any - }, { - name: "target-text-margin-x", - type: t4.bidirectionalSize, - triggersBounds: diff2.any - }, { - name: "target-text-margin-y", - type: t4.bidirectionalSize, - triggersBounds: diff2.any - }, { - name: "target-text-offset", - type: t4.size, - triggersBounds: diff2.any - }]; - var labelDimensions = [{ - name: "font-family", - type: t4.fontFamily, - triggersBounds: diff2.any - }, { - name: "font-style", - type: t4.fontStyle, - triggersBounds: diff2.any - }, { - name: "font-weight", - type: t4.fontWeight, - triggersBounds: diff2.any - }, { - name: "font-size", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "text-transform", - type: t4.textTransform, - triggersBounds: diff2.any - }, { - name: "text-wrap", - type: t4.textWrap, - triggersBounds: diff2.any - }, { - name: "text-overflow-wrap", - type: t4.textOverflowWrap, - triggersBounds: diff2.any - }, { - name: "text-max-width", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "text-outline-width", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "line-height", - type: t4.positiveNumber, - triggersBounds: diff2.any - }]; - var commonLabel = [{ - name: "text-valign", - type: t4.valign, - triggersBounds: diff2.any - }, { - name: "text-halign", - type: t4.halign, - triggersBounds: diff2.any - }, { - name: "color", - type: t4.color - }, { - name: "text-outline-color", - type: t4.color - }, { - name: "text-outline-opacity", - type: t4.zeroOneNumber - }, { - name: "text-background-color", - type: t4.color - }, { - name: "text-background-opacity", - type: t4.zeroOneNumber - }, { - name: "text-background-padding", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "text-border-opacity", - type: t4.zeroOneNumber - }, { - name: "text-border-color", - type: t4.color - }, { - name: "text-border-width", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "text-border-style", - type: t4.borderStyle, - triggersBounds: diff2.any - }, { - name: "text-background-shape", - type: t4.textBackgroundShape, - triggersBounds: diff2.any - }, { - name: "text-justification", - type: t4.justification - }]; - var behavior = [{ - name: "events", - type: t4.bool, - triggersZOrder: diff2.any - }, { - name: "text-events", - type: t4.bool, - triggersZOrder: diff2.any - }]; - var visibility = [{ - name: "display", - type: t4.display, - triggersZOrder: diff2.any, - triggersBounds: diff2.any, - triggersBoundsOfConnectedEdges: true - }, { - name: "visibility", - type: t4.visibility, - triggersZOrder: diff2.any - }, { - name: "opacity", - type: t4.zeroOneNumber, - triggersZOrder: diff2.zeroNonZero - }, { - name: "text-opacity", - type: t4.zeroOneNumber - }, { - name: "min-zoomed-font-size", - type: t4.size - }, { - name: "z-compound-depth", - type: t4.zCompoundDepth, - triggersZOrder: diff2.any - }, { - name: "z-index-compare", - type: t4.zIndexCompare, - triggersZOrder: diff2.any - }, { - name: "z-index", - type: t4.number, - triggersZOrder: diff2.any - }]; - var overlay = [{ - name: "overlay-padding", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "overlay-color", - type: t4.color - }, { - name: "overlay-opacity", - type: t4.zeroOneNumber, - triggersBounds: diff2.zeroNonZero - }, { - name: "overlay-shape", - type: t4.overlayShape, - triggersBounds: diff2.any - }, { - name: "overlay-corner-radius", - type: t4.cornerRadius - }]; - var underlay = [{ - name: "underlay-padding", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "underlay-color", - type: t4.color - }, { - name: "underlay-opacity", - type: t4.zeroOneNumber, - triggersBounds: diff2.zeroNonZero - }, { - name: "underlay-shape", - type: t4.overlayShape, - triggersBounds: diff2.any - }, { - name: "underlay-corner-radius", - type: t4.cornerRadius - }]; - var transition2 = [{ - name: "transition-property", - type: t4.propList - }, { - name: "transition-duration", - type: t4.time - }, { - name: "transition-delay", - type: t4.time - }, { - name: "transition-timing-function", - type: t4.easing - }]; - var nodeSizeHashOverride = /* @__PURE__ */ __name(function nodeSizeHashOverride2(ele, parsedProp) { - if (parsedProp.value === "label") { - return -ele.poolIndex(); - } else { - return parsedProp.pfValue; } - }, "nodeSizeHashOverride"); - var nodeBody = [{ - name: "height", - type: t4.nodeSize, - triggersBounds: diff2.any, - hashOverride: nodeSizeHashOverride - }, { - name: "width", - type: t4.nodeSize, - triggersBounds: diff2.any, - hashOverride: nodeSizeHashOverride - }, { - name: "shape", - type: t4.nodeShape, - triggersBounds: diff2.any - }, { - name: "shape-polygon-points", - type: t4.polygonPointList, - triggersBounds: diff2.any - }, { - name: "corner-radius", - type: t4.cornerRadius - }, { - name: "background-color", - type: t4.color - }, { - name: "background-fill", - type: t4.fill - }, { - name: "background-opacity", - type: t4.zeroOneNumber - }, { - name: "background-blacken", - type: t4.nOneOneNumber - }, { - name: "background-gradient-stop-colors", - type: t4.colors - }, { - name: "background-gradient-stop-positions", - type: t4.percentages - }, { - name: "background-gradient-direction", - type: t4.gradientDirection - }, { - name: "padding", - type: t4.sizeMaybePercent, - triggersBounds: diff2.any - }, { - name: "padding-relative-to", - type: t4.paddingRelativeTo, - triggersBounds: diff2.any - }, { - name: "bounds-expansion", - type: t4.boundsExpansion, - triggersBounds: diff2.any - }]; - var nodeBorder = [{ - name: "border-color", - type: t4.color - }, { - name: "border-opacity", - type: t4.zeroOneNumber - }, { - name: "border-width", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "border-style", - type: t4.borderStyle - }, { - name: "border-cap", - type: t4.lineCap - }, { - name: "border-join", - type: t4.lineJoin - }, { - name: "border-dash-pattern", - type: t4.numbers - }, { - name: "border-dash-offset", - type: t4.number - }, { - name: "border-position", - type: t4.linePosition - }]; - var nodeOutline = [{ - name: "outline-color", - type: t4.color - }, { - name: "outline-opacity", - type: t4.zeroOneNumber - }, { - name: "outline-width", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "outline-style", - type: t4.borderStyle - }, { - name: "outline-offset", - type: t4.size, - triggersBounds: diff2.any - }]; - var backgroundImage = [{ - name: "background-image", - type: t4.urls - }, { - name: "background-image-crossorigin", - type: t4.bgCrossOrigin - }, { - name: "background-image-opacity", - type: t4.zeroOneNumbers - }, { - name: "background-image-containment", - type: t4.bgContainment - }, { - name: "background-image-smoothing", - type: t4.bools - }, { - name: "background-position-x", - type: t4.bgPos - }, { - name: "background-position-y", - type: t4.bgPos - }, { - name: "background-width-relative-to", - type: t4.bgRelativeTo - }, { - name: "background-height-relative-to", - type: t4.bgRelativeTo - }, { - name: "background-repeat", - type: t4.bgRepeat - }, { - name: "background-fit", - type: t4.bgFit - }, { - name: "background-clip", - type: t4.bgClip - }, { - name: "background-width", - type: t4.bgWH - }, { - name: "background-height", - type: t4.bgWH - }, { - name: "background-offset-x", - type: t4.bgPos - }, { - name: "background-offset-y", - type: t4.bgPos - }]; - var compound = [{ - name: "position", - type: t4.position, - triggersBounds: diff2.any - }, { - name: "compound-sizing-wrt-labels", - type: t4.compoundIncludeLabels, - triggersBounds: diff2.any - }, { - name: "min-width", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "min-width-bias-left", - type: t4.sizeMaybePercent, - triggersBounds: diff2.any - }, { - name: "min-width-bias-right", - type: t4.sizeMaybePercent, - triggersBounds: diff2.any - }, { - name: "min-height", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "min-height-bias-top", - type: t4.sizeMaybePercent, - triggersBounds: diff2.any - }, { - name: "min-height-bias-bottom", - type: t4.sizeMaybePercent, - triggersBounds: diff2.any - }]; - var edgeLine = [{ - name: "line-style", - type: t4.lineStyle - }, { - name: "line-color", - type: t4.color - }, { - name: "line-fill", - type: t4.fill - }, { - name: "line-cap", - type: t4.lineCap - }, { - name: "line-opacity", - type: t4.zeroOneNumber - }, { - name: "line-dash-pattern", - type: t4.numbers - }, { - name: "line-dash-offset", - type: t4.number - }, { - name: "line-outline-width", - type: t4.size - }, { - name: "line-outline-color", - type: t4.color - }, { - name: "line-gradient-stop-colors", - type: t4.colors - }, { - name: "line-gradient-stop-positions", - type: t4.percentages - }, { - name: "curve-style", - type: t4.curveStyle, - triggersBounds: diff2.any, - triggersBoundsOfParallelBeziers: true - }, { - name: "haystack-radius", - type: t4.zeroOneNumber, - triggersBounds: diff2.any - }, { - name: "source-endpoint", - type: t4.edgeEndpoint, - triggersBounds: diff2.any - }, { - name: "target-endpoint", - type: t4.edgeEndpoint, - triggersBounds: diff2.any - }, { - name: "control-point-step-size", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "control-point-distances", - type: t4.bidirectionalSizes, - triggersBounds: diff2.any - }, { - name: "control-point-weights", - type: t4.numbers, - triggersBounds: diff2.any - }, { - name: "segment-distances", - type: t4.bidirectionalSizes, - triggersBounds: diff2.any - }, { - name: "segment-weights", - type: t4.numbers, - triggersBounds: diff2.any - }, { - name: "segment-radii", - type: t4.numbers, - triggersBounds: diff2.any - }, { - name: "radius-type", - type: t4.radiusType, - triggersBounds: diff2.any - }, { - name: "taxi-turn", - type: t4.bidirectionalSizeMaybePercent, - triggersBounds: diff2.any - }, { - name: "taxi-turn-min-distance", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "taxi-direction", - type: t4.axisDirection, - triggersBounds: diff2.any - }, { - name: "taxi-radius", - type: t4.number, - triggersBounds: diff2.any - }, { - name: "edge-distances", - type: t4.edgeDistances, - triggersBounds: diff2.any - }, { - name: "arrow-scale", - type: t4.positiveNumber, - triggersBounds: diff2.any - }, { - name: "loop-direction", - type: t4.angle, - triggersBounds: diff2.any - }, { - name: "loop-sweep", - type: t4.angle, - triggersBounds: diff2.any - }, { - name: "source-distance-from-node", - type: t4.size, - triggersBounds: diff2.any - }, { - name: "target-distance-from-node", - type: t4.size, - triggersBounds: diff2.any - }]; - var ghost = [{ - name: "ghost", - type: t4.bool, - triggersBounds: diff2.any - }, { - name: "ghost-offset-x", - type: t4.bidirectionalSize, - triggersBounds: diff2.any - }, { - name: "ghost-offset-y", - type: t4.bidirectionalSize, - triggersBounds: diff2.any - }, { - name: "ghost-opacity", - type: t4.zeroOneNumber - }]; - var core4 = [{ - name: "selection-box-color", - type: t4.color - }, { - name: "selection-box-opacity", - type: t4.zeroOneNumber - }, { - name: "selection-box-border-color", - type: t4.color - }, { - name: "selection-box-border-width", - type: t4.size - }, { - name: "active-bg-color", - type: t4.color - }, { - name: "active-bg-opacity", - type: t4.zeroOneNumber - }, { - name: "active-bg-size", - type: t4.size - }, { - name: "outside-texture-bg-color", - type: t4.color - }, { - name: "outside-texture-bg-opacity", - type: t4.zeroOneNumber - }]; - var pie2 = []; - styfn$2.pieBackgroundN = 16; - pie2.push({ - name: "pie-size", - type: t4.sizeMaybePercent - }); - for (var i2 = 1; i2 <= styfn$2.pieBackgroundN; i2++) { - pie2.push({ - name: "pie-" + i2 + "-background-color", - type: t4.color - }); - pie2.push({ - name: "pie-" + i2 + "-background-size", - type: t4.percent - }); - pie2.push({ - name: "pie-" + i2 + "-background-opacity", - type: t4.zeroOneNumber - }); + let line2 = low - 1; + return Position.create(line2, offset - lineOffsets[line2]); } - var edgeArrow = []; - var arrowPrefixes = styfn$2.arrowPrefixes = ["source", "mid-source", "target", "mid-target"]; - [{ - name: "arrow-shape", - type: t4.arrowShape, - triggersBounds: diff2.any - }, { - name: "arrow-color", - type: t4.color - }, { - name: "arrow-fill", - type: t4.arrowFill - }, { - name: "arrow-width", - type: t4.arrowWidth - }].forEach(function(prop2) { - arrowPrefixes.forEach(function(prefix) { - var name = prefix + "-" + prop2.name; - var type3 = prop2.type, triggersBounds = prop2.triggersBounds; - edgeArrow.push({ - name, - type: type3, - triggersBounds - }); - }); - }, {}); - var props = styfn$2.properties = [].concat(behavior, transition2, visibility, overlay, underlay, ghost, commonLabel, labelDimensions, mainLabel, sourceLabel, targetLabel, nodeBody, nodeBorder, nodeOutline, backgroundImage, pie2, compound, edgeLine, edgeArrow, core4); - var propGroups = styfn$2.propertyGroups = { - // common to all eles - behavior, - transition: transition2, - visibility, - overlay, - underlay, - ghost, - // labels - commonLabel, - labelDimensions, - mainLabel, - sourceLabel, - targetLabel, - // node props - nodeBody, - nodeBorder, - nodeOutline, - backgroundImage, - pie: pie2, - compound, - // edge props - edgeLine, - edgeArrow, - core: core4 - }; - var propGroupNames = styfn$2.propertyGroupNames = {}; - var propGroupKeys = styfn$2.propertyGroupKeys = Object.keys(propGroups); - propGroupKeys.forEach(function(key) { - propGroupNames[key] = propGroups[key].map(function(prop2) { - return prop2.name; - }); - propGroups[key].forEach(function(prop2) { - return prop2.groupKey = key; - }); - }); - var aliases = styfn$2.aliases = [{ - name: "content", - pointsTo: "label" - }, { - name: "control-point-distance", - pointsTo: "control-point-distances" - }, { - name: "control-point-weight", - pointsTo: "control-point-weights" - }, { - name: "segment-distance", - pointsTo: "segment-distances" - }, { - name: "segment-weight", - pointsTo: "segment-weights" - }, { - name: "segment-radius", - pointsTo: "segment-radii" - }, { - name: "edge-text-rotation", - pointsTo: "text-rotation" - }, { - name: "padding-left", - pointsTo: "padding" - }, { - name: "padding-right", - pointsTo: "padding" - }, { - name: "padding-top", - pointsTo: "padding" - }, { - name: "padding-bottom", - pointsTo: "padding" - }]; - styfn$2.propertyNames = props.map(function(p3) { - return p3.name; - }); - for (var _i = 0; _i < props.length; _i++) { - var prop = props[_i]; - props[prop.name] = prop; + offsetAt(position5) { + let lineOffsets = this.getLineOffsets(); + if (position5.line >= lineOffsets.length) { + return this._content.length; + } else if (position5.line < 0) { + return 0; + } + let lineOffset = lineOffsets[position5.line]; + let nextLineOffset = position5.line + 1 < lineOffsets.length ? lineOffsets[position5.line + 1] : this._content.length; + return Math.max(Math.min(lineOffset + position5.character, nextLineOffset), lineOffset); } - for (var _i2 = 0; _i2 < aliases.length; _i2++) { - var alias = aliases[_i2]; - var pointsToProp = props[alias.pointsTo]; - var aliasProp = { - name: alias.name, - alias: true, - pointsTo: pointsToProp - }; - props.push(aliasProp); - props[alias.name] = aliasProp; + get lineCount() { + return this.getLineOffsets().length; } - })(); - styfn$2.getDefaultProperty = function(name) { - return this.getDefaultProperties()[name]; }; - styfn$2.getDefaultProperties = function() { - var _p = this._private; - if (_p.defaultProperties != null) { - return _p.defaultProperties; + (function(Is2) { + const toString6 = Object.prototype.toString; + function defined(value2) { + return typeof value2 !== "undefined"; } - var rawProps = extend4({ - // core props - "selection-box-color": "#ddd", - "selection-box-opacity": 0.65, - "selection-box-border-color": "#aaa", - "selection-box-border-width": 1, - "active-bg-color": "black", - "active-bg-opacity": 0.15, - "active-bg-size": 30, - "outside-texture-bg-color": "#000", - "outside-texture-bg-opacity": 0.125, - // common node/edge props - "events": "yes", - "text-events": "no", - "text-valign": "top", - "text-halign": "center", - "text-justification": "auto", - "line-height": 1, - "color": "#000", - "text-outline-color": "#000", - "text-outline-width": 0, - "text-outline-opacity": 1, - "text-opacity": 1, - "text-decoration": "none", - "text-transform": "none", - "text-wrap": "none", - "text-overflow-wrap": "whitespace", - "text-max-width": 9999, - "text-background-color": "#000", - "text-background-opacity": 0, - "text-background-shape": "rectangle", - "text-background-padding": 0, - "text-border-opacity": 0, - "text-border-width": 0, - "text-border-style": "solid", - "text-border-color": "#000", - "font-family": "Helvetica Neue, Helvetica, sans-serif", - "font-style": "normal", - "font-weight": "normal", - "font-size": 16, - "min-zoomed-font-size": 0, - "text-rotation": "none", - "source-text-rotation": "none", - "target-text-rotation": "none", - "visibility": "visible", - "display": "element", - "opacity": 1, - "z-compound-depth": "auto", - "z-index-compare": "auto", - "z-index": 0, - "label": "", - "text-margin-x": 0, - "text-margin-y": 0, - "source-label": "", - "source-text-offset": 0, - "source-text-margin-x": 0, - "source-text-margin-y": 0, - "target-label": "", - "target-text-offset": 0, - "target-text-margin-x": 0, - "target-text-margin-y": 0, - "overlay-opacity": 0, - "overlay-color": "#000", - "overlay-padding": 10, - "overlay-shape": "round-rectangle", - "overlay-corner-radius": "auto", - "underlay-opacity": 0, - "underlay-color": "#000", - "underlay-padding": 10, - "underlay-shape": "round-rectangle", - "underlay-corner-radius": "auto", - "transition-property": "none", - "transition-duration": 0, - "transition-delay": 0, - "transition-timing-function": "linear", - // node props - "background-blacken": 0, - "background-color": "#999", - "background-fill": "solid", - "background-opacity": 1, - "background-image": "none", - "background-image-crossorigin": "anonymous", - "background-image-opacity": 1, - "background-image-containment": "inside", - "background-image-smoothing": "yes", - "background-position-x": "50%", - "background-position-y": "50%", - "background-offset-x": 0, - "background-offset-y": 0, - "background-width-relative-to": "include-padding", - "background-height-relative-to": "include-padding", - "background-repeat": "no-repeat", - "background-fit": "none", - "background-clip": "node", - "background-width": "auto", - "background-height": "auto", - "border-color": "#000", - "border-opacity": 1, - "border-width": 0, - "border-style": "solid", - "border-dash-pattern": [4, 2], - "border-dash-offset": 0, - "border-cap": "butt", - "border-join": "miter", - "border-position": "center", - "outline-color": "#999", - "outline-opacity": 1, - "outline-width": 0, - "outline-offset": 0, - "outline-style": "solid", - "height": 30, - "width": 30, - "shape": "ellipse", - "shape-polygon-points": "-1, -1, 1, -1, 1, 1, -1, 1", - "corner-radius": "auto", - "bounds-expansion": 0, - // node gradient - "background-gradient-direction": "to-bottom", - "background-gradient-stop-colors": "#999", - "background-gradient-stop-positions": "0%", - // ghost props - "ghost": "no", - "ghost-offset-y": 0, - "ghost-offset-x": 0, - "ghost-opacity": 0, - // compound props - "padding": 0, - "padding-relative-to": "width", - "position": "origin", - "compound-sizing-wrt-labels": "include", - "min-width": 0, - "min-width-bias-left": 0, - "min-width-bias-right": 0, - "min-height": 0, - "min-height-bias-top": 0, - "min-height-bias-bottom": 0 - }, { - // node pie bg - "pie-size": "100%" - }, [{ - name: "pie-{{i}}-background-color", - value: "black" - }, { - name: "pie-{{i}}-background-size", - value: "0%" - }, { - name: "pie-{{i}}-background-opacity", - value: 1 - }].reduce(function(css, prop2) { - for (var i3 = 1; i3 <= styfn$2.pieBackgroundN; i3++) { - var name2 = prop2.name.replace("{{i}}", i3); - var val2 = prop2.value; - css[name2] = val2; - } - return css; - }, {}), { - // edge props - "line-style": "solid", - "line-color": "#999", - "line-fill": "solid", - "line-cap": "butt", - "line-opacity": 1, - "line-outline-width": 0, - "line-outline-color": "#000", - "line-gradient-stop-colors": "#999", - "line-gradient-stop-positions": "0%", - "control-point-step-size": 40, - "control-point-weights": 0.5, - "segment-weights": 0.5, - "segment-distances": 20, - "segment-radii": 15, - "radius-type": "arc-radius", - "taxi-turn": "50%", - "taxi-radius": 15, - "taxi-turn-min-distance": 10, - "taxi-direction": "auto", - "edge-distances": "intersection", - "curve-style": "haystack", - "haystack-radius": 0, - "arrow-scale": 1, - "loop-direction": "-45deg", - "loop-sweep": "-90deg", - "source-distance-from-node": 0, - "target-distance-from-node": 0, - "source-endpoint": "outside-to-node", - "target-endpoint": "outside-to-node", - "line-dash-pattern": [6, 3], - "line-dash-offset": 0 - }, [{ - name: "arrow-shape", - value: "none" - }, { - name: "arrow-color", - value: "#999" - }, { - name: "arrow-fill", - value: "filled" - }, { - name: "arrow-width", - value: 1 - }].reduce(function(css, prop2) { - styfn$2.arrowPrefixes.forEach(function(prefix) { - var name2 = prefix + "-" + prop2.name; - var val2 = prop2.value; - css[name2] = val2; - }); - return css; - }, {})); - var parsedProps = {}; - for (var i2 = 0; i2 < this.properties.length; i2++) { - var prop = this.properties[i2]; - if (prop.pointsTo) { - continue; - } - var name = prop.name; - var val = rawProps[name]; - var parsedProp = this.parse(name, val); - parsedProps[name] = parsedProp; + __name(defined, "defined"); + Is2.defined = defined; + function undefined2(value2) { + return typeof value2 === "undefined"; } - _p.defaultProperties = parsedProps; - return _p.defaultProperties; - }; - styfn$2.addDefaultStylesheet = function() { - this.selector(":parent").css({ - "shape": "rectangle", - "padding": 10, - "background-color": "#eee", - "border-color": "#ccc", - "border-width": 1 - }).selector("edge").css({ - "width": 3 - }).selector(":loop").css({ - "curve-style": "bezier" - }).selector("edge:compound").css({ - "curve-style": "bezier", - "source-endpoint": "outside-to-line", - "target-endpoint": "outside-to-line" - }).selector(":selected").css({ - "background-color": "#0169D9", - "line-color": "#0169D9", - "source-arrow-color": "#0169D9", - "target-arrow-color": "#0169D9", - "mid-source-arrow-color": "#0169D9", - "mid-target-arrow-color": "#0169D9" - }).selector(":parent:selected").css({ - "background-color": "#CCE1F9", - "border-color": "#aec8e5" - }).selector(":active").css({ - "overlay-color": "black", - "overlay-padding": 10, - "overlay-opacity": 0.25 - }); - this.defaultLength = this.length; - }; - styfn$1 = {}; - styfn$1.parse = function(name, value2, propIsBypass, propIsFlat) { - var self2 = this; - if (fn$6(value2)) { - return self2.parseImplWarn(name, value2, propIsBypass, propIsFlat); + __name(undefined2, "undefined"); + Is2.undefined = undefined2; + function boolean(value2) { + return value2 === true || value2 === false; } - var flatKey = propIsFlat === "mapping" || propIsFlat === true || propIsFlat === false || propIsFlat == null ? "dontcare" : propIsFlat; - var bypassKey = propIsBypass ? "t" : "f"; - var valueKey = "" + value2; - var argHash = hashStrings(name, valueKey, bypassKey, flatKey); - var propCache = self2.propCache = self2.propCache || []; - var ret; - if (!(ret = propCache[argHash])) { - ret = propCache[argHash] = self2.parseImplWarn(name, value2, propIsBypass, propIsFlat); + __name(boolean, "boolean"); + Is2.boolean = boolean; + function string3(value2) { + return toString6.call(value2) === "[object String]"; } - if (propIsBypass || propIsFlat === "mapping") { - ret = copy3(ret); - if (ret) { - ret.value = copy3(ret.value); - } + __name(string3, "string"); + Is2.string = string3; + function number7(value2) { + return toString6.call(value2) === "[object Number]"; } - return ret; - }; - styfn$1.parseImplWarn = function(name, value2, propIsBypass, propIsFlat) { - var prop = this.parseImpl(name, value2, propIsBypass, propIsFlat); - if (!prop && value2 != null) { - warn("The style property `".concat(name, ": ").concat(value2, "` is invalid")); + __name(number7, "number"); + Is2.number = number7; + function numberRange(value2, min9, max10) { + return toString6.call(value2) === "[object Number]" && min9 <= value2 && value2 <= max10; } - if (prop && (prop.name === "width" || prop.name === "height") && value2 === "label") { - warn("The style value of `label` is deprecated for `" + prop.name + "`"); + __name(numberRange, "numberRange"); + Is2.numberRange = numberRange; + function integer4(value2) { + return toString6.call(value2) === "[object Number]" && -2147483648 <= value2 && value2 <= 2147483647; } - return prop; - }; - styfn$1.parseImpl = function(name, value2, propIsBypass, propIsFlat) { - var self2 = this; - name = camel2dash(name); - var property2 = self2.properties[name]; - var passedValue = value2; - var types = self2.types; - if (!property2) { - return null; + __name(integer4, "integer"); + Is2.integer = integer4; + function uinteger2(value2) { + return toString6.call(value2) === "[object Number]" && 0 <= value2 && value2 <= 2147483647; } - if (value2 === void 0) { - return null; + __name(uinteger2, "uinteger"); + Is2.uinteger = uinteger2; + function func(value2) { + return toString6.call(value2) === "[object Function]"; } - if (property2.alias) { - property2 = property2.pointsTo; - name = property2.name; + __name(func, "func"); + Is2.func = func; + function objectLiteral(value2) { + return value2 !== null && typeof value2 === "object"; } - var valueIsString = string(value2); - if (valueIsString) { - value2 = value2.trim(); + __name(objectLiteral, "objectLiteral"); + Is2.objectLiteral = objectLiteral; + function typedArray(value2, check) { + return Array.isArray(value2) && value2.every(check); } - var type3 = property2.type; - if (!type3) { - return null; + __name(typedArray, "typedArray"); + Is2.typedArray = typedArray; + })(Is || (Is = {})); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/cst-node-builder.js + var CstNodeBuilder, AbstractCstNode, LeafCstNodeImpl, CompositeCstNodeImpl, CstNodeContainer, RootCstNodeImpl; + var init_cst_node_builder = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/cst-node-builder.js"() { + "use strict"; + init_main(); + init_cst_utils(); + CstNodeBuilder = class { + static { + __name(this, "CstNodeBuilder"); } - if (propIsBypass && (value2 === "" || value2 === null)) { - return { - name, - value: value2, - bypass: true, - deleteBypass: true - }; + constructor() { + this.nodeStack = []; } - if (fn$6(value2)) { - return { - name, - value: value2, - strValue: "fn", - mapped: types.fn, - bypass: propIsBypass - }; + get current() { + var _a; + return (_a = this.nodeStack[this.nodeStack.length - 1]) !== null && _a !== void 0 ? _a : this.rootNode; } - var data6, mapData; - if (!valueIsString || propIsFlat || value2.length < 7 || value2[1] !== "a") ; - else if (value2.length >= 7 && value2[0] === "d" && (data6 = new RegExp(types.data.regex).exec(value2))) { - if (propIsBypass) { - return false; - } - var mapped = types.data; - return { - name, - value: data6, - strValue: "" + value2, - mapped, - field: data6[1], - bypass: propIsBypass - }; - } else if (value2.length >= 10 && value2[0] === "m" && (mapData = new RegExp(types.mapData.regex).exec(value2))) { - if (propIsBypass) { - return false; - } - if (type3.multiple) { - return false; - } - var _mapped = types.mapData; - if (!(type3.color || type3.number)) { - return false; - } - var valueMin = this.parse(name, mapData[4]); - if (!valueMin || valueMin.mapped) { - return false; - } - var valueMax = this.parse(name, mapData[5]); - if (!valueMax || valueMax.mapped) { - return false; - } - if (valueMin.pfValue === valueMax.pfValue || valueMin.strValue === valueMax.strValue) { - warn("`" + name + ": " + value2 + "` is not a valid mapper because the output range is zero; converting to `" + name + ": " + valueMin.strValue + "`"); - return this.parse(name, valueMin.strValue); - } else if (type3.color) { - var c1 = valueMin.value; - var c22 = valueMax.value; - var same2 = c1[0] === c22[0] && c1[1] === c22[1] && c1[2] === c22[2] && // optional alpha - (c1[3] === c22[3] || (c1[3] == null || c1[3] === 1) && (c22[3] == null || c22[3] === 1)); - if (same2) { - return false; - } - } - return { - name, - value: mapData, - strValue: "" + value2, - mapped: _mapped, - field: mapData[1], - fieldMin: parseFloat(mapData[2]), - // min & max are numeric - fieldMax: parseFloat(mapData[3]), - valueMin: valueMin.value, - valueMax: valueMax.value, - bypass: propIsBypass - }; + buildRootNode(input) { + this.rootNode = new RootCstNodeImpl(input); + this.rootNode.root = this.rootNode; + this.nodeStack = [this.rootNode]; + return this.rootNode; } - if (type3.multiple && propIsFlat !== "multiple") { - var vals; - if (valueIsString) { - vals = value2.split(/\s+/); - } else if (array2(value2)) { - vals = value2; - } else { - vals = [value2]; - } - if (type3.evenMultiple && vals.length % 2 !== 0) { - return null; - } - var valArr = []; - var unitsArr = []; - var pfValArr = []; - var strVal = ""; - var hasEnum = false; - for (var i2 = 0; i2 < vals.length; i2++) { - var p3 = self2.parse(name, vals[i2], propIsBypass, "multiple"); - hasEnum = hasEnum || string(p3.value); - valArr.push(p3.value); - pfValArr.push(p3.pfValue != null ? p3.pfValue : p3.value); - unitsArr.push(p3.units); - strVal += (i2 > 0 ? " " : "") + p3.strValue; - } - if (type3.validate && !type3.validate(valArr, unitsArr)) { - return null; - } - if (type3.singleEnum && hasEnum) { - if (valArr.length === 1 && string(valArr[0])) { - return { - name, - value: valArr[0], - strValue: valArr[0], - bypass: propIsBypass - }; - } else { - return null; - } - } - return { - name, - value: valArr, - pfValue: pfValArr, - strValue: strVal, - bypass: propIsBypass, - units: unitsArr - }; + buildCompositeNode(feature) { + const compositeNode = new CompositeCstNodeImpl(); + compositeNode.grammarSource = feature; + compositeNode.root = this.rootNode; + this.current.content.push(compositeNode); + this.nodeStack.push(compositeNode); + return compositeNode; } - var checkEnums = /* @__PURE__ */ __name(function checkEnums2() { - for (var _i = 0; _i < type3.enums.length; _i++) { - var en = type3.enums[_i]; - if (en === value2) { - return { - name, - value: value2, - strValue: "" + value2, - bypass: propIsBypass - }; + buildLeafNode(token2, feature) { + const leafNode = new LeafCstNodeImpl(token2.startOffset, token2.image.length, tokenToRange(token2), token2.tokenType, !feature); + leafNode.grammarSource = feature; + leafNode.root = this.rootNode; + this.current.content.push(leafNode); + return leafNode; + } + removeNode(node2) { + const parent4 = node2.container; + if (parent4) { + const index = parent4.content.indexOf(node2); + if (index >= 0) { + parent4.content.splice(index, 1); } } - return null; - }, "checkEnums"); - if (type3.number) { - var units; - var implicitUnits = "px"; - if (type3.units) { - units = type3.units; + } + addHiddenNodes(tokens2) { + const nodes5 = []; + for (const token2 of tokens2) { + const leafNode = new LeafCstNodeImpl(token2.startOffset, token2.image.length, tokenToRange(token2), token2.tokenType, true); + leafNode.root = this.rootNode; + nodes5.push(leafNode); } - if (type3.implicitUnits) { - implicitUnits = type3.implicitUnits; + let current = this.current; + let added = false; + if (current.content.length > 0) { + current.content.push(...nodes5); + return; } - if (!type3.unitless) { - if (valueIsString) { - var unitsRegex = "px|em" + (type3.allowPercent ? "|\\%" : ""); - if (units) { - unitsRegex = units; - } - var match2 = value2.match("^(" + number6 + ")(" + unitsRegex + ")?$"); - if (match2) { - value2 = match2[1]; - units = match2[2] || implicitUnits; - } - } else if (!units || type3.implicitUnits) { - units = implicitUnits; + while (current.container) { + const index = current.container.content.indexOf(current); + if (index > 0) { + current.container.content.splice(index, 0, ...nodes5); + added = true; + break; } + current = current.container; } - value2 = parseFloat(value2); - if (isNaN(value2) && type3.enums === void 0) { - return null; - } - if (isNaN(value2) && type3.enums !== void 0) { - value2 = passedValue; - return checkEnums(); - } - if (type3.integer && !integer2(value2)) { - return null; - } - if (type3.min !== void 0 && (value2 < type3.min || type3.strictMin && value2 === type3.min) || type3.max !== void 0 && (value2 > type3.max || type3.strictMax && value2 === type3.max)) { - return null; - } - var ret = { - name, - value: value2, - strValue: "" + value2 + (units ? units : ""), - units, - bypass: propIsBypass - }; - if (type3.unitless || units !== "px" && units !== "em") { - ret.pfValue = value2; - } else { - ret.pfValue = units === "px" || !units ? value2 : this.getEmSizeInPixels() * value2; + if (!added) { + this.rootNode.content.unshift(...nodes5); } - if (units === "ms" || units === "s") { - ret.pfValue = units === "ms" ? value2 : 1e3 * value2; + } + construct(item) { + const current = this.current; + if (typeof item.$type === "string") { + this.current.astNode = item; } - if (units === "deg" || units === "rad") { - ret.pfValue = units === "rad" ? value2 : deg2rad(value2); + item.$cstNode = current; + const node2 = this.nodeStack.pop(); + if ((node2 === null || node2 === void 0 ? void 0 : node2.content.length) === 0) { + this.removeNode(node2); } - if (units === "%") { - ret.pfValue = value2 / 100; + } + }; + AbstractCstNode = class { + static { + __name(this, "AbstractCstNode"); + } + /** @deprecated use `container` instead. */ + get parent() { + return this.container; + } + /** @deprecated use `grammarSource` instead. */ + get feature() { + return this.grammarSource; + } + get hidden() { + return false; + } + get astNode() { + var _a, _b; + const node2 = typeof ((_a = this._astNode) === null || _a === void 0 ? void 0 : _a.$type) === "string" ? this._astNode : (_b = this.container) === null || _b === void 0 ? void 0 : _b.astNode; + if (!node2) { + throw new Error("This node has no associated AST element"); } - return ret; - } else if (type3.propList) { - var props = []; - var propsStr = "" + value2; - if (propsStr === "none") ; - else { - var propsSplit = propsStr.split(/\s*,\s*|\s+/); - for (var _i2 = 0; _i2 < propsSplit.length; _i2++) { - var propName = propsSplit[_i2].trim(); - if (self2.properties[propName]) { - props.push(propName); - } else { - warn("`" + propName + "` is not a valid property name"); - } - } - if (props.length === 0) { - return null; + return node2; + } + set astNode(value2) { + this._astNode = value2; + } + /** @deprecated use `astNode` instead. */ + get element() { + return this.astNode; + } + get text() { + return this.root.fullText.substring(this.offset, this.end); + } + }; + LeafCstNodeImpl = class extends AbstractCstNode { + static { + __name(this, "LeafCstNodeImpl"); + } + get offset() { + return this._offset; + } + get length() { + return this._length; + } + get end() { + return this._offset + this._length; + } + get hidden() { + return this._hidden; + } + get tokenType() { + return this._tokenType; + } + get range() { + return this._range; + } + constructor(offset, length2, range3, tokenType, hidden = false) { + super(); + this._hidden = hidden; + this._offset = offset; + this._tokenType = tokenType; + this._length = length2; + this._range = range3; + } + }; + CompositeCstNodeImpl = class extends AbstractCstNode { + static { + __name(this, "CompositeCstNodeImpl"); + } + constructor() { + super(...arguments); + this.content = new CstNodeContainer(this); + } + /** @deprecated use `content` instead. */ + get children() { + return this.content; + } + get offset() { + var _a, _b; + return (_b = (_a = this.firstNonHiddenNode) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0; + } + get length() { + return this.end - this.offset; + } + get end() { + var _a, _b; + return (_b = (_a = this.lastNonHiddenNode) === null || _a === void 0 ? void 0 : _a.end) !== null && _b !== void 0 ? _b : 0; + } + get range() { + const firstNode = this.firstNonHiddenNode; + const lastNode = this.lastNonHiddenNode; + if (firstNode && lastNode) { + if (this._rangeCache === void 0) { + const { range: firstRange } = firstNode; + const { range: lastRange } = lastNode; + this._rangeCache = { start: firstRange.start, end: lastRange.end.line < firstRange.start.line ? firstRange.start : lastRange.end }; } + return this._rangeCache; + } else { + return { start: Position.create(0, 0), end: Position.create(0, 0) }; } - return { - name, - value: props, - strValue: props.length === 0 ? "none" : props.join(" "), - bypass: propIsBypass - }; - } else if (type3.color) { - var tuple = color2tuple(value2); - if (!tuple) { - return null; - } - return { - name, - value: tuple, - pfValue: tuple, - strValue: "rgb(" + tuple[0] + "," + tuple[1] + "," + tuple[2] + ")", - // n.b. no spaces b/c of multiple support - bypass: propIsBypass - }; - } else if (type3.regex || type3.regexes) { - if (type3.enums) { - var enumProp = checkEnums(); - if (enumProp) { - return enumProp; + } + get firstNonHiddenNode() { + for (const child of this.content) { + if (!child.hidden) { + return child; } } - var regexes = type3.regexes ? type3.regexes : [type3.regex]; - for (var _i3 = 0; _i3 < regexes.length; _i3++) { - var regex2 = new RegExp(regexes[_i3]); - var m2 = regex2.exec(value2); - if (m2) { - return { - name, - value: type3.singleRegexMatchValue ? m2[1] : m2, - strValue: "" + value2, - bypass: propIsBypass - }; + return this.content[0]; + } + get lastNonHiddenNode() { + for (let i2 = this.content.length - 1; i2 >= 0; i2--) { + const child = this.content[i2]; + if (!child.hidden) { + return child; } } - return null; - } else if (type3.string) { - return { - name, - value: "" + value2, - strValue: "" + value2, - bypass: propIsBypass - }; - } else if (type3.enums) { - return checkEnums(); - } else { - return null; + return this.content[this.content.length - 1]; } }; - Style2 = /* @__PURE__ */ __name(function Style3(cy) { - if (!(this instanceof Style3)) { - return new Style3(cy); + CstNodeContainer = class _CstNodeContainer extends Array { + static { + __name(this, "CstNodeContainer"); } - if (!core2(cy)) { - error("A style must have a core reference"); - return; + constructor(parent4) { + super(); + this.parent = parent4; + Object.setPrototypeOf(this, _CstNodeContainer.prototype); } - this._private = { - cy, - coreStyle: {} - }; - this.length = 0; - this.resetToDefault(); - }, "Style"); - styfn = Style2.prototype; - styfn.instanceString = function() { - return "style"; - }; - styfn.clear = function() { - var _p = this._private; - var cy = _p.cy; - var eles = cy.elements(); - for (var i2 = 0; i2 < this.length; i2++) { - this[i2] = void 0; + push(...items) { + this.addParents(items); + return super.push(...items); } - this.length = 0; - _p.contextStyles = {}; - _p.propDiffs = {}; - this.cleanElements(eles, true); - eles.forEach(function(ele) { - var ele_p = ele[0]._private; - ele_p.styleDirty = true; - ele_p.appliedInitStyle = false; - }); - return this; - }; - styfn.resetToDefault = function() { - this.clear(); - this.addDefaultStylesheet(); - return this; - }; - styfn.core = function(propName) { - return this._private.coreStyle[propName] || this.getDefaultProperty(propName); - }; - styfn.selector = function(selectorStr) { - var selector = selectorStr === "core" ? null : new Selector(selectorStr); - var i2 = this.length++; - this[i2] = { - selector, - properties: [], - mappedProperties: [], - index: i2 - }; - return this; - }; - styfn.css = function() { - var self2 = this; - var args = arguments; - if (args.length === 1) { - var map5 = args[0]; - for (var i2 = 0; i2 < self2.properties.length; i2++) { - var prop = self2.properties[i2]; - var mapVal = map5[prop.name]; - if (mapVal === void 0) { - mapVal = map5[dash2camel(prop.name)]; - } - if (mapVal !== void 0) { - this.cssRule(prop.name, mapVal); - } - } - } else if (args.length === 2) { - this.cssRule(args[0], args[1]); + unshift(...items) { + this.addParents(items); + return super.unshift(...items); } - return this; - }; - styfn.style = styfn.css; - styfn.cssRule = function(name, value2) { - var property2 = this.parse(name, value2); - if (property2) { - var i2 = this.length - 1; - this[i2].properties.push(property2); - this[i2].properties[property2.name] = property2; - if (property2.name.match(/pie-(\d+)-background-size/) && property2.value) { - this._private.hasPie = true; - } - if (property2.mapped) { - this[i2].mappedProperties.push(property2); - } - var currentSelectorIsCore = !this[i2].selector; - if (currentSelectorIsCore) { - this._private.coreStyle[property2.name] = property2; + splice(start3, count2, ...items) { + this.addParents(items); + return super.splice(start3, count2, ...items); + } + addParents(items) { + for (const item of items) { + item.container = this.parent; } } - return this; }; - styfn.append = function(style3) { - if (stylesheet(style3)) { - style3.appendToStyle(this); - } else if (array2(style3)) { - this.appendFromJson(style3); - } else if (string(style3)) { - this.appendFromString(style3); + RootCstNodeImpl = class extends CompositeCstNodeImpl { + static { + __name(this, "RootCstNodeImpl"); + } + get text() { + return this._text.substring(this.offset, this.end); + } + get fullText() { + return this._text; + } + constructor(input) { + super(); + this._text = ""; + this._text = input !== null && input !== void 0 ? input : ""; } - return this; - }; - Style2.fromJson = function(cy, json3) { - var style3 = new Style2(cy); - style3.fromJson(json3); - return style3; }; - Style2.fromString = function(cy, string3) { - return new Style2(cy).fromString(string3); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/langium-parser.js + function isDataTypeNode(node2) { + return node2.$type === DatatypeSymbol; + } + var DatatypeSymbol, ruleSuffix, withRuleSuffix, AbstractLangiumParser, LangiumParser, AbstractParserErrorMessageProvider, LangiumParserErrorMessageProvider, LangiumCompletionParser, defaultConfig3, ChevrotainWrapper; + var init_langium_parser = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/langium-parser.js"() { + "use strict"; + init_api5(); + init_lib2(); + init_ast(); + init_grammar_utils(); + init_ast_utils(); + init_cst_node_builder(); + DatatypeSymbol = Symbol("Datatype"); + __name(isDataTypeNode, "isDataTypeNode"); + ruleSuffix = "\u200B"; + withRuleSuffix = /* @__PURE__ */ __name((name) => name.endsWith(ruleSuffix) ? name : name + ruleSuffix, "withRuleSuffix"); + AbstractLangiumParser = class { + static { + __name(this, "AbstractLangiumParser"); + } + constructor(services) { + this._unorderedGroups = /* @__PURE__ */ new Map(); + this.allRules = /* @__PURE__ */ new Map(); + this.lexer = services.parser.Lexer; + const tokens2 = this.lexer.definition; + const production = services.LanguageMetaData.mode === "production"; + this.wrapper = new ChevrotainWrapper(tokens2, Object.assign(Object.assign({}, services.parser.ParserConfig), { skipValidations: production, errorMessageProvider: services.parser.ParserErrorMessageProvider })); + } + alternatives(idx, choices) { + this.wrapper.wrapOr(idx, choices); + } + optional(idx, callback) { + this.wrapper.wrapOption(idx, callback); + } + many(idx, callback) { + this.wrapper.wrapMany(idx, callback); + } + atLeastOne(idx, callback) { + this.wrapper.wrapAtLeastOne(idx, callback); + } + getRule(name) { + return this.allRules.get(name); + } + isRecording() { + return this.wrapper.IS_RECORDING; + } + get unorderedGroups() { + return this._unorderedGroups; + } + getRuleStack() { + return this.wrapper.RULE_STACK; + } + finalize() { + this.wrapper.wrapSelfAnalysis(); + } }; - [styfn$8, styfn$7, styfn$6, styfn$5, styfn$4, styfn$3, styfn$2, styfn$1].forEach(function(props) { - extend4(styfn, props); - }); - Style2.types = styfn.types; - Style2.properties = styfn.properties; - Style2.propertyGroups = styfn.propertyGroups; - Style2.propertyGroupNames = styfn.propertyGroupNames; - Style2.propertyGroupKeys = styfn.propertyGroupKeys; - corefn$2 = { - style: /* @__PURE__ */ __name(function style2(newStyle) { - if (newStyle) { - var s2 = this.setStyle(newStyle); - s2.update(); + LangiumParser = class extends AbstractLangiumParser { + static { + __name(this, "LangiumParser"); + } + get current() { + return this.stack[this.stack.length - 1]; + } + constructor(services) { + super(services); + this.nodeBuilder = new CstNodeBuilder(); + this.stack = []; + this.assignmentMap = /* @__PURE__ */ new Map(); + this.linker = services.references.Linker; + this.converter = services.parser.ValueConverter; + this.astReflection = services.shared.AstReflection; + } + rule(rule, impl2) { + const type3 = this.computeRuleType(rule); + const ruleMethod = this.wrapper.DEFINE_RULE(withRuleSuffix(rule.name), this.startImplementation(type3, impl2).bind(this)); + this.allRules.set(rule.name, ruleMethod); + if (rule.entry) { + this.mainRule = ruleMethod; } - return this._private.style; - }, "style"), - setStyle: /* @__PURE__ */ __name(function setStyle(style3) { - var _p = this._private; - if (stylesheet(style3)) { - _p.style = style3.generateStyle(this); - } else if (array2(style3)) { - _p.style = Style2.fromJson(this, style3); - } else if (string(style3)) { - _p.style = Style2.fromString(this, style3); + return ruleMethod; + } + computeRuleType(rule) { + if (rule.fragment) { + return void 0; + } else if (isDataTypeRule(rule)) { + return DatatypeSymbol; } else { - _p.style = Style2(this); + const explicit = getExplicitRuleType(rule); + return explicit !== null && explicit !== void 0 ? explicit : rule.name; } - return _p.style; - }, "setStyle"), - // e.g. cy.data() changed => recalc ele mappers - updateStyle: /* @__PURE__ */ __name(function updateStyle2() { - this.mutableElements().updateStyle(); - }, "updateStyle") - }; - defaultSelectionType = "single"; - corefn$1 = { - autolock: /* @__PURE__ */ __name(function autolock(bool2) { - if (bool2 !== void 0) { - this._private.autolock = bool2 ? true : false; - } else { - return this._private.autolock; + } + parse(input, options2 = {}) { + this.nodeBuilder.buildRootNode(input); + const lexerResult = this.lexerResult = this.lexer.tokenize(input); + this.wrapper.input = lexerResult.tokens; + const ruleMethod = options2.rule ? this.allRules.get(options2.rule) : this.mainRule; + if (!ruleMethod) { + throw new Error(options2.rule ? `No rule found with name '${options2.rule}'` : "No main rule available."); } - return this; - }, "autolock"), - autoungrabify: /* @__PURE__ */ __name(function autoungrabify(bool2) { - if (bool2 !== void 0) { - this._private.autoungrabify = bool2 ? true : false; - } else { - return this._private.autoungrabify; + const result = ruleMethod.call(this.wrapper, {}); + this.nodeBuilder.addHiddenNodes(lexerResult.hidden); + this.unorderedGroups.clear(); + this.lexerResult = void 0; + return { + value: result, + lexerErrors: lexerResult.errors, + lexerReport: lexerResult.report, + parserErrors: this.wrapper.errors + }; + } + startImplementation($type, implementation) { + return (args) => { + const createNode = !this.isRecording() && $type !== void 0; + if (createNode) { + const node2 = { $type }; + this.stack.push(node2); + if ($type === DatatypeSymbol) { + node2.value = ""; + } + } + let result; + try { + result = implementation(args); + } catch (err) { + result = void 0; + } + if (result === void 0 && createNode) { + result = this.construct(); + } + return result; + }; + } + extractHiddenTokens(token2) { + const hiddenTokens = this.lexerResult.hidden; + if (!hiddenTokens.length) { + return []; } - return this; - }, "autoungrabify"), - autounselectify: /* @__PURE__ */ __name(function autounselectify(bool2) { - if (bool2 !== void 0) { - this._private.autounselectify = bool2 ? true : false; - } else { - return this._private.autounselectify; + const offset = token2.startOffset; + for (let i2 = 0; i2 < hiddenTokens.length; i2++) { + const token3 = hiddenTokens[i2]; + if (token3.startOffset > offset) { + return hiddenTokens.splice(0, i2); + } } - return this; - }, "autounselectify"), - selectionType: /* @__PURE__ */ __name(function selectionType(selType) { - var _p = this._private; - if (_p.selectionType == null) { - _p.selectionType = defaultSelectionType; + return hiddenTokens.splice(0, hiddenTokens.length); + } + consume(idx, tokenType, feature) { + const token2 = this.wrapper.wrapConsume(idx, tokenType); + if (!this.isRecording() && this.isValidToken(token2)) { + const hiddenTokens = this.extractHiddenTokens(token2); + this.nodeBuilder.addHiddenNodes(hiddenTokens); + const leafNode = this.nodeBuilder.buildLeafNode(token2, feature); + const { assignment, isCrossRef } = this.getAssignment(feature); + const current = this.current; + if (assignment) { + const convertedValue = isKeyword(feature) ? token2.image : this.converter.convert(token2.image, leafNode); + this.assign(assignment.operator, assignment.feature, convertedValue, leafNode, isCrossRef); + } else if (isDataTypeNode(current)) { + let text4 = token2.image; + if (!isKeyword(feature)) { + text4 = this.converter.convert(text4, leafNode).toString(); + } + current.value += text4; + } } - if (selType !== void 0) { - if (selType === "additive" || selType === "single") { - _p.selectionType = selType; + } + /** + * Most consumed parser tokens are valid. However there are two cases in which they are not valid: + * + * 1. They were inserted during error recovery by the parser. These tokens don't really exist and should not be further processed + * 2. They contain invalid token ranges. This might include the special EOF token, or other tokens produced by invalid token builders. + */ + isValidToken(token2) { + return !token2.isInsertedInRecovery && !isNaN(token2.startOffset) && typeof token2.endOffset === "number" && !isNaN(token2.endOffset); + } + subrule(idx, rule, fragment, feature, args) { + let cstNode; + if (!this.isRecording() && !fragment) { + cstNode = this.nodeBuilder.buildCompositeNode(feature); + } + const subruleResult = this.wrapper.wrapSubrule(idx, rule, args); + if (!this.isRecording() && cstNode && cstNode.length > 0) { + this.performSubruleAssignment(subruleResult, feature, cstNode); + } + } + performSubruleAssignment(result, feature, cstNode) { + const { assignment, isCrossRef } = this.getAssignment(feature); + if (assignment) { + this.assign(assignment.operator, assignment.feature, result, cstNode, isCrossRef); + } else if (!assignment) { + const current = this.current; + if (isDataTypeNode(current)) { + current.value += result.toString(); + } else if (typeof result === "object" && result) { + const object3 = this.assignWithoutOverride(result, current); + const newItem = object3; + this.stack.pop(); + this.stack.push(newItem); } - } else { - return _p.selectionType; } - return this; - }, "selectionType"), - panningEnabled: /* @__PURE__ */ __name(function panningEnabled(bool2) { - if (bool2 !== void 0) { - this._private.panningEnabled = bool2 ? true : false; - } else { - return this._private.panningEnabled; + } + action($type, action) { + if (!this.isRecording()) { + let last3 = this.current; + if (action.feature && action.operator) { + last3 = this.construct(); + this.nodeBuilder.removeNode(last3.$cstNode); + const node2 = this.nodeBuilder.buildCompositeNode(action); + node2.content.push(last3.$cstNode); + const newItem = { $type }; + this.stack.push(newItem); + this.assign(action.operator, action.feature, last3, last3.$cstNode, false); + } else { + last3.$type = $type; + } } - return this; - }, "panningEnabled"), - userPanningEnabled: /* @__PURE__ */ __name(function userPanningEnabled(bool2) { - if (bool2 !== void 0) { - this._private.userPanningEnabled = bool2 ? true : false; - } else { - return this._private.userPanningEnabled; + } + construct() { + if (this.isRecording()) { + return void 0; } - return this; - }, "userPanningEnabled"), - zoomingEnabled: /* @__PURE__ */ __name(function zoomingEnabled(bool2) { - if (bool2 !== void 0) { - this._private.zoomingEnabled = bool2 ? true : false; + const obj = this.current; + linkContentToContainer(obj); + this.nodeBuilder.construct(obj); + this.stack.pop(); + if (isDataTypeNode(obj)) { + return this.converter.convert(obj.value, obj.$cstNode); } else { - return this._private.zoomingEnabled; + assignMandatoryProperties(this.astReflection, obj); } - return this; - }, "zoomingEnabled"), - userZoomingEnabled: /* @__PURE__ */ __name(function userZoomingEnabled(bool2) { - if (bool2 !== void 0) { - this._private.userZoomingEnabled = bool2 ? true : false; - } else { - return this._private.userZoomingEnabled; + return obj; + } + getAssignment(feature) { + if (!this.assignmentMap.has(feature)) { + const assignment = getContainerOfType(feature, isAssignment); + this.assignmentMap.set(feature, { + assignment, + isCrossRef: assignment ? isCrossReference(assignment.terminal) : false + }); } - return this; - }, "userZoomingEnabled"), - boxSelectionEnabled: /* @__PURE__ */ __name(function boxSelectionEnabled(bool2) { - if (bool2 !== void 0) { - this._private.boxSelectionEnabled = bool2 ? true : false; + return this.assignmentMap.get(feature); + } + assign(operator, feature, value2, cstNode, isCrossRef) { + const obj = this.current; + let item; + if (isCrossRef && typeof value2 === "string") { + item = this.linker.buildReference(obj, feature, cstNode, value2); } else { - return this._private.boxSelectionEnabled; + item = value2; } - return this; - }, "boxSelectionEnabled"), - pan: /* @__PURE__ */ __name(function pan() { - var args = arguments; - var pan2 = this._private.pan; - var dim, val, dims, x5, y5; - switch (args.length) { - case 0: - return pan2; - case 1: - if (string(args[0])) { - dim = args[0]; - return pan2[dim]; - } else if (plainObject(args[0])) { - if (!this._private.panningEnabled) { - return this; - } - dims = args[0]; - x5 = dims.x; - y5 = dims.y; - if (number$1(x5)) { - pan2.x = x5; - } - if (number$1(y5)) { - pan2.y = y5; - } - this.emit("pan viewport"); - } - break; - case 2: - if (!this._private.panningEnabled) { - return this; - } - dim = args[0]; - val = args[1]; - if ((dim === "x" || dim === "y") && number$1(val)) { - pan2[dim] = val; - } - this.emit("pan viewport"); + switch (operator) { + case "=": { + obj[feature] = item; break; - } - this.notify("viewport"); - return this; - }, "pan"), - panBy: /* @__PURE__ */ __name(function panBy(arg0, arg1) { - var args = arguments; - var pan2 = this._private.pan; - var dim, val, dims, x5, y5; - if (!this._private.panningEnabled) { - return this; - } - switch (args.length) { - case 1: - if (plainObject(arg0)) { - dims = args[0]; - x5 = dims.x; - y5 = dims.y; - if (number$1(x5)) { - pan2.x += x5; - } - if (number$1(y5)) { - pan2.y += y5; - } - this.emit("pan viewport"); - } + } + case "?=": { + obj[feature] = true; break; - case 2: - dim = arg0; - val = arg1; - if ((dim === "x" || dim === "y") && number$1(val)) { - pan2[dim] += val; + } + case "+=": { + if (!Array.isArray(obj[feature])) { + obj[feature] = []; } - this.emit("pan viewport"); - break; - } - this.notify("viewport"); - return this; - }, "panBy"), - gc: /* @__PURE__ */ __name(function gc() { - this.notify("gc"); - }, "gc"), - fit: /* @__PURE__ */ __name(function fit(elements3, padding2) { - var viewportState = this.getFitViewport(elements3, padding2); - if (viewportState) { - var _p = this._private; - _p.zoom = viewportState.zoom; - _p.pan = viewportState.pan; - this.emit("pan zoom viewport"); - this.notify("viewport"); + obj[feature].push(item); + } } - return this; - }, "fit"), - getFitViewport: /* @__PURE__ */ __name(function getFitViewport(elements3, padding2) { - if (number$1(elements3) && padding2 === void 0) { - padding2 = elements3; - elements3 = void 0; + } + assignWithoutOverride(target, source) { + for (const [name, existingValue] of Object.entries(source)) { + const newValue = target[name]; + if (newValue === void 0) { + target[name] = existingValue; + } else if (Array.isArray(newValue) && Array.isArray(existingValue)) { + existingValue.push(...newValue); + target[name] = existingValue; + } } - if (!this._private.panningEnabled || !this._private.zoomingEnabled) { - return; + const targetCstNode = target.$cstNode; + if (targetCstNode) { + targetCstNode.astNode = void 0; + target.$cstNode = void 0; } - var bb; - if (string(elements3)) { - var sel = elements3; - elements3 = this.$(sel); - } else if (boundingBox(elements3)) { - var bbe = elements3; - bb = { - x1: bbe.x1, - y1: bbe.y1, - x2: bbe.x2, - y2: bbe.y2 - }; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - } else if (!elementOrCollection(elements3)) { - elements3 = this.mutableElements(); + return target; + } + get definitionErrors() { + return this.wrapper.definitionErrors; + } + }; + AbstractParserErrorMessageProvider = class { + static { + __name(this, "AbstractParserErrorMessageProvider"); + } + buildMismatchTokenMessage(options2) { + return defaultParserErrorProvider.buildMismatchTokenMessage(options2); + } + buildNotAllInputParsedMessage(options2) { + return defaultParserErrorProvider.buildNotAllInputParsedMessage(options2); + } + buildNoViableAltMessage(options2) { + return defaultParserErrorProvider.buildNoViableAltMessage(options2); + } + buildEarlyExitMessage(options2) { + return defaultParserErrorProvider.buildEarlyExitMessage(options2); + } + }; + LangiumParserErrorMessageProvider = class extends AbstractParserErrorMessageProvider { + static { + __name(this, "LangiumParserErrorMessageProvider"); + } + buildMismatchTokenMessage({ expected, actual }) { + const expectedMsg = expected.LABEL ? "`" + expected.LABEL + "`" : expected.name.endsWith(":KW") ? `keyword '${expected.name.substring(0, expected.name.length - 3)}'` : `token of type '${expected.name}'`; + return `Expecting ${expectedMsg} but found \`${actual.image}\`.`; + } + buildNotAllInputParsedMessage({ firstRedundant }) { + return `Expecting end of file but found \`${firstRedundant.image}\`.`; + } + }; + LangiumCompletionParser = class extends AbstractLangiumParser { + static { + __name(this, "LangiumCompletionParser"); + } + constructor() { + super(...arguments); + this.tokens = []; + this.elementStack = []; + this.lastElementStack = []; + this.nextTokenIndex = 0; + this.stackSize = 0; + } + action() { + } + construct() { + return void 0; + } + parse(input) { + this.resetState(); + const tokens2 = this.lexer.tokenize(input, { mode: "partial" }); + this.tokens = tokens2.tokens; + this.wrapper.input = [...this.tokens]; + this.mainRule.call(this.wrapper, {}); + this.unorderedGroups.clear(); + return { + tokens: this.tokens, + elementStack: [...this.lastElementStack], + tokenIndex: this.nextTokenIndex + }; + } + rule(rule, impl2) { + const ruleMethod = this.wrapper.DEFINE_RULE(withRuleSuffix(rule.name), this.startImplementation(impl2).bind(this)); + this.allRules.set(rule.name, ruleMethod); + if (rule.entry) { + this.mainRule = ruleMethod; } - if (elementOrCollection(elements3) && elements3.empty()) { - return; + return ruleMethod; + } + resetState() { + this.elementStack = []; + this.lastElementStack = []; + this.nextTokenIndex = 0; + this.stackSize = 0; + } + startImplementation(implementation) { + return (args) => { + const size4 = this.keepStackSize(); + try { + implementation(args); + } finally { + this.resetStackSize(size4); + } + }; + } + removeUnexpectedElements() { + this.elementStack.splice(this.stackSize); + } + keepStackSize() { + const size4 = this.elementStack.length; + this.stackSize = size4; + return size4; + } + resetStackSize(size4) { + this.removeUnexpectedElements(); + this.stackSize = size4; + } + consume(idx, tokenType, feature) { + this.wrapper.wrapConsume(idx, tokenType); + if (!this.isRecording()) { + this.lastElementStack = [...this.elementStack, feature]; + this.nextTokenIndex = this.currIdx + 1; } - bb = bb || elements3.boundingBox(); - var w3 = this.width(); - var h2 = this.height(); - var zoom2; - padding2 = number$1(padding2) ? padding2 : 0; - if (!isNaN(w3) && !isNaN(h2) && w3 > 0 && h2 > 0 && !isNaN(bb.w) && !isNaN(bb.h) && bb.w > 0 && bb.h > 0) { - zoom2 = Math.min((w3 - 2 * padding2) / bb.w, (h2 - 2 * padding2) / bb.h); - zoom2 = zoom2 > this._private.maxZoom ? this._private.maxZoom : zoom2; - zoom2 = zoom2 < this._private.minZoom ? this._private.minZoom : zoom2; - var pan2 = { - // now pan to middle - x: (w3 - zoom2 * (bb.x1 + bb.x2)) / 2, - y: (h2 - zoom2 * (bb.y1 + bb.y2)) / 2 - }; - return { - zoom: zoom2, - pan: pan2 - }; + } + subrule(idx, rule, fragment, feature, args) { + this.before(feature); + this.wrapper.wrapSubrule(idx, rule, args); + this.after(feature); + } + before(element3) { + if (!this.isRecording()) { + this.elementStack.push(element3); } - return; - }, "getFitViewport"), - zoomRange: /* @__PURE__ */ __name(function zoomRange(min9, max10) { - var _p = this._private; - if (max10 == null) { - var opts = min9; - min9 = opts.min; - max10 = opts.max; + } + after(element3) { + if (!this.isRecording()) { + const index = this.elementStack.lastIndexOf(element3); + if (index >= 0) { + this.elementStack.splice(index); + } } - if (number$1(min9) && number$1(max10) && min9 <= max10) { - _p.minZoom = min9; - _p.maxZoom = max10; - } else if (number$1(min9) && max10 === void 0 && min9 <= _p.maxZoom) { - _p.minZoom = min9; - } else if (number$1(max10) && min9 === void 0 && max10 >= _p.minZoom) { - _p.maxZoom = max10; + } + get currIdx() { + return this.wrapper.currIdx; + } + }; + defaultConfig3 = { + recoveryEnabled: true, + nodeLocationTracking: "full", + skipValidations: true, + errorMessageProvider: new LangiumParserErrorMessageProvider() + }; + ChevrotainWrapper = class extends EmbeddedActionsParser { + static { + __name(this, "ChevrotainWrapper"); + } + constructor(tokens2, config5) { + const useDefaultLookahead = config5 && "maxLookahead" in config5; + super(tokens2, Object.assign(Object.assign(Object.assign({}, defaultConfig3), { lookaheadStrategy: useDefaultLookahead ? new LLkLookaheadStrategy({ maxLookahead: config5.maxLookahead }) : new LLStarLookaheadStrategy({ + // If validations are skipped, don't log the lookahead warnings + logging: config5.skipValidations ? () => { + } : void 0 + }) }), config5)); + } + get IS_RECORDING() { + return this.RECORDING_PHASE; + } + DEFINE_RULE(name, impl2) { + return this.RULE(name, impl2); + } + wrapSelfAnalysis() { + this.performSelfAnalysis(); + } + wrapConsume(idx, tokenType) { + return this.consume(idx, tokenType); + } + wrapSubrule(idx, rule, args) { + return this.subrule(idx, rule, { + ARGS: [args] + }); + } + wrapOr(idx, choices) { + this.or(idx, choices); + } + wrapOption(idx, callback) { + this.option(idx, callback); + } + wrapMany(idx, callback) { + this.many(idx, callback); + } + wrapAtLeastOne(idx, callback) { + this.atLeastOne(idx, callback); + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/parser-builder-base.js + function createParser(grammar, parser24, tokens2) { + const parserContext = { + parser: parser24, + tokens: tokens2, + ruleNames: /* @__PURE__ */ new Map() + }; + buildRules(parserContext, grammar); + return parser24; + } + function buildRules(parserContext, grammar) { + const reachable = getAllReachableRules(grammar, false); + const parserRules = stream(grammar.rules).filter(isParserRule).filter((rule) => reachable.has(rule)); + for (const rule of parserRules) { + const ctx = Object.assign(Object.assign({}, parserContext), { consume: 1, optional: 1, subrule: 1, many: 1, or: 1 }); + parserContext.parser.rule(rule, buildElement(ctx, rule.definition)); + } + } + function buildElement(ctx, element3, ignoreGuard = false) { + let method; + if (isKeyword(element3)) { + method = buildKeyword(ctx, element3); + } else if (isAction(element3)) { + method = buildAction(ctx, element3); + } else if (isAssignment(element3)) { + method = buildElement(ctx, element3.terminal); + } else if (isCrossReference(element3)) { + method = buildCrossReference(ctx, element3); + } else if (isRuleCall(element3)) { + method = buildRuleCall(ctx, element3); + } else if (isAlternatives(element3)) { + method = buildAlternatives(ctx, element3); + } else if (isUnorderedGroup(element3)) { + method = buildUnorderedGroup(ctx, element3); + } else if (isGroup(element3)) { + method = buildGroup4(ctx, element3); + } else if (isEndOfFile(element3)) { + const idx = ctx.consume++; + method = /* @__PURE__ */ __name(() => ctx.parser.consume(idx, EOF, element3), "method"); + } else { + throw new ErrorWithLocation(element3.$cstNode, `Unexpected element type: ${element3.$type}`); + } + return wrap(ctx, ignoreGuard ? void 0 : getGuardCondition(element3), method, element3.cardinality); + } + function buildAction(ctx, action) { + const actionType = getTypeName(action); + return () => ctx.parser.action(actionType, action); + } + function buildRuleCall(ctx, ruleCall) { + const rule = ruleCall.rule.ref; + if (isParserRule(rule)) { + const idx = ctx.subrule++; + const fragment = rule.fragment; + const predicate = ruleCall.arguments.length > 0 ? buildRuleCallPredicate(rule, ruleCall.arguments) : () => ({}); + return (args) => ctx.parser.subrule(idx, getRule(ctx, rule), fragment, ruleCall, predicate(args)); + } else if (isTerminalRule(rule)) { + const idx = ctx.consume++; + const method = getToken(ctx, rule.name); + return () => ctx.parser.consume(idx, method, ruleCall); + } else if (!rule) { + throw new ErrorWithLocation(ruleCall.$cstNode, `Undefined rule: ${ruleCall.rule.$refText}`); + } else { + assertUnreachable(rule); + } + } + function buildRuleCallPredicate(rule, namedArgs) { + const predicates = namedArgs.map((e3) => buildPredicate(e3.value)); + return (args) => { + const ruleArgs = {}; + for (let i2 = 0; i2 < predicates.length; i2++) { + const ruleTarget = rule.parameters[i2]; + const predicate = predicates[i2]; + ruleArgs[ruleTarget.name] = predicate(args); + } + return ruleArgs; + }; + } + function buildPredicate(condition) { + if (isDisjunction(condition)) { + const left3 = buildPredicate(condition.left); + const right3 = buildPredicate(condition.right); + return (args) => left3(args) || right3(args); + } else if (isConjunction(condition)) { + const left3 = buildPredicate(condition.left); + const right3 = buildPredicate(condition.right); + return (args) => left3(args) && right3(args); + } else if (isNegation(condition)) { + const value2 = buildPredicate(condition.value); + return (args) => !value2(args); + } else if (isParameterReference(condition)) { + const name = condition.parameter.ref.name; + return (args) => args !== void 0 && args[name] === true; + } else if (isBooleanLiteral(condition)) { + const value2 = Boolean(condition.true); + return () => value2; + } + assertUnreachable(condition); + } + function buildAlternatives(ctx, alternatives) { + if (alternatives.elements.length === 1) { + return buildElement(ctx, alternatives.elements[0]); + } else { + const methods = []; + for (const element3 of alternatives.elements) { + const predicatedMethod = { + // Since we handle the guard condition in the alternative already + // We can ignore the group guard condition inside + ALT: buildElement(ctx, element3, true) + }; + const guard = getGuardCondition(element3); + if (guard) { + predicatedMethod.GATE = buildPredicate(guard); + } + methods.push(predicatedMethod); + } + const idx = ctx.or++; + return (args) => ctx.parser.alternatives(idx, methods.map((method) => { + const alt = { + ALT: /* @__PURE__ */ __name(() => method.ALT(args), "ALT") + }; + const gate = method.GATE; + if (gate) { + alt.GATE = () => gate(args); + } + return alt; + })); + } + } + function buildUnorderedGroup(ctx, group2) { + if (group2.elements.length === 1) { + return buildElement(ctx, group2.elements[0]); + } + const methods = []; + for (const element3 of group2.elements) { + const predicatedMethod = { + // Since we handle the guard condition in the alternative already + // We can ignore the group guard condition inside + ALT: buildElement(ctx, element3, true) + }; + const guard = getGuardCondition(element3); + if (guard) { + predicatedMethod.GATE = buildPredicate(guard); + } + methods.push(predicatedMethod); + } + const orIdx = ctx.or++; + const idFunc = /* @__PURE__ */ __name((groupIdx, lParser) => { + const stackId = lParser.getRuleStack().join("-"); + return `uGroup_${groupIdx}_${stackId}`; + }, "idFunc"); + const alternatives = /* @__PURE__ */ __name((args) => ctx.parser.alternatives(orIdx, methods.map((method, idx) => { + const alt = { ALT: /* @__PURE__ */ __name(() => true, "ALT") }; + const parser24 = ctx.parser; + alt.ALT = () => { + method.ALT(args); + if (!parser24.isRecording()) { + const key = idFunc(orIdx, parser24); + if (!parser24.unorderedGroups.get(key)) { + parser24.unorderedGroups.set(key, []); } - return this; - }, "zoomRange"), - minZoom: /* @__PURE__ */ __name(function minZoom(zoom2) { - if (zoom2 === void 0) { - return this._private.minZoom; - } else { - return this.zoomRange({ - min: zoom2 - }); + const groupState = parser24.unorderedGroups.get(key); + if (typeof (groupState === null || groupState === void 0 ? void 0 : groupState[idx]) === "undefined") { + groupState[idx] = true; } - }, "minZoom"), - maxZoom: /* @__PURE__ */ __name(function maxZoom(zoom2) { - if (zoom2 === void 0) { - return this._private.maxZoom; - } else { - return this.zoomRange({ - max: zoom2 - }); + } + }; + const gate = method.GATE; + if (gate) { + alt.GATE = () => gate(args); + } else { + alt.GATE = () => { + const trackedAlternatives = parser24.unorderedGroups.get(idFunc(orIdx, parser24)); + const allow = !(trackedAlternatives === null || trackedAlternatives === void 0 ? void 0 : trackedAlternatives[idx]); + return allow; + }; + } + return alt; + })), "alternatives"); + const wrapped = wrap(ctx, getGuardCondition(group2), alternatives, "*"); + return (args) => { + wrapped(args); + if (!ctx.parser.isRecording()) { + ctx.parser.unorderedGroups.delete(idFunc(orIdx, ctx.parser)); + } + }; + } + function buildGroup4(ctx, group2) { + const methods = group2.elements.map((e3) => buildElement(ctx, e3)); + return (args) => methods.forEach((method) => method(args)); + } + function getGuardCondition(element3) { + if (isGroup(element3)) { + return element3.guardCondition; + } + return void 0; + } + function buildCrossReference(ctx, crossRef, terminal = crossRef.terminal) { + if (!terminal) { + if (!crossRef.type.ref) { + throw new Error("Could not resolve reference to type: " + crossRef.type.$refText); + } + const assignment = findNameAssignment(crossRef.type.ref); + const assignTerminal = assignment === null || assignment === void 0 ? void 0 : assignment.terminal; + if (!assignTerminal) { + throw new Error("Could not find name assignment for type: " + getTypeName(crossRef.type.ref)); + } + return buildCrossReference(ctx, crossRef, assignTerminal); + } else if (isRuleCall(terminal) && isParserRule(terminal.rule.ref)) { + const rule = terminal.rule.ref; + const idx = ctx.subrule++; + return (args) => ctx.parser.subrule(idx, getRule(ctx, rule), false, crossRef, args); + } else if (isRuleCall(terminal) && isTerminalRule(terminal.rule.ref)) { + const idx = ctx.consume++; + const terminalRule = getToken(ctx, terminal.rule.ref.name); + return () => ctx.parser.consume(idx, terminalRule, crossRef); + } else if (isKeyword(terminal)) { + const idx = ctx.consume++; + const keyword = getToken(ctx, terminal.value); + return () => ctx.parser.consume(idx, keyword, crossRef); + } else { + throw new Error("Could not build cross reference parser"); + } + } + function buildKeyword(ctx, keyword) { + const idx = ctx.consume++; + const token2 = ctx.tokens[keyword.value]; + if (!token2) { + throw new Error("Could not find token for keyword: " + keyword.value); + } + return () => ctx.parser.consume(idx, token2, keyword); + } + function wrap(ctx, guard, method, cardinality) { + const gate = guard && buildPredicate(guard); + if (!cardinality) { + if (gate) { + const idx = ctx.or++; + return (args) => ctx.parser.alternatives(idx, [ + { + ALT: /* @__PURE__ */ __name(() => method(args), "ALT"), + GATE: /* @__PURE__ */ __name(() => gate(args), "GATE") + }, + { + ALT: EMPTY_ALT(), + GATE: /* @__PURE__ */ __name(() => !gate(args), "GATE") } - }, "maxZoom"), - getZoomedViewport: /* @__PURE__ */ __name(function getZoomedViewport(params) { - var _p = this._private; - var currentPan = _p.pan; - var currentZoom = _p.zoom; - var pos; - var zoom2; - var bail = false; - if (!_p.zoomingEnabled) { - bail = true; + ]); + } else { + return method; + } + } + if (cardinality === "*") { + const idx = ctx.many++; + return (args) => ctx.parser.many(idx, { + DEF: /* @__PURE__ */ __name(() => method(args), "DEF"), + GATE: gate ? () => gate(args) : void 0 + }); + } else if (cardinality === "+") { + const idx = ctx.many++; + if (gate) { + const orIdx = ctx.or++; + return (args) => ctx.parser.alternatives(orIdx, [ + { + ALT: /* @__PURE__ */ __name(() => ctx.parser.atLeastOne(idx, { + DEF: /* @__PURE__ */ __name(() => method(args), "DEF") + }), "ALT"), + GATE: /* @__PURE__ */ __name(() => gate(args), "GATE") + }, + { + ALT: EMPTY_ALT(), + GATE: /* @__PURE__ */ __name(() => !gate(args), "GATE") } - if (number$1(params)) { - zoom2 = params; - } else if (plainObject(params)) { - zoom2 = params.level; - if (params.position != null) { - pos = modelToRenderedPosition$1(params.position, currentZoom, currentPan); - } else if (params.renderedPosition != null) { - pos = params.renderedPosition; - } - if (pos != null && !_p.panningEnabled) { - bail = true; + ]); + } else { + return (args) => ctx.parser.atLeastOne(idx, { + DEF: /* @__PURE__ */ __name(() => method(args), "DEF") + }); + } + } else if (cardinality === "?") { + const idx = ctx.optional++; + return (args) => ctx.parser.optional(idx, { + DEF: /* @__PURE__ */ __name(() => method(args), "DEF"), + GATE: gate ? () => gate(args) : void 0 + }); + } else { + assertUnreachable(cardinality); + } + } + function getRule(ctx, element3) { + const name = getRuleName(ctx, element3); + const rule = ctx.parser.getRule(name); + if (!rule) + throw new Error(`Rule "${name}" not found."`); + return rule; + } + function getRuleName(ctx, element3) { + if (isParserRule(element3)) { + return element3.name; + } else if (ctx.ruleNames.has(element3)) { + return ctx.ruleNames.get(element3); + } else { + let item = element3; + let parent4 = item.$container; + let ruleName = element3.$type; + while (!isParserRule(parent4)) { + if (isGroup(parent4) || isAlternatives(parent4) || isUnorderedGroup(parent4)) { + const index = parent4.elements.indexOf(item); + ruleName = index.toString() + ":" + ruleName; + } + item = parent4; + parent4 = parent4.$container; + } + const rule = parent4; + ruleName = rule.name + ":" + ruleName; + ctx.ruleNames.set(element3, ruleName); + return ruleName; + } + } + function getToken(ctx, name) { + const token2 = ctx.tokens[name]; + if (!token2) + throw new Error(`Token "${name}" not found."`); + return token2; + } + var init_parser_builder_base = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/parser-builder-base.js"() { + "use strict"; + init_api5(); + init_ast(); + init_errors2(); + init_stream(); + init_grammar_utils(); + __name(createParser, "createParser"); + __name(buildRules, "buildRules"); + __name(buildElement, "buildElement"); + __name(buildAction, "buildAction"); + __name(buildRuleCall, "buildRuleCall"); + __name(buildRuleCallPredicate, "buildRuleCallPredicate"); + __name(buildPredicate, "buildPredicate"); + __name(buildAlternatives, "buildAlternatives"); + __name(buildUnorderedGroup, "buildUnorderedGroup"); + __name(buildGroup4, "buildGroup"); + __name(getGuardCondition, "getGuardCondition"); + __name(buildCrossReference, "buildCrossReference"); + __name(buildKeyword, "buildKeyword"); + __name(wrap, "wrap"); + __name(getRule, "getRule"); + __name(getRuleName, "getRuleName"); + __name(getToken, "getToken"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/completion-parser-builder.js + function createCompletionParser(services) { + const grammar = services.Grammar; + const lexer = services.parser.Lexer; + const parser24 = new LangiumCompletionParser(services); + createParser(grammar, parser24, lexer.definition); + parser24.finalize(); + return parser24; + } + var init_completion_parser_builder = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/completion-parser-builder.js"() { + "use strict"; + init_langium_parser(); + init_parser_builder_base(); + __name(createCompletionParser, "createCompletionParser"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/langium-parser-builder.js + function createLangiumParser(services) { + const parser24 = prepareLangiumParser(services); + parser24.finalize(); + return parser24; + } + function prepareLangiumParser(services) { + const grammar = services.Grammar; + const lexer = services.parser.Lexer; + const parser24 = new LangiumParser(services); + return createParser(grammar, parser24, lexer.definition); + } + var init_langium_parser_builder = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/langium-parser-builder.js"() { + "use strict"; + init_langium_parser(); + init_parser_builder_base(); + __name(createLangiumParser, "createLangiumParser"); + __name(prepareLangiumParser, "prepareLangiumParser"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/token-builder.js + var DefaultTokenBuilder; + var init_token_builder = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/token-builder.js"() { + "use strict"; + init_api5(); + init_ast(); + init_ast_utils(); + init_grammar_utils(); + init_regexp_utils(); + init_stream(); + DefaultTokenBuilder = class { + static { + __name(this, "DefaultTokenBuilder"); + } + constructor() { + this.diagnostics = []; + } + buildTokens(grammar, options2) { + const reachableRules = stream(getAllReachableRules(grammar, false)); + const terminalTokens = this.buildTerminalTokens(reachableRules); + const tokens2 = this.buildKeywordTokens(reachableRules, terminalTokens, options2); + terminalTokens.forEach((terminalToken) => { + const pattern = terminalToken.PATTERN; + if (typeof pattern === "object" && pattern && "test" in pattern && isWhitespace2(pattern)) { + tokens2.unshift(terminalToken); + } else { + tokens2.push(terminalToken); } + }); + return tokens2; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + flushLexingReport(text4) { + return { diagnostics: this.popDiagnostics() }; + } + popDiagnostics() { + const diagnostics = [...this.diagnostics]; + this.diagnostics = []; + return diagnostics; + } + buildTerminalTokens(rules) { + return rules.filter(isTerminalRule).filter((e3) => !e3.fragment).map((terminal) => this.buildTerminalToken(terminal)).toArray(); + } + buildTerminalToken(terminal) { + const regex2 = terminalRegex(terminal); + const pattern = this.requiresCustomPattern(regex2) ? this.regexPatternFunction(regex2) : regex2; + const tokenType = { + name: terminal.name, + PATTERN: pattern + }; + if (typeof pattern === "function") { + tokenType.LINE_BREAKS = true; } - zoom2 = zoom2 > _p.maxZoom ? _p.maxZoom : zoom2; - zoom2 = zoom2 < _p.minZoom ? _p.minZoom : zoom2; - if (bail || !number$1(zoom2) || zoom2 === currentZoom || pos != null && (!number$1(pos.x) || !number$1(pos.y))) { - return null; + if (terminal.hidden) { + tokenType.GROUP = isWhitespace2(regex2) ? Lexer2.SKIPPED : "hidden"; } - if (pos != null) { - var pan1 = currentPan; - var zoom1 = currentZoom; - var zoom22 = zoom2; - var pan2 = { - x: -zoom22 / zoom1 * (pos.x - pan1.x) + pos.x, - y: -zoom22 / zoom1 * (pos.y - pan1.y) + pos.y - }; - return { - zoomed: true, - panned: true, - zoom: zoom22, - pan: pan2 - }; + return tokenType; + } + requiresCustomPattern(regex2) { + if (regex2.flags.includes("u") || regex2.flags.includes("s")) { + return true; + } else if (regex2.source.includes("?<=") || regex2.source.includes("? { + stickyRegex.lastIndex = offset; + const execResult = stickyRegex.exec(text4); + return execResult; + }; + } + buildKeywordTokens(rules, terminalTokens, options2) { + return rules.filter(isParserRule).flatMap((rule) => streamAllContents(rule).filter(isKeyword)).distinct((e3) => e3.value).toArray().sort((a2, b3) => b3.value.length - a2.value.length).map((keyword) => this.buildKeywordToken(keyword, terminalTokens, Boolean(options2 === null || options2 === void 0 ? void 0 : options2.caseInsensitive))); + } + buildKeywordToken(keyword, terminalTokens, caseInsensitive) { + const keywordPattern = this.buildKeywordPattern(keyword, caseInsensitive); + const tokenType = { + name: keyword.value, + PATTERN: keywordPattern, + LONGER_ALT: this.findLongerAlt(keyword, terminalTokens) + }; + if (typeof keywordPattern === "function") { + tokenType.LINE_BREAKS = true; } - }, "zoom"), - viewport: /* @__PURE__ */ __name(function viewport(opts) { - var _p = this._private; - var zoomDefd = true; - var panDefd = true; - var events = []; - var zoomFailed = false; - var panFailed = false; - if (!opts) { - return this; + return tokenType; + } + buildKeywordPattern(keyword, caseInsensitive) { + return caseInsensitive ? new RegExp(getCaseInsensitivePattern(keyword.value)) : keyword.value; + } + findLongerAlt(keyword, terminalTokens) { + return terminalTokens.reduce((longerAlts, token2) => { + const pattern = token2 === null || token2 === void 0 ? void 0 : token2.PATTERN; + if ((pattern === null || pattern === void 0 ? void 0 : pattern.source) && partialMatches("^" + pattern.source + "$", keyword.value)) { + longerAlts.push(token2); + } + return longerAlts; + }, []); + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/value-converter.js + var DefaultValueConverter, ValueConverter; + var init_value_converter = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/value-converter.js"() { + "use strict"; + init_ast(); + init_grammar_utils(); + DefaultValueConverter = class { + static { + __name(this, "DefaultValueConverter"); + } + convert(input, cstNode) { + let feature = cstNode.grammarSource; + if (isCrossReference(feature)) { + feature = getCrossReferenceTerminal(feature); } - if (!number$1(opts.zoom)) { - zoomDefd = false; + if (isRuleCall(feature)) { + const rule = feature.rule.ref; + if (!rule) { + throw new Error("This cst node was not parsed by a rule."); + } + return this.runConverter(rule, input, cstNode); } - if (!plainObject(opts.pan)) { - panDefd = false; + return input; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + runConverter(rule, input, cstNode) { + var _a; + switch (rule.name.toUpperCase()) { + case "INT": + return ValueConverter.convertInt(input); + case "STRING": + return ValueConverter.convertString(input); + case "ID": + return ValueConverter.convertID(input); } - if (!zoomDefd && !panDefd) { - return this; + switch ((_a = getRuleType(rule)) === null || _a === void 0 ? void 0 : _a.toLowerCase()) { + case "number": + return ValueConverter.convertNumber(input); + case "boolean": + return ValueConverter.convertBoolean(input); + case "bigint": + return ValueConverter.convertBigint(input); + case "date": + return ValueConverter.convertDate(input); + default: + return input; } - if (zoomDefd) { - var z2 = opts.zoom; - if (z2 < _p.minZoom || z2 > _p.maxZoom || !_p.zoomingEnabled) { - zoomFailed = true; + } + }; + (function(ValueConverter2) { + function convertString(input) { + let result = ""; + for (let i2 = 1; i2 < input.length - 1; i2++) { + const c3 = input.charAt(i2); + if (c3 === "\\") { + const c1 = input.charAt(++i2); + result += convertEscapeCharacter(c1); } else { - _p.zoom = z2; - events.push("zoom"); + result += c3; } } - if (panDefd && (!zoomFailed || !opts.cancelOnFailedZoom) && _p.panningEnabled) { - var p3 = opts.pan; - if (number$1(p3.x)) { - _p.pan.x = p3.x; - panFailed = false; - } - if (number$1(p3.y)) { - _p.pan.y = p3.y; - panFailed = false; - } - if (!panFailed) { - events.push("pan"); - } + return result; + } + __name(convertString, "convertString"); + ValueConverter2.convertString = convertString; + function convertEscapeCharacter(char2) { + switch (char2) { + case "b": + return "\b"; + case "f": + return "\f"; + case "n": + return "\n"; + case "r": + return "\r"; + case "t": + return " "; + case "v": + return "\v"; + case "0": + return "\0"; + default: + return char2; } - if (events.length > 0) { - events.push("viewport"); - this.emit(events.join(" ")); - this.notify("viewport"); + } + __name(convertEscapeCharacter, "convertEscapeCharacter"); + function convertID(input) { + if (input.charAt(0) === "^") { + return input.substring(1); + } else { + return input; } - return this; - }, "viewport"), - center: /* @__PURE__ */ __name(function center2(elements3) { - var pan2 = this.getCenterPan(elements3); - if (pan2) { - this._private.pan = pan2; - this.emit("pan viewport"); - this.notify("viewport"); + } + __name(convertID, "convertID"); + ValueConverter2.convertID = convertID; + function convertInt(input) { + return parseInt(input); + } + __name(convertInt, "convertInt"); + ValueConverter2.convertInt = convertInt; + function convertBigint(input) { + return BigInt(input); + } + __name(convertBigint, "convertBigint"); + ValueConverter2.convertBigint = convertBigint; + function convertDate(input) { + return new Date(input); + } + __name(convertDate, "convertDate"); + ValueConverter2.convertDate = convertDate; + function convertNumber(input) { + return Number(input); + } + __name(convertNumber, "convertNumber"); + ValueConverter2.convertNumber = convertNumber; + function convertBoolean(input) { + return input.toLowerCase() === "true"; + } + __name(convertBoolean, "convertBoolean"); + ValueConverter2.convertBoolean = convertBoolean; + })(ValueConverter || (ValueConverter = {})); + } + }); + + // ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js + var require_ral = __commonJS({ + "../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var _ral; + function RAL() { + if (_ral === void 0) { + throw new Error(`No runtime abstraction layer installed`); + } + return _ral; + } + __name(RAL, "RAL"); + (function(RAL2) { + function install(ral) { + if (ral === void 0) { + throw new Error(`No runtime abstraction layer provided`); } - return this; - }, "center"), - getCenterPan: /* @__PURE__ */ __name(function getCenterPan(elements3, zoom2) { - if (!this._private.panningEnabled) { - return; + _ral = ral; + } + __name(install, "install"); + RAL2.install = install; + })(RAL || (RAL = {})); + exports2.default = RAL; + } + }); + + // ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js + var require_is = __commonJS({ + "../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.stringArray = exports2.array = exports2.func = exports2.error = exports2.number = exports2.string = exports2.boolean = void 0; + function boolean(value2) { + return value2 === true || value2 === false; + } + __name(boolean, "boolean"); + exports2.boolean = boolean; + function string3(value2) { + return typeof value2 === "string" || value2 instanceof String; + } + __name(string3, "string"); + exports2.string = string3; + function number7(value2) { + return typeof value2 === "number" || value2 instanceof Number; + } + __name(number7, "number"); + exports2.number = number7; + function error3(value2) { + return value2 instanceof Error; + } + __name(error3, "error"); + exports2.error = error3; + function func(value2) { + return typeof value2 === "function"; + } + __name(func, "func"); + exports2.func = func; + function array4(value2) { + return Array.isArray(value2); + } + __name(array4, "array"); + exports2.array = array4; + function stringArray(value2) { + return array4(value2) && value2.every((elem) => string3(elem)); + } + __name(stringArray, "stringArray"); + exports2.stringArray = stringArray; + } + }); + + // ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js + var require_events = __commonJS({ + "../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Emitter = exports2.Event = void 0; + var ral_1 = require_ral(); + var Event3; + (function(Event4) { + const _disposable = { dispose() { + } }; + Event4.None = function() { + return _disposable; + }; + })(Event3 || (exports2.Event = Event3 = {})); + var CallbackList = class { + static { + __name(this, "CallbackList"); + } + add(callback, context = null, bucket) { + if (!this._callbacks) { + this._callbacks = []; + this._contexts = []; } - if (string(elements3)) { - var selector = elements3; - elements3 = this.mutableElements().filter(selector); - } else if (!elementOrCollection(elements3)) { - elements3 = this.mutableElements(); + this._callbacks.push(callback); + this._contexts.push(context); + if (Array.isArray(bucket)) { + bucket.push({ dispose: /* @__PURE__ */ __name(() => this.remove(callback, context), "dispose") }); } - if (elements3.length === 0) { + } + remove(callback, context = null) { + if (!this._callbacks) { return; } - var bb = elements3.boundingBox(); - var w3 = this.width(); - var h2 = this.height(); - zoom2 = zoom2 === void 0 ? this._private.zoom : zoom2; - var pan2 = { - // middle - x: (w3 - zoom2 * (bb.x1 + bb.x2)) / 2, - y: (h2 - zoom2 * (bb.y1 + bb.y2)) / 2 - }; - return pan2; - }, "getCenterPan"), - reset: /* @__PURE__ */ __name(function reset3() { - if (!this._private.panningEnabled || !this._private.zoomingEnabled) { - return this; + let foundCallbackWithDifferentContext = false; + for (let i2 = 0, len = this._callbacks.length; i2 < len; i2++) { + if (this._callbacks[i2] === callback) { + if (this._contexts[i2] === context) { + this._callbacks.splice(i2, 1); + this._contexts.splice(i2, 1); + return; + } else { + foundCallbackWithDifferentContext = true; + } + } } - this.viewport({ - pan: { - x: 0, - y: 0 - }, - zoom: 1 - }); - return this; - }, "reset"), - invalidateSize: /* @__PURE__ */ __name(function invalidateSize() { - this._private.sizeCache = null; - }, "invalidateSize"), - size: /* @__PURE__ */ __name(function size4() { - var _p = this._private; - var container2 = _p.container; - var cy = this; - return _p.sizeCache = _p.sizeCache || (container2 ? function() { - var style3 = cy.window().getComputedStyle(container2); - var val = /* @__PURE__ */ __name(function val2(name) { - return parseFloat(style3.getPropertyValue(name)); - }, "val"); - return { - width: container2.clientWidth - val("padding-left") - val("padding-right"), - height: container2.clientHeight - val("padding-top") - val("padding-bottom") - }; - }() : { - // fallback if no container (not 0 b/c can be used for dividing etc) - width: 1, - height: 1 - }); - }, "size"), - width: /* @__PURE__ */ __name(function width2() { - return this.size().width; - }, "width"), - height: /* @__PURE__ */ __name(function height() { - return this.size().height; - }, "height"), - extent: /* @__PURE__ */ __name(function extent() { - var pan2 = this._private.pan; - var zoom2 = this._private.zoom; - var rb = this.renderedExtent(); - var b2 = { - x1: (rb.x1 - pan2.x) / zoom2, - x2: (rb.x2 - pan2.x) / zoom2, - y1: (rb.y1 - pan2.y) / zoom2, - y2: (rb.y2 - pan2.y) / zoom2 - }; - b2.w = b2.x2 - b2.x1; - b2.h = b2.y2 - b2.y1; - return b2; - }, "extent"), - renderedExtent: /* @__PURE__ */ __name(function renderedExtent() { - var width3 = this.width(); - var height2 = this.height(); - return { - x1: 0, - y1: 0, - x2: width3, - y2: height2, - w: width3, - h: height2 - }; - }, "renderedExtent"), - multiClickDebounceTime: /* @__PURE__ */ __name(function multiClickDebounceTime(_int) { - if (_int) this._private.multiClickDebounceTime = _int; - else return this._private.multiClickDebounceTime; - return this; - }, "multiClickDebounceTime") + if (foundCallbackWithDifferentContext) { + throw new Error("When adding a listener with a context, you should remove it with the same context"); + } + } + invoke(...args) { + if (!this._callbacks) { + return []; + } + const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0); + for (let i2 = 0, len = callbacks.length; i2 < len; i2++) { + try { + ret.push(callbacks[i2].apply(contexts[i2], args)); + } catch (e3) { + (0, ral_1.default)().console.error(e3); + } + } + return ret; + } + isEmpty() { + return !this._callbacks || this._callbacks.length === 0; + } + dispose() { + this._callbacks = void 0; + this._contexts = void 0; + } }; - corefn$1.centre = corefn$1.center; - corefn$1.autolockNodes = corefn$1.autolock; - corefn$1.autoungrabifyNodes = corefn$1.autoungrabify; - fn2 = { - data: define2.data({ - field: "data", - bindingEvent: "data", - allowBinding: true, - allowSetting: true, - settingEvent: "data", - settingTriggersEvent: true, - triggerFnName: "trigger", - allowGetting: true, - updateStyle: true - }), - removeData: define2.removeData({ - field: "data", - event: "data", - triggerFnName: "trigger", - triggerEvent: true, - updateStyle: true - }), - scratch: define2.data({ - field: "scratch", - bindingEvent: "scratch", - allowBinding: true, - allowSetting: true, - settingEvent: "scratch", - settingTriggersEvent: true, - triggerFnName: "trigger", - allowGetting: true, - updateStyle: true - }), - removeScratch: define2.removeData({ - field: "scratch", - event: "scratch", - triggerFnName: "trigger", - triggerEvent: true, - updateStyle: true - }) - }; - fn2.attr = fn2.data; - fn2.removeAttr = fn2.removeData; - Core = /* @__PURE__ */ __name(function Core2(opts) { - var cy = this; - opts = extend4({}, opts); - var container2 = opts.container; - if (container2 && !htmlElement(container2) && htmlElement(container2[0])) { - container2 = container2[0]; - } - var reg = container2 ? container2._cyreg : null; - reg = reg || {}; - if (reg && reg.cy) { - reg.cy.destroy(); - reg = {}; + var Emitter4 = class _Emitter { + static { + __name(this, "Emitter"); } - var readies = reg.readies = reg.readies || []; - if (container2) { - container2._cyreg = reg; + constructor(_options) { + this._options = _options; } - reg.cy = cy; - var head2 = _window !== void 0 && container2 !== void 0 && !opts.headless; - var options3 = opts; - options3.layout = extend4({ - name: head2 ? "grid" : "null" - }, options3.layout); - options3.renderer = extend4({ - name: head2 ? "canvas" : "null" - }, options3.renderer); - var defVal = /* @__PURE__ */ __name(function defVal2(def2, val, altVal) { - if (val !== void 0) { - return val; - } else if (altVal !== void 0) { - return altVal; - } else { - return def2; + /** + * For the public to allow to subscribe + * to events from this Emitter + */ + get event() { + if (!this._event) { + this._event = (listener, thisArgs, disposables) => { + if (!this._callbacks) { + this._callbacks = new CallbackList(); + } + if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) { + this._options.onFirstListenerAdd(this); + } + this._callbacks.add(listener, thisArgs); + const result = { + dispose: /* @__PURE__ */ __name(() => { + if (!this._callbacks) { + return; + } + this._callbacks.remove(listener, thisArgs); + result.dispose = _Emitter._noop; + if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) { + this._options.onLastListenerRemove(this); + } + }, "dispose") + }; + if (Array.isArray(disposables)) { + disposables.push(result); + } + return result; + }; } - }, "defVal"); - var _p = this._private = { - container: container2, - // html dom ele container - ready: false, - // whether ready has been triggered - options: options3, - // cached options - elements: new Collection(this), - // elements in the graph - listeners: [], - // list of listeners - aniEles: new Collection(this), - // elements being animated - data: options3.data || {}, - // data for the core - scratch: {}, - // scratch object for core - layout: null, - renderer: null, - destroyed: false, - // whether destroy was called - notificationsEnabled: true, - // whether notifications are sent to the renderer - minZoom: 1e-50, - maxZoom: 1e50, - zoomingEnabled: defVal(true, options3.zoomingEnabled), - userZoomingEnabled: defVal(true, options3.userZoomingEnabled), - panningEnabled: defVal(true, options3.panningEnabled), - userPanningEnabled: defVal(true, options3.userPanningEnabled), - boxSelectionEnabled: defVal(true, options3.boxSelectionEnabled), - autolock: defVal(false, options3.autolock, options3.autolockNodes), - autoungrabify: defVal(false, options3.autoungrabify, options3.autoungrabifyNodes), - autounselectify: defVal(false, options3.autounselectify), - styleEnabled: options3.styleEnabled === void 0 ? head2 : options3.styleEnabled, - zoom: number$1(options3.zoom) ? options3.zoom : 1, - pan: { - x: plainObject(options3.pan) && number$1(options3.pan.x) ? options3.pan.x : 0, - y: plainObject(options3.pan) && number$1(options3.pan.y) ? options3.pan.y : 0 - }, - animation: { - // object for currently-running animations - current: [], - queue: [] - }, - hasCompoundNodes: false, - multiClickDebounceTime: defVal(250, options3.multiClickDebounceTime) - }; - this.createEmitter(); - this.selectionType(options3.selectionType); - this.zoomRange({ - min: options3.minZoom, - max: options3.maxZoom - }); - var loadExtData = /* @__PURE__ */ __name(function loadExtData2(extData, next3) { - var anyIsPromise = extData.some(promise); - if (anyIsPromise) { - return Promise$1.all(extData).then(next3); - } else { - next3(extData); + return this._event; + } + /** + * To be kept private to fire an event to + * subscribers + */ + fire(event3) { + if (this._callbacks) { + this._callbacks.invoke.call(this._callbacks, event3); } - }, "loadExtData"); - if (_p.styleEnabled) { - cy.setStyle([]); } - var rendererOptions = extend4({}, options3, options3.renderer); - cy.initRenderer(rendererOptions); - var setElesAndLayout = /* @__PURE__ */ __name(function setElesAndLayout2(elements3, onload, ondone) { - cy.notifications(false); - var oldEles = cy.mutableElements(); - if (oldEles.length > 0) { - oldEles.remove(); + dispose() { + if (this._callbacks) { + this._callbacks.dispose(); + this._callbacks = void 0; } - if (elements3 != null) { - if (plainObject(elements3) || array2(elements3)) { - cy.add(elements3); + } + }; + exports2.Emitter = Emitter4; + Emitter4._noop = function() { + }; + } + }); + + // ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js + var require_cancellation = __commonJS({ + "../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.CancellationTokenSource = exports2.CancellationToken = void 0; + var ral_1 = require_ral(); + var Is2 = require_is(); + var events_1 = require_events(); + var CancellationToken11; + (function(CancellationToken12) { + CancellationToken12.None = Object.freeze({ + isCancellationRequested: false, + onCancellationRequested: events_1.Event.None + }); + CancellationToken12.Cancelled = Object.freeze({ + isCancellationRequested: true, + onCancellationRequested: events_1.Event.None + }); + function is2(value2) { + const candidate = value2; + return candidate && (candidate === CancellationToken12.None || candidate === CancellationToken12.Cancelled || Is2.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested); + } + __name(is2, "is"); + CancellationToken12.is = is2; + })(CancellationToken11 || (exports2.CancellationToken = CancellationToken11 = {})); + var shortcutEvent = Object.freeze(function(callback, context) { + const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0); + return { dispose() { + handle.dispose(); + } }; + }); + var MutableToken = class { + static { + __name(this, "MutableToken"); + } + constructor() { + this._isCancelled = false; + } + cancel() { + if (!this._isCancelled) { + this._isCancelled = true; + if (this._emitter) { + this._emitter.fire(void 0); + this.dispose(); } } - cy.one("layoutready", function(e3) { - cy.notifications(true); - cy.emit(e3); - cy.one("load", onload); - cy.emitAndNotify("load"); - }).one("layoutstop", function() { - cy.one("done", ondone); - cy.emit("done"); - }); - var layoutOpts = extend4({}, cy._private.options.layout); - layoutOpts.eles = cy.elements(); - cy.layout(layoutOpts).run(); - }, "setElesAndLayout"); - loadExtData([options3.style, options3.elements], function(thens) { - var initStyle = thens[0]; - var initEles = thens[1]; - if (_p.styleEnabled) { - cy.style().append(initStyle); + } + get isCancellationRequested() { + return this._isCancelled; + } + get onCancellationRequested() { + if (this._isCancelled) { + return shortcutEvent; } - setElesAndLayout(initEles, function() { - cy.startAnimationLoop(); - _p.ready = true; - if (fn$6(options3.ready)) { - cy.on("ready", options3.ready); - } - for (var i2 = 0; i2 < readies.length; i2++) { - var fn3 = readies[i2]; - cy.on("ready", fn3); - } - if (reg) { - reg.readies = []; - } - cy.emit("ready"); - }, options3.done); - }); - }, "Core"); - corefn = Core.prototype; - extend4(corefn, { - instanceString: /* @__PURE__ */ __name(function instanceString3() { - return "core"; - }, "instanceString"), - isReady: /* @__PURE__ */ __name(function isReady() { - return this._private.ready; - }, "isReady"), - destroyed: /* @__PURE__ */ __name(function destroyed() { - return this._private.destroyed; - }, "destroyed"), - ready: /* @__PURE__ */ __name(function ready(fn3) { - if (this.isReady()) { - this.emitter().emit("ready", [], fn3); - } else { - this.on("ready", fn3); + if (!this._emitter) { + this._emitter = new events_1.Emitter(); } - return this; - }, "ready"), - destroy: /* @__PURE__ */ __name(function destroy() { - var cy = this; - if (cy.destroyed()) return; - cy.stopAnimationLoop(); - cy.destroyRenderer(); - this.emit("destroy"); - cy._private.destroyed = true; - return cy; - }, "destroy"), - hasElementWithId: /* @__PURE__ */ __name(function hasElementWithId(id29) { - return this._private.elements.hasElementWithId(id29); - }, "hasElementWithId"), - getElementById: /* @__PURE__ */ __name(function getElementById2(id29) { - return this._private.elements.getElementById(id29); - }, "getElementById"), - hasCompoundNodes: /* @__PURE__ */ __name(function hasCompoundNodes() { - return this._private.hasCompoundNodes; - }, "hasCompoundNodes"), - headless: /* @__PURE__ */ __name(function headless() { - return this._private.renderer.isHeadless(); - }, "headless"), - styleEnabled: /* @__PURE__ */ __name(function styleEnabled() { - return this._private.styleEnabled; - }, "styleEnabled"), - addToPool: /* @__PURE__ */ __name(function addToPool(eles) { - this._private.elements.merge(eles); - return this; - }, "addToPool"), - removeFromPool: /* @__PURE__ */ __name(function removeFromPool(eles) { - this._private.elements.unmerge(eles); - return this; - }, "removeFromPool"), - container: /* @__PURE__ */ __name(function container() { - return this._private.container || null; - }, "container"), - window: /* @__PURE__ */ __name(function window2() { - var container2 = this._private.container; - if (container2 == null) return _window; - var ownerDocument = this._private.container.ownerDocument; - if (ownerDocument === void 0 || ownerDocument == null) { - return _window; + return this._emitter.event; + } + dispose() { + if (this._emitter) { + this._emitter.dispose(); + this._emitter = void 0; } - return ownerDocument.defaultView || _window; - }, "window"), - mount: /* @__PURE__ */ __name(function mount(container2) { - if (container2 == null) { - return; + } + }; + var CancellationTokenSource3 = class { + static { + __name(this, "CancellationTokenSource"); + } + get token() { + if (!this._token) { + this._token = new MutableToken(); } - var cy = this; - var _p = cy._private; - var options3 = _p.options; - if (!htmlElement(container2) && htmlElement(container2[0])) { - container2 = container2[0]; + return this._token; + } + cancel() { + if (!this._token) { + this._token = CancellationToken11.Cancelled; + } else { + this._token.cancel(); } - cy.stopAnimationLoop(); - cy.destroyRenderer(); - _p.container = container2; - _p.styleEnabled = true; - cy.invalidateSize(); - cy.initRenderer(extend4({}, options3, options3.renderer, { - // allow custom renderer name to be re-used, otherwise use canvas - name: options3.renderer.name === "null" ? "canvas" : options3.renderer.name - })); - cy.startAnimationLoop(); - cy.style(options3.style); - cy.emit("mount"); - return cy; - }, "mount"), - unmount: /* @__PURE__ */ __name(function unmount() { - var cy = this; - cy.stopAnimationLoop(); - cy.destroyRenderer(); - cy.initRenderer({ - name: "null" + } + dispose() { + if (!this._token) { + this._token = CancellationToken11.None; + } else if (this._token instanceof MutableToken) { + this._token.dispose(); + } + } + }; + exports2.CancellationTokenSource = CancellationTokenSource3; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/cancellation.js + var cancellation_exports = {}; + var init_cancellation = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/cancellation.js"() { + "use strict"; + __reExport(cancellation_exports, __toESM(require_cancellation(), 1)); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/promise-utils.js + function delayNextTick() { + return new Promise((resolve2) => { + if (typeof setImmediate === "undefined") { + setTimeout(resolve2, 0); + } else { + setImmediate(resolve2); + } + }); + } + function startCancelableOperation() { + lastTick = performance.now(); + return new cancellation_exports.CancellationTokenSource(); + } + function setInterruptionPeriod(period) { + globalInterruptionPeriod = period; + } + function isOperationCancelled(err) { + return err === OperationCancelled; + } + async function interruptAndCheck(token2) { + if (token2 === cancellation_exports.CancellationToken.None) { + return; + } + const current = performance.now(); + if (current - lastTick >= globalInterruptionPeriod) { + lastTick = current; + await delayNextTick(); + lastTick = performance.now(); + } + if (token2.isCancellationRequested) { + throw OperationCancelled; + } + } + var lastTick, globalInterruptionPeriod, OperationCancelled, Deferred; + var init_promise_utils = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/promise-utils.js"() { + "use strict"; + init_cancellation(); + __name(delayNextTick, "delayNextTick"); + lastTick = 0; + globalInterruptionPeriod = 10; + __name(startCancelableOperation, "startCancelableOperation"); + __name(setInterruptionPeriod, "setInterruptionPeriod"); + OperationCancelled = Symbol("OperationCancelled"); + __name(isOperationCancelled, "isOperationCancelled"); + __name(interruptAndCheck, "interruptAndCheck"); + Deferred = class { + static { + __name(this, "Deferred"); + } + constructor() { + this.promise = new Promise((resolve2, reject3) => { + this.resolve = (arg) => { + resolve2(arg); + return this; + }; + this.reject = (err) => { + reject3(err); + return this; + }; }); - cy.emit("unmount"); - return cy; - }, "unmount"), - options: /* @__PURE__ */ __name(function options2() { - return copy3(this._private.options); - }, "options"), - json: /* @__PURE__ */ __name(function json2(obj) { - var cy = this; - var _p = cy._private; - var eles = cy.mutableElements(); - var getFreshRef = /* @__PURE__ */ __name(function getFreshRef2(ele) { - return cy.getElementById(ele.id()); - }, "getFreshRef"); - if (plainObject(obj)) { - cy.startBatch(); - if (obj.elements) { - var idInJson = {}; - var updateEles = /* @__PURE__ */ __name(function updateEles2(jsons, gr2) { - var toAdd = []; - var toMod = []; - for (var i3 = 0; i3 < jsons.length; i3++) { - var json4 = jsons[i3]; - if (!json4.data.id) { - warn("cy.json() cannot handle elements without an ID attribute"); - continue; - } - var id29 = "" + json4.data.id; - var ele = cy.getElementById(id29); - idInJson[id29] = true; - if (ele.length !== 0) { - toMod.push({ - ele, - json: json4 - }); - } else { - if (gr2) { - json4.group = gr2; - toAdd.push(json4); - } else { - toAdd.push(json4); - } - } - } - cy.add(toAdd); - for (var _i = 0; _i < toMod.length; _i++) { - var _toMod$_i = toMod[_i], _ele = _toMod$_i.ele, _json = _toMod$_i.json; - _ele.json(_json); + } + }; + } + }); + + // ../../node_modules/.pnpm/vscode-languageserver-textdocument@1.0.12/node_modules/vscode-languageserver-textdocument/lib/esm/main.js + function mergeSort(data5, compare) { + if (data5.length <= 1) { + return data5; + } + const p3 = data5.length / 2 | 0; + const left3 = data5.slice(0, p3); + const right3 = data5.slice(p3); + mergeSort(left3, compare); + mergeSort(right3, compare); + let leftIdx = 0; + let rightIdx = 0; + let i2 = 0; + while (leftIdx < left3.length && rightIdx < right3.length) { + const ret = compare(left3[leftIdx], right3[rightIdx]); + if (ret <= 0) { + data5[i2++] = left3[leftIdx++]; + } else { + data5[i2++] = right3[rightIdx++]; + } + } + while (leftIdx < left3.length) { + data5[i2++] = left3[leftIdx++]; + } + while (rightIdx < right3.length) { + data5[i2++] = right3[rightIdx++]; + } + return data5; + } + function computeLineOffsets(text4, isAtLineStart, textOffset = 0) { + const result = isAtLineStart ? [textOffset] : []; + for (let i2 = 0; i2 < text4.length; i2++) { + const ch = text4.charCodeAt(i2); + if (isEOL(ch)) { + if (ch === 13 && i2 + 1 < text4.length && text4.charCodeAt(i2 + 1) === 10) { + i2++; + } + result.push(textOffset + i2 + 1); + } + } + return result; + } + function isEOL(char2) { + return char2 === 13 || char2 === 10; + } + function getWellformedRange(range3) { + const start3 = range3.start; + const end2 = range3.end; + if (start3.line > end2.line || start3.line === end2.line && start3.character > end2.character) { + return { start: end2, end: start3 }; + } + return range3; + } + function getWellformedEdit(textEdit) { + const range3 = getWellformedRange(textEdit.range); + if (range3 !== textEdit.range) { + return { newText: textEdit.newText, range: range3 }; + } + return textEdit; + } + var FullTextDocument2, TextDocument2; + var init_main2 = __esm({ + "../../node_modules/.pnpm/vscode-languageserver-textdocument@1.0.12/node_modules/vscode-languageserver-textdocument/lib/esm/main.js"() { + "use strict"; + FullTextDocument2 = class _FullTextDocument { + static { + __name(this, "FullTextDocument"); + } + constructor(uri, languageId, version3, content) { + this._uri = uri; + this._languageId = languageId; + this._version = version3; + this._content = content; + this._lineOffsets = void 0; + } + get uri() { + return this._uri; + } + get languageId() { + return this._languageId; + } + get version() { + return this._version; + } + getText(range3) { + if (range3) { + const start3 = this.offsetAt(range3.start); + const end2 = this.offsetAt(range3.end); + return this._content.substring(start3, end2); + } + return this._content; + } + update(changes, version3) { + for (const change2 of changes) { + if (_FullTextDocument.isIncremental(change2)) { + const range3 = getWellformedRange(change2.range); + const startOffset = this.offsetAt(range3.start); + const endOffset = this.offsetAt(range3.end); + this._content = this._content.substring(0, startOffset) + change2.text + this._content.substring(endOffset, this._content.length); + const startLine = Math.max(range3.start.line, 0); + const endLine = Math.max(range3.end.line, 0); + let lineOffsets = this._lineOffsets; + const addedLineOffsets = computeLineOffsets(change2.text, false, startOffset); + if (endLine - startLine === addedLineOffsets.length) { + for (let i2 = 0, len = addedLineOffsets.length; i2 < len; i2++) { + lineOffsets[i2 + startLine + 1] = addedLineOffsets[i2]; } - }, "updateEles"); - if (array2(obj.elements)) { - updateEles(obj.elements); } else { - var grs = ["nodes", "edges"]; - for (var i2 = 0; i2 < grs.length; i2++) { - var gr = grs[i2]; - var elements3 = obj.elements[gr]; - if (array2(elements3)) { - updateEles(elements3, gr); - } - } - } - var parentsToRemove = cy.collection(); - eles.filter(function(ele) { - return !idInJson[ele.id()]; - }).forEach(function(ele) { - if (ele.isParent()) { - parentsToRemove.merge(ele); + if (addedLineOffsets.length < 1e4) { + lineOffsets.splice(startLine + 1, endLine - startLine, ...addedLineOffsets); } else { - ele.remove(); + this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1)); } - }); - parentsToRemove.forEach(function(ele) { - return ele.children().move({ - parent: null - }); - }); - parentsToRemove.forEach(function(ele) { - return getFreshRef(ele).remove(); - }); - } - if (obj.style) { - cy.style(obj.style); - } - if (obj.zoom != null && obj.zoom !== _p.zoom) { - cy.zoom(obj.zoom); - } - if (obj.pan) { - if (obj.pan.x !== _p.pan.x || obj.pan.y !== _p.pan.y) { - cy.pan(obj.pan); } - } - if (obj.data) { - cy.data(obj.data); - } - var fields = ["minZoom", "maxZoom", "zoomingEnabled", "userZoomingEnabled", "panningEnabled", "userPanningEnabled", "boxSelectionEnabled", "autolock", "autoungrabify", "autounselectify", "multiClickDebounceTime"]; - for (var _i2 = 0; _i2 < fields.length; _i2++) { - var f2 = fields[_i2]; - if (obj[f2] != null) { - cy[f2](obj[f2]); + const diff2 = change2.text.length - (endOffset - startOffset); + if (diff2 !== 0) { + for (let i2 = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i2 < len; i2++) { + lineOffsets[i2] = lineOffsets[i2] + diff2; + } } - } - cy.endBatch(); - return this; - } else { - var flat = !!obj; - var json3 = {}; - if (flat) { - json3.elements = this.elements().map(function(ele) { - return ele.json(); - }); + } else if (_FullTextDocument.isFull(change2)) { + this._content = change2.text; + this._lineOffsets = void 0; } else { - json3.elements = {}; - eles.forEach(function(ele) { - var group2 = ele.group(); - if (!json3.elements[group2]) { - json3.elements[group2] = []; - } - json3.elements[group2].push(ele.json()); - }); - } - if (this._private.styleEnabled) { - json3.style = cy.style().json(); + throw new Error("Unknown change event received"); } - json3.data = copy3(cy.data()); - var options3 = _p.options; - json3.zoomingEnabled = _p.zoomingEnabled; - json3.userZoomingEnabled = _p.userZoomingEnabled; - json3.zoom = _p.zoom; - json3.minZoom = _p.minZoom; - json3.maxZoom = _p.maxZoom; - json3.panningEnabled = _p.panningEnabled; - json3.userPanningEnabled = _p.userPanningEnabled; - json3.pan = copy3(_p.pan); - json3.boxSelectionEnabled = _p.boxSelectionEnabled; - json3.renderer = copy3(options3.renderer); - json3.hideEdgesOnViewport = options3.hideEdgesOnViewport; - json3.textureOnViewport = options3.textureOnViewport; - json3.wheelSensitivity = options3.wheelSensitivity; - json3.motionBlur = options3.motionBlur; - json3.multiClickDebounceTime = options3.multiClickDebounceTime; - return json3; } - }, "json") - }); - corefn.$id = corefn.getElementById; - [corefn$9, corefn$8, elesfn, corefn$7, corefn$6, corefn$5, corefn$4, corefn$3, corefn$2, corefn$1, fn2].forEach(function(props) { - extend4(corefn, props); - }); - defaults$7 = { - fit: true, - // whether to fit the viewport to the graph - directed: false, - // whether the tree is directed downwards (or edges can point in any direction if false) - padding: 30, - // padding on fit - circle: false, - // put depths in concentric circles if true, put depths top down if false - grid: false, - // whether to create an even grid into which the DAG is placed (circle:false only) - spacingFactor: 1.75, - // positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap) - boundingBox: void 0, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox if not enough space - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - roots: void 0, - // the roots of the trees - depthSort: void 0, - // a sorting function to order nodes at equal depth. e.g. function(a, b){ return a.data('weight') - b.data('weight') } - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: void 0, - // easing of animation if enabled, - animateFilter: /* @__PURE__ */ __name(function animateFilter(node2, i2) { - return true; - }, "animateFilter"), - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: void 0, - // callback on layoutready - stop: void 0, - // callback on layoutstop - transform: /* @__PURE__ */ __name(function transform2(node2, position5) { - return position5; - }, "transform") - // transform a given node position. Useful for changing flow direction in discrete layouts - }; - deprecatedOptionDefaults = { - maximal: false, - // whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only); setting acyclic to true sets maximal to true also - acyclic: false - // whether the tree is acyclic and thus a node could be shifted (due to the maximal option) multiple times without causing an infinite loop; setting to true sets maximal to true also; if you are uncertain whether a tree is acyclic, set to false to avoid potential infinite loops - }; - getInfo = /* @__PURE__ */ __name(function getInfo2(ele) { - return ele.scratch("breadthfirst"); - }, "getInfo"); - setInfo = /* @__PURE__ */ __name(function setInfo2(ele, obj) { - return ele.scratch("breadthfirst", obj); - }, "setInfo"); - __name(BreadthFirstLayout, "BreadthFirstLayout"); - BreadthFirstLayout.prototype.run = function() { - var options3 = this.options; - var cy = options3.cy; - var eles = options3.eles; - var nodes6 = eles.nodes().filter(function(n3) { - return n3.isChildless(); - }); - var graph = eles; - var directed = options3.directed; - var maximal = options3.acyclic || options3.maximal || options3.maximalAdjustments > 0; - var hasBoundingBox = !!options3.boundingBox; - var cyExtent = cy.extent(); - var bb = makeBoundingBox(hasBoundingBox ? options3.boundingBox : { - x1: cyExtent.x1, - y1: cyExtent.y1, - w: cyExtent.w, - h: cyExtent.h - }); - var roots; - if (elementOrCollection(options3.roots)) { - roots = options3.roots; - } else if (array2(options3.roots)) { - var rootsArray = []; - for (var i2 = 0; i2 < options3.roots.length; i2++) { - var id29 = options3.roots[i2]; - var ele = cy.getElementById(id29); - rootsArray.push(ele); + this._version = version3; + } + getLineOffsets() { + if (this._lineOffsets === void 0) { + this._lineOffsets = computeLineOffsets(this._content, true); } - roots = cy.collection(rootsArray); - } else if (string(options3.roots)) { - roots = cy.$(options3.roots); - } else { - if (directed) { - roots = nodes6.roots(); - } else { - var components3 = eles.components(); - roots = cy.collection(); - var _loop = /* @__PURE__ */ __name(function _loop2(_i4) { - var comp = components3[_i4]; - var maxDegree = comp.maxDegree(false); - var compRoots = comp.filter(function(ele2) { - return ele2.degree(false) === maxDegree; - }); - roots = roots.add(compRoots); - }, "_loop"); - for (var _i = 0; _i < components3.length; _i++) { - _loop(_i); + return this._lineOffsets; + } + positionAt(offset) { + offset = Math.max(Math.min(offset, this._content.length), 0); + const lineOffsets = this.getLineOffsets(); + let low = 0, high = lineOffsets.length; + if (high === 0) { + return { line: 0, character: offset }; + } + while (low < high) { + const mid = Math.floor((low + high) / 2); + if (lineOffsets[mid] > offset) { + high = mid; + } else { + low = mid + 1; } } + const line2 = low - 1; + offset = this.ensureBeforeEOL(offset, lineOffsets[line2]); + return { line: line2, character: offset - lineOffsets[line2] }; + } + offsetAt(position5) { + const lineOffsets = this.getLineOffsets(); + if (position5.line >= lineOffsets.length) { + return this._content.length; + } else if (position5.line < 0) { + return 0; + } + const lineOffset = lineOffsets[position5.line]; + if (position5.character <= 0) { + return lineOffset; + } + const nextLineOffset = position5.line + 1 < lineOffsets.length ? lineOffsets[position5.line + 1] : this._content.length; + const offset = Math.min(lineOffset + position5.character, nextLineOffset); + return this.ensureBeforeEOL(offset, lineOffset); } - var depths = []; - var foundByBfs = {}; - var addToDepth = /* @__PURE__ */ __name(function addToDepth2(ele2, d2) { - if (depths[d2] == null) { - depths[d2] = []; + ensureBeforeEOL(offset, lineOffset) { + while (offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1))) { + offset--; } - var i3 = depths[d2].length; - depths[d2].push(ele2); - setInfo(ele2, { - index: i3, - depth: d2 - }); - }, "addToDepth"); - var changeDepth = /* @__PURE__ */ __name(function changeDepth2(ele2, newDepth) { - var _getInfo = getInfo(ele2), depth = _getInfo.depth, index = _getInfo.index; - depths[depth][index] = null; - if (ele2.isChildless()) addToDepth(ele2, newDepth); - }, "changeDepth"); - graph.bfs({ - roots, - directed: options3.directed, - visit: /* @__PURE__ */ __name(function visit(node2, edge, pNode, i3, depth) { - var ele2 = node2[0]; - var id30 = ele2.id(); - if (ele2.isChildless()) addToDepth(ele2, depth); - foundByBfs[id30] = true; - }, "visit") - }); - var orphanNodes = []; - for (var _i2 = 0; _i2 < nodes6.length; _i2++) { - var _ele = nodes6[_i2]; - if (foundByBfs[_ele.id()]) { - continue; + return offset; + } + get lineCount() { + return this.getLineOffsets().length; + } + static isIncremental(event3) { + const candidate = event3; + return candidate !== void 0 && candidate !== null && typeof candidate.text === "string" && candidate.range !== void 0 && (candidate.rangeLength === void 0 || typeof candidate.rangeLength === "number"); + } + static isFull(event3) { + const candidate = event3; + return candidate !== void 0 && candidate !== null && typeof candidate.text === "string" && candidate.range === void 0 && candidate.rangeLength === void 0; + } + }; + (function(TextDocument3) { + function create4(uri, languageId, version3, content) { + return new FullTextDocument2(uri, languageId, version3, content); + } + __name(create4, "create"); + TextDocument3.create = create4; + function update2(document2, changes, version3) { + if (document2 instanceof FullTextDocument2) { + document2.update(changes, version3); + return document2; } else { - orphanNodes.push(_ele); + throw new Error("TextDocument.update: document must be created by TextDocument.create"); } } - var assignDepthsAt = /* @__PURE__ */ __name(function assignDepthsAt2(i3) { - var eles2 = depths[i3]; - for (var j2 = 0; j2 < eles2.length; j2++) { - var _ele2 = eles2[j2]; - if (_ele2 == null) { - eles2.splice(j2, 1); - j2--; - continue; + __name(update2, "update"); + TextDocument3.update = update2; + function applyEdits(document2, edits) { + const text4 = document2.getText(); + const sortedEdits = mergeSort(edits.map(getWellformedEdit), (a2, b3) => { + const diff2 = a2.range.start.line - b3.range.start.line; + if (diff2 === 0) { + return a2.range.start.character - b3.range.start.character; } - setInfo(_ele2, { - depth: i3, - index: j2 - }); - } - }, "assignDepthsAt"); - var adjustMaximally = /* @__PURE__ */ __name(function adjustMaximally2(ele2, shifted2) { - var eInfo = getInfo(ele2); - var incomers = ele2.incomers().filter(function(el) { - return el.isNode() && eles.has(el); + return diff2; }); - var maxDepth = -1; - var id30 = ele2.id(); - for (var k2 = 0; k2 < incomers.length; k2++) { - var incmr = incomers[k2]; - var iInfo = getInfo(incmr); - maxDepth = Math.max(maxDepth, iInfo.depth); - } - if (eInfo.depth <= maxDepth) { - if (!options3.acyclic && shifted2[id30]) { - return null; + let lastModifiedOffset = 0; + const spans = []; + for (const e3 of sortedEdits) { + const startOffset = document2.offsetAt(e3.range.start); + if (startOffset < lastModifiedOffset) { + throw new Error("Overlapping edit"); + } else if (startOffset > lastModifiedOffset) { + spans.push(text4.substring(lastModifiedOffset, startOffset)); } - var newDepth = maxDepth + 1; - changeDepth(ele2, newDepth); - shifted2[id30] = newDepth; - return true; - } - return false; - }, "adjustMaximally"); - if (directed && maximal) { - var Q2 = []; - var shifted = {}; - var enqueue = /* @__PURE__ */ __name(function enqueue2(n3) { - return Q2.push(n3); - }, "enqueue"); - var dequeue = /* @__PURE__ */ __name(function dequeue2() { - return Q2.shift(); - }, "dequeue"); - nodes6.forEach(function(n3) { - return Q2.push(n3); - }); - while (Q2.length > 0) { - var _ele3 = dequeue(); - var didShift = adjustMaximally(_ele3, shifted); - if (didShift) { - _ele3.outgoers().filter(function(el) { - return el.isNode() && eles.has(el); - }).forEach(enqueue); - } else if (didShift === null) { - warn("Detected double maximal shift for node `" + _ele3.id() + "`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs."); - break; + if (e3.newText.length) { + spans.push(e3.newText); } + lastModifiedOffset = document2.offsetAt(e3.range.end); } + spans.push(text4.substr(lastModifiedOffset)); + return spans.join(""); } - var minDistance = 0; - if (options3.avoidOverlap) { - for (var _i3 = 0; _i3 < nodes6.length; _i3++) { - var n2 = nodes6[_i3]; - var nbb = n2.layoutDimensions(options3); - var w3 = nbb.w; - var h2 = nbb.h; - minDistance = Math.max(minDistance, w3, h2); + __name(applyEdits, "applyEdits"); + TextDocument3.applyEdits = applyEdits; + })(TextDocument2 || (TextDocument2 = {})); + __name(mergeSort, "mergeSort"); + __name(computeLineOffsets, "computeLineOffsets"); + __name(isEOL, "isEOL"); + __name(getWellformedRange, "getWellformedRange"); + __name(getWellformedEdit, "getWellformedEdit"); + } + }); + + // ../../node_modules/.pnpm/vscode-uri@3.0.8/node_modules/vscode-uri/lib/esm/index.mjs + var LIB, URI2, Utils2; + var init_esm2 = __esm({ + "../../node_modules/.pnpm/vscode-uri@3.0.8/node_modules/vscode-uri/lib/esm/index.mjs"() { + "use strict"; + (() => { + "use strict"; + var t4 = { 470: (t5) => { + function e4(t6) { + if ("string" != typeof t6) throw new TypeError("Path must be a string. Received " + JSON.stringify(t6)); } - } - var cachedWeightedPercent = {}; - var getWeightedPercent = /* @__PURE__ */ __name(function getWeightedPercent2(ele2) { - if (cachedWeightedPercent[ele2.id()]) { - return cachedWeightedPercent[ele2.id()]; + __name(e4, "e"); + function r3(t6, e6) { + for (var r4, n4 = "", i2 = 0, o2 = -1, s2 = 0, h3 = 0; h3 <= t6.length; ++h3) { + if (h3 < t6.length) r4 = t6.charCodeAt(h3); + else { + if (47 === r4) break; + r4 = 47; + } + if (47 === r4) { + if (o2 === h3 - 1 || 1 === s2) ; + else if (o2 !== h3 - 1 && 2 === s2) { + if (n4.length < 2 || 2 !== i2 || 46 !== n4.charCodeAt(n4.length - 1) || 46 !== n4.charCodeAt(n4.length - 2)) { + if (n4.length > 2) { + var a2 = n4.lastIndexOf("/"); + if (a2 !== n4.length - 1) { + -1 === a2 ? (n4 = "", i2 = 0) : i2 = (n4 = n4.slice(0, a2)).length - 1 - n4.lastIndexOf("/"), o2 = h3, s2 = 0; + continue; + } + } else if (2 === n4.length || 1 === n4.length) { + n4 = "", i2 = 0, o2 = h3, s2 = 0; + continue; + } + } + e6 && (n4.length > 0 ? n4 += "/.." : n4 = "..", i2 = 2); + } else n4.length > 0 ? n4 += "/" + t6.slice(o2 + 1, h3) : n4 = t6.slice(o2 + 1, h3), i2 = h3 - o2 - 1; + o2 = h3, s2 = 0; + } else 46 === r4 && -1 !== s2 ? ++s2 : s2 = -1; + } + return n4; } - var eleDepth = getInfo(ele2).depth; - var neighbors = ele2.neighborhood(); - var percent = 0; - var samples = 0; - for (var _i4 = 0; _i4 < neighbors.length; _i4++) { - var neighbor = neighbors[_i4]; - if (neighbor.isEdge() || neighbor.isParent() || !nodes6.has(neighbor)) { - continue; + __name(r3, "r"); + var n3 = { resolve: /* @__PURE__ */ __name(function() { + for (var t6, n4 = "", i2 = false, o2 = arguments.length - 1; o2 >= -1 && !i2; o2--) { + var s2; + o2 >= 0 ? s2 = arguments[o2] : (void 0 === t6 && (t6 = process.cwd()), s2 = t6), e4(s2), 0 !== s2.length && (n4 = s2 + "/" + n4, i2 = 47 === s2.charCodeAt(0)); } - var bf = getInfo(neighbor); - if (bf == null) { - continue; + return n4 = r3(n4, !i2), i2 ? n4.length > 0 ? "/" + n4 : "/" : n4.length > 0 ? n4 : "."; + }, "resolve"), normalize: /* @__PURE__ */ __name(function(t6) { + if (e4(t6), 0 === t6.length) return "."; + var n4 = 47 === t6.charCodeAt(0), i2 = 47 === t6.charCodeAt(t6.length - 1); + return 0 !== (t6 = r3(t6, !n4)).length || n4 || (t6 = "."), t6.length > 0 && i2 && (t6 += "/"), n4 ? "/" + t6 : t6; + }, "normalize"), isAbsolute: /* @__PURE__ */ __name(function(t6) { + return e4(t6), t6.length > 0 && 47 === t6.charCodeAt(0); + }, "isAbsolute"), join: /* @__PURE__ */ __name(function() { + if (0 === arguments.length) return "."; + for (var t6, r4 = 0; r4 < arguments.length; ++r4) { + var i2 = arguments[r4]; + e4(i2), i2.length > 0 && (void 0 === t6 ? t6 = i2 : t6 += "/" + i2); } - var index = bf.index; - var depth = bf.depth; - if (index == null || depth == null) { - continue; + return void 0 === t6 ? "." : n3.normalize(t6); + }, "join"), relative: /* @__PURE__ */ __name(function(t6, r4) { + if (e4(t6), e4(r4), t6 === r4) return ""; + if ((t6 = n3.resolve(t6)) === (r4 = n3.resolve(r4))) return ""; + for (var i2 = 1; i2 < t6.length && 47 === t6.charCodeAt(i2); ++i2) ; + for (var o2 = t6.length, s2 = o2 - i2, h3 = 1; h3 < r4.length && 47 === r4.charCodeAt(h3); ++h3) ; + for (var a2 = r4.length - h3, c3 = s2 < a2 ? s2 : a2, f2 = -1, u2 = 0; u2 <= c3; ++u2) { + if (u2 === c3) { + if (a2 > c3) { + if (47 === r4.charCodeAt(h3 + u2)) return r4.slice(h3 + u2 + 1); + if (0 === u2) return r4.slice(h3 + u2); + } else s2 > c3 && (47 === t6.charCodeAt(i2 + u2) ? f2 = u2 : 0 === u2 && (f2 = 0)); + break; + } + var l4 = t6.charCodeAt(i2 + u2); + if (l4 !== r4.charCodeAt(h3 + u2)) break; + 47 === l4 && (f2 = u2); } - var nDepth = depths[depth].length; - if (depth < eleDepth) { - percent += index / nDepth; - samples++; + var g2 = ""; + for (u2 = i2 + f2 + 1; u2 <= o2; ++u2) u2 !== o2 && 47 !== t6.charCodeAt(u2) || (0 === g2.length ? g2 += ".." : g2 += "/.."); + return g2.length > 0 ? g2 + r4.slice(h3 + f2) : (h3 += f2, 47 === r4.charCodeAt(h3) && ++h3, r4.slice(h3)); + }, "relative"), _makeLong: /* @__PURE__ */ __name(function(t6) { + return t6; + }, "_makeLong"), dirname: /* @__PURE__ */ __name(function(t6) { + if (e4(t6), 0 === t6.length) return "."; + for (var r4 = t6.charCodeAt(0), n4 = 47 === r4, i2 = -1, o2 = true, s2 = t6.length - 1; s2 >= 1; --s2) if (47 === (r4 = t6.charCodeAt(s2))) { + if (!o2) { + i2 = s2; + break; + } + } else o2 = false; + return -1 === i2 ? n4 ? "/" : "." : n4 && 1 === i2 ? "//" : t6.slice(0, i2); + }, "dirname"), basename: /* @__PURE__ */ __name(function(t6, r4) { + if (void 0 !== r4 && "string" != typeof r4) throw new TypeError('"ext" argument must be a string'); + e4(t6); + var n4, i2 = 0, o2 = -1, s2 = true; + if (void 0 !== r4 && r4.length > 0 && r4.length <= t6.length) { + if (r4.length === t6.length && r4 === t6) return ""; + var h3 = r4.length - 1, a2 = -1; + for (n4 = t6.length - 1; n4 >= 0; --n4) { + var c3 = t6.charCodeAt(n4); + if (47 === c3) { + if (!s2) { + i2 = n4 + 1; + break; + } + } else -1 === a2 && (s2 = false, a2 = n4 + 1), h3 >= 0 && (c3 === r4.charCodeAt(h3) ? -1 == --h3 && (o2 = n4) : (h3 = -1, o2 = a2)); + } + return i2 === o2 ? o2 = a2 : -1 === o2 && (o2 = t6.length), t6.slice(i2, o2); } - } - samples = Math.max(1, samples); - percent = percent / samples; - if (samples === 0) { - percent = 0; - } - cachedWeightedPercent[ele2.id()] = percent; - return percent; - }, "getWeightedPercent"); - var sortFn = /* @__PURE__ */ __name(function sortFn2(a2, b2) { - var apct = getWeightedPercent(a2); - var bpct = getWeightedPercent(b2); - var diff2 = apct - bpct; - if (diff2 === 0) { - return ascending3(a2.id(), b2.id()); - } else { - return diff2; - } - }, "sortFn"); - if (options3.depthSort !== void 0) { - sortFn = options3.depthSort; - } - var depthsLen = depths.length; - for (var _i5 = 0; _i5 < depthsLen; _i5++) { - depths[_i5].sort(sortFn); - assignDepthsAt(_i5); - } - var orphanDepth = []; - for (var _i6 = 0; _i6 < orphanNodes.length; _i6++) { - orphanDepth.push(orphanNodes[_i6]); - } - var assignDepths = /* @__PURE__ */ __name(function assignDepths2() { - for (var _i7 = 0; _i7 < depthsLen; _i7++) { - assignDepthsAt(_i7); - } - }, "assignDepths"); - if (orphanDepth.length) { - depths.unshift(orphanDepth); - depthsLen = depths.length; - assignDepths(); - } - var biggestDepthSize = 0; - for (var _i8 = 0; _i8 < depthsLen; _i8++) { - biggestDepthSize = Math.max(depths[_i8].length, biggestDepthSize); - } - var center4 = { - x: bb.x1 + bb.w / 2, - y: bb.y1 + bb.h / 2 - }; - var aveNodeSize = nodes6.reduce(function(acc, node2) { - return function(box) { - return { - w: acc.w === -1 ? box.w : (acc.w + box.w) / 2, - h: acc.h === -1 ? box.h : (acc.h + box.h) / 2 - }; - }(node2.boundingBox({ - includeLabels: options3.nodeDimensionsIncludeLabels - })); - }, { - w: -1, - h: -1 - }); - var distanceY = Math.max( - // only one depth - depthsLen === 1 ? 0 : ( - // inside a bounding box, no need for top & bottom padding - hasBoundingBox ? (bb.h - options3.padding * 2 - aveNodeSize.h) / (depthsLen - 1) : (bb.h - options3.padding * 2 - aveNodeSize.h) / (depthsLen + 1) - ), - minDistance - ); - var maxDepthSize = depths.reduce(function(max10, eles2) { - return Math.max(max10, eles2.length); - }, 0); - var getPosition = /* @__PURE__ */ __name(function getPosition2(ele2) { - var _getInfo2 = getInfo(ele2), depth = _getInfo2.depth, index = _getInfo2.index; - if (options3.circle) { - var radiusStepSize = Math.min(bb.w / 2 / depthsLen, bb.h / 2 / depthsLen); - radiusStepSize = Math.max(radiusStepSize, minDistance); - var radius2 = radiusStepSize * depth + radiusStepSize - (depthsLen > 0 && depths[0].length <= 3 ? radiusStepSize / 2 : 0); - var theta = 2 * Math.PI / depths[depth].length * index; - if (depth === 0 && depths[0].length === 1) { - radius2 = 1; + for (n4 = t6.length - 1; n4 >= 0; --n4) if (47 === t6.charCodeAt(n4)) { + if (!s2) { + i2 = n4 + 1; + break; + } + } else -1 === o2 && (s2 = false, o2 = n4 + 1); + return -1 === o2 ? "" : t6.slice(i2, o2); + }, "basename"), extname: /* @__PURE__ */ __name(function(t6) { + e4(t6); + for (var r4 = -1, n4 = 0, i2 = -1, o2 = true, s2 = 0, h3 = t6.length - 1; h3 >= 0; --h3) { + var a2 = t6.charCodeAt(h3); + if (47 !== a2) -1 === i2 && (o2 = false, i2 = h3 + 1), 46 === a2 ? -1 === r4 ? r4 = h3 : 1 !== s2 && (s2 = 1) : -1 !== r4 && (s2 = -1); + else if (!o2) { + n4 = h3 + 1; + break; + } } - return { - x: center4.x + radius2 * Math.cos(theta), - y: center4.y + radius2 * Math.sin(theta) - }; - } else { - var depthSize = depths[depth].length; - var distanceX = Math.max( - // only one depth - depthSize === 1 ? 0 : ( - // inside a bounding box, no need for left & right padding - hasBoundingBox ? (bb.w - options3.padding * 2 - aveNodeSize.w) / ((options3.grid ? maxDepthSize : depthSize) - 1) : (bb.w - options3.padding * 2 - aveNodeSize.w) / ((options3.grid ? maxDepthSize : depthSize) + 1) - ), - minDistance - ); - var epos = { - x: center4.x + (index + 1 - (depthSize + 1) / 2) * distanceX, - y: center4.y + (depth + 1 - (depthsLen + 1) / 2) * distanceY - }; - return epos; - } - }, "getPosition"); - eles.nodes().layoutPositions(this, options3, getPosition); - return this; - }; - defaults$6 = { - fit: true, - // whether to fit the viewport to the graph - padding: 30, - // the padding on fit - boundingBox: void 0, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox and radius if not enough space - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - spacingFactor: void 0, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - radius: void 0, - // the radius of the circle - startAngle: 3 / 2 * Math.PI, - // where nodes start in radians - sweep: void 0, - // how many radians should be between the first and last node (defaults to full circle) - clockwise: true, - // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) - sort: void 0, - // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: void 0, - // easing of animation if enabled - animateFilter: /* @__PURE__ */ __name(function animateFilter2(node2, i2) { - return true; - }, "animateFilter"), - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: void 0, - // callback on layoutready - stop: void 0, - // callback on layoutstop - transform: /* @__PURE__ */ __name(function transform3(node2, position5) { - return position5; - }, "transform") - // transform a given node position. Useful for changing flow direction in discrete layouts - }; - __name(CircleLayout, "CircleLayout"); - CircleLayout.prototype.run = function() { - var params = this.options; - var options3 = params; - var cy = params.cy; - var eles = options3.eles; - var clockwise = options3.counterclockwise !== void 0 ? !options3.counterclockwise : options3.clockwise; - var nodes6 = eles.nodes().not(":parent"); - if (options3.sort) { - nodes6 = nodes6.sort(options3.sort); - } - var bb = makeBoundingBox(options3.boundingBox ? options3.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - var center4 = { - x: bb.x1 + bb.w / 2, - y: bb.y1 + bb.h / 2 - }; - var sweep = options3.sweep === void 0 ? 2 * Math.PI - 2 * Math.PI / nodes6.length : options3.sweep; - var dTheta = sweep / Math.max(1, nodes6.length - 1); - var r2; - var minDistance = 0; - for (var i2 = 0; i2 < nodes6.length; i2++) { - var n2 = nodes6[i2]; - var nbb = n2.layoutDimensions(options3); - var w3 = nbb.w; - var h2 = nbb.h; - minDistance = Math.max(minDistance, w3, h2); - } - if (number$1(options3.radius)) { - r2 = options3.radius; - } else if (nodes6.length <= 1) { - r2 = 0; - } else { - r2 = Math.min(bb.h, bb.w) / 2 - minDistance; - } - if (nodes6.length > 1 && options3.avoidOverlap) { - minDistance *= 1.75; - var dcos = Math.cos(dTheta) - Math.cos(0); - var dsin = Math.sin(dTheta) - Math.sin(0); - var rMin = Math.sqrt(minDistance * minDistance / (dcos * dcos + dsin * dsin)); - r2 = Math.max(rMin, r2); - } - var getPos = /* @__PURE__ */ __name(function getPos2(ele, i3) { - var theta = options3.startAngle + i3 * dTheta * (clockwise ? 1 : -1); - var rx = r2 * Math.cos(theta); - var ry = r2 * Math.sin(theta); - var pos = { - x: center4.x + rx, - y: center4.y + ry - }; - return pos; - }, "getPos"); - eles.nodes().layoutPositions(this, options3, getPos); - return this; - }; - defaults$5 = { - fit: true, - // whether to fit the viewport to the graph - padding: 30, - // the padding on fit - startAngle: 3 / 2 * Math.PI, - // where nodes start in radians - sweep: void 0, - // how many radians should be between the first and last node (defaults to full circle) - clockwise: true, - // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) - equidistant: false, - // whether levels have an equal radial distance betwen them, may cause bounding box overflow - minNodeSpacing: 10, - // min spacing between outside of nodes (used for radius adjustment) - boundingBox: void 0, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox if not enough space - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - height: void 0, - // height of layout area (overrides container height) - width: void 0, - // width of layout area (overrides container width) - spacingFactor: void 0, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - concentric: /* @__PURE__ */ __name(function concentric(node2) { - return node2.degree(); - }, "concentric"), - levelWidth: /* @__PURE__ */ __name(function levelWidth(nodes6) { - return nodes6.maxDegree() / 4; - }, "levelWidth"), - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: void 0, - // easing of animation if enabled - animateFilter: /* @__PURE__ */ __name(function animateFilter3(node2, i2) { - return true; - }, "animateFilter"), - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: void 0, - // callback on layoutready - stop: void 0, - // callback on layoutstop - transform: /* @__PURE__ */ __name(function transform4(node2, position5) { - return position5; - }, "transform") - // transform a given node position. Useful for changing flow direction in discrete layouts - }; - __name(ConcentricLayout, "ConcentricLayout"); - ConcentricLayout.prototype.run = function() { - var params = this.options; - var options3 = params; - var clockwise = options3.counterclockwise !== void 0 ? !options3.counterclockwise : options3.clockwise; - var cy = params.cy; - var eles = options3.eles; - var nodes6 = eles.nodes().not(":parent"); - var bb = makeBoundingBox(options3.boundingBox ? options3.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - var center4 = { - x: bb.x1 + bb.w / 2, - y: bb.y1 + bb.h / 2 - }; - var nodeValues = []; - var maxNodeSize = 0; - for (var i2 = 0; i2 < nodes6.length; i2++) { - var node2 = nodes6[i2]; - var value2 = void 0; - value2 = options3.concentric(node2); - nodeValues.push({ - value: value2, - node: node2 - }); - node2._private.scratch.concentric = value2; - } - nodes6.updateStyle(); - for (var _i = 0; _i < nodes6.length; _i++) { - var _node = nodes6[_i]; - var nbb = _node.layoutDimensions(options3); - maxNodeSize = Math.max(maxNodeSize, nbb.w, nbb.h); - } - nodeValues.sort(function(a2, b2) { - return b2.value - a2.value; - }); - var levelWidth2 = options3.levelWidth(nodes6); - var levels = [[]]; - var currentLevel = levels[0]; - for (var _i2 = 0; _i2 < nodeValues.length; _i2++) { - var val = nodeValues[_i2]; - if (currentLevel.length > 0) { - var diff2 = Math.abs(currentLevel[0].value - val.value); - if (diff2 >= levelWidth2) { - currentLevel = []; - levels.push(currentLevel); + return -1 === r4 || -1 === i2 || 0 === s2 || 1 === s2 && r4 === i2 - 1 && r4 === n4 + 1 ? "" : t6.slice(r4, i2); + }, "extname"), format: /* @__PURE__ */ __name(function(t6) { + if (null === t6 || "object" != typeof t6) throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof t6); + return (function(t7, e6) { + var r4 = e6.dir || e6.root, n4 = e6.base || (e6.name || "") + (e6.ext || ""); + return r4 ? r4 === e6.root ? r4 + n4 : r4 + "/" + n4 : n4; + })(0, t6); + }, "format"), parse: /* @__PURE__ */ __name(function(t6) { + e4(t6); + var r4 = { root: "", dir: "", base: "", ext: "", name: "" }; + if (0 === t6.length) return r4; + var n4, i2 = t6.charCodeAt(0), o2 = 47 === i2; + o2 ? (r4.root = "/", n4 = 1) : n4 = 0; + for (var s2 = -1, h3 = 0, a2 = -1, c3 = true, f2 = t6.length - 1, u2 = 0; f2 >= n4; --f2) if (47 !== (i2 = t6.charCodeAt(f2))) -1 === a2 && (c3 = false, a2 = f2 + 1), 46 === i2 ? -1 === s2 ? s2 = f2 : 1 !== u2 && (u2 = 1) : -1 !== s2 && (u2 = -1); + else if (!c3) { + h3 = f2 + 1; + break; } - } - currentLevel.push(val); - } - var minDist = maxNodeSize + options3.minNodeSpacing; - if (!options3.avoidOverlap) { - var firstLvlHasMulti = levels.length > 0 && levels[0].length > 1; - var maxR = Math.min(bb.w, bb.h) / 2 - minDist; - var rStep = maxR / (levels.length + firstLvlHasMulti ? 1 : 0); - minDist = Math.min(minDist, rStep); - } - var r2 = 0; - for (var _i3 = 0; _i3 < levels.length; _i3++) { - var level = levels[_i3]; - var sweep = options3.sweep === void 0 ? 2 * Math.PI - 2 * Math.PI / level.length : options3.sweep; - var dTheta = level.dTheta = sweep / Math.max(1, level.length - 1); - if (level.length > 1 && options3.avoidOverlap) { - var dcos = Math.cos(dTheta) - Math.cos(0); - var dsin = Math.sin(dTheta) - Math.sin(0); - var rMin = Math.sqrt(minDist * minDist / (dcos * dcos + dsin * dsin)); - r2 = Math.max(rMin, r2); - } - level.r = r2; - r2 += minDist; + return -1 === s2 || -1 === a2 || 0 === u2 || 1 === u2 && s2 === a2 - 1 && s2 === h3 + 1 ? -1 !== a2 && (r4.base = r4.name = 0 === h3 && o2 ? t6.slice(1, a2) : t6.slice(h3, a2)) : (0 === h3 && o2 ? (r4.name = t6.slice(1, s2), r4.base = t6.slice(1, a2)) : (r4.name = t6.slice(h3, s2), r4.base = t6.slice(h3, a2)), r4.ext = t6.slice(s2, a2)), h3 > 0 ? r4.dir = t6.slice(0, h3 - 1) : o2 && (r4.dir = "/"), r4; + }, "parse"), sep: "/", delimiter: ":", win32: null, posix: null }; + n3.posix = n3, t5.exports = n3; + } }, e3 = {}; + function r2(n3) { + var i2 = e3[n3]; + if (void 0 !== i2) return i2.exports; + var o2 = e3[n3] = { exports: {} }; + return t4[n3](o2, o2.exports, r2), o2.exports; } - if (options3.equidistant) { - var rDeltaMax = 0; - var _r = 0; - for (var _i4 = 0; _i4 < levels.length; _i4++) { - var _level = levels[_i4]; - var rDelta = _level.r - _r; - rDeltaMax = Math.max(rDeltaMax, rDelta); + __name(r2, "r"); + r2.d = (t5, e4) => { + for (var n3 in e4) r2.o(e4, n3) && !r2.o(t5, n3) && Object.defineProperty(t5, n3, { enumerable: true, get: e4[n3] }); + }, r2.o = (t5, e4) => Object.prototype.hasOwnProperty.call(t5, e4), r2.r = (t5) => { + "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t5, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t5, "__esModule", { value: true }); + }; + var n2 = {}; + (() => { + let t5; + if (r2.r(n2), r2.d(n2, { URI: /* @__PURE__ */ __name(() => f2, "URI"), Utils: /* @__PURE__ */ __name(() => P3, "Utils") }), "object" == typeof process) t5 = "win32" === process.platform; + else if ("object" == typeof navigator) { + let e6 = navigator.userAgent; + t5 = e6.indexOf("Windows") >= 0; } - _r = 0; - for (var _i5 = 0; _i5 < levels.length; _i5++) { - var _level2 = levels[_i5]; - if (_i5 === 0) { - _r = _level2.r; + const e4 = /^\w[\w\d+.-]*$/, i2 = /^\//, o2 = /^\/\//; + function s2(t6, r3) { + if (!t6.scheme && r3) throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${t6.authority}", path: "${t6.path}", query: "${t6.query}", fragment: "${t6.fragment}"}`); + if (t6.scheme && !e4.test(t6.scheme)) throw new Error("[UriError]: Scheme contains illegal characters."); + if (t6.path) { + if (t6.authority) { + if (!i2.test(t6.path)) throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character'); + } else if (o2.test(t6.path)) throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")'); } - _level2.r = _r; - _r += rDeltaMax; } - } - var pos = {}; - for (var _i6 = 0; _i6 < levels.length; _i6++) { - var _level3 = levels[_i6]; - var _dTheta = _level3.dTheta; - var _r2 = _level3.r; - for (var j2 = 0; j2 < _level3.length; j2++) { - var _val = _level3[j2]; - var theta = options3.startAngle + (clockwise ? 1 : -1) * _dTheta * j2; - var p3 = { - x: center4.x + _r2 * Math.cos(theta), - y: center4.y + _r2 * Math.sin(theta) - }; - pos[_val.node.id()] = p3; + __name(s2, "s"); + const h3 = "", a2 = "/", c3 = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/; + class f2 { + static { + __name(this, "f"); + } + static isUri(t6) { + return t6 instanceof f2 || !!t6 && "string" == typeof t6.authority && "string" == typeof t6.fragment && "string" == typeof t6.path && "string" == typeof t6.query && "string" == typeof t6.scheme && "string" == typeof t6.fsPath && "function" == typeof t6.with && "function" == typeof t6.toString; + } + scheme; + authority; + path; + query; + fragment; + constructor(t6, e6, r3, n3, i3, o3 = false) { + "object" == typeof t6 ? (this.scheme = t6.scheme || h3, this.authority = t6.authority || h3, this.path = t6.path || h3, this.query = t6.query || h3, this.fragment = t6.fragment || h3) : (this.scheme = /* @__PURE__ */ (function(t7, e7) { + return t7 || e7 ? t7 : "file"; + })(t6, o3), this.authority = e6 || h3, this.path = (function(t7, e7) { + switch (t7) { + case "https": + case "http": + case "file": + e7 ? e7[0] !== a2 && (e7 = a2 + e7) : e7 = a2; + } + return e7; + })(this.scheme, r3 || h3), this.query = n3 || h3, this.fragment = i3 || h3, s2(this, o3)); + } + get fsPath() { + return m3(this, false); + } + with(t6) { + if (!t6) return this; + let { scheme: e6, authority: r3, path: n3, query: i3, fragment: o3 } = t6; + return void 0 === e6 ? e6 = this.scheme : null === e6 && (e6 = h3), void 0 === r3 ? r3 = this.authority : null === r3 && (r3 = h3), void 0 === n3 ? n3 = this.path : null === n3 && (n3 = h3), void 0 === i3 ? i3 = this.query : null === i3 && (i3 = h3), void 0 === o3 ? o3 = this.fragment : null === o3 && (o3 = h3), e6 === this.scheme && r3 === this.authority && n3 === this.path && i3 === this.query && o3 === this.fragment ? this : new l4(e6, r3, n3, i3, o3); + } + static parse(t6, e6 = false) { + const r3 = c3.exec(t6); + return r3 ? new l4(r3[2] || h3, C3(r3[4] || h3), C3(r3[5] || h3), C3(r3[7] || h3), C3(r3[9] || h3), e6) : new l4(h3, h3, h3, h3, h3); + } + static file(e6) { + let r3 = h3; + if (t5 && (e6 = e6.replace(/\\/g, a2)), e6[0] === a2 && e6[1] === a2) { + const t6 = e6.indexOf(a2, 2); + -1 === t6 ? (r3 = e6.substring(2), e6 = a2) : (r3 = e6.substring(2, t6), e6 = e6.substring(t6) || a2); + } + return new l4("file", r3, e6, h3, h3); + } + static from(t6) { + const e6 = new l4(t6.scheme, t6.authority, t6.path, t6.query, t6.fragment); + return s2(e6, true), e6; + } + toString(t6 = false) { + return y6(this, t6); + } + toJSON() { + return this; + } + static revive(t6) { + if (t6) { + if (t6 instanceof f2) return t6; + { + const e6 = new l4(t6); + return e6._formatted = t6.external, e6._fsPath = t6._sep === u2 ? t6.fsPath : null, e6; + } + } + return t6; + } } - } - eles.nodes().layoutPositions(this, options3, function(ele) { - var id29 = ele.id(); - return pos[id29]; - }); - return this; - }; - defaults$4 = { - // Called on `layoutready` - ready: /* @__PURE__ */ __name(function ready2() { - }, "ready"), - // Called on `layoutstop` - stop: /* @__PURE__ */ __name(function stop3() { - }, "stop"), - // Whether to animate while running the layout - // true : Animate continuously as the layout is running - // false : Just show the end result - // 'end' : Animate with the end result, from the initial positions to the end positions - animate: true, - // Easing of the animation for animate:'end' - animationEasing: void 0, - // The duration of the animation for animate:'end' - animationDuration: void 0, - // A function that determines whether the node should be animated - // All nodes animated by default on animate enabled - // Non-animated nodes are positioned immediately when the layout starts - animateFilter: /* @__PURE__ */ __name(function animateFilter4(node2, i2) { - return true; - }, "animateFilter"), - // The layout animates only after this many milliseconds for animate:true - // (prevents flashing on fast runs) - animationThreshold: 250, - // Number of iterations between consecutive screen positions update - refresh: 20, - // Whether to fit the network view after when done - fit: true, - // Padding on fit - padding: 30, - // Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - boundingBox: void 0, - // Excludes the label when calculating node bounding boxes for the layout algorithm - nodeDimensionsIncludeLabels: false, - // Randomize the initial positions of the nodes (true) or use existing positions (false) - randomize: false, - // Extra spacing between components in non-compound graphs - componentSpacing: 40, - // Node repulsion (non overlapping) multiplier - nodeRepulsion: /* @__PURE__ */ __name(function nodeRepulsion(node2) { - return 2048; - }, "nodeRepulsion"), - // Node repulsion (overlapping) multiplier - nodeOverlap: 4, - // Ideal edge (non nested) length - idealEdgeLength: /* @__PURE__ */ __name(function idealEdgeLength(edge) { - return 32; - }, "idealEdgeLength"), - // Divisor to compute edge forces - edgeElasticity: /* @__PURE__ */ __name(function edgeElasticity(edge) { - return 32; - }, "edgeElasticity"), - // Nesting factor (multiplier) to compute ideal edge length for nested edges - nestingFactor: 1.2, - // Gravity force (constant) - gravity: 1, - // Maximum number of iterations to perform - numIter: 1e3, - // Initial temperature (maximum node displacement) - initialTemp: 1e3, - // Cooling factor (how the temperature is reduced between consecutive iterations - coolingFactor: 0.99, - // Lower temperature threshold (below this point the layout will end) - minTemp: 1 - }; - __name(CoseLayout, "CoseLayout"); - CoseLayout.prototype.run = function() { - var options3 = this.options; - var cy = options3.cy; - var layout6 = this; - layout6.stopped = false; - if (options3.animate === true || options3.animate === false) { - layout6.emit({ - type: "layoutstart", - layout: layout6 - }); - } - if (true === options3.debug) { - DEBUG = true; - } else { - DEBUG = false; - } - var layoutInfo = createLayoutInfo(cy, layout6, options3); - if (DEBUG) { - printLayoutInfo(layoutInfo); - } - if (options3.randomize) { - randomizePositions(layoutInfo); - } - var startTime = performanceNow(); - var refresh = /* @__PURE__ */ __name(function refresh2() { - refreshPositions(layoutInfo, cy, options3); - if (true === options3.fit) { - cy.fit(options3.padding); + const u2 = t5 ? 1 : void 0; + class l4 extends f2 { + static { + __name(this, "l"); + } + _formatted = null; + _fsPath = null; + get fsPath() { + return this._fsPath || (this._fsPath = m3(this, false)), this._fsPath; + } + toString(t6 = false) { + return t6 ? y6(this, true) : (this._formatted || (this._formatted = y6(this, false)), this._formatted); + } + toJSON() { + const t6 = { $mid: 1 }; + return this._fsPath && (t6.fsPath = this._fsPath, t6._sep = u2), this._formatted && (t6.external = this._formatted), this.path && (t6.path = this.path), this.scheme && (t6.scheme = this.scheme), this.authority && (t6.authority = this.authority), this.query && (t6.query = this.query), this.fragment && (t6.fragment = this.fragment), t6; + } } - }, "refresh"); - var mainLoop = /* @__PURE__ */ __name(function mainLoop2(i3) { - if (layout6.stopped || i3 >= options3.numIter) { - return false; + const g2 = { 58: "%3A", 47: "%2F", 63: "%3F", 35: "%23", 91: "%5B", 93: "%5D", 64: "%40", 33: "%21", 36: "%24", 38: "%26", 39: "%27", 40: "%28", 41: "%29", 42: "%2A", 43: "%2B", 44: "%2C", 59: "%3B", 61: "%3D", 32: "%20" }; + function d3(t6, e6, r3) { + let n3, i3 = -1; + for (let o3 = 0; o3 < t6.length; o3++) { + const s3 = t6.charCodeAt(o3); + if (s3 >= 97 && s3 <= 122 || s3 >= 65 && s3 <= 90 || s3 >= 48 && s3 <= 57 || 45 === s3 || 46 === s3 || 95 === s3 || 126 === s3 || e6 && 47 === s3 || r3 && 91 === s3 || r3 && 93 === s3 || r3 && 58 === s3) -1 !== i3 && (n3 += encodeURIComponent(t6.substring(i3, o3)), i3 = -1), void 0 !== n3 && (n3 += t6.charAt(o3)); + else { + void 0 === n3 && (n3 = t6.substr(0, o3)); + const e7 = g2[s3]; + void 0 !== e7 ? (-1 !== i3 && (n3 += encodeURIComponent(t6.substring(i3, o3)), i3 = -1), n3 += e7) : -1 === i3 && (i3 = o3); + } + } + return -1 !== i3 && (n3 += encodeURIComponent(t6.substring(i3))), void 0 !== n3 ? n3 : t6; } - step(layoutInfo, options3); - layoutInfo.temperature = layoutInfo.temperature * options3.coolingFactor; - if (layoutInfo.temperature < options3.minTemp) { - return false; + __name(d3, "d"); + function p3(t6) { + let e6; + for (let r3 = 0; r3 < t6.length; r3++) { + const n3 = t6.charCodeAt(r3); + 35 === n3 || 63 === n3 ? (void 0 === e6 && (e6 = t6.substr(0, r3)), e6 += g2[n3]) : void 0 !== e6 && (e6 += t6[r3]); + } + return void 0 !== e6 ? e6 : t6; } - return true; - }, "mainLoop"); - var done = /* @__PURE__ */ __name(function done2() { - if (options3.animate === true || options3.animate === false) { - refresh(); - layout6.one("layoutstop", options3.stop); - layout6.emit({ - type: "layoutstop", - layout: layout6 - }); - } else { - var nodes6 = options3.eles.nodes(); - var getScaledPos = getScaleInBoundsFn(layoutInfo, options3, nodes6); - nodes6.layoutPositions(layout6, options3, getScaledPos); + __name(p3, "p"); + function m3(e6, r3) { + let n3; + return n3 = e6.authority && e6.path.length > 1 && "file" === e6.scheme ? `//${e6.authority}${e6.path}` : 47 === e6.path.charCodeAt(0) && (e6.path.charCodeAt(1) >= 65 && e6.path.charCodeAt(1) <= 90 || e6.path.charCodeAt(1) >= 97 && e6.path.charCodeAt(1) <= 122) && 58 === e6.path.charCodeAt(2) ? r3 ? e6.path.substr(1) : e6.path[1].toLowerCase() + e6.path.substr(2) : e6.path, t5 && (n3 = n3.replace(/\//g, "\\")), n3; } - }, "done"); - var i2 = 0; - var loopRet = true; - if (options3.animate === true) { - var frame2 = /* @__PURE__ */ __name(function frame3() { - var f2 = 0; - while (loopRet && f2 < options3.refresh) { - loopRet = mainLoop(i2); - i2++; - f2++; + __name(m3, "m"); + function y6(t6, e6) { + const r3 = e6 ? p3 : d3; + let n3 = "", { scheme: i3, authority: o3, path: s3, query: h4, fragment: c4 } = t6; + if (i3 && (n3 += i3, n3 += ":"), (o3 || "file" === i3) && (n3 += a2, n3 += a2), o3) { + let t7 = o3.indexOf("@"); + if (-1 !== t7) { + const e7 = o3.substr(0, t7); + o3 = o3.substr(t7 + 1), t7 = e7.lastIndexOf(":"), -1 === t7 ? n3 += r3(e7, false, false) : (n3 += r3(e7.substr(0, t7), false, false), n3 += ":", n3 += r3(e7.substr(t7 + 1), false, true)), n3 += "@"; + } + o3 = o3.toLowerCase(), t7 = o3.lastIndexOf(":"), -1 === t7 ? n3 += r3(o3, false, true) : (n3 += r3(o3.substr(0, t7), false, true), n3 += o3.substr(t7)); } - if (!loopRet) { - separateComponents(layoutInfo, options3); - done(); - } else { - var now4 = performanceNow(); - if (now4 - startTime >= options3.animationThreshold) { - refresh(); + if (s3) { + if (s3.length >= 3 && 47 === s3.charCodeAt(0) && 58 === s3.charCodeAt(2)) { + const t7 = s3.charCodeAt(1); + t7 >= 65 && t7 <= 90 && (s3 = `/${String.fromCharCode(t7 + 32)}:${s3.substr(3)}`); + } else if (s3.length >= 2 && 58 === s3.charCodeAt(1)) { + const t7 = s3.charCodeAt(0); + t7 >= 65 && t7 <= 90 && (s3 = `${String.fromCharCode(t7 + 32)}:${s3.substr(2)}`); } - requestAnimationFrame2(frame3); + n3 += r3(s3, true, false); } - }, "frame"); - frame2(); - } else { - while (loopRet) { - loopRet = mainLoop(i2); - i2++; + return h4 && (n3 += "?", n3 += r3(h4, false, false)), c4 && (n3 += "#", n3 += e6 ? c4 : d3(c4, false, false)), n3; } - separateComponents(layoutInfo, options3); - done(); - } - return this; - }; - CoseLayout.prototype.stop = function() { - this.stopped = true; - if (this.thread) { - this.thread.stop(); - } - this.emit("layoutstop"); - return this; - }; - CoseLayout.prototype.destroy = function() { - if (this.thread) { - this.thread.stop(); - } - return this; - }; - createLayoutInfo = /* @__PURE__ */ __name(function createLayoutInfo2(cy, layout6, options3) { - var edges3 = options3.eles.edges(); - var nodes6 = options3.eles.nodes(); - var bb = makeBoundingBox(options3.boundingBox ? options3.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - var layoutInfo = { - isCompound: cy.hasCompoundNodes(), - layoutNodes: [], - idToIndex: {}, - nodeSize: nodes6.size(), - graphSet: [], - indexToGraph: [], - layoutEdges: [], - edgeSize: edges3.size(), - temperature: options3.initialTemp, - clientWidth: bb.w, - clientHeight: bb.h, - boundingBox: bb - }; - var components3 = options3.eles.components(); - var id2cmptId = {}; - for (var i2 = 0; i2 < components3.length; i2++) { - var component2 = components3[i2]; - for (var j2 = 0; j2 < component2.length; j2++) { - var node2 = component2[j2]; - id2cmptId[node2.id()] = i2; + __name(y6, "y"); + function v3(t6) { + try { + return decodeURIComponent(t6); + } catch { + return t6.length > 3 ? t6.substr(0, 3) + v3(t6.substr(3)) : t6; + } } - } - for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { - var n2 = nodes6[i2]; - var nbb = n2.layoutDimensions(options3); - var tempNode = {}; - tempNode.isLocked = n2.locked(); - tempNode.id = n2.data("id"); - tempNode.parentId = n2.data("parent"); - tempNode.cmptId = id2cmptId[n2.id()]; - tempNode.children = []; - tempNode.positionX = n2.position("x"); - tempNode.positionY = n2.position("y"); - tempNode.offsetX = 0; - tempNode.offsetY = 0; - tempNode.height = nbb.w; - tempNode.width = nbb.h; - tempNode.maxX = tempNode.positionX + tempNode.width / 2; - tempNode.minX = tempNode.positionX - tempNode.width / 2; - tempNode.maxY = tempNode.positionY + tempNode.height / 2; - tempNode.minY = tempNode.positionY - tempNode.height / 2; - tempNode.padLeft = parseFloat(n2.style("padding")); - tempNode.padRight = parseFloat(n2.style("padding")); - tempNode.padTop = parseFloat(n2.style("padding")); - tempNode.padBottom = parseFloat(n2.style("padding")); - tempNode.nodeRepulsion = fn$6(options3.nodeRepulsion) ? options3.nodeRepulsion(n2) : options3.nodeRepulsion; - layoutInfo.layoutNodes.push(tempNode); - layoutInfo.idToIndex[tempNode.id] = i2; - } - var queue = []; - var start3 = 0; - var end2 = -1; - var tempGraph = []; - for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { - var n2 = layoutInfo.layoutNodes[i2]; - var p_id = n2.parentId; - if (null != p_id) { - layoutInfo.layoutNodes[layoutInfo.idToIndex[p_id]].children.push(n2.id); - } else { - queue[++end2] = n2.id; - tempGraph.push(n2.id); + __name(v3, "v"); + const b3 = /(%[0-9A-Za-z][0-9A-Za-z])+/g; + function C3(t6) { + return t6.match(b3) ? t6.replace(b3, ((t7) => v3(t7))) : t6; } + __name(C3, "C"); + var A2 = r2(470); + const w4 = A2.posix || A2, x5 = "/"; + var P3; + !(function(t6) { + t6.joinPath = function(t7, ...e6) { + return t7.with({ path: w4.join(t7.path, ...e6) }); + }, t6.resolvePath = function(t7, ...e6) { + let r3 = t7.path, n3 = false; + r3[0] !== x5 && (r3 = x5 + r3, n3 = true); + let i3 = w4.resolve(r3, ...e6); + return n3 && i3[0] === x5 && !t7.authority && (i3 = i3.substring(1)), t7.with({ path: i3 }); + }, t6.dirname = function(t7) { + if (0 === t7.path.length || t7.path === x5) return t7; + let e6 = w4.dirname(t7.path); + return 1 === e6.length && 46 === e6.charCodeAt(0) && (e6 = ""), t7.with({ path: e6 }); + }, t6.basename = function(t7) { + return w4.basename(t7.path); + }, t6.extname = function(t7) { + return w4.extname(t7.path); + }; + })(P3 || (P3 = {})); + })(), LIB = n2; + })(); + ({ URI: URI2, Utils: Utils2 } = LIB); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/uri-utils.js + var UriUtils; + var init_uri_utils = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/uri-utils.js"() { + "use strict"; + init_esm2(); + (function(UriUtils2) { + UriUtils2.basename = Utils2.basename; + UriUtils2.dirname = Utils2.dirname; + UriUtils2.extname = Utils2.extname; + UriUtils2.joinPath = Utils2.joinPath; + UriUtils2.resolvePath = Utils2.resolvePath; + function equals(a2, b3) { + return (a2 === null || a2 === void 0 ? void 0 : a2.toString()) === (b3 === null || b3 === void 0 ? void 0 : b3.toString()); } - layoutInfo.graphSet.push(tempGraph); - while (start3 <= end2) { - var node_id = queue[start3++]; - var node_ix = layoutInfo.idToIndex[node_id]; - var node2 = layoutInfo.layoutNodes[node_ix]; - var children2 = node2.children; - if (children2.length > 0) { - layoutInfo.graphSet.push(children2); - for (var i2 = 0; i2 < children2.length; i2++) { - queue[++end2] = children2[i2]; + __name(equals, "equals"); + UriUtils2.equals = equals; + function relative(from2, to) { + const fromPath = typeof from2 === "string" ? from2 : from2.path; + const toPath2 = typeof to === "string" ? to : to.path; + const fromParts = fromPath.split("/").filter((e3) => e3.length > 0); + const toParts = toPath2.split("/").filter((e3) => e3.length > 0); + let i2 = 0; + for (; i2 < fromParts.length; i2++) { + if (fromParts[i2] !== toParts[i2]) { + break; } } + const backPart = "../".repeat(fromParts.length - i2); + const toPart = toParts.slice(i2).join("/"); + return backPart + toPart; } - for (var i2 = 0; i2 < layoutInfo.graphSet.length; i2++) { - var graph = layoutInfo.graphSet[i2]; - for (var j2 = 0; j2 < graph.length; j2++) { - var index = layoutInfo.idToIndex[graph[j2]]; - layoutInfo.indexToGraph[index] = i2; - } + __name(relative, "relative"); + UriUtils2.relative = relative; + function normalize4(uri) { + return URI2.parse(uri.toString()).toString(); } - for (var i2 = 0; i2 < layoutInfo.edgeSize; i2++) { - var e3 = edges3[i2]; - var tempEdge = {}; - tempEdge.id = e3.data("id"); - tempEdge.sourceId = e3.data("source"); - tempEdge.targetId = e3.data("target"); - var idealLength = fn$6(options3.idealEdgeLength) ? options3.idealEdgeLength(e3) : options3.idealEdgeLength; - var elasticity = fn$6(options3.edgeElasticity) ? options3.edgeElasticity(e3) : options3.edgeElasticity; - var sourceIx = layoutInfo.idToIndex[tempEdge.sourceId]; - var targetIx = layoutInfo.idToIndex[tempEdge.targetId]; - var sourceGraph = layoutInfo.indexToGraph[sourceIx]; - var targetGraph = layoutInfo.indexToGraph[targetIx]; - if (sourceGraph != targetGraph) { - var lca = findLCA(tempEdge.sourceId, tempEdge.targetId, layoutInfo); - var lcaGraph = layoutInfo.graphSet[lca]; - var depth = 0; - var tempNode = layoutInfo.layoutNodes[sourceIx]; - while (-1 === lcaGraph.indexOf(tempNode.id)) { - tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; - depth++; - } - tempNode = layoutInfo.layoutNodes[targetIx]; - while (-1 === lcaGraph.indexOf(tempNode.id)) { - tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; - depth++; - } - idealLength *= depth * options3.nestingFactor; - } - tempEdge.idealLength = idealLength; - tempEdge.elasticity = elasticity; - layoutInfo.layoutEdges.push(tempEdge); + __name(normalize4, "normalize"); + UriUtils2.normalize = normalize4; + })(UriUtils || (UriUtils = {})); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/documents.js + var DocumentState, DefaultLangiumDocumentFactory, DefaultLangiumDocuments; + var init_documents = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/documents.js"() { + "use strict"; + init_main2(); + init_documents(); + init_cancellation(); + init_stream(); + init_uri_utils(); + (function(DocumentState2) { + DocumentState2[DocumentState2["Changed"] = 0] = "Changed"; + DocumentState2[DocumentState2["Parsed"] = 1] = "Parsed"; + DocumentState2[DocumentState2["IndexedContent"] = 2] = "IndexedContent"; + DocumentState2[DocumentState2["ComputedScopes"] = 3] = "ComputedScopes"; + DocumentState2[DocumentState2["Linked"] = 4] = "Linked"; + DocumentState2[DocumentState2["IndexedReferences"] = 5] = "IndexedReferences"; + DocumentState2[DocumentState2["Validated"] = 6] = "Validated"; + })(DocumentState || (DocumentState = {})); + DefaultLangiumDocumentFactory = class { + static { + __name(this, "DefaultLangiumDocumentFactory"); } - return layoutInfo; - }, "createLayoutInfo"); - findLCA = /* @__PURE__ */ __name(function findLCA2(node1, node2, layoutInfo) { - var res = findLCA_aux(node1, node2, 0, layoutInfo); - if (2 > res.count) { - return 0; - } else { - return res.graph; + constructor(services) { + this.serviceRegistry = services.ServiceRegistry; + this.textDocuments = services.workspace.TextDocuments; + this.fileSystemProvider = services.workspace.FileSystemProvider; } - }, "findLCA"); - findLCA_aux = /* @__PURE__ */ __name(function findLCA_aux2(node1, node2, graphIx, layoutInfo) { - var graph = layoutInfo.graphSet[graphIx]; - if (-1 < graph.indexOf(node1) && -1 < graph.indexOf(node2)) { - return { - count: 2, - graph: graphIx - }; + async fromUri(uri, cancellationToken = cancellation_exports.CancellationToken.None) { + const content = await this.fileSystemProvider.readFile(uri); + return this.createAsync(uri, content, cancellationToken); } - var c3 = 0; - for (var i2 = 0; i2 < graph.length; i2++) { - var nodeId = graph[i2]; - var nodeIx = layoutInfo.idToIndex[nodeId]; - var children2 = layoutInfo.layoutNodes[nodeIx].children; - if (0 === children2.length) { - continue; + fromTextDocument(textDocument, uri, token2) { + uri = uri !== null && uri !== void 0 ? uri : URI2.parse(textDocument.uri); + if (cancellation_exports.CancellationToken.is(token2)) { + return this.createAsync(uri, textDocument, token2); + } else { + return this.create(uri, textDocument, token2); } - var childGraphIx = layoutInfo.indexToGraph[layoutInfo.idToIndex[children2[0]]]; - var result = findLCA_aux2(node1, node2, childGraphIx, layoutInfo); - if (0 === result.count) { - continue; - } else if (1 === result.count) { - c3++; - if (2 === c3) { - break; - } + } + fromString(text4, uri, token2) { + if (cancellation_exports.CancellationToken.is(token2)) { + return this.createAsync(uri, text4, token2); } else { - return result; + return this.create(uri, text4, token2); } } - return { - count: c3, - graph: graphIx - }; - }, "findLCA_aux"); - randomizePositions = /* @__PURE__ */ __name(function randomizePositions2(layoutInfo, cy) { - var width3 = layoutInfo.clientWidth; - var height2 = layoutInfo.clientHeight; - for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { - var n2 = layoutInfo.layoutNodes[i2]; - if (0 === n2.children.length && !n2.isLocked) { - n2.positionX = Math.random() * width3; - n2.positionY = Math.random() * height2; + fromModel(model, uri) { + return this.create(uri, { $model: model }); + } + create(uri, content, options2) { + if (typeof content === "string") { + const parseResult = this.parse(uri, content, options2); + return this.createLangiumDocument(parseResult, uri, void 0, content); + } else if ("$model" in content) { + const parseResult = { value: content.$model, parserErrors: [], lexerErrors: [] }; + return this.createLangiumDocument(parseResult, uri); + } else { + const parseResult = this.parse(uri, content.getText(), options2); + return this.createLangiumDocument(parseResult, uri, content); } } - }, "randomizePositions"); - getScaleInBoundsFn = /* @__PURE__ */ __name(function getScaleInBoundsFn2(layoutInfo, options3, nodes6) { - var bb = layoutInfo.boundingBox; - var coseBB = { - x1: Infinity, - x2: -Infinity, - y1: Infinity, - y2: -Infinity - }; - if (options3.boundingBox) { - nodes6.forEach(function(node2) { - var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[node2.data("id")]]; - coseBB.x1 = Math.min(coseBB.x1, lnode.positionX); - coseBB.x2 = Math.max(coseBB.x2, lnode.positionX); - coseBB.y1 = Math.min(coseBB.y1, lnode.positionY); - coseBB.y2 = Math.max(coseBB.y2, lnode.positionY); - }); - coseBB.w = coseBB.x2 - coseBB.x1; - coseBB.h = coseBB.y2 - coseBB.y1; + async createAsync(uri, content, cancelToken) { + if (typeof content === "string") { + const parseResult = await this.parseAsync(uri, content, cancelToken); + return this.createLangiumDocument(parseResult, uri, void 0, content); + } else { + const parseResult = await this.parseAsync(uri, content.getText(), cancelToken); + return this.createLangiumDocument(parseResult, uri, content); + } } - return function(ele, i2) { - var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[ele.data("id")]]; - if (options3.boundingBox) { - var pctX = (lnode.positionX - coseBB.x1) / coseBB.w; - var pctY = (lnode.positionY - coseBB.y1) / coseBB.h; - return { - x: bb.x1 + pctX * bb.w, - y: bb.y1 + pctY * bb.h + /** + * Create a LangiumDocument from a given parse result. + * + * A TextDocument is created on demand if it is not provided as argument here. Usually this + * should not be necessary because the main purpose of the TextDocument is to convert between + * text ranges and offsets, which is done solely in LSP request handling. + * + * With the introduction of {@link update} below this method is supposed to be mainly called + * during workspace initialization and on addition/recognition of new files, while changes in + * existing documents are processed via {@link update}. + */ + createLangiumDocument(parseResult, uri, textDocument, text4) { + let document2; + if (textDocument) { + document2 = { + parseResult, + uri, + state: DocumentState.Parsed, + references: [], + textDocument }; } else { - return { - x: lnode.positionX, - y: lnode.positionY + const textDocumentGetter = this.createTextDocumentGetter(uri, text4); + document2 = { + parseResult, + uri, + state: DocumentState.Parsed, + references: [], + get textDocument() { + return textDocumentGetter(); + } }; } - }; - }, "getScaleInBoundsFn"); - refreshPositions = /* @__PURE__ */ __name(function refreshPositions2(layoutInfo, cy, options3) { - var layout6 = options3.layout; - var nodes6 = options3.eles.nodes(); - var getScaledPos = getScaleInBoundsFn(layoutInfo, options3, nodes6); - nodes6.positions(getScaledPos); - if (true !== layoutInfo.ready) { - layoutInfo.ready = true; - layout6.one("layoutready", options3.ready); - layout6.emit({ - type: "layoutready", - layout: this - }); + parseResult.value.$document = document2; + return document2; } - }, "refreshPositions"); - step = /* @__PURE__ */ __name(function step2(layoutInfo, options3, _step) { - calculateNodeForces(layoutInfo, options3); - calculateEdgeForces(layoutInfo); - calculateGravityForces(layoutInfo, options3); - propagateForces(layoutInfo); - updatePositions(layoutInfo); - }, "step"); - calculateNodeForces = /* @__PURE__ */ __name(function calculateNodeForces2(layoutInfo, options3) { - for (var i2 = 0; i2 < layoutInfo.graphSet.length; i2++) { - var graph = layoutInfo.graphSet[i2]; - var numNodes = graph.length; - for (var j2 = 0; j2 < numNodes; j2++) { - var node1 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j2]]]; - for (var k2 = j2 + 1; k2 < numNodes; k2++) { - var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[k2]]]; - nodeRepulsion2(node1, node2, layoutInfo, options3); - } + async update(document2, cancellationToken) { + var _a, _b; + const oldText = (_a = document2.parseResult.value.$cstNode) === null || _a === void 0 ? void 0 : _a.root.fullText; + const textDocument = (_b = this.textDocuments) === null || _b === void 0 ? void 0 : _b.get(document2.uri.toString()); + const text4 = textDocument ? textDocument.getText() : await this.fileSystemProvider.readFile(document2.uri); + if (textDocument) { + Object.defineProperty(document2, "textDocument", { + value: textDocument + }); + } else { + const textDocumentGetter = this.createTextDocumentGetter(document2.uri, text4); + Object.defineProperty(document2, "textDocument", { + get: textDocumentGetter + }); + } + if (oldText !== text4) { + document2.parseResult = await this.parseAsync(document2.uri, text4, cancellationToken); + document2.parseResult.value.$document = document2; } + document2.state = DocumentState.Parsed; + return document2; } - }, "calculateNodeForces"); - randomDistance = /* @__PURE__ */ __name(function randomDistance2(max10) { - return -max10 + 2 * max10 * Math.random(); - }, "randomDistance"); - nodeRepulsion2 = /* @__PURE__ */ __name(function nodeRepulsion3(node1, node2, layoutInfo, options3) { - var cmptId1 = node1.cmptId; - var cmptId2 = node2.cmptId; - if (cmptId1 !== cmptId2 && !layoutInfo.isCompound) { - return; + parse(uri, text4, options2) { + const services = this.serviceRegistry.getServices(uri); + return services.parser.LangiumParser.parse(text4, options2); } - var directionX = node2.positionX - node1.positionX; - var directionY = node2.positionY - node1.positionY; - var maxRandDist = 1; - if (0 === directionX && 0 === directionY) { - directionX = randomDistance(maxRandDist); - directionY = randomDistance(maxRandDist); + parseAsync(uri, text4, cancellationToken) { + const services = this.serviceRegistry.getServices(uri); + return services.parser.AsyncParser.parse(text4, cancellationToken); } - var overlap = nodesOverlap(node1, node2, directionX, directionY); - if (overlap > 0) { - var force = options3.nodeOverlap * overlap; - var distance2 = Math.sqrt(directionX * directionX + directionY * directionY); - var forceX = force * directionX / distance2; - var forceY = force * directionY / distance2; - } else { - var point1 = findClippingPoint(node1, directionX, directionY); - var point22 = findClippingPoint(node2, -1 * directionX, -1 * directionY); - var distanceX = point22.x - point1.x; - var distanceY = point22.y - point1.y; - var distanceSqr = distanceX * distanceX + distanceY * distanceY; - var distance2 = Math.sqrt(distanceSqr); - var force = (node1.nodeRepulsion + node2.nodeRepulsion) / distanceSqr; - var forceX = force * distanceX / distance2; - var forceY = force * distanceY / distance2; + createTextDocumentGetter(uri, text4) { + const serviceRegistry = this.serviceRegistry; + let textDoc = void 0; + return () => { + return textDoc !== null && textDoc !== void 0 ? textDoc : textDoc = TextDocument2.create(uri.toString(), serviceRegistry.getServices(uri).LanguageMetaData.languageId, 0, text4 !== null && text4 !== void 0 ? text4 : ""); + }; } - if (!node1.isLocked) { - node1.offsetX -= forceX; - node1.offsetY -= forceY; + }; + DefaultLangiumDocuments = class { + static { + __name(this, "DefaultLangiumDocuments"); } - if (!node2.isLocked) { - node2.offsetX += forceX; - node2.offsetY += forceY; + constructor(services) { + this.documentMap = /* @__PURE__ */ new Map(); + this.langiumDocumentFactory = services.workspace.LangiumDocumentFactory; + this.serviceRegistry = services.ServiceRegistry; } - return; - }, "nodeRepulsion"); - nodesOverlap = /* @__PURE__ */ __name(function nodesOverlap2(node1, node2, dX, dY) { - if (dX > 0) { - var overlapX = node1.maxX - node2.minX; - } else { - var overlapX = node2.maxX - node1.minX; + get all() { + return stream(this.documentMap.values()); } - if (dY > 0) { - var overlapY = node1.maxY - node2.minY; - } else { - var overlapY = node2.maxY - node1.minY; + addDocument(document2) { + const uriString = document2.uri.toString(); + if (this.documentMap.has(uriString)) { + throw new Error(`A document with the URI '${uriString}' is already present.`); + } + this.documentMap.set(uriString, document2); } - if (overlapX >= 0 && overlapY >= 0) { - return Math.sqrt(overlapX * overlapX + overlapY * overlapY); - } else { - return 0; + getDocument(uri) { + const uriString = uri.toString(); + return this.documentMap.get(uriString); } - }, "nodesOverlap"); - findClippingPoint = /* @__PURE__ */ __name(function findClippingPoint2(node2, dX, dY) { - var X3 = node2.positionX; - var Y3 = node2.positionY; - var H2 = node2.height || 1; - var W2 = node2.width || 1; - var dirSlope = dY / dX; - var nodeSlope = H2 / W2; - var res = {}; - if (0 === dX && 0 < dY) { - res.x = X3; - res.y = Y3 + H2 / 2; - return res; + async getOrCreateDocument(uri, cancellationToken) { + let document2 = this.getDocument(uri); + if (document2) { + return document2; + } + document2 = await this.langiumDocumentFactory.fromUri(uri, cancellationToken); + this.addDocument(document2); + return document2; } - if (0 === dX && 0 > dY) { - res.x = X3; - res.y = Y3 + H2 / 2; - return res; + createDocument(uri, text4, cancellationToken) { + if (cancellationToken) { + return this.langiumDocumentFactory.fromString(text4, uri, cancellationToken).then((document2) => { + this.addDocument(document2); + return document2; + }); + } else { + const document2 = this.langiumDocumentFactory.fromString(text4, uri); + this.addDocument(document2); + return document2; + } } - if (0 < dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { - res.x = X3 + W2 / 2; - res.y = Y3 + W2 * dY / 2 / dX; - return res; + hasDocument(uri) { + return this.documentMap.has(uri.toString()); } - if (0 > dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { - res.x = X3 - W2 / 2; - res.y = Y3 - W2 * dY / 2 / dX; - return res; + invalidateDocument(uri) { + const uriString = uri.toString(); + const langiumDoc = this.documentMap.get(uriString); + if (langiumDoc) { + const linker = this.serviceRegistry.getServices(uri).references.Linker; + linker.unlink(langiumDoc); + langiumDoc.state = DocumentState.Changed; + langiumDoc.precomputedScopes = void 0; + langiumDoc.diagnostics = void 0; + } + return langiumDoc; } - if (0 < dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { - res.x = X3 + H2 * dX / 2 / dY; - res.y = Y3 + H2 / 2; - return res; + deleteDocument(uri) { + const uriString = uri.toString(); + const langiumDoc = this.documentMap.get(uriString); + if (langiumDoc) { + langiumDoc.state = DocumentState.Changed; + this.documentMap.delete(uriString); + } + return langiumDoc; } - if (0 > dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { - res.x = X3 - H2 * dX / 2 / dY; - res.y = Y3 - H2 / 2; - return res; + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/linker.js + var ref_resolving, DefaultLinker; + var init_linker = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/linker.js"() { + "use strict"; + init_cancellation(); + init_syntax_tree(); + init_ast_utils(); + init_promise_utils(); + init_documents(); + ref_resolving = Symbol("ref_resolving"); + DefaultLinker = class { + static { + __name(this, "DefaultLinker"); } - return res; - }, "findClippingPoint"); - calculateEdgeForces = /* @__PURE__ */ __name(function calculateEdgeForces2(layoutInfo, options3) { - for (var i2 = 0; i2 < layoutInfo.edgeSize; i2++) { - var edge = layoutInfo.layoutEdges[i2]; - var sourceIx = layoutInfo.idToIndex[edge.sourceId]; - var source = layoutInfo.layoutNodes[sourceIx]; - var targetIx = layoutInfo.idToIndex[edge.targetId]; - var target = layoutInfo.layoutNodes[targetIx]; - var directionX = target.positionX - source.positionX; - var directionY = target.positionY - source.positionY; - if (0 === directionX && 0 === directionY) { - continue; - } - var point1 = findClippingPoint(source, directionX, directionY); - var point22 = findClippingPoint(target, -1 * directionX, -1 * directionY); - var lx = point22.x - point1.x; - var ly = point22.y - point1.y; - var l2 = Math.sqrt(lx * lx + ly * ly); - var force = Math.pow(edge.idealLength - l2, 2) / edge.elasticity; - if (0 !== l2) { - var forceX = force * lx / l2; - var forceY = force * ly / l2; - } else { - var forceX = 0; - var forceY = 0; + constructor(services) { + this.reflection = services.shared.AstReflection; + this.langiumDocuments = () => services.shared.workspace.LangiumDocuments; + this.scopeProvider = services.references.ScopeProvider; + this.astNodeLocator = services.workspace.AstNodeLocator; + } + async link(document2, cancelToken = cancellation_exports.CancellationToken.None) { + for (const node2 of streamAst(document2.parseResult.value)) { + await interruptAndCheck(cancelToken); + streamReferences(node2).forEach((ref) => this.doLink(ref, document2)); } - if (!source.isLocked) { - source.offsetX += forceX; - source.offsetY += forceY; + } + doLink(refInfo, document2) { + var _a; + const ref = refInfo.reference; + if (ref._ref === void 0) { + ref._ref = ref_resolving; + try { + const description = this.getCandidate(refInfo); + if (isLinkingError(description)) { + ref._ref = description; + } else { + ref._nodeDescription = description; + if (this.langiumDocuments().hasDocument(description.documentUri)) { + const linkedNode = this.loadAstNode(description); + ref._ref = linkedNode !== null && linkedNode !== void 0 ? linkedNode : this.createLinkingError(refInfo, description); + } else { + ref._ref = void 0; + } + } + } catch (err) { + console.error(`An error occurred while resolving reference to '${ref.$refText}':`, err); + const errorMessage = (_a = err.message) !== null && _a !== void 0 ? _a : String(err); + ref._ref = Object.assign(Object.assign({}, refInfo), { message: `An error occurred while resolving reference to '${ref.$refText}': ${errorMessage}` }); + } + document2.references.push(ref); } - if (!target.isLocked) { - target.offsetX -= forceX; - target.offsetY -= forceY; + } + unlink(document2) { + for (const ref of document2.references) { + delete ref._ref; + delete ref._nodeDescription; } + document2.references = []; } - }, "calculateEdgeForces"); - calculateGravityForces = /* @__PURE__ */ __name(function calculateGravityForces2(layoutInfo, options3) { - if (options3.gravity === 0) { - return; + getCandidate(refInfo) { + const scope = this.scopeProvider.getScope(refInfo); + const description = scope.getElement(refInfo.reference.$refText); + return description !== null && description !== void 0 ? description : this.createLinkingError(refInfo); } - var distThreshold = 1; - for (var i2 = 0; i2 < layoutInfo.graphSet.length; i2++) { - var graph = layoutInfo.graphSet[i2]; - var numNodes = graph.length; - if (0 === i2) { - var centerX = layoutInfo.clientHeight / 2; - var centerY = layoutInfo.clientWidth / 2; - } else { - var temp = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[0]]]; - var parent4 = layoutInfo.layoutNodes[layoutInfo.idToIndex[temp.parentId]]; - var centerX = parent4.positionX; - var centerY = parent4.positionY; - } - for (var j2 = 0; j2 < numNodes; j2++) { - var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j2]]]; - if (node2.isLocked) { - continue; - } - var dx = centerX - node2.positionX; - var dy = centerY - node2.positionY; - var d2 = Math.sqrt(dx * dx + dy * dy); - if (d2 > distThreshold) { - var fx = options3.gravity * dx / d2; - var fy = options3.gravity * dy / d2; - node2.offsetX += fx; - node2.offsetY += fy; + buildReference(node2, property2, refNode, refText) { + const linker = this; + const reference = { + $refNode: refNode, + $refText: refText, + get ref() { + var _a; + if (isAstNode(this._ref)) { + return this._ref; + } else if (isAstNodeDescription(this._nodeDescription)) { + const linkedNode = linker.loadAstNode(this._nodeDescription); + this._ref = linkedNode !== null && linkedNode !== void 0 ? linkedNode : linker.createLinkingError({ reference, container: node2, property: property2 }, this._nodeDescription); + } else if (this._ref === void 0) { + this._ref = ref_resolving; + const document2 = findRootNode(node2).$document; + const refData = linker.getLinkedNode({ reference, container: node2, property: property2 }); + if (refData.error && document2 && document2.state < DocumentState.ComputedScopes) { + return this._ref = void 0; + } + this._ref = (_a = refData.node) !== null && _a !== void 0 ? _a : refData.error; + this._nodeDescription = refData.descr; + document2 === null || document2 === void 0 ? void 0 : document2.references.push(this); + } else if (this._ref === ref_resolving) { + throw new Error(`Cyclic reference resolution detected: ${linker.astNodeLocator.getAstNodePath(node2)}/${property2} (symbol '${refText}')`); + } + return isAstNode(this._ref) ? this._ref : void 0; + }, + get $nodeDescription() { + return this._nodeDescription; + }, + get error() { + return isLinkingError(this._ref) ? this._ref : void 0; } - } + }; + return reference; } - }, "calculateGravityForces"); - propagateForces = /* @__PURE__ */ __name(function propagateForces2(layoutInfo, options3) { - var queue = []; - var start3 = 0; - var end2 = -1; - queue.push.apply(queue, layoutInfo.graphSet[0]); - end2 += layoutInfo.graphSet[0].length; - while (start3 <= end2) { - var nodeId = queue[start3++]; - var nodeIndex = layoutInfo.idToIndex[nodeId]; - var node2 = layoutInfo.layoutNodes[nodeIndex]; - var children2 = node2.children; - if (0 < children2.length && !node2.isLocked) { - var offX = node2.offsetX; - var offY = node2.offsetY; - for (var i2 = 0; i2 < children2.length; i2++) { - var childNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[children2[i2]]]; - childNode.offsetX += offX; - childNode.offsetY += offY; - queue[++end2] = children2[i2]; + getLinkedNode(refInfo) { + var _a; + try { + const description = this.getCandidate(refInfo); + if (isLinkingError(description)) { + return { error: description }; } - node2.offsetX = 0; - node2.offsetY = 0; + const linkedNode = this.loadAstNode(description); + if (linkedNode) { + return { node: linkedNode, descr: description }; + } else { + return { + descr: description, + error: this.createLinkingError(refInfo, description) + }; + } + } catch (err) { + console.error(`An error occurred while resolving reference to '${refInfo.reference.$refText}':`, err); + const errorMessage = (_a = err.message) !== null && _a !== void 0 ? _a : String(err); + return { + error: Object.assign(Object.assign({}, refInfo), { message: `An error occurred while resolving reference to '${refInfo.reference.$refText}': ${errorMessage}` }) + }; } } - }, "propagateForces"); - updatePositions = /* @__PURE__ */ __name(function updatePositions2(layoutInfo, options3) { - for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { - var n2 = layoutInfo.layoutNodes[i2]; - if (0 < n2.children.length) { - n2.maxX = void 0; - n2.minX = void 0; - n2.maxY = void 0; - n2.minY = void 0; + loadAstNode(nodeDescription) { + if (nodeDescription.node) { + return nodeDescription.node; } - } - for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { - var n2 = layoutInfo.layoutNodes[i2]; - if (0 < n2.children.length || n2.isLocked) { - continue; + const doc = this.langiumDocuments().getDocument(nodeDescription.documentUri); + if (!doc) { + return void 0; } - var tempForce = limitForce(n2.offsetX, n2.offsetY, layoutInfo.temperature); - n2.positionX += tempForce.x; - n2.positionY += tempForce.y; - n2.offsetX = 0; - n2.offsetY = 0; - n2.minX = n2.positionX - n2.width; - n2.maxX = n2.positionX + n2.width; - n2.minY = n2.positionY - n2.height; - n2.maxY = n2.positionY + n2.height; - updateAncestryBoundaries(n2, layoutInfo); + return this.astNodeLocator.getAstNode(doc.parseResult.value, nodeDescription.path); } - for (var i2 = 0; i2 < layoutInfo.nodeSize; i2++) { - var n2 = layoutInfo.layoutNodes[i2]; - if (0 < n2.children.length && !n2.isLocked) { - n2.positionX = (n2.maxX + n2.minX) / 2; - n2.positionY = (n2.maxY + n2.minY) / 2; - n2.width = n2.maxX - n2.minX; - n2.height = n2.maxY - n2.minY; + createLinkingError(refInfo, targetDescription) { + const document2 = findRootNode(refInfo.container).$document; + if (document2 && document2.state < DocumentState.ComputedScopes) { + console.warn(`Attempted reference resolution before document reached ComputedScopes state (${document2.uri}).`); } + const referenceType = this.reflection.getReferenceType(refInfo); + return Object.assign(Object.assign({}, refInfo), { message: `Could not resolve reference to ${referenceType} named '${refInfo.reference.$refText}'.`, targetDescription }); } - }, "updatePositions"); - limitForce = /* @__PURE__ */ __name(function limitForce2(forceX, forceY, max10) { - var force = Math.sqrt(forceX * forceX + forceY * forceY); - if (force > max10) { - var res = { - x: max10 * forceX / force, - y: max10 * forceY / force - }; - } else { - var res = { - x: forceX, - y: forceY - }; - } - return res; - }, "limitForce"); - updateAncestryBoundaries = /* @__PURE__ */ __name(function updateAncestryBoundaries2(node2, layoutInfo) { - var parentId = node2.parentId; - if (null == parentId) { - return; - } - var p3 = layoutInfo.layoutNodes[layoutInfo.idToIndex[parentId]]; - var flag = false; - if (null == p3.maxX || node2.maxX + p3.padRight > p3.maxX) { - p3.maxX = node2.maxX + p3.padRight; - flag = true; - } - if (null == p3.minX || node2.minX - p3.padLeft < p3.minX) { - p3.minX = node2.minX - p3.padLeft; - flag = true; + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/name-provider.js + function isNamed(node2) { + return typeof node2.name === "string"; + } + var DefaultNameProvider; + var init_name_provider = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/name-provider.js"() { + "use strict"; + init_grammar_utils(); + __name(isNamed, "isNamed"); + DefaultNameProvider = class { + static { + __name(this, "DefaultNameProvider"); } - if (null == p3.maxY || node2.maxY + p3.padBottom > p3.maxY) { - p3.maxY = node2.maxY + p3.padBottom; - flag = true; + getName(node2) { + if (isNamed(node2)) { + return node2.name; + } + return void 0; } - if (null == p3.minY || node2.minY - p3.padTop < p3.minY) { - p3.minY = node2.minY - p3.padTop; - flag = true; + getNameNode(node2) { + return findNodeForProperty(node2.$cstNode, "name"); } - if (flag) { - return updateAncestryBoundaries2(p3, layoutInfo); + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/references.js + var DefaultReferences; + var init_references = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/references.js"() { + "use strict"; + init_grammar_utils(); + init_syntax_tree(); + init_ast_utils(); + init_cst_utils(); + init_stream(); + init_uri_utils(); + DefaultReferences = class { + static { + __name(this, "DefaultReferences"); } - return; - }, "updateAncestryBoundaries"); - separateComponents = /* @__PURE__ */ __name(function separateComponents2(layoutInfo, options3) { - var nodes6 = layoutInfo.layoutNodes; - var components3 = []; - for (var i2 = 0; i2 < nodes6.length; i2++) { - var node2 = nodes6[i2]; - var cid = node2.cmptId; - var component2 = components3[cid] = components3[cid] || []; - component2.push(node2); + constructor(services) { + this.nameProvider = services.references.NameProvider; + this.index = services.shared.workspace.IndexManager; + this.nodeLocator = services.workspace.AstNodeLocator; } - var totalA = 0; - for (var i2 = 0; i2 < components3.length; i2++) { - var c3 = components3[i2]; - if (!c3) { - continue; - } - c3.x1 = Infinity; - c3.x2 = -Infinity; - c3.y1 = Infinity; - c3.y2 = -Infinity; - for (var j2 = 0; j2 < c3.length; j2++) { - var n2 = c3[j2]; - c3.x1 = Math.min(c3.x1, n2.positionX - n2.width / 2); - c3.x2 = Math.max(c3.x2, n2.positionX + n2.width / 2); - c3.y1 = Math.min(c3.y1, n2.positionY - n2.height / 2); - c3.y2 = Math.max(c3.y2, n2.positionY + n2.height / 2); + findDeclaration(sourceCstNode) { + if (sourceCstNode) { + const assignment = findAssignment(sourceCstNode); + const nodeElem = sourceCstNode.astNode; + if (assignment && nodeElem) { + const reference = nodeElem[assignment.feature]; + if (isReference(reference)) { + return reference.ref; + } else if (Array.isArray(reference)) { + for (const ref of reference) { + if (isReference(ref) && ref.$refNode && ref.$refNode.offset <= sourceCstNode.offset && ref.$refNode.end >= sourceCstNode.end) { + return ref.ref; + } + } + } + } + if (nodeElem) { + const nameNode = this.nameProvider.getNameNode(nodeElem); + if (nameNode && (nameNode === sourceCstNode || isChildNode(sourceCstNode, nameNode))) { + return nodeElem; + } + } } - c3.w = c3.x2 - c3.x1; - c3.h = c3.y2 - c3.y1; - totalA += c3.w * c3.h; + return void 0; } - components3.sort(function(c1, c22) { - return c22.w * c22.h - c1.w * c1.h; - }); - var x5 = 0; - var y5 = 0; - var usedW = 0; - var rowH = 0; - var maxRowW = Math.sqrt(totalA) * layoutInfo.clientWidth / layoutInfo.clientHeight; - for (var i2 = 0; i2 < components3.length; i2++) { - var c3 = components3[i2]; - if (!c3) { - continue; + findDeclarationNode(sourceCstNode) { + const astNode = this.findDeclaration(sourceCstNode); + if (astNode === null || astNode === void 0 ? void 0 : astNode.$cstNode) { + const targetNode = this.nameProvider.getNameNode(astNode); + return targetNode !== null && targetNode !== void 0 ? targetNode : astNode.$cstNode; } - for (var j2 = 0; j2 < c3.length; j2++) { - var n2 = c3[j2]; - if (!n2.isLocked) { - n2.positionX += x5 - c3.x1; - n2.positionY += y5 - c3.y1; + return void 0; + } + findReferences(targetNode, options2) { + const refs = []; + if (options2.includeDeclaration) { + const ref = this.getReferenceToSelf(targetNode); + if (ref) { + refs.push(ref); } } - x5 += c3.w + options3.componentSpacing; - usedW += c3.w + options3.componentSpacing; - rowH = Math.max(rowH, c3.h); - if (usedW > maxRowW) { - y5 += rowH + options3.componentSpacing; - x5 = 0; - usedW = 0; - rowH = 0; + let indexReferences = this.index.findAllReferences(targetNode, this.nodeLocator.getAstNodePath(targetNode)); + if (options2.documentUri) { + indexReferences = indexReferences.filter((ref) => UriUtils.equals(ref.sourceUri, options2.documentUri)); } + refs.push(...indexReferences); + return stream(refs); } - }, "separateComponents"); - defaults$3 = { - fit: true, - // whether to fit the viewport to the graph - padding: 30, - // padding used on fit - boundingBox: void 0, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox if not enough space - avoidOverlapPadding: 10, - // extra spacing around nodes when avoidOverlap: true - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - spacingFactor: void 0, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - condense: false, - // uses all available space on false, uses minimal space on true - rows: void 0, - // force num of rows in the grid - cols: void 0, - // force num of columns in the grid - position: /* @__PURE__ */ __name(function position3(node2) { - }, "position"), - // returns { row, col } for element - sort: void 0, - // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: void 0, - // easing of animation if enabled - animateFilter: /* @__PURE__ */ __name(function animateFilter5(node2, i2) { - return true; - }, "animateFilter"), - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: void 0, - // callback on layoutready - stop: void 0, - // callback on layoutstop - transform: /* @__PURE__ */ __name(function transform5(node2, position5) { - return position5; - }, "transform") - // transform a given node position. Useful for changing flow direction in discrete layouts - }; - __name(GridLayout, "GridLayout"); - GridLayout.prototype.run = function() { - var params = this.options; - var options3 = params; - var cy = params.cy; - var eles = options3.eles; - var nodes6 = eles.nodes().not(":parent"); - if (options3.sort) { - nodes6 = nodes6.sort(options3.sort); - } - var bb = makeBoundingBox(options3.boundingBox ? options3.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - if (bb.h === 0 || bb.w === 0) { - eles.nodes().layoutPositions(this, options3, function(ele) { + getReferenceToSelf(targetNode) { + const nameNode = this.nameProvider.getNameNode(targetNode); + if (nameNode) { + const doc = getDocument(targetNode); + const path4 = this.nodeLocator.getAstNodePath(targetNode); return { - x: bb.x1, - y: bb.y1 + sourceUri: doc.uri, + sourcePath: path4, + targetUri: doc.uri, + targetPath: path4, + segment: toDocumentSegment(nameNode), + local: true }; - }); - } else { - var cells = nodes6.size(); - var splits = Math.sqrt(cells * bb.h / bb.w); - var rows = Math.round(splits); - var cols = Math.round(bb.w / bb.h * splits); - var small = /* @__PURE__ */ __name(function small2(val) { - if (val == null) { - return Math.min(rows, cols); - } else { - var min9 = Math.min(rows, cols); - if (min9 == rows) { - rows = val; - } else { - cols = val; - } + } + return void 0; + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/collections.js + var MultiMap, BiMap; + var init_collections = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/collections.js"() { + "use strict"; + init_stream(); + MultiMap = class { + static { + __name(this, "MultiMap"); + } + constructor(elements2) { + this.map = /* @__PURE__ */ new Map(); + if (elements2) { + for (const [key, value2] of elements2) { + this.add(key, value2); } - }, "small"); - var large = /* @__PURE__ */ __name(function large2(val) { - if (val == null) { - return Math.max(rows, cols); - } else { - var max10 = Math.max(rows, cols); - if (max10 == rows) { - rows = val; - } else { - cols = val; + } + } + /** + * The total number of values in the multimap. + */ + get size() { + return Reduction.sum(stream(this.map.values()).map((a2) => a2.length)); + } + /** + * Clear all entries in the multimap. + */ + clear() { + this.map.clear(); + } + /** + * Operates differently depending on whether a `value` is given: + * * With a value, this method deletes the specific key / value pair from the multimap. + * * Without a value, all values associated with the given key are deleted. + * + * @returns `true` if a value existed and has been removed, or `false` if the specified + * key / value does not exist. + */ + delete(key, value2) { + if (value2 === void 0) { + return this.map.delete(key); + } else { + const values2 = this.map.get(key); + if (values2) { + const index = values2.indexOf(value2); + if (index >= 0) { + if (values2.length === 1) { + this.map.delete(key); + } else { + values2.splice(index, 1); + } + return true; } } - }, "large"); - var oRows = options3.rows; - var oCols = options3.cols != null ? options3.cols : options3.columns; - if (oRows != null && oCols != null) { - rows = oRows; - cols = oCols; - } else if (oRows != null && oCols == null) { - rows = oRows; - cols = Math.ceil(cells / rows); - } else if (oRows == null && oCols != null) { - cols = oCols; - rows = Math.ceil(cells / cols); - } else if (cols * rows > cells) { - var sm = small(); - var lg = large(); - if ((sm - 1) * lg >= cells) { - small(sm - 1); - } else if ((lg - 1) * sm >= cells) { - large(lg - 1); - } + return false; + } + } + /** + * Returns an array of all values associated with the given key. If no value exists, + * an empty array is returned. + * + * _Note:_ The returned array is assumed not to be modified. Use the `set` method to add a + * value and `delete` to remove a value from the multimap. + */ + get(key) { + var _a; + return (_a = this.map.get(key)) !== null && _a !== void 0 ? _a : []; + } + /** + * Operates differently depending on whether a `value` is given: + * * With a value, this method returns `true` if the specific key / value pair is present in the multimap. + * * Without a value, this method returns `true` if the given key is present in the multimap. + */ + has(key, value2) { + if (value2 === void 0) { + return this.map.has(key); } else { - while (cols * rows < cells) { - var _sm = small(); - var _lg = large(); - if ((_lg + 1) * _sm >= cells) { - large(_lg + 1); - } else { - small(_sm + 1); - } + const values2 = this.map.get(key); + if (values2) { + return values2.indexOf(value2) >= 0; } + return false; } - var cellWidth = bb.w / cols; - var cellHeight = bb.h / rows; - if (options3.condense) { - cellWidth = 0; - cellHeight = 0; + } + /** + * Add the given key / value pair to the multimap. + */ + add(key, value2) { + if (this.map.has(key)) { + this.map.get(key).push(value2); + } else { + this.map.set(key, [value2]); } - if (options3.avoidOverlap) { - for (var i2 = 0; i2 < nodes6.length; i2++) { - var node2 = nodes6[i2]; - var pos = node2._private.position; - if (pos.x == null || pos.y == null) { - pos.x = 0; - pos.y = 0; - } - var nbb = node2.layoutDimensions(options3); - var p3 = options3.avoidOverlapPadding; - var w3 = nbb.w + p3; - var h2 = nbb.h + p3; - cellWidth = Math.max(cellWidth, w3); - cellHeight = Math.max(cellHeight, h2); - } + return this; + } + /** + * Add the given set of key / value pairs to the multimap. + */ + addAll(key, values2) { + if (this.map.has(key)) { + this.map.get(key).push(...values2); + } else { + this.map.set(key, Array.from(values2)); } - var cellUsed = {}; - var used = /* @__PURE__ */ __name(function used2(row2, col2) { - return cellUsed["c-" + row2 + "-" + col2] ? true : false; - }, "used"); - var use2 = /* @__PURE__ */ __name(function use3(row2, col2) { - cellUsed["c-" + row2 + "-" + col2] = true; - }, "use"); - var row = 0; - var col = 0; - var moveToNextCell = /* @__PURE__ */ __name(function moveToNextCell2() { - col++; - if (col >= cols) { - col = 0; - row++; - } - }, "moveToNextCell"); - var id2manPos = {}; - for (var _i = 0; _i < nodes6.length; _i++) { - var _node = nodes6[_i]; - var rcPos = options3.position(_node); - if (rcPos && (rcPos.row !== void 0 || rcPos.col !== void 0)) { - var _pos = { - row: rcPos.row, - col: rcPos.col - }; - if (_pos.col === void 0) { - _pos.col = 0; - while (used(_pos.row, _pos.col)) { - _pos.col++; - } - } else if (_pos.row === void 0) { - _pos.row = 0; - while (used(_pos.row, _pos.col)) { - _pos.row++; - } - } - id2manPos[_node.id()] = _pos; - use2(_pos.row, _pos.col); + return this; + } + /** + * Invokes the given callback function for every key / value pair in the multimap. + */ + forEach(callbackfn) { + this.map.forEach((array4, key) => array4.forEach((value2) => callbackfn(value2, key, this))); + } + /** + * Returns an iterator of key, value pairs for every entry in the map. + */ + [Symbol.iterator]() { + return this.entries().iterator(); + } + /** + * Returns a stream of key, value pairs for every entry in the map. + */ + entries() { + return stream(this.map.entries()).flatMap(([key, array4]) => array4.map((value2) => [key, value2])); + } + /** + * Returns a stream of keys in the map. + */ + keys() { + return stream(this.map.keys()); + } + /** + * Returns a stream of values in the map. + */ + values() { + return stream(this.map.values()).flat(); + } + /** + * Returns a stream of key, value set pairs for every key in the map. + */ + entriesGroupedByKey() { + return stream(this.map.entries()); + } + }; + BiMap = class { + static { + __name(this, "BiMap"); + } + get size() { + return this.map.size; + } + constructor(elements2) { + this.map = /* @__PURE__ */ new Map(); + this.inverse = /* @__PURE__ */ new Map(); + if (elements2) { + for (const [key, value2] of elements2) { + this.set(key, value2); } } - var getPos = /* @__PURE__ */ __name(function getPos2(element3, i3) { - var x5, y5; - if (element3.locked() || element3.isParent()) { - return false; - } - var rcPos2 = id2manPos[element3.id()]; - if (rcPos2) { - x5 = rcPos2.col * cellWidth + cellWidth / 2 + bb.x1; - y5 = rcPos2.row * cellHeight + cellHeight / 2 + bb.y1; - } else { - while (used(row, col)) { - moveToNextCell(); - } - x5 = col * cellWidth + cellWidth / 2 + bb.x1; - y5 = row * cellHeight + cellHeight / 2 + bb.y1; - use2(row, col); - moveToNextCell(); - } - return { - x: x5, - y: y5 - }; - }, "getPos"); - nodes6.layoutPositions(this, options3, getPos); } - return this; - }; - defaults$2 = { - ready: /* @__PURE__ */ __name(function ready3() { - }, "ready"), - // on layoutready - stop: /* @__PURE__ */ __name(function stop4() { - }, "stop") - // on layoutstop - }; - __name(NullLayout, "NullLayout"); - NullLayout.prototype.run = function() { - var options3 = this.options; - var eles = options3.eles; - var layout6 = this; - options3.cy; - layout6.emit("layoutstart"); - eles.nodes().positions(function() { - return { - x: 0, - y: 0 - }; - }); - layout6.one("layoutready", options3.ready); - layout6.emit("layoutready"); - layout6.one("layoutstop", options3.stop); - layout6.emit("layoutstop"); - return this; + clear() { + this.map.clear(); + this.inverse.clear(); + } + set(key, value2) { + this.map.set(key, value2); + this.inverse.set(value2, key); + return this; + } + get(key) { + return this.map.get(key); + } + getKey(value2) { + return this.inverse.get(value2); + } + delete(key) { + const value2 = this.map.get(key); + if (value2 !== void 0) { + this.map.delete(key); + this.inverse.delete(value2); + return true; + } + return false; + } }; - NullLayout.prototype.stop = function() { - return this; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope-computation.js + var DefaultScopeComputation; + var init_scope_computation = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope-computation.js"() { + "use strict"; + init_cancellation(); + init_ast_utils(); + init_collections(); + init_promise_utils(); + DefaultScopeComputation = class { + static { + __name(this, "DefaultScopeComputation"); + } + constructor(services) { + this.nameProvider = services.references.NameProvider; + this.descriptions = services.workspace.AstNodeDescriptionProvider; + } + async computeExports(document2, cancelToken = cancellation_exports.CancellationToken.None) { + return this.computeExportsForNode(document2.parseResult.value, document2, void 0, cancelToken); + } + /** + * Creates {@link AstNodeDescription AstNodeDescriptions} for the given {@link AstNode parentNode} and its children. + * The list of children to be considered is determined by the function parameter {@link children}. + * By default only the direct children of {@link parentNode} are visited, nested nodes are not exported. + * + * @param parentNode AST node to be exported, i.e., of which an {@link AstNodeDescription} shall be added to the returned list. + * @param document The document containing the AST node to be exported. + * @param children A function called with {@link parentNode} as single argument and returning an {@link Iterable} supplying the children to be visited, which must be directly or transitively contained in {@link parentNode}. + * @param cancelToken Indicates when to cancel the current operation. + * @throws `OperationCancelled` if a user action occurs during execution. + * @returns A list of {@link AstNodeDescription AstNodeDescriptions} to be published to index. + */ + async computeExportsForNode(parentNode, document2, children2 = streamContents, cancelToken = cancellation_exports.CancellationToken.None) { + const exports2 = []; + this.exportNode(parentNode, exports2, document2); + for (const node2 of children2(parentNode)) { + await interruptAndCheck(cancelToken); + this.exportNode(node2, exports2, document2); + } + return exports2; + } + /** + * Add a single node to the list of exports if it has a name. Override this method to change how + * symbols are exported, e.g. by modifying their exported name. + */ + exportNode(node2, exports2, document2) { + const name = this.nameProvider.getName(node2); + if (name) { + exports2.push(this.descriptions.createDescription(node2, name, document2)); + } + } + async computeLocalScopes(document2, cancelToken = cancellation_exports.CancellationToken.None) { + const rootNode = document2.parseResult.value; + const scopes = new MultiMap(); + for (const node2 of streamAllContents(rootNode)) { + await interruptAndCheck(cancelToken); + this.processNode(node2, document2, scopes); + } + return scopes; + } + /** + * Process a single node during scopes computation. The default implementation makes the node visible + * in the subtree of its container (if the node has a name). Override this method to change this, + * e.g. by increasing the visibility to a higher level in the AST. + */ + processNode(node2, document2, scopes) { + const container2 = node2.$container; + if (container2) { + const name = this.nameProvider.getName(node2); + if (name) { + scopes.add(container2, this.descriptions.createDescription(node2, name, document2)); + } + } + } }; - defaults$1 = { - positions: void 0, - // map of (node id) => (position obj); or function(node){ return somPos; } - zoom: void 0, - // the zoom level to set (prob want fit = false if set) - pan: void 0, - // the pan level to set (prob want fit = false if set) - fit: true, - // whether to fit to viewport - padding: 30, - // padding on fit - spacingFactor: void 0, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: void 0, - // easing of animation if enabled - animateFilter: /* @__PURE__ */ __name(function animateFilter6(node2, i2) { - return true; - }, "animateFilter"), - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: void 0, - // callback on layoutready - stop: void 0, - // callback on layoutstop - transform: /* @__PURE__ */ __name(function transform6(node2, position5) { - return position5; - }, "transform") - // transform a given node position. Useful for changing flow direction in discrete layouts + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope.js + var StreamScope, MapScope, EMPTY_SCOPE; + var init_scope = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope.js"() { + "use strict"; + init_stream(); + StreamScope = class { + static { + __name(this, "StreamScope"); + } + constructor(elements2, outerScope, options2) { + var _a; + this.elements = elements2; + this.outerScope = outerScope; + this.caseInsensitive = (_a = options2 === null || options2 === void 0 ? void 0 : options2.caseInsensitive) !== null && _a !== void 0 ? _a : false; + } + getAllElements() { + if (this.outerScope) { + return this.elements.concat(this.outerScope.getAllElements()); + } else { + return this.elements; + } + } + getElement(name) { + const local = this.caseInsensitive ? this.elements.find((e3) => e3.name.toLowerCase() === name.toLowerCase()) : this.elements.find((e3) => e3.name === name); + if (local) { + return local; + } + if (this.outerScope) { + return this.outerScope.getElement(name); + } + return void 0; + } }; - __name(PresetLayout, "PresetLayout"); - PresetLayout.prototype.run = function() { - var options3 = this.options; - var eles = options3.eles; - var nodes6 = eles.nodes(); - var posIsFn = fn$6(options3.positions); - function getPosition(node2) { - if (options3.positions == null) { - return copyPosition(node2.position()); + MapScope = class { + static { + __name(this, "MapScope"); + } + constructor(elements2, outerScope, options2) { + var _a; + this.elements = /* @__PURE__ */ new Map(); + this.caseInsensitive = (_a = options2 === null || options2 === void 0 ? void 0 : options2.caseInsensitive) !== null && _a !== void 0 ? _a : false; + for (const element3 of elements2) { + const name = this.caseInsensitive ? element3.name.toLowerCase() : element3.name; + this.elements.set(name, element3); } - if (posIsFn) { - return options3.positions(node2); + this.outerScope = outerScope; + } + getElement(name) { + const localName = this.caseInsensitive ? name.toLowerCase() : name; + const local = this.elements.get(localName); + if (local) { + return local; } - var pos = options3.positions[node2._private.data.id]; - if (pos == null) { - return null; + if (this.outerScope) { + return this.outerScope.getElement(name); } - return pos; + return void 0; } - __name(getPosition, "getPosition"); - nodes6.layoutPositions(this, options3, function(node2, i2) { - var position5 = getPosition(node2); - if (node2.locked() || position5 == null) { - return false; + getAllElements() { + let elementStream = stream(this.elements.values()); + if (this.outerScope) { + elementStream = elementStream.concat(this.outerScope.getAllElements()); } - return position5; - }); - return this; + return elementStream; + } }; - defaults3 = { - fit: true, - // whether to fit to viewport - padding: 30, - // fit padding - boundingBox: void 0, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: void 0, - // easing of animation if enabled - animateFilter: /* @__PURE__ */ __name(function animateFilter7(node2, i2) { - return true; - }, "animateFilter"), - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: void 0, - // callback on layoutready - stop: void 0, - // callback on layoutstop - transform: /* @__PURE__ */ __name(function transform7(node2, position5) { - return position5; - }, "transform") - // transform a given node position. Useful for changing flow direction in discrete layouts + EMPTY_SCOPE = { + getElement() { + return void 0; + }, + getAllElements() { + return EMPTY_STREAM; + } }; - __name(RandomLayout, "RandomLayout"); - RandomLayout.prototype.run = function() { - var options3 = this.options; - var cy = options3.cy; - var eles = options3.eles; - var bb = makeBoundingBox(options3.boundingBox ? options3.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - var getPos = /* @__PURE__ */ __name(function getPos2(node2, i2) { - return { - x: bb.x1 + Math.round(Math.random() * bb.w), - y: bb.y1 + Math.round(Math.random() * bb.h) - }; - }, "getPos"); - eles.nodes().layoutPositions(this, options3, getPos); - return this; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/caching.js + var DisposableCache, SimpleCache, ContextCache, DocumentCache, WorkspaceCache; + var init_caching = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/caching.js"() { + "use strict"; + DisposableCache = class { + static { + __name(this, "DisposableCache"); + } + constructor() { + this.toDispose = []; + this.isDisposed = false; + } + onDispose(disposable) { + this.toDispose.push(disposable); + } + dispose() { + this.throwIfDisposed(); + this.clear(); + this.isDisposed = true; + this.toDispose.forEach((disposable) => disposable.dispose()); + } + throwIfDisposed() { + if (this.isDisposed) { + throw new Error("This cache has already been disposed"); + } + } }; - layout4 = [{ - name: "breadthfirst", - impl: BreadthFirstLayout - }, { - name: "circle", - impl: CircleLayout - }, { - name: "concentric", - impl: ConcentricLayout - }, { - name: "cose", - impl: CoseLayout - }, { - name: "grid", - impl: GridLayout - }, { - name: "null", - impl: NullLayout - }, { - name: "preset", - impl: PresetLayout - }, { - name: "random", - impl: RandomLayout - }]; - __name(NullRenderer, "NullRenderer"); - noop4 = /* @__PURE__ */ __name(function noop5() { - }, "noop"); - throwImgErr = /* @__PURE__ */ __name(function throwImgErr2() { - throw new Error("A headless instance can not render images"); - }, "throwImgErr"); - NullRenderer.prototype = { - recalculateRenderedStyle: noop4, - notify: /* @__PURE__ */ __name(function notify2() { - this.notifications++; - }, "notify"), - init: noop4, - isHeadless: /* @__PURE__ */ __name(function isHeadless() { - return true; - }, "isHeadless"), - png: throwImgErr, - jpg: throwImgErr + SimpleCache = class extends DisposableCache { + static { + __name(this, "SimpleCache"); + } + constructor() { + super(...arguments); + this.cache = /* @__PURE__ */ new Map(); + } + has(key) { + this.throwIfDisposed(); + return this.cache.has(key); + } + set(key, value2) { + this.throwIfDisposed(); + this.cache.set(key, value2); + } + get(key, provider) { + this.throwIfDisposed(); + if (this.cache.has(key)) { + return this.cache.get(key); + } else if (provider) { + const value2 = provider(); + this.cache.set(key, value2); + return value2; + } else { + return void 0; + } + } + delete(key) { + this.throwIfDisposed(); + return this.cache.delete(key); + } + clear() { + this.throwIfDisposed(); + this.cache.clear(); + } }; - BRp$f = {}; - BRp$f.arrowShapeWidth = 0.3; - BRp$f.registerArrowShapes = function() { - var arrowShapes = this.arrowShapes = {}; - var renderer9 = this; - var bbCollide = /* @__PURE__ */ __name(function bbCollide2(x5, y5, size5, angle2, translation, edgeWidth, padding2) { - var x1 = translation.x - size5 / 2 - padding2; - var x22 = translation.x + size5 / 2 + padding2; - var y1 = translation.y - size5 / 2 - padding2; - var y22 = translation.y + size5 / 2 + padding2; - var inside = x1 <= x5 && x5 <= x22 && y1 <= y5 && y5 <= y22; - return inside; - }, "bbCollide"); - var transform8 = /* @__PURE__ */ __name(function transform9(x5, y5, size5, angle2, translation) { - var xRotated = x5 * Math.cos(angle2) - y5 * Math.sin(angle2); - var yRotated = x5 * Math.sin(angle2) + y5 * Math.cos(angle2); - var xScaled = xRotated * size5; - var yScaled = yRotated * size5; - var xTranslated = xScaled + translation.x; - var yTranslated = yScaled + translation.y; - return { - x: xTranslated, - y: yTranslated - }; - }, "transform"); - var transformPoints = /* @__PURE__ */ __name(function transformPoints2(pts2, size5, angle2, translation) { - var retPts = []; - for (var i2 = 0; i2 < pts2.length; i2 += 2) { - var x5 = pts2[i2]; - var y5 = pts2[i2 + 1]; - retPts.push(transform8(x5, y5, size5, angle2, translation)); + ContextCache = class extends DisposableCache { + static { + __name(this, "ContextCache"); + } + constructor(converter) { + super(); + this.cache = /* @__PURE__ */ new Map(); + this.converter = converter !== null && converter !== void 0 ? converter : ((value2) => value2); + } + has(contextKey, key) { + this.throwIfDisposed(); + return this.cacheForContext(contextKey).has(key); + } + set(contextKey, key, value2) { + this.throwIfDisposed(); + this.cacheForContext(contextKey).set(key, value2); + } + get(contextKey, key, provider) { + this.throwIfDisposed(); + const contextCache = this.cacheForContext(contextKey); + if (contextCache.has(key)) { + return contextCache.get(key); + } else if (provider) { + const value2 = provider(); + contextCache.set(key, value2); + return value2; + } else { + return void 0; } - return retPts; - }, "transformPoints"); - var pointsToArr = /* @__PURE__ */ __name(function pointsToArr2(pts2) { - var ret = []; - for (var i2 = 0; i2 < pts2.length; i2++) { - var p3 = pts2[i2]; - ret.push(p3.x, p3.y); + } + delete(contextKey, key) { + this.throwIfDisposed(); + return this.cacheForContext(contextKey).delete(key); + } + clear(contextKey) { + this.throwIfDisposed(); + if (contextKey) { + const mapKey = this.converter(contextKey); + this.cache.delete(mapKey); + } else { + this.cache.clear(); } - return ret; - }, "pointsToArr"); - var standardGap = /* @__PURE__ */ __name(function standardGap2(edge) { - return edge.pstyle("width").pfValue * edge.pstyle("arrow-scale").pfValue * 2; - }, "standardGap"); - var defineArrowShape = /* @__PURE__ */ __name(function defineArrowShape2(name, defn) { - if (string(defn)) { - defn = arrowShapes[defn]; + } + cacheForContext(contextKey) { + const mapKey = this.converter(contextKey); + let documentCache = this.cache.get(mapKey); + if (!documentCache) { + documentCache = /* @__PURE__ */ new Map(); + this.cache.set(mapKey, documentCache); } - arrowShapes[name] = extend4({ - name, - points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3], - collide: /* @__PURE__ */ __name(function collide(x5, y5, size5, angle2, translation, padding2) { - var points = pointsToArr(transformPoints(this.points, size5 + 2 * padding2, angle2, translation)); - var inside = pointInsidePolygonPoints(x5, y5, points); - return inside; - }, "collide"), - roughCollide: bbCollide, - draw: /* @__PURE__ */ __name(function draw25(context, size5, angle2, translation) { - var points = transformPoints(this.points, size5, angle2, translation); - renderer9.arrowShapeImpl("polygon")(context, points); - }, "draw"), - spacing: /* @__PURE__ */ __name(function spacing2(edge) { - return 0; - }, "spacing"), - gap: standardGap - }, defn); - }, "defineArrowShape"); - defineArrowShape("none", { - collide: falsify, - roughCollide: falsify, - draw: noop$1, - spacing: zeroify, - gap: zeroify - }); - defineArrowShape("triangle", { - points: [-0.15, -0.3, 0, 0, 0.15, -0.3] - }); - defineArrowShape("arrow", "triangle"); - defineArrowShape("triangle-backcurve", { - points: arrowShapes["triangle"].points, - controlPoint: [0, -0.15], - roughCollide: bbCollide, - draw: /* @__PURE__ */ __name(function draw25(context, size5, angle2, translation, edgeWidth) { - var ptsTrans = transformPoints(this.points, size5, angle2, translation); - var ctrlPt = this.controlPoint; - var ctrlPtTrans = transform8(ctrlPt[0], ctrlPt[1], size5, angle2, translation); - renderer9.arrowShapeImpl(this.name)(context, ptsTrans, ctrlPtTrans); - }, "draw"), - gap: /* @__PURE__ */ __name(function gap(edge) { - return standardGap(edge) * 0.8; - }, "gap") - }); - defineArrowShape("triangle-tee", { - points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], - pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4], - collide: /* @__PURE__ */ __name(function collide(x5, y5, size5, angle2, translation, edgeWidth, padding2) { - var triPts = pointsToArr(transformPoints(this.points, size5 + 2 * padding2, angle2, translation)); - var teePts = pointsToArr(transformPoints(this.pointsTee, size5 + 2 * padding2, angle2, translation)); - var inside = pointInsidePolygonPoints(x5, y5, triPts) || pointInsidePolygonPoints(x5, y5, teePts); - return inside; - }, "collide"), - draw: /* @__PURE__ */ __name(function draw25(context, size5, angle2, translation, edgeWidth) { - var triPts = transformPoints(this.points, size5, angle2, translation); - var teePts = transformPoints(this.pointsTee, size5, angle2, translation); - renderer9.arrowShapeImpl(this.name)(context, triPts, teePts); - }, "draw") - }); - defineArrowShape("circle-triangle", { - radius: 0.15, - pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15], - collide: /* @__PURE__ */ __name(function collide(x5, y5, size5, angle2, translation, edgeWidth, padding2) { - var t4 = translation; - var circleInside = Math.pow(t4.x - x5, 2) + Math.pow(t4.y - y5, 2) <= Math.pow((size5 + 2 * padding2) * this.radius, 2); - var triPts = pointsToArr(transformPoints(this.points, size5 + 2 * padding2, angle2, translation)); - return pointInsidePolygonPoints(x5, y5, triPts) || circleInside; - }, "collide"), - draw: /* @__PURE__ */ __name(function draw25(context, size5, angle2, translation, edgeWidth) { - var triPts = transformPoints(this.pointsTr, size5, angle2, translation); - renderer9.arrowShapeImpl(this.name)(context, triPts, translation.x, translation.y, this.radius * size5); - }, "draw"), - spacing: /* @__PURE__ */ __name(function spacing2(edge) { - return renderer9.getArrowWidth(edge.pstyle("width").pfValue, edge.pstyle("arrow-scale").value) * this.radius; - }, "spacing") - }); - defineArrowShape("triangle-cross", { - points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], - baseCrossLinePts: [ - -0.15, - -0.4, - // first half of the rectangle - -0.15, - -0.4, - 0.15, - -0.4, - // second half of the rectangle - 0.15, - -0.4 - ], - crossLinePts: /* @__PURE__ */ __name(function crossLinePts(size5, edgeWidth) { - var p3 = this.baseCrossLinePts.slice(); - var shiftFactor = edgeWidth / size5; - var y0 = 3; - var y1 = 5; - p3[y0] = p3[y0] - shiftFactor; - p3[y1] = p3[y1] - shiftFactor; - return p3; - }, "crossLinePts"), - collide: /* @__PURE__ */ __name(function collide(x5, y5, size5, angle2, translation, edgeWidth, padding2) { - var triPts = pointsToArr(transformPoints(this.points, size5 + 2 * padding2, angle2, translation)); - var teePts = pointsToArr(transformPoints(this.crossLinePts(size5, edgeWidth), size5 + 2 * padding2, angle2, translation)); - var inside = pointInsidePolygonPoints(x5, y5, triPts) || pointInsidePolygonPoints(x5, y5, teePts); - return inside; - }, "collide"), - draw: /* @__PURE__ */ __name(function draw25(context, size5, angle2, translation, edgeWidth) { - var triPts = transformPoints(this.points, size5, angle2, translation); - var crossLinePts = transformPoints(this.crossLinePts(size5, edgeWidth), size5, angle2, translation); - renderer9.arrowShapeImpl(this.name)(context, triPts, crossLinePts); - }, "draw") - }); - defineArrowShape("vee", { - points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15], - gap: /* @__PURE__ */ __name(function gap(edge) { - return standardGap(edge) * 0.525; - }, "gap") - }); - defineArrowShape("circle", { - radius: 0.15, - collide: /* @__PURE__ */ __name(function collide(x5, y5, size5, angle2, translation, edgeWidth, padding2) { - var t4 = translation; - var inside = Math.pow(t4.x - x5, 2) + Math.pow(t4.y - y5, 2) <= Math.pow((size5 + 2 * padding2) * this.radius, 2); - return inside; - }, "collide"), - draw: /* @__PURE__ */ __name(function draw25(context, size5, angle2, translation, edgeWidth) { - renderer9.arrowShapeImpl(this.name)(context, translation.x, translation.y, this.radius * size5); - }, "draw"), - spacing: /* @__PURE__ */ __name(function spacing2(edge) { - return renderer9.getArrowWidth(edge.pstyle("width").pfValue, edge.pstyle("arrow-scale").value) * this.radius; - }, "spacing") - }); - defineArrowShape("tee", { - points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0], - spacing: /* @__PURE__ */ __name(function spacing2(edge) { - return 1; - }, "spacing"), - gap: /* @__PURE__ */ __name(function gap(edge) { - return 1; - }, "gap") - }); - defineArrowShape("square", { - points: [-0.15, 0, 0.15, 0, 0.15, -0.3, -0.15, -0.3] - }); - defineArrowShape("diamond", { - points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0], - gap: /* @__PURE__ */ __name(function gap(edge) { - return edge.pstyle("width").pfValue * edge.pstyle("arrow-scale").value; - }, "gap") - }); - defineArrowShape("chevron", { - points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15], - gap: /* @__PURE__ */ __name(function gap(edge) { - return 0.95 * edge.pstyle("width").pfValue * edge.pstyle("arrow-scale").value; - }, "gap") - }); - }; - BRp$e = {}; - BRp$e.projectIntoViewport = function(clientX, clientY) { - var cy = this.cy; - var offsets = this.findContainerClientCoords(); - var offsetLeft = offsets[0]; - var offsetTop = offsets[1]; - var scale2 = offsets[4]; - var pan2 = cy.pan(); - var zoom2 = cy.zoom(); - var x5 = ((clientX - offsetLeft) / scale2 - pan2.x) / zoom2; - var y5 = ((clientY - offsetTop) / scale2 - pan2.y) / zoom2; - return [x5, y5]; - }; - BRp$e.findContainerClientCoords = function() { - if (this.containerBB) { - return this.containerBB; + return documentCache; } - var container2 = this.container; - var rect3 = container2.getBoundingClientRect(); - var style3 = this.cy.window().getComputedStyle(container2); - var styleValue2 = /* @__PURE__ */ __name(function styleValue3(name) { - return parseFloat(style3.getPropertyValue(name)); - }, "styleValue"); - var padding2 = { - left: styleValue2("padding-left"), - right: styleValue2("padding-right"), - top: styleValue2("padding-top"), - bottom: styleValue2("padding-bottom") - }; - var border = { - left: styleValue2("border-left-width"), - right: styleValue2("border-right-width"), - top: styleValue2("border-top-width"), - bottom: styleValue2("border-bottom-width") - }; - var clientWidth = container2.clientWidth; - var clientHeight = container2.clientHeight; - var paddingHor = padding2.left + padding2.right; - var paddingVer = padding2.top + padding2.bottom; - var borderHor = border.left + border.right; - var scale2 = rect3.width / (clientWidth + borderHor); - var unscaledW = clientWidth - paddingHor; - var unscaledH = clientHeight - paddingVer; - var left3 = rect3.left + padding2.left + border.left; - var top2 = rect3.top + padding2.top + border.top; - return this.containerBB = [left3, top2, unscaledW, unscaledH, scale2]; - }; - BRp$e.invalidateContainerClientCoordsCache = function() { - this.containerBB = null; }; - BRp$e.findNearestElement = function(x5, y5, interactiveElementsOnly, isTouch) { - return this.findNearestElements(x5, y5, interactiveElementsOnly, isTouch)[0]; + DocumentCache = class extends ContextCache { + static { + __name(this, "DocumentCache"); + } + /** + * Creates a new document cache. + * + * @param sharedServices Service container instance to hook into document lifecycle events. + * @param state Optional document state on which the cache should evict. + * If not provided, the cache will evict on `DocumentBuilder#onUpdate`. + * *Deleted* documents are considered in both cases. + * + * Providing a state here will use `DocumentBuilder#onDocumentPhase` instead, + * which triggers on all documents that have been affected by this change, assuming that the + * state is `DocumentState.Linked` or a later state. + */ + constructor(sharedServices, state3) { + super((uri) => uri.toString()); + if (state3) { + this.toDispose.push(sharedServices.workspace.DocumentBuilder.onDocumentPhase(state3, (document2) => { + this.clear(document2.uri.toString()); + })); + this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((_changed, deleted) => { + for (const uri of deleted) { + this.clear(uri); + } + })); + } else { + this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((changed, deleted) => { + const allUris = changed.concat(deleted); + for (const uri of allUris) { + this.clear(uri); + } + })); + } + } }; - BRp$e.findNearestElements = function(x5, y5, interactiveElementsOnly, isTouch) { - var self2 = this; - var r2 = this; - var eles = r2.getCachedZSortedEles(); - var near = []; - var zoom2 = r2.cy.zoom(); - var hasCompounds = r2.cy.hasCompoundNodes(); - var edgeThreshold = (isTouch ? 24 : 8) / zoom2; - var nodeThreshold = (isTouch ? 8 : 2) / zoom2; - var labelThreshold = (isTouch ? 8 : 2) / zoom2; - var minSqDist = Infinity; - var nearEdge; - var nearNode; - if (interactiveElementsOnly) { - eles = eles.interactive; + WorkspaceCache = class extends SimpleCache { + static { + __name(this, "WorkspaceCache"); } - function addEle(ele2, sqDist) { - if (ele2.isNode()) { - if (nearNode) { - return; - } else { - nearNode = ele2; - near.push(ele2); - } + /** + * Creates a new workspace cache. + * + * @param sharedServices Service container instance to hook into document lifecycle events. + * @param state Optional document state on which the cache should evict. + * If not provided, the cache will evict on `DocumentBuilder#onUpdate`. + * *Deleted* documents are considered in both cases. + */ + constructor(sharedServices, state3) { + super(); + if (state3) { + this.toDispose.push(sharedServices.workspace.DocumentBuilder.onBuildPhase(state3, () => { + this.clear(); + })); + this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((_changed, deleted) => { + if (deleted.length > 0) { + this.clear(); + } + })); + } else { + this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate(() => { + this.clear(); + })); } - if (ele2.isEdge() && (sqDist == null || sqDist < minSqDist)) { - if (nearEdge) { - if (nearEdge.pstyle("z-compound-depth").value === ele2.pstyle("z-compound-depth").value && nearEdge.pstyle("z-compound-depth").value === ele2.pstyle("z-compound-depth").value) { - for (var i3 = 0; i3 < near.length; i3++) { - if (near[i3].isEdge()) { - near[i3] = ele2; - nearEdge = ele2; - minSqDist = sqDist != null ? sqDist : minSqDist; - break; - } - } + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope-provider.js + var DefaultScopeProvider; + var init_scope_provider = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/scope-provider.js"() { + "use strict"; + init_scope(); + init_ast_utils(); + init_stream(); + init_caching(); + DefaultScopeProvider = class { + static { + __name(this, "DefaultScopeProvider"); + } + constructor(services) { + this.reflection = services.shared.AstReflection; + this.nameProvider = services.references.NameProvider; + this.descriptions = services.workspace.AstNodeDescriptionProvider; + this.indexManager = services.shared.workspace.IndexManager; + this.globalScopeCache = new WorkspaceCache(services.shared); + } + getScope(context) { + const scopes = []; + const referenceType = this.reflection.getReferenceType(context); + const precomputed = getDocument(context.container).precomputedScopes; + if (precomputed) { + let currentNode = context.container; + do { + const allDescriptions = precomputed.get(currentNode); + if (allDescriptions.length > 0) { + scopes.push(stream(allDescriptions).filter((desc) => this.reflection.isSubtype(desc.type, referenceType))); } - } else { - near.push(ele2); - nearEdge = ele2; - minSqDist = sqDist != null ? sqDist : minSqDist; - } + currentNode = currentNode.$container; + } while (currentNode); + } + let result = this.getGlobalScope(referenceType, context); + for (let i2 = scopes.length - 1; i2 >= 0; i2--) { + result = this.createScope(scopes[i2], result); } + return result; } - __name(addEle, "addEle"); - function checkNode(node2) { - var width3 = node2.outerWidth() + 2 * nodeThreshold; - var height2 = node2.outerHeight() + 2 * nodeThreshold; - var hw = width3 / 2; - var hh = height2 / 2; - var pos = node2.position(); - var cornerRadius = node2.pstyle("corner-radius").value === "auto" ? "auto" : node2.pstyle("corner-radius").pfValue; - var rs = node2._private.rscratch; - if (pos.x - hw <= x5 && x5 <= pos.x + hw && pos.y - hh <= y5 && y5 <= pos.y + hh) { - var shape = r2.nodeShapes[self2.getNodeShape(node2)]; - if (shape.checkPoint(x5, y5, 0, width3, height2, pos.x, pos.y, cornerRadius, rs)) { - addEle(node2, 0); - return true; + /** + * Create a scope for the given collection of AST node descriptions. + */ + createScope(elements2, outerScope, options2) { + return new StreamScope(stream(elements2), outerScope, options2); + } + /** + * Create a scope for the given collection of AST nodes, which need to be transformed into respective + * descriptions first. This is done using the `NameProvider` and `AstNodeDescriptionProvider` services. + */ + createScopeForNodes(elements2, outerScope, options2) { + const s2 = stream(elements2).map((e3) => { + const name = this.nameProvider.getName(e3); + if (name) { + return this.descriptions.createDescription(e3, name); } + return void 0; + }).nonNullable(); + return new StreamScope(s2, outerScope, options2); + } + /** + * Create a global scope filtered for the given reference type. + */ + getGlobalScope(referenceType, _context) { + return this.globalScopeCache.get(referenceType, () => new MapScope(this.indexManager.allElements(referenceType))); + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/json-serializer.js + function isAstNodeWithComment(node2) { + return typeof node2.$comment === "string"; + } + function isIntermediateReference(obj) { + return typeof obj === "object" && !!obj && ("$ref" in obj || "$error" in obj); + } + var DefaultJsonSerializer; + var init_json_serializer = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/json-serializer.js"() { + "use strict"; + init_esm2(); + init_syntax_tree(); + init_ast_utils(); + init_grammar_utils(); + __name(isAstNodeWithComment, "isAstNodeWithComment"); + __name(isIntermediateReference, "isIntermediateReference"); + DefaultJsonSerializer = class { + static { + __name(this, "DefaultJsonSerializer"); + } + constructor(services) { + this.ignoreProperties = /* @__PURE__ */ new Set(["$container", "$containerProperty", "$containerIndex", "$document", "$cstNode"]); + this.langiumDocuments = services.shared.workspace.LangiumDocuments; + this.astNodeLocator = services.workspace.AstNodeLocator; + this.nameProvider = services.references.NameProvider; + this.commentProvider = services.documentation.CommentProvider; + } + serialize(node2, options2) { + const serializeOptions = options2 !== null && options2 !== void 0 ? options2 : {}; + const specificReplacer = options2 === null || options2 === void 0 ? void 0 : options2.replacer; + const defaultReplacer = /* @__PURE__ */ __name((key, value2) => this.replacer(key, value2, serializeOptions), "defaultReplacer"); + const replacer = specificReplacer ? (key, value2) => specificReplacer(key, value2, defaultReplacer) : defaultReplacer; + try { + this.currentDocument = getDocument(node2); + return JSON.stringify(node2, replacer, options2 === null || options2 === void 0 ? void 0 : options2.space); + } finally { + this.currentDocument = void 0; } } - __name(checkNode, "checkNode"); - function checkEdge(edge) { - var _p = edge._private; - var rs = _p.rscratch; - var styleWidth = edge.pstyle("width").pfValue; - var scale2 = edge.pstyle("arrow-scale").value; - var width3 = styleWidth / 2 + edgeThreshold; - var widthSq = width3 * width3; - var width22 = width3 * 2; - var src = _p.source; - var tgt = _p.target; - var sqDist; - if (rs.edgeType === "segments" || rs.edgeType === "straight" || rs.edgeType === "haystack") { - var pts2 = rs.allpts; - for (var i3 = 0; i3 + 3 < pts2.length; i3 += 2) { - if (inLineVicinity(x5, y5, pts2[i3], pts2[i3 + 1], pts2[i3 + 2], pts2[i3 + 3], width22) && widthSq > (sqDist = sqdistToFiniteLine(x5, y5, pts2[i3], pts2[i3 + 1], pts2[i3 + 2], pts2[i3 + 3]))) { - addEle(edge, sqDist); - return true; + deserialize(content, options2) { + const deserializeOptions = options2 !== null && options2 !== void 0 ? options2 : {}; + const root3 = JSON.parse(content); + this.linkNode(root3, root3, deserializeOptions); + return root3; + } + replacer(key, value2, { refText, sourceText, textRegions, comments, uriConverter }) { + var _a, _b, _c, _d; + if (this.ignoreProperties.has(key)) { + return void 0; + } else if (isReference(value2)) { + const refValue = value2.ref; + const $refText = refText ? value2.$refText : void 0; + if (refValue) { + const targetDocument = getDocument(refValue); + let targetUri = ""; + if (this.currentDocument && this.currentDocument !== targetDocument) { + if (uriConverter) { + targetUri = uriConverter(targetDocument.uri, value2); + } else { + targetUri = targetDocument.uri.toString(); + } } + const targetPath = this.astNodeLocator.getAstNodePath(refValue); + return { + $ref: `${targetUri}#${targetPath}`, + $refText + }; + } else { + return { + $error: (_b = (_a = value2.error) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : "Could not resolve reference", + $refText + }; } - } else if (rs.edgeType === "bezier" || rs.edgeType === "multibezier" || rs.edgeType === "self" || rs.edgeType === "compound") { - var pts2 = rs.allpts; - for (var i3 = 0; i3 + 5 < rs.allpts.length; i3 += 4) { - if (inBezierVicinity(x5, y5, pts2[i3], pts2[i3 + 1], pts2[i3 + 2], pts2[i3 + 3], pts2[i3 + 4], pts2[i3 + 5], width22) && widthSq > (sqDist = sqdistToQuadraticBezier(x5, y5, pts2[i3], pts2[i3 + 1], pts2[i3 + 2], pts2[i3 + 3], pts2[i3 + 4], pts2[i3 + 5]))) { - addEle(edge, sqDist); - return true; + } else if (isAstNode(value2)) { + let astNode = void 0; + if (textRegions) { + astNode = this.addAstNodeRegionWithAssignmentsTo(Object.assign({}, value2)); + if ((!key || value2.$document) && (astNode === null || astNode === void 0 ? void 0 : astNode.$textRegion)) { + astNode.$textRegion.documentURI = (_c = this.currentDocument) === null || _c === void 0 ? void 0 : _c.uri.toString(); } } - } - var src = src || _p.source; - var tgt = tgt || _p.target; - var arSize = self2.getArrowWidth(styleWidth, scale2); - var arrows = [{ - name: "source", - x: rs.arrowStartX, - y: rs.arrowStartY, - angle: rs.srcArrowAngle - }, { - name: "target", - x: rs.arrowEndX, - y: rs.arrowEndY, - angle: rs.tgtArrowAngle - }, { - name: "mid-source", - x: rs.midX, - y: rs.midY, - angle: rs.midsrcArrowAngle - }, { - name: "mid-target", - x: rs.midX, - y: rs.midY, - angle: rs.midtgtArrowAngle - }]; - for (var i3 = 0; i3 < arrows.length; i3++) { - var ar = arrows[i3]; - var shape = r2.arrowShapes[edge.pstyle(ar.name + "-arrow-shape").value]; - var edgeWidth = edge.pstyle("width").pfValue; - if (shape.roughCollide(x5, y5, arSize, ar.angle, { - x: ar.x, - y: ar.y - }, edgeWidth, edgeThreshold) && shape.collide(x5, y5, arSize, ar.angle, { - x: ar.x, - y: ar.y - }, edgeWidth, edgeThreshold)) { - addEle(edge); - return true; + if (sourceText && !key) { + astNode !== null && astNode !== void 0 ? astNode : astNode = Object.assign({}, value2); + astNode.$sourceText = (_d = value2.$cstNode) === null || _d === void 0 ? void 0 : _d.text; } - } - if (hasCompounds && near.length > 0) { - checkNode(src); - checkNode(tgt); + if (comments) { + astNode !== null && astNode !== void 0 ? astNode : astNode = Object.assign({}, value2); + const comment2 = this.commentProvider.getComment(value2); + if (comment2) { + astNode.$comment = comment2.replace(/\r/g, ""); + } + } + return astNode !== null && astNode !== void 0 ? astNode : value2; + } else { + return value2; } } - __name(checkEdge, "checkEdge"); - function preprop(obj, name, pre) { - return getPrefixedProperty(obj, name, pre); - } - __name(preprop, "preprop"); - function checkLabel(ele2, prefix) { - var _p = ele2._private; - var th = labelThreshold; - var prefixDash; - if (prefix) { - prefixDash = prefix + "-"; - } else { - prefixDash = ""; + addAstNodeRegionWithAssignmentsTo(node2) { + const createDocumentSegment = /* @__PURE__ */ __name((cstNode) => ({ + offset: cstNode.offset, + end: cstNode.end, + length: cstNode.length, + range: cstNode.range + }), "createDocumentSegment"); + if (node2.$cstNode) { + const textRegion = node2.$textRegion = createDocumentSegment(node2.$cstNode); + const assignments = textRegion.assignments = {}; + Object.keys(node2).filter((key) => !key.startsWith("$")).forEach((key) => { + const propertyAssignments = findNodesForProperty(node2.$cstNode, key).map(createDocumentSegment); + if (propertyAssignments.length !== 0) { + assignments[key] = propertyAssignments; + } + }); + return node2; } - ele2.boundingBox(); - var bb = _p.labelBounds[prefix || "main"]; - var text4 = ele2.pstyle(prefixDash + "label").value; - var eventsEnabled = ele2.pstyle("text-events").strValue === "yes"; - if (!eventsEnabled || !text4) { - return; + return void 0; + } + linkNode(node2, root3, options2, container2, containerProperty, containerIndex) { + for (const [propertyName, item] of Object.entries(node2)) { + if (Array.isArray(item)) { + for (let index = 0; index < item.length; index++) { + const element3 = item[index]; + if (isIntermediateReference(element3)) { + item[index] = this.reviveReference(node2, propertyName, root3, element3, options2); + } else if (isAstNode(element3)) { + this.linkNode(element3, root3, options2, node2, propertyName, index); + } + } + } else if (isIntermediateReference(item)) { + node2[propertyName] = this.reviveReference(node2, propertyName, root3, item, options2); + } else if (isAstNode(item)) { + this.linkNode(item, root3, options2, node2, propertyName); + } } - var lx = preprop(_p.rscratch, "labelX", prefix); - var ly = preprop(_p.rscratch, "labelY", prefix); - var theta = preprop(_p.rscratch, "labelAngle", prefix); - var ox = ele2.pstyle(prefixDash + "text-margin-x").pfValue; - var oy = ele2.pstyle(prefixDash + "text-margin-y").pfValue; - var lx1 = bb.x1 - th - ox; - var lx2 = bb.x2 + th - ox; - var ly1 = bb.y1 - th - oy; - var ly2 = bb.y2 + th - oy; - if (theta) { - var cos3 = Math.cos(theta); - var sin3 = Math.sin(theta); - var rotate2 = /* @__PURE__ */ __name(function rotate3(x6, y6) { - x6 = x6 - lx; - y6 = y6 - ly; + const mutable = node2; + mutable.$container = container2; + mutable.$containerProperty = containerProperty; + mutable.$containerIndex = containerIndex; + } + reviveReference(container2, property2, root3, reference, options2) { + let refText = reference.$refText; + let error3 = reference.$error; + if (reference.$ref) { + const ref = this.getRefNode(root3, reference.$ref, options2.uriConverter); + if (isAstNode(ref)) { + if (!refText) { + refText = this.nameProvider.getName(ref); + } return { - x: x6 * cos3 - y6 * sin3 + lx, - y: x6 * sin3 + y6 * cos3 + ly + $refText: refText !== null && refText !== void 0 ? refText : "", + ref }; - }, "rotate"); - var px1y1 = rotate2(lx1, ly1); - var px1y2 = rotate2(lx1, ly2); - var px2y1 = rotate2(lx2, ly1); - var px2y2 = rotate2(lx2, ly2); - var points = [ - // with the margin added after the rotation is applied - px1y1.x + ox, - px1y1.y + oy, - px2y1.x + ox, - px2y1.y + oy, - px2y2.x + ox, - px2y2.y + oy, - px1y2.x + ox, - px1y2.y + oy - ]; - if (pointInsidePolygonPoints(x5, y5, points)) { - addEle(ele2); - return true; - } - } else { - if (inBoundingBox(bb, x5, y5)) { - addEle(ele2); - return true; + } else { + error3 = ref; } } - } - __name(checkLabel, "checkLabel"); - for (var i2 = eles.length - 1; i2 >= 0; i2--) { - var ele = eles[i2]; - if (ele.isNode()) { - checkNode(ele) || checkLabel(ele); + if (error3) { + const ref = { + $refText: refText !== null && refText !== void 0 ? refText : "" + }; + ref.error = { + container: container2, + property: property2, + message: error3, + reference: ref + }; + return ref; } else { - checkEdge(ele) || checkLabel(ele) || checkLabel(ele, "source") || checkLabel(ele, "target"); + return void 0; } } - return near; - }; - BRp$e.getAllInBox = function(x1, y1, x22, y22) { - var eles = this.getCachedZSortedEles().interactive; - var box = []; - var x1c = Math.min(x1, x22); - var x2c = Math.max(x1, x22); - var y1c = Math.min(y1, y22); - var y2c = Math.max(y1, y22); - x1 = x1c; - x22 = x2c; - y1 = y1c; - y22 = y2c; - var boxBb = makeBoundingBox({ - x1, - y1, - x2: x22, - y2: y22 - }); - for (var e3 = 0; e3 < eles.length; e3++) { - var ele = eles[e3]; - if (ele.isNode()) { - var node2 = ele; - var nodeBb = node2.boundingBox({ - includeNodes: true, - includeEdges: false, - includeLabels: false - }); - if (boundingBoxesIntersect(boxBb, nodeBb) && !boundingBoxInBoundingBox(nodeBb, boxBb)) { - box.push(node2); + getRefNode(root3, uri, uriConverter) { + try { + const fragmentIndex = uri.indexOf("#"); + if (fragmentIndex === 0) { + const node3 = this.astNodeLocator.getAstNode(root3, uri.substring(1)); + if (!node3) { + return "Could not resolve path: " + uri; + } + return node3; } - } else { - var edge = ele; - var _p = edge._private; - var rs = _p.rscratch; - if (rs.startX != null && rs.startY != null && !inBoundingBox(boxBb, rs.startX, rs.startY)) { - continue; + if (fragmentIndex < 0) { + const documentUri2 = uriConverter ? uriConverter(uri) : URI2.parse(uri); + const document3 = this.langiumDocuments.getDocument(documentUri2); + if (!document3) { + return "Could not find document for URI: " + uri; + } + return document3.parseResult.value; } - if (rs.endX != null && rs.endY != null && !inBoundingBox(boxBb, rs.endX, rs.endY)) { - continue; + const documentUri = uriConverter ? uriConverter(uri.substring(0, fragmentIndex)) : URI2.parse(uri.substring(0, fragmentIndex)); + const document2 = this.langiumDocuments.getDocument(documentUri); + if (!document2) { + return "Could not find document for URI: " + uri; } - if (rs.edgeType === "bezier" || rs.edgeType === "multibezier" || rs.edgeType === "self" || rs.edgeType === "compound" || rs.edgeType === "segments" || rs.edgeType === "haystack") { - var pts2 = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts; - var allInside = true; - for (var i2 = 0; i2 < pts2.length; i2++) { - if (!pointInBoundingBox(boxBb, pts2[i2])) { - allInside = false; - break; - } - } - if (allInside) { - box.push(edge); - } - } else if (rs.edgeType === "haystack" || rs.edgeType === "straight") { - box.push(edge); + if (fragmentIndex === uri.length - 1) { + return document2.parseResult.value; + } + const node2 = this.astNodeLocator.getAstNode(document2.parseResult.value, uri.substring(fragmentIndex + 1)); + if (!node2) { + return "Could not resolve URI: " + uri; } + return node2; + } catch (err) { + return String(err); } } - return box; }; - BRp$d = {}; - BRp$d.calculateArrowAngles = function(edge) { - var rs = edge._private.rscratch; - var isHaystack = rs.edgeType === "haystack"; - var isBezier = rs.edgeType === "bezier"; - var isMultibezier = rs.edgeType === "multibezier"; - var isSegments = rs.edgeType === "segments"; - var isCompound = rs.edgeType === "compound"; - var isSelf = rs.edgeType === "self"; - var dispX, dispY; - var startX2, startY2, endX, endY, midX, midY; - if (isHaystack) { - startX2 = rs.haystackPts[0]; - startY2 = rs.haystackPts[1]; - endX = rs.haystackPts[2]; - endY = rs.haystackPts[3]; - } else { - startX2 = rs.arrowStartX; - startY2 = rs.arrowStartY; - endX = rs.arrowEndX; - endY = rs.arrowEndY; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/service-registry.js + var DefaultServiceRegistry; + var init_service_registry = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/service-registry.js"() { + "use strict"; + init_uri_utils(); + DefaultServiceRegistry = class { + static { + __name(this, "DefaultServiceRegistry"); } - midX = rs.midX; - midY = rs.midY; - if (isSegments) { - dispX = startX2 - rs.segpts[0]; - dispY = startY2 - rs.segpts[1]; - } else if (isMultibezier || isCompound || isSelf || isBezier) { - var pts2 = rs.allpts; - var bX = qbezierAt(pts2[0], pts2[2], pts2[4], 0.1); - var bY = qbezierAt(pts2[1], pts2[3], pts2[5], 0.1); - dispX = startX2 - bX; - dispY = startY2 - bY; - } else { - dispX = startX2 - midX; - dispY = startY2 - midY; + /** + * @deprecated Use the new `fileExtensionMap` (or `languageIdMap`) property instead. + */ + get map() { + return this.fileExtensionMap; } - rs.srcArrowAngle = getAngleFromDisp(dispX, dispY); - var midX = rs.midX; - var midY = rs.midY; - if (isHaystack) { - midX = (startX2 + endX) / 2; - midY = (startY2 + endY) / 2; + constructor(services) { + this.languageIdMap = /* @__PURE__ */ new Map(); + this.fileExtensionMap = /* @__PURE__ */ new Map(); + this.textDocuments = services === null || services === void 0 ? void 0 : services.workspace.TextDocuments; } - dispX = endX - startX2; - dispY = endY - startY2; - if (isSegments) { - var pts2 = rs.allpts; - if (pts2.length / 2 % 2 === 0) { - var i2 = pts2.length / 2; - var i1 = i2 - 2; - dispX = pts2[i2] - pts2[i1]; - dispY = pts2[i2 + 1] - pts2[i1 + 1]; - } else if (rs.isRound) { - dispX = rs.midVector[1]; - dispY = -rs.midVector[0]; - } else { - var i2 = pts2.length / 2 - 1; - var i1 = i2 - 2; - dispX = pts2[i2] - pts2[i1]; - dispY = pts2[i2 + 1] - pts2[i1 + 1]; + register(language) { + const data5 = language.LanguageMetaData; + for (const ext of data5.fileExtensions) { + if (this.fileExtensionMap.has(ext)) { + console.warn(`The file extension ${ext} is used by multiple languages. It is now assigned to '${data5.languageId}'.`); + } + this.fileExtensionMap.set(ext, language); } - } else if (isMultibezier || isCompound || isSelf) { - var pts2 = rs.allpts; - var cpts = rs.ctrlpts; - var bp0x, bp0y; - var bp1x, bp1y; - if (cpts.length / 2 % 2 === 0) { - var p0 = pts2.length / 2 - 1; - var ic = p0 + 2; - var p1 = ic + 2; - bp0x = qbezierAt(pts2[p0], pts2[ic], pts2[p1], 0); - bp0y = qbezierAt(pts2[p0 + 1], pts2[ic + 1], pts2[p1 + 1], 0); - bp1x = qbezierAt(pts2[p0], pts2[ic], pts2[p1], 1e-4); - bp1y = qbezierAt(pts2[p0 + 1], pts2[ic + 1], pts2[p1 + 1], 1e-4); + this.languageIdMap.set(data5.languageId, language); + if (this.languageIdMap.size === 1) { + this.singleton = language; } else { - var ic = pts2.length / 2 - 1; - var p0 = ic - 2; - var p1 = ic + 2; - bp0x = qbezierAt(pts2[p0], pts2[ic], pts2[p1], 0.4999); - bp0y = qbezierAt(pts2[p0 + 1], pts2[ic + 1], pts2[p1 + 1], 0.4999); - bp1x = qbezierAt(pts2[p0], pts2[ic], pts2[p1], 0.5); - bp1y = qbezierAt(pts2[p0 + 1], pts2[ic + 1], pts2[p1 + 1], 0.5); + this.singleton = void 0; } - dispX = bp1x - bp0x; - dispY = bp1y - bp0y; } - rs.midtgtArrowAngle = getAngleFromDisp(dispX, dispY); - rs.midDispX = dispX; - rs.midDispY = dispY; - dispX *= -1; - dispY *= -1; - if (isSegments) { - var pts2 = rs.allpts; - if (pts2.length / 2 % 2 === 0) ; - else if (!rs.isRound) { - var i2 = pts2.length / 2 - 1; - var i3 = i2 + 2; - dispX = -(pts2[i3] - pts2[i2]); - dispY = -(pts2[i3 + 1] - pts2[i2 + 1]); + getServices(uri) { + var _a, _b; + if (this.singleton !== void 0) { + return this.singleton; + } + if (this.languageIdMap.size === 0) { + throw new Error("The service registry is empty. Use `register` to register the services of a language."); + } + const languageId = (_b = (_a = this.textDocuments) === null || _a === void 0 ? void 0 : _a.get(uri)) === null || _b === void 0 ? void 0 : _b.languageId; + if (languageId !== void 0) { + const services2 = this.languageIdMap.get(languageId); + if (services2) { + return services2; + } + } + const ext = UriUtils.extname(uri); + const services = this.fileExtensionMap.get(ext); + if (!services) { + if (languageId) { + throw new Error(`The service registry contains no services for the extension '${ext}' for language '${languageId}'.`); + } else { + throw new Error(`The service registry contains no services for the extension '${ext}'.`); + } } + return services; } - rs.midsrcArrowAngle = getAngleFromDisp(dispX, dispY); - if (isSegments) { - dispX = endX - rs.segpts[rs.segpts.length - 2]; - dispY = endY - rs.segpts[rs.segpts.length - 1]; - } else if (isMultibezier || isCompound || isSelf || isBezier) { - var pts2 = rs.allpts; - var l2 = pts2.length; - var bX = qbezierAt(pts2[l2 - 6], pts2[l2 - 4], pts2[l2 - 2], 0.9); - var bY = qbezierAt(pts2[l2 - 5], pts2[l2 - 3], pts2[l2 - 1], 0.9); - dispX = endX - bX; - dispY = endY - bY; - } else { - dispX = endX - midX; - dispY = endY - midY; + hasServices(uri) { + try { + this.getServices(uri); + return true; + } catch (_a) { + return false; + } } - rs.tgtArrowAngle = getAngleFromDisp(dispX, dispY); - }; - BRp$d.getArrowWidth = BRp$d.getArrowHeight = function(edgeWidth, scale2) { - var cache3 = this.arrowWidthCache = this.arrowWidthCache || {}; - var cachedVal = cache3[edgeWidth + ", " + scale2]; - if (cachedVal) { - return cachedVal; + get all() { + return Array.from(this.languageIdMap.values()); } - cachedVal = Math.max(Math.pow(edgeWidth * 13.37, 0.9), 29) * scale2; - cache3[edgeWidth + ", " + scale2] = cachedVal; - return cachedVal; }; - v1 = {}; - v2 = {}; - asVec = /* @__PURE__ */ __name(function asVec2(p3, pp, v3) { - v3.x = pp.x - p3.x; - v3.y = pp.y - p3.y; - v3.len = Math.sqrt(v3.x * v3.x + v3.y * v3.y); - v3.nx = v3.x / v3.len; - v3.ny = v3.y / v3.len; - v3.ang = Math.atan2(v3.ny, v3.nx); - }, "asVec"); - invertVec = /* @__PURE__ */ __name(function invertVec2(originalV, invertedV) { - invertedV.x = originalV.x * -1; - invertedV.y = originalV.y * -1; - invertedV.nx = originalV.nx * -1; - invertedV.ny = originalV.ny * -1; - invertedV.ang = originalV.ang > 0 ? -(Math.PI - originalV.ang) : Math.PI + originalV.ang; - }, "invertVec"); - calcCornerArc = /* @__PURE__ */ __name(function calcCornerArc2(previousPoint, currentPoint, nextPoint, radiusMax, isArcRadius) { - previousPoint !== lastPoint ? asVec(currentPoint, previousPoint, v1) : invertVec(v2, v1); - asVec(currentPoint, nextPoint, v2); - sinA = v1.nx * v2.ny - v1.ny * v2.nx; - sinA90 = v1.nx * v2.nx - v1.ny * -v2.ny; - angle = Math.asin(Math.max(-1, Math.min(1, sinA))); - if (Math.abs(angle) < 1e-6) { - x3 = currentPoint.x; - y3 = currentPoint.y; - cRadius = radius = 0; - return; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/validation-registry.js + function diagnosticData(code) { + return { code }; + } + var ValidationCategory, ValidationRegistry; + var init_validation_registry = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/validation-registry.js"() { + "use strict"; + init_lib3(); + init_collections(); + init_promise_utils(); + init_stream(); + __name(diagnosticData, "diagnosticData"); + (function(ValidationCategory2) { + ValidationCategory2.all = ["fast", "slow", "built-in"]; + })(ValidationCategory || (ValidationCategory = {})); + ValidationRegistry = class { + static { + __name(this, "ValidationRegistry"); } - radDirection = 1; - drawDirection = false; - if (sinA90 < 0) { - if (angle < 0) { - angle = Math.PI + angle; - } else { - angle = Math.PI - angle; - radDirection = -1; - drawDirection = true; + constructor(services) { + this.entries = new MultiMap(); + this.entriesBefore = []; + this.entriesAfter = []; + this.reflection = services.shared.AstReflection; + } + /** + * Register a set of validation checks. Each value in the record can be either a single validation check (i.e. a function) + * or an array of validation checks. + * + * @param checksRecord Set of validation checks to register. + * @param category Optional category for the validation checks (defaults to `'fast'`). + * @param thisObj Optional object to be used as `this` when calling the validation check functions. + */ + register(checksRecord, thisObj = this, category = "fast") { + if (category === "built-in") { + throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors."); } - } else { - if (angle > 0) { - radDirection = -1; - drawDirection = true; + for (const [type3, ch] of Object.entries(checksRecord)) { + const callbacks = ch; + if (Array.isArray(callbacks)) { + for (const check of callbacks) { + const entry = { + check: this.wrapValidationException(check, thisObj), + category + }; + this.addEntry(type3, entry); + } + } else if (typeof callbacks === "function") { + const entry = { + check: this.wrapValidationException(callbacks, thisObj), + category + }; + this.addEntry(type3, entry); + } else { + assertUnreachable(callbacks); + } } } - if (currentPoint.radius !== void 0) { - radius = currentPoint.radius; - } else { - radius = radiusMax; + wrapValidationException(check, thisObj) { + return async (node2, accept, cancelToken) => { + await this.handleException(() => check.call(thisObj, node2, accept, cancelToken), "An error occurred during validation", accept, node2); + }; } - halfAngle = angle / 2; - limit = Math.min(v1.len / 2, v2.len / 2); - if (isArcRadius) { - lenOut = Math.abs(Math.cos(halfAngle) * radius / Math.sin(halfAngle)); - if (lenOut > limit) { - lenOut = limit; - cRadius = Math.abs(lenOut * Math.sin(halfAngle) / Math.cos(halfAngle)); - } else { - cRadius = radius; + async handleException(functionality, messageContext, accept, node2) { + try { + await functionality(); + } catch (err) { + if (isOperationCancelled(err)) { + throw err; + } + console.error(`${messageContext}:`, err); + if (err instanceof Error && err.stack) { + console.error(err.stack); + } + const messageDetails = err instanceof Error ? err.message : String(err); + accept("error", `${messageContext}: ${messageDetails}`, { node: node2 }); } - } else { - lenOut = Math.min(limit, radius); - cRadius = Math.abs(lenOut * Math.sin(halfAngle) / Math.cos(halfAngle)); } - stopX = currentPoint.x + v2.nx * lenOut; - stopY = currentPoint.y + v2.ny * lenOut; - x3 = stopX - v2.ny * cRadius * radDirection; - y3 = stopY + v2.nx * cRadius * radDirection; - startX = currentPoint.x + v1.nx * lenOut; - startY = currentPoint.y + v1.ny * lenOut; - lastPoint = currentPoint; - }, "calcCornerArc"); - __name(drawPreparedRoundCorner, "drawPreparedRoundCorner"); - __name(getRoundCorner, "getRoundCorner"); - BRp$c = {}; - BRp$c.findMidptPtsEtc = function(edge, pairInfo) { - var posPts = pairInfo.posPts, intersectionPts = pairInfo.intersectionPts, vectorNormInverse = pairInfo.vectorNormInverse; - var midptPts; - var srcManEndpt = edge.pstyle("source-endpoint"); - var tgtManEndpt = edge.pstyle("target-endpoint"); - var haveManualEndPts = srcManEndpt.units != null && tgtManEndpt.units != null; - var recalcVectorNormInverse = /* @__PURE__ */ __name(function recalcVectorNormInverse2(x12, y12, x23, y23) { - var dy = y23 - y12; - var dx = x23 - x12; - var l2 = Math.sqrt(dx * dx + dy * dy); - return { - x: -dy / l2, - y: dx / l2 - }; - }, "recalcVectorNormInverse"); - var edgeDistances = edge.pstyle("edge-distances").value; - switch (edgeDistances) { - case "node-position": - midptPts = posPts; - break; - case "intersection": - midptPts = intersectionPts; - break; - case "endpoints": { - if (haveManualEndPts) { - var _this$manualEndptToPx = this.manualEndptToPx(edge.source()[0], srcManEndpt), _this$manualEndptToPx2 = _slicedToArray(_this$manualEndptToPx, 2), x1 = _this$manualEndptToPx2[0], y1 = _this$manualEndptToPx2[1]; - var _this$manualEndptToPx3 = this.manualEndptToPx(edge.target()[0], tgtManEndpt), _this$manualEndptToPx4 = _slicedToArray(_this$manualEndptToPx3, 2), x22 = _this$manualEndptToPx4[0], y22 = _this$manualEndptToPx4[1]; - var endPts = { - x1, - y1, - x2: x22, - y2: y22 - }; - vectorNormInverse = recalcVectorNormInverse(x1, y1, x22, y22); - midptPts = endPts; - } else { - warn("Edge ".concat(edge.id(), " has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")); - midptPts = intersectionPts; - } - break; + addEntry(type3, entry) { + if (type3 === "AstNode") { + this.entries.add("AstNode", entry); + return; + } + for (const subtype of this.reflection.getAllSubTypes(type3)) { + this.entries.add(subtype, entry); } } - return { - midptPts, - vectorNormInverse - }; - }; - BRp$c.findHaystackPoints = function(edges3) { - for (var i2 = 0; i2 < edges3.length; i2++) { - var edge = edges3[i2]; - var _p = edge._private; - var rs = _p.rscratch; - if (!rs.haystack) { - var angle2 = Math.random() * 2 * Math.PI; - rs.source = { - x: Math.cos(angle2), - y: Math.sin(angle2) - }; - angle2 = Math.random() * 2 * Math.PI; - rs.target = { - x: Math.cos(angle2), - y: Math.sin(angle2) - }; + getChecks(type3, categories) { + let checks = stream(this.entries.get(type3)).concat(this.entries.get("AstNode")); + if (categories) { + checks = checks.filter((entry) => categories.includes(entry.category)); } - var src = _p.source; - var tgt = _p.target; - var srcPos = src.position(); - var tgtPos = tgt.position(); - var srcW = src.width(); - var tgtW = tgt.width(); - var srcH = src.height(); - var tgtH = tgt.height(); - var radius2 = edge.pstyle("haystack-radius").value; - var halfRadius = radius2 / 2; - rs.haystackPts = rs.allpts = [rs.source.x * srcW * halfRadius + srcPos.x, rs.source.y * srcH * halfRadius + srcPos.y, rs.target.x * tgtW * halfRadius + tgtPos.x, rs.target.y * tgtH * halfRadius + tgtPos.y]; - rs.midX = (rs.allpts[0] + rs.allpts[2]) / 2; - rs.midY = (rs.allpts[1] + rs.allpts[3]) / 2; - rs.edgeType = "haystack"; - rs.haystack = true; - this.storeEdgeProjections(edge); - this.calculateArrowAngles(edge); - this.recalculateEdgeLabelProjections(edge); - this.calculateLabelAngles(edge); + return checks.map((entry) => entry.check); } - }; - BRp$c.findSegmentsPoints = function(edge, pairInfo) { - var rs = edge._private.rscratch; - var segmentWs = edge.pstyle("segment-weights"); - var segmentDs = edge.pstyle("segment-distances"); - var segmentRs = edge.pstyle("segment-radii"); - var segmentTs = edge.pstyle("radius-type"); - var segmentsN = Math.min(segmentWs.pfValue.length, segmentDs.pfValue.length); - var lastRadius = segmentRs.pfValue[segmentRs.pfValue.length - 1]; - var lastRadiusType = segmentTs.pfValue[segmentTs.pfValue.length - 1]; - rs.edgeType = "segments"; - rs.segpts = []; - rs.radii = []; - rs.isArcRadius = []; - for (var s2 = 0; s2 < segmentsN; s2++) { - var w3 = segmentWs.pfValue[s2]; - var d2 = segmentDs.pfValue[s2]; - var w1 = 1 - w3; - var w22 = w3; - var _this$findMidptPtsEtc = this.findMidptPtsEtc(edge, pairInfo), midptPts = _this$findMidptPtsEtc.midptPts, vectorNormInverse = _this$findMidptPtsEtc.vectorNormInverse; - var adjustedMidpt = { - x: midptPts.x1 * w1 + midptPts.x2 * w22, - y: midptPts.y1 * w1 + midptPts.y2 * w22 + /** + * Register logic which will be executed once before validating all the nodes of an AST/Langium document. + * This helps to prepare or initialize some information which are required or reusable for the following checks on the AstNodes. + * + * As an example, for validating unique fully-qualified names of nodes in the AST, + * here the map for mapping names to nodes could be established. + * During the usual checks on the nodes, they are put into this map with their name. + * + * Note that this approach makes validations stateful, which is relevant e.g. when cancelling the validation. + * Therefore it is recommended to clear stored information + * _before_ validating an AST to validate each AST unaffected from other ASTs + * AND _after_ validating the AST to free memory by information which are no longer used. + * + * @param checkBefore a set-up function which will be called once before actually validating an AST + * @param thisObj Optional object to be used as `this` when calling the validation check functions. + */ + registerBeforeDocument(checkBefore, thisObj = this) { + this.entriesBefore.push(this.wrapPreparationException(checkBefore, "An error occurred during set-up of the validation", thisObj)); + } + /** + * Register logic which will be executed once after validating all the nodes of an AST/Langium document. + * This helps to finally evaluate information which are collected during the checks on the AstNodes. + * + * As an example, for validating unique fully-qualified names of nodes in the AST, + * here the map with all the collected nodes and their names is checked + * and validation hints are created for all nodes with the same name. + * + * Note that this approach makes validations stateful, which is relevant e.g. when cancelling the validation. + * Therefore it is recommended to clear stored information + * _before_ validating an AST to validate each AST unaffected from other ASTs + * AND _after_ validating the AST to free memory by information which are no longer used. + * + * @param checkBefore a set-up function which will be called once before actually validating an AST + * @param thisObj Optional object to be used as `this` when calling the validation check functions. + */ + registerAfterDocument(checkAfter, thisObj = this) { + this.entriesAfter.push(this.wrapPreparationException(checkAfter, "An error occurred during tear-down of the validation", thisObj)); + } + wrapPreparationException(check, messageContext, thisObj) { + return async (rootNode, accept, categories, cancelToken) => { + await this.handleException(() => check.call(thisObj, rootNode, accept, categories, cancelToken), messageContext, accept, rootNode); }; - rs.segpts.push(adjustedMidpt.x + vectorNormInverse.x * d2, adjustedMidpt.y + vectorNormInverse.y * d2); - rs.radii.push(segmentRs.pfValue[s2] !== void 0 ? segmentRs.pfValue[s2] : lastRadius); - rs.isArcRadius.push((segmentTs.pfValue[s2] !== void 0 ? segmentTs.pfValue[s2] : lastRadiusType) === "arc-radius"); } - }; - BRp$c.findLoopPoints = function(edge, pairInfo, i2, edgeIsUnbundled) { - var rs = edge._private.rscratch; - var dirCounts = pairInfo.dirCounts, srcPos = pairInfo.srcPos; - var ctrlptDists = edge.pstyle("control-point-distances"); - var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : void 0; - var loopDir = edge.pstyle("loop-direction").pfValue; - var loopSwp = edge.pstyle("loop-sweep").pfValue; - var stepSize = edge.pstyle("control-point-step-size").pfValue; - rs.edgeType = "self"; - var j2 = i2; - var loopDist = stepSize; - if (edgeIsUnbundled) { - j2 = 0; - loopDist = ctrlptDist; + get checksBefore() { + return this.entriesBefore; } - var loopAngle = loopDir - Math.PI / 2; - var outAngle = loopAngle - loopSwp / 2; - var inAngle = loopAngle + loopSwp / 2; - var dc = String(loopDir + "_" + loopSwp); - j2 = dirCounts[dc] === void 0 ? dirCounts[dc] = 0 : ++dirCounts[dc]; - rs.ctrlpts = [srcPos.x + Math.cos(outAngle) * 1.4 * loopDist * (j2 / 3 + 1), srcPos.y + Math.sin(outAngle) * 1.4 * loopDist * (j2 / 3 + 1), srcPos.x + Math.cos(inAngle) * 1.4 * loopDist * (j2 / 3 + 1), srcPos.y + Math.sin(inAngle) * 1.4 * loopDist * (j2 / 3 + 1)]; - }; - BRp$c.findCompoundLoopPoints = function(edge, pairInfo, i2, edgeIsUnbundled) { - var rs = edge._private.rscratch; - rs.edgeType = "compound"; - var srcPos = pairInfo.srcPos, tgtPos = pairInfo.tgtPos, srcW = pairInfo.srcW, srcH = pairInfo.srcH, tgtW = pairInfo.tgtW, tgtH = pairInfo.tgtH; - var stepSize = edge.pstyle("control-point-step-size").pfValue; - var ctrlptDists = edge.pstyle("control-point-distances"); - var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : void 0; - var j2 = i2; - var loopDist = stepSize; - if (edgeIsUnbundled) { - j2 = 0; - loopDist = ctrlptDist; + get checksAfter() { + return this.entriesAfter; } - var loopW = 50; - var loopaPos = { - x: srcPos.x - srcW / 2, - y: srcPos.y - srcH / 2 - }; - var loopbPos = { - x: tgtPos.x - tgtW / 2, - y: tgtPos.y - tgtH / 2 - }; - var loopPos = { - x: Math.min(loopaPos.x, loopbPos.x), - y: Math.min(loopaPos.y, loopbPos.y) - }; - var minCompoundStretch = 0.5; - var compoundStretchA = Math.max(minCompoundStretch, Math.log(srcW * 0.01)); - var compoundStretchB = Math.max(minCompoundStretch, Math.log(tgtW * 0.01)); - rs.ctrlpts = [loopPos.x, loopPos.y - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j2 / 3 + 1) * compoundStretchA, loopPos.x - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j2 / 3 + 1) * compoundStretchB, loopPos.y]; - }; - BRp$c.findStraightEdgePoints = function(edge) { - edge._private.rscratch.edgeType = "straight"; }; - BRp$c.findBezierPoints = function(edge, pairInfo, i2, edgeIsUnbundled, edgeIsSwapped) { - var rs = edge._private.rscratch; - var stepSize = edge.pstyle("control-point-step-size").pfValue; - var ctrlptDists = edge.pstyle("control-point-distances"); - var ctrlptWs = edge.pstyle("control-point-weights"); - var bezierN = ctrlptDists && ctrlptWs ? Math.min(ctrlptDists.value.length, ctrlptWs.value.length) : 1; - var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : void 0; - var ctrlptWeight = ctrlptWs.value[0]; - var multi = edgeIsUnbundled; - rs.edgeType = multi ? "multibezier" : "bezier"; - rs.ctrlpts = []; - for (var b2 = 0; b2 < bezierN; b2++) { - var normctrlptDist = (0.5 - pairInfo.eles.length / 2 + i2) * stepSize * (edgeIsSwapped ? -1 : 1); - var manctrlptDist = void 0; - var sign2 = signum(normctrlptDist); - if (multi) { - ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[b2] : stepSize; - ctrlptWeight = ctrlptWs.value[b2]; - } - if (edgeIsUnbundled) { - manctrlptDist = ctrlptDist; - } else { - manctrlptDist = ctrlptDist !== void 0 ? sign2 * ctrlptDist : void 0; - } - var distanceFromMidpoint = manctrlptDist !== void 0 ? manctrlptDist : normctrlptDist; - var w1 = 1 - ctrlptWeight; - var w22 = ctrlptWeight; - var _this$findMidptPtsEtc2 = this.findMidptPtsEtc(edge, pairInfo), midptPts = _this$findMidptPtsEtc2.midptPts, vectorNormInverse = _this$findMidptPtsEtc2.vectorNormInverse; - var adjustedMidpt = { - x: midptPts.x1 * w1 + midptPts.x2 * w22, - y: midptPts.y1 * w1 + midptPts.y2 * w22 - }; - rs.ctrlpts.push(adjustedMidpt.x + vectorNormInverse.x * distanceFromMidpoint, adjustedMidpt.y + vectorNormInverse.y * distanceFromMidpoint); - } + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/document-validator.js + function getDiagnosticRange(info2) { + if (info2.range) { + return info2.range; + } + let cstNode; + if (typeof info2.property === "string") { + cstNode = findNodeForProperty(info2.node.$cstNode, info2.property, info2.index); + } else if (typeof info2.keyword === "string") { + cstNode = findNodeForKeyword(info2.node.$cstNode, info2.keyword, info2.index); + } + cstNode !== null && cstNode !== void 0 ? cstNode : cstNode = info2.node.$cstNode; + if (!cstNode) { + return { + start: { line: 0, character: 0 }, + end: { line: 0, character: 0 } }; - BRp$c.findTaxiPoints = function(edge, pairInfo) { - var rs = edge._private.rscratch; - rs.edgeType = "segments"; - var VERTICAL = "vertical"; - var HORIZONTAL = "horizontal"; - var LEFTWARD = "leftward"; - var RIGHTWARD = "rightward"; - var DOWNWARD = "downward"; - var UPWARD = "upward"; - var AUTO = "auto"; - var posPts = pairInfo.posPts, srcW = pairInfo.srcW, srcH = pairInfo.srcH, tgtW = pairInfo.tgtW, tgtH = pairInfo.tgtH; - var edgeDistances = edge.pstyle("edge-distances").value; - var dIncludesNodeBody = edgeDistances !== "node-position"; - var taxiDir = edge.pstyle("taxi-direction").value; - var rawTaxiDir = taxiDir; - var taxiTurn = edge.pstyle("taxi-turn"); - var turnIsPercent = taxiTurn.units === "%"; - var taxiTurnPfVal = taxiTurn.pfValue; - var turnIsNegative = taxiTurnPfVal < 0; - var minD = edge.pstyle("taxi-turn-min-distance").pfValue; - var dw = dIncludesNodeBody ? (srcW + tgtW) / 2 : 0; - var dh = dIncludesNodeBody ? (srcH + tgtH) / 2 : 0; - var pdx = posPts.x2 - posPts.x1; - var pdy = posPts.y2 - posPts.y1; - var subDWH = /* @__PURE__ */ __name(function subDWH2(dxy, dwh) { - if (dxy > 0) { - return Math.max(dxy - dwh, 0); - } else { - return Math.min(dxy + dwh, 0); - } - }, "subDWH"); - var dx = subDWH(pdx, dw); - var dy = subDWH(pdy, dh); - var isExplicitDir = false; - if (rawTaxiDir === AUTO) { - taxiDir = Math.abs(dx) > Math.abs(dy) ? HORIZONTAL : VERTICAL; - } else if (rawTaxiDir === UPWARD || rawTaxiDir === DOWNWARD) { - taxiDir = VERTICAL; - isExplicitDir = true; - } else if (rawTaxiDir === LEFTWARD || rawTaxiDir === RIGHTWARD) { - taxiDir = HORIZONTAL; - isExplicitDir = true; - } - var isVert = taxiDir === VERTICAL; - var l2 = isVert ? dy : dx; - var pl = isVert ? pdy : pdx; - var sgnL = signum(pl); - var forcedDir = false; - if (!(isExplicitDir && (turnIsPercent || turnIsNegative)) && (rawTaxiDir === DOWNWARD && pl < 0 || rawTaxiDir === UPWARD && pl > 0 || rawTaxiDir === LEFTWARD && pl > 0 || rawTaxiDir === RIGHTWARD && pl < 0)) { - sgnL *= -1; - l2 = sgnL * Math.abs(l2); - forcedDir = true; + } + return cstNode.range; + } + function toDiagnosticSeverity(severity) { + switch (severity) { + case "error": + return 1; + case "warning": + return 2; + case "info": + return 3; + case "hint": + return 4; + default: + throw new Error("Invalid diagnostic severity: " + severity); + } + } + function toDiagnosticData(severity) { + switch (severity) { + case "error": + return diagnosticData(DocumentValidator.LexingError); + case "warning": + return diagnosticData(DocumentValidator.LexingWarning); + case "info": + return diagnosticData(DocumentValidator.LexingInfo); + case "hint": + return diagnosticData(DocumentValidator.LexingHint); + default: + throw new Error("Invalid diagnostic severity: " + severity); + } + } + var DefaultDocumentValidator, DocumentValidator; + var init_document_validator = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/document-validator.js"() { + "use strict"; + init_cancellation(); + init_grammar_utils(); + init_ast_utils(); + init_cst_utils(); + init_promise_utils(); + init_validation_registry(); + DefaultDocumentValidator = class { + static { + __name(this, "DefaultDocumentValidator"); } - var d2; - if (turnIsPercent) { - var p3 = taxiTurnPfVal < 0 ? 1 + taxiTurnPfVal : taxiTurnPfVal; - d2 = p3 * l2; - } else { - var k2 = taxiTurnPfVal < 0 ? l2 : 0; - d2 = k2 + taxiTurnPfVal * sgnL; + constructor(services) { + this.validationRegistry = services.validation.ValidationRegistry; + this.metadata = services.LanguageMetaData; } - var getIsTooClose = /* @__PURE__ */ __name(function getIsTooClose2(d3) { - return Math.abs(d3) < minD || Math.abs(d3) >= Math.abs(l2); - }, "getIsTooClose"); - var isTooCloseSrc = getIsTooClose(d2); - var isTooCloseTgt = getIsTooClose(Math.abs(l2) - Math.abs(d2)); - var isTooClose = isTooCloseSrc || isTooCloseTgt; - if (isTooClose && !forcedDir) { - if (isVert) { - var lShapeInsideSrc = Math.abs(pl) <= srcH / 2; - var lShapeInsideTgt = Math.abs(pdx) <= tgtW / 2; - if (lShapeInsideSrc) { - var x5 = (posPts.x1 + posPts.x2) / 2; - var y1 = posPts.y1, y22 = posPts.y2; - rs.segpts = [x5, y1, x5, y22]; - } else if (lShapeInsideTgt) { - var y5 = (posPts.y1 + posPts.y2) / 2; - var x1 = posPts.x1, x22 = posPts.x2; - rs.segpts = [x1, y5, x22, y5]; - } else { - rs.segpts = [posPts.x1, posPts.y2]; + async validateDocument(document2, options2 = {}, cancelToken = cancellation_exports.CancellationToken.None) { + const parseResult = document2.parseResult; + const diagnostics = []; + await interruptAndCheck(cancelToken); + if (!options2.categories || options2.categories.includes("built-in")) { + this.processLexingErrors(parseResult, diagnostics, options2); + if (options2.stopAfterLexingErrors && diagnostics.some((d3) => { + var _a; + return ((_a = d3.data) === null || _a === void 0 ? void 0 : _a.code) === DocumentValidator.LexingError; + })) { + return diagnostics; } - } else { - var _lShapeInsideSrc = Math.abs(pl) <= srcW / 2; - var _lShapeInsideTgt = Math.abs(pdy) <= tgtH / 2; - if (_lShapeInsideSrc) { - var _y = (posPts.y1 + posPts.y2) / 2; - var _x = posPts.x1, _x2 = posPts.x2; - rs.segpts = [_x, _y, _x2, _y]; - } else if (_lShapeInsideTgt) { - var _x3 = (posPts.x1 + posPts.x2) / 2; - var _y2 = posPts.y1, _y3 = posPts.y2; - rs.segpts = [_x3, _y2, _x3, _y3]; - } else { - rs.segpts = [posPts.x2, posPts.y1]; + this.processParsingErrors(parseResult, diagnostics, options2); + if (options2.stopAfterParsingErrors && diagnostics.some((d3) => { + var _a; + return ((_a = d3.data) === null || _a === void 0 ? void 0 : _a.code) === DocumentValidator.ParsingError; + })) { + return diagnostics; + } + this.processLinkingErrors(document2, diagnostics, options2); + if (options2.stopAfterLinkingErrors && diagnostics.some((d3) => { + var _a; + return ((_a = d3.data) === null || _a === void 0 ? void 0 : _a.code) === DocumentValidator.LinkingError; + })) { + return diagnostics; } } - } else { - if (isVert) { - var _y4 = posPts.y1 + d2 + (dIncludesNodeBody ? srcH / 2 * sgnL : 0); - var _x4 = posPts.x1, _x5 = posPts.x2; - rs.segpts = [_x4, _y4, _x5, _y4]; - } else { - var _x6 = posPts.x1 + d2 + (dIncludesNodeBody ? srcW / 2 * sgnL : 0); - var _y5 = posPts.y1, _y6 = posPts.y2; - rs.segpts = [_x6, _y5, _x6, _y6]; + try { + diagnostics.push(...await this.validateAst(parseResult.value, options2, cancelToken)); + } catch (err) { + if (isOperationCancelled(err)) { + throw err; + } + console.error("An error occurred during validation:", err); } + await interruptAndCheck(cancelToken); + return diagnostics; } - if (rs.isRound) { - var radius2 = edge.pstyle("taxi-radius").value; - var isArcRadius = edge.pstyle("radius-type").value[0] === "arc-radius"; - rs.radii = new Array(rs.segpts.length / 2).fill(radius2); - rs.isArcRadius = new Array(rs.segpts.length / 2).fill(isArcRadius); - } - }; - BRp$c.tryToCorrectInvalidPoints = function(edge, pairInfo) { - var rs = edge._private.rscratch; - if (rs.edgeType === "bezier") { - var srcPos = pairInfo.srcPos, tgtPos = pairInfo.tgtPos, srcW = pairInfo.srcW, srcH = pairInfo.srcH, tgtW = pairInfo.tgtW, tgtH = pairInfo.tgtH, srcShape = pairInfo.srcShape, tgtShape = pairInfo.tgtShape, srcCornerRadius = pairInfo.srcCornerRadius, tgtCornerRadius = pairInfo.tgtCornerRadius, srcRs = pairInfo.srcRs, tgtRs = pairInfo.tgtRs; - var badStart = !number$1(rs.startX) || !number$1(rs.startY); - var badAStart = !number$1(rs.arrowStartX) || !number$1(rs.arrowStartY); - var badEnd = !number$1(rs.endX) || !number$1(rs.endY); - var badAEnd = !number$1(rs.arrowEndX) || !number$1(rs.arrowEndY); - var minCpADistFactor = 3; - var arrowW = this.getArrowWidth(edge.pstyle("width").pfValue, edge.pstyle("arrow-scale").value) * this.arrowShapeWidth; - var minCpADist = minCpADistFactor * arrowW; - var startACpDist = dist({ - x: rs.ctrlpts[0], - y: rs.ctrlpts[1] - }, { - x: rs.startX, - y: rs.startY - }); - var closeStartACp = startACpDist < minCpADist; - var endACpDist = dist({ - x: rs.ctrlpts[0], - y: rs.ctrlpts[1] - }, { - x: rs.endX, - y: rs.endY - }); - var closeEndACp = endACpDist < minCpADist; - var overlapping = false; - if (badStart || badAStart || closeStartACp) { - overlapping = true; - var cpD = { - // delta - x: rs.ctrlpts[0] - srcPos.x, - y: rs.ctrlpts[1] - srcPos.y - }; - var cpL = Math.sqrt(cpD.x * cpD.x + cpD.y * cpD.y); - var cpM = { - // normalised delta - x: cpD.x / cpL, - y: cpD.y / cpL - }; - var radius2 = Math.max(srcW, srcH); - var cpProj = { - // *2 radius guarantees outside shape - x: rs.ctrlpts[0] + cpM.x * 2 * radius2, - y: rs.ctrlpts[1] + cpM.y * 2 * radius2 + processLexingErrors(parseResult, diagnostics, _options) { + var _a, _b, _c; + const lexerDiagnostics = [...parseResult.lexerErrors, ...(_b = (_a = parseResult.lexerReport) === null || _a === void 0 ? void 0 : _a.diagnostics) !== null && _b !== void 0 ? _b : []]; + for (const lexerDiagnostic of lexerDiagnostics) { + const severity = (_c = lexerDiagnostic.severity) !== null && _c !== void 0 ? _c : "error"; + const diagnostic = { + severity: toDiagnosticSeverity(severity), + range: { + start: { + line: lexerDiagnostic.line - 1, + character: lexerDiagnostic.column - 1 + }, + end: { + line: lexerDiagnostic.line - 1, + character: lexerDiagnostic.column + lexerDiagnostic.length - 1 + } + }, + message: lexerDiagnostic.message, + data: toDiagnosticData(severity), + source: this.getSource() }; - var srcCtrlPtIntn = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, cpProj.x, cpProj.y, 0, srcCornerRadius, srcRs); - if (closeStartACp) { - rs.ctrlpts[0] = rs.ctrlpts[0] + cpM.x * (minCpADist - startACpDist); - rs.ctrlpts[1] = rs.ctrlpts[1] + cpM.y * (minCpADist - startACpDist); - } else { - rs.ctrlpts[0] = srcCtrlPtIntn[0] + cpM.x * minCpADist; - rs.ctrlpts[1] = srcCtrlPtIntn[1] + cpM.y * minCpADist; - } + diagnostics.push(diagnostic); } - if (badEnd || badAEnd || closeEndACp) { - overlapping = true; - var _cpD = { - // delta - x: rs.ctrlpts[0] - tgtPos.x, - y: rs.ctrlpts[1] - tgtPos.y - }; - var _cpL = Math.sqrt(_cpD.x * _cpD.x + _cpD.y * _cpD.y); - var _cpM = { - // normalised delta - x: _cpD.x / _cpL, - y: _cpD.y / _cpL - }; - var _radius = Math.max(srcW, srcH); - var _cpProj = { - // *2 radius guarantees outside shape - x: rs.ctrlpts[0] + _cpM.x * 2 * _radius, - y: rs.ctrlpts[1] + _cpM.y * 2 * _radius - }; - var tgtCtrlPtIntn = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, _cpProj.x, _cpProj.y, 0, tgtCornerRadius, tgtRs); - if (closeEndACp) { - rs.ctrlpts[0] = rs.ctrlpts[0] + _cpM.x * (minCpADist - endACpDist); - rs.ctrlpts[1] = rs.ctrlpts[1] + _cpM.y * (minCpADist - endACpDist); + } + processParsingErrors(parseResult, diagnostics, _options) { + for (const parserError of parseResult.parserErrors) { + let range3 = void 0; + if (isNaN(parserError.token.startOffset)) { + if ("previousToken" in parserError) { + const token2 = parserError.previousToken; + if (!isNaN(token2.startOffset)) { + const position5 = { line: token2.endLine - 1, character: token2.endColumn }; + range3 = { start: position5, end: position5 }; + } else { + const position5 = { line: 0, character: 0 }; + range3 = { start: position5, end: position5 }; + } + } } else { - rs.ctrlpts[0] = tgtCtrlPtIntn[0] + _cpM.x * minCpADist; - rs.ctrlpts[1] = tgtCtrlPtIntn[1] + _cpM.y * minCpADist; + range3 = tokenToRange(parserError.token); + } + if (range3) { + const diagnostic = { + severity: toDiagnosticSeverity("error"), + range: range3, + message: parserError.message, + data: diagnosticData(DocumentValidator.ParsingError), + source: this.getSource() + }; + diagnostics.push(diagnostic); } - } - if (overlapping) { - this.findEndpoints(edge); } } - }; - BRp$c.storeAllpts = function(edge) { - var rs = edge._private.rscratch; - if (rs.edgeType === "multibezier" || rs.edgeType === "bezier" || rs.edgeType === "self" || rs.edgeType === "compound") { - rs.allpts = []; - rs.allpts.push(rs.startX, rs.startY); - for (var b2 = 0; b2 + 1 < rs.ctrlpts.length; b2 += 2) { - rs.allpts.push(rs.ctrlpts[b2], rs.ctrlpts[b2 + 1]); - if (b2 + 3 < rs.ctrlpts.length) { - rs.allpts.push((rs.ctrlpts[b2] + rs.ctrlpts[b2 + 2]) / 2, (rs.ctrlpts[b2 + 1] + rs.ctrlpts[b2 + 3]) / 2); + processLinkingErrors(document2, diagnostics, _options) { + for (const reference of document2.references) { + const linkingError = reference.error; + if (linkingError) { + const info2 = { + node: linkingError.container, + property: linkingError.property, + index: linkingError.index, + data: { + code: DocumentValidator.LinkingError, + containerType: linkingError.container.$type, + property: linkingError.property, + refText: linkingError.reference.$refText + } + }; + diagnostics.push(this.toDiagnostic("error", linkingError.message, info2)); } } - rs.allpts.push(rs.endX, rs.endY); - var m2, mt; - if (rs.ctrlpts.length / 2 % 2 === 0) { - m2 = rs.allpts.length / 2 - 1; - rs.midX = rs.allpts[m2]; - rs.midY = rs.allpts[m2 + 1]; - } else { - m2 = rs.allpts.length / 2 - 3; - mt = 0.5; - rs.midX = qbezierAt(rs.allpts[m2], rs.allpts[m2 + 2], rs.allpts[m2 + 4], mt); - rs.midY = qbezierAt(rs.allpts[m2 + 1], rs.allpts[m2 + 3], rs.allpts[m2 + 5], mt); - } - } else if (rs.edgeType === "straight") { - rs.allpts = [rs.startX, rs.startY, rs.endX, rs.endY]; - rs.midX = (rs.startX + rs.endX + rs.arrowStartX + rs.arrowEndX) / 4; - rs.midY = (rs.startY + rs.endY + rs.arrowStartY + rs.arrowEndY) / 4; - } else if (rs.edgeType === "segments") { - rs.allpts = []; - rs.allpts.push(rs.startX, rs.startY); - rs.allpts.push.apply(rs.allpts, rs.segpts); - rs.allpts.push(rs.endX, rs.endY); - if (rs.isRound) { - rs.roundCorners = []; - for (var i2 = 2; i2 + 3 < rs.allpts.length; i2 += 2) { - var radius2 = rs.radii[i2 / 2 - 1]; - var isArcRadius = rs.isArcRadius[i2 / 2 - 1]; - rs.roundCorners.push(getRoundCorner({ - x: rs.allpts[i2 - 2], - y: rs.allpts[i2 - 1] - }, { - x: rs.allpts[i2], - y: rs.allpts[i2 + 1], - radius: radius2 - }, { - x: rs.allpts[i2 + 2], - y: rs.allpts[i2 + 3] - }, radius2, isArcRadius)); - } + } + async validateAst(rootNode, options2, cancelToken = cancellation_exports.CancellationToken.None) { + const validationItems = []; + const acceptor = /* @__PURE__ */ __name((severity, message, info2) => { + validationItems.push(this.toDiagnostic(severity, message, info2)); + }, "acceptor"); + await this.validateAstBefore(rootNode, options2, acceptor, cancelToken); + await this.validateAstNodes(rootNode, options2, acceptor, cancelToken); + await this.validateAstAfter(rootNode, options2, acceptor, cancelToken); + return validationItems; + } + async validateAstBefore(rootNode, options2, acceptor, cancelToken = cancellation_exports.CancellationToken.None) { + var _a; + const checksBefore = this.validationRegistry.checksBefore; + for (const checkBefore of checksBefore) { + await interruptAndCheck(cancelToken); + await checkBefore(rootNode, acceptor, (_a = options2.categories) !== null && _a !== void 0 ? _a : [], cancelToken); } - if (rs.segpts.length % 4 === 0) { - var i22 = rs.segpts.length / 2; - var i1 = i22 - 2; - rs.midX = (rs.segpts[i1] + rs.segpts[i22]) / 2; - rs.midY = (rs.segpts[i1 + 1] + rs.segpts[i22 + 1]) / 2; - } else { - var _i = rs.segpts.length / 2 - 1; - if (!rs.isRound) { - rs.midX = rs.segpts[_i]; - rs.midY = rs.segpts[_i + 1]; - } else { - var point8 = { - x: rs.segpts[_i], - y: rs.segpts[_i + 1] - }; - var corner = rs.roundCorners[_i / 2]; - var v3 = [point8.x - corner.cx, point8.y - corner.cy]; - var factor = corner.radius / Math.sqrt(Math.pow(v3[0], 2) + Math.pow(v3[1], 2)); - v3 = v3.map(function(c3) { - return c3 * factor; - }); - rs.midX = corner.cx + v3[0]; - rs.midY = corner.cy + v3[1]; - rs.midVector = v3; + } + async validateAstNodes(rootNode, options2, acceptor, cancelToken = cancellation_exports.CancellationToken.None) { + await Promise.all(streamAst(rootNode).map(async (node2) => { + await interruptAndCheck(cancelToken); + const checks = this.validationRegistry.getChecks(node2.$type, options2.categories); + for (const check of checks) { + await check(node2, acceptor, cancelToken); } + })); + } + async validateAstAfter(rootNode, options2, acceptor, cancelToken = cancellation_exports.CancellationToken.None) { + var _a; + const checksAfter = this.validationRegistry.checksAfter; + for (const checkAfter of checksAfter) { + await interruptAndCheck(cancelToken); + await checkAfter(rootNode, acceptor, (_a = options2.categories) !== null && _a !== void 0 ? _a : [], cancelToken); } } + toDiagnostic(severity, message, info2) { + return { + message, + range: getDiagnosticRange(info2), + severity: toDiagnosticSeverity(severity), + code: info2.code, + codeDescription: info2.codeDescription, + tags: info2.tags, + relatedInformation: info2.relatedInformation, + data: info2.data, + source: this.getSource() + }; + } + getSource() { + return this.metadata.languageId; + } }; - BRp$c.checkForInvalidEdgeWarning = function(edge) { - var rs = edge[0]._private.rscratch; - if (rs.nodesOverlap || number$1(rs.startX) && number$1(rs.startY) && number$1(rs.endX) && number$1(rs.endY)) { - rs.loggedErr = false; - } else { - if (!rs.loggedErr) { - rs.loggedErr = true; - warn("Edge `" + edge.id() + "` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap."); + __name(getDiagnosticRange, "getDiagnosticRange"); + __name(toDiagnosticSeverity, "toDiagnosticSeverity"); + __name(toDiagnosticData, "toDiagnosticData"); + (function(DocumentValidator2) { + DocumentValidator2.LexingError = "lexing-error"; + DocumentValidator2.LexingWarning = "lexing-warning"; + DocumentValidator2.LexingInfo = "lexing-info"; + DocumentValidator2.LexingHint = "lexing-hint"; + DocumentValidator2.ParsingError = "parsing-error"; + DocumentValidator2.LinkingError = "linking-error"; + })(DocumentValidator || (DocumentValidator = {})); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/ast-descriptions.js + var DefaultAstNodeDescriptionProvider, DefaultReferenceDescriptionProvider; + var init_ast_descriptions = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/ast-descriptions.js"() { + "use strict"; + init_cancellation(); + init_syntax_tree(); + init_ast_utils(); + init_cst_utils(); + init_promise_utils(); + init_uri_utils(); + DefaultAstNodeDescriptionProvider = class { + static { + __name(this, "DefaultAstNodeDescriptionProvider"); + } + constructor(services) { + this.astNodeLocator = services.workspace.AstNodeLocator; + this.nameProvider = services.references.NameProvider; + } + createDescription(node2, name, document2) { + const doc = document2 !== null && document2 !== void 0 ? document2 : getDocument(node2); + name !== null && name !== void 0 ? name : name = this.nameProvider.getName(node2); + const path4 = this.astNodeLocator.getAstNodePath(node2); + if (!name) { + throw new Error(`Node at path ${path4} has no name.`); } + let nameNodeSegment; + const nameSegmentGetter = /* @__PURE__ */ __name(() => { + var _a; + return nameNodeSegment !== null && nameNodeSegment !== void 0 ? nameNodeSegment : nameNodeSegment = toDocumentSegment((_a = this.nameProvider.getNameNode(node2)) !== null && _a !== void 0 ? _a : node2.$cstNode); + }, "nameSegmentGetter"); + return { + node: node2, + name, + get nameSegment() { + return nameSegmentGetter(); + }, + selectionSegment: toDocumentSegment(node2.$cstNode), + type: node2.$type, + documentUri: doc.uri, + path: path4 + }; } }; - BRp$c.findEdgeControlPoints = function(edges3) { - var _this = this; - if (!edges3 || edges3.length === 0) { - return; + DefaultReferenceDescriptionProvider = class { + static { + __name(this, "DefaultReferenceDescriptionProvider"); } - var r2 = this; - var cy = r2.cy; - var hasCompounds = cy.hasCompoundNodes(); - var hashTable = { - map: new Map$2(), - get: /* @__PURE__ */ __name(function get6(pairId2) { - var map22 = this.map.get(pairId2[0]); - if (map22 != null) { - return map22.get(pairId2[1]); - } else { - return null; - } - }, "get"), - set: /* @__PURE__ */ __name(function set6(pairId2, val) { - var map22 = this.map.get(pairId2[0]); - if (map22 == null) { - map22 = new Map$2(); - this.map.set(pairId2[0], map22); - } - map22.set(pairId2[1], val); - }, "set") - }; - var pairIds = []; - var haystackEdges = []; - for (var i2 = 0; i2 < edges3.length; i2++) { - var edge = edges3[i2]; - var _p = edge._private; - var curveStyle = edge.pstyle("curve-style").value; - if (edge.removed() || !edge.takesUpSpace()) { - continue; - } - if (curveStyle === "haystack") { - haystackEdges.push(edge); - continue; - } - var edgeIsUnbundled = curveStyle === "unbundled-bezier" || curveStyle.endsWith("segments") || curveStyle === "straight" || curveStyle === "straight-triangle" || curveStyle.endsWith("taxi"); - var edgeIsBezier = curveStyle === "unbundled-bezier" || curveStyle === "bezier"; - var src = _p.source; - var tgt = _p.target; - var srcIndex = src.poolIndex(); - var tgtIndex = tgt.poolIndex(); - var pairId = [srcIndex, tgtIndex].sort(); - var tableEntry = hashTable.get(pairId); - if (tableEntry == null) { - tableEntry = { - eles: [] - }; - hashTable.set(pairId, tableEntry); - pairIds.push(pairId); + constructor(services) { + this.nodeLocator = services.workspace.AstNodeLocator; + } + async createDescriptions(document2, cancelToken = cancellation_exports.CancellationToken.None) { + const descr = []; + const rootNode = document2.parseResult.value; + for (const astNode of streamAst(rootNode)) { + await interruptAndCheck(cancelToken); + streamReferences(astNode).filter((refInfo) => !isLinkingError(refInfo)).forEach((refInfo) => { + const description = this.createDescription(refInfo); + if (description) { + descr.push(description); + } + }); } - tableEntry.eles.push(edge); - if (edgeIsUnbundled) { - tableEntry.hasUnbundled = true; + return descr; + } + createDescription(refInfo) { + const targetNodeDescr = refInfo.reference.$nodeDescription; + const refCstNode = refInfo.reference.$refNode; + if (!targetNodeDescr || !refCstNode) { + return void 0; } - if (edgeIsBezier) { - tableEntry.hasBezier = true; + const docUri = getDocument(refInfo.container).uri; + return { + sourceUri: docUri, + sourcePath: this.nodeLocator.getAstNodePath(refInfo.container), + targetUri: targetNodeDescr.documentUri, + targetPath: targetNodeDescr.path, + segment: toDocumentSegment(refCstNode), + local: UriUtils.equals(targetNodeDescr.documentUri, docUri) + }; + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/ast-node-locator.js + var DefaultAstNodeLocator; + var init_ast_node_locator = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/ast-node-locator.js"() { + "use strict"; + DefaultAstNodeLocator = class { + static { + __name(this, "DefaultAstNodeLocator"); + } + constructor() { + this.segmentSeparator = "/"; + this.indexSeparator = "@"; + } + getAstNodePath(node2) { + if (node2.$container) { + const containerPath = this.getAstNodePath(node2.$container); + const newSegment = this.getPathSegment(node2); + const nodePath = containerPath + this.segmentSeparator + newSegment; + return nodePath; } + return ""; } - var _loop = /* @__PURE__ */ __name(function _loop2(p4) { - var pairId2 = pairIds[p4]; - var pairInfo = hashTable.get(pairId2); - var swappedpairInfo = void 0; - if (!pairInfo.hasUnbundled) { - var pllEdges = pairInfo.eles[0].parallelEdges().filter(function(e3) { - return e3.isBundledBezier(); - }); - clearArray(pairInfo.eles); - pllEdges.forEach(function(edge2) { - return pairInfo.eles.push(edge2); - }); - pairInfo.eles.sort(function(edge1, edge2) { - return edge1.poolIndex() - edge2.poolIndex(); - }); + getPathSegment({ $containerProperty, $containerIndex }) { + if (!$containerProperty) { + throw new Error("Missing '$containerProperty' in AST node."); } - var firstEdge = pairInfo.eles[0]; - var src2 = firstEdge.source(); - var tgt2 = firstEdge.target(); - if (src2.poolIndex() > tgt2.poolIndex()) { - var temp = src2; - src2 = tgt2; - tgt2 = temp; + if ($containerIndex !== void 0) { + return $containerProperty + this.indexSeparator + $containerIndex; } - var srcPos = pairInfo.srcPos = src2.position(); - var tgtPos = pairInfo.tgtPos = tgt2.position(); - var srcW = pairInfo.srcW = src2.outerWidth(); - var srcH = pairInfo.srcH = src2.outerHeight(); - var tgtW = pairInfo.tgtW = tgt2.outerWidth(); - var tgtH = pairInfo.tgtH = tgt2.outerHeight(); - var srcShape = pairInfo.srcShape = r2.nodeShapes[_this.getNodeShape(src2)]; - var tgtShape = pairInfo.tgtShape = r2.nodeShapes[_this.getNodeShape(tgt2)]; - var srcCornerRadius = pairInfo.srcCornerRadius = src2.pstyle("corner-radius").value === "auto" ? "auto" : src2.pstyle("corner-radius").pfValue; - var tgtCornerRadius = pairInfo.tgtCornerRadius = tgt2.pstyle("corner-radius").value === "auto" ? "auto" : tgt2.pstyle("corner-radius").pfValue; - var tgtRs = pairInfo.tgtRs = tgt2._private.rscratch; - var srcRs = pairInfo.srcRs = src2._private.rscratch; - pairInfo.dirCounts = { - "north": 0, - "west": 0, - "south": 0, - "east": 0, - "northwest": 0, - "southwest": 0, - "northeast": 0, - "southeast": 0 - }; - for (var _i2 = 0; _i2 < pairInfo.eles.length; _i2++) { - var _edge = pairInfo.eles[_i2]; - var rs = _edge[0]._private.rscratch; - var _curveStyle = _edge.pstyle("curve-style").value; - var _edgeIsUnbundled = _curveStyle === "unbundled-bezier" || _curveStyle.endsWith("segments") || _curveStyle.endsWith("taxi"); - var edgeIsSwapped = !src2.same(_edge.source()); - if (!pairInfo.calculatedIntersection && src2 !== tgt2 && (pairInfo.hasBezier || pairInfo.hasUnbundled)) { - pairInfo.calculatedIntersection = true; - var srcOutside = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, tgtPos.x, tgtPos.y, 0, srcCornerRadius, srcRs); - var srcIntn = pairInfo.srcIntn = srcOutside; - var tgtOutside = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, srcPos.x, srcPos.y, 0, tgtCornerRadius, tgtRs); - var tgtIntn = pairInfo.tgtIntn = tgtOutside; - var intersectionPts = pairInfo.intersectionPts = { - x1: srcOutside[0], - x2: tgtOutside[0], - y1: srcOutside[1], - y2: tgtOutside[1] - }; - var posPts = pairInfo.posPts = { - x1: srcPos.x, - x2: tgtPos.x, - y1: srcPos.y, - y2: tgtPos.y - }; - var dy = tgtOutside[1] - srcOutside[1]; - var dx = tgtOutside[0] - srcOutside[0]; - var l2 = Math.sqrt(dx * dx + dy * dy); - var vector = pairInfo.vector = { - x: dx, - y: dy - }; - var vectorNorm = pairInfo.vectorNorm = { - x: vector.x / l2, - y: vector.y / l2 - }; - var vectorNormInverse = { - x: -vectorNorm.y, - y: vectorNorm.x - }; - pairInfo.nodesOverlap = !number$1(l2) || tgtShape.checkPoint(srcOutside[0], srcOutside[1], 0, tgtW, tgtH, tgtPos.x, tgtPos.y, tgtCornerRadius, tgtRs) || srcShape.checkPoint(tgtOutside[0], tgtOutside[1], 0, srcW, srcH, srcPos.x, srcPos.y, srcCornerRadius, srcRs); - pairInfo.vectorNormInverse = vectorNormInverse; - swappedpairInfo = { - nodesOverlap: pairInfo.nodesOverlap, - dirCounts: pairInfo.dirCounts, - calculatedIntersection: true, - hasBezier: pairInfo.hasBezier, - hasUnbundled: pairInfo.hasUnbundled, - eles: pairInfo.eles, - srcPos: tgtPos, - srcRs: tgtRs, - tgtPos: srcPos, - tgtRs: srcRs, - srcW: tgtW, - srcH: tgtH, - tgtW: srcW, - tgtH: srcH, - srcIntn: tgtIntn, - tgtIntn: srcIntn, - srcShape: tgtShape, - tgtShape: srcShape, - posPts: { - x1: posPts.x2, - y1: posPts.y2, - x2: posPts.x1, - y2: posPts.y1 - }, - intersectionPts: { - x1: intersectionPts.x2, - y1: intersectionPts.y2, - x2: intersectionPts.x1, - y2: intersectionPts.y1 - }, - vector: { - x: -vector.x, - y: -vector.y - }, - vectorNorm: { - x: -vectorNorm.x, - y: -vectorNorm.y - }, - vectorNormInverse: { - x: -vectorNormInverse.x, - y: -vectorNormInverse.y - } - }; + return $containerProperty; + } + getAstNode(node2, path4) { + const segments = path4.split(this.segmentSeparator); + return segments.reduce((previousValue, currentValue) => { + if (!previousValue || currentValue.length === 0) { + return previousValue; } - var passedPairInfo = edgeIsSwapped ? swappedpairInfo : pairInfo; - rs.nodesOverlap = passedPairInfo.nodesOverlap; - rs.srcIntn = passedPairInfo.srcIntn; - rs.tgtIntn = passedPairInfo.tgtIntn; - rs.isRound = _curveStyle.startsWith("round"); - if (hasCompounds && (src2.isParent() || src2.isChild() || tgt2.isParent() || tgt2.isChild()) && (src2.parents().anySame(tgt2) || tgt2.parents().anySame(src2) || src2.same(tgt2) && src2.isParent())) { - _this.findCompoundLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); - } else if (src2 === tgt2) { - _this.findLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); - } else if (_curveStyle.endsWith("segments")) { - _this.findSegmentsPoints(_edge, passedPairInfo); - } else if (_curveStyle.endsWith("taxi")) { - _this.findTaxiPoints(_edge, passedPairInfo); - } else if (_curveStyle === "straight" || !_edgeIsUnbundled && pairInfo.eles.length % 2 === 1 && _i2 === Math.floor(pairInfo.eles.length / 2)) { - _this.findStraightEdgePoints(_edge); - } else { - _this.findBezierPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled, edgeIsSwapped); + const propertyIndex = currentValue.indexOf(this.indexSeparator); + if (propertyIndex > 0) { + const property2 = currentValue.substring(0, propertyIndex); + const arrayIndex = parseInt(currentValue.substring(propertyIndex + 1)); + const array4 = previousValue[property2]; + return array4 === null || array4 === void 0 ? void 0 : array4[arrayIndex]; } - _this.findEndpoints(_edge); - _this.tryToCorrectInvalidPoints(_edge, passedPairInfo); - _this.checkForInvalidEdgeWarning(_edge); - _this.storeAllpts(_edge); - _this.storeEdgeProjections(_edge); - _this.calculateArrowAngles(_edge); - _this.recalculateEdgeLabelProjections(_edge); - _this.calculateLabelAngles(_edge); - } - }, "_loop"); - for (var p3 = 0; p3 < pairIds.length; p3++) { - _loop(p3); + return previousValue[currentValue]; + }, node2); } - this.findHaystackPoints(haystackEdges); }; - __name(getPts, "getPts"); - BRp$c.getSegmentPoints = function(edge) { - var rs = edge[0]._private.rscratch; - this.recalculateRenderedStyle(edge); - var type3 = rs.edgeType; - if (type3 === "segments") { - return getPts(rs.segpts); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/event.js + var event_exports = {}; + var init_event3 = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/event.js"() { + "use strict"; + __reExport(event_exports, __toESM(require_events(), 1)); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/configuration.js + var DefaultConfigurationProvider; + var init_configuration = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/configuration.js"() { + "use strict"; + init_event3(); + init_promise_utils(); + DefaultConfigurationProvider = class { + static { + __name(this, "DefaultConfigurationProvider"); } - }; - BRp$c.getControlPoints = function(edge) { - var rs = edge[0]._private.rscratch; - this.recalculateRenderedStyle(edge); - var type3 = rs.edgeType; - if (type3 === "bezier" || type3 === "multibezier" || type3 === "self" || type3 === "compound") { - return getPts(rs.ctrlpts); + constructor(services) { + this._ready = new Deferred(); + this.settings = {}; + this.workspaceConfig = false; + this.onConfigurationSectionUpdateEmitter = new event_exports.Emitter(); + this.serviceRegistry = services.ServiceRegistry; } - }; - BRp$c.getEdgeMidpoint = function(edge) { - var rs = edge[0]._private.rscratch; - this.recalculateRenderedStyle(edge); - return { - x: rs.midX, - y: rs.midY - }; - }; - BRp$b = {}; - BRp$b.manualEndptToPx = function(node2, prop) { - var r2 = this; - var npos = node2.position(); - var w3 = node2.outerWidth(); - var h2 = node2.outerHeight(); - var rs = node2._private.rscratch; - if (prop.value.length === 2) { - var p3 = [prop.pfValue[0], prop.pfValue[1]]; - if (prop.units[0] === "%") { - p3[0] = p3[0] * w3; + get ready() { + return this._ready.promise; + } + initialize(params) { + var _a, _b; + this.workspaceConfig = (_b = (_a = params.capabilities.workspace) === null || _a === void 0 ? void 0 : _a.configuration) !== null && _b !== void 0 ? _b : false; + } + async initialized(params) { + if (this.workspaceConfig) { + if (params.register) { + const languages = this.serviceRegistry.all; + params.register({ + // Listen to configuration changes for all languages + section: languages.map((lang) => this.toSectionName(lang.LanguageMetaData.languageId)) + }); + } + if (params.fetchConfiguration) { + const configToUpdate = this.serviceRegistry.all.map((lang) => ({ + // Fetch the configuration changes for all languages + section: this.toSectionName(lang.LanguageMetaData.languageId) + })); + const configs = await params.fetchConfiguration(configToUpdate); + configToUpdate.forEach((conf5, idx) => { + this.updateSectionConfiguration(conf5.section, configs[idx]); + }); + } } - if (prop.units[1] === "%") { - p3[1] = p3[1] * h2; + this._ready.resolve(); + } + /** + * Updates the cached configurations using the `change` notification parameters. + * + * @param change The parameters of a change configuration notification. + * `settings` property of the change object could be expressed as `Record>` + */ + updateConfiguration(change2) { + if (!change2.settings) { + return; } - p3[0] += npos.x; - p3[1] += npos.y; - return p3; - } else { - var angle2 = prop.pfValue[0]; - angle2 = -Math.PI / 2 + angle2; - var l2 = 2 * Math.max(w3, h2); - var _p = [npos.x + Math.cos(angle2) * l2, npos.y + Math.sin(angle2) * l2]; - return r2.nodeShapes[this.getNodeShape(node2)].intersectLine(npos.x, npos.y, w3, h2, _p[0], _p[1], 0, node2.pstyle("corner-radius").value === "auto" ? "auto" : node2.pstyle("corner-radius").pfValue, rs); + Object.keys(change2.settings).forEach((section) => { + const configuration = change2.settings[section]; + this.updateSectionConfiguration(section, configuration); + this.onConfigurationSectionUpdateEmitter.fire({ section, configuration }); + }); } - }; - BRp$b.findEndpoints = function(edge) { - var r2 = this; - var intersect3; - var source = edge.source()[0]; - var target = edge.target()[0]; - var srcPos = source.position(); - var tgtPos = target.position(); - var tgtArShape = edge.pstyle("target-arrow-shape").value; - var srcArShape = edge.pstyle("source-arrow-shape").value; - var tgtDist = edge.pstyle("target-distance-from-node").pfValue; - var srcDist = edge.pstyle("source-distance-from-node").pfValue; - var srcRs = source._private.rscratch; - var tgtRs = target._private.rscratch; - var curveStyle = edge.pstyle("curve-style").value; - var rs = edge._private.rscratch; - var et2 = rs.edgeType; - var taxi = curveStyle === "taxi"; - var self2 = et2 === "self" || et2 === "compound"; - var bezier = et2 === "bezier" || et2 === "multibezier" || self2; - var multi = et2 !== "bezier"; - var lines = et2 === "straight" || et2 === "segments"; - var segments = et2 === "segments"; - var hasEndpts = bezier || multi || lines; - var overrideEndpts = self2 || taxi; - var srcManEndpt = edge.pstyle("source-endpoint"); - var srcManEndptVal = overrideEndpts ? "outside-to-node" : srcManEndpt.value; - var srcCornerRadius = source.pstyle("corner-radius").value === "auto" ? "auto" : source.pstyle("corner-radius").pfValue; - var tgtManEndpt = edge.pstyle("target-endpoint"); - var tgtManEndptVal = overrideEndpts ? "outside-to-node" : tgtManEndpt.value; - var tgtCornerRadius = target.pstyle("corner-radius").value === "auto" ? "auto" : target.pstyle("corner-radius").pfValue; - rs.srcManEndpt = srcManEndpt; - rs.tgtManEndpt = tgtManEndpt; - var p1; - var p22; - var p1_i; - var p2_i; - if (bezier) { - var cpStart = [rs.ctrlpts[0], rs.ctrlpts[1]]; - var cpEnd = multi ? [rs.ctrlpts[rs.ctrlpts.length - 2], rs.ctrlpts[rs.ctrlpts.length - 1]] : cpStart; - p1 = cpEnd; - p22 = cpStart; - } else if (lines) { - var srcArrowFromPt = !segments ? [tgtPos.x, tgtPos.y] : rs.segpts.slice(0, 2); - var tgtArrowFromPt = !segments ? [srcPos.x, srcPos.y] : rs.segpts.slice(rs.segpts.length - 2); - p1 = tgtArrowFromPt; - p22 = srcArrowFromPt; + updateSectionConfiguration(section, configuration) { + this.settings[section] = configuration; } - if (tgtManEndptVal === "inside-to-node") { - intersect3 = [tgtPos.x, tgtPos.y]; - } else if (tgtManEndpt.units) { - intersect3 = this.manualEndptToPx(target, tgtManEndpt); - } else if (tgtManEndptVal === "outside-to-line") { - intersect3 = rs.tgtIntn; - } else { - if (tgtManEndptVal === "outside-to-node" || tgtManEndptVal === "outside-to-node-or-label") { - p1_i = p1; - } else if (tgtManEndptVal === "outside-to-line" || tgtManEndptVal === "outside-to-line-or-label") { - p1_i = [srcPos.x, srcPos.y]; + /** + * Returns a configuration value stored for the given language. + * + * @param language The language id + * @param configuration Configuration name + */ + async getConfiguration(language, configuration) { + await this.ready; + const sectionName = this.toSectionName(language); + if (this.settings[sectionName]) { + return this.settings[sectionName][configuration]; } - intersect3 = r2.nodeShapes[this.getNodeShape(target)].intersectLine(tgtPos.x, tgtPos.y, target.outerWidth(), target.outerHeight(), p1_i[0], p1_i[1], 0, tgtCornerRadius, tgtRs); - if (tgtManEndptVal === "outside-to-node-or-label" || tgtManEndptVal === "outside-to-line-or-label") { - var trs = target._private.rscratch; - var lw = trs.labelWidth; - var lh = trs.labelHeight; - var lx = trs.labelX; - var ly = trs.labelY; - var lw2 = lw / 2; - var lh2 = lh / 2; - var va = target.pstyle("text-valign").value; - if (va === "top") { - ly -= lh2; - } else if (va === "bottom") { - ly += lh2; - } - var ha = target.pstyle("text-halign").value; - if (ha === "left") { - lx -= lw2; - } else if (ha === "right") { - lx += lw2; + } + toSectionName(languageId) { + return `${languageId}`; + } + get onConfigurationSectionUpdate() { + return this.onConfigurationSectionUpdateEmitter.event; + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/disposable.js + var Disposable; + var init_disposable = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/disposable.js"() { + "use strict"; + (function(Disposable2) { + function create4(callback) { + return { + dispose: /* @__PURE__ */ __name(async () => await callback(), "dispose") + }; + } + __name(create4, "create"); + Disposable2.create = create4; + })(Disposable || (Disposable = {})); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/document-builder.js + var DefaultDocumentBuilder; + var init_document_builder = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/document-builder.js"() { + "use strict"; + init_cancellation(); + init_disposable(); + init_collections(); + init_promise_utils(); + init_stream(); + init_validation_registry(); + init_documents(); + DefaultDocumentBuilder = class { + static { + __name(this, "DefaultDocumentBuilder"); + } + constructor(services) { + this.updateBuildOptions = { + // Default: run only the built-in validation checks and those in the _fast_ category (includes those without category) + validation: { + categories: ["built-in", "fast"] } - var labelIntersect = polygonIntersectLine(p1_i[0], p1_i[1], [lx - lw2, ly - lh2, lx + lw2, ly - lh2, lx + lw2, ly + lh2, lx - lw2, ly + lh2], tgtPos.x, tgtPos.y); - if (labelIntersect.length > 0) { - var refPt = srcPos; - var intSqdist = sqdist(refPt, array2point(intersect3)); - var labIntSqdist = sqdist(refPt, array2point(labelIntersect)); - var minSqDist = intSqdist; - if (labIntSqdist < intSqdist) { - intersect3 = labelIntersect; - minSqDist = labIntSqdist; - } - if (labelIntersect.length > 2) { - var labInt2SqDist = sqdist(refPt, { - x: labelIntersect[2], - y: labelIntersect[3] - }); - if (labInt2SqDist < minSqDist) { - intersect3 = [labelIntersect[2], labelIntersect[3]]; + }; + this.updateListeners = []; + this.buildPhaseListeners = new MultiMap(); + this.documentPhaseListeners = new MultiMap(); + this.buildState = /* @__PURE__ */ new Map(); + this.documentBuildWaiters = /* @__PURE__ */ new Map(); + this.currentState = DocumentState.Changed; + this.langiumDocuments = services.workspace.LangiumDocuments; + this.langiumDocumentFactory = services.workspace.LangiumDocumentFactory; + this.textDocuments = services.workspace.TextDocuments; + this.indexManager = services.workspace.IndexManager; + this.serviceRegistry = services.ServiceRegistry; + } + async build(documents, options2 = {}, cancelToken = cancellation_exports.CancellationToken.None) { + var _a, _b; + for (const document2 of documents) { + const key = document2.uri.toString(); + if (document2.state === DocumentState.Validated) { + if (typeof options2.validation === "boolean" && options2.validation) { + document2.state = DocumentState.IndexedReferences; + document2.diagnostics = void 0; + this.buildState.delete(key); + } else if (typeof options2.validation === "object") { + const buildState2 = this.buildState.get(key); + const previousCategories = (_a = buildState2 === null || buildState2 === void 0 ? void 0 : buildState2.result) === null || _a === void 0 ? void 0 : _a.validationChecks; + if (previousCategories) { + const newCategories = (_b = options2.validation.categories) !== null && _b !== void 0 ? _b : ValidationCategory.all; + const categories = newCategories.filter((c3) => !previousCategories.includes(c3)); + if (categories.length > 0) { + this.buildState.set(key, { + completed: false, + options: { + validation: Object.assign(Object.assign({}, options2.validation), { categories }) + }, + result: buildState2.result + }); + document2.state = DocumentState.IndexedReferences; + } } } + } else { + this.buildState.delete(key); } } + this.currentState = DocumentState.Changed; + await this.emitUpdate(documents.map((e3) => e3.uri), []); + await this.buildDocuments(documents, options2, cancelToken); } - var arrowEnd = shortenIntersection(intersect3, p1, r2.arrowShapes[tgtArShape].spacing(edge) + tgtDist); - var edgeEnd = shortenIntersection(intersect3, p1, r2.arrowShapes[tgtArShape].gap(edge) + tgtDist); - rs.endX = edgeEnd[0]; - rs.endY = edgeEnd[1]; - rs.arrowEndX = arrowEnd[0]; - rs.arrowEndY = arrowEnd[1]; - if (srcManEndptVal === "inside-to-node") { - intersect3 = [srcPos.x, srcPos.y]; - } else if (srcManEndpt.units) { - intersect3 = this.manualEndptToPx(source, srcManEndpt); - } else if (srcManEndptVal === "outside-to-line") { - intersect3 = rs.srcIntn; - } else { - if (srcManEndptVal === "outside-to-node" || srcManEndptVal === "outside-to-node-or-label") { - p2_i = p22; - } else if (srcManEndptVal === "outside-to-line" || srcManEndptVal === "outside-to-line-or-label") { - p2_i = [tgtPos.x, tgtPos.y]; + async update(changed, deleted, cancelToken = cancellation_exports.CancellationToken.None) { + this.currentState = DocumentState.Changed; + for (const deletedUri of deleted) { + this.langiumDocuments.deleteDocument(deletedUri); + this.buildState.delete(deletedUri.toString()); + this.indexManager.remove(deletedUri); } - intersect3 = r2.nodeShapes[this.getNodeShape(source)].intersectLine(srcPos.x, srcPos.y, source.outerWidth(), source.outerHeight(), p2_i[0], p2_i[1], 0, srcCornerRadius, srcRs); - if (srcManEndptVal === "outside-to-node-or-label" || srcManEndptVal === "outside-to-line-or-label") { - var srs = source._private.rscratch; - var _lw = srs.labelWidth; - var _lh = srs.labelHeight; - var _lx = srs.labelX; - var _ly = srs.labelY; - var _lw2 = _lw / 2; - var _lh2 = _lh / 2; - var _va = source.pstyle("text-valign").value; - if (_va === "top") { - _ly -= _lh2; - } else if (_va === "bottom") { - _ly += _lh2; + for (const changedUri of changed) { + const invalidated = this.langiumDocuments.invalidateDocument(changedUri); + if (!invalidated) { + const newDocument = this.langiumDocumentFactory.fromModel({ $type: "INVALID" }, changedUri); + newDocument.state = DocumentState.Changed; + this.langiumDocuments.addDocument(newDocument); } - var _ha = source.pstyle("text-halign").value; - if (_ha === "left") { - _lx -= _lw2; - } else if (_ha === "right") { - _lx += _lw2; + this.buildState.delete(changedUri.toString()); + } + const allChangedUris = stream(changed).concat(deleted).map((uri) => uri.toString()).toSet(); + this.langiumDocuments.all.filter((doc) => !allChangedUris.has(doc.uri.toString()) && this.shouldRelink(doc, allChangedUris)).forEach((doc) => { + const linker = this.serviceRegistry.getServices(doc.uri).references.Linker; + linker.unlink(doc); + doc.state = Math.min(doc.state, DocumentState.ComputedScopes); + doc.diagnostics = void 0; + }); + await this.emitUpdate(changed, deleted); + await interruptAndCheck(cancelToken); + const rebuildDocuments = this.sortDocuments(this.langiumDocuments.all.filter((doc) => { + var _a; + return doc.state < DocumentState.Linked || !((_a = this.buildState.get(doc.uri.toString())) === null || _a === void 0 ? void 0 : _a.completed); + }).toArray()); + await this.buildDocuments(rebuildDocuments, this.updateBuildOptions, cancelToken); + } + async emitUpdate(changed, deleted) { + await Promise.all(this.updateListeners.map((listener) => listener(changed, deleted))); + } + /** + * Sort the given documents by priority. By default, documents with an open text document are prioritized. + * This is useful to ensure that visible documents show their diagnostics before all other documents. + * + * This improves the responsiveness in large workspaces as users usually don't care about diagnostics + * in files that are currently not opened in the editor. + */ + sortDocuments(documents) { + let left3 = 0; + let right3 = documents.length - 1; + while (left3 < right3) { + while (left3 < documents.length && this.hasTextDocument(documents[left3])) { + left3++; } - var _labelIntersect = polygonIntersectLine(p2_i[0], p2_i[1], [_lx - _lw2, _ly - _lh2, _lx + _lw2, _ly - _lh2, _lx + _lw2, _ly + _lh2, _lx - _lw2, _ly + _lh2], srcPos.x, srcPos.y); - if (_labelIntersect.length > 0) { - var _refPt = tgtPos; - var _intSqdist = sqdist(_refPt, array2point(intersect3)); - var _labIntSqdist = sqdist(_refPt, array2point(_labelIntersect)); - var _minSqDist = _intSqdist; - if (_labIntSqdist < _intSqdist) { - intersect3 = [_labelIntersect[0], _labelIntersect[1]]; - _minSqDist = _labIntSqdist; - } - if (_labelIntersect.length > 2) { - var _labInt2SqDist = sqdist(_refPt, { - x: _labelIntersect[2], - y: _labelIntersect[3] - }); - if (_labInt2SqDist < _minSqDist) { - intersect3 = [_labelIntersect[2], _labelIntersect[3]]; - } - } + while (right3 >= 0 && !this.hasTextDocument(documents[right3])) { + right3--; + } + if (left3 < right3) { + [documents[left3], documents[right3]] = [documents[right3], documents[left3]]; } } + return documents; } - var arrowStart = shortenIntersection(intersect3, p22, r2.arrowShapes[srcArShape].spacing(edge) + srcDist); - var edgeStart = shortenIntersection(intersect3, p22, r2.arrowShapes[srcArShape].gap(edge) + srcDist); - rs.startX = edgeStart[0]; - rs.startY = edgeStart[1]; - rs.arrowStartX = arrowStart[0]; - rs.arrowStartY = arrowStart[1]; - if (hasEndpts) { - if (!number$1(rs.startX) || !number$1(rs.startY) || !number$1(rs.endX) || !number$1(rs.endY)) { - rs.badLine = true; - } else { - rs.badLine = false; - } + hasTextDocument(doc) { + var _a; + return Boolean((_a = this.textDocuments) === null || _a === void 0 ? void 0 : _a.get(doc.uri)); } - }; - BRp$b.getSourceEndpoint = function(edge) { - var rs = edge[0]._private.rscratch; - this.recalculateRenderedStyle(edge); - switch (rs.edgeType) { - case "haystack": - return { - x: rs.haystackPts[0], - y: rs.haystackPts[1] - }; - default: - return { - x: rs.arrowStartX, - y: rs.arrowStartY - }; + /** + * Check whether the given document should be relinked after changes were found in the given URIs. + */ + shouldRelink(document2, changedUris) { + if (document2.references.some((ref) => ref.error !== void 0)) { + return true; + } + return this.indexManager.isAffected(document2, changedUris); } - }; - BRp$b.getTargetEndpoint = function(edge) { - var rs = edge[0]._private.rscratch; - this.recalculateRenderedStyle(edge); - switch (rs.edgeType) { - case "haystack": - return { - x: rs.haystackPts[2], - y: rs.haystackPts[3] - }; - default: - return { - x: rs.arrowEndX, - y: rs.arrowEndY - }; + onUpdate(callback) { + this.updateListeners.push(callback); + return Disposable.create(() => { + const index = this.updateListeners.indexOf(callback); + if (index >= 0) { + this.updateListeners.splice(index, 1); + } + }); } - }; - BRp$a = {}; - __name(pushBezierPts, "pushBezierPts"); - BRp$a.storeEdgeProjections = function(edge) { - var _p = edge._private; - var rs = _p.rscratch; - var et2 = rs.edgeType; - _p.rstyle.bezierPts = null; - _p.rstyle.linePts = null; - _p.rstyle.haystackPts = null; - if (et2 === "multibezier" || et2 === "bezier" || et2 === "self" || et2 === "compound") { - _p.rstyle.bezierPts = []; - for (var i2 = 0; i2 + 5 < rs.allpts.length; i2 += 4) { - pushBezierPts(this, edge, rs.allpts.slice(i2, i2 + 6)); - } - } else if (et2 === "segments") { - var lpts = _p.rstyle.linePts = []; - for (var i2 = 0; i2 + 1 < rs.allpts.length; i2 += 2) { - lpts.push({ - x: rs.allpts[i2], - y: rs.allpts[i2 + 1] - }); + /** + * Build the given documents by stepping through all build phases. If a document's state indicates + * that a certain build phase is already done, the phase is skipped for that document. + * + * @param documents The documents to build. + * @param options the {@link BuildOptions} to use. + * @param cancelToken A cancellation token that can be used to cancel the build. + * @returns A promise that resolves when the build is done. + */ + async buildDocuments(documents, options2, cancelToken) { + this.prepareBuild(documents, options2); + await this.runCancelable(documents, DocumentState.Parsed, cancelToken, (doc) => this.langiumDocumentFactory.update(doc, cancelToken)); + await this.runCancelable(documents, DocumentState.IndexedContent, cancelToken, (doc) => this.indexManager.updateContent(doc, cancelToken)); + await this.runCancelable(documents, DocumentState.ComputedScopes, cancelToken, async (doc) => { + const scopeComputation = this.serviceRegistry.getServices(doc.uri).references.ScopeComputation; + doc.precomputedScopes = await scopeComputation.computeLocalScopes(doc, cancelToken); + }); + await this.runCancelable(documents, DocumentState.Linked, cancelToken, (doc) => { + const linker = this.serviceRegistry.getServices(doc.uri).references.Linker; + return linker.link(doc, cancelToken); + }); + await this.runCancelable(documents, DocumentState.IndexedReferences, cancelToken, (doc) => this.indexManager.updateReferences(doc, cancelToken)); + const toBeValidated = documents.filter((doc) => this.shouldValidate(doc)); + await this.runCancelable(toBeValidated, DocumentState.Validated, cancelToken, (doc) => this.validate(doc, cancelToken)); + for (const doc of documents) { + const state3 = this.buildState.get(doc.uri.toString()); + if (state3) { + state3.completed = true; + } } - } else if (et2 === "haystack") { - var hpts = rs.haystackPts; - _p.rstyle.haystackPts = [{ - x: hpts[0], - y: hpts[1] - }, { - x: hpts[2], - y: hpts[3] - }]; - } - _p.rstyle.arrowWidth = this.getArrowWidth(edge.pstyle("width").pfValue, edge.pstyle("arrow-scale").value) * this.arrowShapeWidth; - }; - BRp$a.recalculateEdgeProjections = function(edges3) { - this.findEdgeControlPoints(edges3); - }; - BRp$9 = {}; - BRp$9.recalculateNodeLabelProjection = function(node2) { - var content = node2.pstyle("label").strValue; - if (emptyString(content)) { - return; } - var textX, textY; - var _p = node2._private; - var nodeWidth = node2.width(); - var nodeHeight = node2.height(); - var padding2 = node2.padding(); - var nodePos = node2.position(); - var textHalign = node2.pstyle("text-halign").strValue; - var textValign = node2.pstyle("text-valign").strValue; - var rs = _p.rscratch; - var rstyle = _p.rstyle; - switch (textHalign) { - case "left": - textX = nodePos.x - nodeWidth / 2 - padding2; - break; - case "right": - textX = nodePos.x + nodeWidth / 2 + padding2; - break; - default: - textX = nodePos.x; + /** + * Runs prior to beginning the build process to update the {@link DocumentBuildState} for each document + * + * @param documents collection of documents to be built + * @param options the {@link BuildOptions} to use + */ + prepareBuild(documents, options2) { + for (const doc of documents) { + const key = doc.uri.toString(); + const state3 = this.buildState.get(key); + if (!state3 || state3.completed) { + this.buildState.set(key, { + completed: false, + options: options2, + result: state3 === null || state3 === void 0 ? void 0 : state3.result + }); + } + } } - switch (textValign) { - case "top": - textY = nodePos.y - nodeHeight / 2 - padding2; - break; - case "bottom": - textY = nodePos.y + nodeHeight / 2 + padding2; - break; - default: - textY = nodePos.y; + /** + * Runs a cancelable operation on a set of documents to bring them to a specified {@link DocumentState}. + * + * @param documents The array of documents to process. + * @param targetState The target {@link DocumentState} to bring the documents to. + * @param cancelToken A token that can be used to cancel the operation. + * @param callback A function to be called for each document. + * @returns A promise that resolves when all documents have been processed or the operation is canceled. + * @throws Will throw `OperationCancelled` if the operation is canceled via a `CancellationToken`. + */ + async runCancelable(documents, targetState, cancelToken, callback) { + const filtered = documents.filter((doc) => doc.state < targetState); + for (const document2 of filtered) { + await interruptAndCheck(cancelToken); + await callback(document2); + document2.state = targetState; + await this.notifyDocumentPhase(document2, targetState, cancelToken); + } + const targetStateDocs = documents.filter((doc) => doc.state === targetState); + await this.notifyBuildPhase(targetStateDocs, targetState, cancelToken); + this.currentState = targetState; } - rs.labelX = textX; - rs.labelY = textY; - rstyle.labelX = textX; - rstyle.labelY = textY; - this.calculateLabelAngles(node2); - this.applyLabelDimensions(node2); - }; - lineAngleFromDelta = /* @__PURE__ */ __name(function lineAngleFromDelta2(dx, dy) { - var angle2 = Math.atan(dy / dx); - if (dx === 0 && angle2 < 0) { - angle2 = angle2 * -1; + onBuildPhase(targetState, callback) { + this.buildPhaseListeners.add(targetState, callback); + return Disposable.create(() => { + this.buildPhaseListeners.delete(targetState, callback); + }); } - return angle2; - }, "lineAngleFromDelta"); - lineAngle = /* @__PURE__ */ __name(function lineAngle2(p0, p1) { - var dx = p1.x - p0.x; - var dy = p1.y - p0.y; - return lineAngleFromDelta(dx, dy); - }, "lineAngle"); - bezierAngle = /* @__PURE__ */ __name(function bezierAngle2(p0, p1, p22, t4) { - var t03 = bound(0, t4 - 1e-3, 1); - var t13 = bound(0, t4 + 1e-3, 1); - var lp0 = qbezierPtAt(p0, p1, p22, t03); - var lp1 = qbezierPtAt(p0, p1, p22, t13); - return lineAngle(lp0, lp1); - }, "bezierAngle"); - BRp$9.recalculateEdgeLabelProjections = function(edge) { - var p3; - var _p = edge._private; - var rs = _p.rscratch; - var r2 = this; - var content = { - mid: edge.pstyle("label").strValue, - source: edge.pstyle("source-label").strValue, - target: edge.pstyle("target-label").strValue - }; - if (content.mid || content.source || content.target) ; - else { - return; + onDocumentPhase(targetState, callback) { + this.documentPhaseListeners.add(targetState, callback); + return Disposable.create(() => { + this.documentPhaseListeners.delete(targetState, callback); + }); } - p3 = { - x: rs.midX, - y: rs.midY - }; - var setRs = /* @__PURE__ */ __name(function setRs2(propName, prefix, value2) { - setPrefixedProperty(_p.rscratch, propName, prefix, value2); - setPrefixedProperty(_p.rstyle, propName, prefix, value2); - }, "setRs"); - setRs("labelX", null, p3.x); - setRs("labelY", null, p3.y); - var midAngle = lineAngleFromDelta(rs.midDispX, rs.midDispY); - setRs("labelAutoAngle", null, midAngle); - var createControlPointInfo = /* @__PURE__ */ __name(function createControlPointInfo2() { - if (createControlPointInfo2.cache) { - return createControlPointInfo2.cache; - } - var ctrlpts = []; - for (var i2 = 0; i2 + 5 < rs.allpts.length; i2 += 4) { - var p0 = { - x: rs.allpts[i2], - y: rs.allpts[i2 + 1] - }; - var p1 = { - x: rs.allpts[i2 + 2], - y: rs.allpts[i2 + 3] - }; - var p22 = { - x: rs.allpts[i2 + 4], - y: rs.allpts[i2 + 5] - }; - ctrlpts.push({ - p0, - p1, - p2: p22, - startDist: 0, - length: 0, - segments: [] - }); - } - var bpts = _p.rstyle.bezierPts; - var nProjs = r2.bezierProjPcts.length; - function addSegment(cp2, p02, p12, t03, t13) { - var length2 = dist(p02, p12); - var prevSegment = cp2.segments[cp2.segments.length - 1]; - var segment = { - p0: p02, - p1: p12, - t0: t03, - t1: t13, - startDist: prevSegment ? prevSegment.startDist + prevSegment.length : 0, - length: length2 - }; - cp2.segments.push(segment); - cp2.length += length2; + waitUntil(state3, uriOrToken, cancelToken) { + let uri = void 0; + if (uriOrToken && "path" in uriOrToken) { + uri = uriOrToken; + } else { + cancelToken = uriOrToken; } - __name(addSegment, "addSegment"); - for (var _i = 0; _i < ctrlpts.length; _i++) { - var cp = ctrlpts[_i]; - var prevCp = ctrlpts[_i - 1]; - if (prevCp) { - cp.startDist = prevCp.startDist + prevCp.length; - } - addSegment(cp, cp.p0, bpts[_i * nProjs], 0, r2.bezierProjPcts[0]); - for (var j2 = 0; j2 < nProjs - 1; j2++) { - addSegment(cp, bpts[_i * nProjs + j2], bpts[_i * nProjs + j2 + 1], r2.bezierProjPcts[j2], r2.bezierProjPcts[j2 + 1]); + cancelToken !== null && cancelToken !== void 0 ? cancelToken : cancelToken = cancellation_exports.CancellationToken.None; + if (uri) { + const document2 = this.langiumDocuments.getDocument(uri); + if (document2 && document2.state > state3) { + return Promise.resolve(uri); } - addSegment(cp, bpts[_i * nProjs + nProjs - 1], cp.p2, r2.bezierProjPcts[nProjs - 1], 1); } - return createControlPointInfo2.cache = ctrlpts; - }, "createControlPointInfo"); - var calculateEndProjection = /* @__PURE__ */ __name(function calculateEndProjection2(prefix) { - var angle2; - var isSrc = prefix === "source"; - if (!content[prefix]) { - return; + if (this.currentState >= state3) { + return Promise.resolve(void 0); + } else if (cancelToken.isCancellationRequested) { + return Promise.reject(OperationCancelled); } - var offset = edge.pstyle(prefix + "-text-offset").pfValue; - switch (rs.edgeType) { - case "self": - case "compound": - case "bezier": - case "multibezier": { - var cps = createControlPointInfo(); - var selected; - var startDist = 0; - var totalDist = 0; - for (var i2 = 0; i2 < cps.length; i2++) { - var _cp = cps[isSrc ? i2 : cps.length - 1 - i2]; - for (var j2 = 0; j2 < _cp.segments.length; j2++) { - var _seg = _cp.segments[isSrc ? j2 : _cp.segments.length - 1 - j2]; - var lastSeg = i2 === cps.length - 1 && j2 === _cp.segments.length - 1; - startDist = totalDist; - totalDist += _seg.length; - if (totalDist >= offset || lastSeg) { - selected = { - cp: _cp, - segment: _seg - }; - break; - } - } - if (selected) { - break; - } + return new Promise((resolve2, reject3) => { + const buildDisposable = this.onBuildPhase(state3, () => { + buildDisposable.dispose(); + cancelDisposable.dispose(); + if (uri) { + const document2 = this.langiumDocuments.getDocument(uri); + resolve2(document2 === null || document2 === void 0 ? void 0 : document2.uri); + } else { + resolve2(void 0); } - var cp = selected.cp; - var seg = selected.segment; - var tSegment = (offset - startDist) / seg.length; - var segDt = seg.t1 - seg.t0; - var t4 = isSrc ? seg.t0 + segDt * tSegment : seg.t1 - segDt * tSegment; - t4 = bound(0, t4, 1); - p3 = qbezierPtAt(cp.p0, cp.p1, cp.p2, t4); - angle2 = bezierAngle(cp.p0, cp.p1, cp.p2, t4); - break; - } - case "straight": - case "segments": - case "haystack": { - var d2 = 0, di, d0; - var p0, p1; - var l2 = rs.allpts.length; - for (var _i2 = 0; _i2 + 3 < l2; _i2 += 2) { - if (isSrc) { - p0 = { - x: rs.allpts[_i2], - y: rs.allpts[_i2 + 1] - }; - p1 = { - x: rs.allpts[_i2 + 2], - y: rs.allpts[_i2 + 3] - }; - } else { - p0 = { - x: rs.allpts[l2 - 2 - _i2], - y: rs.allpts[l2 - 1 - _i2] - }; - p1 = { - x: rs.allpts[l2 - 4 - _i2], - y: rs.allpts[l2 - 3 - _i2] - }; - } - di = dist(p0, p1); - d0 = d2; - d2 += di; - if (d2 >= offset) { - break; - } + }); + const cancelDisposable = cancelToken.onCancellationRequested(() => { + buildDisposable.dispose(); + cancelDisposable.dispose(); + reject3(OperationCancelled); + }); + }); + } + async notifyDocumentPhase(document2, state3, cancelToken) { + const listeners = this.documentPhaseListeners.get(state3); + const listenersCopy = listeners.slice(); + for (const listener of listenersCopy) { + try { + await listener(document2, cancelToken); + } catch (err) { + if (!isOperationCancelled(err)) { + throw err; } - var pD = offset - d0; - var _t = pD / di; - _t = bound(0, _t, 1); - p3 = lineAt(p0, p1, _t); - angle2 = lineAngle(p0, p1); - break; } } - setRs("labelX", prefix, p3.x); - setRs("labelY", prefix, p3.y); - setRs("labelAutoAngle", prefix, angle2); - }, "calculateEndProjection"); - calculateEndProjection("source"); - calculateEndProjection("target"); - this.applyLabelDimensions(edge); - }; - BRp$9.applyLabelDimensions = function(ele) { - this.applyPrefixedLabelDimensions(ele); - if (ele.isEdge()) { - this.applyPrefixedLabelDimensions(ele, "source"); - this.applyPrefixedLabelDimensions(ele, "target"); } - }; - BRp$9.applyPrefixedLabelDimensions = function(ele, prefix) { - var _p = ele._private; - var text4 = this.getLabelText(ele, prefix); - var labelDims = this.calculateLabelDimensions(ele, text4); - var lineHeight = ele.pstyle("line-height").pfValue; - var textWrap = ele.pstyle("text-wrap").strValue; - var lines = getPrefixedProperty(_p.rscratch, "labelWrapCachedLines", prefix) || []; - var numLines = textWrap !== "wrap" ? 1 : Math.max(lines.length, 1); - var normPerLineHeight = labelDims.height / numLines; - var labelLineHeight = normPerLineHeight * lineHeight; - var width3 = labelDims.width; - var height2 = labelDims.height + (numLines - 1) * (lineHeight - 1) * normPerLineHeight; - setPrefixedProperty(_p.rstyle, "labelWidth", prefix, width3); - setPrefixedProperty(_p.rscratch, "labelWidth", prefix, width3); - setPrefixedProperty(_p.rstyle, "labelHeight", prefix, height2); - setPrefixedProperty(_p.rscratch, "labelHeight", prefix, height2); - setPrefixedProperty(_p.rscratch, "labelLineHeight", prefix, labelLineHeight); - }; - BRp$9.getLabelText = function(ele, prefix) { - var _p = ele._private; - var pfd = prefix ? prefix + "-" : ""; - var text4 = ele.pstyle(pfd + "label").strValue; - var textTransform = ele.pstyle("text-transform").value; - var rscratch = /* @__PURE__ */ __name(function rscratch2(propName, value2) { - if (value2) { - setPrefixedProperty(_p.rscratch, propName, prefix, value2); - return value2; - } else { - return getPrefixedProperty(_p.rscratch, propName, prefix); + async notifyBuildPhase(documents, state3, cancelToken) { + if (documents.length === 0) { + return; + } + const listeners = this.buildPhaseListeners.get(state3); + const listenersCopy = listeners.slice(); + for (const listener of listenersCopy) { + await interruptAndCheck(cancelToken); + await listener(documents, cancelToken); } - }, "rscratch"); - if (!text4) { - return ""; } - if (textTransform == "none") ; - else if (textTransform == "uppercase") { - text4 = text4.toUpperCase(); - } else if (textTransform == "lowercase") { - text4 = text4.toLowerCase(); + /** + * Determine whether the given document should be validated during a build. The default + * implementation checks the `validation` property of the build options. If it's set to `true` + * or a `ValidationOptions` object, the document is included in the validation phase. + */ + shouldValidate(document2) { + return Boolean(this.getBuildOptions(document2).validation); } - var wrapStyle = ele.pstyle("text-wrap").value; - if (wrapStyle === "wrap") { - var labelKey = rscratch("labelKey"); - if (labelKey != null && rscratch("labelWrapKey") === labelKey) { - return rscratch("labelWrapCachedText"); + /** + * Run validation checks on the given document and store the resulting diagnostics in the document. + * If the document already contains diagnostics, the new ones are added to the list. + */ + async validate(document2, cancelToken) { + var _a, _b; + const validator = this.serviceRegistry.getServices(document2.uri).validation.DocumentValidator; + const validationSetting = this.getBuildOptions(document2).validation; + const options2 = typeof validationSetting === "object" ? validationSetting : void 0; + const diagnostics = await validator.validateDocument(document2, options2, cancelToken); + if (document2.diagnostics) { + document2.diagnostics.push(...diagnostics); + } else { + document2.diagnostics = diagnostics; } - var zwsp = "\u200B"; - var lines = text4.split("\n"); - var maxW = ele.pstyle("text-max-width").pfValue; - var overflow = ele.pstyle("text-overflow-wrap").value; - var overflowAny = overflow === "anywhere"; - var wrappedLines = []; - var separatorRegex = /[\s\u200b]+|$/g; - for (var l2 = 0; l2 < lines.length; l2++) { - var line2 = lines[l2]; - var lineDims = this.calculateLabelDimensions(ele, line2); - var lineW = lineDims.width; - if (overflowAny) { - var processedLine = line2.split("").join(zwsp); - line2 = processedLine; + const state3 = this.buildState.get(document2.uri.toString()); + if (state3) { + (_a = state3.result) !== null && _a !== void 0 ? _a : state3.result = {}; + const newCategories = (_b = options2 === null || options2 === void 0 ? void 0 : options2.categories) !== null && _b !== void 0 ? _b : ValidationCategory.all; + if (state3.result.validationChecks) { + state3.result.validationChecks.push(...newCategories); + } else { + state3.result.validationChecks = [...newCategories]; } - if (lineW > maxW) { - var separatorMatches = line2.matchAll(separatorRegex); - var subline = ""; - var previousIndex = 0; - var _iterator = _createForOfIteratorHelper(separatorMatches), _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done; ) { - var separatorMatch = _step.value; - var wordSeparator = separatorMatch[0]; - var word = line2.substring(previousIndex, separatorMatch.index); - previousIndex = separatorMatch.index + wordSeparator.length; - var testLine = subline.length === 0 ? word : subline + word + wordSeparator; - var testDims = this.calculateLabelDimensions(ele, testLine); - var testW = testDims.width; - if (testW <= maxW) { - subline += word + wordSeparator; - } else { - if (subline) { - wrappedLines.push(subline); - } - subline = word + wordSeparator; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - if (!subline.match(/^[\s\u200b]+$/)) { - wrappedLines.push(subline); - } - } else { - wrappedLines.push(line2); - } - } - rscratch("labelWrapCachedLines", wrappedLines); - text4 = rscratch("labelWrapCachedText", wrappedLines.join("\n")); - rscratch("labelWrapKey", labelKey); - } else if (wrapStyle === "ellipsis") { - var _maxW = ele.pstyle("text-max-width").pfValue; - var ellipsized = ""; - var ellipsis = "\u2026"; - var incLastCh = false; - if (this.calculateLabelDimensions(ele, text4).width < _maxW) { - return text4; - } - for (var i2 = 0; i2 < text4.length; i2++) { - var widthWithNextCh = this.calculateLabelDimensions(ele, ellipsized + text4[i2] + ellipsis).width; - if (widthWithNextCh > _maxW) { - break; - } - ellipsized += text4[i2]; - if (i2 === text4.length - 1) { - incLastCh = true; - } - } - if (!incLastCh) { - ellipsized += ellipsis; } - return ellipsized; } - return text4; + getBuildOptions(document2) { + var _a, _b; + return (_b = (_a = this.buildState.get(document2.uri.toString())) === null || _a === void 0 ? void 0 : _a.options) !== null && _b !== void 0 ? _b : {}; + } }; - BRp$9.getLabelJustification = function(ele) { - var justification = ele.pstyle("text-justification").strValue; - var textHalign = ele.pstyle("text-halign").strValue; - if (justification === "auto") { - if (ele.isNode()) { - switch (textHalign) { - case "left": - return "right"; - case "right": - return "left"; - default: - return "center"; - } - } else { - return "center"; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/index-manager.js + var DefaultIndexManager; + var init_index_manager = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/index-manager.js"() { + "use strict"; + init_ast_utils(); + init_caching(); + init_cancellation(); + init_stream(); + init_uri_utils(); + DefaultIndexManager = class { + static { + __name(this, "DefaultIndexManager"); + } + constructor(services) { + this.symbolIndex = /* @__PURE__ */ new Map(); + this.symbolByTypeIndex = new ContextCache(); + this.referenceIndex = /* @__PURE__ */ new Map(); + this.documents = services.workspace.LangiumDocuments; + this.serviceRegistry = services.ServiceRegistry; + this.astReflection = services.AstReflection; + } + findAllReferences(targetNode, astNodePath) { + const targetDocUri = getDocument(targetNode).uri; + const result = []; + this.referenceIndex.forEach((docRefs) => { + docRefs.forEach((refDescr) => { + if (UriUtils.equals(refDescr.targetUri, targetDocUri) && refDescr.targetPath === astNodePath) { + result.push(refDescr); + } + }); + }); + return stream(result); + } + allElements(nodeType3, uris) { + let documentUris = stream(this.symbolIndex.keys()); + if (uris) { + documentUris = documentUris.filter((uri) => !uris || uris.has(uri)); } - } else { - return justification; + return documentUris.map((uri) => this.getFileDescriptions(uri, nodeType3)).flat(); } - }; - BRp$9.calculateLabelDimensions = function(ele, text4) { - var r2 = this; - var containerWindow = r2.cy.window(); - var document2 = containerWindow.document; - var cacheKey = hashString(text4, ele._private.labelDimsKey); - var cache3 = r2.labelDimCache || (r2.labelDimCache = []); - var existingVal = cache3[cacheKey]; - if (existingVal != null) { - return existingVal; + getFileDescriptions(uri, nodeType3) { + var _a; + if (!nodeType3) { + return (_a = this.symbolIndex.get(uri)) !== null && _a !== void 0 ? _a : []; + } + const descriptions = this.symbolByTypeIndex.get(uri, nodeType3, () => { + var _a2; + const allFileDescriptions = (_a2 = this.symbolIndex.get(uri)) !== null && _a2 !== void 0 ? _a2 : []; + return allFileDescriptions.filter((e3) => this.astReflection.isSubtype(e3.type, nodeType3)); + }); + return descriptions; } - var padding2 = 0; - var fStyle = ele.pstyle("font-style").strValue; - var size5 = ele.pstyle("font-size").pfValue; - var family = ele.pstyle("font-family").strValue; - var weight8 = ele.pstyle("font-weight").strValue; - var canvas = this.labelCalcCanvas; - var c2d = this.labelCalcCanvasContext; - if (!canvas) { - canvas = this.labelCalcCanvas = document2.createElement("canvas"); - c2d = this.labelCalcCanvasContext = canvas.getContext("2d"); - var ds = canvas.style; - ds.position = "absolute"; - ds.left = "-9999px"; - ds.top = "-9999px"; - ds.zIndex = "-1"; - ds.visibility = "hidden"; - ds.pointerEvents = "none"; + remove(uri) { + const uriString = uri.toString(); + this.symbolIndex.delete(uriString); + this.symbolByTypeIndex.clear(uriString); + this.referenceIndex.delete(uriString); } - c2d.font = "".concat(fStyle, " ").concat(weight8, " ").concat(size5, "px ").concat(family); - var width3 = 0; - var height2 = 0; - var lines = text4.split("\n"); - for (var i2 = 0; i2 < lines.length; i2++) { - var line2 = lines[i2]; - var metrics = c2d.measureText(line2); - var w3 = Math.ceil(metrics.width); - var h2 = size5; - width3 = Math.max(w3, width3); - height2 += h2; + async updateContent(document2, cancelToken = cancellation_exports.CancellationToken.None) { + const services = this.serviceRegistry.getServices(document2.uri); + const exports2 = await services.references.ScopeComputation.computeExports(document2, cancelToken); + const uri = document2.uri.toString(); + this.symbolIndex.set(uri, exports2); + this.symbolByTypeIndex.clear(uri); } - width3 += padding2; - height2 += padding2; - return cache3[cacheKey] = { - width: width3, - height: height2 - }; - }; - BRp$9.calculateLabelAngle = function(ele, prefix) { - var _p = ele._private; - var rs = _p.rscratch; - var isEdge2 = ele.isEdge(); - var prefixDash = prefix ? prefix + "-" : ""; - var rot = ele.pstyle(prefixDash + "text-rotation"); - var rotStr = rot.strValue; - if (rotStr === "none") { - return 0; - } else if (isEdge2 && rotStr === "autorotate") { - return rs.labelAutoAngle; - } else if (rotStr === "autorotate") { - return 0; - } else { - return rot.pfValue; + async updateReferences(document2, cancelToken = cancellation_exports.CancellationToken.None) { + const services = this.serviceRegistry.getServices(document2.uri); + const indexData = await services.workspace.ReferenceDescriptionProvider.createDescriptions(document2, cancelToken); + this.referenceIndex.set(document2.uri.toString(), indexData); } - }; - BRp$9.calculateLabelAngles = function(ele) { - var r2 = this; - var isEdge2 = ele.isEdge(); - var _p = ele._private; - var rs = _p.rscratch; - rs.labelAngle = r2.calculateLabelAngle(ele); - if (isEdge2) { - rs.sourceLabelAngle = r2.calculateLabelAngle(ele, "source"); - rs.targetLabelAngle = r2.calculateLabelAngle(ele, "target"); + isAffected(document2, changedUris) { + const references = this.referenceIndex.get(document2.uri.toString()); + if (!references) { + return false; + } + return references.some((ref) => !ref.local && changedUris.has(ref.targetUri.toString())); } }; - BRp$8 = {}; - TOO_SMALL_CUT_RECT = 28; - warnedCutRect = false; - BRp$8.getNodeShape = function(node2) { - var r2 = this; - var shape = node2.pstyle("shape").value; - if (shape === "cutrectangle" && (node2.width() < TOO_SMALL_CUT_RECT || node2.height() < TOO_SMALL_CUT_RECT)) { - if (!warnedCutRect) { - warn("The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead"); - warnedCutRect = true; - } - return "rectangle"; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/workspace-manager.js + var DefaultWorkspaceManager; + var init_workspace_manager = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/workspace-manager.js"() { + "use strict"; + init_cancellation(); + init_promise_utils(); + init_uri_utils(); + DefaultWorkspaceManager = class { + static { + __name(this, "DefaultWorkspaceManager"); } - if (node2.isParent()) { - if (shape === "rectangle" || shape === "roundrectangle" || shape === "round-rectangle" || shape === "cutrectangle" || shape === "cut-rectangle" || shape === "barrel") { - return shape; - } else { - return "rectangle"; - } + constructor(services) { + this.initialBuildOptions = {}; + this._ready = new Deferred(); + this.serviceRegistry = services.ServiceRegistry; + this.langiumDocuments = services.workspace.LangiumDocuments; + this.documentBuilder = services.workspace.DocumentBuilder; + this.fileSystemProvider = services.workspace.FileSystemProvider; + this.mutex = services.workspace.WorkspaceLock; } - if (shape === "polygon") { - var points = node2.pstyle("shape-polygon-points").value; - return r2.nodeShapes.makePolygon(points).name; + get ready() { + return this._ready.promise; } - return shape; - }; - BRp$7 = {}; - BRp$7.registerCalculationListeners = function() { - var cy = this.cy; - var elesToUpdate = cy.collection(); - var r2 = this; - var enqueue = /* @__PURE__ */ __name(function enqueue2(eles) { - var dirtyStyleCaches = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - elesToUpdate.merge(eles); - if (dirtyStyleCaches) { - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var _p = ele._private; - var rstyle = _p.rstyle; - rstyle.clean = false; - rstyle.cleanConnected = false; - } - } - }, "enqueue"); - r2.binder(cy).on("bounds.* dirty.*", /* @__PURE__ */ __name(function onDirtyBounds(e3) { - var ele = e3.target; - enqueue(ele); - }, "onDirtyBounds")).on("style.* background.*", /* @__PURE__ */ __name(function onDirtyStyle(e3) { - var ele = e3.target; - enqueue(ele, false); - }, "onDirtyStyle")); - var updateEleCalcs = /* @__PURE__ */ __name(function updateEleCalcs2(willDraw) { - if (willDraw) { - var fns = r2.onUpdateEleCalcsFns; - elesToUpdate.cleanStyle(); - for (var i2 = 0; i2 < elesToUpdate.length; i2++) { - var ele = elesToUpdate[i2]; - var rstyle = ele._private.rstyle; - if (ele.isNode() && !rstyle.cleanConnected) { - enqueue(ele.connectedEdges()); - rstyle.cleanConnected = true; - } + get workspaceFolders() { + return this.folders; + } + initialize(params) { + var _a; + this.folders = (_a = params.workspaceFolders) !== null && _a !== void 0 ? _a : void 0; + } + initialized(_params) { + return this.mutex.write((token2) => { + var _a; + return this.initializeWorkspace((_a = this.folders) !== null && _a !== void 0 ? _a : [], token2); + }); + } + async initializeWorkspace(folders, cancelToken = cancellation_exports.CancellationToken.None) { + const documents = await this.performStartup(folders); + await interruptAndCheck(cancelToken); + await this.documentBuilder.build(documents, this.initialBuildOptions, cancelToken); + } + /** + * Performs the uninterruptable startup sequence of the workspace manager. + * This methods loads all documents in the workspace and other documents and returns them. + */ + async performStartup(folders) { + const fileExtensions = this.serviceRegistry.all.flatMap((e3) => e3.LanguageMetaData.fileExtensions); + const documents = []; + const collector = /* @__PURE__ */ __name((document2) => { + documents.push(document2); + if (!this.langiumDocuments.hasDocument(document2.uri)) { + this.langiumDocuments.addDocument(document2); } - if (fns) { - for (var _i = 0; _i < fns.length; _i++) { - var fn3 = fns[_i]; - fn3(willDraw, elesToUpdate); + }, "collector"); + await this.loadAdditionalDocuments(folders, collector); + await Promise.all(folders.map((wf) => [wf, this.getRootFolder(wf)]).map(async (entry) => this.traverseFolder(...entry, fileExtensions, collector))); + this._ready.resolve(); + return documents; + } + /** + * Load all additional documents that shall be visible in the context of the given workspace + * folders and add them to the collector. This can be used to include built-in libraries of + * your language, which can be either loaded from provided files or constructed in memory. + */ + loadAdditionalDocuments(_folders, _collector) { + return Promise.resolve(); + } + /** + * Determine the root folder of the source documents in the given workspace folder. + * The default implementation returns the URI of the workspace folder, but you can override + * this to return a subfolder like `src` instead. + */ + getRootFolder(workspaceFolder) { + return URI2.parse(workspaceFolder.uri); + } + /** + * Traverse the file system folder identified by the given URI and its subfolders. All + * contained files that match the file extensions are added to the collector. + */ + async traverseFolder(workspaceFolder, folderPath, fileExtensions, collector) { + const content = await this.fileSystemProvider.readDirectory(folderPath); + await Promise.all(content.map(async (entry) => { + if (this.includeEntry(workspaceFolder, entry, fileExtensions)) { + if (entry.isDirectory) { + await this.traverseFolder(workspaceFolder, entry.uri, fileExtensions, collector); + } else if (entry.isFile) { + const document2 = await this.langiumDocuments.getOrCreateDocument(entry.uri); + collector(document2); } } - r2.recalculateRenderedStyle(elesToUpdate); - elesToUpdate = cy.collection(); + })); + } + /** + * Determine whether the given folder entry shall be included while indexing the workspace. + */ + includeEntry(_workspaceFolder, entry, fileExtensions) { + const name = UriUtils.basename(entry.uri); + if (name.startsWith(".")) { + return false; } - }, "updateEleCalcs"); - r2.flushRenderedStyleQueue = function() { - updateEleCalcs(true); - }; - r2.beforeRender(updateEleCalcs, r2.beforeRenderPriorities.eleCalcs); + if (entry.isDirectory) { + return name !== "node_modules" && name !== "out"; + } else if (entry.isFile) { + const extname = UriUtils.extname(entry.uri); + return fileExtensions.includes(extname); + } + return false; + } }; - BRp$7.onUpdateEleCalcs = function(fn3) { - var fns = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || []; - fns.push(fn3); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/lexer.js + function isTokenTypeArray(tokenVocabulary) { + return Array.isArray(tokenVocabulary) && (tokenVocabulary.length === 0 || "name" in tokenVocabulary[0]); + } + function isIMultiModeLexerDefinition(tokenVocabulary) { + return tokenVocabulary && "modes" in tokenVocabulary && "defaultMode" in tokenVocabulary; + } + function isTokenTypeDictionary(tokenVocabulary) { + return !isTokenTypeArray(tokenVocabulary) && !isIMultiModeLexerDefinition(tokenVocabulary); + } + var DefaultLexerErrorMessageProvider, DEFAULT_TOKENIZE_OPTIONS, DefaultLexer; + var init_lexer2 = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/lexer.js"() { + "use strict"; + init_api5(); + DefaultLexerErrorMessageProvider = class { + static { + __name(this, "DefaultLexerErrorMessageProvider"); + } + buildUnexpectedCharactersMessage(fullText, startOffset, length2, line2, column2) { + return defaultLexerErrorProvider.buildUnexpectedCharactersMessage(fullText, startOffset, length2, line2, column2); + } + buildUnableToPopLexerModeMessage(token2) { + return defaultLexerErrorProvider.buildUnableToPopLexerModeMessage(token2); + } }; - BRp$7.recalculateRenderedStyle = function(eles, useCache) { - var isCleanConnected = /* @__PURE__ */ __name(function isCleanConnected2(ele2) { - return ele2._private.rstyle.cleanConnected; - }, "isCleanConnected"); - var edges3 = []; - var nodes6 = []; - if (this.destroyed) { - return; + DEFAULT_TOKENIZE_OPTIONS = { mode: "full" }; + DefaultLexer = class { + static { + __name(this, "DefaultLexer"); } - if (useCache === void 0) { - useCache = true; + constructor(services) { + this.errorMessageProvider = services.parser.LexerErrorMessageProvider; + this.tokenBuilder = services.parser.TokenBuilder; + const tokens2 = this.tokenBuilder.buildTokens(services.Grammar, { + caseInsensitive: services.LanguageMetaData.caseInsensitive + }); + this.tokenTypes = this.toTokenTypeDictionary(tokens2); + const lexerTokens = isTokenTypeDictionary(tokens2) ? Object.values(tokens2) : tokens2; + const production = services.LanguageMetaData.mode === "production"; + this.chevrotainLexer = new Lexer2(lexerTokens, { + positionTracking: "full", + skipValidations: production, + errorMessageProvider: this.errorMessageProvider + }); } - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var _p = ele._private; - var rstyle = _p.rstyle; - if (ele.isEdge() && (!isCleanConnected(ele.source()) || !isCleanConnected(ele.target()))) { - rstyle.clean = false; - } - if (useCache && rstyle.clean || ele.removed()) { - continue; - } - if (ele.pstyle("display").value === "none") { - continue; - } - if (_p.group === "nodes") { - nodes6.push(ele); - } else { - edges3.push(ele); - } - rstyle.clean = true; + get definition() { + return this.tokenTypes; } - for (var _i2 = 0; _i2 < nodes6.length; _i2++) { - var _ele = nodes6[_i2]; - var _p2 = _ele._private; - var _rstyle = _p2.rstyle; - var pos = _ele.position(); - this.recalculateNodeLabelProjection(_ele); - _rstyle.nodeX = pos.x; - _rstyle.nodeY = pos.y; - _rstyle.nodeW = _ele.pstyle("width").pfValue; - _rstyle.nodeH = _ele.pstyle("height").pfValue; + tokenize(text4, _options = DEFAULT_TOKENIZE_OPTIONS) { + var _a, _b, _c; + const chevrotainResult = this.chevrotainLexer.tokenize(text4); + return { + tokens: chevrotainResult.tokens, + errors: chevrotainResult.errors, + hidden: (_a = chevrotainResult.groups.hidden) !== null && _a !== void 0 ? _a : [], + report: (_c = (_b = this.tokenBuilder).flushLexingReport) === null || _c === void 0 ? void 0 : _c.call(_b, text4) + }; } - this.recalculateEdgeProjections(edges3); - for (var _i3 = 0; _i3 < edges3.length; _i3++) { - var _ele2 = edges3[_i3]; - var _p3 = _ele2._private; - var _rstyle2 = _p3.rstyle; - var rs = _p3.rscratch; - _rstyle2.srcX = rs.arrowStartX; - _rstyle2.srcY = rs.arrowStartY; - _rstyle2.tgtX = rs.arrowEndX; - _rstyle2.tgtY = rs.arrowEndY; - _rstyle2.midX = rs.midX; - _rstyle2.midY = rs.midY; - _rstyle2.labelAngle = rs.labelAngle; - _rstyle2.sourceLabelAngle = rs.sourceLabelAngle; - _rstyle2.targetLabelAngle = rs.targetLabelAngle; + toTokenTypeDictionary(buildTokens) { + if (isTokenTypeDictionary(buildTokens)) + return buildTokens; + const tokens2 = isIMultiModeLexerDefinition(buildTokens) ? Object.values(buildTokens.modes).flat() : buildTokens; + const res = {}; + tokens2.forEach((token2) => res[token2.name] = token2); + return res; } }; - BRp$6 = {}; - BRp$6.updateCachedGrabbedEles = function() { - var eles = this.cachedZSortedEles; - if (!eles) { - return; + __name(isTokenTypeArray, "isTokenTypeArray"); + __name(isIMultiModeLexerDefinition, "isIMultiModeLexerDefinition"); + __name(isTokenTypeDictionary, "isTokenTypeDictionary"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/jsdoc.js + function parseJSDoc(node2, start3, options2) { + let opts; + let position5; + if (typeof node2 === "string") { + position5 = start3; + opts = options2; + } else { + position5 = node2.range.start; + opts = start3; + } + if (!position5) { + position5 = Position.create(0, 0); + } + const lines = getLines(node2); + const normalizedOptions = normalizeOptions(opts); + const tokens2 = tokenize({ + lines, + position: position5, + options: normalizedOptions + }); + return parseJSDocComment({ + index: 0, + tokens: tokens2, + position: position5 + }); + } + function isJSDoc(node2, options2) { + const normalizedOptions = normalizeOptions(options2); + const lines = getLines(node2); + if (lines.length === 0) { + return false; + } + const first3 = lines[0]; + const last3 = lines[lines.length - 1]; + const firstRegex = normalizedOptions.start; + const lastRegex = normalizedOptions.end; + return Boolean(firstRegex === null || firstRegex === void 0 ? void 0 : firstRegex.exec(first3)) && Boolean(lastRegex === null || lastRegex === void 0 ? void 0 : lastRegex.exec(last3)); + } + function getLines(node2) { + let content = ""; + if (typeof node2 === "string") { + content = node2; + } else { + content = node2.text; + } + const lines = content.split(NEWLINE_REGEXP); + return lines; + } + function tokenize(context) { + var _a, _b, _c; + const tokens2 = []; + let currentLine = context.position.line; + let currentCharacter = context.position.character; + for (let i2 = 0; i2 < context.lines.length; i2++) { + const first3 = i2 === 0; + const last3 = i2 === context.lines.length - 1; + let line2 = context.lines[i2]; + let index = 0; + if (first3 && context.options.start) { + const match2 = (_a = context.options.start) === null || _a === void 0 ? void 0 : _a.exec(line2); + if (match2) { + index = match2.index + match2[0].length; } - eles.drag = []; - eles.nondrag = []; - var grabTargets = []; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var rs = ele._private.rscratch; - if (ele.grabbed() && !ele.isParent()) { - grabTargets.push(ele); - } else if (rs.inDragLayer) { - eles.drag.push(ele); - } else { - eles.nondrag.push(ele); - } + } else { + const match2 = (_b = context.options.line) === null || _b === void 0 ? void 0 : _b.exec(line2); + if (match2) { + index = match2.index + match2[0].length; } - for (var i2 = 0; i2 < grabTargets.length; i2++) { - var ele = grabTargets[i2]; - eles.drag.push(ele); + } + if (last3) { + const match2 = (_c = context.options.end) === null || _c === void 0 ? void 0 : _c.exec(line2); + if (match2) { + line2 = line2.substring(0, match2.index); } - }; - BRp$6.invalidateCachedZSortedEles = function() { - this.cachedZSortedEles = null; - }; - BRp$6.getCachedZSortedEles = function(forceRecalc) { - if (forceRecalc || !this.cachedZSortedEles) { - var eles = this.cy.mutableElements().toArray(); - eles.sort(zIndexSort); - eles.interactive = eles.filter(function(ele) { - return ele.interactive(); + } + line2 = line2.substring(0, lastCharacter(line2)); + const whitespaceEnd = skipWhitespace(line2, index); + if (whitespaceEnd >= line2.length) { + if (tokens2.length > 0) { + const position5 = Position.create(currentLine, currentCharacter); + tokens2.push({ + type: "break", + content: "", + range: Range.create(position5, position5) }); - this.cachedZSortedEles = eles; - this.updateCachedGrabbedEles(); - } else { - eles = this.cachedZSortedEles; } - return eles; - }; - BRp$5 = {}; - [BRp$e, BRp$d, BRp$c, BRp$b, BRp$a, BRp$9, BRp$8, BRp$7, BRp$6].forEach(function(props) { - extend4(BRp$5, props); + } else { + tagRegex.lastIndex = index; + const tagMatch = tagRegex.exec(line2); + if (tagMatch) { + const fullMatch = tagMatch[0]; + const value2 = tagMatch[1]; + const start3 = Position.create(currentLine, currentCharacter + index); + const end2 = Position.create(currentLine, currentCharacter + index + fullMatch.length); + tokens2.push({ + type: "tag", + content: value2, + range: Range.create(start3, end2) + }); + index += fullMatch.length; + index = skipWhitespace(line2, index); + } + if (index < line2.length) { + const rest = line2.substring(index); + const inlineTagMatches = Array.from(rest.matchAll(inlineTagRegex)); + tokens2.push(...buildInlineTokens(inlineTagMatches, rest, currentLine, currentCharacter + index)); + } + } + currentLine++; + currentCharacter = 0; + } + if (tokens2.length > 0 && tokens2[tokens2.length - 1].type === "break") { + return tokens2.slice(0, -1); + } + return tokens2; + } + function buildInlineTokens(tags2, line2, lineIndex, characterIndex) { + const tokens2 = []; + if (tags2.length === 0) { + const start3 = Position.create(lineIndex, characterIndex); + const end2 = Position.create(lineIndex, characterIndex + line2.length); + tokens2.push({ + type: "text", + content: line2, + range: Range.create(start3, end2) }); - BRp$4 = {}; - BRp$4.getCachedImage = function(url, crossOrigin, onLoad) { - var r2 = this; - var imageCache = r2.imageCache = r2.imageCache || {}; - var cache3 = imageCache[url]; - if (cache3) { - if (!cache3.image.complete) { - cache3.image.addEventListener("load", onLoad); - } - return cache3.image; + } else { + let lastIndex = 0; + for (const match2 of tags2) { + const matchIndex = match2.index; + const startContent = line2.substring(lastIndex, matchIndex); + if (startContent.length > 0) { + tokens2.push({ + type: "text", + content: line2.substring(lastIndex, matchIndex), + range: Range.create(Position.create(lineIndex, lastIndex + characterIndex), Position.create(lineIndex, matchIndex + characterIndex)) + }); + } + let offset = startContent.length + 1; + const tagName = match2[1]; + tokens2.push({ + type: "inline-tag", + content: tagName, + range: Range.create(Position.create(lineIndex, lastIndex + offset + characterIndex), Position.create(lineIndex, lastIndex + offset + tagName.length + characterIndex)) + }); + offset += tagName.length; + if (match2.length === 4) { + offset += match2[2].length; + const value2 = match2[3]; + tokens2.push({ + type: "text", + content: value2, + range: Range.create(Position.create(lineIndex, lastIndex + offset + characterIndex), Position.create(lineIndex, lastIndex + offset + value2.length + characterIndex)) + }); } else { - cache3 = imageCache[url] = imageCache[url] || {}; - var image = cache3.image = new Image(); - image.addEventListener("load", onLoad); - image.addEventListener("error", function() { - image.error = true; + tokens2.push({ + type: "text", + content: "", + range: Range.create(Position.create(lineIndex, lastIndex + offset + characterIndex), Position.create(lineIndex, lastIndex + offset + characterIndex)) }); - var dataUriPrefix = "data:"; - var isDataUri = url.substring(0, dataUriPrefix.length).toLowerCase() === dataUriPrefix; - if (!isDataUri) { - crossOrigin = crossOrigin === "null" ? null : crossOrigin; - image.crossOrigin = crossOrigin; + } + lastIndex = matchIndex + match2[0].length; + } + const endContent = line2.substring(lastIndex); + if (endContent.length > 0) { + tokens2.push({ + type: "text", + content: endContent, + range: Range.create(Position.create(lineIndex, lastIndex + characterIndex), Position.create(lineIndex, lastIndex + characterIndex + endContent.length)) + }); + } + } + return tokens2; + } + function skipWhitespace(line2, index) { + const match2 = line2.substring(index).match(nonWhitespaceRegex); + if (match2) { + return index + match2.index; + } else { + return line2.length; + } + } + function lastCharacter(line2) { + const match2 = line2.match(whitespaceEndRegex); + if (match2 && typeof match2.index === "number") { + return match2.index; + } + return void 0; + } + function parseJSDocComment(context) { + var _a, _b, _c, _d; + const startPosition = Position.create(context.position.line, context.position.character); + if (context.tokens.length === 0) { + return new JSDocCommentImpl([], Range.create(startPosition, startPosition)); + } + const elements2 = []; + while (context.index < context.tokens.length) { + const element3 = parseJSDocElement(context, elements2[elements2.length - 1]); + if (element3) { + elements2.push(element3); + } + } + const start3 = (_b = (_a = elements2[0]) === null || _a === void 0 ? void 0 : _a.range.start) !== null && _b !== void 0 ? _b : startPosition; + const end2 = (_d = (_c = elements2[elements2.length - 1]) === null || _c === void 0 ? void 0 : _c.range.end) !== null && _d !== void 0 ? _d : startPosition; + return new JSDocCommentImpl(elements2, Range.create(start3, end2)); + } + function parseJSDocElement(context, last3) { + const next3 = context.tokens[context.index]; + if (next3.type === "tag") { + return parseJSDocTag(context, false); + } else if (next3.type === "text" || next3.type === "inline-tag") { + return parseJSDocText(context); + } else { + appendEmptyLine(next3, last3); + context.index++; + return void 0; + } + } + function appendEmptyLine(token2, element3) { + if (element3) { + const line2 = new JSDocLineImpl("", token2.range); + if ("inlines" in element3) { + element3.inlines.push(line2); + } else { + element3.content.inlines.push(line2); + } + } + } + function parseJSDocText(context) { + let token2 = context.tokens[context.index]; + const firstToken = token2; + let lastToken = token2; + const lines = []; + while (token2 && token2.type !== "break" && token2.type !== "tag") { + lines.push(parseJSDocInline(context)); + lastToken = token2; + token2 = context.tokens[context.index]; + } + return new JSDocTextImpl(lines, Range.create(firstToken.range.start, lastToken.range.end)); + } + function parseJSDocInline(context) { + const token2 = context.tokens[context.index]; + if (token2.type === "inline-tag") { + return parseJSDocTag(context, true); + } else { + return parseJSDocLine(context); + } + } + function parseJSDocTag(context, inline) { + const tagToken = context.tokens[context.index++]; + const name = tagToken.content.substring(1); + const nextToken = context.tokens[context.index]; + if ((nextToken === null || nextToken === void 0 ? void 0 : nextToken.type) === "text") { + if (inline) { + const docLine = parseJSDocLine(context); + return new JSDocTagImpl(name, new JSDocTextImpl([docLine], docLine.range), inline, Range.create(tagToken.range.start, docLine.range.end)); + } else { + const textDoc = parseJSDocText(context); + return new JSDocTagImpl(name, textDoc, inline, Range.create(tagToken.range.start, textDoc.range.end)); + } + } else { + const range3 = tagToken.range; + return new JSDocTagImpl(name, new JSDocTextImpl([], range3), inline, range3); + } + } + function parseJSDocLine(context) { + const token2 = context.tokens[context.index++]; + return new JSDocLineImpl(token2.content, token2.range); + } + function normalizeOptions(options2) { + if (!options2) { + return normalizeOptions({ + start: "/**", + end: "*/", + line: "*" + }); + } + const { start: start3, end: end2, line: line2 } = options2; + return { + start: normalizeOption(start3, true), + end: normalizeOption(end2, false), + line: normalizeOption(line2, true) + }; + } + function normalizeOption(option2, start3) { + if (typeof option2 === "string" || typeof option2 === "object") { + const escaped = typeof option2 === "string" ? escapeRegExp(option2) : option2.source; + if (start3) { + return new RegExp(`^\\s*${escaped}`); + } else { + return new RegExp(`\\s*${escaped}\\s*$`); + } + } else { + return option2; + } + } + function renderInlineTag(tag, content, options2) { + var _a, _b; + if (tag === "linkplain" || tag === "linkcode" || tag === "link") { + const index = content.indexOf(" "); + let display = content; + if (index > 0) { + const displayStart = skipWhitespace(content, index); + display = content.substring(displayStart); + content = content.substring(0, index); + } + if (tag === "linkcode" || tag === "link" && options2.link === "code") { + display = `\`${display}\``; + } + const renderedLink = (_b = (_a = options2.renderLink) === null || _a === void 0 ? void 0 : _a.call(options2, content, display)) !== null && _b !== void 0 ? _b : renderLinkDefault(content, display); + return renderedLink; + } + return void 0; + } + function renderLinkDefault(content, display) { + try { + URI2.parse(content, true); + return `[${display}](${content})`; + } catch (_a) { + return content; + } + } + function fillNewlines(text4) { + if (text4.endsWith("\n")) { + return "\n"; + } else { + return "\n\n"; + } + } + var tagRegex, inlineTagRegex, nonWhitespaceRegex, whitespaceEndRegex, JSDocCommentImpl, JSDocTagImpl, JSDocTextImpl, JSDocLineImpl; + var init_jsdoc = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/jsdoc.js"() { + "use strict"; + init_main(); + init_regexp_utils(); + init_uri_utils(); + __name(parseJSDoc, "parseJSDoc"); + __name(isJSDoc, "isJSDoc"); + __name(getLines, "getLines"); + tagRegex = /\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy; + inlineTagRegex = /\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu; + __name(tokenize, "tokenize"); + __name(buildInlineTokens, "buildInlineTokens"); + nonWhitespaceRegex = /\S/; + whitespaceEndRegex = /\s*$/; + __name(skipWhitespace, "skipWhitespace"); + __name(lastCharacter, "lastCharacter"); + __name(parseJSDocComment, "parseJSDocComment"); + __name(parseJSDocElement, "parseJSDocElement"); + __name(appendEmptyLine, "appendEmptyLine"); + __name(parseJSDocText, "parseJSDocText"); + __name(parseJSDocInline, "parseJSDocInline"); + __name(parseJSDocTag, "parseJSDocTag"); + __name(parseJSDocLine, "parseJSDocLine"); + __name(normalizeOptions, "normalizeOptions"); + __name(normalizeOption, "normalizeOption"); + JSDocCommentImpl = class { + static { + __name(this, "JSDocCommentImpl"); + } + constructor(elements2, range3) { + this.elements = elements2; + this.range = range3; + } + getTag(name) { + return this.getAllTags().find((e3) => e3.name === name); + } + getTags(name) { + return this.getAllTags().filter((e3) => e3.name === name); + } + getAllTags() { + return this.elements.filter((e3) => "name" in e3); + } + toString() { + let value2 = ""; + for (const element3 of this.elements) { + if (value2.length === 0) { + value2 = element3.toString(); + } else { + const text4 = element3.toString(); + value2 += fillNewlines(value2) + text4; + } } - image.src = url; - return image; + return value2.trim(); } - }; - BRp$3 = {}; - BRp$3.registerBinding = function(target, event3, handler, useCapture) { - var args = Array.prototype.slice.apply(arguments, [1]); - if (Array.isArray(target)) { - var res = []; - for (var i2 = 0; i2 < target.length; i2++) { - var t4 = target[i2]; - if (t4 !== void 0) { - var b2 = this.binder(t4); - res.push(b2.on.apply(b2, args)); + toMarkdown(options2) { + let value2 = ""; + for (const element3 of this.elements) { + if (value2.length === 0) { + value2 = element3.toMarkdown(options2); + } else { + const text4 = element3.toMarkdown(options2); + value2 += fillNewlines(value2) + text4; } } - return res; + return value2.trim(); } - var b2 = this.binder(target); - return b2.on.apply(b2, args); }; - BRp$3.binder = function(tgt) { - var r2 = this; - var containerWindow = r2.cy.window(); - var tgtIsDom = tgt === containerWindow || tgt === containerWindow.document || tgt === containerWindow.document.body || domElement(tgt); - if (r2.supportsPassiveEvents == null) { - var supportsPassive = false; - try { - var opts = Object.defineProperty({}, "passive", { - get: /* @__PURE__ */ __name(function get6() { - supportsPassive = true; - return true; - }, "get") - }); - containerWindow.addEventListener("test", null, opts); - } catch (err) { - } - r2.supportsPassiveEvents = supportsPassive; + JSDocTagImpl = class { + static { + __name(this, "JSDocTagImpl"); } - var on3 = /* @__PURE__ */ __name(function on4(event3, handler, useCapture) { - var args = Array.prototype.slice.call(arguments); - if (tgtIsDom && r2.supportsPassiveEvents) { - args[2] = { - capture: useCapture != null ? useCapture : false, - passive: false, - once: false - }; + constructor(name, content, inline, range3) { + this.name = name; + this.content = content; + this.inline = inline; + this.range = range3; + } + toString() { + let text4 = `@${this.name}`; + const content = this.content.toString(); + if (this.content.inlines.length === 1) { + text4 = `${text4} ${content}`; + } else if (this.content.inlines.length > 1) { + text4 = `${text4} +${content}`; } - r2.bindings.push({ - target: tgt, - args - }); - (tgt.addEventListener || tgt.on).apply(tgt, args); - return this; - }, "on"); - return { - on: on3, - addEventListener: on3, - addListener: on3, - bind: on3 - }; - }; - BRp$3.nodeIsDraggable = function(node2) { - return node2 && node2.isNode() && !node2.locked() && node2.grabbable(); - }; - BRp$3.nodeIsGrabbable = function(node2) { - return this.nodeIsDraggable(node2) && node2.interactive(); - }; - BRp$3.load = function() { - var r2 = this; - var containerWindow = r2.cy.window(); - var isSelected = /* @__PURE__ */ __name(function isSelected2(ele) { - return ele.selected(); - }, "isSelected"); - var getShadowRoot = /* @__PURE__ */ __name(function getShadowRoot2(element3) { - var rootNode = element3.getRootNode(); - if (rootNode && rootNode.nodeType === 11 && rootNode.host !== void 0) { - return rootNode; + if (this.inline) { + return `{${text4}}`; + } else { + return text4; } - }, "getShadowRoot"); - var triggerEvents = /* @__PURE__ */ __name(function triggerEvents2(target, names, e3, position5) { - if (target == null) { - target = r2.cy; + } + toMarkdown(options2) { + var _a, _b; + return (_b = (_a = options2 === null || options2 === void 0 ? void 0 : options2.renderTag) === null || _a === void 0 ? void 0 : _a.call(options2, this)) !== null && _b !== void 0 ? _b : this.toMarkdownDefault(options2); + } + toMarkdownDefault(options2) { + const content = this.content.toMarkdown(options2); + if (this.inline) { + const rendered = renderInlineTag(this.name, content, options2 !== null && options2 !== void 0 ? options2 : {}); + if (typeof rendered === "string") { + return rendered; + } } - for (var i2 = 0; i2 < names.length; i2++) { - var name = names[i2]; - target.emit({ - originalEvent: e3, - type: name, - position: position5 - }); + let marker = ""; + if ((options2 === null || options2 === void 0 ? void 0 : options2.tag) === "italic" || (options2 === null || options2 === void 0 ? void 0 : options2.tag) === void 0) { + marker = "*"; + } else if ((options2 === null || options2 === void 0 ? void 0 : options2.tag) === "bold") { + marker = "**"; + } else if ((options2 === null || options2 === void 0 ? void 0 : options2.tag) === "bold-italic") { + marker = "***"; } - }, "triggerEvents"); - var isMultSelKeyDown = /* @__PURE__ */ __name(function isMultSelKeyDown2(e3) { - return e3.shiftKey || e3.metaKey || e3.ctrlKey; - }, "isMultSelKeyDown"); - var allowPanningPassthrough = /* @__PURE__ */ __name(function allowPanningPassthrough2(down, downs) { - var allowPassthrough = true; - if (r2.cy.hasCompoundNodes() && down && down.pannable()) { - for (var i2 = 0; downs && i2 < downs.length; i2++) { - var down = downs[i2]; - if (down.isNode() && down.isParent() && !down.pannable()) { - allowPassthrough = false; - break; - } - } - } else { - allowPassthrough = true; - } - return allowPassthrough; - }, "allowPanningPassthrough"); - var setGrabbed = /* @__PURE__ */ __name(function setGrabbed2(ele) { - ele[0]._private.grabbed = true; - }, "setGrabbed"); - var setFreed = /* @__PURE__ */ __name(function setFreed2(ele) { - ele[0]._private.grabbed = false; - }, "setFreed"); - var setInDragLayer = /* @__PURE__ */ __name(function setInDragLayer2(ele) { - ele[0]._private.rscratch.inDragLayer = true; - }, "setInDragLayer"); - var setOutDragLayer = /* @__PURE__ */ __name(function setOutDragLayer2(ele) { - ele[0]._private.rscratch.inDragLayer = false; - }, "setOutDragLayer"); - var setGrabTarget = /* @__PURE__ */ __name(function setGrabTarget2(ele) { - ele[0]._private.rscratch.isGrabTarget = true; - }, "setGrabTarget"); - var removeGrabTarget = /* @__PURE__ */ __name(function removeGrabTarget2(ele) { - ele[0]._private.rscratch.isGrabTarget = false; - }, "removeGrabTarget"); - var addToDragList = /* @__PURE__ */ __name(function addToDragList2(ele, opts) { - var list2 = opts.addToList; - var listHasEle = list2.has(ele); - if (!listHasEle && ele.grabbable() && !ele.locked()) { - list2.merge(ele); - setGrabbed(ele); - } - }, "addToDragList"); - var addDescendantsToDrag = /* @__PURE__ */ __name(function addDescendantsToDrag2(node2, opts) { - if (!node2.cy().hasCompoundNodes()) { - return; - } - if (opts.inDragLayer == null && opts.addToList == null) { - return; + let text4 = `${marker}@${this.name}${marker}`; + if (this.content.inlines.length === 1) { + text4 = `${text4} \u2014 ${content}`; + } else if (this.content.inlines.length > 1) { + text4 = `${text4} +${content}`; } - var innerNodes = node2.descendants(); - if (opts.inDragLayer) { - innerNodes.forEach(setInDragLayer); - innerNodes.connectedEdges().forEach(setInDragLayer); + if (this.inline) { + return `{${text4}}`; + } else { + return text4; } - if (opts.addToList) { - addToDragList(innerNodes, opts); + } + }; + __name(renderInlineTag, "renderInlineTag"); + __name(renderLinkDefault, "renderLinkDefault"); + JSDocTextImpl = class { + static { + __name(this, "JSDocTextImpl"); + } + constructor(lines, range3) { + this.inlines = lines; + this.range = range3; + } + toString() { + let text4 = ""; + for (let i2 = 0; i2 < this.inlines.length; i2++) { + const inline = this.inlines[i2]; + const next3 = this.inlines[i2 + 1]; + text4 += inline.toString(); + if (next3 && next3.range.start.line > inline.range.start.line) { + text4 += "\n"; + } } - }, "addDescendantsToDrag"); - var addNodesToDrag = /* @__PURE__ */ __name(function addNodesToDrag2(nodes6, opts) { - opts = opts || {}; - var hasCompoundNodes2 = nodes6.cy().hasCompoundNodes(); - if (opts.inDragLayer) { - nodes6.forEach(setInDragLayer); - nodes6.neighborhood().stdFilter(function(ele) { - return !hasCompoundNodes2 || ele.isEdge(); - }).forEach(setInDragLayer); + return text4; + } + toMarkdown(options2) { + let text4 = ""; + for (let i2 = 0; i2 < this.inlines.length; i2++) { + const inline = this.inlines[i2]; + const next3 = this.inlines[i2 + 1]; + text4 += inline.toMarkdown(options2); + if (next3 && next3.range.start.line > inline.range.start.line) { + text4 += "\n"; + } } - if (opts.addToList) { - nodes6.forEach(function(ele) { - addToDragList(ele, opts); + return text4; + } + }; + JSDocLineImpl = class { + static { + __name(this, "JSDocLineImpl"); + } + constructor(text4, range3) { + this.text = text4; + this.range = range3; + } + toString() { + return this.text; + } + toMarkdown() { + return this.text; + } + }; + __name(fillNewlines, "fillNewlines"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/documentation-provider.js + var JSDocDocumentationProvider; + var init_documentation_provider = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/documentation-provider.js"() { + "use strict"; + init_ast_utils(); + init_jsdoc(); + JSDocDocumentationProvider = class { + static { + __name(this, "JSDocDocumentationProvider"); + } + constructor(services) { + this.indexManager = services.shared.workspace.IndexManager; + this.commentProvider = services.documentation.CommentProvider; + } + getDocumentation(node2) { + const comment2 = this.commentProvider.getComment(node2); + if (comment2 && isJSDoc(comment2)) { + const parsedJSDoc = parseJSDoc(comment2); + return parsedJSDoc.toMarkdown({ + renderLink: /* @__PURE__ */ __name((link2, display) => { + return this.documentationLinkRenderer(node2, link2, display); + }, "renderLink"), + renderTag: /* @__PURE__ */ __name((tag) => { + return this.documentationTagRenderer(node2, tag); + }, "renderTag") }); } - addDescendantsToDrag(nodes6, opts); - updateAncestorsInDragLayer(nodes6, { - inDragLayer: opts.inDragLayer - }); - r2.updateCachedGrabbedEles(); - }, "addNodesToDrag"); - var addNodeToDrag = addNodesToDrag; - var freeDraggedElements = /* @__PURE__ */ __name(function freeDraggedElements2(grabbedEles) { - if (!grabbedEles) { - return; - } - r2.getCachedZSortedEles().forEach(function(ele) { - setFreed(ele); - setOutDragLayer(ele); - removeGrabTarget(ele); - }); - r2.updateCachedGrabbedEles(); - }, "freeDraggedElements"); - var updateAncestorsInDragLayer = /* @__PURE__ */ __name(function updateAncestorsInDragLayer2(node2, opts) { - if (opts.inDragLayer == null && opts.addToList == null) { - return; - } - if (!node2.cy().hasCompoundNodes()) { - return; - } - var parent4 = node2.ancestors().orphans(); - if (parent4.same(node2)) { - return; - } - var nodes6 = parent4.descendants().spawnSelf().merge(parent4).unmerge(node2).unmerge(node2.descendants()); - var edges3 = nodes6.connectedEdges(); - if (opts.inDragLayer) { - edges3.forEach(setInDragLayer); - nodes6.forEach(setInDragLayer); + return void 0; + } + documentationLinkRenderer(node2, name, display) { + var _a; + const description = (_a = this.findNameInPrecomputedScopes(node2, name)) !== null && _a !== void 0 ? _a : this.findNameInGlobalScope(node2, name); + if (description && description.nameSegment) { + const line2 = description.nameSegment.range.start.line + 1; + const character2 = description.nameSegment.range.start.character + 1; + const uri = description.documentUri.with({ fragment: `L${line2},${character2}` }); + return `[${display}](${uri.toString()})`; + } else { + return void 0; } - if (opts.addToList) { - nodes6.forEach(function(ele) { - addToDragList(ele, opts); - }); + } + documentationTagRenderer(_node, _tag) { + return void 0; + } + findNameInPrecomputedScopes(node2, name) { + const document2 = getDocument(node2); + const precomputed = document2.precomputedScopes; + if (!precomputed) { + return void 0; } - }, "updateAncestorsInDragLayer"); - var blurActiveDomElement = /* @__PURE__ */ __name(function blurActiveDomElement2() { - if (document.activeElement != null && document.activeElement.blur != null) { - document.activeElement.blur(); + let currentNode = node2; + do { + const allDescriptions = precomputed.get(currentNode); + const description = allDescriptions.find((e3) => e3.name === name); + if (description) { + return description; + } + currentNode = currentNode.$container; + } while (currentNode); + return void 0; + } + findNameInGlobalScope(node2, name) { + const description = this.indexManager.allElements().find((e3) => e3.name === name); + return description; + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/comment-provider.js + var DefaultCommentProvider; + var init_comment_provider = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/comment-provider.js"() { + "use strict"; + init_json_serializer(); + init_cst_utils(); + DefaultCommentProvider = class { + static { + __name(this, "DefaultCommentProvider"); + } + constructor(services) { + this.grammarConfig = () => services.parser.GrammarConfig; + } + getComment(node2) { + var _a; + if (isAstNodeWithComment(node2)) { + return node2.$comment; } - }, "blurActiveDomElement"); - var haveMutationsApi = typeof MutationObserver !== "undefined"; - var haveResizeObserverApi = typeof ResizeObserver !== "undefined"; - if (haveMutationsApi) { - r2.removeObserver = new MutationObserver(function(mutns) { - for (var i2 = 0; i2 < mutns.length; i2++) { - var mutn = mutns[i2]; - var rNodes = mutn.removedNodes; - if (rNodes) { - for (var j2 = 0; j2 < rNodes.length; j2++) { - var rNode = rNodes[j2]; - if (rNode === r2.container) { - r2.destroy(); - break; - } + return (_a = findCommentNode(node2.$cstNode, this.grammarConfig().multilineCommentRules)) === null || _a === void 0 ? void 0 : _a.text; + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/async-parser.js + var DefaultAsyncParser, AbstractThreadedAsyncParser, ParserWorker; + var init_async_parser = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/async-parser.js"() { + "use strict"; + init_promise_utils(); + init_event3(); + DefaultAsyncParser = class { + static { + __name(this, "DefaultAsyncParser"); + } + constructor(services) { + this.syncParser = services.parser.LangiumParser; + } + parse(text4, _cancelToken) { + return Promise.resolve(this.syncParser.parse(text4)); + } + }; + AbstractThreadedAsyncParser = class { + static { + __name(this, "AbstractThreadedAsyncParser"); + } + constructor(services) { + this.threadCount = 8; + this.terminationDelay = 200; + this.workerPool = []; + this.queue = []; + this.hydrator = services.serializer.Hydrator; + } + initializeWorkers() { + while (this.workerPool.length < this.threadCount) { + const worker = this.createWorker(); + worker.onReady(() => { + if (this.queue.length > 0) { + const deferred = this.queue.shift(); + if (deferred) { + worker.lock(); + deferred.resolve(worker); } } - } - }); - if (r2.container.parentNode) { - r2.removeObserver.observe(r2.container.parentNode, { - childList: true }); + this.workerPool.push(worker); } - } else { - r2.registerBinding(r2.container, "DOMNodeRemoved", function(e3) { - r2.destroy(); - }); } - var onResize = debounce_1(function() { - r2.cy.resize(); - }, 100); - if (haveMutationsApi) { - r2.styleObserver = new MutationObserver(onResize); - r2.styleObserver.observe(r2.container, { - attributes: true + async parse(text4, cancelToken) { + const worker = await this.acquireParserWorker(cancelToken); + const deferred = new Deferred(); + let timeout2; + const cancellation = cancelToken.onCancellationRequested(() => { + timeout2 = setTimeout(() => { + this.terminateWorker(worker); + }, this.terminationDelay); }); + worker.parse(text4).then((result) => { + const hydrated = this.hydrator.hydrate(result); + deferred.resolve(hydrated); + }).catch((err) => { + deferred.reject(err); + }).finally(() => { + cancellation.dispose(); + clearTimeout(timeout2); + }); + return deferred.promise; } - r2.registerBinding(containerWindow, "resize", onResize); - if (haveResizeObserverApi) { - r2.resizeObserver = new ResizeObserver(onResize); - r2.resizeObserver.observe(r2.container); - } - var forEachUp = /* @__PURE__ */ __name(function forEachUp2(domEle, fn3) { - while (domEle != null) { - fn3(domEle); - domEle = domEle.parentNode; + terminateWorker(worker) { + worker.terminate(); + const index = this.workerPool.indexOf(worker); + if (index >= 0) { + this.workerPool.splice(index, 1); } - }, "forEachUp"); - var invalidateCoords = /* @__PURE__ */ __name(function invalidateCoords2() { - r2.invalidateContainerClientCoordsCache(); - }, "invalidateCoords"); - forEachUp(r2.container, function(domEle) { - r2.registerBinding(domEle, "transitionend", invalidateCoords); - r2.registerBinding(domEle, "animationend", invalidateCoords); - r2.registerBinding(domEle, "scroll", invalidateCoords); - }); - r2.registerBinding(r2.container, "contextmenu", function(e3) { - e3.preventDefault(); - }); - var inBoxSelection = /* @__PURE__ */ __name(function inBoxSelection2() { - return r2.selection[4] !== 0; - }, "inBoxSelection"); - var eventInContainer = /* @__PURE__ */ __name(function eventInContainer2(e3) { - var containerPageCoords = r2.findContainerClientCoords(); - var x5 = containerPageCoords[0]; - var y5 = containerPageCoords[1]; - var width3 = containerPageCoords[2]; - var height2 = containerPageCoords[3]; - var positions2 = e3.touches ? e3.touches : [e3]; - var atLeastOnePosInside = false; - for (var i2 = 0; i2 < positions2.length; i2++) { - var p3 = positions2[i2]; - if (x5 <= p3.clientX && p3.clientX <= x5 + width3 && y5 <= p3.clientY && p3.clientY <= y5 + height2) { - atLeastOnePosInside = true; - break; + } + async acquireParserWorker(cancelToken) { + this.initializeWorkers(); + for (const worker of this.workerPool) { + if (worker.ready) { + worker.lock(); + return worker; } } - if (!atLeastOnePosInside) { - return false; - } - var container2 = r2.container; - var target = e3.target; - var tParent = target.parentNode; - var containerIsTarget = false; - while (tParent) { - if (tParent === container2) { - containerIsTarget = true; - break; + const deferred = new Deferred(); + cancelToken.onCancellationRequested(() => { + const index = this.queue.indexOf(deferred); + if (index >= 0) { + this.queue.splice(index, 1); } - tParent = tParent.parentNode; - } - if (!containerIsTarget) { - return false; + deferred.reject(OperationCancelled); + }); + this.queue.push(deferred); + return deferred.promise; + } + }; + ParserWorker = class { + static { + __name(this, "ParserWorker"); + } + get ready() { + return this._ready; + } + get onReady() { + return this.onReadyEmitter.event; + } + constructor(sendMessage, onMessage, onError, terminate) { + this.onReadyEmitter = new event_exports.Emitter(); + this.deferred = new Deferred(); + this._ready = true; + this._parsing = false; + this.sendMessage = sendMessage; + this._terminate = terminate; + onMessage((result) => { + const parseResult = result; + this.deferred.resolve(parseResult); + this.unlock(); + }); + onError((error3) => { + this.deferred.reject(error3); + this.unlock(); + }); + } + terminate() { + this.deferred.reject(OperationCancelled); + this._terminate(); + } + lock() { + this._ready = false; + } + unlock() { + this._parsing = false; + this._ready = true; + this.onReadyEmitter.fire(); + } + parse(text4) { + if (this._parsing) { + throw new Error("Parser worker is busy"); } - return true; - }, "eventInContainer"); - r2.registerBinding(r2.container, "mousedown", /* @__PURE__ */ __name(function mousedownHandler(e3) { - if (!eventInContainer(e3)) { + this._parsing = true; + this.deferred = new Deferred(); + this.sendMessage(text4); + return this.deferred.promise; + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/workspace-lock.js + var DefaultWorkspaceLock; + var init_workspace_lock = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/workspace-lock.js"() { + "use strict"; + init_cancellation(); + init_promise_utils(); + DefaultWorkspaceLock = class { + static { + __name(this, "DefaultWorkspaceLock"); + } + constructor() { + this.previousTokenSource = new cancellation_exports.CancellationTokenSource(); + this.writeQueue = []; + this.readQueue = []; + this.done = true; + } + write(action) { + this.cancelWrite(); + const tokenSource = startCancelableOperation(); + this.previousTokenSource = tokenSource; + return this.enqueue(this.writeQueue, action, tokenSource.token); + } + read(action) { + return this.enqueue(this.readQueue, action); + } + enqueue(queue, action, cancellationToken = cancellation_exports.CancellationToken.None) { + const deferred = new Deferred(); + const entry = { + action, + deferred, + cancellationToken + }; + queue.push(entry); + this.performNextOperation(); + return deferred.promise; + } + async performNextOperation() { + if (!this.done) { return; } - if (r2.hoverData.which === 1 && e3.which !== 1) { + const entries2 = []; + if (this.writeQueue.length > 0) { + entries2.push(this.writeQueue.shift()); + } else if (this.readQueue.length > 0) { + entries2.push(...this.readQueue.splice(0, this.readQueue.length)); + } else { return; } - e3.preventDefault(); - blurActiveDomElement(); - r2.hoverData.capture = true; - r2.hoverData.which = e3.which; - var cy = r2.cy; - var gpos = [e3.clientX, e3.clientY]; - var pos = r2.projectIntoViewport(gpos[0], gpos[1]); - var select = r2.selection; - var nears = r2.findNearestElements(pos[0], pos[1], true, false); - var near = nears[0]; - var draggedElements = r2.dragData.possibleDragElements; - r2.hoverData.mdownPos = pos; - r2.hoverData.mdownGPos = gpos; - var checkForTaphold = /* @__PURE__ */ __name(function checkForTaphold2() { - r2.hoverData.tapholdCancelled = false; - clearTimeout(r2.hoverData.tapholdTimeout); - r2.hoverData.tapholdTimeout = setTimeout(function() { - if (r2.hoverData.tapholdCancelled) { - return; + this.done = false; + await Promise.all(entries2.map(async ({ action, deferred, cancellationToken }) => { + try { + const result = await Promise.resolve().then(() => action(cancellationToken)); + deferred.resolve(result); + } catch (err) { + if (isOperationCancelled(err)) { + deferred.resolve(void 0); } else { - var ele = r2.hoverData.down; - if (ele) { - ele.emit({ - originalEvent: e3, - type: "taphold", - position: { - x: pos[0], - y: pos[1] - } - }); - } else { - cy.emit({ - originalEvent: e3, - type: "taphold", - position: { - x: pos[0], - y: pos[1] - } - }); - } - } - }, r2.tapholdDuration); - }, "checkForTaphold"); - if (e3.which == 3) { - r2.hoverData.cxtStarted = true; - var cxtEvt = { - originalEvent: e3, - type: "cxttapstart", - position: { - x: pos[0], - y: pos[1] + deferred.reject(err); } - }; - if (near) { - near.activate(); - near.emit(cxtEvt); - r2.hoverData.down = near; - } else { - cy.emit(cxtEvt); } - r2.hoverData.downTime = (/* @__PURE__ */ new Date()).getTime(); - r2.hoverData.cxtDragged = false; - } else if (e3.which == 1) { - if (near) { - near.activate(); + })); + this.done = true; + this.performNextOperation(); + } + cancelWrite() { + this.previousTokenSource.cancel(); + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/hydrator.js + var DefaultHydrator; + var init_hydrator = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/hydrator.js"() { + "use strict"; + init_cst_node_builder(); + init_ast(); + init_syntax_tree(); + init_ast_utils(); + init_collections(); + init_cst_utils(); + DefaultHydrator = class { + static { + __name(this, "DefaultHydrator"); + } + constructor(services) { + this.grammarElementIdMap = new BiMap(); + this.tokenTypeIdMap = new BiMap(); + this.grammar = services.Grammar; + this.lexer = services.parser.Lexer; + this.linker = services.references.Linker; + } + dehydrate(result) { + return { + lexerErrors: result.lexerErrors, + lexerReport: result.lexerReport ? this.dehydrateLexerReport(result.lexerReport) : void 0, + // We need to create shallow copies of the errors + // The original errors inherit from the `Error` class, which is not transferable across worker threads + parserErrors: result.parserErrors.map((e3) => Object.assign(Object.assign({}, e3), { message: e3.message })), + value: this.dehydrateAstNode(result.value, this.createDehyrationContext(result.value)) + }; + } + dehydrateLexerReport(lexerReport) { + return lexerReport; + } + createDehyrationContext(node2) { + const astNodes = /* @__PURE__ */ new Map(); + const cstNodes = /* @__PURE__ */ new Map(); + for (const astNode of streamAst(node2)) { + astNodes.set(astNode, {}); + } + if (node2.$cstNode) { + for (const cstNode of streamCst(node2.$cstNode)) { + cstNodes.set(cstNode, {}); } - { - if (near != null) { - if (r2.nodeIsGrabbable(near)) { - var makeEvent = /* @__PURE__ */ __name(function makeEvent2(type3) { - return { - originalEvent: e3, - type: type3, - position: { - x: pos[0], - y: pos[1] - } - }; - }, "makeEvent"); - var triggerGrab = /* @__PURE__ */ __name(function triggerGrab2(ele) { - ele.emit(makeEvent("grab")); - }, "triggerGrab"); - setGrabTarget(near); - if (!near.selected()) { - draggedElements = r2.dragData.possibleDragElements = cy.collection(); - addNodeToDrag(near, { - addToList: draggedElements - }); - near.emit(makeEvent("grabon")).emit(makeEvent("grab")); - } else { - draggedElements = r2.dragData.possibleDragElements = cy.collection(); - var selectedNodes = cy.$(function(ele) { - return ele.isNode() && ele.selected() && r2.nodeIsGrabbable(ele); - }); - addNodesToDrag(selectedNodes, { - addToList: draggedElements - }); - near.emit(makeEvent("grabon")); - selectedNodes.forEach(triggerGrab); - } - r2.redrawHint("eles", true); - r2.redrawHint("drag", true); + } + return { + astNodes, + cstNodes + }; + } + dehydrateAstNode(node2, context) { + const obj = context.astNodes.get(node2); + obj.$type = node2.$type; + obj.$containerIndex = node2.$containerIndex; + obj.$containerProperty = node2.$containerProperty; + if (node2.$cstNode !== void 0) { + obj.$cstNode = this.dehydrateCstNode(node2.$cstNode, context); + } + for (const [name, value2] of Object.entries(node2)) { + if (name.startsWith("$")) { + continue; + } + if (Array.isArray(value2)) { + const arr = []; + obj[name] = arr; + for (const item of value2) { + if (isAstNode(item)) { + arr.push(this.dehydrateAstNode(item, context)); + } else if (isReference(item)) { + arr.push(this.dehydrateReference(item, context)); + } else { + arr.push(item); } } - r2.hoverData.down = near; - r2.hoverData.downs = nears; - r2.hoverData.downTime = (/* @__PURE__ */ new Date()).getTime(); - } - triggerEvents(near, ["mousedown", "tapstart", "vmousedown"], e3, { - x: pos[0], - y: pos[1] - }); - if (near == null) { - select[4] = 1; - r2.data.bgActivePosistion = { - x: pos[0], - y: pos[1] - }; - r2.redrawHint("select", true); - r2.redraw(); - } else if (near.pannable()) { - select[4] = 1; + } else if (isAstNode(value2)) { + obj[name] = this.dehydrateAstNode(value2, context); + } else if (isReference(value2)) { + obj[name] = this.dehydrateReference(value2, context); + } else if (value2 !== void 0) { + obj[name] = value2; } - checkForTaphold(); } - select[0] = select[2] = pos[0]; - select[1] = select[3] = pos[1]; - }, "mousedownHandler"), false); - var shadowRoot = getShadowRoot(r2.container); - r2.registerBinding([containerWindow, shadowRoot], "mousemove", /* @__PURE__ */ __name(function mousemoveHandler(e3) { - var capture = r2.hoverData.capture; - if (!capture && !eventInContainer(e3)) { - return; + return obj; + } + dehydrateReference(reference, context) { + const obj = {}; + obj.$refText = reference.$refText; + if (reference.$refNode) { + obj.$refNode = context.cstNodes.get(reference.$refNode); } - var preventDefault2 = false; - var cy = r2.cy; - var zoom2 = cy.zoom(); - var gpos = [e3.clientX, e3.clientY]; - var pos = r2.projectIntoViewport(gpos[0], gpos[1]); - var mdownPos = r2.hoverData.mdownPos; - var mdownGPos = r2.hoverData.mdownGPos; - var select = r2.selection; - var near = null; - if (!r2.hoverData.draggingEles && !r2.hoverData.dragging && !r2.hoverData.selecting) { - near = r2.findNearestElement(pos[0], pos[1], true, false); + return obj; + } + dehydrateCstNode(node2, context) { + const cstNode = context.cstNodes.get(node2); + if (isRootCstNode(node2)) { + cstNode.fullText = node2.fullText; + } else { + cstNode.grammarSource = this.getGrammarElementId(node2.grammarSource); } - var last3 = r2.hoverData.last; - var down = r2.hoverData.down; - var disp = [pos[0] - select[2], pos[1] - select[3]]; - var draggedElements = r2.dragData.possibleDragElements; - var isOverThresholdDrag; - if (mdownGPos) { - var dx = gpos[0] - mdownGPos[0]; - var dx2 = dx * dx; - var dy = gpos[1] - mdownGPos[1]; - var dy2 = dy * dy; - var dist22 = dx2 + dy2; - r2.hoverData.isOverThresholdDrag = isOverThresholdDrag = dist22 >= r2.desktopTapThreshold2; + cstNode.hidden = node2.hidden; + cstNode.astNode = context.astNodes.get(node2.astNode); + if (isCompositeCstNode(node2)) { + cstNode.content = node2.content.map((child) => this.dehydrateCstNode(child, context)); + } else if (isLeafCstNode(node2)) { + cstNode.tokenType = node2.tokenType.name; + cstNode.offset = node2.offset; + cstNode.length = node2.length; + cstNode.startLine = node2.range.start.line; + cstNode.startColumn = node2.range.start.character; + cstNode.endLine = node2.range.end.line; + cstNode.endColumn = node2.range.end.character; } - var multSelKeyDown = isMultSelKeyDown(e3); - if (isOverThresholdDrag) { - r2.hoverData.tapholdCancelled = true; + return cstNode; + } + hydrate(result) { + const node2 = result.value; + const context = this.createHydrationContext(node2); + if ("$cstNode" in node2) { + this.hydrateCstNode(node2.$cstNode, context); } - var updateDragDelta = /* @__PURE__ */ __name(function updateDragDelta2() { - var dragDelta2 = r2.hoverData.dragDelta = r2.hoverData.dragDelta || []; - if (dragDelta2.length === 0) { - dragDelta2.push(disp[0]); - dragDelta2.push(disp[1]); - } else { - dragDelta2[0] += disp[0]; - dragDelta2[1] += disp[1]; - } - }, "updateDragDelta"); - preventDefault2 = true; - triggerEvents(near, ["mousemove", "vmousemove", "tapdrag"], e3, { - x: pos[0], - y: pos[1] - }); - var goIntoBoxMode = /* @__PURE__ */ __name(function goIntoBoxMode2() { - r2.data.bgActivePosistion = void 0; - if (!r2.hoverData.selecting) { - cy.emit({ - originalEvent: e3, - type: "boxstart", - position: { - x: pos[0], - y: pos[1] - } - }); - } - select[4] = 1; - r2.hoverData.selecting = true; - r2.redrawHint("select", true); - r2.redraw(); - }, "goIntoBoxMode"); - if (r2.hoverData.which === 3) { - if (isOverThresholdDrag) { - var cxtEvt = { - originalEvent: e3, - type: "cxtdrag", - position: { - x: pos[0], - y: pos[1] - } - }; - if (down) { - down.emit(cxtEvt); - } else { - cy.emit(cxtEvt); + return { + lexerErrors: result.lexerErrors, + lexerReport: result.lexerReport, + parserErrors: result.parserErrors, + value: this.hydrateAstNode(node2, context) + }; + } + createHydrationContext(node2) { + const astNodes = /* @__PURE__ */ new Map(); + const cstNodes = /* @__PURE__ */ new Map(); + for (const astNode of streamAst(node2)) { + astNodes.set(astNode, {}); + } + let root3; + if (node2.$cstNode) { + for (const cstNode of streamCst(node2.$cstNode)) { + let cst; + if ("fullText" in cstNode) { + cst = new RootCstNodeImpl(cstNode.fullText); + root3 = cst; + } else if ("content" in cstNode) { + cst = new CompositeCstNodeImpl(); + } else if ("tokenType" in cstNode) { + cst = this.hydrateCstLeafNode(cstNode); } - r2.hoverData.cxtDragged = true; - if (!r2.hoverData.cxtOver || near !== r2.hoverData.cxtOver) { - if (r2.hoverData.cxtOver) { - r2.hoverData.cxtOver.emit({ - originalEvent: e3, - type: "cxtdragout", - position: { - x: pos[0], - y: pos[1] - } - }); - } - r2.hoverData.cxtOver = near; - if (near) { - near.emit({ - originalEvent: e3, - type: "cxtdragover", - position: { - x: pos[0], - y: pos[1] - } - }); - } + if (cst) { + cstNodes.set(cstNode, cst); + cst.root = root3; } } - } else if (r2.hoverData.dragging) { - preventDefault2 = true; - if (cy.panningEnabled() && cy.userPanningEnabled()) { - var deltaP; - if (r2.hoverData.justStartedPan) { - var mdPos = r2.hoverData.mdownPos; - deltaP = { - x: (pos[0] - mdPos[0]) * zoom2, - y: (pos[1] - mdPos[1]) * zoom2 - }; - r2.hoverData.justStartedPan = false; - } else { - deltaP = { - x: disp[0] * zoom2, - y: disp[1] * zoom2 - }; - } - cy.panBy(deltaP); - cy.emit("dragpan"); - r2.hoverData.dragged = true; + } + return { + astNodes, + cstNodes + }; + } + hydrateAstNode(node2, context) { + const astNode = context.astNodes.get(node2); + astNode.$type = node2.$type; + astNode.$containerIndex = node2.$containerIndex; + astNode.$containerProperty = node2.$containerProperty; + if (node2.$cstNode) { + astNode.$cstNode = context.cstNodes.get(node2.$cstNode); + } + for (const [name, value2] of Object.entries(node2)) { + if (name.startsWith("$")) { + continue; } - pos = r2.projectIntoViewport(e3.clientX, e3.clientY); - } else if (select[4] == 1 && (down == null || down.pannable())) { - if (isOverThresholdDrag) { - if (!r2.hoverData.dragging && cy.boxSelectionEnabled() && (multSelKeyDown || !cy.panningEnabled() || !cy.userPanningEnabled())) { - goIntoBoxMode(); - } else if (!r2.hoverData.selecting && cy.panningEnabled() && cy.userPanningEnabled()) { - var allowPassthrough = allowPanningPassthrough(down, r2.hoverData.downs); - if (allowPassthrough) { - r2.hoverData.dragging = true; - r2.hoverData.justStartedPan = true; - select[4] = 0; - r2.data.bgActivePosistion = array2point(mdownPos); - r2.redrawHint("select", true); - r2.redraw(); + if (Array.isArray(value2)) { + const arr = []; + astNode[name] = arr; + for (const item of value2) { + if (isAstNode(item)) { + arr.push(this.setParent(this.hydrateAstNode(item, context), astNode)); + } else if (isReference(item)) { + arr.push(this.hydrateReference(item, astNode, name, context)); + } else { + arr.push(item); } } - if (down && down.pannable() && down.active()) { - down.unactivate(); - } - } - } else { - if (down && down.pannable() && down.active()) { - down.unactivate(); + } else if (isAstNode(value2)) { + astNode[name] = this.setParent(this.hydrateAstNode(value2, context), astNode); + } else if (isReference(value2)) { + astNode[name] = this.hydrateReference(value2, astNode, name, context); + } else if (value2 !== void 0) { + astNode[name] = value2; } - if ((!down || !down.grabbed()) && near != last3) { - if (last3) { - triggerEvents(last3, ["mouseout", "tapdragout"], e3, { - x: pos[0], - y: pos[1] - }); - } - if (near) { - triggerEvents(near, ["mouseover", "tapdragover"], e3, { - x: pos[0], - y: pos[1] - }); - } - r2.hoverData.last = near; + } + return astNode; + } + setParent(node2, parent4) { + node2.$container = parent4; + return node2; + } + hydrateReference(reference, node2, name, context) { + return this.linker.buildReference(node2, name, context.cstNodes.get(reference.$refNode), reference.$refText); + } + hydrateCstNode(cstNode, context, num = 0) { + const cstNodeObj = context.cstNodes.get(cstNode); + if (typeof cstNode.grammarSource === "number") { + cstNodeObj.grammarSource = this.getGrammarElement(cstNode.grammarSource); + } + cstNodeObj.astNode = context.astNodes.get(cstNode.astNode); + if (isCompositeCstNode(cstNodeObj)) { + for (const child of cstNode.content) { + const hydrated = this.hydrateCstNode(child, context, num++); + cstNodeObj.content.push(hydrated); } - if (down) { - if (isOverThresholdDrag) { - if (cy.boxSelectionEnabled() && multSelKeyDown) { - if (down && down.grabbed()) { - freeDraggedElements(draggedElements); - down.emit("freeon"); - draggedElements.emit("free"); - if (r2.dragData.didDrag) { - down.emit("dragfreeon"); - draggedElements.emit("dragfree"); - } - } - goIntoBoxMode(); - } else if (down && down.grabbed() && r2.nodeIsDraggable(down)) { - var justStartedDrag = !r2.dragData.didDrag; - if (justStartedDrag) { - r2.redrawHint("eles", true); - } - r2.dragData.didDrag = true; - if (!r2.hoverData.draggingEles) { - addNodesToDrag(draggedElements, { - inDragLayer: true - }); - } - var totalShift = { - x: 0, - y: 0 - }; - if (number$1(disp[0]) && number$1(disp[1])) { - totalShift.x += disp[0]; - totalShift.y += disp[1]; - if (justStartedDrag) { - var dragDelta = r2.hoverData.dragDelta; - if (dragDelta && number$1(dragDelta[0]) && number$1(dragDelta[1])) { - totalShift.x += dragDelta[0]; - totalShift.y += dragDelta[1]; - } - } - } - r2.hoverData.draggingEles = true; - draggedElements.silentShift(totalShift).emit("position drag"); - r2.redrawHint("drag", true); - r2.redraw(); - } - } else { - updateDragDelta(); - } + } + return cstNodeObj; + } + hydrateCstLeafNode(cstNode) { + const tokenType = this.getTokenType(cstNode.tokenType); + const offset = cstNode.offset; + const length2 = cstNode.length; + const startLine = cstNode.startLine; + const startColumn = cstNode.startColumn; + const endLine = cstNode.endLine; + const endColumn = cstNode.endColumn; + const hidden = cstNode.hidden; + const node2 = new LeafCstNodeImpl(offset, length2, { + start: { + line: startLine, + character: startColumn + }, + end: { + line: endLine, + character: endColumn } - preventDefault2 = true; + }, tokenType, hidden); + return node2; + } + getTokenType(name) { + return this.lexer.definition[name]; + } + getGrammarElementId(node2) { + if (!node2) { + return void 0; } - select[2] = pos[0]; - select[3] = pos[1]; - if (preventDefault2) { - if (e3.stopPropagation) e3.stopPropagation(); - if (e3.preventDefault) e3.preventDefault(); - return false; + if (this.grammarElementIdMap.size === 0) { + this.createGrammarElementIdMap(); } - }, "mousemoveHandler"), false); - var clickTimeout, didDoubleClick, prevClickTimeStamp; - r2.registerBinding(containerWindow, "mouseup", /* @__PURE__ */ __name(function mouseupHandler(e3) { - if (r2.hoverData.which === 1 && e3.which !== 1 && r2.hoverData.capture) { - return; + return this.grammarElementIdMap.get(node2); + } + getGrammarElement(id30) { + if (this.grammarElementIdMap.size === 0) { + this.createGrammarElementIdMap(); } - var capture = r2.hoverData.capture; - if (!capture) { - return; + const element3 = this.grammarElementIdMap.getKey(id30); + return element3; + } + createGrammarElementIdMap() { + let id30 = 0; + for (const element3 of streamAst(this.grammar)) { + if (isAbstractElement(element3)) { + this.grammarElementIdMap.set(element3, id30++); + } } - r2.hoverData.capture = false; - var cy = r2.cy; - var pos = r2.projectIntoViewport(e3.clientX, e3.clientY); - var select = r2.selection; - var near = r2.findNearestElement(pos[0], pos[1], true, false); - var draggedElements = r2.dragData.possibleDragElements; - var down = r2.hoverData.down; - var multSelKeyDown = isMultSelKeyDown(e3); - if (r2.data.bgActivePosistion) { - r2.redrawHint("select", true); - r2.redraw(); + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/default-module.js + function createDefaultCoreModule(context) { + return { + documentation: { + CommentProvider: /* @__PURE__ */ __name((services) => new DefaultCommentProvider(services), "CommentProvider"), + DocumentationProvider: /* @__PURE__ */ __name((services) => new JSDocDocumentationProvider(services), "DocumentationProvider") + }, + parser: { + AsyncParser: /* @__PURE__ */ __name((services) => new DefaultAsyncParser(services), "AsyncParser"), + GrammarConfig: /* @__PURE__ */ __name((services) => createGrammarConfig(services), "GrammarConfig"), + LangiumParser: /* @__PURE__ */ __name((services) => createLangiumParser(services), "LangiumParser"), + CompletionParser: /* @__PURE__ */ __name((services) => createCompletionParser(services), "CompletionParser"), + ValueConverter: /* @__PURE__ */ __name(() => new DefaultValueConverter(), "ValueConverter"), + TokenBuilder: /* @__PURE__ */ __name(() => new DefaultTokenBuilder(), "TokenBuilder"), + Lexer: /* @__PURE__ */ __name((services) => new DefaultLexer(services), "Lexer"), + ParserErrorMessageProvider: /* @__PURE__ */ __name(() => new LangiumParserErrorMessageProvider(), "ParserErrorMessageProvider"), + LexerErrorMessageProvider: /* @__PURE__ */ __name(() => new DefaultLexerErrorMessageProvider(), "LexerErrorMessageProvider") + }, + workspace: { + AstNodeLocator: /* @__PURE__ */ __name(() => new DefaultAstNodeLocator(), "AstNodeLocator"), + AstNodeDescriptionProvider: /* @__PURE__ */ __name((services) => new DefaultAstNodeDescriptionProvider(services), "AstNodeDescriptionProvider"), + ReferenceDescriptionProvider: /* @__PURE__ */ __name((services) => new DefaultReferenceDescriptionProvider(services), "ReferenceDescriptionProvider") + }, + references: { + Linker: /* @__PURE__ */ __name((services) => new DefaultLinker(services), "Linker"), + NameProvider: /* @__PURE__ */ __name(() => new DefaultNameProvider(), "NameProvider"), + ScopeProvider: /* @__PURE__ */ __name((services) => new DefaultScopeProvider(services), "ScopeProvider"), + ScopeComputation: /* @__PURE__ */ __name((services) => new DefaultScopeComputation(services), "ScopeComputation"), + References: /* @__PURE__ */ __name((services) => new DefaultReferences(services), "References") + }, + serializer: { + Hydrator: /* @__PURE__ */ __name((services) => new DefaultHydrator(services), "Hydrator"), + JsonSerializer: /* @__PURE__ */ __name((services) => new DefaultJsonSerializer(services), "JsonSerializer") + }, + validation: { + DocumentValidator: /* @__PURE__ */ __name((services) => new DefaultDocumentValidator(services), "DocumentValidator"), + ValidationRegistry: /* @__PURE__ */ __name((services) => new ValidationRegistry(services), "ValidationRegistry") + }, + shared: /* @__PURE__ */ __name(() => context.shared, "shared") + }; + } + function createDefaultSharedCoreModule(context) { + return { + ServiceRegistry: /* @__PURE__ */ __name((services) => new DefaultServiceRegistry(services), "ServiceRegistry"), + workspace: { + LangiumDocuments: /* @__PURE__ */ __name((services) => new DefaultLangiumDocuments(services), "LangiumDocuments"), + LangiumDocumentFactory: /* @__PURE__ */ __name((services) => new DefaultLangiumDocumentFactory(services), "LangiumDocumentFactory"), + DocumentBuilder: /* @__PURE__ */ __name((services) => new DefaultDocumentBuilder(services), "DocumentBuilder"), + IndexManager: /* @__PURE__ */ __name((services) => new DefaultIndexManager(services), "IndexManager"), + WorkspaceManager: /* @__PURE__ */ __name((services) => new DefaultWorkspaceManager(services), "WorkspaceManager"), + FileSystemProvider: /* @__PURE__ */ __name((services) => context.fileSystemProvider(services), "FileSystemProvider"), + WorkspaceLock: /* @__PURE__ */ __name(() => new DefaultWorkspaceLock(), "WorkspaceLock"), + ConfigurationProvider: /* @__PURE__ */ __name((services) => new DefaultConfigurationProvider(services), "ConfigurationProvider") + } + }; + } + var init_default_module = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/default-module.js"() { + "use strict"; + init_grammar_config(); + init_completion_parser_builder(); + init_langium_parser_builder(); + init_token_builder(); + init_value_converter(); + init_linker(); + init_name_provider(); + init_references(); + init_scope_computation(); + init_scope_provider(); + init_json_serializer(); + init_service_registry(); + init_document_validator(); + init_validation_registry(); + init_ast_descriptions(); + init_ast_node_locator(); + init_configuration(); + init_document_builder(); + init_documents(); + init_index_manager(); + init_workspace_manager(); + init_lexer2(); + init_documentation_provider(); + init_comment_provider(); + init_langium_parser(); + init_async_parser(); + init_workspace_lock(); + init_hydrator(); + __name(createDefaultCoreModule, "createDefaultCoreModule"); + __name(createDefaultSharedCoreModule, "createDefaultSharedCoreModule"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/dependency-injection.js + function inject(module1, module2, module3, module4, module5, module6, module7, module8, module9) { + const module10 = [module1, module2, module3, module4, module5, module6, module7, module8, module9].reduce(_merge, {}); + return _inject(module10); + } + function eagerLoad(item) { + if (item && item[isProxy]) { + for (const value2 of Object.values(item)) { + eagerLoad(value2); + } + } + return item; + } + function _inject(module2, injector) { + const proxy = new Proxy({}, { + deleteProperty: /* @__PURE__ */ __name(() => false, "deleteProperty"), + set: /* @__PURE__ */ __name(() => { + throw new Error("Cannot set property on injected service container"); + }, "set"), + get: /* @__PURE__ */ __name((obj, prop) => { + if (prop === isProxy) { + return true; + } else { + return _resolve2(obj, prop, module2, injector || proxy); + } + }, "get"), + getOwnPropertyDescriptor: /* @__PURE__ */ __name((obj, prop) => (_resolve2(obj, prop, module2, injector || proxy), Object.getOwnPropertyDescriptor(obj, prop)), "getOwnPropertyDescriptor"), + // used by for..in + has: /* @__PURE__ */ __name((_3, prop) => prop in module2, "has"), + // used by ..in.. + ownKeys: /* @__PURE__ */ __name(() => [...Object.getOwnPropertyNames(module2)], "ownKeys") + // used by for..in + }); + return proxy; + } + function _resolve2(obj, prop, module2, injector) { + if (prop in obj) { + if (obj[prop] instanceof Error) { + throw new Error("Construction failure. Please make sure that your dependencies are constructable.", { cause: obj[prop] }); + } + if (obj[prop] === __requested__) { + throw new Error('Cycle detected. Please make "' + String(prop) + '" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies'); + } + return obj[prop]; + } else if (prop in module2) { + const value2 = module2[prop]; + obj[prop] = __requested__; + try { + obj[prop] = typeof value2 === "function" ? value2(injector) : _inject(value2, injector); + } catch (error3) { + obj[prop] = error3 instanceof Error ? error3 : void 0; + throw error3; + } + return obj[prop]; + } else { + return void 0; + } + } + function _merge(target, source) { + if (source) { + for (const [key, value2] of Object.entries(source)) { + if (value2 !== void 0) { + const value1 = target[key]; + if (value1 !== null && value2 !== null && typeof value1 === "object" && typeof value2 === "object") { + target[key] = _merge(value1, value2); + } else { + target[key] = value2; } - r2.hoverData.tapholdCancelled = true; - r2.data.bgActivePosistion = void 0; - if (down) { - down.unactivate(); + } + } + } + return target; + } + var Module, isProxy, __requested__; + var init_dependency_injection = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/dependency-injection.js"() { + "use strict"; + (function(Module2) { + Module2.merge = (m1, m22) => _merge(_merge({}, m1), m22); + })(Module || (Module = {})); + __name(inject, "inject"); + isProxy = Symbol("isProxy"); + __name(eagerLoad, "eagerLoad"); + __name(_inject, "_inject"); + __requested__ = Symbol(); + __name(_resolve2, "_resolve"); + __name(_merge, "_merge"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/services.js + var init_services = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/services.js"() { + "use strict"; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/index.js + var init_documentation = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/documentation/index.js"() { + "use strict"; + init_comment_provider(); + init_documentation_provider(); + init_jsdoc(); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/language-meta-data.js + var init_language_meta_data = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/language-meta-data.js"() { + "use strict"; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/index.js + var init_languages = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/languages/index.js"() { + "use strict"; + init_grammar_config(); + init_language_meta_data(); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/indentation-aware.js + var indentationBuilderDefaultOptions, LexingMode, IndentationAwareTokenBuilder, IndentationAwareLexer; + var init_indentation_aware = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/indentation-aware.js"() { + "use strict"; + init_api5(); + init_token_builder(); + init_lexer2(); + indentationBuilderDefaultOptions = { + indentTokenName: "INDENT", + dedentTokenName: "DEDENT", + whitespaceTokenName: "WS", + ignoreIndentationDelimiters: [] + }; + (function(LexingMode2) { + LexingMode2["REGULAR"] = "indentation-sensitive"; + LexingMode2["IGNORE_INDENTATION"] = "ignore-indentation"; + })(LexingMode || (LexingMode = {})); + IndentationAwareTokenBuilder = class extends DefaultTokenBuilder { + static { + __name(this, "IndentationAwareTokenBuilder"); + } + constructor(options2 = indentationBuilderDefaultOptions) { + super(); + this.indentationStack = [0]; + this.whitespaceRegExp = /[ \t]+/y; + this.options = Object.assign(Object.assign({}, indentationBuilderDefaultOptions), options2); + this.indentTokenType = createToken({ + name: this.options.indentTokenName, + pattern: this.indentMatcher.bind(this), + line_breaks: false + }); + this.dedentTokenType = createToken({ + name: this.options.dedentTokenName, + pattern: this.dedentMatcher.bind(this), + line_breaks: false + }); + } + buildTokens(grammar, options2) { + const tokenTypes = super.buildTokens(grammar, options2); + if (!isTokenTypeArray(tokenTypes)) { + throw new Error("Invalid tokens built by default builder"); } - if (r2.hoverData.which === 3) { - var cxtEvt = { - originalEvent: e3, - type: "cxttapend", - position: { - x: pos[0], - y: pos[1] - } - }; - if (down) { - down.emit(cxtEvt); - } else { - cy.emit(cxtEvt); - } - if (!r2.hoverData.cxtDragged) { - var cxtTap = { - originalEvent: e3, - type: "cxttap", - position: { - x: pos[0], - y: pos[1] - } - }; - if (down) { - down.emit(cxtTap); - } else { - cy.emit(cxtTap); - } - } - r2.hoverData.cxtDragged = false; - r2.hoverData.which = null; - } else if (r2.hoverData.which === 1) { - triggerEvents(near, ["mouseup", "tapend", "vmouseup"], e3, { - x: pos[0], - y: pos[1] - }); - if (!r2.dragData.didDrag && // didn't move a node around - !r2.hoverData.dragged && // didn't pan - !r2.hoverData.selecting && // not box selection - !r2.hoverData.isOverThresholdDrag) { - triggerEvents(down, ["click", "tap", "vclick"], e3, { - x: pos[0], - y: pos[1] - }); - didDoubleClick = false; - if (e3.timeStamp - prevClickTimeStamp <= cy.multiClickDebounceTime()) { - clickTimeout && clearTimeout(clickTimeout); - didDoubleClick = true; - prevClickTimeStamp = null; - triggerEvents(down, ["dblclick", "dbltap", "vdblclick"], e3, { - x: pos[0], - y: pos[1] - }); - } else { - clickTimeout = setTimeout(function() { - if (didDoubleClick) return; - triggerEvents(down, ["oneclick", "onetap", "voneclick"], e3, { - x: pos[0], - y: pos[1] - }); - }, cy.multiClickDebounceTime()); - prevClickTimeStamp = e3.timeStamp; - } - } - if (down == null && !r2.dragData.didDrag && !r2.hoverData.selecting && !r2.hoverData.dragged && !isMultSelKeyDown(e3)) { - cy.$(isSelected).unselect(["tapunselect"]); - if (draggedElements.length > 0) { - r2.redrawHint("eles", true); - } - r2.dragData.possibleDragElements = draggedElements = cy.collection(); - } - if (near == down && !r2.dragData.didDrag && !r2.hoverData.selecting) { - if (near != null && near._private.selectable) { - if (r2.hoverData.dragging) ; - else if (cy.selectionType() === "additive" || multSelKeyDown) { - if (near.selected()) { - near.unselect(["tapunselect"]); - } else { - near.select(["tapselect"]); - } - } else { - if (!multSelKeyDown) { - cy.$(isSelected).unmerge(near).unselect(["tapunselect"]); - near.select(["tapselect"]); - } - } - r2.redrawHint("eles", true); - } - } - if (r2.hoverData.selecting) { - var box = cy.collection(r2.getAllInBox(select[0], select[1], select[2], select[3])); - r2.redrawHint("select", true); - if (box.length > 0) { - r2.redrawHint("eles", true); - } - cy.emit({ - type: "boxend", - originalEvent: e3, - position: { - x: pos[0], - y: pos[1] - } - }); - var eleWouldBeSelected = /* @__PURE__ */ __name(function eleWouldBeSelected2(ele) { - return ele.selectable() && !ele.selected(); - }, "eleWouldBeSelected"); - if (cy.selectionType() === "additive") { - box.emit("box").stdFilter(eleWouldBeSelected).select().emit("boxselect"); - } else { - if (!multSelKeyDown) { - cy.$(isSelected).unmerge(box).unselect(); - } - box.emit("box").stdFilter(eleWouldBeSelected).select().emit("boxselect"); - } - r2.redraw(); - } - if (r2.hoverData.dragging) { - r2.hoverData.dragging = false; - r2.redrawHint("select", true); - r2.redrawHint("eles", true); - r2.redraw(); - } - if (!select[4]) { - r2.redrawHint("drag", true); - r2.redrawHint("eles", true); - var downWasGrabbed = down && down.grabbed(); - freeDraggedElements(draggedElements); - if (downWasGrabbed) { - down.emit("freeon"); - draggedElements.emit("free"); - if (r2.dragData.didDrag) { - down.emit("dragfreeon"); - draggedElements.emit("dragfree"); - } + const { indentTokenName, dedentTokenName, whitespaceTokenName, ignoreIndentationDelimiters } = this.options; + let dedent2; + let indent; + let ws; + const otherTokens = []; + for (const tokenType of tokenTypes) { + for (const [begin, end2] of ignoreIndentationDelimiters) { + if (tokenType.name === begin) { + tokenType.PUSH_MODE = LexingMode.IGNORE_INDENTATION; + } else if (tokenType.name === end2) { + tokenType.POP_MODE = true; } } - } - select[4] = 0; - r2.hoverData.down = null; - r2.hoverData.cxtStarted = false; - r2.hoverData.draggingEles = false; - r2.hoverData.selecting = false; - r2.hoverData.isOverThresholdDrag = false; - r2.dragData.didDrag = false; - r2.hoverData.dragged = false; - r2.hoverData.dragDelta = []; - r2.hoverData.mdownPos = null; - r2.hoverData.mdownGPos = null; - r2.hoverData.which = null; - }, "mouseupHandler"), false); - var wheelHandler = /* @__PURE__ */ __name(function wheelHandler2(e3) { - if (r2.scrollingPage) { - return; - } - var cy = r2.cy; - var zoom2 = cy.zoom(); - var pan2 = cy.pan(); - var pos = r2.projectIntoViewport(e3.clientX, e3.clientY); - var rpos = [pos[0] * zoom2 + pan2.x, pos[1] * zoom2 + pan2.y]; - if (r2.hoverData.draggingEles || r2.hoverData.dragging || r2.hoverData.cxtStarted || inBoxSelection()) { - e3.preventDefault(); - return; - } - if (cy.panningEnabled() && cy.userPanningEnabled() && cy.zoomingEnabled() && cy.userZoomingEnabled()) { - e3.preventDefault(); - r2.data.wheelZooming = true; - clearTimeout(r2.data.wheelTimeout); - r2.data.wheelTimeout = setTimeout(function() { - r2.data.wheelZooming = false; - r2.redrawHint("eles", true); - r2.redraw(); - }, 150); - var diff2; - if (e3.deltaY != null) { - diff2 = e3.deltaY / -250; - } else if (e3.wheelDeltaY != null) { - diff2 = e3.wheelDeltaY / 1e3; + if (tokenType.name === dedentTokenName) { + dedent2 = tokenType; + } else if (tokenType.name === indentTokenName) { + indent = tokenType; + } else if (tokenType.name === whitespaceTokenName) { + ws = tokenType; } else { - diff2 = e3.wheelDelta / 1e3; - } - diff2 = diff2 * r2.wheelSensitivity; - var needsWheelFix = e3.deltaMode === 1; - if (needsWheelFix) { - diff2 *= 33; - } - var newZoom = cy.zoom() * Math.pow(10, diff2); - if (e3.type === "gesturechange") { - newZoom = r2.gestureStartZoom * e3.scale; + otherTokens.push(tokenType); } - cy.zoom({ - level: newZoom, - renderedPosition: { - x: rpos[0], - y: rpos[1] - } - }); - cy.emit(e3.type === "gesturechange" ? "pinchzoom" : "scrollzoom"); - } - }, "wheelHandler"); - r2.registerBinding(r2.container, "wheel", wheelHandler, true); - r2.registerBinding(containerWindow, "scroll", /* @__PURE__ */ __name(function scrollHandler(e3) { - r2.scrollingPage = true; - clearTimeout(r2.scrollingPageTimeout); - r2.scrollingPageTimeout = setTimeout(function() { - r2.scrollingPage = false; - }, 250); - }, "scrollHandler"), true); - r2.registerBinding(r2.container, "gesturestart", /* @__PURE__ */ __name(function gestureStartHandler(e3) { - r2.gestureStartZoom = r2.cy.zoom(); - if (!r2.hasTouchStarted) { - e3.preventDefault(); } - }, "gestureStartHandler"), true); - r2.registerBinding(r2.container, "gesturechange", function(e3) { - if (!r2.hasTouchStarted) { - wheelHandler(e3); + if (!dedent2 || !indent || !ws) { + throw new Error("Some indentation/whitespace tokens not found!"); } - }, true); - r2.registerBinding(r2.container, "mouseout", /* @__PURE__ */ __name(function mouseOutHandler(e3) { - var pos = r2.projectIntoViewport(e3.clientX, e3.clientY); - r2.cy.emit({ - originalEvent: e3, - type: "mouseout", - position: { - x: pos[0], - y: pos[1] - } - }); - }, "mouseOutHandler"), false); - r2.registerBinding(r2.container, "mouseover", /* @__PURE__ */ __name(function mouseOverHandler(e3) { - var pos = r2.projectIntoViewport(e3.clientX, e3.clientY); - r2.cy.emit({ - originalEvent: e3, - type: "mouseover", - position: { - x: pos[0], - y: pos[1] - } - }); - }, "mouseOverHandler"), false); - var f1x1, f1y1, f2x1, f2y1; - var distance1, distance1Sq; - var center1, modelCenter1; - var offsetLeft, offsetTop; - var containerWidth, containerHeight; - var twoFingersStartInside; - var distance2 = /* @__PURE__ */ __name(function distance3(x1, y1, x22, y22) { - return Math.sqrt((x22 - x1) * (x22 - x1) + (y22 - y1) * (y22 - y1)); - }, "distance"); - var distanceSq = /* @__PURE__ */ __name(function distanceSq2(x1, y1, x22, y22) { - return (x22 - x1) * (x22 - x1) + (y22 - y1) * (y22 - y1); - }, "distanceSq"); - var touchstartHandler; - r2.registerBinding(r2.container, "touchstart", touchstartHandler = /* @__PURE__ */ __name(function touchstartHandler2(e3) { - r2.hasTouchStarted = true; - if (!eventInContainer(e3)) { - return; + if (ignoreIndentationDelimiters.length > 0) { + const multiModeLexerDef = { + modes: { + [LexingMode.REGULAR]: [dedent2, indent, ...otherTokens, ws], + [LexingMode.IGNORE_INDENTATION]: [...otherTokens, ws] + }, + defaultMode: LexingMode.REGULAR + }; + return multiModeLexerDef; + } else { + return [dedent2, indent, ws, ...otherTokens]; } - blurActiveDomElement(); - r2.touchData.capture = true; - r2.data.bgActivePosistion = void 0; - var cy = r2.cy; - var now4 = r2.touchData.now; - var earlier = r2.touchData.earlier; - if (e3.touches[0]) { - var pos = r2.projectIntoViewport(e3.touches[0].clientX, e3.touches[0].clientY); - now4[0] = pos[0]; - now4[1] = pos[1]; + } + flushLexingReport(text4) { + const result = super.flushLexingReport(text4); + return Object.assign(Object.assign({}, result), { remainingDedents: this.flushRemainingDedents(text4) }); + } + /** + * Helper function to check if the current position is the start of a new line. + * + * @param text The full input string. + * @param offset The current position at which to check + * @returns Whether the current position is the start of a new line + */ + isStartOfLine(text4, offset) { + return offset === 0 || "\r\n".includes(text4[offset - 1]); + } + /** + * A helper function used in matching both indents and dedents. + * + * @param text The full input string. + * @param offset The current position at which to attempt a match + * @param tokens Previously scanned tokens + * @param groups Token Groups + * @returns The current and previous indentation levels and the matched whitespace + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + matchWhitespace(text4, offset, tokens2, groups) { + var _a; + this.whitespaceRegExp.lastIndex = offset; + const match2 = this.whitespaceRegExp.exec(text4); + return { + currIndentLevel: (_a = match2 === null || match2 === void 0 ? void 0 : match2[0].length) !== null && _a !== void 0 ? _a : 0, + prevIndentLevel: this.indentationStack.at(-1), + match: match2 + }; + } + /** + * Helper function to create an instance of an indentation token. + * + * @param tokenType Indent or dedent token type + * @param text Full input string, used to calculate the line number + * @param image The original image of the token (tabs or spaces) + * @param offset Current position in the input string + * @returns The indentation token instance + */ + createIndentationTokenInstance(tokenType, text4, image, offset) { + const lineNumber = this.getLineNumber(text4, offset); + return createTokenInstance(tokenType, image, offset, offset + image.length, lineNumber, lineNumber, 1, image.length); + } + /** + * Helper function to get the line number at a given offset. + * + * @param text Full input string, used to calculate the line number + * @param offset Current position in the input string + * @returns The line number at the given offset + */ + getLineNumber(text4, offset) { + return text4.substring(0, offset).split(/\r\n|\r|\n/).length; + } + /** + * A custom pattern for matching indents + * + * @param text The full input string. + * @param offset The offset at which to attempt a match + * @param tokens Previously scanned tokens + * @param groups Token Groups + */ + indentMatcher(text4, offset, tokens2, groups) { + if (!this.isStartOfLine(text4, offset)) { + return null; } - if (e3.touches[1]) { - var pos = r2.projectIntoViewport(e3.touches[1].clientX, e3.touches[1].clientY); - now4[2] = pos[0]; - now4[3] = pos[1]; + const { currIndentLevel, prevIndentLevel, match: match2 } = this.matchWhitespace(text4, offset, tokens2, groups); + if (currIndentLevel <= prevIndentLevel) { + return null; } - if (e3.touches[2]) { - var pos = r2.projectIntoViewport(e3.touches[2].clientX, e3.touches[2].clientY); - now4[4] = pos[0]; - now4[5] = pos[1]; + this.indentationStack.push(currIndentLevel); + return match2; + } + /** + * A custom pattern for matching dedents + * + * @param text The full input string. + * @param offset The offset at which to attempt a match + * @param tokens Previously scanned tokens + * @param groups Token Groups + */ + dedentMatcher(text4, offset, tokens2, groups) { + var _a, _b, _c, _d; + if (!this.isStartOfLine(text4, offset)) { + return null; } - if (e3.touches[1]) { - r2.touchData.singleTouchMoved = true; - freeDraggedElements(r2.dragData.touchDragEles); - var offsets = r2.findContainerClientCoords(); - offsetLeft = offsets[0]; - offsetTop = offsets[1]; - containerWidth = offsets[2]; - containerHeight = offsets[3]; - f1x1 = e3.touches[0].clientX - offsetLeft; - f1y1 = e3.touches[0].clientY - offsetTop; - f2x1 = e3.touches[1].clientX - offsetLeft; - f2y1 = e3.touches[1].clientY - offsetTop; - twoFingersStartInside = 0 <= f1x1 && f1x1 <= containerWidth && 0 <= f2x1 && f2x1 <= containerWidth && 0 <= f1y1 && f1y1 <= containerHeight && 0 <= f2y1 && f2y1 <= containerHeight; - var pan2 = cy.pan(); - var zoom2 = cy.zoom(); - distance1 = distance2(f1x1, f1y1, f2x1, f2y1); - distance1Sq = distanceSq(f1x1, f1y1, f2x1, f2y1); - center1 = [(f1x1 + f2x1) / 2, (f1y1 + f2y1) / 2]; - modelCenter1 = [(center1[0] - pan2.x) / zoom2, (center1[1] - pan2.y) / zoom2]; - var cxtDistThreshold = 200; - var cxtDistThresholdSq = cxtDistThreshold * cxtDistThreshold; - if (distance1Sq < cxtDistThresholdSq && !e3.touches[2]) { - var near1 = r2.findNearestElement(now4[0], now4[1], true, true); - var near2 = r2.findNearestElement(now4[2], now4[3], true, true); - if (near1 && near1.isNode()) { - near1.activate().emit({ - originalEvent: e3, - type: "cxttapstart", - position: { - x: now4[0], - y: now4[1] - } - }); - r2.touchData.start = near1; - } else if (near2 && near2.isNode()) { - near2.activate().emit({ - originalEvent: e3, - type: "cxttapstart", - position: { - x: now4[0], - y: now4[1] - } - }); - r2.touchData.start = near2; - } else { - cy.emit({ - originalEvent: e3, - type: "cxttapstart", - position: { - x: now4[0], - y: now4[1] - } - }); - } - if (r2.touchData.start) { - r2.touchData.start._private.grabbed = false; - } - r2.touchData.cxt = true; - r2.touchData.cxtDragged = false; - r2.data.bgActivePosistion = void 0; - r2.redraw(); - return; - } + const { currIndentLevel, prevIndentLevel, match: match2 } = this.matchWhitespace(text4, offset, tokens2, groups); + if (currIndentLevel >= prevIndentLevel) { + return null; } - if (e3.touches[2]) { - if (cy.boxSelectionEnabled()) { - e3.preventDefault(); - } - } else if (e3.touches[1]) ; - else if (e3.touches[0]) { - var nears = r2.findNearestElements(now4[0], now4[1], true, true); - var near = nears[0]; - if (near != null) { - near.activate(); - r2.touchData.start = near; - r2.touchData.starts = nears; - if (r2.nodeIsGrabbable(near)) { - var draggedEles = r2.dragData.touchDragEles = cy.collection(); - var selectedNodes = null; - r2.redrawHint("eles", true); - r2.redrawHint("drag", true); - if (near.selected()) { - selectedNodes = cy.$(function(ele) { - return ele.selected() && r2.nodeIsGrabbable(ele); - }); - addNodesToDrag(selectedNodes, { - addToList: draggedEles - }); - } else { - addNodeToDrag(near, { - addToList: draggedEles - }); - } - setGrabTarget(near); - var makeEvent = /* @__PURE__ */ __name(function makeEvent2(type3) { - return { - originalEvent: e3, - type: type3, - position: { - x: now4[0], - y: now4[1] - } - }; - }, "makeEvent"); - near.emit(makeEvent("grabon")); - if (selectedNodes) { - selectedNodes.forEach(function(n2) { - n2.emit(makeEvent("grab")); - }); - } else { - near.emit(makeEvent("grab")); - } - } - } - triggerEvents(near, ["touchstart", "tapstart", "vmousedown"], e3, { - x: now4[0], - y: now4[1] + const matchIndentIndex = this.indentationStack.lastIndexOf(currIndentLevel); + if (matchIndentIndex === -1) { + this.diagnostics.push({ + severity: "error", + message: `Invalid dedent level ${currIndentLevel} at offset: ${offset}. Current indentation stack: ${this.indentationStack}`, + offset, + length: (_b = (_a = match2 === null || match2 === void 0 ? void 0 : match2[0]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0, + line: this.getLineNumber(text4, offset), + column: 1 }); - if (near == null) { - r2.data.bgActivePosistion = { - x: pos[0], - y: pos[1] - }; - r2.redrawHint("select", true); - r2.redraw(); - } - r2.touchData.singleTouchMoved = false; - r2.touchData.singleTouchStartTime = +/* @__PURE__ */ new Date(); - clearTimeout(r2.touchData.tapholdTimeout); - r2.touchData.tapholdTimeout = setTimeout(function() { - if (r2.touchData.singleTouchMoved === false && !r2.pinching && !r2.touchData.selecting) { - triggerEvents(r2.touchData.start, ["taphold"], e3, { - x: now4[0], - y: now4[1] - }); - } - }, r2.tapholdDuration); + return null; } - if (e3.touches.length >= 1) { - var sPos = r2.touchData.startPosition = [null, null, null, null, null, null]; - for (var i2 = 0; i2 < now4.length; i2++) { - sPos[i2] = earlier[i2] = now4[i2]; - } - var touch0 = e3.touches[0]; - r2.touchData.startGPosition = [touch0.clientX, touch0.clientY]; + const numberOfDedents = this.indentationStack.length - matchIndentIndex - 1; + const newlinesBeforeDedent = (_d = (_c = text4.substring(0, offset).match(/[\r\n]+$/)) === null || _c === void 0 ? void 0 : _c[0].length) !== null && _d !== void 0 ? _d : 1; + for (let i2 = 0; i2 < numberOfDedents; i2++) { + const token2 = this.createIndentationTokenInstance( + this.dedentTokenType, + text4, + "", + // Dedents are 0-width tokens + offset - (newlinesBeforeDedent - 1) + ); + tokens2.push(token2); + this.indentationStack.pop(); } - }, "touchstartHandler"), false); - var touchmoveHandler; - r2.registerBinding(containerWindow, "touchmove", touchmoveHandler = /* @__PURE__ */ __name(function touchmoveHandler2(e3) { - var capture = r2.touchData.capture; - if (!capture && !eventInContainer(e3)) { - return; + return null; + } + buildTerminalToken(terminal) { + const tokenType = super.buildTerminalToken(terminal); + const { indentTokenName, dedentTokenName, whitespaceTokenName } = this.options; + if (tokenType.name === indentTokenName) { + return this.indentTokenType; + } else if (tokenType.name === dedentTokenName) { + return this.dedentTokenType; + } else if (tokenType.name === whitespaceTokenName) { + return createToken({ + name: whitespaceTokenName, + pattern: this.whitespaceRegExp, + group: Lexer2.SKIPPED + }); } - var select = r2.selection; - var cy = r2.cy; - var now4 = r2.touchData.now; - var earlier = r2.touchData.earlier; - var zoom2 = cy.zoom(); - if (e3.touches[0]) { - var pos = r2.projectIntoViewport(e3.touches[0].clientX, e3.touches[0].clientY); - now4[0] = pos[0]; - now4[1] = pos[1]; + return tokenType; + } + /** + * Resets the indentation stack between different runs of the lexer + * + * @param text Full text that was tokenized + * @returns Remaining dedent tokens to match all previous indents at the end of the file + */ + flushRemainingDedents(text4) { + const remainingDedents = []; + while (this.indentationStack.length > 1) { + remainingDedents.push(this.createIndentationTokenInstance(this.dedentTokenType, text4, "", text4.length)); + this.indentationStack.pop(); } - if (e3.touches[1]) { - var pos = r2.projectIntoViewport(e3.touches[1].clientX, e3.touches[1].clientY); - now4[2] = pos[0]; - now4[3] = pos[1]; + this.indentationStack = [0]; + return remainingDedents; + } + }; + IndentationAwareLexer = class extends DefaultLexer { + static { + __name(this, "IndentationAwareLexer"); + } + constructor(services) { + super(services); + if (services.parser.TokenBuilder instanceof IndentationAwareTokenBuilder) { + this.indentationTokenBuilder = services.parser.TokenBuilder; + } else { + throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder"); } - if (e3.touches[2]) { - var pos = r2.projectIntoViewport(e3.touches[2].clientX, e3.touches[2].clientY); - now4[4] = pos[0]; - now4[5] = pos[1]; + } + tokenize(text4, options2 = DEFAULT_TOKENIZE_OPTIONS) { + const result = super.tokenize(text4); + const report = result.report; + if ((options2 === null || options2 === void 0 ? void 0 : options2.mode) === "full") { + result.tokens.push(...report.remainingDedents); } - var startGPos = r2.touchData.startGPosition; - var isOverThresholdDrag; - if (capture && e3.touches[0] && startGPos) { - var disp = []; - for (var j2 = 0; j2 < now4.length; j2++) { - disp[j2] = now4[j2] - earlier[j2]; + report.remainingDedents = []; + const { indentTokenType, dedentTokenType } = this.indentationTokenBuilder; + const indentTokenIdx = indentTokenType.tokenTypeIdx; + const dedentTokenIdx = dedentTokenType.tokenTypeIdx; + const cleanTokens = []; + const length2 = result.tokens.length - 1; + for (let i2 = 0; i2 < length2; i2++) { + const token2 = result.tokens[i2]; + const nextToken = result.tokens[i2 + 1]; + if (token2.tokenTypeIdx === indentTokenIdx && nextToken.tokenTypeIdx === dedentTokenIdx) { + i2++; + continue; } - var dx = e3.touches[0].clientX - startGPos[0]; - var dx2 = dx * dx; - var dy = e3.touches[0].clientY - startGPos[1]; - var dy2 = dy * dy; - var dist22 = dx2 + dy2; - isOverThresholdDrag = dist22 >= r2.touchTapThreshold2; + cleanTokens.push(token2); } - if (capture && r2.touchData.cxt) { - e3.preventDefault(); - var f1x2 = e3.touches[0].clientX - offsetLeft, f1y2 = e3.touches[0].clientY - offsetTop; - var f2x2 = e3.touches[1].clientX - offsetLeft, f2y2 = e3.touches[1].clientY - offsetTop; - var distance2Sq = distanceSq(f1x2, f1y2, f2x2, f2y2); - var factorSq = distance2Sq / distance1Sq; - var distThreshold = 150; - var distThresholdSq = distThreshold * distThreshold; - var factorThreshold = 1.5; - var factorThresholdSq = factorThreshold * factorThreshold; - if (factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq) { - r2.touchData.cxt = false; - r2.data.bgActivePosistion = void 0; - r2.redrawHint("select", true); - var cxtEvt = { - originalEvent: e3, - type: "cxttapend", - position: { - x: now4[0], - y: now4[1] - } - }; - if (r2.touchData.start) { - r2.touchData.start.unactivate().emit(cxtEvt); - r2.touchData.start = null; - } else { - cy.emit(cxtEvt); - } - } + if (length2 >= 0) { + cleanTokens.push(result.tokens[length2]); } - if (capture && r2.touchData.cxt) { - var cxtEvt = { - originalEvent: e3, - type: "cxtdrag", - position: { - x: now4[0], - y: now4[1] - } - }; - r2.data.bgActivePosistion = void 0; - r2.redrawHint("select", true); - if (r2.touchData.start) { - r2.touchData.start.emit(cxtEvt); - } else { - cy.emit(cxtEvt); - } - if (r2.touchData.start) { - r2.touchData.start._private.grabbed = false; - } - r2.touchData.cxtDragged = true; - var near = r2.findNearestElement(now4[0], now4[1], true, true); - if (!r2.touchData.cxtOver || near !== r2.touchData.cxtOver) { - if (r2.touchData.cxtOver) { - r2.touchData.cxtOver.emit({ - originalEvent: e3, - type: "cxtdragout", - position: { - x: now4[0], - y: now4[1] - } - }); - } - r2.touchData.cxtOver = near; - if (near) { - near.emit({ - originalEvent: e3, - type: "cxtdragover", - position: { - x: now4[0], - y: now4[1] - } - }); - } - } - } else if (capture && e3.touches[2] && cy.boxSelectionEnabled()) { - e3.preventDefault(); - r2.data.bgActivePosistion = void 0; - this.lastThreeTouch = +/* @__PURE__ */ new Date(); - if (!r2.touchData.selecting) { - cy.emit({ - originalEvent: e3, - type: "boxstart", - position: { - x: now4[0], - y: now4[1] - } - }); - } - r2.touchData.selecting = true; - r2.touchData.didSelect = true; - select[4] = 1; - if (!select || select.length === 0 || select[0] === void 0) { - select[0] = (now4[0] + now4[2] + now4[4]) / 3; - select[1] = (now4[1] + now4[3] + now4[5]) / 3; - select[2] = (now4[0] + now4[2] + now4[4]) / 3 + 1; - select[3] = (now4[1] + now4[3] + now4[5]) / 3 + 1; - } else { - select[2] = (now4[0] + now4[2] + now4[4]) / 3; - select[3] = (now4[1] + now4[3] + now4[5]) / 3; - } - r2.redrawHint("select", true); - r2.redraw(); - } else if (capture && e3.touches[1] && !r2.touchData.didSelect && cy.zoomingEnabled() && cy.panningEnabled() && cy.userZoomingEnabled() && cy.userPanningEnabled()) { - e3.preventDefault(); - r2.data.bgActivePosistion = void 0; - r2.redrawHint("select", true); - var draggedEles = r2.dragData.touchDragEles; - if (draggedEles) { - r2.redrawHint("drag", true); - for (var i2 = 0; i2 < draggedEles.length; i2++) { - var de_p = draggedEles[i2]._private; - de_p.grabbed = false; - de_p.rscratch.inDragLayer = false; - } - } - var _start = r2.touchData.start; - var f1x2 = e3.touches[0].clientX - offsetLeft, f1y2 = e3.touches[0].clientY - offsetTop; - var f2x2 = e3.touches[1].clientX - offsetLeft, f2y2 = e3.touches[1].clientY - offsetTop; - var distance22 = distance2(f1x2, f1y2, f2x2, f2y2); - var factor = distance22 / distance1; - if (twoFingersStartInside) { - var df1x = f1x2 - f1x1; - var df1y = f1y2 - f1y1; - var df2x = f2x2 - f2x1; - var df2y = f2y2 - f2y1; - var tx = (df1x + df2x) / 2; - var ty = (df1y + df2y) / 2; - var zoom1 = cy.zoom(); - var zoom22 = zoom1 * factor; - var pan1 = cy.pan(); - var ctrx = modelCenter1[0] * zoom1 + pan1.x; - var ctry = modelCenter1[1] * zoom1 + pan1.y; - var pan2 = { - x: -zoom22 / zoom1 * (ctrx - pan1.x - tx) + ctrx, - y: -zoom22 / zoom1 * (ctry - pan1.y - ty) + ctry - }; - if (_start && _start.active()) { - var draggedEles = r2.dragData.touchDragEles; - freeDraggedElements(draggedEles); - r2.redrawHint("drag", true); - r2.redrawHint("eles", true); - _start.unactivate().emit("freeon"); - draggedEles.emit("free"); - if (r2.dragData.didDrag) { - _start.emit("dragfreeon"); - draggedEles.emit("dragfree"); - } - } - cy.viewport({ - zoom: zoom22, - pan: pan2, - cancelOnFailedZoom: true - }); - cy.emit("pinchzoom"); - distance1 = distance22; - f1x1 = f1x2; - f1y1 = f1y2; - f2x1 = f2x2; - f2y1 = f2y2; - r2.pinching = true; - } - if (e3.touches[0]) { - var pos = r2.projectIntoViewport(e3.touches[0].clientX, e3.touches[0].clientY); - now4[0] = pos[0]; - now4[1] = pos[1]; - } - if (e3.touches[1]) { - var pos = r2.projectIntoViewport(e3.touches[1].clientX, e3.touches[1].clientY); - now4[2] = pos[0]; - now4[3] = pos[1]; - } - if (e3.touches[2]) { - var pos = r2.projectIntoViewport(e3.touches[2].clientX, e3.touches[2].clientY); - now4[4] = pos[0]; - now4[5] = pos[1]; - } - } else if (e3.touches[0] && !r2.touchData.didSelect) { - var start3 = r2.touchData.start; - var last3 = r2.touchData.last; - var near; - if (!r2.hoverData.draggingEles && !r2.swipePanning) { - near = r2.findNearestElement(now4[0], now4[1], true, true); - } - if (capture && start3 != null) { - e3.preventDefault(); - } - if (capture && start3 != null && r2.nodeIsDraggable(start3)) { - if (isOverThresholdDrag) { - var draggedEles = r2.dragData.touchDragEles; - var justStartedDrag = !r2.dragData.didDrag; - if (justStartedDrag) { - addNodesToDrag(draggedEles, { - inDragLayer: true - }); - } - r2.dragData.didDrag = true; - var totalShift = { - x: 0, - y: 0 - }; - if (number$1(disp[0]) && number$1(disp[1])) { - totalShift.x += disp[0]; - totalShift.y += disp[1]; - if (justStartedDrag) { - r2.redrawHint("eles", true); - var dragDelta = r2.touchData.dragDelta; - if (dragDelta && number$1(dragDelta[0]) && number$1(dragDelta[1])) { - totalShift.x += dragDelta[0]; - totalShift.y += dragDelta[1]; - } - } - } - r2.hoverData.draggingEles = true; - draggedEles.silentShift(totalShift).emit("position drag"); - r2.redrawHint("drag", true); - if (r2.touchData.startPosition[0] == earlier[0] && r2.touchData.startPosition[1] == earlier[1]) { - r2.redrawHint("eles", true); - } - r2.redraw(); - } else { - var dragDelta = r2.touchData.dragDelta = r2.touchData.dragDelta || []; - if (dragDelta.length === 0) { - dragDelta.push(disp[0]); - dragDelta.push(disp[1]); - } else { - dragDelta[0] += disp[0]; - dragDelta[1] += disp[1]; - } - } + result.tokens = cleanTokens; + return result; + } + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/parser-config.js + var init_parser_config = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/parser-config.js"() { + "use strict"; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/index.js + var init_parser2 = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/parser/index.js"() { + "use strict"; + init_async_parser(); + init_completion_parser_builder(); + init_cst_node_builder(); + init_indentation_aware(); + init_langium_parser_builder(); + init_langium_parser(); + init_lexer2(); + init_parser_builder_base(); + init_parser_config(); + init_token_builder(); + init_value_converter(); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/index.js + var init_references2 = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/references/index.js"() { + "use strict"; + init_linker(); + init_name_provider(); + init_references(); + init_scope(); + init_scope_computation(); + init_scope_provider(); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/index.js + var init_serializer = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/serializer/index.js"() { + "use strict"; + init_hydrator(); + init_json_serializer(); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/file-system-provider.js + var EmptyFileSystemProvider, EmptyFileSystem; + var init_file_system_provider = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/file-system-provider.js"() { + "use strict"; + EmptyFileSystemProvider = class { + static { + __name(this, "EmptyFileSystemProvider"); + } + readFile() { + throw new Error("No file system is available."); + } + async readDirectory() { + return []; + } + }; + EmptyFileSystem = { + fileSystemProvider: /* @__PURE__ */ __name(() => new EmptyFileSystemProvider(), "fileSystemProvider") + }; + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/grammar-loader.js + function createMinimalGrammarServices() { + const shared = inject(createDefaultSharedCoreModule(EmptyFileSystem), minimalSharedGrammarModule); + const grammar = inject(createDefaultCoreModule({ shared }), minimalGrammarModule); + shared.ServiceRegistry.register(grammar); + return grammar; + } + function loadGrammarFromJson(json3) { + var _a; + const services = createMinimalGrammarServices(); + const astNode = services.serializer.JsonSerializer.deserialize(json3); + services.shared.workspace.LangiumDocumentFactory.fromModel(astNode, URI2.parse(`memory://${(_a = astNode.name) !== null && _a !== void 0 ? _a : "grammar"}.langium`)); + return astNode; + } + var minimalGrammarModule, minimalSharedGrammarModule; + var init_grammar_loader = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/grammar-loader.js"() { + "use strict"; + init_default_module(); + init_dependency_injection(); + init_ast(); + init_file_system_provider(); + init_uri_utils(); + minimalGrammarModule = { + Grammar: /* @__PURE__ */ __name(() => void 0, "Grammar"), + LanguageMetaData: /* @__PURE__ */ __name(() => ({ + caseInsensitive: false, + fileExtensions: [".langium"], + languageId: "langium" + }), "LanguageMetaData") + }; + minimalSharedGrammarModule = { + AstReflection: /* @__PURE__ */ __name(() => new LangiumGrammarAstReflection(), "AstReflection") + }; + __name(createMinimalGrammarServices, "createMinimalGrammarServices"); + __name(loadGrammarFromJson, "loadGrammarFromJson"); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/index.js + var utils_exports = {}; + __export(utils_exports, { + AstUtils: () => ast_utils_exports, + BiMap: () => BiMap, + Cancellation: () => cancellation_exports, + ContextCache: () => ContextCache, + CstUtils: () => cst_utils_exports, + DONE_RESULT: () => DONE_RESULT, + Deferred: () => Deferred, + Disposable: () => Disposable, + DisposableCache: () => DisposableCache, + DocumentCache: () => DocumentCache, + EMPTY_STREAM: () => EMPTY_STREAM, + ErrorWithLocation: () => ErrorWithLocation, + GrammarUtils: () => grammar_utils_exports, + MultiMap: () => MultiMap, + OperationCancelled: () => OperationCancelled, + Reduction: () => Reduction, + RegExpUtils: () => regexp_utils_exports, + SimpleCache: () => SimpleCache, + StreamImpl: () => StreamImpl, + TreeStreamImpl: () => TreeStreamImpl, + URI: () => URI2, + UriUtils: () => UriUtils, + WorkspaceCache: () => WorkspaceCache, + assertUnreachable: () => assertUnreachable, + delayNextTick: () => delayNextTick, + interruptAndCheck: () => interruptAndCheck, + isOperationCancelled: () => isOperationCancelled, + loadGrammarFromJson: () => loadGrammarFromJson, + setInterruptionPeriod: () => setInterruptionPeriod, + startCancelableOperation: () => startCancelableOperation, + stream: () => stream + }); + var init_utils4 = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/utils/index.js"() { + "use strict"; + init_caching(); + init_event3(); + __reExport(utils_exports, event_exports); + init_collections(); + init_disposable(); + init_errors2(); + init_grammar_loader(); + init_promise_utils(); + init_stream(); + init_uri_utils(); + init_ast_utils(); + init_cancellation(); + init_cst_utils(); + init_grammar_utils(); + init_regexp_utils(); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/index.js + var init_validation = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/validation/index.js"() { + "use strict"; + init_document_validator(); + init_validation_registry(); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/index.js + var init_workspace = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/workspace/index.js"() { + "use strict"; + init_ast_descriptions(); + init_ast_node_locator(); + init_configuration(); + init_document_builder(); + init_documents(); + init_file_system_provider(); + init_index_manager(); + init_workspace_lock(); + init_workspace_manager(); + } + }); + + // ../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/index.js + var lib_exports = {}; + __export(lib_exports, { + AbstractAstReflection: () => AbstractAstReflection, + AbstractCstNode: () => AbstractCstNode, + AbstractLangiumParser: () => AbstractLangiumParser, + AbstractParserErrorMessageProvider: () => AbstractParserErrorMessageProvider, + AbstractThreadedAsyncParser: () => AbstractThreadedAsyncParser, + AstUtils: () => ast_utils_exports, + BiMap: () => BiMap, + Cancellation: () => cancellation_exports, + CompositeCstNodeImpl: () => CompositeCstNodeImpl, + ContextCache: () => ContextCache, + CstNodeBuilder: () => CstNodeBuilder, + CstUtils: () => cst_utils_exports, + DEFAULT_TOKENIZE_OPTIONS: () => DEFAULT_TOKENIZE_OPTIONS, + DONE_RESULT: () => DONE_RESULT, + DatatypeSymbol: () => DatatypeSymbol, + DefaultAstNodeDescriptionProvider: () => DefaultAstNodeDescriptionProvider, + DefaultAstNodeLocator: () => DefaultAstNodeLocator, + DefaultAsyncParser: () => DefaultAsyncParser, + DefaultCommentProvider: () => DefaultCommentProvider, + DefaultConfigurationProvider: () => DefaultConfigurationProvider, + DefaultDocumentBuilder: () => DefaultDocumentBuilder, + DefaultDocumentValidator: () => DefaultDocumentValidator, + DefaultHydrator: () => DefaultHydrator, + DefaultIndexManager: () => DefaultIndexManager, + DefaultJsonSerializer: () => DefaultJsonSerializer, + DefaultLangiumDocumentFactory: () => DefaultLangiumDocumentFactory, + DefaultLangiumDocuments: () => DefaultLangiumDocuments, + DefaultLexer: () => DefaultLexer, + DefaultLexerErrorMessageProvider: () => DefaultLexerErrorMessageProvider, + DefaultLinker: () => DefaultLinker, + DefaultNameProvider: () => DefaultNameProvider, + DefaultReferenceDescriptionProvider: () => DefaultReferenceDescriptionProvider, + DefaultReferences: () => DefaultReferences, + DefaultScopeComputation: () => DefaultScopeComputation, + DefaultScopeProvider: () => DefaultScopeProvider, + DefaultServiceRegistry: () => DefaultServiceRegistry, + DefaultTokenBuilder: () => DefaultTokenBuilder, + DefaultValueConverter: () => DefaultValueConverter, + DefaultWorkspaceLock: () => DefaultWorkspaceLock, + DefaultWorkspaceManager: () => DefaultWorkspaceManager, + Deferred: () => Deferred, + Disposable: () => Disposable, + DisposableCache: () => DisposableCache, + DocumentCache: () => DocumentCache, + DocumentState: () => DocumentState, + DocumentValidator: () => DocumentValidator, + EMPTY_SCOPE: () => EMPTY_SCOPE, + EMPTY_STREAM: () => EMPTY_STREAM, + EmptyFileSystem: () => EmptyFileSystem, + EmptyFileSystemProvider: () => EmptyFileSystemProvider, + ErrorWithLocation: () => ErrorWithLocation, + GrammarAST: () => ast_exports, + GrammarUtils: () => grammar_utils_exports, + IndentationAwareLexer: () => IndentationAwareLexer, + IndentationAwareTokenBuilder: () => IndentationAwareTokenBuilder, + JSDocDocumentationProvider: () => JSDocDocumentationProvider, + LangiumCompletionParser: () => LangiumCompletionParser, + LangiumParser: () => LangiumParser, + LangiumParserErrorMessageProvider: () => LangiumParserErrorMessageProvider, + LeafCstNodeImpl: () => LeafCstNodeImpl, + LexingMode: () => LexingMode, + MapScope: () => MapScope, + Module: () => Module, + MultiMap: () => MultiMap, + OperationCancelled: () => OperationCancelled, + ParserWorker: () => ParserWorker, + Reduction: () => Reduction, + RegExpUtils: () => regexp_utils_exports, + RootCstNodeImpl: () => RootCstNodeImpl, + SimpleCache: () => SimpleCache, + StreamImpl: () => StreamImpl, + StreamScope: () => StreamScope, + TextDocument: () => TextDocument2, + TreeStreamImpl: () => TreeStreamImpl, + URI: () => URI2, + UriUtils: () => UriUtils, + ValidationCategory: () => ValidationCategory, + ValidationRegistry: () => ValidationRegistry, + ValueConverter: () => ValueConverter, + WorkspaceCache: () => WorkspaceCache, + assertUnreachable: () => assertUnreachable, + createCompletionParser: () => createCompletionParser, + createDefaultCoreModule: () => createDefaultCoreModule, + createDefaultSharedCoreModule: () => createDefaultSharedCoreModule, + createGrammarConfig: () => createGrammarConfig, + createLangiumParser: () => createLangiumParser, + createParser: () => createParser, + delayNextTick: () => delayNextTick, + diagnosticData: () => diagnosticData, + eagerLoad: () => eagerLoad, + getDiagnosticRange: () => getDiagnosticRange, + indentationBuilderDefaultOptions: () => indentationBuilderDefaultOptions, + inject: () => inject, + interruptAndCheck: () => interruptAndCheck, + isAstNode: () => isAstNode, + isAstNodeDescription: () => isAstNodeDescription, + isAstNodeWithComment: () => isAstNodeWithComment, + isCompositeCstNode: () => isCompositeCstNode, + isIMultiModeLexerDefinition: () => isIMultiModeLexerDefinition, + isJSDoc: () => isJSDoc, + isLeafCstNode: () => isLeafCstNode, + isLinkingError: () => isLinkingError, + isNamed: () => isNamed, + isOperationCancelled: () => isOperationCancelled, + isReference: () => isReference, + isRootCstNode: () => isRootCstNode, + isTokenTypeArray: () => isTokenTypeArray, + isTokenTypeDictionary: () => isTokenTypeDictionary, + loadGrammarFromJson: () => loadGrammarFromJson, + parseJSDoc: () => parseJSDoc, + prepareLangiumParser: () => prepareLangiumParser, + setInterruptionPeriod: () => setInterruptionPeriod, + startCancelableOperation: () => startCancelableOperation, + stream: () => stream, + toDiagnosticData: () => toDiagnosticData, + toDiagnosticSeverity: () => toDiagnosticSeverity + }); + var init_lib3 = __esm({ + "../../node_modules/.pnpm/langium@3.3.1/node_modules/langium/lib/index.js"() { + "use strict"; + init_default_module(); + init_dependency_injection(); + init_service_registry(); + init_services(); + init_syntax_tree(); + init_documentation(); + init_languages(); + init_parser2(); + init_references2(); + init_serializer(); + init_utils4(); + __reExport(lib_exports, utils_exports); + init_validation(); + init_workspace(); + init_ast(); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/chunk-FPAJGGOC.mjs + function isArchitecture(item) { + return reflection2.isInstance(item, Architecture); + } + function isBranch(item) { + return reflection2.isInstance(item, Branch); + } + function isCommit(item) { + return reflection2.isInstance(item, Commit); + } + function isGitGraph(item) { + return reflection2.isInstance(item, GitGraph); + } + function isInfo(item) { + return reflection2.isInstance(item, Info); + } + function isMerge(item) { + return reflection2.isInstance(item, Merge); + } + function isPacket(item) { + return reflection2.isInstance(item, Packet); + } + function isPacketBlock(item) { + return reflection2.isInstance(item, PacketBlock); + } + function isPie(item) { + return reflection2.isInstance(item, Pie); + } + function isPieSection(item) { + return reflection2.isInstance(item, PieSection); + } + function isTreemap(item) { + return reflection2.isInstance(item, Treemap); + } + var __defProp2, __name2, Statement, Architecture, Axis, Branch, Checkout, CherryPicking, ClassDefStatement, Commit, Curve, Edge, Entry, GitGraph, Group2, Info, Item, Junction, Merge, Option3, Packet, PacketBlock, Pie, PieSection, Radar, Service, Treemap, TreemapRow, Direction, Leaf, Section, MermaidAstReflection, reflection2, loadedInfoGrammar, InfoGrammar, loadedPacketGrammar, PacketGrammar, loadedPieGrammar, PieGrammar, loadedArchitectureGrammar, ArchitectureGrammar, loadedGitGraphGrammar, GitGraphGrammar, loadedRadarGrammar, RadarGrammar, loadedTreemapGrammar, TreemapGrammar, InfoLanguageMetaData, PacketLanguageMetaData, PieLanguageMetaData, ArchitectureLanguageMetaData, GitGraphLanguageMetaData, RadarLanguageMetaData, TreemapLanguageMetaData, MermaidGeneratedSharedModule, InfoGeneratedModule, PacketGeneratedModule, PieGeneratedModule, ArchitectureGeneratedModule, GitGraphGeneratedModule, RadarGeneratedModule, TreemapGeneratedModule, accessibilityDescrRegex, accessibilityTitleRegex, titleRegex, rulesRegexes, AbstractMermaidValueConverter, CommonValueConverter, AbstractMermaidTokenBuilder, CommonTokenBuilder; + var init_chunk_FPAJGGOC = __esm({ + "../parser/dist/chunks/mermaid-parser.core/chunk-FPAJGGOC.mjs"() { + "use strict"; + init_lib3(); + init_lib3(); + init_lib3(); + init_lib3(); + __defProp2 = Object.defineProperty; + __name2 = /* @__PURE__ */ __name((target, value2) => __defProp2(target, "name", { value: value2, configurable: true }), "__name"); + Statement = "Statement"; + Architecture = "Architecture"; + __name(isArchitecture, "isArchitecture"); + __name2(isArchitecture, "isArchitecture"); + Axis = "Axis"; + Branch = "Branch"; + __name(isBranch, "isBranch"); + __name2(isBranch, "isBranch"); + Checkout = "Checkout"; + CherryPicking = "CherryPicking"; + ClassDefStatement = "ClassDefStatement"; + Commit = "Commit"; + __name(isCommit, "isCommit"); + __name2(isCommit, "isCommit"); + Curve = "Curve"; + Edge = "Edge"; + Entry = "Entry"; + GitGraph = "GitGraph"; + __name(isGitGraph, "isGitGraph"); + __name2(isGitGraph, "isGitGraph"); + Group2 = "Group"; + Info = "Info"; + __name(isInfo, "isInfo"); + __name2(isInfo, "isInfo"); + Item = "Item"; + Junction = "Junction"; + Merge = "Merge"; + __name(isMerge, "isMerge"); + __name2(isMerge, "isMerge"); + Option3 = "Option"; + Packet = "Packet"; + __name(isPacket, "isPacket"); + __name2(isPacket, "isPacket"); + PacketBlock = "PacketBlock"; + __name(isPacketBlock, "isPacketBlock"); + __name2(isPacketBlock, "isPacketBlock"); + Pie = "Pie"; + __name(isPie, "isPie"); + __name2(isPie, "isPie"); + PieSection = "PieSection"; + __name(isPieSection, "isPieSection"); + __name2(isPieSection, "isPieSection"); + Radar = "Radar"; + Service = "Service"; + Treemap = "Treemap"; + __name(isTreemap, "isTreemap"); + __name2(isTreemap, "isTreemap"); + TreemapRow = "TreemapRow"; + Direction = "Direction"; + Leaf = "Leaf"; + Section = "Section"; + MermaidAstReflection = class extends AbstractAstReflection { + static { + __name(this, "MermaidAstReflection"); + } + static { + __name2(this, "MermaidAstReflection"); + } + getAllTypes() { + return [Architecture, Axis, Branch, Checkout, CherryPicking, ClassDefStatement, Commit, Curve, Direction, Edge, Entry, GitGraph, Group2, Info, Item, Junction, Leaf, Merge, Option3, Packet, PacketBlock, Pie, PieSection, Radar, Section, Service, Statement, Treemap, TreemapRow]; + } + computeIsSubtype(subtype, supertype) { + switch (subtype) { + case Branch: + case Checkout: + case CherryPicking: + case Commit: + case Merge: { + return this.isSubtype(Statement, supertype); } - { - triggerEvents(start3 || near, ["touchmove", "tapdrag", "vmousemove"], e3, { - x: now4[0], - y: now4[1] - }); - if ((!start3 || !start3.grabbed()) && near != last3) { - if (last3) { - last3.emit({ - originalEvent: e3, - type: "tapdragout", - position: { - x: now4[0], - y: now4[1] - } - }); - } - if (near) { - near.emit({ - originalEvent: e3, - type: "tapdragover", - position: { - x: now4[0], - y: now4[1] - } - }); - } - } - r2.touchData.last = near; + case Direction: { + return this.isSubtype(GitGraph, supertype); } - if (capture) { - for (var i2 = 0; i2 < now4.length; i2++) { - if (now4[i2] && r2.touchData.startPosition[i2] && isOverThresholdDrag) { - r2.touchData.singleTouchMoved = true; - } - } + case Leaf: + case Section: { + return this.isSubtype(Item, supertype); } - if (capture && (start3 == null || start3.pannable()) && cy.panningEnabled() && cy.userPanningEnabled()) { - var allowPassthrough = allowPanningPassthrough(start3, r2.touchData.starts); - if (allowPassthrough) { - e3.preventDefault(); - if (!r2.data.bgActivePosistion) { - r2.data.bgActivePosistion = array2point(r2.touchData.startPosition); - } - if (r2.swipePanning) { - cy.panBy({ - x: disp[0] * zoom2, - y: disp[1] * zoom2 - }); - cy.emit("dragpan"); - } else if (isOverThresholdDrag) { - r2.swipePanning = true; - cy.panBy({ - x: dx * zoom2, - y: dy * zoom2 - }); - cy.emit("dragpan"); - if (start3) { - start3.unactivate(); - r2.redrawHint("select", true); - r2.touchData.start = null; - } - } - } - var pos = r2.projectIntoViewport(e3.touches[0].clientX, e3.touches[0].clientY); - now4[0] = pos[0]; - now4[1] = pos[1]; + default: { + return false; } } - for (var j2 = 0; j2 < now4.length; j2++) { - earlier[j2] = now4[j2]; - } - if (capture && e3.touches.length > 0 && !r2.hoverData.draggingEles && !r2.swipePanning && r2.data.bgActivePosistion != null) { - r2.data.bgActivePosistion = void 0; - r2.redrawHint("select", true); - r2.redraw(); - } - }, "touchmoveHandler"), false); - var touchcancelHandler; - r2.registerBinding(containerWindow, "touchcancel", touchcancelHandler = /* @__PURE__ */ __name(function touchcancelHandler2(e3) { - var start3 = r2.touchData.start; - r2.touchData.capture = false; - if (start3) { - start3.unactivate(); - } - }, "touchcancelHandler")); - var touchendHandler, didDoubleTouch, touchTimeout, prevTouchTimeStamp; - r2.registerBinding(containerWindow, "touchend", touchendHandler = /* @__PURE__ */ __name(function touchendHandler2(e3) { - var start3 = r2.touchData.start; - var capture = r2.touchData.capture; - if (capture) { - if (e3.touches.length === 0) { - r2.touchData.capture = false; + } + getReferenceType(refInfo) { + const referenceId = `${refInfo.container.$type}:${refInfo.property}`; + switch (referenceId) { + case "Entry:axis": { + return Axis; } - e3.preventDefault(); - } else { - return; - } - var select = r2.selection; - r2.swipePanning = false; - r2.hoverData.draggingEles = false; - var cy = r2.cy; - var zoom2 = cy.zoom(); - var now4 = r2.touchData.now; - var earlier = r2.touchData.earlier; - if (e3.touches[0]) { - var pos = r2.projectIntoViewport(e3.touches[0].clientX, e3.touches[0].clientY); - now4[0] = pos[0]; - now4[1] = pos[1]; - } - if (e3.touches[1]) { - var pos = r2.projectIntoViewport(e3.touches[1].clientX, e3.touches[1].clientY); - now4[2] = pos[0]; - now4[3] = pos[1]; - } - if (e3.touches[2]) { - var pos = r2.projectIntoViewport(e3.touches[2].clientX, e3.touches[2].clientY); - now4[4] = pos[0]; - now4[5] = pos[1]; - } - if (start3) { - start3.unactivate(); - } - var ctxTapend; - if (r2.touchData.cxt) { - ctxTapend = { - originalEvent: e3, - type: "cxttapend", - position: { - x: now4[0], - y: now4[1] - } - }; - if (start3) { - start3.emit(ctxTapend); - } else { - cy.emit(ctxTapend); + default: { + throw new Error(`${referenceId} is not a valid reference id.`); } - if (!r2.touchData.cxtDragged) { - var ctxTap = { - originalEvent: e3, - type: "cxttap", - position: { - x: now4[0], - y: now4[1] - } + } + } + getTypeMetaData(type3) { + switch (type3) { + case Architecture: { + return { + name: Architecture, + properties: [ + { name: "accDescr" }, + { name: "accTitle" }, + { name: "edges", defaultValue: [] }, + { name: "groups", defaultValue: [] }, + { name: "junctions", defaultValue: [] }, + { name: "services", defaultValue: [] }, + { name: "title" } + ] }; - if (start3) { - start3.emit(ctxTap); - } else { - cy.emit(ctxTap); - } } - if (r2.touchData.start) { - r2.touchData.start._private.grabbed = false; - } - r2.touchData.cxt = false; - r2.touchData.start = null; - r2.redraw(); - return; - } - if (!e3.touches[2] && cy.boxSelectionEnabled() && r2.touchData.selecting) { - r2.touchData.selecting = false; - var box = cy.collection(r2.getAllInBox(select[0], select[1], select[2], select[3])); - select[0] = void 0; - select[1] = void 0; - select[2] = void 0; - select[3] = void 0; - select[4] = 0; - r2.redrawHint("select", true); - cy.emit({ - type: "boxend", - originalEvent: e3, - position: { - x: now4[0], - y: now4[1] - } - }); - var eleWouldBeSelected = /* @__PURE__ */ __name(function eleWouldBeSelected2(ele) { - return ele.selectable() && !ele.selected(); - }, "eleWouldBeSelected"); - box.emit("box").stdFilter(eleWouldBeSelected).select().emit("boxselect"); - if (box.nonempty()) { - r2.redrawHint("eles", true); + case Axis: { + return { + name: Axis, + properties: [ + { name: "label" }, + { name: "name" } + ] + }; } - r2.redraw(); - } - if (start3 != null) { - start3.unactivate(); - } - if (e3.touches[2]) { - r2.data.bgActivePosistion = void 0; - r2.redrawHint("select", true); - } else if (e3.touches[1]) ; - else if (e3.touches[0]) ; - else if (!e3.touches[0]) { - r2.data.bgActivePosistion = void 0; - r2.redrawHint("select", true); - var draggedEles = r2.dragData.touchDragEles; - if (start3 != null) { - var startWasGrabbed = start3._private.grabbed; - freeDraggedElements(draggedEles); - r2.redrawHint("drag", true); - r2.redrawHint("eles", true); - if (startWasGrabbed) { - start3.emit("freeon"); - draggedEles.emit("free"); - if (r2.dragData.didDrag) { - start3.emit("dragfreeon"); - draggedEles.emit("dragfree"); - } - } - triggerEvents(start3, ["touchend", "tapend", "vmouseup", "tapdragout"], e3, { - x: now4[0], - y: now4[1] - }); - start3.unactivate(); - r2.touchData.start = null; - } else { - var near = r2.findNearestElement(now4[0], now4[1], true, true); - triggerEvents(near, ["touchend", "tapend", "vmouseup", "tapdragout"], e3, { - x: now4[0], - y: now4[1] - }); + case Branch: { + return { + name: Branch, + properties: [ + { name: "name" }, + { name: "order" } + ] + }; } - var dx = r2.touchData.startPosition[0] - now4[0]; - var dx2 = dx * dx; - var dy = r2.touchData.startPosition[1] - now4[1]; - var dy2 = dy * dy; - var dist22 = dx2 + dy2; - var rdist2 = dist22 * zoom2 * zoom2; - if (!r2.touchData.singleTouchMoved) { - if (!start3) { - cy.$(":selected").unselect(["tapunselect"]); - } - triggerEvents(start3, ["tap", "vclick"], e3, { - x: now4[0], - y: now4[1] - }); - didDoubleTouch = false; - if (e3.timeStamp - prevTouchTimeStamp <= cy.multiClickDebounceTime()) { - touchTimeout && clearTimeout(touchTimeout); - didDoubleTouch = true; - prevTouchTimeStamp = null; - triggerEvents(start3, ["dbltap", "vdblclick"], e3, { - x: now4[0], - y: now4[1] - }); - } else { - touchTimeout = setTimeout(function() { - if (didDoubleTouch) return; - triggerEvents(start3, ["onetap", "voneclick"], e3, { - x: now4[0], - y: now4[1] - }); - }, cy.multiClickDebounceTime()); - prevTouchTimeStamp = e3.timeStamp; - } + case Checkout: { + return { + name: Checkout, + properties: [ + { name: "branch" } + ] + }; } - if (start3 != null && !r2.dragData.didDrag && start3._private.selectable && rdist2 < r2.touchTapThreshold2 && !r2.pinching) { - if (cy.selectionType() === "single") { - cy.$(isSelected).unmerge(start3).unselect(["tapunselect"]); - start3.select(["tapselect"]); - } else { - if (start3.selected()) { - start3.unselect(["tapunselect"]); - } else { - start3.select(["tapselect"]); - } - } - r2.redrawHint("eles", true); + case CherryPicking: { + return { + name: CherryPicking, + properties: [ + { name: "id" }, + { name: "parent" }, + { name: "tags", defaultValue: [] } + ] + }; } - r2.touchData.singleTouchMoved = true; - } - for (var j2 = 0; j2 < now4.length; j2++) { - earlier[j2] = now4[j2]; - } - r2.dragData.didDrag = false; - if (e3.touches.length === 0) { - r2.touchData.dragDelta = []; - r2.touchData.startPosition = [null, null, null, null, null, null]; - r2.touchData.startGPosition = null; - r2.touchData.didSelect = false; - } - if (e3.touches.length < 2) { - if (e3.touches.length === 1) { - r2.touchData.startGPosition = [e3.touches[0].clientX, e3.touches[0].clientY]; + case ClassDefStatement: { + return { + name: ClassDefStatement, + properties: [ + { name: "className" }, + { name: "styleText" } + ] + }; } - r2.pinching = false; - r2.redrawHint("eles", true); - r2.redraw(); - } - }, "touchendHandler"), false); - if (typeof TouchEvent === "undefined") { - var pointers = []; - var makeTouch = /* @__PURE__ */ __name(function makeTouch2(e3) { - return { - clientX: e3.clientX, - clientY: e3.clientY, - force: 1, - identifier: e3.pointerId, - pageX: e3.pageX, - pageY: e3.pageY, - radiusX: e3.width / 2, - radiusY: e3.height / 2, - screenX: e3.screenX, - screenY: e3.screenY, - target: e3.target - }; - }, "makeTouch"); - var makePointer = /* @__PURE__ */ __name(function makePointer2(e3) { - return { - event: e3, - touch: makeTouch(e3) - }; - }, "makePointer"); - var addPointer = /* @__PURE__ */ __name(function addPointer2(e3) { - pointers.push(makePointer(e3)); - }, "addPointer"); - var removePointer = /* @__PURE__ */ __name(function removePointer2(e3) { - for (var i2 = 0; i2 < pointers.length; i2++) { - var p3 = pointers[i2]; - if (p3.event.pointerId === e3.pointerId) { - pointers.splice(i2, 1); - return; - } + case Commit: { + return { + name: Commit, + properties: [ + { name: "id" }, + { name: "message" }, + { name: "tags", defaultValue: [] }, + { name: "type" } + ] + }; } - }, "removePointer"); - var updatePointer = /* @__PURE__ */ __name(function updatePointer2(e3) { - var p3 = pointers.filter(function(p4) { - return p4.event.pointerId === e3.pointerId; - })[0]; - p3.event = e3; - p3.touch = makeTouch(e3); - }, "updatePointer"); - var addTouchesToEvent = /* @__PURE__ */ __name(function addTouchesToEvent2(e3) { - e3.touches = pointers.map(function(p3) { - return p3.touch; - }); - }, "addTouchesToEvent"); - var pointerIsMouse = /* @__PURE__ */ __name(function pointerIsMouse2(e3) { - return e3.pointerType === "mouse" || e3.pointerType === 4; - }, "pointerIsMouse"); - r2.registerBinding(r2.container, "pointerdown", function(e3) { - if (pointerIsMouse(e3)) { - return; + case Curve: { + return { + name: Curve, + properties: [ + { name: "entries", defaultValue: [] }, + { name: "label" }, + { name: "name" } + ] + }; } - e3.preventDefault(); - addPointer(e3); - addTouchesToEvent(e3); - touchstartHandler(e3); - }); - r2.registerBinding(r2.container, "pointerup", function(e3) { - if (pointerIsMouse(e3)) { - return; + case Edge: { + return { + name: Edge, + properties: [ + { name: "lhsDir" }, + { name: "lhsGroup", defaultValue: false }, + { name: "lhsId" }, + { name: "lhsInto", defaultValue: false }, + { name: "rhsDir" }, + { name: "rhsGroup", defaultValue: false }, + { name: "rhsId" }, + { name: "rhsInto", defaultValue: false }, + { name: "title" } + ] + }; } - removePointer(e3); - addTouchesToEvent(e3); - touchendHandler(e3); - }); - r2.registerBinding(r2.container, "pointercancel", function(e3) { - if (pointerIsMouse(e3)) { - return; + case Entry: { + return { + name: Entry, + properties: [ + { name: "axis" }, + { name: "value" } + ] + }; } - removePointer(e3); - addTouchesToEvent(e3); - touchcancelHandler(e3); - }); - r2.registerBinding(r2.container, "pointermove", function(e3) { - if (pointerIsMouse(e3)) { - return; + case GitGraph: { + return { + name: GitGraph, + properties: [ + { name: "accDescr" }, + { name: "accTitle" }, + { name: "statements", defaultValue: [] }, + { name: "title" } + ] + }; } - e3.preventDefault(); - updatePointer(e3); - addTouchesToEvent(e3); - touchmoveHandler(e3); - }); - } - }; - BRp$2 = {}; - BRp$2.generatePolygon = function(name, points) { - return this.nodeShapes[name] = { - renderer: this, - name, - points, - draw: /* @__PURE__ */ __name(function draw25(context, centerX, centerY, width3, height2, cornerRadius) { - this.renderer.nodeShapeImpl("polygon", context, centerX, centerY, width3, height2, this.points); - }, "draw"), - intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y5, padding2, cornerRadius) { - return polygonIntersectLine(x5, y5, this.points, nodeX, nodeY, width3 / 2, height2 / 2, padding2); - }, "intersectLine"), - checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y5, padding2, width3, height2, centerX, centerY, cornerRadius) { - return pointInsidePolygon(x5, y5, this.points, centerX, centerY, width3, height2, [0, -1], padding2); - }, "checkPoint") - }; - }; - BRp$2.generateEllipse = function() { - return this.nodeShapes["ellipse"] = { - renderer: this, - name: "ellipse", - draw: /* @__PURE__ */ __name(function draw25(context, centerX, centerY, width3, height2, cornerRadius) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width3, height2); - }, "draw"), - intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y5, padding2, cornerRadius) { - return intersectLineEllipse(x5, y5, nodeX, nodeY, width3 / 2 + padding2, height2 / 2 + padding2); - }, "intersectLine"), - checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y5, padding2, width3, height2, centerX, centerY, cornerRadius) { - return checkInEllipse(x5, y5, width3, height2, centerX, centerY, padding2); - }, "checkPoint") - }; - }; - BRp$2.generateRoundPolygon = function(name, points) { - return this.nodeShapes[name] = { - renderer: this, - name, - points, - getOrCreateCorners: /* @__PURE__ */ __name(function getOrCreateCorners(centerX, centerY, width3, height2, cornerRadius, rs, field) { - if (rs[field] !== void 0 && rs[field + "-cx"] === centerX && rs[field + "-cy"] === centerY) { - return rs[field]; + case Group2: { + return { + name: Group2, + properties: [ + { name: "icon" }, + { name: "id" }, + { name: "in" }, + { name: "title" } + ] + }; } - rs[field] = new Array(points.length / 2); - rs[field + "-cx"] = centerX; - rs[field + "-cy"] = centerY; - var halfW = width3 / 2; - var halfH = height2 / 2; - cornerRadius = cornerRadius === "auto" ? getRoundPolygonRadius(width3, height2) : cornerRadius; - var p3 = new Array(points.length / 2); - for (var _i = 0; _i < points.length / 2; _i++) { - p3[_i] = { - x: centerX + halfW * points[_i * 2], - y: centerY + halfH * points[_i * 2 + 1] + case Info: { + return { + name: Info, + properties: [ + { name: "accDescr" }, + { name: "accTitle" }, + { name: "title" } + ] }; } - var i2, p1, p22, p32, len = p3.length; - p1 = p3[len - 1]; - for (i2 = 0; i2 < len; i2++) { - p22 = p3[i2 % len]; - p32 = p3[(i2 + 1) % len]; - rs[field][i2] = getRoundCorner(p1, p22, p32, cornerRadius); - p1 = p22; - p22 = p32; + case Item: { + return { + name: Item, + properties: [ + { name: "classSelector" }, + { name: "name" } + ] + }; } - return rs[field]; - }, "getOrCreateCorners"), - draw: /* @__PURE__ */ __name(function draw25(context, centerX, centerY, width3, height2, cornerRadius, rs) { - this.renderer.nodeShapeImpl("round-polygon", context, centerX, centerY, width3, height2, this.points, this.getOrCreateCorners(centerX, centerY, width3, height2, cornerRadius, rs, "drawCorners")); - }, "draw"), - intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y5, padding2, cornerRadius, rs) { - return roundPolygonIntersectLine(x5, y5, this.points, nodeX, nodeY, width3, height2, padding2, this.getOrCreateCorners(nodeX, nodeY, width3, height2, cornerRadius, rs, "corners")); - }, "intersectLine"), - checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y5, padding2, width3, height2, centerX, centerY, cornerRadius, rs) { - return pointInsideRoundPolygon(x5, y5, this.points, centerX, centerY, width3, height2, this.getOrCreateCorners(centerX, centerY, width3, height2, cornerRadius, rs, "corners")); - }, "checkPoint") - }; - }; - BRp$2.generateRoundRectangle = function() { - return this.nodeShapes["round-rectangle"] = this.nodeShapes["roundrectangle"] = { - renderer: this, - name: "round-rectangle", - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: /* @__PURE__ */ __name(function draw25(context, centerX, centerY, width3, height2, cornerRadius) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width3, height2, this.points, cornerRadius); - }, "draw"), - intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y5, padding2, cornerRadius) { - return roundRectangleIntersectLine(x5, y5, nodeX, nodeY, width3, height2, padding2, cornerRadius); - }, "intersectLine"), - checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y5, padding2, width3, height2, centerX, centerY, cornerRadius) { - var halfWidth = width3 / 2; - var halfHeight = height2 / 2; - cornerRadius = cornerRadius === "auto" ? getRoundRectangleRadius(width3, height2) : cornerRadius; - cornerRadius = Math.min(halfWidth, halfHeight, cornerRadius); - var diam = cornerRadius * 2; - if (pointInsidePolygon(x5, y5, this.points, centerX, centerY, width3, height2 - diam, [0, -1], padding2)) { - return true; + case Junction: { + return { + name: Junction, + properties: [ + { name: "id" }, + { name: "in" } + ] + }; } - if (pointInsidePolygon(x5, y5, this.points, centerX, centerY, width3 - diam, height2, [0, -1], padding2)) { - return true; + case Merge: { + return { + name: Merge, + properties: [ + { name: "branch" }, + { name: "id" }, + { name: "tags", defaultValue: [] }, + { name: "type" } + ] + }; } - if (checkInEllipse(x5, y5, diam, diam, centerX - halfWidth + cornerRadius, centerY - halfHeight + cornerRadius, padding2)) { - return true; + case Option3: { + return { + name: Option3, + properties: [ + { name: "name" }, + { name: "value", defaultValue: false } + ] + }; } - if (checkInEllipse(x5, y5, diam, diam, centerX + halfWidth - cornerRadius, centerY - halfHeight + cornerRadius, padding2)) { - return true; + case Packet: { + return { + name: Packet, + properties: [ + { name: "accDescr" }, + { name: "accTitle" }, + { name: "blocks", defaultValue: [] }, + { name: "title" } + ] + }; } - if (checkInEllipse(x5, y5, diam, diam, centerX + halfWidth - cornerRadius, centerY + halfHeight - cornerRadius, padding2)) { - return true; + case PacketBlock: { + return { + name: PacketBlock, + properties: [ + { name: "bits" }, + { name: "end" }, + { name: "label" }, + { name: "start" } + ] + }; } - if (checkInEllipse(x5, y5, diam, diam, centerX - halfWidth + cornerRadius, centerY + halfHeight - cornerRadius, padding2)) { - return true; + case Pie: { + return { + name: Pie, + properties: [ + { name: "accDescr" }, + { name: "accTitle" }, + { name: "sections", defaultValue: [] }, + { name: "showData", defaultValue: false }, + { name: "title" } + ] + }; } - return false; - }, "checkPoint") - }; - }; - BRp$2.generateCutRectangle = function() { - return this.nodeShapes["cut-rectangle"] = this.nodeShapes["cutrectangle"] = { - renderer: this, - name: "cut-rectangle", - cornerLength: getCutRectangleCornerLength(), - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: /* @__PURE__ */ __name(function draw25(context, centerX, centerY, width3, height2, cornerRadius) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width3, height2, null, cornerRadius); - }, "draw"), - generateCutTrianglePts: /* @__PURE__ */ __name(function generateCutTrianglePts(width3, height2, centerX, centerY, cornerRadius) { - var cl = cornerRadius === "auto" ? this.cornerLength : cornerRadius; - var hh = height2 / 2; - var hw = width3 / 2; - var xBegin = centerX - hw; - var xEnd = centerX + hw; - var yBegin = centerY - hh; - var yEnd = centerY + hh; - return { - topLeft: [xBegin, yBegin + cl, xBegin + cl, yBegin, xBegin + cl, yBegin + cl], - topRight: [xEnd - cl, yBegin, xEnd, yBegin + cl, xEnd - cl, yBegin + cl], - bottomRight: [xEnd, yEnd - cl, xEnd - cl, yEnd, xEnd - cl, yEnd - cl], - bottomLeft: [xBegin + cl, yEnd, xBegin, yEnd - cl, xBegin + cl, yEnd - cl] - }; - }, "generateCutTrianglePts"), - intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y5, padding2, cornerRadius) { - var cPts = this.generateCutTrianglePts(width3 + 2 * padding2, height2 + 2 * padding2, nodeX, nodeY, cornerRadius); - var pts2 = [].concat.apply([], [cPts.topLeft.splice(0, 4), cPts.topRight.splice(0, 4), cPts.bottomRight.splice(0, 4), cPts.bottomLeft.splice(0, 4)]); - return polygonIntersectLine(x5, y5, pts2, nodeX, nodeY); - }, "intersectLine"), - checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y5, padding2, width3, height2, centerX, centerY, cornerRadius) { - var cl = cornerRadius === "auto" ? this.cornerLength : cornerRadius; - if (pointInsidePolygon(x5, y5, this.points, centerX, centerY, width3, height2 - 2 * cl, [0, -1], padding2)) { - return true; - } - if (pointInsidePolygon(x5, y5, this.points, centerX, centerY, width3 - 2 * cl, height2, [0, -1], padding2)) { - return true; - } - var cutTrianglePts = this.generateCutTrianglePts(width3, height2, centerX, centerY); - return pointInsidePolygonPoints(x5, y5, cutTrianglePts.topLeft) || pointInsidePolygonPoints(x5, y5, cutTrianglePts.topRight) || pointInsidePolygonPoints(x5, y5, cutTrianglePts.bottomRight) || pointInsidePolygonPoints(x5, y5, cutTrianglePts.bottomLeft); - }, "checkPoint") - }; - }; - BRp$2.generateBarrel = function() { - return this.nodeShapes["barrel"] = { - renderer: this, - name: "barrel", - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: /* @__PURE__ */ __name(function draw25(context, centerX, centerY, width3, height2, cornerRadius) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width3, height2); - }, "draw"), - intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y5, padding2, cornerRadius) { - var t03 = 0.15; - var t13 = 0.5; - var t22 = 0.85; - var bPts = this.generateBarrelBezierPts(width3 + 2 * padding2, height2 + 2 * padding2, nodeX, nodeY); - var approximateBarrelCurvePts = /* @__PURE__ */ __name(function approximateBarrelCurvePts2(pts3) { - var m0 = qbezierPtAt({ - x: pts3[0], - y: pts3[1] - }, { - x: pts3[2], - y: pts3[3] - }, { - x: pts3[4], - y: pts3[5] - }, t03); - var m1 = qbezierPtAt({ - x: pts3[0], - y: pts3[1] - }, { - x: pts3[2], - y: pts3[3] - }, { - x: pts3[4], - y: pts3[5] - }, t13); - var m2 = qbezierPtAt({ - x: pts3[0], - y: pts3[1] - }, { - x: pts3[2], - y: pts3[3] - }, { - x: pts3[4], - y: pts3[5] - }, t22); - return [pts3[0], pts3[1], m0.x, m0.y, m1.x, m1.y, m2.x, m2.y, pts3[4], pts3[5]]; - }, "approximateBarrelCurvePts"); - var pts2 = [].concat(approximateBarrelCurvePts(bPts.topLeft), approximateBarrelCurvePts(bPts.topRight), approximateBarrelCurvePts(bPts.bottomRight), approximateBarrelCurvePts(bPts.bottomLeft)); - return polygonIntersectLine(x5, y5, pts2, nodeX, nodeY); - }, "intersectLine"), - generateBarrelBezierPts: /* @__PURE__ */ __name(function generateBarrelBezierPts(width3, height2, centerX, centerY) { - var hh = height2 / 2; - var hw = width3 / 2; - var xBegin = centerX - hw; - var xEnd = centerX + hw; - var yBegin = centerY - hh; - var yEnd = centerY + hh; - var curveConstants = getBarrelCurveConstants(width3, height2); - var hOffset = curveConstants.heightOffset; - var wOffset = curveConstants.widthOffset; - var ctrlPtXOffset = curveConstants.ctrlPtOffsetPct * width3; - var pts2 = { - topLeft: [xBegin, yBegin + hOffset, xBegin + ctrlPtXOffset, yBegin, xBegin + wOffset, yBegin], - topRight: [xEnd - wOffset, yBegin, xEnd - ctrlPtXOffset, yBegin, xEnd, yBegin + hOffset], - bottomRight: [xEnd, yEnd - hOffset, xEnd - ctrlPtXOffset, yEnd, xEnd - wOffset, yEnd], - bottomLeft: [xBegin + wOffset, yEnd, xBegin + ctrlPtXOffset, yEnd, xBegin, yEnd - hOffset] - }; - pts2.topLeft.isTop = true; - pts2.topRight.isTop = true; - pts2.bottomLeft.isBottom = true; - pts2.bottomRight.isBottom = true; - return pts2; - }, "generateBarrelBezierPts"), - checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y5, padding2, width3, height2, centerX, centerY, cornerRadius) { - var curveConstants = getBarrelCurveConstants(width3, height2); - var hOffset = curveConstants.heightOffset; - var wOffset = curveConstants.widthOffset; - if (pointInsidePolygon(x5, y5, this.points, centerX, centerY, width3, height2 - 2 * hOffset, [0, -1], padding2)) { - return true; + case PieSection: { + return { + name: PieSection, + properties: [ + { name: "label" }, + { name: "value" } + ] + }; } - if (pointInsidePolygon(x5, y5, this.points, centerX, centerY, width3 - 2 * wOffset, height2, [0, -1], padding2)) { - return true; + case Radar: { + return { + name: Radar, + properties: [ + { name: "accDescr" }, + { name: "accTitle" }, + { name: "axes", defaultValue: [] }, + { name: "curves", defaultValue: [] }, + { name: "options", defaultValue: [] }, + { name: "title" } + ] + }; } - var barrelCurvePts = this.generateBarrelBezierPts(width3, height2, centerX, centerY); - var getCurveT = /* @__PURE__ */ __name(function getCurveT2(x6, y6, curvePts) { - var x0 = curvePts[4]; - var x1 = curvePts[2]; - var x22 = curvePts[0]; - var y02 = curvePts[5]; - var y23 = curvePts[1]; - var xMin = Math.min(x0, x22); - var xMax = Math.max(x0, x22); - var yMin = Math.min(y02, y23); - var yMax = Math.max(y02, y23); - if (xMin <= x6 && x6 <= xMax && yMin <= y6 && y6 <= yMax) { - var coeff = bezierPtsToQuadCoeff(x0, x1, x22); - var roots = solveQuadratic(coeff[0], coeff[1], coeff[2], x6); - var validRoots = roots.filter(function(r2) { - return 0 <= r2 && r2 <= 1; - }); - if (validRoots.length > 0) { - return validRoots[0]; - } - } - return null; - }, "getCurveT"); - var curveRegions = Object.keys(barrelCurvePts); - for (var i2 = 0; i2 < curveRegions.length; i2++) { - var corner = curveRegions[i2]; - var cornerPts = barrelCurvePts[corner]; - var t4 = getCurveT(x5, y5, cornerPts); - if (t4 == null) { - continue; - } - var y0 = cornerPts[5]; - var y1 = cornerPts[3]; - var y22 = cornerPts[1]; - var bezY = qbezierAt(y0, y1, y22, t4); - if (cornerPts.isTop && bezY <= y5) { - return true; - } - if (cornerPts.isBottom && y5 <= bezY) { - return true; - } + case Service: { + return { + name: Service, + properties: [ + { name: "icon" }, + { name: "iconText" }, + { name: "id" }, + { name: "in" }, + { name: "title" } + ] + }; } - return false; - }, "checkPoint") - }; - }; - BRp$2.generateBottomRoundrectangle = function() { - return this.nodeShapes["bottom-round-rectangle"] = this.nodeShapes["bottomroundrectangle"] = { - renderer: this, - name: "bottom-round-rectangle", - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: /* @__PURE__ */ __name(function draw25(context, centerX, centerY, width3, height2, cornerRadius) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width3, height2, this.points, cornerRadius); - }, "draw"), - intersectLine: /* @__PURE__ */ __name(function intersectLine3(nodeX, nodeY, width3, height2, x5, y5, padding2, cornerRadius) { - var topStartX = nodeX - (width3 / 2 + padding2); - var topStartY = nodeY - (height2 / 2 + padding2); - var topEndY = topStartY; - var topEndX = nodeX + (width3 / 2 + padding2); - var topIntersections = finiteLinesIntersect(x5, y5, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); - if (topIntersections.length > 0) { - return topIntersections; + case Treemap: { + return { + name: Treemap, + properties: [ + { name: "accDescr" }, + { name: "accTitle" }, + { name: "title" }, + { name: "TreemapRows", defaultValue: [] } + ] + }; } - return roundRectangleIntersectLine(x5, y5, nodeX, nodeY, width3, height2, padding2, cornerRadius); - }, "intersectLine"), - checkPoint: /* @__PURE__ */ __name(function checkPoint(x5, y5, padding2, width3, height2, centerX, centerY, cornerRadius) { - cornerRadius = cornerRadius === "auto" ? getRoundRectangleRadius(width3, height2) : cornerRadius; - var diam = 2 * cornerRadius; - if (pointInsidePolygon(x5, y5, this.points, centerX, centerY, width3, height2 - diam, [0, -1], padding2)) { - return true; + case TreemapRow: { + return { + name: TreemapRow, + properties: [ + { name: "indent" }, + { name: "item" } + ] + }; } - if (pointInsidePolygon(x5, y5, this.points, centerX, centerY, width3 - diam, height2, [0, -1], padding2)) { - return true; + case Direction: { + return { + name: Direction, + properties: [ + { name: "accDescr" }, + { name: "accTitle" }, + { name: "dir" }, + { name: "statements", defaultValue: [] }, + { name: "title" } + ] + }; } - var outerWidth = width3 / 2 + 2 * padding2; - var outerHeight = height2 / 2 + 2 * padding2; - var points = [centerX - outerWidth, centerY - outerHeight, centerX - outerWidth, centerY, centerX + outerWidth, centerY, centerX + outerWidth, centerY - outerHeight]; - if (pointInsidePolygonPoints(x5, y5, points)) { - return true; + case Leaf: { + return { + name: Leaf, + properties: [ + { name: "classSelector" }, + { name: "name" }, + { name: "value" } + ] + }; } - if (checkInEllipse(x5, y5, diam, diam, centerX + width3 / 2 - cornerRadius, centerY + height2 / 2 - cornerRadius, padding2)) { - return true; + case Section: { + return { + name: Section, + properties: [ + { name: "classSelector" }, + { name: "name" } + ] + }; } - if (checkInEllipse(x5, y5, diam, diam, centerX - width3 / 2 + cornerRadius, centerY + height2 / 2 - cornerRadius, padding2)) { - return true; + default: { + return { + name: type3, + properties: [] + }; } - return false; - }, "checkPoint") - }; + } + } }; - BRp$2.registerNodeShapes = function() { - var nodeShapes = this.nodeShapes = {}; - var renderer9 = this; - this.generateEllipse(); - this.generatePolygon("triangle", generateUnitNgonPointsFitToSquare(3, 0)); - this.generateRoundPolygon("round-triangle", generateUnitNgonPointsFitToSquare(3, 0)); - this.generatePolygon("rectangle", generateUnitNgonPointsFitToSquare(4, 0)); - nodeShapes["square"] = nodeShapes["rectangle"]; - this.generateRoundRectangle(); - this.generateCutRectangle(); - this.generateBarrel(); - this.generateBottomRoundrectangle(); - { - var diamondPoints = [0, 1, 1, 0, 0, -1, -1, 0]; - this.generatePolygon("diamond", diamondPoints); - this.generateRoundPolygon("round-diamond", diamondPoints); + reflection2 = new MermaidAstReflection(); + InfoGrammar = /* @__PURE__ */ __name2(() => loadedInfoGrammar ?? (loadedInfoGrammar = loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)), "InfoGrammar"); + PacketGrammar = /* @__PURE__ */ __name2(() => loadedPacketGrammar ?? (loadedPacketGrammar = loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)), "PacketGrammar"); + PieGrammar = /* @__PURE__ */ __name2(() => loadedPieGrammar ?? (loadedPieGrammar = loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)), "PieGrammar"); + ArchitectureGrammar = /* @__PURE__ */ __name2(() => loadedArchitectureGrammar ?? (loadedArchitectureGrammar = loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)), "ArchitectureGrammar"); + GitGraphGrammar = /* @__PURE__ */ __name2(() => loadedGitGraphGrammar ?? (loadedGitGraphGrammar = loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)), "GitGraphGrammar"); + RadarGrammar = /* @__PURE__ */ __name2(() => loadedRadarGrammar ?? (loadedRadarGrammar = loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"Radar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"types":[],"usedGrammars":[]}`)), "RadarGrammar"); + TreemapGrammar = /* @__PURE__ */ __name2(() => loadedTreemapGrammar ?? (loadedTreemapGrammar = loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"Treemap","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","}},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)), "TreemapGrammar"); + InfoLanguageMetaData = { + languageId: "info", + fileExtensions: [".mmd", ".mermaid"], + caseInsensitive: false, + mode: "production" + }; + PacketLanguageMetaData = { + languageId: "packet", + fileExtensions: [".mmd", ".mermaid"], + caseInsensitive: false, + mode: "production" + }; + PieLanguageMetaData = { + languageId: "pie", + fileExtensions: [".mmd", ".mermaid"], + caseInsensitive: false, + mode: "production" + }; + ArchitectureLanguageMetaData = { + languageId: "architecture", + fileExtensions: [".mmd", ".mermaid"], + caseInsensitive: false, + mode: "production" + }; + GitGraphLanguageMetaData = { + languageId: "gitGraph", + fileExtensions: [".mmd", ".mermaid"], + caseInsensitive: false, + mode: "production" + }; + RadarLanguageMetaData = { + languageId: "radar", + fileExtensions: [".mmd", ".mermaid"], + caseInsensitive: false, + mode: "production" + }; + TreemapLanguageMetaData = { + languageId: "treemap", + fileExtensions: [".mmd", ".mermaid"], + caseInsensitive: false, + mode: "production" + }; + MermaidGeneratedSharedModule = { + AstReflection: /* @__PURE__ */ __name2(() => new MermaidAstReflection(), "AstReflection") + }; + InfoGeneratedModule = { + Grammar: /* @__PURE__ */ __name2(() => InfoGrammar(), "Grammar"), + LanguageMetaData: /* @__PURE__ */ __name2(() => InfoLanguageMetaData, "LanguageMetaData"), + parser: {} + }; + PacketGeneratedModule = { + Grammar: /* @__PURE__ */ __name2(() => PacketGrammar(), "Grammar"), + LanguageMetaData: /* @__PURE__ */ __name2(() => PacketLanguageMetaData, "LanguageMetaData"), + parser: {} + }; + PieGeneratedModule = { + Grammar: /* @__PURE__ */ __name2(() => PieGrammar(), "Grammar"), + LanguageMetaData: /* @__PURE__ */ __name2(() => PieLanguageMetaData, "LanguageMetaData"), + parser: {} + }; + ArchitectureGeneratedModule = { + Grammar: /* @__PURE__ */ __name2(() => ArchitectureGrammar(), "Grammar"), + LanguageMetaData: /* @__PURE__ */ __name2(() => ArchitectureLanguageMetaData, "LanguageMetaData"), + parser: {} + }; + GitGraphGeneratedModule = { + Grammar: /* @__PURE__ */ __name2(() => GitGraphGrammar(), "Grammar"), + LanguageMetaData: /* @__PURE__ */ __name2(() => GitGraphLanguageMetaData, "LanguageMetaData"), + parser: {} + }; + RadarGeneratedModule = { + Grammar: /* @__PURE__ */ __name2(() => RadarGrammar(), "Grammar"), + LanguageMetaData: /* @__PURE__ */ __name2(() => RadarLanguageMetaData, "LanguageMetaData"), + parser: {} + }; + TreemapGeneratedModule = { + Grammar: /* @__PURE__ */ __name2(() => TreemapGrammar(), "Grammar"), + LanguageMetaData: /* @__PURE__ */ __name2(() => TreemapLanguageMetaData, "LanguageMetaData"), + parser: {} + }; + accessibilityDescrRegex = /accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/; + accessibilityTitleRegex = /accTitle[\t ]*:([^\n\r]*)/; + titleRegex = /title([\t ][^\n\r]*|)/; + rulesRegexes = { + ACC_DESCR: accessibilityDescrRegex, + ACC_TITLE: accessibilityTitleRegex, + TITLE: titleRegex + }; + AbstractMermaidValueConverter = class extends DefaultValueConverter { + static { + __name(this, "AbstractMermaidValueConverter"); } - this.generatePolygon("pentagon", generateUnitNgonPointsFitToSquare(5, 0)); - this.generateRoundPolygon("round-pentagon", generateUnitNgonPointsFitToSquare(5, 0)); - this.generatePolygon("hexagon", generateUnitNgonPointsFitToSquare(6, 0)); - this.generateRoundPolygon("round-hexagon", generateUnitNgonPointsFitToSquare(6, 0)); - this.generatePolygon("heptagon", generateUnitNgonPointsFitToSquare(7, 0)); - this.generateRoundPolygon("round-heptagon", generateUnitNgonPointsFitToSquare(7, 0)); - this.generatePolygon("octagon", generateUnitNgonPointsFitToSquare(8, 0)); - this.generateRoundPolygon("round-octagon", generateUnitNgonPointsFitToSquare(8, 0)); - var star5Points = new Array(20); - { - var outerPoints = generateUnitNgonPoints(5, 0); - var innerPoints = generateUnitNgonPoints(5, Math.PI / 5); - var innerRadius = 0.5 * (3 - Math.sqrt(5)); - innerRadius *= 1.57; - for (var i2 = 0; i2 < innerPoints.length / 2; i2++) { - innerPoints[i2 * 2] *= innerRadius; - innerPoints[i2 * 2 + 1] *= innerRadius; + static { + __name2(this, "AbstractMermaidValueConverter"); + } + runConverter(rule, input, cstNode) { + let value2 = this.runCommonConverter(rule, input, cstNode); + if (value2 === void 0) { + value2 = this.runCustomConverter(rule, input, cstNode); } - for (var i2 = 0; i2 < 20 / 4; i2++) { - star5Points[i2 * 4] = outerPoints[i2 * 2]; - star5Points[i2 * 4 + 1] = outerPoints[i2 * 2 + 1]; - star5Points[i2 * 4 + 2] = innerPoints[i2 * 2]; - star5Points[i2 * 4 + 3] = innerPoints[i2 * 2 + 1]; + if (value2 === void 0) { + return super.runConverter(rule, input, cstNode); } + return value2; } - star5Points = fitPolygonToSquare(star5Points); - this.generatePolygon("star", star5Points); - this.generatePolygon("vee", [-1, -1, 0, -0.333, 1, -1, 0, 1]); - this.generatePolygon("rhomboid", [-1, -1, 0.333, -1, 1, 1, -0.333, 1]); - this.generatePolygon("right-rhomboid", [-0.333, -1, 1, -1, 0.333, 1, -1, 1]); - this.nodeShapes["concavehexagon"] = this.generatePolygon("concave-hexagon", [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]); - { - var tagPoints = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1]; - this.generatePolygon("tag", tagPoints); - this.generateRoundPolygon("round-tag", tagPoints); - } - nodeShapes.makePolygon = function(points) { - var key = points.join("$"); - var name = "polygon-" + key; - var shape; - if (shape = this[name]) { - return shape; + runCommonConverter(rule, input, _cstNode) { + const regex2 = rulesRegexes[rule.name]; + if (regex2 === void 0) { + return void 0; } - return renderer9.generatePolygon(name, points); - }; + const match2 = regex2.exec(input); + if (match2 === null) { + return void 0; + } + if (match2[1] !== void 0) { + return match2[1].trim().replace(/[\t ]{2,}/gm, " "); + } + if (match2[2] !== void 0) { + return match2[2].replace(/^\s*/gm, "").replace(/\s+$/gm, "").replace(/[\t ]{2,}/gm, " ").replace(/[\n\r]{2,}/gm, "\n"); + } + return void 0; + } }; - BRp$1 = {}; - BRp$1.timeToRender = function() { - return this.redrawTotalTime / this.redrawCount; + CommonValueConverter = class extends AbstractMermaidValueConverter { + static { + __name(this, "CommonValueConverter"); + } + static { + __name2(this, "CommonValueConverter"); + } + runCustomConverter(_rule, _input, _cstNode) { + return void 0; + } }; - BRp$1.redraw = function(options3) { - options3 = options3 || staticEmptyObject(); - var r2 = this; - if (r2.averageRedrawTime === void 0) { - r2.averageRedrawTime = 0; + AbstractMermaidTokenBuilder = class extends DefaultTokenBuilder { + static { + __name(this, "AbstractMermaidTokenBuilder"); } - if (r2.lastRedrawTime === void 0) { - r2.lastRedrawTime = 0; + static { + __name2(this, "AbstractMermaidTokenBuilder"); } - if (r2.lastDrawTime === void 0) { - r2.lastDrawTime = 0; + constructor(keywords) { + super(); + this.keywords = new Set(keywords); + } + buildKeywordTokens(rules, terminalTokens, options2) { + const tokenTypes = super.buildKeywordTokens(rules, terminalTokens, options2); + tokenTypes.forEach((tokenType) => { + if (this.keywords.has(tokenType.name) && tokenType.PATTERN !== void 0) { + tokenType.PATTERN = new RegExp(tokenType.PATTERN.toString() + "(?:(?=%%)|(?!\\S))"); + } + }); + return tokenTypes; } - r2.requestedFrame = true; - r2.renderOptions = options3; }; - BRp$1.beforeRender = function(fn3, priority3) { - if (this.destroyed) { - return; + CommonTokenBuilder = class extends AbstractMermaidTokenBuilder { + static { + __name(this, "CommonTokenBuilder"); } - if (priority3 == null) { - error("Priority is not optional for beforeRender"); + static { + __name2(this, "CommonTokenBuilder"); } - var cbs = this.beforeRenderCallbacks; - cbs.push({ - fn: fn3, - priority: priority3 - }); - cbs.sort(function(a2, b2) { - return b2.priority - a2.priority; - }); }; - beforeRenderCallbacks = /* @__PURE__ */ __name(function beforeRenderCallbacks2(r2, willDraw, startTime) { - var cbs = r2.beforeRenderCallbacks; - for (var i2 = 0; i2 < cbs.length; i2++) { - cbs[i2].fn(willDraw, startTime); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/chunk-S6J4BHB3.mjs + function createGitGraphServices(context = EmptyFileSystem) { + const shared = inject( + createDefaultSharedCoreModule(context), + MermaidGeneratedSharedModule + ); + const GitGraph2 = inject( + createDefaultCoreModule({ shared }), + GitGraphGeneratedModule, + GitGraphModule + ); + shared.ServiceRegistry.register(GitGraph2); + return { shared, GitGraph: GitGraph2 }; + } + var GitGraphTokenBuilder, GitGraphModule; + var init_chunk_S6J4BHB3 = __esm({ + "../parser/dist/chunks/mermaid-parser.core/chunk-S6J4BHB3.mjs"() { + "use strict"; + init_chunk_FPAJGGOC(); + init_lib3(); + GitGraphTokenBuilder = class extends AbstractMermaidTokenBuilder { + static { + __name(this, "GitGraphTokenBuilder"); } - }, "beforeRenderCallbacks"); - BRp$1.startRenderLoop = function() { - var r2 = this; - var cy = r2.cy; - if (r2.renderLoopStarted) { - return; - } else { - r2.renderLoopStarted = true; + static { + __name2(this, "GitGraphTokenBuilder"); + } + constructor() { + super(["gitGraph"]); } - var renderFn = /* @__PURE__ */ __name(function renderFn2(requestTime) { - if (r2.destroyed) { - return; - } - if (cy.batching()) ; - else if (r2.requestedFrame && !r2.skipFrame) { - beforeRenderCallbacks(r2, true, requestTime); - var startTime = performanceNow(); - r2.render(r2.renderOptions); - var endTime = r2.lastDrawTime = performanceNow(); - if (r2.averageRedrawTime === void 0) { - r2.averageRedrawTime = endTime - startTime; - } - if (r2.redrawCount === void 0) { - r2.redrawCount = 0; - } - r2.redrawCount++; - if (r2.redrawTotalTime === void 0) { - r2.redrawTotalTime = 0; - } - var duration = endTime - startTime; - r2.redrawTotalTime += duration; - r2.lastRedrawTime = duration; - r2.averageRedrawTime = r2.averageRedrawTime / 2 + duration / 2; - r2.requestedFrame = false; - } else { - beforeRenderCallbacks(r2, false, requestTime); - } - r2.skipFrame = false; - requestAnimationFrame2(renderFn2); - }, "renderFn"); - requestAnimationFrame2(renderFn); }; - BaseRenderer = /* @__PURE__ */ __name(function BaseRenderer2(options3) { - this.init(options3); - }, "BaseRenderer"); - BR = BaseRenderer; - BRp = BR.prototype; - BRp.clientFunctions = ["redrawHint", "render", "renderTo", "matchCanvasSize", "nodeShapeImpl", "arrowShapeImpl"]; - BRp.init = function(options3) { - var r2 = this; - r2.options = options3; - r2.cy = options3.cy; - var ctr = r2.container = options3.cy.container(); - var containerWindow = r2.cy.window(); - if (containerWindow) { - var document2 = containerWindow.document; - var head2 = document2.head; - var stylesheetId = "__________cytoscape_stylesheet"; - var className = "__________cytoscape_container"; - var stylesheetAlreadyExists = document2.getElementById(stylesheetId) != null; - if (ctr.className.indexOf(className) < 0) { - ctr.className = (ctr.className || "") + " " + className; - } - if (!stylesheetAlreadyExists) { - var stylesheet3 = document2.createElement("style"); - stylesheet3.id = stylesheetId; - stylesheet3.textContent = "." + className + " { position: relative; }"; - head2.insertBefore(stylesheet3, head2.children[0]); - } - var computedStyle = containerWindow.getComputedStyle(ctr); - var position5 = computedStyle.getPropertyValue("position"); - if (position5 === "static") { - warn("A Cytoscape container has style position:static and so can not use UI extensions properly"); - } + GitGraphModule = { + parser: { + TokenBuilder: /* @__PURE__ */ __name2(() => new GitGraphTokenBuilder(), "TokenBuilder"), + ValueConverter: /* @__PURE__ */ __name2(() => new CommonValueConverter(), "ValueConverter") } - r2.selection = [void 0, void 0, void 0, void 0, 0]; - r2.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95]; - r2.hoverData = { - down: null, - last: null, - downTime: null, - triggerMode: null, - dragging: false, - initialPan: [null, null], - capture: false - }; - r2.dragData = { - possibleDragElements: [] - }; - r2.touchData = { - start: null, - capture: false, - // These 3 fields related to tap, taphold events - startPosition: [null, null, null, null, null, null], - singleTouchStartTime: null, - singleTouchMoved: true, - now: [null, null, null, null, null, null], - earlier: [null, null, null, null, null, null] - }; - r2.redraws = 0; - r2.showFps = options3.showFps; - r2.debug = options3.debug; - r2.webgl = options3.webgl; - r2.hideEdgesOnViewport = options3.hideEdgesOnViewport; - r2.textureOnViewport = options3.textureOnViewport; - r2.wheelSensitivity = options3.wheelSensitivity; - r2.motionBlurEnabled = options3.motionBlur; - r2.forcedPixelRatio = number$1(options3.pixelRatio) ? options3.pixelRatio : null; - r2.motionBlur = options3.motionBlur; - r2.motionBlurOpacity = options3.motionBlurOpacity; - r2.motionBlurTransparency = 1 - r2.motionBlurOpacity; - r2.motionBlurPxRatio = 1; - r2.mbPxRBlurry = 1; - r2.minMbLowQualFrames = 4; - r2.fullQualityMb = false; - r2.clearedForMotionBlur = []; - r2.desktopTapThreshold = options3.desktopTapThreshold; - r2.desktopTapThreshold2 = options3.desktopTapThreshold * options3.desktopTapThreshold; - r2.touchTapThreshold = options3.touchTapThreshold; - r2.touchTapThreshold2 = options3.touchTapThreshold * options3.touchTapThreshold; - r2.tapholdDuration = 500; - r2.bindings = []; - r2.beforeRenderCallbacks = []; - r2.beforeRenderPriorities = { - // higher priority execs before lower one - animations: 400, - eleCalcs: 300, - eleTxrDeq: 200, - lyrTxrDeq: 150, - lyrTxrSkip: 100 - }; - r2.registerNodeShapes(); - r2.registerArrowShapes(); - r2.registerCalculationListeners(); }; - BRp.notify = function(eventName, eles) { - var r2 = this; - var cy = r2.cy; - if (this.destroyed) { - return; + __name(createGitGraphServices, "createGitGraphServices"); + __name2(createGitGraphServices, "createGitGraphServices"); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/chunk-LBM3YZW2.mjs + function createInfoServices(context = EmptyFileSystem) { + const shared = inject( + createDefaultSharedCoreModule(context), + MermaidGeneratedSharedModule + ); + const Info2 = inject( + createDefaultCoreModule({ shared }), + InfoGeneratedModule, + InfoModule + ); + shared.ServiceRegistry.register(Info2); + return { shared, Info: Info2 }; + } + var InfoTokenBuilder, InfoModule; + var init_chunk_LBM3YZW2 = __esm({ + "../parser/dist/chunks/mermaid-parser.core/chunk-LBM3YZW2.mjs"() { + "use strict"; + init_chunk_FPAJGGOC(); + init_lib3(); + InfoTokenBuilder = class extends AbstractMermaidTokenBuilder { + static { + __name(this, "InfoTokenBuilder"); } - if (eventName === "init") { - r2.load(); - return; + static { + __name2(this, "InfoTokenBuilder"); } - if (eventName === "destroy") { - r2.destroy(); - return; + constructor() { + super(["info", "showInfo"]); } - if (eventName === "add" || eventName === "remove" || eventName === "move" && cy.hasCompoundNodes() || eventName === "load" || eventName === "zorder" || eventName === "mount") { - r2.invalidateCachedZSortedEles(); + }; + InfoModule = { + parser: { + TokenBuilder: /* @__PURE__ */ __name2(() => new InfoTokenBuilder(), "TokenBuilder"), + ValueConverter: /* @__PURE__ */ __name2(() => new CommonValueConverter(), "ValueConverter") } - if (eventName === "viewport") { - r2.redrawHint("select", true); + }; + __name(createInfoServices, "createInfoServices"); + __name2(createInfoServices, "createInfoServices"); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/chunk-76Q3JFCE.mjs + function createPacketServices(context = EmptyFileSystem) { + const shared = inject( + createDefaultSharedCoreModule(context), + MermaidGeneratedSharedModule + ); + const Packet2 = inject( + createDefaultCoreModule({ shared }), + PacketGeneratedModule, + PacketModule + ); + shared.ServiceRegistry.register(Packet2); + return { shared, Packet: Packet2 }; + } + var PacketTokenBuilder, PacketModule; + var init_chunk_76Q3JFCE = __esm({ + "../parser/dist/chunks/mermaid-parser.core/chunk-76Q3JFCE.mjs"() { + "use strict"; + init_chunk_FPAJGGOC(); + init_lib3(); + PacketTokenBuilder = class extends AbstractMermaidTokenBuilder { + static { + __name(this, "PacketTokenBuilder"); } - if (eventName === "gc") { - r2.redrawHint("gc", true); + static { + __name2(this, "PacketTokenBuilder"); } - if (eventName === "load" || eventName === "resize" || eventName === "mount") { - r2.invalidateContainerClientCoordsCache(); - r2.matchCanvasSize(r2.container); + constructor() { + super(["packet"]); } - r2.redrawHint("eles", true); - r2.redrawHint("drag", true); - this.startRenderLoop(); - this.redraw(); }; - BRp.destroy = function() { - var r2 = this; - r2.destroyed = true; - r2.cy.stopAnimationLoop(); - for (var i2 = 0; i2 < r2.bindings.length; i2++) { - var binding = r2.bindings[i2]; - var b2 = binding; - var tgt = b2.target; - (tgt.off || tgt.removeEventListener).apply(tgt, b2.args); + PacketModule = { + parser: { + TokenBuilder: /* @__PURE__ */ __name2(() => new PacketTokenBuilder(), "TokenBuilder"), + ValueConverter: /* @__PURE__ */ __name2(() => new CommonValueConverter(), "ValueConverter") } - r2.bindings = []; - r2.beforeRenderCallbacks = []; - r2.onUpdateEleCalcsFns = []; - if (r2.removeObserver) { - r2.removeObserver.disconnect(); + }; + __name(createPacketServices, "createPacketServices"); + __name2(createPacketServices, "createPacketServices"); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/chunk-T53DSG4Q.mjs + function createPieServices(context = EmptyFileSystem) { + const shared = inject( + createDefaultSharedCoreModule(context), + MermaidGeneratedSharedModule + ); + const Pie2 = inject( + createDefaultCoreModule({ shared }), + PieGeneratedModule, + PieModule + ); + shared.ServiceRegistry.register(Pie2); + return { shared, Pie: Pie2 }; + } + var PieTokenBuilder, PieValueConverter, PieModule; + var init_chunk_T53DSG4Q = __esm({ + "../parser/dist/chunks/mermaid-parser.core/chunk-T53DSG4Q.mjs"() { + "use strict"; + init_chunk_FPAJGGOC(); + init_lib3(); + PieTokenBuilder = class extends AbstractMermaidTokenBuilder { + static { + __name(this, "PieTokenBuilder"); } - if (r2.styleObserver) { - r2.styleObserver.disconnect(); + static { + __name2(this, "PieTokenBuilder"); } - if (r2.resizeObserver) { - r2.resizeObserver.disconnect(); + constructor() { + super(["pie", "showData"]); } - if (r2.labelCalcDiv) { - try { - document.body.removeChild(r2.labelCalcDiv); - } catch (e3) { + }; + PieValueConverter = class extends AbstractMermaidValueConverter { + static { + __name(this, "PieValueConverter"); + } + static { + __name2(this, "PieValueConverter"); + } + runCustomConverter(rule, input, _cstNode) { + if (rule.name !== "PIE_SECTION_LABEL") { + return void 0; } + return input.replace(/"/g, "").trim(); } }; - BRp.isHeadless = function() { - return false; + PieModule = { + parser: { + TokenBuilder: /* @__PURE__ */ __name2(() => new PieTokenBuilder(), "TokenBuilder"), + ValueConverter: /* @__PURE__ */ __name2(() => new PieValueConverter(), "ValueConverter") + } }; - [BRp$f, BRp$5, BRp$4, BRp$3, BRp$2, BRp$1].forEach(function(props) { - extend4(BRp, props); - }); - fullFpsTime = 1e3 / 60; - defs = { - setupDequeueing: /* @__PURE__ */ __name(function setupDequeueing(opts) { - return /* @__PURE__ */ __name(function setupDequeueingImpl() { - var self2 = this; - var r2 = this.renderer; - if (self2.dequeueingSetup) { - return; - } else { - self2.dequeueingSetup = true; - } - var queueRedraw = debounce_1(function() { - r2.redrawHint("eles", true); - r2.redrawHint("drag", true); - r2.redraw(); - }, opts.deqRedrawThreshold); - var dequeue = /* @__PURE__ */ __name(function dequeue2(willDraw, frameStartTime) { - var startTime = performanceNow(); - var avgRenderTime = r2.averageRedrawTime; - var renderTime = r2.lastRedrawTime; - var deqd = []; - var extent2 = r2.cy.extent(); - var pixelRatio = r2.getPixelRatio(); - if (!willDraw) { - r2.flushRenderedStyleQueue(); - } - while (true) { - var now4 = performanceNow(); - var duration = now4 - startTime; - var frameDuration = now4 - frameStartTime; - if (renderTime < fullFpsTime) { - var timeAvailable = fullFpsTime - (willDraw ? avgRenderTime : 0); - if (frameDuration >= opts.deqFastCost * timeAvailable) { - break; - } - } else { - if (willDraw) { - if (duration >= opts.deqCost * renderTime || duration >= opts.deqAvgCost * avgRenderTime) { - break; - } - } else if (frameDuration >= opts.deqNoDrawCost * fullFpsTime) { - break; - } - } - var thisDeqd = opts.deq(self2, pixelRatio, extent2); - if (thisDeqd.length > 0) { - for (var i2 = 0; i2 < thisDeqd.length; i2++) { - deqd.push(thisDeqd[i2]); - } - } else { - break; - } - } - if (deqd.length > 0) { - opts.onDeqd(self2, deqd); - if (!willDraw && opts.shouldRedraw(self2, deqd, pixelRatio, extent2)) { - queueRedraw(); - } - } - }, "dequeue"); - var priority3 = opts.priority || noop$1; - r2.beforeRender(dequeue, priority3(self2)); - }, "setupDequeueingImpl"); - }, "setupDequeueing") + __name(createPieServices, "createPieServices"); + __name2(createPieServices, "createPieServices"); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/chunk-O7ZBX7Z2.mjs + function createArchitectureServices(context = EmptyFileSystem) { + const shared = inject( + createDefaultSharedCoreModule(context), + MermaidGeneratedSharedModule + ); + const Architecture2 = inject( + createDefaultCoreModule({ shared }), + ArchitectureGeneratedModule, + ArchitectureModule + ); + shared.ServiceRegistry.register(Architecture2); + return { shared, Architecture: Architecture2 }; + } + var ArchitectureTokenBuilder, ArchitectureValueConverter, ArchitectureModule; + var init_chunk_O7ZBX7Z2 = __esm({ + "../parser/dist/chunks/mermaid-parser.core/chunk-O7ZBX7Z2.mjs"() { + "use strict"; + init_chunk_FPAJGGOC(); + init_lib3(); + ArchitectureTokenBuilder = class extends AbstractMermaidTokenBuilder { + static { + __name(this, "ArchitectureTokenBuilder"); + } + static { + __name2(this, "ArchitectureTokenBuilder"); + } + constructor() { + super(["architecture"]); + } }; - ElementTextureCacheLookup = /* @__PURE__ */ function() { - function ElementTextureCacheLookup2(getKey3) { - var doesEleInvalidateKey = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : falsify; - _classCallCheck(this, ElementTextureCacheLookup2); - this.idsByKey = new Map$2(); - this.keyForId = new Map$2(); - this.cachesByLvl = new Map$2(); - this.lvls = []; - this.getKey = getKey3; - this.doesEleInvalidateKey = doesEleInvalidateKey; + ArchitectureValueConverter = class extends AbstractMermaidValueConverter { + static { + __name(this, "ArchitectureValueConverter"); } - __name(ElementTextureCacheLookup2, "ElementTextureCacheLookup"); - _createClass(ElementTextureCacheLookup2, [{ - key: "getIdsFor", - value: /* @__PURE__ */ __name(function getIdsFor(key) { - if (key == null) { - error("Can not get id list for null key"); - } - var idsByKey = this.idsByKey; - var ids = this.idsByKey.get(key); - if (!ids) { - ids = new Set$1(); - idsByKey.set(key, ids); + static { + __name2(this, "ArchitectureValueConverter"); + } + runCustomConverter(rule, input, _cstNode) { + if (rule.name === "ARCH_ICON") { + return input.replace(/[()]/g, "").trim(); + } else if (rule.name === "ARCH_TEXT_ICON") { + return input.replace(/["()]/g, ""); + } else if (rule.name === "ARCH_TITLE") { + return input.replace(/[[\]]/g, "").trim(); + } + return void 0; + } + }; + ArchitectureModule = { + parser: { + TokenBuilder: /* @__PURE__ */ __name2(() => new ArchitectureTokenBuilder(), "TokenBuilder"), + ValueConverter: /* @__PURE__ */ __name2(() => new ArchitectureValueConverter(), "ValueConverter") + } + }; + __name(createArchitectureServices, "createArchitectureServices"); + __name2(createArchitectureServices, "createArchitectureServices"); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/chunk-LHMN2FUI.mjs + function createRadarServices(context = EmptyFileSystem) { + const shared = inject( + createDefaultSharedCoreModule(context), + MermaidGeneratedSharedModule + ); + const Radar2 = inject( + createDefaultCoreModule({ shared }), + RadarGeneratedModule, + RadarModule + ); + shared.ServiceRegistry.register(Radar2); + return { shared, Radar: Radar2 }; + } + var RadarTokenBuilder, RadarModule; + var init_chunk_LHMN2FUI = __esm({ + "../parser/dist/chunks/mermaid-parser.core/chunk-LHMN2FUI.mjs"() { + "use strict"; + init_chunk_FPAJGGOC(); + init_lib3(); + RadarTokenBuilder = class extends AbstractMermaidTokenBuilder { + static { + __name(this, "RadarTokenBuilder"); + } + static { + __name2(this, "RadarTokenBuilder"); + } + constructor() { + super(["radar-beta"]); + } + }; + RadarModule = { + parser: { + TokenBuilder: /* @__PURE__ */ __name2(() => new RadarTokenBuilder(), "TokenBuilder"), + ValueConverter: /* @__PURE__ */ __name2(() => new CommonValueConverter(), "ValueConverter") + } + }; + __name(createRadarServices, "createRadarServices"); + __name2(createRadarServices, "createRadarServices"); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/chunk-FWNWRKHM.mjs + function registerValidationChecks(services) { + const validator = services.validation.TreemapValidator; + const registry = services.validation.ValidationRegistry; + if (registry) { + const checks = { + Treemap: validator.checkSingleRoot.bind(validator) + // Remove unused validation for TreemapRow + }; + registry.register(checks, validator); + } + } + function createTreemapServices(context = EmptyFileSystem) { + const shared = inject( + createDefaultSharedCoreModule(context), + MermaidGeneratedSharedModule + ); + const Treemap2 = inject( + createDefaultCoreModule({ shared }), + TreemapGeneratedModule, + TreemapModule + ); + shared.ServiceRegistry.register(Treemap2); + registerValidationChecks(Treemap2); + return { shared, Treemap: Treemap2 }; + } + var TreemapTokenBuilder, classDefRegex, TreemapValueConverter, TreemapValidator, TreemapModule; + var init_chunk_FWNWRKHM = __esm({ + "../parser/dist/chunks/mermaid-parser.core/chunk-FWNWRKHM.mjs"() { + "use strict"; + init_chunk_FPAJGGOC(); + init_lib3(); + TreemapTokenBuilder = class extends AbstractMermaidTokenBuilder { + static { + __name(this, "TreemapTokenBuilder"); + } + static { + __name2(this, "TreemapTokenBuilder"); + } + constructor() { + super(["treemap"]); + } + }; + classDefRegex = /classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/; + TreemapValueConverter = class extends AbstractMermaidValueConverter { + static { + __name(this, "TreemapValueConverter"); + } + static { + __name2(this, "TreemapValueConverter"); + } + runCustomConverter(rule, input, _cstNode) { + if (rule.name === "NUMBER2") { + return parseFloat(input.replace(/,/g, "")); + } else if (rule.name === "SEPARATOR") { + return input.substring(1, input.length - 1); + } else if (rule.name === "STRING2") { + return input.substring(1, input.length - 1); + } else if (rule.name === "INDENTATION") { + return input.length; + } else if (rule.name === "ClassDef") { + if (typeof input !== "string") { + return input; } - return ids; - }, "getIdsFor") - }, { - key: "addIdForKey", - value: /* @__PURE__ */ __name(function addIdForKey(key, id29) { - if (key != null) { - this.getIdsFor(key).add(id29); + const match2 = classDefRegex.exec(input); + if (match2) { + return { + $type: "ClassDefStatement", + className: match2[1], + styleText: match2[2] || void 0 + }; } - }, "addIdForKey") - }, { - key: "deleteIdForKey", - value: /* @__PURE__ */ __name(function deleteIdForKey(key, id29) { - if (key != null) { - this.getIdsFor(key)["delete"](id29); + } + return void 0; + } + }; + __name(registerValidationChecks, "registerValidationChecks"); + __name2(registerValidationChecks, "registerValidationChecks"); + TreemapValidator = class { + static { + __name(this, "TreemapValidator"); + } + static { + __name2(this, "TreemapValidator"); + } + /** + * Validates that a treemap has only one root node. + * A root node is defined as a node that has no indentation. + */ + checkSingleRoot(doc, accept) { + let rootNodeIndentation; + for (const row of doc.TreemapRows) { + if (!row.item) { + continue; } - }, "deleteIdForKey") - }, { - key: "getNumberOfIdsForKey", - value: /* @__PURE__ */ __name(function getNumberOfIdsForKey(key) { - if (key == null) { - return 0; - } else { - return this.getIdsFor(key).size; + if (rootNodeIndentation === void 0 && // Check if this is a root node (no indentation) + row.indent === void 0) { + rootNodeIndentation = 0; + } else if (row.indent === void 0) { + accept("error", "Multiple root nodes are not allowed in a treemap.", { + node: row, + property: "item" + }); + } else if (rootNodeIndentation !== void 0 && rootNodeIndentation >= parseInt(row.indent, 10)) { + accept("error", "Multiple root nodes are not allowed in a treemap.", { + node: row, + property: "item" + }); } - }, "getNumberOfIdsForKey") - }, { - key: "updateKeyMappingFor", - value: /* @__PURE__ */ __name(function updateKeyMappingFor(ele) { - var id29 = ele.id(); - var prevKey = this.keyForId.get(id29); - var currKey = this.getKey(ele); - this.deleteIdForKey(prevKey, id29); - this.addIdForKey(currKey, id29); - this.keyForId.set(id29, currKey); - }, "updateKeyMappingFor") - }, { - key: "deleteKeyMappingFor", - value: /* @__PURE__ */ __name(function deleteKeyMappingFor(ele) { - var id29 = ele.id(); - var prevKey = this.keyForId.get(id29); - this.deleteIdForKey(prevKey, id29); - this.keyForId["delete"](id29); - }, "deleteKeyMappingFor") - }, { - key: "keyHasChangedFor", - value: /* @__PURE__ */ __name(function keyHasChangedFor(ele) { - var id29 = ele.id(); - var prevKey = this.keyForId.get(id29); - var newKey = this.getKey(ele); - return prevKey !== newKey; - }, "keyHasChangedFor") - }, { - key: "isInvalid", - value: /* @__PURE__ */ __name(function isInvalid(ele) { - return this.keyHasChangedFor(ele) || this.doesEleInvalidateKey(ele); - }, "isInvalid") - }, { - key: "getCachesAt", - value: /* @__PURE__ */ __name(function getCachesAt(lvl) { - var cachesByLvl = this.cachesByLvl, lvls = this.lvls; - var caches = cachesByLvl.get(lvl); - if (!caches) { - caches = new Map$2(); - cachesByLvl.set(lvl, caches); - lvls.push(lvl); - } - return caches; - }, "getCachesAt") - }, { - key: "getCache", - value: /* @__PURE__ */ __name(function getCache(key, lvl) { - return this.getCachesAt(lvl).get(key); - }, "getCache") - }, { - key: "get", - value: /* @__PURE__ */ __name(function get6(ele, lvl) { - var key = this.getKey(ele); - var cache3 = this.getCache(key, lvl); - if (cache3 != null) { - this.updateKeyMappingFor(ele); - } - return cache3; - }, "get") - }, { - key: "getForCachedKey", - value: /* @__PURE__ */ __name(function getForCachedKey(ele, lvl) { - var key = this.keyForId.get(ele.id()); - var cache3 = this.getCache(key, lvl); - return cache3; - }, "getForCachedKey") - }, { - key: "hasCache", - value: /* @__PURE__ */ __name(function hasCache(key, lvl) { - return this.getCachesAt(lvl).has(key); - }, "hasCache") - }, { - key: "has", - value: /* @__PURE__ */ __name(function has2(ele, lvl) { - var key = this.getKey(ele); - return this.hasCache(key, lvl); - }, "has") - }, { - key: "setCache", - value: /* @__PURE__ */ __name(function setCache(key, lvl, cache3) { - cache3.key = key; - this.getCachesAt(lvl).set(key, cache3); - }, "setCache") - }, { - key: "set", - value: /* @__PURE__ */ __name(function set6(ele, lvl, cache3) { - var key = this.getKey(ele); - this.setCache(key, lvl, cache3); - this.updateKeyMappingFor(ele); - }, "set") - }, { - key: "deleteCache", - value: /* @__PURE__ */ __name(function deleteCache(key, lvl) { - this.getCachesAt(lvl)["delete"](key); - }, "deleteCache") - }, { - key: "delete", - value: /* @__PURE__ */ __name(function _delete(ele, lvl) { - var key = this.getKey(ele); - this.deleteCache(key, lvl); - }, "_delete") - }, { - key: "invalidateKey", - value: /* @__PURE__ */ __name(function invalidateKey(key) { - var _this = this; - this.lvls.forEach(function(lvl) { - return _this.deleteCache(key, lvl); - }); - }, "invalidateKey") - // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key) - }, { - key: "invalidate", - value: /* @__PURE__ */ __name(function invalidate(ele) { - var id29 = ele.id(); - var key = this.keyForId.get(id29); - this.deleteKeyMappingFor(ele); - var entireKeyInvalidated = this.doesEleInvalidateKey(ele); - if (entireKeyInvalidated) { - this.invalidateKey(key); - } - return entireKeyInvalidated || this.getNumberOfIdsForKey(key) === 0; - }, "invalidate") - }]); - return ElementTextureCacheLookup2; - }(); - minTxrH = 25; - txrStepH = 50; - minLvl$1 = -4; - maxLvl$1 = 3; - maxZoom$1 = 7.99; - eleTxrSpacing = 8; - defTxrWidth = 1024; - maxTxrW = 1024; - maxTxrH = 1024; - minUtility = 0.2; - maxFullness = 0.8; - maxFullnessChecks = 10; - deqCost$1 = 0.15; - deqAvgCost$1 = 0.1; - deqNoDrawCost$1 = 0.9; - deqFastCost$1 = 0.9; - deqRedrawThreshold$1 = 100; - maxDeqSize$1 = 1; - getTxrReasons = { - dequeue: "dequeue", - downscale: "downscale", - highQuality: "highQuality" - }; - initDefaults = defaults$g({ - getKey: null, - doesEleInvalidateKey: falsify, - drawElement: null, - getBoundingBox: null, - getRotationPoint: null, - getRotationOffset: null, - isVisible: trueify, - allowEdgeTxrCaching: true, - allowParentTxrCaching: true - }); - ElementTextureCache = /* @__PURE__ */ __name(function ElementTextureCache2(renderer9, initOptions) { - var self2 = this; - self2.renderer = renderer9; - self2.onDequeues = []; - var opts = initDefaults(initOptions); - extend4(self2, opts); - self2.lookup = new ElementTextureCacheLookup(opts.getKey, opts.doesEleInvalidateKey); - self2.setupDequeueing(); - }, "ElementTextureCache"); - ETCp = ElementTextureCache.prototype; - ETCp.reasons = getTxrReasons; - ETCp.getTextureQueue = function(txrH) { - var self2 = this; - self2.eleImgCaches = self2.eleImgCaches || {}; - return self2.eleImgCaches[txrH] = self2.eleImgCaches[txrH] || []; - }; - ETCp.getRetiredTextureQueue = function(txrH) { - var self2 = this; - var rtxtrQs = self2.eleImgCaches.retired = self2.eleImgCaches.retired || {}; - var rtxtrQ = rtxtrQs[txrH] = rtxtrQs[txrH] || []; - return rtxtrQ; - }; - ETCp.getElementQueue = function() { - var self2 = this; - var q2 = self2.eleCacheQueue = self2.eleCacheQueue || new heap(function(a2, b2) { - return b2.reqs - a2.reqs; - }); - return q2; + } + } }; - ETCp.getElementKeyToQueue = function() { - var self2 = this; - var k2q = self2.eleKeyToCacheQueue = self2.eleKeyToCacheQueue || {}; - return k2q; + TreemapModule = { + parser: { + TokenBuilder: /* @__PURE__ */ __name2(() => new TreemapTokenBuilder(), "TokenBuilder"), + ValueConverter: /* @__PURE__ */ __name2(() => new TreemapValueConverter(), "ValueConverter") + }, + validation: { + TreemapValidator: /* @__PURE__ */ __name2(() => new TreemapValidator(), "TreemapValidator") + } }; - ETCp.getElement = function(ele, bb, pxRatio, lvl, reason) { - var self2 = this; - var r2 = this.renderer; - var zoom2 = r2.cy.zoom(); - var lookup2 = this.lookup; - if (!bb || bb.w === 0 || bb.h === 0 || isNaN(bb.w) || isNaN(bb.h) || !ele.visible() || ele.removed()) { - return null; + __name(createTreemapServices, "createTreemapServices"); + __name2(createTreemapServices, "createTreemapServices"); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/info-NVLQJR56.mjs + var info_NVLQJR56_exports = {}; + __export(info_NVLQJR56_exports, { + InfoModule: () => InfoModule, + createInfoServices: () => createInfoServices + }); + var init_info_NVLQJR56 = __esm({ + "../parser/dist/chunks/mermaid-parser.core/info-NVLQJR56.mjs"() { + "use strict"; + init_chunk_LBM3YZW2(); + init_chunk_FPAJGGOC(); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/packet-BFZMPI3H.mjs + var packet_BFZMPI3H_exports = {}; + __export(packet_BFZMPI3H_exports, { + PacketModule: () => PacketModule, + createPacketServices: () => createPacketServices + }); + var init_packet_BFZMPI3H = __esm({ + "../parser/dist/chunks/mermaid-parser.core/packet-BFZMPI3H.mjs"() { + "use strict"; + init_chunk_76Q3JFCE(); + init_chunk_FPAJGGOC(); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/pie-7BOR55EZ.mjs + var pie_7BOR55EZ_exports = {}; + __export(pie_7BOR55EZ_exports, { + PieModule: () => PieModule, + createPieServices: () => createPieServices + }); + var init_pie_7BOR55EZ = __esm({ + "../parser/dist/chunks/mermaid-parser.core/pie-7BOR55EZ.mjs"() { + "use strict"; + init_chunk_T53DSG4Q(); + init_chunk_FPAJGGOC(); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/architecture-U656AL7Q.mjs + var architecture_U656AL7Q_exports = {}; + __export(architecture_U656AL7Q_exports, { + ArchitectureModule: () => ArchitectureModule, + createArchitectureServices: () => createArchitectureServices + }); + var init_architecture_U656AL7Q = __esm({ + "../parser/dist/chunks/mermaid-parser.core/architecture-U656AL7Q.mjs"() { + "use strict"; + init_chunk_O7ZBX7Z2(); + init_chunk_FPAJGGOC(); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/gitGraph-F6HP7TQM.mjs + var gitGraph_F6HP7TQM_exports = {}; + __export(gitGraph_F6HP7TQM_exports, { + GitGraphModule: () => GitGraphModule, + createGitGraphServices: () => createGitGraphServices + }); + var init_gitGraph_F6HP7TQM = __esm({ + "../parser/dist/chunks/mermaid-parser.core/gitGraph-F6HP7TQM.mjs"() { + "use strict"; + init_chunk_S6J4BHB3(); + init_chunk_FPAJGGOC(); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/radar-NHE76QYJ.mjs + var radar_NHE76QYJ_exports = {}; + __export(radar_NHE76QYJ_exports, { + RadarModule: () => RadarModule, + createRadarServices: () => createRadarServices + }); + var init_radar_NHE76QYJ = __esm({ + "../parser/dist/chunks/mermaid-parser.core/radar-NHE76QYJ.mjs"() { + "use strict"; + init_chunk_LHMN2FUI(); + init_chunk_FPAJGGOC(); + } + }); + + // ../parser/dist/chunks/mermaid-parser.core/treemap-KMMF4GRG.mjs + var treemap_KMMF4GRG_exports = {}; + __export(treemap_KMMF4GRG_exports, { + TreemapModule: () => TreemapModule, + createTreemapServices: () => createTreemapServices + }); + var init_treemap_KMMF4GRG = __esm({ + "../parser/dist/chunks/mermaid-parser.core/treemap-KMMF4GRG.mjs"() { + "use strict"; + init_chunk_FWNWRKHM(); + init_chunk_FPAJGGOC(); + } + }); + + // ../parser/dist/mermaid-parser.core.mjs + async function parse3(diagramType, text4) { + const initializer = initializers[diagramType]; + if (!initializer) { + throw new Error(`Unknown diagram type: ${diagramType}`); + } + if (!parsers[diagramType]) { + await initializer(); + } + const parser24 = parsers[diagramType]; + const result = parser24.parse(text4); + if (result.lexerErrors.length > 0 || result.parserErrors.length > 0) { + throw new MermaidParseError(result); + } + return result.value; + } + var parsers, initializers, MermaidParseError; + var init_mermaid_parser_core = __esm({ + "../parser/dist/mermaid-parser.core.mjs"() { + "use strict"; + init_chunk_S6J4BHB3(); + init_chunk_LBM3YZW2(); + init_chunk_76Q3JFCE(); + init_chunk_T53DSG4Q(); + init_chunk_O7ZBX7Z2(); + init_chunk_LHMN2FUI(); + init_chunk_FWNWRKHM(); + init_chunk_FPAJGGOC(); + parsers = {}; + initializers = { + info: /* @__PURE__ */ __name2(async () => { + const { createInfoServices: createInfoServices2 } = await Promise.resolve().then(() => (init_info_NVLQJR56(), info_NVLQJR56_exports)); + const parser24 = createInfoServices2().Info.parser.LangiumParser; + parsers.info = parser24; + }, "info"), + packet: /* @__PURE__ */ __name2(async () => { + const { createPacketServices: createPacketServices2 } = await Promise.resolve().then(() => (init_packet_BFZMPI3H(), packet_BFZMPI3H_exports)); + const parser24 = createPacketServices2().Packet.parser.LangiumParser; + parsers.packet = parser24; + }, "packet"), + pie: /* @__PURE__ */ __name2(async () => { + const { createPieServices: createPieServices2 } = await Promise.resolve().then(() => (init_pie_7BOR55EZ(), pie_7BOR55EZ_exports)); + const parser24 = createPieServices2().Pie.parser.LangiumParser; + parsers.pie = parser24; + }, "pie"), + architecture: /* @__PURE__ */ __name2(async () => { + const { createArchitectureServices: createArchitectureServices2 } = await Promise.resolve().then(() => (init_architecture_U656AL7Q(), architecture_U656AL7Q_exports)); + const parser24 = createArchitectureServices2().Architecture.parser.LangiumParser; + parsers.architecture = parser24; + }, "architecture"), + gitGraph: /* @__PURE__ */ __name2(async () => { + const { createGitGraphServices: createGitGraphServices2 } = await Promise.resolve().then(() => (init_gitGraph_F6HP7TQM(), gitGraph_F6HP7TQM_exports)); + const parser24 = createGitGraphServices2().GitGraph.parser.LangiumParser; + parsers.gitGraph = parser24; + }, "gitGraph"), + radar: /* @__PURE__ */ __name2(async () => { + const { createRadarServices: createRadarServices2 } = await Promise.resolve().then(() => (init_radar_NHE76QYJ(), radar_NHE76QYJ_exports)); + const parser24 = createRadarServices2().Radar.parser.LangiumParser; + parsers.radar = parser24; + }, "radar"), + treemap: /* @__PURE__ */ __name2(async () => { + const { createTreemapServices: createTreemapServices2 } = await Promise.resolve().then(() => (init_treemap_KMMF4GRG(), treemap_KMMF4GRG_exports)); + const parser24 = createTreemapServices2().Treemap.parser.LangiumParser; + parsers.treemap = parser24; + }, "treemap") + }; + __name(parse3, "parse"); + __name2(parse3, "parse"); + MermaidParseError = class extends Error { + static { + __name(this, "MermaidParseError"); } - if (!self2.allowEdgeTxrCaching && ele.isEdge() || !self2.allowParentTxrCaching && ele.isParent()) { - return null; + constructor(result) { + const lexerErrors = result.lexerErrors.map((err) => err.message).join("\n"); + const parserErrors = result.parserErrors.map((err) => err.message).join("\n"); + super(`Parsing failed: ${lexerErrors} ${parserErrors}`); + this.result = result; } - if (lvl == null) { - lvl = Math.ceil(log22(zoom2 * pxRatio)); + static { + __name2(this, "MermaidParseError"); } - if (lvl < minLvl$1) { - lvl = minLvl$1; - } else if (zoom2 >= maxZoom$1 || lvl > maxLvl$1) { - return null; + }; + } + }); + + // src/diagrams/common/populateCommonDb.ts + function populateCommonDb(ast, db7) { + if (ast.accDescr) { + db7.setAccDescription?.(ast.accDescr); + } + if (ast.accTitle) { + db7.setAccTitle?.(ast.accTitle); + } + if (ast.title) { + db7.setDiagramTitle?.(ast.title); + } + } + var init_populateCommonDb = __esm({ + "src/diagrams/common/populateCommonDb.ts"() { + "use strict"; + __name(populateCommonDb, "populateCommonDb"); + } + }); + + // src/diagrams/git/gitGraphTypes.ts + var commitType; + var init_gitGraphTypes = __esm({ + "src/diagrams/git/gitGraphTypes.ts"() { + "use strict"; + commitType = { + NORMAL: 0, + REVERSE: 1, + HIGHLIGHT: 2, + MERGE: 3, + CHERRY_PICK: 4 + }; + } + }); + + // src/utils/imperativeState.ts + var ImperativeState; + var init_imperativeState = __esm({ + "src/utils/imperativeState.ts"() { + "use strict"; + ImperativeState = class { + /** + * @param init - Function that creates the default state. + */ + constructor(init3) { + this.init = init3; + this.records = this.init(); } - var scale2 = Math.pow(2, lvl); - var eleScaledH = bb.h * scale2; - var eleScaledW = bb.w * scale2; - var scaledLabelShown = r2.eleTextBiggerThanMin(ele, scale2); - if (!this.isVisible(ele, scaledLabelShown)) { - return null; + static { + __name(this, "ImperativeState"); } - var eleCache = lookup2.get(ele, lvl); - if (eleCache && eleCache.invalidated) { - eleCache.invalidated = false; - eleCache.texture.invalidatedWidth -= eleCache.width; + reset() { + this.records = this.init(); } - if (eleCache) { - return eleCache; + }; + } + }); + + // src/diagrams/git/gitGraphAst.ts + function getID() { + return random({ length: 7 }); + } + function uniqBy2(list, fn3) { + const recordMap = /* @__PURE__ */ Object.create(null); + return list.reduce((out, item) => { + const key = fn3(item); + if (!recordMap[key]) { + recordMap[key] = true; + out.push(item); + } + return out; + }, []); + } + function upsert(arr, key, newVal) { + const index = arr.indexOf(key); + if (index === -1) { + arr.push(newVal); + } else { + arr.splice(index, 1, newVal); + } + } + function prettyPrintCommitHistory(commitArr) { + const commit2 = commitArr.reduce((out, commit3) => { + if (out.seq > commit3.seq) { + return out; + } + return commit3; + }, commitArr[0]); + let line2 = ""; + commitArr.forEach(function(c3) { + if (c3 === commit2) { + line2 += " *"; + } else { + line2 += " |"; + } + }); + const label = [line2, commit2.id, commit2.seq]; + for (const branch2 in state2.records.branches) { + if (state2.records.branches.get(branch2) === commit2.id) { + label.push(branch2); + } + } + log.debug(label.join(" ")); + if (commit2.parents && commit2.parents.length == 2 && commit2.parents[0] && commit2.parents[1]) { + const newCommit = state2.records.commits.get(commit2.parents[0]); + upsert(commitArr, commit2, newCommit); + if (commit2.parents[1]) { + commitArr.push(state2.records.commits.get(commit2.parents[1])); + } + } else if (commit2.parents.length == 0) { + return; + } else { + if (commit2.parents[0]) { + const newCommit = state2.records.commits.get(commit2.parents[0]); + upsert(commitArr, commit2, newCommit); + } + } + commitArr = uniqBy2(commitArr, (c3) => c3.id); + prettyPrintCommitHistory(commitArr); + } + var DEFAULT_GITGRAPH_CONFIG, getConfig3, state2, setDirection, setOptions6, getOptions, commit, branch, merge4, cherryPick, checkout, prettyPrint, clear7, getBranchesAsObjArray, getBranches, getCommits, getCommitsArray, getCurrentBranch, getDirection, getHead, db; + var init_gitGraphAst = __esm({ + "src/diagrams/git/gitGraphAst.ts"() { + "use strict"; + init_logger(); + init_utils2(); + init_config(); + init_common(); + init_commonDb(); + init_gitGraphTypes(); + init_imperativeState(); + init_defaultConfig(); + DEFAULT_GITGRAPH_CONFIG = defaultConfig_default.gitGraph; + getConfig3 = /* @__PURE__ */ __name(() => { + const config5 = cleanAndMerge({ + ...DEFAULT_GITGRAPH_CONFIG, + ...getConfig().gitGraph + }); + return config5; + }, "getConfig"); + state2 = new ImperativeState(() => { + const config5 = getConfig3(); + const mainBranchName = config5.mainBranchName; + const mainBranchOrder = config5.mainBranchOrder; + return { + mainBranchName, + commits: /* @__PURE__ */ new Map(), + head: null, + branchConfig: /* @__PURE__ */ new Map([[mainBranchName, { name: mainBranchName, order: mainBranchOrder }]]), + branches: /* @__PURE__ */ new Map([[mainBranchName, null]]), + currBranch: mainBranchName, + direction: "LR", + seq: 0, + options: {} + }; + }); + __name(getID, "getID"); + __name(uniqBy2, "uniqBy"); + setDirection = /* @__PURE__ */ __name(function(dir2) { + state2.records.direction = dir2; + }, "setDirection"); + setOptions6 = /* @__PURE__ */ __name(function(rawOptString) { + log.debug("options str", rawOptString); + rawOptString = rawOptString?.trim(); + rawOptString = rawOptString || "{}"; + try { + state2.records.options = JSON.parse(rawOptString); + } catch (e3) { + log.error("error while parsing gitGraph options", e3.message); } - var txrH; - if (eleScaledH <= minTxrH) { - txrH = minTxrH; - } else if (eleScaledH <= txrStepH) { - txrH = txrStepH; - } else { - txrH = Math.ceil(eleScaledH / txrStepH) * txrStepH; + }, "setOptions"); + getOptions = /* @__PURE__ */ __name(function() { + return state2.records.options; + }, "getOptions"); + commit = /* @__PURE__ */ __name(function(commitDB) { + let msg = commitDB.msg; + let id30 = commitDB.id; + const type3 = commitDB.type; + let tags2 = commitDB.tags; + log.info("commit", msg, id30, type3, tags2); + log.debug("Entering commit:", msg, id30, type3, tags2); + const config5 = getConfig3(); + id30 = common_default.sanitizeText(id30, config5); + msg = common_default.sanitizeText(msg, config5); + tags2 = tags2?.map((tag) => common_default.sanitizeText(tag, config5)); + const newCommit = { + id: id30 ? id30 : state2.records.seq + "-" + getID(), + message: msg, + seq: state2.records.seq++, + type: type3 ?? commitType.NORMAL, + tags: tags2 ?? [], + parents: state2.records.head == null ? [] : [state2.records.head.id], + branch: state2.records.currBranch + }; + state2.records.head = newCommit; + log.info("main branch", config5.mainBranchName); + if (state2.records.commits.has(newCommit.id)) { + log.warn(`Commit ID ${newCommit.id} already exists`); } - if (eleScaledH > maxTxrH || eleScaledW > maxTxrW) { - return null; + state2.records.commits.set(newCommit.id, newCommit); + state2.records.branches.set(state2.records.currBranch, newCommit.id); + log.debug("in pushCommit " + newCommit.id); + }, "commit"); + branch = /* @__PURE__ */ __name(function(branchDB) { + let name = branchDB.name; + const order2 = branchDB.order; + name = common_default.sanitizeText(name, getConfig3()); + if (state2.records.branches.has(name)) { + throw new Error( + `Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${name}")` + ); } - var txrQ = self2.getTextureQueue(txrH); - var txr = txrQ[txrQ.length - 2]; - var addNewTxr = /* @__PURE__ */ __name(function addNewTxr2() { - return self2.recycleTexture(txrH, eleScaledW) || self2.addTexture(txrH, eleScaledW); - }, "addNewTxr"); - if (!txr) { - txr = txrQ[txrQ.length - 1]; + state2.records.branches.set(name, state2.records.head != null ? state2.records.head.id : null); + state2.records.branchConfig.set(name, { name, order: order2 }); + checkout(name); + log.debug("in createBranch"); + }, "branch"); + merge4 = /* @__PURE__ */ __name((mergeDB) => { + let otherBranch = mergeDB.branch; + let customId = mergeDB.id; + const overrideType = mergeDB.type; + const customTags = mergeDB.tags; + const config5 = getConfig3(); + otherBranch = common_default.sanitizeText(otherBranch, config5); + if (customId) { + customId = common_default.sanitizeText(customId, config5); } - if (!txr) { - txr = addNewTxr(); + const currentBranchCheck = state2.records.branches.get(state2.records.currBranch); + const otherBranchCheck = state2.records.branches.get(otherBranch); + const currentCommit = currentBranchCheck ? state2.records.commits.get(currentBranchCheck) : void 0; + const otherCommit = otherBranchCheck ? state2.records.commits.get(otherBranchCheck) : void 0; + if (currentCommit && otherCommit && currentCommit.branch === otherBranch) { + throw new Error(`Cannot merge branch '${otherBranch}' into itself.`); } - if (txr.width - txr.usedWidth < eleScaledW) { - txr = addNewTxr(); + if (state2.records.currBranch === otherBranch) { + const error3 = new Error('Incorrect usage of "merge". Cannot merge a branch to itself'); + error3.hash = { + text: `merge ${otherBranch}`, + token: `merge ${otherBranch}`, + expected: ["branch abc"] + }; + throw error3; } - var scalableFrom = /* @__PURE__ */ __name(function scalableFrom2(otherCache) { - return otherCache && otherCache.scaledLabelShown === scaledLabelShown; - }, "scalableFrom"); - var deqing = reason && reason === getTxrReasons.dequeue; - var highQualityReq = reason && reason === getTxrReasons.highQuality; - var downscaleReq = reason && reason === getTxrReasons.downscale; - var higherCache; - for (var l2 = lvl + 1; l2 <= maxLvl$1; l2++) { - var c3 = lookup2.get(ele, l2); - if (c3) { - higherCache = c3; - break; - } + if (currentCommit === void 0 || !currentCommit) { + const error3 = new Error( + `Incorrect usage of "merge". Current branch (${state2.records.currBranch})has no commits` + ); + error3.hash = { + text: `merge ${otherBranch}`, + token: `merge ${otherBranch}`, + expected: ["commit"] + }; + throw error3; } - var oneUpCache = higherCache && higherCache.level === lvl + 1 ? higherCache : null; - var downscale = /* @__PURE__ */ __name(function downscale2() { - txr.context.drawImage(oneUpCache.texture.canvas, oneUpCache.x, 0, oneUpCache.width, oneUpCache.height, txr.usedWidth, 0, eleScaledW, eleScaledH); - }, "downscale"); - txr.context.setTransform(1, 0, 0, 1, 0, 0); - txr.context.clearRect(txr.usedWidth, 0, eleScaledW, txrH); - if (scalableFrom(oneUpCache)) { - downscale(); - } else if (scalableFrom(higherCache)) { - if (highQualityReq) { - for (var _l = higherCache.level; _l > lvl; _l--) { - oneUpCache = self2.getElement(ele, bb, pxRatio, _l, getTxrReasons.downscale); - } - downscale(); - } else { - self2.queueElement(ele, higherCache.level - 1); - return higherCache; - } - } else { - var lowerCache; - if (!deqing && !highQualityReq && !downscaleReq) { - for (var _l2 = lvl - 1; _l2 >= minLvl$1; _l2--) { - var _c = lookup2.get(ele, _l2); - if (_c) { - lowerCache = _c; - break; - } - } - } - if (scalableFrom(lowerCache)) { - self2.queueElement(ele, lvl); - return lowerCache; - } - txr.context.translate(txr.usedWidth, 0); - txr.context.scale(scale2, scale2); - this.drawElement(txr.context, ele, bb, scaledLabelShown, false); - txr.context.scale(1 / scale2, 1 / scale2); - txr.context.translate(-txr.usedWidth, 0); + if (!state2.records.branches.has(otherBranch)) { + const error3 = new Error( + 'Incorrect usage of "merge". Branch to be merged (' + otherBranch + ") does not exist" + ); + error3.hash = { + text: `merge ${otherBranch}`, + token: `merge ${otherBranch}`, + expected: [`branch ${otherBranch}`] + }; + throw error3; } - eleCache = { - x: txr.usedWidth, - texture: txr, - level: lvl, - scale: scale2, - width: eleScaledW, - height: eleScaledH, - scaledLabelShown - }; - txr.usedWidth += Math.ceil(eleScaledW + eleTxrSpacing); - txr.eleCaches.push(eleCache); - lookup2.set(ele, lvl, eleCache); - self2.checkTextureFullness(txr); - return eleCache; - }; - ETCp.invalidateElements = function(eles) { - for (var i2 = 0; i2 < eles.length; i2++) { - this.invalidateElement(eles[i2]); + if (otherCommit === void 0 || !otherCommit) { + const error3 = new Error( + 'Incorrect usage of "merge". Branch to be merged (' + otherBranch + ") has no commits" + ); + error3.hash = { + text: `merge ${otherBranch}`, + token: `merge ${otherBranch}`, + expected: ['"commit"'] + }; + throw error3; } - }; - ETCp.invalidateElement = function(ele) { - var self2 = this; - var lookup2 = self2.lookup; - var caches = []; - var invalid = lookup2.isInvalid(ele); - if (!invalid) { - return; + if (currentCommit === otherCommit) { + const error3 = new Error('Incorrect usage of "merge". Both branches have same head'); + error3.hash = { + text: `merge ${otherBranch}`, + token: `merge ${otherBranch}`, + expected: ["branch abc"] + }; + throw error3; } - for (var lvl = minLvl$1; lvl <= maxLvl$1; lvl++) { - var cache3 = lookup2.getForCachedKey(ele, lvl); - if (cache3) { - caches.push(cache3); - } + if (customId && state2.records.commits.has(customId)) { + const error3 = new Error( + 'Incorrect usage of "merge". Commit with id:' + customId + " already exists, use different custom id" + ); + error3.hash = { + text: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(" ")}`, + token: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(" ")}`, + expected: [ + `merge ${otherBranch} ${customId}_UNIQUE ${overrideType} ${customTags?.join(" ")}` + ] + }; + throw error3; } - var noOtherElesUseCache = lookup2.invalidate(ele); - if (noOtherElesUseCache) { - for (var i2 = 0; i2 < caches.length; i2++) { - var _cache = caches[i2]; - var txr = _cache.texture; - txr.invalidatedWidth += _cache.width; - _cache.invalidated = true; - self2.checkTextureUtility(txr); - } + const verifiedBranch = otherBranchCheck ? otherBranchCheck : ""; + const commit2 = { + id: customId || `${state2.records.seq}-${getID()}`, + message: `merged branch ${otherBranch} into ${state2.records.currBranch}`, + seq: state2.records.seq++, + parents: state2.records.head == null ? [] : [state2.records.head.id, verifiedBranch], + branch: state2.records.currBranch, + type: commitType.MERGE, + customType: overrideType, + customId: customId ? true : false, + tags: customTags ?? [] + }; + state2.records.head = commit2; + state2.records.commits.set(commit2.id, commit2); + state2.records.branches.set(state2.records.currBranch, commit2.id); + log.debug(state2.records.branches); + log.debug("in mergeBranch"); + }, "merge"); + cherryPick = /* @__PURE__ */ __name(function(cherryPickDB) { + let sourceId = cherryPickDB.id; + let targetId = cherryPickDB.targetId; + let tags2 = cherryPickDB.tags; + let parentCommitId = cherryPickDB.parent; + log.debug("Entering cherryPick:", sourceId, targetId, tags2); + const config5 = getConfig3(); + sourceId = common_default.sanitizeText(sourceId, config5); + targetId = common_default.sanitizeText(targetId, config5); + tags2 = tags2?.map((tag) => common_default.sanitizeText(tag, config5)); + parentCommitId = common_default.sanitizeText(parentCommitId, config5); + if (!sourceId || !state2.records.commits.has(sourceId)) { + const error3 = new Error( + 'Incorrect usage of "cherryPick". Source commit id should exist and provided' + ); + error3.hash = { + text: `cherryPick ${sourceId} ${targetId}`, + token: `cherryPick ${sourceId} ${targetId}`, + expected: ["cherry-pick abc"] + }; + throw error3; } - self2.removeFromQueue(ele); - }; - ETCp.checkTextureUtility = function(txr) { - if (txr.invalidatedWidth >= minUtility * txr.width) { - this.retireTexture(txr); + const sourceCommit = state2.records.commits.get(sourceId); + if (sourceCommit === void 0 || !sourceCommit) { + throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided'); } - }; - ETCp.checkTextureFullness = function(txr) { - var self2 = this; - var txrQ = self2.getTextureQueue(txr.height); - if (txr.usedWidth / txr.width > maxFullness && txr.fullnessChecks >= maxFullnessChecks) { - removeFromArray(txrQ, txr); - } else { - txr.fullnessChecks++; + if (parentCommitId && !(Array.isArray(sourceCommit.parents) && sourceCommit.parents.includes(parentCommitId))) { + const error3 = new Error( + "Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit." + ); + throw error3; } - }; - ETCp.retireTexture = function(txr) { - var self2 = this; - var txrH = txr.height; - var txrQ = self2.getTextureQueue(txrH); - var lookup2 = this.lookup; - removeFromArray(txrQ, txr); - txr.retired = true; - var eleCaches = txr.eleCaches; - for (var i2 = 0; i2 < eleCaches.length; i2++) { - var eleCache = eleCaches[i2]; - lookup2.deleteCache(eleCache.key, eleCache.level); + const sourceCommitBranch = sourceCommit.branch; + if (sourceCommit.type === commitType.MERGE && !parentCommitId) { + const error3 = new Error( + "Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified." + ); + throw error3; } - clearArray(eleCaches); - var rtxtrQ = self2.getRetiredTextureQueue(txrH); - rtxtrQ.push(txr); - }; - ETCp.addTexture = function(txrH, minW) { - var self2 = this; - var txrQ = self2.getTextureQueue(txrH); - var txr = {}; - txrQ.push(txr); - txr.eleCaches = []; - txr.height = txrH; - txr.width = Math.max(defTxrWidth, minW); - txr.usedWidth = 0; - txr.invalidatedWidth = 0; - txr.fullnessChecks = 0; - txr.canvas = self2.renderer.makeOffscreenCanvas(txr.width, txr.height); - txr.context = txr.canvas.getContext("2d"); - return txr; - }; - ETCp.recycleTexture = function(txrH, minW) { - var self2 = this; - var txrQ = self2.getTextureQueue(txrH); - var rtxtrQ = self2.getRetiredTextureQueue(txrH); - for (var i2 = 0; i2 < rtxtrQ.length; i2++) { - var txr = rtxtrQ[i2]; - if (txr.width >= minW) { - txr.retired = false; - txr.usedWidth = 0; - txr.invalidatedWidth = 0; - txr.fullnessChecks = 0; - clearArray(txr.eleCaches); - txr.context.setTransform(1, 0, 0, 1, 0, 0); - txr.context.clearRect(0, 0, txr.width, txr.height); - removeFromArray(rtxtrQ, txr); - txrQ.push(txr); - return txr; + if (!targetId || !state2.records.commits.has(targetId)) { + if (sourceCommitBranch === state2.records.currBranch) { + const error3 = new Error( + 'Incorrect usage of "cherryPick". Source commit is already on current branch' + ); + error3.hash = { + text: `cherryPick ${sourceId} ${targetId}`, + token: `cherryPick ${sourceId} ${targetId}`, + expected: ["cherry-pick abc"] + }; + throw error3; } - } - }; - ETCp.queueElement = function(ele, lvl) { - var self2 = this; - var q2 = self2.getElementQueue(); - var k2q = self2.getElementKeyToQueue(); - var key = this.getKey(ele); - var existingReq = k2q[key]; - if (existingReq) { - existingReq.level = Math.max(existingReq.level, lvl); - existingReq.eles.merge(ele); - existingReq.reqs++; - q2.updateItem(existingReq); - } else { - var req = { - eles: ele.spawn().merge(ele), - level: lvl, - reqs: 1, - key + const currentCommitId = state2.records.branches.get(state2.records.currBranch); + if (currentCommitId === void 0 || !currentCommitId) { + const error3 = new Error( + `Incorrect usage of "cherry-pick". Current branch (${state2.records.currBranch})has no commits` + ); + error3.hash = { + text: `cherryPick ${sourceId} ${targetId}`, + token: `cherryPick ${sourceId} ${targetId}`, + expected: ["cherry-pick abc"] + }; + throw error3; + } + const currentCommit = state2.records.commits.get(currentCommitId); + if (currentCommit === void 0 || !currentCommit) { + const error3 = new Error( + `Incorrect usage of "cherry-pick". Current branch (${state2.records.currBranch})has no commits` + ); + error3.hash = { + text: `cherryPick ${sourceId} ${targetId}`, + token: `cherryPick ${sourceId} ${targetId}`, + expected: ["cherry-pick abc"] + }; + throw error3; + } + const commit2 = { + id: state2.records.seq + "-" + getID(), + message: `cherry-picked ${sourceCommit?.message} into ${state2.records.currBranch}`, + seq: state2.records.seq++, + parents: state2.records.head == null ? [] : [state2.records.head.id, sourceCommit.id], + branch: state2.records.currBranch, + type: commitType.CHERRY_PICK, + tags: tags2 ? tags2.filter(Boolean) : [ + `cherry-pick:${sourceCommit.id}${sourceCommit.type === commitType.MERGE ? `|parent:${parentCommitId}` : ""}` + ] }; - q2.push(req); - k2q[key] = req; + state2.records.head = commit2; + state2.records.commits.set(commit2.id, commit2); + state2.records.branches.set(state2.records.currBranch, commit2.id); + log.debug(state2.records.branches); + log.debug("in cherryPick"); } - }; - ETCp.dequeue = function(pxRatio) { - var self2 = this; - var q2 = self2.getElementQueue(); - var k2q = self2.getElementKeyToQueue(); - var dequeued = []; - var lookup2 = self2.lookup; - for (var i2 = 0; i2 < maxDeqSize$1; i2++) { - if (q2.size() > 0) { - var req = q2.pop(); - var key = req.key; - var ele = req.eles[0]; - var cacheExists = lookup2.hasCache(ele, req.level); - k2q[key] = null; - if (cacheExists) { - continue; - } - dequeued.push(req); - var bb = self2.getBoundingBox(ele); - self2.getElement(ele, bb, pxRatio, req.level, getTxrReasons.dequeue); + }, "cherryPick"); + checkout = /* @__PURE__ */ __name(function(branch2) { + branch2 = common_default.sanitizeText(branch2, getConfig3()); + if (!state2.records.branches.has(branch2)) { + const error3 = new Error( + `Trying to checkout branch which is not yet created. (Help try using "branch ${branch2}")` + ); + error3.hash = { + text: `checkout ${branch2}`, + token: `checkout ${branch2}`, + expected: [`branch ${branch2}`] + }; + throw error3; + } else { + state2.records.currBranch = branch2; + const id30 = state2.records.branches.get(state2.records.currBranch); + if (id30 === void 0 || !id30) { + state2.records.head = null; } else { - break; + state2.records.head = state2.records.commits.get(id30) ?? null; } } - return dequeued; - }; - ETCp.removeFromQueue = function(ele) { - var self2 = this; - var q2 = self2.getElementQueue(); - var k2q = self2.getElementKeyToQueue(); - var key = this.getKey(ele); - var req = k2q[key]; - if (req != null) { - if (req.eles.length === 1) { - req.reqs = MAX_INT$1; - q2.updateItem(req); - q2.pop(); - k2q[key] = null; - } else { - req.eles.unmerge(ele); + }, "checkout"); + __name(upsert, "upsert"); + __name(prettyPrintCommitHistory, "prettyPrintCommitHistory"); + prettyPrint = /* @__PURE__ */ __name(function() { + log.debug(state2.records.commits); + const node2 = getCommitsArray()[0]; + prettyPrintCommitHistory([node2]); + }, "prettyPrint"); + clear7 = /* @__PURE__ */ __name(function() { + state2.reset(); + clear(); + }, "clear"); + getBranchesAsObjArray = /* @__PURE__ */ __name(function() { + const branchesArray = [...state2.records.branchConfig.values()].map((branchConfig, i2) => { + if (branchConfig.order !== null && branchConfig.order !== void 0) { + return branchConfig; } - } + return { + ...branchConfig, + order: parseFloat(`0.${i2}`) + }; + }).sort((a2, b3) => (a2.order ?? 0) - (b3.order ?? 0)).map(({ name }) => ({ name })); + return branchesArray; + }, "getBranchesAsObjArray"); + getBranches = /* @__PURE__ */ __name(function() { + return state2.records.branches; + }, "getBranches"); + getCommits = /* @__PURE__ */ __name(function() { + return state2.records.commits; + }, "getCommits"); + getCommitsArray = /* @__PURE__ */ __name(function() { + const commitArr = [...state2.records.commits.values()]; + commitArr.forEach(function(o2) { + log.debug(o2.id); + }); + commitArr.sort((a2, b3) => a2.seq - b3.seq); + return commitArr; + }, "getCommitsArray"); + getCurrentBranch = /* @__PURE__ */ __name(function() { + return state2.records.currBranch; + }, "getCurrentBranch"); + getDirection = /* @__PURE__ */ __name(function() { + return state2.records.direction; + }, "getDirection"); + getHead = /* @__PURE__ */ __name(function() { + return state2.records.head; + }, "getHead"); + db = { + commitType, + getConfig: getConfig3, + setDirection, + setOptions: setOptions6, + getOptions, + commit, + branch, + merge: merge4, + cherryPick, + checkout, + //reset, + prettyPrint, + clear: clear7, + getBranchesAsObjArray, + getBranches, + getCommits, + getCommitsArray, + getCurrentBranch, + getDirection, + getHead, + setAccTitle, + getAccTitle, + getAccDescription, + setAccDescription, + setDiagramTitle, + getDiagramTitle }; - ETCp.onDequeue = function(fn3) { - this.onDequeues.push(fn3); + } + }); + + // src/diagrams/git/gitGraphParser.ts + var populate15, parseStatement, parseCommit, parseBranch, parseMerge, parseCheckout, parseCherryPicking, parser4; + var init_gitGraphParser = __esm({ + "src/diagrams/git/gitGraphParser.ts"() { + "use strict"; + init_mermaid_parser_core(); + init_logger(); + init_populateCommonDb(); + init_gitGraphAst(); + init_gitGraphTypes(); + populate15 = /* @__PURE__ */ __name((ast, db7) => { + populateCommonDb(ast, db7); + if (ast.dir) { + db7.setDirection(ast.dir); + } + for (const statement of ast.statements) { + parseStatement(statement, db7); + } + }, "populate"); + parseStatement = /* @__PURE__ */ __name((statement, db7) => { + const parsers2 = { + Commit: /* @__PURE__ */ __name((stmt) => db7.commit(parseCommit(stmt)), "Commit"), + Branch: /* @__PURE__ */ __name((stmt) => db7.branch(parseBranch(stmt)), "Branch"), + Merge: /* @__PURE__ */ __name((stmt) => db7.merge(parseMerge(stmt)), "Merge"), + Checkout: /* @__PURE__ */ __name((stmt) => db7.checkout(parseCheckout(stmt)), "Checkout"), + CherryPicking: /* @__PURE__ */ __name((stmt) => db7.cherryPick(parseCherryPicking(stmt)), "CherryPicking") + }; + const parser24 = parsers2[statement.$type]; + if (parser24) { + parser24(statement); + } else { + log.error(`Unknown statement type: ${statement.$type}`); + } + }, "parseStatement"); + parseCommit = /* @__PURE__ */ __name((commit2) => { + const commitDB = { + id: commit2.id, + msg: commit2.message ?? "", + type: commit2.type !== void 0 ? commitType[commit2.type] : commitType.NORMAL, + tags: commit2.tags ?? void 0 + }; + return commitDB; + }, "parseCommit"); + parseBranch = /* @__PURE__ */ __name((branch2) => { + const branchDB = { + name: branch2.name, + order: branch2.order ?? 0 + }; + return branchDB; + }, "parseBranch"); + parseMerge = /* @__PURE__ */ __name((merge5) => { + const mergeDB = { + branch: merge5.branch, + id: merge5.id ?? "", + type: merge5.type !== void 0 ? commitType[merge5.type] : void 0, + tags: merge5.tags ?? void 0 + }; + return mergeDB; + }, "parseMerge"); + parseCheckout = /* @__PURE__ */ __name((checkout2) => { + const branch2 = checkout2.branch; + return branch2; + }, "parseCheckout"); + parseCherryPicking = /* @__PURE__ */ __name((cherryPicking) => { + const cherryPickDB = { + id: cherryPicking.id, + targetId: "", + tags: cherryPicking.tags?.length === 0 ? void 0 : cherryPicking.tags, + parent: cherryPicking.parent + }; + return cherryPickDB; + }, "parseCherryPicking"); + parser4 = { + parse: /* @__PURE__ */ __name(async (input) => { + const ast = await parse3("gitGraph", input); + log.debug(ast); + populate15(ast, db); + }, "parse") }; - ETCp.offDequeue = function(fn3) { - removeFromArray(this.onDequeues, fn3); - }; - ETCp.setupDequeueing = defs.setupDequeueing({ - deqRedrawThreshold: deqRedrawThreshold$1, - deqCost: deqCost$1, - deqAvgCost: deqAvgCost$1, - deqNoDrawCost: deqNoDrawCost$1, - deqFastCost: deqFastCost$1, - deq: /* @__PURE__ */ __name(function deq(self2, pxRatio, extent2) { - return self2.dequeue(pxRatio, extent2); - }, "deq"), - onDeqd: /* @__PURE__ */ __name(function onDeqd(self2, deqd) { - for (var i2 = 0; i2 < self2.onDequeues.length; i2++) { - var fn3 = self2.onDequeues[i2]; - fn3(deqd); - } - }, "onDeqd"), - shouldRedraw: /* @__PURE__ */ __name(function shouldRedraw(self2, deqd, pxRatio, extent2) { - for (var i2 = 0; i2 < deqd.length; i2++) { - var eles = deqd[i2].eles; - for (var j2 = 0; j2 < eles.length; j2++) { - var bb = eles[j2].boundingBox(); - if (boundingBoxesIntersect(bb, extent2)) { - return true; - } - } - } - return false; - }, "shouldRedraw"), - priority: /* @__PURE__ */ __name(function priority(self2) { - return self2.renderer.beforeRenderPriorities.eleTxrDeq; - }, "priority") - }); - defNumLayers = 1; - minLvl = -4; - maxLvl = 2; - maxZoom2 = 3.99; - deqRedrawThreshold = 50; - refineEleDebounceTime = 50; - deqCost = 0.15; - deqAvgCost = 0.1; - deqNoDrawCost = 0.9; - deqFastCost = 0.9; - maxDeqSize = 1; - invalidThreshold = 250; - maxLayerArea = 4e3 * 4e3; - maxLayerDim = 32767; - useHighQualityEleTxrReqs = true; - LayeredTextureCache = /* @__PURE__ */ __name(function LayeredTextureCache2(renderer9) { - var self2 = this; - var r2 = self2.renderer = renderer9; - var cy = r2.cy; - self2.layersByLevel = {}; - self2.firstGet = true; - self2.lastInvalidationTime = performanceNow() - 2 * invalidThreshold; - self2.skipping = false; - self2.eleTxrDeqs = cy.collection(); - self2.scheduleElementRefinement = debounce_1(function() { - self2.refineElementTextures(self2.eleTxrDeqs); - self2.eleTxrDeqs.unmerge(self2.eleTxrDeqs); - }, refineEleDebounceTime); - r2.beforeRender(function(willDraw, now4) { - if (now4 - self2.lastInvalidationTime <= invalidThreshold) { - self2.skipping = true; - } else { - self2.skipping = false; - } - }, r2.beforeRenderPriorities.lyrTxrSkip); - var qSort = /* @__PURE__ */ __name(function qSort2(a2, b2) { - return b2.reqs - a2.reqs; - }, "qSort"); - self2.layersQueue = new heap(qSort); - self2.setupDequeueing(); - }, "LayeredTextureCache"); - LTCp = LayeredTextureCache.prototype; - layerIdPool = 0; - MAX_INT = Math.pow(2, 53) - 1; - LTCp.makeLayer = function(bb, lvl) { - var scale2 = Math.pow(2, lvl); - var w3 = Math.ceil(bb.w * scale2); - var h2 = Math.ceil(bb.h * scale2); - var canvas = this.renderer.makeOffscreenCanvas(w3, h2); - var layer = { - id: layerIdPool = ++layerIdPool % MAX_INT, - bb, - level: lvl, - width: w3, - height: h2, - canvas, - context: canvas.getContext("2d"), - eles: [], - elesQueue: [], - reqs: 0 + if (void 0) { + const { it, expect, describe } = void 0; + const mockDB = { + commitType, + setDirection: vi.fn(), + commit: vi.fn(), + branch: vi.fn(), + merge: vi.fn(), + cherryPick: vi.fn(), + checkout: vi.fn() }; - var cxt = layer.context; - var dx = -layer.bb.x1; - var dy = -layer.bb.y1; - cxt.scale(scale2, scale2); - cxt.translate(dx, dy); - return layer; - }; - LTCp.getLayers = function(eles, pxRatio, lvl) { - var self2 = this; - var r2 = self2.renderer; - var cy = r2.cy; - var zoom2 = cy.zoom(); - var firstGet = self2.firstGet; - self2.firstGet = false; - if (lvl == null) { - lvl = Math.ceil(log22(zoom2 * pxRatio)); - if (lvl < minLvl) { - lvl = minLvl; - } else if (zoom2 >= maxZoom2 || lvl > maxLvl) { - return null; - } - } - self2.validateLayersElesOrdering(lvl, eles); - var layersByLvl = self2.layersByLevel; - var scale2 = Math.pow(2, lvl); - var layers = layersByLvl[lvl] = layersByLvl[lvl] || []; - var bb; - var lvlComplete = self2.levelIsComplete(lvl, eles); - var tmpLayers; - var checkTempLevels = /* @__PURE__ */ __name(function checkTempLevels2() { - var canUseAsTmpLvl = /* @__PURE__ */ __name(function canUseAsTmpLvl2(l2) { - self2.validateLayersElesOrdering(l2, eles); - if (self2.levelIsComplete(l2, eles)) { - tmpLayers = layersByLvl[l2]; - return true; - } - }, "canUseAsTmpLvl"); - var checkLvls = /* @__PURE__ */ __name(function checkLvls2(dir2) { - if (tmpLayers) { - return; - } - for (var l2 = lvl + dir2; minLvl <= l2 && l2 <= maxLvl; l2 += dir2) { - if (canUseAsTmpLvl(l2)) { - break; - } - } - }, "checkLvls"); - checkLvls(1); - checkLvls(-1); - for (var i3 = layers.length - 1; i3 >= 0; i3--) { - var layer2 = layers[i3]; - if (layer2.invalid) { - removeFromArray(layers, layer2); - } - } - }, "checkTempLevels"); - if (!lvlComplete) { - checkTempLevels(); + describe("GitGraph Parser", () => { + it("should parse a commit statement", () => { + const commit2 = { + $type: "Commit", + id: "1", + message: "test", + tags: ["tag1", "tag2"], + type: "NORMAL" + }; + parseStatement(commit2, mockDB); + expect(mockDB.commit).toHaveBeenCalledWith({ + id: "1", + msg: "test", + tags: ["tag1", "tag2"], + type: 0 + }); + }); + it("should parse a branch statement", () => { + const branch2 = { + $type: "Branch", + name: "newBranch", + order: 1 + }; + parseStatement(branch2, mockDB); + expect(mockDB.branch).toHaveBeenCalledWith({ name: "newBranch", order: 1 }); + }); + it("should parse a checkout statement", () => { + const checkout2 = { + $type: "Checkout", + branch: "newBranch" + }; + parseStatement(checkout2, mockDB); + expect(mockDB.checkout).toHaveBeenCalledWith("newBranch"); + }); + it("should parse a merge statement", () => { + const merge5 = { + $type: "Merge", + branch: "newBranch", + id: "1", + tags: ["tag1", "tag2"], + type: "NORMAL" + }; + parseStatement(merge5, mockDB); + expect(mockDB.merge).toHaveBeenCalledWith({ + branch: "newBranch", + id: "1", + tags: ["tag1", "tag2"], + type: 0 + }); + }); + it("should parse a cherry picking statement", () => { + const cherryPick2 = { + $type: "CherryPicking", + id: "1", + tags: ["tag1", "tag2"], + parent: "2" + }; + parseStatement(cherryPick2, mockDB); + expect(mockDB.cherryPick).toHaveBeenCalledWith({ + id: "1", + targetId: "", + parent: "2", + tags: ["tag1", "tag2"] + }); + }); + it("should parse a langium generated gitGraph ast", () => { + const dummy = { + $type: "GitGraph", + statements: [] + }; + const gitGraphAst = { + $type: "GitGraph", + statements: [ + { + $container: dummy, + $type: "Commit", + id: "1", + message: "test", + tags: ["tag1", "tag2"], + type: "NORMAL" + }, + { + $container: dummy, + $type: "Branch", + name: "newBranch", + order: 1 + }, + { + $container: dummy, + $type: "Merge", + branch: "newBranch", + id: "1", + tags: ["tag1", "tag2"], + type: "NORMAL" + }, + { + $container: dummy, + $type: "Checkout", + branch: "newBranch" + }, + { + $container: dummy, + $type: "CherryPicking", + id: "1", + tags: ["tag1", "tag2"], + parent: "2" + } + ] + }; + populate15(gitGraphAst, mockDB); + expect(mockDB.commit).toHaveBeenCalledWith({ + id: "1", + msg: "test", + tags: ["tag1", "tag2"], + type: 0 + }); + expect(mockDB.branch).toHaveBeenCalledWith({ name: "newBranch", order: 1 }); + expect(mockDB.merge).toHaveBeenCalledWith({ + branch: "newBranch", + id: "1", + tags: ["tag1", "tag2"], + type: 0 + }); + expect(mockDB.checkout).toHaveBeenCalledWith("newBranch"); + }); + }); + } + } + }); + + // src/diagrams/git/gitGraphRenderer.ts + var DEFAULT_CONFIG, DEFAULT_GITGRAPH_CONFIG2, LAYOUT_OFFSET, COMMIT_STEP, PX, PY, THEME_COLOR_LIMIT, branchPos, commitPos, defaultPos, allCommitsDict, lanes, maxPos, dir, clear8, drawText2, findClosestParent, findClosestParentBT, setParallelBTPos, findClosestParentPos, calculateCommitPosition, setCommitPosition, setRootPosition, drawCommitBullet, drawCommitLabel, drawCommitTags, getCommitClassType, calculatePosition, getCommitPosition, drawCommits, shouldRerouteArrow, findLane, drawArrow, drawArrows, drawBranches, setBranchPosition, draw4, gitGraphRenderer_default; + var init_gitGraphRenderer = __esm({ + "src/diagrams/git/gitGraphRenderer.ts"() { + "use strict"; + init_src32(); + init_diagramAPI(); + init_logger(); + init_utils2(); + init_gitGraphTypes(); + DEFAULT_CONFIG = getConfig2(); + DEFAULT_GITGRAPH_CONFIG2 = DEFAULT_CONFIG?.gitGraph; + LAYOUT_OFFSET = 10; + COMMIT_STEP = 40; + PX = 4; + PY = 2; + THEME_COLOR_LIMIT = 8; + branchPos = /* @__PURE__ */ new Map(); + commitPos = /* @__PURE__ */ new Map(); + defaultPos = 30; + allCommitsDict = /* @__PURE__ */ new Map(); + lanes = []; + maxPos = 0; + dir = "LR"; + clear8 = /* @__PURE__ */ __name(() => { + branchPos.clear(); + commitPos.clear(); + allCommitsDict.clear(); + maxPos = 0; + lanes = []; + dir = "LR"; + }, "clear"); + drawText2 = /* @__PURE__ */ __name((txt) => { + const svgLabel = document.createElementNS("http://www.w3.org/2000/svg", "text"); + const rows = typeof txt === "string" ? txt.split(/\\n|\n|/gi) : txt; + rows.forEach((row) => { + const tspan = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + tspan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"); + tspan.setAttribute("dy", "1em"); + tspan.setAttribute("x", "0"); + tspan.setAttribute("class", "row"); + tspan.textContent = row.trim(); + svgLabel.appendChild(tspan); + }); + return svgLabel; + }, "drawText"); + findClosestParent = /* @__PURE__ */ __name((parents3) => { + let closestParent; + let comparisonFunc; + let targetPosition; + if (dir === "BT") { + comparisonFunc = /* @__PURE__ */ __name((a2, b3) => a2 <= b3, "comparisonFunc"); + targetPosition = Infinity; } else { - return layers; + comparisonFunc = /* @__PURE__ */ __name((a2, b3) => a2 >= b3, "comparisonFunc"); + targetPosition = 0; } - var getBb = /* @__PURE__ */ __name(function getBb2() { - if (!bb) { - bb = makeBoundingBox(); - for (var i3 = 0; i3 < eles.length; i3++) { - updateBoundingBox(bb, eles[i3].boundingBox()); - } - } - return bb; - }, "getBb"); - var makeLayer = /* @__PURE__ */ __name(function makeLayer2(opts) { - opts = opts || {}; - var after = opts.after; - getBb(); - var w3 = Math.ceil(bb.w * scale2); - var h2 = Math.ceil(bb.h * scale2); - if (w3 > maxLayerDim || h2 > maxLayerDim) { - return null; + parents3.forEach((parent4) => { + const parentPosition = dir === "TB" || dir == "BT" ? commitPos.get(parent4)?.y : commitPos.get(parent4)?.x; + if (parentPosition !== void 0 && comparisonFunc(parentPosition, targetPosition)) { + closestParent = parent4; + targetPosition = parentPosition; } - var area = w3 * h2; - if (area > maxLayerArea) { - return null; + }); + return closestParent; + }, "findClosestParent"); + findClosestParentBT = /* @__PURE__ */ __name((parents3) => { + let closestParent = ""; + let maxPosition = Infinity; + parents3.forEach((parent4) => { + const parentPosition = commitPos.get(parent4).y; + if (parentPosition <= maxPosition) { + closestParent = parent4; + maxPosition = parentPosition; } - var layer2 = self2.makeLayer(bb, lvl); - if (after != null) { - var index = layers.indexOf(after) + 1; - layers.splice(index, 0, layer2); - } else if (opts.insert === void 0 || opts.insert) { - layers.unshift(layer2); + }); + return closestParent || void 0; + }, "findClosestParentBT"); + setParallelBTPos = /* @__PURE__ */ __name((sortedKeys, commits, defaultPos2) => { + let curPos = defaultPos2; + let maxPosition = defaultPos2; + const roots = []; + sortedKeys.forEach((key) => { + const commit2 = commits.get(key); + if (!commit2) { + throw new Error(`Commit not found for key ${key}`); } - return layer2; - }, "makeLayer"); - if (self2.skipping && !firstGet) { - return null; - } - var layer = null; - var maxElesPerLayer = eles.length / defNumLayers; - var allowLazyQueueing = !firstGet; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - var rs = ele._private.rscratch; - var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; - var existingLayer = caches[lvl]; - if (existingLayer) { - layer = existingLayer; - continue; + if (commit2.parents.length) { + curPos = calculateCommitPosition(commit2); + maxPosition = Math.max(curPos, maxPosition); + } else { + roots.push(commit2); } - if (!layer || layer.eles.length >= maxElesPerLayer || !boundingBoxInBoundingBox(layer.bb, ele.boundingBox())) { - layer = makeLayer({ - insert: true, - after: layer - }); - if (!layer) { - return null; + setCommitPosition(commit2, curPos); + }); + curPos = maxPosition; + roots.forEach((commit2) => { + setRootPosition(commit2, curPos, defaultPos2); + }); + sortedKeys.forEach((key) => { + const commit2 = commits.get(key); + if (commit2?.parents.length) { + const closestParent = findClosestParentBT(commit2.parents); + curPos = commitPos.get(closestParent).y - COMMIT_STEP; + if (curPos <= maxPosition) { + maxPosition = curPos; } + const x5 = branchPos.get(commit2.branch).pos; + const y6 = curPos - LAYOUT_OFFSET; + commitPos.set(commit2.id, { x: x5, y: y6 }); } - if (tmpLayers || allowLazyQueueing) { - self2.queueLayer(layer, ele); - } else { - self2.drawEleInLayer(layer, ele, lvl, pxRatio); - } - layer.eles.push(ele); - caches[lvl] = layer; - } - if (tmpLayers) { - return tmpLayers; - } - if (allowLazyQueueing) { - return null; - } - return layers; - }; - LTCp.getEleLevelForLayerLevel = function(lvl, pxRatio) { - return lvl; - }; - LTCp.drawEleInLayer = function(layer, ele, lvl, pxRatio) { - var self2 = this; - var r2 = this.renderer; - var context = layer.context; - var bb = ele.boundingBox(); - if (bb.w === 0 || bb.h === 0 || !ele.visible()) { - return; - } - lvl = self2.getEleLevelForLayerLevel(lvl, pxRatio); - { - r2.setImgSmoothing(context, false); + }); + }, "setParallelBTPos"); + findClosestParentPos = /* @__PURE__ */ __name((commit2) => { + const closestParent = findClosestParent(commit2.parents.filter((p3) => p3 !== null)); + if (!closestParent) { + throw new Error(`Closest parent not found for commit ${commit2.id}`); } - { - r2.drawCachedElement(context, ele, null, null, lvl, useHighQualityEleTxrReqs); + const closestParentPos = commitPos.get(closestParent)?.y; + if (closestParentPos === void 0) { + throw new Error(`Closest parent position not found for commit ${commit2.id}`); } - { - r2.setImgSmoothing(context, true); + return closestParentPos; + }, "findClosestParentPos"); + calculateCommitPosition = /* @__PURE__ */ __name((commit2) => { + const closestParentPos = findClosestParentPos(commit2); + return closestParentPos + COMMIT_STEP; + }, "calculateCommitPosition"); + setCommitPosition = /* @__PURE__ */ __name((commit2, curPos) => { + const branch2 = branchPos.get(commit2.branch); + if (!branch2) { + throw new Error(`Branch not found for commit ${commit2.id}`); } - }; - LTCp.levelIsComplete = function(lvl, eles) { - var self2 = this; - var layers = self2.layersByLevel[lvl]; - if (!layers || layers.length === 0) { - return false; + const x5 = branch2.pos; + const y6 = curPos + LAYOUT_OFFSET; + commitPos.set(commit2.id, { x: x5, y: y6 }); + return { x: x5, y: y6 }; + }, "setCommitPosition"); + setRootPosition = /* @__PURE__ */ __name((commit2, curPos, defaultPos2) => { + const branch2 = branchPos.get(commit2.branch); + if (!branch2) { + throw new Error(`Branch not found for commit ${commit2.id}`); } - var numElesInLayers = 0; - for (var i2 = 0; i2 < layers.length; i2++) { - var layer = layers[i2]; - if (layer.reqs > 0) { - return false; + const y6 = curPos + defaultPos2; + const x5 = branch2.pos; + commitPos.set(commit2.id, { x: x5, y: y6 }); + }, "setRootPosition"); + drawCommitBullet = /* @__PURE__ */ __name((gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType) => { + if (commitSymbolType === commitType.HIGHLIGHT) { + gBullets.append("rect").attr("x", commitPosition.x - 10).attr("y", commitPosition.y - 10).attr("width", 20).attr("height", 20).attr( + "class", + `commit ${commit2.id} commit-highlight${branchIndex % THEME_COLOR_LIMIT} ${typeClass}-outer` + ); + gBullets.append("rect").attr("x", commitPosition.x - 6).attr("y", commitPosition.y - 6).attr("width", 12).attr("height", 12).attr( + "class", + `commit ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT} ${typeClass}-inner` + ); + } else if (commitSymbolType === commitType.CHERRY_PICK) { + gBullets.append("circle").attr("cx", commitPosition.x).attr("cy", commitPosition.y).attr("r", 10).attr("class", `commit ${commit2.id} ${typeClass}`); + gBullets.append("circle").attr("cx", commitPosition.x - 3).attr("cy", commitPosition.y + 2).attr("r", 2.75).attr("fill", "#fff").attr("class", `commit ${commit2.id} ${typeClass}`); + gBullets.append("circle").attr("cx", commitPosition.x + 3).attr("cy", commitPosition.y + 2).attr("r", 2.75).attr("fill", "#fff").attr("class", `commit ${commit2.id} ${typeClass}`); + gBullets.append("line").attr("x1", commitPosition.x + 3).attr("y1", commitPosition.y + 1).attr("x2", commitPosition.x).attr("y2", commitPosition.y - 5).attr("stroke", "#fff").attr("class", `commit ${commit2.id} ${typeClass}`); + gBullets.append("line").attr("x1", commitPosition.x - 3).attr("y1", commitPosition.y + 1).attr("x2", commitPosition.x).attr("y2", commitPosition.y - 5).attr("stroke", "#fff").attr("class", `commit ${commit2.id} ${typeClass}`); + } else { + const circle6 = gBullets.append("circle"); + circle6.attr("cx", commitPosition.x); + circle6.attr("cy", commitPosition.y); + circle6.attr("r", commit2.type === commitType.MERGE ? 9 : 10); + circle6.attr("class", `commit ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}`); + if (commitSymbolType === commitType.MERGE) { + const circle22 = gBullets.append("circle"); + circle22.attr("cx", commitPosition.x); + circle22.attr("cy", commitPosition.y); + circle22.attr("r", 6); + circle22.attr( + "class", + `commit ${typeClass} ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}` + ); } - if (layer.invalid) { - return false; + if (commitSymbolType === commitType.REVERSE) { + const cross3 = gBullets.append("path"); + cross3.attr( + "d", + `M ${commitPosition.x - 5},${commitPosition.y - 5}L${commitPosition.x + 5},${commitPosition.y + 5}M${commitPosition.x - 5},${commitPosition.y + 5}L${commitPosition.x + 5},${commitPosition.y - 5}` + ).attr("class", `commit ${typeClass} ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}`); } - numElesInLayers += layer.eles.length; - } - if (numElesInLayers !== eles.length) { - return false; - } - return true; - }; - LTCp.validateLayersElesOrdering = function(lvl, eles) { - var layers = this.layersByLevel[lvl]; - if (!layers) { - return; } - for (var i2 = 0; i2 < layers.length; i2++) { - var layer = layers[i2]; - var offset = -1; - for (var j2 = 0; j2 < eles.length; j2++) { - if (layer.eles[0] === eles[j2]) { - offset = j2; - break; + }, "drawCommitBullet"); + drawCommitLabel = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos) => { + if (commit2.type !== commitType.CHERRY_PICK && (commit2.customId && commit2.type === commitType.MERGE || commit2.type !== commitType.MERGE) && DEFAULT_GITGRAPH_CONFIG2?.showCommitLabel) { + const wrapper = gLabels.append("g"); + const labelBkg = wrapper.insert("rect").attr("class", "commit-label-bkg"); + const text4 = wrapper.append("text").attr("x", pos).attr("y", commitPosition.y + 25).attr("class", "commit-label").text(commit2.id); + const bbox = text4.node()?.getBBox(); + if (bbox) { + labelBkg.attr("x", commitPosition.posWithOffset - bbox.width / 2 - PY).attr("y", commitPosition.y + 13.5).attr("width", bbox.width + 2 * PY).attr("height", bbox.height + 2 * PY); + if (dir === "TB" || dir === "BT") { + labelBkg.attr("x", commitPosition.x - (bbox.width + 4 * PX + 5)).attr("y", commitPosition.y - 12); + text4.attr("x", commitPosition.x - (bbox.width + 4 * PX)).attr("y", commitPosition.y + bbox.height - 12); + } else { + text4.attr("x", commitPosition.posWithOffset - bbox.width / 2); } - } - if (offset < 0) { - this.invalidateLayer(layer); - continue; - } - var o2 = offset; - for (var j2 = 0; j2 < layer.eles.length; j2++) { - if (layer.eles[j2] !== eles[o2 + j2]) { - this.invalidateLayer(layer); - break; + if (DEFAULT_GITGRAPH_CONFIG2.rotateCommitLabel) { + if (dir === "TB" || dir === "BT") { + text4.attr( + "transform", + "rotate(-45, " + commitPosition.x + ", " + commitPosition.y + ")" + ); + labelBkg.attr( + "transform", + "rotate(-45, " + commitPosition.x + ", " + commitPosition.y + ")" + ); + } else { + const r_x = -7.5 - (bbox.width + 10) / 25 * 9.5; + const r_y = 10 + bbox.width / 25 * 8.5; + wrapper.attr( + "transform", + "translate(" + r_x + ", " + r_y + ") rotate(-45, " + pos + ", " + commitPosition.y + ")" + ); + } } } } - }; - LTCp.updateElementsInLayers = function(eles, update2) { - var self2 = this; - var isEles = element(eles[0]); - for (var i2 = 0; i2 < eles.length; i2++) { - var req = isEles ? null : eles[i2]; - var ele = isEles ? eles[i2] : eles[i2].ele; - var rs = ele._private.rscratch; - var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; - for (var l2 = minLvl; l2 <= maxLvl; l2++) { - var layer = caches[l2]; - if (!layer) { - continue; - } - if (req && self2.getEleLevelForLayerLevel(layer.level) !== req.level) { - continue; + }, "drawCommitLabel"); + drawCommitTags = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos) => { + if (commit2.tags.length > 0) { + let yOffset = 0; + let maxTagBboxWidth = 0; + let maxTagBboxHeight = 0; + const tagElements = []; + for (const tagValue of commit2.tags.reverse()) { + const rect3 = gLabels.insert("polygon"); + const hole = gLabels.append("circle"); + const tag = gLabels.append("text").attr("y", commitPosition.y - 16 - yOffset).attr("class", "tag-label").text(tagValue); + const tagBbox = tag.node()?.getBBox(); + if (!tagBbox) { + throw new Error("Tag bbox not found"); } - update2(layer, ele, req); + maxTagBboxWidth = Math.max(maxTagBboxWidth, tagBbox.width); + maxTagBboxHeight = Math.max(maxTagBboxHeight, tagBbox.height); + tag.attr("x", commitPosition.posWithOffset - tagBbox.width / 2); + tagElements.push({ + tag, + hole, + rect: rect3, + yOffset + }); + yOffset += 20; } - } - }; - LTCp.haveLayers = function() { - var self2 = this; - var haveLayers = false; - for (var l2 = minLvl; l2 <= maxLvl; l2++) { - var layers = self2.layersByLevel[l2]; - if (layers && layers.length > 0) { - haveLayers = true; - break; + for (const { tag, hole, rect: rect3, yOffset: yOffset2 } of tagElements) { + const h22 = maxTagBboxHeight / 2; + const ly = commitPosition.y - 19.2 - yOffset2; + rect3.attr("class", "tag-label-bkg").attr( + "points", + ` + ${pos - maxTagBboxWidth / 2 - PX / 2},${ly + PY} + ${pos - maxTagBboxWidth / 2 - PX / 2},${ly - PY} + ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly - h22 - PY} + ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly - h22 - PY} + ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly + h22 + PY} + ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly + h22 + PY}` + ); + hole.attr("cy", ly).attr("cx", pos - maxTagBboxWidth / 2 + PX / 2).attr("r", 1.5).attr("class", "tag-hole"); + if (dir === "TB" || dir === "BT") { + const yOrigin = pos + yOffset2; + rect3.attr("class", "tag-label-bkg").attr( + "points", + ` + ${commitPosition.x},${yOrigin + 2} + ${commitPosition.x},${yOrigin - 2} + ${commitPosition.x + LAYOUT_OFFSET},${yOrigin - h22 - 2} + ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin - h22 - 2} + ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin + h22 + 2} + ${commitPosition.x + LAYOUT_OFFSET},${yOrigin + h22 + 2}` + ).attr("transform", "translate(12,12) rotate(45, " + commitPosition.x + "," + pos + ")"); + hole.attr("cx", commitPosition.x + PX / 2).attr("cy", yOrigin).attr("transform", "translate(12,12) rotate(45, " + commitPosition.x + "," + pos + ")"); + tag.attr("x", commitPosition.x + 5).attr("y", yOrigin + 3).attr("transform", "translate(14,14) rotate(45, " + commitPosition.x + "," + pos + ")"); + } } } - return haveLayers; - }; - LTCp.invalidateElements = function(eles) { - var self2 = this; - if (eles.length === 0) { - return; - } - self2.lastInvalidationTime = performanceNow(); - if (eles.length === 0 || !self2.haveLayers()) { - return; - } - self2.updateElementsInLayers(eles, /* @__PURE__ */ __name(function invalAssocLayers(layer, ele, req) { - self2.invalidateLayer(layer); - }, "invalAssocLayers")); - }; - LTCp.invalidateLayer = function(layer) { - this.lastInvalidationTime = performanceNow(); - if (layer.invalid) { - return; - } - var lvl = layer.level; - var eles = layer.eles; - var layers = this.layersByLevel[lvl]; - removeFromArray(layers, layer); - layer.elesQueue = []; - layer.invalid = true; - if (layer.replacement) { - layer.replacement.invalid = true; - } - for (var i2 = 0; i2 < eles.length; i2++) { - var caches = eles[i2]._private.rscratch.imgLayerCaches; - if (caches) { - caches[lvl] = null; - } + }, "drawCommitTags"); + getCommitClassType = /* @__PURE__ */ __name((commit2) => { + const commitSymbolType = commit2.customType ?? commit2.type; + switch (commitSymbolType) { + case commitType.NORMAL: + return "commit-normal"; + case commitType.REVERSE: + return "commit-reverse"; + case commitType.HIGHLIGHT: + return "commit-highlight"; + case commitType.MERGE: + return "commit-merge"; + case commitType.CHERRY_PICK: + return "commit-cherry-pick"; + default: + return "commit-normal"; } - }; - LTCp.refineElementTextures = function(eles) { - var self2 = this; - self2.updateElementsInLayers(eles, /* @__PURE__ */ __name(function refineEachEle(layer, ele, req) { - var rLyr = layer.replacement; - if (!rLyr) { - rLyr = layer.replacement = self2.makeLayer(layer.bb, layer.level); - rLyr.replaces = layer; - rLyr.eles = layer.eles; - } - if (!rLyr.reqs) { - for (var i2 = 0; i2 < rLyr.eles.length; i2++) { - self2.queueLayer(rLyr, rLyr.eles[i2]); + }, "getCommitClassType"); + calculatePosition = /* @__PURE__ */ __name((commit2, dir2, pos, commitPos2) => { + const defaultCommitPosition = { x: 0, y: 0 }; + if (commit2.parents.length > 0) { + const closestParent = findClosestParent(commit2.parents); + if (closestParent) { + const parentPosition = commitPos2.get(closestParent) ?? defaultCommitPosition; + if (dir2 === "TB") { + return parentPosition.y + COMMIT_STEP; + } else if (dir2 === "BT") { + const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition; + return currentPosition.y - COMMIT_STEP; + } else { + return parentPosition.x + COMMIT_STEP; } } - }, "refineEachEle")); - }; - LTCp.enqueueElementRefinement = function(ele) { - this.eleTxrDeqs.merge(ele); - this.scheduleElementRefinement(); - }; - LTCp.queueLayer = function(layer, ele) { - var self2 = this; - var q2 = self2.layersQueue; - var elesQ = layer.elesQueue; - var hasId = elesQ.hasId = elesQ.hasId || {}; - if (layer.replacement) { - return; - } - if (ele) { - if (hasId[ele.id()]) { - return; + } else { + if (dir2 === "TB") { + return defaultPos; + } else if (dir2 === "BT") { + const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition; + return currentPosition.y - COMMIT_STEP; + } else { + return 0; } - elesQ.push(ele); - hasId[ele.id()] = true; } - if (layer.reqs) { - layer.reqs++; - q2.updateItem(layer); - } else { - layer.reqs = 1; - q2.push(layer); + return 0; + }, "calculatePosition"); + getCommitPosition = /* @__PURE__ */ __name((commit2, pos, isParallelCommits) => { + const posWithOffset = dir === "BT" && isParallelCommits ? pos : pos + LAYOUT_OFFSET; + const y6 = dir === "TB" || dir === "BT" ? posWithOffset : branchPos.get(commit2.branch)?.pos; + const x5 = dir === "TB" || dir === "BT" ? branchPos.get(commit2.branch)?.pos : posWithOffset; + if (x5 === void 0 || y6 === void 0) { + throw new Error(`Position were undefined for commit ${commit2.id}`); } - }; - LTCp.dequeue = function(pxRatio) { - var self2 = this; - var q2 = self2.layersQueue; - var deqd = []; - var eleDeqs = 0; - while (eleDeqs < maxDeqSize) { - if (q2.size() === 0) { - break; - } - var layer = q2.peek(); - if (layer.replacement) { - q2.pop(); - continue; - } - if (layer.replaces && layer !== layer.replaces.replacement) { - q2.pop(); - continue; + return { x: x5, y: y6, posWithOffset }; + }, "getCommitPosition"); + drawCommits = /* @__PURE__ */ __name((svg2, commits, modifyGraph) => { + if (!DEFAULT_GITGRAPH_CONFIG2) { + throw new Error("GitGraph config not found"); + } + const gBullets = svg2.append("g").attr("class", "commit-bullets"); + const gLabels = svg2.append("g").attr("class", "commit-labels"); + let pos = dir === "TB" || dir === "BT" ? defaultPos : 0; + const keys2 = [...commits.keys()]; + const isParallelCommits = DEFAULT_GITGRAPH_CONFIG2?.parallelCommits ?? false; + const sortKeys = /* @__PURE__ */ __name((a2, b3) => { + const seqA = commits.get(a2)?.seq; + const seqB = commits.get(b3)?.seq; + return seqA !== void 0 && seqB !== void 0 ? seqA - seqB : 0; + }, "sortKeys"); + let sortedKeys = keys2.sort(sortKeys); + if (dir === "BT") { + if (isParallelCommits) { + setParallelBTPos(sortedKeys, commits, pos); } - if (layer.invalid) { - q2.pop(); - continue; + sortedKeys = sortedKeys.reverse(); + } + sortedKeys.forEach((key) => { + const commit2 = commits.get(key); + if (!commit2) { + throw new Error(`Commit not found for key ${key}`); } - var ele = layer.elesQueue.shift(); - if (ele) { - self2.drawEleInLayer(layer, ele, layer.level, pxRatio); - eleDeqs++; + if (isParallelCommits) { + pos = calculatePosition(commit2, dir, pos, commitPos); } - if (deqd.length === 0) { - deqd.push(true); + const commitPosition = getCommitPosition(commit2, pos, isParallelCommits); + if (modifyGraph) { + const typeClass = getCommitClassType(commit2); + const commitSymbolType = commit2.customType ?? commit2.type; + const branchIndex = branchPos.get(commit2.branch)?.index ?? 0; + drawCommitBullet(gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType); + drawCommitLabel(gLabels, commit2, commitPosition, pos); + drawCommitTags(gLabels, commit2, commitPosition, pos); } - if (layer.elesQueue.length === 0) { - q2.pop(); - layer.reqs = 0; - if (layer.replaces) { - self2.applyLayerReplacement(layer); - } - self2.requestRedraw(); + if (dir === "TB" || dir === "BT") { + commitPos.set(commit2.id, { x: commitPosition.x, y: commitPosition.posWithOffset }); + } else { + commitPos.set(commit2.id, { x: commitPosition.posWithOffset, y: commitPosition.y }); } - } - return deqd; - }; - LTCp.applyLayerReplacement = function(layer) { - var self2 = this; - var layersInLevel = self2.layersByLevel[layer.level]; - var replaced = layer.replaces; - var index = layersInLevel.indexOf(replaced); - if (index < 0 || replaced.invalid) { - return; - } - layersInLevel[index] = layer; - for (var i2 = 0; i2 < layer.eles.length; i2++) { - var _p = layer.eles[i2]._private; - var cache3 = _p.imgLayerCaches = _p.imgLayerCaches || {}; - if (cache3) { - cache3[layer.level] = layer; + pos = dir === "BT" && isParallelCommits ? pos + COMMIT_STEP : pos + COMMIT_STEP + LAYOUT_OFFSET; + if (pos > maxPos) { + maxPos = pos; } + }); + }, "drawCommits"); + shouldRerouteArrow = /* @__PURE__ */ __name((commitA, commitB, p1, p22, allCommits) => { + const commitBIsFurthest = dir === "TB" || dir === "BT" ? p1.x < p22.x : p1.y < p22.y; + const branchToGetCurve = commitBIsFurthest ? commitB.branch : commitA.branch; + const isOnBranchToGetCurve = /* @__PURE__ */ __name((x5) => x5.branch === branchToGetCurve, "isOnBranchToGetCurve"); + const isBetweenCommits = /* @__PURE__ */ __name((x5) => x5.seq > commitA.seq && x5.seq < commitB.seq, "isBetweenCommits"); + return [...allCommits.values()].some((commitX) => { + return isBetweenCommits(commitX) && isOnBranchToGetCurve(commitX); + }); + }, "shouldRerouteArrow"); + findLane = /* @__PURE__ */ __name((y1, y22, depth = 0) => { + const candidate = y1 + Math.abs(y1 - y22) / 2; + if (depth > 5) { + return candidate; } - self2.requestRedraw(); - }; - LTCp.requestRedraw = debounce_1(function() { - var r2 = this.renderer; - r2.redrawHint("eles", true); - r2.redrawHint("drag", true); - r2.redraw(); - }, 100); - LTCp.setupDequeueing = defs.setupDequeueing({ - deqRedrawThreshold, - deqCost, - deqAvgCost, - deqNoDrawCost, - deqFastCost, - deq: /* @__PURE__ */ __name(function deq2(self2, pxRatio) { - return self2.dequeue(pxRatio); - }, "deq"), - onDeqd: noop$1, - shouldRedraw: trueify, - priority: /* @__PURE__ */ __name(function priority2(self2) { - return self2.renderer.beforeRenderPriorities.lyrTxrDeq; - }, "priority") - }); - CRp$b = {}; - __name(polygon, "polygon"); - __name(triangleBackcurve, "triangleBackcurve"); - __name(triangleTee, "triangleTee"); - __name(circleTriangle, "circleTriangle"); - __name(circle3, "circle"); - CRp$b.arrowShapeImpl = function(name) { - return (impl || (impl = { - "polygon": polygon, - "triangle-backcurve": triangleBackcurve, - "triangle-tee": triangleTee, - "circle-triangle": circleTriangle, - "triangle-cross": triangleTee, - "circle": circle3 - }))[name]; - }; - CRp$a = {}; - CRp$a.drawElement = function(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity) { - var r2 = this; - if (ele.isNode()) { - r2.drawNode(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); - } else { - r2.drawEdge(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); - } - }; - CRp$a.drawElementOverlay = function(context, ele) { - var r2 = this; - if (ele.isNode()) { - r2.drawNodeOverlay(context, ele); - } else { - r2.drawEdgeOverlay(context, ele); + const ok = lanes.every((lane) => Math.abs(lane - candidate) >= 10); + if (ok) { + lanes.push(candidate); + return candidate; } - }; - CRp$a.drawElementUnderlay = function(context, ele) { - var r2 = this; - if (ele.isNode()) { - r2.drawNodeUnderlay(context, ele); - } else { - r2.drawEdgeUnderlay(context, ele); + const diff2 = Math.abs(y1 - y22); + return findLane(y1, y22 - diff2 / 5, depth + 1); + }, "findLane"); + drawArrow = /* @__PURE__ */ __name((svg2, commitA, commitB, allCommits) => { + const p1 = commitPos.get(commitA.id); + const p22 = commitPos.get(commitB.id); + if (p1 === void 0 || p22 === void 0) { + throw new Error(`Commit positions not found for commits ${commitA.id} and ${commitB.id}`); } - }; - CRp$a.drawCachedElementPortion = function(context, ele, eleTxrCache, pxRatio, lvl, reason, getRotation, getOpacity3) { - var r2 = this; - var bb = eleTxrCache.getBoundingBox(ele); - if (bb.w === 0 || bb.h === 0) { - return; + const arrowNeedsRerouting = shouldRerouteArrow(commitA, commitB, p1, p22, allCommits); + let arc = ""; + let arc2 = ""; + let radius2 = 0; + let offset = 0; + let colorClassNum = branchPos.get(commitB.branch)?.index; + if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { + colorClassNum = branchPos.get(commitA.branch)?.index; } - var eleCache = eleTxrCache.getElement(ele, bb, pxRatio, lvl, reason); - if (eleCache != null) { - var opacity = getOpacity3(r2, ele); - if (opacity === 0) { - return; - } - var theta = getRotation(r2, ele); - var x1 = bb.x1, y1 = bb.y1, w3 = bb.w, h2 = bb.h; - var x5, y5, sx, sy, smooth; - if (theta !== 0) { - var rotPt = eleTxrCache.getRotationPoint(ele); - sx = rotPt.x; - sy = rotPt.y; - context.translate(sx, sy); - context.rotate(theta); - smooth = r2.getImgSmoothing(context); - if (!smooth) { - r2.setImgSmoothing(context, true); + let lineDef; + if (arrowNeedsRerouting) { + arc = "A 10 10, 0, 0, 0,"; + arc2 = "A 10 10, 0, 0, 1,"; + radius2 = 10; + offset = 10; + const lineY = p1.y < p22.y ? findLane(p1.y, p22.y) : findLane(p22.y, p1.y); + const lineX = p1.x < p22.x ? findLane(p1.x, p22.x) : findLane(p22.x, p1.x); + if (dir === "TB") { + if (p1.x < p22.x) { + lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius2} ${p1.y} ${arc2} ${lineX} ${p1.y + offset} L ${lineX} ${p22.y - radius2} ${arc} ${lineX + offset} ${p22.y} L ${p22.x} ${p22.y}`; + } else { + colorClassNum = branchPos.get(commitA.branch)?.index; + lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius2} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p22.y - radius2} ${arc2} ${lineX - offset} ${p22.y} L ${p22.x} ${p22.y}`; + } + } else if (dir === "BT") { + if (p1.x < p22.x) { + lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius2} ${p1.y} ${arc} ${lineX} ${p1.y - offset} L ${lineX} ${p22.y + radius2} ${arc2} ${lineX + offset} ${p22.y} L ${p22.x} ${p22.y}`; + } else { + colorClassNum = branchPos.get(commitA.branch)?.index; + lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius2} ${p1.y} ${arc2} ${lineX} ${p1.y - offset} L ${lineX} ${p22.y + radius2} ${arc} ${lineX - offset} ${p22.y} L ${p22.x} ${p22.y}`; } - var off = eleTxrCache.getRotationOffset(ele); - x5 = off.x; - y5 = off.y; } else { - x5 = x1; - y5 = y1; - } - var oldGlobalAlpha; - if (opacity !== 1) { - oldGlobalAlpha = context.globalAlpha; - context.globalAlpha = oldGlobalAlpha * opacity; - } - context.drawImage(eleCache.texture.canvas, eleCache.x, 0, eleCache.width, eleCache.height, x5, y5, w3, h2); - if (opacity !== 1) { - context.globalAlpha = oldGlobalAlpha; - } - if (theta !== 0) { - context.rotate(-theta); - context.translate(-sx, -sy); - if (!smooth) { - r2.setImgSmoothing(context, false); + if (p1.y < p22.y) { + lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius2} ${arc} ${p1.x + offset} ${lineY} L ${p22.x - radius2} ${lineY} ${arc2} ${p22.x} ${lineY + offset} L ${p22.x} ${p22.y}`; + } else { + colorClassNum = branchPos.get(commitA.branch)?.index; + lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius2} ${arc2} ${p1.x + offset} ${lineY} L ${p22.x - radius2} ${lineY} ${arc} ${p22.x} ${lineY - offset} L ${p22.x} ${p22.y}`; } } } else { - eleTxrCache.drawElement(context, ele); - } - }; - getZeroRotation = /* @__PURE__ */ __name(function getZeroRotation2() { - return 0; - }, "getZeroRotation"); - getLabelRotation = /* @__PURE__ */ __name(function getLabelRotation2(r2, ele) { - return r2.getTextAngle(ele, null); - }, "getLabelRotation"); - getSourceLabelRotation = /* @__PURE__ */ __name(function getSourceLabelRotation2(r2, ele) { - return r2.getTextAngle(ele, "source"); - }, "getSourceLabelRotation"); - getTargetLabelRotation = /* @__PURE__ */ __name(function getTargetLabelRotation2(r2, ele) { - return r2.getTextAngle(ele, "target"); - }, "getTargetLabelRotation"); - getOpacity = /* @__PURE__ */ __name(function getOpacity2(r2, ele) { - return ele.effectiveOpacity(); - }, "getOpacity"); - getTextOpacity = /* @__PURE__ */ __name(function getTextOpacity2(e3, ele) { - return ele.pstyle("text-opacity").pfValue * ele.effectiveOpacity(); - }, "getTextOpacity"); - CRp$a.drawCachedElement = function(context, ele, pxRatio, extent2, lvl, requestHighQuality) { - var r2 = this; - var _r$data = r2.data, eleTxrCache = _r$data.eleTxrCache, lblTxrCache = _r$data.lblTxrCache, slbTxrCache = _r$data.slbTxrCache, tlbTxrCache = _r$data.tlbTxrCache; - var bb = ele.boundingBox(); - var reason = requestHighQuality === true ? eleTxrCache.reasons.highQuality : null; - if (bb.w === 0 || bb.h === 0 || !ele.visible()) { - return; - } - if (!extent2 || boundingBoxesIntersect(bb, extent2)) { - var isEdge2 = ele.isEdge(); - var badLine = ele.element()._private.rscratch.badLine; - r2.drawElementUnderlay(context, ele); - r2.drawCachedElementPortion(context, ele, eleTxrCache, pxRatio, lvl, reason, getZeroRotation, getOpacity); - if (!isEdge2 || !badLine) { - r2.drawCachedElementPortion(context, ele, lblTxrCache, pxRatio, lvl, reason, getLabelRotation, getTextOpacity); - } - if (isEdge2 && !badLine) { - r2.drawCachedElementPortion(context, ele, slbTxrCache, pxRatio, lvl, reason, getSourceLabelRotation, getTextOpacity); - r2.drawCachedElementPortion(context, ele, tlbTxrCache, pxRatio, lvl, reason, getTargetLabelRotation, getTextOpacity); - } - r2.drawElementOverlay(context, ele); - } - }; - CRp$a.drawElements = function(context, eles) { - var r2 = this; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - r2.drawElement(context, ele); - } - }; - CRp$a.drawCachedElements = function(context, eles, pxRatio, extent2) { - var r2 = this; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - r2.drawCachedElement(context, ele, pxRatio, extent2); - } - }; - CRp$a.drawCachedNodes = function(context, eles, pxRatio, extent2) { - var r2 = this; - for (var i2 = 0; i2 < eles.length; i2++) { - var ele = eles[i2]; - if (!ele.isNode()) { - continue; - } - r2.drawCachedElement(context, ele, pxRatio, extent2); - } - }; - CRp$a.drawLayeredElements = function(context, eles, pxRatio, extent2) { - var r2 = this; - var layers = r2.data.lyrTxrCache.getLayers(eles, pxRatio); - if (layers) { - for (var i2 = 0; i2 < layers.length; i2++) { - var layer = layers[i2]; - var bb = layer.bb; - if (bb.w === 0 || bb.h === 0) { - continue; - } - context.drawImage(layer.canvas, bb.x1, bb.y1, bb.w, bb.h); - } - } else { - r2.drawCachedElements(context, eles, pxRatio, extent2); - } - }; - CRp$9 = {}; - CRp$9.drawEdge = function(context, edge, shiftToOriginWithBb) { - var drawLabel4 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; - var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true; - var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : true; - var r2 = this; - var rs = edge._private.rscratch; - if (shouldDrawOpacity && !edge.visible()) { - return; - } - if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) { - return; - } - var bb; - if (shiftToOriginWithBb) { - bb = shiftToOriginWithBb; - context.translate(-bb.x1, -bb.y1); - } - var opacity = shouldDrawOpacity ? edge.pstyle("opacity").value : 1; - var lineOpacity = shouldDrawOpacity ? edge.pstyle("line-opacity").value : 1; - var curveStyle = edge.pstyle("curve-style").value; - var lineStyle = edge.pstyle("line-style").value; - var edgeWidth = edge.pstyle("width").pfValue; - var lineCap = edge.pstyle("line-cap").value; - var lineOutlineWidth = edge.pstyle("line-outline-width").value; - var lineOutlineColor = edge.pstyle("line-outline-color").value; - var effectiveLineOpacity = opacity * lineOpacity; - var effectiveArrowOpacity = opacity * lineOpacity; - var drawLine = /* @__PURE__ */ __name(function drawLine2() { - var strokeOpacity = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : effectiveLineOpacity; - if (curveStyle === "straight-triangle") { - r2.eleStrokeStyle(context, edge, strokeOpacity); - r2.drawEdgeTrianglePath(edge, context, rs.allpts); - } else { - context.lineWidth = edgeWidth; - context.lineCap = lineCap; - r2.eleStrokeStyle(context, edge, strokeOpacity); - r2.drawEdgePath(edge, context, rs.allpts, lineStyle); - context.lineCap = "butt"; - } - }, "drawLine"); - var drawLineOutline = /* @__PURE__ */ __name(function drawLineOutline2() { - var strokeOpacity = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : effectiveLineOpacity; - context.lineWidth = edgeWidth + lineOutlineWidth; - context.lineCap = lineCap; - if (lineOutlineWidth > 0) { - r2.colorStrokeStyle(context, lineOutlineColor[0], lineOutlineColor[1], lineOutlineColor[2], strokeOpacity); - } else { - context.lineCap = "butt"; - return; - } - if (curveStyle === "straight-triangle") { - r2.drawEdgeTrianglePath(edge, context, rs.allpts); - } else { - r2.drawEdgePath(edge, context, rs.allpts, lineStyle); - context.lineCap = "butt"; - } - }, "drawLineOutline"); - var drawOverlay = /* @__PURE__ */ __name(function drawOverlay2() { - if (!shouldDrawOverlay) { - return; - } - r2.drawEdgeOverlay(context, edge); - }, "drawOverlay"); - var drawUnderlay = /* @__PURE__ */ __name(function drawUnderlay2() { - if (!shouldDrawOverlay) { - return; - } - r2.drawEdgeUnderlay(context, edge); - }, "drawUnderlay"); - var drawArrows2 = /* @__PURE__ */ __name(function drawArrows3() { - var arrowOpacity = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : effectiveArrowOpacity; - r2.drawArrowheads(context, edge, arrowOpacity); - }, "drawArrows"); - var drawText6 = /* @__PURE__ */ __name(function drawText7() { - r2.drawElementText(context, edge, null, drawLabel4); - }, "drawText"); - context.lineJoin = "round"; - var ghost = edge.pstyle("ghost").value === "yes"; - if (ghost) { - var gx = edge.pstyle("ghost-offset-x").pfValue; - var gy = edge.pstyle("ghost-offset-y").pfValue; - var ghostOpacity = edge.pstyle("ghost-opacity").value; - var effectiveGhostOpacity = effectiveLineOpacity * ghostOpacity; - context.translate(gx, gy); - drawLine(effectiveGhostOpacity); - drawArrows2(effectiveGhostOpacity); - context.translate(-gx, -gy); - } else { - drawLineOutline(); - } - drawUnderlay(); - drawLine(); - drawArrows2(); - drawOverlay(); - drawText6(); - if (shiftToOriginWithBb) { - context.translate(bb.x1, bb.y1); - } - }; - drawEdgeOverlayUnderlay = /* @__PURE__ */ __name(function drawEdgeOverlayUnderlay2(overlayOrUnderlay) { - if (!["overlay", "underlay"].includes(overlayOrUnderlay)) { - throw new Error("Invalid state"); - } - return function(context, edge) { - if (!edge.visible()) { - return; - } - var opacity = edge.pstyle("".concat(overlayOrUnderlay, "-opacity")).value; - if (opacity === 0) { - return; - } - var r2 = this; - var usePaths = r2.usePaths(); - var rs = edge._private.rscratch; - var padding2 = edge.pstyle("".concat(overlayOrUnderlay, "-padding")).pfValue; - var width3 = 2 * padding2; - var color2 = edge.pstyle("".concat(overlayOrUnderlay, "-color")).value; - context.lineWidth = width3; - if (rs.edgeType === "self" && !usePaths) { - context.lineCap = "butt"; - } else { - context.lineCap = "round"; - } - r2.colorStrokeStyle(context, color2[0], color2[1], color2[2], opacity); - r2.drawEdgePath(edge, context, rs.allpts, "solid"); - }; - }, "drawEdgeOverlayUnderlay"); - CRp$9.drawEdgeOverlay = drawEdgeOverlayUnderlay("overlay"); - CRp$9.drawEdgeUnderlay = drawEdgeOverlayUnderlay("underlay"); - CRp$9.drawEdgePath = function(edge, context, pts2, type3) { - var rs = edge._private.rscratch; - var canvasCxt = context; - var path4; - var pathCacheHit = false; - var usePaths = this.usePaths(); - var lineDashPattern = edge.pstyle("line-dash-pattern").pfValue; - var lineDashOffset = edge.pstyle("line-dash-offset").pfValue; - if (usePaths) { - var pathCacheKey = pts2.join("$"); - var keyMatches = rs.pathCacheKey && rs.pathCacheKey === pathCacheKey; - if (keyMatches) { - path4 = context = rs.pathCache; - pathCacheHit = true; - } else { - path4 = context = new Path2D(); - rs.pathCacheKey = pathCacheKey; - rs.pathCache = path4; - } - } - if (canvasCxt.setLineDash) { - switch (type3) { - case "dotted": - canvasCxt.setLineDash([1, 1]); - break; - case "dashed": - canvasCxt.setLineDash(lineDashPattern); - canvasCxt.lineDashOffset = lineDashOffset; - break; - case "solid": - canvasCxt.setLineDash([]); - break; - } - } - if (!pathCacheHit && !rs.badLine) { - if (context.beginPath) { - context.beginPath(); - } - context.moveTo(pts2[0], pts2[1]); - switch (rs.edgeType) { - case "bezier": - case "self": - case "compound": - case "multibezier": - for (var i2 = 2; i2 + 3 < pts2.length; i2 += 4) { - context.quadraticCurveTo(pts2[i2], pts2[i2 + 1], pts2[i2 + 2], pts2[i2 + 3]); - } - break; - case "straight": - case "haystack": - for (var _i = 2; _i + 1 < pts2.length; _i += 2) { - context.lineTo(pts2[_i], pts2[_i + 1]); + arc = "A 20 20, 0, 0, 0,"; + arc2 = "A 20 20, 0, 0, 1,"; + radius2 = 20; + offset = 20; + if (dir === "TB") { + if (p1.x < p22.x) { + if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { + lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y - radius2} ${arc} ${p1.x + offset} ${p22.y} L ${p22.x} ${p22.y}`; + } else { + lineDef = `M ${p1.x} ${p1.y} L ${p22.x - radius2} ${p1.y} ${arc2} ${p22.x} ${p1.y + offset} L ${p22.x} ${p22.y}`; } - break; - case "segments": - if (rs.isRound) { - var _iterator = _createForOfIteratorHelper(rs.roundCorners), _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done; ) { - var corner = _step.value; - drawPreparedRoundCorner(context, corner); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - context.lineTo(pts2[pts2.length - 2], pts2[pts2.length - 1]); + } + if (p1.x > p22.x) { + arc = "A 20 20, 0, 0, 0,"; + arc2 = "A 20 20, 0, 0, 1,"; + radius2 = 20; + offset = 20; + if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { + lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y - radius2} ${arc2} ${p1.x - offset} ${p22.y} L ${p22.x} ${p22.y}`; } else { - for (var _i2 = 2; _i2 + 1 < pts2.length; _i2 += 2) { - context.lineTo(pts2[_i2], pts2[_i2 + 1]); - } + lineDef = `M ${p1.x} ${p1.y} L ${p22.x + radius2} ${p1.y} ${arc} ${p22.x} ${p1.y + offset} L ${p22.x} ${p22.y}`; } - break; - } - } - context = canvasCxt; - if (usePaths) { - context.stroke(path4); - } else { - context.stroke(); - } - if (context.setLineDash) { - context.setLineDash([]); - } - }; - CRp$9.drawEdgeTrianglePath = function(edge, context, pts2) { - context.fillStyle = context.strokeStyle; - var edgeWidth = edge.pstyle("width").pfValue; - for (var i2 = 0; i2 + 1 < pts2.length; i2 += 2) { - var vector = [pts2[i2 + 2] - pts2[i2], pts2[i2 + 3] - pts2[i2 + 1]]; - var length2 = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]); - var normal = [vector[1] / length2, -vector[0] / length2]; - var triangleHead = [normal[0] * edgeWidth / 2, normal[1] * edgeWidth / 2]; - context.beginPath(); - context.moveTo(pts2[i2] - triangleHead[0], pts2[i2 + 1] - triangleHead[1]); - context.lineTo(pts2[i2] + triangleHead[0], pts2[i2 + 1] + triangleHead[1]); - context.lineTo(pts2[i2 + 2], pts2[i2 + 3]); - context.closePath(); - context.fill(); - } - }; - CRp$9.drawArrowheads = function(context, edge, opacity) { - var rs = edge._private.rscratch; - var isHaystack = rs.edgeType === "haystack"; - if (!isHaystack) { - this.drawArrowhead(context, edge, "source", rs.arrowStartX, rs.arrowStartY, rs.srcArrowAngle, opacity); - } - this.drawArrowhead(context, edge, "mid-target", rs.midX, rs.midY, rs.midtgtArrowAngle, opacity); - this.drawArrowhead(context, edge, "mid-source", rs.midX, rs.midY, rs.midsrcArrowAngle, opacity); - if (!isHaystack) { - this.drawArrowhead(context, edge, "target", rs.arrowEndX, rs.arrowEndY, rs.tgtArrowAngle, opacity); - } - }; - CRp$9.drawArrowhead = function(context, edge, prefix, x5, y5, angle2, opacity) { - if (isNaN(x5) || x5 == null || isNaN(y5) || y5 == null || isNaN(angle2) || angle2 == null) { - return; - } - var self2 = this; - var arrowShape = edge.pstyle(prefix + "-arrow-shape").value; - if (arrowShape === "none") { - return; - } - var arrowClearFill = edge.pstyle(prefix + "-arrow-fill").value === "hollow" ? "both" : "filled"; - var arrowFill = edge.pstyle(prefix + "-arrow-fill").value; - var edgeWidth = edge.pstyle("width").pfValue; - var pArrowWidth = edge.pstyle(prefix + "-arrow-width"); - var arrowWidth = pArrowWidth.value === "match-line" ? edgeWidth : pArrowWidth.pfValue; - if (pArrowWidth.units === "%") arrowWidth *= edgeWidth; - var edgeOpacity = edge.pstyle("opacity").value; - if (opacity === void 0) { - opacity = edgeOpacity; - } - var gco = context.globalCompositeOperation; - if (opacity !== 1 || arrowFill === "hollow") { - context.globalCompositeOperation = "destination-out"; - self2.colorFillStyle(context, 255, 255, 255, 1); - self2.colorStrokeStyle(context, 255, 255, 255, 1); - self2.drawArrowShape(edge, context, arrowClearFill, edgeWidth, arrowShape, arrowWidth, x5, y5, angle2); - context.globalCompositeOperation = gco; - } - var color2 = edge.pstyle(prefix + "-arrow-color").value; - self2.colorFillStyle(context, color2[0], color2[1], color2[2], opacity); - self2.colorStrokeStyle(context, color2[0], color2[1], color2[2], opacity); - self2.drawArrowShape(edge, context, arrowFill, edgeWidth, arrowShape, arrowWidth, x5, y5, angle2); - }; - CRp$9.drawArrowShape = function(edge, context, fill, edgeWidth, shape, shapeWidth, x5, y5, angle2) { - var r2 = this; - var usePaths = this.usePaths() && shape !== "triangle-cross"; - var pathCacheHit = false; - var path4; - var canvasContext = context; - var translation = { - x: x5, - y: y5 - }; - var scale2 = edge.pstyle("arrow-scale").value; - var size5 = this.getArrowWidth(edgeWidth, scale2); - var shapeImpl = r2.arrowShapes[shape]; - if (usePaths) { - var cache3 = r2.arrowPathCache = r2.arrowPathCache || []; - var key = hashString(shape); - var cachedPath = cache3[key]; - if (cachedPath != null) { - path4 = context = cachedPath; - pathCacheHit = true; - } else { - path4 = context = new Path2D(); - cache3[key] = path4; - } - } - if (!pathCacheHit) { - if (context.beginPath) { - context.beginPath(); - } - if (usePaths) { - shapeImpl.draw(context, 1, 0, { - x: 0, - y: 0 - }, 1); - } else { - shapeImpl.draw(context, size5, angle2, translation, edgeWidth); - } - if (context.closePath) { - context.closePath(); - } - } - context = canvasContext; - if (usePaths) { - context.translate(x5, y5); - context.rotate(angle2); - context.scale(size5, size5); - } - if (fill === "filled" || fill === "both") { - if (usePaths) { - context.fill(path4); - } else { - context.fill(); - } - } - if (fill === "hollow" || fill === "both") { - context.lineWidth = shapeWidth / (usePaths ? size5 : 1); - context.lineJoin = "miter"; - if (usePaths) { - context.stroke(path4); - } else { - context.stroke(); - } - } - if (usePaths) { - context.scale(1 / size5, 1 / size5); - context.rotate(-angle2); - context.translate(-x5, -y5); - } - }; - CRp$8 = {}; - CRp$8.safeDrawImage = function(context, img, ix, iy, iw, ih, x5, y5, w3, h2) { - if (iw <= 0 || ih <= 0 || w3 <= 0 || h2 <= 0) { - return; - } - try { - context.drawImage(img, ix, iy, iw, ih, x5, y5, w3, h2); - } catch (e3) { - warn(e3); - } - }; - CRp$8.drawInscribedImage = function(context, img, node2, index, nodeOpacity) { - var r2 = this; - var pos = node2.position(); - var nodeX = pos.x; - var nodeY = pos.y; - var styleObj = node2.cy().style(); - var getIndexedStyle = styleObj.getIndexedStyle.bind(styleObj); - var fit2 = getIndexedStyle(node2, "background-fit", "value", index); - var repeat2 = getIndexedStyle(node2, "background-repeat", "value", index); - var nodeW = node2.width(); - var nodeH = node2.height(); - var paddingX2 = node2.padding() * 2; - var nodeTW = nodeW + (getIndexedStyle(node2, "background-width-relative-to", "value", index) === "inner" ? 0 : paddingX2); - var nodeTH = nodeH + (getIndexedStyle(node2, "background-height-relative-to", "value", index) === "inner" ? 0 : paddingX2); - var rs = node2._private.rscratch; - var clip = getIndexedStyle(node2, "background-clip", "value", index); - var shouldClip = clip === "node"; - var imgOpacity = getIndexedStyle(node2, "background-image-opacity", "value", index) * nodeOpacity; - var smooth = getIndexedStyle(node2, "background-image-smoothing", "value", index); - var cornerRadius = node2.pstyle("corner-radius").value; - if (cornerRadius !== "auto") cornerRadius = node2.pstyle("corner-radius").pfValue; - var imgW = img.width || img.cachedW; - var imgH = img.height || img.cachedH; - if (null == imgW || null == imgH) { - document.body.appendChild(img); - imgW = img.cachedW = img.width || img.offsetWidth; - imgH = img.cachedH = img.height || img.offsetHeight; - document.body.removeChild(img); - } - var w3 = imgW; - var h2 = imgH; - if (getIndexedStyle(node2, "background-width", "value", index) !== "auto") { - if (getIndexedStyle(node2, "background-width", "units", index) === "%") { - w3 = getIndexedStyle(node2, "background-width", "pfValue", index) * nodeTW; - } else { - w3 = getIndexedStyle(node2, "background-width", "pfValue", index); - } - } - if (getIndexedStyle(node2, "background-height", "value", index) !== "auto") { - if (getIndexedStyle(node2, "background-height", "units", index) === "%") { - h2 = getIndexedStyle(node2, "background-height", "pfValue", index) * nodeTH; - } else { - h2 = getIndexedStyle(node2, "background-height", "pfValue", index); - } - } - if (w3 === 0 || h2 === 0) { - return; - } - if (fit2 === "contain") { - var scale2 = Math.min(nodeTW / w3, nodeTH / h2); - w3 *= scale2; - h2 *= scale2; - } else if (fit2 === "cover") { - var scale2 = Math.max(nodeTW / w3, nodeTH / h2); - w3 *= scale2; - h2 *= scale2; - } - var x5 = nodeX - nodeTW / 2; - var posXUnits = getIndexedStyle(node2, "background-position-x", "units", index); - var posXPfVal = getIndexedStyle(node2, "background-position-x", "pfValue", index); - if (posXUnits === "%") { - x5 += (nodeTW - w3) * posXPfVal; - } else { - x5 += posXPfVal; - } - var offXUnits = getIndexedStyle(node2, "background-offset-x", "units", index); - var offXPfVal = getIndexedStyle(node2, "background-offset-x", "pfValue", index); - if (offXUnits === "%") { - x5 += (nodeTW - w3) * offXPfVal; - } else { - x5 += offXPfVal; - } - var y5 = nodeY - nodeTH / 2; - var posYUnits = getIndexedStyle(node2, "background-position-y", "units", index); - var posYPfVal = getIndexedStyle(node2, "background-position-y", "pfValue", index); - if (posYUnits === "%") { - y5 += (nodeTH - h2) * posYPfVal; - } else { - y5 += posYPfVal; - } - var offYUnits = getIndexedStyle(node2, "background-offset-y", "units", index); - var offYPfVal = getIndexedStyle(node2, "background-offset-y", "pfValue", index); - if (offYUnits === "%") { - y5 += (nodeTH - h2) * offYPfVal; - } else { - y5 += offYPfVal; - } - if (rs.pathCache) { - x5 -= nodeX; - y5 -= nodeY; - nodeX = 0; - nodeY = 0; - } - var gAlpha = context.globalAlpha; - context.globalAlpha = imgOpacity; - var smoothingEnabled = r2.getImgSmoothing(context); - var isSmoothingSwitched = false; - if (smooth === "no" && smoothingEnabled) { - r2.setImgSmoothing(context, false); - isSmoothingSwitched = true; - } else if (smooth === "yes" && !smoothingEnabled) { - r2.setImgSmoothing(context, true); - isSmoothingSwitched = true; - } - if (repeat2 === "no-repeat") { - if (shouldClip) { - context.save(); - if (rs.pathCache) { - context.clip(rs.pathCache); - } else { - r2.nodeShapes[r2.getNodeShape(node2)].draw(context, nodeX, nodeY, nodeTW, nodeTH, cornerRadius, rs); - context.clip(); } - } - r2.safeDrawImage(context, img, 0, 0, imgW, imgH, x5, y5, w3, h2); - if (shouldClip) { - context.restore(); - } - } else { - var pattern = context.createPattern(img, repeat2); - context.fillStyle = pattern; - r2.nodeShapes[r2.getNodeShape(node2)].draw(context, nodeX, nodeY, nodeTW, nodeTH, cornerRadius, rs); - context.translate(x5, y5); - context.fill(); - context.translate(-x5, -y5); - } - context.globalAlpha = gAlpha; - if (isSmoothingSwitched) { - r2.setImgSmoothing(context, smoothingEnabled); - } - }; - CRp$7 = {}; - CRp$7.eleTextBiggerThanMin = function(ele, scale2) { - if (!scale2) { - var zoom2 = ele.cy().zoom(); - var pxRatio = this.getPixelRatio(); - var lvl = Math.ceil(log22(zoom2 * pxRatio)); - scale2 = Math.pow(2, lvl); - } - var computedSize = ele.pstyle("font-size").pfValue * scale2; - var minSize = ele.pstyle("min-zoomed-font-size").pfValue; - if (computedSize < minSize) { - return false; - } - return true; - }; - CRp$7.drawElementText = function(context, ele, shiftToOriginWithBb, force, prefix) { - var useEleOpacity = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : true; - var r2 = this; - if (force == null) { - if (useEleOpacity && !r2.eleTextBiggerThanMin(ele)) { - return; - } - } else if (force === false) { - return; - } - if (ele.isNode()) { - var label = ele.pstyle("label"); - if (!label || !label.value) { - return; - } - var justification = r2.getLabelJustification(ele); - context.textAlign = justification; - context.textBaseline = "bottom"; - } else { - var badLine = ele.element()._private.rscratch.badLine; - var _label = ele.pstyle("label"); - var srcLabel = ele.pstyle("source-label"); - var tgtLabel = ele.pstyle("target-label"); - if (badLine || (!_label || !_label.value) && (!srcLabel || !srcLabel.value) && (!tgtLabel || !tgtLabel.value)) { - return; - } - context.textAlign = "center"; - context.textBaseline = "bottom"; - } - var applyRotation = !shiftToOriginWithBb; - var bb; - if (shiftToOriginWithBb) { - bb = shiftToOriginWithBb; - context.translate(-bb.x1, -bb.y1); - } - if (prefix == null) { - r2.drawText(context, ele, null, applyRotation, useEleOpacity); - if (ele.isEdge()) { - r2.drawText(context, ele, "source", applyRotation, useEleOpacity); - r2.drawText(context, ele, "target", applyRotation, useEleOpacity); - } - } else { - r2.drawText(context, ele, prefix, applyRotation, useEleOpacity); - } - if (shiftToOriginWithBb) { - context.translate(bb.x1, bb.y1); - } - }; - CRp$7.getFontCache = function(context) { - var cache3; - this.fontCaches = this.fontCaches || []; - for (var i2 = 0; i2 < this.fontCaches.length; i2++) { - cache3 = this.fontCaches[i2]; - if (cache3.context === context) { - return cache3; - } - } - cache3 = { - context - }; - this.fontCaches.push(cache3); - return cache3; - }; - CRp$7.setupTextStyle = function(context, ele) { - var useEleOpacity = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; - var labelStyle = ele.pstyle("font-style").strValue; - var labelSize = ele.pstyle("font-size").pfValue + "px"; - var labelFamily = ele.pstyle("font-family").strValue; - var labelWeight = ele.pstyle("font-weight").strValue; - var opacity = useEleOpacity ? ele.effectiveOpacity() * ele.pstyle("text-opacity").value : 1; - var outlineOpacity = ele.pstyle("text-outline-opacity").value * opacity; - var color2 = ele.pstyle("color").value; - var outlineColor = ele.pstyle("text-outline-color").value; - context.font = labelStyle + " " + labelWeight + " " + labelSize + " " + labelFamily; - context.lineJoin = "round"; - this.colorFillStyle(context, color2[0], color2[1], color2[2], opacity); - this.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], outlineOpacity); - }; - __name(roundRect, "roundRect"); - CRp$7.getTextAngle = function(ele, prefix) { - var theta; - var _p = ele._private; - var rscratch = _p.rscratch; - var pdash = prefix ? prefix + "-" : ""; - var rotation = ele.pstyle(pdash + "text-rotation"); - if (rotation.strValue === "autorotate") { - var textAngle = getPrefixedProperty(rscratch, "labelAngle", prefix); - theta = ele.isEdge() ? textAngle : 0; - } else if (rotation.strValue === "none") { - theta = 0; - } else { - theta = rotation.pfValue; - } - return theta; - }; - CRp$7.drawText = function(context, ele, prefix) { - var applyRotation = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; - var useEleOpacity = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true; - var _p = ele._private; - var rscratch = _p.rscratch; - var parentOpacity = useEleOpacity ? ele.effectiveOpacity() : 1; - if (useEleOpacity && (parentOpacity === 0 || ele.pstyle("text-opacity").value === 0)) { - return; - } - if (prefix === "main") { - prefix = null; - } - var textX = getPrefixedProperty(rscratch, "labelX", prefix); - var textY = getPrefixedProperty(rscratch, "labelY", prefix); - var orgTextX, orgTextY; - var text4 = this.getLabelText(ele, prefix); - if (text4 != null && text4 !== "" && !isNaN(textX) && !isNaN(textY)) { - this.setupTextStyle(context, ele, useEleOpacity); - var pdash = prefix ? prefix + "-" : ""; - var textW = getPrefixedProperty(rscratch, "labelWidth", prefix); - var textH = getPrefixedProperty(rscratch, "labelHeight", prefix); - var marginX = ele.pstyle(pdash + "text-margin-x").pfValue; - var marginY = ele.pstyle(pdash + "text-margin-y").pfValue; - var isEdge2 = ele.isEdge(); - var halign = ele.pstyle("text-halign").value; - var valign = ele.pstyle("text-valign").value; - if (isEdge2) { - halign = "center"; - valign = "center"; - } - textX += marginX; - textY += marginY; - var theta; - if (!applyRotation) { - theta = 0; - } else { - theta = this.getTextAngle(ele, prefix); - } - if (theta !== 0) { - orgTextX = textX; - orgTextY = textY; - context.translate(orgTextX, orgTextY); - context.rotate(theta); - textX = 0; - textY = 0; - } - switch (valign) { - case "top": - break; - case "center": - textY += textH / 2; - break; - case "bottom": - textY += textH; - break; - } - var backgroundOpacity = ele.pstyle("text-background-opacity").value; - var borderOpacity = ele.pstyle("text-border-opacity").value; - var textBorderWidth = ele.pstyle("text-border-width").pfValue; - var backgroundPadding = ele.pstyle("text-background-padding").pfValue; - var styleShape = ele.pstyle("text-background-shape").strValue; - var rounded = styleShape.indexOf("round") === 0; - var roundRadius = 2; - if (backgroundOpacity > 0 || textBorderWidth > 0 && borderOpacity > 0) { - var bgX = textX - backgroundPadding; - switch (halign) { - case "left": - bgX -= textW; - break; - case "center": - bgX -= textW / 2; - break; + if (p1.x === p22.x) { + lineDef = `M ${p1.x} ${p1.y} L ${p22.x} ${p22.y}`; } - var bgY = textY - textH - backgroundPadding; - var bgW = textW + 2 * backgroundPadding; - var bgH = textH + 2 * backgroundPadding; - if (backgroundOpacity > 0) { - var textFill = context.fillStyle; - var textBackgroundColor = ele.pstyle("text-background-color").value; - context.fillStyle = "rgba(" + textBackgroundColor[0] + "," + textBackgroundColor[1] + "," + textBackgroundColor[2] + "," + backgroundOpacity * parentOpacity + ")"; - if (rounded) { - roundRect(context, bgX, bgY, bgW, bgH, roundRadius); + } else if (dir === "BT") { + if (p1.x < p22.x) { + if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { + lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y + radius2} ${arc2} ${p1.x + offset} ${p22.y} L ${p22.x} ${p22.y}`; } else { - context.fillRect(bgX, bgY, bgW, bgH); + lineDef = `M ${p1.x} ${p1.y} L ${p22.x - radius2} ${p1.y} ${arc} ${p22.x} ${p1.y - offset} L ${p22.x} ${p22.y}`; } - context.fillStyle = textFill; } - if (textBorderWidth > 0 && borderOpacity > 0) { - var textStroke = context.strokeStyle; - var textLineWidth = context.lineWidth; - var textBorderColor = ele.pstyle("text-border-color").value; - var textBorderStyle = ele.pstyle("text-border-style").value; - context.strokeStyle = "rgba(" + textBorderColor[0] + "," + textBorderColor[1] + "," + textBorderColor[2] + "," + borderOpacity * parentOpacity + ")"; - context.lineWidth = textBorderWidth; - if (context.setLineDash) { - switch (textBorderStyle) { - case "dotted": - context.setLineDash([1, 1]); - break; - case "dashed": - context.setLineDash([4, 2]); - break; - case "double": - context.lineWidth = textBorderWidth / 4; - context.setLineDash([]); - break; - case "solid": - context.setLineDash([]); - break; - } - } - if (rounded) { - roundRect(context, bgX, bgY, bgW, bgH, roundRadius, "stroke"); + if (p1.x > p22.x) { + arc = "A 20 20, 0, 0, 0,"; + arc2 = "A 20 20, 0, 0, 1,"; + radius2 = 20; + offset = 20; + if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { + lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y + radius2} ${arc} ${p1.x - offset} ${p22.y} L ${p22.x} ${p22.y}`; } else { - context.strokeRect(bgX, bgY, bgW, bgH); - } - if (textBorderStyle === "double") { - var whiteWidth = textBorderWidth / 2; - if (rounded) { - roundRect(context, bgX + whiteWidth, bgY + whiteWidth, bgW - whiteWidth * 2, bgH - whiteWidth * 2, roundRadius, "stroke"); - } else { - context.strokeRect(bgX + whiteWidth, bgY + whiteWidth, bgW - whiteWidth * 2, bgH - whiteWidth * 2); - } - } - if (context.setLineDash) { - context.setLineDash([]); + lineDef = `M ${p1.x} ${p1.y} L ${p22.x - radius2} ${p1.y} ${arc} ${p22.x} ${p1.y - offset} L ${p22.x} ${p22.y}`; } - context.lineWidth = textLineWidth; - context.strokeStyle = textStroke; } - } - var lineWidth = 2 * ele.pstyle("text-outline-width").pfValue; - if (lineWidth > 0) { - context.lineWidth = lineWidth; - } - if (ele.pstyle("text-wrap").value === "wrap") { - var lines = getPrefixedProperty(rscratch, "labelWrapCachedLines", prefix); - var lineHeight = getPrefixedProperty(rscratch, "labelLineHeight", prefix); - var halfTextW = textW / 2; - var justification = this.getLabelJustification(ele); - if (justification === "auto") ; - else if (halign === "left") { - if (justification === "left") { - textX += -textW; - } else if (justification === "center") { - textX += -halfTextW; - } - } else if (halign === "center") { - if (justification === "left") { - textX += -halfTextW; - } else if (justification === "right") { - textX += halfTextW; - } - } else if (halign === "right") { - if (justification === "center") { - textX += halfTextW; - } else if (justification === "right") { - textX += textW; - } + if (p1.x === p22.x) { + lineDef = `M ${p1.x} ${p1.y} L ${p22.x} ${p22.y}`; } - switch (valign) { - case "top": - textY -= (lines.length - 1) * lineHeight; - break; - case "center": - case "bottom": - textY -= (lines.length - 1) * lineHeight; - break; + } else { + if (p1.y < p22.y) { + if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { + lineDef = `M ${p1.x} ${p1.y} L ${p22.x - radius2} ${p1.y} ${arc2} ${p22.x} ${p1.y + offset} L ${p22.x} ${p22.y}`; + } else { + lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y - radius2} ${arc} ${p1.x + offset} ${p22.y} L ${p22.x} ${p22.y}`; + } } - for (var l2 = 0; l2 < lines.length; l2++) { - if (lineWidth > 0) { - context.strokeText(lines[l2], textX, textY); + if (p1.y > p22.y) { + if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) { + lineDef = `M ${p1.x} ${p1.y} L ${p22.x - radius2} ${p1.y} ${arc} ${p22.x} ${p1.y - offset} L ${p22.x} ${p22.y}`; + } else { + lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p22.y + radius2} ${arc2} ${p1.x + offset} ${p22.y} L ${p22.x} ${p22.y}`; } - context.fillText(lines[l2], textX, textY); - textY += lineHeight; } - } else { - if (lineWidth > 0) { - context.strokeText(text4, textX, textY); + if (p1.y === p22.y) { + lineDef = `M ${p1.x} ${p1.y} L ${p22.x} ${p22.y}`; } - context.fillText(text4, textX, textY); - } - if (theta !== 0) { - context.rotate(-theta); - context.translate(-orgTextX, -orgTextY); } } - }; - CRp$6 = {}; - CRp$6.drawNode = function(context, node2, shiftToOriginWithBb) { - var drawLabel4 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; - var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true; - var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : true; - var r2 = this; - var nodeWidth, nodeHeight; - var _p = node2._private; - var rs = _p.rscratch; - var pos = node2.position(); - if (!number$1(pos.x) || !number$1(pos.y)) { - return; - } - if (shouldDrawOpacity && !node2.visible()) { - return; - } - var eleOpacity = shouldDrawOpacity ? node2.effectiveOpacity() : 1; - var usePaths = r2.usePaths(); - var path4; - var pathCacheHit = false; - var padding2 = node2.padding(); - nodeWidth = node2.width() + 2 * padding2; - nodeHeight = node2.height() + 2 * padding2; - var bb; - if (shiftToOriginWithBb) { - bb = shiftToOriginWithBb; - context.translate(-bb.x1, -bb.y1); + if (lineDef === void 0) { + throw new Error("Line definition not found"); } - var bgImgProp = node2.pstyle("background-image"); - var urls = bgImgProp.value; - var urlDefined = new Array(urls.length); - var image = new Array(urls.length); - var numImages = 0; - for (var i2 = 0; i2 < urls.length; i2++) { - var url = urls[i2]; - var defd = urlDefined[i2] = url != null && url !== "none"; - if (defd) { - var bgImgCrossOrigin = node2.cy().style().getIndexedStyle(node2, "background-image-crossorigin", "value", i2); - numImages++; - image[i2] = r2.getCachedImage(url, bgImgCrossOrigin, function() { - _p.backgroundTimestamp = Date.now(); - node2.emitAndNotify("background"); + svg2.append("path").attr("d", lineDef).attr("class", "arrow arrow" + colorClassNum % THEME_COLOR_LIMIT); + }, "drawArrow"); + drawArrows = /* @__PURE__ */ __name((svg2, commits) => { + const gArrows = svg2.append("g").attr("class", "commit-arrows"); + [...commits.keys()].forEach((key) => { + const commit2 = commits.get(key); + if (commit2.parents && commit2.parents.length > 0) { + commit2.parents.forEach((parent4) => { + drawArrow(gArrows, commits.get(parent4), commit2, commits); }); } - } - var darkness = node2.pstyle("background-blacken").value; - var borderWidth = node2.pstyle("border-width").pfValue; - var bgOpacity = node2.pstyle("background-opacity").value * eleOpacity; - var borderColor = node2.pstyle("border-color").value; - var borderStyle = node2.pstyle("border-style").value; - var borderJoin = node2.pstyle("border-join").value; - var borderCap = node2.pstyle("border-cap").value; - var borderPosition = node2.pstyle("border-position").value; - var borderPattern = node2.pstyle("border-dash-pattern").pfValue; - var borderOffset = node2.pstyle("border-dash-offset").pfValue; - var borderOpacity = node2.pstyle("border-opacity").value * eleOpacity; - var outlineWidth = node2.pstyle("outline-width").pfValue; - var outlineColor = node2.pstyle("outline-color").value; - var outlineStyle = node2.pstyle("outline-style").value; - var outlineOpacity = node2.pstyle("outline-opacity").value * eleOpacity; - var outlineOffset = node2.pstyle("outline-offset").value; - var cornerRadius = node2.pstyle("corner-radius").value; - if (cornerRadius !== "auto") cornerRadius = node2.pstyle("corner-radius").pfValue; - var setupShapeColor = /* @__PURE__ */ __name(function setupShapeColor2() { - var bgOpy = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : bgOpacity; - r2.eleFillStyle(context, node2, bgOpy); - }, "setupShapeColor"); - var setupBorderColor = /* @__PURE__ */ __name(function setupBorderColor2() { - var bdrOpy = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : borderOpacity; - r2.colorStrokeStyle(context, borderColor[0], borderColor[1], borderColor[2], bdrOpy); - }, "setupBorderColor"); - var setupOutlineColor = /* @__PURE__ */ __name(function setupOutlineColor2() { - var otlnOpy = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : outlineOpacity; - r2.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], otlnOpy); - }, "setupOutlineColor"); - var getPath = /* @__PURE__ */ __name(function getPath2(width3, height2, shape, points) { - var pathCache = r2.nodePathCache = r2.nodePathCache || []; - var key = hashStrings(shape === "polygon" ? shape + "," + points.join(",") : shape, "" + height2, "" + width3, "" + cornerRadius); - var cachedPath = pathCache[key]; - var path5; - var cacheHit = false; - if (cachedPath != null) { - path5 = cachedPath; - cacheHit = true; - rs.pathCache = path5; - } else { - path5 = new Path2D(); - pathCache[key] = rs.pathCache = path5; + }); + }, "drawArrows"); + drawBranches = /* @__PURE__ */ __name((svg2, branches) => { + const g2 = svg2.append("g"); + branches.forEach((branch2, index) => { + const adjustIndexForTheme = index % THEME_COLOR_LIMIT; + const pos = branchPos.get(branch2.name)?.pos; + if (pos === void 0) { + throw new Error(`Position not found for branch ${branch2.name}`); } - return { - path: path5, - cacheHit - }; - }, "getPath"); - var styleShape = node2.pstyle("shape").strValue; - var shapePts = node2.pstyle("shape-polygon-points").pfValue; - if (usePaths) { - context.translate(pos.x, pos.y); - var shapePath = getPath(nodeWidth, nodeHeight, styleShape, shapePts); - path4 = shapePath.path; - pathCacheHit = shapePath.cacheHit; - } - var drawShape = /* @__PURE__ */ __name(function drawShape2() { - if (!pathCacheHit) { - var npos = pos; - if (usePaths) { - npos = { - x: 0, - y: 0 - }; - } - r2.nodeShapes[r2.getNodeShape(node2)].draw(path4 || context, npos.x, npos.y, nodeWidth, nodeHeight, cornerRadius, rs); + const line2 = g2.append("line"); + line2.attr("x1", 0); + line2.attr("y1", pos); + line2.attr("x2", maxPos); + line2.attr("y2", pos); + line2.attr("class", "branch branch" + adjustIndexForTheme); + if (dir === "TB") { + line2.attr("y1", defaultPos); + line2.attr("x1", pos); + line2.attr("y2", maxPos); + line2.attr("x2", pos); + } else if (dir === "BT") { + line2.attr("y1", maxPos); + line2.attr("x1", pos); + line2.attr("y2", defaultPos); + line2.attr("x2", pos); } - if (usePaths) { - context.fill(path4); + lanes.push(pos); + const name = branch2.name; + const labelElement = drawText2(name); + const bkg = g2.insert("rect"); + const branchLabel = g2.insert("g").attr("class", "branchLabel"); + const label = branchLabel.insert("g").attr("class", "label branch-label" + adjustIndexForTheme); + label.node().appendChild(labelElement); + const bbox = labelElement.getBBox(); + bkg.attr("class", "branchLabelBkg label" + adjustIndexForTheme).attr("rx", 4).attr("ry", 4).attr("x", -bbox.width - 4 - (DEFAULT_GITGRAPH_CONFIG2?.rotateCommitLabel === true ? 30 : 0)).attr("y", -bbox.height / 2 + 8).attr("width", bbox.width + 18).attr("height", bbox.height + 4); + label.attr( + "transform", + "translate(" + (-bbox.width - 14 - (DEFAULT_GITGRAPH_CONFIG2?.rotateCommitLabel === true ? 30 : 0)) + ", " + (pos - bbox.height / 2 - 1) + ")" + ); + if (dir === "TB") { + bkg.attr("x", pos - bbox.width / 2 - 10).attr("y", 0); + label.attr("transform", "translate(" + (pos - bbox.width / 2 - 5) + ", 0)"); + } else if (dir === "BT") { + bkg.attr("x", pos - bbox.width / 2 - 10).attr("y", maxPos); + label.attr("transform", "translate(" + (pos - bbox.width / 2 - 5) + ", " + maxPos + ")"); } else { - context.fill(); - } - }, "drawShape"); - var drawImages = /* @__PURE__ */ __name(function drawImages2() { - var nodeOpacity = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : eleOpacity; - var inside = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - var prevBging = _p.backgrounding; - var totalCompleted = 0; - for (var _i = 0; _i < image.length; _i++) { - var bgContainment = node2.cy().style().getIndexedStyle(node2, "background-image-containment", "value", _i); - if (inside && bgContainment === "over" || !inside && bgContainment === "inside") { - totalCompleted++; - continue; - } - if (urlDefined[_i] && image[_i].complete && !image[_i].error) { - totalCompleted++; - r2.drawInscribedImage(context, image[_i], node2, _i, nodeOpacity); - } - } - _p.backgrounding = !(totalCompleted === numImages); - if (prevBging !== _p.backgrounding) { - node2.updateStyle(false); - } - }, "drawImages"); - var drawPie = /* @__PURE__ */ __name(function drawPie2() { - var redrawShape = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; - var pieOpacity = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : eleOpacity; - if (r2.hasPie(node2)) { - r2.drawPie(context, node2, pieOpacity); - if (redrawShape) { - if (!usePaths) { - r2.nodeShapes[r2.getNodeShape(node2)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight, cornerRadius, rs); - } - } - } - }, "drawPie"); - var darken2 = /* @__PURE__ */ __name(function darken3() { - var darkenOpacity = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : eleOpacity; - var opacity = (darkness > 0 ? darkness : -darkness) * darkenOpacity; - var c3 = darkness > 0 ? 0 : 255; - if (darkness !== 0) { - r2.colorFillStyle(context, c3, c3, c3, opacity); - if (usePaths) { - context.fill(path4); - } else { - context.fill(); - } + bkg.attr("transform", "translate(-19, " + (pos - bbox.height / 2) + ")"); } - }, "darken"); - var drawBorder = /* @__PURE__ */ __name(function drawBorder2() { - if (borderWidth > 0) { - context.lineWidth = borderWidth; - context.lineCap = borderCap; - context.lineJoin = borderJoin; - if (context.setLineDash) { - switch (borderStyle) { - case "dotted": - context.setLineDash([1, 1]); - break; - case "dashed": - context.setLineDash(borderPattern); - context.lineDashOffset = borderOffset; - break; - case "solid": - case "double": - context.setLineDash([]); - break; + }); + }, "drawBranches"); + setBranchPosition = /* @__PURE__ */ __name(function(name, pos, index, bbox, rotateCommitLabel) { + branchPos.set(name, { pos, index }); + pos += 50 + (rotateCommitLabel ? 40 : 0) + (dir === "TB" || dir === "BT" ? bbox.width / 2 : 0); + return pos; + }, "setBranchPosition"); + draw4 = /* @__PURE__ */ __name(function(txt, id30, ver, diagObj) { + clear8(); + log.debug("in gitgraph renderer", txt + "\n", "id:", id30, ver); + if (!DEFAULT_GITGRAPH_CONFIG2) { + throw new Error("GitGraph config not found"); + } + const rotateCommitLabel = DEFAULT_GITGRAPH_CONFIG2.rotateCommitLabel ?? false; + const db7 = diagObj.db; + allCommitsDict = db7.getCommits(); + const branches = db7.getBranchesAsObjArray(); + dir = db7.getDirection(); + const diagram27 = select_default2(`[id="${id30}"]`); + let pos = 0; + branches.forEach((branch2, index) => { + const labelElement = drawText2(branch2.name); + const g2 = diagram27.append("g"); + const branchLabel = g2.insert("g").attr("class", "branchLabel"); + const label = branchLabel.insert("g").attr("class", "label branch-label"); + label.node()?.appendChild(labelElement); + const bbox = labelElement.getBBox(); + pos = setBranchPosition(branch2.name, pos, index, bbox, rotateCommitLabel); + label.remove(); + branchLabel.remove(); + g2.remove(); + }); + drawCommits(diagram27, allCommitsDict, false); + if (DEFAULT_GITGRAPH_CONFIG2.showBranches) { + drawBranches(diagram27, branches); + } + drawArrows(diagram27, allCommitsDict); + drawCommits(diagram27, allCommitsDict, true); + utils_default2.insertTitle( + diagram27, + "gitTitleText", + DEFAULT_GITGRAPH_CONFIG2.titleTopMargin ?? 0, + db7.getDiagramTitle() + ); + setupGraphViewbox2( + void 0, + diagram27, + DEFAULT_GITGRAPH_CONFIG2.diagramPadding, + DEFAULT_GITGRAPH_CONFIG2.useMaxWidth + ); + }, "draw"); + gitGraphRenderer_default = { + draw: draw4 + }; + if (void 0) { + const { it, expect, describe } = void 0; + describe("drawText", () => { + it("should drawText", () => { + const svgLabel = drawText2("main"); + expect(svgLabel).toBeDefined(); + expect(svgLabel.children[0].innerHTML).toBe("main"); + }); + }); + describe("branchPosition", () => { + const bbox = { + x: 0, + y: 0, + width: 10, + height: 10, + top: 0, + right: 0, + bottom: 0, + left: 0, + toJSON: /* @__PURE__ */ __name(() => "", "toJSON") + }; + it("should setBranchPositions LR with two branches", () => { + dir = "LR"; + const pos = setBranchPosition("main", 0, 0, bbox, true); + expect(pos).toBe(90); + expect(branchPos.get("main")).toEqual({ pos: 0, index: 0 }); + const posNext = setBranchPosition("develop", pos, 1, bbox, true); + expect(posNext).toBe(180); + expect(branchPos.get("develop")).toEqual({ pos, index: 1 }); + }); + it("should setBranchPositions TB with two branches", () => { + dir = "TB"; + bbox.width = 34.9921875; + const pos = setBranchPosition("main", 0, 0, bbox, true); + expect(pos).toBe(107.49609375); + expect(branchPos.get("main")).toEqual({ pos: 0, index: 0 }); + bbox.width = 56.421875; + const posNext = setBranchPosition("develop", pos, 1, bbox, true); + expect(posNext).toBe(225.70703125); + expect(branchPos.get("develop")).toEqual({ pos, index: 1 }); + }); + }); + describe("commitPosition", () => { + const commits = /* @__PURE__ */ new Map([ + [ + "commitZero", + { + id: "ZERO", + message: "", + seq: 0, + type: commitType.NORMAL, + tags: [], + parents: [], + branch: "main" } - } - if (borderPosition !== "center") { - context.save(); - context.lineWidth *= 2; - if (borderPosition === "inside") { - usePaths ? context.clip(path4) : context.clip(); - } else { - var region = new Path2D(); - region.rect(-nodeWidth / 2 - borderWidth, -nodeHeight / 2 - borderWidth, nodeWidth + 2 * borderWidth, nodeHeight + 2 * borderWidth); - region.addPath(path4); - context.clip(region, "evenodd"); + ], + [ + "commitA", + { + id: "A", + message: "", + seq: 1, + type: commitType.NORMAL, + tags: [], + parents: ["ZERO"], + branch: "feature" } - usePaths ? context.stroke(path4) : context.stroke(); - context.restore(); - } else { - usePaths ? context.stroke(path4) : context.stroke(); - } - if (borderStyle === "double") { - context.lineWidth = borderWidth / 3; - var gco = context.globalCompositeOperation; - context.globalCompositeOperation = "destination-out"; - if (usePaths) { - context.stroke(path4); - } else { - context.stroke(); + ], + [ + "commitB", + { + id: "B", + message: "", + seq: 2, + type: commitType.NORMAL, + tags: [], + parents: ["A"], + branch: "feature" } - context.globalCompositeOperation = gco; - } - if (context.setLineDash) { - context.setLineDash([]); - } - } - }, "drawBorder"); - var drawOutline = /* @__PURE__ */ __name(function drawOutline2() { - if (outlineWidth > 0) { - context.lineWidth = outlineWidth; - context.lineCap = "butt"; - if (context.setLineDash) { - switch (outlineStyle) { - case "dotted": - context.setLineDash([1, 1]); - break; - case "dashed": - context.setLineDash([4, 2]); - break; - case "solid": - case "double": - context.setLineDash([]); - break; + ], + [ + "commitM", + { + id: "M", + message: "merged branch feature into main", + seq: 3, + type: commitType.MERGE, + tags: [], + parents: ["ZERO", "B"], + branch: "main", + customId: true } - } - var npos = pos; - if (usePaths) { - npos = { - x: 0, - y: 0 - }; - } - var shape = r2.getNodeShape(node2); - var bWidth = borderWidth; - if (borderPosition === "inside") bWidth = 0; - if (borderPosition === "outside") bWidth *= 2; - var scaleX = (nodeWidth + bWidth + (outlineWidth + outlineOffset)) / nodeWidth; - var scaleY = (nodeHeight + bWidth + (outlineWidth + outlineOffset)) / nodeHeight; - var sWidth = nodeWidth * scaleX; - var sHeight = nodeHeight * scaleY; - var points = r2.nodeShapes[shape].points; - var _path; - if (usePaths) { - var outlinePath = getPath(sWidth, sHeight, shape, points); - _path = outlinePath.path; - } - if (shape === "ellipse") { - r2.drawEllipsePath(_path || context, npos.x, npos.y, sWidth, sHeight); - } else if (["round-diamond", "round-heptagon", "round-hexagon", "round-octagon", "round-pentagon", "round-polygon", "round-triangle", "round-tag"].includes(shape)) { - var sMult = 0; - var offsetX = 0; - var offsetY = 0; - if (shape === "round-diamond") { - sMult = (bWidth + outlineOffset + outlineWidth) * 1.4; - } else if (shape === "round-heptagon") { - sMult = (bWidth + outlineOffset + outlineWidth) * 1.075; - offsetY = -(bWidth / 2 + outlineOffset + outlineWidth) / 35; - } else if (shape === "round-hexagon") { - sMult = (bWidth + outlineOffset + outlineWidth) * 1.12; - } else if (shape === "round-pentagon") { - sMult = (bWidth + outlineOffset + outlineWidth) * 1.13; - offsetY = -(bWidth / 2 + outlineOffset + outlineWidth) / 15; - } else if (shape === "round-tag") { - sMult = (bWidth + outlineOffset + outlineWidth) * 1.12; - offsetX = (bWidth / 2 + outlineWidth + outlineOffset) * 0.07; - } else if (shape === "round-triangle") { - sMult = (bWidth + outlineOffset + outlineWidth) * (Math.PI / 2); - offsetY = -(bWidth + outlineOffset / 2 + outlineWidth) / Math.PI; + ], + [ + "commitC", + { + id: "C", + message: "", + seq: 4, + type: commitType.NORMAL, + tags: [], + parents: ["ZERO"], + branch: "release" } - if (sMult !== 0) { - scaleX = (nodeWidth + sMult) / nodeWidth; - sWidth = nodeWidth * scaleX; - if (!["round-hexagon", "round-tag"].includes(shape)) { - scaleY = (nodeHeight + sMult) / nodeHeight; - sHeight = nodeHeight * scaleY; - } + ], + [ + "commit5_8928ea0", + { + id: "5-8928ea0", + message: "cherry-picked [object Object] into release", + seq: 5, + type: commitType.CHERRY_PICK, + tags: [], + parents: ["C", "M"], + branch: "release" } - cornerRadius = cornerRadius === "auto" ? getRoundPolygonRadius(sWidth, sHeight) : cornerRadius; - var halfW = sWidth / 2; - var halfH = sHeight / 2; - var radius2 = cornerRadius + (bWidth + outlineWidth + outlineOffset) / 2; - var p3 = new Array(points.length / 2); - var corners = new Array(points.length / 2); - for (var _i3 = 0; _i3 < points.length / 2; _i3++) { - p3[_i3] = { - x: npos.x + offsetX + halfW * points[_i3 * 2], - y: npos.y + offsetY + halfH * points[_i3 * 2 + 1] - }; + ], + [ + "commitD", + { + id: "D", + message: "", + seq: 6, + type: commitType.NORMAL, + tags: [], + parents: ["5-8928ea0"], + branch: "release" } - var _i2, p1, p22, p32, len = p3.length; - p1 = p3[len - 1]; - for (_i2 = 0; _i2 < len; _i2++) { - p22 = p3[_i2 % len]; - p32 = p3[(_i2 + 1) % len]; - corners[_i2] = getRoundCorner(p1, p22, p32, radius2); - p1 = p22; - p22 = p32; + ], + [ + "commit7_ed848ba", + { + id: "7-ed848ba", + message: "cherry-picked [object Object] into release", + seq: 7, + type: commitType.CHERRY_PICK, + tags: [], + parents: ["D", "M"], + branch: "release" } - r2.drawRoundPolygonPath(_path || context, npos.x + offsetX, npos.y + offsetY, nodeWidth * scaleX, nodeHeight * scaleY, points, corners); - } else if (["roundrectangle", "round-rectangle"].includes(shape)) { - cornerRadius = cornerRadius === "auto" ? getRoundRectangleRadius(sWidth, sHeight) : cornerRadius; - r2.drawRoundRectanglePath(_path || context, npos.x, npos.y, sWidth, sHeight, cornerRadius + (bWidth + outlineWidth + outlineOffset) / 2); - } else if (["cutrectangle", "cut-rectangle"].includes(shape)) { - cornerRadius = cornerRadius === "auto" ? getCutRectangleCornerLength() : cornerRadius; - r2.drawCutRectanglePath(_path || context, npos.x, npos.y, sWidth, sHeight, null, cornerRadius + (bWidth + outlineWidth + outlineOffset) / 4); - } else if (["bottomroundrectangle", "bottom-round-rectangle"].includes(shape)) { - cornerRadius = cornerRadius === "auto" ? getRoundRectangleRadius(sWidth, sHeight) : cornerRadius; - r2.drawBottomRoundRectanglePath(_path || context, npos.x, npos.y, sWidth, sHeight, cornerRadius + (bWidth + outlineWidth + outlineOffset) / 2); - } else if (shape === "barrel") { - r2.drawBarrelPath(_path || context, npos.x, npos.y, sWidth, sHeight); - } else if (shape.startsWith("polygon") || ["rhomboid", "right-rhomboid", "round-tag", "tag", "vee"].includes(shape)) { - var pad3 = (bWidth + outlineWidth + outlineOffset) / nodeWidth; - points = joinLines(expandPolygon(points, pad3)); - r2.drawPolygonPath(_path || context, npos.x, npos.y, nodeWidth, nodeHeight, points); - } else { - var _pad = (bWidth + outlineWidth + outlineOffset) / nodeWidth; - points = joinLines(expandPolygon(points, -_pad)); - r2.drawPolygonPath(_path || context, npos.x, npos.y, nodeWidth, nodeHeight, points); - } - if (usePaths) { - context.stroke(_path); - } else { - context.stroke(); - } - if (outlineStyle === "double") { - context.lineWidth = bWidth / 3; - var gco = context.globalCompositeOperation; - context.globalCompositeOperation = "destination-out"; - if (usePaths) { - context.stroke(_path); - } else { - context.stroke(); + ] + ]); + let pos = 0; + branchPos.set("main", { pos: 0, index: 0 }); + branchPos.set("feature", { pos: 107.49609375, index: 1 }); + branchPos.set("release", { pos: 224.03515625, index: 2 }); + describe("TB", () => { + pos = 30; + dir = "TB"; + const expectedCommitPositionTB = /* @__PURE__ */ new Map([ + ["commitZero", { x: 0, y: 40, posWithOffset: 40 }], + ["commitA", { x: 107.49609375, y: 90, posWithOffset: 90 }], + ["commitB", { x: 107.49609375, y: 140, posWithOffset: 140 }], + ["commitM", { x: 0, y: 190, posWithOffset: 190 }], + ["commitC", { x: 224.03515625, y: 240, posWithOffset: 240 }], + ["commit5_8928ea0", { x: 224.03515625, y: 290, posWithOffset: 290 }], + ["commitD", { x: 224.03515625, y: 340, posWithOffset: 340 }], + ["commit7_ed848ba", { x: 224.03515625, y: 390, posWithOffset: 390 }] + ]); + commits.forEach((commit2, key) => { + it(`should give the correct position for commit ${key}`, () => { + const position5 = getCommitPosition(commit2, pos, false); + expect(position5).toEqual(expectedCommitPositionTB.get(key)); + pos += 50; + }); + }); + }); + describe("LR", () => { + let pos2 = 30; + dir = "LR"; + const expectedCommitPositionLR = /* @__PURE__ */ new Map([ + ["commitZero", { x: 0, y: 40, posWithOffset: 40 }], + ["commitA", { x: 107.49609375, y: 90, posWithOffset: 90 }], + ["commitB", { x: 107.49609375, y: 140, posWithOffset: 140 }], + ["commitM", { x: 0, y: 190, posWithOffset: 190 }], + ["commitC", { x: 224.03515625, y: 240, posWithOffset: 240 }], + ["commit5_8928ea0", { x: 224.03515625, y: 290, posWithOffset: 290 }], + ["commitD", { x: 224.03515625, y: 340, posWithOffset: 340 }], + ["commit7_ed848ba", { x: 224.03515625, y: 390, posWithOffset: 390 }] + ]); + commits.forEach((commit2, key) => { + it(`should give the correct position for commit ${key}`, () => { + const position5 = getCommitPosition(commit2, pos2, false); + expect(position5).toEqual(expectedCommitPositionLR.get(key)); + pos2 += 50; + }); + }); + }); + describe("getCommitClassType", () => { + const expectedCommitClassType = /* @__PURE__ */ new Map([ + ["commitZero", "commit-normal"], + ["commitA", "commit-normal"], + ["commitB", "commit-normal"], + ["commitM", "commit-merge"], + ["commitC", "commit-normal"], + ["commit5_8928ea0", "commit-cherry-pick"], + ["commitD", "commit-normal"], + ["commit7_ed848ba", "commit-cherry-pick"] + ]); + commits.forEach((commit2, key) => { + it(`should give the correct class type for commit ${key}`, () => { + const classType = getCommitClassType(commit2); + expect(classType).toBe(expectedCommitClassType.get(key)); + }); + }); + }); + }); + describe("building BT parallel commit diagram", () => { + const commits = /* @__PURE__ */ new Map([ + [ + "1-abcdefg", + { + id: "1-abcdefg", + message: "", + seq: 0, + type: 0, + tags: [], + parents: [], + branch: "main" } - context.globalCompositeOperation = gco; - } - if (context.setLineDash) { - context.setLineDash([]); - } - } - }, "drawOutline"); - var drawOverlay = /* @__PURE__ */ __name(function drawOverlay2() { - if (shouldDrawOverlay) { - r2.drawNodeOverlay(context, node2, pos, nodeWidth, nodeHeight); - } - }, "drawOverlay"); - var drawUnderlay = /* @__PURE__ */ __name(function drawUnderlay2() { - if (shouldDrawOverlay) { - r2.drawNodeUnderlay(context, node2, pos, nodeWidth, nodeHeight); - } - }, "drawUnderlay"); - var drawText6 = /* @__PURE__ */ __name(function drawText7() { - r2.drawElementText(context, node2, null, drawLabel4); - }, "drawText"); - var ghost = node2.pstyle("ghost").value === "yes"; - if (ghost) { - var gx = node2.pstyle("ghost-offset-x").pfValue; - var gy = node2.pstyle("ghost-offset-y").pfValue; - var ghostOpacity = node2.pstyle("ghost-opacity").value; - var effGhostOpacity = ghostOpacity * eleOpacity; - context.translate(gx, gy); - setupOutlineColor(); - drawOutline(); - setupShapeColor(ghostOpacity * bgOpacity); - drawShape(); - drawImages(effGhostOpacity, true); - setupBorderColor(ghostOpacity * borderOpacity); - drawBorder(); - drawPie(darkness !== 0 || borderWidth !== 0); - drawImages(effGhostOpacity, false); - darken2(effGhostOpacity); - context.translate(-gx, -gy); - } - if (usePaths) { - context.translate(-pos.x, -pos.y); - } - drawUnderlay(); - if (usePaths) { - context.translate(pos.x, pos.y); - } - setupOutlineColor(); - drawOutline(); - setupShapeColor(); - drawShape(); - drawImages(eleOpacity, true); - setupBorderColor(); - drawBorder(); - drawPie(darkness !== 0 || borderWidth !== 0); - drawImages(eleOpacity, false); - darken2(); - if (usePaths) { - context.translate(-pos.x, -pos.y); - } - drawText6(); - drawOverlay(); - if (shiftToOriginWithBb) { - context.translate(bb.x1, bb.y1); - } - }; - drawNodeOverlayUnderlay = /* @__PURE__ */ __name(function drawNodeOverlayUnderlay2(overlayOrUnderlay) { - if (!["overlay", "underlay"].includes(overlayOrUnderlay)) { - throw new Error("Invalid state"); - } - return function(context, node2, pos, nodeWidth, nodeHeight) { - var r2 = this; - if (!node2.visible()) { - return; - } - var padding2 = node2.pstyle("".concat(overlayOrUnderlay, "-padding")).pfValue; - var opacity = node2.pstyle("".concat(overlayOrUnderlay, "-opacity")).value; - var color2 = node2.pstyle("".concat(overlayOrUnderlay, "-color")).value; - var shape = node2.pstyle("".concat(overlayOrUnderlay, "-shape")).value; - var radius2 = node2.pstyle("".concat(overlayOrUnderlay, "-corner-radius")).value; - if (opacity > 0) { - pos = pos || node2.position(); - if (nodeWidth == null || nodeHeight == null) { - var _padding = node2.padding(); - nodeWidth = node2.width() + 2 * _padding; - nodeHeight = node2.height() + 2 * _padding; - } - r2.colorFillStyle(context, color2[0], color2[1], color2[2], opacity); - r2.nodeShapes[shape].draw(context, pos.x, pos.y, nodeWidth + padding2 * 2, nodeHeight + padding2 * 2, radius2); - context.fill(); - } - }; - }, "drawNodeOverlayUnderlay"); - CRp$6.drawNodeOverlay = drawNodeOverlayUnderlay("overlay"); - CRp$6.drawNodeUnderlay = drawNodeOverlayUnderlay("underlay"); - CRp$6.hasPie = function(node2) { - node2 = node2[0]; - return node2._private.hasPie; - }; - CRp$6.drawPie = function(context, node2, nodeOpacity, pos) { - node2 = node2[0]; - pos = pos || node2.position(); - var cyStyle = node2.cy().style(); - var pieSize = node2.pstyle("pie-size"); - var x5 = pos.x; - var y5 = pos.y; - var nodeW = node2.width(); - var nodeH = node2.height(); - var radius2 = Math.min(nodeW, nodeH) / 2; - var lastPercent = 0; - var usePaths = this.usePaths(); - if (usePaths) { - x5 = 0; - y5 = 0; - } - if (pieSize.units === "%") { - radius2 = radius2 * pieSize.pfValue; - } else if (pieSize.pfValue !== void 0) { - radius2 = pieSize.pfValue / 2; - } - for (var i2 = 1; i2 <= cyStyle.pieBackgroundN; i2++) { - var size5 = node2.pstyle("pie-" + i2 + "-background-size").value; - var color2 = node2.pstyle("pie-" + i2 + "-background-color").value; - var opacity = node2.pstyle("pie-" + i2 + "-background-opacity").value * nodeOpacity; - var percent = size5 / 100; - if (percent + lastPercent > 1) { - percent = 1 - lastPercent; - } - var angleStart = 1.5 * Math.PI + 2 * Math.PI * lastPercent; - var angleDelta = 2 * Math.PI * percent; - var angleEnd = angleStart + angleDelta; - if (size5 === 0 || lastPercent >= 1 || lastPercent + percent > 1) { - continue; - } - context.beginPath(); - context.moveTo(x5, y5); - context.arc(x5, y5, radius2, angleStart, angleEnd); - context.closePath(); - this.colorFillStyle(context, color2[0], color2[1], color2[2], opacity); - context.fill(); - lastPercent += percent; - } - }; - CRp$5 = {}; - motionBlurDelay = 100; - CRp$5.getPixelRatio = function() { - var context = this.data.contexts[0]; - if (this.forcedPixelRatio != null) { - return this.forcedPixelRatio; - } - var containerWindow = this.cy.window(); - var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1; - return (containerWindow.devicePixelRatio || 1) / backingStore; - }; - CRp$5.paintCache = function(context) { - var caches = this.paintCaches = this.paintCaches || []; - var needToCreateCache = true; - var cache3; - for (var i2 = 0; i2 < caches.length; i2++) { - cache3 = caches[i2]; - if (cache3.context === context) { - needToCreateCache = false; - break; - } - } - if (needToCreateCache) { - cache3 = { - context - }; - caches.push(cache3); - } - return cache3; + ], + [ + "2-abcdefg", + { + id: "2-abcdefg", + message: "", + seq: 1, + type: 0, + tags: [], + parents: ["1-abcdefg"], + branch: "main" + } + ], + [ + "3-abcdefg", + { + id: "3-abcdefg", + message: "", + seq: 2, + type: 0, + tags: [], + parents: ["2-abcdefg"], + branch: "develop" + } + ], + [ + "4-abcdefg", + { + id: "4-abcdefg", + message: "", + seq: 3, + type: 0, + tags: [], + parents: ["3-abcdefg"], + branch: "develop" + } + ], + [ + "5-abcdefg", + { + id: "5-abcdefg", + message: "", + seq: 4, + type: 0, + tags: [], + parents: ["2-abcdefg"], + branch: "feature" + } + ], + [ + "6-abcdefg", + { + id: "6-abcdefg", + message: "", + seq: 5, + type: 0, + tags: [], + parents: ["5-abcdefg"], + branch: "feature" + } + ], + [ + "7-abcdefg", + { + id: "7-abcdefg", + message: "", + seq: 6, + type: 0, + tags: [], + parents: ["2-abcdefg"], + branch: "main" + } + ], + [ + "8-abcdefg", + { + id: "8-abcdefg", + message: "", + seq: 7, + type: 0, + tags: [], + parents: ["7-abcdefg"], + branch: "main" + } + ] + ]); + const expectedCommitPosition = /* @__PURE__ */ new Map([ + ["1-abcdefg", { x: 0, y: 40 }], + ["2-abcdefg", { x: 0, y: 90 }], + ["3-abcdefg", { x: 107.49609375, y: 140 }], + ["4-abcdefg", { x: 107.49609375, y: 190 }], + ["5-abcdefg", { x: 225.70703125, y: 140 }], + ["6-abcdefg", { x: 225.70703125, y: 190 }], + ["7-abcdefg", { x: 0, y: 140 }], + ["8-abcdefg", { x: 0, y: 190 }] + ]); + const expectedCommitPositionAfterParallel = /* @__PURE__ */ new Map([ + ["1-abcdefg", { x: 0, y: 210 }], + ["2-abcdefg", { x: 0, y: 160 }], + ["3-abcdefg", { x: 107.49609375, y: 110 }], + ["4-abcdefg", { x: 107.49609375, y: 60 }], + ["5-abcdefg", { x: 225.70703125, y: 110 }], + ["6-abcdefg", { x: 225.70703125, y: 60 }], + ["7-abcdefg", { x: 0, y: 110 }], + ["8-abcdefg", { x: 0, y: 60 }] + ]); + const expectedCommitCurrentPosition = /* @__PURE__ */ new Map([ + ["1-abcdefg", 30], + ["2-abcdefg", 80], + ["3-abcdefg", 130], + ["4-abcdefg", 180], + ["5-abcdefg", 130], + ["6-abcdefg", 180], + ["7-abcdefg", 130], + ["8-abcdefg", 180] + ]); + const sortedKeys = [...expectedCommitPosition.keys()]; + it("should get the correct commit position and current position", () => { + dir = "BT"; + let curPos = 30; + commitPos.clear(); + branchPos.clear(); + branchPos.set("main", { pos: 0, index: 0 }); + branchPos.set("develop", { pos: 107.49609375, index: 1 }); + branchPos.set("feature", { pos: 225.70703125, index: 2 }); + DEFAULT_GITGRAPH_CONFIG2.parallelCommits = true; + commits.forEach((commit2, key) => { + if (commit2.parents.length > 0) { + curPos = calculateCommitPosition(commit2); + } + const position5 = setCommitPosition(commit2, curPos); + expect(position5).toEqual(expectedCommitPosition.get(key)); + expect(curPos).toEqual(expectedCommitCurrentPosition.get(key)); + }); + }); + it("should get the correct commit position after parallel commits", () => { + commitPos.clear(); + branchPos.clear(); + dir = "BT"; + const curPos = 30; + commitPos.clear(); + branchPos.clear(); + branchPos.set("main", { pos: 0, index: 0 }); + branchPos.set("develop", { pos: 107.49609375, index: 1 }); + branchPos.set("feature", { pos: 225.70703125, index: 2 }); + setParallelBTPos(sortedKeys, commits, curPos); + sortedKeys.forEach((commit2) => { + const position5 = commitPos.get(commit2); + expect(position5).toEqual(expectedCommitPositionAfterParallel.get(commit2)); + }); + }); + }); + DEFAULT_GITGRAPH_CONFIG2.parallelCommits = false; + it("add", () => { + commitPos.set("parent1", { x: 1, y: 1 }); + commitPos.set("parent2", { x: 2, y: 2 }); + commitPos.set("parent3", { x: 3, y: 3 }); + dir = "LR"; + const parents3 = ["parent1", "parent2", "parent3"]; + const closestParent = findClosestParent(parents3); + expect(closestParent).toBe("parent3"); + commitPos.clear(); + }); + } + } + }); + + // src/diagrams/git/styles.js + var getStyles5, styles_default5; + var init_styles5 = __esm({ + "src/diagrams/git/styles.js"() { + "use strict"; + getStyles5 = /* @__PURE__ */ __name((options2) => ` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + ${[0, 1, 2, 3, 4, 5, 6, 7].map( + (i2) => ` + .branch-label${i2} { fill: ${options2["gitBranchLabel" + i2]}; } + .commit${i2} { stroke: ${options2["git" + i2]}; fill: ${options2["git" + i2]}; } + .commit-highlight${i2} { stroke: ${options2["gitInv" + i2]}; fill: ${options2["gitInv" + i2]}; } + .label${i2} { fill: ${options2["git" + i2]}; } + .arrow${i2} { stroke: ${options2["git" + i2]}; } + ` + ).join("\n")} + + .branch { + stroke-width: 1; + stroke: ${options2.lineColor}; + stroke-dasharray: 2; + } + .commit-label { font-size: ${options2.commitLabelFontSize}; fill: ${options2.commitLabelColor};} + .commit-label-bkg { font-size: ${options2.commitLabelFontSize}; fill: ${options2.commitLabelBackground}; opacity: 0.5; } + .tag-label { font-size: ${options2.tagLabelFontSize}; fill: ${options2.tagLabelColor};} + .tag-label-bkg { fill: ${options2.tagLabelBackground}; stroke: ${options2.tagLabelBorder}; } + .tag-hole { fill: ${options2.textColor}; } + + .commit-merge { + stroke: ${options2.primaryColor}; + fill: ${options2.primaryColor}; + } + .commit-reverse { + stroke: ${options2.primaryColor}; + fill: ${options2.primaryColor}; + stroke-width: 3; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${options2.primaryColor}; + fill: ${options2.primaryColor}; + } + + .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${options2.textColor}; + } +`, "getStyles"); + styles_default5 = getStyles5; + } + }); + + // src/diagrams/git/gitGraphDiagram.ts + var gitGraphDiagram_exports = {}; + __export(gitGraphDiagram_exports, { + diagram: () => diagram4 + }); + var diagram4; + var init_gitGraphDiagram = __esm({ + "src/diagrams/git/gitGraphDiagram.ts"() { + "use strict"; + init_gitGraphParser(); + init_gitGraphAst(); + init_gitGraphRenderer(); + init_styles5(); + diagram4 = { + parser: parser4, + db, + renderer: gitGraphRenderer_default, + styles: styles_default5 }; - CRp$5.createGradientStyleFor = function(context, shapeStyleName, ele, fill, opacity) { - var gradientStyle; - var usePaths = this.usePaths(); - var colors2 = ele.pstyle(shapeStyleName + "-gradient-stop-colors").value, positions2 = ele.pstyle(shapeStyleName + "-gradient-stop-positions").pfValue; - if (fill === "radial-gradient") { - if (ele.isEdge()) { - var start3 = ele.sourceEndpoint(), end2 = ele.targetEndpoint(), mid = ele.midpoint(); - var d1 = dist(start3, mid); - var d2 = dist(end2, mid); - gradientStyle = context.createRadialGradient(mid.x, mid.y, 0, mid.x, mid.y, Math.max(d1, d2)); - } else { - var pos = usePaths ? { - x: 0, - y: 0 - } : ele.position(), width3 = ele.paddedWidth(), height2 = ele.paddedHeight(); - gradientStyle = context.createRadialGradient(pos.x, pos.y, 0, pos.x, pos.y, Math.max(width3, height2)); - } - } else { - if (ele.isEdge()) { - var _start = ele.sourceEndpoint(), _end = ele.targetEndpoint(); - gradientStyle = context.createLinearGradient(_start.x, _start.y, _end.x, _end.y); - } else { - var _pos = usePaths ? { - x: 0, - y: 0 - } : ele.position(), _width = ele.paddedWidth(), _height = ele.paddedHeight(), halfWidth = _width / 2, halfHeight = _height / 2; - var direction = ele.pstyle("background-gradient-direction").value; - switch (direction) { - case "to-bottom": - gradientStyle = context.createLinearGradient(_pos.x, _pos.y - halfHeight, _pos.x, _pos.y + halfHeight); + } + }); + + // src/diagrams/gantt/parser/gantt.jison + var parser5, gantt_default; + var init_gantt = __esm({ + "src/diagrams/gantt/parser/gantt.jison"() { + "use strict"; + parser5 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; + return o3; + }, "o"), $V0 = [6, 8, 10, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 35, 36, 38, 40], $V1 = [1, 26], $V2 = [1, 27], $V3 = [1, 28], $V4 = [1, 29], $V5 = [1, 30], $V6 = [1, 31], $V7 = [1, 32], $V8 = [1, 33], $V9 = [1, 34], $Va = [1, 9], $Vb = [1, 10], $Vc = [1, 11], $Vd = [1, 12], $Ve = [1, 13], $Vf = [1, 14], $Vg = [1, 15], $Vh = [1, 16], $Vi = [1, 19], $Vj = [1, 20], $Vk = [1, 21], $Vl = [1, 22], $Vm = [1, 23], $Vn = [1, 25], $Vo = [1, 35]; + var parser24 = { + trace: /* @__PURE__ */ __name(function trace() { + }, "trace"), + yy: {}, + symbols_: { "error": 2, "start": 3, "gantt": 4, "document": 5, "EOF": 6, "line": 7, "SPACE": 8, "statement": 9, "NL": 10, "weekday": 11, "weekday_monday": 12, "weekday_tuesday": 13, "weekday_wednesday": 14, "weekday_thursday": 15, "weekday_friday": 16, "weekday_saturday": 17, "weekday_sunday": 18, "weekend": 19, "weekend_friday": 20, "weekend_saturday": 21, "dateFormat": 22, "inclusiveEndDates": 23, "topAxis": 24, "axisFormat": 25, "tickInterval": 26, "excludes": 27, "includes": 28, "todayMarker": 29, "title": 30, "acc_title": 31, "acc_title_value": 32, "acc_descr": 33, "acc_descr_value": 34, "acc_descr_multiline_value": 35, "section": 36, "clickStatement": 37, "taskTxt": 38, "taskData": 39, "click": 40, "callbackname": 41, "callbackargs": 42, "href": 43, "clickStatementDebug": 44, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 4: "gantt", 6: "EOF", 8: "SPACE", 10: "NL", 12: "weekday_monday", 13: "weekday_tuesday", 14: "weekday_wednesday", 15: "weekday_thursday", 16: "weekday_friday", 17: "weekday_saturday", 18: "weekday_sunday", 20: "weekend_friday", 21: "weekend_saturday", 22: "dateFormat", 23: "inclusiveEndDates", 24: "topAxis", 25: "axisFormat", 26: "tickInterval", 27: "excludes", 28: "includes", 29: "todayMarker", 30: "title", 31: "acc_title", 32: "acc_title_value", 33: "acc_descr", 34: "acc_descr_value", 35: "acc_descr_multiline_value", 36: "section", 38: "taskTxt", 39: "taskData", 40: "click", 41: "callbackname", 42: "callbackargs", 43: "href" }, + productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [19, 1], [19, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 2], [37, 2], [37, 3], [37, 3], [37, 4], [37, 3], [37, 4], [37, 2], [44, 2], [44, 3], [44, 3], [44, 4], [44, 3], [44, 4], [44, 2]], + performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 1: + return $$[$0 - 1]; break; - case "to-top": - gradientStyle = context.createLinearGradient(_pos.x, _pos.y + halfHeight, _pos.x, _pos.y - halfHeight); + case 2: + this.$ = []; break; - case "to-left": - gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y, _pos.x - halfWidth, _pos.y); + case 3: + $$[$0 - 1].push($$[$0]); + this.$ = $$[$0 - 1]; break; - case "to-right": - gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y, _pos.x + halfWidth, _pos.y); + case 4: + case 5: + this.$ = $$[$0]; break; - case "to-bottom-right": - case "to-right-bottom": - gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y - halfHeight, _pos.x + halfWidth, _pos.y + halfHeight); + case 6: + case 7: + this.$ = []; break; - case "to-top-right": - case "to-right-top": - gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y + halfHeight, _pos.x + halfWidth, _pos.y - halfHeight); + case 8: + yy.setWeekday("monday"); break; - case "to-bottom-left": - case "to-left-bottom": - gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y - halfHeight, _pos.x - halfWidth, _pos.y + halfHeight); + case 9: + yy.setWeekday("tuesday"); break; - case "to-top-left": - case "to-left-top": - gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y + halfHeight, _pos.x - halfWidth, _pos.y - halfHeight); + case 10: + yy.setWeekday("wednesday"); + break; + case 11: + yy.setWeekday("thursday"); + break; + case 12: + yy.setWeekday("friday"); + break; + case 13: + yy.setWeekday("saturday"); + break; + case 14: + yy.setWeekday("sunday"); + break; + case 15: + yy.setWeekend("friday"); + break; + case 16: + yy.setWeekend("saturday"); + break; + case 17: + yy.setDateFormat($$[$0].substr(11)); + this.$ = $$[$0].substr(11); + break; + case 18: + yy.enableInclusiveEndDates(); + this.$ = $$[$0].substr(18); + break; + case 19: + yy.TopAxis(); + this.$ = $$[$0].substr(8); + break; + case 20: + yy.setAxisFormat($$[$0].substr(11)); + this.$ = $$[$0].substr(11); + break; + case 21: + yy.setTickInterval($$[$0].substr(13)); + this.$ = $$[$0].substr(13); + break; + case 22: + yy.setExcludes($$[$0].substr(9)); + this.$ = $$[$0].substr(9); + break; + case 23: + yy.setIncludes($$[$0].substr(9)); + this.$ = $$[$0].substr(9); + break; + case 24: + yy.setTodayMarker($$[$0].substr(12)); + this.$ = $$[$0].substr(12); + break; + case 27: + yy.setDiagramTitle($$[$0].substr(6)); + this.$ = $$[$0].substr(6); + break; + case 28: + this.$ = $$[$0].trim(); + yy.setAccTitle(this.$); + break; + case 29: + case 30: + this.$ = $$[$0].trim(); + yy.setAccDescription(this.$); + break; + case 31: + yy.addSection($$[$0].substr(8)); + this.$ = $$[$0].substr(8); + break; + case 33: + yy.addTask($$[$0 - 1], $$[$0]); + this.$ = "task"; + break; + case 34: + this.$ = $$[$0 - 1]; + yy.setClickEvent($$[$0 - 1], $$[$0], null); + break; + case 35: + this.$ = $$[$0 - 2]; + yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]); + break; + case 36: + this.$ = $$[$0 - 2]; + yy.setClickEvent($$[$0 - 2], $$[$0 - 1], null); + yy.setLink($$[$0 - 2], $$[$0]); + break; + case 37: + this.$ = $$[$0 - 3]; + yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]); + yy.setLink($$[$0 - 3], $$[$0]); + break; + case 38: + this.$ = $$[$0 - 2]; + yy.setClickEvent($$[$0 - 2], $$[$0], null); + yy.setLink($$[$0 - 2], $$[$0 - 1]); + break; + case 39: + this.$ = $$[$0 - 3]; + yy.setClickEvent($$[$0 - 3], $$[$0 - 1], $$[$0]); + yy.setLink($$[$0 - 3], $$[$0 - 2]); + break; + case 40: + this.$ = $$[$0 - 1]; + yy.setLink($$[$0 - 1], $$[$0]); + break; + case 41: + case 47: + this.$ = $$[$0 - 1] + " " + $$[$0]; + break; + case 42: + case 43: + case 45: + this.$ = $$[$0 - 2] + " " + $$[$0 - 1] + " " + $$[$0]; + break; + case 44: + case 46: + this.$ = $$[$0 - 3] + " " + $$[$0 - 2] + " " + $$[$0 - 1] + " " + $$[$0]; break; } - } - } - if (!gradientStyle) return null; - var hasPositions = positions2.length === colors2.length; - var length2 = colors2.length; - for (var i2 = 0; i2 < length2; i2++) { - gradientStyle.addColorStop(hasPositions ? positions2[i2] : i2 / (length2 - 1), "rgba(" + colors2[i2][0] + "," + colors2[i2][1] + "," + colors2[i2][2] + "," + opacity + ")"); - } - return gradientStyle; - }; - CRp$5.gradientFillStyle = function(context, ele, fill, opacity) { - var gradientStyle = this.createGradientStyleFor(context, "background", ele, fill, opacity); - if (!gradientStyle) return null; - context.fillStyle = gradientStyle; - }; - CRp$5.colorFillStyle = function(context, r2, g2, b2, a2) { - context.fillStyle = "rgba(" + r2 + "," + g2 + "," + b2 + "," + a2 + ")"; - }; - CRp$5.eleFillStyle = function(context, ele, opacity) { - var backgroundFill = ele.pstyle("background-fill").value; - if (backgroundFill === "linear-gradient" || backgroundFill === "radial-gradient") { - this.gradientFillStyle(context, ele, backgroundFill, opacity); - } else { - var backgroundColor = ele.pstyle("background-color").value; - this.colorFillStyle(context, backgroundColor[0], backgroundColor[1], backgroundColor[2], opacity); - } - }; - CRp$5.gradientStrokeStyle = function(context, ele, fill, opacity) { - var gradientStyle = this.createGradientStyleFor(context, "line", ele, fill, opacity); - if (!gradientStyle) return null; - context.strokeStyle = gradientStyle; - }; - CRp$5.colorStrokeStyle = function(context, r2, g2, b2, a2) { - context.strokeStyle = "rgba(" + r2 + "," + g2 + "," + b2 + "," + a2 + ")"; - }; - CRp$5.eleStrokeStyle = function(context, ele, opacity) { - var lineFill = ele.pstyle("line-fill").value; - if (lineFill === "linear-gradient" || lineFill === "radial-gradient") { - this.gradientStrokeStyle(context, ele, lineFill, opacity); - } else { - var lineColor = ele.pstyle("line-color").value; - this.colorStrokeStyle(context, lineColor[0], lineColor[1], lineColor[2], opacity); - } - }; - CRp$5.matchCanvasSize = function(container2) { - var r2 = this; - var data6 = r2.data; - var bb = r2.findContainerClientCoords(); - var width3 = bb[2]; - var height2 = bb[3]; - var pixelRatio = r2.getPixelRatio(); - var mbPxRatio = r2.motionBlurPxRatio; - if (container2 === r2.data.bufferCanvases[r2.MOTIONBLUR_BUFFER_NODE] || container2 === r2.data.bufferCanvases[r2.MOTIONBLUR_BUFFER_DRAG]) { - pixelRatio = mbPxRatio; - } - var canvasWidth = width3 * pixelRatio; - var canvasHeight = height2 * pixelRatio; - var canvas; - if (canvasWidth === r2.canvasWidth && canvasHeight === r2.canvasHeight) { - return; - } - r2.fontCaches = null; - var canvasContainer = data6.canvasContainer; - canvasContainer.style.width = width3 + "px"; - canvasContainer.style.height = height2 + "px"; - for (var i2 = 0; i2 < r2.CANVAS_LAYERS; i2++) { - canvas = data6.canvases[i2]; - canvas.width = canvasWidth; - canvas.height = canvasHeight; - canvas.style.width = width3 + "px"; - canvas.style.height = height2 + "px"; - } - for (var i2 = 0; i2 < r2.BUFFER_COUNT; i2++) { - canvas = data6.bufferCanvases[i2]; - canvas.width = canvasWidth; - canvas.height = canvasHeight; - canvas.style.width = width3 + "px"; - canvas.style.height = height2 + "px"; - } - r2.textureMult = 1; - if (pixelRatio <= 1) { - canvas = data6.bufferCanvases[r2.TEXTURE_BUFFER]; - r2.textureMult = 2; - canvas.width = canvasWidth * r2.textureMult; - canvas.height = canvasHeight * r2.textureMult; - } - r2.canvasWidth = canvasWidth; - r2.canvasHeight = canvasHeight; - r2.pixelRatio = pixelRatio; - }; - CRp$5.renderTo = function(cxt, zoom2, pan2, pxRatio) { - this.render({ - forcedContext: cxt, - forcedZoom: zoom2, - forcedPan: pan2, - drawAllLayers: true, - forcedPxRatio: pxRatio - }); - }; - CRp$5.clearCanvas = function() { - var r2 = this; - var data6 = r2.data; - function clear22(context) { - context.clearRect(0, 0, r2.canvasWidth, r2.canvasHeight); - } - __name(clear22, "clear"); - clear22(data6.contexts[r2.NODE]); - clear22(data6.contexts[r2.DRAG]); - }; - CRp$5.render = function(options3) { - var r2 = this; - options3 = options3 || staticEmptyObject(); - var cy = r2.cy; - var forcedContext = options3.forcedContext; - var drawAllLayers = options3.drawAllLayers; - var drawOnlyNodeLayer = options3.drawOnlyNodeLayer; - var forcedZoom = options3.forcedZoom; - var forcedPan = options3.forcedPan; - var pixelRatio = options3.forcedPxRatio === void 0 ? this.getPixelRatio() : options3.forcedPxRatio; - var data6 = r2.data; - var needDraw = data6.canvasNeedsRedraw; - var textureDraw = r2.textureOnViewport && !forcedContext && (r2.pinching || r2.hoverData.dragging || r2.swipePanning || r2.data.wheelZooming); - var motionBlur = options3.motionBlur !== void 0 ? options3.motionBlur : r2.motionBlur; - var mbPxRatio = r2.motionBlurPxRatio; - var hasCompoundNodes2 = cy.hasCompoundNodes(); - var inNodeDragGesture = r2.hoverData.draggingEles; - var inBoxSelection = r2.hoverData.selecting || r2.touchData.selecting ? true : false; - motionBlur = motionBlur && !forcedContext && r2.motionBlurEnabled && !inBoxSelection; - var motionBlurFadeEffect = motionBlur; - if (!forcedContext) { - if (r2.prevPxRatio !== pixelRatio) { - r2.invalidateContainerClientCoordsCache(); - r2.matchCanvasSize(r2.container); - r2.redrawHint("eles", true); - r2.redrawHint("drag", true); - } - r2.prevPxRatio = pixelRatio; - } - if (!forcedContext && r2.motionBlurTimeout) { - clearTimeout(r2.motionBlurTimeout); - } - if (motionBlur) { - if (r2.mbFrames == null) { - r2.mbFrames = 0; - } - r2.mbFrames++; - if (r2.mbFrames < 3) { - motionBlurFadeEffect = false; - } - if (r2.mbFrames > r2.minMbLowQualFrames) { - r2.motionBlurPxRatio = r2.mbPxRBlurry; - } - } - if (r2.clearingMotionBlur) { - r2.motionBlurPxRatio = 1; - } - if (r2.textureDrawLastFrame && !textureDraw) { - needDraw[r2.NODE] = true; - needDraw[r2.SELECT_BOX] = true; - } - var style3 = cy.style(); - var zoom2 = cy.zoom(); - var effectiveZoom = forcedZoom !== void 0 ? forcedZoom : zoom2; - var pan2 = cy.pan(); - var effectivePan = { - x: pan2.x, - y: pan2.y - }; - var vp = { - zoom: zoom2, - pan: { - x: pan2.x, - y: pan2.y - } - }; - var prevVp = r2.prevViewport; - var viewportIsDiff = prevVp === void 0 || vp.zoom !== prevVp.zoom || vp.pan.x !== prevVp.pan.x || vp.pan.y !== prevVp.pan.y; - if (!viewportIsDiff && !(inNodeDragGesture && !hasCompoundNodes2)) { - r2.motionBlurPxRatio = 1; - } - if (forcedPan) { - effectivePan = forcedPan; - } - effectiveZoom *= pixelRatio; - effectivePan.x *= pixelRatio; - effectivePan.y *= pixelRatio; - var eles = r2.getCachedZSortedEles(); - function mbclear(context2, x5, y5, w3, h2) { - var gco = context2.globalCompositeOperation; - context2.globalCompositeOperation = "destination-out"; - r2.colorFillStyle(context2, 255, 255, 255, r2.motionBlurTransparency); - context2.fillRect(x5, y5, w3, h2); - context2.globalCompositeOperation = gco; - } - __name(mbclear, "mbclear"); - function setContextTransform2(context2, clear23) { - var ePan, eZoom, w3, h2; - if (!r2.clearingMotionBlur && (context2 === data6.bufferContexts[r2.MOTIONBLUR_BUFFER_NODE] || context2 === data6.bufferContexts[r2.MOTIONBLUR_BUFFER_DRAG])) { - ePan = { - x: pan2.x * mbPxRatio, - y: pan2.y * mbPxRatio - }; - eZoom = zoom2 * mbPxRatio; - w3 = r2.canvasWidth * mbPxRatio; - h2 = r2.canvasHeight * mbPxRatio; - } else { - ePan = effectivePan; - eZoom = effectiveZoom; - w3 = r2.canvasWidth; - h2 = r2.canvasHeight; - } - context2.setTransform(1, 0, 0, 1, 0, 0); - if (clear23 === "motionBlur") { - mbclear(context2, 0, 0, w3, h2); - } else if (!forcedContext && (clear23 === void 0 || clear23)) { - context2.clearRect(0, 0, w3, h2); - } - if (!drawAllLayers) { - context2.translate(ePan.x, ePan.y); - context2.scale(eZoom, eZoom); - } - if (forcedPan) { - context2.translate(forcedPan.x, forcedPan.y); - } - if (forcedZoom) { - context2.scale(forcedZoom, forcedZoom); - } - } - __name(setContextTransform2, "setContextTransform"); - if (!textureDraw) { - r2.textureDrawLastFrame = false; - } - if (textureDraw) { - r2.textureDrawLastFrame = true; - if (!r2.textureCache) { - r2.textureCache = {}; - r2.textureCache.bb = cy.mutableElements().boundingBox(); - r2.textureCache.texture = r2.data.bufferCanvases[r2.TEXTURE_BUFFER]; - var cxt = r2.data.bufferContexts[r2.TEXTURE_BUFFER]; - cxt.setTransform(1, 0, 0, 1, 0, 0); - cxt.clearRect(0, 0, r2.canvasWidth * r2.textureMult, r2.canvasHeight * r2.textureMult); - r2.render({ - forcedContext: cxt, - drawOnlyNodeLayer: true, - forcedPxRatio: pixelRatio * r2.textureMult - }); - var vp = r2.textureCache.viewport = { - zoom: cy.zoom(), - pan: cy.pan(), - width: r2.canvasWidth, - height: r2.canvasHeight - }; - vp.mpan = { - x: (0 - vp.pan.x) / vp.zoom, - y: (0 - vp.pan.y) / vp.zoom - }; - } - needDraw[r2.DRAG] = false; - needDraw[r2.NODE] = false; - var context = data6.contexts[r2.NODE]; - var texture = r2.textureCache.texture; - var vp = r2.textureCache.viewport; - context.setTransform(1, 0, 0, 1, 0, 0); - if (motionBlur) { - mbclear(context, 0, 0, vp.width, vp.height); - } else { - context.clearRect(0, 0, vp.width, vp.height); - } - var outsideBgColor = style3.core("outside-texture-bg-color").value; - var outsideBgOpacity = style3.core("outside-texture-bg-opacity").value; - r2.colorFillStyle(context, outsideBgColor[0], outsideBgColor[1], outsideBgColor[2], outsideBgOpacity); - context.fillRect(0, 0, vp.width, vp.height); - var zoom2 = cy.zoom(); - setContextTransform2(context, false); - context.clearRect(vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); - context.drawImage(texture, vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); - } else if (r2.textureOnViewport && !forcedContext) { - r2.textureCache = null; - } - var extent2 = cy.extent(); - var vpManip = r2.pinching || r2.hoverData.dragging || r2.swipePanning || r2.data.wheelZooming || r2.hoverData.draggingEles || r2.cy.animated(); - var hideEdges = r2.hideEdgesOnViewport && vpManip; - var needMbClear = []; - needMbClear[r2.NODE] = !needDraw[r2.NODE] && motionBlur && !r2.clearedForMotionBlur[r2.NODE] || r2.clearingMotionBlur; - if (needMbClear[r2.NODE]) { - r2.clearedForMotionBlur[r2.NODE] = true; - } - needMbClear[r2.DRAG] = !needDraw[r2.DRAG] && motionBlur && !r2.clearedForMotionBlur[r2.DRAG] || r2.clearingMotionBlur; - if (needMbClear[r2.DRAG]) { - r2.clearedForMotionBlur[r2.DRAG] = true; - } - if (needDraw[r2.NODE] || drawAllLayers || drawOnlyNodeLayer || needMbClear[r2.NODE]) { - var useBuffer = motionBlur && !needMbClear[r2.NODE] && mbPxRatio !== 1; - var context = forcedContext || (useBuffer ? r2.data.bufferContexts[r2.MOTIONBLUR_BUFFER_NODE] : data6.contexts[r2.NODE]); - var clear22 = motionBlur && !useBuffer ? "motionBlur" : void 0; - setContextTransform2(context, clear22); - if (hideEdges) { - r2.drawCachedNodes(context, eles.nondrag, pixelRatio, extent2); - } else { - r2.drawLayeredElements(context, eles.nondrag, pixelRatio, extent2); - } - if (r2.debug) { - r2.drawDebugPoints(context, eles.nondrag); - } - if (!drawAllLayers && !motionBlur) { - needDraw[r2.NODE] = false; - } - } - if (!drawOnlyNodeLayer && (needDraw[r2.DRAG] || drawAllLayers || needMbClear[r2.DRAG])) { - var useBuffer = motionBlur && !needMbClear[r2.DRAG] && mbPxRatio !== 1; - var context = forcedContext || (useBuffer ? r2.data.bufferContexts[r2.MOTIONBLUR_BUFFER_DRAG] : data6.contexts[r2.DRAG]); - setContextTransform2(context, motionBlur && !useBuffer ? "motionBlur" : void 0); - if (hideEdges) { - r2.drawCachedNodes(context, eles.drag, pixelRatio, extent2); - } else { - r2.drawCachedElements(context, eles.drag, pixelRatio, extent2); - } - if (r2.debug) { - r2.drawDebugPoints(context, eles.drag); - } - if (!drawAllLayers && !motionBlur) { - needDraw[r2.DRAG] = false; - } - } - this.drawSelectionRectangle(options3, setContextTransform2); - if (motionBlur && mbPxRatio !== 1) { - var cxtNode = data6.contexts[r2.NODE]; - var txtNode = r2.data.bufferCanvases[r2.MOTIONBLUR_BUFFER_NODE]; - var cxtDrag = data6.contexts[r2.DRAG]; - var txtDrag = r2.data.bufferCanvases[r2.MOTIONBLUR_BUFFER_DRAG]; - var drawMotionBlur = /* @__PURE__ */ __name(function drawMotionBlur2(cxt2, txt, needClear) { - cxt2.setTransform(1, 0, 0, 1, 0, 0); - if (needClear || !motionBlurFadeEffect) { - cxt2.clearRect(0, 0, r2.canvasWidth, r2.canvasHeight); + }, "anonymous"), + table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o2($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: 17, 12: $V1, 13: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: 18, 20: $V8, 21: $V9, 22: $Va, 23: $Vb, 24: $Vc, 25: $Vd, 26: $Ve, 27: $Vf, 28: $Vg, 29: $Vh, 30: $Vi, 31: $Vj, 33: $Vk, 35: $Vl, 36: $Vm, 37: 24, 38: $Vn, 40: $Vo }, o2($V0, [2, 7], { 1: [2, 1] }), o2($V0, [2, 3]), { 9: 36, 11: 17, 12: $V1, 13: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: 18, 20: $V8, 21: $V9, 22: $Va, 23: $Vb, 24: $Vc, 25: $Vd, 26: $Ve, 27: $Vf, 28: $Vg, 29: $Vh, 30: $Vi, 31: $Vj, 33: $Vk, 35: $Vl, 36: $Vm, 37: 24, 38: $Vn, 40: $Vo }, o2($V0, [2, 5]), o2($V0, [2, 6]), o2($V0, [2, 17]), o2($V0, [2, 18]), o2($V0, [2, 19]), o2($V0, [2, 20]), o2($V0, [2, 21]), o2($V0, [2, 22]), o2($V0, [2, 23]), o2($V0, [2, 24]), o2($V0, [2, 25]), o2($V0, [2, 26]), o2($V0, [2, 27]), { 32: [1, 37] }, { 34: [1, 38] }, o2($V0, [2, 30]), o2($V0, [2, 31]), o2($V0, [2, 32]), { 39: [1, 39] }, o2($V0, [2, 8]), o2($V0, [2, 9]), o2($V0, [2, 10]), o2($V0, [2, 11]), o2($V0, [2, 12]), o2($V0, [2, 13]), o2($V0, [2, 14]), o2($V0, [2, 15]), o2($V0, [2, 16]), { 41: [1, 40], 43: [1, 41] }, o2($V0, [2, 4]), o2($V0, [2, 28]), o2($V0, [2, 29]), o2($V0, [2, 33]), o2($V0, [2, 34], { 42: [1, 42], 43: [1, 43] }), o2($V0, [2, 40], { 41: [1, 44] }), o2($V0, [2, 35], { 43: [1, 45] }), o2($V0, [2, 36]), o2($V0, [2, 38], { 42: [1, 46] }), o2($V0, [2, 37]), o2($V0, [2, 39])], + defaultActions: {}, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); } else { - mbclear(cxt2, 0, 0, r2.canvasWidth, r2.canvasHeight); - } - var pxr = mbPxRatio; - cxt2.drawImage( - txt, - // img - 0, - 0, - // sx, sy - r2.canvasWidth * pxr, - r2.canvasHeight * pxr, - // sw, sh - 0, - 0, - // x, y - r2.canvasWidth, - r2.canvasHeight - // w, h - ); - }, "drawMotionBlur"); - if (needDraw[r2.NODE] || needMbClear[r2.NODE]) { - drawMotionBlur(cxtNode, txtNode, needMbClear[r2.NODE]); - needDraw[r2.NODE] = false; - } - if (needDraw[r2.DRAG] || needMbClear[r2.DRAG]) { - drawMotionBlur(cxtDrag, txtDrag, needMbClear[r2.DRAG]); - needDraw[r2.DRAG] = false; - } - } - r2.prevViewport = vp; - if (r2.clearingMotionBlur) { - r2.clearingMotionBlur = false; - r2.motionBlurCleared = true; - r2.motionBlur = true; - } - if (motionBlur) { - r2.motionBlurTimeout = setTimeout(function() { - r2.motionBlurTimeout = null; - r2.clearedForMotionBlur[r2.NODE] = false; - r2.clearedForMotionBlur[r2.DRAG] = false; - r2.motionBlur = false; - r2.clearingMotionBlur = !textureDraw; - r2.mbFrames = 0; - needDraw[r2.NODE] = true; - needDraw[r2.DRAG] = true; - r2.redraw(); - }, motionBlurDelay); - } - if (!forcedContext) { - cy.emit("render"); - } - }; - CRp$5.drawSelectionRectangle = function(options3, setContextTransform2) { - var r2 = this; - var cy = r2.cy; - var data6 = r2.data; - var style3 = cy.style(); - var drawOnlyNodeLayer = options3.drawOnlyNodeLayer; - var drawAllLayers = options3.drawAllLayers; - var needDraw = data6.canvasNeedsRedraw; - var forcedContext = options3.forcedContext; - if (r2.showFps || !drawOnlyNodeLayer && needDraw[r2.SELECT_BOX] && !drawAllLayers) { - var context = forcedContext || data6.contexts[r2.SELECT_BOX]; - setContextTransform2(context); - if (r2.selection[4] == 1 && (r2.hoverData.selecting || r2.touchData.selecting)) { - var zoom2 = r2.cy.zoom(); - var borderWidth = style3.core("selection-box-border-width").value / zoom2; - context.lineWidth = borderWidth; - context.fillStyle = "rgba(" + style3.core("selection-box-color").value[0] + "," + style3.core("selection-box-color").value[1] + "," + style3.core("selection-box-color").value[2] + "," + style3.core("selection-box-opacity").value + ")"; - context.fillRect(r2.selection[0], r2.selection[1], r2.selection[2] - r2.selection[0], r2.selection[3] - r2.selection[1]); - if (borderWidth > 0) { - context.strokeStyle = "rgba(" + style3.core("selection-box-border-color").value[0] + "," + style3.core("selection-box-border-color").value[1] + "," + style3.core("selection-box-border-color").value[2] + "," + style3.core("selection-box-opacity").value + ")"; - context.strokeRect(r2.selection[0], r2.selection[1], r2.selection[2] - r2.selection[0], r2.selection[3] - r2.selection[1]); - } - } - if (data6.bgActivePosistion && !r2.hoverData.selecting) { - var zoom2 = r2.cy.zoom(); - var pos = data6.bgActivePosistion; - context.fillStyle = "rgba(" + style3.core("active-bg-color").value[0] + "," + style3.core("active-bg-color").value[1] + "," + style3.core("active-bg-color").value[2] + "," + style3.core("active-bg-opacity").value + ")"; - context.beginPath(); - context.arc(pos.x, pos.y, style3.core("active-bg-size").pfValue / zoom2, 0, 2 * Math.PI); - context.fill(); - } - var timeToRender = r2.lastRedrawTime; - if (r2.showFps && timeToRender) { - timeToRender = Math.round(timeToRender); - var fps = Math.round(1e3 / timeToRender); - var text4 = "1 frame = " + timeToRender + " ms = " + fps + " fps"; - context.setTransform(1, 0, 0, 1, 0, 0); - context.fillStyle = "rgba(255, 0, 0, 0.75)"; - context.strokeStyle = "rgba(255, 0, 0, 0.75)"; - context.font = "30px Arial"; - if (!fpsHeight) { - var dims = context.measureText(text4); - fpsHeight = dims.actualBoundingBoxAscent; - } - context.fillText(text4, 0, fpsHeight); - var maxFps = 60; - context.strokeRect(0, fpsHeight + 10, 250, 20); - context.fillRect(0, fpsHeight + 10, 250 * Math.min(fps / maxFps, 1), 20); - } - if (!drawAllLayers) { - needDraw[r2.SELECT_BOX] = false; - } - } - }; - __name(compileShader, "compileShader"); - __name(createProgram, "createProgram"); - __name(createTextureCanvas, "createTextureCanvas"); - __name(getEffectivePanZoom, "getEffectivePanZoom"); - __name(modelToRenderedPosition2, "modelToRenderedPosition"); - __name(toWebGLColor, "toWebGLColor"); - __name(indexToVec4, "indexToVec4"); - __name(vec4ToIndex, "vec4ToIndex"); - __name(createTexture, "createTexture"); - __name(getTypeInfo, "getTypeInfo"); - __name(createTypedArray, "createTypedArray"); - __name(createTypedArrayView, "createTypedArrayView"); - __name(createBufferStaticDraw, "createBufferStaticDraw"); - __name(createBufferDynamicDraw, "createBufferDynamicDraw"); - __name(createPickingFrameBuffer, "createPickingFrameBuffer"); - ARRAY_TYPE = typeof Float32Array !== "undefined" ? Float32Array : Array; - if (!Math.hypot) Math.hypot = function() { - var y5 = 0, i2 = arguments.length; - while (i2--) { - y5 += arguments[i2] * arguments[i2]; - } - return Math.sqrt(y5); - }; - __name(create3, "create"); - __name(identity6, "identity"); - __name(multiply, "multiply"); - __name(translate, "translate"); - __name(rotate, "rotate"); - __name(scale, "scale"); - __name(projection, "projection"); - RENDER_TARGET = { - SCREEN: { - name: "screen", - screen: true - }, - PICKING: { - name: "picking", - picking: true - } - }; - renderDefaults = defaults$g({ - getKey: null, - drawElement: null, - getBoundingBox: null, - getRotation: null, - getRotationPoint: null, - getRotationOffset: null, - isVisible: null, - getPadding: null - }); - Atlas = /* @__PURE__ */ function() { - function Atlas2(r2, opts) { - _classCallCheck(this, Atlas2); - this.debugID = Math.floor(Math.random() * 1e4); - this.r = r2; - this.atlasSize = opts.webglTexSize; - this.rows = opts.webglTexRows; - this.enableWrapping = opts.enableWrapping; - this.texHeight = Math.floor(this.atlasSize / this.rows); - this.maxTexWidth = this.atlasSize; - this.texture = null; - this.canvas = null; - this.needsBuffer = true; - this.freePointer = { - x: 0, - row: 0 - }; - this.keyToLocation = /* @__PURE__ */ new Map(); - this.canvas = opts.createTextureCanvas(r2, this.atlasSize, this.atlasSize); - this.scratch = opts.createTextureCanvas(r2, this.atlasSize, this.texHeight, "scratch"); - } - __name(Atlas2, "Atlas"); - _createClass(Atlas2, [{ - key: "getKeys", - value: /* @__PURE__ */ __name(function getKeys() { - return new Set(this.keyToLocation.keys()); - }, "getKeys") - }, { - key: "getScale", - value: /* @__PURE__ */ __name(function getScale(_ref) { - var w3 = _ref.w, h2 = _ref.h; - var texHeight = this.texHeight, maxTexWidth = this.maxTexWidth; - var scale2 = texHeight / h2; - var texW = w3 * scale2; - var texH = h2 * scale2; - if (texW > maxTexWidth) { - scale2 = maxTexWidth / w3; - texW = w3 * scale2; - texH = h2 * scale2; + var error3 = new Error(str2); + error3.hash = hash; + throw error3; } - return { - scale: scale2, - texW, - texH - }; - }, "getScale") - }, { - key: "draw", - value: /* @__PURE__ */ __name(function draw25(key, bb, doDrawing) { - var _this = this; - var atlasSize = this.atlasSize, rows = this.rows, texHeight = this.texHeight; - var _this$getScale = this.getScale(bb), scale2 = _this$getScale.scale, texW = _this$getScale.texW, texH = _this$getScale.texH; - var locations = [null, null]; - var drawAt = /* @__PURE__ */ __name(function drawAt2(location, canvas) { - if (doDrawing && canvas) { - var context = canvas.context; - var x5 = location.x, row = location.row; - var xOffset = x5; - var yOffset = texHeight * row; - context.save(); - context.translate(xOffset, yOffset); - context.scale(scale2, scale2); - doDrawing(context, bb); - context.restore(); - } - }, "drawAt"); - var drawNormal = /* @__PURE__ */ __name(function drawNormal2() { - drawAt(_this.freePointer, _this.canvas); - locations[0] = { - x: _this.freePointer.x, - y: _this.freePointer.row * texHeight, - w: texW, - h: texH - }; - locations[1] = { - // indlude a second location with a width of 0, for convenience - x: _this.freePointer.x + texW, - y: _this.freePointer.row * texHeight, - w: 0, - h: texH - }; - _this.freePointer.x += texW; - if (_this.freePointer.x == atlasSize) { - _this.freePointer.x = 0; - _this.freePointer.row++; - } - }, "drawNormal"); - var drawWrapped = /* @__PURE__ */ __name(function drawWrapped2() { - var scratch = _this.scratch, canvas = _this.canvas; - scratch.clear(); - drawAt({ - x: 0, - row: 0 - }, scratch); - var firstTexW = atlasSize - _this.freePointer.x; - var secondTexW = texW - firstTexW; - var h2 = texHeight; - { - var dx = _this.freePointer.x; - var dy = _this.freePointer.row * texHeight; - var w3 = firstTexW; - canvas.context.drawImage(scratch, 0, 0, w3, h2, dx, dy, w3, h2); - locations[0] = { - x: dx, - y: dy, - w: w3, - h: texH - }; - } - { - var sx = firstTexW; - var _dy = (_this.freePointer.row + 1) * texHeight; - var _w = secondTexW; - if (canvas) { - canvas.context.drawImage(scratch, sx, 0, _w, h2, 0, _dy, _w, h2); - } - locations[1] = { - x: 0, - y: _dy, - w: _w, - h: texH - }; + }, "parseError"), + parse: /* @__PURE__ */ __name(function parse7(input) { + var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k2 in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { + sharedState.yy[k2] = this.yy[k2]; } - _this.freePointer.x = secondTexW; - _this.freePointer.row++; - }, "drawWrapped"); - var moveToStartOfNextRow = /* @__PURE__ */ __name(function moveToStartOfNextRow2() { - _this.freePointer.x = 0; - _this.freePointer.row++; - }, "moveToStartOfNextRow"); - if (this.freePointer.x + texW <= atlasSize) { - drawNormal(); - } else if (this.freePointer.row >= rows - 1) { - return false; - } else if (this.freePointer.x === atlasSize) { - moveToStartOfNextRow(); - drawNormal(); - } else if (this.enableWrapping) { - drawWrapped(); - } else { - moveToStartOfNextRow(); - drawNormal(); - } - this.keyToLocation.set(key, locations); - this.needsBuffer = true; - return locations; - }, "draw") - }, { - key: "getOffsets", - value: /* @__PURE__ */ __name(function getOffsets(key) { - return this.keyToLocation.get(key); - }, "getOffsets") - }, { - key: "isEmpty", - value: /* @__PURE__ */ __name(function isEmpty2() { - return this.freePointer.x === 0 && this.freePointer.row === 0; - }, "isEmpty") - }, { - key: "canFit", - value: /* @__PURE__ */ __name(function canFit(bb) { - var atlasSize = this.atlasSize, rows = this.rows; - var _this$getScale2 = this.getScale(bb), texW = _this$getScale2.texW; - if (this.freePointer.x + texW > atlasSize) { - return this.freePointer.row < rows - 1; - } - return true; - }, "canFit") - }, { - key: "bufferIfNeeded", - value: /* @__PURE__ */ __name(function bufferIfNeeded(gl) { - if (!this.texture) { - this.texture = createTexture(gl, this.debugID); - } - if (this.needsBuffer) { - this.texture.buffer(this.canvas); - this.needsBuffer = false; - } - }, "bufferIfNeeded") - }, { - key: "dispose", - value: /* @__PURE__ */ __name(function dispose() { - if (this.texture) { - this.texture.deleteTexture(); - this.texture = null; - this.needsBuffer = true; - } - }, "dispose") - }]); - return Atlas2; - }(); - AtlasCollection = /* @__PURE__ */ function() { - function AtlasCollection2(r2, opts) { - _classCallCheck(this, AtlasCollection2); - this.r = r2; - this.opts = opts; - this.keyToIds = /* @__PURE__ */ new Map(); - this.idToKey = /* @__PURE__ */ new Map(); - this.atlases = []; - this.styleKeyToAtlas = /* @__PURE__ */ new Map(); - this.styleKeyNeedsRedraw = /* @__PURE__ */ new Set(); - this.forceGC = false; - } - __name(AtlasCollection2, "AtlasCollection"); - _createClass(AtlasCollection2, [{ - key: "getKeys", - value: /* @__PURE__ */ __name(function getKeys() { - return new Set(this.styleKeyToAtlas.keys()); - }, "getKeys") - }, { - key: "getIdsFor", - value: /* @__PURE__ */ __name(function getIdsFor(key) { - var ids = this.keyToIds.get(key); - if (!ids) { - ids = /* @__PURE__ */ new Set(); - this.keyToIds.set(key, ids); - } - return ids; - }, "getIdsFor") - }, { - key: "_createAtlas", - value: /* @__PURE__ */ __name(function _createAtlas() { - var r2 = this.r, opts = this.opts; - return new Atlas(r2, opts); - }, "_createAtlas") - }, { - key: "_getScratchCanvas", - value: /* @__PURE__ */ __name(function _getScratchCanvas() { - if (!this.scratch) { - var r2 = this.r, opts = this.opts; - var atlasSize = opts.webglTexSize; - var texHeight = Math.floor(atlasSize / opts.webglTexRows); - this.scratch = opts.createTextureCanvas(r2, atlasSize, texHeight, "scratch"); } - return this.scratch; - }, "_getScratchCanvas") - }, { - key: "draw", - value: /* @__PURE__ */ __name(function draw25(id29, key, bb, doDrawing) { - if (this.styleKeyNeedsRedraw.has(key)) { - this.styleKeyNeedsRedraw["delete"](key); - this.deleteKey(id29, key); - var _atlas = this.styleKeyToAtlas.get(key); - if (_atlas) { - _atlas.forceGC = true; - } - this.styleKeyToAtlas["delete"](key); + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; } - var atlas = this.styleKeyToAtlas.get(key); - if (!atlas) { - atlas = this.atlases[this.atlases.length - 1]; - if (!atlas || !atlas.canFit(bb)) { - atlas = this._createAtlas(); - this.atlases.push(atlas); - } - atlas.draw(key, bb, doDrawing); - this.styleKeyToAtlas.set(key, atlas); - this.getIdsFor(key).add(id29); - this.idToKey.set(id29, key); + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; } - return atlas; - }, "draw") - }, { - key: "getAtlas", - value: /* @__PURE__ */ __name(function getAtlas(key) { - return this.styleKeyToAtlas.get(key); - }, "getAtlas") - }, { - key: "hasAtlas", - value: /* @__PURE__ */ __name(function hasAtlas(key) { - return this.styleKeyToAtlas.has(key); - }, "hasAtlas") - }, { - key: "deleteKey", - value: /* @__PURE__ */ __name(function deleteKey(id29, key) { - this.idToKey["delete"](id29); - this.getIdsFor(key)["delete"](id29); - }, "deleteKey") - }, { - key: "checkKeyIsInvalid", - value: /* @__PURE__ */ __name(function checkKeyIsInvalid(id29, newKey) { - if (!this.idToKey.has(id29)) return false; - var oldKey = this.idToKey.get(id29); - if (oldKey != newKey) { - this.deleteKey(id29, oldKey); - return true; + function popStack(n2) { + stack.length = stack.length - 2 * n2; + vstack.length = vstack.length - n2; + lstack.length = lstack.length - n2; } - return false; - }, "checkKeyIsInvalid") - }, { - key: "_getKeysToCollect", - value: /* @__PURE__ */ __name(function _getKeysToCollect() { - var markedKeys = /* @__PURE__ */ new Set(); - var _iterator = _createForOfIteratorHelper(this.styleKeyToAtlas.keys()), _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done; ) { - var key = _step.value; - if (this.getIdsFor(key).size == 0) { - markedKeys.add(key); + __name(popStack, "popStack"); + function lex() { + var token2; + token2 = tstack.pop() || lexer2.lex() || EOF2; + if (typeof token2 !== "number") { + if (token2 instanceof Array) { + tstack = token2; + token2 = tstack.pop(); } + token2 = self2.symbols_[token2] || token2; } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - return markedKeys; - }, "_getKeysToCollect") - /** - * TODO dispose of the old atlas and texture - */ - }, { - key: "gc", - value: /* @__PURE__ */ __name(function gc2() { - var _this2 = this; - var forceGC = this.atlases.some(function(atlas) { - return atlas.forceGC; - }); - var markedKeys = this._getKeysToCollect(); - if (markedKeys.size === 0 && !forceGC) { - console.log("nothing to garbage collect"); - return; + return token2; } - var newAtlases = []; - var newStyleKeyToAtlas = /* @__PURE__ */ new Map(); - var newAtlas = null; - var _iterator2 = _createForOfIteratorHelper(this.atlases), _step2; - try { - var _loop = /* @__PURE__ */ __name(function _loop2() { - var atlas = _step2.value; - var keys3 = atlas.getKeys(); - var keysToCollect = intersection2(markedKeys, keys3); - if (keysToCollect.size === 0 && !atlas.forceGC) { - newAtlases.push(atlas); - keys3.forEach(function(k2) { - return newStyleKeyToAtlas.set(k2, atlas); - }); - return "continue"; - } - if (!newAtlas) { - newAtlas = _this2._createAtlas(); - newAtlases.push(newAtlas); + __name(lex, "lex"); + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; + while (true) { + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); } - var _iterator3 = _createForOfIteratorHelper(keys3), _step3; - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) { - var key = _step3.value; - if (!keysToCollect.has(key)) { - var _atlas$getOffsets = atlas.getOffsets(key), _atlas$getOffsets2 = _slicedToArray(_atlas$getOffsets, 2), s1 = _atlas$getOffsets2[0], s2 = _atlas$getOffsets2[1]; - if (!newAtlas.canFit({ - w: s1.w + s2.w, - h: s1.h - })) { - newAtlas = _this2._createAtlas(); - newAtlases.push(newAtlas); - } - _this2._copyTextureToNewAtlas(key, atlas, newAtlas); - newStyleKeyToAtlas.set(key, newAtlas); - } + action = table[state3] && table[state3][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p3 in table[state3]) { + if (this.terminals_[p3] && p3 > TERROR) { + expected.push("'" + this.terminals_[p3] + "'"); } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); } - }, "_loop"); - for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { - var _ret = _loop(); - if (_ret === "continue") continue; - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - this.atlases = newAtlases; - this.styleKeyToAtlas = newStyleKeyToAtlas; - }, "gc") - }, { - key: "_copyTextureToNewAtlas", - value: /* @__PURE__ */ __name(function _copyTextureToNewAtlas(key, oldAtlas, newAtlas) { - var _oldAtlas$getOffsets = oldAtlas.getOffsets(key), _oldAtlas$getOffsets2 = _slicedToArray(_oldAtlas$getOffsets, 2), s1 = _oldAtlas$getOffsets2[0], s2 = _oldAtlas$getOffsets2[1]; - if (s2.w === 0) { - newAtlas.draw(key, s1, function(context) { - context.drawImage(oldAtlas.canvas, s1.x, s1.y, s1.w, s1.h, 0, 0, s1.w, s1.h); - }); - } else { - var scratch = this._getScratchCanvas(); - scratch.clear(); - scratch.context.drawImage(oldAtlas.canvas, s1.x, s1.y, s1.w, s1.h, 0, 0, s1.w, s1.h); - scratch.context.drawImage(oldAtlas.canvas, s2.x, s2.y, s2.w, s2.h, s1.w, 0, s2.w, s2.h); - var w3 = s1.w + s2.w; - var h2 = s1.h; - newAtlas.draw(key, { - w: w3, - h: h2 - }, function(context) { - context.drawImage( - scratch, - 0, - 0, - w3, - h2, - 0, - 0, - w3, - h2 - // the destination context has already been translated to the correct position - ); - }); - } - }, "_copyTextureToNewAtlas") - }, { - key: "getCounts", - value: /* @__PURE__ */ __name(function getCounts() { - return { - keyCount: this.styleKeyToAtlas.size, - atlasCount: new Set(this.styleKeyToAtlas.values()).size - }; - }, "getCounts") - }]); - return AtlasCollection2; - }(); - __name(intersection2, "intersection"); - AtlasManager = /* @__PURE__ */ function() { - function AtlasManager2(r2, globalOptions) { - _classCallCheck(this, AtlasManager2); - this.r = r2; - var opts = globalOptions; - this.globalOptions = opts; - this.maxAtlases = opts.webglTexPerBatch; - this.atlasSize = opts.webglTexSize; - this.renderTypes = /* @__PURE__ */ new Map(); - this.maxAtlasesPerBatch = globalOptions.webglTexPerBatch; - this.batchAtlases = []; - this._cacheScratchCanvas(opts); - } - __name(AtlasManager2, "AtlasManager"); - _createClass(AtlasManager2, [{ - key: "_cacheScratchCanvas", - value: /* @__PURE__ */ __name(function _cacheScratchCanvas(opts) { - var prevW = -1; - var prevH = -1; - var scratchCanvas = null; - var baseCreateTextureCanvas = opts.createTextureCanvas; - opts.createTextureCanvas = function(r2, w3, h2, scratch) { - if (scratch) { - if (!scratchCanvas || w3 != prevW || h2 != prevH) { - prevW = w3; - prevH = h2; - scratchCanvas = baseCreateTextureCanvas(r2, w3, h2); + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + } else { + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); } - return scratchCanvas; - } else { - return baseCreateTextureCanvas(r2, w3, h2); + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected + }); } - }; - }, "_cacheScratchCanvas") - }, { - key: "addRenderType", - value: /* @__PURE__ */ __name(function addRenderType(type3, renderTypeOptions) { - var atlasCollection = new AtlasCollection(this.r, this.globalOptions); - var typeOpts = renderTypeOptions; - this.renderTypes.set(type3, extend4({ - type: type3, - atlasCollection - }, typeOpts)); - }, "addRenderType") - }, { - key: "getRenderTypes", - value: /* @__PURE__ */ __name(function getRenderTypes() { - return _toConsumableArray(this.renderTypes.values()); - }, "getRenderTypes") - }, { - key: "getRenderTypeOpts", - value: /* @__PURE__ */ __name(function getRenderTypeOpts(type3) { - return this.renderTypes.get(type3); - }, "getRenderTypeOpts") - /** Marks textues associated with the element for garbage collection. */ - }, { - key: "invalidate", - value: /* @__PURE__ */ __name(function invalidate(eles) { - var _ref2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref2$forceRedraw = _ref2.forceRedraw, forceRedraw = _ref2$forceRedraw === void 0 ? false : _ref2$forceRedraw, _ref2$filterEle = _ref2.filterEle, filterEle = _ref2$filterEle === void 0 ? function() { - return true; - } : _ref2$filterEle, _ref2$filterType = _ref2.filterType, filterType = _ref2$filterType === void 0 ? function() { - return true; - } : _ref2$filterType; - var gcNeeded = false; - var _iterator4 = _createForOfIteratorHelper(eles), _step4; - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done; ) { - var ele = _step4.value; - if (filterEle(ele)) { - var id29 = ele.id(); - var _iterator5 = _createForOfIteratorHelper(this.getRenderTypes()), _step5; - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done; ) { - var opts = _step5.value; - if (filterType(opts.type)) { - var styleKey = opts.getKey(ele); - if (forceRedraw) { - opts.atlasCollection.deleteKey(id29, styleKey); - opts.atlasCollection.styleKeyNeedsRedraw.add(styleKey); - gcNeeded = true; - } else { - gcNeeded |= opts.atlasCollection.checkKeyIsInvalid(id29, styleKey); - } - } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + if (recovering > 0) { + recovering--; } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; } - } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r2 = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r2 !== "undefined") { + return r2; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState2); + break; + case 3: + return true; } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); } - return gcNeeded; - }, "invalidate") - /** Garbage collect */ - }, { - key: "gc", - value: /* @__PURE__ */ __name(function gc2() { - var _iterator6 = _createForOfIteratorHelper(this.getRenderTypes()), _step6; - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done; ) { - var opts = _step6.value; - opts.atlasCollection.gc(); + return true; + }, "parse") + }; + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { + EOF: 1, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str2, hash); + } else { + throw new Error(str2); } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - }, "gc") - }, { - key: "isRenderable", - value: /* @__PURE__ */ __name(function isRenderable(ele, type3) { - var opts = this.getRenderTypeOpts(type3); - return opts && opts.isVisible(ele); - }, "isRenderable") - }, { - key: "startBatch", - value: /* @__PURE__ */ __name(function startBatch2() { - this.batchAtlases = []; - }, "startBatch") - }, { - key: "getAtlasCount", - value: /* @__PURE__ */ __name(function getAtlasCount() { - return this.batchAtlases.length; - }, "getAtlasCount") - }, { - key: "getAtlases", - value: /* @__PURE__ */ __name(function getAtlases() { - return this.batchAtlases; - }, "getAtlases") - }, { - key: "getOrCreateAtlas", - value: /* @__PURE__ */ __name(function getOrCreateAtlas(ele, bb, type3) { - var opts = this.renderTypes.get(type3); - var styleKey = opts.getKey(ele); - var id29 = ele.id(); - return opts.atlasCollection.draw(id29, styleKey, bb, function(context) { - opts.drawElement(context, ele, bb, true, true); - }); - }, "getOrCreateAtlas") - }, { - key: "getAtlasIndexForBatch", - value: /* @__PURE__ */ __name(function getAtlasIndexForBatch(atlas) { - var atlasID = this.batchAtlases.indexOf(atlas); - if (atlasID < 0) { - if (this.batchAtlases.length === this.maxAtlasesPerBatch) { - return; + }, "parseError"), + // resets the lexer, sets new input + setInput: /* @__PURE__ */ __name(function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0, 0]; } - this.batchAtlases.push(atlas); - atlasID = this.batchAtlases.length - 1; - } - return atlasID; - }, "getAtlasIndexForBatch") - }, { - key: "getIndexArray", - value: /* @__PURE__ */ __name(function getIndexArray() { - return Array.from({ - length: this.maxAtlases - }, function(v3, i2) { - return i2; - }); - }, "getIndexArray") - }, { - key: "getAtlasInfo", - value: /* @__PURE__ */ __name(function getAtlasInfo(ele, type3) { - var opts = this.renderTypes.get(type3); - var bb = opts.getBoundingBox(ele); - var atlas = this.getOrCreateAtlas(ele, bb, type3); - var atlasID = this.getAtlasIndexForBatch(atlas); - if (atlasID === void 0) { - return void 0; - } - var styleKey = opts.getKey(ele); - var _atlas$getOffsets3 = atlas.getOffsets(styleKey), _atlas$getOffsets4 = _slicedToArray(_atlas$getOffsets3, 2), tex1 = _atlas$getOffsets4[0], tex2 = _atlas$getOffsets4[1]; - return { - atlasID, - tex: tex1, - tex1, - tex2, - bb, - type: type3, - styleKey - }; - }, "getAtlasInfo") - }, { - key: "canAddToCurrentBatch", - value: /* @__PURE__ */ __name(function canAddToCurrentBatch(ele, type3) { - if (this.batchAtlases.length === this.maxAtlasesPerBatch) { - var opts = this.renderTypes.get(type3); - var styleKey = opts.getKey(ele); - var atlas = opts.atlasCollection.getAtlas(styleKey); - return atlas && this.batchAtlases.includes(atlas); - } - return true; - }, "canAddToCurrentBatch") - /** - * matrix is expected to be a 9 element array - * this function follows same pattern as CRp.drawCachedElementPortion(...) - */ - }, { - key: "setTransformMatrix", - value: /* @__PURE__ */ __name(function setTransformMatrix(matrix, atlasInfo, ele) { - var first3 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; - var bb = atlasInfo.bb, type3 = atlasInfo.type, tex1 = atlasInfo.tex1, tex2 = atlasInfo.tex2; - var opts = this.getRenderTypeOpts(type3); - var padding2 = opts.getPadding ? opts.getPadding(ele) : 0; - var ratio = tex1.w / (tex1.w + tex2.w); - if (!first3) { - ratio = 1 - ratio; - } - var adjBB = this.getAdjustedBB(bb, padding2, first3, ratio); - var x5, y5; - identity6(matrix); - var theta = opts.getRotation ? opts.getRotation(ele) : 0; - if (theta !== 0) { - var _opts$getRotationPoin = opts.getRotationPoint(ele), sx = _opts$getRotationPoin.x, sy = _opts$getRotationPoin.y; - translate(matrix, matrix, [sx, sy]); - rotate(matrix, matrix, theta); - var offset = opts.getRotationOffset(ele); - x5 = offset.x + adjBB.xOffset; - y5 = offset.y; - } else { - x5 = adjBB.x1; - y5 = adjBB.y1; - } - translate(matrix, matrix, [x5, y5]); - scale(matrix, matrix, [adjBB.w, adjBB.h]); - }, "setTransformMatrix") - }, { - key: "getTransformMatrix", - value: /* @__PURE__ */ __name(function getTransformMatrix(atlasInfo, ele) { - var first3 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; - var matrix = create3(); - this.setTransformMatrix(matrix, atlasInfo, ele, first3); - return matrix; - }, "getTransformMatrix") - /** - * Adjusts a node or label BB to accomodate padding and split for wrapped textures. - * @param bb - the original bounding box - * @param padding - the padding to add to the bounding box - * @param first - whether this is the first part of a wrapped texture - * @param ratio - the ratio of the texture width of part of the text to the entire texture - */ - }, { - key: "getAdjustedBB", - value: /* @__PURE__ */ __name(function getAdjustedBB(bb, padding2, first3, ratio) { - var x1 = bb.x1, y1 = bb.y1, w3 = bb.w, h2 = bb.h; - if (padding2) { - x1 -= padding2; - y1 -= padding2; - w3 += 2 * padding2; - h2 += 2 * padding2; - } - var xOffset = 0; - var adjW = w3 * ratio; - if (first3 && ratio < 1) { - w3 = adjW; - } else if (!first3 && ratio < 1) { - xOffset = w3 - adjW; - x1 += xOffset; - w3 = adjW; - } - return { - x1, - y1, - w: w3, - h: h2, - xOffset - }; - }, "getAdjustedBB") - }, { - key: "getDebugInfo", - value: /* @__PURE__ */ __name(function getDebugInfo() { - var debugInfo = []; - var _iterator7 = _createForOfIteratorHelper(this.renderTypes), _step7; - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done; ) { - var _step7$value = _slicedToArray(_step7.value, 2), type3 = _step7$value[0], opts = _step7$value[1]; - var _opts$atlasCollection = opts.atlasCollection.getCounts(), keyCount = _opts$atlasCollection.keyCount, atlasCount = _opts$atlasCollection.atlasCount; - debugInfo.push({ - type: type3, - keyCount, - atlasCount - }); + this.offset = 0; + return this; + }, "setInput"), + // consumes and returns one char from the input + input: /* @__PURE__ */ __name(function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - return debugInfo; - }, "getDebugInfo") - }]); - return AtlasManager2; - }(); - TEXTURE = 0; - EDGE_STRAIGHT = 1; - EDGE_CURVE_SEGMENT = 2; - EDGE_ARROW = 3; - ElementDrawingWebGL = /* @__PURE__ */ function() { - function ElementDrawingWebGL2(r2, gl, opts) { - _classCallCheck(this, ElementDrawingWebGL2); - this.r = r2; - this.gl = gl; - this.maxInstances = opts.webglBatchSize; - this.maxAtlases = opts.webglTexPerBatch; - this.atlasSize = opts.webglTexSize; - this.bgColor = opts.bgColor; - opts.enableWrapping = true; - opts.createTextureCanvas = createTextureCanvas; - this.atlasManager = new AtlasManager(r2, opts); - this.program = this.createShaderProgram(RENDER_TARGET.SCREEN); - this.pickingProgram = this.createShaderProgram(RENDER_TARGET.PICKING); - this.vao = this.createVAO(); - this.debugInfo = []; - } - __name(ElementDrawingWebGL2, "ElementDrawingWebGL"); - _createClass(ElementDrawingWebGL2, [{ - key: "addTextureRenderType", - value: /* @__PURE__ */ __name(function addTextureRenderType(type3, opts) { - this.atlasManager.addRenderType(type3, opts); - }, "addTextureRenderType") - }, { - key: "invalidate", - value: /* @__PURE__ */ __name(function invalidate(eles) { - var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, type3 = _ref.type; - var atlasManager = this.atlasManager; - if (type3) { - return atlasManager.invalidate(eles, { - filterType: /* @__PURE__ */ __name(function filterType(t4) { - return t4 === type3; - }, "filterType"), - forceRedraw: true - }); - } else { - return atlasManager.invalidate(eles); - } - }, "invalidate") - }, { - key: "gc", - value: /* @__PURE__ */ __name(function gc2() { - this.atlasManager.gc(); - }, "gc") - }, { - key: "createShaderProgram", - value: /* @__PURE__ */ __name(function createShaderProgram(renderTarget) { - var gl = this.gl; - var vertexShaderSource = "#version 300 es\n precision highp float;\n\n uniform mat3 uPanZoomMatrix;\n uniform int uAtlasSize;\n \n // instanced\n in vec2 aPosition; \n\n // what are we rendering?\n in int aVertType;\n\n // for picking\n in vec4 aIndex;\n \n // For textures\n in int aAtlasId; // which shader unit/atlas to use\n in vec4 aTex1; // x/y/w/h of texture in atlas\n in vec4 aTex2; \n\n // for any transforms that are needed\n in vec4 aScaleRotate1; // vectors use fewer attributes than matrices\n in vec2 aTranslate1;\n in vec4 aScaleRotate2;\n in vec2 aTranslate2;\n\n // for edges\n in vec4 aPointAPointB;\n in vec4 aPointCPointD;\n in float aLineWidth;\n in vec4 aEdgeColor;\n\n out vec2 vTexCoord;\n out vec4 vEdgeColor;\n flat out int vAtlasId;\n flat out vec4 vIndex;\n flat out int vVertType;\n\n void main(void) {\n int vid = gl_VertexID;\n vec2 position = aPosition;\n\n if(aVertType == ".concat(TEXTURE, ") {\n float texX;\n float texY;\n float texW;\n float texH;\n mat3 texMatrix;\n\n int vid = gl_VertexID;\n if(vid <= 5) {\n texX = aTex1.x;\n texY = aTex1.y;\n texW = aTex1.z;\n texH = aTex1.w;\n texMatrix = mat3(\n vec3(aScaleRotate1.xy, 0.0),\n vec3(aScaleRotate2.zw, 0.0),\n vec3(aTranslate1, 1.0)\n );\n } else {\n texX = aTex2.x;\n texY = aTex2.y;\n texW = aTex2.z;\n texH = aTex2.w;\n texMatrix = mat3(\n vec3(aScaleRotate2.xy, 0.0),\n vec3(aScaleRotate2.zw, 0.0),\n vec3(aTranslate2, 1.0)\n );\n }\n\n if(vid == 1 || vid == 2 || vid == 4 || vid == 7 || vid == 8 || vid == 10) {\n texX += texW;\n }\n if(vid == 2 || vid == 4 || vid == 5 || vid == 8 || vid == 10 || vid == 11) {\n texY += texH;\n }\n\n float d = float(uAtlasSize);\n vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1\n\n gl_Position = vec4(uPanZoomMatrix * texMatrix * vec3(position, 1.0), 1.0);\n } \n else if(aVertType == ").concat(EDGE_STRAIGHT, " && vid < 6) {\n vec2 source = aPointAPointB.xy;\n vec2 target = aPointAPointB.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n vec2 xBasis = target - source;\n vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x));\n vec2 point = source + xBasis * position.x + yBasis * aLineWidth * position.y;\n\n gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);\n vEdgeColor = aEdgeColor;\n } \n else if(aVertType == ").concat(EDGE_CURVE_SEGMENT, " && vid < 6) {\n vec2 pointA = aPointAPointB.xy;\n vec2 pointB = aPointAPointB.zw;\n vec2 pointC = aPointCPointD.xy;\n vec2 pointD = aPointCPointD.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n vec2 p0 = pointA;\n vec2 p1 = pointB;\n vec2 p2 = pointC;\n vec2 pos = position;\n if(position.x == 1.0) {\n p0 = pointD;\n p1 = pointC;\n p2 = pointB;\n pos = vec2(0.0, -position.y);\n }\n\n vec2 p01 = p1 - p0;\n vec2 p12 = p2 - p1;\n vec2 p21 = p1 - p2;\n\n // Find the normal vector.\n vec2 tangent = normalize(normalize(p12) + normalize(p01));\n vec2 normal = vec2(-tangent.y, tangent.x);\n\n // Find the vector perpendicular to p0 -> p1.\n vec2 p01Norm = normalize(vec2(-p01.y, p01.x));\n\n // Determine the bend direction.\n float sigma = sign(dot(p01 + p21, normal));\n float width = aLineWidth;\n\n if(sign(pos.y) == -sigma) {\n // This is an intersecting vertex. Adjust the position so that there's no overlap.\n vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n } else {\n // This is a non-intersecting vertex. Treat it like a mitre join.\n vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n }\n\n vEdgeColor = aEdgeColor;\n } \n else if(aVertType == ").concat(EDGE_ARROW, " && vid < 3) {\n // massage the first triangle into an edge arrow\n if(vid == 0)\n position = vec2(-0.15, -0.3);\n if(vid == 1)\n position = vec2( 0.0, 0.0);\n if(vid == 2)\n position = vec2( 0.15, -0.3);\n\n mat3 transform = mat3(\n vec3(aScaleRotate1.xy, 0.0),\n vec3(aScaleRotate1.zw, 0.0),\n vec3(aTranslate1, 1.0)\n );\n gl_Position = vec4(uPanZoomMatrix * transform * vec3(position, 1.0), 1.0);\n vEdgeColor = aEdgeColor;\n } else {\n gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space\n }\n\n vAtlasId = aAtlasId;\n vIndex = aIndex;\n vVertType = aVertType;\n }\n "); - var idxs = this.atlasManager.getIndexArray(); - var fragmentShaderSource = "#version 300 es\n precision highp float;\n\n // define texture unit for each node in the batch\n ".concat(idxs.map(function(i3) { - return "uniform sampler2D uTexture".concat(i3, ";"); - }).join("\n "), "\n\n uniform vec4 uBGColor;\n\n in vec2 vTexCoord;\n in vec4 vEdgeColor;\n flat in int vAtlasId;\n flat in vec4 vIndex;\n flat in int vVertType;\n\n out vec4 outColor;\n\n void main(void) {\n if(vVertType == ").concat(TEXTURE, ") {\n ").concat(idxs.map(function(i3) { - return "if(vAtlasId == ".concat(i3, ") outColor = texture(uTexture").concat(i3, ", vTexCoord);"); - }).join("\n else "), "\n } else if(vVertType == ").concat(EDGE_ARROW, ") {\n // blend arrow color with background (using premultiplied alpha)\n outColor.rgb = vEdgeColor.rgb + (uBGColor.rgb * (1.0 - vEdgeColor.a)); \n outColor.a = 1.0; // make opaque, masks out line under arrow\n } else {\n outColor = vEdgeColor;\n }\n\n ").concat(renderTarget.picking ? "if(outColor.a == 0.0) discard;\n else outColor = vIndex;" : "", "\n }\n "); - var program = createProgram(gl, vertexShaderSource, fragmentShaderSource); - program.aPosition = gl.getAttribLocation(program, "aPosition"); - program.aIndex = gl.getAttribLocation(program, "aIndex"); - program.aVertType = gl.getAttribLocation(program, "aVertType"); - program.aAtlasId = gl.getAttribLocation(program, "aAtlasId"); - program.aTex1 = gl.getAttribLocation(program, "aTex1"); - program.aTex2 = gl.getAttribLocation(program, "aTex2"); - program.aScaleRotate1 = gl.getAttribLocation(program, "aScaleRotate1"); - program.aTranslate1 = gl.getAttribLocation(program, "aTranslate1"); - program.aScaleRotate2 = gl.getAttribLocation(program, "aScaleRotate2"); - program.aTranslate2 = gl.getAttribLocation(program, "aTranslate2"); - program.aPointAPointB = gl.getAttribLocation(program, "aPointAPointB"); - program.aPointCPointD = gl.getAttribLocation(program, "aPointCPointD"); - program.aLineWidth = gl.getAttribLocation(program, "aLineWidth"); - program.aEdgeColor = gl.getAttribLocation(program, "aEdgeColor"); - program.uPanZoomMatrix = gl.getUniformLocation(program, "uPanZoomMatrix"); - program.uAtlasSize = gl.getUniformLocation(program, "uAtlasSize"); - program.uBGColor = gl.getUniformLocation(program, "uBGColor"); - program.uTextures = []; - for (var i2 = 0; i2 < this.atlasManager.maxAtlases; i2++) { - program.uTextures.push(gl.getUniformLocation(program, "uTexture".concat(i2))); - } - return program; - }, "createShaderProgram") - }, { - key: "createVAO", - value: /* @__PURE__ */ __name(function createVAO() { - var quad = [0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1]; - var instanceGeometry = [].concat(quad, quad); - this.vertexCount = instanceGeometry.length / 2; - var n2 = this.maxInstances; - var gl = this.gl, program = this.program; - var vao = gl.createVertexArray(); - gl.bindVertexArray(vao); - createBufferStaticDraw(gl, "vec2", program.aPosition, instanceGeometry); - this.indexBuffer = createBufferDynamicDraw(gl, n2, "vec4", program.aIndex); - this.vertTypeBuffer = createBufferDynamicDraw(gl, n2, "int", program.aVertType); - this.atlasIdBuffer = createBufferDynamicDraw(gl, n2, "int", program.aAtlasId); - this.tex1Buffer = createBufferDynamicDraw(gl, n2, "vec4", program.aTex1); - this.tex2Buffer = createBufferDynamicDraw(gl, n2, "vec4", program.aTex2); - this.scaleRotate1Buffer = createBufferDynamicDraw(gl, n2, "vec4", program.aScaleRotate1); - this.translate1Buffer = createBufferDynamicDraw(gl, n2, "vec2", program.aTranslate1); - this.scaleRotate2Buffer = createBufferDynamicDraw(gl, n2, "vec4", program.aScaleRotate2); - this.translate2Buffer = createBufferDynamicDraw(gl, n2, "vec2", program.aTranslate2); - this.pointAPointBBuffer = createBufferDynamicDraw(gl, n2, "vec4", program.aPointAPointB); - this.pointCPointDBuffer = createBufferDynamicDraw(gl, n2, "vec4", program.aPointCPointD); - this.lineWidthBuffer = createBufferDynamicDraw(gl, n2, "float", program.aLineWidth); - this.edgeColorBuffer = createBufferDynamicDraw(gl, n2, "vec4", program.aEdgeColor); - gl.bindVertexArray(null); - return vao; - }, "createVAO") - }, { - key: "buffers", - get: /* @__PURE__ */ __name(function get6() { - var _this = this; - if (!this._buffers) { - this._buffers = Object.keys(this).filter(function(k2) { - return k2.endsWith("Buffer"); - }).map(function(k2) { - return _this[k2]; - }); - } - return this._buffers; - }, "get") - }, { - key: "startFrame", - value: /* @__PURE__ */ __name(function startFrame(panZoomMatrix, debugInfo) { - var renderTarget = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : RENDER_TARGET.SCREEN; - this.panZoomMatrix = panZoomMatrix; - this.debugInfo = debugInfo; - this.renderTarget = renderTarget; - this.startBatch(); - }, "startFrame") - }, { - key: "startBatch", - value: /* @__PURE__ */ __name(function startBatch2() { - this.instanceCount = 0; - this.atlasManager.startBatch(); - }, "startBatch") - }, { - key: "endFrame", - value: /* @__PURE__ */ __name(function endFrame() { - this.endBatch(); - }, "endFrame") - }, { - key: "getTempMatrix", - value: /* @__PURE__ */ __name(function getTempMatrix() { - return this.tempMatrix = this.tempMatrix || create3(); - }, "getTempMatrix") - }, { - key: "drawTexture", - value: /* @__PURE__ */ __name(function drawTexture(ele, eleIndex, type3) { - var atlasManager = this.atlasManager; - if (!atlasManager.isRenderable(ele, type3)) { - return; - } - if (!atlasManager.canAddToCurrentBatch(ele, type3)) { - this.endBatch(); - } - var instance2 = this.instanceCount; - this.vertTypeBuffer.getView(instance2)[0] = TEXTURE; - var indexView = this.indexBuffer.getView(instance2); - indexToVec4(eleIndex, indexView); - var atlasInfo = atlasManager.getAtlasInfo(ele, type3, atlasInfo); - var atlasID = atlasInfo.atlasID, tex1 = atlasInfo.tex1, tex2 = atlasInfo.tex2; - var atlasIdView = this.atlasIdBuffer.getView(instance2); - atlasIdView[0] = atlasID; - var tex1View = this.tex1Buffer.getView(instance2); - tex1View[0] = tex1.x; - tex1View[1] = tex1.y; - tex1View[2] = tex1.w; - tex1View[3] = tex1.h; - var tex2View = this.tex2Buffer.getView(instance2); - tex2View[0] = tex2.x; - tex2View[1] = tex2.y; - tex2View[2] = tex2.w; - tex2View[3] = tex2.h; - var transform8 = this.getTempMatrix(); - for (var _i = 0, _arr = [1, 2]; _i < _arr.length; _i++) { - var tex = _arr[_i]; - atlasManager.setTransformMatrix(transform8, atlasInfo, ele, tex === 1); - var scaleRotateView = this["scaleRotate".concat(tex, "Buffer")].getView(instance2); - scaleRotateView[0] = transform8[0]; - scaleRotateView[1] = transform8[1]; - scaleRotateView[2] = transform8[3]; - scaleRotateView[3] = transform8[4]; - var translateView = this["translate".concat(tex, "Buffer")].getView(instance2); - translateView[0] = transform8[6]; - translateView[1] = transform8[7]; - } - this.instanceCount++; - if (this.instanceCount >= this.maxInstances) { - this.endBatch(); - } - }, "drawTexture") - }, { - key: "drawEdgeArrow", - value: /* @__PURE__ */ __name(function drawEdgeArrow(edge, eleIndex, prefix) { - var rs = edge._private.rscratch; - var x5, y5, angle2; - if (prefix === "source") { - x5 = rs.arrowStartX; - y5 = rs.arrowStartY; - angle2 = rs.srcArrowAngle; - } else { - x5 = rs.arrowEndX; - y5 = rs.arrowEndY; - angle2 = rs.tgtArrowAngle; - } - if (isNaN(x5) || x5 == null || isNaN(y5) || y5 == null || isNaN(angle2) || angle2 == null) { - return; - } - var arrowShape = edge.pstyle(prefix + "-arrow-shape").value; - if (arrowShape === "none") { - return; - } - var color2 = edge.pstyle(prefix + "-arrow-color").value; - var baseOpacity = edge.pstyle("opacity").value; - var lineOpacity = edge.pstyle("line-opacity").value; - var opacity = baseOpacity * lineOpacity; - var lineWidth = edge.pstyle("width").pfValue; - var scale$1 = edge.pstyle("arrow-scale").value; - var size5 = this.r.getArrowWidth(lineWidth, scale$1); - var transform8 = this.getTempMatrix(); - identity6(transform8); - translate(transform8, transform8, [x5, y5]); - scale(transform8, transform8, [size5, size5]); - rotate(transform8, transform8, angle2); - var instance2 = this.instanceCount; - this.vertTypeBuffer.getView(instance2)[0] = EDGE_ARROW; - var indexView = this.indexBuffer.getView(instance2); - indexToVec4(eleIndex, indexView); - var colorView = this.edgeColorBuffer.getView(instance2); - toWebGLColor(color2, opacity, colorView); - var scaleRotateView = this.scaleRotate1Buffer.getView(instance2); - scaleRotateView[0] = transform8[0]; - scaleRotateView[1] = transform8[1]; - scaleRotateView[2] = transform8[3]; - scaleRotateView[3] = transform8[4]; - var translateView = this.translate1Buffer.getView(instance2); - translateView[0] = transform8[6]; - translateView[1] = transform8[7]; - this.instanceCount++; - if (this.instanceCount >= this.maxInstances) { - this.endBatch(); - } - }, "drawEdgeArrow") - }, { - key: "drawEdgeLine", - value: /* @__PURE__ */ __name(function drawEdgeLine(edge, eleIndex) { - var baseOpacity = edge.pstyle("opacity").value; - var lineOpacity = edge.pstyle("line-opacity").value; - var width3 = edge.pstyle("width").pfValue; - var color2 = edge.pstyle("line-color").value; - var opacity = baseOpacity * lineOpacity; - var points = this.getEdgePoints(edge); - if (points.length / 2 + this.instanceCount > this.maxInstances) { - this.endBatch(); - } - if (points.length == 4) { - var instance2 = this.instanceCount; - this.vertTypeBuffer.getView(instance2)[0] = EDGE_STRAIGHT; - var indexView = this.indexBuffer.getView(instance2); - indexToVec4(eleIndex, indexView); - var colorView = this.edgeColorBuffer.getView(instance2); - toWebGLColor(color2, opacity, colorView); - var lineWidthBuffer = this.lineWidthBuffer.getView(instance2); - lineWidthBuffer[0] = width3; - var sourceTargetView = this.pointAPointBBuffer.getView(instance2); - sourceTargetView[0] = points[0]; - sourceTargetView[1] = points[1]; - sourceTargetView[2] = points[2]; - sourceTargetView[3] = points[3]; - this.instanceCount++; - if (this.instanceCount >= this.maxInstances) { - this.endBatch(); + if (this.options.ranges) { + this.yylloc.range[1]++; } - } else { - for (var i2 = 0; i2 < points.length - 2; i2 += 2) { - var _instance = this.instanceCount; - this.vertTypeBuffer.getView(_instance)[0] = EDGE_CURVE_SEGMENT; - var _indexView = this.indexBuffer.getView(_instance); - indexToVec4(eleIndex, _indexView); - var _colorView = this.edgeColorBuffer.getView(_instance); - toWebGLColor(color2, opacity, _colorView); - var _lineWidthBuffer = this.lineWidthBuffer.getView(_instance); - _lineWidthBuffer[0] = width3; - var pAx = points[i2 - 2], pAy = points[i2 - 1]; - var pBx = points[i2], pBy = points[i2 + 1]; - var pCx = points[i2 + 2], pCy = points[i2 + 3]; - var pDx = points[i2 + 4], pDy = points[i2 + 5]; - if (i2 == 0) { - pAx = 2 * pBx - pCx + 1e-3; - pAy = 2 * pBy - pCy + 1e-3; - } - if (i2 == points.length - 4) { - pDx = 2 * pCx - pBx + 1e-3; - pDy = 2 * pCy - pBy + 1e-3; - } - var pointABView = this.pointAPointBBuffer.getView(_instance); - pointABView[0] = pAx; - pointABView[1] = pAy; - pointABView[2] = pBx; - pointABView[3] = pBy; - var pointCDView = this.pointCPointDBuffer.getView(_instance); - pointCDView[0] = pCx; - pointCDView[1] = pCy; - pointCDView[2] = pDx; - pointCDView[3] = pDy; - this.instanceCount++; - if (this.instanceCount >= this.maxInstances) { - this.endBatch(); - } + this._input = this._input.slice(1); + return ch; + }, "input"), + // unshifts one char (or a string) into the input + unput: /* @__PURE__ */ __name(function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; } - } - }, "drawEdgeLine") - }, { - key: "getEdgePoints", - value: /* @__PURE__ */ __name(function getEdgePoints(edge) { - var rs = edge._private.rscratch; - var controlPoints4 = rs.allpts; - if (controlPoints4.length == 4) { - return controlPoints4; - } - var numSegments = this.getNumSegments(edge); - return this.getCurveSegmentPoints(controlPoints4, numSegments); - }, "getEdgePoints") - }, { - key: "getNumSegments", - value: /* @__PURE__ */ __name(function getNumSegments(edge) { - var numSegments = 15; - return Math.min(Math.max(numSegments, 5), this.maxInstances); - }, "getNumSegments") - }, { - key: "getCurveSegmentPoints", - value: /* @__PURE__ */ __name(function getCurveSegmentPoints(controlPoints4, segments) { - if (controlPoints4.length == 4) { - return controlPoints4; - } - var curvePoints = Array((segments + 1) * 2); - for (var i2 = 0; i2 <= segments; i2++) { - if (i2 == 0) { - curvePoints[0] = controlPoints4[0]; - curvePoints[1] = controlPoints4[1]; - } else if (i2 == segments) { - curvePoints[i2 * 2] = controlPoints4[controlPoints4.length - 2]; - curvePoints[i2 * 2 + 1] = controlPoints4[controlPoints4.length - 1]; + var r2 = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + }; + if (this.options.ranges) { + this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, "unput"), + // When called from action, caches matched text and appends it on next action + more: /* @__PURE__ */ __name(function() { + this._more = true; + return this; + }, "more"), + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: /* @__PURE__ */ __name(function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; } else { - var t4 = i2 / segments; - this.setCurvePoint(controlPoints4, t4, curvePoints, i2 * 2); + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); } - } - return curvePoints; - }, "getCurveSegmentPoints") - }, { - key: "setCurvePoint", - value: /* @__PURE__ */ __name(function setCurvePoint(points, t4, curvePoints, cpi) { - if (points.length <= 2) { - curvePoints[cpi] = points[0]; - curvePoints[cpi + 1] = points[1]; - } else { - var newpoints = Array(points.length - 2); - for (var i2 = 0; i2 < newpoints.length; i2 += 2) { - var x5 = (1 - t4) * points[i2] + t4 * points[i2 + 2]; - var y5 = (1 - t4) * points[i2 + 1] + t4 * points[i2 + 3]; - newpoints[i2] = x5; - newpoints[i2 + 1] = y5; + return this; + }, "reject"), + // retain first n characters of the match + less: /* @__PURE__ */ __name(function(n2) { + this.unput(this.match.slice(n2)); + }, "less"), + // displays already matched input, i.e. for error messages + pastInput: /* @__PURE__ */ __name(function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, "pastInput"), + // displays upcoming input, i.e. for error messages + upcomingInput: /* @__PURE__ */ __name(function() { + var next3 = this.match; + if (next3.length < 20) { + next3 += this._input.substr(0, 20 - next3.length); } - return this.setCurvePoint(newpoints, t4, curvePoints, cpi); - } - }, "setCurvePoint") - }, { - key: "endBatch", - value: /* @__PURE__ */ __name(function endBatch2() { - var gl = this.gl, vao = this.vao, vertexCount = this.vertexCount, count = this.instanceCount; - if (count === 0) return; - var program = this.renderTarget.picking ? this.pickingProgram : this.program; - gl.useProgram(program); - gl.bindVertexArray(vao); - var _iterator = _createForOfIteratorHelper(this.buffers), _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done; ) { - var buffer = _step.value; - buffer.bufferSubData(count); + return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, "upcomingInput"), + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: /* @__PURE__ */ __name(function() { + var pre = this.pastInput(); + var c3 = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c3 + "^"; + }, "showPosition"), + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { + var token2, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); + } } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - var atlases = this.atlasManager.getAtlases(); - for (var i2 = 0; i2 < atlases.length; i2++) { - atlases[i2].bufferIfNeeded(gl); - } - for (var _i2 = 0; _i2 < atlases.length; _i2++) { - gl.activeTexture(gl.TEXTURE0 + _i2); - gl.bindTexture(gl.TEXTURE_2D, atlases[_i2].texture); - gl.uniform1i(program.uTextures[_i2], _i2); - } - gl.uniformMatrix3fv(program.uPanZoomMatrix, false, this.panZoomMatrix); - gl.uniform1i(program.uAtlasSize, this.atlasManager.atlasSize); - var webglBgColor = toWebGLColor(this.bgColor, 1); - gl.uniform4fv(program.uBGColor, webglBgColor); - gl.drawArraysInstanced(gl.TRIANGLES, 0, vertexCount, count); - gl.bindVertexArray(null); - gl.bindTexture(gl.TEXTURE_2D, null); - if (this.debugInfo) { - this.debugInfo.push({ - count, - atlasCount: atlases.length - }); - } - this.startBatch(); - }, "endBatch") - }, { - key: "getDebugInfo", - value: /* @__PURE__ */ __name(function getDebugInfo() { - return this.debugInfo; - }, "getDebugInfo") - }, { - key: "getAtlasDebugInfo", - value: /* @__PURE__ */ __name(function getAtlasDebugInfo() { - return this.atlasManager.getDebugInfo(); - }, "getAtlasDebugInfo") - }]); - return ElementDrawingWebGL2; - }(); - __name(fillStyle, "fillStyle"); - OverlayUnderlayRenderer = /* @__PURE__ */ function() { - function OverlayUnderlayRenderer2(r2) { - _classCallCheck(this, OverlayUnderlayRenderer2); - this.r = r2; - } - __name(OverlayUnderlayRenderer2, "OverlayUnderlayRenderer"); - _createClass(OverlayUnderlayRenderer2, [{ - key: "getStyleKey", - value: /* @__PURE__ */ __name(function getStyleKey(type3, node2) { - var _this$getStyle = this.getStyle(type3, node2), shape = _this$getStyle.shape, opacity = _this$getStyle.opacity, color2 = _this$getStyle.color; - if (!shape) return null; - var w3 = node2.width(); - var h2 = node2.height(); - var c3 = fillStyle(color2, opacity); - return hashString("".concat(shape, "-").concat(w3, "-").concat(h2, "-").concat(c3)); - }, "getStyleKey") - }, { - key: "isVisible", - value: /* @__PURE__ */ __name(function isVisible(type3, node2) { - var opacity = node2.pstyle("".concat(type3, "-opacity")).value; - return opacity > 0; - }, "isVisible") - }, { - key: "getStyle", - value: /* @__PURE__ */ __name(function getStyle(type3, node2) { - var opacity = node2.pstyle("".concat(type3, "-opacity")).value; - var color2 = node2.pstyle("".concat(type3, "-color")).value; - var shape = node2.pstyle("".concat(type3, "-shape")).value; - return { - opacity, - color: color2, - shape - }; - }, "getStyle") - }, { - key: "getPadding", - value: /* @__PURE__ */ __name(function getPadding(type3, node2) { - return node2.pstyle("".concat(type3, "-padding")).pfValue; - }, "getPadding") - }, { - key: "draw", - value: /* @__PURE__ */ __name(function draw25(type3, context, node2, bb) { - if (!this.isVisible(type3, node2)) return; - var r2 = this.r; - var w3 = bb.w; - var h2 = bb.h; - var x5 = w3 / 2; - var y5 = h2 / 2; - var _this$getStyle2 = this.getStyle(type3, node2), shape = _this$getStyle2.shape, color2 = _this$getStyle2.color, opacity = _this$getStyle2.opacity; - context.save(); - context.fillStyle = fillStyle(color2, opacity); - if (shape === "round-rectangle" || shape === "roundrectangle") { - r2.drawRoundRectanglePath(context, x5, y5, w3, h2, "auto"); - } else if (shape === "ellipse") { - r2.drawEllipsePath(context, x5, y5, w3, h2); - } - context.fill(); - context.restore(); - }, "draw") - }]); - return OverlayUnderlayRenderer2; - }(); - __name(getBGColor, "getBGColor"); - CRp$4 = {}; - CRp$4.initWebgl = function(opts, fns) { - var r2 = this; - var gl = r2.data.contexts[r2.WEBGL]; - var container2 = opts.cy.container(); - opts.bgColor = getBGColor(container2); - opts.webglTexSize = Math.min(opts.webglTexSize, gl.getParameter(gl.MAX_TEXTURE_SIZE)); - opts.webglTexRows = Math.min(opts.webglTexRows, 54); - opts.webglBatchSize = Math.min(opts.webglBatchSize, 16384); - opts.webglTexPerBatch = Math.min(opts.webglTexPerBatch, gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)); - r2.webglDebug = opts.webglDebug; - r2.webglDebugShowAtlases = opts.webglDebugShowAtlases; - console.log("max texture units", gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)); - console.log("max texture size", gl.getParameter(gl.MAX_TEXTURE_SIZE)); - console.log("webgl options", opts); - r2.pickingFrameBuffer = createPickingFrameBuffer(gl); - r2.pickingFrameBuffer.needsDraw = true; - var getLabelRotation3 = /* @__PURE__ */ __name(function getLabelRotation4(ele) { - return r2.getTextAngle(ele, null); - }, "getLabelRotation"); - var isLabelVisible = /* @__PURE__ */ __name(function isLabelVisible2(ele) { - var label = ele.pstyle("label"); - return label && label.value; - }, "isLabelVisible"); - r2.eleDrawing = new ElementDrawingWebGL(r2, gl, opts); - var our = new OverlayUnderlayRenderer(r2); - r2.eleDrawing.addTextureRenderType("node-body", renderDefaults({ - getKey: fns.getStyleKey, - getBoundingBox: fns.getElementBox, - drawElement: fns.drawElement, - isVisible: /* @__PURE__ */ __name(function isVisible(ele) { - return ele.visible(); - }, "isVisible") - })); - r2.eleDrawing.addTextureRenderType("node-label", renderDefaults({ - getKey: fns.getLabelKey, - getBoundingBox: fns.getLabelBox, - drawElement: fns.drawLabel, - getRotation: getLabelRotation3, - getRotationPoint: fns.getLabelRotationPoint, - getRotationOffset: fns.getLabelRotationOffset, - isVisible: isLabelVisible - })); - r2.eleDrawing.addTextureRenderType("node-overlay", renderDefaults({ - getBoundingBox: fns.getElementBox, - getKey: /* @__PURE__ */ __name(function getKey3(ele) { - return our.getStyleKey("overlay", ele); - }, "getKey"), - drawElement: /* @__PURE__ */ __name(function drawElement(ctx, ele, bb) { - return our.draw("overlay", ctx, ele, bb); - }, "drawElement"), - isVisible: /* @__PURE__ */ __name(function isVisible(ele) { - return our.isVisible("overlay", ele); - }, "isVisible"), - getPadding: /* @__PURE__ */ __name(function getPadding(ele) { - return our.getPadding("overlay", ele); - }, "getPadding") - })); - r2.eleDrawing.addTextureRenderType("node-underlay", renderDefaults({ - getBoundingBox: fns.getElementBox, - getKey: /* @__PURE__ */ __name(function getKey3(ele) { - return our.getStyleKey("underlay", ele); - }, "getKey"), - drawElement: /* @__PURE__ */ __name(function drawElement(ctx, ele, bb) { - return our.draw("underlay", ctx, ele, bb); - }, "drawElement"), - isVisible: /* @__PURE__ */ __name(function isVisible(ele) { - return our.isVisible("underlay", ele); - }, "isVisible"), - getPadding: /* @__PURE__ */ __name(function getPadding(ele) { - return our.getPadding("underlay", ele); - }, "getPadding") - })); - r2.eleDrawing.addTextureRenderType("edge-label", renderDefaults({ - getKey: fns.getLabelKey, - getBoundingBox: fns.getLabelBox, - drawElement: fns.drawLabel, - getRotation: getLabelRotation3, - getRotationPoint: fns.getLabelRotationPoint, - getRotationOffset: fns.getLabelRotationOffset, - isVisible: isLabelVisible - })); - var setGCFlag = debounce_1(function() { - console.log("garbage collect flag set"); - r2.data.gc = true; - }, 1e4); - r2.onUpdateEleCalcs(function(willDraw, eles) { - var gcNeeded = false; - if (eles && eles.length > 0) { - gcNeeded |= r2.eleDrawing.invalidate(eles); - } - if (gcNeeded) { - setGCFlag(); - } - }); - overrideCanvasRendererFunctions(r2); - }; - __name(overrideCanvasRendererFunctions, "overrideCanvasRendererFunctions"); - __name(clearWebgl, "clearWebgl"); - __name(clearCanvas, "clearCanvas"); - __name(createPanZoomMatrix, "createPanZoomMatrix"); - __name(setContextTransform, "setContextTransform"); - __name(drawSelectionRectangle, "drawSelectionRectangle"); - __name(drawAxes, "drawAxes"); - __name(drawAtlases, "drawAtlases"); - __name(getPickingIndexes, "getPickingIndexes"); - __name(findNearestElementsWebgl, "findNearestElementsWebgl"); - __name(renderWebgl, "renderWebgl"); - CRp$3 = {}; - CRp$3.drawPolygonPath = function(context, x5, y5, width3, height2, points) { - var halfW = width3 / 2; - var halfH = height2 / 2; - if (context.beginPath) { - context.beginPath(); - } - context.moveTo(x5 + halfW * points[0], y5 + halfH * points[1]); - for (var i2 = 1; i2 < points.length / 2; i2++) { - context.lineTo(x5 + halfW * points[i2 * 2], y5 + halfH * points[i2 * 2 + 1]); - } - context.closePath(); - }; - CRp$3.drawRoundPolygonPath = function(context, x5, y5, width3, height2, points, corners) { - corners.forEach(function(corner) { - return drawPreparedRoundCorner(context, corner); - }); - context.closePath(); - }; - CRp$3.drawRoundRectanglePath = function(context, x5, y5, width3, height2, radius2) { - var halfWidth = width3 / 2; - var halfHeight = height2 / 2; - var cornerRadius = radius2 === "auto" ? getRoundRectangleRadius(width3, height2) : Math.min(radius2, halfHeight, halfWidth); - if (context.beginPath) { - context.beginPath(); - } - context.moveTo(x5, y5 - halfHeight); - context.arcTo(x5 + halfWidth, y5 - halfHeight, x5 + halfWidth, y5, cornerRadius); - context.arcTo(x5 + halfWidth, y5 + halfHeight, x5, y5 + halfHeight, cornerRadius); - context.arcTo(x5 - halfWidth, y5 + halfHeight, x5 - halfWidth, y5, cornerRadius); - context.arcTo(x5 - halfWidth, y5 - halfHeight, x5, y5 - halfHeight, cornerRadius); - context.lineTo(x5, y5 - halfHeight); - context.closePath(); - }; - CRp$3.drawBottomRoundRectanglePath = function(context, x5, y5, width3, height2, radius2) { - var halfWidth = width3 / 2; - var halfHeight = height2 / 2; - var cornerRadius = radius2 === "auto" ? getRoundRectangleRadius(width3, height2) : radius2; - if (context.beginPath) { - context.beginPath(); - } - context.moveTo(x5, y5 - halfHeight); - context.lineTo(x5 + halfWidth, y5 - halfHeight); - context.lineTo(x5 + halfWidth, y5); - context.arcTo(x5 + halfWidth, y5 + halfHeight, x5, y5 + halfHeight, cornerRadius); - context.arcTo(x5 - halfWidth, y5 + halfHeight, x5 - halfWidth, y5, cornerRadius); - context.lineTo(x5 - halfWidth, y5 - halfHeight); - context.lineTo(x5, y5 - halfHeight); - context.closePath(); - }; - CRp$3.drawCutRectanglePath = function(context, x5, y5, width3, height2, points, corners) { - var halfWidth = width3 / 2; - var halfHeight = height2 / 2; - var cornerLength = corners === "auto" ? getCutRectangleCornerLength() : corners; - if (context.beginPath) { - context.beginPath(); - } - context.moveTo(x5 - halfWidth + cornerLength, y5 - halfHeight); - context.lineTo(x5 + halfWidth - cornerLength, y5 - halfHeight); - context.lineTo(x5 + halfWidth, y5 - halfHeight + cornerLength); - context.lineTo(x5 + halfWidth, y5 + halfHeight - cornerLength); - context.lineTo(x5 + halfWidth - cornerLength, y5 + halfHeight); - context.lineTo(x5 - halfWidth + cornerLength, y5 + halfHeight); - context.lineTo(x5 - halfWidth, y5 + halfHeight - cornerLength); - context.lineTo(x5 - halfWidth, y5 - halfHeight + cornerLength); - context.closePath(); - }; - CRp$3.drawBarrelPath = function(context, x5, y5, width3, height2) { - var halfWidth = width3 / 2; - var halfHeight = height2 / 2; - var xBegin = x5 - halfWidth; - var xEnd = x5 + halfWidth; - var yBegin = y5 - halfHeight; - var yEnd = y5 + halfHeight; - var barrelCurveConstants = getBarrelCurveConstants(width3, height2); - var wOffset = barrelCurveConstants.widthOffset; - var hOffset = barrelCurveConstants.heightOffset; - var ctrlPtXOffset = barrelCurveConstants.ctrlPtOffsetPct * wOffset; - if (context.beginPath) { - context.beginPath(); - } - context.moveTo(xBegin, yBegin + hOffset); - context.lineTo(xBegin, yEnd - hOffset); - context.quadraticCurveTo(xBegin + ctrlPtXOffset, yEnd, xBegin + wOffset, yEnd); - context.lineTo(xEnd - wOffset, yEnd); - context.quadraticCurveTo(xEnd - ctrlPtXOffset, yEnd, xEnd, yEnd - hOffset); - context.lineTo(xEnd, yBegin + hOffset); - context.quadraticCurveTo(xEnd - ctrlPtXOffset, yBegin, xEnd - wOffset, yBegin); - context.lineTo(xBegin + wOffset, yBegin); - context.quadraticCurveTo(xBegin + ctrlPtXOffset, yBegin, xBegin, yBegin + hOffset); - context.closePath(); - }; - sin0 = Math.sin(0); - cos0 = Math.cos(0); - sin2 = {}; - cos2 = {}; - ellipseStepSize = Math.PI / 40; - for (i2 = 0 * Math.PI; i2 < 2 * Math.PI; i2 += ellipseStepSize) { - sin2[i2] = Math.sin(i2); - cos2[i2] = Math.cos(i2); - } - CRp$3.drawEllipsePath = function(context, centerX, centerY, width3, height2) { - if (context.beginPath) { - context.beginPath(); - } - if (context.ellipse) { - context.ellipse(centerX, centerY, width3 / 2, height2 / 2, 0, 0, 2 * Math.PI); - } else { - var xPos, yPos; - var rw = width3 / 2; - var rh = height2 / 2; - for (var i2 = 0 * Math.PI; i2 < 2 * Math.PI; i2 += ellipseStepSize) { - xPos = centerX - rw * sin2[i2] * sin0 + rw * cos2[i2] * cos0; - yPos = centerY + rh * cos2[i2] * sin0 + rh * sin2[i2] * cos0; - if (i2 === 0) { - context.moveTo(xPos, yPos); - } else { - context.lineTo(xPos, yPos); - } - } - } - context.closePath(); - }; - CRp$2 = {}; - CRp$2.createBuffer = function(w3, h2) { - var buffer = document.createElement("canvas"); - buffer.width = w3; - buffer.height = h2; - return [buffer, buffer.getContext("2d")]; - }; - CRp$2.bufferCanvasImage = function(options3) { - var cy = this.cy; - var eles = cy.mutableElements(); - var bb = eles.boundingBox(); - var ctrRect = this.findContainerClientCoords(); - var width3 = options3.full ? Math.ceil(bb.w) : ctrRect[2]; - var height2 = options3.full ? Math.ceil(bb.h) : ctrRect[3]; - var specdMaxDims = number$1(options3.maxWidth) || number$1(options3.maxHeight); - var pxRatio = this.getPixelRatio(); - var scale2 = 1; - if (options3.scale !== void 0) { - width3 *= options3.scale; - height2 *= options3.scale; - scale2 = options3.scale; - } else if (specdMaxDims) { - var maxScaleW = Infinity; - var maxScaleH = Infinity; - if (number$1(options3.maxWidth)) { - maxScaleW = scale2 * options3.maxWidth / width3; - } - if (number$1(options3.maxHeight)) { - maxScaleH = scale2 * options3.maxHeight / height2; - } - scale2 = Math.min(maxScaleW, maxScaleH); - width3 *= scale2; - height2 *= scale2; - } - if (!specdMaxDims) { - width3 *= pxRatio; - height2 *= pxRatio; - scale2 *= pxRatio; - } - var buffCanvas = document.createElement("canvas"); - buffCanvas.width = width3; - buffCanvas.height = height2; - buffCanvas.style.width = width3 + "px"; - buffCanvas.style.height = height2 + "px"; - var buffCxt = buffCanvas.getContext("2d"); - if (width3 > 0 && height2 > 0) { - buffCxt.clearRect(0, 0, width3, height2); - buffCxt.globalCompositeOperation = "source-over"; - var zsortedEles = this.getCachedZSortedEles(); - if (options3.full) { - buffCxt.translate(-bb.x1 * scale2, -bb.y1 * scale2); - buffCxt.scale(scale2, scale2); - this.drawElements(buffCxt, zsortedEles); - buffCxt.scale(1 / scale2, 1 / scale2); - buffCxt.translate(bb.x1 * scale2, bb.y1 * scale2); - } else { - var pan2 = cy.pan(); - var translation = { - x: pan2.x * scale2, - y: pan2.y * scale2 - }; - scale2 *= cy.zoom(); - buffCxt.translate(translation.x, translation.y); - buffCxt.scale(scale2, scale2); - this.drawElements(buffCxt, zsortedEles); - buffCxt.scale(1 / scale2, 1 / scale2); - buffCxt.translate(-translation.x, -translation.y); - } - if (options3.bg) { - buffCxt.globalCompositeOperation = "destination-over"; - buffCxt.fillStyle = options3.bg; - buffCxt.rect(0, 0, width3, height2); - buffCxt.fill(); - } - } - return buffCanvas; - }; - __name(b64ToBlob, "b64ToBlob"); - __name(b64UriToB64, "b64UriToB64"); - __name(output, "output"); - CRp$2.png = function(options3) { - return output(options3, this.bufferCanvasImage(options3), "image/png"); - }; - CRp$2.jpg = function(options3) { - return output(options3, this.bufferCanvasImage(options3), "image/jpeg"); - }; - CRp$1 = {}; - CRp$1.nodeShapeImpl = function(name, context, centerX, centerY, width3, height2, points, corners) { - switch (name) { - case "ellipse": - return this.drawEllipsePath(context, centerX, centerY, width3, height2); - case "polygon": - return this.drawPolygonPath(context, centerX, centerY, width3, height2, points); - case "round-polygon": - return this.drawRoundPolygonPath(context, centerX, centerY, width3, height2, points, corners); - case "roundrectangle": - case "round-rectangle": - return this.drawRoundRectanglePath(context, centerX, centerY, width3, height2, corners); - case "cutrectangle": - case "cut-rectangle": - return this.drawCutRectanglePath(context, centerX, centerY, width3, height2, points, corners); - case "bottomroundrectangle": - case "bottom-round-rectangle": - return this.drawBottomRoundRectanglePath(context, centerX, centerY, width3, height2, corners); - case "barrel": - return this.drawBarrelPath(context, centerX, centerY, width3, height2); - } - }; - CR = CanvasRenderer; - CRp = CanvasRenderer.prototype; - CRp.CANVAS_LAYERS = 3; - CRp.SELECT_BOX = 0; - CRp.DRAG = 1; - CRp.NODE = 2; - CRp.WEBGL = 3; - CRp.CANVAS_TYPES = ["2d", "2d", "2d", "webgl2"]; - CRp.BUFFER_COUNT = 3; - CRp.TEXTURE_BUFFER = 0; - CRp.MOTIONBLUR_BUFFER_NODE = 1; - CRp.MOTIONBLUR_BUFFER_DRAG = 2; - __name(CanvasRenderer, "CanvasRenderer"); - CRp.redrawHint = function(group2, bool2) { - var r2 = this; - switch (group2) { - case "eles": - r2.data.canvasNeedsRedraw[CRp.NODE] = bool2; - break; - case "drag": - r2.data.canvasNeedsRedraw[CRp.DRAG] = bool2; - break; - case "select": - r2.data.canvasNeedsRedraw[CRp.SELECT_BOX] = bool2; - break; - case "gc": - r2.data.gc = true; - break; - } - }; - pathsImpld = typeof Path2D !== "undefined"; - CRp.path2dEnabled = function(on3) { - if (on3 === void 0) { - return this.pathsEnabled; - } - this.pathsEnabled = on3 ? true : false; - }; - CRp.usePaths = function() { - return pathsImpld && this.pathsEnabled; - }; - CRp.setImgSmoothing = function(context, bool2) { - if (context.imageSmoothingEnabled != null) { - context.imageSmoothingEnabled = bool2; - } else { - context.webkitImageSmoothingEnabled = bool2; - context.mozImageSmoothingEnabled = bool2; - context.msImageSmoothingEnabled = bool2; - } - }; - CRp.getImgSmoothing = function(context) { - if (context.imageSmoothingEnabled != null) { - return context.imageSmoothingEnabled; - } else { - return context.webkitImageSmoothingEnabled || context.mozImageSmoothingEnabled || context.msImageSmoothingEnabled; - } - }; - CRp.makeOffscreenCanvas = function(width3, height2) { - var canvas; - if ((typeof OffscreenCanvas === "undefined" ? "undefined" : _typeof(OffscreenCanvas)) !== "undefined") { - canvas = new OffscreenCanvas(width3, height2); - } else { - var containerWindow = this.cy.window(); - var document2 = containerWindow.document; - canvas = document2.createElement("canvas"); - canvas.width = width3; - canvas.height = height2; - } - return canvas; - }; - [CRp$b, CRp$a, CRp$9, CRp$8, CRp$7, CRp$6, CRp$5, CRp$4, CRp$3, CRp$2, CRp$1].forEach(function(props) { - extend4(CRp, props); - }); - renderer5 = [{ - name: "null", - impl: NullRenderer - }, { - name: "base", - impl: BR - }, { - name: "canvas", - impl: CR - }]; - incExts = [{ - type: "layout", - extensions: layout4 - }, { - type: "renderer", - extensions: renderer5 - }]; - extensions = {}; - modules = {}; - __name(setExtension, "setExtension"); - __name(getExtension, "getExtension"); - __name(setModule, "setModule"); - __name(getModule, "getModule"); - extension2 = /* @__PURE__ */ __name(function extension3() { - if (arguments.length === 2) { - return getExtension.apply(null, arguments); - } else if (arguments.length === 3) { - return setExtension.apply(null, arguments); - } else if (arguments.length === 4) { - return getModule.apply(null, arguments); - } else if (arguments.length === 5) { - return setModule.apply(null, arguments); - } else { - error("Invalid extension access syntax"); - } - }, "extension"); - Core.prototype.extension = extension2; - incExts.forEach(function(group2) { - group2.extensions.forEach(function(ext) { - setExtension(group2.type, ext.name, ext.impl); - }); - }); - Stylesheet = /* @__PURE__ */ __name(function Stylesheet2() { - if (!(this instanceof Stylesheet2)) { - return new Stylesheet2(); - } - this.length = 0; - }, "Stylesheet"); - sheetfn = Stylesheet.prototype; - sheetfn.instanceString = function() { - return "stylesheet"; - }; - sheetfn.selector = function(selector) { - var i2 = this.length++; - this[i2] = { - selector, - properties: [] - }; - return this; - }; - sheetfn.css = function(name, value2) { - var i2 = this.length - 1; - if (string(name)) { - this[i2].properties.push({ - name, - value: value2 - }); - } else if (plainObject(name)) { - var map5 = name; - var propNames = Object.keys(map5); - for (var j2 = 0; j2 < propNames.length; j2++) { - var key = propNames[j2]; - var mapVal = map5[key]; - if (mapVal == null) { - continue; - } - var prop = Style2.properties[key] || Style2.properties[dash2camel(key)]; - if (prop == null) { - continue; - } - var _name = prop.name; - var _value = mapVal; - this[i2].properties.push({ - name: _name, - value: _value - }); - } - } - return this; - }; - sheetfn.style = sheetfn.css; - sheetfn.generateStyle = function(cy) { - var style3 = new Style2(cy); - return this.appendToStyle(style3); - }; - sheetfn.appendToStyle = function(style3) { - for (var i2 = 0; i2 < this.length; i2++) { - var context = this[i2]; - var selector = context.selector; - var props = context.properties; - style3.selector(selector); - for (var j2 = 0; j2 < props.length; j2++) { - var prop = props[j2]; - style3.css(prop.name, prop.value); - } - } - return style3; - }; - version = "3.31.0"; - cytoscape2 = /* @__PURE__ */ __name(function cytoscape3(options3) { - if (options3 === void 0) { - options3 = {}; - } - if (plainObject(options3)) { - return new Core(options3); - } else if (string(options3)) { - return extension2.apply(extension2, arguments); - } - }, "cytoscape"); - cytoscape2.use = function(ext) { - var args = Array.prototype.slice.call(arguments, 1); - args.unshift(cytoscape2); - ext.apply(null, args); - return this; - }; - cytoscape2.warnings = function(bool2) { - return warnings(bool2); - }; - cytoscape2.version = version; - cytoscape2.stylesheet = cytoscape2.Stylesheet = Stylesheet; - } - }); - - // ../../node_modules/.pnpm/layout-base@1.0.2/node_modules/layout-base/layout-base.js - var require_layout_base = __commonJS({ - "../../node_modules/.pnpm/layout-base@1.0.2/node_modules/layout-base/layout-base.js"(exports2, module2) { - "use strict"; - (/* @__PURE__ */ __name(function webpackUniversalModuleDefinition(root4, factory) { - if (typeof exports2 === "object" && typeof module2 === "object") - module2.exports = factory(); - else if (typeof define === "function" && define.amd) - define([], factory); - else if (typeof exports2 === "object") - exports2["layoutBase"] = factory(); - else - root4["layoutBase"] = factory(); - }, "webpackUniversalModuleDefinition"))(exports2, function() { - return ( - /******/ - function(modules2) { - var installedModules = {}; - function __webpack_require__(moduleId) { - if (installedModules[moduleId]) { - return installedModules[moduleId].exports; + lines = match2[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; } - var module3 = installedModules[moduleId] = { - /******/ - i: moduleId, - /******/ - l: false, - /******/ - exports: {} - /******/ + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length }; - modules2[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); - module3.l = true; - return module3.exports; - } - __name(__webpack_require__, "__webpack_require__"); - __webpack_require__.m = modules2; - __webpack_require__.c = installedModules; - __webpack_require__.i = function(value2) { - return value2; - }; - __webpack_require__.d = function(exports3, name, getter) { - if (!__webpack_require__.o(exports3, name)) { - Object.defineProperty(exports3, name, { - /******/ - configurable: false, - /******/ - enumerable: true, - /******/ - get: getter - /******/ - }); + this.yytext += match2[0]; + this.match += match2[0]; + this.matches = match2; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; } - }; - __webpack_require__.n = function(module3) { - var getter = module3 && module3.__esModule ? ( - /******/ - /* @__PURE__ */ __name(function getDefault() { - return module3["default"]; - }, "getDefault") - ) : ( - /******/ - /* @__PURE__ */ __name(function getModuleExports() { - return module3; - }, "getModuleExports") - ); - __webpack_require__.d(getter, "a", getter); - return getter; - }; - __webpack_require__.o = function(object3, property2) { - return Object.prototype.hasOwnProperty.call(object3, property2); - }; - __webpack_require__.p = ""; - return __webpack_require__(__webpack_require__.s = 26); - }([ - /* 0 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function LayoutConstants() { + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match2[0].length); + this.matched += match2[0]; + token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; } - __name(LayoutConstants, "LayoutConstants"); - LayoutConstants.QUALITY = 1; - LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false; - LayoutConstants.DEFAULT_INCREMENTAL = false; - LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true; - LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false; - LayoutConstants.DEFAULT_ANIMATION_PERIOD = 50; - LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false; - LayoutConstants.DEFAULT_GRAPH_MARGIN = 15; - LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false; - LayoutConstants.SIMPLE_NODE_SIZE = 40; - LayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2; - LayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40; - LayoutConstants.MIN_EDGE_LENGTH = 1; - LayoutConstants.WORLD_BOUNDARY = 1e6; - LayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1e3; - LayoutConstants.WORLD_CENTER_X = 1200; - LayoutConstants.WORLD_CENTER_Y = 900; - module3.exports = LayoutConstants; - }, - /* 1 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var LGraphObject = __webpack_require__(2); - var IGeometry = __webpack_require__(8); - var IMath = __webpack_require__(9); - function LEdge(source, target, vEdge) { - LGraphObject.call(this, vEdge); - this.isOverlapingSourceAndTarget = false; - this.vGraphObject = vEdge; - this.bendpoints = []; - this.source = source; - this.target = target; + if (token2) { + return token2; + } else if (this._backtrack) { + for (var k2 in backup) { + this[k2] = backup[k2]; + } + return false; } - __name(LEdge, "LEdge"); - LEdge.prototype = Object.create(LGraphObject.prototype); - for (var prop in LGraphObject) { - LEdge[prop] = LGraphObject[prop]; + return false; + }, "test_match"), + // return next match in input + next: /* @__PURE__ */ __name(function() { + if (this.done) { + return this.EOF; } - LEdge.prototype.getSource = function() { - return this.source; - }; - LEdge.prototype.getTarget = function() { - return this.target; - }; - LEdge.prototype.isInterGraph = function() { - return this.isInterGraph; - }; - LEdge.prototype.getLength = function() { - return this.length; - }; - LEdge.prototype.isOverlapingSourceAndTarget = function() { - return this.isOverlapingSourceAndTarget; - }; - LEdge.prototype.getBendpoints = function() { - return this.bendpoints; - }; - LEdge.prototype.getLca = function() { - return this.lca; - }; - LEdge.prototype.getSourceInLca = function() { - return this.sourceInLca; - }; - LEdge.prototype.getTargetInLca = function() { - return this.targetInLca; - }; - LEdge.prototype.getOtherEnd = function(node2) { - if (this.source === node2) { - return this.target; - } else if (this.target === node2) { - return this.source; - } else { - throw "Node is not incident with this edge"; - } - }; - LEdge.prototype.getOtherEndInGraph = function(node2, graph) { - var otherEnd = this.getOtherEnd(node2); - var root4 = graph.getGraphManager().getRoot(); - while (true) { - if (otherEnd.getOwner() == graph) { - return otherEnd; - } - if (otherEnd.getOwner() == root4) { + if (!this._input) { + this.done = true; + } + var token2, match2, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i2 = 0; i2 < rules.length; i2++) { + tempMatch = this._input.match(this.rules[rules[i2]]); + if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { + match2 = tempMatch; + index = i2; + if (this.options.backtrack_lexer) { + token2 = this.test_match(tempMatch, rules[i2]); + if (token2 !== false) { + return token2; + } else if (this._backtrack) { + match2 = false; + continue; + } else { + return false; + } + } else if (!this.options.flex) { break; } - otherEnd = otherEnd.getOwner().getParent(); } - return null; - }; - LEdge.prototype.updateLength = function() { - var clipPointCoordinates = new Array(4); - this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates); - if (!this.isOverlapingSourceAndTarget) { - this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2]; - this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3]; - if (Math.abs(this.lengthX) < 1) { - this.lengthX = IMath.sign(this.lengthX); - } - if (Math.abs(this.lengthY) < 1) { - this.lengthY = IMath.sign(this.lengthY); - } - this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); - } - }; - LEdge.prototype.updateLengthSimple = function() { - this.lengthX = this.target.getCenterX() - this.source.getCenterX(); - this.lengthY = this.target.getCenterY() - this.source.getCenterY(); - if (Math.abs(this.lengthX) < 1) { - this.lengthX = IMath.sign(this.lengthX); - } - if (Math.abs(this.lengthY) < 1) { - this.lengthY = IMath.sign(this.lengthY); - } - this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); - }; - module3.exports = LEdge; - }, - /* 2 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function LGraphObject(vGraphObject) { - this.vGraphObject = vGraphObject; } - __name(LGraphObject, "LGraphObject"); - module3.exports = LGraphObject; - }, - /* 3 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var LGraphObject = __webpack_require__(2); - var Integer = __webpack_require__(10); - var RectangleD = __webpack_require__(13); - var LayoutConstants = __webpack_require__(0); - var RandomSeed = __webpack_require__(16); - var PointD = __webpack_require__(4); - function LNode(gm, loc, size5, vNode) { - if (size5 == null && vNode == null) { - vNode = loc; + if (match2) { + token2 = this.test_match(match2, rules[index]); + if (token2 !== false) { + return token2; } - LGraphObject.call(this, vNode); - if (gm.graphManager != null) gm = gm.graphManager; - this.estimatedSize = Integer.MIN_VALUE; - this.inclusionTreeDepth = Integer.MAX_VALUE; - this.vGraphObject = vNode; - this.edges = []; - this.graphManager = gm; - if (size5 != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size5.width, size5.height); - else this.rect = new RectangleD(); - } - __name(LNode, "LNode"); - LNode.prototype = Object.create(LGraphObject.prototype); - for (var prop in LGraphObject) { - LNode[prop] = LGraphObject[prop]; + return false; } - LNode.prototype.getEdges = function() { - return this.edges; - }; - LNode.prototype.getChild = function() { - return this.child; - }; - LNode.prototype.getOwner = function() { - return this.owner; - }; - LNode.prototype.getWidth = function() { - return this.rect.width; - }; - LNode.prototype.setWidth = function(width3) { - this.rect.width = width3; - }; - LNode.prototype.getHeight = function() { - return this.rect.height; - }; - LNode.prototype.setHeight = function(height2) { - this.rect.height = height2; - }; - LNode.prototype.getCenterX = function() { - return this.rect.x + this.rect.width / 2; - }; - LNode.prototype.getCenterY = function() { - return this.rect.y + this.rect.height / 2; - }; - LNode.prototype.getCenter = function() { - return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2); - }; - LNode.prototype.getLocation = function() { - return new PointD(this.rect.x, this.rect.y); - }; - LNode.prototype.getRect = function() { - return this.rect; - }; - LNode.prototype.getDiagonal = function() { - return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height); - }; - LNode.prototype.getHalfTheDiagonal = function() { - return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2; - }; - LNode.prototype.setRect = function(upperLeft, dimension) { - this.rect.x = upperLeft.x; - this.rect.y = upperLeft.y; - this.rect.width = dimension.width; - this.rect.height = dimension.height; - }; - LNode.prototype.setCenter = function(cx, cy) { - this.rect.x = cx - this.rect.width / 2; - this.rect.y = cy - this.rect.height / 2; - }; - LNode.prototype.setLocation = function(x5, y5) { - this.rect.x = x5; - this.rect.y = y5; - }; - LNode.prototype.moveBy = function(dx, dy) { - this.rect.x += dx; - this.rect.y += dy; - }; - LNode.prototype.getEdgeListToNode = function(to) { - var edgeList2 = []; - var edge; - var self2 = this; - self2.edges.forEach(function(edge2) { - if (edge2.target == to) { - if (edge2.source != self2) throw "Incorrect edge source!"; - edgeList2.push(edge2); - } - }); - return edgeList2; - }; - LNode.prototype.getEdgesBetween = function(other2) { - var edgeList2 = []; - var edge; - var self2 = this; - self2.edges.forEach(function(edge2) { - if (!(edge2.source == self2 || edge2.target == self2)) throw "Incorrect edge source and/or target"; - if (edge2.target == other2 || edge2.source == other2) { - edgeList2.push(edge2); - } - }); - return edgeList2; - }; - LNode.prototype.getNeighborsList = function() { - var neighbors = /* @__PURE__ */ new Set(); - var self2 = this; - self2.edges.forEach(function(edge) { - if (edge.source == self2) { - neighbors.add(edge.target); - } else { - if (edge.target != self2) { - throw "Incorrect incidency!"; - } - neighbors.add(edge.source); - } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno }); - return neighbors; - }; - LNode.prototype.withChildren = function() { - var withNeighborsList = /* @__PURE__ */ new Set(); - var childNode; - var children2; - withNeighborsList.add(this); - if (this.child != null) { - var nodes6 = this.child.getNodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - childNode = nodes6[i2]; - children2 = childNode.withChildren(); - children2.forEach(function(node2) { - withNeighborsList.add(node2); - }); - } - } - return withNeighborsList; - }; - LNode.prototype.getNoOfChildren = function() { - var noOfChildren = 0; - var childNode; - if (this.child == null) { - noOfChildren = 1; - } else { - var nodes6 = this.child.getNodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - childNode = nodes6[i2]; - noOfChildren += childNode.getNoOfChildren(); - } - } - if (noOfChildren == 0) { - noOfChildren = 1; - } - return noOfChildren; - }; - LNode.prototype.getEstimatedSize = function() { - if (this.estimatedSize == Integer.MIN_VALUE) { - throw "assert failed"; - } - return this.estimatedSize; - }; - LNode.prototype.calcEstimatedSize = function() { - if (this.child == null) { - return this.estimatedSize = (this.rect.width + this.rect.height) / 2; - } else { - this.estimatedSize = this.child.calcEstimatedSize(); - this.rect.width = this.estimatedSize; - this.rect.height = this.estimatedSize; - return this.estimatedSize; - } - }; - LNode.prototype.scatter = function() { - var randomCenterX; - var randomCenterY; - var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY; - var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY; - randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX; - var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY; - var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY; - randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY; - this.rect.x = randomCenterX; - this.rect.y = randomCenterY; - }; - LNode.prototype.updateBounds = function() { - if (this.getChild() == null) { - throw "assert failed"; - } - if (this.getChild().getNodes().length != 0) { - var childGraph = this.getChild(); - childGraph.updateBounds(true); - this.rect.x = childGraph.getLeft(); - this.rect.y = childGraph.getTop(); - this.setWidth(childGraph.getRight() - childGraph.getLeft()); - this.setHeight(childGraph.getBottom() - childGraph.getTop()); - if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) { - var width3 = childGraph.getRight() - childGraph.getLeft(); - var height2 = childGraph.getBottom() - childGraph.getTop(); - if (this.labelWidth > width3) { - this.rect.x -= (this.labelWidth - width3) / 2; - this.setWidth(this.labelWidth); - } - if (this.labelHeight > height2) { - if (this.labelPos == "center") { - this.rect.y -= (this.labelHeight - height2) / 2; - } else if (this.labelPos == "top") { - this.rect.y -= this.labelHeight - height2; - } - this.setHeight(this.labelHeight); - } - } - } - }; - LNode.prototype.getInclusionTreeDepth = function() { - if (this.inclusionTreeDepth == Integer.MAX_VALUE) { - throw "assert failed"; - } - return this.inclusionTreeDepth; - }; - LNode.prototype.transform = function(trans) { - var left3 = this.rect.x; - if (left3 > LayoutConstants.WORLD_BOUNDARY) { - left3 = LayoutConstants.WORLD_BOUNDARY; - } else if (left3 < -LayoutConstants.WORLD_BOUNDARY) { - left3 = -LayoutConstants.WORLD_BOUNDARY; - } - var top2 = this.rect.y; - if (top2 > LayoutConstants.WORLD_BOUNDARY) { - top2 = LayoutConstants.WORLD_BOUNDARY; - } else if (top2 < -LayoutConstants.WORLD_BOUNDARY) { - top2 = -LayoutConstants.WORLD_BOUNDARY; - } - var leftTop = new PointD(left3, top2); - var vLeftTop = trans.inverseTransformPoint(leftTop); - this.setLocation(vLeftTop.x, vLeftTop.y); - }; - LNode.prototype.getLeft = function() { - return this.rect.x; - }; - LNode.prototype.getRight = function() { - return this.rect.x + this.rect.width; - }; - LNode.prototype.getTop = function() { - return this.rect.y; - }; - LNode.prototype.getBottom = function() { - return this.rect.y + this.rect.height; - }; - LNode.prototype.getParent = function() { - if (this.owner == null) { - return null; - } - return this.owner.getParent(); - }; - module3.exports = LNode; - }, - /* 4 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function PointD(x5, y5) { - if (x5 == null && y5 == null) { - this.x = 0; - this.y = 0; - } else { - this.x = x5; - this.y = y5; - } } - __name(PointD, "PointD"); - PointD.prototype.getX = function() { - return this.x; - }; - PointD.prototype.getY = function() { - return this.y; - }; - PointD.prototype.setX = function(x5) { - this.x = x5; - }; - PointD.prototype.setY = function(y5) { - this.y = y5; - }; - PointD.prototype.getDifference = function(pt) { - return new DimensionD(this.x - pt.x, this.y - pt.y); - }; - PointD.prototype.getCopy = function() { - return new PointD(this.x, this.y); - }; - PointD.prototype.translate = function(dim) { - this.x += dim.width; - this.y += dim.height; - return this; - }; - module3.exports = PointD; - }, - /* 5 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var LGraphObject = __webpack_require__(2); - var Integer = __webpack_require__(10); - var LayoutConstants = __webpack_require__(0); - var LGraphManager = __webpack_require__(6); - var LNode = __webpack_require__(3); - var LEdge = __webpack_require__(1); - var RectangleD = __webpack_require__(13); - var Point3 = __webpack_require__(12); - var LinkedList = __webpack_require__(11); - function LGraph(parent4, obj2, vGraph) { - LGraphObject.call(this, vGraph); - this.estimatedSize = Integer.MIN_VALUE; - this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN; - this.edges = []; - this.nodes = []; - this.isConnected = false; - this.parent = parent4; - if (obj2 != null && obj2 instanceof LGraphManager) { - this.graphManager = obj2; - } else if (obj2 != null && obj2 instanceof Layout) { - this.graphManager = obj2.graphManager; - } + }, "next"), + // return next match that has a token + lex: /* @__PURE__ */ __name(function lex() { + var r2 = this.next(); + if (r2) { + return r2; + } else { + return this.lex(); } - __name(LGraph, "LGraph"); - LGraph.prototype = Object.create(LGraphObject.prototype); - for (var prop in LGraphObject) { - LGraph[prop] = LGraphObject[prop]; + }, "lex"), + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: /* @__PURE__ */ __name(function begin(condition) { + this.conditionStack.push(condition); + }, "begin"), + // pop the previously active lexer condition state off the condition stack + popState: /* @__PURE__ */ __name(function popState() { + var n2 = this.conditionStack.length - 1; + if (n2 > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; } - LGraph.prototype.getNodes = function() { - return this.nodes; - }; - LGraph.prototype.getEdges = function() { - return this.edges; - }; - LGraph.prototype.getGraphManager = function() { - return this.graphManager; - }; - LGraph.prototype.getParent = function() { - return this.parent; - }; - LGraph.prototype.getLeft = function() { - return this.left; - }; - LGraph.prototype.getRight = function() { - return this.right; - }; - LGraph.prototype.getTop = function() { - return this.top; - }; - LGraph.prototype.getBottom = function() { - return this.bottom; - }; - LGraph.prototype.isConnected = function() { - return this.isConnected; - }; - LGraph.prototype.add = function(obj1, sourceNode, targetNode) { - if (sourceNode == null && targetNode == null) { - var newNode = obj1; - if (this.graphManager == null) { - throw "Graph has no graph mgr!"; - } - if (this.getNodes().indexOf(newNode) > -1) { - throw "Node already in graph!"; - } - newNode.owner = this; - this.getNodes().push(newNode); - return newNode; - } else { - var newEdge = obj1; - if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) { - throw "Source or target not in graph!"; - } - if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) { - throw "Both owners must be this graph!"; - } - if (sourceNode.owner != targetNode.owner) { - return null; - } - newEdge.source = sourceNode; - newEdge.target = targetNode; - newEdge.isInterGraph = false; - this.getEdges().push(newEdge); - sourceNode.edges.push(newEdge); - if (targetNode != sourceNode) { - targetNode.edges.push(newEdge); - } - return newEdge; - } - }; - LGraph.prototype.remove = function(obj) { - var node2 = obj; - if (obj instanceof LNode) { - if (node2 == null) { - throw "Node is null!"; - } - if (!(node2.owner != null && node2.owner == this)) { - throw "Owner graph is invalid!"; - } - if (this.graphManager == null) { - throw "Owner graph manager is invalid!"; - } - var edgesToBeRemoved = node2.edges.slice(); - var edge; - var s2 = edgesToBeRemoved.length; - for (var i2 = 0; i2 < s2; i2++) { - edge = edgesToBeRemoved[i2]; - if (edge.isInterGraph) { - this.graphManager.remove(edge); - } else { - edge.source.owner.remove(edge); - } - } - var index = this.nodes.indexOf(node2); - if (index == -1) { - throw "Node not in owner node list!"; - } - this.nodes.splice(index, 1); - } else if (obj instanceof LEdge) { - var edge = obj; - if (edge == null) { - throw "Edge is null!"; - } - if (!(edge.source != null && edge.target != null)) { - throw "Source and/or target is null!"; - } - if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) { - throw "Source and/or target owner is invalid!"; - } - var sourceIndex = edge.source.edges.indexOf(edge); - var targetIndex = edge.target.edges.indexOf(edge); - if (!(sourceIndex > -1 && targetIndex > -1)) { - throw "Source and/or target doesn't know this edge!"; - } - edge.source.edges.splice(sourceIndex, 1); - if (edge.target != edge.source) { - edge.target.edges.splice(targetIndex, 1); - } - var index = edge.source.owner.getEdges().indexOf(edge); - if (index == -1) { - throw "Not in owner's edge list!"; - } - edge.source.owner.getEdges().splice(index, 1); - } - }; - LGraph.prototype.updateLeftTop = function() { - var top2 = Integer.MAX_VALUE; - var left3 = Integer.MAX_VALUE; - var nodeTop; - var nodeLeft; - var margin; - var nodes6 = this.getNodes(); - var s2 = nodes6.length; - for (var i2 = 0; i2 < s2; i2++) { - var lNode = nodes6[i2]; - nodeTop = lNode.getTop(); - nodeLeft = lNode.getLeft(); - if (top2 > nodeTop) { - top2 = nodeTop; - } - if (left3 > nodeLeft) { - left3 = nodeLeft; - } - } - if (top2 == Integer.MAX_VALUE) { - return null; - } - if (nodes6[0].getParent().paddingLeft != void 0) { - margin = nodes6[0].getParent().paddingLeft; - } else { - margin = this.margin; - } - this.left = left3 - margin; - this.top = top2 - margin; - return new Point3(this.left, this.top); - }; - LGraph.prototype.updateBounds = function(recursive) { - var left3 = Integer.MAX_VALUE; - var right3 = -Integer.MAX_VALUE; - var top2 = Integer.MAX_VALUE; - var bottom2 = -Integer.MAX_VALUE; - var nodeLeft; - var nodeRight; - var nodeTop; - var nodeBottom; - var margin; - var nodes6 = this.nodes; - var s2 = nodes6.length; - for (var i2 = 0; i2 < s2; i2++) { - var lNode = nodes6[i2]; - if (recursive && lNode.child != null) { - lNode.updateBounds(); - } - nodeLeft = lNode.getLeft(); - nodeRight = lNode.getRight(); - nodeTop = lNode.getTop(); - nodeBottom = lNode.getBottom(); - if (left3 > nodeLeft) { - left3 = nodeLeft; - } - if (right3 < nodeRight) { - right3 = nodeRight; - } - if (top2 > nodeTop) { - top2 = nodeTop; - } - if (bottom2 < nodeBottom) { - bottom2 = nodeBottom; - } - } - var boundingRect = new RectangleD(left3, top2, right3 - left3, bottom2 - top2); - if (left3 == Integer.MAX_VALUE) { - this.left = this.parent.getLeft(); - this.right = this.parent.getRight(); - this.top = this.parent.getTop(); - this.bottom = this.parent.getBottom(); - } - if (nodes6[0].getParent().paddingLeft != void 0) { - margin = nodes6[0].getParent().paddingLeft; - } else { - margin = this.margin; - } - this.left = boundingRect.x - margin; - this.right = boundingRect.x + boundingRect.width + margin; - this.top = boundingRect.y - margin; - this.bottom = boundingRect.y + boundingRect.height + margin; - }; - LGraph.calculateBounds = function(nodes6) { - var left3 = Integer.MAX_VALUE; - var right3 = -Integer.MAX_VALUE; - var top2 = Integer.MAX_VALUE; - var bottom2 = -Integer.MAX_VALUE; - var nodeLeft; - var nodeRight; - var nodeTop; - var nodeBottom; - var s2 = nodes6.length; - for (var i2 = 0; i2 < s2; i2++) { - var lNode = nodes6[i2]; - nodeLeft = lNode.getLeft(); - nodeRight = lNode.getRight(); - nodeTop = lNode.getTop(); - nodeBottom = lNode.getBottom(); - if (left3 > nodeLeft) { - left3 = nodeLeft; - } - if (right3 < nodeRight) { - right3 = nodeRight; - } - if (top2 > nodeTop) { - top2 = nodeTop; - } - if (bottom2 < nodeBottom) { - bottom2 = nodeBottom; - } - } - var boundingRect = new RectangleD(left3, top2, right3 - left3, bottom2 - top2); - return boundingRect; - }; - LGraph.prototype.getInclusionTreeDepth = function() { - if (this == this.graphManager.getRoot()) { - return 1; - } else { - return this.parent.getInclusionTreeDepth(); - } - }; - LGraph.prototype.getEstimatedSize = function() { - if (this.estimatedSize == Integer.MIN_VALUE) { - throw "assert failed"; - } - return this.estimatedSize; - }; - LGraph.prototype.calcEstimatedSize = function() { - var size5 = 0; - var nodes6 = this.nodes; - var s2 = nodes6.length; - for (var i2 = 0; i2 < s2; i2++) { - var lNode = nodes6[i2]; - size5 += lNode.calcEstimatedSize(); - } - if (size5 == 0) { - this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE; - } else { - this.estimatedSize = size5 / Math.sqrt(this.nodes.length); - } - return this.estimatedSize; - }; - LGraph.prototype.updateConnected = function() { - var self2 = this; - if (this.nodes.length == 0) { - this.isConnected = true; - return; - } - var queue = new LinkedList(); - var visited = /* @__PURE__ */ new Set(); - var currentNode = this.nodes[0]; - var neighborEdges; - var currentNeighbor; - var childrenOfNode = currentNode.withChildren(); - childrenOfNode.forEach(function(node2) { - queue.push(node2); - visited.add(node2); - }); - while (queue.length !== 0) { - currentNode = queue.shift(); - neighborEdges = currentNode.getEdges(); - var size5 = neighborEdges.length; - for (var i2 = 0; i2 < size5; i2++) { - var neighborEdge = neighborEdges[i2]; - currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this); - if (currentNeighbor != null && !visited.has(currentNeighbor)) { - var childrenOfNeighbor = currentNeighbor.withChildren(); - childrenOfNeighbor.forEach(function(node2) { - queue.push(node2); - visited.add(node2); - }); - } - } - } - this.isConnected = false; - if (visited.size >= this.nodes.length) { - var noOfVisitedInThisGraph = 0; - visited.forEach(function(visitedNode) { - if (visitedNode.owner == self2) { - noOfVisitedInThisGraph++; - } - }); - if (noOfVisitedInThisGraph == this.nodes.length) { - this.isConnected = true; - } - } - }; - module3.exports = LGraph; - }, - /* 6 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var LGraph; - var LEdge = __webpack_require__(1); - function LGraphManager(layout6) { - LGraph = __webpack_require__(5); - this.layout = layout6; - this.graphs = []; - this.edges = []; + }, "popState"), + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: /* @__PURE__ */ __name(function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; } - __name(LGraphManager, "LGraphManager"); - LGraphManager.prototype.addRoot = function() { - var ngraph = this.layout.newGraph(); - var nnode = this.layout.newNode(null); - var root4 = this.add(ngraph, nnode); - this.setRootGraph(root4); - return this.rootGraph; - }; - LGraphManager.prototype.add = function(newGraph, parentNode, newEdge, sourceNode, targetNode) { - if (newEdge == null && sourceNode == null && targetNode == null) { - if (newGraph == null) { - throw "Graph is null!"; - } - if (parentNode == null) { - throw "Parent node is null!"; - } - if (this.graphs.indexOf(newGraph) > -1) { - throw "Graph already in this graph mgr!"; - } - this.graphs.push(newGraph); - if (newGraph.parent != null) { - throw "Already has a parent!"; - } - if (parentNode.child != null) { - throw "Already has a child!"; - } - newGraph.parent = parentNode; - parentNode.child = newGraph; - return newGraph; - } else { - targetNode = newEdge; - sourceNode = parentNode; - newEdge = newGraph; - var sourceGraph = sourceNode.getOwner(); - var targetGraph = targetNode.getOwner(); - if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) { - throw "Source not in this graph mgr!"; - } - if (!(targetGraph != null && targetGraph.getGraphManager() == this)) { - throw "Target not in this graph mgr!"; - } - if (sourceGraph == targetGraph) { - newEdge.isInterGraph = false; - return sourceGraph.add(newEdge, sourceNode, targetNode); - } else { - newEdge.isInterGraph = true; - newEdge.source = sourceNode; - newEdge.target = targetNode; - if (this.edges.indexOf(newEdge) > -1) { - throw "Edge already in inter-graph edge list!"; - } - this.edges.push(newEdge); - if (!(newEdge.source != null && newEdge.target != null)) { - throw "Edge source and/or target is null!"; - } - if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) { - throw "Edge already in source and/or target incidency list!"; - } - newEdge.source.edges.push(newEdge); - newEdge.target.edges.push(newEdge); - return newEdge; - } - } - }; - LGraphManager.prototype.remove = function(lObj) { - if (lObj instanceof LGraph) { - var graph = lObj; - if (graph.getGraphManager() != this) { - throw "Graph not in this graph mgr"; - } - if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) { - throw "Invalid parent node!"; - } - var edgesToBeRemoved = []; - edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges()); - var edge; - var s2 = edgesToBeRemoved.length; - for (var i2 = 0; i2 < s2; i2++) { - edge = edgesToBeRemoved[i2]; - graph.remove(edge); - } - var nodesToBeRemoved = []; - nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes()); - var node2; - s2 = nodesToBeRemoved.length; - for (var i2 = 0; i2 < s2; i2++) { - node2 = nodesToBeRemoved[i2]; - graph.remove(node2); - } - if (graph == this.rootGraph) { - this.setRootGraph(null); - } - var index = this.graphs.indexOf(graph); - this.graphs.splice(index, 1); - graph.parent = null; - } else if (lObj instanceof LEdge) { - edge = lObj; - if (edge == null) { - throw "Edge is null!"; - } - if (!edge.isInterGraph) { - throw "Not an inter-graph edge!"; - } - if (!(edge.source != null && edge.target != null)) { - throw "Source and/or target is null!"; - } - if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) { - throw "Source and/or target doesn't know this edge!"; - } - var index = edge.source.edges.indexOf(edge); - edge.source.edges.splice(index, 1); - index = edge.target.edges.indexOf(edge); - edge.target.edges.splice(index, 1); - if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) { - throw "Edge owner graph or owner graph manager is null!"; - } - if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) { - throw "Not in owner graph manager's edge list!"; - } - var index = edge.source.owner.getGraphManager().edges.indexOf(edge); - edge.source.owner.getGraphManager().edges.splice(index, 1); - } - }; - LGraphManager.prototype.updateBounds = function() { - this.rootGraph.updateBounds(true); - }; - LGraphManager.prototype.getGraphs = function() { - return this.graphs; - }; - LGraphManager.prototype.getAllNodes = function() { - if (this.allNodes == null) { - var nodeList = []; - var graphs = this.getGraphs(); - var s2 = graphs.length; - for (var i2 = 0; i2 < s2; i2++) { - nodeList = nodeList.concat(graphs[i2].getNodes()); - } - this.allNodes = nodeList; - } - return this.allNodes; - }; - LGraphManager.prototype.resetAllNodes = function() { - this.allNodes = null; - }; - LGraphManager.prototype.resetAllEdges = function() { - this.allEdges = null; - }; - LGraphManager.prototype.resetAllNodesToApplyGravitation = function() { - this.allNodesToApplyGravitation = null; - }; - LGraphManager.prototype.getAllEdges = function() { - if (this.allEdges == null) { - var edgeList2 = []; - var graphs = this.getGraphs(); - var s2 = graphs.length; - for (var i2 = 0; i2 < graphs.length; i2++) { - edgeList2 = edgeList2.concat(graphs[i2].getEdges()); - } - edgeList2 = edgeList2.concat(this.edges); - this.allEdges = edgeList2; - } - return this.allEdges; - }; - LGraphManager.prototype.getAllNodesToApplyGravitation = function() { - return this.allNodesToApplyGravitation; - }; - LGraphManager.prototype.setAllNodesToApplyGravitation = function(nodeList) { - if (this.allNodesToApplyGravitation != null) { - throw "assert failed"; - } - this.allNodesToApplyGravitation = nodeList; - }; - LGraphManager.prototype.getRoot = function() { - return this.rootGraph; - }; - LGraphManager.prototype.setRootGraph = function(graph) { - if (graph.getGraphManager() != this) { - throw "Root not in this graph mgr!"; - } - this.rootGraph = graph; - if (graph.parent == null) { - graph.parent = this.layout.newNode("Root node"); - } - }; - LGraphManager.prototype.getLayout = function() { - return this.layout; - }; - LGraphManager.prototype.isOneAncestorOfOther = function(firstNode, secondNode) { - if (!(firstNode != null && secondNode != null)) { - throw "assert failed"; - } - if (firstNode == secondNode) { - return true; - } - var ownerGraph = firstNode.getOwner(); - var parentNode; - do { - parentNode = ownerGraph.getParent(); - if (parentNode == null) { - break; - } - if (parentNode == secondNode) { - return true; - } - ownerGraph = parentNode.getOwner(); - if (ownerGraph == null) { - break; - } - } while (true); - ownerGraph = secondNode.getOwner(); - do { - parentNode = ownerGraph.getParent(); - if (parentNode == null) { - break; - } - if (parentNode == firstNode) { - return true; - } - ownerGraph = parentNode.getOwner(); - if (ownerGraph == null) { - break; - } - } while (true); - return false; - }; - LGraphManager.prototype.calcLowestCommonAncestors = function() { - var edge; - var sourceNode; - var targetNode; - var sourceAncestorGraph; - var targetAncestorGraph; - var edges3 = this.getAllEdges(); - var s2 = edges3.length; - for (var i2 = 0; i2 < s2; i2++) { - edge = edges3[i2]; - sourceNode = edge.source; - targetNode = edge.target; - edge.lca = null; - edge.sourceInLca = sourceNode; - edge.targetInLca = targetNode; - if (sourceNode == targetNode) { - edge.lca = sourceNode.getOwner(); - continue; - } - sourceAncestorGraph = sourceNode.getOwner(); - while (edge.lca == null) { - edge.targetInLca = targetNode; - targetAncestorGraph = targetNode.getOwner(); - while (edge.lca == null) { - if (targetAncestorGraph == sourceAncestorGraph) { - edge.lca = targetAncestorGraph; - break; - } - if (targetAncestorGraph == this.rootGraph) { - break; - } - if (edge.lca != null) { - throw "assert failed"; - } - edge.targetInLca = targetAncestorGraph.getParent(); - targetAncestorGraph = edge.targetInLca.getOwner(); - } - if (sourceAncestorGraph == this.rootGraph) { - break; - } - if (edge.lca == null) { - edge.sourceInLca = sourceAncestorGraph.getParent(); - sourceAncestorGraph = edge.sourceInLca.getOwner(); - } - } - if (edge.lca == null) { - throw "assert failed"; - } - } - }; - LGraphManager.prototype.calcLowestCommonAncestor = function(firstNode, secondNode) { - if (firstNode == secondNode) { - return firstNode.getOwner(); - } - var firstOwnerGraph = firstNode.getOwner(); - do { - if (firstOwnerGraph == null) { - break; - } - var secondOwnerGraph = secondNode.getOwner(); - do { - if (secondOwnerGraph == null) { - break; - } - if (secondOwnerGraph == firstOwnerGraph) { - return secondOwnerGraph; - } - secondOwnerGraph = secondOwnerGraph.getParent().getOwner(); - } while (true); - firstOwnerGraph = firstOwnerGraph.getParent().getOwner(); - } while (true); - return firstOwnerGraph; - }; - LGraphManager.prototype.calcInclusionTreeDepths = function(graph, depth) { - if (graph == null && depth == null) { - graph = this.rootGraph; - depth = 1; - } - var node2; - var nodes6 = graph.getNodes(); - var s2 = nodes6.length; - for (var i2 = 0; i2 < s2; i2++) { - node2 = nodes6[i2]; - node2.inclusionTreeDepth = depth; - if (node2.child != null) { - this.calcInclusionTreeDepths(node2.child, depth + 1); - } - } - }; - LGraphManager.prototype.includesInvalidEdge = function() { - var edge; - var s2 = this.edges.length; - for (var i2 = 0; i2 < s2; i2++) { - edge = this.edges[i2]; - if (this.isOneAncestorOfOther(edge.source, edge.target)) { - return true; - } - } - return false; - }; - module3.exports = LGraphManager; - }, - /* 7 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var LayoutConstants = __webpack_require__(0); - function FDLayoutConstants() { + }, "_currentRules"), + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: /* @__PURE__ */ __name(function topState(n2) { + n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); + if (n2 >= 0) { + return this.conditionStack[n2]; + } else { + return "INITIAL"; } - __name(FDLayoutConstants, "FDLayoutConstants"); - for (var prop in LayoutConstants) { - FDLayoutConstants[prop] = LayoutConstants[prop]; + }, "topState"), + // alias for begin(condition) + pushState: /* @__PURE__ */ __name(function pushState(condition) { + this.begin(condition); + }, "pushState"), + // return the number of states currently on the stack + stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { + return this.conditionStack.length; + }, "stateStackSize"), + options: { "case-insensitive": true }, + performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + var YYSTATE = YY_START; + switch ($avoiding_name_collisions) { + case 0: + this.begin("open_directive"); + return "open_directive"; + break; + case 1: + this.begin("acc_title"); + return 31; + break; + case 2: + this.popState(); + return "acc_title_value"; + break; + case 3: + this.begin("acc_descr"); + return 33; + break; + case 4: + this.popState(); + return "acc_descr_value"; + break; + case 5: + this.begin("acc_descr_multiline"); + break; + case 6: + this.popState(); + break; + case 7: + return "acc_descr_multiline_value"; + break; + case 8: + break; + case 9: + break; + case 10: + break; + case 11: + return 10; + break; + case 12: + break; + case 13: + break; + case 14: + this.begin("href"); + break; + case 15: + this.popState(); + break; + case 16: + return 43; + break; + case 17: + this.begin("callbackname"); + break; + case 18: + this.popState(); + break; + case 19: + this.popState(); + this.begin("callbackargs"); + break; + case 20: + return 41; + break; + case 21: + this.popState(); + break; + case 22: + return 42; + break; + case 23: + this.begin("click"); + break; + case 24: + this.popState(); + break; + case 25: + return 40; + break; + case 26: + return 4; + break; + case 27: + return 22; + break; + case 28: + return 23; + break; + case 29: + return 24; + break; + case 30: + return 25; + break; + case 31: + return 26; + break; + case 32: + return 28; + break; + case 33: + return 27; + break; + case 34: + return 29; + break; + case 35: + return 12; + break; + case 36: + return 13; + break; + case 37: + return 14; + break; + case 38: + return 15; + break; + case 39: + return 16; + break; + case 40: + return 17; + break; + case 41: + return 18; + break; + case 42: + return 20; + break; + case 43: + return 21; + break; + case 44: + return "date"; + break; + case 45: + return 30; + break; + case 46: + return "accDescription"; + break; + case 47: + return 36; + break; + case 48: + return 38; + break; + case 49: + return 39; + break; + case 50: + return ":"; + break; + case 51: + return 6; + break; + case 52: + return "INVALID"; + break; + } + }, "anonymous"), + rules: [/^(?:%%\{)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:%%(?!\{)*[^\n]*)/i, /^(?:[^\}]%%*[^\n]*)/i, /^(?:%%*[^\n]*[\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:%[^\n]*)/i, /^(?:href[\s]+["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:call[\s]+)/i, /^(?:\([\s]*\))/i, /^(?:\()/i, /^(?:[^(]*)/i, /^(?:\))/i, /^(?:[^)]*)/i, /^(?:click[\s]+)/i, /^(?:[\s\n])/i, /^(?:[^\s\n]*)/i, /^(?:gantt\b)/i, /^(?:dateFormat\s[^#\n;]+)/i, /^(?:inclusiveEndDates\b)/i, /^(?:topAxis\b)/i, /^(?:axisFormat\s[^#\n;]+)/i, /^(?:tickInterval\s[^#\n;]+)/i, /^(?:includes\s[^#\n;]+)/i, /^(?:excludes\s[^#\n;]+)/i, /^(?:todayMarker\s[^\n;]+)/i, /^(?:weekday\s+monday\b)/i, /^(?:weekday\s+tuesday\b)/i, /^(?:weekday\s+wednesday\b)/i, /^(?:weekday\s+thursday\b)/i, /^(?:weekday\s+friday\b)/i, /^(?:weekday\s+saturday\b)/i, /^(?:weekday\s+sunday\b)/i, /^(?:weekend\s+friday\b)/i, /^(?:weekend\s+saturday\b)/i, /^(?:\d\d\d\d-\d\d-\d\d\b)/i, /^(?:title\s[^\n]+)/i, /^(?:accDescription\s[^#\n;]+)/i, /^(?:section\s[^\n]+)/i, /^(?:[^:\n]+)/i, /^(?::[^#\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i], + conditions: { "acc_descr_multiline": { "rules": [6, 7], "inclusive": false }, "acc_descr": { "rules": [4], "inclusive": false }, "acc_title": { "rules": [2], "inclusive": false }, "callbackargs": { "rules": [21, 22], "inclusive": false }, "callbackname": { "rules": [18, 19, 20], "inclusive": false }, "href": { "rules": [15, 16], "inclusive": false }, "click": { "rules": [24, 25], "inclusive": false }, "INITIAL": { "rules": [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 17, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52], "inclusive": true } } + }; + return lexer2; + })(); + parser24.lexer = lexer; + function Parser3() { + this.yy = {}; + } + __name(Parser3, "Parser"); + Parser3.prototype = parser24; + parser24.Parser = Parser3; + return new Parser3(); + })(); + parser5.parser = parser5; + gantt_default = parser5; + } + }); + + // ../../node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/isoWeek.js + var require_isoWeek = __commonJS({ + "../../node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/isoWeek.js"(exports2, module2) { + "use strict"; + !(function(e3, t4) { + "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = t4() : "function" == typeof define && define.amd ? define(t4) : (e3 = "undefined" != typeof globalThis ? globalThis : e3 || self).dayjs_plugin_isoWeek = t4(); + })(exports2, (function() { + "use strict"; + var e3 = "day"; + return function(t4, i2, s2) { + var a2 = /* @__PURE__ */ __name(function(t5) { + return t5.add(4 - t5.isoWeekday(), e3); + }, "a"), d3 = i2.prototype; + d3.isoWeekYear = function() { + return a2(this).year(); + }, d3.isoWeek = function(t5) { + if (!this.$utils().u(t5)) return this.add(7 * (t5 - this.isoWeek()), e3); + var i3, d4, n3, o2, r2 = a2(this), u2 = (i3 = this.isoWeekYear(), d4 = this.$u, n3 = (d4 ? s2.utc : s2)().year(i3).startOf("year"), o2 = 4 - n3.isoWeekday(), n3.isoWeekday() > 4 && (o2 += 7), n3.add(o2, e3)); + return r2.diff(u2, "week") + 1; + }, d3.isoWeekday = function(e4) { + return this.$utils().u(e4) ? this.day() || 7 : this.day(this.day() % 7 ? e4 : e4 - 7); + }; + var n2 = d3.startOf; + d3.startOf = function(e4, t5) { + var i3 = this.$utils(), s3 = !!i3.u(t5) || t5; + return "isoweek" === i3.p(e4) ? s3 ? this.date(this.date() - (this.isoWeekday() - 1)).startOf("day") : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf("day") : n2.bind(this)(e4, t5); + }; + }; + })); + } + }); + + // ../../node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/customParseFormat.js + var require_customParseFormat = __commonJS({ + "../../node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/customParseFormat.js"(exports2, module2) { + "use strict"; + !(function(e3, t4) { + "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = t4() : "function" == typeof define && define.amd ? define(t4) : (e3 = "undefined" != typeof globalThis ? globalThis : e3 || self).dayjs_plugin_customParseFormat = t4(); + })(exports2, (function() { + "use strict"; + var e3 = { 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" }, t4 = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g, n2 = /\d/, r2 = /\d\d/, i2 = /\d\d?/, o2 = /\d*[^-_:/,()\s\d]+/, s2 = {}, a2 = /* @__PURE__ */ __name(function(e4) { + return (e4 = +e4) + (e4 > 68 ? 1900 : 2e3); + }, "a"); + var f2 = /* @__PURE__ */ __name(function(e4) { + return function(t5) { + this[e4] = +t5; + }; + }, "f"), h3 = [/[+-]\d\d:?(\d\d)?|Z/, function(e4) { + (this.zone || (this.zone = {})).offset = (function(e6) { + if (!e6) return 0; + if ("Z" === e6) return 0; + var t5 = e6.match(/([+-]|\d\d)/g), n3 = 60 * t5[1] + (+t5[2] || 0); + return 0 === n3 ? 0 : "+" === t5[0] ? -n3 : n3; + })(e4); + }], u2 = /* @__PURE__ */ __name(function(e4) { + var t5 = s2[e4]; + return t5 && (t5.indexOf ? t5 : t5.s.concat(t5.f)); + }, "u"), d3 = /* @__PURE__ */ __name(function(e4, t5) { + var n3, r3 = s2.meridiem; + if (r3) { + for (var i3 = 1; i3 <= 24; i3 += 1) if (e4.indexOf(r3(i3, 0, t5)) > -1) { + n3 = i3 > 12; + break; + } + } else n3 = e4 === (t5 ? "pm" : "PM"); + return n3; + }, "d"), c3 = { A: [o2, function(e4) { + this.afternoon = d3(e4, false); + }], a: [o2, function(e4) { + this.afternoon = d3(e4, true); + }], Q: [n2, function(e4) { + this.month = 3 * (e4 - 1) + 1; + }], S: [n2, function(e4) { + this.milliseconds = 100 * +e4; + }], SS: [r2, function(e4) { + this.milliseconds = 10 * +e4; + }], SSS: [/\d{3}/, function(e4) { + this.milliseconds = +e4; + }], s: [i2, f2("seconds")], ss: [i2, f2("seconds")], m: [i2, f2("minutes")], mm: [i2, f2("minutes")], H: [i2, f2("hours")], h: [i2, f2("hours")], HH: [i2, f2("hours")], hh: [i2, f2("hours")], D: [i2, f2("day")], DD: [r2, f2("day")], Do: [o2, function(e4) { + var t5 = s2.ordinal, n3 = e4.match(/\d+/); + if (this.day = n3[0], t5) for (var r3 = 1; r3 <= 31; r3 += 1) t5(r3).replace(/\[|\]/g, "") === e4 && (this.day = r3); + }], w: [i2, f2("week")], ww: [r2, f2("week")], M: [i2, f2("month")], MM: [r2, f2("month")], MMM: [o2, function(e4) { + var t5 = u2("months"), n3 = (u2("monthsShort") || t5.map((function(e6) { + return e6.slice(0, 3); + }))).indexOf(e4) + 1; + if (n3 < 1) throw new Error(); + this.month = n3 % 12 || n3; + }], MMMM: [o2, function(e4) { + var t5 = u2("months").indexOf(e4) + 1; + if (t5 < 1) throw new Error(); + this.month = t5 % 12 || t5; + }], Y: [/[+-]?\d+/, f2("year")], YY: [r2, function(e4) { + this.year = a2(e4); + }], YYYY: [/\d{4}/, f2("year")], Z: h3, ZZ: h3 }; + function l4(n3) { + var r3, i3; + r3 = n3, i3 = s2 && s2.formats; + for (var o3 = (n3 = r3.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, (function(t5, n4, r4) { + var o4 = r4 && r4.toUpperCase(); + return n4 || i3[r4] || e3[r4] || i3[o4].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, (function(e4, t6, n5) { + return t6 || n5.slice(1); + })); + }))).match(t4), a3 = o3.length, f3 = 0; f3 < a3; f3 += 1) { + var h4 = o3[f3], u3 = c3[h4], d4 = u3 && u3[0], l5 = u3 && u3[1]; + o3[f3] = l5 ? { regex: d4, parser: l5 } : h4.replace(/^\[|\]$/g, ""); + } + return function(e4) { + for (var t5 = {}, n4 = 0, r4 = 0; n4 < a3; n4 += 1) { + var i4 = o3[n4]; + if ("string" == typeof i4) r4 += i4.length; + else { + var s3 = i4.regex, f4 = i4.parser, h5 = e4.slice(r4), u4 = s3.exec(h5)[0]; + f4.call(t5, u4), e4 = e4.replace(u4, ""); + } + } + return (function(e6) { + var t6 = e6.afternoon; + if (void 0 !== t6) { + var n5 = e6.hours; + t6 ? n5 < 12 && (e6.hours += 12) : 12 === n5 && (e6.hours = 0), delete e6.afternoon; + } + })(t5), t5; + }; + } + __name(l4, "l"); + return function(e4, t5, n3) { + n3.p.customParseFormat = true, e4 && e4.parseTwoDigitYear && (a2 = e4.parseTwoDigitYear); + var r3 = t5.prototype, i3 = r3.parse; + r3.parse = function(e6) { + var t6 = e6.date, r4 = e6.utc, o3 = e6.args; + this.$u = r4; + var a3 = o3[1]; + if ("string" == typeof a3) { + var f3 = true === o3[2], h4 = true === o3[3], u3 = f3 || h4, d4 = o3[2]; + h4 && (d4 = o3[2]), s2 = this.$locale(), !f3 && d4 && (s2 = n3.Ls[d4]), this.$d = (function(e7, t7, n4, r5) { + try { + if (["x", "X"].indexOf(t7) > -1) return new Date(("X" === t7 ? 1e3 : 1) * e7); + var i4 = l4(t7)(e7), o4 = i4.year, s3 = i4.month, a4 = i4.day, f4 = i4.hours, h5 = i4.minutes, u4 = i4.seconds, d5 = i4.milliseconds, c5 = i4.zone, m4 = i4.week, M4 = /* @__PURE__ */ new Date(), Y3 = a4 || (o4 || s3 ? 1 : M4.getDate()), p3 = o4 || M4.getFullYear(), v3 = 0; + o4 && !s3 || (v3 = s3 > 0 ? s3 - 1 : M4.getMonth()); + var D4, w4 = f4 || 0, g2 = h5 || 0, y6 = u4 || 0, L3 = d5 || 0; + return c5 ? new Date(Date.UTC(p3, v3, Y3, w4, g2, y6, L3 + 60 * c5.offset * 1e3)) : n4 ? new Date(Date.UTC(p3, v3, Y3, w4, g2, y6, L3)) : (D4 = new Date(p3, v3, Y3, w4, g2, y6, L3), m4 && (D4 = r5(D4).week(m4).toDate()), D4); + } catch (e8) { + return /* @__PURE__ */ new Date(""); + } + })(t6, a3, r4, n3), this.init(), d4 && true !== d4 && (this.$L = this.locale(d4).$L), u3 && t6 != this.format(a3) && (this.$d = /* @__PURE__ */ new Date("")), s2 = {}; + } else if (a3 instanceof Array) for (var c4 = a3.length, m3 = 1; m3 <= c4; m3 += 1) { + o3[1] = a3[m3 - 1]; + var M3 = n3.apply(this, o3); + if (M3.isValid()) { + this.$d = M3.$d, this.$L = M3.$L, this.init(); + break; + } + m3 === c4 && (this.$d = /* @__PURE__ */ new Date("")); + } + else i3.call(this, e6); + }; + }; + })); + } + }); + + // ../../node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/advancedFormat.js + var require_advancedFormat = __commonJS({ + "../../node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/advancedFormat.js"(exports2, module2) { + "use strict"; + !(function(e3, t4) { + "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = t4() : "function" == typeof define && define.amd ? define(t4) : (e3 = "undefined" != typeof globalThis ? globalThis : e3 || self).dayjs_plugin_advancedFormat = t4(); + })(exports2, (function() { + "use strict"; + return function(e3, t4) { + var r2 = t4.prototype, n2 = r2.format; + r2.format = function(e4) { + var t5 = this, r3 = this.$locale(); + if (!this.isValid()) return n2.bind(this)(e4); + var s2 = this.$utils(), a2 = (e4 || "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(e6) { + switch (e6) { + case "Q": + return Math.ceil((t5.$M + 1) / 3); + case "Do": + return r3.ordinal(t5.$D); + case "gggg": + return t5.weekYear(); + case "GGGG": + return t5.isoWeekYear(); + case "wo": + return r3.ordinal(t5.week(), "W"); + case "w": + case "ww": + return s2.s(t5.week(), "w" === e6 ? 1 : 2, "0"); + case "W": + case "WW": + return s2.s(t5.isoWeek(), "W" === e6 ? 1 : 2, "0"); + case "k": + case "kk": + return s2.s(String(0 === t5.$H ? 24 : t5.$H), "k" === e6 ? 1 : 2, "0"); + case "X": + return Math.floor(t5.$d.getTime() / 1e3); + case "x": + return t5.$d.getTime(); + case "z": + return "[" + t5.offsetName() + "]"; + case "zzz": + return "[" + t5.offsetName("long") + "]"; + default: + return e6; + } + })); + return n2.bind(this)(a2); + }; + }; + })); + } + }); + + // src/diagrams/gantt/ganttDb.js + function getTaskTags(data5, task, tags2) { + let matchFound = true; + while (matchFound) { + matchFound = false; + tags2.forEach(function(t4) { + const pattern = "^\\s*" + t4 + "\\s*$"; + const regex2 = new RegExp(pattern); + if (data5[0].match(regex2)) { + task[t4] = true; + data5.shift(1); + matchFound = true; + } + }); + } + } + var import_sanitize_url4, import_dayjs2, import_isoWeek, import_customParseFormat, import_advancedFormat, WEEKEND_START_DAY, dateFormat, axisFormat, tickInterval, todayMarker, includes2, excludes, links, sections, tasks, currentSection, displayMode, tags, funs, inclusiveEndDates, topAxis, weekday, weekend, lastOrder, clear9, setAxisFormat, getAxisFormat, setTickInterval, getTickInterval, setTodayMarker, getTodayMarker, setDateFormat, enableInclusiveEndDates, endDatesAreInclusive, enableTopAxis, topAxisEnabled, setDisplayMode, getDisplayMode, getDateFormat, setIncludes, getIncludes, setExcludes, getExcludes, getLinks, addSection, getSections, getTasks, isInvalidDate, setWeekday, getWeekday, setWeekend, checkTaskDates, fixTaskDates, getStartDate, parseDuration, getEndDate, taskCnt, parseId, compileData, parseData, lastTask, lastTaskID, rawTasks, taskDb, addTask, findTaskById, addTaskOrg, compileTasks, setLink, setClass, setClickFun, pushFun, setClickEvent, bindFunctions, ganttDb_default; + var init_ganttDb = __esm({ + "src/diagrams/gantt/ganttDb.js"() { + "use strict"; + import_sanitize_url4 = __toESM(require_dist(), 1); + import_dayjs2 = __toESM(require_dayjs_min(), 1); + import_isoWeek = __toESM(require_isoWeek(), 1); + import_customParseFormat = __toESM(require_customParseFormat(), 1); + import_advancedFormat = __toESM(require_advancedFormat(), 1); + init_logger(); + init_diagramAPI(); + init_utils2(); + init_commonDb(); + import_dayjs2.default.extend(import_isoWeek.default); + import_dayjs2.default.extend(import_customParseFormat.default); + import_dayjs2.default.extend(import_advancedFormat.default); + WEEKEND_START_DAY = { friday: 5, saturday: 6 }; + dateFormat = ""; + axisFormat = ""; + tickInterval = void 0; + todayMarker = ""; + includes2 = []; + excludes = []; + links = /* @__PURE__ */ new Map(); + sections = []; + tasks = []; + currentSection = ""; + displayMode = ""; + tags = ["active", "done", "crit", "milestone", "vert"]; + funs = []; + inclusiveEndDates = false; + topAxis = false; + weekday = "sunday"; + weekend = "saturday"; + lastOrder = 0; + clear9 = /* @__PURE__ */ __name(function() { + sections = []; + tasks = []; + currentSection = ""; + funs = []; + taskCnt = 0; + lastTask = void 0; + lastTaskID = void 0; + rawTasks = []; + dateFormat = ""; + axisFormat = ""; + displayMode = ""; + tickInterval = void 0; + todayMarker = ""; + includes2 = []; + excludes = []; + inclusiveEndDates = false; + topAxis = false; + lastOrder = 0; + links = /* @__PURE__ */ new Map(); + clear(); + weekday = "sunday"; + weekend = "saturday"; + }, "clear"); + setAxisFormat = /* @__PURE__ */ __name(function(txt) { + axisFormat = txt; + }, "setAxisFormat"); + getAxisFormat = /* @__PURE__ */ __name(function() { + return axisFormat; + }, "getAxisFormat"); + setTickInterval = /* @__PURE__ */ __name(function(txt) { + tickInterval = txt; + }, "setTickInterval"); + getTickInterval = /* @__PURE__ */ __name(function() { + return tickInterval; + }, "getTickInterval"); + setTodayMarker = /* @__PURE__ */ __name(function(txt) { + todayMarker = txt; + }, "setTodayMarker"); + getTodayMarker = /* @__PURE__ */ __name(function() { + return todayMarker; + }, "getTodayMarker"); + setDateFormat = /* @__PURE__ */ __name(function(txt) { + dateFormat = txt; + }, "setDateFormat"); + enableInclusiveEndDates = /* @__PURE__ */ __name(function() { + inclusiveEndDates = true; + }, "enableInclusiveEndDates"); + endDatesAreInclusive = /* @__PURE__ */ __name(function() { + return inclusiveEndDates; + }, "endDatesAreInclusive"); + enableTopAxis = /* @__PURE__ */ __name(function() { + topAxis = true; + }, "enableTopAxis"); + topAxisEnabled = /* @__PURE__ */ __name(function() { + return topAxis; + }, "topAxisEnabled"); + setDisplayMode = /* @__PURE__ */ __name(function(txt) { + displayMode = txt; + }, "setDisplayMode"); + getDisplayMode = /* @__PURE__ */ __name(function() { + return displayMode; + }, "getDisplayMode"); + getDateFormat = /* @__PURE__ */ __name(function() { + return dateFormat; + }, "getDateFormat"); + setIncludes = /* @__PURE__ */ __name(function(txt) { + includes2 = txt.toLowerCase().split(/[\s,]+/); + }, "setIncludes"); + getIncludes = /* @__PURE__ */ __name(function() { + return includes2; + }, "getIncludes"); + setExcludes = /* @__PURE__ */ __name(function(txt) { + excludes = txt.toLowerCase().split(/[\s,]+/); + }, "setExcludes"); + getExcludes = /* @__PURE__ */ __name(function() { + return excludes; + }, "getExcludes"); + getLinks = /* @__PURE__ */ __name(function() { + return links; + }, "getLinks"); + addSection = /* @__PURE__ */ __name(function(txt) { + currentSection = txt; + sections.push(txt); + }, "addSection"); + getSections = /* @__PURE__ */ __name(function() { + return sections; + }, "getSections"); + getTasks = /* @__PURE__ */ __name(function() { + let allItemsProcessed = compileTasks(); + const maxDepth = 10; + let iterationCount = 0; + while (!allItemsProcessed && iterationCount < maxDepth) { + allItemsProcessed = compileTasks(); + iterationCount++; + } + tasks = rawTasks; + return tasks; + }, "getTasks"); + isInvalidDate = /* @__PURE__ */ __name(function(date2, dateFormat2, excludes2, includes3) { + const formattedDate = date2.format(dateFormat2.trim()); + const dateOnly = date2.format("YYYY-MM-DD"); + if (includes3.includes(formattedDate) || includes3.includes(dateOnly)) { + return false; + } + if (excludes2.includes("weekends") && (date2.isoWeekday() === WEEKEND_START_DAY[weekend] || date2.isoWeekday() === WEEKEND_START_DAY[weekend] + 1)) { + return true; + } + if (excludes2.includes(date2.format("dddd").toLowerCase())) { + return true; + } + return excludes2.includes(formattedDate) || excludes2.includes(dateOnly); + }, "isInvalidDate"); + setWeekday = /* @__PURE__ */ __name(function(txt) { + weekday = txt; + }, "setWeekday"); + getWeekday = /* @__PURE__ */ __name(function() { + return weekday; + }, "getWeekday"); + setWeekend = /* @__PURE__ */ __name(function(startDay) { + weekend = startDay; + }, "setWeekend"); + checkTaskDates = /* @__PURE__ */ __name(function(task, dateFormat2, excludes2, includes3) { + if (!excludes2.length || task.manualEndTime) { + return; + } + let startTime; + if (task.startTime instanceof Date) { + startTime = (0, import_dayjs2.default)(task.startTime); + } else { + startTime = (0, import_dayjs2.default)(task.startTime, dateFormat2, true); + } + startTime = startTime.add(1, "d"); + let originalEndTime; + if (task.endTime instanceof Date) { + originalEndTime = (0, import_dayjs2.default)(task.endTime); + } else { + originalEndTime = (0, import_dayjs2.default)(task.endTime, dateFormat2, true); + } + const [fixedEndTime, renderEndTime] = fixTaskDates( + startTime, + originalEndTime, + dateFormat2, + excludes2, + includes3 + ); + task.endTime = fixedEndTime.toDate(); + task.renderEndTime = renderEndTime; + }, "checkTaskDates"); + fixTaskDates = /* @__PURE__ */ __name(function(startTime, endTime, dateFormat2, excludes2, includes3) { + let invalid = false; + let renderEndTime = null; + while (startTime <= endTime) { + if (!invalid) { + renderEndTime = endTime.toDate(); + } + invalid = isInvalidDate(startTime, dateFormat2, excludes2, includes3); + if (invalid) { + endTime = endTime.add(1, "d"); + } + startTime = startTime.add(1, "d"); + } + return [endTime, renderEndTime]; + }, "fixTaskDates"); + getStartDate = /* @__PURE__ */ __name(function(prevTime, dateFormat2, str2) { + str2 = str2.trim(); + if ((dateFormat2.trim() === "x" || dateFormat2.trim() === "X") && /^\d+$/.test(str2)) { + return new Date(Number(str2)); + } + const afterRePattern = /^after\s+(?[\d\w- ]+)/; + const afterStatement = afterRePattern.exec(str2); + if (afterStatement !== null) { + let latestTask = null; + for (const id30 of afterStatement.groups.ids.split(" ")) { + let task = findTaskById(id30); + if (task !== void 0 && (!latestTask || task.endTime > latestTask.endTime)) { + latestTask = task; + } + } + if (latestTask) { + return latestTask.endTime; + } + const today = /* @__PURE__ */ new Date(); + today.setHours(0, 0, 0, 0); + return today; + } + let mDate = (0, import_dayjs2.default)(str2, dateFormat2.trim(), true); + if (mDate.isValid()) { + return mDate.toDate(); + } else { + log.debug("Invalid date:" + str2); + log.debug("With date format:" + dateFormat2.trim()); + const d3 = new Date(str2); + if (d3 === void 0 || isNaN(d3.getTime()) || // WebKit browsers can mis-parse invalid dates to be ridiculously + // huge numbers, e.g. new Date('202304') gets parsed as January 1, 202304. + // This can cause virtually infinite loops while rendering, so for the + // purposes of Gantt charts we'll just treat any date beyond 10,000 AD/BC as + // invalid. + d3.getFullYear() < -1e4 || d3.getFullYear() > 1e4) { + throw new Error("Invalid date:" + str2); + } + return d3; + } + }, "getStartDate"); + parseDuration = /* @__PURE__ */ __name(function(str2) { + const statement = /^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(str2.trim()); + if (statement !== null) { + return [Number.parseFloat(statement[1]), statement[2]]; + } + return [NaN, "ms"]; + }, "parseDuration"); + getEndDate = /* @__PURE__ */ __name(function(prevTime, dateFormat2, str2, inclusive = false) { + str2 = str2.trim(); + const untilRePattern = /^until\s+(?[\d\w- ]+)/; + const untilStatement = untilRePattern.exec(str2); + if (untilStatement !== null) { + let earliestTask = null; + for (const id30 of untilStatement.groups.ids.split(" ")) { + let task = findTaskById(id30); + if (task !== void 0 && (!earliestTask || task.startTime < earliestTask.startTime)) { + earliestTask = task; + } + } + if (earliestTask) { + return earliestTask.startTime; + } + const today = /* @__PURE__ */ new Date(); + today.setHours(0, 0, 0, 0); + return today; + } + let parsedDate = (0, import_dayjs2.default)(str2, dateFormat2.trim(), true); + if (parsedDate.isValid()) { + if (inclusive) { + parsedDate = parsedDate.add(1, "d"); + } + return parsedDate.toDate(); + } + let endTime = (0, import_dayjs2.default)(prevTime); + const [durationValue, durationUnit] = parseDuration(str2); + if (!Number.isNaN(durationValue)) { + const newEndTime = endTime.add(durationValue, durationUnit); + if (newEndTime.isValid()) { + endTime = newEndTime; + } + } + return endTime.toDate(); + }, "getEndDate"); + taskCnt = 0; + parseId = /* @__PURE__ */ __name(function(idStr) { + if (idStr === void 0) { + taskCnt = taskCnt + 1; + return "task" + taskCnt; + } + return idStr; + }, "parseId"); + compileData = /* @__PURE__ */ __name(function(prevTask, dataStr) { + let ds; + if (dataStr.substr(0, 1) === ":") { + ds = dataStr.substr(1, dataStr.length); + } else { + ds = dataStr; + } + const data5 = ds.split(","); + const task = {}; + getTaskTags(data5, task, tags); + for (let i2 = 0; i2 < data5.length; i2++) { + data5[i2] = data5[i2].trim(); + } + let endTimeData = ""; + switch (data5.length) { + case 1: + task.id = parseId(); + task.startTime = prevTask.endTime; + endTimeData = data5[0]; + break; + case 2: + task.id = parseId(); + task.startTime = getStartDate(void 0, dateFormat, data5[0]); + endTimeData = data5[1]; + break; + case 3: + task.id = parseId(data5[0]); + task.startTime = getStartDate(void 0, dateFormat, data5[1]); + endTimeData = data5[2]; + break; + default: + } + if (endTimeData) { + task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates); + task.manualEndTime = (0, import_dayjs2.default)(endTimeData, "YYYY-MM-DD", true).isValid(); + checkTaskDates(task, dateFormat, excludes, includes2); + } + return task; + }, "compileData"); + parseData = /* @__PURE__ */ __name(function(prevTaskId, dataStr) { + let ds; + if (dataStr.substr(0, 1) === ":") { + ds = dataStr.substr(1, dataStr.length); + } else { + ds = dataStr; + } + const data5 = ds.split(","); + const task = {}; + getTaskTags(data5, task, tags); + for (let i2 = 0; i2 < data5.length; i2++) { + data5[i2] = data5[i2].trim(); + } + switch (data5.length) { + case 1: + task.id = parseId(); + task.startTime = { + type: "prevTaskEnd", + id: prevTaskId + }; + task.endTime = { + data: data5[0] + }; + break; + case 2: + task.id = parseId(); + task.startTime = { + type: "getStartDate", + startData: data5[0] + }; + task.endTime = { + data: data5[1] + }; + break; + case 3: + task.id = parseId(data5[0]); + task.startTime = { + type: "getStartDate", + startData: data5[1] + }; + task.endTime = { + data: data5[2] + }; + break; + default: + } + return task; + }, "parseData"); + rawTasks = []; + taskDb = {}; + addTask = /* @__PURE__ */ __name(function(descr, data5) { + const rawTask = { + section: currentSection, + type: currentSection, + processed: false, + manualEndTime: false, + renderEndTime: null, + raw: { data: data5 }, + task: descr, + classes: [] + }; + const taskInfo = parseData(lastTaskID, data5); + rawTask.raw.startTime = taskInfo.startTime; + rawTask.raw.endTime = taskInfo.endTime; + rawTask.id = taskInfo.id; + rawTask.prevTaskId = lastTaskID; + rawTask.active = taskInfo.active; + rawTask.done = taskInfo.done; + rawTask.crit = taskInfo.crit; + rawTask.milestone = taskInfo.milestone; + rawTask.vert = taskInfo.vert; + rawTask.order = lastOrder; + lastOrder++; + const pos = rawTasks.push(rawTask); + lastTaskID = rawTask.id; + taskDb[rawTask.id] = pos - 1; + }, "addTask"); + findTaskById = /* @__PURE__ */ __name(function(id30) { + const pos = taskDb[id30]; + return rawTasks[pos]; + }, "findTaskById"); + addTaskOrg = /* @__PURE__ */ __name(function(descr, data5) { + const newTask = { + section: currentSection, + type: currentSection, + description: descr, + task: descr, + classes: [] + }; + const taskInfo = compileData(lastTask, data5); + newTask.startTime = taskInfo.startTime; + newTask.endTime = taskInfo.endTime; + newTask.id = taskInfo.id; + newTask.active = taskInfo.active; + newTask.done = taskInfo.done; + newTask.crit = taskInfo.crit; + newTask.milestone = taskInfo.milestone; + newTask.vert = taskInfo.vert; + lastTask = newTask; + tasks.push(newTask); + }, "addTaskOrg"); + compileTasks = /* @__PURE__ */ __name(function() { + const compileTask = /* @__PURE__ */ __name(function(pos) { + const task = rawTasks[pos]; + let startTime = ""; + switch (rawTasks[pos].raw.startTime.type) { + case "prevTaskEnd": { + const prevTask = findTaskById(task.prevTaskId); + task.startTime = prevTask.endTime; + break; + } + case "getStartDate": + startTime = getStartDate(void 0, dateFormat, rawTasks[pos].raw.startTime.startData); + if (startTime) { + rawTasks[pos].startTime = startTime; + } + break; + } + if (rawTasks[pos].startTime) { + rawTasks[pos].endTime = getEndDate( + rawTasks[pos].startTime, + dateFormat, + rawTasks[pos].raw.endTime.data, + inclusiveEndDates + ); + if (rawTasks[pos].endTime) { + rawTasks[pos].processed = true; + rawTasks[pos].manualEndTime = (0, import_dayjs2.default)( + rawTasks[pos].raw.endTime.data, + "YYYY-MM-DD", + true + ).isValid(); + checkTaskDates(rawTasks[pos], dateFormat, excludes, includes2); + } + } + return rawTasks[pos].processed; + }, "compileTask"); + let allProcessed = true; + for (const [i2, rawTask] of rawTasks.entries()) { + compileTask(i2); + allProcessed = allProcessed && rawTask.processed; + } + return allProcessed; + }, "compileTasks"); + setLink = /* @__PURE__ */ __name(function(ids, _linkStr) { + let linkStr = _linkStr; + if (getConfig2().securityLevel !== "loose") { + linkStr = (0, import_sanitize_url4.sanitizeUrl)(_linkStr); + } + ids.split(",").forEach(function(id30) { + let rawTask = findTaskById(id30); + if (rawTask !== void 0) { + pushFun(id30, () => { + window.open(linkStr, "_self"); + }); + links.set(id30, linkStr); + } + }); + setClass(ids, "clickable"); + }, "setLink"); + setClass = /* @__PURE__ */ __name(function(ids, className) { + ids.split(",").forEach(function(id30) { + let rawTask = findTaskById(id30); + if (rawTask !== void 0) { + rawTask.classes.push(className); + } + }); + }, "setClass"); + setClickFun = /* @__PURE__ */ __name(function(id30, functionName, functionArgs) { + if (getConfig2().securityLevel !== "loose") { + return; + } + if (functionName === void 0) { + return; + } + let argList = []; + if (typeof functionArgs === "string") { + argList = functionArgs.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/); + for (let i2 = 0; i2 < argList.length; i2++) { + let item = argList[i2].trim(); + if (item.startsWith('"') && item.endsWith('"')) { + item = item.substr(1, item.length - 2); + } + argList[i2] = item; + } + } + if (argList.length === 0) { + argList.push(id30); + } + let rawTask = findTaskById(id30); + if (rawTask !== void 0) { + pushFun(id30, () => { + utils_default2.runFunc(functionName, ...argList); + }); + } + }, "setClickFun"); + pushFun = /* @__PURE__ */ __name(function(id30, callbackFunction) { + funs.push( + function() { + const elem = document.querySelector(`[id="${id30}"]`); + if (elem !== null) { + elem.addEventListener("click", function() { + callbackFunction(); + }); + } + }, + function() { + const elem = document.querySelector(`[id="${id30}-text"]`); + if (elem !== null) { + elem.addEventListener("click", function() { + callbackFunction(); + }); + } + } + ); + }, "pushFun"); + setClickEvent = /* @__PURE__ */ __name(function(ids, functionName, functionArgs) { + ids.split(",").forEach(function(id30) { + setClickFun(id30, functionName, functionArgs); + }); + setClass(ids, "clickable"); + }, "setClickEvent"); + bindFunctions = /* @__PURE__ */ __name(function(element3) { + funs.forEach(function(fun) { + fun(element3); + }); + }, "bindFunctions"); + ganttDb_default = { + getConfig: /* @__PURE__ */ __name(() => getConfig2().gantt, "getConfig"), + clear: clear9, + setDateFormat, + getDateFormat, + enableInclusiveEndDates, + endDatesAreInclusive, + enableTopAxis, + topAxisEnabled, + setAxisFormat, + getAxisFormat, + setTickInterval, + getTickInterval, + setTodayMarker, + getTodayMarker, + setAccTitle, + getAccTitle, + setDiagramTitle, + getDiagramTitle, + setDisplayMode, + getDisplayMode, + setAccDescription, + getAccDescription, + addSection, + getSections, + getTasks, + addTask, + findTaskById, + addTaskOrg, + setIncludes, + getIncludes, + setExcludes, + getExcludes, + setClickEvent, + setLink, + getLinks, + bindFunctions, + parseDuration, + isInvalidDate, + setWeekday, + getWeekday, + setWeekend + }; + __name(getTaskTags, "getTaskTags"); + } + }); + + // src/diagrams/gantt/ganttRenderer.js + var import_dayjs3, setConf2, mapWeekdayToTimeFunction, getMaxIntersections, w3, draw5, ganttRenderer_default; + var init_ganttRenderer = __esm({ + "src/diagrams/gantt/ganttRenderer.js"() { + "use strict"; + import_dayjs3 = __toESM(require_dayjs_min(), 1); + init_logger(); + init_src32(); + init_common(); + init_diagramAPI(); + init_setupGraphViewbox(); + setConf2 = /* @__PURE__ */ __name(function() { + log.debug("Something is calling, setConf, remove the call"); + }, "setConf"); + mapWeekdayToTimeFunction = { + monday: timeMonday, + tuesday: timeTuesday, + wednesday: timeWednesday, + thursday: timeThursday, + friday: timeFriday, + saturday: timeSaturday, + sunday: timeSunday + }; + getMaxIntersections = /* @__PURE__ */ __name((tasks4, orderOffset) => { + let timeline = [...tasks4].map(() => -Infinity); + let sorted = [...tasks4].sort((a2, b3) => a2.startTime - b3.startTime || a2.order - b3.order); + let maxIntersections = 0; + for (const element3 of sorted) { + for (let j3 = 0; j3 < timeline.length; j3++) { + if (element3.startTime >= timeline[j3]) { + timeline[j3] = element3.endTime; + element3.order = j3 + orderOffset; + if (j3 > maxIntersections) { + maxIntersections = j3; + } + break; + } + } + } + return maxIntersections; + }, "getMaxIntersections"); + draw5 = /* @__PURE__ */ __name(function(text4, id30, version3, diagObj) { + const conf5 = getConfig2().gantt; + const securityLevel = getConfig2().securityLevel; + let sandboxElement; + if (securityLevel === "sandbox") { + sandboxElement = select_default2("#i" + id30); + } + const root3 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); + const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document; + const elem = doc.getElementById(id30); + w3 = elem.parentElement.offsetWidth; + if (w3 === void 0) { + w3 = 1200; + } + if (conf5.useWidth !== void 0) { + w3 = conf5.useWidth; + } + const taskArray = diagObj.db.getTasks(); + let categories = []; + for (const element3 of taskArray) { + categories.push(element3.type); + } + categories = checkUnique(categories); + const categoryHeights = {}; + let h3 = 2 * conf5.topPadding; + if (diagObj.db.getDisplayMode() === "compact" || conf5.displayMode === "compact") { + const categoryElements = {}; + for (const element3 of taskArray) { + if (categoryElements[element3.section] === void 0) { + categoryElements[element3.section] = [element3]; + } else { + categoryElements[element3.section].push(element3); + } + } + let intersections = 0; + for (const category of Object.keys(categoryElements)) { + const categoryHeight = getMaxIntersections(categoryElements[category], intersections) + 1; + intersections += categoryHeight; + h3 += categoryHeight * (conf5.barHeight + conf5.barGap); + categoryHeights[category] = categoryHeight; + } + } else { + h3 += taskArray.length * (conf5.barHeight + conf5.barGap); + for (const category of categories) { + categoryHeights[category] = taskArray.filter((task) => task.type === category).length; + } + } + elem.setAttribute("viewBox", "0 0 " + w3 + " " + h3); + const svg2 = root3.select(`[id="${id30}"]`); + const timeScale = time().domain([ + min(taskArray, function(d3) { + return d3.startTime; + }), + max(taskArray, function(d3) { + return d3.endTime; + }) + ]).rangeRound([0, w3 - conf5.leftPadding - conf5.rightPadding]); + function taskCompare(a2, b3) { + const taskA = a2.startTime; + const taskB = b3.startTime; + let result = 0; + if (taskA > taskB) { + result = 1; + } else if (taskA < taskB) { + result = -1; + } + return result; + } + __name(taskCompare, "taskCompare"); + taskArray.sort(taskCompare); + makeGantt(taskArray, w3, h3); + configureSvgSize(svg2, h3, w3, conf5.useMaxWidth); + svg2.append("text").text(diagObj.db.getDiagramTitle()).attr("x", w3 / 2).attr("y", conf5.titleTopMargin).attr("class", "titleText"); + function makeGantt(tasks4, pageWidth, pageHeight) { + const barHeight = conf5.barHeight; + const gap = barHeight + conf5.barGap; + const topPadding = conf5.topPadding; + const leftPadding = conf5.leftPadding; + const colorScale = linear2().domain([0, categories.length]).range(["#00B9FA", "#F95002"]).interpolate(hcl_default); + drawExcludeDays( + gap, + topPadding, + leftPadding, + pageWidth, + pageHeight, + tasks4, + diagObj.db.getExcludes(), + diagObj.db.getIncludes() + ); + makeGrid(leftPadding, topPadding, pageWidth, pageHeight); + drawRects(tasks4, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight); + vertLabels(gap, topPadding, leftPadding, barHeight, colorScale); + drawToday(leftPadding, topPadding, pageWidth, pageHeight); + } + __name(makeGantt, "makeGantt"); + function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w4) { + theArray.sort((a2, b3) => a2.vert === b3.vert ? 0 : a2.vert ? 1 : -1); + const uniqueTaskOrderIds = [...new Set(theArray.map((item) => item.order))]; + const uniqueTasks = uniqueTaskOrderIds.map((id31) => theArray.find((item) => item.order === id31)); + svg2.append("g").selectAll("rect").data(uniqueTasks).enter().append("rect").attr("x", 0).attr("y", function(d3, i2) { + i2 = d3.order; + return i2 * theGap + theTopPad - 2; + }).attr("width", function() { + return w4 - conf5.rightPadding / 2; + }).attr("height", theGap).attr("class", function(d3) { + for (const [i2, category] of categories.entries()) { + if (d3.type === category) { + return "section section" + i2 % conf5.numberSectionStyles; + } + } + return "section section0"; + }).enter(); + const rectangles = svg2.append("g").selectAll("rect").data(theArray).enter(); + const links3 = diagObj.db.getLinks(); + rectangles.append("rect").attr("id", function(d3) { + return d3.id; + }).attr("rx", 3).attr("ry", 3).attr("x", function(d3) { + if (d3.milestone) { + return timeScale(d3.startTime) + theSidePad + 0.5 * (timeScale(d3.endTime) - timeScale(d3.startTime)) - 0.5 * theBarHeight; + } + return timeScale(d3.startTime) + theSidePad; + }).attr("y", function(d3, i2) { + i2 = d3.order; + if (d3.vert) { + return conf5.gridLineStartPadding; + } + return i2 * theGap + theTopPad; + }).attr("width", function(d3) { + if (d3.milestone) { + return theBarHeight; + } + if (d3.vert) { + return 0.08 * theBarHeight; + } + return timeScale(d3.renderEndTime || d3.endTime) - timeScale(d3.startTime); + }).attr("height", function(d3) { + if (d3.vert) { + return taskArray.length * (conf5.barHeight + conf5.barGap) + conf5.barHeight * 2; + } + return theBarHeight; + }).attr("transform-origin", function(d3, i2) { + i2 = d3.order; + return (timeScale(d3.startTime) + theSidePad + 0.5 * (timeScale(d3.endTime) - timeScale(d3.startTime))).toString() + "px " + (i2 * theGap + theTopPad + 0.5 * theBarHeight).toString() + "px"; + }).attr("class", function(d3) { + const res = "task"; + let classStr = ""; + if (d3.classes.length > 0) { + classStr = d3.classes.join(" "); + } + let secNum = 0; + for (const [i2, category] of categories.entries()) { + if (d3.type === category) { + secNum = i2 % conf5.numberSectionStyles; + } + } + let taskClass = ""; + if (d3.active) { + if (d3.crit) { + taskClass += " activeCrit"; + } else { + taskClass = " active"; + } + } else if (d3.done) { + if (d3.crit) { + taskClass = " doneCrit"; + } else { + taskClass = " done"; + } + } else { + if (d3.crit) { + taskClass += " crit"; + } + } + if (taskClass.length === 0) { + taskClass = " task"; + } + if (d3.milestone) { + taskClass = " milestone " + taskClass; + } + if (d3.vert) { + taskClass = " vert " + taskClass; + } + taskClass += secNum; + taskClass += " " + classStr; + return res + taskClass; + }); + rectangles.append("text").attr("id", function(d3) { + return d3.id + "-text"; + }).text(function(d3) { + return d3.task; + }).attr("font-size", conf5.fontSize).attr("x", function(d3) { + let startX2 = timeScale(d3.startTime); + let endX = timeScale(d3.renderEndTime || d3.endTime); + if (d3.milestone) { + startX2 += 0.5 * (timeScale(d3.endTime) - timeScale(d3.startTime)) - 0.5 * theBarHeight; + endX = startX2 + theBarHeight; + } + if (d3.vert) { + return timeScale(d3.startTime) + theSidePad; + } + const textWidth = this.getBBox().width; + if (textWidth > endX - startX2) { + if (endX + textWidth + 1.5 * conf5.leftPadding > w4) { + return startX2 + theSidePad - 5; + } else { + return endX + theSidePad + 5; + } + } else { + return (endX - startX2) / 2 + startX2 + theSidePad; + } + }).attr("y", function(d3, i2) { + if (d3.vert) { + return conf5.gridLineStartPadding + taskArray.length * (conf5.barHeight + conf5.barGap) + 60; + } + i2 = d3.order; + return i2 * theGap + conf5.barHeight / 2 + (conf5.fontSize / 2 - 2) + theTopPad; + }).attr("text-height", theBarHeight).attr("class", function(d3) { + const startX2 = timeScale(d3.startTime); + let endX = timeScale(d3.endTime); + if (d3.milestone) { + endX = startX2 + theBarHeight; + } + const textWidth = this.getBBox().width; + let classStr = ""; + if (d3.classes.length > 0) { + classStr = d3.classes.join(" "); + } + let secNum = 0; + for (const [i2, category] of categories.entries()) { + if (d3.type === category) { + secNum = i2 % conf5.numberSectionStyles; + } + } + let taskType = ""; + if (d3.active) { + if (d3.crit) { + taskType = "activeCritText" + secNum; + } else { + taskType = "activeText" + secNum; + } + } + if (d3.done) { + if (d3.crit) { + taskType = taskType + " doneCritText" + secNum; + } else { + taskType = taskType + " doneText" + secNum; + } + } else { + if (d3.crit) { + taskType = taskType + " critText" + secNum; + } + } + if (d3.milestone) { + taskType += " milestoneText"; + } + if (d3.vert) { + taskType += " vertText"; + } + if (textWidth > endX - startX2) { + if (endX + textWidth + 1.5 * conf5.leftPadding > w4) { + return classStr + " taskTextOutsideLeft taskTextOutside" + secNum + " " + taskType; + } else { + return classStr + " taskTextOutsideRight taskTextOutside" + secNum + " " + taskType + " width-" + textWidth; + } + } else { + return classStr + " taskText taskText" + secNum + " " + taskType + " width-" + textWidth; + } + }); + const securityLevel2 = getConfig2().securityLevel; + if (securityLevel2 === "sandbox") { + let sandboxElement2; + sandboxElement2 = select_default2("#i" + id30); + const doc2 = sandboxElement2.nodes()[0].contentDocument; + rectangles.filter(function(d3) { + return links3.has(d3.id); + }).each(function(o2) { + var taskRect = doc2.querySelector("#" + o2.id); + var taskText = doc2.querySelector("#" + o2.id + "-text"); + const oldParent = taskRect.parentNode; + var Link = doc2.createElement("a"); + Link.setAttribute("xlink:href", links3.get(o2.id)); + Link.setAttribute("target", "_top"); + oldParent.appendChild(Link); + Link.appendChild(taskRect); + Link.appendChild(taskText); + }); + } + } + __name(drawRects, "drawRects"); + function drawExcludeDays(theGap, theTopPad, theSidePad, w4, h4, tasks4, excludes2, includes3) { + if (excludes2.length === 0 && includes3.length === 0) { + return; + } + let minTime; + let maxTime; + for (const { startTime, endTime } of tasks4) { + if (minTime === void 0 || startTime < minTime) { + minTime = startTime; + } + if (maxTime === void 0 || endTime > maxTime) { + maxTime = endTime; + } + } + if (!minTime || !maxTime) { + return; + } + if ((0, import_dayjs3.default)(maxTime).diff((0, import_dayjs3.default)(minTime), "year") > 5) { + log.warn( + "The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days." + ); + return; + } + const dateFormat2 = diagObj.db.getDateFormat(); + const excludeRanges = []; + let range3 = null; + let d3 = (0, import_dayjs3.default)(minTime); + while (d3.valueOf() <= maxTime) { + if (diagObj.db.isInvalidDate(d3, dateFormat2, excludes2, includes3)) { + if (!range3) { + range3 = { + start: d3, + end: d3 + }; + } else { + range3.end = d3; + } + } else { + if (range3) { + excludeRanges.push(range3); + range3 = null; + } + } + d3 = d3.add(1, "d"); + } + const rectangles = svg2.append("g").selectAll("rect").data(excludeRanges).enter(); + rectangles.append("rect").attr("id", (d4) => "exclude-" + d4.start.format("YYYY-MM-DD")).attr("x", (d4) => timeScale(d4.start.startOf("day")) + theSidePad).attr("y", conf5.gridLineStartPadding).attr("width", (d4) => timeScale(d4.end.endOf("day")) - timeScale(d4.start.startOf("day"))).attr("height", h4 - theTopPad - conf5.gridLineStartPadding).attr("transform-origin", function(d4, i2) { + return (timeScale(d4.start) + theSidePad + 0.5 * (timeScale(d4.end) - timeScale(d4.start))).toString() + "px " + (i2 * theGap + 0.5 * h4).toString() + "px"; + }).attr("class", "exclude-range"); + } + __name(drawExcludeDays, "drawExcludeDays"); + function makeGrid(theSidePad, theTopPad, w4, h4) { + const dateFormat2 = diagObj.db.getDateFormat(); + const userAxisFormat = diagObj.db.getAxisFormat(); + let axisFormat2; + if (userAxisFormat) { + axisFormat2 = userAxisFormat; + } else if (dateFormat2 === "D") { + axisFormat2 = "%d"; + } else { + axisFormat2 = conf5.axisFormat ?? "%Y-%m-%d"; + } + let bottomXAxis = axisBottom(timeScale).tickSize(-h4 + theTopPad + conf5.gridLineStartPadding).tickFormat(timeFormat(axisFormat2)); + const reTickInterval = /^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/; + const resultTickInterval = reTickInterval.exec( + diagObj.db.getTickInterval() || conf5.tickInterval + ); + if (resultTickInterval !== null) { + const every3 = resultTickInterval[1]; + const interval2 = resultTickInterval[2]; + const weekday2 = diagObj.db.getWeekday() || conf5.weekday; + switch (interval2) { + case "millisecond": + bottomXAxis.ticks(millisecond.every(every3)); + break; + case "second": + bottomXAxis.ticks(second.every(every3)); + break; + case "minute": + bottomXAxis.ticks(timeMinute.every(every3)); + break; + case "hour": + bottomXAxis.ticks(timeHour.every(every3)); + break; + case "day": + bottomXAxis.ticks(timeDay.every(every3)); + break; + case "week": + bottomXAxis.ticks(mapWeekdayToTimeFunction[weekday2].every(every3)); + break; + case "month": + bottomXAxis.ticks(timeMonth.every(every3)); + break; + } + } + svg2.append("g").attr("class", "grid").attr("transform", "translate(" + theSidePad + ", " + (h4 - 50) + ")").call(bottomXAxis).selectAll("text").style("text-anchor", "middle").attr("fill", "#000").attr("stroke", "none").attr("font-size", 10).attr("dy", "1em"); + if (diagObj.db.topAxisEnabled() || conf5.topAxis) { + let topXAxis = axisTop(timeScale).tickSize(-h4 + theTopPad + conf5.gridLineStartPadding).tickFormat(timeFormat(axisFormat2)); + if (resultTickInterval !== null) { + const every3 = resultTickInterval[1]; + const interval2 = resultTickInterval[2]; + const weekday2 = diagObj.db.getWeekday() || conf5.weekday; + switch (interval2) { + case "millisecond": + topXAxis.ticks(millisecond.every(every3)); + break; + case "second": + topXAxis.ticks(second.every(every3)); + break; + case "minute": + topXAxis.ticks(timeMinute.every(every3)); + break; + case "hour": + topXAxis.ticks(timeHour.every(every3)); + break; + case "day": + topXAxis.ticks(timeDay.every(every3)); + break; + case "week": + topXAxis.ticks(mapWeekdayToTimeFunction[weekday2].every(every3)); + break; + case "month": + topXAxis.ticks(timeMonth.every(every3)); + break; + } + } + svg2.append("g").attr("class", "grid").attr("transform", "translate(" + theSidePad + ", " + theTopPad + ")").call(topXAxis).selectAll("text").style("text-anchor", "middle").attr("fill", "#000").attr("stroke", "none").attr("font-size", 10); + } + } + __name(makeGrid, "makeGrid"); + function vertLabels(theGap, theTopPad) { + let prevGap = 0; + const numOccurrences = Object.keys(categoryHeights).map((d3) => [d3, categoryHeights[d3]]); + svg2.append("g").selectAll("text").data(numOccurrences).enter().append(function(d3) { + const rows = d3[0].split(common_default.lineBreakRegex); + const dy = -(rows.length - 1) / 2; + const svgLabel = doc.createElementNS("http://www.w3.org/2000/svg", "text"); + svgLabel.setAttribute("dy", dy + "em"); + for (const [j3, row] of rows.entries()) { + const tspan = doc.createElementNS("http://www.w3.org/2000/svg", "tspan"); + tspan.setAttribute("alignment-baseline", "central"); + tspan.setAttribute("x", "10"); + if (j3 > 0) { + tspan.setAttribute("dy", "1em"); + } + tspan.textContent = row; + svgLabel.appendChild(tspan); + } + return svgLabel; + }).attr("x", 10).attr("y", function(d3, i2) { + if (i2 > 0) { + for (let j3 = 0; j3 < i2; j3++) { + prevGap += numOccurrences[i2 - 1][1]; + return d3[1] * theGap / 2 + prevGap * theGap + theTopPad; + } + } else { + return d3[1] * theGap / 2 + theTopPad; + } + }).attr("font-size", conf5.sectionFontSize).attr("class", function(d3) { + for (const [i2, category] of categories.entries()) { + if (d3[0] === category) { + return "sectionTitle sectionTitle" + i2 % conf5.numberSectionStyles; + } + } + return "sectionTitle"; + }); + } + __name(vertLabels, "vertLabels"); + function drawToday(theSidePad, theTopPad, w4, h4) { + const todayMarker2 = diagObj.db.getTodayMarker(); + if (todayMarker2 === "off") { + return; + } + const todayG = svg2.append("g").attr("class", "today"); + const today = /* @__PURE__ */ new Date(); + const todayLine = todayG.append("line"); + todayLine.attr("x1", timeScale(today) + theSidePad).attr("x2", timeScale(today) + theSidePad).attr("y1", conf5.titleTopMargin).attr("y2", h4 - conf5.titleTopMargin).attr("class", "today"); + if (todayMarker2 !== "") { + todayLine.attr("style", todayMarker2.replace(/,/g, ";")); + } + } + __name(drawToday, "drawToday"); + function checkUnique(arr) { + const hash = {}; + const result = []; + for (let i2 = 0, l4 = arr.length; i2 < l4; ++i2) { + if (!Object.prototype.hasOwnProperty.call(hash, arr[i2])) { + hash[arr[i2]] = true; + result.push(arr[i2]); + } + } + return result; + } + __name(checkUnique, "checkUnique"); + }, "draw"); + ganttRenderer_default = { + setConf: setConf2, + draw: draw5 + }; + } + }); + + // src/diagrams/gantt/styles.js + var getStyles6, styles_default6; + var init_styles6 = __esm({ + "src/diagrams/gantt/styles.js"() { + "use strict"; + getStyles6 = /* @__PURE__ */ __name((options2) => ` + .mermaid-main-font { + font-family: ${options2.fontFamily}; + } + + .exclude-range { + fill: ${options2.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${options2.sectionBkgColor}; + } + + .section2 { + fill: ${options2.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${options2.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${options2.titleColor}; + } + + .sectionTitle1 { + fill: ${options2.titleColor}; + } + + .sectionTitle2 { + fill: ${options2.titleColor}; + } + + .sectionTitle3 { + fill: ${options2.titleColor}; + } + + .sectionTitle { + text-anchor: start; + font-family: ${options2.fontFamily}; + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${options2.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + } + + .grid .tick text { + font-family: ${options2.fontFamily}; + fill: ${options2.textColor}; + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${options2.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: ${options2.fontFamily}; + } + + .taskTextOutsideRight { + fill: ${options2.taskTextDarkColor}; + text-anchor: start; + font-family: ${options2.fontFamily}; + } + + .taskTextOutsideLeft { + fill: ${options2.taskTextDarkColor}; + text-anchor: end; + } + + + /* Special case clickable */ + + .task.clickable { + cursor: pointer; + } + + .taskText.clickable { + cursor: pointer; + fill: ${options2.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${options2.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${options2.taskTextClickableColor} !important; + font-weight: bold; + } + + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${options2.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${options2.taskBkgColor}; + stroke: ${options2.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${options2.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${options2.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${options2.activeTaskBkgColor}; + stroke: ${options2.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${options2.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${options2.doneTaskBorderColor}; + fill: ${options2.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${options2.taskTextDarkColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${options2.critBorderColor}; + fill: ${options2.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${options2.critBorderColor}; + fill: ${options2.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${options2.critBorderColor}; + fill: ${options2.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${options2.taskTextDarkColor} !important; + } + + .vert { + stroke: ${options2.vertLineColor}; + } + + .vertText { + font-size: 15px; + text-anchor: middle; + fill: ${options2.vertLineColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${options2.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${options2.titleColor || options2.textColor}; + font-family: ${options2.fontFamily}; + } +`, "getStyles"); + styles_default6 = getStyles6; + } + }); + + // src/diagrams/gantt/ganttDiagram.ts + var ganttDiagram_exports = {}; + __export(ganttDiagram_exports, { + diagram: () => diagram5 + }); + var diagram5; + var init_ganttDiagram = __esm({ + "src/diagrams/gantt/ganttDiagram.ts"() { + "use strict"; + init_gantt(); + init_ganttDb(); + init_ganttRenderer(); + init_styles6(); + diagram5 = { + parser: gantt_default, + db: ganttDb_default, + renderer: ganttRenderer_default, + styles: styles_default6 + }; + } + }); + + // src/diagrams/info/infoParser.ts + var parser6; + var init_infoParser = __esm({ + "src/diagrams/info/infoParser.ts"() { + "use strict"; + init_mermaid_parser_core(); + init_logger(); + parser6 = { + parse: /* @__PURE__ */ __name(async (input) => { + const ast = await parse3("info", input); + log.debug(ast); + }, "parse") + }; + } + }); + + // package.json + var package_default; + var init_package = __esm({ + "package.json"() { + package_default = { + name: "mermaid", + version: "11.12.0", + description: "Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.", + type: "module", + module: "./dist/mermaid.core.mjs", + types: "./dist/mermaid.d.ts", + exports: { + ".": { + types: "./dist/mermaid.d.ts", + import: "./dist/mermaid.core.mjs", + default: "./dist/mermaid.core.mjs" + }, + "./*": "./*" + }, + keywords: [ + "diagram", + "markdown", + "flowchart", + "sequence diagram", + "gantt", + "class diagram", + "git graph", + "mindmap", + "packet diagram", + "c4 diagram", + "er diagram", + "pie chart", + "pie diagram", + "quadrant chart", + "requirement diagram", + "graph" + ], + scripts: { + clean: "rimraf dist", + dev: "pnpm -w dev", + "docs:code": "typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup", + "docs:build": "rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts", + "docs:verify": "pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify", + "docs:pre:vitepress": "pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts", + "docs:build:vitepress": "pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing", + "docs:dev": 'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"', + "docs:dev:docker": 'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"', + "docs:serve": "pnpm docs:build:vitepress && vitepress serve src/vitepress", + "docs:spellcheck": 'cspell "src/docs/**/*.md"', + "docs:release-version": "tsx scripts/update-release-version.mts", + "docs:verify-version": "tsx scripts/update-release-version.mts --verify", + "types:build-config": "tsx scripts/create-types-from-json-schema.mts", + "types:verify-config": "tsx scripts/create-types-from-json-schema.mts --verify", + checkCircle: "npx madge --circular ./src", + prepublishOnly: "pnpm docs:verify-version" + }, + repository: { + type: "git", + url: "https://github.com/mermaid-js/mermaid" + }, + author: "Knut Sveidqvist", + license: "MIT", + standard: { + ignore: [ + "**/parser/*.js", + "dist/**/*.js", + "cypress/**/*.js" + ], + globals: [ + "page" + ] + }, + dependencies: { + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.1", + "@mermaid-js/parser": "workspace:^", + "@types/d3": "^7.4.3", + cytoscape: "^3.29.3", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + d3: "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.11", + dayjs: "^1.11.18", + dompurify: "^3.2.5", + katex: "^0.16.22", + khroma: "^2.1.0", + "lodash-es": "^4.17.21", + marked: "^16.2.1", + roughjs: "^4.6.6", + stylis: "^4.3.6", + "ts-dedent": "^2.2.0", + uuid: "^11.1.0" + }, + devDependencies: { + "@adobe/jsonschema2md": "^8.0.5", + "@iconify/types": "^2.0.0", + "@types/cytoscape": "^3.21.9", + "@types/cytoscape-fcose": "^2.2.4", + "@types/d3-sankey": "^0.12.4", + "@types/d3-scale": "^4.0.9", + "@types/d3-scale-chromatic": "^3.1.0", + "@types/d3-selection": "^3.0.11", + "@types/d3-shape": "^3.1.7", + "@types/jsdom": "^21.1.7", + "@types/katex": "^0.16.7", + "@types/lodash-es": "^4.17.12", + "@types/micromatch": "^4.0.9", + "@types/stylis": "^4.2.7", + "@types/uuid": "^10.0.0", + ajv: "^8.17.1", + canvas: "^3.1.2", + chokidar: "3.6.0", + concurrently: "^9.1.2", + "csstree-validator": "^4.0.1", + globby: "^14.1.0", + jison: "^0.4.18", + "js-base64": "^3.7.8", + jsdom: "^26.1.0", + "json-schema-to-typescript": "^15.0.4", + micromatch: "^4.0.8", + "path-browserify": "^1.0.1", + prettier: "^3.5.3", + remark: "^15.0.1", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.1", + rimraf: "^6.0.1", + "start-server-and-test": "^2.0.13", + "type-fest": "^4.35.0", + typedoc: "^0.28.12", + "typedoc-plugin-markdown": "^4.8.1", + typescript: "~5.7.3", + "unist-util-flatmap": "^1.0.0", + "unist-util-visit": "^5.0.0", + vitepress: "^1.6.4", + "vitepress-plugin-search": "1.0.4-alpha.22" + }, + files: [ + "dist/", + "README.md" + ], + publishConfig: { + access: "public" + } + }; + } + }); + + // src/diagrams/info/infoDb.ts + var DEFAULT_INFO_DB, getVersion, db2; + var init_infoDb = __esm({ + "src/diagrams/info/infoDb.ts"() { + "use strict"; + init_package(); + DEFAULT_INFO_DB = { + version: package_default.version + (true ? "" : "-tiny") + }; + getVersion = /* @__PURE__ */ __name(() => DEFAULT_INFO_DB.version, "getVersion"); + db2 = { + getVersion + }; + } + }); + + // src/rendering-util/selectSvgElement.ts + var selectSvgElement; + var init_selectSvgElement = __esm({ + "src/rendering-util/selectSvgElement.ts"() { + "use strict"; + init_src32(); + init_diagramAPI(); + selectSvgElement = /* @__PURE__ */ __name((id30) => { + const { securityLevel } = getConfig2(); + let root3 = select_default2("body"); + if (securityLevel === "sandbox") { + const sandboxElement = select_default2(`#i${id30}`); + const doc = sandboxElement.node()?.contentDocument ?? document; + root3 = select_default2(doc.body); + } + const svg2 = root3.select(`#${id30}`); + return svg2; + }, "selectSvgElement"); + } + }); + + // src/diagrams/info/infoRenderer.ts + var draw6, renderer3; + var init_infoRenderer = __esm({ + "src/diagrams/info/infoRenderer.ts"() { + "use strict"; + init_logger(); + init_selectSvgElement(); + init_setupGraphViewbox(); + draw6 = /* @__PURE__ */ __name((text4, id30, version3) => { + log.debug("rendering info diagram\n" + text4); + const svg2 = selectSvgElement(id30); + configureSvgSize(svg2, 100, 400, true); + const group2 = svg2.append("g"); + group2.append("text").attr("x", 100).attr("y", 40).attr("class", "version").attr("font-size", 32).style("text-anchor", "middle").text(`v${version3}`); + }, "draw"); + renderer3 = { draw: draw6 }; + } + }); + + // src/diagrams/info/infoDiagram.ts + var infoDiagram_exports = {}; + __export(infoDiagram_exports, { + diagram: () => diagram6 + }); + var diagram6; + var init_infoDiagram = __esm({ + "src/diagrams/info/infoDiagram.ts"() { + "use strict"; + init_infoParser(); + init_infoDb(); + init_infoRenderer(); + diagram6 = { + parser: parser6, + db: db2, + renderer: renderer3 + }; + } + }); + + // src/diagrams/pie/pieDb.ts + var DEFAULT_PIE_CONFIG, DEFAULT_PIE_DB, sections2, showData, config2, getConfig4, clear10, addSection2, getSections2, setShowData, getShowData, db3; + var init_pieDb = __esm({ + "src/diagrams/pie/pieDb.ts"() { + "use strict"; + init_logger(); + init_commonDb(); + init_defaultConfig(); + DEFAULT_PIE_CONFIG = defaultConfig_default.pie; + DEFAULT_PIE_DB = { + sections: /* @__PURE__ */ new Map(), + showData: false, + config: DEFAULT_PIE_CONFIG + }; + sections2 = DEFAULT_PIE_DB.sections; + showData = DEFAULT_PIE_DB.showData; + config2 = structuredClone(DEFAULT_PIE_CONFIG); + getConfig4 = /* @__PURE__ */ __name(() => structuredClone(config2), "getConfig"); + clear10 = /* @__PURE__ */ __name(() => { + sections2 = /* @__PURE__ */ new Map(); + showData = DEFAULT_PIE_DB.showData; + clear(); + }, "clear"); + addSection2 = /* @__PURE__ */ __name(({ label, value: value2 }) => { + if (value2 < 0) { + throw new Error( + `"${label}" has invalid value: ${value2}. Negative values are not allowed in pie charts. All slice values must be >= 0.` + ); + } + if (!sections2.has(label)) { + sections2.set(label, value2); + log.debug(`added new section: ${label}, with value: ${value2}`); + } + }, "addSection"); + getSections2 = /* @__PURE__ */ __name(() => sections2, "getSections"); + setShowData = /* @__PURE__ */ __name((toggle) => { + showData = toggle; + }, "setShowData"); + getShowData = /* @__PURE__ */ __name(() => showData, "getShowData"); + db3 = { + getConfig: getConfig4, + clear: clear10, + setDiagramTitle, + getDiagramTitle, + setAccTitle, + getAccTitle, + setAccDescription, + getAccDescription, + addSection: addSection2, + getSections: getSections2, + setShowData, + getShowData + }; + } + }); + + // src/diagrams/pie/pieParser.ts + var populateDb, parser7; + var init_pieParser = __esm({ + "src/diagrams/pie/pieParser.ts"() { + "use strict"; + init_mermaid_parser_core(); + init_logger(); + init_populateCommonDb(); + init_pieDb(); + populateDb = /* @__PURE__ */ __name((ast, db7) => { + populateCommonDb(ast, db7); + db7.setShowData(ast.showData); + ast.sections.map(db7.addSection); + }, "populateDb"); + parser7 = { + parse: /* @__PURE__ */ __name(async (input) => { + const ast = await parse3("pie", input); + log.debug(ast); + populateDb(ast, db3); + }, "parse") + }; + } + }); + + // src/diagrams/pie/pieStyles.ts + var getStyles7, pieStyles_default; + var init_pieStyles = __esm({ + "src/diagrams/pie/pieStyles.ts"() { + "use strict"; + getStyles7 = /* @__PURE__ */ __name((options2) => ` + .pieCircle{ + stroke: ${options2.pieStrokeColor}; + stroke-width : ${options2.pieStrokeWidth}; + opacity : ${options2.pieOpacity}; + } + .pieOuterCircle{ + stroke: ${options2.pieOuterStrokeColor}; + stroke-width: ${options2.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${options2.pieTitleTextSize}; + fill: ${options2.pieTitleTextColor}; + font-family: ${options2.fontFamily}; + } + .slice { + font-family: ${options2.fontFamily}; + fill: ${options2.pieSectionTextColor}; + font-size:${options2.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${options2.pieLegendTextColor}; + font-family: ${options2.fontFamily}; + font-size: ${options2.pieLegendTextSize}; + } +`, "getStyles"); + pieStyles_default = getStyles7; + } + }); + + // src/diagrams/pie/pieRenderer.ts + var createPieArcs, draw7, renderer4; + var init_pieRenderer = __esm({ + "src/diagrams/pie/pieRenderer.ts"() { + "use strict"; + init_src32(); + init_diagramAPI(); + init_logger(); + init_selectSvgElement(); + init_setupGraphViewbox(); + init_utils2(); + createPieArcs = /* @__PURE__ */ __name((sections6) => { + const sum2 = [...sections6.values()].reduce((acc, val) => acc + val, 0); + const pieData = [...sections6.entries()].map(([label, value2]) => ({ label, value: value2 })).filter((d3) => d3.value / sum2 * 100 >= 1).sort((a2, b3) => b3.value - a2.value); + const pie2 = pie_default().value((d3) => d3.value); + return pie2(pieData); + }, "createPieArcs"); + draw7 = /* @__PURE__ */ __name((text4, id30, _version, diagObj) => { + log.debug("rendering pie chart\n" + text4); + const db7 = diagObj.db; + const globalConfig = getConfig2(); + const pieConfig = cleanAndMerge(db7.getConfig(), globalConfig.pie); + const MARGIN = 40; + const LEGEND_RECT_SIZE = 18; + const LEGEND_SPACING = 4; + const height2 = 450; + const pieWidth = height2; + const svg2 = selectSvgElement(id30); + const group2 = svg2.append("g"); + group2.attr("transform", "translate(" + pieWidth / 2 + "," + height2 / 2 + ")"); + const { themeVariables } = globalConfig; + let [outerStrokeWidth] = parseFontSize(themeVariables.pieOuterStrokeWidth); + outerStrokeWidth ??= 2; + const textPosition = pieConfig.textPosition; + const radius2 = Math.min(pieWidth, height2) / 2 - MARGIN; + const arcGenerator = arc_default().innerRadius(0).outerRadius(radius2); + const labelArcGenerator = arc_default().innerRadius(radius2 * textPosition).outerRadius(radius2 * textPosition); + group2.append("circle").attr("cx", 0).attr("cy", 0).attr("r", radius2 + outerStrokeWidth / 2).attr("class", "pieOuterCircle"); + const sections6 = db7.getSections(); + const arcs = createPieArcs(sections6); + const myGeneratedColors = [ + themeVariables.pie1, + themeVariables.pie2, + themeVariables.pie3, + themeVariables.pie4, + themeVariables.pie5, + themeVariables.pie6, + themeVariables.pie7, + themeVariables.pie8, + themeVariables.pie9, + themeVariables.pie10, + themeVariables.pie11, + themeVariables.pie12 + ]; + let sum2 = 0; + sections6.forEach((section) => { + sum2 += section; + }); + const filteredArcs = arcs.filter((datum2) => (datum2.data.value / sum2 * 100).toFixed(0) !== "0"); + const color2 = ordinal(myGeneratedColors); + group2.selectAll("mySlices").data(filteredArcs).enter().append("path").attr("d", arcGenerator).attr("fill", (datum2) => { + return color2(datum2.data.label); + }).attr("class", "pieCircle"); + group2.selectAll("mySlices").data(filteredArcs).enter().append("text").text((datum2) => { + return (datum2.data.value / sum2 * 100).toFixed(0) + "%"; + }).attr("transform", (datum2) => { + return "translate(" + labelArcGenerator.centroid(datum2) + ")"; + }).style("text-anchor", "middle").attr("class", "slice"); + group2.append("text").text(db7.getDiagramTitle()).attr("x", 0).attr("y", -(height2 - 50) / 2).attr("class", "pieTitleText"); + const allSectionData = [...sections6.entries()].map(([label, value2]) => ({ + label, + value: value2 + })); + const legend = group2.selectAll(".legend").data(allSectionData).enter().append("g").attr("class", "legend").attr("transform", (_datum, index) => { + const height3 = LEGEND_RECT_SIZE + LEGEND_SPACING; + const offset = height3 * allSectionData.length / 2; + const horizontal = 12 * LEGEND_RECT_SIZE; + const vertical = index * height3 - offset; + return "translate(" + horizontal + "," + vertical + ")"; + }); + legend.append("rect").attr("width", LEGEND_RECT_SIZE).attr("height", LEGEND_RECT_SIZE).style("fill", (d3) => color2(d3.label)).style("stroke", (d3) => color2(d3.label)); + legend.append("text").attr("x", LEGEND_RECT_SIZE + LEGEND_SPACING).attr("y", LEGEND_RECT_SIZE - LEGEND_SPACING).text((d3) => { + if (db7.getShowData()) { + return `${d3.label} [${d3.value}]`; + } + return d3.label; + }); + const longestTextWidth = Math.max( + ...legend.selectAll("text").nodes().map((node2) => node2?.getBoundingClientRect().width ?? 0) + ); + const totalWidth = pieWidth + MARGIN + LEGEND_RECT_SIZE + LEGEND_SPACING + longestTextWidth; + svg2.attr("viewBox", `0 0 ${totalWidth} ${height2}`); + configureSvgSize(svg2, height2, totalWidth, pieConfig.useMaxWidth); + }, "draw"); + renderer4 = { draw: draw7 }; + } + }); + + // src/diagrams/pie/pieDiagram.ts + var pieDiagram_exports = {}; + __export(pieDiagram_exports, { + diagram: () => diagram7 + }); + var diagram7; + var init_pieDiagram = __esm({ + "src/diagrams/pie/pieDiagram.ts"() { + "use strict"; + init_pieParser(); + init_pieDb(); + init_pieStyles(); + init_pieRenderer(); + diagram7 = { + parser: parser7, + db: db3, + renderer: renderer4, + styles: pieStyles_default + }; + } + }); + + // src/diagrams/quadrant-chart/parser/quadrant.jison + var parser8, quadrant_default; + var init_quadrant = __esm({ + "src/diagrams/quadrant-chart/parser/quadrant.jison"() { + "use strict"; + parser8 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; + return o3; + }, "o"), $V0 = [1, 3], $V1 = [1, 4], $V2 = [1, 5], $V3 = [1, 6], $V4 = [1, 7], $V5 = [1, 4, 5, 10, 12, 13, 14, 18, 25, 35, 37, 39, 41, 42, 48, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 63, 64, 65, 66, 67], $V6 = [1, 4, 5, 10, 12, 13, 14, 18, 25, 28, 35, 37, 39, 41, 42, 48, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 63, 64, 65, 66, 67], $V7 = [55, 56, 57], $V8 = [2, 36], $V9 = [1, 37], $Va = [1, 36], $Vb = [1, 38], $Vc = [1, 35], $Vd = [1, 43], $Ve = [1, 41], $Vf = [1, 14], $Vg = [1, 23], $Vh = [1, 18], $Vi = [1, 19], $Vj = [1, 20], $Vk = [1, 21], $Vl = [1, 22], $Vm = [1, 24], $Vn = [1, 25], $Vo = [1, 26], $Vp = [1, 27], $Vq = [1, 28], $Vr = [1, 29], $Vs = [1, 32], $Vt = [1, 33], $Vu = [1, 34], $Vv = [1, 39], $Vw = [1, 40], $Vx = [1, 42], $Vy = [1, 44], $Vz = [1, 62], $VA = [1, 61], $VB = [4, 5, 8, 10, 12, 13, 14, 18, 44, 47, 49, 55, 56, 57, 63, 64, 65, 66, 67], $VC = [1, 65], $VD = [1, 66], $VE = [1, 67], $VF = [1, 68], $VG = [1, 69], $VH = [1, 70], $VI = [1, 71], $VJ = [1, 72], $VK = [1, 73], $VL = [1, 74], $VM = [1, 75], $VN = [1, 76], $VO = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], $VP = [1, 90], $VQ = [1, 91], $VR = [1, 92], $VS = [1, 99], $VT = [1, 93], $VU = [1, 96], $VV = [1, 94], $VW = [1, 95], $VX = [1, 97], $VY = [1, 98], $VZ = [1, 102], $V_ = [10, 55, 56, 57], $V$ = [4, 5, 6, 8, 10, 11, 13, 17, 18, 19, 20, 55, 56, 57]; + var parser24 = { + trace: /* @__PURE__ */ __name(function trace() { + }, "trace"), + yy: {}, + symbols_: { "error": 2, "idStringToken": 3, "ALPHA": 4, "NUM": 5, "NODE_STRING": 6, "DOWN": 7, "MINUS": 8, "DEFAULT": 9, "COMMA": 10, "COLON": 11, "AMP": 12, "BRKT": 13, "MULT": 14, "UNICODE_TEXT": 15, "styleComponent": 16, "UNIT": 17, "SPACE": 18, "STYLE": 19, "PCT": 20, "idString": 21, "style": 22, "stylesOpt": 23, "classDefStatement": 24, "CLASSDEF": 25, "start": 26, "eol": 27, "QUADRANT": 28, "document": 29, "line": 30, "statement": 31, "axisDetails": 32, "quadrantDetails": 33, "points": 34, "title": 35, "title_value": 36, "acc_title": 37, "acc_title_value": 38, "acc_descr": 39, "acc_descr_value": 40, "acc_descr_multiline_value": 41, "section": 42, "text": 43, "point_start": 44, "point_x": 45, "point_y": 46, "class_name": 47, "X-AXIS": 48, "AXIS-TEXT-DELIMITER": 49, "Y-AXIS": 50, "QUADRANT_1": 51, "QUADRANT_2": 52, "QUADRANT_3": 53, "QUADRANT_4": 54, "NEWLINE": 55, "SEMI": 56, "EOF": 57, "alphaNumToken": 58, "textNoTagsToken": 59, "STR": 60, "MD_STR": 61, "alphaNum": 62, "PUNCTUATION": 63, "PLUS": 64, "EQUALS": 65, "DOT": 66, "UNDERSCORE": 67, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 4: "ALPHA", 5: "NUM", 6: "NODE_STRING", 7: "DOWN", 8: "MINUS", 9: "DEFAULT", 10: "COMMA", 11: "COLON", 12: "AMP", 13: "BRKT", 14: "MULT", 15: "UNICODE_TEXT", 17: "UNIT", 18: "SPACE", 19: "STYLE", 20: "PCT", 25: "CLASSDEF", 28: "QUADRANT", 35: "title", 36: "title_value", 37: "acc_title", 38: "acc_title_value", 39: "acc_descr", 40: "acc_descr_value", 41: "acc_descr_multiline_value", 42: "section", 44: "point_start", 45: "point_x", 46: "point_y", 47: "class_name", 48: "X-AXIS", 49: "AXIS-TEXT-DELIMITER", 50: "Y-AXIS", 51: "QUADRANT_1", 52: "QUADRANT_2", 53: "QUADRANT_3", 54: "QUADRANT_4", 55: "NEWLINE", 56: "SEMI", 57: "EOF", 60: "STR", 61: "MD_STR", 63: "PUNCTUATION", 64: "PLUS", 65: "EQUALS", 66: "DOT", 67: "UNDERSCORE" }, + productions_: [0, [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [16, 1], [21, 1], [21, 2], [22, 1], [22, 2], [23, 1], [23, 3], [24, 5], [26, 2], [26, 2], [26, 2], [29, 0], [29, 2], [30, 2], [31, 0], [31, 1], [31, 2], [31, 1], [31, 1], [31, 1], [31, 2], [31, 2], [31, 2], [31, 1], [31, 1], [34, 4], [34, 5], [34, 5], [34, 6], [32, 4], [32, 3], [32, 2], [32, 4], [32, 3], [32, 2], [33, 2], [33, 2], [33, 2], [33, 2], [27, 1], [27, 1], [27, 1], [43, 1], [43, 2], [43, 1], [43, 1], [62, 1], [62, 2], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [58, 1], [59, 1], [59, 1], [59, 1]], + performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 23: + this.$ = $$[$0]; + break; + case 24: + this.$ = $$[$0 - 1] + "" + $$[$0]; + break; + case 26: + this.$ = $$[$0 - 1] + $$[$0]; + break; + case 27: + this.$ = [$$[$0].trim()]; + break; + case 28: + $$[$0 - 2].push($$[$0].trim()); + this.$ = $$[$0 - 2]; + break; + case 29: + this.$ = $$[$0 - 4]; + yy.addClass($$[$0 - 2], $$[$0]); + break; + case 37: + this.$ = []; + break; + case 42: + this.$ = $$[$0].trim(); + yy.setDiagramTitle(this.$); + break; + case 43: + this.$ = $$[$0].trim(); + yy.setAccTitle(this.$); + break; + case 44: + case 45: + this.$ = $$[$0].trim(); + yy.setAccDescription(this.$); + break; + case 46: + yy.addSection($$[$0].substr(8)); + this.$ = $$[$0].substr(8); + break; + case 47: + yy.addPoint($$[$0 - 3], "", $$[$0 - 1], $$[$0], []); + break; + case 48: + yy.addPoint($$[$0 - 4], $$[$0 - 3], $$[$0 - 1], $$[$0], []); + break; + case 49: + yy.addPoint($$[$0 - 4], "", $$[$0 - 2], $$[$0 - 1], $$[$0]); + break; + case 50: + yy.addPoint($$[$0 - 5], $$[$0 - 4], $$[$0 - 2], $$[$0 - 1], $$[$0]); + break; + case 51: + yy.setXAxisLeftText($$[$0 - 2]); + yy.setXAxisRightText($$[$0]); + break; + case 52: + $$[$0 - 1].text += " \u27F6 "; + yy.setXAxisLeftText($$[$0 - 1]); + break; + case 53: + yy.setXAxisLeftText($$[$0]); + break; + case 54: + yy.setYAxisBottomText($$[$0 - 2]); + yy.setYAxisTopText($$[$0]); + break; + case 55: + $$[$0 - 1].text += " \u27F6 "; + yy.setYAxisBottomText($$[$0 - 1]); + break; + case 56: + yy.setYAxisBottomText($$[$0]); + break; + case 57: + yy.setQuadrant1Text($$[$0]); + break; + case 58: + yy.setQuadrant2Text($$[$0]); + break; + case 59: + yy.setQuadrant3Text($$[$0]); + break; + case 60: + yy.setQuadrant4Text($$[$0]); + break; + case 64: + this.$ = { text: $$[$0], type: "text" }; + break; + case 65: + this.$ = { text: $$[$0 - 1].text + "" + $$[$0], type: $$[$0 - 1].type }; + break; + case 66: + this.$ = { text: $$[$0], type: "text" }; + break; + case 67: + this.$ = { text: $$[$0], type: "markdown" }; + break; + case 68: + this.$ = $$[$0]; + break; + case 69: + this.$ = $$[$0 - 1] + "" + $$[$0]; + break; + } + }, "anonymous"), + table: [{ 18: $V0, 26: 1, 27: 2, 28: $V1, 55: $V2, 56: $V3, 57: $V4 }, { 1: [3] }, { 18: $V0, 26: 8, 27: 2, 28: $V1, 55: $V2, 56: $V3, 57: $V4 }, { 18: $V0, 26: 9, 27: 2, 28: $V1, 55: $V2, 56: $V3, 57: $V4 }, o2($V5, [2, 33], { 29: 10 }), o2($V6, [2, 61]), o2($V6, [2, 62]), o2($V6, [2, 63]), { 1: [2, 30] }, { 1: [2, 31] }, o2($V7, $V8, { 30: 11, 31: 12, 24: 13, 32: 15, 33: 16, 34: 17, 43: 30, 58: 31, 1: [2, 32], 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $Vf, 25: $Vg, 35: $Vh, 37: $Vi, 39: $Vj, 41: $Vk, 42: $Vl, 48: $Vm, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V5, [2, 34]), { 27: 45, 55: $V2, 56: $V3, 57: $V4 }, o2($V7, [2, 37]), o2($V7, $V8, { 24: 13, 32: 15, 33: 16, 34: 17, 43: 30, 58: 31, 31: 46, 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $Vf, 25: $Vg, 35: $Vh, 37: $Vi, 39: $Vj, 41: $Vk, 42: $Vl, 48: $Vm, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 39]), o2($V7, [2, 40]), o2($V7, [2, 41]), { 36: [1, 47] }, { 38: [1, 48] }, { 40: [1, 49] }, o2($V7, [2, 45]), o2($V7, [2, 46]), { 18: [1, 50] }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 51, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 52, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 53, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 54, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 55, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 43: 56, 58: 31, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, { 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 44: [1, 57], 47: [1, 58], 58: 60, 59: 59, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }, o2($VB, [2, 64]), o2($VB, [2, 66]), o2($VB, [2, 67]), o2($VB, [2, 70]), o2($VB, [2, 71]), o2($VB, [2, 72]), o2($VB, [2, 73]), o2($VB, [2, 74]), o2($VB, [2, 75]), o2($VB, [2, 76]), o2($VB, [2, 77]), o2($VB, [2, 78]), o2($VB, [2, 79]), o2($VB, [2, 80]), o2($V5, [2, 35]), o2($V7, [2, 38]), o2($V7, [2, 42]), o2($V7, [2, 43]), o2($V7, [2, 44]), { 3: 64, 4: $VC, 5: $VD, 6: $VE, 7: $VF, 8: $VG, 9: $VH, 10: $VI, 11: $VJ, 12: $VK, 13: $VL, 14: $VM, 15: $VN, 21: 63 }, o2($V7, [2, 53], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 49: [1, 77], 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 56], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 49: [1, 78], 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 57], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 58], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 59], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 60], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), { 45: [1, 79] }, { 44: [1, 80] }, o2($VB, [2, 65]), o2($VB, [2, 81]), o2($VB, [2, 82]), o2($VB, [2, 83]), { 3: 82, 4: $VC, 5: $VD, 6: $VE, 7: $VF, 8: $VG, 9: $VH, 10: $VI, 11: $VJ, 12: $VK, 13: $VL, 14: $VM, 15: $VN, 18: [1, 81] }, o2($VO, [2, 23]), o2($VO, [2, 1]), o2($VO, [2, 2]), o2($VO, [2, 3]), o2($VO, [2, 4]), o2($VO, [2, 5]), o2($VO, [2, 6]), o2($VO, [2, 7]), o2($VO, [2, 8]), o2($VO, [2, 9]), o2($VO, [2, 10]), o2($VO, [2, 11]), o2($VO, [2, 12]), o2($V7, [2, 52], { 58: 31, 43: 83, 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 55], { 58: 31, 43: 84, 4: $V9, 5: $Va, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 60: $Vs, 61: $Vt, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), { 46: [1, 85] }, { 45: [1, 86] }, { 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 16: 89, 17: $VV, 18: $VW, 19: $VX, 20: $VY, 22: 88, 23: 87 }, o2($VO, [2, 24]), o2($V7, [2, 51], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 54], { 59: 59, 58: 60, 4: $V9, 5: $Va, 8: $Vz, 10: $Vb, 12: $Vc, 13: $Vd, 14: $Ve, 18: $VA, 63: $Vu, 64: $Vv, 65: $Vw, 66: $Vx, 67: $Vy }), o2($V7, [2, 47], { 22: 88, 16: 89, 23: 100, 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 17: $VV, 18: $VW, 19: $VX, 20: $VY }), { 46: [1, 101] }, o2($V7, [2, 29], { 10: $VZ }), o2($V_, [2, 27], { 16: 103, 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 17: $VV, 18: $VW, 19: $VX, 20: $VY }), o2($V$, [2, 25]), o2($V$, [2, 13]), o2($V$, [2, 14]), o2($V$, [2, 15]), o2($V$, [2, 16]), o2($V$, [2, 17]), o2($V$, [2, 18]), o2($V$, [2, 19]), o2($V$, [2, 20]), o2($V$, [2, 21]), o2($V$, [2, 22]), o2($V7, [2, 49], { 10: $VZ }), o2($V7, [2, 48], { 22: 88, 16: 89, 23: 104, 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 17: $VV, 18: $VW, 19: $VX, 20: $VY }), { 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 16: 89, 17: $VV, 18: $VW, 19: $VX, 20: $VY, 22: 105 }, o2($V$, [2, 26]), o2($V7, [2, 50], { 10: $VZ }), o2($V_, [2, 28], { 16: 103, 4: $VP, 5: $VQ, 6: $VR, 8: $VS, 11: $VT, 13: $VU, 17: $VV, 18: $VW, 19: $VX, 20: $VY })], + defaultActions: { 8: [2, 30], 9: [2, 31] }, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); + } else { + var error3 = new Error(str2); + error3.hash = hash; + throw error3; + } + }, "parseError"), + parse: /* @__PURE__ */ __name(function parse7(input) { + var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k2 in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { + sharedState.yy[k2] = this.yy[k2]; + } + } + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; + } + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n2) { + stack.length = stack.length - 2 * n2; + vstack.length = vstack.length - n2; + lstack.length = lstack.length - n2; + } + __name(popStack, "popStack"); + function lex() { + var token2; + token2 = tstack.pop() || lexer2.lex() || EOF2; + if (typeof token2 !== "number") { + if (token2 instanceof Array) { + tstack = token2; + token2 = tstack.pop(); + } + token2 = self2.symbols_[token2] || token2; + } + return token2; + } + __name(lex, "lex"); + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; + while (true) { + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); + } + action = table[state3] && table[state3][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p3 in table[state3]) { + if (this.terminals_[p3] && p3 > TERROR) { + expected.push("'" + this.terminals_[p3] + "'"); + } + } + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + } else { + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + } + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + if (recovering > 0) { + recovering--; + } + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; + } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r2 = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r2 !== "undefined") { + return r2; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState2); + break; + case 3: + return true; + } + } + return true; + }, "parse") + }; + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { + EOF: 1, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str2, hash); + } else { + throw new Error(str2); + } + }, "parseError"), + // resets the lexer, sets new input + setInput: /* @__PURE__ */ __name(function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0, 0]; + } + this.offset = 0; + return this; + }, "setInput"), + // consumes and returns one char from the input + input: /* @__PURE__ */ __name(function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } + this._input = this._input.slice(1); + return ch; + }, "input"), + // unshifts one char (or a string) into the input + unput: /* @__PURE__ */ __name(function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r2 = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + }; + if (this.options.ranges) { + this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, "unput"), + // When called from action, caches matched text and appends it on next action + more: /* @__PURE__ */ __name(function() { + this._more = true; + return this; + }, "more"), + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: /* @__PURE__ */ __name(function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + return this; + }, "reject"), + // retain first n characters of the match + less: /* @__PURE__ */ __name(function(n2) { + this.unput(this.match.slice(n2)); + }, "less"), + // displays already matched input, i.e. for error messages + pastInput: /* @__PURE__ */ __name(function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, "pastInput"), + // displays upcoming input, i.e. for error messages + upcomingInput: /* @__PURE__ */ __name(function() { + var next3 = this.match; + if (next3.length < 20) { + next3 += this._input.substr(0, 20 - next3.length); + } + return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, "upcomingInput"), + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: /* @__PURE__ */ __name(function() { + var pre = this.pastInput(); + var c3 = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c3 + "^"; + }, "showPosition"), + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { + var token2, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); + } + } + lines = match2[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length + }; + this.yytext += match2[0]; + this.match += match2[0]; + this.matches = match2; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match2[0].length); + this.matched += match2[0]; + token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token2) { + return token2; + } else if (this._backtrack) { + for (var k2 in backup) { + this[k2] = backup[k2]; + } + return false; + } + return false; + }, "test_match"), + // return next match in input + next: /* @__PURE__ */ __name(function() { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + var token2, match2, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i2 = 0; i2 < rules.length; i2++) { + tempMatch = this._input.match(this.rules[rules[i2]]); + if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { + match2 = tempMatch; + index = i2; + if (this.options.backtrack_lexer) { + token2 = this.test_match(tempMatch, rules[i2]); + if (token2 !== false) { + return token2; + } else if (this._backtrack) { + match2 = false; + continue; + } else { + return false; + } + } else if (!this.options.flex) { + break; + } + } + } + if (match2) { + token2 = this.test_match(match2, rules[index]); + if (token2 !== false) { + return token2; + } + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, "next"), + // return next match that has a token + lex: /* @__PURE__ */ __name(function lex() { + var r2 = this.next(); + if (r2) { + return r2; + } else { + return this.lex(); + } + }, "lex"), + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: /* @__PURE__ */ __name(function begin(condition) { + this.conditionStack.push(condition); + }, "begin"), + // pop the previously active lexer condition state off the condition stack + popState: /* @__PURE__ */ __name(function popState() { + var n2 = this.conditionStack.length - 1; + if (n2 > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, "popState"), + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: /* @__PURE__ */ __name(function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, "_currentRules"), + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: /* @__PURE__ */ __name(function topState(n2) { + n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); + if (n2 >= 0) { + return this.conditionStack[n2]; + } else { + return "INITIAL"; + } + }, "topState"), + // alias for begin(condition) + pushState: /* @__PURE__ */ __name(function pushState(condition) { + this.begin(condition); + }, "pushState"), + // return the number of states currently on the stack + stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { + return this.conditionStack.length; + }, "stateStackSize"), + options: { "case-insensitive": true }, + performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + var YYSTATE = YY_START; + switch ($avoiding_name_collisions) { + case 0: + break; + case 1: + break; + case 2: + return 55; + break; + case 3: + break; + case 4: + this.begin("title"); + return 35; + break; + case 5: + this.popState(); + return "title_value"; + break; + case 6: + this.begin("acc_title"); + return 37; + break; + case 7: + this.popState(); + return "acc_title_value"; + break; + case 8: + this.begin("acc_descr"); + return 39; + break; + case 9: + this.popState(); + return "acc_descr_value"; + break; + case 10: + this.begin("acc_descr_multiline"); + break; + case 11: + this.popState(); + break; + case 12: + return "acc_descr_multiline_value"; + break; + case 13: + return 48; + break; + case 14: + return 50; + break; + case 15: + return 49; + break; + case 16: + return 51; + break; + case 17: + return 52; + break; + case 18: + return 53; + break; + case 19: + return 54; + break; + case 20: + return 25; + break; + case 21: + this.begin("md_string"); + break; + case 22: + return "MD_STR"; + break; + case 23: + this.popState(); + break; + case 24: + this.begin("string"); + break; + case 25: + this.popState(); + break; + case 26: + return "STR"; + break; + case 27: + this.begin("class_name"); + break; + case 28: + this.popState(); + return 47; + break; + case 29: + this.begin("point_start"); + return 44; + break; + case 30: + this.begin("point_x"); + return 45; + break; + case 31: + this.popState(); + break; + case 32: + this.popState(); + this.begin("point_y"); + break; + case 33: + this.popState(); + return 46; + break; + case 34: + return 28; + break; + case 35: + return 4; + break; + case 36: + return 11; + break; + case 37: + return 64; + break; + case 38: + return 10; + break; + case 39: + return 65; + break; + case 40: + return 65; + break; + case 41: + return 14; + break; + case 42: + return 13; + break; + case 43: + return 67; + break; + case 44: + return 66; + break; + case 45: + return 12; + break; + case 46: + return 8; + break; + case 47: + return 5; + break; + case 48: + return 18; + break; + case 49: + return 56; + break; + case 50: + return 63; + break; + case 51: + return 57; + break; + } + }, "anonymous"), + rules: [/^(?:%%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n\r]+)/i, /^(?:%%[^\n]*)/i, /^(?:title\b)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?: *x-axis *)/i, /^(?: *y-axis *)/i, /^(?: *--+> *)/i, /^(?: *quadrant-1 *)/i, /^(?: *quadrant-2 *)/i, /^(?: *quadrant-3 *)/i, /^(?: *quadrant-4 *)/i, /^(?:classDef\b)/i, /^(?:["][`])/i, /^(?:[^`"]+)/i, /^(?:[`]["])/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?::::)/i, /^(?:^\w+)/i, /^(?:\s*:\s*\[\s*)/i, /^(?:(1)|(0(.\d+)?))/i, /^(?:\s*\] *)/i, /^(?:\s*,\s*)/i, /^(?:(1)|(0(.\d+)?))/i, /^(?: *quadrantChart *)/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:=)/i, /^(?:\*)/i, /^(?:#)/i, /^(?:[\_])/i, /^(?:\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\s)/i, /^(?:;)/i, /^(?:[!"#$%&'*+,-.`?\\_/])/i, /^(?:$)/i], + conditions: { "class_name": { "rules": [28], "inclusive": false }, "point_y": { "rules": [33], "inclusive": false }, "point_x": { "rules": [32], "inclusive": false }, "point_start": { "rules": [30, 31], "inclusive": false }, "acc_descr_multiline": { "rules": [11, 12], "inclusive": false }, "acc_descr": { "rules": [9], "inclusive": false }, "acc_title": { "rules": [7], "inclusive": false }, "title": { "rules": [5], "inclusive": false }, "md_string": { "rules": [22, 23], "inclusive": false }, "string": { "rules": [25, 26], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 27, 29, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51], "inclusive": true } } + }; + return lexer2; + })(); + parser24.lexer = lexer; + function Parser3() { + this.yy = {}; + } + __name(Parser3, "Parser"); + Parser3.prototype = parser24; + parser24.Parser = Parser3; + return new Parser3(); + })(); + parser8.parser = parser8; + quadrant_default = parser8; + } + }); + + // src/diagrams/quadrant-chart/quadrantBuilder.ts + var defaultThemeVariables, QuadrantBuilder; + var init_quadrantBuilder = __esm({ + "src/diagrams/quadrant-chart/quadrantBuilder.ts"() { + "use strict"; + init_src32(); + init_defaultConfig(); + init_logger(); + init_theme_default(); + defaultThemeVariables = getThemeVariables3(); + QuadrantBuilder = class { + constructor() { + this.classes = /* @__PURE__ */ new Map(); + this.config = this.getDefaultConfig(); + this.themeConfig = this.getDefaultThemeConfig(); + this.data = this.getDefaultData(); + } + static { + __name(this, "QuadrantBuilder"); + } + getDefaultData() { + return { + titleText: "", + quadrant1Text: "", + quadrant2Text: "", + quadrant3Text: "", + quadrant4Text: "", + xAxisLeftText: "", + xAxisRightText: "", + yAxisBottomText: "", + yAxisTopText: "", + points: [] + }; + } + getDefaultConfig() { + return { + showXAxis: true, + showYAxis: true, + showTitle: true, + chartHeight: defaultConfig_default.quadrantChart?.chartWidth || 500, + chartWidth: defaultConfig_default.quadrantChart?.chartHeight || 500, + titlePadding: defaultConfig_default.quadrantChart?.titlePadding || 10, + titleFontSize: defaultConfig_default.quadrantChart?.titleFontSize || 20, + quadrantPadding: defaultConfig_default.quadrantChart?.quadrantPadding || 5, + xAxisLabelPadding: defaultConfig_default.quadrantChart?.xAxisLabelPadding || 5, + yAxisLabelPadding: defaultConfig_default.quadrantChart?.yAxisLabelPadding || 5, + xAxisLabelFontSize: defaultConfig_default.quadrantChart?.xAxisLabelFontSize || 16, + yAxisLabelFontSize: defaultConfig_default.quadrantChart?.yAxisLabelFontSize || 16, + quadrantLabelFontSize: defaultConfig_default.quadrantChart?.quadrantLabelFontSize || 16, + quadrantTextTopPadding: defaultConfig_default.quadrantChart?.quadrantTextTopPadding || 5, + pointTextPadding: defaultConfig_default.quadrantChart?.pointTextPadding || 5, + pointLabelFontSize: defaultConfig_default.quadrantChart?.pointLabelFontSize || 12, + pointRadius: defaultConfig_default.quadrantChart?.pointRadius || 5, + xAxisPosition: defaultConfig_default.quadrantChart?.xAxisPosition || "top", + yAxisPosition: defaultConfig_default.quadrantChart?.yAxisPosition || "left", + quadrantInternalBorderStrokeWidth: defaultConfig_default.quadrantChart?.quadrantInternalBorderStrokeWidth || 1, + quadrantExternalBorderStrokeWidth: defaultConfig_default.quadrantChart?.quadrantExternalBorderStrokeWidth || 2 + }; + } + getDefaultThemeConfig() { + return { + quadrant1Fill: defaultThemeVariables.quadrant1Fill, + quadrant2Fill: defaultThemeVariables.quadrant2Fill, + quadrant3Fill: defaultThemeVariables.quadrant3Fill, + quadrant4Fill: defaultThemeVariables.quadrant4Fill, + quadrant1TextFill: defaultThemeVariables.quadrant1TextFill, + quadrant2TextFill: defaultThemeVariables.quadrant2TextFill, + quadrant3TextFill: defaultThemeVariables.quadrant3TextFill, + quadrant4TextFill: defaultThemeVariables.quadrant4TextFill, + quadrantPointFill: defaultThemeVariables.quadrantPointFill, + quadrantPointTextFill: defaultThemeVariables.quadrantPointTextFill, + quadrantXAxisTextFill: defaultThemeVariables.quadrantXAxisTextFill, + quadrantYAxisTextFill: defaultThemeVariables.quadrantYAxisTextFill, + quadrantTitleFill: defaultThemeVariables.quadrantTitleFill, + quadrantInternalBorderStrokeFill: defaultThemeVariables.quadrantInternalBorderStrokeFill, + quadrantExternalBorderStrokeFill: defaultThemeVariables.quadrantExternalBorderStrokeFill + }; + } + clear() { + this.config = this.getDefaultConfig(); + this.themeConfig = this.getDefaultThemeConfig(); + this.data = this.getDefaultData(); + this.classes = /* @__PURE__ */ new Map(); + log.info("clear called"); + } + setData(data5) { + this.data = { ...this.data, ...data5 }; + } + addPoints(points) { + this.data.points = [...points, ...this.data.points]; + } + addClass(className, styles4) { + this.classes.set(className, styles4); + } + setConfig(config5) { + log.trace("setConfig called with: ", config5); + this.config = { ...this.config, ...config5 }; + } + setThemeConfig(themeConfig) { + log.trace("setThemeConfig called with: ", themeConfig); + this.themeConfig = { ...this.themeConfig, ...themeConfig }; + } + calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle) { + const xAxisSpaceCalculation = this.config.xAxisLabelPadding * 2 + this.config.xAxisLabelFontSize; + const xAxisSpace = { + top: xAxisPosition === "top" && showXAxis ? xAxisSpaceCalculation : 0, + bottom: xAxisPosition === "bottom" && showXAxis ? xAxisSpaceCalculation : 0 + }; + const yAxisSpaceCalculation = this.config.yAxisLabelPadding * 2 + this.config.yAxisLabelFontSize; + const yAxisSpace = { + left: this.config.yAxisPosition === "left" && showYAxis ? yAxisSpaceCalculation : 0, + right: this.config.yAxisPosition === "right" && showYAxis ? yAxisSpaceCalculation : 0 + }; + const titleSpaceCalculation = this.config.titleFontSize + this.config.titlePadding * 2; + const titleSpace = { + top: showTitle ? titleSpaceCalculation : 0 + }; + const quadrantLeft = this.config.quadrantPadding + yAxisSpace.left; + const quadrantTop = this.config.quadrantPadding + xAxisSpace.top + titleSpace.top; + const quadrantWidth = this.config.chartWidth - this.config.quadrantPadding * 2 - yAxisSpace.left - yAxisSpace.right; + const quadrantHeight = this.config.chartHeight - this.config.quadrantPadding * 2 - xAxisSpace.top - xAxisSpace.bottom - titleSpace.top; + const quadrantHalfWidth = quadrantWidth / 2; + const quadrantHalfHeight = quadrantHeight / 2; + const quadrantSpace = { + quadrantLeft, + quadrantTop, + quadrantWidth, + quadrantHalfWidth, + quadrantHeight, + quadrantHalfHeight + }; + return { + xAxisSpace, + yAxisSpace, + titleSpace, + quadrantSpace + }; + } + getAxisLabels(xAxisPosition, showXAxis, showYAxis, spaceData) { + const { quadrantSpace, titleSpace } = spaceData; + const { + quadrantHalfHeight, + quadrantHeight, + quadrantLeft, + quadrantHalfWidth, + quadrantTop, + quadrantWidth + } = quadrantSpace; + const drawXAxisLabelsInMiddle = Boolean(this.data.xAxisRightText); + const drawYAxisLabelsInMiddle = Boolean(this.data.yAxisTopText); + const axisLabels = []; + if (this.data.xAxisLeftText && showXAxis) { + axisLabels.push({ + text: this.data.xAxisLeftText, + fill: this.themeConfig.quadrantXAxisTextFill, + x: quadrantLeft + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0), + y: xAxisPosition === "top" ? this.config.xAxisLabelPadding + titleSpace.top : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight + this.config.quadrantPadding, + fontSize: this.config.xAxisLabelFontSize, + verticalPos: drawXAxisLabelsInMiddle ? "center" : "left", + horizontalPos: "top", + rotation: 0 + }); + } + if (this.data.xAxisRightText && showXAxis) { + axisLabels.push({ + text: this.data.xAxisRightText, + fill: this.themeConfig.quadrantXAxisTextFill, + x: quadrantLeft + quadrantHalfWidth + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0), + y: xAxisPosition === "top" ? this.config.xAxisLabelPadding + titleSpace.top : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight + this.config.quadrantPadding, + fontSize: this.config.xAxisLabelFontSize, + verticalPos: drawXAxisLabelsInMiddle ? "center" : "left", + horizontalPos: "top", + rotation: 0 + }); + } + if (this.data.yAxisBottomText && showYAxis) { + axisLabels.push({ + text: this.data.yAxisBottomText, + fill: this.themeConfig.quadrantYAxisTextFill, + x: this.config.yAxisPosition === "left" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth + this.config.quadrantPadding, + y: quadrantTop + quadrantHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0), + fontSize: this.config.yAxisLabelFontSize, + verticalPos: drawYAxisLabelsInMiddle ? "center" : "left", + horizontalPos: "top", + rotation: -90 + }); + } + if (this.data.yAxisTopText && showYAxis) { + axisLabels.push({ + text: this.data.yAxisTopText, + fill: this.themeConfig.quadrantYAxisTextFill, + x: this.config.yAxisPosition === "left" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth + this.config.quadrantPadding, + y: quadrantTop + quadrantHalfHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0), + fontSize: this.config.yAxisLabelFontSize, + verticalPos: drawYAxisLabelsInMiddle ? "center" : "left", + horizontalPos: "top", + rotation: -90 + }); + } + return axisLabels; + } + getQuadrants(spaceData) { + const { quadrantSpace } = spaceData; + const { quadrantHalfHeight, quadrantLeft, quadrantHalfWidth, quadrantTop } = quadrantSpace; + const quadrants = [ + { + text: { + text: this.data.quadrant1Text, + fill: this.themeConfig.quadrant1TextFill, + x: 0, + y: 0, + fontSize: this.config.quadrantLabelFontSize, + verticalPos: "center", + horizontalPos: "middle", + rotation: 0 + }, + x: quadrantLeft + quadrantHalfWidth, + y: quadrantTop, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.themeConfig.quadrant1Fill + }, + { + text: { + text: this.data.quadrant2Text, + fill: this.themeConfig.quadrant2TextFill, + x: 0, + y: 0, + fontSize: this.config.quadrantLabelFontSize, + verticalPos: "center", + horizontalPos: "middle", + rotation: 0 + }, + x: quadrantLeft, + y: quadrantTop, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.themeConfig.quadrant2Fill + }, + { + text: { + text: this.data.quadrant3Text, + fill: this.themeConfig.quadrant3TextFill, + x: 0, + y: 0, + fontSize: this.config.quadrantLabelFontSize, + verticalPos: "center", + horizontalPos: "middle", + rotation: 0 + }, + x: quadrantLeft, + y: quadrantTop + quadrantHalfHeight, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.themeConfig.quadrant3Fill + }, + { + text: { + text: this.data.quadrant4Text, + fill: this.themeConfig.quadrant4TextFill, + x: 0, + y: 0, + fontSize: this.config.quadrantLabelFontSize, + verticalPos: "center", + horizontalPos: "middle", + rotation: 0 + }, + x: quadrantLeft + quadrantHalfWidth, + y: quadrantTop + quadrantHalfHeight, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.themeConfig.quadrant4Fill + } + ]; + for (const quadrant of quadrants) { + quadrant.text.x = quadrant.x + quadrant.width / 2; + if (this.data.points.length === 0) { + quadrant.text.y = quadrant.y + quadrant.height / 2; + quadrant.text.horizontalPos = "middle"; + } else { + quadrant.text.y = quadrant.y + this.config.quadrantTextTopPadding; + quadrant.text.horizontalPos = "top"; + } + } + return quadrants; + } + getQuadrantPoints(spaceData) { + const { quadrantSpace } = spaceData; + const { quadrantHeight, quadrantLeft, quadrantTop, quadrantWidth } = quadrantSpace; + const xAxis = linear2().domain([0, 1]).range([quadrantLeft, quadrantWidth + quadrantLeft]); + const yAxis = linear2().domain([0, 1]).range([quadrantHeight + quadrantTop, quadrantTop]); + const points = this.data.points.map((point8) => { + const classStyles = this.classes.get(point8.className); + if (classStyles) { + point8 = { ...classStyles, ...point8 }; + } + const props = { + x: xAxis(point8.x), + y: yAxis(point8.y), + fill: point8.color ?? this.themeConfig.quadrantPointFill, + radius: point8.radius ?? this.config.pointRadius, + text: { + text: point8.text, + fill: this.themeConfig.quadrantPointTextFill, + x: xAxis(point8.x), + y: yAxis(point8.y) + this.config.pointTextPadding, + verticalPos: "center", + horizontalPos: "top", + fontSize: this.config.pointLabelFontSize, + rotation: 0 + }, + strokeColor: point8.strokeColor ?? this.themeConfig.quadrantPointFill, + strokeWidth: point8.strokeWidth ?? "0px" + }; + return props; + }); + return points; + } + getBorders(spaceData) { + const halfExternalBorderWidth = this.config.quadrantExternalBorderStrokeWidth / 2; + const { quadrantSpace } = spaceData; + const { + quadrantHalfHeight, + quadrantHeight, + quadrantLeft, + quadrantHalfWidth, + quadrantTop, + quadrantWidth + } = quadrantSpace; + const borderLines = [ + // top border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: quadrantLeft - halfExternalBorderWidth, + y1: quadrantTop, + x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth, + y2: quadrantTop + }, + // right border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: quadrantLeft + quadrantWidth, + y1: quadrantTop + halfExternalBorderWidth, + x2: quadrantLeft + quadrantWidth, + y2: quadrantTop + quadrantHeight - halfExternalBorderWidth + }, + // bottom border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: quadrantLeft - halfExternalBorderWidth, + y1: quadrantTop + quadrantHeight, + x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth, + y2: quadrantTop + quadrantHeight + }, + // left border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: quadrantLeft, + y1: quadrantTop + halfExternalBorderWidth, + x2: quadrantLeft, + y2: quadrantTop + quadrantHeight - halfExternalBorderWidth + }, + // vertical inner border + { + strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill, + strokeWidth: this.config.quadrantInternalBorderStrokeWidth, + x1: quadrantLeft + quadrantHalfWidth, + y1: quadrantTop + halfExternalBorderWidth, + x2: quadrantLeft + quadrantHalfWidth, + y2: quadrantTop + quadrantHeight - halfExternalBorderWidth + }, + // horizontal inner border + { + strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill, + strokeWidth: this.config.quadrantInternalBorderStrokeWidth, + x1: quadrantLeft + halfExternalBorderWidth, + y1: quadrantTop + quadrantHalfHeight, + x2: quadrantLeft + quadrantWidth - halfExternalBorderWidth, + y2: quadrantTop + quadrantHalfHeight + } + ]; + return borderLines; + } + getTitle(showTitle) { + if (showTitle) { + return { + text: this.data.titleText, + fill: this.themeConfig.quadrantTitleFill, + fontSize: this.config.titleFontSize, + horizontalPos: "top", + verticalPos: "center", + rotation: 0, + y: this.config.titlePadding, + x: this.config.chartWidth / 2 + }; + } + return; + } + build() { + const showXAxis = this.config.showXAxis && !!(this.data.xAxisLeftText || this.data.xAxisRightText); + const showYAxis = this.config.showYAxis && !!(this.data.yAxisTopText || this.data.yAxisBottomText); + const showTitle = this.config.showTitle && !!this.data.titleText; + const xAxisPosition = this.data.points.length > 0 ? "bottom" : this.config.xAxisPosition; + const calculatedSpace = this.calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle); + return { + points: this.getQuadrantPoints(calculatedSpace), + quadrants: this.getQuadrants(calculatedSpace), + axisLabels: this.getAxisLabels(xAxisPosition, showXAxis, showYAxis, calculatedSpace), + borderLines: this.getBorders(calculatedSpace), + title: this.getTitle(showTitle) + }; + } + }; + } + }); + + // src/diagrams/quadrant-chart/utils.ts + function validateHexCode(value2) { + return !/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(value2); + } + function validateNumber(value2) { + return !/^\d+$/.test(value2); + } + function validateSizeInPixels(value2) { + return !/^\d+px$/.test(value2); + } + var InvalidStyleError; + var init_utils5 = __esm({ + "src/diagrams/quadrant-chart/utils.ts"() { + "use strict"; + InvalidStyleError = class extends Error { + static { + __name(this, "InvalidStyleError"); + } + constructor(style3, value2, type3) { + super(`value for ${style3} ${value2} is invalid, please use a valid ${type3}`); + this.name = "InvalidStyleError"; + } + }; + __name(validateHexCode, "validateHexCode"); + __name(validateNumber, "validateNumber"); + __name(validateSizeInPixels, "validateSizeInPixels"); + } + }); + + // src/diagrams/quadrant-chart/quadrantDb.ts + function textSanitizer(text4) { + return sanitizeText(text4.trim(), config3); + } + function setQuadrant1Text(textObj) { + quadrantBuilder.setData({ quadrant1Text: textSanitizer(textObj.text) }); + } + function setQuadrant2Text(textObj) { + quadrantBuilder.setData({ quadrant2Text: textSanitizer(textObj.text) }); + } + function setQuadrant3Text(textObj) { + quadrantBuilder.setData({ quadrant3Text: textSanitizer(textObj.text) }); + } + function setQuadrant4Text(textObj) { + quadrantBuilder.setData({ quadrant4Text: textSanitizer(textObj.text) }); + } + function setXAxisLeftText(textObj) { + quadrantBuilder.setData({ xAxisLeftText: textSanitizer(textObj.text) }); + } + function setXAxisRightText(textObj) { + quadrantBuilder.setData({ xAxisRightText: textSanitizer(textObj.text) }); + } + function setYAxisTopText(textObj) { + quadrantBuilder.setData({ yAxisTopText: textSanitizer(textObj.text) }); + } + function setYAxisBottomText(textObj) { + quadrantBuilder.setData({ yAxisBottomText: textSanitizer(textObj.text) }); + } + function parseStyles(styles4) { + const stylesObject = {}; + for (const style3 of styles4) { + const [key, value2] = style3.trim().split(/\s*:\s*/); + if (key === "radius") { + if (validateNumber(value2)) { + throw new InvalidStyleError(key, value2, "number"); + } + stylesObject.radius = parseInt(value2); + } else if (key === "color") { + if (validateHexCode(value2)) { + throw new InvalidStyleError(key, value2, "hex code"); + } + stylesObject.color = value2; + } else if (key === "stroke-color") { + if (validateHexCode(value2)) { + throw new InvalidStyleError(key, value2, "hex code"); + } + stylesObject.strokeColor = value2; + } else if (key === "stroke-width") { + if (validateSizeInPixels(value2)) { + throw new InvalidStyleError(key, value2, "number of pixels (eg. 10px)"); + } + stylesObject.strokeWidth = value2; + } else { + throw new Error(`style named ${key} is not supported.`); + } + } + return stylesObject; + } + function addPoint(textObj, className, x5, y6, styles4) { + const stylesObject = parseStyles(styles4); + quadrantBuilder.addPoints([ + { + x: x5, + y: y6, + text: textSanitizer(textObj.text), + className, + ...stylesObject + } + ]); + } + function addClass2(className, styles4) { + quadrantBuilder.addClass(className, parseStyles(styles4)); + } + function setWidth(width3) { + quadrantBuilder.setConfig({ chartWidth: width3 }); + } + function setHeight(height2) { + quadrantBuilder.setConfig({ chartHeight: height2 }); + } + function getQuadrantData() { + const config5 = getConfig2(); + const { themeVariables, quadrantChart: quadrantChartConfig } = config5; + if (quadrantChartConfig) { + quadrantBuilder.setConfig(quadrantChartConfig); + } + quadrantBuilder.setThemeConfig({ + quadrant1Fill: themeVariables.quadrant1Fill, + quadrant2Fill: themeVariables.quadrant2Fill, + quadrant3Fill: themeVariables.quadrant3Fill, + quadrant4Fill: themeVariables.quadrant4Fill, + quadrant1TextFill: themeVariables.quadrant1TextFill, + quadrant2TextFill: themeVariables.quadrant2TextFill, + quadrant3TextFill: themeVariables.quadrant3TextFill, + quadrant4TextFill: themeVariables.quadrant4TextFill, + quadrantPointFill: themeVariables.quadrantPointFill, + quadrantPointTextFill: themeVariables.quadrantPointTextFill, + quadrantXAxisTextFill: themeVariables.quadrantXAxisTextFill, + quadrantYAxisTextFill: themeVariables.quadrantYAxisTextFill, + quadrantExternalBorderStrokeFill: themeVariables.quadrantExternalBorderStrokeFill, + quadrantInternalBorderStrokeFill: themeVariables.quadrantInternalBorderStrokeFill, + quadrantTitleFill: themeVariables.quadrantTitleFill + }); + quadrantBuilder.setData({ titleText: getDiagramTitle() }); + return quadrantBuilder.build(); + } + var config3, quadrantBuilder, clear11, quadrantDb_default; + var init_quadrantDb = __esm({ + "src/diagrams/quadrant-chart/quadrantDb.ts"() { + "use strict"; + init_diagramAPI(); + init_common(); + init_commonDb(); + init_quadrantBuilder(); + init_utils5(); + config3 = getConfig2(); + __name(textSanitizer, "textSanitizer"); + quadrantBuilder = new QuadrantBuilder(); + __name(setQuadrant1Text, "setQuadrant1Text"); + __name(setQuadrant2Text, "setQuadrant2Text"); + __name(setQuadrant3Text, "setQuadrant3Text"); + __name(setQuadrant4Text, "setQuadrant4Text"); + __name(setXAxisLeftText, "setXAxisLeftText"); + __name(setXAxisRightText, "setXAxisRightText"); + __name(setYAxisTopText, "setYAxisTopText"); + __name(setYAxisBottomText, "setYAxisBottomText"); + __name(parseStyles, "parseStyles"); + __name(addPoint, "addPoint"); + __name(addClass2, "addClass"); + __name(setWidth, "setWidth"); + __name(setHeight, "setHeight"); + __name(getQuadrantData, "getQuadrantData"); + clear11 = /* @__PURE__ */ __name(function() { + quadrantBuilder.clear(); + clear(); + }, "clear"); + quadrantDb_default = { + setWidth, + setHeight, + setQuadrant1Text, + setQuadrant2Text, + setQuadrant3Text, + setQuadrant4Text, + setXAxisLeftText, + setXAxisRightText, + setYAxisTopText, + setYAxisBottomText, + parseStyles, + addPoint, + addClass: addClass2, + getQuadrantData, + clear: clear11, + setAccTitle, + getAccTitle, + setDiagramTitle, + getDiagramTitle, + getAccDescription, + setAccDescription + }; + } + }); + + // src/diagrams/quadrant-chart/quadrantRenderer.ts + var draw8, quadrantRenderer_default; + var init_quadrantRenderer = __esm({ + "src/diagrams/quadrant-chart/quadrantRenderer.ts"() { + "use strict"; + init_src32(); + init_diagramAPI(); + init_logger(); + init_setupGraphViewbox(); + draw8 = /* @__PURE__ */ __name((txt, id30, _version, diagObj) => { + function getDominantBaseLine(horizontalPos) { + return horizontalPos === "top" ? "hanging" : "middle"; + } + __name(getDominantBaseLine, "getDominantBaseLine"); + function getTextAnchor(verticalPos) { + return verticalPos === "left" ? "start" : "middle"; + } + __name(getTextAnchor, "getTextAnchor"); + function getTransformation(data5) { + return `translate(${data5.x}, ${data5.y}) rotate(${data5.rotation || 0})`; + } + __name(getTransformation, "getTransformation"); + const conf5 = getConfig2(); + log.debug("Rendering quadrant chart\n" + txt); + const securityLevel = conf5.securityLevel; + let sandboxElement; + if (securityLevel === "sandbox") { + sandboxElement = select_default2("#i" + id30); + } + const root3 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); + const svg2 = root3.select(`[id="${id30}"]`); + const group2 = svg2.append("g").attr("class", "main"); + const width3 = conf5.quadrantChart?.chartWidth ?? 500; + const height2 = conf5.quadrantChart?.chartHeight ?? 500; + configureSvgSize(svg2, height2, width3, conf5.quadrantChart?.useMaxWidth ?? true); + svg2.attr("viewBox", "0 0 " + width3 + " " + height2); + diagObj.db.setHeight(height2); + diagObj.db.setWidth(width3); + const quadrantData = diagObj.db.getQuadrantData(); + const quadrantsGroup = group2.append("g").attr("class", "quadrants"); + const borderGroup = group2.append("g").attr("class", "border"); + const dataPointGroup = group2.append("g").attr("class", "data-points"); + const labelGroup = group2.append("g").attr("class", "labels"); + const titleGroup = group2.append("g").attr("class", "title"); + if (quadrantData.title) { + titleGroup.append("text").attr("x", 0).attr("y", 0).attr("fill", quadrantData.title.fill).attr("font-size", quadrantData.title.fontSize).attr("dominant-baseline", getDominantBaseLine(quadrantData.title.horizontalPos)).attr("text-anchor", getTextAnchor(quadrantData.title.verticalPos)).attr("transform", getTransformation(quadrantData.title)).text(quadrantData.title.text); + } + if (quadrantData.borderLines) { + borderGroup.selectAll("line").data(quadrantData.borderLines).enter().append("line").attr("x1", (data5) => data5.x1).attr("y1", (data5) => data5.y1).attr("x2", (data5) => data5.x2).attr("y2", (data5) => data5.y2).style("stroke", (data5) => data5.strokeFill).style("stroke-width", (data5) => data5.strokeWidth); + } + const quadrants = quadrantsGroup.selectAll("g.quadrant").data(quadrantData.quadrants).enter().append("g").attr("class", "quadrant"); + quadrants.append("rect").attr("x", (data5) => data5.x).attr("y", (data5) => data5.y).attr("width", (data5) => data5.width).attr("height", (data5) => data5.height).attr("fill", (data5) => data5.fill); + quadrants.append("text").attr("x", 0).attr("y", 0).attr("fill", (data5) => data5.text.fill).attr("font-size", (data5) => data5.text.fontSize).attr( + "dominant-baseline", + (data5) => getDominantBaseLine(data5.text.horizontalPos) + ).attr("text-anchor", (data5) => getTextAnchor(data5.text.verticalPos)).attr("transform", (data5) => getTransformation(data5.text)).text((data5) => data5.text.text); + const labels = labelGroup.selectAll("g.label").data(quadrantData.axisLabels).enter().append("g").attr("class", "label"); + labels.append("text").attr("x", 0).attr("y", 0).text((data5) => data5.text).attr("fill", (data5) => data5.fill).attr("font-size", (data5) => data5.fontSize).attr("dominant-baseline", (data5) => getDominantBaseLine(data5.horizontalPos)).attr("text-anchor", (data5) => getTextAnchor(data5.verticalPos)).attr("transform", (data5) => getTransformation(data5)); + const dataPoints = dataPointGroup.selectAll("g.data-point").data(quadrantData.points).enter().append("g").attr("class", "data-point"); + dataPoints.append("circle").attr("cx", (data5) => data5.x).attr("cy", (data5) => data5.y).attr("r", (data5) => data5.radius).attr("fill", (data5) => data5.fill).attr("stroke", (data5) => data5.strokeColor).attr("stroke-width", (data5) => data5.strokeWidth); + dataPoints.append("text").attr("x", 0).attr("y", 0).text((data5) => data5.text.text).attr("fill", (data5) => data5.text.fill).attr("font-size", (data5) => data5.text.fontSize).attr( + "dominant-baseline", + (data5) => getDominantBaseLine(data5.text.horizontalPos) + ).attr("text-anchor", (data5) => getTextAnchor(data5.text.verticalPos)).attr("transform", (data5) => getTransformation(data5.text)); + }, "draw"); + quadrantRenderer_default = { + draw: draw8 + }; + } + }); + + // src/diagrams/quadrant-chart/quadrantDiagram.ts + var quadrantDiagram_exports = {}; + __export(quadrantDiagram_exports, { + diagram: () => diagram8 + }); + var diagram8; + var init_quadrantDiagram = __esm({ + "src/diagrams/quadrant-chart/quadrantDiagram.ts"() { + "use strict"; + init_quadrant(); + init_quadrantDb(); + init_quadrantRenderer(); + diagram8 = { + parser: quadrant_default, + db: quadrantDb_default, + renderer: quadrantRenderer_default, + styles: /* @__PURE__ */ __name(() => "", "styles") + }; + } + }); + + // src/diagrams/xychart/parser/xychart.jison + var parser9, xychart_default; + var init_xychart = __esm({ + "src/diagrams/xychart/parser/xychart.jison"() { + "use strict"; + parser9 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; + return o3; + }, "o"), $V0 = [1, 10, 12, 14, 16, 18, 19, 21, 23], $V1 = [2, 6], $V2 = [1, 3], $V3 = [1, 5], $V4 = [1, 6], $V5 = [1, 7], $V6 = [1, 5, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $V7 = [1, 25], $V8 = [1, 26], $V9 = [1, 28], $Va = [1, 29], $Vb = [1, 30], $Vc = [1, 31], $Vd = [1, 32], $Ve = [1, 33], $Vf = [1, 34], $Vg = [1, 35], $Vh = [1, 36], $Vi = [1, 37], $Vj = [1, 43], $Vk = [1, 42], $Vl = [1, 47], $Vm = [1, 50], $Vn = [1, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $Vo = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36], $Vp = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], $Vq = [1, 64]; + var parser24 = { + trace: /* @__PURE__ */ __name(function trace() { + }, "trace"), + yy: {}, + symbols_: { "error": 2, "start": 3, "eol": 4, "XYCHART": 5, "chartConfig": 6, "document": 7, "CHART_ORIENTATION": 8, "statement": 9, "title": 10, "text": 11, "X_AXIS": 12, "parseXAxis": 13, "Y_AXIS": 14, "parseYAxis": 15, "LINE": 16, "plotData": 17, "BAR": 18, "acc_title": 19, "acc_title_value": 20, "acc_descr": 21, "acc_descr_value": 22, "acc_descr_multiline_value": 23, "SQUARE_BRACES_START": 24, "commaSeparatedNumbers": 25, "SQUARE_BRACES_END": 26, "NUMBER_WITH_DECIMAL": 27, "COMMA": 28, "xAxisData": 29, "bandData": 30, "ARROW_DELIMITER": 31, "commaSeparatedTexts": 32, "yAxisData": 33, "NEWLINE": 34, "SEMI": 35, "EOF": 36, "alphaNum": 37, "STR": 38, "MD_STR": 39, "alphaNumToken": 40, "AMP": 41, "NUM": 42, "ALPHA": 43, "PLUS": 44, "EQUALS": 45, "MULT": 46, "DOT": 47, "BRKT": 48, "MINUS": 49, "UNDERSCORE": 50, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 5: "XYCHART", 8: "CHART_ORIENTATION", 10: "title", 12: "X_AXIS", 14: "Y_AXIS", 16: "LINE", 18: "BAR", 19: "acc_title", 20: "acc_title_value", 21: "acc_descr", 22: "acc_descr_value", 23: "acc_descr_multiline_value", 24: "SQUARE_BRACES_START", 26: "SQUARE_BRACES_END", 27: "NUMBER_WITH_DECIMAL", 28: "COMMA", 31: "ARROW_DELIMITER", 34: "NEWLINE", 35: "SEMI", 36: "EOF", 38: "STR", 39: "MD_STR", 41: "AMP", 42: "NUM", 43: "ALPHA", 44: "PLUS", 45: "EQUALS", 46: "MULT", 47: "DOT", 48: "BRKT", 49: "MINUS", 50: "UNDERSCORE" }, + productions_: [0, [3, 2], [3, 3], [3, 2], [3, 1], [6, 1], [7, 0], [7, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 3], [9, 2], [9, 3], [9, 2], [9, 2], [9, 1], [17, 3], [25, 3], [25, 1], [13, 1], [13, 2], [13, 1], [29, 1], [29, 3], [30, 3], [32, 3], [32, 1], [15, 1], [15, 2], [15, 1], [33, 3], [4, 1], [4, 1], [4, 1], [11, 1], [11, 1], [11, 1], [37, 1], [37, 2], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1]], + performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 5: + yy.setOrientation($$[$0]); + break; + case 9: + yy.setDiagramTitle($$[$0].text.trim()); + break; + case 12: + yy.setLineData({ text: "", type: "text" }, $$[$0]); + break; + case 13: + yy.setLineData($$[$0 - 1], $$[$0]); + break; + case 14: + yy.setBarData({ text: "", type: "text" }, $$[$0]); + break; + case 15: + yy.setBarData($$[$0 - 1], $$[$0]); + break; + case 16: + this.$ = $$[$0].trim(); + yy.setAccTitle(this.$); + break; + case 17: + case 18: + this.$ = $$[$0].trim(); + yy.setAccDescription(this.$); + break; + case 19: + this.$ = $$[$0 - 1]; + break; + case 20: + this.$ = [Number($$[$0 - 2]), ...$$[$0]]; + break; + case 21: + this.$ = [Number($$[$0])]; + break; + case 22: + yy.setXAxisTitle($$[$0]); + break; + case 23: + yy.setXAxisTitle($$[$0 - 1]); + break; + case 24: + yy.setXAxisTitle({ type: "text", text: "" }); + break; + case 25: + yy.setXAxisBand($$[$0]); + break; + case 26: + yy.setXAxisRangeData(Number($$[$0 - 2]), Number($$[$0])); + break; + case 27: + this.$ = $$[$0 - 1]; + break; + case 28: + this.$ = [$$[$0 - 2], ...$$[$0]]; + break; + case 29: + this.$ = [$$[$0]]; + break; + case 30: + yy.setYAxisTitle($$[$0]); + break; + case 31: + yy.setYAxisTitle($$[$0 - 1]); + break; + case 32: + yy.setYAxisTitle({ type: "text", text: "" }); + break; + case 33: + yy.setYAxisRangeData(Number($$[$0 - 2]), Number($$[$0])); + break; + case 37: + this.$ = { text: $$[$0], type: "text" }; + break; + case 38: + this.$ = { text: $$[$0], type: "text" }; + break; + case 39: + this.$ = { text: $$[$0], type: "markdown" }; + break; + case 40: + this.$ = $$[$0]; + break; + case 41: + this.$ = $$[$0 - 1] + "" + $$[$0]; + break; + } + }, "anonymous"), + table: [o2($V0, $V1, { 3: 1, 4: 2, 7: 4, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [3] }, o2($V0, $V1, { 4: 2, 7: 4, 3: 8, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), o2($V0, $V1, { 4: 2, 7: 4, 6: 9, 3: 10, 5: $V2, 8: [1, 11], 34: $V3, 35: $V4, 36: $V5 }), { 1: [2, 4], 9: 12, 10: [1, 13], 12: [1, 14], 14: [1, 15], 16: [1, 16], 18: [1, 17], 19: [1, 18], 21: [1, 19], 23: [1, 20] }, o2($V6, [2, 34]), o2($V6, [2, 35]), o2($V6, [2, 36]), { 1: [2, 1] }, o2($V0, $V1, { 4: 2, 7: 4, 3: 21, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [2, 3] }, o2($V6, [2, 5]), o2($V0, [2, 7], { 4: 22, 34: $V3, 35: $V4, 36: $V5 }), { 11: 23, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 39, 13: 38, 24: $Vj, 27: $Vk, 29: 40, 30: 41, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 45, 15: 44, 27: $Vl, 33: 46, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 49, 17: 48, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 52, 17: 51, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 20: [1, 53] }, { 22: [1, 54] }, o2($Vn, [2, 18]), { 1: [2, 2] }, o2($Vn, [2, 8]), o2($Vn, [2, 9]), o2($Vo, [2, 37], { 40: 55, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }), o2($Vo, [2, 38]), o2($Vo, [2, 39]), o2($Vp, [2, 40]), o2($Vp, [2, 42]), o2($Vp, [2, 43]), o2($Vp, [2, 44]), o2($Vp, [2, 45]), o2($Vp, [2, 46]), o2($Vp, [2, 47]), o2($Vp, [2, 48]), o2($Vp, [2, 49]), o2($Vp, [2, 50]), o2($Vp, [2, 51]), o2($Vn, [2, 10]), o2($Vn, [2, 22], { 30: 41, 29: 56, 24: $Vj, 27: $Vk }), o2($Vn, [2, 24]), o2($Vn, [2, 25]), { 31: [1, 57] }, { 11: 59, 32: 58, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o2($Vn, [2, 11]), o2($Vn, [2, 30], { 33: 60, 27: $Vl }), o2($Vn, [2, 32]), { 31: [1, 61] }, o2($Vn, [2, 12]), { 17: 62, 24: $Vm }, { 25: 63, 27: $Vq }, o2($Vn, [2, 14]), { 17: 65, 24: $Vm }, o2($Vn, [2, 16]), o2($Vn, [2, 17]), o2($Vp, [2, 41]), o2($Vn, [2, 23]), { 27: [1, 66] }, { 26: [1, 67] }, { 26: [2, 29], 28: [1, 68] }, o2($Vn, [2, 31]), { 27: [1, 69] }, o2($Vn, [2, 13]), { 26: [1, 70] }, { 26: [2, 21], 28: [1, 71] }, o2($Vn, [2, 15]), o2($Vn, [2, 26]), o2($Vn, [2, 27]), { 11: 59, 32: 72, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o2($Vn, [2, 33]), o2($Vn, [2, 19]), { 25: 73, 27: $Vq }, { 26: [2, 28] }, { 26: [2, 20] }], + defaultActions: { 8: [2, 1], 10: [2, 3], 21: [2, 2], 72: [2, 28], 73: [2, 20] }, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); + } else { + var error3 = new Error(str2); + error3.hash = hash; + throw error3; + } + }, "parseError"), + parse: /* @__PURE__ */ __name(function parse7(input) { + var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k2 in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { + sharedState.yy[k2] = this.yy[k2]; + } + } + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; + } + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n2) { + stack.length = stack.length - 2 * n2; + vstack.length = vstack.length - n2; + lstack.length = lstack.length - n2; + } + __name(popStack, "popStack"); + function lex() { + var token2; + token2 = tstack.pop() || lexer2.lex() || EOF2; + if (typeof token2 !== "number") { + if (token2 instanceof Array) { + tstack = token2; + token2 = tstack.pop(); + } + token2 = self2.symbols_[token2] || token2; + } + return token2; + } + __name(lex, "lex"); + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; + while (true) { + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); + } + action = table[state3] && table[state3][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p3 in table[state3]) { + if (this.terminals_[p3] && p3 > TERROR) { + expected.push("'" + this.terminals_[p3] + "'"); + } + } + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + } else { + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + } + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + if (recovering > 0) { + recovering--; + } + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; + } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r2 = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r2 !== "undefined") { + return r2; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState2); + break; + case 3: + return true; + } + } + return true; + }, "parse") + }; + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { + EOF: 1, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str2, hash); + } else { + throw new Error(str2); + } + }, "parseError"), + // resets the lexer, sets new input + setInput: /* @__PURE__ */ __name(function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0, 0]; + } + this.offset = 0; + return this; + }, "setInput"), + // consumes and returns one char from the input + input: /* @__PURE__ */ __name(function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } + this._input = this._input.slice(1); + return ch; + }, "input"), + // unshifts one char (or a string) into the input + unput: /* @__PURE__ */ __name(function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r2 = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + }; + if (this.options.ranges) { + this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, "unput"), + // When called from action, caches matched text and appends it on next action + more: /* @__PURE__ */ __name(function() { + this._more = true; + return this; + }, "more"), + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: /* @__PURE__ */ __name(function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + return this; + }, "reject"), + // retain first n characters of the match + less: /* @__PURE__ */ __name(function(n2) { + this.unput(this.match.slice(n2)); + }, "less"), + // displays already matched input, i.e. for error messages + pastInput: /* @__PURE__ */ __name(function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, "pastInput"), + // displays upcoming input, i.e. for error messages + upcomingInput: /* @__PURE__ */ __name(function() { + var next3 = this.match; + if (next3.length < 20) { + next3 += this._input.substr(0, 20 - next3.length); + } + return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, "upcomingInput"), + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: /* @__PURE__ */ __name(function() { + var pre = this.pastInput(); + var c3 = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c3 + "^"; + }, "showPosition"), + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { + var token2, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); + } + } + lines = match2[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length + }; + this.yytext += match2[0]; + this.match += match2[0]; + this.matches = match2; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match2[0].length); + this.matched += match2[0]; + token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token2) { + return token2; + } else if (this._backtrack) { + for (var k2 in backup) { + this[k2] = backup[k2]; + } + return false; + } + return false; + }, "test_match"), + // return next match in input + next: /* @__PURE__ */ __name(function() { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + var token2, match2, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i2 = 0; i2 < rules.length; i2++) { + tempMatch = this._input.match(this.rules[rules[i2]]); + if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { + match2 = tempMatch; + index = i2; + if (this.options.backtrack_lexer) { + token2 = this.test_match(tempMatch, rules[i2]); + if (token2 !== false) { + return token2; + } else if (this._backtrack) { + match2 = false; + continue; + } else { + return false; + } + } else if (!this.options.flex) { + break; + } + } + } + if (match2) { + token2 = this.test_match(match2, rules[index]); + if (token2 !== false) { + return token2; + } + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, "next"), + // return next match that has a token + lex: /* @__PURE__ */ __name(function lex() { + var r2 = this.next(); + if (r2) { + return r2; + } else { + return this.lex(); + } + }, "lex"), + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: /* @__PURE__ */ __name(function begin(condition) { + this.conditionStack.push(condition); + }, "begin"), + // pop the previously active lexer condition state off the condition stack + popState: /* @__PURE__ */ __name(function popState() { + var n2 = this.conditionStack.length - 1; + if (n2 > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, "popState"), + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: /* @__PURE__ */ __name(function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, "_currentRules"), + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: /* @__PURE__ */ __name(function topState(n2) { + n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); + if (n2 >= 0) { + return this.conditionStack[n2]; + } else { + return "INITIAL"; + } + }, "topState"), + // alias for begin(condition) + pushState: /* @__PURE__ */ __name(function pushState(condition) { + this.begin(condition); + }, "pushState"), + // return the number of states currently on the stack + stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { + return this.conditionStack.length; + }, "stateStackSize"), + options: { "case-insensitive": true }, + performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + var YYSTATE = YY_START; + switch ($avoiding_name_collisions) { + case 0: + break; + case 1: + break; + case 2: + this.popState(); + return 34; + break; + case 3: + this.popState(); + return 34; + break; + case 4: + return 34; + break; + case 5: + break; + case 6: + return 10; + break; + case 7: + this.pushState("acc_title"); + return 19; + break; + case 8: + this.popState(); + return "acc_title_value"; + break; + case 9: + this.pushState("acc_descr"); + return 21; + break; + case 10: + this.popState(); + return "acc_descr_value"; + break; + case 11: + this.pushState("acc_descr_multiline"); + break; + case 12: + this.popState(); + break; + case 13: + return "acc_descr_multiline_value"; + break; + case 14: + return 5; + break; + case 15: + return 5; + break; + case 16: + return 8; + break; + case 17: + this.pushState("axis_data"); + return "X_AXIS"; + break; + case 18: + this.pushState("axis_data"); + return "Y_AXIS"; + break; + case 19: + this.pushState("axis_band_data"); + return 24; + break; + case 20: + return 31; + break; + case 21: + this.pushState("data"); + return 16; + break; + case 22: + this.pushState("data"); + return 18; + break; + case 23: + this.pushState("data_inner"); + return 24; + break; + case 24: + return 27; + break; + case 25: + this.popState(); + return 26; + break; + case 26: + this.popState(); + break; + case 27: + this.pushState("string"); + break; + case 28: + this.popState(); + break; + case 29: + return "STR"; + break; + case 30: + return 24; + break; + case 31: + return 26; + break; + case 32: + return 43; + break; + case 33: + return "COLON"; + break; + case 34: + return 44; + break; + case 35: + return 28; + break; + case 36: + return 45; + break; + case 37: + return 46; + break; + case 38: + return 48; + break; + case 39: + return 50; + break; + case 40: + return 47; + break; + case 41: + return 41; + break; + case 42: + return 49; + break; + case 43: + return 42; + break; + case 44: + break; + case 45: + return 35; + break; + case 46: + return 36; + break; + } + }, "anonymous"), + rules: [/^(?:%%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:(\r?\n))/i, /^(?:(\r?\n))/i, /^(?:[\n\r]+)/i, /^(?:%%[^\n]*)/i, /^(?:title\b)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:\{)/i, /^(?:[^\}]*)/i, /^(?:xychart-beta\b)/i, /^(?:xychart\b)/i, /^(?:(?:vertical|horizontal))/i, /^(?:x-axis\b)/i, /^(?:y-axis\b)/i, /^(?:\[)/i, /^(?:-->)/i, /^(?:line\b)/i, /^(?:bar\b)/i, /^(?:\[)/i, /^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i, /^(?:\])/i, /^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:\[)/i, /^(?:\])/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:\*)/i, /^(?:#)/i, /^(?:[\_])/i, /^(?:\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\s+)/i, /^(?:;)/i, /^(?:$)/i], + conditions: { "data_inner": { "rules": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 21, 22, 24, 25, 26, 27, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "inclusive": true }, "data": { "rules": [0, 1, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 21, 22, 23, 26, 27, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "inclusive": true }, "axis_band_data": { "rules": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 21, 22, 25, 26, 27, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "inclusive": true }, "axis_data": { "rules": [0, 1, 2, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 26, 27, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "inclusive": true }, "acc_descr_multiline": { "rules": [12, 13], "inclusive": false }, "acc_descr": { "rules": [10], "inclusive": false }, "acc_title": { "rules": [8], "inclusive": false }, "title": { "rules": [], "inclusive": false }, "md_string": { "rules": [], "inclusive": false }, "string": { "rules": [28, 29], "inclusive": false }, "INITIAL": { "rules": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 21, 22, 26, 27, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "inclusive": true } } + }; + return lexer2; + })(); + parser24.lexer = lexer; + function Parser3() { + this.yy = {}; + } + __name(Parser3, "Parser"); + Parser3.prototype = parser24; + parser24.Parser = Parser3; + return new Parser3(); + })(); + parser9.parser = parser9; + xychart_default = parser9; + } + }); + + // src/diagrams/xychart/chartBuilder/interfaces.ts + function isBarPlot(data5) { + return data5.type === "bar"; + } + function isBandAxisData(data5) { + return data5.type === "band"; + } + function isLinearAxisData(data5) { + return data5.type === "linear"; + } + var init_interfaces = __esm({ + "src/diagrams/xychart/chartBuilder/interfaces.ts"() { + "use strict"; + __name(isBarPlot, "isBarPlot"); + __name(isBandAxisData, "isBandAxisData"); + __name(isLinearAxisData, "isLinearAxisData"); + } + }); + + // src/diagrams/xychart/chartBuilder/textDimensionCalculator.ts + var TextDimensionCalculatorWithFont; + var init_textDimensionCalculator = __esm({ + "src/diagrams/xychart/chartBuilder/textDimensionCalculator.ts"() { + "use strict"; + init_createText(); + TextDimensionCalculatorWithFont = class { + constructor(parentGroup) { + this.parentGroup = parentGroup; + } + static { + __name(this, "TextDimensionCalculatorWithFont"); + } + getMaxDimension(texts, fontSize) { + if (!this.parentGroup) { + return { + width: texts.reduce((acc, cur) => Math.max(cur.length, acc), 0) * fontSize, + height: fontSize + }; + } + const dimension = { + width: 0, + height: 0 + }; + const elem = this.parentGroup.append("g").attr("visibility", "hidden").attr("font-size", fontSize); + for (const t4 of texts) { + const bbox = computeDimensionOfText(elem, 1, t4); + const width3 = bbox ? bbox.width : t4.length * fontSize; + const height2 = bbox ? bbox.height : fontSize; + dimension.width = Math.max(dimension.width, width3); + dimension.height = Math.max(dimension.height, height2); + } + elem.remove(); + return dimension; + } + }; + } + }); + + // src/diagrams/xychart/chartBuilder/components/axis/baseAxis.ts + var BAR_WIDTH_TO_TICK_WIDTH_RATIO, MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL, BaseAxis; + var init_baseAxis = __esm({ + "src/diagrams/xychart/chartBuilder/components/axis/baseAxis.ts"() { + "use strict"; + BAR_WIDTH_TO_TICK_WIDTH_RATIO = 0.7; + MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL = 0.2; + BaseAxis = class { + constructor(axisConfig, title2, textDimensionCalculator, axisThemeConfig) { + this.axisConfig = axisConfig; + this.title = title2; + this.textDimensionCalculator = textDimensionCalculator; + this.axisThemeConfig = axisThemeConfig; + this.boundingRect = { x: 0, y: 0, width: 0, height: 0 }; + this.axisPosition = "left"; + this.showTitle = false; + this.showLabel = false; + this.showTick = false; + this.showAxisLine = false; + this.outerPadding = 0; + this.titleTextHeight = 0; + this.labelTextHeight = 0; + this.range = [0, 10]; + this.boundingRect = { x: 0, y: 0, width: 0, height: 0 }; + this.axisPosition = "left"; + } + static { + __name(this, "BaseAxis"); + } + setRange(range3) { + this.range = range3; + if (this.axisPosition === "left" || this.axisPosition === "right") { + this.boundingRect.height = range3[1] - range3[0]; + } else { + this.boundingRect.width = range3[1] - range3[0]; + } + this.recalculateScale(); + } + getRange() { + return [this.range[0] + this.outerPadding, this.range[1] - this.outerPadding]; + } + setAxisPosition(axisPosition) { + this.axisPosition = axisPosition; + this.setRange(this.range); + } + getTickDistance() { + const range3 = this.getRange(); + return Math.abs(range3[0] - range3[1]) / this.getTickValues().length; + } + getAxisOuterPadding() { + return this.outerPadding; + } + getLabelDimension() { + return this.textDimensionCalculator.getMaxDimension( + this.getTickValues().map((tick) => tick.toString()), + this.axisConfig.labelFontSize + ); + } + recalculateOuterPaddingToDrawBar() { + if (BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() > this.outerPadding * 2) { + this.outerPadding = Math.floor(BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() / 2); + } + this.recalculateScale(); + } + calculateSpaceIfDrawnHorizontally(availableSpace) { + let availableHeight = availableSpace.height; + if (this.axisConfig.showAxisLine && availableHeight > this.axisConfig.axisLineWidth) { + availableHeight -= this.axisConfig.axisLineWidth; + this.showAxisLine = true; + } + if (this.axisConfig.showLabel) { + const spaceRequired = this.getLabelDimension(); + const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.width; + this.outerPadding = Math.min(spaceRequired.width / 2, maxPadding); + const heightRequired = spaceRequired.height + this.axisConfig.labelPadding * 2; + this.labelTextHeight = spaceRequired.height; + if (heightRequired <= availableHeight) { + availableHeight -= heightRequired; + this.showLabel = true; + } + } + if (this.axisConfig.showTick && availableHeight >= this.axisConfig.tickLength) { + this.showTick = true; + availableHeight -= this.axisConfig.tickLength; + } + if (this.axisConfig.showTitle && this.title) { + const spaceRequired = this.textDimensionCalculator.getMaxDimension( + [this.title], + this.axisConfig.titleFontSize + ); + const heightRequired = spaceRequired.height + this.axisConfig.titlePadding * 2; + this.titleTextHeight = spaceRequired.height; + if (heightRequired <= availableHeight) { + availableHeight -= heightRequired; + this.showTitle = true; + } + } + this.boundingRect.width = availableSpace.width; + this.boundingRect.height = availableSpace.height - availableHeight; + } + calculateSpaceIfDrawnVertical(availableSpace) { + let availableWidth = availableSpace.width; + if (this.axisConfig.showAxisLine && availableWidth > this.axisConfig.axisLineWidth) { + availableWidth -= this.axisConfig.axisLineWidth; + this.showAxisLine = true; + } + if (this.axisConfig.showLabel) { + const spaceRequired = this.getLabelDimension(); + const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.height; + this.outerPadding = Math.min(spaceRequired.height / 2, maxPadding); + const widthRequired = spaceRequired.width + this.axisConfig.labelPadding * 2; + if (widthRequired <= availableWidth) { + availableWidth -= widthRequired; + this.showLabel = true; + } + } + if (this.axisConfig.showTick && availableWidth >= this.axisConfig.tickLength) { + this.showTick = true; + availableWidth -= this.axisConfig.tickLength; + } + if (this.axisConfig.showTitle && this.title) { + const spaceRequired = this.textDimensionCalculator.getMaxDimension( + [this.title], + this.axisConfig.titleFontSize + ); + const widthRequired = spaceRequired.height + this.axisConfig.titlePadding * 2; + this.titleTextHeight = spaceRequired.height; + if (widthRequired <= availableWidth) { + availableWidth -= widthRequired; + this.showTitle = true; + } + } + this.boundingRect.width = availableSpace.width - availableWidth; + this.boundingRect.height = availableSpace.height; + } + calculateSpace(availableSpace) { + if (this.axisPosition === "left" || this.axisPosition === "right") { + this.calculateSpaceIfDrawnVertical(availableSpace); + } else { + this.calculateSpaceIfDrawnHorizontally(availableSpace); + } + this.recalculateScale(); + return { + width: this.boundingRect.width, + height: this.boundingRect.height + }; + } + setBoundingBoxXY(point8) { + this.boundingRect.x = point8.x; + this.boundingRect.y = point8.y; + } + getDrawableElementsForLeftAxis() { + const drawableElement = []; + if (this.showAxisLine) { + const x5 = this.boundingRect.x + this.boundingRect.width - this.axisConfig.axisLineWidth / 2; + drawableElement.push({ + type: "path", + groupTexts: ["left-axis", "axisl-line"], + data: [ + { + path: `M ${x5},${this.boundingRect.y} L ${x5},${this.boundingRect.y + this.boundingRect.height} `, + strokeFill: this.axisThemeConfig.axisLineColor, + strokeWidth: this.axisConfig.axisLineWidth + } + ] + }); + } + if (this.showLabel) { + drawableElement.push({ + type: "text", + groupTexts: ["left-axis", "label"], + data: this.getTickValues().map((tick) => ({ + text: tick.toString(), + x: this.boundingRect.x + this.boundingRect.width - (this.showLabel ? this.axisConfig.labelPadding : 0) - (this.showTick ? this.axisConfig.tickLength : 0) - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0), + y: this.getScaleValue(tick), + fill: this.axisThemeConfig.labelColor, + fontSize: this.axisConfig.labelFontSize, + rotation: 0, + verticalPos: "middle", + horizontalPos: "right" + })) + }); + } + if (this.showTick) { + const x5 = this.boundingRect.x + this.boundingRect.width - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0); + drawableElement.push({ + type: "path", + groupTexts: ["left-axis", "ticks"], + data: this.getTickValues().map((tick) => ({ + path: `M ${x5},${this.getScaleValue(tick)} L ${x5 - this.axisConfig.tickLength},${this.getScaleValue(tick)}`, + strokeFill: this.axisThemeConfig.tickColor, + strokeWidth: this.axisConfig.tickWidth + })) + }); + } + if (this.showTitle) { + drawableElement.push({ + type: "text", + groupTexts: ["left-axis", "title"], + data: [ + { + text: this.title, + x: this.boundingRect.x + this.axisConfig.titlePadding, + y: this.boundingRect.y + this.boundingRect.height / 2, + fill: this.axisThemeConfig.titleColor, + fontSize: this.axisConfig.titleFontSize, + rotation: 270, + verticalPos: "top", + horizontalPos: "center" + } + ] + }); + } + return drawableElement; + } + getDrawableElementsForBottomAxis() { + const drawableElement = []; + if (this.showAxisLine) { + const y6 = this.boundingRect.y + this.axisConfig.axisLineWidth / 2; + drawableElement.push({ + type: "path", + groupTexts: ["bottom-axis", "axis-line"], + data: [ + { + path: `M ${this.boundingRect.x},${y6} L ${this.boundingRect.x + this.boundingRect.width},${y6}`, + strokeFill: this.axisThemeConfig.axisLineColor, + strokeWidth: this.axisConfig.axisLineWidth + } + ] + }); + } + if (this.showLabel) { + drawableElement.push({ + type: "text", + groupTexts: ["bottom-axis", "label"], + data: this.getTickValues().map((tick) => ({ + text: tick.toString(), + x: this.getScaleValue(tick), + y: this.boundingRect.y + this.axisConfig.labelPadding + (this.showTick ? this.axisConfig.tickLength : 0) + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0), + fill: this.axisThemeConfig.labelColor, + fontSize: this.axisConfig.labelFontSize, + rotation: 0, + verticalPos: "top", + horizontalPos: "center" + })) + }); + } + if (this.showTick) { + const y6 = this.boundingRect.y + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0); + drawableElement.push({ + type: "path", + groupTexts: ["bottom-axis", "ticks"], + data: this.getTickValues().map((tick) => ({ + path: `M ${this.getScaleValue(tick)},${y6} L ${this.getScaleValue(tick)},${y6 + this.axisConfig.tickLength}`, + strokeFill: this.axisThemeConfig.tickColor, + strokeWidth: this.axisConfig.tickWidth + })) + }); + } + if (this.showTitle) { + drawableElement.push({ + type: "text", + groupTexts: ["bottom-axis", "title"], + data: [ + { + text: this.title, + x: this.range[0] + (this.range[1] - this.range[0]) / 2, + y: this.boundingRect.y + this.boundingRect.height - this.axisConfig.titlePadding - this.titleTextHeight, + fill: this.axisThemeConfig.titleColor, + fontSize: this.axisConfig.titleFontSize, + rotation: 0, + verticalPos: "top", + horizontalPos: "center" + } + ] + }); + } + return drawableElement; + } + getDrawableElementsForTopAxis() { + const drawableElement = []; + if (this.showAxisLine) { + const y6 = this.boundingRect.y + this.boundingRect.height - this.axisConfig.axisLineWidth / 2; + drawableElement.push({ + type: "path", + groupTexts: ["top-axis", "axis-line"], + data: [ + { + path: `M ${this.boundingRect.x},${y6} L ${this.boundingRect.x + this.boundingRect.width},${y6}`, + strokeFill: this.axisThemeConfig.axisLineColor, + strokeWidth: this.axisConfig.axisLineWidth + } + ] + }); + } + if (this.showLabel) { + drawableElement.push({ + type: "text", + groupTexts: ["top-axis", "label"], + data: this.getTickValues().map((tick) => ({ + text: tick.toString(), + x: this.getScaleValue(tick), + y: this.boundingRect.y + (this.showTitle ? this.titleTextHeight + this.axisConfig.titlePadding * 2 : 0) + this.axisConfig.labelPadding, + fill: this.axisThemeConfig.labelColor, + fontSize: this.axisConfig.labelFontSize, + rotation: 0, + verticalPos: "top", + horizontalPos: "center" + })) + }); + } + if (this.showTick) { + const y6 = this.boundingRect.y; + drawableElement.push({ + type: "path", + groupTexts: ["top-axis", "ticks"], + data: this.getTickValues().map((tick) => ({ + path: `M ${this.getScaleValue(tick)},${y6 + this.boundingRect.height - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)} L ${this.getScaleValue(tick)},${y6 + this.boundingRect.height - this.axisConfig.tickLength - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)}`, + strokeFill: this.axisThemeConfig.tickColor, + strokeWidth: this.axisConfig.tickWidth + })) + }); + } + if (this.showTitle) { + drawableElement.push({ + type: "text", + groupTexts: ["top-axis", "title"], + data: [ + { + text: this.title, + x: this.boundingRect.x + this.boundingRect.width / 2, + y: this.boundingRect.y + this.axisConfig.titlePadding, + fill: this.axisThemeConfig.titleColor, + fontSize: this.axisConfig.titleFontSize, + rotation: 0, + verticalPos: "top", + horizontalPos: "center" + } + ] + }); + } + return drawableElement; + } + getDrawableElements() { + if (this.axisPosition === "left") { + return this.getDrawableElementsForLeftAxis(); + } + if (this.axisPosition === "right") { + throw Error("Drawing of right axis is not implemented"); + } + if (this.axisPosition === "bottom") { + return this.getDrawableElementsForBottomAxis(); + } + if (this.axisPosition === "top") { + return this.getDrawableElementsForTopAxis(); + } + return []; + } + }; + } + }); + + // src/diagrams/xychart/chartBuilder/components/axis/bandAxis.ts + var BandAxis; + var init_bandAxis = __esm({ + "src/diagrams/xychart/chartBuilder/components/axis/bandAxis.ts"() { + "use strict"; + init_src32(); + init_logger(); + init_baseAxis(); + BandAxis = class extends BaseAxis { + static { + __name(this, "BandAxis"); + } + constructor(axisConfig, axisThemeConfig, categories, title2, textDimensionCalculator) { + super(axisConfig, title2, textDimensionCalculator, axisThemeConfig); + this.categories = categories; + this.scale = band().domain(this.categories).range(this.getRange()); + } + setRange(range3) { + super.setRange(range3); + } + recalculateScale() { + this.scale = band().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(0.5); + log.trace("BandAxis axis final categories, range: ", this.categories, this.getRange()); + } + getTickValues() { + return this.categories; + } + getScaleValue(value2) { + return this.scale(value2) ?? this.getRange()[0]; + } + }; + } + }); + + // src/diagrams/xychart/chartBuilder/components/axis/linearAxis.ts + var LinearAxis; + var init_linearAxis = __esm({ + "src/diagrams/xychart/chartBuilder/components/axis/linearAxis.ts"() { + "use strict"; + init_src32(); + init_baseAxis(); + LinearAxis = class extends BaseAxis { + static { + __name(this, "LinearAxis"); + } + constructor(axisConfig, axisThemeConfig, domain, title2, textDimensionCalculator) { + super(axisConfig, title2, textDimensionCalculator, axisThemeConfig); + this.domain = domain; + this.scale = linear2().domain(this.domain).range(this.getRange()); + } + getTickValues() { + return this.scale.ticks(); + } + recalculateScale() { + const domain = [...this.domain]; + if (this.axisPosition === "left") { + domain.reverse(); + } + this.scale = linear2().domain(domain).range(this.getRange()); + } + getScaleValue(value2) { + return this.scale(value2); + } + }; + } + }); + + // src/diagrams/xychart/chartBuilder/components/axis/index.ts + function getAxis(data5, axisConfig, axisThemeConfig, tmpSVGGroup2) { + const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2); + if (isBandAxisData(data5)) { + return new BandAxis( + axisConfig, + axisThemeConfig, + data5.categories, + data5.title, + textDimensionCalculator + ); + } + return new LinearAxis( + axisConfig, + axisThemeConfig, + [data5.min, data5.max], + data5.title, + textDimensionCalculator + ); + } + var init_axis2 = __esm({ + "src/diagrams/xychart/chartBuilder/components/axis/index.ts"() { + "use strict"; + init_interfaces(); + init_textDimensionCalculator(); + init_bandAxis(); + init_linearAxis(); + __name(getAxis, "getAxis"); + } + }); + + // src/diagrams/xychart/chartBuilder/components/chartTitle.ts + function getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) { + const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2); + return new ChartTitle(textDimensionCalculator, chartConfig, chartData, chartThemeConfig); + } + var ChartTitle; + var init_chartTitle = __esm({ + "src/diagrams/xychart/chartBuilder/components/chartTitle.ts"() { + "use strict"; + init_textDimensionCalculator(); + ChartTitle = class { + constructor(textDimensionCalculator, chartConfig, chartData, chartThemeConfig) { + this.textDimensionCalculator = textDimensionCalculator; + this.chartConfig = chartConfig; + this.chartData = chartData; + this.chartThemeConfig = chartThemeConfig; + this.boundingRect = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + this.showChartTitle = false; + } + static { + __name(this, "ChartTitle"); + } + setBoundingBoxXY(point8) { + this.boundingRect.x = point8.x; + this.boundingRect.y = point8.y; + } + calculateSpace(availableSpace) { + const titleDimension = this.textDimensionCalculator.getMaxDimension( + [this.chartData.title], + this.chartConfig.titleFontSize + ); + const widthRequired = Math.max(titleDimension.width, availableSpace.width); + const heightRequired = titleDimension.height + 2 * this.chartConfig.titlePadding; + if (titleDimension.width <= widthRequired && titleDimension.height <= heightRequired && this.chartConfig.showTitle && this.chartData.title) { + this.boundingRect.width = widthRequired; + this.boundingRect.height = heightRequired; + this.showChartTitle = true; + } + return { + width: this.boundingRect.width, + height: this.boundingRect.height + }; + } + getDrawableElements() { + const drawableElem = []; + if (this.showChartTitle) { + drawableElem.push({ + groupTexts: ["chart-title"], + type: "text", + data: [ + { + fontSize: this.chartConfig.titleFontSize, + text: this.chartData.title, + verticalPos: "middle", + horizontalPos: "center", + x: this.boundingRect.x + this.boundingRect.width / 2, + y: this.boundingRect.y + this.boundingRect.height / 2, + fill: this.chartThemeConfig.titleColor, + rotation: 0 + } + ] + }); + } + return drawableElem; + } + }; + __name(getChartTitleComponent, "getChartTitleComponent"); + } + }); + + // src/diagrams/xychart/chartBuilder/components/plot/linePlot.ts + var LinePlot; + var init_linePlot = __esm({ + "src/diagrams/xychart/chartBuilder/components/plot/linePlot.ts"() { + "use strict"; + init_src32(); + LinePlot = class { + constructor(plotData, xAxis, yAxis, orientation, plotIndex2) { + this.plotData = plotData; + this.xAxis = xAxis; + this.yAxis = yAxis; + this.orientation = orientation; + this.plotIndex = plotIndex2; + } + static { + __name(this, "LinePlot"); + } + getDrawableElement() { + const finalData = this.plotData.data.map((d3) => [ + this.xAxis.getScaleValue(d3[0]), + this.yAxis.getScaleValue(d3[1]) + ]); + let path4; + if (this.orientation === "horizontal") { + path4 = line_default().y((d3) => d3[0]).x((d3) => d3[1])(finalData); + } else { + path4 = line_default().x((d3) => d3[0]).y((d3) => d3[1])(finalData); + } + if (!path4) { + return []; + } + return [ + { + groupTexts: ["plot", `line-plot-${this.plotIndex}`], + type: "path", + data: [ + { + path: path4, + strokeFill: this.plotData.strokeFill, + strokeWidth: this.plotData.strokeWidth + } + ] + } + ]; + } + }; + } + }); + + // src/diagrams/xychart/chartBuilder/components/plot/barPlot.ts + var BarPlot; + var init_barPlot = __esm({ + "src/diagrams/xychart/chartBuilder/components/plot/barPlot.ts"() { + "use strict"; + BarPlot = class { + constructor(barData, boundingRect, xAxis, yAxis, orientation, plotIndex2) { + this.barData = barData; + this.boundingRect = boundingRect; + this.xAxis = xAxis; + this.yAxis = yAxis; + this.orientation = orientation; + this.plotIndex = plotIndex2; + } + static { + __name(this, "BarPlot"); + } + getDrawableElement() { + const finalData = this.barData.data.map((d3) => [ + this.xAxis.getScaleValue(d3[0]), + this.yAxis.getScaleValue(d3[1]) + ]); + const barPaddingPercent = 0.05; + const barWidth = Math.min(this.xAxis.getAxisOuterPadding() * 2, this.xAxis.getTickDistance()) * (1 - barPaddingPercent); + const barWidthHalf = barWidth / 2; + if (this.orientation === "horizontal") { + return [ + { + groupTexts: ["plot", `bar-plot-${this.plotIndex}`], + type: "rect", + data: finalData.map((data5) => ({ + x: this.boundingRect.x, + y: data5[0] - barWidthHalf, + height: barWidth, + width: data5[1] - this.boundingRect.x, + fill: this.barData.fill, + strokeWidth: 0, + strokeFill: this.barData.fill + })) + } + ]; + } + return [ + { + groupTexts: ["plot", `bar-plot-${this.plotIndex}`], + type: "rect", + data: finalData.map((data5) => ({ + x: data5[0] - barWidthHalf, + y: data5[1], + width: barWidth, + height: this.boundingRect.y + this.boundingRect.height - data5[1], + fill: this.barData.fill, + strokeWidth: 0, + strokeFill: this.barData.fill + })) + } + ]; + } + }; + } + }); + + // src/diagrams/xychart/chartBuilder/components/plot/index.ts + function getPlotComponent(chartConfig, chartData, chartThemeConfig) { + return new BasePlot(chartConfig, chartData, chartThemeConfig); + } + var BasePlot; + var init_plot = __esm({ + "src/diagrams/xychart/chartBuilder/components/plot/index.ts"() { + "use strict"; + init_linePlot(); + init_barPlot(); + BasePlot = class { + constructor(chartConfig, chartData, chartThemeConfig) { + this.chartConfig = chartConfig; + this.chartData = chartData; + this.chartThemeConfig = chartThemeConfig; + this.boundingRect = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + } + static { + __name(this, "BasePlot"); + } + setAxes(xAxis, yAxis) { + this.xAxis = xAxis; + this.yAxis = yAxis; + } + setBoundingBoxXY(point8) { + this.boundingRect.x = point8.x; + this.boundingRect.y = point8.y; + } + calculateSpace(availableSpace) { + this.boundingRect.width = availableSpace.width; + this.boundingRect.height = availableSpace.height; + return { + width: this.boundingRect.width, + height: this.boundingRect.height + }; + } + getDrawableElements() { + if (!(this.xAxis && this.yAxis)) { + throw Error("Axes must be passed to render Plots"); + } + const drawableElem = []; + for (const [i2, plot] of this.chartData.plots.entries()) { + switch (plot.type) { + case "line": + { + const linePlot = new LinePlot( + plot, + this.xAxis, + this.yAxis, + this.chartConfig.chartOrientation, + i2 + ); + drawableElem.push(...linePlot.getDrawableElement()); + } + break; + case "bar": + { + const barPlot = new BarPlot( + plot, + this.boundingRect, + this.xAxis, + this.yAxis, + this.chartConfig.chartOrientation, + i2 + ); + drawableElem.push(...barPlot.getDrawableElement()); + } + break; + } + } + return drawableElem; + } + }; + __name(getPlotComponent, "getPlotComponent"); + } + }); + + // src/diagrams/xychart/chartBuilder/orchestrator.ts + var Orchestrator; + var init_orchestrator = __esm({ + "src/diagrams/xychart/chartBuilder/orchestrator.ts"() { + "use strict"; + init_axis2(); + init_chartTitle(); + init_plot(); + init_interfaces(); + Orchestrator = class { + constructor(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) { + this.chartConfig = chartConfig; + this.chartData = chartData; + this.componentStore = { + title: getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2), + plot: getPlotComponent(chartConfig, chartData, chartThemeConfig), + xAxis: getAxis( + chartData.xAxis, + chartConfig.xAxis, + { + titleColor: chartThemeConfig.xAxisTitleColor, + labelColor: chartThemeConfig.xAxisLabelColor, + tickColor: chartThemeConfig.xAxisTickColor, + axisLineColor: chartThemeConfig.xAxisLineColor + }, + tmpSVGGroup2 + ), + yAxis: getAxis( + chartData.yAxis, + chartConfig.yAxis, + { + titleColor: chartThemeConfig.yAxisTitleColor, + labelColor: chartThemeConfig.yAxisLabelColor, + tickColor: chartThemeConfig.yAxisTickColor, + axisLineColor: chartThemeConfig.yAxisLineColor + }, + tmpSVGGroup2 + ) + }; + } + static { + __name(this, "Orchestrator"); + } + calculateVerticalSpace() { + let availableWidth = this.chartConfig.width; + let availableHeight = this.chartConfig.height; + let plotX = 0; + let plotY = 0; + let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100); + let chartHeight = Math.floor( + availableHeight * this.chartConfig.plotReservedSpacePercent / 100 + ); + let spaceUsed = this.componentStore.plot.calculateSpace({ + width: chartWidth, + height: chartHeight + }); + availableWidth -= spaceUsed.width; + availableHeight -= spaceUsed.height; + spaceUsed = this.componentStore.title.calculateSpace({ + width: this.chartConfig.width, + height: availableHeight + }); + plotY = spaceUsed.height; + availableHeight -= spaceUsed.height; + this.componentStore.xAxis.setAxisPosition("bottom"); + spaceUsed = this.componentStore.xAxis.calculateSpace({ + width: availableWidth, + height: availableHeight + }); + availableHeight -= spaceUsed.height; + this.componentStore.yAxis.setAxisPosition("left"); + spaceUsed = this.componentStore.yAxis.calculateSpace({ + width: availableWidth, + height: availableHeight + }); + plotX = spaceUsed.width; + availableWidth -= spaceUsed.width; + if (availableWidth > 0) { + chartWidth += availableWidth; + availableWidth = 0; + } + if (availableHeight > 0) { + chartHeight += availableHeight; + availableHeight = 0; + } + this.componentStore.plot.calculateSpace({ + width: chartWidth, + height: chartHeight + }); + this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY }); + this.componentStore.xAxis.setRange([plotX, plotX + chartWidth]); + this.componentStore.xAxis.setBoundingBoxXY({ x: plotX, y: plotY + chartHeight }); + this.componentStore.yAxis.setRange([plotY, plotY + chartHeight]); + this.componentStore.yAxis.setBoundingBoxXY({ x: 0, y: plotY }); + if (this.chartData.plots.some((p3) => isBarPlot(p3))) { + this.componentStore.xAxis.recalculateOuterPaddingToDrawBar(); + } + } + calculateHorizontalSpace() { + let availableWidth = this.chartConfig.width; + let availableHeight = this.chartConfig.height; + let titleYEnd = 0; + let plotX = 0; + let plotY = 0; + let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100); + let chartHeight = Math.floor( + availableHeight * this.chartConfig.plotReservedSpacePercent / 100 + ); + let spaceUsed = this.componentStore.plot.calculateSpace({ + width: chartWidth, + height: chartHeight + }); + availableWidth -= spaceUsed.width; + availableHeight -= spaceUsed.height; + spaceUsed = this.componentStore.title.calculateSpace({ + width: this.chartConfig.width, + height: availableHeight + }); + titleYEnd = spaceUsed.height; + availableHeight -= spaceUsed.height; + this.componentStore.xAxis.setAxisPosition("left"); + spaceUsed = this.componentStore.xAxis.calculateSpace({ + width: availableWidth, + height: availableHeight + }); + availableWidth -= spaceUsed.width; + plotX = spaceUsed.width; + this.componentStore.yAxis.setAxisPosition("top"); + spaceUsed = this.componentStore.yAxis.calculateSpace({ + width: availableWidth, + height: availableHeight + }); + availableHeight -= spaceUsed.height; + plotY = titleYEnd + spaceUsed.height; + if (availableWidth > 0) { + chartWidth += availableWidth; + availableWidth = 0; + } + if (availableHeight > 0) { + chartHeight += availableHeight; + availableHeight = 0; + } + this.componentStore.plot.calculateSpace({ + width: chartWidth, + height: chartHeight + }); + this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY }); + this.componentStore.yAxis.setRange([plotX, plotX + chartWidth]); + this.componentStore.yAxis.setBoundingBoxXY({ x: plotX, y: titleYEnd }); + this.componentStore.xAxis.setRange([plotY, plotY + chartHeight]); + this.componentStore.xAxis.setBoundingBoxXY({ x: 0, y: plotY }); + if (this.chartData.plots.some((p3) => isBarPlot(p3))) { + this.componentStore.xAxis.recalculateOuterPaddingToDrawBar(); + } + } + calculateSpace() { + if (this.chartConfig.chartOrientation === "horizontal") { + this.calculateHorizontalSpace(); + } else { + this.calculateVerticalSpace(); + } + } + getDrawableElement() { + this.calculateSpace(); + const drawableElem = []; + this.componentStore.plot.setAxes(this.componentStore.xAxis, this.componentStore.yAxis); + for (const component2 of Object.values(this.componentStore)) { + drawableElem.push(...component2.getDrawableElements()); + } + return drawableElem; + } + }; + } + }); + + // src/diagrams/xychart/chartBuilder/index.ts + var XYChartBuilder; + var init_chartBuilder = __esm({ + "src/diagrams/xychart/chartBuilder/index.ts"() { + "use strict"; + init_orchestrator(); + XYChartBuilder = class { + static { + __name(this, "XYChartBuilder"); + } + static build(config5, chartData, chartThemeConfig, tmpSVGGroup2) { + const orchestrator = new Orchestrator(config5, chartData, chartThemeConfig, tmpSVGGroup2); + return orchestrator.getDrawableElement(); + } + }; + } + }); + + // src/diagrams/xychart/xychartDb.ts + function getChartDefaultThemeConfig() { + const defaultThemeVariables2 = getThemeVariables3(); + const config5 = getConfig(); + return cleanAndMerge(defaultThemeVariables2.xyChart, config5.themeVariables.xyChart); + } + function getChartDefaultConfig() { + const config5 = getConfig(); + return cleanAndMerge( + defaultConfig_default.xyChart, + config5.xyChart + ); + } + function getChartDefaultData() { + return { + yAxis: { + type: "linear", + title: "", + min: Infinity, + max: -Infinity + }, + xAxis: { + type: "band", + title: "", + categories: [] + }, + title: "", + plots: [] + }; + } + function textSanitizer2(text4) { + const config5 = getConfig(); + return sanitizeText(text4.trim(), config5); + } + function setTmpSVGG(SVGG) { + tmpSVGGroup = SVGG; + } + function setOrientation(orientation) { + if (orientation === "horizontal") { + xyChartConfig.chartOrientation = "horizontal"; + } else { + xyChartConfig.chartOrientation = "vertical"; + } + } + function setXAxisTitle(title2) { + xyChartData.xAxis.title = textSanitizer2(title2.text); + } + function setXAxisRangeData(min9, max10) { + xyChartData.xAxis = { type: "linear", title: xyChartData.xAxis.title, min: min9, max: max10 }; + hasSetXAxis = true; + } + function setXAxisBand(categories) { + xyChartData.xAxis = { + type: "band", + title: xyChartData.xAxis.title, + categories: categories.map((c3) => textSanitizer2(c3.text)) + }; + hasSetXAxis = true; + } + function setYAxisTitle(title2) { + xyChartData.yAxis.title = textSanitizer2(title2.text); + } + function setYAxisRangeData(min9, max10) { + xyChartData.yAxis = { type: "linear", title: xyChartData.yAxis.title, min: min9, max: max10 }; + hasSetYAxis = true; + } + function setYAxisRangeFromPlotData(data5) { + const minValue = Math.min(...data5); + const maxValue = Math.max(...data5); + const prevMinValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.min : Infinity; + const prevMaxValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.max : -Infinity; + xyChartData.yAxis = { + type: "linear", + title: xyChartData.yAxis.title, + min: Math.min(prevMinValue, minValue), + max: Math.max(prevMaxValue, maxValue) + }; + } + function transformDataWithoutCategory(data5) { + let retData = []; + if (data5.length === 0) { + return retData; + } + if (!hasSetXAxis) { + const prevMinValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.min : Infinity; + const prevMaxValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.max : -Infinity; + setXAxisRangeData(Math.min(prevMinValue, 1), Math.max(prevMaxValue, data5.length)); + } + if (!hasSetYAxis) { + setYAxisRangeFromPlotData(data5); + } + if (isBandAxisData(xyChartData.xAxis)) { + retData = xyChartData.xAxis.categories.map((c3, i2) => [c3, data5[i2]]); + } + if (isLinearAxisData(xyChartData.xAxis)) { + const min9 = xyChartData.xAxis.min; + const max10 = xyChartData.xAxis.max; + const step3 = (max10 - min9) / (data5.length - 1); + const categories = []; + for (let i2 = min9; i2 <= max10; i2 += step3) { + categories.push(`${i2}`); + } + retData = categories.map((c3, i2) => [c3, data5[i2]]); + } + return retData; + } + function getPlotColorFromPalette(plotIndex2) { + return plotColorPalette[plotIndex2 === 0 ? 0 : plotIndex2 % plotColorPalette.length]; + } + function setLineData(title2, data5) { + const plotData = transformDataWithoutCategory(data5); + xyChartData.plots.push({ + type: "line", + strokeFill: getPlotColorFromPalette(plotIndex), + strokeWidth: 2, + data: plotData + }); + plotIndex++; + } + function setBarData(title2, data5) { + const plotData = transformDataWithoutCategory(data5); + xyChartData.plots.push({ + type: "bar", + fill: getPlotColorFromPalette(plotIndex), + data: plotData + }); + plotIndex++; + } + function getDrawableElem() { + if (xyChartData.plots.length === 0) { + throw Error("No Plot to render, please provide a plot with some data"); + } + xyChartData.title = getDiagramTitle(); + return XYChartBuilder.build(xyChartConfig, xyChartData, xyChartThemeConfig, tmpSVGGroup); + } + function getChartThemeConfig() { + return xyChartThemeConfig; + } + function getChartConfig() { + return xyChartConfig; + } + function getXYChartData() { + return xyChartData; + } + var plotIndex, tmpSVGGroup, xyChartConfig, xyChartThemeConfig, xyChartData, plotColorPalette, hasSetXAxis, hasSetYAxis, clear12, xychartDb_default; + var init_xychartDb = __esm({ + "src/diagrams/xychart/xychartDb.ts"() { + "use strict"; + init_config(); + init_defaultConfig(); + init_theme_default(); + init_utils2(); + init_common(); + init_commonDb(); + init_chartBuilder(); + init_interfaces(); + plotIndex = 0; + xyChartConfig = getChartDefaultConfig(); + xyChartThemeConfig = getChartDefaultThemeConfig(); + xyChartData = getChartDefaultData(); + plotColorPalette = xyChartThemeConfig.plotColorPalette.split(",").map((color2) => color2.trim()); + hasSetXAxis = false; + hasSetYAxis = false; + __name(getChartDefaultThemeConfig, "getChartDefaultThemeConfig"); + __name(getChartDefaultConfig, "getChartDefaultConfig"); + __name(getChartDefaultData, "getChartDefaultData"); + __name(textSanitizer2, "textSanitizer"); + __name(setTmpSVGG, "setTmpSVGG"); + __name(setOrientation, "setOrientation"); + __name(setXAxisTitle, "setXAxisTitle"); + __name(setXAxisRangeData, "setXAxisRangeData"); + __name(setXAxisBand, "setXAxisBand"); + __name(setYAxisTitle, "setYAxisTitle"); + __name(setYAxisRangeData, "setYAxisRangeData"); + __name(setYAxisRangeFromPlotData, "setYAxisRangeFromPlotData"); + __name(transformDataWithoutCategory, "transformDataWithoutCategory"); + __name(getPlotColorFromPalette, "getPlotColorFromPalette"); + __name(setLineData, "setLineData"); + __name(setBarData, "setBarData"); + __name(getDrawableElem, "getDrawableElem"); + __name(getChartThemeConfig, "getChartThemeConfig"); + __name(getChartConfig, "getChartConfig"); + __name(getXYChartData, "getXYChartData"); + clear12 = /* @__PURE__ */ __name(function() { + clear(); + plotIndex = 0; + xyChartConfig = getChartDefaultConfig(); + xyChartData = getChartDefaultData(); + xyChartThemeConfig = getChartDefaultThemeConfig(); + plotColorPalette = xyChartThemeConfig.plotColorPalette.split(",").map((color2) => color2.trim()); + hasSetXAxis = false; + hasSetYAxis = false; + }, "clear"); + xychartDb_default = { + getDrawableElem, + clear: clear12, + setAccTitle, + getAccTitle, + setDiagramTitle, + getDiagramTitle, + getAccDescription, + setAccDescription, + setOrientation, + setXAxisTitle, + setXAxisRangeData, + setXAxisBand, + setYAxisTitle, + setYAxisRangeData, + setLineData, + setBarData, + setTmpSVGG, + getChartThemeConfig, + getChartConfig, + getXYChartData + }; + } + }); + + // src/diagrams/xychart/xychartRenderer.ts + var draw9, xychartRenderer_default; + var init_xychartRenderer = __esm({ + "src/diagrams/xychart/xychartRenderer.ts"() { + "use strict"; + init_logger(); + init_selectSvgElement(); + init_setupGraphViewbox(); + draw9 = /* @__PURE__ */ __name((txt, id30, _version, diagObj) => { + const db7 = diagObj.db; + const themeConfig = db7.getChartThemeConfig(); + const chartConfig = db7.getChartConfig(); + const labelData = db7.getXYChartData().plots[0].data.map((data5) => data5[1]); + function getDominantBaseLine(horizontalPos) { + return horizontalPos === "top" ? "text-before-edge" : "middle"; + } + __name(getDominantBaseLine, "getDominantBaseLine"); + function getTextAnchor(verticalPos) { + return verticalPos === "left" ? "start" : verticalPos === "right" ? "end" : "middle"; + } + __name(getTextAnchor, "getTextAnchor"); + function getTextTransformation(data5) { + return `translate(${data5.x}, ${data5.y}) rotate(${data5.rotation || 0})`; + } + __name(getTextTransformation, "getTextTransformation"); + log.debug("Rendering xychart chart\n" + txt); + const svg2 = selectSvgElement(id30); + const group2 = svg2.append("g").attr("class", "main"); + const background = group2.append("rect").attr("width", chartConfig.width).attr("height", chartConfig.height).attr("class", "background"); + configureSvgSize(svg2, chartConfig.height, chartConfig.width, true); + svg2.attr("viewBox", `0 0 ${chartConfig.width} ${chartConfig.height}`); + background.attr("fill", themeConfig.backgroundColor); + db7.setTmpSVGG(svg2.append("g").attr("class", "mermaid-tmp-group")); + const shapes4 = db7.getDrawableElem(); + const groups = {}; + function getGroup(gList) { + let elem = group2; + let prefix = ""; + for (const [i2] of gList.entries()) { + let parent4 = group2; + if (i2 > 0 && groups[prefix]) { + parent4 = groups[prefix]; + } + prefix += gList[i2]; + elem = groups[prefix]; + if (!elem) { + elem = groups[prefix] = parent4.append("g").attr("class", gList[i2]); + } + } + return elem; + } + __name(getGroup, "getGroup"); + for (const shape of shapes4) { + if (shape.data.length === 0) { + continue; + } + const shapeGroup = getGroup(shape.groupTexts); + switch (shape.type) { + case "rect": + shapeGroup.selectAll("rect").data(shape.data).enter().append("rect").attr("x", (data5) => data5.x).attr("y", (data5) => data5.y).attr("width", (data5) => data5.width).attr("height", (data5) => data5.height).attr("fill", (data5) => data5.fill).attr("stroke", (data5) => data5.strokeFill).attr("stroke-width", (data5) => data5.strokeWidth); + if (chartConfig.showDataLabel) { + if (chartConfig.chartOrientation === "horizontal") { + let fitsHorizontally2 = function(item, fontSize) { + const { data: data5, label } = item; + const textWidth = fontSize * label.length * charWidthFactor; + return textWidth <= data5.width - 10; + }; + var fitsHorizontally = fitsHorizontally2; + __name(fitsHorizontally2, "fitsHorizontally"); + const charWidthFactor = 0.7; + const validItems = shape.data.map((d3, i2) => ({ data: d3, label: labelData[i2].toString() })).filter((item) => item.data.width > 0 && item.data.height > 0); + const candidateFontSizes = validItems.map((item) => { + const { data: data5 } = item; + let fontSize = data5.height * 0.7; + while (!fitsHorizontally2(item, fontSize) && fontSize > 0) { + fontSize -= 1; + } + return fontSize; + }); + const uniformFontSize = Math.floor(Math.min(...candidateFontSizes)); + shapeGroup.selectAll("text").data(validItems).enter().append("text").attr("x", (item) => item.data.x + item.data.width - 10).attr("y", (item) => item.data.y + item.data.height / 2).attr("text-anchor", "end").attr("dominant-baseline", "middle").attr("fill", "black").attr("font-size", `${uniformFontSize}px`).text((item) => item.label); + } else { + let fitsInBar2 = function(item, fontSize, yOffset2) { + const { data: data5, label } = item; + const charWidthFactor = 0.7; + const textWidth = fontSize * label.length * charWidthFactor; + const centerX = data5.x + data5.width / 2; + const leftEdge = centerX - textWidth / 2; + const rightEdge = centerX + textWidth / 2; + const horizontalFits = leftEdge >= data5.x && rightEdge <= data5.x + data5.width; + const verticalFits = data5.y + yOffset2 + fontSize <= data5.y + data5.height; + return horizontalFits && verticalFits; + }; + var fitsInBar = fitsInBar2; + __name(fitsInBar2, "fitsInBar"); + const yOffset = 10; + const validItems = shape.data.map((d3, i2) => ({ data: d3, label: labelData[i2].toString() })).filter((item) => item.data.width > 0 && item.data.height > 0); + const candidateFontSizes = validItems.map((item) => { + const { data: data5, label } = item; + let fontSize = data5.width / (label.length * 0.7); + while (!fitsInBar2(item, fontSize, yOffset) && fontSize > 0) { + fontSize -= 1; + } + return fontSize; + }); + const uniformFontSize = Math.floor(Math.min(...candidateFontSizes)); + shapeGroup.selectAll("text").data(validItems).enter().append("text").attr("x", (item) => item.data.x + item.data.width / 2).attr("y", (item) => item.data.y + yOffset).attr("text-anchor", "middle").attr("dominant-baseline", "hanging").attr("fill", "black").attr("font-size", `${uniformFontSize}px`).text((item) => item.label); + } + } + break; + case "text": + shapeGroup.selectAll("text").data(shape.data).enter().append("text").attr("x", 0).attr("y", 0).attr("fill", (data5) => data5.fill).attr("font-size", (data5) => data5.fontSize).attr("dominant-baseline", (data5) => getDominantBaseLine(data5.verticalPos)).attr("text-anchor", (data5) => getTextAnchor(data5.horizontalPos)).attr("transform", (data5) => getTextTransformation(data5)).text((data5) => data5.text); + break; + case "path": + shapeGroup.selectAll("path").data(shape.data).enter().append("path").attr("d", (data5) => data5.path).attr("fill", (data5) => data5.fill ? data5.fill : "none").attr("stroke", (data5) => data5.strokeFill).attr("stroke-width", (data5) => data5.strokeWidth); + break; + } + } + }, "draw"); + xychartRenderer_default = { + draw: draw9 + }; + } + }); + + // src/diagrams/xychart/xychartDiagram.ts + var xychartDiagram_exports = {}; + __export(xychartDiagram_exports, { + diagram: () => diagram9 + }); + var diagram9; + var init_xychartDiagram = __esm({ + "src/diagrams/xychart/xychartDiagram.ts"() { + "use strict"; + init_xychart(); + init_xychartDb(); + init_xychartRenderer(); + diagram9 = { + parser: xychart_default, + db: xychartDb_default, + renderer: xychartRenderer_default + }; + } + }); + + // src/diagrams/requirement/parser/requirementDiagram.jison + var parser10, requirementDiagram_default; + var init_requirementDiagram = __esm({ + "src/diagrams/requirement/parser/requirementDiagram.jison"() { + "use strict"; + parser10 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; + return o3; + }, "o"), $V0 = [1, 3], $V1 = [1, 4], $V2 = [1, 5], $V3 = [1, 6], $V4 = [5, 6, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 77, 89, 90], $V5 = [1, 22], $V6 = [2, 7], $V7 = [1, 26], $V8 = [1, 27], $V9 = [1, 28], $Va = [1, 29], $Vb = [1, 33], $Vc = [1, 34], $Vd = [1, 35], $Ve = [1, 36], $Vf = [1, 37], $Vg = [1, 38], $Vh = [1, 24], $Vi = [1, 31], $Vj = [1, 32], $Vk = [1, 30], $Vl = [1, 39], $Vm = [1, 40], $Vn = [5, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 77, 89, 90], $Vo = [1, 61], $Vp = [89, 90], $Vq = [5, 8, 9, 11, 13, 21, 22, 23, 24, 27, 29, 41, 42, 43, 44, 45, 46, 54, 61, 63, 72, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], $Vr = [27, 29], $Vs = [1, 70], $Vt = [1, 71], $Vu = [1, 72], $Vv = [1, 73], $Vw = [1, 74], $Vx = [1, 75], $Vy = [1, 76], $Vz = [1, 83], $VA = [1, 80], $VB = [1, 84], $VC = [1, 85], $VD = [1, 86], $VE = [1, 87], $VF = [1, 88], $VG = [1, 89], $VH = [1, 90], $VI = [1, 91], $VJ = [1, 92], $VK = [5, 8, 9, 11, 13, 21, 22, 23, 24, 27, 41, 42, 43, 44, 45, 46, 54, 72, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], $VL = [63, 64], $VM = [1, 101], $VN = [5, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 76, 77, 89, 90], $VO = [5, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], $VP = [1, 110], $VQ = [1, 106], $VR = [1, 107], $VS = [1, 108], $VT = [1, 109], $VU = [1, 111], $VV = [1, 116], $VW = [1, 117], $VX = [1, 114], $VY = [1, 115]; + var parser24 = { + trace: /* @__PURE__ */ __name(function trace() { + }, "trace"), + yy: {}, + symbols_: { "error": 2, "start": 3, "directive": 4, "NEWLINE": 5, "RD": 6, "diagram": 7, "EOF": 8, "acc_title": 9, "acc_title_value": 10, "acc_descr": 11, "acc_descr_value": 12, "acc_descr_multiline_value": 13, "requirementDef": 14, "elementDef": 15, "relationshipDef": 16, "direction": 17, "styleStatement": 18, "classDefStatement": 19, "classStatement": 20, "direction_tb": 21, "direction_bt": 22, "direction_rl": 23, "direction_lr": 24, "requirementType": 25, "requirementName": 26, "STRUCT_START": 27, "requirementBody": 28, "STYLE_SEPARATOR": 29, "idList": 30, "ID": 31, "COLONSEP": 32, "id": 33, "TEXT": 34, "text": 35, "RISK": 36, "riskLevel": 37, "VERIFYMTHD": 38, "verifyType": 39, "STRUCT_STOP": 40, "REQUIREMENT": 41, "FUNCTIONAL_REQUIREMENT": 42, "INTERFACE_REQUIREMENT": 43, "PERFORMANCE_REQUIREMENT": 44, "PHYSICAL_REQUIREMENT": 45, "DESIGN_CONSTRAINT": 46, "LOW_RISK": 47, "MED_RISK": 48, "HIGH_RISK": 49, "VERIFY_ANALYSIS": 50, "VERIFY_DEMONSTRATION": 51, "VERIFY_INSPECTION": 52, "VERIFY_TEST": 53, "ELEMENT": 54, "elementName": 55, "elementBody": 56, "TYPE": 57, "type": 58, "DOCREF": 59, "ref": 60, "END_ARROW_L": 61, "relationship": 62, "LINE": 63, "END_ARROW_R": 64, "CONTAINS": 65, "COPIES": 66, "DERIVES": 67, "SATISFIES": 68, "VERIFIES": 69, "REFINES": 70, "TRACES": 71, "CLASSDEF": 72, "stylesOpt": 73, "CLASS": 74, "ALPHA": 75, "COMMA": 76, "STYLE": 77, "style": 78, "styleComponent": 79, "NUM": 80, "COLON": 81, "UNIT": 82, "SPACE": 83, "BRKT": 84, "PCT": 85, "MINUS": 86, "LABEL": 87, "SEMICOLON": 88, "unqString": 89, "qString": 90, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 5: "NEWLINE", 6: "RD", 8: "EOF", 9: "acc_title", 10: "acc_title_value", 11: "acc_descr", 12: "acc_descr_value", 13: "acc_descr_multiline_value", 21: "direction_tb", 22: "direction_bt", 23: "direction_rl", 24: "direction_lr", 27: "STRUCT_START", 29: "STYLE_SEPARATOR", 31: "ID", 32: "COLONSEP", 34: "TEXT", 36: "RISK", 38: "VERIFYMTHD", 40: "STRUCT_STOP", 41: "REQUIREMENT", 42: "FUNCTIONAL_REQUIREMENT", 43: "INTERFACE_REQUIREMENT", 44: "PERFORMANCE_REQUIREMENT", 45: "PHYSICAL_REQUIREMENT", 46: "DESIGN_CONSTRAINT", 47: "LOW_RISK", 48: "MED_RISK", 49: "HIGH_RISK", 50: "VERIFY_ANALYSIS", 51: "VERIFY_DEMONSTRATION", 52: "VERIFY_INSPECTION", 53: "VERIFY_TEST", 54: "ELEMENT", 57: "TYPE", 59: "DOCREF", 61: "END_ARROW_L", 63: "LINE", 64: "END_ARROW_R", 65: "CONTAINS", 66: "COPIES", 67: "DERIVES", 68: "SATISFIES", 69: "VERIFIES", 70: "REFINES", 71: "TRACES", 72: "CLASSDEF", 74: "CLASS", 75: "ALPHA", 76: "COMMA", 77: "STYLE", 80: "NUM", 81: "COLON", 82: "UNIT", 83: "SPACE", 84: "BRKT", 85: "PCT", 86: "MINUS", 87: "LABEL", 88: "SEMICOLON", 89: "unqString", 90: "qString" }, + productions_: [0, [3, 3], [3, 2], [3, 4], [4, 2], [4, 2], [4, 1], [7, 0], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [17, 1], [17, 1], [17, 1], [17, 1], [14, 5], [14, 7], [28, 5], [28, 5], [28, 5], [28, 5], [28, 2], [28, 1], [25, 1], [25, 1], [25, 1], [25, 1], [25, 1], [25, 1], [37, 1], [37, 1], [37, 1], [39, 1], [39, 1], [39, 1], [39, 1], [15, 5], [15, 7], [56, 5], [56, 5], [56, 2], [56, 1], [16, 5], [16, 5], [62, 1], [62, 1], [62, 1], [62, 1], [62, 1], [62, 1], [62, 1], [19, 3], [20, 3], [20, 3], [30, 1], [30, 3], [30, 1], [30, 3], [18, 3], [73, 1], [73, 3], [78, 1], [78, 2], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [26, 1], [26, 1], [33, 1], [33, 1], [35, 1], [35, 1], [55, 1], [55, 1], [58, 1], [58, 1], [60, 1], [60, 1]], + performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 4: + this.$ = $$[$0].trim(); + yy.setAccTitle(this.$); + break; + case 5: + case 6: + this.$ = $$[$0].trim(); + yy.setAccDescription(this.$); + break; + case 7: + this.$ = []; + break; + case 17: + yy.setDirection("TB"); + break; + case 18: + yy.setDirection("BT"); + break; + case 19: + yy.setDirection("RL"); + break; + case 20: + yy.setDirection("LR"); + break; + case 21: + yy.addRequirement($$[$0 - 3], $$[$0 - 4]); + break; + case 22: + yy.addRequirement($$[$0 - 5], $$[$0 - 6]); + yy.setClass([$$[$0 - 5]], $$[$0 - 3]); + break; + case 23: + yy.setNewReqId($$[$0 - 2]); + break; + case 24: + yy.setNewReqText($$[$0 - 2]); + break; + case 25: + yy.setNewReqRisk($$[$0 - 2]); + break; + case 26: + yy.setNewReqVerifyMethod($$[$0 - 2]); + break; + case 29: + this.$ = yy.RequirementType.REQUIREMENT; + break; + case 30: + this.$ = yy.RequirementType.FUNCTIONAL_REQUIREMENT; + break; + case 31: + this.$ = yy.RequirementType.INTERFACE_REQUIREMENT; + break; + case 32: + this.$ = yy.RequirementType.PERFORMANCE_REQUIREMENT; + break; + case 33: + this.$ = yy.RequirementType.PHYSICAL_REQUIREMENT; + break; + case 34: + this.$ = yy.RequirementType.DESIGN_CONSTRAINT; + break; + case 35: + this.$ = yy.RiskLevel.LOW_RISK; + break; + case 36: + this.$ = yy.RiskLevel.MED_RISK; + break; + case 37: + this.$ = yy.RiskLevel.HIGH_RISK; + break; + case 38: + this.$ = yy.VerifyType.VERIFY_ANALYSIS; + break; + case 39: + this.$ = yy.VerifyType.VERIFY_DEMONSTRATION; + break; + case 40: + this.$ = yy.VerifyType.VERIFY_INSPECTION; + break; + case 41: + this.$ = yy.VerifyType.VERIFY_TEST; + break; + case 42: + yy.addElement($$[$0 - 3]); + break; + case 43: + yy.addElement($$[$0 - 5]); + yy.setClass([$$[$0 - 5]], $$[$0 - 3]); + break; + case 44: + yy.setNewElementType($$[$0 - 2]); + break; + case 45: + yy.setNewElementDocRef($$[$0 - 2]); + break; + case 48: + yy.addRelationship($$[$0 - 2], $$[$0], $$[$0 - 4]); + break; + case 49: + yy.addRelationship($$[$0 - 2], $$[$0 - 4], $$[$0]); + break; + case 50: + this.$ = yy.Relationships.CONTAINS; + break; + case 51: + this.$ = yy.Relationships.COPIES; + break; + case 52: + this.$ = yy.Relationships.DERIVES; + break; + case 53: + this.$ = yy.Relationships.SATISFIES; + break; + case 54: + this.$ = yy.Relationships.VERIFIES; + break; + case 55: + this.$ = yy.Relationships.REFINES; + break; + case 56: + this.$ = yy.Relationships.TRACES; + break; + case 57: + this.$ = $$[$0 - 2]; + yy.defineClass($$[$0 - 1], $$[$0]); + break; + case 58: + yy.setClass($$[$0 - 1], $$[$0]); + break; + case 59: + yy.setClass([$$[$0 - 2]], $$[$0]); + break; + case 60: + case 62: + this.$ = [$$[$0]]; + break; + case 61: + case 63: + this.$ = $$[$0 - 2].concat([$$[$0]]); + break; + case 64: + this.$ = $$[$0 - 2]; + yy.setCssStyle($$[$0 - 1], $$[$0]); + break; + case 65: + this.$ = [$$[$0]]; + break; + case 66: + $$[$0 - 2].push($$[$0]); + this.$ = $$[$0 - 2]; + break; + case 68: + this.$ = $$[$0 - 1] + $$[$0]; + break; + } + }, "anonymous"), + table: [{ 3: 1, 4: 2, 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 1: [3] }, { 3: 8, 4: 2, 5: [1, 7], 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 5: [1, 9] }, { 10: [1, 10] }, { 12: [1, 11] }, o2($V4, [2, 6]), { 3: 12, 4: 2, 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 1: [2, 2] }, { 4: 17, 5: $V5, 7: 13, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, o2($V4, [2, 4]), o2($V4, [2, 5]), { 1: [2, 1] }, { 8: [1, 41] }, { 4: 17, 5: $V5, 7: 42, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 43, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 44, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 45, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 46, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 47, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 48, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 49, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 4: 17, 5: $V5, 7: 50, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 18, 18: 19, 19: 20, 20: 21, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: 23, 33: 25, 41: $Vb, 42: $Vc, 43: $Vd, 44: $Ve, 45: $Vf, 46: $Vg, 54: $Vh, 72: $Vi, 74: $Vj, 77: $Vk, 89: $Vl, 90: $Vm }, { 26: 51, 89: [1, 52], 90: [1, 53] }, { 55: 54, 89: [1, 55], 90: [1, 56] }, { 29: [1, 59], 61: [1, 57], 63: [1, 58] }, o2($Vn, [2, 17]), o2($Vn, [2, 18]), o2($Vn, [2, 19]), o2($Vn, [2, 20]), { 30: 60, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, { 30: 63, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, { 30: 64, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, o2($Vp, [2, 29]), o2($Vp, [2, 30]), o2($Vp, [2, 31]), o2($Vp, [2, 32]), o2($Vp, [2, 33]), o2($Vp, [2, 34]), o2($Vq, [2, 81]), o2($Vq, [2, 82]), { 1: [2, 3] }, { 8: [2, 8] }, { 8: [2, 9] }, { 8: [2, 10] }, { 8: [2, 11] }, { 8: [2, 12] }, { 8: [2, 13] }, { 8: [2, 14] }, { 8: [2, 15] }, { 8: [2, 16] }, { 27: [1, 65], 29: [1, 66] }, o2($Vr, [2, 79]), o2($Vr, [2, 80]), { 27: [1, 67], 29: [1, 68] }, o2($Vr, [2, 85]), o2($Vr, [2, 86]), { 62: 69, 65: $Vs, 66: $Vt, 67: $Vu, 68: $Vv, 69: $Vw, 70: $Vx, 71: $Vy }, { 62: 77, 65: $Vs, 66: $Vt, 67: $Vu, 68: $Vv, 69: $Vw, 70: $Vx, 71: $Vy }, { 30: 78, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, { 73: 79, 75: $Vz, 76: $VA, 78: 81, 79: 82, 80: $VB, 81: $VC, 82: $VD, 83: $VE, 84: $VF, 85: $VG, 86: $VH, 87: $VI, 88: $VJ }, o2($VK, [2, 60]), o2($VK, [2, 62]), { 73: 93, 75: $Vz, 76: $VA, 78: 81, 79: 82, 80: $VB, 81: $VC, 82: $VD, 83: $VE, 84: $VF, 85: $VG, 86: $VH, 87: $VI, 88: $VJ }, { 30: 94, 33: 62, 75: $Vo, 76: $VA, 89: $Vl, 90: $Vm }, { 5: [1, 95] }, { 30: 96, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, { 5: [1, 97] }, { 30: 98, 33: 62, 75: $Vo, 89: $Vl, 90: $Vm }, { 63: [1, 99] }, o2($VL, [2, 50]), o2($VL, [2, 51]), o2($VL, [2, 52]), o2($VL, [2, 53]), o2($VL, [2, 54]), o2($VL, [2, 55]), o2($VL, [2, 56]), { 64: [1, 100] }, o2($Vn, [2, 59], { 76: $VA }), o2($Vn, [2, 64], { 76: $VM }), { 33: 103, 75: [1, 102], 89: $Vl, 90: $Vm }, o2($VN, [2, 65], { 79: 104, 75: $Vz, 80: $VB, 81: $VC, 82: $VD, 83: $VE, 84: $VF, 85: $VG, 86: $VH, 87: $VI, 88: $VJ }), o2($VO, [2, 67]), o2($VO, [2, 69]), o2($VO, [2, 70]), o2($VO, [2, 71]), o2($VO, [2, 72]), o2($VO, [2, 73]), o2($VO, [2, 74]), o2($VO, [2, 75]), o2($VO, [2, 76]), o2($VO, [2, 77]), o2($VO, [2, 78]), o2($Vn, [2, 57], { 76: $VM }), o2($Vn, [2, 58], { 76: $VA }), { 5: $VP, 28: 105, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 27: [1, 112], 76: $VA }, { 5: $VV, 40: $VW, 56: 113, 57: $VX, 59: $VY }, { 27: [1, 118], 76: $VA }, { 33: 119, 89: $Vl, 90: $Vm }, { 33: 120, 89: $Vl, 90: $Vm }, { 75: $Vz, 78: 121, 79: 82, 80: $VB, 81: $VC, 82: $VD, 83: $VE, 84: $VF, 85: $VG, 86: $VH, 87: $VI, 88: $VJ }, o2($VK, [2, 61]), o2($VK, [2, 63]), o2($VO, [2, 68]), o2($Vn, [2, 21]), { 32: [1, 122] }, { 32: [1, 123] }, { 32: [1, 124] }, { 32: [1, 125] }, { 5: $VP, 28: 126, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, o2($Vn, [2, 28]), { 5: [1, 127] }, o2($Vn, [2, 42]), { 32: [1, 128] }, { 32: [1, 129] }, { 5: $VV, 40: $VW, 56: 130, 57: $VX, 59: $VY }, o2($Vn, [2, 47]), { 5: [1, 131] }, o2($Vn, [2, 48]), o2($Vn, [2, 49]), o2($VN, [2, 66], { 79: 104, 75: $Vz, 80: $VB, 81: $VC, 82: $VD, 83: $VE, 84: $VF, 85: $VG, 86: $VH, 87: $VI, 88: $VJ }), { 33: 132, 89: $Vl, 90: $Vm }, { 35: 133, 89: [1, 134], 90: [1, 135] }, { 37: 136, 47: [1, 137], 48: [1, 138], 49: [1, 139] }, { 39: 140, 50: [1, 141], 51: [1, 142], 52: [1, 143], 53: [1, 144] }, o2($Vn, [2, 27]), { 5: $VP, 28: 145, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 58: 146, 89: [1, 147], 90: [1, 148] }, { 60: 149, 89: [1, 150], 90: [1, 151] }, o2($Vn, [2, 46]), { 5: $VV, 40: $VW, 56: 152, 57: $VX, 59: $VY }, { 5: [1, 153] }, { 5: [1, 154] }, { 5: [2, 83] }, { 5: [2, 84] }, { 5: [1, 155] }, { 5: [2, 35] }, { 5: [2, 36] }, { 5: [2, 37] }, { 5: [1, 156] }, { 5: [2, 38] }, { 5: [2, 39] }, { 5: [2, 40] }, { 5: [2, 41] }, o2($Vn, [2, 22]), { 5: [1, 157] }, { 5: [2, 87] }, { 5: [2, 88] }, { 5: [1, 158] }, { 5: [2, 89] }, { 5: [2, 90] }, o2($Vn, [2, 43]), { 5: $VP, 28: 159, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 5: $VP, 28: 160, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 5: $VP, 28: 161, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 5: $VP, 28: 162, 31: $VQ, 34: $VR, 36: $VS, 38: $VT, 40: $VU }, { 5: $VV, 40: $VW, 56: 163, 57: $VX, 59: $VY }, { 5: $VV, 40: $VW, 56: 164, 57: $VX, 59: $VY }, o2($Vn, [2, 23]), o2($Vn, [2, 24]), o2($Vn, [2, 25]), o2($Vn, [2, 26]), o2($Vn, [2, 44]), o2($Vn, [2, 45])], + defaultActions: { 8: [2, 2], 12: [2, 1], 41: [2, 3], 42: [2, 8], 43: [2, 9], 44: [2, 10], 45: [2, 11], 46: [2, 12], 47: [2, 13], 48: [2, 14], 49: [2, 15], 50: [2, 16], 134: [2, 83], 135: [2, 84], 137: [2, 35], 138: [2, 36], 139: [2, 37], 141: [2, 38], 142: [2, 39], 143: [2, 40], 144: [2, 41], 147: [2, 87], 148: [2, 88], 150: [2, 89], 151: [2, 90] }, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); + } else { + var error3 = new Error(str2); + error3.hash = hash; + throw error3; + } + }, "parseError"), + parse: /* @__PURE__ */ __name(function parse7(input) { + var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k2 in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { + sharedState.yy[k2] = this.yy[k2]; + } + } + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; + } + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n2) { + stack.length = stack.length - 2 * n2; + vstack.length = vstack.length - n2; + lstack.length = lstack.length - n2; + } + __name(popStack, "popStack"); + function lex() { + var token2; + token2 = tstack.pop() || lexer2.lex() || EOF2; + if (typeof token2 !== "number") { + if (token2 instanceof Array) { + tstack = token2; + token2 = tstack.pop(); + } + token2 = self2.symbols_[token2] || token2; + } + return token2; + } + __name(lex, "lex"); + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; + while (true) { + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); + } + action = table[state3] && table[state3][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p3 in table[state3]) { + if (this.terminals_[p3] && p3 > TERROR) { + expected.push("'" + this.terminals_[p3] + "'"); + } + } + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + } else { + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + } + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + if (recovering > 0) { + recovering--; + } + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; + } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r2 = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r2 !== "undefined") { + return r2; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState2); + break; + case 3: + return true; + } + } + return true; + }, "parse") + }; + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { + EOF: 1, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str2, hash); + } else { + throw new Error(str2); + } + }, "parseError"), + // resets the lexer, sets new input + setInput: /* @__PURE__ */ __name(function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0, 0]; + } + this.offset = 0; + return this; + }, "setInput"), + // consumes and returns one char from the input + input: /* @__PURE__ */ __name(function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } + this._input = this._input.slice(1); + return ch; + }, "input"), + // unshifts one char (or a string) into the input + unput: /* @__PURE__ */ __name(function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r2 = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + }; + if (this.options.ranges) { + this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, "unput"), + // When called from action, caches matched text and appends it on next action + more: /* @__PURE__ */ __name(function() { + this._more = true; + return this; + }, "more"), + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: /* @__PURE__ */ __name(function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + return this; + }, "reject"), + // retain first n characters of the match + less: /* @__PURE__ */ __name(function(n2) { + this.unput(this.match.slice(n2)); + }, "less"), + // displays already matched input, i.e. for error messages + pastInput: /* @__PURE__ */ __name(function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, "pastInput"), + // displays upcoming input, i.e. for error messages + upcomingInput: /* @__PURE__ */ __name(function() { + var next3 = this.match; + if (next3.length < 20) { + next3 += this._input.substr(0, 20 - next3.length); + } + return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, "upcomingInput"), + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: /* @__PURE__ */ __name(function() { + var pre = this.pastInput(); + var c3 = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c3 + "^"; + }, "showPosition"), + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { + var token2, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); + } + } + lines = match2[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length + }; + this.yytext += match2[0]; + this.match += match2[0]; + this.matches = match2; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match2[0].length); + this.matched += match2[0]; + token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token2) { + return token2; + } else if (this._backtrack) { + for (var k2 in backup) { + this[k2] = backup[k2]; + } + return false; + } + return false; + }, "test_match"), + // return next match in input + next: /* @__PURE__ */ __name(function() { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + var token2, match2, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i2 = 0; i2 < rules.length; i2++) { + tempMatch = this._input.match(this.rules[rules[i2]]); + if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { + match2 = tempMatch; + index = i2; + if (this.options.backtrack_lexer) { + token2 = this.test_match(tempMatch, rules[i2]); + if (token2 !== false) { + return token2; + } else if (this._backtrack) { + match2 = false; + continue; + } else { + return false; + } + } else if (!this.options.flex) { + break; + } + } + } + if (match2) { + token2 = this.test_match(match2, rules[index]); + if (token2 !== false) { + return token2; + } + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, "next"), + // return next match that has a token + lex: /* @__PURE__ */ __name(function lex() { + var r2 = this.next(); + if (r2) { + return r2; + } else { + return this.lex(); + } + }, "lex"), + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: /* @__PURE__ */ __name(function begin(condition) { + this.conditionStack.push(condition); + }, "begin"), + // pop the previously active lexer condition state off the condition stack + popState: /* @__PURE__ */ __name(function popState() { + var n2 = this.conditionStack.length - 1; + if (n2 > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, "popState"), + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: /* @__PURE__ */ __name(function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, "_currentRules"), + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: /* @__PURE__ */ __name(function topState(n2) { + n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); + if (n2 >= 0) { + return this.conditionStack[n2]; + } else { + return "INITIAL"; + } + }, "topState"), + // alias for begin(condition) + pushState: /* @__PURE__ */ __name(function pushState(condition) { + this.begin(condition); + }, "pushState"), + // return the number of states currently on the stack + stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { + return this.conditionStack.length; + }, "stateStackSize"), + options: { "case-insensitive": true }, + performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + var YYSTATE = YY_START; + switch ($avoiding_name_collisions) { + case 0: + return "title"; + break; + case 1: + this.begin("acc_title"); + return 9; + break; + case 2: + this.popState(); + return "acc_title_value"; + break; + case 3: + this.begin("acc_descr"); + return 11; + break; + case 4: + this.popState(); + return "acc_descr_value"; + break; + case 5: + this.begin("acc_descr_multiline"); + break; + case 6: + this.popState(); + break; + case 7: + return "acc_descr_multiline_value"; + break; + case 8: + return 21; + break; + case 9: + return 22; + break; + case 10: + return 23; + break; + case 11: + return 24; + break; + case 12: + return 5; + break; + case 13: + break; + case 14: + break; + case 15: + break; + case 16: + return 8; + break; + case 17: + return 6; + break; + case 18: + return 27; + break; + case 19: + return 40; + break; + case 20: + return 29; + break; + case 21: + return 32; + break; + case 22: + return 31; + break; + case 23: + return 34; + break; + case 24: + return 36; + break; + case 25: + return 38; + break; + case 26: + return 41; + break; + case 27: + return 42; + break; + case 28: + return 43; + break; + case 29: + return 44; + break; + case 30: + return 45; + break; + case 31: + return 46; + break; + case 32: + return 47; + break; + case 33: + return 48; + break; + case 34: + return 49; + break; + case 35: + return 50; + break; + case 36: + return 51; + break; + case 37: + return 52; + break; + case 38: + return 53; + break; + case 39: + return 54; + break; + case 40: + return 65; + break; + case 41: + return 66; + break; + case 42: + return 67; + break; + case 43: + return 68; + break; + case 44: + return 69; + break; + case 45: + return 70; + break; + case 46: + return 71; + break; + case 47: + return 57; + break; + case 48: + return 59; + break; + case 49: + this.begin("style"); + return 77; + break; + case 50: + return 75; + break; + case 51: + return 81; + break; + case 52: + return 88; + break; + case 53: + return "PERCENT"; + break; + case 54: + return 86; + break; + case 55: + return 84; + break; + case 56: + break; + case 57: + this.begin("string"); + break; + case 58: + this.popState(); + break; + case 59: + this.begin("style"); + return 72; + break; + case 60: + this.begin("style"); + return 74; + break; + case 61: + return 61; + break; + case 62: + return 64; + break; + case 63: + return 63; + break; + case 64: + this.begin("string"); + break; + case 65: + this.popState(); + break; + case 66: + return "qString"; + break; + case 67: + yy_.yytext = yy_.yytext.trim(); + return 89; + break; + case 68: + return 75; + break; + case 69: + return 80; + break; + case 70: + return 76; + break; + } + }, "anonymous"), + rules: [/^(?:title\s[^#\n;]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:.*direction\s+TB[^\n]*)/i, /^(?:.*direction\s+BT[^\n]*)/i, /^(?:.*direction\s+RL[^\n]*)/i, /^(?:.*direction\s+LR[^\n]*)/i, /^(?:(\r?\n)+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:$)/i, /^(?:requirementDiagram\b)/i, /^(?:\{)/i, /^(?:\})/i, /^(?::{3})/i, /^(?::)/i, /^(?:id\b)/i, /^(?:text\b)/i, /^(?:risk\b)/i, /^(?:verifyMethod\b)/i, /^(?:requirement\b)/i, /^(?:functionalRequirement\b)/i, /^(?:interfaceRequirement\b)/i, /^(?:performanceRequirement\b)/i, /^(?:physicalRequirement\b)/i, /^(?:designConstraint\b)/i, /^(?:low\b)/i, /^(?:medium\b)/i, /^(?:high\b)/i, /^(?:analysis\b)/i, /^(?:demonstration\b)/i, /^(?:inspection\b)/i, /^(?:test\b)/i, /^(?:element\b)/i, /^(?:contains\b)/i, /^(?:copies\b)/i, /^(?:derives\b)/i, /^(?:satisfies\b)/i, /^(?:verifies\b)/i, /^(?:refines\b)/i, /^(?:traces\b)/i, /^(?:type\b)/i, /^(?:docref\b)/i, /^(?:style\b)/i, /^(?:\w+)/i, /^(?::)/i, /^(?:;)/i, /^(?:%)/i, /^(?:-)/i, /^(?:#)/i, /^(?: )/i, /^(?:["])/i, /^(?:\n)/i, /^(?:classDef\b)/i, /^(?:class\b)/i, /^(?:<-)/i, /^(?:->)/i, /^(?:-)/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i, /^(?:\w+)/i, /^(?:[0-9]+)/i, /^(?:,)/i], + conditions: { "acc_descr_multiline": { "rules": [6, 7, 68, 69, 70], "inclusive": false }, "acc_descr": { "rules": [4, 68, 69, 70], "inclusive": false }, "acc_title": { "rules": [2, 68, 69, 70], "inclusive": false }, "style": { "rules": [50, 51, 52, 53, 54, 55, 56, 57, 58, 68, 69, 70], "inclusive": false }, "unqString": { "rules": [68, 69, 70], "inclusive": false }, "token": { "rules": [68, 69, 70], "inclusive": false }, "string": { "rules": [65, 66, 68, 69, 70], "inclusive": false }, "INITIAL": { "rules": [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 59, 60, 61, 62, 63, 64, 67, 68, 69, 70], "inclusive": true } } + }; + return lexer2; + })(); + parser24.lexer = lexer; + function Parser3() { + this.yy = {}; + } + __name(Parser3, "Parser"); + Parser3.prototype = parser24; + parser24.Parser = Parser3; + return new Parser3(); + })(); + parser10.parser = parser10; + requirementDiagram_default = parser10; + } + }); + + // src/diagrams/requirement/requirementDb.ts + var RequirementDB; + var init_requirementDb = __esm({ + "src/diagrams/requirement/requirementDb.ts"() { + "use strict"; + init_diagramAPI(); + init_logger(); + init_commonDb(); + RequirementDB = class { + constructor() { + this.relations = []; + this.latestRequirement = this.getInitialRequirement(); + this.requirements = /* @__PURE__ */ new Map(); + this.latestElement = this.getInitialElement(); + this.elements = /* @__PURE__ */ new Map(); + this.classes = /* @__PURE__ */ new Map(); + this.direction = "TB"; + this.RequirementType = { + REQUIREMENT: "Requirement", + FUNCTIONAL_REQUIREMENT: "Functional Requirement", + INTERFACE_REQUIREMENT: "Interface Requirement", + PERFORMANCE_REQUIREMENT: "Performance Requirement", + PHYSICAL_REQUIREMENT: "Physical Requirement", + DESIGN_CONSTRAINT: "Design Constraint" + }; + this.RiskLevel = { + LOW_RISK: "Low", + MED_RISK: "Medium", + HIGH_RISK: "High" + }; + this.VerifyType = { + VERIFY_ANALYSIS: "Analysis", + VERIFY_DEMONSTRATION: "Demonstration", + VERIFY_INSPECTION: "Inspection", + VERIFY_TEST: "Test" + }; + this.Relationships = { + CONTAINS: "contains", + COPIES: "copies", + DERIVES: "derives", + SATISFIES: "satisfies", + VERIFIES: "verifies", + REFINES: "refines", + TRACES: "traces" + }; + this.setAccTitle = setAccTitle; + this.getAccTitle = getAccTitle; + this.setAccDescription = setAccDescription; + this.getAccDescription = getAccDescription; + this.setDiagramTitle = setDiagramTitle; + this.getDiagramTitle = getDiagramTitle; + this.getConfig = /* @__PURE__ */ __name(() => getConfig2().requirement, "getConfig"); + this.clear(); + this.setDirection = this.setDirection.bind(this); + this.addRequirement = this.addRequirement.bind(this); + this.setNewReqId = this.setNewReqId.bind(this); + this.setNewReqRisk = this.setNewReqRisk.bind(this); + this.setNewReqText = this.setNewReqText.bind(this); + this.setNewReqVerifyMethod = this.setNewReqVerifyMethod.bind(this); + this.addElement = this.addElement.bind(this); + this.setNewElementType = this.setNewElementType.bind(this); + this.setNewElementDocRef = this.setNewElementDocRef.bind(this); + this.addRelationship = this.addRelationship.bind(this); + this.setCssStyle = this.setCssStyle.bind(this); + this.setClass = this.setClass.bind(this); + this.defineClass = this.defineClass.bind(this); + this.setAccTitle = this.setAccTitle.bind(this); + this.setAccDescription = this.setAccDescription.bind(this); + } + static { + __name(this, "RequirementDB"); + } + getDirection() { + return this.direction; + } + setDirection(dir2) { + this.direction = dir2; + } + resetLatestRequirement() { + this.latestRequirement = this.getInitialRequirement(); + } + resetLatestElement() { + this.latestElement = this.getInitialElement(); + } + getInitialRequirement() { + return { + requirementId: "", + text: "", + risk: "", + verifyMethod: "", + name: "", + type: "", + cssStyles: [], + classes: ["default"] + }; + } + getInitialElement() { + return { + name: "", + type: "", + docRef: "", + cssStyles: [], + classes: ["default"] + }; + } + addRequirement(name, type3) { + if (!this.requirements.has(name)) { + this.requirements.set(name, { + name, + type: type3, + requirementId: this.latestRequirement.requirementId, + text: this.latestRequirement.text, + risk: this.latestRequirement.risk, + verifyMethod: this.latestRequirement.verifyMethod, + cssStyles: [], + classes: ["default"] + }); + } + this.resetLatestRequirement(); + return this.requirements.get(name); + } + getRequirements() { + return this.requirements; + } + setNewReqId(id30) { + if (this.latestRequirement !== void 0) { + this.latestRequirement.requirementId = id30; + } + } + setNewReqText(text4) { + if (this.latestRequirement !== void 0) { + this.latestRequirement.text = text4; + } + } + setNewReqRisk(risk) { + if (this.latestRequirement !== void 0) { + this.latestRequirement.risk = risk; + } + } + setNewReqVerifyMethod(verifyMethod) { + if (this.latestRequirement !== void 0) { + this.latestRequirement.verifyMethod = verifyMethod; + } + } + addElement(name) { + if (!this.elements.has(name)) { + this.elements.set(name, { + name, + type: this.latestElement.type, + docRef: this.latestElement.docRef, + cssStyles: [], + classes: ["default"] + }); + log.info("Added new element: ", name); + } + this.resetLatestElement(); + return this.elements.get(name); + } + getElements() { + return this.elements; + } + setNewElementType(type3) { + if (this.latestElement !== void 0) { + this.latestElement.type = type3; + } + } + setNewElementDocRef(docRef) { + if (this.latestElement !== void 0) { + this.latestElement.docRef = docRef; + } + } + addRelationship(type3, src, dst) { + this.relations.push({ + type: type3, + src, + dst + }); + } + getRelationships() { + return this.relations; + } + clear() { + this.relations = []; + this.resetLatestRequirement(); + this.requirements = /* @__PURE__ */ new Map(); + this.resetLatestElement(); + this.elements = /* @__PURE__ */ new Map(); + this.classes = /* @__PURE__ */ new Map(); + clear(); + } + setCssStyle(ids, styles4) { + for (const id30 of ids) { + const node2 = this.requirements.get(id30) ?? this.elements.get(id30); + if (!styles4 || !node2) { + return; + } + for (const s2 of styles4) { + if (s2.includes(",")) { + node2.cssStyles.push(...s2.split(",")); + } else { + node2.cssStyles.push(s2); + } + } + } + } + setClass(ids, classNames) { + for (const id30 of ids) { + const node2 = this.requirements.get(id30) ?? this.elements.get(id30); + if (node2) { + for (const _class2 of classNames) { + node2.classes.push(_class2); + const styles4 = this.classes.get(_class2)?.styles; + if (styles4) { + node2.cssStyles.push(...styles4); + } + } + } + } + } + defineClass(ids, style3) { + for (const id30 of ids) { + let styleClass = this.classes.get(id30); + if (styleClass === void 0) { + styleClass = { id: id30, styles: [], textStyles: [] }; + this.classes.set(id30, styleClass); + } + if (style3) { + style3.forEach(function(s2) { + if (/color/.exec(s2)) { + const newStyle = s2.replace("fill", "bgFill"); + styleClass.textStyles.push(newStyle); + } + styleClass.styles.push(s2); + }); + } + this.requirements.forEach((value2) => { + if (value2.classes.includes(id30)) { + value2.cssStyles.push(...style3.flatMap((s2) => s2.split(","))); + } + }); + this.elements.forEach((value2) => { + if (value2.classes.includes(id30)) { + value2.cssStyles.push(...style3.flatMap((s2) => s2.split(","))); + } + }); + } + } + getClasses() { + return this.classes; + } + getData() { + const config5 = getConfig2(); + const nodes5 = []; + const edges3 = []; + for (const requirement of this.requirements.values()) { + const node2 = requirement; + node2.id = requirement.name; + node2.cssStyles = requirement.cssStyles; + node2.cssClasses = requirement.classes.join(" "); + node2.shape = "requirementBox"; + node2.look = config5.look; + nodes5.push(node2); + } + for (const element3 of this.elements.values()) { + const node2 = element3; + node2.shape = "requirementBox"; + node2.look = config5.look; + node2.id = element3.name; + node2.cssStyles = element3.cssStyles; + node2.cssClasses = element3.classes.join(" "); + nodes5.push(node2); + } + for (const relation of this.relations) { + let counter2 = 0; + const isContains = relation.type === this.Relationships.CONTAINS; + const edge = { + id: `${relation.src}-${relation.dst}-${counter2}`, + start: this.requirements.get(relation.src)?.name ?? this.elements.get(relation.src)?.name, + end: this.requirements.get(relation.dst)?.name ?? this.elements.get(relation.dst)?.name, + label: `<<${relation.type}>>`, + classes: "relationshipLine", + style: ["fill:none", isContains ? "" : "stroke-dasharray: 10,7"], + labelpos: "c", + thickness: "normal", + type: "normal", + pattern: isContains ? "normal" : "dashed", + arrowTypeStart: isContains ? "requirement_contains" : "", + arrowTypeEnd: isContains ? "" : "requirement_arrow", + look: config5.look + }; + edges3.push(edge); + counter2++; + } + return { nodes: nodes5, edges: edges3, other: {}, config: config5, direction: this.getDirection() }; + } + }; + } + }); + + // src/diagrams/requirement/styles.js + var getStyles8, styles_default7; + var init_styles7 = __esm({ + "src/diagrams/requirement/styles.js"() { + "use strict"; + getStyles8 = /* @__PURE__ */ __name((options2) => ` + + marker { + fill: ${options2.relationColor}; + stroke: ${options2.relationColor}; + } + + marker.cross { + stroke: ${options2.lineColor}; + } + + svg { + font-family: ${options2.fontFamily}; + font-size: ${options2.fontSize}; + } + + .reqBox { + fill: ${options2.requirementBackground}; + fill-opacity: 1.0; + stroke: ${options2.requirementBorderColor}; + stroke-width: ${options2.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${options2.requirementTextColor}; + } + .reqLabelBox { + fill: ${options2.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${options2.requirementBorderColor}; + stroke-width: ${options2.requirementBorderSize}; + } + .relationshipLine { + stroke: ${options2.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${options2.relationLabelColor}; + } + .divider { + stroke: ${options2.nodeBorder}; + stroke-width: 1; + } + .label { + font-family: ${options2.fontFamily}; + color: ${options2.nodeTextColor || options2.textColor}; + } + .label text,span { + fill: ${options2.nodeTextColor || options2.textColor}; + color: ${options2.nodeTextColor || options2.textColor}; + } + .labelBkg { + background-color: ${options2.edgeLabelBackground}; + } + +`, "getStyles"); + styles_default7 = getStyles8; + } + }); + + // src/diagrams/requirement/requirementRenderer.ts + var requirementRenderer_exports = {}; + __export(requirementRenderer_exports, { + draw: () => draw10 + }); + var draw10; + var init_requirementRenderer = __esm({ + "src/diagrams/requirement/requirementRenderer.ts"() { + "use strict"; + init_diagramAPI(); + init_logger(); + init_insertElementsForSize(); + init_render2(); + init_setupViewPortForSVG(); + init_utils2(); + draw10 = /* @__PURE__ */ __name(async function(text4, id30, _version, diag) { + log.info("REF0:"); + log.info("Drawing requirement diagram (unified)", id30); + const { securityLevel, state: conf5, layout: layout6 } = getConfig2(); + const data4Layout = diag.db.getData(); + const svg2 = getDiagramElement(id30, securityLevel); + data4Layout.type = diag.type; + data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout6); + data4Layout.nodeSpacing = conf5?.nodeSpacing ?? 50; + data4Layout.rankSpacing = conf5?.rankSpacing ?? 50; + data4Layout.markers = ["requirement_contains", "requirement_arrow"]; + data4Layout.diagramId = id30; + await render6(data4Layout, svg2); + const padding2 = 8; + utils_default2.insertTitle( + svg2, + "requirementDiagramTitleText", + conf5?.titleTopMargin ?? 25, + diag.db.getDiagramTitle() + ); + setupViewPortForSVG(svg2, padding2, "requirementDiagram", conf5?.useMaxWidth ?? true); + }, "draw"); + } + }); + + // src/diagrams/requirement/requirementDiagram.ts + var requirementDiagram_exports = {}; + __export(requirementDiagram_exports, { + diagram: () => diagram10 + }); + var diagram10; + var init_requirementDiagram2 = __esm({ + "src/diagrams/requirement/requirementDiagram.ts"() { + "use strict"; + init_requirementDiagram(); + init_requirementDb(); + init_styles7(); + init_requirementRenderer(); + diagram10 = { + parser: requirementDiagram_default, + get db() { + return new RequirementDB(); + }, + renderer: requirementRenderer_exports, + styles: styles_default7 + }; + } + }); + + // src/diagrams/sequence/parser/sequenceDiagram.jison + var parser11, sequenceDiagram_default; + var init_sequenceDiagram = __esm({ + "src/diagrams/sequence/parser/sequenceDiagram.jison"() { + "use strict"; + parser11 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; + return o3; + }, "o"), $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 4], $V3 = [2, 4], $V4 = [1, 9], $V5 = [1, 11], $V6 = [1, 13], $V7 = [1, 14], $V8 = [1, 16], $V9 = [1, 17], $Va = [1, 18], $Vb = [1, 24], $Vc = [1, 25], $Vd = [1, 26], $Ve = [1, 27], $Vf = [1, 28], $Vg = [1, 29], $Vh = [1, 30], $Vi = [1, 31], $Vj = [1, 32], $Vk = [1, 33], $Vl = [1, 34], $Vm = [1, 35], $Vn = [1, 36], $Vo = [1, 37], $Vp = [1, 38], $Vq = [1, 39], $Vr = [1, 41], $Vs = [1, 42], $Vt = [1, 43], $Vu = [1, 44], $Vv = [1, 45], $Vw = [1, 46], $Vx = [1, 4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 48, 49, 50, 52, 53, 55, 60, 61, 62, 63, 71], $Vy = [2, 71], $Vz = [4, 5, 16, 50, 52, 53], $VA = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 50, 52, 53, 55, 60, 61, 62, 63, 71], $VB = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 49, 50, 52, 53, 55, 60, 61, 62, 63, 71], $VC = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 48, 50, 52, 53, 55, 60, 61, 62, 63, 71], $VD = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 50, 52, 53, 55, 60, 61, 62, 63, 71], $VE = [69, 70, 71], $VF = [1, 127]; + var parser24 = { + trace: /* @__PURE__ */ __name(function trace() { + }, "trace"), + yy: {}, + symbols_: { "error": 2, "start": 3, "SPACE": 4, "NEWLINE": 5, "SD": 6, "document": 7, "line": 8, "statement": 9, "box_section": 10, "box_line": 11, "participant_statement": 12, "create": 13, "box": 14, "restOfLine": 15, "end": 16, "signal": 17, "autonumber": 18, "NUM": 19, "off": 20, "activate": 21, "actor": 22, "deactivate": 23, "note_statement": 24, "links_statement": 25, "link_statement": 26, "properties_statement": 27, "details_statement": 28, "title": 29, "legacy_title": 30, "acc_title": 31, "acc_title_value": 32, "acc_descr": 33, "acc_descr_value": 34, "acc_descr_multiline_value": 35, "loop": 36, "rect": 37, "opt": 38, "alt": 39, "else_sections": 40, "par": 41, "par_sections": 42, "par_over": 43, "critical": 44, "option_sections": 45, "break": 46, "option": 47, "and": 48, "else": 49, "participant": 50, "AS": 51, "participant_actor": 52, "destroy": 53, "actor_with_config": 54, "note": 55, "placement": 56, "text2": 57, "over": 58, "actor_pair": 59, "links": 60, "link": 61, "properties": 62, "details": 63, "spaceList": 64, ",": 65, "left_of": 66, "right_of": 67, "signaltype": 68, "+": 69, "-": 70, "ACTOR": 71, "config_object": 72, "CONFIG_START": 73, "CONFIG_CONTENT": 74, "CONFIG_END": 75, "SOLID_OPEN_ARROW": 76, "DOTTED_OPEN_ARROW": 77, "SOLID_ARROW": 78, "BIDIRECTIONAL_SOLID_ARROW": 79, "DOTTED_ARROW": 80, "BIDIRECTIONAL_DOTTED_ARROW": 81, "SOLID_CROSS": 82, "DOTTED_CROSS": 83, "SOLID_POINT": 84, "DOTTED_POINT": 85, "TXT": 86, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 4: "SPACE", 5: "NEWLINE", 6: "SD", 13: "create", 14: "box", 15: "restOfLine", 16: "end", 18: "autonumber", 19: "NUM", 20: "off", 21: "activate", 23: "deactivate", 29: "title", 30: "legacy_title", 31: "acc_title", 32: "acc_title_value", 33: "acc_descr", 34: "acc_descr_value", 35: "acc_descr_multiline_value", 36: "loop", 37: "rect", 38: "opt", 39: "alt", 41: "par", 43: "par_over", 44: "critical", 46: "break", 47: "option", 48: "and", 49: "else", 50: "participant", 51: "AS", 52: "participant_actor", 53: "destroy", 55: "note", 58: "over", 60: "links", 61: "link", 62: "properties", 63: "details", 65: ",", 66: "left_of", 67: "right_of", 69: "+", 70: "-", 71: "ACTOR", 73: "CONFIG_START", 74: "CONFIG_CONTENT", 75: "CONFIG_END", 76: "SOLID_OPEN_ARROW", 77: "DOTTED_OPEN_ARROW", 78: "SOLID_ARROW", 79: "BIDIRECTIONAL_SOLID_ARROW", 80: "DOTTED_ARROW", 81: "BIDIRECTIONAL_DOTTED_ARROW", 82: "SOLID_CROSS", 83: "DOTTED_CROSS", 84: "SOLID_POINT", 85: "DOTTED_POINT", 86: "TXT" }, + productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [10, 0], [10, 2], [11, 2], [11, 1], [11, 1], [9, 1], [9, 2], [9, 4], [9, 2], [9, 4], [9, 3], [9, 3], [9, 2], [9, 3], [9, 3], [9, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [45, 1], [45, 4], [42, 1], [42, 4], [40, 1], [40, 4], [12, 5], [12, 3], [12, 5], [12, 3], [12, 3], [12, 3], [24, 4], [24, 4], [25, 3], [26, 3], [27, 3], [28, 3], [64, 2], [64, 1], [59, 3], [59, 1], [56, 1], [56, 1], [17, 5], [17, 5], [17, 4], [54, 2], [72, 3], [22, 1], [68, 1], [68, 1], [68, 1], [68, 1], [68, 1], [68, 1], [68, 1], [68, 1], [68, 1], [68, 1], [57, 1]], + performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 3: + yy.apply($$[$0]); + return $$[$0]; + break; + case 4: + case 9: + this.$ = []; + break; + case 5: + case 10: + $$[$0 - 1].push($$[$0]); + this.$ = $$[$0 - 1]; + break; + case 6: + case 7: + case 11: + case 12: + this.$ = $$[$0]; + break; + case 8: + case 13: + this.$ = []; + break; + case 15: + $$[$0].type = "createParticipant"; + this.$ = $$[$0]; + break; + case 16: + $$[$0 - 1].unshift({ type: "boxStart", boxData: yy.parseBoxData($$[$0 - 2]) }); + $$[$0 - 1].push({ type: "boxEnd", boxText: $$[$0 - 2] }); + this.$ = $$[$0 - 1]; + break; + case 18: + this.$ = { type: "sequenceIndex", sequenceIndex: Number($$[$0 - 2]), sequenceIndexStep: Number($$[$0 - 1]), sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER }; + break; + case 19: + this.$ = { type: "sequenceIndex", sequenceIndex: Number($$[$0 - 1]), sequenceIndexStep: 1, sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER }; + break; + case 20: + this.$ = { type: "sequenceIndex", sequenceVisible: false, signalType: yy.LINETYPE.AUTONUMBER }; + break; + case 21: + this.$ = { type: "sequenceIndex", sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER }; + break; + case 22: + this.$ = { type: "activeStart", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1].actor }; + break; + case 23: + this.$ = { type: "activeEnd", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 1].actor }; + break; + case 29: + yy.setDiagramTitle($$[$0].substring(6)); + this.$ = $$[$0].substring(6); + break; + case 30: + yy.setDiagramTitle($$[$0].substring(7)); + this.$ = $$[$0].substring(7); + break; + case 31: + this.$ = $$[$0].trim(); + yy.setAccTitle(this.$); + break; + case 32: + case 33: + this.$ = $$[$0].trim(); + yy.setAccDescription(this.$); + break; + case 34: + $$[$0 - 1].unshift({ type: "loopStart", loopText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.LOOP_START }); + $$[$0 - 1].push({ type: "loopEnd", loopText: $$[$0 - 2], signalType: yy.LINETYPE.LOOP_END }); + this.$ = $$[$0 - 1]; + break; + case 35: + $$[$0 - 1].unshift({ type: "rectStart", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_START }); + $$[$0 - 1].push({ type: "rectEnd", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_END }); + this.$ = $$[$0 - 1]; + break; + case 36: + $$[$0 - 1].unshift({ type: "optStart", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_START }); + $$[$0 - 1].push({ type: "optEnd", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_END }); + this.$ = $$[$0 - 1]; + break; + case 37: + $$[$0 - 1].unshift({ type: "altStart", altText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.ALT_START }); + $$[$0 - 1].push({ type: "altEnd", signalType: yy.LINETYPE.ALT_END }); + this.$ = $$[$0 - 1]; + break; + case 38: + $$[$0 - 1].unshift({ type: "parStart", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_START }); + $$[$0 - 1].push({ type: "parEnd", signalType: yy.LINETYPE.PAR_END }); + this.$ = $$[$0 - 1]; + break; + case 39: + $$[$0 - 1].unshift({ type: "parStart", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_OVER_START }); + $$[$0 - 1].push({ type: "parEnd", signalType: yy.LINETYPE.PAR_END }); + this.$ = $$[$0 - 1]; + break; + case 40: + $$[$0 - 1].unshift({ type: "criticalStart", criticalText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.CRITICAL_START }); + $$[$0 - 1].push({ type: "criticalEnd", signalType: yy.LINETYPE.CRITICAL_END }); + this.$ = $$[$0 - 1]; + break; + case 41: + $$[$0 - 1].unshift({ type: "breakStart", breakText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_START }); + $$[$0 - 1].push({ type: "breakEnd", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_END }); + this.$ = $$[$0 - 1]; + break; + case 43: + this.$ = $$[$0 - 3].concat([{ type: "option", optionText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.CRITICAL_OPTION }, $$[$0]]); + break; + case 45: + this.$ = $$[$0 - 3].concat([{ type: "and", parText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.PAR_AND }, $$[$0]]); + break; + case 47: + this.$ = $$[$0 - 3].concat([{ type: "else", altText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.ALT_ELSE }, $$[$0]]); + break; + case 48: + $$[$0 - 3].draw = "participant"; + $$[$0 - 3].type = "addParticipant"; + $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]); + this.$ = $$[$0 - 3]; + break; + case 49: + $$[$0 - 1].draw = "participant"; + $$[$0 - 1].type = "addParticipant"; + this.$ = $$[$0 - 1]; + break; + case 50: + $$[$0 - 3].draw = "actor"; + $$[$0 - 3].type = "addParticipant"; + $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]); + this.$ = $$[$0 - 3]; + break; + case 51: + $$[$0 - 1].draw = "actor"; + $$[$0 - 1].type = "addParticipant"; + this.$ = $$[$0 - 1]; + break; + case 52: + $$[$0 - 1].type = "destroyParticipant"; + this.$ = $$[$0 - 1]; + break; + case 53: + $$[$0 - 1].draw = "participant"; + $$[$0 - 1].type = "addParticipant"; + this.$ = $$[$0 - 1]; + break; + case 54: + this.$ = [$$[$0 - 1], { type: "addNote", placement: $$[$0 - 2], actor: $$[$0 - 1].actor, text: $$[$0] }]; + break; + case 55: + $$[$0 - 2] = [].concat($$[$0 - 1], $$[$0 - 1]).slice(0, 2); + $$[$0 - 2][0] = $$[$0 - 2][0].actor; + $$[$0 - 2][1] = $$[$0 - 2][1].actor; + this.$ = [$$[$0 - 1], { type: "addNote", placement: yy.PLACEMENT.OVER, actor: $$[$0 - 2].slice(0, 2), text: $$[$0] }]; + break; + case 56: + this.$ = [$$[$0 - 1], { type: "addLinks", actor: $$[$0 - 1].actor, text: $$[$0] }]; + break; + case 57: + this.$ = [$$[$0 - 1], { type: "addALink", actor: $$[$0 - 1].actor, text: $$[$0] }]; + break; + case 58: + this.$ = [$$[$0 - 1], { type: "addProperties", actor: $$[$0 - 1].actor, text: $$[$0] }]; + break; + case 59: + this.$ = [$$[$0 - 1], { type: "addDetails", actor: $$[$0 - 1].actor, text: $$[$0] }]; + break; + case 62: + this.$ = [$$[$0 - 2], $$[$0]]; + break; + case 63: + this.$ = $$[$0]; + break; + case 64: + this.$ = yy.PLACEMENT.LEFTOF; + break; + case 65: + this.$ = yy.PLACEMENT.RIGHTOF; + break; + case 66: + this.$ = [ + $$[$0 - 4], + $$[$0 - 1], + { type: "addMessage", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0], activate: true }, + { type: "activeStart", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1].actor } + ]; + break; + case 67: + this.$ = [ + $$[$0 - 4], + $$[$0 - 1], + { type: "addMessage", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0] }, + { type: "activeEnd", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 4].actor } + ]; + break; + case 68: + this.$ = [$$[$0 - 3], $$[$0 - 1], { type: "addMessage", from: $$[$0 - 3].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 2], msg: $$[$0] }]; + break; + case 69: + this.$ = { + type: "addParticipant", + actor: $$[$0 - 1], + config: $$[$0] + }; + break; + case 70: + this.$ = $$[$0 - 1].trim(); + break; + case 71: + this.$ = { type: "addParticipant", actor: $$[$0] }; + break; + case 72: + this.$ = yy.LINETYPE.SOLID_OPEN; + break; + case 73: + this.$ = yy.LINETYPE.DOTTED_OPEN; + break; + case 74: + this.$ = yy.LINETYPE.SOLID; + break; + case 75: + this.$ = yy.LINETYPE.BIDIRECTIONAL_SOLID; + break; + case 76: + this.$ = yy.LINETYPE.DOTTED; + break; + case 77: + this.$ = yy.LINETYPE.BIDIRECTIONAL_DOTTED; + break; + case 78: + this.$ = yy.LINETYPE.SOLID_CROSS; + break; + case 79: + this.$ = yy.LINETYPE.DOTTED_CROSS; + break; + case 80: + this.$ = yy.LINETYPE.SOLID_POINT; + break; + case 81: + this.$ = yy.LINETYPE.DOTTED_POINT; + break; + case 82: + this.$ = yy.parseMessage($$[$0].trim().substring(1)); + break; + } + }, "anonymous"), + table: [{ 3: 1, 4: $V0, 5: $V1, 6: $V2 }, { 1: [3] }, { 3: 5, 4: $V0, 5: $V1, 6: $V2 }, { 3: 6, 4: $V0, 5: $V1, 6: $V2 }, o2([1, 4, 5, 13, 14, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 50, 52, 53, 55, 60, 61, 62, 63, 71], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 55: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 71: $Vw }, o2($Vx, [2, 5]), { 9: 47, 12: 12, 13: $V6, 14: $V7, 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 55: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 71: $Vw }, o2($Vx, [2, 7]), o2($Vx, [2, 8]), o2($Vx, [2, 14]), { 12: 48, 50: $Vo, 52: $Vp, 53: $Vq }, { 15: [1, 49] }, { 5: [1, 50] }, { 5: [1, 53], 19: [1, 51], 20: [1, 52] }, { 22: 54, 71: $Vw }, { 22: 55, 71: $Vw }, { 5: [1, 56] }, { 5: [1, 57] }, { 5: [1, 58] }, { 5: [1, 59] }, { 5: [1, 60] }, o2($Vx, [2, 29]), o2($Vx, [2, 30]), { 32: [1, 61] }, { 34: [1, 62] }, o2($Vx, [2, 33]), { 15: [1, 63] }, { 15: [1, 64] }, { 15: [1, 65] }, { 15: [1, 66] }, { 15: [1, 67] }, { 15: [1, 68] }, { 15: [1, 69] }, { 15: [1, 70] }, { 22: 71, 54: 72, 71: [1, 73] }, { 22: 74, 71: $Vw }, { 22: 75, 71: $Vw }, { 68: 76, 76: [1, 77], 77: [1, 78], 78: [1, 79], 79: [1, 80], 80: [1, 81], 81: [1, 82], 82: [1, 83], 83: [1, 84], 84: [1, 85], 85: [1, 86] }, { 56: 87, 58: [1, 88], 66: [1, 89], 67: [1, 90] }, { 22: 91, 71: $Vw }, { 22: 92, 71: $Vw }, { 22: 93, 71: $Vw }, { 22: 94, 71: $Vw }, o2([5, 51, 65, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86], $Vy), o2($Vx, [2, 6]), o2($Vx, [2, 15]), o2($Vz, [2, 9], { 10: 95 }), o2($Vx, [2, 17]), { 5: [1, 97], 19: [1, 96] }, { 5: [1, 98] }, o2($Vx, [2, 21]), { 5: [1, 99] }, { 5: [1, 100] }, o2($Vx, [2, 24]), o2($Vx, [2, 25]), o2($Vx, [2, 26]), o2($Vx, [2, 27]), o2($Vx, [2, 28]), o2($Vx, [2, 31]), o2($Vx, [2, 32]), o2($VA, $V3, { 7: 101 }), o2($VA, $V3, { 7: 102 }), o2($VA, $V3, { 7: 103 }), o2($VB, $V3, { 40: 104, 7: 105 }), o2($VC, $V3, { 42: 106, 7: 107 }), o2($VC, $V3, { 7: 107, 42: 108 }), o2($VD, $V3, { 45: 109, 7: 110 }), o2($VA, $V3, { 7: 111 }), { 5: [1, 113], 51: [1, 112] }, { 5: [1, 114] }, o2([5, 51], $Vy, { 72: 115, 73: [1, 116] }), { 5: [1, 118], 51: [1, 117] }, { 5: [1, 119] }, { 22: 122, 69: [1, 120], 70: [1, 121], 71: $Vw }, o2($VE, [2, 72]), o2($VE, [2, 73]), o2($VE, [2, 74]), o2($VE, [2, 75]), o2($VE, [2, 76]), o2($VE, [2, 77]), o2($VE, [2, 78]), o2($VE, [2, 79]), o2($VE, [2, 80]), o2($VE, [2, 81]), { 22: 123, 71: $Vw }, { 22: 125, 59: 124, 71: $Vw }, { 71: [2, 64] }, { 71: [2, 65] }, { 57: 126, 86: $VF }, { 57: 128, 86: $VF }, { 57: 129, 86: $VF }, { 57: 130, 86: $VF }, { 4: [1, 133], 5: [1, 135], 11: 132, 12: 134, 16: [1, 131], 50: $Vo, 52: $Vp, 53: $Vq }, { 5: [1, 136] }, o2($Vx, [2, 19]), o2($Vx, [2, 20]), o2($Vx, [2, 22]), o2($Vx, [2, 23]), { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 137], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 55: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 71: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 138], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 55: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 71: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 139], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 55: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 71: $Vw }, { 16: [1, 140] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 46], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 49: [1, 141], 50: $Vo, 52: $Vp, 53: $Vq, 55: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 71: $Vw }, { 16: [1, 142] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 44], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 48: [1, 143], 50: $Vo, 52: $Vp, 53: $Vq, 55: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 71: $Vw }, { 16: [1, 144] }, { 16: [1, 145] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 42], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 47: [1, 146], 50: $Vo, 52: $Vp, 53: $Vq, 55: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 71: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 147], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 55: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 71: $Vw }, { 15: [1, 148] }, o2($Vx, [2, 49]), o2($Vx, [2, 53]), { 5: [2, 69] }, { 74: [1, 149] }, { 15: [1, 150] }, o2($Vx, [2, 51]), o2($Vx, [2, 52]), { 22: 151, 71: $Vw }, { 22: 152, 71: $Vw }, { 57: 153, 86: $VF }, { 57: 154, 86: $VF }, { 57: 155, 86: $VF }, { 65: [1, 156], 86: [2, 63] }, { 5: [2, 56] }, { 5: [2, 82] }, { 5: [2, 57] }, { 5: [2, 58] }, { 5: [2, 59] }, o2($Vx, [2, 16]), o2($Vz, [2, 10]), { 12: 157, 50: $Vo, 52: $Vp, 53: $Vq }, o2($Vz, [2, 12]), o2($Vz, [2, 13]), o2($Vx, [2, 18]), o2($Vx, [2, 34]), o2($Vx, [2, 35]), o2($Vx, [2, 36]), o2($Vx, [2, 37]), { 15: [1, 158] }, o2($Vx, [2, 38]), { 15: [1, 159] }, o2($Vx, [2, 39]), o2($Vx, [2, 40]), { 15: [1, 160] }, o2($Vx, [2, 41]), { 5: [1, 161] }, { 75: [1, 162] }, { 5: [1, 163] }, { 57: 164, 86: $VF }, { 57: 165, 86: $VF }, { 5: [2, 68] }, { 5: [2, 54] }, { 5: [2, 55] }, { 22: 166, 71: $Vw }, o2($Vz, [2, 11]), o2($VB, $V3, { 7: 105, 40: 167 }), o2($VC, $V3, { 7: 107, 42: 168 }), o2($VD, $V3, { 7: 110, 45: 169 }), o2($Vx, [2, 48]), { 5: [2, 70] }, o2($Vx, [2, 50]), { 5: [2, 66] }, { 5: [2, 67] }, { 86: [2, 62] }, { 16: [2, 47] }, { 16: [2, 45] }, { 16: [2, 43] }], + defaultActions: { 5: [2, 1], 6: [2, 2], 89: [2, 64], 90: [2, 65], 115: [2, 69], 126: [2, 56], 127: [2, 82], 128: [2, 57], 129: [2, 58], 130: [2, 59], 153: [2, 68], 154: [2, 54], 155: [2, 55], 162: [2, 70], 164: [2, 66], 165: [2, 67], 166: [2, 62], 167: [2, 47], 168: [2, 45], 169: [2, 43] }, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); + } else { + var error3 = new Error(str2); + error3.hash = hash; + throw error3; + } + }, "parseError"), + parse: /* @__PURE__ */ __name(function parse7(input) { + var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k2 in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { + sharedState.yy[k2] = this.yy[k2]; + } + } + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; + } + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n2) { + stack.length = stack.length - 2 * n2; + vstack.length = vstack.length - n2; + lstack.length = lstack.length - n2; + } + __name(popStack, "popStack"); + function lex() { + var token2; + token2 = tstack.pop() || lexer2.lex() || EOF2; + if (typeof token2 !== "number") { + if (token2 instanceof Array) { + tstack = token2; + token2 = tstack.pop(); + } + token2 = self2.symbols_[token2] || token2; + } + return token2; + } + __name(lex, "lex"); + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; + while (true) { + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); + } + action = table[state3] && table[state3][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p3 in table[state3]) { + if (this.terminals_[p3] && p3 > TERROR) { + expected.push("'" + this.terminals_[p3] + "'"); + } + } + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + } else { + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + } + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + if (recovering > 0) { + recovering--; + } + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; + } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r2 = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r2 !== "undefined") { + return r2; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState2); + break; + case 3: + return true; + } + } + return true; + }, "parse") + }; + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { + EOF: 1, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str2, hash); + } else { + throw new Error(str2); + } + }, "parseError"), + // resets the lexer, sets new input + setInput: /* @__PURE__ */ __name(function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0, 0]; + } + this.offset = 0; + return this; + }, "setInput"), + // consumes and returns one char from the input + input: /* @__PURE__ */ __name(function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } + this._input = this._input.slice(1); + return ch; + }, "input"), + // unshifts one char (or a string) into the input + unput: /* @__PURE__ */ __name(function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r2 = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + }; + if (this.options.ranges) { + this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, "unput"), + // When called from action, caches matched text and appends it on next action + more: /* @__PURE__ */ __name(function() { + this._more = true; + return this; + }, "more"), + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: /* @__PURE__ */ __name(function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + return this; + }, "reject"), + // retain first n characters of the match + less: /* @__PURE__ */ __name(function(n2) { + this.unput(this.match.slice(n2)); + }, "less"), + // displays already matched input, i.e. for error messages + pastInput: /* @__PURE__ */ __name(function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, "pastInput"), + // displays upcoming input, i.e. for error messages + upcomingInput: /* @__PURE__ */ __name(function() { + var next3 = this.match; + if (next3.length < 20) { + next3 += this._input.substr(0, 20 - next3.length); + } + return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, "upcomingInput"), + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: /* @__PURE__ */ __name(function() { + var pre = this.pastInput(); + var c3 = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c3 + "^"; + }, "showPosition"), + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { + var token2, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); + } + } + lines = match2[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length + }; + this.yytext += match2[0]; + this.match += match2[0]; + this.matches = match2; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match2[0].length); + this.matched += match2[0]; + token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token2) { + return token2; + } else if (this._backtrack) { + for (var k2 in backup) { + this[k2] = backup[k2]; + } + return false; + } + return false; + }, "test_match"), + // return next match in input + next: /* @__PURE__ */ __name(function() { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + var token2, match2, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i2 = 0; i2 < rules.length; i2++) { + tempMatch = this._input.match(this.rules[rules[i2]]); + if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { + match2 = tempMatch; + index = i2; + if (this.options.backtrack_lexer) { + token2 = this.test_match(tempMatch, rules[i2]); + if (token2 !== false) { + return token2; + } else if (this._backtrack) { + match2 = false; + continue; + } else { + return false; + } + } else if (!this.options.flex) { + break; + } + } + } + if (match2) { + token2 = this.test_match(match2, rules[index]); + if (token2 !== false) { + return token2; + } + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, "next"), + // return next match that has a token + lex: /* @__PURE__ */ __name(function lex() { + var r2 = this.next(); + if (r2) { + return r2; + } else { + return this.lex(); + } + }, "lex"), + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: /* @__PURE__ */ __name(function begin(condition) { + this.conditionStack.push(condition); + }, "begin"), + // pop the previously active lexer condition state off the condition stack + popState: /* @__PURE__ */ __name(function popState() { + var n2 = this.conditionStack.length - 1; + if (n2 > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, "popState"), + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: /* @__PURE__ */ __name(function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, "_currentRules"), + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: /* @__PURE__ */ __name(function topState(n2) { + n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); + if (n2 >= 0) { + return this.conditionStack[n2]; + } else { + return "INITIAL"; + } + }, "topState"), + // alias for begin(condition) + pushState: /* @__PURE__ */ __name(function pushState(condition) { + this.begin(condition); + }, "pushState"), + // return the number of states currently on the stack + stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { + return this.conditionStack.length; + }, "stateStackSize"), + options: { "case-insensitive": true }, + performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + var YYSTATE = YY_START; + switch ($avoiding_name_collisions) { + case 0: + return 5; + break; + case 1: + break; + case 2: + break; + case 3: + break; + case 4: + break; + case 5: + break; + case 6: + return 19; + break; + case 7: + this.begin("CONFIG"); + return 73; + break; + case 8: + return 74; + break; + case 9: + this.popState(); + this.popState(); + return 75; + break; + case 10: + yy_.yytext = yy_.yytext.trim(); + return 71; + break; + case 11: + yy_.yytext = yy_.yytext.trim(); + this.begin("ALIAS"); + return 71; + break; + case 12: + this.begin("LINE"); + return 14; + break; + case 13: + this.begin("ID"); + return 50; + break; + case 14: + this.begin("ID"); + return 52; + break; + case 15: + return 13; + break; + case 16: + this.begin("ID"); + return 53; + break; + case 17: + yy_.yytext = yy_.yytext.trim(); + this.begin("ALIAS"); + return 71; + break; + case 18: + this.popState(); + this.popState(); + this.begin("LINE"); + return 51; + break; + case 19: + this.popState(); + this.popState(); + return 5; + break; + case 20: + this.begin("LINE"); + return 36; + break; + case 21: + this.begin("LINE"); + return 37; + break; + case 22: + this.begin("LINE"); + return 38; + break; + case 23: + this.begin("LINE"); + return 39; + break; + case 24: + this.begin("LINE"); + return 49; + break; + case 25: + this.begin("LINE"); + return 41; + break; + case 26: + this.begin("LINE"); + return 43; + break; + case 27: + this.begin("LINE"); + return 48; + break; + case 28: + this.begin("LINE"); + return 44; + break; + case 29: + this.begin("LINE"); + return 47; + break; + case 30: + this.begin("LINE"); + return 46; + break; + case 31: + this.popState(); + return 15; + break; + case 32: + return 16; + break; + case 33: + return 66; + break; + case 34: + return 67; + break; + case 35: + return 60; + break; + case 36: + return 61; + break; + case 37: + return 62; + break; + case 38: + return 63; + break; + case 39: + return 58; + break; + case 40: + return 55; + break; + case 41: + this.begin("ID"); + return 21; + break; + case 42: + this.begin("ID"); + return 23; + break; + case 43: + return 29; + break; + case 44: + return 30; + break; + case 45: + this.begin("acc_title"); + return 31; + break; + case 46: + this.popState(); + return "acc_title_value"; + break; + case 47: + this.begin("acc_descr"); + return 33; + break; + case 48: + this.popState(); + return "acc_descr_value"; + break; + case 49: + this.begin("acc_descr_multiline"); + break; + case 50: + this.popState(); + break; + case 51: + return "acc_descr_multiline_value"; + break; + case 52: + return 6; + break; + case 53: + return 18; + break; + case 54: + return 20; + break; + case 55: + return 65; + break; + case 56: + return 5; + break; + case 57: + yy_.yytext = yy_.yytext.trim(); + return 71; + break; + case 58: + return 78; + break; + case 59: + return 79; + break; + case 60: + return 80; + break; + case 61: + return 81; + break; + case 62: + return 76; + break; + case 63: + return 77; + break; + case 64: + return 82; + break; + case 65: + return 83; + break; + case 66: + return 84; + break; + case 67: + return 85; + break; + case 68: + return 86; + break; + case 69: + return 86; + break; + case 70: + return 69; + break; + case 71: + return 70; + break; + case 72: + return 5; + break; + case 73: + return "INVALID"; + break; + } + }, "anonymous"), + rules: [/^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:((?!\n)\s)+)/i, /^(?:#[^\n]*)/i, /^(?:%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[0-9]+(?=[ \n]+))/i, /^(?:@\{)/i, /^(?:[^\}]+)/i, /^(?:\})/i, /^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i, /^(?:[^\<->\->:\n,;@]+?([\-]*[^\<->\->:\n,;@]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i, /^(?:box\b)/i, /^(?:participant\b)/i, /^(?:actor\b)/i, /^(?:create\b)/i, /^(?:destroy\b)/i, /^(?:[^<\->\->:\n,;]+?([\-]*[^<\->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i, /^(?:as\b)/i, /^(?:(?:))/i, /^(?:loop\b)/i, /^(?:rect\b)/i, /^(?:opt\b)/i, /^(?:alt\b)/i, /^(?:else\b)/i, /^(?:par\b)/i, /^(?:par_over\b)/i, /^(?:and\b)/i, /^(?:critical\b)/i, /^(?:option\b)/i, /^(?:break\b)/i, /^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i, /^(?:end\b)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:links\b)/i, /^(?:link\b)/i, /^(?:properties\b)/i, /^(?:details\b)/i, /^(?:over\b)/i, /^(?:note\b)/i, /^(?:activate\b)/i, /^(?:deactivate\b)/i, /^(?:title\s[^#\n;]+)/i, /^(?:title:\s[^#\n;]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:sequenceDiagram\b)/i, /^(?:autonumber\b)/i, /^(?:off\b)/i, /^(?:,)/i, /^(?:;)/i, /^(?:[^+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+<\->\->:\n,;]+)*)/i, /^(?:->>)/i, /^(?:<<->>)/i, /^(?:-->>)/i, /^(?:<<-->>)/i, /^(?:->)/i, /^(?:-->)/i, /^(?:-[x])/i, /^(?:--[x])/i, /^(?:-[\)])/i, /^(?:--[\)])/i, /^(?::(?:(?:no)?wrap)?[^#\n;]*)/i, /^(?::)/i, /^(?:\+)/i, /^(?:-)/i, /^(?:$)/i, /^(?:.)/i], + conditions: { "acc_descr_multiline": { "rules": [50, 51], "inclusive": false }, "acc_descr": { "rules": [48], "inclusive": false }, "acc_title": { "rules": [46], "inclusive": false }, "ID": { "rules": [2, 3, 7, 10, 11, 17], "inclusive": false }, "ALIAS": { "rules": [2, 3, 18, 19], "inclusive": false }, "LINE": { "rules": [2, 3, 31], "inclusive": false }, "CONFIG": { "rules": [8, 9], "inclusive": false }, "CONFIG_DATA": { "rules": [], "inclusive": false }, "INITIAL": { "rules": [0, 1, 3, 4, 5, 6, 12, 13, 14, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 49, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73], "inclusive": true } } + }; + return lexer2; + })(); + parser24.lexer = lexer; + function Parser3() { + this.yy = {}; + } + __name(Parser3, "Parser"); + Parser3.prototype = parser24; + parser24.Parser = Parser3; + return new Parser3(); + })(); + parser11.parser = parser11; + sequenceDiagram_default = parser11; + } + }); + + // src/diagrams/sequence/sequenceDb.ts + var LINETYPE2, ARROWTYPE2, PLACEMENT2, PARTICIPANT_TYPE, SequenceDB; + var init_sequenceDb = __esm({ + "src/diagrams/sequence/sequenceDb.ts"() { + "use strict"; + init_diagramAPI(); + init_js_yaml(); + init_logger(); + init_imperativeState(); + init_common(); + init_commonDb(); + LINETYPE2 = { + SOLID: 0, + DOTTED: 1, + NOTE: 2, + SOLID_CROSS: 3, + DOTTED_CROSS: 4, + SOLID_OPEN: 5, + DOTTED_OPEN: 6, + LOOP_START: 10, + LOOP_END: 11, + ALT_START: 12, + ALT_ELSE: 13, + ALT_END: 14, + OPT_START: 15, + OPT_END: 16, + ACTIVE_START: 17, + ACTIVE_END: 18, + PAR_START: 19, + PAR_AND: 20, + PAR_END: 21, + RECT_START: 22, + RECT_END: 23, + SOLID_POINT: 24, + DOTTED_POINT: 25, + AUTONUMBER: 26, + CRITICAL_START: 27, + CRITICAL_OPTION: 28, + CRITICAL_END: 29, + BREAK_START: 30, + BREAK_END: 31, + PAR_OVER_START: 32, + BIDIRECTIONAL_SOLID: 33, + BIDIRECTIONAL_DOTTED: 34 + }; + ARROWTYPE2 = { + FILLED: 0, + OPEN: 1 + }; + PLACEMENT2 = { + LEFTOF: 0, + RIGHTOF: 1, + OVER: 2 + }; + PARTICIPANT_TYPE = { + ACTOR: "actor", + BOUNDARY: "boundary", + COLLECTIONS: "collections", + CONTROL: "control", + DATABASE: "database", + ENTITY: "entity", + PARTICIPANT: "participant", + QUEUE: "queue" + }; + SequenceDB = class { + constructor() { + this.state = new ImperativeState(() => ({ + prevActor: void 0, + actors: /* @__PURE__ */ new Map(), + createdActors: /* @__PURE__ */ new Map(), + destroyedActors: /* @__PURE__ */ new Map(), + boxes: [], + messages: [], + notes: [], + sequenceNumbersEnabled: false, + wrapEnabled: void 0, + currentBox: void 0, + lastCreated: void 0, + lastDestroyed: void 0 + })); + this.setAccTitle = setAccTitle; + this.setAccDescription = setAccDescription; + this.setDiagramTitle = setDiagramTitle; + this.getAccTitle = getAccTitle; + this.getAccDescription = getAccDescription; + this.getDiagramTitle = getDiagramTitle; + this.apply = this.apply.bind(this); + this.parseBoxData = this.parseBoxData.bind(this); + this.parseMessage = this.parseMessage.bind(this); + this.clear(); + this.setWrap(getConfig2().wrap); + this.LINETYPE = LINETYPE2; + this.ARROWTYPE = ARROWTYPE2; + this.PLACEMENT = PLACEMENT2; + } + static { + __name(this, "SequenceDB"); + } + addBox(data5) { + this.state.records.boxes.push({ + name: data5.text, + wrap: data5.wrap ?? this.autoWrap(), + fill: data5.color, + actorKeys: [] + }); + this.state.records.currentBox = this.state.records.boxes.slice(-1)[0]; + } + addActor(id30, name, description, type3, metadata) { + let assignedBox = this.state.records.currentBox; + let doc; + if (metadata !== void 0) { + let yamlData; + if (!metadata.includes("\n")) { + yamlData = "{\n" + metadata + "\n}"; + } else { + yamlData = metadata + "\n"; + } + doc = load(yamlData, { schema: JSON_SCHEMA }); + } + type3 = doc?.type ?? type3; + const old = this.state.records.actors.get(id30); + if (old) { + if (this.state.records.currentBox && old.box && this.state.records.currentBox !== old.box) { + throw new Error( + `A same participant should only be defined in one Box: ${old.name} can't be in '${old.box.name}' and in '${this.state.records.currentBox.name}' at the same time.` + ); + } + assignedBox = old.box ? old.box : this.state.records.currentBox; + old.box = assignedBox; + if (old && name === old.name && description == null) { + return; + } + } + if (description?.text == null) { + description = { text: name, type: type3 }; + } + if (type3 == null || description.text == null) { + description = { text: name, type: type3 }; + } + this.state.records.actors.set(id30, { + box: assignedBox, + name, + description: description.text, + wrap: description.wrap ?? this.autoWrap(), + prevActor: this.state.records.prevActor, + links: {}, + properties: {}, + actorCnt: null, + rectData: null, + type: type3 ?? "participant" + }); + if (this.state.records.prevActor) { + const prevActorInRecords = this.state.records.actors.get(this.state.records.prevActor); + if (prevActorInRecords) { + prevActorInRecords.nextActor = id30; + } + } + if (this.state.records.currentBox) { + this.state.records.currentBox.actorKeys.push(id30); + } + this.state.records.prevActor = id30; + } + activationCount(part) { + let i2; + let count2 = 0; + if (!part) { + return 0; + } + for (i2 = 0; i2 < this.state.records.messages.length; i2++) { + if (this.state.records.messages[i2].type === this.LINETYPE.ACTIVE_START && this.state.records.messages[i2].from === part) { + count2++; + } + if (this.state.records.messages[i2].type === this.LINETYPE.ACTIVE_END && this.state.records.messages[i2].from === part) { + count2--; + } + } + return count2; + } + addMessage(idFrom, idTo, message, answer) { + this.state.records.messages.push({ + id: this.state.records.messages.length.toString(), + from: idFrom, + to: idTo, + message: message.text, + wrap: message.wrap ?? this.autoWrap(), + answer + }); + } + addSignal(idFrom, idTo, message, messageType, activate = false) { + if (messageType === this.LINETYPE.ACTIVE_END) { + const cnt4 = this.activationCount(idFrom ?? ""); + if (cnt4 < 1) { + const error3 = new Error("Trying to inactivate an inactive participant (" + idFrom + ")"); + error3.hash = { + text: "->>-", + token: "->>-", + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: ["'ACTIVE_PARTICIPANT'"] + }; + throw error3; + } + } + this.state.records.messages.push({ + id: this.state.records.messages.length.toString(), + from: idFrom, + to: idTo, + message: message?.text ?? "", + wrap: message?.wrap ?? this.autoWrap(), + type: messageType, + activate + }); + return true; + } + hasAtLeastOneBox() { + return this.state.records.boxes.length > 0; + } + hasAtLeastOneBoxWithTitle() { + return this.state.records.boxes.some((b3) => b3.name); + } + getMessages() { + return this.state.records.messages; + } + getBoxes() { + return this.state.records.boxes; + } + getActors() { + return this.state.records.actors; + } + getCreatedActors() { + return this.state.records.createdActors; + } + getDestroyedActors() { + return this.state.records.destroyedActors; + } + getActor(id30) { + return this.state.records.actors.get(id30); + } + getActorKeys() { + return [...this.state.records.actors.keys()]; + } + enableSequenceNumbers() { + this.state.records.sequenceNumbersEnabled = true; + } + disableSequenceNumbers() { + this.state.records.sequenceNumbersEnabled = false; + } + showSequenceNumbers() { + return this.state.records.sequenceNumbersEnabled; + } + setWrap(wrapSetting) { + this.state.records.wrapEnabled = wrapSetting; + } + extractWrap(text4) { + if (text4 === void 0) { + return {}; + } + text4 = text4.trim(); + const wrap3 = /^:?wrap:/.exec(text4) !== null ? true : /^:?nowrap:/.exec(text4) !== null ? false : void 0; + const cleanedText = (wrap3 === void 0 ? text4 : text4.replace(/^:?(?:no)?wrap:/, "")).trim(); + return { cleanedText, wrap: wrap3 }; + } + autoWrap() { + if (this.state.records.wrapEnabled !== void 0) { + return this.state.records.wrapEnabled; + } + return getConfig2().sequence?.wrap ?? false; + } + clear() { + this.state.reset(); + clear(); + } + parseMessage(str2) { + const trimmedStr = str2.trim(); + const { wrap: wrap3, cleanedText } = this.extractWrap(trimmedStr); + const message = { + text: cleanedText, + wrap: wrap3 + }; + log.debug(`parseMessage: ${JSON.stringify(message)}`); + return message; + } + // We expect the box statement to be color first then description + // The color can be rgb,rgba,hsl,hsla, or css code names #hex codes are not supported for now because of the way the char # is handled + // We extract first segment as color, the rest of the line is considered as text + parseBoxData(str2) { + const match2 = /^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(str2); + let color2 = match2?.[1] ? match2[1].trim() : "transparent"; + let title2 = match2?.[2] ? match2[2].trim() : void 0; + if (window?.CSS) { + if (!window.CSS.supports("color", color2)) { + color2 = "transparent"; + title2 = str2.trim(); + } + } else { + const style3 = new Option().style; + style3.color = color2; + if (style3.color !== color2) { + color2 = "transparent"; + title2 = str2.trim(); + } + } + const { wrap: wrap3, cleanedText } = this.extractWrap(title2); + return { + text: cleanedText ? sanitizeText(cleanedText, getConfig2()) : void 0, + color: color2, + wrap: wrap3 + }; + } + addNote(actor, placement, message) { + const note3 = { + actor, + placement, + message: message.text, + wrap: message.wrap ?? this.autoWrap() + }; + const actors2 = [].concat(actor, actor); + this.state.records.notes.push(note3); + this.state.records.messages.push({ + id: this.state.records.messages.length.toString(), + from: actors2[0], + to: actors2[1], + message: message.text, + wrap: message.wrap ?? this.autoWrap(), + type: this.LINETYPE.NOTE, + placement + }); + } + addLinks(actorId, text4) { + const actor = this.getActor(actorId); + try { + let sanitizedText = sanitizeText(text4.text, getConfig2()); + sanitizedText = sanitizedText.replace(/=/g, "="); + sanitizedText = sanitizedText.replace(/&/g, "&"); + const links3 = JSON.parse(sanitizedText); + this.insertLinks(actor, links3); + } catch (e3) { + log.error("error while parsing actor link text", e3); + } + } + addALink(actorId, text4) { + const actor = this.getActor(actorId); + try { + const links3 = {}; + let sanitizedText = sanitizeText(text4.text, getConfig2()); + const sep2 = sanitizedText.indexOf("@"); + sanitizedText = sanitizedText.replace(/=/g, "="); + sanitizedText = sanitizedText.replace(/&/g, "&"); + const label = sanitizedText.slice(0, sep2 - 1).trim(); + const link2 = sanitizedText.slice(sep2 + 1).trim(); + links3[label] = link2; + this.insertLinks(actor, links3); + } catch (e3) { + log.error("error while parsing actor link text", e3); + } + } + insertLinks(actor, links3) { + if (actor.links == null) { + actor.links = links3; + } else { + for (const key in links3) { + actor.links[key] = links3[key]; + } + } + } + addProperties(actorId, text4) { + const actor = this.getActor(actorId); + try { + const sanitizedText = sanitizeText(text4.text, getConfig2()); + const properties = JSON.parse(sanitizedText); + this.insertProperties(actor, properties); + } catch (e3) { + log.error("error while parsing actor properties text", e3); + } + } + insertProperties(actor, properties) { + if (actor.properties == null) { + actor.properties = properties; + } else { + for (const key in properties) { + actor.properties[key] = properties[key]; + } + } + } + boxEnd() { + this.state.records.currentBox = void 0; + } + addDetails(actorId, text4) { + const actor = this.getActor(actorId); + const elem = document.getElementById(text4.text); + try { + const text5 = elem.innerHTML; + const details = JSON.parse(text5); + if (details.properties) { + this.insertProperties(actor, details.properties); + } + if (details.links) { + this.insertLinks(actor, details.links); + } + } catch (e3) { + log.error("error while parsing actor details text", e3); + } + } + getActorProperty(actor, key) { + if (actor?.properties !== void 0) { + return actor.properties[key]; + } + return void 0; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-redundant-type-constituents + apply(param) { + if (Array.isArray(param)) { + param.forEach((item) => { + this.apply(item); + }); + } else { + switch (param.type) { + case "sequenceIndex": + this.state.records.messages.push({ + id: this.state.records.messages.length.toString(), + from: void 0, + to: void 0, + message: { + start: param.sequenceIndex, + step: param.sequenceIndexStep, + visible: param.sequenceVisible + }, + wrap: false, + type: param.signalType + }); + break; + case "addParticipant": + this.addActor(param.actor, param.actor, param.description, param.draw, param.config); + break; + case "createParticipant": + if (this.state.records.actors.has(param.actor)) { + throw new Error( + "It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior" + ); + } + this.state.records.lastCreated = param.actor; + this.addActor(param.actor, param.actor, param.description, param.draw, param.config); + this.state.records.createdActors.set(param.actor, this.state.records.messages.length); + break; + case "destroyParticipant": + this.state.records.lastDestroyed = param.actor; + this.state.records.destroyedActors.set(param.actor, this.state.records.messages.length); + break; + case "activeStart": + this.addSignal(param.actor, void 0, void 0, param.signalType); + break; + case "activeEnd": + this.addSignal(param.actor, void 0, void 0, param.signalType); + break; + case "addNote": + this.addNote(param.actor, param.placement, param.text); + break; + case "addLinks": + this.addLinks(param.actor, param.text); + break; + case "addALink": + this.addALink(param.actor, param.text); + break; + case "addProperties": + this.addProperties(param.actor, param.text); + break; + case "addDetails": + this.addDetails(param.actor, param.text); + break; + case "addMessage": + if (this.state.records.lastCreated) { + if (param.to !== this.state.records.lastCreated) { + throw new Error( + "The created participant " + this.state.records.lastCreated.name + " does not have an associated creating message after its declaration. Please check the sequence diagram." + ); + } else { + this.state.records.lastCreated = void 0; + } + } else if (this.state.records.lastDestroyed) { + if (param.to !== this.state.records.lastDestroyed && param.from !== this.state.records.lastDestroyed) { + throw new Error( + "The destroyed participant " + this.state.records.lastDestroyed.name + " does not have an associated destroying message after its declaration. Please check the sequence diagram." + ); + } else { + this.state.records.lastDestroyed = void 0; + } + } + this.addSignal(param.from, param.to, param.msg, param.signalType, param.activate); + break; + case "boxStart": + this.addBox(param.boxData); + break; + case "boxEnd": + this.boxEnd(); + break; + case "loopStart": + this.addSignal(void 0, void 0, param.loopText, param.signalType); + break; + case "loopEnd": + this.addSignal(void 0, void 0, void 0, param.signalType); + break; + case "rectStart": + this.addSignal(void 0, void 0, param.color, param.signalType); + break; + case "rectEnd": + this.addSignal(void 0, void 0, void 0, param.signalType); + break; + case "optStart": + this.addSignal(void 0, void 0, param.optText, param.signalType); + break; + case "optEnd": + this.addSignal(void 0, void 0, void 0, param.signalType); + break; + case "altStart": + this.addSignal(void 0, void 0, param.altText, param.signalType); + break; + case "else": + this.addSignal(void 0, void 0, param.altText, param.signalType); + break; + case "altEnd": + this.addSignal(void 0, void 0, void 0, param.signalType); + break; + case "setAccTitle": + setAccTitle(param.text); + break; + case "parStart": + this.addSignal(void 0, void 0, param.parText, param.signalType); + break; + case "and": + this.addSignal(void 0, void 0, param.parText, param.signalType); + break; + case "parEnd": + this.addSignal(void 0, void 0, void 0, param.signalType); + break; + case "criticalStart": + this.addSignal(void 0, void 0, param.criticalText, param.signalType); + break; + case "option": + this.addSignal(void 0, void 0, param.optionText, param.signalType); + break; + case "criticalEnd": + this.addSignal(void 0, void 0, void 0, param.signalType); + break; + case "breakStart": + this.addSignal(void 0, void 0, param.breakText, param.signalType); + break; + case "breakEnd": + this.addSignal(void 0, void 0, void 0, param.signalType); + break; + } + } + } + getConfig() { + return getConfig2().sequence; + } + }; + } + }); + + // src/diagrams/sequence/styles.js + var getStyles9, styles_default8; + var init_styles8 = __esm({ + "src/diagrams/sequence/styles.js"() { + "use strict"; + getStyles9 = /* @__PURE__ */ __name((options2) => `.actor { + stroke: ${options2.actorBorder}; + fill: ${options2.actorBkg}; + } + + text.actor > tspan { + fill: ${options2.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${options2.actorLineColor}; + } + + .innerArc { + stroke-width: 1.5; + stroke-dasharray: none; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${options2.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${options2.signalColor}; + } + + #arrowhead path { + fill: ${options2.signalColor}; + stroke: ${options2.signalColor}; + } + + .sequenceNumber { + fill: ${options2.sequenceNumberColor}; + } + + #sequencenumber { + fill: ${options2.signalColor}; + } + + #crosshead path { + fill: ${options2.signalColor}; + stroke: ${options2.signalColor}; + } + + .messageText { + fill: ${options2.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${options2.labelBoxBorderColor}; + fill: ${options2.labelBoxBkgColor}; + } + + .labelText, .labelText > tspan { + fill: ${options2.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${options2.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${options2.labelBoxBorderColor}; + fill: ${options2.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${options2.noteBorderColor}; + fill: ${options2.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${options2.noteTextColor}; + stroke: none; + } + + .activation0 { + fill: ${options2.activationBkgColor}; + stroke: ${options2.activationBorderColor}; + } + + .activation1 { + fill: ${options2.activationBkgColor}; + stroke: ${options2.activationBorderColor}; + } + + .activation2 { + fill: ${options2.activationBkgColor}; + stroke: ${options2.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${options2.actorBkg}; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); +} + .actor-man line { + stroke: ${options2.actorBorder}; + fill: ${options2.actorBkg}; + } + .actor-man circle, line { + stroke: ${options2.actorBorder}; + fill: ${options2.actorBkg}; + stroke-width: 2px; + } + +`, "getStyles"); + styles_default8 = getStyles9; + } + }); + + // src/diagrams/sequence/svgDraw.js + var import_sanitize_url5, ACTOR_TYPE_WIDTH, TOP_ACTOR_CLASS, BOTTOM_ACTOR_CLASS, ACTOR_BOX_CLASS, ACTOR_MAN_FIGURE_CLASS, drawRect4, drawPopup, popupMenuToggle, drawKatex, drawText3, drawLabel, actorCnt, fixLifeLineHeights, drawActorTypeParticipant, drawActorTypeCollections, drawActorTypeQueue, drawActorTypeControl, drawActorTypeEntity, drawActorTypeDatabase, drawActorTypeBoundary, drawActorTypeActor, drawActor, drawBox, anchorElement, drawActivation, drawLoop, drawBackgroundRect2, insertDatabaseIcon2, insertComputerIcon2, insertClockIcon2, insertArrowHead2, insertArrowFilledHead2, insertSequenceNumber, insertArrowCrossHead2, getTextObj3, getNoteRect2, _drawTextCandidateFunc2, _drawMenuItemTextCandidateFunc, svgDraw_default2; + var init_svgDraw2 = __esm({ + "src/diagrams/sequence/svgDraw.js"() { + "use strict"; + import_sanitize_url5 = __toESM(require_dist(), 1); + init_config(); + init_utils2(); + init_common(); + init_svgDrawCommon(); + ACTOR_TYPE_WIDTH = 18 * 2; + TOP_ACTOR_CLASS = "actor-top"; + BOTTOM_ACTOR_CLASS = "actor-bottom"; + ACTOR_BOX_CLASS = "actor-box"; + ACTOR_MAN_FIGURE_CLASS = "actor-man"; + drawRect4 = /* @__PURE__ */ __name(function(elem, rectData) { + return drawRect(elem, rectData); + }, "drawRect"); + drawPopup = /* @__PURE__ */ __name(function(elem, actor, minMenuWidth, textAttrs, forceMenus) { + if (actor.links === void 0 || actor.links === null || Object.keys(actor.links).length === 0) { + return { height: 0, width: 0 }; + } + const links3 = actor.links; + const actorCnt2 = actor.actorCnt; + const rectData = actor.rectData; + var displayValue = "none"; + if (forceMenus) { + displayValue = "block !important"; + } + const g2 = elem.append("g"); + g2.attr("id", "actor" + actorCnt2 + "_popup"); + g2.attr("class", "actorPopupMenu"); + g2.attr("display", displayValue); + var actorClass = ""; + if (rectData.class !== void 0) { + actorClass = " " + rectData.class; + } + let menuWidth = rectData.width > minMenuWidth ? rectData.width : minMenuWidth; + const rectElem = g2.append("rect"); + rectElem.attr("class", "actorPopupMenuPanel" + actorClass); + rectElem.attr("x", rectData.x); + rectElem.attr("y", rectData.height); + rectElem.attr("fill", rectData.fill); + rectElem.attr("stroke", rectData.stroke); + rectElem.attr("width", menuWidth); + rectElem.attr("height", rectData.height); + rectElem.attr("rx", rectData.rx); + rectElem.attr("ry", rectData.ry); + if (links3 != null) { + var linkY = 20; + for (let key in links3) { + var linkElem = g2.append("a"); + var sanitizedLink = (0, import_sanitize_url5.sanitizeUrl)(links3[key]); + linkElem.attr("xlink:href", sanitizedLink); + linkElem.attr("target", "_blank"); + _drawMenuItemTextCandidateFunc(textAttrs)( + key, + linkElem, + rectData.x + 10, + rectData.height + linkY, + menuWidth, + 20, + { class: "actor" }, + textAttrs + ); + linkY += 30; + } + } + rectElem.attr("height", linkY); + return { height: rectData.height + linkY, width: menuWidth }; + }, "drawPopup"); + popupMenuToggle = /* @__PURE__ */ __name(function(popId) { + return "var pu = document.getElementById('" + popId + "'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"; + }, "popupMenuToggle"); + drawKatex = /* @__PURE__ */ __name(async function(elem, textData, msgModel = null) { + let textElem = elem.append("foreignObject"); + const linesSanitized = await renderKatexSanitized(textData.text, getConfig()); + const divElem = textElem.append("xhtml:div").attr("style", "width: fit-content;").attr("xmlns", "http://www.w3.org/1999/xhtml").html(linesSanitized); + const dim = divElem.node().getBoundingClientRect(); + textElem.attr("height", Math.round(dim.height)).attr("width", Math.round(dim.width)); + if (textData.class === "noteText") { + const rectElem = elem.node().firstChild; + rectElem.setAttribute("height", dim.height + 2 * textData.textMargin); + const rectDim = rectElem.getBBox(); + textElem.attr("x", Math.round(rectDim.x + rectDim.width / 2 - dim.width / 2)).attr("y", Math.round(rectDim.y + rectDim.height / 2 - dim.height / 2)); + } else if (msgModel) { + let { startx, stopx, starty } = msgModel; + if (startx > stopx) { + const temp = startx; + startx = stopx; + stopx = temp; + } + textElem.attr("x", Math.round(startx + Math.abs(startx - stopx) / 2 - dim.width / 2)); + if (textData.class === "loopText") { + textElem.attr("y", Math.round(starty)); + } else { + textElem.attr("y", Math.round(starty - dim.height)); + } + } + return [textElem]; + }, "drawKatex"); + drawText3 = /* @__PURE__ */ __name(function(elem, textData) { + let prevTextHeight = 0; + let textHeight = 0; + const lines = textData.text.split(common_default.lineBreakRegex); + const [_textFontSize, _textFontSizePx] = parseFontSize(textData.fontSize); + let textElems = []; + let dy = 0; + let yfunc = /* @__PURE__ */ __name(() => textData.y, "yfunc"); + if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) { + switch (textData.valign) { + case "top": + case "start": + yfunc = /* @__PURE__ */ __name(() => Math.round(textData.y + textData.textMargin), "yfunc"); + break; + case "middle": + case "center": + yfunc = /* @__PURE__ */ __name(() => Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2), "yfunc"); + break; + case "bottom": + case "end": + yfunc = /* @__PURE__ */ __name(() => Math.round( + textData.y + (prevTextHeight + textHeight + 2 * textData.textMargin) - textData.textMargin + ), "yfunc"); + break; + } + } + if (textData.anchor !== void 0 && textData.textMargin !== void 0 && textData.width !== void 0) { + switch (textData.anchor) { + case "left": + case "start": + textData.x = Math.round(textData.x + textData.textMargin); + textData.anchor = "start"; + textData.dominantBaseline = "middle"; + textData.alignmentBaseline = "middle"; + break; + case "middle": + case "center": + textData.x = Math.round(textData.x + textData.width / 2); + textData.anchor = "middle"; + textData.dominantBaseline = "middle"; + textData.alignmentBaseline = "middle"; + break; + case "right": + case "end": + textData.x = Math.round(textData.x + textData.width - textData.textMargin); + textData.anchor = "end"; + textData.dominantBaseline = "middle"; + textData.alignmentBaseline = "middle"; + break; + } + } + for (let [i2, line2] of lines.entries()) { + if (textData.textMargin !== void 0 && textData.textMargin === 0 && _textFontSize !== void 0) { + dy = i2 * _textFontSize; + } + const textElem = elem.append("text"); + textElem.attr("x", textData.x); + textElem.attr("y", yfunc()); + if (textData.anchor !== void 0) { + textElem.attr("text-anchor", textData.anchor).attr("dominant-baseline", textData.dominantBaseline).attr("alignment-baseline", textData.alignmentBaseline); + } + if (textData.fontFamily !== void 0) { + textElem.style("font-family", textData.fontFamily); + } + if (_textFontSizePx !== void 0) { + textElem.style("font-size", _textFontSizePx); + } + if (textData.fontWeight !== void 0) { + textElem.style("font-weight", textData.fontWeight); + } + if (textData.fill !== void 0) { + textElem.attr("fill", textData.fill); + } + if (textData.class !== void 0) { + textElem.attr("class", textData.class); + } + if (textData.dy !== void 0) { + textElem.attr("dy", textData.dy); + } else if (dy !== 0) { + textElem.attr("dy", dy); + } + const text4 = line2 || ZERO_WIDTH_SPACE; + if (textData.tspan) { + const span = textElem.append("tspan"); + span.attr("x", textData.x); + if (textData.fill !== void 0) { + span.attr("fill", textData.fill); + } + span.text(text4); + } else { + textElem.text(text4); + } + if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) { + textHeight += (textElem._groups || textElem)[0][0].getBBox().height; + prevTextHeight = textHeight; + } + textElems.push(textElem); + } + return textElems; + }, "drawText"); + drawLabel = /* @__PURE__ */ __name(function(elem, txtObject) { + function genPoints(x5, y6, width3, height2, cut) { + return x5 + "," + y6 + " " + (x5 + width3) + "," + y6 + " " + (x5 + width3) + "," + (y6 + height2 - cut) + " " + (x5 + width3 - cut * 1.2) + "," + (y6 + height2) + " " + x5 + "," + (y6 + height2); + } + __name(genPoints, "genPoints"); + const polygon2 = elem.append("polygon"); + polygon2.attr("points", genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7)); + polygon2.attr("class", "labelBox"); + txtObject.y = txtObject.y + txtObject.height / 2; + drawText3(elem, txtObject); + return polygon2; + }, "drawLabel"); + actorCnt = -1; + fixLifeLineHeights = /* @__PURE__ */ __name((diagram27, actors2, actorKeys, conf5) => { + if (!diagram27.select) { + return; + } + actorKeys.forEach((actorKey) => { + const actor = actors2.get(actorKey); + const actorDOM = diagram27.select("#actor" + actor.actorCnt); + if (!conf5.mirrorActors && actor.stopy) { + actorDOM.attr("y2", actor.stopy + actor.height / 2); + } else if (conf5.mirrorActors) { + actorDOM.attr("y2", actor.stopy); + } + }); + }, "fixLifeLineHeights"); + drawActorTypeParticipant = /* @__PURE__ */ __name(function(elem, actor, conf5, isFooter) { + const actorY = isFooter ? actor.stopy : actor.starty; + const center4 = actor.x + actor.width / 2; + const centerY = actorY + actor.height; + const boxplusLineGroup = elem.append("g").lower(); + var g2 = boxplusLineGroup; + if (!isFooter) { + actorCnt++; + if (Object.keys(actor.links || {}).length && !conf5.forceMenus) { + g2.attr("onclick", popupMenuToggle(`actor${actorCnt}_popup`)).attr("cursor", "pointer"); + } + g2.append("line").attr("id", "actor" + actorCnt).attr("x1", center4).attr("y1", centerY).attr("x2", center4).attr("y2", 2e3).attr("class", "actor-line 200").attr("stroke-width", "0.5px").attr("stroke", "#999").attr("name", actor.name); + g2 = boxplusLineGroup.append("g"); + actor.actorCnt = actorCnt; + if (actor.links != null) { + g2.attr("id", "root-" + actorCnt); + } + } + const rect3 = getNoteRect(); + var cssclass = "actor"; + if (actor.properties?.class) { + cssclass = actor.properties.class; + } else { + rect3.fill = "#eaeaea"; + } + if (isFooter) { + cssclass += ` ${BOTTOM_ACTOR_CLASS}`; + } else { + cssclass += ` ${TOP_ACTOR_CLASS}`; + } + rect3.x = actor.x; + rect3.y = actorY; + rect3.width = actor.width; + rect3.height = actor.height; + rect3.class = cssclass; + rect3.rx = 3; + rect3.ry = 3; + rect3.name = actor.name; + const rectElem = drawRect4(g2, rect3); + actor.rectData = rect3; + if (actor.properties?.icon) { + const iconSrc = actor.properties.icon.trim(); + if (iconSrc.charAt(0) === "@") { + drawEmbeddedImage(g2, rect3.x + rect3.width - 20, rect3.y + 10, iconSrc.substr(1)); + } else { + drawImage(g2, rect3.x + rect3.width - 20, rect3.y + 10, iconSrc); + } + } + _drawTextCandidateFunc2(conf5, hasKatex(actor.description))( + actor.description, + g2, + rect3.x, + rect3.y, + rect3.width, + rect3.height, + { class: `actor ${ACTOR_BOX_CLASS}` }, + conf5 + ); + let height2 = actor.height; + if (rectElem.node) { + const bounds4 = rectElem.node().getBBox(); + actor.height = bounds4.height; + height2 = bounds4.height; + } + return height2; + }, "drawActorTypeParticipant"); + drawActorTypeCollections = /* @__PURE__ */ __name(function(elem, actor, conf5, isFooter) { + const actorY = isFooter ? actor.stopy : actor.starty; + const center4 = actor.x + actor.width / 2; + const centerY = actorY + actor.height; + const boxplusLineGroup = elem.append("g").lower(); + var g2 = boxplusLineGroup; + if (!isFooter) { + actorCnt++; + if (Object.keys(actor.links || {}).length && !conf5.forceMenus) { + g2.attr("onclick", popupMenuToggle(`actor${actorCnt}_popup`)).attr("cursor", "pointer"); + } + g2.append("line").attr("id", "actor" + actorCnt).attr("x1", center4).attr("y1", centerY).attr("x2", center4).attr("y2", 2e3).attr("class", "actor-line 200").attr("stroke-width", "0.5px").attr("stroke", "#999").attr("name", actor.name); + g2 = boxplusLineGroup.append("g"); + actor.actorCnt = actorCnt; + if (actor.links != null) { + g2.attr("id", "root-" + actorCnt); + } + } + const rect3 = getNoteRect(); + var cssclass = "actor"; + if (actor.properties?.class) { + cssclass = actor.properties.class; + } else { + rect3.fill = "#eaeaea"; + } + if (isFooter) { + cssclass += ` ${BOTTOM_ACTOR_CLASS}`; + } else { + cssclass += ` ${TOP_ACTOR_CLASS}`; + } + rect3.x = actor.x; + rect3.y = actorY; + rect3.width = actor.width; + rect3.height = actor.height; + rect3.class = cssclass; + rect3.name = actor.name; + const offset = 6; + const shadowRect = { + ...rect3, + x: rect3.x + (isFooter ? -offset : -offset), + y: rect3.y + (isFooter ? +offset : +offset), + class: "actor" + }; + const rectElem = drawRect4(g2, rect3); + drawRect4(g2, shadowRect); + actor.rectData = rect3; + if (actor.properties?.icon) { + const iconSrc = actor.properties.icon.trim(); + if (iconSrc.charAt(0) === "@") { + drawEmbeddedImage(g2, rect3.x + rect3.width - 20, rect3.y + 10, iconSrc.substr(1)); + } else { + drawImage(g2, rect3.x + rect3.width - 20, rect3.y + 10, iconSrc); + } + } + _drawTextCandidateFunc2(conf5, hasKatex(actor.description))( + actor.description, + g2, + rect3.x - offset, + rect3.y + offset, + rect3.width, + rect3.height, + { class: `actor ${ACTOR_BOX_CLASS}` }, + conf5 + ); + let height2 = actor.height; + if (rectElem.node) { + const bounds4 = rectElem.node().getBBox(); + actor.height = bounds4.height; + height2 = bounds4.height; + } + return height2; + }, "drawActorTypeCollections"); + drawActorTypeQueue = /* @__PURE__ */ __name(function(elem, actor, conf5, isFooter) { + const actorY = isFooter ? actor.stopy : actor.starty; + const center4 = actor.x + actor.width / 2; + const centerY = actorY + actor.height; + const boxplusLineGroup = elem.append("g").lower(); + let g2 = boxplusLineGroup; + if (!isFooter) { + actorCnt++; + if (Object.keys(actor.links || {}).length && !conf5.forceMenus) { + g2.attr("onclick", popupMenuToggle(`actor${actorCnt}_popup`)).attr("cursor", "pointer"); + } + g2.append("line").attr("id", "actor" + actorCnt).attr("x1", center4).attr("y1", centerY).attr("x2", center4).attr("y2", 2e3).attr("class", "actor-line 200").attr("stroke-width", "0.5px").attr("stroke", "#999").attr("name", actor.name); + g2 = boxplusLineGroup.append("g"); + actor.actorCnt = actorCnt; + if (actor.links != null) { + g2.attr("id", "root-" + actorCnt); + } + } + const rect3 = getNoteRect(); + let cssclass = "actor"; + if (actor.properties?.class) { + cssclass = actor.properties.class; + } else { + rect3.fill = "#eaeaea"; + } + if (isFooter) { + cssclass += ` ${BOTTOM_ACTOR_CLASS}`; + } else { + cssclass += ` ${TOP_ACTOR_CLASS}`; + } + rect3.x = actor.x; + rect3.y = actorY; + rect3.width = actor.width; + rect3.height = actor.height; + rect3.class = cssclass; + rect3.name = actor.name; + const ry = rect3.height / 2; + const rx = ry / (2.5 + rect3.height / 50); + const cylinderGroup = g2.append("g"); + const cylinderArc = g2.append("g"); + cylinderGroup.append("path").attr( + "d", + `M ${rect3.x},${rect3.y + ry} + a ${rx},${ry} 0 0 0 0,${rect3.height} + h ${rect3.width - 2 * rx} + a ${rx},${ry} 0 0 0 0,-${rect3.height} + Z + ` + ).attr("class", cssclass); + cylinderArc.append("path").attr( + "d", + `M ${rect3.x},${rect3.y + ry} + a ${rx},${ry} 0 0 0 0,${rect3.height}` + ).attr("stroke", "#666").attr("stroke-width", "1px").attr("class", cssclass); + cylinderGroup.attr("transform", `translate(${rx}, ${-(rect3.height / 2)})`); + cylinderArc.attr("transform", `translate(${rect3.width - rx}, ${-rect3.height / 2})`); + actor.rectData = rect3; + if (actor.properties?.icon) { + const iconSrc = actor.properties.icon.trim(); + const iconX = rect3.x + rect3.width - 20; + const iconY = rect3.y + 10; + if (iconSrc.charAt(0) === "@") { + drawEmbeddedImage(g2, iconX, iconY, iconSrc.substr(1)); + } else { + drawImage(g2, iconX, iconY, iconSrc); + } + } + _drawTextCandidateFunc2(conf5, hasKatex(actor.description))( + actor.description, + g2, + rect3.x, + rect3.y, + rect3.width, + rect3.height, + { class: `actor ${ACTOR_BOX_CLASS}` }, + conf5 + ); + let height2 = actor.height; + const lastPath = cylinderGroup.select("path:last-child"); + if (lastPath.node()) { + const bounds4 = lastPath.node().getBBox(); + actor.height = bounds4.height; + height2 = bounds4.height; + } + return height2; + }, "drawActorTypeQueue"); + drawActorTypeControl = /* @__PURE__ */ __name(function(elem, actor, conf5, isFooter) { + const actorY = isFooter ? actor.stopy : actor.starty; + const center4 = actor.x + actor.width / 2; + const centerY = actorY + 75; + const line2 = elem.append("g").lower(); + if (!isFooter) { + actorCnt++; + line2.append("line").attr("id", "actor" + actorCnt).attr("x1", center4).attr("y1", centerY).attr("x2", center4).attr("y2", 2e3).attr("class", "actor-line 200").attr("stroke-width", "0.5px").attr("stroke", "#999").attr("name", actor.name); + actor.actorCnt = actorCnt; + } + const actElem = elem.append("g"); + let cssClass = ACTOR_MAN_FIGURE_CLASS; + if (isFooter) { + cssClass += ` ${BOTTOM_ACTOR_CLASS}`; + } else { + cssClass += ` ${TOP_ACTOR_CLASS}`; + } + actElem.attr("class", cssClass); + actElem.attr("name", actor.name); + const rect3 = getNoteRect(); + rect3.x = actor.x; + rect3.y = actorY; + rect3.fill = "#eaeaea"; + rect3.width = actor.width; + rect3.height = actor.height; + rect3.class = "actor"; + const cx = actor.x + actor.width / 2; + const cy = actorY + 30; + const r2 = 18; + actElem.append("defs").append("marker").attr("id", "filled-head-control").attr("refX", 11).attr("refY", 5.8).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "172.5").append("path").attr("d", "M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"); + actElem.append("circle").attr("cx", cx).attr("cy", cy).attr("r", r2).attr("fill", "#eaeaf7").attr("stroke", "#666").attr("stroke-width", 1.2); + actElem.append("line").attr("marker-end", "url(#filled-head-control)").attr("transform", `translate(${cx}, ${cy - r2})`); + const bounds4 = actElem.node().getBBox(); + actor.height = bounds4.height + 2 * (conf5?.sequence?.labelBoxHeight ?? 0); + _drawTextCandidateFunc2(conf5, hasKatex(actor.description))( + actor.description, + actElem, + rect3.x, + rect3.y + r2 + (isFooter ? 5 : 10), + rect3.width, + rect3.height, + { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` }, + conf5 + ); + return actor.height; + }, "drawActorTypeControl"); + drawActorTypeEntity = /* @__PURE__ */ __name(function(elem, actor, conf5, isFooter) { + const actorY = isFooter ? actor.stopy : actor.starty; + const center4 = actor.x + actor.width / 2; + const centerY = actorY + 75; + const line2 = elem.append("g").lower(); + const actElem = elem.append("g"); + let cssClass = ACTOR_MAN_FIGURE_CLASS; + if (isFooter) { + cssClass += ` ${BOTTOM_ACTOR_CLASS}`; + } else { + cssClass += ` ${TOP_ACTOR_CLASS}`; + } + actElem.attr("class", cssClass); + actElem.attr("name", actor.name); + const rect3 = getNoteRect(); + rect3.x = actor.x; + rect3.y = actorY; + rect3.fill = "#eaeaea"; + rect3.width = actor.width; + rect3.height = actor.height; + rect3.class = "actor"; + const cx = actor.x + actor.width / 2; + const cy = actorY + (!isFooter ? 25 : 10); + const r2 = 18; + actElem.append("circle").attr("cx", cx).attr("cy", cy).attr("r", r2).attr("width", actor.width).attr("height", actor.height); + actElem.append("line").attr("x1", cx - r2).attr("x2", cx + r2).attr("y1", cy + r2).attr("y2", cy + r2).attr("stroke", "#333").attr("stroke-width", 2); + const bounds4 = actElem.node().getBBox(); + actor.height = bounds4.height + (conf5?.sequence?.labelBoxHeight ?? 0); + if (!isFooter) { + actorCnt++; + line2.append("line").attr("id", "actor" + actorCnt).attr("x1", center4).attr("y1", centerY).attr("x2", center4).attr("y2", 2e3).attr("class", "actor-line 200").attr("stroke-width", "0.5px").attr("stroke", "#999").attr("name", actor.name); + actor.actorCnt = actorCnt; + } + _drawTextCandidateFunc2(conf5, hasKatex(actor.description))( + actor.description, + actElem, + rect3.x, + rect3.y + (!isFooter ? (cy + r2 - actorY) / 2 : (cy - actorY + r2 - 5) / 2), + rect3.width, + rect3.height, + { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` }, + conf5 + ); + if (!isFooter) { + actElem.attr("transform", `translate(${0}, ${r2 / 2})`); + } else { + actElem.attr("transform", `translate(${0}, ${r2 / 2})`); + } + return actor.height; + }, "drawActorTypeEntity"); + drawActorTypeDatabase = /* @__PURE__ */ __name(function(elem, actor, conf5, isFooter) { + const actorY = isFooter ? actor.stopy : actor.starty; + const center4 = actor.x + actor.width / 2; + const centerY = actorY + actor.height + 2 * conf5.boxTextMargin; + const boxplusLineGroup = elem.append("g").lower(); + let g2 = boxplusLineGroup; + if (!isFooter) { + actorCnt++; + if (Object.keys(actor.links || {}).length && !conf5.forceMenus) { + g2.attr("onclick", popupMenuToggle(`actor${actorCnt}_popup`)).attr("cursor", "pointer"); + } + g2.append("line").attr("id", "actor" + actorCnt).attr("x1", center4).attr("y1", centerY).attr("x2", center4).attr("y2", 2e3).attr("class", "actor-line 200").attr("stroke-width", "0.5px").attr("stroke", "#999").attr("name", actor.name); + g2 = boxplusLineGroup.append("g"); + actor.actorCnt = actorCnt; + if (actor.links != null) { + g2.attr("id", "root-" + actorCnt); + } + } + const rect3 = getNoteRect(); + let cssclass = "actor"; + if (actor.properties?.class) { + cssclass = actor.properties.class; + } else { + rect3.fill = "#eaeaea"; + } + if (isFooter) { + cssclass += ` ${BOTTOM_ACTOR_CLASS}`; + } else { + cssclass += ` ${TOP_ACTOR_CLASS}`; + } + rect3.x = actor.x; + rect3.y = actorY; + rect3.width = actor.width; + rect3.height = actor.height; + rect3.class = cssclass; + rect3.name = actor.name; + rect3.x = actor.x; + rect3.y = actorY; + const w4 = rect3.width / 4; + const h3 = rect3.width / 4; + const rx = w4 / 2; + const ry = rx / (2.5 + w4 / 50); + const cylinderGroup = g2.append("g"); + const d3 = ` + M ${rect3.x},${rect3.y + ry} + a ${rx},${ry} 0 0 0 ${w4},0 + a ${rx},${ry} 0 0 0 -${w4},0 + l 0,${h3 - 2 * ry} + a ${rx},${ry} 0 0 0 ${w4},0 + l 0,-${h3 - 2 * ry} +`; + cylinderGroup.append("path").attr("d", d3).attr("fill", "#eaeaea").attr("stroke", "#000").attr("stroke-width", 1).attr("class", cssclass); + if (!isFooter) { + cylinderGroup.attr("transform", `translate(${w4 * 1.5}, ${(rect3.height + ry) / 4})`); + } else { + cylinderGroup.attr("transform", `translate(${w4 * 1.5}, ${rect3.height / 4 - 2 * ry})`); + } + actor.rectData = rect3; + _drawTextCandidateFunc2(conf5, hasKatex(actor.description))( + actor.description, + g2, + rect3.x, + rect3.y + (!isFooter ? (rect3.height + ry) / 2 : (rect3.height + h3) / 4), + rect3.width, + rect3.height, + { class: `actor ${ACTOR_BOX_CLASS}` }, + conf5 + ); + const lastPath = cylinderGroup.select("path:last-child"); + if (lastPath.node()) { + const bounds4 = lastPath.node().getBBox(); + actor.height = bounds4.height + (conf5.sequence.labelBoxHeight ?? 0); + } + return actor.height; + }, "drawActorTypeDatabase"); + drawActorTypeBoundary = /* @__PURE__ */ __name(function(elem, actor, conf5, isFooter) { + const actorY = isFooter ? actor.stopy : actor.starty; + const center4 = actor.x + actor.width / 2; + const centerY = actorY + 80; + const radius2 = 30; + const line2 = elem.append("g").lower(); + if (!isFooter) { + actorCnt++; + line2.append("line").attr("id", "actor" + actorCnt).attr("x1", center4).attr("y1", centerY).attr("x2", center4).attr("y2", 2e3).attr("class", "actor-line 200").attr("stroke-width", "0.5px").attr("stroke", "#999").attr("name", actor.name); + actor.actorCnt = actorCnt; + } + const actElem = elem.append("g"); + let cssClass = ACTOR_MAN_FIGURE_CLASS; + if (isFooter) { + cssClass += ` ${BOTTOM_ACTOR_CLASS}`; + } else { + cssClass += ` ${TOP_ACTOR_CLASS}`; + } + actElem.attr("class", cssClass); + actElem.attr("name", actor.name); + const rect3 = getNoteRect(); + rect3.x = actor.x; + rect3.y = actorY; + rect3.fill = "#eaeaea"; + rect3.width = actor.width; + rect3.height = actor.height; + rect3.class = "actor"; + actElem.append("line").attr("id", "actor-man-torso" + actorCnt).attr("x1", actor.x + actor.width / 2 - radius2 * 2.5).attr("y1", actorY + 10).attr("x2", actor.x + actor.width / 2 - 15).attr("y2", actorY + 10); + actElem.append("line").attr("id", "actor-man-arms" + actorCnt).attr("x1", actor.x + actor.width / 2 - radius2 * 2.5).attr("y1", actorY + 0).attr("x2", actor.x + actor.width / 2 - radius2 * 2.5).attr("y2", actorY + 20); + actElem.append("circle").attr("cx", actor.x + actor.width / 2).attr("cy", actorY + 10).attr("r", radius2); + const bounds4 = actElem.node().getBBox(); + actor.height = bounds4.height + (conf5.sequence.labelBoxHeight ?? 0); + _drawTextCandidateFunc2(conf5, hasKatex(actor.description))( + actor.description, + actElem, + rect3.x, + rect3.y + (!isFooter ? radius2 / 2 + 3 : radius2 / 2 - 4), + rect3.width, + rect3.height, + { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` }, + conf5 + ); + if (!isFooter) { + actElem.attr("transform", `translate(0,${radius2 / 2 + 7})`); + } else { + actElem.attr("transform", `translate(0,${radius2 / 2 + 7})`); + } + return actor.height; + }, "drawActorTypeBoundary"); + drawActorTypeActor = /* @__PURE__ */ __name(function(elem, actor, conf5, isFooter) { + const actorY = isFooter ? actor.stopy : actor.starty; + const center4 = actor.x + actor.width / 2; + const centerY = actorY + 80; + const line2 = elem.append("g").lower(); + if (!isFooter) { + actorCnt++; + line2.append("line").attr("id", "actor" + actorCnt).attr("x1", center4).attr("y1", centerY).attr("x2", center4).attr("y2", 2e3).attr("class", "actor-line 200").attr("stroke-width", "0.5px").attr("stroke", "#999").attr("name", actor.name); + actor.actorCnt = actorCnt; + } + const actElem = elem.append("g"); + let cssClass = ACTOR_MAN_FIGURE_CLASS; + if (isFooter) { + cssClass += ` ${BOTTOM_ACTOR_CLASS}`; + } else { + cssClass += ` ${TOP_ACTOR_CLASS}`; + } + actElem.attr("class", cssClass); + actElem.attr("name", actor.name); + const rect3 = getNoteRect(); + rect3.x = actor.x; + rect3.y = actorY; + rect3.fill = "#eaeaea"; + rect3.width = actor.width; + rect3.height = actor.height; + rect3.class = "actor"; + rect3.rx = 3; + rect3.ry = 3; + actElem.append("line").attr("id", "actor-man-torso" + actorCnt).attr("x1", center4).attr("y1", actorY + 25).attr("x2", center4).attr("y2", actorY + 45); + actElem.append("line").attr("id", "actor-man-arms" + actorCnt).attr("x1", center4 - ACTOR_TYPE_WIDTH / 2).attr("y1", actorY + 33).attr("x2", center4 + ACTOR_TYPE_WIDTH / 2).attr("y2", actorY + 33); + actElem.append("line").attr("x1", center4 - ACTOR_TYPE_WIDTH / 2).attr("y1", actorY + 60).attr("x2", center4).attr("y2", actorY + 45); + actElem.append("line").attr("x1", center4).attr("y1", actorY + 45).attr("x2", center4 + ACTOR_TYPE_WIDTH / 2 - 2).attr("y2", actorY + 60); + const circle6 = actElem.append("circle"); + circle6.attr("cx", actor.x + actor.width / 2); + circle6.attr("cy", actorY + 10); + circle6.attr("r", 15); + circle6.attr("width", actor.width); + circle6.attr("height", actor.height); + const bounds4 = actElem.node().getBBox(); + actor.height = bounds4.height; + _drawTextCandidateFunc2(conf5, hasKatex(actor.description))( + actor.description, + actElem, + rect3.x, + rect3.y + 35, + rect3.width, + rect3.height, + { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` }, + conf5 + ); + return actor.height; + }, "drawActorTypeActor"); + drawActor = /* @__PURE__ */ __name(async function(elem, actor, conf5, isFooter) { + switch (actor.type) { + case "actor": + return await drawActorTypeActor(elem, actor, conf5, isFooter); + case "participant": + return await drawActorTypeParticipant(elem, actor, conf5, isFooter); + case "boundary": + return await drawActorTypeBoundary(elem, actor, conf5, isFooter); + case "control": + return await drawActorTypeControl(elem, actor, conf5, isFooter); + case "entity": + return await drawActorTypeEntity(elem, actor, conf5, isFooter); + case "database": + return await drawActorTypeDatabase(elem, actor, conf5, isFooter); + case "collections": + return await drawActorTypeCollections(elem, actor, conf5, isFooter); + case "queue": + return await drawActorTypeQueue(elem, actor, conf5, isFooter); + } + }, "drawActor"); + drawBox = /* @__PURE__ */ __name(function(elem, box, conf5) { + const boxplusTextGroup = elem.append("g"); + const g2 = boxplusTextGroup; + drawBackgroundRect2(g2, box); + if (box.name) { + _drawTextCandidateFunc2(conf5)( + box.name, + g2, + box.x, + box.y + conf5.boxTextMargin + (box.textMaxHeight || 0) / 2, + box.width, + 0, + { class: "text" }, + conf5 + ); + } + g2.lower(); + }, "drawBox"); + anchorElement = /* @__PURE__ */ __name(function(elem) { + return elem.append("g"); + }, "anchorElement"); + drawActivation = /* @__PURE__ */ __name(function(elem, bounds4, verticalPos, conf5, actorActivations2) { + const rect3 = getNoteRect(); + const g2 = bounds4.anchored; + rect3.x = bounds4.startx; + rect3.y = bounds4.starty; + rect3.class = "activation" + actorActivations2 % 3; + rect3.width = bounds4.stopx - bounds4.startx; + rect3.height = verticalPos - bounds4.starty; + drawRect4(g2, rect3); + }, "drawActivation"); + drawLoop = /* @__PURE__ */ __name(async function(elem, loopModel, labelText, conf5) { + const { + boxMargin, + boxTextMargin, + labelBoxHeight, + labelBoxWidth, + messageFontFamily: fontFamily, + messageFontSize: fontSize, + messageFontWeight: fontWeight + } = conf5; + const g2 = elem.append("g"); + const drawLoopLine = /* @__PURE__ */ __name(function(startx, starty, stopx, stopy) { + return g2.append("line").attr("x1", startx).attr("y1", starty).attr("x2", stopx).attr("y2", stopy).attr("class", "loopLine"); + }, "drawLoopLine"); + drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty); + drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy); + drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy); + drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy); + if (loopModel.sections !== void 0) { + loopModel.sections.forEach(function(item) { + drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style( + "stroke-dasharray", + "3, 3" + ); + }); + } + let txt = getTextObj(); + txt.text = labelText; + txt.x = loopModel.startx; + txt.y = loopModel.starty; + txt.fontFamily = fontFamily; + txt.fontSize = fontSize; + txt.fontWeight = fontWeight; + txt.anchor = "middle"; + txt.valign = "middle"; + txt.tspan = false; + txt.width = labelBoxWidth || 50; + txt.height = labelBoxHeight || 20; + txt.textMargin = boxTextMargin; + txt.class = "labelText"; + drawLabel(g2, txt); + txt = getTextObj3(); + txt.text = loopModel.title; + txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2; + txt.y = loopModel.starty + boxMargin + boxTextMargin; + txt.anchor = "middle"; + txt.valign = "middle"; + txt.textMargin = boxTextMargin; + txt.class = "loopText"; + txt.fontFamily = fontFamily; + txt.fontSize = fontSize; + txt.fontWeight = fontWeight; + txt.wrap = true; + let textElem = hasKatex(txt.text) ? await drawKatex(g2, txt, loopModel) : drawText3(g2, txt); + if (loopModel.sectionTitles !== void 0) { + for (const [idx, item] of Object.entries(loopModel.sectionTitles)) { + if (item.message) { + txt.text = item.message; + txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2; + txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin; + txt.class = "loopText"; + txt.anchor = "middle"; + txt.valign = "middle"; + txt.tspan = false; + txt.fontFamily = fontFamily; + txt.fontSize = fontSize; + txt.fontWeight = fontWeight; + txt.wrap = loopModel.wrap; + if (hasKatex(txt.text)) { + loopModel.starty = loopModel.sections[idx].y; + await drawKatex(g2, txt, loopModel); + } else { + drawText3(g2, txt); + } + let sectionHeight = Math.round( + textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr) + ); + loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin); + } + } + } + loopModel.height = Math.round(loopModel.stopy - loopModel.starty); + return g2; + }, "drawLoop"); + drawBackgroundRect2 = /* @__PURE__ */ __name(function(elem, bounds4) { + drawBackgroundRect(elem, bounds4); + }, "drawBackgroundRect"); + insertDatabaseIcon2 = /* @__PURE__ */ __name(function(elem) { + elem.append("defs").append("symbol").attr("id", "database").attr("fill-rule", "evenodd").attr("clip-rule", "evenodd").append("path").attr("transform", "scale(.5)").attr( + "d", + "M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z" + ); + }, "insertDatabaseIcon"); + insertComputerIcon2 = /* @__PURE__ */ __name(function(elem) { + elem.append("defs").append("symbol").attr("id", "computer").attr("width", "24").attr("height", "24").append("path").attr("transform", "scale(.5)").attr( + "d", + "M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z" + ); + }, "insertComputerIcon"); + insertClockIcon2 = /* @__PURE__ */ __name(function(elem) { + elem.append("defs").append("symbol").attr("id", "clock").attr("width", "24").attr("height", "24").append("path").attr("transform", "scale(.5)").attr( + "d", + "M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z" + ); + }, "insertClockIcon"); + insertArrowHead2 = /* @__PURE__ */ __name(function(elem) { + elem.append("defs").append("marker").attr("id", "arrowhead").attr("refX", 7.9).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto-start-reverse").append("path").attr("d", "M -1 0 L 10 5 L 0 10 z"); + }, "insertArrowHead"); + insertArrowFilledHead2 = /* @__PURE__ */ __name(function(elem) { + elem.append("defs").append("marker").attr("id", "filled-head").attr("refX", 15.5).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z"); + }, "insertArrowFilledHead"); + insertSequenceNumber = /* @__PURE__ */ __name(function(elem) { + elem.append("defs").append("marker").attr("id", "sequencenumber").attr("refX", 15).attr("refY", 15).attr("markerWidth", 60).attr("markerHeight", 40).attr("orient", "auto").append("circle").attr("cx", 15).attr("cy", 15).attr("r", 6); + }, "insertSequenceNumber"); + insertArrowCrossHead2 = /* @__PURE__ */ __name(function(elem) { + const defs2 = elem.append("defs"); + const marker = defs2.append("marker").attr("id", "crosshead").attr("markerWidth", 15).attr("markerHeight", 8).attr("orient", "auto").attr("refX", 4).attr("refY", 4.5); + marker.append("path").attr("fill", "none").attr("stroke", "#000000").style("stroke-dasharray", "0, 0").attr("stroke-width", "1pt").attr("d", "M 1,2 L 6,7 M 6,2 L 1,7"); + }, "insertArrowCrossHead"); + getTextObj3 = /* @__PURE__ */ __name(function() { + return { + x: 0, + y: 0, + fill: void 0, + anchor: void 0, + style: "#666", + width: void 0, + height: void 0, + textMargin: 0, + rx: 0, + ry: 0, + tspan: true, + valign: void 0 + }; + }, "getTextObj"); + getNoteRect2 = /* @__PURE__ */ __name(function() { + return { + x: 0, + y: 0, + fill: "#EDF2AE", + stroke: "#666", + width: 100, + anchor: "start", + height: 100, + rx: 0, + ry: 0 + }; + }, "getNoteRect"); + _drawTextCandidateFunc2 = /* @__PURE__ */ (function() { + function byText(content, g2, x5, y6, width3, height2, textAttrs) { + const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y6 + height2 / 2 + 5).style("text-anchor", "middle").text(content); + _setTextAttrs(text4, textAttrs); + } + __name(byText, "byText"); + function byTspan(content, g2, x5, y6, width3, height2, textAttrs, conf5) { + const { actorFontSize, actorFontFamily, actorFontWeight } = conf5; + const [_actorFontSize, _actorFontSizePx] = parseFontSize(actorFontSize); + const lines = content.split(common_default.lineBreakRegex); + for (let i2 = 0; i2 < lines.length; i2++) { + const dy = i2 * _actorFontSize - _actorFontSize * (lines.length - 1) / 2; + const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y6).style("text-anchor", "middle").style("font-size", _actorFontSizePx).style("font-weight", actorFontWeight).style("font-family", actorFontFamily); + text4.append("tspan").attr("x", x5 + width3 / 2).attr("dy", dy).text(lines[i2]); + text4.attr("y", y6 + height2 / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central"); + _setTextAttrs(text4, textAttrs); + } + } + __name(byTspan, "byTspan"); + function byFo(content, g2, x5, y6, width3, height2, textAttrs, conf5) { + const s2 = g2.append("switch"); + const f2 = s2.append("foreignObject").attr("x", x5).attr("y", y6).attr("width", width3).attr("height", height2); + const text4 = f2.append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); + text4.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(content); + byTspan(content, s2, x5, y6, width3, height2, textAttrs, conf5); + _setTextAttrs(text4, textAttrs); + } + __name(byFo, "byFo"); + async function byKatex(content, g2, x5, y6, width3, height2, textAttrs, conf5) { + const dim = await calculateMathMLDimensions(content, getConfig()); + const s2 = g2.append("switch"); + const f2 = s2.append("foreignObject").attr("x", x5 + width3 / 2 - dim.width / 2).attr("y", y6 + height2 / 2 - dim.height / 2).attr("width", dim.width).attr("height", dim.height); + const text4 = f2.append("xhtml:div").style("height", "100%").style("width", "100%"); + text4.append("div").style("text-align", "center").style("vertical-align", "middle").html(await renderKatexSanitized(content, getConfig())); + byTspan(content, s2, x5, y6, width3, height2, textAttrs, conf5); + _setTextAttrs(text4, textAttrs); + } + __name(byKatex, "byKatex"); + function _setTextAttrs(toText, fromTextAttrsDict) { + for (const key in fromTextAttrsDict) { + if (fromTextAttrsDict.hasOwnProperty(key)) { + toText.attr(key, fromTextAttrsDict[key]); + } + } + } + __name(_setTextAttrs, "_setTextAttrs"); + return function(conf5, hasKatex2 = false) { + if (hasKatex2) { + return byKatex; + } + return conf5.textPlacement === "fo" ? byFo : conf5.textPlacement === "old" ? byText : byTspan; + }; + })(); + _drawMenuItemTextCandidateFunc = /* @__PURE__ */ (function() { + function byText(content, g2, x5, y6, width3, height2, textAttrs) { + const text4 = g2.append("text").attr("x", x5).attr("y", y6).style("text-anchor", "start").text(content); + _setTextAttrs(text4, textAttrs); + } + __name(byText, "byText"); + function byTspan(content, g2, x5, y6, width3, height2, textAttrs, conf5) { + const { actorFontSize, actorFontFamily, actorFontWeight } = conf5; + const lines = content.split(common_default.lineBreakRegex); + for (let i2 = 0; i2 < lines.length; i2++) { + const dy = i2 * actorFontSize - actorFontSize * (lines.length - 1) / 2; + const text4 = g2.append("text").attr("x", x5).attr("y", y6).style("text-anchor", "start").style("font-size", actorFontSize).style("font-weight", actorFontWeight).style("font-family", actorFontFamily); + text4.append("tspan").attr("x", x5).attr("dy", dy).text(lines[i2]); + text4.attr("y", y6 + height2 / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central"); + _setTextAttrs(text4, textAttrs); + } + } + __name(byTspan, "byTspan"); + function byFo(content, g2, x5, y6, width3, height2, textAttrs, conf5) { + const s2 = g2.append("switch"); + const f2 = s2.append("foreignObject").attr("x", x5).attr("y", y6).attr("width", width3).attr("height", height2); + const text4 = f2.append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); + text4.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(content); + byTspan(content, s2, x5, y6, width3, height2, textAttrs, conf5); + _setTextAttrs(text4, textAttrs); + } + __name(byFo, "byFo"); + function _setTextAttrs(toText, fromTextAttrsDict) { + for (const key in fromTextAttrsDict) { + if (fromTextAttrsDict.hasOwnProperty(key)) { + toText.attr(key, fromTextAttrsDict[key]); + } + } + } + __name(_setTextAttrs, "_setTextAttrs"); + return function(conf5) { + return conf5.textPlacement === "fo" ? byFo : conf5.textPlacement === "old" ? byText : byTspan; + }; + })(); + svgDraw_default2 = { + drawRect: drawRect4, + drawText: drawText3, + drawLabel, + drawActor, + drawBox, + drawPopup, + anchorElement, + drawActivation, + drawLoop, + drawBackgroundRect: drawBackgroundRect2, + insertArrowHead: insertArrowHead2, + insertArrowFilledHead: insertArrowFilledHead2, + insertSequenceNumber, + insertArrowCrossHead: insertArrowCrossHead2, + insertDatabaseIcon: insertDatabaseIcon2, + insertComputerIcon: insertComputerIcon2, + insertClockIcon: insertClockIcon2, + getTextObj: getTextObj3, + getNoteRect: getNoteRect2, + fixLifeLineHeights, + sanitizeUrl: import_sanitize_url5.sanitizeUrl + }; + } + }); + + // src/diagrams/sequence/sequenceRenderer.ts + async function boundMessage(_diagram, msgModel) { + bounds2.bumpVerticalPos(10); + const { startx, stopx, message } = msgModel; + const lines = common_default.splitBreaks(message).length; + const isKatexMsg = hasKatex(message); + const textDims = isKatexMsg ? await calculateMathMLDimensions(message, getConfig2()) : utils_default2.calculateTextDimensions(message, messageFont2(conf2)); + if (!isKatexMsg) { + const lineHeight = textDims.height / lines; + msgModel.height += lineHeight; + bounds2.bumpVerticalPos(lineHeight); + } + let lineStartY; + let totalOffset = textDims.height - 10; + const textWidth = textDims.width; + if (startx === stopx) { + lineStartY = bounds2.getVerticalPos() + totalOffset; + if (!conf2.rightAngles) { + totalOffset += conf2.boxMargin; + lineStartY = bounds2.getVerticalPos() + totalOffset; + } + totalOffset += 30; + const dx = common_default.getMax(textWidth / 2, conf2.width / 2); + bounds2.insert( + startx - dx, + bounds2.getVerticalPos() - 10 + totalOffset, + stopx + dx, + bounds2.getVerticalPos() + 30 + totalOffset + ); + } else { + totalOffset += conf2.boxMargin; + lineStartY = bounds2.getVerticalPos() + totalOffset; + bounds2.insert(startx, lineStartY - 10, stopx, lineStartY); + } + bounds2.bumpVerticalPos(totalOffset); + msgModel.height += totalOffset; + msgModel.stopy = msgModel.starty + msgModel.height; + bounds2.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy); + return lineStartY; + } + function adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) { + bounds2.bumpVerticalPos(preMargin); + let heightAdjust = postMargin; + if (msg.id && msg.message && loopWidths[msg.id]) { + const loopWidth = loopWidths[msg.id].width; + const textConf = messageFont2(conf2); + msg.message = utils_default2.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf2.wrapPadding, textConf); + msg.width = loopWidth; + msg.wrap = true; + const textDims = utils_default2.calculateTextDimensions(msg.message, textConf); + const totalOffset = common_default.getMax(textDims.height, conf2.labelBoxHeight); + heightAdjust = postMargin + totalOffset; + log.debug(`${totalOffset} - ${msg.message}`); + } + addLoopFn(msg); + bounds2.bumpVerticalPos(heightAdjust); + } + function adjustCreatedDestroyedData(msg, msgModel, lineStartY, index, actors2, createdActors, destroyedActors) { + function receiverAdjustment(actor, adjustment) { + if (actor.x < actors2.get(msg.from).x) { + bounds2.insert( + msgModel.stopx - adjustment, + msgModel.starty, + msgModel.startx, + msgModel.stopy + actor.height / 2 + conf2.noteMargin + ); + msgModel.stopx = msgModel.stopx + adjustment; + } else { + bounds2.insert( + msgModel.startx, + msgModel.starty, + msgModel.stopx + adjustment, + msgModel.stopy + actor.height / 2 + conf2.noteMargin + ); + msgModel.stopx = msgModel.stopx - adjustment; + } + } + __name(receiverAdjustment, "receiverAdjustment"); + function senderAdjustment(actor, adjustment) { + if (actor.x < actors2.get(msg.to).x) { + bounds2.insert( + msgModel.startx - adjustment, + msgModel.starty, + msgModel.stopx, + msgModel.stopy + actor.height / 2 + conf2.noteMargin + ); + msgModel.startx = msgModel.startx + adjustment; + } else { + bounds2.insert( + msgModel.stopx, + msgModel.starty, + msgModel.startx + adjustment, + msgModel.stopy + actor.height / 2 + conf2.noteMargin + ); + msgModel.startx = msgModel.startx - adjustment; + } + } + __name(senderAdjustment, "senderAdjustment"); + const actorArray = [ + PARTICIPANT_TYPE.ACTOR, + PARTICIPANT_TYPE.CONTROL, + PARTICIPANT_TYPE.ENTITY, + PARTICIPANT_TYPE.DATABASE + ]; + if (createdActors.get(msg.to) == index) { + const actor = actors2.get(msg.to); + const adjustment = actorArray.includes(actor.type) ? ACTOR_TYPE_WIDTH / 2 + 3 : actor.width / 2 + 3; + receiverAdjustment(actor, adjustment); + actor.starty = lineStartY - actor.height / 2; + bounds2.bumpVerticalPos(actor.height / 2); + } else if (destroyedActors.get(msg.from) == index) { + const actor = actors2.get(msg.from); + if (conf2.mirrorActors) { + const adjustment = actorArray.includes(actor.type) ? ACTOR_TYPE_WIDTH / 2 : actor.width / 2; + senderAdjustment(actor, adjustment); + } + actor.stopy = lineStartY - actor.height / 2; + bounds2.bumpVerticalPos(actor.height / 2); + } else if (destroyedActors.get(msg.to) == index) { + const actor = actors2.get(msg.to); + if (conf2.mirrorActors) { + const adjustment = actorArray.includes(actor.type) ? ACTOR_TYPE_WIDTH / 2 + 3 : actor.width / 2 + 3; + receiverAdjustment(actor, adjustment); + } + actor.stopy = lineStartY - actor.height / 2; + bounds2.bumpVerticalPos(actor.height / 2); + } + } + async function getMaxMessageWidthPerActor(actors2, messages, diagObj) { + const maxMessageWidthPerActor = {}; + for (const msg of messages) { + if (actors2.get(msg.to) && actors2.get(msg.from)) { + const actor = actors2.get(msg.to); + if (msg.placement === diagObj.db.PLACEMENT.LEFTOF && !actor.prevActor) { + continue; + } + if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF && !actor.nextActor) { + continue; + } + const isNote = msg.placement !== void 0; + const isMessage = !isNote; + const textFont = isNote ? noteFont(conf2) : messageFont2(conf2); + const wrappedMessage = msg.wrap ? utils_default2.wrapLabel(msg.message, conf2.width - 2 * conf2.wrapPadding, textFont) : msg.message; + const messageDimensions = hasKatex(wrappedMessage) ? await calculateMathMLDimensions(msg.message, getConfig2()) : utils_default2.calculateTextDimensions(wrappedMessage, textFont); + const messageWidth = messageDimensions.width + 2 * conf2.wrapPadding; + if (isMessage && msg.from === actor.nextActor) { + maxMessageWidthPerActor[msg.to] = common_default.getMax( + maxMessageWidthPerActor[msg.to] || 0, + messageWidth + ); + } else if (isMessage && msg.from === actor.prevActor) { + maxMessageWidthPerActor[msg.from] = common_default.getMax( + maxMessageWidthPerActor[msg.from] || 0, + messageWidth + ); + } else if (isMessage && msg.from === msg.to) { + maxMessageWidthPerActor[msg.from] = common_default.getMax( + maxMessageWidthPerActor[msg.from] || 0, + messageWidth / 2 + ); + maxMessageWidthPerActor[msg.to] = common_default.getMax( + maxMessageWidthPerActor[msg.to] || 0, + messageWidth / 2 + ); + } else if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) { + maxMessageWidthPerActor[msg.from] = common_default.getMax( + maxMessageWidthPerActor[msg.from] || 0, + messageWidth + ); + } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) { + maxMessageWidthPerActor[actor.prevActor] = common_default.getMax( + maxMessageWidthPerActor[actor.prevActor] || 0, + messageWidth + ); + } else if (msg.placement === diagObj.db.PLACEMENT.OVER) { + if (actor.prevActor) { + maxMessageWidthPerActor[actor.prevActor] = common_default.getMax( + maxMessageWidthPerActor[actor.prevActor] || 0, + messageWidth / 2 + ); + } + if (actor.nextActor) { + maxMessageWidthPerActor[msg.from] = common_default.getMax( + maxMessageWidthPerActor[msg.from] || 0, + messageWidth / 2 + ); + } + } + } + } + log.debug("maxMessageWidthPerActor:", maxMessageWidthPerActor); + return maxMessageWidthPerActor; + } + async function calculateActorMargins(actors2, actorToMessageWidth, boxes) { + let maxHeight = 0; + for (const prop of actors2.keys()) { + const actor = actors2.get(prop); + if (actor.wrap) { + actor.description = utils_default2.wrapLabel( + actor.description, + conf2.width - 2 * conf2.wrapPadding, + actorFont(conf2) + ); + } + const actDims = hasKatex(actor.description) ? await calculateMathMLDimensions(actor.description, getConfig2()) : utils_default2.calculateTextDimensions(actor.description, actorFont(conf2)); + actor.width = actor.wrap ? conf2.width : common_default.getMax(conf2.width, actDims.width + 2 * conf2.wrapPadding); + actor.height = actor.wrap ? common_default.getMax(actDims.height, conf2.height) : conf2.height; + maxHeight = common_default.getMax(maxHeight, actor.height); + } + for (const actorKey in actorToMessageWidth) { + const actor = actors2.get(actorKey); + if (!actor) { + continue; + } + const nextActor = actors2.get(actor.nextActor); + if (!nextActor) { + const messageWidth2 = actorToMessageWidth[actorKey]; + const actorWidth2 = messageWidth2 + conf2.actorMargin - actor.width / 2; + actor.margin = common_default.getMax(actorWidth2, conf2.actorMargin); + continue; + } + const messageWidth = actorToMessageWidth[actorKey]; + const actorWidth = messageWidth + conf2.actorMargin - actor.width / 2 - nextActor.width / 2; + actor.margin = common_default.getMax(actorWidth, conf2.actorMargin); + } + let maxBoxHeight = 0; + boxes.forEach((box) => { + const textFont = messageFont2(conf2); + let totalWidth = box.actorKeys.reduce((total, aKey) => { + return total += actors2.get(aKey).width + (actors2.get(aKey).margin || 0); + }, 0); + const standardBoxPadding = conf2.boxMargin * 8; + totalWidth += standardBoxPadding; + totalWidth -= 2 * conf2.boxTextMargin; + if (box.wrap) { + box.name = utils_default2.wrapLabel(box.name, totalWidth - 2 * conf2.wrapPadding, textFont); + } + const boxMsgDimensions = utils_default2.calculateTextDimensions(box.name, textFont); + maxBoxHeight = common_default.getMax(boxMsgDimensions.height, maxBoxHeight); + const minWidth = common_default.getMax(totalWidth, boxMsgDimensions.width + 2 * conf2.wrapPadding); + box.margin = conf2.boxTextMargin; + if (totalWidth < minWidth) { + const missing = (minWidth - totalWidth) / 2; + box.margin += missing; + } + }); + boxes.forEach((box) => box.textMaxHeight = maxBoxHeight); + return common_default.getMax(maxHeight, conf2.height); + } + var conf2, bounds2, drawNote, messageFont2, noteFont, actorFont, drawMessage, addActorRenderingData, drawActors, drawActorsPopup, setConf3, actorActivations, activationBounds, draw11, getRequiredPopupWidth, buildNoteModel, buildMessageModel, calculateLoopBounds, sequenceRenderer_default; + var init_sequenceRenderer = __esm({ + "src/diagrams/sequence/sequenceRenderer.ts"() { + "use strict"; + init_src32(); + init_svgDraw2(); + init_logger(); + init_common(); + init_common(); + init_svgDrawCommon(); + init_diagramAPI(); + init_assignWithDepth(); + init_utils2(); + init_setupGraphViewbox(); + init_sequenceDb(); + conf2 = {}; + bounds2 = { + data: { + startx: void 0, + stopx: void 0, + starty: void 0, + stopy: void 0 + }, + verticalPos: 0, + sequenceItems: [], + activations: [], + models: { + getHeight: /* @__PURE__ */ __name(function() { + return Math.max.apply( + null, + this.actors.length === 0 ? [0] : this.actors.map((actor) => actor.height || 0) + ) + (this.loops.length === 0 ? 0 : this.loops.map((it) => it.height || 0).reduce((acc, h3) => acc + h3)) + (this.messages.length === 0 ? 0 : this.messages.map((it) => it.height || 0).reduce((acc, h3) => acc + h3)) + (this.notes.length === 0 ? 0 : this.notes.map((it) => it.height || 0).reduce((acc, h3) => acc + h3)); + }, "getHeight"), + clear: /* @__PURE__ */ __name(function() { + this.actors = []; + this.boxes = []; + this.loops = []; + this.messages = []; + this.notes = []; + }, "clear"), + addBox: /* @__PURE__ */ __name(function(boxModel) { + this.boxes.push(boxModel); + }, "addBox"), + addActor: /* @__PURE__ */ __name(function(actorModel) { + this.actors.push(actorModel); + }, "addActor"), + addLoop: /* @__PURE__ */ __name(function(loopModel) { + this.loops.push(loopModel); + }, "addLoop"), + addMessage: /* @__PURE__ */ __name(function(msgModel) { + this.messages.push(msgModel); + }, "addMessage"), + addNote: /* @__PURE__ */ __name(function(noteModel) { + this.notes.push(noteModel); + }, "addNote"), + lastActor: /* @__PURE__ */ __name(function() { + return this.actors[this.actors.length - 1]; + }, "lastActor"), + lastLoop: /* @__PURE__ */ __name(function() { + return this.loops[this.loops.length - 1]; + }, "lastLoop"), + lastMessage: /* @__PURE__ */ __name(function() { + return this.messages[this.messages.length - 1]; + }, "lastMessage"), + lastNote: /* @__PURE__ */ __name(function() { + return this.notes[this.notes.length - 1]; + }, "lastNote"), + actors: [], + boxes: [], + loops: [], + messages: [], + notes: [] + }, + init: /* @__PURE__ */ __name(function() { + this.sequenceItems = []; + this.activations = []; + this.models.clear(); + this.data = { + startx: void 0, + stopx: void 0, + starty: void 0, + stopy: void 0 + }; + this.verticalPos = 0; + setConf3(getConfig2()); + }, "init"), + updateVal: /* @__PURE__ */ __name(function(obj, key, val, fun) { + if (obj[key] === void 0) { + obj[key] = val; + } else { + obj[key] = fun(val, obj[key]); + } + }, "updateVal"), + updateBounds: /* @__PURE__ */ __name(function(startx, starty, stopx, stopy) { + const _self = this; + let cnt4 = 0; + function updateFn(type3) { + return /* @__PURE__ */ __name(function updateItemBounds(item) { + cnt4++; + const n2 = _self.sequenceItems.length - cnt4 + 1; + _self.updateVal(item, "starty", starty - n2 * conf2.boxMargin, Math.min); + _self.updateVal(item, "stopy", stopy + n2 * conf2.boxMargin, Math.max); + _self.updateVal(bounds2.data, "startx", startx - n2 * conf2.boxMargin, Math.min); + _self.updateVal(bounds2.data, "stopx", stopx + n2 * conf2.boxMargin, Math.max); + if (!(type3 === "activation")) { + _self.updateVal(item, "startx", startx - n2 * conf2.boxMargin, Math.min); + _self.updateVal(item, "stopx", stopx + n2 * conf2.boxMargin, Math.max); + _self.updateVal(bounds2.data, "starty", starty - n2 * conf2.boxMargin, Math.min); + _self.updateVal(bounds2.data, "stopy", stopy + n2 * conf2.boxMargin, Math.max); } - FDLayoutConstants.MAX_ITERATIONS = 2500; - FDLayoutConstants.DEFAULT_EDGE_LENGTH = 50; - FDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45; - FDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500; - FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4; - FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1; - FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8; - FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5; - FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true; - FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true; - FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3; - FDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33; - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1e3; - FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5e3; - FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100; - FDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3; - FDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10; - FDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100; - FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1; - FDLayoutConstants.MIN_EDGE_LENGTH = 1; - FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10; - module3.exports = FDLayoutConstants; - }, - /* 8 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var Point3 = __webpack_require__(12); - function IGeometry() { + }, "updateItemBounds"); + } + __name(updateFn, "updateFn"); + this.sequenceItems.forEach(updateFn()); + this.activations.forEach(updateFn("activation")); + }, "updateBounds"), + insert: /* @__PURE__ */ __name(function(startx, starty, stopx, stopy) { + const _startx = common_default.getMin(startx, stopx); + const _stopx = common_default.getMax(startx, stopx); + const _starty = common_default.getMin(starty, stopy); + const _stopy = common_default.getMax(starty, stopy); + this.updateVal(bounds2.data, "startx", _startx, Math.min); + this.updateVal(bounds2.data, "starty", _starty, Math.min); + this.updateVal(bounds2.data, "stopx", _stopx, Math.max); + this.updateVal(bounds2.data, "stopy", _stopy, Math.max); + this.updateBounds(_startx, _starty, _stopx, _stopy); + }, "insert"), + newActivation: /* @__PURE__ */ __name(function(message, diagram27, actors2) { + const actorRect = actors2.get(message.from); + const stackedSize = actorActivations(message.from).length || 0; + const x5 = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf2.activationWidth / 2; + this.activations.push({ + startx: x5, + starty: this.verticalPos + 2, + stopx: x5 + conf2.activationWidth, + stopy: void 0, + actor: message.from, + anchored: svgDraw_default2.anchorElement(diagram27) + }); + }, "newActivation"), + endActivation: /* @__PURE__ */ __name(function(message) { + const lastActorActivationIdx = this.activations.map(function(activation) { + return activation.actor; + }).lastIndexOf(message.from); + return this.activations.splice(lastActorActivationIdx, 1)[0]; + }, "endActivation"), + createLoop: /* @__PURE__ */ __name(function(title2 = { message: void 0, wrap: false, width: void 0 }, fill) { + return { + startx: void 0, + starty: this.verticalPos, + stopx: void 0, + stopy: void 0, + title: title2.message, + wrap: title2.wrap, + width: title2.width, + height: 0, + fill + }; + }, "createLoop"), + newLoop: /* @__PURE__ */ __name(function(title2 = { message: void 0, wrap: false, width: void 0 }, fill) { + this.sequenceItems.push(this.createLoop(title2, fill)); + }, "newLoop"), + endLoop: /* @__PURE__ */ __name(function() { + return this.sequenceItems.pop(); + }, "endLoop"), + isLoopOverlap: /* @__PURE__ */ __name(function() { + return this.sequenceItems.length ? this.sequenceItems[this.sequenceItems.length - 1].overlap : false; + }, "isLoopOverlap"), + addSectionToLoop: /* @__PURE__ */ __name(function(message) { + const loop = this.sequenceItems.pop(); + loop.sections = loop.sections || []; + loop.sectionTitles = loop.sectionTitles || []; + loop.sections.push({ y: bounds2.getVerticalPos(), height: 0 }); + loop.sectionTitles.push(message); + this.sequenceItems.push(loop); + }, "addSectionToLoop"), + saveVerticalPos: /* @__PURE__ */ __name(function() { + if (this.isLoopOverlap()) { + this.savedVerticalPos = this.verticalPos; + } + }, "saveVerticalPos"), + resetVerticalPos: /* @__PURE__ */ __name(function() { + if (this.isLoopOverlap()) { + this.verticalPos = this.savedVerticalPos; + } + }, "resetVerticalPos"), + bumpVerticalPos: /* @__PURE__ */ __name(function(bump) { + this.verticalPos = this.verticalPos + bump; + this.data.stopy = common_default.getMax(this.data.stopy, this.verticalPos); + }, "bumpVerticalPos"), + getVerticalPos: /* @__PURE__ */ __name(function() { + return this.verticalPos; + }, "getVerticalPos"), + getBounds: /* @__PURE__ */ __name(function() { + return { bounds: this.data, models: this.models }; + }, "getBounds") + }; + drawNote = /* @__PURE__ */ __name(async function(elem, noteModel) { + bounds2.bumpVerticalPos(conf2.boxMargin); + noteModel.height = conf2.boxMargin; + noteModel.starty = bounds2.getVerticalPos(); + const rect3 = getNoteRect(); + rect3.x = noteModel.startx; + rect3.y = noteModel.starty; + rect3.width = noteModel.width || conf2.width; + rect3.class = "note"; + const g2 = elem.append("g"); + const rectElem = svgDraw_default2.drawRect(g2, rect3); + const textObj = getTextObj(); + textObj.x = noteModel.startx; + textObj.y = noteModel.starty; + textObj.width = rect3.width; + textObj.dy = "1em"; + textObj.text = noteModel.message; + textObj.class = "noteText"; + textObj.fontFamily = conf2.noteFontFamily; + textObj.fontSize = conf2.noteFontSize; + textObj.fontWeight = conf2.noteFontWeight; + textObj.anchor = conf2.noteAlign; + textObj.textMargin = conf2.noteMargin; + textObj.valign = "center"; + const textElem = hasKatex(textObj.text) ? await drawKatex(g2, textObj) : drawText3(g2, textObj); + const textHeight = Math.round( + textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr) + ); + rectElem.attr("height", textHeight + 2 * conf2.noteMargin); + noteModel.height += textHeight + 2 * conf2.noteMargin; + bounds2.bumpVerticalPos(textHeight + 2 * conf2.noteMargin); + noteModel.stopy = noteModel.starty + textHeight + 2 * conf2.noteMargin; + noteModel.stopx = noteModel.startx + rect3.width; + bounds2.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy); + bounds2.models.addNote(noteModel); + }, "drawNote"); + messageFont2 = /* @__PURE__ */ __name((cnf) => { + return { + fontFamily: cnf.messageFontFamily, + fontSize: cnf.messageFontSize, + fontWeight: cnf.messageFontWeight + }; + }, "messageFont"); + noteFont = /* @__PURE__ */ __name((cnf) => { + return { + fontFamily: cnf.noteFontFamily, + fontSize: cnf.noteFontSize, + fontWeight: cnf.noteFontWeight + }; + }, "noteFont"); + actorFont = /* @__PURE__ */ __name((cnf) => { + return { + fontFamily: cnf.actorFontFamily, + fontSize: cnf.actorFontSize, + fontWeight: cnf.actorFontWeight + }; + }, "actorFont"); + __name(boundMessage, "boundMessage"); + drawMessage = /* @__PURE__ */ __name(async function(diagram27, msgModel, lineStartY, diagObj) { + const { startx, stopx, starty, message, type: type3, sequenceIndex, sequenceVisible } = msgModel; + const textDims = utils_default2.calculateTextDimensions(message, messageFont2(conf2)); + const textObj = getTextObj(); + textObj.x = startx; + textObj.y = starty + 10; + textObj.width = stopx - startx; + textObj.class = "messageText"; + textObj.dy = "1em"; + textObj.text = message; + textObj.fontFamily = conf2.messageFontFamily; + textObj.fontSize = conf2.messageFontSize; + textObj.fontWeight = conf2.messageFontWeight; + textObj.anchor = conf2.messageAlign; + textObj.valign = "center"; + textObj.textMargin = conf2.wrapPadding; + textObj.tspan = false; + if (hasKatex(textObj.text)) { + await drawKatex(diagram27, textObj, { startx, stopx, starty: lineStartY }); + } else { + drawText3(diagram27, textObj); + } + const textWidth = textDims.width; + let line2; + if (startx === stopx) { + if (conf2.rightAngles) { + line2 = diagram27.append("path").attr( + "d", + `M ${startx},${lineStartY} H ${startx + common_default.getMax(conf2.width / 2, textWidth / 2)} V ${lineStartY + 25} H ${startx}` + ); + } else { + line2 = diagram27.append("path").attr( + "d", + "M " + startx + "," + lineStartY + " C " + (startx + 60) + "," + (lineStartY - 10) + " " + (startx + 60) + "," + (lineStartY + 30) + " " + startx + "," + (lineStartY + 20) + ); + } + } else { + line2 = diagram27.append("line"); + line2.attr("x1", startx); + line2.attr("y1", lineStartY); + line2.attr("x2", stopx); + line2.attr("y2", lineStartY); + } + if (type3 === diagObj.db.LINETYPE.DOTTED || type3 === diagObj.db.LINETYPE.DOTTED_CROSS || type3 === diagObj.db.LINETYPE.DOTTED_POINT || type3 === diagObj.db.LINETYPE.DOTTED_OPEN || type3 === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED) { + line2.style("stroke-dasharray", "3, 3"); + line2.attr("class", "messageLine1"); + } else { + line2.attr("class", "messageLine0"); + } + let url = ""; + if (conf2.arrowMarkerAbsolute) { + url = getUrl(true); + } + line2.attr("stroke-width", 2); + line2.attr("stroke", "none"); + line2.style("fill", "none"); + if (type3 === diagObj.db.LINETYPE.SOLID || type3 === diagObj.db.LINETYPE.DOTTED) { + line2.attr("marker-end", "url(" + url + "#arrowhead)"); + } + if (type3 === diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID || type3 === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED) { + line2.attr("marker-start", "url(" + url + "#arrowhead)"); + line2.attr("marker-end", "url(" + url + "#arrowhead)"); + } + if (type3 === diagObj.db.LINETYPE.SOLID_POINT || type3 === diagObj.db.LINETYPE.DOTTED_POINT) { + line2.attr("marker-end", "url(" + url + "#filled-head)"); + } + if (type3 === diagObj.db.LINETYPE.SOLID_CROSS || type3 === diagObj.db.LINETYPE.DOTTED_CROSS) { + line2.attr("marker-end", "url(" + url + "#crosshead)"); + } + if (sequenceVisible || conf2.showSequenceNumbers) { + const isBidirectional = type3 === diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID || type3 === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED; + if (isBidirectional) { + const SEQUENCE_NUMBER_RADIUS = 6; + if (startx < stopx) { + line2.attr("x1", startx + 2 * SEQUENCE_NUMBER_RADIUS); + } else { + line2.attr("x1", startx + SEQUENCE_NUMBER_RADIUS); + } + } + diagram27.append("line").attr("x1", startx).attr("y1", lineStartY).attr("x2", startx).attr("y2", lineStartY).attr("stroke-width", 0).attr("marker-start", "url(" + url + "#sequencenumber)"); + diagram27.append("text").attr("x", startx).attr("y", lineStartY + 4).attr("font-family", "sans-serif").attr("font-size", "12px").attr("text-anchor", "middle").attr("class", "sequenceNumber").text(sequenceIndex); + } + }, "drawMessage"); + addActorRenderingData = /* @__PURE__ */ __name(function(diagram27, actors2, createdActors, actorKeys, verticalPos, messages, isFooter) { + let prevWidth = 0; + let prevMargin = 0; + let prevBox = void 0; + let maxHeight = 0; + for (const actorKey of actorKeys) { + const actor = actors2.get(actorKey); + const box = actor.box; + if (prevBox && prevBox != box) { + if (!isFooter) { + bounds2.models.addBox(prevBox); + } + prevMargin += conf2.boxMargin + prevBox.margin; + } + if (box && box != prevBox) { + if (!isFooter) { + box.x = prevWidth + prevMargin; + box.y = verticalPos; + } + prevMargin += box.margin; + } + actor.width = actor.width || conf2.width; + actor.height = common_default.getMax(actor.height || conf2.height, conf2.height); + actor.margin = actor.margin || conf2.actorMargin; + maxHeight = common_default.getMax(maxHeight, actor.height); + if (createdActors.get(actor.name)) { + prevMargin += actor.width / 2; + } + actor.x = prevWidth + prevMargin; + actor.starty = bounds2.getVerticalPos(); + bounds2.insert(actor.x, verticalPos, actor.x + actor.width, actor.height); + prevWidth += actor.width + prevMargin; + if (actor.box) { + actor.box.width = prevWidth + box.margin - actor.box.x; + } + prevMargin = actor.margin; + prevBox = actor.box; + bounds2.models.addActor(actor); + } + if (prevBox && !isFooter) { + bounds2.models.addBox(prevBox); + } + bounds2.bumpVerticalPos(maxHeight); + }, "addActorRenderingData"); + drawActors = /* @__PURE__ */ __name(async function(diagram27, actors2, actorKeys, isFooter) { + if (!isFooter) { + for (const actorKey of actorKeys) { + const actor = actors2.get(actorKey); + await svgDraw_default2.drawActor(diagram27, actor, conf2, false); + } + } else { + let maxHeight = 0; + bounds2.bumpVerticalPos(conf2.boxMargin * 2); + for (const actorKey of actorKeys) { + const actor = actors2.get(actorKey); + if (!actor.stopy) { + actor.stopy = bounds2.getVerticalPos(); + } + const height2 = await svgDraw_default2.drawActor(diagram27, actor, conf2, true); + maxHeight = common_default.getMax(maxHeight, height2); + } + bounds2.bumpVerticalPos(maxHeight + conf2.boxMargin); + } + }, "drawActors"); + drawActorsPopup = /* @__PURE__ */ __name(function(diagram27, actors2, actorKeys, doc) { + let maxHeight = 0; + let maxWidth2 = 0; + for (const actorKey of actorKeys) { + const actor = actors2.get(actorKey); + const minMenuWidth = getRequiredPopupWidth(actor); + const menuDimensions = svgDraw_default2.drawPopup( + diagram27, + actor, + minMenuWidth, + conf2, + conf2.forceMenus, + doc + ); + if (menuDimensions.height > maxHeight) { + maxHeight = menuDimensions.height; + } + if (menuDimensions.width + actor.x > maxWidth2) { + maxWidth2 = menuDimensions.width + actor.x; + } + } + return { maxHeight, maxWidth: maxWidth2 }; + }, "drawActorsPopup"); + setConf3 = /* @__PURE__ */ __name(function(cnf) { + assignWithDepth_default(conf2, cnf); + if (cnf.fontFamily) { + conf2.actorFontFamily = conf2.noteFontFamily = conf2.messageFontFamily = cnf.fontFamily; + } + if (cnf.fontSize) { + conf2.actorFontSize = conf2.noteFontSize = conf2.messageFontSize = cnf.fontSize; + } + if (cnf.fontWeight) { + conf2.actorFontWeight = conf2.noteFontWeight = conf2.messageFontWeight = cnf.fontWeight; + } + }, "setConf"); + actorActivations = /* @__PURE__ */ __name(function(actor) { + return bounds2.activations.filter(function(activation) { + return activation.actor === actor; + }); + }, "actorActivations"); + activationBounds = /* @__PURE__ */ __name(function(actor, actors2) { + const actorObj = actors2.get(actor); + const activations = actorActivations(actor); + const left3 = activations.reduce( + function(acc, activation) { + return common_default.getMin(acc, activation.startx); + }, + actorObj.x + actorObj.width / 2 - 1 + ); + const right3 = activations.reduce( + function(acc, activation) { + return common_default.getMax(acc, activation.stopx); + }, + actorObj.x + actorObj.width / 2 + 1 + ); + return [left3, right3]; + }, "activationBounds"); + __name(adjustLoopHeightForWrap, "adjustLoopHeightForWrap"); + __name(adjustCreatedDestroyedData, "adjustCreatedDestroyedData"); + draw11 = /* @__PURE__ */ __name(async function(_text, id30, _version, diagObj) { + const { securityLevel, sequence } = getConfig2(); + conf2 = sequence; + let sandboxElement; + if (securityLevel === "sandbox") { + sandboxElement = select_default2("#i" + id30); + } + const root3 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); + const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document; + bounds2.init(); + log.debug(diagObj.db); + const diagram27 = securityLevel === "sandbox" ? root3.select(`[id="${id30}"]`) : select_default2(`[id="${id30}"]`); + const actors2 = diagObj.db.getActors(); + const createdActors = diagObj.db.getCreatedActors(); + const destroyedActors = diagObj.db.getDestroyedActors(); + const boxes = diagObj.db.getBoxes(); + let actorKeys = diagObj.db.getActorKeys(); + const messages = diagObj.db.getMessages(); + const title2 = diagObj.db.getDiagramTitle(); + const hasBoxes = diagObj.db.hasAtLeastOneBox(); + const hasBoxTitles = diagObj.db.hasAtLeastOneBoxWithTitle(); + const maxMessageWidthPerActor = await getMaxMessageWidthPerActor(actors2, messages, diagObj); + conf2.height = await calculateActorMargins(actors2, maxMessageWidthPerActor, boxes); + svgDraw_default2.insertComputerIcon(diagram27); + svgDraw_default2.insertDatabaseIcon(diagram27); + svgDraw_default2.insertClockIcon(diagram27); + if (hasBoxes) { + bounds2.bumpVerticalPos(conf2.boxMargin); + if (hasBoxTitles) { + bounds2.bumpVerticalPos(boxes[0].textMaxHeight); + } + } + if (conf2.hideUnusedParticipants === true) { + const newActors = /* @__PURE__ */ new Set(); + messages.forEach((message) => { + newActors.add(message.from); + newActors.add(message.to); + }); + actorKeys = actorKeys.filter((actorKey) => newActors.has(actorKey)); + } + addActorRenderingData(diagram27, actors2, createdActors, actorKeys, 0, messages, false); + const loopWidths = await calculateLoopBounds(messages, actors2, maxMessageWidthPerActor, diagObj); + svgDraw_default2.insertArrowHead(diagram27); + svgDraw_default2.insertArrowCrossHead(diagram27); + svgDraw_default2.insertArrowFilledHead(diagram27); + svgDraw_default2.insertSequenceNumber(diagram27); + function activeEnd(msg, verticalPos) { + const activationData = bounds2.endActivation(msg); + if (activationData.starty + 18 > verticalPos) { + activationData.starty = verticalPos - 6; + verticalPos += 12; + } + svgDraw_default2.drawActivation( + diagram27, + activationData, + verticalPos, + conf2, + actorActivations(msg.from).length + ); + bounds2.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos); + } + __name(activeEnd, "activeEnd"); + let sequenceIndex = 1; + let sequenceIndexStep = 1; + const messagesToDraw = []; + const backgrounds = []; + let index = 0; + for (const msg of messages) { + let loopModel, noteModel, msgModel; + switch (msg.type) { + case diagObj.db.LINETYPE.NOTE: + bounds2.resetVerticalPos(); + noteModel = msg.noteModel; + await drawNote(diagram27, noteModel); + break; + case diagObj.db.LINETYPE.ACTIVE_START: + bounds2.newActivation(msg, diagram27, actors2); + break; + case diagObj.db.LINETYPE.ACTIVE_END: + activeEnd(msg, bounds2.getVerticalPos()); + break; + case diagObj.db.LINETYPE.LOOP_START: + adjustLoopHeightForWrap( + loopWidths, + msg, + conf2.boxMargin, + conf2.boxMargin + conf2.boxTextMargin, + (message) => bounds2.newLoop(message) + ); + break; + case diagObj.db.LINETYPE.LOOP_END: + loopModel = bounds2.endLoop(); + await svgDraw_default2.drawLoop(diagram27, loopModel, "loop", conf2); + bounds2.bumpVerticalPos(loopModel.stopy - bounds2.getVerticalPos()); + bounds2.models.addLoop(loopModel); + break; + case diagObj.db.LINETYPE.RECT_START: + adjustLoopHeightForWrap( + loopWidths, + msg, + conf2.boxMargin, + conf2.boxMargin, + (message) => bounds2.newLoop(void 0, message.message) + ); + break; + case diagObj.db.LINETYPE.RECT_END: + loopModel = bounds2.endLoop(); + backgrounds.push(loopModel); + bounds2.models.addLoop(loopModel); + bounds2.bumpVerticalPos(loopModel.stopy - bounds2.getVerticalPos()); + break; + case diagObj.db.LINETYPE.OPT_START: + adjustLoopHeightForWrap( + loopWidths, + msg, + conf2.boxMargin, + conf2.boxMargin + conf2.boxTextMargin, + (message) => bounds2.newLoop(message) + ); + break; + case diagObj.db.LINETYPE.OPT_END: + loopModel = bounds2.endLoop(); + await svgDraw_default2.drawLoop(diagram27, loopModel, "opt", conf2); + bounds2.bumpVerticalPos(loopModel.stopy - bounds2.getVerticalPos()); + bounds2.models.addLoop(loopModel); + break; + case diagObj.db.LINETYPE.ALT_START: + adjustLoopHeightForWrap( + loopWidths, + msg, + conf2.boxMargin, + conf2.boxMargin + conf2.boxTextMargin, + (message) => bounds2.newLoop(message) + ); + break; + case diagObj.db.LINETYPE.ALT_ELSE: + adjustLoopHeightForWrap( + loopWidths, + msg, + conf2.boxMargin + conf2.boxTextMargin, + conf2.boxMargin, + (message) => bounds2.addSectionToLoop(message) + ); + break; + case diagObj.db.LINETYPE.ALT_END: + loopModel = bounds2.endLoop(); + await svgDraw_default2.drawLoop(diagram27, loopModel, "alt", conf2); + bounds2.bumpVerticalPos(loopModel.stopy - bounds2.getVerticalPos()); + bounds2.models.addLoop(loopModel); + break; + case diagObj.db.LINETYPE.PAR_START: + case diagObj.db.LINETYPE.PAR_OVER_START: + adjustLoopHeightForWrap( + loopWidths, + msg, + conf2.boxMargin, + conf2.boxMargin + conf2.boxTextMargin, + (message) => bounds2.newLoop(message) + ); + bounds2.saveVerticalPos(); + break; + case diagObj.db.LINETYPE.PAR_AND: + adjustLoopHeightForWrap( + loopWidths, + msg, + conf2.boxMargin + conf2.boxTextMargin, + conf2.boxMargin, + (message) => bounds2.addSectionToLoop(message) + ); + break; + case diagObj.db.LINETYPE.PAR_END: + loopModel = bounds2.endLoop(); + await svgDraw_default2.drawLoop(diagram27, loopModel, "par", conf2); + bounds2.bumpVerticalPos(loopModel.stopy - bounds2.getVerticalPos()); + bounds2.models.addLoop(loopModel); + break; + case diagObj.db.LINETYPE.AUTONUMBER: + sequenceIndex = msg.message.start || sequenceIndex; + sequenceIndexStep = msg.message.step || sequenceIndexStep; + if (msg.message.visible) { + diagObj.db.enableSequenceNumbers(); + } else { + diagObj.db.disableSequenceNumbers(); } - __name(IGeometry, "IGeometry"); - IGeometry.calcSeparationAmount = function(rectA, rectB, overlapAmount, separationBuffer) { - if (!rectA.intersects(rectB)) { - throw "assert failed"; - } - var directions = new Array(2); - this.decideDirectionsForOverlappingNodes(rectA, rectB, directions); - overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x); - overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y); - if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) { - overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight()); - } else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) { - overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight()); - } - if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) { - overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom()); - } else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) { - overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom()); - } - var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX())); - if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) { - slope = 1; - } - var moveByY = slope * overlapAmount[0]; - var moveByX = overlapAmount[1] / slope; - if (overlapAmount[0] < moveByX) { - moveByX = overlapAmount[0]; - } else { - moveByY = overlapAmount[1]; - } - overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer); - overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer); - }; - IGeometry.decideDirectionsForOverlappingNodes = function(rectA, rectB, directions) { - if (rectA.getCenterX() < rectB.getCenterX()) { - directions[0] = -1; - } else { - directions[0] = 1; - } - if (rectA.getCenterY() < rectB.getCenterY()) { - directions[1] = -1; - } else { - directions[1] = 1; - } - }; - IGeometry.getIntersection2 = function(rectA, rectB, result) { - var p1x = rectA.getCenterX(); - var p1y = rectA.getCenterY(); - var p2x = rectB.getCenterX(); - var p2y = rectB.getCenterY(); - if (rectA.intersects(rectB)) { - result[0] = p1x; - result[1] = p1y; - result[2] = p2x; - result[3] = p2y; - return true; - } - var topLeftAx = rectA.getX(); - var topLeftAy = rectA.getY(); - var topRightAx = rectA.getRight(); - var bottomLeftAx = rectA.getX(); - var bottomLeftAy = rectA.getBottom(); - var bottomRightAx = rectA.getRight(); - var halfWidthA = rectA.getWidthHalf(); - var halfHeightA = rectA.getHeightHalf(); - var topLeftBx = rectB.getX(); - var topLeftBy = rectB.getY(); - var topRightBx = rectB.getRight(); - var bottomLeftBx = rectB.getX(); - var bottomLeftBy = rectB.getBottom(); - var bottomRightBx = rectB.getRight(); - var halfWidthB = rectB.getWidthHalf(); - var halfHeightB = rectB.getHeightHalf(); - var clipPointAFound = false; - var clipPointBFound = false; - if (p1x === p2x) { - if (p1y > p2y) { - result[0] = p1x; - result[1] = topLeftAy; - result[2] = p2x; - result[3] = bottomLeftBy; - return false; - } else if (p1y < p2y) { - result[0] = p1x; - result[1] = bottomLeftAy; - result[2] = p2x; - result[3] = topLeftBy; - return false; - } else { - } - } else if (p1y === p2y) { - if (p1x > p2x) { - result[0] = topLeftAx; - result[1] = p1y; - result[2] = topRightBx; - result[3] = p2y; - return false; - } else if (p1x < p2x) { - result[0] = topRightAx; - result[1] = p1y; - result[2] = topLeftBx; - result[3] = p2y; - return false; - } else { - } - } else { - var slopeA = rectA.height / rectA.width; - var slopeB = rectB.height / rectB.width; - var slopePrime = (p2y - p1y) / (p2x - p1x); - var cardinalDirectionA = void 0; - var cardinalDirectionB = void 0; - var tempPointAx = void 0; - var tempPointAy = void 0; - var tempPointBx = void 0; - var tempPointBy = void 0; - if (-slopeA === slopePrime) { - if (p1x > p2x) { - result[0] = bottomLeftAx; - result[1] = bottomLeftAy; - clipPointAFound = true; - } else { - result[0] = topRightAx; - result[1] = topLeftAy; - clipPointAFound = true; - } - } else if (slopeA === slopePrime) { - if (p1x > p2x) { - result[0] = topLeftAx; - result[1] = topLeftAy; - clipPointAFound = true; - } else { - result[0] = bottomRightAx; - result[1] = bottomLeftAy; - clipPointAFound = true; - } - } - if (-slopeB === slopePrime) { - if (p2x > p1x) { - result[2] = bottomLeftBx; - result[3] = bottomLeftBy; - clipPointBFound = true; - } else { - result[2] = topRightBx; - result[3] = topLeftBy; - clipPointBFound = true; - } - } else if (slopeB === slopePrime) { - if (p2x > p1x) { - result[2] = topLeftBx; - result[3] = topLeftBy; - clipPointBFound = true; - } else { - result[2] = bottomRightBx; - result[3] = bottomLeftBy; - clipPointBFound = true; - } - } - if (clipPointAFound && clipPointBFound) { - return false; - } - if (p1x > p2x) { - if (p1y > p2y) { - cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4); - cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2); - } else { - cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3); - cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1); - } - } else { - if (p1y > p2y) { - cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1); - cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3); - } else { - cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2); - cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4); - } - } - if (!clipPointAFound) { - switch (cardinalDirectionA) { - case 1: - tempPointAy = topLeftAy; - tempPointAx = p1x + -halfHeightA / slopePrime; - result[0] = tempPointAx; - result[1] = tempPointAy; - break; - case 2: - tempPointAx = bottomRightAx; - tempPointAy = p1y + halfWidthA * slopePrime; - result[0] = tempPointAx; - result[1] = tempPointAy; - break; - case 3: - tempPointAy = bottomLeftAy; - tempPointAx = p1x + halfHeightA / slopePrime; - result[0] = tempPointAx; - result[1] = tempPointAy; - break; - case 4: - tempPointAx = bottomLeftAx; - tempPointAy = p1y + -halfWidthA * slopePrime; - result[0] = tempPointAx; - result[1] = tempPointAy; - break; - } - } - if (!clipPointBFound) { - switch (cardinalDirectionB) { - case 1: - tempPointBy = topLeftBy; - tempPointBx = p2x + -halfHeightB / slopePrime; - result[2] = tempPointBx; - result[3] = tempPointBy; - break; - case 2: - tempPointBx = bottomRightBx; - tempPointBy = p2y + halfWidthB * slopePrime; - result[2] = tempPointBx; - result[3] = tempPointBy; - break; - case 3: - tempPointBy = bottomLeftBy; - tempPointBx = p2x + halfHeightB / slopePrime; - result[2] = tempPointBx; - result[3] = tempPointBy; - break; - case 4: - tempPointBx = bottomLeftBx; - tempPointBy = p2y + -halfWidthB * slopePrime; - result[2] = tempPointBx; - result[3] = tempPointBy; - break; - } - } - } - return false; - }; - IGeometry.getCardinalDirection = function(slope, slopePrime, line2) { - if (slope > slopePrime) { - return line2; - } else { - return 1 + line2 % 4; - } - }; - IGeometry.getIntersection = function(s1, s2, f1, f2) { - if (f2 == null) { - return this.getIntersection2(s1, s2, f1); - } - var x1 = s1.x; - var y1 = s1.y; - var x22 = s2.x; - var y22 = s2.y; - var x32 = f1.x; - var y32 = f1.y; - var x42 = f2.x; - var y42 = f2.y; - var x5 = void 0, y5 = void 0; - var a1 = void 0, a2 = void 0, b1 = void 0, b2 = void 0, c1 = void 0, c22 = void 0; - var denom = void 0; - a1 = y22 - y1; - b1 = x1 - x22; - c1 = x22 * y1 - x1 * y22; - a2 = y42 - y32; - b2 = x32 - x42; - c22 = x42 * y32 - x32 * y42; - denom = a1 * b2 - a2 * b1; - if (denom === 0) { - return null; - } - x5 = (b1 * c22 - b2 * c1) / denom; - y5 = (a2 * c1 - a1 * c22) / denom; - return new Point3(x5, y5); - }; - IGeometry.angleOfVector = function(Cx, Cy, Nx, Ny) { - var C_angle = void 0; - if (Cx !== Nx) { - C_angle = Math.atan((Ny - Cy) / (Nx - Cx)); - if (Nx < Cx) { - C_angle += Math.PI; - } else if (Ny < Cy) { - C_angle += this.TWO_PI; - } - } else if (Ny < Cy) { - C_angle = this.ONE_AND_HALF_PI; - } else { - C_angle = this.HALF_PI; - } - return C_angle; - }; - IGeometry.doIntersect = function(p1, p22, p3, p4) { - var a2 = p1.x; - var b2 = p1.y; - var c3 = p22.x; - var d2 = p22.y; - var p5 = p3.x; - var q2 = p3.y; - var r2 = p4.x; - var s2 = p4.y; - var det = (c3 - a2) * (s2 - q2) - (r2 - p5) * (d2 - b2); - if (det === 0) { - return false; - } else { - var lambda = ((s2 - q2) * (r2 - a2) + (p5 - r2) * (s2 - b2)) / det; - var gamma2 = ((b2 - d2) * (r2 - a2) + (c3 - a2) * (s2 - b2)) / det; - return 0 < lambda && lambda < 1 && 0 < gamma2 && gamma2 < 1; - } - }; - IGeometry.HALF_PI = 0.5 * Math.PI; - IGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI; - IGeometry.TWO_PI = 2 * Math.PI; - IGeometry.THREE_PI = 3 * Math.PI; - module3.exports = IGeometry; - }, - /* 9 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function IMath() { + break; + case diagObj.db.LINETYPE.CRITICAL_START: + adjustLoopHeightForWrap( + loopWidths, + msg, + conf2.boxMargin, + conf2.boxMargin + conf2.boxTextMargin, + (message) => bounds2.newLoop(message) + ); + break; + case diagObj.db.LINETYPE.CRITICAL_OPTION: + adjustLoopHeightForWrap( + loopWidths, + msg, + conf2.boxMargin + conf2.boxTextMargin, + conf2.boxMargin, + (message) => bounds2.addSectionToLoop(message) + ); + break; + case diagObj.db.LINETYPE.CRITICAL_END: + loopModel = bounds2.endLoop(); + await svgDraw_default2.drawLoop(diagram27, loopModel, "critical", conf2); + bounds2.bumpVerticalPos(loopModel.stopy - bounds2.getVerticalPos()); + bounds2.models.addLoop(loopModel); + break; + case diagObj.db.LINETYPE.BREAK_START: + adjustLoopHeightForWrap( + loopWidths, + msg, + conf2.boxMargin, + conf2.boxMargin + conf2.boxTextMargin, + (message) => bounds2.newLoop(message) + ); + break; + case diagObj.db.LINETYPE.BREAK_END: + loopModel = bounds2.endLoop(); + await svgDraw_default2.drawLoop(diagram27, loopModel, "break", conf2); + bounds2.bumpVerticalPos(loopModel.stopy - bounds2.getVerticalPos()); + bounds2.models.addLoop(loopModel); + break; + default: + try { + msgModel = msg.msgModel; + msgModel.starty = bounds2.getVerticalPos(); + msgModel.sequenceIndex = sequenceIndex; + msgModel.sequenceVisible = diagObj.db.showSequenceNumbers(); + const lineStartY = await boundMessage(diagram27, msgModel); + adjustCreatedDestroyedData( + msg, + msgModel, + lineStartY, + index, + actors2, + createdActors, + destroyedActors + ); + messagesToDraw.push({ messageModel: msgModel, lineStartY }); + bounds2.models.addMessage(msgModel); + } catch (e3) { + log.error("error while drawing message", e3); } - __name(IMath, "IMath"); - IMath.sign = function(value2) { - if (value2 > 0) { - return 1; - } else if (value2 < 0) { - return -1; - } else { - return 0; - } - }; - IMath.floor = function(value2) { - return value2 < 0 ? Math.ceil(value2) : Math.floor(value2); - }; - IMath.ceil = function(value2) { - return value2 < 0 ? Math.floor(value2) : Math.ceil(value2); - }; - module3.exports = IMath; - }, - /* 10 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function Integer() { + } + if ([ + diagObj.db.LINETYPE.SOLID_OPEN, + diagObj.db.LINETYPE.DOTTED_OPEN, + diagObj.db.LINETYPE.SOLID, + diagObj.db.LINETYPE.DOTTED, + diagObj.db.LINETYPE.SOLID_CROSS, + diagObj.db.LINETYPE.DOTTED_CROSS, + diagObj.db.LINETYPE.SOLID_POINT, + diagObj.db.LINETYPE.DOTTED_POINT, + diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID, + diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED + ].includes(msg.type)) { + sequenceIndex = sequenceIndex + sequenceIndexStep; + } + index++; + } + log.debug("createdActors", createdActors); + log.debug("destroyedActors", destroyedActors); + await drawActors(diagram27, actors2, actorKeys, false); + for (const e3 of messagesToDraw) { + await drawMessage(diagram27, e3.messageModel, e3.lineStartY, diagObj); + } + if (conf2.mirrorActors) { + await drawActors(diagram27, actors2, actorKeys, true); + } + backgrounds.forEach((e3) => svgDraw_default2.drawBackgroundRect(diagram27, e3)); + fixLifeLineHeights(diagram27, actors2, actorKeys, conf2); + for (const box2 of bounds2.models.boxes) { + box2.height = bounds2.getVerticalPos() - box2.y; + bounds2.insert(box2.x, box2.y, box2.x + box2.width, box2.height); + const boxPadding = conf2.boxMargin * 2; + box2.startx = box2.x - boxPadding; + box2.starty = box2.y - boxPadding * 0.25; + box2.stopx = box2.startx + box2.width + 2 * boxPadding; + box2.stopy = box2.starty + box2.height + boxPadding * 0.75; + box2.stroke = "rgb(0,0,0, 0.5)"; + svgDraw_default2.drawBox(diagram27, box2, conf2); + } + if (hasBoxes) { + bounds2.bumpVerticalPos(conf2.boxMargin); + } + const requiredBoxSize = drawActorsPopup(diagram27, actors2, actorKeys, doc); + const { bounds: box } = bounds2.getBounds(); + if (box.startx === void 0) { + box.startx = 0; + } + if (box.starty === void 0) { + box.starty = 0; + } + if (box.stopx === void 0) { + box.stopx = 0; + } + if (box.stopy === void 0) { + box.stopy = 0; + } + let boxHeight = box.stopy - box.starty; + if (boxHeight < requiredBoxSize.maxHeight) { + boxHeight = requiredBoxSize.maxHeight; + } + let height2 = boxHeight + 2 * conf2.diagramMarginY; + if (conf2.mirrorActors) { + height2 = height2 - conf2.boxMargin + conf2.bottomMarginAdj; + } + let boxWidth = box.stopx - box.startx; + if (boxWidth < requiredBoxSize.maxWidth) { + boxWidth = requiredBoxSize.maxWidth; + } + const width3 = boxWidth + 2 * conf2.diagramMarginX; + if (title2) { + diagram27.append("text").text(title2).attr("x", (box.stopx - box.startx) / 2 - 2 * conf2.diagramMarginX).attr("y", -25); + } + configureSvgSize(diagram27, height2, width3, conf2.useMaxWidth); + const extraVertForTitle = title2 ? 40 : 0; + diagram27.attr( + "viewBox", + box.startx - conf2.diagramMarginX + " -" + (conf2.diagramMarginY + extraVertForTitle) + " " + width3 + " " + (height2 + extraVertForTitle) + ); + log.debug(`models:`, bounds2.models); + }, "draw"); + __name(getMaxMessageWidthPerActor, "getMaxMessageWidthPerActor"); + getRequiredPopupWidth = /* @__PURE__ */ __name(function(actor) { + let requiredPopupWidth = 0; + const textFont = actorFont(conf2); + for (const key in actor.links) { + const labelDimensions = utils_default2.calculateTextDimensions(key, textFont); + const labelWidth = labelDimensions.width + 2 * conf2.wrapPadding + 2 * conf2.boxMargin; + if (requiredPopupWidth < labelWidth) { + requiredPopupWidth = labelWidth; + } + } + return requiredPopupWidth; + }, "getRequiredPopupWidth"); + __name(calculateActorMargins, "calculateActorMargins"); + buildNoteModel = /* @__PURE__ */ __name(async function(msg, actors2, diagObj) { + const fromActor = actors2.get(msg.from); + const toActor = actors2.get(msg.to); + const startx = fromActor.x; + const stopx = toActor.x; + const shouldWrap = msg.wrap && msg.message; + let textDimensions = hasKatex(msg.message) ? await calculateMathMLDimensions(msg.message, getConfig2()) : utils_default2.calculateTextDimensions( + shouldWrap ? utils_default2.wrapLabel(msg.message, conf2.width, noteFont(conf2)) : msg.message, + noteFont(conf2) + ); + const noteModel = { + width: shouldWrap ? conf2.width : common_default.getMax(conf2.width, textDimensions.width + 2 * conf2.noteMargin), + height: 0, + startx: fromActor.x, + stopx: 0, + starty: 0, + stopy: 0, + message: msg.message + }; + if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) { + noteModel.width = shouldWrap ? common_default.getMax(conf2.width, textDimensions.width) : common_default.getMax( + fromActor.width / 2 + toActor.width / 2, + textDimensions.width + 2 * conf2.noteMargin + ); + noteModel.startx = startx + (fromActor.width + conf2.actorMargin) / 2; + } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) { + noteModel.width = shouldWrap ? common_default.getMax(conf2.width, textDimensions.width + 2 * conf2.noteMargin) : common_default.getMax( + fromActor.width / 2 + toActor.width / 2, + textDimensions.width + 2 * conf2.noteMargin + ); + noteModel.startx = startx - noteModel.width + (fromActor.width - conf2.actorMargin) / 2; + } else if (msg.to === msg.from) { + textDimensions = utils_default2.calculateTextDimensions( + shouldWrap ? utils_default2.wrapLabel(msg.message, common_default.getMax(conf2.width, fromActor.width), noteFont(conf2)) : msg.message, + noteFont(conf2) + ); + noteModel.width = shouldWrap ? common_default.getMax(conf2.width, fromActor.width) : common_default.getMax(fromActor.width, conf2.width, textDimensions.width + 2 * conf2.noteMargin); + noteModel.startx = startx + (fromActor.width - noteModel.width) / 2; + } else { + noteModel.width = Math.abs(startx + fromActor.width / 2 - (stopx + toActor.width / 2)) + conf2.actorMargin; + noteModel.startx = startx < stopx ? startx + fromActor.width / 2 - conf2.actorMargin / 2 : stopx + toActor.width / 2 - conf2.actorMargin / 2; + } + if (shouldWrap) { + noteModel.message = utils_default2.wrapLabel( + msg.message, + noteModel.width - 2 * conf2.wrapPadding, + noteFont(conf2) + ); + } + log.debug( + `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]` + ); + return noteModel; + }, "buildNoteModel"); + buildMessageModel = /* @__PURE__ */ __name(function(msg, actors2, diagObj) { + if (![ + diagObj.db.LINETYPE.SOLID_OPEN, + diagObj.db.LINETYPE.DOTTED_OPEN, + diagObj.db.LINETYPE.SOLID, + diagObj.db.LINETYPE.DOTTED, + diagObj.db.LINETYPE.SOLID_CROSS, + diagObj.db.LINETYPE.DOTTED_CROSS, + diagObj.db.LINETYPE.SOLID_POINT, + diagObj.db.LINETYPE.DOTTED_POINT, + diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID, + diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED + ].includes(msg.type)) { + return {}; + } + const [fromLeft, fromRight] = activationBounds(msg.from, actors2); + const [toLeft, toRight] = activationBounds(msg.to, actors2); + const isArrowToRight = fromLeft <= toLeft; + let startx = isArrowToRight ? fromRight : fromLeft; + let stopx = isArrowToRight ? toLeft : toRight; + const isArrowToActivation = Math.abs(toLeft - toRight) > 2; + const adjustValue = /* @__PURE__ */ __name((value2) => { + return isArrowToRight ? -value2 : value2; + }, "adjustValue"); + if (msg.from === msg.to) { + stopx = startx; + } else { + if (msg.activate && !isArrowToActivation) { + stopx += adjustValue(conf2.activationWidth / 2 - 1); + } + if (![diagObj.db.LINETYPE.SOLID_OPEN, diagObj.db.LINETYPE.DOTTED_OPEN].includes(msg.type)) { + stopx += adjustValue(3); + } + if ([diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID, diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes( + msg.type + )) { + startx -= adjustValue(3); + } + } + const allBounds = [fromLeft, fromRight, toLeft, toRight]; + const boundedWidth = Math.abs(startx - stopx); + if (msg.wrap && msg.message) { + msg.message = utils_default2.wrapLabel( + msg.message, + common_default.getMax(boundedWidth + 2 * conf2.wrapPadding, conf2.width), + messageFont2(conf2) + ); + } + const msgDims = utils_default2.calculateTextDimensions(msg.message, messageFont2(conf2)); + return { + width: common_default.getMax( + msg.wrap ? 0 : msgDims.width + 2 * conf2.wrapPadding, + boundedWidth + 2 * conf2.wrapPadding, + conf2.width + ), + height: 0, + startx, + stopx, + starty: 0, + stopy: 0, + message: msg.message, + type: msg.type, + wrap: msg.wrap, + fromBounds: Math.min.apply(null, allBounds), + toBounds: Math.max.apply(null, allBounds) + }; + }, "buildMessageModel"); + calculateLoopBounds = /* @__PURE__ */ __name(async function(messages, actors2, _maxWidthPerActor, diagObj) { + const loops = {}; + const stack = []; + let current, noteModel, msgModel; + for (const msg of messages) { + switch (msg.type) { + case diagObj.db.LINETYPE.LOOP_START: + case diagObj.db.LINETYPE.ALT_START: + case diagObj.db.LINETYPE.OPT_START: + case diagObj.db.LINETYPE.PAR_START: + case diagObj.db.LINETYPE.PAR_OVER_START: + case diagObj.db.LINETYPE.CRITICAL_START: + case diagObj.db.LINETYPE.BREAK_START: + stack.push({ + id: msg.id, + msg: msg.message, + from: Number.MAX_SAFE_INTEGER, + to: Number.MIN_SAFE_INTEGER, + width: 0 + }); + break; + case diagObj.db.LINETYPE.ALT_ELSE: + case diagObj.db.LINETYPE.PAR_AND: + case diagObj.db.LINETYPE.CRITICAL_OPTION: + if (msg.message) { + current = stack.pop(); + loops[current.id] = current; + loops[msg.id] = current; + stack.push(current); } - __name(Integer, "Integer"); - Integer.MAX_VALUE = 2147483647; - Integer.MIN_VALUE = -2147483648; - module3.exports = Integer; - }, - /* 11 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var _createClass2 = /* @__PURE__ */ function() { - function defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - __name(defineProperties, "defineProperties"); - return function(Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; + break; + case diagObj.db.LINETYPE.LOOP_END: + case diagObj.db.LINETYPE.ALT_END: + case diagObj.db.LINETYPE.OPT_END: + case diagObj.db.LINETYPE.PAR_END: + case diagObj.db.LINETYPE.CRITICAL_END: + case diagObj.db.LINETYPE.BREAK_END: + current = stack.pop(); + loops[current.id] = current; + break; + case diagObj.db.LINETYPE.ACTIVE_START: + { + const actorRect = actors2.get(msg.from ? msg.from : msg.to.actor); + const stackedSize = actorActivations(msg.from ? msg.from : msg.to.actor).length; + const x5 = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf2.activationWidth / 2; + const toAdd = { + startx: x5, + stopx: x5 + conf2.activationWidth, + actor: msg.from, + enabled: true }; - }(); - function _classCallCheck2(instance2, Constructor) { - if (!(instance2 instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - __name(_classCallCheck2, "_classCallCheck"); - var nodeFrom = /* @__PURE__ */ __name(function nodeFrom2(value2) { - return { value: value2, next: null, prev: null }; - }, "nodeFrom"); - var add3 = /* @__PURE__ */ __name(function add4(prev2, node2, next3, list2) { - if (prev2 !== null) { - prev2.next = node2; - } else { - list2.head = node2; - } - if (next3 !== null) { - next3.prev = node2; - } else { - list2.tail = node2; - } - node2.prev = prev2; - node2.next = next3; - list2.length++; - return node2; - }, "add"); - var _remove = /* @__PURE__ */ __name(function _remove2(node2, list2) { - var prev2 = node2.prev, next3 = node2.next; - if (prev2 !== null) { - prev2.next = next3; - } else { - list2.head = next3; - } - if (next3 !== null) { - next3.prev = prev2; - } else { - list2.tail = prev2; - } - node2.prev = node2.next = null; - list2.length--; - return node2; - }, "_remove"); - var LinkedList = function() { - function LinkedList2(vals) { - var _this = this; - _classCallCheck2(this, LinkedList2); - this.length = 0; - this.head = null; - this.tail = null; - if (vals != null) { - vals.forEach(function(v3) { - return _this.push(v3); - }); - } - } - __name(LinkedList2, "LinkedList"); - _createClass2(LinkedList2, [{ - key: "size", - value: /* @__PURE__ */ __name(function size5() { - return this.length; - }, "size") - }, { - key: "insertBefore", - value: /* @__PURE__ */ __name(function insertBefore(val, otherNode) { - return add3(otherNode.prev, nodeFrom(val), otherNode, this); - }, "insertBefore") - }, { - key: "insertAfter", - value: /* @__PURE__ */ __name(function insertAfter(val, otherNode) { - return add3(otherNode, nodeFrom(val), otherNode.next, this); - }, "insertAfter") - }, { - key: "insertNodeBefore", - value: /* @__PURE__ */ __name(function insertNodeBefore(newNode, otherNode) { - return add3(otherNode.prev, newNode, otherNode, this); - }, "insertNodeBefore") - }, { - key: "insertNodeAfter", - value: /* @__PURE__ */ __name(function insertNodeAfter(newNode, otherNode) { - return add3(otherNode, newNode, otherNode.next, this); - }, "insertNodeAfter") - }, { - key: "push", - value: /* @__PURE__ */ __name(function push3(val) { - return add3(this.tail, nodeFrom(val), null, this); - }, "push") - }, { - key: "unshift", - value: /* @__PURE__ */ __name(function unshift(val) { - return add3(null, nodeFrom(val), this.head, this); - }, "unshift") - }, { - key: "remove", - value: /* @__PURE__ */ __name(function remove3(node2) { - return _remove(node2, this); - }, "remove") - }, { - key: "pop", - value: /* @__PURE__ */ __name(function pop() { - return _remove(this.tail, this).value; - }, "pop") - }, { - key: "popNode", - value: /* @__PURE__ */ __name(function popNode() { - return _remove(this.tail, this); - }, "popNode") - }, { - key: "shift", - value: /* @__PURE__ */ __name(function shift2() { - return _remove(this.head, this).value; - }, "shift") - }, { - key: "shiftNode", - value: /* @__PURE__ */ __name(function shiftNode() { - return _remove(this.head, this); - }, "shiftNode") - }, { - key: "get_object_at", - value: /* @__PURE__ */ __name(function get_object_at(index) { - if (index <= this.length()) { - var i2 = 1; - var current = this.head; - while (i2 < index) { - current = current.next; - i2++; - } - return current.value; - } - }, "get_object_at") - }, { - key: "set_object_at", - value: /* @__PURE__ */ __name(function set_object_at(index, value2) { - if (index <= this.length()) { - var i2 = 1; - var current = this.head; - while (i2 < index) { - current = current.next; - i2++; - } - current.value = value2; - } - }, "set_object_at") - }]); - return LinkedList2; - }(); - module3.exports = LinkedList; - }, - /* 12 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function Point3(x5, y5, p3) { - this.x = null; - this.y = null; - if (x5 == null && y5 == null && p3 == null) { - this.x = 0; - this.y = 0; - } else if (typeof x5 == "number" && typeof y5 == "number" && p3 == null) { - this.x = x5; - this.y = y5; - } else if (x5.constructor.name == "Point" && y5 == null && p3 == null) { - p3 = x5; - this.x = p3.x; - this.y = p3.y; - } - } - __name(Point3, "Point"); - Point3.prototype.getX = function() { - return this.x; - }; - Point3.prototype.getY = function() { - return this.y; - }; - Point3.prototype.getLocation = function() { - return new Point3(this.x, this.y); - }; - Point3.prototype.setLocation = function(x5, y5, p3) { - if (x5.constructor.name == "Point" && y5 == null && p3 == null) { - p3 = x5; - this.setLocation(p3.x, p3.y); - } else if (typeof x5 == "number" && typeof y5 == "number" && p3 == null) { - if (parseInt(x5) == x5 && parseInt(y5) == y5) { - this.move(x5, y5); - } else { - this.x = Math.floor(x5 + 0.5); - this.y = Math.floor(y5 + 0.5); - } - } - }; - Point3.prototype.move = function(x5, y5) { - this.x = x5; - this.y = y5; - }; - Point3.prototype.translate = function(dx, dy) { - this.x += dx; - this.y += dy; - }; - Point3.prototype.equals = function(obj) { - if (obj.constructor.name == "Point") { - var pt = obj; - return this.x == pt.x && this.y == pt.y; - } - return this == obj; - }; - Point3.prototype.toString = function() { - return new Point3().constructor.name + "[x=" + this.x + ",y=" + this.y + "]"; - }; - module3.exports = Point3; - }, - /* 13 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function RectangleD(x5, y5, width3, height2) { - this.x = 0; - this.y = 0; - this.width = 0; - this.height = 0; - if (x5 != null && y5 != null && width3 != null && height2 != null) { - this.x = x5; - this.y = y5; - this.width = width3; - this.height = height2; - } + bounds2.activations.push(toAdd); } - __name(RectangleD, "RectangleD"); - RectangleD.prototype.getX = function() { - return this.x; - }; - RectangleD.prototype.setX = function(x5) { - this.x = x5; - }; - RectangleD.prototype.getY = function() { - return this.y; - }; - RectangleD.prototype.setY = function(y5) { - this.y = y5; - }; - RectangleD.prototype.getWidth = function() { - return this.width; - }; - RectangleD.prototype.setWidth = function(width3) { - this.width = width3; - }; - RectangleD.prototype.getHeight = function() { - return this.height; - }; - RectangleD.prototype.setHeight = function(height2) { - this.height = height2; - }; - RectangleD.prototype.getRight = function() { - return this.x + this.width; - }; - RectangleD.prototype.getBottom = function() { - return this.y + this.height; - }; - RectangleD.prototype.intersects = function(a2) { - if (this.getRight() < a2.x) { - return false; - } - if (this.getBottom() < a2.y) { - return false; - } - if (a2.getRight() < this.x) { - return false; - } - if (a2.getBottom() < this.y) { - return false; - } - return true; - }; - RectangleD.prototype.getCenterX = function() { - return this.x + this.width / 2; - }; - RectangleD.prototype.getMinX = function() { - return this.getX(); - }; - RectangleD.prototype.getMaxX = function() { - return this.getX() + this.width; - }; - RectangleD.prototype.getCenterY = function() { - return this.y + this.height / 2; - }; - RectangleD.prototype.getMinY = function() { - return this.getY(); - }; - RectangleD.prototype.getMaxY = function() { - return this.getY() + this.height; - }; - RectangleD.prototype.getWidthHalf = function() { - return this.width / 2; - }; - RectangleD.prototype.getHeightHalf = function() { - return this.height / 2; - }; - module3.exports = RectangleD; - }, - /* 14 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { - return typeof obj; - } : function(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - function UniqueIDGeneretor() { + break; + case diagObj.db.LINETYPE.ACTIVE_END: + { + const lastActorActivationIdx = bounds2.activations.map((a2) => a2.actor).lastIndexOf(msg.from); + bounds2.activations.splice(lastActorActivationIdx, 1).splice(0, 1); } - __name(UniqueIDGeneretor, "UniqueIDGeneretor"); - UniqueIDGeneretor.lastID = 0; - UniqueIDGeneretor.createID = function(obj) { - if (UniqueIDGeneretor.isPrimitive(obj)) { - return obj; - } - if (obj.uniqueID != null) { - return obj.uniqueID; - } - obj.uniqueID = UniqueIDGeneretor.getString(); - UniqueIDGeneretor.lastID++; - return obj.uniqueID; - }; - UniqueIDGeneretor.getString = function(id29) { - if (id29 == null) id29 = UniqueIDGeneretor.lastID; - return "Object#" + id29; - }; - UniqueIDGeneretor.isPrimitive = function(arg) { - var type3 = typeof arg === "undefined" ? "undefined" : _typeof2(arg); - return arg == null || type3 != "object" && type3 != "function"; - }; - module3.exports = UniqueIDGeneretor; - }, - /* 15 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function _toConsumableArray2(arr) { - if (Array.isArray(arr)) { - for (var i2 = 0, arr2 = Array(arr.length); i2 < arr.length; i2++) { - arr2[i2] = arr[i2]; - } - return arr2; + break; + } + const isNote = msg.placement !== void 0; + if (isNote) { + noteModel = await buildNoteModel(msg, actors2, diagObj); + msg.noteModel = noteModel; + stack.forEach((stk) => { + current = stk; + current.from = common_default.getMin(current.from, noteModel.startx); + current.to = common_default.getMax(current.to, noteModel.startx + noteModel.width); + current.width = common_default.getMax(current.width, Math.abs(current.from - current.to)) - conf2.labelBoxWidth; + }); + } else { + msgModel = buildMessageModel(msg, actors2, diagObj); + msg.msgModel = msgModel; + if (msgModel.startx && msgModel.stopx && stack.length > 0) { + stack.forEach((stk) => { + current = stk; + if (msgModel.startx === msgModel.stopx) { + const from2 = actors2.get(msg.from); + const to = actors2.get(msg.to); + current.from = common_default.getMin( + from2.x - msgModel.width / 2, + from2.x - from2.width / 2, + current.from + ); + current.to = common_default.getMax( + to.x + msgModel.width / 2, + to.x + from2.width / 2, + current.to + ); + current.width = common_default.getMax(current.width, Math.abs(current.to - current.from)) - conf2.labelBoxWidth; } else { - return Array.from(arr); + current.from = common_default.getMin(msgModel.startx, current.from); + current.to = common_default.getMax(msgModel.stopx, current.to); + current.width = common_default.getMax(current.width, msgModel.width) - conf2.labelBoxWidth; } + }); + } + } + } + bounds2.activations = []; + log.debug("Loop type widths:", loops); + return loops; + }, "calculateLoopBounds"); + sequenceRenderer_default = { + bounds: bounds2, + drawActors, + drawActorsPopup, + setConf: setConf3, + draw: draw11 + }; + } + }); + + // src/diagrams/sequence/sequenceDiagram.ts + var sequenceDiagram_exports = {}; + __export(sequenceDiagram_exports, { + diagram: () => diagram11 + }); + var diagram11; + var init_sequenceDiagram2 = __esm({ + "src/diagrams/sequence/sequenceDiagram.ts"() { + "use strict"; + init_sequenceDiagram(); + init_sequenceDb(); + init_styles8(); + init_diagramAPI(); + init_sequenceRenderer(); + diagram11 = { + parser: sequenceDiagram_default, + get db() { + return new SequenceDB(); + }, + renderer: sequenceRenderer_default, + styles: styles_default8, + init: /* @__PURE__ */ __name((cnf) => { + if (!cnf.sequence) { + cnf.sequence = {}; + } + if (cnf.wrap) { + cnf.sequence.wrap = cnf.wrap; + setConfig2({ sequence: { wrap: cnf.wrap } }); + } + }, "init") + }; + } + }); + + // src/diagrams/class/parser/classDiagram.jison + var parser12, classDiagram_default; + var init_classDiagram = __esm({ + "src/diagrams/class/parser/classDiagram.jison"() { + "use strict"; + parser12 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; + return o3; + }, "o"), $V0 = [1, 18], $V1 = [1, 19], $V2 = [1, 20], $V3 = [1, 41], $V4 = [1, 42], $V5 = [1, 26], $V6 = [1, 24], $V7 = [1, 25], $V8 = [1, 32], $V9 = [1, 33], $Va = [1, 34], $Vb = [1, 45], $Vc = [1, 35], $Vd = [1, 36], $Ve = [1, 37], $Vf = [1, 38], $Vg = [1, 27], $Vh = [1, 28], $Vi = [1, 29], $Vj = [1, 30], $Vk = [1, 31], $Vl = [1, 44], $Vm = [1, 46], $Vn = [1, 43], $Vo = [1, 47], $Vp = [1, 9], $Vq = [1, 8, 9], $Vr = [1, 58], $Vs = [1, 59], $Vt = [1, 60], $Vu = [1, 61], $Vv = [1, 62], $Vw = [1, 63], $Vx = [1, 64], $Vy = [1, 8, 9, 41], $Vz = [1, 76], $VA = [1, 8, 9, 12, 13, 22, 39, 41, 44, 68, 69, 70, 71, 72, 73, 74, 79, 81], $VB = [1, 8, 9, 12, 13, 18, 20, 22, 39, 41, 44, 50, 60, 68, 69, 70, 71, 72, 73, 74, 79, 81, 86, 100, 102, 103], $VC = [13, 60, 86, 100, 102, 103], $VD = [13, 60, 73, 74, 86, 100, 102, 103], $VE = [13, 60, 68, 69, 70, 71, 72, 86, 100, 102, 103], $VF = [1, 100], $VG = [1, 117], $VH = [1, 113], $VI = [1, 109], $VJ = [1, 115], $VK = [1, 110], $VL = [1, 111], $VM = [1, 112], $VN = [1, 114], $VO = [1, 116], $VP = [22, 48, 60, 61, 82, 86, 87, 88, 89, 90], $VQ = [1, 8, 9, 39, 41, 44], $VR = [1, 8, 9, 22], $VS = [1, 145], $VT = [1, 8, 9, 61], $VU = [1, 8, 9, 22, 48, 60, 61, 82, 86, 87, 88, 89, 90]; + var parser24 = { + trace: /* @__PURE__ */ __name(function trace() { + }, "trace"), + yy: {}, + symbols_: { "error": 2, "start": 3, "mermaidDoc": 4, "statements": 5, "graphConfig": 6, "CLASS_DIAGRAM": 7, "NEWLINE": 8, "EOF": 9, "statement": 10, "classLabel": 11, "SQS": 12, "STR": 13, "SQE": 14, "namespaceName": 15, "alphaNumToken": 16, "classLiteralName": 17, "DOT": 18, "className": 19, "GENERICTYPE": 20, "relationStatement": 21, "LABEL": 22, "namespaceStatement": 23, "classStatement": 24, "memberStatement": 25, "annotationStatement": 26, "clickStatement": 27, "styleStatement": 28, "cssClassStatement": 29, "noteStatement": 30, "classDefStatement": 31, "direction": 32, "acc_title": 33, "acc_title_value": 34, "acc_descr": 35, "acc_descr_value": 36, "acc_descr_multiline_value": 37, "namespaceIdentifier": 38, "STRUCT_START": 39, "classStatements": 40, "STRUCT_STOP": 41, "NAMESPACE": 42, "classIdentifier": 43, "STYLE_SEPARATOR": 44, "members": 45, "CLASS": 46, "emptyBody": 47, "SPACE": 48, "ANNOTATION_START": 49, "ANNOTATION_END": 50, "MEMBER": 51, "SEPARATOR": 52, "relation": 53, "NOTE_FOR": 54, "noteText": 55, "NOTE": 56, "CLASSDEF": 57, "classList": 58, "stylesOpt": 59, "ALPHA": 60, "COMMA": 61, "direction_tb": 62, "direction_bt": 63, "direction_rl": 64, "direction_lr": 65, "relationType": 66, "lineType": 67, "AGGREGATION": 68, "EXTENSION": 69, "COMPOSITION": 70, "DEPENDENCY": 71, "LOLLIPOP": 72, "LINE": 73, "DOTTED_LINE": 74, "CALLBACK": 75, "LINK": 76, "LINK_TARGET": 77, "CLICK": 78, "CALLBACK_NAME": 79, "CALLBACK_ARGS": 80, "HREF": 81, "STYLE": 82, "CSSCLASS": 83, "style": 84, "styleComponent": 85, "NUM": 86, "COLON": 87, "UNIT": 88, "BRKT": 89, "PCT": 90, "commentToken": 91, "textToken": 92, "graphCodeTokens": 93, "textNoTagsToken": 94, "TAGSTART": 95, "TAGEND": 96, "==": 97, "--": 98, "DEFAULT": 99, "MINUS": 100, "keywords": 101, "UNICODE_TEXT": 102, "BQUOTE_STR": 103, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 7: "CLASS_DIAGRAM", 8: "NEWLINE", 9: "EOF", 12: "SQS", 13: "STR", 14: "SQE", 18: "DOT", 20: "GENERICTYPE", 22: "LABEL", 33: "acc_title", 34: "acc_title_value", 35: "acc_descr", 36: "acc_descr_value", 37: "acc_descr_multiline_value", 39: "STRUCT_START", 41: "STRUCT_STOP", 42: "NAMESPACE", 44: "STYLE_SEPARATOR", 46: "CLASS", 48: "SPACE", 49: "ANNOTATION_START", 50: "ANNOTATION_END", 51: "MEMBER", 52: "SEPARATOR", 54: "NOTE_FOR", 56: "NOTE", 57: "CLASSDEF", 60: "ALPHA", 61: "COMMA", 62: "direction_tb", 63: "direction_bt", 64: "direction_rl", 65: "direction_lr", 68: "AGGREGATION", 69: "EXTENSION", 70: "COMPOSITION", 71: "DEPENDENCY", 72: "LOLLIPOP", 73: "LINE", 74: "DOTTED_LINE", 75: "CALLBACK", 76: "LINK", 77: "LINK_TARGET", 78: "CLICK", 79: "CALLBACK_NAME", 80: "CALLBACK_ARGS", 81: "HREF", 82: "STYLE", 83: "CSSCLASS", 86: "NUM", 87: "COLON", 88: "UNIT", 89: "BRKT", 90: "PCT", 93: "graphCodeTokens", 95: "TAGSTART", 96: "TAGEND", 97: "==", 98: "--", 99: "DEFAULT", 100: "MINUS", 101: "keywords", 102: "UNICODE_TEXT", 103: "BQUOTE_STR" }, + productions_: [0, [3, 1], [3, 1], [4, 1], [6, 4], [5, 1], [5, 2], [5, 3], [11, 3], [15, 1], [15, 1], [15, 3], [15, 2], [19, 1], [19, 3], [19, 1], [19, 2], [19, 2], [19, 2], [10, 1], [10, 2], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [10, 1], [23, 4], [23, 5], [38, 2], [40, 1], [40, 2], [40, 3], [24, 1], [24, 3], [24, 4], [24, 3], [24, 6], [43, 2], [43, 3], [47, 0], [47, 2], [47, 2], [26, 4], [45, 1], [45, 2], [25, 1], [25, 2], [25, 1], [25, 1], [21, 3], [21, 4], [21, 4], [21, 5], [30, 3], [30, 2], [31, 3], [58, 1], [58, 3], [32, 1], [32, 1], [32, 1], [32, 1], [53, 3], [53, 2], [53, 2], [53, 1], [66, 1], [66, 1], [66, 1], [66, 1], [66, 1], [67, 1], [67, 1], [27, 3], [27, 4], [27, 3], [27, 4], [27, 4], [27, 5], [27, 3], [27, 4], [27, 4], [27, 5], [27, 4], [27, 5], [27, 5], [27, 6], [28, 3], [29, 3], [59, 1], [59, 3], [84, 1], [84, 2], [85, 1], [85, 1], [85, 1], [85, 1], [85, 1], [85, 1], [85, 1], [85, 1], [85, 1], [91, 1], [91, 1], [92, 1], [92, 1], [92, 1], [92, 1], [92, 1], [92, 1], [92, 1], [94, 1], [94, 1], [94, 1], [94, 1], [16, 1], [16, 1], [16, 1], [16, 1], [17, 1], [55, 1]], + performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 8: + this.$ = $$[$0 - 1]; + break; + case 9: + case 10: + case 13: + case 15: + this.$ = $$[$0]; + break; + case 11: + case 14: + this.$ = $$[$0 - 2] + "." + $$[$0]; + break; + case 12: + case 16: + this.$ = $$[$0 - 1] + $$[$0]; + break; + case 17: + case 18: + this.$ = $$[$0 - 1] + "~" + $$[$0] + "~"; + break; + case 19: + yy.addRelation($$[$0]); + break; + case 20: + $$[$0 - 1].title = yy.cleanupLabel($$[$0]); + yy.addRelation($$[$0 - 1]); + break; + case 31: + this.$ = $$[$0].trim(); + yy.setAccTitle(this.$); + break; + case 32: + case 33: + this.$ = $$[$0].trim(); + yy.setAccDescription(this.$); + break; + case 34: + yy.addClassesToNamespace($$[$0 - 3], $$[$0 - 1]); + break; + case 35: + yy.addClassesToNamespace($$[$0 - 4], $$[$0 - 1]); + break; + case 36: + this.$ = $$[$0]; + yy.addNamespace($$[$0]); + break; + case 37: + this.$ = [$$[$0]]; + break; + case 38: + this.$ = [$$[$0 - 1]]; + break; + case 39: + $$[$0].unshift($$[$0 - 2]); + this.$ = $$[$0]; + break; + case 41: + yy.setCssClass($$[$0 - 2], $$[$0]); + break; + case 42: + yy.addMembers($$[$0 - 3], $$[$0 - 1]); + break; + case 44: + yy.setCssClass($$[$0 - 5], $$[$0 - 3]); + yy.addMembers($$[$0 - 5], $$[$0 - 1]); + break; + case 45: + this.$ = $$[$0]; + yy.addClass($$[$0]); + break; + case 46: + this.$ = $$[$0 - 1]; + yy.addClass($$[$0 - 1]); + yy.setClassLabel($$[$0 - 1], $$[$0]); + break; + case 50: + yy.addAnnotation($$[$0], $$[$0 - 2]); + break; + case 51: + case 64: + this.$ = [$$[$0]]; + break; + case 52: + $$[$0].push($$[$0 - 1]); + this.$ = $$[$0]; + break; + case 53: + break; + case 54: + yy.addMember($$[$0 - 1], yy.cleanupLabel($$[$0])); + break; + case 55: + break; + case 56: + break; + case 57: + this.$ = { "id1": $$[$0 - 2], "id2": $$[$0], relation: $$[$0 - 1], relationTitle1: "none", relationTitle2: "none" }; + break; + case 58: + this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 1], relationTitle1: $$[$0 - 2], relationTitle2: "none" }; + break; + case 59: + this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: "none", relationTitle2: $$[$0 - 1] }; + break; + case 60: + this.$ = { id1: $$[$0 - 4], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: $$[$0 - 3], relationTitle2: $$[$0 - 1] }; + break; + case 61: + yy.addNote($$[$0], $$[$0 - 1]); + break; + case 62: + yy.addNote($$[$0]); + break; + case 63: + this.$ = $$[$0 - 2]; + yy.defineClass($$[$0 - 1], $$[$0]); + break; + case 65: + this.$ = $$[$0 - 2].concat([$$[$0]]); + break; + case 66: + yy.setDirection("TB"); + break; + case 67: + yy.setDirection("BT"); + break; + case 68: + yy.setDirection("RL"); + break; + case 69: + yy.setDirection("LR"); + break; + case 70: + this.$ = { type1: $$[$0 - 2], type2: $$[$0], lineType: $$[$0 - 1] }; + break; + case 71: + this.$ = { type1: "none", type2: $$[$0], lineType: $$[$0 - 1] }; + break; + case 72: + this.$ = { type1: $$[$0 - 1], type2: "none", lineType: $$[$0] }; + break; + case 73: + this.$ = { type1: "none", type2: "none", lineType: $$[$0] }; + break; + case 74: + this.$ = yy.relationType.AGGREGATION; + break; + case 75: + this.$ = yy.relationType.EXTENSION; + break; + case 76: + this.$ = yy.relationType.COMPOSITION; + break; + case 77: + this.$ = yy.relationType.DEPENDENCY; + break; + case 78: + this.$ = yy.relationType.LOLLIPOP; + break; + case 79: + this.$ = yy.lineType.LINE; + break; + case 80: + this.$ = yy.lineType.DOTTED_LINE; + break; + case 81: + case 87: + this.$ = $$[$0 - 2]; + yy.setClickEvent($$[$0 - 1], $$[$0]); + break; + case 82: + case 88: + this.$ = $$[$0 - 3]; + yy.setClickEvent($$[$0 - 2], $$[$0 - 1]); + yy.setTooltip($$[$0 - 2], $$[$0]); + break; + case 83: + this.$ = $$[$0 - 2]; + yy.setLink($$[$0 - 1], $$[$0]); + break; + case 84: + this.$ = $$[$0 - 3]; + yy.setLink($$[$0 - 2], $$[$0 - 1], $$[$0]); + break; + case 85: + this.$ = $$[$0 - 3]; + yy.setLink($$[$0 - 2], $$[$0 - 1]); + yy.setTooltip($$[$0 - 2], $$[$0]); + break; + case 86: + this.$ = $$[$0 - 4]; + yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]); + yy.setTooltip($$[$0 - 3], $$[$0 - 1]); + break; + case 89: + this.$ = $$[$0 - 3]; + yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]); + break; + case 90: + this.$ = $$[$0 - 4]; + yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]); + yy.setTooltip($$[$0 - 3], $$[$0]); + break; + case 91: + this.$ = $$[$0 - 3]; + yy.setLink($$[$0 - 2], $$[$0]); + break; + case 92: + this.$ = $$[$0 - 4]; + yy.setLink($$[$0 - 3], $$[$0 - 1], $$[$0]); + break; + case 93: + this.$ = $$[$0 - 4]; + yy.setLink($$[$0 - 3], $$[$0 - 1]); + yy.setTooltip($$[$0 - 3], $$[$0]); + break; + case 94: + this.$ = $$[$0 - 5]; + yy.setLink($$[$0 - 4], $$[$0 - 2], $$[$0]); + yy.setTooltip($$[$0 - 4], $$[$0 - 1]); + break; + case 95: + this.$ = $$[$0 - 2]; + yy.setCssStyle($$[$0 - 1], $$[$0]); + break; + case 96: + yy.setCssClass($$[$0 - 1], $$[$0]); + break; + case 97: + this.$ = [$$[$0]]; + break; + case 98: + $$[$0 - 2].push($$[$0]); + this.$ = $$[$0 - 2]; + break; + case 100: + this.$ = $$[$0 - 1] + $$[$0]; + break; + } + }, "anonymous"), + table: [{ 3: 1, 4: 2, 5: 3, 6: 4, 7: [1, 6], 10: 5, 16: 39, 17: 40, 19: 21, 21: 7, 23: 8, 24: 9, 25: 10, 26: 11, 27: 12, 28: 13, 29: 14, 30: 15, 31: 16, 32: 17, 33: $V0, 35: $V1, 37: $V2, 38: 22, 42: $V3, 43: 23, 46: $V4, 49: $V5, 51: $V6, 52: $V7, 54: $V8, 56: $V9, 57: $Va, 60: $Vb, 62: $Vc, 63: $Vd, 64: $Ve, 65: $Vf, 75: $Vg, 76: $Vh, 78: $Vi, 82: $Vj, 83: $Vk, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3] }, o2($Vp, [2, 5], { 8: [1, 48] }), { 8: [1, 49] }, o2($Vq, [2, 19], { 22: [1, 50] }), o2($Vq, [2, 21]), o2($Vq, [2, 22]), o2($Vq, [2, 23]), o2($Vq, [2, 24]), o2($Vq, [2, 25]), o2($Vq, [2, 26]), o2($Vq, [2, 27]), o2($Vq, [2, 28]), o2($Vq, [2, 29]), o2($Vq, [2, 30]), { 34: [1, 51] }, { 36: [1, 52] }, o2($Vq, [2, 33]), o2($Vq, [2, 53], { 53: 53, 66: 56, 67: 57, 13: [1, 54], 22: [1, 55], 68: $Vr, 69: $Vs, 70: $Vt, 71: $Vu, 72: $Vv, 73: $Vw, 74: $Vx }), { 39: [1, 65] }, o2($Vy, [2, 40], { 39: [1, 67], 44: [1, 66] }), o2($Vq, [2, 55]), o2($Vq, [2, 56]), { 16: 68, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn }, { 16: 39, 17: 40, 19: 69, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, { 16: 39, 17: 40, 19: 70, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, { 16: 39, 17: 40, 19: 71, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, { 60: [1, 72] }, { 13: [1, 73] }, { 16: 39, 17: 40, 19: 74, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, { 13: $Vz, 55: 75 }, { 58: 77, 60: [1, 78] }, o2($Vq, [2, 66]), o2($Vq, [2, 67]), o2($Vq, [2, 68]), o2($Vq, [2, 69]), o2($VA, [2, 13], { 16: 39, 17: 40, 19: 80, 18: [1, 79], 20: [1, 81], 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }), o2($VA, [2, 15], { 20: [1, 82] }), { 15: 83, 16: 84, 17: 85, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, { 16: 39, 17: 40, 19: 86, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, o2($VB, [2, 123]), o2($VB, [2, 124]), o2($VB, [2, 125]), o2($VB, [2, 126]), o2([1, 8, 9, 12, 13, 20, 22, 39, 41, 44, 68, 69, 70, 71, 72, 73, 74, 79, 81], [2, 127]), o2($Vp, [2, 6], { 10: 5, 21: 7, 23: 8, 24: 9, 25: 10, 26: 11, 27: 12, 28: 13, 29: 14, 30: 15, 31: 16, 32: 17, 19: 21, 38: 22, 43: 23, 16: 39, 17: 40, 5: 87, 33: $V0, 35: $V1, 37: $V2, 42: $V3, 46: $V4, 49: $V5, 51: $V6, 52: $V7, 54: $V8, 56: $V9, 57: $Va, 60: $Vb, 62: $Vc, 63: $Vd, 64: $Ve, 65: $Vf, 75: $Vg, 76: $Vh, 78: $Vi, 82: $Vj, 83: $Vk, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }), { 5: 88, 10: 5, 16: 39, 17: 40, 19: 21, 21: 7, 23: 8, 24: 9, 25: 10, 26: 11, 27: 12, 28: 13, 29: 14, 30: 15, 31: 16, 32: 17, 33: $V0, 35: $V1, 37: $V2, 38: 22, 42: $V3, 43: 23, 46: $V4, 49: $V5, 51: $V6, 52: $V7, 54: $V8, 56: $V9, 57: $Va, 60: $Vb, 62: $Vc, 63: $Vd, 64: $Ve, 65: $Vf, 75: $Vg, 76: $Vh, 78: $Vi, 82: $Vj, 83: $Vk, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, o2($Vq, [2, 20]), o2($Vq, [2, 31]), o2($Vq, [2, 32]), { 13: [1, 90], 16: 39, 17: 40, 19: 89, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, { 53: 91, 66: 56, 67: 57, 68: $Vr, 69: $Vs, 70: $Vt, 71: $Vu, 72: $Vv, 73: $Vw, 74: $Vx }, o2($Vq, [2, 54]), { 67: 92, 73: $Vw, 74: $Vx }, o2($VC, [2, 73], { 66: 93, 68: $Vr, 69: $Vs, 70: $Vt, 71: $Vu, 72: $Vv }), o2($VD, [2, 74]), o2($VD, [2, 75]), o2($VD, [2, 76]), o2($VD, [2, 77]), o2($VD, [2, 78]), o2($VE, [2, 79]), o2($VE, [2, 80]), { 8: [1, 95], 24: 96, 40: 94, 43: 23, 46: $V4 }, { 16: 97, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn }, { 41: [1, 99], 45: 98, 51: $VF }, { 50: [1, 101] }, { 13: [1, 102] }, { 13: [1, 103] }, { 79: [1, 104], 81: [1, 105] }, { 22: $VG, 48: $VH, 59: 106, 60: $VI, 82: $VJ, 84: 107, 85: 108, 86: $VK, 87: $VL, 88: $VM, 89: $VN, 90: $VO }, { 60: [1, 118] }, { 13: $Vz, 55: 119 }, o2($Vq, [2, 62]), o2($Vq, [2, 128]), { 22: $VG, 48: $VH, 59: 120, 60: $VI, 61: [1, 121], 82: $VJ, 84: 107, 85: 108, 86: $VK, 87: $VL, 88: $VM, 89: $VN, 90: $VO }, o2($VP, [2, 64]), { 16: 39, 17: 40, 19: 122, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, o2($VA, [2, 16]), o2($VA, [2, 17]), o2($VA, [2, 18]), { 39: [2, 36] }, { 15: 124, 16: 84, 17: 85, 18: [1, 123], 39: [2, 9], 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, { 39: [2, 10] }, o2($VQ, [2, 45], { 11: 125, 12: [1, 126] }), o2($Vp, [2, 7]), { 9: [1, 127] }, o2($VR, [2, 57]), { 16: 39, 17: 40, 19: 128, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, { 13: [1, 130], 16: 39, 17: 40, 19: 129, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, o2($VC, [2, 72], { 66: 131, 68: $Vr, 69: $Vs, 70: $Vt, 71: $Vu, 72: $Vv }), o2($VC, [2, 71]), { 41: [1, 132] }, { 24: 96, 40: 133, 43: 23, 46: $V4 }, { 8: [1, 134], 41: [2, 37] }, o2($Vy, [2, 41], { 39: [1, 135] }), { 41: [1, 136] }, o2($Vy, [2, 43]), { 41: [2, 51], 45: 137, 51: $VF }, { 16: 39, 17: 40, 19: 138, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, o2($Vq, [2, 81], { 13: [1, 139] }), o2($Vq, [2, 83], { 13: [1, 141], 77: [1, 140] }), o2($Vq, [2, 87], { 13: [1, 142], 80: [1, 143] }), { 13: [1, 144] }, o2($Vq, [2, 95], { 61: $VS }), o2($VT, [2, 97], { 85: 146, 22: $VG, 48: $VH, 60: $VI, 82: $VJ, 86: $VK, 87: $VL, 88: $VM, 89: $VN, 90: $VO }), o2($VU, [2, 99]), o2($VU, [2, 101]), o2($VU, [2, 102]), o2($VU, [2, 103]), o2($VU, [2, 104]), o2($VU, [2, 105]), o2($VU, [2, 106]), o2($VU, [2, 107]), o2($VU, [2, 108]), o2($VU, [2, 109]), o2($Vq, [2, 96]), o2($Vq, [2, 61]), o2($Vq, [2, 63], { 61: $VS }), { 60: [1, 147] }, o2($VA, [2, 14]), { 15: 148, 16: 84, 17: 85, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, { 39: [2, 12] }, o2($VQ, [2, 46]), { 13: [1, 149] }, { 1: [2, 4] }, o2($VR, [2, 59]), o2($VR, [2, 58]), { 16: 39, 17: 40, 19: 150, 60: $Vb, 86: $Vl, 100: $Vm, 102: $Vn, 103: $Vo }, o2($VC, [2, 70]), o2($Vq, [2, 34]), { 41: [1, 151] }, { 24: 96, 40: 152, 41: [2, 38], 43: 23, 46: $V4 }, { 45: 153, 51: $VF }, o2($Vy, [2, 42]), { 41: [2, 52] }, o2($Vq, [2, 50]), o2($Vq, [2, 82]), o2($Vq, [2, 84]), o2($Vq, [2, 85], { 77: [1, 154] }), o2($Vq, [2, 88]), o2($Vq, [2, 89], { 13: [1, 155] }), o2($Vq, [2, 91], { 13: [1, 157], 77: [1, 156] }), { 22: $VG, 48: $VH, 60: $VI, 82: $VJ, 84: 158, 85: 108, 86: $VK, 87: $VL, 88: $VM, 89: $VN, 90: $VO }, o2($VU, [2, 100]), o2($VP, [2, 65]), { 39: [2, 11] }, { 14: [1, 159] }, o2($VR, [2, 60]), o2($Vq, [2, 35]), { 41: [2, 39] }, { 41: [1, 160] }, o2($Vq, [2, 86]), o2($Vq, [2, 90]), o2($Vq, [2, 92]), o2($Vq, [2, 93], { 77: [1, 161] }), o2($VT, [2, 98], { 85: 146, 22: $VG, 48: $VH, 60: $VI, 82: $VJ, 86: $VK, 87: $VL, 88: $VM, 89: $VN, 90: $VO }), o2($VQ, [2, 8]), o2($Vy, [2, 44]), o2($Vq, [2, 94])], + defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 3], 83: [2, 36], 85: [2, 10], 124: [2, 12], 127: [2, 4], 137: [2, 52], 148: [2, 11], 152: [2, 39] }, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); + } else { + var error3 = new Error(str2); + error3.hash = hash; + throw error3; + } + }, "parseError"), + parse: /* @__PURE__ */ __name(function parse7(input) { + var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k2 in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { + sharedState.yy[k2] = this.yy[k2]; } - __name(_toConsumableArray2, "_toConsumableArray"); - var LayoutConstants = __webpack_require__(0); - var LGraphManager = __webpack_require__(6); - var LNode = __webpack_require__(3); - var LEdge = __webpack_require__(1); - var LGraph = __webpack_require__(5); - var PointD = __webpack_require__(4); - var Transform2 = __webpack_require__(17); - var Emitter4 = __webpack_require__(27); - function Layout2(isRemoteUse) { - Emitter4.call(this); - this.layoutQuality = LayoutConstants.QUALITY; - this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; - this.incremental = LayoutConstants.DEFAULT_INCREMENTAL; - this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT; - this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT; - this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD; - this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES; - this.edgeToDummyNodes = /* @__PURE__ */ new Map(); - this.graphManager = new LGraphManager(this); - this.isLayoutFinished = false; - this.isSubLayout = false; - this.isRemoteUse = false; - if (isRemoteUse != null) { - this.isRemoteUse = isRemoteUse; + } + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; + } + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n2) { + stack.length = stack.length - 2 * n2; + vstack.length = vstack.length - n2; + lstack.length = lstack.length - n2; + } + __name(popStack, "popStack"); + function lex() { + var token2; + token2 = tstack.pop() || lexer2.lex() || EOF2; + if (typeof token2 !== "number") { + if (token2 instanceof Array) { + tstack = token2; + token2 = tstack.pop(); } + token2 = self2.symbols_[token2] || token2; } - __name(Layout2, "Layout"); - Layout2.RANDOM_SEED = 1; - Layout2.prototype = Object.create(Emitter4.prototype); - Layout2.prototype.getGraphManager = function() { - return this.graphManager; - }; - Layout2.prototype.getAllNodes = function() { - return this.graphManager.getAllNodes(); - }; - Layout2.prototype.getAllEdges = function() { - return this.graphManager.getAllEdges(); - }; - Layout2.prototype.getAllNodesToApplyGravitation = function() { - return this.graphManager.getAllNodesToApplyGravitation(); - }; - Layout2.prototype.newGraphManager = function() { - var gm = new LGraphManager(this); - this.graphManager = gm; - return gm; - }; - Layout2.prototype.newGraph = function(vGraph) { - return new LGraph(null, this.graphManager, vGraph); - }; - Layout2.prototype.newNode = function(vNode) { - return new LNode(this.graphManager, vNode); - }; - Layout2.prototype.newEdge = function(vEdge) { - return new LEdge(null, null, vEdge); - }; - Layout2.prototype.checkLayoutSuccess = function() { - return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge(); - }; - Layout2.prototype.runLayout = function() { - this.isLayoutFinished = false; - if (this.tilingPreLayout) { - this.tilingPreLayout(); - } - this.initParameters(); - var isLayoutSuccessfull; - if (this.checkLayoutSuccess()) { - isLayoutSuccessfull = false; - } else { - isLayoutSuccessfull = this.layout(); - } - if (LayoutConstants.ANIMATE === "during") { - return false; - } - if (isLayoutSuccessfull) { - if (!this.isSubLayout) { - this.doPostLayout(); - } - } - if (this.tilingPostLayout) { - this.tilingPostLayout(); - } - this.isLayoutFinished = true; - return isLayoutSuccessfull; - }; - Layout2.prototype.doPostLayout = function() { - if (!this.incremental) { - this.transform(); - } - this.update(); - }; - Layout2.prototype.update2 = function() { - if (this.createBendsAsNeeded) { - this.createBendpointsFromDummyNodes(); - this.graphManager.resetAllEdges(); - } - if (!this.isRemoteUse) { - var edge; - var allEdges = this.graphManager.getAllEdges(); - for (var i2 = 0; i2 < allEdges.length; i2++) { - edge = allEdges[i2]; - } - var node2; - var nodes6 = this.graphManager.getRoot().getNodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - node2 = nodes6[i2]; - } - this.update(this.graphManager.getRoot()); - } - }; - Layout2.prototype.update = function(obj) { - if (obj == null) { - this.update2(); - } else if (obj instanceof LNode) { - var node2 = obj; - if (node2.getChild() != null) { - var nodes6 = node2.getChild().getNodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - update(nodes6[i2]); - } - } - if (node2.vGraphObject != null) { - var vNode = node2.vGraphObject; - vNode.update(node2); - } - } else if (obj instanceof LEdge) { - var edge = obj; - if (edge.vGraphObject != null) { - var vEdge = edge.vGraphObject; - vEdge.update(edge); - } - } else if (obj instanceof LGraph) { - var graph = obj; - if (graph.vGraphObject != null) { - var vGraph = graph.vGraphObject; - vGraph.update(graph); - } - } - }; - Layout2.prototype.initParameters = function() { - if (!this.isSubLayout) { - this.layoutQuality = LayoutConstants.QUALITY; - this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT; - this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD; - this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT; - this.incremental = LayoutConstants.DEFAULT_INCREMENTAL; - this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; - this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES; - } - if (this.animationDuringLayout) { - this.animationOnLayout = false; - } - }; - Layout2.prototype.transform = function(newLeftTop) { - if (newLeftTop == void 0) { - this.transform(new PointD(0, 0)); - } else { - var trans = new Transform2(); - var leftTop = this.graphManager.getRoot().updateLeftTop(); - if (leftTop != null) { - trans.setWorldOrgX(newLeftTop.x); - trans.setWorldOrgY(newLeftTop.y); - trans.setDeviceOrgX(leftTop.x); - trans.setDeviceOrgY(leftTop.y); - var nodes6 = this.getAllNodes(); - var node2; - for (var i2 = 0; i2 < nodes6.length; i2++) { - node2 = nodes6[i2]; - node2.transform(trans); - } - } - } - }; - Layout2.prototype.positionNodesRandomly = function(graph) { - if (graph == void 0) { - this.positionNodesRandomly(this.getGraphManager().getRoot()); - this.getGraphManager().getRoot().updateBounds(true); - } else { - var lNode; - var childGraph; - var nodes6 = graph.getNodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - lNode = nodes6[i2]; - childGraph = lNode.getChild(); - if (childGraph == null) { - lNode.scatter(); - } else if (childGraph.getNodes().length == 0) { - lNode.scatter(); - } else { - this.positionNodesRandomly(childGraph); - lNode.updateBounds(); - } - } - } - }; - Layout2.prototype.getFlatForest = function() { - var flatForest = []; - var isForest = true; - var allNodes = this.graphManager.getRoot().getNodes(); - var isFlat = true; - for (var i2 = 0; i2 < allNodes.length; i2++) { - if (allNodes[i2].getChild() != null) { - isFlat = false; - } - } - if (!isFlat) { - return flatForest; - } - var visited = /* @__PURE__ */ new Set(); - var toBeVisited = []; - var parents3 = /* @__PURE__ */ new Map(); - var unProcessedNodes = []; - unProcessedNodes = unProcessedNodes.concat(allNodes); - while (unProcessedNodes.length > 0 && isForest) { - toBeVisited.push(unProcessedNodes[0]); - while (toBeVisited.length > 0 && isForest) { - var currentNode = toBeVisited[0]; - toBeVisited.splice(0, 1); - visited.add(currentNode); - var neighborEdges = currentNode.getEdges(); - for (var i2 = 0; i2 < neighborEdges.length; i2++) { - var currentNeighbor = neighborEdges[i2].getOtherEnd(currentNode); - if (parents3.get(currentNode) != currentNeighbor) { - if (!visited.has(currentNeighbor)) { - toBeVisited.push(currentNeighbor); - parents3.set(currentNeighbor, currentNode); - } else { - isForest = false; - break; - } - } - } - } - if (!isForest) { - flatForest = []; - } else { - var temp = [].concat(_toConsumableArray2(visited)); - flatForest.push(temp); - for (var i2 = 0; i2 < temp.length; i2++) { - var value2 = temp[i2]; - var index = unProcessedNodes.indexOf(value2); - if (index > -1) { - unProcessedNodes.splice(index, 1); - } - } - visited = /* @__PURE__ */ new Set(); - parents3 = /* @__PURE__ */ new Map(); - } + return token2; + } + __name(lex, "lex"); + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; + while (true) { + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); } - return flatForest; - }; - Layout2.prototype.createDummyNodesForBendpoints = function(edge) { - var dummyNodes = []; - var prev2 = edge.source; - var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target); - for (var i2 = 0; i2 < edge.bendpoints.length; i2++) { - var dummyNode = this.newNode(null); - dummyNode.setRect(new Point(0, 0), new Dimension(1, 1)); - graph.add(dummyNode); - var dummyEdge = this.newEdge(null); - this.graphManager.add(dummyEdge, prev2, dummyNode); - dummyNodes.add(dummyNode); - prev2 = dummyNode; + action = table[state3] && table[state3][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p3 in table[state3]) { + if (this.terminals_[p3] && p3 > TERROR) { + expected.push("'" + this.terminals_[p3] + "'"); + } } - var dummyEdge = this.newEdge(null); - this.graphManager.add(dummyEdge, prev2, edge.target); - this.edgeToDummyNodes.set(edge, dummyNodes); - if (edge.isInterGraph()) { - this.graphManager.remove(edge); + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; } else { - graph.remove(edge); + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); } - return dummyNodes; - }; - Layout2.prototype.createBendpointsFromDummyNodes = function() { - var edges3 = []; - edges3 = edges3.concat(this.graphManager.getAllEdges()); - edges3 = [].concat(_toConsumableArray2(this.edgeToDummyNodes.keys())).concat(edges3); - for (var k2 = 0; k2 < edges3.length; k2++) { - var lEdge = edges3[k2]; - if (lEdge.bendpoints.length > 0) { - var path4 = this.edgeToDummyNodes.get(lEdge); - for (var i2 = 0; i2 < path4.length; i2++) { - var dummyNode = path4[i2]; - var p3 = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY()); - var ebp = lEdge.bendpoints.get(i2); - ebp.x = p3.x; - ebp.y = p3.y; - dummyNode.getOwner().remove(dummyNode); + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + if (recovering > 0) { + recovering--; } - this.graphManager.add(lEdge, lEdge.source, lEdge.target); - } - } - }; - Layout2.transform = function(sliderValue, defaultValue, minDiv, maxMul) { - if (minDiv != void 0 && maxMul != void 0) { - var value2 = defaultValue; - if (sliderValue <= 50) { - var minValue = defaultValue / minDiv; - value2 -= (defaultValue - minValue) / 50 * (50 - sliderValue); } else { - var maxValue = defaultValue * maxMul; - value2 += (maxValue - defaultValue) / 50 * (sliderValue - 50); + symbol = preErrorSymbol; + preErrorSymbol = null; } - return value2; - } else { - var a2, b2; - if (sliderValue <= 50) { - a2 = 9 * defaultValue / 500; - b2 = defaultValue / 10; - } else { - a2 = 9 * defaultValue / 50; - b2 = -8 * defaultValue; + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; } - return a2 * sliderValue + b2; - } + r2 = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r2 !== "undefined") { + return r2; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState2); + break; + case 3: + return true; + } + } + return true; + }, "parse") + }; + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { + EOF: 1, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str2, hash); + } else { + throw new Error(str2); + } + }, "parseError"), + // resets the lexer, sets new input + setInput: /* @__PURE__ */ __name(function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 }; - Layout2.findCenterOfTree = function(nodes6) { - var list2 = []; - list2 = list2.concat(nodes6); - var removedNodes = []; - var remainingDegrees = /* @__PURE__ */ new Map(); - var foundCenter = false; - var centerNode = null; - if (list2.length == 1 || list2.length == 2) { - foundCenter = true; - centerNode = list2[0]; + if (this.options.ranges) { + this.yylloc.range = [0, 0]; + } + this.offset = 0; + return this; + }, "setInput"), + // consumes and returns one char from the input + input: /* @__PURE__ */ __name(function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } + this._input = this._input.slice(1); + return ch; + }, "input"), + // unshifts one char (or a string) into the input + unput: /* @__PURE__ */ __name(function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r2 = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + }; + if (this.options.ranges) { + this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, "unput"), + // When called from action, caches matched text and appends it on next action + more: /* @__PURE__ */ __name(function() { + this._more = true; + return this; + }, "more"), + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: /* @__PURE__ */ __name(function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + return this; + }, "reject"), + // retain first n characters of the match + less: /* @__PURE__ */ __name(function(n2) { + this.unput(this.match.slice(n2)); + }, "less"), + // displays already matched input, i.e. for error messages + pastInput: /* @__PURE__ */ __name(function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, "pastInput"), + // displays upcoming input, i.e. for error messages + upcomingInput: /* @__PURE__ */ __name(function() { + var next3 = this.match; + if (next3.length < 20) { + next3 += this._input.substr(0, 20 - next3.length); + } + return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, "upcomingInput"), + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: /* @__PURE__ */ __name(function() { + var pre = this.pastInput(); + var c3 = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c3 + "^"; + }, "showPosition"), + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { + var token2, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); } - for (var i2 = 0; i2 < list2.length; i2++) { - var node2 = list2[i2]; - var degree = node2.getNeighborsList().size; - remainingDegrees.set(node2, node2.getNeighborsList().size); - if (degree == 1) { - removedNodes.push(node2); - } + } + lines = match2[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length + }; + this.yytext += match2[0]; + this.match += match2[0]; + this.matches = match2; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match2[0].length); + this.matched += match2[0]; + token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token2) { + return token2; + } else if (this._backtrack) { + for (var k2 in backup) { + this[k2] = backup[k2]; } - var tempList = []; - tempList = tempList.concat(removedNodes); - while (!foundCenter) { - var tempList2 = []; - tempList2 = tempList2.concat(tempList); - tempList = []; - for (var i2 = 0; i2 < list2.length; i2++) { - var node2 = list2[i2]; - var index = list2.indexOf(node2); - if (index >= 0) { - list2.splice(index, 1); + return false; + } + return false; + }, "test_match"), + // return next match in input + next: /* @__PURE__ */ __name(function() { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + var token2, match2, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i2 = 0; i2 < rules.length; i2++) { + tempMatch = this._input.match(this.rules[rules[i2]]); + if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { + match2 = tempMatch; + index = i2; + if (this.options.backtrack_lexer) { + token2 = this.test_match(tempMatch, rules[i2]); + if (token2 !== false) { + return token2; + } else if (this._backtrack) { + match2 = false; + continue; + } else { + return false; } - var neighbours = node2.getNeighborsList(); - neighbours.forEach(function(neighbour) { - if (removedNodes.indexOf(neighbour) < 0) { - var otherDegree = remainingDegrees.get(neighbour); - var newDegree = otherDegree - 1; - if (newDegree == 1) { - tempList.push(neighbour); - } - remainingDegrees.set(neighbour, newDegree); - } - }); - } - removedNodes = removedNodes.concat(tempList); - if (list2.length == 1 || list2.length == 2) { - foundCenter = true; - centerNode = list2[0]; + } else if (!this.options.flex) { + break; } } - return centerNode; - }; - Layout2.prototype.setGraphManager = function(gm) { - this.graphManager = gm; - }; - module3.exports = Layout2; - }, - /* 16 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function RandomSeed() { } - __name(RandomSeed, "RandomSeed"); - RandomSeed.seed = 1; - RandomSeed.x = 0; - RandomSeed.nextDouble = function() { - RandomSeed.x = Math.sin(RandomSeed.seed++) * 1e4; - return RandomSeed.x - Math.floor(RandomSeed.x); - }; - module3.exports = RandomSeed; - }, - /* 17 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var PointD = __webpack_require__(4); - function Transform2(x5, y5) { - this.lworldOrgX = 0; - this.lworldOrgY = 0; - this.ldeviceOrgX = 0; - this.ldeviceOrgY = 0; - this.lworldExtX = 1; - this.lworldExtY = 1; - this.ldeviceExtX = 1; - this.ldeviceExtY = 1; + if (match2) { + token2 = this.test_match(match2, rules[index]); + if (token2 !== false) { + return token2; + } + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, "next"), + // return next match that has a token + lex: /* @__PURE__ */ __name(function lex() { + var r2 = this.next(); + if (r2) { + return r2; + } else { + return this.lex(); + } + }, "lex"), + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: /* @__PURE__ */ __name(function begin(condition) { + this.conditionStack.push(condition); + }, "begin"), + // pop the previously active lexer condition state off the condition stack + popState: /* @__PURE__ */ __name(function popState() { + var n2 = this.conditionStack.length - 1; + if (n2 > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, "popState"), + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: /* @__PURE__ */ __name(function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, "_currentRules"), + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: /* @__PURE__ */ __name(function topState(n2) { + n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); + if (n2 >= 0) { + return this.conditionStack[n2]; + } else { + return "INITIAL"; + } + }, "topState"), + // alias for begin(condition) + pushState: /* @__PURE__ */ __name(function pushState(condition) { + this.begin(condition); + }, "pushState"), + // return the number of states currently on the stack + stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { + return this.conditionStack.length; + }, "stateStackSize"), + options: {}, + performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + var YYSTATE = YY_START; + switch ($avoiding_name_collisions) { + case 0: + return 62; + break; + case 1: + return 63; + break; + case 2: + return 64; + break; + case 3: + return 65; + break; + case 4: + break; + case 5: + break; + case 6: + this.begin("acc_title"); + return 33; + break; + case 7: + this.popState(); + return "acc_title_value"; + break; + case 8: + this.begin("acc_descr"); + return 35; + break; + case 9: + this.popState(); + return "acc_descr_value"; + break; + case 10: + this.begin("acc_descr_multiline"); + break; + case 11: + this.popState(); + break; + case 12: + return "acc_descr_multiline_value"; + break; + case 13: + return 8; + break; + case 14: + break; + case 15: + return 7; + break; + case 16: + return 7; + break; + case 17: + return "EDGE_STATE"; + break; + case 18: + this.begin("callback_name"); + break; + case 19: + this.popState(); + break; + case 20: + this.popState(); + this.begin("callback_args"); + break; + case 21: + return 79; + break; + case 22: + this.popState(); + break; + case 23: + return 80; + break; + case 24: + this.popState(); + break; + case 25: + return "STR"; + break; + case 26: + this.begin("string"); + break; + case 27: + return 82; + break; + case 28: + return 57; + break; + case 29: + this.begin("namespace"); + return 42; + break; + case 30: + this.popState(); + return 8; + break; + case 31: + break; + case 32: + this.begin("namespace-body"); + return 39; + break; + case 33: + this.popState(); + return 41; + break; + case 34: + return "EOF_IN_STRUCT"; + break; + case 35: + return 8; + break; + case 36: + break; + case 37: + return "EDGE_STATE"; + break; + case 38: + this.begin("class"); + return 46; + break; + case 39: + this.popState(); + return 8; + break; + case 40: + break; + case 41: + this.popState(); + this.popState(); + return 41; + break; + case 42: + this.begin("class-body"); + return 39; + break; + case 43: + this.popState(); + return 41; + break; + case 44: + return "EOF_IN_STRUCT"; + break; + case 45: + return "EDGE_STATE"; + break; + case 46: + return "OPEN_IN_STRUCT"; + break; + case 47: + break; + case 48: + return "MEMBER"; + break; + case 49: + return 83; + break; + case 50: + return 75; + break; + case 51: + return 76; + break; + case 52: + return 78; + break; + case 53: + return 54; + break; + case 54: + return 56; + break; + case 55: + return 49; + break; + case 56: + return 50; + break; + case 57: + return 81; + break; + case 58: + this.popState(); + break; + case 59: + return "GENERICTYPE"; + break; + case 60: + this.begin("generic"); + break; + case 61: + this.popState(); + break; + case 62: + return "BQUOTE_STR"; + break; + case 63: + this.begin("bqstring"); + break; + case 64: + return 77; + break; + case 65: + return 77; + break; + case 66: + return 77; + break; + case 67: + return 77; + break; + case 68: + return 69; + break; + case 69: + return 69; + break; + case 70: + return 71; + break; + case 71: + return 71; + break; + case 72: + return 70; + break; + case 73: + return 68; + break; + case 74: + return 72; + break; + case 75: + return 73; + break; + case 76: + return 74; + break; + case 77: + return 22; + break; + case 78: + return 44; + break; + case 79: + return 100; + break; + case 80: + return 18; + break; + case 81: + return "PLUS"; + break; + case 82: + return 87; + break; + case 83: + return 61; + break; + case 84: + return 89; + break; + case 85: + return 89; + break; + case 86: + return 90; + break; + case 87: + return "EQUALS"; + break; + case 88: + return "EQUALS"; + break; + case 89: + return 60; + break; + case 90: + return 12; + break; + case 91: + return 14; + break; + case 92: + return "PUNCTUATION"; + break; + case 93: + return 86; + break; + case 94: + return 102; + break; + case 95: + return 48; + break; + case 96: + return 48; + break; + case 97: + return 9; + break; + } + }, "anonymous"), + rules: [/^(?:.*direction\s+TB[^\n]*)/, /^(?:.*direction\s+BT[^\n]*)/, /^(?:.*direction\s+RL[^\n]*)/, /^(?:.*direction\s+LR[^\n]*)/, /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/, /^(?:%%[^\n]*(\r?\n)*)/, /^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:classDiagram-v2\b)/, /^(?:classDiagram\b)/, /^(?:\[\*\])/, /^(?:call[\s]+)/, /^(?:\([\s]*\))/, /^(?:\()/, /^(?:[^(]*)/, /^(?:\))/, /^(?:[^)]*)/, /^(?:["])/, /^(?:[^"]*)/, /^(?:["])/, /^(?:style\b)/, /^(?:classDef\b)/, /^(?:namespace\b)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:\[\*\])/, /^(?:class\b)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:[}])/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\[\*\])/, /^(?:[{])/, /^(?:[\n])/, /^(?:[^{}\n]*)/, /^(?:cssClass\b)/, /^(?:callback\b)/, /^(?:link\b)/, /^(?:click\b)/, /^(?:note for\b)/, /^(?:note\b)/, /^(?:<<)/, /^(?:>>)/, /^(?:href\b)/, /^(?:[~])/, /^(?:[^~]*)/, /^(?:~)/, /^(?:[`])/, /^(?:[^`]+)/, /^(?:[`])/, /^(?:_self\b)/, /^(?:_blank\b)/, /^(?:_parent\b)/, /^(?:_top\b)/, /^(?:\s*<\|)/, /^(?:\s*\|>)/, /^(?:\s*>)/, /^(?:\s*<)/, /^(?:\s*\*)/, /^(?:\s*o\b)/, /^(?:\s*\(\))/, /^(?:--)/, /^(?:\.\.)/, /^(?::{1}[^:\n;]+)/, /^(?::{3})/, /^(?:-)/, /^(?:\.)/, /^(?:\+)/, /^(?::)/, /^(?:,)/, /^(?:#)/, /^(?:#)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:\w+)/, /^(?:\[)/, /^(?:\])/, /^(?:[!"#$%&'*+,-.`?\\/])/, /^(?:[0-9]+)/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\s)/, /^(?:\s)/, /^(?:$)/], + conditions: { "namespace-body": { "rules": [26, 33, 34, 35, 36, 37, 38, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "namespace": { "rules": [26, 29, 30, 31, 32, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "class-body": { "rules": [26, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "class": { "rules": [26, 39, 40, 41, 42, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "acc_descr_multiline": { "rules": [11, 12, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "acc_descr": { "rules": [9, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "acc_title": { "rules": [7, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "callback_args": { "rules": [22, 23, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "callback_name": { "rules": [19, 20, 21, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "href": { "rules": [26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "struct": { "rules": [26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "generic": { "rules": [26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "bqstring": { "rules": [26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "string": { "rules": [24, 25, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 26, 27, 28, 29, 38, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], "inclusive": true } } + }; + return lexer2; + })(); + parser24.lexer = lexer; + function Parser3() { + this.yy = {}; + } + __name(Parser3, "Parser"); + Parser3.prototype = parser24; + parser24.Parser = Parser3; + return new Parser3(); + })(); + parser12.parser = parser12; + classDiagram_default = parser12; + } + }); + + // src/diagrams/class/classTypes.ts + var visibilityValues, ClassMember; + var init_classTypes = __esm({ + "src/diagrams/class/classTypes.ts"() { + "use strict"; + init_diagramAPI(); + init_common(); + visibilityValues = ["#", "+", "~", "-", ""]; + ClassMember = class { + static { + __name(this, "ClassMember"); + } + constructor(input, memberType) { + this.memberType = memberType; + this.visibility = ""; + this.classifier = ""; + this.text = ""; + const sanitizedInput = sanitizeText(input, getConfig2()); + this.parseMember(sanitizedInput); + } + getDisplayDetails() { + let displayText = this.visibility + parseGenericTypes(this.id); + if (this.memberType === "method") { + displayText += `(${parseGenericTypes(this.parameters.trim())})`; + if (this.returnType) { + displayText += " : " + parseGenericTypes(this.returnType); + } + } + displayText = displayText.trim(); + const cssStyle = this.parseClassifier(); + return { + displayText, + cssStyle + }; + } + parseMember(input) { + let potentialClassifier = ""; + if (this.memberType === "method") { + const methodRegEx = /([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/; + const match2 = methodRegEx.exec(input); + if (match2) { + const detectedVisibility = match2[1] ? match2[1].trim() : ""; + if (visibilityValues.includes(detectedVisibility)) { + this.visibility = detectedVisibility; + } + this.id = match2[2]; + this.parameters = match2[3] ? match2[3].trim() : ""; + potentialClassifier = match2[4] ? match2[4].trim() : ""; + this.returnType = match2[5] ? match2[5].trim() : ""; + if (potentialClassifier === "") { + const lastChar = this.returnType.substring(this.returnType.length - 1); + if (/[$*]/.exec(lastChar)) { + potentialClassifier = lastChar; + this.returnType = this.returnType.substring(0, this.returnType.length - 1); + } + } + } + } else { + const length2 = input.length; + const firstChar = input.substring(0, 1); + const lastChar = input.substring(length2 - 1); + if (visibilityValues.includes(firstChar)) { + this.visibility = firstChar; + } + if (/[$*]/.exec(lastChar)) { + potentialClassifier = lastChar; + } + this.id = input.substring( + this.visibility === "" ? 0 : 1, + potentialClassifier === "" ? length2 : length2 - 1 + ); + } + this.classifier = potentialClassifier; + this.id = this.id.startsWith(" ") ? " " + this.id.trim() : this.id.trim(); + const combinedText = `${this.visibility ? "\\" + this.visibility : ""}${parseGenericTypes(this.id)}${this.memberType === "method" ? `(${parseGenericTypes(this.parameters)})${this.returnType ? " : " + parseGenericTypes(this.returnType) : ""}` : ""}`; + this.text = combinedText.replaceAll("<", "<").replaceAll(">", ">"); + if (this.text.startsWith("\\<")) { + this.text = this.text.replace("\\<", "~"); + } + } + parseClassifier() { + switch (this.classifier) { + case "*": + return "font-style:italic;"; + case "$": + return "text-decoration:underline;"; + default: + return ""; + } + } + }; + } + }); + + // src/diagrams/class/classDb.ts + var MERMAID_DOM_ID_PREFIX2, classCounter, sanitizeText4, ClassDB; + var init_classDb = __esm({ + "src/diagrams/class/classDb.ts"() { + "use strict"; + init_src32(); + init_logger(); + init_diagramAPI(); + init_common(); + init_utils2(); + init_commonDb(); + init_classTypes(); + MERMAID_DOM_ID_PREFIX2 = "classId-"; + classCounter = 0; + sanitizeText4 = /* @__PURE__ */ __name((txt) => common_default.sanitizeText(txt, getConfig2()), "sanitizeText"); + ClassDB = class { + constructor() { + this.relations = []; + this.classes = /* @__PURE__ */ new Map(); + this.styleClasses = /* @__PURE__ */ new Map(); + this.notes = []; + this.interfaces = []; + // private static classCounter = 0; + this.namespaces = /* @__PURE__ */ new Map(); + this.namespaceCounter = 0; + this.functions = []; + this.lineType = { + LINE: 0, + DOTTED_LINE: 1 + }; + this.relationType = { + AGGREGATION: 0, + EXTENSION: 1, + COMPOSITION: 2, + DEPENDENCY: 3, + LOLLIPOP: 4 + }; + this.setupToolTips = /* @__PURE__ */ __name((element3) => { + let tooltipElem = select_default2(".mermaidTooltip"); + if ((tooltipElem._groups || tooltipElem)[0][0] === null) { + tooltipElem = select_default2("body").append("div").attr("class", "mermaidTooltip").style("opacity", 0); + } + const svg2 = select_default2(element3).select("svg"); + const nodes5 = svg2.selectAll("g.node"); + nodes5.on("mouseover", (event3) => { + const el = select_default2(event3.currentTarget); + const title2 = el.attr("title"); + if (title2 === null) { + return; + } + const rect3 = this.getBoundingClientRect(); + tooltipElem.transition().duration(200).style("opacity", ".9"); + tooltipElem.text(el.attr("title")).style("left", window.scrollX + rect3.left + (rect3.right - rect3.left) / 2 + "px").style("top", window.scrollY + rect3.top - 14 + document.body.scrollTop + "px"); + tooltipElem.html(tooltipElem.html().replace(/<br\/>/g, "
    ")); + el.classed("hover", true); + }).on("mouseout", (event3) => { + tooltipElem.transition().duration(500).style("opacity", 0); + const el = select_default2(event3.currentTarget); + el.classed("hover", false); + }); + }, "setupToolTips"); + this.direction = "TB"; + this.setAccTitle = setAccTitle; + this.getAccTitle = getAccTitle; + this.setAccDescription = setAccDescription; + this.getAccDescription = getAccDescription; + this.setDiagramTitle = setDiagramTitle; + this.getDiagramTitle = getDiagramTitle; + this.getConfig = /* @__PURE__ */ __name(() => getConfig2().class, "getConfig"); + this.functions.push(this.setupToolTips.bind(this)); + this.clear(); + this.addRelation = this.addRelation.bind(this); + this.addClassesToNamespace = this.addClassesToNamespace.bind(this); + this.addNamespace = this.addNamespace.bind(this); + this.setCssClass = this.setCssClass.bind(this); + this.addMembers = this.addMembers.bind(this); + this.addClass = this.addClass.bind(this); + this.setClassLabel = this.setClassLabel.bind(this); + this.addAnnotation = this.addAnnotation.bind(this); + this.addMember = this.addMember.bind(this); + this.cleanupLabel = this.cleanupLabel.bind(this); + this.addNote = this.addNote.bind(this); + this.defineClass = this.defineClass.bind(this); + this.setDirection = this.setDirection.bind(this); + this.setLink = this.setLink.bind(this); + this.bindFunctions = this.bindFunctions.bind(this); + this.clear = this.clear.bind(this); + this.setTooltip = this.setTooltip.bind(this); + this.setClickEvent = this.setClickEvent.bind(this); + this.setCssStyle = this.setCssStyle.bind(this); + } + static { + __name(this, "ClassDB"); + } + splitClassNameAndType(_id) { + const id30 = common_default.sanitizeText(_id, getConfig2()); + let genericType = ""; + let className = id30; + if (id30.indexOf("~") > 0) { + const split = id30.split("~"); + className = sanitizeText4(split[0]); + genericType = sanitizeText4(split[1]); + } + return { className, type: genericType }; + } + setClassLabel(_id, label) { + const id30 = common_default.sanitizeText(_id, getConfig2()); + if (label) { + label = sanitizeText4(label); + } + const { className } = this.splitClassNameAndType(id30); + this.classes.get(className).label = label; + this.classes.get(className).text = `${label}${this.classes.get(className).type ? `<${this.classes.get(className).type}>` : ""}`; + } + /** + * Function called by parser when a node definition has been found. + * + * @param id - ID of the class to add + * @public + */ + addClass(_id) { + const id30 = common_default.sanitizeText(_id, getConfig2()); + const { className, type: type3 } = this.splitClassNameAndType(id30); + if (this.classes.has(className)) { + return; + } + const name = common_default.sanitizeText(className, getConfig2()); + this.classes.set(name, { + id: name, + type: type3, + label: name, + text: `${name}${type3 ? `<${type3}>` : ""}`, + shape: "classBox", + cssClasses: "default", + methods: [], + members: [], + annotations: [], + styles: [], + domId: MERMAID_DOM_ID_PREFIX2 + name + "-" + classCounter + }); + classCounter++; + } + addInterface(label, classId) { + const classInterface = { + id: `interface${this.interfaces.length}`, + label, + classId + }; + this.interfaces.push(classInterface); + } + /** + * Function to lookup domId from id in the graph definition. + * + * @param id - class ID to lookup + * @public + */ + lookUpDomId(_id) { + const id30 = common_default.sanitizeText(_id, getConfig2()); + if (this.classes.has(id30)) { + return this.classes.get(id30).domId; + } + throw new Error("Class not found: " + id30); + } + clear() { + this.relations = []; + this.classes = /* @__PURE__ */ new Map(); + this.notes = []; + this.interfaces = []; + this.functions = []; + this.functions.push(this.setupToolTips.bind(this)); + this.namespaces = /* @__PURE__ */ new Map(); + this.namespaceCounter = 0; + this.direction = "TB"; + clear(); + } + getClass(id30) { + return this.classes.get(id30); + } + getClasses() { + return this.classes; + } + getRelations() { + return this.relations; + } + getNotes() { + return this.notes; + } + addRelation(classRelation) { + log.debug("Adding relation: " + JSON.stringify(classRelation)); + const invalidTypes = [ + this.relationType.LOLLIPOP, + this.relationType.AGGREGATION, + this.relationType.COMPOSITION, + this.relationType.DEPENDENCY, + this.relationType.EXTENSION + ]; + if (classRelation.relation.type1 === this.relationType.LOLLIPOP && !invalidTypes.includes(classRelation.relation.type2)) { + this.addClass(classRelation.id2); + this.addInterface(classRelation.id1, classRelation.id2); + classRelation.id1 = `interface${this.interfaces.length - 1}`; + } else if (classRelation.relation.type2 === this.relationType.LOLLIPOP && !invalidTypes.includes(classRelation.relation.type1)) { + this.addClass(classRelation.id1); + this.addInterface(classRelation.id2, classRelation.id1); + classRelation.id2 = `interface${this.interfaces.length - 1}`; + } else { + this.addClass(classRelation.id1); + this.addClass(classRelation.id2); + } + classRelation.id1 = this.splitClassNameAndType(classRelation.id1).className; + classRelation.id2 = this.splitClassNameAndType(classRelation.id2).className; + classRelation.relationTitle1 = common_default.sanitizeText( + classRelation.relationTitle1.trim(), + getConfig2() + ); + classRelation.relationTitle2 = common_default.sanitizeText( + classRelation.relationTitle2.trim(), + getConfig2() + ); + this.relations.push(classRelation); + } + /** + * Adds an annotation to the specified class Annotations mark special properties of the given type + * (like 'interface' or 'service') + * + * @param className - The class name + * @param annotation - The name of the annotation without any brackets + * @public + */ + addAnnotation(className, annotation) { + const validatedClassName = this.splitClassNameAndType(className).className; + this.classes.get(validatedClassName).annotations.push(annotation); + } + /** + * Adds a member to the specified class + * + * @param className - The class name + * @param member - The full name of the member. If the member is enclosed in `<>` it is + * treated as an annotation If the member is ending with a closing bracket ) it is treated as a + * method Otherwise the member will be treated as a normal property + * @public + */ + addMember(className, member) { + this.addClass(className); + const validatedClassName = this.splitClassNameAndType(className).className; + const theClass = this.classes.get(validatedClassName); + if (typeof member === "string") { + const memberString = member.trim(); + if (memberString.startsWith("<<") && memberString.endsWith(">>")) { + theClass.annotations.push(sanitizeText4(memberString.substring(2, memberString.length - 2))); + } else if (memberString.indexOf(")") > 0) { + theClass.methods.push(new ClassMember(memberString, "method")); + } else if (memberString) { + theClass.members.push(new ClassMember(memberString, "attribute")); + } + } + } + addMembers(className, members) { + if (Array.isArray(members)) { + members.reverse(); + members.forEach((member) => this.addMember(className, member)); + } + } + addNote(text4, className) { + const note3 = { + id: `note${this.notes.length}`, + class: className, + text: text4 + }; + this.notes.push(note3); + } + cleanupLabel(label) { + if (label.startsWith(":")) { + label = label.substring(1); + } + return sanitizeText4(label.trim()); + } + /** + * Called by parser when assigning cssClass to a class + * + * @param ids - Comma separated list of ids + * @param className - Class to add + */ + setCssClass(ids, className) { + ids.split(",").forEach((_id) => { + let id30 = _id; + if (/\d/.exec(_id[0])) { + id30 = MERMAID_DOM_ID_PREFIX2 + id30; + } + const classNode = this.classes.get(id30); + if (classNode) { + classNode.cssClasses += " " + className; + } + }); + } + defineClass(ids, style3) { + for (const id30 of ids) { + let styleClass = this.styleClasses.get(id30); + if (styleClass === void 0) { + styleClass = { id: id30, styles: [], textStyles: [] }; + this.styleClasses.set(id30, styleClass); + } + if (style3) { + style3.forEach((s2) => { + if (/color/.exec(s2)) { + const newStyle = s2.replace("fill", "bgFill"); + styleClass.textStyles.push(newStyle); + } + styleClass.styles.push(s2); + }); + } + this.classes.forEach((value2) => { + if (value2.cssClasses.includes(id30)) { + value2.styles.push(...style3.flatMap((s2) => s2.split(","))); + } + }); + } + } + /** + * Called by parser when a tooltip is found, e.g. a clickable element. + * + * @param ids - Comma separated list of ids + * @param tooltip - Tooltip to add + */ + setTooltip(ids, tooltip) { + ids.split(",").forEach((id30) => { + if (tooltip !== void 0) { + this.classes.get(id30).tooltip = sanitizeText4(tooltip); + } + }); + } + getTooltip(id30, namespace) { + if (namespace && this.namespaces.has(namespace)) { + return this.namespaces.get(namespace).classes.get(id30).tooltip; + } + return this.classes.get(id30).tooltip; + } + /** + * Called by parser when a link is found. Adds the URL to the vertex data. + * + * @param ids - Comma separated list of ids + * @param linkStr - URL to create a link for + * @param target - Target of the link, _blank by default as originally defined in the svgDraw.js file + */ + setLink(ids, linkStr, target) { + const config5 = getConfig2(); + ids.split(",").forEach((_id) => { + let id30 = _id; + if (/\d/.exec(_id[0])) { + id30 = MERMAID_DOM_ID_PREFIX2 + id30; + } + const theClass = this.classes.get(id30); + if (theClass) { + theClass.link = utils_default2.formatUrl(linkStr, config5); + if (config5.securityLevel === "sandbox") { + theClass.linkTarget = "_top"; + } else if (typeof target === "string") { + theClass.linkTarget = sanitizeText4(target); + } else { + theClass.linkTarget = "_blank"; } - __name(Transform2, "Transform"); - Transform2.prototype.getWorldOrgX = function() { - return this.lworldOrgX; - }; - Transform2.prototype.setWorldOrgX = function(wox) { - this.lworldOrgX = wox; - }; - Transform2.prototype.getWorldOrgY = function() { - return this.lworldOrgY; - }; - Transform2.prototype.setWorldOrgY = function(woy) { - this.lworldOrgY = woy; - }; - Transform2.prototype.getWorldExtX = function() { - return this.lworldExtX; - }; - Transform2.prototype.setWorldExtX = function(wex) { - this.lworldExtX = wex; - }; - Transform2.prototype.getWorldExtY = function() { - return this.lworldExtY; - }; - Transform2.prototype.setWorldExtY = function(wey) { - this.lworldExtY = wey; - }; - Transform2.prototype.getDeviceOrgX = function() { - return this.ldeviceOrgX; - }; - Transform2.prototype.setDeviceOrgX = function(dox) { - this.ldeviceOrgX = dox; - }; - Transform2.prototype.getDeviceOrgY = function() { - return this.ldeviceOrgY; - }; - Transform2.prototype.setDeviceOrgY = function(doy) { - this.ldeviceOrgY = doy; - }; - Transform2.prototype.getDeviceExtX = function() { - return this.ldeviceExtX; - }; - Transform2.prototype.setDeviceExtX = function(dex) { - this.ldeviceExtX = dex; - }; - Transform2.prototype.getDeviceExtY = function() { - return this.ldeviceExtY; - }; - Transform2.prototype.setDeviceExtY = function(dey) { - this.ldeviceExtY = dey; - }; - Transform2.prototype.transformX = function(x5) { - var xDevice = 0; - var worldExtX = this.lworldExtX; - if (worldExtX != 0) { - xDevice = this.ldeviceOrgX + (x5 - this.lworldOrgX) * this.ldeviceExtX / worldExtX; - } - return xDevice; - }; - Transform2.prototype.transformY = function(y5) { - var yDevice = 0; - var worldExtY = this.lworldExtY; - if (worldExtY != 0) { - yDevice = this.ldeviceOrgY + (y5 - this.lworldOrgY) * this.ldeviceExtY / worldExtY; - } - return yDevice; - }; - Transform2.prototype.inverseTransformX = function(x5) { - var xWorld = 0; - var deviceExtX = this.ldeviceExtX; - if (deviceExtX != 0) { - xWorld = this.lworldOrgX + (x5 - this.ldeviceOrgX) * this.lworldExtX / deviceExtX; - } - return xWorld; - }; - Transform2.prototype.inverseTransformY = function(y5) { - var yWorld = 0; - var deviceExtY = this.ldeviceExtY; - if (deviceExtY != 0) { - yWorld = this.lworldOrgY + (y5 - this.ldeviceOrgY) * this.lworldExtY / deviceExtY; - } - return yWorld; - }; - Transform2.prototype.inverseTransformPoint = function(inPoint) { - var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y)); - return outPoint; - }; - module3.exports = Transform2; - }, - /* 18 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function _toConsumableArray2(arr) { - if (Array.isArray(arr)) { - for (var i2 = 0, arr2 = Array(arr.length); i2 < arr.length; i2++) { - arr2[i2] = arr[i2]; - } - return arr2; - } else { - return Array.from(arr); + } + }); + this.setCssClass(ids, "clickable"); + } + /** + * Called by parser when a click definition is found. Registers an event handler. + * + * @param ids - Comma separated list of ids + * @param functionName - Function to be called on click + * @param functionArgs - Function args the function should be called with + */ + setClickEvent(ids, functionName, functionArgs) { + ids.split(",").forEach((id30) => { + this.setClickFunc(id30, functionName, functionArgs); + this.classes.get(id30).haveCallback = true; + }); + this.setCssClass(ids, "clickable"); + } + setClickFunc(_domId, functionName, functionArgs) { + const domId = common_default.sanitizeText(_domId, getConfig2()); + const config5 = getConfig2(); + if (config5.securityLevel !== "loose") { + return; + } + if (functionName === void 0) { + return; + } + const id30 = domId; + if (this.classes.has(id30)) { + const elemId = this.lookUpDomId(id30); + let argList = []; + if (typeof functionArgs === "string") { + argList = functionArgs.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/); + for (let i2 = 0; i2 < argList.length; i2++) { + let item = argList[i2].trim(); + if (item.startsWith('"') && item.endsWith('"')) { + item = item.substr(1, item.length - 2); } + argList[i2] = item; } - __name(_toConsumableArray2, "_toConsumableArray"); - var Layout2 = __webpack_require__(15); - var FDLayoutConstants = __webpack_require__(7); - var LayoutConstants = __webpack_require__(0); - var IGeometry = __webpack_require__(8); - var IMath = __webpack_require__(9); - function FDLayout() { - Layout2.call(this); - this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION; - this.idealEdgeLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH; - this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH; - this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH; - this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH; - this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH; - this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR; - this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR; - this.displacementThresholdPerNode = 3 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100; - this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; - this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; - this.totalDisplacement = 0; - this.oldTotalDisplacement = 0; - this.maxIterations = FDLayoutConstants.MAX_ITERATIONS; - } - __name(FDLayout, "FDLayout"); - FDLayout.prototype = Object.create(Layout2.prototype); - for (var prop in Layout2) { - FDLayout[prop] = Layout2[prop]; + } + if (argList.length === 0) { + argList.push(elemId); + } + this.functions.push(() => { + const elem = document.querySelector(`[id="${elemId}"]`); + if (elem !== null) { + elem.addEventListener( + "click", + () => { + utils_default2.runFunc(functionName, ...argList); + }, + false + ); } - FDLayout.prototype.initParameters = function() { - Layout2.prototype.initParameters.call(this, arguments); - this.totalIterations = 0; - this.notAnimatedIterations = 0; - this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION; - this.grid = []; - }; - FDLayout.prototype.calcIdealEdgeLengths = function() { - var edge; - var lcaDepth; - var source; - var target; - var sizeOfSourceInLca; - var sizeOfTargetInLca; - var allEdges = this.getGraphManager().getAllEdges(); - for (var i2 = 0; i2 < allEdges.length; i2++) { - edge = allEdges[i2]; - edge.idealLength = this.idealEdgeLength; - if (edge.isInterGraph) { - source = edge.getSource(); - target = edge.getTarget(); - sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize(); - sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize(); - if (this.useSmartIdealEdgeLengthCalculation) { - edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE; - } - lcaDepth = edge.getLca().getInclusionTreeDepth(); - edge.idealLength += FDLayoutConstants.DEFAULT_EDGE_LENGTH * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth); - } - } - }; - FDLayout.prototype.initSpringEmbedder = function() { - var s2 = this.getAllNodes().length; - if (this.incremental) { - if (s2 > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) { - this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s2 - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR)); - } - this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL; - } else { - if (s2 > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) { - this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1 - (s2 - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR)); - } else { - this.coolingFactor = 1; - } - this.initialCoolingFactor = this.coolingFactor; - this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT; - } - this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations); - this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length; - this.repulsionRange = this.calcRepulsionRange(); + }); + } + } + bindFunctions(element3) { + this.functions.forEach((fun) => { + fun(element3); + }); + } + getDirection() { + return this.direction; + } + setDirection(dir2) { + this.direction = dir2; + } + /** + * Function called by parser when a namespace definition has been found. + * + * @param id - ID of the namespace to add + * @public + */ + addNamespace(id30) { + if (this.namespaces.has(id30)) { + return; + } + this.namespaces.set(id30, { + id: id30, + classes: /* @__PURE__ */ new Map(), + children: {}, + domId: MERMAID_DOM_ID_PREFIX2 + id30 + "-" + this.namespaceCounter + }); + this.namespaceCounter++; + } + getNamespace(name) { + return this.namespaces.get(name); + } + getNamespaces() { + return this.namespaces; + } + /** + * Function called by parser when a namespace definition has been found. + * + * @param id - ID of the namespace to add + * @param classNames - IDs of the class to add + * @public + */ + addClassesToNamespace(id30, classNames) { + if (!this.namespaces.has(id30)) { + return; + } + for (const name of classNames) { + const { className } = this.splitClassNameAndType(name); + this.classes.get(className).parent = id30; + this.namespaces.get(id30).classes.set(className, this.classes.get(className)); + } + } + setCssStyle(id30, styles4) { + const thisClass = this.classes.get(id30); + if (!styles4 || !thisClass) { + return; + } + for (const s2 of styles4) { + if (s2.includes(",")) { + thisClass.styles.push(...s2.split(",")); + } else { + thisClass.styles.push(s2); + } + } + } + /** + * Gets the arrow marker for a type index + * + * @param type - The type to look for + * @returns The arrow marker + */ + getArrowMarker(type3) { + let marker; + switch (type3) { + case 0: + marker = "aggregation"; + break; + case 1: + marker = "extension"; + break; + case 2: + marker = "composition"; + break; + case 3: + marker = "dependency"; + break; + case 4: + marker = "lollipop"; + break; + default: + marker = "none"; + } + return marker; + } + getData() { + const nodes5 = []; + const edges3 = []; + const config5 = getConfig2(); + for (const namespaceKey of this.namespaces.keys()) { + const namespace = this.namespaces.get(namespaceKey); + if (namespace) { + const node2 = { + id: namespace.id, + label: namespace.id, + isGroup: true, + padding: config5.class.padding ?? 16, + // parent node must be one of [rect, roundedWithTitle, noteGroup, divider] + shape: "rect", + cssStyles: ["fill: none", "stroke: black"], + look: config5.look }; - FDLayout.prototype.calcSpringForces = function() { - var lEdges = this.getAllEdges(); - var edge; - for (var i2 = 0; i2 < lEdges.length; i2++) { - edge = lEdges[i2]; - this.calcSpringForce(edge, edge.idealLength); - } + nodes5.push(node2); + } + } + for (const classKey of this.classes.keys()) { + const classNode = this.classes.get(classKey); + if (classNode) { + const node2 = classNode; + node2.parentId = classNode.parent; + node2.look = config5.look; + nodes5.push(node2); + } + } + let cnt4 = 0; + for (const note3 of this.notes) { + cnt4++; + const noteNode = { + id: note3.id, + label: note3.text, + isGroup: false, + shape: "note", + padding: config5.class.padding ?? 6, + cssStyles: [ + "text-align: left", + "white-space: nowrap", + `fill: ${config5.themeVariables.noteBkgColor}`, + `stroke: ${config5.themeVariables.noteBorderColor}` + ], + look: config5.look + }; + nodes5.push(noteNode); + const noteClassId = this.classes.get(note3.class)?.id ?? ""; + if (noteClassId) { + const edge = { + id: `edgeNote${cnt4}`, + start: note3.id, + end: noteClassId, + type: "normal", + thickness: "normal", + classes: "relation", + arrowTypeStart: "none", + arrowTypeEnd: "none", + arrowheadStyle: "", + labelStyle: [""], + style: ["fill: none"], + pattern: "dotted", + look: config5.look }; - FDLayout.prototype.calcRepulsionForces = function() { - var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; - var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - var i2, j2; - var nodeA, nodeB; - var lNodes = this.getAllNodes(); - var processedNodeSet; - if (this.useFRGridVariant) { - if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) { - this.updateGrid(); - } - processedNodeSet = /* @__PURE__ */ new Set(); - for (i2 = 0; i2 < lNodes.length; i2++) { - nodeA = lNodes[i2]; - this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate); - processedNodeSet.add(nodeA); - } - } else { - for (i2 = 0; i2 < lNodes.length; i2++) { - nodeA = lNodes[i2]; - for (j2 = i2 + 1; j2 < lNodes.length; j2++) { - nodeB = lNodes[j2]; - if (nodeA.getOwner() != nodeB.getOwner()) { - continue; - } - this.calcRepulsionForce(nodeA, nodeB); - } - } + edges3.push(edge); + } + } + for (const _interface of this.interfaces) { + const interfaceNode = { + id: _interface.id, + label: _interface.label, + isGroup: false, + shape: "rect", + cssStyles: ["opacity: 0;"], + look: config5.look + }; + nodes5.push(interfaceNode); + } + cnt4 = 0; + for (const classRelation of this.relations) { + cnt4++; + const edge = { + id: getEdgeId(classRelation.id1, classRelation.id2, { + prefix: "id", + counter: cnt4 + }), + start: classRelation.id1, + end: classRelation.id2, + type: "normal", + label: classRelation.title, + labelpos: "c", + thickness: "normal", + classes: "relation", + arrowTypeStart: this.getArrowMarker(classRelation.relation.type1), + arrowTypeEnd: this.getArrowMarker(classRelation.relation.type2), + startLabelRight: classRelation.relationTitle1 === "none" ? "" : classRelation.relationTitle1, + endLabelLeft: classRelation.relationTitle2 === "none" ? "" : classRelation.relationTitle2, + arrowheadStyle: "", + labelStyle: ["display: inline-block"], + style: classRelation.style || "", + pattern: classRelation.relation.lineType == 1 ? "dashed" : "solid", + look: config5.look + }; + edges3.push(edge); + } + return { nodes: nodes5, edges: edges3, other: {}, config: config5, direction: this.getDirection() }; + } + }; + } + }); + + // src/diagrams/class/styles.js + var getStyles10, styles_default9; + var init_styles9 = __esm({ + "src/diagrams/class/styles.js"() { + "use strict"; + init_globalStyles(); + getStyles10 = /* @__PURE__ */ __name((options2) => `g.classGroup text { + fill: ${options2.nodeBorder || options2.classText}; + stroke: none; + font-family: ${options2.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + +.nodeLabel, .edgeLabel { + color: ${options2.classText}; +} +.edgeLabel .label rect { + fill: ${options2.mainBkg}; +} +.label text { + fill: ${options2.classText}; +} + +.labelBkg { + background: ${options2.mainBkg}; +} +.edgeLabel .label span { + background: ${options2.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${options2.mainBkg}; + stroke: ${options2.nodeBorder}; + stroke-width: 1px; + } + + +.divider { + stroke: ${options2.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${options2.mainBkg}; + stroke: ${options2.nodeBorder}; +} + +g.classGroup line { + stroke: ${options2.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${options2.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${options2.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${options2.lineColor}; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +#compositionStart, .composition { + fill: ${options2.lineColor} !important; + stroke: ${options2.lineColor} !important; + stroke-width: 1; +} + +#compositionEnd, .composition { + fill: ${options2.lineColor} !important; + stroke: ${options2.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${options2.lineColor} !important; + stroke: ${options2.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${options2.lineColor} !important; + stroke: ${options2.lineColor} !important; + stroke-width: 1; +} + +#extensionStart, .extension { + fill: transparent !important; + stroke: ${options2.lineColor} !important; + stroke-width: 1; +} + +#extensionEnd, .extension { + fill: transparent !important; + stroke: ${options2.lineColor} !important; + stroke-width: 1; +} + +#aggregationStart, .aggregation { + fill: transparent !important; + stroke: ${options2.lineColor} !important; + stroke-width: 1; +} + +#aggregationEnd, .aggregation { + fill: transparent !important; + stroke: ${options2.lineColor} !important; + stroke-width: 1; +} + +#lollipopStart, .lollipop { + fill: ${options2.mainBkg} !important; + stroke: ${options2.lineColor} !important; + stroke-width: 1; +} + +#lollipopEnd, .lollipop { + fill: ${options2.mainBkg} !important; + stroke: ${options2.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; + line-height: initial; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${options2.textColor}; +} + ${getIconStyles()} +`, "getStyles"); + styles_default9 = getStyles10; + } + }); + + // src/diagrams/class/classRenderer-v3-unified.ts + var getDir, getClasses2, draw12, classRenderer_v3_unified_default; + var init_classRenderer_v3_unified = __esm({ + "src/diagrams/class/classRenderer-v3-unified.ts"() { + "use strict"; + init_diagramAPI(); + init_logger(); + init_insertElementsForSize(); + init_render2(); + init_setupViewPortForSVG(); + init_utils2(); + getDir = /* @__PURE__ */ __name((parsedItem, defaultDir = "TB") => { + if (!parsedItem.doc) { + return defaultDir; + } + let dir2 = defaultDir; + for (const parsedItemDoc of parsedItem.doc) { + if (parsedItemDoc.stmt === "dir") { + dir2 = parsedItemDoc.value; + } + } + return dir2; + }, "getDir"); + getClasses2 = /* @__PURE__ */ __name(function(text4, diagramObj) { + return diagramObj.db.getClasses(); + }, "getClasses"); + draw12 = /* @__PURE__ */ __name(async function(text4, id30, _version, diag) { + log.info("REF0:"); + log.info("Drawing class diagram (v3)", id30); + const { securityLevel, state: conf5, layout: layout6 } = getConfig2(); + const data4Layout = diag.db.getData(); + const svg2 = getDiagramElement(id30, securityLevel); + data4Layout.type = diag.type; + data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout6); + data4Layout.nodeSpacing = conf5?.nodeSpacing || 50; + data4Layout.rankSpacing = conf5?.rankSpacing || 50; + data4Layout.markers = ["aggregation", "extension", "composition", "dependency", "lollipop"]; + data4Layout.diagramId = id30; + await render6(data4Layout, svg2); + const padding2 = 8; + utils_default2.insertTitle( + svg2, + "classDiagramTitleText", + conf5?.titleTopMargin ?? 25, + diag.db.getDiagramTitle() + ); + setupViewPortForSVG(svg2, padding2, "classDiagram", conf5?.useMaxWidth ?? true); + }, "draw"); + classRenderer_v3_unified_default = { + getClasses: getClasses2, + draw: draw12, + getDir + }; + } + }); + + // src/diagrams/class/classDiagram.ts + var classDiagram_exports = {}; + __export(classDiagram_exports, { + diagram: () => diagram12 + }); + var diagram12; + var init_classDiagram2 = __esm({ + "src/diagrams/class/classDiagram.ts"() { + "use strict"; + init_classDiagram(); + init_classDb(); + init_styles9(); + init_classRenderer_v3_unified(); + diagram12 = { + parser: classDiagram_default, + get db() { + return new ClassDB(); + }, + renderer: classRenderer_v3_unified_default, + styles: styles_default9, + init: /* @__PURE__ */ __name((cnf) => { + if (!cnf.class) { + cnf.class = {}; + } + cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute; + }, "init") + }; + } + }); + + // src/diagrams/class/classDiagram-v2.ts + var classDiagram_v2_exports = {}; + __export(classDiagram_v2_exports, { + diagram: () => diagram13 + }); + var diagram13; + var init_classDiagram_v2 = __esm({ + "src/diagrams/class/classDiagram-v2.ts"() { + "use strict"; + init_classDiagram(); + init_classDb(); + init_styles9(); + init_classRenderer_v3_unified(); + diagram13 = { + parser: classDiagram_default, + get db() { + return new ClassDB(); + }, + renderer: classRenderer_v3_unified_default, + styles: styles_default9, + init: /* @__PURE__ */ __name((cnf) => { + if (!cnf.class) { + cnf.class = {}; + } + cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute; + }, "init") + }; + } + }); + + // src/diagrams/state/parser/stateDiagram.jison + var parser13, stateDiagram_default; + var init_stateDiagram = __esm({ + "src/diagrams/state/parser/stateDiagram.jison"() { + "use strict"; + parser13 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; + return o3; + }, "o"), $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 4], $V3 = [2, 4], $V4 = [1, 9], $V5 = [1, 11], $V6 = [1, 16], $V7 = [1, 17], $V8 = [1, 18], $V9 = [1, 19], $Va = [1, 33], $Vb = [1, 20], $Vc = [1, 21], $Vd = [1, 22], $Ve = [1, 23], $Vf = [1, 24], $Vg = [1, 26], $Vh = [1, 27], $Vi = [1, 28], $Vj = [1, 29], $Vk = [1, 30], $Vl = [1, 31], $Vm = [1, 32], $Vn = [1, 35], $Vo = [1, 36], $Vp = [1, 37], $Vq = [1, 38], $Vr = [1, 34], $Vs = [1, 4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 41, 45, 48, 51, 52, 53, 54, 57], $Vt = [1, 4, 5, 14, 15, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 39, 40, 41, 45, 48, 51, 52, 53, 54, 57], $Vu = [4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 41, 45, 48, 51, 52, 53, 54, 57]; + var parser24 = { + trace: /* @__PURE__ */ __name(function trace() { + }, "trace"), + yy: {}, + symbols_: { "error": 2, "start": 3, "SPACE": 4, "NL": 5, "SD": 6, "document": 7, "line": 8, "statement": 9, "classDefStatement": 10, "styleStatement": 11, "cssClassStatement": 12, "idStatement": 13, "DESCR": 14, "-->": 15, "HIDE_EMPTY": 16, "scale": 17, "WIDTH": 18, "COMPOSIT_STATE": 19, "STRUCT_START": 20, "STRUCT_STOP": 21, "STATE_DESCR": 22, "AS": 23, "ID": 24, "FORK": 25, "JOIN": 26, "CHOICE": 27, "CONCURRENT": 28, "note": 29, "notePosition": 30, "NOTE_TEXT": 31, "direction": 32, "acc_title": 33, "acc_title_value": 34, "acc_descr": 35, "acc_descr_value": 36, "acc_descr_multiline_value": 37, "CLICK": 38, "STRING": 39, "HREF": 40, "classDef": 41, "CLASSDEF_ID": 42, "CLASSDEF_STYLEOPTS": 43, "DEFAULT": 44, "style": 45, "STYLE_IDS": 46, "STYLEDEF_STYLEOPTS": 47, "class": 48, "CLASSENTITY_IDS": 49, "STYLECLASS": 50, "direction_tb": 51, "direction_bt": 52, "direction_rl": 53, "direction_lr": 54, "eol": 55, ";": 56, "EDGE_STATE": 57, "STYLE_SEPARATOR": 58, "left_of": 59, "right_of": 60, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 4: "SPACE", 5: "NL", 6: "SD", 14: "DESCR", 15: "-->", 16: "HIDE_EMPTY", 17: "scale", 18: "WIDTH", 19: "COMPOSIT_STATE", 20: "STRUCT_START", 21: "STRUCT_STOP", 22: "STATE_DESCR", 23: "AS", 24: "ID", 25: "FORK", 26: "JOIN", 27: "CHOICE", 28: "CONCURRENT", 29: "note", 31: "NOTE_TEXT", 33: "acc_title", 34: "acc_title_value", 35: "acc_descr", 36: "acc_descr_value", 37: "acc_descr_multiline_value", 38: "CLICK", 39: "STRING", 40: "HREF", 41: "classDef", 42: "CLASSDEF_ID", 43: "CLASSDEF_STYLEOPTS", 44: "DEFAULT", 45: "style", 46: "STYLE_IDS", 47: "STYLEDEF_STYLEOPTS", 48: "class", 49: "CLASSENTITY_IDS", 50: "STYLECLASS", 51: "direction_tb", 52: "direction_bt", 53: "direction_rl", 54: "direction_lr", 56: ";", 57: "EDGE_STATE", 58: "STYLE_SEPARATOR", 59: "left_of", 60: "right_of" }, + productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 3], [9, 4], [9, 1], [9, 2], [9, 1], [9, 4], [9, 3], [9, 6], [9, 1], [9, 1], [9, 1], [9, 1], [9, 4], [9, 4], [9, 1], [9, 2], [9, 2], [9, 1], [9, 5], [9, 5], [10, 3], [10, 3], [11, 3], [12, 3], [32, 1], [32, 1], [32, 1], [32, 1], [55, 1], [55, 1], [13, 1], [13, 1], [13, 3], [13, 3], [30, 1], [30, 1]], + performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 3: + yy.setRootDoc($$[$0]); + return $$[$0]; + break; + case 4: + this.$ = []; + break; + case 5: + if ($$[$0] != "nl") { + $$[$0 - 1].push($$[$0]); + this.$ = $$[$0 - 1]; } - }; - FDLayout.prototype.calcGravitationalForces = function() { - var node2; - var lNodes = this.getAllNodesToApplyGravitation(); - for (var i2 = 0; i2 < lNodes.length; i2++) { - node2 = lNodes[i2]; - this.calcGravitationalForce(node2); + break; + case 6: + case 7: + this.$ = $$[$0]; + break; + case 8: + this.$ = "nl"; + break; + case 12: + this.$ = $$[$0]; + break; + case 13: + const stateStmt = $$[$0 - 1]; + stateStmt.description = yy.trimColon($$[$0]); + this.$ = stateStmt; + break; + case 14: + this.$ = { stmt: "relation", state1: $$[$0 - 2], state2: $$[$0] }; + break; + case 15: + const relDescription = yy.trimColon($$[$0]); + this.$ = { stmt: "relation", state1: $$[$0 - 3], state2: $$[$0 - 1], description: relDescription }; + break; + case 19: + this.$ = { stmt: "state", id: $$[$0 - 3], type: "default", description: "", doc: $$[$0 - 1] }; + break; + case 20: + var id30 = $$[$0]; + var description = $$[$0 - 2].trim(); + if ($$[$0].match(":")) { + var parts = $$[$0].split(":"); + id30 = parts[0]; + description = [description, parts[1]]; } - }; - FDLayout.prototype.moveNodes = function() { - var lNodes = this.getAllNodes(); - var node2; - for (var i2 = 0; i2 < lNodes.length; i2++) { - node2 = lNodes[i2]; - node2.move(); + this.$ = { stmt: "state", id: id30, type: "default", description }; + break; + case 21: + this.$ = { stmt: "state", id: $$[$0 - 3], type: "default", description: $$[$0 - 5], doc: $$[$0 - 1] }; + break; + case 22: + this.$ = { stmt: "state", id: $$[$0], type: "fork" }; + break; + case 23: + this.$ = { stmt: "state", id: $$[$0], type: "join" }; + break; + case 24: + this.$ = { stmt: "state", id: $$[$0], type: "choice" }; + break; + case 25: + this.$ = { stmt: "state", id: yy.getDividerId(), type: "divider" }; + break; + case 26: + this.$ = { stmt: "state", id: $$[$0 - 1].trim(), note: { position: $$[$0 - 2].trim(), text: $$[$0].trim() } }; + break; + case 29: + this.$ = $$[$0].trim(); + yy.setAccTitle(this.$); + break; + case 30: + case 31: + this.$ = $$[$0].trim(); + yy.setAccDescription(this.$); + break; + case 32: + this.$ = { + stmt: "click", + id: $$[$0 - 3], + url: $$[$0 - 2], + tooltip: $$[$0 - 1] + }; + break; + case 33: + this.$ = { + stmt: "click", + id: $$[$0 - 3], + url: $$[$0 - 1], + tooltip: "" + }; + break; + case 34: + case 35: + this.$ = { stmt: "classDef", id: $$[$0 - 1].trim(), classes: $$[$0].trim() }; + break; + case 36: + this.$ = { stmt: "style", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() }; + break; + case 37: + this.$ = { stmt: "applyClass", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() }; + break; + case 38: + yy.setDirection("TB"); + this.$ = { stmt: "dir", value: "TB" }; + break; + case 39: + yy.setDirection("BT"); + this.$ = { stmt: "dir", value: "BT" }; + break; + case 40: + yy.setDirection("RL"); + this.$ = { stmt: "dir", value: "RL" }; + break; + case 41: + yy.setDirection("LR"); + this.$ = { stmt: "dir", value: "LR" }; + break; + case 44: + case 45: + this.$ = { stmt: "state", id: $$[$0].trim(), type: "default", description: "" }; + break; + case 46: + this.$ = { stmt: "state", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: "default", description: "" }; + break; + case 47: + this.$ = { stmt: "state", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: "default", description: "" }; + break; + } + }, "anonymous"), + table: [{ 3: 1, 4: $V0, 5: $V1, 6: $V2 }, { 1: [3] }, { 3: 5, 4: $V0, 5: $V1, 6: $V2 }, { 3: 6, 4: $V0, 5: $V1, 6: $V2 }, o2([1, 4, 5, 16, 17, 19, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 41, 45, 48, 51, 52, 53, 54, 57], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 41: $Vk, 45: $Vl, 48: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 57: $Vr }, o2($Vs, [2, 5]), { 9: 39, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 41: $Vk, 45: $Vl, 48: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 57: $Vr }, o2($Vs, [2, 7]), o2($Vs, [2, 8]), o2($Vs, [2, 9]), o2($Vs, [2, 10]), o2($Vs, [2, 11]), o2($Vs, [2, 12], { 14: [1, 40], 15: [1, 41] }), o2($Vs, [2, 16]), { 18: [1, 42] }, o2($Vs, [2, 18], { 20: [1, 43] }), { 23: [1, 44] }, o2($Vs, [2, 22]), o2($Vs, [2, 23]), o2($Vs, [2, 24]), o2($Vs, [2, 25]), { 30: 45, 31: [1, 46], 59: [1, 47], 60: [1, 48] }, o2($Vs, [2, 28]), { 34: [1, 49] }, { 36: [1, 50] }, o2($Vs, [2, 31]), { 13: 51, 24: $Va, 57: $Vr }, { 42: [1, 52], 44: [1, 53] }, { 46: [1, 54] }, { 49: [1, 55] }, o2($Vt, [2, 44], { 58: [1, 56] }), o2($Vt, [2, 45], { 58: [1, 57] }), o2($Vs, [2, 38]), o2($Vs, [2, 39]), o2($Vs, [2, 40]), o2($Vs, [2, 41]), o2($Vs, [2, 6]), o2($Vs, [2, 13]), { 13: 58, 24: $Va, 57: $Vr }, o2($Vs, [2, 17]), o2($Vu, $V3, { 7: 59 }), { 24: [1, 60] }, { 24: [1, 61] }, { 23: [1, 62] }, { 24: [2, 48] }, { 24: [2, 49] }, o2($Vs, [2, 29]), o2($Vs, [2, 30]), { 39: [1, 63], 40: [1, 64] }, { 43: [1, 65] }, { 43: [1, 66] }, { 47: [1, 67] }, { 50: [1, 68] }, { 24: [1, 69] }, { 24: [1, 70] }, o2($Vs, [2, 14], { 14: [1, 71] }), { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 21: [1, 72], 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 41: $Vk, 45: $Vl, 48: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 57: $Vr }, o2($Vs, [2, 20], { 20: [1, 73] }), { 31: [1, 74] }, { 24: [1, 75] }, { 39: [1, 76] }, { 39: [1, 77] }, o2($Vs, [2, 34]), o2($Vs, [2, 35]), o2($Vs, [2, 36]), o2($Vs, [2, 37]), o2($Vt, [2, 46]), o2($Vt, [2, 47]), o2($Vs, [2, 15]), o2($Vs, [2, 19]), o2($Vu, $V3, { 7: 78 }), o2($Vs, [2, 26]), o2($Vs, [2, 27]), { 5: [1, 79] }, { 5: [1, 80] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 21: [1, 81], 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 41: $Vk, 45: $Vl, 48: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 57: $Vr }, o2($Vs, [2, 32]), o2($Vs, [2, 33]), o2($Vs, [2, 21])], + defaultActions: { 5: [2, 1], 6: [2, 2], 47: [2, 48], 48: [2, 49] }, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); + } else { + var error3 = new Error(str2); + error3.hash = hash; + throw error3; + } + }, "parseError"), + parse: /* @__PURE__ */ __name(function parse7(input) { + var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k2 in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { + sharedState.yy[k2] = this.yy[k2]; + } + } + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; + } + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n2) { + stack.length = stack.length - 2 * n2; + vstack.length = vstack.length - n2; + lstack.length = lstack.length - n2; + } + __name(popStack, "popStack"); + function lex() { + var token2; + token2 = tstack.pop() || lexer2.lex() || EOF2; + if (typeof token2 !== "number") { + if (token2 instanceof Array) { + tstack = token2; + token2 = tstack.pop(); } - }; - FDLayout.prototype.calcSpringForce = function(edge, idealLength) { - var sourceNode = edge.getSource(); - var targetNode = edge.getTarget(); - var length2; - var springForce; - var springForceX; - var springForceY; - if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) { - edge.updateLengthSimple(); - } else { - edge.updateLength(); - if (edge.isOverlapingSourceAndTarget) { - return; - } + token2 = self2.symbols_[token2] || token2; + } + return token2; + } + __name(lex, "lex"); + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; + while (true) { + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); } - length2 = edge.getLength(); - if (length2 == 0) return; - springForce = this.springConstant * (length2 - idealLength); - springForceX = springForce * (edge.lengthX / length2); - springForceY = springForce * (edge.lengthY / length2); - sourceNode.springForceX += springForceX; - sourceNode.springForceY += springForceY; - targetNode.springForceX -= springForceX; - targetNode.springForceY -= springForceY; - }; - FDLayout.prototype.calcRepulsionForce = function(nodeA, nodeB) { - var rectA = nodeA.getRect(); - var rectB = nodeB.getRect(); - var overlapAmount = new Array(2); - var clipPoints = new Array(4); - var distanceX; - var distanceY; - var distanceSquared; - var distance2; - var repulsionForce; - var repulsionForceX; - var repulsionForceY; - if (rectA.intersects(rectB)) { - IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2); - repulsionForceX = 2 * overlapAmount[0]; - repulsionForceY = 2 * overlapAmount[1]; - var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren); - nodeA.repulsionForceX -= childrenConstant * repulsionForceX; - nodeA.repulsionForceY -= childrenConstant * repulsionForceY; - nodeB.repulsionForceX += childrenConstant * repulsionForceX; - nodeB.repulsionForceY += childrenConstant * repulsionForceY; - } else { - if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) { - distanceX = rectB.getCenterX() - rectA.getCenterX(); - distanceY = rectB.getCenterY() - rectA.getCenterY(); - } else { - IGeometry.getIntersection(rectA, rectB, clipPoints); - distanceX = clipPoints[2] - clipPoints[0]; - distanceY = clipPoints[3] - clipPoints[1]; - } - if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) { - distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST; - } - if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) { - distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST; + action = table[state3] && table[state3][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p3 in table[state3]) { + if (this.terminals_[p3] && p3 > TERROR) { + expected.push("'" + this.terminals_[p3] + "'"); } - distanceSquared = distanceX * distanceX + distanceY * distanceY; - distance2 = Math.sqrt(distanceSquared); - repulsionForce = this.repulsionConstant * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared; - repulsionForceX = repulsionForce * distanceX / distance2; - repulsionForceY = repulsionForce * distanceY / distance2; - nodeA.repulsionForceX -= repulsionForceX; - nodeA.repulsionForceY -= repulsionForceY; - nodeB.repulsionForceX += repulsionForceX; - nodeB.repulsionForceY += repulsionForceY; } - }; - FDLayout.prototype.calcGravitationalForce = function(node2) { - var ownerGraph; - var ownerCenterX; - var ownerCenterY; - var distanceX; - var distanceY; - var absDistanceX; - var absDistanceY; - var estimatedSize; - ownerGraph = node2.getOwner(); - ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2; - ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2; - distanceX = node2.getCenterX() - ownerCenterX; - distanceY = node2.getCenterY() - ownerCenterY; - absDistanceX = Math.abs(distanceX) + node2.getWidth() / 2; - absDistanceY = Math.abs(distanceY) + node2.getHeight() / 2; - if (node2.getOwner() == this.graphManager.getRoot()) { - estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor; - if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) { - node2.gravitationForceX = -this.gravityConstant * distanceX; - node2.gravitationForceY = -this.gravityConstant * distanceY; - } + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; } else { - estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor; - if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) { - node2.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant; - node2.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant; - } - } - }; - FDLayout.prototype.isConverged = function() { - var converged; - var oscilating = false; - if (this.totalIterations > this.maxIterations / 3) { - oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2; + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); } - converged = this.totalDisplacement < this.totalDisplacementThreshold; - this.oldTotalDisplacement = this.totalDisplacement; - return converged || oscilating; - }; - FDLayout.prototype.animate = function() { - if (this.animationDuringLayout && !this.isSubLayout) { - if (this.notAnimatedIterations == this.animationPeriod) { - this.update(); - this.notAnimatedIterations = 0; + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + if (recovering > 0) { + recovering--; + } } else { - this.notAnimatedIterations++; + symbol = preErrorSymbol; + preErrorSymbol = null; } - } - }; - FDLayout.prototype.calcNoOfChildrenForAllNodes = function() { - var node2; - var allNodes = this.graphManager.getAllNodes(); - for (var i2 = 0; i2 < allNodes.length; i2++) { - node2 = allNodes[i2]; - node2.noOfChildren = node2.getNoOfChildren(); - } - }; - FDLayout.prototype.calcGrid = function(graph) { - var sizeX = 0; - var sizeY = 0; - sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange)); - sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange)); - var grid = new Array(sizeX); - for (var i2 = 0; i2 < sizeX; i2++) { - grid[i2] = new Array(sizeY); - } - for (var i2 = 0; i2 < sizeX; i2++) { - for (var j2 = 0; j2 < sizeY; j2++) { - grid[i2][j2] = new Array(); + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; } - } - return grid; - }; - FDLayout.prototype.addNodeToGrid = function(v3, left3, top2) { - var startX2 = 0; - var finishX = 0; - var startY2 = 0; - var finishY = 0; - startX2 = parseInt(Math.floor((v3.getRect().x - left3) / this.repulsionRange)); - finishX = parseInt(Math.floor((v3.getRect().width + v3.getRect().x - left3) / this.repulsionRange)); - startY2 = parseInt(Math.floor((v3.getRect().y - top2) / this.repulsionRange)); - finishY = parseInt(Math.floor((v3.getRect().height + v3.getRect().y - top2) / this.repulsionRange)); - for (var i2 = startX2; i2 <= finishX; i2++) { - for (var j2 = startY2; j2 <= finishY; j2++) { - this.grid[i2][j2].push(v3); - v3.setGridCoordinates(startX2, finishX, startY2, finishY); + r2 = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r2 !== "undefined") { + return r2; } - } - }; - FDLayout.prototype.updateGrid = function() { - var i2; - var nodeA; - var lNodes = this.getAllNodes(); - this.grid = this.calcGrid(this.graphManager.getRoot()); - for (i2 = 0; i2 < lNodes.length; i2++) { - nodeA = lNodes[i2]; - this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop()); - } - }; - FDLayout.prototype.calculateRepulsionForceOfANode = function(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) { - if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) { - var surrounding = /* @__PURE__ */ new Set(); - nodeA.surrounding = new Array(); - var nodeB; - var grid = this.grid; - for (var i2 = nodeA.startX - 1; i2 < nodeA.finishX + 2; i2++) { - for (var j2 = nodeA.startY - 1; j2 < nodeA.finishY + 2; j2++) { - if (!(i2 < 0 || j2 < 0 || i2 >= grid.length || j2 >= grid[0].length)) { - for (var k2 = 0; k2 < grid[i2][j2].length; k2++) { - nodeB = grid[i2][j2][k2]; - if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) { - continue; - } - if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) { - var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2); - var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2); - if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) { - surrounding.add(nodeB); - } - } - } - } - } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); } - nodeA.surrounding = [].concat(_toConsumableArray2(surrounding)); - } - for (i2 = 0; i2 < nodeA.surrounding.length; i2++) { - this.calcRepulsionForce(nodeA, nodeA.surrounding[i2]); - } - }; - FDLayout.prototype.calcRepulsionRange = function() { - return 0; + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState2); + break; + case 3: + return true; + } + } + return true; + }, "parse") + }; + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { + EOF: 1, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str2, hash); + } else { + throw new Error(str2); + } + }, "parseError"), + // resets the lexer, sets new input + setInput: /* @__PURE__ */ __name(function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 }; - module3.exports = FDLayout; - }, - /* 19 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var LEdge = __webpack_require__(1); - var FDLayoutConstants = __webpack_require__(7); - function FDLayoutEdge(source, target, vEdge) { - LEdge.call(this, source, target, vEdge); - this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH; + if (this.options.ranges) { + this.yylloc.range = [0, 0]; } - __name(FDLayoutEdge, "FDLayoutEdge"); - FDLayoutEdge.prototype = Object.create(LEdge.prototype); - for (var prop in LEdge) { - FDLayoutEdge[prop] = LEdge[prop]; + this.offset = 0; + return this; + }, "setInput"), + // consumes and returns one char from the input + input: /* @__PURE__ */ __name(function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; } - module3.exports = FDLayoutEdge; - }, - /* 20 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var LNode = __webpack_require__(3); - function FDLayoutNode(gm, loc, size5, vNode) { - LNode.call(this, gm, loc, size5, vNode); - this.springForceX = 0; - this.springForceY = 0; - this.repulsionForceX = 0; - this.repulsionForceY = 0; - this.gravitationForceX = 0; - this.gravitationForceY = 0; - this.displacementX = 0; - this.displacementY = 0; - this.startX = 0; - this.finishX = 0; - this.startY = 0; - this.finishY = 0; - this.surrounding = []; + if (this.options.ranges) { + this.yylloc.range[1]++; } - __name(FDLayoutNode, "FDLayoutNode"); - FDLayoutNode.prototype = Object.create(LNode.prototype); - for (var prop in LNode) { - FDLayoutNode[prop] = LNode[prop]; + this._input = this._input.slice(1); + return ch; + }, "input"), + // unshifts one char (or a string) into the input + unput: /* @__PURE__ */ __name(function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; } - FDLayoutNode.prototype.setGridCoordinates = function(_startX, _finishX, _startY, _finishY) { - this.startX = _startX; - this.finishX = _finishX; - this.startY = _startY; - this.finishY = _finishY; + var r2 = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len }; - module3.exports = FDLayoutNode; - }, - /* 21 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function DimensionD2(width3, height2) { - this.width = 0; - this.height = 0; - if (width3 !== null && height2 !== null) { - this.height = height2; - this.width = width3; + if (this.options.ranges) { + this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, "unput"), + // When called from action, caches matched text and appends it on next action + more: /* @__PURE__ */ __name(function() { + this._more = true; + return this; + }, "more"), + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: /* @__PURE__ */ __name(function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + return this; + }, "reject"), + // retain first n characters of the match + less: /* @__PURE__ */ __name(function(n2) { + this.unput(this.match.slice(n2)); + }, "less"), + // displays already matched input, i.e. for error messages + pastInput: /* @__PURE__ */ __name(function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, "pastInput"), + // displays upcoming input, i.e. for error messages + upcomingInput: /* @__PURE__ */ __name(function() { + var next3 = this.match; + if (next3.length < 20) { + next3 += this._input.substr(0, 20 - next3.length); + } + return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, "upcomingInput"), + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: /* @__PURE__ */ __name(function() { + var pre = this.pastInput(); + var c3 = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c3 + "^"; + }, "showPosition"), + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { + var token2, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); } } - __name(DimensionD2, "DimensionD"); - DimensionD2.prototype.getWidth = function() { - return this.width; - }; - DimensionD2.prototype.setWidth = function(width3) { - this.width = width3; - }; - DimensionD2.prototype.getHeight = function() { - return this.height; - }; - DimensionD2.prototype.setHeight = function(height2) { - this.height = height2; + lines = match2[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length }; - module3.exports = DimensionD2; - }, - /* 22 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var UniqueIDGeneretor = __webpack_require__(14); - function HashMap() { - this.map = {}; - this.keys = []; + this.yytext += match2[0]; + this.match += match2[0]; + this.matches = match2; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; } - __name(HashMap, "HashMap"); - HashMap.prototype.put = function(key, value2) { - var theId = UniqueIDGeneretor.createID(key); - if (!this.contains(theId)) { - this.map[theId] = value2; - this.keys.push(key); + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match2[0].length); + this.matched += match2[0]; + token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token2) { + return token2; + } else if (this._backtrack) { + for (var k2 in backup) { + this[k2] = backup[k2]; } - }; - HashMap.prototype.contains = function(key) { - var theId = UniqueIDGeneretor.createID(key); - return this.map[key] != null; - }; - HashMap.prototype.get = function(key) { - var theId = UniqueIDGeneretor.createID(key); - return this.map[theId]; - }; - HashMap.prototype.keySet = function() { - return this.keys; - }; - module3.exports = HashMap; - }, - /* 23 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var UniqueIDGeneretor = __webpack_require__(14); - function HashSet() { - this.set = {}; + return false; } - __name(HashSet, "HashSet"); - ; - HashSet.prototype.add = function(obj) { - var theId = UniqueIDGeneretor.createID(obj); - if (!this.contains(theId)) this.set[theId] = obj; - }; - HashSet.prototype.remove = function(obj) { - delete this.set[UniqueIDGeneretor.createID(obj)]; - }; - HashSet.prototype.clear = function() { - this.set = {}; - }; - HashSet.prototype.contains = function(obj) { - return this.set[UniqueIDGeneretor.createID(obj)] == obj; - }; - HashSet.prototype.isEmpty = function() { - return this.size() === 0; - }; - HashSet.prototype.size = function() { - return Object.keys(this.set).length; - }; - HashSet.prototype.addAllTo = function(list2) { - var keys3 = Object.keys(this.set); - var length2 = keys3.length; - for (var i2 = 0; i2 < length2; i2++) { - list2.push(this.set[keys3[i2]]); + return false; + }, "test_match"), + // return next match in input + next: /* @__PURE__ */ __name(function() { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + var token2, match2, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i2 = 0; i2 < rules.length; i2++) { + tempMatch = this._input.match(this.rules[rules[i2]]); + if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { + match2 = tempMatch; + index = i2; + if (this.options.backtrack_lexer) { + token2 = this.test_match(tempMatch, rules[i2]); + if (token2 !== false) { + return token2; + } else if (this._backtrack) { + match2 = false; + continue; + } else { + return false; + } + } else if (!this.options.flex) { + break; + } } - }; - HashSet.prototype.size = function() { - return Object.keys(this.set).length; - }; - HashSet.prototype.addAll = function(list2) { - var s2 = list2.length; - for (var i2 = 0; i2 < s2; i2++) { - var v3 = list2[i2]; - this.add(v3); + } + if (match2) { + token2 = this.test_match(match2, rules[index]); + if (token2 !== false) { + return token2; } - }; - module3.exports = HashSet; - }, - /* 24 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var _createClass2 = /* @__PURE__ */ function() { - function defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, "next"), + // return next match that has a token + lex: /* @__PURE__ */ __name(function lex() { + var r2 = this.next(); + if (r2) { + return r2; + } else { + return this.lex(); + } + }, "lex"), + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: /* @__PURE__ */ __name(function begin(condition) { + this.conditionStack.push(condition); + }, "begin"), + // pop the previously active lexer condition state off the condition stack + popState: /* @__PURE__ */ __name(function popState() { + var n2 = this.conditionStack.length - 1; + if (n2 > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, "popState"), + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: /* @__PURE__ */ __name(function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, "_currentRules"), + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: /* @__PURE__ */ __name(function topState(n2) { + n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); + if (n2 >= 0) { + return this.conditionStack[n2]; + } else { + return "INITIAL"; + } + }, "topState"), + // alias for begin(condition) + pushState: /* @__PURE__ */ __name(function pushState(condition) { + this.begin(condition); + }, "pushState"), + // return the number of states currently on the stack + stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { + return this.conditionStack.length; + }, "stateStackSize"), + options: { "case-insensitive": true }, + performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + var YYSTATE = YY_START; + switch ($avoiding_name_collisions) { + case 0: + return 38; + break; + case 1: + return 40; + break; + case 2: + return 39; + break; + case 3: + return 44; + break; + case 4: + return 51; + break; + case 5: + return 52; + break; + case 6: + return 53; + break; + case 7: + return 54; + break; + case 8: + break; + case 9: + { } - } - __name(defineProperties, "defineProperties"); - return function(Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; + break; + case 10: + return 5; + break; + case 11: + break; + case 12: + break; + case 13: + break; + case 14: + break; + case 15: + this.pushState("SCALE"); + return 17; + break; + case 16: + return 18; + break; + case 17: + this.popState(); + break; + case 18: + this.begin("acc_title"); + return 33; + break; + case 19: + this.popState(); + return "acc_title_value"; + break; + case 20: + this.begin("acc_descr"); + return 35; + break; + case 21: + this.popState(); + return "acc_descr_value"; + break; + case 22: + this.begin("acc_descr_multiline"); + break; + case 23: + this.popState(); + break; + case 24: + return "acc_descr_multiline_value"; + break; + case 25: + this.pushState("CLASSDEF"); + return 41; + break; + case 26: + this.popState(); + this.pushState("CLASSDEFID"); + return "DEFAULT_CLASSDEF_ID"; + break; + case 27: + this.popState(); + this.pushState("CLASSDEFID"); + return 42; + break; + case 28: + this.popState(); + return 43; + break; + case 29: + this.pushState("CLASS"); + return 48; + break; + case 30: + this.popState(); + this.pushState("CLASS_STYLE"); + return 49; + break; + case 31: + this.popState(); + return 50; + break; + case 32: + this.pushState("STYLE"); + return 45; + break; + case 33: + this.popState(); + this.pushState("STYLEDEF_STYLES"); + return 46; + break; + case 34: + this.popState(); + return 47; + break; + case 35: + this.pushState("SCALE"); + return 17; + break; + case 36: + return 18; + break; + case 37: + this.popState(); + break; + case 38: + this.pushState("STATE"); + break; + case 39: + this.popState(); + yy_.yytext = yy_.yytext.slice(0, -8).trim(); + return 25; + break; + case 40: + this.popState(); + yy_.yytext = yy_.yytext.slice(0, -8).trim(); + return 26; + break; + case 41: + this.popState(); + yy_.yytext = yy_.yytext.slice(0, -10).trim(); + return 27; + break; + case 42: + this.popState(); + yy_.yytext = yy_.yytext.slice(0, -8).trim(); + return 25; + break; + case 43: + this.popState(); + yy_.yytext = yy_.yytext.slice(0, -8).trim(); + return 26; + break; + case 44: + this.popState(); + yy_.yytext = yy_.yytext.slice(0, -10).trim(); + return 27; + break; + case 45: + return 51; + break; + case 46: + return 52; + break; + case 47: + return 53; + break; + case 48: + return 54; + break; + case 49: + this.pushState("STATE_STRING"); + break; + case 50: + this.pushState("STATE_ID"); + return "AS"; + break; + case 51: + this.popState(); + return "ID"; + break; + case 52: + this.popState(); + break; + case 53: + return "STATE_DESCR"; + break; + case 54: + return 19; + break; + case 55: + this.popState(); + break; + case 56: + this.popState(); + this.pushState("struct"); + return 20; + break; + case 57: + break; + case 58: + this.popState(); + return 21; + break; + case 59: + break; + case 60: + this.begin("NOTE"); + return 29; + break; + case 61: + this.popState(); + this.pushState("NOTE_ID"); + return 59; + break; + case 62: + this.popState(); + this.pushState("NOTE_ID"); + return 60; + break; + case 63: + this.popState(); + this.pushState("FLOATING_NOTE"); + break; + case 64: + this.popState(); + this.pushState("FLOATING_NOTE_ID"); + return "AS"; + break; + case 65: + break; + case 66: + return "NOTE_TEXT"; + break; + case 67: + this.popState(); + return "ID"; + break; + case 68: + this.popState(); + this.pushState("NOTE_TEXT"); + return 24; + break; + case 69: + this.popState(); + yy_.yytext = yy_.yytext.substr(2).trim(); + return 31; + break; + case 70: + this.popState(); + yy_.yytext = yy_.yytext.slice(0, -8).trim(); + return 31; + break; + case 71: + return 6; + break; + case 72: + return 6; + break; + case 73: + return 16; + break; + case 74: + return 57; + break; + case 75: + return 24; + break; + case 76: + yy_.yytext = yy_.yytext.trim(); + return 14; + break; + case 77: + return 15; + break; + case 78: + return 28; + break; + case 79: + return 58; + break; + case 80: + return 5; + break; + case 81: + return "INVALID"; + break; + } + }, "anonymous"), + rules: [/^(?:click\b)/i, /^(?:href\b)/i, /^(?:"[^"]*")/i, /^(?:default\b)/i, /^(?:.*direction\s+TB[^\n]*)/i, /^(?:.*direction\s+BT[^\n]*)/i, /^(?:.*direction\s+RL[^\n]*)/i, /^(?:.*direction\s+LR[^\n]*)/i, /^(?:%%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n]+)/i, /^(?:[\s]+)/i, /^(?:((?!\n)\s)+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:scale\s+)/i, /^(?:\d+)/i, /^(?:\s+width\b)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:classDef\s+)/i, /^(?:DEFAULT\s+)/i, /^(?:\w+\s+)/i, /^(?:[^\n]*)/i, /^(?:class\s+)/i, /^(?:(\w+)+((,\s*\w+)*))/i, /^(?:[^\n]*)/i, /^(?:style\s+)/i, /^(?:[\w,]+\s+)/i, /^(?:[^\n]*)/i, /^(?:scale\s+)/i, /^(?:\d+)/i, /^(?:\s+width\b)/i, /^(?:state\s+)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*\[\[fork\]\])/i, /^(?:.*\[\[join\]\])/i, /^(?:.*\[\[choice\]\])/i, /^(?:.*direction\s+TB[^\n]*)/i, /^(?:.*direction\s+BT[^\n]*)/i, /^(?:.*direction\s+RL[^\n]*)/i, /^(?:.*direction\s+LR[^\n]*)/i, /^(?:["])/i, /^(?:\s*as\s+)/i, /^(?:[^\n\{]*)/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[^\n\s\{]+)/i, /^(?:\n)/i, /^(?:\{)/i, /^(?:%%(?!\{)[^\n]*)/i, /^(?:\})/i, /^(?:[\n])/i, /^(?:note\s+)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:")/i, /^(?:\s*as\s*)/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[^\n]*)/i, /^(?:\s*[^:\n\s\-]+)/i, /^(?:\s*:[^:\n;]+)/i, /^(?:[\s\S]*?end note\b)/i, /^(?:stateDiagram\s+)/i, /^(?:stateDiagram-v2\s+)/i, /^(?:hide empty description\b)/i, /^(?:\[\*\])/i, /^(?:[^:\n\s\-\{]+)/i, /^(?:\s*:[^:\n;]+)/i, /^(?:-->)/i, /^(?:--)/i, /^(?::::)/i, /^(?:$)/i, /^(?:.)/i], + conditions: { "LINE": { "rules": [12, 13], "inclusive": false }, "struct": { "rules": [12, 13, 25, 29, 32, 38, 45, 46, 47, 48, 57, 58, 59, 60, 74, 75, 76, 77, 78], "inclusive": false }, "FLOATING_NOTE_ID": { "rules": [67], "inclusive": false }, "FLOATING_NOTE": { "rules": [64, 65, 66], "inclusive": false }, "NOTE_TEXT": { "rules": [69, 70], "inclusive": false }, "NOTE_ID": { "rules": [68], "inclusive": false }, "NOTE": { "rules": [61, 62, 63], "inclusive": false }, "STYLEDEF_STYLEOPTS": { "rules": [], "inclusive": false }, "STYLEDEF_STYLES": { "rules": [34], "inclusive": false }, "STYLE_IDS": { "rules": [], "inclusive": false }, "STYLE": { "rules": [33], "inclusive": false }, "CLASS_STYLE": { "rules": [31], "inclusive": false }, "CLASS": { "rules": [30], "inclusive": false }, "CLASSDEFID": { "rules": [28], "inclusive": false }, "CLASSDEF": { "rules": [26, 27], "inclusive": false }, "acc_descr_multiline": { "rules": [23, 24], "inclusive": false }, "acc_descr": { "rules": [21], "inclusive": false }, "acc_title": { "rules": [19], "inclusive": false }, "SCALE": { "rules": [16, 17, 36, 37], "inclusive": false }, "ALIAS": { "rules": [], "inclusive": false }, "STATE_ID": { "rules": [51], "inclusive": false }, "STATE_STRING": { "rules": [52, 53], "inclusive": false }, "FORK_STATE": { "rules": [], "inclusive": false }, "STATE": { "rules": [12, 13, 39, 40, 41, 42, 43, 44, 49, 50, 54, 55, 56], "inclusive": false }, "ID": { "rules": [12, 13], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 20, 22, 25, 29, 32, 35, 38, 56, 60, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81], "inclusive": true } } + }; + return lexer2; + })(); + parser24.lexer = lexer; + function Parser3() { + this.yy = {}; + } + __name(Parser3, "Parser"); + Parser3.prototype = parser24; + parser24.Parser = Parser3; + return new Parser3(); + })(); + parser13.parser = parser13; + stateDiagram_default = parser13; + } + }); + + // src/diagrams/state/stateCommon.ts + var DEFAULT_DIAGRAM_DIRECTION, DEFAULT_NESTED_DOC_DIR, STMT_DIRECTION, STMT_STATE, STMT_ROOT, STMT_RELATION, STMT_CLASSDEF, STMT_STYLEDEF, STMT_APPLYCLASS, DEFAULT_STATE_TYPE, DIVIDER_TYPE, G_EDGE_STYLE, G_EDGE_ARROWHEADSTYLE, G_EDGE_LABELPOS, G_EDGE_LABELTYPE, G_EDGE_THICKNESS, SHAPE_STATE, SHAPE_STATE_WITH_DESC, SHAPE_START, SHAPE_END, SHAPE_DIVIDER, SHAPE_GROUP, SHAPE_NOTE, SHAPE_NOTEGROUP, CSS_DIAGRAM, CSS_STATE, CSS_DIAGRAM_STATE, CSS_EDGE, CSS_NOTE, CSS_NOTE_EDGE, CSS_EDGE_NOTE_EDGE, CSS_DIAGRAM_NOTE, CSS_CLUSTER, CSS_DIAGRAM_CLUSTER, CSS_CLUSTER_ALT, CSS_DIAGRAM_CLUSTER_ALT, PARENT2, NOTE, DOMID_STATE, DOMID_TYPE_SPACER, NOTE_ID, PARENT_ID; + var init_stateCommon = __esm({ + "src/diagrams/state/stateCommon.ts"() { + "use strict"; + DEFAULT_DIAGRAM_DIRECTION = "TB"; + DEFAULT_NESTED_DOC_DIR = "TB"; + STMT_DIRECTION = "dir"; + STMT_STATE = "state"; + STMT_ROOT = "root"; + STMT_RELATION = "relation"; + STMT_CLASSDEF = "classDef"; + STMT_STYLEDEF = "style"; + STMT_APPLYCLASS = "applyClass"; + DEFAULT_STATE_TYPE = "default"; + DIVIDER_TYPE = "divider"; + G_EDGE_STYLE = "fill:none"; + G_EDGE_ARROWHEADSTYLE = "fill: #333"; + G_EDGE_LABELPOS = "c"; + G_EDGE_LABELTYPE = "text"; + G_EDGE_THICKNESS = "normal"; + SHAPE_STATE = "rect"; + SHAPE_STATE_WITH_DESC = "rectWithTitle"; + SHAPE_START = "stateStart"; + SHAPE_END = "stateEnd"; + SHAPE_DIVIDER = "divider"; + SHAPE_GROUP = "roundedWithTitle"; + SHAPE_NOTE = "note"; + SHAPE_NOTEGROUP = "noteGroup"; + CSS_DIAGRAM = "statediagram"; + CSS_STATE = "state"; + CSS_DIAGRAM_STATE = `${CSS_DIAGRAM}-${CSS_STATE}`; + CSS_EDGE = "transition"; + CSS_NOTE = "note"; + CSS_NOTE_EDGE = "note-edge"; + CSS_EDGE_NOTE_EDGE = `${CSS_EDGE} ${CSS_NOTE_EDGE}`; + CSS_DIAGRAM_NOTE = `${CSS_DIAGRAM}-${CSS_NOTE}`; + CSS_CLUSTER = "cluster"; + CSS_DIAGRAM_CLUSTER = `${CSS_DIAGRAM}-${CSS_CLUSTER}`; + CSS_CLUSTER_ALT = "cluster-alt"; + CSS_DIAGRAM_CLUSTER_ALT = `${CSS_DIAGRAM}-${CSS_CLUSTER_ALT}`; + PARENT2 = "parent"; + NOTE = "note"; + DOMID_STATE = "state"; + DOMID_TYPE_SPACER = "----"; + NOTE_ID = `${DOMID_TYPE_SPACER}${NOTE}`; + PARENT_ID = `${DOMID_TYPE_SPACER}${PARENT2}`; + } + }); + + // src/diagrams/state/dataFetcher.ts + function stateDomId(itemId = "", counter2 = 0, type3 = "", typeSpacer = DOMID_TYPE_SPACER) { + const typeStr = type3 !== null && type3.length > 0 ? `${typeSpacer}${type3}` : ""; + return `${DOMID_STATE}-${itemId}${typeStr}-${counter2}`; + } + function insertOrUpdateNode(nodes5, nodeData2, classes3) { + if (!nodeData2.id || nodeData2.id === "" || nodeData2.id === "") { + return; + } + if (nodeData2.cssClasses) { + if (!Array.isArray(nodeData2.cssCompiledStyles)) { + nodeData2.cssCompiledStyles = []; + } + nodeData2.cssClasses.split(" ").forEach((cssClass) => { + const classDef = classes3.get(cssClass); + if (classDef) { + nodeData2.cssCompiledStyles = [...nodeData2.cssCompiledStyles ?? [], ...classDef.styles]; + } + }); + } + const existingNodeData = nodes5.find((node2) => node2.id === nodeData2.id); + if (existingNodeData) { + Object.assign(existingNodeData, nodeData2); + } else { + nodes5.push(nodeData2); + } + } + function getClassesFromDbInfo(dbInfoItem) { + return dbInfoItem?.classes?.join(" ") ?? ""; + } + function getStylesFromDbInfo(dbInfoItem) { + return dbInfoItem?.styles ?? []; + } + var nodeDb, graphItemCount, setupDoc, getDir2, dataFetcher, reset3; + var init_dataFetcher = __esm({ + "src/diagrams/state/dataFetcher.ts"() { + "use strict"; + init_diagramAPI(); + init_logger(); + init_common(); + init_stateCommon(); + nodeDb = /* @__PURE__ */ new Map(); + graphItemCount = 0; + __name(stateDomId, "stateDomId"); + setupDoc = /* @__PURE__ */ __name((parentParsedItem, doc, diagramStates, nodes5, edges3, altFlag, look, classes3) => { + log.trace("items", doc); + doc.forEach((item) => { + switch (item.stmt) { + case STMT_STATE: + dataFetcher(parentParsedItem, item, diagramStates, nodes5, edges3, altFlag, look, classes3); + break; + case DEFAULT_STATE_TYPE: + dataFetcher(parentParsedItem, item, diagramStates, nodes5, edges3, altFlag, look, classes3); + break; + case STMT_RELATION: + { + dataFetcher( + parentParsedItem, + item.state1, + diagramStates, + nodes5, + edges3, + altFlag, + look, + classes3 + ); + dataFetcher( + parentParsedItem, + item.state2, + diagramStates, + nodes5, + edges3, + altFlag, + look, + classes3 + ); + const edgeData2 = { + id: "edge" + graphItemCount, + start: item.state1.id, + end: item.state2.id, + arrowhead: "normal", + arrowTypeEnd: "arrow_barb", + style: G_EDGE_STYLE, + labelStyle: "", + label: common_default.sanitizeText(item.description ?? "", getConfig2()), + arrowheadStyle: G_EDGE_ARROWHEADSTYLE, + labelpos: G_EDGE_LABELPOS, + labelType: G_EDGE_LABELTYPE, + thickness: G_EDGE_THICKNESS, + classes: CSS_EDGE, + look }; - }(); - function _classCallCheck2(instance2, Constructor) { - if (!(instance2 instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } + edges3.push(edgeData2); + graphItemCount++; } - __name(_classCallCheck2, "_classCallCheck"); - var LinkedList = __webpack_require__(11); - var Quicksort = function() { - function Quicksort2(A2, compareFunction) { - _classCallCheck2(this, Quicksort2); - if (compareFunction !== null || compareFunction !== void 0) this.compareFunction = this._defaultCompareFunction; - var length2 = void 0; - if (A2 instanceof LinkedList) length2 = A2.size(); - else length2 = A2.length; - this._quicksort(A2, 0, length2 - 1); - } - __name(Quicksort2, "Quicksort"); - _createClass2(Quicksort2, [{ - key: "_quicksort", - value: /* @__PURE__ */ __name(function _quicksort(A2, p3, r2) { - if (p3 < r2) { - var q2 = this._partition(A2, p3, r2); - this._quicksort(A2, p3, q2); - this._quicksort(A2, q2 + 1, r2); - } - }, "_quicksort") - }, { - key: "_partition", - value: /* @__PURE__ */ __name(function _partition(A2, p3, r2) { - var x5 = this._get(A2, p3); - var i2 = p3; - var j2 = r2; - while (true) { - while (this.compareFunction(x5, this._get(A2, j2))) { - j2--; - } - while (this.compareFunction(this._get(A2, i2), x5)) { - i2++; - } - if (i2 < j2) { - this._swap(A2, i2, j2); - i2++; - j2--; - } else return j2; - } - }, "_partition") - }, { - key: "_get", - value: /* @__PURE__ */ __name(function _get(object3, index) { - if (object3 instanceof LinkedList) return object3.get_object_at(index); - else return object3[index]; - }, "_get") - }, { - key: "_set", - value: /* @__PURE__ */ __name(function _set(object3, index, value2) { - if (object3 instanceof LinkedList) object3.set_object_at(index, value2); - else object3[index] = value2; - }, "_set") - }, { - key: "_swap", - value: /* @__PURE__ */ __name(function _swap(A2, i2, j2) { - var temp = this._get(A2, i2); - this._set(A2, i2, this._get(A2, j2)); - this._set(A2, j2, temp); - }, "_swap") - }, { - key: "_defaultCompareFunction", - value: /* @__PURE__ */ __name(function _defaultCompareFunction(a2, b2) { - return b2 > a2; - }, "_defaultCompareFunction") - }]); - return Quicksort2; - }(); - module3.exports = Quicksort; - }, - /* 25 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var _createClass2 = /* @__PURE__ */ function() { - function defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - __name(defineProperties, "defineProperties"); - return function(Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - function _classCallCheck2(instance2, Constructor) { - if (!(instance2 instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); + break; + } + }); + }, "setupDoc"); + getDir2 = /* @__PURE__ */ __name((parsedItem, defaultDir = DEFAULT_NESTED_DOC_DIR) => { + let dir2 = defaultDir; + if (parsedItem.doc) { + for (const parsedItemDoc of parsedItem.doc) { + if (parsedItemDoc.stmt === "dir") { + dir2 = parsedItemDoc.value; + } + } + } + return dir2; + }, "getDir"); + __name(insertOrUpdateNode, "insertOrUpdateNode"); + __name(getClassesFromDbInfo, "getClassesFromDbInfo"); + __name(getStylesFromDbInfo, "getStylesFromDbInfo"); + dataFetcher = /* @__PURE__ */ __name((parent4, parsedItem, diagramStates, nodes5, edges3, altFlag, look, classes3) => { + const itemId = parsedItem.id; + const dbState = diagramStates.get(itemId); + const classStr = getClassesFromDbInfo(dbState); + const style3 = getStylesFromDbInfo(dbState); + const config5 = getConfig2(); + log.info("dataFetcher parsedItem", parsedItem, dbState, style3); + if (itemId !== "root") { + let shape = SHAPE_STATE; + if (parsedItem.start === true) { + shape = SHAPE_START; + } else if (parsedItem.start === false) { + shape = SHAPE_END; + } + if (parsedItem.type !== DEFAULT_STATE_TYPE) { + shape = parsedItem.type; + } + if (!nodeDb.get(itemId)) { + nodeDb.set(itemId, { + id: itemId, + shape, + description: common_default.sanitizeText(itemId, config5), + cssClasses: `${classStr} ${CSS_DIAGRAM_STATE}`, + cssStyles: style3 + }); + } + const newNode = nodeDb.get(itemId); + if (parsedItem.description) { + if (Array.isArray(newNode.description)) { + newNode.shape = SHAPE_STATE_WITH_DESC; + newNode.description.push(parsedItem.description); + } else { + if (newNode.description?.length && newNode.description.length > 0) { + newNode.shape = SHAPE_STATE_WITH_DESC; + if (newNode.description === itemId) { + newNode.description = [parsedItem.description]; + } else { + newNode.description = [newNode.description, parsedItem.description]; } + } else { + newNode.shape = SHAPE_STATE; + newNode.description = parsedItem.description; } - __name(_classCallCheck2, "_classCallCheck"); - var NeedlemanWunsch = function() { - function NeedlemanWunsch2(sequence1, sequence2) { - var match_score = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1; - var mismatch_penalty = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : -1; - var gap_penalty = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : -1; - _classCallCheck2(this, NeedlemanWunsch2); - this.sequence1 = sequence1; - this.sequence2 = sequence2; - this.match_score = match_score; - this.mismatch_penalty = mismatch_penalty; - this.gap_penalty = gap_penalty; - this.iMax = sequence1.length + 1; - this.jMax = sequence2.length + 1; - this.grid = new Array(this.iMax); - for (var i2 = 0; i2 < this.iMax; i2++) { - this.grid[i2] = new Array(this.jMax); - for (var j2 = 0; j2 < this.jMax; j2++) { - this.grid[i2][j2] = 0; - } - } - this.tracebackGrid = new Array(this.iMax); - for (var _i = 0; _i < this.iMax; _i++) { - this.tracebackGrid[_i] = new Array(this.jMax); - for (var _j = 0; _j < this.jMax; _j++) { - this.tracebackGrid[_i][_j] = [null, null, null]; - } - } - this.alignments = []; - this.score = -1; - this.computeGrids(); - } - __name(NeedlemanWunsch2, "NeedlemanWunsch"); - _createClass2(NeedlemanWunsch2, [{ - key: "getScore", - value: /* @__PURE__ */ __name(function getScore() { - return this.score; - }, "getScore") - }, { - key: "getAlignments", - value: /* @__PURE__ */ __name(function getAlignments2() { - return this.alignments; - }, "getAlignments") - // Main dynamic programming procedure - }, { - key: "computeGrids", - value: /* @__PURE__ */ __name(function computeGrids() { - for (var j2 = 1; j2 < this.jMax; j2++) { - this.grid[0][j2] = this.grid[0][j2 - 1] + this.gap_penalty; - this.tracebackGrid[0][j2] = [false, false, true]; - } - for (var i2 = 1; i2 < this.iMax; i2++) { - this.grid[i2][0] = this.grid[i2 - 1][0] + this.gap_penalty; - this.tracebackGrid[i2][0] = [false, true, false]; - } - for (var _i2 = 1; _i2 < this.iMax; _i2++) { - for (var _j2 = 1; _j2 < this.jMax; _j2++) { - var diag = void 0; - if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score; - else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty; - var up = this.grid[_i2 - 1][_j2] + this.gap_penalty; - var left3 = this.grid[_i2][_j2 - 1] + this.gap_penalty; - var maxOf = [diag, up, left3]; - var indices = this.arrayAllMaxIndexes(maxOf); - this.grid[_i2][_j2] = maxOf[indices[0]]; - this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)]; - } - } - this.score = this.grid[this.iMax - 1][this.jMax - 1]; - }, "computeGrids") - // Gets all possible valid sequence combinations - }, { - key: "alignmentTraceback", - value: /* @__PURE__ */ __name(function alignmentTraceback() { - var inProcessAlignments = []; - inProcessAlignments.push({ - pos: [this.sequence1.length, this.sequence2.length], - seq1: "", - seq2: "" - }); - while (inProcessAlignments[0]) { - var current = inProcessAlignments[0]; - var directions = this.tracebackGrid[current.pos[0]][current.pos[1]]; - if (directions[0]) { - inProcessAlignments.push({ - pos: [current.pos[0] - 1, current.pos[1] - 1], - seq1: this.sequence1[current.pos[0] - 1] + current.seq1, - seq2: this.sequence2[current.pos[1] - 1] + current.seq2 - }); - } - if (directions[1]) { - inProcessAlignments.push({ - pos: [current.pos[0] - 1, current.pos[1]], - seq1: this.sequence1[current.pos[0] - 1] + current.seq1, - seq2: "-" + current.seq2 - }); - } - if (directions[2]) { - inProcessAlignments.push({ - pos: [current.pos[0], current.pos[1] - 1], - seq1: "-" + current.seq1, - seq2: this.sequence2[current.pos[1] - 1] + current.seq2 - }); - } - if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ - sequence1: current.seq1, - sequence2: current.seq2 - }); - inProcessAlignments.shift(); - } - return this.alignments; - }, "alignmentTraceback") - // Helper Functions - }, { - key: "getAllIndexes", - value: /* @__PURE__ */ __name(function getAllIndexes(arr, val) { - var indexes = [], i2 = -1; - while ((i2 = arr.indexOf(val, i2 + 1)) !== -1) { - indexes.push(i2); - } - return indexes; - }, "getAllIndexes") - }, { - key: "arrayAllMaxIndexes", - value: /* @__PURE__ */ __name(function arrayAllMaxIndexes(array4) { - return this.getAllIndexes(array4, Math.max.apply(null, array4)); - }, "arrayAllMaxIndexes") - }]); - return NeedlemanWunsch2; - }(); - module3.exports = NeedlemanWunsch; - }, - /* 26 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var layoutBase = /* @__PURE__ */ __name(function layoutBase2() { - return; - }, "layoutBase"); - layoutBase.FDLayout = __webpack_require__(18); - layoutBase.FDLayoutConstants = __webpack_require__(7); - layoutBase.FDLayoutEdge = __webpack_require__(19); - layoutBase.FDLayoutNode = __webpack_require__(20); - layoutBase.DimensionD = __webpack_require__(21); - layoutBase.HashMap = __webpack_require__(22); - layoutBase.HashSet = __webpack_require__(23); - layoutBase.IGeometry = __webpack_require__(8); - layoutBase.IMath = __webpack_require__(9); - layoutBase.Integer = __webpack_require__(10); - layoutBase.Point = __webpack_require__(12); - layoutBase.PointD = __webpack_require__(4); - layoutBase.RandomSeed = __webpack_require__(16); - layoutBase.RectangleD = __webpack_require__(13); - layoutBase.Transform = __webpack_require__(17); - layoutBase.UniqueIDGeneretor = __webpack_require__(14); - layoutBase.Quicksort = __webpack_require__(24); - layoutBase.LinkedList = __webpack_require__(11); - layoutBase.LGraphObject = __webpack_require__(2); - layoutBase.LGraph = __webpack_require__(5); - layoutBase.LEdge = __webpack_require__(1); - layoutBase.LGraphManager = __webpack_require__(6); - layoutBase.LNode = __webpack_require__(3); - layoutBase.Layout = __webpack_require__(15); - layoutBase.LayoutConstants = __webpack_require__(0); - layoutBase.NeedlemanWunsch = __webpack_require__(25); - module3.exports = layoutBase; - }, - /* 27 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - function Emitter4() { - this.listeners = []; + } + newNode.description = common_default.sanitizeTextOrArray(newNode.description, config5); + } + if (newNode.description?.length === 1 && newNode.shape === SHAPE_STATE_WITH_DESC) { + if (newNode.type === "group") { + newNode.shape = SHAPE_GROUP; + } else { + newNode.shape = SHAPE_STATE; + } + } + if (!newNode.type && parsedItem.doc) { + log.info("Setting cluster for XCX", itemId, getDir2(parsedItem)); + newNode.type = "group"; + newNode.isGroup = true; + newNode.dir = getDir2(parsedItem); + newNode.shape = parsedItem.type === DIVIDER_TYPE ? SHAPE_DIVIDER : SHAPE_GROUP; + newNode.cssClasses = `${newNode.cssClasses} ${CSS_DIAGRAM_CLUSTER} ${altFlag ? CSS_DIAGRAM_CLUSTER_ALT : ""}`; + } + const nodeData2 = { + labelStyle: "", + shape: newNode.shape, + label: newNode.description, + cssClasses: newNode.cssClasses, + cssCompiledStyles: [], + cssStyles: newNode.cssStyles, + id: itemId, + dir: newNode.dir, + domId: stateDomId(itemId, graphItemCount), + type: newNode.type, + isGroup: newNode.type === "group", + padding: 8, + rx: 10, + ry: 10, + look + }; + if (nodeData2.shape === SHAPE_DIVIDER) { + nodeData2.label = ""; + } + if (parent4 && parent4.id !== "root") { + log.trace("Setting node ", itemId, " to be child of its parent ", parent4.id); + nodeData2.parentId = parent4.id; + } + nodeData2.centerLabel = true; + if (parsedItem.note) { + const noteData = { + labelStyle: "", + shape: SHAPE_NOTE, + label: parsedItem.note.text, + cssClasses: CSS_DIAGRAM_NOTE, + // useHtmlLabels: false, + cssStyles: [], + cssCompiledStyles: [], + id: itemId + NOTE_ID + "-" + graphItemCount, + domId: stateDomId(itemId, graphItemCount, NOTE), + type: newNode.type, + isGroup: newNode.type === "group", + padding: config5.flowchart?.padding, + look, + position: parsedItem.note.position + }; + const parentNodeId = itemId + PARENT_ID; + const groupData = { + labelStyle: "", + shape: SHAPE_NOTEGROUP, + label: parsedItem.note.text, + cssClasses: newNode.cssClasses, + cssStyles: [], + id: itemId + PARENT_ID, + domId: stateDomId(itemId, graphItemCount, PARENT2), + type: "group", + isGroup: true, + padding: 16, + //getConfig().flowchart.padding + look, + position: parsedItem.note.position + }; + graphItemCount++; + groupData.id = parentNodeId; + noteData.parentId = parentNodeId; + insertOrUpdateNode(nodes5, groupData, classes3); + insertOrUpdateNode(nodes5, noteData, classes3); + insertOrUpdateNode(nodes5, nodeData2, classes3); + let from2 = itemId; + let to = noteData.id; + if (parsedItem.note.position === "left of") { + from2 = noteData.id; + to = itemId; + } + edges3.push({ + id: from2 + "-" + to, + start: from2, + end: to, + arrowhead: "none", + arrowTypeEnd: "", + style: G_EDGE_STYLE, + labelStyle: "", + classes: CSS_EDGE_NOTE_EDGE, + arrowheadStyle: G_EDGE_ARROWHEADSTYLE, + labelpos: G_EDGE_LABELPOS, + labelType: G_EDGE_LABELTYPE, + thickness: G_EDGE_THICKNESS, + look + }); + } else { + insertOrUpdateNode(nodes5, nodeData2, classes3); + } + } + if (parsedItem.doc) { + log.trace("Adding nodes children "); + setupDoc(parsedItem, parsedItem.doc, diagramStates, nodes5, edges3, !altFlag, look, classes3); + } + }, "dataFetcher"); + reset3 = /* @__PURE__ */ __name(() => { + nodeDb.clear(); + graphItemCount = 0; + }, "reset"); + } + }); + + // src/diagrams/state/stateRenderer-v3-unified.ts + var getDir3, getClasses3, draw13, stateRenderer_v3_unified_default; + var init_stateRenderer_v3_unified = __esm({ + "src/diagrams/state/stateRenderer-v3-unified.ts"() { + "use strict"; + init_diagramAPI(); + init_logger(); + init_insertElementsForSize(); + init_render2(); + init_setupViewPortForSVG(); + init_utils2(); + init_stateCommon(); + getDir3 = /* @__PURE__ */ __name((parsedItem, defaultDir = DEFAULT_NESTED_DOC_DIR) => { + if (!parsedItem.doc) { + return defaultDir; + } + let dir2 = defaultDir; + for (const parsedItemDoc of parsedItem.doc) { + if (parsedItemDoc.stmt === "dir") { + dir2 = parsedItemDoc.value; + } + } + return dir2; + }, "getDir"); + getClasses3 = /* @__PURE__ */ __name(function(text4, diagramObj) { + return diagramObj.db.getClasses(); + }, "getClasses"); + draw13 = /* @__PURE__ */ __name(async function(text4, id30, _version, diag) { + log.info("REF0:"); + log.info("Drawing state diagram (v2)", id30); + const { securityLevel, state: conf5, layout: layout6 } = getConfig2(); + diag.db.extract(diag.db.getRootDocV2()); + const data4Layout = diag.db.getData(); + const svg2 = getDiagramElement(id30, securityLevel); + data4Layout.type = diag.type; + data4Layout.layoutAlgorithm = layout6; + data4Layout.nodeSpacing = conf5?.nodeSpacing || 50; + data4Layout.rankSpacing = conf5?.rankSpacing || 50; + data4Layout.markers = ["barb"]; + data4Layout.diagramId = id30; + await render6(data4Layout, svg2); + const padding2 = 8; + try { + const links3 = typeof diag.db.getLinks === "function" ? diag.db.getLinks() : /* @__PURE__ */ new Map(); + links3.forEach((linkInfo, key) => { + const stateId = typeof key === "string" ? key : typeof key?.id === "string" ? key.id : ""; + if (!stateId) { + log.warn("\u26A0\uFE0F Invalid or missing stateId from key:", JSON.stringify(key)); + return; + } + const allNodes = svg2.node()?.querySelectorAll("g"); + let matchedElem; + allNodes?.forEach((g2) => { + const text5 = g2.textContent?.trim(); + if (text5 === stateId) { + matchedElem = g2; } - __name(Emitter4, "Emitter"); - var p3 = Emitter4.prototype; - p3.addListener = function(event3, callback) { - this.listeners.push({ - event: event3, - callback - }); - }; - p3.removeListener = function(event3, callback) { - for (var i2 = this.listeners.length; i2 >= 0; i2--) { - var l2 = this.listeners[i2]; - if (l2.event === event3 && l2.callback === callback) { - this.listeners.splice(i2, 1); - } - } - }; - p3.emit = function(event3, data6) { - for (var i2 = 0; i2 < this.listeners.length; i2++) { - var l2 = this.listeners[i2]; - if (event3 === l2.event) { - l2.callback(data6); - } - } - }; - module3.exports = Emitter4; + }); + if (!matchedElem) { + log.warn("\u26A0\uFE0F Could not find node matching text:", stateId); + return; + } + const parent4 = matchedElem.parentNode; + if (!parent4) { + log.warn("\u26A0\uFE0F Node has no parent, cannot wrap:", stateId); + return; + } + const a2 = document.createElementNS("http://www.w3.org/2000/svg", "a"); + const cleanedUrl = linkInfo.url.replace(/^"+|"+$/g, ""); + a2.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", cleanedUrl); + a2.setAttribute("target", "_blank"); + if (linkInfo.tooltip) { + const tooltip = linkInfo.tooltip.replace(/^"+|"+$/g, ""); + a2.setAttribute("title", tooltip); + } + parent4.replaceChild(a2, matchedElem); + a2.appendChild(matchedElem); + log.info("\u{1F517} Wrapped node in
    tag for:", stateId, linkInfo.url); + }); + } catch (err) { + log.error("\u274C Error injecting clickable links:", err); + } + utils_default2.insertTitle( + svg2, + "statediagramTitleText", + conf5?.titleTopMargin ?? 25, + diag.db.getDiagramTitle() + ); + setupViewPortForSVG(svg2, padding2, CSS_DIAGRAM, conf5?.useMaxWidth ?? true); + }, "draw"); + stateRenderer_v3_unified_default = { + getClasses: getClasses3, + draw: draw13, + getDir: getDir3 + }; + } + }); + + // src/diagrams/state/stateDb.ts + var CONSTANTS, newClassesList, newDoc, clone5, StateDB; + var init_stateDb = __esm({ + "src/diagrams/state/stateDb.ts"() { + "use strict"; + init_diagramAPI(); + init_logger(); + init_utils2(); + init_common(); + init_commonDb(); + init_dataFetcher(); + init_stateRenderer_v3_unified(); + init_stateCommon(); + CONSTANTS = { + START_NODE: "[*]", + START_TYPE: "start", + END_NODE: "[*]", + END_TYPE: "end", + COLOR_KEYWORD: "color", + FILL_KEYWORD: "fill", + BG_FILL: "bgFill", + STYLECLASS_SEP: "," + }; + newClassesList = /* @__PURE__ */ __name(() => /* @__PURE__ */ new Map(), "newClassesList"); + newDoc = /* @__PURE__ */ __name(() => ({ + relations: [], + states: /* @__PURE__ */ new Map(), + documents: {} + }), "newDoc"); + clone5 = /* @__PURE__ */ __name((o2) => JSON.parse(JSON.stringify(o2)), "clone"); + StateDB = class { + constructor(version3) { + this.version = version3; + this.nodes = []; + this.edges = []; + this.rootDoc = []; + this.classes = newClassesList(); + this.documents = { root: newDoc() }; + this.currentDocument = this.documents.root; + this.startEndCount = 0; + this.dividerCnt = 0; + this.links = /* @__PURE__ */ new Map(); + this.getAccTitle = getAccTitle; + this.setAccTitle = setAccTitle; + this.getAccDescription = getAccDescription; + this.setAccDescription = setAccDescription; + this.setDiagramTitle = setDiagramTitle; + this.getDiagramTitle = getDiagramTitle; + this.clear(); + this.setRootDoc = this.setRootDoc.bind(this); + this.getDividerId = this.getDividerId.bind(this); + this.setDirection = this.setDirection.bind(this); + this.trimColon = this.trimColon.bind(this); + } + static { + __name(this, "StateDB"); + } + static { + this.relationType = { + AGGREGATION: 0, + EXTENSION: 1, + COMPOSITION: 2, + DEPENDENCY: 3 + }; + } + /** + * Convert all of the statements (stmts) that were parsed into states and relationships. + * This is done because a state diagram may have nested sections, + * where each section is a 'document' and has its own set of statements. + * Ex: the section within a fork has its own statements, and incoming and outgoing statements + * refer to the fork as a whole (document). + * See the parser grammar: the definition of a document is a document then a 'line', where a line can be a statement. + * This will push the statement into the list of statements for the current document. + */ + extract(statements) { + this.clear(true); + for (const item of Array.isArray(statements) ? statements : statements.doc) { + switch (item.stmt) { + case STMT_STATE: + this.addState(item.id.trim(), item.type, item.doc, item.description, item.note); + break; + case STMT_RELATION: + this.addRelation(item.state1, item.state2, item.description); + break; + case STMT_CLASSDEF: + this.addStyleClass(item.id.trim(), item.classes); + break; + case STMT_STYLEDEF: + this.handleStyleDef(item); + break; + case STMT_APPLYCLASS: + this.setCssClass(item.id.trim(), item.styleClass); + break; + case "click": + this.addLink(item.id, item.url, item.tooltip); + break; + } + } + const diagramStates = this.getStates(); + const config5 = getConfig2(); + reset3(); + dataFetcher( + void 0, + this.getRootDocV2(), + diagramStates, + this.nodes, + this.edges, + true, + config5.look, + this.classes + ); + for (const node2 of this.nodes) { + if (!Array.isArray(node2.label)) { + continue; + } + node2.description = node2.label.slice(1); + if (node2.isGroup && node2.description.length > 0) { + throw new Error( + `Group nodes can only have label. Remove the additional description for node [${node2.id}]` + ); + } + node2.label = node2.label[0]; + } + } + handleStyleDef(item) { + const ids = item.id.trim().split(","); + const styles4 = item.styleClass.split(","); + for (const id30 of ids) { + let state3 = this.getState(id30); + if (!state3) { + const trimmedId = id30.trim(); + this.addState(trimmedId); + state3 = this.getState(trimmedId); + } + if (state3) { + state3.styles = styles4.map((s2) => s2.replace(/;/g, "")?.trim()); + } + } + } + setRootDoc(o2) { + log.info("Setting root doc", o2); + this.rootDoc = o2; + if (this.version === 1) { + this.extract(o2); + } else { + this.extract(this.getRootDocV2()); + } + } + docTranslator(parent4, node2, first3) { + if (node2.stmt === STMT_RELATION) { + this.docTranslator(parent4, node2.state1, true); + this.docTranslator(parent4, node2.state2, false); + return; + } + if (node2.stmt === STMT_STATE) { + if (node2.id === CONSTANTS.START_NODE) { + node2.id = parent4.id + (first3 ? "_start" : "_end"); + node2.start = first3; + } else { + node2.id = node2.id.trim(); + } + } + if (node2.stmt !== STMT_ROOT && node2.stmt !== STMT_STATE || !node2.doc) { + return; + } + const doc = []; + let currentDoc = []; + for (const stmt of node2.doc) { + if (stmt.type === DIVIDER_TYPE) { + const newNode = clone5(stmt); + newNode.doc = clone5(currentDoc); + doc.push(newNode); + currentDoc = []; + } else { + currentDoc.push(stmt); + } + } + if (doc.length > 0 && currentDoc.length > 0) { + const newNode = { + stmt: STMT_STATE, + id: generateId(), + type: "divider", + doc: clone5(currentDoc) + }; + doc.push(clone5(newNode)); + node2.doc = doc; + } + node2.doc.forEach((docNode) => this.docTranslator(node2, docNode, true)); + } + getRootDocV2() { + this.docTranslator( + { id: STMT_ROOT, stmt: STMT_ROOT }, + { id: STMT_ROOT, stmt: STMT_ROOT, doc: this.rootDoc }, + true + ); + return { id: STMT_ROOT, doc: this.rootDoc }; + } + /** + * Function called by parser when a node definition has been found. + * + * @param descr - description for the state. Can be a string or a list or strings + * @param classes - class styles to apply to this state. Can be a string (1 style) or an array of styles. If it's just 1 class, convert it to an array of that 1 class. + * @param styles - styles to apply to this state. Can be a string (1 style) or an array of styles. If it's just 1 style, convert it to an array of that 1 style. + * @param textStyles - text styles to apply to this state. Can be a string (1 text test) or an array of text styles. If it's just 1 text style, convert it to an array of that 1 text style. + */ + addState(id30, type3 = DEFAULT_STATE_TYPE, doc = void 0, descr = void 0, note3 = void 0, classes3 = void 0, styles4 = void 0, textStyles = void 0) { + const trimmedId = id30?.trim(); + if (!this.currentDocument.states.has(trimmedId)) { + log.info("Adding state ", trimmedId, descr); + this.currentDocument.states.set(trimmedId, { + stmt: STMT_STATE, + id: trimmedId, + descriptions: [], + type: type3, + doc, + note: note3, + classes: [], + styles: [], + textStyles: [] + }); + } else { + const state3 = this.currentDocument.states.get(trimmedId); + if (!state3) { + throw new Error(`State not found: ${trimmedId}`); + } + if (!state3.doc) { + state3.doc = doc; + } + if (!state3.type) { + state3.type = type3; + } + } + if (descr) { + log.info("Setting state description", trimmedId, descr); + const descriptions = Array.isArray(descr) ? descr : [descr]; + descriptions.forEach((des) => this.addDescription(trimmedId, des.trim())); + } + if (note3) { + const doc2 = this.currentDocument.states.get(trimmedId); + if (!doc2) { + throw new Error(`State not found: ${trimmedId}`); + } + doc2.note = note3; + doc2.note.text = common_default.sanitizeText(doc2.note.text, getConfig2()); + } + if (classes3) { + log.info("Setting state classes", trimmedId, classes3); + const classesList = Array.isArray(classes3) ? classes3 : [classes3]; + classesList.forEach((cssClass) => this.setCssClass(trimmedId, cssClass.trim())); + } + if (styles4) { + log.info("Setting state styles", trimmedId, styles4); + const stylesList = Array.isArray(styles4) ? styles4 : [styles4]; + stylesList.forEach((style3) => this.setStyle(trimmedId, style3.trim())); + } + if (textStyles) { + log.info("Setting state styles", trimmedId, styles4); + const textStylesList = Array.isArray(textStyles) ? textStyles : [textStyles]; + textStylesList.forEach((textStyle) => this.setTextStyle(trimmedId, textStyle.trim())); + } + } + clear(saveCommon) { + this.nodes = []; + this.edges = []; + this.documents = { root: newDoc() }; + this.currentDocument = this.documents.root; + this.startEndCount = 0; + this.classes = newClassesList(); + if (!saveCommon) { + this.links = /* @__PURE__ */ new Map(); + clear(); + } + } + getState(id30) { + return this.currentDocument.states.get(id30); + } + getStates() { + return this.currentDocument.states; + } + logDocuments() { + log.info("Documents = ", this.documents); + } + getRelations() { + return this.currentDocument.relations; + } + /** + * Adds a clickable link to a state. + */ + addLink(stateId, url, tooltip) { + this.links.set(stateId, { url, tooltip }); + log.warn("Adding link", stateId, url, tooltip); + } + /** + * Get all registered links. + */ + getLinks() { + return this.links; + } + /** + * If the id is a start node ( [*] ), then return a new id constructed from + * the start node name and the current start node count. + * else return the given id + */ + startIdIfNeeded(id30 = "") { + if (id30 === CONSTANTS.START_NODE) { + this.startEndCount++; + return `${CONSTANTS.START_TYPE}${this.startEndCount}`; + } + return id30; + } + /** + * If the id is a start node ( [*] ), then return the start type ('start') + * else return the given type + */ + startTypeIfNeeded(id30 = "", type3 = DEFAULT_STATE_TYPE) { + return id30 === CONSTANTS.START_NODE ? CONSTANTS.START_TYPE : type3; + } + /** + * If the id is an end node ( [*] ), then return a new id constructed from + * the end node name and the current start_end node count. + * else return the given id + */ + endIdIfNeeded(id30 = "") { + if (id30 === CONSTANTS.END_NODE) { + this.startEndCount++; + return `${CONSTANTS.END_TYPE}${this.startEndCount}`; + } + return id30; + } + /** + * If the id is an end node ( [*] ), then return the end type + * else return the given type + * + */ + endTypeIfNeeded(id30 = "", type3 = DEFAULT_STATE_TYPE) { + return id30 === CONSTANTS.END_NODE ? CONSTANTS.END_TYPE : type3; + } + addRelationObjs(item1, item2, relationTitle = "") { + const id1 = this.startIdIfNeeded(item1.id.trim()); + const type1 = this.startTypeIfNeeded(item1.id.trim(), item1.type); + const id210 = this.startIdIfNeeded(item2.id.trim()); + const type22 = this.startTypeIfNeeded(item2.id.trim(), item2.type); + this.addState( + id1, + type1, + item1.doc, + item1.description, + item1.note, + item1.classes, + item1.styles, + item1.textStyles + ); + this.addState( + id210, + type22, + item2.doc, + item2.description, + item2.note, + item2.classes, + item2.styles, + item2.textStyles + ); + this.currentDocument.relations.push({ + id1, + id2: id210, + relationTitle: common_default.sanitizeText(relationTitle, getConfig2()) + }); + } + /** + * Add a relation between two items. The items may be full objects or just the string id of a state. + */ + addRelation(item1, item2, title2) { + if (typeof item1 === "object" && typeof item2 === "object") { + this.addRelationObjs(item1, item2, title2); + } else if (typeof item1 === "string" && typeof item2 === "string") { + const id1 = this.startIdIfNeeded(item1.trim()); + const type1 = this.startTypeIfNeeded(item1); + const id210 = this.endIdIfNeeded(item2.trim()); + const type22 = this.endTypeIfNeeded(item2); + this.addState(id1, type1); + this.addState(id210, type22); + this.currentDocument.relations.push({ + id1, + id2: id210, + relationTitle: title2 ? common_default.sanitizeText(title2, getConfig2()) : void 0 + }); + } + } + addDescription(id30, descr) { + const theState = this.currentDocument.states.get(id30); + const _descr = descr.startsWith(":") ? descr.replace(":", "").trim() : descr; + theState?.descriptions?.push(common_default.sanitizeText(_descr, getConfig2())); + } + cleanupLabel(label) { + return label.startsWith(":") ? label.slice(2).trim() : label.trim(); + } + getDividerId() { + this.dividerCnt++; + return `divider-id-${this.dividerCnt}`; + } + /** + * Called when the parser comes across a (style) class definition + * @example classDef my-style fill:#f96; + * + * @param id - the id of this (style) class + * @param styleAttributes - the string with 1 or more style attributes (each separated by a comma) + */ + addStyleClass(id30, styleAttributes = "") { + if (!this.classes.has(id30)) { + this.classes.set(id30, { id: id30, styles: [], textStyles: [] }); + } + const foundClass = this.classes.get(id30); + if (styleAttributes && foundClass) { + styleAttributes.split(CONSTANTS.STYLECLASS_SEP).forEach((attrib) => { + const fixedAttrib = attrib.replace(/([^;]*);/, "$1").trim(); + if (RegExp(CONSTANTS.COLOR_KEYWORD).exec(attrib)) { + const newStyle1 = fixedAttrib.replace(CONSTANTS.FILL_KEYWORD, CONSTANTS.BG_FILL); + const newStyle2 = newStyle1.replace(CONSTANTS.COLOR_KEYWORD, CONSTANTS.FILL_KEYWORD); + foundClass.textStyles.push(newStyle2); + } + foundClass.styles.push(fixedAttrib); + }); + } + } + getClasses() { + return this.classes; + } + /** + * Add a (style) class or css class to a state with the given id. + * If the state isn't already in the list of known states, add it. + * Might be called by parser when a style class or CSS class should be applied to a state + * + * @param itemIds - The id or a list of ids of the item(s) to apply the css class to + * @param cssClassName - CSS class name + */ + setCssClass(itemIds, cssClassName) { + itemIds.split(",").forEach((id30) => { + let foundState = this.getState(id30); + if (!foundState) { + const trimmedId = id30.trim(); + this.addState(trimmedId); + foundState = this.getState(trimmedId); + } + foundState?.classes?.push(cssClassName); + }); + } + /** + * Add a style to a state with the given id. + * @example style stateId fill:#f9f,stroke:#333,stroke-width:4px + * where 'style' is the keyword + * stateId is the id of a state + * the rest of the string is the styleText (all of the attributes to be applied to the state) + * + * @param itemId - The id of item to apply the style to + * @param styleText - the text of the attributes for the style + */ + setStyle(itemId, styleText) { + this.getState(itemId)?.styles?.push(styleText); + } + /** + * Add a text style to a state with the given id + * + * @param itemId - The id of item to apply the css class to + * @param cssClassName - CSS class name + */ + setTextStyle(itemId, cssClassName) { + this.getState(itemId)?.textStyles?.push(cssClassName); + } + /** + * Finds the direction statement in the root document. + * @returns the direction statement if present + */ + getDirectionStatement() { + return this.rootDoc.find((doc) => doc.stmt === STMT_DIRECTION); + } + getDirection() { + return this.getDirectionStatement()?.value ?? DEFAULT_DIAGRAM_DIRECTION; + } + setDirection(dir2) { + const doc = this.getDirectionStatement(); + if (doc) { + doc.value = dir2; + } else { + this.rootDoc.unshift({ stmt: STMT_DIRECTION, value: dir2 }); + } + } + trimColon(str2) { + return str2.startsWith(":") ? str2.slice(1).trim() : str2.trim(); + } + getData() { + const config5 = getConfig2(); + return { + nodes: this.nodes, + edges: this.edges, + other: {}, + config: config5, + direction: getDir3(this.getRootDocV2()) + }; + } + getConfig() { + return getConfig2().state; + } + }; + } + }); + + // src/diagrams/state/styles.js + var getStyles11, styles_default10; + var init_styles10 = __esm({ + "src/diagrams/state/styles.js"() { + "use strict"; + getStyles11 = /* @__PURE__ */ __name((options2) => ` +defs #statediagram-barbEnd { + fill: ${options2.transitionColor}; + stroke: ${options2.transitionColor}; + } +g.stateGroup text { + fill: ${options2.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${options2.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${options2.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${options2.mainBkg}; + stroke: ${options2.nodeBorder}; +} + +g.stateGroup line { + stroke: ${options2.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${options2.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${options2.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${options2.noteBorderColor}; + fill: ${options2.noteBkgColor}; + + text { + fill: ${options2.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${options2.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${options2.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel { + background-color: ${options2.edgeLabelBackground}; + p { + background-color: ${options2.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${options2.edgeLabelBackground}; + fill: ${options2.edgeLabelBackground}; + } + text-align: center; +} +.edgeLabel .label text { + fill: ${options2.transitionLabelColor || options2.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${options2.transitionLabelColor || options2.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${options2.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${options2.specialStateColor}; + stroke: ${options2.specialStateColor}; +} + +.node .fork-join { + fill: ${options2.specialStateColor}; + stroke: ${options2.specialStateColor}; +} + +.node circle.state-end { + fill: ${options2.innerEndBackground}; + stroke: ${options2.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${options2.compositeBackground || options2.background}; + // stroke: ${options2.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${options2.stateBkg || options2.mainBkg}; + stroke: ${options2.stateBorder || options2.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${options2.mainBkg}; + stroke: ${options2.stateBorder || options2.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${options2.lineColor}; +} + +.statediagram-cluster rect { + fill: ${options2.compositeTitleBackground}; + stroke: ${options2.stateBorder || options2.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${options2.stateLabelColor}; + // line-height: 1; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${options2.stateBorder || options2.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${options2.compositeBackground || options2.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${options2.altBackground ? options2.altBackground : "#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${options2.altBackground ? options2.altBackground : "#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${options2.noteBkgColor}; + stroke: ${options2.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${options2.noteBkgColor}; + stroke: ${options2.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${options2.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${options2.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${options2.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${options2.lineColor}; + stroke: ${options2.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${options2.textColor}; +} +`, "getStyles"); + styles_default10 = getStyles11; + } + }); + + // src/diagrams/state/shapes.js + var drawStartState, drawDivider, drawSimpleState, drawDescrState, addTitleAndBox, drawEndState, drawForkJoinState, _drawLongText, drawNote2, drawState, edgeCount, drawEdge; + var init_shapes2 = __esm({ + "src/diagrams/state/shapes.js"() { + "use strict"; + init_src32(); + init_stateDb(); + init_utils2(); + init_common(); + init_diagramAPI(); + init_logger(); + drawStartState = /* @__PURE__ */ __name((g2) => g2.append("circle").attr("class", "start-state").attr("r", getConfig2().state.sizeUnit).attr("cx", getConfig2().state.padding + getConfig2().state.sizeUnit).attr("cy", getConfig2().state.padding + getConfig2().state.sizeUnit), "drawStartState"); + drawDivider = /* @__PURE__ */ __name((g2) => g2.append("line").style("stroke", "grey").style("stroke-dasharray", "3").attr("x1", getConfig2().state.textHeight).attr("class", "divider").attr("x2", getConfig2().state.textHeight * 2).attr("y1", 0).attr("y2", 0), "drawDivider"); + drawSimpleState = /* @__PURE__ */ __name((g2, stateDef) => { + const state3 = g2.append("text").attr("x", 2 * getConfig2().state.padding).attr("y", getConfig2().state.textHeight + 2 * getConfig2().state.padding).attr("font-size", getConfig2().state.fontSize).attr("class", "state-title").text(stateDef.id); + const classBox2 = state3.node().getBBox(); + g2.insert("rect", ":first-child").attr("x", getConfig2().state.padding).attr("y", getConfig2().state.padding).attr("width", classBox2.width + 2 * getConfig2().state.padding).attr("height", classBox2.height + 2 * getConfig2().state.padding).attr("rx", getConfig2().state.radius); + return state3; + }, "drawSimpleState"); + drawDescrState = /* @__PURE__ */ __name((g2, stateDef) => { + const addTspan = /* @__PURE__ */ __name(function(textEl, txt, isFirst2) { + const tSpan = textEl.append("tspan").attr("x", 2 * getConfig2().state.padding).text(txt); + if (!isFirst2) { + tSpan.attr("dy", getConfig2().state.textHeight); + } + }, "addTspan"); + const title2 = g2.append("text").attr("x", 2 * getConfig2().state.padding).attr("y", getConfig2().state.textHeight + 1.3 * getConfig2().state.padding).attr("font-size", getConfig2().state.fontSize).attr("class", "state-title").text(stateDef.descriptions[0]); + const titleBox = title2.node().getBBox(); + const titleHeight = titleBox.height; + const description = g2.append("text").attr("x", getConfig2().state.padding).attr( + "y", + titleHeight + getConfig2().state.padding * 0.4 + getConfig2().state.dividerMargin + getConfig2().state.textHeight + ).attr("class", "state-description"); + let isFirst = true; + let isSecond = true; + stateDef.descriptions.forEach(function(descr) { + if (!isFirst) { + addTspan(description, descr, isSecond); + isSecond = false; + } + isFirst = false; + }); + const descrLine = g2.append("line").attr("x1", getConfig2().state.padding).attr("y1", getConfig2().state.padding + titleHeight + getConfig2().state.dividerMargin / 2).attr("y2", getConfig2().state.padding + titleHeight + getConfig2().state.dividerMargin / 2).attr("class", "descr-divider"); + const descrBox = description.node().getBBox(); + const width3 = Math.max(descrBox.width, titleBox.width); + descrLine.attr("x2", width3 + 3 * getConfig2().state.padding); + g2.insert("rect", ":first-child").attr("x", getConfig2().state.padding).attr("y", getConfig2().state.padding).attr("width", width3 + 2 * getConfig2().state.padding).attr("height", descrBox.height + titleHeight + 2 * getConfig2().state.padding).attr("rx", getConfig2().state.radius); + return g2; + }, "drawDescrState"); + addTitleAndBox = /* @__PURE__ */ __name((g2, stateDef, altBkg) => { + const pad3 = getConfig2().state.padding; + const dblPad = 2 * getConfig2().state.padding; + const orgBox = g2.node().getBBox(); + const orgWidth = orgBox.width; + const orgX = orgBox.x; + const title2 = g2.append("text").attr("x", 0).attr("y", getConfig2().state.titleShift).attr("font-size", getConfig2().state.fontSize).attr("class", "state-title").text(stateDef.id); + const titleBox = title2.node().getBBox(); + const titleWidth = titleBox.width + dblPad; + let width3 = Math.max(titleWidth, orgWidth); + if (width3 === orgWidth) { + width3 = width3 + dblPad; + } + let startX2; + const graphBox = g2.node().getBBox(); + if (stateDef.doc) { + } + startX2 = orgX - pad3; + if (titleWidth > orgWidth) { + startX2 = (orgWidth - width3) / 2 + pad3; + } + if (Math.abs(orgX - graphBox.x) < pad3 && titleWidth > orgWidth) { + startX2 = orgX - (titleWidth - orgWidth) / 2; + } + const lineY = 1 - getConfig2().state.textHeight; + g2.insert("rect", ":first-child").attr("x", startX2).attr("y", lineY).attr("class", altBkg ? "alt-composit" : "composit").attr("width", width3).attr( + "height", + graphBox.height + getConfig2().state.textHeight + getConfig2().state.titleShift + 1 + ).attr("rx", "0"); + title2.attr("x", startX2 + pad3); + if (titleWidth <= orgWidth) { + title2.attr("x", orgX + (width3 - dblPad) / 2 - titleWidth / 2 + pad3); + } + g2.insert("rect", ":first-child").attr("x", startX2).attr( + "y", + getConfig2().state.titleShift - getConfig2().state.textHeight - getConfig2().state.padding + ).attr("width", width3).attr("height", getConfig2().state.textHeight * 3).attr("rx", getConfig2().state.radius); + g2.insert("rect", ":first-child").attr("x", startX2).attr( + "y", + getConfig2().state.titleShift - getConfig2().state.textHeight - getConfig2().state.padding + ).attr("width", width3).attr("height", graphBox.height + 3 + 2 * getConfig2().state.textHeight).attr("rx", getConfig2().state.radius); + return g2; + }, "addTitleAndBox"); + drawEndState = /* @__PURE__ */ __name((g2) => { + g2.append("circle").attr("class", "end-state-outer").attr("r", getConfig2().state.sizeUnit + getConfig2().state.miniPadding).attr( + "cx", + getConfig2().state.padding + getConfig2().state.sizeUnit + getConfig2().state.miniPadding + ).attr( + "cy", + getConfig2().state.padding + getConfig2().state.sizeUnit + getConfig2().state.miniPadding + ); + return g2.append("circle").attr("class", "end-state-inner").attr("r", getConfig2().state.sizeUnit).attr("cx", getConfig2().state.padding + getConfig2().state.sizeUnit + 2).attr("cy", getConfig2().state.padding + getConfig2().state.sizeUnit + 2); + }, "drawEndState"); + drawForkJoinState = /* @__PURE__ */ __name((g2, stateDef) => { + let width3 = getConfig2().state.forkWidth; + let height2 = getConfig2().state.forkHeight; + if (stateDef.parentId) { + let tmp = width3; + width3 = height2; + height2 = tmp; + } + return g2.append("rect").style("stroke", "black").style("fill", "black").attr("width", width3).attr("height", height2).attr("x", getConfig2().state.padding).attr("y", getConfig2().state.padding); + }, "drawForkJoinState"); + _drawLongText = /* @__PURE__ */ __name((_text, x5, y6, g2) => { + let textHeight = 0; + const textElem = g2.append("text"); + textElem.style("text-anchor", "start"); + textElem.attr("class", "noteText"); + let text4 = _text.replace(/\r\n/g, "
    "); + text4 = text4.replace(/\n/g, "
    "); + const lines = text4.split(common_default.lineBreakRegex); + let tHeight = 1.25 * getConfig2().state.noteMargin; + for (const line2 of lines) { + const txt = line2.trim(); + if (txt.length > 0) { + const span = textElem.append("tspan"); + span.text(txt); + if (tHeight === 0) { + const textBounds = span.node().getBBox(); + tHeight += textBounds.height; } - /******/ - ]) + textHeight += tHeight; + span.attr("x", x5 + getConfig2().state.noteMargin); + span.attr("y", y6 + textHeight + 1.25 * getConfig2().state.noteMargin); + } + } + return { textWidth: textElem.node().getBBox().width, textHeight }; + }, "_drawLongText"); + drawNote2 = /* @__PURE__ */ __name((text4, g2) => { + g2.attr("class", "state-note"); + const note3 = g2.append("rect").attr("x", 0).attr("y", getConfig2().state.padding); + const rectElem = g2.append("g"); + const { textWidth, textHeight } = _drawLongText(text4, 0, 0, rectElem); + note3.attr("height", textHeight + 2 * getConfig2().state.noteMargin); + note3.attr("width", textWidth + getConfig2().state.noteMargin * 2); + return note3; + }, "drawNote"); + drawState = /* @__PURE__ */ __name(function(elem, stateDef) { + const id30 = stateDef.id; + const stateInfo = { + id: id30, + label: stateDef.id, + width: 0, + height: 0 + }; + const g2 = elem.append("g").attr("id", id30).attr("class", "stateGroup"); + if (stateDef.type === "start") { + drawStartState(g2); + } + if (stateDef.type === "end") { + drawEndState(g2); + } + if (stateDef.type === "fork" || stateDef.type === "join") { + drawForkJoinState(g2, stateDef); + } + if (stateDef.type === "note") { + drawNote2(stateDef.note.text, g2); + } + if (stateDef.type === "divider") { + drawDivider(g2); + } + if (stateDef.type === "default" && stateDef.descriptions.length === 0) { + drawSimpleState(g2, stateDef); + } + if (stateDef.type === "default" && stateDef.descriptions.length > 0) { + drawDescrState(g2, stateDef); + } + const stateBox = g2.node().getBBox(); + stateInfo.width = stateBox.width + 2 * getConfig2().state.padding; + stateInfo.height = stateBox.height + 2 * getConfig2().state.padding; + return stateInfo; + }, "drawState"); + edgeCount = 0; + drawEdge = /* @__PURE__ */ __name(function(elem, path4, relation) { + const getRelationType = /* @__PURE__ */ __name(function(type3) { + switch (type3) { + case StateDB.relationType.AGGREGATION: + return "aggregation"; + case StateDB.relationType.EXTENSION: + return "extension"; + case StateDB.relationType.COMPOSITION: + return "composition"; + case StateDB.relationType.DEPENDENCY: + return "dependency"; + } + }, "getRelationType"); + path4.points = path4.points.filter((p3) => !Number.isNaN(p3.y)); + const lineData = path4.points; + const lineFunction = line_default().x(function(d3) { + return d3.x; + }).y(function(d3) { + return d3.y; + }).curve(basis_default2); + const svgPath = elem.append("path").attr("d", lineFunction(lineData)).attr("id", "edge" + edgeCount).attr("class", "transition"); + let url = ""; + if (getConfig2().state.arrowMarkerAbsolute) { + url = getUrl(true); + } + svgPath.attr( + "marker-end", + "url(" + url + "#" + getRelationType(StateDB.relationType.DEPENDENCY) + "End)" ); - }); + if (relation.title !== void 0) { + const label = elem.append("g").attr("class", "stateLabel"); + const { x: x5, y: y6 } = utils_default2.calcLabelPosition(path4.points); + const rows = common_default.getRows(relation.title); + let titleHeight = 0; + const titleRows = []; + let maxWidth2 = 0; + let minX = 0; + for (let i2 = 0; i2 <= rows.length; i2++) { + const title2 = label.append("text").attr("text-anchor", "middle").text(rows[i2]).attr("x", x5).attr("y", y6 + titleHeight); + const boundsTmp = title2.node().getBBox(); + maxWidth2 = Math.max(maxWidth2, boundsTmp.width); + minX = Math.min(minX, boundsTmp.x); + log.info(boundsTmp.x, x5, y6 + titleHeight); + if (titleHeight === 0) { + const titleBox = title2.node().getBBox(); + titleHeight = titleBox.height; + log.info("Title height", titleHeight, y6); + } + titleRows.push(title2); + } + let boxHeight = titleHeight * rows.length; + if (rows.length > 1) { + const heightAdj = (rows.length - 1) * titleHeight * 0.5; + titleRows.forEach((title2, i2) => title2.attr("y", y6 + i2 * titleHeight - heightAdj)); + boxHeight = titleHeight * rows.length; + } + const bounds4 = label.node().getBBox(); + label.insert("rect", ":first-child").attr("class", "box").attr("x", x5 - maxWidth2 / 2 - getConfig2().state.padding / 2).attr("y", y6 - boxHeight / 2 - getConfig2().state.padding / 2 - 3.5).attr("width", maxWidth2 + getConfig2().state.padding).attr("height", boxHeight + getConfig2().state.padding); + log.info(bounds4); + } + edgeCount++; + }, "drawEdge"); } }); - // ../../node_modules/.pnpm/cose-base@1.0.3/node_modules/cose-base/cose-base.js - var require_cose_base = __commonJS({ - "../../node_modules/.pnpm/cose-base@1.0.3/node_modules/cose-base/cose-base.js"(exports2, module2) { + // src/diagrams/state/stateRenderer.js + var conf3, transformationLog, setConf4, insertMarkers2, draw14, getLabelWidth, renderDoc, stateRenderer_default; + var init_stateRenderer = __esm({ + "src/diagrams/state/stateRenderer.js"() { "use strict"; - (/* @__PURE__ */ __name(function webpackUniversalModuleDefinition(root4, factory) { - if (typeof exports2 === "object" && typeof module2 === "object") - module2.exports = factory(require_layout_base()); - else if (typeof define === "function" && define.amd) - define(["layout-base"], factory); - else if (typeof exports2 === "object") - exports2["coseBase"] = factory(require_layout_base()); - else - root4["coseBase"] = factory(root4["layoutBase"]); - }, "webpackUniversalModuleDefinition"))(exports2, function(__WEBPACK_EXTERNAL_MODULE_0__) { - return ( - /******/ - function(modules2) { - var installedModules = {}; - function __webpack_require__(moduleId) { - if (installedModules[moduleId]) { - return installedModules[moduleId].exports; - } - var module3 = installedModules[moduleId] = { - /******/ - i: moduleId, - /******/ - l: false, - /******/ - exports: {} - /******/ - }; - modules2[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); - module3.l = true; - return module3.exports; + init_src32(); + init_dagre(); + init_graphlib(); + init_logger(); + init_common(); + init_shapes2(); + init_diagramAPI(); + init_setupGraphViewbox(); + transformationLog = {}; + setConf4 = /* @__PURE__ */ __name(function() { + }, "setConf"); + insertMarkers2 = /* @__PURE__ */ __name(function(elem) { + elem.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z"); + }, "insertMarkers"); + draw14 = /* @__PURE__ */ __name(function(text4, id30, _version, diagObj) { + conf3 = getConfig2().state; + const securityLevel = getConfig2().securityLevel; + let sandboxElement; + if (securityLevel === "sandbox") { + sandboxElement = select_default2("#i" + id30); + } + const root3 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); + const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document; + log.debug("Rendering diagram " + text4); + const diagram27 = root3.select(`[id='${id30}']`); + insertMarkers2(diagram27); + const rootDoc = diagObj.db.getRootDoc(); + renderDoc(rootDoc, diagram27, void 0, false, root3, doc, diagObj); + const padding2 = conf3.padding; + const bounds4 = diagram27.node().getBBox(); + const width3 = bounds4.width + padding2 * 2; + const height2 = bounds4.height + padding2 * 2; + const svgWidth = width3 * 1.75; + configureSvgSize(diagram27, height2, svgWidth, conf3.useMaxWidth); + diagram27.attr( + "viewBox", + `${bounds4.x - conf3.padding} ${bounds4.y - conf3.padding} ` + width3 + " " + height2 + ); + }, "draw"); + getLabelWidth = /* @__PURE__ */ __name((text4) => { + return text4 ? text4.length * conf3.fontSizeFactor : 1; + }, "getLabelWidth"); + renderDoc = /* @__PURE__ */ __name((doc, diagram27, parentId, altBkg, root3, domDocument, diagObj) => { + const graph = new Graph({ + compound: true, + multigraph: true + }); + let i2; + let edgeFreeDoc = true; + for (i2 = 0; i2 < doc.length; i2++) { + if (doc[i2].stmt === "relation") { + edgeFreeDoc = false; + break; + } + } + if (parentId) { + graph.setGraph({ + rankdir: "LR", + multigraph: true, + compound: true, + // acyclicer: 'greedy', + ranker: "tight-tree", + ranksep: edgeFreeDoc ? 1 : conf3.edgeLengthFactor, + nodeSep: edgeFreeDoc ? 1 : 50, + isMultiGraph: true + // ranksep: 5, + // nodesep: 1 + }); + } else { + graph.setGraph({ + rankdir: "TB", + multigraph: true, + compound: true, + // isCompound: true, + // acyclicer: 'greedy', + // ranker: 'longest-path' + ranksep: edgeFreeDoc ? 1 : conf3.edgeLengthFactor, + nodeSep: edgeFreeDoc ? 1 : 50, + ranker: "tight-tree", + // ranker: 'network-simplex' + isMultiGraph: true + }); + } + graph.setDefaultEdgeLabel(function() { + return {}; + }); + const states = diagObj.db.getStates(); + const relations = diagObj.db.getRelations(); + const keys2 = Object.keys(states); + let first3 = true; + for (const key of keys2) { + const stateDef = states[key]; + if (parentId) { + stateDef.parentId = parentId; + } + let node2; + if (stateDef.doc) { + let sub2 = diagram27.append("g").attr("id", stateDef.id).attr("class", "stateGroup"); + node2 = renderDoc(stateDef.doc, sub2, stateDef.id, !altBkg, root3, domDocument, diagObj); + if (first3) { + sub2 = addTitleAndBox(sub2, stateDef, altBkg); + let boxBounds = sub2.node().getBBox(); + node2.width = boxBounds.width; + node2.height = boxBounds.height + conf3.padding / 2; + transformationLog[stateDef.id] = { y: conf3.compositTitleSize }; + } else { + let boxBounds = sub2.node().getBBox(); + node2.width = boxBounds.width; + node2.height = boxBounds.height; } - __name(__webpack_require__, "__webpack_require__"); - __webpack_require__.m = modules2; - __webpack_require__.c = installedModules; - __webpack_require__.i = function(value2) { - return value2; - }; - __webpack_require__.d = function(exports3, name, getter) { - if (!__webpack_require__.o(exports3, name)) { - Object.defineProperty(exports3, name, { - /******/ - configurable: false, - /******/ - enumerable: true, - /******/ - get: getter - /******/ - }); - } - }; - __webpack_require__.n = function(module3) { - var getter = module3 && module3.__esModule ? ( - /******/ - /* @__PURE__ */ __name(function getDefault() { - return module3["default"]; - }, "getDefault") - ) : ( - /******/ - /* @__PURE__ */ __name(function getModuleExports() { - return module3; - }, "getModuleExports") - ); - __webpack_require__.d(getter, "a", getter); - return getter; - }; - __webpack_require__.o = function(object3, property2) { - return Object.prototype.hasOwnProperty.call(object3, property2); + } else { + node2 = drawState(diagram27, stateDef, graph); + } + if (stateDef.note) { + const noteDef = { + descriptions: [], + id: stateDef.id + "-note", + note: stateDef.note, + type: "note" }; - __webpack_require__.p = ""; - return __webpack_require__(__webpack_require__.s = 7); - }([ - /* 0 */ - /***/ - function(module3, exports3) { - module3.exports = __WEBPACK_EXTERNAL_MODULE_0__; - }, - /* 1 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var FDLayoutConstants = __webpack_require__(0).FDLayoutConstants; - function CoSEConstants() { - } - __name(CoSEConstants, "CoSEConstants"); - for (var prop in FDLayoutConstants) { - CoSEConstants[prop] = FDLayoutConstants[prop]; - } - CoSEConstants.DEFAULT_USE_MULTI_LEVEL_SCALING = false; - CoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH; - CoSEConstants.DEFAULT_COMPONENT_SEPERATION = 60; - CoSEConstants.TILE = true; - CoSEConstants.TILING_PADDING_VERTICAL = 10; - CoSEConstants.TILING_PADDING_HORIZONTAL = 10; - CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false; - module3.exports = CoSEConstants; - }, - /* 2 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var FDLayoutEdge = __webpack_require__(0).FDLayoutEdge; - function CoSEEdge(source, target, vEdge) { - FDLayoutEdge.call(this, source, target, vEdge); - } - __name(CoSEEdge, "CoSEEdge"); - CoSEEdge.prototype = Object.create(FDLayoutEdge.prototype); - for (var prop in FDLayoutEdge) { - CoSEEdge[prop] = FDLayoutEdge[prop]; - } - module3.exports = CoSEEdge; - }, - /* 3 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var LGraph = __webpack_require__(0).LGraph; - function CoSEGraph(parent4, graphMgr, vGraph) { - LGraph.call(this, parent4, graphMgr, vGraph); - } - __name(CoSEGraph, "CoSEGraph"); - CoSEGraph.prototype = Object.create(LGraph.prototype); - for (var prop in LGraph) { - CoSEGraph[prop] = LGraph[prop]; - } - module3.exports = CoSEGraph; - }, - /* 4 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var LGraphManager = __webpack_require__(0).LGraphManager; - function CoSEGraphManager(layout6) { - LGraphManager.call(this, layout6); - } - __name(CoSEGraphManager, "CoSEGraphManager"); - CoSEGraphManager.prototype = Object.create(LGraphManager.prototype); - for (var prop in LGraphManager) { - CoSEGraphManager[prop] = LGraphManager[prop]; - } - module3.exports = CoSEGraphManager; + const note3 = drawState(diagram27, noteDef, graph); + if (stateDef.note.position === "left of") { + graph.setNode(node2.id + "-note", note3); + graph.setNode(node2.id, node2); + } else { + graph.setNode(node2.id, node2); + graph.setNode(node2.id + "-note", note3); + } + graph.setParent(node2.id, node2.id + "-group"); + graph.setParent(node2.id + "-note", node2.id + "-group"); + } else { + graph.setNode(node2.id, node2); + } + } + log.debug("Count=", graph.nodeCount(), graph); + let cnt4 = 0; + relations.forEach(function(relation) { + cnt4++; + log.debug("Setting edge", relation); + graph.setEdge( + relation.id1, + relation.id2, + { + relation, + width: getLabelWidth(relation.title), + height: conf3.labelHeight * common_default.getRows(relation.title).length, + labelpos: "c" }, - /* 5 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var FDLayoutNode = __webpack_require__(0).FDLayoutNode; - var IMath = __webpack_require__(0).IMath; - function CoSENode(gm, loc, size5, vNode) { - FDLayoutNode.call(this, gm, loc, size5, vNode); - } - __name(CoSENode, "CoSENode"); - CoSENode.prototype = Object.create(FDLayoutNode.prototype); - for (var prop in FDLayoutNode) { - CoSENode[prop] = FDLayoutNode[prop]; - } - CoSENode.prototype.move = function() { - var layout6 = this.graphManager.getLayout(); - this.displacementX = layout6.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren; - this.displacementY = layout6.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren; - if (Math.abs(this.displacementX) > layout6.coolingFactor * layout6.maxNodeDisplacement) { - this.displacementX = layout6.coolingFactor * layout6.maxNodeDisplacement * IMath.sign(this.displacementX); - } - if (Math.abs(this.displacementY) > layout6.coolingFactor * layout6.maxNodeDisplacement) { - this.displacementY = layout6.coolingFactor * layout6.maxNodeDisplacement * IMath.sign(this.displacementY); - } - if (this.child == null) { - this.moveBy(this.displacementX, this.displacementY); - } else if (this.child.getNodes().length == 0) { - this.moveBy(this.displacementX, this.displacementY); - } else { - this.propogateDisplacementToChildren(this.displacementX, this.displacementY); + "id" + cnt4 + ); + }); + layout(graph); + log.debug("Graph after layout", graph.nodes()); + const svgElem = diagram27.node(); + graph.nodes().forEach(function(v3) { + if (v3 !== void 0 && graph.node(v3) !== void 0) { + log.warn("Node " + v3 + ": " + JSON.stringify(graph.node(v3))); + root3.select("#" + svgElem.id + " #" + v3).attr( + "transform", + "translate(" + (graph.node(v3).x - graph.node(v3).width / 2) + "," + (graph.node(v3).y + (transformationLog[v3] ? transformationLog[v3].y : 0) - graph.node(v3).height / 2) + " )" + ); + root3.select("#" + svgElem.id + " #" + v3).attr("data-x-shift", graph.node(v3).x - graph.node(v3).width / 2); + const dividers = domDocument.querySelectorAll("#" + svgElem.id + " #" + v3 + " .divider"); + dividers.forEach((divider2) => { + const parent4 = divider2.parentElement; + let pWidth = 0; + let pShift = 0; + if (parent4) { + if (parent4.parentElement) { + pWidth = parent4.parentElement.getBBox().width; } - layout6.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY); - this.springForceX = 0; - this.springForceY = 0; - this.repulsionForceX = 0; - this.repulsionForceY = 0; - this.gravitationForceX = 0; - this.gravitationForceY = 0; - this.displacementX = 0; - this.displacementY = 0; - }; - CoSENode.prototype.propogateDisplacementToChildren = function(dX, dY) { - var nodes6 = this.getChild().getNodes(); - var node2; - for (var i2 = 0; i2 < nodes6.length; i2++) { - node2 = nodes6[i2]; - if (node2.getChild() == null) { - node2.moveBy(dX, dY); - node2.displacementX += dX; - node2.displacementY += dY; - } else { - node2.propogateDisplacementToChildren(dX, dY); - } + pShift = parseInt(parent4.getAttribute("data-x-shift"), 10); + if (Number.isNaN(pShift)) { + pShift = 0; } - }; - CoSENode.prototype.setPred1 = function(pred12) { - this.pred1 = pred12; - }; - CoSENode.prototype.getPred1 = function() { - return pred1; - }; - CoSENode.prototype.getPred2 = function() { - return pred2; - }; - CoSENode.prototype.setNext = function(next3) { - this.next = next3; - }; - CoSENode.prototype.getNext = function() { - return next; - }; - CoSENode.prototype.setProcessed = function(processed2) { - this.processed = processed2; - }; - CoSENode.prototype.isProcessed = function() { - return processed; - }; - module3.exports = CoSENode; - }, - /* 6 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var FDLayout = __webpack_require__(0).FDLayout; - var CoSEGraphManager = __webpack_require__(4); - var CoSEGraph = __webpack_require__(3); - var CoSENode = __webpack_require__(5); - var CoSEEdge = __webpack_require__(2); - var CoSEConstants = __webpack_require__(1); - var FDLayoutConstants = __webpack_require__(0).FDLayoutConstants; - var LayoutConstants = __webpack_require__(0).LayoutConstants; - var Point3 = __webpack_require__(0).Point; - var PointD = __webpack_require__(0).PointD; - var Layout2 = __webpack_require__(0).Layout; - var Integer = __webpack_require__(0).Integer; - var IGeometry = __webpack_require__(0).IGeometry; - var LGraph = __webpack_require__(0).LGraph; - var Transform2 = __webpack_require__(0).Transform; - function CoSELayout() { - FDLayout.call(this); - this.toBeTiled = {}; } - __name(CoSELayout, "CoSELayout"); - CoSELayout.prototype = Object.create(FDLayout.prototype); - for (var prop in FDLayout) { - CoSELayout[prop] = FDLayout[prop]; + divider2.setAttribute("x1", 0 - pShift + 8); + divider2.setAttribute("x2", pWidth - pShift - 8); + }); + } else { + log.debug("No Node " + v3 + ": " + JSON.stringify(graph.node(v3))); + } + }); + let stateBox = svgElem.getBBox(); + graph.edges().forEach(function(e3) { + if (e3 !== void 0 && graph.edge(e3) !== void 0) { + log.debug("Edge " + e3.v + " -> " + e3.w + ": " + JSON.stringify(graph.edge(e3))); + drawEdge(diagram27, graph.edge(e3), graph.edge(e3).relation); + } + }); + stateBox = svgElem.getBBox(); + const stateInfo = { + id: parentId ? parentId : "root", + label: parentId ? parentId : "root", + width: 0, + height: 0 + }; + stateInfo.width = stateBox.width + 2 * conf3.padding; + stateInfo.height = stateBox.height + 2 * conf3.padding; + log.debug("Doc rendered", stateInfo, graph); + return stateInfo; + }, "renderDoc"); + stateRenderer_default = { + setConf: setConf4, + draw: draw14 + }; + } + }); + + // src/diagrams/state/stateDiagram.ts + var stateDiagram_exports = {}; + __export(stateDiagram_exports, { + diagram: () => diagram14 + }); + var diagram14; + var init_stateDiagram2 = __esm({ + "src/diagrams/state/stateDiagram.ts"() { + "use strict"; + init_stateDiagram(); + init_stateDb(); + init_styles10(); + init_stateRenderer(); + diagram14 = { + parser: stateDiagram_default, + get db() { + return new StateDB(1); + }, + renderer: stateRenderer_default, + styles: styles_default10, + init: /* @__PURE__ */ __name((cnf) => { + if (!cnf.state) { + cnf.state = {}; + } + cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute; + }, "init") + }; + } + }); + + // src/diagrams/state/stateDiagram-v2.ts + var stateDiagram_v2_exports = {}; + __export(stateDiagram_v2_exports, { + diagram: () => diagram15 + }); + var diagram15; + var init_stateDiagram_v2 = __esm({ + "src/diagrams/state/stateDiagram-v2.ts"() { + "use strict"; + init_stateDiagram(); + init_stateDb(); + init_styles10(); + init_stateRenderer_v3_unified(); + diagram15 = { + parser: stateDiagram_default, + get db() { + return new StateDB(2); + }, + renderer: stateRenderer_v3_unified_default, + styles: styles_default10, + init: /* @__PURE__ */ __name((cnf) => { + if (!cnf.state) { + cnf.state = {}; + } + cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute; + }, "init") + }; + } + }); + + // src/diagrams/user-journey/parser/journey.jison + var parser14, journey_default; + var init_journey = __esm({ + "src/diagrams/user-journey/parser/journey.jison"() { + "use strict"; + parser14 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; + return o3; + }, "o"), $V0 = [6, 8, 10, 11, 12, 14, 16, 17, 18], $V1 = [1, 9], $V2 = [1, 10], $V3 = [1, 11], $V4 = [1, 12], $V5 = [1, 13], $V6 = [1, 14]; + var parser24 = { + trace: /* @__PURE__ */ __name(function trace() { + }, "trace"), + yy: {}, + symbols_: { "error": 2, "start": 3, "journey": 4, "document": 5, "EOF": 6, "line": 7, "SPACE": 8, "statement": 9, "NEWLINE": 10, "title": 11, "acc_title": 12, "acc_title_value": 13, "acc_descr": 14, "acc_descr_value": 15, "acc_descr_multiline_value": 16, "section": 17, "taskName": 18, "taskData": 19, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 4: "journey", 6: "EOF", 8: "SPACE", 10: "NEWLINE", 11: "title", 12: "acc_title", 13: "acc_title_value", 14: "acc_descr", 15: "acc_descr_value", 16: "acc_descr_multiline_value", 17: "section", 18: "taskName", 19: "taskData" }, + productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 2]], + performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 1: + return $$[$0 - 1]; + break; + case 2: + this.$ = []; + break; + case 3: + $$[$0 - 1].push($$[$0]); + this.$ = $$[$0 - 1]; + break; + case 4: + case 5: + this.$ = $$[$0]; + break; + case 6: + case 7: + this.$ = []; + break; + case 8: + yy.setDiagramTitle($$[$0].substr(6)); + this.$ = $$[$0].substr(6); + break; + case 9: + this.$ = $$[$0].trim(); + yy.setAccTitle(this.$); + break; + case 10: + case 11: + this.$ = $$[$0].trim(); + yy.setAccDescription(this.$); + break; + case 12: + yy.addSection($$[$0].substr(8)); + this.$ = $$[$0].substr(8); + break; + case 13: + yy.addTask($$[$0 - 1], $$[$0]); + this.$ = "task"; + break; + } + }, "anonymous"), + table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o2($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: $V6 }, o2($V0, [2, 7], { 1: [2, 1] }), o2($V0, [2, 3]), { 9: 15, 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: $V6 }, o2($V0, [2, 5]), o2($V0, [2, 6]), o2($V0, [2, 8]), { 13: [1, 16] }, { 15: [1, 17] }, o2($V0, [2, 11]), o2($V0, [2, 12]), { 19: [1, 18] }, o2($V0, [2, 4]), o2($V0, [2, 9]), o2($V0, [2, 10]), o2($V0, [2, 13])], + defaultActions: {}, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); + } else { + var error3 = new Error(str2); + error3.hash = hash; + throw error3; + } + }, "parseError"), + parse: /* @__PURE__ */ __name(function parse7(input) { + var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k2 in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { + sharedState.yy[k2] = this.yy[k2]; } - CoSELayout.prototype.newGraphManager = function() { - var gm = new CoSEGraphManager(this); - this.graphManager = gm; - return gm; - }; - CoSELayout.prototype.newGraph = function(vGraph) { - return new CoSEGraph(null, this.graphManager, vGraph); - }; - CoSELayout.prototype.newNode = function(vNode) { - return new CoSENode(this.graphManager, vNode); - }; - CoSELayout.prototype.newEdge = function(vEdge) { - return new CoSEEdge(null, null, vEdge); - }; - CoSELayout.prototype.initParameters = function() { - FDLayout.prototype.initParameters.call(this, arguments); - if (!this.isSubLayout) { - if (CoSEConstants.DEFAULT_EDGE_LENGTH < 10) { - this.idealEdgeLength = 10; - } else { - this.idealEdgeLength = CoSEConstants.DEFAULT_EDGE_LENGTH; - } - this.useSmartIdealEdgeLengthCalculation = CoSEConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION; - this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH; - this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH; - this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH; - this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH; - this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR; - this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR; - this.prunedNodesAll = []; - this.growTreeIterations = 0; - this.afterGrowthIterations = 0; - this.isTreeGrowing = false; - this.isGrowthFinished = false; - this.coolingCycle = 0; - this.maxCoolingCycle = this.maxIterations / FDLayoutConstants.CONVERGENCE_CHECK_PERIOD; - this.finalTemperature = FDLayoutConstants.CONVERGENCE_CHECK_PERIOD / this.maxIterations; - this.coolingAdjuster = 1; + } + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; + } + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n2) { + stack.length = stack.length - 2 * n2; + vstack.length = vstack.length - n2; + lstack.length = lstack.length - n2; + } + __name(popStack, "popStack"); + function lex() { + var token2; + token2 = tstack.pop() || lexer2.lex() || EOF2; + if (typeof token2 !== "number") { + if (token2 instanceof Array) { + tstack = token2; + token2 = tstack.pop(); } - }; - CoSELayout.prototype.layout = function() { - var createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; - if (createBendsAsNeeded) { - this.createBendpoints(); - this.graphManager.resetAllEdges(); + token2 = self2.symbols_[token2] || token2; + } + return token2; + } + __name(lex, "lex"); + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; + while (true) { + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); } - this.level = 0; - return this.classicLayout(); - }; - CoSELayout.prototype.classicLayout = function() { - this.nodesWithGravity = this.calculateNodesToApplyGravitationTo(); - this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity); - this.calcNoOfChildrenForAllNodes(); - this.graphManager.calcLowestCommonAncestors(); - this.graphManager.calcInclusionTreeDepths(); - this.graphManager.getRoot().calcEstimatedSize(); - this.calcIdealEdgeLengths(); - if (!this.incremental) { - var forest = this.getFlatForest(); - if (forest.length > 0) { - this.positionNodesRadially(forest); - } else { - this.reduceTrees(); - this.graphManager.resetAllNodesToApplyGravitation(); - var allNodes = new Set(this.getAllNodes()); - var intersection4 = this.nodesWithGravity.filter(function(x5) { - return allNodes.has(x5); - }); - this.graphManager.setAllNodesToApplyGravitation(intersection4); - this.positionNodesRandomly(); - } - } else { - if (CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL) { - this.reduceTrees(); - this.graphManager.resetAllNodesToApplyGravitation(); - var allNodes = new Set(this.getAllNodes()); - var intersection4 = this.nodesWithGravity.filter(function(x5) { - return allNodes.has(x5); - }); - this.graphManager.setAllNodesToApplyGravitation(intersection4); + action = table[state3] && table[state3][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p3 in table[state3]) { + if (this.terminals_[p3] && p3 > TERROR) { + expected.push("'" + this.terminals_[p3] + "'"); } } - this.initSpringEmbedder(); - this.runSpringEmbedder(); - return true; - }; - CoSELayout.prototype.tick = function() { - this.totalIterations++; - if (this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) { - if (this.prunedNodesAll.length > 0) { - this.isTreeGrowing = true; - } else { - return true; - } + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + } else { + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); } - if (this.totalIterations % FDLayoutConstants.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) { - if (this.isConverged()) { - if (this.prunedNodesAll.length > 0) { - this.isTreeGrowing = true; - } else { - return true; + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + if (recovering > 0) { + recovering--; } + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; } - this.coolingCycle++; - if (this.layoutQuality == 0) { - this.coolingAdjuster = this.coolingCycle; - } else if (this.layoutQuality == 1) { - this.coolingAdjuster = this.coolingCycle / 3; - } - this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature); - this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor)); - } - if (this.isTreeGrowing) { - if (this.growTreeIterations % 10 == 0) { - if (this.prunedNodesAll.length > 0) { - this.graphManager.updateBounds(); - this.updateGrid(); - this.growTree(this.prunedNodesAll); - this.graphManager.resetAllNodesToApplyGravitation(); - var allNodes = new Set(this.getAllNodes()); - var intersection4 = this.nodesWithGravity.filter(function(x5) { - return allNodes.has(x5); - }); - this.graphManager.setAllNodesToApplyGravitation(intersection4); - this.graphManager.updateBounds(); - this.updateGrid(); - this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; - } else { - this.isTreeGrowing = false; - this.isGrowthFinished = true; - } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; } - this.growTreeIterations++; - } - if (this.isGrowthFinished) { - if (this.isConverged()) { - return true; + r2 = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r2 !== "undefined") { + return r2; } - if (this.afterGrowthIterations % 10 == 0) { - this.graphManager.updateBounds(); - this.updateGrid(); + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); } - this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100); - this.afterGrowthIterations++; - } - var gridUpdateAllowed = !this.isTreeGrowing && !this.isGrowthFinished; - var forceToNodeSurroundingUpdate = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished; - this.totalDisplacement = 0; - this.graphManager.updateBounds(); - this.calcSpringForces(); - this.calcRepulsionForces(gridUpdateAllowed, forceToNodeSurroundingUpdate); - this.calcGravitationalForces(); - this.moveNodes(); - this.animate(); - return false; + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState2); + break; + case 3: + return true; + } + } + return true; + }, "parse") + }; + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { + EOF: 1, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str2, hash); + } else { + throw new Error(str2); + } + }, "parseError"), + // resets the lexer, sets new input + setInput: /* @__PURE__ */ __name(function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 }; - CoSELayout.prototype.getPositionsData = function() { - var allNodes = this.graphManager.getAllNodes(); - var pData = {}; - for (var i2 = 0; i2 < allNodes.length; i2++) { - var rect3 = allNodes[i2].rect; - var id29 = allNodes[i2].id; - pData[id29] = { - id: id29, - x: rect3.getCenterX(), - y: rect3.getCenterY(), - w: rect3.width, - h: rect3.height - }; - } - return pData; + if (this.options.ranges) { + this.yylloc.range = [0, 0]; + } + this.offset = 0; + return this; + }, "setInput"), + // consumes and returns one char from the input + input: /* @__PURE__ */ __name(function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } + this._input = this._input.slice(1); + return ch; + }, "input"), + // unshifts one char (or a string) into the input + unput: /* @__PURE__ */ __name(function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r2 = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len }; - CoSELayout.prototype.runSpringEmbedder = function() { - this.initialAnimationPeriod = 25; - this.animationPeriod = this.initialAnimationPeriod; - var layoutEnded = false; - if (FDLayoutConstants.ANIMATE === "during") { - this.emit("layoutstarted"); - } else { - while (!layoutEnded) { - layoutEnded = this.tick(); - } - this.graphManager.updateBounds(); + if (this.options.ranges) { + this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, "unput"), + // When called from action, caches matched text and appends it on next action + more: /* @__PURE__ */ __name(function() { + this._more = true; + return this; + }, "more"), + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: /* @__PURE__ */ __name(function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + return this; + }, "reject"), + // retain first n characters of the match + less: /* @__PURE__ */ __name(function(n2) { + this.unput(this.match.slice(n2)); + }, "less"), + // displays already matched input, i.e. for error messages + pastInput: /* @__PURE__ */ __name(function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, "pastInput"), + // displays upcoming input, i.e. for error messages + upcomingInput: /* @__PURE__ */ __name(function() { + var next3 = this.match; + if (next3.length < 20) { + next3 += this._input.substr(0, 20 - next3.length); + } + return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, "upcomingInput"), + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: /* @__PURE__ */ __name(function() { + var pre = this.pastInput(); + var c3 = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c3 + "^"; + }, "showPosition"), + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { + var token2, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); } + } + lines = match2[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length }; - CoSELayout.prototype.calculateNodesToApplyGravitationTo = function() { - var nodeList = []; - var graph; - var graphs = this.graphManager.getGraphs(); - var size5 = graphs.length; - var i2; - for (i2 = 0; i2 < size5; i2++) { - graph = graphs[i2]; - graph.updateConnected(); - if (!graph.isConnected) { - nodeList = nodeList.concat(graph.getNodes()); - } + this.yytext += match2[0]; + this.match += match2[0]; + this.matches = match2; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match2[0].length); + this.matched += match2[0]; + token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token2) { + return token2; + } else if (this._backtrack) { + for (var k2 in backup) { + this[k2] = backup[k2]; } - return nodeList; - }; - CoSELayout.prototype.createBendpoints = function() { - var edges3 = []; - edges3 = edges3.concat(this.graphManager.getAllEdges()); - var visited = /* @__PURE__ */ new Set(); - var i2; - for (i2 = 0; i2 < edges3.length; i2++) { - var edge = edges3[i2]; - if (!visited.has(edge)) { - var source = edge.getSource(); - var target = edge.getTarget(); - if (source == target) { - edge.getBendpoints().push(new PointD()); - edge.getBendpoints().push(new PointD()); - this.createDummyNodesForBendpoints(edge); - visited.add(edge); + return false; + } + return false; + }, "test_match"), + // return next match in input + next: /* @__PURE__ */ __name(function() { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + var token2, match2, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i2 = 0; i2 < rules.length; i2++) { + tempMatch = this._input.match(this.rules[rules[i2]]); + if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { + match2 = tempMatch; + index = i2; + if (this.options.backtrack_lexer) { + token2 = this.test_match(tempMatch, rules[i2]); + if (token2 !== false) { + return token2; + } else if (this._backtrack) { + match2 = false; + continue; } else { - var edgeList2 = []; - edgeList2 = edgeList2.concat(source.getEdgeListToNode(target)); - edgeList2 = edgeList2.concat(target.getEdgeListToNode(source)); - if (!visited.has(edgeList2[0])) { - if (edgeList2.length > 1) { - var k2; - for (k2 = 0; k2 < edgeList2.length; k2++) { - var multiEdge = edgeList2[k2]; - multiEdge.getBendpoints().push(new PointD()); - this.createDummyNodesForBendpoints(multiEdge); - } - } - edgeList2.forEach(function(edge2) { - visited.add(edge2); - }); - } + return false; } - } - if (visited.size == edges3.length) { + } else if (!this.options.flex) { break; } } - }; - CoSELayout.prototype.positionNodesRadially = function(forest) { - var currentStartingPoint = new Point3(0, 0); - var numberOfColumns = Math.ceil(Math.sqrt(forest.length)); - var height2 = 0; - var currentY = 0; - var currentX = 0; - var point8 = new PointD(0, 0); - for (var i2 = 0; i2 < forest.length; i2++) { - if (i2 % numberOfColumns == 0) { - currentX = 0; - currentY = height2; - if (i2 != 0) { - currentY += CoSEConstants.DEFAULT_COMPONENT_SEPERATION; - } - height2 = 0; - } - var tree = forest[i2]; - var centerNode = Layout2.findCenterOfTree(tree); - currentStartingPoint.x = currentX; - currentStartingPoint.y = currentY; - point8 = CoSELayout.radialLayout(tree, centerNode, currentStartingPoint); - if (point8.y > height2) { - height2 = Math.floor(point8.y); - } - currentX = Math.floor(point8.x + CoSEConstants.DEFAULT_COMPONENT_SEPERATION); - } - this.transform(new PointD(LayoutConstants.WORLD_CENTER_X - point8.x / 2, LayoutConstants.WORLD_CENTER_Y - point8.y / 2)); - }; - CoSELayout.radialLayout = function(tree, centerNode, startingPoint) { - var radialSep = Math.max(this.maxDiagonalInTree(tree), CoSEConstants.DEFAULT_RADIAL_SEPARATION); - CoSELayout.branchRadialLayout(centerNode, null, 0, 359, 0, radialSep); - var bounds4 = LGraph.calculateBounds(tree); - var transform8 = new Transform2(); - transform8.setDeviceOrgX(bounds4.getMinX()); - transform8.setDeviceOrgY(bounds4.getMinY()); - transform8.setWorldOrgX(startingPoint.x); - transform8.setWorldOrgY(startingPoint.y); - for (var i2 = 0; i2 < tree.length; i2++) { - var node2 = tree[i2]; - node2.transform(transform8); + } + if (match2) { + token2 = this.test_match(match2, rules[index]); + if (token2 !== false) { + return token2; } - var bottomRight = new PointD(bounds4.getMaxX(), bounds4.getMaxY()); - return transform8.inverseTransformPoint(bottomRight); - }; - CoSELayout.branchRadialLayout = function(node2, parentOfNode, startAngle, endAngle, distance2, radialSeparation) { - var halfInterval = (endAngle - startAngle + 1) / 2; - if (halfInterval < 0) { - halfInterval += 180; + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, "next"), + // return next match that has a token + lex: /* @__PURE__ */ __name(function lex() { + var r2 = this.next(); + if (r2) { + return r2; + } else { + return this.lex(); + } + }, "lex"), + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: /* @__PURE__ */ __name(function begin(condition) { + this.conditionStack.push(condition); + }, "begin"), + // pop the previously active lexer condition state off the condition stack + popState: /* @__PURE__ */ __name(function popState() { + var n2 = this.conditionStack.length - 1; + if (n2 > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, "popState"), + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: /* @__PURE__ */ __name(function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, "_currentRules"), + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: /* @__PURE__ */ __name(function topState(n2) { + n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); + if (n2 >= 0) { + return this.conditionStack[n2]; + } else { + return "INITIAL"; + } + }, "topState"), + // alias for begin(condition) + pushState: /* @__PURE__ */ __name(function pushState(condition) { + this.begin(condition); + }, "pushState"), + // return the number of states currently on the stack + stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { + return this.conditionStack.length; + }, "stateStackSize"), + options: { "case-insensitive": true }, + performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + var YYSTATE = YY_START; + switch ($avoiding_name_collisions) { + case 0: + break; + case 1: + break; + case 2: + return 10; + break; + case 3: + break; + case 4: + break; + case 5: + return 4; + break; + case 6: + return 11; + break; + case 7: + this.begin("acc_title"); + return 12; + break; + case 8: + this.popState(); + return "acc_title_value"; + break; + case 9: + this.begin("acc_descr"); + return 14; + break; + case 10: + this.popState(); + return "acc_descr_value"; + break; + case 11: + this.begin("acc_descr_multiline"); + break; + case 12: + this.popState(); + break; + case 13: + return "acc_descr_multiline_value"; + break; + case 14: + return 17; + break; + case 15: + return 18; + break; + case 16: + return 19; + break; + case 17: + return ":"; + break; + case 18: + return 6; + break; + case 19: + return "INVALID"; + break; + } + }, "anonymous"), + rules: [/^(?:%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:journey\b)/i, /^(?:title\s[^#\n;]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:section\s[^#:\n;]+)/i, /^(?:[^#:\n;]+)/i, /^(?::[^#\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i], + conditions: { "acc_descr_multiline": { "rules": [12, 13], "inclusive": false }, "acc_descr": { "rules": [10], "inclusive": false }, "acc_title": { "rules": [8], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19], "inclusive": true } } + }; + return lexer2; + })(); + parser24.lexer = lexer; + function Parser3() { + this.yy = {}; + } + __name(Parser3, "Parser"); + Parser3.prototype = parser24; + parser24.Parser = Parser3; + return new Parser3(); + })(); + parser14.parser = parser14; + journey_default = parser14; + } + }); + + // src/diagrams/user-journey/journeyDb.js + var currentSection2, sections3, tasks2, rawTasks2, clear13, addSection3, getSections3, getTasks2, updateActors, addTask2, addTaskOrg2, compileTasks2, getActors, journeyDb_default; + var init_journeyDb = __esm({ + "src/diagrams/user-journey/journeyDb.js"() { + "use strict"; + init_diagramAPI(); + init_commonDb(); + currentSection2 = ""; + sections3 = []; + tasks2 = []; + rawTasks2 = []; + clear13 = /* @__PURE__ */ __name(function() { + sections3.length = 0; + tasks2.length = 0; + currentSection2 = ""; + rawTasks2.length = 0; + clear(); + }, "clear"); + addSection3 = /* @__PURE__ */ __name(function(txt) { + currentSection2 = txt; + sections3.push(txt); + }, "addSection"); + getSections3 = /* @__PURE__ */ __name(function() { + return sections3; + }, "getSections"); + getTasks2 = /* @__PURE__ */ __name(function() { + let allItemsProcessed = compileTasks2(); + const maxDepth = 100; + let iterationCount = 0; + while (!allItemsProcessed && iterationCount < maxDepth) { + allItemsProcessed = compileTasks2(); + iterationCount++; + } + tasks2.push(...rawTasks2); + return tasks2; + }, "getTasks"); + updateActors = /* @__PURE__ */ __name(function() { + const tempActors = []; + tasks2.forEach((task) => { + if (task.people) { + tempActors.push(...task.people); + } + }); + const unique = new Set(tempActors); + return [...unique].sort(); + }, "updateActors"); + addTask2 = /* @__PURE__ */ __name(function(descr, taskData) { + const pieces = taskData.substr(1).split(":"); + let score = 0; + let peeps = []; + if (pieces.length === 1) { + score = Number(pieces[0]); + peeps = []; + } else { + score = Number(pieces[0]); + peeps = pieces[1].split(","); + } + const peopleList = peeps.map((s2) => s2.trim()); + const rawTask = { + section: currentSection2, + type: currentSection2, + people: peopleList, + task: descr, + score + }; + rawTasks2.push(rawTask); + }, "addTask"); + addTaskOrg2 = /* @__PURE__ */ __name(function(descr) { + const newTask = { + section: currentSection2, + type: currentSection2, + description: descr, + task: descr, + classes: [] + }; + tasks2.push(newTask); + }, "addTaskOrg"); + compileTasks2 = /* @__PURE__ */ __name(function() { + const compileTask = /* @__PURE__ */ __name(function(pos) { + return rawTasks2[pos].processed; + }, "compileTask"); + let allProcessed = true; + for (const [i2, rawTask] of rawTasks2.entries()) { + compileTask(i2); + allProcessed = allProcessed && rawTask.processed; + } + return allProcessed; + }, "compileTasks"); + getActors = /* @__PURE__ */ __name(function() { + return updateActors(); + }, "getActors"); + journeyDb_default = { + getConfig: /* @__PURE__ */ __name(() => getConfig2().journey, "getConfig"), + clear: clear13, + setDiagramTitle, + getDiagramTitle, + setAccTitle, + getAccTitle, + setAccDescription, + getAccDescription, + addSection: addSection3, + getSections: getSections3, + getTasks: getTasks2, + addTask: addTask2, + addTaskOrg: addTaskOrg2, + getActors + }; + } + }); + + // src/diagrams/user-journey/styles.js + var getStyles12, styles_default11; + var init_styles11 = __esm({ + "src/diagrams/user-journey/styles.js"() { + "use strict"; + init_globalStyles(); + getStyles12 = /* @__PURE__ */ __name((options2) => `.label { + font-family: ${options2.fontFamily}; + color: ${options2.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${options2.textColor} + } + + .legend { + fill: ${options2.textColor}; + font-family: ${options2.fontFamily}; + } + + .label text { + fill: #333; + } + .label { + color: ${options2.textColor} + } + + .face { + ${options2.faceColor ? `fill: ${options2.faceColor}` : "fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${options2.mainBkg}; + stroke: ${options2.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${options2.arrowheadColor}; + } + + .edgePath .path { + stroke: ${options2.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${options2.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${options2.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${options2.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${options2.fontFamily}; + font-size: 12px; + background: ${options2.tertiaryColor}; + border: 1px solid ${options2.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${options2.fillType0 ? `fill: ${options2.fillType0}` : ""}; + } + .task-type-1, .section-type-1 { + ${options2.fillType0 ? `fill: ${options2.fillType1}` : ""}; + } + .task-type-2, .section-type-2 { + ${options2.fillType0 ? `fill: ${options2.fillType2}` : ""}; + } + .task-type-3, .section-type-3 { + ${options2.fillType0 ? `fill: ${options2.fillType3}` : ""}; + } + .task-type-4, .section-type-4 { + ${options2.fillType0 ? `fill: ${options2.fillType4}` : ""}; + } + .task-type-5, .section-type-5 { + ${options2.fillType0 ? `fill: ${options2.fillType5}` : ""}; + } + .task-type-6, .section-type-6 { + ${options2.fillType0 ? `fill: ${options2.fillType6}` : ""}; + } + .task-type-7, .section-type-7 { + ${options2.fillType0 ? `fill: ${options2.fillType7}` : ""}; + } + + .actor-0 { + ${options2.actor0 ? `fill: ${options2.actor0}` : ""}; + } + .actor-1 { + ${options2.actor1 ? `fill: ${options2.actor1}` : ""}; + } + .actor-2 { + ${options2.actor2 ? `fill: ${options2.actor2}` : ""}; + } + .actor-3 { + ${options2.actor3 ? `fill: ${options2.actor3}` : ""}; + } + .actor-4 { + ${options2.actor4 ? `fill: ${options2.actor4}` : ""}; + } + .actor-5 { + ${options2.actor5 ? `fill: ${options2.actor5}` : ""}; + } + ${getIconStyles()} +`, "getStyles"); + styles_default11 = getStyles12; + } + }); + + // src/diagrams/user-journey/svgDraw.js + var drawRect5, drawFace, drawCircle, drawText4, drawLabel2, drawSection, taskCount, drawTask, drawBackgroundRect3, _drawTextCandidateFunc3, initGraphics, svgDraw_default3; + var init_svgDraw3 = __esm({ + "src/diagrams/user-journey/svgDraw.js"() { + "use strict"; + init_src32(); + init_svgDrawCommon(); + drawRect5 = /* @__PURE__ */ __name(function(elem, rectData) { + return drawRect(elem, rectData); + }, "drawRect"); + drawFace = /* @__PURE__ */ __name(function(element3, faceData) { + const radius2 = 15; + const circleElement = element3.append("circle").attr("cx", faceData.cx).attr("cy", faceData.cy).attr("class", "face").attr("r", radius2).attr("stroke-width", 2).attr("overflow", "visible"); + const face = element3.append("g"); + face.append("circle").attr("cx", faceData.cx - radius2 / 3).attr("cy", faceData.cy - radius2 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"); + face.append("circle").attr("cx", faceData.cx + radius2 / 3).attr("cy", faceData.cy - radius2 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"); + function smile(face2) { + const arc = arc_default().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius2 / 2).outerRadius(radius2 / 2.2); + face2.append("path").attr("class", "mouth").attr("d", arc).attr("transform", "translate(" + faceData.cx + "," + (faceData.cy + 2) + ")"); + } + __name(smile, "smile"); + function sad(face2) { + const arc = arc_default().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius2 / 2).outerRadius(radius2 / 2.2); + face2.append("path").attr("class", "mouth").attr("d", arc).attr("transform", "translate(" + faceData.cx + "," + (faceData.cy + 7) + ")"); + } + __name(sad, "sad"); + function ambivalent(face2) { + face2.append("line").attr("class", "mouth").attr("stroke", 2).attr("x1", faceData.cx - 5).attr("y1", faceData.cy + 7).attr("x2", faceData.cx + 5).attr("y2", faceData.cy + 7).attr("class", "mouth").attr("stroke-width", "1px").attr("stroke", "#666"); + } + __name(ambivalent, "ambivalent"); + if (faceData.score > 3) { + smile(face); + } else if (faceData.score < 3) { + sad(face); + } else { + ambivalent(face); + } + return circleElement; + }, "drawFace"); + drawCircle = /* @__PURE__ */ __name(function(element3, circleData) { + const circleElement = element3.append("circle"); + circleElement.attr("cx", circleData.cx); + circleElement.attr("cy", circleData.cy); + circleElement.attr("class", "actor-" + circleData.pos); + circleElement.attr("fill", circleData.fill); + circleElement.attr("stroke", circleData.stroke); + circleElement.attr("r", circleData.r); + if (circleElement.class !== void 0) { + circleElement.attr("class", circleElement.class); + } + if (circleData.title !== void 0) { + circleElement.append("title").text(circleData.title); + } + return circleElement; + }, "drawCircle"); + drawText4 = /* @__PURE__ */ __name(function(elem, textData) { + return drawText(elem, textData); + }, "drawText"); + drawLabel2 = /* @__PURE__ */ __name(function(elem, txtObject) { + function genPoints(x5, y6, width3, height2, cut) { + return x5 + "," + y6 + " " + (x5 + width3) + "," + y6 + " " + (x5 + width3) + "," + (y6 + height2 - cut) + " " + (x5 + width3 - cut * 1.2) + "," + (y6 + height2) + " " + x5 + "," + (y6 + height2); + } + __name(genPoints, "genPoints"); + const polygon2 = elem.append("polygon"); + polygon2.attr("points", genPoints(txtObject.x, txtObject.y, 50, 20, 7)); + polygon2.attr("class", "labelBox"); + txtObject.y = txtObject.y + txtObject.labelMargin; + txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin; + drawText4(elem, txtObject); + }, "drawLabel"); + drawSection = /* @__PURE__ */ __name(function(elem, section, conf5) { + const g2 = elem.append("g"); + const rect3 = getNoteRect(); + rect3.x = section.x; + rect3.y = section.y; + rect3.fill = section.fill; + rect3.width = conf5.width * section.taskCount + // width of the tasks + conf5.diagramMarginX * (section.taskCount - 1); + rect3.height = conf5.height; + rect3.class = "journey-section section-type-" + section.num; + rect3.rx = 3; + rect3.ry = 3; + drawRect5(g2, rect3); + _drawTextCandidateFunc3(conf5)( + section.text, + g2, + rect3.x, + rect3.y, + rect3.width, + rect3.height, + { class: "journey-section section-type-" + section.num }, + conf5, + section.colour + ); + }, "drawSection"); + taskCount = -1; + drawTask = /* @__PURE__ */ __name(function(elem, task, conf5) { + const center4 = task.x + conf5.width / 2; + const g2 = elem.append("g"); + taskCount++; + const maxHeight = 300 + 5 * 30; + g2.append("line").attr("id", "task" + taskCount).attr("x1", center4).attr("y1", task.y).attr("x2", center4).attr("y2", maxHeight).attr("class", "task-line").attr("stroke-width", "1px").attr("stroke-dasharray", "4 2").attr("stroke", "#666"); + drawFace(g2, { + cx: center4, + cy: 300 + (5 - task.score) * 30, + score: task.score + }); + const rect3 = getNoteRect(); + rect3.x = task.x; + rect3.y = task.y; + rect3.fill = task.fill; + rect3.width = conf5.width; + rect3.height = conf5.height; + rect3.class = "task task-type-" + task.num; + rect3.rx = 3; + rect3.ry = 3; + drawRect5(g2, rect3); + let xPos = task.x + 14; + task.people.forEach((person) => { + const colour = task.actors[person].color; + const circle6 = { + cx: xPos, + cy: task.y, + r: 7, + fill: colour, + stroke: "#000", + title: person, + pos: task.actors[person].position + }; + drawCircle(g2, circle6); + xPos += 10; + }); + _drawTextCandidateFunc3(conf5)( + task.task, + g2, + rect3.x, + rect3.y, + rect3.width, + rect3.height, + { class: "task" }, + conf5, + task.colour + ); + }, "drawTask"); + drawBackgroundRect3 = /* @__PURE__ */ __name(function(elem, bounds4) { + drawBackgroundRect(elem, bounds4); + }, "drawBackgroundRect"); + _drawTextCandidateFunc3 = /* @__PURE__ */ (function() { + function byText(content, g2, x5, y6, width3, height2, textAttrs, colour) { + const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y6 + height2 / 2 + 5).style("font-color", colour).style("text-anchor", "middle").text(content); + _setTextAttrs(text4, textAttrs); + } + __name(byText, "byText"); + function byTspan(content, g2, x5, y6, width3, height2, textAttrs, conf5, colour) { + const { taskFontSize, taskFontFamily } = conf5; + const lines = content.split(//gi); + for (let i2 = 0; i2 < lines.length; i2++) { + const dy = i2 * taskFontSize - taskFontSize * (lines.length - 1) / 2; + const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y6).attr("fill", colour).style("text-anchor", "middle").style("font-size", taskFontSize).style("font-family", taskFontFamily); + text4.append("tspan").attr("x", x5 + width3 / 2).attr("dy", dy).text(lines[i2]); + text4.attr("y", y6 + height2 / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central"); + _setTextAttrs(text4, textAttrs); + } + } + __name(byTspan, "byTspan"); + function byFo(content, g2, x5, y6, width3, height2, textAttrs, conf5) { + const body = g2.append("switch"); + const f2 = body.append("foreignObject").attr("x", x5).attr("y", y6).attr("width", width3).attr("height", height2).attr("position", "fixed"); + const text4 = f2.append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); + text4.append("div").attr("class", "label").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(content); + byTspan(content, body, x5, y6, width3, height2, textAttrs, conf5); + _setTextAttrs(text4, textAttrs); + } + __name(byFo, "byFo"); + function _setTextAttrs(toText, fromTextAttrsDict) { + for (const key in fromTextAttrsDict) { + if (key in fromTextAttrsDict) { + toText.attr(key, fromTextAttrsDict[key]); + } + } + } + __name(_setTextAttrs, "_setTextAttrs"); + return function(conf5) { + return conf5.textPlacement === "fo" ? byFo : conf5.textPlacement === "old" ? byText : byTspan; + }; + })(); + initGraphics = /* @__PURE__ */ __name(function(graphics) { + graphics.append("defs").append("marker").attr("id", "arrowhead").attr("refX", 5).attr("refY", 2).attr("markerWidth", 6).attr("markerHeight", 4).attr("orient", "auto").append("path").attr("d", "M 0,0 V 4 L6,2 Z"); + }, "initGraphics"); + svgDraw_default3 = { + drawRect: drawRect5, + drawCircle, + drawSection, + drawText: drawText4, + drawLabel: drawLabel2, + drawTask, + drawBackgroundRect: drawBackgroundRect3, + initGraphics + }; + } + }); + + // src/diagrams/user-journey/journeyRenderer.ts + function drawActorLegend(diagram27) { + const conf5 = getConfig2().journey; + const maxLabelWidth = conf5.maxLabelWidth; + maxWidth = 0; + let yPos = 60; + Object.keys(actors).forEach((person) => { + const colour = actors[person].color; + const circleData = { + cx: 20, + cy: yPos, + r: 7, + fill: colour, + stroke: "#000", + pos: actors[person].position + }; + svgDraw_default3.drawCircle(diagram27, circleData); + let measureText = diagram27.append("text").attr("visibility", "hidden").text(person); + const fullTextWidth = measureText.node().getBoundingClientRect().width; + measureText.remove(); + let lines = []; + if (fullTextWidth <= maxLabelWidth) { + lines = [person]; + } else { + const words = person.split(" "); + let currentLine = ""; + measureText = diagram27.append("text").attr("visibility", "hidden"); + words.forEach((word) => { + const testLine = currentLine ? `${currentLine} ${word}` : word; + measureText.text(testLine); + const textWidth = measureText.node().getBoundingClientRect().width; + if (textWidth > maxLabelWidth) { + if (currentLine) { + lines.push(currentLine); + } + currentLine = word; + measureText.text(word); + if (measureText.node().getBoundingClientRect().width > maxLabelWidth) { + let brokenWord = ""; + for (const char2 of word) { + brokenWord += char2; + measureText.text(brokenWord + "-"); + if (measureText.node().getBoundingClientRect().width > maxLabelWidth) { + lines.push(brokenWord.slice(0, -1) + "-"); + brokenWord = char2; + } + } + currentLine = brokenWord; + } + } else { + currentLine = testLine; + } + }); + if (currentLine) { + lines.push(currentLine); + } + measureText.remove(); + } + lines.forEach((line2, index) => { + const labelData = { + x: 40, + y: yPos + 7 + index * 20, + fill: "#666", + text: line2, + textMargin: conf5.boxTextMargin ?? 5 + }; + const textElement = svgDraw_default3.drawText(diagram27, labelData); + const lineWidth = textElement.node().getBoundingClientRect().width; + if (lineWidth > maxWidth && lineWidth > conf5.leftMargin - lineWidth) { + maxWidth = lineWidth; + } + }); + yPos += Math.max(20, lines.length * 20); + }); + } + var setConf5, actors, maxWidth, conf4, leftMargin, draw15, bounds3, fills, textColours, drawTasks, journeyRenderer_default; + var init_journeyRenderer = __esm({ + "src/diagrams/user-journey/journeyRenderer.ts"() { + "use strict"; + init_src32(); + init_svgDraw3(); + init_diagramAPI(); + init_setupGraphViewbox(); + setConf5 = /* @__PURE__ */ __name(function(cnf) { + const keys2 = Object.keys(cnf); + keys2.forEach(function(key) { + conf4[key] = cnf[key]; + }); + }, "setConf"); + actors = {}; + maxWidth = 0; + __name(drawActorLegend, "drawActorLegend"); + conf4 = getConfig2().journey; + leftMargin = 0; + draw15 = /* @__PURE__ */ __name(function(text4, id30, version3, diagObj) { + const configObject = getConfig2(); + const titleColor = configObject.journey.titleColor; + const titleFontSize = configObject.journey.titleFontSize; + const titleFontFamily = configObject.journey.titleFontFamily; + const securityLevel = configObject.securityLevel; + let sandboxElement; + if (securityLevel === "sandbox") { + sandboxElement = select_default2("#i" + id30); + } + const root3 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); + bounds3.init(); + const diagram27 = root3.select("#" + id30); + svgDraw_default3.initGraphics(diagram27); + const tasks4 = diagObj.db.getTasks(); + const title2 = diagObj.db.getDiagramTitle(); + const actorNames = diagObj.db.getActors(); + for (const member in actors) { + delete actors[member]; + } + let actorPos = 0; + actorNames.forEach((actorName) => { + actors[actorName] = { + color: conf4.actorColours[actorPos % conf4.actorColours.length], + position: actorPos + }; + actorPos++; + }); + drawActorLegend(diagram27); + leftMargin = conf4.leftMargin + maxWidth; + bounds3.insert(0, 0, leftMargin, Object.keys(actors).length * 50); + drawTasks(diagram27, tasks4, 0); + const box = bounds3.getBounds(); + if (title2) { + diagram27.append("text").text(title2).attr("x", leftMargin).attr("font-size", titleFontSize).attr("font-weight", "bold").attr("y", 25).attr("fill", titleColor).attr("font-family", titleFontFamily); + } + const height2 = box.stopy - box.starty + 2 * conf4.diagramMarginY; + const width3 = leftMargin + box.stopx + 2 * conf4.diagramMarginX; + configureSvgSize(diagram27, height2, width3, conf4.useMaxWidth); + diagram27.append("line").attr("x1", leftMargin).attr("y1", conf4.height * 4).attr("x2", width3 - leftMargin - 4).attr("y2", conf4.height * 4).attr("stroke-width", 4).attr("stroke", "black").attr("marker-end", "url(#arrowhead)"); + const extraVertForTitle = title2 ? 70 : 0; + diagram27.attr("viewBox", `${box.startx} -25 ${width3} ${height2 + extraVertForTitle}`); + diagram27.attr("preserveAspectRatio", "xMinYMin meet"); + diagram27.attr("height", height2 + extraVertForTitle + 25); + }, "draw"); + bounds3 = { + data: { + startx: void 0, + stopx: void 0, + starty: void 0, + stopy: void 0 + }, + verticalPos: 0, + sequenceItems: [], + init: /* @__PURE__ */ __name(function() { + this.sequenceItems = []; + this.data = { + startx: void 0, + stopx: void 0, + starty: void 0, + stopy: void 0 + }; + this.verticalPos = 0; + }, "init"), + updateVal: /* @__PURE__ */ __name(function(obj, key, val, fun) { + if (obj[key] === void 0) { + obj[key] = val; + } else { + obj[key] = fun(val, obj[key]); + } + }, "updateVal"), + updateBounds: /* @__PURE__ */ __name(function(startx, starty, stopx, stopy) { + const conf5 = getConfig2().journey; + const _self = this; + let cnt4 = 0; + function updateFn(type3) { + return /* @__PURE__ */ __name(function updateItemBounds(item) { + cnt4++; + const n2 = _self.sequenceItems.length - cnt4 + 1; + _self.updateVal(item, "starty", starty - n2 * conf5.boxMargin, Math.min); + _self.updateVal(item, "stopy", stopy + n2 * conf5.boxMargin, Math.max); + _self.updateVal(bounds3.data, "startx", startx - n2 * conf5.boxMargin, Math.min); + _self.updateVal(bounds3.data, "stopx", stopx + n2 * conf5.boxMargin, Math.max); + if (!(type3 === "activation")) { + _self.updateVal(item, "startx", startx - n2 * conf5.boxMargin, Math.min); + _self.updateVal(item, "stopx", stopx + n2 * conf5.boxMargin, Math.max); + _self.updateVal(bounds3.data, "starty", starty - n2 * conf5.boxMargin, Math.min); + _self.updateVal(bounds3.data, "stopy", stopy + n2 * conf5.boxMargin, Math.max); + } + }, "updateItemBounds"); + } + __name(updateFn, "updateFn"); + this.sequenceItems.forEach(updateFn()); + }, "updateBounds"), + insert: /* @__PURE__ */ __name(function(startx, starty, stopx, stopy) { + const _startx = Math.min(startx, stopx); + const _stopx = Math.max(startx, stopx); + const _starty = Math.min(starty, stopy); + const _stopy = Math.max(starty, stopy); + this.updateVal(bounds3.data, "startx", _startx, Math.min); + this.updateVal(bounds3.data, "starty", _starty, Math.min); + this.updateVal(bounds3.data, "stopx", _stopx, Math.max); + this.updateVal(bounds3.data, "stopy", _stopy, Math.max); + this.updateBounds(_startx, _starty, _stopx, _stopy); + }, "insert"), + bumpVerticalPos: /* @__PURE__ */ __name(function(bump) { + this.verticalPos = this.verticalPos + bump; + this.data.stopy = this.verticalPos; + }, "bumpVerticalPos"), + getVerticalPos: /* @__PURE__ */ __name(function() { + return this.verticalPos; + }, "getVerticalPos"), + getBounds: /* @__PURE__ */ __name(function() { + return this.data; + }, "getBounds") + }; + fills = conf4.sectionFills; + textColours = conf4.sectionColours; + drawTasks = /* @__PURE__ */ __name(function(diagram27, tasks4, verticalPos) { + const conf5 = getConfig2().journey; + let lastSection = ""; + const sectionVHeight = conf5.height * 2 + conf5.diagramMarginY; + const taskPos = verticalPos + sectionVHeight; + let sectionNumber = 0; + let fill = "#CCC"; + let colour = "black"; + let num = 0; + for (const [i2, task] of tasks4.entries()) { + if (lastSection !== task.section) { + fill = fills[sectionNumber % fills.length]; + num = sectionNumber % fills.length; + colour = textColours[sectionNumber % textColours.length]; + let taskInSectionCount = 0; + const currentSection4 = task.section; + for (let taskIndex = i2; taskIndex < tasks4.length; taskIndex++) { + if (tasks4[taskIndex].section == currentSection4) { + taskInSectionCount = taskInSectionCount + 1; + } else { + break; + } + } + const section = { + x: i2 * conf5.taskMargin + i2 * conf5.width + leftMargin, + y: 50, + text: task.section, + fill, + num, + colour, + taskCount: taskInSectionCount + }; + svgDraw_default3.drawSection(diagram27, section, conf5); + lastSection = task.section; + sectionNumber++; + } + const taskActors = task.people.reduce((acc, actorName) => { + if (actors[actorName]) { + acc[actorName] = actors[actorName]; + } + return acc; + }, {}); + task.x = i2 * conf5.taskMargin + i2 * conf5.width + leftMargin; + task.y = taskPos; + task.width = conf5.diagramMarginX; + task.height = conf5.diagramMarginY; + task.colour = colour; + task.fill = fill; + task.num = num; + task.actors = taskActors; + svgDraw_default3.drawTask(diagram27, task, conf5); + bounds3.insert(task.x, task.y, task.x + task.width + conf5.taskMargin, 300 + 5 * 30); + } + }, "drawTasks"); + journeyRenderer_default = { + setConf: setConf5, + draw: draw15 + }; + } + }); + + // src/diagrams/user-journey/journeyDiagram.ts + var journeyDiagram_exports = {}; + __export(journeyDiagram_exports, { + diagram: () => diagram16 + }); + var diagram16; + var init_journeyDiagram = __esm({ + "src/diagrams/user-journey/journeyDiagram.ts"() { + "use strict"; + init_journey(); + init_journeyDb(); + init_styles11(); + init_journeyRenderer(); + diagram16 = { + parser: journey_default, + db: journeyDb_default, + renderer: journeyRenderer_default, + styles: styles_default11, + init: /* @__PURE__ */ __name((cnf) => { + journeyRenderer_default.setConf(cnf.journey); + journeyDb_default.clear(); + }, "init") + }; + } + }); + + // src/diagrams/timeline/parser/timeline.jison + var parser15, timeline_default; + var init_timeline = __esm({ + "src/diagrams/timeline/parser/timeline.jison"() { + "use strict"; + parser15 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; + return o3; + }, "o"), $V0 = [6, 8, 10, 11, 12, 14, 16, 17, 20, 21], $V1 = [1, 9], $V2 = [1, 10], $V3 = [1, 11], $V4 = [1, 12], $V5 = [1, 13], $V6 = [1, 16], $V7 = [1, 17]; + var parser24 = { + trace: /* @__PURE__ */ __name(function trace() { + }, "trace"), + yy: {}, + symbols_: { "error": 2, "start": 3, "timeline": 4, "document": 5, "EOF": 6, "line": 7, "SPACE": 8, "statement": 9, "NEWLINE": 10, "title": 11, "acc_title": 12, "acc_title_value": 13, "acc_descr": 14, "acc_descr_value": 15, "acc_descr_multiline_value": 16, "section": 17, "period_statement": 18, "event_statement": 19, "period": 20, "event": 21, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 4: "timeline", 6: "EOF", 8: "SPACE", 10: "NEWLINE", 11: "title", 12: "acc_title", 13: "acc_title_value", 14: "acc_descr", 15: "acc_descr_value", 16: "acc_descr_multiline_value", 17: "section", 20: "period", 21: "event" }, + productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 1], [18, 1], [19, 1]], + performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 1: + return $$[$0 - 1]; + break; + case 2: + this.$ = []; + break; + case 3: + $$[$0 - 1].push($$[$0]); + this.$ = $$[$0 - 1]; + break; + case 4: + case 5: + this.$ = $$[$0]; + break; + case 6: + case 7: + this.$ = []; + break; + case 8: + yy.getCommonDb().setDiagramTitle($$[$0].substr(6)); + this.$ = $$[$0].substr(6); + break; + case 9: + this.$ = $$[$0].trim(); + yy.getCommonDb().setAccTitle(this.$); + break; + case 10: + case 11: + this.$ = $$[$0].trim(); + yy.getCommonDb().setAccDescription(this.$); + break; + case 12: + yy.addSection($$[$0].substr(8)); + this.$ = $$[$0].substr(8); + break; + case 15: + yy.addTask($$[$0], 0, ""); + this.$ = $$[$0]; + break; + case 16: + yy.addEvent($$[$0].substr(2)); + this.$ = $$[$0]; + break; + } + }, "anonymous"), + table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o2($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o2($V0, [2, 7], { 1: [2, 1] }), o2($V0, [2, 3]), { 9: 18, 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o2($V0, [2, 5]), o2($V0, [2, 6]), o2($V0, [2, 8]), { 13: [1, 19] }, { 15: [1, 20] }, o2($V0, [2, 11]), o2($V0, [2, 12]), o2($V0, [2, 13]), o2($V0, [2, 14]), o2($V0, [2, 15]), o2($V0, [2, 16]), o2($V0, [2, 4]), o2($V0, [2, 9]), o2($V0, [2, 10])], + defaultActions: {}, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); + } else { + var error3 = new Error(str2); + error3.hash = hash; + throw error3; + } + }, "parseError"), + parse: /* @__PURE__ */ __name(function parse7(input) { + var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k2 in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { + sharedState.yy[k2] = this.yy[k2]; + } + } + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; + } + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n2) { + stack.length = stack.length - 2 * n2; + vstack.length = vstack.length - n2; + lstack.length = lstack.length - n2; + } + __name(popStack, "popStack"); + function lex() { + var token2; + token2 = tstack.pop() || lexer2.lex() || EOF2; + if (typeof token2 !== "number") { + if (token2 instanceof Array) { + tstack = token2; + token2 = tstack.pop(); } - var nodeAngle = (halfInterval + startAngle) % 360; - var teta = nodeAngle * IGeometry.TWO_PI / 360; - var cos_teta = Math.cos(teta); - var x_ = distance2 * Math.cos(teta); - var y_ = distance2 * Math.sin(teta); - node2.setCenter(x_, y_); - var neighborEdges = []; - neighborEdges = neighborEdges.concat(node2.getEdges()); - var childCount = neighborEdges.length; - if (parentOfNode != null) { - childCount--; + token2 = self2.symbols_[token2] || token2; + } + return token2; + } + __name(lex, "lex"); + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; + while (true) { + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); } - var branchCount = 0; - var incEdgesCount = neighborEdges.length; - var startIndex; - var edges3 = node2.getEdgesBetween(parentOfNode); - while (edges3.length > 1) { - var temp = edges3[0]; - edges3.splice(0, 1); - var index = neighborEdges.indexOf(temp); - if (index >= 0) { - neighborEdges.splice(index, 1); + action = table[state3] && table[state3][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p3 in table[state3]) { + if (this.terminals_[p3] && p3 > TERROR) { + expected.push("'" + this.terminals_[p3] + "'"); } - incEdgesCount--; - childCount--; } - if (parentOfNode != null) { - startIndex = (neighborEdges.indexOf(edges3[0]) + 1) % incEdgesCount; + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; } else { - startIndex = 0; - } - var stepAngle = Math.abs(endAngle - startAngle) / childCount; - for (var i2 = startIndex; branchCount != childCount; i2 = ++i2 % incEdgesCount) { - var currentNeighbor = neighborEdges[i2].getOtherEnd(node2); - if (currentNeighbor == parentOfNode) { - continue; - } - var childStartAngle = (startAngle + branchCount * stepAngle) % 360; - var childEndAngle = (childStartAngle + stepAngle) % 360; - CoSELayout.branchRadialLayout(currentNeighbor, node2, childStartAngle, childEndAngle, distance2 + radialSeparation, radialSeparation); - branchCount++; - } - }; - CoSELayout.maxDiagonalInTree = function(tree) { - var maxDiagonal = Integer.MIN_VALUE; - for (var i2 = 0; i2 < tree.length; i2++) { - var node2 = tree[i2]; - var diagonal = node2.getDiagonal(); - if (diagonal > maxDiagonal) { - maxDiagonal = diagonal; - } - } - return maxDiagonal; - }; - CoSELayout.prototype.calcRepulsionRange = function() { - return 2 * (this.level + 1) * this.idealEdgeLength; - }; - CoSELayout.prototype.groupZeroDegreeMembers = function() { - var self2 = this; - var tempMemberGroups = {}; - this.memberGroups = {}; - this.idToDummyNode = {}; - var zeroDegree = []; - var allNodes = this.graphManager.getAllNodes(); - for (var i2 = 0; i2 < allNodes.length; i2++) { - var node2 = allNodes[i2]; - var parent4 = node2.getParent(); - if (this.getNodeDegreeWithChildren(node2) === 0 && (parent4.id == void 0 || !this.getToBeTiled(parent4))) { - zeroDegree.push(node2); - } - } - for (var i2 = 0; i2 < zeroDegree.length; i2++) { - var node2 = zeroDegree[i2]; - var p_id = node2.getParent().id; - if (typeof tempMemberGroups[p_id] === "undefined") tempMemberGroups[p_id] = []; - tempMemberGroups[p_id] = tempMemberGroups[p_id].concat(node2); - } - Object.keys(tempMemberGroups).forEach(function(p_id2) { - if (tempMemberGroups[p_id2].length > 1) { - var dummyCompoundId = "DummyCompound_" + p_id2; - self2.memberGroups[dummyCompoundId] = tempMemberGroups[p_id2]; - var parent5 = tempMemberGroups[p_id2][0].getParent(); - var dummyCompound = new CoSENode(self2.graphManager); - dummyCompound.id = dummyCompoundId; - dummyCompound.paddingLeft = parent5.paddingLeft || 0; - dummyCompound.paddingRight = parent5.paddingRight || 0; - dummyCompound.paddingBottom = parent5.paddingBottom || 0; - dummyCompound.paddingTop = parent5.paddingTop || 0; - self2.idToDummyNode[dummyCompoundId] = dummyCompound; - var dummyParentGraph = self2.getGraphManager().add(self2.newGraph(), dummyCompound); - var parentGraph = parent5.getChild(); - parentGraph.add(dummyCompound); - for (var i3 = 0; i3 < tempMemberGroups[p_id2].length; i3++) { - var node3 = tempMemberGroups[p_id2][i3]; - parentGraph.remove(node3); - dummyParentGraph.add(node3); - } - } - }); - }; - CoSELayout.prototype.clearCompounds = function() { - var childGraphMap = {}; - var idToNode = {}; - this.performDFSOnCompounds(); - for (var i2 = 0; i2 < this.compoundOrder.length; i2++) { - idToNode[this.compoundOrder[i2].id] = this.compoundOrder[i2]; - childGraphMap[this.compoundOrder[i2].id] = [].concat(this.compoundOrder[i2].getChild().getNodes()); - this.graphManager.remove(this.compoundOrder[i2].getChild()); - this.compoundOrder[i2].child = null; - } - this.graphManager.resetAllNodes(); - this.tileCompoundMembers(childGraphMap, idToNode); - }; - CoSELayout.prototype.clearZeroDegreeMembers = function() { - var self2 = this; - var tiledZeroDegreePack = this.tiledZeroDegreePack = []; - Object.keys(this.memberGroups).forEach(function(id29) { - var compoundNode = self2.idToDummyNode[id29]; - tiledZeroDegreePack[id29] = self2.tileNodes(self2.memberGroups[id29], compoundNode.paddingLeft + compoundNode.paddingRight); - compoundNode.rect.width = tiledZeroDegreePack[id29].width; - compoundNode.rect.height = tiledZeroDegreePack[id29].height; - }); - }; - CoSELayout.prototype.repopulateCompounds = function() { - for (var i2 = this.compoundOrder.length - 1; i2 >= 0; i2--) { - var lCompoundNode = this.compoundOrder[i2]; - var id29 = lCompoundNode.id; - var horizontalMargin = lCompoundNode.paddingLeft; - var verticalMargin = lCompoundNode.paddingTop; - this.adjustLocations(this.tiledMemberPack[id29], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin); + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); } - }; - CoSELayout.prototype.repopulateZeroDegreeMembers = function() { - var self2 = this; - var tiledPack = this.tiledZeroDegreePack; - Object.keys(tiledPack).forEach(function(id29) { - var compoundNode = self2.idToDummyNode[id29]; - var horizontalMargin = compoundNode.paddingLeft; - var verticalMargin = compoundNode.paddingTop; - self2.adjustLocations(tiledPack[id29], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin); + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected }); - }; - CoSELayout.prototype.getToBeTiled = function(node2) { - var id29 = node2.id; - if (this.toBeTiled[id29] != null) { - return this.toBeTiled[id29]; - } - var childGraph = node2.getChild(); - if (childGraph == null) { - this.toBeTiled[id29] = false; - return false; - } - var children2 = childGraph.getNodes(); - for (var i2 = 0; i2 < children2.length; i2++) { - var theChild = children2[i2]; - if (this.getNodeDegree(theChild) > 0) { - this.toBeTiled[id29] = false; - return false; - } - if (theChild.getChild() == null) { - this.toBeTiled[theChild.id] = false; - continue; - } - if (!this.getToBeTiled(theChild)) { - this.toBeTiled[id29] = false; - return false; + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + if (recovering > 0) { + recovering--; + } + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; } - } - this.toBeTiled[id29] = true; - return true; - }; - CoSELayout.prototype.getNodeDegree = function(node2) { - var id29 = node2.id; - var edges3 = node2.getEdges(); - var degree = 0; - for (var i2 = 0; i2 < edges3.length; i2++) { - var edge = edges3[i2]; - if (edge.getSource().id !== edge.getTarget().id) { - degree = degree + 1; + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; } - } - return degree; - }; - CoSELayout.prototype.getNodeDegreeWithChildren = function(node2) { - var degree = this.getNodeDegree(node2); - if (node2.getChild() == null) { - return degree; - } - var children2 = node2.getChild().getNodes(); - for (var i2 = 0; i2 < children2.length; i2++) { - var child = children2[i2]; - degree += this.getNodeDegreeWithChildren(child); - } - return degree; - }; - CoSELayout.prototype.performDFSOnCompounds = function() { - this.compoundOrder = []; - this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes()); - }; - CoSELayout.prototype.fillCompexOrderByDFS = function(children2) { - for (var i2 = 0; i2 < children2.length; i2++) { - var child = children2[i2]; - if (child.getChild() != null) { - this.fillCompexOrderByDFS(child.getChild().getNodes()); + r2 = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r2 !== "undefined") { + return r2; } - if (this.getToBeTiled(child)) { - this.compoundOrder.push(child); + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); } - } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState2); + break; + case 3: + return true; + } + } + return true; + }, "parse") + }; + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { + EOF: 1, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str2, hash); + } else { + throw new Error(str2); + } + }, "parseError"), + // resets the lexer, sets new input + setInput: /* @__PURE__ */ __name(function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 }; - CoSELayout.prototype.adjustLocations = function(organization, x5, y5, compoundHorizontalMargin, compoundVerticalMargin) { - x5 += compoundHorizontalMargin; - y5 += compoundVerticalMargin; - var left3 = x5; - for (var i2 = 0; i2 < organization.rows.length; i2++) { - var row = organization.rows[i2]; - x5 = left3; - var maxHeight = 0; - for (var j2 = 0; j2 < row.length; j2++) { - var lnode = row[j2]; - lnode.rect.x = x5; - lnode.rect.y = y5; - x5 += lnode.rect.width + organization.horizontalPadding; - if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height; - } - y5 += maxHeight + organization.verticalPadding; - } + if (this.options.ranges) { + this.yylloc.range = [0, 0]; + } + this.offset = 0; + return this; + }, "setInput"), + // consumes and returns one char from the input + input: /* @__PURE__ */ __name(function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } + this._input = this._input.slice(1); + return ch; + }, "input"), + // unshifts one char (or a string) into the input + unput: /* @__PURE__ */ __name(function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r2 = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len }; - CoSELayout.prototype.tileCompoundMembers = function(childGraphMap, idToNode) { - var self2 = this; - this.tiledMemberPack = []; - Object.keys(childGraphMap).forEach(function(id29) { - var compoundNode = idToNode[id29]; - self2.tiledMemberPack[id29] = self2.tileNodes(childGraphMap[id29], compoundNode.paddingLeft + compoundNode.paddingRight); - compoundNode.rect.width = self2.tiledMemberPack[id29].width; - compoundNode.rect.height = self2.tiledMemberPack[id29].height; + if (this.options.ranges) { + this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, "unput"), + // When called from action, caches matched text and appends it on next action + more: /* @__PURE__ */ __name(function() { + this._more = true; + return this; + }, "more"), + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: /* @__PURE__ */ __name(function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno }); - }; - CoSELayout.prototype.tileNodes = function(nodes6, minWidth) { - var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL; - var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL; - var organization = { - rows: [], - rowWidth: [], - rowHeight: [], - width: 0, - height: minWidth, - // assume minHeight equals to minWidth - verticalPadding, - horizontalPadding + } + return this; + }, "reject"), + // retain first n characters of the match + less: /* @__PURE__ */ __name(function(n2) { + this.unput(this.match.slice(n2)); + }, "less"), + // displays already matched input, i.e. for error messages + pastInput: /* @__PURE__ */ __name(function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, "pastInput"), + // displays upcoming input, i.e. for error messages + upcomingInput: /* @__PURE__ */ __name(function() { + var next3 = this.match; + if (next3.length < 20) { + next3 += this._input.substr(0, 20 - next3.length); + } + return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, "upcomingInput"), + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: /* @__PURE__ */ __name(function() { + var pre = this.pastInput(); + var c3 = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c3 + "^"; + }, "showPosition"), + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { + var token2, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done }; - nodes6.sort(function(n1, n2) { - if (n1.rect.width * n1.rect.height > n2.rect.width * n2.rect.height) return -1; - if (n1.rect.width * n1.rect.height < n2.rect.width * n2.rect.height) return 1; - return 0; - }); - for (var i2 = 0; i2 < nodes6.length; i2++) { - var lNode = nodes6[i2]; - if (organization.rows.length == 0) { - this.insertNodeToRow(organization, lNode, 0, minWidth); - } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) { - this.insertNodeToRow(organization, lNode, this.getShortestRowIndex(organization), minWidth); - } else { - this.insertNodeToRow(organization, lNode, organization.rows.length, minWidth); - } - this.shiftToLastRow(organization); - } - return organization; - }; - CoSELayout.prototype.insertNodeToRow = function(organization, node2, rowIndex, minWidth) { - var minCompoundSize = minWidth; - if (rowIndex == organization.rows.length) { - var secondDimension = []; - organization.rows.push(secondDimension); - organization.rowWidth.push(minCompoundSize); - organization.rowHeight.push(0); - } - var w3 = organization.rowWidth[rowIndex] + node2.rect.width; - if (organization.rows[rowIndex].length > 0) { - w3 += organization.horizontalPadding; - } - organization.rowWidth[rowIndex] = w3; - if (organization.width < w3) { - organization.width = w3; - } - var h2 = node2.rect.height; - if (rowIndex > 0) h2 += organization.verticalPadding; - var extraHeight = 0; - if (h2 > organization.rowHeight[rowIndex]) { - extraHeight = organization.rowHeight[rowIndex]; - organization.rowHeight[rowIndex] = h2; - extraHeight = organization.rowHeight[rowIndex] - extraHeight; - } - organization.height += extraHeight; - organization.rows[rowIndex].push(node2); - }; - CoSELayout.prototype.getShortestRowIndex = function(organization) { - var r2 = -1; - var min9 = Number.MAX_VALUE; - for (var i2 = 0; i2 < organization.rows.length; i2++) { - if (organization.rowWidth[i2] < min9) { - r2 = i2; - min9 = organization.rowWidth[i2]; - } - } - return r2; - }; - CoSELayout.prototype.getLongestRowIndex = function(organization) { - var r2 = -1; - var max10 = Number.MIN_VALUE; - for (var i2 = 0; i2 < organization.rows.length; i2++) { - if (organization.rowWidth[i2] > max10) { - r2 = i2; - max10 = organization.rowWidth[i2]; - } - } - return r2; - }; - CoSELayout.prototype.canAddHorizontal = function(organization, extraWidth, extraHeight) { - var sri = this.getShortestRowIndex(organization); - if (sri < 0) { - return true; - } - var min9 = organization.rowWidth[sri]; - if (min9 + organization.horizontalPadding + extraWidth <= organization.width) return true; - var hDiff = 0; - if (organization.rowHeight[sri] < extraHeight) { - if (sri > 0) hDiff = extraHeight + organization.verticalPadding - organization.rowHeight[sri]; - } - var add_to_row_ratio; - if (organization.width - min9 >= extraWidth + organization.horizontalPadding) { - add_to_row_ratio = (organization.height + hDiff) / (min9 + extraWidth + organization.horizontalPadding); - } else { - add_to_row_ratio = (organization.height + hDiff) / organization.width; - } - hDiff = extraHeight + organization.verticalPadding; - var add_new_row_ratio; - if (organization.width < extraWidth) { - add_new_row_ratio = (organization.height + hDiff) / extraWidth; - } else { - add_new_row_ratio = (organization.height + hDiff) / organization.width; - } - if (add_new_row_ratio < 1) add_new_row_ratio = 1 / add_new_row_ratio; - if (add_to_row_ratio < 1) add_to_row_ratio = 1 / add_to_row_ratio; - return add_to_row_ratio < add_new_row_ratio; - }; - CoSELayout.prototype.shiftToLastRow = function(organization) { - var longest = this.getLongestRowIndex(organization); - var last3 = organization.rowWidth.length - 1; - var row = organization.rows[longest]; - var node2 = row[row.length - 1]; - var diff2 = node2.width + organization.horizontalPadding; - if (organization.width - organization.rowWidth[last3] > diff2 && longest != last3) { - row.splice(-1, 1); - organization.rows[last3].push(node2); - organization.rowWidth[longest] = organization.rowWidth[longest] - diff2; - organization.rowWidth[last3] = organization.rowWidth[last3] + diff2; - organization.width = organization.rowWidth[instance.getLongestRowIndex(organization)]; - var maxHeight = Number.MIN_VALUE; - for (var i2 = 0; i2 < row.length; i2++) { - if (row[i2].height > maxHeight) maxHeight = row[i2].height; - } - if (longest > 0) maxHeight += organization.verticalPadding; - var prevTotal = organization.rowHeight[longest] + organization.rowHeight[last3]; - organization.rowHeight[longest] = maxHeight; - if (organization.rowHeight[last3] < node2.height + organization.verticalPadding) organization.rowHeight[last3] = node2.height + organization.verticalPadding; - var finalTotal = organization.rowHeight[longest] + organization.rowHeight[last3]; - organization.height += finalTotal - prevTotal; - this.shiftToLastRow(organization); - } - }; - CoSELayout.prototype.tilingPreLayout = function() { - if (CoSEConstants.TILE) { - this.groupZeroDegreeMembers(); - this.clearCompounds(); - this.clearZeroDegreeMembers(); - } - }; - CoSELayout.prototype.tilingPostLayout = function() { - if (CoSEConstants.TILE) { - this.repopulateZeroDegreeMembers(); - this.repopulateCompounds(); - } - }; - CoSELayout.prototype.reduceTrees = function() { - var prunedNodesAll = []; - var containsLeaf = true; - var node2; - while (containsLeaf) { - var allNodes = this.graphManager.getAllNodes(); - var prunedNodesInStepTemp = []; - containsLeaf = false; - for (var i2 = 0; i2 < allNodes.length; i2++) { - node2 = allNodes[i2]; - if (node2.getEdges().length == 1 && !node2.getEdges()[0].isInterGraph && node2.getChild() == null) { - prunedNodesInStepTemp.push([node2, node2.getEdges()[0], node2.getOwner()]); - containsLeaf = true; - } - } - if (containsLeaf == true) { - var prunedNodesInStep = []; - for (var j2 = 0; j2 < prunedNodesInStepTemp.length; j2++) { - if (prunedNodesInStepTemp[j2][0].getEdges().length == 1) { - prunedNodesInStep.push(prunedNodesInStepTemp[j2]); - prunedNodesInStepTemp[j2][0].getOwner().remove(prunedNodesInStepTemp[j2][0]); - } - } - prunedNodesAll.push(prunedNodesInStep); - this.graphManager.resetAllNodes(); - this.graphManager.resetAllEdges(); - } - } - this.prunedNodesAll = prunedNodesAll; - }; - CoSELayout.prototype.growTree = function(prunedNodesAll) { - var lengthOfPrunedNodesInStep = prunedNodesAll.length; - var prunedNodesInStep = prunedNodesAll[lengthOfPrunedNodesInStep - 1]; - var nodeData2; - for (var i2 = 0; i2 < prunedNodesInStep.length; i2++) { - nodeData2 = prunedNodesInStep[i2]; - this.findPlaceforPrunedNode(nodeData2); - nodeData2[2].add(nodeData2[0]); - nodeData2[2].add(nodeData2[1], nodeData2[1].source, nodeData2[1].target); + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); } - prunedNodesAll.splice(prunedNodesAll.length - 1, 1); - this.graphManager.resetAllNodes(); - this.graphManager.resetAllEdges(); + } + lines = match2[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length }; - CoSELayout.prototype.findPlaceforPrunedNode = function(nodeData2) { - var gridForPrunedNode; - var nodeToConnect; - var prunedNode = nodeData2[0]; - if (prunedNode == nodeData2[1].source) { - nodeToConnect = nodeData2[1].target; - } else { - nodeToConnect = nodeData2[1].source; - } - var startGridX = nodeToConnect.startX; - var finishGridX = nodeToConnect.finishX; - var startGridY = nodeToConnect.startY; - var finishGridY = nodeToConnect.finishY; - var upNodeCount = 0; - var downNodeCount = 0; - var rightNodeCount = 0; - var leftNodeCount = 0; - var controlRegions = [upNodeCount, rightNodeCount, downNodeCount, leftNodeCount]; - if (startGridY > 0) { - for (var i2 = startGridX; i2 <= finishGridX; i2++) { - controlRegions[0] += this.grid[i2][startGridY - 1].length + this.grid[i2][startGridY].length - 1; - } - } - if (finishGridX < this.grid.length - 1) { - for (var i2 = startGridY; i2 <= finishGridY; i2++) { - controlRegions[1] += this.grid[finishGridX + 1][i2].length + this.grid[finishGridX][i2].length - 1; - } - } - if (finishGridY < this.grid[0].length - 1) { - for (var i2 = startGridX; i2 <= finishGridX; i2++) { - controlRegions[2] += this.grid[i2][finishGridY + 1].length + this.grid[i2][finishGridY].length - 1; - } - } - if (startGridX > 0) { - for (var i2 = startGridY; i2 <= finishGridY; i2++) { - controlRegions[3] += this.grid[startGridX - 1][i2].length + this.grid[startGridX][i2].length - 1; - } - } - var min9 = Integer.MAX_VALUE; - var minCount; - var minIndex; - for (var j2 = 0; j2 < controlRegions.length; j2++) { - if (controlRegions[j2] < min9) { - min9 = controlRegions[j2]; - minCount = 1; - minIndex = j2; - } else if (controlRegions[j2] == min9) { - minCount++; - } + this.yytext += match2[0]; + this.match += match2[0]; + this.matches = match2; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match2[0].length); + this.matched += match2[0]; + token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token2) { + return token2; + } else if (this._backtrack) { + for (var k2 in backup) { + this[k2] = backup[k2]; } - if (minCount == 3 && min9 == 0) { - if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[2] == 0) { - gridForPrunedNode = 1; - } else if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[3] == 0) { - gridForPrunedNode = 0; - } else if (controlRegions[0] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) { - gridForPrunedNode = 3; - } else if (controlRegions[1] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) { - gridForPrunedNode = 2; - } - } else if (minCount == 2 && min9 == 0) { - var random2 = Math.floor(Math.random() * 2); - if (controlRegions[0] == 0 && controlRegions[1] == 0) { - ; - if (random2 == 0) { - gridForPrunedNode = 0; - } else { - gridForPrunedNode = 1; - } - } else if (controlRegions[0] == 0 && controlRegions[2] == 0) { - if (random2 == 0) { - gridForPrunedNode = 0; - } else { - gridForPrunedNode = 2; - } - } else if (controlRegions[0] == 0 && controlRegions[3] == 0) { - if (random2 == 0) { - gridForPrunedNode = 0; - } else { - gridForPrunedNode = 3; - } - } else if (controlRegions[1] == 0 && controlRegions[2] == 0) { - if (random2 == 0) { - gridForPrunedNode = 1; - } else { - gridForPrunedNode = 2; - } - } else if (controlRegions[1] == 0 && controlRegions[3] == 0) { - if (random2 == 0) { - gridForPrunedNode = 1; - } else { - gridForPrunedNode = 3; - } - } else { - if (random2 == 0) { - gridForPrunedNode = 2; + return false; + } + return false; + }, "test_match"), + // return next match in input + next: /* @__PURE__ */ __name(function() { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + var token2, match2, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i2 = 0; i2 < rules.length; i2++) { + tempMatch = this._input.match(this.rules[rules[i2]]); + if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { + match2 = tempMatch; + index = i2; + if (this.options.backtrack_lexer) { + token2 = this.test_match(tempMatch, rules[i2]); + if (token2 !== false) { + return token2; + } else if (this._backtrack) { + match2 = false; + continue; } else { - gridForPrunedNode = 3; + return false; } + } else if (!this.options.flex) { + break; } - } else if (minCount == 4 && min9 == 0) { - var random2 = Math.floor(Math.random() * 4); - gridForPrunedNode = random2; - } else { - gridForPrunedNode = minIndex; } - if (gridForPrunedNode == 0) { - prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() - nodeToConnect.getHeight() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getHeight() / 2); - } else if (gridForPrunedNode == 1) { - prunedNode.setCenter(nodeToConnect.getCenterX() + nodeToConnect.getWidth() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getWidth() / 2, nodeToConnect.getCenterY()); - } else if (gridForPrunedNode == 2) { - prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() + nodeToConnect.getHeight() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getHeight() / 2); - } else { - prunedNode.setCenter(nodeToConnect.getCenterX() - nodeToConnect.getWidth() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getWidth() / 2, nodeToConnect.getCenterY()); + } + if (match2) { + token2 = this.test_match(match2, rules[index]); + if (token2 !== false) { + return token2; } - }; - module3.exports = CoSELayout; - }, - /* 7 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var coseBase = {}; - coseBase.layoutBase = __webpack_require__(0); - coseBase.CoSEConstants = __webpack_require__(1); - coseBase.CoSEEdge = __webpack_require__(2); - coseBase.CoSEGraph = __webpack_require__(3); - coseBase.CoSEGraphManager = __webpack_require__(4); - coseBase.CoSELayout = __webpack_require__(6); - coseBase.CoSENode = __webpack_require__(5); - module3.exports = coseBase; + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, "next"), + // return next match that has a token + lex: /* @__PURE__ */ __name(function lex() { + var r2 = this.next(); + if (r2) { + return r2; + } else { + return this.lex(); + } + }, "lex"), + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: /* @__PURE__ */ __name(function begin(condition) { + this.conditionStack.push(condition); + }, "begin"), + // pop the previously active lexer condition state off the condition stack + popState: /* @__PURE__ */ __name(function popState() { + var n2 = this.conditionStack.length - 1; + if (n2 > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, "popState"), + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: /* @__PURE__ */ __name(function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, "_currentRules"), + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: /* @__PURE__ */ __name(function topState(n2) { + n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); + if (n2 >= 0) { + return this.conditionStack[n2]; + } else { + return "INITIAL"; + } + }, "topState"), + // alias for begin(condition) + pushState: /* @__PURE__ */ __name(function pushState(condition) { + this.begin(condition); + }, "pushState"), + // return the number of states currently on the stack + stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { + return this.conditionStack.length; + }, "stateStackSize"), + options: { "case-insensitive": true }, + performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + var YYSTATE = YY_START; + switch ($avoiding_name_collisions) { + case 0: + break; + case 1: + break; + case 2: + return 10; + break; + case 3: + break; + case 4: + break; + case 5: + return 4; + break; + case 6: + return 11; + break; + case 7: + this.begin("acc_title"); + return 12; + break; + case 8: + this.popState(); + return "acc_title_value"; + break; + case 9: + this.begin("acc_descr"); + return 14; + break; + case 10: + this.popState(); + return "acc_descr_value"; + break; + case 11: + this.begin("acc_descr_multiline"); + break; + case 12: + this.popState(); + break; + case 13: + return "acc_descr_multiline_value"; + break; + case 14: + return 17; + break; + case 15: + return 21; + break; + case 16: + return 20; + break; + case 17: + return 6; + break; + case 18: + return "INVALID"; + break; + } + }, "anonymous"), + rules: [/^(?:%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:timeline\b)/i, /^(?:title\s[^\n]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:section\s[^:\n]+)/i, /^(?::\s(?:[^:\n]|:(?!\s))+)/i, /^(?:[^#:\n]+)/i, /^(?:$)/i, /^(?:.)/i], + conditions: { "acc_descr_multiline": { "rules": [12, 13], "inclusive": false }, "acc_descr": { "rules": [10], "inclusive": false }, "acc_title": { "rules": [8], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18], "inclusive": true } } + }; + return lexer2; + })(); + parser24.lexer = lexer; + function Parser3() { + this.yy = {}; + } + __name(Parser3, "Parser"); + Parser3.prototype = parser24; + parser24.Parser = Parser3; + return new Parser3(); + })(); + parser15.parser = parser15; + timeline_default = parser15; + } + }); + + // src/diagrams/timeline/timelineDb.js + var timelineDb_exports = {}; + __export(timelineDb_exports, { + addEvent: () => addEvent, + addSection: () => addSection4, + addTask: () => addTask3, + addTaskOrg: () => addTaskOrg3, + clear: () => clear14, + default: () => timelineDb_default, + getCommonDb: () => getCommonDb2, + getSections: () => getSections4, + getTasks: () => getTasks3 + }); + var currentSection3, currentTaskId, sections4, tasks3, rawTasks3, getCommonDb2, clear14, addSection4, getSections4, getTasks3, addTask3, addEvent, addTaskOrg3, compileTasks3, timelineDb_default; + var init_timelineDb = __esm({ + "src/diagrams/timeline/timelineDb.js"() { + "use strict"; + init_commonDb(); + currentSection3 = ""; + currentTaskId = 0; + sections4 = []; + tasks3 = []; + rawTasks3 = []; + getCommonDb2 = /* @__PURE__ */ __name(() => commonDb_exports, "getCommonDb"); + clear14 = /* @__PURE__ */ __name(function() { + sections4.length = 0; + tasks3.length = 0; + currentSection3 = ""; + rawTasks3.length = 0; + clear(); + }, "clear"); + addSection4 = /* @__PURE__ */ __name(function(txt) { + currentSection3 = txt; + sections4.push(txt); + }, "addSection"); + getSections4 = /* @__PURE__ */ __name(function() { + return sections4; + }, "getSections"); + getTasks3 = /* @__PURE__ */ __name(function() { + let allItemsProcessed = compileTasks3(); + const maxDepth = 100; + let iterationCount = 0; + while (!allItemsProcessed && iterationCount < maxDepth) { + allItemsProcessed = compileTasks3(); + iterationCount++; + } + tasks3.push(...rawTasks3); + return tasks3; + }, "getTasks"); + addTask3 = /* @__PURE__ */ __name(function(period, length2, event3) { + const rawTask = { + id: currentTaskId++, + section: currentSection3, + type: currentSection3, + task: period, + score: length2 ? length2 : 0, + //if event is defined, then add it the events array + events: event3 ? [event3] : [] + }; + rawTasks3.push(rawTask); + }, "addTask"); + addEvent = /* @__PURE__ */ __name(function(event3) { + const currentTask = rawTasks3.find((task) => task.id === currentTaskId - 1); + currentTask.events.push(event3); + }, "addEvent"); + addTaskOrg3 = /* @__PURE__ */ __name(function(descr) { + const newTask = { + section: currentSection3, + type: currentSection3, + description: descr, + task: descr, + classes: [] + }; + tasks3.push(newTask); + }, "addTaskOrg"); + compileTasks3 = /* @__PURE__ */ __name(function() { + const compileTask = /* @__PURE__ */ __name(function(pos) { + return rawTasks3[pos].processed; + }, "compileTask"); + let allProcessed = true; + for (const [i2, rawTask] of rawTasks3.entries()) { + compileTask(i2); + allProcessed = allProcessed && rawTask.processed; + } + return allProcessed; + }, "compileTasks"); + timelineDb_default = { + clear: clear14, + getCommonDb: getCommonDb2, + addSection: addSection4, + getSections: getSections4, + getTasks: getTasks3, + addTask: addTask3, + addTaskOrg: addTaskOrg3, + addEvent + }; + } + }); + + // src/diagrams/timeline/svgDraw.js + function wrap2(text4, width3) { + text4.each(function() { + var text5 = select_default2(this), words = text5.text().split(/(\s+|
    )/).reverse(), word, line2 = [], lineHeight = 1.1, y6 = text5.attr("y"), dy = parseFloat(text5.attr("dy")), tspan = text5.text(null).append("tspan").attr("x", 0).attr("y", y6).attr("dy", dy + "em"); + for (let j3 = 0; j3 < words.length; j3++) { + word = words[words.length - 1 - j3]; + line2.push(word); + tspan.text(line2.join(" ").trim()); + if (tspan.node().getComputedTextLength() > width3 || word === "
    ") { + line2.pop(); + tspan.text(line2.join(" ").trim()); + if (word === "
    ") { + line2 = [""]; + } else { + line2 = [word]; + } + tspan = text5.append("tspan").attr("x", 0).attr("y", y6).attr("dy", lineHeight + "em").text(word); + } + } + }); + } + var MAX_SECTIONS, drawRect6, drawFace2, drawCircle2, drawText5, drawLabel3, drawSection2, taskCount2, drawTask2, drawBackgroundRect4, getTextObj4, getNoteRect3, _drawTextCandidateFunc4, initGraphics2, drawNode, getVirtualNodeHeight, defaultBkg, svgDraw_default4; + var init_svgDraw4 = __esm({ + "src/diagrams/timeline/svgDraw.js"() { + "use strict"; + init_src32(); + MAX_SECTIONS = 12; + drawRect6 = /* @__PURE__ */ __name(function(elem, rectData) { + const rectElem = elem.append("rect"); + rectElem.attr("x", rectData.x); + rectElem.attr("y", rectData.y); + rectElem.attr("fill", rectData.fill); + rectElem.attr("stroke", rectData.stroke); + rectElem.attr("width", rectData.width); + rectElem.attr("height", rectData.height); + rectElem.attr("rx", rectData.rx); + rectElem.attr("ry", rectData.ry); + if (rectData.class !== void 0) { + rectElem.attr("class", rectData.class); + } + return rectElem; + }, "drawRect"); + drawFace2 = /* @__PURE__ */ __name(function(element3, faceData) { + const radius2 = 15; + const circleElement = element3.append("circle").attr("cx", faceData.cx).attr("cy", faceData.cy).attr("class", "face").attr("r", radius2).attr("stroke-width", 2).attr("overflow", "visible"); + const face = element3.append("g"); + face.append("circle").attr("cx", faceData.cx - radius2 / 3).attr("cy", faceData.cy - radius2 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"); + face.append("circle").attr("cx", faceData.cx + radius2 / 3).attr("cy", faceData.cy - radius2 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"); + function smile(face2) { + const arc = arc_default().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius2 / 2).outerRadius(radius2 / 2.2); + face2.append("path").attr("class", "mouth").attr("d", arc).attr("transform", "translate(" + faceData.cx + "," + (faceData.cy + 2) + ")"); + } + __name(smile, "smile"); + function sad(face2) { + const arc = arc_default().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius2 / 2).outerRadius(radius2 / 2.2); + face2.append("path").attr("class", "mouth").attr("d", arc).attr("transform", "translate(" + faceData.cx + "," + (faceData.cy + 7) + ")"); + } + __name(sad, "sad"); + function ambivalent(face2) { + face2.append("line").attr("class", "mouth").attr("stroke", 2).attr("x1", faceData.cx - 5).attr("y1", faceData.cy + 7).attr("x2", faceData.cx + 5).attr("y2", faceData.cy + 7).attr("class", "mouth").attr("stroke-width", "1px").attr("stroke", "#666"); + } + __name(ambivalent, "ambivalent"); + if (faceData.score > 3) { + smile(face); + } else if (faceData.score < 3) { + sad(face); + } else { + ambivalent(face); + } + return circleElement; + }, "drawFace"); + drawCircle2 = /* @__PURE__ */ __name(function(element3, circleData) { + const circleElement = element3.append("circle"); + circleElement.attr("cx", circleData.cx); + circleElement.attr("cy", circleData.cy); + circleElement.attr("class", "actor-" + circleData.pos); + circleElement.attr("fill", circleData.fill); + circleElement.attr("stroke", circleData.stroke); + circleElement.attr("r", circleData.r); + if (circleElement.class !== void 0) { + circleElement.attr("class", circleElement.class); + } + if (circleData.title !== void 0) { + circleElement.append("title").text(circleData.title); + } + return circleElement; + }, "drawCircle"); + drawText5 = /* @__PURE__ */ __name(function(elem, textData) { + const nText = textData.text.replace(//gi, " "); + const textElem = elem.append("text"); + textElem.attr("x", textData.x); + textElem.attr("y", textData.y); + textElem.attr("class", "legend"); + textElem.style("text-anchor", textData.anchor); + if (textData.class !== void 0) { + textElem.attr("class", textData.class); + } + const span = textElem.append("tspan"); + span.attr("x", textData.x + textData.textMargin * 2); + span.text(nText); + return textElem; + }, "drawText"); + drawLabel3 = /* @__PURE__ */ __name(function(elem, txtObject) { + function genPoints(x5, y6, width3, height2, cut) { + return x5 + "," + y6 + " " + (x5 + width3) + "," + y6 + " " + (x5 + width3) + "," + (y6 + height2 - cut) + " " + (x5 + width3 - cut * 1.2) + "," + (y6 + height2) + " " + x5 + "," + (y6 + height2); + } + __name(genPoints, "genPoints"); + const polygon2 = elem.append("polygon"); + polygon2.attr("points", genPoints(txtObject.x, txtObject.y, 50, 20, 7)); + polygon2.attr("class", "labelBox"); + txtObject.y = txtObject.y + txtObject.labelMargin; + txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin; + drawText5(elem, txtObject); + }, "drawLabel"); + drawSection2 = /* @__PURE__ */ __name(function(elem, section, conf5) { + const g2 = elem.append("g"); + const rect3 = getNoteRect3(); + rect3.x = section.x; + rect3.y = section.y; + rect3.fill = section.fill; + rect3.width = conf5.width; + rect3.height = conf5.height; + rect3.class = "journey-section section-type-" + section.num; + rect3.rx = 3; + rect3.ry = 3; + drawRect6(g2, rect3); + _drawTextCandidateFunc4(conf5)( + section.text, + g2, + rect3.x, + rect3.y, + rect3.width, + rect3.height, + { class: "journey-section section-type-" + section.num }, + conf5, + section.colour + ); + }, "drawSection"); + taskCount2 = -1; + drawTask2 = /* @__PURE__ */ __name(function(elem, task, conf5) { + const center4 = task.x + conf5.width / 2; + const g2 = elem.append("g"); + taskCount2++; + const maxHeight = 300 + 5 * 30; + g2.append("line").attr("id", "task" + taskCount2).attr("x1", center4).attr("y1", task.y).attr("x2", center4).attr("y2", maxHeight).attr("class", "task-line").attr("stroke-width", "1px").attr("stroke-dasharray", "4 2").attr("stroke", "#666"); + drawFace2(g2, { + cx: center4, + cy: 300 + (5 - task.score) * 30, + score: task.score + }); + const rect3 = getNoteRect3(); + rect3.x = task.x; + rect3.y = task.y; + rect3.fill = task.fill; + rect3.width = conf5.width; + rect3.height = conf5.height; + rect3.class = "task task-type-" + task.num; + rect3.rx = 3; + rect3.ry = 3; + drawRect6(g2, rect3); + _drawTextCandidateFunc4(conf5)( + task.task, + g2, + rect3.x, + rect3.y, + rect3.width, + rect3.height, + { class: "task" }, + conf5, + task.colour + ); + }, "drawTask"); + drawBackgroundRect4 = /* @__PURE__ */ __name(function(elem, bounds4) { + const rectElem = drawRect6(elem, { + x: bounds4.startx, + y: bounds4.starty, + width: bounds4.stopx - bounds4.startx, + height: bounds4.stopy - bounds4.starty, + fill: bounds4.fill, + class: "rect" + }); + rectElem.lower(); + }, "drawBackgroundRect"); + getTextObj4 = /* @__PURE__ */ __name(function() { + return { + x: 0, + y: 0, + fill: void 0, + "text-anchor": "start", + width: 100, + height: 100, + textMargin: 0, + rx: 0, + ry: 0 + }; + }, "getTextObj"); + getNoteRect3 = /* @__PURE__ */ __name(function() { + return { + x: 0, + y: 0, + width: 100, + anchor: "start", + height: 100, + rx: 0, + ry: 0 + }; + }, "getNoteRect"); + _drawTextCandidateFunc4 = /* @__PURE__ */ (function() { + function byText(content, g2, x5, y6, width3, height2, textAttrs, colour) { + const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y6 + height2 / 2 + 5).style("font-color", colour).style("text-anchor", "middle").text(content); + _setTextAttrs(text4, textAttrs); + } + __name(byText, "byText"); + function byTspan(content, g2, x5, y6, width3, height2, textAttrs, conf5, colour) { + const { taskFontSize, taskFontFamily } = conf5; + const lines = content.split(//gi); + for (let i2 = 0; i2 < lines.length; i2++) { + const dy = i2 * taskFontSize - taskFontSize * (lines.length - 1) / 2; + const text4 = g2.append("text").attr("x", x5 + width3 / 2).attr("y", y6).attr("fill", colour).style("text-anchor", "middle").style("font-size", taskFontSize).style("font-family", taskFontFamily); + text4.append("tspan").attr("x", x5 + width3 / 2).attr("dy", dy).text(lines[i2]); + text4.attr("y", y6 + height2 / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central"); + _setTextAttrs(text4, textAttrs); + } + } + __name(byTspan, "byTspan"); + function byFo(content, g2, x5, y6, width3, height2, textAttrs, conf5) { + const body = g2.append("switch"); + const f2 = body.append("foreignObject").attr("x", x5).attr("y", y6).attr("width", width3).attr("height", height2).attr("position", "fixed"); + const text4 = f2.append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); + text4.append("div").attr("class", "label").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(content); + byTspan(content, body, x5, y6, width3, height2, textAttrs, conf5); + _setTextAttrs(text4, textAttrs); + } + __name(byFo, "byFo"); + function _setTextAttrs(toText, fromTextAttrsDict) { + for (const key in fromTextAttrsDict) { + if (key in fromTextAttrsDict) { + toText.attr(key, fromTextAttrsDict[key]); } - /******/ - ]) + } + } + __name(_setTextAttrs, "_setTextAttrs"); + return function(conf5) { + return conf5.textPlacement === "fo" ? byFo : conf5.textPlacement === "old" ? byText : byTspan; + }; + })(); + initGraphics2 = /* @__PURE__ */ __name(function(graphics) { + graphics.append("defs").append("marker").attr("id", "arrowhead").attr("refX", 5).attr("refY", 2).attr("markerWidth", 6).attr("markerHeight", 4).attr("orient", "auto").append("path").attr("d", "M 0,0 V 4 L6,2 Z"); + }, "initGraphics"); + __name(wrap2, "wrap"); + drawNode = /* @__PURE__ */ __name(function(elem, node2, fullSection, conf5) { + const section = fullSection % MAX_SECTIONS - 1; + const nodeElem = elem.append("g"); + node2.section = section; + nodeElem.attr( + "class", + (node2.class ? node2.class + " " : "") + "timeline-node " + ("section-" + section) ); - }); + const bkgElem = nodeElem.append("g"); + const textElem = nodeElem.append("g"); + const txt = textElem.append("text").text(node2.descr).attr("dy", "1em").attr("alignment-baseline", "middle").attr("dominant-baseline", "middle").attr("text-anchor", "middle").call(wrap2, node2.width); + const bbox = txt.node().getBBox(); + const fontSize = conf5.fontSize?.replace ? conf5.fontSize.replace("px", "") : conf5.fontSize; + node2.height = bbox.height + fontSize * 1.1 * 0.5 + node2.padding; + node2.height = Math.max(node2.height, node2.maxHeight); + node2.width = node2.width + 2 * node2.padding; + textElem.attr("transform", "translate(" + node2.width / 2 + ", " + node2.padding / 2 + ")"); + defaultBkg(bkgElem, node2, section, conf5); + return node2; + }, "drawNode"); + getVirtualNodeHeight = /* @__PURE__ */ __name(function(elem, node2, conf5) { + const textElem = elem.append("g"); + const txt = textElem.append("text").text(node2.descr).attr("dy", "1em").attr("alignment-baseline", "middle").attr("dominant-baseline", "middle").attr("text-anchor", "middle").call(wrap2, node2.width); + const bbox = txt.node().getBBox(); + const fontSize = conf5.fontSize?.replace ? conf5.fontSize.replace("px", "") : conf5.fontSize; + textElem.remove(); + return bbox.height + fontSize * 1.1 * 0.5 + node2.padding; + }, "getVirtualNodeHeight"); + defaultBkg = /* @__PURE__ */ __name(function(elem, node2, section) { + const rd = 5; + elem.append("path").attr("id", "node-" + node2.id).attr("class", "node-bkg node-" + node2.type).attr( + "d", + `M0 ${node2.height - rd} v${-node2.height + 2 * rd} q0,-5 5,-5 h${node2.width - 2 * rd} q5,0 5,5 v${node2.height - rd} H0 Z` + ); + elem.append("line").attr("class", "node-line-" + section).attr("x1", 0).attr("y1", node2.height).attr("x2", node2.width).attr("y2", node2.height); + }, "defaultBkg"); + svgDraw_default4 = { + drawRect: drawRect6, + drawCircle: drawCircle2, + drawSection: drawSection2, + drawText: drawText5, + drawLabel: drawLabel3, + drawTask: drawTask2, + drawBackgroundRect: drawBackgroundRect4, + getTextObj: getTextObj4, + getNoteRect: getNoteRect3, + initGraphics: initGraphics2, + drawNode, + getVirtualNodeHeight + }; } }); - // ../../node_modules/.pnpm/cytoscape-cose-bilkent@4.1.0_cytoscape@3.31.0/node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js - var require_cytoscape_cose_bilkent = __commonJS({ - "../../node_modules/.pnpm/cytoscape-cose-bilkent@4.1.0_cytoscape@3.31.0/node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js"(exports2, module2) { + // src/diagrams/timeline/timelineRenderer.ts + var draw17, drawTasks2, drawEvents, timelineRenderer_default; + var init_timelineRenderer = __esm({ + "src/diagrams/timeline/timelineRenderer.ts"() { "use strict"; - (/* @__PURE__ */ __name(function webpackUniversalModuleDefinition(root4, factory) { - if (typeof exports2 === "object" && typeof module2 === "object") - module2.exports = factory(require_cose_base()); - else if (typeof define === "function" && define.amd) - define(["cose-base"], factory); - else if (typeof exports2 === "object") - exports2["cytoscapeCoseBilkent"] = factory(require_cose_base()); - else - root4["cytoscapeCoseBilkent"] = factory(root4["coseBase"]); - }, "webpackUniversalModuleDefinition"))(exports2, function(__WEBPACK_EXTERNAL_MODULE_0__) { - return ( - /******/ - function(modules2) { - var installedModules = {}; - function __webpack_require__(moduleId) { - if (installedModules[moduleId]) { - return installedModules[moduleId].exports; - } - var module3 = installedModules[moduleId] = { - /******/ - i: moduleId, - /******/ - l: false, - /******/ - exports: {} - /******/ - }; - modules2[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); - module3.l = true; - return module3.exports; - } - __name(__webpack_require__, "__webpack_require__"); - __webpack_require__.m = modules2; - __webpack_require__.c = installedModules; - __webpack_require__.i = function(value2) { - return value2; + init_src32(); + init_svgDraw4(); + init_logger(); + init_diagramAPI(); + init_setupGraphViewbox(); + draw17 = /* @__PURE__ */ __name(function(text4, id30, version3, diagObj) { + const conf5 = getConfig2(); + const LEFT_MARGIN = conf5.timeline?.leftMargin ?? 50; + log.debug("timeline", diagObj.db); + const securityLevel = conf5.securityLevel; + let sandboxElement; + if (securityLevel === "sandbox") { + sandboxElement = select_default2("#i" + id30); + } + const root3 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); + const svg2 = root3.select("#" + id30); + svg2.append("g"); + const tasks4 = diagObj.db.getTasks(); + const title2 = diagObj.db.getCommonDb().getDiagramTitle(); + log.debug("task", tasks4); + svgDraw_default4.initGraphics(svg2); + const sections6 = diagObj.db.getSections(); + log.debug("sections", sections6); + let maxSectionHeight = 0; + let maxTaskHeight = 0; + let depthY = 0; + let sectionBeginY = 0; + let masterX = 50 + LEFT_MARGIN; + let masterY = 50; + sectionBeginY = 50; + let sectionNumber = 0; + let hasSections = true; + sections6.forEach(function(section) { + const sectionNode = { + number: sectionNumber, + descr: section, + section: sectionNumber, + width: 150, + padding: 20, + maxHeight: maxSectionHeight + }; + const sectionHeight = svgDraw_default4.getVirtualNodeHeight(svg2, sectionNode, conf5); + log.debug("sectionHeight before draw", sectionHeight); + maxSectionHeight = Math.max(maxSectionHeight, sectionHeight + 20); + }); + let maxEventCount = 0; + let maxEventLineLength = 0; + log.debug("tasks.length", tasks4.length); + for (const [i2, task] of tasks4.entries()) { + const taskNode = { + number: i2, + descr: task, + section: task.section, + width: 150, + padding: 20, + maxHeight: maxTaskHeight + }; + const taskHeight = svgDraw_default4.getVirtualNodeHeight(svg2, taskNode, conf5); + log.debug("taskHeight before draw", taskHeight); + maxTaskHeight = Math.max(maxTaskHeight, taskHeight + 20); + maxEventCount = Math.max(maxEventCount, task.events.length); + let maxEventLineLengthTemp = 0; + for (const event3 of task.events) { + const eventNode = { + descr: event3, + section: task.section, + number: task.section, + width: 150, + padding: 20, + maxHeight: 50 }; - __webpack_require__.d = function(exports3, name, getter) { - if (!__webpack_require__.o(exports3, name)) { - Object.defineProperty(exports3, name, { - /******/ - configurable: false, - /******/ - enumerable: true, - /******/ - get: getter - /******/ - }); - } + maxEventLineLengthTemp += svgDraw_default4.getVirtualNodeHeight(svg2, eventNode, conf5); + } + if (task.events.length > 0) { + maxEventLineLengthTemp += (task.events.length - 1) * 10; + } + maxEventLineLength = Math.max(maxEventLineLength, maxEventLineLengthTemp); + } + log.debug("maxSectionHeight before draw", maxSectionHeight); + log.debug("maxTaskHeight before draw", maxTaskHeight); + if (sections6 && sections6.length > 0) { + sections6.forEach((section) => { + const tasksForSection = tasks4.filter((task) => task.section === section); + const sectionNode = { + number: sectionNumber, + descr: section, + section: sectionNumber, + width: 200 * Math.max(tasksForSection.length, 1) - 50, + padding: 20, + maxHeight: maxSectionHeight }; - __webpack_require__.n = function(module3) { - var getter = module3 && module3.__esModule ? ( - /******/ - /* @__PURE__ */ __name(function getDefault() { - return module3["default"]; - }, "getDefault") - ) : ( - /******/ - /* @__PURE__ */ __name(function getModuleExports() { - return module3; - }, "getModuleExports") + log.debug("sectionNode", sectionNode); + const sectionNodeWrapper = svg2.append("g"); + const node2 = svgDraw_default4.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf5); + log.debug("sectionNode output", node2); + sectionNodeWrapper.attr("transform", `translate(${masterX}, ${sectionBeginY})`); + masterY += maxSectionHeight + 50; + if (tasksForSection.length > 0) { + drawTasks2( + svg2, + tasksForSection, + sectionNumber, + masterX, + masterY, + maxTaskHeight, + conf5, + maxEventCount, + maxEventLineLength, + maxSectionHeight, + false ); - __webpack_require__.d(getter, "a", getter); - return getter; - }; - __webpack_require__.o = function(object3, property2) { - return Object.prototype.hasOwnProperty.call(object3, property2); - }; - __webpack_require__.p = ""; - return __webpack_require__(__webpack_require__.s = 1); - }([ - /* 0 */ - /***/ - function(module3, exports3) { - module3.exports = __WEBPACK_EXTERNAL_MODULE_0__; - }, - /* 1 */ - /***/ - function(module3, exports3, __webpack_require__) { - "use strict"; - var LayoutConstants = __webpack_require__(0).layoutBase.LayoutConstants; - var FDLayoutConstants = __webpack_require__(0).layoutBase.FDLayoutConstants; - var CoSEConstants = __webpack_require__(0).CoSEConstants; - var CoSELayout = __webpack_require__(0).CoSELayout; - var CoSENode = __webpack_require__(0).CoSENode; - var PointD = __webpack_require__(0).layoutBase.PointD; - var DimensionD2 = __webpack_require__(0).layoutBase.DimensionD; - var defaults4 = { - // Called on `layoutready` - ready: /* @__PURE__ */ __name(function ready4() { - }, "ready"), - // Called on `layoutstop` - stop: /* @__PURE__ */ __name(function stop5() { - }, "stop"), - // 'draft', 'default' or 'proof" - // - 'draft' fast cooling rate - // - 'default' moderate cooling rate - // - "proof" slow cooling rate - quality: "default", - // include labels in node dimensions - nodeDimensionsIncludeLabels: false, - // number of ticks per frame; higher is faster but more jerky - refresh: 30, - // Whether to fit the network view after when done - fit: true, - // Padding on fit - padding: 10, - // Whether to enable incremental mode - randomize: true, - // Node repulsion (non overlapping) multiplier - nodeRepulsion: 4500, - // Ideal edge (non nested) length - idealEdgeLength: 50, - // Divisor to compute edge forces - edgeElasticity: 0.45, - // Nesting factor (multiplier) to compute ideal edge length for nested edges - nestingFactor: 0.1, - // Gravity force (constant) - gravity: 0.25, - // Maximum number of iterations to perform - numIter: 2500, - // For enabling tiling - tile: true, - // Type of layout animation. The option set is {'during', 'end', false} - animate: "end", - // Duration for animate:end - animationDuration: 500, - // Represents the amount of the vertical space to put between the zero degree members during the tiling operation(can also be a function) - tilingPaddingVertical: 10, - // Represents the amount of the horizontal space to put between the zero degree members during the tiling operation(can also be a function) - tilingPaddingHorizontal: 10, - // Gravity range (constant) for compounds - gravityRangeCompound: 1.5, - // Gravity force (constant) for compounds - gravityCompound: 1, - // Gravity range (constant) - gravityRange: 3.8, - // Initial cooling factor for incremental layout - initialEnergyOnIncremental: 0.5 - }; - function extend5(defaults5, options3) { - var obj = {}; - for (var i2 in defaults5) { - obj[i2] = defaults5[i2]; - } - for (var i2 in options3) { - obj[i2] = options3[i2]; - } - return obj; - } - __name(extend5, "extend"); - ; - function _CoSELayout(_options) { - this.options = extend5(defaults4, _options); - getUserOptions(this.options); + } + masterX += 200 * Math.max(tasksForSection.length, 1); + masterY = sectionBeginY; + sectionNumber++; + }); + } else { + hasSections = false; + drawTasks2( + svg2, + tasks4, + sectionNumber, + masterX, + masterY, + maxTaskHeight, + conf5, + maxEventCount, + maxEventLineLength, + maxSectionHeight, + true + ); + } + const box = svg2.node().getBBox(); + log.debug("bounds", box); + if (title2) { + svg2.append("text").text(title2).attr("x", box.width / 2 - LEFT_MARGIN).attr("font-size", "4ex").attr("font-weight", "bold").attr("y", 20); + } + depthY = hasSections ? maxSectionHeight + maxTaskHeight + 150 : maxTaskHeight + 100; + const lineWrapper = svg2.append("g").attr("class", "lineWrapper"); + lineWrapper.append("line").attr("x1", LEFT_MARGIN).attr("y1", depthY).attr("x2", box.width + 3 * LEFT_MARGIN).attr("y2", depthY).attr("stroke-width", 4).attr("stroke", "black").attr("marker-end", "url(#arrowhead)"); + setupGraphViewbox( + void 0, + svg2, + conf5.timeline?.padding ?? 50, + conf5.timeline?.useMaxWidth ?? false + ); + }, "draw"); + drawTasks2 = /* @__PURE__ */ __name(function(diagram27, tasks4, sectionColor, masterX, masterY, maxTaskHeight, conf5, maxEventCount, maxEventLineLength, maxSectionHeight, isWithoutSections) { + for (const task of tasks4) { + const taskNode = { + descr: task.task, + section: sectionColor, + number: sectionColor, + width: 150, + padding: 20, + maxHeight: maxTaskHeight + }; + log.debug("taskNode", taskNode); + const taskWrapper = diagram27.append("g").attr("class", "taskWrapper"); + const node2 = svgDraw_default4.drawNode(taskWrapper, taskNode, sectionColor, conf5); + const taskHeight = node2.height; + log.debug("taskHeight after draw", taskHeight); + taskWrapper.attr("transform", `translate(${masterX}, ${masterY})`); + maxTaskHeight = Math.max(maxTaskHeight, taskHeight); + if (task.events) { + const lineWrapper = diagram27.append("g").attr("class", "lineWrapper"); + let lineLength = maxTaskHeight; + masterY += 100; + lineLength = lineLength + drawEvents(diagram27, task.events, sectionColor, masterX, masterY, conf5); + masterY -= 100; + lineWrapper.append("line").attr("x1", masterX + 190 / 2).attr("y1", masterY + maxTaskHeight).attr("x2", masterX + 190 / 2).attr("y2", masterY + maxTaskHeight + 100 + maxEventLineLength + 100).attr("stroke-width", 2).attr("stroke", "black").attr("marker-end", "url(#arrowhead)").attr("stroke-dasharray", "5,5"); + } + masterX = masterX + 200; + if (isWithoutSections && !conf5.timeline?.disableMulticolor) { + sectionColor++; + } + } + masterY = masterY - 10; + }, "drawTasks"); + drawEvents = /* @__PURE__ */ __name(function(diagram27, events, sectionColor, masterX, masterY, conf5) { + let maxEventHeight = 0; + const eventBeginY = masterY; + masterY = masterY + 100; + for (const event3 of events) { + const eventNode = { + descr: event3, + section: sectionColor, + number: sectionColor, + width: 150, + padding: 20, + maxHeight: 50 + }; + log.debug("eventNode", eventNode); + const eventWrapper = diagram27.append("g").attr("class", "eventWrapper"); + const node2 = svgDraw_default4.drawNode(eventWrapper, eventNode, sectionColor, conf5); + const eventHeight = node2.height; + maxEventHeight = maxEventHeight + eventHeight; + eventWrapper.attr("transform", `translate(${masterX}, ${masterY})`); + masterY = masterY + 10 + eventHeight; + } + masterY = eventBeginY; + return maxEventHeight; + }, "drawEvents"); + timelineRenderer_default = { + setConf: /* @__PURE__ */ __name(() => { + }, "setConf"), + draw: draw17 + }; + } + }); + + // src/diagrams/timeline/styles.js + var genSections, getStyles13, styles_default12; + var init_styles12 = __esm({ + "src/diagrams/timeline/styles.js"() { + "use strict"; + init_dist(); + genSections = /* @__PURE__ */ __name((options2) => { + let sections6 = ""; + for (let i2 = 0; i2 < options2.THEME_COLOR_LIMIT; i2++) { + options2["lineColor" + i2] = options2["lineColor" + i2] || options2["cScaleInv" + i2]; + if (is_dark_default(options2["lineColor" + i2])) { + options2["lineColor" + i2] = lighten_default(options2["lineColor" + i2], 20); + } else { + options2["lineColor" + i2] = darken_default(options2["lineColor" + i2], 20); + } + } + for (let i2 = 0; i2 < options2.THEME_COLOR_LIMIT; i2++) { + const sw = "" + (17 - 3 * i2); + sections6 += ` + .section-${i2 - 1} rect, .section-${i2 - 1} path, .section-${i2 - 1} circle, .section-${i2 - 1} path { + fill: ${options2["cScale" + i2]}; + } + .section-${i2 - 1} text { + fill: ${options2["cScaleLabel" + i2]}; + } + .node-icon-${i2 - 1} { + font-size: 40px; + color: ${options2["cScaleLabel" + i2]}; + } + .section-edge-${i2 - 1}{ + stroke: ${options2["cScale" + i2]}; + } + .edge-depth-${i2 - 1}{ + stroke-width: ${sw}; + } + .section-${i2 - 1} line { + stroke: ${options2["cScaleInv" + i2]} ; + stroke-width: 3; + } + + .lineWrapper line{ + stroke: ${options2["cScaleLabel" + i2]} ; + } + + .disabled, .disabled circle, .disabled text { + fill: lightgray; + } + .disabled text { + fill: #efefef; + } + `; + } + return sections6; + }, "genSections"); + getStyles13 = /* @__PURE__ */ __name((options2) => ` + .edge { + stroke-width: 3; + } + ${genSections(options2)} + .section-root rect, .section-root path, .section-root circle { + fill: ${options2.git0}; + } + .section-root text { + fill: ${options2.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .eventWrapper { + filter: brightness(120%); + } +`, "getStyles"); + styles_default12 = getStyles13; + } + }); + + // src/diagrams/timeline/timeline-definition.ts + var timeline_definition_exports = {}; + __export(timeline_definition_exports, { + diagram: () => diagram18 + }); + var diagram18; + var init_timeline_definition = __esm({ + "src/diagrams/timeline/timeline-definition.ts"() { + "use strict"; + init_timeline(); + init_timelineDb(); + init_timelineRenderer(); + init_styles12(); + diagram18 = { + db: timelineDb_exports, + renderer: timelineRenderer_default, + parser: timeline_default, + styles: styles_default12 + }; + } + }); + + // src/diagrams/mindmap/parser/mindmap.jison + var parser16, mindmap_default; + var init_mindmap = __esm({ + "src/diagrams/mindmap/parser/mindmap.jison"() { + "use strict"; + parser16 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; + return o3; + }, "o"), $V0 = [1, 4], $V1 = [1, 13], $V2 = [1, 12], $V3 = [1, 15], $V4 = [1, 16], $V5 = [1, 20], $V6 = [1, 19], $V7 = [6, 7, 8], $V8 = [1, 26], $V9 = [1, 24], $Va = [1, 25], $Vb = [6, 7, 11], $Vc = [1, 6, 13, 15, 16, 19, 22], $Vd = [1, 33], $Ve = [1, 34], $Vf = [1, 6, 7, 11, 13, 15, 16, 19, 22]; + var parser24 = { + trace: /* @__PURE__ */ __name(function trace() { + }, "trace"), + yy: {}, + symbols_: { "error": 2, "start": 3, "mindMap": 4, "spaceLines": 5, "SPACELINE": 6, "NL": 7, "MINDMAP": 8, "document": 9, "stop": 10, "EOF": 11, "statement": 12, "SPACELIST": 13, "node": 14, "ICON": 15, "CLASS": 16, "nodeWithId": 17, "nodeWithoutId": 18, "NODE_DSTART": 19, "NODE_DESCR": 20, "NODE_DEND": 21, "NODE_ID": 22, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 6: "SPACELINE", 7: "NL", 8: "MINDMAP", 11: "EOF", 13: "SPACELIST", 15: "ICON", 16: "CLASS", 19: "NODE_DSTART", 20: "NODE_DESCR", 21: "NODE_DEND", 22: "NODE_ID" }, + productions_: [0, [3, 1], [3, 2], [5, 1], [5, 2], [5, 2], [4, 2], [4, 3], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [9, 3], [9, 2], [12, 2], [12, 2], [12, 2], [12, 1], [12, 1], [12, 1], [12, 1], [12, 1], [14, 1], [14, 1], [18, 3], [17, 1], [17, 4]], + performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 6: + case 7: + return yy; + break; + case 8: + yy.getLogger().trace("Stop NL "); + break; + case 9: + yy.getLogger().trace("Stop EOF "); + break; + case 11: + yy.getLogger().trace("Stop NL2 "); + break; + case 12: + yy.getLogger().trace("Stop EOF2 "); + break; + case 15: + yy.getLogger().info("Node: ", $$[$0].id); + yy.addNode($$[$0 - 1].length, $$[$0].id, $$[$0].descr, $$[$0].type); + break; + case 16: + yy.getLogger().trace("Icon: ", $$[$0]); + yy.decorateNode({ icon: $$[$0] }); + break; + case 17: + case 21: + yy.decorateNode({ class: $$[$0] }); + break; + case 18: + yy.getLogger().trace("SPACELIST"); + break; + case 19: + yy.getLogger().trace("Node: ", $$[$0].id); + yy.addNode(0, $$[$0].id, $$[$0].descr, $$[$0].type); + break; + case 20: + yy.decorateNode({ icon: $$[$0] }); + break; + case 25: + yy.getLogger().trace("node found ..", $$[$0 - 2]); + this.$ = { id: $$[$0 - 1], descr: $$[$0 - 1], type: yy.getType($$[$0 - 2], $$[$0]) }; + break; + case 26: + this.$ = { id: $$[$0], descr: $$[$0], type: yy.nodeType.DEFAULT }; + break; + case 27: + yy.getLogger().trace("node found ..", $$[$0 - 3]); + this.$ = { id: $$[$0 - 3], descr: $$[$0 - 1], type: yy.getType($$[$0 - 2], $$[$0]) }; + break; + } + }, "anonymous"), + table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 8: $V0 }, { 1: [3] }, { 1: [2, 1] }, { 4: 6, 6: [1, 7], 7: [1, 8], 8: $V0 }, { 6: $V1, 7: [1, 10], 9: 9, 12: 11, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, o2($V7, [2, 3]), { 1: [2, 2] }, o2($V7, [2, 4]), o2($V7, [2, 5]), { 1: [2, 6], 6: $V1, 12: 21, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, { 6: $V1, 9: 22, 12: 11, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, { 6: $V8, 7: $V9, 10: 23, 11: $Va }, o2($Vb, [2, 22], { 17: 17, 18: 18, 14: 27, 15: [1, 28], 16: [1, 29], 19: $V5, 22: $V6 }), o2($Vb, [2, 18]), o2($Vb, [2, 19]), o2($Vb, [2, 20]), o2($Vb, [2, 21]), o2($Vb, [2, 23]), o2($Vb, [2, 24]), o2($Vb, [2, 26], { 19: [1, 30] }), { 20: [1, 31] }, { 6: $V8, 7: $V9, 10: 32, 11: $Va }, { 1: [2, 7], 6: $V1, 12: 21, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, o2($Vc, [2, 14], { 7: $Vd, 11: $Ve }), o2($Vf, [2, 8]), o2($Vf, [2, 9]), o2($Vf, [2, 10]), o2($Vb, [2, 15]), o2($Vb, [2, 16]), o2($Vb, [2, 17]), { 20: [1, 35] }, { 21: [1, 36] }, o2($Vc, [2, 13], { 7: $Vd, 11: $Ve }), o2($Vf, [2, 11]), o2($Vf, [2, 12]), { 21: [1, 37] }, o2($Vb, [2, 25]), o2($Vb, [2, 27])], + defaultActions: { 2: [2, 1], 6: [2, 2] }, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (hash.recoverable) { + this.trace(str2); + } else { + var error3 = new Error(str2); + error3.hash = hash; + throw error3; + } + }, "parseError"), + parse: /* @__PURE__ */ __name(function parse7(input) { + var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k2 in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { + sharedState.yy[k2] = this.yy[k2]; } - __name(_CoSELayout, "_CoSELayout"); - var getUserOptions = /* @__PURE__ */ __name(function getUserOptions2(options3) { - if (options3.nodeRepulsion != null) CoSEConstants.DEFAULT_REPULSION_STRENGTH = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH = options3.nodeRepulsion; - if (options3.idealEdgeLength != null) CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = options3.idealEdgeLength; - if (options3.edgeElasticity != null) CoSEConstants.DEFAULT_SPRING_STRENGTH = FDLayoutConstants.DEFAULT_SPRING_STRENGTH = options3.edgeElasticity; - if (options3.nestingFactor != null) CoSEConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = options3.nestingFactor; - if (options3.gravity != null) CoSEConstants.DEFAULT_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = options3.gravity; - if (options3.numIter != null) CoSEConstants.MAX_ITERATIONS = FDLayoutConstants.MAX_ITERATIONS = options3.numIter; - if (options3.gravityRange != null) CoSEConstants.DEFAULT_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = options3.gravityRange; - if (options3.gravityCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = options3.gravityCompound; - if (options3.gravityRangeCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = options3.gravityRangeCompound; - if (options3.initialEnergyOnIncremental != null) CoSEConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = options3.initialEnergyOnIncremental; - if (options3.quality == "draft") LayoutConstants.QUALITY = 0; - else if (options3.quality == "proof") LayoutConstants.QUALITY = 2; - else LayoutConstants.QUALITY = 1; - CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS = FDLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = options3.nodeDimensionsIncludeLabels; - CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = !options3.randomize; - CoSEConstants.ANIMATE = FDLayoutConstants.ANIMATE = LayoutConstants.ANIMATE = options3.animate; - CoSEConstants.TILE = options3.tile; - CoSEConstants.TILING_PADDING_VERTICAL = typeof options3.tilingPaddingVertical === "function" ? options3.tilingPaddingVertical.call() : options3.tilingPaddingVertical; - CoSEConstants.TILING_PADDING_HORIZONTAL = typeof options3.tilingPaddingHorizontal === "function" ? options3.tilingPaddingHorizontal.call() : options3.tilingPaddingHorizontal; - }, "getUserOptions"); - _CoSELayout.prototype.run = function() { - var ready4; - var frameId; - var options3 = this.options; - var idToLNode = this.idToLNode = {}; - var layout6 = this.layout = new CoSELayout(); - var self2 = this; - self2.stopped = false; - this.cy = this.options.cy; - this.cy.trigger({ type: "layoutstart", layout: this }); - var gm = layout6.newGraphManager(); - this.gm = gm; - var nodes6 = this.options.eles.nodes(); - var edges3 = this.options.eles.edges(); - this.root = gm.addRoot(); - this.processChildrenList(this.root, this.getTopMostNodes(nodes6), layout6); - for (var i2 = 0; i2 < edges3.length; i2++) { - var edge = edges3[i2]; - var sourceNode = this.idToLNode[edge.data("source")]; - var targetNode = this.idToLNode[edge.data("target")]; - if (sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length == 0) { - var e1 = gm.add(layout6.newEdge(), sourceNode, targetNode); - e1.id = edge.id(); + } + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; + } + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n2) { + stack.length = stack.length - 2 * n2; + vstack.length = vstack.length - n2; + lstack.length = lstack.length - n2; + } + __name(popStack, "popStack"); + function lex() { + var token2; + token2 = tstack.pop() || lexer2.lex() || EOF2; + if (typeof token2 !== "number") { + if (token2 instanceof Array) { + tstack = token2; + token2 = tstack.pop(); + } + token2 = self2.symbols_[token2] || token2; + } + return token2; + } + __name(lex, "lex"); + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; + while (true) { + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); + } + action = table[state3] && table[state3][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p3 in table[state3]) { + if (this.terminals_[p3] && p3 > TERROR) { + expected.push("'" + this.terminals_[p3] + "'"); } } - var getPositions = /* @__PURE__ */ __name(function getPositions2(ele, i3) { - if (typeof ele === "number") { - ele = i3; + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + } else { + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + } + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + if (recovering > 0) { + recovering--; + } + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; } - var theId = ele.data("id"); - var lNode = self2.idToLNode[theId]; - return { - x: lNode.getRect().getCenterX(), - y: lNode.getRect().getCenterY() + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column }; - }, "getPositions"); - var iterateAnimated = /* @__PURE__ */ __name(function iterateAnimated2() { - var afterReposition = /* @__PURE__ */ __name(function afterReposition2() { - if (options3.fit) { - options3.cy.fit(options3.eles, options3.padding); - } - if (!ready4) { - ready4 = true; - self2.cy.one("layoutready", options3.ready); - self2.cy.trigger({ type: "layoutready", layout: self2 }); - } - }, "afterReposition"); - var ticksPerFrame = self2.options.refresh; - var isDone; - for (var i3 = 0; i3 < ticksPerFrame && !isDone; i3++) { - isDone = self2.stopped || self2.layout.tick(); + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; } - if (isDone) { - if (layout6.checkLayoutSuccess() && !layout6.isSubLayout) { - layout6.doPostLayout(); - } - if (layout6.tilingPostLayout) { - layout6.tilingPostLayout(); - } - layout6.isLayoutFinished = true; - self2.options.eles.nodes().positions(getPositions); - afterReposition(); - self2.cy.one("layoutstop", self2.options.stop); - self2.cy.trigger({ type: "layoutstop", layout: self2 }); - if (frameId) { - cancelAnimationFrame(frameId); - } - ready4 = false; - return; + r2 = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r2 !== "undefined") { + return r2; } - var animationData = self2.layout.getPositionsData(); - options3.eles.nodes().positions(function(ele, i4) { - if (typeof ele === "number") { - ele = i4; - } - if (!ele.isParent()) { - var theId = ele.id(); - var pNode = animationData[theId]; - var temp = ele; - while (pNode == null) { - pNode = animationData[temp.data("parent")] || animationData["DummyCompound_" + temp.data("parent")]; - animationData[theId] = pNode; - temp = temp.parent()[0]; - if (temp == void 0) { - break; - } - } - if (pNode != null) { - return { - x: pNode.x, - y: pNode.y - }; - } else { - return { - x: ele.position("x"), - y: ele.position("y") - }; - } - } - }); - afterReposition(); - frameId = requestAnimationFrame(iterateAnimated2); - }, "iterateAnimated"); - layout6.addListener("layoutstarted", function() { - if (self2.options.animate === "during") { - frameId = requestAnimationFrame(iterateAnimated); + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState2 = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState2); + break; + case 3: + return true; + } + } + return true; + }, "parse") + }; + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { + EOF: 1, + parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str2, hash); + } else { + throw new Error(str2); + } + }, "parseError"), + // resets the lexer, sets new input + setInput: /* @__PURE__ */ __name(function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0, 0]; + } + this.offset = 0; + return this; + }, "setInput"), + // consumes and returns one char from the input + input: /* @__PURE__ */ __name(function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } + this._input = this._input.slice(1); + return ch; + }, "input"), + // unshifts one char (or a string) into the input + unput: /* @__PURE__ */ __name(function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r2 = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + }; + if (this.options.ranges) { + this.yylloc.range = [r2[0], r2[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, "unput"), + // When called from action, caches matched text and appends it on next action + more: /* @__PURE__ */ __name(function() { + this._more = true; + return this; + }, "more"), + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: /* @__PURE__ */ __name(function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno }); - layout6.runLayout(); - if (this.options.animate !== "during") { - self2.options.eles.nodes().not(":parent").layoutPositions(self2, self2.options, getPositions); - ready4 = false; + } + return this; + }, "reject"), + // retain first n characters of the match + less: /* @__PURE__ */ __name(function(n2) { + this.unput(this.match.slice(n2)); + }, "less"), + // displays already matched input, i.e. for error messages + pastInput: /* @__PURE__ */ __name(function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, "pastInput"), + // displays upcoming input, i.e. for error messages + upcomingInput: /* @__PURE__ */ __name(function() { + var next3 = this.match; + if (next3.length < 20) { + next3 += this._input.substr(0, 20 - next3.length); + } + return (next3.substr(0, 20) + (next3.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, "upcomingInput"), + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: /* @__PURE__ */ __name(function() { + var pre = this.pastInput(); + var c3 = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c3 + "^"; + }, "showPosition"), + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: /* @__PURE__ */ __name(function(match2, indexed_rule) { + var token2, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); } - return this; + } + lines = match2[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match2[0].length }; - _CoSELayout.prototype.getTopMostNodes = function(nodes6) { - var nodesMap2 = {}; - for (var i2 = 0; i2 < nodes6.length; i2++) { - nodesMap2[nodes6[i2].id()] = true; + this.yytext += match2[0]; + this.match += match2[0]; + this.matches = match2; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match2[0].length); + this.matched += match2[0]; + token2 = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token2) { + return token2; + } else if (this._backtrack) { + for (var k2 in backup) { + this[k2] = backup[k2]; } - var roots = nodes6.filter(function(ele, i3) { - if (typeof ele === "number") { - ele = i3; - } - var parent4 = ele.parent()[0]; - while (parent4 != null) { - if (nodesMap2[parent4.id()]) { + return false; + } + return false; + }, "test_match"), + // return next match in input + next: /* @__PURE__ */ __name(function() { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + var token2, match2, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i2 = 0; i2 < rules.length; i2++) { + tempMatch = this._input.match(this.rules[rules[i2]]); + if (tempMatch && (!match2 || tempMatch[0].length > match2[0].length)) { + match2 = tempMatch; + index = i2; + if (this.options.backtrack_lexer) { + token2 = this.test_match(tempMatch, rules[i2]); + if (token2 !== false) { + return token2; + } else if (this._backtrack) { + match2 = false; + continue; + } else { return false; } - parent4 = parent4.parent()[0]; - } - return true; - }); - return roots; - }; - _CoSELayout.prototype.processChildrenList = function(parent4, children2, layout6) { - var size5 = children2.length; - for (var i2 = 0; i2 < size5; i2++) { - var theChild = children2[i2]; - var children_of_children = theChild.children(); - var theNode; - var dimensions2 = theChild.layoutDimensions({ - nodeDimensionsIncludeLabels: this.options.nodeDimensionsIncludeLabels - }); - if (theChild.outerWidth() != null && theChild.outerHeight() != null) { - theNode = parent4.add(new CoSENode(layout6.graphManager, new PointD(theChild.position("x") - dimensions2.w / 2, theChild.position("y") - dimensions2.h / 2), new DimensionD2(parseFloat(dimensions2.w), parseFloat(dimensions2.h)))); - } else { - theNode = parent4.add(new CoSENode(this.graphManager)); - } - theNode.id = theChild.data("id"); - theNode.paddingLeft = parseInt(theChild.css("padding")); - theNode.paddingTop = parseInt(theChild.css("padding")); - theNode.paddingRight = parseInt(theChild.css("padding")); - theNode.paddingBottom = parseInt(theChild.css("padding")); - if (this.options.nodeDimensionsIncludeLabels) { - if (theChild.isParent()) { - var labelWidth = theChild.boundingBox({ includeLabels: true, includeNodes: false }).w; - var labelHeight = theChild.boundingBox({ includeLabels: true, includeNodes: false }).h; - var labelPos = theChild.css("text-halign"); - theNode.labelWidth = labelWidth; - theNode.labelHeight = labelHeight; - theNode.labelPos = labelPos; - } - } - this.idToLNode[theChild.data("id")] = theNode; - if (isNaN(theNode.rect.x)) { - theNode.rect.x = 0; - } - if (isNaN(theNode.rect.y)) { - theNode.rect.y = 0; - } - if (children_of_children != null && children_of_children.length > 0) { - var theNewGraph; - theNewGraph = layout6.getGraphManager().add(layout6.newGraph(), theNode); - this.processChildrenList(theNewGraph, children_of_children, layout6); + } else if (!this.options.flex) { + break; } } - }; - _CoSELayout.prototype.stop = function() { - this.stopped = true; - return this; - }; - var register = /* @__PURE__ */ __name(function register2(cytoscape4) { - cytoscape4("layout", "cose-bilkent", _CoSELayout); - }, "register"); - if (typeof cytoscape !== "undefined") { - register(cytoscape); } - module3.exports = register; - } - /******/ - ]) - ); - }); + if (match2) { + token2 = this.test_match(match2, rules[index]); + if (token2 !== false) { + return token2; + } + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, "next"), + // return next match that has a token + lex: /* @__PURE__ */ __name(function lex() { + var r2 = this.next(); + if (r2) { + return r2; + } else { + return this.lex(); + } + }, "lex"), + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: /* @__PURE__ */ __name(function begin(condition) { + this.conditionStack.push(condition); + }, "begin"), + // pop the previously active lexer condition state off the condition stack + popState: /* @__PURE__ */ __name(function popState() { + var n2 = this.conditionStack.length - 1; + if (n2 > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, "popState"), + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: /* @__PURE__ */ __name(function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, "_currentRules"), + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: /* @__PURE__ */ __name(function topState(n2) { + n2 = this.conditionStack.length - 1 - Math.abs(n2 || 0); + if (n2 >= 0) { + return this.conditionStack[n2]; + } else { + return "INITIAL"; + } + }, "topState"), + // alias for begin(condition) + pushState: /* @__PURE__ */ __name(function pushState(condition) { + this.begin(condition); + }, "pushState"), + // return the number of states currently on the stack + stateStackSize: /* @__PURE__ */ __name(function stateStackSize() { + return this.conditionStack.length; + }, "stateStackSize"), + options: { "case-insensitive": true }, + performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + var YYSTATE = YY_START; + switch ($avoiding_name_collisions) { + case 0: + yy.getLogger().trace("Found comment", yy_.yytext); + return 6; + break; + case 1: + return 8; + break; + case 2: + this.begin("CLASS"); + break; + case 3: + this.popState(); + return 16; + break; + case 4: + this.popState(); + break; + case 5: + yy.getLogger().trace("Begin icon"); + this.begin("ICON"); + break; + case 6: + yy.getLogger().trace("SPACELINE"); + return 6; + break; + case 7: + return 7; + break; + case 8: + return 15; + break; + case 9: + yy.getLogger().trace("end icon"); + this.popState(); + break; + case 10: + yy.getLogger().trace("Exploding node"); + this.begin("NODE"); + return 19; + break; + case 11: + yy.getLogger().trace("Cloud"); + this.begin("NODE"); + return 19; + break; + case 12: + yy.getLogger().trace("Explosion Bang"); + this.begin("NODE"); + return 19; + break; + case 13: + yy.getLogger().trace("Cloud Bang"); + this.begin("NODE"); + return 19; + break; + case 14: + this.begin("NODE"); + return 19; + break; + case 15: + this.begin("NODE"); + return 19; + break; + case 16: + this.begin("NODE"); + return 19; + break; + case 17: + this.begin("NODE"); + return 19; + break; + case 18: + return 13; + break; + case 19: + return 22; + break; + case 20: + return 11; + break; + case 21: + this.begin("NSTR2"); + break; + case 22: + return "NODE_DESCR"; + break; + case 23: + this.popState(); + break; + case 24: + yy.getLogger().trace("Starting NSTR"); + this.begin("NSTR"); + break; + case 25: + yy.getLogger().trace("description:", yy_.yytext); + return "NODE_DESCR"; + break; + case 26: + this.popState(); + break; + case 27: + this.popState(); + yy.getLogger().trace("node end ))"); + return "NODE_DEND"; + break; + case 28: + this.popState(); + yy.getLogger().trace("node end )"); + return "NODE_DEND"; + break; + case 29: + this.popState(); + yy.getLogger().trace("node end ...", yy_.yytext); + return "NODE_DEND"; + break; + case 30: + this.popState(); + yy.getLogger().trace("node end (("); + return "NODE_DEND"; + break; + case 31: + this.popState(); + yy.getLogger().trace("node end (-"); + return "NODE_DEND"; + break; + case 32: + this.popState(); + yy.getLogger().trace("node end (-"); + return "NODE_DEND"; + break; + case 33: + this.popState(); + yy.getLogger().trace("node end (("); + return "NODE_DEND"; + break; + case 34: + this.popState(); + yy.getLogger().trace("node end (("); + return "NODE_DEND"; + break; + case 35: + yy.getLogger().trace("Long description:", yy_.yytext); + return 20; + break; + case 36: + yy.getLogger().trace("Long description:", yy_.yytext); + return 20; + break; + } + }, "anonymous"), + rules: [/^(?:\s*%%.*)/i, /^(?:mindmap\b)/i, /^(?::::)/i, /^(?:.+)/i, /^(?:\n)/i, /^(?:::icon\()/i, /^(?:[\s]+[\n])/i, /^(?:[\n]+)/i, /^(?:[^\)]+)/i, /^(?:\))/i, /^(?:-\))/i, /^(?:\(-)/i, /^(?:\)\))/i, /^(?:\))/i, /^(?:\(\()/i, /^(?:\{\{)/i, /^(?:\()/i, /^(?:\[)/i, /^(?:[\s]+)/i, /^(?:[^\(\[\n\)\{\}]+)/i, /^(?:$)/i, /^(?:["][`])/i, /^(?:[^`"]+)/i, /^(?:[`]["])/i, /^(?:["])/i, /^(?:[^"]+)/i, /^(?:["])/i, /^(?:[\)]\))/i, /^(?:[\)])/i, /^(?:[\]])/i, /^(?:\}\})/i, /^(?:\(-)/i, /^(?:-\))/i, /^(?:\(\()/i, /^(?:\()/i, /^(?:[^\)\]\(\}]+)/i, /^(?:.+(?!\(\())/i], + conditions: { "CLASS": { "rules": [3, 4], "inclusive": false }, "ICON": { "rules": [8, 9], "inclusive": false }, "NSTR2": { "rules": [22, 23], "inclusive": false }, "NSTR": { "rules": [25, 26], "inclusive": false }, "NODE": { "rules": [21, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "inclusive": true } } + }; + return lexer2; + })(); + parser24.lexer = lexer; + function Parser3() { + this.yy = {}; + } + __name(Parser3, "Parser"); + Parser3.prototype = parser24; + parser24.Parser = Parser3; + return new Parser3(); + })(); + parser16.parser = parser16; + mindmap_default = parser16; } }); - // src/diagrams/mindmap/svgDraw.ts - function insertPolygonShape2(parent4, w3, h2, points, node2) { - return parent4.insert("polygon", ":first-child").attr( - "points", - points.map(function(d2) { - return d2.x + "," + d2.y; - }).join(" ") - ).attr("transform", "translate(" + (node2.width - w3) / 2 + ", " + h2 + ")"); + // ../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js + function unsafeStringify(arr, offset = 0) { + return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); } - var MAX_SECTIONS2, defaultBkg2, rectBkg, cloudBkg, bangBkg, circleBkg, hexagonBkg, roundedRectBkg, drawNode2, positionNode2; - var init_svgDraw5 = __esm({ - "src/diagrams/mindmap/svgDraw.ts"() { + var byteToHex; + var init_stringify = __esm({ + "../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js"() { "use strict"; - init_createText(); - init_utils2(); - MAX_SECTIONS2 = 12; - defaultBkg2 = /* @__PURE__ */ __name(function(db10, elem, node2, section) { - const rd = 5; - elem.append("path").attr("id", "node-" + node2.id).attr("class", "node-bkg node-" + db10.type2Str(node2.type)).attr( - "d", - `M0 ${node2.height - rd} v${-node2.height + 2 * rd} q0,-5 5,-5 h${node2.width - 2 * rd} q5,0 5,5 v${node2.height - rd} H0 Z` - ); - elem.append("line").attr("class", "node-line-" + section).attr("x1", 0).attr("y1", node2.height).attr("x2", node2.width).attr("y2", node2.height); - }, "defaultBkg"); - rectBkg = /* @__PURE__ */ __name(function(db10, elem, node2) { - elem.append("rect").attr("id", "node-" + node2.id).attr("class", "node-bkg node-" + db10.type2Str(node2.type)).attr("height", node2.height).attr("width", node2.width); - }, "rectBkg"); - cloudBkg = /* @__PURE__ */ __name(function(db10, elem, node2) { - const w3 = node2.width; - const h2 = node2.height; - const r1 = 0.15 * w3; - const r2 = 0.25 * w3; - const r3 = 0.35 * w3; - const r4 = 0.2 * w3; - elem.append("path").attr("id", "node-" + node2.id).attr("class", "node-bkg node-" + db10.type2Str(node2.type)).attr( - "d", - `M0 0 a${r1},${r1} 0 0,1 ${w3 * 0.25},${-1 * w3 * 0.1} - a${r3},${r3} 1 0,1 ${w3 * 0.4},${-1 * w3 * 0.1} - a${r2},${r2} 1 0,1 ${w3 * 0.35},${1 * w3 * 0.2} - - a${r1},${r1} 1 0,1 ${w3 * 0.15},${1 * h2 * 0.35} - a${r4},${r4} 1 0,1 ${-1 * w3 * 0.15},${1 * h2 * 0.65} - - a${r2},${r1} 1 0,1 ${-1 * w3 * 0.25},${w3 * 0.15} - a${r3},${r3} 1 0,1 ${-1 * w3 * 0.5},${0} - a${r1},${r1} 1 0,1 ${-1 * w3 * 0.25},${-1 * w3 * 0.15} - - a${r1},${r1} 1 0,1 ${-1 * w3 * 0.1},${-1 * h2 * 0.35} - a${r4},${r4} 1 0,1 ${w3 * 0.1},${-1 * h2 * 0.65} + byteToHex = []; + for (let i2 = 0; i2 < 256; ++i2) { + byteToHex.push((i2 + 256).toString(16).slice(1)); + } + __name(unsafeStringify, "unsafeStringify"); + } + }); - H0 V0 Z` - ); - }, "cloudBkg"); - bangBkg = /* @__PURE__ */ __name(function(db10, elem, node2) { - const w3 = node2.width; - const h2 = node2.height; - const r2 = 0.15 * w3; - elem.append("path").attr("id", "node-" + node2.id).attr("class", "node-bkg node-" + db10.type2Str(node2.type)).attr( - "d", - `M0 0 a${r2},${r2} 1 0,0 ${w3 * 0.25},${-1 * h2 * 0.1} - a${r2},${r2} 1 0,0 ${w3 * 0.25},${0} - a${r2},${r2} 1 0,0 ${w3 * 0.25},${0} - a${r2},${r2} 1 0,0 ${w3 * 0.25},${1 * h2 * 0.1} + // ../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js + function rng() { + if (!getRandomValues) { + if (typeof crypto === "undefined" || !crypto.getRandomValues) { + throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); + } + getRandomValues = crypto.getRandomValues.bind(crypto); + } + return getRandomValues(rnds8); + } + var getRandomValues, rnds8; + var init_rng = __esm({ + "../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js"() { + "use strict"; + rnds8 = new Uint8Array(16); + __name(rng, "rng"); + } + }); - a${r2},${r2} 1 0,0 ${w3 * 0.15},${1 * h2 * 0.33} - a${r2 * 0.8},${r2 * 0.8} 1 0,0 ${0},${1 * h2 * 0.34} - a${r2},${r2} 1 0,0 ${-1 * w3 * 0.15},${1 * h2 * 0.33} + // ../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js + var randomUUID, native_default; + var init_native = __esm({ + "../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js"() { + "use strict"; + randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); + native_default = { randomUUID }; + } + }); - a${r2},${r2} 1 0,0 ${-1 * w3 * 0.25},${h2 * 0.15} - a${r2},${r2} 1 0,0 ${-1 * w3 * 0.25},${0} - a${r2},${r2} 1 0,0 ${-1 * w3 * 0.25},${0} - a${r2},${r2} 1 0,0 ${-1 * w3 * 0.25},${-1 * h2 * 0.15} + // ../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js + function v4(options2, buf, offset) { + if (native_default.randomUUID && !buf && !options2) { + return native_default.randomUUID(); + } + options2 = options2 || {}; + const rnds = options2.random ?? options2.rng?.() ?? rng(); + if (rnds.length < 16) { + throw new Error("Random bytes length must be >= 16"); + } + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset = offset || 0; + if (offset < 0 || offset + 16 > buf.length) { + throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`); + } + for (let i2 = 0; i2 < 16; ++i2) { + buf[offset + i2] = rnds[i2]; + } + return buf; + } + return unsafeStringify(rnds); + } + var v4_default; + var init_v4 = __esm({ + "../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js"() { + "use strict"; + init_native(); + init_rng(); + init_stringify(); + __name(v4, "v4"); + v4_default = v4; + } + }); - a${r2},${r2} 1 0,0 ${-1 * w3 * 0.1},${-1 * h2 * 0.33} - a${r2 * 0.8},${r2 * 0.8} 1 0,0 ${0},${-1 * h2 * 0.34} - a${r2},${r2} 1 0,0 ${w3 * 0.1},${-1 * h2 * 0.33} + // ../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/index.js + var init_esm_browser = __esm({ + "../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/index.js"() { + "use strict"; + init_v4(); + } + }); - H0 V0 Z` - ); - }, "bangBkg"); - circleBkg = /* @__PURE__ */ __name(function(db10, elem, node2) { - elem.append("circle").attr("id", "node-" + node2.id).attr("class", "node-bkg node-" + db10.type2Str(node2.type)).attr("r", node2.width / 2); - }, "circleBkg"); - __name(insertPolygonShape2, "insertPolygonShape"); - hexagonBkg = /* @__PURE__ */ __name(function(_db, elem, node2) { - const h2 = node2.height; - const f2 = 4; - const m2 = h2 / f2; - const w3 = node2.width - node2.padding + 2 * m2; - const points = [ - { x: m2, y: 0 }, - { x: w3 - m2, y: 0 }, - { x: w3, y: -h2 / 2 }, - { x: w3 - m2, y: -h2 }, - { x: m2, y: -h2 }, - { x: 0, y: -h2 / 2 } - ]; - insertPolygonShape2(elem, w3, h2, points, node2); - }, "hexagonBkg"); - roundedRectBkg = /* @__PURE__ */ __name(function(db10, elem, node2) { - elem.append("rect").attr("id", "node-" + node2.id).attr("class", "node-bkg node-" + db10.type2Str(node2.type)).attr("height", node2.height).attr("rx", node2.padding).attr("ry", node2.padding).attr("width", node2.width); - }, "roundedRectBkg"); - drawNode2 = /* @__PURE__ */ __name(async function(db10, elem, node2, fullSection, conf5) { - const htmlLabels = conf5.htmlLabels; - const section = fullSection % (MAX_SECTIONS2 - 1); - const nodeElem = elem.append("g"); - node2.section = section; - let sectionClass = "section-" + section; - if (section < 0) { - sectionClass += " section-root"; + // src/diagrams/mindmap/mindmapDb.ts + var nodeType, MindmapDB; + var init_mindmapDb = __esm({ + "src/diagrams/mindmap/mindmapDb.ts"() { + "use strict"; + init_diagramAPI(); + init_esm_browser(); + init_common(); + init_logger(); + init_defaultConfig(); + init_config(); + nodeType = { + DEFAULT: 0, + NO_BORDER: 0, + ROUNDED_RECT: 1, + RECT: 2, + CIRCLE: 3, + CLOUD: 4, + BANG: 5, + HEXAGON: 6 + }; + MindmapDB = class { + constructor() { + this.nodes = []; + this.count = 0; + this.elements = {}; + this.getLogger = this.getLogger.bind(this); + this.nodeType = nodeType; + this.clear(); + this.getType = this.getType.bind(this); + this.getElementById = this.getElementById.bind(this); + this.getParent = this.getParent.bind(this); + this.getMindmap = this.getMindmap.bind(this); + this.addNode = this.addNode.bind(this); + this.decorateNode = this.decorateNode.bind(this); } - nodeElem.attr("class", (node2.class ? node2.class + " " : "") + "mindmap-node " + sectionClass); - const bkgElem = nodeElem.append("g"); - const textElem = nodeElem.append("g"); - const description = node2.descr.replace(/()/g, "\n"); - await createText( - textElem, - description, - { - useHtmlLabels: htmlLabels, - width: node2.width, - classes: "mindmap-node-label" - }, - conf5 - ); - if (!htmlLabels) { - textElem.attr("dy", "1em").attr("alignment-baseline", "middle").attr("dominant-baseline", "middle").attr("text-anchor", "middle"); + static { + __name(this, "MindmapDB"); } - const bbox = textElem.node().getBBox(); - const [fontSize] = parseFontSize(conf5.fontSize); - node2.height = bbox.height + fontSize * 1.1 * 0.5 + node2.padding; - node2.width = bbox.width + 2 * node2.padding; - if (node2.icon) { - if (node2.type === db10.nodeType.CIRCLE) { - node2.height += 50; - node2.width += 50; - const icon2 = nodeElem.append("foreignObject").attr("height", "50px").attr("width", node2.width).attr("style", "text-align: center;"); - icon2.append("div").attr("class", "icon-container").append("i").attr("class", "node-icon-" + section + " " + node2.icon); - textElem.attr( - "transform", - "translate(" + node2.width / 2 + ", " + (node2.height / 2 - 1.5 * node2.padding) + ")" - ); + clear() { + this.nodes = []; + this.count = 0; + this.elements = {}; + this.baseLevel = void 0; + } + getParent(level) { + for (let i2 = this.nodes.length - 1; i2 >= 0; i2--) { + if (this.nodes[i2].level < level) { + return this.nodes[i2]; + } + } + return null; + } + getMindmap() { + return this.nodes.length > 0 ? this.nodes[0] : null; + } + addNode(level, id30, descr, type3) { + log.info("addNode", level, id30, descr, type3); + let isRoot = false; + if (this.nodes.length === 0) { + this.baseLevel = level; + level = 0; + isRoot = true; + } else if (this.baseLevel !== void 0) { + level = level - this.baseLevel; + isRoot = false; + } + const conf5 = getConfig2(); + let padding2 = conf5.mindmap?.padding ?? defaultConfig_default.mindmap.padding; + switch (type3) { + case this.nodeType.ROUNDED_RECT: + case this.nodeType.RECT: + case this.nodeType.HEXAGON: + padding2 *= 2; + break; + } + const node2 = { + id: this.count++, + nodeId: sanitizeText(id30, conf5), + level, + descr: sanitizeText(descr, conf5), + type: type3, + children: [], + width: conf5.mindmap?.maxNodeWidth ?? defaultConfig_default.mindmap.maxNodeWidth, + padding: padding2, + isRoot + }; + const parent4 = this.getParent(level); + if (parent4) { + parent4.children.push(node2); + this.nodes.push(node2); } else { - node2.width += 50; - const orgHeight = node2.height; - node2.height = Math.max(orgHeight, 60); - const heightDiff = Math.abs(node2.height - orgHeight); - const icon2 = nodeElem.append("foreignObject").attr("width", "60px").attr("height", node2.height).attr("style", "text-align: center;margin-top:" + heightDiff / 2 + "px;"); - icon2.append("div").attr("class", "icon-container").append("i").attr("class", "node-icon-" + section + " " + node2.icon); - textElem.attr( - "transform", - "translate(" + (25 + node2.width / 2) + ", " + (heightDiff / 2 + node2.padding / 2) + ")" - ); + if (isRoot) { + this.nodes.push(node2); + } else { + throw new Error( + `There can be only one root. No parent could be found for ("${node2.descr}")` + ); + } } - } else { - if (!htmlLabels) { - const dx = node2.width / 2; - const dy = node2.padding / 2; - textElem.attr("transform", "translate(" + dx + ", " + dy + ")"); + } + getType(startStr, endStr) { + log.debug("In get type", startStr, endStr); + switch (startStr) { + case "[": + return this.nodeType.RECT; + case "(": + return endStr === ")" ? this.nodeType.ROUNDED_RECT : this.nodeType.CLOUD; + case "((": + return this.nodeType.CIRCLE; + case ")": + return this.nodeType.CLOUD; + case "))": + return this.nodeType.BANG; + case "{{": + return this.nodeType.HEXAGON; + default: + return this.nodeType.DEFAULT; + } + } + setElementForId(id30, element3) { + this.elements[id30] = element3; + } + getElementById(id30) { + return this.elements[id30]; + } + decorateNode(decoration) { + if (!decoration) { + return; + } + const config5 = getConfig2(); + const node2 = this.nodes[this.nodes.length - 1]; + if (decoration.icon) { + node2.icon = sanitizeText(decoration.icon, config5); + } + if (decoration.class) { + node2.class = sanitizeText(decoration.class, config5); + } + } + type2Str(type3) { + switch (type3) { + case this.nodeType.DEFAULT: + return "no-border"; + case this.nodeType.RECT: + return "rect"; + case this.nodeType.ROUNDED_RECT: + return "rounded-rect"; + case this.nodeType.CIRCLE: + return "circle"; + case this.nodeType.CLOUD: + return "cloud"; + case this.nodeType.BANG: + return "bang"; + case this.nodeType.HEXAGON: + return "hexgon"; + // cspell: disable-line + default: + return "no-border"; + } + } + /** + * Assign section numbers to nodes based on their position relative to root + * @param node - The mindmap node to process + * @param sectionNumber - The section number to assign (undefined for root) + */ + assignSections(node2, sectionNumber) { + if (node2.level === 0) { + node2.section = void 0; } else { - const dx = (node2.width - bbox.width) / 2; - const dy = (node2.height - bbox.height) / 2; - textElem.attr("transform", "translate(" + dx + ", " + dy + ")"); + node2.section = sectionNumber; + } + if (node2.children) { + for (const [index, child] of node2.children.entries()) { + const childSectionNumber = node2.level === 0 ? index : sectionNumber; + this.assignSections(child, childSectionNumber); + } } } - switch (node2.type) { - case db10.nodeType.DEFAULT: - defaultBkg2(db10, bkgElem, node2, section); - break; - case db10.nodeType.ROUNDED_RECT: - roundedRectBkg(db10, bkgElem, node2, section); - break; - case db10.nodeType.RECT: - rectBkg(db10, bkgElem, node2, section); - break; - case db10.nodeType.CIRCLE: - bkgElem.attr("transform", "translate(" + node2.width / 2 + ", " + +node2.height / 2 + ")"); - circleBkg(db10, bkgElem, node2, section); - break; - case db10.nodeType.CLOUD: - cloudBkg(db10, bkgElem, node2, section); - break; - case db10.nodeType.BANG: - bangBkg(db10, bkgElem, node2, section); - break; - case db10.nodeType.HEXAGON: - hexagonBkg(db10, bkgElem, node2, section); - break; + /** + * Convert mindmap tree structure to flat array of nodes + * @param node - The mindmap node to process + * @param processedNodes - Array to collect processed nodes + */ + flattenNodes(node2, processedNodes) { + const cssClasses = ["mindmap-node"]; + if (node2.isRoot === true) { + cssClasses.push("section-root", "section--1"); + } else if (node2.section !== void 0) { + cssClasses.push(`section-${node2.section}`); + } + if (node2.class) { + cssClasses.push(node2.class); + } + const classes3 = cssClasses.join(" "); + const getShapeFromType = /* @__PURE__ */ __name((type3) => { + switch (type3) { + case nodeType.CIRCLE: + return "mindmapCircle"; + case nodeType.RECT: + return "rect"; + case nodeType.ROUNDED_RECT: + return "rounded"; + case nodeType.CLOUD: + return "cloud"; + case nodeType.BANG: + return "bang"; + case nodeType.HEXAGON: + return "hexagon"; + case nodeType.DEFAULT: + return "defaultMindmapNode"; + case nodeType.NO_BORDER: + default: + return "rect"; + } + }, "getShapeFromType"); + const processedNode = { + id: node2.id.toString(), + domId: "node_" + node2.id.toString(), + label: node2.descr, + isGroup: false, + shape: getShapeFromType(node2.type), + width: node2.width, + height: node2.height ?? 0, + padding: node2.padding, + cssClasses: classes3, + cssStyles: [], + look: "default", + icon: node2.icon, + x: node2.x, + y: node2.y, + // Mindmap-specific properties + level: node2.level, + nodeId: node2.nodeId, + type: node2.type, + section: node2.section + }; + processedNodes.push(processedNode); + if (node2.children) { + for (const child of node2.children) { + this.flattenNodes(child, processedNodes); + } + } } - db10.setElementForId(node2.id, nodeElem); - return node2.height; - }, "drawNode"); - positionNode2 = /* @__PURE__ */ __name(function(db10, node2) { - const nodeElem = db10.getElementById(node2.id); - const x5 = node2.x || 0; - const y5 = node2.y || 0; - nodeElem.attr("transform", "translate(" + x5 + "," + y5 + ")"); - }, "positionNode"); + /** + * Generate edges from parent-child relationships in mindmap tree + * @param node - The mindmap node to process + * @param edges - Array to collect edges + */ + generateEdges(node2, edges3) { + if (!node2.children) { + return; + } + for (const child of node2.children) { + let edgeClasses = "edge"; + if (child.section !== void 0) { + edgeClasses += ` section-edge-${child.section}`; + } + const edgeDepth = node2.level + 1; + edgeClasses += ` edge-depth-${edgeDepth}`; + const edge = { + id: `edge_${node2.id}_${child.id}`, + start: node2.id.toString(), + end: child.id.toString(), + type: "normal", + curve: "basis", + thickness: "normal", + look: "default", + classes: edgeClasses, + // Store mindmap-specific data + depth: node2.level, + section: child.section + }; + edges3.push(edge); + this.generateEdges(child, edges3); + } + } + /** + * Get structured data for layout algorithms + * Following the pattern established by ER diagrams + * @returns Structured data containing nodes, edges, and config + */ + getData() { + const mindmapRoot = this.getMindmap(); + const config5 = getConfig2(); + const userDefinedConfig = getUserDefinedConfig(); + const hasUserDefinedLayout = userDefinedConfig.layout !== void 0; + const finalConfig = config5; + if (!hasUserDefinedLayout) { + finalConfig.layout = "cose-bilkent"; + } + if (!mindmapRoot) { + return { + nodes: [], + edges: [], + config: finalConfig + }; + } + log.debug("getData: mindmapRoot", mindmapRoot, config5); + this.assignSections(mindmapRoot); + const processedNodes = []; + const processedEdges = []; + this.flattenNodes(mindmapRoot, processedNodes); + this.generateEdges(mindmapRoot, processedEdges); + log.debug( + `getData: processed ${processedNodes.length} nodes and ${processedEdges.length} edges` + ); + const shapes4 = /* @__PURE__ */ new Map(); + for (const node2 of processedNodes) { + shapes4.set(node2.id, { + shape: node2.shape, + width: node2.width, + height: node2.height, + padding: node2.padding + }); + } + return { + nodes: processedNodes, + edges: processedEdges, + config: finalConfig, + // Store the root node for mindmap-specific layout algorithms + rootNode: mindmapRoot, + // Properties required by dagre layout algorithm + markers: ["point"], + // Mindmaps don't use markers + direction: "TB", + // Top-to-bottom direction for mindmaps + nodeSpacing: 50, + // Default spacing between nodes + rankSpacing: 50, + // Default spacing between ranks + // Add shapes for ELK compatibility + shapes: Object.fromEntries(shapes4), + // Additional properties that layout algorithms might expect + type: "mindmap", + diagramId: "mindmap-" + v4_default() + }; + } + // Expose logger to grammar + getLogger() { + return log; + } + }; } }); // src/diagrams/mindmap/mindmapRenderer.ts - async function drawNodes(db10, svg2, mindmap, section, conf5) { - await drawNode2(db10, svg2, mindmap, section, conf5); - if (mindmap.children) { - await Promise.all( - mindmap.children.map( - (child, index) => drawNodes(db10, svg2, child, section < 0 ? index : section, conf5) - ) - ); - } - } - function drawEdges(edgesEl, cy) { - cy.edges().map((edge, id29) => { - const data6 = edge.data(); - if (edge[0]._private.bodyBounds) { - const bounds4 = edge[0]._private.rscratch; - log.trace("Edge: ", id29, data6); - edgesEl.insert("path").attr( - "d", - `M ${bounds4.startX},${bounds4.startY} L ${bounds4.midX},${bounds4.midY} L${bounds4.endX},${bounds4.endY} ` - ).attr("class", "edge section-edge-" + data6.section + " edge-depth-" + data6.depth); - } - }); - } - function addNodes(mindmap, cy, conf5, level) { - cy.add({ - group: "nodes", - data: { - id: mindmap.id.toString(), - labelText: mindmap.descr, - height: mindmap.height, - width: mindmap.width, - level, - nodeId: mindmap.id, - padding: mindmap.padding, - type: mindmap.type - }, - position: { - x: mindmap.x, - y: mindmap.y - } - }); - if (mindmap.children) { - mindmap.children.forEach((child) => { - addNodes(child, cy, conf5, level + 1); - cy.add({ - group: "edges", - data: { - id: `${mindmap.id}_${child.id}`, - source: mindmap.id, - target: child.id, - depth: level, - section: child.section - } - }); - }); - } - } - function layoutMindmap(node2, conf5) { - return new Promise((resolve3) => { - const renderEl = select_default2("body").append("div").attr("id", "cy").attr("style", "display:none"); - const cy = cytoscape2({ - container: document.getElementById("cy"), - // container to render in - style: [ - { - selector: "edge", - style: { - "curve-style": "bezier" - } - } - ] - }); - renderEl.remove(); - addNodes(node2, cy, conf5, 0); - cy.nodes().forEach(function(n2) { - n2.layoutDimensions = () => { - const data6 = n2.data(); - return { w: data6.width, h: data6.height }; - }; - }); - cy.layout({ - name: "cose-bilkent", - // @ts-ignore Types for cose-bilkent are not correct? - quality: "proof", - styleEnabled: false, - animate: false - }).run(); - cy.ready((e3) => { - log.info("Ready", e3); - resolve3(cy); - }); - }); - } - function positionNodes(db10, cy) { - cy.nodes().map((node2, id29) => { - const data6 = node2.data(); - data6.x = node2.position().x; - data6.y = node2.position().y; - positionNode2(db10, data6); - const el = db10.getElementById(data6.nodeId); - log.info("Id:", id29, "Position: (", node2.position().x, ", ", node2.position().y, ")", data6); - el.attr( - "transform", - `translate(${node2.position().x - data6.width / 2}, ${node2.position().y - data6.height / 2})` - ); - el.attr("attr", `apa-${id29})`); - }); - } - var import_cytoscape_cose_bilkent, draw18, mindmapRenderer_default; + var draw18, mindmapRenderer_default; var init_mindmapRenderer = __esm({ "src/diagrams/mindmap/mindmapRenderer.ts"() { "use strict"; - init_cytoscape_esm(); - import_cytoscape_cose_bilkent = __toESM(require_cytoscape_cose_bilkent(), 1); - init_src32(); - init_diagramAPI(); init_logger(); - init_selectSvgElement(); - init_setupGraphViewbox(); - init_svgDraw5(); + init_insertElementsForSize(); + init_render2(); + init_setupViewPortForSVG(); init_defaultConfig(); - cytoscape2.use(import_cytoscape_cose_bilkent.default); - __name(drawNodes, "drawNodes"); - __name(drawEdges, "drawEdges"); - __name(addNodes, "addNodes"); - __name(layoutMindmap, "layoutMindmap"); - __name(positionNodes, "positionNodes"); - draw18 = /* @__PURE__ */ __name(async (text4, id29, _version, diagObj) => { + draw18 = /* @__PURE__ */ __name(async (text4, id30, _version, diagObj) => { log.debug("Rendering mindmap diagram\n" + text4); - const db10 = diagObj.db; - const mm = db10.getMindmap(); + const db7 = diagObj.db; + const data4Layout = db7.getData(); + const svg2 = getDiagramElement(id30, data4Layout.config.securityLevel); + data4Layout.type = diagObj.type; + data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(data4Layout.config.layout, { + fallback: "cose-bilkent" + }); + data4Layout.diagramId = id30; + const mm = db7.getMindmap(); if (!mm) { return; } - const conf5 = getConfig2(); - conf5.htmlLabels = false; - const svg2 = selectSvgElement(id29); - const edgesElem = svg2.append("g"); - edgesElem.attr("class", "mindmap-edges"); - const nodesElem = svg2.append("g"); - nodesElem.attr("class", "mindmap-nodes"); - await drawNodes(db10, nodesElem, mm, -1, conf5); - const cy = await layoutMindmap(mm, conf5); - drawEdges(edgesElem, cy); - positionNodes(db10, cy); - setupGraphViewbox( - void 0, + data4Layout.nodes.forEach((node2) => { + if (node2.shape === "rounded") { + node2.radius = 15; + node2.taper = 15; + node2.stroke = "none"; + node2.width = 0; + node2.padding = 15; + } else if (node2.shape === "circle") { + node2.padding = 10; + } else if (node2.shape === "rect") { + node2.width = 0; + node2.padding = 10; + } + }); + await render6(data4Layout, svg2); + setupViewPortForSVG( svg2, - conf5.mindmap?.padding ?? defaultConfig_default.mindmap.padding, - conf5.mindmap?.useMaxWidth ?? defaultConfig_default.mindmap.useMaxWidth + data4Layout.config.mindmap?.padding ?? defaultConfig_default.mindmap.padding, + "mindmapDiagram", + data4Layout.config.mindmap?.useMaxWidth ?? defaultConfig_default.mindmap.useMaxWidth ); }, "draw"); mindmapRenderer_default = { @@ -133913,37 +136052,37 @@ g.stateGroup line { "src/diagrams/mindmap/styles.ts"() { "use strict"; init_dist(); - genSections2 = /* @__PURE__ */ __name((options3) => { + genSections2 = /* @__PURE__ */ __name((options2) => { let sections6 = ""; - for (let i2 = 0; i2 < options3.THEME_COLOR_LIMIT; i2++) { - options3["lineColor" + i2] = options3["lineColor" + i2] || options3["cScaleInv" + i2]; - if (is_dark_default(options3["lineColor" + i2])) { - options3["lineColor" + i2] = lighten_default(options3["lineColor" + i2], 20); + for (let i2 = 0; i2 < options2.THEME_COLOR_LIMIT; i2++) { + options2["lineColor" + i2] = options2["lineColor" + i2] || options2["cScaleInv" + i2]; + if (is_dark_default(options2["lineColor" + i2])) { + options2["lineColor" + i2] = lighten_default(options2["lineColor" + i2], 20); } else { - options3["lineColor" + i2] = darken_default(options3["lineColor" + i2], 20); + options2["lineColor" + i2] = darken_default(options2["lineColor" + i2], 20); } } - for (let i2 = 0; i2 < options3.THEME_COLOR_LIMIT; i2++) { + for (let i2 = 0; i2 < options2.THEME_COLOR_LIMIT; i2++) { const sw = "" + (17 - 3 * i2); sections6 += ` .section-${i2 - 1} rect, .section-${i2 - 1} path, .section-${i2 - 1} circle, .section-${i2 - 1} polygon, .section-${i2 - 1} path { - fill: ${options3["cScale" + i2]}; + fill: ${options2["cScale" + i2]}; } .section-${i2 - 1} text { - fill: ${options3["cScaleLabel" + i2]}; + fill: ${options2["cScaleLabel" + i2]}; } .node-icon-${i2 - 1} { font-size: 40px; - color: ${options3["cScaleLabel" + i2]}; + color: ${options2["cScaleLabel" + i2]}; } .section-edge-${i2 - 1}{ - stroke: ${options3["cScale" + i2]}; + stroke: ${options2["cScale" + i2]}; } .edge-depth-${i2 - 1}{ stroke-width: ${sw}; } .section-${i2 - 1} line { - stroke: ${options3["cScaleInv" + i2]} ; + stroke: ${options2["cScaleInv" + i2]} ; stroke-width: 3; } @@ -133957,16 +136096,22 @@ g.stateGroup line { } return sections6; }, "genSections"); - getStyles14 = /* @__PURE__ */ __name((options3) => ` + getStyles14 = /* @__PURE__ */ __name((options2) => ` .edge { stroke-width: 3; } - ${genSections2(options3)} + ${genSections2(options2)} .section-root rect, .section-root path, .section-root circle, .section-root polygon { - fill: ${options3.git0}; + fill: ${options2.git0}; } .section-root text { - fill: ${options3.gitBranchLabel0}; + fill: ${options2.gitBranchLabel0}; + } + .section-root span { + color: ${options2.gitBranchLabel0}; + } + .section-2 span { + color: ${options2.gitBranchLabel0}; } .icon-container { height:100%; @@ -134003,7 +136148,9 @@ g.stateGroup line { init_mindmapRenderer(); init_styles13(); diagram19 = { - db: mindmapDb_default, + get db() { + return new MindmapDB(); + }, renderer: mindmapRenderer_default, parser: mindmap_default, styles: styles_default13 @@ -134012,13 +136159,13 @@ g.stateGroup line { }); // src/diagrams/kanban/parser/kanban.jison - var parser18, kanban_default; + var parser17, kanban_default; var init_kanban = __esm({ "src/diagrams/kanban/parser/kanban.jison"() { "use strict"; - parser18 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; + parser17 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; return o3; }, "o"), $V0 = [1, 4], $V1 = [1, 13], $V2 = [1, 12], $V3 = [1, 15], $V4 = [1, 16], $V5 = [1, 20], $V6 = [1, 19], $V7 = [6, 7, 8], $V8 = [1, 26], $V9 = [1, 24], $Va = [1, 25], $Vb = [6, 7, 11], $Vc = [1, 31], $Vd = [6, 7, 11, 24], $Ve = [1, 6, 13, 16, 17, 20, 23], $Vf = [1, 35], $Vg = [1, 36], $Vh = [1, 6, 7, 11, 13, 16, 17, 20, 23], $Vi = [1, 38]; var parser24 = { @@ -134110,22 +136257,22 @@ g.stateGroup line { parse: /* @__PURE__ */ __name(function parse7(input) { var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); + var lexer2 = Object.create(this.lexer); var sharedState = { yy: {} }; for (var k2 in this.yy) { if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { sharedState.yy[k2] = this.yy[k2]; } } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; } - var yyloc = lexer3.yylloc; + var yyloc = lexer2.yylloc; lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; + var ranges = lexer2.options && lexer2.options.ranges; if (typeof sharedState.yy.parseError === "function") { this.parseError = sharedState.yy.parseError; } else { @@ -134139,7 +136286,7 @@ g.stateGroup line { __name(popStack, "popStack"); function lex() { var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; + token2 = tstack.pop() || lexer2.lex() || EOF2; if (typeof token2 !== "number") { if (token2 instanceof Array) { tstack = token2; @@ -134150,53 +136297,53 @@ g.stateGroup line { return token2; } __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; } else { if (symbol === null || typeof symbol == "undefined") { symbol = lex(); } - action = table[state4] && table[state4][symbol]; + action = table[state3] && table[state3][symbol]; } if (typeof action === "undefined" || !action.length || !action[0]) { var errStr = ""; expected = []; - for (p3 in table[state4]) { + for (p3 in table[state3]) { if (this.terminals_[p3] && p3 > TERROR) { expected.push("'" + this.terminals_[p3] + "'"); } } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; } else { errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); } this.parseError(errStr, { - text: lexer3.match, + text: lexer2.match, token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, + line: lexer2.yylineno, loc: yyloc, expected }); } if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); } switch (action[0]) { case 1: stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); stack.push(action[1]); symbol = null; if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; if (recovering > 0) { recovering--; } @@ -134250,8 +136397,8 @@ g.stateGroup line { return true; }, "parse") }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { EOF: 1, parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { if (this.yy.parser) { @@ -134547,8 +136694,8 @@ g.stateGroup line { return 24; break; case 3: - const re2 = /\n\s*/g; - yy_.yytext = yy_.yytext.replace(re2, "
    "); + const re3 = /\n\s*/g; + yy_.yytext = yy_.yytext.replace(re3, "
    "); return 24; break; case 4: @@ -134710,9 +136857,9 @@ g.stateGroup line { rules: [/^(?:@\{)/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^\"]+)/i, /^(?:[^}^"]+)/i, /^(?:\})/i, /^(?:\s*%%.*)/i, /^(?:kanban\b)/i, /^(?::::)/i, /^(?:.+)/i, /^(?:\n)/i, /^(?:::icon\()/i, /^(?:[\s]+[\n])/i, /^(?:[\n]+)/i, /^(?:[^\)]+)/i, /^(?:\))/i, /^(?:-\))/i, /^(?:\(-)/i, /^(?:\)\))/i, /^(?:\))/i, /^(?:\(\()/i, /^(?:\{\{)/i, /^(?:\()/i, /^(?:\[)/i, /^(?:[\s]+)/i, /^(?:[^\(\[\n\)\{\}@]+)/i, /^(?:$)/i, /^(?:["][`])/i, /^(?:[^`"]+)/i, /^(?:[`]["])/i, /^(?:["])/i, /^(?:[^"]+)/i, /^(?:["])/i, /^(?:[\)]\))/i, /^(?:[\)])/i, /^(?:[\]])/i, /^(?:\}\})/i, /^(?:\(-)/i, /^(?:-\))/i, /^(?:\(\()/i, /^(?:\()/i, /^(?:[^\)\]\(\}]+)/i, /^(?:.+(?!\(\())/i], conditions: { "shapeDataEndBracket": { "rules": [], "inclusive": false }, "shapeDataStr": { "rules": [2, 3], "inclusive": false }, "shapeData": { "rules": [1, 4, 5], "inclusive": false }, "CLASS": { "rules": [9, 10], "inclusive": false }, "ICON": { "rules": [14, 15], "inclusive": false }, "NSTR2": { "rules": [28, 29], "inclusive": false }, "NSTR": { "rules": [31, 32], "inclusive": false }, "NODE": { "rules": [27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], "inclusive": false }, "INITIAL": { "rules": [0, 6, 7, 8, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "inclusive": true } } }; - return lexer3; - }(); - parser24.lexer = lexer2; + return lexer2; + })(); + parser24.lexer = lexer; function Parser3() { this.yy = {}; } @@ -134720,14 +136867,14 @@ g.stateGroup line { Parser3.prototype = parser24; parser24.Parser = Parser3; return new Parser3(); - }(); - parser18.parser = parser18; - kanban_default = parser18; + })(); + parser17.parser = parser17; + kanban_default = parser17; } }); // src/diagrams/kanban/kanbanDb.ts - var nodes4, sections5, cnt3, elements2, clear16, getSection, getSections5, getData, addNode2, nodeType2, getType2, setElementForId2, decorateNode2, type2Str2, getLogger2, getElementById3, db5, kanbanDb_default; + var nodes3, sections5, cnt2, elements, clear15, getSection, getSections5, getData, addNode, nodeType2, getType, setElementForId, decorateNode, type2Str, getLogger, getElementById2, db4, kanbanDb_default; var init_kanbanDb = __esm({ "src/diagrams/kanban/kanbanDb.ts"() { "use strict"; @@ -134736,28 +136883,28 @@ g.stateGroup line { init_logger(); init_defaultConfig(); init_js_yaml(); - nodes4 = []; + nodes3 = []; sections5 = []; - cnt3 = 0; - elements2 = {}; - clear16 = /* @__PURE__ */ __name(() => { - nodes4 = []; + cnt2 = 0; + elements = {}; + clear15 = /* @__PURE__ */ __name(() => { + nodes3 = []; sections5 = []; - cnt3 = 0; - elements2 = {}; + cnt2 = 0; + elements = {}; }, "clear"); getSection = /* @__PURE__ */ __name((level) => { - if (nodes4.length === 0) { + if (nodes3.length === 0) { return null; } - const sectionLevel = nodes4[0].level; + const sectionLevel = nodes3[0].level; let lastSection = null; - for (let i2 = nodes4.length - 1; i2 >= 0; i2--) { - if (nodes4[i2].level === sectionLevel && !lastSection) { - lastSection = nodes4[i2]; + for (let i2 = nodes3.length - 1; i2 >= 0; i2--) { + if (nodes3[i2].level === sectionLevel && !lastSection) { + lastSection = nodes3[i2]; } - if (nodes4[i2].level < sectionLevel) { - throw new Error('Items without section detected, found section ("' + nodes4[i2].label + '")'); + if (nodes3[i2].level < sectionLevel) { + throw new Error('Items without section detected, found section ("' + nodes3[i2].label + '")'); } } if (level === lastSection?.level) { @@ -134784,7 +136931,7 @@ g.stateGroup line { look: conf5.look }; _nodes.push(node2); - const children2 = nodes4.filter((n2) => n2.parentId === section.id); + const children2 = nodes3.filter((n2) => n2.parentId === section.id); for (const item of children2) { const childNode = { id: item.id, @@ -134806,7 +136953,7 @@ g.stateGroup line { } return { nodes: _nodes, edges: edges3, other: {}, config: getConfig2() }; }, "getData"); - addNode2 = /* @__PURE__ */ __name((level, id29, descr, type3, shapeData) => { + addNode = /* @__PURE__ */ __name((level, id30, descr, type3, shapeData) => { const conf5 = getConfig2(); let padding2 = conf5.mindmap?.padding ?? defaultConfig_default.mindmap.padding; switch (type3) { @@ -134816,7 +136963,7 @@ g.stateGroup line { padding2 *= 2; } const node2 = { - id: sanitizeText(id29, conf5) || "kbn" + cnt3++, + id: sanitizeText(id30, conf5) || "kbn" + cnt2++, level, label: sanitizeText(descr, conf5), width: conf5.mindmap?.maxNodeWidth ?? defaultConfig_default.mindmap.maxNodeWidth, @@ -134855,11 +137002,11 @@ g.stateGroup line { } const section = getSection(level); if (section) { - node2.parentId = section.id || "kbn" + cnt3++; + node2.parentId = section.id || "kbn" + cnt2++; } else { sections5.push(node2); } - nodes4.push(node2); + nodes3.push(node2); }, "addNode"); nodeType2 = { DEFAULT: 0, @@ -134871,7 +137018,7 @@ g.stateGroup line { BANG: 5, HEXAGON: 6 }; - getType2 = /* @__PURE__ */ __name((startStr, endStr) => { + getType = /* @__PURE__ */ __name((startStr, endStr) => { log.debug("In get type", startStr, endStr); switch (startStr) { case "[": @@ -134890,15 +137037,15 @@ g.stateGroup line { return nodeType2.DEFAULT; } }, "getType"); - setElementForId2 = /* @__PURE__ */ __name((id29, element3) => { - elements2[id29] = element3; + setElementForId = /* @__PURE__ */ __name((id30, element3) => { + elements[id30] = element3; }, "setElementForId"); - decorateNode2 = /* @__PURE__ */ __name((decoration) => { + decorateNode = /* @__PURE__ */ __name((decoration) => { if (!decoration) { return; } const config5 = getConfig2(); - const node2 = nodes4[nodes4.length - 1]; + const node2 = nodes3[nodes3.length - 1]; if (decoration.icon) { node2.icon = sanitizeText(decoration.icon, config5); } @@ -134906,7 +137053,7 @@ g.stateGroup line { node2.cssClasses = sanitizeText(decoration.class, config5); } }, "decorateNode"); - type2Str2 = /* @__PURE__ */ __name((type3) => { + type2Str = /* @__PURE__ */ __name((type3) => { switch (type3) { case nodeType2.DEFAULT: return "no-border"; @@ -134927,22 +137074,22 @@ g.stateGroup line { return "no-border"; } }, "type2Str"); - getLogger2 = /* @__PURE__ */ __name(() => log, "getLogger"); - getElementById3 = /* @__PURE__ */ __name((id29) => elements2[id29], "getElementById"); - db5 = { - clear: clear16, - addNode: addNode2, + getLogger = /* @__PURE__ */ __name(() => log, "getLogger"); + getElementById2 = /* @__PURE__ */ __name((id30) => elements[id30], "getElementById"); + db4 = { + clear: clear15, + addNode, getSections: getSections5, getData, nodeType: nodeType2, - getType: getType2, - setElementForId: setElementForId2, - decorateNode: decorateNode2, - type2Str: type2Str2, - getLogger: getLogger2, - getElementById: getElementById3 + getType, + setElementForId, + decorateNode, + type2Str, + getLogger, + getElementById: getElementById2 }; - kanbanDb_default = db5; + kanbanDb_default = db4; } }); @@ -134958,13 +137105,13 @@ g.stateGroup line { init_defaultConfig(); init_clusters(); init_nodes2(); - draw19 = /* @__PURE__ */ __name(async (text4, id29, _version, diagObj) => { + draw19 = /* @__PURE__ */ __name(async (text4, id30, _version, diagObj) => { log.debug("Rendering kanban diagram\n" + text4); - const db10 = diagObj.db; - const data4Layout = db10.getData(); + const db7 = diagObj.db; + const data4Layout = db7.getData(); const conf5 = getConfig2(); conf5.htmlLabels = false; - const svg2 = selectSvgElement(id29); + const svg2 = selectSvgElement(id30); const sectionsElem = svg2.append("g"); sectionsElem.attr("class", "sections"); const nodesElem = svg2.append("g"); @@ -134973,20 +137120,20 @@ g.stateGroup line { // TODO: TypeScript 5.5 will infer this predicate automatically (node2) => node2.isGroup ); - let cnt5 = 0; + let cnt4 = 0; const padding2 = 10; const sectionObjects = []; let maxLabelHeight = 25; for (const section of sections6) { const WIDTH = conf5?.kanban?.sectionWidth || 200; - cnt5 = cnt5 + 1; - section.x = WIDTH * cnt5 + (cnt5 - 1) * padding2 / 2; + cnt4 = cnt4 + 1; + section.x = WIDTH * cnt4 + (cnt4 - 1) * padding2 / 2; section.width = WIDTH; section.y = 0; section.height = WIDTH * 3; section.rx = 5; section.ry = 5; - section.cssClasses = section.cssClasses + " section-" + cnt5; + section.cssClasses = section.cssClasses + " section-" + cnt4; const sectionObj = await insertCluster(sectionsElem, section); maxLabelHeight = Math.max(maxLabelHeight, sectionObj?.labelBBox?.height); sectionObjects.push(sectionObj); @@ -134997,7 +137144,7 @@ g.stateGroup line { i2 = i2 + 1; const WIDTH = conf5?.kanban?.sectionWidth || 200; const top2 = -WIDTH * 3 / 2 + maxLabelHeight; - let y5 = top2; + let y6 = top2; const sectionItems = data4Layout.nodes.filter((node2) => node2.parentId === section.id); for (const item of sectionItems) { if (item.isGroup) { @@ -135007,12 +137154,12 @@ g.stateGroup line { item.width = WIDTH - 1.5 * padding2; const nodeEl = await insertNode(nodesElem, item, { config: conf5 }); const bbox = nodeEl.node().getBBox(); - item.y = y5 + bbox.height / 2; + item.y = y6 + bbox.height / 2; await positionNode(item); - y5 = item.y + bbox.height / 2 + padding2 / 2; + y6 = item.y + bbox.height / 2 + padding2 / 2; } const rect3 = sectionObj.cluster.select("rect"); - const height2 = Math.max(y5 - top2 + 3 * padding2, 50) + (maxLabelHeight - 25); + const height2 = Math.max(y6 - top2 + 3 * padding2, 50) + (maxLabelHeight - 25); rect3.attr("height", height2); } setupGraphViewbox( @@ -135034,40 +137181,41 @@ g.stateGroup line { "src/diagrams/kanban/styles.ts"() { "use strict"; init_dist(); - genSections3 = /* @__PURE__ */ __name((options3) => { + init_globalStyles(); + genSections3 = /* @__PURE__ */ __name((options2) => { let sections6 = ""; - for (let i2 = 0; i2 < options3.THEME_COLOR_LIMIT; i2++) { - options3["lineColor" + i2] = options3["lineColor" + i2] || options3["cScaleInv" + i2]; - if (is_dark_default(options3["lineColor" + i2])) { - options3["lineColor" + i2] = lighten_default(options3["lineColor" + i2], 20); + for (let i2 = 0; i2 < options2.THEME_COLOR_LIMIT; i2++) { + options2["lineColor" + i2] = options2["lineColor" + i2] || options2["cScaleInv" + i2]; + if (is_dark_default(options2["lineColor" + i2])) { + options2["lineColor" + i2] = lighten_default(options2["lineColor" + i2], 20); } else { - options3["lineColor" + i2] = darken_default(options3["lineColor" + i2], 20); + options2["lineColor" + i2] = darken_default(options2["lineColor" + i2], 20); } } - const adjuster = /* @__PURE__ */ __name((color2, level) => options3.darkMode ? darken_default(color2, level) : lighten_default(color2, level), "adjuster"); - for (let i2 = 0; i2 < options3.THEME_COLOR_LIMIT; i2++) { + const adjuster = /* @__PURE__ */ __name((color2, level) => options2.darkMode ? darken_default(color2, level) : lighten_default(color2, level), "adjuster"); + for (let i2 = 0; i2 < options2.THEME_COLOR_LIMIT; i2++) { const sw = "" + (17 - 3 * i2); sections6 += ` .section-${i2 - 1} rect, .section-${i2 - 1} path, .section-${i2 - 1} circle, .section-${i2 - 1} polygon, .section-${i2 - 1} path { - fill: ${adjuster(options3["cScale" + i2], 10)}; - stroke: ${adjuster(options3["cScale" + i2], 10)}; + fill: ${adjuster(options2["cScale" + i2], 10)}; + stroke: ${adjuster(options2["cScale" + i2], 10)}; } .section-${i2 - 1} text { - fill: ${options3["cScaleLabel" + i2]}; + fill: ${options2["cScaleLabel" + i2]}; } .node-icon-${i2 - 1} { font-size: 40px; - color: ${options3["cScaleLabel" + i2]}; + color: ${options2["cScaleLabel" + i2]}; } .section-edge-${i2 - 1}{ - stroke: ${options3["cScale" + i2]}; + stroke: ${options2["cScale" + i2]}; } .edge-depth-${i2 - 1}{ stroke-width: ${sw}; } .section-${i2 - 1} line { - stroke: ${options3["cScaleInv" + i2]} ; + stroke: ${options2["cScaleInv" + i2]} ; stroke-width: 3; } @@ -135083,30 +137231,30 @@ g.stateGroup line { .node ellipse, .node polygon, .node path { - fill: ${options3.background}; - stroke: ${options3.nodeBorder}; + fill: ${options2.background}; + stroke: ${options2.nodeBorder}; stroke-width: 1px; } .kanban-ticket-link { - fill: ${options3.background}; - stroke: ${options3.nodeBorder}; + fill: ${options2.background}; + stroke: ${options2.nodeBorder}; text-decoration: underline; } `; } return sections6; }, "genSections"); - getStyles15 = /* @__PURE__ */ __name((options3) => ` + getStyles15 = /* @__PURE__ */ __name((options2) => ` .edge { stroke-width: 3; } - ${genSections3(options3)} + ${genSections3(options2)} .section-root rect, .section-root path, .section-root circle, .section-root polygon { - fill: ${options3.git0}; + fill: ${options2.git0}; } .section-root text { - fill: ${options3.gitBranchLabel0}; + fill: ${options2.gitBranchLabel0}; } .icon-container { height:100%; @@ -135118,8 +137266,8 @@ g.stateGroup line { fill: none; } .cluster-label, .label { - color: ${options3.textColor}; - fill: ${options3.textColor}; + color: ${options2.textColor}; + fill: ${options2.textColor}; } .kanban-label { dy: 1em; @@ -135128,6 +137276,7 @@ g.stateGroup line { dominant-baseline: middle; text-align: center; } + ${getIconStyles()} `, "getStyles"); styles_default14 = getStyles15; } @@ -135156,13 +137305,13 @@ g.stateGroup line { }); // src/diagrams/sankey/parser/sankey.jison - var parser19, sankey_default; + var parser18, sankey_default; var init_sankey = __esm({ "src/diagrams/sankey/parser/sankey.jison"() { "use strict"; - parser19 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; + parser18 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; return o3; }, "o"), $V0 = [1, 9], $V1 = [1, 10], $V2 = [1, 5, 10, 12]; var parser24 = { @@ -135205,22 +137354,22 @@ g.stateGroup line { parse: /* @__PURE__ */ __name(function parse7(input) { var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); + var lexer2 = Object.create(this.lexer); var sharedState = { yy: {} }; for (var k2 in this.yy) { if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { sharedState.yy[k2] = this.yy[k2]; } } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; } - var yyloc = lexer3.yylloc; + var yyloc = lexer2.yylloc; lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; + var ranges = lexer2.options && lexer2.options.ranges; if (typeof sharedState.yy.parseError === "function") { this.parseError = sharedState.yy.parseError; } else { @@ -135234,7 +137383,7 @@ g.stateGroup line { __name(popStack, "popStack"); function lex() { var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; + token2 = tstack.pop() || lexer2.lex() || EOF2; if (typeof token2 !== "number") { if (token2 instanceof Array) { tstack = token2; @@ -135245,53 +137394,53 @@ g.stateGroup line { return token2; } __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; } else { if (symbol === null || typeof symbol == "undefined") { symbol = lex(); } - action = table[state4] && table[state4][symbol]; + action = table[state3] && table[state3][symbol]; } if (typeof action === "undefined" || !action.length || !action[0]) { var errStr = ""; expected = []; - for (p3 in table[state4]) { + for (p3 in table[state3]) { if (this.terminals_[p3] && p3 > TERROR) { expected.push("'" + this.terminals_[p3] + "'"); } } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; } else { errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); } this.parseError(errStr, { - text: lexer3.match, + text: lexer2.match, token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, + line: lexer2.yylineno, loc: yyloc, expected }); } if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); } switch (action[0]) { case 1: stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); stack.push(action[1]); symbol = null; if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; if (recovering > 0) { recovering--; } @@ -135345,8 +137494,8 @@ g.stateGroup line { return true; }, "parse") }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { EOF: 1, parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { if (this.yy.parser) { @@ -135633,36 +137782,40 @@ g.stateGroup line { return 4; break; case 1: - return 10; + this.pushState("csv"); + return 4; break; case 2: - return 5; + return 10; break; case 3: - return 12; + return 5; break; case 4: + return 12; + break; + case 5: this.pushState("escaped_text"); return 18; break; - case 5: + case 6: return 20; break; - case 6: + case 7: this.popState("escaped_text"); return 18; break; - case 7: + case 8: return 19; break; } }, "anonymous"), - rules: [/^(?:sankey-beta\b)/i, /^(?:$)/i, /^(?:((\u000D\u000A)|(\u000A)))/i, /^(?:(\u002C))/i, /^(?:(\u0022))/i, /^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i, /^(?:(\u0022)(?!(\u0022)))/i, /^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i], - conditions: { "csv": { "rules": [1, 2, 3, 4, 5, 6, 7], "inclusive": false }, "escaped_text": { "rules": [6, 7], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7], "inclusive": true } } + rules: [/^(?:sankey-beta\b)/i, /^(?:sankey\b)/i, /^(?:$)/i, /^(?:((\u000D\u000A)|(\u000A)))/i, /^(?:(\u002C))/i, /^(?:(\u0022))/i, /^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i, /^(?:(\u0022)(?!(\u0022)))/i, /^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i], + conditions: { "csv": { "rules": [2, 3, 4, 5, 6, 7, 8], "inclusive": false }, "escaped_text": { "rules": [7, 8], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8], "inclusive": true } } }; - return lexer3; - }(); - parser24.lexer = lexer2; + return lexer2; + })(); + parser24.lexer = lexer; function Parser3() { this.yy = {}; } @@ -135670,14 +137823,14 @@ g.stateGroup line { Parser3.prototype = parser24; parser24.Parser = Parser3; return new Parser3(); - }(); - parser19.parser = parser19; - sankey_default = parser19; + })(); + parser18.parser = parser18; + sankey_default = parser18; } }); // src/diagrams/sankey/sankeyDB.ts - var links2, nodes5, nodesMap, clear17, SankeyLink, addLink, SankeyNode, findOrCreateNode, getNodes, getLinks2, getGraph, sankeyDB_default; + var links2, nodes4, nodesMap, clear16, SankeyLink, addLink, SankeyNode, findOrCreateNode, getNodes, getLinks2, getGraph, sankeyDB_default; var init_sankeyDB = __esm({ "src/diagrams/sankey/sankeyDB.ts"() { "use strict"; @@ -135685,11 +137838,11 @@ g.stateGroup line { init_common(); init_commonDb(); links2 = []; - nodes5 = []; + nodes4 = []; nodesMap = /* @__PURE__ */ new Map(); - clear17 = /* @__PURE__ */ __name(() => { + clear16 = /* @__PURE__ */ __name(() => { links2 = []; - nodes5 = []; + nodes4 = []; nodesMap = /* @__PURE__ */ new Map(); clear(); }, "clear"); @@ -135720,18 +137873,18 @@ g.stateGroup line { if (node2 === void 0) { node2 = new SankeyNode(ID); nodesMap.set(ID, node2); - nodes5.push(node2); + nodes4.push(node2); } return node2; }, "findOrCreateNode"); - getNodes = /* @__PURE__ */ __name(() => nodes5, "getNodes"); + getNodes = /* @__PURE__ */ __name(() => nodes4, "getNodes"); getLinks2 = /* @__PURE__ */ __name(() => links2, "getLinks"); getGraph = /* @__PURE__ */ __name(() => ({ - nodes: nodes5.map((node2) => ({ id: node2.ID })), - links: links2.map((link3) => ({ - source: link3.source.ID, - target: link3.target.ID, - value: link3.value + nodes: nodes4.map((node2) => ({ id: node2.ID })), + links: links2.map((link2) => ({ + source: link2.source.ID, + target: link2.target.ID, + value: link2.value })) }), "getGraph"); sankeyDB_default = { @@ -135748,7 +137901,7 @@ g.stateGroup line { setAccDescription, getDiagramTitle, setDiagramTitle, - clear: clear17 + clear: clear16 }; } }); @@ -135824,7 +137977,7 @@ g.stateGroup line { } return sum2; } - var init_sum = __esm({ + var init_sum2 = __esm({ "../../node_modules/.pnpm/d3-array@2.12.1/node_modules/d3-array/src/sum.js"() { "use strict"; __name(sum, "sum"); @@ -135837,13 +137990,13 @@ g.stateGroup line { "use strict"; init_max3(); init_min3(); - init_sum(); + init_sum2(); } }); // ../../node_modules/.pnpm/d3-sankey@0.12.3/node_modules/d3-sankey/src/align.js - function targetDepth(d2) { - return d2.target.depth; + function targetDepth(d3) { + return d3.target.depth; } function left2(node2) { return node2.depth; @@ -135875,7 +138028,7 @@ g.stateGroup line { return x5; }; } - var init_constant8 = __esm({ + var init_constant9 = __esm({ "../../node_modules/.pnpm/d3-sankey@0.12.3/node_modules/d3-sankey/src/constant.js"() { "use strict"; __name(constant2, "constant"); @@ -135883,20 +138036,20 @@ g.stateGroup line { }); // ../../node_modules/.pnpm/d3-sankey@0.12.3/node_modules/d3-sankey/src/sankey.js - function ascendingSourceBreadth(a2, b2) { - return ascendingBreadth(a2.source, b2.source) || a2.index - b2.index; + function ascendingSourceBreadth(a2, b3) { + return ascendingBreadth(a2.source, b3.source) || a2.index - b3.index; } - function ascendingTargetBreadth(a2, b2) { - return ascendingBreadth(a2.target, b2.target) || a2.index - b2.index; + function ascendingTargetBreadth(a2, b3) { + return ascendingBreadth(a2.target, b3.target) || a2.index - b3.index; } - function ascendingBreadth(a2, b2) { - return a2.y0 - b2.y0; + function ascendingBreadth(a2, b3) { + return a2.y0 - b3.y0; } - function value(d2) { - return d2.value; + function value(d3) { + return d3.value; } - function defaultId(d2) { - return d2.index; + function defaultId(d3) { + return d3.index; } function defaultNodes(graph) { return graph.nodes; @@ -135904,22 +138057,22 @@ g.stateGroup line { function defaultLinks(graph) { return graph.links; } - function find3(nodeById, id29) { - const node2 = nodeById.get(id29); - if (!node2) throw new Error("missing: " + id29); + function find3(nodeById, id30) { + const node2 = nodeById.get(id30); + if (!node2) throw new Error("missing: " + id30); return node2; } - function computeLinkBreadths({ nodes: nodes6 }) { - for (const node2 of nodes6) { + function computeLinkBreadths({ nodes: nodes5 }) { + for (const node2 of nodes5) { let y0 = node2.y0; let y1 = y0; - for (const link3 of node2.sourceLinks) { - link3.y0 = y0 + link3.width / 2; - y0 += link3.width; + for (const link2 of node2.sourceLinks) { + link2.y0 = y0 + link2.width / 2; + y0 += link2.width; } - for (const link3 of node2.targetLinks) { - link3.y1 = y1 + link3.width / 2; - y1 += link3.width; + for (const link2 of node2.targetLinks) { + link2.y1 = y1 + link2.width / 2; + y1 += link2.width; } } } @@ -135927,15 +138080,15 @@ g.stateGroup line { let x0 = 0, y0 = 0, x1 = 1, y1 = 1; let dx = 24; let dy = 8, py; - let id29 = defaultId; + let id30 = defaultId; let align = justify; let sort3; let linkSort; - let nodes6 = defaultNodes; + let nodes5 = defaultNodes; let links3 = defaultLinks; let iterations = 6; function sankey() { - const graph = { nodes: nodes6.apply(null, arguments), links: links3.apply(null, arguments) }; + const graph = { nodes: nodes5.apply(null, arguments), links: links3.apply(null, arguments) }; computeNodeLinks(graph); computeNodeValues(graph); computeNodeDepths(graph); @@ -135949,71 +138102,71 @@ g.stateGroup line { computeLinkBreadths(graph); return graph; }; - sankey.nodeId = function(_2) { - return arguments.length ? (id29 = typeof _2 === "function" ? _2 : constant2(_2), sankey) : id29; + sankey.nodeId = function(_3) { + return arguments.length ? (id30 = typeof _3 === "function" ? _3 : constant2(_3), sankey) : id30; }; - sankey.nodeAlign = function(_2) { - return arguments.length ? (align = typeof _2 === "function" ? _2 : constant2(_2), sankey) : align; + sankey.nodeAlign = function(_3) { + return arguments.length ? (align = typeof _3 === "function" ? _3 : constant2(_3), sankey) : align; }; - sankey.nodeSort = function(_2) { - return arguments.length ? (sort3 = _2, sankey) : sort3; + sankey.nodeSort = function(_3) { + return arguments.length ? (sort3 = _3, sankey) : sort3; }; - sankey.nodeWidth = function(_2) { - return arguments.length ? (dx = +_2, sankey) : dx; + sankey.nodeWidth = function(_3) { + return arguments.length ? (dx = +_3, sankey) : dx; }; - sankey.nodePadding = function(_2) { - return arguments.length ? (dy = py = +_2, sankey) : dy; + sankey.nodePadding = function(_3) { + return arguments.length ? (dy = py = +_3, sankey) : dy; }; - sankey.nodes = function(_2) { - return arguments.length ? (nodes6 = typeof _2 === "function" ? _2 : constant2(_2), sankey) : nodes6; + sankey.nodes = function(_3) { + return arguments.length ? (nodes5 = typeof _3 === "function" ? _3 : constant2(_3), sankey) : nodes5; }; - sankey.links = function(_2) { - return arguments.length ? (links3 = typeof _2 === "function" ? _2 : constant2(_2), sankey) : links3; + sankey.links = function(_3) { + return arguments.length ? (links3 = typeof _3 === "function" ? _3 : constant2(_3), sankey) : links3; }; - sankey.linkSort = function(_2) { - return arguments.length ? (linkSort = _2, sankey) : linkSort; + sankey.linkSort = function(_3) { + return arguments.length ? (linkSort = _3, sankey) : linkSort; }; - sankey.size = function(_2) { - return arguments.length ? (x0 = y0 = 0, x1 = +_2[0], y1 = +_2[1], sankey) : [x1 - x0, y1 - y0]; + sankey.size = function(_3) { + return arguments.length ? (x0 = y0 = 0, x1 = +_3[0], y1 = +_3[1], sankey) : [x1 - x0, y1 - y0]; }; - sankey.extent = function(_2) { - return arguments.length ? (x0 = +_2[0][0], x1 = +_2[1][0], y0 = +_2[0][1], y1 = +_2[1][1], sankey) : [[x0, y0], [x1, y1]]; + sankey.extent = function(_3) { + return arguments.length ? (x0 = +_3[0][0], x1 = +_3[1][0], y0 = +_3[0][1], y1 = +_3[1][1], sankey) : [[x0, y0], [x1, y1]]; }; - sankey.iterations = function(_2) { - return arguments.length ? (iterations = +_2, sankey) : iterations; + sankey.iterations = function(_3) { + return arguments.length ? (iterations = +_3, sankey) : iterations; }; - function computeNodeLinks({ nodes: nodes7, links: links4 }) { - for (const [i2, node2] of nodes7.entries()) { + function computeNodeLinks({ nodes: nodes6, links: links4 }) { + for (const [i2, node2] of nodes6.entries()) { node2.index = i2; node2.sourceLinks = []; node2.targetLinks = []; } - const nodeById = new Map(nodes7.map((d2, i2) => [id29(d2, i2, nodes7), d2])); - for (const [i2, link3] of links4.entries()) { - link3.index = i2; - let { source, target } = link3; - if (typeof source !== "object") source = link3.source = find3(nodeById, source); - if (typeof target !== "object") target = link3.target = find3(nodeById, target); - source.sourceLinks.push(link3); - target.targetLinks.push(link3); + const nodeById = new Map(nodes6.map((d3, i2) => [id30(d3, i2, nodes6), d3])); + for (const [i2, link2] of links4.entries()) { + link2.index = i2; + let { source, target } = link2; + if (typeof source !== "object") source = link2.source = find3(nodeById, source); + if (typeof target !== "object") target = link2.target = find3(nodeById, target); + source.sourceLinks.push(link2); + target.targetLinks.push(link2); } if (linkSort != null) { - for (const { sourceLinks, targetLinks } of nodes7) { + for (const { sourceLinks, targetLinks } of nodes6) { sourceLinks.sort(linkSort); targetLinks.sort(linkSort); } } } __name(computeNodeLinks, "computeNodeLinks"); - function computeNodeValues({ nodes: nodes7 }) { - for (const node2 of nodes7) { + function computeNodeValues({ nodes: nodes6 }) { + for (const node2 of nodes6) { node2.value = node2.fixedValue === void 0 ? Math.max(sum(node2.sourceLinks, value), sum(node2.targetLinks, value)) : node2.fixedValue; } } __name(computeNodeValues, "computeNodeValues"); - function computeNodeDepths({ nodes: nodes7 }) { - const n2 = nodes7.length; - let current = new Set(nodes7); + function computeNodeDepths({ nodes: nodes6 }) { + const n2 = nodes6.length; + let current = new Set(nodes6); let next3 = /* @__PURE__ */ new Set(); let x5 = 0; while (current.size) { @@ -136029,9 +138182,9 @@ g.stateGroup line { } } __name(computeNodeDepths, "computeNodeDepths"); - function computeNodeHeights({ nodes: nodes7 }) { - const n2 = nodes7.length; - let current = new Set(nodes7); + function computeNodeHeights({ nodes: nodes6 }) { + const n2 = nodes6.length; + let current = new Set(nodes6); let next3 = /* @__PURE__ */ new Set(); let x5 = 0; while (current.size) { @@ -136047,11 +138200,11 @@ g.stateGroup line { } } __name(computeNodeHeights, "computeNodeHeights"); - function computeNodeLayers({ nodes: nodes7 }) { - const x5 = max9(nodes7, (d2) => d2.depth) + 1; + function computeNodeLayers({ nodes: nodes6 }) { + const x5 = max9(nodes6, (d3) => d3.depth) + 1; const kx = (x1 - x0 - dx) / (x5 - 1); const columns = new Array(x5); - for (const node2 of nodes7) { + for (const node2 of nodes6) { const i2 = Math.max(0, Math.min(x5 - 1, Math.floor(align.call(null, node2, x5)))); node2.layer = i2; node2.x0 = x0 + i2 * kx; @@ -136067,23 +138220,23 @@ g.stateGroup line { __name(computeNodeLayers, "computeNodeLayers"); function initializeNodeBreadths(columns) { const ky = min8(columns, (c3) => (y1 - y0 - (c3.length - 1) * py) / sum(c3, value)); - for (const nodes7 of columns) { - let y5 = y0; - for (const node2 of nodes7) { - node2.y0 = y5; - node2.y1 = y5 + node2.value * ky; - y5 = node2.y1 + py; - for (const link3 of node2.sourceLinks) { - link3.width = link3.value * ky; + for (const nodes6 of columns) { + let y6 = y0; + for (const node2 of nodes6) { + node2.y0 = y6; + node2.y1 = y6 + node2.value * ky; + y6 = node2.y1 + py; + for (const link2 of node2.sourceLinks) { + link2.width = link2.value * ky; } } - y5 = (y1 - y5 + py) / (nodes7.length + 1); - for (let i2 = 0; i2 < nodes7.length; ++i2) { - const node2 = nodes7[i2]; - node2.y0 += y5 * (i2 + 1); - node2.y1 += y5 * (i2 + 1); + y6 = (y1 - y6 + py) / (nodes6.length + 1); + for (let i2 = 0; i2 < nodes6.length; ++i2) { + const node2 = nodes6[i2]; + node2.y0 += y6 * (i2 + 1); + node2.y1 += y6 * (i2 + 1); } - reorderLinks(nodes7); + reorderLinks(nodes6); } } __name(initializeNodeBreadths, "initializeNodeBreadths"); @@ -136103,15 +138256,15 @@ g.stateGroup line { for (let i2 = 1, n2 = columns.length; i2 < n2; ++i2) { const column2 = columns[i2]; for (const target of column2) { - let y5 = 0; - let w3 = 0; + let y6 = 0; + let w4 = 0; for (const { source, value: value2 } of target.targetLinks) { let v3 = value2 * (target.layer - source.layer); - y5 += targetTop(source, target) * v3; - w3 += v3; + y6 += targetTop(source, target) * v3; + w4 += v3; } - if (!(w3 > 0)) continue; - let dy2 = (y5 / w3 - target.y0) * alpha; + if (!(w4 > 0)) continue; + let dy2 = (y6 / w4 - target.y0) * alpha; target.y0 += dy2; target.y1 += dy2; reorderNodeLinks(target); @@ -136125,15 +138278,15 @@ g.stateGroup line { for (let n2 = columns.length, i2 = n2 - 2; i2 >= 0; --i2) { const column2 = columns[i2]; for (const source of column2) { - let y5 = 0; - let w3 = 0; + let y6 = 0; + let w4 = 0; for (const { target, value: value2 } of source.sourceLinks) { let v3 = value2 * (target.layer - source.layer); - y5 += sourceTop(source, target) * v3; - w3 += v3; + y6 += sourceTop(source, target) * v3; + w4 += v3; } - if (!(w3 > 0)) continue; - let dy2 = (y5 / w3 - source.y0) * alpha; + if (!(w4 > 0)) continue; + let dy2 = (y6 / w4 - source.y0) * alpha; source.y0 += dy2; source.y1 += dy2; reorderNodeLinks(source); @@ -136143,30 +138296,30 @@ g.stateGroup line { } } __name(relaxRightToLeft, "relaxRightToLeft"); - function resolveCollisions(nodes7, alpha) { - const i2 = nodes7.length >> 1; - const subject = nodes7[i2]; - resolveCollisionsBottomToTop(nodes7, subject.y0 - py, i2 - 1, alpha); - resolveCollisionsTopToBottom(nodes7, subject.y1 + py, i2 + 1, alpha); - resolveCollisionsBottomToTop(nodes7, y1, nodes7.length - 1, alpha); - resolveCollisionsTopToBottom(nodes7, y0, 0, alpha); + function resolveCollisions(nodes6, alpha) { + const i2 = nodes6.length >> 1; + const subject = nodes6[i2]; + resolveCollisionsBottomToTop(nodes6, subject.y0 - py, i2 - 1, alpha); + resolveCollisionsTopToBottom(nodes6, subject.y1 + py, i2 + 1, alpha); + resolveCollisionsBottomToTop(nodes6, y1, nodes6.length - 1, alpha); + resolveCollisionsTopToBottom(nodes6, y0, 0, alpha); } __name(resolveCollisions, "resolveCollisions"); - function resolveCollisionsTopToBottom(nodes7, y5, i2, alpha) { - for (; i2 < nodes7.length; ++i2) { - const node2 = nodes7[i2]; - const dy2 = (y5 - node2.y0) * alpha; + function resolveCollisionsTopToBottom(nodes6, y6, i2, alpha) { + for (; i2 < nodes6.length; ++i2) { + const node2 = nodes6[i2]; + const dy2 = (y6 - node2.y0) * alpha; if (dy2 > 1e-6) node2.y0 += dy2, node2.y1 += dy2; - y5 = node2.y1 + py; + y6 = node2.y1 + py; } } __name(resolveCollisionsTopToBottom, "resolveCollisionsTopToBottom"); - function resolveCollisionsBottomToTop(nodes7, y5, i2, alpha) { + function resolveCollisionsBottomToTop(nodes6, y6, i2, alpha) { for (; i2 >= 0; --i2) { - const node2 = nodes7[i2]; - const dy2 = (node2.y1 - y5) * alpha; + const node2 = nodes6[i2]; + const dy2 = (node2.y1 - y6) * alpha; if (dy2 > 1e-6) node2.y0 -= dy2, node2.y1 -= dy2; - y5 = node2.y0 - py; + y6 = node2.y0 - py; } } __name(resolveCollisionsBottomToTop, "resolveCollisionsBottomToTop"); @@ -136181,9 +138334,9 @@ g.stateGroup line { } } __name(reorderNodeLinks, "reorderNodeLinks"); - function reorderLinks(nodes7) { + function reorderLinks(nodes6) { if (linkSort === void 0) { - for (const { sourceLinks, targetLinks } of nodes7) { + for (const { sourceLinks, targetLinks } of nodes6) { sourceLinks.sort(ascendingTargetBreadth); targetLinks.sort(ascendingSourceBreadth); } @@ -136191,29 +138344,29 @@ g.stateGroup line { } __name(reorderLinks, "reorderLinks"); function targetTop(source, target) { - let y5 = source.y0 - (source.sourceLinks.length - 1) * py / 2; + let y6 = source.y0 - (source.sourceLinks.length - 1) * py / 2; for (const { target: node2, width: width3 } of source.sourceLinks) { if (node2 === target) break; - y5 += width3 + py; + y6 += width3 + py; } for (const { source: node2, width: width3 } of target.targetLinks) { if (node2 === source) break; - y5 -= width3; + y6 -= width3; } - return y5; + return y6; } __name(targetTop, "targetTop"); function sourceTop(source, target) { - let y5 = target.y0 - (target.targetLinks.length - 1) * py / 2; + let y6 = target.y0 - (target.targetLinks.length - 1) * py / 2; for (const { source: node2, width: width3 } of target.targetLinks) { if (node2 === source) break; - y5 += width3 + py; + y6 += width3 + py; } for (const { target: node2, width: width3 } of source.sourceLinks) { if (node2 === target) break; - y5 -= width3; + y6 -= width3; } - return y5; + return y6; } __name(sourceTop, "sourceTop"); return sankey; @@ -136223,7 +138376,7 @@ g.stateGroup line { "use strict"; init_src33(); init_align(); - init_constant8(); + init_constant9(); __name(ascendingSourceBreadth, "ascendingSourceBreadth"); __name(ascendingTargetBreadth, "ascendingTargetBreadth"); __name(ascendingBreadth, "ascendingBreadth"); @@ -136246,8 +138399,8 @@ g.stateGroup line { function path3() { return new Path2(); } - var pi3, tau3, epsilon5, tauEpsilon2, path_default; - var init_path3 = __esm({ + var pi3, tau3, epsilon5, tauEpsilon2, path_default2; + var init_path4 = __esm({ "../../node_modules/.pnpm/d3-path@1.0.9/node_modules/d3-path/src/path.js"() { "use strict"; pi3 = Math.PI; @@ -136258,8 +138411,8 @@ g.stateGroup line { __name(path3, "path"); Path2.prototype = path3.prototype = { constructor: Path2, - moveTo: /* @__PURE__ */ __name(function(x5, y5) { - this._ += "M" + (this._x0 = this._x1 = +x5) + "," + (this._y0 = this._y1 = +y5); + moveTo: /* @__PURE__ */ __name(function(x5, y6) { + this._ += "M" + (this._x0 = this._x1 = +x5) + "," + (this._y0 = this._y1 = +y6); }, "moveTo"), closePath: /* @__PURE__ */ __name(function() { if (this._x1 !== null) { @@ -136267,14 +138420,14 @@ g.stateGroup line { this._ += "Z"; } }, "closePath"), - lineTo: /* @__PURE__ */ __name(function(x5, y5) { - this._ += "L" + (this._x1 = +x5) + "," + (this._y1 = +y5); + lineTo: /* @__PURE__ */ __name(function(x5, y6) { + this._ += "L" + (this._x1 = +x5) + "," + (this._y1 = +y6); }, "lineTo"), - quadraticCurveTo: /* @__PURE__ */ __name(function(x1, y1, x5, y5) { - this._ += "Q" + +x1 + "," + +y1 + "," + (this._x1 = +x5) + "," + (this._y1 = +y5); + quadraticCurveTo: /* @__PURE__ */ __name(function(x1, y1, x5, y6) { + this._ += "Q" + +x1 + "," + +y1 + "," + (this._x1 = +x5) + "," + (this._y1 = +y6); }, "quadraticCurveTo"), - bezierCurveTo: /* @__PURE__ */ __name(function(x1, y1, x22, y22, x5, y5) { - this._ += "C" + +x1 + "," + +y1 + "," + +x22 + "," + +y22 + "," + (this._x1 = +x5) + "," + (this._y1 = +y5); + bezierCurveTo: /* @__PURE__ */ __name(function(x1, y1, x22, y22, x5, y6) { + this._ += "C" + +x1 + "," + +y1 + "," + +x22 + "," + +y22 + "," + (this._x1 = +x5) + "," + (this._y1 = +y6); }, "bezierCurveTo"), arcTo: /* @__PURE__ */ __name(function(x1, y1, x22, y22, r2) { x1 = +x1, y1 = +y1, x22 = +x22, y22 = +y22, r2 = +r2; @@ -136286,16 +138439,16 @@ g.stateGroup line { else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon5) || !r2) { this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1); } else { - var x20 = x22 - x0, y20 = y22 - y0, l21_2 = x21 * x21 + y21 * y21, l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), l2 = r2 * Math.tan((pi3 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l2 / l01, t21 = l2 / l21; + var x20 = x22 - x0, y20 = y22 - y0, l21_2 = x21 * x21 + y21 * y21, l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), l4 = r2 * Math.tan((pi3 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l4 / l01, t21 = l4 / l21; if (Math.abs(t01 - 1) > epsilon5) { this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01); } this._ += "A" + r2 + "," + r2 + ",0,0," + +(y01 * x20 > x01 * y20) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21); } }, "arcTo"), - arc: /* @__PURE__ */ __name(function(x5, y5, r2, a0, a1, ccw) { - x5 = +x5, y5 = +y5, r2 = +r2, ccw = !!ccw; - var dx = r2 * Math.cos(a0), dy = r2 * Math.sin(a0), x0 = x5 + dx, y0 = y5 + dy, cw = 1 ^ ccw, da = ccw ? a0 - a1 : a1 - a0; + arc: /* @__PURE__ */ __name(function(x5, y6, r2, a0, a1, ccw) { + x5 = +x5, y6 = +y6, r2 = +r2, ccw = !!ccw; + var dx = r2 * Math.cos(a0), dy = r2 * Math.sin(a0), x0 = x5 + dx, y0 = y6 + dy, cw = 1 ^ ccw, da = ccw ? a0 - a1 : a1 - a0; if (r2 < 0) throw new Error("negative radius: " + r2); if (this._x1 === null) { this._ += "M" + x0 + "," + y0; @@ -136305,19 +138458,19 @@ g.stateGroup line { if (!r2) return; if (da < 0) da = da % tau3 + tau3; if (da > tauEpsilon2) { - this._ += "A" + r2 + "," + r2 + ",0,1," + cw + "," + (x5 - dx) + "," + (y5 - dy) + "A" + r2 + "," + r2 + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0); + this._ += "A" + r2 + "," + r2 + ",0,1," + cw + "," + (x5 - dx) + "," + (y6 - dy) + "A" + r2 + "," + r2 + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0); } else if (da > epsilon5) { - this._ += "A" + r2 + "," + r2 + ",0," + +(da >= pi3) + "," + cw + "," + (this._x1 = x5 + r2 * Math.cos(a1)) + "," + (this._y1 = y5 + r2 * Math.sin(a1)); + this._ += "A" + r2 + "," + r2 + ",0," + +(da >= pi3) + "," + cw + "," + (this._x1 = x5 + r2 * Math.cos(a1)) + "," + (this._y1 = y6 + r2 * Math.sin(a1)); } }, "arc"), - rect: /* @__PURE__ */ __name(function(x5, y5, w3, h2) { - this._ += "M" + (this._x0 = this._x1 = +x5) + "," + (this._y0 = this._y1 = +y5) + "h" + +w3 + "v" + +h2 + "h" + -w3 + "Z"; + rect: /* @__PURE__ */ __name(function(x5, y6, w4, h3) { + this._ += "M" + (this._x0 = this._x1 = +x5) + "," + (this._y0 = this._y1 = +y6) + "h" + +w4 + "v" + +h3 + "h" + -w4 + "Z"; }, "rect"), toString: /* @__PURE__ */ __name(function() { return this._; }, "toString") }; - path_default = path3; + path_default2 = path3; } }); @@ -136325,20 +138478,20 @@ g.stateGroup line { var init_src34 = __esm({ "../../node_modules/.pnpm/d3-path@1.0.9/node_modules/d3-path/src/index.js"() { "use strict"; - init_path3(); + init_path4(); } }); // ../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/constant.js - function constant_default7(x5) { + function constant_default8(x5) { return /* @__PURE__ */ __name(function constant3() { return x5; }, "constant"); } - var init_constant9 = __esm({ + var init_constant10 = __esm({ "../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/constant.js"() { "use strict"; - __name(constant_default7, "default"); + __name(constant_default8, "default"); } }); @@ -136346,14 +138499,14 @@ g.stateGroup line { function x4(p3) { return p3[0]; } - function y4(p3) { + function y5(p3) { return p3[1]; } var init_point2 = __esm({ "../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/point.js"() { "use strict"; __name(x4, "x"); - __name(y4, "y"); + __name(y5, "y"); } }); @@ -136367,55 +138520,55 @@ g.stateGroup line { }); // ../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/link/index.js - function linkSource(d2) { - return d2.source; + function linkSource(d3) { + return d3.source; } - function linkTarget(d2) { - return d2.target; + function linkTarget(d3) { + return d3.target; } - function link2(curve) { - var source = linkSource, target = linkTarget, x5 = x4, y5 = y4, context = null; - function link3() { + function link(curve) { + var source = linkSource, target = linkTarget, x5 = x4, y6 = y5, context = null; + function link2() { var buffer, argv = slice3.call(arguments), s2 = source.apply(this, argv), t4 = target.apply(this, argv); - if (!context) context = buffer = path_default(); - curve(context, +x5.apply(this, (argv[0] = s2, argv)), +y5.apply(this, argv), +x5.apply(this, (argv[0] = t4, argv)), +y5.apply(this, argv)); + if (!context) context = buffer = path_default2(); + curve(context, +x5.apply(this, (argv[0] = s2, argv)), +y6.apply(this, argv), +x5.apply(this, (argv[0] = t4, argv)), +y6.apply(this, argv)); if (buffer) return context = null, buffer + "" || null; } - __name(link3, "link"); - link3.source = function(_2) { - return arguments.length ? (source = _2, link3) : source; + __name(link2, "link"); + link2.source = function(_3) { + return arguments.length ? (source = _3, link2) : source; }; - link3.target = function(_2) { - return arguments.length ? (target = _2, link3) : target; + link2.target = function(_3) { + return arguments.length ? (target = _3, link2) : target; }; - link3.x = function(_2) { - return arguments.length ? (x5 = typeof _2 === "function" ? _2 : constant_default7(+_2), link3) : x5; + link2.x = function(_3) { + return arguments.length ? (x5 = typeof _3 === "function" ? _3 : constant_default8(+_3), link2) : x5; }; - link3.y = function(_2) { - return arguments.length ? (y5 = typeof _2 === "function" ? _2 : constant_default7(+_2), link3) : y5; + link2.y = function(_3) { + return arguments.length ? (y6 = typeof _3 === "function" ? _3 : constant_default8(+_3), link2) : y6; }; - link3.context = function(_2) { - return arguments.length ? (context = _2 == null ? null : _2, link3) : context; + link2.context = function(_3) { + return arguments.length ? (context = _3 == null ? null : _3, link2) : context; }; - return link3; + return link2; } function curveHorizontal(context, x0, y0, x1, y1) { context.moveTo(x0, y0); context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1); } function linkHorizontal() { - return link2(curveHorizontal); + return link(curveHorizontal); } var init_link = __esm({ "../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/link/index.js"() { "use strict"; init_src34(); init_array4(); - init_constant9(); + init_constant10(); init_point2(); __name(linkSource, "linkSource"); __name(linkTarget, "linkTarget"); - __name(link2, "link"); + __name(link, "link"); __name(curveHorizontal, "curveHorizontal"); __name(linkHorizontal, "linkHorizontal"); } @@ -136430,11 +138583,11 @@ g.stateGroup line { }); // ../../node_modules/.pnpm/d3-sankey@0.12.3/node_modules/d3-sankey/src/sankeyLinkHorizontal.js - function horizontalSource(d2) { - return [d2.source.x1, d2.y0]; + function horizontalSource(d3) { + return [d3.source.x1, d3.y0]; } - function horizontalTarget(d2) { - return [d2.target.x0, d2.y1]; + function horizontalTarget(d3) { + return [d3.target.x0, d3.y1]; } function sankeyLinkHorizontal_default() { return linkHorizontal().source(horizontalSource).target(horizontalTarget); @@ -136474,9 +138627,9 @@ g.stateGroup line { static next(name) { return new _Uid(name + ++_Uid.count); } - constructor(id29) { - this.id = id29; - this.href = `#${id29}`; + constructor(id30) { + this.id = id30; + this.href = `#${id30}`; } toString() { return "url(" + this.href + ")"; @@ -136501,15 +138654,15 @@ g.stateGroup line { center: center3, justify }; - draw20 = /* @__PURE__ */ __name(function(text4, id29, _version, diagObj) { + draw20 = /* @__PURE__ */ __name(function(text4, id30, _version, diagObj) { const { securityLevel, sankey: conf5 } = getConfig2(); const defaultSankeyConfig = defaultConfig2.sankey; let sandboxElement; if (securityLevel === "sandbox") { - sandboxElement = select_default2("#i" + id29); + sandboxElement = select_default2("#i" + id30); } - const root4 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); - const svg2 = securityLevel === "sandbox" ? root4.select(`[id="${id29}"]`) : select_default2(`[id="${id29}"]`); + const root3 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); + const svg2 = securityLevel === "sandbox" ? root3.select(`[id="${id30}"]`) : select_default2(`[id="${id30}"]`); const width3 = conf5?.width ?? defaultSankeyConfig.width; const height2 = conf5?.height ?? defaultSankeyConfig.width; const useMaxWidth = conf5?.useMaxWidth ?? defaultSankeyConfig.useMaxWidth; @@ -136520,47 +138673,47 @@ g.stateGroup line { const graph = diagObj.db.getGraph(); const nodeAlign = alignmentsMap[nodeAlignment]; const nodeWidth = 10; - const sankey = Sankey().nodeId((d2) => d2.id).nodeWidth(nodeWidth).nodePadding(10 + (showValues ? 15 : 0)).nodeAlign(nodeAlign).extent([ + const sankey = Sankey().nodeId((d3) => d3.id).nodeWidth(nodeWidth).nodePadding(10 + (showValues ? 15 : 0)).nodeAlign(nodeAlign).extent([ [0, 0], [width3, height2] ]); sankey(graph); const colorScheme = ordinal(Tableau10_default); - svg2.append("g").attr("class", "nodes").selectAll(".node").data(graph.nodes).join("g").attr("class", "node").attr("id", (d2) => (d2.uid = Uid.next("node-")).id).attr("transform", function(d2) { - return "translate(" + d2.x0 + "," + d2.y0 + ")"; - }).attr("x", (d2) => d2.x0).attr("y", (d2) => d2.y0).append("rect").attr("height", (d2) => { - return d2.y1 - d2.y0; - }).attr("width", (d2) => d2.x1 - d2.x0).attr("fill", (d2) => colorScheme(d2.id)); - const getText = /* @__PURE__ */ __name(({ id: id30, value: value2 }) => { + svg2.append("g").attr("class", "nodes").selectAll(".node").data(graph.nodes).join("g").attr("class", "node").attr("id", (d3) => (d3.uid = Uid.next("node-")).id).attr("transform", function(d3) { + return "translate(" + d3.x0 + "," + d3.y0 + ")"; + }).attr("x", (d3) => d3.x0).attr("y", (d3) => d3.y0).append("rect").attr("height", (d3) => { + return d3.y1 - d3.y0; + }).attr("width", (d3) => d3.x1 - d3.x0).attr("fill", (d3) => colorScheme(d3.id)); + const getText = /* @__PURE__ */ __name(({ id: id31, value: value2 }) => { if (!showValues) { - return id30; + return id31; } - return `${id30} + return `${id31} ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }, "getText"); - svg2.append("g").attr("class", "node-labels").attr("font-size", 14).selectAll("text").data(graph.nodes).join("text").attr("x", (d2) => d2.x0 < width3 / 2 ? d2.x1 + 6 : d2.x0 - 6).attr("y", (d2) => (d2.y1 + d2.y0) / 2).attr("dy", `${showValues ? "0" : "0.35"}em`).attr("text-anchor", (d2) => d2.x0 < width3 / 2 ? "start" : "end").text(getText); - const link3 = svg2.append("g").attr("class", "links").attr("fill", "none").attr("stroke-opacity", 0.5).selectAll(".link").data(graph.links).join("g").attr("class", "link").style("mix-blend-mode", "multiply"); + svg2.append("g").attr("class", "node-labels").attr("font-size", 14).selectAll("text").data(graph.nodes).join("text").attr("x", (d3) => d3.x0 < width3 / 2 ? d3.x1 + 6 : d3.x0 - 6).attr("y", (d3) => (d3.y1 + d3.y0) / 2).attr("dy", `${showValues ? "0" : "0.35"}em`).attr("text-anchor", (d3) => d3.x0 < width3 / 2 ? "start" : "end").text(getText); + const link2 = svg2.append("g").attr("class", "links").attr("fill", "none").attr("stroke-opacity", 0.5).selectAll(".link").data(graph.links).join("g").attr("class", "link").style("mix-blend-mode", "multiply"); const linkColor = conf5?.linkColor ?? "gradient"; if (linkColor === "gradient") { - const gradient = link3.append("linearGradient").attr("id", (d2) => (d2.uid = Uid.next("linearGradient-")).id).attr("gradientUnits", "userSpaceOnUse").attr("x1", (d2) => d2.source.x1).attr("x2", (d2) => d2.target.x0); - gradient.append("stop").attr("offset", "0%").attr("stop-color", (d2) => colorScheme(d2.source.id)); - gradient.append("stop").attr("offset", "100%").attr("stop-color", (d2) => colorScheme(d2.target.id)); + const gradient = link2.append("linearGradient").attr("id", (d3) => (d3.uid = Uid.next("linearGradient-")).id).attr("gradientUnits", "userSpaceOnUse").attr("x1", (d3) => d3.source.x1).attr("x2", (d3) => d3.target.x0); + gradient.append("stop").attr("offset", "0%").attr("stop-color", (d3) => colorScheme(d3.source.id)); + gradient.append("stop").attr("offset", "100%").attr("stop-color", (d3) => colorScheme(d3.target.id)); } let coloring; switch (linkColor) { case "gradient": - coloring = /* @__PURE__ */ __name((d2) => d2.uid, "coloring"); + coloring = /* @__PURE__ */ __name((d3) => d3.uid, "coloring"); break; case "source": - coloring = /* @__PURE__ */ __name((d2) => colorScheme(d2.source.id), "coloring"); + coloring = /* @__PURE__ */ __name((d3) => colorScheme(d3.source.id), "coloring"); break; case "target": - coloring = /* @__PURE__ */ __name((d2) => colorScheme(d2.target.id), "coloring"); + coloring = /* @__PURE__ */ __name((d3) => colorScheme(d3.target.id), "coloring"); break; default: coloring = linkColor; } - link3.append("path").attr("d", sankeyLinkHorizontal_default()).attr("stroke", coloring).attr("stroke-width", (d2) => Math.max(1, d2.width)); + link2.append("path").attr("d", sankeyLinkHorizontal_default()).attr("stroke", coloring).attr("stroke-width", (d3) => Math.max(1, d3.width)); setupGraphViewbox(void 0, svg2, 0, useMaxWidth); }, "draw"); sankeyRenderer_default = { @@ -136586,8 +138739,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var init_styles15 = __esm({ "src/diagrams/sankey/styles.js"() { "use strict"; - getStyles16 = /* @__PURE__ */ __name((options3) => `.label { - font-family: ${options3.fontFamily}; + getStyles16 = /* @__PURE__ */ __name((options2) => `.label { + font-family: ${options2.fontFamily}; }`, "getStyles"); styles_default15 = getStyles16; } @@ -136619,7 +138772,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); // src/diagrams/packet/db.ts - var defaultPacketData, data4, DEFAULT_PACKET_CONFIG, getConfig5, getPacket, pushWord, clear18, db6; + var DEFAULT_PACKET_CONFIG, PacketDB; var init_db = __esm({ "src/diagrams/packet/db.ts"() { "use strict"; @@ -136627,48 +138780,48 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; init_defaultConfig(); init_utils2(); init_commonDb(); - defaultPacketData = { - packet: [] - }; - data4 = structuredClone(defaultPacketData); DEFAULT_PACKET_CONFIG = defaultConfig_default.packet; - getConfig5 = /* @__PURE__ */ __name(() => { - const config5 = cleanAndMerge({ - ...DEFAULT_PACKET_CONFIG, - ...getConfig().packet - }); - if (config5.showBits) { - config5.paddingY += 10; + PacketDB = class { + constructor() { + this.packet = []; + this.setAccTitle = setAccTitle; + this.getAccTitle = getAccTitle; + this.setDiagramTitle = setDiagramTitle; + this.getDiagramTitle = getDiagramTitle; + this.getAccDescription = getAccDescription; + this.setAccDescription = setAccDescription; } - return config5; - }, "getConfig"); - getPacket = /* @__PURE__ */ __name(() => data4.packet, "getPacket"); - pushWord = /* @__PURE__ */ __name((word) => { - if (word.length > 0) { - data4.packet.push(word); + static { + __name(this, "PacketDB"); + } + getConfig() { + const config5 = cleanAndMerge({ + ...DEFAULT_PACKET_CONFIG, + ...getConfig().packet + }); + if (config5.showBits) { + config5.paddingY += 10; + } + return config5; + } + getPacket() { + return this.packet; + } + pushWord(word) { + if (word.length > 0) { + this.packet.push(word); + } + } + clear() { + clear(); + this.packet = []; } - }, "pushWord"); - clear18 = /* @__PURE__ */ __name(() => { - clear(); - data4 = structuredClone(defaultPacketData); - }, "clear"); - db6 = { - pushWord, - getPacket, - getConfig: getConfig5, - clear: clear18, - setAccTitle, - getAccTitle, - setDiagramTitle, - getDiagramTitle, - getAccDescription, - setAccDescription }; } }); // src/diagrams/packet/parser.ts - var maxPacketSize, populate16, getNextFittingBlock, parser20; + var maxPacketSize, populate16, getNextFittingBlock, parser19; var init_parser3 = __esm({ "src/diagrams/packet/parser.ts"() { "use strict"; @@ -136677,67 +138830,88 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; init_populateCommonDb(); init_db(); maxPacketSize = 1e4; - populate16 = /* @__PURE__ */ __name((ast) => { - populateCommonDb(ast, db6); - let lastByte = -1; + populate16 = /* @__PURE__ */ __name((ast, db7) => { + populateCommonDb(ast, db7); + let lastBit = -1; let word = []; let row = 1; - const { bitsPerRow } = db6.getConfig(); - for (let { start: start3, end: end2, label } of ast.blocks) { - if (end2 && end2 < start3) { + const { bitsPerRow } = db7.getConfig(); + for (let { start: start3, end: end2, bits, label } of ast.blocks) { + if (start3 !== void 0 && end2 !== void 0 && end2 < start3) { throw new Error(`Packet block ${start3} - ${end2} is invalid. End must be greater than start.`); } - if (start3 !== lastByte + 1) { + start3 ??= lastBit + 1; + if (start3 !== lastBit + 1) { throw new Error( - `Packet block ${start3} - ${end2 ?? start3} is not contiguous. It should start from ${lastByte + 1}.` + `Packet block ${start3} - ${end2 ?? start3} is not contiguous. It should start from ${lastBit + 1}.` ); } - lastByte = end2 ?? start3; - log.debug(`Packet block ${start3} - ${lastByte} with label ${label}`); - while (word.length <= bitsPerRow + 1 && db6.getPacket().length < maxPacketSize) { - const [block3, nextBlock] = getNextFittingBlock({ start: start3, end: end2, label }, row, bitsPerRow); - word.push(block3); - if (block3.end + 1 === row * bitsPerRow) { - db6.pushWord(word); + if (bits === 0) { + throw new Error(`Packet block ${start3} is invalid. Cannot have a zero bit field.`); + } + end2 ??= start3 + (bits ?? 1) - 1; + bits ??= end2 - start3 + 1; + lastBit = end2; + log.debug(`Packet block ${start3} - ${lastBit} with label ${label}`); + while (word.length <= bitsPerRow + 1 && db7.getPacket().length < maxPacketSize) { + const [block2, nextBlock] = getNextFittingBlock({ start: start3, end: end2, bits, label }, row, bitsPerRow); + word.push(block2); + if (block2.end + 1 === row * bitsPerRow) { + db7.pushWord(word); word = []; row++; } if (!nextBlock) { break; } - ({ start: start3, end: end2, label } = nextBlock); + ({ start: start3, end: end2, bits, label } = nextBlock); } } - db6.pushWord(word); + db7.pushWord(word); }, "populate"); - getNextFittingBlock = /* @__PURE__ */ __name((block3, row, bitsPerRow) => { - if (block3.end === void 0) { - block3.end = block3.start; + getNextFittingBlock = /* @__PURE__ */ __name((block2, row, bitsPerRow) => { + if (block2.start === void 0) { + throw new Error("start should have been set during first phase"); + } + if (block2.end === void 0) { + throw new Error("end should have been set during first phase"); } - if (block3.start > block3.end) { - throw new Error(`Block start ${block3.start} is greater than block end ${block3.end}.`); + if (block2.start > block2.end) { + throw new Error(`Block start ${block2.start} is greater than block end ${block2.end}.`); } - if (block3.end + 1 <= row * bitsPerRow) { - return [block3, void 0]; + if (block2.end + 1 <= row * bitsPerRow) { + return [block2, void 0]; } + const rowEnd = row * bitsPerRow - 1; + const rowStart = row * bitsPerRow; return [ { - start: block3.start, - end: row * bitsPerRow - 1, - label: block3.label + start: block2.start, + end: rowEnd, + label: block2.label, + bits: rowEnd - block2.start }, { - start: row * bitsPerRow, - end: block3.end, - label: block3.label + start: rowStart, + end: block2.end, + label: block2.label, + bits: block2.end - rowStart } ]; }, "getNextFittingBlock"); - parser20 = { + parser19 = { + // @ts-expect-error - PacketDB is not assignable to DiagramDB + parser: { yy: void 0 }, parse: /* @__PURE__ */ __name(async (input) => { - const ast = await parse("packet", input); + const ast = await parse3("packet", input); + const db7 = parser19.parser?.yy; + if (!(db7 instanceof PacketDB)) { + throw new Error( + "parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues." + ); + } log.debug(ast); - populate16(ast); + populate16(ast, db7); }, "parse") }; } @@ -136750,16 +138924,16 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; "use strict"; init_selectSvgElement(); init_setupGraphViewbox(); - draw21 = /* @__PURE__ */ __name((_text, id29, _version, diagram26) => { - const db10 = diagram26.db; - const config5 = db10.getConfig(); + draw21 = /* @__PURE__ */ __name((_text, id30, _version, diagram27) => { + const db7 = diagram27.db; + const config5 = db7.getConfig(); const { rowHeight, paddingY, bitWidth, bitsPerRow } = config5; - const words = db10.getPacket(); - const title2 = db10.getDiagramTitle(); + const words = db7.getPacket(); + const title2 = db7.getDiagramTitle(); const totalRowHeight = rowHeight + paddingY; const svgHeight = totalRowHeight * (words.length + 1) - (title2 ? 0 : rowHeight); const svgWidth = bitWidth * bitsPerRow + 2; - const svg2 = selectSvgElement(id29); + const svg2 = selectSvgElement(id30); svg2.attr("viewbox", `0 0 ${svgWidth} ${svgHeight}`); configureSvgSize(svg2, svgHeight, svgWidth, config5.useMaxWidth); for (const [word, packet2] of words.entries()) { @@ -136770,19 +138944,19 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; drawWord = /* @__PURE__ */ __name((svg2, word, rowNumber, { rowHeight, paddingX, paddingY, bitWidth, bitsPerRow, showBits }) => { const group2 = svg2.append("g"); const wordY = rowNumber * (rowHeight + paddingY) + paddingY; - for (const block3 of word) { - const blockX = block3.start % bitsPerRow * bitWidth + 1; - const width3 = (block3.end - block3.start + 1) * bitWidth - paddingX; + for (const block2 of word) { + const blockX = block2.start % bitsPerRow * bitWidth + 1; + const width3 = (block2.end - block2.start + 1) * bitWidth - paddingX; group2.append("rect").attr("x", blockX).attr("y", wordY).attr("width", width3).attr("height", rowHeight).attr("class", "packetBlock"); - group2.append("text").attr("x", blockX + width3 / 2).attr("y", wordY + rowHeight / 2).attr("class", "packetLabel").attr("dominant-baseline", "middle").attr("text-anchor", "middle").text(block3.label); + group2.append("text").attr("x", blockX + width3 / 2).attr("y", wordY + rowHeight / 2).attr("class", "packetLabel").attr("dominant-baseline", "middle").attr("text-anchor", "middle").text(block2.label); if (!showBits) { continue; } - const isSingleBlock = block3.end === block3.start; + const isSingleBlock = block2.end === block2.start; const bitNumberY = wordY - 2; - group2.append("text").attr("x", blockX + (isSingleBlock ? width3 / 2 : 0)).attr("y", bitNumberY).attr("class", "packetByte start").attr("dominant-baseline", "auto").attr("text-anchor", isSingleBlock ? "middle" : "start").text(block3.start); + group2.append("text").attr("x", blockX + (isSingleBlock ? width3 / 2 : 0)).attr("y", bitNumberY).attr("class", "packetByte start").attr("dominant-baseline", "auto").attr("text-anchor", isSingleBlock ? "middle" : "start").text(block2.start); if (!isSingleBlock) { - group2.append("text").attr("x", blockX + width3).attr("y", bitNumberY).attr("class", "packetByte end").attr("dominant-baseline", "auto").attr("text-anchor", "end").text(block3.end); + group2.append("text").attr("x", blockX + width3).attr("y", bitNumberY).attr("class", "packetByte end").attr("dominant-baseline", "auto").attr("text-anchor", "end").text(block2.end); } } }, "drawWord"); @@ -136809,29 +138983,29 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; blockFillColor: "#efefef" }; styles2 = /* @__PURE__ */ __name(({ packet: packet2 } = {}) => { - const options3 = cleanAndMerge(defaultPacketStyleOptions, packet2); + const options2 = cleanAndMerge(defaultPacketStyleOptions, packet2); return ` .packetByte { - font-size: ${options3.byteFontSize}; + font-size: ${options2.byteFontSize}; } .packetByte.start { - fill: ${options3.startByteColor}; + fill: ${options2.startByteColor}; } .packetByte.end { - fill: ${options3.endByteColor}; + fill: ${options2.endByteColor}; } .packetLabel { - fill: ${options3.labelColor}; - font-size: ${options3.labelFontSize}; + fill: ${options2.labelColor}; + font-size: ${options2.labelFontSize}; } .packetTitle { - fill: ${options3.titleColor}; - font-size: ${options3.titleFontSize}; + fill: ${options2.titleColor}; + font-size: ${options2.titleFontSize}; } .packetBlock { - stroke: ${options3.blockStrokeColor}; - stroke-width: ${options3.blockStrokeWidth}; - fill: ${options3.blockFillColor}; + stroke: ${options2.blockStrokeColor}; + stroke-width: ${options2.blockStrokeWidth}; + fill: ${options2.blockFillColor}; } `; }, "styles"); @@ -136852,8 +139026,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; init_renderer(); init_styles16(); diagram22 = { - parser: parser20, - db: db6, + parser: parser19, + get db() { + return new PacketDB(); + }, renderer: renderer6, styles: styles2 }; @@ -136861,7 +139037,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); // src/diagrams/radar/db.ts - var defaultOptions, defaultRadarData, data5, DEFAULT_RADAR_CONFIG, getConfig6, getAxes, getCurves, getOptions2, setAxes, setCurves, computeCurveEntries, setOptions8, clear19, db7; + var defaultOptions, defaultRadarData, data4, DEFAULT_RADAR_CONFIG, getConfig5, getAxes, getCurves, getOptions2, setAxes, setCurves, computeCurveEntries, setOptions7, clear17, db5; var init_db2 = __esm({ "src/diagrams/radar/db.ts"() { "use strict"; @@ -136881,20 +139057,20 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; curves: [], options: defaultOptions }; - data5 = structuredClone(defaultRadarData); + data4 = structuredClone(defaultRadarData); DEFAULT_RADAR_CONFIG = defaultConfig_default.radar; - getConfig6 = /* @__PURE__ */ __name(() => { + getConfig5 = /* @__PURE__ */ __name(() => { const config5 = cleanAndMerge({ ...DEFAULT_RADAR_CONFIG, ...getConfig().radar }); return config5; }, "getConfig"); - getAxes = /* @__PURE__ */ __name(() => data5.axes, "getAxes"); - getCurves = /* @__PURE__ */ __name(() => data5.curves, "getCurves"); - getOptions2 = /* @__PURE__ */ __name(() => data5.options, "getOptions"); + getAxes = /* @__PURE__ */ __name(() => data4.axes, "getAxes"); + getCurves = /* @__PURE__ */ __name(() => data4.curves, "getCurves"); + getOptions2 = /* @__PURE__ */ __name(() => data4.options, "getOptions"); setAxes = /* @__PURE__ */ __name((axes) => { - data5.axes = axes.map((axis2) => { + data4.axes = axes.map((axis2) => { return { name: axis2.name, label: axis2.label ?? axis2.name @@ -136902,7 +139078,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); }, "setAxes"); setCurves = /* @__PURE__ */ __name((curves) => { - data5.curves = curves.map((curve) => { + data4.curves = curves.map((curve) => { return { name: curve.name, label: curve.label ?? curve.name, @@ -136926,15 +139102,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return entry.value; }); }, "computeCurveEntries"); - setOptions8 = /* @__PURE__ */ __name((options3) => { - const optionMap = options3.reduce( + setOptions7 = /* @__PURE__ */ __name((options2) => { + const optionMap = options2.reduce( (acc, option2) => { acc[option2.name] = option2; return acc; }, {} ); - data5.options = { + data4.options = { showLegend: optionMap.showLegend?.value ?? defaultOptions.showLegend, ticks: optionMap.ticks?.value ?? defaultOptions.ticks, max: optionMap.max?.value ?? defaultOptions.max, @@ -136942,19 +139118,19 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; graticule: optionMap.graticule?.value ?? defaultOptions.graticule }; }, "setOptions"); - clear19 = /* @__PURE__ */ __name(() => { + clear17 = /* @__PURE__ */ __name(() => { clear(); - data5 = structuredClone(defaultRadarData); + data4 = structuredClone(defaultRadarData); }, "clear"); - db7 = { + db5 = { getAxes, getCurves, getOptions: getOptions2, setAxes, setCurves, - setOptions: setOptions8, - getConfig: getConfig6, - clear: clear19, + setOptions: setOptions7, + getConfig: getConfig5, + clear: clear17, setAccTitle, getAccTitle, setDiagramTitle, @@ -136966,7 +139142,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); // src/diagrams/radar/parser.ts - var populate17, parser21; + var populate17, parser20; var init_parser4 = __esm({ "src/diagrams/radar/parser.ts"() { "use strict"; @@ -136975,15 +139151,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; init_populateCommonDb(); init_db2(); populate17 = /* @__PURE__ */ __name((ast) => { - populateCommonDb(ast, db7); - const { axes, curves, options: options3 } = ast; - db7.setAxes(axes); - db7.setCurves(curves); - db7.setOptions(options3); + populateCommonDb(ast, db5); + const { axes, curves, options: options2 } = ast; + db5.setAxes(axes); + db5.setCurves(curves); + db5.setOptions(options2); }, "populate"); - parser21 = { + parser20 = { parse: /* @__PURE__ */ __name(async (input) => { - const ast = await parse("radar", input); + const ast = await parse3("radar", input); log.debug(ast); populate17(ast); }, "parse") @@ -137003,8 +139179,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const angle2 = 2 * Math.PI * i2 / numAxes - Math.PI / 2; const r2 = relativeRadius(entry, minValue, maxValue, radius2); const x5 = r2 * Math.cos(angle2); - const y5 = r2 * Math.sin(angle2); - return { x: x5, y: y5 }; + const y6 = r2 * Math.sin(angle2); + return { x: x5, y: y6 }; }); if (graticule === "circle") { g2.append("path").attr("d", closedRoundCurve(points, config5.curveTension)).attr("class", `radarCurve-${index}`); @@ -137019,7 +139195,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } function closedRoundCurve(points, tension) { const numPoints = points.length; - let d2 = `M${points[0].x},${points[0].y}`; + let d3 = `M${points[0].x},${points[0].y}`; for (let i2 = 0; i2 < numPoints; i2++) { const p0 = points[(i2 - 1 + numPoints) % numPoints]; const p1 = points[i2]; @@ -137033,9 +139209,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; x: p22.x - (p3.x - p1.x) * tension, y: p22.y - (p3.y - p1.y) * tension }; - d2 += ` C${cp1.x},${cp1.y} ${cp2.x},${cp2.y} ${p22.x},${p22.y}`; + d3 += ` C${cp1.x},${cp1.y} ${cp2.x},${cp2.y} ${p22.x},${p22.y}`; } - return `${d2} Z`; + return `${d3} Z`; } function drawLegend(g2, curves, showLegend, config5) { if (!showLegend) { @@ -137055,22 +139231,22 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; "src/diagrams/radar/renderer.ts"() { "use strict"; init_selectSvgElement(); - draw22 = /* @__PURE__ */ __name((_text, id29, _version, diagram26) => { - const db10 = diagram26.db; - const axes = db10.getAxes(); - const curves = db10.getCurves(); - const options3 = db10.getOptions(); - const config5 = db10.getConfig(); - const title2 = db10.getDiagramTitle(); - const svg2 = selectSvgElement(id29); + draw22 = /* @__PURE__ */ __name((_text, id30, _version, diagram27) => { + const db7 = diagram27.db; + const axes = db7.getAxes(); + const curves = db7.getCurves(); + const options2 = db7.getOptions(); + const config5 = db7.getConfig(); + const title2 = db7.getDiagramTitle(); + const svg2 = selectSvgElement(id30); const g2 = drawFrame(svg2, config5); - const maxValue = options3.max ?? Math.max(...curves.map((curve) => Math.max(...curve.entries))); - const minValue = options3.min; + const maxValue = options2.max ?? Math.max(...curves.map((curve) => Math.max(...curve.entries))); + const minValue = options2.min; const radius2 = Math.min(config5.width, config5.height) / 2; - drawGraticule(g2, axes, radius2, options3.ticks, options3.graticule); + drawGraticule(g2, axes, radius2, options2.ticks, options2.graticule); drawAxes2(g2, axes, radius2, config5); - drawCurves(g2, axes, curves, minValue, maxValue, options3.graticule, config5); - drawLegend(g2, curves, options3.showLegend, config5); + drawCurves(g2, axes, curves, minValue, maxValue, options2.graticule, config5); + drawLegend(g2, curves, options2.showLegend, config5); g2.append("text").attr("class", "radarTitle").text(title2).attr("x", 0).attr("y", -config5.height / 2 - config5.marginTop); }, "draw"); drawFrame = /* @__PURE__ */ __name((svg2, config5) => { @@ -137093,11 +139269,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const numAxes = axes.length; for (let i2 = 0; i2 < ticks2; i2++) { const r2 = radius2 * (i2 + 1) / ticks2; - const points = axes.map((_2, j2) => { - const angle2 = 2 * j2 * Math.PI / numAxes - Math.PI / 2; + const points = axes.map((_3, j3) => { + const angle2 = 2 * j3 * Math.PI / numAxes - Math.PI / 2; const x5 = r2 * Math.cos(angle2); - const y5 = r2 * Math.sin(angle2); - return `${x5},${y5}`; + const y6 = r2 * Math.sin(angle2); + return `${x5},${y6}`; }).join(" "); g2.append("polygon").attr("points", points).attr("class", "radarGraticule"); } @@ -137206,8 +139382,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; init_renderer2(); init_styles17(); diagram23 = { - parser: parser21, - db: db7, + parser: parser20, + db: db5, renderer: renderer7, styles: styles3 }; @@ -137215,22 +139391,22 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); // src/diagrams/block/parser/block.jison - var parser22, block_default; + var parser21, block_default; var init_block = __esm({ "src/diagrams/block/parser/block.jison"() { "use strict"; - parser22 = function() { - var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l2) { - for (o3 = o3 || {}, l2 = k2.length; l2--; o3[k2[l2]] = v3) ; + parser21 = (function() { + var o2 = /* @__PURE__ */ __name(function(k2, v3, o3, l4) { + for (o3 = o3 || {}, l4 = k2.length; l4--; o3[k2[l4]] = v3) ; return o3; - }, "o"), $V0 = [1, 7], $V1 = [1, 13], $V2 = [1, 14], $V3 = [1, 15], $V4 = [1, 19], $V5 = [1, 16], $V6 = [1, 17], $V7 = [1, 18], $V8 = [8, 30], $V9 = [8, 21, 28, 29, 30, 31, 32, 40, 44, 47], $Va = [1, 23], $Vb = [1, 24], $Vc = [8, 15, 16, 21, 28, 29, 30, 31, 32, 40, 44, 47], $Vd = [8, 15, 16, 21, 27, 28, 29, 30, 31, 32, 40, 44, 47], $Ve = [1, 49]; + }, "o"), $V0 = [1, 15], $V1 = [1, 7], $V2 = [1, 13], $V3 = [1, 14], $V4 = [1, 19], $V5 = [1, 16], $V6 = [1, 17], $V7 = [1, 18], $V8 = [8, 30], $V9 = [8, 10, 21, 28, 29, 30, 31, 39, 43, 46], $Va = [1, 23], $Vb = [1, 24], $Vc = [8, 10, 15, 16, 21, 28, 29, 30, 31, 39, 43, 46], $Vd = [8, 10, 15, 16, 21, 27, 28, 29, 30, 31, 39, 43, 46], $Ve = [1, 49]; var parser24 = { trace: /* @__PURE__ */ __name(function trace() { }, "trace"), yy: {}, - symbols_: { "error": 2, "spaceLines": 3, "SPACELINE": 4, "NL": 5, "separator": 6, "SPACE": 7, "EOF": 8, "start": 9, "BLOCK_DIAGRAM_KEY": 10, "document": 11, "stop": 12, "statement": 13, "link": 14, "LINK": 15, "START_LINK": 16, "LINK_LABEL": 17, "STR": 18, "nodeStatement": 19, "columnsStatement": 20, "SPACE_BLOCK": 21, "blockStatement": 22, "classDefStatement": 23, "cssClassStatement": 24, "styleStatement": 25, "node": 26, "SIZE": 27, "COLUMNS": 28, "id-block": 29, "end": 30, "block": 31, "NODE_ID": 32, "nodeShapeNLabel": 33, "dirList": 34, "DIR": 35, "NODE_DSTART": 36, "NODE_DEND": 37, "BLOCK_ARROW_START": 38, "BLOCK_ARROW_END": 39, "classDef": 40, "CLASSDEF_ID": 41, "CLASSDEF_STYLEOPTS": 42, "DEFAULT": 43, "class": 44, "CLASSENTITY_IDS": 45, "STYLECLASS": 46, "style": 47, "STYLE_ENTITY_IDS": 48, "STYLE_DEFINITION_DATA": 49, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 4: "SPACELINE", 5: "NL", 7: "SPACE", 8: "EOF", 10: "BLOCK_DIAGRAM_KEY", 15: "LINK", 16: "START_LINK", 17: "LINK_LABEL", 18: "STR", 21: "SPACE_BLOCK", 27: "SIZE", 28: "COLUMNS", 29: "id-block", 30: "end", 31: "block", 32: "NODE_ID", 35: "DIR", 36: "NODE_DSTART", 37: "NODE_DEND", 38: "BLOCK_ARROW_START", 39: "BLOCK_ARROW_END", 40: "classDef", 41: "CLASSDEF_ID", 42: "CLASSDEF_STYLEOPTS", 43: "DEFAULT", 44: "class", 45: "CLASSENTITY_IDS", 46: "STYLECLASS", 47: "style", 48: "STYLE_ENTITY_IDS", 49: "STYLE_DEFINITION_DATA" }, - productions_: [0, [3, 1], [3, 2], [3, 2], [6, 1], [6, 1], [6, 1], [9, 3], [12, 1], [12, 1], [12, 2], [12, 2], [11, 1], [11, 2], [14, 1], [14, 4], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [19, 3], [19, 2], [19, 1], [20, 1], [22, 4], [22, 3], [26, 1], [26, 2], [34, 1], [34, 2], [33, 3], [33, 4], [23, 3], [23, 3], [24, 3], [25, 3]], + symbols_: { "error": 2, "spaceLines": 3, "SPACELINE": 4, "NL": 5, "separator": 6, "SPACE": 7, "EOF": 8, "start": 9, "BLOCK_DIAGRAM_KEY": 10, "document": 11, "stop": 12, "statement": 13, "link": 14, "LINK": 15, "START_LINK": 16, "LINK_LABEL": 17, "STR": 18, "nodeStatement": 19, "columnsStatement": 20, "SPACE_BLOCK": 21, "blockStatement": 22, "classDefStatement": 23, "cssClassStatement": 24, "styleStatement": 25, "node": 26, "SIZE": 27, "COLUMNS": 28, "id-block": 29, "end": 30, "NODE_ID": 31, "nodeShapeNLabel": 32, "dirList": 33, "DIR": 34, "NODE_DSTART": 35, "NODE_DEND": 36, "BLOCK_ARROW_START": 37, "BLOCK_ARROW_END": 38, "classDef": 39, "CLASSDEF_ID": 40, "CLASSDEF_STYLEOPTS": 41, "DEFAULT": 42, "class": 43, "CLASSENTITY_IDS": 44, "STYLECLASS": 45, "style": 46, "STYLE_ENTITY_IDS": 47, "STYLE_DEFINITION_DATA": 48, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 4: "SPACELINE", 5: "NL", 7: "SPACE", 8: "EOF", 10: "BLOCK_DIAGRAM_KEY", 15: "LINK", 16: "START_LINK", 17: "LINK_LABEL", 18: "STR", 21: "SPACE_BLOCK", 27: "SIZE", 28: "COLUMNS", 29: "id-block", 30: "end", 31: "NODE_ID", 34: "DIR", 35: "NODE_DSTART", 36: "NODE_DEND", 37: "BLOCK_ARROW_START", 38: "BLOCK_ARROW_END", 39: "classDef", 40: "CLASSDEF_ID", 41: "CLASSDEF_STYLEOPTS", 42: "DEFAULT", 43: "class", 44: "CLASSENTITY_IDS", 45: "STYLECLASS", 46: "style", 47: "STYLE_ENTITY_IDS", 48: "STYLE_DEFINITION_DATA" }, + productions_: [0, [3, 1], [3, 2], [3, 2], [6, 1], [6, 1], [6, 1], [9, 3], [12, 1], [12, 1], [12, 2], [12, 2], [11, 1], [11, 2], [14, 1], [14, 4], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [19, 3], [19, 2], [19, 1], [20, 1], [22, 4], [22, 3], [26, 1], [26, 2], [33, 1], [33, 2], [32, 3], [32, 4], [23, 3], [23, 3], [24, 3], [25, 3]], performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { var $0 = $$.length - 1; switch (yystate) { @@ -137304,7 +139480,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; break; case 27: yy.getLogger().debug("Rule: id-block statement : ", $$[$0 - 2], $$[$0 - 1]); - const id29 = yy.generateId(); + const id210 = yy.generateId(); this.$ = { ...$$[$0 - 2], type: "composite", children: $$[$0 - 1] }; break; case 28: @@ -137348,7 +139524,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; break; } }, "anonymous"), - table: [{ 9: 1, 10: [1, 2] }, { 1: [3] }, { 11: 3, 13: 4, 19: 5, 20: 6, 21: $V0, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $V7 }, { 8: [1, 20] }, o2($V8, [2, 12], { 13: 4, 19: 5, 20: 6, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 11: 21, 21: $V0, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $V7 }), o2($V9, [2, 16], { 14: 22, 15: $Va, 16: $Vb }), o2($V9, [2, 17]), o2($V9, [2, 18]), o2($V9, [2, 19]), o2($V9, [2, 20]), o2($V9, [2, 21]), o2($V9, [2, 22]), o2($Vc, [2, 25], { 27: [1, 25] }), o2($V9, [2, 26]), { 19: 26, 26: 12, 32: $V4 }, { 11: 27, 13: 4, 19: 5, 20: 6, 21: $V0, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $V7 }, { 41: [1, 28], 43: [1, 29] }, { 45: [1, 30] }, { 48: [1, 31] }, o2($Vd, [2, 29], { 33: 32, 36: [1, 33], 38: [1, 34] }), { 1: [2, 7] }, o2($V8, [2, 13]), { 26: 35, 32: $V4 }, { 32: [2, 14] }, { 17: [1, 36] }, o2($Vc, [2, 24]), { 11: 37, 13: 4, 14: 22, 15: $Va, 16: $Vb, 19: 5, 20: 6, 21: $V0, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $V7 }, { 30: [1, 38] }, { 42: [1, 39] }, { 42: [1, 40] }, { 46: [1, 41] }, { 49: [1, 42] }, o2($Vd, [2, 30]), { 18: [1, 43] }, { 18: [1, 44] }, o2($Vc, [2, 23]), { 18: [1, 45] }, { 30: [1, 46] }, o2($V9, [2, 28]), o2($V9, [2, 35]), o2($V9, [2, 36]), o2($V9, [2, 37]), o2($V9, [2, 38]), { 37: [1, 47] }, { 34: 48, 35: $Ve }, { 15: [1, 50] }, o2($V9, [2, 27]), o2($Vd, [2, 33]), { 39: [1, 51] }, { 34: 52, 35: $Ve, 39: [2, 31] }, { 32: [2, 15] }, o2($Vd, [2, 34]), { 39: [2, 32] }], + table: [{ 9: 1, 10: [1, 2] }, { 1: [3] }, { 10: $V0, 11: 3, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 8: [1, 20] }, o2($V8, [2, 12], { 13: 4, 19: 5, 20: 6, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 11: 21, 10: $V0, 21: $V1, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }), o2($V9, [2, 16], { 14: 22, 15: $Va, 16: $Vb }), o2($V9, [2, 17]), o2($V9, [2, 18]), o2($V9, [2, 19]), o2($V9, [2, 20]), o2($V9, [2, 21]), o2($V9, [2, 22]), o2($Vc, [2, 25], { 27: [1, 25] }), o2($V9, [2, 26]), { 19: 26, 26: 12, 31: $V4 }, { 10: $V0, 11: 27, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 40: [1, 28], 42: [1, 29] }, { 44: [1, 30] }, { 47: [1, 31] }, o2($Vd, [2, 29], { 32: 32, 35: [1, 33], 37: [1, 34] }), { 1: [2, 7] }, o2($V8, [2, 13]), { 26: 35, 31: $V4 }, { 31: [2, 14] }, { 17: [1, 36] }, o2($Vc, [2, 24]), { 10: $V0, 11: 37, 13: 4, 14: 22, 15: $Va, 16: $Vb, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 30: [1, 38] }, { 41: [1, 39] }, { 41: [1, 40] }, { 45: [1, 41] }, { 48: [1, 42] }, o2($Vd, [2, 30]), { 18: [1, 43] }, { 18: [1, 44] }, o2($Vc, [2, 23]), { 18: [1, 45] }, { 30: [1, 46] }, o2($V9, [2, 28]), o2($V9, [2, 35]), o2($V9, [2, 36]), o2($V9, [2, 37]), o2($V9, [2, 38]), { 36: [1, 47] }, { 33: 48, 34: $Ve }, { 15: [1, 50] }, o2($V9, [2, 27]), o2($Vd, [2, 33]), { 38: [1, 51] }, { 33: 52, 34: $Ve, 38: [2, 31] }, { 31: [2, 15] }, o2($Vd, [2, 34]), { 38: [2, 32] }], defaultActions: { 20: [2, 7], 23: [2, 14], 50: [2, 15], 52: [2, 32] }, parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { if (hash.recoverable) { @@ -137362,22 +139538,22 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; parse: /* @__PURE__ */ __name(function parse7(input) { var self2 = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF2 = 1; var args = lstack.slice.call(arguments, 1); - var lexer3 = Object.create(this.lexer); + var lexer2 = Object.create(this.lexer); var sharedState = { yy: {} }; for (var k2 in this.yy) { if (Object.prototype.hasOwnProperty.call(this.yy, k2)) { sharedState.yy[k2] = this.yy[k2]; } } - lexer3.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer3; + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; sharedState.yy.parser = this; - if (typeof lexer3.yylloc == "undefined") { - lexer3.yylloc = {}; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; } - var yyloc = lexer3.yylloc; + var yyloc = lexer2.yylloc; lstack.push(yyloc); - var ranges = lexer3.options && lexer3.options.ranges; + var ranges = lexer2.options && lexer2.options.ranges; if (typeof sharedState.yy.parseError === "function") { this.parseError = sharedState.yy.parseError; } else { @@ -137391,7 +139567,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; __name(popStack, "popStack"); function lex() { var token2; - token2 = tstack.pop() || lexer3.lex() || EOF2; + token2 = tstack.pop() || lexer2.lex() || EOF2; if (typeof token2 !== "number") { if (token2 instanceof Array) { tstack = token2; @@ -137402,53 +139578,53 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return token2; } __name(lex, "lex"); - var symbol, preErrorSymbol, state4, action, a2, r2, yyval = {}, p3, len, newState2, expected; + var symbol, preErrorSymbol, state3, action, a2, r2, yyval = {}, p3, len, newState2, expected; while (true) { - state4 = stack[stack.length - 1]; - if (this.defaultActions[state4]) { - action = this.defaultActions[state4]; + state3 = stack[stack.length - 1]; + if (this.defaultActions[state3]) { + action = this.defaultActions[state3]; } else { if (symbol === null || typeof symbol == "undefined") { symbol = lex(); } - action = table[state4] && table[state4][symbol]; + action = table[state3] && table[state3][symbol]; } if (typeof action === "undefined" || !action.length || !action[0]) { var errStr = ""; expected = []; - for (p3 in table[state4]) { + for (p3 in table[state3]) { if (this.terminals_[p3] && p3 > TERROR) { expected.push("'" + this.terminals_[p3] + "'"); } } - if (lexer3.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer3.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; } else { errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF2 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); } this.parseError(errStr, { - text: lexer3.match, + text: lexer2.match, token: this.terminals_[symbol] || symbol, - line: lexer3.yylineno, + line: lexer2.yylineno, loc: yyloc, expected }); } if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state4 + ", token: " + symbol); + throw new Error("Parse Error: multiple actions possible at state: " + state3 + ", token: " + symbol); } switch (action[0]) { case 1: stack.push(symbol); - vstack.push(lexer3.yytext); - lstack.push(lexer3.yylloc); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); stack.push(action[1]); symbol = null; if (!preErrorSymbol) { - yyleng = lexer3.yyleng; - yytext = lexer3.yytext; - yylineno = lexer3.yylineno; - yyloc = lexer3.yylloc; + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; if (recovering > 0) { recovering--; } @@ -137502,8 +139678,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return true; }, "parse") }; - var lexer2 = /* @__PURE__ */ function() { - var lexer3 = { + var lexer = /* @__PURE__ */ (function() { + var lexer2 = { EOF: 1, parseError: /* @__PURE__ */ __name(function parseError(str2, hash) { if (this.yy.parser) { @@ -137786,149 +139962,151 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var YYSTATE = YY_START; switch ($avoiding_name_collisions) { case 0: + yy.getLogger().debug("Found block-beta"); return 10; break; case 1: - yy.getLogger().debug("Found space-block"); - return 31; + yy.getLogger().debug("Found id-block"); + return 29; break; case 2: - yy.getLogger().debug("Found nl-block"); - return 31; + yy.getLogger().debug("Found block"); + return 10; break; case 3: - yy.getLogger().debug("Found space-block"); - return 29; - break; - case 4: yy.getLogger().debug(".", yy_.yytext); break; - case 5: + case 4: yy.getLogger().debug("_", yy_.yytext); break; - case 6: + case 5: return 5; break; - case 7: + case 6: yy_.yytext = -1; return 28; break; - case 8: + case 7: yy_.yytext = yy_.yytext.replace(/columns\s+/, ""); yy.getLogger().debug("COLUMNS (LEX)", yy_.yytext); return 28; break; - case 9: + case 8: this.pushState("md_string"); break; - case 10: + case 9: return "MD_STR"; break; - case 11: + case 10: this.popState(); break; - case 12: + case 11: this.pushState("string"); break; - case 13: + case 12: yy.getLogger().debug("LEX: POPPING STR:", yy_.yytext); this.popState(); break; - case 14: + case 13: yy.getLogger().debug("LEX: STR end:", yy_.yytext); return "STR"; break; - case 15: + case 14: yy_.yytext = yy_.yytext.replace(/space\:/, ""); yy.getLogger().debug("SPACE NUM (LEX)", yy_.yytext); return 21; break; - case 16: + case 15: yy_.yytext = "1"; yy.getLogger().debug("COLUMNS (LEX)", yy_.yytext); return 21; break; + case 16: + return 42; + break; case 17: - return 43; + return "LINKSTYLE"; break; case 18: - return "LINKSTYLE"; + return "INTERPOLATE"; break; case 19: - return "INTERPOLATE"; + this.pushState("CLASSDEF"); + return 39; break; case 20: - this.pushState("CLASSDEF"); - return 40; + this.popState(); + this.pushState("CLASSDEFID"); + return "DEFAULT_CLASSDEF_ID"; break; case 21: this.popState(); this.pushState("CLASSDEFID"); - return "DEFAULT_CLASSDEF_ID"; + return 40; break; case 22: this.popState(); - this.pushState("CLASSDEFID"); return 41; break; case 23: - this.popState(); - return 42; + this.pushState("CLASS"); + return 43; break; case 24: - this.pushState("CLASS"); + this.popState(); + this.pushState("CLASS_STYLE"); return 44; break; case 25: this.popState(); - this.pushState("CLASS_STYLE"); return 45; break; case 26: - this.popState(); + this.pushState("STYLE_STMNT"); return 46; break; case 27: - this.pushState("STYLE_STMNT"); + this.popState(); + this.pushState("STYLE_DEFINITION"); return 47; break; case 28: this.popState(); - this.pushState("STYLE_DEFINITION"); return 48; break; case 29: - this.popState(); - return 49; - break; - case 30: this.pushState("acc_title"); return "acc_title"; break; - case 31: + case 30: this.popState(); return "acc_title_value"; break; - case 32: + case 31: this.pushState("acc_descr"); return "acc_descr"; break; - case 33: + case 32: this.popState(); return "acc_descr_value"; break; - case 34: + case 33: this.pushState("acc_descr_multiline"); break; - case 35: + case 34: this.popState(); break; - case 36: + case 35: return "acc_descr_multiline_value"; break; - case 37: + case 36: return 30; break; + case 37: + this.popState(); + yy.getLogger().debug("Lex: (("); + return "NODE_DEND"; + break; case 38: this.popState(); yy.getLogger().debug("Lex: (("); @@ -137936,12 +140114,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; break; case 39: this.popState(); - yy.getLogger().debug("Lex: (("); + yy.getLogger().debug("Lex: ))"); return "NODE_DEND"; break; case 40: this.popState(); - yy.getLogger().debug("Lex: ))"); + yy.getLogger().debug("Lex: (("); return "NODE_DEND"; break; case 41: @@ -137951,37 +140129,37 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; break; case 42: this.popState(); - yy.getLogger().debug("Lex: (("); + yy.getLogger().debug("Lex: (-"); return "NODE_DEND"; break; case 43: this.popState(); - yy.getLogger().debug("Lex: (-"); + yy.getLogger().debug("Lex: -)"); return "NODE_DEND"; break; case 44: this.popState(); - yy.getLogger().debug("Lex: -)"); + yy.getLogger().debug("Lex: (("); return "NODE_DEND"; break; case 45: this.popState(); - yy.getLogger().debug("Lex: (("); + yy.getLogger().debug("Lex: ]]"); return "NODE_DEND"; break; case 46: this.popState(); - yy.getLogger().debug("Lex: ]]"); + yy.getLogger().debug("Lex: ("); return "NODE_DEND"; break; case 47: this.popState(); - yy.getLogger().debug("Lex: ("); + yy.getLogger().debug("Lex: ])"); return "NODE_DEND"; break; case 48: this.popState(); - yy.getLogger().debug("Lex: ])"); + yy.getLogger().debug("Lex: /]"); return "NODE_DEND"; break; case 49: @@ -137991,266 +140169,261 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; break; case 50: this.popState(); - yy.getLogger().debug("Lex: /]"); + yy.getLogger().debug("Lex: )]"); return "NODE_DEND"; break; case 51: this.popState(); - yy.getLogger().debug("Lex: )]"); + yy.getLogger().debug("Lex: )"); return "NODE_DEND"; break; case 52: this.popState(); - yy.getLogger().debug("Lex: )"); + yy.getLogger().debug("Lex: ]>"); return "NODE_DEND"; break; case 53: this.popState(); - yy.getLogger().debug("Lex: ]>"); + yy.getLogger().debug("Lex: ]"); return "NODE_DEND"; break; case 54: - this.popState(); - yy.getLogger().debug("Lex: ]"); - return "NODE_DEND"; + yy.getLogger().debug("Lexa: -)"); + this.pushState("NODE"); + return 35; break; case 55: - yy.getLogger().debug("Lexa: -)"); + yy.getLogger().debug("Lexa: (-"); this.pushState("NODE"); - return 36; + return 35; break; case 56: - yy.getLogger().debug("Lexa: (-"); + yy.getLogger().debug("Lexa: ))"); this.pushState("NODE"); - return 36; + return 35; break; case 57: - yy.getLogger().debug("Lexa: ))"); + yy.getLogger().debug("Lexa: )"); this.pushState("NODE"); - return 36; + return 35; break; case 58: - yy.getLogger().debug("Lexa: )"); + yy.getLogger().debug("Lex: ((("); this.pushState("NODE"); - return 36; + return 35; break; case 59: - yy.getLogger().debug("Lex: ((("); + yy.getLogger().debug("Lexa: )"); this.pushState("NODE"); - return 36; + return 35; break; case 60: yy.getLogger().debug("Lexa: )"); this.pushState("NODE"); - return 36; + return 35; break; case 61: yy.getLogger().debug("Lexa: )"); this.pushState("NODE"); - return 36; + return 35; break; case 62: - yy.getLogger().debug("Lexa: )"); + yy.getLogger().debug("Lexc: >"); this.pushState("NODE"); - return 36; + return 35; break; case 63: - yy.getLogger().debug("Lexc: >"); + yy.getLogger().debug("Lexa: (["); this.pushState("NODE"); - return 36; + return 35; break; case 64: - yy.getLogger().debug("Lexa: (["); + yy.getLogger().debug("Lexa: )"); this.pushState("NODE"); - return 36; + return 35; break; case 65: - yy.getLogger().debug("Lexa: )"); this.pushState("NODE"); - return 36; + return 35; break; case 66: this.pushState("NODE"); - return 36; + return 35; break; case 67: this.pushState("NODE"); - return 36; + return 35; break; case 68: this.pushState("NODE"); - return 36; + return 35; break; case 69: this.pushState("NODE"); - return 36; + return 35; break; case 70: this.pushState("NODE"); - return 36; + return 35; break; case 71: this.pushState("NODE"); - return 36; + return 35; break; case 72: - this.pushState("NODE"); - return 36; - break; - case 73: yy.getLogger().debug("Lexa: ["); this.pushState("NODE"); - return 36; + return 35; break; - case 74: + case 73: this.pushState("BLOCK_ARROW"); yy.getLogger().debug("LEX ARR START"); - return 38; + return 37; break; - case 75: + case 74: yy.getLogger().debug("Lex: NODE_ID", yy_.yytext); - return 32; + return 31; break; - case 76: + case 75: yy.getLogger().debug("Lex: EOF", yy_.yytext); return 8; break; - case 77: + case 76: this.pushState("md_string"); break; - case 78: + case 77: this.pushState("md_string"); break; - case 79: + case 78: return "NODE_DESCR"; break; - case 80: + case 79: this.popState(); break; - case 81: + case 80: yy.getLogger().debug("Lex: Starting string"); this.pushState("string"); break; - case 82: + case 81: yy.getLogger().debug("LEX ARR: Starting string"); this.pushState("string"); break; - case 83: + case 82: yy.getLogger().debug("LEX: NODE_DESCR:", yy_.yytext); return "NODE_DESCR"; break; - case 84: + case 83: yy.getLogger().debug("LEX POPPING"); this.popState(); break; - case 85: + case 84: yy.getLogger().debug("Lex: =>BAE"); this.pushState("ARROW_DIR"); break; - case 86: + case 85: yy_.yytext = yy_.yytext.replace(/^,\s*/, ""); yy.getLogger().debug("Lex (right): dir:", yy_.yytext); return "DIR"; break; - case 87: + case 86: yy_.yytext = yy_.yytext.replace(/^,\s*/, ""); yy.getLogger().debug("Lex (left):", yy_.yytext); return "DIR"; break; - case 88: + case 87: yy_.yytext = yy_.yytext.replace(/^,\s*/, ""); yy.getLogger().debug("Lex (x):", yy_.yytext); return "DIR"; break; - case 89: + case 88: yy_.yytext = yy_.yytext.replace(/^,\s*/, ""); yy.getLogger().debug("Lex (y):", yy_.yytext); return "DIR"; break; - case 90: + case 89: yy_.yytext = yy_.yytext.replace(/^,\s*/, ""); yy.getLogger().debug("Lex (up):", yy_.yytext); return "DIR"; break; - case 91: + case 90: yy_.yytext = yy_.yytext.replace(/^,\s*/, ""); yy.getLogger().debug("Lex (down):", yy_.yytext); return "DIR"; break; - case 92: + case 91: yy_.yytext = "]>"; yy.getLogger().debug("Lex (ARROW_DIR end):", yy_.yytext); this.popState(); this.popState(); return "BLOCK_ARROW_END"; break; - case 93: + case 92: yy.getLogger().debug("Lex: LINK", "#" + yy_.yytext + "#"); return 15; break; - case 94: + case 93: yy.getLogger().debug("Lex: LINK", yy_.yytext); return 15; break; - case 95: + case 94: yy.getLogger().debug("Lex: LINK", yy_.yytext); return 15; break; - case 96: + case 95: yy.getLogger().debug("Lex: LINK", yy_.yytext); return 15; break; - case 97: + case 96: yy.getLogger().debug("Lex: START_LINK", yy_.yytext); this.pushState("LLABEL"); return 16; break; - case 98: + case 97: yy.getLogger().debug("Lex: START_LINK", yy_.yytext); this.pushState("LLABEL"); return 16; break; - case 99: + case 98: yy.getLogger().debug("Lex: START_LINK", yy_.yytext); this.pushState("LLABEL"); return 16; break; - case 100: + case 99: this.pushState("md_string"); break; - case 101: + case 100: yy.getLogger().debug("Lex: Starting string"); this.pushState("string"); return "LINK_LABEL"; break; - case 102: + case 101: this.popState(); yy.getLogger().debug("Lex: LINK", "#" + yy_.yytext + "#"); return 15; break; - case 103: + case 102: this.popState(); yy.getLogger().debug("Lex: LINK", yy_.yytext); return 15; break; - case 104: + case 103: this.popState(); yy.getLogger().debug("Lex: LINK", yy_.yytext); return 15; break; - case 105: + case 104: yy.getLogger().debug("Lex: COLON", yy_.yytext); yy_.yytext = yy_.yytext.slice(1); return 27; break; } }, "anonymous"), - rules: [/^(?:block-beta\b)/, /^(?:block\s+)/, /^(?:block\n+)/, /^(?:block:)/, /^(?:[\s]+)/, /^(?:[\n]+)/, /^(?:((\u000D\u000A)|(\u000A)))/, /^(?:columns\s+auto\b)/, /^(?:columns\s+[\d]+)/, /^(?:["][`])/, /^(?:[^`"]+)/, /^(?:[`]["])/, /^(?:["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:space[:]\d+)/, /^(?:space\b)/, /^(?:default\b)/, /^(?:linkStyle\b)/, /^(?:interpolate\b)/, /^(?:classDef\s+)/, /^(?:DEFAULT\s+)/, /^(?:\w+\s+)/, /^(?:[^\n]*)/, /^(?:class\s+)/, /^(?:(\w+)+((,\s*\w+)*))/, /^(?:[^\n]*)/, /^(?:style\s+)/, /^(?:(\w+)+((,\s*\w+)*))/, /^(?:[^\n]*)/, /^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:end\b\s*)/, /^(?:\(\(\()/, /^(?:\)\)\))/, /^(?:[\)]\))/, /^(?:\}\})/, /^(?:\})/, /^(?:\(-)/, /^(?:-\))/, /^(?:\(\()/, /^(?:\]\])/, /^(?:\()/, /^(?:\]\))/, /^(?:\\\])/, /^(?:\/\])/, /^(?:\)\])/, /^(?:[\)])/, /^(?:\]>)/, /^(?:[\]])/, /^(?:-\))/, /^(?:\(-)/, /^(?:\)\))/, /^(?:\))/, /^(?:\(\(\()/, /^(?:\(\()/, /^(?:\{\{)/, /^(?:\{)/, /^(?:>)/, /^(?:\(\[)/, /^(?:\()/, /^(?:\[\[)/, /^(?:\[\|)/, /^(?:\[\()/, /^(?:\)\)\))/, /^(?:\[\\)/, /^(?:\[\/)/, /^(?:\[\\)/, /^(?:\[)/, /^(?:<\[)/, /^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/, /^(?:$)/, /^(?:["][`])/, /^(?:["][`])/, /^(?:[^`"]+)/, /^(?:[`]["])/, /^(?:["])/, /^(?:["])/, /^(?:[^"]+)/, /^(?:["])/, /^(?:\]>\s*\()/, /^(?:,?\s*right\s*)/, /^(?:,?\s*left\s*)/, /^(?:,?\s*x\s*)/, /^(?:,?\s*y\s*)/, /^(?:,?\s*up\s*)/, /^(?:,?\s*down\s*)/, /^(?:\)\s*)/, /^(?:\s*[xo<]?--+[-xo>]\s*)/, /^(?:\s*[xo<]?==+[=xo>]\s*)/, /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/, /^(?:\s*~~[\~]+\s*)/, /^(?:\s*[xo<]?--\s*)/, /^(?:\s*[xo<]?==\s*)/, /^(?:\s*[xo<]?-\.\s*)/, /^(?:["][`])/, /^(?:["])/, /^(?:\s*[xo<]?--+[-xo>]\s*)/, /^(?:\s*[xo<]?==+[=xo>]\s*)/, /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/, /^(?::\d+)/], - conditions: { "STYLE_DEFINITION": { "rules": [29], "inclusive": false }, "STYLE_STMNT": { "rules": [28], "inclusive": false }, "CLASSDEFID": { "rules": [23], "inclusive": false }, "CLASSDEF": { "rules": [21, 22], "inclusive": false }, "CLASS_STYLE": { "rules": [26], "inclusive": false }, "CLASS": { "rules": [25], "inclusive": false }, "LLABEL": { "rules": [100, 101, 102, 103, 104], "inclusive": false }, "ARROW_DIR": { "rules": [86, 87, 88, 89, 90, 91, 92], "inclusive": false }, "BLOCK_ARROW": { "rules": [77, 82, 85], "inclusive": false }, "NODE": { "rules": [38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 78, 81], "inclusive": false }, "md_string": { "rules": [10, 11, 79, 80], "inclusive": false }, "space": { "rules": [], "inclusive": false }, "string": { "rules": [13, 14, 83, 84], "inclusive": false }, "acc_descr_multiline": { "rules": [35, 36], "inclusive": false }, "acc_descr": { "rules": [33], "inclusive": false }, "acc_title": { "rules": [31], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 19, 20, 24, 27, 30, 32, 34, 37, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 93, 94, 95, 96, 97, 98, 99, 105], "inclusive": true } } + rules: [/^(?:block-beta\b)/, /^(?:block:)/, /^(?:block\b)/, /^(?:[\s]+)/, /^(?:[\n]+)/, /^(?:((\u000D\u000A)|(\u000A)))/, /^(?:columns\s+auto\b)/, /^(?:columns\s+[\d]+)/, /^(?:["][`])/, /^(?:[^`"]+)/, /^(?:[`]["])/, /^(?:["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:space[:]\d+)/, /^(?:space\b)/, /^(?:default\b)/, /^(?:linkStyle\b)/, /^(?:interpolate\b)/, /^(?:classDef\s+)/, /^(?:DEFAULT\s+)/, /^(?:\w+\s+)/, /^(?:[^\n]*)/, /^(?:class\s+)/, /^(?:(\w+)+((,\s*\w+)*))/, /^(?:[^\n]*)/, /^(?:style\s+)/, /^(?:(\w+)+((,\s*\w+)*))/, /^(?:[^\n]*)/, /^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:end\b\s*)/, /^(?:\(\(\()/, /^(?:\)\)\))/, /^(?:[\)]\))/, /^(?:\}\})/, /^(?:\})/, /^(?:\(-)/, /^(?:-\))/, /^(?:\(\()/, /^(?:\]\])/, /^(?:\()/, /^(?:\]\))/, /^(?:\\\])/, /^(?:\/\])/, /^(?:\)\])/, /^(?:[\)])/, /^(?:\]>)/, /^(?:[\]])/, /^(?:-\))/, /^(?:\(-)/, /^(?:\)\))/, /^(?:\))/, /^(?:\(\(\()/, /^(?:\(\()/, /^(?:\{\{)/, /^(?:\{)/, /^(?:>)/, /^(?:\(\[)/, /^(?:\()/, /^(?:\[\[)/, /^(?:\[\|)/, /^(?:\[\()/, /^(?:\)\)\))/, /^(?:\[\\)/, /^(?:\[\/)/, /^(?:\[\\)/, /^(?:\[)/, /^(?:<\[)/, /^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/, /^(?:$)/, /^(?:["][`])/, /^(?:["][`])/, /^(?:[^`"]+)/, /^(?:[`]["])/, /^(?:["])/, /^(?:["])/, /^(?:[^"]+)/, /^(?:["])/, /^(?:\]>\s*\()/, /^(?:,?\s*right\s*)/, /^(?:,?\s*left\s*)/, /^(?:,?\s*x\s*)/, /^(?:,?\s*y\s*)/, /^(?:,?\s*up\s*)/, /^(?:,?\s*down\s*)/, /^(?:\)\s*)/, /^(?:\s*[xo<]?--+[-xo>]\s*)/, /^(?:\s*[xo<]?==+[=xo>]\s*)/, /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/, /^(?:\s*~~[\~]+\s*)/, /^(?:\s*[xo<]?--\s*)/, /^(?:\s*[xo<]?==\s*)/, /^(?:\s*[xo<]?-\.\s*)/, /^(?:["][`])/, /^(?:["])/, /^(?:\s*[xo<]?--+[-xo>]\s*)/, /^(?:\s*[xo<]?==+[=xo>]\s*)/, /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/, /^(?::\d+)/], + conditions: { "STYLE_DEFINITION": { "rules": [28], "inclusive": false }, "STYLE_STMNT": { "rules": [27], "inclusive": false }, "CLASSDEFID": { "rules": [22], "inclusive": false }, "CLASSDEF": { "rules": [20, 21], "inclusive": false }, "CLASS_STYLE": { "rules": [25], "inclusive": false }, "CLASS": { "rules": [24], "inclusive": false }, "LLABEL": { "rules": [99, 100, 101, 102, 103], "inclusive": false }, "ARROW_DIR": { "rules": [85, 86, 87, 88, 89, 90, 91], "inclusive": false }, "BLOCK_ARROW": { "rules": [76, 81, 84], "inclusive": false }, "NODE": { "rules": [37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 77, 80], "inclusive": false }, "md_string": { "rules": [9, 10, 78, 79], "inclusive": false }, "space": { "rules": [], "inclusive": false }, "string": { "rules": [12, 13, 82, 83], "inclusive": false }, "acc_descr_multiline": { "rules": [34, 35], "inclusive": false }, "acc_descr": { "rules": [32], "inclusive": false }, "acc_title": { "rules": [30], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 14, 15, 16, 17, 18, 19, 23, 26, 29, 31, 33, 36, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 92, 93, 94, 95, 96, 97, 98, 104], "inclusive": true } } }; - return lexer3; - }(); - parser24.lexer = lexer2; + return lexer2; + })(); + parser24.lexer = lexer; function Parser3() { this.yy = {}; } @@ -138258,9 +140431,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; Parser3.prototype = parser24; parser24.Parser = Parser3; return new Parser3(); - }(); - parser22.parser = parser22; - block_default = parser22; + })(); + parser21.parser = parser21; + block_default = parser21; } }); @@ -138313,16 +140486,18 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } } function edgeStrToEdgeData(typeStr) { - switch (typeStr.trim()) { - case "--x": + switch (typeStr.replace(/^[\s-]+|[\s-]+$/g, "")) { + case "x": return "arrow_cross"; - case "--o": + case "o": return "arrow_circle"; - default: + case ">": return "arrow_point"; + default: + return ""; } } - var blockDatabase, edgeList, edgeCount2, COLOR_KEYWORD2, FILL_KEYWORD2, BG_FILL2, STYLECLASS_SEP2, config4, classes2, sanitizeText5, addStyleClass, addStyle2Node, setCssClass, populateBlockDatabase, blocks, rootBlock, clear20, cnt4, generateId2, setHierarchy, getColumns, getBlocksFlat, getBlocks, getEdges, getBlock, setBlock, getLogger3, getClasses4, db8, blockDB_default; + var blockDatabase, edgeList, edgeCount2, COLOR_KEYWORD, FILL_KEYWORD, BG_FILL, STYLECLASS_SEP, config4, classes2, sanitizeText5, addStyleClass, addStyle2Node, setCssClass, populateBlockDatabase, blocks, rootBlock, clear18, cnt3, generateId2, setHierarchy, getColumns, getBlocksFlat, getBlocks, getEdges, getBlock, setBlock, getLogger2, getClasses4, db6, blockDB_default; var init_blockDB = __esm({ "src/diagrams/block/blockDB.ts"() { "use strict"; @@ -138335,42 +140510,42 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; blockDatabase = /* @__PURE__ */ new Map(); edgeList = []; edgeCount2 = /* @__PURE__ */ new Map(); - COLOR_KEYWORD2 = "color"; - FILL_KEYWORD2 = "fill"; - BG_FILL2 = "bgFill"; - STYLECLASS_SEP2 = ","; + COLOR_KEYWORD = "color"; + FILL_KEYWORD = "fill"; + BG_FILL = "bgFill"; + STYLECLASS_SEP = ","; config4 = getConfig2(); classes2 = /* @__PURE__ */ new Map(); sanitizeText5 = /* @__PURE__ */ __name((txt) => common_default.sanitizeText(txt, config4), "sanitizeText"); - addStyleClass = /* @__PURE__ */ __name(function(id29, styleAttributes = "") { - let foundClass = classes2.get(id29); + addStyleClass = /* @__PURE__ */ __name(function(id30, styleAttributes = "") { + let foundClass = classes2.get(id30); if (!foundClass) { - foundClass = { id: id29, styles: [], textStyles: [] }; - classes2.set(id29, foundClass); + foundClass = { id: id30, styles: [], textStyles: [] }; + classes2.set(id30, foundClass); } if (styleAttributes !== void 0 && styleAttributes !== null) { - styleAttributes.split(STYLECLASS_SEP2).forEach((attrib) => { + styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => { const fixedAttrib = attrib.replace(/([^;]*);/, "$1").trim(); - if (RegExp(COLOR_KEYWORD2).exec(attrib)) { - const newStyle1 = fixedAttrib.replace(FILL_KEYWORD2, BG_FILL2); - const newStyle2 = newStyle1.replace(COLOR_KEYWORD2, FILL_KEYWORD2); + if (RegExp(COLOR_KEYWORD).exec(attrib)) { + const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL); + const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD); foundClass.textStyles.push(newStyle2); } foundClass.styles.push(fixedAttrib); }); } }, "addStyleClass"); - addStyle2Node = /* @__PURE__ */ __name(function(id29, styles4 = "") { - const foundBlock = blockDatabase.get(id29); + addStyle2Node = /* @__PURE__ */ __name(function(id30, styles4 = "") { + const foundBlock = blockDatabase.get(id30); if (styles4 !== void 0 && styles4 !== null) { - foundBlock.styles = styles4.split(STYLECLASS_SEP2); + foundBlock.styles = styles4.split(STYLECLASS_SEP); } }, "addStyle2Node"); setCssClass = /* @__PURE__ */ __name(function(itemIds, cssClassName) { - itemIds.split(",").forEach(function(id29) { - let foundBlock = blockDatabase.get(id29); + itemIds.split(",").forEach(function(id30) { + let foundBlock = blockDatabase.get(id30); if (foundBlock === void 0) { - const trimmedId = id29.trim(); + const trimmedId = id30.trim(); foundBlock = { id: trimmedId, type: "na", children: [] }; blockDatabase.set(trimmedId, foundBlock); } @@ -138383,63 +140558,70 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; populateBlockDatabase = /* @__PURE__ */ __name((_blockList, parent4) => { const blockList = _blockList.flat(); const children2 = []; - for (const block3 of blockList) { - if (block3.label) { - block3.label = sanitizeText5(block3.label); + const columnSettingBlock = blockList.find((b3) => b3?.type === "column-setting"); + const column2 = columnSettingBlock?.columns ?? -1; + for (const block2 of blockList) { + if (typeof column2 === "number" && column2 > 0 && block2.type !== "column-setting" && typeof block2.widthInColumns === "number" && block2.widthInColumns > column2) { + log.warn( + `Block ${block2.id} width ${block2.widthInColumns} exceeds configured column width ${column2}` + ); + } + if (block2.label) { + block2.label = sanitizeText5(block2.label); } - if (block3.type === "classDef") { - addStyleClass(block3.id, block3.css); + if (block2.type === "classDef") { + addStyleClass(block2.id, block2.css); continue; } - if (block3.type === "applyClass") { - setCssClass(block3.id, block3?.styleClass ?? ""); + if (block2.type === "applyClass") { + setCssClass(block2.id, block2?.styleClass ?? ""); continue; } - if (block3.type === "applyStyles") { - if (block3?.stylesStr) { - addStyle2Node(block3.id, block3?.stylesStr); + if (block2.type === "applyStyles") { + if (block2?.stylesStr) { + addStyle2Node(block2.id, block2?.stylesStr); } continue; } - if (block3.type === "column-setting") { - parent4.columns = block3.columns ?? -1; - } else if (block3.type === "edge") { - const count = (edgeCount2.get(block3.id) ?? 0) + 1; - edgeCount2.set(block3.id, count); - block3.id = count + "-" + block3.id; - edgeList.push(block3); + if (block2.type === "column-setting") { + parent4.columns = block2.columns ?? -1; + } else if (block2.type === "edge") { + const count2 = (edgeCount2.get(block2.id) ?? 0) + 1; + edgeCount2.set(block2.id, count2); + block2.id = count2 + "-" + block2.id; + edgeList.push(block2); } else { - if (!block3.label) { - if (block3.type === "composite") { - block3.label = ""; + if (!block2.label) { + if (block2.type === "composite") { + block2.label = ""; } else { - block3.label = block3.id; + block2.label = block2.id; } } - const existingBlock = blockDatabase.get(block3.id); + const existingBlock = blockDatabase.get(block2.id); if (existingBlock === void 0) { - blockDatabase.set(block3.id, block3); + blockDatabase.set(block2.id, block2); } else { - if (block3.type !== "na") { - existingBlock.type = block3.type; + if (block2.type !== "na") { + existingBlock.type = block2.type; } - if (block3.label !== block3.id) { - existingBlock.label = block3.label; + if (block2.label !== block2.id) { + existingBlock.label = block2.label; } } - if (block3.children) { - populateBlockDatabase(block3.children, block3); + if (block2.children) { + populateBlockDatabase(block2.children, block2); } - if (block3.type === "space") { - const w3 = block3.width ?? 1; - for (let j2 = 0; j2 < w3; j2++) { - const newBlock = clone_default2(block3); - newBlock.id = newBlock.id + "-" + j2; + if (block2.type === "space") { + const w4 = block2.width ?? 1; + for (let j3 = 0; j3 < w4; j3++) { + const newBlock = clone_default2(block2); + newBlock.id = newBlock.id + "-" + j3; blockDatabase.set(newBlock.id, newBlock); children2.push(newBlock); } } else if (existingBlock === void 0) { - children2.push(block3); + children2.push(block2); } } } @@ -138447,7 +140629,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }, "populateBlockDatabase"); blocks = []; rootBlock = { id: "root", type: "composite", children: [], columns: -1 }; - clear20 = /* @__PURE__ */ __name(() => { + clear18 = /* @__PURE__ */ __name(() => { log.debug("Clear called"); clear(); rootBlock = { id: "root", type: "composite", children: [], columns: -1 }; @@ -138460,28 +140642,28 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; __name(typeStr2Type, "typeStr2Type"); __name(edgeTypeStr2Type, "edgeTypeStr2Type"); __name(edgeStrToEdgeData, "edgeStrToEdgeData"); - cnt4 = 0; + cnt3 = 0; generateId2 = /* @__PURE__ */ __name(() => { - cnt4++; - return "id-" + Math.random().toString(36).substr(2, 12) + "-" + cnt4; + cnt3++; + return "id-" + Math.random().toString(36).substr(2, 12) + "-" + cnt3; }, "generateId"); - setHierarchy = /* @__PURE__ */ __name((block3) => { - rootBlock.children = block3; - populateBlockDatabase(block3, rootBlock); + setHierarchy = /* @__PURE__ */ __name((block2) => { + rootBlock.children = block2; + populateBlockDatabase(block2, rootBlock); blocks = rootBlock.children; }, "setHierarchy"); getColumns = /* @__PURE__ */ __name((blockId) => { - const block3 = blockDatabase.get(blockId); - if (!block3) { + const block2 = blockDatabase.get(blockId); + if (!block2) { return -1; } - if (block3.columns) { - return block3.columns; + if (block2.columns) { + return block2.columns; } - if (!block3.children) { + if (!block2.children) { return -1; } - return block3.children.length; + return block2.children.length; }, "getColumns"); getBlocksFlat = /* @__PURE__ */ __name(() => { return [...blockDatabase.values()]; @@ -138492,22 +140674,22 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; getEdges = /* @__PURE__ */ __name(() => { return edgeList; }, "getEdges"); - getBlock = /* @__PURE__ */ __name((id29) => { - return blockDatabase.get(id29); + getBlock = /* @__PURE__ */ __name((id30) => { + return blockDatabase.get(id30); }, "getBlock"); - setBlock = /* @__PURE__ */ __name((block3) => { - blockDatabase.set(block3.id, block3); + setBlock = /* @__PURE__ */ __name((block2) => { + blockDatabase.set(block2.id, block2); }, "setBlock"); - getLogger3 = /* @__PURE__ */ __name(() => console, "getLogger"); + getLogger2 = /* @__PURE__ */ __name(() => log, "getLogger"); getClasses4 = /* @__PURE__ */ __name(function() { return classes2; }, "getClasses"); - db8 = { + db6 = { getConfig: /* @__PURE__ */ __name(() => getConfig().block, "getConfig"), typeStr2Type, edgeTypeStr2Type, edgeStrToEdgeData, - getLogger: getLogger3, + getLogger: getLogger2, getBlocksFlat, getBlocks, getEdges, @@ -138516,10 +140698,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; setBlock, getColumns, getClasses: getClasses4, - clear: clear20, + clear: clear18, generateId: generateId2 }; - blockDB_default = db8; + blockDB_default = db6; } }); @@ -138529,29 +140711,30 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; "src/diagrams/block/styles.ts"() { "use strict"; init_dist(); + init_globalStyles(); fade3 = /* @__PURE__ */ __name((color2, opacity) => { const channel2 = channel_default2; const r2 = channel2(color2, "r"); const g2 = channel2(color2, "g"); - const b2 = channel2(color2, "b"); - return rgba_default(r2, g2, b2, opacity); + const b3 = channel2(color2, "b"); + return rgba_default(r2, g2, b3, opacity); }, "fade"); - getStyles17 = /* @__PURE__ */ __name((options3) => `.label { - font-family: ${options3.fontFamily}; - color: ${options3.nodeTextColor || options3.textColor}; + getStyles17 = /* @__PURE__ */ __name((options2) => `.label { + font-family: ${options2.fontFamily}; + color: ${options2.nodeTextColor || options2.textColor}; } .cluster-label text { - fill: ${options3.titleColor}; + fill: ${options2.titleColor}; } .cluster-label span,p { - color: ${options3.titleColor}; + color: ${options2.titleColor}; } .label text,span,p { - fill: ${options3.nodeTextColor || options3.textColor}; - color: ${options3.nodeTextColor || options3.textColor}; + fill: ${options2.nodeTextColor || options2.textColor}; + color: ${options2.nodeTextColor || options2.textColor}; } .node rect, @@ -138559,8 +140742,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; .node ellipse, .node polygon, .node path { - fill: ${options3.mainBkg}; - stroke: ${options3.nodeBorder}; + fill: ${options2.mainBkg}; + stroke: ${options2.nodeBorder}; stroke-width: 1px; } .flowchart-label text { @@ -138581,52 +140764,52 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } .arrowheadPath { - fill: ${options3.arrowheadColor}; + fill: ${options2.arrowheadColor}; } .edgePath .path { - stroke: ${options3.lineColor}; + stroke: ${options2.lineColor}; stroke-width: 2.0px; } .flowchart-link { - stroke: ${options3.lineColor}; + stroke: ${options2.lineColor}; fill: none; } .edgeLabel { - background-color: ${options3.edgeLabelBackground}; + background-color: ${options2.edgeLabelBackground}; rect { opacity: 0.5; - background-color: ${options3.edgeLabelBackground}; - fill: ${options3.edgeLabelBackground}; + background-color: ${options2.edgeLabelBackground}; + fill: ${options2.edgeLabelBackground}; } text-align: center; } /* For html labels only */ .labelBkg { - background-color: ${fade3(options3.edgeLabelBackground, 0.5)}; + background-color: ${fade3(options2.edgeLabelBackground, 0.5)}; // background-color: } .node .cluster { - // fill: ${fade3(options3.mainBkg, 0.5)}; - fill: ${fade3(options3.clusterBkg, 0.5)}; - stroke: ${fade3(options3.clusterBorder, 0.2)}; + // fill: ${fade3(options2.mainBkg, 0.5)}; + fill: ${fade3(options2.clusterBkg, 0.5)}; + stroke: ${fade3(options2.clusterBorder, 0.2)}; box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; stroke-width: 1px; } .cluster text { - fill: ${options3.titleColor}; + fill: ${options2.titleColor}; } .cluster span,p { - color: ${options3.titleColor}; + color: ${options2.titleColor}; } /* .cluster div { - color: ${options3.titleColor}; + color: ${options2.titleColor}; } */ div.mermaidTooltip { @@ -138634,10 +140817,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; text-align: center; max-width: 200px; padding: 2px; - font-family: ${options3.fontFamily}; + font-family: ${options2.fontFamily}; font-size: 12px; - background: ${options3.tertiaryColor}; - border: 1px solid ${options3.border2}; + background: ${options2.tertiaryColor}; + border: 1px solid ${options2.border2}; border-radius: 2px; pointer-events: none; z-index: 100; @@ -138646,8 +140829,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; .flowchartTitleText { text-anchor: middle; font-size: 18px; - fill: ${options3.textColor}; + fill: ${options2.textColor}; } + ${getIconStyles()} `, "getStyles"); styles_default16 = getStyles17; } @@ -138659,46 +140843,46 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; "src/dagre-wrapper/markers.js"() { "use strict"; init_logger(); - insertMarkers3 = /* @__PURE__ */ __name((elem, markerArray, type3, id29) => { + insertMarkers3 = /* @__PURE__ */ __name((elem, markerArray, type3, id30) => { markerArray.forEach((markerName) => { - markers2[markerName](elem, type3, id29); + markers2[markerName](elem, type3, id30); }); }, "insertMarkers"); - extension4 = /* @__PURE__ */ __name((elem, type3, id29) => { - log.trace("Making markers for ", id29); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-extensionStart").attr("class", "marker extension " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z"); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-extensionEnd").attr("class", "marker extension " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z"); + extension4 = /* @__PURE__ */ __name((elem, type3, id30) => { + log.trace("Making markers for ", id30); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-extensionStart").attr("class", "marker extension " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z"); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-extensionEnd").attr("class", "marker extension " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z"); }, "extension"); - composition2 = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-compositionStart").attr("class", "marker composition " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-compositionEnd").attr("class", "marker composition " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); + composition2 = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-compositionStart").attr("class", "marker composition " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-compositionEnd").attr("class", "marker composition " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); }, "composition"); - aggregation2 = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-aggregationStart").attr("class", "marker aggregation " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-aggregationEnd").attr("class", "marker aggregation " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); + aggregation2 = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-aggregationStart").attr("class", "marker aggregation " + type3).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-aggregationEnd").attr("class", "marker aggregation " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); }, "aggregation"); - dependency2 = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-dependencyStart").attr("class", "marker dependency " + type3).attr("refX", 6).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-dependencyEnd").attr("class", "marker dependency " + type3).attr("refX", 13).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z"); + dependency2 = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-dependencyStart").attr("class", "marker dependency " + type3).attr("refX", 6).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-dependencyEnd").attr("class", "marker dependency " + type3).attr("refX", 13).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z"); }, "dependency"); - lollipop2 = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-lollipopStart").attr("class", "marker lollipop " + type3).attr("refX", 13).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6); - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-lollipopEnd").attr("class", "marker lollipop " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6); + lollipop2 = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-lollipopStart").attr("class", "marker lollipop " + type3).attr("refX", 13).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6); + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-lollipopEnd").attr("class", "marker lollipop " + type3).attr("refX", 1).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6); }, "lollipop"); - point7 = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("marker").attr("id", id29 + "_" + type3 + "-pointEnd").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 6).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); - elem.append("marker").attr("id", id29 + "_" + type3 + "-pointStart").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 4.5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto").append("path").attr("d", "M 0 5 L 10 10 L 10 0 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + point7 = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("marker").attr("id", id30 + "_" + type3 + "-pointEnd").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 6).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + elem.append("marker").attr("id", id30 + "_" + type3 + "-pointStart").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 4.5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto").append("path").attr("d", "M 0 5 L 10 10 L 10 0 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); }, "point"); - circle4 = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("marker").attr("id", id29 + "_" + type3 + "-circleEnd").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 11).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); - elem.append("marker").attr("id", id29 + "_" + type3 + "-circleStart").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", -1).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + circle4 = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("marker").attr("id", id30 + "_" + type3 + "-circleEnd").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", 11).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + elem.append("marker").attr("id", id30 + "_" + type3 + "-circleStart").attr("class", "marker " + type3).attr("viewBox", "0 0 10 10").attr("refX", -1).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); }, "circle"); - cross2 = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("marker").attr("id", id29 + "_" + type3 + "-crossEnd").attr("class", "marker cross " + type3).attr("viewBox", "0 0 11 11").attr("refX", 12).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0"); - elem.append("marker").attr("id", id29 + "_" + type3 + "-crossStart").attr("class", "marker cross " + type3).attr("viewBox", "0 0 11 11").attr("refX", -1).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0"); + cross2 = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("marker").attr("id", id30 + "_" + type3 + "-crossEnd").attr("class", "marker cross " + type3).attr("viewBox", "0 0 11 11").attr("refX", 12).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0"); + elem.append("marker").attr("id", id30 + "_" + type3 + "-crossStart").attr("class", "marker cross " + type3).attr("viewBox", "0 0 11 11").attr("refX", -1).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0"); }, "cross"); - barb2 = /* @__PURE__ */ __name((elem, type3, id29) => { - elem.append("defs").append("marker").attr("id", id29 + "_" + type3 + "-barbEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 14).attr("markerUnits", "strokeWidth").attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z"); + barb2 = /* @__PURE__ */ __name((elem, type3, id30) => { + elem.append("defs").append("marker").attr("id", id30 + "_" + type3 + "-barbEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 14).attr("markerUnits", "strokeWidth").attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z"); }, "barb"); markers2 = { extension: extension4, @@ -138733,75 +140917,75 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const py = Math.floor(position5 / columns); return { px, py }; } - function setBlockSizes(block3, db10, siblingWidth = 0, siblingHeight = 0) { + function setBlockSizes(block2, db7, siblingWidth = 0, siblingHeight = 0) { log.debug( "setBlockSizes abc95 (start)", - block3.id, - block3?.size?.x, + block2.id, + block2?.size?.x, "block width =", - block3?.size, - "sieblingWidth", + block2?.size, + "siblingWidth", siblingWidth ); - if (!block3?.size?.width) { - block3.size = { + if (!block2?.size?.width) { + block2.size = { width: siblingWidth, height: siblingHeight, x: 0, y: 0 }; } - let maxWidth = 0; + let maxWidth2 = 0; let maxHeight = 0; - if (block3.children?.length > 0) { - for (const child of block3.children) { - setBlockSizes(child, db10); + if (block2.children?.length > 0) { + for (const child of block2.children) { + setBlockSizes(child, db7); } - const childSize = getMaxChildSize(block3); - maxWidth = childSize.width; + const childSize = getMaxChildSize(block2); + maxWidth2 = childSize.width; maxHeight = childSize.height; - log.debug("setBlockSizes abc95 maxWidth of", block3.id, ":s children is ", maxWidth, maxHeight); - for (const child of block3.children) { + log.debug("setBlockSizes abc95 maxWidth of", block2.id, ":s children is ", maxWidth2, maxHeight); + for (const child of block2.children) { if (child.size) { log.debug( - `abc95 Setting size of children of ${block3.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}` + `abc95 Setting size of children of ${block2.id} id=${child.id} ${maxWidth2} ${maxHeight} ${JSON.stringify(child.size)}` ); - child.size.width = maxWidth * (child.widthInColumns ?? 1) + padding * ((child.widthInColumns ?? 1) - 1); + child.size.width = maxWidth2 * (child.widthInColumns ?? 1) + padding * ((child.widthInColumns ?? 1) - 1); child.size.height = maxHeight; child.size.x = 0; child.size.y = 0; log.debug( - `abc95 updating size of ${block3.id} children child:${child.id} maxWidth:${maxWidth} maxHeight:${maxHeight}` + `abc95 updating size of ${block2.id} children child:${child.id} maxWidth:${maxWidth2} maxHeight:${maxHeight}` ); } } - for (const child of block3.children) { - setBlockSizes(child, db10, maxWidth, maxHeight); + for (const child of block2.children) { + setBlockSizes(child, db7, maxWidth2, maxHeight); } - const columns = block3.columns ?? -1; + const columns = block2.columns ?? -1; let numItems = 0; - for (const child of block3.children) { + for (const child of block2.children) { numItems += child.widthInColumns ?? 1; } - let xSize = block3.children.length; + let xSize = block2.children.length; if (columns > 0 && columns < numItems) { xSize = columns; } const ySize = Math.ceil(numItems / xSize); - let width3 = xSize * (maxWidth + padding) + padding; + let width3 = xSize * (maxWidth2 + padding) + padding; let height2 = ySize * (maxHeight + padding) + padding; if (width3 < siblingWidth) { log.debug( - `Detected to small siebling: abc95 ${block3.id} sieblingWidth ${siblingWidth} sieblingHeight ${siblingHeight} width ${width3}` + `Detected to small sibling: abc95 ${block2.id} siblingWidth ${siblingWidth} siblingHeight ${siblingHeight} width ${width3}` ); width3 = siblingWidth; height2 = siblingHeight; const childWidth = (siblingWidth - xSize * padding - padding) / xSize; const childHeight = (siblingHeight - ySize * padding - padding) / ySize; - log.debug("Size indata abc88", block3.id, "childWidth", childWidth, "maxWidth", maxWidth); - log.debug("Size indata abc88", block3.id, "childHeight", childHeight, "maxHeight", maxHeight); + log.debug("Size indata abc88", block2.id, "childWidth", childWidth, "maxWidth", maxWidth2); + log.debug("Size indata abc88", block2.id, "childHeight", childHeight, "maxHeight", maxHeight); log.debug("Size indata abc88 xSize", xSize, "padding", padding); - for (const child of block3.children) { + for (const child of block2.children) { if (child.size) { child.size.width = childWidth; child.size.height = childHeight; @@ -138811,22 +140995,22 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } } log.debug( - `abc95 (finale calc) ${block3.id} xSize ${xSize} ySize ${ySize} columns ${columns}${block3.children.length} width=${Math.max(width3, block3.size?.width || 0)}` + `abc95 (finale calc) ${block2.id} xSize ${xSize} ySize ${ySize} columns ${columns}${block2.children.length} width=${Math.max(width3, block2.size?.width || 0)}` ); - if (width3 < (block3?.size?.width || 0)) { - width3 = block3?.size?.width || 0; - const num = columns > 0 ? Math.min(block3.children.length, columns) : block3.children.length; + if (width3 < (block2?.size?.width || 0)) { + width3 = block2?.size?.width || 0; + const num = columns > 0 ? Math.min(block2.children.length, columns) : block2.children.length; if (num > 0) { const childWidth = (width3 - num * padding - padding) / num; - log.debug("abc95 (growing to fit) width", block3.id, width3, block3.size?.width, childWidth); - for (const child of block3.children) { + log.debug("abc95 (growing to fit) width", block2.id, width3, block2.size?.width, childWidth); + for (const child of block2.children) { if (child.size) { child.size.width = childWidth; } } } } - block3.size = { + block2.size = { width: width3, height: height2, x: 0, @@ -138835,30 +141019,30 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } log.debug( "setBlockSizes abc94 (done)", - block3.id, - block3?.size?.x, - block3?.size?.width, - block3?.size?.y, - block3?.size?.height + block2.id, + block2?.size?.x, + block2?.size?.width, + block2?.size?.y, + block2?.size?.height ); } - function layoutBlocks(block3, db10) { + function layoutBlocks(block2, db7) { log.debug( - `abc85 layout blocks (=>layoutBlocks) ${block3.id} x: ${block3?.size?.x} y: ${block3?.size?.y} width: ${block3?.size?.width}` + `abc85 layout blocks (=>layoutBlocks) ${block2.id} x: ${block2?.size?.x} y: ${block2?.size?.y} width: ${block2?.size?.width}` ); - const columns = block3.columns ?? -1; - log.debug("layoutBlocks columns abc95", block3.id, "=>", columns, block3); - if (block3.children && // find max width of children - block3.children.length > 0) { - const width3 = block3?.children[0]?.size?.width ?? 0; - const widthOfChildren = block3.children.length * width3 + (block3.children.length - 1) * padding; + const columns = block2.columns ?? -1; + log.debug("layoutBlocks columns abc95", block2.id, "=>", columns, block2); + if (block2.children && // find max width of children + block2.children.length > 0) { + const width3 = block2?.children[0]?.size?.width ?? 0; + const widthOfChildren = block2.children.length * width3 + (block2.children.length - 1) * padding; log.debug("widthOfChildren 88", widthOfChildren, "posX"); let columnPos = 0; - log.debug("abc91 block?.size?.x", block3.id, block3?.size?.x); - let startingPosX = block3?.size?.x ? block3?.size?.x + (-block3?.size?.width / 2 || 0) : -padding; + log.debug("abc91 block?.size?.x", block2.id, block2?.size?.x); + let startingPosX = block2?.size?.x ? block2?.size?.x + (-block2?.size?.width / 2 || 0) : -padding; let rowPos = 0; - for (const child of block3.children) { - const parent4 = block3; + for (const child of block2.children) { + const parent4 = block2; if (!child.size) { continue; } @@ -138866,8 +141050,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const { px, py } = calculateBlockPosition(columns, columnPos); if (py != rowPos) { rowPos = py; - startingPosX = block3?.size?.x ? block3?.size?.x + (-block3?.size?.width / 2 || 0) : -padding; - log.debug("New row in layout for block", block3.id, " and child ", child.id, rowPos); + startingPosX = block2?.size?.x ? block2?.size?.x + (-block2?.size?.width / 2 || 0) : -padding; + log.debug("New row in layout for block", block2.id, " and child ", child.id, rowPos); } log.debug( `abc89 layout blocks (child) id: ${child.id} Pos: ${columnPos} (px, py) ${px},${py} (${parent4?.size?.x},${parent4?.size?.y}) parent: ${parent4.id} width: ${width4}${padding}` @@ -138885,65 +141069,69 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; ); } if (child.children) { - layoutBlocks(child, db10); + layoutBlocks(child, db7); } - columnPos += child?.widthInColumns ?? 1; + let columnsFilled = child?.widthInColumns ?? 1; + if (columns > 0) { + columnsFilled = Math.min(columnsFilled, columns - columnPos % columns); + } + columnPos += columnsFilled; log.debug("abc88 columnsPos", child, columnPos); } } log.debug( - `layout blocks (<==layoutBlocks) ${block3.id} x: ${block3?.size?.x} y: ${block3?.size?.y} width: ${block3?.size?.width}` + `layout blocks (<==layoutBlocks) ${block2.id} x: ${block2?.size?.x} y: ${block2?.size?.y} width: ${block2?.size?.width}` ); } - function findBounds(block3, { minX, minY, maxX, maxY } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }) { - if (block3.size && block3.id !== "root") { - const { x: x5, y: y5, width: width3, height: height2 } = block3.size; + function findBounds(block2, { minX, minY, maxX, maxY } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }) { + if (block2.size && block2.id !== "root") { + const { x: x5, y: y6, width: width3, height: height2 } = block2.size; if (x5 - width3 / 2 < minX) { minX = x5 - width3 / 2; } - if (y5 - height2 / 2 < minY) { - minY = y5 - height2 / 2; + if (y6 - height2 / 2 < minY) { + minY = y6 - height2 / 2; } if (x5 + width3 / 2 > maxX) { maxX = x5 + width3 / 2; } - if (y5 + height2 / 2 > maxY) { - maxY = y5 + height2 / 2; + if (y6 + height2 / 2 > maxY) { + maxY = y6 + height2 / 2; } } - if (block3.children) { - for (const child of block3.children) { + if (block2.children) { + for (const child of block2.children) { ({ minX, minY, maxX, maxY } = findBounds(child, { minX, minY, maxX, maxY })); } } return { minX, minY, maxX, maxY }; } - function layout5(db10) { - const root4 = db10.getBlock("root"); - if (!root4) { + function layout5(db7) { + const root3 = db7.getBlock("root"); + if (!root3) { return; } - setBlockSizes(root4, db10, 0, 0); - layoutBlocks(root4, db10); - log.debug("getBlocks", JSON.stringify(root4, null, 2)); - const { minX, minY, maxX, maxY } = findBounds(root4); + setBlockSizes(root3, db7, 0, 0); + layoutBlocks(root3, db7); + log.debug("getBlocks", JSON.stringify(root3, null, 2)); + const { minX, minY, maxX, maxY } = findBounds(root3); const height2 = maxY - minY; const width3 = maxX - minX; return { x: minX, y: minY, width: width3, height: height2 }; } var padding, getMaxChildSize; - var init_layout2 = __esm({ + var init_layout3 = __esm({ "src/diagrams/block/layout.ts"() { "use strict"; init_logger(); init_diagramAPI(); padding = getConfig2()?.block?.padding ?? 8; __name(calculateBlockPosition, "calculateBlockPosition"); - getMaxChildSize = /* @__PURE__ */ __name((block3) => { - let maxWidth = 0; + getMaxChildSize = /* @__PURE__ */ __name((block2) => { + let maxWidth2 = 0; let maxHeight = 0; - for (const child of block3.children) { - const { width: width3, height: height2, x: x5, y: y5 } = child.size ?? { width: 0, height: 0, x: 0, y: 0 }; + for (const child of block2.children) { + const { width: width3, height: height2, x: x5, y: y6 } = child.size ?? { width: 0, height: 0, x: 0, y: 0 }; log.debug( "getMaxChildSize abc95 child:", child.id, @@ -138954,20 +141142,20 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; "x:", x5, "y:", - y5, + y6, child.type ); if (child.type === "space") { continue; } - if (width3 > maxWidth) { - maxWidth = width3 / (block3.widthInColumns ?? 1); + if (width3 > maxWidth2) { + maxWidth2 = width3 / (block2.widthInColumns ?? 1); } if (height2 > maxHeight) { maxHeight = height2; } } - return { width: maxWidth, height: maxHeight }; + return { width: maxWidth2, height: maxHeight }; }, "getMaxChildSize"); __name(setBlockSizes, "setBlockSizes"); __name(layoutBlocks, "layoutBlocks"); @@ -138982,13 +141170,13 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; dom.attr("style", styleFn); } } - function addHtmlLabel2(node2) { + function addHtmlLabel2(node2, config5) { const fo = select_default2(document.createElementNS("http://www.w3.org/2000/svg", "foreignObject")); const div = fo.append("xhtml:div"); const label = node2.label; const labelClass = node2.isNode ? "nodeLabel" : "edgeLabel"; const span = div.append("span"); - span.html(label); + span.html(sanitizeText(label, config5)); applyStyle3(span, node2.labelStyle); span.attr("class", labelClass); applyStyle3(div, node2.labelStyle); @@ -139002,27 +141190,29 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; "src/dagre-wrapper/createLabel.js"() { "use strict"; init_src32(); - init_logger(); init_diagramAPI(); init_common(); - init_utils2(); + init_logger(); init_createText(); + init_utils2(); __name(applyStyle3, "applyStyle"); __name(addHtmlLabel2, "addHtmlLabel"); - createLabel2 = /* @__PURE__ */ __name((_vertexText, style3, isTitle, isNode2) => { + createLabel2 = /* @__PURE__ */ __name(async (_vertexText, style3, isTitle, isNode2) => { let vertexText = _vertexText || ""; if (typeof vertexText === "object") { vertexText = vertexText[0]; } - if (evaluate(getConfig2().flowchart.htmlLabels)) { + const config5 = getConfig2(); + if (evaluate(config5.flowchart.htmlLabels)) { vertexText = vertexText.replace(/\\n|\n/g, "
    "); log.debug("vertexText" + vertexText); + const label = await replaceIconSubstring(decodeEntities(vertexText)); const node2 = { isNode: isNode2, - label: replaceIconSubstring(decodeEntities(vertexText)), + label, labelStyle: style3.replace("fill:", "color:") }; - let vertexNode = addHtmlLabel2(node2); + let vertexNode = addHtmlLabel2(node2, config5); return vertexNode; } else { const svgLabel = document.createElementNS("http://www.w3.org/2000/svg", "text"); @@ -139061,12 +141251,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; "src/dagre-wrapper/edgeMarker.ts"() { "use strict"; init_logger(); - addEdgeMarkers2 = /* @__PURE__ */ __name((svgPath, edge, url, id29, diagramType) => { + addEdgeMarkers2 = /* @__PURE__ */ __name((svgPath, edge, url, id30, diagramType) => { if (edge.arrowTypeStart) { - addEdgeMarker2(svgPath, "start", edge.arrowTypeStart, url, id29, diagramType); + addEdgeMarker2(svgPath, "start", edge.arrowTypeStart, url, id30, diagramType); } if (edge.arrowTypeEnd) { - addEdgeMarker2(svgPath, "end", edge.arrowTypeEnd, url, id29, diagramType); + addEdgeMarker2(svgPath, "end", edge.arrowTypeEnd, url, id30, diagramType); } }, "addEdgeMarkers"); arrowTypesMap2 = { @@ -139080,14 +141270,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; dependency: "dependency", lollipop: "lollipop" }; - addEdgeMarker2 = /* @__PURE__ */ __name((svgPath, position5, arrowType, url, id29, diagramType) => { + addEdgeMarker2 = /* @__PURE__ */ __name((svgPath, position5, arrowType, url, id30, diagramType) => { const endMarkerType = arrowTypesMap2[arrowType]; if (!endMarkerType) { log.warn(`Unknown arrow type: ${arrowType}`); return; } const suffix = position5 === "start" ? "Start" : "End"; - svgPath.attr(`marker-${position5}`, `url(${url}#${id29}_${diagramType}-${endMarkerType}${suffix})`); + svgPath.attr(`marker-${position5}`, `url(${url}#${id30}_${diagramType}-${endMarkerType}${suffix})`); }, "addEdgeMarker"); } }); @@ -139115,7 +141305,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; init_edgeMarker2(); edgeLabels2 = {}; terminalLabels2 = {}; - insertEdgeLabel2 = /* @__PURE__ */ __name((elem, edge) => { + insertEdgeLabel2 = /* @__PURE__ */ __name(async (elem, edge) => { const config5 = getConfig2(); const useHtmlLabels = evaluate(config5.flowchart.htmlLabels); const labelElement = edge.labelType === "markdown" ? createText( @@ -139127,7 +141317,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; addSvgBackground: true }, config5 - ) : createLabel_default2(edge.label, edge.labelStyle); + ) : await createLabel_default2(edge.label, edge.labelStyle); const edgeLabel = elem.insert("g").attr("class", "edgeLabel"); const label = edgeLabel.insert("g").attr("class", "label"); label.node().appendChild(labelElement); @@ -139145,7 +141335,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; edge.height = bbox.height; let fo; if (edge.startLabelLeft) { - const startLabelElement = createLabel_default2(edge.startLabelLeft, edge.labelStyle); + const startLabelElement = await createLabel_default2(edge.startLabelLeft, edge.labelStyle); const startEdgeLabelLeft = elem.insert("g").attr("class", "edgeTerminals"); const inner2 = startEdgeLabelLeft.insert("g").attr("class", "inner"); fo = inner2.node().appendChild(startLabelElement); @@ -139158,7 +141348,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; setTerminalWidth2(fo, edge.startLabelLeft); } if (edge.startLabelRight) { - const startLabelElement = createLabel_default2(edge.startLabelRight, edge.labelStyle); + const startLabelElement = await createLabel_default2(edge.startLabelRight, edge.labelStyle); const startEdgeLabelRight = elem.insert("g").attr("class", "edgeTerminals"); const inner2 = startEdgeLabelRight.insert("g").attr("class", "inner"); fo = startEdgeLabelRight.node().appendChild(startLabelElement); @@ -139172,7 +141362,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; setTerminalWidth2(fo, edge.startLabelRight); } if (edge.endLabelLeft) { - const endLabelElement = createLabel_default2(edge.endLabelLeft, edge.labelStyle); + const endLabelElement = await createLabel_default2(edge.endLabelLeft, edge.labelStyle); const endEdgeLabelLeft = elem.insert("g").attr("class", "edgeTerminals"); const inner2 = endEdgeLabelLeft.insert("g").attr("class", "inner"); fo = inner2.node().appendChild(endLabelElement); @@ -139186,7 +141376,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; setTerminalWidth2(fo, edge.endLabelLeft); } if (edge.endLabelRight) { - const endLabelElement = createLabel_default2(edge.endLabelRight, edge.labelStyle); + const endLabelElement = await createLabel_default2(edge.endLabelRight, edge.labelStyle); const endEdgeLabelRight = elem.insert("g").attr("class", "edgeTerminals"); const inner2 = endEdgeLabelRight.insert("g").attr("class", "inner"); fo = inner2.node().appendChild(endLabelElement); @@ -139210,14 +141400,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (edge.label) { const el = edgeLabels2[edge.id]; let x5 = edge.x; - let y5 = edge.y; + let y6 = edge.y; if (path4) { const pos = utils_default2.calcLabelPosition(path4); log.debug( "Moving label " + edge.label + " from (", x5, ",", - y5, + y6, ") to (", pos.x, ",", @@ -139226,26 +141416,26 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; ); if (paths.updatedPath) { x5 = pos.x; - y5 = pos.y; + y6 = pos.y; } } - el.attr("transform", `translate(${x5}, ${y5 + subGraphTitleTotalMargin / 2})`); + el.attr("transform", `translate(${x5}, ${y6 + subGraphTitleTotalMargin / 2})`); } if (edge.startLabelLeft) { const el = terminalLabels2[edge.id].startLeft; let x5 = edge.x; - let y5 = edge.y; + let y6 = edge.y; if (path4) { const pos = utils_default2.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, "start_left", path4); x5 = pos.x; - y5 = pos.y; + y6 = pos.y; } - el.attr("transform", `translate(${x5}, ${y5})`); + el.attr("transform", `translate(${x5}, ${y6})`); } if (edge.startLabelRight) { const el = terminalLabels2[edge.id].startRight; let x5 = edge.x; - let y5 = edge.y; + let y6 = edge.y; if (path4) { const pos = utils_default2.calcTerminalLabelPosition( edge.arrowTypeStart ? 10 : 0, @@ -139253,41 +141443,41 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; path4 ); x5 = pos.x; - y5 = pos.y; + y6 = pos.y; } - el.attr("transform", `translate(${x5}, ${y5})`); + el.attr("transform", `translate(${x5}, ${y6})`); } if (edge.endLabelLeft) { const el = terminalLabels2[edge.id].endLeft; let x5 = edge.x; - let y5 = edge.y; + let y6 = edge.y; if (path4) { const pos = utils_default2.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, "end_left", path4); x5 = pos.x; - y5 = pos.y; + y6 = pos.y; } - el.attr("transform", `translate(${x5}, ${y5})`); + el.attr("transform", `translate(${x5}, ${y6})`); } if (edge.endLabelRight) { const el = terminalLabels2[edge.id].endRight; let x5 = edge.x; - let y5 = edge.y; + let y6 = edge.y; if (path4) { const pos = utils_default2.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, "end_right", path4); x5 = pos.x; - y5 = pos.y; + y6 = pos.y; } - el.attr("transform", `translate(${x5}, ${y5})`); + el.attr("transform", `translate(${x5}, ${y6})`); } }, "positionEdgeLabel"); outsideNode2 = /* @__PURE__ */ __name((node2, point8) => { const x5 = node2.x; - const y5 = node2.y; + const y6 = node2.y; const dx = Math.abs(point8.x - x5); - const dy = Math.abs(point8.y - y5); - const w3 = node2.width / 2; - const h2 = node2.height / 2; - if (dx >= w3 || dy >= h2) { + const dy = Math.abs(point8.y - y6); + const w4 = node2.width / 2; + const h3 = node2.height / 2; + if (dx >= w4 || dy >= h3) { return true; } return false; @@ -139298,50 +141488,50 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; insidePoint : ${JSON.stringify(insidePoint)} node : x:${node2.x} y:${node2.y} w:${node2.width} h:${node2.height}`); const x5 = node2.x; - const y5 = node2.y; + const y6 = node2.y; const dx = Math.abs(x5 - insidePoint.x); - const w3 = node2.width / 2; - let r2 = insidePoint.x < outsidePoint.x ? w3 - dx : w3 + dx; - const h2 = node2.height / 2; - const Q2 = Math.abs(outsidePoint.y - insidePoint.y); - const R2 = Math.abs(outsidePoint.x - insidePoint.x); - if (Math.abs(y5 - outsidePoint.y) * w3 > Math.abs(x5 - outsidePoint.x) * h2) { - let q2 = insidePoint.y < outsidePoint.y ? outsidePoint.y - h2 - y5 : y5 - h2 - outsidePoint.y; - r2 = R2 * q2 / Q2; + const w4 = node2.width / 2; + let r2 = insidePoint.x < outsidePoint.x ? w4 - dx : w4 + dx; + const h3 = node2.height / 2; + const Q3 = Math.abs(outsidePoint.y - insidePoint.y); + const R3 = Math.abs(outsidePoint.x - insidePoint.x); + if (Math.abs(y6 - outsidePoint.y) * w4 > Math.abs(x5 - outsidePoint.x) * h3) { + let q3 = insidePoint.y < outsidePoint.y ? outsidePoint.y - h3 - y6 : y6 - h3 - outsidePoint.y; + r2 = R3 * q3 / Q3; const res = { - x: insidePoint.x < outsidePoint.x ? insidePoint.x + r2 : insidePoint.x - R2 + r2, - y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q2 - q2 : insidePoint.y - Q2 + q2 + x: insidePoint.x < outsidePoint.x ? insidePoint.x + r2 : insidePoint.x - R3 + r2, + y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q3 - q3 : insidePoint.y - Q3 + q3 }; if (r2 === 0) { res.x = outsidePoint.x; res.y = outsidePoint.y; } - if (R2 === 0) { + if (R3 === 0) { res.x = outsidePoint.x; } - if (Q2 === 0) { + if (Q3 === 0) { res.y = outsidePoint.y; } - log.debug(`abc89 topp/bott calc, Q ${Q2}, q ${q2}, R ${R2}, r ${r2}`, res); + log.debug(`abc89 topp/bott calc, Q ${Q3}, q ${q3}, R ${R3}, r ${r2}`, res); return res; } else { if (insidePoint.x < outsidePoint.x) { - r2 = outsidePoint.x - w3 - x5; + r2 = outsidePoint.x - w4 - x5; } else { - r2 = x5 - w3 - outsidePoint.x; + r2 = x5 - w4 - outsidePoint.x; } - let q2 = Q2 * r2 / R2; - let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R2 - r2 : insidePoint.x - R2 + r2; - let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q2 : insidePoint.y - q2; - log.debug(`sides calc abc89, Q ${Q2}, q ${q2}, R ${R2}, r ${r2}`, { _x, _y }); + let q3 = Q3 * r2 / R3; + let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R3 - r2 : insidePoint.x - R3 + r2; + let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q3 : insidePoint.y - q3; + log.debug(`sides calc abc89, Q ${Q3}, q ${q3}, R ${R3}, r ${r2}`, { _x, _y }); if (r2 === 0) { _x = outsidePoint.x; _y = outsidePoint.y; } - if (R2 === 0) { + if (R3 === 0) { _x = outsidePoint.x; } - if (Q2 === 0) { + if (Q3 === 0) { _y = outsidePoint.y; } return { x: _x, y: _y }; @@ -139372,7 +141562,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); return points; }, "cutPathAtIntersect"); - insertEdge2 = /* @__PURE__ */ __name(function(elem, e3, edge, clusterDb2, diagramType, graph, id29) { + insertEdge2 = /* @__PURE__ */ __name(function(elem, e3, edge, clusterDb2, diagramType, graph, id30) { let points = edge.points; log.debug("abc88 InsertEdge: edge=", edge, "e=", e3); let pointsHasChanged = false; @@ -139398,8 +141588,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (edge.curve && (diagramType === "graph" || diagramType === "flowchart")) { curve = edge.curve; } - const { x: x5, y: y5 } = getLineFunctionsWithOffset(edge); - const lineFunction = line_default().x(x5).y(y5).curve(curve); + const { x: x5, y: y6 } = getLineFunctionsWithOffset(edge); + const lineFunction = line_default().x(x5).y(y6).curve(curve); let strokeClasses; switch (edge.thickness) { case "normal": @@ -139428,11 +141618,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const svgPath = elem.append("path").attr("d", lineFunction(lineData)).attr("id", edge.id).attr("class", " " + strokeClasses + (edge.classes ? " " + edge.classes : "")).attr("style", edge.style); let url = ""; if (getConfig2().flowchart.arrowMarkerAbsolute || getConfig2().state.arrowMarkerAbsolute) { - url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search; - url = url.replace(/\(/g, "\\("); - url = url.replace(/\)/g, "\\)"); + url = getUrl(true); } - addEdgeMarkers2(svgPath, edge, url, id29, diagramType); + addEdgeMarkers2(svgPath, edge, url, id30, diagramType); let paths = {}; if (pointsHasChanged) { paths.updatedPath = points; @@ -139707,37 +141895,37 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); // src/dagre-wrapper/intersect/intersect-line.js - function intersectLine2(p1, p22, q1, q2) { - var a1, a2, b1, b2, c1, c22; + function intersectLine2(p1, p22, q1, q22) { + var a1, a2, b1, b22, c1, c22; var r1, r2, r3, r4; var denom, offset, num; - var x5, y5; + var x5, y6; a1 = p22.y - p1.y; b1 = p1.x - p22.x; c1 = p22.x * p1.y - p1.x * p22.y; r3 = a1 * q1.x + b1 * q1.y + c1; - r4 = a1 * q2.x + b1 * q2.y + c1; + r4 = a1 * q22.x + b1 * q22.y + c1; if (r3 !== 0 && r4 !== 0 && sameSign2(r3, r4)) { return; } - a2 = q2.y - q1.y; - b2 = q1.x - q2.x; - c22 = q2.x * q1.y - q1.x * q2.y; - r1 = a2 * p1.x + b2 * p1.y + c22; - r2 = a2 * p22.x + b2 * p22.y + c22; + a2 = q22.y - q1.y; + b22 = q1.x - q22.x; + c22 = q22.x * q1.y - q1.x * q22.y; + r1 = a2 * p1.x + b22 * p1.y + c22; + r2 = a2 * p22.x + b22 * p22.y + c22; if (r1 !== 0 && r2 !== 0 && sameSign2(r1, r2)) { return; } - denom = a1 * b2 - a2 * b1; + denom = a1 * b22 - a2 * b1; if (denom === 0) { return; } offset = Math.abs(denom / 2); - num = b1 * c22 - b2 * c1; + num = b1 * c22 - b22 * c1; x5 = num < 0 ? (num - offset) / denom : (num + offset) / denom; num = a2 * c1 - a1 * c22; - y5 = num < 0 ? (num - offset) / denom : (num + offset) / denom; - return { x: x5, y: y5 }; + y6 = num < 0 ? (num - offset) / denom : (num + offset) / denom; + return { x: x5, y: y6 }; } function sameSign2(r1, r2) { return r1 * r2 > 0; @@ -139787,12 +141975,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return node2; } if (intersections.length > 1) { - intersections.sort(function(p3, q2) { + intersections.sort(function(p3, q3) { var pdx = p3.x - point8.x; var pdy = p3.y - point8.y; var distp = Math.sqrt(pdx * pdx + pdy * pdy); - var qdx = q2.x - point8.x; - var qdy = q2.y - point8.y; + var qdx = q3.x - point8.x; + var qdy = q3.y - point8.y; var distq = Math.sqrt(qdx * qdx + qdy * qdy); return distp < distq ? -1 : distp === distq ? 0 : 1; }); @@ -139816,26 +142004,26 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; "use strict"; intersectRect3 = /* @__PURE__ */ __name((node2, point8) => { var x5 = node2.x; - var y5 = node2.y; + var y6 = node2.y; var dx = point8.x - x5; - var dy = point8.y - y5; - var w3 = node2.width / 2; - var h2 = node2.height / 2; + var dy = point8.y - y6; + var w4 = node2.width / 2; + var h3 = node2.height / 2; var sx, sy; - if (Math.abs(dy) * w3 > Math.abs(dx) * h2) { + if (Math.abs(dy) * w4 > Math.abs(dx) * h3) { if (dy < 0) { - h2 = -h2; + h3 = -h3; } - sx = dy === 0 ? 0 : h2 * dx / dy; - sy = h2; + sx = dy === 0 ? 0 : h3 * dx / dy; + sy = h3; } else { if (dx < 0) { - w3 = -w3; + w4 = -w4; } - sx = w3; - sy = dx === 0 ? 0 : w3 * dy / dx; + sx = w4; + sy = dx === 0 ? 0 : w4 * dy / dx; } - return { x: x5 + sx, y: y5 + sy }; + return { x: x5 + sx, y: y6 + sy }; }, "intersectRect"); intersect_rect_default2 = intersectRect3; } @@ -139862,13 +142050,13 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); // src/dagre-wrapper/shapes/util.js - function insertPolygonShape3(parent4, w3, h2, points) { + function insertPolygonShape2(parent4, w4, h3, points) { return parent4.insert("polygon", ":first-child").attr( "points", - points.map(function(d2) { - return d2.x + "," + d2.y; + points.map(function(d3) { + return d3.x + "," + d3.y; }).join(" ") - ).attr("class", "label-container").attr("transform", "translate(" + -w3 / 2 + "," + h2 / 2 + ")"); + ).attr("class", "label-container").attr("transform", "translate(" + -w4 / 2 + "," + h3 / 2 + ")"); } var labelHelper2, updateNodeBounds2; var init_util4 = __esm({ @@ -139912,7 +142100,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; ); } else { text4 = textNode.appendChild( - createLabel_default2(sanitizeText(decodeEntities(labelText), config5), node2.labelStyle, false, isNode2) + await createLabel_default2( + sanitizeText(decodeEntities(labelText), config5), + node2.labelStyle, + false, + isNode2 + ) ); } let bbox = text4.getBBox(); @@ -139972,7 +142165,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; node2.width = bbox.width; node2.height = bbox.height; }, "updateNodeBounds"); - __name(insertPolygonShape3, "insertPolygonShape"); + __name(insertPolygonShape2, "insertPolygonShape"); } }); @@ -140044,7 +142237,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } rect3.attr("stroke-dasharray", strokeDashArray.join(" ")); } - var formatClass, getClassesFromNode, question2, choice2, hexagon2, block_arrow, rect_left_inv_arrow2, lean_right2, lean_left2, trapezoid2, inv_trapezoid2, rect_right_inv_arrow, cylinder2, rect2, composite, labelRect2, rectWithTitle2, stadium2, circle5, doublecircle2, subroutine2, start2, forkJoin2, end, class_box, shapes3, nodeElems2, insertNode2, positionNode3; + var formatClass, getClassesFromNode, question2, choice2, hexagon2, block_arrow, rect_left_inv_arrow2, lean_right2, lean_left2, trapezoid2, inv_trapezoid2, rect_right_inv_arrow, cylinder2, rect2, composite, labelRect2, rectWithTitle2, stadium2, circle5, doublecircle2, subroutine2, start2, forkJoin2, end, class_box, shapes3, nodeElems2, insertNode2, positionNode2; var init_nodes3 = __esm({ "src/dagre-wrapper/nodes.js"() { "use strict"; @@ -140075,9 +142268,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; getClassesFromNode(node2, void 0), true ); - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; - const s2 = w3 + h2; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; + const s2 = w4 + h3; const points = [ { x: s2 / 2, y: 0 }, { x: s2, y: -s2 / 2 }, @@ -140085,7 +142278,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; { x: 0, y: -s2 / 2 } ]; log.info("Question main (Circle)"); - const questionElem = insertPolygonShape3(shapeSvg, s2, s2, points); + const questionElem = insertPolygonShape2(shapeSvg, s2, s2, points); questionElem.attr("style", node2.style); updateNodeBounds2(node2, questionElem); node2.intersect = function(point8) { @@ -140105,8 +142298,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; ]; const choice3 = shapeSvg.insert("polygon", ":first-child").attr( "points", - points.map(function(d2) { - return d2.x + "," + d2.y; + points.map(function(d3) { + return d3.x + "," + d3.y; }).join(" ") ); choice3.attr("class", "state-start").attr("r", 7).attr("width", 28).attr("height", 28); @@ -140125,18 +142318,18 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; true ); const f2 = 4; - const h2 = bbox.height + node2.padding; - const m2 = h2 / f2; - const w3 = bbox.width + 2 * m2 + node2.padding; + const h3 = bbox.height + node2.padding; + const m3 = h3 / f2; + const w4 = bbox.width + 2 * m3 + node2.padding; const points = [ - { x: m2, y: 0 }, - { x: w3 - m2, y: 0 }, - { x: w3, y: -h2 / 2 }, - { x: w3 - m2, y: -h2 }, - { x: m2, y: -h2 }, - { x: 0, y: -h2 / 2 } + { x: m3, y: 0 }, + { x: w4 - m3, y: 0 }, + { x: w4, y: -h3 / 2 }, + { x: w4 - m3, y: -h3 }, + { x: m3, y: -h3 }, + { x: 0, y: -h3 / 2 } ]; - const hex2 = insertPolygonShape3(shapeSvg, w3, h2, points); + const hex2 = insertPolygonShape2(shapeSvg, w4, h3, points); hex2.attr("style", node2.style); updateNodeBounds2(node2, hex2); node2.intersect = function(point8) { @@ -140147,11 +142340,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; block_arrow = /* @__PURE__ */ __name(async (parent4, node2) => { const { shapeSvg, bbox } = await labelHelper2(parent4, node2, void 0, true); const f2 = 2; - const h2 = bbox.height + 2 * node2.padding; - const m2 = h2 / f2; - const w3 = bbox.width + 2 * m2 + node2.padding; + const h3 = bbox.height + 2 * node2.padding; + const m3 = h3 / f2; + const w4 = bbox.width + 2 * m3 + node2.padding; const points = getArrowPoints(node2.directions, bbox, node2); - const blockArrow = insertPolygonShape3(shapeSvg, w3, h2, points); + const blockArrow = insertPolygonShape2(shapeSvg, w4, h3, points); blockArrow.attr("style", node2.style); updateNodeBounds2(node2, blockArrow); node2.intersect = function(point8) { @@ -140166,19 +142359,19 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; getClassesFromNode(node2, void 0), true ); - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; const points = [ - { x: -h2 / 2, y: 0 }, - { x: w3, y: 0 }, - { x: w3, y: -h2 }, - { x: -h2 / 2, y: -h2 }, - { x: 0, y: -h2 / 2 } + { x: -h3 / 2, y: 0 }, + { x: w4, y: 0 }, + { x: w4, y: -h3 }, + { x: -h3 / 2, y: -h3 }, + { x: 0, y: -h3 / 2 } ]; - const el = insertPolygonShape3(shapeSvg, w3, h2, points); + const el = insertPolygonShape2(shapeSvg, w4, h3, points); el.attr("style", node2.style); - node2.width = w3 + h2; - node2.height = h2; + node2.width = w4 + h3; + node2.height = h3; node2.intersect = function(point8) { return intersect_default2.polygon(node2, points, point8); }; @@ -140186,15 +142379,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }, "rect_left_inv_arrow"); lean_right2 = /* @__PURE__ */ __name(async (parent4, node2) => { const { shapeSvg, bbox } = await labelHelper2(parent4, node2, getClassesFromNode(node2), true); - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; const points = [ - { x: -2 * h2 / 6, y: 0 }, - { x: w3 - h2 / 6, y: 0 }, - { x: w3 + 2 * h2 / 6, y: -h2 }, - { x: h2 / 6, y: -h2 } + { x: -2 * h3 / 6, y: 0 }, + { x: w4 - h3 / 6, y: 0 }, + { x: w4 + 2 * h3 / 6, y: -h3 }, + { x: h3 / 6, y: -h3 } ]; - const el = insertPolygonShape3(shapeSvg, w3, h2, points); + const el = insertPolygonShape2(shapeSvg, w4, h3, points); el.attr("style", node2.style); updateNodeBounds2(node2, el); node2.intersect = function(point8) { @@ -140209,15 +142402,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; getClassesFromNode(node2, void 0), true ); - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; const points = [ - { x: 2 * h2 / 6, y: 0 }, - { x: w3 + h2 / 6, y: 0 }, - { x: w3 - 2 * h2 / 6, y: -h2 }, - { x: -h2 / 6, y: -h2 } + { x: 2 * h3 / 6, y: 0 }, + { x: w4 + h3 / 6, y: 0 }, + { x: w4 - 2 * h3 / 6, y: -h3 }, + { x: -h3 / 6, y: -h3 } ]; - const el = insertPolygonShape3(shapeSvg, w3, h2, points); + const el = insertPolygonShape2(shapeSvg, w4, h3, points); el.attr("style", node2.style); updateNodeBounds2(node2, el); node2.intersect = function(point8) { @@ -140232,15 +142425,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; getClassesFromNode(node2, void 0), true ); - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; const points = [ - { x: -2 * h2 / 6, y: 0 }, - { x: w3 + 2 * h2 / 6, y: 0 }, - { x: w3 - h2 / 6, y: -h2 }, - { x: h2 / 6, y: -h2 } + { x: -2 * h3 / 6, y: 0 }, + { x: w4 + 2 * h3 / 6, y: 0 }, + { x: w4 - h3 / 6, y: -h3 }, + { x: h3 / 6, y: -h3 } ]; - const el = insertPolygonShape3(shapeSvg, w3, h2, points); + const el = insertPolygonShape2(shapeSvg, w4, h3, points); el.attr("style", node2.style); updateNodeBounds2(node2, el); node2.intersect = function(point8) { @@ -140255,15 +142448,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; getClassesFromNode(node2, void 0), true ); - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; const points = [ - { x: h2 / 6, y: 0 }, - { x: w3 - h2 / 6, y: 0 }, - { x: w3 + 2 * h2 / 6, y: -h2 }, - { x: -2 * h2 / 6, y: -h2 } + { x: h3 / 6, y: 0 }, + { x: w4 - h3 / 6, y: 0 }, + { x: w4 + 2 * h3 / 6, y: -h3 }, + { x: -2 * h3 / 6, y: -h3 } ]; - const el = insertPolygonShape3(shapeSvg, w3, h2, points); + const el = insertPolygonShape2(shapeSvg, w4, h3, points); el.attr("style", node2.style); updateNodeBounds2(node2, el); node2.intersect = function(point8) { @@ -140278,16 +142471,16 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; getClassesFromNode(node2, void 0), true ); - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; const points = [ { x: 0, y: 0 }, - { x: w3 + h2 / 2, y: 0 }, - { x: w3, y: -h2 / 2 }, - { x: w3 + h2 / 2, y: -h2 }, - { x: 0, y: -h2 } + { x: w4 + h3 / 2, y: 0 }, + { x: w4, y: -h3 / 2 }, + { x: w4 + h3 / 2, y: -h3 }, + { x: 0, y: -h3 } ]; - const el = insertPolygonShape3(shapeSvg, w3, h2, points); + const el = insertPolygonShape2(shapeSvg, w4, h3, points); el.attr("style", node2.style); updateNodeBounds2(node2, el); node2.intersect = function(point8) { @@ -140302,26 +142495,26 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; getClassesFromNode(node2, void 0), true ); - const w3 = bbox.width + node2.padding; - const rx = w3 / 2; - const ry = rx / (2.5 + w3 / 50); - const h2 = bbox.height + ry + node2.padding; - const shape = "M 0," + ry + " a " + rx + "," + ry + " 0,0,0 " + w3 + " 0 a " + rx + "," + ry + " 0,0,0 " + -w3 + " 0 l 0," + h2 + " a " + rx + "," + ry + " 0,0,0 " + w3 + " 0 l 0," + -h2; - const el = shapeSvg.attr("label-offset-y", ry).insert("path", ":first-child").attr("style", node2.style).attr("d", shape).attr("transform", "translate(" + -w3 / 2 + "," + -(h2 / 2 + ry) + ")"); + const w4 = bbox.width + node2.padding; + const rx = w4 / 2; + const ry = rx / (2.5 + w4 / 50); + const h3 = bbox.height + ry + node2.padding; + const shape = "M 0," + ry + " a " + rx + "," + ry + " 0,0,0 " + w4 + " 0 a " + rx + "," + ry + " 0,0,0 " + -w4 + " 0 l 0," + h3 + " a " + rx + "," + ry + " 0,0,0 " + w4 + " 0 l 0," + -h3; + const el = shapeSvg.attr("label-offset-y", ry).insert("path", ":first-child").attr("style", node2.style).attr("d", shape).attr("transform", "translate(" + -w4 / 2 + "," + -(h3 / 2 + ry) + ")"); updateNodeBounds2(node2, el); node2.intersect = function(point8) { const pos = intersect_default2.rect(node2, point8); const x5 = pos.x - node2.x; if (rx != 0 && (Math.abs(x5) < node2.width / 2 || Math.abs(x5) == node2.width / 2 && Math.abs(pos.y - node2.y) > node2.height / 2 - ry)) { - let y5 = ry * ry * (1 - x5 * x5 / (rx * rx)); - if (y5 != 0) { - y5 = Math.sqrt(y5); + let y6 = ry * ry * (1 - x5 * x5 / (rx * rx)); + if (y6 != 0) { + y6 = Math.sqrt(y6); } - y5 = ry - y5; + y6 = ry - y6; if (point8.y - node2.y > 0) { - y5 = -y5; + y6 = -y6; } - pos.y += y5; + pos.y += y6; } return pos; }; @@ -140338,8 +142531,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const totalWidth = node2.positioned ? node2.width : bbox.width + node2.padding; const totalHeight = node2.positioned ? node2.height : bbox.height + node2.padding; const x5 = node2.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding; - const y5 = node2.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding; - rect3.attr("class", "basic label-container").attr("style", node2.style).attr("rx", node2.rx).attr("ry", node2.ry).attr("x", x5).attr("y", y5).attr("width", totalWidth).attr("height", totalHeight); + const y6 = node2.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding; + rect3.attr("class", "basic label-container").attr("style", node2.style).attr("rx", node2.rx).attr("ry", node2.ry).attr("x", x5).attr("y", y6).attr("width", totalWidth).attr("height", totalHeight); if (node2.props) { const propKeys = new Set(Object.keys(node2.props)); if (node2.props.borders) { @@ -140367,8 +142560,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const totalWidth = node2.positioned ? node2.width : bbox.width + node2.padding; const totalHeight = node2.positioned ? node2.height : bbox.height + node2.padding; const x5 = node2.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding; - const y5 = node2.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding; - rect3.attr("class", "basic cluster composite label-container").attr("style", node2.style).attr("rx", node2.rx).attr("ry", node2.ry).attr("x", x5).attr("y", y5).attr("width", totalWidth).attr("height", totalHeight); + const y6 = node2.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding; + rect3.attr("class", "basic cluster composite label-container").attr("style", node2.style).attr("rx", node2.rx).attr("ry", node2.ry).attr("x", x5).attr("y", y6).attr("width", totalWidth).attr("height", totalHeight); if (node2.props) { const propKeys = new Set(Object.keys(node2.props)); if (node2.props.borders) { @@ -140410,7 +142603,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return shapeSvg; }, "labelRect"); __name(applyNodePropertyBorders, "applyNodePropertyBorders"); - rectWithTitle2 = /* @__PURE__ */ __name((parent4, node2) => { + rectWithTitle2 = /* @__PURE__ */ __name(async (parent4, node2) => { let classes3; if (!node2.classes) { classes3 = "node default"; @@ -140429,7 +142622,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; title2 = text22; } log.info("Label text abc79", title2, text22, typeof text22 === "object"); - const text4 = label.node().appendChild(createLabel_default2(title2, node2.labelStyle, true, true)); + const text4 = label.node().appendChild(await createLabel_default2(title2, node2.labelStyle, true, true)); let bbox = { width: 0, height: 0 }; if (evaluate(getConfig2().flowchart.htmlLabels)) { const div = text4.children[0]; @@ -140442,7 +142635,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const textRows = text22.slice(1, text22.length); let titleBox = text4.getBBox(); const descr = label.node().appendChild( - createLabel_default2(textRows.join ? textRows.join("
    ") : textRows, node2.labelStyle, true, true) + await createLabel_default2( + textRows.join ? textRows.join("
    ") : textRows, + node2.labelStyle, + true, + true + ) ); if (evaluate(getConfig2().flowchart.htmlLabels)) { const div = descr.children[0]; @@ -140482,9 +142680,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; getClassesFromNode(node2, void 0), true ); - const h2 = bbox.height + node2.padding; - const w3 = bbox.width + h2 / 4 + node2.padding; - const rect3 = shapeSvg.insert("rect", ":first-child").attr("style", node2.style).attr("rx", h2 / 2).attr("ry", h2 / 2).attr("x", -w3 / 2).attr("y", -h2 / 2).attr("width", w3).attr("height", h2); + const h3 = bbox.height + node2.padding; + const w4 = bbox.width + h3 / 4 + node2.padding; + const rect3 = shapeSvg.insert("rect", ":first-child").attr("style", node2.style).attr("rx", h3 / 2).attr("ry", h3 / 2).attr("x", -w4 / 2).attr("y", -h3 / 2).attr("width", w4).attr("height", h3); updateNodeBounds2(node2, rect3); node2.intersect = function(point8) { return intersect_default2.rect(node2, point8); @@ -140537,21 +142735,21 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; getClassesFromNode(node2, void 0), true ); - const w3 = bbox.width + node2.padding; - const h2 = bbox.height + node2.padding; + const w4 = bbox.width + node2.padding; + const h3 = bbox.height + node2.padding; const points = [ { x: 0, y: 0 }, - { x: w3, y: 0 }, - { x: w3, y: -h2 }, - { x: 0, y: -h2 }, + { x: w4, y: 0 }, + { x: w4, y: -h3 }, + { x: 0, y: -h3 }, { x: 0, y: 0 }, { x: -8, y: 0 }, - { x: w3 + 8, y: 0 }, - { x: w3 + 8, y: -h2 }, - { x: -8, y: -h2 }, + { x: w4 + 8, y: 0 }, + { x: w4 + 8, y: -h3 }, + { x: -8, y: -h3 }, { x: -8, y: 0 } ]; - const el = insertPolygonShape3(shapeSvg, w3, h2, points); + const el = insertPolygonShape2(shapeSvg, w4, h3, points); el.attr("style", node2.style); updateNodeBounds2(node2, el); node2.intersect = function(point8) { @@ -140598,7 +142796,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }; return shapeSvg; }, "end"); - class_box = /* @__PURE__ */ __name((parent4, node2) => { + class_box = /* @__PURE__ */ __name(async (parent4, node2) => { const halfPadding = node2.padding / 2; const rowPadding = 4; const lineHeight = 8; @@ -140612,13 +142810,13 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const rect3 = shapeSvg.insert("rect", ":first-child"); const topLine = shapeSvg.insert("line"); const bottomLine = shapeSvg.insert("line"); - let maxWidth = 0; + let maxWidth2 = 0; let maxHeight = rowPadding; const labelContainer = shapeSvg.insert("g").attr("class", "label"); let verticalPos = 0; const hasInterface = node2.classData.annotations?.[0]; const interfaceLabelText = node2.classData.annotations[0] ? "\xAB" + node2.classData.annotations[0] + "\xBB" : ""; - const interfaceLabel = labelContainer.node().appendChild(createLabel_default2(interfaceLabelText, node2.labelStyle, true, true)); + const interfaceLabel = labelContainer.node().appendChild(await createLabel_default2(interfaceLabelText, node2.labelStyle, true, true)); let interfaceBBox = interfaceLabel.getBBox(); if (evaluate(getConfig2().flowchart.htmlLabels)) { const div = interfaceLabel.children[0]; @@ -140629,7 +142827,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } if (node2.classData.annotations[0]) { maxHeight += interfaceBBox.height + rowPadding; - maxWidth += interfaceBBox.width; + maxWidth2 += interfaceBBox.width; } let classTitleString = node2.classData.label; if (node2.classData.type !== void 0 && node2.classData.type !== "") { @@ -140639,7 +142837,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; classTitleString += "<" + node2.classData.type + ">"; } } - const classTitleLabel = labelContainer.node().appendChild(createLabel_default2(classTitleString, node2.labelStyle, true, true)); + const classTitleLabel = labelContainer.node().appendChild(await createLabel_default2(classTitleString, node2.labelStyle, true, true)); select_default2(classTitleLabel).attr("class", "classTitle"); let classTitleBBox = classTitleLabel.getBBox(); if (evaluate(getConfig2().flowchart.htmlLabels)) { @@ -140650,18 +142848,18 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; dv.attr("height", classTitleBBox.height); } maxHeight += classTitleBBox.height + rowPadding; - if (classTitleBBox.width > maxWidth) { - maxWidth = classTitleBBox.width; + if (classTitleBBox.width > maxWidth2) { + maxWidth2 = classTitleBBox.width; } const classAttributes = []; - node2.classData.members.forEach((member) => { + node2.classData.members.forEach(async (member) => { const parsedInfo = member.getDisplayDetails(); let parsedText = parsedInfo.displayText; if (getConfig2().flowchart.htmlLabels) { parsedText = parsedText.replace(//g, ">"); } const lbl = labelContainer.node().appendChild( - createLabel_default2( + await createLabel_default2( parsedText, parsedInfo.cssStyle ? parsedInfo.cssStyle : node2.labelStyle, true, @@ -140676,22 +142874,22 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; dv.attr("width", bbox.width); dv.attr("height", bbox.height); } - if (bbox.width > maxWidth) { - maxWidth = bbox.width; + if (bbox.width > maxWidth2) { + maxWidth2 = bbox.width; } maxHeight += bbox.height + rowPadding; classAttributes.push(lbl); }); maxHeight += lineHeight; const classMethods = []; - node2.classData.methods.forEach((member) => { + node2.classData.methods.forEach(async (member) => { const parsedInfo = member.getDisplayDetails(); let displayText = parsedInfo.displayText; if (getConfig2().flowchart.htmlLabels) { displayText = displayText.replace(//g, ">"); } const lbl = labelContainer.node().appendChild( - createLabel_default2( + await createLabel_default2( displayText, parsedInfo.cssStyle ? parsedInfo.cssStyle : node2.labelStyle, true, @@ -140706,49 +142904,49 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; dv.attr("width", bbox.width); dv.attr("height", bbox.height); } - if (bbox.width > maxWidth) { - maxWidth = bbox.width; + if (bbox.width > maxWidth2) { + maxWidth2 = bbox.width; } maxHeight += bbox.height + rowPadding; classMethods.push(lbl); }); maxHeight += lineHeight; if (hasInterface) { - let diffX2 = (maxWidth - interfaceBBox.width) / 2; + let diffX2 = (maxWidth2 - interfaceBBox.width) / 2; select_default2(interfaceLabel).attr( "transform", - "translate( " + (-1 * maxWidth / 2 + diffX2) + ", " + -1 * maxHeight / 2 + ")" + "translate( " + (-1 * maxWidth2 / 2 + diffX2) + ", " + -1 * maxHeight / 2 + ")" ); verticalPos = interfaceBBox.height + rowPadding; } - let diffX = (maxWidth - classTitleBBox.width) / 2; + let diffX = (maxWidth2 - classTitleBBox.width) / 2; select_default2(classTitleLabel).attr( "transform", - "translate( " + (-1 * maxWidth / 2 + diffX) + ", " + (-1 * maxHeight / 2 + verticalPos) + ")" + "translate( " + (-1 * maxWidth2 / 2 + diffX) + ", " + (-1 * maxHeight / 2 + verticalPos) + ")" ); verticalPos += classTitleBBox.height + rowPadding; - topLine.attr("class", "divider").attr("x1", -maxWidth / 2 - halfPadding).attr("x2", maxWidth / 2 + halfPadding).attr("y1", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr("y2", -maxHeight / 2 - halfPadding + lineHeight + verticalPos); + topLine.attr("class", "divider").attr("x1", -maxWidth2 / 2 - halfPadding).attr("x2", maxWidth2 / 2 + halfPadding).attr("y1", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr("y2", -maxHeight / 2 - halfPadding + lineHeight + verticalPos); verticalPos += lineHeight; classAttributes.forEach((lbl) => { select_default2(lbl).attr( "transform", - "translate( " + -maxWidth / 2 + ", " + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + ")" + "translate( " + -maxWidth2 / 2 + ", " + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + ")" ); const memberBBox = lbl?.getBBox(); verticalPos += (memberBBox?.height ?? 0) + rowPadding; }); verticalPos += lineHeight; - bottomLine.attr("class", "divider").attr("x1", -maxWidth / 2 - halfPadding).attr("x2", maxWidth / 2 + halfPadding).attr("y1", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr("y2", -maxHeight / 2 - halfPadding + lineHeight + verticalPos); + bottomLine.attr("class", "divider").attr("x1", -maxWidth2 / 2 - halfPadding).attr("x2", maxWidth2 / 2 + halfPadding).attr("y1", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr("y2", -maxHeight / 2 - halfPadding + lineHeight + verticalPos); verticalPos += lineHeight; classMethods.forEach((lbl) => { select_default2(lbl).attr( "transform", - "translate( " + -maxWidth / 2 + ", " + (-1 * maxHeight / 2 + verticalPos) + ")" + "translate( " + -maxWidth2 / 2 + ", " + (-1 * maxHeight / 2 + verticalPos) + ")" ); const memberBBox = lbl?.getBBox(); verticalPos += (memberBBox?.height ?? 0) + rowPadding; }); - rect3.attr("style", node2.style).attr("class", "outer title-state").attr("x", -maxWidth / 2 - halfPadding).attr("y", -(maxHeight / 2) - halfPadding).attr("width", maxWidth + node2.padding).attr("height", maxHeight + node2.padding); + rect3.attr("style", node2.style).attr("class", "outer title-state").attr("x", -maxWidth2 / 2 - halfPadding).attr("y", -(maxHeight / 2) - halfPadding).attr("width", maxWidth2 + node2.padding).attr("height", maxHeight + node2.padding); updateNodeBounds2(node2, rect3); node2.intersect = function(point8) { return intersect_default2.rect(node2, point8); @@ -140812,7 +143010,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } return newEl; }, "insertNode"); - positionNode3 = /* @__PURE__ */ __name((node2) => { + positionNode2 = /* @__PURE__ */ __name((node2) => { const el = nodeElems2[node2.id]; log.trace( "Transforming node", @@ -140836,8 +143034,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); // src/diagrams/block/renderHelpers.ts - function getNodeFromBlock(block3, db10, positioned = false) { - const vertex = block3; + function getNodeFromBlock(block2, db7, positioned = false) { + const vertex = block2; let classStr = "default"; if ((vertex?.classes?.length || 0) > 0) { classStr = (vertex?.classes ?? []).join(" "); @@ -140934,44 +143132,44 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }; return node2; } - async function calculateBlockSize(elem, block3, db10) { - const node2 = getNodeFromBlock(block3, db10, false); + async function calculateBlockSize(elem, block2, db7) { + const node2 = getNodeFromBlock(block2, db7, false); if (node2.type === "group") { return; } const config5 = getConfig(); const nodeEl = await insertNode2(elem, node2, { config: config5 }); const boundingBox3 = nodeEl.node().getBBox(); - const obj = db10.getBlock(node2.id); + const obj = db7.getBlock(node2.id); obj.size = { width: boundingBox3.width, height: boundingBox3.height, x: 0, y: 0, node: nodeEl }; - db10.setBlock(obj); + db7.setBlock(obj); nodeEl.remove(); } - async function insertBlockPositioned(elem, block3, db10) { - const node2 = getNodeFromBlock(block3, db10, true); - const obj = db10.getBlock(node2.id); + async function insertBlockPositioned(elem, block2, db7) { + const node2 = getNodeFromBlock(block2, db7, true); + const obj = db7.getBlock(node2.id); if (obj.type !== "space") { const config5 = getConfig(); await insertNode2(elem, node2, { config: config5 }); - block3.intersect = node2?.intersect; - positionNode3(node2); + block2.intersect = node2?.intersect; + positionNode2(node2); } } - async function performOperations(elem, blocks2, db10, operation) { - for (const block3 of blocks2) { - await operation(elem, block3, db10); - if (block3.children) { - await performOperations(elem, block3.children, db10, operation); + async function performOperations(elem, blocks2, db7, operation) { + for (const block2 of blocks2) { + await operation(elem, block2, db7); + if (block2.children) { + await performOperations(elem, block2.children, db7, operation); } } } - async function calculateBlockSizes(elem, blocks2, db10) { - await performOperations(elem, blocks2, db10, calculateBlockSize); + async function calculateBlockSizes(elem, blocks2, db7) { + await performOperations(elem, blocks2, db7, calculateBlockSize); } - async function insertBlocks(elem, blocks2, db10) { - await performOperations(elem, blocks2, db10, insertBlockPositioned); + async function insertBlocks(elem, blocks2, db7) { + await performOperations(elem, blocks2, db7, insertBlockPositioned); } - async function insertEdges(elem, edges3, blocks2, db10, id29) { + async function insertEdges(elem, edges3, blocks2, db7, id30) { const g2 = new Graph({ multigraph: true, compound: true @@ -140983,19 +143181,19 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; marginx: 8, marginy: 8 }); - for (const block3 of blocks2) { - if (block3.size) { - g2.setNode(block3.id, { - width: block3.size.width, - height: block3.size.height, - intersect: block3.intersect + for (const block2 of blocks2) { + if (block2.size) { + g2.setNode(block2.id, { + width: block2.size.width, + height: block2.size.height, + intersect: block2.intersect }); } } for (const edge of edges3) { if (edge.start && edge.end) { - const startBlock = db10.getBlock(edge.start); - const endBlock = db10.getBlock(edge.end); + const startBlock = db7.getBlock(edge.start); + const endBlock = db7.getBlock(edge.end); if (startBlock?.size && endBlock?.size) { const start3 = startBlock.size; const end2 = endBlock.size; @@ -141017,7 +143215,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; void 0, "block", g2, - id29 + id30 ); if (edge.label) { await insertEdgeLabel2(elem, { @@ -141068,30 +143266,30 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; init_markers2(); init_logger(); init_setupGraphViewbox(); - init_layout2(); + init_layout3(); init_renderHelpers(); getClasses5 = /* @__PURE__ */ __name(function(text4, diagObj) { return diagObj.db.getClasses(); }, "getClasses"); - draw23 = /* @__PURE__ */ __name(async function(text4, id29, _version, diagObj) { + draw23 = /* @__PURE__ */ __name(async function(text4, id30, _version, diagObj) { const { securityLevel, block: conf5 } = getConfig(); - const db10 = diagObj.db; + const db7 = diagObj.db; let sandboxElement; if (securityLevel === "sandbox") { - sandboxElement = select_default2("#i" + id29); + sandboxElement = select_default2("#i" + id30); } - const root4 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); - const svg2 = securityLevel === "sandbox" ? root4.select(`[id="${id29}"]`) : select_default2(`[id="${id29}"]`); + const root3 = securityLevel === "sandbox" ? select_default2(sandboxElement.nodes()[0].contentDocument.body) : select_default2("body"); + const svg2 = securityLevel === "sandbox" ? root3.select(`[id="${id30}"]`) : select_default2(`[id="${id30}"]`); const markers3 = ["point", "circle", "cross"]; - markers_default2(svg2, markers3, diagObj.type, id29); - const bl = db10.getBlocks(); - const blArr = db10.getBlocksFlat(); - const edges3 = db10.getEdges(); - const nodes6 = svg2.insert("g").attr("class", "block"); - await calculateBlockSizes(nodes6, bl, db10); - const bounds4 = layout5(db10); - await insertBlocks(nodes6, bl, db10); - await insertEdges(nodes6, edges3, blArr, db10, id29); + markers_default2(svg2, markers3, diagObj.type, id30); + const bl = db7.getBlocks(); + const blArr = db7.getBlocksFlat(); + const edges3 = db7.getEdges(); + const nodes5 = svg2.insert("g").attr("class", "block"); + await calculateBlockSizes(nodes5, bl, db7); + const bounds4 = layout5(db7); + await insertBlocks(nodes5, bl, db7); + await insertEdges(nodes5, edges3, blArr, db7, id30); if (bounds4) { const bounds22 = bounds4; const magicFactor = Math.max(1, Math.round(0.125 * (bounds22.width / bounds22.height))); @@ -141177,9 +143375,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const temp = x5; return temp === "T" || temp === "B"; }, "isArchitectureDirectionY"); - isArchitectureDirectionXY = /* @__PURE__ */ __name(function(a2, b2) { - const aX_bY = isArchitectureDirectionX(a2) && isArchitectureDirectionY(b2); - const aY_bX = isArchitectureDirectionY(a2) && isArchitectureDirectionX(b2); + isArchitectureDirectionXY = /* @__PURE__ */ __name(function(a2, b3) { + const aX_bY = isArchitectureDirectionX(a2) && isArchitectureDirectionY(b3); + const aY_bX = isArchitectureDirectionY(a2) && isArchitectureDirectionX(b3); return aX_bY || aY_bX; }, "isArchitectureDirectionXY"); isArchitecturePairXY = /* @__PURE__ */ __name(function(pair) { @@ -141196,20 +143394,20 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const pair = `${sourceDir}${targetDir}`; return isValidArchitectureDirectionPair(pair) ? pair : void 0; }, "getArchitectureDirectionPair"); - shiftPositionByArchitectureDirectionPair = /* @__PURE__ */ __name(function([x5, y5], pair) { + shiftPositionByArchitectureDirectionPair = /* @__PURE__ */ __name(function([x5, y6], pair) { const lhs = pair[0]; const rhs = pair[1]; if (isArchitectureDirectionX(lhs)) { if (isArchitectureDirectionY(rhs)) { - return [x5 + (lhs === "L" ? -1 : 1), y5 + (rhs === "T" ? 1 : -1)]; + return [x5 + (lhs === "L" ? -1 : 1), y6 + (rhs === "T" ? 1 : -1)]; } else { - return [x5 + (lhs === "L" ? -1 : 1), y5]; + return [x5 + (lhs === "L" ? -1 : 1), y6]; } } else { if (isArchitectureDirectionX(rhs)) { - return [x5 + (rhs === "L" ? 1 : -1), y5 + (lhs === "T" ? 1 : -1)]; + return [x5 + (rhs === "L" ? 1 : -1), y6 + (lhs === "T" ? 1 : -1)]; } else { - return [x5, y5 + (lhs === "T" ? 1 : -1)]; + return [x5, y6 + (lhs === "T" ? 1 : -1)]; } } }, "shiftPositionByArchitectureDirectionPair"); @@ -141224,8 +143422,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return [-1, 1]; } }, "getArchitectureDirectionXYFactors"); - getArchitectureDirectionAlignment = /* @__PURE__ */ __name(function(a2, b2) { - if (isArchitectureDirectionXY(a2, b2)) { + getArchitectureDirectionAlignment = /* @__PURE__ */ __name(function(a2, b3) { + if (isArchitectureDirectionXY(a2, b3)) { return "bend"; } else if (isArchitectureDirectionX(a2)) { return "horizontal"; @@ -141250,280 +143448,291 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); // src/diagrams/architecture/architectureDb.ts - function getConfigField(field) { - const arch = getConfig2().architecture; - if (arch?.[field]) { - return arch[field]; - } - return DEFAULT_ARCHITECTURE_CONFIG[field]; - } - var DEFAULT_ARCHITECTURE_CONFIG, state3, clear21, addService, getServices, addJunction, getJunctions, getNodes2, getNode, addGroup, getGroups, addEdge, getEdges2, getDataStructures, setElementForId3, getElementById4, db9; + var DEFAULT_ARCHITECTURE_CONFIG, ArchitectureDB; var init_architectureDb = __esm({ "src/diagrams/architecture/architectureDb.ts"() { "use strict"; + init_config(); init_defaultConfig(); - init_diagramAPI(); - init_imperativeState(); + init_utils2(); init_commonDb(); init_architectureTypes(); DEFAULT_ARCHITECTURE_CONFIG = defaultConfig_default.architecture; - state3 = new ImperativeState(() => ({ - nodes: {}, - groups: {}, - edges: [], - registeredIds: {}, - config: DEFAULT_ARCHITECTURE_CONFIG, - dataStructures: void 0, - elements: {} - })); - clear21 = /* @__PURE__ */ __name(() => { - state3.reset(); - clear(); - }, "clear"); - addService = /* @__PURE__ */ __name(function({ - id: id29, - icon: icon2, - in: parent4, - title: title2, - iconText - }) { - if (state3.records.registeredIds[id29] !== void 0) { - throw new Error( - `The service id [${id29}] is already in use by another ${state3.records.registeredIds[id29]}` - ); + ArchitectureDB = class { + constructor() { + this.nodes = {}; + this.groups = {}; + this.edges = []; + this.registeredIds = {}; + this.elements = {}; + this.setAccTitle = setAccTitle; + this.getAccTitle = getAccTitle; + this.setDiagramTitle = setDiagramTitle; + this.getDiagramTitle = getDiagramTitle; + this.getAccDescription = getAccDescription; + this.setAccDescription = setAccDescription; + this.clear(); } - if (parent4 !== void 0) { - if (id29 === parent4) { - throw new Error(`The service [${id29}] cannot be placed within itself`); - } - if (state3.records.registeredIds[parent4] === void 0) { - throw new Error( - `The service [${id29}]'s parent does not exist. Please make sure the parent is created before this service` - ); - } - if (state3.records.registeredIds[parent4] === "node") { - throw new Error(`The service [${id29}]'s parent is not a group`); - } + static { + __name(this, "ArchitectureDB"); } - state3.records.registeredIds[id29] = "node"; - state3.records.nodes[id29] = { - id: id29, - type: "service", + clear() { + this.nodes = {}; + this.groups = {}; + this.edges = []; + this.registeredIds = {}; + this.dataStructures = void 0; + this.elements = {}; + clear(); + } + addService({ + id: id30, icon: icon2, - iconText, + in: parent4, title: title2, - edges: [], - in: parent4 - }; - }, "addService"); - getServices = /* @__PURE__ */ __name(() => Object.values(state3.records.nodes).filter(isArchitectureService), "getServices"); - addJunction = /* @__PURE__ */ __name(function({ id: id29, in: parent4 }) { - state3.records.registeredIds[id29] = "node"; - state3.records.nodes[id29] = { - id: id29, - type: "junction", - edges: [], - in: parent4 - }; - }, "addJunction"); - getJunctions = /* @__PURE__ */ __name(() => Object.values(state3.records.nodes).filter(isArchitectureJunction), "getJunctions"); - getNodes2 = /* @__PURE__ */ __name(() => Object.values(state3.records.nodes), "getNodes"); - getNode = /* @__PURE__ */ __name((id29) => state3.records.nodes[id29], "getNode"); - addGroup = /* @__PURE__ */ __name(function({ id: id29, icon: icon2, in: parent4, title: title2 }) { - if (state3.records.registeredIds[id29] !== void 0) { - throw new Error( - `The group id [${id29}] is already in use by another ${state3.records.registeredIds[id29]}` - ); - } - if (parent4 !== void 0) { - if (id29 === parent4) { - throw new Error(`The group [${id29}] cannot be placed within itself`); - } - if (state3.records.registeredIds[parent4] === void 0) { + iconText + }) { + if (this.registeredIds[id30] !== void 0) { throw new Error( - `The group [${id29}]'s parent does not exist. Please make sure the parent is created before this group` + `The service id [${id30}] is already in use by another ${this.registeredIds[id30]}` ); } - if (state3.records.registeredIds[parent4] === "node") { - throw new Error(`The group [${id29}]'s parent is not a group`); + if (parent4 !== void 0) { + if (id30 === parent4) { + throw new Error(`The service [${id30}] cannot be placed within itself`); + } + if (this.registeredIds[parent4] === void 0) { + throw new Error( + `The service [${id30}]'s parent does not exist. Please make sure the parent is created before this service` + ); + } + if (this.registeredIds[parent4] === "node") { + throw new Error(`The service [${id30}]'s parent is not a group`); + } } + this.registeredIds[id30] = "node"; + this.nodes[id30] = { + id: id30, + type: "service", + icon: icon2, + iconText, + title: title2, + edges: [], + in: parent4 + }; } - state3.records.registeredIds[id29] = "group"; - state3.records.groups[id29] = { - id: id29, - icon: icon2, - title: title2, - in: parent4 - }; - }, "addGroup"); - getGroups = /* @__PURE__ */ __name(() => { - return Object.values(state3.records.groups); - }, "getGroups"); - addEdge = /* @__PURE__ */ __name(function({ - lhsId, - rhsId, - lhsDir, - rhsDir, - lhsInto, - rhsInto, - lhsGroup, - rhsGroup, - title: title2 - }) { - if (!isArchitectureDirection(lhsDir)) { - throw new Error( - `Invalid direction given for left hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${lhsDir}` - ); + getServices() { + return Object.values(this.nodes).filter(isArchitectureService); } - if (!isArchitectureDirection(rhsDir)) { - throw new Error( - `Invalid direction given for right hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${rhsDir}` - ); + addJunction({ id: id30, in: parent4 }) { + this.registeredIds[id30] = "node"; + this.nodes[id30] = { + id: id30, + type: "junction", + edges: [], + in: parent4 + }; } - if (state3.records.nodes[lhsId] === void 0 && state3.records.groups[lhsId] === void 0) { - throw new Error( - `The left-hand id [${lhsId}] does not yet exist. Please create the service/group before declaring an edge to it.` - ); + getJunctions() { + return Object.values(this.nodes).filter(isArchitectureJunction); } - if (state3.records.nodes[rhsId] === void 0 && state3.records.groups[lhsId] === void 0) { - throw new Error( - `The right-hand id [${rhsId}] does not yet exist. Please create the service/group before declaring an edge to it.` - ); + getNodes() { + return Object.values(this.nodes); } - const lhsGroupId = state3.records.nodes[lhsId].in; - const rhsGroupId = state3.records.nodes[rhsId].in; - if (lhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) { - throw new Error( - `The left-hand id [${lhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.` - ); + getNode(id30) { + return this.nodes[id30] ?? null; } - if (rhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) { - throw new Error( - `The right-hand id [${rhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.` - ); + addGroup({ id: id30, icon: icon2, in: parent4, title: title2 }) { + if (this.registeredIds?.[id30] !== void 0) { + throw new Error( + `The group id [${id30}] is already in use by another ${this.registeredIds[id30]}` + ); + } + if (parent4 !== void 0) { + if (id30 === parent4) { + throw new Error(`The group [${id30}] cannot be placed within itself`); + } + if (this.registeredIds?.[parent4] === void 0) { + throw new Error( + `The group [${id30}]'s parent does not exist. Please make sure the parent is created before this group` + ); + } + if (this.registeredIds?.[parent4] === "node") { + throw new Error(`The group [${id30}]'s parent is not a group`); + } + } + this.registeredIds[id30] = "group"; + this.groups[id30] = { + id: id30, + icon: icon2, + title: title2, + in: parent4 + }; + } + getGroups() { + return Object.values(this.groups); } - const edge = { + addEdge({ lhsId, - lhsDir, - lhsInto, - lhsGroup, rhsId, + lhsDir, rhsDir, + lhsInto, rhsInto, + lhsGroup, rhsGroup, title: title2 - }; - state3.records.edges.push(edge); - if (state3.records.nodes[lhsId] && state3.records.nodes[rhsId]) { - state3.records.nodes[lhsId].edges.push(state3.records.edges[state3.records.edges.length - 1]); - state3.records.nodes[rhsId].edges.push(state3.records.edges[state3.records.edges.length - 1]); - } - }, "addEdge"); - getEdges2 = /* @__PURE__ */ __name(() => state3.records.edges, "getEdges"); - getDataStructures = /* @__PURE__ */ __name(() => { - if (state3.records.dataStructures === void 0) { - const groupAlignments = {}; - const adjList = Object.entries(state3.records.nodes).reduce((prevOuter, [id29, service]) => { - prevOuter[id29] = service.edges.reduce((prevInner, edge) => { - const lhsGroupId = getNode(edge.lhsId)?.in; - const rhsGroupId = getNode(edge.rhsId)?.in; - if (lhsGroupId && rhsGroupId && lhsGroupId !== rhsGroupId) { - const alignment = getArchitectureDirectionAlignment(edge.lhsDir, edge.rhsDir); - if (alignment !== "bend") { - groupAlignments[lhsGroupId] ??= {}; - groupAlignments[lhsGroupId][rhsGroupId] = alignment; - groupAlignments[rhsGroupId] ??= {}; - groupAlignments[rhsGroupId][lhsGroupId] = alignment; - } - } - if (edge.lhsId === id29) { - const pair = getArchitectureDirectionPair(edge.lhsDir, edge.rhsDir); - if (pair) { - prevInner[pair] = edge.rhsId; - } - } else { - const pair = getArchitectureDirectionPair(edge.rhsDir, edge.lhsDir); - if (pair) { - prevInner[pair] = edge.lhsId; + }) { + if (!isArchitectureDirection(lhsDir)) { + throw new Error( + `Invalid direction given for left hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(lhsDir)}` + ); + } + if (!isArchitectureDirection(rhsDir)) { + throw new Error( + `Invalid direction given for right hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(rhsDir)}` + ); + } + if (this.nodes[lhsId] === void 0 && this.groups[lhsId] === void 0) { + throw new Error( + `The left-hand id [${lhsId}] does not yet exist. Please create the service/group before declaring an edge to it.` + ); + } + if (this.nodes[rhsId] === void 0 && this.groups[rhsId] === void 0) { + throw new Error( + `The right-hand id [${rhsId}] does not yet exist. Please create the service/group before declaring an edge to it.` + ); + } + const lhsGroupId = this.nodes[lhsId].in; + const rhsGroupId = this.nodes[rhsId].in; + if (lhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) { + throw new Error( + `The left-hand id [${lhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.` + ); + } + if (rhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) { + throw new Error( + `The right-hand id [${rhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.` + ); + } + const edge = { + lhsId, + lhsDir, + lhsInto, + lhsGroup, + rhsId, + rhsDir, + rhsInto, + rhsGroup, + title: title2 + }; + this.edges.push(edge); + if (this.nodes[lhsId] && this.nodes[rhsId]) { + this.nodes[lhsId].edges.push(this.edges[this.edges.length - 1]); + this.nodes[rhsId].edges.push(this.edges[this.edges.length - 1]); + } + } + getEdges() { + return this.edges; + } + /** + * Returns the current diagram's adjacency list, spatial map, & group alignments. + * If they have not been created, run the algorithms to generate them. + * @returns + */ + getDataStructures() { + if (this.dataStructures === void 0) { + const groupAlignments = {}; + const adjList = Object.entries(this.nodes).reduce((prevOuter, [id30, service]) => { + prevOuter[id30] = service.edges.reduce((prevInner, edge) => { + const lhsGroupId = this.getNode(edge.lhsId)?.in; + const rhsGroupId = this.getNode(edge.rhsId)?.in; + if (lhsGroupId && rhsGroupId && lhsGroupId !== rhsGroupId) { + const alignment = getArchitectureDirectionAlignment(edge.lhsDir, edge.rhsDir); + if (alignment !== "bend") { + groupAlignments[lhsGroupId] ??= {}; + groupAlignments[lhsGroupId][rhsGroupId] = alignment; + groupAlignments[rhsGroupId] ??= {}; + groupAlignments[rhsGroupId][lhsGroupId] = alignment; + } + } + if (edge.lhsId === id30) { + const pair = getArchitectureDirectionPair(edge.lhsDir, edge.rhsDir); + if (pair) { + prevInner[pair] = edge.rhsId; + } + } else { + const pair = getArchitectureDirectionPair(edge.rhsDir, edge.lhsDir); + if (pair) { + prevInner[pair] = edge.lhsId; + } } - } - return prevInner; + return prevInner; + }, {}); + return prevOuter; }, {}); - return prevOuter; - }, {}); - const firstId = Object.keys(adjList)[0]; - const visited = { [firstId]: 1 }; - const notVisited = Object.keys(adjList).reduce( - (prev2, id29) => id29 === firstId ? prev2 : { ...prev2, [id29]: 1 }, - {} - ); - const BFS = /* @__PURE__ */ __name((startingId) => { - const spatialMap = { [startingId]: [0, 0] }; - const queue = [startingId]; - while (queue.length > 0) { - const id29 = queue.shift(); - if (id29) { - visited[id29] = 1; - delete notVisited[id29]; - const adj = adjList[id29]; - const [posX, posY] = spatialMap[id29]; - Object.entries(adj).forEach(([dir2, rhsId]) => { - if (!visited[rhsId]) { - spatialMap[rhsId] = shiftPositionByArchitectureDirectionPair( - [posX, posY], - dir2 - ); - queue.push(rhsId); - } - }); + const firstId = Object.keys(adjList)[0]; + const visited = { [firstId]: 1 }; + const notVisited = Object.keys(adjList).reduce( + (prev2, id30) => id30 === firstId ? prev2 : { ...prev2, [id30]: 1 }, + {} + ); + const BFS = /* @__PURE__ */ __name((startingId) => { + const spatialMap = { [startingId]: [0, 0] }; + const queue = [startingId]; + while (queue.length > 0) { + const id30 = queue.shift(); + if (id30) { + visited[id30] = 1; + delete notVisited[id30]; + const adj = adjList[id30]; + const [posX, posY] = spatialMap[id30]; + Object.entries(adj).forEach(([dir2, rhsId]) => { + if (!visited[rhsId]) { + spatialMap[rhsId] = shiftPositionByArchitectureDirectionPair( + [posX, posY], + dir2 + ); + queue.push(rhsId); + } + }); + } } + return spatialMap; + }, "BFS"); + const spatialMaps = [BFS(firstId)]; + while (Object.keys(notVisited).length > 0) { + spatialMaps.push(BFS(Object.keys(notVisited)[0])); } - return spatialMap; - }, "BFS"); - const spatialMaps = [BFS(firstId)]; - while (Object.keys(notVisited).length > 0) { - spatialMaps.push(BFS(Object.keys(notVisited)[0])); + this.dataStructures = { + adjList, + spatialMaps, + groupAlignments + }; } - state3.records.dataStructures = { - adjList, - spatialMaps, - groupAlignments - }; + return this.dataStructures; + } + setElementForId(id30, element3) { + this.elements[id30] = element3; + } + getElementById(id30) { + return this.elements[id30]; + } + getConfig() { + return cleanAndMerge({ + ...DEFAULT_ARCHITECTURE_CONFIG, + ...getConfig().architecture + }); + } + getConfigField(field) { + return this.getConfig()[field]; } - return state3.records.dataStructures; - }, "getDataStructures"); - setElementForId3 = /* @__PURE__ */ __name((id29, element3) => { - state3.records.elements[id29] = element3; - }, "setElementForId"); - getElementById4 = /* @__PURE__ */ __name((id29) => state3.records.elements[id29], "getElementById"); - db9 = { - clear: clear21, - setDiagramTitle, - getDiagramTitle, - setAccTitle, - getAccTitle, - setAccDescription, - getAccDescription, - addService, - getServices, - addJunction, - getJunctions, - getNodes: getNodes2, - getNode, - addGroup, - getGroups, - addEdge, - getEdges: getEdges2, - setElementForId: setElementForId3, - getElementById: getElementById4, - getDataStructures }; - __name(getConfigField, "getConfigField"); } }); // src/diagrams/architecture/architectureParser.ts - var populateDb2, parser23; + var populateDb2, parser22; var init_architectureParser = __esm({ "src/diagrams/architecture/architectureParser.ts"() { "use strict"; @@ -141531,18 +143740,28 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; init_logger(); init_populateCommonDb(); init_architectureDb(); - populateDb2 = /* @__PURE__ */ __name((ast, db10) => { - populateCommonDb(ast, db10); - ast.groups.map(db10.addGroup); - ast.services.map((service) => db10.addService({ ...service, type: "service" })); - ast.junctions.map((service) => db10.addJunction({ ...service, type: "junction" })); - ast.edges.map(db10.addEdge); + populateDb2 = /* @__PURE__ */ __name((ast, db7) => { + populateCommonDb(ast, db7); + ast.groups.map((group2) => db7.addGroup(group2)); + ast.services.map((service) => db7.addService({ ...service, type: "service" })); + ast.junctions.map((service) => db7.addJunction({ ...service, type: "junction" })); + ast.edges.map((edge) => db7.addEdge(edge)); }, "populateDb"); - parser23 = { + parser22 = { + parser: { + // @ts-expect-error - ArchitectureDB is not assignable to DiagramDB + yy: void 0 + }, parse: /* @__PURE__ */ __name(async (input) => { - const ast = await parse("architecture", input); + const ast = await parse3("architecture", input); log.debug(ast); - populateDb2(ast, db9); + const db7 = parser22.parser?.yy; + if (!(db7 instanceof ArchitectureDB)) { + throw new Error( + "parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues." + ); + } + populateDb2(ast, db7); }, "parse") }; } @@ -141553,21 +143772,21 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var init_architectureStyles = __esm({ "src/diagrams/architecture/architectureStyles.ts"() { "use strict"; - getStyles18 = /* @__PURE__ */ __name((options3) => ` + getStyles18 = /* @__PURE__ */ __name((options2) => ` .edge { - stroke-width: ${options3.archEdgeWidth}; - stroke: ${options3.archEdgeColor}; + stroke-width: ${options2.archEdgeWidth}; + stroke: ${options2.archEdgeColor}; fill: none; } .arrow { - fill: ${options3.archEdgeArrowColor}; + fill: ${options2.archEdgeArrowColor}; } .node-bkg { fill: none; - stroke: ${options3.archGroupBorderColor}; - stroke-width: ${options3.archGroupBorderWidth}; + stroke: ${options2.archGroupBorderColor}; + stroke-width: ${options2.archGroupBorderWidth}; stroke-dasharray: 8; } .node-icon-text { @@ -141593,7 +143812,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var require_layout_base2 = __commonJS({ "../../node_modules/.pnpm/layout-base@2.0.1/node_modules/layout-base/layout-base.js"(exports2, module2) { "use strict"; - (/* @__PURE__ */ __name(function webpackUniversalModuleDefinition(root4, factory) { + (/* @__PURE__ */ __name((function webpackUniversalModuleDefinition(root3, factory) { if (typeof exports2 === "object" && typeof module2 === "object") module2.exports = factory(); else if (typeof define === "function" && define.amd) @@ -141601,11 +143820,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; else if (typeof exports2 === "object") exports2["layoutBase"] = factory(); else - root4["layoutBase"] = factory(); - }, "webpackUniversalModuleDefinition"))(exports2, function() { + root3["layoutBase"] = factory(); + }), "webpackUniversalModuleDefinition"))(exports2, function() { return ( /******/ - function(modules2) { + (function(modules2) { var installedModules = {}; function __webpack_require__(moduleId) { if (installedModules[moduleId]) { @@ -141663,10 +143882,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }; __webpack_require__.p = ""; return __webpack_require__(__webpack_require__.s = 28); - }([ + })([ /* 0 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; function LayoutConstants() { } @@ -141689,10 +143908,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; LayoutConstants.WORLD_CENTER_X = 1200; LayoutConstants.WORLD_CENTER_Y = 900; module3.exports = LayoutConstants; - }, + }), /* 1 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var LGraphObject = __webpack_require__(2); var IGeometry = __webpack_require__(8); @@ -141748,12 +143967,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }; LEdge.prototype.getOtherEndInGraph = function(node2, graph) { var otherEnd = this.getOtherEnd(node2); - var root4 = graph.getGraphManager().getRoot(); + var root3 = graph.getGraphManager().getRoot(); while (true) { if (otherEnd.getOwner() == graph) { return otherEnd; } - if (otherEnd.getOwner() == root4) { + if (otherEnd.getOwner() == root3) { break; } otherEnd = otherEnd.getOwner().getParent(); @@ -141787,20 +144006,20 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); }; module3.exports = LEdge; - }, + }), /* 2 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; function LGraphObject(vGraphObject) { this.vGraphObject = vGraphObject; } __name(LGraphObject, "LGraphObject"); module3.exports = LGraphObject; - }, + }), /* 3 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var LGraphObject = __webpack_require__(2); var Integer = __webpack_require__(10); @@ -141808,8 +144027,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var LayoutConstants = __webpack_require__(0); var RandomSeed = __webpack_require__(16); var PointD = __webpack_require__(5); - function LNode(gm, loc, size5, vNode) { - if (size5 == null && vNode == null) { + function LNode(gm, loc, size4, vNode) { + if (size4 == null && vNode == null) { vNode = loc; } LGraphObject.call(this, vNode); @@ -141819,7 +144038,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; this.vGraphObject = vNode; this.edges = []; this.graphManager = gm; - if (size5 != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size5.width, size5.height); + if (size4 != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size4.width, size4.height); else this.rect = new RectangleD(); } __name(LNode, "LNode"); @@ -141879,9 +144098,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; this.rect.x = cx - this.rect.width / 2; this.rect.y = cy - this.rect.height / 2; }; - LNode.prototype.setLocation = function(x5, y5) { + LNode.prototype.setLocation = function(x5, y6) { this.rect.x = x5; - this.rect.y = y5; + this.rect.y = y6; }; LNode.prototype.moveBy = function(dx, dy) { this.rect.x += dx; @@ -141899,13 +144118,13 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); return edgeList2; }; - LNode.prototype.getEdgesBetween = function(other2) { + LNode.prototype.getEdgesBetween = function(other) { var edgeList2 = []; var edge; var self2 = this; self2.edges.forEach(function(edge2) { if (!(edge2.source == self2 || edge2.target == self2)) throw "Incorrect edge source and/or target"; - if (edge2.target == other2 || edge2.source == other2) { + if (edge2.target == other || edge2.source == other) { edgeList2.push(edge2); } }); @@ -141932,9 +144151,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var children2; withNeighborsList.add(this); if (this.child != null) { - var nodes6 = this.child.getNodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - childNode = nodes6[i2]; + var nodes5 = this.child.getNodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + childNode = nodes5[i2]; children2 = childNode.withChildren(); children2.forEach(function(node2) { withNeighborsList.add(node2); @@ -141949,9 +144168,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (this.child == null) { noOfChildren = 1; } else { - var nodes6 = this.child.getNodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - childNode = nodes6[i2]; + var nodes5 = this.child.getNodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + childNode = nodes5[i2]; noOfChildren += childNode.getNoOfChildren(); } } @@ -142069,10 +144288,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return this.owner.getParent(); }; module3.exports = LNode; - }, + }), /* 4 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var LayoutConstants = __webpack_require__(0); function FDLayoutConstants() { @@ -142103,18 +144322,18 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; FDLayoutConstants.MIN_EDGE_LENGTH = 1; FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10; module3.exports = FDLayoutConstants; - }, + }), /* 5 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; - function PointD(x5, y5) { - if (x5 == null && y5 == null) { + function PointD(x5, y6) { + if (x5 == null && y6 == null) { this.x = 0; this.y = 0; } else { this.x = x5; - this.y = y5; + this.y = y6; } } __name(PointD, "PointD"); @@ -142127,8 +144346,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; PointD.prototype.setX = function(x5) { this.x = x5; }; - PointD.prototype.setY = function(y5) { - this.y = y5; + PointD.prototype.setY = function(y6) { + this.y = y6; }; PointD.prototype.getDifference = function(pt) { return new DimensionD(this.x - pt.x, this.y - pt.y); @@ -142142,10 +144361,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return this; }; module3.exports = PointD; - }, + }), /* 6 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var LGraphObject = __webpack_require__(2); var Integer = __webpack_require__(10); @@ -142297,10 +144516,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var nodeTop; var nodeLeft; var margin; - var nodes6 = this.getNodes(); - var s2 = nodes6.length; + var nodes5 = this.getNodes(); + var s2 = nodes5.length; for (var i2 = 0; i2 < s2; i2++) { - var lNode = nodes6[i2]; + var lNode = nodes5[i2]; nodeTop = lNode.getTop(); nodeLeft = lNode.getLeft(); if (top2 > nodeTop) { @@ -142313,8 +144532,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (top2 == Integer.MAX_VALUE) { return null; } - if (nodes6[0].getParent().paddingLeft != void 0) { - margin = nodes6[0].getParent().paddingLeft; + if (nodes5[0].getParent().paddingLeft != void 0) { + margin = nodes5[0].getParent().paddingLeft; } else { margin = this.margin; } @@ -142332,10 +144551,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var nodeTop; var nodeBottom; var margin; - var nodes6 = this.nodes; - var s2 = nodes6.length; + var nodes5 = this.nodes; + var s2 = nodes5.length; for (var i2 = 0; i2 < s2; i2++) { - var lNode = nodes6[i2]; + var lNode = nodes5[i2]; if (recursive && lNode.child != null) { lNode.updateBounds(); } @@ -142363,8 +144582,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; this.top = this.parent.getTop(); this.bottom = this.parent.getBottom(); } - if (nodes6[0].getParent().paddingLeft != void 0) { - margin = nodes6[0].getParent().paddingLeft; + if (nodes5[0].getParent().paddingLeft != void 0) { + margin = nodes5[0].getParent().paddingLeft; } else { margin = this.margin; } @@ -142373,7 +144592,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; this.top = boundingRect.y - margin; this.bottom = boundingRect.y + boundingRect.height + margin; }; - LGraph.calculateBounds = function(nodes6) { + LGraph.calculateBounds = function(nodes5) { var left3 = Integer.MAX_VALUE; var right3 = -Integer.MAX_VALUE; var top2 = Integer.MAX_VALUE; @@ -142382,9 +144601,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var nodeRight; var nodeTop; var nodeBottom; - var s2 = nodes6.length; + var s2 = nodes5.length; for (var i2 = 0; i2 < s2; i2++) { - var lNode = nodes6[i2]; + var lNode = nodes5[i2]; nodeLeft = lNode.getLeft(); nodeRight = lNode.getRight(); nodeTop = lNode.getTop(); @@ -142419,17 +144638,17 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return this.estimatedSize; }; LGraph.prototype.calcEstimatedSize = function() { - var size5 = 0; - var nodes6 = this.nodes; - var s2 = nodes6.length; + var size4 = 0; + var nodes5 = this.nodes; + var s2 = nodes5.length; for (var i2 = 0; i2 < s2; i2++) { - var lNode = nodes6[i2]; - size5 += lNode.calcEstimatedSize(); + var lNode = nodes5[i2]; + size4 += lNode.calcEstimatedSize(); } - if (size5 == 0) { + if (size4 == 0) { this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE; } else { - this.estimatedSize = size5 / Math.sqrt(this.nodes.length); + this.estimatedSize = size4 / Math.sqrt(this.nodes.length); } return this.estimatedSize; }; @@ -142452,8 +144671,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; while (queue.length !== 0) { currentNode = queue.shift(); neighborEdges = currentNode.getEdges(); - var size5 = neighborEdges.length; - for (var i2 = 0; i2 < size5; i2++) { + var size4 = neighborEdges.length; + for (var i2 = 0; i2 < size4; i2++) { var neighborEdge = neighborEdges[i2]; currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this); if (currentNeighbor != null && !visited.has(currentNeighbor)) { @@ -142479,10 +144698,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } }; module3.exports = LGraph; - }, + }), /* 7 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var LGraph; var LEdge = __webpack_require__(1); @@ -142496,8 +144715,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; LGraphManager.prototype.addRoot = function() { var ngraph = this.layout.newGraph(); var nnode = this.layout.newNode(null); - var root4 = this.add(ngraph, nnode); - this.setRootGraph(root4); + var root3 = this.add(ngraph, nnode); + this.setRootGraph(root3); return this.rootGraph; }; LGraphManager.prototype.add = function(newGraph, parentNode, newEdge, sourceNode, targetNode) { @@ -142796,10 +145015,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; depth = 1; } var node2; - var nodes6 = graph.getNodes(); - var s2 = nodes6.length; + var nodes5 = graph.getNodes(); + var s2 = nodes5.length; for (var i2 = 0; i2 < s2; i2++) { - node2 = nodes6[i2]; + node2 = nodes5[i2]; node2.inclusionTreeDepth = depth; if (node2.child != null) { this.calcInclusionTreeDepths(node2.child, depth + 1); @@ -142822,10 +145041,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return false; }; module3.exports = LGraphManager; - }, + }), /* 8 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var Point3 = __webpack_require__(12); function IGeometry() { @@ -143085,22 +145304,22 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var y32 = f1.y; var x42 = f2.x; var y42 = f2.y; - var x5 = void 0, y5 = void 0; - var a1 = void 0, a2 = void 0, b1 = void 0, b2 = void 0, c1 = void 0, c22 = void 0; + var x5 = void 0, y6 = void 0; + var a1 = void 0, a2 = void 0, b1 = void 0, b22 = void 0, c1 = void 0, c22 = void 0; var denom = void 0; a1 = y22 - y1; b1 = x1 - x22; c1 = x22 * y1 - x1 * y22; a2 = y42 - y32; - b2 = x32 - x42; + b22 = x32 - x42; c22 = x42 * y32 - x32 * y42; - denom = a1 * b2 - a2 * b1; + denom = a1 * b22 - a2 * b1; if (denom === 0) { return null; } - x5 = (b1 * c22 - b2 * c1) / denom; - y5 = (a2 * c1 - a1 * c22) / denom; - return new Point3(x5, y5); + x5 = (b1 * c22 - b22 * c1) / denom; + y6 = (a2 * c1 - a1 * c22) / denom; + return new Point3(x5, y6); }; IGeometry.angleOfVector = function(Cx, Cy, Nx, Ny) { var C_angle = void 0; @@ -143120,30 +145339,30 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }; IGeometry.doIntersect = function(p1, p22, p3, p4) { var a2 = p1.x; - var b2 = p1.y; + var b3 = p1.y; var c3 = p22.x; - var d2 = p22.y; + var d3 = p22.y; var p5 = p3.x; - var q2 = p3.y; + var q3 = p3.y; var r2 = p4.x; var s2 = p4.y; - var det = (c3 - a2) * (s2 - q2) - (r2 - p5) * (d2 - b2); + var det = (c3 - a2) * (s2 - q3) - (r2 - p5) * (d3 - b3); if (det === 0) { return false; } else { - var lambda = ((s2 - q2) * (r2 - a2) + (p5 - r2) * (s2 - b2)) / det; - var gamma2 = ((b2 - d2) * (r2 - a2) + (c3 - a2) * (s2 - b2)) / det; + var lambda = ((s2 - q3) * (r2 - a2) + (p5 - r2) * (s2 - b3)) / det; + var gamma2 = ((b3 - d3) * (r2 - a2) + (c3 - a2) * (s2 - b3)) / det; return 0 < lambda && lambda < 1 && 0 < gamma2 && gamma2 < 1; } }; IGeometry.findCircleLineIntersections = function(Ex, Ey, Lx, Ly, Cx, Cy, r2) { var a2 = (Lx - Ex) * (Lx - Ex) + (Ly - Ey) * (Ly - Ey); - var b2 = 2 * ((Ex - Cx) * (Lx - Ex) + (Ey - Cy) * (Ly - Ey)); + var b3 = 2 * ((Ex - Cx) * (Lx - Ex) + (Ey - Cy) * (Ly - Ey)); var c3 = (Ex - Cx) * (Ex - Cx) + (Ey - Cy) * (Ey - Cy) - r2 * r2; - var disc = b2 * b2 - 4 * a2 * c3; + var disc = b3 * b3 - 4 * a2 * c3; if (disc >= 0) { - var t13 = (-b2 + Math.sqrt(b2 * b2 - 4 * a2 * c3)) / (2 * a2); - var t22 = (-b2 - Math.sqrt(b2 * b2 - 4 * a2 * c3)) / (2 * a2); + var t13 = (-b3 + Math.sqrt(b3 * b3 - 4 * a2 * c3)) / (2 * a2); + var t22 = (-b3 - Math.sqrt(b3 * b3 - 4 * a2 * c3)) / (2 * a2); var intersections = null; if (t13 >= 0 && t13 <= 1) { return [t13]; @@ -143159,10 +145378,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; IGeometry.TWO_PI = 2 * Math.PI; IGeometry.THREE_PI = 3 * Math.PI; module3.exports = IGeometry; - }, + }), /* 9 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; function IMath() { } @@ -143183,10 +145402,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return value2 < 0 ? Math.floor(value2) : Math.ceil(value2); }; module3.exports = IMath; - }, + }), /* 10 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; function Integer() { } @@ -143194,12 +145413,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; Integer.MAX_VALUE = 2147483647; Integer.MIN_VALUE = -2147483648; module3.exports = Integer; - }, + }), /* 11 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; - var _createClass2 = /* @__PURE__ */ function() { + var _createClass2 = /* @__PURE__ */ (function() { function defineProperties(target, props) { for (var i2 = 0; i2 < props.length; i2++) { var descriptor = props[i2]; @@ -143215,7 +145434,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; - }(); + })(); function _classCallCheck2(instance2, Constructor) { if (!(instance2 instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); @@ -143225,39 +145444,39 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var nodeFrom = /* @__PURE__ */ __name(function nodeFrom2(value2) { return { value: value2, next: null, prev: null }; }, "nodeFrom"); - var add3 = /* @__PURE__ */ __name(function add4(prev2, node2, next3, list2) { + var add3 = /* @__PURE__ */ __name(function add4(prev2, node2, next3, list) { if (prev2 !== null) { prev2.next = node2; } else { - list2.head = node2; + list.head = node2; } if (next3 !== null) { next3.prev = node2; } else { - list2.tail = node2; + list.tail = node2; } node2.prev = prev2; node2.next = next3; - list2.length++; + list.length++; return node2; }, "add"); - var _remove = /* @__PURE__ */ __name(function _remove2(node2, list2) { + var _remove = /* @__PURE__ */ __name(function _remove2(node2, list) { var prev2 = node2.prev, next3 = node2.next; if (prev2 !== null) { prev2.next = next3; } else { - list2.head = next3; + list.head = next3; } if (next3 !== null) { next3.prev = prev2; } else { - list2.tail = prev2; + list.tail = prev2; } node2.prev = node2.next = null; - list2.length--; + list.length--; return node2; }, "_remove"); - var LinkedList = function() { + var LinkedList = (function() { function LinkedList2(vals) { var _this = this; _classCallCheck2(this, LinkedList2); @@ -143273,7 +145492,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; __name(LinkedList2, "LinkedList"); _createClass2(LinkedList2, [{ key: "size", - value: /* @__PURE__ */ __name(function size5() { + value: /* @__PURE__ */ __name(function size4() { return this.length; }, "size") }, { @@ -143359,23 +145578,23 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }, "set_object_at") }]); return LinkedList2; - }(); + })(); module3.exports = LinkedList; - }, + }), /* 12 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; - function Point3(x5, y5, p3) { + function Point3(x5, y6, p3) { this.x = null; this.y = null; - if (x5 == null && y5 == null && p3 == null) { + if (x5 == null && y6 == null && p3 == null) { this.x = 0; this.y = 0; - } else if (typeof x5 == "number" && typeof y5 == "number" && p3 == null) { + } else if (typeof x5 == "number" && typeof y6 == "number" && p3 == null) { this.x = x5; - this.y = y5; - } else if (x5.constructor.name == "Point" && y5 == null && p3 == null) { + this.y = y6; + } else if (x5.constructor.name == "Point" && y6 == null && p3 == null) { p3 = x5; this.x = p3.x; this.y = p3.y; @@ -143391,22 +145610,22 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; Point3.prototype.getLocation = function() { return new Point3(this.x, this.y); }; - Point3.prototype.setLocation = function(x5, y5, p3) { - if (x5.constructor.name == "Point" && y5 == null && p3 == null) { + Point3.prototype.setLocation = function(x5, y6, p3) { + if (x5.constructor.name == "Point" && y6 == null && p3 == null) { p3 = x5; this.setLocation(p3.x, p3.y); - } else if (typeof x5 == "number" && typeof y5 == "number" && p3 == null) { - if (parseInt(x5) == x5 && parseInt(y5) == y5) { - this.move(x5, y5); + } else if (typeof x5 == "number" && typeof y6 == "number" && p3 == null) { + if (parseInt(x5) == x5 && parseInt(y6) == y6) { + this.move(x5, y6); } else { this.x = Math.floor(x5 + 0.5); - this.y = Math.floor(y5 + 0.5); + this.y = Math.floor(y6 + 0.5); } } }; - Point3.prototype.move = function(x5, y5) { + Point3.prototype.move = function(x5, y6) { this.x = x5; - this.y = y5; + this.y = y6; }; Point3.prototype.translate = function(dx, dy) { this.x += dx; @@ -143423,19 +145642,19 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return new Point3().constructor.name + "[x=" + this.x + ",y=" + this.y + "]"; }; module3.exports = Point3; - }, + }), /* 13 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; - function RectangleD(x5, y5, width3, height2) { + function RectangleD(x5, y6, width3, height2) { this.x = 0; this.y = 0; this.width = 0; this.height = 0; - if (x5 != null && y5 != null && width3 != null && height2 != null) { + if (x5 != null && y6 != null && width3 != null && height2 != null) { this.x = x5; - this.y = y5; + this.y = y6; this.width = width3; this.height = height2; } @@ -143450,8 +145669,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; RectangleD.prototype.getY = function() { return this.y; }; - RectangleD.prototype.setY = function(y5) { - this.y = y5; + RectangleD.prototype.setY = function(y6) { + this.y = y6; }; RectangleD.prototype.getWidth = function() { return this.width; @@ -143511,10 +145730,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return this.height / 2; }; module3.exports = RectangleD; - }, + }), /* 14 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { return typeof obj; @@ -143536,19 +145755,19 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; UniqueIDGeneretor.lastID++; return obj.uniqueID; }; - UniqueIDGeneretor.getString = function(id29) { - if (id29 == null) id29 = UniqueIDGeneretor.lastID; - return "Object#" + id29; + UniqueIDGeneretor.getString = function(id30) { + if (id30 == null) id30 = UniqueIDGeneretor.lastID; + return "Object#" + id30; }; UniqueIDGeneretor.isPrimitive = function(arg) { var type3 = typeof arg === "undefined" ? "undefined" : _typeof2(arg); return arg == null || type3 != "object" && type3 != "function"; }; module3.exports = UniqueIDGeneretor; - }, + }), /* 15 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; function _toConsumableArray2(arr) { if (Array.isArray(arr)) { @@ -143663,9 +145882,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; edge = allEdges[i2]; } var node2; - var nodes6 = this.graphManager.getRoot().getNodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - node2 = nodes6[i2]; + var nodes5 = this.graphManager.getRoot().getNodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + node2 = nodes5[i2]; } this.update(this.graphManager.getRoot()); } @@ -143676,9 +145895,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } else if (obj instanceof LNode) { var node2 = obj; if (node2.getChild() != null) { - var nodes6 = node2.getChild().getNodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - update(nodes6[i2]); + var nodes5 = node2.getChild().getNodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + update(nodes5[i2]); } } if (node2.vGraphObject != null) { @@ -143724,10 +145943,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; trans.setWorldOrgY(newLeftTop.y); trans.setDeviceOrgX(leftTop.x); trans.setDeviceOrgY(leftTop.y); - var nodes6 = this.getAllNodes(); + var nodes5 = this.getAllNodes(); var node2; - for (var i2 = 0; i2 < nodes6.length; i2++) { - node2 = nodes6[i2]; + for (var i2 = 0; i2 < nodes5.length; i2++) { + node2 = nodes5[i2]; node2.transform(trans); } } @@ -143740,9 +145959,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } else { var lNode; var childGraph; - var nodes6 = graph.getNodes(); - for (var i2 = 0; i2 < nodes6.length; i2++) { - lNode = nodes6[i2]; + var nodes5 = graph.getNodes(); + for (var i2 = 0; i2 < nodes5.length; i2++) { + lNode = nodes5[i2]; childGraph = lNode.getChild(); if (childGraph == null) { lNode.scatter(); @@ -143866,30 +146085,30 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } return value2; } else { - var a2, b2; + var a2, b3; if (sliderValue <= 50) { a2 = 9 * defaultValue / 500; - b2 = defaultValue / 10; + b3 = defaultValue / 10; } else { a2 = 9 * defaultValue / 50; - b2 = -8 * defaultValue; + b3 = -8 * defaultValue; } - return a2 * sliderValue + b2; + return a2 * sliderValue + b3; } }; - Layout2.findCenterOfTree = function(nodes6) { - var list2 = []; - list2 = list2.concat(nodes6); + Layout2.findCenterOfTree = function(nodes5) { + var list = []; + list = list.concat(nodes5); var removedNodes = []; var remainingDegrees = /* @__PURE__ */ new Map(); var foundCenter = false; var centerNode = null; - if (list2.length == 1 || list2.length == 2) { + if (list.length == 1 || list.length == 2) { foundCenter = true; - centerNode = list2[0]; + centerNode = list[0]; } - for (var i2 = 0; i2 < list2.length; i2++) { - var node2 = list2[i2]; + for (var i2 = 0; i2 < list.length; i2++) { + var node2 = list[i2]; var degree = node2.getNeighborsList().size; remainingDegrees.set(node2, node2.getNeighborsList().size); if (degree == 1) { @@ -143902,11 +146121,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var tempList2 = []; tempList2 = tempList2.concat(tempList); tempList = []; - for (var i2 = 0; i2 < list2.length; i2++) { - var node2 = list2[i2]; - var index = list2.indexOf(node2); + for (var i2 = 0; i2 < list.length; i2++) { + var node2 = list[i2]; + var index = list.indexOf(node2); if (index >= 0) { - list2.splice(index, 1); + list.splice(index, 1); } var neighbours = node2.getNeighborsList(); neighbours.forEach(function(neighbour) { @@ -143921,9 +146140,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); } removedNodes = removedNodes.concat(tempList); - if (list2.length == 1 || list2.length == 2) { + if (list.length == 1 || list.length == 2) { foundCenter = true; - centerNode = list2[0]; + centerNode = list[0]; } } return centerNode; @@ -143932,10 +146151,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; this.graphManager = gm; }; module3.exports = Layout2; - }, + }), /* 16 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; function RandomSeed() { } @@ -143947,13 +146166,13 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return RandomSeed.x - Math.floor(RandomSeed.x); }; module3.exports = RandomSeed; - }, + }), /* 17 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var PointD = __webpack_require__(5); - function Transform2(x5, y5) { + function Transform2(x5, y6) { this.lworldOrgX = 0; this.lworldOrgY = 0; this.ldeviceOrgX = 0; @@ -144020,11 +146239,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } return xDevice; }; - Transform2.prototype.transformY = function(y5) { + Transform2.prototype.transformY = function(y6) { var yDevice = 0; var worldExtY = this.lworldExtY; if (worldExtY != 0) { - yDevice = this.ldeviceOrgY + (y5 - this.lworldOrgY) * this.ldeviceExtY / worldExtY; + yDevice = this.ldeviceOrgY + (y6 - this.lworldOrgY) * this.ldeviceExtY / worldExtY; } return yDevice; }; @@ -144036,11 +146255,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } return xWorld; }; - Transform2.prototype.inverseTransformY = function(y5) { + Transform2.prototype.inverseTransformY = function(y6) { var yWorld = 0; var deviceExtY = this.ldeviceExtY; if (deviceExtY != 0) { - yWorld = this.lworldOrgY + (y5 - this.ldeviceOrgY) * this.lworldExtY / deviceExtY; + yWorld = this.lworldOrgY + (y6 - this.ldeviceOrgY) * this.lworldExtY / deviceExtY; } return yWorld; }; @@ -144049,10 +146268,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return outPoint; }; module3.exports = Transform2; - }, + }), /* 18 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; function _toConsumableArray2(arr) { if (Array.isArray(arr)) { @@ -144153,7 +146372,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; FDLayout.prototype.calcRepulsionForces = function() { var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - var i2, j2; + var i2, j3; var nodeA, nodeB; var lNodes = this.getAllNodes(); var processedNodeSet; @@ -144170,8 +146389,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } else { for (i2 = 0; i2 < lNodes.length; i2++) { nodeA = lNodes[i2]; - for (j2 = i2 + 1; j2 < lNodes.length; j2++) { - nodeB = lNodes[j2]; + for (j3 = i2 + 1; j3 < lNodes.length; j3++) { + nodeB = lNodes[j3]; if (nodeA.getOwner() != nodeB.getOwner()) { continue; } @@ -144336,8 +146555,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; grid[i2] = new Array(sizeY); } for (var i2 = 0; i2 < sizeX; i2++) { - for (var j2 = 0; j2 < sizeY; j2++) { - grid[i2][j2] = new Array(); + for (var j3 = 0; j3 < sizeY; j3++) { + grid[i2][j3] = new Array(); } } return grid; @@ -144352,8 +146571,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; startY2 = parseInt(Math.floor((v3.getRect().y - top2) / this.repulsionRange)); finishY = parseInt(Math.floor((v3.getRect().height + v3.getRect().y - top2) / this.repulsionRange)); for (var i2 = startX2; i2 <= finishX; i2++) { - for (var j2 = startY2; j2 <= finishY; j2++) { - this.grid[i2][j2].push(v3); + for (var j3 = startY2; j3 <= finishY; j3++) { + this.grid[i2][j3].push(v3); v3.setGridCoordinates(startX2, finishX, startY2, finishY); } } @@ -144375,10 +146594,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var nodeB; var grid = this.grid; for (var i2 = nodeA.startX - 1; i2 < nodeA.finishX + 2; i2++) { - for (var j2 = nodeA.startY - 1; j2 < nodeA.finishY + 2; j2++) { - if (!(i2 < 0 || j2 < 0 || i2 >= grid.length || j2 >= grid[0].length)) { - for (var k2 = 0; k2 < grid[i2][j2].length; k2++) { - nodeB = grid[i2][j2][k2]; + for (var j3 = nodeA.startY - 1; j3 < nodeA.finishY + 2; j3++) { + if (!(i2 < 0 || j3 < 0 || i2 >= grid.length || j3 >= grid[0].length)) { + for (var k2 = 0; k2 < grid[i2][j3].length; k2++) { + nodeB = grid[i2][j3][k2]; if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) { continue; } @@ -144403,10 +146622,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return 0; }; module3.exports = FDLayout; - }, + }), /* 19 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var LEdge = __webpack_require__(1); var FDLayoutConstants = __webpack_require__(4); @@ -144421,15 +146640,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; FDLayoutEdge[prop] = LEdge[prop]; } module3.exports = FDLayoutEdge; - }, + }), /* 20 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var LNode = __webpack_require__(3); var FDLayoutConstants = __webpack_require__(4); - function FDLayoutNode(gm, loc, size5, vNode) { - LNode.call(this, gm, loc, size5, vNode); + function FDLayoutNode(gm, loc, size4, vNode) { + LNode.call(this, gm, loc, size4, vNode); this.nodeRepulsion = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH; this.springForceX = 0; this.springForceY = 0; @@ -144457,10 +146676,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; this.finishY = _finishY; }; module3.exports = FDLayoutNode; - }, + }), /* 21 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; function DimensionD2(width3, height2) { this.width = 0; @@ -144484,10 +146703,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; this.height = height2; }; module3.exports = DimensionD2; - }, + }), /* 22 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var UniqueIDGeneretor = __webpack_require__(14); function HashMap() { @@ -144514,10 +146733,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return this.keys; }; module3.exports = HashMap; - }, + }), /* 23 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var UniqueIDGeneretor = __webpack_require__(14); function HashSet() { @@ -144544,28 +146763,28 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; HashSet.prototype.size = function() { return Object.keys(this.set).length; }; - HashSet.prototype.addAllTo = function(list2) { - var keys3 = Object.keys(this.set); - var length2 = keys3.length; + HashSet.prototype.addAllTo = function(list) { + var keys2 = Object.keys(this.set); + var length2 = keys2.length; for (var i2 = 0; i2 < length2; i2++) { - list2.push(this.set[keys3[i2]]); + list.push(this.set[keys2[i2]]); } }; HashSet.prototype.size = function() { return Object.keys(this.set).length; }; - HashSet.prototype.addAll = function(list2) { - var s2 = list2.length; + HashSet.prototype.addAll = function(list) { + var s2 = list.length; for (var i2 = 0; i2 < s2; i2++) { - var v3 = list2[i2]; + var v3 = list[i2]; this.add(v3); } }; module3.exports = HashSet; - }, + }), /* 24 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; function Matrix() { } @@ -144574,10 +146793,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var result = []; for (var i2 = 0; i2 < array1.length; i2++) { result[i2] = []; - for (var j2 = 0; j2 < array22[0].length; j2++) { - result[i2][j2] = 0; + for (var j3 = 0; j3 < array22[0].length; j3++) { + result[i2][j3] = 0; for (var k2 = 0; k2 < array1[0].length; k2++) { - result[i2][j2] += array1[i2][k2] * array22[k2][j2]; + result[i2][j3] += array1[i2][k2] * array22[k2][j3]; } } } @@ -144587,8 +146806,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var result = []; for (var i2 = 0; i2 < array4[0].length; i2++) { result[i2] = []; - for (var j2 = 0; j2 < array4.length; j2++) { - result[i2][j2] = array4[j2][i2]; + for (var j3 = 0; j3 < array4.length; j3++) { + result[i2][j3] = array4[j3][i2]; } } return result; @@ -144637,14 +146856,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } return result; }; - Matrix.multL = function(array4, C2, INV) { + Matrix.multL = function(array4, C3, INV) { var result = []; var temp1 = []; var temp2 = []; - for (var i2 = 0; i2 < C2[0].length; i2++) { + for (var i2 = 0; i2 < C3[0].length; i2++) { var sum2 = 0; - for (var j2 = 0; j2 < C2.length; j2++) { - sum2 += -0.5 * C2[j2][i2] * array4[j2]; + for (var j3 = 0; j3 < C3.length; j3++) { + sum2 += -0.5 * C3[j3][i2] * array4[j3]; } temp1[i2] = sum2; } @@ -144655,22 +146874,22 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } temp2[_i2] = _sum; } - for (var _i3 = 0; _i3 < C2.length; _i3++) { + for (var _i3 = 0; _i3 < C3.length; _i3++) { var _sum2 = 0; - for (var _j2 = 0; _j2 < C2[0].length; _j2++) { - _sum2 += C2[_i3][_j2] * temp2[_j2]; + for (var _j2 = 0; _j2 < C3[0].length; _j2++) { + _sum2 += C3[_i3][_j2] * temp2[_j2]; } result[_i3] = _sum2; } return result; }; module3.exports = Matrix; - }, + }), /* 25 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; - var _createClass2 = /* @__PURE__ */ function() { + var _createClass2 = /* @__PURE__ */ (function() { function defineProperties(target, props) { for (var i2 = 0; i2 < props.length; i2++) { var descriptor = props[i2]; @@ -144686,7 +146905,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; - }(); + })(); function _classCallCheck2(instance2, Constructor) { if (!(instance2 instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); @@ -144694,7 +146913,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } __name(_classCallCheck2, "_classCallCheck"); var LinkedList = __webpack_require__(11); - var Quicksort = function() { + var Quicksort = (function() { function Quicksort2(A2, compareFunction) { _classCallCheck2(this, Quicksort2); if (compareFunction !== null || compareFunction !== void 0) this.compareFunction = this._defaultCompareFunction; @@ -144708,9 +146927,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; key: "_quicksort", value: /* @__PURE__ */ __name(function _quicksort(A2, p3, r2) { if (p3 < r2) { - var q2 = this._partition(A2, p3, r2); - this._quicksort(A2, p3, q2); - this._quicksort(A2, q2 + 1, r2); + var q3 = this._partition(A2, p3, r2); + this._quicksort(A2, p3, q3); + this._quicksort(A2, q3 + 1, r2); } }, "_quicksort") }, { @@ -144718,19 +146937,19 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; value: /* @__PURE__ */ __name(function _partition(A2, p3, r2) { var x5 = this._get(A2, p3); var i2 = p3; - var j2 = r2; + var j3 = r2; while (true) { - while (this.compareFunction(x5, this._get(A2, j2))) { - j2--; + while (this.compareFunction(x5, this._get(A2, j3))) { + j3--; } while (this.compareFunction(this._get(A2, i2), x5)) { i2++; } - if (i2 < j2) { - this._swap(A2, i2, j2); + if (i2 < j3) { + this._swap(A2, i2, j3); i2++; - j2--; - } else return j2; + j3--; + } else return j3; } }, "_partition") }, { @@ -144747,24 +146966,24 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }, "_set") }, { key: "_swap", - value: /* @__PURE__ */ __name(function _swap(A2, i2, j2) { + value: /* @__PURE__ */ __name(function _swap(A2, i2, j3) { var temp = this._get(A2, i2); - this._set(A2, i2, this._get(A2, j2)); - this._set(A2, j2, temp); + this._set(A2, i2, this._get(A2, j3)); + this._set(A2, j3, temp); }, "_swap") }, { key: "_defaultCompareFunction", - value: /* @__PURE__ */ __name(function _defaultCompareFunction(a2, b2) { - return b2 > a2; + value: /* @__PURE__ */ __name(function _defaultCompareFunction(a2, b3) { + return b3 > a2; }, "_defaultCompareFunction") }]); return Quicksort2; - }(); + })(); module3.exports = Quicksort; - }, + }), /* 26 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; function SVD() { } @@ -144779,14 +146998,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; this.m = A2.length; this.n = A2[0].length; var nu = Math.min(this.m, this.n); - this.s = function(s2) { + this.s = (function(s2) { var a2 = []; while (s2-- > 0) { a2.push(0); } return a2; - }(Math.min(this.m + 1, this.n)); - this.U = function(dims) { + })(Math.min(this.m + 1, this.n)); + this.U = (function(dims) { var allocate = /* @__PURE__ */ __name(function allocate2(dims2) { if (dims2.length == 0) { return 0; @@ -144799,8 +147018,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } }, "allocate"); return allocate(dims); - }([this.m, nu]); - this.V = function(dims) { + })([this.m, nu]); + this.V = (function(dims) { var allocate = /* @__PURE__ */ __name(function allocate2(dims2) { if (dims2.length == 0) { return 0; @@ -144813,21 +147032,21 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } }, "allocate"); return allocate(dims); - }([this.n, this.n]); - var e3 = function(s2) { + })([this.n, this.n]); + var e3 = (function(s2) { var a2 = []; while (s2-- > 0) { a2.push(0); } return a2; - }(this.n); - var work = function(s2) { + })(this.n); + var work = (function(s2) { var a2 = []; while (s2-- > 0) { a2.push(0); } return a2; - }(this.m); + })(this.m); var wantu = true; var wantv = true; var nct = Math.min(this.m - 1, this.n); @@ -144851,27 +147070,27 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } this.s[k2] = -this.s[k2]; } - for (var j2 = k2 + 1; j2 < this.n; j2++) { - if (/* @__PURE__ */ function(lhs, rhs) { + for (var j3 = k2 + 1; j3 < this.n; j3++) { + if (/* @__PURE__ */ (function(lhs, rhs) { return lhs && rhs; - }(k2 < nct, this.s[k2] !== 0)) { + })(k2 < nct, this.s[k2] !== 0)) { var t4 = 0; for (var _i2 = k2; _i2 < this.m; _i2++) { - t4 += A2[_i2][k2] * A2[_i2][j2]; + t4 += A2[_i2][k2] * A2[_i2][j3]; } ; t4 = -t4 / A2[k2][k2]; for (var _i3 = k2; _i3 < this.m; _i3++) { - A2[_i3][j2] += t4 * A2[_i3][k2]; + A2[_i3][j3] += t4 * A2[_i3][k2]; } ; } - e3[j2] = A2[k2][j2]; + e3[j3] = A2[k2][j3]; } ; - if (/* @__PURE__ */ function(lhs, rhs) { + if (/* @__PURE__ */ (function(lhs, rhs) { return lhs && rhs; - }(wantu, k2 < nct)) { + })(wantu, k2 < nct)) { for (var _i4 = k2; _i4 < this.m; _i4++) { this.U[_i4][k2] = A2[_i4][k2]; } @@ -144894,9 +147113,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; e3[k2 + 1] += 1; } e3[k2] = -e3[k2]; - if (/* @__PURE__ */ function(lhs, rhs) { + if (/* @__PURE__ */ (function(lhs, rhs) { return lhs && rhs; - }(k2 + 1 < this.m, e3[k2] !== 0)) { + })(k2 + 1 < this.m, e3[k2] !== 0)) { for (var _i7 = k2 + 1; _i7 < this.m; _i7++) { work[_i7] = 0; } @@ -144982,9 +147201,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } if (wantv) { for (var _k2 = this.n - 1; _k2 >= 0; _k2--) { - if (/* @__PURE__ */ function(lhs, rhs) { + if (/* @__PURE__ */ (function(lhs, rhs) { return lhs && rhs; - }(_k2 < nrt, e3[_k2] !== 0)) { + })(_k2 < nrt, e3[_k2] !== 0)) { for (var _j5 = _k2 + 1; _j5 < nu; _j5++) { var _t3 = 0; for (var _i17 = _k2 + 1; _i17 < this.n; _i17++) { @@ -145108,17 +147327,17 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var epm1 = e3[p3 - 2] / scale2; var sk = this.s[_k3] / scale2; var ek = e3[_k3] / scale2; - var b2 = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2; + var b3 = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2; var c3 = sp * epm1 * (sp * epm1); var shift2 = 0; - if (/* @__PURE__ */ function(lhs, rhs) { + if (/* @__PURE__ */ (function(lhs, rhs) { return lhs || rhs; - }(b2 !== 0, c3 !== 0)) { - shift2 = Math.sqrt(b2 * b2 + c3); - if (b2 < 0) { + })(b3 !== 0, c3 !== 0)) { + shift2 = Math.sqrt(b3 * b3 + c3); + if (b3 < 0) { shift2 = -shift2; } - shift2 = c3 / (b2 + shift2); + shift2 = c3 / (b3 + shift2); } var _f2 = (sk + sp) * (sk - sp) + shift2; var g2 = sk * ek; @@ -145212,26 +147431,26 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var result = { U: this.U, V: this.V, S: this.s }; return result; }; - SVD.hypot = function(a2, b2) { + SVD.hypot = function(a2, b3) { var r2 = void 0; - if (Math.abs(a2) > Math.abs(b2)) { - r2 = b2 / a2; + if (Math.abs(a2) > Math.abs(b3)) { + r2 = b3 / a2; r2 = Math.abs(a2) * Math.sqrt(1 + r2 * r2); - } else if (b2 != 0) { - r2 = a2 / b2; - r2 = Math.abs(b2) * Math.sqrt(1 + r2 * r2); + } else if (b3 != 0) { + r2 = a2 / b3; + r2 = Math.abs(b3) * Math.sqrt(1 + r2 * r2); } else { r2 = 0; } return r2; }; module3.exports = SVD; - }, + }), /* 27 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; - var _createClass2 = /* @__PURE__ */ function() { + var _createClass2 = /* @__PURE__ */ (function() { function defineProperties(target, props) { for (var i2 = 0; i2 < props.length; i2++) { var descriptor = props[i2]; @@ -145247,14 +147466,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; - }(); + })(); function _classCallCheck2(instance2, Constructor) { if (!(instance2 instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } __name(_classCallCheck2, "_classCallCheck"); - var NeedlemanWunsch = function() { + var NeedlemanWunsch = (function() { function NeedlemanWunsch2(sequence1, sequence2) { var match_score = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1; var mismatch_penalty = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : -1; @@ -145270,8 +147489,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; this.grid = new Array(this.iMax); for (var i2 = 0; i2 < this.iMax; i2++) { this.grid[i2] = new Array(this.jMax); - for (var j2 = 0; j2 < this.jMax; j2++) { - this.grid[i2][j2] = 0; + for (var j3 = 0; j3 < this.jMax; j3++) { + this.grid[i2][j3] = 0; } } this.tracebackGrid = new Array(this.iMax); @@ -145300,9 +147519,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }, { key: "computeGrids", value: /* @__PURE__ */ __name(function computeGrids() { - for (var j2 = 1; j2 < this.jMax; j2++) { - this.grid[0][j2] = this.grid[0][j2 - 1] + this.gap_penalty; - this.tracebackGrid[0][j2] = [false, false, true]; + for (var j3 = 1; j3 < this.jMax; j3++) { + this.grid[0][j3] = this.grid[0][j3 - 1] + this.gap_penalty; + this.tracebackGrid[0][j3] = [false, false, true]; } for (var i2 = 1; i2 < this.iMax; i2++) { this.grid[i2][0] = this.grid[i2 - 1][0] + this.gap_penalty; @@ -145382,12 +147601,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }, "arrayAllMaxIndexes") }]); return NeedlemanWunsch2; - }(); + })(); module3.exports = NeedlemanWunsch; - }, + }), /* 28 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; var layoutBase = /* @__PURE__ */ __name(function layoutBase2() { return; @@ -145421,10 +147640,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; layoutBase.Matrix = __webpack_require__(24); layoutBase.SVD = __webpack_require__(26); module3.exports = layoutBase; - }, + }), /* 29 */ /***/ - function(module3, exports3, __webpack_require__) { + (function(module3, exports3, __webpack_require__) { "use strict"; function Emitter4() { this.listeners = []; @@ -145439,22 +147658,22 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }; p3.removeListener = function(event3, callback) { for (var i2 = this.listeners.length; i2 >= 0; i2--) { - var l2 = this.listeners[i2]; - if (l2.event === event3 && l2.callback === callback) { + var l4 = this.listeners[i2]; + if (l4.event === event3 && l4.callback === callback) { this.listeners.splice(i2, 1); } } }; - p3.emit = function(event3, data6) { + p3.emit = function(event3, data5) { for (var i2 = 0; i2 < this.listeners.length; i2++) { - var l2 = this.listeners[i2]; - if (event3 === l2.event) { - l2.callback(data6); + var l4 = this.listeners[i2]; + if (event3 === l4.event) { + l4.callback(data5); } } }; module3.exports = Emitter4; - } + }) /******/ ]) ); @@ -145466,7 +147685,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var require_cose_base2 = __commonJS({ "../../node_modules/.pnpm/cose-base@2.2.0/node_modules/cose-base/cose-base.js"(exports2, module2) { "use strict"; - (/* @__PURE__ */ __name(function webpackUniversalModuleDefinition(root4, factory) { + (/* @__PURE__ */ __name((function webpackUniversalModuleDefinition(root3, factory) { if (typeof exports2 === "object" && typeof module2 === "object") module2.exports = factory(require_layout_base2()); else if (typeof define === "function" && define.amd) @@ -145474,8 +147693,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; else if (typeof exports2 === "object") exports2["coseBase"] = factory(require_layout_base2()); else - root4["coseBase"] = factory(root4["layoutBase"]); - }, "webpackUniversalModuleDefinition"))(exports2, function(__WEBPACK_EXTERNAL_MODULE__551__) { + root3["coseBase"] = factory(root3["layoutBase"]); + }), "webpackUniversalModuleDefinition"))(exports2, function(__WEBPACK_EXTERNAL_MODULE__551__) { return ( /******/ (() => { @@ -145484,7 +147703,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; /***/ 45: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { + ((module3, __unused_webpack_exports, __webpack_require__2) => { var coseBase = {}; coseBase.layoutBase = __webpack_require__2(551); coseBase.CoSEConstants = __webpack_require__2(806); @@ -145495,12 +147714,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; coseBase.CoSENode = __webpack_require__2(991); coseBase.ConstraintHandler = __webpack_require__2(902); module3.exports = coseBase; - } + }) ), /***/ 806: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { + ((module3, __unused_webpack_exports, __webpack_require__2) => { var FDLayoutConstants = __webpack_require__2(551).FDLayoutConstants; function CoSEConstants() { } @@ -145521,12 +147740,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = true; CoSEConstants.PURE_INCREMENTAL = CoSEConstants.DEFAULT_INCREMENTAL; module3.exports = CoSEConstants; - } + }) ), /***/ 767: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { + ((module3, __unused_webpack_exports, __webpack_require__2) => { var FDLayoutEdge = __webpack_require__2(551).FDLayoutEdge; function CoSEEdge(source, target, vEdge) { FDLayoutEdge.call(this, source, target, vEdge); @@ -145537,12 +147756,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; CoSEEdge[prop] = FDLayoutEdge[prop]; } module3.exports = CoSEEdge; - } + }) ), /***/ 880: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { + ((module3, __unused_webpack_exports, __webpack_require__2) => { var LGraph = __webpack_require__2(551).LGraph; function CoSEGraph(parent4, graphMgr, vGraph) { LGraph.call(this, parent4, graphMgr, vGraph); @@ -145553,12 +147772,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; CoSEGraph[prop] = LGraph[prop]; } module3.exports = CoSEGraph; - } + }) ), /***/ 578: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { + ((module3, __unused_webpack_exports, __webpack_require__2) => { var LGraphManager = __webpack_require__2(551).LGraphManager; function CoSEGraphManager(layout6) { LGraphManager.call(this, layout6); @@ -145569,12 +147788,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; CoSEGraphManager[prop] = LGraphManager[prop]; } module3.exports = CoSEGraphManager; - } + }) ), /***/ 765: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { + ((module3, __unused_webpack_exports, __webpack_require__2) => { var FDLayout = __webpack_require__2(551).FDLayout; var CoSEGraphManager = __webpack_require__2(578); var CoSEGraph = __webpack_require__2(880); @@ -145773,9 +147992,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var pData = {}; for (var i2 = 0; i2 < allNodes.length; i2++) { var rect3 = allNodes[i2].rect; - var id29 = allNodes[i2].id; - pData[id29] = { - id: id29, + var id30 = allNodes[i2].id; + pData[id30] = { + id: id30, x: rect3.getCenterX(), y: rect3.getCenterY(), w: rect3.width, @@ -145822,11 +148041,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; this.idToNodeMap.set(node2.id, node2); } var calculateCompoundWeight = /* @__PURE__ */ __name(function calculateCompoundWeight2(compoundNode) { - var nodes6 = compoundNode.getChild().getNodes(); + var nodes5 = compoundNode.getChild().getNodes(); var node3; var fixedNodeWeight2 = 0; - for (var i3 = 0; i3 < nodes6.length; i3++) { - node3 = nodes6[i3]; + for (var i3 = 0; i3 < nodes5.length; i3++) { + node3 = nodes5[i3]; if (node3.getChild() == null) { if (self2.fixedNodeSet.has(node3.id)) { fixedNodeWeight2 += 100; @@ -145894,12 +148113,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } if (CoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS) { this.shuffle = function(array4) { - var j2, x5, i3; + var j3, x5, i3; for (i3 = array4.length - 1; i3 >= 2 * array4.length / 3; i3--) { - j2 = Math.floor(Math.random() * (i3 + 1)); + j3 = Math.floor(Math.random() * (i3 + 1)); x5 = array4[i3]; - array4[i3] = array4[j2]; - array4[j2] = x5; + array4[i3] = array4[j3]; + array4[j3] = x5; } return array4; }; @@ -145995,30 +148214,30 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var isFixed = []; var queue = new LinkedList(); var visited = /* @__PURE__ */ new Set(); - var count = 0; + var count2 = 0; graph.forEach(function(value2, key) { if (!visited.has(key)) { - components3[count] = []; - isFixed[count] = false; + components3[count2] = []; + isFixed[count2] = false; var currentNode = key; queue.push(currentNode); visited.add(currentNode); - components3[count].push(currentNode); + components3[count2].push(currentNode); while (queue.length != 0) { currentNode = queue.shift(); if (fixedNodes.has(currentNode)) { - isFixed[count] = true; + isFixed[count2] = true; } var neighbors = graph.get(currentNode); neighbors.forEach(function(neighbor) { if (!visited.has(neighbor)) { queue.push(neighbor); visited.add(neighbor); - components3[count].push(neighbor); + components3[count2].push(neighbor); } }); } - count++; + count2++; } }); return { components: components3, isFixed }; @@ -146046,16 +148265,16 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var allVerticalAlignments = this.constraints.alignmentConstraint.vertical; for (var i2 = 0; i2 < allVerticalAlignments.length; i2++) { var totalDisplacementX = 0; - for (var j2 = 0; j2 < allVerticalAlignments[i2].length; j2++) { - if (this.fixedNodeSet.has(allVerticalAlignments[i2][j2])) { + for (var j3 = 0; j3 < allVerticalAlignments[i2].length; j3++) { + if (this.fixedNodeSet.has(allVerticalAlignments[i2][j3])) { totalDisplacementX = 0; break; } - totalDisplacementX += this.idToNodeMap.get(allVerticalAlignments[i2][j2]).displacementX; + totalDisplacementX += this.idToNodeMap.get(allVerticalAlignments[i2][j3]).displacementX; } var averageDisplacementX = totalDisplacementX / allVerticalAlignments[i2].length; - for (var j2 = 0; j2 < allVerticalAlignments[i2].length; j2++) { - this.idToNodeMap.get(allVerticalAlignments[i2][j2]).displacementX = averageDisplacementX; + for (var j3 = 0; j3 < allVerticalAlignments[i2].length; j3++) { + this.idToNodeMap.get(allVerticalAlignments[i2][j3]).displacementX = averageDisplacementX; } } } @@ -146063,16 +148282,16 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var allHorizontalAlignments = this.constraints.alignmentConstraint.horizontal; for (var i2 = 0; i2 < allHorizontalAlignments.length; i2++) { var totalDisplacementY = 0; - for (var j2 = 0; j2 < allHorizontalAlignments[i2].length; j2++) { - if (this.fixedNodeSet.has(allHorizontalAlignments[i2][j2])) { + for (var j3 = 0; j3 < allHorizontalAlignments[i2].length; j3++) { + if (this.fixedNodeSet.has(allHorizontalAlignments[i2][j3])) { totalDisplacementY = 0; break; } - totalDisplacementY += this.idToNodeMap.get(allHorizontalAlignments[i2][j2]).displacementY; + totalDisplacementY += this.idToNodeMap.get(allHorizontalAlignments[i2][j3]).displacementY; } var averageDisplacementY = totalDisplacementY / allHorizontalAlignments[i2].length; - for (var j2 = 0; j2 < allHorizontalAlignments[i2].length; j2++) { - this.idToNodeMap.get(allHorizontalAlignments[i2][j2]).displacementY = averageDisplacementY; + for (var j3 = 0; j3 < allHorizontalAlignments[i2].length; j3++) { + this.idToNodeMap.get(allHorizontalAlignments[i2][j3]).displacementY = averageDisplacementY; } } } @@ -146149,36 +148368,36 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; for (var i2 = 0; i2 < this.componentsOnHorizontal.length; i2++) { var component2 = this.componentsOnHorizontal[i2]; if (this.fixedComponentsOnHorizontal[i2]) { - for (var j2 = 0; j2 < component2.length; j2++) { - if (this.dummyToNodeForVerticalAlignment.has(component2[j2])) { - this.dummyToNodeForVerticalAlignment.get(component2[j2]).forEach(function(nodeId) { + for (var j3 = 0; j3 < component2.length; j3++) { + if (this.dummyToNodeForVerticalAlignment.has(component2[j3])) { + this.dummyToNodeForVerticalAlignment.get(component2[j3]).forEach(function(nodeId) { self2.idToNodeMap.get(nodeId).displacementX = 0; }); } else { - this.idToNodeMap.get(component2[j2]).displacementX = 0; + this.idToNodeMap.get(component2[j3]).displacementX = 0; } } } else { var sum2 = 0; - var count = 0; - for (var j2 = 0; j2 < component2.length; j2++) { - if (this.dummyToNodeForVerticalAlignment.has(component2[j2])) { - var actualNodes = this.dummyToNodeForVerticalAlignment.get(component2[j2]); + var count2 = 0; + for (var j3 = 0; j3 < component2.length; j3++) { + if (this.dummyToNodeForVerticalAlignment.has(component2[j3])) { + var actualNodes = this.dummyToNodeForVerticalAlignment.get(component2[j3]); sum2 += actualNodes.length * this.idToNodeMap.get(actualNodes[0]).displacementX; - count += actualNodes.length; + count2 += actualNodes.length; } else { - sum2 += this.idToNodeMap.get(component2[j2]).displacementX; - count++; + sum2 += this.idToNodeMap.get(component2[j3]).displacementX; + count2++; } } - var averageDisplacement = sum2 / count; - for (var j2 = 0; j2 < component2.length; j2++) { - if (this.dummyToNodeForVerticalAlignment.has(component2[j2])) { - this.dummyToNodeForVerticalAlignment.get(component2[j2]).forEach(function(nodeId) { + var averageDisplacement = sum2 / count2; + for (var j3 = 0; j3 < component2.length; j3++) { + if (this.dummyToNodeForVerticalAlignment.has(component2[j3])) { + this.dummyToNodeForVerticalAlignment.get(component2[j3]).forEach(function(nodeId) { self2.idToNodeMap.get(nodeId).displacementX = averageDisplacement; }); } else { - this.idToNodeMap.get(component2[j2]).displacementX = averageDisplacement; + this.idToNodeMap.get(component2[j3]).displacementX = averageDisplacement; } } } @@ -146186,36 +148405,36 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; for (var i2 = 0; i2 < this.componentsOnVertical.length; i2++) { var component2 = this.componentsOnVertical[i2]; if (this.fixedComponentsOnVertical[i2]) { - for (var j2 = 0; j2 < component2.length; j2++) { - if (this.dummyToNodeForHorizontalAlignment.has(component2[j2])) { - this.dummyToNodeForHorizontalAlignment.get(component2[j2]).forEach(function(nodeId) { + for (var j3 = 0; j3 < component2.length; j3++) { + if (this.dummyToNodeForHorizontalAlignment.has(component2[j3])) { + this.dummyToNodeForHorizontalAlignment.get(component2[j3]).forEach(function(nodeId) { self2.idToNodeMap.get(nodeId).displacementY = 0; }); } else { - this.idToNodeMap.get(component2[j2]).displacementY = 0; + this.idToNodeMap.get(component2[j3]).displacementY = 0; } } } else { var sum2 = 0; - var count = 0; - for (var j2 = 0; j2 < component2.length; j2++) { - if (this.dummyToNodeForHorizontalAlignment.has(component2[j2])) { - var actualNodes = this.dummyToNodeForHorizontalAlignment.get(component2[j2]); + var count2 = 0; + for (var j3 = 0; j3 < component2.length; j3++) { + if (this.dummyToNodeForHorizontalAlignment.has(component2[j3])) { + var actualNodes = this.dummyToNodeForHorizontalAlignment.get(component2[j3]); sum2 += actualNodes.length * this.idToNodeMap.get(actualNodes[0]).displacementY; - count += actualNodes.length; + count2 += actualNodes.length; } else { - sum2 += this.idToNodeMap.get(component2[j2]).displacementY; - count++; + sum2 += this.idToNodeMap.get(component2[j3]).displacementY; + count2++; } } - var averageDisplacement = sum2 / count; - for (var j2 = 0; j2 < component2.length; j2++) { - if (this.dummyToNodeForHorizontalAlignment.has(component2[j2])) { - this.dummyToNodeForHorizontalAlignment.get(component2[j2]).forEach(function(nodeId) { + var averageDisplacement = sum2 / count2; + for (var j3 = 0; j3 < component2.length; j3++) { + if (this.dummyToNodeForHorizontalAlignment.has(component2[j3])) { + this.dummyToNodeForHorizontalAlignment.get(component2[j3]).forEach(function(nodeId) { self2.idToNodeMap.get(nodeId).displacementY = averageDisplacement; }); } else { - this.idToNodeMap.get(component2[j2]).displacementY = averageDisplacement; + this.idToNodeMap.get(component2[j3]).displacementY = averageDisplacement; } } } @@ -146227,9 +148446,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var nodeList = []; var graph; var graphs = this.graphManager.getGraphs(); - var size5 = graphs.length; + var size4 = graphs.length; var i2; - for (i2 = 0; i2 < size5; i2++) { + for (i2 = 0; i2 < size4; i2++) { graph = graphs[i2]; graph.updateConnected(); if (!graph.isConnected) { @@ -146442,12 +148661,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; CoSELayout.prototype.clearZeroDegreeMembers = function() { var self2 = this; var tiledZeroDegreePack = this.tiledZeroDegreePack = []; - Object.keys(this.memberGroups).forEach(function(id29) { - var compoundNode = self2.idToDummyNode[id29]; - tiledZeroDegreePack[id29] = self2.tileNodes(self2.memberGroups[id29], compoundNode.paddingLeft + compoundNode.paddingRight); - compoundNode.rect.width = tiledZeroDegreePack[id29].width; - compoundNode.rect.height = tiledZeroDegreePack[id29].height; - compoundNode.setCenter(tiledZeroDegreePack[id29].centerX, tiledZeroDegreePack[id29].centerY); + Object.keys(this.memberGroups).forEach(function(id30) { + var compoundNode = self2.idToDummyNode[id30]; + tiledZeroDegreePack[id30] = self2.tileNodes(self2.memberGroups[id30], compoundNode.paddingLeft + compoundNode.paddingRight); + compoundNode.rect.width = tiledZeroDegreePack[id30].width; + compoundNode.rect.height = tiledZeroDegreePack[id30].height; + compoundNode.setCenter(tiledZeroDegreePack[id30].centerX, tiledZeroDegreePack[id30].centerY); compoundNode.labelMarginLeft = 0; compoundNode.labelMarginTop = 0; if (CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS) { @@ -146485,41 +148704,41 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; CoSELayout.prototype.repopulateCompounds = function() { for (var i2 = this.compoundOrder.length - 1; i2 >= 0; i2--) { var lCompoundNode = this.compoundOrder[i2]; - var id29 = lCompoundNode.id; + var id30 = lCompoundNode.id; var horizontalMargin = lCompoundNode.paddingLeft; var verticalMargin = lCompoundNode.paddingTop; var labelMarginLeft = lCompoundNode.labelMarginLeft; var labelMarginTop = lCompoundNode.labelMarginTop; - this.adjustLocations(this.tiledMemberPack[id29], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop); + this.adjustLocations(this.tiledMemberPack[id30], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop); } }; CoSELayout.prototype.repopulateZeroDegreeMembers = function() { var self2 = this; var tiledPack = this.tiledZeroDegreePack; - Object.keys(tiledPack).forEach(function(id29) { - var compoundNode = self2.idToDummyNode[id29]; + Object.keys(tiledPack).forEach(function(id30) { + var compoundNode = self2.idToDummyNode[id30]; var horizontalMargin = compoundNode.paddingLeft; var verticalMargin = compoundNode.paddingTop; var labelMarginLeft = compoundNode.labelMarginLeft; var labelMarginTop = compoundNode.labelMarginTop; - self2.adjustLocations(tiledPack[id29], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop); + self2.adjustLocations(tiledPack[id30], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop); }); }; CoSELayout.prototype.getToBeTiled = function(node2) { - var id29 = node2.id; - if (this.toBeTiled[id29] != null) { - return this.toBeTiled[id29]; + var id30 = node2.id; + if (this.toBeTiled[id30] != null) { + return this.toBeTiled[id30]; } var childGraph = node2.getChild(); if (childGraph == null) { - this.toBeTiled[id29] = false; + this.toBeTiled[id30] = false; return false; } var children2 = childGraph.getNodes(); for (var i2 = 0; i2 < children2.length; i2++) { var theChild = children2[i2]; if (this.getNodeDegree(theChild) > 0) { - this.toBeTiled[id29] = false; + this.toBeTiled[id30] = false; return false; } if (theChild.getChild() == null) { @@ -146527,15 +148746,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; continue; } if (!this.getToBeTiled(theChild)) { - this.toBeTiled[id29] = false; + this.toBeTiled[id30] = false; return false; } } - this.toBeTiled[id29] = true; + this.toBeTiled[id30] = true; return true; }; CoSELayout.prototype.getNodeDegree = function(node2) { - var id29 = node2.id; + var id30 = node2.id; var edges3 = node2.getEdges(); var degree = 0; for (var i2 = 0; i2 < edges3.length; i2++) { @@ -146573,33 +148792,33 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } } }; - CoSELayout.prototype.adjustLocations = function(organization, x5, y5, compoundHorizontalMargin, compoundVerticalMargin, compoundLabelMarginLeft, compoundLabelMarginTop) { + CoSELayout.prototype.adjustLocations = function(organization, x5, y6, compoundHorizontalMargin, compoundVerticalMargin, compoundLabelMarginLeft, compoundLabelMarginTop) { x5 += compoundHorizontalMargin + compoundLabelMarginLeft; - y5 += compoundVerticalMargin + compoundLabelMarginTop; + y6 += compoundVerticalMargin + compoundLabelMarginTop; var left3 = x5; for (var i2 = 0; i2 < organization.rows.length; i2++) { var row = organization.rows[i2]; x5 = left3; var maxHeight = 0; - for (var j2 = 0; j2 < row.length; j2++) { - var lnode = row[j2]; + for (var j3 = 0; j3 < row.length; j3++) { + var lnode = row[j3]; lnode.rect.x = x5; - lnode.rect.y = y5; + lnode.rect.y = y6; x5 += lnode.rect.width + organization.horizontalPadding; if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height; } - y5 += maxHeight + organization.verticalPadding; + y6 += maxHeight + organization.verticalPadding; } }; CoSELayout.prototype.tileCompoundMembers = function(childGraphMap, idToNode) { var self2 = this; this.tiledMemberPack = []; - Object.keys(childGraphMap).forEach(function(id29) { - var compoundNode = idToNode[id29]; - self2.tiledMemberPack[id29] = self2.tileNodes(childGraphMap[id29], compoundNode.paddingLeft + compoundNode.paddingRight); - compoundNode.rect.width = self2.tiledMemberPack[id29].width; - compoundNode.rect.height = self2.tiledMemberPack[id29].height; - compoundNode.setCenter(self2.tiledMemberPack[id29].centerX, self2.tiledMemberPack[id29].centerY); + Object.keys(childGraphMap).forEach(function(id30) { + var compoundNode = idToNode[id30]; + self2.tiledMemberPack[id30] = self2.tileNodes(childGraphMap[id30], compoundNode.paddingLeft + compoundNode.paddingRight); + compoundNode.rect.width = self2.tiledMemberPack[id30].width; + compoundNode.rect.height = self2.tiledMemberPack[id30].height; + compoundNode.setCenter(self2.tiledMemberPack[id30].centerX, self2.tiledMemberPack[id30].centerY); compoundNode.labelMarginLeft = 0; compoundNode.labelMarginTop = 0; if (CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS) { @@ -146634,9 +148853,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } }); }; - CoSELayout.prototype.tileNodes = function(nodes6, minWidth) { - var horizontalOrg = this.tileNodesByFavoringDim(nodes6, minWidth, true); - var verticalOrg = this.tileNodesByFavoringDim(nodes6, minWidth, false); + CoSELayout.prototype.tileNodes = function(nodes5, minWidth) { + var horizontalOrg = this.tileNodesByFavoringDim(nodes5, minWidth, true); + var verticalOrg = this.tileNodesByFavoringDim(nodes5, minWidth, false); var horizontalRatio = this.getOrgRatio(horizontalOrg); var verticalRatio = this.getOrgRatio(verticalOrg); var bestOrg; @@ -146662,12 +148881,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var membersSize = members.length; var totalWidth = 0; var totalHeight = 0; - var maxWidth = 0; + var maxWidth2 = 0; members.forEach(function(node2) { totalWidth += node2.getWidth(); totalHeight += node2.getHeight(); - if (node2.getWidth() > maxWidth) { - maxWidth = node2.getWidth(); + if (node2.getWidth() > maxWidth2) { + maxWidth2 = node2.getWidth(); } }); var averageWidth = totalWidth / membersSize; @@ -146684,13 +148903,13 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; horizontalCount = Math.floor(horizontalCountDouble); } var idealWidth = horizontalCount * (averageWidth + horizontalPadding) - horizontalPadding; - if (maxWidth > idealWidth) { - idealWidth = maxWidth; + if (maxWidth2 > idealWidth) { + idealWidth = maxWidth2; } idealWidth += horizontalPadding * 2; return idealWidth; }; - CoSELayout.prototype.tileNodesByFavoringDim = function(nodes6, minWidth, favorHorizontalDim) { + CoSELayout.prototype.tileNodesByFavoringDim = function(nodes5, minWidth, favorHorizontalDim) { var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL; var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL; var tilingCompareBy = CoSEConstants.TILING_COMPARE_BY; @@ -146707,7 +148926,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; centerY: 0 }; if (tilingCompareBy) { - organization.idealRowWidth = this.calcIdealRowWidth(nodes6, favorHorizontalDim); + organization.idealRowWidth = this.calcIdealRowWidth(nodes5, favorHorizontalDim); } var getNodeArea = /* @__PURE__ */ __name(function getNodeArea2(n2) { return n2.rect.width * n2.rect.height; @@ -146715,7 +148934,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var areaCompareFcn = /* @__PURE__ */ __name(function areaCompareFcn2(n1, n2) { return getNodeArea(n2) - getNodeArea(n1); }, "areaCompareFcn"); - nodes6.sort(function(n1, n2) { + nodes5.sort(function(n1, n2) { var cmpBy = areaCompareFcn; if (organization.idealRowWidth) { cmpBy = tilingCompareBy; @@ -146725,15 +148944,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); var sumCenterX = 0; var sumCenterY = 0; - for (var i2 = 0; i2 < nodes6.length; i2++) { - var lNode = nodes6[i2]; + for (var i2 = 0; i2 < nodes5.length; i2++) { + var lNode = nodes5[i2]; sumCenterX += lNode.getCenterX(); sumCenterY += lNode.getCenterY(); } - organization.centerX = sumCenterX / nodes6.length; - organization.centerY = sumCenterY / nodes6.length; - for (var i2 = 0; i2 < nodes6.length; i2++) { - var lNode = nodes6[i2]; + organization.centerX = sumCenterX / nodes5.length; + organization.centerY = sumCenterY / nodes5.length; + for (var i2 = 0; i2 < nodes5.length; i2++) { + var lNode = nodes5[i2]; if (organization.rows.length == 0) { this.insertNodeToRow(organization, lNode, 0, minWidth); } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) { @@ -146757,20 +148976,20 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; organization.rowWidth.push(minCompoundSize); organization.rowHeight.push(0); } - var w3 = organization.rowWidth[rowIndex] + node2.rect.width; + var w4 = organization.rowWidth[rowIndex] + node2.rect.width; if (organization.rows[rowIndex].length > 0) { - w3 += organization.horizontalPadding; + w4 += organization.horizontalPadding; } - organization.rowWidth[rowIndex] = w3; - if (organization.width < w3) { - organization.width = w3; + organization.rowWidth[rowIndex] = w4; + if (organization.width < w4) { + organization.width = w4; } - var h2 = node2.rect.height; - if (rowIndex > 0) h2 += organization.verticalPadding; + var h3 = node2.rect.height; + if (rowIndex > 0) h3 += organization.verticalPadding; var extraHeight = 0; - if (h2 > organization.rowHeight[rowIndex]) { + if (h3 > organization.rowHeight[rowIndex]) { extraHeight = organization.rowHeight[rowIndex]; - organization.rowHeight[rowIndex] = h2; + organization.rowHeight[rowIndex] = h3; extraHeight = organization.rowHeight[rowIndex] - extraHeight; } organization.height += extraHeight; @@ -146892,10 +149111,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } if (containsLeaf == true) { var prunedNodesInStep = []; - for (var j2 = 0; j2 < prunedNodesInStepTemp.length; j2++) { - if (prunedNodesInStepTemp[j2][0].getEdges().length == 1) { - prunedNodesInStep.push(prunedNodesInStepTemp[j2]); - prunedNodesInStepTemp[j2][0].getOwner().remove(prunedNodesInStepTemp[j2][0]); + for (var j3 = 0; j3 < prunedNodesInStepTemp.length; j3++) { + if (prunedNodesInStepTemp[j3][0].getEdges().length == 1) { + prunedNodesInStep.push(prunedNodesInStepTemp[j3]); + prunedNodesInStepTemp[j3][0].getOwner().remove(prunedNodesInStepTemp[j3][0]); } } prunedNodesAll.push(prunedNodesInStep); @@ -146963,12 +149182,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var min9 = Integer.MAX_VALUE; var minCount; var minIndex; - for (var j2 = 0; j2 < controlRegions.length; j2++) { - if (controlRegions[j2] < min9) { - min9 = controlRegions[j2]; + for (var j3 = 0; j3 < controlRegions.length; j3++) { + if (controlRegions[j3] < min9) { + min9 = controlRegions[j3]; minCount = 1; - minIndex = j2; - } else if (controlRegions[j2] == min9) { + minIndex = j3; + } else if (controlRegions[j3] == min9) { minCount++; } } @@ -147040,16 +149259,16 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } }; module3.exports = CoSELayout; - } + }) ), /***/ 991: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { + ((module3, __unused_webpack_exports, __webpack_require__2) => { var FDLayoutNode = __webpack_require__2(551).FDLayoutNode; var IMath = __webpack_require__2(551).IMath; - function CoSENode(gm, loc, size5, vNode) { - FDLayoutNode.call(this, gm, loc, size5, vNode); + function CoSENode(gm, loc, size4, vNode) { + FDLayoutNode.call(this, gm, loc, size4, vNode); } __name(CoSENode, "CoSENode"); CoSENode.prototype = Object.create(FDLayoutNode.prototype); @@ -147076,10 +149295,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } }; CoSENode.prototype.propogateDisplacementToChildren = function(dX, dY) { - var nodes6 = this.getChild().getNodes(); + var nodes5 = this.getChild().getNodes(); var node2; - for (var i2 = 0; i2 < nodes6.length; i2++) { - node2 = nodes6[i2]; + for (var i2 = 0; i2 < nodes5.length; i2++) { + node2 = nodes5[i2]; if (node2.getChild() == null) { node2.displacementX += dX; node2.displacementY += dY; @@ -147125,12 +149344,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return processed; }; module3.exports = CoSENode; - } + }) ), /***/ 902: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { + ((module3, __unused_webpack_exports, __webpack_require__2) => { function _toConsumableArray2(arr) { if (Array.isArray(arr)) { for (var i2 = 0, arr2 = Array(arr.length); i2 < arr.length; i2++) { @@ -147480,14 +149699,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var components4 = []; var queue = new LinkedList(); var visited = /* @__PURE__ */ new Set(); - var count = 0; + var count2 = 0; graph.forEach(function(value2, key) { if (!visited.has(key)) { - components4[count] = []; + components4[count2] = []; var _currentNode = key; queue.push(_currentNode); visited.add(_currentNode); - components4[count].push(_currentNode); + components4[count2].push(_currentNode); while (queue.length != 0) { _currentNode = queue.shift(); var neighbors = graph.get(_currentNode); @@ -147495,11 +149714,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (!visited.has(neighbor.id)) { queue.push(neighbor.id); visited.add(neighbor.id); - components4[count].push(neighbor.id); + components4[count2].push(neighbor.id); } }); } - count++; + count2++; } }); return components4; @@ -147576,7 +149795,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; standardTransformation = true; } else if (constraints.alignmentConstraint) { (function() { - var count = 0; + var count2 = 0; if (constraints.alignmentConstraint.vertical) { var verticalAlign = constraints.alignmentConstraint.vertical; var _loop2 = /* @__PURE__ */ __name(function _loop22(_i42) { @@ -147591,9 +149810,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (intersection4.size > 0) xPos = xCoords[nodeIndexes.get(intersection4.values().next().value)]; else xPos = calculateAvgPosition(alignmentSet).x; verticalAlign[_i42].forEach(function(nodeId) { - targetMatrix[count] = [xPos, yCoords[nodeIndexes.get(nodeId)]]; - sourceMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]]; - count++; + targetMatrix[count2] = [xPos, yCoords[nodeIndexes.get(nodeId)]]; + sourceMatrix[count2] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]]; + count2++; }); }, "_loop2"); for (var _i4 = 0; _i4 < verticalAlign.length; _i4++) { @@ -147615,9 +149834,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (intersection4.size > 0) yPos = xCoords[nodeIndexes.get(intersection4.values().next().value)]; else yPos = calculateAvgPosition(alignmentSet).y; horizontalAlign[_i52].forEach(function(nodeId) { - targetMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yPos]; - sourceMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]]; - count++; + targetMatrix[count2] = [xCoords[nodeIndexes.get(nodeId)], yPos]; + sourceMatrix[count2] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]]; + count2++; }); }, "_loop3"); for (var _i5 = 0; _i5 < horizontalAlign.length; _i5++) { @@ -147992,14 +150211,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } }; module3.exports = ConstraintHandler; - } + }) ), /***/ 551: ( /***/ - (module3) => { + ((module3) => { module3.exports = __WEBPACK_EXTERNAL_MODULE__551__; - } + }) ) /******/ }; @@ -148030,11 +150249,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } }); - // ../../node_modules/.pnpm/cytoscape-fcose@2.2.0_cytoscape@3.31.0/node_modules/cytoscape-fcose/cytoscape-fcose.js + // ../../node_modules/.pnpm/cytoscape-fcose@2.2.0_cytoscape@3.33.1/node_modules/cytoscape-fcose/cytoscape-fcose.js var require_cytoscape_fcose = __commonJS({ - "../../node_modules/.pnpm/cytoscape-fcose@2.2.0_cytoscape@3.31.0/node_modules/cytoscape-fcose/cytoscape-fcose.js"(exports2, module2) { + "../../node_modules/.pnpm/cytoscape-fcose@2.2.0_cytoscape@3.33.1/node_modules/cytoscape-fcose/cytoscape-fcose.js"(exports2, module2) { "use strict"; - (/* @__PURE__ */ __name(function webpackUniversalModuleDefinition(root4, factory) { + (/* @__PURE__ */ __name((function webpackUniversalModuleDefinition(root3, factory) { if (typeof exports2 === "object" && typeof module2 === "object") module2.exports = factory(require_cose_base2()); else if (typeof define === "function" && define.amd) @@ -148042,8 +150261,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; else if (typeof exports2 === "object") exports2["cytoscapeFcose"] = factory(require_cose_base2()); else - root4["cytoscapeFcose"] = factory(root4["coseBase"]); - }, "webpackUniversalModuleDefinition"))(exports2, function(__WEBPACK_EXTERNAL_MODULE__140__) { + root3["cytoscapeFcose"] = factory(root3["coseBase"]); + }), "webpackUniversalModuleDefinition"))(exports2, function(__WEBPACK_EXTERNAL_MODULE__140__) { return ( /******/ (() => { @@ -148052,7 +150271,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; /***/ 658: ( /***/ - (module3) => { + ((module3) => { module3.exports = Object.assign != null ? Object.assign.bind(Object) : function(tgt) { for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { srcs[_key - 1] = arguments[_key]; @@ -148064,18 +150283,18 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); return tgt; }; - } + }) ), /***/ 548: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { - var _slicedToArray2 = /* @__PURE__ */ function() { + ((module3, __unused_webpack_exports, __webpack_require__2) => { + var _slicedToArray2 = /* @__PURE__ */ (function() { function sliceIterator(arr, i2) { var _arr = []; var _n = true; var _d = false; - var _e = void 0; + var _e2 = void 0; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); @@ -148083,12 +150302,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } } catch (err) { _d = true; - _e = err; + _e2 = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { - if (_d) throw _e; + if (_d) throw _e2; } } return _arr; @@ -148103,15 +150322,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; - }(); + })(); var LinkedList = __webpack_require__2(140).layoutBase.LinkedList; var auxiliary = {}; - auxiliary.getTopMostNodes = function(nodes6) { + auxiliary.getTopMostNodes = function(nodes5) { var nodesMap2 = {}; - for (var i2 = 0; i2 < nodes6.length; i2++) { - nodesMap2[nodes6[i2].id()] = true; + for (var i2 = 0; i2 < nodes5.length; i2++) { + nodesMap2[nodes5[i2].id()] = true; } - var roots = nodes6.filter(function(ele, i3) { + var roots = nodes5.filter(function(ele, i3) { if (typeof ele === "number") { ele = i3; } @@ -148134,7 +150353,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var minDegreeNode = void 0; var minDegree = void 0; var isConnected = false; - var count = 1; + var count2 = 1; var nodesConnectedToDummy = []; var components3 = []; var _loop = /* @__PURE__ */ __name(function _loop2() { @@ -148186,7 +150405,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (visitedTopMostNodes.length == topMostNodes.length) { isConnected = true; } - if (!isConnected || isConnected && count > 1) { + if (!isConnected || isConnected && count2 > 1) { minDegreeNode = visitedTopMostNodes[0]; minDegree = minDegreeNode.connectedEdges().length; visitedTopMostNodes.forEach(function(node2) { @@ -148203,7 +150422,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); visitedTopMostNodes = []; topMostNodes = topMostNodes.difference(temp); - count++; + count2++; } }, "_loop"); do { @@ -148216,13 +150435,13 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } return components3; }; - auxiliary.relocateComponent = function(originalCenter, componentResult, options3) { - if (!options3.fixedNodeConstraint) { + auxiliary.relocateComponent = function(originalCenter, componentResult, options2) { + if (!options2.fixedNodeConstraint) { var minXCoord = Number.POSITIVE_INFINITY; var maxXCoord = Number.NEGATIVE_INFINITY; var minYCoord = Number.POSITIVE_INFINITY; var maxYCoord = Number.NEGATIVE_INFINITY; - if (options3.quality == "draft") { + if (options2.quality == "draft") { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = void 0; @@ -148232,7 +150451,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var _ref2 = _slicedToArray2(_ref, 2); var key = _ref2[0]; var value2 = _ref2[1]; - var cyNode = options3.cy.getElementById(key); + var cyNode = options2.cy.getElementById(key); if (cyNode) { var nodeBB = cyNode.boundingBox(); var leftX = componentResult.xCoords[value2] - nodeBB.w / 2; @@ -148264,8 +150483,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; componentResult.xCoords = componentResult.xCoords.map(function(x5) { return x5 + diffOnX; }); - componentResult.yCoords = componentResult.yCoords.map(function(y5) { - return y5 + diffOnY; + componentResult.yCoords = componentResult.yCoords.map(function(y6) { + return y6 + diffOnY; }); } else { Object.keys(componentResult).forEach(function(item) { @@ -148297,10 +150516,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var nodeRight = void 0; var nodeTop = void 0; var nodeBottom = void 0; - var nodes6 = parentNode.descendants().not(":parent"); - var s2 = nodes6.length; + var nodes5 = parentNode.descendants().not(":parent"); + var s2 = nodes5.length; for (var i2 = 0; i2 < s2; i2++) { - var node2 = nodes6[i2]; + var node2 = nodes5[i2]; nodeLeft = xCoords[nodeIndexes.get(node2.id())] - node2.width() / 2; nodeRight = xCoords[nodeIndexes.get(node2.id())] + node2.width() / 2; nodeTop = yCoords[nodeIndexes.get(node2.id())] - node2.height() / 2; @@ -148341,12 +150560,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return parentsWithoutChildren; }; module3.exports = auxiliary; - } + }) ), /***/ 816: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { + ((module3, __unused_webpack_exports, __webpack_require__2) => { var aux = __webpack_require__2(548); var CoSELayout = __webpack_require__2(140).CoSELayout; var CoSENode = __webpack_require__2(140).CoSENode; @@ -148355,16 +150574,16 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var LayoutConstants = __webpack_require__2(140).layoutBase.LayoutConstants; var FDLayoutConstants = __webpack_require__2(140).layoutBase.FDLayoutConstants; var CoSEConstants = __webpack_require__2(140).CoSEConstants; - var coseLayout = /* @__PURE__ */ __name(function coseLayout2(options3, spectralResult) { - var cy = options3.cy; - var eles = options3.eles; - var nodes6 = eles.nodes(); + var coseLayout = /* @__PURE__ */ __name(function coseLayout2(options2, spectralResult) { + var cy = options2.cy; + var eles = options2.eles; + var nodes5 = eles.nodes(); var edges3 = eles.edges(); var nodeIndexes = void 0; var xCoords = void 0; var yCoords = void 0; var idToLNode = {}; - if (options3.randomize) { + if (options2.randomize) { nodeIndexes = spectralResult["nodeIndexes"]; xCoords = spectralResult["xCoords"]; yCoords = spectralResult["yCoords"]; @@ -148380,9 +150599,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } }, "optFn"); var parentsWithoutChildren = aux.calcParentsWithoutChildren(cy, eles); - var processChildrenList = /* @__PURE__ */ __name(function processChildrenList2(parent4, children2, layout6, options4) { - var size5 = children2.length; - for (var i2 = 0; i2 < size5; i2++) { + var processChildrenList = /* @__PURE__ */ __name(function processChildrenList2(parent4, children2, layout6, options3) { + var size4 = children2.length; + for (var i2 = 0; i2 < size4; i2++) { var theChild = children2[i2]; var children_of_children = null; if (theChild.intersection(parentsWithoutChildren).length == 0) { @@ -148390,10 +150609,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } var theNode = void 0; var dimensions2 = theChild.layoutDimensions({ - nodeDimensionsIncludeLabels: options4.nodeDimensionsIncludeLabels + nodeDimensionsIncludeLabels: options3.nodeDimensionsIncludeLabels }); if (theChild.outerWidth() != null && theChild.outerHeight() != null) { - if (options4.randomize) { + if (options3.randomize) { if (!theChild.isParent()) { theNode = parent4.add(new CoSENode(layout6.graphManager, new PointD(xCoords[nodeIndexes.get(theChild.id())] - dimensions2.w / 2, yCoords[nodeIndexes.get(theChild.id())] - dimensions2.h / 2), new DimensionD2(parseFloat(dimensions2.w), parseFloat(dimensions2.h)))); } else { @@ -148411,12 +150630,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; theNode = parent4.add(new CoSENode(this.graphManager)); } theNode.id = theChild.data("id"); - theNode.nodeRepulsion = optFn(options4.nodeRepulsion, theChild); + theNode.nodeRepulsion = optFn(options3.nodeRepulsion, theChild); theNode.paddingLeft = parseInt(theChild.css("padding")); theNode.paddingTop = parseInt(theChild.css("padding")); theNode.paddingRight = parseInt(theChild.css("padding")); theNode.paddingBottom = parseInt(theChild.css("padding")); - if (options4.nodeDimensionsIncludeLabels) { + if (options3.nodeDimensionsIncludeLabels) { theNode.labelWidth = theChild.boundingBox({ includeLabels: true, includeNodes: false, includeOverlays: false }).w; theNode.labelHeight = theChild.boundingBox({ includeLabels: true, includeNodes: false, includeOverlays: false }).h; theNode.labelPosVertical = theChild.css("text-valign"); @@ -148432,7 +150651,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (children_of_children != null && children_of_children.length > 0) { var theNewGraph = void 0; theNewGraph = layout6.getGraphManager().add(layout6.newGraph(), theNode); - processChildrenList2(theNewGraph, children_of_children, layout6, options4); + processChildrenList2(theNewGraph, children_of_children, layout6, options3); } } }, "processChildrenList"); @@ -148446,94 +150665,94 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (sourceNode && targetNode && sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length == 0) { var e1 = gm2.add(layout6.newEdge(), sourceNode, targetNode); e1.id = edge.id(); - e1.idealLength = optFn(options3.idealEdgeLength, edge); - e1.edgeElasticity = optFn(options3.edgeElasticity, edge); + e1.idealLength = optFn(options2.idealEdgeLength, edge); + e1.edgeElasticity = optFn(options2.edgeElasticity, edge); idealLengthTotal += e1.idealLength; edgeCount3++; } } - if (options3.idealEdgeLength != null) { + if (options2.idealEdgeLength != null) { if (edgeCount3 > 0) CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = idealLengthTotal / edgeCount3; - else if (!isFn(options3.idealEdgeLength)) - CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = options3.idealEdgeLength; + else if (!isFn(options2.idealEdgeLength)) + CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = options2.idealEdgeLength; else CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = 50; CoSEConstants.MIN_REPULSION_DIST = FDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10; CoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH; } }, "processEdges"); - var processConstraints = /* @__PURE__ */ __name(function processConstraints2(layout6, options4) { - if (options4.fixedNodeConstraint) { - layout6.constraints["fixedNodeConstraint"] = options4.fixedNodeConstraint; + var processConstraints = /* @__PURE__ */ __name(function processConstraints2(layout6, options3) { + if (options3.fixedNodeConstraint) { + layout6.constraints["fixedNodeConstraint"] = options3.fixedNodeConstraint; } - if (options4.alignmentConstraint) { - layout6.constraints["alignmentConstraint"] = options4.alignmentConstraint; + if (options3.alignmentConstraint) { + layout6.constraints["alignmentConstraint"] = options3.alignmentConstraint; } - if (options4.relativePlacementConstraint) { - layout6.constraints["relativePlacementConstraint"] = options4.relativePlacementConstraint; + if (options3.relativePlacementConstraint) { + layout6.constraints["relativePlacementConstraint"] = options3.relativePlacementConstraint; } }, "processConstraints"); - if (options3.nestingFactor != null) CoSEConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = options3.nestingFactor; - if (options3.gravity != null) CoSEConstants.DEFAULT_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = options3.gravity; - if (options3.numIter != null) CoSEConstants.MAX_ITERATIONS = FDLayoutConstants.MAX_ITERATIONS = options3.numIter; - if (options3.gravityRange != null) CoSEConstants.DEFAULT_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = options3.gravityRange; - if (options3.gravityCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = options3.gravityCompound; - if (options3.gravityRangeCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = options3.gravityRangeCompound; - if (options3.initialEnergyOnIncremental != null) CoSEConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = options3.initialEnergyOnIncremental; - if (options3.tilingCompareBy != null) CoSEConstants.TILING_COMPARE_BY = options3.tilingCompareBy; - if (options3.quality == "proof") LayoutConstants.QUALITY = 2; + if (options2.nestingFactor != null) CoSEConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = options2.nestingFactor; + if (options2.gravity != null) CoSEConstants.DEFAULT_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = options2.gravity; + if (options2.numIter != null) CoSEConstants.MAX_ITERATIONS = FDLayoutConstants.MAX_ITERATIONS = options2.numIter; + if (options2.gravityRange != null) CoSEConstants.DEFAULT_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = options2.gravityRange; + if (options2.gravityCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = options2.gravityCompound; + if (options2.gravityRangeCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = options2.gravityRangeCompound; + if (options2.initialEnergyOnIncremental != null) CoSEConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = options2.initialEnergyOnIncremental; + if (options2.tilingCompareBy != null) CoSEConstants.TILING_COMPARE_BY = options2.tilingCompareBy; + if (options2.quality == "proof") LayoutConstants.QUALITY = 2; else LayoutConstants.QUALITY = 0; - CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS = FDLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = options3.nodeDimensionsIncludeLabels; - CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = !options3.randomize; - CoSEConstants.ANIMATE = FDLayoutConstants.ANIMATE = LayoutConstants.ANIMATE = options3.animate; - CoSEConstants.TILE = options3.tile; - CoSEConstants.TILING_PADDING_VERTICAL = typeof options3.tilingPaddingVertical === "function" ? options3.tilingPaddingVertical.call() : options3.tilingPaddingVertical; - CoSEConstants.TILING_PADDING_HORIZONTAL = typeof options3.tilingPaddingHorizontal === "function" ? options3.tilingPaddingHorizontal.call() : options3.tilingPaddingHorizontal; + CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS = FDLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = options2.nodeDimensionsIncludeLabels; + CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = !options2.randomize; + CoSEConstants.ANIMATE = FDLayoutConstants.ANIMATE = LayoutConstants.ANIMATE = options2.animate; + CoSEConstants.TILE = options2.tile; + CoSEConstants.TILING_PADDING_VERTICAL = typeof options2.tilingPaddingVertical === "function" ? options2.tilingPaddingVertical.call() : options2.tilingPaddingVertical; + CoSEConstants.TILING_PADDING_HORIZONTAL = typeof options2.tilingPaddingHorizontal === "function" ? options2.tilingPaddingHorizontal.call() : options2.tilingPaddingHorizontal; CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = true; - CoSEConstants.PURE_INCREMENTAL = !options3.randomize; - LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = options3.uniformNodeDimensions; - if (options3.step == "transformed") { + CoSEConstants.PURE_INCREMENTAL = !options2.randomize; + LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = options2.uniformNodeDimensions; + if (options2.step == "transformed") { CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true; CoSEConstants.ENFORCE_CONSTRAINTS = false; CoSEConstants.APPLY_LAYOUT = false; } - if (options3.step == "enforced") { + if (options2.step == "enforced") { CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false; CoSEConstants.ENFORCE_CONSTRAINTS = true; CoSEConstants.APPLY_LAYOUT = false; } - if (options3.step == "cose") { + if (options2.step == "cose") { CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false; CoSEConstants.ENFORCE_CONSTRAINTS = false; CoSEConstants.APPLY_LAYOUT = true; } - if (options3.step == "all") { - if (options3.randomize) CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true; + if (options2.step == "all") { + if (options2.randomize) CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true; else CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false; CoSEConstants.ENFORCE_CONSTRAINTS = true; CoSEConstants.APPLY_LAYOUT = true; } - if (options3.fixedNodeConstraint || options3.alignmentConstraint || options3.relativePlacementConstraint) { + if (options2.fixedNodeConstraint || options2.alignmentConstraint || options2.relativePlacementConstraint) { CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false; } else { CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = true; } var coseLayout3 = new CoSELayout(); var gm = coseLayout3.newGraphManager(); - processChildrenList(gm.addRoot(), aux.getTopMostNodes(nodes6), coseLayout3, options3); + processChildrenList(gm.addRoot(), aux.getTopMostNodes(nodes5), coseLayout3, options2); processEdges(coseLayout3, gm, edges3); - processConstraints(coseLayout3, options3); + processConstraints(coseLayout3, options2); coseLayout3.runLayout(); return idToLNode; }, "coseLayout"); module3.exports = { coseLayout }; - } + }) ), /***/ 212: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { - var _createClass2 = /* @__PURE__ */ function() { + ((module3, __unused_webpack_exports, __webpack_require__2) => { + var _createClass2 = /* @__PURE__ */ (function() { function defineProperties(target, props) { for (var i2 = 0; i2 < props.length; i2++) { var descriptor = props[i2]; @@ -148549,7 +150768,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; - }(); + })(); function _classCallCheck2(instance2, Constructor) { if (!(instance2 instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); @@ -148650,85 +150869,85 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }, "stop") // on layoutstop }); - var Layout2 = function() { - function Layout3(options3) { + var Layout2 = (function() { + function Layout3(options2) { _classCallCheck2(this, Layout3); - this.options = assign7({}, defaults4, options3); + this.options = assign7({}, defaults4, options2); } __name(Layout3, "Layout"); _createClass2(Layout3, [{ key: "run", value: /* @__PURE__ */ __name(function run5() { var layout6 = this; - var options3 = this.options; - var cy = options3.cy; - var eles = options3.eles; + var options2 = this.options; + var cy = options2.cy; + var eles = options2.eles; var spectralResult = []; var xCoords = void 0; var yCoords = void 0; var coseResult = []; var components3 = void 0; var componentCenters = []; - if (options3.fixedNodeConstraint && (!Array.isArray(options3.fixedNodeConstraint) || options3.fixedNodeConstraint.length == 0)) { - options3.fixedNodeConstraint = void 0; + if (options2.fixedNodeConstraint && (!Array.isArray(options2.fixedNodeConstraint) || options2.fixedNodeConstraint.length == 0)) { + options2.fixedNodeConstraint = void 0; } - if (options3.alignmentConstraint) { - if (options3.alignmentConstraint.vertical && (!Array.isArray(options3.alignmentConstraint.vertical) || options3.alignmentConstraint.vertical.length == 0)) { - options3.alignmentConstraint.vertical = void 0; + if (options2.alignmentConstraint) { + if (options2.alignmentConstraint.vertical && (!Array.isArray(options2.alignmentConstraint.vertical) || options2.alignmentConstraint.vertical.length == 0)) { + options2.alignmentConstraint.vertical = void 0; } - if (options3.alignmentConstraint.horizontal && (!Array.isArray(options3.alignmentConstraint.horizontal) || options3.alignmentConstraint.horizontal.length == 0)) { - options3.alignmentConstraint.horizontal = void 0; + if (options2.alignmentConstraint.horizontal && (!Array.isArray(options2.alignmentConstraint.horizontal) || options2.alignmentConstraint.horizontal.length == 0)) { + options2.alignmentConstraint.horizontal = void 0; } } - if (options3.relativePlacementConstraint && (!Array.isArray(options3.relativePlacementConstraint) || options3.relativePlacementConstraint.length == 0)) { - options3.relativePlacementConstraint = void 0; + if (options2.relativePlacementConstraint && (!Array.isArray(options2.relativePlacementConstraint) || options2.relativePlacementConstraint.length == 0)) { + options2.relativePlacementConstraint = void 0; } - var constraintExist = options3.fixedNodeConstraint || options3.alignmentConstraint || options3.relativePlacementConstraint; + var constraintExist = options2.fixedNodeConstraint || options2.alignmentConstraint || options2.relativePlacementConstraint; if (constraintExist) { - options3.tile = false; - options3.packComponents = false; + options2.tile = false; + options2.packComponents = false; } var layUtil = void 0; var packingEnabled = false; - if (cy.layoutUtilities && options3.packComponents) { + if (cy.layoutUtilities && options2.packComponents) { layUtil = cy.layoutUtilities("get"); if (!layUtil) layUtil = cy.layoutUtilities(); packingEnabled = true; } if (eles.nodes().length > 0) { if (!packingEnabled) { - var boundingBox3 = options3.eles.boundingBox(); + var boundingBox3 = options2.eles.boundingBox(); componentCenters.push({ x: boundingBox3.x1 + boundingBox3.w / 2, y: boundingBox3.y1 + boundingBox3.h / 2 }); - if (options3.randomize) { - var result = spectralLayout(options3); + if (options2.randomize) { + var result = spectralLayout(options2); spectralResult.push(result); } - if (options3.quality == "default" || options3.quality == "proof") { - coseResult.push(coseLayout(options3, spectralResult[0])); - aux.relocateComponent(componentCenters[0], coseResult[0], options3); + if (options2.quality == "default" || options2.quality == "proof") { + coseResult.push(coseLayout(options2, spectralResult[0])); + aux.relocateComponent(componentCenters[0], coseResult[0], options2); } else { - aux.relocateComponent(componentCenters[0], spectralResult[0], options3); + aux.relocateComponent(componentCenters[0], spectralResult[0], options2); } } else { - var topMostNodes = aux.getTopMostNodes(options3.eles.nodes()); - components3 = aux.connectComponents(cy, options3.eles, topMostNodes); + var topMostNodes = aux.getTopMostNodes(options2.eles.nodes()); + components3 = aux.connectComponents(cy, options2.eles, topMostNodes); components3.forEach(function(component2) { var boundingBox4 = component2.boundingBox(); componentCenters.push({ x: boundingBox4.x1 + boundingBox4.w / 2, y: boundingBox4.y1 + boundingBox4.h / 2 }); }); - if (options3.randomize) { + if (options2.randomize) { components3.forEach(function(component2) { - options3.eles = component2; - spectralResult.push(spectralLayout(options3)); + options2.eles = component2; + spectralResult.push(spectralLayout(options2)); }); } - if (options3.quality == "default" || options3.quality == "proof") { + if (options2.quality == "default" || options2.quality == "proof") { var toBeTiledNodes = cy.collection(); - if (options3.tile) { + if (options2.tile) { var nodeIndexes = /* @__PURE__ */ new Map(); var _xCoords = []; var _yCoords = []; - var count = 0; + var count2 = 0; var tempSpectralResult = { nodeIndexes, xCoords: _xCoords, yCoords: _yCoords }; var indexesToBeDeleted = []; components3.forEach(function(component2, index) { @@ -148736,7 +150955,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; component2.nodes().forEach(function(node2, i3) { toBeTiledNodes.merge(component2.nodes()[i3]); if (!node2.isParent()) { - tempSpectralResult.nodeIndexes.set(component2.nodes()[i3].id(), count++); + tempSpectralResult.nodeIndexes.set(component2.nodes()[i3].id(), count2++); tempSpectralResult.xCoords.push(component2.nodes()[0].position().x); tempSpectralResult.yCoords.push(component2.nodes()[0].position().y); } @@ -148758,13 +150977,13 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } } components3.forEach(function(component2, index) { - options3.eles = component2; - coseResult.push(coseLayout(options3, spectralResult[index])); - aux.relocateComponent(componentCenters[index], coseResult[index], options3); + options2.eles = component2; + coseResult.push(coseLayout(options2, spectralResult[index])); + aux.relocateComponent(componentCenters[index], coseResult[index], options2); }); } else { components3.forEach(function(component2, index) { - aux.relocateComponent(componentCenters[index], spectralResult[index], options3); + aux.relocateComponent(componentCenters[index], spectralResult[index], options2); }); } var componentsEvaluated = /* @__PURE__ */ new Set(); @@ -148775,7 +150994,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); components3.forEach(function(component2, index) { var nodeIndexes2 = void 0; - if (options3.quality == "draft") { + if (options2.quality == "draft") { nodeIndexes2 = spectralResult[index].nodeIndexes; } if (component2.nodes().not(hiddenEles).length > 0) { @@ -148784,7 +151003,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; subgraph.nodes = []; var nodeIndex = void 0; component2.nodes().not(hiddenEles).forEach(function(node2) { - if (options3.quality == "draft") { + if (options2.quality == "draft") { if (!node2.isParent()) { nodeIndex = nodeIndexes2.get(node2.id()); subgraph.nodes.push({ x: spectralResult[index].xCoords[nodeIndex] - node2.boundingbox().w / 2, y: spectralResult[index].yCoords[nodeIndex] - node2.boundingbox().h / 2, width: node2.boundingbox().w, height: node2.boundingbox().h }); @@ -148802,7 +151021,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var source = edge.source(); var target = edge.target(); if (source.css("display") != "none" && target.css("display") != "none") { - if (options3.quality == "draft") { + if (options2.quality == "draft") { var sourceNodeIndex = nodeIndexes2.get(source.id()); var targetNodeIndex = nodeIndexes2.get(target.id()); var sourceCenter = []; @@ -148837,14 +151056,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } } }); - var shiftResult = layUtil.packComponents(subgraphs, options3.randomize).shifts; - if (options3.quality == "draft") { + var shiftResult = layUtil.packComponents(subgraphs, options2.randomize).shifts; + if (options2.quality == "draft") { spectralResult.forEach(function(result2, index) { var newXCoords = result2.xCoords.map(function(x5) { return x5 + shiftResult[index].dx; }); - var newYCoords = result2.yCoords.map(function(y5) { - return y5 + shiftResult[index].dy; + var newYCoords = result2.yCoords.map(function(y6) { + return y6 + shiftResult[index].dy; }); result2.xCoords = newXCoords; result2.yCoords = newYCoords; @@ -148863,7 +151082,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } } var getPositions = /* @__PURE__ */ __name(function getPositions2(ele, i3) { - if (options3.quality == "default" || options3.quality == "proof") { + if (options2.quality == "default" || options2.quality == "proof") { if (typeof ele === "number") { ele = i3; } @@ -148876,7 +151095,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; node2 = result2[theId]; } }); - if (options3.nodeDimensionsIncludeLabels) { + if (options2.nodeDimensionsIncludeLabels) { if (node2.labelWidth) { if (node2.labelPosHorizontal == "left") { pos.x += node2.labelWidth / 2; @@ -148912,13 +151131,13 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }; } }, "getPositions"); - if (options3.quality == "default" || options3.quality == "proof" || options3.randomize) { + if (options2.quality == "default" || options2.quality == "proof" || options2.randomize) { var parentsWithoutChildren = aux.calcParentsWithoutChildren(cy, eles); var _hiddenEles = eles.filter(function(ele) { return ele.css("display") == "none"; }); - options3.eles = eles.not(_hiddenEles); - eles.nodes().not(":parent").not(_hiddenEles).layoutPositions(layout6, options3, getPositions); + options2.eles = eles.not(_hiddenEles); + eles.nodes().not(":parent").not(_hiddenEles).layoutPositions(layout6, options2, getPositions); if (parentsWithoutChildren.length > 0) { parentsWithoutChildren.forEach(function(ele) { ele.position(getPositions(ele)); @@ -148930,21 +151149,21 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }, "run") }]); return Layout3; - }(); + })(); module3.exports = Layout2; - } + }) ), /***/ 657: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { + ((module3, __unused_webpack_exports, __webpack_require__2) => { var aux = __webpack_require__2(548); var Matrix = __webpack_require__2(140).layoutBase.Matrix; var SVD = __webpack_require__2(140).layoutBase.SVD; - var spectralLayout = /* @__PURE__ */ __name(function spectralLayout2(options3) { - var cy = options3.cy; - var eles = options3.eles; - var nodes6 = eles.nodes(); + var spectralLayout = /* @__PURE__ */ __name(function spectralLayout2(options2) { + var cy = options2.cy; + var eles = options2.eles; + var nodes5 = eles.nodes(); var parentNodes = eles.nodes(":parent"); var dummyNodes = /* @__PURE__ */ new Map(); var nodeIndexes = /* @__PURE__ */ new Map(); @@ -148954,33 +151173,33 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var yCoords = []; var samplesColumn = []; var minDistancesColumn = []; - var C2 = []; + var C3 = []; var PHI = []; var INV = []; var firstSample = void 0; var nodeSize = void 0; var infinity = 1e8; var small = 1e-9; - var piTol = options3.piTol; - var samplingType = options3.samplingType; - var nodeSeparation = options3.nodeSeparation; + var piTol = options2.piTol; + var samplingType = options2.samplingType; + var nodeSeparation = options2.nodeSeparation; var sampleSize = void 0; var randomSampleCR = /* @__PURE__ */ __name(function randomSampleCR2() { var sample2 = 0; - var count = 0; + var count2 = 0; var flag = false; - while (count < sampleSize) { + while (count2 < sampleSize) { sample2 = Math.floor(Math.random() * nodeSize); flag = false; - for (var i3 = 0; i3 < count; i3++) { + for (var i3 = 0; i3 < count2; i3++) { if (samplesColumn[i3] == sample2) { flag = true; break; } } if (!flag) { - samplesColumn[count] = sample2; - count++; + samplesColumn[count2] = sample2; + count2++; } else { continue; } @@ -149010,11 +151229,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; path4[++back] = temp; } } - C2[current][index2] = distance2[current] * nodeSeparation; + C3[current][index2] = distance2[current] * nodeSeparation; } if (samplingMethod) { for (var _i2 = 0; _i2 < nodeSize; _i2++) { - if (C2[_i2][index2] < minDistancesColumn[_i2]) minDistancesColumn[_i2] = C2[_i2][index2]; + if (C3[_i2][index2] < minDistancesColumn[_i2]) minDistancesColumn[_i2] = C3[_i2][index2]; } for (var _i3 = 0; _i3 < nodeSize; _i3++) { if (minDistancesColumn[_i3] > max_dist) { @@ -149044,8 +151263,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } } for (var _i6 = 0; _i6 < nodeSize; _i6++) { - for (var j2 = 0; j2 < sampleSize; j2++) { - C2[_i6][j2] *= C2[_i6][j2]; + for (var j3 = 0; j3 < sampleSize; j3++) { + C3[_i6][j3] *= C3[_i6][j3]; } } for (var _i7 = 0; _i7 < sampleSize; _i7++) { @@ -149053,7 +151272,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } for (var _i8 = 0; _i8 < sampleSize; _i8++) { for (var _j = 0; _j < sampleSize; _j++) { - PHI[_i8][_j] = C2[samplesColumn[_j]][_i8]; + PHI[_i8][_j] = C3[samplesColumn[_j]][_i8]; } } }, "allBFS"); @@ -149066,10 +151285,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var a_Sig = []; for (var i3 = 0; i3 < sampleSize; i3++) { a_Sig[i3] = []; - for (var j2 = 0; j2 < sampleSize; j2++) { - a_Sig[i3][j2] = 0; - if (i3 == j2) { - a_Sig[i3][j2] = a_q[i3] / (a_q[i3] * a_q[i3] + max_s / (a_q[i3] * a_q[i3])); + for (var j3 = 0; j3 < sampleSize; j3++) { + a_Sig[i3][j3] = 0; + if (i3 == j3) { + a_Sig[i3][j3] = a_q[i3] / (a_q[i3] * a_q[i3] + max_s / (a_q[i3] * a_q[i3])); } } } @@ -149081,23 +151300,23 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var Y1 = []; var Y22 = []; var V1 = []; - var V2 = []; + var V22 = []; for (var i3 = 0; i3 < nodeSize; i3++) { Y1[i3] = Math.random(); Y22[i3] = Math.random(); } Y1 = Matrix.normalize(Y1); Y22 = Matrix.normalize(Y22); - var count = 0; + var count2 = 0; var current = small; var previous = small; var temp = void 0; while (true) { - count++; + count2++; for (var _i9 = 0; _i9 < nodeSize; _i9++) { V1[_i9] = Y1[_i9]; } - Y1 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V1), C2, INV)); + Y1 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V1), C3, INV)); theta1 = Matrix.dotProduct(V1, Y1); Y1 = Matrix.normalize(Y1); current = Matrix.dotProduct(V1, Y1); @@ -149110,18 +151329,18 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; for (var _i10 = 0; _i10 < nodeSize; _i10++) { V1[_i10] = Y1[_i10]; } - count = 0; + count2 = 0; previous = small; while (true) { - count++; + count2++; for (var _i11 = 0; _i11 < nodeSize; _i11++) { - V2[_i11] = Y22[_i11]; + V22[_i11] = Y22[_i11]; } - V2 = Matrix.minusOp(V2, Matrix.multCons(V1, Matrix.dotProduct(V1, V2))); - Y22 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V2), C2, INV)); - theta2 = Matrix.dotProduct(V2, Y22); + V22 = Matrix.minusOp(V22, Matrix.multCons(V1, Matrix.dotProduct(V1, V22))); + Y22 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V22), C3, INV)); + theta2 = Matrix.dotProduct(V22, Y22); Y22 = Matrix.normalize(Y22); - current = Matrix.dotProduct(V2, Y22); + current = Matrix.dotProduct(V22, Y22); temp = Math.abs(current / previous); if (temp <= 1 + piTol && temp >= 1) { break; @@ -149129,19 +151348,19 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; previous = current; } for (var _i12 = 0; _i12 < nodeSize; _i12++) { - V2[_i12] = Y22[_i12]; + V22[_i12] = Y22[_i12]; } xCoords = Matrix.multCons(V1, Math.sqrt(Math.abs(theta1))); - yCoords = Matrix.multCons(V2, Math.sqrt(Math.abs(theta2))); + yCoords = Matrix.multCons(V22, Math.sqrt(Math.abs(theta2))); }, "powerIteration"); - aux.connectComponents(cy, eles, aux.getTopMostNodes(nodes6), dummyNodes); + aux.connectComponents(cy, eles, aux.getTopMostNodes(nodes5), dummyNodes); parentNodes.forEach(function(ele) { aux.connectComponents(cy, eles, aux.getTopMostNodes(ele.descendants().intersection(eles)), dummyNodes); }); var index = 0; - for (var i2 = 0; i2 < nodes6.length; i2++) { - if (!nodes6[i2].isParent()) { - nodeIndexes.set(nodes6[i2].id(), index++); + for (var i2 = 0; i2 < nodes5.length; i2++) { + if (!nodes5[i2].isParent()) { + nodeIndexes.set(nodes5[i2].id(), index++); } } var _iteratorNormalCompletion = true; @@ -149184,7 +151403,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); parentChildMap.set(ele.id(), children2.nodes(":childless")[index2].id()); }); - nodes6.forEach(function(ele) { + nodes5.forEach(function(ele) { var eleIndex = void 0; if (ele.isParent()) eleIndex = nodeIndexes.get(parentChildMap.get(ele.id())); else eleIndex = nodeIndexes.get(ele.id()); @@ -149198,9 +151417,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var _loop = /* @__PURE__ */ __name(function _loop2(_key2) { var eleIndex = nodeIndexes.get(_key2); var disconnectedId = void 0; - dummyNodes.get(_key2).forEach(function(id29) { - if (cy.getElementById(id29).isParent()) disconnectedId = parentChildMap.get(id29); - else disconnectedId = id29; + dummyNodes.get(_key2).forEach(function(id30) { + if (cy.getElementById(id30).isParent()) disconnectedId = parentChildMap.get(id30); + else disconnectedId = id30; allNodesNeighborhood[eleIndex].push(disconnectedId); allNodesNeighborhood[nodeIndexes.get(disconnectedId)].push(_key2); }); @@ -149230,14 +151449,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; nodeSize = nodeIndexes.size; var spectralResult = void 0; if (nodeSize > 2) { - sampleSize = nodeSize < options3.sampleSize ? nodeSize : options3.sampleSize; + sampleSize = nodeSize < options2.sampleSize ? nodeSize : options2.sampleSize; for (var _i14 = 0; _i14 < nodeSize; _i14++) { - C2[_i14] = []; + C3[_i14] = []; } for (var _i15 = 0; _i15 < sampleSize; _i15++) { INV[_i15] = []; } - if (options3.quality == "draft" || options3.step == "all") { + if (options2.quality == "draft" || options2.step == "all") { allBFS(samplingType); sample(); powerIteration(); @@ -149260,7 +151479,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; if (nodeSize == 2) { var secondNode = cy.getElementById(iterator.next().value); var secondNodeWidth = secondNode.outerWidth(); - xCoords.push(firstNodePos.x + firstNodeWidth / 2 + secondNodeWidth / 2 + options3.idealEdgeLength); + xCoords.push(firstNodePos.x + firstNodeWidth / 2 + secondNodeWidth / 2 + options2.idealEdgeLength); yCoords.push(firstNodePos.y); } spectralResult = { nodeIndexes, xCoords, yCoords }; @@ -149268,12 +151487,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } }, "spectralLayout"); module3.exports = { spectralLayout }; - } + }) ), /***/ 579: ( /***/ - (module3, __unused_webpack_exports, __webpack_require__2) => { + ((module3, __unused_webpack_exports, __webpack_require__2) => { var impl2 = __webpack_require__2(212); var register = /* @__PURE__ */ __name(function register2(cytoscape4) { if (!cytoscape4) { @@ -149285,14 +151504,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; register(cytoscape); } module3.exports = register; - } + }) ), /***/ 140: ( /***/ - (module3) => { + ((module3) => { module3.exports = __WEBPACK_EXTERNAL_MODULE__140__; - } + }) ) /******/ }; @@ -149372,19 +151591,20 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); // src/diagrams/architecture/svgDraw.ts - var drawEdges2, drawGroups, drawServices, drawJunctions; - var init_svgDraw6 = __esm({ + var drawEdges, drawGroups, drawServices, drawJunctions; + var init_svgDraw5 = __esm({ "src/diagrams/architecture/svgDraw.ts"() { "use strict"; - init_icons(); init_diagramAPI(); init_createText(); - init_architectureDb(); + init_icons(); + init_common(); init_architectureIcons(); init_architectureTypes(); - drawEdges2 = /* @__PURE__ */ __name(async function(edgesEl, cy) { - const padding2 = getConfigField("padding"); - const iconSize = getConfigField("iconSize"); + init_utils2(); + drawEdges = /* @__PURE__ */ __name(async function(edgesEl, cy, db7) { + const padding2 = db7.getConfigField("padding"); + const iconSize = db7.getConfigField("iconSize"); const halfIconSize = iconSize / 2; const arrowSize = iconSize / 6; const halfArrowSize = arrowSize / 2; @@ -149419,14 +151639,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; endY += targetDir === "T" ? -groupEdgeShift : groupEdgeShift + 18; } } - if (!sourceGroup && db9.getNode(source)?.type === "junction") { + if (!sourceGroup && db7.getNode(source)?.type === "junction") { if (isArchitectureDirectionX(sourceDir)) { startX2 += sourceDir === "L" ? halfIconSize : -halfIconSize; } else { startY2 += sourceDir === "T" ? halfIconSize : -halfIconSize; } } - if (!targetGroup && db9.getNode(target)?.type === "junction") { + if (!targetGroup && db7.getNode(target)?.type === "junction") { if (isArchitectureDirectionX(targetDir)) { endX += targetDir === "L" ? halfIconSize : -halfIconSize; } else { @@ -149435,7 +151655,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; } if (edge[0]._private.rscratch) { const g2 = edgesEl.insert("g"); - g2.insert("path").attr("d", `M ${startX2},${startY2} L ${midX},${midY} L${endX},${endY} `).attr("class", "edge"); + g2.insert("path").attr("d", `M ${startX2},${startY2} L ${midX},${midY} L${endX},${endY} `).attr("class", "edge").attr("id", getEdgeId(source, target, { prefix: "L" })); if (sourceArrow) { const xShift = isArchitectureDirectionX(sourceDir) ? ArchitectureDirectionArrowShift[sourceDir](startX2, arrowSize) : startX2 - halfArrowSize; const yShift = isArchitectureDirectionY(sourceDir) ? ArchitectureDirectionArrowShift[sourceDir](startY2, arrowSize) : startY2 - halfArrowSize; @@ -149476,15 +151696,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const pair = getArchitectureDirectionPair(sourceDir, targetDir); if (pair && isArchitecturePairXY(pair)) { const bboxOrig = textElem.node().getBoundingClientRect(); - const [x5, y5] = getArchitectureDirectionXYFactors(pair); - textElem.attr("dominant-baseline", "auto").attr("transform", `rotate(${-1 * x5 * y5 * 45})`); + const [x5, y6] = getArchitectureDirectionXYFactors(pair); + textElem.attr("dominant-baseline", "auto").attr("transform", `rotate(${-1 * x5 * y6 * 45})`); const bboxNew = textElem.node().getBoundingClientRect(); textElem.attr( "transform", ` translate(${midX}, ${midY - bboxOrig.height / 2}) - translate(${x5 * bboxNew.width / 2}, ${y5 * bboxNew.height / 2}) - rotate(${-1 * x5 * y5 * 45}, 0, ${bboxOrig.height / 2}) + translate(${x5 * bboxNew.width / 2}, ${y6 * bboxNew.height / 2}) + rotate(${-1 * x5 * y6 * 45}, 0, ${bboxOrig.height / 2}) ` ); } @@ -149494,25 +151714,26 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }) ); }, "drawEdges"); - drawGroups = /* @__PURE__ */ __name(async function(groupsEl, cy) { - const padding2 = getConfigField("padding"); + drawGroups = /* @__PURE__ */ __name(async function(groupsEl, cy, db7) { + const padding2 = db7.getConfigField("padding"); const groupIconSize = padding2 * 0.75; - const fontSize = getConfigField("fontSize"); - const iconSize = getConfigField("iconSize"); + const fontSize = db7.getConfigField("fontSize"); + const iconSize = db7.getConfigField("iconSize"); const halfIconSize = iconSize / 2; await Promise.all( cy.nodes().map(async (node2) => { - const data6 = nodeData(node2); - if (data6.type === "group") { - const { h: h2, w: w3, x1, y1 } = node2.boundingBox(); - groupsEl.append("rect").attr("x", x1 + halfIconSize).attr("y", y1 + halfIconSize).attr("width", w3).attr("height", h2).attr("class", "node-bkg"); + const data5 = nodeData(node2); + if (data5.type === "group") { + const { h: h3, w: w4, x1, y1 } = node2.boundingBox(); + const groupsNode = groupsEl.append("rect"); + groupsNode.attr("id", `group-${data5.id}`).attr("x", x1 + halfIconSize).attr("y", y1 + halfIconSize).attr("width", w4).attr("height", h3).attr("class", "node-bkg"); const groupLabelContainer = groupsEl.append("g"); let shiftedX1 = x1; let shiftedY1 = y1; - if (data6.icon) { + if (data5.icon) { const bkgElem = groupLabelContainer.append("g"); bkgElem.html( - `${await getIconSVG(data6.icon, { height: groupIconSize, width: groupIconSize, fallbackPrefix: architectureIcons.prefix })}` + `${await getIconSVG(data5.icon, { height: groupIconSize, width: groupIconSize, fallbackPrefix: architectureIcons.prefix })}` ); bkgElem.attr( "transform", @@ -149521,14 +151742,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; shiftedX1 += groupIconSize; shiftedY1 += fontSize / 2 - 1 - 2; } - if (data6.label) { + if (data5.label) { const textElem = groupLabelContainer.append("g"); await createText( textElem, - data6.label, + data5.label, { useHtmlLabels: false, - width: w3, + width: w4, classes: "architecture-service-label" }, getConfig2() @@ -149539,14 +151760,16 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; "translate(" + (shiftedX1 + halfIconSize + 4) + ", " + (shiftedY1 + halfIconSize + 2) + ")" ); } + db7.setElementForId(data5.id, groupsNode); } }) ); }, "drawGroups"); - drawServices = /* @__PURE__ */ __name(async function(db10, elem, services) { + drawServices = /* @__PURE__ */ __name(async function(db7, elem, services) { + const config5 = getConfig2(); for (const service of services) { const serviceElem = elem.append("g"); - const iconSize = getConfigField("iconSize"); + const iconSize = db7.getConfigField("iconSize"); if (service.title) { const textElem = serviceElem.append("g"); await createText( @@ -149557,7 +151780,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; width: iconSize * 1.5, classes: "architecture-service-label" }, - getConfig2() + config5 ); textElem.attr("dy", "1em").attr("alignment-baseline", "middle").attr("dominant-baseline", "middle").attr("text-anchor", "middle"); textElem.attr("transform", "translate(" + iconSize / 2 + ", " + iconSize + ")"); @@ -149573,7 +151796,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; ); const textElemContainer = bkgElem.append("g"); const fo = textElemContainer.append("foreignObject").attr("width", iconSize).attr("height", iconSize); - const divElem = fo.append("div").attr("class", "node-icon-text").attr("style", `height: ${iconSize}px;`).append("div").html(service.iconText); + const divElem = fo.append("div").attr("class", "node-icon-text").attr("style", `height: ${iconSize}px;`).append("div").html(sanitizeText(service.iconText, config5)); const fontSize = parseInt( window.getComputedStyle(divElem.node(), null).getPropertyValue("font-size").replace(/\D/g, "") ) ?? 16; @@ -149584,32 +151807,32 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; `M0 ${iconSize} v${-iconSize} q0,-5 5,-5 h${iconSize} q5,0 5,5 v${iconSize} H0 Z` ); } - serviceElem.attr("class", "architecture-service"); - const { width: width3, height: height2 } = serviceElem._groups[0][0].getBBox(); + serviceElem.attr("id", `service-${service.id}`).attr("class", "architecture-service"); + const { width: width3, height: height2 } = serviceElem.node().getBBox(); service.width = width3; service.height = height2; - db10.setElementForId(service.id, serviceElem); + db7.setElementForId(service.id, serviceElem); } return 0; }, "drawServices"); - drawJunctions = /* @__PURE__ */ __name(function(db10, elem, junctions) { + drawJunctions = /* @__PURE__ */ __name(function(db7, elem, junctions) { junctions.forEach((junction) => { const junctionElem = elem.append("g"); - const iconSize = getConfigField("iconSize"); + const iconSize = db7.getConfigField("iconSize"); const bkgElem = junctionElem.append("g"); bkgElem.append("rect").attr("id", "node-" + junction.id).attr("fill-opacity", "0").attr("width", iconSize).attr("height", iconSize); junctionElem.attr("class", "architecture-junction"); const { width: width3, height: height2 } = junctionElem._groups[0][0].getBBox(); junctionElem.width = width3; junctionElem.height = height2; - db10.setElementForId(junction.id, junctionElem); + db7.setElementForId(junction.id, junctionElem); }); }, "drawJunctions"); } }); // src/diagrams/architecture/architectureRenderer.ts - function addServices(services, cy) { + function addServices(services, cy, db7) { services.forEach((service) => { cy.add({ group: "nodes", @@ -149619,14 +151842,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; icon: service.icon, label: service.title, parent: service.in, - width: getConfigField("iconSize"), - height: getConfigField("iconSize") + width: db7.getConfigField("iconSize"), + height: db7.getConfigField("iconSize") }, classes: "node-service" }); }); } - function addJunctions(junctions, cy) { + function addJunctions(junctions, cy, db7) { junctions.forEach((junction) => { cy.add({ group: "nodes", @@ -149634,23 +151857,23 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; type: "junction", id: junction.id, parent: junction.in, - width: getConfigField("iconSize"), - height: getConfigField("iconSize") + width: db7.getConfigField("iconSize"), + height: db7.getConfigField("iconSize") }, classes: "node-junction" }); }); } - function positionNodes2(db10, cy) { + function positionNodes(db7, cy) { cy.nodes().map((node2) => { - const data6 = nodeData(node2); - if (data6.type === "group") { + const data5 = nodeData(node2); + if (data5.type === "group") { return; } - data6.x = node2.position().x; - data6.y = node2.position().y; - const nodeElem = db10.getElementById(data6.id); - nodeElem.attr("transform", "translate(" + (data6.x || 0) + "," + (data6.y || 0) + ")"); + data5.x = node2.position().x; + data5.y = node2.position().y; + const nodeElem = db7.getElementById(data5.id); + nodeElem.attr("transform", "translate(" + (data5.x || 0) + "," + (data5.y || 0) + ")"); }); } function addGroups(groups, cy) { @@ -149668,7 +151891,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); }); } - function addEdges(edges3, cy) { + function addEdges2(edges3, cy) { edges3.forEach((parsedEdge) => { const { lhsId, rhsId, lhsInto, lhsGroup, rhsInto, lhsDir, rhsDir, rhsGroup, title: title2 } = parsedEdge; const edgeType = isArchitectureDirectionXY(parsedEdge.lhsDir, parsedEdge.rhsDir) ? "segments" : "straight"; @@ -149693,20 +151916,20 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); }); } - function getAlignments(db10, spatialMaps, groupAlignments) { + function getAlignments(db7, spatialMaps, groupAlignments) { const flattenAlignments = /* @__PURE__ */ __name((alignmentObj, alignmentDir) => { return Object.entries(alignmentObj).reduce( (prev2, [dir2, alignments2]) => { - let cnt5 = 0; + let cnt4 = 0; const arr = Object.entries(alignments2); if (arr.length === 1) { prev2[dir2] = arr[0][1]; return prev2; } for (let i2 = 0; i2 < arr.length - 1; i2++) { - for (let j2 = i2 + 1; j2 < arr.length; j2++) { + for (let j3 = i2 + 1; j3 < arr.length; j3++) { const [aGroupId, aNodeIds] = arr[i2]; - const [bGroupId, bNodeIds] = arr[j2]; + const [bGroupId, bNodeIds] = arr[j3]; const alignment = groupAlignments[aGroupId]?.[bGroupId]; if (alignment === alignmentDir) { prev2[dir2] ??= []; @@ -149715,9 +151938,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; prev2[dir2] ??= []; prev2[dir2] = [...prev2[dir2], ...aNodeIds, ...bNodeIds]; } else { - const keyA = `${dir2}-${cnt5++}`; + const keyA = `${dir2}-${cnt4++}`; prev2[keyA] = aNodeIds; - const keyB = `${dir2}-${cnt5++}`; + const keyB = `${dir2}-${cnt4++}`; prev2[keyB] = bNodeIds; } } @@ -149730,14 +151953,14 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const alignments = spatialMaps.map((spatialMap) => { const horizontalAlignments = {}; const verticalAlignments = {}; - Object.entries(spatialMap).forEach(([id29, [x5, y5]]) => { - const nodeGroup = db10.getNode(id29)?.in ?? "default"; - horizontalAlignments[y5] ??= {}; - horizontalAlignments[y5][nodeGroup] ??= []; - horizontalAlignments[y5][nodeGroup].push(id29); + Object.entries(spatialMap).forEach(([id30, [x5, y6]]) => { + const nodeGroup = db7.getNode(id30)?.in ?? "default"; + horizontalAlignments[y6] ??= {}; + horizontalAlignments[y6][nodeGroup] ??= []; + horizontalAlignments[y6][nodeGroup].push(id30); verticalAlignments[x5] ??= {}; verticalAlignments[x5][nodeGroup] ??= []; - verticalAlignments[x5][nodeGroup].push(id29); + verticalAlignments[x5][nodeGroup].push(id30); }); return { horiz: Object.values(flattenAlignments(horizontalAlignments, "horizontal")).filter( @@ -149762,13 +151985,13 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; vertical }; } - function getRelativeConstraints(spatialMaps) { + function getRelativeConstraints(spatialMaps, db7) { const relativeConstraints = []; const posToStr = /* @__PURE__ */ __name((pos) => `${pos[0]},${pos[1]}`, "posToStr"); const strToPos = /* @__PURE__ */ __name((pos) => pos.split(",").map((p3) => parseInt(p3)), "strToPos"); spatialMaps.forEach((spatialMap) => { const invSpatialMap = Object.fromEntries( - Object.entries(spatialMap).map(([id29, pos]) => [posToStr(pos), id29]) + Object.entries(spatialMap).map(([id30, pos]) => [posToStr(pos), id30]) ); const queue = [posToStr([0, 0])]; const visited = {}; @@ -149793,7 +152016,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; relativeConstraints.push({ [ArchitectureDirectionName[dir2]]: newId2, [ArchitectureDirectionName[getOppositeArchitectureDirection(dir2)]]: currId, - gap: 1.5 * getConfigField("iconSize") + gap: 1.5 * db7.getConfigField("iconSize") }); } }); @@ -149803,8 +152026,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); return relativeConstraints; } - function layoutArchitecture(services, junctions, groups, edges3, db10, { spatialMaps, groupAlignments }) { - return new Promise((resolve3) => { + function layoutArchitecture(services, junctions, groups, edges3, db7, { spatialMaps, groupAlignments }) { + return new Promise((resolve2) => { const renderEl = select_default2("body").append("div").attr("id", "cy").attr("style", "display:none"); const cy = cytoscape2({ container: document.getElementById("cy"), @@ -149842,7 +152065,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; style: { "text-valign": "bottom", "text-halign": "center", - "font-size": `${getConfigField("fontSize")}px` + "font-size": `${db7.getConfigField("fontSize")}px` } }, { @@ -149864,18 +152087,27 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; selector: ".node-group", style: { // @ts-ignore Incorrect library types - padding: `${getConfigField("padding")}px` + padding: `${db7.getConfigField("padding")}px` } } - ] + ], + layout: { + name: "grid", + boundingBox: { + x1: 0, + x2: 100, + y1: 0, + y2: 100 + } + } }); renderEl.remove(); addGroups(groups, cy); - addServices(services, cy); - addJunctions(junctions, cy); - addEdges(edges3, cy); - const alignmentConstraint = getAlignments(db10, spatialMaps, groupAlignments); - const relativePlacementConstraint = getRelativeConstraints(spatialMaps); + addServices(services, cy, db7); + addJunctions(junctions, cy, db7); + addEdges2(edges3, cy); + const alignmentConstraint = getAlignments(db7, spatialMaps, groupAlignments); + const relativePlacementConstraint = getRelativeConstraints(spatialMaps, db7); const layout6 = cy.layout({ name: "fcose", quality: "proof", @@ -149888,7 +152120,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; const [nodeA, nodeB] = edge.connectedNodes(); const { parent: parentA } = nodeData(nodeA); const { parent: parentB } = nodeData(nodeB); - const elasticity = parentA === parentB ? 1.5 * getConfigField("iconSize") : 0.5 * getConfigField("iconSize"); + const elasticity = parentA === parentB ? 1.5 * db7.getConfigField("iconSize") : 0.5 * db7.getConfigField("iconSize"); return elasticity; }, edgeElasticity(edge) { @@ -149903,13 +152135,13 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; }); layout6.one("layoutstop", () => { function getSegmentWeights(source, target, pointX, pointY) { - let W2, D3; + let W3, D4; const { x: sX, y: sY } = source; const { x: tX, y: tY } = target; - D3 = (pointY - sY + (sX - pointX) * (sY - tY) / (sX - tX)) / Math.sqrt(1 + Math.pow((sY - tY) / (sX - tX), 2)); - W2 = Math.sqrt(Math.pow(pointY - sY, 2) + Math.pow(pointX - sX, 2) - Math.pow(D3, 2)); + D4 = (pointY - sY + (sX - pointX) * (sY - tY) / (sX - tX)) / Math.sqrt(1 + Math.pow((sY - tY) / (sX - tX), 2)); + W3 = Math.sqrt(Math.pow(pointY - sY, 2) + Math.pow(pointX - sX, 2) - Math.pow(D4, 2)); const distAB = Math.sqrt(Math.pow(tX - sX, 2) + Math.pow(tY - sY, 2)); - W2 = W2 / distAB; + W3 = W3 / distAB; let delta1 = (tX - sX) * (pointY - sY) - (tY - sY) * (pointX - sX); switch (true) { case delta1 >= 0: @@ -149928,11 +152160,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; delta2 = -1; break; } - D3 = Math.abs(D3) * delta1; - W2 = W2 * delta2; + D4 = Math.abs(D4) * delta1; + W3 = W3 * delta2; return { - distances: D3, - weights: W2 + distances: D4, + weights: W3 }; } __name(getSegmentWeights, "getSegmentWeights"); @@ -149958,7 +152190,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; layout6.run(); cy.ready((e3) => { log.info("Ready", e3); - resolve3(cy); + resolve2(cy); }); }); } @@ -149966,17 +152198,16 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var init_architectureRenderer = __esm({ "src/diagrams/architecture/architectureRenderer.ts"() { "use strict"; - init_icons(); init_cytoscape_esm(); import_cytoscape_fcose = __toESM(require_cytoscape_fcose(), 1); init_src32(); init_logger(); + init_icons(); init_selectSvgElement(); init_setupGraphViewbox(); - init_architectureDb(); init_architectureIcons(); init_architectureTypes(); - init_svgDraw6(); + init_svgDraw5(); registerIconPacks([ { name: architectureIcons.prefix, @@ -149986,33 +152217,33 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; cytoscape2.use(import_cytoscape_fcose.default); __name(addServices, "addServices"); __name(addJunctions, "addJunctions"); - __name(positionNodes2, "positionNodes"); + __name(positionNodes, "positionNodes"); __name(addGroups, "addGroups"); - __name(addEdges, "addEdges"); + __name(addEdges2, "addEdges"); __name(getAlignments, "getAlignments"); __name(getRelativeConstraints, "getRelativeConstraints"); __name(layoutArchitecture, "layoutArchitecture"); - draw24 = /* @__PURE__ */ __name(async (text4, id29, _version, diagObj) => { - const db10 = diagObj.db; - const services = db10.getServices(); - const junctions = db10.getJunctions(); - const groups = db10.getGroups(); - const edges3 = db10.getEdges(); - const ds = db10.getDataStructures(); - const svg2 = selectSvgElement(id29); + draw24 = /* @__PURE__ */ __name(async (text4, id30, _version, diagObj) => { + const db7 = diagObj.db; + const services = db7.getServices(); + const junctions = db7.getJunctions(); + const groups = db7.getGroups(); + const edges3 = db7.getEdges(); + const ds = db7.getDataStructures(); + const svg2 = selectSvgElement(id30); const edgesElem = svg2.append("g"); edgesElem.attr("class", "architecture-edges"); const servicesElem = svg2.append("g"); servicesElem.attr("class", "architecture-services"); const groupElem = svg2.append("g"); groupElem.attr("class", "architecture-groups"); - await drawServices(db10, servicesElem, services); - drawJunctions(db10, servicesElem, junctions); - const cy = await layoutArchitecture(services, junctions, groups, edges3, db10, ds); - await drawEdges2(edgesElem, cy); - await drawGroups(groupElem, cy); - positionNodes2(db10, cy); - setupGraphViewbox(void 0, svg2, getConfigField("padding"), getConfigField("useMaxWidth")); + await drawServices(db7, servicesElem, services); + drawJunctions(db7, servicesElem, junctions); + const cy = await layoutArchitecture(services, junctions, groups, edges3, db7, ds); + await drawEdges(edgesElem, cy, db7); + await drawGroups(groupElem, cy, db7); + positionNodes(db7, cy); + setupGraphViewbox(void 0, svg2, db7.getConfigField("padding"), db7.getConfigField("useMaxWidth")); }, "draw"); renderer8 = { draw: draw24 }; } @@ -150032,14 +152263,602 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; init_architectureStyles(); init_architectureRenderer(); diagram25 = { - parser: parser23, - db: db9, + parser: parser22, + get db() { + return new ArchitectureDB(); + }, renderer: renderer8, styles: architectureStyles_default }; } }); + // src/diagrams/treemap/db.ts + var TreeMapDB; + var init_db3 = __esm({ + "src/diagrams/treemap/db.ts"() { + "use strict"; + init_defaultConfig(); + init_config(); + init_utils2(); + init_handDrawnShapeStyles(); + init_commonDb(); + TreeMapDB = class { + constructor() { + this.nodes = []; + this.levels = /* @__PURE__ */ new Map(); + this.outerNodes = []; + this.classes = /* @__PURE__ */ new Map(); + this.setAccTitle = setAccTitle; + this.getAccTitle = getAccTitle; + this.setDiagramTitle = setDiagramTitle; + this.getDiagramTitle = getDiagramTitle; + this.getAccDescription = getAccDescription; + this.setAccDescription = setAccDescription; + } + static { + __name(this, "TreeMapDB"); + } + getNodes() { + return this.nodes; + } + getConfig() { + const defaultConfig4 = defaultConfig_default; + const userConfig = getConfig(); + return cleanAndMerge({ + ...defaultConfig4.treemap, + ...userConfig.treemap ?? {} + }); + } + addNode(node2, level) { + this.nodes.push(node2); + this.levels.set(node2, level); + if (level === 0) { + this.outerNodes.push(node2); + this.root ??= node2; + } + } + getRoot() { + return { name: "", children: this.outerNodes }; + } + addClass(id30, _style) { + const styleClass = this.classes.get(id30) ?? { id: id30, styles: [], textStyles: [] }; + const styles4 = _style.replace(/\\,/g, "\xA7\xA7\xA7").replace(/,/g, ";").replace(/ยงยงยง/g, ",").split(";"); + if (styles4) { + styles4.forEach((s2) => { + if (isLabelStyle(s2)) { + if (styleClass?.textStyles) { + styleClass.textStyles.push(s2); + } else { + styleClass.textStyles = [s2]; + } + } + if (styleClass?.styles) { + styleClass.styles.push(s2); + } else { + styleClass.styles = [s2]; + } + }); + } + this.classes.set(id30, styleClass); + } + getClasses() { + return this.classes; + } + getStylesForClass(classSelector) { + return this.classes.get(classSelector)?.styles ?? []; + } + clear() { + clear(); + this.nodes = []; + this.levels = /* @__PURE__ */ new Map(); + this.outerNodes = []; + this.classes = /* @__PURE__ */ new Map(); + this.root = void 0; + } + }; + } + }); + + // src/diagrams/treemap/utils.ts + function buildHierarchy(items) { + if (!items.length) { + return []; + } + const root3 = []; + const stack = []; + items.forEach((item) => { + const node2 = { + name: item.name, + children: item.type === "Leaf" ? void 0 : [] + }; + node2.classSelector = item?.classSelector; + if (item?.cssCompiledStyles) { + node2.cssCompiledStyles = [item.cssCompiledStyles]; + } + if (item.type === "Leaf" && item.value !== void 0) { + node2.value = item.value; + } + while (stack.length > 0 && stack[stack.length - 1].level >= item.level) { + stack.pop(); + } + if (stack.length === 0) { + root3.push(node2); + } else { + const parent4 = stack[stack.length - 1].node; + if (parent4.children) { + parent4.children.push(node2); + } else { + parent4.children = [node2]; + } + } + if (item.type !== "Leaf") { + stack.push({ node: node2, level: item.level }); + } + }); + return root3; + } + var init_utils6 = __esm({ + "src/diagrams/treemap/utils.ts"() { + "use strict"; + __name(buildHierarchy, "buildHierarchy"); + } + }); + + // src/diagrams/treemap/parser.ts + var populate18, getItemName, parser23; + var init_parser5 = __esm({ + "src/diagrams/treemap/parser.ts"() { + "use strict"; + init_mermaid_parser_core(); + init_logger(); + init_populateCommonDb(); + init_utils6(); + init_db3(); + populate18 = /* @__PURE__ */ __name((ast, db7) => { + populateCommonDb(ast, db7); + const items = []; + for (const row of ast.TreemapRows ?? []) { + if (row.$type === "ClassDefStatement") { + db7.addClass(row.className ?? "", row.styleText ?? ""); + } + } + for (const row of ast.TreemapRows ?? []) { + const item = row.item; + if (!item) { + continue; + } + const level = row.indent ? parseInt(row.indent) : 0; + const name = getItemName(item); + const styles4 = item.classSelector ? db7.getStylesForClass(item.classSelector) : []; + const cssCompiledStyles = styles4.length > 0 ? styles4.join(";") : void 0; + const itemData = { + level, + name, + type: item.$type, + value: item.value, + classSelector: item.classSelector, + cssCompiledStyles + }; + items.push(itemData); + } + const hierarchyNodes = buildHierarchy(items); + const addNodesRecursively = /* @__PURE__ */ __name((nodes5, level) => { + for (const node2 of nodes5) { + db7.addNode(node2, level); + if (node2.children && node2.children.length > 0) { + addNodesRecursively(node2.children, level + 1); + } + } + }, "addNodesRecursively"); + addNodesRecursively(hierarchyNodes, 0); + }, "populate"); + getItemName = /* @__PURE__ */ __name((item) => { + return item.name ? String(item.name) : ""; + }, "getItemName"); + parser23 = { + // @ts-expect-error - TreeMapDB is not assignable to DiagramDB + parser: { yy: void 0 }, + parse: /* @__PURE__ */ __name(async (text4) => { + try { + const parseFunc = parse3; + const ast = await parseFunc("treemap", text4); + log.debug("Treemap AST:", ast); + const db7 = parser23.parser?.yy; + if (!(db7 instanceof TreeMapDB)) { + throw new Error( + "parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues." + ); + } + populate18(ast, db7); + } catch (error3) { + log.error("Error parsing treemap:", error3); + throw error3; + } + }, "parse") + }; + } + }); + + // src/diagrams/treemap/renderer.ts + var DEFAULT_INNER_PADDING, SECTION_INNER_PADDING, SECTION_HEADER_HEIGHT, draw25, getClasses6, renderer9; + var init_renderer3 = __esm({ + "src/diagrams/treemap/renderer.ts"() { + "use strict"; + init_selectSvgElement(); + init_setupViewPortForSVG(); + init_setupGraphViewbox(); + init_src32(); + init_handDrawnShapeStyles(); + init_config(); + init_logger(); + DEFAULT_INNER_PADDING = 10; + SECTION_INNER_PADDING = 10; + SECTION_HEADER_HEIGHT = 25; + draw25 = /* @__PURE__ */ __name((_text, id30, _version, diagram27) => { + const treemapDb = diagram27.db; + const config5 = treemapDb.getConfig(); + const treemapInnerPadding = config5.padding ?? DEFAULT_INNER_PADDING; + const title2 = treemapDb.getDiagramTitle(); + const root3 = treemapDb.getRoot(); + const { themeVariables } = getConfig(); + if (!root3) { + return; + } + const titleHeight = title2 ? 30 : 0; + const svg2 = selectSvgElement(id30); + const width3 = config5.nodeWidth ? config5.nodeWidth * SECTION_INNER_PADDING : 960; + const height2 = config5.nodeHeight ? config5.nodeHeight * SECTION_INNER_PADDING : 500; + const svgWidth = width3; + const svgHeight = height2 + titleHeight; + svg2.attr("viewBox", `0 0 ${svgWidth} ${svgHeight}`); + configureSvgSize(svg2, svgHeight, svgWidth, config5.useMaxWidth); + let valueFormat; + try { + const formatStr = config5.valueFormat || ","; + if (formatStr === "$0,0") { + valueFormat = /* @__PURE__ */ __name((value2) => "$" + format2(",")(value2), "valueFormat"); + } else if (formatStr.startsWith("$") && formatStr.includes(",")) { + const precision = /\.\d+/.exec(formatStr); + const precisionStr = precision ? precision[0] : ""; + valueFormat = /* @__PURE__ */ __name((value2) => "$" + format2("," + precisionStr)(value2), "valueFormat"); + } else if (formatStr.startsWith("$")) { + const restOfFormat = formatStr.substring(1); + valueFormat = /* @__PURE__ */ __name((value2) => "$" + format2(restOfFormat || "")(value2), "valueFormat"); + } else { + valueFormat = format2(formatStr); + } + } catch (error3) { + log.error("Error creating format function:", error3); + valueFormat = format2(","); + } + const colorScale = ordinal().range([ + "transparent", + themeVariables.cScale0, + themeVariables.cScale1, + themeVariables.cScale2, + themeVariables.cScale3, + themeVariables.cScale4, + themeVariables.cScale5, + themeVariables.cScale6, + themeVariables.cScale7, + themeVariables.cScale8, + themeVariables.cScale9, + themeVariables.cScale10, + themeVariables.cScale11 + ]); + const colorScalePeer = ordinal().range([ + "transparent", + themeVariables.cScalePeer0, + themeVariables.cScalePeer1, + themeVariables.cScalePeer2, + themeVariables.cScalePeer3, + themeVariables.cScalePeer4, + themeVariables.cScalePeer5, + themeVariables.cScalePeer6, + themeVariables.cScalePeer7, + themeVariables.cScalePeer8, + themeVariables.cScalePeer9, + themeVariables.cScalePeer10, + themeVariables.cScalePeer11 + ]); + const colorScaleLabel = ordinal().range([ + themeVariables.cScaleLabel0, + themeVariables.cScaleLabel1, + themeVariables.cScaleLabel2, + themeVariables.cScaleLabel3, + themeVariables.cScaleLabel4, + themeVariables.cScaleLabel5, + themeVariables.cScaleLabel6, + themeVariables.cScaleLabel7, + themeVariables.cScaleLabel8, + themeVariables.cScaleLabel9, + themeVariables.cScaleLabel10, + themeVariables.cScaleLabel11 + ]); + if (title2) { + svg2.append("text").attr("x", svgWidth / 2).attr("y", titleHeight / 2).attr("class", "treemapTitle").attr("text-anchor", "middle").attr("dominant-baseline", "middle").text(title2); + } + const g2 = svg2.append("g").attr("transform", `translate(0, ${titleHeight})`).attr("class", "treemapContainer"); + const hierarchyRoot = hierarchy(root3).sum((d3) => d3.value ?? 0).sort((a2, b3) => (b3.value ?? 0) - (a2.value ?? 0)); + const treemapLayout = treemap_default().size([width3, height2]).paddingTop( + (d3) => d3.children && d3.children.length > 0 ? SECTION_HEADER_HEIGHT + SECTION_INNER_PADDING : 0 + ).paddingInner(treemapInnerPadding).paddingLeft((d3) => d3.children && d3.children.length > 0 ? SECTION_INNER_PADDING : 0).paddingRight((d3) => d3.children && d3.children.length > 0 ? SECTION_INNER_PADDING : 0).paddingBottom((d3) => d3.children && d3.children.length > 0 ? SECTION_INNER_PADDING : 0).round(true); + const treemapData = treemapLayout(hierarchyRoot); + const branchNodes = treemapData.descendants().filter((d3) => d3.children && d3.children.length > 0); + const sections6 = g2.selectAll(".treemapSection").data(branchNodes).enter().append("g").attr("class", "treemapSection").attr("transform", (d3) => `translate(${d3.x0},${d3.y0})`); + sections6.append("rect").attr("width", (d3) => d3.x1 - d3.x0).attr("height", SECTION_HEADER_HEIGHT).attr("class", "treemapSectionHeader").attr("fill", "none").attr("fill-opacity", 0.6).attr("stroke-width", 0.6).attr("style", (d3) => { + if (d3.depth === 0) { + return "display: none;"; + } + return ""; + }); + sections6.append("clipPath").attr("id", (_d, i2) => `clip-section-${id30}-${i2}`).append("rect").attr("width", (d3) => Math.max(0, d3.x1 - d3.x0 - 12)).attr("height", SECTION_HEADER_HEIGHT); + sections6.append("rect").attr("width", (d3) => d3.x1 - d3.x0).attr("height", (d3) => d3.y1 - d3.y0).attr("class", (_d, i2) => { + return `treemapSection section${i2}`; + }).attr("fill", (d3) => colorScale(d3.data.name)).attr("fill-opacity", 0.6).attr("stroke", (d3) => colorScalePeer(d3.data.name)).attr("stroke-width", 2).attr("stroke-opacity", 0.4).attr("style", (d3) => { + if (d3.depth === 0) { + return "display: none;"; + } + const styles4 = styles2String({ cssCompiledStyles: d3.data.cssCompiledStyles }); + return styles4.nodeStyles + ";" + styles4.borderStyles.join(";"); + }); + sections6.append("text").attr("class", "treemapSectionLabel").attr("x", 6).attr("y", SECTION_HEADER_HEIGHT / 2).attr("dominant-baseline", "middle").text((d3) => d3.depth === 0 ? "" : d3.data.name).attr("font-weight", "bold").attr("style", (d3) => { + if (d3.depth === 0) { + return "display: none;"; + } + const labelStyles = "dominant-baseline: middle; font-size: 12px; fill:" + colorScaleLabel(d3.data.name) + "; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"; + const styles4 = styles2String({ cssCompiledStyles: d3.data.cssCompiledStyles }); + return labelStyles + styles4.labelStyles.replace("color:", "fill:"); + }).each(function(d3) { + if (d3.depth === 0) { + return; + } + const self2 = select_default2(this); + const originalText = d3.data.name; + self2.text(originalText); + const totalHeaderWidth = d3.x1 - d3.x0; + const labelXPosition = 6; + let spaceForTextContent; + if (config5.showValues !== false && d3.value) { + const valueEndsAtXRelative = totalHeaderWidth - 10; + const estimatedValueTextActualWidth = 30; + const gapBetweenLabelAndValue = 10; + const labelMustEndBeforeX = valueEndsAtXRelative - estimatedValueTextActualWidth - gapBetweenLabelAndValue; + spaceForTextContent = labelMustEndBeforeX - labelXPosition; + } else { + const labelOwnRightPadding = 6; + spaceForTextContent = totalHeaderWidth - labelXPosition - labelOwnRightPadding; + } + const minimumWidthToDisplay = 15; + const actualAvailableWidth = Math.max(minimumWidthToDisplay, spaceForTextContent); + const textNode = self2.node(); + const currentTextContentLength = textNode.getComputedTextLength(); + if (currentTextContentLength > actualAvailableWidth) { + const ellipsis = "..."; + let currentTruncatedText = originalText; + while (currentTruncatedText.length > 0) { + currentTruncatedText = originalText.substring(0, currentTruncatedText.length - 1); + if (currentTruncatedText.length === 0) { + self2.text(ellipsis); + if (textNode.getComputedTextLength() > actualAvailableWidth) { + self2.text(""); + } + break; + } + self2.text(currentTruncatedText + ellipsis); + if (textNode.getComputedTextLength() <= actualAvailableWidth) { + break; + } + } + } + }); + if (config5.showValues !== false) { + sections6.append("text").attr("class", "treemapSectionValue").attr("x", (d3) => d3.x1 - d3.x0 - 10).attr("y", SECTION_HEADER_HEIGHT / 2).attr("text-anchor", "end").attr("dominant-baseline", "middle").text((d3) => d3.value ? valueFormat(d3.value) : "").attr("font-style", "italic").attr("style", (d3) => { + if (d3.depth === 0) { + return "display: none;"; + } + const labelStyles = "text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:" + colorScaleLabel(d3.data.name) + "; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"; + const styles4 = styles2String({ cssCompiledStyles: d3.data.cssCompiledStyles }); + return labelStyles + styles4.labelStyles.replace("color:", "fill:"); + }); + } + const leafNodes = treemapData.leaves(); + const cell = g2.selectAll(".treemapLeafGroup").data(leafNodes).enter().append("g").attr("class", (d3, i2) => { + return `treemapNode treemapLeafGroup leaf${i2}${d3.data.classSelector ? ` ${d3.data.classSelector}` : ""}x`; + }).attr("transform", (d3) => `translate(${d3.x0},${d3.y0})`); + cell.append("rect").attr("width", (d3) => d3.x1 - d3.x0).attr("height", (d3) => d3.y1 - d3.y0).attr("class", "treemapLeaf").attr("fill", (d3) => { + return d3.parent ? colorScale(d3.parent.data.name) : colorScale(d3.data.name); + }).attr("style", (d3) => { + const styles4 = styles2String({ cssCompiledStyles: d3.data.cssCompiledStyles }); + return styles4.nodeStyles; + }).attr("fill-opacity", 0.3).attr("stroke", (d3) => { + return d3.parent ? colorScale(d3.parent.data.name) : colorScale(d3.data.name); + }).attr("stroke-width", 3); + cell.append("clipPath").attr("id", (_d, i2) => `clip-${id30}-${i2}`).append("rect").attr("width", (d3) => Math.max(0, d3.x1 - d3.x0 - 4)).attr("height", (d3) => Math.max(0, d3.y1 - d3.y0 - 4)); + const leafLabels = cell.append("text").attr("class", "treemapLabel").attr("x", (d3) => (d3.x1 - d3.x0) / 2).attr("y", (d3) => (d3.y1 - d3.y0) / 2).attr("style", (d3) => { + const labelStyles = "text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:" + colorScaleLabel(d3.data.name) + ";"; + const styles4 = styles2String({ cssCompiledStyles: d3.data.cssCompiledStyles }); + return labelStyles + styles4.labelStyles.replace("color:", "fill:"); + }).attr("clip-path", (_d, i2) => `url(#clip-${id30}-${i2})`).text((d3) => d3.data.name); + leafLabels.each(function(d3) { + const self2 = select_default2(this); + const nodeWidth = d3.x1 - d3.x0; + const nodeHeight = d3.y1 - d3.y0; + const textNode = self2.node(); + const padding2 = 4; + const availableWidth = nodeWidth - 2 * padding2; + const availableHeight = nodeHeight - 2 * padding2; + if (availableWidth < 10 || availableHeight < 10) { + self2.style("display", "none"); + return; + } + let currentLabelFontSize = parseInt(self2.style("font-size"), 10); + const minLabelFontSize = 8; + const originalValueRelFontSize = 28; + const valueScaleFactor = 0.6; + const minValueFontSize = 6; + const spacingBetweenLabelAndValue = 2; + while (textNode.getComputedTextLength() > availableWidth && currentLabelFontSize > minLabelFontSize) { + currentLabelFontSize--; + self2.style("font-size", `${currentLabelFontSize}px`); + } + let prospectiveValueFontSize = Math.max( + minValueFontSize, + Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor)) + ); + let combinedHeight = currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize; + while (combinedHeight > availableHeight && currentLabelFontSize > minLabelFontSize) { + currentLabelFontSize--; + prospectiveValueFontSize = Math.max( + minValueFontSize, + Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor)) + ); + if (prospectiveValueFontSize < minValueFontSize && currentLabelFontSize === minLabelFontSize) { + break; + } + self2.style("font-size", `${currentLabelFontSize}px`); + combinedHeight = currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize; + if (prospectiveValueFontSize <= minValueFontSize && combinedHeight > availableHeight) { + } + } + self2.style("font-size", `${currentLabelFontSize}px`); + if (textNode.getComputedTextLength() > availableWidth || currentLabelFontSize < minLabelFontSize || availableHeight < currentLabelFontSize) { + self2.style("display", "none"); + } + }); + if (config5.showValues !== false) { + const leafValues = cell.append("text").attr("class", "treemapValue").attr("x", (d3) => (d3.x1 - d3.x0) / 2).attr("y", function(d3) { + return (d3.y1 - d3.y0) / 2; + }).attr("style", (d3) => { + const labelStyles = "text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:" + colorScaleLabel(d3.data.name) + ";"; + const styles4 = styles2String({ cssCompiledStyles: d3.data.cssCompiledStyles }); + return labelStyles + styles4.labelStyles.replace("color:", "fill:"); + }).attr("clip-path", (_d, i2) => `url(#clip-${id30}-${i2})`).text((d3) => d3.value ? valueFormat(d3.value) : ""); + leafValues.each(function(d3) { + const valueTextElement = select_default2(this); + const parentCellNode = this.parentNode; + if (!parentCellNode) { + valueTextElement.style("display", "none"); + return; + } + const labelElement = select_default2(parentCellNode).select(".treemapLabel"); + if (labelElement.empty() || labelElement.style("display") === "none") { + valueTextElement.style("display", "none"); + return; + } + const finalLabelFontSize = parseFloat(labelElement.style("font-size")); + const originalValueFontSize = 28; + const valueScaleFactor = 0.6; + const minValueFontSize = 6; + const spacingBetweenLabelAndValue = 2; + const actualValueFontSize = Math.max( + minValueFontSize, + Math.min(originalValueFontSize, Math.round(finalLabelFontSize * valueScaleFactor)) + ); + valueTextElement.style("font-size", `${actualValueFontSize}px`); + const labelCenterY = (d3.y1 - d3.y0) / 2; + const valueTopActualY = labelCenterY + finalLabelFontSize / 2 + spacingBetweenLabelAndValue; + valueTextElement.attr("y", valueTopActualY); + const nodeWidth = d3.x1 - d3.x0; + const nodeTotalHeight = d3.y1 - d3.y0; + const cellBottomPadding = 4; + const maxValueBottomY = nodeTotalHeight - cellBottomPadding; + const availableWidthForValue = nodeWidth - 2 * 4; + if (valueTextElement.node().getComputedTextLength() > availableWidthForValue || valueTopActualY + actualValueFontSize > maxValueBottomY || actualValueFontSize < minValueFontSize) { + valueTextElement.style("display", "none"); + } else { + valueTextElement.style("display", null); + } + }); + } + const diagramPadding = config5.diagramPadding ?? 8; + setupViewPortForSVG(svg2, diagramPadding, "flowchart", config5?.useMaxWidth || false); + }, "draw"); + getClasses6 = /* @__PURE__ */ __name(function(_text, diagramObj) { + return diagramObj.db.getClasses(); + }, "getClasses"); + renderer9 = { draw: draw25, getClasses: getClasses6 }; + } + }); + + // src/diagrams/treemap/styles.ts + var defaultTreemapStyleOptions, getStyles19, styles_default17; + var init_styles19 = __esm({ + "src/diagrams/treemap/styles.ts"() { + "use strict"; + init_utils2(); + defaultTreemapStyleOptions = { + sectionStrokeColor: "black", + sectionStrokeWidth: "1", + sectionFillColor: "#efefef", + leafStrokeColor: "black", + leafStrokeWidth: "1", + leafFillColor: "#efefef", + labelColor: "black", + labelFontSize: "12px", + valueFontSize: "10px", + valueColor: "black", + titleColor: "black", + titleFontSize: "14px" + }; + getStyles19 = /* @__PURE__ */ __name(({ + treemap: treemap2 + } = {}) => { + const options2 = cleanAndMerge(defaultTreemapStyleOptions, treemap2); + return ` + .treemapNode.section { + stroke: ${options2.sectionStrokeColor}; + stroke-width: ${options2.sectionStrokeWidth}; + fill: ${options2.sectionFillColor}; + } + .treemapNode.leaf { + stroke: ${options2.leafStrokeColor}; + stroke-width: ${options2.leafStrokeWidth}; + fill: ${options2.leafFillColor}; + } + .treemapLabel { + fill: ${options2.labelColor}; + font-size: ${options2.labelFontSize}; + } + .treemapValue { + fill: ${options2.valueColor}; + font-size: ${options2.valueFontSize}; + } + .treemapTitle { + fill: ${options2.titleColor}; + font-size: ${options2.titleFontSize}; + } + `; + }, "getStyles"); + styles_default17 = getStyles19; + } + }); + + // src/diagrams/treemap/diagram.ts + var diagram_exports3 = {}; + __export(diagram_exports3, { + diagram: () => diagram26 + }); + var diagram26; + var init_diagram3 = __esm({ + "src/diagrams/treemap/diagram.ts"() { + "use strict"; + init_db3(); + init_parser5(); + init_renderer3(); + init_styles19(); + diagram26 = { + parser: parser23, + get db() { + return new TreeMapDB(); + }, + renderer: renderer9, + styles: styles_default17 + }; + } + }); + // src/mermaid.ts var mermaid_exports = {}; __export(mermaid_exports, { @@ -150055,8 +152874,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt); }, "detector"); var loader = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_c4Diagram2(), c4Diagram_exports)); - return { id: id2, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_c4Diagram2(), c4Diagram_exports)); + return { id: id2, diagram: diagram27 }; }, "loader"); var plugin = { id: id2, @@ -150066,7 +152885,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var c4Detector_default = plugin; // src/diagrams/flowchart/flowDetector.ts - var id3 = "flowchart"; + var id4 = "flowchart"; var detector2 = /* @__PURE__ */ __name((txt, config5) => { if (config5?.flowchart?.defaultRenderer === "dagre-wrapper" || config5?.flowchart?.defaultRenderer === "elk") { return false; @@ -150074,18 +152893,18 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return /^\s*graph/.test(txt); }, "detector"); var loader3 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_flowDiagram(), flowDiagram_exports)); - return { id: id3, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_flowDiagram(), flowDiagram_exports)); + return { id: id4, diagram: diagram27 }; }, "loader"); var plugin2 = { - id: id3, + id: id4, detector: detector2, loader: loader3 }; var flowDetector_default = plugin2; // src/diagrams/flowchart/flowDetector-v2.ts - var id4 = "flowchart-v2"; + var id5 = "flowchart-v2"; var detector3 = /* @__PURE__ */ __name((txt, config5) => { if (config5?.flowchart?.defaultRenderer === "dagre-d3") { return false; @@ -150099,160 +152918,160 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return /^\s*flowchart/.test(txt); }, "detector"); var loader4 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_flowDiagram(), flowDiagram_exports)); - return { id: id4, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_flowDiagram(), flowDiagram_exports)); + return { id: id5, diagram: diagram27 }; }, "loader"); var plugin3 = { - id: id4, + id: id5, detector: detector3, loader: loader4 }; var flowDetector_v2_default = plugin3; // src/diagrams/er/erDetector.ts - var id5 = "er"; + var id6 = "er"; var detector4 = /* @__PURE__ */ __name((txt) => { return /^\s*erDiagram/.test(txt); }, "detector"); var loader5 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_erDiagram2(), erDiagram_exports)); - return { id: id5, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_erDiagram2(), erDiagram_exports)); + return { id: id6, diagram: diagram27 }; }, "loader"); var plugin4 = { - id: id5, + id: id6, detector: detector4, loader: loader5 }; var erDetector_default = plugin4; // src/diagrams/git/gitGraphDetector.ts - var id6 = "gitGraph"; + var id7 = "gitGraph"; var detector5 = /* @__PURE__ */ __name((txt) => { return /^\s*gitGraph/.test(txt); }, "detector"); var loader6 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_gitGraphDiagram(), gitGraphDiagram_exports)); - return { id: id6, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_gitGraphDiagram(), gitGraphDiagram_exports)); + return { id: id7, diagram: diagram27 }; }, "loader"); var plugin5 = { - id: id6, + id: id7, detector: detector5, loader: loader6 }; var gitGraphDetector_default = plugin5; // src/diagrams/gantt/ganttDetector.ts - var id7 = "gantt"; + var id8 = "gantt"; var detector6 = /* @__PURE__ */ __name((txt) => { return /^\s*gantt/.test(txt); }, "detector"); var loader7 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_ganttDiagram(), ganttDiagram_exports)); - return { id: id7, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_ganttDiagram(), ganttDiagram_exports)); + return { id: id8, diagram: diagram27 }; }, "loader"); var plugin6 = { - id: id7, + id: id8, detector: detector6, loader: loader7 }; var ganttDetector_default = plugin6; // src/diagrams/info/infoDetector.ts - var id8 = "info"; + var id9 = "info"; var detector7 = /* @__PURE__ */ __name((txt) => { return /^\s*info/.test(txt); }, "detector"); var loader8 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_infoDiagram(), infoDiagram_exports)); - return { id: id8, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_infoDiagram(), infoDiagram_exports)); + return { id: id9, diagram: diagram27 }; }, "loader"); var info = { - id: id8, + id: id9, detector: detector7, loader: loader8 }; // src/diagrams/pie/pieDetector.ts - var id9 = "pie"; + var id10 = "pie"; var detector8 = /* @__PURE__ */ __name((txt) => { return /^\s*pie/.test(txt); }, "detector"); var loader9 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_pieDiagram(), pieDiagram_exports)); - return { id: id9, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_pieDiagram(), pieDiagram_exports)); + return { id: id10, diagram: diagram27 }; }, "loader"); var pie = { - id: id9, + id: id10, detector: detector8, loader: loader9 }; // src/diagrams/quadrant-chart/quadrantDetector.ts - var id10 = "quadrantChart"; + var id11 = "quadrantChart"; var detector9 = /* @__PURE__ */ __name((txt) => { return /^\s*quadrantChart/.test(txt); }, "detector"); var loader10 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_quadrantDiagram(), quadrantDiagram_exports)); - return { id: id10, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_quadrantDiagram(), quadrantDiagram_exports)); + return { id: id11, diagram: diagram27 }; }, "loader"); var plugin7 = { - id: id10, + id: id11, detector: detector9, loader: loader10 }; var quadrantDetector_default = plugin7; // src/diagrams/xychart/xychartDetector.ts - var id11 = "xychart"; + var id12 = "xychart"; var detector10 = /* @__PURE__ */ __name((txt) => { - return /^\s*xychart-beta/.test(txt); + return /^\s*xychart(-beta)?/.test(txt); }, "detector"); var loader11 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_xychartDiagram(), xychartDiagram_exports)); - return { id: id11, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_xychartDiagram(), xychartDiagram_exports)); + return { id: id12, diagram: diagram27 }; }, "loader"); var plugin8 = { - id: id11, + id: id12, detector: detector10, loader: loader11 }; var xychartDetector_default = plugin8; // src/diagrams/requirement/requirementDetector.ts - var id12 = "requirement"; + var id13 = "requirement"; var detector11 = /* @__PURE__ */ __name((txt) => { return /^\s*requirement(Diagram)?/.test(txt); }, "detector"); var loader12 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_requirementDiagram2(), requirementDiagram_exports)); - return { id: id12, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_requirementDiagram2(), requirementDiagram_exports)); + return { id: id13, diagram: diagram27 }; }, "loader"); var plugin9 = { - id: id12, + id: id13, detector: detector11, loader: loader12 }; var requirementDetector_default = plugin9; // src/diagrams/sequence/sequenceDetector.ts - var id13 = "sequence"; + var id14 = "sequence"; var detector12 = /* @__PURE__ */ __name((txt) => { return /^\s*sequenceDiagram/.test(txt); }, "detector"); var loader13 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_sequenceDiagram2(), sequenceDiagram_exports)); - return { id: id13, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_sequenceDiagram2(), sequenceDiagram_exports)); + return { id: id14, diagram: diagram27 }; }, "loader"); var plugin10 = { - id: id13, + id: id14, detector: detector12, loader: loader13 }; var sequenceDetector_default = plugin10; // src/diagrams/class/classDetector.ts - var id14 = "class"; + var id15 = "class"; var detector13 = /* @__PURE__ */ __name((txt, config5) => { if (config5?.class?.defaultRenderer === "dagre-wrapper") { return false; @@ -150260,18 +153079,18 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return /^\s*classDiagram/.test(txt); }, "detector"); var loader14 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_classDiagram2(), classDiagram_exports)); - return { id: id14, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_classDiagram2(), classDiagram_exports)); + return { id: id15, diagram: diagram27 }; }, "loader"); var plugin11 = { - id: id14, + id: id15, detector: detector13, loader: loader14 }; var classDetector_default = plugin11; // src/diagrams/class/classDetector-V2.ts - var id15 = "classDiagram"; + var id16 = "classDiagram"; var detector14 = /* @__PURE__ */ __name((txt, config5) => { if (/^\s*classDiagram/.test(txt) && config5?.class?.defaultRenderer === "dagre-wrapper") { return true; @@ -150279,18 +153098,18 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return /^\s*classDiagram-v2/.test(txt); }, "detector"); var loader15 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_classDiagram_v2(), classDiagram_v2_exports)); - return { id: id15, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_classDiagram_v2(), classDiagram_v2_exports)); + return { id: id16, diagram: diagram27 }; }, "loader"); var plugin12 = { - id: id15, + id: id16, detector: detector14, loader: loader15 }; var classDetector_V2_default = plugin12; // src/diagrams/state/stateDetector.ts - var id16 = "state"; + var id17 = "state"; var detector15 = /* @__PURE__ */ __name((txt, config5) => { if (config5?.state?.defaultRenderer === "dagre-wrapper") { return false; @@ -150298,18 +153117,18 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return /^\s*stateDiagram/.test(txt); }, "detector"); var loader16 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_stateDiagram2(), stateDiagram_exports)); - return { id: id16, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_stateDiagram2(), stateDiagram_exports)); + return { id: id17, diagram: diagram27 }; }, "loader"); var plugin13 = { - id: id16, + id: id17, detector: detector15, loader: loader16 }; var stateDetector_default = plugin13; // src/diagrams/state/stateDetector-V2.ts - var id17 = "stateDiagram"; + var id18 = "stateDiagram"; var detector16 = /* @__PURE__ */ __name((txt, config5) => { if (/^\s*stateDiagram-v2/.test(txt)) { return true; @@ -150320,27 +153139,27 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return false; }, "detector"); var loader17 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_stateDiagram_v2(), stateDiagram_v2_exports)); - return { id: id17, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_stateDiagram_v2(), stateDiagram_v2_exports)); + return { id: id18, diagram: diagram27 }; }, "loader"); var plugin14 = { - id: id17, + id: id18, detector: detector16, loader: loader17 }; var stateDetector_V2_default = plugin14; // src/diagrams/user-journey/journeyDetector.ts - var id18 = "journey"; + var id19 = "journey"; var detector17 = /* @__PURE__ */ __name((txt) => { return /^\s*journey/.test(txt); }, "detector"); var loader18 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_journeyDiagram(), journeyDiagram_exports)); - return { id: id18, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_journeyDiagram(), journeyDiagram_exports)); + return { id: id19, diagram: diagram27 }; }, "loader"); var plugin15 = { - id: id18, + id: id19, detector: detector17, loader: loader18 }; @@ -150350,9 +153169,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; init_logger(); init_selectSvgElement(); init_setupGraphViewbox(); - var draw16 = /* @__PURE__ */ __name((_text, id29, version2) => { + var draw16 = /* @__PURE__ */ __name((_text, id30, version3) => { log.debug("rendering svg for syntax error\n"); - const svg2 = selectSvgElement(id29); + const svg2 = selectSvgElement(id30); const g2 = svg2.append("g"); svg2.attr("viewBox", "0 0 2412 512"); configureSvgSize(svg2, 100, 512, true); @@ -150381,15 +153200,15 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; "m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z" ); g2.append("text").attr("class", "error-text").attr("x", 1440).attr("y", 250).attr("font-size", "150px").style("text-anchor", "middle").text("Syntax error in text"); - g2.append("text").attr("class", "error-text").attr("x", 1250).attr("y", 400).attr("font-size", "100px").style("text-anchor", "middle").text(`mermaid version ${version2}`); + g2.append("text").attr("class", "error-text").attr("x", 1250).attr("y", 400).attr("font-size", "100px").style("text-anchor", "middle").text(`mermaid version ${version3}`); }, "draw"); - var renderer3 = { draw: draw16 }; - var errorRenderer_default = renderer3; + var renderer5 = { draw: draw16 }; + var errorRenderer_default = renderer5; // src/diagrams/error/errorDiagram.ts var diagram17 = { db: {}, - renderer: renderer3, + renderer: renderer5, parser: { parse: /* @__PURE__ */ __name(() => { return; @@ -150399,12 +153218,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var errorDiagram_default = diagram17; // src/diagrams/flowchart/elk/detector.ts - var id19 = "flowchart-elk"; + var id20 = "flowchart-elk"; var detector18 = /* @__PURE__ */ __name((txt, config5 = {}) => { if ( // If diagram explicitly states flowchart-elk /^\s*flowchart-elk/.test(txt) || // If a flowchart/graph diagram has their default renderer set to elk - /^\s*flowchart|graph/.test(txt) && config5?.flowchart?.defaultRenderer === "elk" + /^\s*(flowchart|graph)/.test(txt) && config5?.flowchart?.defaultRenderer === "elk" ) { config5.layout = "elk"; return true; @@ -150412,27 +153231,27 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return false; }, "detector"); var loader19 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_flowDiagram(), flowDiagram_exports)); - return { id: id19, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_flowDiagram(), flowDiagram_exports)); + return { id: id20, diagram: diagram27 }; }, "loader"); var plugin16 = { - id: id19, + id: id20, detector: detector18, loader: loader19 }; var detector_default = plugin16; // src/diagrams/timeline/detector.ts - var id20 = "timeline"; + var id21 = "timeline"; var detector19 = /* @__PURE__ */ __name((txt) => { return /^\s*timeline/.test(txt); }, "detector"); var loader20 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_timeline_definition(), timeline_definition_exports)); - return { id: id20, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_timeline_definition(), timeline_definition_exports)); + return { id: id21, diagram: diagram27 }; }, "loader"); var plugin17 = { - id: id20, + id: id21, detector: detector19, loader: loader20 }; @@ -150444,8 +153263,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return /^\s*mindmap/.test(txt); }, "detector"); var loader21 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_mindmap_definition(), mindmap_definition_exports)); - return { id: id22, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_mindmap_definition(), mindmap_definition_exports)); + return { id: id22, diagram: diagram27 }; }, "loader"); var plugin18 = { id: id22, @@ -150460,8 +153279,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return /^\s*kanban/.test(txt); }, "detector"); var loader22 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_kanban_definition(), kanban_definition_exports)); - return { id: id23, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_kanban_definition(), kanban_definition_exports)); + return { id: id23, diagram: diagram27 }; }, "loader"); var plugin19 = { id: id23, @@ -150473,11 +153292,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; // src/diagrams/sankey/sankeyDetector.ts var id24 = "sankey"; var detector22 = /* @__PURE__ */ __name((txt) => { - return /^\s*sankey-beta/.test(txt); + return /^\s*sankey(-beta)?/.test(txt); }, "detector"); var loader23 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_sankeyDiagram(), sankeyDiagram_exports)); - return { id: id24, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_sankeyDiagram(), sankeyDiagram_exports)); + return { id: id24, diagram: diagram27 }; }, "loader"); var plugin20 = { id: id24, @@ -150489,11 +153308,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; // src/diagrams/packet/detector.ts var id25 = "packet"; var detector23 = /* @__PURE__ */ __name((txt) => { - return /^\s*packet-beta/.test(txt); + return /^\s*packet(-beta)?/.test(txt); }, "detector"); var loader24 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_diagram(), diagram_exports)); - return { id: id25, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_diagram(), diagram_exports)); + return { id: id25, diagram: diagram27 }; }, "loader"); var packet = { id: id25, @@ -150507,8 +153326,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return /^\s*radar-beta/.test(txt); }, "detector"); var loader25 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_diagram2(), diagram_exports2)); - return { id: id26, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_diagram2(), diagram_exports2)); + return { id: id26, diagram: diagram27 }; }, "loader"); var radar = { id: id26, @@ -150519,11 +153338,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; // src/diagrams/block/blockDetector.ts var id27 = "block"; var detector25 = /* @__PURE__ */ __name((txt) => { - return /^\s*block-beta/.test(txt); + return /^\s*block(-beta)?/.test(txt); }, "detector"); var loader26 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_blockDiagram(), blockDiagram_exports)); - return { id: id27, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_blockDiagram(), blockDiagram_exports)); + return { id: id27, diagram: diagram27 }; }, "loader"); var plugin21 = { id: id27, @@ -150538,8 +153357,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return /^\s*architecture/.test(txt); }, "detector"); var loader27 = /* @__PURE__ */ __name(async () => { - const { diagram: diagram26 } = await Promise.resolve().then(() => (init_architectureDiagram(), architectureDiagram_exports)); - return { id: id28, diagram: diagram26 }; + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_architectureDiagram(), architectureDiagram_exports)); + return { id: id28, diagram: diagram27 }; }, "loader"); var architecture = { id: id28, @@ -150551,6 +153370,23 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; // src/diagram-api/diagram-orchestration.ts init_detectType(); init_diagramAPI(); + + // src/diagrams/treemap/detector.ts + var id29 = "treemap"; + var detector27 = /* @__PURE__ */ __name((txt) => { + return /^\s*treemap/.test(txt); + }, "detector"); + var loader28 = /* @__PURE__ */ __name(async () => { + const { diagram: diagram27 } = await Promise.resolve().then(() => (init_diagram3(), diagram_exports3)); + return { id: id29, diagram: diagram27 }; + }, "loader"); + var treemap = { + id: id29, + detector: detector27, + loader: loader28 + }; + + // src/diagram-api/diagram-orchestration.ts var hasLoadedDiagrams = false; var addDiagrams = /* @__PURE__ */ __name(() => { if (hasLoadedDiagrams) { @@ -150588,6 +153424,9 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return text4.toLowerCase().trimStart().startsWith("---"); } ); + if (true) { + registerLazyLoadedDiagrams(detector_default, detector_default3, architectureDetector_default); + } registerLazyLoadedDiagrams( c4Detector_default, detector_default4, @@ -150599,10 +153438,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; pie, requirementDetector_default, sequenceDetector_default, - detector_default, flowDetector_v2_default, flowDetector_default, - detector_default3, detector_default2, gitGraphDetector_default, stateDetector_V2_default, @@ -150613,8 +153450,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; packet, xychartDetector_default, blockDetector_default, - architectureDetector_default, - radar + radar, + treemap ); }, "addDiagrams"); @@ -150625,19 +153462,20 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var loadRegisteredDiagrams = /* @__PURE__ */ __name(async () => { log.debug(`Loading registered diagrams`); const results = await Promise.allSettled( - Object.entries(detectors).map(async ([key, { detector: detector27, loader: loader28 }]) => { - if (loader28) { + Object.entries(detectors).map(async ([key, { detector: detector28, loader: loader29 }]) => { + if (!loader29) { + return; + } + try { + getDiagram(key); + } catch { try { - getDiagram(key); - } catch { - try { - const { diagram: diagram26, id: id29 } = await loader28(); - registerDiagram(id29, diagram26, detector27); - } catch (err) { - log.error(`Failed to load external diagram with key ${key}. Removing from detectors.`); - delete detectors[key]; - throw err; - } + const { diagram: diagram27, id: id30 } = await loader29(); + registerDiagram(id30, diagram27, detector28); + } catch (err) { + log.error(`Failed to load external diagram with key ${key}. Removing from detectors.`); + delete detectors[key]; + throw err; } } }) @@ -150710,8 +153548,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var position4 = 0; var character = 0; var characters = ""; - function node(value2, root4, parent4, type3, props, children2, length2, siblings2) { - return { value: value2, root: root4, parent: parent4, type: type3, props, children: children2, line, column, length: length2, return: "", siblings: siblings2 }; + function node(value2, root3, parent4, type3, props, children2, length2, siblings2) { + return { value: value2, root: root3, parent: parent4, type: type3, props, children: children2, line, column, length: length2, return: "", siblings: siblings2 }; } __name(node, "node"); function char() { @@ -150804,11 +153642,11 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return token(type3) > 2 || token(character) > 3 ? "" : " "; } __name(whitespace, "whitespace"); - function escaping(index, count) { - while (--count && next2()) + function escaping(index, count2) { + while (--count2 && next2()) if (character < 48 || character > 102 || character > 57 && character < 65 || character > 70 && character < 97) break; - return slice4(index, caret() + (count < 6 && peek() == 32 && next2() == 32)); + return slice4(index, caret() + (count2 < 6 && peek() == 32 && next2() == 32)); } __name(escaping, "escaping"); function delimiter2(type3) { @@ -150857,7 +153695,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return dealloc(parse4("", null, null, null, [""], value2 = alloc(value2), 0, [0], value2)); } __name(compile, "compile"); - function parse4(value2, root4, parent4, rule, rules, rulesets, pseudo, points, declarations) { + function parse4(value2, root3, parent4, rule, rules, rulesets, pseudo, points, declarations) { var index = 0; var offset = 0; var length2 = pseudo; @@ -150904,7 +153742,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; switch (peek()) { case 42: case 47: - append2(comment(commenter(next2(), caret()), root4, parent4, declarations), declarations); + append2(comment(commenter(next2(), caret()), root3, parent4, declarations), declarations); if ((token(previous || 1) == 5 || token(peek() || 1) == 5) && strlen(characters2) && substr(characters2, -1, void 0) !== " ") characters2 += " "; break; default: @@ -150934,10 +153772,10 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; characters2 += ";"; // { rule/at-rule default: - append2(reference = ruleset(characters2, root4, parent4, index, offset, rules, points, type3, props = [], children2 = [], length2, rulesets), rulesets); + append2(reference = ruleset(characters2, root3, parent4, index, offset, rules, points, type3, props = [], children2 = [], length2, rulesets), rulesets); if (character2 === 123) if (offset === 0) - parse4(characters2, root4, reference, reference, props, rulesets, length2, points, children2); + parse4(characters2, root3, reference, reference, props, rulesets, length2, points, children2); else { switch (atrule) { // c(ontainer) @@ -150993,23 +153831,23 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; return rulesets; } __name(parse4, "parse"); - function ruleset(value2, root4, parent4, index, offset, rules, points, type3, props, children2, length2, siblings2) { + function ruleset(value2, root3, parent4, index, offset, rules, points, type3, props, children2, length2, siblings2) { var post = offset - 1; var rule = offset === 0 ? rules : [""]; - var size5 = sizeof(rule); - for (var i2 = 0, j2 = 0, k2 = 0; i2 < index; ++i2) - for (var x5 = 0, y5 = substr(value2, post + 1, post = abs3(j2 = points[i2])), z2 = value2; x5 < size5; ++x5) - if (z2 = trim(j2 > 0 ? rule[x5] + " " + y5 : replace(y5, /&\f/g, rule[x5]))) - props[k2++] = z2; - return node(value2, root4, parent4, offset === 0 ? RULESET : type3, props, children2, length2, siblings2); + var size4 = sizeof(rule); + for (var i2 = 0, j3 = 0, k2 = 0; i2 < index; ++i2) + for (var x5 = 0, y6 = substr(value2, post + 1, post = abs3(j3 = points[i2])), z3 = value2; x5 < size4; ++x5) + if (z3 = trim(j3 > 0 ? rule[x5] + " " + y6 : replace(y6, /&\f/g, rule[x5]))) + props[k2++] = z3; + return node(value2, root3, parent4, offset === 0 ? RULESET : type3, props, children2, length2, siblings2); } __name(ruleset, "ruleset"); - function comment(value2, root4, parent4, siblings2) { - return node(value2, root4, parent4, COMMENT, from(char()), substr(value2, 2, -2), 0, siblings2); + function comment(value2, root3, parent4, siblings2) { + return node(value2, root3, parent4, COMMENT, from(char()), substr(value2, 2, -2), 0, siblings2); } __name(comment, "comment"); - function declaration(value2, root4, parent4, length2, siblings2) { - return node(value2, root4, parent4, DECLARATION, substr(value2, 0, length2), substr(value2, length2 + 1, -1), length2, siblings2); + function declaration(value2, root3, parent4, length2, siblings2) { + return node(value2, root3, parent4, DECLARATION, substr(value2, 0, length2), substr(value2, length2 + 1, -1), length2, siblings2); } __name(declaration, "declaration"); @@ -151082,12 +153920,12 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; init_errors(); init_utils2(); var Diagram = class _Diagram { - constructor(type3, text4, db10, parser24, renderer9) { + constructor(type3, text4, db7, parser24, renderer10) { this.type = type3; this.text = text4; - this.db = db10; + this.db = db7; this.parser = parser24; - this.renderer = renderer9; + this.renderer = renderer10; } static { __name(this, "Diagram"); @@ -151099,27 +153937,27 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; try { getDiagram(type3); } catch { - const loader28 = getDiagramLoader(type3); - if (!loader28) { + const loader29 = getDiagramLoader(type3); + if (!loader29) { throw new UnknownDiagramError(`Diagram ${type3} not found.`); } - const { id: id29, diagram: diagram26 } = await loader28(); - registerDiagram(id29, diagram26); + const { id: id30, diagram: diagram27 } = await loader29(); + registerDiagram(id30, diagram27); } - const { db: db10, parser: parser24, renderer: renderer9, init: init3 } = getDiagram(type3); + const { db: db7, parser: parser24, renderer: renderer10, init: init3 } = getDiagram(type3); if (parser24.parser) { - parser24.parser.yy = db10; + parser24.parser.yy = db7; } - db10.clear?.(); + db7.clear?.(); init3?.(config5); if (metadata.title) { - db10.setDiagramTitle?.(metadata.title); + db7.setDiagramTitle?.(metadata.title); } await parser24.parse(text4); - return new _Diagram(type3, text4, db10, parser24, renderer9); + return new _Diagram(type3, text4, db7, parser24, renderer10); } - async render(id29, version2) { - await this.renderer.draw(this.text, id29, version2, this); + async render(id30, version3) { + await this.renderer.draw(this.text, id30, version3, this); } getParser() { return this.parser; @@ -151188,7 +154026,7 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; var cleanupText = /* @__PURE__ */ __name((code) => { return code.replace(/\r\n?/g, "\n").replace( /<(\w+)([^>]*)>/g, - (match2, tag2, attributes) => "<" + tag2 + attributes.replace(/="([^"]*)"/g, "='$1'") + ">" + (match2, tag, attributes) => "<" + tag + attributes.replace(/="([^"]*)"/g, "='$1'") + ">" ); }, "cleanupText"); var processFrontmatter = /* @__PURE__ */ __name((code) => { @@ -151269,8 +154107,8 @@ ${prefix}${Math.round(value2 * 100) / 100}${suffix}`; addDiagrams(); try { const { code, config: config5 } = processAndSetConfigs(text4); - const diagram26 = await getDiagramFromText(code); - return { diagramType: diagram26.type, config: config5 }; + const diagram27 = await getDiagramFromText(code); + return { diagramType: diagram27.type, config: config5 }; } catch (error3) { if (parseOptions?.suppressErrors) { return false; @@ -151343,13 +154181,13 @@ ${config5.themeCSS}`; ${IFRAME_NOT_SUPPORTED_MSG} `; }, "putIntoIFrame"); - var appendDivSvgG = /* @__PURE__ */ __name((parentRoot, id29, enclosingDivId, divStyle, svgXlink) => { + var appendDivSvgG = /* @__PURE__ */ __name((parentRoot, id30, enclosingDivId, divStyle, svgXlink) => { const enclosingDiv = parentRoot.append("div"); enclosingDiv.attr("id", enclosingDivId); if (divStyle) { enclosingDiv.attr("style", divStyle); } - const svgNode2 = enclosingDiv.append("svg").attr("id", id29).attr("width", "100%").attr("xmlns", XMLNS_SVG_STD); + const svgNode2 = enclosingDiv.append("svg").attr("id", id30).attr("width", "100%").attr("xmlns", XMLNS_SVG_STD); if (svgXlink) { svgNode2.attr("xmlns:xlink", svgXlink); } @@ -151360,12 +154198,12 @@ ${config5.themeCSS}`; return parentNode.append("iframe").attr("id", iFrameId).attr("style", "width: 100%; height: 100%;").attr("sandbox", ""); } __name(sandboxedIframe, "sandboxedIframe"); - var removeExistingElements = /* @__PURE__ */ __name((doc, id29, divId, iFrameId) => { - doc.getElementById(id29)?.remove(); + var removeExistingElements = /* @__PURE__ */ __name((doc, id30, divId, iFrameId) => { + doc.getElementById(id30)?.remove(); doc.getElementById(divId)?.remove(); doc.getElementById(iFrameId)?.remove(); }, "removeExistingElements"); - var render5 = /* @__PURE__ */ __name(async function(id29, text4, svgContainingElement) { + var render7 = /* @__PURE__ */ __name(async function(id30, text4, svgContainingElement) { addDiagrams(); const processed2 = processAndSetConfigs(text4); text4 = processed2.code; @@ -151374,10 +154212,10 @@ ${config5.themeCSS}`; if (text4.length > (config5?.maxTextSize ?? MAX_TEXTLENGTH)) { text4 = MAX_TEXTLENGTH_EXCEEDED_MSG; } - const idSelector = "#" + id29; - const iFrameID = "i" + id29; + const idSelector = "#" + id30; + const iFrameID = "i" + id30; const iFrameID_selector = "#" + iFrameID; - const enclosingDivID = "d" + id29; + const enclosingDivID = "d" + id30; const enclosingDivID_selector = "#" + enclosingDivID; const removeTempElements = /* @__PURE__ */ __name(() => { const tmpElementSelector = isSandboxed ? iFrameID_selector : enclosingDivID_selector; @@ -151386,7 +154224,7 @@ ${config5.themeCSS}`; node2.remove(); } }, "removeTempElements"); - let root4 = select_default2("body"); + let root3 = select_default2("body"); const isSandboxed = config5.securityLevel === SECURITY_LVL_SANDBOX; const isLooseSecurityLevel = config5.securityLevel === SECURITY_LVL_LOOSE; const fontFamily = config5.fontFamily; @@ -151396,22 +154234,22 @@ ${config5.themeCSS}`; } if (isSandboxed) { const iframe = sandboxedIframe(select_default2(svgContainingElement), iFrameID); - root4 = select_default2(iframe.nodes()[0].contentDocument.body); - root4.node().style.margin = 0; + root3 = select_default2(iframe.nodes()[0].contentDocument.body); + root3.node().style.margin = 0; } else { - root4 = select_default2(svgContainingElement); + root3 = select_default2(svgContainingElement); } - appendDivSvgG(root4, id29, enclosingDivID, `font-family: ${fontFamily}`, XMLNS_XLINK_STD); + appendDivSvgG(root3, id30, enclosingDivID, `font-family: ${fontFamily}`, XMLNS_XLINK_STD); } else { - removeExistingElements(document, id29, enclosingDivID, iFrameID); + removeExistingElements(document, id30, enclosingDivID, iFrameID); if (isSandboxed) { const iframe = sandboxedIframe(select_default2("body"), iFrameID); - root4 = select_default2(iframe.nodes()[0].contentDocument.body); - root4.node().style.margin = 0; + root3 = select_default2(iframe.nodes()[0].contentDocument.body); + root3.node().style.margin = 0; } else { - root4 = select_default2("body"); + root3 = select_default2("body"); } - appendDivSvgG(root4, id29, enclosingDivID); + appendDivSvgG(root3, id30, enclosingDivID); } let diag; let parseEncounteredException; @@ -151425,7 +154263,7 @@ ${config5.themeCSS}`; diag = await Diagram.fromText("error"); parseEncounteredException = error3; } - const element3 = root4.select(enclosingDivID_selector).node(); + const element3 = root3.select(enclosingDivID_selector).node(); const diagramType = diag.type; const svg2 = element3.firstChild; const firstChild = svg2.firstChild; @@ -151435,25 +154273,25 @@ ${config5.themeCSS}`; style1.innerHTML = rules; svg2.insertBefore(style1, firstChild); try { - await diag.renderer.draw(text4, id29, package_default.version, diag); + await diag.renderer.draw(text4, id30, package_default.version, diag); } catch (e3) { if (config5.suppressErrorRendering) { removeTempElements(); } else { - errorRenderer_default.draw(text4, id29, package_default.version); + errorRenderer_default.draw(text4, id30, package_default.version); } throw e3; } - const svgNode2 = root4.select(`${enclosingDivID_selector} svg`); + const svgNode2 = root3.select(`${enclosingDivID_selector} svg`); const a11yTitle = diag.db.getAccTitle?.(); const a11yDescr = diag.db.getAccDescription?.(); addA11yInfo(diagramType, svgNode2, a11yTitle, a11yDescr); - root4.select(`[id="${id29}"]`).selectAll("foreignobject > *").attr("xmlns", XMLNS_XHTML_STD); - let svgCode = root4.select(enclosingDivID_selector).node().innerHTML; + root3.select(`[id="${id30}"]`).selectAll("foreignobject > *").attr("xmlns", XMLNS_XHTML_STD); + let svgCode = root3.select(enclosingDivID_selector).node().innerHTML; log.debug("config.arrowMarkerAbsolute", config5.arrowMarkerAbsolute); svgCode = cleanUpSvgCode(svgCode, isSandboxed, evaluate(config5.arrowMarkerAbsolute)); if (isSandboxed) { - const svgEl = root4.select(enclosingDivID_selector + " svg").node(); + const svgEl = root3.select(enclosingDivID_selector + " svg").node(); svgCode = putIntoIFrame(svgCode, svgEl); } else if (!isLooseSecurityLevel) { svgCode = purify.sanitize(svgCode, { @@ -151474,22 +154312,22 @@ ${config5.themeCSS}`; }; }, "render"); function initialize(userOptions = {}) { - const options3 = assignWithDepth_default({}, userOptions); - if (options3?.fontFamily && !options3.themeVariables?.fontFamily) { - if (!options3.themeVariables) { - options3.themeVariables = {}; + const options2 = assignWithDepth_default({}, userOptions); + if (options2?.fontFamily && !options2.themeVariables?.fontFamily) { + if (!options2.themeVariables) { + options2.themeVariables = {}; } - options3.themeVariables.fontFamily = options3.fontFamily; + options2.themeVariables.fontFamily = options2.fontFamily; } - saveConfigFromInitialize(options3); - if (options3?.theme && options3.theme in themes_default) { - options3.themeVariables = themes_default[options3.theme].getThemeVariables( - options3.themeVariables + saveConfigFromInitialize(options2); + if (options2?.theme && options2.theme in themes_default) { + options2.themeVariables = themes_default[options2.theme].getThemeVariables( + options2.themeVariables ); - } else if (options3) { - options3.themeVariables = themes_default.default.getThemeVariables(options3.themeVariables); + } else if (options2) { + options2.themeVariables = themes_default.default.getThemeVariables(options2.themeVariables); } - const config5 = typeof options3 === "object" ? setSiteConfig(options3) : getSiteConfig(); + const config5 = typeof options2 === "object" ? setSiteConfig(options2) : getSiteConfig(); setLogLevel(config5.logLevel); addDiagrams(); } @@ -151504,7 +154342,7 @@ ${config5.themeCSS}`; } __name(addA11yInfo, "addA11yInfo"); var mermaidAPI = Object.freeze({ - render: render5, + render: render7, parse: parse5, getDiagramFromText, initialize, @@ -151524,7 +154362,7 @@ ${config5.themeCSS}`; reset(getConfig()); // src/mermaid.ts - init_render(); + init_render2(); init_utils2(); var handleError = /* @__PURE__ */ __name((error3, errors, parseError) => { log.warn(error3); @@ -151547,11 +154385,11 @@ ${config5.themeCSS}`; } } }, "handleError"); - var run4 = /* @__PURE__ */ __name(async function(options3 = { + var run4 = /* @__PURE__ */ __name(async function(options2 = { querySelector: ".mermaid" }) { try { - await runThrowsErrors(options3); + await runThrowsErrors(options2); } catch (e3) { if (isDetailedError(e3)) { log.error(e3.str); @@ -151559,20 +154397,20 @@ ${config5.themeCSS}`; if (mermaid.parseError) { mermaid.parseError(e3); } - if (!options3.suppressErrors) { + if (!options2.suppressErrors) { log.error("Use the suppressErrors option to suppress these errors"); throw e3; } } }, "run"); - var runThrowsErrors = /* @__PURE__ */ __name(async function({ postRenderCallback, querySelector, nodes: nodes6 } = { + var runThrowsErrors = /* @__PURE__ */ __name(async function({ postRenderCallback, querySelector, nodes: nodes5 } = { querySelector: ".mermaid" }) { const conf5 = mermaidAPI.getConfig(); log.debug(`${!postRenderCallback ? "No " : ""}Callback function found`); let nodesToProcess; - if (nodes6) { - nodesToProcess = nodes6; + if (nodes5) { + nodesToProcess = nodes5; } else if (querySelector) { nodesToProcess = document.querySelectorAll(querySelector); } else { @@ -151592,7 +154430,7 @@ ${config5.themeCSS}`; continue; } element3.setAttribute("data-processed", "true"); - const id29 = `mermaid-${idGenerator.next()}`; + const id30 = `mermaid-${idGenerator.next()}`; txt = element3.innerHTML; txt = dedent(utils_default2.entityDecode(txt)).trim().replace(//gi, "
    "); const init3 = utils_default2.detectInit(txt); @@ -151600,10 +154438,10 @@ ${config5.themeCSS}`; log.debug("Detected early reinit: ", init3); } try { - const { svg: svg2, bindFunctions: bindFunctions2 } = await render6(id29, txt, element3); + const { svg: svg2, bindFunctions: bindFunctions2 } = await render8(id30, txt, element3); element3.innerHTML = svg2; if (postRenderCallback) { - await postRenderCallback(id29); + await postRenderCallback(id30); } if (bindFunctions2) { bindFunctions2(element3); @@ -151619,19 +154457,19 @@ ${config5.themeCSS}`; var initialize2 = /* @__PURE__ */ __name(function(config5) { mermaidAPI.initialize(config5); }, "initialize"); - var init2 = /* @__PURE__ */ __name(async function(config5, nodes6, callback) { + var init2 = /* @__PURE__ */ __name(async function(config5, nodes5, callback) { log.warn("mermaid.init is deprecated. Please use run instead."); if (config5) { initialize2(config5); } const runOptions = { postRenderCallback: callback, querySelector: ".mermaid" }; - if (typeof nodes6 === "string") { - runOptions.querySelector = nodes6; - } else if (nodes6) { - if (nodes6 instanceof HTMLElement) { - runOptions.nodes = [nodes6]; + if (typeof nodes5 === "string") { + runOptions.querySelector = nodes5; + } else if (nodes5) { + if (nodes5 instanceof HTMLElement) { + runOptions.nodes = [nodes5]; } else { - runOptions.nodes = nodes6; + runOptions.nodes = nodes5; } } await run4(runOptions); @@ -151679,12 +154517,12 @@ ${config5.themeCSS}`; executionQueueRunning = false; }, "executeQueue"); var parse6 = /* @__PURE__ */ __name(async (text4, parseOptions) => { - return new Promise((resolve3, reject3) => { + return new Promise((resolve2, reject3) => { const performCall = /* @__PURE__ */ __name(() => new Promise((res, rej) => { mermaidAPI.parse(text4, parseOptions).then( (r2) => { res(r2); - resolve3(r2); + resolve2(r2); }, (e3) => { log.error("Error parsing", e3); @@ -151698,13 +154536,13 @@ ${config5.themeCSS}`; executeQueue().catch(reject3); }); }, "parse"); - var render6 = /* @__PURE__ */ __name((id29, text4, container2) => { - return new Promise((resolve3, reject3) => { + var render8 = /* @__PURE__ */ __name((id30, text4, container2) => { + return new Promise((resolve2, reject3) => { const performCall = /* @__PURE__ */ __name(() => new Promise((res, rej) => { - mermaidAPI.render(id29, text4, container2).then( + mermaidAPI.render(id30, text4, container2).then( (r2) => { res(r2); - resolve3(r2); + resolve2(r2); }, (e3) => { log.error("Error parsing", e3); @@ -151718,11 +154556,16 @@ ${config5.themeCSS}`; executeQueue().catch(reject3); }); }, "render"); + var getRegisteredDiagramsMetadata = /* @__PURE__ */ __name(() => { + return Object.keys(detectors).map((id30) => ({ + id: id30 + })); + }, "getRegisteredDiagramsMetadata"); var mermaid = { startOnLoad: true, mermaidAPI, parse: parse6, - render: render6, + render: render8, init: init2, run: run4, registerExternalDiagrams, @@ -151732,7 +154575,8 @@ ${config5.themeCSS}`; contentLoaded, setParseErrorHandler, detectType, - registerIconPacks + registerIconPacks, + getRegisteredDiagramsMetadata }; var mermaid_default = mermaid; return __toCommonJS(mermaid_exports); @@ -151744,7 +154588,7 @@ ${config5.themeCSS}`; /*! Bundled license information: dompurify/dist/purify.es.mjs: - (*! @license DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE *) + (*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE *) js-yaml/dist/js-yaml.mjs: (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *) @@ -151776,4 +154620,4 @@ cytoscape/dist/cytoscape.esm.mjs: (*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License *) (*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License *) */ -globalThis.mermaid = globalThis.__esbuild_esm_mermaid.default; +globalThis["mermaid"] = globalThis.__esbuild_esm_mermaid_nm["mermaid"].default; diff --git a/src/resources/formats/html/mermaid/mermaid.min.js b/src/resources/formats/html/mermaid/mermaid.min.js index 6e12566eb7c..0f033c79e81 100644 --- a/src/resources/formats/html/mermaid/mermaid.min.js +++ b/src/resources/formats/html/mermaid/mermaid.min.js @@ -1,16 +1,5 @@ -"use strict";var __esbuild_esm_mermaid=(()=>{var B2e=Object.create;var by=Object.defineProperty;var F2e=Object.getOwnPropertyDescriptor;var $2e=Object.getOwnPropertyNames;var z2e=Object.getPrototypeOf,G2e=Object.prototype.hasOwnProperty;var o=(t,e)=>by(t,"name",{value:e,configurable:!0});var N=(t,e)=>()=>(t&&(e=t(t=0)),e);var Mi=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),hr=(t,e)=>{for(var r in e)by(t,r,{get:e[r],enumerable:!0})},L4=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of $2e(e))!G2e.call(t,i)&&i!==r&&by(t,i,{get:()=>e[i],enumerable:!(n=F2e(e,i))||n.enumerable});return t},Sr=(t,e,r)=>(L4(t,e,"default"),r&&L4(r,e,"default")),Sa=(t,e,r)=>(r=t!=null?B2e(z2e(t)):{},L4(e||!t||!t.__esModule?by(r,"default",{value:t,enumerable:!0}):r,t)),V2e=t=>L4(by({},"__esModule",{value:!0}),t);var R4=Mi((EC,SC)=>{"use strict";(function(t,e){typeof EC=="object"&&typeof SC<"u"?SC.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(EC,function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",a="minute",s="hour",l="day",u="week",h="month",f="quarter",d="year",p="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:o(function(k){var L=["th","st","nd","rd"],R=k%100;return"["+k+(L[(R-20)%10]||L[R]||L[0])+"]"},"ordinal")},x=o(function(k,L,R){var O=String(k);return!O||O.length>=L?k:""+Array(L+1-O.length).join(R)+k},"m"),b={s:x,z:o(function(k){var L=-k.utcOffset(),R=Math.abs(L),O=Math.floor(R/60),M=R%60;return(L<=0?"+":"-")+x(O,2,"0")+":"+x(M,2,"0")},"z"),m:o(function k(L,R){if(L.date()1)return k(F[0])}else{var P=L.name;C[P]=L,M=P}return!O&&M&&(w=M),M||!O&&w},"t"),S=o(function(k,L){if(E(k))return k.clone();var R=typeof L=="object"?L:{};return R.date=k,R.args=arguments,new I(R)},"O"),_=b;_.l=A,_.i=E,_.w=function(k,L){return S(k,{locale:L.$L,utc:L.$u,x:L.$x,$offset:L.$offset})};var I=function(){function k(R){this.$L=A(R.locale,null,!0),this.parse(R),this.$x=this.$x||R.x||{},this[T]=!0}o(k,"M");var L=k.prototype;return L.parse=function(R){this.$d=function(O){var M=O.date,B=O.utc;if(M===null)return new Date(NaN);if(_.u(M))return new Date;if(M instanceof Date)return new Date(M);if(typeof M=="string"&&!/Z$/i.test(M)){var F=M.match(g);if(F){var P=F[2]-1||0,z=(F[7]||"0").substring(0,3);return B?new Date(Date.UTC(F[1],P,F[3]||1,F[4]||0,F[5]||0,F[6]||0,z)):new Date(F[1],P,F[3]||1,F[4]||0,F[5]||0,F[6]||0,z)}}return new Date(M)}(R),this.init()},L.init=function(){var R=this.$d;this.$y=R.getFullYear(),this.$M=R.getMonth(),this.$D=R.getDate(),this.$W=R.getDay(),this.$H=R.getHours(),this.$m=R.getMinutes(),this.$s=R.getSeconds(),this.$ms=R.getMilliseconds()},L.$utils=function(){return _},L.isValid=function(){return this.$d.toString()!==m},L.isSame=function(R,O){var M=S(R);return this.startOf(O)<=M&&M<=this.endOf(O)},L.isAfter=function(R,O){return S(R){"use strict";CF=Sa(R4(),1),eu={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},Y={trace:o((...t)=>{},"trace"),debug:o((...t)=>{},"debug"),info:o((...t)=>{},"info"),warn:o((...t)=>{},"warn"),error:o((...t)=>{},"error"),fatal:o((...t)=>{},"fatal")},wy=o(function(t="fatal"){let e=eu.fatal;typeof t=="string"?t.toLowerCase()in eu&&(e=eu[t]):typeof t=="number"&&(e=t),Y.trace=()=>{},Y.debug=()=>{},Y.info=()=>{},Y.warn=()=>{},Y.error=()=>{},Y.fatal=()=>{},e<=eu.fatal&&(Y.fatal=console.error?console.error.bind(console,bo("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",bo("FATAL"))),e<=eu.error&&(Y.error=console.error?console.error.bind(console,bo("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",bo("ERROR"))),e<=eu.warn&&(Y.warn=console.warn?console.warn.bind(console,bo("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",bo("WARN"))),e<=eu.info&&(Y.info=console.info?console.info.bind(console,bo("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",bo("INFO"))),e<=eu.debug&&(Y.debug=console.debug?console.debug.bind(console,bo("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",bo("DEBUG"))),e<=eu.trace&&(Y.trace=console.debug?console.debug.bind(console,bo("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",bo("TRACE")))},"setLogLevel"),bo=o(t=>`%c${(0,CF.default)().format("ss.SSS")} : ${t} : `,"format")});var U2e,e0,CC,AF,N4=N(()=>{"use strict";U2e=Object.freeze({left:0,top:0,width:16,height:16}),e0=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),CC=Object.freeze({...U2e,...e0}),AF=Object.freeze({...CC,body:"",hidden:!1})});var H2e,_F,DF=N(()=>{"use strict";N4();H2e=Object.freeze({width:null,height:null}),_F=Object.freeze({...H2e,...e0})});var AC,M4,LF=N(()=>{"use strict";AC=o((t,e,r,n="")=>{let i=t.split(":");if(t.slice(0,1)==="@"){if(i.length<2||i.length>3)return null;n=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let l=i.pop(),u=i.pop(),h={provider:i.length>0?i[0]:n,prefix:u,name:l};return e&&!M4(h)?null:h}let a=i[0],s=a.split("-");if(s.length>1){let l={provider:n,prefix:s.shift(),name:s.join("-")};return e&&!M4(l)?null:l}if(r&&n===""){let l={provider:n,prefix:"",name:a};return e&&!M4(l,r)?null:l}return null},"stringToIcon"),M4=o((t,e)=>t?!!((e&&t.prefix===""||t.prefix)&&t.name):!1,"validateIconName")});function RF(t,e){let r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);let n=((t.rotate||0)+(e.rotate||0))%4;return n&&(r.rotate=n),r}var NF=N(()=>{"use strict";o(RF,"mergeIconTransformations")});function _C(t,e){let r=RF(t,e);for(let n in AF)n in e0?n in t&&!(n in r)&&(r[n]=e0[n]):n in e?r[n]=e[n]:n in t&&(r[n]=t[n]);return r}var MF=N(()=>{"use strict";N4();NF();o(_C,"mergeIconData")});function IF(t,e){let r=t.icons,n=t.aliases||Object.create(null),i=Object.create(null);function a(s){if(r[s])return i[s]=[];if(!(s in i)){i[s]=null;let l=n[s]&&n[s].parent,u=l&&a(l);u&&(i[s]=[l].concat(u))}return i[s]}return o(a,"resolve"),(e||Object.keys(r).concat(Object.keys(n))).forEach(a),i}var OF=N(()=>{"use strict";o(IF,"getIconsTree")});function PF(t,e,r){let n=t.icons,i=t.aliases||Object.create(null),a={};function s(l){a=_C(n[l]||i[l],a)}return o(s,"parse"),s(e),r.forEach(s),_C(t,a)}function DC(t,e){if(t.icons[e])return PF(t,e,[]);let r=IF(t,[e])[e];return r?PF(t,e,r):null}var BF=N(()=>{"use strict";MF();OF();o(PF,"internalGetIconData");o(DC,"getIconData")});function LC(t,e,r){if(e===1)return t;if(r=r||100,typeof t=="number")return Math.ceil(t*e*r)/r;if(typeof t!="string")return t;let n=t.split(W2e);if(n===null||!n.length)return t;let i=[],a=n.shift(),s=q2e.test(a);for(;;){if(s){let l=parseFloat(a);isNaN(l)?i.push(a):i.push(Math.ceil(l*e*r)/r)}else i.push(a);if(a=n.shift(),a===void 0)return i.join("");s=!s}}var W2e,q2e,FF=N(()=>{"use strict";W2e=/(-?[0-9.]*[0-9]+[0-9.]*)/g,q2e=/^-?[0-9.]*[0-9]+[0-9.]*$/g;o(LC,"calculateSize")});function Y2e(t,e="defs"){let r="",n=t.indexOf("<"+e);for(;n>=0;){let i=t.indexOf(">",n),a=t.indexOf("",a);if(s===-1)break;r+=t.slice(i+1,a).trim(),t=t.slice(0,n).trim()+t.slice(s+1)}return{defs:r,content:t}}function X2e(t,e){return t?""+t+""+e:e}function $F(t,e,r){let n=Y2e(t);return X2e(n.defs,e+n.content+r)}var zF=N(()=>{"use strict";o(Y2e,"splitSVGDefs");o(X2e,"mergeDefsAndContent");o($F,"wrapSVGContent")});function RC(t,e){let r={...CC,...t},n={..._F,...e},i={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,n].forEach(y=>{let v=[],x=y.hFlip,b=y.vFlip,w=y.rotate;x?b?w+=2:(v.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),v.push("scale(-1 1)"),i.top=i.left=0):b&&(v.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),v.push("scale(1 -1)"),i.top=i.left=0);let C;switch(w<0&&(w-=Math.floor(w/4)*4),w=w%4,w){case 1:C=i.height/2+i.top,v.unshift("rotate(90 "+C.toString()+" "+C.toString()+")");break;case 2:v.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:C=i.width/2+i.left,v.unshift("rotate(-90 "+C.toString()+" "+C.toString()+")");break}w%2===1&&(i.left!==i.top&&(C=i.left,i.left=i.top,i.top=C),i.width!==i.height&&(C=i.width,i.width=i.height,i.height=C)),v.length&&(a=$F(a,'',""))});let s=n.width,l=n.height,u=i.width,h=i.height,f,d;s===null?(d=l===null?"1em":l==="auto"?h:l,f=LC(d,u/h)):(f=s==="auto"?u:s,d=l===null?LC(f,h/u):l==="auto"?h:l);let p={},m=o((y,v)=>{j2e(v)||(p[y]=v.toString())},"setAttr");m("width",f),m("height",d);let g=[i.left,i.top,u,h];return p.viewBox=g.join(" "),{attributes:p,viewBox:g,body:a}}var j2e,GF=N(()=>{"use strict";N4();DF();FF();zF();j2e=o(t=>t==="unset"||t==="undefined"||t==="none","isUnsetKeyword");o(RC,"iconToSVG")});function NC(t,e=Q2e){let r=[],n;for(;n=K2e.exec(t);)r.push(n[1]);if(!r.length)return t;let i="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{let s=typeof e=="function"?e(a):e+(Z2e++).toString(),l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+s+i+"$3")}),t=t.replace(new RegExp(i,"g"),""),t}var K2e,Q2e,Z2e,VF=N(()=>{"use strict";K2e=/\sid="(\S+)"/g,Q2e="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),Z2e=0;o(NC,"replaceIDs")});function MC(t,e){let r=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let n in e)r+=" "+n+'="'+e[n]+'"';return'"+t+""}var UF=N(()=>{"use strict";o(MC,"iconToHTML")});var WF=Mi((iit,HF)=>{"use strict";var t0=1e3,r0=t0*60,n0=r0*60,Wf=n0*24,J2e=Wf*7,exe=Wf*365.25;HF.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return txe(t);if(r==="number"&&isFinite(t))return e.long?nxe(t):rxe(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function txe(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*exe;case"weeks":case"week":case"w":return r*J2e;case"days":case"day":case"d":return r*Wf;case"hours":case"hour":case"hrs":case"hr":case"h":return r*n0;case"minutes":case"minute":case"mins":case"min":case"m":return r*r0;case"seconds":case"second":case"secs":case"sec":case"s":return r*t0;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}o(txe,"parse");function rxe(t){var e=Math.abs(t);return e>=Wf?Math.round(t/Wf)+"d":e>=n0?Math.round(t/n0)+"h":e>=r0?Math.round(t/r0)+"m":e>=t0?Math.round(t/t0)+"s":t+"ms"}o(rxe,"fmtShort");function nxe(t){var e=Math.abs(t);return e>=Wf?I4(t,e,Wf,"day"):e>=n0?I4(t,e,n0,"hour"):e>=r0?I4(t,e,r0,"minute"):e>=t0?I4(t,e,t0,"second"):t+" ms"}o(nxe,"fmtLong");function I4(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}o(I4,"plural")});var YF=Mi((sit,qF)=>{"use strict";function ixe(t){r.debug=r,r.default=r,r.coerce=u,r.disable=s,r.enable=i,r.enabled=l,r.humanize=WF(),r.destroy=h,Object.keys(t).forEach(f=>{r[f]=t[f]}),r.names=[],r.skips=[],r.formatters={};function e(f){let d=0;for(let p=0;p{if(E==="%%")return"%";C++;let S=r.formatters[A];if(typeof S=="function"){let _=v[C];E=S.call(x,_),v.splice(C,1),C--}return E}),r.formatArgs.call(x,v),(x.log||r.log).apply(x,v)}return o(y,"debug"),y.namespace=f,y.useColors=r.useColors(),y.color=r.selectColor(f),y.extend=n,y.destroy=r.destroy,Object.defineProperty(y,"enabled",{enumerable:!0,configurable:!1,get:o(()=>p!==null?p:(m!==r.namespaces&&(m=r.namespaces,g=r.enabled(f)),g),"get"),set:o(v=>{p=v},"set")}),typeof r.init=="function"&&r.init(y),y}o(r,"createDebug");function n(f,d){let p=r(this.namespace+(typeof d>"u"?":":d)+f);return p.log=this.log,p}o(n,"extend");function i(f){r.save(f),r.namespaces=f,r.names=[],r.skips=[];let d=(typeof f=="string"?f:"").trim().replace(" ",",").split(",").filter(Boolean);for(let p of d)p[0]==="-"?r.skips.push(p.slice(1)):r.names.push(p)}o(i,"enable");function a(f,d){let p=0,m=0,g=-1,y=0;for(;p"-"+d)].join(",");return r.enable(""),f}o(s,"disable");function l(f){for(let d of r.skips)if(a(f,d))return!1;for(let d of r.names)if(a(f,d))return!0;return!1}o(l,"enabled");function u(f){return f instanceof Error?f.stack||f.message:f}o(u,"coerce");function h(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return o(h,"destroy"),r.enable(r.load()),r}o(ixe,"setup");qF.exports=ixe});var XF=Mi((qs,O4)=>{"use strict";qs.formatArgs=sxe;qs.save=oxe;qs.load=lxe;qs.useColors=axe;qs.storage=cxe();qs.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();qs.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function axe(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}o(axe,"useColors");function sxe(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+O4.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,n=0;t[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(r++,i==="%c"&&(n=r))}),t.splice(n,0,e)}o(sxe,"formatArgs");qs.log=console.debug||console.log||(()=>{});function oxe(t){try{t?qs.storage.setItem("debug",t):qs.storage.removeItem("debug")}catch{}}o(oxe,"save");function lxe(){let t;try{t=qs.storage.getItem("debug")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}o(lxe,"load");function cxe(){try{return localStorage}catch{}}o(cxe,"localstorage");O4.exports=YF()(qs);var{formatters:uxe}=O4.exports;uxe.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var uit,jF=N(()=>{"use strict";LF();BF();GF();VF();UF();uit=Sa(XF(),1)});var OC,IC,KF,P4,hxe,wo,tu=N(()=>{"use strict";vt();jF();OC={body:'?',height:80,width:80},IC=new Map,KF=new Map,P4=o(t=>{for(let e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(Y.debug("Registering icon pack:",e.name),"loader"in e)KF.set(e.name,e.loader);else if("icons"in e)IC.set(e.name,e.icons);else throw Y.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),hxe=o(async(t,e)=>{let r=AC(t,!0,e!==void 0);if(!r)throw new Error(`Invalid icon name: ${t}`);let n=r.prefix||e;if(!n)throw new Error(`Icon name must contain a prefix: ${t}`);let i=IC.get(n);if(!i){let s=KF.get(n);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{i={...await s(),prefix:n},IC.set(n,i)}catch(l){throw Y.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=DC(i,r.name);if(!a)throw new Error(`Icon not found: ${t}`);return a},"getRegisteredIconData"),wo=o(async(t,e)=>{let r;try{r=await hxe(t,e?.fallbackPrefix)}catch(a){Y.error(a),r=OC}let n=RC(r,e);return MC(NC(n.body),n.attributes)},"getIconSVG")});function B4(t){for(var e=[],r=1;r{"use strict";o(B4,"dedent")});var F4,qf,QF,$4=N(()=>{"use strict";F4=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,qf=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,QF=/\s*%%.*\n/gm});var i0,BC=N(()=>{"use strict";i0=class extends Error{static{o(this,"UnknownDiagramError")}constructor(e){super(e),this.name="UnknownDiagramError"}}});var Yf,a0,z4,FC,ZF,Xf=N(()=>{"use strict";vt();$4();BC();Yf={},a0=o(function(t,e){t=t.replace(F4,"").replace(qf,"").replace(QF,` -`);for(let[r,{detector:n}]of Object.entries(Yf))if(n(t,e))return r;throw new i0(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),z4=o((...t)=>{for(let{id:e,detector:r,loader:n}of t)FC(e,r,n)},"registerLazyLoadedDiagrams"),FC=o((t,e,r)=>{Yf[t]&&Y.warn(`Detector with key ${t} already exists. Overwriting.`),Yf[t]={detector:e,loader:r},Y.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),ZF=o(t=>Yf[t].loader,"getDiagramLoader")});var Ty,JF,$C=N(()=>{"use strict";Ty=function(){var t=o(function($e,Re,Ie,be){for(Ie=Ie||{},be=$e.length;be--;Ie[$e[be]]=Re);return Ie},"o"),e=[1,24],r=[1,25],n=[1,26],i=[1,27],a=[1,28],s=[1,63],l=[1,64],u=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],m=[1,29],g=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],w=[1,35],C=[1,36],T=[1,37],E=[1,38],A=[1,39],S=[1,40],_=[1,41],I=[1,42],D=[1,43],k=[1,44],L=[1,45],R=[1,46],O=[1,47],M=[1,48],B=[1,50],F=[1,51],P=[1,52],z=[1,53],$=[1,54],H=[1,55],Q=[1,56],j=[1,57],ie=[1,58],ne=[1,59],le=[1,60],he=[14,42],K=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],X=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],te=[1,82],J=[1,83],se=[1,84],ue=[1,85],Z=[12,14,42],Se=[12,14,33,42],ce=[12,14,33,42,76,77,79,80],ae=[12,33],Oe=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ge={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:o(function(Re,Ie,be,W,de,re,oe){var V=re.length-1;switch(de){case 3:W.setDirection("TB");break;case 4:W.setDirection("BT");break;case 5:W.setDirection("RL");break;case 6:W.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:W.setC4Type(re[V-3]);break;case 19:W.setTitle(re[V].substring(6)),this.$=re[V].substring(6);break;case 20:W.setAccDescription(re[V].substring(15)),this.$=re[V].substring(15);break;case 21:this.$=re[V].trim(),W.setTitle(this.$);break;case 22:case 23:this.$=re[V].trim(),W.setAccDescription(this.$);break;case 28:re[V].splice(2,0,"ENTERPRISE"),W.addPersonOrSystemBoundary(...re[V]),this.$=re[V];break;case 29:re[V].splice(2,0,"SYSTEM"),W.addPersonOrSystemBoundary(...re[V]),this.$=re[V];break;case 30:W.addPersonOrSystemBoundary(...re[V]),this.$=re[V];break;case 31:re[V].splice(2,0,"CONTAINER"),W.addContainerBoundary(...re[V]),this.$=re[V];break;case 32:W.addDeploymentNode("node",...re[V]),this.$=re[V];break;case 33:W.addDeploymentNode("nodeL",...re[V]),this.$=re[V];break;case 34:W.addDeploymentNode("nodeR",...re[V]),this.$=re[V];break;case 35:W.popBoundaryParseStack();break;case 39:W.addPersonOrSystem("person",...re[V]),this.$=re[V];break;case 40:W.addPersonOrSystem("external_person",...re[V]),this.$=re[V];break;case 41:W.addPersonOrSystem("system",...re[V]),this.$=re[V];break;case 42:W.addPersonOrSystem("system_db",...re[V]),this.$=re[V];break;case 43:W.addPersonOrSystem("system_queue",...re[V]),this.$=re[V];break;case 44:W.addPersonOrSystem("external_system",...re[V]),this.$=re[V];break;case 45:W.addPersonOrSystem("external_system_db",...re[V]),this.$=re[V];break;case 46:W.addPersonOrSystem("external_system_queue",...re[V]),this.$=re[V];break;case 47:W.addContainer("container",...re[V]),this.$=re[V];break;case 48:W.addContainer("container_db",...re[V]),this.$=re[V];break;case 49:W.addContainer("container_queue",...re[V]),this.$=re[V];break;case 50:W.addContainer("external_container",...re[V]),this.$=re[V];break;case 51:W.addContainer("external_container_db",...re[V]),this.$=re[V];break;case 52:W.addContainer("external_container_queue",...re[V]),this.$=re[V];break;case 53:W.addComponent("component",...re[V]),this.$=re[V];break;case 54:W.addComponent("component_db",...re[V]),this.$=re[V];break;case 55:W.addComponent("component_queue",...re[V]),this.$=re[V];break;case 56:W.addComponent("external_component",...re[V]),this.$=re[V];break;case 57:W.addComponent("external_component_db",...re[V]),this.$=re[V];break;case 58:W.addComponent("external_component_queue",...re[V]),this.$=re[V];break;case 60:W.addRel("rel",...re[V]),this.$=re[V];break;case 61:W.addRel("birel",...re[V]),this.$=re[V];break;case 62:W.addRel("rel_u",...re[V]),this.$=re[V];break;case 63:W.addRel("rel_d",...re[V]),this.$=re[V];break;case 64:W.addRel("rel_l",...re[V]),this.$=re[V];break;case 65:W.addRel("rel_r",...re[V]),this.$=re[V];break;case 66:W.addRel("rel_b",...re[V]),this.$=re[V];break;case 67:re[V].splice(0,1),W.addRel("rel",...re[V]),this.$=re[V];break;case 68:W.updateElStyle("update_el_style",...re[V]),this.$=re[V];break;case 69:W.updateRelStyle("update_rel_style",...re[V]),this.$=re[V];break;case 70:W.updateLayoutConfig("update_layout_config",...re[V]),this.$=re[V];break;case 71:this.$=[re[V]];break;case 72:re[V].unshift(re[V-1]),this.$=re[V];break;case 73:case 75:this.$=re[V].trim();break;case 74:let xe={};xe[re[V-1].trim()]=re[V].trim(),this.$=xe;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:70,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:71,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:72,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:73,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{14:[1,74]},t(he,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le}),t(he,[2,14]),t(K,[2,16],{12:[1,76]}),t(he,[2,36],{12:[1,77]}),t(X,[2,19]),t(X,[2,20]),{25:[1,78]},{27:[1,79]},t(X,[2,23]),{35:80,75:81,76:te,77:J,79:se,80:ue},{35:86,75:81,76:te,77:J,79:se,80:ue},{35:87,75:81,76:te,77:J,79:se,80:ue},{35:88,75:81,76:te,77:J,79:se,80:ue},{35:89,75:81,76:te,77:J,79:se,80:ue},{35:90,75:81,76:te,77:J,79:se,80:ue},{35:91,75:81,76:te,77:J,79:se,80:ue},{35:92,75:81,76:te,77:J,79:se,80:ue},{35:93,75:81,76:te,77:J,79:se,80:ue},{35:94,75:81,76:te,77:J,79:se,80:ue},{35:95,75:81,76:te,77:J,79:se,80:ue},{35:96,75:81,76:te,77:J,79:se,80:ue},{35:97,75:81,76:te,77:J,79:se,80:ue},{35:98,75:81,76:te,77:J,79:se,80:ue},{35:99,75:81,76:te,77:J,79:se,80:ue},{35:100,75:81,76:te,77:J,79:se,80:ue},{35:101,75:81,76:te,77:J,79:se,80:ue},{35:102,75:81,76:te,77:J,79:se,80:ue},{35:103,75:81,76:te,77:J,79:se,80:ue},{35:104,75:81,76:te,77:J,79:se,80:ue},t(Z,[2,59]),{35:105,75:81,76:te,77:J,79:se,80:ue},{35:106,75:81,76:te,77:J,79:se,80:ue},{35:107,75:81,76:te,77:J,79:se,80:ue},{35:108,75:81,76:te,77:J,79:se,80:ue},{35:109,75:81,76:te,77:J,79:se,80:ue},{35:110,75:81,76:te,77:J,79:se,80:ue},{35:111,75:81,76:te,77:J,79:se,80:ue},{35:112,75:81,76:te,77:J,79:se,80:ue},{35:113,75:81,76:te,77:J,79:se,80:ue},{35:114,75:81,76:te,77:J,79:se,80:ue},{35:115,75:81,76:te,77:J,79:se,80:ue},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le},{12:[1,118],33:[1,117]},{35:119,75:81,76:te,77:J,79:se,80:ue},{35:120,75:81,76:te,77:J,79:se,80:ue},{35:121,75:81,76:te,77:J,79:se,80:ue},{35:122,75:81,76:te,77:J,79:se,80:ue},{35:123,75:81,76:te,77:J,79:se,80:ue},{35:124,75:81,76:te,77:J,79:se,80:ue},{35:125,75:81,76:te,77:J,79:se,80:ue},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(he,[2,15]),t(K,[2,17],{21:22,19:130,22:e,23:r,24:n,26:i,28:a}),t(he,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:r,24:n,26:i,28:a,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:M,64:B,65:F,66:P,67:z,68:$,69:H,70:Q,71:j,72:ie,73:ne,74:le}),t(X,[2,21]),t(X,[2,22]),t(Z,[2,39]),t(Se,[2,71],{75:81,35:132,76:te,77:J,79:se,80:ue}),t(ce,[2,73]),{78:[1,133]},t(ce,[2,75]),t(ce,[2,76]),t(Z,[2,40]),t(Z,[2,41]),t(Z,[2,42]),t(Z,[2,43]),t(Z,[2,44]),t(Z,[2,45]),t(Z,[2,46]),t(Z,[2,47]),t(Z,[2,48]),t(Z,[2,49]),t(Z,[2,50]),t(Z,[2,51]),t(Z,[2,52]),t(Z,[2,53]),t(Z,[2,54]),t(Z,[2,55]),t(Z,[2,56]),t(Z,[2,57]),t(Z,[2,58]),t(Z,[2,60]),t(Z,[2,61]),t(Z,[2,62]),t(Z,[2,63]),t(Z,[2,64]),t(Z,[2,65]),t(Z,[2,66]),t(Z,[2,67]),t(Z,[2,68]),t(Z,[2,69]),t(Z,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(ae,[2,28]),t(ae,[2,29]),t(ae,[2,30]),t(ae,[2,31]),t(ae,[2,32]),t(ae,[2,33]),t(ae,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t(K,[2,18]),t(he,[2,38]),t(Se,[2,72]),t(ce,[2,74]),t(Z,[2,24]),t(Z,[2,35]),t(Oe,[2,25]),t(Oe,[2,26],{12:[1,138]}),t(Oe,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:o(function(Re,Ie){if(Ie.recoverable)this.trace(Re);else{var be=new Error(Re);throw be.hash=Ie,be}},"parseError"),parse:o(function(Re){var Ie=this,be=[0],W=[],de=[null],re=[],oe=this.table,V="",xe=0,q=0,pe=0,ve=2,Pe=1,_e=re.slice.call(arguments,1),we=Object.create(this.lexer),Ve={yy:{}};for(var De in this.yy)Object.prototype.hasOwnProperty.call(this.yy,De)&&(Ve.yy[De]=this.yy[De]);we.setInput(Re,Ve.yy),Ve.yy.lexer=we,Ve.yy.parser=this,typeof we.yylloc>"u"&&(we.yylloc={});var qe=we.yylloc;re.push(qe);var at=we.options&&we.options.ranges;typeof Ve.yy.parseError=="function"?this.parseError=Ve.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Rt(nt){be.length=be.length-2*nt,de.length=de.length-nt,re.length=re.length-nt}o(Rt,"popStack");function st(){var nt;return nt=W.pop()||we.lex()||Pe,typeof nt!="number"&&(nt instanceof Array&&(W=nt,nt=W.pop()),nt=Ie.symbols_[nt]||nt),nt}o(st,"lex");for(var Ue,ct,We,ot,Yt,bt,Mt={},xt,ut,Et,ft;;){if(We=be[be.length-1],this.defaultActions[We]?ot=this.defaultActions[We]:((Ue===null||typeof Ue>"u")&&(Ue=st()),ot=oe[We]&&oe[We][Ue]),typeof ot>"u"||!ot.length||!ot[0]){var yt="";ft=[];for(xt in oe[We])this.terminals_[xt]&&xt>ve&&ft.push("'"+this.terminals_[xt]+"'");we.showPosition?yt="Parse error on line "+(xe+1)+`: -`+we.showPosition()+` -Expecting `+ft.join(", ")+", got '"+(this.terminals_[Ue]||Ue)+"'":yt="Parse error on line "+(xe+1)+": Unexpected "+(Ue==Pe?"end of input":"'"+(this.terminals_[Ue]||Ue)+"'"),this.parseError(yt,{text:we.match,token:this.terminals_[Ue]||Ue,line:we.yylineno,loc:qe,expected:ft})}if(ot[0]instanceof Array&&ot.length>1)throw new Error("Parse Error: multiple actions possible at state: "+We+", token: "+Ue);switch(ot[0]){case 1:be.push(Ue),de.push(we.yytext),re.push(we.yylloc),be.push(ot[1]),Ue=null,ct?(Ue=ct,ct=null):(q=we.yyleng,V=we.yytext,xe=we.yylineno,qe=we.yylloc,pe>0&&pe--);break;case 2:if(ut=this.productions_[ot[1]][1],Mt.$=de[de.length-ut],Mt._$={first_line:re[re.length-(ut||1)].first_line,last_line:re[re.length-1].last_line,first_column:re[re.length-(ut||1)].first_column,last_column:re[re.length-1].last_column},at&&(Mt._$.range=[re[re.length-(ut||1)].range[0],re[re.length-1].range[1]]),bt=this.performAction.apply(Mt,[V,q,xe,Ve.yy,ot[1],de,re].concat(_e)),typeof bt<"u")return bt;ut&&(be=be.slice(0,-1*ut*2),de=de.slice(0,-1*ut),re=re.slice(0,-1*ut)),be.push(this.productions_[ot[1]][0]),de.push(Mt.$),re.push(Mt._$),Et=oe[be[be.length-2]][be[be.length-1]],be.push(Et);break;case 3:return!0}}return!0},"parse")},ze=function(){var $e={EOF:1,parseError:o(function(Ie,be){if(this.yy.parser)this.yy.parser.parseError(Ie,be);else throw new Error(Ie)},"parseError"),setInput:o(function(Re,Ie){return this.yy=Ie||this.yy||{},this._input=Re,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Re=this._input[0];this.yytext+=Re,this.yyleng++,this.offset++,this.match+=Re,this.matched+=Re;var Ie=Re.match(/(?:\r\n?|\n).*/g);return Ie?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Re},"input"),unput:o(function(Re){var Ie=Re.length,be=Re.split(/(?:\r\n?|\n)/g);this._input=Re+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ie),this.offset-=Ie;var W=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),be.length-1&&(this.yylineno-=be.length-1);var de=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:be?(be.length===W.length?this.yylloc.first_column:0)+W[W.length-be.length].length-be[0].length:this.yylloc.first_column-Ie},this.options.ranges&&(this.yylloc.range=[de[0],de[0]+this.yyleng-Ie]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Re){this.unput(this.match.slice(Re))},"less"),pastInput:o(function(){var Re=this.matched.substr(0,this.matched.length-this.match.length);return(Re.length>20?"...":"")+Re.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Re=this.match;return Re.length<20&&(Re+=this._input.substr(0,20-Re.length)),(Re.substr(0,20)+(Re.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Re=this.pastInput(),Ie=new Array(Re.length+1).join("-");return Re+this.upcomingInput()+` -`+Ie+"^"},"showPosition"),test_match:o(function(Re,Ie){var be,W,de;if(this.options.backtrack_lexer&&(de={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(de.yylloc.range=this.yylloc.range.slice(0))),W=Re[0].match(/(?:\r\n?|\n).*/g),W&&(this.yylineno+=W.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:W?W[W.length-1].length-W[W.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Re[0].length},this.yytext+=Re[0],this.match+=Re[0],this.matches=Re,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Re[0].length),this.matched+=Re[0],be=this.performAction.call(this,this.yy,this,Ie,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),be)return be;if(this._backtrack){for(var re in de)this[re]=de[re];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Re,Ie,be,W;this._more||(this.yytext="",this.match="");for(var de=this._currentRules(),re=0;reIe[0].length)){if(Ie=be,W=re,this.options.backtrack_lexer){if(Re=this.test_match(be,de[re]),Re!==!1)return Re;if(this._backtrack){Ie=!1;continue}else return!1}else if(!this.options.flex)break}return Ie?(Re=this.test_match(Ie,de[W]),Re!==!1?Re:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Ie=this.next();return Ie||this.lex()},"lex"),begin:o(function(Ie){this.conditionStack.push(Ie)},"begin"),popState:o(function(){var Ie=this.conditionStack.length-1;return Ie>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ie){return Ie=this.conditionStack.length-1-Math.abs(Ie||0),Ie>=0?this.conditionStack[Ie]:"INITIAL"},"topState"),pushState:o(function(Ie){this.begin(Ie)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ie,be,W,de){var re=de;switch(W){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return $e}();ge.lexer=ze;function He(){this.yy={}}return o(He,"Parser"),He.prototype=ge,ge.Parser=He,new He}();Ty.parser=Ty;JF=Ty});var zC,Gn,s0=N(()=>{"use strict";zC=o((t,e,{depth:r=2,clobber:n=!1}={})=>{let i={depth:r,clobber:n};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(a=>zC(t,a,i)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(a=>{t.includes(a)||t.push(a)}),t):t===void 0||r<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(a=>{typeof e[a]=="object"&&(t[a]===void 0||typeof t[a]=="object")?(t[a]===void 0&&(t[a]=Array.isArray(e[a])?[]:{}),t[a]=zC(t[a],e[a],{depth:r-1,clobber:n})):(n||typeof t[a]!="object"&&typeof e[a]!="object")&&(t[a]=e[a])}),t)},"assignWithDepth"),Gn=zC});var G4,e$,t$=N(()=>{"use strict";G4={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:o(t=>t>=255?255:t<0?0:t,"r"),g:o(t=>t>=255?255:t<0?0:t,"g"),b:o(t=>t>=255?255:t<0?0:t,"b"),h:o(t=>t%360,"h"),s:o(t=>t>=100?100:t<0?0:t,"s"),l:o(t=>t>=100?100:t<0?0:t,"l"),a:o(t=>t>=1?1:t<0?0:t,"a")},toLinear:o(t=>{let e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},"toLinear"),hue2rgb:o((t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?t+(e-t)*6*r:r<.5?e:r<.6666666666666666?t+(e-t)*(.6666666666666666-r)*6:t),"hue2rgb"),hsl2rgb:o(({h:t,s:e,l:r},n)=>{if(!e)return r*2.55;t/=360,e/=100,r/=100;let i=r<.5?r*(1+e):r+e-r*e,a=2*r-i;switch(n){case"r":return G4.hue2rgb(a,i,t+.3333333333333333)*255;case"g":return G4.hue2rgb(a,i,t)*255;case"b":return G4.hue2rgb(a,i,t-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:o(({r:t,g:e,b:r},n)=>{t/=255,e/=255,r/=255;let i=Math.max(t,e,r),a=Math.min(t,e,r),s=(i+a)/2;if(n==="l")return s*100;if(i===a)return 0;let l=i-a,u=s>.5?l/(2-i-a):l/(i+a);if(n==="s")return u*100;switch(i){case t:return((e-r)/l+(e{"use strict";fxe={clamp:o((t,e,r)=>e>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),"clamp"),round:o(t=>Math.round(t*1e10)/1e10,"round")},r$=fxe});var dxe,i$,a$=N(()=>{"use strict";dxe={dec2hex:o(t=>{let e=Math.round(t).toString(16);return e.length>1?e:`0${e}`},"dec2hex")},i$=dxe});var pxe,jt,Wl=N(()=>{"use strict";t$();n$();a$();pxe={channel:e$,lang:r$,unit:i$},jt=pxe});var ru,Ii,ky=N(()=>{"use strict";Wl();ru={};for(let t=0;t<=255;t++)ru[t]=jt.unit.dec2hex(t);Ii={ALL:0,RGB:1,HSL:2}});var GC,s$,o$=N(()=>{"use strict";ky();GC=class{static{o(this,"Type")}constructor(){this.type=Ii.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=Ii.ALL}is(e){return this.type===e}},s$=GC});var VC,l$,c$=N(()=>{"use strict";Wl();o$();ky();VC=class{static{o(this,"Channels")}constructor(e,r){this.color=r,this.changed=!1,this.data=e,this.type=new s$}set(e,r){return this.color=r,this.changed=!1,this.data=e,this.type.type=Ii.ALL,this}_ensureHSL(){let e=this.data,{h:r,s:n,l:i}=e;r===void 0&&(e.h=jt.channel.rgb2hsl(e,"h")),n===void 0&&(e.s=jt.channel.rgb2hsl(e,"s")),i===void 0&&(e.l=jt.channel.rgb2hsl(e,"l"))}_ensureRGB(){let e=this.data,{r,g:n,b:i}=e;r===void 0&&(e.r=jt.channel.hsl2rgb(e,"r")),n===void 0&&(e.g=jt.channel.hsl2rgb(e,"g")),i===void 0&&(e.b=jt.channel.hsl2rgb(e,"b"))}get r(){let e=this.data,r=e.r;return!this.type.is(Ii.HSL)&&r!==void 0?r:(this._ensureHSL(),jt.channel.hsl2rgb(e,"r"))}get g(){let e=this.data,r=e.g;return!this.type.is(Ii.HSL)&&r!==void 0?r:(this._ensureHSL(),jt.channel.hsl2rgb(e,"g"))}get b(){let e=this.data,r=e.b;return!this.type.is(Ii.HSL)&&r!==void 0?r:(this._ensureHSL(),jt.channel.hsl2rgb(e,"b"))}get h(){let e=this.data,r=e.h;return!this.type.is(Ii.RGB)&&r!==void 0?r:(this._ensureRGB(),jt.channel.rgb2hsl(e,"h"))}get s(){let e=this.data,r=e.s;return!this.type.is(Ii.RGB)&&r!==void 0?r:(this._ensureRGB(),jt.channel.rgb2hsl(e,"s"))}get l(){let e=this.data,r=e.l;return!this.type.is(Ii.RGB)&&r!==void 0?r:(this._ensureRGB(),jt.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(Ii.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(Ii.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(Ii.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(Ii.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(Ii.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(Ii.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}},l$=VC});var mxe,ih,Ey=N(()=>{"use strict";c$();mxe=new l$({r:0,g:0,b:0,a:0},"transparent"),ih=mxe});var u$,jf,UC=N(()=>{"use strict";Ey();ky();u$={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:o(t=>{if(t.charCodeAt(0)!==35)return;let e=t.match(u$.re);if(!e)return;let r=e[1],n=parseInt(r,16),i=r.length,a=i%4===0,s=i>4,l=s?1:17,u=s?8:4,h=a?0:-1,f=s?255:15;return ih.set({r:(n>>u*(h+3)&f)*l,g:(n>>u*(h+2)&f)*l,b:(n>>u*(h+1)&f)*l,a:a?(n&f)*l/255:1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`#${ru[Math.round(e)]}${ru[Math.round(r)]}${ru[Math.round(n)]}${ru[Math.round(i*255)]}`:`#${ru[Math.round(e)]}${ru[Math.round(r)]}${ru[Math.round(n)]}`},"stringify")},jf=u$});var V4,Sy,h$=N(()=>{"use strict";Wl();Ey();V4={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:o(t=>{let e=t.match(V4.hueRe);if(e){let[,r,n]=e;switch(n){case"grad":return jt.channel.clamp.h(parseFloat(r)*.9);case"rad":return jt.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return jt.channel.clamp.h(parseFloat(r)*360)}}return jt.channel.clamp.h(parseFloat(t))},"_hue2deg"),parse:o(t=>{let e=t.charCodeAt(0);if(e!==104&&e!==72)return;let r=t.match(V4.re);if(!r)return;let[,n,i,a,s,l]=r;return ih.set({h:V4._hue2deg(n),s:jt.channel.clamp.s(parseFloat(i)),l:jt.channel.clamp.l(parseFloat(a)),a:s?jt.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},t)},"parse"),stringify:o(t=>{let{h:e,s:r,l:n,a:i}=t;return i<1?`hsla(${jt.lang.round(e)}, ${jt.lang.round(r)}%, ${jt.lang.round(n)}%, ${i})`:`hsl(${jt.lang.round(e)}, ${jt.lang.round(r)}%, ${jt.lang.round(n)}%)`},"stringify")},Sy=V4});var U4,HC,f$=N(()=>{"use strict";UC();U4={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:o(t=>{t=t.toLowerCase();let e=U4.colors[t];if(e)return jf.parse(e)},"parse"),stringify:o(t=>{let e=jf.stringify(t);for(let r in U4.colors)if(U4.colors[r]===e)return r},"stringify")},HC=U4});var d$,Cy,p$=N(()=>{"use strict";Wl();Ey();d$={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:o(t=>{let e=t.charCodeAt(0);if(e!==114&&e!==82)return;let r=t.match(d$.re);if(!r)return;let[,n,i,a,s,l,u,h,f]=r;return ih.set({r:jt.channel.clamp.r(i?parseFloat(n)*2.55:parseFloat(n)),g:jt.channel.clamp.g(s?parseFloat(a)*2.55:parseFloat(a)),b:jt.channel.clamp.b(u?parseFloat(l)*2.55:parseFloat(l)),a:h?jt.channel.clamp.a(f?parseFloat(h)/100:parseFloat(h)):1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`rgba(${jt.lang.round(e)}, ${jt.lang.round(r)}, ${jt.lang.round(n)}, ${jt.lang.round(i)})`:`rgb(${jt.lang.round(e)}, ${jt.lang.round(r)}, ${jt.lang.round(n)})`},"stringify")},Cy=d$});var gxe,Oi,nu=N(()=>{"use strict";UC();h$();f$();p$();ky();gxe={format:{keyword:HC,hex:jf,rgb:Cy,rgba:Cy,hsl:Sy,hsla:Sy},parse:o(t=>{if(typeof t!="string")return t;let e=jf.parse(t)||Cy.parse(t)||Sy.parse(t)||HC.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},"parse"),stringify:o(t=>!t.changed&&t.color?t.color:t.type.is(Ii.HSL)||t.data.r===void 0?Sy.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?Cy.stringify(t):jf.stringify(t),"stringify")},Oi=gxe});var yxe,H4,WC=N(()=>{"use strict";Wl();nu();yxe=o((t,e)=>{let r=Oi.parse(t);for(let n in e)r[n]=jt.channel.clamp[n](e[n]);return Oi.stringify(r)},"change"),H4=yxe});var vxe,qa,qC=N(()=>{"use strict";Wl();Ey();nu();WC();vxe=o((t,e,r=0,n=1)=>{if(typeof t!="number")return H4(t,{a:e});let i=ih.set({r:jt.channel.clamp.r(t),g:jt.channel.clamp.g(e),b:jt.channel.clamp.b(r),a:jt.channel.clamp.a(n)});return Oi.stringify(i)},"rgba"),qa=vxe});var xxe,Kf,m$=N(()=>{"use strict";Wl();nu();xxe=o((t,e)=>jt.lang.round(Oi.parse(t)[e]),"channel"),Kf=xxe});var bxe,g$,y$=N(()=>{"use strict";Wl();nu();bxe=o(t=>{let{r:e,g:r,b:n}=Oi.parse(t),i=.2126*jt.channel.toLinear(e)+.7152*jt.channel.toLinear(r)+.0722*jt.channel.toLinear(n);return jt.lang.round(i)},"luminance"),g$=bxe});var wxe,v$,x$=N(()=>{"use strict";y$();wxe=o(t=>g$(t)>=.5,"isLight"),v$=wxe});var Txe,ca,b$=N(()=>{"use strict";x$();Txe=o(t=>!v$(t),"isDark"),ca=Txe});var kxe,W4,YC=N(()=>{"use strict";Wl();nu();kxe=o((t,e,r)=>{let n=Oi.parse(t),i=n[e],a=jt.channel.clamp[e](i+r);return i!==a&&(n[e]=a),Oi.stringify(n)},"adjustChannel"),W4=kxe});var Exe,Dt,w$=N(()=>{"use strict";YC();Exe=o((t,e)=>W4(t,"l",e),"lighten"),Dt=Exe});var Sxe,Ot,T$=N(()=>{"use strict";YC();Sxe=o((t,e)=>W4(t,"l",-e),"darken"),Ot=Sxe});var Cxe,Me,k$=N(()=>{"use strict";nu();WC();Cxe=o((t,e)=>{let r=Oi.parse(t),n={};for(let i in e)e[i]&&(n[i]=r[i]+e[i]);return H4(t,n)},"adjust"),Me=Cxe});var Axe,E$,S$=N(()=>{"use strict";nu();qC();Axe=o((t,e,r=50)=>{let{r:n,g:i,b:a,a:s}=Oi.parse(t),{r:l,g:u,b:h,a:f}=Oi.parse(e),d=r/100,p=d*2-1,m=s-f,y=((p*m===-1?p:(p+m)/(1+p*m))+1)/2,v=1-y,x=n*y+l*v,b=i*y+u*v,w=a*y+h*v,C=s*d+f*(1-d);return qa(x,b,w,C)},"mix"),E$=Axe});var _xe,wt,C$=N(()=>{"use strict";nu();S$();_xe=o((t,e=100)=>{let r=Oi.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,E$(r,t,e)},"invert"),wt=_xe});var A$=N(()=>{"use strict";qC();m$();b$();w$();T$();k$();C$()});var Ys=N(()=>{"use strict";A$()});var ah,sh,Ay=N(()=>{"use strict";ah="#ffffff",sh="#f2f2f2"});var Ti,o0=N(()=>{"use strict";Ys();Ti=o((t,e)=>e?Me(t,{s:-40,l:10}):Me(t,{s:-40,l:-10}),"mkBorder")});var jC,_$,D$=N(()=>{"use strict";Ys();Ay();o0();jC=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||Me(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Me(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Ti(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Ti(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Ti(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Ti(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||wt(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||wt(this.tertiaryColor),this.lineColor=this.lineColor||wt(this.background),this.arrowheadColor=this.arrowheadColor||wt(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Ot(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Ot(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||wt(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Dt(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||Ot(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Ot(this.mainBkg,10)):(this.rowOdd=this.rowOdd||Dt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||Dt(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},_$=o(t=>{let e=new jC;return e.calculate(t),e},"getThemeVariables")});var KC,L$,R$=N(()=>{"use strict";Ys();o0();KC=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Dt(this.primaryColor,16),this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=wt(this.background),this.secondaryBorderColor=Ti(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Ti(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.tertiaryColor),this.lineColor=wt(this.background),this.textColor=wt(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Dt(wt("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=qa(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=Ot("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Ot(this.sectionBkgColor,10),this.taskBorderColor=qa(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=qa(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||Dt(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Ot(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=Dt(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Dt(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=Dt(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Me(this.primaryColor,{h:64}),this.fillType3=Me(this.secondaryColor,{h:64}),this.fillType4=Me(this.primaryColor,{h:-64}),this.fillType5=Me(this.secondaryColor,{h:-64}),this.fillType6=Me(this.primaryColor,{h:128}),this.fillType7=Me(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330});for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},L$=o(t=>{let e=new KC;return e.calculate(t),e},"getThemeVariables")});var QC,oh,_y=N(()=>{"use strict";Ys();o0();Ay();QC=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Me(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=Ti(this.primaryColor,this.darkMode),this.secondaryBorderColor=Ti(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Ti(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.tertiaryColor),this.lineColor=wt(this.background),this.textColor=wt(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=qa(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Ot(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Ot(this.tertiaryColor,40);for(let e=0;e{this[n]==="calculated"&&(this[n]=void 0)}),typeof e!="object"){this.updateColors();return}let r=Object.keys(e);r.forEach(n=>{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},oh=o(t=>{let e=new QC;return e.calculate(t),e},"getThemeVariables")});var ZC,N$,M$=N(()=>{"use strict";Ys();Ay();o0();ZC=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Dt("#cde498",10),this.primaryBorderColor=Ti(this.primaryColor,this.darkMode),this.secondaryBorderColor=Ti(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Ti(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.primaryColor),this.lineColor=wt(this.background),this.textColor=wt(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=Ot(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Ot(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Ot(this.tertiaryColor,40);for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},N$=o(t=>{let e=new ZC;return e.calculate(t),e},"getThemeVariables")});var JC,I$,O$=N(()=>{"use strict";Ys();o0();Ay();JC=class{static{o(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Dt(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=Ti(this.primaryColor,this.darkMode),this.secondaryBorderColor=Ti(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Ti(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.tertiaryColor),this.lineColor=wt(this.background),this.textColor=wt(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||Dt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=Dt(this.contrast,55),this.border2=this.contrast,this.actorBorder=Dt(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},I$=o(t=>{let e=new JC;return e.calculate(t),e},"getThemeVariables")});var To,q4=N(()=>{"use strict";D$();R$();_y();M$();O$();To={base:{getThemeVariables:_$},dark:{getThemeVariables:L$},default:{getThemeVariables:oh},forest:{getThemeVariables:N$},neutral:{getThemeVariables:I$}}});var ql,P$=N(()=>{"use strict";ql={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1}});var B$,F$,$$,or,Ya=N(()=>{"use strict";q4();P$();B$={...ql,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF"},themeCSS:void 0,themeVariables:To.default.getThemeVariables(),sequence:{...ql.sequence,messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:o(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:o(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...ql.gantt,tickInterval:void 0,useWidth:void 0},c4:{...ql.c4,useWidth:void 0,personFont:o(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),external_personFont:o(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:o(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:o(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:o(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:o(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:o(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:o(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:o(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:o(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:o(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:o(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:o(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:o(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:o(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:o(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:o(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:o(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:o(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:o(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:o(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...ql.pie,useWidth:984},xyChart:{...ql.xyChart,useWidth:void 0},requirement:{...ql.requirement,useWidth:void 0},packet:{...ql.packet},radar:{...ql.radar}},F$=o((t,e="")=>Object.keys(t).reduce((r,n)=>Array.isArray(t[n])?r:typeof t[n]=="object"&&t[n]!==null?[...r,e+n,...F$(t[n],"")]:[...r,e+n],[]),"keyify"),$$=new Set(F$(B$,"")),or=B$});var l0,Dxe,e7=N(()=>{"use strict";Ya();vt();l0=o(t=>{if(Y.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>l0(e));return}for(let e of Object.keys(t)){if(Y.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!$$.has(e)||t[e]==null){Y.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){Y.debug("sanitizing object",e),l0(t[e]);continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let n of r)e.includes(n)&&(Y.debug("sanitizing css option",e),t[e]=Dxe(t[e]))}if(t.themeVariables)for(let e of Object.keys(t.themeVariables)){let r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}Y.debug("After sanitization",t)}},"sanitizeDirective"),Dxe=o(t=>{let e=0,r=0;for(let n of t){if(e{"use strict";s0();vt();q4();Ya();e7();lh=Object.freeze(or),xs=Gn({},lh),c0=[],Dy=Gn({},lh),Y4=o((t,e)=>{let r=Gn({},t),n={};for(let i of e)H$(i),n=Gn(n,i);if(r=Gn(r,n),n.theme&&n.theme in To){let i=Gn({},G$),a=Gn(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in To&&(r.themeVariables=To[r.theme].getThemeVariables(a))}return Dy=r,q$(Dy),Dy},"updateCurrentConfig"),t7=o(t=>(xs=Gn({},lh),xs=Gn(xs,t),t.theme&&To[t.theme]&&(xs.themeVariables=To[t.theme].getThemeVariables(t.themeVariables)),Y4(xs,c0),xs),"setSiteConfig"),V$=o(t=>{G$=Gn({},t)},"saveConfigFromInitialize"),U$=o(t=>(xs=Gn(xs,t),Y4(xs,c0),xs),"updateSiteConfig"),r7=o(()=>Gn({},xs),"getSiteConfig"),X4=o(t=>(q$(t),Gn(Dy,t),cr()),"setConfig"),cr=o(()=>Gn({},Dy),"getConfig"),H$=o(t=>{t&&(["secure",...xs.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(Y.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&H$(t[e])}))},"sanitize"),W$=o(t=>{l0(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),c0.push(t),Y4(xs,c0)},"addDirective"),Ly=o((t=xs)=>{c0=[],Y4(t,c0)},"reset"),Lxe={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},z$={},Rxe=o(t=>{z$[t]||(Y.warn(Lxe[t]),z$[t]=!0)},"issueWarning"),q$=o(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&Rxe("LAZY_LOAD_DEPRECATED")},"checkConfig")});function Ka(t){return function(e){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:Q4;Y$&&Y$(t,null);let n=e.length;for(;n--;){let i=e[n];if(typeof i=="string"){let a=r(i);a!==i&&(Nxe(e)||(e[n]=a),i=a)}t[i]=!0}return t}function zxe(t){for(let e=0;e0&&arguments[0]!==void 0?arguments[0]:Qxe(),e=o(At=>sz(At),"DOMPurify");if(e.version="3.2.4",e.removed=[],!t||!t.document||t.document.nodeType!==Oy.document||!t.Element)return e.isSupported=!1,e;let{document:r}=t,n=r,i=n.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:h,NamedNodeMap:f=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:d,DOMParser:p,trustedTypes:m}=t,g=u.prototype,y=Iy(g,"cloneNode"),v=Iy(g,"remove"),x=Iy(g,"nextSibling"),b=Iy(g,"childNodes"),w=Iy(g,"parentNode");if(typeof s=="function"){let At=r.createElement("template");At.content&&At.content.ownerDocument&&(r=At.content.ownerDocument)}let C,T="",{implementation:E,createNodeIterator:A,createDocumentFragment:S,getElementsByTagName:_}=r,{importNode:I}=n,D=tz();e.isSupported=typeof rz=="function"&&typeof w=="function"&&E&&E.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:k,ERB_EXPR:L,TMPLIT_EXPR:R,DATA_ATTR:O,ARIA_ATTR:M,IS_SCRIPT_OR_DATA:B,ATTR_WHITESPACE:F,CUSTOM_ELEMENT:P}=ez,{IS_ALLOWED_URI:z}=ez,$=null,H=Cr({},[...K$,...i7,...a7,...s7,...Q$]),Q=null,j=Cr({},[...Z$,...o7,...J$,...K4]),ie=Object.seal(nz(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ne=null,le=null,he=!0,K=!0,X=!1,te=!0,J=!1,se=!0,ue=!1,Z=!1,Se=!1,ce=!1,ae=!1,Oe=!1,ge=!0,ze=!1,He="user-content-",$e=!0,Re=!1,Ie={},be=null,W=Cr({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),de=null,re=Cr({},["audio","video","img","source","image","track"]),oe=null,V=Cr({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),xe="http://www.w3.org/1998/Math/MathML",q="http://www.w3.org/2000/svg",pe="http://www.w3.org/1999/xhtml",ve=pe,Pe=!1,_e=null,we=Cr({},[xe,q,pe],n7),Ve=Cr({},["mi","mo","mn","ms","mtext"]),De=Cr({},["annotation-xml"]),qe=Cr({},["title","style","font","a","script"]),at=null,Rt=["application/xhtml+xml","text/html"],st="text/html",Ue=null,ct=null,We=r.createElement("form"),ot=o(function(Ce){return Ce instanceof RegExp||Ce instanceof Function},"isRegexOrFunction"),Yt=o(function(){let Ce=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ct&&ct===Ce)){if((!Ce||typeof Ce!="object")&&(Ce={}),Ce=Qf(Ce),at=Rt.indexOf(Ce.PARSER_MEDIA_TYPE)===-1?st:Ce.PARSER_MEDIA_TYPE,Ue=at==="application/xhtml+xml"?n7:Q4,$=sl(Ce,"ALLOWED_TAGS")?Cr({},Ce.ALLOWED_TAGS,Ue):H,Q=sl(Ce,"ALLOWED_ATTR")?Cr({},Ce.ALLOWED_ATTR,Ue):j,_e=sl(Ce,"ALLOWED_NAMESPACES")?Cr({},Ce.ALLOWED_NAMESPACES,n7):we,oe=sl(Ce,"ADD_URI_SAFE_ATTR")?Cr(Qf(V),Ce.ADD_URI_SAFE_ATTR,Ue):V,de=sl(Ce,"ADD_DATA_URI_TAGS")?Cr(Qf(re),Ce.ADD_DATA_URI_TAGS,Ue):re,be=sl(Ce,"FORBID_CONTENTS")?Cr({},Ce.FORBID_CONTENTS,Ue):W,ne=sl(Ce,"FORBID_TAGS")?Cr({},Ce.FORBID_TAGS,Ue):{},le=sl(Ce,"FORBID_ATTR")?Cr({},Ce.FORBID_ATTR,Ue):{},Ie=sl(Ce,"USE_PROFILES")?Ce.USE_PROFILES:!1,he=Ce.ALLOW_ARIA_ATTR!==!1,K=Ce.ALLOW_DATA_ATTR!==!1,X=Ce.ALLOW_UNKNOWN_PROTOCOLS||!1,te=Ce.ALLOW_SELF_CLOSE_IN_ATTR!==!1,J=Ce.SAFE_FOR_TEMPLATES||!1,se=Ce.SAFE_FOR_XML!==!1,ue=Ce.WHOLE_DOCUMENT||!1,ce=Ce.RETURN_DOM||!1,ae=Ce.RETURN_DOM_FRAGMENT||!1,Oe=Ce.RETURN_TRUSTED_TYPE||!1,Se=Ce.FORCE_BODY||!1,ge=Ce.SANITIZE_DOM!==!1,ze=Ce.SANITIZE_NAMED_PROPS||!1,$e=Ce.KEEP_CONTENT!==!1,Re=Ce.IN_PLACE||!1,z=Ce.ALLOWED_URI_REGEXP||iz,ve=Ce.NAMESPACE||pe,Ve=Ce.MATHML_TEXT_INTEGRATION_POINTS||Ve,De=Ce.HTML_INTEGRATION_POINTS||De,ie=Ce.CUSTOM_ELEMENT_HANDLING||{},Ce.CUSTOM_ELEMENT_HANDLING&&ot(Ce.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(ie.tagNameCheck=Ce.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Ce.CUSTOM_ELEMENT_HANDLING&&ot(Ce.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(ie.attributeNameCheck=Ce.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Ce.CUSTOM_ELEMENT_HANDLING&&typeof Ce.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(ie.allowCustomizedBuiltInElements=Ce.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),J&&(K=!1),ae&&(ce=!0),Ie&&($=Cr({},Q$),Q=[],Ie.html===!0&&(Cr($,K$),Cr(Q,Z$)),Ie.svg===!0&&(Cr($,i7),Cr(Q,o7),Cr(Q,K4)),Ie.svgFilters===!0&&(Cr($,a7),Cr(Q,o7),Cr(Q,K4)),Ie.mathMl===!0&&(Cr($,s7),Cr(Q,J$),Cr(Q,K4))),Ce.ADD_TAGS&&($===H&&($=Qf($)),Cr($,Ce.ADD_TAGS,Ue)),Ce.ADD_ATTR&&(Q===j&&(Q=Qf(Q)),Cr(Q,Ce.ADD_ATTR,Ue)),Ce.ADD_URI_SAFE_ATTR&&Cr(oe,Ce.ADD_URI_SAFE_ATTR,Ue),Ce.FORBID_CONTENTS&&(be===W&&(be=Qf(be)),Cr(be,Ce.FORBID_CONTENTS,Ue)),$e&&($["#text"]=!0),ue&&Cr($,["html","head","body"]),$.table&&(Cr($,["tbody"]),delete ne.tbody),Ce.TRUSTED_TYPES_POLICY){if(typeof Ce.TRUSTED_TYPES_POLICY.createHTML!="function")throw My('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Ce.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw My('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');C=Ce.TRUSTED_TYPES_POLICY,T=C.createHTML("")}else C===void 0&&(C=Zxe(m,i)),C!==null&&typeof T=="string"&&(T=C.createHTML(""));ja&&ja(Ce),ct=Ce}},"_parseConfig"),bt=Cr({},[...i7,...a7,...Gxe]),Mt=Cr({},[...s7,...Vxe]),xt=o(function(Ce){let tt=w(Ce);(!tt||!tt.tagName)&&(tt={namespaceURI:ve,tagName:"template"});let St=Q4(Ce.tagName),mr=Q4(tt.tagName);return _e[Ce.namespaceURI]?Ce.namespaceURI===q?tt.namespaceURI===pe?St==="svg":tt.namespaceURI===xe?St==="svg"&&(mr==="annotation-xml"||Ve[mr]):!!bt[St]:Ce.namespaceURI===xe?tt.namespaceURI===pe?St==="math":tt.namespaceURI===q?St==="math"&&De[mr]:!!Mt[St]:Ce.namespaceURI===pe?tt.namespaceURI===q&&!De[mr]||tt.namespaceURI===xe&&!Ve[mr]?!1:!Mt[St]&&(qe[St]||!bt[St]):!!(at==="application/xhtml+xml"&&_e[Ce.namespaceURI]):!1},"_checkValidNamespace"),ut=o(function(Ce){Ry(e.removed,{element:Ce});try{w(Ce).removeChild(Ce)}catch{v(Ce)}},"_forceRemove"),Et=o(function(Ce,tt){try{Ry(e.removed,{attribute:tt.getAttributeNode(Ce),from:tt})}catch{Ry(e.removed,{attribute:null,from:tt})}if(tt.removeAttribute(Ce),Ce==="is")if(ce||ae)try{ut(tt)}catch{}else try{tt.setAttribute(Ce,"")}catch{}},"_removeAttribute"),ft=o(function(Ce){let tt=null,St=null;if(Se)Ce=""+Ce;else{let gn=j$(Ce,/^[\r\n\t ]+/);St=gn&&gn[0]}at==="application/xhtml+xml"&&ve===pe&&(Ce=''+Ce+"");let mr=C?C.createHTML(Ce):Ce;if(ve===pe)try{tt=new p().parseFromString(mr,at)}catch{}if(!tt||!tt.documentElement){tt=E.createDocument(ve,"template",null);try{tt.documentElement.innerHTML=Pe?T:mr}catch{}}let rn=tt.body||tt.documentElement;return Ce&&St&&rn.insertBefore(r.createTextNode(St),rn.childNodes[0]||null),ve===pe?_.call(tt,ue?"html":"body")[0]:ue?tt.documentElement:rn},"_initDocument"),yt=o(function(Ce){return A.call(Ce.ownerDocument||Ce,Ce,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),nt=o(function(Ce){return Ce instanceof d&&(typeof Ce.nodeName!="string"||typeof Ce.textContent!="string"||typeof Ce.removeChild!="function"||!(Ce.attributes instanceof f)||typeof Ce.removeAttribute!="function"||typeof Ce.setAttribute!="function"||typeof Ce.namespaceURI!="string"||typeof Ce.insertBefore!="function"||typeof Ce.hasChildNodes!="function")},"_isClobbered"),dn=o(function(Ce){return typeof l=="function"&&Ce instanceof l},"_isNode");function Tt(At,Ce,tt){j4(At,St=>{St.call(e,Ce,tt,ct)})}o(Tt,"_executeHooks");let On=o(function(Ce){let tt=null;if(Tt(D.beforeSanitizeElements,Ce,null),nt(Ce))return ut(Ce),!0;let St=Ue(Ce.nodeName);if(Tt(D.uponSanitizeElement,Ce,{tagName:St,allowedTags:$}),Ce.hasChildNodes()&&!dn(Ce.firstElementChild)&&Xa(/<[/\w]/g,Ce.innerHTML)&&Xa(/<[/\w]/g,Ce.textContent)||Ce.nodeType===Oy.progressingInstruction||se&&Ce.nodeType===Oy.comment&&Xa(/<[/\w]/g,Ce.data))return ut(Ce),!0;if(!$[St]||ne[St]){if(!ne[St]&&_r(St)&&(ie.tagNameCheck instanceof RegExp&&Xa(ie.tagNameCheck,St)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(St)))return!1;if($e&&!be[St]){let mr=w(Ce)||Ce.parentNode,rn=b(Ce)||Ce.childNodes;if(rn&&mr){let gn=rn.length;for(let Zr=gn-1;Zr>=0;--Zr){let Ni=y(rn[Zr],!0);Ni.__removalCount=(Ce.__removalCount||0)+1,mr.insertBefore(Ni,x(Ce))}}}return ut(Ce),!0}return Ce instanceof u&&!xt(Ce)||(St==="noscript"||St==="noembed"||St==="noframes")&&Xa(/<\/no(script|embed|frames)/i,Ce.innerHTML)?(ut(Ce),!0):(J&&Ce.nodeType===Oy.text&&(tt=Ce.textContent,j4([k,L,R],mr=>{tt=Ny(tt,mr," ")}),Ce.textContent!==tt&&(Ry(e.removed,{element:Ce.cloneNode()}),Ce.textContent=tt)),Tt(D.afterSanitizeElements,Ce,null),!1)},"_sanitizeElements"),tn=o(function(Ce,tt,St){if(ge&&(tt==="id"||tt==="name")&&(St in r||St in We))return!1;if(!(K&&!le[tt]&&Xa(O,tt))){if(!(he&&Xa(M,tt))){if(!Q[tt]||le[tt]){if(!(_r(Ce)&&(ie.tagNameCheck instanceof RegExp&&Xa(ie.tagNameCheck,Ce)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(Ce))&&(ie.attributeNameCheck instanceof RegExp&&Xa(ie.attributeNameCheck,tt)||ie.attributeNameCheck instanceof Function&&ie.attributeNameCheck(tt))||tt==="is"&&ie.allowCustomizedBuiltInElements&&(ie.tagNameCheck instanceof RegExp&&Xa(ie.tagNameCheck,St)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(St))))return!1}else if(!oe[tt]){if(!Xa(z,Ny(St,F,""))){if(!((tt==="src"||tt==="xlink:href"||tt==="href")&&Ce!=="script"&&Bxe(St,"data:")===0&&de[Ce])){if(!(X&&!Xa(B,Ny(St,F,"")))){if(St)return!1}}}}}}return!0},"_isValidAttribute"),_r=o(function(Ce){return Ce!=="annotation-xml"&&j$(Ce,P)},"_isBasicCustomElement"),Dr=o(function(Ce){Tt(D.beforeSanitizeAttributes,Ce,null);let{attributes:tt}=Ce;if(!tt||nt(Ce))return;let St={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Q,forceKeepAttr:void 0},mr=tt.length;for(;mr--;){let rn=tt[mr],{name:gn,namespaceURI:Zr,value:Ni}=rn,Zn=Ue(gn),Sn=gn==="value"?Ni:Fxe(Ni);if(St.attrName=Zn,St.attrValue=Sn,St.keepAttr=!0,St.forceKeepAttr=void 0,Tt(D.uponSanitizeAttribute,Ce,St),Sn=St.attrValue,ze&&(Zn==="id"||Zn==="name")&&(Et(gn,Ce),Sn=He+Sn),se&&Xa(/((--!?|])>)|<\/(style|title)/i,Sn)){Et(gn,Ce);continue}if(St.forceKeepAttr||(Et(gn,Ce),!St.keepAttr))continue;if(!te&&Xa(/\/>/i,Sn)){Et(gn,Ce);continue}J&&j4([k,L,R],et=>{Sn=Ny(Sn,et," ")});let Hr=Ue(Ce.nodeName);if(tn(Hr,Zn,Sn)){if(C&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!Zr)switch(m.getAttributeType(Hr,Zn)){case"TrustedHTML":{Sn=C.createHTML(Sn);break}case"TrustedScriptURL":{Sn=C.createScriptURL(Sn);break}}try{Zr?Ce.setAttributeNS(Zr,gn,Sn):Ce.setAttribute(gn,Sn),nt(Ce)?ut(Ce):X$(e.removed)}catch{}}}Tt(D.afterSanitizeAttributes,Ce,null)},"_sanitizeAttributes"),Pn=o(function At(Ce){let tt=null,St=yt(Ce);for(Tt(D.beforeSanitizeShadowDOM,Ce,null);tt=St.nextNode();)Tt(D.uponSanitizeShadowNode,tt,null),On(tt),Dr(tt),tt.content instanceof a&&At(tt.content);Tt(D.afterSanitizeShadowDOM,Ce,null)},"_sanitizeShadowDOM");return e.sanitize=function(At){let Ce=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},tt=null,St=null,mr=null,rn=null;if(Pe=!At,Pe&&(At=""),typeof At!="string"&&!dn(At))if(typeof At.toString=="function"){if(At=At.toString(),typeof At!="string")throw My("dirty is not a string, aborting")}else throw My("toString is not a function");if(!e.isSupported)return At;if(Z||Yt(Ce),e.removed=[],typeof At=="string"&&(Re=!1),Re){if(At.nodeName){let Ni=Ue(At.nodeName);if(!$[Ni]||ne[Ni])throw My("root node is forbidden and cannot be sanitized in-place")}}else if(At instanceof l)tt=ft(""),St=tt.ownerDocument.importNode(At,!0),St.nodeType===Oy.element&&St.nodeName==="BODY"||St.nodeName==="HTML"?tt=St:tt.appendChild(St);else{if(!ce&&!J&&!ue&&At.indexOf("<")===-1)return C&&Oe?C.createHTML(At):At;if(tt=ft(At),!tt)return ce?null:Oe?T:""}tt&&Se&&ut(tt.firstChild);let gn=yt(Re?At:tt);for(;mr=gn.nextNode();)On(mr),Dr(mr),mr.content instanceof a&&Pn(mr.content);if(Re)return At;if(ce){if(ae)for(rn=S.call(tt.ownerDocument);tt.firstChild;)rn.appendChild(tt.firstChild);else rn=tt;return(Q.shadowroot||Q.shadowrootmode)&&(rn=I.call(n,rn,!0)),rn}let Zr=ue?tt.outerHTML:tt.innerHTML;return ue&&$["!doctype"]&&tt.ownerDocument&&tt.ownerDocument.doctype&&tt.ownerDocument.doctype.name&&Xa(az,tt.ownerDocument.doctype.name)&&(Zr=" -`+Zr),J&&j4([k,L,R],Ni=>{Zr=Ny(Zr,Ni," ")}),C&&Oe?C.createHTML(Zr):Zr},e.setConfig=function(){let At=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Yt(At),Z=!0},e.clearConfig=function(){ct=null,Z=!1},e.isValidAttribute=function(At,Ce,tt){ct||Yt({});let St=Ue(At),mr=Ue(Ce);return tn(St,mr,tt)},e.addHook=function(At,Ce){typeof Ce=="function"&&Ry(D[At],Ce)},e.removeHook=function(At,Ce){if(Ce!==void 0){let tt=Oxe(D[At],Ce);return tt===-1?void 0:Pxe(D[At],tt,1)[0]}return X$(D[At])},e.removeHooks=function(At){D[At]=[]},e.removeAllHooks=function(){D=tz()},e}var rz,Y$,Nxe,Mxe,Ixe,ja,ko,nz,l7,c7,j4,Oxe,X$,Ry,Pxe,Q4,n7,j$,Ny,Bxe,Fxe,sl,Xa,My,K$,i7,a7,Gxe,s7,Vxe,Q$,Z$,o7,J$,K4,Uxe,Hxe,Wxe,qxe,Yxe,iz,Xxe,jxe,az,Kxe,ez,Oy,Qxe,Zxe,tz,ch,u7=N(()=>{"use strict";({entries:rz,setPrototypeOf:Y$,isFrozen:Nxe,getPrototypeOf:Mxe,getOwnPropertyDescriptor:Ixe}=Object),{freeze:ja,seal:ko,create:nz}=Object,{apply:l7,construct:c7}=typeof Reflect<"u"&&Reflect;ja||(ja=o(function(e){return e},"freeze"));ko||(ko=o(function(e){return e},"seal"));l7||(l7=o(function(e,r,n){return e.apply(r,n)},"apply"));c7||(c7=o(function(e,r){return new e(...r)},"construct"));j4=Ka(Array.prototype.forEach),Oxe=Ka(Array.prototype.lastIndexOf),X$=Ka(Array.prototype.pop),Ry=Ka(Array.prototype.push),Pxe=Ka(Array.prototype.splice),Q4=Ka(String.prototype.toLowerCase),n7=Ka(String.prototype.toString),j$=Ka(String.prototype.match),Ny=Ka(String.prototype.replace),Bxe=Ka(String.prototype.indexOf),Fxe=Ka(String.prototype.trim),sl=Ka(Object.prototype.hasOwnProperty),Xa=Ka(RegExp.prototype.test),My=$xe(TypeError);o(Ka,"unapply");o($xe,"unconstruct");o(Cr,"addToSet");o(zxe,"cleanArray");o(Qf,"clone");o(Iy,"lookupGetter");K$=ja(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),i7=ja(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),a7=ja(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Gxe=ja(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),s7=ja(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Vxe=ja(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Q$=ja(["#text"]),Z$=ja(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),o7=ja(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),J$=ja(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),K4=ja(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Uxe=ko(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Hxe=ko(/<%[\w\W]*|[\w\W]*%>/gm),Wxe=ko(/\$\{[\w\W]*/gm),qxe=ko(/^data-[\-\w.\u00B7-\uFFFF]+$/),Yxe=ko(/^aria-[\-\w]+$/),iz=ko(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Xxe=ko(/^(?:\w+script|data):/i),jxe=ko(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),az=ko(/^html$/i),Kxe=ko(/^[a-z][.\w]*(-[.\w]+)+$/i),ez=Object.freeze({__proto__:null,ARIA_ATTR:Yxe,ATTR_WHITESPACE:jxe,CUSTOM_ELEMENT:Kxe,DATA_ATTR:qxe,DOCTYPE_NAME:az,ERB_EXPR:Hxe,IS_ALLOWED_URI:iz,IS_SCRIPT_OR_DATA:Xxe,MUSTACHE_EXPR:Uxe,TMPLIT_EXPR:Wxe}),Oy={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Qxe=o(function(){return typeof window>"u"?null:window},"getGlobal"),Zxe=o(function(e,r){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";r&&r.hasAttribute(i)&&(n=r.getAttribute(i));let a="dompurify"+(n?"#"+n:"");try{return e.createPolicy(a,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},"_createTrustedTypesPolicy"),tz=o(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");o(sz,"createDOMPurify");ch=sz()});var MG={};hr(MG,{default:()=>q4e});function abe(t){return String(t).replace(ibe,e=>nbe[e])}function cbe(t){if(t.default)return t.default;var e=t.type,r=Array.isArray(e)?e[0]:e;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function gbe(t){for(var e=0;e=i[0]&&t<=i[1])return r.name}return null}function $z(t){for(var e=0;e=u3[e]&&t<=u3[e+1])return!0;return!1}function Abe(t,e){jl[t]=e}function P7(t,e,r){if(!jl[e])throw new Error("Font metrics not found for font: "+e+".");var n=t.charCodeAt(0),i=jl[e][n];if(!i&&t[0]in lz&&(n=lz[t[0]].charCodeAt(0),i=jl[e][n]),!i&&r==="text"&&$z(n)&&(i=jl[e][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}function _be(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!h7[e]){var r=h7[e]={cssEmPerMu:Z4.quad[e]/18};for(var n in Z4)Z4.hasOwnProperty(n)&&(r[n]=Z4[n][e])}return h7[e]}function hz(t){if(t instanceof Ts)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}function Nbe(t){if(t instanceof td)return t;throw new Error("Expected span but got "+String(t)+".")}function G(t,e,r,n,i,a){An[t][i]={font:e,group:r,replace:n},a&&n&&(An[t][n]=An[t][i])}function Nt(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},u=0;u0&&(a.push(a3(s,e)),s=[]),a.push(n[l]));s.length>0&&a.push(a3(s,e));var h;r?(h=a3(Pi(r,e,!0)),h.classes=["tag"],a.push(h)):i&&a.push(i);var f=lu(["katex-html"],a);if(f.setAttribute("aria-hidden","true"),h){var d=h.children[0];d.style.height=kt(f.height+f.depth),f.depth&&(d.style.verticalAlign=kt(-f.depth))}return f}function Qz(t){return new ed(t)}function gz(t,e,r,n,i){var a=ks(t,r),s;a.length===1&&a[0]instanceof ws&&Jt.contains(["mrow","mtable"],a[0].type)?s=a[0]:s=new dt.MathNode("mrow",a);var l=new dt.MathNode("annotation",[new dt.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var u=new dt.MathNode("semantics",[s,l]),h=new dt.MathNode("math",[u]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&h.setAttribute("display","block");var f=i?"katex":"katex-mathml";return Be.makeSpan([f],[h])}function xr(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function z7(t){var e=w3(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function w3(t){return t&&(t.type==="atom"||Ibe.hasOwnProperty(t.type))?t:null}function tG(t,e){var r=Pi(t.body,e,!0);return u4e([t.mclass],r,e)}function rG(t,e){var r,n=ks(t.body,e);return t.mclass==="minner"?r=new dt.MathNode("mpadded",n):t.mclass==="mord"?t.isCharacterBox?(r=n[0],r.type="mi"):r=new dt.MathNode("mi",n):(t.isCharacterBox?(r=n[0],r.type="mo"):r=new dt.MathNode("mo",n),t.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):t.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):t.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}function d4e(t,e,r){var n=h4e[t];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[e[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},s=r.callFunction("\\Big",[a],[]),l=r.callFunction("\\\\cdright",[e[1]],[]),u={type:"ordgroup",mode:"math",body:[i,s,l]};return r.callFunction("\\\\cdparent",[u],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function p4e(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var r=t.fetch().text;if(r==="&"||r==="\\\\")t.consume();else if(r==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new gt("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var n=[],i=[n],a=0;a-1))if("<>AV".indexOf(h)>-1)for(var d=0;d<2;d++){for(var p=!0,m=u+1;mAV=|." after @',s[u]);var g=d4e(h,f,t),y={type:"styling",body:[g],mode:"math",style:"display"};n.push(y),l=yz()}a%2===0?n.push(l):n.shift(),n=[],i.push(n)}t.gullet.endGroup(),t.gullet.endGroup();var v=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:v,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}function k3(t,e){var r=w3(t);if(r&&Jt.contains(A4e,r.text))return r;throw r?new gt("Invalid delimiter '"+r.text+"' after '"+e.funcName+"'",t):new gt("Invalid delimiter type '"+t.type+"'",t)}function bz(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function Ql(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},u=0;u1||!f)&&y.pop(),x.length{"use strict";Xs=class t{static{o(this,"SourceLocation")}constructor(e,r,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=r,this.end=n}static range(e,r){return r?!e||!e.loc||!r.loc||e.loc.lexer!==r.loc.lexer?null:new t(e.loc.lexer,e.loc.start,r.loc.end):e&&e.loc}},So=class t{static{o(this,"Token")}constructor(e,r){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=r}range(e,r){return new t(r,Xs.range(this,e))}},gt=class t{static{o(this,"ParseError")}constructor(e,r){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var n="KaTeX parse error: "+e,i,a,s=r&&r.loc;if(s&&s.start<=s.end){var l=s.lexer.input;i=s.start,a=s.end,i===l.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var u=l.slice(i,a).replace(/[^]/g,"$&\u0332"),h;i>15?h="\u2026"+l.slice(i-15,i):h=l.slice(0,i);var f;a+15":">","<":"<",'"':""","'":"'"},ibe=/[&><"']/g;o(abe,"escape");Fz=o(function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},"getBaseElem"),sbe=o(function(e){var r=Fz(e);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},"isCharacterBox"),obe=o(function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},"assert"),lbe=o(function(e){var r=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return r?r[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1])?null:r[1].toLowerCase():"_relative"},"protocolFromUrl"),Jt={contains:Jxe,deflt:ebe,escape:abe,hyphenate:rbe,getBaseElem:Fz,isCharacterBox:sbe,protocolFromUrl:lbe},c3={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:o(t=>"#"+t,"cliProcessor")},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:o((t,e)=>(e.push(t),e),"cliProcessor")},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:o(t=>Math.max(0,t),"processor"),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:o(t=>Math.max(0,t),"processor"),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:o(t=>Math.max(0,t),"processor"),cli:"-e, --max-expand ",cliProcessor:o(t=>t==="Infinity"?1/0:parseInt(t),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};o(cbe,"getDefaultValue");zy=class{static{o(this,"Settings")}constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var r in c3)if(c3.hasOwnProperty(r)){var n=c3[r];this[r]=e[r]!==void 0?n.processor?n.processor(e[r]):e[r]:cbe(n)}}reportNonstrict(e,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(e,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new gt("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+e+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]"))}}useStrictBehavior(e,r,n){var i=this.strict;if(typeof i=="function")try{i=i(e,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var r=Jt.protocolFromUrl(e.url);if(r==null)return!1;e.protocol=r}var n=typeof this.trust=="function"?this.trust(e):this.trust;return!!n}},Yl=class{static{o(this,"Style")}constructor(e,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=r,this.cramped=n}sup(){return Xl[ube[this.id]]}sub(){return Xl[hbe[this.id]]}fracNum(){return Xl[fbe[this.id]]}fracDen(){return Xl[dbe[this.id]]}cramp(){return Xl[pbe[this.id]]}text(){return Xl[mbe[this.id]]}isTight(){return this.size>=2}},O7=0,h3=1,f0=2,su=3,Gy=4,Eo=5,d0=6,Qa=7,Xl=[new Yl(O7,0,!1),new Yl(h3,0,!0),new Yl(f0,1,!1),new Yl(su,1,!0),new Yl(Gy,2,!1),new Yl(Eo,2,!0),new Yl(d0,3,!1),new Yl(Qa,3,!0)],ube=[Gy,Eo,Gy,Eo,d0,Qa,d0,Qa],hbe=[Eo,Eo,Eo,Eo,Qa,Qa,Qa,Qa],fbe=[f0,su,Gy,Eo,d0,Qa,d0,Qa],dbe=[su,su,Eo,Eo,Qa,Qa,Qa,Qa],pbe=[h3,h3,su,su,Eo,Eo,Qa,Qa],mbe=[O7,h3,f0,su,f0,su,f0,su],tr={DISPLAY:Xl[O7],TEXT:Xl[f0],SCRIPT:Xl[Gy],SCRIPTSCRIPT:Xl[d0]},k7=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];o(gbe,"scriptFromCodepoint");u3=[];k7.forEach(t=>t.blocks.forEach(e=>u3.push(...e)));o($z,"supportedCodepoint");h0=80,ybe=o(function(e,r){return"M95,"+(622+e+r)+` +"use strict";var __esbuild_esm_mermaid_nm;(__esbuild_esm_mermaid_nm||={}).mermaid=(()=>{var V3e=Object.create;var _y=Object.defineProperty;var U3e=Object.getOwnPropertyDescriptor;var H3e=Object.getOwnPropertyNames;var q3e=Object.getPrototypeOf,W3e=Object.prototype.hasOwnProperty;var o=(t,e)=>_y(t,"name",{value:e,configurable:!0});var N=(t,e)=>()=>(t&&(e=t(t=0)),e);var Da=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),dr=(t,e)=>{for(var r in e)_y(t,r,{get:e[r],enumerable:!0})},q4=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of H3e(e))!W3e.call(t,i)&&i!==r&&_y(t,i,{get:()=>e[i],enumerable:!(n=U3e(e,i))||n.enumerable});return t},Lr=(t,e,r)=>(q4(t,e,"default"),r&&q4(r,e,"default")),ja=(t,e,r)=>(r=t!=null?V3e(q3e(t)):{},q4(e||!t||!t.__esModule?_y(r,"default",{value:t,enumerable:!0}):r,t)),Y3e=t=>q4(_y({},"__esModule",{value:!0}),t);var X3e,y0,t7,Uz,W4=N(()=>{"use strict";X3e=Object.freeze({left:0,top:0,width:16,height:16}),y0=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),t7=Object.freeze({...X3e,...y0}),Uz=Object.freeze({...t7,body:"",hidden:!1})});var j3e,Hz,qz=N(()=>{"use strict";W4();j3e=Object.freeze({width:null,height:null}),Hz=Object.freeze({...j3e,...y0})});var r7,Y4,Wz=N(()=>{"use strict";r7=o((t,e,r,n="")=>{let i=t.split(":");if(t.slice(0,1)==="@"){if(i.length<2||i.length>3)return null;n=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let l=i.pop(),u=i.pop(),h={provider:i.length>0?i[0]:n,prefix:u,name:l};return e&&!Y4(h)?null:h}let a=i[0],s=a.split("-");if(s.length>1){let l={provider:n,prefix:s.shift(),name:s.join("-")};return e&&!Y4(l)?null:l}if(r&&n===""){let l={provider:n,prefix:"",name:a};return e&&!Y4(l,r)?null:l}return null},"stringToIcon"),Y4=o((t,e)=>t?!!((e&&t.prefix===""||t.prefix)&&t.name):!1,"validateIconName")});function Yz(t,e){let r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);let n=((t.rotate||0)+(e.rotate||0))%4;return n&&(r.rotate=n),r}var Xz=N(()=>{"use strict";o(Yz,"mergeIconTransformations")});function n7(t,e){let r=Yz(t,e);for(let n in Uz)n in y0?n in t&&!(n in r)&&(r[n]=y0[n]):n in e?r[n]=e[n]:n in t&&(r[n]=t[n]);return r}var jz=N(()=>{"use strict";W4();Xz();o(n7,"mergeIconData")});function Kz(t,e){let r=t.icons,n=t.aliases||Object.create(null),i=Object.create(null);function a(s){if(r[s])return i[s]=[];if(!(s in i)){i[s]=null;let l=n[s]&&n[s].parent,u=l&&a(l);u&&(i[s]=[l].concat(u))}return i[s]}return o(a,"resolve"),(e||Object.keys(r).concat(Object.keys(n))).forEach(a),i}var Qz=N(()=>{"use strict";o(Kz,"getIconsTree")});function Zz(t,e,r){let n=t.icons,i=t.aliases||Object.create(null),a={};function s(l){a=n7(n[l]||i[l],a)}return o(s,"parse"),s(e),r.forEach(s),n7(t,a)}function i7(t,e){if(t.icons[e])return Zz(t,e,[]);let r=Kz(t,[e])[e];return r?Zz(t,e,r):null}var Jz=N(()=>{"use strict";jz();Qz();o(Zz,"internalGetIconData");o(i7,"getIconData")});function a7(t,e,r){if(e===1)return t;if(r=r||100,typeof t=="number")return Math.ceil(t*e*r)/r;if(typeof t!="string")return t;let n=t.split(K3e);if(n===null||!n.length)return t;let i=[],a=n.shift(),s=Q3e.test(a);for(;;){if(s){let l=parseFloat(a);isNaN(l)?i.push(a):i.push(Math.ceil(l*e*r)/r)}else i.push(a);if(a=n.shift(),a===void 0)return i.join("");s=!s}}var K3e,Q3e,eG=N(()=>{"use strict";K3e=/(-?[0-9.]*[0-9]+[0-9.]*)/g,Q3e=/^-?[0-9.]*[0-9]+[0-9.]*$/g;o(a7,"calculateSize")});function Z3e(t,e="defs"){let r="",n=t.indexOf("<"+e);for(;n>=0;){let i=t.indexOf(">",n),a=t.indexOf("",a);if(s===-1)break;r+=t.slice(i+1,a).trim(),t=t.slice(0,n).trim()+t.slice(s+1)}return{defs:r,content:t}}function J3e(t,e){return t?""+t+""+e:e}function tG(t,e,r){let n=Z3e(t);return J3e(n.defs,e+n.content+r)}var rG=N(()=>{"use strict";o(Z3e,"splitSVGDefs");o(J3e,"mergeDefsAndContent");o(tG,"wrapSVGContent")});function s7(t,e){let r={...t7,...t},n={...Hz,...e},i={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,n].forEach(y=>{let v=[],x=y.hFlip,b=y.vFlip,T=y.rotate;x?b?T+=2:(v.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),v.push("scale(-1 1)"),i.top=i.left=0):b&&(v.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),v.push("scale(1 -1)"),i.top=i.left=0);let S;switch(T<0&&(T-=Math.floor(T/4)*4),T=T%4,T){case 1:S=i.height/2+i.top,v.unshift("rotate(90 "+S.toString()+" "+S.toString()+")");break;case 2:v.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:S=i.width/2+i.left,v.unshift("rotate(-90 "+S.toString()+" "+S.toString()+")");break}T%2===1&&(i.left!==i.top&&(S=i.left,i.left=i.top,i.top=S),i.width!==i.height&&(S=i.width,i.width=i.height,i.height=S)),v.length&&(a=tG(a,'',""))});let s=n.width,l=n.height,u=i.width,h=i.height,f,d;s===null?(d=l===null?"1em":l==="auto"?h:l,f=a7(d,u/h)):(f=s==="auto"?u:s,d=l===null?a7(f,h/u):l==="auto"?h:l);let p={},m=o((y,v)=>{e5e(v)||(p[y]=v.toString())},"setAttr");m("width",f),m("height",d);let g=[i.left,i.top,u,h];return p.viewBox=g.join(" "),{attributes:p,viewBox:g,body:a}}var e5e,nG=N(()=>{"use strict";W4();qz();eG();rG();e5e=o(t=>t==="unset"||t==="undefined"||t==="none","isUnsetKeyword");o(s7,"iconToSVG")});function o7(t,e=r5e){let r=[],n;for(;n=t5e.exec(t);)r.push(n[1]);if(!r.length)return t;let i="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{let s=typeof e=="function"?e(a):e+(n5e++).toString(),l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+s+i+"$3")}),t=t.replace(new RegExp(i,"g"),""),t}var t5e,r5e,n5e,iG=N(()=>{"use strict";t5e=/\sid="(\S+)"/g,r5e="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),n5e=0;o(o7,"replaceIDs")});function l7(t,e){let r=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let n in e)r+=" "+n+'="'+e[n]+'"';return'"+t+""}var aG=N(()=>{"use strict";o(l7,"iconToHTML")});var sG=N(()=>{"use strict";Wz();Jz();nG();iG();aG()});var c7,Rn,v0=N(()=>{"use strict";c7=o((t,e,{depth:r=2,clobber:n=!1}={})=>{let i={depth:r,clobber:n};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(a=>c7(t,a,i)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(a=>{t.includes(a)||t.push(a)}),t):t===void 0||r<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(a=>{typeof e[a]=="object"&&(t[a]===void 0||typeof t[a]=="object")?(t[a]===void 0&&(t[a]=Array.isArray(e[a])?[]:{}),t[a]=c7(t[a],e[a],{depth:r-1,clobber:n})):(n||typeof t[a]!="object"&&typeof e[a]!="object")&&(t[a]=e[a])}),t)},"assignWithDepth"),Rn=c7});var X4=Da((u7,h7)=>{"use strict";(function(t,e){typeof u7=="object"&&typeof h7<"u"?h7.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(u7,(function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",a="minute",s="hour",l="day",u="week",h="month",f="quarter",d="year",p="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:o(function(E){var D=["th","st","nd","rd"],_=E%100;return"["+E+(D[(_-20)%10]||D[_]||D[0])+"]"},"ordinal")},x=o(function(E,D,_){var O=String(E);return!O||O.length>=D?E:""+Array(D+1-O.length).join(_)+E},"m"),b={s:x,z:o(function(E){var D=-E.utcOffset(),_=Math.abs(D),O=Math.floor(_/60),M=_%60;return(D<=0?"+":"-")+x(O,2,"0")+":"+x(M,2,"0")},"z"),m:o(function E(D,_){if(D.date()<_.date())return-E(_,D);var O=12*(_.year()-D.year())+(_.month()-D.month()),M=D.clone().add(O,h),P=_-M<0,B=D.clone().add(O+(P?-1:1),h);return+(-(O+(_-M)/(P?M-B:B-M))||0)},"t"),a:o(function(E){return E<0?Math.ceil(E)||0:Math.floor(E)},"a"),p:o(function(E){return{M:h,y:d,w:u,d:l,D:p,h:s,m:a,s:i,ms:n,Q:f}[E]||String(E||"").toLowerCase().replace(/s$/,"")},"p"),u:o(function(E){return E===void 0},"u")},T="en",S={};S[T]=v;var w="$isDayjsObject",k=o(function(E){return E instanceof I||!(!E||!E[w])},"S"),A=o(function E(D,_,O){var M;if(!D)return T;if(typeof D=="string"){var P=D.toLowerCase();S[P]&&(M=P),_&&(S[P]=_,M=P);var B=D.split("-");if(!M&&B.length>1)return E(B[0])}else{var F=D.name;S[F]=D,M=F}return!O&&M&&(T=M),M||!O&&T},"t"),C=o(function(E,D){if(k(E))return E.clone();var _=typeof D=="object"?D:{};return _.date=E,_.args=arguments,new I(_)},"O"),R=b;R.l=A,R.i=k,R.w=function(E,D){return C(E,{locale:D.$L,utc:D.$u,x:D.$x,$offset:D.$offset})};var I=(function(){function E(_){this.$L=A(_.locale,null,!0),this.parse(_),this.$x=this.$x||_.x||{},this[w]=!0}o(E,"M");var D=E.prototype;return D.parse=function(_){this.$d=(function(O){var M=O.date,P=O.utc;if(M===null)return new Date(NaN);if(R.u(M))return new Date;if(M instanceof Date)return new Date(M);if(typeof M=="string"&&!/Z$/i.test(M)){var B=M.match(g);if(B){var F=B[2]-1||0,G=(B[7]||"0").substring(0,3);return P?new Date(Date.UTC(B[1],F,B[3]||1,B[4]||0,B[5]||0,B[6]||0,G)):new Date(B[1],F,B[3]||1,B[4]||0,B[5]||0,B[6]||0,G)}}return new Date(M)})(_),this.init()},D.init=function(){var _=this.$d;this.$y=_.getFullYear(),this.$M=_.getMonth(),this.$D=_.getDate(),this.$W=_.getDay(),this.$H=_.getHours(),this.$m=_.getMinutes(),this.$s=_.getSeconds(),this.$ms=_.getMilliseconds()},D.$utils=function(){return R},D.isValid=function(){return this.$d.toString()!==m},D.isSame=function(_,O){var M=C(_);return this.startOf(O)<=M&&M<=this.endOf(O)},D.isAfter=function(_,O){return C(_){"use strict";oG=ja(X4(),1),au={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},X={trace:o((...t)=>{},"trace"),debug:o((...t)=>{},"debug"),info:o((...t)=>{},"info"),warn:o((...t)=>{},"warn"),error:o((...t)=>{},"error"),fatal:o((...t)=>{},"fatal")},Dy=o(function(t="fatal"){let e=au.fatal;typeof t=="string"?t.toLowerCase()in au&&(e=au[t]):typeof t=="number"&&(e=t),X.trace=()=>{},X.debug=()=>{},X.info=()=>{},X.warn=()=>{},X.error=()=>{},X.fatal=()=>{},e<=au.fatal&&(X.fatal=console.error?console.error.bind(console,Eo("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Eo("FATAL"))),e<=au.error&&(X.error=console.error?console.error.bind(console,Eo("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Eo("ERROR"))),e<=au.warn&&(X.warn=console.warn?console.warn.bind(console,Eo("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Eo("WARN"))),e<=au.info&&(X.info=console.info?console.info.bind(console,Eo("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Eo("INFO"))),e<=au.debug&&(X.debug=console.debug?console.debug.bind(console,Eo("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Eo("DEBUG"))),e<=au.trace&&(X.trace=console.debug?console.debug.bind(console,Eo("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Eo("TRACE")))},"setLogLevel"),Eo=o(t=>`%c${(0,oG.default)().format("ss.SSS")} : ${t} : `,"format")});var j4,lG,cG=N(()=>{"use strict";j4={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:o(t=>t>=255?255:t<0?0:t,"r"),g:o(t=>t>=255?255:t<0?0:t,"g"),b:o(t=>t>=255?255:t<0?0:t,"b"),h:o(t=>t%360,"h"),s:o(t=>t>=100?100:t<0?0:t,"s"),l:o(t=>t>=100?100:t<0?0:t,"l"),a:o(t=>t>=1?1:t<0?0:t,"a")},toLinear:o(t=>{let e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},"toLinear"),hue2rgb:o((t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?t+(e-t)*6*r:r<.5?e:r<.6666666666666666?t+(e-t)*(.6666666666666666-r)*6:t),"hue2rgb"),hsl2rgb:o(({h:t,s:e,l:r},n)=>{if(!e)return r*2.55;t/=360,e/=100,r/=100;let i=r<.5?r*(1+e):r+e-r*e,a=2*r-i;switch(n){case"r":return j4.hue2rgb(a,i,t+.3333333333333333)*255;case"g":return j4.hue2rgb(a,i,t)*255;case"b":return j4.hue2rgb(a,i,t-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:o(({r:t,g:e,b:r},n)=>{t/=255,e/=255,r/=255;let i=Math.max(t,e,r),a=Math.min(t,e,r),s=(i+a)/2;if(n==="l")return s*100;if(i===a)return 0;let l=i-a,u=s>.5?l/(2-i-a):l/(i+a);if(n==="s")return u*100;switch(i){case t:return((e-r)/l+(e{"use strict";i5e={clamp:o((t,e,r)=>e>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),"clamp"),round:o(t=>Math.round(t*1e10)/1e10,"round")},uG=i5e});var a5e,fG,dG=N(()=>{"use strict";a5e={dec2hex:o(t=>{let e=Math.round(t).toString(16);return e.length>1?e:`0${e}`},"dec2hex")},fG=a5e});var s5e,Kt,Xl=N(()=>{"use strict";cG();hG();dG();s5e={channel:lG,lang:uG,unit:fG},Kt=s5e});var su,Ni,Ly=N(()=>{"use strict";Xl();su={};for(let t=0;t<=255;t++)su[t]=Kt.unit.dec2hex(t);Ni={ALL:0,RGB:1,HSL:2}});var f7,pG,mG=N(()=>{"use strict";Ly();f7=class{static{o(this,"Type")}constructor(){this.type=Ni.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=Ni.ALL}is(e){return this.type===e}},pG=f7});var d7,gG,yG=N(()=>{"use strict";Xl();mG();Ly();d7=class{static{o(this,"Channels")}constructor(e,r){this.color=r,this.changed=!1,this.data=e,this.type=new pG}set(e,r){return this.color=r,this.changed=!1,this.data=e,this.type.type=Ni.ALL,this}_ensureHSL(){let e=this.data,{h:r,s:n,l:i}=e;r===void 0&&(e.h=Kt.channel.rgb2hsl(e,"h")),n===void 0&&(e.s=Kt.channel.rgb2hsl(e,"s")),i===void 0&&(e.l=Kt.channel.rgb2hsl(e,"l"))}_ensureRGB(){let e=this.data,{r,g:n,b:i}=e;r===void 0&&(e.r=Kt.channel.hsl2rgb(e,"r")),n===void 0&&(e.g=Kt.channel.hsl2rgb(e,"g")),i===void 0&&(e.b=Kt.channel.hsl2rgb(e,"b"))}get r(){let e=this.data,r=e.r;return!this.type.is(Ni.HSL)&&r!==void 0?r:(this._ensureHSL(),Kt.channel.hsl2rgb(e,"r"))}get g(){let e=this.data,r=e.g;return!this.type.is(Ni.HSL)&&r!==void 0?r:(this._ensureHSL(),Kt.channel.hsl2rgb(e,"g"))}get b(){let e=this.data,r=e.b;return!this.type.is(Ni.HSL)&&r!==void 0?r:(this._ensureHSL(),Kt.channel.hsl2rgb(e,"b"))}get h(){let e=this.data,r=e.h;return!this.type.is(Ni.RGB)&&r!==void 0?r:(this._ensureRGB(),Kt.channel.rgb2hsl(e,"h"))}get s(){let e=this.data,r=e.s;return!this.type.is(Ni.RGB)&&r!==void 0?r:(this._ensureRGB(),Kt.channel.rgb2hsl(e,"s"))}get l(){let e=this.data,r=e.l;return!this.type.is(Ni.RGB)&&r!==void 0?r:(this._ensureRGB(),Kt.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(Ni.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(Ni.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(Ni.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(Ni.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(Ni.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(Ni.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}},gG=d7});var o5e,fh,Ry=N(()=>{"use strict";yG();o5e=new gG({r:0,g:0,b:0,a:0},"transparent"),fh=o5e});var vG,od,p7=N(()=>{"use strict";Ry();Ly();vG={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:o(t=>{if(t.charCodeAt(0)!==35)return;let e=t.match(vG.re);if(!e)return;let r=e[1],n=parseInt(r,16),i=r.length,a=i%4===0,s=i>4,l=s?1:17,u=s?8:4,h=a?0:-1,f=s?255:15;return fh.set({r:(n>>u*(h+3)&f)*l,g:(n>>u*(h+2)&f)*l,b:(n>>u*(h+1)&f)*l,a:a?(n&f)*l/255:1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`#${su[Math.round(e)]}${su[Math.round(r)]}${su[Math.round(n)]}${su[Math.round(i*255)]}`:`#${su[Math.round(e)]}${su[Math.round(r)]}${su[Math.round(n)]}`},"stringify")},od=vG});var K4,Ny,xG=N(()=>{"use strict";Xl();Ry();K4={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:o(t=>{let e=t.match(K4.hueRe);if(e){let[,r,n]=e;switch(n){case"grad":return Kt.channel.clamp.h(parseFloat(r)*.9);case"rad":return Kt.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return Kt.channel.clamp.h(parseFloat(r)*360)}}return Kt.channel.clamp.h(parseFloat(t))},"_hue2deg"),parse:o(t=>{let e=t.charCodeAt(0);if(e!==104&&e!==72)return;let r=t.match(K4.re);if(!r)return;let[,n,i,a,s,l]=r;return fh.set({h:K4._hue2deg(n),s:Kt.channel.clamp.s(parseFloat(i)),l:Kt.channel.clamp.l(parseFloat(a)),a:s?Kt.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},t)},"parse"),stringify:o(t=>{let{h:e,s:r,l:n,a:i}=t;return i<1?`hsla(${Kt.lang.round(e)}, ${Kt.lang.round(r)}%, ${Kt.lang.round(n)}%, ${i})`:`hsl(${Kt.lang.round(e)}, ${Kt.lang.round(r)}%, ${Kt.lang.round(n)}%)`},"stringify")},Ny=K4});var Q4,m7,bG=N(()=>{"use strict";p7();Q4={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:o(t=>{t=t.toLowerCase();let e=Q4.colors[t];if(e)return od.parse(e)},"parse"),stringify:o(t=>{let e=od.stringify(t);for(let r in Q4.colors)if(Q4.colors[r]===e)return r},"stringify")},m7=Q4});var TG,My,wG=N(()=>{"use strict";Xl();Ry();TG={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:o(t=>{let e=t.charCodeAt(0);if(e!==114&&e!==82)return;let r=t.match(TG.re);if(!r)return;let[,n,i,a,s,l,u,h,f]=r;return fh.set({r:Kt.channel.clamp.r(i?parseFloat(n)*2.55:parseFloat(n)),g:Kt.channel.clamp.g(s?parseFloat(a)*2.55:parseFloat(a)),b:Kt.channel.clamp.b(u?parseFloat(l)*2.55:parseFloat(l)),a:h?Kt.channel.clamp.a(f?parseFloat(h)/100:parseFloat(h)):1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`rgba(${Kt.lang.round(e)}, ${Kt.lang.round(r)}, ${Kt.lang.round(n)}, ${Kt.lang.round(i)})`:`rgb(${Kt.lang.round(e)}, ${Kt.lang.round(r)}, ${Kt.lang.round(n)})`},"stringify")},My=TG});var l5e,Mi,ou=N(()=>{"use strict";p7();xG();bG();wG();Ly();l5e={format:{keyword:m7,hex:od,rgb:My,rgba:My,hsl:Ny,hsla:Ny},parse:o(t=>{if(typeof t!="string")return t;let e=od.parse(t)||My.parse(t)||Ny.parse(t)||m7.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},"parse"),stringify:o(t=>!t.changed&&t.color?t.color:t.type.is(Ni.HSL)||t.data.r===void 0?Ny.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?My.stringify(t):od.stringify(t),"stringify")},Mi=l5e});var c5e,Z4,g7=N(()=>{"use strict";Xl();ou();c5e=o((t,e)=>{let r=Mi.parse(t);for(let n in e)r[n]=Kt.channel.clamp[n](e[n]);return Mi.stringify(r)},"change"),Z4=c5e});var u5e,Ka,y7=N(()=>{"use strict";Xl();Ry();ou();g7();u5e=o((t,e,r=0,n=1)=>{if(typeof t!="number")return Z4(t,{a:e});let i=fh.set({r:Kt.channel.clamp.r(t),g:Kt.channel.clamp.g(e),b:Kt.channel.clamp.b(r),a:Kt.channel.clamp.a(n)});return Mi.stringify(i)},"rgba"),Ka=u5e});var h5e,ld,kG=N(()=>{"use strict";Xl();ou();h5e=o((t,e)=>Kt.lang.round(Mi.parse(t)[e]),"channel"),ld=h5e});var f5e,EG,SG=N(()=>{"use strict";Xl();ou();f5e=o(t=>{let{r:e,g:r,b:n}=Mi.parse(t),i=.2126*Kt.channel.toLinear(e)+.7152*Kt.channel.toLinear(r)+.0722*Kt.channel.toLinear(n);return Kt.lang.round(i)},"luminance"),EG=f5e});var d5e,CG,AG=N(()=>{"use strict";SG();d5e=o(t=>EG(t)>=.5,"isLight"),CG=d5e});var p5e,sa,_G=N(()=>{"use strict";AG();p5e=o(t=>!CG(t),"isDark"),sa=p5e});var m5e,J4,v7=N(()=>{"use strict";Xl();ou();m5e=o((t,e,r)=>{let n=Mi.parse(t),i=n[e],a=Kt.channel.clamp[e](i+r);return i!==a&&(n[e]=a),Mi.stringify(n)},"adjustChannel"),J4=m5e});var g5e,Rt,DG=N(()=>{"use strict";v7();g5e=o((t,e)=>J4(t,"l",e),"lighten"),Rt=g5e});var y5e,Pt,LG=N(()=>{"use strict";v7();y5e=o((t,e)=>J4(t,"l",-e),"darken"),Pt=y5e});var v5e,Pe,RG=N(()=>{"use strict";ou();g7();v5e=o((t,e)=>{let r=Mi.parse(t),n={};for(let i in e)e[i]&&(n[i]=r[i]+e[i]);return Z4(t,n)},"adjust"),Pe=v5e});var x5e,NG,MG=N(()=>{"use strict";ou();y7();x5e=o((t,e,r=50)=>{let{r:n,g:i,b:a,a:s}=Mi.parse(t),{r:l,g:u,b:h,a:f}=Mi.parse(e),d=r/100,p=d*2-1,m=s-f,y=((p*m===-1?p:(p+m)/(1+p*m))+1)/2,v=1-y,x=n*y+l*v,b=i*y+u*v,T=a*y+h*v,S=s*d+f*(1-d);return Ka(x,b,T,S)},"mix"),NG=x5e});var b5e,Et,IG=N(()=>{"use strict";ou();MG();b5e=o((t,e=100)=>{let r=Mi.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,NG(r,t,e)},"invert"),Et=b5e});var OG=N(()=>{"use strict";y7();kG();_G();DG();LG();RG();IG()});var eo=N(()=>{"use strict";OG()});var dh,ph,Iy=N(()=>{"use strict";dh="#ffffff",ph="#f2f2f2"});var wi,x0=N(()=>{"use strict";eo();wi=o((t,e)=>e?Pe(t,{s:-40,l:10}):Pe(t,{s:-40,l:-10}),"mkBorder")});var b7,PG,BG=N(()=>{"use strict";eo();Iy();x0();b7=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||Pe(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Pe(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||wi(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||wi(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Et(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Et(this.tertiaryColor),this.lineColor=this.lineColor||Et(this.background),this.arrowheadColor=this.arrowheadColor||Et(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Pt(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Pt(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Et(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Rt(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||Pt(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Pt(this.mainBkg,10)):(this.rowOdd=this.rowOdd||Rt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||Rt(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},PG=o(t=>{let e=new b7;return e.calculate(t),e},"getThemeVariables")});var T7,FG,$G=N(()=>{"use strict";eo();x0();T7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Rt(this.primaryColor,16),this.tertiaryColor=Pe(this.primaryColor,{h:-160}),this.primaryBorderColor=Et(this.background),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.tertiaryColor),this.lineColor=Et(this.background),this.textColor=Et(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Rt(Et("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=Ka(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=Pt("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Pt(this.sectionBkgColor,10),this.taskBorderColor=Ka(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Ka(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||Rt(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Pt(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=Rt(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Rt(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=Rt(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Pe(this.primaryColor,{h:64}),this.fillType3=Pe(this.secondaryColor,{h:64}),this.fillType4=Pe(this.primaryColor,{h:-64}),this.fillType5=Pe(this.secondaryColor,{h:-64}),this.fillType6=Pe(this.primaryColor,{h:128}),this.fillType7=Pe(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330});for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},FG=o(t=>{let e=new T7;return e.calculate(t),e},"getThemeVariables")});var w7,mh,Oy=N(()=>{"use strict";eo();x0();Iy();w7=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Pe(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Pe(this.primaryColor,{h:-160}),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.tertiaryColor),this.lineColor=Et(this.background),this.textColor=Et(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=Ka(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Pt(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Pt(this.tertiaryColor,40);for(let e=0;e{this[n]==="calculated"&&(this[n]=void 0)}),typeof e!="object"){this.updateColors();return}let r=Object.keys(e);r.forEach(n=>{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},mh=o(t=>{let e=new w7;return e.calculate(t),e},"getThemeVariables")});var k7,zG,GG=N(()=>{"use strict";eo();Iy();x0();k7=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Rt("#cde498",10),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.primaryColor),this.lineColor=Et(this.background),this.textColor=Et(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=Pt(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Pt(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Pt(this.tertiaryColor,40);for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},zG=o(t=>{let e=new k7;return e.calculate(t),e},"getThemeVariables")});var E7,VG,UG=N(()=>{"use strict";eo();x0();Iy();E7=class{static{o(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Rt(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Pe(this.primaryColor,{h:-160}),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.tertiaryColor),this.lineColor=Et(this.background),this.textColor=Et(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||Rt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=Rt(this.contrast,55),this.border2=this.contrast,this.actorBorder=Rt(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},VG=o(t=>{let e=new E7;return e.calculate(t),e},"getThemeVariables")});var So,e3=N(()=>{"use strict";BG();$G();Oy();GG();UG();So={base:{getThemeVariables:PG},dark:{getThemeVariables:FG},default:{getThemeVariables:mh},forest:{getThemeVariables:zG},neutral:{getThemeVariables:VG}}});var ul,HG=N(()=>{"use strict";ul={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1}});var qG,WG,YG,ur,La=N(()=>{"use strict";e3();HG();qG={...ul,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:So.default.getThemeVariables(),sequence:{...ul.sequence,messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:o(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:o(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...ul.gantt,tickInterval:void 0,useWidth:void 0},c4:{...ul.c4,useWidth:void 0,personFont:o(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...ul.flowchart,inheritDir:!1},external_personFont:o(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:o(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:o(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:o(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:o(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:o(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:o(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:o(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:o(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:o(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:o(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:o(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:o(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:o(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:o(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:o(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:o(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:o(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:o(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:o(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...ul.pie,useWidth:984},xyChart:{...ul.xyChart,useWidth:void 0},requirement:{...ul.requirement,useWidth:void 0},packet:{...ul.packet},radar:{...ul.radar},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","}},WG=o((t,e="")=>Object.keys(t).reduce((r,n)=>Array.isArray(t[n])?r:typeof t[n]=="object"&&t[n]!==null?[...r,e+n,...WG(t[n],"")]:[...r,e+n],[]),"keyify"),YG=new Set(WG(qG,"")),ur=qG});var b0,T5e,S7=N(()=>{"use strict";La();pt();b0=o(t=>{if(X.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>b0(e));return}for(let e of Object.keys(t)){if(X.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!YG.has(e)||t[e]==null){X.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){X.debug("sanitizing object",e),b0(t[e]);continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let n of r)e.includes(n)&&(X.debug("sanitizing css option",e),t[e]=T5e(t[e]))}if(t.themeVariables)for(let e of Object.keys(t.themeVariables)){let r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}X.debug("After sanitization",t)}},"sanitizeDirective"),T5e=o(t=>{let e=0,r=0;for(let n of t){if(e{"use strict";v0();pt();e3();La();S7();gh=Object.freeze(ur),Es=Rn({},gh),cd=[],Py=Rn({},gh),r3=o((t,e)=>{let r=Rn({},t),n={};for(let i of e)QG(i),n=Rn(n,i);if(r=Rn(r,n),n.theme&&n.theme in So){let i=Rn({},t3),a=Rn(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in So&&(r.themeVariables=So[r.theme].getThemeVariables(a))}return Py=r,JG(Py),Py},"updateCurrentConfig"),C7=o(t=>(Es=Rn({},gh),Es=Rn(Es,t),t.theme&&So[t.theme]&&(Es.themeVariables=So[t.theme].getThemeVariables(t.themeVariables)),r3(Es,cd),Es),"setSiteConfig"),jG=o(t=>{t3=Rn({},t)},"saveConfigFromInitialize"),KG=o(t=>(Es=Rn(Es,t),r3(Es,cd),Es),"updateSiteConfig"),A7=o(()=>Rn({},Es),"getSiteConfig"),n3=o(t=>(JG(t),Rn(Py,t),Qt()),"setConfig"),Qt=o(()=>Rn({},Py),"getConfig"),QG=o(t=>{t&&(["secure",...Es.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(X.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&QG(t[e])}))},"sanitize"),ZG=o(t=>{b0(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),cd.push(t),r3(Es,cd)},"addDirective"),By=o((t=Es)=>{cd=[],r3(t,cd)},"reset"),w5e={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},XG={},k5e=o(t=>{XG[t]||(X.warn(w5e[t]),XG[t]=!0)},"issueWarning"),JG=o(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&k5e("LAZY_LOAD_DEPRECATED")},"checkConfig"),eV=o(()=>{let t={};t3&&(t=Rn(t,t3));for(let e of cd)t=Rn(t,e);return t},"getUserDefinedConfig")});function Ja(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:s3;tV&&tV(t,null);let n=e.length;for(;n--;){let i=e[n];if(typeof i=="string"){let a=r(i);a!==i&&(E5e(e)||(e[n]=a),i=a)}t[i]=!0}return t}function N5e(t){for(let e=0;e0&&arguments[0]!==void 0?arguments[0]:U5e(),e=o(Ct=>pV(Ct),"DOMPurify");if(e.version="3.2.6",e.removed=[],!t||!t.document||t.document.nodeType!==Vy.document||!t.Element)return e.isSupported=!1,e;let{document:r}=t,n=r,i=n.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:h,NamedNodeMap:f=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:d,DOMParser:p,trustedTypes:m}=t,g=u.prototype,y=Gy(g,"cloneNode"),v=Gy(g,"remove"),x=Gy(g,"nextSibling"),b=Gy(g,"childNodes"),T=Gy(g,"parentNode");if(typeof s=="function"){let Ct=r.createElement("template");Ct.content&&Ct.content.ownerDocument&&(r=Ct.content.ownerDocument)}let S,w="",{implementation:k,createNodeIterator:A,createDocumentFragment:C,getElementsByTagName:R}=r,{importNode:I}=n,L=cV();e.isSupported=typeof uV=="function"&&typeof T=="function"&&k&&k.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:E,ERB_EXPR:D,TMPLIT_EXPR:_,DATA_ATTR:O,ARIA_ATTR:M,IS_SCRIPT_OR_DATA:P,ATTR_WHITESPACE:B,CUSTOM_ELEMENT:F}=lV,{IS_ALLOWED_URI:G}=lV,$=null,U=Nr({},[...iV,...D7,...L7,...R7,...aV]),j=null,te=Nr({},[...sV,...N7,...oV,...a3]),Y=Object.seal(hV(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),oe=null,J=null,ue=!0,re=!0,ee=!1,Z=!0,K=!1,ae=!0,Q=!1,de=!1,ne=!1,Te=!1,q=!1,Ve=!1,pe=!0,Be=!1,Ye="user-content-",He=!0,Le=!1,Ie={},Ne=null,Ce=Nr({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Fe=null,fe=Nr({},["audio","video","img","source","image","track"]),xe=null,W=Nr({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),he="http://www.w3.org/1998/Math/MathML",z="http://www.w3.org/2000/svg",se="http://www.w3.org/1999/xhtml",le=se,ke=!1,ve=null,ye=Nr({},[he,z,se],_7),Re=Nr({},["mi","mo","mn","ms","mtext"]),_e=Nr({},["annotation-xml"]),ze=Nr({},["title","style","font","a","script"]),Ke=null,xt=["application/xhtml+xml","text/html"],We="text/html",Oe=null,et=null,Ue=r.createElement("form"),lt=o(function(Se){return Se instanceof RegExp||Se instanceof Function},"isRegexOrFunction"),Gt=o(function(){let Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(et&&et===Se)){if((!Se||typeof Se!="object")&&(Se={}),Se=lu(Se),Ke=xt.indexOf(Se.PARSER_MEDIA_TYPE)===-1?We:Se.PARSER_MEDIA_TYPE,Oe=Ke==="application/xhtml+xml"?_7:s3,$=hl(Se,"ALLOWED_TAGS")?Nr({},Se.ALLOWED_TAGS,Oe):U,j=hl(Se,"ALLOWED_ATTR")?Nr({},Se.ALLOWED_ATTR,Oe):te,ve=hl(Se,"ALLOWED_NAMESPACES")?Nr({},Se.ALLOWED_NAMESPACES,_7):ye,xe=hl(Se,"ADD_URI_SAFE_ATTR")?Nr(lu(W),Se.ADD_URI_SAFE_ATTR,Oe):W,Fe=hl(Se,"ADD_DATA_URI_TAGS")?Nr(lu(fe),Se.ADD_DATA_URI_TAGS,Oe):fe,Ne=hl(Se,"FORBID_CONTENTS")?Nr({},Se.FORBID_CONTENTS,Oe):Ce,oe=hl(Se,"FORBID_TAGS")?Nr({},Se.FORBID_TAGS,Oe):lu({}),J=hl(Se,"FORBID_ATTR")?Nr({},Se.FORBID_ATTR,Oe):lu({}),Ie=hl(Se,"USE_PROFILES")?Se.USE_PROFILES:!1,ue=Se.ALLOW_ARIA_ATTR!==!1,re=Se.ALLOW_DATA_ATTR!==!1,ee=Se.ALLOW_UNKNOWN_PROTOCOLS||!1,Z=Se.ALLOW_SELF_CLOSE_IN_ATTR!==!1,K=Se.SAFE_FOR_TEMPLATES||!1,ae=Se.SAFE_FOR_XML!==!1,Q=Se.WHOLE_DOCUMENT||!1,Te=Se.RETURN_DOM||!1,q=Se.RETURN_DOM_FRAGMENT||!1,Ve=Se.RETURN_TRUSTED_TYPE||!1,ne=Se.FORCE_BODY||!1,pe=Se.SANITIZE_DOM!==!1,Be=Se.SANITIZE_NAMED_PROPS||!1,He=Se.KEEP_CONTENT!==!1,Le=Se.IN_PLACE||!1,G=Se.ALLOWED_URI_REGEXP||fV,le=Se.NAMESPACE||se,Re=Se.MATHML_TEXT_INTEGRATION_POINTS||Re,_e=Se.HTML_INTEGRATION_POINTS||_e,Y=Se.CUSTOM_ELEMENT_HANDLING||{},Se.CUSTOM_ELEMENT_HANDLING&<(Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Y.tagNameCheck=Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Se.CUSTOM_ELEMENT_HANDLING&<(Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Y.attributeNameCheck=Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&typeof Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(Y.allowCustomizedBuiltInElements=Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),K&&(re=!1),q&&(Te=!0),Ie&&($=Nr({},aV),j=[],Ie.html===!0&&(Nr($,iV),Nr(j,sV)),Ie.svg===!0&&(Nr($,D7),Nr(j,N7),Nr(j,a3)),Ie.svgFilters===!0&&(Nr($,L7),Nr(j,N7),Nr(j,a3)),Ie.mathMl===!0&&(Nr($,R7),Nr(j,oV),Nr(j,a3))),Se.ADD_TAGS&&($===U&&($=lu($)),Nr($,Se.ADD_TAGS,Oe)),Se.ADD_ATTR&&(j===te&&(j=lu(j)),Nr(j,Se.ADD_ATTR,Oe)),Se.ADD_URI_SAFE_ATTR&&Nr(xe,Se.ADD_URI_SAFE_ATTR,Oe),Se.FORBID_CONTENTS&&(Ne===Ce&&(Ne=lu(Ne)),Nr(Ne,Se.FORBID_CONTENTS,Oe)),He&&($["#text"]=!0),Q&&Nr($,["html","head","body"]),$.table&&(Nr($,["tbody"]),delete oe.tbody),Se.TRUSTED_TYPES_POLICY){if(typeof Se.TRUSTED_TYPES_POLICY.createHTML!="function")throw zy('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Se.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw zy('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');S=Se.TRUSTED_TYPES_POLICY,w=S.createHTML("")}else S===void 0&&(S=H5e(m,i)),S!==null&&typeof w=="string"&&(w=S.createHTML(""));Za&&Za(Se),et=Se}},"_parseConfig"),vt=Nr({},[...D7,...L7,...M5e]),Lt=Nr({},[...R7,...I5e]),dt=o(function(Se){let at=T(Se);(!at||!at.tagName)&&(at={namespaceURI:le,tagName:"template"});let Nt=s3(Se.tagName),wr=s3(at.tagName);return ve[Se.namespaceURI]?Se.namespaceURI===z?at.namespaceURI===se?Nt==="svg":at.namespaceURI===he?Nt==="svg"&&(wr==="annotation-xml"||Re[wr]):!!vt[Nt]:Se.namespaceURI===he?at.namespaceURI===se?Nt==="math":at.namespaceURI===z?Nt==="math"&&_e[wr]:!!Lt[Nt]:Se.namespaceURI===se?at.namespaceURI===z&&!_e[wr]||at.namespaceURI===he&&!Re[wr]?!1:!Lt[Nt]&&(ze[Nt]||!vt[Nt]):!!(Ke==="application/xhtml+xml"&&ve[Se.namespaceURI]):!1},"_checkValidNamespace"),nt=o(function(Se){Fy(e.removed,{element:Se});try{T(Se).removeChild(Se)}catch{v(Se)}},"_forceRemove"),bt=o(function(Se,at){try{Fy(e.removed,{attribute:at.getAttributeNode(Se),from:at})}catch{Fy(e.removed,{attribute:null,from:at})}if(at.removeAttribute(Se),Se==="is")if(Te||q)try{nt(at)}catch{}else try{at.setAttribute(Se,"")}catch{}},"_removeAttribute"),wt=o(function(Se){let at=null,Nt=null;if(ne)Se=""+Se;else{let yn=nV(Se,/^[\r\n\t ]+/);Nt=yn&&yn[0]}Ke==="application/xhtml+xml"&&le===se&&(Se=''+Se+"");let wr=S?S.createHTML(Se):Se;if(le===se)try{at=new p().parseFromString(wr,Ke)}catch{}if(!at||!at.documentElement){at=k.createDocument(le,"template",null);try{at.documentElement.innerHTML=ke?w:wr}catch{}}let Tn=at.body||at.documentElement;return Se&&Nt&&Tn.insertBefore(r.createTextNode(Nt),Tn.childNodes[0]||null),le===se?R.call(at,Q?"html":"body")[0]:Q?at.documentElement:Tn},"_initDocument"),yt=o(function(Se){return A.call(Se.ownerDocument||Se,Se,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),ft=o(function(Se){return Se instanceof d&&(typeof Se.nodeName!="string"||typeof Se.textContent!="string"||typeof Se.removeChild!="function"||!(Se.attributes instanceof f)||typeof Se.removeAttribute!="function"||typeof Se.setAttribute!="function"||typeof Se.namespaceURI!="string"||typeof Se.insertBefore!="function"||typeof Se.hasChildNodes!="function")},"_isClobbered"),Ur=o(function(Se){return typeof l=="function"&&Se instanceof l},"_isNode");function _t(Ct,Se,at){i3(Ct,Nt=>{Nt.call(e,Se,at,et)})}o(_t,"_executeHooks");let bn=o(function(Se){let at=null;if(_t(L.beforeSanitizeElements,Se,null),ft(Se))return nt(Se),!0;let Nt=Oe(Se.nodeName);if(_t(L.uponSanitizeElement,Se,{tagName:Nt,allowedTags:$}),ae&&Se.hasChildNodes()&&!Ur(Se.firstElementChild)&&Qa(/<[/\w!]/g,Se.innerHTML)&&Qa(/<[/\w!]/g,Se.textContent)||Se.nodeType===Vy.progressingInstruction||ae&&Se.nodeType===Vy.comment&&Qa(/<[/\w]/g,Se.data))return nt(Se),!0;if(!$[Nt]||oe[Nt]){if(!oe[Nt]&&cr(Nt)&&(Y.tagNameCheck instanceof RegExp&&Qa(Y.tagNameCheck,Nt)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(Nt)))return!1;if(He&&!Ne[Nt]){let wr=T(Se)||Se.parentNode,Tn=b(Se)||Se.childNodes;if(Tn&&wr){let yn=Tn.length;for(let sn=yn-1;sn>=0;--sn){let Hi=y(Tn[sn],!0);Hi.__removalCount=(Se.__removalCount||0)+1,wr.insertBefore(Hi,x(Se))}}}return nt(Se),!0}return Se instanceof u&&!dt(Se)||(Nt==="noscript"||Nt==="noembed"||Nt==="noframes")&&Qa(/<\/no(script|embed|frames)/i,Se.innerHTML)?(nt(Se),!0):(K&&Se.nodeType===Vy.text&&(at=Se.textContent,i3([E,D,_],wr=>{at=$y(at,wr," ")}),Se.textContent!==at&&(Fy(e.removed,{element:Se.cloneNode()}),Se.textContent=at)),_t(L.afterSanitizeElements,Se,null),!1)},"_sanitizeElements"),Br=o(function(Se,at,Nt){if(pe&&(at==="id"||at==="name")&&(Nt in r||Nt in Ue))return!1;if(!(re&&!J[at]&&Qa(O,at))){if(!(ue&&Qa(M,at))){if(!j[at]||J[at]){if(!(cr(Se)&&(Y.tagNameCheck instanceof RegExp&&Qa(Y.tagNameCheck,Se)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(Se))&&(Y.attributeNameCheck instanceof RegExp&&Qa(Y.attributeNameCheck,at)||Y.attributeNameCheck instanceof Function&&Y.attributeNameCheck(at))||at==="is"&&Y.allowCustomizedBuiltInElements&&(Y.tagNameCheck instanceof RegExp&&Qa(Y.tagNameCheck,Nt)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(Nt))))return!1}else if(!xe[at]){if(!Qa(G,$y(Nt,B,""))){if(!((at==="src"||at==="xlink:href"||at==="href")&&Se!=="script"&&D5e(Nt,"data:")===0&&Fe[Se])){if(!(ee&&!Qa(P,$y(Nt,B,"")))){if(Nt)return!1}}}}}}return!0},"_isValidAttribute"),cr=o(function(Se){return Se!=="annotation-xml"&&nV(Se,F)},"_isBasicCustomElement"),ar=o(function(Se){_t(L.beforeSanitizeAttributes,Se,null);let{attributes:at}=Se;if(!at||ft(Se))return;let Nt={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:j,forceKeepAttr:void 0},wr=at.length;for(;wr--;){let Tn=at[wr],{name:yn,namespaceURI:sn,value:Hi}=Tn,Zs=Oe(yn),_a=Hi,fr=yn==="value"?_a:L5e(_a);if(Nt.attrName=Zs,Nt.attrValue=fr,Nt.keepAttr=!0,Nt.forceKeepAttr=void 0,_t(L.uponSanitizeAttribute,Se,Nt),fr=Nt.attrValue,Be&&(Zs==="id"||Zs==="name")&&(bt(yn,Se),fr=Ye+fr),ae&&Qa(/((--!?|])>)|<\/(style|title)/i,fr)){bt(yn,Se);continue}if(Nt.forceKeepAttr)continue;if(!Nt.keepAttr){bt(yn,Se);continue}if(!Z&&Qa(/\/>/i,fr)){bt(yn,Se);continue}K&&i3([E,D,_],kt=>{fr=$y(fr,kt," ")});let it=Oe(Se.nodeName);if(!Br(it,Zs,fr)){bt(yn,Se);continue}if(S&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!sn)switch(m.getAttributeType(it,Zs)){case"TrustedHTML":{fr=S.createHTML(fr);break}case"TrustedScriptURL":{fr=S.createScriptURL(fr);break}}if(fr!==_a)try{sn?Se.setAttributeNS(sn,yn,fr):Se.setAttribute(yn,fr),ft(Se)?nt(Se):rV(e.removed)}catch{bt(yn,Se)}}_t(L.afterSanitizeAttributes,Se,null)},"_sanitizeAttributes"),_r=o(function Ct(Se){let at=null,Nt=yt(Se);for(_t(L.beforeSanitizeShadowDOM,Se,null);at=Nt.nextNode();)_t(L.uponSanitizeShadowNode,at,null),bn(at),ar(at),at.content instanceof a&&Ct(at.content);_t(L.afterSanitizeShadowDOM,Se,null)},"_sanitizeShadowDOM");return e.sanitize=function(Ct){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},at=null,Nt=null,wr=null,Tn=null;if(ke=!Ct,ke&&(Ct=""),typeof Ct!="string"&&!Ur(Ct))if(typeof Ct.toString=="function"){if(Ct=Ct.toString(),typeof Ct!="string")throw zy("dirty is not a string, aborting")}else throw zy("toString is not a function");if(!e.isSupported)return Ct;if(de||Gt(Se),e.removed=[],typeof Ct=="string"&&(Le=!1),Le){if(Ct.nodeName){let Hi=Oe(Ct.nodeName);if(!$[Hi]||oe[Hi])throw zy("root node is forbidden and cannot be sanitized in-place")}}else if(Ct instanceof l)at=wt(""),Nt=at.ownerDocument.importNode(Ct,!0),Nt.nodeType===Vy.element&&Nt.nodeName==="BODY"||Nt.nodeName==="HTML"?at=Nt:at.appendChild(Nt);else{if(!Te&&!K&&!Q&&Ct.indexOf("<")===-1)return S&&Ve?S.createHTML(Ct):Ct;if(at=wt(Ct),!at)return Te?null:Ve?w:""}at&&ne&&nt(at.firstChild);let yn=yt(Le?Ct:at);for(;wr=yn.nextNode();)bn(wr),ar(wr),wr.content instanceof a&&_r(wr.content);if(Le)return Ct;if(Te){if(q)for(Tn=C.call(at.ownerDocument);at.firstChild;)Tn.appendChild(at.firstChild);else Tn=at;return(j.shadowroot||j.shadowrootmode)&&(Tn=I.call(n,Tn,!0)),Tn}let sn=Q?at.outerHTML:at.innerHTML;return Q&&$["!doctype"]&&at.ownerDocument&&at.ownerDocument.doctype&&at.ownerDocument.doctype.name&&Qa(dV,at.ownerDocument.doctype.name)&&(sn=" +`+sn),K&&i3([E,D,_],Hi=>{sn=$y(sn,Hi," ")}),S&&Ve?S.createHTML(sn):sn},e.setConfig=function(){let Ct=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Gt(Ct),de=!0},e.clearConfig=function(){et=null,de=!1},e.isValidAttribute=function(Ct,Se,at){et||Gt({});let Nt=Oe(Ct),wr=Oe(Se);return Br(Nt,wr,at)},e.addHook=function(Ct,Se){typeof Se=="function"&&Fy(L[Ct],Se)},e.removeHook=function(Ct,Se){if(Se!==void 0){let at=A5e(L[Ct],Se);return at===-1?void 0:_5e(L[Ct],at,1)[0]}return rV(L[Ct])},e.removeHooks=function(Ct){L[Ct]=[]},e.removeAllHooks=function(){L=cV()},e}var uV,tV,E5e,S5e,C5e,Za,Co,hV,M7,I7,i3,A5e,rV,Fy,_5e,s3,_7,nV,$y,D5e,L5e,hl,Qa,zy,iV,D7,L7,M5e,R7,I5e,aV,sV,N7,oV,a3,O5e,P5e,B5e,F5e,$5e,fV,z5e,G5e,dV,V5e,lV,Vy,U5e,H5e,cV,yh,O7=N(()=>{"use strict";({entries:uV,setPrototypeOf:tV,isFrozen:E5e,getPrototypeOf:S5e,getOwnPropertyDescriptor:C5e}=Object),{freeze:Za,seal:Co,create:hV}=Object,{apply:M7,construct:I7}=typeof Reflect<"u"&&Reflect;Za||(Za=o(function(e){return e},"freeze"));Co||(Co=o(function(e){return e},"seal"));M7||(M7=o(function(e,r,n){return e.apply(r,n)},"apply"));I7||(I7=o(function(e,r){return new e(...r)},"construct"));i3=Ja(Array.prototype.forEach),A5e=Ja(Array.prototype.lastIndexOf),rV=Ja(Array.prototype.pop),Fy=Ja(Array.prototype.push),_5e=Ja(Array.prototype.splice),s3=Ja(String.prototype.toLowerCase),_7=Ja(String.prototype.toString),nV=Ja(String.prototype.match),$y=Ja(String.prototype.replace),D5e=Ja(String.prototype.indexOf),L5e=Ja(String.prototype.trim),hl=Ja(Object.prototype.hasOwnProperty),Qa=Ja(RegExp.prototype.test),zy=R5e(TypeError);o(Ja,"unapply");o(R5e,"unconstruct");o(Nr,"addToSet");o(N5e,"cleanArray");o(lu,"clone");o(Gy,"lookupGetter");iV=Za(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),D7=Za(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),L7=Za(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),M5e=Za(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),R7=Za(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),I5e=Za(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),aV=Za(["#text"]),sV=Za(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),N7=Za(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),oV=Za(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),a3=Za(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),O5e=Co(/\{\{[\w\W]*|[\w\W]*\}\}/gm),P5e=Co(/<%[\w\W]*|[\w\W]*%>/gm),B5e=Co(/\$\{[\w\W]*/gm),F5e=Co(/^data-[\-\w.\u00B7-\uFFFF]+$/),$5e=Co(/^aria-[\-\w]+$/),fV=Co(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),z5e=Co(/^(?:\w+script|data):/i),G5e=Co(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),dV=Co(/^html$/i),V5e=Co(/^[a-z][.\w]*(-[.\w]+)+$/i),lV=Object.freeze({__proto__:null,ARIA_ATTR:$5e,ATTR_WHITESPACE:G5e,CUSTOM_ELEMENT:V5e,DATA_ATTR:F5e,DOCTYPE_NAME:dV,ERB_EXPR:P5e,IS_ALLOWED_URI:fV,IS_SCRIPT_OR_DATA:z5e,MUSTACHE_EXPR:O5e,TMPLIT_EXPR:B5e}),Vy={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},U5e=o(function(){return typeof window>"u"?null:window},"getGlobal"),H5e=o(function(e,r){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";r&&r.hasAttribute(i)&&(n=r.getAttribute(i));let a="dompurify"+(n?"#"+n:"");try{return e.createPolicy(a,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},"_createTrustedTypesPolicy"),cV=o(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");o(pV,"createDOMPurify");yh=pV()});var WU={};dr(WU,{ParseError:()=>gt,SETTINGS_SCHEMA:()=>Wy,__defineFunction:()=>Mt,__defineMacro:()=>ce,__defineSymbol:()=>V,__domTree:()=>qU,__parse:()=>GU,__renderToDomTree:()=>M3,__renderToHTMLTree:()=>UU,__setFontMetrics:()=>XV,default:()=>Owe,render:()=>EA,renderToString:()=>zU,version:()=>HU});function Q5e(t){return String(t).replace(K5e,e=>j5e[e])}function tTe(t){if(t.default)return t.default;var e=t.type,r=Array.isArray(e)?e[0]:e;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function lTe(t){for(var e=0;e=i[0]&&t<=i[1])return r.name}return null}function YV(t){for(var e=0;e=v3[e]&&t<=v3[e+1])return!0;return!1}function XV(t,e){Ql[t]=e}function lA(t,e,r){if(!Ql[e])throw new Error("Font metrics not found for font: "+e+".");var n=t.charCodeAt(0),i=Ql[e][n];if(!i&&t[0]in gV&&(n=gV[t[0]].charCodeAt(0),i=Ql[e][n]),!i&&r==="text"&&YV(n)&&(i=Ql[e][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}function xTe(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!P7[e]){var r=P7[e]={cssEmPerMu:o3.quad[e]/18};for(var n in o3)o3.hasOwnProperty(n)&&(r[n]=o3[n][e])}return P7[e]}function xV(t){if(t instanceof Cs)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}function ETe(t){if(t instanceof fd)return t;throw new Error("Expected span but got "+String(t)+".")}function V(t,e,r,n,i,a){Nn[t][i]={font:e,group:r,replace:n},a&&n&&(Nn[t][n]=Nn[t][i])}function Mt(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},u=0;u0&&(a.push(p3(s,e)),s=[]),a.push(n[l]));s.length>0&&a.push(p3(s,e));var h;r?(h=p3(Ii(r,e,!0)),h.classes=["tag"],a.push(h)):i&&a.push(i);var f=du(["katex-html"],a);if(f.setAttribute("aria-hidden","true"),h){var d=h.children[0];d.style.height=St(f.height+f.depth),f.depth&&(d.style.verticalAlign=St(-f.depth))}return f}function sU(t){return new hd(t)}function $7(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof _o&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var r=t.children[0];return r instanceof _o&&r.text===","}else return!1}function EV(t,e,r,n,i){var a=As(t,r),s;a.length===1&&a[0]instanceof es&&er.contains(["mrow","mtable"],a[0].type)?s=a[0]:s=new mt.MathNode("mrow",a);var l=new mt.MathNode("annotation",[new mt.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var u=new mt.MathNode("semantics",[s,l]),h=new mt.MathNode("math",[u]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&h.setAttribute("display","block");var f=i?"katex":"katex-mathml";return $e.makeSpan([f],[h])}function Tr(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function fA(t){var e=D3(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function D3(t){return t&&(t.type==="atom"||CTe.hasOwnProperty(t.type))?t:null}function uU(t,e){var r=Ii(t.body,e,!0);return rwe([t.mclass],r,e)}function hU(t,e){var r,n=As(t.body,e);return t.mclass==="minner"?r=new mt.MathNode("mpadded",n):t.mclass==="mord"?t.isCharacterBox?(r=n[0],r.type="mi"):r=new mt.MathNode("mi",n):(t.isCharacterBox?(r=n[0],r.type="mo"):r=new mt.MathNode("mo",n),t.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):t.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):t.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}function awe(t,e,r){var n=nwe[t];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[e[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},s=r.callFunction("\\Big",[a],[]),l=r.callFunction("\\\\cdright",[e[1]],[]),u={type:"ordgroup",mode:"math",body:[i,s,l]};return r.callFunction("\\\\cdparent",[u],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function swe(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var r=t.fetch().text;if(r==="&"||r==="\\\\")t.consume();else if(r==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new gt("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var n=[],i=[n],a=0;a-1))if("<>AV".indexOf(h)>-1)for(var d=0;d<2;d++){for(var p=!0,m=u+1;mAV=|." after @',s[u]);var g=awe(h,f,t),y={type:"styling",body:[g],mode:"math",style:"display"};n.push(y),l=SV()}a%2===0?n.push(l):n.shift(),n=[],i.push(n)}t.gullet.endGroup(),t.gullet.endGroup();var v=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:v,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}function R3(t,e){var r=D3(t);if(r&&er.contains(xwe,r.text))return r;throw r?new gt("Invalid delimiter '"+r.text+"' after '"+e.funcName+"'",t):new gt("Invalid delimiter type '"+t.type+"'",t)}function _V(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function Jl(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},u=0;u1||!f)&&y.pop(),x.length{"use strict";to=class t{static{o(this,"SourceLocation")}constructor(e,r,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=r,this.end=n}static range(e,r){return r?!e||!e.loc||!r.loc||e.loc.lexer!==r.loc.lexer?null:new t(e.loc.lexer,e.loc.start,r.loc.end):e&&e.loc}},Do=class t{static{o(this,"Token")}constructor(e,r){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=r}range(e,r){return new t(r,to.range(this,e))}},gt=class t{static{o(this,"ParseError")}constructor(e,r){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var n="KaTeX parse error: "+e,i,a,s=r&&r.loc;if(s&&s.start<=s.end){var l=s.lexer.input;i=s.start,a=s.end,i===l.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var u=l.slice(i,a).replace(/[^]/g,"$&\u0332"),h;i>15?h="\u2026"+l.slice(i-15,i):h=l.slice(0,i);var f;a+15":">","<":"<",'"':""","'":"'"},K5e=/[&><"']/g;o(Q5e,"escape");WV=o(function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},"getBaseElem"),Z5e=o(function(e){var r=WV(e);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},"isCharacterBox"),J5e=o(function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},"assert"),eTe=o(function(e){var r=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return r?r[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1])?null:r[1].toLowerCase():"_relative"},"protocolFromUrl"),er={contains:q5e,deflt:W5e,escape:Q5e,hyphenate:X5e,getBaseElem:WV,isCharacterBox:Z5e,protocolFromUrl:eTe},Wy={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:o(t=>"#"+t,"cliProcessor")},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:o((t,e)=>(e.push(t),e),"cliProcessor")},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:o(t=>Math.max(0,t),"processor"),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:o(t=>Math.max(0,t),"processor"),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:o(t=>Math.max(0,t),"processor"),cli:"-e, --max-expand ",cliProcessor:o(t=>t==="Infinity"?1/0:parseInt(t),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};o(tTe,"getDefaultValue");Xy=class{static{o(this,"Settings")}constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var r in Wy)if(Wy.hasOwnProperty(r)){var n=Wy[r];this[r]=e[r]!==void 0?n.processor?n.processor(e[r]):e[r]:tTe(n)}}reportNonstrict(e,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(e,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new gt("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+e+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]"))}}useStrictBehavior(e,r,n){var i=this.strict;if(typeof i=="function")try{i=i(e,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var r=er.protocolFromUrl(e.url);if(r==null)return!1;e.protocol=r}var n=typeof this.trust=="function"?this.trust(e):this.trust;return!!n}},jl=class{static{o(this,"Style")}constructor(e,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=r,this.cramped=n}sup(){return Kl[rTe[this.id]]}sub(){return Kl[nTe[this.id]]}fracNum(){return Kl[iTe[this.id]]}fracDen(){return Kl[aTe[this.id]]}cramp(){return Kl[sTe[this.id]]}text(){return Kl[oTe[this.id]]}isTight(){return this.size>=2}},oA=0,x3=1,k0=2,hu=3,jy=4,Ao=5,E0=6,ts=7,Kl=[new jl(oA,0,!1),new jl(x3,0,!0),new jl(k0,1,!1),new jl(hu,1,!0),new jl(jy,2,!1),new jl(Ao,2,!0),new jl(E0,3,!1),new jl(ts,3,!0)],rTe=[jy,Ao,jy,Ao,E0,ts,E0,ts],nTe=[Ao,Ao,Ao,Ao,ts,ts,ts,ts],iTe=[k0,hu,jy,Ao,E0,ts,E0,ts],aTe=[hu,hu,Ao,Ao,ts,ts,ts,ts],sTe=[x3,x3,hu,hu,Ao,Ao,ts,ts],oTe=[oA,x3,k0,hu,k0,hu,k0,hu],nr={DISPLAY:Kl[oA],TEXT:Kl[k0],SCRIPT:Kl[jy],SCRIPTSCRIPT:Kl[E0]},j7=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];o(lTe,"scriptFromCodepoint");v3=[];j7.forEach(t=>t.blocks.forEach(e=>v3.push(...e)));o(YV,"supportedCodepoint");w0=80,cTe=o(function(e,r){return"M95,"+(622+e+r)+` c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 @@ -21,7 +10,7 @@ c5.3,-9.3,12,-14,20,-14 H400000v`+(40+e)+`H845.2724 s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtMain"),vbe=o(function(e,r){return"M263,"+(601+e+r)+`c0.7,0,18,39.7,52,119 +M`+(834+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtMain"),uTe=o(function(e,r){return"M263,"+(601+e+r)+`c0.7,0,18,39.7,52,119 c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 c340,-704.7,510.7,-1060.3,512,-1067 l`+e/2.084+" -"+e+` @@ -31,7 +20,7 @@ s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5, c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize1"),xbe=o(function(e,r){return"M983 "+(10+e+r)+` +M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize1"),hTe=o(function(e,r){return"M983 "+(10+e+r)+` l`+e/3.13+" -"+e+` c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 @@ -40,7 +29,7 @@ c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize2"),bbe=o(function(e,r){return"M424,"+(2398+e+r)+` +M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize2"),fTe=o(function(e,r){return"M424,"+(2398+e+r)+` c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 @@ -50,18 +39,18 @@ v`+(40+e)+`H1014.6 s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+r+` -h400000v`+(40+e)+"h-400000z"},"sqrtSize3"),wbe=o(function(e,r){return"M473,"+(2713+e+r)+` +h400000v`+(40+e)+"h-400000z"},"sqrtSize3"),dTe=o(function(e,r){return"M473,"+(2713+e+r)+` c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+e)+" "+r+"h400000v"+(40+e)+"H1017.7z"},"sqrtSize4"),Tbe=o(function(e){var r=e/2;return"M400000 "+e+" H0 L"+r+" 0 l65 45 L145 "+(e-80)+" H400000z"},"phasePath"),kbe=o(function(e,r,n){var i=n-54-r-e;return"M702 "+(e+r)+"H400000"+(40+e)+` +606zM`+(1001+e)+" "+r+"h400000v"+(40+e)+"H1017.7z"},"sqrtSize4"),pTe=o(function(e){var r=e/2;return"M400000 "+e+" H0 L"+r+" 0 l65 45 L145 "+(e-80)+" H400000z"},"phasePath"),mTe=o(function(e,r,n){var i=n-54-r-e;return"M702 "+(e+r)+"H400000"+(40+e)+` H742v`+i+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+r+"H400000v"+(40+e)+"H742z"},"sqrtTall"),Ebe=o(function(e,r,n){r=1e3*r;var i="";switch(e){case"sqrtMain":i=ybe(r,h0);break;case"sqrtSize1":i=vbe(r,h0);break;case"sqrtSize2":i=xbe(r,h0);break;case"sqrtSize3":i=bbe(r,h0);break;case"sqrtSize4":i=wbe(r,h0);break;case"sqrtTall":i=kbe(r,h0,n)}return i},"sqrtPath"),Sbe=o(function(e,r){switch(e){case"\u239C":return"M291 0 H417 V"+r+" H291z M291 0 H417 V"+r+" H291z";case"\u2223":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z";case"\u2225":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z"+("M367 0 H410 V"+r+" H367z M367 0 H410 V"+r+" H367z");case"\u239F":return"M457 0 H583 V"+r+" H457z M457 0 H583 V"+r+" H457z";case"\u23A2":return"M319 0 H403 V"+r+" H319z M319 0 H403 V"+r+" H319z";case"\u23A5":return"M263 0 H347 V"+r+" H263z M263 0 H347 V"+r+" H263z";case"\u23AA":return"M384 0 H504 V"+r+" H384z M384 0 H504 V"+r+" H384z";case"\u23D0":return"M312 0 H355 V"+r+" H312z M312 0 H355 V"+r+" H312z";case"\u2016":return"M257 0 H300 V"+r+" H257z M257 0 H300 V"+r+" H257z"+("M478 0 H521 V"+r+" H478z M478 0 H521 V"+r+" H478z");default:return""}},"innerPath"),oz={doubleleftarrow:`M262 157 +219 661 l218 661zM702 `+r+"H400000v"+(40+e)+"H742z"},"sqrtTall"),gTe=o(function(e,r,n){r=1e3*r;var i="";switch(e){case"sqrtMain":i=cTe(r,w0);break;case"sqrtSize1":i=uTe(r,w0);break;case"sqrtSize2":i=hTe(r,w0);break;case"sqrtSize3":i=fTe(r,w0);break;case"sqrtSize4":i=dTe(r,w0);break;case"sqrtTall":i=mTe(r,w0,n)}return i},"sqrtPath"),yTe=o(function(e,r){switch(e){case"\u239C":return"M291 0 H417 V"+r+" H291z M291 0 H417 V"+r+" H291z";case"\u2223":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z";case"\u2225":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z"+("M367 0 H410 V"+r+" H367z M367 0 H410 V"+r+" H367z");case"\u239F":return"M457 0 H583 V"+r+" H457z M457 0 H583 V"+r+" H457z";case"\u23A2":return"M319 0 H403 V"+r+" H319z M319 0 H403 V"+r+" H319z";case"\u23A5":return"M263 0 H347 V"+r+" H263z M263 0 H347 V"+r+" H263z";case"\u23AA":return"M384 0 H504 V"+r+" H384z M384 0 H504 V"+r+" H384z";case"\u23D0":return"M312 0 H355 V"+r+" H312z M312 0 H355 V"+r+" H312z";case"\u2016":return"M257 0 H300 V"+r+" H257z M257 0 H300 V"+r+" H257z"+("M478 0 H521 V"+r+" H478z M478 0 H521 V"+r+" H478z");default:return""}},"innerPath"),mV={doubleleftarrow:`M262 157 l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 @@ -236,7 +225,7 @@ M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z` c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, -231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Cbe=o(function(e,r){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},vTe=o(function(e,r){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 H403z M403 1759 V0 H319 V1759 v`+r+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 @@ -264,13 +253,24 @@ c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6 c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},"tallDelim"),ed=class{static{o(this,"DocumentFragment")}constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return Jt.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),r=0;rr.toText(),"toText");return this.children.map(e).join("")}},jl={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Z4={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},lz={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};o(Abe,"setFontMetrics");o(P7,"getCharacterMetrics");h7={};o(_be,"getGlobalMetrics");Dbe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],cz=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],uz=o(function(e,r){return r.size<2?e:Dbe[e-1][r.size-1]},"sizeAtStyle"),f3=class t{static{o(this,"Options")}constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=cz[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);return new t(r)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:uz(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:cz[e-1]})}havingBaseStyle(e){e=e||this.style.text();var r=uz(t.BASESIZE,e);return this.size===r&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=_be(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};f3.BASESIZE=6;E7={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},Lbe={ex:!0,em:!0,mu:!0},zz=o(function(e){return typeof e!="string"&&(e=e.unit),e in E7||e in Lbe||e==="ex"},"validUnit"),ti=o(function(e,r){var n;if(e.unit in E7)n=E7[e.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(e.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,e.unit==="ex")n=i.fontMetrics().xHeight;else if(e.unit==="em")n=i.fontMetrics().quad;else throw new gt("Invalid unit: '"+e.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(e.number*n,r.maxSize)},"calculateSize"),kt=o(function(e){return+e.toFixed(4)+"em"},"makeEm"),fh=o(function(e){return e.filter(r=>r).join(" ")},"createClass"),Gz=o(function(e,r,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},"initNode"),Vz=o(function(e){var r=document.createElement(e);r.className=fh(this.classes);for(var n in this.style)this.style.hasOwnProperty(n)&&(r.style[n]=this.style[n]);for(var i in this.attributes)this.attributes.hasOwnProperty(i)&&r.setAttribute(i,this.attributes[i]);for(var a=0;a",r},"toMarkup"),td=class{static{o(this,"Span")}constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,Gz.call(this,e,n,i),this.children=r||[]}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return Jt.contains(this.classes,e)}toNode(){return Vz.call(this,"span")}toMarkup(){return Uz.call(this,"span")}},Vy=class{static{o(this,"Anchor")}constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Gz.call(this,r,i),this.children=n||[],this.setAttribute("href",e)}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return Jt.contains(this.classes,e)}toNode(){return Vz.call(this,"a")}toMarkup(){return Uz.call(this,"a")}},S7=class{static{o(this,"Img")}constructor(e,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=e,this.classes=["mord"],this.style=n}hasClass(e){return Jt.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var r in this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);return e}toMarkup(){var e=''+Jt.escape(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=kt(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=fh(this.classes));for(var n in this.style)this.style.hasOwnProperty(n)&&(r=r||document.createElement("span"),r.style[n]=this.style[n]);return r?(r.appendChild(e),r):e}toMarkup(){var e=!1,r="0&&(n+="margin-right:"+this.italic+"em;");for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=Jt.hyphenate(i)+":"+this.style[i]+";");n&&(e=!0,r+=' style="'+Jt.escape(n)+'"');var a=Jt.escape(this.text);return e?(r+=">",r+=a,r+="",r):a}},ll=class{static{o(this,"SvgNode")}constructor(e,r){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=r||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"svg");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}},Uy=class{static{o(this,"LineNode")}constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"line");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var e="","\\gt",!0);G(U,ee,Ee,"\u2208","\\in",!0);G(U,ee,Ee,"\uE020","\\@not");G(U,ee,Ee,"\u2282","\\subset",!0);G(U,ee,Ee,"\u2283","\\supset",!0);G(U,ee,Ee,"\u2286","\\subseteq",!0);G(U,ee,Ee,"\u2287","\\supseteq",!0);G(U,ke,Ee,"\u2288","\\nsubseteq",!0);G(U,ke,Ee,"\u2289","\\nsupseteq",!0);G(U,ee,Ee,"\u22A8","\\models");G(U,ee,Ee,"\u2190","\\leftarrow",!0);G(U,ee,Ee,"\u2264","\\le");G(U,ee,Ee,"\u2264","\\leq",!0);G(U,ee,Ee,"<","\\lt",!0);G(U,ee,Ee,"\u2192","\\rightarrow",!0);G(U,ee,Ee,"\u2192","\\to");G(U,ke,Ee,"\u2271","\\ngeq",!0);G(U,ke,Ee,"\u2270","\\nleq",!0);G(U,ee,uu,"\xA0","\\ ");G(U,ee,uu,"\xA0","\\space");G(U,ee,uu,"\xA0","\\nobreakspace");G(it,ee,uu,"\xA0","\\ ");G(it,ee,uu,"\xA0"," ");G(it,ee,uu,"\xA0","\\space");G(it,ee,uu,"\xA0","\\nobreakspace");G(U,ee,uu,null,"\\nobreak");G(U,ee,uu,null,"\\allowbreak");G(U,ee,x3,",",",");G(U,ee,x3,";",";");G(U,ke,It,"\u22BC","\\barwedge",!0);G(U,ke,It,"\u22BB","\\veebar",!0);G(U,ee,It,"\u2299","\\odot",!0);G(U,ee,It,"\u2295","\\oplus",!0);G(U,ee,It,"\u2297","\\otimes",!0);G(U,ee,Le,"\u2202","\\partial",!0);G(U,ee,It,"\u2298","\\oslash",!0);G(U,ke,It,"\u229A","\\circledcirc",!0);G(U,ke,It,"\u22A1","\\boxdot",!0);G(U,ee,It,"\u25B3","\\bigtriangleup");G(U,ee,It,"\u25BD","\\bigtriangledown");G(U,ee,It,"\u2020","\\dagger");G(U,ee,It,"\u22C4","\\diamond");G(U,ee,It,"\u22C6","\\star");G(U,ee,It,"\u25C3","\\triangleleft");G(U,ee,It,"\u25B9","\\triangleright");G(U,ee,js,"{","\\{");G(it,ee,Le,"{","\\{");G(it,ee,Le,"{","\\textbraceleft");G(U,ee,Za,"}","\\}");G(it,ee,Le,"}","\\}");G(it,ee,Le,"}","\\textbraceright");G(U,ee,js,"{","\\lbrace");G(U,ee,Za,"}","\\rbrace");G(U,ee,js,"[","\\lbrack",!0);G(it,ee,Le,"[","\\lbrack",!0);G(U,ee,Za,"]","\\rbrack",!0);G(it,ee,Le,"]","\\rbrack",!0);G(U,ee,js,"(","\\lparen",!0);G(U,ee,Za,")","\\rparen",!0);G(it,ee,Le,"<","\\textless",!0);G(it,ee,Le,">","\\textgreater",!0);G(U,ee,js,"\u230A","\\lfloor",!0);G(U,ee,Za,"\u230B","\\rfloor",!0);G(U,ee,js,"\u2308","\\lceil",!0);G(U,ee,Za,"\u2309","\\rceil",!0);G(U,ee,Le,"\\","\\backslash");G(U,ee,Le,"\u2223","|");G(U,ee,Le,"\u2223","\\vert");G(it,ee,Le,"|","\\textbar",!0);G(U,ee,Le,"\u2225","\\|");G(U,ee,Le,"\u2225","\\Vert");G(it,ee,Le,"\u2225","\\textbardbl");G(it,ee,Le,"~","\\textasciitilde");G(it,ee,Le,"\\","\\textbackslash");G(it,ee,Le,"^","\\textasciicircum");G(U,ee,Ee,"\u2191","\\uparrow",!0);G(U,ee,Ee,"\u21D1","\\Uparrow",!0);G(U,ee,Ee,"\u2193","\\downarrow",!0);G(U,ee,Ee,"\u21D3","\\Downarrow",!0);G(U,ee,Ee,"\u2195","\\updownarrow",!0);G(U,ee,Ee,"\u21D5","\\Updownarrow",!0);G(U,ee,ki,"\u2210","\\coprod");G(U,ee,ki,"\u22C1","\\bigvee");G(U,ee,ki,"\u22C0","\\bigwedge");G(U,ee,ki,"\u2A04","\\biguplus");G(U,ee,ki,"\u22C2","\\bigcap");G(U,ee,ki,"\u22C3","\\bigcup");G(U,ee,ki,"\u222B","\\int");G(U,ee,ki,"\u222B","\\intop");G(U,ee,ki,"\u222C","\\iint");G(U,ee,ki,"\u222D","\\iiint");G(U,ee,ki,"\u220F","\\prod");G(U,ee,ki,"\u2211","\\sum");G(U,ee,ki,"\u2A02","\\bigotimes");G(U,ee,ki,"\u2A01","\\bigoplus");G(U,ee,ki,"\u2A00","\\bigodot");G(U,ee,ki,"\u222E","\\oint");G(U,ee,ki,"\u222F","\\oiint");G(U,ee,ki,"\u2230","\\oiiint");G(U,ee,ki,"\u2A06","\\bigsqcup");G(U,ee,ki,"\u222B","\\smallint");G(it,ee,p0,"\u2026","\\textellipsis");G(U,ee,p0,"\u2026","\\mathellipsis");G(it,ee,p0,"\u2026","\\ldots",!0);G(U,ee,p0,"\u2026","\\ldots",!0);G(U,ee,p0,"\u22EF","\\@cdots",!0);G(U,ee,p0,"\u22F1","\\ddots",!0);G(U,ee,Le,"\u22EE","\\varvdots");G(U,ee,Vn,"\u02CA","\\acute");G(U,ee,Vn,"\u02CB","\\grave");G(U,ee,Vn,"\xA8","\\ddot");G(U,ee,Vn,"~","\\tilde");G(U,ee,Vn,"\u02C9","\\bar");G(U,ee,Vn,"\u02D8","\\breve");G(U,ee,Vn,"\u02C7","\\check");G(U,ee,Vn,"^","\\hat");G(U,ee,Vn,"\u20D7","\\vec");G(U,ee,Vn,"\u02D9","\\dot");G(U,ee,Vn,"\u02DA","\\mathring");G(U,ee,er,"\uE131","\\@imath");G(U,ee,er,"\uE237","\\@jmath");G(U,ee,Le,"\u0131","\u0131");G(U,ee,Le,"\u0237","\u0237");G(it,ee,Le,"\u0131","\\i",!0);G(it,ee,Le,"\u0237","\\j",!0);G(it,ee,Le,"\xDF","\\ss",!0);G(it,ee,Le,"\xE6","\\ae",!0);G(it,ee,Le,"\u0153","\\oe",!0);G(it,ee,Le,"\xF8","\\o",!0);G(it,ee,Le,"\xC6","\\AE",!0);G(it,ee,Le,"\u0152","\\OE",!0);G(it,ee,Le,"\xD8","\\O",!0);G(it,ee,Vn,"\u02CA","\\'");G(it,ee,Vn,"\u02CB","\\`");G(it,ee,Vn,"\u02C6","\\^");G(it,ee,Vn,"\u02DC","\\~");G(it,ee,Vn,"\u02C9","\\=");G(it,ee,Vn,"\u02D8","\\u");G(it,ee,Vn,"\u02D9","\\.");G(it,ee,Vn,"\xB8","\\c");G(it,ee,Vn,"\u02DA","\\r");G(it,ee,Vn,"\u02C7","\\v");G(it,ee,Vn,"\xA8",'\\"');G(it,ee,Vn,"\u02DD","\\H");G(it,ee,Vn,"\u25EF","\\textcircled");Hz={"--":!0,"---":!0,"``":!0,"''":!0};G(it,ee,Le,"\u2013","--",!0);G(it,ee,Le,"\u2013","\\textendash");G(it,ee,Le,"\u2014","---",!0);G(it,ee,Le,"\u2014","\\textemdash");G(it,ee,Le,"\u2018","`",!0);G(it,ee,Le,"\u2018","\\textquoteleft");G(it,ee,Le,"\u2019","'",!0);G(it,ee,Le,"\u2019","\\textquoteright");G(it,ee,Le,"\u201C","``",!0);G(it,ee,Le,"\u201C","\\textquotedblleft");G(it,ee,Le,"\u201D","''",!0);G(it,ee,Le,"\u201D","\\textquotedblright");G(U,ee,Le,"\xB0","\\degree",!0);G(it,ee,Le,"\xB0","\\degree");G(it,ee,Le,"\xB0","\\textdegree",!0);G(U,ee,Le,"\xA3","\\pounds");G(U,ee,Le,"\xA3","\\mathsterling",!0);G(it,ee,Le,"\xA3","\\pounds");G(it,ee,Le,"\xA3","\\textsterling",!0);G(U,ke,Le,"\u2720","\\maltese");G(it,ke,Le,"\u2720","\\maltese");fz='0123456789/@."';for(J4=0;J40)return ol(a,h,i,r,s.concat(f));if(u){var d,p;if(u==="boldsymbol"){var m=Bbe(a,i,r,s,n);d=m.fontName,p=[m.fontClass]}else l?(d=Yz[u].fontName,p=[u]):(d=i3(u,r.fontWeight,r.fontShape),p=[u,r.fontWeight,r.fontShape]);if(b3(a,d,i).metrics)return ol(a,d,i,r,s.concat(p));if(Hz.hasOwnProperty(a)&&d.slice(0,10)==="Typewriter"){for(var g=[],y=0;y{if(fh(t.classes)!==fh(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var r=t.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n in t.style)if(t.style.hasOwnProperty(n)&&t.style[n]!==e.style[n])return!1;for(var i in e.style)if(e.style.hasOwnProperty(i)&&t.style[i]!==e.style[i])return!1;return!0},"canCombine"),zbe=o(t=>{for(var e=0;er&&(r=s.height),s.depth>n&&(n=s.depth),s.maxFontSize>i&&(i=s.maxFontSize)}e.height=r,e.depth=n,e.maxFontSize=i},"sizeElementFromChildren"),bs=o(function(e,r,n,i){var a=new td(e,r,n,i);return B7(a),a},"makeSpan"),Wz=o((t,e,r,n)=>new td(t,e,r,n),"makeSvgSpan"),Gbe=o(function(e,r,n){var i=bs([e],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=kt(i.height),i.maxFontSize=1,i},"makeLineSpan"),Vbe=o(function(e,r,n,i){var a=new Vy(e,r,n,i);return B7(a),a},"makeAnchor"),qz=o(function(e){var r=new ed(e);return B7(r),r},"makeFragment"),Ube=o(function(e,r){return e instanceof ed?bs([],[e],r):e},"wrapFragment"),Hbe=o(function(e){if(e.positionType==="individualShift"){for(var r=e.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,s=1;s{var r=bs(["mspace"],[],e),n=ti(t,e);return r.style.marginRight=kt(n),r},"makeGlue"),i3=o(function(e,r,n){var i="";switch(e){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=e}var a;return r==="textbf"&&n==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",i+"-"+a},"retrieveTextFontName"),Yz={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Xz={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Ybe=o(function(e,r){var[n,i,a]=Xz[e],s=new Kl(n),l=new ll([s],{width:kt(i),height:kt(a),style:"width:"+kt(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),u=Wz(["overlay"],[l],r);return u.height=a,u.style.height=kt(a),u.style.width=kt(i),u},"staticSvg"),Be={fontMap:Yz,makeSymbol:ol,mathsym:Pbe,makeSpan:bs,makeSvgSpan:Wz,makeLineSpan:Gbe,makeAnchor:Vbe,makeFragment:qz,wrapFragment:Ube,makeVList:Wbe,makeOrd:Fbe,makeGlue:qbe,staticSvg:Ybe,svgData:Xz,tryCombineChars:zbe},ei={number:3,unit:"mu"},Zf={number:4,unit:"mu"},au={number:5,unit:"mu"},Xbe={mord:{mop:ei,mbin:Zf,mrel:au,minner:ei},mop:{mord:ei,mop:ei,mrel:au,minner:ei},mbin:{mord:Zf,mop:Zf,mopen:Zf,minner:Zf},mrel:{mord:au,mop:au,mopen:au,minner:au},mopen:{},mclose:{mop:ei,mbin:Zf,mrel:au,minner:ei},mpunct:{mord:ei,mop:ei,mrel:au,mopen:ei,mclose:ei,mpunct:ei,minner:ei},minner:{mord:ei,mop:ei,mbin:Zf,mrel:au,mopen:ei,mpunct:ei,minner:ei}},jbe={mord:{mop:ei},mop:{mord:ei,mop:ei},mbin:{},mrel:{},mopen:{},mclose:{mop:ei},mpunct:{},minner:{mop:ei}},jz={},p3={},m3={};o(Nt,"defineFunction");o(rd,"defineFunctionBuilders");g3=o(function(e){return e.type==="ordgroup"&&e.body.length===1?e.body[0]:e},"normalizeArgument"),di=o(function(e){return e.type==="ordgroup"?e.body:[e]},"ordargument"),lu=Be.makeSpan,Kbe=["leftmost","mbin","mopen","mrel","mop","mpunct"],Qbe=["rightmost","mrel","mclose","mpunct"],Zbe={display:tr.DISPLAY,text:tr.TEXT,script:tr.SCRIPT,scriptscript:tr.SCRIPTSCRIPT},Jbe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},Pi=o(function(e,r,n,i){i===void 0&&(i=[null,null]);for(var a=[],s=0;s{var v=y.classes[0],x=g.classes[0];v==="mbin"&&Jt.contains(Qbe,x)?y.classes[0]="mord":x==="mbin"&&Jt.contains(Kbe,v)&&(g.classes[0]="mord")},{node:d},p,m),mz(a,(g,y)=>{var v=A7(y),x=A7(g),b=v&&x?g.hasClass("mtight")?jbe[v][x]:Xbe[v][x]:null;if(b)return Be.makeGlue(b,h)},{node:d},p,m),a},"buildExpression"),mz=o(function t(e,r,n,i,a){i&&e.push(i);for(var s=0;sp=>{e.splice(d+1,0,p),s++})(s)}i&&e.pop()},"traverseNonSpaceNodes"),Kz=o(function(e){return e instanceof ed||e instanceof Vy||e instanceof td&&e.hasClass("enclosing")?e:null},"checkPartialGroup"),e4e=o(function t(e,r){var n=Kz(e);if(n){var i=n.children;if(i.length){if(r==="right")return t(i[i.length-1],"right");if(r==="left")return t(i[0],"left")}}return e},"getOutermostNode"),A7=o(function(e,r){return e?(r&&(e=e4e(e,r)),Jbe[e.classes[0]]||null):null},"getTypeOfDomTree"),Hy=o(function(e,r){var n=["nulldelimiter"].concat(e.baseSizingClasses());return lu(r.concat(n))},"makeNullDelimiter"),Fr=o(function(e,r,n){if(!e)return lu();if(p3[e.type]){var i=p3[e.type](e,r);if(n&&r.size!==n.size){i=lu(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(a3,"buildHTMLUnbreakable");o(_7,"buildHTML");o(Qz,"newDocumentFragment");ws=class{static{o(this,"MathNode")}constructor(e,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(e,r){this.attributes[e]=r}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&e.setAttribute(r,this.attributes[r]);this.classes.length>0&&(e.className=fh(this.classes));for(var n=0;n0&&(e+=' class ="'+Jt.escape(fh(this.classes))+'"'),e+=">";for(var n=0;n",e}toText(){return this.children.map(e=>e.toText()).join("")}},Jf=class{static{o(this,"TextNode")}constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return Jt.escape(this.toText())}toText(){return this.text}},D7=class{static{o(this,"SpaceNode")}constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character="\u200A":e>=.1666&&e<=.1667?this.character="\u2009":e>=.2222&&e<=.2223?this.character="\u2005":e>=.2777&&e<=.2778?this.character="\u2005\u200A":e>=-.05556&&e<=-.05555?this.character="\u200A\u2063":e>=-.1667&&e<=-.1666?this.character="\u2009\u2063":e>=-.2223&&e<=-.2222?this.character="\u205F\u2063":e>=-.2778&&e<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",kt(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},dt={MathNode:ws,TextNode:Jf,SpaceNode:D7,newDocumentFragment:Qz},Co=o(function(e,r,n){return An[r][e]&&An[r][e].replace&&e.charCodeAt(0)!==55349&&!(Hz.hasOwnProperty(e)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(e=An[r][e].replace),new dt.TextNode(e)},"makeText"),F7=o(function(e){return e.length===1?e[0]:new dt.MathNode("mrow",e)},"makeRow"),$7=o(function(e,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=e.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var a=e.text;if(Jt.contains(["\\imath","\\jmath"],a))return null;An[i][a]&&An[i][a].replace&&(a=An[i][a].replace);var s=Be.fontMap[n].fontName;return P7(a,s,i)?Be.fontMap[n].variant:null},"getVariant"),ks=o(function(e,r,n){if(e.length===1){var i=yn(e[0],r);return n&&i instanceof ws&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],s,l=0;l0&&(d.text=d.text.slice(0,1)+"\u0338"+d.text.slice(1),a.pop())}}}a.push(u),s=u}return a},"buildExpression"),dh=o(function(e,r,n){return F7(ks(e,r,n))},"buildExpressionRow"),yn=o(function(e,r){if(!e)return new dt.MathNode("mrow");if(m3[e.type]){var n=m3[e.type](e,r);return n}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(gz,"buildMathML");Zz=o(function(e){return new f3({style:e.displayMode?tr.DISPLAY:tr.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},"optionsFromSettings"),Jz=o(function(e,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),e=Be.makeSpan(n,[e])}return e},"displayWrap"),t4e=o(function(e,r,n){var i=Zz(n),a;if(n.output==="mathml")return gz(e,r,i,n.displayMode,!0);if(n.output==="html"){var s=_7(e,i);a=Be.makeSpan(["katex"],[s])}else{var l=gz(e,r,i,n.displayMode,!1),u=_7(e,i);a=Be.makeSpan(["katex"],[l,u])}return Jz(a,n)},"buildTree"),r4e=o(function(e,r,n){var i=Zz(n),a=_7(e,i),s=Be.makeSpan(["katex"],[a]);return Jz(s,n)},"buildHTMLTree"),n4e={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},i4e=o(function(e){var r=new dt.MathNode("mo",[new dt.TextNode(n4e[e.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},"mathMLnode"),a4e={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},s4e=o(function(e){return e.type==="ordgroup"?e.body.length:1},"groupLength"),o4e=o(function(e,r){function n(){var l=4e5,u=e.label.slice(1);if(Jt.contains(["widehat","widecheck","widetilde","utilde"],u)){var h=e,f=s4e(h.base),d,p,m;if(f>5)u==="widehat"||u==="widecheck"?(d=420,l=2364,m=.42,p=u+"4"):(d=312,l=2340,m=.34,p="tilde4");else{var g=[1,1,2,2,3,3][f];u==="widehat"||u==="widecheck"?(l=[0,1062,2364,2364,2364][g],d=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p=u+g):(l=[0,600,1033,2339,2340][g],d=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var y=new Kl(p),v=new ll([y],{width:"100%",height:kt(m),viewBox:"0 0 "+l+" "+d,preserveAspectRatio:"none"});return{span:Be.makeSvgSpan([],[v],r),minWidth:0,height:m}}else{var x=[],b=a4e[u],[w,C,T]=b,E=T/1e3,A=w.length,S,_;if(A===1){var I=b[3];S=["hide-tail"],_=[I]}else if(A===2)S=["halfarrow-left","halfarrow-right"],_=["xMinYMin","xMaxYMin"];else if(A===3)S=["brace-left","brace-center","brace-right"],_=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+A+" children.");for(var D=0;D0&&(i.style.minWidth=kt(a)),i},"svgSpan"),l4e=o(function(e,r,n,i,a){var s,l=e.height+e.depth+n+i;if(/fbox|color|angl/.test(r)){if(s=Be.makeSpan(["stretchy",r],[],a),r==="fbox"){var u=a.color&&a.getColor();u&&(s.style.borderColor=u)}}else{var h=[];/^[bx]cancel$/.test(r)&&h.push(new Uy({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&h.push(new Uy({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var f=new ll(h,{width:"100%",height:kt(l)});s=Be.makeSvgSpan([],[f],a)}return s.height=l,s.style.height=kt(l),s},"encloseSpan"),cu={encloseSpan:l4e,mathMLnode:i4e,svgSpan:o4e};o(xr,"assertNodeType");o(z7,"assertSymbolNodeType");o(w3,"checkSymbolNodeType");G7=o((t,e)=>{var r,n,i;t&&t.type==="supsub"?(n=xr(t.base,"accent"),r=n.base,t.base=r,i=Nbe(Fr(t,e)),t.base=n):(n=xr(t,"accent"),r=n.base);var a=Fr(r,e.havingCrampedStyle()),s=n.isShifty&&Jt.isCharacterBox(r),l=0;if(s){var u=Jt.getBaseElem(r),h=Fr(u,e.havingCrampedStyle());l=hz(h).skew}var f=n.label==="\\c",d=f?a.height+a.depth:Math.min(a.height,e.fontMetrics().xHeight),p;if(n.isStretchy)p=cu.svgSpan(n,e),p=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+kt(2*l)+")",marginLeft:kt(2*l)}:void 0}]},e);else{var m,g;n.label==="\\vec"?(m=Be.staticSvg("vec",e),g=Be.svgData.vec[1]):(m=Be.makeOrd({mode:n.mode,text:n.label},e,"textord"),m=hz(m),m.italic=0,g=m.width,f&&(d+=m.depth)),p=Be.makeSpan(["accent-body"],[m]);var y=n.label==="\\textcircled";y&&(p.classes.push("accent-full"),d=a.height);var v=l;y||(v-=g/2),p.style.left=kt(v),n.label==="\\textcircled"&&(p.style.top=".2em"),p=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-d},{type:"elem",elem:p}]},e)}var x=Be.makeSpan(["mord","accent"],[p],e);return i?(i.children[0]=x,i.height=Math.max(x.height,i.height),i.classes[0]="mord",i):x},"htmlBuilder$a"),eG=o((t,e)=>{var r=t.isStretchy?cu.mathMLnode(t.label):new dt.MathNode("mo",[Co(t.label,t.mode)]),n=new dt.MathNode("mover",[yn(t.base,e),r]);return n.setAttribute("accent","true"),n},"mathmlBuilder$9"),c4e=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));Nt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:o((t,e)=>{var r=g3(e[0]),n=!c4e.test(t.funcName),i=!n||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:n,isShifty:i,base:r}},"handler"),htmlBuilder:G7,mathmlBuilder:eG});Nt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:o((t,e)=>{var r=e[0],n=t.parser.mode;return n==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},"handler"),htmlBuilder:G7,mathmlBuilder:eG});Nt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},"handler"),htmlBuilder:o((t,e)=>{var r=Fr(t.base,e),n=cu.svgSpan(t,e),i=t.label==="\\utilde"?.12:0,a=Be.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]},e);return Be.makeSpan(["mord","accentunder"],[a],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=cu.mathMLnode(t.label),n=new dt.MathNode("munder",[yn(t.base,e),r]);return n.setAttribute("accentunder","true"),n},"mathmlBuilder")});s3=o(t=>{var e=new dt.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e},"paddedNode");Nt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n,funcName:i}=t;return{type:"xArrow",mode:n.mode,label:i,body:e[0],below:r[0]}},htmlBuilder(t,e){var r=e.style,n=e.havingStyle(r.sup()),i=Be.wrapFragment(Fr(t.body,n,e),e),a=t.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var s;t.below&&(n=e.havingStyle(r.sub()),s=Be.wrapFragment(Fr(t.below,n,e),e),s.classes.push(a+"-arrow-pad"));var l=cu.svgSpan(t,e),u=-e.fontMetrics().axisHeight+.5*l.height,h=-e.fontMetrics().axisHeight-.5*l.height-.111;(i.depth>.25||t.label==="\\xleftequilibrium")&&(h-=i.depth);var f;if(s){var d=-e.fontMetrics().axisHeight+s.height+.5*l.height+.111;f=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u},{type:"elem",elem:s,shift:d}]},e)}else f=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u}]},e);return f.children[0].children[0].children[1].classes.push("svg-align"),Be.makeSpan(["mrel","x-arrow"],[f],e)},mathmlBuilder(t,e){var r=cu.mathMLnode(t.label);r.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(t.body){var i=s3(yn(t.body,e));if(t.below){var a=s3(yn(t.below,e));n=new dt.MathNode("munderover",[r,a,i])}else n=new dt.MathNode("mover",[r,i])}else if(t.below){var s=s3(yn(t.below,e));n=new dt.MathNode("munder",[r,s])}else n=s3(),n=new dt.MathNode("mover",[r,n]);return n}});u4e=Be.makeSpan;o(tG,"htmlBuilder$9");o(rG,"mathmlBuilder$8");Nt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:di(i),isCharacterBox:Jt.isCharacterBox(i)}},htmlBuilder:tG,mathmlBuilder:rG});T3=o(t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"},"binrelClass");Nt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:r}=t;return{type:"mclass",mode:r.mode,mclass:T3(e[0]),body:di(e[1]),isCharacterBox:Jt.isCharacterBox(e[1])}}});Nt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:r,funcName:n}=t,i=e[1],a=e[0],s;n!=="\\stackrel"?s=T3(i):s="mrel";var l={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:di(i)},u={type:"supsub",mode:a.mode,base:l,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[u],isCharacterBox:Jt.isCharacterBox(u)}},htmlBuilder:tG,mathmlBuilder:rG});Nt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"pmb",mode:r.mode,mclass:T3(e[0]),body:di(e[0])}},htmlBuilder(t,e){var r=Pi(t.body,e,!0),n=Be.makeSpan([t.mclass],r,e);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(t,e){var r=ks(t.body,e),n=new dt.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});h4e={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},yz=o(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),vz=o(t=>t.type==="textord"&&t.text==="@","isStartOfArrow"),f4e=o((t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e,"isLabelEnd");o(d4e,"cdArrow");o(p4e,"parseCD");Nt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:e[0]}},htmlBuilder(t,e){var r=e.havingStyle(e.style.sup()),n=Be.wrapFragment(Fr(t.label,r,e),e);return n.classes.push("cd-label-"+t.side),n.style.bottom=kt(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(t,e){var r=new dt.MathNode("mrow",[yn(t.label,e)]);return r=new dt.MathNode("mpadded",[r]),r.setAttribute("width","0"),t.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new dt.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Nt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:r}=t;return{type:"cdlabelparent",mode:r.mode,fragment:e[0]}},htmlBuilder(t,e){var r=Be.wrapFragment(Fr(t.fragment,e),e);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(t,e){return new dt.MathNode("mrow",[yn(t.fragment,e)])}});Nt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:r}=t,n=xr(e[0],"ordgroup"),i=n.body,a="",s=0;s=1114111)throw new gt("\\@char with invalid code point "+a);return u<=65535?h=String.fromCharCode(u):(u-=65536,h=String.fromCharCode((u>>10)+55296,(u&1023)+56320)),{type:"textord",mode:r.mode,text:h}}});nG=o((t,e)=>{var r=Pi(t.body,e.withColor(t.color),!1);return Be.makeFragment(r)},"htmlBuilder$8"),iG=o((t,e)=>{var r=ks(t.body,e.withColor(t.color)),n=new dt.MathNode("mstyle",r);return n.setAttribute("mathcolor",t.color),n},"mathmlBuilder$7");Nt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:r}=t,n=xr(e[0],"color-token").color,i=e[1];return{type:"color",mode:r.mode,color:n,body:di(i)}},htmlBuilder:nG,mathmlBuilder:iG});Nt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:r,breakOnTokenText:n}=t,i=xr(e[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:nG,mathmlBuilder:iG});Nt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,r){var{parser:n}=t,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&xr(i,"size").value}},htmlBuilder(t,e){var r=Be.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=kt(ti(t.size,e)))),r},mathmlBuilder(t,e){var r=new dt.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",kt(ti(t.size,e)))),r}});L7={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},aG=o(t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new gt("Expected a control sequence",t);return e},"checkControlSequence"),m4e=o(t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},"getRHS"),sG=o((t,e,r,n)=>{var i=t.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!t.gullet.isExpandable(r.text)}),t.gullet.macros.set(e,i,n)},"letCommand");Nt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:r}=t;e.consumeSpaces();var n=e.fetch();if(L7[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=L7[n.text]),xr(e.parseFunction(),"internal");throw new gt("Invalid token after macro prefix",n)}});Nt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=e.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new gt("Expected a control sequence",n);for(var a=0,s,l=[[]];e.gullet.future().text!=="{";)if(n=e.gullet.popToken(),n.text==="#"){if(e.gullet.future().text==="{"){s=e.gullet.future(),l[a].push("{");break}if(n=e.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new gt('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new gt('Argument number "'+n.text+'" out of order');a++,l.push([])}else{if(n.text==="EOF")throw new gt("Expected a macro definition");l[a].push(n.text)}var{tokens:u}=e.gullet.consumeArg();return s&&u.unshift(s),(r==="\\edef"||r==="\\xdef")&&(u=e.gullet.expandTokens(u),u.reverse()),e.gullet.macros.set(i,{tokens:u,numArgs:a,delimiters:l},r===L7[r]),{type:"internal",mode:e.mode}}});Nt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=aG(e.gullet.popToken());e.gullet.consumeSpaces();var i=m4e(e);return sG(e,n,i,r==="\\\\globallet"),{type:"internal",mode:e.mode}}});Nt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=aG(e.gullet.popToken()),i=e.gullet.popToken(),a=e.gullet.popToken();return sG(e,n,a,r==="\\\\globalfuture"),e.gullet.pushToken(a),e.gullet.pushToken(i),{type:"internal",mode:e.mode}}});Fy=o(function(e,r,n){var i=An.math[e]&&An.math[e].replace,a=P7(i||e,r,n);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+r+".");return a},"getMetrics"),V7=o(function(e,r,n,i){var a=n.havingBaseStyle(r),s=Be.makeSpan(i.concat(a.sizingClasses(n)),[e],n),l=a.sizeMultiplier/n.sizeMultiplier;return s.height*=l,s.depth*=l,s.maxFontSize=a.sizeMultiplier,s},"styleWrap"),oG=o(function(e,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=kt(a),e.height-=a,e.depth+=a},"centerSpan"),g4e=o(function(e,r,n,i,a,s){var l=Be.makeSymbol(e,"Main-Regular",a,i),u=V7(l,r,i,s);return n&&oG(u,i,r),u},"makeSmallDelim"),y4e=o(function(e,r,n,i){return Be.makeSymbol(e,"Size"+r+"-Regular",n,i)},"mathrmSize"),lG=o(function(e,r,n,i,a,s){var l=y4e(e,r,a,i),u=V7(Be.makeSpan(["delimsizing","size"+r],[l],i),tr.TEXT,i,s);return n&&oG(u,i,tr.TEXT),u},"makeLargeDelim"),p7=o(function(e,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=Be.makeSpan(["delimsizinginner",i],[Be.makeSpan([],[Be.makeSymbol(e,r,n)])]);return{type:"elem",elem:a}},"makeGlyphSpan"),m7=o(function(e,r,n){var i=jl["Size4-Regular"][e.charCodeAt(0)]?jl["Size4-Regular"][e.charCodeAt(0)][4]:jl["Size1-Regular"][e.charCodeAt(0)][4],a=new Kl("inner",Sbe(e,Math.round(1e3*r))),s=new ll([a],{width:kt(i),height:kt(r),style:"width:"+kt(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),l=Be.makeSvgSpan([],[s],n);return l.height=r,l.style.height=kt(r),l.style.width=kt(i),{type:"elem",elem:l}},"makeInner"),R7=.008,o3={type:"kern",size:-1*R7},v4e=["|","\\lvert","\\rvert","\\vert"],x4e=["\\|","\\lVert","\\rVert","\\Vert"],cG=o(function(e,r,n,i,a,s){var l,u,h,f,d="",p=0;l=h=f=e,u=null;var m="Size1-Regular";e==="\\uparrow"?h=f="\u23D0":e==="\\Uparrow"?h=f="\u2016":e==="\\downarrow"?l=h="\u23D0":e==="\\Downarrow"?l=h="\u2016":e==="\\updownarrow"?(l="\\uparrow",h="\u23D0",f="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",h="\u2016",f="\\Downarrow"):Jt.contains(v4e,e)?(h="\u2223",d="vert",p=333):Jt.contains(x4e,e)?(h="\u2225",d="doublevert",p=556):e==="["||e==="\\lbrack"?(l="\u23A1",h="\u23A2",f="\u23A3",m="Size4-Regular",d="lbrack",p=667):e==="]"||e==="\\rbrack"?(l="\u23A4",h="\u23A5",f="\u23A6",m="Size4-Regular",d="rbrack",p=667):e==="\\lfloor"||e==="\u230A"?(h=l="\u23A2",f="\u23A3",m="Size4-Regular",d="lfloor",p=667):e==="\\lceil"||e==="\u2308"?(l="\u23A1",h=f="\u23A2",m="Size4-Regular",d="lceil",p=667):e==="\\rfloor"||e==="\u230B"?(h=l="\u23A5",f="\u23A6",m="Size4-Regular",d="rfloor",p=667):e==="\\rceil"||e==="\u2309"?(l="\u23A4",h=f="\u23A5",m="Size4-Regular",d="rceil",p=667):e==="("||e==="\\lparen"?(l="\u239B",h="\u239C",f="\u239D",m="Size4-Regular",d="lparen",p=875):e===")"||e==="\\rparen"?(l="\u239E",h="\u239F",f="\u23A0",m="Size4-Regular",d="rparen",p=875):e==="\\{"||e==="\\lbrace"?(l="\u23A7",u="\u23A8",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="\u23AB",u="\u23AC",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(l="\u23A7",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(l="\u23AB",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(l="\u23A7",f="\u23AD",h="\u23AA",m="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(l="\u23AB",f="\u23A9",h="\u23AA",m="Size4-Regular");var g=Fy(l,m,a),y=g.height+g.depth,v=Fy(h,m,a),x=v.height+v.depth,b=Fy(f,m,a),w=b.height+b.depth,C=0,T=1;if(u!==null){var E=Fy(u,m,a);C=E.height+E.depth,T=2}var A=y+w+C,S=Math.max(0,Math.ceil((r-A)/(T*x))),_=A+S*T*x,I=i.fontMetrics().axisHeight;n&&(I*=i.sizeMultiplier);var D=_/2-I,k=[];if(d.length>0){var L=_-y-w,R=Math.round(_*1e3),O=Cbe(d,Math.round(L*1e3)),M=new Kl(d,O),B=(p/1e3).toFixed(3)+"em",F=(R/1e3).toFixed(3)+"em",P=new ll([M],{width:B,height:F,viewBox:"0 0 "+p+" "+R}),z=Be.makeSvgSpan([],[P],i);z.height=R/1e3,z.style.width=B,z.style.height=F,k.push({type:"elem",elem:z})}else{if(k.push(p7(f,m,a)),k.push(o3),u===null){var $=_-y-w+2*R7;k.push(m7(h,$,i))}else{var H=(_-y-w-C)/2+2*R7;k.push(m7(h,H,i)),k.push(o3),k.push(p7(u,m,a)),k.push(o3),k.push(m7(h,H,i))}k.push(o3),k.push(p7(l,m,a))}var Q=i.havingBaseStyle(tr.TEXT),j=Be.makeVList({positionType:"bottom",positionData:D,children:k},Q);return V7(Be.makeSpan(["delimsizing","mult"],[j],Q),tr.TEXT,i,s)},"makeStackedDelim"),g7=80,y7=.08,v7=o(function(e,r,n,i,a){var s=Ebe(e,i,n),l=new Kl(e,s),u=new ll([l],{width:"400em",height:kt(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Be.makeSvgSpan(["hide-tail"],[u],a)},"sqrtSvg"),b4e=o(function(e,r){var n=r.havingBaseSizing(),i=dG("\\surd",e*n.sizeMultiplier,fG,n),a=n.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),l,u=0,h=0,f=0,d;return i.type==="small"?(f=1e3+1e3*s+g7,e<1?a=1:e<1.4&&(a=.7),u=(1+s+y7)/a,h=(1+s)/a,l=v7("sqrtMain",u,f,s,r),l.style.minWidth="0.853em",d=.833/a):i.type==="large"?(f=(1e3+g7)*$y[i.size],h=($y[i.size]+s)/a,u=($y[i.size]+s+y7)/a,l=v7("sqrtSize"+i.size,u,f,s,r),l.style.minWidth="1.02em",d=1/a):(u=e+s+y7,h=e+s,f=Math.floor(1e3*e+s)+g7,l=v7("sqrtTall",u,f,s,r),l.style.minWidth="0.742em",d=1.056),l.height=h,l.style.height=kt(u),{span:l,advanceWidth:d,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},"makeSqrtImage"),uG=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"],w4e=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"],hG=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],$y=[0,1.2,1.8,2.4,3],T4e=o(function(e,r,n,i,a){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),Jt.contains(uG,e)||Jt.contains(hG,e))return lG(e,r,!1,n,i,a);if(Jt.contains(w4e,e))return cG(e,$y[r],!1,n,i,a);throw new gt("Illegal delimiter: '"+e+"'")},"makeSizedDelim"),k4e=[{type:"small",style:tr.SCRIPTSCRIPT},{type:"small",style:tr.SCRIPT},{type:"small",style:tr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],E4e=[{type:"small",style:tr.SCRIPTSCRIPT},{type:"small",style:tr.SCRIPT},{type:"small",style:tr.TEXT},{type:"stack"}],fG=[{type:"small",style:tr.SCRIPTSCRIPT},{type:"small",style:tr.SCRIPT},{type:"small",style:tr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],S4e=o(function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},"delimTypeToFont"),dG=o(function(e,r,n,i){for(var a=Math.min(2,3-i.style.size),s=a;sr)return n[s]}return n[n.length-1]},"traverseSequence"),pG=o(function(e,r,n,i,a,s){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var l;Jt.contains(hG,e)?l=k4e:Jt.contains(uG,e)?l=fG:l=E4e;var u=dG(e,r,l,i);return u.type==="small"?g4e(e,u.style,n,i,a,s):u.type==="large"?lG(e,u.size,n,i,a,s):cG(e,r,n,i,a,s)},"makeCustomSizedDelim"),C4e=o(function(e,r,n,i,a,s){var l=i.fontMetrics().axisHeight*i.sizeMultiplier,u=901,h=5/i.fontMetrics().ptPerEm,f=Math.max(r-l,n+l),d=Math.max(f/500*u,2*f-h);return pG(e,d,!0,i,a,s)},"makeLeftRightDelim"),ou={sqrtImage:b4e,sizedDelim:T4e,sizeToMaxHeight:$y,customSizedDelim:pG,leftRightDelim:C4e},xz={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},A4e=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];o(k3,"checkDelimiter");Nt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:o((t,e)=>{var r=k3(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:xz[t.funcName].size,mclass:xz[t.funcName].mclass,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>t.delim==="."?Be.makeSpan([t.mclass]):ou.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),"htmlBuilder"),mathmlBuilder:o(t=>{var e=[];t.delim!=="."&&e.push(Co(t.delim,t.mode));var r=new dt.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=kt(ou.sizeToMaxHeight[t.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r},"mathmlBuilder")});o(bz,"assertParsed");Nt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=t.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new gt("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:k3(e[0],t).text,color:r}},"handler")});Nt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=k3(e[0],t),n=t.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=xr(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},"handler"),htmlBuilder:o((t,e)=>{bz(t);for(var r=Pi(t.body,e,!0,["mopen","mclose"]),n=0,i=0,a=!1,s=0;s{bz(t);var r=ks(t.body,e);if(t.left!=="."){var n=new dt.MathNode("mo",[Co(t.left,t.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(t.right!=="."){var i=new dt.MathNode("mo",[Co(t.right,t.mode)]);i.setAttribute("fence","true"),t.rightColor&&i.setAttribute("mathcolor",t.rightColor),r.push(i)}return F7(r)},"mathmlBuilder")});Nt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=k3(e[0],t);if(!t.parser.leftrightDepth)throw new gt("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>{var r;if(t.delim===".")r=Hy(e,[]);else{r=ou.sizedDelim(t.delim,1,e,t.mode,[]);var n={delim:t.delim,options:e};r.isMiddle=n}return r},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=t.delim==="\\vert"||t.delim==="|"?Co("|","text"):Co(t.delim,t.mode),n=new dt.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n},"mathmlBuilder")});U7=o((t,e)=>{var r=Be.wrapFragment(Fr(t.body,e),e),n=t.label.slice(1),i=e.sizeMultiplier,a,s=0,l=Jt.isCharacterBox(t.body);if(n==="sout")a=Be.makeSpan(["stretchy","sout"]),a.height=e.fontMetrics().defaultRuleThickness/i,s=-.5*e.fontMetrics().xHeight;else if(n==="phase"){var u=ti({number:.6,unit:"pt"},e),h=ti({number:.35,unit:"ex"},e),f=e.havingBaseSizing();i=i/f.sizeMultiplier;var d=r.height+r.depth+u+h;r.style.paddingLeft=kt(d/2+u);var p=Math.floor(1e3*d*i),m=Tbe(p),g=new ll([new Kl("phase",m)],{width:"400em",height:kt(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});a=Be.makeSvgSpan(["hide-tail"],[g],e),a.style.height=kt(d),s=r.depth+u+h}else{/cancel/.test(n)?l||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var y=0,v=0,x=0;/box/.test(n)?(x=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),y=e.fontMetrics().fboxsep+(n==="colorbox"?0:x),v=y):n==="angl"?(x=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),y=4*x,v=Math.max(0,.25-r.depth)):(y=l?.2:0,v=y),a=cu.encloseSpan(r,n,y,v,e),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=kt(x)):n==="angl"&&x!==.049&&(a.style.borderTopWidth=kt(x),a.style.borderRightWidth=kt(x)),s=r.depth+v,t.backgroundColor&&(a.style.backgroundColor=t.backgroundColor,t.borderColor&&(a.style.borderColor=t.borderColor))}var b;if(t.backgroundColor)b=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]},e);else{var w=/cancel|phase/.test(n)?["svg-align"]:[];b=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:w}]},e)}return/cancel/.test(n)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(n)&&!l?Be.makeSpan(["mord","cancel-lap"],[b],e):Be.makeSpan(["mord"],[b],e)},"htmlBuilder$7"),H7=o((t,e)=>{var r=0,n=new dt.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[yn(t.body,e)]);switch(t.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),t.label==="\\fcolorbox"){var i=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);n.setAttribute("style","border: "+i+"em solid "+String(t.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&n.setAttribute("mathbackground",t.backgroundColor),n},"mathmlBuilder$6");Nt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=xr(e[0],"color-token").color,s=e[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:s}},htmlBuilder:U7,mathmlBuilder:H7});Nt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=xr(e[0],"color-token").color,s=xr(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,borderColor:a,body:l}},htmlBuilder:U7,mathmlBuilder:H7});Nt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\fbox",body:e[0]}}});Nt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:U7,mathmlBuilder:H7});Nt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\angl",body:e[0]}}});mG={};o(Ql,"defineEnvironment");gG={};o(fe,"defineMacro");o(wz,"getHLines");E3=o(t=>{var e=t.parser.settings;if(!e.displayMode)throw new gt("{"+t.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext");o(W7,"getAutoTag");o(ph,"parseArray");o(q7,"dCellStyle");Zl=o(function(e,r){var n,i,a=e.body.length,s=e.hLinesBeforeRow,l=0,u=new Array(a),h=[],f=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),d=1/r.fontMetrics().ptPerEm,p=5*d;if(e.colSeparationType&&e.colSeparationType==="small"){var m=r.havingStyle(tr.SCRIPT).sizeMultiplier;p=.2778*(m/r.sizeMultiplier)}var g=e.colSeparationType==="CD"?ti({number:3,unit:"ex"},r):12*d,y=3*d,v=e.arraystretch*g,x=.7*v,b=.3*v,w=0;function C(ae){for(var Oe=0;Oe0&&(w+=.25),h.push({pos:w,isDashed:ae[Oe]})}for(o(C,"setHLinePos"),C(s[0]),n=0;n0&&(D+=b,Aae))for(n=0;n=l)){var le=void 0;(i>0||e.hskipBeforeAndAfter)&&(le=Jt.deflt(H.pregap,p),le!==0&&(O=Be.makeSpan(["arraycolsep"],[]),O.style.width=kt(le),R.push(O)));var he=[];for(n=0;n0){for(var J=Be.makeLineSpan("hline",r,f),se=Be.makeLineSpan("hdashline",r,f),ue=[{type:"elem",elem:u,shift:0}];h.length>0;){var Z=h.pop(),Se=Z.pos-k;Z.isDashed?ue.push({type:"elem",elem:se,shift:Se}):ue.push({type:"elem",elem:J,shift:Se})}u=Be.makeVList({positionType:"individualShift",children:ue},r)}if(B.length===0)return Be.makeSpan(["mord"],[u],r);var ce=Be.makeVList({positionType:"individualShift",children:B},r);return ce=Be.makeSpan(["tag"],[ce],r),Be.makeFragment([u,ce])},"htmlBuilder"),_4e={c:"center ",l:"left ",r:"right "},Jl=o(function(e,r){for(var n=[],i=new dt.MathNode("mtd",[],["mtr-glue"]),a=new dt.MathNode("mtd",[],["mml-eqn-num"]),s=0;s0){var g=e.cols,y="",v=!1,x=0,b=g.length;g[0].type==="separator"&&(p+="top ",x=1),g[g.length-1].type==="separator"&&(p+="bottom ",b-=1);for(var w=x;w0?"left ":"",p+=S[S.length-1].length>0?"right ":"";for(var _=1;_-1?"alignat":"align",a=e.envName==="split",s=ph(e.parser,{cols:n,addJot:!0,autoTag:a?void 0:W7(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:a?2:void 0,leqno:e.parser.settings.leqno},"display"),l,u=0,h={type:"ordgroup",mode:e.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var f="",d=0;d0&&m&&(v=1),n[g]={type:"align",align:y,pregap:v,postgap:0}}return s.colSeparationType=m?"align":"alignat",s},"alignedHandler");Ql({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var r=w3(e[0]),n=r?[e[0]]:xr(e[0],"ordgroup").body,i=n.map(function(s){var l=z7(s),u=l.text;if("lcr".indexOf(u)!==-1)return{type:"align",align:u};if(u==="|")return{type:"separator",separator:"|"};if(u===":")return{type:"separator",separator:":"};throw new gt("Unknown column alignment: "+u,s)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return ph(t.parser,a,q7(t.envName))},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(t.envName.charAt(t.envName.length-1)==="*"){var i=t.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,"lcr".indexOf(r)===-1)throw new gt("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=ph(t.parser,n,q7(t.envName)),s=Math.max(0,...a.body.map(l=>l.length));return a.cols=new Array(s).fill({type:"align",align:r}),e?{type:"leftright",mode:t.mode,body:[a],left:e[0],right:e[1],rightColor:void 0}:a},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},r=ph(t.parser,e,"script");return r.colSeparationType="small",r},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var r=w3(e[0]),n=r?[e[0]]:xr(e[0],"ordgroup").body,i=n.map(function(s){var l=z7(s),u=l.text;if("lc".indexOf(u)!==-1)return{type:"align",align:u};throw new gt("Unknown column alignment: "+u,s)});if(i.length>1)throw new gt("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5};if(a=ph(t.parser,a,"script"),a.body.length>0&&a.body[0].length>1)throw new gt("{subarray} can contain only one column");return a},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=ph(t.parser,e,q7(t.envName));return{type:"leftright",mode:t.mode,body:[r],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:yG,htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){Jt.contains(["gather","gather*"],t.envName)&&E3(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:W7(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return ph(t.parser,e,"display")},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:yG,htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){E3(t);var e={autoTag:W7(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return ph(t.parser,e,"display")},htmlBuilder:Zl,mathmlBuilder:Jl});Ql({type:"array",names:["CD"],props:{numArgs:0},handler(t){return E3(t),p4e(t.parser)},htmlBuilder:Zl,mathmlBuilder:Jl});fe("\\nonumber","\\gdef\\@eqnsw{0}");fe("\\notag","\\nonumber");Nt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new gt(t.funcName+" valid only within array environment")}});Tz=mG;Nt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];if(i.type!=="ordgroup")throw new gt("Invalid environment name",i);for(var a="",s=0;s{var r=t.font,n=e.withFont(r);return Fr(t.body,n)},"htmlBuilder$5"),xG=o((t,e)=>{var r=t.font,n=e.withFont(r);return yn(t.body,n)},"mathmlBuilder$4"),kz={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Nt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=g3(e[0]),a=n;return a in kz&&(a=kz[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},"handler"),htmlBuilder:vG,mathmlBuilder:xG});Nt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r}=t,n=e[0],i=Jt.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:T3(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:i}},"handler")});Nt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n,breakOnTokenText:i}=t,{mode:a}=r,s=r.parseExpression(!0,i),l="math"+n.slice(1);return{type:"font",mode:a,font:l,body:{type:"ordgroup",mode:r.mode,body:s}}},"handler"),htmlBuilder:vG,mathmlBuilder:xG});bG=o((t,e)=>{var r=e;return t==="display"?r=r.id>=tr.SCRIPT.id?r.text():tr.DISPLAY:t==="text"&&r.size===tr.DISPLAY.size?r=tr.TEXT:t==="script"?r=tr.SCRIPT:t==="scriptscript"&&(r=tr.SCRIPTSCRIPT),r},"adjustStyle"),Y7=o((t,e)=>{var r=bG(t.size,e.style),n=r.fracNum(),i=r.fracDen(),a;a=e.havingStyle(n);var s=Fr(t.numer,a,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,u=3.5/e.fontMetrics().ptPerEm;s.height=s.height0?g=3*p:g=7*p,y=e.fontMetrics().denom1):(d>0?(m=e.fontMetrics().num2,g=p):(m=e.fontMetrics().num3,g=3*p),y=e.fontMetrics().denom2);var v;if(f){var b=e.fontMetrics().axisHeight;m-s.depth-(b+.5*d){var r=new dt.MathNode("mfrac",[yn(t.numer,e),yn(t.denom,e)]);if(!t.hasBarLine)r.setAttribute("linethickness","0px");else if(t.barSize){var n=ti(t.barSize,e);r.setAttribute("linethickness",kt(n))}var i=bG(t.size,e.style);if(i.size!==e.style.size){r=new dt.MathNode("mstyle",[r]);var a=i.size===tr.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",a),r.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var s=[];if(t.leftDelim!=null){var l=new dt.MathNode("mo",[new dt.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),s.push(l)}if(s.push(r),t.rightDelim!=null){var u=new dt.MathNode("mo",[new dt.TextNode(t.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),s.push(u)}return F7(s)}return r},"mathmlBuilder$3");Nt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1],s,l=null,u=null,h="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,l="(",u=")";break;case"\\\\bracefrac":s=!1,l="\\{",u="\\}";break;case"\\\\brackfrac":s=!1,l="[",u="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:i,denom:a,hasBarLine:s,leftDelim:l,rightDelim:u,size:h,barSize:null}},"handler"),htmlBuilder:Y7,mathmlBuilder:X7});Nt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:i,denom:a,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}},"handler")});Nt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:r,token:n}=t,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:i,token:n}}});Ez=["display","text","script","scriptscript"],Sz=o(function(e){var r=null;return e.length>0&&(r=e,r=r==="."?null:r),r},"delimFromValue");Nt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:r}=t,n=e[4],i=e[5],a=g3(e[0]),s=a.type==="atom"&&a.family==="open"?Sz(a.text):null,l=g3(e[1]),u=l.type==="atom"&&l.family==="close"?Sz(l.text):null,h=xr(e[2],"size"),f,d=null;h.isBlank?f=!0:(d=h.value,f=d.number>0);var p="auto",m=e[3];if(m.type==="ordgroup"){if(m.body.length>0){var g=xr(m.body[0],"textord");p=Ez[Number(g.text)]}}else m=xr(m,"textord"),p=Ez[Number(m.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:f,barSize:d,leftDelim:s,rightDelim:u,size:p}},htmlBuilder:Y7,mathmlBuilder:X7});Nt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:r,funcName:n,token:i}=t;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:xr(e[0],"size").value,token:i}}});Nt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=obe(xr(e[1],"infix").size),s=e[2],l=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:s,continued:!1,hasBarLine:l,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},"handler"),htmlBuilder:Y7,mathmlBuilder:X7});wG=o((t,e)=>{var r=e.style,n,i;t.type==="supsub"?(n=t.sup?Fr(t.sup,e.havingStyle(r.sup()),e):Fr(t.sub,e.havingStyle(r.sub()),e),i=xr(t.base,"horizBrace")):i=xr(t,"horizBrace");var a=Fr(i.base,e.havingBaseStyle(tr.DISPLAY)),s=cu.svgSpan(i,e),l;if(i.isOver?(l=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=Be.makeVList({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),n){var u=Be.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e);i.isOver?l=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:.2},{type:"elem",elem:n}]},e):l=Be.makeVList({positionType:"bottom",positionData:u.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:u}]},e)}return Be.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e)},"htmlBuilder$3"),D4e=o((t,e)=>{var r=cu.mathMLnode(t.label);return new dt.MathNode(t.isOver?"mover":"munder",[yn(t.base,e),r])},"mathmlBuilder$2");Nt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:e[0]}},htmlBuilder:wG,mathmlBuilder:D4e});Nt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[1],i=xr(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:di(n)}:r.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:o((t,e)=>{var r=Pi(t.body,e,!1);return Be.makeAnchor(t.href,[],r,e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=dh(t.body,e);return r instanceof ws||(r=new ws("mrow",[r])),r.setAttribute("href",t.href),r},"mathmlBuilder")});Nt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=xr(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a{var{parser:r,funcName:n,token:i}=t,a=xr(e[0],"raw").string,s=e[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,u={};switch(n){case"\\htmlClass":u.class=a,l={command:"\\htmlClass",class:a};break;case"\\htmlId":u.id=a,l={command:"\\htmlId",id:a};break;case"\\htmlStyle":u.style=a,l={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var h=a.split(","),f=0;f{var r=Pi(t.body,e,!1),n=["enclosing"];t.attributes.class&&n.push(...t.attributes.class.trim().split(/\s+/));var i=Be.makeSpan(n,r,e);for(var a in t.attributes)a!=="class"&&t.attributes.hasOwnProperty(a)&&i.setAttribute(a,t.attributes[a]);return i},"htmlBuilder"),mathmlBuilder:o((t,e)=>dh(t.body,e),"mathmlBuilder")});Nt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"htmlmathml",mode:r.mode,html:di(e[0]),mathml:di(e[1])}},"handler"),htmlBuilder:o((t,e)=>{var r=Pi(t.html,e,!1);return Be.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>dh(t.mathml,e),"mathmlBuilder")});x7=o(function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!r)throw new gt("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!zz(n))throw new gt("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n},"sizeData");Nt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:o((t,e,r)=>{var{parser:n}=t,i={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var u=xr(r[0],"raw").string,h=u.split(","),f=0;f{var r=ti(t.height,e),n=0;t.totalheight.number>0&&(n=ti(t.totalheight,e)-r);var i=0;t.width.number>0&&(i=ti(t.width,e));var a={height:kt(r+n)};i>0&&(a.width=kt(i)),n>0&&(a.verticalAlign=kt(-n));var s=new S7(t.src,t.alt,a);return s.height=r,s.depth=n,s},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new dt.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var n=ti(t.height,e),i=0;if(t.totalheight.number>0&&(i=ti(t.totalheight,e)-n,r.setAttribute("valign",kt(-i))),r.setAttribute("height",kt(n+i)),t.width.number>0){var a=ti(t.width,e);r.setAttribute("width",kt(a))}return r.setAttribute("src",t.src),r},"mathmlBuilder")});Nt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=xr(e[0],"size");if(r.settings.strict){var a=n[1]==="m",s=i.value.unit==="mu";a?(s||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):s&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(t,e){return Be.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var r=ti(t.dimension,e);return new dt.SpaceNode(r)}});Nt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},"handler"),htmlBuilder:o((t,e)=>{var r;t.alignment==="clap"?(r=Be.makeSpan([],[Fr(t.body,e)]),r=Be.makeSpan(["inner"],[r],e)):r=Be.makeSpan(["inner"],[Fr(t.body,e)]);var n=Be.makeSpan(["fix"],[]),i=Be.makeSpan([t.alignment],[r,n],e),a=Be.makeSpan(["strut"]);return a.style.height=kt(i.height+i.depth),i.depth&&(a.style.verticalAlign=kt(-i.depth)),i.children.unshift(a),i=Be.makeSpan(["thinbox"],[i],e),Be.makeSpan(["mord","vbox"],[i],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new dt.MathNode("mpadded",[yn(t.body,e)]);if(t.alignment!=="rlap"){var n=t.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r},"mathmlBuilder")});Nt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:r,parser:n}=t,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",s=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:s}}});Nt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new gt("Mismatched "+t.funcName)}});Cz=o((t,e)=>{switch(e.style.size){case tr.DISPLAY.size:return t.display;case tr.TEXT.size:return t.text;case tr.SCRIPT.size:return t.script;case tr.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}},"chooseMathStyle");Nt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"mathchoice",mode:r.mode,display:di(e[0]),text:di(e[1]),script:di(e[2]),scriptscript:di(e[3])}},"handler"),htmlBuilder:o((t,e)=>{var r=Cz(t,e),n=Pi(r,e,!1);return Be.makeFragment(n)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=Cz(t,e);return dh(r,e)},"mathmlBuilder")});TG=o((t,e,r,n,i,a,s)=>{t=Be.makeSpan([],[t]);var l=r&&Jt.isCharacterBox(r),u,h;if(e){var f=Fr(e,n.havingStyle(i.sup()),n);h={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-f.depth)}}if(r){var d=Fr(r,n.havingStyle(i.sub()),n);u={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-d.height)}}var p;if(h&&u){var m=n.fontMetrics().bigOpSpacing5+u.elem.height+u.elem.depth+u.kern+t.depth+s;p=Be.makeVList({positionType:"bottom",positionData:m,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:kt(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:kt(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(u){var g=t.height-s;p=Be.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:kt(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t}]},n)}else if(h){var y=t.depth+s;p=Be.makeVList({positionType:"bottom",positionData:y,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:kt(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else return t;var v=[p];if(u&&a!==0&&!l){var x=Be.makeSpan(["mspace"],[],n);x.style.marginRight=kt(a),v.unshift(x)}return Be.makeSpan(["mop","op-limits"],v,n)},"assembleSupSub"),kG=["\\smallint"],m0=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=xr(t.base,"op"),i=!0):a=xr(t,"op");var s=e.style,l=!1;s.size===tr.DISPLAY.size&&a.symbol&&!Jt.contains(kG,a.name)&&(l=!0);var u;if(a.symbol){var h=l?"Size2-Regular":"Size1-Regular",f="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(f=a.name.slice(1),a.name=f==="oiint"?"\\iint":"\\iiint"),u=Be.makeSymbol(a.name,h,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),f.length>0){var d=u.italic,p=Be.staticSvg(f+"Size"+(l?"2":"1"),e);u=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:u,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},e),a.name="\\"+f,u.classes.unshift("mop"),u.italic=d}}else if(a.body){var m=Pi(a.body,e,!0);m.length===1&&m[0]instanceof Ts?(u=m[0],u.classes[0]="mop"):u=Be.makeSpan(["mop"],m,e)}else{for(var g=[],y=1;y{var r;if(t.symbol)r=new ws("mo",[Co(t.name,t.mode)]),Jt.contains(kG,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new ws("mo",ks(t.body,e));else{r=new ws("mi",[new Jf(t.name.slice(1))]);var n=new ws("mo",[Co("\u2061","text")]);t.parentIsSupSub?r=new ws("mrow",[r,n]):r=Qz([r,n])}return r},"mathmlBuilder$1"),L4e={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};Nt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=n;return i.length===1&&(i=L4e[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},"handler"),htmlBuilder:m0,mathmlBuilder:Wy});Nt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:di(n)}},"handler"),htmlBuilder:m0,mathmlBuilder:Wy});R4e={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};Nt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:m0,mathmlBuilder:Wy});Nt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:m0,mathmlBuilder:Wy});Nt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t,n=r;return n.length===1&&(n=R4e[n]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:m0,mathmlBuilder:Wy});EG=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=xr(t.base,"operatorname"),i=!0):a=xr(t,"operatorname");var s;if(a.body.length>0){for(var l=a.body.map(d=>{var p=d.text;return typeof p=="string"?{type:"textord",mode:d.mode,text:p}:d}),u=Pi(l,e.withFont("mathrm"),!0),h=0;h{for(var r=ks(t.body,e.withFont("mathrm")),n=!0,i=0;if.toText()).join("");r=[new dt.TextNode(l)]}var u=new dt.MathNode("mi",r);u.setAttribute("mathvariant","normal");var h=new dt.MathNode("mo",[Co("\u2061","text")]);return t.parentIsSupSub?new dt.MathNode("mrow",[u,h]):dt.newDocumentFragment([u,h])},"mathmlBuilder");Nt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"operatorname",mode:r.mode,body:di(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:EG,mathmlBuilder:N4e});fe("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");rd({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?Be.makeFragment(Pi(t.body,e,!1)):Be.makeSpan(["mord"],Pi(t.body,e,!0),e)},mathmlBuilder(t,e){return dh(t.body,e,!0)}});Nt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:r}=t,n=e[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(t,e){var r=Fr(t.body,e.havingCrampedStyle()),n=Be.makeLineSpan("overline-line",e),i=e.fontMetrics().defaultRuleThickness,a=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]},e);return Be.makeSpan(["mord","overline"],[a],e)},mathmlBuilder(t,e){var r=new dt.MathNode("mo",[new dt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new dt.MathNode("mover",[yn(t.body,e),r]);return n.setAttribute("accent","true"),n}});Nt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"phantom",mode:r.mode,body:di(n)}},"handler"),htmlBuilder:o((t,e)=>{var r=Pi(t.body,e.withPhantom(),!1);return Be.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=ks(t.body,e);return new dt.MathNode("mphantom",r)},"mathmlBuilder")});Nt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"hphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=Be.makeSpan([],[Fr(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n{var r=ks(di(t.body),e),n=new dt.MathNode("mphantom",r),i=new dt.MathNode("mpadded",[n]);return i.setAttribute("height","0px"),i.setAttribute("depth","0px"),i},"mathmlBuilder")});Nt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"vphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=Be.makeSpan(["inner"],[Fr(t.body,e.withPhantom())]),n=Be.makeSpan(["fix"],[]);return Be.makeSpan(["mord","rlap"],[r,n],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=ks(di(t.body),e),n=new dt.MathNode("mphantom",r),i=new dt.MathNode("mpadded",[n]);return i.setAttribute("width","0px"),i},"mathmlBuilder")});Nt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t,n=xr(e[0],"size").value,i=e[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(t,e){var r=Fr(t.body,e),n=ti(t.dy,e);return Be.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){var r=new dt.MathNode("mpadded",[yn(t.body,e)]),n=t.dy.number+t.dy.unit;return r.setAttribute("voffset",n),r}});Nt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});Nt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler(t,e,r){var{parser:n}=t,i=r[0],a=xr(e[0],"size"),s=xr(e[1],"size");return{type:"rule",mode:n.mode,shift:i&&xr(i,"size").value,width:a.value,height:s.value}},htmlBuilder(t,e){var r=Be.makeSpan(["mord","rule"],[],e),n=ti(t.width,e),i=ti(t.height,e),a=t.shift?ti(t.shift,e):0;return r.style.borderRightWidth=kt(n),r.style.borderTopWidth=kt(i),r.style.bottom=kt(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*e.sizeMultiplier,r},mathmlBuilder(t,e){var r=ti(t.width,e),n=ti(t.height,e),i=t.shift?ti(t.shift,e):0,a=e.color&&e.getColor()||"black",s=new dt.MathNode("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",kt(r)),s.setAttribute("height",kt(n));var l=new dt.MathNode("mpadded",[s]);return i>=0?l.setAttribute("height",kt(i)):(l.setAttribute("height",kt(i)),l.setAttribute("depth",kt(-i))),l.setAttribute("voffset",kt(i)),l}});o(SG,"sizingGroup");Az=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],M4e=o((t,e)=>{var r=e.havingSize(t.size);return SG(t.body,r,e)},"htmlBuilder");Nt({type:"sizing",names:Az,props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:Az.indexOf(n)+1,body:a}},"handler"),htmlBuilder:M4e,mathmlBuilder:o((t,e)=>{var r=e.havingSize(t.size),n=ks(t.body,r),i=new dt.MathNode("mstyle",n);return i.setAttribute("mathsize",kt(r.sizeMultiplier)),i},"mathmlBuilder")});Nt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:o((t,e,r)=>{var{parser:n}=t,i=!1,a=!1,s=r[0]&&xr(r[0],"ordgroup");if(s)for(var l="",u=0;u{var r=Be.makeSpan([],[Fr(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var n=0;n{var r=new dt.MathNode("mpadded",[yn(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r},"mathmlBuilder")});Nt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n}=t,i=r[0],a=e[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(t,e){var r=Fr(t.body,e.havingCrampedStyle());r.height===0&&(r.height=e.fontMetrics().xHeight),r=Be.wrapFragment(r,e);var n=e.fontMetrics(),i=n.defaultRuleThickness,a=i;e.style.idr.height+r.depth+s&&(s=(s+d-r.height-r.depth)/2);var p=u.height-r.height-s-h;r.style.paddingLeft=kt(f);var m=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:u},{type:"kern",size:h}]},e);if(t.index){var g=e.havingStyle(tr.SCRIPTSCRIPT),y=Fr(t.index,g,e),v=.6*(m.height-m.depth),x=Be.makeVList({positionType:"shift",positionData:-v,children:[{type:"elem",elem:y}]},e),b=Be.makeSpan(["root"],[x]);return Be.makeSpan(["mord","sqrt"],[b,m],e)}else return Be.makeSpan(["mord","sqrt"],[m],e)},mathmlBuilder(t,e){var{body:r,index:n}=t;return n?new dt.MathNode("mroot",[yn(r,e),yn(n,e)]):new dt.MathNode("msqrt",[yn(r,e)])}});_z={display:tr.DISPLAY,text:tr.TEXT,script:tr.SCRIPT,scriptscript:tr.SCRIPTSCRIPT};Nt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!0,r),s=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:s,body:a}},htmlBuilder(t,e){var r=_z[t.style],n=e.havingStyle(r).withFont("");return SG(t.body,n,e)},mathmlBuilder(t,e){var r=_z[t.style],n=e.havingStyle(r),i=ks(t.body,n),a=new dt.MathNode("mstyle",i),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=s[t.style];return a.setAttribute("scriptlevel",l[0]),a.setAttribute("displaystyle",l[1]),a}});I4e=o(function(e,r){var n=e.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===tr.DISPLAY.size||n.alwaysHandleSupSub);return i?m0:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===tr.DISPLAY.size||n.limits);return a?EG:null}else{if(n.type==="accent")return Jt.isCharacterBox(n.base)?G7:null;if(n.type==="horizBrace"){var s=!e.sub;return s===n.isOver?wG:null}else return null}else return null},"htmlBuilderDelegate");rd({type:"supsub",htmlBuilder(t,e){var r=I4e(t,e);if(r)return r(t,e);var{base:n,sup:i,sub:a}=t,s=Fr(n,e),l,u,h=e.fontMetrics(),f=0,d=0,p=n&&Jt.isCharacterBox(n);if(i){var m=e.havingStyle(e.style.sup());l=Fr(i,m,e),p||(f=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/e.sizeMultiplier)}if(a){var g=e.havingStyle(e.style.sub());u=Fr(a,g,e),p||(d=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}var y;e.style===tr.DISPLAY?y=h.sup1:e.style.cramped?y=h.sup3:y=h.sup2;var v=e.sizeMultiplier,x=kt(.5/h.ptPerEm/v),b=null;if(u){var w=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(s instanceof Ts||w)&&(b=kt(-s.italic))}var C;if(l&&u){f=Math.max(f,y,l.depth+.25*h.xHeight),d=Math.max(d,h.sub2);var T=h.defaultRuleThickness,E=4*T;if(f-l.depth-(u.height-d)0&&(f+=A,d-=A)}var S=[{type:"elem",elem:u,shift:d,marginRight:x,marginLeft:b},{type:"elem",elem:l,shift:-f,marginRight:x}];C=Be.makeVList({positionType:"individualShift",children:S},e)}else if(u){d=Math.max(d,h.sub1,u.height-.8*h.xHeight);var _=[{type:"elem",elem:u,marginLeft:b,marginRight:x}];C=Be.makeVList({positionType:"shift",positionData:d,children:_},e)}else if(l)f=Math.max(f,y,l.depth+.25*h.xHeight),C=Be.makeVList({positionType:"shift",positionData:-f,children:[{type:"elem",elem:l,marginRight:x}]},e);else throw new Error("supsub must have either sup or sub.");var I=A7(s,"right")||"mord";return Be.makeSpan([I],[s,Be.makeSpan(["msupsub"],[C])],e)},mathmlBuilder(t,e){var r=!1,n,i;t.base&&t.base.type==="horizBrace"&&(i=!!t.sup,i===t.base.isOver&&(r=!0,n=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var a=[yn(t.base,e)];t.sub&&a.push(yn(t.sub,e)),t.sup&&a.push(yn(t.sup,e));var s;if(r)s=n?"mover":"munder";else if(t.sub)if(t.sup){var h=t.base;h&&h.type==="op"&&h.limits&&e.style===tr.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(e.style===tr.DISPLAY||h.limits)?s="munderover":s="msubsup"}else{var u=t.base;u&&u.type==="op"&&u.limits&&(e.style===tr.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||e.style===tr.DISPLAY)?s="munder":s="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===tr.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===tr.DISPLAY)?s="mover":s="msup"}return new dt.MathNode(s,a)}});rd({type:"atom",htmlBuilder(t,e){return Be.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var r=new dt.MathNode("mo",[Co(t.text,t.mode)]);if(t.family==="bin"){var n=$7(t,e);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else t.family==="punct"?r.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&r.setAttribute("stretchy","false");return r}});CG={mi:"italic",mn:"normal",mtext:"normal"};rd({type:"mathord",htmlBuilder(t,e){return Be.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var r=new dt.MathNode("mi",[Co(t.text,t.mode,e)]),n=$7(t,e)||"italic";return n!==CG[r.type]&&r.setAttribute("mathvariant",n),r}});rd({type:"textord",htmlBuilder(t,e){return Be.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var r=Co(t.text,t.mode,e),n=$7(t,e)||"normal",i;return t.mode==="text"?i=new dt.MathNode("mtext",[r]):/[0-9]/.test(t.text)?i=new dt.MathNode("mn",[r]):t.text==="\\prime"?i=new dt.MathNode("mo",[r]):i=new dt.MathNode("mi",[r]),n!==CG[i.type]&&i.setAttribute("mathvariant",n),i}});b7={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},w7={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};rd({type:"spacing",htmlBuilder(t,e){if(w7.hasOwnProperty(t.text)){var r=w7[t.text].className||"";if(t.mode==="text"){var n=Be.makeOrd(t,e,"textord");return n.classes.push(r),n}else return Be.makeSpan(["mspace",r],[Be.mathsym(t.text,t.mode,e)],e)}else{if(b7.hasOwnProperty(t.text))return Be.makeSpan(["mspace",b7[t.text]],[],e);throw new gt('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var r;if(w7.hasOwnProperty(t.text))r=new dt.MathNode("mtext",[new dt.TextNode("\xA0")]);else{if(b7.hasOwnProperty(t.text))return new dt.MathNode("mspace");throw new gt('Unknown type of space "'+t.text+'"')}return r}});Dz=o(()=>{var t=new dt.MathNode("mtd",[]);return t.setAttribute("width","50%"),t},"pad");rd({type:"tag",mathmlBuilder(t,e){var r=new dt.MathNode("mtable",[new dt.MathNode("mtr",[Dz(),new dt.MathNode("mtd",[dh(t.body,e)]),Dz(),new dt.MathNode("mtd",[dh(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});Lz={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Rz={"\\textbf":"textbf","\\textmd":"textmd"},O4e={"\\textit":"textit","\\textup":"textup"},Nz=o((t,e)=>{var r=t.font;if(r){if(Lz[r])return e.withTextFontFamily(Lz[r]);if(Rz[r])return e.withTextFontWeight(Rz[r]);if(r==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(O4e[r])},"optionsWithFont");Nt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"text",mode:r.mode,body:di(i),font:n}},htmlBuilder(t,e){var r=Nz(t,e),n=Pi(t.body,r,!0);return Be.makeSpan(["mord","text"],n,r)},mathmlBuilder(t,e){var r=Nz(t,e);return dh(t.body,r)}});Nt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"underline",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Fr(t.body,e),n=Be.makeLineSpan("underline-line",e),i=e.fontMetrics().defaultRuleThickness,a=Be.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]},e);return Be.makeSpan(["mord","underline"],[a],e)},mathmlBuilder(t,e){var r=new dt.MathNode("mo",[new dt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new dt.MathNode("munder",[yn(t.body,e),r]);return n.setAttribute("accentunder","true"),n}});Nt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"vcenter",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Fr(t.body,e),n=e.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return Be.makeVList({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){return new dt.MathNode("mpadded",[yn(t.body,e)],["vcenter"])}});Nt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,r){throw new gt("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var r=Mz(t),n=[],i=e.havingStyle(e.style.text()),a=0;at.body.replace(/ /g,t.star?"\u2423":"\xA0"),"makeVerb"),hh=jz,AG=`[ \r - ]`,P4e="\\\\[a-zA-Z@]+",B4e="\\\\[^\uD800-\uDFFF]",F4e="("+P4e+")"+AG+"*",$4e=`\\\\( +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},"tallDelim"),hd=class{static{o(this,"DocumentFragment")}constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return er.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),r=0;rr.toText(),"toText");return this.children.map(e).join("")}},Ql={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},o3={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},gV={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};o(XV,"setFontMetrics");o(lA,"getCharacterMetrics");P7={};o(xTe,"getGlobalMetrics");bTe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],yV=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],vV=o(function(e,r){return r.size<2?e:bTe[e-1][r.size-1]},"sizeAtStyle"),b3=class t{static{o(this,"Options")}constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=yV[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);return new t(r)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:vV(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:yV[e-1]})}havingBaseStyle(e){e=e||this.style.text();var r=vV(t.BASESIZE,e);return this.size===r&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=xTe(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};b3.BASESIZE=6;K7={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},TTe={ex:!0,em:!0,mu:!0},jV=o(function(e){return typeof e!="string"&&(e=e.unit),e in K7||e in TTe||e==="ex"},"validUnit"),ii=o(function(e,r){var n;if(e.unit in K7)n=K7[e.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(e.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,e.unit==="ex")n=i.fontMetrics().xHeight;else if(e.unit==="em")n=i.fontMetrics().quad;else throw new gt("Invalid unit: '"+e.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(e.number*n,r.maxSize)},"calculateSize"),St=o(function(e){return+e.toFixed(4)+"em"},"makeEm"),bh=o(function(e){return e.filter(r=>r).join(" ")},"createClass"),KV=o(function(e,r,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},"initNode"),QV=o(function(e){var r=document.createElement(e);r.className=bh(this.classes);for(var n in this.style)this.style.hasOwnProperty(n)&&(r.style[n]=this.style[n]);for(var i in this.attributes)this.attributes.hasOwnProperty(i)&&r.setAttribute(i,this.attributes[i]);for(var a=0;a/=\x00-\x1f]/,ZV=o(function(e){var r="<"+e;this.classes.length&&(r+=' class="'+er.escape(bh(this.classes))+'"');var n="";for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=er.hyphenate(i)+":"+this.style[i]+";");n&&(r+=' style="'+er.escape(n)+'"');for(var a in this.attributes)if(this.attributes.hasOwnProperty(a)){if(wTe.test(a))throw new gt("Invalid attribute name '"+a+"'");r+=" "+a+'="'+er.escape(this.attributes[a])+'"'}r+=">";for(var s=0;s",r},"toMarkup"),fd=class{static{o(this,"Span")}constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,KV.call(this,e,n,i),this.children=r||[]}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return er.contains(this.classes,e)}toNode(){return QV.call(this,"span")}toMarkup(){return ZV.call(this,"span")}},Ky=class{static{o(this,"Anchor")}constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,KV.call(this,r,i),this.children=n||[],this.setAttribute("href",e)}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return er.contains(this.classes,e)}toNode(){return QV.call(this,"a")}toMarkup(){return ZV.call(this,"a")}},Q7=class{static{o(this,"Img")}constructor(e,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=e,this.classes=["mord"],this.style=n}hasClass(e){return er.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var r in this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);return e}toMarkup(){var e=''+er.escape(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=St(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=bh(this.classes));for(var n in this.style)this.style.hasOwnProperty(n)&&(r=r||document.createElement("span"),r.style[n]=this.style[n]);return r?(r.appendChild(e),r):e}toMarkup(){var e=!1,r="0&&(n+="margin-right:"+this.italic+"em;");for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=er.hyphenate(i)+":"+this.style[i]+";");n&&(e=!0,r+=' style="'+er.escape(n)+'"');var a=er.escape(this.text);return e?(r+=">",r+=a,r+="",r):a}},dl=class{static{o(this,"SvgNode")}constructor(e,r){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=r||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"svg");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}},Qy=class{static{o(this,"LineNode")}constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"line");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var e="","\\gt",!0);V(H,ie,Ee,"\u2208","\\in",!0);V(H,ie,Ee,"\uE020","\\@not");V(H,ie,Ee,"\u2282","\\subset",!0);V(H,ie,Ee,"\u2283","\\supset",!0);V(H,ie,Ee,"\u2286","\\subseteq",!0);V(H,ie,Ee,"\u2287","\\supseteq",!0);V(H,we,Ee,"\u2288","\\nsubseteq",!0);V(H,we,Ee,"\u2289","\\nsupseteq",!0);V(H,ie,Ee,"\u22A8","\\models");V(H,ie,Ee,"\u2190","\\leftarrow",!0);V(H,ie,Ee,"\u2264","\\le");V(H,ie,Ee,"\u2264","\\leq",!0);V(H,ie,Ee,"<","\\lt",!0);V(H,ie,Ee,"\u2192","\\rightarrow",!0);V(H,ie,Ee,"\u2192","\\to");V(H,we,Ee,"\u2271","\\ngeq",!0);V(H,we,Ee,"\u2270","\\nleq",!0);V(H,ie,mu,"\xA0","\\ ");V(H,ie,mu,"\xA0","\\space");V(H,ie,mu,"\xA0","\\nobreakspace");V(ct,ie,mu,"\xA0","\\ ");V(ct,ie,mu,"\xA0"," ");V(ct,ie,mu,"\xA0","\\space");V(ct,ie,mu,"\xA0","\\nobreakspace");V(H,ie,mu,null,"\\nobreak");V(H,ie,mu,null,"\\allowbreak");V(H,ie,A3,",",",");V(H,ie,A3,";",";");V(H,we,Ot,"\u22BC","\\barwedge",!0);V(H,we,Ot,"\u22BB","\\veebar",!0);V(H,ie,Ot,"\u2299","\\odot",!0);V(H,ie,Ot,"\u2295","\\oplus",!0);V(H,ie,Ot,"\u2297","\\otimes",!0);V(H,ie,De,"\u2202","\\partial",!0);V(H,ie,Ot,"\u2298","\\oslash",!0);V(H,we,Ot,"\u229A","\\circledcirc",!0);V(H,we,Ot,"\u22A1","\\boxdot",!0);V(H,ie,Ot,"\u25B3","\\bigtriangleup");V(H,ie,Ot,"\u25BD","\\bigtriangledown");V(H,ie,Ot,"\u2020","\\dagger");V(H,ie,Ot,"\u22C4","\\diamond");V(H,ie,Ot,"\u22C6","\\star");V(H,ie,Ot,"\u25C3","\\triangleleft");V(H,ie,Ot,"\u25B9","\\triangleright");V(H,ie,ro,"{","\\{");V(ct,ie,De,"{","\\{");V(ct,ie,De,"{","\\textbraceleft");V(H,ie,rs,"}","\\}");V(ct,ie,De,"}","\\}");V(ct,ie,De,"}","\\textbraceright");V(H,ie,ro,"{","\\lbrace");V(H,ie,rs,"}","\\rbrace");V(H,ie,ro,"[","\\lbrack",!0);V(ct,ie,De,"[","\\lbrack",!0);V(H,ie,rs,"]","\\rbrack",!0);V(ct,ie,De,"]","\\rbrack",!0);V(H,ie,ro,"(","\\lparen",!0);V(H,ie,rs,")","\\rparen",!0);V(ct,ie,De,"<","\\textless",!0);V(ct,ie,De,">","\\textgreater",!0);V(H,ie,ro,"\u230A","\\lfloor",!0);V(H,ie,rs,"\u230B","\\rfloor",!0);V(H,ie,ro,"\u2308","\\lceil",!0);V(H,ie,rs,"\u2309","\\rceil",!0);V(H,ie,De,"\\","\\backslash");V(H,ie,De,"\u2223","|");V(H,ie,De,"\u2223","\\vert");V(ct,ie,De,"|","\\textbar",!0);V(H,ie,De,"\u2225","\\|");V(H,ie,De,"\u2225","\\Vert");V(ct,ie,De,"\u2225","\\textbardbl");V(ct,ie,De,"~","\\textasciitilde");V(ct,ie,De,"\\","\\textbackslash");V(ct,ie,De,"^","\\textasciicircum");V(H,ie,Ee,"\u2191","\\uparrow",!0);V(H,ie,Ee,"\u21D1","\\Uparrow",!0);V(H,ie,Ee,"\u2193","\\downarrow",!0);V(H,ie,Ee,"\u21D3","\\Downarrow",!0);V(H,ie,Ee,"\u2195","\\updownarrow",!0);V(H,ie,Ee,"\u21D5","\\Updownarrow",!0);V(H,ie,ki,"\u2210","\\coprod");V(H,ie,ki,"\u22C1","\\bigvee");V(H,ie,ki,"\u22C0","\\bigwedge");V(H,ie,ki,"\u2A04","\\biguplus");V(H,ie,ki,"\u22C2","\\bigcap");V(H,ie,ki,"\u22C3","\\bigcup");V(H,ie,ki,"\u222B","\\int");V(H,ie,ki,"\u222B","\\intop");V(H,ie,ki,"\u222C","\\iint");V(H,ie,ki,"\u222D","\\iiint");V(H,ie,ki,"\u220F","\\prod");V(H,ie,ki,"\u2211","\\sum");V(H,ie,ki,"\u2A02","\\bigotimes");V(H,ie,ki,"\u2A01","\\bigoplus");V(H,ie,ki,"\u2A00","\\bigodot");V(H,ie,ki,"\u222E","\\oint");V(H,ie,ki,"\u222F","\\oiint");V(H,ie,ki,"\u2230","\\oiiint");V(H,ie,ki,"\u2A06","\\bigsqcup");V(H,ie,ki,"\u222B","\\smallint");V(ct,ie,S0,"\u2026","\\textellipsis");V(H,ie,S0,"\u2026","\\mathellipsis");V(ct,ie,S0,"\u2026","\\ldots",!0);V(H,ie,S0,"\u2026","\\ldots",!0);V(H,ie,S0,"\u22EF","\\@cdots",!0);V(H,ie,S0,"\u22F1","\\ddots",!0);V(H,ie,De,"\u22EE","\\varvdots");V(ct,ie,De,"\u22EE","\\varvdots");V(H,ie,Wn,"\u02CA","\\acute");V(H,ie,Wn,"\u02CB","\\grave");V(H,ie,Wn,"\xA8","\\ddot");V(H,ie,Wn,"~","\\tilde");V(H,ie,Wn,"\u02C9","\\bar");V(H,ie,Wn,"\u02D8","\\breve");V(H,ie,Wn,"\u02C7","\\check");V(H,ie,Wn,"^","\\hat");V(H,ie,Wn,"\u20D7","\\vec");V(H,ie,Wn,"\u02D9","\\dot");V(H,ie,Wn,"\u02DA","\\mathring");V(H,ie,rr,"\uE131","\\@imath");V(H,ie,rr,"\uE237","\\@jmath");V(H,ie,De,"\u0131","\u0131");V(H,ie,De,"\u0237","\u0237");V(ct,ie,De,"\u0131","\\i",!0);V(ct,ie,De,"\u0237","\\j",!0);V(ct,ie,De,"\xDF","\\ss",!0);V(ct,ie,De,"\xE6","\\ae",!0);V(ct,ie,De,"\u0153","\\oe",!0);V(ct,ie,De,"\xF8","\\o",!0);V(ct,ie,De,"\xC6","\\AE",!0);V(ct,ie,De,"\u0152","\\OE",!0);V(ct,ie,De,"\xD8","\\O",!0);V(ct,ie,Wn,"\u02CA","\\'");V(ct,ie,Wn,"\u02CB","\\`");V(ct,ie,Wn,"\u02C6","\\^");V(ct,ie,Wn,"\u02DC","\\~");V(ct,ie,Wn,"\u02C9","\\=");V(ct,ie,Wn,"\u02D8","\\u");V(ct,ie,Wn,"\u02D9","\\.");V(ct,ie,Wn,"\xB8","\\c");V(ct,ie,Wn,"\u02DA","\\r");V(ct,ie,Wn,"\u02C7","\\v");V(ct,ie,Wn,"\xA8",'\\"');V(ct,ie,Wn,"\u02DD","\\H");V(ct,ie,Wn,"\u25EF","\\textcircled");JV={"--":!0,"---":!0,"``":!0,"''":!0};V(ct,ie,De,"\u2013","--",!0);V(ct,ie,De,"\u2013","\\textendash");V(ct,ie,De,"\u2014","---",!0);V(ct,ie,De,"\u2014","\\textemdash");V(ct,ie,De,"\u2018","`",!0);V(ct,ie,De,"\u2018","\\textquoteleft");V(ct,ie,De,"\u2019","'",!0);V(ct,ie,De,"\u2019","\\textquoteright");V(ct,ie,De,"\u201C","``",!0);V(ct,ie,De,"\u201C","\\textquotedblleft");V(ct,ie,De,"\u201D","''",!0);V(ct,ie,De,"\u201D","\\textquotedblright");V(H,ie,De,"\xB0","\\degree",!0);V(ct,ie,De,"\xB0","\\degree");V(ct,ie,De,"\xB0","\\textdegree",!0);V(H,ie,De,"\xA3","\\pounds");V(H,ie,De,"\xA3","\\mathsterling",!0);V(ct,ie,De,"\xA3","\\pounds");V(ct,ie,De,"\xA3","\\textsterling",!0);V(H,we,De,"\u2720","\\maltese");V(ct,we,De,"\u2720","\\maltese");bV='0123456789/@."';for(l3=0;l30)return fl(a,h,i,r,s.concat(f));if(u){var d,p;if(u==="boldsymbol"){var m=DTe(a,i,r,s,n);d=m.fontName,p=[m.fontClass]}else l?(d=rU[u].fontName,p=[u]):(d=d3(u,r.fontWeight,r.fontShape),p=[u,r.fontWeight,r.fontShape]);if(_3(a,d,i).metrics)return fl(a,d,i,r,s.concat(p));if(JV.hasOwnProperty(a)&&d.slice(0,10)==="Typewriter"){for(var g=[],y=0;y{if(bh(t.classes)!==bh(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var r=t.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n in t.style)if(t.style.hasOwnProperty(n)&&t.style[n]!==e.style[n])return!1;for(var i in e.style)if(e.style.hasOwnProperty(i)&&t.style[i]!==e.style[i])return!1;return!0},"canCombine"),NTe=o(t=>{for(var e=0;er&&(r=s.height),s.depth>n&&(n=s.depth),s.maxFontSize>i&&(i=s.maxFontSize)}e.height=r,e.depth=n,e.maxFontSize=i},"sizeElementFromChildren"),Ss=o(function(e,r,n,i){var a=new fd(e,r,n,i);return cA(a),a},"makeSpan"),eU=o((t,e,r,n)=>new fd(t,e,r,n),"makeSvgSpan"),MTe=o(function(e,r,n){var i=Ss([e],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=St(i.height),i.maxFontSize=1,i},"makeLineSpan"),ITe=o(function(e,r,n,i){var a=new Ky(e,r,n,i);return cA(a),a},"makeAnchor"),tU=o(function(e){var r=new hd(e);return cA(r),r},"makeFragment"),OTe=o(function(e,r){return e instanceof hd?Ss([],[e],r):e},"wrapFragment"),PTe=o(function(e){if(e.positionType==="individualShift"){for(var r=e.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,s=1;s{var r=Ss(["mspace"],[],e),n=ii(t,e);return r.style.marginRight=St(n),r},"makeGlue"),d3=o(function(e,r,n){var i="";switch(e){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=e}var a;return r==="textbf"&&n==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",i+"-"+a},"retrieveTextFontName"),rU={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},nU={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},$Te=o(function(e,r){var[n,i,a]=nU[e],s=new Zl(n),l=new dl([s],{width:St(i),height:St(a),style:"width:"+St(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),u=eU(["overlay"],[l],r);return u.height=a,u.style.height=St(a),u.style.width=St(i),u},"staticSvg"),$e={fontMap:rU,makeSymbol:fl,mathsym:_Te,makeSpan:Ss,makeSvgSpan:eU,makeLineSpan:MTe,makeAnchor:ITe,makeFragment:tU,wrapFragment:OTe,makeVList:BTe,makeOrd:LTe,makeGlue:FTe,staticSvg:$Te,svgData:nU,tryCombineChars:NTe},ni={number:3,unit:"mu"},ud={number:4,unit:"mu"},uu={number:5,unit:"mu"},zTe={mord:{mop:ni,mbin:ud,mrel:uu,minner:ni},mop:{mord:ni,mop:ni,mrel:uu,minner:ni},mbin:{mord:ud,mop:ud,mopen:ud,minner:ud},mrel:{mord:uu,mop:uu,mopen:uu,minner:uu},mopen:{},mclose:{mop:ni,mbin:ud,mrel:uu,minner:ni},mpunct:{mord:ni,mop:ni,mrel:uu,mopen:ni,mclose:ni,mpunct:ni,minner:ni},minner:{mord:ni,mop:ni,mbin:ud,mrel:uu,mopen:ni,mpunct:ni,minner:ni}},GTe={mord:{mop:ni},mop:{mord:ni,mop:ni},mbin:{},mrel:{},mopen:{},mclose:{mop:ni},mpunct:{},minner:{mop:ni}},iU={},w3={},k3={};o(Mt,"defineFunction");o(dd,"defineFunctionBuilders");E3=o(function(e){return e.type==="ordgroup"&&e.body.length===1?e.body[0]:e},"normalizeArgument"),gi=o(function(e){return e.type==="ordgroup"?e.body:[e]},"ordargument"),du=$e.makeSpan,VTe=["leftmost","mbin","mopen","mrel","mop","mpunct"],UTe=["rightmost","mrel","mclose","mpunct"],HTe={display:nr.DISPLAY,text:nr.TEXT,script:nr.SCRIPT,scriptscript:nr.SCRIPTSCRIPT},qTe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},Ii=o(function(e,r,n,i){i===void 0&&(i=[null,null]);for(var a=[],s=0;s{var v=y.classes[0],x=g.classes[0];v==="mbin"&&er.contains(UTe,x)?y.classes[0]="mord":x==="mbin"&&er.contains(VTe,v)&&(g.classes[0]="mord")},{node:d},p,m),kV(a,(g,y)=>{var v=J7(y),x=J7(g),b=v&&x?g.hasClass("mtight")?GTe[v][x]:zTe[v][x]:null;if(b)return $e.makeGlue(b,h)},{node:d},p,m),a},"buildExpression"),kV=o(function t(e,r,n,i,a){i&&e.push(i);for(var s=0;sp=>{e.splice(d+1,0,p),s++})(s)}i&&e.pop()},"traverseNonSpaceNodes"),aU=o(function(e){return e instanceof hd||e instanceof Ky||e instanceof fd&&e.hasClass("enclosing")?e:null},"checkPartialGroup"),WTe=o(function t(e,r){var n=aU(e);if(n){var i=n.children;if(i.length){if(r==="right")return t(i[i.length-1],"right");if(r==="left")return t(i[0],"left")}}return e},"getOutermostNode"),J7=o(function(e,r){return e?(r&&(e=WTe(e,r)),qTe[e.classes[0]]||null):null},"getTypeOfDomTree"),Zy=o(function(e,r){var n=["nulldelimiter"].concat(e.baseSizingClasses());return du(r.concat(n))},"makeNullDelimiter"),Hr=o(function(e,r,n){if(!e)return du();if(w3[e.type]){var i=w3[e.type](e,r);if(n&&r.size!==n.size){i=du(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(p3,"buildHTMLUnbreakable");o(eA,"buildHTML");o(sU,"newDocumentFragment");es=class{static{o(this,"MathNode")}constructor(e,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(e,r){this.attributes[e]=r}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&e.setAttribute(r,this.attributes[r]);this.classes.length>0&&(e.className=bh(this.classes));for(var n=0;n0&&(e+=' class ="'+er.escape(bh(this.classes))+'"'),e+=">";for(var n=0;n",e}toText(){return this.children.map(e=>e.toText()).join("")}},_o=class{static{o(this,"TextNode")}constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return er.escape(this.toText())}toText(){return this.text}},tA=class{static{o(this,"SpaceNode")}constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character="\u200A":e>=.1666&&e<=.1667?this.character="\u2009":e>=.2222&&e<=.2223?this.character="\u2005":e>=.2777&&e<=.2778?this.character="\u2005\u200A":e>=-.05556&&e<=-.05555?this.character="\u200A\u2063":e>=-.1667&&e<=-.1666?this.character="\u2009\u2063":e>=-.2223&&e<=-.2222?this.character="\u205F\u2063":e>=-.2778&&e<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",St(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},mt={MathNode:es,TextNode:_o,SpaceNode:tA,newDocumentFragment:sU},Lo=o(function(e,r,n){return Nn[r][e]&&Nn[r][e].replace&&e.charCodeAt(0)!==55349&&!(JV.hasOwnProperty(e)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(e=Nn[r][e].replace),new mt.TextNode(e)},"makeText"),uA=o(function(e){return e.length===1?e[0]:new mt.MathNode("mrow",e)},"makeRow"),hA=o(function(e,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=e.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathsfit")return"sans-serif-italic";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var a=e.text;if(er.contains(["\\imath","\\jmath"],a))return null;Nn[i][a]&&Nn[i][a].replace&&(a=Nn[i][a].replace);var s=$e.fontMap[n].fontName;return lA(a,s,i)?$e.fontMap[n].variant:null},"getVariant");o($7,"isNumberPunctuation");As=o(function(e,r,n){if(e.length===1){var i=wn(e[0],r);return n&&i instanceof es&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],s,l=0;l=1&&(s.type==="mn"||$7(s))){var h=u.children[0];h instanceof es&&h.type==="mn"&&(h.children=[...s.children,...h.children],a.pop())}else if(s.type==="mi"&&s.children.length===1){var f=s.children[0];if(f instanceof _o&&f.text==="\u0338"&&(u.type==="mo"||u.type==="mi"||u.type==="mn")){var d=u.children[0];d instanceof _o&&d.text.length>0&&(d.text=d.text.slice(0,1)+"\u0338"+d.text.slice(1),a.pop())}}}a.push(u),s=u}return a},"buildExpression"),Th=o(function(e,r,n){return uA(As(e,r,n))},"buildExpressionRow"),wn=o(function(e,r){if(!e)return new mt.MathNode("mrow");if(k3[e.type]){var n=k3[e.type](e,r);return n}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(EV,"buildMathML");oU=o(function(e){return new b3({style:e.displayMode?nr.DISPLAY:nr.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},"optionsFromSettings"),lU=o(function(e,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),e=$e.makeSpan(n,[e])}return e},"displayWrap"),YTe=o(function(e,r,n){var i=oU(n),a;if(n.output==="mathml")return EV(e,r,i,n.displayMode,!0);if(n.output==="html"){var s=eA(e,i);a=$e.makeSpan(["katex"],[s])}else{var l=EV(e,r,i,n.displayMode,!1),u=eA(e,i);a=$e.makeSpan(["katex"],[l,u])}return lU(a,n)},"buildTree"),XTe=o(function(e,r,n){var i=oU(n),a=eA(e,i),s=$e.makeSpan(["katex"],[a]);return lU(s,n)},"buildHTMLTree"),jTe={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},KTe=o(function(e){var r=new mt.MathNode("mo",[new mt.TextNode(jTe[e.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},"mathMLnode"),QTe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},ZTe=o(function(e){return e.type==="ordgroup"?e.body.length:1},"groupLength"),JTe=o(function(e,r){function n(){var l=4e5,u=e.label.slice(1);if(er.contains(["widehat","widecheck","widetilde","utilde"],u)){var h=e,f=ZTe(h.base),d,p,m;if(f>5)u==="widehat"||u==="widecheck"?(d=420,l=2364,m=.42,p=u+"4"):(d=312,l=2340,m=.34,p="tilde4");else{var g=[1,1,2,2,3,3][f];u==="widehat"||u==="widecheck"?(l=[0,1062,2364,2364,2364][g],d=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p=u+g):(l=[0,600,1033,2339,2340][g],d=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var y=new Zl(p),v=new dl([y],{width:"100%",height:St(m),viewBox:"0 0 "+l+" "+d,preserveAspectRatio:"none"});return{span:$e.makeSvgSpan([],[v],r),minWidth:0,height:m}}else{var x=[],b=QTe[u],[T,S,w]=b,k=w/1e3,A=T.length,C,R;if(A===1){var I=b[3];C=["hide-tail"],R=[I]}else if(A===2)C=["halfarrow-left","halfarrow-right"],R=["xMinYMin","xMaxYMin"];else if(A===3)C=["brace-left","brace-center","brace-right"],R=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+A+" children.");for(var L=0;L0&&(i.style.minWidth=St(a)),i},"svgSpan"),ewe=o(function(e,r,n,i,a){var s,l=e.height+e.depth+n+i;if(/fbox|color|angl/.test(r)){if(s=$e.makeSpan(["stretchy",r],[],a),r==="fbox"){var u=a.color&&a.getColor();u&&(s.style.borderColor=u)}}else{var h=[];/^[bx]cancel$/.test(r)&&h.push(new Qy({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&h.push(new Qy({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var f=new dl(h,{width:"100%",height:St(l)});s=$e.makeSvgSpan([],[f],a)}return s.height=l,s.style.height=St(l),s},"encloseSpan"),pu={encloseSpan:ewe,mathMLnode:KTe,svgSpan:JTe};o(Tr,"assertNodeType");o(fA,"assertSymbolNodeType");o(D3,"checkSymbolNodeType");dA=o((t,e)=>{var r,n,i;t&&t.type==="supsub"?(n=Tr(t.base,"accent"),r=n.base,t.base=r,i=ETe(Hr(t,e)),t.base=n):(n=Tr(t,"accent"),r=n.base);var a=Hr(r,e.havingCrampedStyle()),s=n.isShifty&&er.isCharacterBox(r),l=0;if(s){var u=er.getBaseElem(r),h=Hr(u,e.havingCrampedStyle());l=xV(h).skew}var f=n.label==="\\c",d=f?a.height+a.depth:Math.min(a.height,e.fontMetrics().xHeight),p;if(n.isStretchy)p=pu.svgSpan(n,e),p=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+St(2*l)+")",marginLeft:St(2*l)}:void 0}]},e);else{var m,g;n.label==="\\vec"?(m=$e.staticSvg("vec",e),g=$e.svgData.vec[1]):(m=$e.makeOrd({mode:n.mode,text:n.label},e,"textord"),m=xV(m),m.italic=0,g=m.width,f&&(d+=m.depth)),p=$e.makeSpan(["accent-body"],[m]);var y=n.label==="\\textcircled";y&&(p.classes.push("accent-full"),d=a.height);var v=l;y||(v-=g/2),p.style.left=St(v),n.label==="\\textcircled"&&(p.style.top=".2em"),p=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-d},{type:"elem",elem:p}]},e)}var x=$e.makeSpan(["mord","accent"],[p],e);return i?(i.children[0]=x,i.height=Math.max(x.height,i.height),i.classes[0]="mord",i):x},"htmlBuilder$a"),cU=o((t,e)=>{var r=t.isStretchy?pu.mathMLnode(t.label):new mt.MathNode("mo",[Lo(t.label,t.mode)]),n=new mt.MathNode("mover",[wn(t.base,e),r]);return n.setAttribute("accent","true"),n},"mathmlBuilder$9"),twe=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));Mt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:o((t,e)=>{var r=E3(e[0]),n=!twe.test(t.funcName),i=!n||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:n,isShifty:i,base:r}},"handler"),htmlBuilder:dA,mathmlBuilder:cU});Mt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:o((t,e)=>{var r=e[0],n=t.parser.mode;return n==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},"handler"),htmlBuilder:dA,mathmlBuilder:cU});Mt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},"handler"),htmlBuilder:o((t,e)=>{var r=Hr(t.base,e),n=pu.svgSpan(t,e),i=t.label==="\\utilde"?.12:0,a=$e.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]},e);return $e.makeSpan(["mord","accentunder"],[a],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=pu.mathMLnode(t.label),n=new mt.MathNode("munder",[wn(t.base,e),r]);return n.setAttribute("accentunder","true"),n},"mathmlBuilder")});m3=o(t=>{var e=new mt.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e},"paddedNode");Mt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n,funcName:i}=t;return{type:"xArrow",mode:n.mode,label:i,body:e[0],below:r[0]}},htmlBuilder(t,e){var r=e.style,n=e.havingStyle(r.sup()),i=$e.wrapFragment(Hr(t.body,n,e),e),a=t.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var s;t.below&&(n=e.havingStyle(r.sub()),s=$e.wrapFragment(Hr(t.below,n,e),e),s.classes.push(a+"-arrow-pad"));var l=pu.svgSpan(t,e),u=-e.fontMetrics().axisHeight+.5*l.height,h=-e.fontMetrics().axisHeight-.5*l.height-.111;(i.depth>.25||t.label==="\\xleftequilibrium")&&(h-=i.depth);var f;if(s){var d=-e.fontMetrics().axisHeight+s.height+.5*l.height+.111;f=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u},{type:"elem",elem:s,shift:d}]},e)}else f=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u}]},e);return f.children[0].children[0].children[1].classes.push("svg-align"),$e.makeSpan(["mrel","x-arrow"],[f],e)},mathmlBuilder(t,e){var r=pu.mathMLnode(t.label);r.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(t.body){var i=m3(wn(t.body,e));if(t.below){var a=m3(wn(t.below,e));n=new mt.MathNode("munderover",[r,a,i])}else n=new mt.MathNode("mover",[r,i])}else if(t.below){var s=m3(wn(t.below,e));n=new mt.MathNode("munder",[r,s])}else n=m3(),n=new mt.MathNode("mover",[r,n]);return n}});rwe=$e.makeSpan;o(uU,"htmlBuilder$9");o(hU,"mathmlBuilder$8");Mt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:gi(i),isCharacterBox:er.isCharacterBox(i)}},htmlBuilder:uU,mathmlBuilder:hU});L3=o(t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"},"binrelClass");Mt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:r}=t;return{type:"mclass",mode:r.mode,mclass:L3(e[0]),body:gi(e[1]),isCharacterBox:er.isCharacterBox(e[1])}}});Mt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:r,funcName:n}=t,i=e[1],a=e[0],s;n!=="\\stackrel"?s=L3(i):s="mrel";var l={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:gi(i)},u={type:"supsub",mode:a.mode,base:l,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[u],isCharacterBox:er.isCharacterBox(u)}},htmlBuilder:uU,mathmlBuilder:hU});Mt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"pmb",mode:r.mode,mclass:L3(e[0]),body:gi(e[0])}},htmlBuilder(t,e){var r=Ii(t.body,e,!0),n=$e.makeSpan([t.mclass],r,e);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(t,e){var r=As(t.body,e),n=new mt.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});nwe={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},SV=o(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),CV=o(t=>t.type==="textord"&&t.text==="@","isStartOfArrow"),iwe=o((t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e,"isLabelEnd");o(awe,"cdArrow");o(swe,"parseCD");Mt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:e[0]}},htmlBuilder(t,e){var r=e.havingStyle(e.style.sup()),n=$e.wrapFragment(Hr(t.label,r,e),e);return n.classes.push("cd-label-"+t.side),n.style.bottom=St(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(t,e){var r=new mt.MathNode("mrow",[wn(t.label,e)]);return r=new mt.MathNode("mpadded",[r]),r.setAttribute("width","0"),t.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new mt.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Mt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:r}=t;return{type:"cdlabelparent",mode:r.mode,fragment:e[0]}},htmlBuilder(t,e){var r=$e.wrapFragment(Hr(t.fragment,e),e);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(t,e){return new mt.MathNode("mrow",[wn(t.fragment,e)])}});Mt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:r}=t,n=Tr(e[0],"ordgroup"),i=n.body,a="",s=0;s=1114111)throw new gt("\\@char with invalid code point "+a);return u<=65535?h=String.fromCharCode(u):(u-=65536,h=String.fromCharCode((u>>10)+55296,(u&1023)+56320)),{type:"textord",mode:r.mode,text:h}}});fU=o((t,e)=>{var r=Ii(t.body,e.withColor(t.color),!1);return $e.makeFragment(r)},"htmlBuilder$8"),dU=o((t,e)=>{var r=As(t.body,e.withColor(t.color)),n=new mt.MathNode("mstyle",r);return n.setAttribute("mathcolor",t.color),n},"mathmlBuilder$7");Mt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:r}=t,n=Tr(e[0],"color-token").color,i=e[1];return{type:"color",mode:r.mode,color:n,body:gi(i)}},htmlBuilder:fU,mathmlBuilder:dU});Mt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:r,breakOnTokenText:n}=t,i=Tr(e[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:fU,mathmlBuilder:dU});Mt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,r){var{parser:n}=t,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&Tr(i,"size").value}},htmlBuilder(t,e){var r=$e.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=St(ii(t.size,e)))),r},mathmlBuilder(t,e){var r=new mt.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",St(ii(t.size,e)))),r}});rA={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},pU=o(t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new gt("Expected a control sequence",t);return e},"checkControlSequence"),owe=o(t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},"getRHS"),mU=o((t,e,r,n)=>{var i=t.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!t.gullet.isExpandable(r.text)}),t.gullet.macros.set(e,i,n)},"letCommand");Mt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:r}=t;e.consumeSpaces();var n=e.fetch();if(rA[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=rA[n.text]),Tr(e.parseFunction(),"internal");throw new gt("Invalid token after macro prefix",n)}});Mt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=e.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new gt("Expected a control sequence",n);for(var a=0,s,l=[[]];e.gullet.future().text!=="{";)if(n=e.gullet.popToken(),n.text==="#"){if(e.gullet.future().text==="{"){s=e.gullet.future(),l[a].push("{");break}if(n=e.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new gt('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new gt('Argument number "'+n.text+'" out of order');a++,l.push([])}else{if(n.text==="EOF")throw new gt("Expected a macro definition");l[a].push(n.text)}var{tokens:u}=e.gullet.consumeArg();return s&&u.unshift(s),(r==="\\edef"||r==="\\xdef")&&(u=e.gullet.expandTokens(u),u.reverse()),e.gullet.macros.set(i,{tokens:u,numArgs:a,delimiters:l},r===rA[r]),{type:"internal",mode:e.mode}}});Mt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=pU(e.gullet.popToken());e.gullet.consumeSpaces();var i=owe(e);return mU(e,n,i,r==="\\\\globallet"),{type:"internal",mode:e.mode}}});Mt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=pU(e.gullet.popToken()),i=e.gullet.popToken(),a=e.gullet.popToken();return mU(e,n,a,r==="\\\\globalfuture"),e.gullet.pushToken(a),e.gullet.pushToken(i),{type:"internal",mode:e.mode}}});qy=o(function(e,r,n){var i=Nn.math[e]&&Nn.math[e].replace,a=lA(i||e,r,n);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+r+".");return a},"getMetrics"),pA=o(function(e,r,n,i){var a=n.havingBaseStyle(r),s=$e.makeSpan(i.concat(a.sizingClasses(n)),[e],n),l=a.sizeMultiplier/n.sizeMultiplier;return s.height*=l,s.depth*=l,s.maxFontSize=a.sizeMultiplier,s},"styleWrap"),gU=o(function(e,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=St(a),e.height-=a,e.depth+=a},"centerSpan"),lwe=o(function(e,r,n,i,a,s){var l=$e.makeSymbol(e,"Main-Regular",a,i),u=pA(l,r,i,s);return n&&gU(u,i,r),u},"makeSmallDelim"),cwe=o(function(e,r,n,i){return $e.makeSymbol(e,"Size"+r+"-Regular",n,i)},"mathrmSize"),yU=o(function(e,r,n,i,a,s){var l=cwe(e,r,a,i),u=pA($e.makeSpan(["delimsizing","size"+r],[l],i),nr.TEXT,i,s);return n&&gU(u,i,nr.TEXT),u},"makeLargeDelim"),z7=o(function(e,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=$e.makeSpan(["delimsizinginner",i],[$e.makeSpan([],[$e.makeSymbol(e,r,n)])]);return{type:"elem",elem:a}},"makeGlyphSpan"),G7=o(function(e,r,n){var i=Ql["Size4-Regular"][e.charCodeAt(0)]?Ql["Size4-Regular"][e.charCodeAt(0)][4]:Ql["Size1-Regular"][e.charCodeAt(0)][4],a=new Zl("inner",yTe(e,Math.round(1e3*r))),s=new dl([a],{width:St(i),height:St(r),style:"width:"+St(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),l=$e.makeSvgSpan([],[s],n);return l.height=r,l.style.height=St(r),l.style.width=St(i),{type:"elem",elem:l}},"makeInner"),nA=.008,g3={type:"kern",size:-1*nA},uwe=["|","\\lvert","\\rvert","\\vert"],hwe=["\\|","\\lVert","\\rVert","\\Vert"],vU=o(function(e,r,n,i,a,s){var l,u,h,f,d="",p=0;l=h=f=e,u=null;var m="Size1-Regular";e==="\\uparrow"?h=f="\u23D0":e==="\\Uparrow"?h=f="\u2016":e==="\\downarrow"?l=h="\u23D0":e==="\\Downarrow"?l=h="\u2016":e==="\\updownarrow"?(l="\\uparrow",h="\u23D0",f="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",h="\u2016",f="\\Downarrow"):er.contains(uwe,e)?(h="\u2223",d="vert",p=333):er.contains(hwe,e)?(h="\u2225",d="doublevert",p=556):e==="["||e==="\\lbrack"?(l="\u23A1",h="\u23A2",f="\u23A3",m="Size4-Regular",d="lbrack",p=667):e==="]"||e==="\\rbrack"?(l="\u23A4",h="\u23A5",f="\u23A6",m="Size4-Regular",d="rbrack",p=667):e==="\\lfloor"||e==="\u230A"?(h=l="\u23A2",f="\u23A3",m="Size4-Regular",d="lfloor",p=667):e==="\\lceil"||e==="\u2308"?(l="\u23A1",h=f="\u23A2",m="Size4-Regular",d="lceil",p=667):e==="\\rfloor"||e==="\u230B"?(h=l="\u23A5",f="\u23A6",m="Size4-Regular",d="rfloor",p=667):e==="\\rceil"||e==="\u2309"?(l="\u23A4",h=f="\u23A5",m="Size4-Regular",d="rceil",p=667):e==="("||e==="\\lparen"?(l="\u239B",h="\u239C",f="\u239D",m="Size4-Regular",d="lparen",p=875):e===")"||e==="\\rparen"?(l="\u239E",h="\u239F",f="\u23A0",m="Size4-Regular",d="rparen",p=875):e==="\\{"||e==="\\lbrace"?(l="\u23A7",u="\u23A8",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="\u23AB",u="\u23AC",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(l="\u23A7",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(l="\u23AB",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(l="\u23A7",f="\u23AD",h="\u23AA",m="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(l="\u23AB",f="\u23A9",h="\u23AA",m="Size4-Regular");var g=qy(l,m,a),y=g.height+g.depth,v=qy(h,m,a),x=v.height+v.depth,b=qy(f,m,a),T=b.height+b.depth,S=0,w=1;if(u!==null){var k=qy(u,m,a);S=k.height+k.depth,w=2}var A=y+T+S,C=Math.max(0,Math.ceil((r-A)/(w*x))),R=A+C*w*x,I=i.fontMetrics().axisHeight;n&&(I*=i.sizeMultiplier);var L=R/2-I,E=[];if(d.length>0){var D=R-y-T,_=Math.round(R*1e3),O=vTe(d,Math.round(D*1e3)),M=new Zl(d,O),P=(p/1e3).toFixed(3)+"em",B=(_/1e3).toFixed(3)+"em",F=new dl([M],{width:P,height:B,viewBox:"0 0 "+p+" "+_}),G=$e.makeSvgSpan([],[F],i);G.height=_/1e3,G.style.width=P,G.style.height=B,E.push({type:"elem",elem:G})}else{if(E.push(z7(f,m,a)),E.push(g3),u===null){var $=R-y-T+2*nA;E.push(G7(h,$,i))}else{var U=(R-y-T-S)/2+2*nA;E.push(G7(h,U,i)),E.push(g3),E.push(z7(u,m,a)),E.push(g3),E.push(G7(h,U,i))}E.push(g3),E.push(z7(l,m,a))}var j=i.havingBaseStyle(nr.TEXT),te=$e.makeVList({positionType:"bottom",positionData:L,children:E},j);return pA($e.makeSpan(["delimsizing","mult"],[te],j),nr.TEXT,i,s)},"makeStackedDelim"),V7=80,U7=.08,H7=o(function(e,r,n,i,a){var s=gTe(e,i,n),l=new Zl(e,s),u=new dl([l],{width:"400em",height:St(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return $e.makeSvgSpan(["hide-tail"],[u],a)},"sqrtSvg"),fwe=o(function(e,r){var n=r.havingBaseSizing(),i=wU("\\surd",e*n.sizeMultiplier,TU,n),a=n.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),l,u=0,h=0,f=0,d;return i.type==="small"?(f=1e3+1e3*s+V7,e<1?a=1:e<1.4&&(a=.7),u=(1+s+U7)/a,h=(1+s)/a,l=H7("sqrtMain",u,f,s,r),l.style.minWidth="0.853em",d=.833/a):i.type==="large"?(f=(1e3+V7)*Yy[i.size],h=(Yy[i.size]+s)/a,u=(Yy[i.size]+s+U7)/a,l=H7("sqrtSize"+i.size,u,f,s,r),l.style.minWidth="1.02em",d=1/a):(u=e+s+U7,h=e+s,f=Math.floor(1e3*e+s)+V7,l=H7("sqrtTall",u,f,s,r),l.style.minWidth="0.742em",d=1.056),l.height=h,l.style.height=St(u),{span:l,advanceWidth:d,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},"makeSqrtImage"),xU=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"],dwe=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"],bU=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Yy=[0,1.2,1.8,2.4,3],pwe=o(function(e,r,n,i,a){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),er.contains(xU,e)||er.contains(bU,e))return yU(e,r,!1,n,i,a);if(er.contains(dwe,e))return vU(e,Yy[r],!1,n,i,a);throw new gt("Illegal delimiter: '"+e+"'")},"makeSizedDelim"),mwe=[{type:"small",style:nr.SCRIPTSCRIPT},{type:"small",style:nr.SCRIPT},{type:"small",style:nr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],gwe=[{type:"small",style:nr.SCRIPTSCRIPT},{type:"small",style:nr.SCRIPT},{type:"small",style:nr.TEXT},{type:"stack"}],TU=[{type:"small",style:nr.SCRIPTSCRIPT},{type:"small",style:nr.SCRIPT},{type:"small",style:nr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],ywe=o(function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},"delimTypeToFont"),wU=o(function(e,r,n,i){for(var a=Math.min(2,3-i.style.size),s=a;sr)return n[s]}return n[n.length-1]},"traverseSequence"),kU=o(function(e,r,n,i,a,s){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var l;er.contains(bU,e)?l=mwe:er.contains(xU,e)?l=TU:l=gwe;var u=wU(e,r,l,i);return u.type==="small"?lwe(e,u.style,n,i,a,s):u.type==="large"?yU(e,u.size,n,i,a,s):vU(e,r,n,i,a,s)},"makeCustomSizedDelim"),vwe=o(function(e,r,n,i,a,s){var l=i.fontMetrics().axisHeight*i.sizeMultiplier,u=901,h=5/i.fontMetrics().ptPerEm,f=Math.max(r-l,n+l),d=Math.max(f/500*u,2*f-h);return kU(e,d,!0,i,a,s)},"makeLeftRightDelim"),fu={sqrtImage:fwe,sizedDelim:pwe,sizeToMaxHeight:Yy,customSizedDelim:kU,leftRightDelim:vwe},AV={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},xwe=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];o(R3,"checkDelimiter");Mt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:o((t,e)=>{var r=R3(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:AV[t.funcName].size,mclass:AV[t.funcName].mclass,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>t.delim==="."?$e.makeSpan([t.mclass]):fu.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),"htmlBuilder"),mathmlBuilder:o(t=>{var e=[];t.delim!=="."&&e.push(Lo(t.delim,t.mode));var r=new mt.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=St(fu.sizeToMaxHeight[t.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r},"mathmlBuilder")});o(_V,"assertParsed");Mt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=t.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new gt("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:R3(e[0],t).text,color:r}},"handler")});Mt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=R3(e[0],t),n=t.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=Tr(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},"handler"),htmlBuilder:o((t,e)=>{_V(t);for(var r=Ii(t.body,e,!0,["mopen","mclose"]),n=0,i=0,a=!1,s=0;s{_V(t);var r=As(t.body,e);if(t.left!=="."){var n=new mt.MathNode("mo",[Lo(t.left,t.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(t.right!=="."){var i=new mt.MathNode("mo",[Lo(t.right,t.mode)]);i.setAttribute("fence","true"),t.rightColor&&i.setAttribute("mathcolor",t.rightColor),r.push(i)}return uA(r)},"mathmlBuilder")});Mt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=R3(e[0],t);if(!t.parser.leftrightDepth)throw new gt("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>{var r;if(t.delim===".")r=Zy(e,[]);else{r=fu.sizedDelim(t.delim,1,e,t.mode,[]);var n={delim:t.delim,options:e};r.isMiddle=n}return r},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=t.delim==="\\vert"||t.delim==="|"?Lo("|","text"):Lo(t.delim,t.mode),n=new mt.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n},"mathmlBuilder")});mA=o((t,e)=>{var r=$e.wrapFragment(Hr(t.body,e),e),n=t.label.slice(1),i=e.sizeMultiplier,a,s=0,l=er.isCharacterBox(t.body);if(n==="sout")a=$e.makeSpan(["stretchy","sout"]),a.height=e.fontMetrics().defaultRuleThickness/i,s=-.5*e.fontMetrics().xHeight;else if(n==="phase"){var u=ii({number:.6,unit:"pt"},e),h=ii({number:.35,unit:"ex"},e),f=e.havingBaseSizing();i=i/f.sizeMultiplier;var d=r.height+r.depth+u+h;r.style.paddingLeft=St(d/2+u);var p=Math.floor(1e3*d*i),m=pTe(p),g=new dl([new Zl("phase",m)],{width:"400em",height:St(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});a=$e.makeSvgSpan(["hide-tail"],[g],e),a.style.height=St(d),s=r.depth+u+h}else{/cancel/.test(n)?l||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var y=0,v=0,x=0;/box/.test(n)?(x=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),y=e.fontMetrics().fboxsep+(n==="colorbox"?0:x),v=y):n==="angl"?(x=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),y=4*x,v=Math.max(0,.25-r.depth)):(y=l?.2:0,v=y),a=pu.encloseSpan(r,n,y,v,e),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=St(x)):n==="angl"&&x!==.049&&(a.style.borderTopWidth=St(x),a.style.borderRightWidth=St(x)),s=r.depth+v,t.backgroundColor&&(a.style.backgroundColor=t.backgroundColor,t.borderColor&&(a.style.borderColor=t.borderColor))}var b;if(t.backgroundColor)b=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]},e);else{var T=/cancel|phase/.test(n)?["svg-align"]:[];b=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:T}]},e)}return/cancel/.test(n)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(n)&&!l?$e.makeSpan(["mord","cancel-lap"],[b],e):$e.makeSpan(["mord"],[b],e)},"htmlBuilder$7"),gA=o((t,e)=>{var r=0,n=new mt.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[wn(t.body,e)]);switch(t.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),t.label==="\\fcolorbox"){var i=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);n.setAttribute("style","border: "+i+"em solid "+String(t.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&n.setAttribute("mathbackground",t.backgroundColor),n},"mathmlBuilder$6");Mt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=Tr(e[0],"color-token").color,s=e[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:s}},htmlBuilder:mA,mathmlBuilder:gA});Mt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=Tr(e[0],"color-token").color,s=Tr(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,borderColor:a,body:l}},htmlBuilder:mA,mathmlBuilder:gA});Mt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\fbox",body:e[0]}}});Mt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:mA,mathmlBuilder:gA});Mt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\angl",body:e[0]}}});EU={};o(Jl,"defineEnvironment");SU={};o(ce,"defineMacro");o(DV,"getHLines");N3=o(t=>{var e=t.parser.settings;if(!e.displayMode)throw new gt("{"+t.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext");o(yA,"getAutoTag");o(wh,"parseArray");o(vA,"dCellStyle");ec=o(function(e,r){var n,i,a=e.body.length,s=e.hLinesBeforeRow,l=0,u=new Array(a),h=[],f=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),d=1/r.fontMetrics().ptPerEm,p=5*d;if(e.colSeparationType&&e.colSeparationType==="small"){var m=r.havingStyle(nr.SCRIPT).sizeMultiplier;p=.2778*(m/r.sizeMultiplier)}var g=e.colSeparationType==="CD"?ii({number:3,unit:"ex"},r):12*d,y=3*d,v=e.arraystretch*g,x=.7*v,b=.3*v,T=0;function S(q){for(var Ve=0;Ve0&&(T+=.25),h.push({pos:T,isDashed:q[Ve]})}for(o(S,"setHLinePos"),S(s[0]),n=0;n0&&(L+=b,Aq))for(n=0;n=l)){var J=void 0;(i>0||e.hskipBeforeAndAfter)&&(J=er.deflt(U.pregap,p),J!==0&&(O=$e.makeSpan(["arraycolsep"],[]),O.style.width=St(J),_.push(O)));var ue=[];for(n=0;n0){for(var K=$e.makeLineSpan("hline",r,f),ae=$e.makeLineSpan("hdashline",r,f),Q=[{type:"elem",elem:u,shift:0}];h.length>0;){var de=h.pop(),ne=de.pos-E;de.isDashed?Q.push({type:"elem",elem:ae,shift:ne}):Q.push({type:"elem",elem:K,shift:ne})}u=$e.makeVList({positionType:"individualShift",children:Q},r)}if(P.length===0)return $e.makeSpan(["mord"],[u],r);var Te=$e.makeVList({positionType:"individualShift",children:P},r);return Te=$e.makeSpan(["tag"],[Te],r),$e.makeFragment([u,Te])},"htmlBuilder"),bwe={c:"center ",l:"left ",r:"right "},tc=o(function(e,r){for(var n=[],i=new mt.MathNode("mtd",[],["mtr-glue"]),a=new mt.MathNode("mtd",[],["mml-eqn-num"]),s=0;s0){var g=e.cols,y="",v=!1,x=0,b=g.length;g[0].type==="separator"&&(p+="top ",x=1),g[g.length-1].type==="separator"&&(p+="bottom ",b-=1);for(var T=x;T0?"left ":"",p+=C[C.length-1].length>0?"right ":"";for(var R=1;R-1?"alignat":"align",a=e.envName==="split",s=wh(e.parser,{cols:n,addJot:!0,autoTag:a?void 0:yA(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:a?2:void 0,leqno:e.parser.settings.leqno},"display"),l,u=0,h={type:"ordgroup",mode:e.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var f="",d=0;d0&&m&&(v=1),n[g]={type:"align",align:y,pregap:v,postgap:0}}return s.colSeparationType=m?"align":"alignat",s},"alignedHandler");Jl({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var r=D3(e[0]),n=r?[e[0]]:Tr(e[0],"ordgroup").body,i=n.map(function(s){var l=fA(s),u=l.text;if("lcr".indexOf(u)!==-1)return{type:"align",align:u};if(u==="|")return{type:"separator",separator:"|"};if(u===":")return{type:"separator",separator:":"};throw new gt("Unknown column alignment: "+u,s)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return wh(t.parser,a,vA(t.envName))},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(t.envName.charAt(t.envName.length-1)==="*"){var i=t.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,"lcr".indexOf(r)===-1)throw new gt("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=wh(t.parser,n,vA(t.envName)),s=Math.max(0,...a.body.map(l=>l.length));return a.cols=new Array(s).fill({type:"align",align:r}),e?{type:"leftright",mode:t.mode,body:[a],left:e[0],right:e[1],rightColor:void 0}:a},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},r=wh(t.parser,e,"script");return r.colSeparationType="small",r},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var r=D3(e[0]),n=r?[e[0]]:Tr(e[0],"ordgroup").body,i=n.map(function(s){var l=fA(s),u=l.text;if("lc".indexOf(u)!==-1)return{type:"align",align:u};throw new gt("Unknown column alignment: "+u,s)});if(i.length>1)throw new gt("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5};if(a=wh(t.parser,a,"script"),a.body.length>0&&a.body[0].length>1)throw new gt("{subarray} can contain only one column");return a},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=wh(t.parser,e,vA(t.envName));return{type:"leftright",mode:t.mode,body:[r],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:CU,htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){er.contains(["gather","gather*"],t.envName)&&N3(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:yA(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return wh(t.parser,e,"display")},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:CU,htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){N3(t);var e={autoTag:yA(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return wh(t.parser,e,"display")},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["CD"],props:{numArgs:0},handler(t){return N3(t),swe(t.parser)},htmlBuilder:ec,mathmlBuilder:tc});ce("\\nonumber","\\gdef\\@eqnsw{0}");ce("\\notag","\\nonumber");Mt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new gt(t.funcName+" valid only within array environment")}});LV=EU;Mt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];if(i.type!=="ordgroup")throw new gt("Invalid environment name",i);for(var a="",s=0;s{var r=t.font,n=e.withFont(r);return Hr(t.body,n)},"htmlBuilder$5"),_U=o((t,e)=>{var r=t.font,n=e.withFont(r);return wn(t.body,n)},"mathmlBuilder$4"),RV={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Mt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=E3(e[0]),a=n;return a in RV&&(a=RV[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},"handler"),htmlBuilder:AU,mathmlBuilder:_U});Mt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r}=t,n=e[0],i=er.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:L3(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:i}},"handler")});Mt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n,breakOnTokenText:i}=t,{mode:a}=r,s=r.parseExpression(!0,i),l="math"+n.slice(1);return{type:"font",mode:a,font:l,body:{type:"ordgroup",mode:r.mode,body:s}}},"handler"),htmlBuilder:AU,mathmlBuilder:_U});DU=o((t,e)=>{var r=e;return t==="display"?r=r.id>=nr.SCRIPT.id?r.text():nr.DISPLAY:t==="text"&&r.size===nr.DISPLAY.size?r=nr.TEXT:t==="script"?r=nr.SCRIPT:t==="scriptscript"&&(r=nr.SCRIPTSCRIPT),r},"adjustStyle"),xA=o((t,e)=>{var r=DU(t.size,e.style),n=r.fracNum(),i=r.fracDen(),a;a=e.havingStyle(n);var s=Hr(t.numer,a,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,u=3.5/e.fontMetrics().ptPerEm;s.height=s.height0?g=3*p:g=7*p,y=e.fontMetrics().denom1):(d>0?(m=e.fontMetrics().num2,g=p):(m=e.fontMetrics().num3,g=3*p),y=e.fontMetrics().denom2);var v;if(f){var b=e.fontMetrics().axisHeight;m-s.depth-(b+.5*d){var r=new mt.MathNode("mfrac",[wn(t.numer,e),wn(t.denom,e)]);if(!t.hasBarLine)r.setAttribute("linethickness","0px");else if(t.barSize){var n=ii(t.barSize,e);r.setAttribute("linethickness",St(n))}var i=DU(t.size,e.style);if(i.size!==e.style.size){r=new mt.MathNode("mstyle",[r]);var a=i.size===nr.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",a),r.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var s=[];if(t.leftDelim!=null){var l=new mt.MathNode("mo",[new mt.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),s.push(l)}if(s.push(r),t.rightDelim!=null){var u=new mt.MathNode("mo",[new mt.TextNode(t.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),s.push(u)}return uA(s)}return r},"mathmlBuilder$3");Mt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1],s,l=null,u=null,h="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,l="(",u=")";break;case"\\\\bracefrac":s=!1,l="\\{",u="\\}";break;case"\\\\brackfrac":s=!1,l="[",u="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:i,denom:a,hasBarLine:s,leftDelim:l,rightDelim:u,size:h,barSize:null}},"handler"),htmlBuilder:xA,mathmlBuilder:bA});Mt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:i,denom:a,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}},"handler")});Mt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:r,token:n}=t,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:i,token:n}}});NV=["display","text","script","scriptscript"],MV=o(function(e){var r=null;return e.length>0&&(r=e,r=r==="."?null:r),r},"delimFromValue");Mt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:r}=t,n=e[4],i=e[5],a=E3(e[0]),s=a.type==="atom"&&a.family==="open"?MV(a.text):null,l=E3(e[1]),u=l.type==="atom"&&l.family==="close"?MV(l.text):null,h=Tr(e[2],"size"),f,d=null;h.isBlank?f=!0:(d=h.value,f=d.number>0);var p="auto",m=e[3];if(m.type==="ordgroup"){if(m.body.length>0){var g=Tr(m.body[0],"textord");p=NV[Number(g.text)]}}else m=Tr(m,"textord"),p=NV[Number(m.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:f,barSize:d,leftDelim:s,rightDelim:u,size:p}},htmlBuilder:xA,mathmlBuilder:bA});Mt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:r,funcName:n,token:i}=t;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Tr(e[0],"size").value,token:i}}});Mt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=J5e(Tr(e[1],"infix").size),s=e[2],l=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:s,continued:!1,hasBarLine:l,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},"handler"),htmlBuilder:xA,mathmlBuilder:bA});LU=o((t,e)=>{var r=e.style,n,i;t.type==="supsub"?(n=t.sup?Hr(t.sup,e.havingStyle(r.sup()),e):Hr(t.sub,e.havingStyle(r.sub()),e),i=Tr(t.base,"horizBrace")):i=Tr(t,"horizBrace");var a=Hr(i.base,e.havingBaseStyle(nr.DISPLAY)),s=pu.svgSpan(i,e),l;if(i.isOver?(l=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=$e.makeVList({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),n){var u=$e.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e);i.isOver?l=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:.2},{type:"elem",elem:n}]},e):l=$e.makeVList({positionType:"bottom",positionData:u.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:u}]},e)}return $e.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e)},"htmlBuilder$3"),Twe=o((t,e)=>{var r=pu.mathMLnode(t.label);return new mt.MathNode(t.isOver?"mover":"munder",[wn(t.base,e),r])},"mathmlBuilder$2");Mt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:e[0]}},htmlBuilder:LU,mathmlBuilder:Twe});Mt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[1],i=Tr(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:gi(n)}:r.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.body,e,!1);return $e.makeAnchor(t.href,[],r,e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=Th(t.body,e);return r instanceof es||(r=new es("mrow",[r])),r.setAttribute("href",t.href),r},"mathmlBuilder")});Mt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=Tr(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a{var{parser:r,funcName:n,token:i}=t,a=Tr(e[0],"raw").string,s=e[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,u={};switch(n){case"\\htmlClass":u.class=a,l={command:"\\htmlClass",class:a};break;case"\\htmlId":u.id=a,l={command:"\\htmlId",id:a};break;case"\\htmlStyle":u.style=a,l={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var h=a.split(","),f=0;f{var r=Ii(t.body,e,!1),n=["enclosing"];t.attributes.class&&n.push(...t.attributes.class.trim().split(/\s+/));var i=$e.makeSpan(n,r,e);for(var a in t.attributes)a!=="class"&&t.attributes.hasOwnProperty(a)&&i.setAttribute(a,t.attributes[a]);return i},"htmlBuilder"),mathmlBuilder:o((t,e)=>Th(t.body,e),"mathmlBuilder")});Mt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"htmlmathml",mode:r.mode,html:gi(e[0]),mathml:gi(e[1])}},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.html,e,!1);return $e.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>Th(t.mathml,e),"mathmlBuilder")});q7=o(function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!r)throw new gt("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!jV(n))throw new gt("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n},"sizeData");Mt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:o((t,e,r)=>{var{parser:n}=t,i={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var u=Tr(r[0],"raw").string,h=u.split(","),f=0;f{var r=ii(t.height,e),n=0;t.totalheight.number>0&&(n=ii(t.totalheight,e)-r);var i=0;t.width.number>0&&(i=ii(t.width,e));var a={height:St(r+n)};i>0&&(a.width=St(i)),n>0&&(a.verticalAlign=St(-n));var s=new Q7(t.src,t.alt,a);return s.height=r,s.depth=n,s},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new mt.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var n=ii(t.height,e),i=0;if(t.totalheight.number>0&&(i=ii(t.totalheight,e)-n,r.setAttribute("valign",St(-i))),r.setAttribute("height",St(n+i)),t.width.number>0){var a=ii(t.width,e);r.setAttribute("width",St(a))}return r.setAttribute("src",t.src),r},"mathmlBuilder")});Mt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=Tr(e[0],"size");if(r.settings.strict){var a=n[1]==="m",s=i.value.unit==="mu";a?(s||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):s&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(t,e){return $e.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var r=ii(t.dimension,e);return new mt.SpaceNode(r)}});Mt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},"handler"),htmlBuilder:o((t,e)=>{var r;t.alignment==="clap"?(r=$e.makeSpan([],[Hr(t.body,e)]),r=$e.makeSpan(["inner"],[r],e)):r=$e.makeSpan(["inner"],[Hr(t.body,e)]);var n=$e.makeSpan(["fix"],[]),i=$e.makeSpan([t.alignment],[r,n],e),a=$e.makeSpan(["strut"]);return a.style.height=St(i.height+i.depth),i.depth&&(a.style.verticalAlign=St(-i.depth)),i.children.unshift(a),i=$e.makeSpan(["thinbox"],[i],e),$e.makeSpan(["mord","vbox"],[i],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new mt.MathNode("mpadded",[wn(t.body,e)]);if(t.alignment!=="rlap"){var n=t.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r},"mathmlBuilder")});Mt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:r,parser:n}=t,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",s=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:s}}});Mt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new gt("Mismatched "+t.funcName)}});IV=o((t,e)=>{switch(e.style.size){case nr.DISPLAY.size:return t.display;case nr.TEXT.size:return t.text;case nr.SCRIPT.size:return t.script;case nr.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}},"chooseMathStyle");Mt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"mathchoice",mode:r.mode,display:gi(e[0]),text:gi(e[1]),script:gi(e[2]),scriptscript:gi(e[3])}},"handler"),htmlBuilder:o((t,e)=>{var r=IV(t,e),n=Ii(r,e,!1);return $e.makeFragment(n)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=IV(t,e);return Th(r,e)},"mathmlBuilder")});RU=o((t,e,r,n,i,a,s)=>{t=$e.makeSpan([],[t]);var l=r&&er.isCharacterBox(r),u,h;if(e){var f=Hr(e,n.havingStyle(i.sup()),n);h={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-f.depth)}}if(r){var d=Hr(r,n.havingStyle(i.sub()),n);u={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-d.height)}}var p;if(h&&u){var m=n.fontMetrics().bigOpSpacing5+u.elem.height+u.elem.depth+u.kern+t.depth+s;p=$e.makeVList({positionType:"bottom",positionData:m,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:St(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:St(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(u){var g=t.height-s;p=$e.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:St(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t}]},n)}else if(h){var y=t.depth+s;p=$e.makeVList({positionType:"bottom",positionData:y,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:St(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else return t;var v=[p];if(u&&a!==0&&!l){var x=$e.makeSpan(["mspace"],[],n);x.style.marginRight=St(a),v.unshift(x)}return $e.makeSpan(["mop","op-limits"],v,n)},"assembleSupSub"),NU=["\\smallint"],C0=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=Tr(t.base,"op"),i=!0):a=Tr(t,"op");var s=e.style,l=!1;s.size===nr.DISPLAY.size&&a.symbol&&!er.contains(NU,a.name)&&(l=!0);var u;if(a.symbol){var h=l?"Size2-Regular":"Size1-Regular",f="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(f=a.name.slice(1),a.name=f==="oiint"?"\\iint":"\\iiint"),u=$e.makeSymbol(a.name,h,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),f.length>0){var d=u.italic,p=$e.staticSvg(f+"Size"+(l?"2":"1"),e);u=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:u,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},e),a.name="\\"+f,u.classes.unshift("mop"),u.italic=d}}else if(a.body){var m=Ii(a.body,e,!0);m.length===1&&m[0]instanceof Cs?(u=m[0],u.classes[0]="mop"):u=$e.makeSpan(["mop"],m,e)}else{for(var g=[],y=1;y{var r;if(t.symbol)r=new es("mo",[Lo(t.name,t.mode)]),er.contains(NU,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new es("mo",As(t.body,e));else{r=new es("mi",[new _o(t.name.slice(1))]);var n=new es("mo",[Lo("\u2061","text")]);t.parentIsSupSub?r=new es("mrow",[r,n]):r=sU([r,n])}return r},"mathmlBuilder$1"),wwe={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};Mt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=n;return i.length===1&&(i=wwe[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},"handler"),htmlBuilder:C0,mathmlBuilder:Jy});Mt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:gi(n)}},"handler"),htmlBuilder:C0,mathmlBuilder:Jy});kwe={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};Mt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:C0,mathmlBuilder:Jy});Mt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:C0,mathmlBuilder:Jy});Mt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t,n=r;return n.length===1&&(n=kwe[n]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:C0,mathmlBuilder:Jy});MU=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=Tr(t.base,"operatorname"),i=!0):a=Tr(t,"operatorname");var s;if(a.body.length>0){for(var l=a.body.map(d=>{var p=d.text;return typeof p=="string"?{type:"textord",mode:d.mode,text:p}:d}),u=Ii(l,e.withFont("mathrm"),!0),h=0;h{for(var r=As(t.body,e.withFont("mathrm")),n=!0,i=0;if.toText()).join("");r=[new mt.TextNode(l)]}var u=new mt.MathNode("mi",r);u.setAttribute("mathvariant","normal");var h=new mt.MathNode("mo",[Lo("\u2061","text")]);return t.parentIsSupSub?new mt.MathNode("mrow",[u,h]):mt.newDocumentFragment([u,h])},"mathmlBuilder");Mt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"operatorname",mode:r.mode,body:gi(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:MU,mathmlBuilder:Ewe});ce("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");dd({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?$e.makeFragment(Ii(t.body,e,!1)):$e.makeSpan(["mord"],Ii(t.body,e,!0),e)},mathmlBuilder(t,e){return Th(t.body,e,!0)}});Mt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:r}=t,n=e[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(t,e){var r=Hr(t.body,e.havingCrampedStyle()),n=$e.makeLineSpan("overline-line",e),i=e.fontMetrics().defaultRuleThickness,a=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]},e);return $e.makeSpan(["mord","overline"],[a],e)},mathmlBuilder(t,e){var r=new mt.MathNode("mo",[new mt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new mt.MathNode("mover",[wn(t.body,e),r]);return n.setAttribute("accent","true"),n}});Mt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"phantom",mode:r.mode,body:gi(n)}},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.body,e.withPhantom(),!1);return $e.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=As(t.body,e);return new mt.MathNode("mphantom",r)},"mathmlBuilder")});Mt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"hphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=$e.makeSpan([],[Hr(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n{var r=As(gi(t.body),e),n=new mt.MathNode("mphantom",r),i=new mt.MathNode("mpadded",[n]);return i.setAttribute("height","0px"),i.setAttribute("depth","0px"),i},"mathmlBuilder")});Mt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"vphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=$e.makeSpan(["inner"],[Hr(t.body,e.withPhantom())]),n=$e.makeSpan(["fix"],[]);return $e.makeSpan(["mord","rlap"],[r,n],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=As(gi(t.body),e),n=new mt.MathNode("mphantom",r),i=new mt.MathNode("mpadded",[n]);return i.setAttribute("width","0px"),i},"mathmlBuilder")});Mt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t,n=Tr(e[0],"size").value,i=e[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(t,e){var r=Hr(t.body,e),n=ii(t.dy,e);return $e.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){var r=new mt.MathNode("mpadded",[wn(t.body,e)]),n=t.dy.number+t.dy.unit;return r.setAttribute("voffset",n),r}});Mt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});Mt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,r){var{parser:n}=t,i=r[0],a=Tr(e[0],"size"),s=Tr(e[1],"size");return{type:"rule",mode:n.mode,shift:i&&Tr(i,"size").value,width:a.value,height:s.value}},htmlBuilder(t,e){var r=$e.makeSpan(["mord","rule"],[],e),n=ii(t.width,e),i=ii(t.height,e),a=t.shift?ii(t.shift,e):0;return r.style.borderRightWidth=St(n),r.style.borderTopWidth=St(i),r.style.bottom=St(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*e.sizeMultiplier,r},mathmlBuilder(t,e){var r=ii(t.width,e),n=ii(t.height,e),i=t.shift?ii(t.shift,e):0,a=e.color&&e.getColor()||"black",s=new mt.MathNode("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",St(r)),s.setAttribute("height",St(n));var l=new mt.MathNode("mpadded",[s]);return i>=0?l.setAttribute("height",St(i)):(l.setAttribute("height",St(i)),l.setAttribute("depth",St(-i))),l.setAttribute("voffset",St(i)),l}});o(IU,"sizingGroup");OV=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],Swe=o((t,e)=>{var r=e.havingSize(t.size);return IU(t.body,r,e)},"htmlBuilder");Mt({type:"sizing",names:OV,props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:OV.indexOf(n)+1,body:a}},"handler"),htmlBuilder:Swe,mathmlBuilder:o((t,e)=>{var r=e.havingSize(t.size),n=As(t.body,r),i=new mt.MathNode("mstyle",n);return i.setAttribute("mathsize",St(r.sizeMultiplier)),i},"mathmlBuilder")});Mt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:o((t,e,r)=>{var{parser:n}=t,i=!1,a=!1,s=r[0]&&Tr(r[0],"ordgroup");if(s)for(var l="",u=0;u{var r=$e.makeSpan([],[Hr(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var n=0;n{var r=new mt.MathNode("mpadded",[wn(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r},"mathmlBuilder")});Mt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n}=t,i=r[0],a=e[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(t,e){var r=Hr(t.body,e.havingCrampedStyle());r.height===0&&(r.height=e.fontMetrics().xHeight),r=$e.wrapFragment(r,e);var n=e.fontMetrics(),i=n.defaultRuleThickness,a=i;e.style.idr.height+r.depth+s&&(s=(s+d-r.height-r.depth)/2);var p=u.height-r.height-s-h;r.style.paddingLeft=St(f);var m=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:u},{type:"kern",size:h}]},e);if(t.index){var g=e.havingStyle(nr.SCRIPTSCRIPT),y=Hr(t.index,g,e),v=.6*(m.height-m.depth),x=$e.makeVList({positionType:"shift",positionData:-v,children:[{type:"elem",elem:y}]},e),b=$e.makeSpan(["root"],[x]);return $e.makeSpan(["mord","sqrt"],[b,m],e)}else return $e.makeSpan(["mord","sqrt"],[m],e)},mathmlBuilder(t,e){var{body:r,index:n}=t;return n?new mt.MathNode("mroot",[wn(r,e),wn(n,e)]):new mt.MathNode("msqrt",[wn(r,e)])}});PV={display:nr.DISPLAY,text:nr.TEXT,script:nr.SCRIPT,scriptscript:nr.SCRIPTSCRIPT};Mt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!0,r),s=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:s,body:a}},htmlBuilder(t,e){var r=PV[t.style],n=e.havingStyle(r).withFont("");return IU(t.body,n,e)},mathmlBuilder(t,e){var r=PV[t.style],n=e.havingStyle(r),i=As(t.body,n),a=new mt.MathNode("mstyle",i),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=s[t.style];return a.setAttribute("scriptlevel",l[0]),a.setAttribute("displaystyle",l[1]),a}});Cwe=o(function(e,r){var n=e.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===nr.DISPLAY.size||n.alwaysHandleSupSub);return i?C0:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===nr.DISPLAY.size||n.limits);return a?MU:null}else{if(n.type==="accent")return er.isCharacterBox(n.base)?dA:null;if(n.type==="horizBrace"){var s=!e.sub;return s===n.isOver?LU:null}else return null}else return null},"htmlBuilderDelegate");dd({type:"supsub",htmlBuilder(t,e){var r=Cwe(t,e);if(r)return r(t,e);var{base:n,sup:i,sub:a}=t,s=Hr(n,e),l,u,h=e.fontMetrics(),f=0,d=0,p=n&&er.isCharacterBox(n);if(i){var m=e.havingStyle(e.style.sup());l=Hr(i,m,e),p||(f=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/e.sizeMultiplier)}if(a){var g=e.havingStyle(e.style.sub());u=Hr(a,g,e),p||(d=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}var y;e.style===nr.DISPLAY?y=h.sup1:e.style.cramped?y=h.sup3:y=h.sup2;var v=e.sizeMultiplier,x=St(.5/h.ptPerEm/v),b=null;if(u){var T=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(s instanceof Cs||T)&&(b=St(-s.italic))}var S;if(l&&u){f=Math.max(f,y,l.depth+.25*h.xHeight),d=Math.max(d,h.sub2);var w=h.defaultRuleThickness,k=4*w;if(f-l.depth-(u.height-d)0&&(f+=A,d-=A)}var C=[{type:"elem",elem:u,shift:d,marginRight:x,marginLeft:b},{type:"elem",elem:l,shift:-f,marginRight:x}];S=$e.makeVList({positionType:"individualShift",children:C},e)}else if(u){d=Math.max(d,h.sub1,u.height-.8*h.xHeight);var R=[{type:"elem",elem:u,marginLeft:b,marginRight:x}];S=$e.makeVList({positionType:"shift",positionData:d,children:R},e)}else if(l)f=Math.max(f,y,l.depth+.25*h.xHeight),S=$e.makeVList({positionType:"shift",positionData:-f,children:[{type:"elem",elem:l,marginRight:x}]},e);else throw new Error("supsub must have either sup or sub.");var I=J7(s,"right")||"mord";return $e.makeSpan([I],[s,$e.makeSpan(["msupsub"],[S])],e)},mathmlBuilder(t,e){var r=!1,n,i;t.base&&t.base.type==="horizBrace"&&(i=!!t.sup,i===t.base.isOver&&(r=!0,n=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var a=[wn(t.base,e)];t.sub&&a.push(wn(t.sub,e)),t.sup&&a.push(wn(t.sup,e));var s;if(r)s=n?"mover":"munder";else if(t.sub)if(t.sup){var h=t.base;h&&h.type==="op"&&h.limits&&e.style===nr.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(e.style===nr.DISPLAY||h.limits)?s="munderover":s="msubsup"}else{var u=t.base;u&&u.type==="op"&&u.limits&&(e.style===nr.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||e.style===nr.DISPLAY)?s="munder":s="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===nr.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===nr.DISPLAY)?s="mover":s="msup"}return new mt.MathNode(s,a)}});dd({type:"atom",htmlBuilder(t,e){return $e.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var r=new mt.MathNode("mo",[Lo(t.text,t.mode)]);if(t.family==="bin"){var n=hA(t,e);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else t.family==="punct"?r.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&r.setAttribute("stretchy","false");return r}});OU={mi:"italic",mn:"normal",mtext:"normal"};dd({type:"mathord",htmlBuilder(t,e){return $e.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var r=new mt.MathNode("mi",[Lo(t.text,t.mode,e)]),n=hA(t,e)||"italic";return n!==OU[r.type]&&r.setAttribute("mathvariant",n),r}});dd({type:"textord",htmlBuilder(t,e){return $e.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var r=Lo(t.text,t.mode,e),n=hA(t,e)||"normal",i;return t.mode==="text"?i=new mt.MathNode("mtext",[r]):/[0-9]/.test(t.text)?i=new mt.MathNode("mn",[r]):t.text==="\\prime"?i=new mt.MathNode("mo",[r]):i=new mt.MathNode("mi",[r]),n!==OU[i.type]&&i.setAttribute("mathvariant",n),i}});W7={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Y7={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};dd({type:"spacing",htmlBuilder(t,e){if(Y7.hasOwnProperty(t.text)){var r=Y7[t.text].className||"";if(t.mode==="text"){var n=$e.makeOrd(t,e,"textord");return n.classes.push(r),n}else return $e.makeSpan(["mspace",r],[$e.mathsym(t.text,t.mode,e)],e)}else{if(W7.hasOwnProperty(t.text))return $e.makeSpan(["mspace",W7[t.text]],[],e);throw new gt('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var r;if(Y7.hasOwnProperty(t.text))r=new mt.MathNode("mtext",[new mt.TextNode("\xA0")]);else{if(W7.hasOwnProperty(t.text))return new mt.MathNode("mspace");throw new gt('Unknown type of space "'+t.text+'"')}return r}});BV=o(()=>{var t=new mt.MathNode("mtd",[]);return t.setAttribute("width","50%"),t},"pad");dd({type:"tag",mathmlBuilder(t,e){var r=new mt.MathNode("mtable",[new mt.MathNode("mtr",[BV(),new mt.MathNode("mtd",[Th(t.body,e)]),BV(),new mt.MathNode("mtd",[Th(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});FV={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},$V={"\\textbf":"textbf","\\textmd":"textmd"},Awe={"\\textit":"textit","\\textup":"textup"},zV=o((t,e)=>{var r=t.font;if(r){if(FV[r])return e.withTextFontFamily(FV[r]);if($V[r])return e.withTextFontWeight($V[r]);if(r==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(Awe[r])},"optionsWithFont");Mt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"text",mode:r.mode,body:gi(i),font:n}},htmlBuilder(t,e){var r=zV(t,e),n=Ii(t.body,r,!0);return $e.makeSpan(["mord","text"],n,r)},mathmlBuilder(t,e){var r=zV(t,e);return Th(t.body,r)}});Mt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"underline",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Hr(t.body,e),n=$e.makeLineSpan("underline-line",e),i=e.fontMetrics().defaultRuleThickness,a=$e.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]},e);return $e.makeSpan(["mord","underline"],[a],e)},mathmlBuilder(t,e){var r=new mt.MathNode("mo",[new mt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new mt.MathNode("munder",[wn(t.body,e),r]);return n.setAttribute("accentunder","true"),n}});Mt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"vcenter",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Hr(t.body,e),n=e.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return $e.makeVList({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){return new mt.MathNode("mpadded",[wn(t.body,e)],["vcenter"])}});Mt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,r){throw new gt("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var r=GV(t),n=[],i=e.havingStyle(e.style.text()),a=0;at.body.replace(/ /g,t.star?"\u2423":"\xA0"),"makeVerb"),xh=iU,PU=`[ \r + ]`,_we="\\\\[a-zA-Z@]+",Dwe="\\\\[^\uD800-\uDFFF]",Lwe="("+_we+")"+PU+"*",Rwe=`\\\\( |[ \r ]+ -?)[ \r ]*`,N7="[\u0300-\u036F]",z4e=new RegExp(N7+"+$"),G4e="("+AG+"+)|"+($4e+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(N7+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(N7+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+F4e)+("|"+B4e+")"),y3=class{static{o(this,"Lexer")}constructor(e,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=r,this.tokenRegex=new RegExp(G4e,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,r){this.catcodes[e]=r}lex(){var e=this.input,r=this.tokenRegex.lastIndex;if(r===e.length)return new So("EOF",new Xs(this,r,r));var n=this.tokenRegex.exec(e);if(n===null||n.index!==r)throw new gt("Unexpected character: '"+e[r]+"'",new So(e[r],new Xs(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=e.indexOf(` -`,this.tokenRegex.lastIndex);return a===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=a+1,this.lex()}return new So(i,new Xs(this,r,this.tokenRegex.lastIndex))}},M7=class{static{o(this,"Namespace")}constructor(e,r){e===void 0&&(e={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new gt("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var r in e)e.hasOwnProperty(r)&&(e[r]==null?delete this.current[r]:this.current[r]=e[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][e]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}r==null?delete this.current[e]:this.current[e]=r}},V4e=gG;fe("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});fe("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});fe("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});fe("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});fe("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var r=t.future();return e[0].length===1&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});fe("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");fe("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});Iz={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};fe("\\char",function(t){var e=t.popToken(),r,n="";if(e.text==="'")r=8,e=t.popToken();else if(e.text==='"')r=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")n=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new gt("\\char` missing argument");n=e.text.charCodeAt(0)}else r=10;if(r){if(n=Iz[e.text],n==null||n>=r)throw new gt("Invalid base-"+r+" digit "+e.text);for(var i;(i=Iz[t.future().text])!=null&&i{var n=t.consumeArg().tokens;if(n.length!==1)throw new gt("\\newcommand's first argument must be a macro name");var i=n[0].text,a=t.isDefined(i);if(a&&!e)throw new gt("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!r)throw new gt("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(n=t.consumeArg().tokens,n.length===1&&n[0].text==="["){for(var l="",u=t.expandNextToken();u.text!=="]"&&u.text!=="EOF";)l+=u.text,u=t.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new gt("Invalid number of arguments: "+l);s=parseInt(l),n=t.consumeArg().tokens}return t.macros.set(i,{tokens:n,numArgs:s}),""},"newcommand");fe("\\newcommand",t=>j7(t,!1,!0));fe("\\renewcommand",t=>j7(t,!0,!1));fe("\\providecommand",t=>j7(t,!0,!0));fe("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(r=>r.text).join("")),""});fe("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(r=>r.text).join("")),""});fe("\\show",t=>{var e=t.popToken(),r=e.text;return console.log(e,t.macros.get(r),hh[r],An.math[r],An.text[r]),""});fe("\\bgroup","{");fe("\\egroup","}");fe("~","\\nobreakspace");fe("\\lq","`");fe("\\rq","'");fe("\\aa","\\r a");fe("\\AA","\\r A");fe("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");fe("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");fe("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");fe("\u212C","\\mathscr{B}");fe("\u2130","\\mathscr{E}");fe("\u2131","\\mathscr{F}");fe("\u210B","\\mathscr{H}");fe("\u2110","\\mathscr{I}");fe("\u2112","\\mathscr{L}");fe("\u2133","\\mathscr{M}");fe("\u211B","\\mathscr{R}");fe("\u212D","\\mathfrak{C}");fe("\u210C","\\mathfrak{H}");fe("\u2128","\\mathfrak{Z}");fe("\\Bbbk","\\Bbb{k}");fe("\xB7","\\cdotp");fe("\\llap","\\mathllap{\\textrm{#1}}");fe("\\rlap","\\mathrlap{\\textrm{#1}}");fe("\\clap","\\mathclap{\\textrm{#1}}");fe("\\mathstrut","\\vphantom{(}");fe("\\underbar","\\underline{\\text{#1}}");fe("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');fe("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");fe("\\ne","\\neq");fe("\u2260","\\neq");fe("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");fe("\u2209","\\notin");fe("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");fe("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");fe("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");fe("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");fe("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");fe("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");fe("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");fe("\u27C2","\\perp");fe("\u203C","\\mathclose{!\\mkern-0.8mu!}");fe("\u220C","\\notni");fe("\u231C","\\ulcorner");fe("\u231D","\\urcorner");fe("\u231E","\\llcorner");fe("\u231F","\\lrcorner");fe("\xA9","\\copyright");fe("\xAE","\\textregistered");fe("\uFE0F","\\textregistered");fe("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');fe("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');fe("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');fe("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');fe("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}");fe("\u22EE","\\vdots");fe("\\varGamma","\\mathit{\\Gamma}");fe("\\varDelta","\\mathit{\\Delta}");fe("\\varTheta","\\mathit{\\Theta}");fe("\\varLambda","\\mathit{\\Lambda}");fe("\\varXi","\\mathit{\\Xi}");fe("\\varPi","\\mathit{\\Pi}");fe("\\varSigma","\\mathit{\\Sigma}");fe("\\varUpsilon","\\mathit{\\Upsilon}");fe("\\varPhi","\\mathit{\\Phi}");fe("\\varPsi","\\mathit{\\Psi}");fe("\\varOmega","\\mathit{\\Omega}");fe("\\substack","\\begin{subarray}{c}#1\\end{subarray}");fe("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");fe("\\boxed","\\fbox{$\\displaystyle{#1}$}");fe("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");fe("\\implies","\\DOTSB\\;\\Longrightarrow\\;");fe("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");Oz={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};fe("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in Oz?e=Oz[r]:(r.slice(0,4)==="\\not"||r in An.math&&Jt.contains(["bin","rel"],An.math[r].group))&&(e="\\dotsb"),e});K7={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};fe("\\dotso",function(t){var e=t.future().text;return e in K7?"\\ldots\\,":"\\ldots"});fe("\\dotsc",function(t){var e=t.future().text;return e in K7&&e!==","?"\\ldots\\,":"\\ldots"});fe("\\cdots",function(t){var e=t.future().text;return e in K7?"\\@cdots\\,":"\\@cdots"});fe("\\dotsb","\\cdots");fe("\\dotsm","\\cdots");fe("\\dotsi","\\!\\cdots");fe("\\dotsx","\\ldots\\,");fe("\\DOTSI","\\relax");fe("\\DOTSB","\\relax");fe("\\DOTSX","\\relax");fe("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");fe("\\,","\\tmspace+{3mu}{.1667em}");fe("\\thinspace","\\,");fe("\\>","\\mskip{4mu}");fe("\\:","\\tmspace+{4mu}{.2222em}");fe("\\medspace","\\:");fe("\\;","\\tmspace+{5mu}{.2777em}");fe("\\thickspace","\\;");fe("\\!","\\tmspace-{3mu}{.1667em}");fe("\\negthinspace","\\!");fe("\\negmedspace","\\tmspace-{4mu}{.2222em}");fe("\\negthickspace","\\tmspace-{5mu}{.277em}");fe("\\enspace","\\kern.5em ");fe("\\enskip","\\hskip.5em\\relax");fe("\\quad","\\hskip1em\\relax");fe("\\qquad","\\hskip2em\\relax");fe("\\tag","\\@ifstar\\tag@literal\\tag@paren");fe("\\tag@paren","\\tag@literal{({#1})}");fe("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new gt("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});fe("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");fe("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");fe("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");fe("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");fe("\\newline","\\\\\\relax");fe("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");_G=kt(jl["Main-Regular"][84][1]-.7*jl["Main-Regular"][65][1]);fe("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+_G+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");fe("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+_G+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");fe("\\hspace","\\@ifstar\\@hspacer\\@hspace");fe("\\@hspace","\\hskip #1\\relax");fe("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");fe("\\ordinarycolon",":");fe("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");fe("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');fe("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');fe("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');fe("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');fe("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');fe("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');fe("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');fe("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');fe("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');fe("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');fe("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');fe("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');fe("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');fe("\u2237","\\dblcolon");fe("\u2239","\\eqcolon");fe("\u2254","\\coloneqq");fe("\u2255","\\eqqcolon");fe("\u2A74","\\Coloneqq");fe("\\ratio","\\vcentcolon");fe("\\coloncolon","\\dblcolon");fe("\\colonequals","\\coloneqq");fe("\\coloncolonequals","\\Coloneqq");fe("\\equalscolon","\\eqqcolon");fe("\\equalscoloncolon","\\Eqqcolon");fe("\\colonminus","\\coloneq");fe("\\coloncolonminus","\\Coloneq");fe("\\minuscolon","\\eqcolon");fe("\\minuscoloncolon","\\Eqcolon");fe("\\coloncolonapprox","\\Colonapprox");fe("\\coloncolonsim","\\Colonsim");fe("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");fe("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");fe("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");fe("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");fe("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");fe("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");fe("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");fe("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");fe("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");fe("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");fe("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");fe("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");fe("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");fe("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");fe("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");fe("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");fe("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");fe("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");fe("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");fe("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");fe("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");fe("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");fe("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");fe("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");fe("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");fe("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");fe("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");fe("\\imath","\\html@mathml{\\@imath}{\u0131}");fe("\\jmath","\\html@mathml{\\@jmath}{\u0237}");fe("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");fe("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");fe("\u27E6","\\llbracket");fe("\u27E7","\\rrbracket");fe("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");fe("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");fe("\u2983","\\lBrace");fe("\u2984","\\rBrace");fe("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");fe("\u29B5","\\minuso");fe("\\darr","\\downarrow");fe("\\dArr","\\Downarrow");fe("\\Darr","\\Downarrow");fe("\\lang","\\langle");fe("\\rang","\\rangle");fe("\\uarr","\\uparrow");fe("\\uArr","\\Uparrow");fe("\\Uarr","\\Uparrow");fe("\\N","\\mathbb{N}");fe("\\R","\\mathbb{R}");fe("\\Z","\\mathbb{Z}");fe("\\alef","\\aleph");fe("\\alefsym","\\aleph");fe("\\Alpha","\\mathrm{A}");fe("\\Beta","\\mathrm{B}");fe("\\bull","\\bullet");fe("\\Chi","\\mathrm{X}");fe("\\clubs","\\clubsuit");fe("\\cnums","\\mathbb{C}");fe("\\Complex","\\mathbb{C}");fe("\\Dagger","\\ddagger");fe("\\diamonds","\\diamondsuit");fe("\\empty","\\emptyset");fe("\\Epsilon","\\mathrm{E}");fe("\\Eta","\\mathrm{H}");fe("\\exist","\\exists");fe("\\harr","\\leftrightarrow");fe("\\hArr","\\Leftrightarrow");fe("\\Harr","\\Leftrightarrow");fe("\\hearts","\\heartsuit");fe("\\image","\\Im");fe("\\infin","\\infty");fe("\\Iota","\\mathrm{I}");fe("\\isin","\\in");fe("\\Kappa","\\mathrm{K}");fe("\\larr","\\leftarrow");fe("\\lArr","\\Leftarrow");fe("\\Larr","\\Leftarrow");fe("\\lrarr","\\leftrightarrow");fe("\\lrArr","\\Leftrightarrow");fe("\\Lrarr","\\Leftrightarrow");fe("\\Mu","\\mathrm{M}");fe("\\natnums","\\mathbb{N}");fe("\\Nu","\\mathrm{N}");fe("\\Omicron","\\mathrm{O}");fe("\\plusmn","\\pm");fe("\\rarr","\\rightarrow");fe("\\rArr","\\Rightarrow");fe("\\Rarr","\\Rightarrow");fe("\\real","\\Re");fe("\\reals","\\mathbb{R}");fe("\\Reals","\\mathbb{R}");fe("\\Rho","\\mathrm{P}");fe("\\sdot","\\cdot");fe("\\sect","\\S");fe("\\spades","\\spadesuit");fe("\\sub","\\subset");fe("\\sube","\\subseteq");fe("\\supe","\\supseteq");fe("\\Tau","\\mathrm{T}");fe("\\thetasym","\\vartheta");fe("\\weierp","\\wp");fe("\\Zeta","\\mathrm{Z}");fe("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");fe("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");fe("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");fe("\\bra","\\mathinner{\\langle{#1}|}");fe("\\ket","\\mathinner{|{#1}\\rangle}");fe("\\braket","\\mathinner{\\langle{#1}\\rangle}");fe("\\Bra","\\left\\langle#1\\right|");fe("\\Ket","\\left|#1\\right\\rangle");DG=o(t=>e=>{var r=e.consumeArg().tokens,n=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.consumeArg().tokens,s=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var u=o(d=>p=>{t&&(p.macros.set("|",s),i.length&&p.macros.set("\\|",l));var m=d;if(!d&&i.length){var g=p.future();g.text==="|"&&(p.popToken(),m=!0)}return{tokens:m?i:n,numArgs:0}},"midMacro");e.macros.set("|",u(!1)),i.length&&e.macros.set("\\|",u(!0));var h=e.consumeArg().tokens,f=e.expandTokens([...a,...h,...r]);return e.macros.endGroup(),{tokens:f.reverse(),numArgs:0}},"braketHelper");fe("\\bra@ket",DG(!1));fe("\\bra@set",DG(!0));fe("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");fe("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");fe("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");fe("\\angln","{\\angl n}");fe("\\blue","\\textcolor{##6495ed}{#1}");fe("\\orange","\\textcolor{##ffa500}{#1}");fe("\\pink","\\textcolor{##ff00af}{#1}");fe("\\red","\\textcolor{##df0030}{#1}");fe("\\green","\\textcolor{##28ae7b}{#1}");fe("\\gray","\\textcolor{gray}{#1}");fe("\\purple","\\textcolor{##9d38bd}{#1}");fe("\\blueA","\\textcolor{##ccfaff}{#1}");fe("\\blueB","\\textcolor{##80f6ff}{#1}");fe("\\blueC","\\textcolor{##63d9ea}{#1}");fe("\\blueD","\\textcolor{##11accd}{#1}");fe("\\blueE","\\textcolor{##0c7f99}{#1}");fe("\\tealA","\\textcolor{##94fff5}{#1}");fe("\\tealB","\\textcolor{##26edd5}{#1}");fe("\\tealC","\\textcolor{##01d1c1}{#1}");fe("\\tealD","\\textcolor{##01a995}{#1}");fe("\\tealE","\\textcolor{##208170}{#1}");fe("\\greenA","\\textcolor{##b6ffb0}{#1}");fe("\\greenB","\\textcolor{##8af281}{#1}");fe("\\greenC","\\textcolor{##74cf70}{#1}");fe("\\greenD","\\textcolor{##1fab54}{#1}");fe("\\greenE","\\textcolor{##0d923f}{#1}");fe("\\goldA","\\textcolor{##ffd0a9}{#1}");fe("\\goldB","\\textcolor{##ffbb71}{#1}");fe("\\goldC","\\textcolor{##ff9c39}{#1}");fe("\\goldD","\\textcolor{##e07d10}{#1}");fe("\\goldE","\\textcolor{##a75a05}{#1}");fe("\\redA","\\textcolor{##fca9a9}{#1}");fe("\\redB","\\textcolor{##ff8482}{#1}");fe("\\redC","\\textcolor{##f9685d}{#1}");fe("\\redD","\\textcolor{##e84d39}{#1}");fe("\\redE","\\textcolor{##bc2612}{#1}");fe("\\maroonA","\\textcolor{##ffbde0}{#1}");fe("\\maroonB","\\textcolor{##ff92c6}{#1}");fe("\\maroonC","\\textcolor{##ed5fa6}{#1}");fe("\\maroonD","\\textcolor{##ca337c}{#1}");fe("\\maroonE","\\textcolor{##9e034e}{#1}");fe("\\purpleA","\\textcolor{##ddd7ff}{#1}");fe("\\purpleB","\\textcolor{##c6b9fc}{#1}");fe("\\purpleC","\\textcolor{##aa87ff}{#1}");fe("\\purpleD","\\textcolor{##7854ab}{#1}");fe("\\purpleE","\\textcolor{##543b78}{#1}");fe("\\mintA","\\textcolor{##f5f9e8}{#1}");fe("\\mintB","\\textcolor{##edf2df}{#1}");fe("\\mintC","\\textcolor{##e0e5cc}{#1}");fe("\\grayA","\\textcolor{##f6f7f7}{#1}");fe("\\grayB","\\textcolor{##f0f1f2}{#1}");fe("\\grayC","\\textcolor{##e3e5e6}{#1}");fe("\\grayD","\\textcolor{##d6d8da}{#1}");fe("\\grayE","\\textcolor{##babec2}{#1}");fe("\\grayF","\\textcolor{##888d93}{#1}");fe("\\grayG","\\textcolor{##626569}{#1}");fe("\\grayH","\\textcolor{##3b3e40}{#1}");fe("\\grayI","\\textcolor{##21242c}{#1}");fe("\\kaBlue","\\textcolor{##314453}{#1}");fe("\\kaGreen","\\textcolor{##71B307}{#1}");LG={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},I7=class{static{o(this,"MacroExpander")}constructor(e,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(e),this.macros=new M7(V4e,r.macros),this.mode=n,this.stack=[]}feed(e){this.lexer=new y3(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var r,n,i;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new So("EOF",n.loc)),this.pushTokens(i),r.range(n,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var r=[],n=e&&e.length>0;n||this.consumeSpaces();var i=this.future(),a,s=0,l=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new gt("Extra }",a)}else if(a.text==="EOF")throw new gt("Unexpected end of input in a macro argument, expected '"+(e&&n?e[l]:"}")+"'",a);if(e&&n)if((s===0||s===1&&e[l]==="{")&&a.text===e[l]){if(++l,l===e.length){r.splice(-l,l);break}}else l=0}while(s!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(e,r){if(r){if(r.length!==e+1)throw new gt("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new gt("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||e&&i.unexpandable){if(e&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new gt("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,s=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var l=a.length-1;l>=0;--l){var u=a[l];if(u.text==="#"){if(l===0)throw new gt("Incomplete placeholder at end of macro body",u);if(u=a[--l],u.text==="#")a.splice(l+1,1);else if(/^[1-9]$/.test(u.text))a.splice(l,2,...s[+u.text-1]);else throw new gt("Not a valid argument number",u)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new So(e)]):void 0}expandTokens(e){var r=[],n=this.stack.length;for(this.pushTokens(e);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(e){var r=this.expandMacro(e);return r&&r.map(n=>n.text).join("")}_getExpansion(e){var r=this.macros.get(e);if(r==null)return r;if(e.length===1){var n=this.lexer.catcodes[e];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.indexOf("#")!==-1)for(var s=i.replace(/##/g,"");s.indexOf("#"+(a+1))!==-1;)++a;for(var l=new y3(i,this.settings),u=[],h=l.lex();h.text!=="EOF";)u.push(h),h=l.lex();u.reverse();var f={tokens:u,numArgs:a};return f}return i}isDefined(e){return this.macros.has(e)||hh.hasOwnProperty(e)||An.math.hasOwnProperty(e)||An.text.hasOwnProperty(e)||LG.hasOwnProperty(e)}isExpandable(e){var r=this.macros.get(e);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:hh.hasOwnProperty(e)&&!hh[e].primitive}},Pz=/^[โ‚Šโ‚‹โ‚Œโ‚โ‚Žโ‚€โ‚โ‚‚โ‚ƒโ‚„โ‚…โ‚†โ‚‡โ‚ˆโ‚‰โ‚โ‚‘โ‚•แตขโฑผโ‚–โ‚—โ‚˜โ‚™โ‚’โ‚šแตฃโ‚›โ‚œแตคแตฅโ‚“แตฆแตงแตจแตฉแตช]/,l3=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),T7={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},Bz={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},v3=class t{static{o(this,"Parser")}constructor(e,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new I7(e,r,this.mode),this.settings=r,this.leftrightDepth=0}expect(e,r){if(r===void 0&&(r=!0),this.fetch().text!==e)throw new gt("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var r=this.nextToken;this.consume(),this.gullet.pushToken(new So("}")),this.gullet.pushTokens(e);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(e,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(t.endOfExpression.indexOf(i.text)!==-1||r&&i.text===r||e&&hh[i.text]&&hh[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(e){for(var r=-1,n,i=0;i=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',e);var l=An[this.mode][r].group,u=Xs.range(e),h;if(Mbe.hasOwnProperty(l)){var f=l;h={type:"atom",mode:this.mode,family:f,loc:u,text:r}}else h={type:l,mode:this.mode,loc:u,text:r};s=h}else if(r.charCodeAt(0)>=128)this.settings.strict&&($z(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),e)),s={type:"textord",mode:"text",loc:Xs.range(e),text:r};else return null;if(this.consume(),a)for(var d=0;d{e instanceof Element&&e.tagName==="A"&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),ch.addHook("afterSanitizeAttributes",e=>{e instanceof Element&&e.tagName==="A"&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener"))})}var nd,Y4e,X4e,BG,OG,Tr,K4e,Q4e,Z4e,J4e,FG,e3e,fr,t3e,r3e,ec,J7,n3e,i3e,PG,eA,pi,id,mh,Ze,gr=N(()=>{"use strict";u7();nd=//gi,Y4e=o(t=>t?FG(t).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),X4e=(()=>{let t=!1;return()=>{t||(j4e(),t=!0)}})();o(j4e,"setupDompurifyHooks");BG=o(t=>(X4e(),ch.sanitize(t)),"removeScript"),OG=o((t,e)=>{if(e.flowchart?.htmlLabels!==!1){let r=e.securityLevel;r==="antiscript"||r==="strict"?t=BG(t):r!=="loose"&&(t=FG(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=J4e(t))}return t},"sanitizeMore"),Tr=o((t,e)=>t&&(e.dompurifyConfig?t=ch.sanitize(OG(t,e),e.dompurifyConfig).toString():t=ch.sanitize(OG(t,e),{FORBID_TAGS:["style"]}).toString(),t),"sanitizeText"),K4e=o((t,e)=>typeof t=="string"?Tr(t,e):t.flat().map(r=>Tr(r,e)),"sanitizeTextOrArray"),Q4e=o(t=>nd.test(t),"hasBreaks"),Z4e=o(t=>t.split(nd),"splitBreaks"),J4e=o(t=>t.replace(/#br#/g,"
    "),"placeholderToBreak"),FG=o(t=>t.replace(nd,"#br#"),"breakToPlaceholder"),e3e=o(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},"getUrl"),fr=o(t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),"evaluate"),t3e=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.max(...e)},"getMax"),r3e=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.min(...e)},"getMin"),ec=o(function(t){let e=t.split(/(,)/),r=[];for(let n=0;n0&&n+1Math.max(0,t.split(e).length-1),"countOccurrence"),n3e=o((t,e)=>{let r=J7(t,"~"),n=J7(e,"~");return r===1&&n===1},"shouldCombineSets"),i3e=o(t=>{let e=J7(t,"~"),r=!1;if(e<=1)return t;e%2!==0&&t.startsWith("~")&&(t=t.substring(1),r=!0);let n=[...t],i=n.indexOf("~"),a=n.lastIndexOf("~");for(;i!==-1&&a!==-1&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),PG=o(()=>window.MathMLElement!==void 0,"isMathMLSupported"),eA=/\$\$(.*)\$\$/g,pi=o(t=>(t.match(eA)?.length??0)>0,"hasKatex"),id=o(async(t,e)=>{t=await mh(t,e);let r=document.createElement("div");r.innerHTML=t,r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r);let i={width:r.clientWidth,height:r.clientHeight};return r.remove(),i},"calculateMathMLDimensions"),mh=o(async(t,e)=>{if(!pi(t))return t;if(!(PG()||e.legacyMathML||e.forceLegacyMathML))return t.replace(eA,"MathML is unsupported in this environment.");let{default:r}=await Promise.resolve().then(()=>(IG(),MG)),n=e.forceLegacyMathML||!PG()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(nd).map(i=>pi(i)?`
    ${i}
    `:`
    ${i}
    `).join("").replace(eA,(i,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))},"renderKatex"),Ze={getRows:Y4e,sanitizeText:Tr,sanitizeTextOrArray:K4e,hasBreaks:Q4e,splitBreaks:Z4e,lineBreakRegex:nd,removeScript:BG,getUrl:e3e,evaluate:fr,getMax:t3e,getMin:r3e}});var a3e,s3e,vn,Ao,Ei=N(()=>{"use strict";vt();a3e=o(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),s3e=o(function(t,e,r){let n=new Map;return r?(n.set("width","100%"),n.set("style",`max-width: ${e}px;`)):(n.set("height",t),n.set("width",e)),n},"calculateSvgSizeAttrs"),vn=o(function(t,e,r,n){let i=s3e(e,r,n);a3e(t,i)},"configureSvgSize"),Ao=o(function(t,e,r,n){let i=e.node().getBBox(),a=i.width,s=i.height;Y.info(`SVG bounds: ${a}x${s}`,i);let l=0,u=0;Y.info(`Graph bounds: ${l}x${u}`,t),l=a+r*2,u=s+r*2,Y.info(`Calculated bounds: ${l}x${u}`),vn(e,u,l,n);let h=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;e.attr("viewBox",h)},"setupGraphViewbox")});var S3,o3e,$G,zG,tA=N(()=>{"use strict";vt();S3={},o3e=o((t,e,r)=>{let n="";return t in S3&&S3[t]?n=S3[t](r):Y.warn(`No theme found for ${t}`),` & { +?)[ \r ]*`,iA="[\u0300-\u036F]",Nwe=new RegExp(iA+"+$"),Mwe="("+PU+"+)|"+(Rwe+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(iA+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(iA+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+Lwe)+("|"+Dwe+")"),S3=class{static{o(this,"Lexer")}constructor(e,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=r,this.tokenRegex=new RegExp(Mwe,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,r){this.catcodes[e]=r}lex(){var e=this.input,r=this.tokenRegex.lastIndex;if(r===e.length)return new Do("EOF",new to(this,r,r));var n=this.tokenRegex.exec(e);if(n===null||n.index!==r)throw new gt("Unexpected character: '"+e[r]+"'",new Do(e[r],new to(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=e.indexOf(` +`,this.tokenRegex.lastIndex);return a===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=a+1,this.lex()}return new Do(i,new to(this,r,this.tokenRegex.lastIndex))}},aA=class{static{o(this,"Namespace")}constructor(e,r){e===void 0&&(e={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new gt("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var r in e)e.hasOwnProperty(r)&&(e[r]==null?delete this.current[r]:this.current[r]=e[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][e]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}r==null?delete this.current[e]:this.current[e]=r}},Iwe=SU;ce("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});ce("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});ce("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});ce("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});ce("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var r=t.future();return e[0].length===1&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});ce("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");ce("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});VV={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};ce("\\char",function(t){var e=t.popToken(),r,n="";if(e.text==="'")r=8,e=t.popToken();else if(e.text==='"')r=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")n=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new gt("\\char` missing argument");n=e.text.charCodeAt(0)}else r=10;if(r){if(n=VV[e.text],n==null||n>=r)throw new gt("Invalid base-"+r+" digit "+e.text);for(var i;(i=VV[t.future().text])!=null&&i{var i=t.consumeArg().tokens;if(i.length!==1)throw new gt("\\newcommand's first argument must be a macro name");var a=i[0].text,s=t.isDefined(a);if(s&&!e)throw new gt("\\newcommand{"+a+"} attempting to redefine "+(a+"; use \\renewcommand"));if(!s&&!r)throw new gt("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var l=0;if(i=t.consumeArg().tokens,i.length===1&&i[0].text==="["){for(var u="",h=t.expandNextToken();h.text!=="]"&&h.text!=="EOF";)u+=h.text,h=t.expandNextToken();if(!u.match(/^\s*[0-9]+\s*$/))throw new gt("Invalid number of arguments: "+u);l=parseInt(u),i=t.consumeArg().tokens}return s&&n||t.macros.set(a,{tokens:i,numArgs:l}),""},"newcommand");ce("\\newcommand",t=>TA(t,!1,!0,!1));ce("\\renewcommand",t=>TA(t,!0,!1,!1));ce("\\providecommand",t=>TA(t,!0,!0,!0));ce("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(r=>r.text).join("")),""});ce("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(r=>r.text).join("")),""});ce("\\show",t=>{var e=t.popToken(),r=e.text;return console.log(e,t.macros.get(r),xh[r],Nn.math[r],Nn.text[r]),""});ce("\\bgroup","{");ce("\\egroup","}");ce("~","\\nobreakspace");ce("\\lq","`");ce("\\rq","'");ce("\\aa","\\r a");ce("\\AA","\\r A");ce("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");ce("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");ce("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");ce("\u212C","\\mathscr{B}");ce("\u2130","\\mathscr{E}");ce("\u2131","\\mathscr{F}");ce("\u210B","\\mathscr{H}");ce("\u2110","\\mathscr{I}");ce("\u2112","\\mathscr{L}");ce("\u2133","\\mathscr{M}");ce("\u211B","\\mathscr{R}");ce("\u212D","\\mathfrak{C}");ce("\u210C","\\mathfrak{H}");ce("\u2128","\\mathfrak{Z}");ce("\\Bbbk","\\Bbb{k}");ce("\xB7","\\cdotp");ce("\\llap","\\mathllap{\\textrm{#1}}");ce("\\rlap","\\mathrlap{\\textrm{#1}}");ce("\\clap","\\mathclap{\\textrm{#1}}");ce("\\mathstrut","\\vphantom{(}");ce("\\underbar","\\underline{\\text{#1}}");ce("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');ce("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");ce("\\ne","\\neq");ce("\u2260","\\neq");ce("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");ce("\u2209","\\notin");ce("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");ce("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");ce("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");ce("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");ce("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");ce("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");ce("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");ce("\u27C2","\\perp");ce("\u203C","\\mathclose{!\\mkern-0.8mu!}");ce("\u220C","\\notni");ce("\u231C","\\ulcorner");ce("\u231D","\\urcorner");ce("\u231E","\\llcorner");ce("\u231F","\\lrcorner");ce("\xA9","\\copyright");ce("\xAE","\\textregistered");ce("\uFE0F","\\textregistered");ce("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');ce("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');ce("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');ce("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');ce("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");ce("\u22EE","\\vdots");ce("\\varGamma","\\mathit{\\Gamma}");ce("\\varDelta","\\mathit{\\Delta}");ce("\\varTheta","\\mathit{\\Theta}");ce("\\varLambda","\\mathit{\\Lambda}");ce("\\varXi","\\mathit{\\Xi}");ce("\\varPi","\\mathit{\\Pi}");ce("\\varSigma","\\mathit{\\Sigma}");ce("\\varUpsilon","\\mathit{\\Upsilon}");ce("\\varPhi","\\mathit{\\Phi}");ce("\\varPsi","\\mathit{\\Psi}");ce("\\varOmega","\\mathit{\\Omega}");ce("\\substack","\\begin{subarray}{c}#1\\end{subarray}");ce("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");ce("\\boxed","\\fbox{$\\displaystyle{#1}$}");ce("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");ce("\\implies","\\DOTSB\\;\\Longrightarrow\\;");ce("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");ce("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");ce("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");UV={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};ce("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in UV?e=UV[r]:(r.slice(0,4)==="\\not"||r in Nn.math&&er.contains(["bin","rel"],Nn.math[r].group))&&(e="\\dotsb"),e});wA={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};ce("\\dotso",function(t){var e=t.future().text;return e in wA?"\\ldots\\,":"\\ldots"});ce("\\dotsc",function(t){var e=t.future().text;return e in wA&&e!==","?"\\ldots\\,":"\\ldots"});ce("\\cdots",function(t){var e=t.future().text;return e in wA?"\\@cdots\\,":"\\@cdots"});ce("\\dotsb","\\cdots");ce("\\dotsm","\\cdots");ce("\\dotsi","\\!\\cdots");ce("\\dotsx","\\ldots\\,");ce("\\DOTSI","\\relax");ce("\\DOTSB","\\relax");ce("\\DOTSX","\\relax");ce("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");ce("\\,","\\tmspace+{3mu}{.1667em}");ce("\\thinspace","\\,");ce("\\>","\\mskip{4mu}");ce("\\:","\\tmspace+{4mu}{.2222em}");ce("\\medspace","\\:");ce("\\;","\\tmspace+{5mu}{.2777em}");ce("\\thickspace","\\;");ce("\\!","\\tmspace-{3mu}{.1667em}");ce("\\negthinspace","\\!");ce("\\negmedspace","\\tmspace-{4mu}{.2222em}");ce("\\negthickspace","\\tmspace-{5mu}{.277em}");ce("\\enspace","\\kern.5em ");ce("\\enskip","\\hskip.5em\\relax");ce("\\quad","\\hskip1em\\relax");ce("\\qquad","\\hskip2em\\relax");ce("\\tag","\\@ifstar\\tag@literal\\tag@paren");ce("\\tag@paren","\\tag@literal{({#1})}");ce("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new gt("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});ce("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");ce("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");ce("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");ce("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");ce("\\newline","\\\\\\relax");ce("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");BU=St(Ql["Main-Regular"][84][1]-.7*Ql["Main-Regular"][65][1]);ce("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+BU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");ce("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+BU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");ce("\\hspace","\\@ifstar\\@hspacer\\@hspace");ce("\\@hspace","\\hskip #1\\relax");ce("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");ce("\\ordinarycolon",":");ce("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");ce("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');ce("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');ce("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');ce("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');ce("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');ce("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');ce("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');ce("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');ce("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');ce("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');ce("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');ce("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');ce("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');ce("\u2237","\\dblcolon");ce("\u2239","\\eqcolon");ce("\u2254","\\coloneqq");ce("\u2255","\\eqqcolon");ce("\u2A74","\\Coloneqq");ce("\\ratio","\\vcentcolon");ce("\\coloncolon","\\dblcolon");ce("\\colonequals","\\coloneqq");ce("\\coloncolonequals","\\Coloneqq");ce("\\equalscolon","\\eqqcolon");ce("\\equalscoloncolon","\\Eqqcolon");ce("\\colonminus","\\coloneq");ce("\\coloncolonminus","\\Coloneq");ce("\\minuscolon","\\eqcolon");ce("\\minuscoloncolon","\\Eqcolon");ce("\\coloncolonapprox","\\Colonapprox");ce("\\coloncolonsim","\\Colonsim");ce("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");ce("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");ce("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");ce("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");ce("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");ce("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");ce("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");ce("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");ce("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");ce("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");ce("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");ce("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");ce("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");ce("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");ce("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");ce("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");ce("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");ce("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");ce("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");ce("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");ce("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");ce("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");ce("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");ce("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");ce("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");ce("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");ce("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");ce("\\imath","\\html@mathml{\\@imath}{\u0131}");ce("\\jmath","\\html@mathml{\\@jmath}{\u0237}");ce("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");ce("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");ce("\u27E6","\\llbracket");ce("\u27E7","\\rrbracket");ce("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");ce("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");ce("\u2983","\\lBrace");ce("\u2984","\\rBrace");ce("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");ce("\u29B5","\\minuso");ce("\\darr","\\downarrow");ce("\\dArr","\\Downarrow");ce("\\Darr","\\Downarrow");ce("\\lang","\\langle");ce("\\rang","\\rangle");ce("\\uarr","\\uparrow");ce("\\uArr","\\Uparrow");ce("\\Uarr","\\Uparrow");ce("\\N","\\mathbb{N}");ce("\\R","\\mathbb{R}");ce("\\Z","\\mathbb{Z}");ce("\\alef","\\aleph");ce("\\alefsym","\\aleph");ce("\\Alpha","\\mathrm{A}");ce("\\Beta","\\mathrm{B}");ce("\\bull","\\bullet");ce("\\Chi","\\mathrm{X}");ce("\\clubs","\\clubsuit");ce("\\cnums","\\mathbb{C}");ce("\\Complex","\\mathbb{C}");ce("\\Dagger","\\ddagger");ce("\\diamonds","\\diamondsuit");ce("\\empty","\\emptyset");ce("\\Epsilon","\\mathrm{E}");ce("\\Eta","\\mathrm{H}");ce("\\exist","\\exists");ce("\\harr","\\leftrightarrow");ce("\\hArr","\\Leftrightarrow");ce("\\Harr","\\Leftrightarrow");ce("\\hearts","\\heartsuit");ce("\\image","\\Im");ce("\\infin","\\infty");ce("\\Iota","\\mathrm{I}");ce("\\isin","\\in");ce("\\Kappa","\\mathrm{K}");ce("\\larr","\\leftarrow");ce("\\lArr","\\Leftarrow");ce("\\Larr","\\Leftarrow");ce("\\lrarr","\\leftrightarrow");ce("\\lrArr","\\Leftrightarrow");ce("\\Lrarr","\\Leftrightarrow");ce("\\Mu","\\mathrm{M}");ce("\\natnums","\\mathbb{N}");ce("\\Nu","\\mathrm{N}");ce("\\Omicron","\\mathrm{O}");ce("\\plusmn","\\pm");ce("\\rarr","\\rightarrow");ce("\\rArr","\\Rightarrow");ce("\\Rarr","\\Rightarrow");ce("\\real","\\Re");ce("\\reals","\\mathbb{R}");ce("\\Reals","\\mathbb{R}");ce("\\Rho","\\mathrm{P}");ce("\\sdot","\\cdot");ce("\\sect","\\S");ce("\\spades","\\spadesuit");ce("\\sub","\\subset");ce("\\sube","\\subseteq");ce("\\supe","\\supseteq");ce("\\Tau","\\mathrm{T}");ce("\\thetasym","\\vartheta");ce("\\weierp","\\wp");ce("\\Zeta","\\mathrm{Z}");ce("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");ce("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");ce("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");ce("\\bra","\\mathinner{\\langle{#1}|}");ce("\\ket","\\mathinner{|{#1}\\rangle}");ce("\\braket","\\mathinner{\\langle{#1}\\rangle}");ce("\\Bra","\\left\\langle#1\\right|");ce("\\Ket","\\left|#1\\right\\rangle");FU=o(t=>e=>{var r=e.consumeArg().tokens,n=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.consumeArg().tokens,s=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var u=o(d=>p=>{t&&(p.macros.set("|",s),i.length&&p.macros.set("\\|",l));var m=d;if(!d&&i.length){var g=p.future();g.text==="|"&&(p.popToken(),m=!0)}return{tokens:m?i:n,numArgs:0}},"midMacro");e.macros.set("|",u(!1)),i.length&&e.macros.set("\\|",u(!0));var h=e.consumeArg().tokens,f=e.expandTokens([...a,...h,...r]);return e.macros.endGroup(),{tokens:f.reverse(),numArgs:0}},"braketHelper");ce("\\bra@ket",FU(!1));ce("\\bra@set",FU(!0));ce("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");ce("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");ce("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");ce("\\angln","{\\angl n}");ce("\\blue","\\textcolor{##6495ed}{#1}");ce("\\orange","\\textcolor{##ffa500}{#1}");ce("\\pink","\\textcolor{##ff00af}{#1}");ce("\\red","\\textcolor{##df0030}{#1}");ce("\\green","\\textcolor{##28ae7b}{#1}");ce("\\gray","\\textcolor{gray}{#1}");ce("\\purple","\\textcolor{##9d38bd}{#1}");ce("\\blueA","\\textcolor{##ccfaff}{#1}");ce("\\blueB","\\textcolor{##80f6ff}{#1}");ce("\\blueC","\\textcolor{##63d9ea}{#1}");ce("\\blueD","\\textcolor{##11accd}{#1}");ce("\\blueE","\\textcolor{##0c7f99}{#1}");ce("\\tealA","\\textcolor{##94fff5}{#1}");ce("\\tealB","\\textcolor{##26edd5}{#1}");ce("\\tealC","\\textcolor{##01d1c1}{#1}");ce("\\tealD","\\textcolor{##01a995}{#1}");ce("\\tealE","\\textcolor{##208170}{#1}");ce("\\greenA","\\textcolor{##b6ffb0}{#1}");ce("\\greenB","\\textcolor{##8af281}{#1}");ce("\\greenC","\\textcolor{##74cf70}{#1}");ce("\\greenD","\\textcolor{##1fab54}{#1}");ce("\\greenE","\\textcolor{##0d923f}{#1}");ce("\\goldA","\\textcolor{##ffd0a9}{#1}");ce("\\goldB","\\textcolor{##ffbb71}{#1}");ce("\\goldC","\\textcolor{##ff9c39}{#1}");ce("\\goldD","\\textcolor{##e07d10}{#1}");ce("\\goldE","\\textcolor{##a75a05}{#1}");ce("\\redA","\\textcolor{##fca9a9}{#1}");ce("\\redB","\\textcolor{##ff8482}{#1}");ce("\\redC","\\textcolor{##f9685d}{#1}");ce("\\redD","\\textcolor{##e84d39}{#1}");ce("\\redE","\\textcolor{##bc2612}{#1}");ce("\\maroonA","\\textcolor{##ffbde0}{#1}");ce("\\maroonB","\\textcolor{##ff92c6}{#1}");ce("\\maroonC","\\textcolor{##ed5fa6}{#1}");ce("\\maroonD","\\textcolor{##ca337c}{#1}");ce("\\maroonE","\\textcolor{##9e034e}{#1}");ce("\\purpleA","\\textcolor{##ddd7ff}{#1}");ce("\\purpleB","\\textcolor{##c6b9fc}{#1}");ce("\\purpleC","\\textcolor{##aa87ff}{#1}");ce("\\purpleD","\\textcolor{##7854ab}{#1}");ce("\\purpleE","\\textcolor{##543b78}{#1}");ce("\\mintA","\\textcolor{##f5f9e8}{#1}");ce("\\mintB","\\textcolor{##edf2df}{#1}");ce("\\mintC","\\textcolor{##e0e5cc}{#1}");ce("\\grayA","\\textcolor{##f6f7f7}{#1}");ce("\\grayB","\\textcolor{##f0f1f2}{#1}");ce("\\grayC","\\textcolor{##e3e5e6}{#1}");ce("\\grayD","\\textcolor{##d6d8da}{#1}");ce("\\grayE","\\textcolor{##babec2}{#1}");ce("\\grayF","\\textcolor{##888d93}{#1}");ce("\\grayG","\\textcolor{##626569}{#1}");ce("\\grayH","\\textcolor{##3b3e40}{#1}");ce("\\grayI","\\textcolor{##21242c}{#1}");ce("\\kaBlue","\\textcolor{##314453}{#1}");ce("\\kaGreen","\\textcolor{##71B307}{#1}");$U={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},sA=class{static{o(this,"MacroExpander")}constructor(e,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(e),this.macros=new aA(Iwe,r.macros),this.mode=n,this.stack=[]}feed(e){this.lexer=new S3(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var r,n,i;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new Do("EOF",n.loc)),this.pushTokens(i),r.range(n,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var r=[],n=e&&e.length>0;n||this.consumeSpaces();var i=this.future(),a,s=0,l=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new gt("Extra }",a)}else if(a.text==="EOF")throw new gt("Unexpected end of input in a macro argument, expected '"+(e&&n?e[l]:"}")+"'",a);if(e&&n)if((s===0||s===1&&e[l]==="{")&&a.text===e[l]){if(++l,l===e.length){r.splice(-l,l);break}}else l=0}while(s!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(e,r){if(r){if(r.length!==e+1)throw new gt("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new gt("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||e&&i.unexpandable){if(e&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new gt("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,s=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var l=a.length-1;l>=0;--l){var u=a[l];if(u.text==="#"){if(l===0)throw new gt("Incomplete placeholder at end of macro body",u);if(u=a[--l],u.text==="#")a.splice(l+1,1);else if(/^[1-9]$/.test(u.text))a.splice(l,2,...s[+u.text-1]);else throw new gt("Not a valid argument number",u)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Do(e)]):void 0}expandTokens(e){var r=[],n=this.stack.length;for(this.pushTokens(e);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(e){var r=this.expandMacro(e);return r&&r.map(n=>n.text).join("")}_getExpansion(e){var r=this.macros.get(e);if(r==null)return r;if(e.length===1){var n=this.lexer.catcodes[e];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.indexOf("#")!==-1)for(var s=i.replace(/##/g,"");s.indexOf("#"+(a+1))!==-1;)++a;for(var l=new S3(i,this.settings),u=[],h=l.lex();h.text!=="EOF";)u.push(h),h=l.lex();u.reverse();var f={tokens:u,numArgs:a};return f}return i}isDefined(e){return this.macros.has(e)||xh.hasOwnProperty(e)||Nn.math.hasOwnProperty(e)||Nn.text.hasOwnProperty(e)||$U.hasOwnProperty(e)}isExpandable(e){var r=this.macros.get(e);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:xh.hasOwnProperty(e)&&!xh[e].primitive}},HV=/^[โ‚Šโ‚‹โ‚Œโ‚โ‚Žโ‚€โ‚โ‚‚โ‚ƒโ‚„โ‚…โ‚†โ‚‡โ‚ˆโ‚‰โ‚โ‚‘โ‚•แตขโฑผโ‚–โ‚—โ‚˜โ‚™โ‚’โ‚šแตฃโ‚›โ‚œแตคแตฅโ‚“แตฆแตงแตจแตฉแตช]/,y3=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),X7={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},qV={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},C3=class t{static{o(this,"Parser")}constructor(e,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new sA(e,r,this.mode),this.settings=r,this.leftrightDepth=0}expect(e,r){if(r===void 0&&(r=!0),this.fetch().text!==e)throw new gt("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var r=this.nextToken;this.consume(),this.gullet.pushToken(new Do("}")),this.gullet.pushTokens(e);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(e,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(t.endOfExpression.indexOf(i.text)!==-1||r&&i.text===r||e&&xh[i.text]&&xh[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(e){for(var r=-1,n,i=0;i=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',e);var l=Nn[this.mode][r].group,u=to.range(e),h;if(STe.hasOwnProperty(l)){var f=l;h={type:"atom",mode:this.mode,family:f,loc:u,text:r}}else h={type:l,mode:this.mode,loc:u,text:r};s=h}else if(r.charCodeAt(0)>=128)this.settings.strict&&(YV(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),e)),s={type:"textord",mode:"text",loc:to.range(e),text:r};else return null;if(this.consume(),a)for(var d=0;d{e.tagName==="A"&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),yh.addHook("afterSanitizeAttributes",e=>{e.tagName==="A"&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener"))})}var pd,Pwe,Bwe,KU,XU,sr,$we,zwe,Gwe,Vwe,QU,md,vr,Uwe,Hwe,rc,SA,qwe,Wwe,jU,I3,kn,gd,Ywe,kh,tt,gr=N(()=>{"use strict";O7();pd=//gi,Pwe=o(t=>t?QU(t).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),Bwe=(()=>{let t=!1;return()=>{t||(Fwe(),t=!0)}})();o(Fwe,"setupDompurifyHooks");KU=o(t=>(Bwe(),yh.sanitize(t)),"removeScript"),XU=o((t,e)=>{if(e.flowchart?.htmlLabels!==!1){let r=e.securityLevel;r==="antiscript"||r==="strict"?t=KU(t):r!=="loose"&&(t=QU(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=Vwe(t))}return t},"sanitizeMore"),sr=o((t,e)=>t&&(e.dompurifyConfig?t=yh.sanitize(XU(t,e),e.dompurifyConfig).toString():t=yh.sanitize(XU(t,e),{FORBID_TAGS:["style"]}).toString(),t),"sanitizeText"),$we=o((t,e)=>typeof t=="string"?sr(t,e):t.flat().map(r=>sr(r,e)),"sanitizeTextOrArray"),zwe=o(t=>pd.test(t),"hasBreaks"),Gwe=o(t=>t.split(pd),"splitBreaks"),Vwe=o(t=>t.replace(/#br#/g,"
    "),"placeholderToBreak"),QU=o(t=>t.replace(pd,"#br#"),"breakToPlaceholder"),md=o(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=CSS.escape(e)),e},"getUrl"),vr=o(t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),"evaluate"),Uwe=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.max(...e)},"getMax"),Hwe=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.min(...e)},"getMin"),rc=o(function(t){let e=t.split(/(,)/),r=[];for(let n=0;n0&&n+1Math.max(0,t.split(e).length-1),"countOccurrence"),qwe=o((t,e)=>{let r=SA(t,"~"),n=SA(e,"~");return r===1&&n===1},"shouldCombineSets"),Wwe=o(t=>{let e=SA(t,"~"),r=!1;if(e<=1)return t;e%2!==0&&t.startsWith("~")&&(t=t.substring(1),r=!0);let n=[...t],i=n.indexOf("~"),a=n.lastIndexOf("~");for(;i!==-1&&a!==-1&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),jU=o(()=>window.MathMLElement!==void 0,"isMathMLSupported"),I3=/\$\$(.*)\$\$/g,kn=o(t=>(t.match(I3)?.length??0)>0,"hasKatex"),gd=o(async(t,e)=>{let r=document.createElement("div");r.innerHTML=await kh(t,e),r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r);let i={width:r.clientWidth,height:r.clientHeight};return r.remove(),i},"calculateMathMLDimensions"),Ywe=o(async(t,e)=>{if(!kn(t))return t;if(!(jU()||e.legacyMathML||e.forceLegacyMathML))return t.replace(I3,"MathML is unsupported in this environment.");{let{default:r}=await Promise.resolve().then(()=>(YU(),WU)),n=e.forceLegacyMathML||!jU()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(pd).map(i=>kn(i)?`
    ${i}
    `:`
    ${i}
    `).join("").replace(I3,(i,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))}return t.replace(I3,"Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.")},"renderKatexUnsanitized"),kh=o(async(t,e)=>sr(await Ywe(t,e),e),"renderKatexSanitized"),tt={getRows:Pwe,sanitizeText:sr,sanitizeTextOrArray:$we,hasBreaks:zwe,splitBreaks:Gwe,lineBreakRegex:pd,removeScript:KU,getUrl:md,evaluate:vr,getMax:Uwe,getMin:Hwe}});var AA,CA,ZU,O3,JU,eH,_s,nc=N(()=>{"use strict";sG();qn();gr();pt();AA={body:'?',height:80,width:80},CA=new Map,ZU=new Map,O3=o(t=>{for(let e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(X.debug("Registering icon pack:",e.name),"loader"in e)ZU.set(e.name,e.loader);else if("icons"in e)CA.set(e.name,e.icons);else throw X.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),JU=o(async(t,e)=>{let r=r7(t,!0,e!==void 0);if(!r)throw new Error(`Invalid icon name: ${t}`);let n=r.prefix||e;if(!n)throw new Error(`Icon name must contain a prefix: ${t}`);let i=CA.get(n);if(!i){let s=ZU.get(n);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{i={...await s(),prefix:n},CA.set(n,i)}catch(l){throw X.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=i7(i,r.name);if(!a)throw new Error(`Icon not found: ${t}`);return a},"getRegisteredIconData"),eH=o(async t=>{try{return await JU(t),!0}catch{return!1}},"isIconAvailable"),_s=o(async(t,e,r)=>{let n;try{n=await JU(t,e?.fallbackPrefix)}catch(s){X.error(s),n=AA}let i=s7(n,e),a=l7(o7(i.body),{...i.attributes,...r});return sr(a,Qt())},"getIconSVG")});function P3(t){for(var e=[],r=1;r{"use strict";o(P3,"dedent")});var B3,yd,tH,F3=N(()=>{"use strict";B3=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,yd=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,tH=/\s*%%.*\n/gm});var A0,DA=N(()=>{"use strict";A0=class extends Error{static{o(this,"UnknownDiagramError")}constructor(e){super(e),this.name="UnknownDiagramError"}}});var gu,_0,ev,LA,rH,vd=N(()=>{"use strict";pt();F3();DA();gu={},_0=o(function(t,e){t=t.replace(B3,"").replace(yd,"").replace(tH,` +`);for(let[r,{detector:n}]of Object.entries(gu))if(n(t,e))return r;throw new A0(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),ev=o((...t)=>{for(let{id:e,detector:r,loader:n}of t)LA(e,r,n)},"registerLazyLoadedDiagrams"),LA=o((t,e,r)=>{gu[t]&&X.warn(`Detector with key ${t} already exists. Overwriting.`),gu[t]={detector:e,loader:r},X.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),rH=o(t=>gu[t].loader,"getDiagramLoader")});var tv,nH,RA=N(()=>{"use strict";tv=(function(){var t=o(function(He,Le,Ie,Ne){for(Ie=Ie||{},Ne=He.length;Ne--;Ie[He[Ne]]=Le);return Ie},"o"),e=[1,24],r=[1,25],n=[1,26],i=[1,27],a=[1,28],s=[1,63],l=[1,64],u=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],m=[1,29],g=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],T=[1,35],S=[1,36],w=[1,37],k=[1,38],A=[1,39],C=[1,40],R=[1,41],I=[1,42],L=[1,43],E=[1,44],D=[1,45],_=[1,46],O=[1,47],M=[1,48],P=[1,50],B=[1,51],F=[1,52],G=[1,53],$=[1,54],U=[1,55],j=[1,56],te=[1,57],Y=[1,58],oe=[1,59],J=[1,60],ue=[14,42],re=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ee=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Z=[1,82],K=[1,83],ae=[1,84],Q=[1,85],de=[12,14,42],ne=[12,14,33,42],Te=[12,14,33,42,76,77,79,80],q=[12,33],Ve=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],pe={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:o(function(Le,Ie,Ne,Ce,Fe,fe,xe){var W=fe.length-1;switch(Fe){case 3:Ce.setDirection("TB");break;case 4:Ce.setDirection("BT");break;case 5:Ce.setDirection("RL");break;case 6:Ce.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:Ce.setC4Type(fe[W-3]);break;case 19:Ce.setTitle(fe[W].substring(6)),this.$=fe[W].substring(6);break;case 20:Ce.setAccDescription(fe[W].substring(15)),this.$=fe[W].substring(15);break;case 21:this.$=fe[W].trim(),Ce.setTitle(this.$);break;case 22:case 23:this.$=fe[W].trim(),Ce.setAccDescription(this.$);break;case 28:fe[W].splice(2,0,"ENTERPRISE"),Ce.addPersonOrSystemBoundary(...fe[W]),this.$=fe[W];break;case 29:fe[W].splice(2,0,"SYSTEM"),Ce.addPersonOrSystemBoundary(...fe[W]),this.$=fe[W];break;case 30:Ce.addPersonOrSystemBoundary(...fe[W]),this.$=fe[W];break;case 31:fe[W].splice(2,0,"CONTAINER"),Ce.addContainerBoundary(...fe[W]),this.$=fe[W];break;case 32:Ce.addDeploymentNode("node",...fe[W]),this.$=fe[W];break;case 33:Ce.addDeploymentNode("nodeL",...fe[W]),this.$=fe[W];break;case 34:Ce.addDeploymentNode("nodeR",...fe[W]),this.$=fe[W];break;case 35:Ce.popBoundaryParseStack();break;case 39:Ce.addPersonOrSystem("person",...fe[W]),this.$=fe[W];break;case 40:Ce.addPersonOrSystem("external_person",...fe[W]),this.$=fe[W];break;case 41:Ce.addPersonOrSystem("system",...fe[W]),this.$=fe[W];break;case 42:Ce.addPersonOrSystem("system_db",...fe[W]),this.$=fe[W];break;case 43:Ce.addPersonOrSystem("system_queue",...fe[W]),this.$=fe[W];break;case 44:Ce.addPersonOrSystem("external_system",...fe[W]),this.$=fe[W];break;case 45:Ce.addPersonOrSystem("external_system_db",...fe[W]),this.$=fe[W];break;case 46:Ce.addPersonOrSystem("external_system_queue",...fe[W]),this.$=fe[W];break;case 47:Ce.addContainer("container",...fe[W]),this.$=fe[W];break;case 48:Ce.addContainer("container_db",...fe[W]),this.$=fe[W];break;case 49:Ce.addContainer("container_queue",...fe[W]),this.$=fe[W];break;case 50:Ce.addContainer("external_container",...fe[W]),this.$=fe[W];break;case 51:Ce.addContainer("external_container_db",...fe[W]),this.$=fe[W];break;case 52:Ce.addContainer("external_container_queue",...fe[W]),this.$=fe[W];break;case 53:Ce.addComponent("component",...fe[W]),this.$=fe[W];break;case 54:Ce.addComponent("component_db",...fe[W]),this.$=fe[W];break;case 55:Ce.addComponent("component_queue",...fe[W]),this.$=fe[W];break;case 56:Ce.addComponent("external_component",...fe[W]),this.$=fe[W];break;case 57:Ce.addComponent("external_component_db",...fe[W]),this.$=fe[W];break;case 58:Ce.addComponent("external_component_queue",...fe[W]),this.$=fe[W];break;case 60:Ce.addRel("rel",...fe[W]),this.$=fe[W];break;case 61:Ce.addRel("birel",...fe[W]),this.$=fe[W];break;case 62:Ce.addRel("rel_u",...fe[W]),this.$=fe[W];break;case 63:Ce.addRel("rel_d",...fe[W]),this.$=fe[W];break;case 64:Ce.addRel("rel_l",...fe[W]),this.$=fe[W];break;case 65:Ce.addRel("rel_r",...fe[W]),this.$=fe[W];break;case 66:Ce.addRel("rel_b",...fe[W]),this.$=fe[W];break;case 67:fe[W].splice(0,1),Ce.addRel("rel",...fe[W]),this.$=fe[W];break;case 68:Ce.updateElStyle("update_el_style",...fe[W]),this.$=fe[W];break;case 69:Ce.updateRelStyle("update_rel_style",...fe[W]),this.$=fe[W];break;case 70:Ce.updateLayoutConfig("update_layout_config",...fe[W]),this.$=fe[W];break;case 71:this.$=[fe[W]];break;case 72:fe[W].unshift(fe[W-1]),this.$=fe[W];break;case 73:case 75:this.$=fe[W].trim();break;case 74:let he={};he[fe[W-1].trim()]=fe[W].trim(),this.$=he;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{13:70,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{13:71,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{13:72,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{13:73,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{14:[1,74]},t(ue,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J}),t(ue,[2,14]),t(re,[2,16],{12:[1,76]}),t(ue,[2,36],{12:[1,77]}),t(ee,[2,19]),t(ee,[2,20]),{25:[1,78]},{27:[1,79]},t(ee,[2,23]),{35:80,75:81,76:Z,77:K,79:ae,80:Q},{35:86,75:81,76:Z,77:K,79:ae,80:Q},{35:87,75:81,76:Z,77:K,79:ae,80:Q},{35:88,75:81,76:Z,77:K,79:ae,80:Q},{35:89,75:81,76:Z,77:K,79:ae,80:Q},{35:90,75:81,76:Z,77:K,79:ae,80:Q},{35:91,75:81,76:Z,77:K,79:ae,80:Q},{35:92,75:81,76:Z,77:K,79:ae,80:Q},{35:93,75:81,76:Z,77:K,79:ae,80:Q},{35:94,75:81,76:Z,77:K,79:ae,80:Q},{35:95,75:81,76:Z,77:K,79:ae,80:Q},{35:96,75:81,76:Z,77:K,79:ae,80:Q},{35:97,75:81,76:Z,77:K,79:ae,80:Q},{35:98,75:81,76:Z,77:K,79:ae,80:Q},{35:99,75:81,76:Z,77:K,79:ae,80:Q},{35:100,75:81,76:Z,77:K,79:ae,80:Q},{35:101,75:81,76:Z,77:K,79:ae,80:Q},{35:102,75:81,76:Z,77:K,79:ae,80:Q},{35:103,75:81,76:Z,77:K,79:ae,80:Q},{35:104,75:81,76:Z,77:K,79:ae,80:Q},t(de,[2,59]),{35:105,75:81,76:Z,77:K,79:ae,80:Q},{35:106,75:81,76:Z,77:K,79:ae,80:Q},{35:107,75:81,76:Z,77:K,79:ae,80:Q},{35:108,75:81,76:Z,77:K,79:ae,80:Q},{35:109,75:81,76:Z,77:K,79:ae,80:Q},{35:110,75:81,76:Z,77:K,79:ae,80:Q},{35:111,75:81,76:Z,77:K,79:ae,80:Q},{35:112,75:81,76:Z,77:K,79:ae,80:Q},{35:113,75:81,76:Z,77:K,79:ae,80:Q},{35:114,75:81,76:Z,77:K,79:ae,80:Q},{35:115,75:81,76:Z,77:K,79:ae,80:Q},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{12:[1,118],33:[1,117]},{35:119,75:81,76:Z,77:K,79:ae,80:Q},{35:120,75:81,76:Z,77:K,79:ae,80:Q},{35:121,75:81,76:Z,77:K,79:ae,80:Q},{35:122,75:81,76:Z,77:K,79:ae,80:Q},{35:123,75:81,76:Z,77:K,79:ae,80:Q},{35:124,75:81,76:Z,77:K,79:ae,80:Q},{35:125,75:81,76:Z,77:K,79:ae,80:Q},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(ue,[2,15]),t(re,[2,17],{21:22,19:130,22:e,23:r,24:n,26:i,28:a}),t(ue,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:r,24:n,26:i,28:a,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J}),t(ee,[2,21]),t(ee,[2,22]),t(de,[2,39]),t(ne,[2,71],{75:81,35:132,76:Z,77:K,79:ae,80:Q}),t(Te,[2,73]),{78:[1,133]},t(Te,[2,75]),t(Te,[2,76]),t(de,[2,40]),t(de,[2,41]),t(de,[2,42]),t(de,[2,43]),t(de,[2,44]),t(de,[2,45]),t(de,[2,46]),t(de,[2,47]),t(de,[2,48]),t(de,[2,49]),t(de,[2,50]),t(de,[2,51]),t(de,[2,52]),t(de,[2,53]),t(de,[2,54]),t(de,[2,55]),t(de,[2,56]),t(de,[2,57]),t(de,[2,58]),t(de,[2,60]),t(de,[2,61]),t(de,[2,62]),t(de,[2,63]),t(de,[2,64]),t(de,[2,65]),t(de,[2,66]),t(de,[2,67]),t(de,[2,68]),t(de,[2,69]),t(de,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(q,[2,28]),t(q,[2,29]),t(q,[2,30]),t(q,[2,31]),t(q,[2,32]),t(q,[2,33]),t(q,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t(re,[2,18]),t(ue,[2,38]),t(ne,[2,72]),t(Te,[2,74]),t(de,[2,24]),t(de,[2,35]),t(Ve,[2,25]),t(Ve,[2,26],{12:[1,138]}),t(Ve,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:o(function(Le,Ie){if(Ie.recoverable)this.trace(Le);else{var Ne=new Error(Le);throw Ne.hash=Ie,Ne}},"parseError"),parse:o(function(Le){var Ie=this,Ne=[0],Ce=[],Fe=[null],fe=[],xe=this.table,W="",he=0,z=0,se=0,le=2,ke=1,ve=fe.slice.call(arguments,1),ye=Object.create(this.lexer),Re={yy:{}};for(var _e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_e)&&(Re.yy[_e]=this.yy[_e]);ye.setInput(Le,Re.yy),Re.yy.lexer=ye,Re.yy.parser=this,typeof ye.yylloc>"u"&&(ye.yylloc={});var ze=ye.yylloc;fe.push(ze);var Ke=ye.options&&ye.options.ranges;typeof Re.yy.parseError=="function"?this.parseError=Re.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xt(ft){Ne.length=Ne.length-2*ft,Fe.length=Fe.length-ft,fe.length=fe.length-ft}o(xt,"popStack");function We(){var ft;return ft=Ce.pop()||ye.lex()||ke,typeof ft!="number"&&(ft instanceof Array&&(Ce=ft,ft=Ce.pop()),ft=Ie.symbols_[ft]||ft),ft}o(We,"lex");for(var Oe,et,Ue,lt,Gt,vt,Lt={},dt,nt,bt,wt;;){if(Ue=Ne[Ne.length-1],this.defaultActions[Ue]?lt=this.defaultActions[Ue]:((Oe===null||typeof Oe>"u")&&(Oe=We()),lt=xe[Ue]&&xe[Ue][Oe]),typeof lt>"u"||!lt.length||!lt[0]){var yt="";wt=[];for(dt in xe[Ue])this.terminals_[dt]&&dt>le&&wt.push("'"+this.terminals_[dt]+"'");ye.showPosition?yt="Parse error on line "+(he+1)+`: +`+ye.showPosition()+` +Expecting `+wt.join(", ")+", got '"+(this.terminals_[Oe]||Oe)+"'":yt="Parse error on line "+(he+1)+": Unexpected "+(Oe==ke?"end of input":"'"+(this.terminals_[Oe]||Oe)+"'"),this.parseError(yt,{text:ye.match,token:this.terminals_[Oe]||Oe,line:ye.yylineno,loc:ze,expected:wt})}if(lt[0]instanceof Array&<.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ue+", token: "+Oe);switch(lt[0]){case 1:Ne.push(Oe),Fe.push(ye.yytext),fe.push(ye.yylloc),Ne.push(lt[1]),Oe=null,et?(Oe=et,et=null):(z=ye.yyleng,W=ye.yytext,he=ye.yylineno,ze=ye.yylloc,se>0&&se--);break;case 2:if(nt=this.productions_[lt[1]][1],Lt.$=Fe[Fe.length-nt],Lt._$={first_line:fe[fe.length-(nt||1)].first_line,last_line:fe[fe.length-1].last_line,first_column:fe[fe.length-(nt||1)].first_column,last_column:fe[fe.length-1].last_column},Ke&&(Lt._$.range=[fe[fe.length-(nt||1)].range[0],fe[fe.length-1].range[1]]),vt=this.performAction.apply(Lt,[W,z,he,Re.yy,lt[1],Fe,fe].concat(ve)),typeof vt<"u")return vt;nt&&(Ne=Ne.slice(0,-1*nt*2),Fe=Fe.slice(0,-1*nt),fe=fe.slice(0,-1*nt)),Ne.push(this.productions_[lt[1]][0]),Fe.push(Lt.$),fe.push(Lt._$),bt=xe[Ne[Ne.length-2]][Ne[Ne.length-1]],Ne.push(bt);break;case 3:return!0}}return!0},"parse")},Be=(function(){var He={EOF:1,parseError:o(function(Ie,Ne){if(this.yy.parser)this.yy.parser.parseError(Ie,Ne);else throw new Error(Ie)},"parseError"),setInput:o(function(Le,Ie){return this.yy=Ie||this.yy||{},this._input=Le,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Le=this._input[0];this.yytext+=Le,this.yyleng++,this.offset++,this.match+=Le,this.matched+=Le;var Ie=Le.match(/(?:\r\n?|\n).*/g);return Ie?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Le},"input"),unput:o(function(Le){var Ie=Le.length,Ne=Le.split(/(?:\r\n?|\n)/g);this._input=Le+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ie),this.offset-=Ie;var Ce=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ne.length-1&&(this.yylineno-=Ne.length-1);var Fe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ne?(Ne.length===Ce.length?this.yylloc.first_column:0)+Ce[Ce.length-Ne.length].length-Ne[0].length:this.yylloc.first_column-Ie},this.options.ranges&&(this.yylloc.range=[Fe[0],Fe[0]+this.yyleng-Ie]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Le){this.unput(this.match.slice(Le))},"less"),pastInput:o(function(){var Le=this.matched.substr(0,this.matched.length-this.match.length);return(Le.length>20?"...":"")+Le.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Le=this.match;return Le.length<20&&(Le+=this._input.substr(0,20-Le.length)),(Le.substr(0,20)+(Le.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Le=this.pastInput(),Ie=new Array(Le.length+1).join("-");return Le+this.upcomingInput()+` +`+Ie+"^"},"showPosition"),test_match:o(function(Le,Ie){var Ne,Ce,Fe;if(this.options.backtrack_lexer&&(Fe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Fe.yylloc.range=this.yylloc.range.slice(0))),Ce=Le[0].match(/(?:\r\n?|\n).*/g),Ce&&(this.yylineno+=Ce.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Ce?Ce[Ce.length-1].length-Ce[Ce.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Le[0].length},this.yytext+=Le[0],this.match+=Le[0],this.matches=Le,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Le[0].length),this.matched+=Le[0],Ne=this.performAction.call(this,this.yy,this,Ie,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ne)return Ne;if(this._backtrack){for(var fe in Fe)this[fe]=Fe[fe];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Le,Ie,Ne,Ce;this._more||(this.yytext="",this.match="");for(var Fe=this._currentRules(),fe=0;feIe[0].length)){if(Ie=Ne,Ce=fe,this.options.backtrack_lexer){if(Le=this.test_match(Ne,Fe[fe]),Le!==!1)return Le;if(this._backtrack){Ie=!1;continue}else return!1}else if(!this.options.flex)break}return Ie?(Le=this.test_match(Ie,Fe[Ce]),Le!==!1?Le:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Ie=this.next();return Ie||this.lex()},"lex"),begin:o(function(Ie){this.conditionStack.push(Ie)},"begin"),popState:o(function(){var Ie=this.conditionStack.length-1;return Ie>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ie){return Ie=this.conditionStack.length-1-Math.abs(Ie||0),Ie>=0?this.conditionStack[Ie]:"INITIAL"},"topState"),pushState:o(function(Ie){this.begin(Ie)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ie,Ne,Ce,Fe){var fe=Fe;switch(Ce){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return He})();pe.lexer=Be;function Ye(){this.yy={}}return o(Ye,"Parser"),Ye.prototype=pe,pe.Parser=Ye,new Ye})();tv.parser=tv;nH=tv});var Xwe,jwe,mn,ic,Ei=N(()=>{"use strict";pt();Xwe=o(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),jwe=o(function(t,e,r){let n=new Map;return r?(n.set("width","100%"),n.set("style",`max-width: ${e}px;`)):(n.set("height",t),n.set("width",e)),n},"calculateSvgSizeAttrs"),mn=o(function(t,e,r,n){let i=jwe(e,r,n);Xwe(t,i)},"configureSvgSize"),ic=o(function(t,e,r,n){let i=e.node().getBBox(),a=i.width,s=i.height;X.info(`SVG bounds: ${a}x${s}`,i);let l=0,u=0;X.info(`Graph bounds: ${l}x${u}`,t),l=a+r*2,u=s+r*2,X.info(`Calculated bounds: ${l}x${u}`),mn(e,u,l,n);let h=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;e.attr("viewBox",h)},"setupGraphViewbox")});var $3,Kwe,iH,aH,NA=N(()=>{"use strict";pt();$3={},Kwe=o((t,e,r)=>{let n="";return t in $3&&$3[t]?n=$3[t](r):X.warn(`No theme found for ${t}`),` & { font-family: ${r.fontFamily}; font-size: ${r.fontSize}; fill: ${r.textColor} @@ -346,141 +346,518 @@ l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, ${n} ${e} -`},"getStyles"),$G=o((t,e)=>{e!==void 0&&(S3[t]=e)},"addStylesForDiagram"),zG=o3e});var qy={};hr(qy,{clear:()=>Ar,getAccDescription:()=>Mr,getAccTitle:()=>Rr,getDiagramTitle:()=>Ir,setAccDescription:()=>Nr,setAccTitle:()=>Lr,setDiagramTitle:()=>$r});var rA,nA,iA,aA,Ar,Lr,Rr,Nr,Mr,$r,Ir,mi=N(()=>{"use strict";gr();ji();rA="",nA="",iA="",aA=o(t=>Tr(t,cr()),"sanitizeText"),Ar=o(()=>{rA="",iA="",nA=""},"clear"),Lr=o(t=>{rA=aA(t).replace(/^\s+/g,"")},"setAccTitle"),Rr=o(()=>rA,"getAccTitle"),Nr=o(t=>{iA=aA(t).replace(/\n\s+/g,` -`)},"setAccDescription"),Mr=o(()=>iA,"getAccDescription"),$r=o(t=>{nA=aA(t)},"setDiagramTitle"),Ir=o(()=>nA,"getDiagramTitle")});var GG,l3e,me,Yy,A3,Xy,oA,c3e,C3,ad,jy,sA,zt=N(()=>{"use strict";Xf();vt();ji();gr();Ei();tA();mi();GG=Y,l3e=wy,me=cr,Yy=X4,A3=lh,Xy=o(t=>Tr(t,me()),"sanitizeText"),oA=Ao,c3e=o(()=>qy,"getCommonDb"),C3={},ad=o((t,e,r)=>{C3[t]&&GG.warn(`Diagram with id ${t} already registered. Overwriting.`),C3[t]=e,r&&FC(t,r),$G(t,e.styles),e.injectUtils?.(GG,l3e,me,Xy,oA,c3e(),()=>{})},"registerDiagram"),jy=o(t=>{if(t in C3)return C3[t];throw new sA(t)},"getDiagram"),sA=class extends Error{static{o(this,"DiagramNotFoundError")}constructor(e){super(`Diagram ${e} not found.`)}}});var ul,gh,Ja,cl,tc,Ky,lA,cA,_3,D3,VG,u3e,h3e,f3e,d3e,p3e,m3e,g3e,y3e,v3e,x3e,b3e,w3e,T3e,k3e,E3e,S3e,C3e,UG,A3e,_3e,HG,D3e,L3e,R3e,N3e,yh,M3e,I3e,O3e,P3e,B3e,Qy,uA=N(()=>{"use strict";zt();gr();mi();ul=[],gh=[""],Ja="global",cl="",tc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Ky=[],lA="",cA=!1,_3=4,D3=2,u3e=o(function(){return VG},"getC4Type"),h3e=o(function(t){VG=Tr(t,me())},"setC4Type"),f3e=o(function(t,e,r,n,i,a,s,l,u){if(t==null||e===void 0||e===null||r===void 0||r===null||n===void 0||n===null)return;let h={},f=Ky.find(d=>d.from===e&&d.to===r);if(f?h=f:Ky.push(h),h.type=t,h.from=e,h.to=r,h.label={text:n},i==null)h.techn={text:""};else if(typeof i=="object"){let[d,p]=Object.entries(i)[0];h[d]={text:p}}else h.techn={text:i};if(a==null)h.descr={text:""};else if(typeof a=="object"){let[d,p]=Object.entries(a)[0];h[d]={text:p}}else h.descr={text:a};if(typeof s=="object"){let[d,p]=Object.entries(s)[0];h[d]=p}else h.sprite=s;if(typeof l=="object"){let[d,p]=Object.entries(l)[0];h[d]=p}else h.tags=l;if(typeof u=="object"){let[d,p]=Object.entries(u)[0];h[d]=p}else h.link=u;h.wrap=yh()},"addRel"),d3e=o(function(t,e,r,n,i,a,s){if(e===null||r===null)return;let l={},u=ul.find(h=>h.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,ul.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.descr={text:""};else if(typeof n=="object"){let[h,f]=Object.entries(n)[0];l[h]={text:f}}else l.descr={text:n};if(typeof i=="object"){let[h,f]=Object.entries(i)[0];l[h]=f}else l.sprite=i;if(typeof a=="object"){let[h,f]=Object.entries(a)[0];l[h]=f}else l.tags=a;if(typeof s=="object"){let[h,f]=Object.entries(s)[0];l[h]=f}else l.link=s;l.typeC4Shape={text:t},l.parentBoundary=Ja,l.wrap=yh()},"addPersonOrSystem"),p3e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ul.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ul.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=yh(),u.typeC4Shape={text:t},u.parentBoundary=Ja},"addContainer"),m3e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ul.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ul.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=yh(),u.typeC4Shape={text:t},u.parentBoundary=Ja},"addComponent"),g3e=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=tc.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,tc.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"system"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Ja,a.wrap=yh(),cl=Ja,Ja=t,gh.push(cl)},"addPersonOrSystemBoundary"),y3e=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=tc.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,tc.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"container"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Ja,a.wrap=yh(),cl=Ja,Ja=t,gh.push(cl)},"addContainerBoundary"),v3e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=tc.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,tc.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.type={text:"node"};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.type={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.nodeType=t,u.parentBoundary=Ja,u.wrap=yh(),cl=Ja,Ja=e,gh.push(cl)},"addDeploymentNode"),x3e=o(function(){Ja=cl,gh.pop(),cl=gh.pop(),gh.push(cl)},"popBoundaryParseStack"),b3e=o(function(t,e,r,n,i,a,s,l,u,h,f){let d=ul.find(p=>p.alias===e);if(!(d===void 0&&(d=tc.find(p=>p.alias===e),d===void 0))){if(r!=null)if(typeof r=="object"){let[p,m]=Object.entries(r)[0];d[p]=m}else d.bgColor=r;if(n!=null)if(typeof n=="object"){let[p,m]=Object.entries(n)[0];d[p]=m}else d.fontColor=n;if(i!=null)if(typeof i=="object"){let[p,m]=Object.entries(i)[0];d[p]=m}else d.borderColor=i;if(a!=null)if(typeof a=="object"){let[p,m]=Object.entries(a)[0];d[p]=m}else d.shadowing=a;if(s!=null)if(typeof s=="object"){let[p,m]=Object.entries(s)[0];d[p]=m}else d.shape=s;if(l!=null)if(typeof l=="object"){let[p,m]=Object.entries(l)[0];d[p]=m}else d.sprite=l;if(u!=null)if(typeof u=="object"){let[p,m]=Object.entries(u)[0];d[p]=m}else d.techn=u;if(h!=null)if(typeof h=="object"){let[p,m]=Object.entries(h)[0];d[p]=m}else d.legendText=h;if(f!=null)if(typeof f=="object"){let[p,m]=Object.entries(f)[0];d[p]=m}else d.legendSprite=f}},"updateElStyle"),w3e=o(function(t,e,r,n,i,a,s){let l=Ky.find(u=>u.from===e&&u.to===r);if(l!==void 0){if(n!=null)if(typeof n=="object"){let[u,h]=Object.entries(n)[0];l[u]=h}else l.textColor=n;if(i!=null)if(typeof i=="object"){let[u,h]=Object.entries(i)[0];l[u]=h}else l.lineColor=i;if(a!=null)if(typeof a=="object"){let[u,h]=Object.entries(a)[0];l[u]=parseInt(h)}else l.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[u,h]=Object.entries(s)[0];l[u]=parseInt(h)}else l.offsetY=parseInt(s)}},"updateRelStyle"),T3e=o(function(t,e,r){let n=_3,i=D3;if(typeof e=="object"){let a=Object.values(e)[0];n=parseInt(a)}else n=parseInt(e);if(typeof r=="object"){let a=Object.values(r)[0];i=parseInt(a)}else i=parseInt(r);n>=1&&(_3=n),i>=1&&(D3=i)},"updateLayoutConfig"),k3e=o(function(){return _3},"getC4ShapeInRow"),E3e=o(function(){return D3},"getC4BoundaryInRow"),S3e=o(function(){return Ja},"getCurrentBoundaryParse"),C3e=o(function(){return cl},"getParentBoundaryParse"),UG=o(function(t){return t==null?ul:ul.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),A3e=o(function(t){return ul.find(e=>e.alias===t)},"getC4Shape"),_3e=o(function(t){return Object.keys(UG(t))},"getC4ShapeKeys"),HG=o(function(t){return t==null?tc:tc.filter(e=>e.parentBoundary===t)},"getBoundaries"),D3e=HG,L3e=o(function(){return Ky},"getRels"),R3e=o(function(){return lA},"getTitle"),N3e=o(function(t){cA=t},"setWrap"),yh=o(function(){return cA},"autoWrap"),M3e=o(function(){ul=[],tc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],cl="",Ja="global",gh=[""],Ky=[],gh=[""],lA="",cA=!1,_3=4,D3=2},"clear"),I3e={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},O3e={FILLED:0,OPEN:1},P3e={LEFTOF:0,RIGHTOF:1,OVER:2},B3e=o(function(t){lA=Tr(t,me())},"setTitle"),Qy={addPersonOrSystem:d3e,addPersonOrSystemBoundary:g3e,addContainer:p3e,addContainerBoundary:y3e,addComponent:m3e,addDeploymentNode:v3e,popBoundaryParseStack:x3e,addRel:f3e,updateElStyle:b3e,updateRelStyle:w3e,updateLayoutConfig:T3e,autoWrap:yh,setWrap:N3e,getC4ShapeArray:UG,getC4Shape:A3e,getC4ShapeKeys:_3e,getBoundaries:HG,getBoundarys:D3e,getCurrentBoundaryParse:S3e,getParentBoundaryParse:C3e,getRels:L3e,getTitle:R3e,getC4Type:u3e,getC4ShapeInRow:k3e,getC4BoundaryInRow:E3e,setAccTitle:Lr,getAccTitle:Rr,getAccDescription:Mr,setAccDescription:Nr,getConfig:o(()=>me().c4,"getConfig"),clear:M3e,LINETYPE:I3e,ARROWTYPE:O3e,PLACEMENT:P3e,setTitle:B3e,setC4Type:h3e}});function sd(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}var hA=N(()=>{"use strict";o(sd,"ascending")});function fA(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}var WG=N(()=>{"use strict";o(fA,"descending")});function od(t){let e,r,n;t.length!==2?(e=sd,r=o((l,u)=>sd(t(l),u),"compare2"),n=o((l,u)=>t(l)-u,"delta")):(e=t===sd||t===fA?t:F3e,r=t,n=t);function i(l,u,h=0,f=l.length){if(h>>1;r(l[d],u)<0?h=d+1:f=d}while(h>>1;r(l[d],u)<=0?h=d+1:f=d}while(hh&&n(l[d-1],u)>-n(l[d],u)?d-1:d}return o(s,"center"),{left:i,center:s,right:a}}function F3e(){return 0}var dA=N(()=>{"use strict";hA();WG();o(od,"bisector");o(F3e,"zero")});function pA(t){return t===null?NaN:+t}var qG=N(()=>{"use strict";o(pA,"number")});var YG,XG,$3e,z3e,mA,jG=N(()=>{"use strict";hA();dA();qG();YG=od(sd),XG=YG.right,$3e=YG.left,z3e=od(pA).center,mA=XG});function KG({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):r}function G3e({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function V3e({_intern:t,_key:e},r){let n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function U3e(t){return t!==null&&typeof t=="object"?t.valueOf():t}var g0,QG=N(()=>{"use strict";g0=class extends Map{static{o(this,"InternMap")}constructor(e,r=U3e){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(let[n,i]of e)this.set(n,i)}get(e){return super.get(KG(this,e))}has(e){return super.has(KG(this,e))}set(e,r){return super.set(G3e(this,e),r)}delete(e){return super.delete(V3e(this,e))}};o(KG,"intern_get");o(G3e,"intern_set");o(V3e,"intern_delete");o(U3e,"keyof")});function L3(t,e,r){let n=(e-t)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=H3e?10:a>=W3e?5:a>=q3e?2:1,l,u,h;return i<0?(h=Math.pow(10,-i)/s,l=Math.round(t*h),u=Math.round(e*h),l/he&&--u,h=-h):(h=Math.pow(10,i)*s,l=Math.round(t/h),u=Math.round(e/h),l*he&&--u),u0))return[];if(t===e)return[t];let n=e=i))return[];let l=a-i+1,u=new Array(l);if(n)if(s<0)for(let h=0;h{"use strict";H3e=Math.sqrt(50),W3e=Math.sqrt(10),q3e=Math.sqrt(2);o(L3,"tickSpec");o(R3,"ticks");o(Zy,"tickIncrement");o(y0,"tickStep")});function N3(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var JG=N(()=>{"use strict";o(N3,"max")});function M3(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var eV=N(()=>{"use strict";o(M3,"min")});function I3(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((e-t)/r))|0,a=new Array(i);++n{"use strict";o(I3,"range")});var vh=N(()=>{"use strict";jG();dA();JG();eV();tV();ZG();QG()});function gA(t){return t}var rV=N(()=>{"use strict";o(gA,"default")});function Y3e(t){return"translate("+t+",0)"}function X3e(t){return"translate(0,"+t+")"}function j3e(t){return e=>+t(e)}function K3e(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function Q3e(){return!this.__axis}function iV(t,e){var r=[],n=null,i=null,a=6,s=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,h=t===P3||t===O3?-1:1,f=t===O3||t===yA?"x":"y",d=t===P3||t===vA?Y3e:X3e;function p(m){var g=n??(e.ticks?e.ticks.apply(e,r):e.domain()),y=i??(e.tickFormat?e.tickFormat.apply(e,r):gA),v=Math.max(a,0)+l,x=e.range(),b=+x[0]+u,w=+x[x.length-1]+u,C=(e.bandwidth?K3e:j3e)(e.copy(),u),T=m.selection?m.selection():m,E=T.selectAll(".domain").data([null]),A=T.selectAll(".tick").data(g,e).order(),S=A.exit(),_=A.enter().append("g").attr("class","tick"),I=A.select("line"),D=A.select("text");E=E.merge(E.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),A=A.merge(_),I=I.merge(_.append("line").attr("stroke","currentColor").attr(f+"2",h*a)),D=D.merge(_.append("text").attr("fill","currentColor").attr(f,h*v).attr("dy",t===P3?"0em":t===vA?"0.71em":"0.32em")),m!==T&&(E=E.transition(m),A=A.transition(m),I=I.transition(m),D=D.transition(m),S=S.transition(m).attr("opacity",nV).attr("transform",function(k){return isFinite(k=C(k))?d(k+u):this.getAttribute("transform")}),_.attr("opacity",nV).attr("transform",function(k){var L=this.parentNode.__axis;return d((L&&isFinite(L=L(k))?L:C(k))+u)})),S.remove(),E.attr("d",t===O3||t===yA?s?"M"+h*s+","+b+"H"+u+"V"+w+"H"+h*s:"M"+u+","+b+"V"+w:s?"M"+b+","+h*s+"V"+u+"H"+w+"V"+h*s:"M"+b+","+u+"H"+w),A.attr("opacity",1).attr("transform",function(k){return d(C(k)+u)}),I.attr(f+"2",h*a),D.attr(f,h*v).text(y),T.filter(Q3e).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===yA?"start":t===O3?"end":"middle"),T.each(function(){this.__axis=C})}return o(p,"axis"),p.scale=function(m){return arguments.length?(e=m,p):e},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(i=m,p):i},p.tickSize=function(m){return arguments.length?(a=s=+m,p):a},p.tickSizeInner=function(m){return arguments.length?(a=+m,p):a},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(l=+m,p):l},p.offset=function(m){return arguments.length?(u=+m,p):u},p}function xA(t){return iV(P3,t)}function bA(t){return iV(vA,t)}var P3,yA,vA,O3,nV,aV=N(()=>{"use strict";rV();P3=1,yA=2,vA=3,O3=4,nV=1e-6;o(Y3e,"translateX");o(X3e,"translateY");o(j3e,"number");o(K3e,"center");o(Q3e,"entering");o(iV,"axis");o(xA,"axisTop");o(bA,"axisBottom")});var sV=N(()=>{"use strict";aV()});function lV(){for(var t=0,e=arguments.length,r={},n;t=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function e5e(t,e){for(var r=0,n=t.length,i;r{"use strict";Z3e={value:o(()=>{},"value")};o(lV,"dispatch");o(B3,"Dispatch");o(J3e,"parseTypenames");B3.prototype=lV.prototype={constructor:B3,on:o(function(t,e){var r=this._,n=J3e(t+"",r),i,a=-1,s=n.length;if(arguments.length<2){for(;++a0)for(var r=new Array(i),n=0,i,a;n{"use strict";cV()});var F3,kA,EA=N(()=>{"use strict";F3="http://www.w3.org/1999/xhtml",kA={svg:"http://www.w3.org/2000/svg",xhtml:F3,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function rc(t){var e=t+="",r=e.indexOf(":");return r>=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),kA.hasOwnProperty(e)?{space:kA[e],local:t}:t}var $3=N(()=>{"use strict";EA();o(rc,"default")});function t5e(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===F3&&e.documentElement.namespaceURI===F3?e.createElement(t):e.createElementNS(r,t)}}function r5e(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Jy(t){var e=rc(t);return(e.local?r5e:t5e)(e)}var SA=N(()=>{"use strict";$3();EA();o(t5e,"creatorInherit");o(r5e,"creatorFixed");o(Jy,"default")});function n5e(){}function xh(t){return t==null?n5e:function(){return this.querySelector(t)}}var z3=N(()=>{"use strict";o(n5e,"none");o(xh,"default")});function CA(t){typeof t!="function"&&(t=xh(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";hl();z3();o(CA,"default")});function AA(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}var hV=N(()=>{"use strict";o(AA,"array")});function i5e(){return[]}function v0(t){return t==null?i5e:function(){return this.querySelectorAll(t)}}var _A=N(()=>{"use strict";o(i5e,"empty");o(v0,"default")});function a5e(t){return function(){return AA(t.apply(this,arguments))}}function DA(t){typeof t=="function"?t=a5e(t):t=v0(t);for(var e=this._groups,r=e.length,n=[],i=[],a=0;a{"use strict";hl();hV();_A();o(a5e,"arrayAll");o(DA,"default")});function x0(t){return function(){return this.matches(t)}}function G3(t){return function(e){return e.matches(t)}}var ev=N(()=>{"use strict";o(x0,"default");o(G3,"childMatcher")});function o5e(t){return function(){return s5e.call(this.children,t)}}function l5e(){return this.firstElementChild}function LA(t){return this.select(t==null?l5e:o5e(typeof t=="function"?t:G3(t)))}var s5e,dV=N(()=>{"use strict";ev();s5e=Array.prototype.find;o(o5e,"childFind");o(l5e,"childFirst");o(LA,"default")});function u5e(){return Array.from(this.children)}function h5e(t){return function(){return c5e.call(this.children,t)}}function RA(t){return this.selectAll(t==null?u5e:h5e(typeof t=="function"?t:G3(t)))}var c5e,pV=N(()=>{"use strict";ev();c5e=Array.prototype.filter;o(u5e,"children");o(h5e,"childrenFilter");o(RA,"default")});function NA(t){typeof t!="function"&&(t=x0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";hl();ev();o(NA,"default")});function tv(t){return new Array(t.length)}var MA=N(()=>{"use strict";o(tv,"default")});function IA(){return new oi(this._enter||this._groups.map(tv),this._parents)}function rv(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}var OA=N(()=>{"use strict";MA();hl();o(IA,"default");o(rv,"EnterNode");rv.prototype={constructor:rv,appendChild:o(function(t){return this._parent.insertBefore(t,this._next)},"appendChild"),insertBefore:o(function(t,e){return this._parent.insertBefore(t,e)},"insertBefore"),querySelector:o(function(t){return this._parent.querySelector(t)},"querySelector"),querySelectorAll:o(function(t){return this._parent.querySelectorAll(t)},"querySelectorAll")}});function PA(t){return function(){return t}}var gV=N(()=>{"use strict";o(PA,"default")});function f5e(t,e,r,n,i,a){for(var s=0,l,u=e.length,h=a.length;s=w&&(w=b+1);!(T=v[w])&&++w{"use strict";hl();OA();gV();o(f5e,"bindIndex");o(d5e,"bindKey");o(p5e,"datum");o(BA,"default");o(m5e,"arraylike")});function FA(){return new oi(this._exit||this._groups.map(tv),this._parents)}var vV=N(()=>{"use strict";MA();hl();o(FA,"default")});function $A(t,e,r){var n=this.enter(),i=this,a=this.exit();return typeof t=="function"?(n=t(n),n&&(n=n.selection())):n=n.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),r==null?a.remove():r(a),n&&i?n.merge(i).order():i}var xV=N(()=>{"use strict";o($A,"default")});function zA(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,i=r.length,a=n.length,s=Math.min(i,a),l=new Array(i),u=0;u{"use strict";hl();o(zA,"default")});function GA(){for(var t=this._groups,e=-1,r=t.length;++e=0;)(s=n[i])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}var wV=N(()=>{"use strict";o(GA,"default")});function VA(t){t||(t=g5e);function e(d,p){return d&&p?t(d.__data__,p.__data__):!d-!p}o(e,"compareNode");for(var r=this._groups,n=r.length,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var TV=N(()=>{"use strict";hl();o(VA,"default");o(g5e,"ascending")});function UA(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}var kV=N(()=>{"use strict";o(UA,"default")});function HA(){return Array.from(this)}var EV=N(()=>{"use strict";o(HA,"default")});function WA(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(WA,"default")});function qA(){let t=0;for(let e of this)++t;return t}var CV=N(()=>{"use strict";o(qA,"default")});function YA(){return!this.node()}var AV=N(()=>{"use strict";o(YA,"default")});function XA(t){for(var e=this._groups,r=0,n=e.length;r{"use strict";o(XA,"default")});function y5e(t){return function(){this.removeAttribute(t)}}function v5e(t){return function(){this.removeAttributeNS(t.space,t.local)}}function x5e(t,e){return function(){this.setAttribute(t,e)}}function b5e(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function w5e(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function T5e(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function jA(t,e){var r=rc(t);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((e==null?r.local?v5e:y5e:typeof e=="function"?r.local?T5e:w5e:r.local?b5e:x5e)(r,e))}var DV=N(()=>{"use strict";$3();o(y5e,"attrRemove");o(v5e,"attrRemoveNS");o(x5e,"attrConstant");o(b5e,"attrConstantNS");o(w5e,"attrFunction");o(T5e,"attrFunctionNS");o(jA,"default")});function nv(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}var KA=N(()=>{"use strict";o(nv,"default")});function k5e(t){return function(){this.style.removeProperty(t)}}function E5e(t,e,r){return function(){this.style.setProperty(t,e,r)}}function S5e(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function QA(t,e,r){return arguments.length>1?this.each((e==null?k5e:typeof e=="function"?S5e:E5e)(t,e,r??"")):bh(this.node(),t)}function bh(t,e){return t.style.getPropertyValue(e)||nv(t).getComputedStyle(t,null).getPropertyValue(e)}var ZA=N(()=>{"use strict";KA();o(k5e,"styleRemove");o(E5e,"styleConstant");o(S5e,"styleFunction");o(QA,"default");o(bh,"styleValue")});function C5e(t){return function(){delete this[t]}}function A5e(t,e){return function(){this[t]=e}}function _5e(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function JA(t,e){return arguments.length>1?this.each((e==null?C5e:typeof e=="function"?_5e:A5e)(t,e)):this.node()[t]}var LV=N(()=>{"use strict";o(C5e,"propertyRemove");o(A5e,"propertyConstant");o(_5e,"propertyFunction");o(JA,"default")});function RV(t){return t.trim().split(/^|\s+/)}function e8(t){return t.classList||new NV(t)}function NV(t){this._node=t,this._names=RV(t.getAttribute("class")||"")}function MV(t,e){for(var r=e8(t),n=-1,i=e.length;++n{"use strict";o(RV,"classArray");o(e8,"classList");o(NV,"ClassList");NV.prototype={add:o(function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:o(function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:o(function(t){return this._names.indexOf(t)>=0},"contains")};o(MV,"classedAdd");o(IV,"classedRemove");o(D5e,"classedTrue");o(L5e,"classedFalse");o(R5e,"classedFunction");o(t8,"default")});function N5e(){this.textContent=""}function M5e(t){return function(){this.textContent=t}}function I5e(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function r8(t){return arguments.length?this.each(t==null?N5e:(typeof t=="function"?I5e:M5e)(t)):this.node().textContent}var PV=N(()=>{"use strict";o(N5e,"textRemove");o(M5e,"textConstant");o(I5e,"textFunction");o(r8,"default")});function O5e(){this.innerHTML=""}function P5e(t){return function(){this.innerHTML=t}}function B5e(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function n8(t){return arguments.length?this.each(t==null?O5e:(typeof t=="function"?B5e:P5e)(t)):this.node().innerHTML}var BV=N(()=>{"use strict";o(O5e,"htmlRemove");o(P5e,"htmlConstant");o(B5e,"htmlFunction");o(n8,"default")});function F5e(){this.nextSibling&&this.parentNode.appendChild(this)}function i8(){return this.each(F5e)}var FV=N(()=>{"use strict";o(F5e,"raise");o(i8,"default")});function $5e(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function a8(){return this.each($5e)}var $V=N(()=>{"use strict";o($5e,"lower");o(a8,"default")});function s8(t){var e=typeof t=="function"?t:Jy(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}var zV=N(()=>{"use strict";SA();o(s8,"default")});function z5e(){return null}function o8(t,e){var r=typeof t=="function"?t:Jy(t),n=e==null?z5e:typeof e=="function"?e:xh(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var GV=N(()=>{"use strict";SA();z3();o(z5e,"constantNull");o(o8,"default")});function G5e(){var t=this.parentNode;t&&t.removeChild(this)}function l8(){return this.each(G5e)}var VV=N(()=>{"use strict";o(G5e,"remove");o(l8,"default")});function V5e(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function U5e(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function c8(t){return this.select(t?U5e:V5e)}var UV=N(()=>{"use strict";o(V5e,"selection_cloneShallow");o(U5e,"selection_cloneDeep");o(c8,"default")});function u8(t){return arguments.length?this.property("__data__",t):this.node().__data__}var HV=N(()=>{"use strict";o(u8,"default")});function H5e(t){return function(e){t.call(this,e,this.__data__)}}function W5e(t){return t.trim().split(/^|\s+/).map(function(e){var r="",n=e.indexOf(".");return n>=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function q5e(t){return function(){var e=this.__on;if(e){for(var r=0,n=-1,i=e.length,a;r{"use strict";o(H5e,"contextListener");o(W5e,"parseTypenames");o(q5e,"onRemove");o(Y5e,"onAdd");o(h8,"default")});function qV(t,e,r){var n=nv(t),i=n.CustomEvent;typeof i=="function"?i=new i(e,r):(i=n.document.createEvent("Event"),r?(i.initEvent(e,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function X5e(t,e){return function(){return qV(this,t,e)}}function j5e(t,e){return function(){return qV(this,t,e.apply(this,arguments))}}function f8(t,e){return this.each((typeof e=="function"?j5e:X5e)(t,e))}var YV=N(()=>{"use strict";KA();o(qV,"dispatchEvent");o(X5e,"dispatchConstant");o(j5e,"dispatchFunction");o(f8,"default")});function*d8(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(d8,"default")});function oi(t,e){this._groups=t,this._parents=e}function jV(){return new oi([[document.documentElement]],p8)}function K5e(){return this}var p8,hu,hl=N(()=>{"use strict";uV();fV();dV();pV();mV();yV();OA();vV();xV();bV();wV();TV();kV();EV();SV();CV();AV();_V();DV();ZA();LV();OV();PV();BV();FV();$V();zV();GV();VV();UV();HV();WV();YV();XV();p8=[null];o(oi,"Selection");o(jV,"selection");o(K5e,"selection_selection");oi.prototype=jV.prototype={constructor:oi,select:CA,selectAll:DA,selectChild:LA,selectChildren:RA,filter:NA,data:BA,enter:IA,exit:FA,join:$A,merge:zA,selection:K5e,order:GA,sort:VA,call:UA,nodes:HA,node:WA,size:qA,empty:YA,each:XA,attr:jA,style:QA,property:JA,classed:t8,text:r8,html:n8,raise:i8,lower:a8,append:s8,insert:o8,remove:l8,clone:c8,datum:u8,on:h8,dispatch:f8,[Symbol.iterator]:d8};hu=jV});function Ge(t){return typeof t=="string"?new oi([[document.querySelector(t)]],[document.documentElement]):new oi([[t]],p8)}var KV=N(()=>{"use strict";hl();o(Ge,"default")});var fl=N(()=>{"use strict";ev();$3();KV();hl();z3();_A();ZA()});var QV=N(()=>{"use strict"});function wh(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function b0(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}var m8=N(()=>{"use strict";o(wh,"default");o(b0,"extend")});function Th(){}function JV(){return this.rgb().formatHex()}function iwe(){return this.rgb().formatHex8()}function awe(){return sU(this).formatHsl()}function eU(){return this.rgb().formatRgb()}function pl(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=Q5e.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?tU(e):r===3?new ua(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?V3(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?V3(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Z5e.exec(t))?new ua(e[1],e[2],e[3],1):(e=J5e.exec(t))?new ua(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=ewe.exec(t))?V3(e[1],e[2],e[3],e[4]):(e=twe.exec(t))?V3(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=rwe.exec(t))?iU(e[1],e[2]/100,e[3]/100,1):(e=nwe.exec(t))?iU(e[1],e[2]/100,e[3]/100,e[4]):ZV.hasOwnProperty(t)?tU(ZV[t]):t==="transparent"?new ua(NaN,NaN,NaN,0):null}function tU(t){return new ua(t>>16&255,t>>8&255,t&255,1)}function V3(t,e,r,n){return n<=0&&(t=e=r=NaN),new ua(t,e,r,n)}function y8(t){return t instanceof Th||(t=pl(t)),t?(t=t.rgb(),new ua(t.r,t.g,t.b,t.opacity)):new ua}function T0(t,e,r,n){return arguments.length===1?y8(t):new ua(t,e,r,n??1)}function ua(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function rU(){return`#${ld(this.r)}${ld(this.g)}${ld(this.b)}`}function swe(){return`#${ld(this.r)}${ld(this.g)}${ld(this.b)}${ld((isNaN(this.opacity)?1:this.opacity)*255)}`}function nU(){let t=W3(this.opacity);return`${t===1?"rgb(":"rgba("}${cd(this.r)}, ${cd(this.g)}, ${cd(this.b)}${t===1?")":`, ${t})`}`}function W3(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function cd(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ld(t){return t=cd(t),(t<16?"0":"")+t.toString(16)}function iU(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new dl(t,e,r,n)}function sU(t){if(t instanceof dl)return new dl(t.h,t.s,t.l,t.opacity);if(t instanceof Th||(t=pl(t)),!t)return new dl;if(t instanceof dl)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),a=Math.max(e,r,n),s=NaN,l=a-i,u=(a+i)/2;return l?(e===a?s=(r-n)/l+(r0&&u<1?0:s,new dl(s,l,u,t.opacity)}function oU(t,e,r,n){return arguments.length===1?sU(t):new dl(t,e,r,n??1)}function dl(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function aU(t){return t=(t||0)%360,t<0?t+360:t}function U3(t){return Math.max(0,Math.min(1,t||0))}function g8(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}var iv,H3,w0,av,nc,Q5e,Z5e,J5e,ewe,twe,rwe,nwe,ZV,v8=N(()=>{"use strict";m8();o(Th,"Color");iv=.7,H3=1/iv,w0="\\s*([+-]?\\d+)\\s*",av="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",nc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Q5e=/^#([0-9a-f]{3,8})$/,Z5e=new RegExp(`^rgb\\(${w0},${w0},${w0}\\)$`),J5e=new RegExp(`^rgb\\(${nc},${nc},${nc}\\)$`),ewe=new RegExp(`^rgba\\(${w0},${w0},${w0},${av}\\)$`),twe=new RegExp(`^rgba\\(${nc},${nc},${nc},${av}\\)$`),rwe=new RegExp(`^hsl\\(${av},${nc},${nc}\\)$`),nwe=new RegExp(`^hsla\\(${av},${nc},${nc},${av}\\)$`),ZV={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};wh(Th,pl,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:JV,formatHex:JV,formatHex8:iwe,formatHsl:awe,formatRgb:eU,toString:eU});o(JV,"color_formatHex");o(iwe,"color_formatHex8");o(awe,"color_formatHsl");o(eU,"color_formatRgb");o(pl,"color");o(tU,"rgbn");o(V3,"rgba");o(y8,"rgbConvert");o(T0,"rgb");o(ua,"Rgb");wh(ua,T0,b0(Th,{brighter(t){return t=t==null?H3:Math.pow(H3,t),new ua(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?iv:Math.pow(iv,t),new ua(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ua(cd(this.r),cd(this.g),cd(this.b),W3(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:rU,formatHex:rU,formatHex8:swe,formatRgb:nU,toString:nU}));o(rU,"rgb_formatHex");o(swe,"rgb_formatHex8");o(nU,"rgb_formatRgb");o(W3,"clampa");o(cd,"clampi");o(ld,"hex");o(iU,"hsla");o(sU,"hslConvert");o(oU,"hsl");o(dl,"Hsl");wh(dl,oU,b0(Th,{brighter(t){return t=t==null?H3:Math.pow(H3,t),new dl(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?iv:Math.pow(iv,t),new dl(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new ua(g8(t>=240?t-240:t+120,i,n),g8(t,i,n),g8(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new dl(aU(this.h),U3(this.s),U3(this.l),W3(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=W3(this.opacity);return`${t===1?"hsl(":"hsla("}${aU(this.h)}, ${U3(this.s)*100}%, ${U3(this.l)*100}%${t===1?")":`, ${t})`}`}}));o(aU,"clamph");o(U3,"clampt");o(g8,"hsl2rgb")});var lU,cU,uU=N(()=>{"use strict";lU=Math.PI/180,cU=180/Math.PI});function gU(t){if(t instanceof ic)return new ic(t.l,t.a,t.b,t.opacity);if(t instanceof fu)return yU(t);t instanceof ua||(t=y8(t));var e=T8(t.r),r=T8(t.g),n=T8(t.b),i=x8((.2225045*e+.7168786*r+.0606169*n)/fU),a,s;return e===r&&r===n?a=s=i:(a=x8((.4360747*e+.3850649*r+.1430804*n)/hU),s=x8((.0139322*e+.0971045*r+.7141733*n)/dU)),new ic(116*i-16,500*(a-i),200*(i-s),t.opacity)}function k8(t,e,r,n){return arguments.length===1?gU(t):new ic(t,e,r,n??1)}function ic(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function x8(t){return t>owe?Math.pow(t,1/3):t/mU+pU}function b8(t){return t>k0?t*t*t:mU*(t-pU)}function w8(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function T8(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function lwe(t){if(t instanceof fu)return new fu(t.h,t.c,t.l,t.opacity);if(t instanceof ic||(t=gU(t)),t.a===0&&t.b===0)return new fu(NaN,0{"use strict";m8();v8();uU();q3=18,hU=.96422,fU=1,dU=.82521,pU=4/29,k0=6/29,mU=3*k0*k0,owe=k0*k0*k0;o(gU,"labConvert");o(k8,"lab");o(ic,"Lab");wh(ic,k8,b0(Th,{brighter(t){return new ic(this.l+q3*(t??1),this.a,this.b,this.opacity)},darker(t){return new ic(this.l-q3*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return e=hU*b8(e),t=fU*b8(t),r=dU*b8(r),new ua(w8(3.1338561*e-1.6168667*t-.4906146*r),w8(-.9787684*e+1.9161415*t+.033454*r),w8(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}}));o(x8,"xyz2lab");o(b8,"lab2xyz");o(w8,"lrgb2rgb");o(T8,"rgb2lrgb");o(lwe,"hclConvert");o(sv,"hcl");o(fu,"Hcl");o(yU,"hcl2lab");wh(fu,sv,b0(Th,{brighter(t){return new fu(this.h,this.c,this.l+q3*(t??1),this.opacity)},darker(t){return new fu(this.h,this.c,this.l-q3*(t??1),this.opacity)},rgb(){return yU(this).rgb()}}))});var E0=N(()=>{"use strict";v8();vU()});function E8(t,e,r,n,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*r+(1+3*t+3*a-3*s)*n+s*i)/6}function S8(t){var e=t.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),i=t[n],a=t[n+1],s=n>0?t[n-1]:2*i-a,l=n{"use strict";o(E8,"basis");o(S8,"default")});function A8(t){var e=t.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*e),i=t[(n+e-1)%e],a=t[n%e],s=t[(n+1)%e],l=t[(n+2)%e];return E8((r-n/e)*e,i,a,s,l)}}var xU=N(()=>{"use strict";C8();o(A8,"default")});var S0,_8=N(()=>{"use strict";S0=o(t=>()=>t,"default")});function bU(t,e){return function(r){return t+r*e}}function cwe(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function wU(t,e){var r=e-t;return r?bU(t,r>180||r<-180?r-360*Math.round(r/360):r):S0(isNaN(t)?e:t)}function TU(t){return(t=+t)==1?du:function(e,r){return r-e?cwe(e,r,t):S0(isNaN(e)?r:e)}}function du(t,e){var r=e-t;return r?bU(t,r):S0(isNaN(t)?e:t)}var D8=N(()=>{"use strict";_8();o(bU,"linear");o(cwe,"exponential");o(wU,"hue");o(TU,"gamma");o(du,"nogamma")});function kU(t){return function(e){var r=e.length,n=new Array(r),i=new Array(r),a=new Array(r),s,l;for(s=0;s{"use strict";E0();C8();xU();D8();ud=o(function t(e){var r=TU(e);function n(i,a){var s=r((i=T0(i)).r,(a=T0(a)).r),l=r(i.g,a.g),u=r(i.b,a.b),h=du(i.opacity,a.opacity);return function(f){return i.r=s(f),i.g=l(f),i.b=u(f),i.opacity=h(f),i+""}}return o(n,"rgb"),n.gamma=t,n},"rgbGamma")(1);o(kU,"rgbSpline");uwe=kU(S8),hwe=kU(A8)});function R8(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),i;return function(a){for(i=0;i{"use strict";o(R8,"default");o(EU,"isNumberArray")});function CU(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,i=new Array(n),a=new Array(r),s;for(s=0;s{"use strict";Y3();o(CU,"genericArray")});function N8(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}var _U=N(()=>{"use strict";o(N8,"default")});function Ki(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var ov=N(()=>{"use strict";o(Ki,"default")});function M8(t,e){var r={},n={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?r[i]=kh(t[i],e[i]):n[i]=e[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var DU=N(()=>{"use strict";Y3();o(M8,"default")});function fwe(t){return function(){return t}}function dwe(t){return function(e){return t(e)+""}}function C0(t,e){var r=O8.lastIndex=I8.lastIndex=0,n,i,a,s=-1,l=[],u=[];for(t=t+"",e=e+"";(n=O8.exec(t))&&(i=I8.exec(e));)(a=i.index)>r&&(a=e.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(n=n[0])===(i=i[0])?l[s]?l[s]+=i:l[++s]=i:(l[++s]=null,u.push({i:s,x:Ki(n,i)})),r=I8.lastIndex;return r{"use strict";ov();O8=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,I8=new RegExp(O8.source,"g");o(fwe,"zero");o(dwe,"one");o(C0,"default")});function kh(t,e){var r=typeof e,n;return e==null||r==="boolean"?S0(e):(r==="number"?Ki:r==="string"?(n=pl(e))?(e=n,ud):C0:e instanceof pl?ud:e instanceof Date?N8:EU(e)?R8:Array.isArray(e)?CU:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?M8:Ki)(t,e)}var Y3=N(()=>{"use strict";E0();L8();AU();_U();ov();DU();P8();_8();SU();o(kh,"default")});function X3(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var LU=N(()=>{"use strict";o(X3,"default")});function K3(t,e,r,n,i,a){var s,l,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*r+e*n)&&(r-=t*u,n-=e*u),(l=Math.sqrt(r*r+n*n))&&(r/=l,n/=l,u/=l),t*n{"use strict";RU=180/Math.PI,j3={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};o(K3,"default")});function MU(t){let e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?j3:K3(e.a,e.b,e.c,e.d,e.e,e.f)}function IU(t){return t==null?j3:(Q3||(Q3=document.createElementNS("http://www.w3.org/2000/svg","g")),Q3.setAttribute("transform",t),(t=Q3.transform.baseVal.consolidate())?(t=t.matrix,K3(t.a,t.b,t.c,t.d,t.e,t.f)):j3)}var Q3,OU=N(()=>{"use strict";NU();o(MU,"parseCss");o(IU,"parseSvg")});function PU(t,e,r,n){function i(h){return h.length?h.pop()+" ":""}o(i,"pop");function a(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push("translate(",null,e,null,r);g.push({i:y-4,x:Ki(h,d)},{i:y-2,x:Ki(f,p)})}else(d||p)&&m.push("translate("+d+e+p+r)}o(a,"translate");function s(h,f,d,p){h!==f?(h-f>180?f+=360:f-h>180&&(h+=360),p.push({i:d.push(i(d)+"rotate(",null,n)-2,x:Ki(h,f)})):f&&d.push(i(d)+"rotate("+f+n)}o(s,"rotate");function l(h,f,d,p){h!==f?p.push({i:d.push(i(d)+"skewX(",null,n)-2,x:Ki(h,f)}):f&&d.push(i(d)+"skewX("+f+n)}o(l,"skewX");function u(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push(i(m)+"scale(",null,",",null,")");g.push({i:y-4,x:Ki(h,d)},{i:y-2,x:Ki(f,p)})}else(d!==1||p!==1)&&m.push(i(m)+"scale("+d+","+p+")")}return o(u,"scale"),function(h,f){var d=[],p=[];return h=t(h),f=t(f),a(h.translateX,h.translateY,f.translateX,f.translateY,d,p),s(h.rotate,f.rotate,d,p),l(h.skewX,f.skewX,d,p),u(h.scaleX,h.scaleY,f.scaleX,f.scaleY,d,p),h=f=null,function(m){for(var g=-1,y=p.length,v;++g{"use strict";ov();OU();o(PU,"interpolateTransform");B8=PU(MU,"px, ","px)","deg)"),F8=PU(IU,", ",")",")")});function FU(t){return function(e,r){var n=t((e=sv(e)).h,(r=sv(r)).h),i=du(e.c,r.c),a=du(e.l,r.l),s=du(e.opacity,r.opacity);return function(l){return e.h=n(l),e.c=i(l),e.l=a(l),e.opacity=s(l),e+""}}}var $8,pwe,$U=N(()=>{"use strict";E0();D8();o(FU,"hcl");$8=FU(wU),pwe=FU(du)});var A0=N(()=>{"use strict";Y3();ov();LU();P8();BU();L8();$U()});function dv(){return hd||(VU(mwe),hd=hv.now()+e5)}function mwe(){hd=0}function fv(){this._call=this._time=this._next=null}function t5(t,e,r){var n=new fv;return n.restart(t,e,r),n}function UU(){dv(),++_0;for(var t=Z3,e;t;)(e=hd-t._time)>=0&&t._call.call(void 0,e),t=t._next;--_0}function zU(){hd=(J3=hv.now())+e5,_0=cv=0;try{UU()}finally{_0=0,ywe(),hd=0}}function gwe(){var t=hv.now(),e=t-J3;e>GU&&(e5-=e,J3=t)}function ywe(){for(var t,e=Z3,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:Z3=r);uv=t,z8(n)}function z8(t){if(!_0){cv&&(cv=clearTimeout(cv));var e=t-hd;e>24?(t<1/0&&(cv=setTimeout(zU,t-hv.now()-e5)),lv&&(lv=clearInterval(lv))):(lv||(J3=hv.now(),lv=setInterval(gwe,GU)),_0=1,VU(zU))}}var _0,cv,lv,GU,Z3,uv,J3,hd,e5,hv,VU,G8=N(()=>{"use strict";_0=0,cv=0,lv=0,GU=1e3,J3=0,hd=0,e5=0,hv=typeof performance=="object"&&performance.now?performance:Date,VU=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};o(dv,"now");o(mwe,"clearNow");o(fv,"Timer");fv.prototype=t5.prototype={constructor:fv,restart:o(function(t,e,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?dv():+r)+(e==null?0:+e),!this._next&&uv!==this&&(uv?uv._next=this:Z3=this,uv=this),this._call=t,this._time=r,z8()},"restart"),stop:o(function(){this._call&&(this._call=null,this._time=1/0,z8())},"stop")};o(t5,"timer");o(UU,"timerFlush");o(zU,"wake");o(gwe,"poke");o(ywe,"nap");o(z8,"sleep")});function pv(t,e,r){var n=new fv;return e=e==null?0:+e,n.restart(i=>{n.stop(),t(i+e)},e,r),n}var HU=N(()=>{"use strict";G8();o(pv,"default")});var r5=N(()=>{"use strict";G8();HU()});function pu(t,e,r,n,i,a){var s=t.__transition;if(!s)t.__transition={};else if(r in s)return;bwe(t,r,{name:e,index:n,group:i,on:vwe,tween:xwe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:YU})}function gv(t,e){var r=Bi(t,e);if(r.state>YU)throw new Error("too late; already scheduled");return r}function ha(t,e){var r=Bi(t,e);if(r.state>n5)throw new Error("too late; already running");return r}function Bi(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function bwe(t,e,r){var n=t.__transition,i;n[e]=r,r.timer=t5(a,0,r.time);function a(h){r.state=WU,r.timer.restart(s,r.delay,r.time),r.delay<=h&&s(h-r.delay)}o(a,"schedule");function s(h){var f,d,p,m;if(r.state!==WU)return u();for(f in n)if(m=n[f],m.name===r.name){if(m.state===n5)return pv(s);m.state===qU?(m.state=mv,m.timer.stop(),m.on.call("interrupt",t,t.__data__,m.index,m.group),delete n[f]):+f{"use strict";TA();r5();vwe=wA("start","end","cancel","interrupt"),xwe=[],YU=0,WU=1,i5=2,n5=3,qU=4,a5=5,mv=6;o(pu,"default");o(gv,"init");o(ha,"set");o(Bi,"get");o(bwe,"create")});function yv(t,e){var r=t.__transition,n,i,a=!0,s;if(r){e=e==null?null:e+"";for(s in r){if((n=r[s]).name!==e){a=!1;continue}i=n.state>i5&&n.state{"use strict";Es();o(yv,"default")});function V8(t){return this.each(function(){yv(this,t)})}var jU=N(()=>{"use strict";XU();o(V8,"default")});function wwe(t,e){var r,n;return function(){var i=ha(this,t),a=i.tween;if(a!==r){n=r=a;for(var s=0,l=n.length;s{"use strict";Es();o(wwe,"tweenRemove");o(Twe,"tweenFunction");o(U8,"default");o(D0,"tweenValue")});function xv(t,e){var r;return(typeof e=="number"?Ki:e instanceof pl?ud:(r=pl(e))?(e=r,ud):C0)(t,e)}var H8=N(()=>{"use strict";E0();A0();o(xv,"default")});function kwe(t){return function(){this.removeAttribute(t)}}function Ewe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Swe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttribute(t);return s===i?null:s===n?a:a=e(n=s,r)}}function Cwe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===n?a:a=e(n=s,r)}}function Awe(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function _we(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function W8(t,e){var r=rc(t),n=r==="transform"?F8:xv;return this.attrTween(t,typeof e=="function"?(r.local?_we:Awe)(r,n,D0(this,"attr."+t,e)):e==null?(r.local?Ewe:kwe)(r):(r.local?Cwe:Swe)(r,n,e))}var KU=N(()=>{"use strict";A0();fl();vv();H8();o(kwe,"attrRemove");o(Ewe,"attrRemoveNS");o(Swe,"attrConstant");o(Cwe,"attrConstantNS");o(Awe,"attrFunction");o(_we,"attrFunctionNS");o(W8,"default")});function Dwe(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function Lwe(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function Rwe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&Lwe(t,a)),r}return o(i,"tween"),i._value=e,i}function Nwe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&Dwe(t,a)),r}return o(i,"tween"),i._value=e,i}function q8(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;var n=rc(t);return this.tween(r,(n.local?Rwe:Nwe)(n,e))}var QU=N(()=>{"use strict";fl();o(Dwe,"attrInterpolate");o(Lwe,"attrInterpolateNS");o(Rwe,"attrTweenNS");o(Nwe,"attrTween");o(q8,"default")});function Mwe(t,e){return function(){gv(this,t).delay=+e.apply(this,arguments)}}function Iwe(t,e){return e=+e,function(){gv(this,t).delay=e}}function Y8(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Mwe:Iwe)(e,t)):Bi(this.node(),e).delay}var ZU=N(()=>{"use strict";Es();o(Mwe,"delayFunction");o(Iwe,"delayConstant");o(Y8,"default")});function Owe(t,e){return function(){ha(this,t).duration=+e.apply(this,arguments)}}function Pwe(t,e){return e=+e,function(){ha(this,t).duration=e}}function X8(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Owe:Pwe)(e,t)):Bi(this.node(),e).duration}var JU=N(()=>{"use strict";Es();o(Owe,"durationFunction");o(Pwe,"durationConstant");o(X8,"default")});function Bwe(t,e){if(typeof e!="function")throw new Error;return function(){ha(this,t).ease=e}}function j8(t){var e=this._id;return arguments.length?this.each(Bwe(e,t)):Bi(this.node(),e).ease}var eH=N(()=>{"use strict";Es();o(Bwe,"easeConstant");o(j8,"default")});function Fwe(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!="function")throw new Error;ha(this,t).ease=r}}function K8(t){if(typeof t!="function")throw new Error;return this.each(Fwe(this._id,t))}var tH=N(()=>{"use strict";Es();o(Fwe,"easeVarying");o(K8,"default")});function Q8(t){typeof t!="function"&&(t=x0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";fl();fd();o(Q8,"default")});function Z8(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,i=r.length,a=Math.min(n,i),s=new Array(n),l=0;l{"use strict";fd();o(Z8,"default")});function $we(t){return(t+"").trim().split(/^|\s+/).every(function(e){var r=e.indexOf(".");return r>=0&&(e=e.slice(0,r)),!e||e==="start"})}function zwe(t,e,r){var n,i,a=$we(e)?gv:ha;return function(){var s=a(this,t),l=s.on;l!==n&&(i=(n=l).copy()).on(e,r),s.on=i}}function J8(t,e){var r=this._id;return arguments.length<2?Bi(this.node(),r).on.on(t):this.each(zwe(r,t,e))}var iH=N(()=>{"use strict";Es();o($we,"start");o(zwe,"onFunction");o(J8,"default")});function Gwe(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function e_(){return this.on("end.remove",Gwe(this._id))}var aH=N(()=>{"use strict";o(Gwe,"removeFunction");o(e_,"default")});function t_(t){var e=this._name,r=this._id;typeof t!="function"&&(t=xh(t));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s{"use strict";fl();fd();Es();o(t_,"default")});function r_(t){var e=this._name,r=this._id;typeof t!="function"&&(t=v0(t));for(var n=this._groups,i=n.length,a=[],s=[],l=0;l{"use strict";fl();fd();Es();o(r_,"default")});function n_(){return new Vwe(this._groups,this._parents)}var Vwe,lH=N(()=>{"use strict";fl();Vwe=hu.prototype.constructor;o(n_,"default")});function Uwe(t,e){var r,n,i;return function(){var a=bh(this,t),s=(this.style.removeProperty(t),bh(this,t));return a===s?null:a===r&&s===n?i:i=e(r=a,n=s)}}function cH(t){return function(){this.style.removeProperty(t)}}function Hwe(t,e,r){var n,i=r+"",a;return function(){var s=bh(this,t);return s===i?null:s===n?a:a=e(n=s,r)}}function Wwe(t,e,r){var n,i,a;return function(){var s=bh(this,t),l=r(this),u=l+"";return l==null&&(u=l=(this.style.removeProperty(t),bh(this,t))),s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l))}}function qwe(t,e){var r,n,i,a="style."+e,s="end."+a,l;return function(){var u=ha(this,t),h=u.on,f=u.value[a]==null?l||(l=cH(e)):void 0;(h!==r||i!==f)&&(n=(r=h).copy()).on(s,i=f),u.on=n}}function i_(t,e,r){var n=(t+="")=="transform"?B8:xv;return e==null?this.styleTween(t,Uwe(t,n)).on("end.style."+t,cH(t)):typeof e=="function"?this.styleTween(t,Wwe(t,n,D0(this,"style."+t,e))).each(qwe(this._id,t)):this.styleTween(t,Hwe(t,n,e),r).on("end.style."+t,null)}var uH=N(()=>{"use strict";A0();fl();Es();vv();H8();o(Uwe,"styleNull");o(cH,"styleRemove");o(Hwe,"styleConstant");o(Wwe,"styleFunction");o(qwe,"styleMaybeRemove");o(i_,"default")});function Ywe(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function Xwe(t,e,r){var n,i;function a(){var s=e.apply(this,arguments);return s!==i&&(n=(i=s)&&Ywe(t,s,r)),n}return o(a,"tween"),a._value=e,a}function a_(t,e,r){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;return this.tween(n,Xwe(t,e,r??""))}var hH=N(()=>{"use strict";o(Ywe,"styleInterpolate");o(Xwe,"styleTween");o(a_,"default")});function jwe(t){return function(){this.textContent=t}}function Kwe(t){return function(){var e=t(this);this.textContent=e??""}}function s_(t){return this.tween("text",typeof t=="function"?Kwe(D0(this,"text",t)):jwe(t==null?"":t+""))}var fH=N(()=>{"use strict";vv();o(jwe,"textConstant");o(Kwe,"textFunction");o(s_,"default")});function Qwe(t){return function(e){this.textContent=t.call(this,e)}}function Zwe(t){var e,r;function n(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&Qwe(i)),e}return o(n,"tween"),n._value=t,n}function o_(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,Zwe(t))}var dH=N(()=>{"use strict";o(Qwe,"textInterpolate");o(Zwe,"textTween");o(o_,"default")});function l_(){for(var t=this._name,e=this._id,r=s5(),n=this._groups,i=n.length,a=0;a{"use strict";fd();Es();o(l_,"default")});function c_(){var t,e,r=this,n=r._id,i=r.size();return new Promise(function(a,s){var l={value:s},u={value:o(function(){--i===0&&a()},"value")};r.each(function(){var h=ha(this,n),f=h.on;f!==t&&(e=(t=f).copy(),e._.cancel.push(l),e._.interrupt.push(l),e._.end.push(u)),h.on=e}),i===0&&a()})}var mH=N(()=>{"use strict";Es();o(c_,"default")});function es(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function gH(t){return hu().transition(t)}function s5(){return++Jwe}var Jwe,mu,fd=N(()=>{"use strict";fl();KU();QU();ZU();JU();eH();tH();rH();nH();iH();aH();sH();oH();lH();uH();hH();fH();dH();pH();vv();mH();Jwe=0;o(es,"Transition");o(gH,"transition");o(s5,"newId");mu=hu.prototype;es.prototype=gH.prototype={constructor:es,select:t_,selectAll:r_,selectChild:mu.selectChild,selectChildren:mu.selectChildren,filter:Q8,merge:Z8,selection:n_,transition:l_,call:mu.call,nodes:mu.nodes,node:mu.node,size:mu.size,empty:mu.empty,each:mu.each,on:J8,attr:W8,attrTween:q8,style:i_,styleTween:a_,text:s_,textTween:o_,remove:e_,tween:U8,delay:Y8,duration:X8,ease:j8,easeVarying:K8,end:c_,[Symbol.iterator]:mu[Symbol.iterator]}});function o5(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var yH=N(()=>{"use strict";o(o5,"cubicInOut")});var u_=N(()=>{"use strict";yH()});function tTe(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function h_(t){var e,r;t instanceof es?(e=t._id,t=t._name):(e=s5(),(r=eTe).time=dv(),t=t==null?null:t+"");for(var n=this._groups,i=n.length,a=0;a{"use strict";fd();Es();u_();r5();eTe={time:null,delay:0,duration:250,ease:o5};o(tTe,"inherit");o(h_,"default")});var xH=N(()=>{"use strict";fl();jU();vH();hu.prototype.interrupt=V8;hu.prototype.transition=h_});var l5=N(()=>{"use strict";xH()});var bH=N(()=>{"use strict"});var wH=N(()=>{"use strict"});var TH=N(()=>{"use strict"});function kH(t){return[+t[0],+t[1]]}function rTe(t){return[kH(t[0]),kH(t[1])]}function f_(t){return{type:t}}var Z0t,J0t,emt,tmt,rmt,nmt,EH=N(()=>{"use strict";l5();bH();wH();TH();({abs:Z0t,max:J0t,min:emt}=Math);o(kH,"number1");o(rTe,"number2");tmt={name:"x",handles:["w","e"].map(f_),input:o(function(t,e){return t==null?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},"input"),output:o(function(t){return t&&[t[0][0],t[1][0]]},"output")},rmt={name:"y",handles:["n","s"].map(f_),input:o(function(t,e){return t==null?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},"input"),output:o(function(t){return t&&[t[0][1],t[1][1]]},"output")},nmt={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(f_),input:o(function(t){return t==null?null:rTe(t)},"input"),output:o(function(t){return t},"output")};o(f_,"type")});var SH=N(()=>{"use strict";EH()});function CH(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return CH;let r=10**e;return function(n){this._+=n[0];for(let i=1,a=n.length;i{"use strict";d_=Math.PI,p_=2*d_,dd=1e-6,nTe=p_-dd;o(CH,"append");o(iTe,"appendRound");pd=class{static{o(this,"Path")}constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?CH:iTe(e)}moveTo(e,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,r){this._append`L${this._x1=+e},${this._y1=+r}`}quadraticCurveTo(e,r,n,i){this._append`Q${+e},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(e,r,n,i,a,s){this._append`C${+e},${+r},${+n},${+i},${this._x1=+a},${this._y1=+s}`}arcTo(e,r,n,i,a){if(e=+e,r=+r,n=+n,i=+i,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,l=this._y1,u=n-e,h=i-r,f=s-e,d=l-r,p=f*f+d*d;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(p>dd)if(!(Math.abs(d*u-h*f)>dd)||!a)this._append`L${this._x1=e},${this._y1=r}`;else{let m=n-s,g=i-l,y=u*u+h*h,v=m*m+g*g,x=Math.sqrt(y),b=Math.sqrt(p),w=a*Math.tan((d_-Math.acos((y+p-v)/(2*x*b)))/2),C=w/b,T=w/x;Math.abs(C-1)>dd&&this._append`L${e+C*f},${r+C*d}`,this._append`A${a},${a},0,0,${+(d*m>f*g)},${this._x1=e+T*u},${this._y1=r+T*h}`}}arc(e,r,n,i,a,s){if(e=+e,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let l=n*Math.cos(i),u=n*Math.sin(i),h=e+l,f=r+u,d=1^s,p=s?i-a:a-i;this._x1===null?this._append`M${h},${f}`:(Math.abs(this._x1-h)>dd||Math.abs(this._y1-f)>dd)&&this._append`L${h},${f}`,n&&(p<0&&(p=p%p_+p_),p>nTe?this._append`A${n},${n},0,1,${d},${e-l},${r-u}A${n},${n},0,1,${d},${this._x1=h},${this._y1=f}`:p>dd&&this._append`A${n},${n},0,${+(p>=d_)},${d},${this._x1=e+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(e,r,n,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};o(AH,"path");AH.prototype=pd.prototype});var m_=N(()=>{"use strict";_H()});var DH=N(()=>{"use strict"});var LH=N(()=>{"use strict"});var RH=N(()=>{"use strict"});var NH=N(()=>{"use strict"});var MH=N(()=>{"use strict"});var IH=N(()=>{"use strict"});var OH=N(()=>{"use strict"});function g_(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function md(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}var bv=N(()=>{"use strict";o(g_,"default");o(md,"formatDecimalParts")});function ml(t){return t=md(Math.abs(t)),t?t[1]:NaN}var wv=N(()=>{"use strict";bv();o(ml,"default")});function y_(t,e){return function(r,n){for(var i=r.length,a=[],s=0,l=t[0],u=0;i>0&&l>0&&(u+l+1>n&&(l=Math.max(1,n-u)),a.push(r.substring(i-=l,i+l)),!((u+=l+1)>n));)l=t[s=(s+1)%t.length];return a.reverse().join(e)}}var PH=N(()=>{"use strict";o(y_,"default")});function v_(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var BH=N(()=>{"use strict";o(v_,"default")});function Eh(t){if(!(e=aTe.exec(t)))throw new Error("invalid format: "+t);var e;return new c5({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function c5(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}var aTe,x_=N(()=>{"use strict";aTe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;o(Eh,"formatSpecifier");Eh.prototype=c5.prototype;o(c5,"FormatSpecifier");c5.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function b_(t){e:for(var e=t.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(i+1):t}var FH=N(()=>{"use strict";o(b_,"default")});function T_(t,e){var r=md(t,e);if(!r)return t+"";var n=r[0],i=r[1],a=i-(w_=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+md(t,Math.max(0,e+a-1))[0]}var w_,k_=N(()=>{"use strict";bv();o(T_,"default")});function u5(t,e){var r=md(t,e);if(!r)return t+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var $H=N(()=>{"use strict";bv();o(u5,"default")});var E_,zH=N(()=>{"use strict";bv();k_();$H();E_={"%":o((t,e)=>(t*100).toFixed(e),"%"),b:o(t=>Math.round(t).toString(2),"b"),c:o(t=>t+"","c"),d:g_,e:o((t,e)=>t.toExponential(e),"e"),f:o((t,e)=>t.toFixed(e),"f"),g:o((t,e)=>t.toPrecision(e),"g"),o:o(t=>Math.round(t).toString(8),"o"),p:o((t,e)=>u5(t*100,e),"p"),r:u5,s:T_,X:o(t=>Math.round(t).toString(16).toUpperCase(),"X"),x:o(t=>Math.round(t).toString(16),"x")}});function h5(t){return t}var GH=N(()=>{"use strict";o(h5,"default")});function S_(t){var e=t.grouping===void 0||t.thousands===void 0?h5:y_(VH.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",a=t.numerals===void 0?h5:v_(VH.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",l=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function h(d){d=Eh(d);var p=d.fill,m=d.align,g=d.sign,y=d.symbol,v=d.zero,x=d.width,b=d.comma,w=d.precision,C=d.trim,T=d.type;T==="n"?(b=!0,T="g"):E_[T]||(w===void 0&&(w=12),C=!0,T="g"),(v||p==="0"&&m==="=")&&(v=!0,p="0",m="=");var E=y==="$"?r:y==="#"&&/[boxX]/.test(T)?"0"+T.toLowerCase():"",A=y==="$"?n:/[%p]/.test(T)?s:"",S=E_[T],_=/[defgprs%]/.test(T);w=w===void 0?6:/[gprs]/.test(T)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function I(D){var k=E,L=A,R,O,M;if(T==="c")L=S(D)+L,D="";else{D=+D;var B=D<0||1/D<0;if(D=isNaN(D)?u:S(Math.abs(D),w),C&&(D=b_(D)),B&&+D==0&&g!=="+"&&(B=!1),k=(B?g==="("?g:l:g==="-"||g==="("?"":g)+k,L=(T==="s"?UH[8+w_/3]:"")+L+(B&&g==="("?")":""),_){for(R=-1,O=D.length;++RM||M>57){L=(M===46?i+D.slice(R+1):D.slice(R))+L,D=D.slice(0,R);break}}}b&&!v&&(D=e(D,1/0));var F=k.length+D.length+L.length,P=F>1)+k+D+L+P.slice(F);break;default:D=P+k+D+L;break}return a(D)}return o(I,"format"),I.toString=function(){return d+""},I}o(h,"newFormat");function f(d,p){var m=h((d=Eh(d),d.type="f",d)),g=Math.max(-8,Math.min(8,Math.floor(ml(p)/3)))*3,y=Math.pow(10,-g),v=UH[8+g/3];return function(x){return m(y*x)+v}}return o(f,"formatPrefix"),{format:h,formatPrefix:f}}var VH,UH,HH=N(()=>{"use strict";wv();PH();BH();x_();FH();zH();k_();GH();VH=Array.prototype.map,UH=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];o(S_,"default")});function C_(t){return f5=S_(t),d5=f5.format,p5=f5.formatPrefix,f5}var f5,d5,p5,WH=N(()=>{"use strict";HH();C_({thousands:",",grouping:[3],currency:["$",""]});o(C_,"defaultLocale")});function m5(t){return Math.max(0,-ml(Math.abs(t)))}var qH=N(()=>{"use strict";wv();o(m5,"default")});function g5(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(ml(e)/3)))*3-ml(Math.abs(t)))}var YH=N(()=>{"use strict";wv();o(g5,"default")});function y5(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,ml(e)-ml(t))+1}var XH=N(()=>{"use strict";wv();o(y5,"default")});var A_=N(()=>{"use strict";WH();x_();qH();YH();XH()});var jH=N(()=>{"use strict"});var KH=N(()=>{"use strict"});var QH=N(()=>{"use strict"});var ZH=N(()=>{"use strict"});function Sh(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}var Tv=N(()=>{"use strict";o(Sh,"initRange")});function gu(){var t=new g0,e=[],r=[],n=__;function i(a){let s=t.get(a);if(s===void 0){if(n!==__)return n;t.set(a,s=e.push(a)-1)}return r[s%r.length]}return o(i,"scale"),i.domain=function(a){if(!arguments.length)return e.slice();e=[],t=new g0;for(let s of a)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return gu(e,r).unknown(n)},Sh.apply(i,arguments),i}var __,D_=N(()=>{"use strict";vh();Tv();__=Symbol("implicit");o(gu,"ordinal")});function L0(){var t=gu().unknown(void 0),e=t.domain,r=t.range,n=0,i=1,a,s,l=!1,u=0,h=0,f=.5;delete t.unknown;function d(){var p=e().length,m=i{"use strict";vh();Tv();D_();o(L0,"band")});function L_(t){return function(){return t}}var eW=N(()=>{"use strict";o(L_,"constants")});function R_(t){return+t}var tW=N(()=>{"use strict";o(R_,"number")});function R0(t){return t}function N_(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:L_(isNaN(e)?NaN:.5)}function sTe(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function oTe(t,e,r){var n=t[0],i=t[1],a=e[0],s=e[1];return i2?lTe:oTe,u=h=null,d}o(f,"rescale");function d(p){return p==null||isNaN(p=+p)?a:(u||(u=l(t.map(n),e,r)))(n(s(p)))}return o(d,"scale"),d.invert=function(p){return s(i((h||(h=l(e,t.map(n),Ki)))(p)))},d.domain=function(p){return arguments.length?(t=Array.from(p,R_),f()):t.slice()},d.range=function(p){return arguments.length?(e=Array.from(p),f()):e.slice()},d.rangeRound=function(p){return e=Array.from(p),r=X3,f()},d.clamp=function(p){return arguments.length?(s=p?!0:R0,f()):s!==R0},d.interpolate=function(p){return arguments.length?(r=p,f()):r},d.unknown=function(p){return arguments.length?(a=p,d):a},function(p,m){return n=p,i=m,f()}}function kv(){return cTe()(R0,R0)}var rW,M_=N(()=>{"use strict";vh();A0();eW();tW();rW=[0,1];o(R0,"identity");o(N_,"normalize");o(sTe,"clamper");o(oTe,"bimap");o(lTe,"polymap");o(v5,"copy");o(cTe,"transformer");o(kv,"continuous")});function I_(t,e,r,n){var i=y0(t,e,r),a;switch(n=Eh(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(a=g5(i,s))&&(n.precision=a),p5(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=y5(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=m5(i))&&(n.precision=a-(n.type==="%")*2);break}}return d5(n)}var nW=N(()=>{"use strict";vh();A_();o(I_,"tickFormat")});function uTe(t){var e=t.domain;return t.ticks=function(r){var n=e();return R3(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return I_(i[0],i[i.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),i=0,a=n.length-1,s=n[i],l=n[a],u,h,f=10;for(l0;){if(h=Zy(s,l,r),h===u)return n[i]=s,n[a]=l,e(n);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return t},t}function gl(){var t=kv();return t.copy=function(){return v5(t,gl())},Sh.apply(t,arguments),uTe(t)}var iW=N(()=>{"use strict";vh();M_();Tv();nW();o(uTe,"linearish");o(gl,"linear")});function O_(t,e){t=t.slice();var r=0,n=t.length-1,i=t[r],a=t[n],s;return a{"use strict";o(O_,"nice")});function xn(t,e,r,n){function i(a){return t(a=arguments.length===0?new Date:new Date(+a)),a}return o(i,"interval"),i.floor=a=>(t(a=new Date(+a)),a),i.ceil=a=>(t(a=new Date(a-1)),e(a,1),t(a),a),i.round=a=>{let s=i(a),l=i.ceil(a);return a-s(e(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,l)=>{let u=[];if(a=i.ceil(a),l=l==null?1:Math.floor(l),!(a0))return u;let h;do u.push(h=new Date(+a)),e(a,l),t(a);while(hxn(s=>{if(s>=s)for(;t(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;e(s,-1),!a(s););else for(;--l>=0;)for(;e(s,1),!a(s););}),r&&(i.count=(a,s)=>(P_.setTime(+a),B_.setTime(+s),t(P_),t(B_),Math.floor(r(P_,B_))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}var P_,B_,yu=N(()=>{"use strict";P_=new Date,B_=new Date;o(xn,"timeInterval")});var ac,sW,F_=N(()=>{"use strict";yu();ac=xn(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);ac.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?xn(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):ac);sW=ac.range});var Ks,oW,$_=N(()=>{"use strict";yu();Ks=xn(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),oW=Ks.range});var vu,hTe,x5,fTe,z_=N(()=>{"use strict";yu();vu=xn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),hTe=vu.range,x5=xn(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),fTe=x5.range});var xu,dTe,b5,pTe,G_=N(()=>{"use strict";yu();xu=xn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),dTe=xu.range,b5=xn(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),pTe=b5.range});var _o,mTe,Sv,gTe,w5,yTe,V_=N(()=>{"use strict";yu();_o=xn(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),mTe=_o.range,Sv=xn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),gTe=Sv.range,w5=xn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),yTe=w5.range});function vd(t){return xn(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}function xd(t){return xn(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/6048e5)}var yl,Ch,T5,k5,oc,E5,S5,cW,vTe,xTe,bTe,wTe,TTe,kTe,bd,N0,uW,hW,Ah,fW,dW,pW,ETe,STe,CTe,ATe,_Te,DTe,U_=N(()=>{"use strict";yu();o(vd,"timeWeekday");yl=vd(0),Ch=vd(1),T5=vd(2),k5=vd(3),oc=vd(4),E5=vd(5),S5=vd(6),cW=yl.range,vTe=Ch.range,xTe=T5.range,bTe=k5.range,wTe=oc.range,TTe=E5.range,kTe=S5.range;o(xd,"utcWeekday");bd=xd(0),N0=xd(1),uW=xd(2),hW=xd(3),Ah=xd(4),fW=xd(5),dW=xd(6),pW=bd.range,ETe=N0.range,STe=uW.range,CTe=hW.range,ATe=Ah.range,_Te=fW.range,DTe=dW.range});var bu,LTe,C5,RTe,H_=N(()=>{"use strict";yu();bu=xn(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),LTe=bu.range,C5=xn(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),RTe=C5.range});var Qs,NTe,vl,MTe,W_=N(()=>{"use strict";yu();Qs=xn(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());Qs.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:xn(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});NTe=Qs.range,vl=xn(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());vl.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:xn(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});MTe=vl.range});function gW(t,e,r,n,i,a){let s=[[Ks,1,1e3],[Ks,5,5*1e3],[Ks,15,15*1e3],[Ks,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function l(h,f,d){let p=fv).right(s,p);if(m===s.length)return t.every(y0(h/31536e6,f/31536e6,d));if(m===0)return ac.every(Math.max(y0(h,f,d),1));let[g,y]=s[p/s[m-1][2]{"use strict";vh();F_();$_();z_();G_();V_();U_();H_();W_();o(gW,"ticker");[OTe,PTe]=gW(vl,C5,bd,w5,b5,x5),[q_,Y_]=gW(Qs,bu,yl,_o,xu,vu)});var A5=N(()=>{"use strict";F_();$_();z_();G_();V_();U_();H_();W_();yW()});function X_(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function j_(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Cv(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function K_(t){var e=t.dateTime,r=t.date,n=t.time,i=t.periods,a=t.days,s=t.shortDays,l=t.months,u=t.shortMonths,h=Av(i),f=_v(i),d=Av(a),p=_v(a),m=Av(s),g=_v(s),y=Av(l),v=_v(l),x=Av(u),b=_v(u),w={a:B,A:F,b:P,B:z,c:null,d:kW,e:kW,f:ake,g:mke,G:yke,H:rke,I:nke,j:ike,L:_W,m:ske,M:oke,p:$,q:H,Q:CW,s:AW,S:lke,u:cke,U:uke,V:hke,w:fke,W:dke,x:null,X:null,y:pke,Y:gke,Z:vke,"%":SW},C={a:Q,A:j,b:ie,B:ne,c:null,d:EW,e:EW,f:Tke,g:Nke,G:Ike,H:xke,I:bke,j:wke,L:LW,m:kke,M:Eke,p:le,q:he,Q:CW,s:AW,S:Ske,u:Cke,U:Ake,V:_ke,w:Dke,W:Lke,x:null,X:null,y:Rke,Y:Mke,Z:Oke,"%":SW},T={a:I,A:D,b:k,B:L,c:R,d:wW,e:wW,f:ZTe,g:bW,G:xW,H:TW,I:TW,j:XTe,L:QTe,m:YTe,M:jTe,p:_,q:qTe,Q:eke,s:tke,S:KTe,u:GTe,U:VTe,V:UTe,w:zTe,W:HTe,x:O,X:M,y:bW,Y:xW,Z:WTe,"%":JTe};w.x=E(r,w),w.X=E(n,w),w.c=E(e,w),C.x=E(r,C),C.X=E(n,C),C.c=E(e,C);function E(K,X){return function(te){var J=[],se=-1,ue=0,Z=K.length,Se,ce,ae;for(te instanceof Date||(te=new Date(+te));++se53)return null;"w"in J||(J.w=1),"Z"in J?(ue=j_(Cv(J.y,0,1)),Z=ue.getUTCDay(),ue=Z>4||Z===0?N0.ceil(ue):N0(ue),ue=Sv.offset(ue,(J.V-1)*7),J.y=ue.getUTCFullYear(),J.m=ue.getUTCMonth(),J.d=ue.getUTCDate()+(J.w+6)%7):(ue=X_(Cv(J.y,0,1)),Z=ue.getDay(),ue=Z>4||Z===0?Ch.ceil(ue):Ch(ue),ue=_o.offset(ue,(J.V-1)*7),J.y=ue.getFullYear(),J.m=ue.getMonth(),J.d=ue.getDate()+(J.w+6)%7)}else("W"in J||"U"in J)&&("w"in J||(J.w="u"in J?J.u%7:"W"in J?1:0),Z="Z"in J?j_(Cv(J.y,0,1)).getUTCDay():X_(Cv(J.y,0,1)).getDay(),J.m=0,J.d="W"in J?(J.w+6)%7+J.W*7-(Z+5)%7:J.w+J.U*7-(Z+6)%7);return"Z"in J?(J.H+=J.Z/100|0,J.M+=J.Z%100,j_(J)):X_(J)}}o(A,"newParse");function S(K,X,te,J){for(var se=0,ue=X.length,Z=te.length,Se,ce;se=Z)return-1;if(Se=X.charCodeAt(se++),Se===37){if(Se=X.charAt(se++),ce=T[Se in vW?X.charAt(se++):Se],!ce||(J=ce(K,te,J))<0)return-1}else if(Se!=te.charCodeAt(J++))return-1}return J}o(S,"parseSpecifier");function _(K,X,te){var J=h.exec(X.slice(te));return J?(K.p=f.get(J[0].toLowerCase()),te+J[0].length):-1}o(_,"parsePeriod");function I(K,X,te){var J=m.exec(X.slice(te));return J?(K.w=g.get(J[0].toLowerCase()),te+J[0].length):-1}o(I,"parseShortWeekday");function D(K,X,te){var J=d.exec(X.slice(te));return J?(K.w=p.get(J[0].toLowerCase()),te+J[0].length):-1}o(D,"parseWeekday");function k(K,X,te){var J=x.exec(X.slice(te));return J?(K.m=b.get(J[0].toLowerCase()),te+J[0].length):-1}o(k,"parseShortMonth");function L(K,X,te){var J=y.exec(X.slice(te));return J?(K.m=v.get(J[0].toLowerCase()),te+J[0].length):-1}o(L,"parseMonth");function R(K,X,te){return S(K,e,X,te)}o(R,"parseLocaleDateTime");function O(K,X,te){return S(K,r,X,te)}o(O,"parseLocaleDate");function M(K,X,te){return S(K,n,X,te)}o(M,"parseLocaleTime");function B(K){return s[K.getDay()]}o(B,"formatShortWeekday");function F(K){return a[K.getDay()]}o(F,"formatWeekday");function P(K){return u[K.getMonth()]}o(P,"formatShortMonth");function z(K){return l[K.getMonth()]}o(z,"formatMonth");function $(K){return i[+(K.getHours()>=12)]}o($,"formatPeriod");function H(K){return 1+~~(K.getMonth()/3)}o(H,"formatQuarter");function Q(K){return s[K.getUTCDay()]}o(Q,"formatUTCShortWeekday");function j(K){return a[K.getUTCDay()]}o(j,"formatUTCWeekday");function ie(K){return u[K.getUTCMonth()]}o(ie,"formatUTCShortMonth");function ne(K){return l[K.getUTCMonth()]}o(ne,"formatUTCMonth");function le(K){return i[+(K.getUTCHours()>=12)]}o(le,"formatUTCPeriod");function he(K){return 1+~~(K.getUTCMonth()/3)}return o(he,"formatUTCQuarter"),{format:o(function(K){var X=E(K+="",w);return X.toString=function(){return K},X},"format"),parse:o(function(K){var X=A(K+="",!1);return X.toString=function(){return K},X},"parse"),utcFormat:o(function(K){var X=E(K+="",C);return X.toString=function(){return K},X},"utcFormat"),utcParse:o(function(K){var X=A(K+="",!0);return X.toString=function(){return K},X},"utcParse")}}function Wr(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a[e.toLowerCase(),r]))}function zTe(t,e,r){var n=Qi.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function GTe(t,e,r){var n=Qi.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function VTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function UTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function HTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function xW(t,e,r){var n=Qi.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function bW(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function WTe(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function qTe(t,e,r){var n=Qi.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function YTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function wW(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function XTe(t,e,r){var n=Qi.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function TW(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function jTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function KTe(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function QTe(t,e,r){var n=Qi.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function ZTe(t,e,r){var n=Qi.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function JTe(t,e,r){var n=BTe.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function eke(t,e,r){var n=Qi.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function tke(t,e,r){var n=Qi.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function kW(t,e){return Wr(t.getDate(),e,2)}function rke(t,e){return Wr(t.getHours(),e,2)}function nke(t,e){return Wr(t.getHours()%12||12,e,2)}function ike(t,e){return Wr(1+_o.count(Qs(t),t),e,3)}function _W(t,e){return Wr(t.getMilliseconds(),e,3)}function ake(t,e){return _W(t,e)+"000"}function ske(t,e){return Wr(t.getMonth()+1,e,2)}function oke(t,e){return Wr(t.getMinutes(),e,2)}function lke(t,e){return Wr(t.getSeconds(),e,2)}function cke(t){var e=t.getDay();return e===0?7:e}function uke(t,e){return Wr(yl.count(Qs(t)-1,t),e,2)}function DW(t){var e=t.getDay();return e>=4||e===0?oc(t):oc.ceil(t)}function hke(t,e){return t=DW(t),Wr(oc.count(Qs(t),t)+(Qs(t).getDay()===4),e,2)}function fke(t){return t.getDay()}function dke(t,e){return Wr(Ch.count(Qs(t)-1,t),e,2)}function pke(t,e){return Wr(t.getFullYear()%100,e,2)}function mke(t,e){return t=DW(t),Wr(t.getFullYear()%100,e,2)}function gke(t,e){return Wr(t.getFullYear()%1e4,e,4)}function yke(t,e){var r=t.getDay();return t=r>=4||r===0?oc(t):oc.ceil(t),Wr(t.getFullYear()%1e4,e,4)}function vke(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Wr(e/60|0,"0",2)+Wr(e%60,"0",2)}function EW(t,e){return Wr(t.getUTCDate(),e,2)}function xke(t,e){return Wr(t.getUTCHours(),e,2)}function bke(t,e){return Wr(t.getUTCHours()%12||12,e,2)}function wke(t,e){return Wr(1+Sv.count(vl(t),t),e,3)}function LW(t,e){return Wr(t.getUTCMilliseconds(),e,3)}function Tke(t,e){return LW(t,e)+"000"}function kke(t,e){return Wr(t.getUTCMonth()+1,e,2)}function Eke(t,e){return Wr(t.getUTCMinutes(),e,2)}function Ske(t,e){return Wr(t.getUTCSeconds(),e,2)}function Cke(t){var e=t.getUTCDay();return e===0?7:e}function Ake(t,e){return Wr(bd.count(vl(t)-1,t),e,2)}function RW(t){var e=t.getUTCDay();return e>=4||e===0?Ah(t):Ah.ceil(t)}function _ke(t,e){return t=RW(t),Wr(Ah.count(vl(t),t)+(vl(t).getUTCDay()===4),e,2)}function Dke(t){return t.getUTCDay()}function Lke(t,e){return Wr(N0.count(vl(t)-1,t),e,2)}function Rke(t,e){return Wr(t.getUTCFullYear()%100,e,2)}function Nke(t,e){return t=RW(t),Wr(t.getUTCFullYear()%100,e,2)}function Mke(t,e){return Wr(t.getUTCFullYear()%1e4,e,4)}function Ike(t,e){var r=t.getUTCDay();return t=r>=4||r===0?Ah(t):Ah.ceil(t),Wr(t.getUTCFullYear()%1e4,e,4)}function Oke(){return"+0000"}function SW(){return"%"}function CW(t){return+t}function AW(t){return Math.floor(+t/1e3)}var vW,Qi,BTe,FTe,NW=N(()=>{"use strict";A5();o(X_,"localDate");o(j_,"utcDate");o(Cv,"newDate");o(K_,"formatLocale");vW={"-":"",_:" ",0:"0"},Qi=/^\s*\d+/,BTe=/^%/,FTe=/[\\^$*+?|[\]().{}]/g;o(Wr,"pad");o($Te,"requote");o(Av,"formatRe");o(_v,"formatLookup");o(zTe,"parseWeekdayNumberSunday");o(GTe,"parseWeekdayNumberMonday");o(VTe,"parseWeekNumberSunday");o(UTe,"parseWeekNumberISO");o(HTe,"parseWeekNumberMonday");o(xW,"parseFullYear");o(bW,"parseYear");o(WTe,"parseZone");o(qTe,"parseQuarter");o(YTe,"parseMonthNumber");o(wW,"parseDayOfMonth");o(XTe,"parseDayOfYear");o(TW,"parseHour24");o(jTe,"parseMinutes");o(KTe,"parseSeconds");o(QTe,"parseMilliseconds");o(ZTe,"parseMicroseconds");o(JTe,"parseLiteralPercent");o(eke,"parseUnixTimestamp");o(tke,"parseUnixTimestampSeconds");o(kW,"formatDayOfMonth");o(rke,"formatHour24");o(nke,"formatHour12");o(ike,"formatDayOfYear");o(_W,"formatMilliseconds");o(ake,"formatMicroseconds");o(ske,"formatMonthNumber");o(oke,"formatMinutes");o(lke,"formatSeconds");o(cke,"formatWeekdayNumberMonday");o(uke,"formatWeekNumberSunday");o(DW,"dISO");o(hke,"formatWeekNumberISO");o(fke,"formatWeekdayNumberSunday");o(dke,"formatWeekNumberMonday");o(pke,"formatYear");o(mke,"formatYearISO");o(gke,"formatFullYear");o(yke,"formatFullYearISO");o(vke,"formatZone");o(EW,"formatUTCDayOfMonth");o(xke,"formatUTCHour24");o(bke,"formatUTCHour12");o(wke,"formatUTCDayOfYear");o(LW,"formatUTCMilliseconds");o(Tke,"formatUTCMicroseconds");o(kke,"formatUTCMonthNumber");o(Eke,"formatUTCMinutes");o(Ske,"formatUTCSeconds");o(Cke,"formatUTCWeekdayNumberMonday");o(Ake,"formatUTCWeekNumberSunday");o(RW,"UTCdISO");o(_ke,"formatUTCWeekNumberISO");o(Dke,"formatUTCWeekdayNumberSunday");o(Lke,"formatUTCWeekNumberMonday");o(Rke,"formatUTCYear");o(Nke,"formatUTCYearISO");o(Mke,"formatUTCFullYear");o(Ike,"formatUTCFullYearISO");o(Oke,"formatUTCZone");o(SW,"formatLiteralPercent");o(CW,"formatUnixTimestamp");o(AW,"formatUnixTimestampSeconds")});function Q_(t){return M0=K_(t),wd=M0.format,MW=M0.parse,IW=M0.utcFormat,OW=M0.utcParse,M0}var M0,wd,MW,IW,OW,PW=N(()=>{"use strict";NW();Q_({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});o(Q_,"defaultLocale")});var Z_=N(()=>{"use strict";PW()});function Pke(t){return new Date(t)}function Bke(t){return t instanceof Date?+t:+new Date(+t)}function BW(t,e,r,n,i,a,s,l,u,h){var f=kv(),d=f.invert,p=f.domain,m=h(".%L"),g=h(":%S"),y=h("%I:%M"),v=h("%I %p"),x=h("%a %d"),b=h("%b %d"),w=h("%B"),C=h("%Y");function T(E){return(u(E){"use strict";A5();Z_();M_();Tv();aW();o(Pke,"date");o(Bke,"number");o(BW,"calendar");o(_5,"time")});var $W=N(()=>{"use strict";JH();iW();D_();FW()});function J_(t){for(var e=t.length/6|0,r=new Array(e),n=0;n{"use strict";o(J_,"default")});var e9,GW=N(()=>{"use strict";zW();e9=J_("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var VW=N(()=>{"use strict";GW()});function Bn(t){return o(function(){return t},"constant")}var D5=N(()=>{"use strict";o(Bn,"default")});function HW(t){return t>1?0:t<-1?I0:Math.acos(t)}function r9(t){return t>=1?Dv:t<=-1?-Dv:Math.asin(t)}var t9,fa,_h,UW,L5,xl,Td,Zi,I0,Dv,O0,R5=N(()=>{"use strict";t9=Math.abs,fa=Math.atan2,_h=Math.cos,UW=Math.max,L5=Math.min,xl=Math.sin,Td=Math.sqrt,Zi=1e-12,I0=Math.PI,Dv=I0/2,O0=2*I0;o(HW,"acos");o(r9,"asin")});function N5(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);e=n}return t},()=>new pd(e)}var n9=N(()=>{"use strict";m_();o(N5,"withPath")});function Fke(t){return t.innerRadius}function $ke(t){return t.outerRadius}function zke(t){return t.startAngle}function Gke(t){return t.endAngle}function Vke(t){return t&&t.padAngle}function Uke(t,e,r,n,i,a,s,l){var u=r-t,h=n-e,f=s-i,d=l-a,p=d*u-f*h;if(!(p*pR*R+O*O&&(S=I,_=D),{cx:S,cy:_,x01:-f,y01:-d,x11:S*(i/T-1),y11:_*(i/T-1)}}function bl(){var t=Fke,e=$ke,r=Bn(0),n=null,i=zke,a=Gke,s=Vke,l=null,u=N5(h);function h(){var f,d,p=+t.apply(this,arguments),m=+e.apply(this,arguments),g=i.apply(this,arguments)-Dv,y=a.apply(this,arguments)-Dv,v=t9(y-g),x=y>g;if(l||(l=f=u()),mZi))l.moveTo(0,0);else if(v>O0-Zi)l.moveTo(m*_h(g),m*xl(g)),l.arc(0,0,m,g,y,!x),p>Zi&&(l.moveTo(p*_h(y),p*xl(y)),l.arc(0,0,p,y,g,x));else{var b=g,w=y,C=g,T=y,E=v,A=v,S=s.apply(this,arguments)/2,_=S>Zi&&(n?+n.apply(this,arguments):Td(p*p+m*m)),I=L5(t9(m-p)/2,+r.apply(this,arguments)),D=I,k=I,L,R;if(_>Zi){var O=r9(_/p*xl(S)),M=r9(_/m*xl(S));(E-=O*2)>Zi?(O*=x?1:-1,C+=O,T-=O):(E=0,C=T=(g+y)/2),(A-=M*2)>Zi?(M*=x?1:-1,b+=M,w-=M):(A=0,b=w=(g+y)/2)}var B=m*_h(b),F=m*xl(b),P=p*_h(T),z=p*xl(T);if(I>Zi){var $=m*_h(w),H=m*xl(w),Q=p*_h(C),j=p*xl(C),ie;if(vZi?k>Zi?(L=M5(Q,j,B,F,m,k,x),R=M5($,H,P,z,m,k,x),l.moveTo(L.cx+L.x01,L.cy+L.y01),kZi)||!(E>Zi)?l.lineTo(P,z):D>Zi?(L=M5(P,z,$,H,p,-D,x),R=M5(B,F,Q,j,p,-D,x),l.lineTo(L.cx+L.x01,L.cy+L.y01),D{"use strict";D5();R5();n9();o(Fke,"arcInnerRadius");o($ke,"arcOuterRadius");o(zke,"arcStartAngle");o(Gke,"arcEndAngle");o(Vke,"arcPadAngle");o(Uke,"intersect");o(M5,"cornerTangents");o(bl,"default")});function Lv(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}var Nyt,i9=N(()=>{"use strict";Nyt=Array.prototype.slice;o(Lv,"default")});function qW(t){this._context=t}function wu(t){return new qW(t)}var a9=N(()=>{"use strict";o(qW,"Linear");qW.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}},"point")};o(wu,"default")});function YW(t){return t[0]}function XW(t){return t[1]}var jW=N(()=>{"use strict";o(YW,"x");o(XW,"y")});function wl(t,e){var r=Bn(!0),n=null,i=wu,a=null,s=N5(l);t=typeof t=="function"?t:t===void 0?YW:Bn(t),e=typeof e=="function"?e:e===void 0?XW:Bn(e);function l(u){var h,f=(u=Lv(u)).length,d,p=!1,m;for(n==null&&(a=i(m=s())),h=0;h<=f;++h)!(h{"use strict";i9();D5();a9();n9();jW();o(wl,"default")});function s9(t,e){return et?1:e>=t?0:NaN}var QW=N(()=>{"use strict";o(s9,"default")});function o9(t){return t}var ZW=N(()=>{"use strict";o(o9,"default")});function I5(){var t=o9,e=s9,r=null,n=Bn(0),i=Bn(O0),a=Bn(0);function s(l){var u,h=(l=Lv(l)).length,f,d,p=0,m=new Array(h),g=new Array(h),y=+n.apply(this,arguments),v=Math.min(O0,Math.max(-O0,i.apply(this,arguments)-y)),x,b=Math.min(Math.abs(v)/h,a.apply(this,arguments)),w=b*(v<0?-1:1),C;for(u=0;u0&&(p+=C);for(e!=null?m.sort(function(T,E){return e(g[T],g[E])}):r!=null&&m.sort(function(T,E){return r(l[T],l[E])}),u=0,d=p?(v-h*w)/p:0;u0?C*d:0)+w,g[f]={data:l[f],index:u,value:C,startAngle:y,endAngle:x,padAngle:b};return g}return o(s,"pie"),s.value=function(l){return arguments.length?(t=typeof l=="function"?l:Bn(+l),s):t},s.sortValues=function(l){return arguments.length?(e=l,r=null,s):e},s.sort=function(l){return arguments.length?(r=l,e=null,s):r},s.startAngle=function(l){return arguments.length?(n=typeof l=="function"?l:Bn(+l),s):n},s.endAngle=function(l){return arguments.length?(i=typeof l=="function"?l:Bn(+l),s):i},s.padAngle=function(l){return arguments.length?(a=typeof l=="function"?l:Bn(+l),s):a},s}var JW=N(()=>{"use strict";i9();D5();QW();ZW();R5();o(I5,"default")});function Rv(t){return new O5(t,!0)}function Nv(t){return new O5(t,!1)}var O5,eq=N(()=>{"use strict";O5=class{static{o(this,"Bump")}constructor(e,r){this._context=e,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,r){switch(e=+e,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,r,e,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,e,this._y0,e,r);break}}this._x0=e,this._y0=r}};o(Rv,"bumpX");o(Nv,"bumpY")});function Zs(){}var Mv=N(()=>{"use strict";o(Zs,"default")});function P0(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function Iv(t){this._context=t}function Do(t){return new Iv(t)}var Ov=N(()=>{"use strict";o(P0,"point");o(Iv,"Basis");Iv.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 3:P0(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:P0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(Do,"default")});function tq(t){this._context=t}function P5(t){return new tq(t)}var rq=N(()=>{"use strict";Mv();Ov();o(tq,"BasisClosed");tq.prototype={areaStart:Zs,areaEnd:Zs,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:P0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(P5,"default")});function nq(t){this._context=t}function B5(t){return new nq(t)}var iq=N(()=>{"use strict";Ov();o(nq,"BasisOpen");nq.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:P0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(B5,"default")});function aq(t,e){this._basis=new Iv(t),this._beta=e}var l9,sq=N(()=>{"use strict";Ov();o(aq,"Bundle");aq.prototype={lineStart:o(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:o(function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n=t[0],i=e[0],a=t[r]-n,s=e[r]-i,l=-1,u;++l<=r;)u=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(n+u*a),this._beta*e[l]+(1-this._beta)*(i+u*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:o(function(t,e){this._x.push(+t),this._y.push(+e)},"point")};l9=o(function t(e){function r(n){return e===1?new Iv(n):new aq(n,e)}return o(r,"bundle"),r.beta=function(n){return t(+n)},r},"custom")(.85)});function B0(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function F5(t,e){this._context=t,this._k=(1-e)/6}var Pv,Bv=N(()=>{"use strict";o(B0,"point");o(F5,"Cardinal");F5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:B0(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:B0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};Pv=o(function t(e){function r(n){return new F5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function $5(t,e){this._context=t,this._k=(1-e)/6}var c9,u9=N(()=>{"use strict";Mv();Bv();o($5,"CardinalClosed");$5.prototype={areaStart:Zs,areaEnd:Zs,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:B0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};c9=o(function t(e){function r(n){return new $5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function z5(t,e){this._context=t,this._k=(1-e)/6}var h9,f9=N(()=>{"use strict";Bv();o(z5,"CardinalOpen");z5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:B0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};h9=o(function t(e){function r(n){return new z5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function Fv(t,e,r){var n=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Zi){var l=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*l-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,i=(i*l-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>Zi){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*h+t._x1*t._l23_2a-e*t._l12_2a)/f,s=(s*h+t._y1*t._l23_2a-r*t._l12_2a)/f}t._context.bezierCurveTo(n,i,a,s,t._x2,t._y2)}function oq(t,e){this._context=t,this._alpha=e}var $v,G5=N(()=>{"use strict";R5();Bv();o(Fv,"point");o(oq,"CatmullRom");oq.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Fv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};$v=o(function t(e){function r(n){return e?new oq(n,e):new F5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function lq(t,e){this._context=t,this._alpha=e}var d9,cq=N(()=>{"use strict";u9();Mv();G5();o(lq,"CatmullRomClosed");lq.prototype={areaStart:Zs,areaEnd:Zs,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Fv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};d9=o(function t(e){function r(n){return e?new lq(n,e):new $5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function uq(t,e){this._context=t,this._alpha=e}var p9,hq=N(()=>{"use strict";f9();G5();o(uq,"CatmullRomOpen");uq.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Fv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};p9=o(function t(e){function r(n){return e?new uq(n,e):new z5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function fq(t){this._context=t}function V5(t){return new fq(t)}var dq=N(()=>{"use strict";Mv();o(fq,"LinearClosed");fq.prototype={areaStart:Zs,areaEnd:Zs,lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){this._point&&this._context.closePath()},"lineEnd"),point:o(function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))},"point")};o(V5,"default")});function pq(t){return t<0?-1:1}function mq(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),s=(r-t._y1)/(i||n<0&&-0),l=(a*i+s*n)/(n+i);return(pq(a)+pq(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(l))||0}function gq(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function m9(t,e,r){var n=t._x0,i=t._y0,a=t._x1,s=t._y1,l=(a-n)/3;t._context.bezierCurveTo(n+l,i+l*e,a-l,s-l*r,a,s)}function U5(t){this._context=t}function yq(t){this._context=new vq(t)}function vq(t){this._context=t}function zv(t){return new U5(t)}function Gv(t){return new yq(t)}var xq=N(()=>{"use strict";o(pq,"sign");o(mq,"slope3");o(gq,"slope2");o(m9,"point");o(U5,"MonotoneX");U5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:m9(this,this._t0,gq(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){var r=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,m9(this,gq(this,r=mq(this,t,e)),r);break;default:m9(this,this._t0,r=mq(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}},"point")};o(yq,"MonotoneY");(yq.prototype=Object.create(U5.prototype)).point=function(t,e){U5.prototype.point.call(this,e,t)};o(vq,"ReflectContext");vq.prototype={moveTo:o(function(t,e){this._context.moveTo(e,t)},"moveTo"),closePath:o(function(){this._context.closePath()},"closePath"),lineTo:o(function(t,e){this._context.lineTo(e,t)},"lineTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._context.bezierCurveTo(e,t,n,r,a,i)},"bezierCurveTo")};o(zv,"monotoneX");o(Gv,"monotoneY")});function wq(t){this._context=t}function bq(t){var e,r=t.length-1,n,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e{"use strict";o(wq,"Natural");wq.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:o(function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),r===2)this._context.lineTo(t[1],e[1]);else for(var n=bq(t),i=bq(e),a=0,s=1;s{"use strict";o(H5,"Step");H5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:o(function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}break}}this._x=t,this._y=e},"point")};o($0,"default");o(Vv,"stepBefore");o(Uv,"stepAfter")});var Eq=N(()=>{"use strict";WW();KW();JW();rq();iq();Ov();eq();sq();u9();f9();Bv();cq();hq();G5();dq();a9();xq();Tq();kq()});var Sq=N(()=>{"use strict"});var Cq=N(()=>{"use strict"});function Dh(t,e,r){this.k=t,this.x=e,this.y=r}function y9(t){for(;!t.__zoom;)if(!(t=t.parentNode))return g9;return t.__zoom}var g9,v9=N(()=>{"use strict";o(Dh,"Transform");Dh.prototype={constructor:Dh,scale:o(function(t){return t===1?this:new Dh(this.k*t,this.x,this.y)},"scale"),translate:o(function(t,e){return t===0&e===0?this:new Dh(this.k,this.x+this.k*t,this.y+this.k*e)},"translate"),apply:o(function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},"apply"),applyX:o(function(t){return t*this.k+this.x},"applyX"),applyY:o(function(t){return t*this.k+this.y},"applyY"),invert:o(function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},"invert"),invertX:o(function(t){return(t-this.x)/this.k},"invertX"),invertY:o(function(t){return(t-this.y)/this.k},"invertY"),rescaleX:o(function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},"rescaleX"),rescaleY:o(function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},"rescaleY"),toString:o(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")};g9=new Dh(1,0,0);y9.prototype=Dh.prototype;o(y9,"transform")});var Aq=N(()=>{"use strict"});var _q=N(()=>{"use strict";l5();Sq();Cq();v9();Aq()});var Dq=N(()=>{"use strict";_q();v9()});var dr=N(()=>{"use strict";vh();sV();SH();DH();E0();LH();RH();TA();QV();NH();u_();MH();OH();A_();jH();KH();A0();m_();QH();IH();ZH();$W();VW();fl();Eq();A5();Z_();r5();l5();Dq()});var Lq=Mi(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.BLANK_URL=Ji.relativeFirstCharacters=Ji.whitespaceEscapeCharsRegex=Ji.urlSchemeRegex=Ji.ctrlCharactersRegex=Ji.htmlCtrlEntityRegex=Ji.htmlEntitiesRegex=Ji.invalidProtocolRegex=void 0;Ji.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;Ji.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;Ji.htmlCtrlEntityRegex=/&(newline|tab);/gi;Ji.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;Ji.urlSchemeRegex=/^.+(:|:)/gim;Ji.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;Ji.relativeFirstCharacters=[".","/"];Ji.BLANK_URL="about:blank"});var z0=Mi(W5=>{"use strict";Object.defineProperty(W5,"__esModule",{value:!0});W5.sanitizeUrl=void 0;var Aa=Lq();function Hke(t){return Aa.relativeFirstCharacters.indexOf(t[0])>-1}o(Hke,"isRelativeUrlWithoutProtocol");function Wke(t){var e=t.replace(Aa.ctrlCharactersRegex,"");return e.replace(Aa.htmlEntitiesRegex,function(r,n){return String.fromCharCode(n)})}o(Wke,"decodeHtmlCharacters");function qke(t){return URL.canParse(t)}o(qke,"isValidUrl");function Rq(t){try{return decodeURIComponent(t)}catch{return t}}o(Rq,"decodeURI");function Yke(t){if(!t)return Aa.BLANK_URL;var e,r=Rq(t.trim());do r=Wke(r).replace(Aa.htmlCtrlEntityRegex,"").replace(Aa.ctrlCharactersRegex,"").replace(Aa.whitespaceEscapeCharsRegex,"").trim(),r=Rq(r),e=r.match(Aa.ctrlCharactersRegex)||r.match(Aa.htmlEntitiesRegex)||r.match(Aa.htmlCtrlEntityRegex)||r.match(Aa.whitespaceEscapeCharsRegex);while(e&&e.length>0);var n=r;if(!n)return Aa.BLANK_URL;if(Hke(n))return n;var i=n.trimStart(),a=i.match(Aa.urlSchemeRegex);if(!a)return n;var s=a[0].toLowerCase().trim();if(Aa.invalidProtocolRegex.test(s))return Aa.BLANK_URL;var l=i.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return l;if(s==="http:"||s==="https:"){if(!qke(l))return Aa.BLANK_URL;var u=new URL(l);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return l}o(Yke,"sanitizeUrl");W5.sanitizeUrl=Yke});var x9,kd,q5,Nq,Mq,Iq,Tl,Hv,Wv=N(()=>{"use strict";x9=Sa(z0(),1);gr();kd=o((t,e)=>{let r=t.append("rect");if(r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),e.name&&r.attr("name",e.name),e.rx&&r.attr("rx",e.rx),e.ry&&r.attr("ry",e.ry),e.attrs!==void 0)for(let n in e.attrs)r.attr(n,e.attrs[n]);return e.class&&r.attr("class",e.class),r},"drawRect"),q5=o((t,e)=>{let r={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};kd(t,r).lower()},"drawBackgroundRect"),Nq=o((t,e)=>{let r=e.text.replace(nd," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),Mq=o((t,e,r,n)=>{let i=t.append("image");i.attr("x",e),i.attr("y",r);let a=(0,x9.sanitizeUrl)(n);i.attr("xlink:href",a)},"drawImage"),Iq=o((t,e,r,n)=>{let i=t.append("use");i.attr("x",e),i.attr("y",r);let a=(0,x9.sanitizeUrl)(n);i.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),Tl=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),Hv=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")});var Oq,b9,Pq,Xke,jke,Kke,Qke,Zke,Jke,eEe,tEe,rEe,nEe,iEe,aEe,Tu,kl,Bq=N(()=>{"use strict";gr();Wv();Oq=Sa(z0(),1),b9=o(function(t,e){return kd(t,e)},"drawRect"),Pq=o(function(t,e,r,n,i,a){let s=t.append("image");s.attr("width",e),s.attr("height",r),s.attr("x",n),s.attr("y",i);let l=a.startsWith("data:image/png;base64")?a:(0,Oq.sanitizeUrl)(a);s.attr("xlink:href",l)},"drawImage"),Xke=o((t,e,r)=>{let n=t.append("g"),i=0;for(let a of e){let s=a.textColor?a.textColor:"#444444",l=a.lineColor?a.lineColor:"#444444",u=a.offsetX?parseInt(a.offsetX):0,h=a.offsetY?parseInt(a.offsetY):0,f="";if(i===0){let p=n.append("line");p.attr("x1",a.startPoint.x),p.attr("y1",a.startPoint.y),p.attr("x2",a.endPoint.x),p.attr("y2",a.endPoint.y),p.attr("stroke-width","1"),p.attr("stroke",l),p.style("fill","none"),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)"),i=-1}else{let p=n.append("path");p.attr("fill","none").attr("stroke-width","1").attr("stroke",l).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",a.startPoint.x).replaceAll("starty",a.startPoint.y).replaceAll("controlx",a.startPoint.x+(a.endPoint.x-a.startPoint.x)/2-(a.endPoint.x-a.startPoint.x)/4).replaceAll("controly",a.startPoint.y+(a.endPoint.y-a.startPoint.y)/2).replaceAll("stopx",a.endPoint.x).replaceAll("stopy",a.endPoint.y)),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)")}let d=r.messageFont();Tu(r)(a.label.text,n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+h,a.label.width,a.label.height,{fill:s},d),a.techn&&a.techn.text!==""&&(d=r.messageFont(),Tu(r)("["+a.techn.text+"]",n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+r.messageFontSize+5+h,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:s,"font-style":"italic"},d))}},"drawRels"),jke=o(function(t,e,r){let n=t.append("g"),i=e.bgColor?e.bgColor:"none",a=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let u={x:e.x,y:e.y,fill:i,stroke:a,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};b9(n,u);let h=r.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,Tu(r)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},h),e.type&&e.type.text!==""&&(h=r.boundaryFont(),h.fontColor=s,Tu(r)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},h)),e.descr&&e.descr.text!==""&&(h=r.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,Tu(r)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},h))},"drawBoundary"),Kke=o(function(t,e,r){let n=e.bgColor?e.bgColor:r[e.typeC4Shape.text+"_bg_color"],i=e.borderColor?e.borderColor:r[e.typeC4Shape.text+"_border_color"],a=e.fontColor?e.fontColor:"#FFFFFF",s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let l=t.append("g");l.attr("class","person-man");let u=Tl();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":u.x=e.x,u.y=e.y,u.fill=n,u.width=e.width,u.height=e.height,u.stroke=i,u.rx=2.5,u.ry=2.5,u.attrs={"stroke-width":.5},b9(l,u);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2));break}let h=aEe(r,e.typeC4Shape.text);switch(l.append("text").attr("fill",a).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":Pq(l,48,48,e.x+e.width/2-24,e.y+e.image.Y,s);break}let f=r[e.typeC4Shape.text+"Font"]();return f.fontWeight="bold",f.fontSize=f.fontSize+2,f.fontColor=a,Tu(r)(e.label.text,l,e.x,e.y+e.label.Y,e.width,e.height,{fill:a},f),f=r[e.typeC4Shape.text+"Font"](),f.fontColor=a,e.techn&&e.techn?.text!==""?Tu(r)(e.techn.text,l,e.x,e.y+e.techn.Y,e.width,e.height,{fill:a,"font-style":"italic"},f):e.type&&e.type.text!==""&&Tu(r)(e.type.text,l,e.x,e.y+e.type.Y,e.width,e.height,{fill:a,"font-style":"italic"},f),e.descr&&e.descr.text!==""&&(f=r.personFont(),f.fontColor=a,Tu(r)(e.descr.text,l,e.x,e.y+e.descr.Y,e.width,e.height,{fill:a},f)),e.height},"drawC4Shape"),Qke=o(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),Zke=o(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),Jke=o(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),eEe=o(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),tEe=o(function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),rEe=o(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),nEe=o(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertDynamicNumber"),iEe=o(function(t){let r=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);r.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),r.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),aEe=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),Tu=function(){function t(i,a,s,l,u,h,f){let d=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(i);n(d,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d){let{fontSize:p,fontFamily:m,fontWeight:g}=d,y=i.split(Ze.lineBreakRegex);for(let v=0;v{"use strict";sEe=typeof global=="object"&&global&&global.Object===Object&&global,X5=sEe});var oEe,lEe,li,Lo=N(()=>{"use strict";w9();oEe=typeof self=="object"&&self&&self.Object===Object&&self,lEe=X5||oEe||Function("return this")(),li=lEe});var cEe,ea,Ed=N(()=>{"use strict";Lo();cEe=li.Symbol,ea=cEe});function fEe(t){var e=uEe.call(t,qv),r=t[qv];try{t[qv]=void 0;var n=!0}catch{}var i=hEe.call(t);return n&&(e?t[qv]=r:delete t[qv]),i}var Fq,uEe,hEe,qv,$q,zq=N(()=>{"use strict";Ed();Fq=Object.prototype,uEe=Fq.hasOwnProperty,hEe=Fq.toString,qv=ea?ea.toStringTag:void 0;o(fEe,"getRawTag");$q=fEe});function mEe(t){return pEe.call(t)}var dEe,pEe,Gq,Vq=N(()=>{"use strict";dEe=Object.prototype,pEe=dEe.toString;o(mEe,"objectToString");Gq=mEe});function vEe(t){return t==null?t===void 0?yEe:gEe:Uq&&Uq in Object(t)?$q(t):Gq(t)}var gEe,yEe,Uq,da,ku=N(()=>{"use strict";Ed();zq();Vq();gEe="[object Null]",yEe="[object Undefined]",Uq=ea?ea.toStringTag:void 0;o(vEe,"baseGetTag");da=vEe});function xEe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var bn,Js=N(()=>{"use strict";o(xEe,"isObject");bn=xEe});function EEe(t){if(!bn(t))return!1;var e=da(t);return e==wEe||e==TEe||e==bEe||e==kEe}var bEe,wEe,TEe,kEe,Si,Yv=N(()=>{"use strict";ku();Js();bEe="[object AsyncFunction]",wEe="[object Function]",TEe="[object GeneratorFunction]",kEe="[object Proxy]";o(EEe,"isFunction");Si=EEe});var SEe,j5,Hq=N(()=>{"use strict";Lo();SEe=li["__core-js_shared__"],j5=SEe});function CEe(t){return!!Wq&&Wq in t}var Wq,qq,Yq=N(()=>{"use strict";Hq();Wq=function(){var t=/[^.]+$/.exec(j5&&j5.keys&&j5.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();o(CEe,"isMasked");qq=CEe});function DEe(t){if(t!=null){try{return _Ee.call(t)}catch{}try{return t+""}catch{}}return""}var AEe,_Ee,Eu,T9=N(()=>{"use strict";AEe=Function.prototype,_Ee=AEe.toString;o(DEe,"toSource");Eu=DEe});function BEe(t){if(!bn(t)||qq(t))return!1;var e=Si(t)?PEe:REe;return e.test(Eu(t))}var LEe,REe,NEe,MEe,IEe,OEe,PEe,Xq,jq=N(()=>{"use strict";Yv();Yq();Js();T9();LEe=/[\\^$.*+?()[\]{}|]/g,REe=/^\[object .+?Constructor\]$/,NEe=Function.prototype,MEe=Object.prototype,IEe=NEe.toString,OEe=MEe.hasOwnProperty,PEe=RegExp("^"+IEe.call(OEe).replace(LEe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(BEe,"baseIsNative");Xq=BEe});function FEe(t,e){return t?.[e]}var Kq,Qq=N(()=>{"use strict";o(FEe,"getValue");Kq=FEe});function $Ee(t,e){var r=Kq(t,e);return Xq(r)?r:void 0}var Ss,Lh=N(()=>{"use strict";jq();Qq();o($Ee,"getNative");Ss=$Ee});var zEe,Su,Xv=N(()=>{"use strict";Lh();zEe=Ss(Object,"create"),Su=zEe});function GEe(){this.__data__=Su?Su(null):{},this.size=0}var Zq,Jq=N(()=>{"use strict";Xv();o(GEe,"hashClear");Zq=GEe});function VEe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var eY,tY=N(()=>{"use strict";o(VEe,"hashDelete");eY=VEe});function qEe(t){var e=this.__data__;if(Su){var r=e[t];return r===UEe?void 0:r}return WEe.call(e,t)?e[t]:void 0}var UEe,HEe,WEe,rY,nY=N(()=>{"use strict";Xv();UEe="__lodash_hash_undefined__",HEe=Object.prototype,WEe=HEe.hasOwnProperty;o(qEe,"hashGet");rY=qEe});function jEe(t){var e=this.__data__;return Su?e[t]!==void 0:XEe.call(e,t)}var YEe,XEe,iY,aY=N(()=>{"use strict";Xv();YEe=Object.prototype,XEe=YEe.hasOwnProperty;o(jEe,"hashHas");iY=jEe});function QEe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Su&&e===void 0?KEe:e,this}var KEe,sY,oY=N(()=>{"use strict";Xv();KEe="__lodash_hash_undefined__";o(QEe,"hashSet");sY=QEe});function G0(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";Jq();tY();nY();aY();oY();o(G0,"Hash");G0.prototype.clear=Zq;G0.prototype.delete=eY;G0.prototype.get=rY;G0.prototype.has=iY;G0.prototype.set=sY;k9=G0});function ZEe(){this.__data__=[],this.size=0}var cY,uY=N(()=>{"use strict";o(ZEe,"listCacheClear");cY=ZEe});function JEe(t,e){return t===e||t!==t&&e!==e}var Ro,Sd=N(()=>{"use strict";o(JEe,"eq");Ro=JEe});function e6e(t,e){for(var r=t.length;r--;)if(Ro(t[r][0],e))return r;return-1}var Rh,jv=N(()=>{"use strict";Sd();o(e6e,"assocIndexOf");Rh=e6e});function n6e(t){var e=this.__data__,r=Rh(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():r6e.call(e,r,1),--this.size,!0}var t6e,r6e,hY,fY=N(()=>{"use strict";jv();t6e=Array.prototype,r6e=t6e.splice;o(n6e,"listCacheDelete");hY=n6e});function i6e(t){var e=this.__data__,r=Rh(e,t);return r<0?void 0:e[r][1]}var dY,pY=N(()=>{"use strict";jv();o(i6e,"listCacheGet");dY=i6e});function a6e(t){return Rh(this.__data__,t)>-1}var mY,gY=N(()=>{"use strict";jv();o(a6e,"listCacheHas");mY=a6e});function s6e(t,e){var r=this.__data__,n=Rh(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var yY,vY=N(()=>{"use strict";jv();o(s6e,"listCacheSet");yY=s6e});function V0(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";uY();fY();pY();gY();vY();o(V0,"ListCache");V0.prototype.clear=cY;V0.prototype.delete=hY;V0.prototype.get=dY;V0.prototype.has=mY;V0.prototype.set=yY;Nh=V0});var o6e,Mh,K5=N(()=>{"use strict";Lh();Lo();o6e=Ss(li,"Map"),Mh=o6e});function l6e(){this.size=0,this.__data__={hash:new k9,map:new(Mh||Nh),string:new k9}}var xY,bY=N(()=>{"use strict";lY();Kv();K5();o(l6e,"mapCacheClear");xY=l6e});function c6e(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var wY,TY=N(()=>{"use strict";o(c6e,"isKeyable");wY=c6e});function u6e(t,e){var r=t.__data__;return wY(e)?r[typeof e=="string"?"string":"hash"]:r.map}var Ih,Qv=N(()=>{"use strict";TY();o(u6e,"getMapData");Ih=u6e});function h6e(t){var e=Ih(this,t).delete(t);return this.size-=e?1:0,e}var kY,EY=N(()=>{"use strict";Qv();o(h6e,"mapCacheDelete");kY=h6e});function f6e(t){return Ih(this,t).get(t)}var SY,CY=N(()=>{"use strict";Qv();o(f6e,"mapCacheGet");SY=f6e});function d6e(t){return Ih(this,t).has(t)}var AY,_Y=N(()=>{"use strict";Qv();o(d6e,"mapCacheHas");AY=d6e});function p6e(t,e){var r=Ih(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}var DY,LY=N(()=>{"use strict";Qv();o(p6e,"mapCacheSet");DY=p6e});function U0(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";bY();EY();CY();_Y();LY();o(U0,"MapCache");U0.prototype.clear=xY;U0.prototype.delete=kY;U0.prototype.get=SY;U0.prototype.has=AY;U0.prototype.set=DY;Cd=U0});function E9(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(m6e);var r=o(function(){var n=arguments,i=e?e.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=t.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(E9.Cache||Cd),r}var m6e,H0,S9=N(()=>{"use strict";Q5();m6e="Expected a function";o(E9,"memoize");E9.Cache=Cd;H0=E9});function g6e(){this.__data__=new Nh,this.size=0}var RY,NY=N(()=>{"use strict";Kv();o(g6e,"stackClear");RY=g6e});function y6e(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var MY,IY=N(()=>{"use strict";o(y6e,"stackDelete");MY=y6e});function v6e(t){return this.__data__.get(t)}var OY,PY=N(()=>{"use strict";o(v6e,"stackGet");OY=v6e});function x6e(t){return this.__data__.has(t)}var BY,FY=N(()=>{"use strict";o(x6e,"stackHas");BY=x6e});function w6e(t,e){var r=this.__data__;if(r instanceof Nh){var n=r.__data__;if(!Mh||n.length{"use strict";Kv();K5();Q5();b6e=200;o(w6e,"stackSet");$Y=w6e});function W0(t){var e=this.__data__=new Nh(t);this.size=e.size}var lc,Zv=N(()=>{"use strict";Kv();NY();IY();PY();FY();zY();o(W0,"Stack");W0.prototype.clear=RY;W0.prototype.delete=MY;W0.prototype.get=OY;W0.prototype.has=BY;W0.prototype.set=$Y;lc=W0});var T6e,q0,C9=N(()=>{"use strict";Lh();T6e=function(){try{var t=Ss(Object,"defineProperty");return t({},"",{}),t}catch{}}(),q0=T6e});function k6e(t,e,r){e=="__proto__"&&q0?q0(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var cc,Y0=N(()=>{"use strict";C9();o(k6e,"baseAssignValue");cc=k6e});function E6e(t,e,r){(r!==void 0&&!Ro(t[e],r)||r===void 0&&!(e in t))&&cc(t,e,r)}var Jv,A9=N(()=>{"use strict";Y0();Sd();o(E6e,"assignMergeValue");Jv=E6e});function S6e(t){return function(e,r,n){for(var i=-1,a=Object(e),s=n(e),l=s.length;l--;){var u=s[t?l:++i];if(r(a[u],u,a)===!1)break}return e}}var GY,VY=N(()=>{"use strict";o(S6e,"createBaseFor");GY=S6e});var C6e,X0,Z5=N(()=>{"use strict";VY();C6e=GY(),X0=C6e});function _6e(t,e){if(e)return t.slice();var r=t.length,n=WY?WY(r):new t.constructor(r);return t.copy(n),n}var qY,UY,A6e,HY,WY,J5,_9=N(()=>{"use strict";Lo();qY=typeof exports=="object"&&exports&&!exports.nodeType&&exports,UY=qY&&typeof module=="object"&&module&&!module.nodeType&&module,A6e=UY&&UY.exports===qY,HY=A6e?li.Buffer:void 0,WY=HY?HY.allocUnsafe:void 0;o(_6e,"cloneBuffer");J5=_6e});var D6e,j0,D9=N(()=>{"use strict";Lo();D6e=li.Uint8Array,j0=D6e});function L6e(t){var e=new t.constructor(t.byteLength);return new j0(e).set(new j0(t)),e}var K0,ew=N(()=>{"use strict";D9();o(L6e,"cloneArrayBuffer");K0=L6e});function R6e(t,e){var r=e?K0(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var tw,L9=N(()=>{"use strict";ew();o(R6e,"cloneTypedArray");tw=R6e});function N6e(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r{"use strict";o(N6e,"copyArray");rw=N6e});var YY,M6e,XY,jY=N(()=>{"use strict";Js();YY=Object.create,M6e=function(){function t(){}return o(t,"object"),function(e){if(!bn(e))return{};if(YY)return YY(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}(),XY=M6e});function I6e(t,e){return function(r){return t(e(r))}}var nw,N9=N(()=>{"use strict";o(I6e,"overArg");nw=I6e});var O6e,Q0,iw=N(()=>{"use strict";N9();O6e=nw(Object.getPrototypeOf,Object),Q0=O6e});function B6e(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||P6e;return t===r}var P6e,uc,Z0=N(()=>{"use strict";P6e=Object.prototype;o(B6e,"isPrototype");uc=B6e});function F6e(t){return typeof t.constructor=="function"&&!uc(t)?XY(Q0(t)):{}}var aw,M9=N(()=>{"use strict";jY();iw();Z0();o(F6e,"initCloneObject");aw=F6e});function $6e(t){return t!=null&&typeof t=="object"}var ri,No=N(()=>{"use strict";o($6e,"isObjectLike");ri=$6e});function G6e(t){return ri(t)&&da(t)==z6e}var z6e,I9,KY=N(()=>{"use strict";ku();No();z6e="[object Arguments]";o(G6e,"baseIsArguments");I9=G6e});var QY,V6e,U6e,H6e,El,J0=N(()=>{"use strict";KY();No();QY=Object.prototype,V6e=QY.hasOwnProperty,U6e=QY.propertyIsEnumerable,H6e=I9(function(){return arguments}())?I9:function(t){return ri(t)&&V6e.call(t,"callee")&&!U6e.call(t,"callee")},El=H6e});var W6e,Pt,Un=N(()=>{"use strict";W6e=Array.isArray,Pt=W6e});function Y6e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=q6e}var q6e,em,sw=N(()=>{"use strict";q6e=9007199254740991;o(Y6e,"isLength");em=Y6e});function X6e(t){return t!=null&&em(t.length)&&!Si(t)}var ci,Mo=N(()=>{"use strict";Yv();sw();o(X6e,"isArrayLike");ci=X6e});function j6e(t){return ri(t)&&ci(t)}var Ad,ow=N(()=>{"use strict";Mo();No();o(j6e,"isArrayLikeObject");Ad=j6e});function K6e(){return!1}var ZY,JY=N(()=>{"use strict";o(K6e,"stubFalse");ZY=K6e});var rX,eX,Q6e,tX,Z6e,J6e,Sl,tm=N(()=>{"use strict";Lo();JY();rX=typeof exports=="object"&&exports&&!exports.nodeType&&exports,eX=rX&&typeof module=="object"&&module&&!module.nodeType&&module,Q6e=eX&&eX.exports===rX,tX=Q6e?li.Buffer:void 0,Z6e=tX?tX.isBuffer:void 0,J6e=Z6e||ZY,Sl=J6e});function aSe(t){if(!ri(t)||da(t)!=eSe)return!1;var e=Q0(t);if(e===null)return!0;var r=nSe.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&nX.call(r)==iSe}var eSe,tSe,rSe,nX,nSe,iSe,iX,aX=N(()=>{"use strict";ku();iw();No();eSe="[object Object]",tSe=Function.prototype,rSe=Object.prototype,nX=tSe.toString,nSe=rSe.hasOwnProperty,iSe=nX.call(Object);o(aSe,"isPlainObject");iX=aSe});function LSe(t){return ri(t)&&em(t.length)&&!!Fn[da(t)]}var sSe,oSe,lSe,cSe,uSe,hSe,fSe,dSe,pSe,mSe,gSe,ySe,vSe,xSe,bSe,wSe,TSe,kSe,ESe,SSe,CSe,ASe,_Se,DSe,Fn,sX,oX=N(()=>{"use strict";ku();sw();No();sSe="[object Arguments]",oSe="[object Array]",lSe="[object Boolean]",cSe="[object Date]",uSe="[object Error]",hSe="[object Function]",fSe="[object Map]",dSe="[object Number]",pSe="[object Object]",mSe="[object RegExp]",gSe="[object Set]",ySe="[object String]",vSe="[object WeakMap]",xSe="[object ArrayBuffer]",bSe="[object DataView]",wSe="[object Float32Array]",TSe="[object Float64Array]",kSe="[object Int8Array]",ESe="[object Int16Array]",SSe="[object Int32Array]",CSe="[object Uint8Array]",ASe="[object Uint8ClampedArray]",_Se="[object Uint16Array]",DSe="[object Uint32Array]",Fn={};Fn[wSe]=Fn[TSe]=Fn[kSe]=Fn[ESe]=Fn[SSe]=Fn[CSe]=Fn[ASe]=Fn[_Se]=Fn[DSe]=!0;Fn[sSe]=Fn[oSe]=Fn[xSe]=Fn[lSe]=Fn[bSe]=Fn[cSe]=Fn[uSe]=Fn[hSe]=Fn[fSe]=Fn[dSe]=Fn[pSe]=Fn[mSe]=Fn[gSe]=Fn[ySe]=Fn[vSe]=!1;o(LSe,"baseIsTypedArray");sX=LSe});function RSe(t){return function(e){return t(e)}}var Io,_d=N(()=>{"use strict";o(RSe,"baseUnary");Io=RSe});var lX,e2,NSe,O9,MSe,Oo,t2=N(()=>{"use strict";w9();lX=typeof exports=="object"&&exports&&!exports.nodeType&&exports,e2=lX&&typeof module=="object"&&module&&!module.nodeType&&module,NSe=e2&&e2.exports===lX,O9=NSe&&X5.process,MSe=function(){try{var t=e2&&e2.require&&e2.require("util").types;return t||O9&&O9.binding&&O9.binding("util")}catch{}}(),Oo=MSe});var cX,ISe,Oh,r2=N(()=>{"use strict";oX();_d();t2();cX=Oo&&Oo.isTypedArray,ISe=cX?Io(cX):sX,Oh=ISe});function OSe(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var n2,P9=N(()=>{"use strict";o(OSe,"safeGet");n2=OSe});function FSe(t,e,r){var n=t[e];(!(BSe.call(t,e)&&Ro(n,r))||r===void 0&&!(e in t))&&cc(t,e,r)}var PSe,BSe,hc,rm=N(()=>{"use strict";Y0();Sd();PSe=Object.prototype,BSe=PSe.hasOwnProperty;o(FSe,"assignValue");hc=FSe});function $Se(t,e,r,n){var i=!r;r||(r={});for(var a=-1,s=e.length;++a{"use strict";rm();Y0();o($Se,"copyObject");Po=$Se});function zSe(t,e){for(var r=-1,n=Array(t);++r{"use strict";o(zSe,"baseTimes");uX=zSe});function USe(t,e){var r=typeof t;return e=e??GSe,!!e&&(r=="number"||r!="symbol"&&VSe.test(t))&&t>-1&&t%1==0&&t{"use strict";GSe=9007199254740991,VSe=/^(?:0|[1-9]\d*)$/;o(USe,"isIndex");Ph=USe});function qSe(t,e){var r=Pt(t),n=!r&&El(t),i=!r&&!n&&Sl(t),a=!r&&!n&&!i&&Oh(t),s=r||n||i||a,l=s?uX(t.length,String):[],u=l.length;for(var h in t)(e||WSe.call(t,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||Ph(h,u)))&&l.push(h);return l}var HSe,WSe,lw,B9=N(()=>{"use strict";hX();J0();Un();tm();i2();r2();HSe=Object.prototype,WSe=HSe.hasOwnProperty;o(qSe,"arrayLikeKeys");lw=qSe});function YSe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var fX,dX=N(()=>{"use strict";o(YSe,"nativeKeysIn");fX=YSe});function KSe(t){if(!bn(t))return fX(t);var e=uc(t),r=[];for(var n in t)n=="constructor"&&(e||!jSe.call(t,n))||r.push(n);return r}var XSe,jSe,pX,mX=N(()=>{"use strict";Js();Z0();dX();XSe=Object.prototype,jSe=XSe.hasOwnProperty;o(KSe,"baseKeysIn");pX=KSe});function QSe(t){return ci(t)?lw(t,!0):pX(t)}var Cs,Bh=N(()=>{"use strict";B9();mX();Mo();o(QSe,"keysIn");Cs=QSe});function ZSe(t){return Po(t,Cs(t))}var gX,yX=N(()=>{"use strict";Dd();Bh();o(ZSe,"toPlainObject");gX=ZSe});function JSe(t,e,r,n,i,a,s){var l=n2(t,r),u=n2(e,r),h=s.get(u);if(h){Jv(t,r,h);return}var f=a?a(l,u,r+"",t,e,s):void 0,d=f===void 0;if(d){var p=Pt(u),m=!p&&Sl(u),g=!p&&!m&&Oh(u);f=u,p||m||g?Pt(l)?f=l:Ad(l)?f=rw(l):m?(d=!1,f=J5(u,!0)):g?(d=!1,f=tw(u,!0)):f=[]:iX(u)||El(u)?(f=l,El(l)?f=gX(l):(!bn(l)||Si(l))&&(f=aw(u))):d=!1}d&&(s.set(u,f),i(f,u,n,a,s),s.delete(u)),Jv(t,r,f)}var vX,xX=N(()=>{"use strict";A9();_9();L9();R9();M9();J0();Un();ow();tm();Yv();Js();aX();r2();P9();yX();o(JSe,"baseMergeDeep");vX=JSe});function bX(t,e,r,n,i){t!==e&&X0(e,function(a,s){if(i||(i=new lc),bn(a))vX(t,e,s,r,bX,n,i);else{var l=n?n(n2(t,s),a,s+"",t,e,i):void 0;l===void 0&&(l=a),Jv(t,s,l)}},Cs)}var wX,TX=N(()=>{"use strict";Zv();A9();Z5();xX();Js();Bh();P9();o(bX,"baseMerge");wX=bX});function eCe(t){return t}var ta,Cu=N(()=>{"use strict";o(eCe,"identity");ta=eCe});function tCe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var kX,EX=N(()=>{"use strict";o(tCe,"apply");kX=tCe});function rCe(t,e,r){return e=SX(e===void 0?t.length-1:e,0),function(){for(var n=arguments,i=-1,a=SX(n.length-e,0),s=Array(a);++i{"use strict";EX();SX=Math.max;o(rCe,"overRest");cw=rCe});function nCe(t){return function(){return t}}var As,$9=N(()=>{"use strict";o(nCe,"constant");As=nCe});var iCe,CX,AX=N(()=>{"use strict";$9();C9();Cu();iCe=q0?function(t,e){return q0(t,"toString",{configurable:!0,enumerable:!1,value:As(e),writable:!0})}:ta,CX=iCe});function lCe(t){var e=0,r=0;return function(){var n=oCe(),i=sCe-(n-r);if(r=n,i>0){if(++e>=aCe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var aCe,sCe,oCe,_X,DX=N(()=>{"use strict";aCe=800,sCe=16,oCe=Date.now;o(lCe,"shortOut");_X=lCe});var cCe,uw,z9=N(()=>{"use strict";AX();DX();cCe=_X(CX),uw=cCe});function uCe(t,e){return uw(cw(t,e,ta),t+"")}var fc,nm=N(()=>{"use strict";Cu();F9();z9();o(uCe,"baseRest");fc=uCe});function hCe(t,e,r){if(!bn(r))return!1;var n=typeof e;return(n=="number"?ci(r)&&Ph(e,r.length):n=="string"&&e in r)?Ro(r[e],t):!1}var eo,Ld=N(()=>{"use strict";Sd();Mo();i2();Js();o(hCe,"isIterateeCall");eo=hCe});function fCe(t){return fc(function(e,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=t.length>3&&typeof a=="function"?(i--,a):void 0,s&&eo(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),e=Object(e);++n{"use strict";nm();Ld();o(fCe,"createAssigner");hw=fCe});var dCe,Fh,V9=N(()=>{"use strict";TX();G9();dCe=hw(function(t,e,r){wX(t,e,r)}),Fh=dCe});function W9(t,e){if(!t)return e;let r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return pCe[r]??e}function vCe(t,e){let r=t.trim();if(r)return e.securityLevel!=="loose"?(0,NX.sanitizeUrl)(r):r}function OX(t,e){return!t||!e?0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function bCe(t){let e,r=0;t.forEach(i=>{r+=OX(i,e),e=i});let n=r/2;return q9(t,n)}function wCe(t){return t.length===1?t[0]:bCe(t)}function kCe(t,e,r){let n=structuredClone(r);Y.info("our points",n),e!=="start_left"&&e!=="start_right"&&n.reverse();let i=25+t,a=q9(n,i),s=10+t*.5,l=Math.atan2(n[0].y-a.y,n[0].x-a.x),u={x:0,y:0};return e==="start_left"?(u.x=Math.sin(l+Math.PI)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l+Math.PI)*s+(n[0].y+a.y)/2):e==="end_right"?(u.x=Math.sin(l-Math.PI)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l-Math.PI)*s+(n[0].y+a.y)/2-5):e==="end_left"?(u.x=Math.sin(l)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2-5):(u.x=Math.sin(l)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2),u}function Y9(t){let e="",r="";for(let n of t)n!==void 0&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":e=e+n+";");return{style:e,labelStyle:r}}function ECe(t){let e="",r="0123456789abcdef",n=r.length;for(let i=0;i{"use strict";NX=Sa(z0(),1);dr();gr();e7();vt();Xf();s0();S9();V9();$4();H9="\u200B",pCe={curveBasis:Do,curveBasisClosed:P5,curveBasisOpen:B5,curveBumpX:Rv,curveBumpY:Nv,curveBundle:l9,curveCardinalClosed:c9,curveCardinalOpen:h9,curveCardinal:Pv,curveCatmullRomClosed:d9,curveCatmullRomOpen:p9,curveCatmullRom:$v,curveLinear:wu,curveLinearClosed:V5,curveMonotoneX:zv,curveMonotoneY:Gv,curveNatural:F0,curveStep:$0,curveStepAfter:Uv,curveStepBefore:Vv},mCe=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,gCe=o(function(t,e){let r=MX(t,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(l=>l.args);l0(s),n=Gn(n,[...s])}else n=r.args;if(!n)return;let i=a0(t,e),a="config";return n[a]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[a],delete n[a]),n},"detectInit"),MX=o(function(t,e=null){try{let r=new RegExp(`[%]{2}(?![{]${mCe.source})(?=[}][%]{2}).* -`,"ig");t=t.trim().replace(r,"").replace(/'/gm,'"'),Y.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let n,i=[];for(;(n=qf.exec(t))!==null;)if(n.index===qf.lastIndex&&qf.lastIndex++,n&&!e||e&&n[1]?.match(e)||e&&n[2]?.match(e)){let a=n[1]?n[1]:n[2],s=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:a,args:s})}return i.length===0?{type:t,args:null}:i.length===1?i[0]:i}catch(r){return Y.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),IX=o(function(t){return t.replace(qf,"")},"removeDirectives"),yCe=o(function(t,e){for(let[r,n]of e.entries())if(n.match(t))return r;return-1},"isSubstringInArray");o(W9,"interpolateToCurve");o(vCe,"formatUrl");xCe=o((t,...e)=>{let r=t.split("."),n=r.length-1,i=r[n],a=window;for(let s=0;s{let r=Math.pow(10,e);return Math.round(t*r)/r},"roundNumber"),q9=o((t,e)=>{let r,n=e;for(let i of t){if(r){let a=OX(i,r);if(a===0)return r;if(a=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:LX((1-s)*r.x+s*i.x,5),y:LX((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),TCe=o((t,e,r)=>{Y.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());let i=q9(e,25),a=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(e[0].x+i.x)/2,l.y=-Math.cos(s)*a+(e[0].y+i.y)/2,l},"calcCardinalityPosition");o(kCe,"calcTerminalLabelPosition");o(Y9,"getStylesFromArray");RX=0,X9=o(()=>(RX++,"id-"+Math.random().toString(36).substr(2,12)+"-"+RX),"generateId");o(ECe,"makeRandomHex");j9=o(t=>ECe(t.length),"random"),SCe=o(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),CCe=o(function(t,e){let r=e.text.replace(Ze.lineBreakRegex," "),[,n]=Bo(e.fontSize),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.style("text-anchor",e.anchor),i.style("font-family",e.fontFamily),i.style("font-size",n),i.style("font-weight",e.fontWeight),i.attr("fill",e.fill),e.class!==void 0&&i.attr("class",e.class);let a=i.append("tspan");return a.attr("x",e.x+e.textMargin*2),a.attr("fill",e.fill),a.text(r),i},"drawSimpleText"),K9=H0((t,e,r)=>{if(!t||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},r),Ze.lineBreakRegex.test(t)))return t;let n=t.split(" ").filter(Boolean),i=[],a="";return n.forEach((s,l)=>{let u=ra(`${s} `,r),h=ra(a,r);if(u>e){let{hyphenatedStrings:p,remainingWord:m}=ACe(s,e,"-",r);i.push(a,...p),a=m}else h+u>=e?(i.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+1===n.length&&i.push(a)}),i.filter(s=>s!=="").join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),ACe=H0((t,e,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...t],a=[],s="";return i.forEach((l,u)=>{let h=`${s}${l}`;if(ra(h,n)>=e){let d=u+1,p=i.length===d,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(t,e,r="-",n)=>`${t}${e}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);o(dw,"calculateTextHeight");o(ra,"calculateTextWidth");Q9=H0((t,e)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=e;if(!t)return{width:0,height:0};let[,a]=Bo(r),s=["sans-serif",n],l=t.split(Ze.lineBreakRegex),u=[],h=Ge("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let f=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=SCe();v.text=y||H9;let x=CCe(f,v).style("font-size",a).style("font-weight",i).style("font-family",p),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}f.remove();let d=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[d]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),U9=class{constructor(e=!1,r){this.count=0;this.count=r?r.length:0,this.next=e?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},_Ce=o(function(t){return fw=fw||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),fw.innerHTML=t,unescape(fw.textContent)},"entityDecode");o(Z9,"isDetailedError");DCe=o((t,e,r,n)=>{if(!n)return;let i=t.node()?.getBBox();i&&t.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",e)},"insertTitle"),Bo=o(t=>{if(typeof t=="number")return[t,t+"px"];let e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");o(Fi,"cleanAndMerge");Gt={assignWithDepth:Gn,wrapLabel:K9,calculateTextHeight:dw,calculateTextWidth:ra,calculateTextDimensions:Q9,cleanAndMerge:Fi,detectInit:gCe,detectDirective:MX,isSubstringInArray:yCe,interpolateToCurve:W9,calcLabelPosition:wCe,calcCardinalityPosition:TCe,calcTerminalLabelPosition:kCe,formatUrl:vCe,getStylesFromArray:Y9,generateId:X9,random:j9,runFunc:xCe,entityDecode:_Ce,insertTitle:DCe,parseFontSize:Bo,InitIDGenerator:U9},PX=o(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),e},"encodeEntities"),na=o(function(t){return t.replace(/๏ฌ‚ยฐยฐ/g,"&#").replace(/๏ฌ‚ยฐ/g,"&").replace(/ยถรŸ/g,";")},"decodeEntities"),$h=o((t,e,{counter:r=0,prefix:n,suffix:i},a)=>a||`${n?`${n}_`:""}${t}_${e}_${r}${i?`_${i}`:""}`,"getEdgeId");o($n,"handleUndefinedAttr")});function Cl(t,e,r,n,i){if(!e[t].width)if(r)e[t].text=K9(e[t].text,i,n),e[t].textLines=e[t].text.split(Ze.lineBreakRegex).length,e[t].width=i,e[t].height=dw(e[t].text,n);else{let a=e[t].text.split(Ze.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(let l of a)e[t].width=Math.max(ra(l,n),e[t].width),s=dw(l,n),e[t].height=e[t].height+s}}function GX(t,e,r,n,i){let a=new yw(i);a.data.widthLimit=r.data.widthLimit/Math.min(J9,n.length);for(let[s,l]of n.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&Vt.wrap,f=pw(Vt);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Cl("label",l,h,f,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=pw(Vt);Cl("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=pw(Vt);g.fontSize=g.fontSize-2,Cl("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%J9===0){let g=r.data.startx+Vt.diagramMarginX,y=r.data.stopy+Vt.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+Vt.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let d=i.db.getC4ShapeArray(l.alias),p=i.db.getC4ShapeKeys(l.alias);p.length>0&&zX(a,t,d,p),e=l.alias;let m=i.db.getBoundarys(e);m.length>0&&GX(t,e,a,m,i),l.alias!=="global"&&$X(t,l,a),r.data.stopy=Math.max(a.data.stopy+Vt.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+Vt.c4ShapeMargin,r.data.stopx),mw=Math.max(mw,r.data.stopx),gw=Math.max(gw,r.data.stopy)}}var mw,gw,FX,J9,Vt,yw,eD,a2,pw,LCe,$X,zX,_s,BX,RCe,NCe,MCe,tD,VX=N(()=>{"use strict";dr();Bq();vt();$C();gr();uA();zt();s0();ir();Ei();mw=0,gw=0,FX=4,J9=2;Ty.yy=Qy;Vt={},yw=class{static{o(this,"Bounds")}constructor(e){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,eD(e.db.getConfig())}setData(e,r,n,i){this.nextData.startx=this.data.startx=e,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(e,r,n,i){e[r]===void 0?e[r]=n:e[r]=i(n,e[r])}insert(e){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+e.margin:this.nextData.stopx+e.margin*2,n=r+e.width,i=this.nextData.starty+e.margin*2,a=i+e.height;(r>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>FX)&&(r=this.nextData.startx+e.margin+Vt.nextLinePaddingX,i=this.nextData.stopy+e.margin*2,this.nextData.stopx=n=r+e.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=i+e.height,this.nextData.cnt=1),e.x=r,e.y=i,this.updateVal(this.data,"startx",r,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",r,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(e){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},eD(e.db.getConfig())}bumpLastMargin(e){this.data.stopx+=e,this.data.stopy+=e}},eD=o(function(t){Gn(Vt,t),t.fontFamily&&(Vt.personFontFamily=Vt.systemFontFamily=Vt.messageFontFamily=t.fontFamily),t.fontSize&&(Vt.personFontSize=Vt.systemFontSize=Vt.messageFontSize=t.fontSize),t.fontWeight&&(Vt.personFontWeight=Vt.systemFontWeight=Vt.messageFontWeight=t.fontWeight)},"setConf"),a2=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),pw=o(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),LCe=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");o(Cl,"calcC4ShapeTextWH");$X=o(function(t,e,r){e.x=r.data.startx,e.y=r.data.starty,e.width=r.data.stopx-r.data.startx,e.height=r.data.stopy-r.data.starty,e.label.y=Vt.c4ShapeMargin-35;let n=e.wrap&&Vt.wrap,i=pw(Vt);i.fontSize=i.fontSize+2,i.fontWeight="bold";let a=ra(e.label.text,i);Cl("label",e,n,i,a),kl.drawBoundary(t,e,Vt)},"drawBoundary"),zX=o(function(t,e,r,n){let i=0;for(let a of n){i=0;let s=r[a],l=a2(Vt,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=ra("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=Vt.c4ShapePadding,i=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let u=s.wrap&&Vt.wrap,h=Vt.width-Vt.c4ShapePadding*2,f=a2(Vt,s.typeC4Shape.text);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Cl("label",s,u,f,h),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=a2(Vt,s.typeC4Shape.text);Cl("type",s,u,m,h),s.type.Y=i+5,i=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let m=a2(Vt,s.techn.text);Cl("techn",s,u,m,h),s.techn.Y=i+5,i=s.techn.Y+s.techn.height}let d=i,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=a2(Vt,s.typeC4Shape.text);Cl("descr",s,u,m,h),s.descr.Y=i+20,i=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),d=i-s.descr.textLines*5}p=p+Vt.c4ShapePadding,s.width=Math.max(s.width||Vt.width,p,Vt.width),s.height=Math.max(s.height||Vt.height,d,Vt.height),s.margin=s.margin||Vt.c4ShapeMargin,t.insert(s),kl.drawC4Shape(e,s,Vt)}t.bumpLastMargin(Vt.c4ShapeMargin)},"drawC4ShapeArray"),_s=class{static{o(this,"Point")}constructor(e,r){this.x=e,this.y=r}},BX=o(function(t,e){let r=t.x,n=t.y,i=e.x,a=e.y,s=r+t.width/2,l=n+t.height/2,u=Math.abs(r-i),h=Math.abs(n-a),f=h/u,d=t.height/t.width,p=null;return n==a&&ri?p=new _s(r,l):r==i&&na&&(p=new _s(s,n)),r>i&&n=f?p=new _s(r,l+f*t.width/2):p=new _s(s-u/h*t.height/2,n+t.height):r=f?p=new _s(r+t.width,l+f*t.width/2):p=new _s(s+u/h*t.height/2,n+t.height):ra?d>=f?p=new _s(r+t.width,l-f*t.width/2):p=new _s(s+t.height/2*u/h,n):r>i&&n>a&&(d>=f?p=new _s(r,l-t.width/2*f):p=new _s(s-t.height/2*u/h,n)),p},"getIntersectPoint"),RCe=o(function(t,e){let r={x:0,y:0};r.x=e.x+e.width/2,r.y=e.y+e.height/2;let n=BX(t,r);r.x=t.x+t.width/2,r.y=t.y+t.height/2;let i=BX(e,r);return{startPoint:n,endPoint:i}},"getIntersectPoints"),NCe=o(function(t,e,r,n){let i=0;for(let a of e){i=i+1;let s=a.wrap&&Vt.wrap,l=LCe(Vt);n.db.getC4Type()==="C4Dynamic"&&(a.label.text=i+": "+a.label.text);let h=ra(a.label.text,l);Cl("label",a,s,l,h),a.techn&&a.techn.text!==""&&(h=ra(a.techn.text,l),Cl("techn",a,s,l,h)),a.descr&&a.descr.text!==""&&(h=ra(a.descr.text,l),Cl("descr",a,s,l,h));let f=r(a.from),d=r(a.to),p=RCe(f,d);a.startPoint=p.startPoint,a.endPoint=p.endPoint}kl.drawRels(t,e,Vt)},"drawRels");o(GX,"drawInsideBoundary");MCe=o(function(t,e,r,n){Vt=me().c4;let i=me().securityLevel,a;i==="sandbox"&&(a=Ge("#i"+e));let s=i==="sandbox"?Ge(a.nodes()[0].contentDocument.body):Ge("body"),l=n.db;n.db.setWrap(Vt.wrap),FX=l.getC4ShapeInRow(),J9=l.getC4BoundaryInRow(),Y.debug(`C:${JSON.stringify(Vt,null,2)}`);let u=i==="sandbox"?s.select(`[id="${e}"]`):Ge(`[id="${e}"]`);kl.insertComputerIcon(u),kl.insertDatabaseIcon(u),kl.insertClockIcon(u);let h=new yw(n);h.setData(Vt.diagramMarginX,Vt.diagramMarginX,Vt.diagramMarginY,Vt.diagramMarginY),h.data.widthLimit=screen.availWidth,mw=Vt.diagramMarginX,gw=Vt.diagramMarginY;let f=n.db.getTitle(),d=n.db.getBoundarys("");GX(u,"",h,d,n),kl.insertArrowHead(u),kl.insertArrowEnd(u),kl.insertArrowCrossHead(u),kl.insertArrowFilledHead(u),NCe(u,n.db.getRels(),n.db.getC4Shape,n),h.data.stopx=mw,h.data.stopy=gw;let p=h.data,g=p.stopy-p.starty+2*Vt.diagramMarginY,v=p.stopx-p.startx+2*Vt.diagramMarginX;f&&u.append("text").text(f).attr("x",(p.stopx-p.startx)/2-4*Vt.diagramMarginX).attr("y",p.starty+Vt.diagramMarginY),vn(u,g,v,Vt.useMaxWidth);let x=f?60:0;u.attr("viewBox",p.startx-Vt.diagramMarginX+" -"+(Vt.diagramMarginY+x)+" "+v+" "+(g+x)),Y.debug("models:",p)},"draw"),tD={drawPersonOrSystemArray:zX,drawBoundary:$X,setConf:eD,draw:MCe}});var ICe,UX,HX=N(()=>{"use strict";ICe=o(t=>`.person { +`},"getStyles"),iH=o((t,e)=>{e!==void 0&&($3[t]=e)},"addStylesForDiagram"),aH=Kwe});var rv={};dr(rv,{clear:()=>Sr,getAccDescription:()=>Or,getAccTitle:()=>Mr,getDiagramTitle:()=>Pr,setAccDescription:()=>Ir,setAccTitle:()=>Rr,setDiagramTitle:()=>$r});var MA,IA,OA,PA,Sr,Rr,Mr,Ir,Or,$r,Pr,ci=N(()=>{"use strict";gr();qn();MA="",IA="",OA="",PA=o(t=>sr(t,Qt()),"sanitizeText"),Sr=o(()=>{MA="",OA="",IA=""},"clear"),Rr=o(t=>{MA=PA(t).replace(/^\s+/g,"")},"setAccTitle"),Mr=o(()=>MA,"getAccTitle"),Ir=o(t=>{OA=PA(t).replace(/\n\s+/g,` +`)},"setAccDescription"),Or=o(()=>OA,"getAccDescription"),$r=o(t=>{IA=PA(t)},"setDiagramTitle"),Pr=o(()=>IA,"getDiagramTitle")});var sH,Qwe,ge,nv,G3,iv,FA,Zwe,z3,xd,av,BA,Xt=N(()=>{"use strict";vd();pt();qn();gr();Ei();NA();ci();sH=X,Qwe=Dy,ge=Qt,nv=n3,G3=gh,iv=o(t=>sr(t,ge()),"sanitizeText"),FA=ic,Zwe=o(()=>rv,"getCommonDb"),z3={},xd=o((t,e,r)=>{z3[t]&&sH.warn(`Diagram with id ${t} already registered. Overwriting.`),z3[t]=e,r&&LA(t,r),iH(t,e.styles),e.injectUtils?.(sH,Qwe,ge,iv,FA,Zwe(),()=>{})},"registerDiagram"),av=o(t=>{if(t in z3)return z3[t];throw new BA(t)},"getDiagram"),BA=class extends Error{static{o(this,"DiagramNotFoundError")}constructor(e){super(`Diagram ${e} not found.`)}}});var ml,Eh,ns,pl,ac,sv,$A,zA,V3,U3,oH,Jwe,eke,tke,rke,nke,ike,ake,ske,oke,lke,cke,uke,hke,fke,dke,pke,mke,lH,gke,yke,cH,vke,xke,bke,Tke,Sh,wke,kke,Eke,Ske,Cke,ov,GA=N(()=>{"use strict";Xt();gr();ci();ml=[],Eh=[""],ns="global",pl="",ac=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],sv=[],$A="",zA=!1,V3=4,U3=2,Jwe=o(function(){return oH},"getC4Type"),eke=o(function(t){oH=sr(t,ge())},"setC4Type"),tke=o(function(t,e,r,n,i,a,s,l,u){if(t==null||e===void 0||e===null||r===void 0||r===null||n===void 0||n===null)return;let h={},f=sv.find(d=>d.from===e&&d.to===r);if(f?h=f:sv.push(h),h.type=t,h.from=e,h.to=r,h.label={text:n},i==null)h.techn={text:""};else if(typeof i=="object"){let[d,p]=Object.entries(i)[0];h[d]={text:p}}else h.techn={text:i};if(a==null)h.descr={text:""};else if(typeof a=="object"){let[d,p]=Object.entries(a)[0];h[d]={text:p}}else h.descr={text:a};if(typeof s=="object"){let[d,p]=Object.entries(s)[0];h[d]=p}else h.sprite=s;if(typeof l=="object"){let[d,p]=Object.entries(l)[0];h[d]=p}else h.tags=l;if(typeof u=="object"){let[d,p]=Object.entries(u)[0];h[d]=p}else h.link=u;h.wrap=Sh()},"addRel"),rke=o(function(t,e,r,n,i,a,s){if(e===null||r===null)return;let l={},u=ml.find(h=>h.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,ml.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.descr={text:""};else if(typeof n=="object"){let[h,f]=Object.entries(n)[0];l[h]={text:f}}else l.descr={text:n};if(typeof i=="object"){let[h,f]=Object.entries(i)[0];l[h]=f}else l.sprite=i;if(typeof a=="object"){let[h,f]=Object.entries(a)[0];l[h]=f}else l.tags=a;if(typeof s=="object"){let[h,f]=Object.entries(s)[0];l[h]=f}else l.link=s;l.typeC4Shape={text:t},l.parentBoundary=ns,l.wrap=Sh()},"addPersonOrSystem"),nke=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ml.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ml.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=Sh(),u.typeC4Shape={text:t},u.parentBoundary=ns},"addContainer"),ike=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ml.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ml.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=Sh(),u.typeC4Shape={text:t},u.parentBoundary=ns},"addComponent"),ake=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=ac.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,ac.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"system"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=ns,a.wrap=Sh(),pl=ns,ns=t,Eh.push(pl)},"addPersonOrSystemBoundary"),ske=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=ac.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,ac.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"container"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=ns,a.wrap=Sh(),pl=ns,ns=t,Eh.push(pl)},"addContainerBoundary"),oke=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ac.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ac.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.type={text:"node"};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.type={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.nodeType=t,u.parentBoundary=ns,u.wrap=Sh(),pl=ns,ns=e,Eh.push(pl)},"addDeploymentNode"),lke=o(function(){ns=pl,Eh.pop(),pl=Eh.pop(),Eh.push(pl)},"popBoundaryParseStack"),cke=o(function(t,e,r,n,i,a,s,l,u,h,f){let d=ml.find(p=>p.alias===e);if(!(d===void 0&&(d=ac.find(p=>p.alias===e),d===void 0))){if(r!=null)if(typeof r=="object"){let[p,m]=Object.entries(r)[0];d[p]=m}else d.bgColor=r;if(n!=null)if(typeof n=="object"){let[p,m]=Object.entries(n)[0];d[p]=m}else d.fontColor=n;if(i!=null)if(typeof i=="object"){let[p,m]=Object.entries(i)[0];d[p]=m}else d.borderColor=i;if(a!=null)if(typeof a=="object"){let[p,m]=Object.entries(a)[0];d[p]=m}else d.shadowing=a;if(s!=null)if(typeof s=="object"){let[p,m]=Object.entries(s)[0];d[p]=m}else d.shape=s;if(l!=null)if(typeof l=="object"){let[p,m]=Object.entries(l)[0];d[p]=m}else d.sprite=l;if(u!=null)if(typeof u=="object"){let[p,m]=Object.entries(u)[0];d[p]=m}else d.techn=u;if(h!=null)if(typeof h=="object"){let[p,m]=Object.entries(h)[0];d[p]=m}else d.legendText=h;if(f!=null)if(typeof f=="object"){let[p,m]=Object.entries(f)[0];d[p]=m}else d.legendSprite=f}},"updateElStyle"),uke=o(function(t,e,r,n,i,a,s){let l=sv.find(u=>u.from===e&&u.to===r);if(l!==void 0){if(n!=null)if(typeof n=="object"){let[u,h]=Object.entries(n)[0];l[u]=h}else l.textColor=n;if(i!=null)if(typeof i=="object"){let[u,h]=Object.entries(i)[0];l[u]=h}else l.lineColor=i;if(a!=null)if(typeof a=="object"){let[u,h]=Object.entries(a)[0];l[u]=parseInt(h)}else l.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[u,h]=Object.entries(s)[0];l[u]=parseInt(h)}else l.offsetY=parseInt(s)}},"updateRelStyle"),hke=o(function(t,e,r){let n=V3,i=U3;if(typeof e=="object"){let a=Object.values(e)[0];n=parseInt(a)}else n=parseInt(e);if(typeof r=="object"){let a=Object.values(r)[0];i=parseInt(a)}else i=parseInt(r);n>=1&&(V3=n),i>=1&&(U3=i)},"updateLayoutConfig"),fke=o(function(){return V3},"getC4ShapeInRow"),dke=o(function(){return U3},"getC4BoundaryInRow"),pke=o(function(){return ns},"getCurrentBoundaryParse"),mke=o(function(){return pl},"getParentBoundaryParse"),lH=o(function(t){return t==null?ml:ml.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),gke=o(function(t){return ml.find(e=>e.alias===t)},"getC4Shape"),yke=o(function(t){return Object.keys(lH(t))},"getC4ShapeKeys"),cH=o(function(t){return t==null?ac:ac.filter(e=>e.parentBoundary===t)},"getBoundaries"),vke=cH,xke=o(function(){return sv},"getRels"),bke=o(function(){return $A},"getTitle"),Tke=o(function(t){zA=t},"setWrap"),Sh=o(function(){return zA},"autoWrap"),wke=o(function(){ml=[],ac=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],pl="",ns="global",Eh=[""],sv=[],Eh=[""],$A="",zA=!1,V3=4,U3=2},"clear"),kke={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},Eke={FILLED:0,OPEN:1},Ske={LEFTOF:0,RIGHTOF:1,OVER:2},Cke=o(function(t){$A=sr(t,ge())},"setTitle"),ov={addPersonOrSystem:rke,addPersonOrSystemBoundary:ake,addContainer:nke,addContainerBoundary:ske,addComponent:ike,addDeploymentNode:oke,popBoundaryParseStack:lke,addRel:tke,updateElStyle:cke,updateRelStyle:uke,updateLayoutConfig:hke,autoWrap:Sh,setWrap:Tke,getC4ShapeArray:lH,getC4Shape:gke,getC4ShapeKeys:yke,getBoundaries:cH,getBoundarys:vke,getCurrentBoundaryParse:pke,getParentBoundaryParse:mke,getRels:xke,getTitle:bke,getC4Type:Jwe,getC4ShapeInRow:fke,getC4BoundaryInRow:dke,setAccTitle:Rr,getAccTitle:Mr,getAccDescription:Or,setAccDescription:Ir,getConfig:o(()=>ge().c4,"getConfig"),clear:wke,LINETYPE:kke,ARROWTYPE:Eke,PLACEMENT:Ske,setTitle:Cke,setC4Type:eke}});function bd(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}var VA=N(()=>{"use strict";o(bd,"ascending")});function UA(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}var uH=N(()=>{"use strict";o(UA,"descending")});function Td(t){let e,r,n;t.length!==2?(e=bd,r=o((l,u)=>bd(t(l),u),"compare2"),n=o((l,u)=>t(l)-u,"delta")):(e=t===bd||t===UA?t:Ake,r=t,n=t);function i(l,u,h=0,f=l.length){if(h>>1;r(l[d],u)<0?h=d+1:f=d}while(h>>1;r(l[d],u)<=0?h=d+1:f=d}while(hh&&n(l[d-1],u)>-n(l[d],u)?d-1:d}return o(s,"center"),{left:i,center:s,right:a}}function Ake(){return 0}var HA=N(()=>{"use strict";VA();uH();o(Td,"bisector");o(Ake,"zero")});function qA(t){return t===null?NaN:+t}var hH=N(()=>{"use strict";o(qA,"number")});var fH,dH,_ke,Dke,WA,pH=N(()=>{"use strict";VA();HA();hH();fH=Td(bd),dH=fH.right,_ke=fH.left,Dke=Td(qA).center,WA=dH});function mH({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):r}function Lke({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function Rke({_intern:t,_key:e},r){let n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function Nke(t){return t!==null&&typeof t=="object"?t.valueOf():t}var D0,gH=N(()=>{"use strict";D0=class extends Map{static{o(this,"InternMap")}constructor(e,r=Nke){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(let[n,i]of e)this.set(n,i)}get(e){return super.get(mH(this,e))}has(e){return super.has(mH(this,e))}set(e,r){return super.set(Lke(this,e),r)}delete(e){return super.delete(Rke(this,e))}};o(mH,"intern_get");o(Lke,"intern_set");o(Rke,"intern_delete");o(Nke,"keyof")});function H3(t,e,r){let n=(e-t)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=Mke?10:a>=Ike?5:a>=Oke?2:1,l,u,h;return i<0?(h=Math.pow(10,-i)/s,l=Math.round(t*h),u=Math.round(e*h),l/he&&--u,h=-h):(h=Math.pow(10,i)*s,l=Math.round(t/h),u=Math.round(e/h),l*he&&--u),u0))return[];if(t===e)return[t];let n=e=i))return[];let l=a-i+1,u=new Array(l);if(n)if(s<0)for(let h=0;h{"use strict";Mke=Math.sqrt(50),Ike=Math.sqrt(10),Oke=Math.sqrt(2);o(H3,"tickSpec");o(q3,"ticks");o(lv,"tickIncrement");o(L0,"tickStep")});function W3(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var vH=N(()=>{"use strict";o(W3,"max")});function Y3(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var xH=N(()=>{"use strict";o(Y3,"min")});function X3(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((e-t)/r))|0,a=new Array(i);++n{"use strict";o(X3,"range")});var Ch=N(()=>{"use strict";pH();HA();vH();xH();bH();yH();gH()});function YA(t){return t}var TH=N(()=>{"use strict";o(YA,"default")});function Pke(t){return"translate("+t+",0)"}function Bke(t){return"translate(0,"+t+")"}function Fke(t){return e=>+t(e)}function $ke(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function zke(){return!this.__axis}function kH(t,e){var r=[],n=null,i=null,a=6,s=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,h=t===K3||t===j3?-1:1,f=t===j3||t===XA?"x":"y",d=t===K3||t===jA?Pke:Bke;function p(m){var g=n??(e.ticks?e.ticks.apply(e,r):e.domain()),y=i??(e.tickFormat?e.tickFormat.apply(e,r):YA),v=Math.max(a,0)+l,x=e.range(),b=+x[0]+u,T=+x[x.length-1]+u,S=(e.bandwidth?$ke:Fke)(e.copy(),u),w=m.selection?m.selection():m,k=w.selectAll(".domain").data([null]),A=w.selectAll(".tick").data(g,e).order(),C=A.exit(),R=A.enter().append("g").attr("class","tick"),I=A.select("line"),L=A.select("text");k=k.merge(k.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),A=A.merge(R),I=I.merge(R.append("line").attr("stroke","currentColor").attr(f+"2",h*a)),L=L.merge(R.append("text").attr("fill","currentColor").attr(f,h*v).attr("dy",t===K3?"0em":t===jA?"0.71em":"0.32em")),m!==w&&(k=k.transition(m),A=A.transition(m),I=I.transition(m),L=L.transition(m),C=C.transition(m).attr("opacity",wH).attr("transform",function(E){return isFinite(E=S(E))?d(E+u):this.getAttribute("transform")}),R.attr("opacity",wH).attr("transform",function(E){var D=this.parentNode.__axis;return d((D&&isFinite(D=D(E))?D:S(E))+u)})),C.remove(),k.attr("d",t===j3||t===XA?s?"M"+h*s+","+b+"H"+u+"V"+T+"H"+h*s:"M"+u+","+b+"V"+T:s?"M"+b+","+h*s+"V"+u+"H"+T+"V"+h*s:"M"+b+","+u+"H"+T),A.attr("opacity",1).attr("transform",function(E){return d(S(E)+u)}),I.attr(f+"2",h*a),L.attr(f,h*v).text(y),w.filter(zke).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===XA?"start":t===j3?"end":"middle"),w.each(function(){this.__axis=S})}return o(p,"axis"),p.scale=function(m){return arguments.length?(e=m,p):e},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(i=m,p):i},p.tickSize=function(m){return arguments.length?(a=s=+m,p):a},p.tickSizeInner=function(m){return arguments.length?(a=+m,p):a},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(l=+m,p):l},p.offset=function(m){return arguments.length?(u=+m,p):u},p}function KA(t){return kH(K3,t)}function QA(t){return kH(jA,t)}var K3,XA,jA,j3,wH,EH=N(()=>{"use strict";TH();K3=1,XA=2,jA=3,j3=4,wH=1e-6;o(Pke,"translateX");o(Bke,"translateY");o(Fke,"number");o($ke,"center");o(zke,"entering");o(kH,"axis");o(KA,"axisTop");o(QA,"axisBottom")});var SH=N(()=>{"use strict";EH()});function AH(){for(var t=0,e=arguments.length,r={},n;t=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function Uke(t,e){for(var r=0,n=t.length,i;r{"use strict";Gke={value:o(()=>{},"value")};o(AH,"dispatch");o(Q3,"Dispatch");o(Vke,"parseTypenames");Q3.prototype=AH.prototype={constructor:Q3,on:o(function(t,e){var r=this._,n=Vke(t+"",r),i,a=-1,s=n.length;if(arguments.length<2){for(;++a0)for(var r=new Array(i),n=0,i,a;n{"use strict";_H()});var Z3,e8,t8=N(()=>{"use strict";Z3="http://www.w3.org/1999/xhtml",e8={svg:"http://www.w3.org/2000/svg",xhtml:Z3,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function sc(t){var e=t+="",r=e.indexOf(":");return r>=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),e8.hasOwnProperty(e)?{space:e8[e],local:t}:t}var J3=N(()=>{"use strict";t8();o(sc,"default")});function Hke(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===Z3&&e.documentElement.namespaceURI===Z3?e.createElement(t):e.createElementNS(r,t)}}function qke(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function cv(t){var e=sc(t);return(e.local?qke:Hke)(e)}var r8=N(()=>{"use strict";J3();t8();o(Hke,"creatorInherit");o(qke,"creatorFixed");o(cv,"default")});function Wke(){}function Ah(t){return t==null?Wke:function(){return this.querySelector(t)}}var e5=N(()=>{"use strict";o(Wke,"none");o(Ah,"default")});function n8(t){typeof t!="function"&&(t=Ah(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";gl();e5();o(n8,"default")});function i8(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}var LH=N(()=>{"use strict";o(i8,"array")});function Yke(){return[]}function R0(t){return t==null?Yke:function(){return this.querySelectorAll(t)}}var a8=N(()=>{"use strict";o(Yke,"empty");o(R0,"default")});function Xke(t){return function(){return i8(t.apply(this,arguments))}}function s8(t){typeof t=="function"?t=Xke(t):t=R0(t);for(var e=this._groups,r=e.length,n=[],i=[],a=0;a{"use strict";gl();LH();a8();o(Xke,"arrayAll");o(s8,"default")});function N0(t){return function(){return this.matches(t)}}function t5(t){return function(e){return e.matches(t)}}var uv=N(()=>{"use strict";o(N0,"default");o(t5,"childMatcher")});function Kke(t){return function(){return jke.call(this.children,t)}}function Qke(){return this.firstElementChild}function o8(t){return this.select(t==null?Qke:Kke(typeof t=="function"?t:t5(t)))}var jke,NH=N(()=>{"use strict";uv();jke=Array.prototype.find;o(Kke,"childFind");o(Qke,"childFirst");o(o8,"default")});function Jke(){return Array.from(this.children)}function eEe(t){return function(){return Zke.call(this.children,t)}}function l8(t){return this.selectAll(t==null?Jke:eEe(typeof t=="function"?t:t5(t)))}var Zke,MH=N(()=>{"use strict";uv();Zke=Array.prototype.filter;o(Jke,"children");o(eEe,"childrenFilter");o(l8,"default")});function c8(t){typeof t!="function"&&(t=N0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";gl();uv();o(c8,"default")});function hv(t){return new Array(t.length)}var u8=N(()=>{"use strict";o(hv,"default")});function h8(){return new ui(this._enter||this._groups.map(hv),this._parents)}function fv(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}var f8=N(()=>{"use strict";u8();gl();o(h8,"default");o(fv,"EnterNode");fv.prototype={constructor:fv,appendChild:o(function(t){return this._parent.insertBefore(t,this._next)},"appendChild"),insertBefore:o(function(t,e){return this._parent.insertBefore(t,e)},"insertBefore"),querySelector:o(function(t){return this._parent.querySelector(t)},"querySelector"),querySelectorAll:o(function(t){return this._parent.querySelectorAll(t)},"querySelectorAll")}});function d8(t){return function(){return t}}var OH=N(()=>{"use strict";o(d8,"default")});function tEe(t,e,r,n,i,a){for(var s=0,l,u=e.length,h=a.length;s=T&&(T=b+1);!(w=v[T])&&++T{"use strict";gl();f8();OH();o(tEe,"bindIndex");o(rEe,"bindKey");o(nEe,"datum");o(p8,"default");o(iEe,"arraylike")});function m8(){return new ui(this._exit||this._groups.map(hv),this._parents)}var BH=N(()=>{"use strict";u8();gl();o(m8,"default")});function g8(t,e,r){var n=this.enter(),i=this,a=this.exit();return typeof t=="function"?(n=t(n),n&&(n=n.selection())):n=n.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),r==null?a.remove():r(a),n&&i?n.merge(i).order():i}var FH=N(()=>{"use strict";o(g8,"default")});function y8(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,i=r.length,a=n.length,s=Math.min(i,a),l=new Array(i),u=0;u{"use strict";gl();o(y8,"default")});function v8(){for(var t=this._groups,e=-1,r=t.length;++e=0;)(s=n[i])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}var zH=N(()=>{"use strict";o(v8,"default")});function x8(t){t||(t=aEe);function e(d,p){return d&&p?t(d.__data__,p.__data__):!d-!p}o(e,"compareNode");for(var r=this._groups,n=r.length,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var GH=N(()=>{"use strict";gl();o(x8,"default");o(aEe,"ascending")});function b8(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}var VH=N(()=>{"use strict";o(b8,"default")});function T8(){return Array.from(this)}var UH=N(()=>{"use strict";o(T8,"default")});function w8(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(w8,"default")});function k8(){let t=0;for(let e of this)++t;return t}var qH=N(()=>{"use strict";o(k8,"default")});function E8(){return!this.node()}var WH=N(()=>{"use strict";o(E8,"default")});function S8(t){for(var e=this._groups,r=0,n=e.length;r{"use strict";o(S8,"default")});function sEe(t){return function(){this.removeAttribute(t)}}function oEe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function lEe(t,e){return function(){this.setAttribute(t,e)}}function cEe(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function uEe(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function hEe(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function C8(t,e){var r=sc(t);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((e==null?r.local?oEe:sEe:typeof e=="function"?r.local?hEe:uEe:r.local?cEe:lEe)(r,e))}var XH=N(()=>{"use strict";J3();o(sEe,"attrRemove");o(oEe,"attrRemoveNS");o(lEe,"attrConstant");o(cEe,"attrConstantNS");o(uEe,"attrFunction");o(hEe,"attrFunctionNS");o(C8,"default")});function dv(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}var A8=N(()=>{"use strict";o(dv,"default")});function fEe(t){return function(){this.style.removeProperty(t)}}function dEe(t,e,r){return function(){this.style.setProperty(t,e,r)}}function pEe(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function _8(t,e,r){return arguments.length>1?this.each((e==null?fEe:typeof e=="function"?pEe:dEe)(t,e,r??"")):_h(this.node(),t)}function _h(t,e){return t.style.getPropertyValue(e)||dv(t).getComputedStyle(t,null).getPropertyValue(e)}var D8=N(()=>{"use strict";A8();o(fEe,"styleRemove");o(dEe,"styleConstant");o(pEe,"styleFunction");o(_8,"default");o(_h,"styleValue")});function mEe(t){return function(){delete this[t]}}function gEe(t,e){return function(){this[t]=e}}function yEe(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function L8(t,e){return arguments.length>1?this.each((e==null?mEe:typeof e=="function"?yEe:gEe)(t,e)):this.node()[t]}var jH=N(()=>{"use strict";o(mEe,"propertyRemove");o(gEe,"propertyConstant");o(yEe,"propertyFunction");o(L8,"default")});function KH(t){return t.trim().split(/^|\s+/)}function R8(t){return t.classList||new QH(t)}function QH(t){this._node=t,this._names=KH(t.getAttribute("class")||"")}function ZH(t,e){for(var r=R8(t),n=-1,i=e.length;++n{"use strict";o(KH,"classArray");o(R8,"classList");o(QH,"ClassList");QH.prototype={add:o(function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:o(function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:o(function(t){return this._names.indexOf(t)>=0},"contains")};o(ZH,"classedAdd");o(JH,"classedRemove");o(vEe,"classedTrue");o(xEe,"classedFalse");o(bEe,"classedFunction");o(N8,"default")});function TEe(){this.textContent=""}function wEe(t){return function(){this.textContent=t}}function kEe(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function M8(t){return arguments.length?this.each(t==null?TEe:(typeof t=="function"?kEe:wEe)(t)):this.node().textContent}var tq=N(()=>{"use strict";o(TEe,"textRemove");o(wEe,"textConstant");o(kEe,"textFunction");o(M8,"default")});function EEe(){this.innerHTML=""}function SEe(t){return function(){this.innerHTML=t}}function CEe(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function I8(t){return arguments.length?this.each(t==null?EEe:(typeof t=="function"?CEe:SEe)(t)):this.node().innerHTML}var rq=N(()=>{"use strict";o(EEe,"htmlRemove");o(SEe,"htmlConstant");o(CEe,"htmlFunction");o(I8,"default")});function AEe(){this.nextSibling&&this.parentNode.appendChild(this)}function O8(){return this.each(AEe)}var nq=N(()=>{"use strict";o(AEe,"raise");o(O8,"default")});function _Ee(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function P8(){return this.each(_Ee)}var iq=N(()=>{"use strict";o(_Ee,"lower");o(P8,"default")});function B8(t){var e=typeof t=="function"?t:cv(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}var aq=N(()=>{"use strict";r8();o(B8,"default")});function DEe(){return null}function F8(t,e){var r=typeof t=="function"?t:cv(t),n=e==null?DEe:typeof e=="function"?e:Ah(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var sq=N(()=>{"use strict";r8();e5();o(DEe,"constantNull");o(F8,"default")});function LEe(){var t=this.parentNode;t&&t.removeChild(this)}function $8(){return this.each(LEe)}var oq=N(()=>{"use strict";o(LEe,"remove");o($8,"default")});function REe(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function NEe(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function z8(t){return this.select(t?NEe:REe)}var lq=N(()=>{"use strict";o(REe,"selection_cloneShallow");o(NEe,"selection_cloneDeep");o(z8,"default")});function G8(t){return arguments.length?this.property("__data__",t):this.node().__data__}var cq=N(()=>{"use strict";o(G8,"default")});function MEe(t){return function(e){t.call(this,e,this.__data__)}}function IEe(t){return t.trim().split(/^|\s+/).map(function(e){var r="",n=e.indexOf(".");return n>=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function OEe(t){return function(){var e=this.__on;if(e){for(var r=0,n=-1,i=e.length,a;r{"use strict";o(MEe,"contextListener");o(IEe,"parseTypenames");o(OEe,"onRemove");o(PEe,"onAdd");o(V8,"default")});function hq(t,e,r){var n=dv(t),i=n.CustomEvent;typeof i=="function"?i=new i(e,r):(i=n.document.createEvent("Event"),r?(i.initEvent(e,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function BEe(t,e){return function(){return hq(this,t,e)}}function FEe(t,e){return function(){return hq(this,t,e.apply(this,arguments))}}function U8(t,e){return this.each((typeof e=="function"?FEe:BEe)(t,e))}var fq=N(()=>{"use strict";A8();o(hq,"dispatchEvent");o(BEe,"dispatchConstant");o(FEe,"dispatchFunction");o(U8,"default")});function*H8(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(H8,"default")});function ui(t,e){this._groups=t,this._parents=e}function pq(){return new ui([[document.documentElement]],q8)}function $Ee(){return this}var q8,yu,gl=N(()=>{"use strict";DH();RH();NH();MH();IH();PH();f8();BH();FH();$H();zH();GH();VH();UH();HH();qH();WH();YH();XH();D8();jH();eq();tq();rq();nq();iq();aq();sq();oq();lq();cq();uq();fq();dq();q8=[null];o(ui,"Selection");o(pq,"selection");o($Ee,"selection_selection");ui.prototype=pq.prototype={constructor:ui,select:n8,selectAll:s8,selectChild:o8,selectChildren:l8,filter:c8,data:p8,enter:h8,exit:m8,join:g8,merge:y8,selection:$Ee,order:v8,sort:x8,call:b8,nodes:T8,node:w8,size:k8,empty:E8,each:S8,attr:C8,style:_8,property:L8,classed:N8,text:M8,html:I8,raise:O8,lower:P8,append:B8,insert:F8,remove:$8,clone:z8,datum:G8,on:V8,dispatch:U8,[Symbol.iterator]:H8};yu=pq});function qe(t){return typeof t=="string"?new ui([[document.querySelector(t)]],[document.documentElement]):new ui([[t]],q8)}var mq=N(()=>{"use strict";gl();o(qe,"default")});var yl=N(()=>{"use strict";uv();J3();mq();gl();e5();a8();D8()});var gq=N(()=>{"use strict"});function Dh(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function M0(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}var W8=N(()=>{"use strict";o(Dh,"default");o(M0,"extend")});function Lh(){}function vq(){return this.rgb().formatHex()}function YEe(){return this.rgb().formatHex8()}function XEe(){return Sq(this).formatHsl()}function xq(){return this.rgb().formatRgb()}function xl(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=zEe.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?bq(e):r===3?new oa(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?r5(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?r5(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=GEe.exec(t))?new oa(e[1],e[2],e[3],1):(e=VEe.exec(t))?new oa(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=UEe.exec(t))?r5(e[1],e[2],e[3],e[4]):(e=HEe.exec(t))?r5(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=qEe.exec(t))?kq(e[1],e[2]/100,e[3]/100,1):(e=WEe.exec(t))?kq(e[1],e[2]/100,e[3]/100,e[4]):yq.hasOwnProperty(t)?bq(yq[t]):t==="transparent"?new oa(NaN,NaN,NaN,0):null}function bq(t){return new oa(t>>16&255,t>>8&255,t&255,1)}function r5(t,e,r,n){return n<=0&&(t=e=r=NaN),new oa(t,e,r,n)}function X8(t){return t instanceof Lh||(t=xl(t)),t?(t=t.rgb(),new oa(t.r,t.g,t.b,t.opacity)):new oa}function O0(t,e,r,n){return arguments.length===1?X8(t):new oa(t,e,r,n??1)}function oa(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function Tq(){return`#${wd(this.r)}${wd(this.g)}${wd(this.b)}`}function jEe(){return`#${wd(this.r)}${wd(this.g)}${wd(this.b)}${wd((isNaN(this.opacity)?1:this.opacity)*255)}`}function wq(){let t=a5(this.opacity);return`${t===1?"rgb(":"rgba("}${kd(this.r)}, ${kd(this.g)}, ${kd(this.b)}${t===1?")":`, ${t})`}`}function a5(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function kd(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function wd(t){return t=kd(t),(t<16?"0":"")+t.toString(16)}function kq(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new vl(t,e,r,n)}function Sq(t){if(t instanceof vl)return new vl(t.h,t.s,t.l,t.opacity);if(t instanceof Lh||(t=xl(t)),!t)return new vl;if(t instanceof vl)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),a=Math.max(e,r,n),s=NaN,l=a-i,u=(a+i)/2;return l?(e===a?s=(r-n)/l+(r0&&u<1?0:s,new vl(s,l,u,t.opacity)}function Cq(t,e,r,n){return arguments.length===1?Sq(t):new vl(t,e,r,n??1)}function vl(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function Eq(t){return t=(t||0)%360,t<0?t+360:t}function n5(t){return Math.max(0,Math.min(1,t||0))}function Y8(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}var pv,i5,I0,mv,oc,zEe,GEe,VEe,UEe,HEe,qEe,WEe,yq,j8=N(()=>{"use strict";W8();o(Lh,"Color");pv=.7,i5=1/pv,I0="\\s*([+-]?\\d+)\\s*",mv="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",oc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",zEe=/^#([0-9a-f]{3,8})$/,GEe=new RegExp(`^rgb\\(${I0},${I0},${I0}\\)$`),VEe=new RegExp(`^rgb\\(${oc},${oc},${oc}\\)$`),UEe=new RegExp(`^rgba\\(${I0},${I0},${I0},${mv}\\)$`),HEe=new RegExp(`^rgba\\(${oc},${oc},${oc},${mv}\\)$`),qEe=new RegExp(`^hsl\\(${mv},${oc},${oc}\\)$`),WEe=new RegExp(`^hsla\\(${mv},${oc},${oc},${mv}\\)$`),yq={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Dh(Lh,xl,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:vq,formatHex:vq,formatHex8:YEe,formatHsl:XEe,formatRgb:xq,toString:xq});o(vq,"color_formatHex");o(YEe,"color_formatHex8");o(XEe,"color_formatHsl");o(xq,"color_formatRgb");o(xl,"color");o(bq,"rgbn");o(r5,"rgba");o(X8,"rgbConvert");o(O0,"rgb");o(oa,"Rgb");Dh(oa,O0,M0(Lh,{brighter(t){return t=t==null?i5:Math.pow(i5,t),new oa(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?pv:Math.pow(pv,t),new oa(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new oa(kd(this.r),kd(this.g),kd(this.b),a5(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Tq,formatHex:Tq,formatHex8:jEe,formatRgb:wq,toString:wq}));o(Tq,"rgb_formatHex");o(jEe,"rgb_formatHex8");o(wq,"rgb_formatRgb");o(a5,"clampa");o(kd,"clampi");o(wd,"hex");o(kq,"hsla");o(Sq,"hslConvert");o(Cq,"hsl");o(vl,"Hsl");Dh(vl,Cq,M0(Lh,{brighter(t){return t=t==null?i5:Math.pow(i5,t),new vl(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?pv:Math.pow(pv,t),new vl(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new oa(Y8(t>=240?t-240:t+120,i,n),Y8(t,i,n),Y8(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new vl(Eq(this.h),n5(this.s),n5(this.l),a5(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=a5(this.opacity);return`${t===1?"hsl(":"hsla("}${Eq(this.h)}, ${n5(this.s)*100}%, ${n5(this.l)*100}%${t===1?")":`, ${t})`}`}}));o(Eq,"clamph");o(n5,"clampt");o(Y8,"hsl2rgb")});var Aq,_q,Dq=N(()=>{"use strict";Aq=Math.PI/180,_q=180/Math.PI});function Oq(t){if(t instanceof lc)return new lc(t.l,t.a,t.b,t.opacity);if(t instanceof vu)return Pq(t);t instanceof oa||(t=X8(t));var e=J8(t.r),r=J8(t.g),n=J8(t.b),i=K8((.2225045*e+.7168786*r+.0606169*n)/Rq),a,s;return e===r&&r===n?a=s=i:(a=K8((.4360747*e+.3850649*r+.1430804*n)/Lq),s=K8((.0139322*e+.0971045*r+.7141733*n)/Nq)),new lc(116*i-16,500*(a-i),200*(i-s),t.opacity)}function e_(t,e,r,n){return arguments.length===1?Oq(t):new lc(t,e,r,n??1)}function lc(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function K8(t){return t>KEe?Math.pow(t,1/3):t/Iq+Mq}function Q8(t){return t>P0?t*t*t:Iq*(t-Mq)}function Z8(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function J8(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function QEe(t){if(t instanceof vu)return new vu(t.h,t.c,t.l,t.opacity);if(t instanceof lc||(t=Oq(t)),t.a===0&&t.b===0)return new vu(NaN,0{"use strict";W8();j8();Dq();s5=18,Lq=.96422,Rq=1,Nq=.82521,Mq=4/29,P0=6/29,Iq=3*P0*P0,KEe=P0*P0*P0;o(Oq,"labConvert");o(e_,"lab");o(lc,"Lab");Dh(lc,e_,M0(Lh,{brighter(t){return new lc(this.l+s5*(t??1),this.a,this.b,this.opacity)},darker(t){return new lc(this.l-s5*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return e=Lq*Q8(e),t=Rq*Q8(t),r=Nq*Q8(r),new oa(Z8(3.1338561*e-1.6168667*t-.4906146*r),Z8(-.9787684*e+1.9161415*t+.033454*r),Z8(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}}));o(K8,"xyz2lab");o(Q8,"lab2xyz");o(Z8,"lrgb2rgb");o(J8,"rgb2lrgb");o(QEe,"hclConvert");o(gv,"hcl");o(vu,"Hcl");o(Pq,"hcl2lab");Dh(vu,gv,M0(Lh,{brighter(t){return new vu(this.h,this.c,this.l+s5*(t??1),this.opacity)},darker(t){return new vu(this.h,this.c,this.l-s5*(t??1),this.opacity)},rgb(){return Pq(this).rgb()}}))});var B0=N(()=>{"use strict";j8();Bq()});function t_(t,e,r,n,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*r+(1+3*t+3*a-3*s)*n+s*i)/6}function r_(t){var e=t.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),i=t[n],a=t[n+1],s=n>0?t[n-1]:2*i-a,l=n{"use strict";o(t_,"basis");o(r_,"default")});function i_(t){var e=t.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*e),i=t[(n+e-1)%e],a=t[n%e],s=t[(n+1)%e],l=t[(n+2)%e];return t_((r-n/e)*e,i,a,s,l)}}var Fq=N(()=>{"use strict";n_();o(i_,"default")});var F0,a_=N(()=>{"use strict";F0=o(t=>()=>t,"default")});function $q(t,e){return function(r){return t+r*e}}function ZEe(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function zq(t,e){var r=e-t;return r?$q(t,r>180||r<-180?r-360*Math.round(r/360):r):F0(isNaN(t)?e:t)}function Gq(t){return(t=+t)==1?xu:function(e,r){return r-e?ZEe(e,r,t):F0(isNaN(e)?r:e)}}function xu(t,e){var r=e-t;return r?$q(t,r):F0(isNaN(t)?e:t)}var s_=N(()=>{"use strict";a_();o($q,"linear");o(ZEe,"exponential");o(zq,"hue");o(Gq,"gamma");o(xu,"nogamma")});function Vq(t){return function(e){var r=e.length,n=new Array(r),i=new Array(r),a=new Array(r),s,l;for(s=0;s{"use strict";B0();n_();Fq();s_();Ed=o((function t(e){var r=Gq(e);function n(i,a){var s=r((i=O0(i)).r,(a=O0(a)).r),l=r(i.g,a.g),u=r(i.b,a.b),h=xu(i.opacity,a.opacity);return function(f){return i.r=s(f),i.g=l(f),i.b=u(f),i.opacity=h(f),i+""}}return o(n,"rgb"),n.gamma=t,n}),"rgbGamma")(1);o(Vq,"rgbSpline");JEe=Vq(r_),eSe=Vq(i_)});function l_(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),i;return function(a){for(i=0;i{"use strict";o(l_,"default");o(Uq,"isNumberArray")});function qq(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,i=new Array(n),a=new Array(r),s;for(s=0;s{"use strict";o5();o(qq,"genericArray")});function c_(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}var Yq=N(()=>{"use strict";o(c_,"default")});function Wi(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var yv=N(()=>{"use strict";o(Wi,"default")});function u_(t,e){var r={},n={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?r[i]=Rh(t[i],e[i]):n[i]=e[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var Xq=N(()=>{"use strict";o5();o(u_,"default")});function tSe(t){return function(){return t}}function rSe(t){return function(e){return t(e)+""}}function $0(t,e){var r=f_.lastIndex=h_.lastIndex=0,n,i,a,s=-1,l=[],u=[];for(t=t+"",e=e+"";(n=f_.exec(t))&&(i=h_.exec(e));)(a=i.index)>r&&(a=e.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(n=n[0])===(i=i[0])?l[s]?l[s]+=i:l[++s]=i:(l[++s]=null,u.push({i:s,x:Wi(n,i)})),r=h_.lastIndex;return r{"use strict";yv();f_=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,h_=new RegExp(f_.source,"g");o(tSe,"zero");o(rSe,"one");o($0,"default")});function Rh(t,e){var r=typeof e,n;return e==null||r==="boolean"?F0(e):(r==="number"?Wi:r==="string"?(n=xl(e))?(e=n,Ed):$0:e instanceof xl?Ed:e instanceof Date?c_:Uq(e)?l_:Array.isArray(e)?qq:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?u_:Wi)(t,e)}var o5=N(()=>{"use strict";B0();o_();Wq();Yq();yv();Xq();d_();a_();Hq();o(Rh,"default")});function l5(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var jq=N(()=>{"use strict";o(l5,"default")});function u5(t,e,r,n,i,a){var s,l,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*r+e*n)&&(r-=t*u,n-=e*u),(l=Math.sqrt(r*r+n*n))&&(r/=l,n/=l,u/=l),t*n{"use strict";Kq=180/Math.PI,c5={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};o(u5,"default")});function Zq(t){let e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?c5:u5(e.a,e.b,e.c,e.d,e.e,e.f)}function Jq(t){return t==null?c5:(h5||(h5=document.createElementNS("http://www.w3.org/2000/svg","g")),h5.setAttribute("transform",t),(t=h5.transform.baseVal.consolidate())?(t=t.matrix,u5(t.a,t.b,t.c,t.d,t.e,t.f)):c5)}var h5,eW=N(()=>{"use strict";Qq();o(Zq,"parseCss");o(Jq,"parseSvg")});function tW(t,e,r,n){function i(h){return h.length?h.pop()+" ":""}o(i,"pop");function a(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push("translate(",null,e,null,r);g.push({i:y-4,x:Wi(h,d)},{i:y-2,x:Wi(f,p)})}else(d||p)&&m.push("translate("+d+e+p+r)}o(a,"translate");function s(h,f,d,p){h!==f?(h-f>180?f+=360:f-h>180&&(h+=360),p.push({i:d.push(i(d)+"rotate(",null,n)-2,x:Wi(h,f)})):f&&d.push(i(d)+"rotate("+f+n)}o(s,"rotate");function l(h,f,d,p){h!==f?p.push({i:d.push(i(d)+"skewX(",null,n)-2,x:Wi(h,f)}):f&&d.push(i(d)+"skewX("+f+n)}o(l,"skewX");function u(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push(i(m)+"scale(",null,",",null,")");g.push({i:y-4,x:Wi(h,d)},{i:y-2,x:Wi(f,p)})}else(d!==1||p!==1)&&m.push(i(m)+"scale("+d+","+p+")")}return o(u,"scale"),function(h,f){var d=[],p=[];return h=t(h),f=t(f),a(h.translateX,h.translateY,f.translateX,f.translateY,d,p),s(h.rotate,f.rotate,d,p),l(h.skewX,f.skewX,d,p),u(h.scaleX,h.scaleY,f.scaleX,f.scaleY,d,p),h=f=null,function(m){for(var g=-1,y=p.length,v;++g{"use strict";yv();eW();o(tW,"interpolateTransform");p_=tW(Zq,"px, ","px)","deg)"),m_=tW(Jq,", ",")",")")});function nW(t){return function(e,r){var n=t((e=gv(e)).h,(r=gv(r)).h),i=xu(e.c,r.c),a=xu(e.l,r.l),s=xu(e.opacity,r.opacity);return function(l){return e.h=n(l),e.c=i(l),e.l=a(l),e.opacity=s(l),e+""}}}var g_,nSe,iW=N(()=>{"use strict";B0();s_();o(nW,"hcl");g_=nW(zq),nSe=nW(xu)});var z0=N(()=>{"use strict";o5();yv();jq();d_();rW();o_();iW()});function kv(){return Sd||(oW(iSe),Sd=Tv.now()+p5)}function iSe(){Sd=0}function wv(){this._call=this._time=this._next=null}function m5(t,e,r){var n=new wv;return n.restart(t,e,r),n}function lW(){kv(),++G0;for(var t=f5,e;t;)(e=Sd-t._time)>=0&&t._call.call(void 0,e),t=t._next;--G0}function aW(){Sd=(d5=Tv.now())+p5,G0=xv=0;try{lW()}finally{G0=0,sSe(),Sd=0}}function aSe(){var t=Tv.now(),e=t-d5;e>sW&&(p5-=e,d5=t)}function sSe(){for(var t,e=f5,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:f5=r);bv=t,y_(n)}function y_(t){if(!G0){xv&&(xv=clearTimeout(xv));var e=t-Sd;e>24?(t<1/0&&(xv=setTimeout(aW,t-Tv.now()-p5)),vv&&(vv=clearInterval(vv))):(vv||(d5=Tv.now(),vv=setInterval(aSe,sW)),G0=1,oW(aW))}}var G0,xv,vv,sW,f5,bv,d5,Sd,p5,Tv,oW,v_=N(()=>{"use strict";G0=0,xv=0,vv=0,sW=1e3,d5=0,Sd=0,p5=0,Tv=typeof performance=="object"&&performance.now?performance:Date,oW=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};o(kv,"now");o(iSe,"clearNow");o(wv,"Timer");wv.prototype=m5.prototype={constructor:wv,restart:o(function(t,e,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?kv():+r)+(e==null?0:+e),!this._next&&bv!==this&&(bv?bv._next=this:f5=this,bv=this),this._call=t,this._time=r,y_()},"restart"),stop:o(function(){this._call&&(this._call=null,this._time=1/0,y_())},"stop")};o(m5,"timer");o(lW,"timerFlush");o(aW,"wake");o(aSe,"poke");o(sSe,"nap");o(y_,"sleep")});function Ev(t,e,r){var n=new wv;return e=e==null?0:+e,n.restart(i=>{n.stop(),t(i+e)},e,r),n}var cW=N(()=>{"use strict";v_();o(Ev,"default")});var g5=N(()=>{"use strict";v_();cW()});function bu(t,e,r,n,i,a){var s=t.__transition;if(!s)t.__transition={};else if(r in s)return;cSe(t,r,{name:e,index:n,group:i,on:oSe,tween:lSe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:fW})}function Cv(t,e){var r=Oi(t,e);if(r.state>fW)throw new Error("too late; already scheduled");return r}function la(t,e){var r=Oi(t,e);if(r.state>y5)throw new Error("too late; already running");return r}function Oi(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function cSe(t,e,r){var n=t.__transition,i;n[e]=r,r.timer=m5(a,0,r.time);function a(h){r.state=uW,r.timer.restart(s,r.delay,r.time),r.delay<=h&&s(h-r.delay)}o(a,"schedule");function s(h){var f,d,p,m;if(r.state!==uW)return u();for(f in n)if(m=n[f],m.name===r.name){if(m.state===y5)return Ev(s);m.state===hW?(m.state=Sv,m.timer.stop(),m.on.call("interrupt",t,t.__data__,m.index,m.group),delete n[f]):+f{"use strict";JA();g5();oSe=ZA("start","end","cancel","interrupt"),lSe=[],fW=0,uW=1,v5=2,y5=3,hW=4,x5=5,Sv=6;o(bu,"default");o(Cv,"init");o(la,"set");o(Oi,"get");o(cSe,"create")});function Av(t,e){var r=t.__transition,n,i,a=!0,s;if(r){e=e==null?null:e+"";for(s in r){if((n=r[s]).name!==e){a=!1;continue}i=n.state>v5&&n.state{"use strict";Ds();o(Av,"default")});function x_(t){return this.each(function(){Av(this,t)})}var pW=N(()=>{"use strict";dW();o(x_,"default")});function uSe(t,e){var r,n;return function(){var i=la(this,t),a=i.tween;if(a!==r){n=r=a;for(var s=0,l=n.length;s{"use strict";Ds();o(uSe,"tweenRemove");o(hSe,"tweenFunction");o(b_,"default");o(V0,"tweenValue")});function Dv(t,e){var r;return(typeof e=="number"?Wi:e instanceof xl?Ed:(r=xl(e))?(e=r,Ed):$0)(t,e)}var T_=N(()=>{"use strict";B0();z0();o(Dv,"default")});function fSe(t){return function(){this.removeAttribute(t)}}function dSe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function pSe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttribute(t);return s===i?null:s===n?a:a=e(n=s,r)}}function mSe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===n?a:a=e(n=s,r)}}function gSe(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function ySe(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function w_(t,e){var r=sc(t),n=r==="transform"?m_:Dv;return this.attrTween(t,typeof e=="function"?(r.local?ySe:gSe)(r,n,V0(this,"attr."+t,e)):e==null?(r.local?dSe:fSe)(r):(r.local?mSe:pSe)(r,n,e))}var mW=N(()=>{"use strict";z0();yl();_v();T_();o(fSe,"attrRemove");o(dSe,"attrRemoveNS");o(pSe,"attrConstant");o(mSe,"attrConstantNS");o(gSe,"attrFunction");o(ySe,"attrFunctionNS");o(w_,"default")});function vSe(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function xSe(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function bSe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&xSe(t,a)),r}return o(i,"tween"),i._value=e,i}function TSe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&vSe(t,a)),r}return o(i,"tween"),i._value=e,i}function k_(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;var n=sc(t);return this.tween(r,(n.local?bSe:TSe)(n,e))}var gW=N(()=>{"use strict";yl();o(vSe,"attrInterpolate");o(xSe,"attrInterpolateNS");o(bSe,"attrTweenNS");o(TSe,"attrTween");o(k_,"default")});function wSe(t,e){return function(){Cv(this,t).delay=+e.apply(this,arguments)}}function kSe(t,e){return e=+e,function(){Cv(this,t).delay=e}}function E_(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?wSe:kSe)(e,t)):Oi(this.node(),e).delay}var yW=N(()=>{"use strict";Ds();o(wSe,"delayFunction");o(kSe,"delayConstant");o(E_,"default")});function ESe(t,e){return function(){la(this,t).duration=+e.apply(this,arguments)}}function SSe(t,e){return e=+e,function(){la(this,t).duration=e}}function S_(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?ESe:SSe)(e,t)):Oi(this.node(),e).duration}var vW=N(()=>{"use strict";Ds();o(ESe,"durationFunction");o(SSe,"durationConstant");o(S_,"default")});function CSe(t,e){if(typeof e!="function")throw new Error;return function(){la(this,t).ease=e}}function C_(t){var e=this._id;return arguments.length?this.each(CSe(e,t)):Oi(this.node(),e).ease}var xW=N(()=>{"use strict";Ds();o(CSe,"easeConstant");o(C_,"default")});function ASe(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!="function")throw new Error;la(this,t).ease=r}}function A_(t){if(typeof t!="function")throw new Error;return this.each(ASe(this._id,t))}var bW=N(()=>{"use strict";Ds();o(ASe,"easeVarying");o(A_,"default")});function __(t){typeof t!="function"&&(t=N0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";yl();Cd();o(__,"default")});function D_(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,i=r.length,a=Math.min(n,i),s=new Array(n),l=0;l{"use strict";Cd();o(D_,"default")});function _Se(t){return(t+"").trim().split(/^|\s+/).every(function(e){var r=e.indexOf(".");return r>=0&&(e=e.slice(0,r)),!e||e==="start"})}function DSe(t,e,r){var n,i,a=_Se(e)?Cv:la;return function(){var s=a(this,t),l=s.on;l!==n&&(i=(n=l).copy()).on(e,r),s.on=i}}function L_(t,e){var r=this._id;return arguments.length<2?Oi(this.node(),r).on.on(t):this.each(DSe(r,t,e))}var kW=N(()=>{"use strict";Ds();o(_Se,"start");o(DSe,"onFunction");o(L_,"default")});function LSe(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function R_(){return this.on("end.remove",LSe(this._id))}var EW=N(()=>{"use strict";o(LSe,"removeFunction");o(R_,"default")});function N_(t){var e=this._name,r=this._id;typeof t!="function"&&(t=Ah(t));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s{"use strict";yl();Cd();Ds();o(N_,"default")});function M_(t){var e=this._name,r=this._id;typeof t!="function"&&(t=R0(t));for(var n=this._groups,i=n.length,a=[],s=[],l=0;l{"use strict";yl();Cd();Ds();o(M_,"default")});function I_(){return new RSe(this._groups,this._parents)}var RSe,AW=N(()=>{"use strict";yl();RSe=yu.prototype.constructor;o(I_,"default")});function NSe(t,e){var r,n,i;return function(){var a=_h(this,t),s=(this.style.removeProperty(t),_h(this,t));return a===s?null:a===r&&s===n?i:i=e(r=a,n=s)}}function _W(t){return function(){this.style.removeProperty(t)}}function MSe(t,e,r){var n,i=r+"",a;return function(){var s=_h(this,t);return s===i?null:s===n?a:a=e(n=s,r)}}function ISe(t,e,r){var n,i,a;return function(){var s=_h(this,t),l=r(this),u=l+"";return l==null&&(u=l=(this.style.removeProperty(t),_h(this,t))),s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l))}}function OSe(t,e){var r,n,i,a="style."+e,s="end."+a,l;return function(){var u=la(this,t),h=u.on,f=u.value[a]==null?l||(l=_W(e)):void 0;(h!==r||i!==f)&&(n=(r=h).copy()).on(s,i=f),u.on=n}}function O_(t,e,r){var n=(t+="")=="transform"?p_:Dv;return e==null?this.styleTween(t,NSe(t,n)).on("end.style."+t,_W(t)):typeof e=="function"?this.styleTween(t,ISe(t,n,V0(this,"style."+t,e))).each(OSe(this._id,t)):this.styleTween(t,MSe(t,n,e),r).on("end.style."+t,null)}var DW=N(()=>{"use strict";z0();yl();Ds();_v();T_();o(NSe,"styleNull");o(_W,"styleRemove");o(MSe,"styleConstant");o(ISe,"styleFunction");o(OSe,"styleMaybeRemove");o(O_,"default")});function PSe(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function BSe(t,e,r){var n,i;function a(){var s=e.apply(this,arguments);return s!==i&&(n=(i=s)&&PSe(t,s,r)),n}return o(a,"tween"),a._value=e,a}function P_(t,e,r){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;return this.tween(n,BSe(t,e,r??""))}var LW=N(()=>{"use strict";o(PSe,"styleInterpolate");o(BSe,"styleTween");o(P_,"default")});function FSe(t){return function(){this.textContent=t}}function $Se(t){return function(){var e=t(this);this.textContent=e??""}}function B_(t){return this.tween("text",typeof t=="function"?$Se(V0(this,"text",t)):FSe(t==null?"":t+""))}var RW=N(()=>{"use strict";_v();o(FSe,"textConstant");o($Se,"textFunction");o(B_,"default")});function zSe(t){return function(e){this.textContent=t.call(this,e)}}function GSe(t){var e,r;function n(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&zSe(i)),e}return o(n,"tween"),n._value=t,n}function F_(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,GSe(t))}var NW=N(()=>{"use strict";o(zSe,"textInterpolate");o(GSe,"textTween");o(F_,"default")});function $_(){for(var t=this._name,e=this._id,r=b5(),n=this._groups,i=n.length,a=0;a{"use strict";Cd();Ds();o($_,"default")});function z_(){var t,e,r=this,n=r._id,i=r.size();return new Promise(function(a,s){var l={value:s},u={value:o(function(){--i===0&&a()},"value")};r.each(function(){var h=la(this,n),f=h.on;f!==t&&(e=(t=f).copy(),e._.cancel.push(l),e._.interrupt.push(l),e._.end.push(u)),h.on=e}),i===0&&a()})}var IW=N(()=>{"use strict";Ds();o(z_,"default")});function is(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function OW(t){return yu().transition(t)}function b5(){return++VSe}var VSe,Tu,Cd=N(()=>{"use strict";yl();mW();gW();yW();vW();xW();bW();TW();wW();kW();EW();SW();CW();AW();DW();LW();RW();NW();MW();_v();IW();VSe=0;o(is,"Transition");o(OW,"transition");o(b5,"newId");Tu=yu.prototype;is.prototype=OW.prototype={constructor:is,select:N_,selectAll:M_,selectChild:Tu.selectChild,selectChildren:Tu.selectChildren,filter:__,merge:D_,selection:I_,transition:$_,call:Tu.call,nodes:Tu.nodes,node:Tu.node,size:Tu.size,empty:Tu.empty,each:Tu.each,on:L_,attr:w_,attrTween:k_,style:O_,styleTween:P_,text:B_,textTween:F_,remove:R_,tween:b_,delay:E_,duration:S_,ease:C_,easeVarying:A_,end:z_,[Symbol.iterator]:Tu[Symbol.iterator]}});function T5(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var PW=N(()=>{"use strict";o(T5,"cubicInOut")});var G_=N(()=>{"use strict";PW()});function HSe(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function V_(t){var e,r;t instanceof is?(e=t._id,t=t._name):(e=b5(),(r=USe).time=kv(),t=t==null?null:t+"");for(var n=this._groups,i=n.length,a=0;a{"use strict";Cd();Ds();G_();g5();USe={time:null,delay:0,duration:250,ease:T5};o(HSe,"inherit");o(V_,"default")});var FW=N(()=>{"use strict";yl();pW();BW();yu.prototype.interrupt=x_;yu.prototype.transition=V_});var w5=N(()=>{"use strict";FW()});var $W=N(()=>{"use strict"});var zW=N(()=>{"use strict"});var GW=N(()=>{"use strict"});function VW(t){return[+t[0],+t[1]]}function qSe(t){return[VW(t[0]),VW(t[1])]}function U_(t){return{type:t}}var c1t,u1t,h1t,f1t,d1t,p1t,UW=N(()=>{"use strict";w5();$W();zW();GW();({abs:c1t,max:u1t,min:h1t}=Math);o(VW,"number1");o(qSe,"number2");f1t={name:"x",handles:["w","e"].map(U_),input:o(function(t,e){return t==null?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},"input"),output:o(function(t){return t&&[t[0][0],t[1][0]]},"output")},d1t={name:"y",handles:["n","s"].map(U_),input:o(function(t,e){return t==null?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},"input"),output:o(function(t){return t&&[t[0][1],t[1][1]]},"output")},p1t={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(U_),input:o(function(t){return t==null?null:qSe(t)},"input"),output:o(function(t){return t},"output")};o(U_,"type")});var HW=N(()=>{"use strict";UW()});function qW(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return qW;let r=10**e;return function(n){this._+=n[0];for(let i=1,a=n.length;i{"use strict";H_=Math.PI,q_=2*H_,Ad=1e-6,WSe=q_-Ad;o(qW,"append");o(YSe,"appendRound");_d=class{static{o(this,"Path")}constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?qW:YSe(e)}moveTo(e,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,r){this._append`L${this._x1=+e},${this._y1=+r}`}quadraticCurveTo(e,r,n,i){this._append`Q${+e},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(e,r,n,i,a,s){this._append`C${+e},${+r},${+n},${+i},${this._x1=+a},${this._y1=+s}`}arcTo(e,r,n,i,a){if(e=+e,r=+r,n=+n,i=+i,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,l=this._y1,u=n-e,h=i-r,f=s-e,d=l-r,p=f*f+d*d;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(p>Ad)if(!(Math.abs(d*u-h*f)>Ad)||!a)this._append`L${this._x1=e},${this._y1=r}`;else{let m=n-s,g=i-l,y=u*u+h*h,v=m*m+g*g,x=Math.sqrt(y),b=Math.sqrt(p),T=a*Math.tan((H_-Math.acos((y+p-v)/(2*x*b)))/2),S=T/b,w=T/x;Math.abs(S-1)>Ad&&this._append`L${e+S*f},${r+S*d}`,this._append`A${a},${a},0,0,${+(d*m>f*g)},${this._x1=e+w*u},${this._y1=r+w*h}`}}arc(e,r,n,i,a,s){if(e=+e,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let l=n*Math.cos(i),u=n*Math.sin(i),h=e+l,f=r+u,d=1^s,p=s?i-a:a-i;this._x1===null?this._append`M${h},${f}`:(Math.abs(this._x1-h)>Ad||Math.abs(this._y1-f)>Ad)&&this._append`L${h},${f}`,n&&(p<0&&(p=p%q_+q_),p>WSe?this._append`A${n},${n},0,1,${d},${e-l},${r-u}A${n},${n},0,1,${d},${this._x1=h},${this._y1=f}`:p>Ad&&this._append`A${n},${n},0,${+(p>=H_)},${d},${this._x1=e+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(e,r,n,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};o(WW,"path");WW.prototype=_d.prototype});var W_=N(()=>{"use strict";YW()});var XW=N(()=>{"use strict"});var jW=N(()=>{"use strict"});var KW=N(()=>{"use strict"});var QW=N(()=>{"use strict"});var ZW=N(()=>{"use strict"});var JW=N(()=>{"use strict"});var eY=N(()=>{"use strict"});function Y_(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Dd(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}var Lv=N(()=>{"use strict";o(Y_,"default");o(Dd,"formatDecimalParts")});function bl(t){return t=Dd(Math.abs(t)),t?t[1]:NaN}var Rv=N(()=>{"use strict";Lv();o(bl,"default")});function X_(t,e){return function(r,n){for(var i=r.length,a=[],s=0,l=t[0],u=0;i>0&&l>0&&(u+l+1>n&&(l=Math.max(1,n-u)),a.push(r.substring(i-=l,i+l)),!((u+=l+1)>n));)l=t[s=(s+1)%t.length];return a.reverse().join(e)}}var tY=N(()=>{"use strict";o(X_,"default")});function j_(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var rY=N(()=>{"use strict";o(j_,"default")});function Nh(t){if(!(e=XSe.exec(t)))throw new Error("invalid format: "+t);var e;return new k5({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function k5(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}var XSe,K_=N(()=>{"use strict";XSe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;o(Nh,"formatSpecifier");Nh.prototype=k5.prototype;o(k5,"FormatSpecifier");k5.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function Q_(t){e:for(var e=t.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(i+1):t}var nY=N(()=>{"use strict";o(Q_,"default")});function J_(t,e){var r=Dd(t,e);if(!r)return t+"";var n=r[0],i=r[1],a=i-(Z_=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+Dd(t,Math.max(0,e+a-1))[0]}var Z_,eD=N(()=>{"use strict";Lv();o(J_,"default")});function E5(t,e){var r=Dd(t,e);if(!r)return t+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var iY=N(()=>{"use strict";Lv();o(E5,"default")});var tD,aY=N(()=>{"use strict";Lv();eD();iY();tD={"%":o((t,e)=>(t*100).toFixed(e),"%"),b:o(t=>Math.round(t).toString(2),"b"),c:o(t=>t+"","c"),d:Y_,e:o((t,e)=>t.toExponential(e),"e"),f:o((t,e)=>t.toFixed(e),"f"),g:o((t,e)=>t.toPrecision(e),"g"),o:o(t=>Math.round(t).toString(8),"o"),p:o((t,e)=>E5(t*100,e),"p"),r:E5,s:J_,X:o(t=>Math.round(t).toString(16).toUpperCase(),"X"),x:o(t=>Math.round(t).toString(16),"x")}});function S5(t){return t}var sY=N(()=>{"use strict";o(S5,"default")});function rD(t){var e=t.grouping===void 0||t.thousands===void 0?S5:X_(oY.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",a=t.numerals===void 0?S5:j_(oY.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",l=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function h(d){d=Nh(d);var p=d.fill,m=d.align,g=d.sign,y=d.symbol,v=d.zero,x=d.width,b=d.comma,T=d.precision,S=d.trim,w=d.type;w==="n"?(b=!0,w="g"):tD[w]||(T===void 0&&(T=12),S=!0,w="g"),(v||p==="0"&&m==="=")&&(v=!0,p="0",m="=");var k=y==="$"?r:y==="#"&&/[boxX]/.test(w)?"0"+w.toLowerCase():"",A=y==="$"?n:/[%p]/.test(w)?s:"",C=tD[w],R=/[defgprs%]/.test(w);T=T===void 0?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,T)):Math.max(0,Math.min(20,T));function I(L){var E=k,D=A,_,O,M;if(w==="c")D=C(L)+D,L="";else{L=+L;var P=L<0||1/L<0;if(L=isNaN(L)?u:C(Math.abs(L),T),S&&(L=Q_(L)),P&&+L==0&&g!=="+"&&(P=!1),E=(P?g==="("?g:l:g==="-"||g==="("?"":g)+E,D=(w==="s"?lY[8+Z_/3]:"")+D+(P&&g==="("?")":""),R){for(_=-1,O=L.length;++_M||M>57){D=(M===46?i+L.slice(_+1):L.slice(_))+D,L=L.slice(0,_);break}}}b&&!v&&(L=e(L,1/0));var B=E.length+L.length+D.length,F=B>1)+E+L+D+F.slice(B);break;default:L=F+E+L+D;break}return a(L)}return o(I,"format"),I.toString=function(){return d+""},I}o(h,"newFormat");function f(d,p){var m=h((d=Nh(d),d.type="f",d)),g=Math.max(-8,Math.min(8,Math.floor(bl(p)/3)))*3,y=Math.pow(10,-g),v=lY[8+g/3];return function(x){return m(y*x)+v}}return o(f,"formatPrefix"),{format:h,formatPrefix:f}}var oY,lY,cY=N(()=>{"use strict";Rv();tY();rY();K_();nY();aY();eD();sY();oY=Array.prototype.map,lY=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];o(rD,"default")});function nD(t){return C5=rD(t),cc=C5.format,A5=C5.formatPrefix,C5}var C5,cc,A5,uY=N(()=>{"use strict";cY();nD({thousands:",",grouping:[3],currency:["$",""]});o(nD,"defaultLocale")});function _5(t){return Math.max(0,-bl(Math.abs(t)))}var hY=N(()=>{"use strict";Rv();o(_5,"default")});function D5(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(bl(e)/3)))*3-bl(Math.abs(t)))}var fY=N(()=>{"use strict";Rv();o(D5,"default")});function L5(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,bl(e)-bl(t))+1}var dY=N(()=>{"use strict";Rv();o(L5,"default")});var iD=N(()=>{"use strict";uY();K_();hY();fY();dY()});var pY=N(()=>{"use strict"});function jSe(t){var e=0,r=t.children,n=r&&r.length;if(!n)e=1;else for(;--n>=0;)e+=r[n].value;t.value=e}function aD(){return this.eachAfter(jSe)}var mY=N(()=>{"use strict";o(jSe,"count");o(aD,"default")});function sD(t,e){let r=-1;for(let n of this)t.call(e,n,++r,this);return this}var gY=N(()=>{"use strict";o(sD,"default")});function oD(t,e){for(var r=this,n=[r],i,a,s=-1;r=n.pop();)if(t.call(e,r,++s,this),i=r.children)for(a=i.length-1;a>=0;--a)n.push(i[a]);return this}var yY=N(()=>{"use strict";o(oD,"default")});function lD(t,e){for(var r=this,n=[r],i=[],a,s,l,u=-1;r=n.pop();)if(i.push(r),a=r.children)for(s=0,l=a.length;s{"use strict";o(lD,"default")});function cD(t,e){let r=-1;for(let n of this)if(t.call(e,n,++r,this))return n}var xY=N(()=>{"use strict";o(cD,"default")});function uD(t){return this.eachAfter(function(e){for(var r=+t(e.data)||0,n=e.children,i=n&&n.length;--i>=0;)r+=n[i].value;e.value=r})}var bY=N(()=>{"use strict";o(uD,"default")});function hD(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}var TY=N(()=>{"use strict";o(hD,"default")});function fD(t){for(var e=this,r=KSe(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n}function KSe(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;for(t=r.pop(),e=n.pop();t===e;)i=t,t=r.pop(),e=n.pop();return i}var wY=N(()=>{"use strict";o(fD,"default");o(KSe,"leastCommonAncestor")});function dD(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}var kY=N(()=>{"use strict";o(dD,"default")});function pD(){return Array.from(this)}var EY=N(()=>{"use strict";o(pD,"default")});function mD(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}var SY=N(()=>{"use strict";o(mD,"default")});function gD(){var t=this,e=[];return t.each(function(r){r!==t&&e.push({source:r.parent,target:r})}),e}var CY=N(()=>{"use strict";o(gD,"default")});function*yD(){var t=this,e,r=[t],n,i,a;do for(e=r.reverse(),r=[];t=e.pop();)if(yield t,n=t.children)for(i=0,a=n.length;i{"use strict";o(yD,"default")});function U0(t,e){t instanceof Map?(t=[void 0,t],e===void 0&&(e=JSe)):e===void 0&&(e=ZSe);for(var r=new Nv(t),n,i=[r],a,s,l,u;n=i.pop();)if((s=e(n.data))&&(u=(s=Array.from(s)).length))for(n.children=s,l=u-1;l>=0;--l)i.push(a=s[l]=new Nv(s[l])),a.parent=n,a.depth=n.depth+1;return r.eachBefore(t6e)}function QSe(){return U0(this).eachBefore(e6e)}function ZSe(t){return t.children}function JSe(t){return Array.isArray(t)?t[1]:null}function e6e(t){t.data.value!==void 0&&(t.value=t.data.value),t.data=t.data.data}function t6e(t){var e=0;do t.height=e;while((t=t.parent)&&t.height<++e)}function Nv(t){this.data=t,this.depth=this.height=0,this.parent=null}var _Y=N(()=>{"use strict";mY();gY();yY();vY();xY();bY();TY();wY();kY();EY();SY();CY();AY();o(U0,"hierarchy");o(QSe,"node_copy");o(ZSe,"objectChildren");o(JSe,"mapChildren");o(e6e,"copyData");o(t6e,"computeHeight");o(Nv,"Node");Nv.prototype=U0.prototype={constructor:Nv,count:aD,each:sD,eachAfter:lD,eachBefore:oD,find:cD,sum:uD,sort:hD,path:fD,ancestors:dD,descendants:pD,leaves:mD,links:gD,copy:QSe,[Symbol.iterator]:yD}});function DY(t){if(typeof t!="function")throw new Error;return t}var LY=N(()=>{"use strict";o(DY,"required")});function H0(){return 0}function Ld(t){return function(){return t}}var RY=N(()=>{"use strict";o(H0,"constantZero");o(Ld,"default")});function vD(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}var NY=N(()=>{"use strict";o(vD,"default")});function xD(t,e,r,n,i){for(var a=t.children,s,l=-1,u=a.length,h=t.value&&(n-e)/t.value;++l{"use strict";o(xD,"default")});function bD(t,e,r,n,i){for(var a=t.children,s,l=-1,u=a.length,h=t.value&&(i-r)/t.value;++l{"use strict";o(bD,"default")});function n6e(t,e,r,n,i,a){for(var s=[],l=e.children,u,h,f=0,d=0,p=l.length,m,g,y=e.value,v,x,b,T,S,w,k;fb&&(b=h),k=v*v*w,T=Math.max(b/k,k/x),T>S){v-=h;break}S=T}s.push(u={value:v,dice:m{"use strict";MY();IY();r6e=(1+Math.sqrt(5))/2;o(n6e,"squarifyRatio");OY=o((function t(e){function r(n,i,a,s,l){n6e(e,n,i,a,s,l)}return o(r,"squarify"),r.ratio=function(n){return t((n=+n)>1?n:1)},r}),"custom")(r6e)});function R5(){var t=OY,e=!1,r=1,n=1,i=[0],a=H0,s=H0,l=H0,u=H0,h=H0;function f(p){return p.x0=p.y0=0,p.x1=r,p.y1=n,p.eachBefore(d),i=[0],e&&p.eachBefore(vD),p}o(f,"treemap");function d(p){var m=i[p.depth],g=p.x0+m,y=p.y0+m,v=p.x1-m,x=p.y1-m;v{"use strict";NY();PY();LY();RY();o(R5,"default")});var FY=N(()=>{"use strict";_Y();BY()});var $Y=N(()=>{"use strict"});var zY=N(()=>{"use strict"});function Mh(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}var Mv=N(()=>{"use strict";o(Mh,"initRange")});function no(){var t=new D0,e=[],r=[],n=TD;function i(a){let s=t.get(a);if(s===void 0){if(n!==TD)return n;t.set(a,s=e.push(a)-1)}return r[s%r.length]}return o(i,"scale"),i.domain=function(a){if(!arguments.length)return e.slice();e=[],t=new D0;for(let s of a)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return no(e,r).unknown(n)},Mh.apply(i,arguments),i}var TD,wD=N(()=>{"use strict";Ch();Mv();TD=Symbol("implicit");o(no,"ordinal")});function q0(){var t=no().unknown(void 0),e=t.domain,r=t.range,n=0,i=1,a,s,l=!1,u=0,h=0,f=.5;delete t.unknown;function d(){var p=e().length,m=i{"use strict";Ch();Mv();wD();o(q0,"band")});function kD(t){return function(){return t}}var VY=N(()=>{"use strict";o(kD,"constants")});function ED(t){return+t}var UY=N(()=>{"use strict";o(ED,"number")});function W0(t){return t}function SD(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:kD(isNaN(e)?NaN:.5)}function i6e(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function a6e(t,e,r){var n=t[0],i=t[1],a=e[0],s=e[1];return i2?s6e:a6e,u=h=null,d}o(f,"rescale");function d(p){return p==null||isNaN(p=+p)?a:(u||(u=l(t.map(n),e,r)))(n(s(p)))}return o(d,"scale"),d.invert=function(p){return s(i((h||(h=l(e,t.map(n),Wi)))(p)))},d.domain=function(p){return arguments.length?(t=Array.from(p,ED),f()):t.slice()},d.range=function(p){return arguments.length?(e=Array.from(p),f()):e.slice()},d.rangeRound=function(p){return e=Array.from(p),r=l5,f()},d.clamp=function(p){return arguments.length?(s=p?!0:W0,f()):s!==W0},d.interpolate=function(p){return arguments.length?(r=p,f()):r},d.unknown=function(p){return arguments.length?(a=p,d):a},function(p,m){return n=p,i=m,f()}}function Iv(){return o6e()(W0,W0)}var HY,CD=N(()=>{"use strict";Ch();z0();VY();UY();HY=[0,1];o(W0,"identity");o(SD,"normalize");o(i6e,"clamper");o(a6e,"bimap");o(s6e,"polymap");o(N5,"copy");o(o6e,"transformer");o(Iv,"continuous")});function AD(t,e,r,n){var i=L0(t,e,r),a;switch(n=Nh(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(a=D5(i,s))&&(n.precision=a),A5(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=L5(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=_5(i))&&(n.precision=a-(n.type==="%")*2);break}}return cc(n)}var qY=N(()=>{"use strict";Ch();iD();o(AD,"tickFormat")});function l6e(t){var e=t.domain;return t.ticks=function(r){var n=e();return q3(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return AD(i[0],i[i.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),i=0,a=n.length-1,s=n[i],l=n[a],u,h,f=10;for(l0;){if(h=lv(s,l,r),h===u)return n[i]=s,n[a]=l,e(n);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return t},t}function Tl(){var t=Iv();return t.copy=function(){return N5(t,Tl())},Mh.apply(t,arguments),l6e(t)}var WY=N(()=>{"use strict";Ch();CD();Mv();qY();o(l6e,"linearish");o(Tl,"linear")});function _D(t,e){t=t.slice();var r=0,n=t.length-1,i=t[r],a=t[n],s;return a{"use strict";o(_D,"nice")});function En(t,e,r,n){function i(a){return t(a=arguments.length===0?new Date:new Date(+a)),a}return o(i,"interval"),i.floor=a=>(t(a=new Date(+a)),a),i.ceil=a=>(t(a=new Date(a-1)),e(a,1),t(a),a),i.round=a=>{let s=i(a),l=i.ceil(a);return a-s(e(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,l)=>{let u=[];if(a=i.ceil(a),l=l==null?1:Math.floor(l),!(a0))return u;let h;do u.push(h=new Date(+a)),e(a,l),t(a);while(hEn(s=>{if(s>=s)for(;t(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;e(s,-1),!a(s););else for(;--l>=0;)for(;e(s,1),!a(s););}),r&&(i.count=(a,s)=>(DD.setTime(+a),LD.setTime(+s),t(DD),t(LD),Math.floor(r(DD,LD))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}var DD,LD,wu=N(()=>{"use strict";DD=new Date,LD=new Date;o(En,"timeInterval")});var uc,XY,RD=N(()=>{"use strict";wu();uc=En(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);uc.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?En(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):uc);XY=uc.range});var io,jY,ND=N(()=>{"use strict";wu();io=En(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),jY=io.range});var ku,c6e,M5,u6e,MD=N(()=>{"use strict";wu();ku=En(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),c6e=ku.range,M5=En(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),u6e=M5.range});var Eu,h6e,I5,f6e,ID=N(()=>{"use strict";wu();Eu=En(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),h6e=Eu.range,I5=En(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),f6e=I5.range});var Ro,d6e,Pv,p6e,O5,m6e,OD=N(()=>{"use strict";wu();Ro=En(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),d6e=Ro.range,Pv=En(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),p6e=Pv.range,O5=En(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),m6e=O5.range});function Md(t){return En(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}function Id(t){return En(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/6048e5)}var wl,Ih,P5,B5,fc,F5,$5,QY,g6e,y6e,v6e,x6e,b6e,T6e,Od,Y0,ZY,JY,Oh,eX,tX,rX,w6e,k6e,E6e,S6e,C6e,A6e,PD=N(()=>{"use strict";wu();o(Md,"timeWeekday");wl=Md(0),Ih=Md(1),P5=Md(2),B5=Md(3),fc=Md(4),F5=Md(5),$5=Md(6),QY=wl.range,g6e=Ih.range,y6e=P5.range,v6e=B5.range,x6e=fc.range,b6e=F5.range,T6e=$5.range;o(Id,"utcWeekday");Od=Id(0),Y0=Id(1),ZY=Id(2),JY=Id(3),Oh=Id(4),eX=Id(5),tX=Id(6),rX=Od.range,w6e=Y0.range,k6e=ZY.range,E6e=JY.range,S6e=Oh.range,C6e=eX.range,A6e=tX.range});var Su,_6e,z5,D6e,BD=N(()=>{"use strict";wu();Su=En(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),_6e=Su.range,z5=En(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),D6e=z5.range});var ao,L6e,kl,R6e,FD=N(()=>{"use strict";wu();ao=En(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());ao.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:En(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});L6e=ao.range,kl=En(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());kl.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:En(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});R6e=kl.range});function iX(t,e,r,n,i,a){let s=[[io,1,1e3],[io,5,5*1e3],[io,15,15*1e3],[io,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function l(h,f,d){let p=fv).right(s,p);if(m===s.length)return t.every(L0(h/31536e6,f/31536e6,d));if(m===0)return uc.every(Math.max(L0(h,f,d),1));let[g,y]=s[p/s[m-1][2]{"use strict";Ch();RD();ND();MD();ID();OD();PD();BD();FD();o(iX,"ticker");[M6e,I6e]=iX(kl,z5,Od,O5,I5,M5),[$D,zD]=iX(ao,Su,wl,Ro,Eu,ku)});var G5=N(()=>{"use strict";RD();ND();MD();ID();OD();PD();BD();FD();aX()});function GD(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function VD(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Bv(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function UD(t){var e=t.dateTime,r=t.date,n=t.time,i=t.periods,a=t.days,s=t.shortDays,l=t.months,u=t.shortMonths,h=Fv(i),f=$v(i),d=Fv(a),p=$v(a),m=Fv(s),g=$v(s),y=Fv(l),v=$v(l),x=Fv(u),b=$v(u),T={a:P,A:B,b:F,B:G,c:null,d:hX,e:hX,f:nCe,g:dCe,G:mCe,H:eCe,I:tCe,j:rCe,L:gX,m:iCe,M:aCe,p:$,q:U,Q:pX,s:mX,S:sCe,u:oCe,U:lCe,V:cCe,w:uCe,W:hCe,x:null,X:null,y:fCe,Y:pCe,Z:gCe,"%":dX},S={a:j,A:te,b:Y,B:oe,c:null,d:fX,e:fX,f:bCe,g:LCe,G:NCe,H:yCe,I:vCe,j:xCe,L:vX,m:TCe,M:wCe,p:J,q:ue,Q:pX,s:mX,S:kCe,u:ECe,U:SCe,V:CCe,w:ACe,W:_Ce,x:null,X:null,y:DCe,Y:RCe,Z:MCe,"%":dX},w={a:I,A:L,b:E,B:D,c:_,d:cX,e:cX,f:K6e,g:lX,G:oX,H:uX,I:uX,j:W6e,L:j6e,m:q6e,M:Y6e,p:R,q:H6e,Q:Z6e,s:J6e,S:X6e,u:$6e,U:z6e,V:G6e,w:F6e,W:V6e,x:O,X:M,y:lX,Y:oX,Z:U6e,"%":Q6e};T.x=k(r,T),T.X=k(n,T),T.c=k(e,T),S.x=k(r,S),S.X=k(n,S),S.c=k(e,S);function k(re,ee){return function(Z){var K=[],ae=-1,Q=0,de=re.length,ne,Te,q;for(Z instanceof Date||(Z=new Date(+Z));++ae53)return null;"w"in K||(K.w=1),"Z"in K?(Q=VD(Bv(K.y,0,1)),de=Q.getUTCDay(),Q=de>4||de===0?Y0.ceil(Q):Y0(Q),Q=Pv.offset(Q,(K.V-1)*7),K.y=Q.getUTCFullYear(),K.m=Q.getUTCMonth(),K.d=Q.getUTCDate()+(K.w+6)%7):(Q=GD(Bv(K.y,0,1)),de=Q.getDay(),Q=de>4||de===0?Ih.ceil(Q):Ih(Q),Q=Ro.offset(Q,(K.V-1)*7),K.y=Q.getFullYear(),K.m=Q.getMonth(),K.d=Q.getDate()+(K.w+6)%7)}else("W"in K||"U"in K)&&("w"in K||(K.w="u"in K?K.u%7:"W"in K?1:0),de="Z"in K?VD(Bv(K.y,0,1)).getUTCDay():GD(Bv(K.y,0,1)).getDay(),K.m=0,K.d="W"in K?(K.w+6)%7+K.W*7-(de+5)%7:K.w+K.U*7-(de+6)%7);return"Z"in K?(K.H+=K.Z/100|0,K.M+=K.Z%100,VD(K)):GD(K)}}o(A,"newParse");function C(re,ee,Z,K){for(var ae=0,Q=ee.length,de=Z.length,ne,Te;ae=de)return-1;if(ne=ee.charCodeAt(ae++),ne===37){if(ne=ee.charAt(ae++),Te=w[ne in sX?ee.charAt(ae++):ne],!Te||(K=Te(re,Z,K))<0)return-1}else if(ne!=Z.charCodeAt(K++))return-1}return K}o(C,"parseSpecifier");function R(re,ee,Z){var K=h.exec(ee.slice(Z));return K?(re.p=f.get(K[0].toLowerCase()),Z+K[0].length):-1}o(R,"parsePeriod");function I(re,ee,Z){var K=m.exec(ee.slice(Z));return K?(re.w=g.get(K[0].toLowerCase()),Z+K[0].length):-1}o(I,"parseShortWeekday");function L(re,ee,Z){var K=d.exec(ee.slice(Z));return K?(re.w=p.get(K[0].toLowerCase()),Z+K[0].length):-1}o(L,"parseWeekday");function E(re,ee,Z){var K=x.exec(ee.slice(Z));return K?(re.m=b.get(K[0].toLowerCase()),Z+K[0].length):-1}o(E,"parseShortMonth");function D(re,ee,Z){var K=y.exec(ee.slice(Z));return K?(re.m=v.get(K[0].toLowerCase()),Z+K[0].length):-1}o(D,"parseMonth");function _(re,ee,Z){return C(re,e,ee,Z)}o(_,"parseLocaleDateTime");function O(re,ee,Z){return C(re,r,ee,Z)}o(O,"parseLocaleDate");function M(re,ee,Z){return C(re,n,ee,Z)}o(M,"parseLocaleTime");function P(re){return s[re.getDay()]}o(P,"formatShortWeekday");function B(re){return a[re.getDay()]}o(B,"formatWeekday");function F(re){return u[re.getMonth()]}o(F,"formatShortMonth");function G(re){return l[re.getMonth()]}o(G,"formatMonth");function $(re){return i[+(re.getHours()>=12)]}o($,"formatPeriod");function U(re){return 1+~~(re.getMonth()/3)}o(U,"formatQuarter");function j(re){return s[re.getUTCDay()]}o(j,"formatUTCShortWeekday");function te(re){return a[re.getUTCDay()]}o(te,"formatUTCWeekday");function Y(re){return u[re.getUTCMonth()]}o(Y,"formatUTCShortMonth");function oe(re){return l[re.getUTCMonth()]}o(oe,"formatUTCMonth");function J(re){return i[+(re.getUTCHours()>=12)]}o(J,"formatUTCPeriod");function ue(re){return 1+~~(re.getUTCMonth()/3)}return o(ue,"formatUTCQuarter"),{format:o(function(re){var ee=k(re+="",T);return ee.toString=function(){return re},ee},"format"),parse:o(function(re){var ee=A(re+="",!1);return ee.toString=function(){return re},ee},"parse"),utcFormat:o(function(re){var ee=k(re+="",S);return ee.toString=function(){return re},ee},"utcFormat"),utcParse:o(function(re){var ee=A(re+="",!0);return ee.toString=function(){return re},ee},"utcParse")}}function Kr(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a[e.toLowerCase(),r]))}function F6e(t,e,r){var n=Yi.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function $6e(t,e,r){var n=Yi.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function z6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function G6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function V6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function oX(t,e,r){var n=Yi.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function lX(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function U6e(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function H6e(t,e,r){var n=Yi.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function q6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function cX(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function W6e(t,e,r){var n=Yi.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function uX(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function Y6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function X6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function j6e(t,e,r){var n=Yi.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function K6e(t,e,r){var n=Yi.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Q6e(t,e,r){var n=O6e.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function Z6e(t,e,r){var n=Yi.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function J6e(t,e,r){var n=Yi.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function hX(t,e){return Kr(t.getDate(),e,2)}function eCe(t,e){return Kr(t.getHours(),e,2)}function tCe(t,e){return Kr(t.getHours()%12||12,e,2)}function rCe(t,e){return Kr(1+Ro.count(ao(t),t),e,3)}function gX(t,e){return Kr(t.getMilliseconds(),e,3)}function nCe(t,e){return gX(t,e)+"000"}function iCe(t,e){return Kr(t.getMonth()+1,e,2)}function aCe(t,e){return Kr(t.getMinutes(),e,2)}function sCe(t,e){return Kr(t.getSeconds(),e,2)}function oCe(t){var e=t.getDay();return e===0?7:e}function lCe(t,e){return Kr(wl.count(ao(t)-1,t),e,2)}function yX(t){var e=t.getDay();return e>=4||e===0?fc(t):fc.ceil(t)}function cCe(t,e){return t=yX(t),Kr(fc.count(ao(t),t)+(ao(t).getDay()===4),e,2)}function uCe(t){return t.getDay()}function hCe(t,e){return Kr(Ih.count(ao(t)-1,t),e,2)}function fCe(t,e){return Kr(t.getFullYear()%100,e,2)}function dCe(t,e){return t=yX(t),Kr(t.getFullYear()%100,e,2)}function pCe(t,e){return Kr(t.getFullYear()%1e4,e,4)}function mCe(t,e){var r=t.getDay();return t=r>=4||r===0?fc(t):fc.ceil(t),Kr(t.getFullYear()%1e4,e,4)}function gCe(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Kr(e/60|0,"0",2)+Kr(e%60,"0",2)}function fX(t,e){return Kr(t.getUTCDate(),e,2)}function yCe(t,e){return Kr(t.getUTCHours(),e,2)}function vCe(t,e){return Kr(t.getUTCHours()%12||12,e,2)}function xCe(t,e){return Kr(1+Pv.count(kl(t),t),e,3)}function vX(t,e){return Kr(t.getUTCMilliseconds(),e,3)}function bCe(t,e){return vX(t,e)+"000"}function TCe(t,e){return Kr(t.getUTCMonth()+1,e,2)}function wCe(t,e){return Kr(t.getUTCMinutes(),e,2)}function kCe(t,e){return Kr(t.getUTCSeconds(),e,2)}function ECe(t){var e=t.getUTCDay();return e===0?7:e}function SCe(t,e){return Kr(Od.count(kl(t)-1,t),e,2)}function xX(t){var e=t.getUTCDay();return e>=4||e===0?Oh(t):Oh.ceil(t)}function CCe(t,e){return t=xX(t),Kr(Oh.count(kl(t),t)+(kl(t).getUTCDay()===4),e,2)}function ACe(t){return t.getUTCDay()}function _Ce(t,e){return Kr(Y0.count(kl(t)-1,t),e,2)}function DCe(t,e){return Kr(t.getUTCFullYear()%100,e,2)}function LCe(t,e){return t=xX(t),Kr(t.getUTCFullYear()%100,e,2)}function RCe(t,e){return Kr(t.getUTCFullYear()%1e4,e,4)}function NCe(t,e){var r=t.getUTCDay();return t=r>=4||r===0?Oh(t):Oh.ceil(t),Kr(t.getUTCFullYear()%1e4,e,4)}function MCe(){return"+0000"}function dX(){return"%"}function pX(t){return+t}function mX(t){return Math.floor(+t/1e3)}var sX,Yi,O6e,P6e,bX=N(()=>{"use strict";G5();o(GD,"localDate");o(VD,"utcDate");o(Bv,"newDate");o(UD,"formatLocale");sX={"-":"",_:" ",0:"0"},Yi=/^\s*\d+/,O6e=/^%/,P6e=/[\\^$*+?|[\]().{}]/g;o(Kr,"pad");o(B6e,"requote");o(Fv,"formatRe");o($v,"formatLookup");o(F6e,"parseWeekdayNumberSunday");o($6e,"parseWeekdayNumberMonday");o(z6e,"parseWeekNumberSunday");o(G6e,"parseWeekNumberISO");o(V6e,"parseWeekNumberMonday");o(oX,"parseFullYear");o(lX,"parseYear");o(U6e,"parseZone");o(H6e,"parseQuarter");o(q6e,"parseMonthNumber");o(cX,"parseDayOfMonth");o(W6e,"parseDayOfYear");o(uX,"parseHour24");o(Y6e,"parseMinutes");o(X6e,"parseSeconds");o(j6e,"parseMilliseconds");o(K6e,"parseMicroseconds");o(Q6e,"parseLiteralPercent");o(Z6e,"parseUnixTimestamp");o(J6e,"parseUnixTimestampSeconds");o(hX,"formatDayOfMonth");o(eCe,"formatHour24");o(tCe,"formatHour12");o(rCe,"formatDayOfYear");o(gX,"formatMilliseconds");o(nCe,"formatMicroseconds");o(iCe,"formatMonthNumber");o(aCe,"formatMinutes");o(sCe,"formatSeconds");o(oCe,"formatWeekdayNumberMonday");o(lCe,"formatWeekNumberSunday");o(yX,"dISO");o(cCe,"formatWeekNumberISO");o(uCe,"formatWeekdayNumberSunday");o(hCe,"formatWeekNumberMonday");o(fCe,"formatYear");o(dCe,"formatYearISO");o(pCe,"formatFullYear");o(mCe,"formatFullYearISO");o(gCe,"formatZone");o(fX,"formatUTCDayOfMonth");o(yCe,"formatUTCHour24");o(vCe,"formatUTCHour12");o(xCe,"formatUTCDayOfYear");o(vX,"formatUTCMilliseconds");o(bCe,"formatUTCMicroseconds");o(TCe,"formatUTCMonthNumber");o(wCe,"formatUTCMinutes");o(kCe,"formatUTCSeconds");o(ECe,"formatUTCWeekdayNumberMonday");o(SCe,"formatUTCWeekNumberSunday");o(xX,"UTCdISO");o(CCe,"formatUTCWeekNumberISO");o(ACe,"formatUTCWeekdayNumberSunday");o(_Ce,"formatUTCWeekNumberMonday");o(DCe,"formatUTCYear");o(LCe,"formatUTCYearISO");o(RCe,"formatUTCFullYear");o(NCe,"formatUTCFullYearISO");o(MCe,"formatUTCZone");o(dX,"formatLiteralPercent");o(pX,"formatUnixTimestamp");o(mX,"formatUnixTimestampSeconds")});function HD(t){return X0=UD(t),Pd=X0.format,TX=X0.parse,wX=X0.utcFormat,kX=X0.utcParse,X0}var X0,Pd,TX,wX,kX,EX=N(()=>{"use strict";bX();HD({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});o(HD,"defaultLocale")});var qD=N(()=>{"use strict";EX()});function ICe(t){return new Date(t)}function OCe(t){return t instanceof Date?+t:+new Date(+t)}function SX(t,e,r,n,i,a,s,l,u,h){var f=Iv(),d=f.invert,p=f.domain,m=h(".%L"),g=h(":%S"),y=h("%I:%M"),v=h("%I %p"),x=h("%a %d"),b=h("%b %d"),T=h("%B"),S=h("%Y");function w(k){return(u(k){"use strict";G5();qD();CD();Mv();YY();o(ICe,"date");o(OCe,"number");o(SX,"calendar");o(V5,"time")});var AX=N(()=>{"use strict";GY();WY();wD();CX()});function WD(t){for(var e=t.length/6|0,r=new Array(e),n=0;n{"use strict";o(WD,"default")});var YD,DX=N(()=>{"use strict";_X();YD=WD("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var LX=N(()=>{"use strict";DX()});function zn(t){return o(function(){return t},"constant")}var U5=N(()=>{"use strict";o(zn,"default")});function NX(t){return t>1?0:t<-1?j0:Math.acos(t)}function jD(t){return t>=1?zv:t<=-1?-zv:Math.asin(t)}var XD,ca,Ph,RX,H5,El,Bd,Xi,j0,zv,K0,q5=N(()=>{"use strict";XD=Math.abs,ca=Math.atan2,Ph=Math.cos,RX=Math.max,H5=Math.min,El=Math.sin,Bd=Math.sqrt,Xi=1e-12,j0=Math.PI,zv=j0/2,K0=2*j0;o(NX,"acos");o(jD,"asin")});function W5(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);e=n}return t},()=>new _d(e)}var KD=N(()=>{"use strict";W_();o(W5,"withPath")});function PCe(t){return t.innerRadius}function BCe(t){return t.outerRadius}function FCe(t){return t.startAngle}function $Ce(t){return t.endAngle}function zCe(t){return t&&t.padAngle}function GCe(t,e,r,n,i,a,s,l){var u=r-t,h=n-e,f=s-i,d=l-a,p=d*u-f*h;if(!(p*p_*_+O*O&&(C=I,R=L),{cx:C,cy:R,x01:-f,y01:-d,x11:C*(i/w-1),y11:R*(i/w-1)}}function Sl(){var t=PCe,e=BCe,r=zn(0),n=null,i=FCe,a=$Ce,s=zCe,l=null,u=W5(h);function h(){var f,d,p=+t.apply(this,arguments),m=+e.apply(this,arguments),g=i.apply(this,arguments)-zv,y=a.apply(this,arguments)-zv,v=XD(y-g),x=y>g;if(l||(l=f=u()),mXi))l.moveTo(0,0);else if(v>K0-Xi)l.moveTo(m*Ph(g),m*El(g)),l.arc(0,0,m,g,y,!x),p>Xi&&(l.moveTo(p*Ph(y),p*El(y)),l.arc(0,0,p,y,g,x));else{var b=g,T=y,S=g,w=y,k=v,A=v,C=s.apply(this,arguments)/2,R=C>Xi&&(n?+n.apply(this,arguments):Bd(p*p+m*m)),I=H5(XD(m-p)/2,+r.apply(this,arguments)),L=I,E=I,D,_;if(R>Xi){var O=jD(R/p*El(C)),M=jD(R/m*El(C));(k-=O*2)>Xi?(O*=x?1:-1,S+=O,w-=O):(k=0,S=w=(g+y)/2),(A-=M*2)>Xi?(M*=x?1:-1,b+=M,T-=M):(A=0,b=T=(g+y)/2)}var P=m*Ph(b),B=m*El(b),F=p*Ph(w),G=p*El(w);if(I>Xi){var $=m*Ph(T),U=m*El(T),j=p*Ph(S),te=p*El(S),Y;if(vXi?E>Xi?(D=Y5(j,te,P,B,m,E,x),_=Y5($,U,F,G,m,E,x),l.moveTo(D.cx+D.x01,D.cy+D.y01),EXi)||!(k>Xi)?l.lineTo(F,G):L>Xi?(D=Y5(F,G,$,U,p,-L,x),_=Y5(P,B,j,te,p,-L,x),l.lineTo(D.cx+D.x01,D.cy+D.y01),L{"use strict";U5();q5();KD();o(PCe,"arcInnerRadius");o(BCe,"arcOuterRadius");o(FCe,"arcStartAngle");o($Ce,"arcEndAngle");o(zCe,"arcPadAngle");o(GCe,"intersect");o(Y5,"cornerTangents");o(Sl,"default")});function Gv(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}var Zxt,QD=N(()=>{"use strict";Zxt=Array.prototype.slice;o(Gv,"default")});function IX(t){this._context=t}function Cu(t){return new IX(t)}var ZD=N(()=>{"use strict";o(IX,"Linear");IX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}},"point")};o(Cu,"default")});function OX(t){return t[0]}function PX(t){return t[1]}var BX=N(()=>{"use strict";o(OX,"x");o(PX,"y")});function Cl(t,e){var r=zn(!0),n=null,i=Cu,a=null,s=W5(l);t=typeof t=="function"?t:t===void 0?OX:zn(t),e=typeof e=="function"?e:e===void 0?PX:zn(e);function l(u){var h,f=(u=Gv(u)).length,d,p=!1,m;for(n==null&&(a=i(m=s())),h=0;h<=f;++h)!(h{"use strict";QD();U5();ZD();KD();BX();o(Cl,"default")});function JD(t,e){return et?1:e>=t?0:NaN}var $X=N(()=>{"use strict";o(JD,"default")});function eL(t){return t}var zX=N(()=>{"use strict";o(eL,"default")});function X5(){var t=eL,e=JD,r=null,n=zn(0),i=zn(K0),a=zn(0);function s(l){var u,h=(l=Gv(l)).length,f,d,p=0,m=new Array(h),g=new Array(h),y=+n.apply(this,arguments),v=Math.min(K0,Math.max(-K0,i.apply(this,arguments)-y)),x,b=Math.min(Math.abs(v)/h,a.apply(this,arguments)),T=b*(v<0?-1:1),S;for(u=0;u0&&(p+=S);for(e!=null?m.sort(function(w,k){return e(g[w],g[k])}):r!=null&&m.sort(function(w,k){return r(l[w],l[k])}),u=0,d=p?(v-h*T)/p:0;u0?S*d:0)+T,g[f]={data:l[f],index:u,value:S,startAngle:y,endAngle:x,padAngle:b};return g}return o(s,"pie"),s.value=function(l){return arguments.length?(t=typeof l=="function"?l:zn(+l),s):t},s.sortValues=function(l){return arguments.length?(e=l,r=null,s):e},s.sort=function(l){return arguments.length?(r=l,e=null,s):r},s.startAngle=function(l){return arguments.length?(n=typeof l=="function"?l:zn(+l),s):n},s.endAngle=function(l){return arguments.length?(i=typeof l=="function"?l:zn(+l),s):i},s.padAngle=function(l){return arguments.length?(a=typeof l=="function"?l:zn(+l),s):a},s}var GX=N(()=>{"use strict";QD();U5();$X();zX();q5();o(X5,"default")});function Vv(t){return new j5(t,!0)}function Uv(t){return new j5(t,!1)}var j5,VX=N(()=>{"use strict";j5=class{static{o(this,"Bump")}constructor(e,r){this._context=e,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,r){switch(e=+e,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,r,e,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,e,this._y0,e,r);break}}this._x0=e,this._y0=r}};o(Vv,"bumpX");o(Uv,"bumpY")});function so(){}var Hv=N(()=>{"use strict";o(so,"default")});function Q0(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function qv(t){this._context=t}function No(t){return new qv(t)}var Wv=N(()=>{"use strict";o(Q0,"point");o(qv,"Basis");qv.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 3:Q0(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Q0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(No,"default")});function UX(t){this._context=t}function K5(t){return new UX(t)}var HX=N(()=>{"use strict";Hv();Wv();o(UX,"BasisClosed");UX.prototype={areaStart:so,areaEnd:so,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Q0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(K5,"default")});function qX(t){this._context=t}function Q5(t){return new qX(t)}var WX=N(()=>{"use strict";Wv();o(qX,"BasisOpen");qX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Q0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(Q5,"default")});function YX(t,e){this._basis=new qv(t),this._beta=e}var tL,XX=N(()=>{"use strict";Wv();o(YX,"Bundle");YX.prototype={lineStart:o(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:o(function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n=t[0],i=e[0],a=t[r]-n,s=e[r]-i,l=-1,u;++l<=r;)u=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(n+u*a),this._beta*e[l]+(1-this._beta)*(i+u*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:o(function(t,e){this._x.push(+t),this._y.push(+e)},"point")};tL=o((function t(e){function r(n){return e===1?new qv(n):new YX(n,e)}return o(r,"bundle"),r.beta=function(n){return t(+n)},r}),"custom")(.85)});function Z0(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function Z5(t,e){this._context=t,this._k=(1-e)/6}var Yv,Xv=N(()=>{"use strict";o(Z0,"point");o(Z5,"Cardinal");Z5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Z0(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Z0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};Yv=o((function t(e){function r(n){return new Z5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r}),"custom")(0)});function J5(t,e){this._context=t,this._k=(1-e)/6}var rL,nL=N(()=>{"use strict";Hv();Xv();o(J5,"CardinalClosed");J5.prototype={areaStart:so,areaEnd:so,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Z0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};rL=o((function t(e){function r(n){return new J5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r}),"custom")(0)});function eT(t,e){this._context=t,this._k=(1-e)/6}var iL,aL=N(()=>{"use strict";Xv();o(eT,"CardinalOpen");eT.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Z0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};iL=o((function t(e){function r(n){return new eT(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r}),"custom")(0)});function jv(t,e,r){var n=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Xi){var l=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*l-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,i=(i*l-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>Xi){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*h+t._x1*t._l23_2a-e*t._l12_2a)/f,s=(s*h+t._y1*t._l23_2a-r*t._l12_2a)/f}t._context.bezierCurveTo(n,i,a,s,t._x2,t._y2)}function jX(t,e){this._context=t,this._alpha=e}var Kv,tT=N(()=>{"use strict";q5();Xv();o(jv,"point");o(jX,"CatmullRom");jX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:jv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};Kv=o((function t(e){function r(n){return e?new jX(n,e):new Z5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r}),"custom")(.5)});function KX(t,e){this._context=t,this._alpha=e}var sL,QX=N(()=>{"use strict";nL();Hv();tT();o(KX,"CatmullRomClosed");KX.prototype={areaStart:so,areaEnd:so,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:jv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};sL=o((function t(e){function r(n){return e?new KX(n,e):new J5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r}),"custom")(.5)});function ZX(t,e){this._context=t,this._alpha=e}var oL,JX=N(()=>{"use strict";aL();tT();o(ZX,"CatmullRomOpen");ZX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:jv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};oL=o((function t(e){function r(n){return e?new ZX(n,e):new eT(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r}),"custom")(.5)});function ej(t){this._context=t}function rT(t){return new ej(t)}var tj=N(()=>{"use strict";Hv();o(ej,"LinearClosed");ej.prototype={areaStart:so,areaEnd:so,lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){this._point&&this._context.closePath()},"lineEnd"),point:o(function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))},"point")};o(rT,"default")});function rj(t){return t<0?-1:1}function nj(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),s=(r-t._y1)/(i||n<0&&-0),l=(a*i+s*n)/(n+i);return(rj(a)+rj(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(l))||0}function ij(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function lL(t,e,r){var n=t._x0,i=t._y0,a=t._x1,s=t._y1,l=(a-n)/3;t._context.bezierCurveTo(n+l,i+l*e,a-l,s-l*r,a,s)}function nT(t){this._context=t}function aj(t){this._context=new sj(t)}function sj(t){this._context=t}function Qv(t){return new nT(t)}function Zv(t){return new aj(t)}var oj=N(()=>{"use strict";o(rj,"sign");o(nj,"slope3");o(ij,"slope2");o(lL,"point");o(nT,"MonotoneX");nT.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:lL(this,this._t0,ij(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){var r=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,lL(this,ij(this,r=nj(this,t,e)),r);break;default:lL(this,this._t0,r=nj(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}},"point")};o(aj,"MonotoneY");(aj.prototype=Object.create(nT.prototype)).point=function(t,e){nT.prototype.point.call(this,e,t)};o(sj,"ReflectContext");sj.prototype={moveTo:o(function(t,e){this._context.moveTo(e,t)},"moveTo"),closePath:o(function(){this._context.closePath()},"closePath"),lineTo:o(function(t,e){this._context.lineTo(e,t)},"lineTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._context.bezierCurveTo(e,t,n,r,a,i)},"bezierCurveTo")};o(Qv,"monotoneX");o(Zv,"monotoneY")});function cj(t){this._context=t}function lj(t){var e,r=t.length-1,n,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e{"use strict";o(cj,"Natural");cj.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:o(function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),r===2)this._context.lineTo(t[1],e[1]);else for(var n=lj(t),i=lj(e),a=0,s=1;s{"use strict";o(iT,"Step");iT.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:o(function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}break}}this._x=t,this._y=e},"point")};o(em,"default");o(Jv,"stepBefore");o(e2,"stepAfter")});var fj=N(()=>{"use strict";MX();FX();GX();HX();WX();Wv();VX();XX();nL();aL();Xv();QX();JX();tT();tj();ZD();oj();uj();hj()});var dj=N(()=>{"use strict"});var pj=N(()=>{"use strict"});function Bh(t,e,r){this.k=t,this.x=e,this.y=r}function uL(t){for(;!t.__zoom;)if(!(t=t.parentNode))return cL;return t.__zoom}var cL,hL=N(()=>{"use strict";o(Bh,"Transform");Bh.prototype={constructor:Bh,scale:o(function(t){return t===1?this:new Bh(this.k*t,this.x,this.y)},"scale"),translate:o(function(t,e){return t===0&e===0?this:new Bh(this.k,this.x+this.k*t,this.y+this.k*e)},"translate"),apply:o(function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},"apply"),applyX:o(function(t){return t*this.k+this.x},"applyX"),applyY:o(function(t){return t*this.k+this.y},"applyY"),invert:o(function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},"invert"),invertX:o(function(t){return(t-this.x)/this.k},"invertX"),invertY:o(function(t){return(t-this.y)/this.k},"invertY"),rescaleX:o(function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},"rescaleX"),rescaleY:o(function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},"rescaleY"),toString:o(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")};cL=new Bh(1,0,0);uL.prototype=Bh.prototype;o(uL,"transform")});var mj=N(()=>{"use strict"});var gj=N(()=>{"use strict";w5();dj();pj();hL();mj()});var yj=N(()=>{"use strict";gj();hL()});var yr=N(()=>{"use strict";Ch();SH();HW();XW();B0();jW();KW();JA();gq();QW();G_();ZW();eY();iD();pY();FY();z0();W_();$Y();JW();zY();AX();LX();yl();fj();G5();qD();g5();w5();yj()});var vj=Da(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.BLANK_URL=ji.relativeFirstCharacters=ji.whitespaceEscapeCharsRegex=ji.urlSchemeRegex=ji.ctrlCharactersRegex=ji.htmlCtrlEntityRegex=ji.htmlEntitiesRegex=ji.invalidProtocolRegex=void 0;ji.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;ji.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;ji.htmlCtrlEntityRegex=/&(newline|tab);/gi;ji.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;ji.urlSchemeRegex=/^.+(:|:)/gim;ji.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;ji.relativeFirstCharacters=[".","/"];ji.BLANK_URL="about:blank"});var tm=Da(aT=>{"use strict";Object.defineProperty(aT,"__esModule",{value:!0});aT.sanitizeUrl=void 0;var Na=vj();function VCe(t){return Na.relativeFirstCharacters.indexOf(t[0])>-1}o(VCe,"isRelativeUrlWithoutProtocol");function UCe(t){var e=t.replace(Na.ctrlCharactersRegex,"");return e.replace(Na.htmlEntitiesRegex,function(r,n){return String.fromCharCode(n)})}o(UCe,"decodeHtmlCharacters");function HCe(t){return URL.canParse(t)}o(HCe,"isValidUrl");function xj(t){try{return decodeURIComponent(t)}catch{return t}}o(xj,"decodeURI");function qCe(t){if(!t)return Na.BLANK_URL;var e,r=xj(t.trim());do r=UCe(r).replace(Na.htmlCtrlEntityRegex,"").replace(Na.ctrlCharactersRegex,"").replace(Na.whitespaceEscapeCharsRegex,"").trim(),r=xj(r),e=r.match(Na.ctrlCharactersRegex)||r.match(Na.htmlEntitiesRegex)||r.match(Na.htmlCtrlEntityRegex)||r.match(Na.whitespaceEscapeCharsRegex);while(e&&e.length>0);var n=r;if(!n)return Na.BLANK_URL;if(VCe(n))return n;var i=n.trimStart(),a=i.match(Na.urlSchemeRegex);if(!a)return n;var s=a[0].toLowerCase().trim();if(Na.invalidProtocolRegex.test(s))return Na.BLANK_URL;var l=i.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return l;if(s==="http:"||s==="https:"){if(!HCe(l))return Na.BLANK_URL;var u=new URL(l);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return l}o(qCe,"sanitizeUrl");aT.sanitizeUrl=qCe});var fL,Fd,sT,bj,oT,lT,ua,t2,r2=N(()=>{"use strict";fL=ja(tm(),1);gr();Fd=o((t,e)=>{let r=t.append("rect");if(r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),e.name&&r.attr("name",e.name),e.rx&&r.attr("rx",e.rx),e.ry&&r.attr("ry",e.ry),e.attrs!==void 0)for(let n in e.attrs)r.attr(n,e.attrs[n]);return e.class&&r.attr("class",e.class),r},"drawRect"),sT=o((t,e)=>{let r={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};Fd(t,r).lower()},"drawBackgroundRect"),bj=o((t,e)=>{let r=e.text.replace(pd," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),oT=o((t,e,r,n)=>{let i=t.append("image");i.attr("x",e),i.attr("y",r);let a=(0,fL.sanitizeUrl)(n);i.attr("xlink:href",a)},"drawImage"),lT=o((t,e,r,n)=>{let i=t.append("use");i.attr("x",e),i.attr("y",r);let a=(0,fL.sanitizeUrl)(n);i.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),ua=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),t2=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")});var Tj,dL,wj,WCe,YCe,XCe,jCe,KCe,QCe,ZCe,JCe,e7e,t7e,r7e,n7e,Au,Al,kj=N(()=>{"use strict";gr();r2();Tj=ja(tm(),1),dL=o(function(t,e){return Fd(t,e)},"drawRect"),wj=o(function(t,e,r,n,i,a){let s=t.append("image");s.attr("width",e),s.attr("height",r),s.attr("x",n),s.attr("y",i);let l=a.startsWith("data:image/png;base64")?a:(0,Tj.sanitizeUrl)(a);s.attr("xlink:href",l)},"drawImage"),WCe=o((t,e,r)=>{let n=t.append("g"),i=0;for(let a of e){let s=a.textColor?a.textColor:"#444444",l=a.lineColor?a.lineColor:"#444444",u=a.offsetX?parseInt(a.offsetX):0,h=a.offsetY?parseInt(a.offsetY):0,f="";if(i===0){let p=n.append("line");p.attr("x1",a.startPoint.x),p.attr("y1",a.startPoint.y),p.attr("x2",a.endPoint.x),p.attr("y2",a.endPoint.y),p.attr("stroke-width","1"),p.attr("stroke",l),p.style("fill","none"),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)"),i=-1}else{let p=n.append("path");p.attr("fill","none").attr("stroke-width","1").attr("stroke",l).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",a.startPoint.x).replaceAll("starty",a.startPoint.y).replaceAll("controlx",a.startPoint.x+(a.endPoint.x-a.startPoint.x)/2-(a.endPoint.x-a.startPoint.x)/4).replaceAll("controly",a.startPoint.y+(a.endPoint.y-a.startPoint.y)/2).replaceAll("stopx",a.endPoint.x).replaceAll("stopy",a.endPoint.y)),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)")}let d=r.messageFont();Au(r)(a.label.text,n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+h,a.label.width,a.label.height,{fill:s},d),a.techn&&a.techn.text!==""&&(d=r.messageFont(),Au(r)("["+a.techn.text+"]",n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+r.messageFontSize+5+h,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:s,"font-style":"italic"},d))}},"drawRels"),YCe=o(function(t,e,r){let n=t.append("g"),i=e.bgColor?e.bgColor:"none",a=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let u={x:e.x,y:e.y,fill:i,stroke:a,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};dL(n,u);let h=r.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,Au(r)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},h),e.type&&e.type.text!==""&&(h=r.boundaryFont(),h.fontColor=s,Au(r)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},h)),e.descr&&e.descr.text!==""&&(h=r.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,Au(r)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},h))},"drawBoundary"),XCe=o(function(t,e,r){let n=e.bgColor?e.bgColor:r[e.typeC4Shape.text+"_bg_color"],i=e.borderColor?e.borderColor:r[e.typeC4Shape.text+"_border_color"],a=e.fontColor?e.fontColor:"#FFFFFF",s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let l=t.append("g");l.attr("class","person-man");let u=ua();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":u.x=e.x,u.y=e.y,u.fill=n,u.width=e.width,u.height=e.height,u.stroke=i,u.rx=2.5,u.ry=2.5,u.attrs={"stroke-width":.5},dL(l,u);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2));break}let h=n7e(r,e.typeC4Shape.text);switch(l.append("text").attr("fill",a).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":wj(l,48,48,e.x+e.width/2-24,e.y+e.image.Y,s);break}let f=r[e.typeC4Shape.text+"Font"]();return f.fontWeight="bold",f.fontSize=f.fontSize+2,f.fontColor=a,Au(r)(e.label.text,l,e.x,e.y+e.label.Y,e.width,e.height,{fill:a},f),f=r[e.typeC4Shape.text+"Font"](),f.fontColor=a,e.techn&&e.techn?.text!==""?Au(r)(e.techn.text,l,e.x,e.y+e.techn.Y,e.width,e.height,{fill:a,"font-style":"italic"},f):e.type&&e.type.text!==""&&Au(r)(e.type.text,l,e.x,e.y+e.type.Y,e.width,e.height,{fill:a,"font-style":"italic"},f),e.descr&&e.descr.text!==""&&(f=r.personFont(),f.fontColor=a,Au(r)(e.descr.text,l,e.x,e.y+e.descr.Y,e.width,e.height,{fill:a},f)),e.height},"drawC4Shape"),jCe=o(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),KCe=o(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),QCe=o(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),ZCe=o(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),JCe=o(function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),e7e=o(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),t7e=o(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertDynamicNumber"),r7e=o(function(t){let r=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);r.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),r.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),n7e=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),Au=(function(){function t(i,a,s,l,u,h,f){let d=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(i);n(d,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d){let{fontSize:p,fontFamily:m,fontWeight:g}=d,y=i.split(tt.lineBreakRegex);for(let v=0;v{"use strict";i7e=typeof global=="object"&&global&&global.Object===Object&&global,uT=i7e});var a7e,s7e,hi,Mo=N(()=>{"use strict";pL();a7e=typeof self=="object"&&self&&self.Object===Object&&self,s7e=uT||a7e||Function("return this")(),hi=s7e});var o7e,Ki,$d=N(()=>{"use strict";Mo();o7e=hi.Symbol,Ki=o7e});function u7e(t){var e=l7e.call(t,n2),r=t[n2];try{t[n2]=void 0;var n=!0}catch{}var i=c7e.call(t);return n&&(e?t[n2]=r:delete t[n2]),i}var Ej,l7e,c7e,n2,Sj,Cj=N(()=>{"use strict";$d();Ej=Object.prototype,l7e=Ej.hasOwnProperty,c7e=Ej.toString,n2=Ki?Ki.toStringTag:void 0;o(u7e,"getRawTag");Sj=u7e});function d7e(t){return f7e.call(t)}var h7e,f7e,Aj,_j=N(()=>{"use strict";h7e=Object.prototype,f7e=h7e.toString;o(d7e,"objectToString");Aj=d7e});function g7e(t){return t==null?t===void 0?m7e:p7e:Dj&&Dj in Object(t)?Sj(t):Aj(t)}var p7e,m7e,Dj,ha,_u=N(()=>{"use strict";$d();Cj();_j();p7e="[object Null]",m7e="[object Undefined]",Dj=Ki?Ki.toStringTag:void 0;o(g7e,"baseGetTag");ha=g7e});function y7e(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var Sn,oo=N(()=>{"use strict";o(y7e,"isObject");Sn=y7e});function w7e(t){if(!Sn(t))return!1;var e=ha(t);return e==x7e||e==b7e||e==v7e||e==T7e}var v7e,x7e,b7e,T7e,Si,i2=N(()=>{"use strict";_u();oo();v7e="[object AsyncFunction]",x7e="[object Function]",b7e="[object GeneratorFunction]",T7e="[object Proxy]";o(w7e,"isFunction");Si=w7e});var k7e,hT,Lj=N(()=>{"use strict";Mo();k7e=hi["__core-js_shared__"],hT=k7e});function E7e(t){return!!Rj&&Rj in t}var Rj,Nj,Mj=N(()=>{"use strict";Lj();Rj=(function(){var t=/[^.]+$/.exec(hT&&hT.keys&&hT.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();o(E7e,"isMasked");Nj=E7e});function A7e(t){if(t!=null){try{return C7e.call(t)}catch{}try{return t+""}catch{}}return""}var S7e,C7e,Du,mL=N(()=>{"use strict";S7e=Function.prototype,C7e=S7e.toString;o(A7e,"toSource");Du=A7e});function O7e(t){if(!Sn(t)||Nj(t))return!1;var e=Si(t)?I7e:D7e;return e.test(Du(t))}var _7e,D7e,L7e,R7e,N7e,M7e,I7e,Ij,Oj=N(()=>{"use strict";i2();Mj();oo();mL();_7e=/[\\^$.*+?()[\]{}|]/g,D7e=/^\[object .+?Constructor\]$/,L7e=Function.prototype,R7e=Object.prototype,N7e=L7e.toString,M7e=R7e.hasOwnProperty,I7e=RegExp("^"+N7e.call(M7e).replace(_7e,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(O7e,"baseIsNative");Ij=O7e});function P7e(t,e){return t?.[e]}var Pj,Bj=N(()=>{"use strict";o(P7e,"getValue");Pj=P7e});function B7e(t,e){var r=Pj(t,e);return Ij(r)?r:void 0}var Ls,Fh=N(()=>{"use strict";Oj();Bj();o(B7e,"getNative");Ls=B7e});var F7e,Lu,a2=N(()=>{"use strict";Fh();F7e=Ls(Object,"create"),Lu=F7e});function $7e(){this.__data__=Lu?Lu(null):{},this.size=0}var Fj,$j=N(()=>{"use strict";a2();o($7e,"hashClear");Fj=$7e});function z7e(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var zj,Gj=N(()=>{"use strict";o(z7e,"hashDelete");zj=z7e});function H7e(t){var e=this.__data__;if(Lu){var r=e[t];return r===G7e?void 0:r}return U7e.call(e,t)?e[t]:void 0}var G7e,V7e,U7e,Vj,Uj=N(()=>{"use strict";a2();G7e="__lodash_hash_undefined__",V7e=Object.prototype,U7e=V7e.hasOwnProperty;o(H7e,"hashGet");Vj=H7e});function Y7e(t){var e=this.__data__;return Lu?e[t]!==void 0:W7e.call(e,t)}var q7e,W7e,Hj,qj=N(()=>{"use strict";a2();q7e=Object.prototype,W7e=q7e.hasOwnProperty;o(Y7e,"hashHas");Hj=Y7e});function j7e(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Lu&&e===void 0?X7e:e,this}var X7e,Wj,Yj=N(()=>{"use strict";a2();X7e="__lodash_hash_undefined__";o(j7e,"hashSet");Wj=j7e});function rm(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";$j();Gj();Uj();qj();Yj();o(rm,"Hash");rm.prototype.clear=Fj;rm.prototype.delete=zj;rm.prototype.get=Vj;rm.prototype.has=Hj;rm.prototype.set=Wj;gL=rm});function K7e(){this.__data__=[],this.size=0}var jj,Kj=N(()=>{"use strict";o(K7e,"listCacheClear");jj=K7e});function Q7e(t,e){return t===e||t!==t&&e!==e}var Io,zd=N(()=>{"use strict";o(Q7e,"eq");Io=Q7e});function Z7e(t,e){for(var r=t.length;r--;)if(Io(t[r][0],e))return r;return-1}var $h,s2=N(()=>{"use strict";zd();o(Z7e,"assocIndexOf");$h=Z7e});function tAe(t){var e=this.__data__,r=$h(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():eAe.call(e,r,1),--this.size,!0}var J7e,eAe,Qj,Zj=N(()=>{"use strict";s2();J7e=Array.prototype,eAe=J7e.splice;o(tAe,"listCacheDelete");Qj=tAe});function rAe(t){var e=this.__data__,r=$h(e,t);return r<0?void 0:e[r][1]}var Jj,eK=N(()=>{"use strict";s2();o(rAe,"listCacheGet");Jj=rAe});function nAe(t){return $h(this.__data__,t)>-1}var tK,rK=N(()=>{"use strict";s2();o(nAe,"listCacheHas");tK=nAe});function iAe(t,e){var r=this.__data__,n=$h(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var nK,iK=N(()=>{"use strict";s2();o(iAe,"listCacheSet");nK=iAe});function nm(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";Kj();Zj();eK();rK();iK();o(nm,"ListCache");nm.prototype.clear=jj;nm.prototype.delete=Qj;nm.prototype.get=Jj;nm.prototype.has=tK;nm.prototype.set=nK;zh=nm});var aAe,Gh,fT=N(()=>{"use strict";Fh();Mo();aAe=Ls(hi,"Map"),Gh=aAe});function sAe(){this.size=0,this.__data__={hash:new gL,map:new(Gh||zh),string:new gL}}var aK,sK=N(()=>{"use strict";Xj();o2();fT();o(sAe,"mapCacheClear");aK=sAe});function oAe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var oK,lK=N(()=>{"use strict";o(oAe,"isKeyable");oK=oAe});function lAe(t,e){var r=t.__data__;return oK(e)?r[typeof e=="string"?"string":"hash"]:r.map}var Vh,l2=N(()=>{"use strict";lK();o(lAe,"getMapData");Vh=lAe});function cAe(t){var e=Vh(this,t).delete(t);return this.size-=e?1:0,e}var cK,uK=N(()=>{"use strict";l2();o(cAe,"mapCacheDelete");cK=cAe});function uAe(t){return Vh(this,t).get(t)}var hK,fK=N(()=>{"use strict";l2();o(uAe,"mapCacheGet");hK=uAe});function hAe(t){return Vh(this,t).has(t)}var dK,pK=N(()=>{"use strict";l2();o(hAe,"mapCacheHas");dK=hAe});function fAe(t,e){var r=Vh(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}var mK,gK=N(()=>{"use strict";l2();o(fAe,"mapCacheSet");mK=fAe});function im(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";sK();uK();fK();pK();gK();o(im,"MapCache");im.prototype.clear=aK;im.prototype.delete=cK;im.prototype.get=hK;im.prototype.has=dK;im.prototype.set=mK;Gd=im});function yL(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(dAe);var r=o(function(){var n=arguments,i=e?e.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=t.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(yL.Cache||Gd),r}var dAe,am,vL=N(()=>{"use strict";dT();dAe="Expected a function";o(yL,"memoize");yL.Cache=Gd;am=yL});function pAe(){this.__data__=new zh,this.size=0}var yK,vK=N(()=>{"use strict";o2();o(pAe,"stackClear");yK=pAe});function mAe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var xK,bK=N(()=>{"use strict";o(mAe,"stackDelete");xK=mAe});function gAe(t){return this.__data__.get(t)}var TK,wK=N(()=>{"use strict";o(gAe,"stackGet");TK=gAe});function yAe(t){return this.__data__.has(t)}var kK,EK=N(()=>{"use strict";o(yAe,"stackHas");kK=yAe});function xAe(t,e){var r=this.__data__;if(r instanceof zh){var n=r.__data__;if(!Gh||n.length{"use strict";o2();fT();dT();vAe=200;o(xAe,"stackSet");SK=xAe});function sm(t){var e=this.__data__=new zh(t);this.size=e.size}var dc,c2=N(()=>{"use strict";o2();vK();bK();wK();EK();CK();o(sm,"Stack");sm.prototype.clear=yK;sm.prototype.delete=xK;sm.prototype.get=TK;sm.prototype.has=kK;sm.prototype.set=SK;dc=sm});var bAe,om,xL=N(()=>{"use strict";Fh();bAe=(function(){try{var t=Ls(Object,"defineProperty");return t({},"",{}),t}catch{}})(),om=bAe});function TAe(t,e,r){e=="__proto__"&&om?om(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var pc,lm=N(()=>{"use strict";xL();o(TAe,"baseAssignValue");pc=TAe});function wAe(t,e,r){(r!==void 0&&!Io(t[e],r)||r===void 0&&!(e in t))&&pc(t,e,r)}var u2,bL=N(()=>{"use strict";lm();zd();o(wAe,"assignMergeValue");u2=wAe});function kAe(t){return function(e,r,n){for(var i=-1,a=Object(e),s=n(e),l=s.length;l--;){var u=s[t?l:++i];if(r(a[u],u,a)===!1)break}return e}}var AK,_K=N(()=>{"use strict";o(kAe,"createBaseFor");AK=kAe});var EAe,cm,pT=N(()=>{"use strict";_K();EAe=AK(),cm=EAe});function CAe(t,e){if(e)return t.slice();var r=t.length,n=RK?RK(r):new t.constructor(r);return t.copy(n),n}var NK,DK,SAe,LK,RK,mT,TL=N(()=>{"use strict";Mo();NK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,DK=NK&&typeof module=="object"&&module&&!module.nodeType&&module,SAe=DK&&DK.exports===NK,LK=SAe?hi.Buffer:void 0,RK=LK?LK.allocUnsafe:void 0;o(CAe,"cloneBuffer");mT=CAe});var AAe,um,wL=N(()=>{"use strict";Mo();AAe=hi.Uint8Array,um=AAe});function _Ae(t){var e=new t.constructor(t.byteLength);return new um(e).set(new um(t)),e}var hm,gT=N(()=>{"use strict";wL();o(_Ae,"cloneArrayBuffer");hm=_Ae});function DAe(t,e){var r=e?hm(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var yT,kL=N(()=>{"use strict";gT();o(DAe,"cloneTypedArray");yT=DAe});function LAe(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r{"use strict";o(LAe,"copyArray");vT=LAe});var MK,RAe,IK,OK=N(()=>{"use strict";oo();MK=Object.create,RAe=(function(){function t(){}return o(t,"object"),function(e){if(!Sn(e))return{};if(MK)return MK(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}})(),IK=RAe});function NAe(t,e){return function(r){return t(e(r))}}var xT,SL=N(()=>{"use strict";o(NAe,"overArg");xT=NAe});var MAe,fm,bT=N(()=>{"use strict";SL();MAe=xT(Object.getPrototypeOf,Object),fm=MAe});function OAe(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||IAe;return t===r}var IAe,mc,dm=N(()=>{"use strict";IAe=Object.prototype;o(OAe,"isPrototype");mc=OAe});function PAe(t){return typeof t.constructor=="function"&&!mc(t)?IK(fm(t)):{}}var TT,CL=N(()=>{"use strict";OK();bT();dm();o(PAe,"initCloneObject");TT=PAe});function BAe(t){return t!=null&&typeof t=="object"}var ai,Oo=N(()=>{"use strict";o(BAe,"isObjectLike");ai=BAe});function $Ae(t){return ai(t)&&ha(t)==FAe}var FAe,AL,PK=N(()=>{"use strict";_u();Oo();FAe="[object Arguments]";o($Ae,"baseIsArguments");AL=$Ae});var BK,zAe,GAe,VAe,_l,pm=N(()=>{"use strict";PK();Oo();BK=Object.prototype,zAe=BK.hasOwnProperty,GAe=BK.propertyIsEnumerable,VAe=AL((function(){return arguments})())?AL:function(t){return ai(t)&&zAe.call(t,"callee")&&!GAe.call(t,"callee")},_l=VAe});var UAe,Bt,Yn=N(()=>{"use strict";UAe=Array.isArray,Bt=UAe});function qAe(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=HAe}var HAe,mm,wT=N(()=>{"use strict";HAe=9007199254740991;o(qAe,"isLength");mm=qAe});function WAe(t){return t!=null&&mm(t.length)&&!Si(t)}var fi,Po=N(()=>{"use strict";i2();wT();o(WAe,"isArrayLike");fi=WAe});function YAe(t){return ai(t)&&fi(t)}var Vd,kT=N(()=>{"use strict";Po();Oo();o(YAe,"isArrayLikeObject");Vd=YAe});function XAe(){return!1}var FK,$K=N(()=>{"use strict";o(XAe,"stubFalse");FK=XAe});var VK,zK,jAe,GK,KAe,QAe,Dl,gm=N(()=>{"use strict";Mo();$K();VK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zK=VK&&typeof module=="object"&&module&&!module.nodeType&&module,jAe=zK&&zK.exports===VK,GK=jAe?hi.Buffer:void 0,KAe=GK?GK.isBuffer:void 0,QAe=KAe||FK,Dl=QAe});function n8e(t){if(!ai(t)||ha(t)!=ZAe)return!1;var e=fm(t);if(e===null)return!0;var r=t8e.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&UK.call(r)==r8e}var ZAe,JAe,e8e,UK,t8e,r8e,HK,qK=N(()=>{"use strict";_u();bT();Oo();ZAe="[object Object]",JAe=Function.prototype,e8e=Object.prototype,UK=JAe.toString,t8e=e8e.hasOwnProperty,r8e=UK.call(Object);o(n8e,"isPlainObject");HK=n8e});function _8e(t){return ai(t)&&mm(t.length)&&!!Gn[ha(t)]}var i8e,a8e,s8e,o8e,l8e,c8e,u8e,h8e,f8e,d8e,p8e,m8e,g8e,y8e,v8e,x8e,b8e,T8e,w8e,k8e,E8e,S8e,C8e,A8e,Gn,WK,YK=N(()=>{"use strict";_u();wT();Oo();i8e="[object Arguments]",a8e="[object Array]",s8e="[object Boolean]",o8e="[object Date]",l8e="[object Error]",c8e="[object Function]",u8e="[object Map]",h8e="[object Number]",f8e="[object Object]",d8e="[object RegExp]",p8e="[object Set]",m8e="[object String]",g8e="[object WeakMap]",y8e="[object ArrayBuffer]",v8e="[object DataView]",x8e="[object Float32Array]",b8e="[object Float64Array]",T8e="[object Int8Array]",w8e="[object Int16Array]",k8e="[object Int32Array]",E8e="[object Uint8Array]",S8e="[object Uint8ClampedArray]",C8e="[object Uint16Array]",A8e="[object Uint32Array]",Gn={};Gn[x8e]=Gn[b8e]=Gn[T8e]=Gn[w8e]=Gn[k8e]=Gn[E8e]=Gn[S8e]=Gn[C8e]=Gn[A8e]=!0;Gn[i8e]=Gn[a8e]=Gn[y8e]=Gn[s8e]=Gn[v8e]=Gn[o8e]=Gn[l8e]=Gn[c8e]=Gn[u8e]=Gn[h8e]=Gn[f8e]=Gn[d8e]=Gn[p8e]=Gn[m8e]=Gn[g8e]=!1;o(_8e,"baseIsTypedArray");WK=_8e});function D8e(t){return function(e){return t(e)}}var Bo,Ud=N(()=>{"use strict";o(D8e,"baseUnary");Bo=D8e});var XK,h2,L8e,_L,R8e,Fo,f2=N(()=>{"use strict";pL();XK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,h2=XK&&typeof module=="object"&&module&&!module.nodeType&&module,L8e=h2&&h2.exports===XK,_L=L8e&&uT.process,R8e=(function(){try{var t=h2&&h2.require&&h2.require("util").types;return t||_L&&_L.binding&&_L.binding("util")}catch{}})(),Fo=R8e});var jK,N8e,Uh,d2=N(()=>{"use strict";YK();Ud();f2();jK=Fo&&Fo.isTypedArray,N8e=jK?Bo(jK):WK,Uh=N8e});function M8e(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var p2,DL=N(()=>{"use strict";o(M8e,"safeGet");p2=M8e});function P8e(t,e,r){var n=t[e];(!(O8e.call(t,e)&&Io(n,r))||r===void 0&&!(e in t))&&pc(t,e,r)}var I8e,O8e,gc,ym=N(()=>{"use strict";lm();zd();I8e=Object.prototype,O8e=I8e.hasOwnProperty;o(P8e,"assignValue");gc=P8e});function B8e(t,e,r,n){var i=!r;r||(r={});for(var a=-1,s=e.length;++a{"use strict";ym();lm();o(B8e,"copyObject");$o=B8e});function F8e(t,e){for(var r=-1,n=Array(t);++r{"use strict";o(F8e,"baseTimes");KK=F8e});function G8e(t,e){var r=typeof t;return e=e??$8e,!!e&&(r=="number"||r!="symbol"&&z8e.test(t))&&t>-1&&t%1==0&&t{"use strict";$8e=9007199254740991,z8e=/^(?:0|[1-9]\d*)$/;o(G8e,"isIndex");Hh=G8e});function H8e(t,e){var r=Bt(t),n=!r&&_l(t),i=!r&&!n&&Dl(t),a=!r&&!n&&!i&&Uh(t),s=r||n||i||a,l=s?KK(t.length,String):[],u=l.length;for(var h in t)(e||U8e.call(t,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||Hh(h,u)))&&l.push(h);return l}var V8e,U8e,ET,LL=N(()=>{"use strict";QK();pm();Yn();gm();m2();d2();V8e=Object.prototype,U8e=V8e.hasOwnProperty;o(H8e,"arrayLikeKeys");ET=H8e});function q8e(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var ZK,JK=N(()=>{"use strict";o(q8e,"nativeKeysIn");ZK=q8e});function X8e(t){if(!Sn(t))return ZK(t);var e=mc(t),r=[];for(var n in t)n=="constructor"&&(e||!Y8e.call(t,n))||r.push(n);return r}var W8e,Y8e,eQ,tQ=N(()=>{"use strict";oo();dm();JK();W8e=Object.prototype,Y8e=W8e.hasOwnProperty;o(X8e,"baseKeysIn");eQ=X8e});function j8e(t){return fi(t)?ET(t,!0):eQ(t)}var Rs,qh=N(()=>{"use strict";LL();tQ();Po();o(j8e,"keysIn");Rs=j8e});function K8e(t){return $o(t,Rs(t))}var rQ,nQ=N(()=>{"use strict";Hd();qh();o(K8e,"toPlainObject");rQ=K8e});function Q8e(t,e,r,n,i,a,s){var l=p2(t,r),u=p2(e,r),h=s.get(u);if(h){u2(t,r,h);return}var f=a?a(l,u,r+"",t,e,s):void 0,d=f===void 0;if(d){var p=Bt(u),m=!p&&Dl(u),g=!p&&!m&&Uh(u);f=u,p||m||g?Bt(l)?f=l:Vd(l)?f=vT(l):m?(d=!1,f=mT(u,!0)):g?(d=!1,f=yT(u,!0)):f=[]:HK(u)||_l(u)?(f=l,_l(l)?f=rQ(l):(!Sn(l)||Si(l))&&(f=TT(u))):d=!1}d&&(s.set(u,f),i(f,u,n,a,s),s.delete(u)),u2(t,r,f)}var iQ,aQ=N(()=>{"use strict";bL();TL();kL();EL();CL();pm();Yn();kT();gm();i2();oo();qK();d2();DL();nQ();o(Q8e,"baseMergeDeep");iQ=Q8e});function sQ(t,e,r,n,i){t!==e&&cm(e,function(a,s){if(i||(i=new dc),Sn(a))iQ(t,e,s,r,sQ,n,i);else{var l=n?n(p2(t,s),a,s+"",t,e,i):void 0;l===void 0&&(l=a),u2(t,s,l)}},Rs)}var oQ,lQ=N(()=>{"use strict";c2();bL();pT();aQ();oo();qh();DL();o(sQ,"baseMerge");oQ=sQ});function Z8e(t){return t}var Qi,Ru=N(()=>{"use strict";o(Z8e,"identity");Qi=Z8e});function J8e(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var cQ,uQ=N(()=>{"use strict";o(J8e,"apply");cQ=J8e});function e_e(t,e,r){return e=hQ(e===void 0?t.length-1:e,0),function(){for(var n=arguments,i=-1,a=hQ(n.length-e,0),s=Array(a);++i{"use strict";uQ();hQ=Math.max;o(e_e,"overRest");ST=e_e});function t_e(t){return function(){return t}}var Ns,NL=N(()=>{"use strict";o(t_e,"constant");Ns=t_e});var r_e,fQ,dQ=N(()=>{"use strict";NL();xL();Ru();r_e=om?function(t,e){return om(t,"toString",{configurable:!0,enumerable:!1,value:Ns(e),writable:!0})}:Qi,fQ=r_e});function s_e(t){var e=0,r=0;return function(){var n=a_e(),i=i_e-(n-r);if(r=n,i>0){if(++e>=n_e)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var n_e,i_e,a_e,pQ,mQ=N(()=>{"use strict";n_e=800,i_e=16,a_e=Date.now;o(s_e,"shortOut");pQ=s_e});var o_e,CT,ML=N(()=>{"use strict";dQ();mQ();o_e=pQ(fQ),CT=o_e});function l_e(t,e){return CT(ST(t,e,Qi),t+"")}var yc,vm=N(()=>{"use strict";Ru();RL();ML();o(l_e,"baseRest");yc=l_e});function c_e(t,e,r){if(!Sn(r))return!1;var n=typeof e;return(n=="number"?fi(r)&&Hh(e,r.length):n=="string"&&e in r)?Io(r[e],t):!1}var lo,qd=N(()=>{"use strict";zd();Po();m2();oo();o(c_e,"isIterateeCall");lo=c_e});function u_e(t){return yc(function(e,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=t.length>3&&typeof a=="function"?(i--,a):void 0,s&&lo(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),e=Object(e);++n{"use strict";vm();qd();o(u_e,"createAssigner");AT=u_e});var h_e,Wh,OL=N(()=>{"use strict";lQ();IL();h_e=AT(function(t,e,r){oQ(t,e,r)}),Wh=h_e});function FL(t,e){if(!t)return e;let r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return f_e[r]??e}function g_e(t,e){let r=t.trim();if(r)return e.securityLevel!=="loose"?(0,vQ.sanitizeUrl)(r):r}function TQ(t,e){return!t||!e?0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function v_e(t){let e,r=0;t.forEach(i=>{r+=TQ(i,e),e=i});let n=r/2;return $L(t,n)}function x_e(t){return t.length===1?t[0]:v_e(t)}function T_e(t,e,r){let n=structuredClone(r);X.info("our points",n),e!=="start_left"&&e!=="start_right"&&n.reverse();let i=25+t,a=$L(n,i),s=10+t*.5,l=Math.atan2(n[0].y-a.y,n[0].x-a.x),u={x:0,y:0};return e==="start_left"?(u.x=Math.sin(l+Math.PI)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l+Math.PI)*s+(n[0].y+a.y)/2):e==="end_right"?(u.x=Math.sin(l-Math.PI)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l-Math.PI)*s+(n[0].y+a.y)/2-5):e==="end_left"?(u.x=Math.sin(l)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2-5):(u.x=Math.sin(l)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2),u}function zL(t){let e="",r="";for(let n of t)n!==void 0&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":e=e+n+";");return{style:e,labelStyle:r}}function w_e(t){let e="",r="0123456789abcdef",n=r.length;for(let i=0;iMath.round(parseFloat(a)).toString());return i.includes(r.toString())||i.includes(n.toString())}var vQ,BL,f_e,d_e,p_e,xQ,bQ,m_e,y_e,gQ,$L,b_e,yQ,GL,VL,k_e,E_e,UL,S_e,HL,PL,_T,C_e,A_e,vc,qt,wQ,Ji,xc,tr=N(()=>{"use strict";vQ=ja(tm(),1);yr();gr();S7();pt();vd();v0();vL();OL();F3();BL="\u200B",f_e={curveBasis:No,curveBasisClosed:K5,curveBasisOpen:Q5,curveBumpX:Vv,curveBumpY:Uv,curveBundle:tL,curveCardinalClosed:rL,curveCardinalOpen:iL,curveCardinal:Yv,curveCatmullRomClosed:sL,curveCatmullRomOpen:oL,curveCatmullRom:Kv,curveLinear:Cu,curveLinearClosed:rT,curveMonotoneX:Qv,curveMonotoneY:Zv,curveNatural:J0,curveStep:em,curveStepAfter:e2,curveStepBefore:Jv},d_e=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,p_e=o(function(t,e){let r=xQ(t,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(l=>l.args);b0(s),n=Rn(n,[...s])}else n=r.args;if(!n)return;let i=_0(t,e),a="config";return n[a]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[a],delete n[a]),n},"detectInit"),xQ=o(function(t,e=null){try{let r=new RegExp(`[%]{2}(?![{]${d_e.source})(?=[}][%]{2}).* +`,"ig");t=t.trim().replace(r,"").replace(/'/gm,'"'),X.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let n,i=[];for(;(n=yd.exec(t))!==null;)if(n.index===yd.lastIndex&&yd.lastIndex++,n&&!e||e&&n[1]?.match(e)||e&&n[2]?.match(e)){let a=n[1]?n[1]:n[2],s=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:a,args:s})}return i.length===0?{type:t,args:null}:i.length===1?i[0]:i}catch(r){return X.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),bQ=o(function(t){return t.replace(yd,"")},"removeDirectives"),m_e=o(function(t,e){for(let[r,n]of e.entries())if(n.match(t))return r;return-1},"isSubstringInArray");o(FL,"interpolateToCurve");o(g_e,"formatUrl");y_e=o((t,...e)=>{let r=t.split("."),n=r.length-1,i=r[n],a=window;for(let s=0;s{let r=Math.pow(10,e);return Math.round(t*r)/r},"roundNumber"),$L=o((t,e)=>{let r,n=e;for(let i of t){if(r){let a=TQ(i,r);if(a===0)return r;if(a=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:gQ((1-s)*r.x+s*i.x,5),y:gQ((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),b_e=o((t,e,r)=>{X.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());let i=$L(e,25),a=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(e[0].x+i.x)/2,l.y=-Math.cos(s)*a+(e[0].y+i.y)/2,l},"calcCardinalityPosition");o(T_e,"calcTerminalLabelPosition");o(zL,"getStylesFromArray");yQ=0,GL=o(()=>(yQ++,"id-"+Math.random().toString(36).substr(2,12)+"-"+yQ),"generateId");o(w_e,"makeRandomHex");VL=o(t=>w_e(t.length),"random"),k_e=o(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),E_e=o(function(t,e){let r=e.text.replace(tt.lineBreakRegex," "),[,n]=vc(e.fontSize),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.style("text-anchor",e.anchor),i.style("font-family",e.fontFamily),i.style("font-size",n),i.style("font-weight",e.fontWeight),i.attr("fill",e.fill),e.class!==void 0&&i.attr("class",e.class);let a=i.append("tspan");return a.attr("x",e.x+e.textMargin*2),a.attr("fill",e.fill),a.text(r),i},"drawSimpleText"),UL=am((t,e,r)=>{if(!t||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},r),tt.lineBreakRegex.test(t)))return t;let n=t.split(" ").filter(Boolean),i=[],a="";return n.forEach((s,l)=>{let u=Zi(`${s} `,r),h=Zi(a,r);if(u>e){let{hyphenatedStrings:p,remainingWord:m}=S_e(s,e,"-",r);i.push(a,...p),a=m}else h+u>=e?(i.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+1===n.length&&i.push(a)}),i.filter(s=>s!=="").join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),S_e=am((t,e,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...t],a=[],s="";return i.forEach((l,u)=>{let h=`${s}${l}`;if(Zi(h,n)>=e){let d=u+1,p=i.length===d,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(t,e,r="-",n)=>`${t}${e}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);o(DT,"calculateTextHeight");o(Zi,"calculateTextWidth");HL=am((t,e)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=e;if(!t)return{width:0,height:0};let[,a]=vc(r),s=["sans-serif",n],l=t.split(tt.lineBreakRegex),u=[],h=qe("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let f=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=k_e();v.text=y||BL;let x=E_e(f,v).style("font-size",a).style("font-weight",i).style("font-family",p),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}f.remove();let d=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[d]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),PL=class{constructor(e=!1,r){this.count=0;this.count=r?r.length:0,this.next=e?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},C_e=o(function(t){return _T=_T||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),_T.innerHTML=t,unescape(_T.textContent)},"entityDecode");o(qL,"isDetailedError");A_e=o((t,e,r,n)=>{if(!n)return;let i=t.node()?.getBBox();i&&t.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",e)},"insertTitle"),vc=o(t=>{if(typeof t=="number")return[t,t+"px"];let e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");o(Vn,"cleanAndMerge");qt={assignWithDepth:Rn,wrapLabel:UL,calculateTextHeight:DT,calculateTextWidth:Zi,calculateTextDimensions:HL,cleanAndMerge:Vn,detectInit:p_e,detectDirective:xQ,isSubstringInArray:m_e,interpolateToCurve:FL,calcLabelPosition:x_e,calcCardinalityPosition:b_e,calcTerminalLabelPosition:T_e,formatUrl:g_e,getStylesFromArray:zL,generateId:GL,random:VL,runFunc:y_e,entityDecode:C_e,insertTitle:A_e,isLabelCoordinateInPath:__e,parseFontSize:vc,InitIDGenerator:PL},wQ=o(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),e},"encodeEntities"),Ji=o(function(t){return t.replace(/๏ฌ‚ยฐยฐ/g,"&#").replace(/๏ฌ‚ยฐ/g,"&").replace(/ยถรŸ/g,";")},"decodeEntities"),xc=o((t,e,{counter:r=0,prefix:n,suffix:i},a)=>a||`${n?`${n}_`:""}${t}_${e}_${r}${i?`_${i}`:""}`,"getEdgeId");o(Cn,"handleUndefinedAttr");o(__e,"isLabelCoordinateInPath")});function Ll(t,e,r,n,i){if(!e[t].width)if(r)e[t].text=UL(e[t].text,i,n),e[t].textLines=e[t].text.split(tt.lineBreakRegex).length,e[t].width=i,e[t].height=DT(e[t].text,n);else{let a=e[t].text.split(tt.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(let l of a)e[t].width=Math.max(Zi(l,n),e[t].width),s=DT(l,n),e[t].height=e[t].height+s}}function AQ(t,e,r,n,i){let a=new MT(i);a.data.widthLimit=r.data.widthLimit/Math.min(WL,n.length);for(let[s,l]of n.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&Wt.wrap,f=LT(Wt);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Ll("label",l,h,f,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=LT(Wt);Ll("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=LT(Wt);g.fontSize=g.fontSize-2,Ll("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%WL===0){let g=r.data.startx+Wt.diagramMarginX,y=r.data.stopy+Wt.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+Wt.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let d=i.db.getC4ShapeArray(l.alias),p=i.db.getC4ShapeKeys(l.alias);p.length>0&&CQ(a,t,d,p),e=l.alias;let m=i.db.getBoundaries(e);m.length>0&&AQ(t,e,a,m,i),l.alias!=="global"&&SQ(t,l,a),r.data.stopy=Math.max(a.data.stopy+Wt.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+Wt.c4ShapeMargin,r.data.stopx),RT=Math.max(RT,r.data.stopx),NT=Math.max(NT,r.data.stopy)}}var RT,NT,EQ,WL,Wt,MT,YL,g2,LT,D_e,SQ,CQ,Ms,kQ,L_e,R_e,N_e,XL,_Q=N(()=>{"use strict";yr();kj();pt();RA();gr();GA();Xt();v0();tr();Ei();RT=0,NT=0,EQ=4,WL=2;tv.yy=ov;Wt={},MT=class{static{o(this,"Bounds")}constructor(e){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,YL(e.db.getConfig())}setData(e,r,n,i){this.nextData.startx=this.data.startx=e,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(e,r,n,i){e[r]===void 0?e[r]=n:e[r]=i(n,e[r])}insert(e){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+e.margin:this.nextData.stopx+e.margin*2,n=r+e.width,i=this.nextData.starty+e.margin*2,a=i+e.height;(r>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>EQ)&&(r=this.nextData.startx+e.margin+Wt.nextLinePaddingX,i=this.nextData.stopy+e.margin*2,this.nextData.stopx=n=r+e.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=i+e.height,this.nextData.cnt=1),e.x=r,e.y=i,this.updateVal(this.data,"startx",r,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",r,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(e){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},YL(e.db.getConfig())}bumpLastMargin(e){this.data.stopx+=e,this.data.stopy+=e}},YL=o(function(t){Rn(Wt,t),t.fontFamily&&(Wt.personFontFamily=Wt.systemFontFamily=Wt.messageFontFamily=t.fontFamily),t.fontSize&&(Wt.personFontSize=Wt.systemFontSize=Wt.messageFontSize=t.fontSize),t.fontWeight&&(Wt.personFontWeight=Wt.systemFontWeight=Wt.messageFontWeight=t.fontWeight)},"setConf"),g2=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),LT=o(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),D_e=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");o(Ll,"calcC4ShapeTextWH");SQ=o(function(t,e,r){e.x=r.data.startx,e.y=r.data.starty,e.width=r.data.stopx-r.data.startx,e.height=r.data.stopy-r.data.starty,e.label.y=Wt.c4ShapeMargin-35;let n=e.wrap&&Wt.wrap,i=LT(Wt);i.fontSize=i.fontSize+2,i.fontWeight="bold";let a=Zi(e.label.text,i);Ll("label",e,n,i,a),Al.drawBoundary(t,e,Wt)},"drawBoundary"),CQ=o(function(t,e,r,n){let i=0;for(let a of n){i=0;let s=r[a],l=g2(Wt,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=Zi("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=Wt.c4ShapePadding,i=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let u=s.wrap&&Wt.wrap,h=Wt.width-Wt.c4ShapePadding*2,f=g2(Wt,s.typeC4Shape.text);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Ll("label",s,u,f,h),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=g2(Wt,s.typeC4Shape.text);Ll("type",s,u,m,h),s.type.Y=i+5,i=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let m=g2(Wt,s.techn.text);Ll("techn",s,u,m,h),s.techn.Y=i+5,i=s.techn.Y+s.techn.height}let d=i,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=g2(Wt,s.typeC4Shape.text);Ll("descr",s,u,m,h),s.descr.Y=i+20,i=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),d=i-s.descr.textLines*5}p=p+Wt.c4ShapePadding,s.width=Math.max(s.width||Wt.width,p,Wt.width),s.height=Math.max(s.height||Wt.height,d,Wt.height),s.margin=s.margin||Wt.c4ShapeMargin,t.insert(s),Al.drawC4Shape(e,s,Wt)}t.bumpLastMargin(Wt.c4ShapeMargin)},"drawC4ShapeArray"),Ms=class{static{o(this,"Point")}constructor(e,r){this.x=e,this.y=r}},kQ=o(function(t,e){let r=t.x,n=t.y,i=e.x,a=e.y,s=r+t.width/2,l=n+t.height/2,u=Math.abs(r-i),h=Math.abs(n-a),f=h/u,d=t.height/t.width,p=null;return n==a&&ri?p=new Ms(r,l):r==i&&na&&(p=new Ms(s,n)),r>i&&n=f?p=new Ms(r,l+f*t.width/2):p=new Ms(s-u/h*t.height/2,n+t.height):r=f?p=new Ms(r+t.width,l+f*t.width/2):p=new Ms(s+u/h*t.height/2,n+t.height):ra?d>=f?p=new Ms(r+t.width,l-f*t.width/2):p=new Ms(s+t.height/2*u/h,n):r>i&&n>a&&(d>=f?p=new Ms(r,l-t.width/2*f):p=new Ms(s-t.height/2*u/h,n)),p},"getIntersectPoint"),L_e=o(function(t,e){let r={x:0,y:0};r.x=e.x+e.width/2,r.y=e.y+e.height/2;let n=kQ(t,r);r.x=t.x+t.width/2,r.y=t.y+t.height/2;let i=kQ(e,r);return{startPoint:n,endPoint:i}},"getIntersectPoints"),R_e=o(function(t,e,r,n){let i=0;for(let a of e){i=i+1;let s=a.wrap&&Wt.wrap,l=D_e(Wt);n.db.getC4Type()==="C4Dynamic"&&(a.label.text=i+": "+a.label.text);let h=Zi(a.label.text,l);Ll("label",a,s,l,h),a.techn&&a.techn.text!==""&&(h=Zi(a.techn.text,l),Ll("techn",a,s,l,h)),a.descr&&a.descr.text!==""&&(h=Zi(a.descr.text,l),Ll("descr",a,s,l,h));let f=r(a.from),d=r(a.to),p=L_e(f,d);a.startPoint=p.startPoint,a.endPoint=p.endPoint}Al.drawRels(t,e,Wt)},"drawRels");o(AQ,"drawInsideBoundary");N_e=o(function(t,e,r,n){Wt=ge().c4;let i=ge().securityLevel,a;i==="sandbox"&&(a=qe("#i"+e));let s=i==="sandbox"?qe(a.nodes()[0].contentDocument.body):qe("body"),l=n.db;n.db.setWrap(Wt.wrap),EQ=l.getC4ShapeInRow(),WL=l.getC4BoundaryInRow(),X.debug(`C:${JSON.stringify(Wt,null,2)}`);let u=i==="sandbox"?s.select(`[id="${e}"]`):qe(`[id="${e}"]`);Al.insertComputerIcon(u),Al.insertDatabaseIcon(u),Al.insertClockIcon(u);let h=new MT(n);h.setData(Wt.diagramMarginX,Wt.diagramMarginX,Wt.diagramMarginY,Wt.diagramMarginY),h.data.widthLimit=screen.availWidth,RT=Wt.diagramMarginX,NT=Wt.diagramMarginY;let f=n.db.getTitle(),d=n.db.getBoundaries("");AQ(u,"",h,d,n),Al.insertArrowHead(u),Al.insertArrowEnd(u),Al.insertArrowCrossHead(u),Al.insertArrowFilledHead(u),R_e(u,n.db.getRels(),n.db.getC4Shape,n),h.data.stopx=RT,h.data.stopy=NT;let p=h.data,g=p.stopy-p.starty+2*Wt.diagramMarginY,v=p.stopx-p.startx+2*Wt.diagramMarginX;f&&u.append("text").text(f).attr("x",(p.stopx-p.startx)/2-4*Wt.diagramMarginX).attr("y",p.starty+Wt.diagramMarginY),mn(u,g,v,Wt.useMaxWidth);let x=f?60:0;u.attr("viewBox",p.startx-Wt.diagramMarginX+" -"+(Wt.diagramMarginY+x)+" "+v+" "+(g+x)),X.debug("models:",p)},"draw"),XL={drawPersonOrSystemArray:CQ,drawBoundary:SQ,setConf:YL,draw:N_e}});var M_e,DQ,LQ=N(()=>{"use strict";M_e=o(t=>`.person { stroke: ${t.personBorder}; fill: ${t.personBkg}; } -`,"getStyles"),UX=ICe});var WX={};hr(WX,{diagram:()=>OCe});var OCe,qX=N(()=>{"use strict";$C();uA();VX();HX();OCe={parser:JF,db:Qy,renderer:tD,styles:UX,init:o(({c4:t,wrap:e})=>{tD.setConf(t),Qy.setWrap(e)},"init")}});function uj(t){return typeof t>"u"||t===null}function $Ce(t){return typeof t=="object"&&t!==null}function zCe(t){return Array.isArray(t)?t:uj(t)?[]:[t]}function GCe(t,e){var r,n,i,a;if(e)for(a=Object.keys(e),r=0,n=a.length;rl&&(a=" ... ",e=n-l+a.length),r-n>l&&(s=" ...",r=n+l-s.length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+s,pos:n-e+a.length}}function nD(t,e){return $i.repeat(" ",e-t.length)+t}function KCe(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var r=/\r?\n|\r|\0/g,n=[0],i=[],a,s=-1;a=r.exec(t.buffer);)i.push(a.index),n.push(a.index+a[0].length),t.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var l="",u,h,f=Math.min(t.line+e.linesAfter,i.length).toString().length,d=e.maxLength-(e.indent+f+3);for(u=1;u<=e.linesBefore&&!(s-u<0);u++)h=rD(t.buffer,n[s-u],i[s-u],t.position-(n[s]-n[s-u]),d),l=$i.repeat(" ",e.indent)+nD((t.line-u+1).toString(),f)+" | "+h.str+` -`+l;for(h=rD(t.buffer,n[s],i[s],t.position,d),l+=$i.repeat(" ",e.indent)+nD((t.line+1).toString(),f)+" | "+h.str+` -`,l+=$i.repeat("-",e.indent+f+3+h.pos)+`^ -`,u=1;u<=e.linesAfter&&!(s+u>=i.length);u++)h=rD(t.buffer,n[s+u],i[s+u],t.position-(n[s]-n[s+u]),d),l+=$i.repeat(" ",e.indent)+nD((t.line+u+1).toString(),f)+" | "+h.str+` -`;return l.replace(/\n$/,"")}function e7e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(n){e[String(n)]=r})}),e}function t7e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(ZCe.indexOf(r)===-1)throw new Ds('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=e7e(e.styleAliases||null),JCe.indexOf(this.kind)===-1)throw new Ds('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}function jX(t,e){var r=[];return t[e].forEach(function(n){var i=r.length;r.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(i=s)}),r[i]=n}),r}function r7e(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,r;function n(i){i.multi?(t.multi[i.kind].push(i),t.multi.fallback.push(i)):t[i.kind][i.tag]=t.fallback[i.tag]=i}for(o(n,"collectType"),e=0,r=arguments.length;e=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:r*parseFloat(e,10)}function A7e(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if($i.isNegativeZero(t))return"-0.0";return r=t.toString(10),C7e.test(r)?r.replace("e",".e"):r}function _7e(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||$i.isNegativeZero(t))}function R7e(t){return t===null?!1:dj.exec(t)!==null||pj.exec(t)!==null}function N7e(t){var e,r,n,i,a,s,l,u=0,h=null,f,d,p;if(e=dj.exec(t),e===null&&(e=pj.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(r,n,i));if(a=+e[4],s=+e[5],l=+e[6],e[7]){for(u=e[7].slice(0,3);u.length<3;)u+="0";u=+u}return e[9]&&(f=+e[10],d=+(e[11]||0),h=(f*60+d)*6e4,e[9]==="-"&&(h=-h)),p=new Date(Date.UTC(r,n,i,a,s,l,u)),h&&p.setTime(p.getTime()-h),p}function M7e(t){return t.toISOString()}function O7e(t){return t==="<<"||t===null}function B7e(t){if(t===null)return!1;var e,r,n=0,i=t.length,a=uD;for(r=0;r64)){if(e<0)return!1;n+=6}return n%8===0}function F7e(t){var e,r,n=t.replace(/[\r\n=]/g,""),i=n.length,a=uD,s=0,l=[];for(e=0;e>16&255),l.push(s>>8&255),l.push(s&255)),s=s<<6|a.indexOf(n.charAt(e));return r=i%4*6,r===0?(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)):r===18?(l.push(s>>10&255),l.push(s>>2&255)):r===12&&l.push(s>>4&255),new Uint8Array(l)}function $7e(t){var e="",r=0,n,i,a=t.length,s=uD;for(n=0;n>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]),r=(r<<8)+t[n];return i=a%3,i===0?(e+=s[r>>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]):i===2?(e+=s[r>>10&63],e+=s[r>>4&63],e+=s[r<<2&63],e+=s[64]):i===1&&(e+=s[r>>2&63],e+=s[r<<4&63],e+=s[64],e+=s[64]),e}function z7e(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}function H7e(t){if(t===null)return!0;var e=[],r,n,i,a,s,l=t;for(r=0,n=l.length;r>10)+55296,(t-65536&1023)+56320)}function cAe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||mj,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Tj(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=QCe(r),new Ds(e,r)}function Qt(t,e){throw Tj(t,e)}function bw(t,e){t.onWarning&&t.onWarning.call(null,Tj(t,e))}function zh(t,e,r,n){var i,a,s,l;if(e1&&(t.result+=$i.repeat(` -`,e-1))}function uAe(t,e,r){var n,i,a,s,l,u,h,f,d=t.kind,p=t.result,m;if(m=t.input.charCodeAt(t.position),Ls(m)||am(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=t.input.charCodeAt(t.position+1),Ls(i)||r&&am(i)))return!1;for(t.kind="scalar",t.result="",a=s=t.position,l=!1;m!==0;){if(m===58){if(i=t.input.charCodeAt(t.position+1),Ls(i)||r&&am(i))break}else if(m===35){if(n=t.input.charCodeAt(t.position-1),Ls(n))break}else{if(t.position===t.lineStart&&kw(t)||r&&am(m))break;if(dc(m))if(u=t.line,h=t.lineStart,f=t.lineIndent,Ci(t,!1,-1),t.lineIndent>=e){l=!0,m=t.input.charCodeAt(t.position);continue}else{t.position=s,t.line=u,t.lineStart=h,t.lineIndent=f;break}}l&&(zh(t,a,s,!1),fD(t,t.line-u),a=s=t.position,l=!1),Nd(m)||(s=t.position+1),m=t.input.charCodeAt(++t.position)}return zh(t,a,s,!1),t.result?!0:(t.kind=d,t.result=p,!1)}function hAe(t,e){var r,n,i;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(zh(t,n,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)n=t.position,t.position++,i=t.position;else return!0;else dc(r)?(zh(t,n,i,!0),fD(t,Ci(t,!1,e)),n=i=t.position):t.position===t.lineStart&&kw(t)?Qt(t,"unexpected end of the document within a single quoted scalar"):(t.position++,i=t.position);Qt(t,"unexpected end of the stream within a single quoted scalar")}function fAe(t,e){var r,n,i,a,s,l;if(l=t.input.charCodeAt(t.position),l!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;(l=t.input.charCodeAt(t.position))!==0;){if(l===34)return zh(t,r,t.position,!0),t.position++,!0;if(l===92){if(zh(t,r,t.position,!0),l=t.input.charCodeAt(++t.position),dc(l))Ci(t,!1,e);else if(l<256&&bj[l])t.result+=wj[l],t.position++;else if((s=sAe(l))>0){for(i=s,a=0;i>0;i--)l=t.input.charCodeAt(++t.position),(s=aAe(l))>=0?a=(a<<4)+s:Qt(t,"expected hexadecimal character");t.result+=lAe(a),t.position++}else Qt(t,"unknown escape sequence");r=n=t.position}else dc(l)?(zh(t,r,n,!0),fD(t,Ci(t,!1,e)),r=n=t.position):t.position===t.lineStart&&kw(t)?Qt(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}Qt(t,"unexpected end of the stream within a double quoted scalar")}function dAe(t,e){var r=!0,n,i,a,s=t.tag,l,u=t.anchor,h,f,d,p,m,g=Object.create(null),y,v,x,b;if(b=t.input.charCodeAt(t.position),b===91)f=93,m=!1,l=[];else if(b===123)f=125,m=!0,l={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=l),b=t.input.charCodeAt(++t.position);b!==0;){if(Ci(t,!0,e),b=t.input.charCodeAt(t.position),b===f)return t.position++,t.tag=s,t.anchor=u,t.kind=m?"mapping":"sequence",t.result=l,!0;r?b===44&&Qt(t,"expected the node content, but found ','"):Qt(t,"missed comma between flow collection entries"),v=y=x=null,d=p=!1,b===63&&(h=t.input.charCodeAt(t.position+1),Ls(h)&&(d=p=!0,t.position++,Ci(t,!0,e))),n=t.line,i=t.lineStart,a=t.position,om(t,e,vw,!1,!0),v=t.tag,y=t.result,Ci(t,!0,e),b=t.input.charCodeAt(t.position),(p||t.line===n)&&b===58&&(d=!0,b=t.input.charCodeAt(++t.position),Ci(t,!0,e),om(t,e,vw,!1,!0),x=t.result),m?sm(t,l,g,v,y,x,n,i,a):d?l.push(sm(t,null,g,v,y,x,n,i,a)):l.push(y),Ci(t,!0,e),b=t.input.charCodeAt(t.position),b===44?(r=!0,b=t.input.charCodeAt(++t.position)):r=!1}Qt(t,"unexpected end of the stream within a flow collection")}function pAe(t,e){var r,n,i=iD,a=!1,s=!1,l=e,u=0,h=!1,f,d;if(d=t.input.charCodeAt(t.position),d===124)n=!1;else if(d===62)n=!0;else return!1;for(t.kind="scalar",t.result="";d!==0;)if(d=t.input.charCodeAt(++t.position),d===43||d===45)iD===i?i=d===43?KX:tAe:Qt(t,"repeat of a chomping mode identifier");else if((f=oAe(d))>=0)f===0?Qt(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?Qt(t,"repeat of an indentation width identifier"):(l=e+f-1,s=!0);else break;if(Nd(d)){do d=t.input.charCodeAt(++t.position);while(Nd(d));if(d===35)do d=t.input.charCodeAt(++t.position);while(!dc(d)&&d!==0)}for(;d!==0;){for(hD(t),t.lineIndent=0,d=t.input.charCodeAt(t.position);(!s||t.lineIndentl&&(l=t.lineIndent),dc(d)){u++;continue}if(t.lineIndente)&&u!==0)Qt(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(v&&(s=t.line,l=t.lineStart,u=t.position),om(t,e,xw,!0,i)&&(v?g=t.result:y=t.result),v||(sm(t,d,p,m,g,y,s,l,u),m=g=y=null),Ci(t,!0,-1),b=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&b!==0)Qt(t,"bad indentation of a mapping entry");else if(t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),d=0,p=t.implicitTypes.length;d"),t.result!==null&&g.kind!==t.kind&&Qt(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+g.kind+'", not "'+t.kind+'"'),g.resolve(t.result,t.tag)?(t.result=g.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Qt(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||f}function xAe(t){var e=t.position,r,n,i,a=!1,s;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(s=t.input.charCodeAt(t.position))!==0&&(Ci(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||s!==37));){for(a=!0,s=t.input.charCodeAt(++t.position),r=t.position;s!==0&&!Ls(s);)s=t.input.charCodeAt(++t.position);for(n=t.input.slice(r,t.position),i=[],n.length<1&&Qt(t,"directive name must not be less than one character in length");s!==0;){for(;Nd(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!dc(s));break}if(dc(s))break;for(r=t.position;s!==0&&!Ls(s);)s=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}s!==0&&hD(t),Gh.call(JX,n)?JX[n](t,n,i):bw(t,'unknown document directive "'+n+'"')}if(Ci(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Ci(t,!0,-1)):a&&Qt(t,"directives end mark is expected"),om(t,t.lineIndent-1,xw,!1,!0),Ci(t,!0,-1),t.checkLineBreaks&&nAe.test(t.input.slice(e,t.position))&&bw(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&kw(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Ci(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var n=kj(t,r);if(typeof e!="function")return n;for(var i=0,a=n.length;iI_e});var I_e,NQ=N(()=>{"use strict";RA();GA();_Q();LQ();I_e={parser:nH,db:ov,renderer:XL,styles:DQ,init:o(({c4:t,wrap:e})=>{XL.setConf(t),ov.setWrap(e)},"init")}});function jQ(t){return typeof t>"u"||t===null}function F_e(t){return typeof t=="object"&&t!==null}function $_e(t){return Array.isArray(t)?t:jQ(t)?[]:[t]}function z_e(t,e){var r,n,i,a;if(e)for(a=Object.keys(e),r=0,n=a.length;rl&&(a=" ... ",e=n-l+a.length),r-n>l&&(s=" ...",r=n+l-s.length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+s,pos:n-e+a.length}}function KL(t,e){return Pi.repeat(" ",e-t.length)+t}function j_e(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var r=/\r?\n|\r|\0/g,n=[0],i=[],a,s=-1;a=r.exec(t.buffer);)i.push(a.index),n.push(a.index+a[0].length),t.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var l="",u,h,f=Math.min(t.line+e.linesAfter,i.length).toString().length,d=e.maxLength-(e.indent+f+3);for(u=1;u<=e.linesBefore&&!(s-u<0);u++)h=jL(t.buffer,n[s-u],i[s-u],t.position-(n[s]-n[s-u]),d),l=Pi.repeat(" ",e.indent)+KL((t.line-u+1).toString(),f)+" | "+h.str+` +`+l;for(h=jL(t.buffer,n[s],i[s],t.position,d),l+=Pi.repeat(" ",e.indent)+KL((t.line+1).toString(),f)+" | "+h.str+` +`,l+=Pi.repeat("-",e.indent+f+3+h.pos)+`^ +`,u=1;u<=e.linesAfter&&!(s+u>=i.length);u++)h=jL(t.buffer,n[s+u],i[s+u],t.position-(n[s]-n[s+u]),d),l+=Pi.repeat(" ",e.indent)+KL((t.line+u+1).toString(),f)+" | "+h.str+` +`;return l.replace(/\n$/,"")}function J_e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(n){e[String(n)]=r})}),e}function eDe(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(Q_e.indexOf(r)===-1)throw new Is('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=J_e(e.styleAliases||null),Z_e.indexOf(this.kind)===-1)throw new Is('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}function IQ(t,e){var r=[];return t[e].forEach(function(n){var i=r.length;r.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(i=s)}),r[i]=n}),r}function tDe(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,r;function n(i){i.multi?(t.multi[i.kind].push(i),t.multi.fallback.push(i)):t[i.kind][i.tag]=t.fallback[i.tag]=i}for(o(n,"collectType"),e=0,r=arguments.length;e=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:r*parseFloat(e,10)}function CDe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Pi.isNegativeZero(t))return"-0.0";return r=t.toString(10),SDe.test(r)?r.replace("e",".e"):r}function ADe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Pi.isNegativeZero(t))}function LDe(t){return t===null?!1:ZQ.exec(t)!==null||JQ.exec(t)!==null}function RDe(t){var e,r,n,i,a,s,l,u=0,h=null,f,d,p;if(e=ZQ.exec(t),e===null&&(e=JQ.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(r,n,i));if(a=+e[4],s=+e[5],l=+e[6],e[7]){for(u=e[7].slice(0,3);u.length<3;)u+="0";u=+u}return e[9]&&(f=+e[10],d=+(e[11]||0),h=(f*60+d)*6e4,e[9]==="-"&&(h=-h)),p=new Date(Date.UTC(r,n,i,a,s,l,u)),h&&p.setTime(p.getTime()-h),p}function NDe(t){return t.toISOString()}function IDe(t){return t==="<<"||t===null}function PDe(t){if(t===null)return!1;var e,r,n=0,i=t.length,a=n9;for(r=0;r64)){if(e<0)return!1;n+=6}return n%8===0}function BDe(t){var e,r,n=t.replace(/[\r\n=]/g,""),i=n.length,a=n9,s=0,l=[];for(e=0;e>16&255),l.push(s>>8&255),l.push(s&255)),s=s<<6|a.indexOf(n.charAt(e));return r=i%4*6,r===0?(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)):r===18?(l.push(s>>10&255),l.push(s>>2&255)):r===12&&l.push(s>>4&255),new Uint8Array(l)}function FDe(t){var e="",r=0,n,i,a=t.length,s=n9;for(n=0;n>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]),r=(r<<8)+t[n];return i=a%3,i===0?(e+=s[r>>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]):i===2?(e+=s[r>>10&63],e+=s[r>>4&63],e+=s[r<<2&63],e+=s[64]):i===1&&(e+=s[r>>2&63],e+=s[r<<4&63],e+=s[64],e+=s[64]),e}function $De(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}function UDe(t){if(t===null)return!0;var e=[],r,n,i,a,s,l=t;for(r=0,n=l.length;r>10)+55296,(t-65536&1023)+56320)}function lLe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||eZ,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function oZ(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=K_e(r),new Is(e,r)}function Zt(t,e){throw oZ(t,e)}function PT(t,e){t.onWarning&&t.onWarning.call(null,oZ(t,e))}function Yh(t,e,r,n){var i,a,s,l;if(e1&&(t.result+=Pi.repeat(` +`,e-1))}function cLe(t,e,r){var n,i,a,s,l,u,h,f,d=t.kind,p=t.result,m;if(m=t.input.charCodeAt(t.position),Os(m)||bm(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=t.input.charCodeAt(t.position+1),Os(i)||r&&bm(i)))return!1;for(t.kind="scalar",t.result="",a=s=t.position,l=!1;m!==0;){if(m===58){if(i=t.input.charCodeAt(t.position+1),Os(i)||r&&bm(i))break}else if(m===35){if(n=t.input.charCodeAt(t.position-1),Os(n))break}else{if(t.position===t.lineStart&&$T(t)||r&&bm(m))break;if(bc(m))if(u=t.line,h=t.lineStart,f=t.lineIndent,Ci(t,!1,-1),t.lineIndent>=e){l=!0,m=t.input.charCodeAt(t.position);continue}else{t.position=s,t.line=u,t.lineStart=h,t.lineIndent=f;break}}l&&(Yh(t,a,s,!1),a9(t,t.line-u),a=s=t.position,l=!1),Yd(m)||(s=t.position+1),m=t.input.charCodeAt(++t.position)}return Yh(t,a,s,!1),t.result?!0:(t.kind=d,t.result=p,!1)}function uLe(t,e){var r,n,i;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(Yh(t,n,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)n=t.position,t.position++,i=t.position;else return!0;else bc(r)?(Yh(t,n,i,!0),a9(t,Ci(t,!1,e)),n=i=t.position):t.position===t.lineStart&&$T(t)?Zt(t,"unexpected end of the document within a single quoted scalar"):(t.position++,i=t.position);Zt(t,"unexpected end of the stream within a single quoted scalar")}function hLe(t,e){var r,n,i,a,s,l;if(l=t.input.charCodeAt(t.position),l!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;(l=t.input.charCodeAt(t.position))!==0;){if(l===34)return Yh(t,r,t.position,!0),t.position++,!0;if(l===92){if(Yh(t,r,t.position,!0),l=t.input.charCodeAt(++t.position),bc(l))Ci(t,!1,e);else if(l<256&&aZ[l])t.result+=sZ[l],t.position++;else if((s=aLe(l))>0){for(i=s,a=0;i>0;i--)l=t.input.charCodeAt(++t.position),(s=iLe(l))>=0?a=(a<<4)+s:Zt(t,"expected hexadecimal character");t.result+=oLe(a),t.position++}else Zt(t,"unknown escape sequence");r=n=t.position}else bc(l)?(Yh(t,r,n,!0),a9(t,Ci(t,!1,e)),r=n=t.position):t.position===t.lineStart&&$T(t)?Zt(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}Zt(t,"unexpected end of the stream within a double quoted scalar")}function fLe(t,e){var r=!0,n,i,a,s=t.tag,l,u=t.anchor,h,f,d,p,m,g=Object.create(null),y,v,x,b;if(b=t.input.charCodeAt(t.position),b===91)f=93,m=!1,l=[];else if(b===123)f=125,m=!0,l={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=l),b=t.input.charCodeAt(++t.position);b!==0;){if(Ci(t,!0,e),b=t.input.charCodeAt(t.position),b===f)return t.position++,t.tag=s,t.anchor=u,t.kind=m?"mapping":"sequence",t.result=l,!0;r?b===44&&Zt(t,"expected the node content, but found ','"):Zt(t,"missed comma between flow collection entries"),v=y=x=null,d=p=!1,b===63&&(h=t.input.charCodeAt(t.position+1),Os(h)&&(d=p=!0,t.position++,Ci(t,!0,e))),n=t.line,i=t.lineStart,a=t.position,wm(t,e,IT,!1,!0),v=t.tag,y=t.result,Ci(t,!0,e),b=t.input.charCodeAt(t.position),(p||t.line===n)&&b===58&&(d=!0,b=t.input.charCodeAt(++t.position),Ci(t,!0,e),wm(t,e,IT,!1,!0),x=t.result),m?Tm(t,l,g,v,y,x,n,i,a):d?l.push(Tm(t,null,g,v,y,x,n,i,a)):l.push(y),Ci(t,!0,e),b=t.input.charCodeAt(t.position),b===44?(r=!0,b=t.input.charCodeAt(++t.position)):r=!1}Zt(t,"unexpected end of the stream within a flow collection")}function dLe(t,e){var r,n,i=QL,a=!1,s=!1,l=e,u=0,h=!1,f,d;if(d=t.input.charCodeAt(t.position),d===124)n=!1;else if(d===62)n=!0;else return!1;for(t.kind="scalar",t.result="";d!==0;)if(d=t.input.charCodeAt(++t.position),d===43||d===45)QL===i?i=d===43?OQ:eLe:Zt(t,"repeat of a chomping mode identifier");else if((f=sLe(d))>=0)f===0?Zt(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?Zt(t,"repeat of an indentation width identifier"):(l=e+f-1,s=!0);else break;if(Yd(d)){do d=t.input.charCodeAt(++t.position);while(Yd(d));if(d===35)do d=t.input.charCodeAt(++t.position);while(!bc(d)&&d!==0)}for(;d!==0;){for(i9(t),t.lineIndent=0,d=t.input.charCodeAt(t.position);(!s||t.lineIndentl&&(l=t.lineIndent),bc(d)){u++;continue}if(t.lineIndente)&&u!==0)Zt(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(v&&(s=t.line,l=t.lineStart,u=t.position),wm(t,e,OT,!0,i)&&(v?g=t.result:y=t.result),v||(Tm(t,d,p,m,g,y,s,l,u),m=g=y=null),Ci(t,!0,-1),b=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&b!==0)Zt(t,"bad indentation of a mapping entry");else if(t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),d=0,p=t.implicitTypes.length;d"),t.result!==null&&g.kind!==t.kind&&Zt(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+g.kind+'", not "'+t.kind+'"'),g.resolve(t.result,t.tag)?(t.result=g.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Zt(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||f}function vLe(t){var e=t.position,r,n,i,a=!1,s;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(s=t.input.charCodeAt(t.position))!==0&&(Ci(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||s!==37));){for(a=!0,s=t.input.charCodeAt(++t.position),r=t.position;s!==0&&!Os(s);)s=t.input.charCodeAt(++t.position);for(n=t.input.slice(r,t.position),i=[],n.length<1&&Zt(t,"directive name must not be less than one character in length");s!==0;){for(;Yd(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!bc(s));break}if(bc(s))break;for(r=t.position;s!==0&&!Os(s);)s=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}s!==0&&i9(t),Xh.call(FQ,n)?FQ[n](t,n,i):PT(t,'unknown document directive "'+n+'"')}if(Ci(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Ci(t,!0,-1)):a&&Zt(t,"directives end mark is expected"),wm(t,t.lineIndent-1,OT,!1,!0),Ci(t,!0,-1),t.checkLineBreaks&&rLe.test(t.input.slice(e,t.position))&&PT(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&$T(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Ci(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var n=lZ(t,r);if(typeof e!="function")return n;for(var i=0,a=n.length;i=55296&&r<=56319&&e+1=56320&&n<=57343)?(r-55296)*1024+n-56320+65536:r}function Nj(t){var e=/^\n* /;return e.test(t)}function jAe(t,e,r,n,i,a,s,l){var u,h=0,f=null,d=!1,p=!1,m=n!==-1,g=-1,y=YAe(s2(t,0))&&XAe(s2(t,t.length-1));if(e||s)for(u=0;u=65536?u+=2:u++){if(h=s2(t,u),!u2(h))return im;y=y&&ij(h,f,l),f=h}else{for(u=0;u=65536?u+=2:u++){if(h=s2(t,u),h===l2)d=!0,m&&(p=p||u-g-1>n&&t[g+1]!==" ",g=u);else if(!u2(h))return im;y=y&&ij(h,f,l),f=h}p=p||m&&u-g-1>n&&t[g+1]!==" "}return!d&&!p?y&&!s&&!i(t)?Mj:a===c2?im:lD:r>9&&Nj(t)?im:s?a===c2?im:lD:p?Oj:Ij}function KAe(t,e,r,n,i){t.dump=function(){if(e.length===0)return t.quotingType===c2?'""':"''";if(!t.noCompatMode&&(zAe.indexOf(e)!==-1||GAe.test(e)))return t.quotingType===c2?'"'+e+'"':"'"+e+"'";var a=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),l=n||t.flowLevel>-1&&r>=t.flowLevel;function u(h){return qAe(t,h)}switch(o(u,"testAmbiguity"),jAe(e,l,t.indent,s,u,t.quotingType,t.forceQuotes&&!n,i)){case Mj:return e;case lD:return"'"+e.replace(/'/g,"''")+"'";case Ij:return"|"+aj(e,t.indent)+sj(rj(e,a));case Oj:return">"+aj(e,t.indent)+sj(rj(QAe(e,s),a));case im:return'"'+ZAe(e)+'"';default:throw new Ds("impossible error: invalid scalar style")}}()}function aj(t,e){var r=Nj(t)?String(e):"",n=t[t.length-1]===` +`&&(a+=r),a+=s;return a}function e9(t,e){return` +`+Pi.repeat(" ",t.indent*e)}function qLe(t,e){var r,n,i;for(r=0,n=t.implicitTypes.length;r=55296&&r<=56319&&e+1=56320&&n<=57343)?(r-55296)*1024+n-56320+65536:r}function yZ(t){var e=/^\n* /;return e.test(t)}function XLe(t,e,r,n,i,a,s,l){var u,h=0,f=null,d=!1,p=!1,m=n!==-1,g=-1,y=WLe(y2(t,0))&&YLe(y2(t,t.length-1));if(e||s)for(u=0;u=65536?u+=2:u++){if(h=y2(t,u),!T2(h))return xm;y=y&&UQ(h,f,l),f=h}else{for(u=0;u=65536?u+=2:u++){if(h=y2(t,u),h===x2)d=!0,m&&(p=p||u-g-1>n&&t[g+1]!==" ",g=u);else if(!T2(h))return xm;y=y&&UQ(h,f,l),f=h}p=p||m&&u-g-1>n&&t[g+1]!==" "}return!d&&!p?y&&!s&&!i(t)?vZ:a===b2?xm:t9:r>9&&yZ(t)?xm:s?a===b2?xm:t9:p?bZ:xZ}function jLe(t,e,r,n,i){t.dump=(function(){if(e.length===0)return t.quotingType===b2?'""':"''";if(!t.noCompatMode&&($Le.indexOf(e)!==-1||zLe.test(e)))return t.quotingType===b2?'"'+e+'"':"'"+e+"'";var a=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),l=n||t.flowLevel>-1&&r>=t.flowLevel;function u(h){return qLe(t,h)}switch(o(u,"testAmbiguity"),XLe(e,l,t.indent,s,u,t.quotingType,t.forceQuotes&&!n,i)){case vZ:return e;case t9:return"'"+e.replace(/'/g,"''")+"'";case xZ:return"|"+HQ(e,t.indent)+qQ(GQ(e,a));case bZ:return">"+HQ(e,t.indent)+qQ(GQ(KLe(e,s),a));case xm:return'"'+QLe(e)+'"';default:throw new Is("impossible error: invalid scalar style")}})()}function HQ(t,e){var r=yZ(t)?String(e):"",n=t[t.length-1]===` `,i=n&&(t[t.length-2]===` `||t===` `),a=i?"+":n?"":"-";return r+a+` -`}function sj(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function QAe(t,e){for(var r=/(\n+)([^\n]*)/g,n=function(){var h=t.indexOf(` -`);return h=h!==-1?h:t.length,r.lastIndex=h,oj(t.slice(0,h),e)}(),i=t[0]===` +`}function qQ(t){return t[t.length-1]===` +`?t.slice(0,-1):t}function KLe(t,e){for(var r=/(\n+)([^\n]*)/g,n=(function(){var h=t.indexOf(` +`);return h=h!==-1?h:t.length,r.lastIndex=h,WQ(t.slice(0,h),e)})(),i=t[0]===` `||t[0]===" ",a,s;s=r.exec(t);){var l=s[1],u=s[2];a=u[0]===" ",n+=l+(!i&&!a&&u!==""?` -`:"")+oj(u,e),i=a}return n}function oj(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,n,i=0,a,s=0,l=0,u="";n=r.exec(t);)l=n.index,l-i>e&&(a=s>i?s:l,u+=` +`:"")+WQ(u,e),i=a}return n}function WQ(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,n,i=0,a,s=0,l=0,u="";n=r.exec(t);)l=n.index,l-i>e&&(a=s>i?s:l,u+=` `+t.slice(i,a),i=a+1),s=l;return u+=` `,t.length-i>e&&s>i?u+=t.slice(i,s)+` -`+t.slice(s+1):u+=t.slice(i),u.slice(1)}function ZAe(t){for(var e="",r=0,n,i=0;i=65536?i+=2:i++)r=s2(t,i),n=Da[r],!n&&u2(r)?(e+=t[i],r>=65536&&(e+=t[i+1])):e+=n||UAe(r);return e}function JAe(t,e,r){var n="",i=t.tag,a,s,l;for(a=0,s=r.length;a"u"&&Au(t,e,null,!1,!1))&&(n!==""&&(n+=","+(t.condenseFlow?"":" ")),n+=t.dump);t.tag=i,t.dump="["+n+"]"}function lj(t,e,r,n){var i="",a=t.tag,s,l,u;for(s=0,l=r.length;s"u"&&Au(t,e+1,null,!0,!0,!1,!0))&&((!n||i!=="")&&(i+=oD(t,e)),t.dump&&l2===t.dump.charCodeAt(0)?i+="-":i+="- ",i+=t.dump);t.tag=a,t.dump=i||"[]"}function e8e(t,e,r){var n="",i=t.tag,a=Object.keys(r),s,l,u,h,f;for(s=0,l=a.length;s1024&&(f+="? "),f+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Au(t,e,h,!1,!1)&&(f+=t.dump,n+=f));t.tag=i,t.dump="{"+n+"}"}function t8e(t,e,r,n){var i="",a=t.tag,s=Object.keys(r),l,u,h,f,d,p;if(t.sortKeys===!0)s.sort();else if(typeof t.sortKeys=="function")s.sort(t.sortKeys);else if(t.sortKeys)throw new Ds("sortKeys must be a boolean or a function");for(l=0,u=s.length;l1024,d&&(t.dump&&l2===t.dump.charCodeAt(0)?p+="?":p+="? "),p+=t.dump,d&&(p+=oD(t,e)),Au(t,e+1,f,!0,d)&&(t.dump&&l2===t.dump.charCodeAt(0)?p+=":":p+=": ",p+=t.dump,i+=p));t.tag=a,t.dump=i||"{}"}function cj(t,e,r){var n,i,a,s,l,u;for(i=r?t.explicitTypes:t.implicitTypes,a=0,s=i.length;a tag resolver accepts not "'+u+'" style');t.dump=n}return!0}return!1}function Au(t,e,r,n,i,a,s){t.tag=null,t.dump=r,cj(t,r,!1)||cj(t,r,!0);var l=Sj.call(t.dump),u=n,h;n&&(n=t.flowLevel<0||t.flowLevel>e);var f=l==="[object Object]"||l==="[object Array]",d,p;if(f&&(d=t.duplicates.indexOf(r),p=d!==-1),(t.tag!==null&&t.tag!=="?"||p||t.indent!==2&&e>0)&&(i=!1),p&&t.usedDuplicates[d])t.dump="*ref_"+d;else{if(f&&p&&!t.usedDuplicates[d]&&(t.usedDuplicates[d]=!0),l==="[object Object]")n&&Object.keys(t.dump).length!==0?(t8e(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(e8e(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object Array]")n&&t.dump.length!==0?(t.noArrayIndent&&!s&&e>0?lj(t,e-1,t.dump,i):lj(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(JAe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object String]")t.tag!=="?"&&KAe(t,t.dump,e,a,u);else{if(l==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new Ds("unacceptable kind of an object to dump "+l)}t.tag!==null&&t.tag!=="?"&&(h=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",t.dump=h+" "+t.dump)}return!0}function r8e(t,e){var r=[],n=[],i,a;for(cD(t,r,n),i=0,a=n.length;i{"use strict";o(uj,"isNothing");o($Ce,"isObject");o(zCe,"toArray");o(GCe,"extend");o(VCe,"repeat");o(UCe,"isNegativeZero");HCe=uj,WCe=$Ce,qCe=zCe,YCe=VCe,XCe=UCe,jCe=GCe,$i={isNothing:HCe,isObject:WCe,toArray:qCe,repeat:YCe,isNegativeZero:XCe,extend:jCe};o(hj,"formatError");o(o2,"YAMLException$1");o2.prototype=Object.create(Error.prototype);o2.prototype.constructor=o2;o2.prototype.toString=o(function(e){return this.name+": "+hj(this,e)},"toString");Ds=o2;o(rD,"getLine");o(nD,"padStart");o(KCe,"makeSnippet");QCe=KCe,ZCe=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],JCe=["scalar","sequence","mapping"];o(e7e,"compileStyleAliases");o(t7e,"Type$1");_a=t7e;o(jX,"compileList");o(r7e,"compileMap");o(aD,"Schema$1");aD.prototype.extend=o(function(e){var r=[],n=[];if(e instanceof _a)n.push(e);else if(Array.isArray(e))n=n.concat(e);else if(e&&(Array.isArray(e.implicit)||Array.isArray(e.explicit)))e.implicit&&(r=r.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit));else throw new Ds("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof _a))throw new Ds("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new Ds("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new Ds("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof _a))throw new Ds("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(aD.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=jX(i,"implicit"),i.compiledExplicit=jX(i,"explicit"),i.compiledTypeMap=r7e(i.compiledImplicit,i.compiledExplicit),i},"extend");n7e=aD,i7e=new _a("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(t){return t!==null?t:""},"construct")}),a7e=new _a("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(t){return t!==null?t:[]},"construct")}),s7e=new _a("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(t){return t!==null?t:{}},"construct")}),o7e=new n7e({explicit:[i7e,a7e,s7e]});o(l7e,"resolveYamlNull");o(c7e,"constructYamlNull");o(u7e,"isNull");h7e=new _a("tag:yaml.org,2002:null",{kind:"scalar",resolve:l7e,construct:c7e,predicate:u7e,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(f7e,"resolveYamlBoolean");o(d7e,"constructYamlBoolean");o(p7e,"isBoolean");m7e=new _a("tag:yaml.org,2002:bool",{kind:"scalar",resolve:f7e,construct:d7e,predicate:p7e,represent:{lowercase:o(function(t){return t?"true":"false"},"lowercase"),uppercase:o(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(g7e,"isHexCode");o(y7e,"isOctCode");o(v7e,"isDecCode");o(x7e,"resolveYamlInteger");o(b7e,"constructYamlInteger");o(w7e,"isInteger");T7e=new _a("tag:yaml.org,2002:int",{kind:"scalar",resolve:x7e,construct:b7e,predicate:w7e,represent:{binary:o(function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:o(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:o(function(t){return t.toString(10)},"decimal"),hexadecimal:o(function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),k7e=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(E7e,"resolveYamlFloat");o(S7e,"constructYamlFloat");C7e=/^[-+]?[0-9]+e/;o(A7e,"representYamlFloat");o(_7e,"isFloat");D7e=new _a("tag:yaml.org,2002:float",{kind:"scalar",resolve:E7e,construct:S7e,predicate:_7e,represent:A7e,defaultStyle:"lowercase"}),fj=o7e.extend({implicit:[h7e,m7e,T7e,D7e]}),L7e=fj,dj=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),pj=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");o(R7e,"resolveYamlTimestamp");o(N7e,"constructYamlTimestamp");o(M7e,"representYamlTimestamp");I7e=new _a("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:R7e,construct:N7e,instanceOf:Date,represent:M7e});o(O7e,"resolveYamlMerge");P7e=new _a("tag:yaml.org,2002:merge",{kind:"scalar",resolve:O7e}),uD=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;o(B7e,"resolveYamlBinary");o(F7e,"constructYamlBinary");o($7e,"representYamlBinary");o(z7e,"isBinary");G7e=new _a("tag:yaml.org,2002:binary",{kind:"scalar",resolve:B7e,construct:F7e,predicate:z7e,represent:$7e}),V7e=Object.prototype.hasOwnProperty,U7e=Object.prototype.toString;o(H7e,"resolveYamlOmap");o(W7e,"constructYamlOmap");q7e=new _a("tag:yaml.org,2002:omap",{kind:"sequence",resolve:H7e,construct:W7e}),Y7e=Object.prototype.toString;o(X7e,"resolveYamlPairs");o(j7e,"constructYamlPairs");K7e=new _a("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:X7e,construct:j7e}),Q7e=Object.prototype.hasOwnProperty;o(Z7e,"resolveYamlSet");o(J7e,"constructYamlSet");eAe=new _a("tag:yaml.org,2002:set",{kind:"mapping",resolve:Z7e,construct:J7e}),mj=L7e.extend({implicit:[I7e,P7e],explicit:[G7e,q7e,K7e,eAe]}),Gh=Object.prototype.hasOwnProperty,vw=1,gj=2,yj=3,xw=4,iD=1,tAe=2,KX=3,rAe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,nAe=/[\x85\u2028\u2029]/,iAe=/[,\[\]\{\}]/,vj=/^(?:!|!!|![a-z\-]+!)$/i,xj=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(QX,"_class");o(dc,"is_EOL");o(Nd,"is_WHITE_SPACE");o(Ls,"is_WS_OR_EOL");o(am,"is_FLOW_INDICATOR");o(aAe,"fromHexCode");o(sAe,"escapedHexLen");o(oAe,"fromDecimalCode");o(ZX,"simpleEscapeSequence");o(lAe,"charFromCodepoint");bj=new Array(256),wj=new Array(256);for(Rd=0;Rd<256;Rd++)bj[Rd]=ZX(Rd)?1:0,wj[Rd]=ZX(Rd);o(cAe,"State$1");o(Tj,"generateError");o(Qt,"throwError");o(bw,"throwWarning");JX={YAML:o(function(e,r,n){var i,a,s;e.version!==null&&Qt(e,"duplication of %YAML directive"),n.length!==1&&Qt(e,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),i===null&&Qt(e,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),s=parseInt(i[2],10),a!==1&&Qt(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&bw(e,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(e,r,n){var i,a;n.length!==2&&Qt(e,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],vj.test(i)||Qt(e,"ill-formed tag handle (first argument) of the TAG directive"),Gh.call(e.tagMap,i)&&Qt(e,'there is a previously declared suffix for "'+i+'" tag handle'),xj.test(a)||Qt(e,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{Qt(e,"tag prefix is malformed: "+a)}e.tagMap[i]=a},"handleTagDirective")};o(zh,"captureSegment");o(ej,"mergeMappings");o(sm,"storeMappingPair");o(hD,"readLineBreak");o(Ci,"skipSeparationSpace");o(kw,"testDocumentSeparator");o(fD,"writeFoldedLines");o(uAe,"readPlainScalar");o(hAe,"readSingleQuotedScalar");o(fAe,"readDoubleQuotedScalar");o(dAe,"readFlowCollection");o(pAe,"readBlockScalar");o(tj,"readBlockSequence");o(mAe,"readBlockMapping");o(gAe,"readTagProperty");o(yAe,"readAnchorProperty");o(vAe,"readAlias");o(om,"composeNode");o(xAe,"readDocument");o(kj,"loadDocuments");o(bAe,"loadAll$1");o(wAe,"load$1");TAe=bAe,kAe=wAe,Ej={loadAll:TAe,load:kAe},Sj=Object.prototype.toString,Cj=Object.prototype.hasOwnProperty,dD=65279,EAe=9,l2=10,SAe=13,CAe=32,AAe=33,_Ae=34,sD=35,DAe=37,LAe=38,RAe=39,NAe=42,Aj=44,MAe=45,ww=58,IAe=61,OAe=62,PAe=63,BAe=64,_j=91,Dj=93,FAe=96,Lj=123,$Ae=124,Rj=125,Da={};Da[0]="\\0";Da[7]="\\a";Da[8]="\\b";Da[9]="\\t";Da[10]="\\n";Da[11]="\\v";Da[12]="\\f";Da[13]="\\r";Da[27]="\\e";Da[34]='\\"';Da[92]="\\\\";Da[133]="\\N";Da[160]="\\_";Da[8232]="\\L";Da[8233]="\\P";zAe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],GAe=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(VAe,"compileStyleMap");o(UAe,"encodeHex");HAe=1,c2=2;o(WAe,"State");o(rj,"indentString");o(oD,"generateNextLine");o(qAe,"testImplicitResolving");o(Tw,"isWhitespace");o(u2,"isPrintable");o(nj,"isNsCharOrWhitespace");o(ij,"isPlainSafe");o(YAe,"isPlainSafeFirst");o(XAe,"isPlainSafeLast");o(s2,"codePointAt");o(Nj,"needIndentIndicator");Mj=1,lD=2,Ij=3,Oj=4,im=5;o(jAe,"chooseScalarStyle");o(KAe,"writeScalar");o(aj,"blockHeader");o(sj,"dropEndingNewline");o(QAe,"foldString");o(oj,"foldLine");o(ZAe,"escapeString");o(JAe,"writeFlowSequence");o(lj,"writeBlockSequence");o(e8e,"writeFlowMapping");o(t8e,"writeBlockMapping");o(cj,"detectType");o(Au,"writeNode");o(r8e,"getDuplicateReferences");o(cD,"inspectNode");o(n8e,"dump$1");i8e=n8e,a8e={dump:i8e};o(pD,"renamed");lm=fj,cm=Ej.load,okt=Ej.loadAll,lkt=a8e.dump,ckt=pD("safeLoad","load"),ukt=pD("safeLoadAll","loadAll"),hkt=pD("safeDump","dump")});function vD(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function Gj(t){Id=t}function nn(t,e=""){let r=typeof t=="string"?t:t.source,n={replace:o((i,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(ts.caret,"$1"),r=r.replace(i,s),n},"replace"),getRegex:o(()=>new RegExp(r,e),"getRegex")};return n}function pc(t,e){if(e){if(ts.escapeTest.test(t))return t.replace(ts.escapeReplace,Bj)}else if(ts.escapeTestNoEncode.test(t))return t.replace(ts.escapeReplaceNoEncode,Bj);return t}function Fj(t){try{t=encodeURI(t).replace(ts.percentDecode,"%")}catch{return null}return t}function $j(t,e){let r=t.replace(ts.findPipe,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),n=r.split(ts.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length=65536?i+=2:i++)r=y2(t,i),n=Ia[r],!n&&T2(r)?(e+=t[i],r>=65536&&(e+=t[i+1])):e+=n||VLe(r);return e}function ZLe(t,e,r){var n="",i=t.tag,a,s,l;for(a=0,s=r.length;a"u"&&Nu(t,e,null,!1,!1))&&(n!==""&&(n+=","+(t.condenseFlow?"":" ")),n+=t.dump);t.tag=i,t.dump="["+n+"]"}function YQ(t,e,r,n){var i="",a=t.tag,s,l,u;for(s=0,l=r.length;s"u"&&Nu(t,e+1,null,!0,!0,!1,!0))&&((!n||i!=="")&&(i+=e9(t,e)),t.dump&&x2===t.dump.charCodeAt(0)?i+="-":i+="- ",i+=t.dump);t.tag=a,t.dump=i||"[]"}function JLe(t,e,r){var n="",i=t.tag,a=Object.keys(r),s,l,u,h,f;for(s=0,l=a.length;s1024&&(f+="? "),f+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Nu(t,e,h,!1,!1)&&(f+=t.dump,n+=f));t.tag=i,t.dump="{"+n+"}"}function e9e(t,e,r,n){var i="",a=t.tag,s=Object.keys(r),l,u,h,f,d,p;if(t.sortKeys===!0)s.sort();else if(typeof t.sortKeys=="function")s.sort(t.sortKeys);else if(t.sortKeys)throw new Is("sortKeys must be a boolean or a function");for(l=0,u=s.length;l1024,d&&(t.dump&&x2===t.dump.charCodeAt(0)?p+="?":p+="? "),p+=t.dump,d&&(p+=e9(t,e)),Nu(t,e+1,f,!0,d)&&(t.dump&&x2===t.dump.charCodeAt(0)?p+=":":p+=": ",p+=t.dump,i+=p));t.tag=a,t.dump=i||"{}"}function XQ(t,e,r){var n,i,a,s,l,u;for(i=r?t.explicitTypes:t.implicitTypes,a=0,s=i.length;a tag resolver accepts not "'+u+'" style');t.dump=n}return!0}return!1}function Nu(t,e,r,n,i,a,s){t.tag=null,t.dump=r,XQ(t,r,!1)||XQ(t,r,!0);var l=uZ.call(t.dump),u=n,h;n&&(n=t.flowLevel<0||t.flowLevel>e);var f=l==="[object Object]"||l==="[object Array]",d,p;if(f&&(d=t.duplicates.indexOf(r),p=d!==-1),(t.tag!==null&&t.tag!=="?"||p||t.indent!==2&&e>0)&&(i=!1),p&&t.usedDuplicates[d])t.dump="*ref_"+d;else{if(f&&p&&!t.usedDuplicates[d]&&(t.usedDuplicates[d]=!0),l==="[object Object]")n&&Object.keys(t.dump).length!==0?(e9e(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(JLe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object Array]")n&&t.dump.length!==0?(t.noArrayIndent&&!s&&e>0?YQ(t,e-1,t.dump,i):YQ(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(ZLe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object String]")t.tag!=="?"&&jLe(t,t.dump,e,a,u);else{if(l==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new Is("unacceptable kind of an object to dump "+l)}t.tag!==null&&t.tag!=="?"&&(h=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",t.dump=h+" "+t.dump)}return!0}function t9e(t,e){var r=[],n=[],i,a;for(r9(t,r,n),i=0,a=n.length;i{"use strict";o(jQ,"isNothing");o(F_e,"isObject");o($_e,"toArray");o(z_e,"extend");o(G_e,"repeat");o(V_e,"isNegativeZero");U_e=jQ,H_e=F_e,q_e=$_e,W_e=G_e,Y_e=V_e,X_e=z_e,Pi={isNothing:U_e,isObject:H_e,toArray:q_e,repeat:W_e,isNegativeZero:Y_e,extend:X_e};o(KQ,"formatError");o(v2,"YAMLException$1");v2.prototype=Object.create(Error.prototype);v2.prototype.constructor=v2;v2.prototype.toString=o(function(e){return this.name+": "+KQ(this,e)},"toString");Is=v2;o(jL,"getLine");o(KL,"padStart");o(j_e,"makeSnippet");K_e=j_e,Q_e=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Z_e=["scalar","sequence","mapping"];o(J_e,"compileStyleAliases");o(eDe,"Type$1");Ma=eDe;o(IQ,"compileList");o(tDe,"compileMap");o(ZL,"Schema$1");ZL.prototype.extend=o(function(e){var r=[],n=[];if(e instanceof Ma)n.push(e);else if(Array.isArray(e))n=n.concat(e);else if(e&&(Array.isArray(e.implicit)||Array.isArray(e.explicit)))e.implicit&&(r=r.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit));else throw new Is("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof Ma))throw new Is("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new Is("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new Is("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof Ma))throw new Is("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(ZL.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=IQ(i,"implicit"),i.compiledExplicit=IQ(i,"explicit"),i.compiledTypeMap=tDe(i.compiledImplicit,i.compiledExplicit),i},"extend");rDe=ZL,nDe=new Ma("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(t){return t!==null?t:""},"construct")}),iDe=new Ma("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(t){return t!==null?t:[]},"construct")}),aDe=new Ma("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(t){return t!==null?t:{}},"construct")}),sDe=new rDe({explicit:[nDe,iDe,aDe]});o(oDe,"resolveYamlNull");o(lDe,"constructYamlNull");o(cDe,"isNull");uDe=new Ma("tag:yaml.org,2002:null",{kind:"scalar",resolve:oDe,construct:lDe,predicate:cDe,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(hDe,"resolveYamlBoolean");o(fDe,"constructYamlBoolean");o(dDe,"isBoolean");pDe=new Ma("tag:yaml.org,2002:bool",{kind:"scalar",resolve:hDe,construct:fDe,predicate:dDe,represent:{lowercase:o(function(t){return t?"true":"false"},"lowercase"),uppercase:o(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(mDe,"isHexCode");o(gDe,"isOctCode");o(yDe,"isDecCode");o(vDe,"resolveYamlInteger");o(xDe,"constructYamlInteger");o(bDe,"isInteger");TDe=new Ma("tag:yaml.org,2002:int",{kind:"scalar",resolve:vDe,construct:xDe,predicate:bDe,represent:{binary:o(function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:o(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:o(function(t){return t.toString(10)},"decimal"),hexadecimal:o(function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),wDe=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(kDe,"resolveYamlFloat");o(EDe,"constructYamlFloat");SDe=/^[-+]?[0-9]+e/;o(CDe,"representYamlFloat");o(ADe,"isFloat");_De=new Ma("tag:yaml.org,2002:float",{kind:"scalar",resolve:kDe,construct:EDe,predicate:ADe,represent:CDe,defaultStyle:"lowercase"}),QQ=sDe.extend({implicit:[uDe,pDe,TDe,_De]}),DDe=QQ,ZQ=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),JQ=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");o(LDe,"resolveYamlTimestamp");o(RDe,"constructYamlTimestamp");o(NDe,"representYamlTimestamp");MDe=new Ma("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:LDe,construct:RDe,instanceOf:Date,represent:NDe});o(IDe,"resolveYamlMerge");ODe=new Ma("tag:yaml.org,2002:merge",{kind:"scalar",resolve:IDe}),n9=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;o(PDe,"resolveYamlBinary");o(BDe,"constructYamlBinary");o(FDe,"representYamlBinary");o($De,"isBinary");zDe=new Ma("tag:yaml.org,2002:binary",{kind:"scalar",resolve:PDe,construct:BDe,predicate:$De,represent:FDe}),GDe=Object.prototype.hasOwnProperty,VDe=Object.prototype.toString;o(UDe,"resolveYamlOmap");o(HDe,"constructYamlOmap");qDe=new Ma("tag:yaml.org,2002:omap",{kind:"sequence",resolve:UDe,construct:HDe}),WDe=Object.prototype.toString;o(YDe,"resolveYamlPairs");o(XDe,"constructYamlPairs");jDe=new Ma("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:YDe,construct:XDe}),KDe=Object.prototype.hasOwnProperty;o(QDe,"resolveYamlSet");o(ZDe,"constructYamlSet");JDe=new Ma("tag:yaml.org,2002:set",{kind:"mapping",resolve:QDe,construct:ZDe}),eZ=DDe.extend({implicit:[MDe,ODe],explicit:[zDe,qDe,jDe,JDe]}),Xh=Object.prototype.hasOwnProperty,IT=1,tZ=2,rZ=3,OT=4,QL=1,eLe=2,OQ=3,tLe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,rLe=/[\x85\u2028\u2029]/,nLe=/[,\[\]\{\}]/,nZ=/^(?:!|!!|![a-z\-]+!)$/i,iZ=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(PQ,"_class");o(bc,"is_EOL");o(Yd,"is_WHITE_SPACE");o(Os,"is_WS_OR_EOL");o(bm,"is_FLOW_INDICATOR");o(iLe,"fromHexCode");o(aLe,"escapedHexLen");o(sLe,"fromDecimalCode");o(BQ,"simpleEscapeSequence");o(oLe,"charFromCodepoint");aZ=new Array(256),sZ=new Array(256);for(Wd=0;Wd<256;Wd++)aZ[Wd]=BQ(Wd)?1:0,sZ[Wd]=BQ(Wd);o(lLe,"State$1");o(oZ,"generateError");o(Zt,"throwError");o(PT,"throwWarning");FQ={YAML:o(function(e,r,n){var i,a,s;e.version!==null&&Zt(e,"duplication of %YAML directive"),n.length!==1&&Zt(e,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),i===null&&Zt(e,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),s=parseInt(i[2],10),a!==1&&Zt(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&PT(e,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(e,r,n){var i,a;n.length!==2&&Zt(e,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],nZ.test(i)||Zt(e,"ill-formed tag handle (first argument) of the TAG directive"),Xh.call(e.tagMap,i)&&Zt(e,'there is a previously declared suffix for "'+i+'" tag handle'),iZ.test(a)||Zt(e,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{Zt(e,"tag prefix is malformed: "+a)}e.tagMap[i]=a},"handleTagDirective")};o(Yh,"captureSegment");o($Q,"mergeMappings");o(Tm,"storeMappingPair");o(i9,"readLineBreak");o(Ci,"skipSeparationSpace");o($T,"testDocumentSeparator");o(a9,"writeFoldedLines");o(cLe,"readPlainScalar");o(uLe,"readSingleQuotedScalar");o(hLe,"readDoubleQuotedScalar");o(fLe,"readFlowCollection");o(dLe,"readBlockScalar");o(zQ,"readBlockSequence");o(pLe,"readBlockMapping");o(mLe,"readTagProperty");o(gLe,"readAnchorProperty");o(yLe,"readAlias");o(wm,"composeNode");o(vLe,"readDocument");o(lZ,"loadDocuments");o(xLe,"loadAll$1");o(bLe,"load$1");TLe=xLe,wLe=bLe,cZ={loadAll:TLe,load:wLe},uZ=Object.prototype.toString,hZ=Object.prototype.hasOwnProperty,s9=65279,kLe=9,x2=10,ELe=13,SLe=32,CLe=33,ALe=34,JL=35,_Le=37,DLe=38,LLe=39,RLe=42,fZ=44,NLe=45,BT=58,MLe=61,ILe=62,OLe=63,PLe=64,dZ=91,pZ=93,BLe=96,mZ=123,FLe=124,gZ=125,Ia={};Ia[0]="\\0";Ia[7]="\\a";Ia[8]="\\b";Ia[9]="\\t";Ia[10]="\\n";Ia[11]="\\v";Ia[12]="\\f";Ia[13]="\\r";Ia[27]="\\e";Ia[34]='\\"';Ia[92]="\\\\";Ia[133]="\\N";Ia[160]="\\_";Ia[8232]="\\L";Ia[8233]="\\P";$Le=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],zLe=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(GLe,"compileStyleMap");o(VLe,"encodeHex");ULe=1,b2=2;o(HLe,"State");o(GQ,"indentString");o(e9,"generateNextLine");o(qLe,"testImplicitResolving");o(FT,"isWhitespace");o(T2,"isPrintable");o(VQ,"isNsCharOrWhitespace");o(UQ,"isPlainSafe");o(WLe,"isPlainSafeFirst");o(YLe,"isPlainSafeLast");o(y2,"codePointAt");o(yZ,"needIndentIndicator");vZ=1,t9=2,xZ=3,bZ=4,xm=5;o(XLe,"chooseScalarStyle");o(jLe,"writeScalar");o(HQ,"blockHeader");o(qQ,"dropEndingNewline");o(KLe,"foldString");o(WQ,"foldLine");o(QLe,"escapeString");o(ZLe,"writeFlowSequence");o(YQ,"writeBlockSequence");o(JLe,"writeFlowMapping");o(e9e,"writeBlockMapping");o(XQ,"detectType");o(Nu,"writeNode");o(t9e,"getDuplicateReferences");o(r9,"inspectNode");o(r9e,"dump$1");n9e=r9e,i9e={dump:n9e};o(o9,"renamed");jh=QQ,Kh=cZ.load,A6t=cZ.loadAll,_6t=i9e.dump,D6t=o9("safeLoad","load"),L6t=o9("safeLoadAll","loadAll"),R6t=o9("safeDump","dump")});function h9(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function CZ(t){jd=t}function on(t,e=""){let r=typeof t=="string"?t:t.source,n={replace:o((i,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(as.caret,"$1"),r=r.replace(i,s),n},"replace"),getRegex:o(()=>new RegExp(r,e),"getRegex")};return n}function Tc(t,e){if(e){if(as.escapeTest.test(t))return t.replace(as.escapeReplace,wZ)}else if(as.escapeTestNoEncode.test(t))return t.replace(as.escapeReplaceNoEncode,wZ);return t}function kZ(t){try{t=encodeURI(t).replace(as.percentDecode,"%")}catch{return null}return t}function EZ(t,e){let r=t.replace(as.findPipe,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),n=r.split(as.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length0?-2:-1}function SZ(t,e,r,n,i){let a=e.href,s=e.title||null,l=t[1].replace(i.other.outputLinkReplace,"$1");n.state.inLink=!0;let u={type:t[0].charAt(0)==="!"?"image":"link",raw:r,href:a,title:s,text:l,tokens:n.inlineTokens(l)};return n.state.inLink=!1,u}function $9e(t,e,r){let n=t.match(r.other.indentCodeCompensation);if(n===null)return e;let i=n[1];return e.split(` `).map(a=>{let s=a.match(r.other.beginningSpace);if(s===null)return a;let[l]=s;return l.length>=i.length?a.slice(i.length):a}).join(` -`)}function Jr(t,e){return Md.parse(t,e)}var Id,d2,ts,s8e,o8e,l8e,m2,c8e,xD,Vj,Uj,u8e,bD,h8e,wD,f8e,d8e,Aw,TD,p8e,Hj,m8e,kD,Pj,g8e,y8e,v8e,x8e,Wj,b8e,_w,ED,qj,w8e,Yj,T8e,k8e,E8e,Xj,S8e,C8e,jj,A8e,_8e,D8e,L8e,R8e,N8e,M8e,Cw,I8e,Kj,Qj,O8e,SD,P8e,gD,B8e,Sw,h2,F8e,Bj,hm,Al,fm,p2,_l,um,yD,Md,dkt,pkt,mkt,gkt,ykt,vkt,xkt,Zj=N(()=>{"use strict";o(vD,"_getDefaults");Id=vD();o(Gj,"changeDefaults");d2={exec:o(()=>null,"exec")};o(nn,"edit");ts={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^
    /i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:o(t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),"headingBeginRegex"),htmlBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},s8e=/^(?:[ \t]*(?:\n|$))+/,o8e=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,l8e=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,m2=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,c8e=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,xD=/(?:[*+-]|\d{1,9}[.)])/,Vj=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Uj=nn(Vj).replace(/bull/g,xD).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),u8e=nn(Vj).replace(/bull/g,xD).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),bD=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,h8e=/^[^\n]+/,wD=/(?!\s*\])(?:\\.|[^\[\]\\])+/,f8e=nn(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",wD).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),d8e=nn(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,xD).getRegex(),Aw="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",TD=/|$))/,p8e=nn("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",TD).replace("tag",Aw).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Hj=nn(bD).replace("hr",m2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Aw).getRegex(),m8e=nn(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Hj).getRegex(),kD={blockquote:m8e,code:o8e,def:f8e,fences:l8e,heading:c8e,hr:m2,html:p8e,lheading:Uj,list:d8e,newline:s8e,paragraph:Hj,table:d2,text:h8e},Pj=nn("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",m2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Aw).getRegex(),g8e={...kD,lheading:u8e,table:Pj,paragraph:nn(bD).replace("hr",m2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Pj).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Aw).getRegex()},y8e={...kD,html:nn(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",TD).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:d2,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:nn(bD).replace("hr",m2).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",Uj).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},v8e=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,x8e=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Wj=/^( {2,}|\\)\n(?!\s*$)/,b8e=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,Xj=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,S8e=nn(Xj,"u").replace(/punct/g,_w).getRegex(),C8e=nn(Xj,"u").replace(/punct/g,Yj).getRegex(),jj="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",A8e=nn(jj,"gu").replace(/notPunctSpace/g,qj).replace(/punctSpace/g,ED).replace(/punct/g,_w).getRegex(),_8e=nn(jj,"gu").replace(/notPunctSpace/g,k8e).replace(/punctSpace/g,T8e).replace(/punct/g,Yj).getRegex(),D8e=nn("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,qj).replace(/punctSpace/g,ED).replace(/punct/g,_w).getRegex(),L8e=nn(/\\(punct)/,"gu").replace(/punct/g,_w).getRegex(),R8e=nn(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),N8e=nn(TD).replace("(?:-->|$)","-->").getRegex(),M8e=nn("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",N8e).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Cw=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,I8e=nn(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",Cw).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Kj=nn(/^!?\[(label)\]\[(ref)\]/).replace("label",Cw).replace("ref",wD).getRegex(),Qj=nn(/^!?\[(ref)\](?:\[\])?/).replace("ref",wD).getRegex(),O8e=nn("reflink|nolink(?!\\()","g").replace("reflink",Kj).replace("nolink",Qj).getRegex(),SD={_backpedal:d2,anyPunctuation:L8e,autolink:R8e,blockSkip:E8e,br:Wj,code:x8e,del:d2,emStrongLDelim:S8e,emStrongRDelimAst:A8e,emStrongRDelimUnd:D8e,escape:v8e,link:I8e,nolink:Qj,punctuation:w8e,reflink:Kj,reflinkSearch:O8e,tag:M8e,text:b8e,url:d2},P8e={...SD,link:nn(/^!?\[(label)\]\((.*?)\)/).replace("label",Cw).getRegex(),reflink:nn(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Cw).getRegex()},gD={...SD,emStrongRDelimAst:_8e,emStrongLDelim:C8e,url:nn(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},Bj=o(t=>F8e[t],"getEscapeReplacement");o(pc,"escape");o(Fj,"cleanUrl");o($j,"splitCells");o(f2,"rtrim");o($8e,"findClosingBracket");o(zj,"outputLink");o(z8e,"indentCodeCompensation");hm=class{static{o(this,"_Tokenizer")}options;rules;lexer;constructor(e){this.options=e||Id}space(e){let r=this.rules.block.newline.exec(e);if(r&&r[0].length>0)return{type:"space",raw:r[0]}}code(e){let r=this.rules.block.code.exec(e);if(r){let n=r[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:r[0],codeBlockStyle:"indented",text:this.options.pedantic?n:f2(n,` -`)}}}fences(e){let r=this.rules.block.fences.exec(e);if(r){let n=r[0],i=z8e(n,r[3]||"",this.rules);return{type:"code",raw:n,lang:r[2]?r[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):r[2],text:i}}}heading(e){let r=this.rules.block.heading.exec(e);if(r){let n=r[2].trim();if(this.rules.other.endingHash.test(n)){let i=f2(n,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceChar.test(i))&&(n=i.trim())}return{type:"heading",raw:r[0],depth:r[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let r=this.rules.block.hr.exec(e);if(r)return{type:"hr",raw:f2(r[0],` -`)}}blockquote(e){let r=this.rules.block.blockquote.exec(e);if(r){let n=f2(r[0],` +`)}function nn(t,e){return Xd.parse(t,e)}var jd,C2,as,a9e,s9e,o9e,A2,l9e,f9,AZ,_Z,c9e,d9,u9e,p9,h9e,f9e,qT,m9,d9e,DZ,p9e,g9,TZ,m9e,g9e,y9e,v9e,LZ,x9e,WT,y9,RZ,b9e,NZ,T9e,w9e,k9e,MZ,E9e,S9e,IZ,C9e,A9e,_9e,D9e,L9e,R9e,N9e,VT,M9e,OZ,PZ,I9e,v9,O9e,l9,P9e,GT,k2,B9e,wZ,UT,Mu,HT,x9,Iu,S2,z9e,Xd,M6t,I6t,O6t,P6t,B6t,F6t,$6t,BZ=N(()=>{"use strict";o(h9,"L");jd=h9();o(CZ,"G");C2={exec:o(()=>null,"exec")};o(on,"h");as={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:o(t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),"headingBeginRegex"),htmlBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},a9e=/^(?:[ \t]*(?:\n|$))+/,s9e=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,o9e=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,A2=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,l9e=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,f9=/(?:[*+-]|\d{1,9}[.)])/,AZ=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_Z=on(AZ).replace(/bull/g,f9).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),c9e=on(AZ).replace(/bull/g,f9).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),d9=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,u9e=/^[^\n]+/,p9=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,h9e=on(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",p9).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),f9e=on(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,f9).getRegex(),qT="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",m9=/|$))/,d9e=on("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",m9).replace("tag",qT).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),DZ=on(d9).replace("hr",A2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",qT).getRegex(),p9e=on(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",DZ).getRegex(),g9={blockquote:p9e,code:s9e,def:h9e,fences:o9e,heading:l9e,hr:A2,html:d9e,lheading:_Z,list:f9e,newline:a9e,paragraph:DZ,table:C2,text:u9e},TZ=on("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",A2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",qT).getRegex(),m9e={...g9,lheading:c9e,table:TZ,paragraph:on(d9).replace("hr",A2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",TZ).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",qT).getRegex()},g9e={...g9,html:on(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",m9).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:C2,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:on(d9).replace("hr",A2).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",_Z).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},y9e=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,v9e=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,LZ=/^( {2,}|\\)\n(?!\s*$)/,x9e=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,MZ=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,E9e=on(MZ,"u").replace(/punct/g,WT).getRegex(),S9e=on(MZ,"u").replace(/punct/g,NZ).getRegex(),IZ="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",C9e=on(IZ,"gu").replace(/notPunctSpace/g,RZ).replace(/punctSpace/g,y9).replace(/punct/g,WT).getRegex(),A9e=on(IZ,"gu").replace(/notPunctSpace/g,w9e).replace(/punctSpace/g,T9e).replace(/punct/g,NZ).getRegex(),_9e=on("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,RZ).replace(/punctSpace/g,y9).replace(/punct/g,WT).getRegex(),D9e=on(/\\(punct)/,"gu").replace(/punct/g,WT).getRegex(),L9e=on(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),R9e=on(m9).replace("(?:-->|$)","-->").getRegex(),N9e=on("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",R9e).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),VT=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,M9e=on(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",VT).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),OZ=on(/^!?\[(label)\]\[(ref)\]/).replace("label",VT).replace("ref",p9).getRegex(),PZ=on(/^!?\[(ref)\](?:\[\])?/).replace("ref",p9).getRegex(),I9e=on("reflink|nolink(?!\\()","g").replace("reflink",OZ).replace("nolink",PZ).getRegex(),v9={_backpedal:C2,anyPunctuation:D9e,autolink:L9e,blockSkip:k9e,br:LZ,code:v9e,del:C2,emStrongLDelim:E9e,emStrongRDelimAst:C9e,emStrongRDelimUnd:_9e,escape:y9e,link:M9e,nolink:PZ,punctuation:b9e,reflink:OZ,reflinkSearch:I9e,tag:N9e,text:x9e,url:C2},O9e={...v9,link:on(/^!?\[(label)\]\((.*?)\)/).replace("label",VT).getRegex(),reflink:on(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",VT).getRegex()},l9={...v9,emStrongRDelimAst:A9e,emStrongLDelim:S9e,url:on(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},wZ=o(t=>B9e[t],"ke");o(Tc,"w");o(kZ,"J");o(EZ,"V");o(E2,"z");o(F9e,"ge");o(SZ,"fe");o($9e,"Je");UT=class{static{o(this,"y")}options;rules;lexer;constructor(t){this.options=t||jd}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:E2(r,` +`)}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let r=e[0],n=$9e(r,e[3]||"",this.rules);return{type:"code",raw:r,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:n}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let n=E2(r,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(r=n.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:E2(e[0],` +`)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let r=E2(e[0],` `).split(` -`),i="",a="",s=[];for(;n.length>0;){let l=!1,u=[],h;for(h=0;h1,a={type:"list",raw:"",ordered:i,start:i?+n.slice(0,-1):"",loose:!1,items:[]};n=i?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=i?n:"[*+-]");let s=this.rules.other.listItemRegex(n),l=!1;for(;e;){let h=!1,f="",d="";if(!(r=s.exec(e))||this.rules.block.hr.test(e))break;f=r[0],e=e.substring(f.length);let p=r[2].split(` -`,1)[0].replace(this.rules.other.listReplaceTabs,b=>" ".repeat(3*b.length)),m=e.split(` -`,1)[0],g=!p.trim(),y=0;if(this.options.pedantic?(y=2,d=p.trimStart()):g?y=r[1].length+1:(y=r[2].search(this.rules.other.nonSpaceChar),y=y>4?1:y,d=p.slice(y),y+=r[1].length),g&&this.rules.other.blankLine.test(m)&&(f+=m+` -`,e=e.substring(m.length+1),h=!0),!h){let b=this.rules.other.nextBulletRegex(y),w=this.rules.other.hrRegex(y),C=this.rules.other.fencesBeginRegex(y),T=this.rules.other.headingBeginRegex(y),E=this.rules.other.htmlBeginRegex(y);for(;e;){let A=e.split(` -`,1)[0],S;if(m=A,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting," "),S=m):S=m.replace(this.rules.other.tabCharGlobal," "),C.test(m)||T.test(m)||E.test(m)||b.test(m)||w.test(m))break;if(S.search(this.rules.other.nonSpaceChar)>=y||!m.trim())d+=` -`+S.slice(y);else{if(g||p.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||C.test(p)||T.test(p)||w.test(p))break;d+=` -`+m}!g&&!m.trim()&&(g=!0),f+=A+` -`,e=e.substring(A.length+1),p=S.slice(y)}}a.loose||(l?a.loose=!0:this.rules.other.doubleBlankLine.test(f)&&(l=!0));let v=null,x;this.options.gfm&&(v=this.rules.other.listIsTask.exec(d),v&&(x=v[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,""))),a.items.push({type:"list_item",raw:f,task:!!v,checked:x,loose:!1,text:d,tokens:[]}),a.raw+=f}let u=a.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;a.raw=a.raw.trimEnd();for(let h=0;hp.type==="space"),d=f.length>0&&f.some(p=>this.rules.other.anyLine.test(p.raw));a.loose=d}if(a.loose)for(let h=0;h({text:u,tokens:this.lexer.inline(u),header:!1,align:s.align[h]})));return s}}lheading(e){let r=this.rules.block.lheading.exec(e);if(r)return{type:"heading",raw:r[0],depth:r[2].charAt(0)==="="?1:2,text:r[1],tokens:this.lexer.inline(r[1])}}paragraph(e){let r=this.rules.block.paragraph.exec(e);if(r){let n=r[1].charAt(r[1].length-1)===` -`?r[1].slice(0,-1):r[1];return{type:"paragraph",raw:r[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let r=this.rules.block.text.exec(e);if(r)return{type:"text",raw:r[0],text:r[0],tokens:this.lexer.inline(r[0])}}escape(e){let r=this.rules.inline.escape.exec(e);if(r)return{type:"escape",raw:r[0],text:r[1]}}tag(e){let r=this.rules.inline.tag.exec(e);if(r)return!this.lexer.state.inLink&&this.rules.other.startATag.test(r[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(r[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(r[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(r[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:r[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:r[0]}}link(e){let r=this.rules.inline.link.exec(e);if(r){let n=r[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=f2(n.slice(0,-1),"\\");if((n.length-s.length)%2===0)return}else{let s=$8e(r[2],"()");if(s>-1){let u=(r[0].indexOf("!")===0?5:4)+r[1].length+s;r[2]=r[2].substring(0,s),r[0]=r[0].substring(0,u).trim(),r[3]=""}}let i=r[2],a="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(i);s&&(i=s[1],a=s[3])}else a=r[3]?r[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?i=i.slice(1):i=i.slice(1,-1)),zj(r,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:a&&a.replace(this.rules.inline.anyPunctuation,"$1")},r[0],this.lexer,this.rules)}}reflink(e,r){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let i=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),a=r[i.toLowerCase()];if(!a){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return zj(n,a,n[0],this.lexer,this.rules)}}emStrong(e,r,n=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!i||i[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(i[1]||i[2]||"")||!n||this.rules.inline.punctuation.exec(n)){let s=[...i[0]].length-1,l,u,h=s,f=0,d=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,r=r.slice(-1*e.length+s);(i=d.exec(r))!=null;){if(l=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!l)continue;if(u=[...l].length,i[3]||i[4]){h+=u;continue}else if((i[5]||i[6])&&s%3&&!((s+u)%3)){f+=u;continue}if(h-=u,h>0)continue;u=Math.min(u,u+h+f);let p=[...i[0]][0].length,m=e.slice(0,s+i.index+p+u);if(Math.min(s,u)%2){let y=m.slice(1,-1);return{type:"em",raw:m,text:y,tokens:this.lexer.inlineTokens(y)}}let g=m.slice(2,-2);return{type:"strong",raw:m,text:g,tokens:this.lexer.inlineTokens(g)}}}}codespan(e){let r=this.rules.inline.code.exec(e);if(r){let n=r[2].replace(this.rules.other.newLineCharGlobal," "),i=this.rules.other.nonSpaceChar.test(n),a=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return i&&a&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:r[0],text:n}}}br(e){let r=this.rules.inline.br.exec(e);if(r)return{type:"br",raw:r[0]}}del(e){let r=this.rules.inline.del.exec(e);if(r)return{type:"del",raw:r[0],text:r[2],tokens:this.lexer.inlineTokens(r[2])}}autolink(e){let r=this.rules.inline.autolink.exec(e);if(r){let n,i;return r[2]==="@"?(n=r[1],i="mailto:"+n):(n=r[1],i=n),{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let r;if(r=this.rules.inline.url.exec(e)){let n,i;if(r[2]==="@")n=r[0],i="mailto:"+n;else{let a;do a=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])?.[0]??"";while(a!==r[0]);n=r[0],r[1]==="www."?i="http://"+r[0]:i=r[0]}return{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let r=this.rules.inline.text.exec(e);if(r){let n=this.lexer.state.inRawBlock;return{type:"text",raw:r[0],text:r[0],escaped:n}}}},Al=class t{static{o(this,"_Lexer")}tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Id,this.options.tokenizer=this.options.tokenizer||new hm,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:ts,block:Sw.normal,inline:h2.normal};this.options.pedantic?(r.block=Sw.pedantic,r.inline=h2.pedantic):this.options.gfm&&(r.block=Sw.gfm,this.options.breaks?r.inline=h2.breaks:r.inline=h2.gfm),this.tokenizer.rules=r}static get rules(){return{block:Sw,inline:h2}}static lex(e,r){return new t(r).lex(e)}static lexInline(e,r){return new t(r).inlineTokens(e)}lex(e){e=e.replace(ts.carriageReturn,` -`),this.blockTokens(e,this.tokens);for(let r=0;r(i=s.call({lexer:this},e,r))?(e=e.substring(i.raw.length),r.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let s=r.at(-1);i.raw.length===1&&s!==void 0?s.raw+=` -`:r.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=` -`+i.raw,s.text+=` -`+i.text,this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=` -`+i.raw,s.text+=` -`+i.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title});continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),r.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let s=1/0,l=e.slice(1),u;this.options.extensions.startBlock.forEach(h=>{u=h.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=e.substring(0,s+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let s=r.at(-1);n&&s?.type==="paragraph"?(s.raw+=` -`+i.raw,s.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="text"?(s.raw+=` -`+i.raw,s.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(e){let s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let n=e,i=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)l.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let a=!1,s="";for(;e;){a||(s=""),a=!1;let l;if(this.options.extensions?.inline?.some(h=>(l=h.call({lexer:this},e,r))?(e=e.substring(l.raw.length),r.push(l),!0):!1))continue;if(l=this.tokenizer.escape(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.tag(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.link(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(l.raw.length);let h=r.at(-1);l.type==="text"&&h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(l=this.tokenizer.emStrong(e,n,s)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.codespan(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.br(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.del(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.autolink(e)){e=e.substring(l.raw.length),r.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(e))){e=e.substring(l.raw.length),r.push(l);continue}let u=e;if(this.options.extensions?.startInline){let h=1/0,f=e.slice(1),d;this.options.extensions.startInline.forEach(p=>{d=p.call({lexer:this},f),typeof d=="number"&&d>=0&&(h=Math.min(h,d))}),h<1/0&&h>=0&&(u=e.substring(0,h+1))}if(l=this.tokenizer.inlineText(u)){e=e.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(s=l.raw.slice(-1)),a=!0;let h=r.at(-1);h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(e){let h="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return r}},fm=class{static{o(this,"_Renderer")}options;parser;constructor(e){this.options=e||Id}space(e){return""}code({text:e,lang:r,escaped:n}){let i=(r||"").match(ts.notSpaceStart)?.[0],a=e.replace(ts.endingNewline,"")+` -`;return i?'
    '+(n?a:pc(a,!0))+`
    -`:"
    "+(n?a:pc(a,!0))+`
    -`}blockquote({tokens:e}){return`
    -${this.parser.parse(e)}
    -`}html({text:e}){return e}heading({tokens:e,depth:r}){return`${this.parser.parseInline(e)} -`}hr(e){return`
    -`}list(e){let r=e.ordered,n=e.start,i="";for(let l=0;l -`+i+" -`}listitem(e){let r="";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type==="paragraph"?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=n+" "+pc(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):r+=n+" "}return r+=this.parser.parse(e.tokens,!!e.loose),`
  • ${r}
  • -`}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    -`}table(e){let r="",n="";for(let a=0;a${i}`),` +`),n="",i="",a=[];for(;r.length>0;){let s=!1,l=[],u;for(u=0;u1,i={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");let a=this.rules.other.listItemRegex(r),s=!1;for(;t;){let u=!1,h="",f="";if(!(e=a.exec(t))||this.rules.block.hr.test(t))break;h=e[0],t=t.substring(h.length);let d=e[2].split(` +`,1)[0].replace(this.rules.other.listReplaceTabs,x=>" ".repeat(3*x.length)),p=t.split(` +`,1)[0],m=!d.trim(),g=0;if(this.options.pedantic?(g=2,f=d.trimStart()):m?g=e[1].length+1:(g=e[2].search(this.rules.other.nonSpaceChar),g=g>4?1:g,f=d.slice(g),g+=e[1].length),m&&this.rules.other.blankLine.test(p)&&(h+=p+` +`,t=t.substring(p.length+1),u=!0),!u){let x=this.rules.other.nextBulletRegex(g),b=this.rules.other.hrRegex(g),T=this.rules.other.fencesBeginRegex(g),S=this.rules.other.headingBeginRegex(g),w=this.rules.other.htmlBeginRegex(g);for(;t;){let k=t.split(` +`,1)[0],A;if(p=k,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),A=p):A=p.replace(this.rules.other.tabCharGlobal," "),T.test(p)||S.test(p)||w.test(p)||x.test(p)||b.test(p))break;if(A.search(this.rules.other.nonSpaceChar)>=g||!p.trim())f+=` +`+A.slice(g);else{if(m||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||T.test(d)||S.test(d)||b.test(d))break;f+=` +`+p}!m&&!p.trim()&&(m=!0),h+=k+` +`,t=t.substring(k.length+1),d=A.slice(g)}}i.loose||(s?i.loose=!0:this.rules.other.doubleBlankLine.test(h)&&(s=!0));let y=null,v;this.options.gfm&&(y=this.rules.other.listIsTask.exec(f),y&&(v=y[0]!=="[ ] ",f=f.replace(this.rules.other.listReplaceTask,""))),i.items.push({type:"list_item",raw:h,task:!!y,checked:v,loose:!1,text:f,tokens:[]}),i.raw+=h}let l=i.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let u=0;ud.type==="space"),f=h.length>0&&h.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=f}if(i.loose)for(let u=0;u({text:l,tokens:this.lexer.inline(l),header:!1,align:a.align[u]})));return a}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let r=e[1].charAt(e[1].length-1)===` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:r,tokens:this.lexer.inline(r)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let r=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let a=E2(r.slice(0,-1),"\\");if((r.length-a.length)%2===0)return}else{let a=F9e(e[2],"()");if(a===-2)return;if(a>-1){let s=(e[0].indexOf("!")===0?5:4)+e[1].length+a;e[2]=e[2].substring(0,a),e[0]=e[0].substring(0,s).trim(),e[3]=""}}let n=e[2],i="";if(this.options.pedantic){let a=this.rules.other.pedanticHrefTitle.exec(n);a&&(n=a[1],i=a[3])}else i=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?n=n.slice(1):n=n.slice(1,-1)),SZ(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let n=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=e[n.toLowerCase()];if(!i){let a=r[0].charAt(0);return{type:"text",raw:a,text:a}}return SZ(r,i,r[0],this.lexer,this.rules)}}emStrong(t,e,r=""){let n=this.rules.inline.emStrongLDelim.exec(t);if(!(!n||n[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[2])||!r||this.rules.inline.punctuation.exec(r))){let i=[...n[0]].length-1,a,s,l=i,u=0,h=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*t.length+i);(n=h.exec(e))!=null;){if(a=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!a)continue;if(s=[...a].length,n[3]||n[4]){l+=s;continue}else if((n[5]||n[6])&&i%3&&!((i+s)%3)){u+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l+u);let f=[...n[0]][0].length,d=t.slice(0,i+n.index+f+s);if(Math.min(i,s)%2){let m=d.slice(1,-1);return{type:"em",raw:d,text:m,tokens:this.lexer.inlineTokens(m)}}let p=d.slice(2,-2);return{type:"strong",raw:d,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(r),i=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return n&&i&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let r,n;return e[2]==="@"?(r=e[1],n="mailto:"+r):(r=e[1],n=r),{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let r,n;if(e[2]==="@")r=e[0],n="mailto:"+r;else{let i;do i=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(i!==e[0]);r=e[0],e[1]==="www."?n="http://"+e[0]:n=e[0]}return{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},Mu=class c9{static{o(this,"l")}tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||jd,this.options.tokenizer=this.options.tokenizer||new UT,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:as,block:GT.normal,inline:k2.normal};this.options.pedantic?(r.block=GT.pedantic,r.inline=k2.pedantic):this.options.gfm&&(r.block=GT.gfm,this.options.breaks?r.inline=k2.breaks:r.inline=k2.gfm),this.tokenizer.rules=r}static get rules(){return{block:GT,inline:k2}}static lex(e,r){return new c9(r).lex(e)}static lexInline(e,r){return new c9(r).inlineTokens(e)}lex(e){e=e.replace(as.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let r=0;r(i=s.call({lexer:this},e,r))?(e=e.substring(i.raw.length),r.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let s=r.at(-1);i.raw.length===1&&s!==void 0?s.raw+=` +`:r.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.text,this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},r.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),r.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let s=1/0,l=e.slice(1),u;this.options.extensions.startBlock.forEach(h=>{u=h.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=e.substring(0,s+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let s=r.at(-1);n&&s?.type==="paragraph"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(e){let s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let n=e,i=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)l.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,s="";for(;e;){a||(s=""),a=!1;let l;if(this.options.extensions?.inline?.some(h=>(l=h.call({lexer:this},e,r))?(e=e.substring(l.raw.length),r.push(l),!0):!1))continue;if(l=this.tokenizer.escape(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.tag(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.link(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(l.raw.length);let h=r.at(-1);l.type==="text"&&h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(l=this.tokenizer.emStrong(e,n,s)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.codespan(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.br(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.del(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.autolink(e)){e=e.substring(l.raw.length),r.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(e))){e=e.substring(l.raw.length),r.push(l);continue}let u=e;if(this.options.extensions?.startInline){let h=1/0,f=e.slice(1),d;this.options.extensions.startInline.forEach(p=>{d=p.call({lexer:this},f),typeof d=="number"&&d>=0&&(h=Math.min(h,d))}),h<1/0&&h>=0&&(u=e.substring(0,h+1))}if(l=this.tokenizer.inlineText(u)){e=e.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(s=l.raw.slice(-1)),a=!0;let h=r.at(-1);h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(e){let h="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return r}},HT=class{static{o(this,"P")}options;parser;constructor(t){this.options=t||jd}space(t){return""}code({text:t,lang:e,escaped:r}){let n=(e||"").match(as.notSpaceStart)?.[0],i=t.replace(as.endingNewline,"")+` +`;return n?'
    '+(r?i:Tc(i,!0))+`
    +`:"
    "+(r?i:Tc(i,!0))+`
    +`}blockquote({tokens:t}){return`
    +${this.parser.parse(t)}
    +`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`${this.parser.parseInline(t)} +`}hr(t){return`
    +`}list(t){let e=t.ordered,r=t.start,n="";for(let s=0;s +`+n+" +`}listitem(t){let e="";if(t.task){let r=this.checkbox({checked:!!t.checked});t.loose?t.tokens[0]?.type==="paragraph"?(t.tokens[0].text=r+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&t.tokens[0].tokens[0].type==="text"&&(t.tokens[0].tokens[0].text=r+" "+Tc(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):e+=r+" "}return e+=this.parser.parse(t.tokens,!!t.loose),`
  • ${e}
  • +`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    +`}table(t){let e="",r="";for(let i=0;i${n}`),`
    -`+r+` -`+i+`
    -`}tablerow({text:e}){return` -${e} -`}tablecell(e){let r=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+r+` -`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${pc(e,!0)}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:r,tokens:n}){let i=this.parser.parseInline(n),a=Fj(e);if(a===null)return i;e=a;let s='
    ",s}image({href:e,title:r,text:n}){let i=Fj(e);if(i===null)return pc(n);e=i;let a=`${n}{let l=a[s].flat(1/0);n=n.concat(this.walkTokens(l,r))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,r)))}}return n}use(...e){let r=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let s=r.renderers[a.name];s?r.renderers[a.name]=function(...l){let u=a.renderer.apply(this,l);return u===!1&&(u=s.apply(this,l)),u}:r.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let s=r[a.level];s?s.unshift(a.tokenizer):r[a.level]=[a.tokenizer],a.start&&(a.level==="block"?r.startBlock?r.startBlock.push(a.start):r.startBlock=[a.start]:a.level==="inline"&&(r.startInline?r.startInline.push(a.start):r.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(r.childTokens[a.name]=a.childTokens)}),i.extensions=r),n.renderer){let a=this.defaults.renderer||new fm(this.defaults);for(let s in n.renderer){if(!(s in a))throw new Error(`renderer '${s}' does not exist`);if(["options","parser"].includes(s))continue;let l=s,u=n.renderer[l],h=a[l];a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d||""}}i.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new hm(this.defaults);for(let s in n.tokenizer){if(!(s in a))throw new Error(`tokenizer '${s}' does not exist`);if(["options","rules","lexer"].includes(s))continue;let l=s,u=n.tokenizer[l],h=a[l];a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d}}i.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new um;for(let s in n.hooks){if(!(s in a))throw new Error(`hook '${s}' does not exist`);if(["options","block"].includes(s))continue;let l=s,u=n.hooks[l],h=a[l];um.passThroughHooks.has(s)?a[l]=f=>{if(this.defaults.async)return Promise.resolve(u.call(a,f)).then(p=>h.call(a,p));let d=u.call(a,f);return h.call(a,d)}:a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d}}i.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,s=n.walkTokens;i.walkTokens=function(l){let u=[];return u.push(s.call(this,l)),a&&(u=u.concat(a.call(this,l))),u}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,r){return Al.lex(e,r??this.defaults)}parser(e,r){return _l.parse(e,r??this.defaults)}parseMarkdown(e){return o((n,i)=>{let a={...i},s={...this.defaults,...a},l=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&a.async===!1)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));s.hooks&&(s.hooks.options=s,s.hooks.block=e);let u=s.hooks?s.hooks.provideLexer():e?Al.lex:Al.lexInline,h=s.hooks?s.hooks.provideParser():e?_l.parse:_l.parseInline;if(s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(n):n).then(f=>u(f,s)).then(f=>s.hooks?s.hooks.processAllTokens(f):f).then(f=>s.walkTokens?Promise.all(this.walkTokens(f,s.walkTokens)).then(()=>f):f).then(f=>h(f,s)).then(f=>s.hooks?s.hooks.postprocess(f):f).catch(l);try{s.hooks&&(n=s.hooks.preprocess(n));let f=u(n,s);s.hooks&&(f=s.hooks.processAllTokens(f)),s.walkTokens&&this.walkTokens(f,s.walkTokens);let d=h(f,s);return s.hooks&&(d=s.hooks.postprocess(d)),d}catch(f){return l(f)}},"parse")}onError(e,r){return n=>{if(n.message+=` -Please report this to https://github.com/markedjs/marked.`,e){let i="

    An error occurred:

    "+pc(n.message+"",!0)+"
    ";return r?Promise.resolve(i):i}if(r)return Promise.reject(n);throw n}}},Md=new yD;o(Jr,"marked");Jr.options=Jr.setOptions=function(t){return Md.setOptions(t),Jr.defaults=Md.defaults,Gj(Jr.defaults),Jr};Jr.getDefaults=vD;Jr.defaults=Id;Jr.use=function(...t){return Md.use(...t),Jr.defaults=Md.defaults,Gj(Jr.defaults),Jr};Jr.walkTokens=function(t,e){return Md.walkTokens(t,e)};Jr.parseInline=Md.parseInline;Jr.Parser=_l;Jr.parser=_l.parse;Jr.Renderer=fm;Jr.TextRenderer=p2;Jr.Lexer=Al;Jr.lexer=Al.lex;Jr.Tokenizer=hm;Jr.Hooks=um;Jr.parse=Jr;dkt=Jr.options,pkt=Jr.setOptions,mkt=Jr.use,gkt=Jr.walkTokens,ykt=Jr.parseInline,vkt=_l.parse,xkt=Al.lex});function G8e(t,{markdownAutoWrap:e}){let n=t.replace(//g,` +`+e+` +`+n+` +`}tablerow({text:t}){return` +${t} +`}tablecell(t){let e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+` +`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${Tc(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:r}){let n=this.parser.parseInline(r),i=kZ(t);if(i===null)return n;t=i;let a='
    ",a}image({href:t,title:e,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let i=kZ(t);if(i===null)return Tc(r);t=i;let a=`${r}{let s=i[a].flat(1/0);r=r.concat(this.walkTokens(s,e))}):i.tokens&&(r=r.concat(this.walkTokens(i.tokens,e)))}}return r}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(r=>{let n={...r};if(n.async=this.defaults.async||n.async||!1,r.extensions&&(r.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let a=e.renderers[i.name];a?e.renderers[i.name]=function(...s){let l=i.renderer.apply(this,s);return l===!1&&(l=a.apply(this,s)),l}:e.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let a=e[i.level];a?a.unshift(i.tokenizer):e[i.level]=[i.tokenizer],i.start&&(i.level==="block"?e.startBlock?e.startBlock.push(i.start):e.startBlock=[i.start]:i.level==="inline"&&(e.startInline?e.startInline.push(i.start):e.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(e.childTokens[i.name]=i.childTokens)}),n.extensions=e),r.renderer){let i=this.defaults.renderer||new HT(this.defaults);for(let a in r.renderer){if(!(a in i))throw new Error(`renderer '${a}' does not exist`);if(["options","parser"].includes(a))continue;let s=a,l=r.renderer[s],u=i[s];i[s]=(...h)=>{let f=l.apply(i,h);return f===!1&&(f=u.apply(i,h)),f||""}}n.renderer=i}if(r.tokenizer){let i=this.defaults.tokenizer||new UT(this.defaults);for(let a in r.tokenizer){if(!(a in i))throw new Error(`tokenizer '${a}' does not exist`);if(["options","rules","lexer"].includes(a))continue;let s=a,l=r.tokenizer[s],u=i[s];i[s]=(...h)=>{let f=l.apply(i,h);return f===!1&&(f=u.apply(i,h)),f}}n.tokenizer=i}if(r.hooks){let i=this.defaults.hooks||new S2;for(let a in r.hooks){if(!(a in i))throw new Error(`hook '${a}' does not exist`);if(["options","block"].includes(a))continue;let s=a,l=r.hooks[s],u=i[s];S2.passThroughHooks.has(a)?i[s]=h=>{if(this.defaults.async&&S2.passThroughHooksRespectAsync.has(a))return Promise.resolve(l.call(i,h)).then(d=>u.call(i,d));let f=l.call(i,h);return u.call(i,f)}:i[s]=(...h)=>{let f=l.apply(i,h);return f===!1&&(f=u.apply(i,h)),f}}n.hooks=i}if(r.walkTokens){let i=this.defaults.walkTokens,a=r.walkTokens;n.walkTokens=function(s){let l=[];return l.push(a.call(this,s)),i&&(l=l.concat(i.call(this,s))),l}}this.defaults={...this.defaults,...n}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Mu.lex(t,e??this.defaults)}parser(t,e){return Iu.parse(t,e??this.defaults)}parseMarkdown(t){return(e,r)=>{let n={...r},i={...this.defaults,...n},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&n.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=t);let s=i.hooks?i.hooks.provideLexer():t?Mu.lex:Mu.lexInline,l=i.hooks?i.hooks.provideParser():t?Iu.parse:Iu.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(e):e).then(u=>s(u,i)).then(u=>i.hooks?i.hooks.processAllTokens(u):u).then(u=>i.walkTokens?Promise.all(this.walkTokens(u,i.walkTokens)).then(()=>u):u).then(u=>l(u,i)).then(u=>i.hooks?i.hooks.postprocess(u):u).catch(a);try{i.hooks&&(e=i.hooks.preprocess(e));let u=s(e,i);i.hooks&&(u=i.hooks.processAllTokens(u)),i.walkTokens&&this.walkTokens(u,i.walkTokens);let h=l(u,i);return i.hooks&&(h=i.hooks.postprocess(h)),h}catch(u){return a(u)}}}onError(t,e){return r=>{if(r.message+=` +Please report this to https://github.com/markedjs/marked.`,t){let n="

    An error occurred:

    "+Tc(r.message+"",!0)+"
    ";return e?Promise.resolve(n):n}if(e)return Promise.reject(r);throw r}}},Xd=new z9e;o(nn,"d");nn.options=nn.setOptions=function(t){return Xd.setOptions(t),nn.defaults=Xd.defaults,CZ(nn.defaults),nn};nn.getDefaults=h9;nn.defaults=jd;nn.use=function(...t){return Xd.use(...t),nn.defaults=Xd.defaults,CZ(nn.defaults),nn};nn.walkTokens=function(t,e){return Xd.walkTokens(t,e)};nn.parseInline=Xd.parseInline;nn.Parser=Iu;nn.parser=Iu.parse;nn.Renderer=HT;nn.TextRenderer=x9;nn.Lexer=Mu;nn.lexer=Mu.lex;nn.Tokenizer=UT;nn.Hooks=S2;nn.parse=nn;M6t=nn.options,I6t=nn.setOptions,O6t=nn.use,P6t=nn.walkTokens,B6t=nn.parseInline,F6t=Iu.parse,$6t=Mu.lex});function G9e(t,{markdownAutoWrap:e}){let n=t.replace(//g,` `).replace(/\n{2,}/g,` -`),i=B4(n);return e===!1?i.replace(/ /g," "):i}function Jj(t,e={}){let r=G8e(t,e),n=Jr.lexer(r),i=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(` -`).forEach((f,d)=>{d!==0&&(a++,i.push([])),f.split(" ").forEach(p=>{p=p.replace(/'/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),n.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}),i}function eK(t,{markdownAutoWrap:e}={}){let r=Jr.lexer(t);function n(i){return i.type==="text"?e===!1?i.text.replace(/\n */g,"
    ").replace(/ /g," "):i.text.replace(/\n */g,"
    "):i.type==="strong"?`${i.tokens?.map(n).join("")}`:i.type==="em"?`${i.tokens?.map(n).join("")}`:i.type==="paragraph"?`

    ${i.tokens?.map(n).join("")}

    `:i.type==="space"?"":i.type==="html"?`${i.text}`:i.type==="escape"?i.text:`Unsupported markdown: ${i.type}`}return o(n,"output"),r.map(n).join("")}var tK=N(()=>{"use strict";Zj();PC();o(G8e,"preprocessMarkdown");o(Jj,"markdownToLines");o(eK,"markdownToHTML")});function V8e(t){return Intl.Segmenter?[...new Intl.Segmenter().segment(t)].map(e=>e.segment):[...t]}function U8e(t,e){let r=V8e(e.content);return rK(t,[],r,e.type)}function rK(t,e,r,n){if(r.length===0)return[{content:e.join(""),type:n},{content:"",type:n}];let[i,...a]=r,s=[...e,i];return t([{content:s.join(""),type:n}])?rK(t,s,a,n):(e.length===0&&i&&(e.push(i),r.shift()),[{content:e.join(""),type:n},{content:r.join(""),type:n}])}function nK(t,e){if(t.some(({content:r})=>r.includes(` -`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return CD(t,e)}function CD(t,e,r=[],n=[]){if(t.length===0)return n.length>0&&r.push(n),r.length>0?r:[];let i="";t[0].content===" "&&(i=" ",t.shift());let a=t.shift()??{content:" ",type:"normal"},s=[...n];if(i!==""&&s.push({content:i,type:"normal"}),s.push(a),e(s))return CD(t,e,r,s);if(n.length>0)r.push(n),t.unshift(a);else if(a.content){let[l,u]=U8e(e,a);r.push([l]),u.content&&t.unshift(u)}return CD(t,e,r)}var iK=N(()=>{"use strict";o(V8e,"splitTextToChars");o(U8e,"splitWordToFitWidth");o(rK,"splitWordToFitWidthRecursion");o(nK,"splitLineToFitWidth");o(CD,"splitLineToFitWidthRecursion")});function aK(t,e){e&&t.attr("style",e)}async function H8e(t,e,r,n,i=!1){let a=t.append("foreignObject");a.attr("width",`${10*r}px`),a.attr("height",`${10*r}px`);let s=a.append("xhtml:div"),l=e.label;e.label&&pi(e.label)&&(l=await mh(e.label.replace(Ze.lineBreakRegex,` -`),me()));let u=e.isNode?"nodeLabel":"edgeLabel",h=s.append("span");h.html(l),aK(h,e.labelStyle),h.attr("class",`${u} ${n}`),aK(s,e.labelStyle),s.style("display","table-cell"),s.style("white-space","nowrap"),s.style("line-height","1.5"),s.style("max-width",r+"px"),s.style("text-align","center"),s.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&s.attr("class","labelBkg");let f=s.node().getBoundingClientRect();return f.width===r&&(s.style("display","table"),s.style("white-space","break-spaces"),s.style("width",r+"px"),f=s.node().getBoundingClientRect()),a.node()}function AD(t,e,r){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em")}function W8e(t,e,r){let n=t.append("text"),i=AD(n,1,e);_D(i,r);let a=i.node().getComputedTextLength();return n.remove(),a}function sK(t,e,r){let n=t.append("text"),i=AD(n,1,e);_D(i,[{content:r,type:"normal"}]);let a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function q8e(t,e,r,n=!1){let a=e.append("g"),s=a.insert("rect").attr("class","background").attr("style","stroke: none"),l=a.append("text").attr("y","-10.1"),u=0;for(let h of r){let f=o(p=>W8e(a,1.1,p)<=t,"checkWidth"),d=f(h)?[h]:nK(h,f);for(let p of d){let m=AD(l,u,1.1);_D(m,p),u++}}if(n){let h=l.node().getBBox(),f=2;return s.attr("x",h.x-f).attr("y",h.y-f).attr("width",h.width+2*f).attr("height",h.height+2*f),a.node()}else return l.node()}function _D(t,e){t.text(""),e.forEach((r,n)=>{let i=t.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");n===0?i.text(r.content):i.text(" "+r.content)})}function DD(t){return t.replace(/fa[bklrs]?:fa-[\w-]+/g,e=>``)}var Hn,to=N(()=>{"use strict";zt();gr();dr();vt();tK();ir();iK();o(aK,"applyStyle");o(H8e,"addHtmlSpan");o(AD,"createTspan");o(W8e,"computeWidthOfText");o(sK,"computeDimensionOfText");o(q8e,"createFormattedText");o(_D,"updateTextContentAndStyles");o(DD,"replaceIconSubstring");Hn=o(async(t,e="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,isNode:s=!0,width:l=200,addSvgBackground:u=!1}={},h)=>{if(Y.debug("XYZ createText",e,r,n,i,a,s,"addSvgBackground: ",u),a){let f=eK(e,h),d=DD(na(f)),p=e.replace(/\\\\/g,"\\"),m={isNode:s,label:pi(e)?p:d,labelStyle:r.replace("fill:","color:")};return await H8e(t,m,l,i,u)}else{let f=e.replace(//g,"
    "),d=Jj(f.replace("
    ","
    "),h),p=q8e(l,t,d,e?u:!1);if(s){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");Ge(p).attr("style",m)}else{let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");Ge(p).select("rect").attr("style",m.replace(/background:/g,"fill:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");Ge(p).select("text").attr("style",g)}return p}},"createText")});function Xt(t){let e=t.map((r,n)=>`${n===0?"M":"L"}${r.x},${r.y}`);return e.push("Z"),e.join(" ")}function Fo(t,e,r,n,i,a){let s=[],u=r-t,h=n-e,f=u/a,d=2*Math.PI/f,p=e+h/2;for(let m=0;m<=50;m++){let g=m/50,y=t+g*u,v=p+i*Math.sin(d*(y-t));s.push({x:y,y:v})}return s}function Lw(t,e,r,n,i,a){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;d{"use strict";to();zt();dr();Ya();gr();ir();pt=o(async(t,e,r)=>{let n,i=e.useHtmlLabels||fr(me()?.htmlLabels);r?n=r:n="node default";let a=t.insert("g").attr("class",n).attr("id",e.domId||e.id),s=a.insert("g").attr("class","label").attr("style",$n(e.labelStyle)),l;e.label===void 0?l="":l=typeof e.label=="string"?e.label:e.label[0];let u=await Hn(s,Tr(na(l),me()),{useHtmlLabels:i,width:e.width||me().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img}),h=u.getBBox(),f=(e?.padding??0)/2;if(i){let d=u.children[0],p=Ge(u),m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=me().fontSize?me().fontSize:window.getComputedStyle(document.body).fontSize,w=5,[C=or.fontSize]=Bo(b),T=C*w+"px";y.style.minWidth=T,y.style.maxWidth=T}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}return i?s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):s.attr("transform","translate(0, "+-h.height/2+")"),e.centerLabel&&s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:h,halfPadding:f,label:s}},"labelHelper"),Dw=o(async(t,e,r)=>{let n=r.useHtmlLabels||fr(me()?.flowchart?.htmlLabels),i=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await Hn(i,Tr(na(e),me()),{useHtmlLabels:n,width:r.width||me()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(fr(me()?.flowchart?.htmlLabels)){let u=a.children[0],h=Ge(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}return n?i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):i.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),i.insert("rect",":first-child"),{shapeSvg:t,bbox:s,halfPadding:l,label:i}},"insertLabel"),je=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),ht=o((t,e)=>(t.look==="handDrawn"?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");o(Xt,"createPathFromPoints");o(Fo,"generateFullSineWavePoints");o(Lw,"generateCirclePoints")});function Y8e(t,e){return t.intersect(e)}var oK,lK=N(()=>{"use strict";o(Y8e,"intersectNode");oK=Y8e});function X8e(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(X8e,"intersectEllipse");Rw=X8e});function j8e(t,e,r){return Rw(t,e,e,r)}var cK,uK=N(()=>{"use strict";LD();o(j8e,"intersectCircle");cK=j8e});function K8e(t,e,r,n){var i,a,s,l,u,h,f,d,p,m,g,y,v,x,b;if(i=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&hK(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,f=a*t.x+l*t.y+h,d=a*e.x+l*e.y+h,!(f!==0&&d!==0&&hK(f,d))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function hK(t,e){return t*e>0}var fK,dK=N(()=>{"use strict";o(K8e,"intersectLine");o(hK,"sameSign");fK=K8e});function Q8e(t,e,r){let n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(f){s=Math.min(s,f.x),l=Math.min(l,f.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));let u=n-t.width/2-s,h=i-t.height/2-l;for(let f=0;f1&&a.sort(function(f,d){let p=f.x-r.x,m=f.y-r.y,g=Math.sqrt(p*p+m*m),y=d.x-r.x,v=d.y-r.y,x=Math.sqrt(y*y+v*v);return g{"use strict";dK();o(Q8e,"intersectPolygon");pK=Q8e});var Z8e,Vh,RD=N(()=>{"use strict";Z8e=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),Vh=Z8e});var Ye,Ht=N(()=>{"use strict";lK();uK();LD();mK();RD();Ye={node:oK,circle:cK,ellipse:Rw,polygon:pK,rect:Vh}});var gK,mc,J8e,ND,Qe,Ke,Ut=N(()=>{"use strict";zt();gK=o(t=>{let{handDrawnSeed:e}=me();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),mc=o(t=>{let e=J8e([...t.cssCompiledStyles||[],...t.cssStyles||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),J8e=o(t=>{let e=new Map;return t.forEach(r=>{let[n,i]=r.split(":");e.set(n.trim(),i?.trim())}),e},"styles2Map"),ND=o(t=>t==="color"||t==="font-size"||t==="font-family"||t==="font-weight"||t==="font-style"||t==="text-decoration"||t==="text-align"||t==="text-transform"||t==="line-height"||t==="letter-spacing"||t==="word-spacing"||t==="text-shadow"||t==="text-overflow"||t==="white-space"||t==="word-wrap"||t==="word-break"||t==="overflow-wrap"||t==="hyphens","isLabelStyle"),Qe=o(t=>{let{stylesArray:e}=mc(t),r=[],n=[],i=[],a=[];return e.forEach(s=>{let l=s[0];ND(l)?r.push(s.join(":")+" !important"):(n.push(s.join(":")+" !important"),l.includes("stroke")&&i.push(s.join(":")+" !important"),l==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:e,borderStyles:i,backgroundStyles:a}},"styles2String"),Ke=o((t,e)=>{let{themeVariables:r,handDrawnSeed:n}=me(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=mc(t);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||i,seed:n,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0]},e)},"userNodeOverrides")});function MD(t,e,r){if(t&&t.length){let[n,i]=e,a=Math.PI/180*r,s=Math.cos(a),l=Math.sin(a);for(let u of t){let[h,f]=u;u[0]=(h-n)*s-(f-i)*l+n,u[1]=(h-n)*l+(f-i)*s+i}}}function e_e(t,e){return t[0]===e[0]&&t[1]===e[1]}function t_e(t,e,r,n=1){let i=r,a=Math.max(e,.1),s=t[0]&&t[0][0]&&typeof t[0][0]=="number"?[t]:t,l=[0,0];if(i)for(let h of s)MD(h,l,i);let u=function(h,f,d){let p=[];for(let b of h){let w=[...b];e_e(w[0],w[w.length-1])||w.push([w[0][0],w[0][1]]),w.length>2&&p.push(w)}let m=[];f=Math.max(f,.1);let g=[];for(let b of p)for(let w=0;wb.yminw.ymin?1:b.xw.x?1:b.ymax===w.ymax?0:(b.ymax-w.ymax)/Math.abs(b.ymax-w.ymax)),!g.length)return m;let y=[],v=g[0].ymin,x=0;for(;y.length||g.length;){if(g.length){let b=-1;for(let w=0;wv);w++)b=w;g.splice(0,b+1).forEach(w=>{y.push({s:v,edge:w})})}if(y=y.filter(b=>!(b.edge.ymax<=v)),y.sort((b,w)=>b.edge.x===w.edge.x?0:(b.edge.x-w.edge.x)/Math.abs(b.edge.x-w.edge.x)),(d!==1||x%f==0)&&y.length>1)for(let b=0;b=y.length)break;let C=y[b].edge,T=y[w].edge;m.push([[Math.round(C.x),v],[Math.round(T.x),v]])}v+=d,y.forEach(b=>{b.edge.x=b.edge.x+d*b.edge.islope}),x++}return m}(s,a,n);if(i){for(let h of s)MD(h,l,-i);(function(h,f,d){let p=[];h.forEach(m=>p.push(...m)),MD(p,f,d)})(u,l,-i)}return u}function x2(t,e){var r;let n=e.hachureAngle+90,i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.round(Math.max(i,.1));let a=1;return e.roughness>=1&&(((r=e.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=i),t_e(t,i,n,a||1)}function zw(t){let e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}function OD(t,e){return t.type===e}function jD(t){let e=[],r=function(s){let l=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))l[l.length]={type:r_e,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];l[l.length]={type:ID,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return l[l.length]={type:yK,text:""},l}(t),n="BOD",i=0,a=r[i];for(;!OD(a,yK);){let s=0,l=[];if(n==="BOD"){if(a.text!=="M"&&a.text!=="m")return jD("M0,0"+t);i++,s=Nw[a.text],n=a.text}else OD(a,ID)?s=Nw[n]:(i++,s=Nw[a.text],n=a.text);if(!(i+sf%2?h+r:h+e);a.push({key:"C",data:u}),e=u[4],r=u[5];break}case"Q":a.push({key:"Q",data:[...l]}),e=l[2],r=l[3];break;case"q":{let u=l.map((h,f)=>f%2?h+r:h+e);a.push({key:"Q",data:u}),e=u[2],r=u[3];break}case"A":a.push({key:"A",data:[...l]}),e=l[5],r=l[6];break;case"a":e+=l[5],r+=l[6],a.push({key:"A",data:[l[0],l[1],l[2],l[3],l[4],e,r]});break;case"H":a.push({key:"H",data:[...l]}),e=l[0];break;case"h":e+=l[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...l]}),r=l[0];break;case"v":r+=l[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...l]}),e=l[2],r=l[3];break;case"s":{let u=l.map((h,f)=>f%2?h+r:h+e);a.push({key:"S",data:u}),e=u[2],r=u[3];break}case"T":a.push({key:"T",data:[...l]}),e=l[0],r=l[1];break;case"t":e+=l[0],r+=l[1],a.push({key:"T",data:[e,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=n,r=i}return a}function CK(t){let e=[],r="",n=0,i=0,a=0,s=0,l=0,u=0;for(let{key:h,data:f}of t){switch(h){case"M":e.push({key:"M",data:[...f]}),[n,i]=f,[a,s]=f;break;case"C":e.push({key:"C",data:[...f]}),n=f[4],i=f[5],l=f[2],u=f[3];break;case"L":e.push({key:"L",data:[...f]}),[n,i]=f;break;case"H":n=f[0],e.push({key:"L",data:[n,i]});break;case"V":i=f[0],e.push({key:"L",data:[n,i]});break;case"S":{let d=0,p=0;r==="C"||r==="S"?(d=n+(n-l),p=i+(i-u)):(d=n,p=i),e.push({key:"C",data:[d,p,...f]}),l=f[0],u=f[1],n=f[2],i=f[3];break}case"T":{let[d,p]=f,m=0,g=0;r==="Q"||r==="T"?(m=n+(n-l),g=i+(i-u)):(m=n,g=i);let y=n+2*(m-n)/3,v=i+2*(g-i)/3,x=d+2*(m-d)/3,b=p+2*(g-p)/3;e.push({key:"C",data:[y,v,x,b,d,p]}),l=m,u=g,n=d,i=p;break}case"Q":{let[d,p,m,g]=f,y=n+2*(d-n)/3,v=i+2*(p-i)/3,x=m+2*(d-m)/3,b=g+2*(p-g)/3;e.push({key:"C",data:[y,v,x,b,m,g]}),l=d,u=p,n=m,i=g;break}case"A":{let d=Math.abs(f[0]),p=Math.abs(f[1]),m=f[2],g=f[3],y=f[4],v=f[5],x=f[6];d===0||p===0?(e.push({key:"C",data:[n,i,v,x,v,x]}),n=v,i=x):(n!==v||i!==x)&&(AK(n,i,v,x,d,p,m,g,y).forEach(function(b){e.push({key:"C",data:b})}),n=v,i=x);break}case"Z":e.push({key:"Z",data:[]}),n=a,i=s}r=h}return e}function g2(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function AK(t,e,r,n,i,a,s,l,u,h){let f=(d=s,Math.PI*d/180);var d;let p=[],m=0,g=0,y=0,v=0;if(h)[m,g,y,v]=h;else{[t,e]=g2(t,e,-f),[r,n]=g2(r,n,-f);let L=(t-r)/2,R=(e-n)/2,O=L*L/(i*i)+R*R/(a*a);O>1&&(O=Math.sqrt(O),i*=O,a*=O);let M=i*i,B=a*a,F=M*B-M*R*R-B*L*L,P=M*R*R+B*L*L,z=(l===u?-1:1)*Math.sqrt(Math.abs(F/P));y=z*i*R/a+(t+r)/2,v=z*-a*L/i+(e+n)/2,m=Math.asin(parseFloat(((e-v)/a).toFixed(9))),g=Math.asin(parseFloat(((n-v)/a).toFixed(9))),tg&&(m-=2*Math.PI),!u&&g>m&&(g-=2*Math.PI)}let x=g-m;if(Math.abs(x)>120*Math.PI/180){let L=g,R=r,O=n;g=u&&g>m?m+120*Math.PI/180*1:m+120*Math.PI/180*-1,p=AK(r=y+i*Math.cos(g),n=v+a*Math.sin(g),R,O,i,a,s,0,u,[g,L,y,v])}x=g-m;let b=Math.cos(m),w=Math.sin(m),C=Math.cos(g),T=Math.sin(g),E=Math.tan(x/4),A=4/3*i*E,S=4/3*a*E,_=[t,e],I=[t+A*w,e-S*b],D=[r+A*T,n-S*C],k=[r,n];if(I[0]=2*_[0]-I[0],I[1]=2*_[1]-I[1],h)return[I,D,k].concat(p);{p=[I,D,k].concat(p);let L=[];for(let R=0;R2){let i=[];for(let a=0;a2*Math.PI&&(m=0,g=2*Math.PI);let y=2*Math.PI/u.curveStepCount,v=Math.min(y/2,(g-m)/2),x=kK(v,h,f,d,p,m,g,1,u);if(!u.disableMultiStroke){let b=kK(v,h,f,d,p,m,g,1.5,u);x.push(...b)}return s&&(l?x.push(...Uh(h,f,h+d*Math.cos(m),f+p*Math.sin(m),u),...Uh(h,f,h+d*Math.cos(g),f+p*Math.sin(g),u)):x.push({op:"lineTo",data:[h,f]},{op:"lineTo",data:[h+d*Math.cos(m),f+p*Math.sin(m)]})),{type:"path",ops:x}}function bK(t,e){let r=CK(SK(jD(t))),n=[],i=[0,0],a=[0,0];for(let{key:s,data:l}of r)switch(s){case"M":a=[l[0],l[1]],i=[l[0],l[1]];break;case"L":n.push(...Uh(a[0],a[1],l[0],l[1],e)),a=[l[0],l[1]];break;case"C":{let[u,h,f,d,p,m]=l;n.push(...a_e(u,h,f,d,p,m,a,e)),a=[p,m];break}case"Z":n.push(...Uh(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]]}return{type:"path",ops:n}}function PD(t,e){let r=[];for(let n of t)if(n.length){let i=e.maxRandomnessOffset||0,a=n.length;if(a>2){r.push({op:"move",data:[n[0][0]+nr(i,e),n[0][1]+nr(i,e)]});for(let s=1;s500?.4:-.0016668*u+1.233334;let f=i.maxRandomnessOffset||0;f*f*100>l&&(f=u/10);let d=f/2,p=.2+.2*LK(i),m=i.bowing*i.maxRandomnessOffset*(n-e)/200,g=i.bowing*i.maxRandomnessOffset*(t-r)/200;m=nr(m,i,h),g=nr(g,i,h);let y=[],v=o(()=>nr(d,i,h),"M"),x=o(()=>nr(f,i,h),"k"),b=i.preserveVertices;return a&&(s?y.push({op:"move",data:[t+(b?0:v()),e+(b?0:v())]}):y.push({op:"move",data:[t+(b?0:nr(f,i,h)),e+(b?0:nr(f,i,h))]})),s?y.push({op:"bcurveTo",data:[m+t+(r-t)*p+v(),g+e+(n-e)*p+v(),m+t+2*(r-t)*p+v(),g+e+2*(n-e)*p+v(),r+(b?0:v()),n+(b?0:v())]}):y.push({op:"bcurveTo",data:[m+t+(r-t)*p+x(),g+e+(n-e)*p+x(),m+t+2*(r-t)*p+x(),g+e+2*(n-e)*p+x(),r+(b?0:x()),n+(b?0:x())]}),y}function Mw(t,e,r){if(!t.length)return[];let n=[];n.push([t[0][0]+nr(e,r),t[0][1]+nr(e,r)]),n.push([t[0][0]+nr(e,r),t[0][1]+nr(e,r)]);for(let i=1;i3){let a=[],s=1-r.curveTightness;i.push({op:"move",data:[t[1][0],t[1][1]]});for(let l=1;l+21&&i.push(l)):i.push(l),i.push(t[e+3])}else{let u=t[e+0],h=t[e+1],f=t[e+2],d=t[e+3],p=Od(u,h,.5),m=Od(h,f,.5),g=Od(f,d,.5),y=Od(p,m,.5),v=Od(m,g,.5),x=Od(y,v,.5);qD([u,p,y,x],0,r,i),qD([x,v,g,d],0,r,i)}var a,s;return i}function o_e(t,e){return $w(t,0,t.length,e)}function $w(t,e,r,n,i){let a=i||[],s=t[e],l=t[r-1],u=0,h=1;for(let f=e+1;fu&&(u=d,h=f)}return Math.sqrt(u)>n?($w(t,e,h+1,n,a),$w(t,h,r,n,a)):(a.length||a.push(s),a.push(l)),a}function BD(t,e=.15,r){let n=[],i=(t.length-1)/3;for(let a=0;a0?$w(n,0,n.length,r):n}var v2,FD,$D,zD,GD,VD,Rs,UD,r_e,ID,yK,Nw,n_e,ro,pm,YD,Iw,XD,Xe,Wt=N(()=>{"use strict";o(MD,"t");o(e_e,"e");o(t_e,"s");o(x2,"n");v2=class{static{o(this,"o")}constructor(e){this.helper=e}fillPolygons(e,r){return this._fillPolygons(e,r)}_fillPolygons(e,r){let n=x2(e,r);return{type:"fillSketch",ops:this.renderLines(n,r)}}renderLines(e,r){let n=[];for(let i of e)n.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],r));return n}};o(zw,"a");FD=class extends v2{static{o(this,"h")}fillPolygons(e,r){let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=x2(e,Object.assign({},r,{hachureGap:n})),a=Math.PI/180*r.hachureAngle,s=[],l=.5*n*Math.cos(a),u=.5*n*Math.sin(a);for(let[h,f]of i)zw([h,f])&&s.push([[h[0]-l,h[1]+u],[...f]],[[h[0]+l,h[1]-u],[...f]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},$D=class extends v2{static{o(this,"r")}fillPolygons(e,r){let n=this._fillPolygons(e,r),i=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(e,i);return n.ops=n.ops.concat(a.ops),n}},zD=class{static{o(this,"i")}constructor(e){this.helper=e}fillPolygons(e,r){let n=x2(e,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(n,r)}dotsOnLines(e,r){let n=[],i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);let s=i/4;for(let l of e){let u=zw(l),h=u/i,f=Math.ceil(h)-1,d=u-f*i,p=(l[0][0]+l[1][0])/2-i/4,m=Math.min(l[0][1],l[1][1]);for(let g=0;g{let l=zw(s),u=Math.floor(l/(n+i)),h=(l+i-u*(n+i))/2,f=s[0],d=s[1];f[0]>d[0]&&(f=s[1],d=s[0]);let p=Math.atan((d[1]-f[1])/(d[0]-f[0]));for(let m=0;m{let s=zw(a),l=Math.round(s/(2*r)),u=a[0],h=a[1];u[0]>h[0]&&(u=a[1],h=a[0]);let f=Math.atan((h[1]-u[1])/(h[0]-u[0]));for(let d=0;d2*Math.PI&&(A=0,S=2*Math.PI);let _=(S-A)/b.curveStepCount,I=[];for(let D=A;D<=S;D+=_)I.push([w+T*Math.cos(D),C+E*Math.sin(D)]);return I.push([w+T*Math.cos(S),C+E*Math.sin(S)]),I.push([w,C]),dm([I],b)}(e,r,n,i,a,s,h));return h.stroke!==ro&&f.push(d),this._d("arc",f,h)}curve(e,r){let n=this._o(r),i=[],a=vK(e,n);if(n.fill&&n.fill!==ro)if(n.fillStyle==="solid"){let s=vK(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(s.ops)})}else{let s=[],l=e;if(l.length){let u=typeof l[0][0]=="number"?[l]:l;for(let h of u)h.length<3?s.push(...h):h.length===3?s.push(...BD(EK([h[0],h[0],h[1],h[2]]),10,(1+n.roughness)/2)):s.push(...BD(EK(h),10,(1+n.roughness)/2))}s.length&&i.push(dm([s],n))}return n.stroke!==ro&&i.push(a),this._d("curve",i,n)}polygon(e,r){let n=this._o(r),i=[],a=Ow(e,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(PD([e],n)):i.push(dm([e],n))),n.stroke!==ro&&i.push(a),this._d("polygon",i,n)}path(e,r){let n=this._o(r),i=[];if(!e)return this._d("path",i,n);e=(e||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let a=n.fill&&n.fill!=="transparent"&&n.fill!==ro,s=n.stroke!==ro,l=!!(n.simplification&&n.simplification<1),u=function(f,d,p){let m=CK(SK(jD(f))),g=[],y=[],v=[0,0],x=[],b=o(()=>{x.length>=4&&y.push(...BD(x,d)),x=[]},"i"),w=o(()=>{b(),y.length&&(g.push(y),y=[])},"c");for(let{key:T,data:E}of m)switch(T){case"M":w(),v=[E[0],E[1]],y.push(v);break;case"L":b(),y.push([E[0],E[1]]);break;case"C":if(!x.length){let A=y.length?y[y.length-1]:v;x.push([A[0],A[1]])}x.push([E[0],E[1]]),x.push([E[2],E[3]]),x.push([E[4],E[5]]);break;case"Z":b(),y.push([v[0],v[1]])}if(w(),!p)return g;let C=[];for(let T of g){let E=o_e(T,p);E.length&&C.push(E)}return C}(e,1,l?4-4*(n.simplification||1):(1+n.roughness)/2),h=bK(e,n);if(a)if(n.fillStyle==="solid")if(u.length===1){let f=bK(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(f.ops)})}else i.push(PD(u,n));else i.push(dm(u,n));return s&&(l?u.forEach(f=>{i.push(Ow(f,!1,n))}):i.push(h)),this._d("path",i,n)}opsToPath(e,r){let n="";for(let i of e.ops){let a=typeof r=="number"&&r>=0?i.data.map(s=>+s.toFixed(r)):i.data;switch(i.op){case"move":n+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `}}return n.trim()}toPaths(e){let r=e.sets||[],n=e.options||this.defaultOptions,i=[];for(let a of r){let s=null;switch(a.type){case"path":s={d:this.opsToPath(a),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:ro};break;case"fillPath":s={d:this.opsToPath(a),stroke:ro,strokeWidth:0,fill:n.fill||ro};break;case"fillSketch":s=this.fillSketch(a,n)}s&&i.push(s)}return i}fillSketch(e,r){let n=r.fillWeight;return n<0&&(n=r.strokeWidth/2),{d:this.opsToPath(e),stroke:r.fill||ro,strokeWidth:n,fill:ro}}_mergedShape(e){return e.filter((r,n)=>n===0||r.op!=="move")}},YD=class{static{o(this,"st")}constructor(e,r){this.canvas=e,this.ctx=this.canvas.getContext("2d"),this.gen=new pm(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.ctx,a=e.options.fixedDecimalPlaceDigits;for(let s of r)switch(s.type){case"path":i.save(),i.strokeStyle=n.stroke==="none"?"transparent":n.stroke,i.lineWidth=n.strokeWidth,n.strokeLineDash&&i.setLineDash(n.strokeLineDash),n.strokeLineDashOffset&&(i.lineDashOffset=n.strokeLineDashOffset),this._drawToContext(i,s,a),i.restore();break;case"fillPath":{i.save(),i.fillStyle=n.fill||"";let l=e.shape==="curve"||e.shape==="polygon"||e.shape==="path"?"evenodd":"nonzero";this._drawToContext(i,s,a,l),i.restore();break}case"fillSketch":this.fillSketch(i,s,n)}}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2),e.save(),n.fillLineDash&&e.setLineDash(n.fillLineDash),n.fillLineDashOffset&&(e.lineDashOffset=n.fillLineDashOffset),e.strokeStyle=n.fill||"",e.lineWidth=i,this._drawToContext(e,r,n.fixedDecimalPlaceDigits),e.restore()}_drawToContext(e,r,n,i="nonzero"){e.beginPath();for(let a of r.ops){let s=typeof n=="number"&&n>=0?a.data.map(l=>+l.toFixed(n)):a.data;switch(a.op){case"move":e.moveTo(s[0],s[1]);break;case"bcurveTo":e.bezierCurveTo(s[0],s[1],s[2],s[3],s[4],s[5]);break;case"lineTo":e.lineTo(s[0],s[1])}}r.type==="fillPath"?e.fill(i):e.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s),s}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s),s}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s),s}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a),a}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n),n}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n),n}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h),h}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n),n}path(e,r){let n=this.gen.path(e,r);return this.draw(n),n}},Iw="http://www.w3.org/2000/svg",XD=class{static{o(this,"ot")}constructor(e,r){this.svg=e,this.gen=new pm(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(Iw,"g"),s=e.options.fixedDecimalPlaceDigits;for(let l of r){let u=null;switch(l.type){case"path":u=i.createElementNS(Iw,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke",n.stroke),u.setAttribute("stroke-width",n.strokeWidth+""),u.setAttribute("fill","none"),n.strokeLineDash&&u.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&u.setAttribute("stroke-dashoffset",`${n.strokeLineDashOffset}`);break;case"fillPath":u=i.createElementNS(Iw,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke","none"),u.setAttribute("stroke-width","0"),u.setAttribute("fill",n.fill||""),e.shape!=="curve"&&e.shape!=="polygon"||u.setAttribute("fill-rule","evenodd");break;case"fillSketch":u=this.fillSketch(i,l,n)}u&&a.appendChild(u)}return a}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2);let a=e.createElementNS(Iw,"path");return a.setAttribute("d",this.opsToPath(r,n.fixedDecimalPlaceDigits)),a.setAttribute("stroke",n.fill||""),a.setAttribute("stroke-width",i+""),a.setAttribute("fill","none"),n.fillLineDash&&a.setAttribute("stroke-dasharray",n.fillLineDash.join(" ").trim()),n.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${n.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(e,r){return this.gen.opsToPath(e,r)}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s)}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s)}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s)}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a)}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n)}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n)}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h)}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n)}path(e,r){let n=this.gen.path(e,r);return this.draw(n)}},Xe={canvas:o((t,e)=>new YD(t,e),"canvas"),svg:o((t,e)=>new XD(t,e),"svg"),generator:o(t=>new pm(t),"generator"),newSeed:o(()=>pm.newSeed(),"newSeed")}});function RK(t,e){let{labelStyles:r}=Qe(e);e.labelStyle=r;let n=ht(e),i=n;n||(i="anchor");let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=1,{cssStyles:l}=e,u=Xe.svg(a),h=Ke(e,{fill:"black",stroke:"none",fillStyle:"solid"});e.look!=="handDrawn"&&(h.roughness=0);let f=u.circle(0,0,s*2,h),d=a.insert(()=>f,":first-child");return d.attr("class","anchor").attr("style",$n(l)),je(e,d),e.intersect=function(p){return Y.info("Circle intersect",e,s,p),Ye.circle(e,s,p)},a}var NK=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();ir();o(RK,"anchor")});function MK(t,e,r,n,i,a,s){let u=(t+r)/2,h=(e+n)/2,f=Math.atan2(n-e,r-t),d=(r-t)/2,p=(n-e)/2,m=d/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(f)*(s?-1:1),b=h-v*i*Math.cos(f)*(s?-1:1),w=Math.atan2((e-b)/a,(t-x)/i),T=Math.atan2((n-b)/a,(r-x)/i)-w;s&&T<0&&(T+=2*Math.PI),!s&&T>0&&(T-=2*Math.PI);let E=[];for(let A=0;A<20;A++){let S=A/19,_=w+S*T,I=x+i*Math.cos(_),D=b+a*Math.sin(_);E.push({x:I,y:D})}return E}async function IK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.width+e.padding+20,l=a.height+e.padding,u=l/2,h=u/(2.5+l/50),{cssStyles:f}=e,d=[{x:s/2,y:-l/2},{x:-s/2,y:-l/2},...MK(-s/2,-l/2,-s/2,l/2,h,u,!1),{x:s/2,y:l/2},...MK(s/2,l/2,s/2,-l/2,h,u,!0)],p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Xt(d),y=p.path(g,m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(${h/2}, 0)`),je(e,v),e.intersect=function(x){return Ye.polygon(e,d,x)},i}var OK=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(MK,"generateArcPoints");o(IK,"bowTieRect")});function La(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var _u=N(()=>{"use strict";o(La,"insertPolygonShape")});async function PK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.height+e.padding,l=12,u=a.width+e.padding+l,h=0,f=u,d=-s,p=0,m=[{x:h+l,y:d},{x:f,y:d},{x:f,y:p},{x:h,y:p},{x:h,y:d+l},{x:h+l,y:d}],g,{cssStyles:y}=e;if(e.look==="handDrawn"){let v=Xe.svg(i),x=Ke(e,{}),b=Xt(m),w=v.path(b,x);g=i.insert(()=>w,":first-child").attr("transform",`translate(${-u/2}, ${s/2})`),y&&g.attr("style",y)}else g=La(i,u,s,m);return n&&g.attr("style",n),je(e,g),e.intersect=function(v){return Ye.polygon(e,m,v)},i}var BK=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();Ft();o(PK,"card")});function FK(t,e){let{nodeStyles:r}=Qe(e);e.label="";let n=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),{cssStyles:i}=e,a=Math.max(28,e.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],l=Xe.svg(n),u=Ke(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=Xt(s),f=l.path(h,u),d=n.insert(()=>f,":first-child");return i&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",i),r&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(p){return Ye.polygon(e,s,p)},n}var $K=N(()=>{"use strict";Ht();Wt();Ut();Ft();o(FK,"choice")});async function zK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await pt(t,e,ht(e)),l=a.width/2+s,u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Xe.svg(i),d=Ke(e,{}),p=f.circle(0,0,l*2,d);u=i.insert(()=>p,":first-child"),u.attr("class","basic label-container").attr("style",$n(h))}else u=i.insert("circle",":first-child").attr("class","basic label-container").attr("style",n).attr("r",l).attr("cx",0).attr("cy",0);return je(e,u),e.intersect=function(f){return Y.info("Circle intersect",e,l,f),Ye.circle(e,l,f)},i}var GK=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();ir();o(zK,"circle")});function l_e(t){let e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),n=t*2,i={x:n/2*e,y:n/2*r},a={x:-(n/2)*e,y:n/2*r},s={x:-(n/2)*e,y:-(n/2)*r},l={x:n/2*e,y:-(n/2)*r};return`M ${a.x},${a.y} L ${l.x},${l.y} - M ${i.x},${i.y} L ${s.x},${s.y}`}function VK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r,e.label="";let i=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),{cssStyles:s}=e,l=Xe.svg(i),u=Ke(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=l.circle(0,0,a*2,u),f=l_e(a),d=l.path(f,u),p=i.insert(()=>h,":first-child");return p.insert(()=>d),s&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",s),n&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",n),je(e,p),e.intersect=function(m){return Y.info("crossedCircle intersect",e,{radius:a,point:m}),Ye.circle(e,a,m)},i}var UK=N(()=>{"use strict";vt();Ft();Ut();Wt();Ht();o(l_e,"createLine");o(VK,"crossedCircle")});function Hh(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dw,":first-child").attr("stroke-opacity",0),C.insert(()=>x,":first-child"),C.attr("class","text"),f&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${h}, 0)`),s.attr("transform",`translate(${-l/2+h-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,C),e.intersect=function(T){return Ye.polygon(e,p,T)},i}var WK=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(Hh,"generateCirclePoints");o(HK,"curlyBraceLeft")});function Wh(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dw,":first-child").attr("stroke-opacity",0),C.insert(()=>x,":first-child"),C.attr("class","text"),f&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${-h}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,C),e.intersect=function(T){return Ye.polygon(e,p,T)},i}var YK=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(Wh,"generateCirclePoints");o(qK,"curlyBraceRight")});function Ra(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dA,":first-child").attr("stroke-opacity",0),S.insert(()=>b,":first-child"),S.insert(()=>T,":first-child"),S.attr("class","text"),f&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(${h-h/4}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,S),e.intersect=function(_){return Ye.polygon(e,m,_)},i}var jK=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(Ra,"generateCirclePoints");o(XK,"curlyBraces")});async function KK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=80,l=20,u=Math.max(s,(a.width+(e.padding??0)*2)*1.25,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=u,y=h,v=g-f,x=y/4,b=[{x:v,y:0},{x,y:0},{x:0,y:y/2},{x,y},{x:v,y},...Lw(-v,-y/2,f,50,270,90)],w=Xt(b),C=p.path(w,m),T=i.insert(()=>C,":first-child");return T.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),T.attr("transform",`translate(${-u/2}, ${-h/2})`),je(e,T),e.intersect=function(E){return Ye.polygon(e,b,E)},i}var QK=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(KK,"curvedTrapezoid")});async function ZK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+e.padding,e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+e.padding,e.height??0),d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Xe.svg(i),g=u_e(0,0,l,f,u,h),y=h_e(0,h,l,f,u,h),v=m.path(g,Ke(e,{})),x=m.path(y,Ke(e,{fill:"none"}));d=i.insert(()=>x,":first-child"),d=i.insert(()=>v,":first-child"),d.attr("class","basic label-container"),p&&d.attr("style",p)}else{let m=c_e(0,0,l,f,u,h);d=i.insert("path",":first-child").attr("d",m).attr("class","basic label-container").attr("style",$n(p)).attr("style",n)}return d.attr("label-offset-y",h),d.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),je(e,d),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+(e.padding??0)/1.5-(a.y-(a.top??0))})`),e.intersect=function(m){let g=Ye.rect(e,m),y=g.x-(e.x??0);if(u!=0&&(Math.abs(y)<(e.width??0)/2||Math.abs(y)==(e.width??0)/2&&Math.abs(g.y-(e.y??0))>(e.height??0)/2-h)){let v=h*h*(1-y*y/(u*u));v>0&&(v=Math.sqrt(v)),v=h-v,m.y-(e.y??0)>0&&(v=-v),g.y+=v}return g},i}var c_e,u_e,h_e,JK=N(()=>{"use strict";Ft();Ht();Ut();Wt();ir();c_e=o((t,e,r,n,i,a)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createCylinderPathD"),u_e=o((t,e,r,n,i,a)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createOuterCylinderPathD"),h_e=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(ZK,"cylinder")});async function eQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=a.width+e.padding,u=a.height+e.padding,h=u*.2,f=-l/2,d=-u/2-h/2,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d+h},{x:-f,y:d+h},{x:-f,y:-d},{x:f,y:-d},{x:f,y:d},{x:-f,y:d},{x:-f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${f+(e.padding??0)/2-(a.x-(a.left??0))}, ${d+h+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,x),e.intersect=function(b){return Ye.rect(e,b)},i}var tQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(eQ,"dividedRectangle")});async function rQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await pt(t,e,ht(e)),u=a.width/2+s+5,h=a.width/2+s,f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Xe.svg(i),m=Ke(e,{roughness:.2,strokeWidth:2.5}),g=Ke(e,{roughness:.2,strokeWidth:1.5}),y=p.circle(0,0,u*2,m),v=p.circle(0,0,h*2,g);f=i.insert("g",":first-child"),f.attr("class",$n(e.cssClasses)).attr("style",$n(d)),f.node()?.appendChild(y),f.node()?.appendChild(v)}else{f=i.insert("g",":first-child");let p=f.insert("circle",":first-child"),m=f.insert("circle");f.attr("class","basic label-container").attr("style",n),p.attr("class","outer-circle").attr("style",n).attr("r",u).attr("cx",0).attr("cy",0),m.attr("class","inner-circle").attr("style",n).attr("r",h).attr("cx",0).attr("cy",0)}return je(e,f),e.intersect=function(p){return Y.info("DoubleCircle intersect",e,u,p),Ye.circle(e,u,p)},i}var nQ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();ir();o(rQ,"doublecircle")});function iQ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.label="",e.labelStyle=n;let a=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),s=7,{cssStyles:l}=e,u=Xe.svg(a),{nodeBorder:h}=r,f=Ke(e,{fillStyle:"solid"});e.look!=="handDrawn"&&(f.roughness=0);let d=u.circle(0,0,s*2,f),p=a.insert(()=>d,":first-child");return p.selectAll("path").attr("style",`fill: ${h} !important;`),l&&l.length>0&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",l),i&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",i),je(e,p),e.intersect=function(m){return Y.info("filledCircle intersect",e,{radius:s,point:m}),Ye.circle(e,s,m)},a}var aQ=N(()=>{"use strict";Wt();vt();Ht();Ut();Ft();o(iQ,"filledCircle")});async function sQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=a.width+(e.padding??0),u=l+a.height,h=l+a.height,f=[{x:0,y:-u},{x:h,y:-u},{x:h/2,y:0}],{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Xt(f),y=p.path(g,m),v=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`);return d&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),e.width=l,e.height=u,je(e,v),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${-u/2+(e.padding??0)/2+(a.y-(a.top??0))})`),e.intersect=function(x){return Y.info("Triangle intersect",e,f,x),Ye.polygon(e,f,x)},i}var oQ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();Ft();o(sQ,"flippedTriangle")});function lQ(t,e,{dir:r,config:{state:n,themeVariables:i}}){let{nodeStyles:a}=Qe(e);e.label="";let s=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),{cssStyles:l}=e,u=Math.max(70,e?.width??0),h=Math.max(10,e?.height??0);r==="LR"&&(u=Math.max(10,e?.width??0),h=Math.max(70,e?.height??0));let f=-1*u/2,d=-1*h/2,p=Xe.svg(s),m=Ke(e,{stroke:i.lineColor,fill:i.lineColor});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(f,d,u,h,m),y=s.insert(()=>g,":first-child");l&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",a),je(e,y);let v=n?.padding??0;return e.width&&e.height&&(e.width+=v/2||0,e.height+=v/2||0),e.intersect=function(x){return Ye.rect(e,x)},s}var cQ=N(()=>{"use strict";Wt();Ht();Ut();Ft();o(lQ,"forkJoin")});async function uQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let i=80,a=50,{shapeSvg:s,bbox:l}=await pt(t,e,ht(e)),u=Math.max(i,l.width+(e.padding??0)*2,e?.width??0),h=Math.max(a,l.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Xe.svg(s),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-u/2,y:-h/2},{x:u/2-f,y:-h/2},...Lw(-u/2+f,0,f,50,90,270),{x:u/2-f,y:h/2},{x:-u/2,y:h/2}],y=Xt(g),v=p.path(y,m),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),je(e,x),e.intersect=function(b){return Y.info("Pill intersect",e,{radius:f,point:b}),Ye.polygon(e,g,b)},s}var hQ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();o(uQ,"halfRoundedRectangle")});async function fQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=4,l=a.height+e.padding,u=l/s,h=a.width+2*u+e.padding,f=[{x:u,y:0},{x:h-u,y:0},{x:h,y:-l/2},{x:h-u,y:-l},{x:u,y:-l},{x:0,y:-l/2}],d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Xe.svg(i),g=Ke(e,{}),y=f_e(0,0,h,l,u),v=m.path(y,g);d=i.insert(()=>v,":first-child").attr("transform",`translate(${-h/2}, ${l/2})`),p&&d.attr("style",p)}else d=La(i,h,l,f);return n&&d.attr("style",n),e.width=h,e.height=l,je(e,d),e.intersect=function(m){return Ye.polygon(e,f,m)},i}var f_e,dQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();f_e=o((t,e,r,n,i)=>[`M${t+i},${e}`,`L${t+r-i},${e}`,`L${t+r},${e-n/2}`,`L${t+r-i},${e-n}`,`L${t+i},${e-n}`,`L${t},${e-n/2}`,"Z"].join(" "),"createHexagonPathD");o(fQ,"hexagon")});async function pQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.label="",e.labelStyle=r;let{shapeSvg:i}=await pt(t,e,ht(e)),a=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:l}=e,u=Xe.svg(i),h=Ke(e,{});e.look!=="handDrawn"&&(h.roughness=0,h.fillStyle="solid");let f=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],d=Xt(f),p=u.path(d,h),m=i.insert(()=>p,":first-child");return m.attr("class","basic label-container"),l&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),n&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",n),m.attr("transform",`translate(${-a/2}, ${-s/2})`),je(e,m),e.intersect=function(g){return Y.info("Pill intersect",e,{points:f}),Ye.polygon(e,f,g)},i}var mQ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();o(pQ,"hourglass")});async function gQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await pt(t,e,"icon-shape default"),p=e.pos==="t",m=l,g=l,{nodeBorder:y}=r,{stylesMap:v}=mc(e),x=-g/2,b=-m/2,w=e.label?8:0,C=Xe.svg(h),T=Ke(e,{stroke:"none",fill:"none"});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let E=C.rectangle(x,b,g,m,T),A=Math.max(g,f.width),S=m+f.height+w,_=C.rectangle(-A/2,-S/2,A,S,{...T,fill:"transparent",stroke:"none"}),I=h.insert(()=>E,":first-child"),D=h.insert(()=>_);if(e.icon){let k=h.append("g");k.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let L=k.node().getBBox(),R=L.width,O=L.height,M=L.x,B=L.y;k.attr("transform",`translate(${-R/2-M},${p?f.height/2+w/2-O/2-B:-f.height/2-w/2-O/2-B})`),k.attr("style",`color: ${v.get("stroke")??y};`)}return d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${p?-S/2:S/2-f.height})`),I.attr("transform",`translate(0,${p?f.height/2+w/2:-f.height/2-w/2})`),je(e,D),e.intersect=function(k){if(Y.info("iconSquare intersect",e,k),!e.label)return Ye.rect(e,k);let L=e.x??0,R=e.y??0,O=e.height??0,M=[];return p?M=[{x:L-f.width/2,y:R-O/2},{x:L+f.width/2,y:R-O/2},{x:L+f.width/2,y:R-O/2+f.height+w},{x:L+g/2,y:R-O/2+f.height+w},{x:L+g/2,y:R+O/2},{x:L-g/2,y:R+O/2},{x:L-g/2,y:R-O/2+f.height+w},{x:L-f.width/2,y:R-O/2+f.height+w}]:M=[{x:L-g/2,y:R-O/2},{x:L+g/2,y:R-O/2},{x:L+g/2,y:R-O/2+m},{x:L+f.width/2,y:R-O/2+m},{x:L+f.width/2/2,y:R+O/2},{x:L-f.width/2,y:R+O/2},{x:L-f.width/2,y:R-O/2+m},{x:L-g/2,y:R-O/2+m}],Ye.polygon(e,M,k)},h}var yQ=N(()=>{"use strict";Wt();vt();tu();Ht();Ut();Ft();o(gQ,"icon")});async function vQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await pt(t,e,"icon-shape default"),p=20,m=e.label?8:0,g=e.pos==="t",{nodeBorder:y,mainBkg:v}=r,{stylesMap:x}=mc(e),b=Xe.svg(h),w=Ke(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let C=x.get("fill");w.stroke=C??v;let T=h.append("g");e.icon&&T.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let E=T.node().getBBox(),A=E.width,S=E.height,_=E.x,I=E.y,D=Math.max(A,S)*Math.SQRT2+p*2,k=b.circle(0,0,D,w),L=Math.max(D,f.width),R=D+f.height+m,O=b.rectangle(-L/2,-R/2,L,R,{...w,fill:"transparent",stroke:"none"}),M=h.insert(()=>k,":first-child"),B=h.insert(()=>O);return T.attr("transform",`translate(${-A/2-_},${g?f.height/2+m/2-S/2-I:-f.height/2-m/2-S/2-I})`),T.attr("style",`color: ${x.get("stroke")??y};`),d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${g?-R/2:R/2-f.height})`),M.attr("transform",`translate(0,${g?f.height/2+m/2:-f.height/2-m/2})`),je(e,B),e.intersect=function(F){return Y.info("iconSquare intersect",e,F),Ye.rect(e,F)},h}var xQ=N(()=>{"use strict";Wt();vt();tu();Ht();Ut();Ft();o(vQ,"iconCircle")});var Na,qh=N(()=>{"use strict";Na=o((t,e,r,n,i)=>["M",t+i,e,"H",t+r-i,"A",i,i,0,0,1,t+r,e+i,"V",e+n-i,"A",i,i,0,0,1,t+r-i,e+n,"H",t+i,"A",i,i,0,0,1,t,e+n-i,"V",e+i,"A",i,i,0,0,1,t+i,e,"Z"].join(" "),"createRoundedRectPathD")});async function bQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await pt(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=mc(e),w=-y/2,C=-g/2,T=e.label?8:0,E=Xe.svg(h),A=Ke(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let S=b.get("fill");A.stroke=S??x;let _=E.path(Na(w,C,y,g,5),A),I=Math.max(y,f.width),D=g+f.height+T,k=E.rectangle(-I/2,-D/2,I,D,{...A,fill:"transparent",stroke:"none"}),L=h.insert(()=>_,":first-child").attr("class","icon-shape2"),R=h.insert(()=>k);if(e.icon){let O=h.append("g");O.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let M=O.node().getBBox(),B=M.width,F=M.height,P=M.x,z=M.y;O.attr("transform",`translate(${-B/2-P},${m?f.height/2+T/2-F/2-z:-f.height/2-T/2-F/2-z})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-D/2:D/2-f.height})`),L.attr("transform",`translate(0,${m?f.height/2+T/2:-f.height/2-T/2})`),je(e,R),e.intersect=function(O){if(Y.info("iconSquare intersect",e,O),!e.label)return Ye.rect(e,O);let M=e.x??0,B=e.y??0,F=e.height??0,P=[];return m?P=[{x:M-f.width/2,y:B-F/2},{x:M+f.width/2,y:B-F/2},{x:M+f.width/2,y:B-F/2+f.height+T},{x:M+y/2,y:B-F/2+f.height+T},{x:M+y/2,y:B+F/2},{x:M-y/2,y:B+F/2},{x:M-y/2,y:B-F/2+f.height+T},{x:M-f.width/2,y:B-F/2+f.height+T}]:P=[{x:M-y/2,y:B-F/2},{x:M+y/2,y:B-F/2},{x:M+y/2,y:B-F/2+g},{x:M+f.width/2,y:B-F/2+g},{x:M+f.width/2/2,y:B+F/2},{x:M-f.width/2,y:B+F/2},{x:M-f.width/2,y:B-F/2+g},{x:M-y/2,y:B-F/2+g}],Ye.polygon(e,P,O)},h}var wQ=N(()=>{"use strict";Wt();vt();tu();Ht();Ut();qh();Ft();o(bQ,"iconRounded")});async function TQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await pt(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=mc(e),w=-y/2,C=-g/2,T=e.label?8:0,E=Xe.svg(h),A=Ke(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let S=b.get("fill");A.stroke=S??x;let _=E.path(Na(w,C,y,g,.1),A),I=Math.max(y,f.width),D=g+f.height+T,k=E.rectangle(-I/2,-D/2,I,D,{...A,fill:"transparent",stroke:"none"}),L=h.insert(()=>_,":first-child"),R=h.insert(()=>k);if(e.icon){let O=h.append("g");O.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let M=O.node().getBBox(),B=M.width,F=M.height,P=M.x,z=M.y;O.attr("transform",`translate(${-B/2-P},${m?f.height/2+T/2-F/2-z:-f.height/2-T/2-F/2-z})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-D/2:D/2-f.height})`),L.attr("transform",`translate(0,${m?f.height/2+T/2:-f.height/2-T/2})`),je(e,R),e.intersect=function(O){if(Y.info("iconSquare intersect",e,O),!e.label)return Ye.rect(e,O);let M=e.x??0,B=e.y??0,F=e.height??0,P=[];return m?P=[{x:M-f.width/2,y:B-F/2},{x:M+f.width/2,y:B-F/2},{x:M+f.width/2,y:B-F/2+f.height+T},{x:M+y/2,y:B-F/2+f.height+T},{x:M+y/2,y:B+F/2},{x:M-y/2,y:B+F/2},{x:M-y/2,y:B-F/2+f.height+T},{x:M-f.width/2,y:B-F/2+f.height+T}]:P=[{x:M-y/2,y:B-F/2},{x:M+y/2,y:B-F/2},{x:M+y/2,y:B-F/2+g},{x:M+f.width/2,y:B-F/2+g},{x:M+f.width/2/2,y:B+F/2},{x:M-f.width/2,y:B+F/2},{x:M-f.width/2,y:B-F/2+g},{x:M-y/2,y:B-F/2+g}],Ye.polygon(e,P,O)},h}var kQ=N(()=>{"use strict";Wt();vt();tu();Ht();qh();Ut();Ft();o(TQ,"iconSquare")});async function EQ(t,e,{config:{flowchart:r}}){let n=new Image;n.src=e?.img??"",await n.decode();let i=Number(n.naturalWidth.toString().replace("px","")),a=Number(n.naturalHeight.toString().replace("px",""));e.imageAspectRatio=i/a;let{labelStyles:s}=Qe(e);e.labelStyle=s;let l=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;let u=Math.max(e.label?l??0:0,e?.assetWidth??i),h=e.constraint==="on"&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:u,f=e.constraint==="on"?h/e.imageAspectRatio:e?.assetHeight??a;e.width=Math.max(h,l??0);let{shapeSvg:d,bbox:p,label:m}=await pt(t,e,"image-shape default"),g=e.pos==="t",y=-h/2,v=-f/2,x=e.label?8:0,b=Xe.svg(d),w=Ke(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let C=b.rectangle(y,v,h,f,w),T=Math.max(h,p.width),E=f+p.height+x,A=b.rectangle(-T/2,-E/2,T,E,{...w,fill:"none",stroke:"none"}),S=d.insert(()=>C,":first-child"),_=d.insert(()=>A);if(e.img){let I=d.append("image");I.attr("href",e.img),I.attr("width",h),I.attr("height",f),I.attr("preserveAspectRatio","none"),I.attr("transform",`translate(${-h/2},${g?E/2-f:-E/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-f/2-p.height/2-x/2:f/2-p.height/2+x/2})`),S.attr("transform",`translate(0,${g?p.height/2+x/2:-p.height/2-x/2})`),je(e,_),e.intersect=function(I){if(Y.info("iconSquare intersect",e,I),!e.label)return Ye.rect(e,I);let D=e.x??0,k=e.y??0,L=e.height??0,R=[];return g?R=[{x:D-p.width/2,y:k-L/2},{x:D+p.width/2,y:k-L/2},{x:D+p.width/2,y:k-L/2+p.height+x},{x:D+h/2,y:k-L/2+p.height+x},{x:D+h/2,y:k+L/2},{x:D-h/2,y:k+L/2},{x:D-h/2,y:k-L/2+p.height+x},{x:D-p.width/2,y:k-L/2+p.height+x}]:R=[{x:D-h/2,y:k-L/2},{x:D+h/2,y:k-L/2},{x:D+h/2,y:k-L/2+f},{x:D+p.width/2,y:k-L/2+f},{x:D+p.width/2/2,y:k+L/2},{x:D-p.width/2,y:k+L/2},{x:D-p.width/2,y:k-L/2+f},{x:D-h/2,y:k-L/2+f}],Ye.polygon(e,R,I)},d}var SQ=N(()=>{"use strict";Wt();vt();Ht();Ut();Ft();o(EQ,"imageSquare")});async function CQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=[{x:0,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:-3*l/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=La(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var AQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();o(CQ,"inv_trapezoid")});async function Du(t,e,r){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n;let{shapeSvg:a,bbox:s}=await pt(t,e,ht(e)),l=Math.max(s.width+r.labelPaddingX*2,e?.width||0),u=Math.max(s.height+r.labelPaddingY*2,e?.height||0),h=-l/2,f=-u/2,d,{rx:p,ry:m}=e,{cssStyles:g}=e;if(r?.rx&&r.ry&&(p=r.rx,m=r.ry),e.look==="handDrawn"){let y=Xe.svg(a),v=Ke(e,{}),x=p||m?y.path(Na(h,f,l,u,p||0),v):y.rectangle(h,f,l,u,v);d=a.insert(()=>x,":first-child"),d.attr("class","basic label-container").attr("style",$n(g))}else d=a.insert("rect",":first-child"),d.attr("class","basic label-container").attr("style",i).attr("rx",$n(p)).attr("ry",$n(m)).attr("x",h).attr("y",f).attr("width",l).attr("height",u);return je(e,d),e.intersect=function(y){return Ye.rect(e,y)},a}var mm=N(()=>{"use strict";Ft();Ht();qh();Ut();Wt();ir();o(Du,"drawRect")});async function _Q(t,e){let{shapeSvg:r,bbox:n,label:i}=await pt(t,e,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),i.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)-(n.y-(n.top??0))})`),je(e,a),e.intersect=function(u){return Ye.rect(e,u)},r}var DQ=N(()=>{"use strict";mm();Ft();Ht();o(_Q,"labelRect")});async function LQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:0,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:-(3*l)/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=La(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var RQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();o(LQ,"lean_left")});async function NQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:-3*l/6,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=La(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var MQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();o(NQ,"lean_right")});function IQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.label="",e.labelStyle=r;let i=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,s=Math.max(35,e?.width??0),l=Math.max(35,e?.height??0),u=7,h=[{x:s,y:0},{x:0,y:l+u/2},{x:s-2*u,y:l+u/2},{x:0,y:2*l},{x:s,y:l-u/2},{x:2*u,y:l-u/2}],f=Xe.svg(i),d=Ke(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=Xt(h),m=f.path(p,d),g=i.insert(()=>m,":first-child");return a&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",a),n&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",n),g.attr("transform",`translate(-${s/2},${-l})`),je(e,g),e.intersect=function(y){return Y.info("lightningBolt intersect",e,y),Ye.polygon(e,h,y)},i}var OQ=N(()=>{"use strict";vt();Ft();Ut();Wt();Ht();Ft();o(IQ,"lightningBolt")});async function PQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0),e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+(e.padding??0),e.height??0),d=f*.1,p,{cssStyles:m}=e;if(e.look==="handDrawn"){let g=Xe.svg(i),y=p_e(0,0,l,f,u,h,d),v=m_e(0,h,l,f,u,h),x=Ke(e,{}),b=g.path(y,x),w=g.path(v,x);i.insert(()=>w,":first-child").attr("class","line"),p=i.insert(()=>b,":first-child"),p.attr("class","basic label-container"),m&&p.attr("style",m)}else{let g=d_e(0,0,l,f,u,h,d);p=i.insert("path",":first-child").attr("d",g).attr("class","basic label-container").attr("style",$n(m)).attr("style",n)}return p.attr("label-offset-y",h),p.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),je(e,p),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),e.intersect=function(g){let y=Ye.rect(e,g),v=y.x-(e.x??0);if(u!=0&&(Math.abs(v)<(e.width??0)/2||Math.abs(v)==(e.width??0)/2&&Math.abs(y.y-(e.y??0))>(e.height??0)/2-h)){let x=h*h*(1-v*v/(u*u));x>0&&(x=Math.sqrt(x)),x=h-x,g.y-(e.y??0)>0&&(x=-x),y.y+=x}return y},i}var d_e,p_e,m_e,BQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();ir();d_e=o((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),p_e=o((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),m_e=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(PQ,"linedCylinder")});async function FQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-l/2-l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:f/2},...Fo(-l/2-l/2*.1,f/2,l/2+l/2*.1,f/2,h,.8),{x:l/2+l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:-f/2},{x:-l/2,y:-f/2},{x:-l/2,y:f/2*1.1},{x:-l/2,y:-f/2}],y=p.polygon(g.map(x=>[x.x,x.y]),m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)+l/2*.1/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),je(e,v),e.intersect=function(x){return Ye.polygon(e,g,x)},i}var $Q=N(()=>{"use strict";Ft();Ht();Wt();Ut();o(FQ,"linedWaveEdgedRect")});async function zQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{}),y=[{x:f-h,y:d+h},{x:f-h,y:d+u+h},{x:f+l-h,y:d+u+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d+u-h},{x:f+l+h,y:d+u-h},{x:f+l+h,y:d-h},{x:f+h,y:d-h},{x:f+h,y:d},{x:f,y:d},{x:f,y:d+h}],v=[{x:f,y:d+h},{x:f+l-h,y:d+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d},{x:f,y:d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Xt(y),b=m.path(x,g),w=Xt(v),C=m.path(w,{...g,fill:"none"}),T=i.insert(()=>C,":first-child");return T.insert(()=>b,":first-child"),T.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)-h-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),je(e,T),e.intersect=function(E){return Ye.polygon(e,y,E)},i}var GQ=N(()=>{"use strict";Ft();Ut();Wt();Ht();o(zQ,"multiRect")});async function VQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,d=-l/2,p=-f/2,m=5,{cssStyles:g}=e,y=Fo(d-m,p+f+m,d+l-m,p+f+m,h,.8),v=y?.[y.length-1],x=[{x:d-m,y:p+m},{x:d-m,y:p+f+m},...y,{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:v.y-2*m},{x:d+l+m,y:v.y-2*m},{x:d+l+m,y:p-m},{x:d+m,y:p-m},{x:d+m,y:p},{x:d,y:p},{x:d,y:p+m}],b=[{x:d,y:p+m},{x:d+l-m,y:p+m},{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:p},{x:d,y:p}],w=Xe.svg(i),C=Ke(e,{});e.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let T=Xt(x),E=w.path(T,C),A=Xt(b),S=w.path(A,C),_=i.insert(()=>E,":first-child");return _.insert(()=>S),_.attr("class","basic label-container"),g&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",g),n&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",n),_.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-(a.width/2)-m-(a.x-(a.left??0))}, ${-(a.height/2)+m-h/2-(a.y-(a.top??0))})`),je(e,_),e.intersect=function(I){return Ye.polygon(e,x,I)},i}var UQ=N(()=>{"use strict";Ft();Ht();Wt();Ut();o(VQ,"multiWaveEdgedRectangle")});async function HQ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n,e.useHtmlLabels||cr().flowchart?.htmlLabels!==!1||(e.centerLabel=!0);let{shapeSvg:s,bbox:l}=await pt(t,e,ht(e)),u=Math.max(l.width+(e.padding??0)*2,e?.width??0),h=Math.max(l.height+(e.padding??0)*2,e?.height??0),f=-u/2,d=-h/2,{cssStyles:p}=e,m=Xe.svg(s),g=Ke(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=m.rectangle(f,d,u,h,g),v=s.insert(()=>y,":first-child");return v.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",p),i&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",i),je(e,v),e.intersect=function(x){return Ye.rect(e,x)},s}var WQ=N(()=>{"use strict";Wt();Ht();Ut();Ft();ji();o(HQ,"note")});async function qQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.width+e.padding,l=a.height+e.padding,u=s+l,h=[{x:u/2,y:0},{x:u,y:-u/2},{x:u/2,y:-u},{x:0,y:-u/2}],f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Xe.svg(i),m=Ke(e,{}),g=g_e(0,0,u),y=p.path(g,m);f=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`),d&&f.attr("style",d)}else f=La(i,u,u,h);return n&&f.attr("style",n),je(e,f),e.intersect=function(p){return Y.debug(`APA12 Intersect called SPLIT -point:`,p,` -node: -`,e,` -res:`,Ye.polygon(e,h,p)),Ye.polygon(e,h,p)},i}var g_e,YQ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();_u();g_e=o((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");o(qQ,"question")});async function XQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0),e?.width??0),u=Math.max(a.height+(e.padding??0),e?.height??0),h=-l/2,f=-u/2,d=f/2,p=[{x:h+d,y:f},{x:h,y:0},{x:h+d,y:-f},{x:-h,y:-f},{x:-h,y:f}],{cssStyles:m}=e,g=Xe.svg(i),y=Ke(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=Xt(p),x=g.path(v,y),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),b.attr("transform",`translate(${-d/2},0)`),s.attr("transform",`translate(${-d/2-a.width/2-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),je(e,b),e.intersect=function(w){return Ye.polygon(e,p,w)},i}var jQ=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(XQ,"rect_left_inv_arrow")});function y_e(t,e){e&&t.attr("style",e)}async function v_e(t){let e=Ge(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=t.label;t.label&&pi(t.label)&&(n=await mh(t.label.replace(Ze.lineBreakRegex,` -`),me()));let i=t.isNode?"nodeLabel":"edgeLabel";return r.html('"+n+""),y_e(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}var x_e,gc,Gw=N(()=>{"use strict";dr();vt();zt();gr();ir();o(y_e,"applyStyle");o(v_e,"addHtmlLabel");x_e=o(async(t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),fr(me().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),Y.info("vertexText"+i);let a={isNode:n,label:na(i).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:e&&e.replace("fill:","color:")};return await v_e(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let l of s){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),r?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=l.trim(),a.appendChild(u)}return a}},"createLabel"),gc=x_e});async function KQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let i;e.cssClasses?i="node "+e.cssClasses:i="node default";let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=a.insert("g"),l=a.insert("g").attr("class","label").attr("style",n),u=e.description,h=e.label,f=l.node().appendChild(await gc(h,e.labelStyle,!0,!0)),d={width:0,height:0};if(fr(me()?.flowchart?.htmlLabels)){let S=f.children[0],_=Ge(f);d=S.getBoundingClientRect(),_.attr("width",d.width),_.attr("height",d.height)}Y.info("Text 2",u);let p=u||[],m=f.getBBox(),g=l.node().appendChild(await gc(p.join?p.join("
    "):p,e.labelStyle,!0,!0)),y=g.children[0],v=Ge(g);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height);let x=(e.padding||0)/2;Ge(g).attr("transform","translate( "+(d.width>m.width?0:(m.width-d.width)/2)+", "+(m.height+x+5)+")"),Ge(f).attr("transform","translate( "+(d.width(Y.debug("Rough node insert CXC",I),D),":first-child"),E=a.insert(()=>(Y.debug("Rough node insert CXC",I),I),":first-child")}else E=s.insert("rect",":first-child"),A=s.insert("line"),E.attr("class","outer title-state").attr("style",n).attr("x",-d.width/2-x).attr("y",-d.height/2-x).attr("width",d.width+(e.padding||0)).attr("height",d.height+(e.padding||0)),A.attr("class","divider").attr("x1",-d.width/2-x).attr("x2",d.width/2+x).attr("y1",-d.height/2-x+m.height+x).attr("y2",-d.height/2-x+m.height+x);return je(e,E),e.intersect=function(S){return Ye.rect(e,S)},a}var QQ=N(()=>{"use strict";dr();gr();Ft();Gw();Ht();Ut();Wt();zt();qh();vt();o(KQ,"rectWithTitle")});async function ZQ(t,e){let r={rx:5,ry:5,classes:"",labelPaddingX:(e?.padding||0)*1,labelPaddingY:(e?.padding||0)*1};return Du(t,e,r)}var JQ=N(()=>{"use strict";mm();o(ZQ,"roundedRect")});async function eZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=e?.padding??0,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=-a.width/2-l,d=-a.height/2-l,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d},{x:f+u+8,y:d},{x:f+u+8,y:d+h},{x:f-8,y:d+h},{x:f-8,y:d},{x:f,y:d},{x:f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container").attr("style",$n(p)),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${-u/2+4+(e.padding??0)-(a.x-(a.left??0))},${-h/2+(e.padding??0)-(a.y-(a.top??0))})`),je(e,x),e.intersect=function(b){return Ye.rect(e,b)},i}var tZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();ir();o(eZ,"shadedProcess")});async function rZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=-l/2,f=-u/2,{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:h,y:f},{x:h,y:f+u},{x:h+l,y:f+u},{x:h+l,y:f-u/2}],y=Xt(g),v=p.path(y,m),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),x.attr("transform",`translate(0, ${u/4})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))}, ${-u/4+(e.padding??0)-(a.y-(a.top??0))})`),je(e,x),e.intersect=function(b){return Ye.polygon(e,g,b)},i}var nZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(rZ,"slopedRect")});async function iZ(t,e){let r={rx:0,ry:0,classes:"",labelPaddingX:(e?.padding||0)*2,labelPaddingY:(e?.padding||0)*1};return Du(t,e,r)}var aZ=N(()=>{"use strict";mm();o(iZ,"squareRect")});async function sZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.height+e.padding,l=a.width+s/4+e.padding,u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Xe.svg(i),d=Ke(e,{}),p=Na(-l/2,-s/2,l,s,s/2),m=f.path(p,d);u=i.insert(()=>m,":first-child"),u.attr("class","basic label-container").attr("style",$n(h))}else u=i.insert("rect",":first-child"),u.attr("class","basic label-container").attr("style",n).attr("rx",s/2).attr("ry",s/2).attr("x",-l/2).attr("y",-s/2).attr("width",l).attr("height",s);return je(e,u),e.intersect=function(f){return Ye.rect(e,f)},i}var oZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();qh();ir();o(sZ,"stadium")});async function lZ(t,e){return Du(t,e,{rx:5,ry:5,classes:"flowchart-node"})}var cZ=N(()=>{"use strict";mm();o(lZ,"state")});function uZ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n;let{cssStyles:a}=e,{lineColor:s,stateBorder:l,nodeBorder:u}=r,h=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),f=Xe.svg(h),d=Ke(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=f.circle(0,0,14,{...d,stroke:s,strokeWidth:2}),m=l??u,g=f.circle(0,0,5,{...d,fill:m,stroke:m,strokeWidth:2,fillStyle:"solid"}),y=h.insert(()=>p,":first-child");return y.insert(()=>g),a&&y.selectAll("path").attr("style",a),i&&y.selectAll("path").attr("style",i),je(e,y),e.intersect=function(v){return Ye.circle(e,7,v)},h}var hZ=N(()=>{"use strict";Wt();Ht();Ut();Ft();o(uZ,"stateEnd")});function fZ(t,e,{config:{themeVariables:r}}){let{lineColor:n}=r,i=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a;if(e.look==="handDrawn"){let l=Xe.svg(i).circle(0,0,14,gK(n));a=i.insert(()=>l),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else a=i.insert("circle",":first-child"),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return je(e,a),e.intersect=function(s){return Ye.circle(e,7,s)},i}var dZ=N(()=>{"use strict";Wt();Ht();Ut();Ft();o(fZ,"stateStart")});async function pZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=(e?.padding||0)/2,l=a.width+e.padding,u=a.height+e.padding,h=-a.width/2-s,f=-a.height/2-s,d=[{x:0,y:0},{x:l,y:0},{x:l,y:-u},{x:0,y:-u},{x:0,y:0},{x:-8,y:0},{x:l+8,y:0},{x:l+8,y:-u},{x:-8,y:-u},{x:-8,y:0}];if(e.look==="handDrawn"){let p=Xe.svg(i),m=Ke(e,{}),g=p.rectangle(h-8,f,l+16,u,m),y=p.line(h,f,h,f+u,m),v=p.line(h+l,f,h+l,f+u,m);i.insert(()=>y,":first-child"),i.insert(()=>v,":first-child");let x=i.insert(()=>g,":first-child"),{cssStyles:b}=e;x.attr("class","basic label-container").attr("style",$n(b)),je(e,x)}else{let p=La(i,l,u,d);n&&p.attr("style",n),je(e,p)}return e.intersect=function(p){return Ye.polygon(e,d,p)},i}var mZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();ir();o(pZ,"subroutine")});async function gZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=-s/2,h=-l/2,f=.2*l,d=.2*l,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{}),y=[{x:u-f/2,y:h},{x:u+s+f/2,y:h},{x:u+s+f/2,y:h+l},{x:u-f/2,y:h+l}],v=[{x:u+s-f/2,y:h+l},{x:u+s+f/2,y:h+l},{x:u+s+f/2,y:h+l-d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Xt(y),b=m.path(x,g),w=Xt(v),C=m.path(w,{...g,fillStyle:"solid"}),T=i.insert(()=>C,":first-child");return T.insert(()=>b,":first-child"),T.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),je(e,T),e.intersect=function(E){return Ye.polygon(e,y,E)},i}var yZ=N(()=>{"use strict";Ft();Ut();Wt();Ht();o(gZ,"taggedRect")});async function vZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=.2*l,d=.2*u,p=u+h,{cssStyles:m}=e,g=Xe.svg(i),y=Ke(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-l/2-l/2*.1,y:p/2},...Fo(-l/2-l/2*.1,p/2,l/2+l/2*.1,p/2,h,.8),{x:l/2+l/2*.1,y:-p/2},{x:-l/2-l/2*.1,y:-p/2}],x=-l/2+l/2*.1,b=-p/2-d*.4,w=[{x:x+l-f,y:(b+u)*1.4},{x:x+l,y:b+u-d},{x:x+l,y:(b+u)*.9},...Fo(x+l,(b+u)*1.3,x+l-f,(b+u)*1.5,-u*.03,.5)],C=Xt(v),T=g.path(C,y),E=Xt(w),A=g.path(E,{...y,fillStyle:"solid"}),S=i.insert(()=>A,":first-child");return S.insert(()=>T,":first-child"),S.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),je(e,S),e.intersect=function(_){return Ye.polygon(e,v,_)},i}var xZ=N(()=>{"use strict";Ft();Ht();Wt();Ut();o(vZ,"taggedWaveEdgedRectangle")});async function bZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+e.padding,e?.width||0),l=Math.max(a.height+e.padding,e?.height||0),u=-s/2,h=-l/2,f=i.insert("rect",":first-child");return f.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",u).attr("y",h).attr("width",s).attr("height",l),je(e,f),e.intersect=function(d){return Ye.rect(e,d)},i}var wZ=N(()=>{"use strict";Ft();Ht();Ut();o(bZ,"text")});async function TZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s,halfPadding:l}=await pt(t,e,ht(e)),u=e.look==="neo"?l*2:l,h=a.height+u,f=h/2,d=f/(2.5+h/50),p=a.width+d+u,{cssStyles:m}=e,g;if(e.look==="handDrawn"){let y=Xe.svg(i),v=w_e(0,0,p,h,d,f),x=T_e(0,0,p,h,d,f),b=y.path(v,Ke(e,{})),w=y.path(x,Ke(e,{fill:"none"}));g=i.insert(()=>w,":first-child"),g=i.insert(()=>b,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let y=b_e(0,0,p,h,d,f);g=i.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",$n(m)).attr("style",n),g.attr("class","basic label-container"),m&&g.selectAll("path").attr("style",m),n&&g.selectAll("path").attr("style",n)}return g.attr("label-offset-x",d),g.attr("transform",`translate(${-p/2}, ${h/2} )`),s.attr("transform",`translate(${-(a.width/2)-d-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),je(e,g),e.intersect=function(y){let v=Ye.rect(e,y),x=v.y-(e.y??0);if(f!=0&&(Math.abs(x)<(e.height??0)/2||Math.abs(x)==(e.height??0)/2&&Math.abs(v.x-(e.x??0))>(e.width??0)/2-d)){let b=d*d*(1-x*x/(f*f));b!=0&&(b=Math.sqrt(Math.abs(b))),b=d-b,y.x-(e.x??0)>0&&(b=-b),v.x+=b}return v},i}var b_e,w_e,T_e,kZ=N(()=>{"use strict";Ft();Ut();Wt();Ht();ir();b_e=o((t,e,r,n,i,a)=>`M${t},${e} +`),i=P3(n);return e===!1?i.replace(/ /g," "):i}function FZ(t,e={}){let r=G9e(t,e),n=nn.lexer(r),i=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(` +`).forEach((f,d)=>{d!==0&&(a++,i.push([])),f.split(" ").forEach(p=>{p=p.replace(/'/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),n.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"?i[a].push({content:l.text,type:"normal"}):i[a].push({content:l.raw,type:"normal"})}),i}function $Z(t,{markdownAutoWrap:e}={}){let r=nn.lexer(t);function n(i){return i.type==="text"?e===!1?i.text.replace(/\n */g,"
    ").replace(/ /g," "):i.text.replace(/\n */g,"
    "):i.type==="strong"?`${i.tokens?.map(n).join("")}`:i.type==="em"?`${i.tokens?.map(n).join("")}`:i.type==="paragraph"?`

    ${i.tokens?.map(n).join("")}

    `:i.type==="space"?"":i.type==="html"?`${i.text}`:i.type==="escape"?i.text:(X.warn(`Unsupported markdown: ${i.type}`),i.raw)}return o(n,"output"),r.map(n).join("")}var zZ=N(()=>{"use strict";BZ();_A();pt();o(G9e,"preprocessMarkdown");o(FZ,"markdownToLines");o($Z,"markdownToHTML")});function V9e(t){return Intl.Segmenter?[...new Intl.Segmenter().segment(t)].map(e=>e.segment):[...t]}function U9e(t,e){let r=V9e(e.content);return GZ(t,[],r,e.type)}function GZ(t,e,r,n){if(r.length===0)return[{content:e.join(""),type:n},{content:"",type:n}];let[i,...a]=r,s=[...e,i];return t([{content:s.join(""),type:n}])?GZ(t,s,a,n):(e.length===0&&i&&(e.push(i),r.shift()),[{content:e.join(""),type:n},{content:r.join(""),type:n}])}function VZ(t,e){if(t.some(({content:r})=>r.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return b9(t,e)}function b9(t,e,r=[],n=[]){if(t.length===0)return n.length>0&&r.push(n),r.length>0?r:[];let i="";t[0].content===" "&&(i=" ",t.shift());let a=t.shift()??{content:" ",type:"normal"},s=[...n];if(i!==""&&s.push({content:i,type:"normal"}),s.push(a),e(s))return b9(t,e,r,s);if(n.length>0)r.push(n),t.unshift(a);else if(a.content){let[l,u]=U9e(e,a);r.push([l]),u.content&&t.unshift(u)}return b9(t,e,r)}var UZ=N(()=>{"use strict";o(V9e,"splitTextToChars");o(U9e,"splitWordToFitWidth");o(GZ,"splitWordToFitWidthRecursion");o(VZ,"splitLineToFitWidth");o(b9,"splitLineToFitWidthRecursion")});function HZ(t,e){e&&t.attr("style",e)}async function H9e(t,e,r,n,i=!1,a=Qt()){let s=t.append("foreignObject");s.attr("width",`${10*r}px`),s.attr("height",`${10*r}px`);let l=s.append("xhtml:div"),u=kn(e.label)?await kh(e.label.replace(tt.lineBreakRegex,` +`),a):sr(e.label,a),h=e.isNode?"nodeLabel":"edgeLabel",f=l.append("span");f.html(u),HZ(f,e.labelStyle),f.attr("class",`${h} ${n}`),HZ(l,e.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("line-height","1.5"),l.style("max-width",r+"px"),l.style("text-align","center"),l.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&l.attr("class","labelBkg");let d=l.node().getBoundingClientRect();return d.width===r&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",r+"px"),d=l.node().getBoundingClientRect()),s.node()}function T9(t,e,r){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em")}function q9e(t,e,r){let n=t.append("text"),i=T9(n,1,e);w9(i,r);let a=i.node().getComputedTextLength();return n.remove(),a}function qZ(t,e,r){let n=t.append("text"),i=T9(n,1,e);w9(i,[{content:r,type:"normal"}]);let a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function W9e(t,e,r,n=!1){let a=e.append("g"),s=a.insert("rect").attr("class","background").attr("style","stroke: none"),l=a.append("text").attr("y","-10.1"),u=0;for(let h of r){let f=o(p=>q9e(a,1.1,p)<=t,"checkWidth"),d=f(h)?[h]:VZ(h,f);for(let p of d){let m=T9(l,u,1.1);w9(m,p),u++}}if(n){let h=l.node().getBBox(),f=2;return s.attr("x",h.x-f).attr("y",h.y-f).attr("width",h.width+2*f).attr("height",h.height+2*f),a.node()}else return l.node()}function w9(t,e){t.text(""),e.forEach((r,n)=>{let i=t.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");n===0?i.text(r.content):i.text(" "+r.content)})}async function k9(t,e={}){let r=[];t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(i,a,s)=>(r.push((async()=>{let l=`${a}:${s}`;return await eH(l)?await _s(l,void 0,{class:"label-icon"}):``})()),i));let n=await Promise.all(r);return t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>n.shift()??"")}var di,zo=N(()=>{"use strict";yr();gr();pt();zZ();tr();nc();UZ();qn();o(HZ,"applyStyle");o(H9e,"addHtmlSpan");o(T9,"createTspan");o(q9e,"computeWidthOfText");o(qZ,"computeDimensionOfText");o(W9e,"createFormattedText");o(w9,"updateTextContentAndStyles");o(k9,"replaceIconSubstring");di=o(async(t,e="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,isNode:s=!0,width:l=200,addSvgBackground:u=!1}={},h)=>{if(X.debug("XYZ createText",e,r,n,i,a,s,"addSvgBackground: ",u),a){let f=$Z(e,h),d=await k9(Ji(f),h),p=e.replace(/\\\\/g,"\\"),m={isNode:s,label:kn(e)?p:d,labelStyle:r.replace("fill:","color:")};return await H9e(t,m,l,i,u,h)}else{let f=e.replace(//g,"
    "),d=FZ(f.replace("
    ","
    "),h),p=W9e(l,t,d,e?u:!1);if(s){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");qe(p).attr("style",m)}else{let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");qe(p).select("rect").attr("style",m.replace(/background:/g,"fill:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");qe(p).select("text").attr("style",g)}return p}},"createText")});function Vt(t){let e=t.map((r,n)=>`${n===0?"M":"L"}${r.x},${r.y}`);return e.push("Z"),e.join(" ")}function Go(t,e,r,n,i,a){let s=[],u=r-t,h=n-e,f=u/a,d=2*Math.PI/f,p=e+h/2;for(let m=0;m<=50;m++){let g=m/50,y=t+g*u,v=p+i*Math.sin(d*(y-t));s.push({x:y,y:v})}return s}function Kd(t,e,r,n,i,a){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;d{"use strict";zo();Xt();yr();La();gr();tr();ut=o(async(t,e,r)=>{let n,i=e.useHtmlLabels||vr(ge()?.htmlLabels);r?n=r:n="node default";let a=t.insert("g").attr("class",n).attr("id",e.domId||e.id),s=a.insert("g").attr("class","label").attr("style",Cn(e.labelStyle)),l;e.label===void 0?l="":l=typeof e.label=="string"?e.label:e.label[0];let u=await di(s,sr(Ji(l),ge()),{useHtmlLabels:i,width:e.width||ge().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img}),h=u.getBBox(),f=(e?.padding??0)/2;if(i){let d=u.children[0],p=qe(u),m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=ge().fontSize?ge().fontSize:window.getComputedStyle(document.body).fontSize,T=5,[S=ur.fontSize]=vc(b),w=S*T+"px";y.style.minWidth=w,y.style.maxWidth=w}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}return i?s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):s.attr("transform","translate(0, "+-h.height/2+")"),e.centerLabel&&s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:h,halfPadding:f,label:s}},"labelHelper"),YT=o(async(t,e,r)=>{let n=r.useHtmlLabels||vr(ge()?.flowchart?.htmlLabels),i=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await di(i,sr(Ji(e),ge()),{useHtmlLabels:n,width:r.width||ge()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(vr(ge()?.flowchart?.htmlLabels)){let u=a.children[0],h=qe(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}return n?i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):i.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),i.insert("rect",":first-child"),{shapeSvg:t,bbox:s,halfPadding:l,label:i}},"insertLabel"),Qe=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),st=o((t,e)=>(t.look==="handDrawn"?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");o(Vt,"createPathFromPoints");o(Go,"generateFullSineWavePoints");o(Kd,"generateCirclePoints")});function Y9e(t,e){return t.intersect(e)}var WZ,YZ=N(()=>{"use strict";o(Y9e,"intersectNode");WZ=Y9e});function X9e(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(X9e,"intersectEllipse");XT=X9e});function j9e(t,e,r){return XT(t,e,e,r)}var XZ,jZ=N(()=>{"use strict";E9();o(j9e,"intersectCircle");XZ=j9e});function K9e(t,e,r,n){{let i=e.y-t.y,a=t.x-e.x,s=e.x*t.y-t.x*e.y,l=i*r.x+a*r.y+s,u=i*n.x+a*n.y+s,h=1e-6;if(l!==0&&u!==0&&KZ(l,u))return;let f=n.y-r.y,d=r.x-n.x,p=n.x*r.y-r.x*n.y,m=f*t.x+d*t.y+p,g=f*e.x+d*e.y+p;if(Math.abs(m)0}var QZ,ZZ=N(()=>{"use strict";o(K9e,"intersectLine");o(KZ,"sameSign");QZ=K9e});function Q9e(t,e,r){let n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(f){s=Math.min(s,f.x),l=Math.min(l,f.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));let u=n-t.width/2-s,h=i-t.height/2-l;for(let f=0;f1&&a.sort(function(f,d){let p=f.x-r.x,m=f.y-r.y,g=Math.sqrt(p*p+m*m),y=d.x-r.x,v=d.y-r.y,x=Math.sqrt(y*y+v*v);return g{"use strict";ZZ();o(Q9e,"intersectPolygon");JZ=Q9e});var Z9e,Qh,S9=N(()=>{"use strict";Z9e=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),Qh=Z9e});var Xe,Ut=N(()=>{"use strict";YZ();jZ();E9();eJ();S9();Xe={node:WZ,circle:XZ,ellipse:XT,polygon:JZ,rect:Qh}});var tJ,wc,J9e,_2,je,Je,eRe,$t=N(()=>{"use strict";Xt();tJ=o(t=>{let{handDrawnSeed:e}=ge();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),wc=o(t=>{let e=J9e([...t.cssCompiledStyles||[],...t.cssStyles||[],...t.labelStyle||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),J9e=o(t=>{let e=new Map;return t.forEach(r=>{let[n,i]=r.split(":");e.set(n.trim(),i?.trim())}),e},"styles2Map"),_2=o(t=>t==="color"||t==="font-size"||t==="font-family"||t==="font-weight"||t==="font-style"||t==="text-decoration"||t==="text-align"||t==="text-transform"||t==="line-height"||t==="letter-spacing"||t==="word-spacing"||t==="text-shadow"||t==="text-overflow"||t==="white-space"||t==="word-wrap"||t==="word-break"||t==="overflow-wrap"||t==="hyphens","isLabelStyle"),je=o(t=>{let{stylesArray:e}=wc(t),r=[],n=[],i=[],a=[];return e.forEach(s=>{let l=s[0];_2(l)?r.push(s.join(":")+" !important"):(n.push(s.join(":")+" !important"),l.includes("stroke")&&i.push(s.join(":")+" !important"),l==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:e,borderStyles:i,backgroundStyles:a}},"styles2String"),Je=o((t,e)=>{let{themeVariables:r,handDrawnSeed:n}=ge(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=wc(t);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||i,seed:n,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:eRe(s.get("stroke-dasharray"))},e)},"userNodeOverrides"),eRe=o(t=>{if(!t)return[0,0];let e=t.trim().split(/\s+/).map(Number);if(e.length===1){let i=isNaN(e[0])?0:e[0];return[i,i]}let r=isNaN(e[0])?0:e[0],n=isNaN(e[1])?0:e[1];return[r,n]},"getStrokeDashArray")});function C9(t,e,r){if(t&&t.length){let[n,i]=e,a=Math.PI/180*r,s=Math.cos(a),l=Math.sin(a);for(let u of t){let[h,f]=u;u[0]=(h-n)*s-(f-i)*l+n,u[1]=(h-n)*l+(f-i)*s+i}}}function tRe(t,e){return t[0]===e[0]&&t[1]===e[1]}function rRe(t,e,r,n=1){let i=r,a=Math.max(e,.1),s=t[0]&&t[0][0]&&typeof t[0][0]=="number"?[t]:t,l=[0,0];if(i)for(let h of s)C9(h,l,i);let u=(function(h,f,d){let p=[];for(let b of h){let T=[...b];tRe(T[0],T[T.length-1])||T.push([T[0][0],T[0][1]]),T.length>2&&p.push(T)}let m=[];f=Math.max(f,.1);let g=[];for(let b of p)for(let T=0;Tb.yminT.ymin?1:b.xT.x?1:b.ymax===T.ymax?0:(b.ymax-T.ymax)/Math.abs(b.ymax-T.ymax))),!g.length)return m;let y=[],v=g[0].ymin,x=0;for(;y.length||g.length;){if(g.length){let b=-1;for(let T=0;Tv);T++)b=T;g.splice(0,b+1).forEach((T=>{y.push({s:v,edge:T})}))}if(y=y.filter((b=>!(b.edge.ymax<=v))),y.sort(((b,T)=>b.edge.x===T.edge.x?0:(b.edge.x-T.edge.x)/Math.abs(b.edge.x-T.edge.x))),(d!==1||x%f==0)&&y.length>1)for(let b=0;b=y.length)break;let S=y[b].edge,w=y[T].edge;m.push([[Math.round(S.x),v],[Math.round(w.x),v]])}v+=d,y.forEach((b=>{b.edge.x=b.edge.x+d*b.edge.islope})),x++}return m})(s,a,n);if(i){for(let h of s)C9(h,l,-i);(function(h,f,d){let p=[];h.forEach((m=>p.push(...m))),C9(p,f,d)})(u,l,-i)}return u}function N2(t,e){var r;let n=e.hachureAngle+90,i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.round(Math.max(i,.1));let a=1;return e.roughness>=1&&(((r=e.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=i),rRe(t,i,n,a||1)}function nw(t){let e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}function _9(t,e){return t.type===e}function V9(t){let e=[],r=(function(s){let l=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))l[l.length]={type:nRe,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];l[l.length]={type:A9,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return l[l.length]={type:rJ,text:""},l})(t),n="BOD",i=0,a=r[i];for(;!_9(a,rJ);){let s=0,l=[];if(n==="BOD"){if(a.text!=="M"&&a.text!=="m")return V9("M0,0"+t);i++,s=jT[a.text],n=a.text}else _9(a,A9)?s=jT[n]:(i++,s=jT[a.text],n=a.text);if(!(i+sf%2?h+r:h+e));a.push({key:"C",data:u}),e=u[4],r=u[5];break}case"Q":a.push({key:"Q",data:[...l]}),e=l[2],r=l[3];break;case"q":{let u=l.map(((h,f)=>f%2?h+r:h+e));a.push({key:"Q",data:u}),e=u[2],r=u[3];break}case"A":a.push({key:"A",data:[...l]}),e=l[5],r=l[6];break;case"a":e+=l[5],r+=l[6],a.push({key:"A",data:[l[0],l[1],l[2],l[3],l[4],e,r]});break;case"H":a.push({key:"H",data:[...l]}),e=l[0];break;case"h":e+=l[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...l]}),r=l[0];break;case"v":r+=l[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...l]}),e=l[2],r=l[3];break;case"s":{let u=l.map(((h,f)=>f%2?h+r:h+e));a.push({key:"S",data:u}),e=u[2],r=u[3];break}case"T":a.push({key:"T",data:[...l]}),e=l[0],r=l[1];break;case"t":e+=l[0],r+=l[1],a.push({key:"T",data:[e,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=n,r=i}return a}function hJ(t){let e=[],r="",n=0,i=0,a=0,s=0,l=0,u=0;for(let{key:h,data:f}of t){switch(h){case"M":e.push({key:"M",data:[...f]}),[n,i]=f,[a,s]=f;break;case"C":e.push({key:"C",data:[...f]}),n=f[4],i=f[5],l=f[2],u=f[3];break;case"L":e.push({key:"L",data:[...f]}),[n,i]=f;break;case"H":n=f[0],e.push({key:"L",data:[n,i]});break;case"V":i=f[0],e.push({key:"L",data:[n,i]});break;case"S":{let d=0,p=0;r==="C"||r==="S"?(d=n+(n-l),p=i+(i-u)):(d=n,p=i),e.push({key:"C",data:[d,p,...f]}),l=f[0],u=f[1],n=f[2],i=f[3];break}case"T":{let[d,p]=f,m=0,g=0;r==="Q"||r==="T"?(m=n+(n-l),g=i+(i-u)):(m=n,g=i);let y=n+2*(m-n)/3,v=i+2*(g-i)/3,x=d+2*(m-d)/3,b=p+2*(g-p)/3;e.push({key:"C",data:[y,v,x,b,d,p]}),l=m,u=g,n=d,i=p;break}case"Q":{let[d,p,m,g]=f,y=n+2*(d-n)/3,v=i+2*(p-i)/3,x=m+2*(d-m)/3,b=g+2*(p-g)/3;e.push({key:"C",data:[y,v,x,b,m,g]}),l=d,u=p,n=m,i=g;break}case"A":{let d=Math.abs(f[0]),p=Math.abs(f[1]),m=f[2],g=f[3],y=f[4],v=f[5],x=f[6];d===0||p===0?(e.push({key:"C",data:[n,i,v,x,v,x]}),n=v,i=x):(n!==v||i!==x)&&(fJ(n,i,v,x,d,p,m,g,y).forEach((function(b){e.push({key:"C",data:b})})),n=v,i=x);break}case"Z":e.push({key:"Z",data:[]}),n=a,i=s}r=h}return e}function D2(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function fJ(t,e,r,n,i,a,s,l,u,h){let f=(d=s,Math.PI*d/180);var d;let p=[],m=0,g=0,y=0,v=0;if(h)[m,g,y,v]=h;else{[t,e]=D2(t,e,-f),[r,n]=D2(r,n,-f);let D=(t-r)/2,_=(e-n)/2,O=D*D/(i*i)+_*_/(a*a);O>1&&(O=Math.sqrt(O),i*=O,a*=O);let M=i*i,P=a*a,B=M*P-M*_*_-P*D*D,F=M*_*_+P*D*D,G=(l===u?-1:1)*Math.sqrt(Math.abs(B/F));y=G*i*_/a+(t+r)/2,v=G*-a*D/i+(e+n)/2,m=Math.asin(parseFloat(((e-v)/a).toFixed(9))),g=Math.asin(parseFloat(((n-v)/a).toFixed(9))),tg&&(m-=2*Math.PI),!u&&g>m&&(g-=2*Math.PI)}let x=g-m;if(Math.abs(x)>120*Math.PI/180){let D=g,_=r,O=n;g=u&&g>m?m+120*Math.PI/180*1:m+120*Math.PI/180*-1,p=fJ(r=y+i*Math.cos(g),n=v+a*Math.sin(g),_,O,i,a,s,0,u,[g,D,y,v])}x=g-m;let b=Math.cos(m),T=Math.sin(m),S=Math.cos(g),w=Math.sin(g),k=Math.tan(x/4),A=4/3*i*k,C=4/3*a*k,R=[t,e],I=[t+A*T,e-C*b],L=[r+A*w,n-C*S],E=[r,n];if(I[0]=2*R[0]-I[0],I[1]=2*R[1]-I[1],h)return[I,L,E].concat(p);{p=[I,L,E].concat(p);let D=[];for(let _=0;_2){let i=[];for(let a=0;a2*Math.PI&&(m=0,g=2*Math.PI);let y=2*Math.PI/u.curveStepCount,v=Math.min(y/2,(g-m)/2),x=lJ(v,h,f,d,p,m,g,1,u);if(!u.disableMultiStroke){let b=lJ(v,h,f,d,p,m,g,1.5,u);x.push(...b)}return s&&(l?x.push(...Zh(h,f,h+d*Math.cos(m),f+p*Math.sin(m),u),...Zh(h,f,h+d*Math.cos(g),f+p*Math.sin(g),u)):x.push({op:"lineTo",data:[h,f]},{op:"lineTo",data:[h+d*Math.cos(m),f+p*Math.sin(m)]})),{type:"path",ops:x}}function aJ(t,e){let r=hJ(uJ(V9(t))),n=[],i=[0,0],a=[0,0];for(let{key:s,data:l}of r)switch(s){case"M":a=[l[0],l[1]],i=[l[0],l[1]];break;case"L":n.push(...Zh(a[0],a[1],l[0],l[1],e)),a=[l[0],l[1]];break;case"C":{let[u,h,f,d,p,m]=l;n.push(...sRe(u,h,f,d,p,m,a,e)),a=[p,m];break}case"Z":n.push(...Zh(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]]}return{type:"path",ops:n}}function D9(t,e){let r=[];for(let n of t)if(n.length){let i=e.maxRandomnessOffset||0,a=n.length;if(a>2){r.push({op:"move",data:[n[0][0]+or(i,e),n[0][1]+or(i,e)]});for(let s=1;s500?.4:-.0016668*u+1.233334;let f=i.maxRandomnessOffset||0;f*f*100>l&&(f=u/10);let d=f/2,p=.2+.2*mJ(i),m=i.bowing*i.maxRandomnessOffset*(n-e)/200,g=i.bowing*i.maxRandomnessOffset*(t-r)/200;m=or(m,i,h),g=or(g,i,h);let y=[],v=o(()=>or(d,i,h),"M"),x=o(()=>or(f,i,h),"k"),b=i.preserveVertices;return a&&(s?y.push({op:"move",data:[t+(b?0:v()),e+(b?0:v())]}):y.push({op:"move",data:[t+(b?0:or(f,i,h)),e+(b?0:or(f,i,h))]})),s?y.push({op:"bcurveTo",data:[m+t+(r-t)*p+v(),g+e+(n-e)*p+v(),m+t+2*(r-t)*p+v(),g+e+2*(n-e)*p+v(),r+(b?0:v()),n+(b?0:v())]}):y.push({op:"bcurveTo",data:[m+t+(r-t)*p+x(),g+e+(n-e)*p+x(),m+t+2*(r-t)*p+x(),g+e+2*(n-e)*p+x(),r+(b?0:x()),n+(b?0:x())]}),y}function KT(t,e,r){if(!t.length)return[];let n=[];n.push([t[0][0]+or(e,r),t[0][1]+or(e,r)]),n.push([t[0][0]+or(e,r),t[0][1]+or(e,r)]);for(let i=1;i3){let a=[],s=1-r.curveTightness;i.push({op:"move",data:[t[1][0],t[1][1]]});for(let l=1;l+21&&i.push(l)):i.push(l),i.push(t[e+3])}else{let u=t[e+0],h=t[e+1],f=t[e+2],d=t[e+3],p=Qd(u,h,.5),m=Qd(h,f,.5),g=Qd(f,d,.5),y=Qd(p,m,.5),v=Qd(m,g,.5),x=Qd(y,v,.5);$9([u,p,y,x],0,r,i),$9([x,v,g,d],0,r,i)}var a,s;return i}function lRe(t,e){return rw(t,0,t.length,e)}function rw(t,e,r,n,i){let a=i||[],s=t[e],l=t[r-1],u=0,h=1;for(let f=e+1;fu&&(u=d,h=f)}return Math.sqrt(u)>n?(rw(t,e,h+1,n,a),rw(t,h,r,n,a)):(a.length||a.push(s),a.push(l)),a}function L9(t,e=.15,r){let n=[],i=(t.length-1)/3;for(let a=0;a0?rw(n,0,n.length,r):n}var R2,R9,N9,M9,I9,O9,Ps,P9,nRe,A9,rJ,jT,iRe,co,Em,z9,QT,G9,Ze,Ht=N(()=>{"use strict";o(C9,"t");o(tRe,"e");o(rRe,"s");o(N2,"n");R2=class{static{o(this,"o")}constructor(e){this.helper=e}fillPolygons(e,r){return this._fillPolygons(e,r)}_fillPolygons(e,r){let n=N2(e,r);return{type:"fillSketch",ops:this.renderLines(n,r)}}renderLines(e,r){let n=[];for(let i of e)n.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],r));return n}};o(nw,"a");R9=class extends R2{static{o(this,"h")}fillPolygons(e,r){let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=N2(e,Object.assign({},r,{hachureGap:n})),a=Math.PI/180*r.hachureAngle,s=[],l=.5*n*Math.cos(a),u=.5*n*Math.sin(a);for(let[h,f]of i)nw([h,f])&&s.push([[h[0]-l,h[1]+u],[...f]],[[h[0]+l,h[1]-u],[...f]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},N9=class extends R2{static{o(this,"r")}fillPolygons(e,r){let n=this._fillPolygons(e,r),i=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(e,i);return n.ops=n.ops.concat(a.ops),n}},M9=class{static{o(this,"i")}constructor(e){this.helper=e}fillPolygons(e,r){let n=N2(e,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(n,r)}dotsOnLines(e,r){let n=[],i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);let s=i/4;for(let l of e){let u=nw(l),h=u/i,f=Math.ceil(h)-1,d=u-f*i,p=(l[0][0]+l[1][0])/2-i/4,m=Math.min(l[0][1],l[1][1]);for(let g=0;g{let l=nw(s),u=Math.floor(l/(n+i)),h=(l+i-u*(n+i))/2,f=s[0],d=s[1];f[0]>d[0]&&(f=s[1],d=s[0]);let p=Math.atan((d[1]-f[1])/(d[0]-f[0]));for(let m=0;m{let s=nw(a),l=Math.round(s/(2*r)),u=a[0],h=a[1];u[0]>h[0]&&(u=a[1],h=a[0]);let f=Math.atan((h[1]-u[1])/(h[0]-u[0]));for(let d=0;d2*Math.PI&&(A=0,C=2*Math.PI);let R=(C-A)/b.curveStepCount,I=[];for(let L=A;L<=C;L+=R)I.push([T+w*Math.cos(L),S+k*Math.sin(L)]);return I.push([T+w*Math.cos(C),S+k*Math.sin(C)]),I.push([T,S]),km([I],b)})(e,r,n,i,a,s,h));return h.stroke!==co&&f.push(d),this._d("arc",f,h)}curve(e,r){let n=this._o(r),i=[],a=nJ(e,n);if(n.fill&&n.fill!==co)if(n.fillStyle==="solid"){let s=nJ(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(s.ops)})}else{let s=[],l=e;if(l.length){let u=typeof l[0][0]=="number"?[l]:l;for(let h of u)h.length<3?s.push(...h):h.length===3?s.push(...L9(cJ([h[0],h[0],h[1],h[2]]),10,(1+n.roughness)/2)):s.push(...L9(cJ(h),10,(1+n.roughness)/2))}s.length&&i.push(km([s],n))}return n.stroke!==co&&i.push(a),this._d("curve",i,n)}polygon(e,r){let n=this._o(r),i=[],a=ZT(e,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(D9([e],n)):i.push(km([e],n))),n.stroke!==co&&i.push(a),this._d("polygon",i,n)}path(e,r){let n=this._o(r),i=[];if(!e)return this._d("path",i,n);e=(e||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let a=n.fill&&n.fill!=="transparent"&&n.fill!==co,s=n.stroke!==co,l=!!(n.simplification&&n.simplification<1),u=(function(f,d,p){let m=hJ(uJ(V9(f))),g=[],y=[],v=[0,0],x=[],b=o(()=>{x.length>=4&&y.push(...L9(x,d)),x=[]},"i"),T=o(()=>{b(),y.length&&(g.push(y),y=[])},"c");for(let{key:w,data:k}of m)switch(w){case"M":T(),v=[k[0],k[1]],y.push(v);break;case"L":b(),y.push([k[0],k[1]]);break;case"C":if(!x.length){let A=y.length?y[y.length-1]:v;x.push([A[0],A[1]])}x.push([k[0],k[1]]),x.push([k[2],k[3]]),x.push([k[4],k[5]]);break;case"Z":b(),y.push([v[0],v[1]])}if(T(),!p)return g;let S=[];for(let w of g){let k=lRe(w,p);k.length&&S.push(k)}return S})(e,1,l?4-4*(n.simplification||1):(1+n.roughness)/2),h=aJ(e,n);if(a)if(n.fillStyle==="solid")if(u.length===1){let f=aJ(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(f.ops)})}else i.push(D9(u,n));else i.push(km(u,n));return s&&(l?u.forEach((f=>{i.push(ZT(f,!1,n))})):i.push(h)),this._d("path",i,n)}opsToPath(e,r){let n="";for(let i of e.ops){let a=typeof r=="number"&&r>=0?i.data.map((s=>+s.toFixed(r))):i.data;switch(i.op){case"move":n+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `}}return n.trim()}toPaths(e){let r=e.sets||[],n=e.options||this.defaultOptions,i=[];for(let a of r){let s=null;switch(a.type){case"path":s={d:this.opsToPath(a),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:co};break;case"fillPath":s={d:this.opsToPath(a),stroke:co,strokeWidth:0,fill:n.fill||co};break;case"fillSketch":s=this.fillSketch(a,n)}s&&i.push(s)}return i}fillSketch(e,r){let n=r.fillWeight;return n<0&&(n=r.strokeWidth/2),{d:this.opsToPath(e),stroke:r.fill||co,strokeWidth:n,fill:co}}_mergedShape(e){return e.filter(((r,n)=>n===0||r.op!=="move"))}},z9=class{static{o(this,"st")}constructor(e,r){this.canvas=e,this.ctx=this.canvas.getContext("2d"),this.gen=new Em(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.ctx,a=e.options.fixedDecimalPlaceDigits;for(let s of r)switch(s.type){case"path":i.save(),i.strokeStyle=n.stroke==="none"?"transparent":n.stroke,i.lineWidth=n.strokeWidth,n.strokeLineDash&&i.setLineDash(n.strokeLineDash),n.strokeLineDashOffset&&(i.lineDashOffset=n.strokeLineDashOffset),this._drawToContext(i,s,a),i.restore();break;case"fillPath":{i.save(),i.fillStyle=n.fill||"";let l=e.shape==="curve"||e.shape==="polygon"||e.shape==="path"?"evenodd":"nonzero";this._drawToContext(i,s,a,l),i.restore();break}case"fillSketch":this.fillSketch(i,s,n)}}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2),e.save(),n.fillLineDash&&e.setLineDash(n.fillLineDash),n.fillLineDashOffset&&(e.lineDashOffset=n.fillLineDashOffset),e.strokeStyle=n.fill||"",e.lineWidth=i,this._drawToContext(e,r,n.fixedDecimalPlaceDigits),e.restore()}_drawToContext(e,r,n,i="nonzero"){e.beginPath();for(let a of r.ops){let s=typeof n=="number"&&n>=0?a.data.map((l=>+l.toFixed(n))):a.data;switch(a.op){case"move":e.moveTo(s[0],s[1]);break;case"bcurveTo":e.bezierCurveTo(s[0],s[1],s[2],s[3],s[4],s[5]);break;case"lineTo":e.lineTo(s[0],s[1])}}r.type==="fillPath"?e.fill(i):e.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s),s}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s),s}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s),s}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a),a}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n),n}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n),n}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h),h}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n),n}path(e,r){let n=this.gen.path(e,r);return this.draw(n),n}},QT="http://www.w3.org/2000/svg",G9=class{static{o(this,"ot")}constructor(e,r){this.svg=e,this.gen=new Em(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(QT,"g"),s=e.options.fixedDecimalPlaceDigits;for(let l of r){let u=null;switch(l.type){case"path":u=i.createElementNS(QT,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke",n.stroke),u.setAttribute("stroke-width",n.strokeWidth+""),u.setAttribute("fill","none"),n.strokeLineDash&&u.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&u.setAttribute("stroke-dashoffset",`${n.strokeLineDashOffset}`);break;case"fillPath":u=i.createElementNS(QT,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke","none"),u.setAttribute("stroke-width","0"),u.setAttribute("fill",n.fill||""),e.shape!=="curve"&&e.shape!=="polygon"||u.setAttribute("fill-rule","evenodd");break;case"fillSketch":u=this.fillSketch(i,l,n)}u&&a.appendChild(u)}return a}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2);let a=e.createElementNS(QT,"path");return a.setAttribute("d",this.opsToPath(r,n.fixedDecimalPlaceDigits)),a.setAttribute("stroke",n.fill||""),a.setAttribute("stroke-width",i+""),a.setAttribute("fill","none"),n.fillLineDash&&a.setAttribute("stroke-dasharray",n.fillLineDash.join(" ").trim()),n.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${n.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(e,r){return this.gen.opsToPath(e,r)}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s)}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s)}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s)}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a)}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n)}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n)}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h)}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n)}path(e,r){let n=this.gen.path(e,r);return this.draw(n)}},Ze={canvas:o((t,e)=>new z9(t,e),"canvas"),svg:o((t,e)=>new G9(t,e),"svg"),generator:o(t=>new Em(t),"generator"),newSeed:o(()=>Em.newSeed(),"newSeed")}});function gJ(t,e){let{labelStyles:r}=je(e);e.labelStyle=r;let n=st(e),i=n;n||(i="anchor");let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=1,{cssStyles:l}=e,u=Ze.svg(a),h=Je(e,{fill:"black",stroke:"none",fillStyle:"solid"});e.look!=="handDrawn"&&(h.roughness=0);let f=u.circle(0,0,s*2,h),d=a.insert(()=>f,":first-child");return d.attr("class","anchor").attr("style",Cn(l)),Qe(e,d),e.intersect=function(p){return X.info("Circle intersect",e,s,p),Xe.circle(e,s,p)},a}var yJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();tr();o(gJ,"anchor")});function vJ(t,e,r,n,i,a,s){let u=(t+r)/2,h=(e+n)/2,f=Math.atan2(n-e,r-t),d=(r-t)/2,p=(n-e)/2,m=d/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(f)*(s?-1:1),b=h-v*i*Math.cos(f)*(s?-1:1),T=Math.atan2((e-b)/a,(t-x)/i),w=Math.atan2((n-b)/a,(r-x)/i)-T;s&&w<0&&(w+=2*Math.PI),!s&&w>0&&(w-=2*Math.PI);let k=[];for(let A=0;A<20;A++){let C=A/19,R=T+C*w,I=x+i*Math.cos(R),L=b+a*Math.sin(R);k.push({x:I,y:L})}return k}async function xJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.width+e.padding+20,l=a.height+e.padding,u=l/2,h=u/(2.5+l/50),{cssStyles:f}=e,d=[{x:s/2,y:-l/2},{x:-s/2,y:-l/2},...vJ(-s/2,-l/2,-s/2,l/2,h,u,!1),{x:s/2,y:l/2},...vJ(s/2,l/2,s/2,-l/2,h,u,!0)],p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Vt(d),y=p.path(g,m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(${h/2}, 0)`),Qe(e,v),e.intersect=function(x){return Xe.polygon(e,d,x)},i}var bJ=N(()=>{"use strict";It();Ut();$t();Ht();o(vJ,"generateArcPoints");o(xJ,"bowTieRect")});function Bs(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var Jh=N(()=>{"use strict";o(Bs,"insertPolygonShape")});async function TJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.height+e.padding,l=12,u=a.width+e.padding+l,h=0,f=u,d=-s,p=0,m=[{x:h+l,y:d},{x:f,y:d},{x:f,y:p},{x:h,y:p},{x:h,y:d+l},{x:h+l,y:d}],g,{cssStyles:y}=e;if(e.look==="handDrawn"){let v=Ze.svg(i),x=Je(e,{}),b=Vt(m),T=v.path(b,x);g=i.insert(()=>T,":first-child").attr("transform",`translate(${-u/2}, ${s/2})`),y&&g.attr("style",y)}else g=Bs(i,u,s,m);return n&&g.attr("style",n),Qe(e,g),e.intersect=function(v){return Xe.polygon(e,m,v)},i}var wJ=N(()=>{"use strict";It();Ut();$t();Ht();Jh();It();o(TJ,"card")});function kJ(t,e){let{nodeStyles:r}=je(e);e.label="";let n=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),{cssStyles:i}=e,a=Math.max(28,e.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],l=Ze.svg(n),u=Je(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=Vt(s),f=l.path(h,u),d=n.insert(()=>f,":first-child");return i&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",i),r&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(p){return Xe.polygon(e,s,p)},n}var EJ=N(()=>{"use strict";Ut();Ht();$t();It();o(kJ,"choice")});async function iw(t,e,r){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n;let{shapeSvg:a,bbox:s,halfPadding:l}=await ut(t,e,st(e)),u=r?.padding??l,h=s.width/2+u,f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Ze.svg(a),m=Je(e,{}),g=p.circle(0,0,h*2,m);f=a.insert(()=>g,":first-child"),f.attr("class","basic label-container").attr("style",Cn(d))}else f=a.insert("circle",":first-child").attr("class","basic label-container").attr("style",i).attr("r",h).attr("cx",0).attr("cy",0);return Qe(e,f),e.calcIntersect=function(p,m){let g=p.width/2;return Xe.circle(p,g,m)},e.intersect=function(p){return X.info("Circle intersect",e,h,p),Xe.circle(e,h,p)},a}var U9=N(()=>{"use strict";Ht();pt();tr();Ut();$t();It();o(iw,"circle")});function cRe(t){let e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),n=t*2,i={x:n/2*e,y:n/2*r},a={x:-(n/2)*e,y:n/2*r},s={x:-(n/2)*e,y:-(n/2)*r},l={x:n/2*e,y:-(n/2)*r};return`M ${a.x},${a.y} L ${l.x},${l.y} + M ${i.x},${i.y} L ${s.x},${s.y}`}function SJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r,e.label="";let i=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),{cssStyles:s}=e,l=Ze.svg(i),u=Je(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=l.circle(0,0,a*2,u),f=cRe(a),d=l.path(f,u),p=i.insert(()=>h,":first-child");return p.insert(()=>d),s&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",s),n&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",n),Qe(e,p),e.intersect=function(m){return X.info("crossedCircle intersect",e,{radius:a,point:m}),Xe.circle(e,a,m)},i}var CJ=N(()=>{"use strict";pt();It();$t();Ht();Ut();o(cRe,"createLine");o(SJ,"crossedCircle")});function ef(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dT,":first-child").attr("stroke-opacity",0),S.insert(()=>x,":first-child"),S.attr("class","text"),f&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(${h}, 0)`),s.attr("transform",`translate(${-l/2+h-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,S),e.intersect=function(w){return Xe.polygon(e,p,w)},i}var _J=N(()=>{"use strict";It();Ut();$t();Ht();o(ef,"generateCirclePoints");o(AJ,"curlyBraceLeft")});function tf(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dT,":first-child").attr("stroke-opacity",0),S.insert(()=>x,":first-child"),S.attr("class","text"),f&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(${-h}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,S),e.intersect=function(w){return Xe.polygon(e,p,w)},i}var LJ=N(()=>{"use strict";It();Ut();$t();Ht();o(tf,"generateCirclePoints");o(DJ,"curlyBraceRight")});function Oa(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dA,":first-child").attr("stroke-opacity",0),C.insert(()=>b,":first-child"),C.insert(()=>w,":first-child"),C.attr("class","text"),f&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${h-h/4}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,C),e.intersect=function(R){return Xe.polygon(e,m,R)},i}var NJ=N(()=>{"use strict";It();Ut();$t();Ht();o(Oa,"generateCirclePoints");o(RJ,"curlyBraces")});async function MJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=80,l=20,u=Math.max(s,(a.width+(e.padding??0)*2)*1.25,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=u,y=h,v=g-f,x=y/4,b=[{x:v,y:0},{x,y:0},{x:0,y:y/2},{x,y},{x:v,y},...Kd(-v,-y/2,f,50,270,90)],T=Vt(b),S=p.path(T,m),w=i.insert(()=>S,":first-child");return w.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&w.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&w.selectChildren("path").attr("style",n),w.attr("transform",`translate(${-u/2}, ${-h/2})`),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,b,k)},i}var IJ=N(()=>{"use strict";It();Ut();$t();Ht();o(MJ,"curvedTrapezoid")});async function OJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+e.padding,e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+e.padding,e.height??0),d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Ze.svg(i),g=hRe(0,0,l,f,u,h),y=fRe(0,h,l,f,u,h),v=m.path(g,Je(e,{})),x=m.path(y,Je(e,{fill:"none"}));d=i.insert(()=>x,":first-child"),d=i.insert(()=>v,":first-child"),d.attr("class","basic label-container"),p&&d.attr("style",p)}else{let m=uRe(0,0,l,f,u,h);d=i.insert("path",":first-child").attr("d",m).attr("class","basic label-container").attr("style",Cn(p)).attr("style",n)}return d.attr("label-offset-y",h),d.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),Qe(e,d),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+(e.padding??0)/1.5-(a.y-(a.top??0))})`),e.intersect=function(m){let g=Xe.rect(e,m),y=g.x-(e.x??0);if(u!=0&&(Math.abs(y)<(e.width??0)/2||Math.abs(y)==(e.width??0)/2&&Math.abs(g.y-(e.y??0))>(e.height??0)/2-h)){let v=h*h*(1-y*y/(u*u));v>0&&(v=Math.sqrt(v)),v=h-v,m.y-(e.y??0)>0&&(v=-v),g.y+=v}return g},i}var uRe,hRe,fRe,PJ=N(()=>{"use strict";It();Ut();$t();Ht();tr();uRe=o((t,e,r,n,i,a)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createCylinderPathD"),hRe=o((t,e,r,n,i,a)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createOuterCylinderPathD"),fRe=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(OJ,"cylinder")});async function BJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=a.width+e.padding,u=a.height+e.padding,h=u*.2,f=-l/2,d=-u/2-h/2,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d+h},{x:-f,y:d+h},{x:-f,y:-d},{x:f,y:-d},{x:f,y:d},{x:-f,y:d},{x:-f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${f+(e.padding??0)/2-(a.x-(a.left??0))}, ${d+h+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.rect(e,b)},i}var FJ=N(()=>{"use strict";It();Ut();$t();Ht();o(BJ,"dividedRectangle")});async function $J(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await ut(t,e,st(e)),u=a.width/2+s+5,h=a.width/2+s,f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Ze.svg(i),m=Je(e,{roughness:.2,strokeWidth:2.5}),g=Je(e,{roughness:.2,strokeWidth:1.5}),y=p.circle(0,0,u*2,m),v=p.circle(0,0,h*2,g);f=i.insert("g",":first-child"),f.attr("class",Cn(e.cssClasses)).attr("style",Cn(d)),f.node()?.appendChild(y),f.node()?.appendChild(v)}else{f=i.insert("g",":first-child");let p=f.insert("circle",":first-child"),m=f.insert("circle");f.attr("class","basic label-container").attr("style",n),p.attr("class","outer-circle").attr("style",n).attr("r",u).attr("cx",0).attr("cy",0),m.attr("class","inner-circle").attr("style",n).attr("r",h).attr("cx",0).attr("cy",0)}return Qe(e,f),e.intersect=function(p){return X.info("DoubleCircle intersect",e,u,p),Xe.circle(e,u,p)},i}var zJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();tr();o($J,"doublecircle")});function GJ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=je(e);e.label="",e.labelStyle=n;let a=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),s=7,{cssStyles:l}=e,u=Ze.svg(a),{nodeBorder:h}=r,f=Je(e,{fillStyle:"solid"});e.look!=="handDrawn"&&(f.roughness=0);let d=u.circle(0,0,s*2,f),p=a.insert(()=>d,":first-child");return p.selectAll("path").attr("style",`fill: ${h} !important;`),l&&l.length>0&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",l),i&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",i),Qe(e,p),e.intersect=function(m){return X.info("filledCircle intersect",e,{radius:s,point:m}),Xe.circle(e,s,m)},a}var VJ=N(()=>{"use strict";Ht();pt();Ut();$t();It();o(GJ,"filledCircle")});async function UJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=a.width+(e.padding??0),u=l+a.height,h=l+a.height,f=[{x:0,y:-u},{x:h,y:-u},{x:h/2,y:0}],{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Vt(f),y=p.path(g,m),v=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`);return d&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),e.width=l,e.height=u,Qe(e,v),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${-u/2+(e.padding??0)/2+(a.y-(a.top??0))})`),e.intersect=function(x){return X.info("Triangle intersect",e,f,x),Xe.polygon(e,f,x)},i}var HJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();It();o(UJ,"flippedTriangle")});function qJ(t,e,{dir:r,config:{state:n,themeVariables:i}}){let{nodeStyles:a}=je(e);e.label="";let s=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),{cssStyles:l}=e,u=Math.max(70,e?.width??0),h=Math.max(10,e?.height??0);r==="LR"&&(u=Math.max(10,e?.width??0),h=Math.max(70,e?.height??0));let f=-1*u/2,d=-1*h/2,p=Ze.svg(s),m=Je(e,{stroke:i.lineColor,fill:i.lineColor});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(f,d,u,h,m),y=s.insert(()=>g,":first-child");l&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",a),Qe(e,y);let v=n?.padding??0;return e.width&&e.height&&(e.width+=v/2||0,e.height+=v/2||0),e.intersect=function(x){return Xe.rect(e,x)},s}var WJ=N(()=>{"use strict";Ht();Ut();$t();It();o(qJ,"forkJoin")});async function YJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let i=80,a=50,{shapeSvg:s,bbox:l}=await ut(t,e,st(e)),u=Math.max(i,l.width+(e.padding??0)*2,e?.width??0),h=Math.max(a,l.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Ze.svg(s),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-u/2,y:-h/2},{x:u/2-f,y:-h/2},...Kd(-u/2+f,0,f,50,90,270),{x:u/2-f,y:h/2},{x:-u/2,y:h/2}],y=Vt(g),v=p.path(y,m),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),Qe(e,x),e.intersect=function(b){return X.info("Pill intersect",e,{radius:f,point:b}),Xe.polygon(e,g,b)},s}var XJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();o(YJ,"halfRoundedRectangle")});async function jJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.height+(e.padding??0),l=a.width+(e.padding??0)*2.5,{cssStyles:u}=e,h=Ze.svg(i),f=Je(e,{});e.look!=="handDrawn"&&(f.roughness=0,f.fillStyle="solid");let d=l/2,p=d/6;d=d+p;let m=s/2,g=m/2,y=d-g,v=[{x:-y,y:-m},{x:0,y:-m},{x:y,y:-m},{x:d,y:0},{x:y,y:m},{x:0,y:m},{x:-y,y:m},{x:-d,y:0}],x=Vt(v),b=h.path(x,f),T=i.insert(()=>b,":first-child");return T.attr("class","basic label-container"),u&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",u),n&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),e.width=l,e.height=s,Qe(e,T),e.intersect=function(S){return Xe.polygon(e,v,S)},i}var KJ=N(()=>{"use strict";It();Ut();$t();Ht();o(jJ,"hexagon")});async function QJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.label="",e.labelStyle=r;let{shapeSvg:i}=await ut(t,e,st(e)),a=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:l}=e,u=Ze.svg(i),h=Je(e,{});e.look!=="handDrawn"&&(h.roughness=0,h.fillStyle="solid");let f=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],d=Vt(f),p=u.path(d,h),m=i.insert(()=>p,":first-child");return m.attr("class","basic label-container"),l&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),n&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",n),m.attr("transform",`translate(${-a/2}, ${-s/2})`),Qe(e,m),e.intersect=function(g){return X.info("Pill intersect",e,{points:f}),Xe.polygon(e,f,g)},i}var ZJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();o(QJ,"hourglass")});async function JJ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await ut(t,e,"icon-shape default"),p=e.pos==="t",m=l,g=l,{nodeBorder:y}=r,{stylesMap:v}=wc(e),x=-g/2,b=-m/2,T=e.label?8:0,S=Ze.svg(h),w=Je(e,{stroke:"none",fill:"none"});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let k=S.rectangle(x,b,g,m,w),A=Math.max(g,f.width),C=m+f.height+T,R=S.rectangle(-A/2,-C/2,A,C,{...w,fill:"transparent",stroke:"none"}),I=h.insert(()=>k,":first-child"),L=h.insert(()=>R);if(e.icon){let E=h.append("g");E.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let D=E.node().getBBox(),_=D.width,O=D.height,M=D.x,P=D.y;E.attr("transform",`translate(${-_/2-M},${p?f.height/2+T/2-O/2-P:-f.height/2-T/2-O/2-P})`),E.attr("style",`color: ${v.get("stroke")??y};`)}return d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${p?-C/2:C/2-f.height})`),I.attr("transform",`translate(0,${p?f.height/2+T/2:-f.height/2-T/2})`),Qe(e,L),e.intersect=function(E){if(X.info("iconSquare intersect",e,E),!e.label)return Xe.rect(e,E);let D=e.x??0,_=e.y??0,O=e.height??0,M=[];return p?M=[{x:D-f.width/2,y:_-O/2},{x:D+f.width/2,y:_-O/2},{x:D+f.width/2,y:_-O/2+f.height+T},{x:D+g/2,y:_-O/2+f.height+T},{x:D+g/2,y:_+O/2},{x:D-g/2,y:_+O/2},{x:D-g/2,y:_-O/2+f.height+T},{x:D-f.width/2,y:_-O/2+f.height+T}]:M=[{x:D-g/2,y:_-O/2},{x:D+g/2,y:_-O/2},{x:D+g/2,y:_-O/2+m},{x:D+f.width/2,y:_-O/2+m},{x:D+f.width/2/2,y:_+O/2},{x:D-f.width/2,y:_+O/2},{x:D-f.width/2,y:_-O/2+m},{x:D-g/2,y:_-O/2+m}],Xe.polygon(e,M,E)},h}var eee=N(()=>{"use strict";Ht();pt();nc();Ut();$t();It();o(JJ,"icon")});async function tee(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await ut(t,e,"icon-shape default"),p=20,m=e.label?8:0,g=e.pos==="t",{nodeBorder:y,mainBkg:v}=r,{stylesMap:x}=wc(e),b=Ze.svg(h),T=Je(e,{});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let S=x.get("fill");T.stroke=S??v;let w=h.append("g");e.icon&&w.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let k=w.node().getBBox(),A=k.width,C=k.height,R=k.x,I=k.y,L=Math.max(A,C)*Math.SQRT2+p*2,E=b.circle(0,0,L,T),D=Math.max(L,f.width),_=L+f.height+m,O=b.rectangle(-D/2,-_/2,D,_,{...T,fill:"transparent",stroke:"none"}),M=h.insert(()=>E,":first-child"),P=h.insert(()=>O);return w.attr("transform",`translate(${-A/2-R},${g?f.height/2+m/2-C/2-I:-f.height/2-m/2-C/2-I})`),w.attr("style",`color: ${x.get("stroke")??y};`),d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${g?-_/2:_/2-f.height})`),M.attr("transform",`translate(0,${g?f.height/2+m/2:-f.height/2-m/2})`),Qe(e,P),e.intersect=function(B){return X.info("iconSquare intersect",e,B),Xe.rect(e,B)},h}var ree=N(()=>{"use strict";Ht();pt();nc();Ut();$t();It();o(tee,"iconCircle")});var Fs,Zd=N(()=>{"use strict";Fs=o((t,e,r,n,i)=>["M",t+i,e,"H",t+r-i,"A",i,i,0,0,1,t+r,e+i,"V",e+n-i,"A",i,i,0,0,1,t+r-i,e+n,"H",t+i,"A",i,i,0,0,1,t,e+n-i,"V",e+i,"A",i,i,0,0,1,t+i,e,"Z"].join(" "),"createRoundedRectPathD")});async function nee(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await ut(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=wc(e),T=-y/2,S=-g/2,w=e.label?8:0,k=Ze.svg(h),A=Je(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let C=b.get("fill");A.stroke=C??x;let R=k.path(Fs(T,S,y,g,5),A),I=Math.max(y,f.width),L=g+f.height+w,E=k.rectangle(-I/2,-L/2,I,L,{...A,fill:"transparent",stroke:"none"}),D=h.insert(()=>R,":first-child").attr("class","icon-shape2"),_=h.insert(()=>E);if(e.icon){let O=h.append("g");O.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let M=O.node().getBBox(),P=M.width,B=M.height,F=M.x,G=M.y;O.attr("transform",`translate(${-P/2-F},${m?f.height/2+w/2-B/2-G:-f.height/2-w/2-B/2-G})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-L/2:L/2-f.height})`),D.attr("transform",`translate(0,${m?f.height/2+w/2:-f.height/2-w/2})`),Qe(e,_),e.intersect=function(O){if(X.info("iconSquare intersect",e,O),!e.label)return Xe.rect(e,O);let M=e.x??0,P=e.y??0,B=e.height??0,F=[];return m?F=[{x:M-f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2+f.height+w},{x:M+y/2,y:P-B/2+f.height+w},{x:M+y/2,y:P+B/2},{x:M-y/2,y:P+B/2},{x:M-y/2,y:P-B/2+f.height+w},{x:M-f.width/2,y:P-B/2+f.height+w}]:F=[{x:M-y/2,y:P-B/2},{x:M+y/2,y:P-B/2},{x:M+y/2,y:P-B/2+g},{x:M+f.width/2,y:P-B/2+g},{x:M+f.width/2/2,y:P+B/2},{x:M-f.width/2,y:P+B/2},{x:M-f.width/2,y:P-B/2+g},{x:M-y/2,y:P-B/2+g}],Xe.polygon(e,F,O)},h}var iee=N(()=>{"use strict";Ht();pt();nc();Ut();$t();Zd();It();o(nee,"iconRounded")});async function aee(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await ut(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=wc(e),T=-y/2,S=-g/2,w=e.label?8:0,k=Ze.svg(h),A=Je(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let C=b.get("fill");A.stroke=C??x;let R=k.path(Fs(T,S,y,g,.1),A),I=Math.max(y,f.width),L=g+f.height+w,E=k.rectangle(-I/2,-L/2,I,L,{...A,fill:"transparent",stroke:"none"}),D=h.insert(()=>R,":first-child"),_=h.insert(()=>E);if(e.icon){let O=h.append("g");O.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let M=O.node().getBBox(),P=M.width,B=M.height,F=M.x,G=M.y;O.attr("transform",`translate(${-P/2-F},${m?f.height/2+w/2-B/2-G:-f.height/2-w/2-B/2-G})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-L/2:L/2-f.height})`),D.attr("transform",`translate(0,${m?f.height/2+w/2:-f.height/2-w/2})`),Qe(e,_),e.intersect=function(O){if(X.info("iconSquare intersect",e,O),!e.label)return Xe.rect(e,O);let M=e.x??0,P=e.y??0,B=e.height??0,F=[];return m?F=[{x:M-f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2+f.height+w},{x:M+y/2,y:P-B/2+f.height+w},{x:M+y/2,y:P+B/2},{x:M-y/2,y:P+B/2},{x:M-y/2,y:P-B/2+f.height+w},{x:M-f.width/2,y:P-B/2+f.height+w}]:F=[{x:M-y/2,y:P-B/2},{x:M+y/2,y:P-B/2},{x:M+y/2,y:P-B/2+g},{x:M+f.width/2,y:P-B/2+g},{x:M+f.width/2/2,y:P+B/2},{x:M-f.width/2,y:P+B/2},{x:M-f.width/2,y:P-B/2+g},{x:M-y/2,y:P-B/2+g}],Xe.polygon(e,F,O)},h}var see=N(()=>{"use strict";Ht();pt();nc();Ut();Zd();$t();It();o(aee,"iconSquare")});async function oee(t,e,{config:{flowchart:r}}){let n=new Image;n.src=e?.img??"",await n.decode();let i=Number(n.naturalWidth.toString().replace("px","")),a=Number(n.naturalHeight.toString().replace("px",""));e.imageAspectRatio=i/a;let{labelStyles:s}=je(e);e.labelStyle=s;let l=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;let u=Math.max(e.label?l??0:0,e?.assetWidth??i),h=e.constraint==="on"&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:u,f=e.constraint==="on"?h/e.imageAspectRatio:e?.assetHeight??a;e.width=Math.max(h,l??0);let{shapeSvg:d,bbox:p,label:m}=await ut(t,e,"image-shape default"),g=e.pos==="t",y=-h/2,v=-f/2,x=e.label?8:0,b=Ze.svg(d),T=Je(e,{});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let S=b.rectangle(y,v,h,f,T),w=Math.max(h,p.width),k=f+p.height+x,A=b.rectangle(-w/2,-k/2,w,k,{...T,fill:"none",stroke:"none"}),C=d.insert(()=>S,":first-child"),R=d.insert(()=>A);if(e.img){let I=d.append("image");I.attr("href",e.img),I.attr("width",h),I.attr("height",f),I.attr("preserveAspectRatio","none"),I.attr("transform",`translate(${-h/2},${g?k/2-f:-k/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-f/2-p.height/2-x/2:f/2-p.height/2+x/2})`),C.attr("transform",`translate(0,${g?p.height/2+x/2:-p.height/2-x/2})`),Qe(e,R),e.intersect=function(I){if(X.info("iconSquare intersect",e,I),!e.label)return Xe.rect(e,I);let L=e.x??0,E=e.y??0,D=e.height??0,_=[];return g?_=[{x:L-p.width/2,y:E-D/2},{x:L+p.width/2,y:E-D/2},{x:L+p.width/2,y:E-D/2+p.height+x},{x:L+h/2,y:E-D/2+p.height+x},{x:L+h/2,y:E+D/2},{x:L-h/2,y:E+D/2},{x:L-h/2,y:E-D/2+p.height+x},{x:L-p.width/2,y:E-D/2+p.height+x}]:_=[{x:L-h/2,y:E-D/2},{x:L+h/2,y:E-D/2},{x:L+h/2,y:E-D/2+f},{x:L+p.width/2,y:E-D/2+f},{x:L+p.width/2/2,y:E+D/2},{x:L-p.width/2,y:E+D/2},{x:L-p.width/2,y:E-D/2+f},{x:L-h/2,y:E-D/2+f}],Xe.polygon(e,_,I)},d}var lee=N(()=>{"use strict";Ht();pt();Ut();$t();It();o(oee,"imageSquare")});async function cee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=[{x:0,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:-3*l/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var uee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(cee,"inv_trapezoid")});async function Jd(t,e,r){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n;let{shapeSvg:a,bbox:s}=await ut(t,e,st(e)),l=Math.max(s.width+r.labelPaddingX*2,e?.width||0),u=Math.max(s.height+r.labelPaddingY*2,e?.height||0),h=-l/2,f=-u/2,d,{rx:p,ry:m}=e,{cssStyles:g}=e;if(r?.rx&&r.ry&&(p=r.rx,m=r.ry),e.look==="handDrawn"){let y=Ze.svg(a),v=Je(e,{}),x=p||m?y.path(Fs(h,f,l,u,p||0),v):y.rectangle(h,f,l,u,v);d=a.insert(()=>x,":first-child"),d.attr("class","basic label-container").attr("style",Cn(g))}else d=a.insert("rect",":first-child"),d.attr("class","basic label-container").attr("style",i).attr("rx",Cn(p)).attr("ry",Cn(m)).attr("x",h).attr("y",f).attr("width",l).attr("height",u);return Qe(e,d),e.calcIntersect=function(y,v){return Xe.rect(y,v)},e.intersect=function(y){return Xe.rect(e,y)},a}var M2=N(()=>{"use strict";It();Ut();Zd();$t();Ht();tr();o(Jd,"drawRect")});async function hee(t,e){let{shapeSvg:r,bbox:n,label:i}=await ut(t,e,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),i.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)-(n.y-(n.top??0))})`),Qe(e,a),e.intersect=function(u){return Xe.rect(e,u)},r}var fee=N(()=>{"use strict";M2();It();Ut();o(hee,"labelRect")});async function dee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:0,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:-(3*l)/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var pee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(dee,"lean_left")});async function mee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:-3*l/6,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var gee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(mee,"lean_right")});function yee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.label="",e.labelStyle=r;let i=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,s=Math.max(35,e?.width??0),l=Math.max(35,e?.height??0),u=7,h=[{x:s,y:0},{x:0,y:l+u/2},{x:s-2*u,y:l+u/2},{x:0,y:2*l},{x:s,y:l-u/2},{x:2*u,y:l-u/2}],f=Ze.svg(i),d=Je(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=Vt(h),m=f.path(p,d),g=i.insert(()=>m,":first-child");return a&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",a),n&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",n),g.attr("transform",`translate(-${s/2},${-l})`),Qe(e,g),e.intersect=function(y){return X.info("lightningBolt intersect",e,y),Xe.polygon(e,h,y)},i}var vee=N(()=>{"use strict";pt();It();$t();Ht();Ut();It();o(yee,"lightningBolt")});async function xee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0),e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+(e.padding??0),e.height??0),d=f*.1,p,{cssStyles:m}=e;if(e.look==="handDrawn"){let g=Ze.svg(i),y=pRe(0,0,l,f,u,h,d),v=mRe(0,h,l,f,u,h),x=Je(e,{}),b=g.path(y,x),T=g.path(v,x);i.insert(()=>T,":first-child").attr("class","line"),p=i.insert(()=>b,":first-child"),p.attr("class","basic label-container"),m&&p.attr("style",m)}else{let g=dRe(0,0,l,f,u,h,d);p=i.insert("path",":first-child").attr("d",g).attr("class","basic label-container").attr("style",Cn(m)).attr("style",n)}return p.attr("label-offset-y",h),p.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),Qe(e,p),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),e.intersect=function(g){let y=Xe.rect(e,g),v=y.x-(e.x??0);if(u!=0&&(Math.abs(v)<(e.width??0)/2||Math.abs(v)==(e.width??0)/2&&Math.abs(y.y-(e.y??0))>(e.height??0)/2-h)){let x=h*h*(1-v*v/(u*u));x>0&&(x=Math.sqrt(x)),x=h-x,g.y-(e.y??0)>0&&(x=-x),y.y+=x}return y},i}var dRe,pRe,mRe,bee=N(()=>{"use strict";It();Ut();$t();Ht();tr();dRe=o((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),pRe=o((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),mRe=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(xee,"linedCylinder")});async function Tee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-l/2-l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:f/2},...Go(-l/2-l/2*.1,f/2,l/2+l/2*.1,f/2,h,.8),{x:l/2+l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:-f/2},{x:-l/2,y:-f/2},{x:-l/2,y:f/2*1.1},{x:-l/2,y:-f/2}],y=p.polygon(g.map(x=>[x.x,x.y]),m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)+l/2*.1/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),Qe(e,v),e.intersect=function(x){return Xe.polygon(e,g,x)},i}var wee=N(()=>{"use strict";It();Ut();Ht();$t();o(Tee,"linedWaveEdgedRect")});async function kee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{}),y=[{x:f-h,y:d+h},{x:f-h,y:d+u+h},{x:f+l-h,y:d+u+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d+u-h},{x:f+l+h,y:d+u-h},{x:f+l+h,y:d-h},{x:f+h,y:d-h},{x:f+h,y:d},{x:f,y:d},{x:f,y:d+h}],v=[{x:f,y:d+h},{x:f+l-h,y:d+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d},{x:f,y:d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Vt(y),b=m.path(x,g),T=Vt(v),S=m.path(T,{...g,fill:"none"}),w=i.insert(()=>S,":first-child");return w.insert(()=>b,":first-child"),w.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)-h-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,y,k)},i}var Eee=N(()=>{"use strict";It();$t();Ht();Ut();o(kee,"multiRect")});async function See(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,d=-l/2,p=-f/2,m=5,{cssStyles:g}=e,y=Go(d-m,p+f+m,d+l-m,p+f+m,h,.8),v=y?.[y.length-1],x=[{x:d-m,y:p+m},{x:d-m,y:p+f+m},...y,{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:v.y-2*m},{x:d+l+m,y:v.y-2*m},{x:d+l+m,y:p-m},{x:d+m,y:p-m},{x:d+m,y:p},{x:d,y:p},{x:d,y:p+m}],b=[{x:d,y:p+m},{x:d+l-m,y:p+m},{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:p},{x:d,y:p}],T=Ze.svg(i),S=Je(e,{});e.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let w=Vt(x),k=T.path(w,S),A=Vt(b),C=T.path(A,S),R=i.insert(()=>k,":first-child");return R.insert(()=>C),R.attr("class","basic label-container"),g&&e.look!=="handDrawn"&&R.selectAll("path").attr("style",g),n&&e.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-(a.width/2)-m-(a.x-(a.left??0))}, ${-(a.height/2)+m-h/2-(a.y-(a.top??0))})`),Qe(e,R),e.intersect=function(I){return Xe.polygon(e,x,I)},i}var Cee=N(()=>{"use strict";It();Ut();Ht();$t();o(See,"multiWaveEdgedRectangle")});async function Aee(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n,e.useHtmlLabels||Qt().flowchart?.htmlLabels!==!1||(e.centerLabel=!0);let{shapeSvg:s,bbox:l,label:u}=await ut(t,e,st(e)),h=Math.max(l.width+(e.padding??0)*2,e?.width??0),f=Math.max(l.height+(e.padding??0)*2,e?.height??0),d=-h/2,p=-f/2,{cssStyles:m}=e,g=Ze.svg(s),y=Je(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=g.rectangle(d,p,h,f,y),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",m),i&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",i),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.rect(e,b)},s}var _ee=N(()=>{"use strict";Ht();Ut();$t();It();qn();o(Aee,"note")});async function Dee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.width+e.padding,l=a.height+e.padding,u=s+l,h=.5,f=[{x:u/2,y:0},{x:u,y:-u/2},{x:u/2,y:-u},{x:0,y:-u/2}],d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Ze.svg(i),g=Je(e,{}),y=gRe(0,0,u),v=m.path(y,g);d=i.insert(()=>v,":first-child").attr("transform",`translate(${-u/2+h}, ${u/2})`),p&&d.attr("style",p)}else d=Bs(i,u,u,f),d.attr("transform",`translate(${-u/2+h}, ${u/2})`);return n&&d.attr("style",n),Qe(e,d),e.calcIntersect=function(m,g){let y=m.width,v=[{x:y/2,y:0},{x:y,y:-y/2},{x:y/2,y:-y},{x:0,y:-y/2}],x=Xe.polygon(m,v,g);return{x:x.x-.5,y:x.y-.5}},e.intersect=function(m){return this.calcIntersect(e,m)},i}var gRe,Lee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();gRe=o((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");o(Dee,"question")});async function Ree(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0),e?.width??0),u=Math.max(a.height+(e.padding??0),e?.height??0),h=-l/2,f=-u/2,d=f/2,p=[{x:h+d,y:f},{x:h,y:0},{x:h+d,y:-f},{x:-h,y:-f},{x:-h,y:f}],{cssStyles:m}=e,g=Ze.svg(i),y=Je(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=Vt(p),x=g.path(v,y),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),b.attr("transform",`translate(${-d/2},0)`),s.attr("transform",`translate(${-d/2-a.width/2-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),Qe(e,b),e.intersect=function(T){return Xe.polygon(e,p,T)},i}var Nee=N(()=>{"use strict";It();Ut();$t();Ht();o(Ree,"rect_left_inv_arrow")});function yRe(t,e){e&&t.attr("style",e)}async function vRe(t){let e=qe(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=ge(),i=t.label;t.label&&kn(t.label)&&(i=await kh(t.label.replace(tt.lineBreakRegex,` +`),n));let s='"+i+"";return r.html(sr(s,n)),yRe(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}var xRe,kc,aw=N(()=>{"use strict";yr();Xt();gr();pt();tr();o(yRe,"applyStyle");o(vRe,"addHtmlLabel");xRe=o(async(t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),vr(ge().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),X.info("vertexText"+i);let a={isNode:n,label:Ji(i).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:e&&e.replace("fill:","color:")};return await vRe(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let l of s){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),r?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=l.trim(),a.appendChild(u)}return a}},"createLabel"),kc=xRe});async function Mee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let i;e.cssClasses?i="node "+e.cssClasses:i="node default";let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=a.insert("g"),l=a.insert("g").attr("class","label").attr("style",n),u=e.description,h=e.label,f=l.node().appendChild(await kc(h,e.labelStyle,!0,!0)),d={width:0,height:0};if(vr(ge()?.flowchart?.htmlLabels)){let C=f.children[0],R=qe(f);d=C.getBoundingClientRect(),R.attr("width",d.width),R.attr("height",d.height)}X.info("Text 2",u);let p=u||[],m=f.getBBox(),g=l.node().appendChild(await kc(p.join?p.join("
    "):p,e.labelStyle,!0,!0)),y=g.children[0],v=qe(g);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height);let x=(e.padding||0)/2;qe(g).attr("transform","translate( "+(d.width>m.width?0:(m.width-d.width)/2)+", "+(m.height+x+5)+")"),qe(f).attr("transform","translate( "+(d.width(X.debug("Rough node insert CXC",I),L),":first-child"),k=a.insert(()=>(X.debug("Rough node insert CXC",I),I),":first-child")}else k=s.insert("rect",":first-child"),A=s.insert("line"),k.attr("class","outer title-state").attr("style",n).attr("x",-d.width/2-x).attr("y",-d.height/2-x).attr("width",d.width+(e.padding||0)).attr("height",d.height+(e.padding||0)),A.attr("class","divider").attr("x1",-d.width/2-x).attr("x2",d.width/2+x).attr("y1",-d.height/2-x+m.height+x).attr("y2",-d.height/2-x+m.height+x);return Qe(e,k),e.intersect=function(C){return Xe.rect(e,C)},a}var Iee=N(()=>{"use strict";yr();gr();It();aw();Ut();$t();Ht();Xt();Zd();pt();o(Mee,"rectWithTitle")});function sw(t,e,r,n,i,a,s){let u=(t+r)/2,h=(e+n)/2,f=Math.atan2(n-e,r-t),d=(r-t)/2,p=(n-e)/2,m=d/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(f)*(s?-1:1),b=h-v*i*Math.cos(f)*(s?-1:1),T=Math.atan2((e-b)/a,(t-x)/i),w=Math.atan2((n-b)/a,(r-x)/i)-T;s&&w<0&&(w+=2*Math.PI),!s&&w>0&&(w-=2*Math.PI);let k=[];for(let A=0;A<20;A++){let C=A/19,R=T+C*w,I=x+i*Math.cos(R),L=b+a*Math.sin(R);k.push({x:I,y:L})}return k}async function Oee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=e?.padding??0,l=e?.padding??0,u=(e?.width?e?.width:a.width)+s*2,h=(e?.height?e?.height:a.height)+l*2,f=e.radius||5,d=e.taper||5,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.stroke&&(g.stroke=e.stroke),e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:-u/2+d,y:-h/2},{x:u/2-d,y:-h/2},...sw(u/2-d,-h/2,u/2,-h/2+d,f,f,!0),{x:u/2,y:-h/2+d},{x:u/2,y:h/2-d},...sw(u/2,h/2-d,u/2-d,h/2,f,f,!0),{x:u/2-d,y:h/2},{x:-u/2+d,y:h/2},...sw(-u/2+d,h/2,-u/2,h/2-d,f,f,!0),{x:-u/2,y:h/2-d},{x:-u/2,y:-h/2+d},...sw(-u/2,-h/2+d,-u/2+d,-h/2,f,f,!0)],v=Vt(y),x=m.path(v,g),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container outer-path"),p&&e.look!=="handDrawn"&&b.selectChildren("path").attr("style",p),n&&e.look!=="handDrawn"&&b.selectChildren("path").attr("style",n),Qe(e,b),e.intersect=function(T){return Xe.polygon(e,y,T)},i}var Pee=N(()=>{"use strict";It();Ut();$t();Ht();o(sw,"generateArcPoints");o(Oee,"roundedRect")});async function Bee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=e?.padding??0,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=-a.width/2-l,d=-a.height/2-l,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d},{x:f+u+8,y:d},{x:f+u+8,y:d+h},{x:f-8,y:d+h},{x:f-8,y:d},{x:f,y:d},{x:f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container").attr("style",Cn(p)),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${-u/2+4+(e.padding??0)-(a.x-(a.left??0))},${-h/2+(e.padding??0)-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.rect(e,b)},i}var Fee=N(()=>{"use strict";It();Ut();$t();Ht();tr();o(Bee,"shadedProcess")});async function $ee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=-l/2,f=-u/2,{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:h,y:f},{x:h,y:f+u},{x:h+l,y:f+u},{x:h+l,y:f-u/2}],y=Vt(g),v=p.path(y,m),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),x.attr("transform",`translate(0, ${u/4})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))}, ${-u/4+(e.padding??0)-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.polygon(e,g,b)},i}var zee=N(()=>{"use strict";It();Ut();$t();Ht();o($ee,"slopedRect")});async function Gee(t,e){let r={rx:0,ry:0,classes:"",labelPaddingX:e.labelPaddingX??(e?.padding||0)*2,labelPaddingY:(e?.padding||0)*1};return Jd(t,e,r)}var Vee=N(()=>{"use strict";M2();o(Gee,"squareRect")});async function Uee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.height+e.padding,l=a.width+s/4+e.padding,u=s/2,{cssStyles:h}=e,f=Ze.svg(i),d=Je(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=[{x:-l/2+u,y:-s/2},{x:l/2-u,y:-s/2},...Kd(-l/2+u,0,u,50,90,270),{x:l/2-u,y:s/2},...Kd(l/2-u,0,u,50,270,450)],m=Vt(p),g=f.path(m,d),y=i.insert(()=>g,":first-child");return y.attr("class","basic label-container outer-path"),h&&e.look!=="handDrawn"&&y.selectChildren("path").attr("style",h),n&&e.look!=="handDrawn"&&y.selectChildren("path").attr("style",n),Qe(e,y),e.intersect=function(v){return Xe.polygon(e,p,v)},i}var Hee=N(()=>{"use strict";It();Ut();$t();Ht();o(Uee,"stadium")});async function qee(t,e){return Jd(t,e,{rx:5,ry:5,classes:"flowchart-node"})}var Wee=N(()=>{"use strict";M2();o(qee,"state")});function Yee(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n;let{cssStyles:a}=e,{lineColor:s,stateBorder:l,nodeBorder:u}=r,h=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),f=Ze.svg(h),d=Je(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=f.circle(0,0,14,{...d,stroke:s,strokeWidth:2}),m=l??u,g=f.circle(0,0,5,{...d,fill:m,stroke:m,strokeWidth:2,fillStyle:"solid"}),y=h.insert(()=>p,":first-child");return y.insert(()=>g),a&&y.selectAll("path").attr("style",a),i&&y.selectAll("path").attr("style",i),Qe(e,y),e.intersect=function(v){return Xe.circle(e,7,v)},h}var Xee=N(()=>{"use strict";Ht();Ut();$t();It();o(Yee,"stateEnd")});function jee(t,e,{config:{themeVariables:r}}){let{lineColor:n}=r,i=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a;if(e.look==="handDrawn"){let l=Ze.svg(i).circle(0,0,14,tJ(n));a=i.insert(()=>l),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else a=i.insert("circle",":first-child"),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return Qe(e,a),e.intersect=function(s){return Xe.circle(e,7,s)},i}var Kee=N(()=>{"use strict";Ht();Ut();$t();It();o(jee,"stateStart")});async function Qee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=(e?.padding||0)/2,l=a.width+e.padding,u=a.height+e.padding,h=-a.width/2-s,f=-a.height/2-s,d=[{x:0,y:0},{x:l,y:0},{x:l,y:-u},{x:0,y:-u},{x:0,y:0},{x:-8,y:0},{x:l+8,y:0},{x:l+8,y:-u},{x:-8,y:-u},{x:-8,y:0}];if(e.look==="handDrawn"){let p=Ze.svg(i),m=Je(e,{}),g=p.rectangle(h-8,f,l+16,u,m),y=p.line(h,f,h,f+u,m),v=p.line(h+l,f,h+l,f+u,m);i.insert(()=>y,":first-child"),i.insert(()=>v,":first-child");let x=i.insert(()=>g,":first-child"),{cssStyles:b}=e;x.attr("class","basic label-container").attr("style",Cn(b)),Qe(e,x)}else{let p=Bs(i,l,u,d);n&&p.attr("style",n),Qe(e,p)}return e.intersect=function(p){return Xe.polygon(e,d,p)},i}var Zee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();tr();o(Qee,"subroutine")});async function Jee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=-s/2,h=-l/2,f=.2*l,d=.2*l,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{}),y=[{x:u-f/2,y:h},{x:u+s+f/2,y:h},{x:u+s+f/2,y:h+l},{x:u-f/2,y:h+l}],v=[{x:u+s-f/2,y:h+l},{x:u+s+f/2,y:h+l},{x:u+s+f/2,y:h+l-d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Vt(y),b=m.path(x,g),T=Vt(v),S=m.path(T,{...g,fillStyle:"solid"}),w=i.insert(()=>S,":first-child");return w.insert(()=>b,":first-child"),w.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",n),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,y,k)},i}var ete=N(()=>{"use strict";It();$t();Ht();Ut();o(Jee,"taggedRect")});async function tte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=.2*l,d=.2*u,p=u+h,{cssStyles:m}=e,g=Ze.svg(i),y=Je(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-l/2-l/2*.1,y:p/2},...Go(-l/2-l/2*.1,p/2,l/2+l/2*.1,p/2,h,.8),{x:l/2+l/2*.1,y:-p/2},{x:-l/2-l/2*.1,y:-p/2}],x=-l/2+l/2*.1,b=-p/2-d*.4,T=[{x:x+l-f,y:(b+u)*1.4},{x:x+l,y:b+u-d},{x:x+l,y:(b+u)*.9},...Go(x+l,(b+u)*1.3,x+l-f,(b+u)*1.5,-u*.03,.5)],S=Vt(v),w=g.path(S,y),k=Vt(T),A=g.path(k,{...y,fillStyle:"solid"}),C=i.insert(()=>A,":first-child");return C.insert(()=>w,":first-child"),C.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),Qe(e,C),e.intersect=function(R){return Xe.polygon(e,v,R)},i}var rte=N(()=>{"use strict";It();Ut();Ht();$t();o(tte,"taggedWaveEdgedRectangle")});async function nte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+e.padding,e?.width||0),l=Math.max(a.height+e.padding,e?.height||0),u=-s/2,h=-l/2,f=i.insert("rect",":first-child");return f.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",u).attr("y",h).attr("width",s).attr("height",l),Qe(e,f),e.intersect=function(d){return Xe.rect(e,d)},i}var ite=N(()=>{"use strict";It();Ut();$t();o(nte,"text")});async function ate(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s,halfPadding:l}=await ut(t,e,st(e)),u=e.look==="neo"?l*2:l,h=a.height+u,f=h/2,d=f/(2.5+h/50),p=a.width+d+u,{cssStyles:m}=e,g;if(e.look==="handDrawn"){let y=Ze.svg(i),v=TRe(0,0,p,h,d,f),x=wRe(0,0,p,h,d,f),b=y.path(v,Je(e,{})),T=y.path(x,Je(e,{fill:"none"}));g=i.insert(()=>T,":first-child"),g=i.insert(()=>b,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let y=bRe(0,0,p,h,d,f);g=i.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",Cn(m)).attr("style",n),g.attr("class","basic label-container"),m&&g.selectAll("path").attr("style",m),n&&g.selectAll("path").attr("style",n)}return g.attr("label-offset-x",d),g.attr("transform",`translate(${-p/2}, ${h/2} )`),s.attr("transform",`translate(${-(a.width/2)-d-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),Qe(e,g),e.intersect=function(y){let v=Xe.rect(e,y),x=v.y-(e.y??0);if(f!=0&&(Math.abs(x)<(e.height??0)/2||Math.abs(x)==(e.height??0)/2&&Math.abs(v.x-(e.x??0))>(e.width??0)/2-d)){let b=d*d*(1-x*x/(f*f));b!=0&&(b=Math.sqrt(Math.abs(b))),b=d-b,y.x-(e.x??0)>0&&(b=-b),v.x+=b}return v},i}var bRe,TRe,wRe,ste=N(()=>{"use strict";It();$t();Ht();Ut();tr();bRe=o((t,e,r,n,i,a)=>`M${t},${e} a${i},${a} 0,0,1 0,${-n} l${r},0 a${i},${a} 0,0,1 0,${n} M${r},${-n} a${i},${a} 0,0,0 0,${n} - l${-r},0`,"createCylinderPathD"),w_e=o((t,e,r,n,i,a)=>[`M${t},${e}`,`M${t+r},${e}`,`a${i},${a} 0,0,0 0,${-n}`,`l${-r},0`,`a${i},${a} 0,0,0 0,${n}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),T_e=o((t,e,r,n,i,a)=>[`M${t+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD");o(TZ,"tiltedCylinder")});async function EZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.width+e.padding,l=a.height+e.padding,u=[{x:-3*l/6,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=La(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var SZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();_u();o(EZ,"trapezoid")});async function CZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=60,l=20,u=Math.max(s,a.width+(e.padding??0)*2,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),{cssStyles:f}=e,d=Xe.svg(i),p=Ke(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=[{x:-u/2*.8,y:-h/2},{x:u/2*.8,y:-h/2},{x:u/2,y:-h/2*.6},{x:u/2,y:h/2},{x:-u/2,y:h/2},{x:-u/2,y:-h/2*.6}],g=Xt(m),y=d.path(g,p),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),je(e,v),e.intersect=function(x){return Ye.polygon(e,m,x)},i}var AZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(CZ,"trapezoidalPentagon")});async function _Z(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=fr(me().flowchart?.htmlLabels),u=a.width+(e.padding??0),h=u+a.height,f=u+a.height,d=[{x:0,y:0},{x:f,y:0},{x:f/2,y:-h}],{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=Xt(d),v=m.path(y,g),x=i.insert(()=>v,":first-child").attr("transform",`translate(${-h/2}, ${h/2})`);return p&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),e.width=u,e.height=h,je(e,x),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${h/2-(a.height+(e.padding??0)/(l?2:1)-(a.y-(a.top??0)))})`),e.intersect=function(b){return Y.info("Triangle intersect",e,d,b),Ye.polygon(e,d,b)},i}var DZ=N(()=>{"use strict";vt();Ft();Ht();Ut();Wt();Ft();gr();zt();o(_Z,"triangle")});async function LZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/8,f=u+h,{cssStyles:d}=e,m=70-l,g=m>0?m/2:0,y=Xe.svg(i),v=Ke(e,{});e.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:-l/2-g,y:f/2},...Fo(-l/2-g,f/2,l/2+g,f/2,h,.8),{x:l/2+g,y:-f/2},{x:-l/2-g,y:-f/2}],b=Xt(x),w=y.path(b,v),C=i.insert(()=>w,":first-child");return C.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h-(a.y-(a.top??0))})`),je(e,C),e.intersect=function(T){return Ye.polygon(e,x,T)},i}var RZ=N(()=>{"use strict";Ft();Ht();Wt();Ut();o(LZ,"waveEdgedRectangle")});async function NZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=100,l=50,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=u/h,d=u,p=h;d>p*f?p=d/f:d=p*f,d=Math.max(d,s),p=Math.max(p,l);let m=Math.min(p*.2,p/4),g=p+m*2,{cssStyles:y}=e,v=Xe.svg(i),x=Ke(e,{});e.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:-d/2,y:g/2},...Fo(-d/2,g/2,d/2,g/2,m,1),{x:d/2,y:-g/2},...Fo(d/2,-g/2,-d/2,-g/2,m,-1)],w=Xt(b),C=v.path(w,x),T=i.insert(()=>C,":first-child");return T.attr("class","basic label-container"),y&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",y),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),je(e,T),e.intersect=function(E){return Ye.polygon(e,b,E)},i}var MZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();o(NZ,"waveRectangle")});async function IZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{}),y=[{x:f-h,y:d-h},{x:f-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d-h}],v=`M${f-h},${d-h} L${f+l},${d-h} L${f+l},${d+u} L${f-h},${d+u} L${f-h},${d-h} + l${-r},0`,"createCylinderPathD"),TRe=o((t,e,r,n,i,a)=>[`M${t},${e}`,`M${t+r},${e}`,`a${i},${a} 0,0,0 0,${-n}`,`l${-r},0`,`a${i},${a} 0,0,0 0,${n}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),wRe=o((t,e,r,n,i,a)=>[`M${t+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD");o(ate,"tiltedCylinder")});async function ote(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.width+e.padding,l=a.height+e.padding,u=[{x:-3*l/6,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var lte=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(ote,"trapezoid")});async function cte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=60,l=20,u=Math.max(s,a.width+(e.padding??0)*2,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),{cssStyles:f}=e,d=Ze.svg(i),p=Je(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=[{x:-u/2*.8,y:-h/2},{x:u/2*.8,y:-h/2},{x:u/2,y:-h/2*.6},{x:u/2,y:h/2},{x:-u/2,y:h/2},{x:-u/2,y:-h/2*.6}],g=Vt(m),y=d.path(g,p),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),Qe(e,v),e.intersect=function(x){return Xe.polygon(e,m,x)},i}var ute=N(()=>{"use strict";It();Ut();$t();Ht();o(cte,"trapezoidalPentagon")});async function hte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=vr(ge().flowchart?.htmlLabels),u=a.width+(e.padding??0),h=u+a.height,f=u+a.height,d=[{x:0,y:0},{x:f,y:0},{x:f/2,y:-h}],{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=Vt(d),v=m.path(y,g),x=i.insert(()=>v,":first-child").attr("transform",`translate(${-h/2}, ${h/2})`);return p&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),e.width=u,e.height=h,Qe(e,x),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${h/2-(a.height+(e.padding??0)/(l?2:1)-(a.y-(a.top??0)))})`),e.intersect=function(b){return X.info("Triangle intersect",e,d,b),Xe.polygon(e,d,b)},i}var fte=N(()=>{"use strict";pt();It();Ut();$t();Ht();It();gr();Xt();o(hte,"triangle")});async function dte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/8,f=u+h,{cssStyles:d}=e,m=70-l,g=m>0?m/2:0,y=Ze.svg(i),v=Je(e,{});e.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:-l/2-g,y:f/2},...Go(-l/2-g,f/2,l/2+g,f/2,h,.8),{x:l/2+g,y:-f/2},{x:-l/2-g,y:-f/2}],b=Vt(x),T=y.path(b,v),S=i.insert(()=>T,":first-child");return S.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h-(a.y-(a.top??0))})`),Qe(e,S),e.intersect=function(w){return Xe.polygon(e,x,w)},i}var pte=N(()=>{"use strict";It();Ut();Ht();$t();o(dte,"waveEdgedRectangle")});async function mte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=100,l=50,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=u/h,d=u,p=h;d>p*f?p=d/f:d=p*f,d=Math.max(d,s),p=Math.max(p,l);let m=Math.min(p*.2,p/4),g=p+m*2,{cssStyles:y}=e,v=Ze.svg(i),x=Je(e,{});e.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:-d/2,y:g/2},...Go(-d/2,g/2,d/2,g/2,m,1),{x:d/2,y:-g/2},...Go(d/2,-g/2,-d/2,-g/2,m,-1)],T=Vt(b),S=v.path(T,x),w=i.insert(()=>S,":first-child");return w.attr("class","basic label-container"),y&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",y),n&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",n),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,b,k)},i}var gte=N(()=>{"use strict";It();Ut();$t();Ht();o(mte,"waveRectangle")});async function yte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{}),y=[{x:f-h,y:d-h},{x:f-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d-h}],v=`M${f-h},${d-h} L${f+l},${d-h} L${f+l},${d+u} L${f-h},${d+u} L${f-h},${d-h} M${f-h},${d} L${f+l},${d} - M${f},${d-h} L${f},${d+u}`;e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=m.path(v,g),b=i.insert(()=>x,":first-child");return b.attr("transform",`translate(${h/2}, ${h/2})`),b.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)+h/2-(a.x-(a.left??0))}, ${-(a.height/2)+h/2-(a.y-(a.top??0))})`),je(e,b),e.intersect=function(w){return Ye.polygon(e,y,w)},i}var OZ=N(()=>{"use strict";Ft();Ut();Wt();Ht();o(IZ,"windowPane")});async function KD(t,e){let r=e;if(r.alias&&(e.label=r.alias),e.look==="handDrawn"){let{themeVariables:P}=cr(),{background:z}=P,$={...e,id:e.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${z}`]};await KD(t,$)}let n=cr();e.useHtmlLabels=n.htmlLabels;let i=n.er?.diagramPadding??10,a=n.er?.entityPadding??6,{cssStyles:s}=e,{labelStyles:l}=Qe(e);if(r.attributes.length===0&&e.label){let P={rx:0,ry:0,labelPaddingX:i,labelPaddingY:i*1.5,classes:""};ra(e.label,n)+P.labelPaddingX*20){let P=f.width+i*2-(m+g+y+v);m+=P/w,g+=P/w,y>0&&(y+=P/w),v>0&&(v+=P/w)}let T=m+g+y+v,E=Xe.svg(h),A=Ke(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let S=Math.max(C.width+i*2,e?.width||0,T),_=Math.max(C.height+(p[0]||d)+a,e?.height||0),I=-S/2,D=-_/2;h.selectAll("g:not(:first-child)").each((P,z,$)=>{let H=Ge($[z]),Q=H.attr("transform"),j=0,ie=0;if(Q){let le=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(Q);le&&(j=parseFloat(le[1]),ie=parseFloat(le[2]),H.attr("class").includes("attribute-name")?j+=m:H.attr("class").includes("attribute-keys")?j+=m+g:H.attr("class").includes("attribute-comment")&&(j+=m+g+y))}H.attr("transform",`translate(${I+i/2+j}, ${ie+D+f.height+a/2})`)}),h.select(".name").attr("transform","translate("+-f.width/2+", "+(D+a/2)+")");let k=E.rectangle(I,D,S,_,A),L=h.insert(()=>k,":first-child").attr("style",s.join("")),{themeVariables:R}=cr(),{rowEven:O,rowOdd:M,nodeBorder:B}=R;p.push(0);for(let[P,z]of p.entries()){if(P===0&&p.length>1)continue;let $=P%2===0&&z!==0,H=E.rectangle(I,f.height+D+z,S,f.height,{...A,fill:$?O:M,stroke:B});h.insert(()=>H,"g.label").attr("style",s.join("")).attr("class",`row-rect-${P%2===0?"even":"odd"}`)}let F=E.line(I,f.height+D,S+I,f.height+D,A);h.insert(()=>F).attr("class","divider"),F=E.line(m+I,f.height+D,m+I,_+D,A),h.insert(()=>F).attr("class","divider"),x&&(F=E.line(m+g+I,f.height+D,m+g+I,_+D,A),h.insert(()=>F).attr("class","divider")),b&&(F=E.line(m+g+y+I,f.height+D,m+g+y+I,_+D,A),h.insert(()=>F).attr("class","divider"));for(let P of p)F=E.line(I,f.height+D+P,S+I,f.height+D+P,A),h.insert(()=>F).attr("class","divider");return je(e,L),e.intersect=function(P){return Ye.rect(e,P)},h}async function b2(t,e,r,n=0,i=0,a=[],s=""){let l=t.insert("g").attr("class",`label ${a.join(" ")}`).attr("transform",`translate(${n}, ${i})`).attr("style",s);e!==ec(e)&&(e=ec(e),e=e.replaceAll("<","<").replaceAll(">",">"));let u=l.node().appendChild(await Hn(l,e,{width:ra(e,r)+100,style:s,useHtmlLabels:r.htmlLabels},r));if(e.includes("<")||e.includes(">")){let f=u.children[0];for(f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">");f.childNodes[0];)f=f.childNodes[0],f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">")}let h=u.getBBox();if(fr(r.htmlLabels)){let f=u.children[0];f.style.textAlign="start";let d=Ge(u);h=f.getBoundingClientRect(),d.attr("width",h.width),d.attr("height",h.height)}return h}var PZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();mm();ji();to();gr();dr();ir();o(KD,"erBox");o(b2,"addText")});async function BZ(t,e,r,n,i=r.class.padding??12){let a=n?0:3,s=t.insert("g").attr("class",ht(e)).attr("id",e.domId||e.id),l=null,u=null,h=null,f=null,d=0,p=0,m=0;if(l=s.insert("g").attr("class","annotation-group text"),e.annotations.length>0){let b=e.annotations[0];await Vw(l,{text:`\xAB${b}\xBB`},0),d=l.node().getBBox().height}u=s.insert("g").attr("class","label-group text"),await Vw(u,e,0,["font-weight: bolder"]);let g=u.node().getBBox();p=g.height,h=s.insert("g").attr("class","members-group text");let y=0;for(let b of e.members){let w=await Vw(h,b,y,[b.parseClassifier()]);y+=w+a}m=h.node().getBBox().height,m<=0&&(m=i/2),f=s.insert("g").attr("class","methods-group text");let v=0;for(let b of e.methods){let w=await Vw(f,b,v,[b.parseClassifier()]);v+=w+a}let x=s.node().getBBox();if(l!==null){let b=l.node().getBBox();l.attr("transform",`translate(${-b.width/2})`)}return u.attr("transform",`translate(${-g.width/2}, ${d})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${d+p+i*2})`),x=s.node().getBBox(),f.attr("transform",`translate(0, ${d+p+(m?m+i*4:i*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function Vw(t,e,r,n=[]){let i=t.insert("g").attr("class","label").attr("style",n.join("; ")),a=cr(),s="useHtmlLabels"in e?e.useHtmlLabels:fr(a.htmlLabels)??!0,l="";"text"in e?l=e.text:l=e.label,!s&&l.startsWith("\\")&&(l=l.substring(1)),pi(l)&&(s=!0);let u=await Hn(i,Xy(na(l)),{width:ra(l,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),h,f=1;if(s){let d=u.children[0],p=Ge(u);f=d.innerHTML.split("
    ").length,d.innerHTML.includes("")&&(f+=d.innerHTML.split("").length-1);let m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,C=parseInt(b,10)*5+"px";y.style.minWidth=C,y.style.maxWidth=C}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{n.includes("font-weight: bolder")&&Ge(u).selectAll("tspan").attr("font-weight",""),f=u.children.length;let d=u.children[0];(u.textContent===""||u.textContent.includes(">"))&&(d.textContent=l[0]+l.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),l[1]===" "&&(d.textContent=d.textContent[0]+" "+d.textContent.substring(1))),d.textContent==="undefined"&&(d.textContent=""),h=u.getBBox()}return i.attr("transform","translate(0,"+(-h.height/(2*f)+r)+")"),h.height}var FZ=N(()=>{"use strict";dr();ji();Ft();ir();zt();to();gr();o(BZ,"textHelper");o(Vw,"addText")});async function $Z(t,e){let r=me(),n=r.class.padding??12,i=n,a=e.useHtmlLabels??fr(r.htmlLabels)??!0,s=e;s.annotations=s.annotations??[],s.members=s.members??[],s.methods=s.methods??[];let{shapeSvg:l,bbox:u}=await BZ(t,e,r,a,i),{labelStyles:h,nodeStyles:f}=Qe(e);e.labelStyle=h,e.cssStyles=s.styles||"";let d=s.styles?.join(";")||f||"";e.cssStyles||(e.cssStyles=d.replaceAll("!important","").split(";"));let p=s.members.length===0&&s.methods.length===0&&!r.class?.hideEmptyMembersBox,m=Xe.svg(l),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=u.width,v=u.height;s.members.length===0&&s.methods.length===0?v+=i:s.members.length>0&&s.methods.length===0&&(v+=i*2);let x=-y/2,b=-v/2,w=m.rectangle(x-n,b-n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0),y+2*n,v+2*n+(p?n*2:s.members.length===0&&s.methods.length===0?-n:0),g),C=l.insert(()=>w,":first-child");C.attr("class","basic label-container");let T=C.node().getBBox();l.selectAll(".text").each((_,I,D)=>{let k=Ge(D[I]),L=k.attr("transform"),R=0;if(L){let F=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(L);F&&(R=parseFloat(F[2]))}let O=R+b+n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0);a||(O-=4);let M=x;(k.attr("class").includes("label-group")||k.attr("class").includes("annotation-group"))&&(M=-k.node()?.getBBox().width/2||0,l.selectAll("text").each(function(B,F,P){window.getComputedStyle(P[F]).textAnchor==="middle"&&(M=0)})),k.attr("transform",`translate(${M}, ${O})`)});let E=l.select(".annotation-group").node().getBBox().height-(p?n/2:0)||0,A=l.select(".label-group").node().getBBox().height-(p?n/2:0)||0,S=l.select(".members-group").node().getBBox().height-(p?n/2:0)||0;if(s.members.length>0||s.methods.length>0||p){let _=m.line(T.x,E+A+b+n,T.x+T.width,E+A+b+n,g);l.insert(()=>_).attr("class","divider").attr("style",d)}if(p||s.members.length>0||s.methods.length>0){let _=m.line(T.x,E+A+S+b+i*2+n,T.x+T.width,E+A+S+b+n+i*2,g);l.insert(()=>_).attr("class","divider").attr("style",d)}if(s.look!=="handDrawn"&&l.selectAll("path").attr("style",d),C.select(":nth-child(2)").attr("style",d),l.selectAll(".divider").select("path").attr("style",d),e.labelStyle?l.selectAll("span").attr("style",e.labelStyle):l.selectAll("span").attr("style",d),!a){let _=RegExp(/color\s*:\s*([^;]*)/),I=_.exec(d);if(I){let D=I[0].replace("color","fill");l.selectAll("tspan").attr("style",D)}else if(h){let D=_.exec(h);if(D){let k=D[0].replace("color","fill");l.selectAll("tspan").attr("style",k)}}}return je(e,C),e.intersect=function(_){return Ye.rect(e,_)},l}var zZ=N(()=>{"use strict";Ft();zt();dr();Wt();Ut();Ht();FZ();gr();o($Z,"classBox")});async function GZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let i=e,a=e,s=20,l=20,u="verifyMethod"in e,h=ht(e),f=t.insert("g").attr("class",h).attr("id",e.domId??e.id),d;u?d=await Lu(f,`<<${i.type}>>`,0,e.labelStyle):d=await Lu(f,"<<Element>>",0,e.labelStyle);let p=d,m=await Lu(f,i.name,p,e.labelStyle+"; font-weight: bold;");if(p+=m+l,u){let E=await Lu(f,`${i.requirementId?`Id: ${i.requirementId}`:""}`,p,e.labelStyle);p+=E;let A=await Lu(f,`${i.text?`Text: ${i.text}`:""}`,p,e.labelStyle);p+=A;let S=await Lu(f,`${i.risk?`Risk: ${i.risk}`:""}`,p,e.labelStyle);p+=S,await Lu(f,`${i.verifyMethod?`Verification: ${i.verifyMethod}`:""}`,p,e.labelStyle)}else{let E=await Lu(f,`${a.type?`Type: ${a.type}`:""}`,p,e.labelStyle);p+=E,await Lu(f,`${a.docRef?`Doc Ref: ${a.docRef}`:""}`,p,e.labelStyle)}let g=(f.node()?.getBBox().width??200)+s,y=(f.node()?.getBBox().height??200)+s,v=-g/2,x=-y/2,b=Xe.svg(f),w=Ke(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let C=b.rectangle(v,x,g,y,w),T=f.insert(()=>C,":first-child");if(T.attr("class","basic label-container").attr("style",n),f.selectAll(".label").each((E,A,S)=>{let _=Ge(S[A]),I=_.attr("transform"),D=0,k=0;if(I){let M=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(I);M&&(D=parseFloat(M[1]),k=parseFloat(M[2]))}let L=k-y/2,R=v+s/2;(A===0||A===1)&&(R=D),_.attr("transform",`translate(${R}, ${L+s})`)}),p>d+m+l){let E=b.line(v,x+d+m+l,v+g,x+d+m+l,w);f.insert(()=>E).attr("style",n)}return je(e,T),e.intersect=function(E){return Ye.rect(e,E)},f}async function Lu(t,e,r,n=""){if(e==="")return 0;let i=t.insert("g").attr("class","label").attr("style",n),a=me(),s=a.htmlLabels??!0,l=await Hn(i,Xy(na(e)),{width:ra(e,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:n},a),u;if(s){let h=l.children[0],f=Ge(l);u=h.getBoundingClientRect(),f.attr("width",u.width),f.attr("height",u.height)}else{let h=l.children[0];for(let f of h.children)f.textContent=f.textContent.replaceAll(">",">").replaceAll("<","<"),n&&f.setAttribute("style",n);u=l.getBBox(),u.height+=6}return i.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}var VZ=N(()=>{"use strict";Ft();Ht();Ut();Wt();ir();zt();to();dr();o(GZ,"requirementBox");o(Lu,"addText")});async function UZ(t,e,{config:r}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n||"";let a=10,s=e.width;e.width=(e.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await pt(t,e,ht(e)),f=e.padding||10,d="",p;"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(d=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",d).attr("target","_blank"));let m={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await Dw(p,"ticket"in e&&e.ticket||"",m):{label:g,bbox:y}=await Dw(l,"ticket"in e&&e.ticket||"",m);let{label:v,bbox:x}=await Dw(l,"assigned"in e&&e.assigned||"",m);e.width=s;let b=10,w=e?.width||0,C=Math.max(y.height,x.height)/2,T=Math.max(u.height+b*2,e?.height||0)+C,E=-w/2,A=-T/2;h.attr("transform","translate("+(f-w/2)+", "+(-C-u.height/2)+")"),g.attr("transform","translate("+(f-w/2)+", "+(-C+u.height/2)+")"),v.attr("transform","translate("+(f+w/2-x.width-2*a)+", "+(-C+u.height/2)+")");let S,{rx:_,ry:I}=e,{cssStyles:D}=e;if(e.look==="handDrawn"){let k=Xe.svg(l),L=Ke(e,{}),R=_||I?k.path(Na(E,A,w,T,_||0),L):k.rectangle(E,A,w,T,L);S=l.insert(()=>R,":first-child"),S.attr("class","basic label-container").attr("style",D||null)}else{S=l.insert("rect",":first-child"),S.attr("class","basic label-container __APA__").attr("style",i).attr("rx",_??5).attr("ry",I??5).attr("x",E).attr("y",A).attr("width",w).attr("height",T);let k="priority"in e&&e.priority;if(k){let L=l.append("line"),R=E+2,O=A+Math.floor((_??0)/2),M=A+T-Math.floor((_??0)/2);L.attr("x1",R).attr("y1",O).attr("x2",R).attr("y2",M).attr("stroke-width","4").attr("stroke",k_e(k))}}return je(e,S),e.height=T,e.intersect=function(k){return Ye.rect(e,k)},l}var k_e,HZ=N(()=>{"use strict";Ft();Ht();qh();Ut();Wt();k_e=o(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");o(UZ,"kanbanItem")});function WZ(t){return t in QD}var E_e,S_e,QD,ZD=N(()=>{"use strict";NK();OK();BK();$K();GK();UK();WK();YK();jK();QK();JK();tQ();nQ();aQ();oQ();cQ();hQ();dQ();mQ();yQ();xQ();wQ();kQ();SQ();AQ();DQ();RQ();MQ();OQ();BQ();$Q();GQ();UQ();WQ();YQ();jQ();QQ();JQ();tZ();nZ();aZ();oZ();cZ();hZ();dZ();mZ();yZ();xZ();wZ();kZ();SZ();AZ();DZ();RZ();MZ();OZ();PZ();zZ();VZ();HZ();E_e=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:iZ},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:ZQ},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:sZ},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:pZ},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:ZK},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:zK},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:qQ},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:fQ},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:NQ},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:LQ},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:EZ},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:CQ},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:rQ},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:bZ},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:PK},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:eZ},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:fZ},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:uZ},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:lQ},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:pQ},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:HK},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:qK},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:XK},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:IQ},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:LZ},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:uQ},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:TZ},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:PQ},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:KK},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:eQ},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:_Z},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:IZ},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:iQ},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:CZ},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:sQ},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:rZ},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:VQ},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:zQ},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:IK},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:VK},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:vZ},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:gZ},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:NZ},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:XQ},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:FQ}],S_e=o(()=>{let e=[...Object.entries({state:lZ,choice:FK,note:HQ,rectWithTitle:KQ,labelRect:_Q,iconSquare:TQ,iconCircle:vQ,icon:gQ,iconRounded:bQ,imageSquare:EQ,anchor:RK,kanbanItem:UZ,classBox:$Z,erBox:KD,requirementBox:GZ}),...E_e.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(i=>[i,r.handler]))];return Object.fromEntries(e)},"generateShapeMap"),QD=S_e();o(WZ,"isValidShape")});var C_e,Uw,qZ=N(()=>{"use strict";dr();Ew();zt();vt();ZD();ir();gr();mi();C_e="flowchart-",Uw=class{constructor(){this.vertexCounter=0;this.config=me();this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=Lr;this.setAccDescription=Nr;this.setDiagramTitle=$r;this.getAccTitle=Rr;this.getAccDescription=Mr;this.getDiagramTitle=Ir;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{o(this,"FlowDB")}sanitizeText(e){return Ze.sanitizeText(e,this.config)}lookUpDomId(e){for(let r of this.vertices.values())if(r.id===e)return r.domId;return e}addVertex(e,r,n,i,a,s,l={},u){if(!e||e.trim().length===0)return;let h;if(u!==void 0){let m;u.includes(` + M${f},${d-h} L${f},${d+u}`;e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=m.path(v,g),b=i.insert(()=>x,":first-child");return b.attr("transform",`translate(${h/2}, ${h/2})`),b.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)+h/2-(a.x-(a.left??0))}, ${-(a.height/2)+h/2-(a.y-(a.top??0))})`),Qe(e,b),e.intersect=function(T){return Xe.polygon(e,y,T)},i}var vte=N(()=>{"use strict";It();$t();Ht();Ut();o(yte,"windowPane")});async function H9(t,e){let r=e;if(r.alias&&(e.label=r.alias),e.look==="handDrawn"){let{themeVariables:U}=Qt(),{background:j}=U,te={...e,id:e.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${j}`]};await H9(t,te)}let n=Qt();e.useHtmlLabels=n.htmlLabels;let i=n.er?.diagramPadding??10,a=n.er?.entityPadding??6,{cssStyles:s}=e,{labelStyles:l,nodeStyles:u}=je(e);if(r.attributes.length===0&&e.label){let U={rx:0,ry:0,labelPaddingX:i,labelPaddingY:i*1.5,classes:""};Zi(e.label,n)+U.labelPaddingX*20){let U=d.width+i*2-(y+v+x+b);y+=U/w,v+=U/w,x>0&&(x+=U/w),b>0&&(b+=U/w)}let A=y+v+x+b,C=Ze.svg(f),R=Je(e,{});e.look!=="handDrawn"&&(R.roughness=0,R.fillStyle="solid");let I=0;g.length>0&&(I=g.reduce((U,j)=>U+(j?.rowHeight??0),0));let L=Math.max(k.width+i*2,e?.width||0,A),E=Math.max((I??0)+d.height,e?.height||0),D=-L/2,_=-E/2;f.selectAll("g:not(:first-child)").each((U,j,te)=>{let Y=qe(te[j]),oe=Y.attr("transform"),J=0,ue=0;if(oe){let ee=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(oe);ee&&(J=parseFloat(ee[1]),ue=parseFloat(ee[2]),Y.attr("class").includes("attribute-name")?J+=y:Y.attr("class").includes("attribute-keys")?J+=y+v:Y.attr("class").includes("attribute-comment")&&(J+=y+v+x))}Y.attr("transform",`translate(${D+i/2+J}, ${ue+_+d.height+a/2})`)}),f.select(".name").attr("transform","translate("+-d.width/2+", "+(_+a/2)+")");let O=C.rectangle(D,_,L,E,R),M=f.insert(()=>O,":first-child").attr("style",s.join("")),{themeVariables:P}=Qt(),{rowEven:B,rowOdd:F,nodeBorder:G}=P;m.push(0);for(let[U,j]of g.entries()){let Y=(U+1)%2===0&&j.yOffset!==0,oe=C.rectangle(D,d.height+_+j?.yOffset,L,j?.rowHeight,{...R,fill:Y?B:F,stroke:G});f.insert(()=>oe,"g.label").attr("style",s.join("")).attr("class",`row-rect-${Y?"even":"odd"}`)}let $=C.line(D,d.height+_,L+D,d.height+_,R);f.insert(()=>$).attr("class","divider"),$=C.line(y+D,d.height+_,y+D,E+_,R),f.insert(()=>$).attr("class","divider"),T&&($=C.line(y+v+D,d.height+_,y+v+D,E+_,R),f.insert(()=>$).attr("class","divider")),S&&($=C.line(y+v+x+D,d.height+_,y+v+x+D,E+_,R),f.insert(()=>$).attr("class","divider"));for(let U of m)$=C.line(D,d.height+_+U,L+D,d.height+_+U,R),f.insert(()=>$).attr("class","divider");if(Qe(e,M),u&&e.look!=="handDrawn"){let j=u.split(";")?.filter(te=>te.includes("stroke"))?.map(te=>`${te}`).join("; ");f.selectAll("path").attr("style",j??""),f.selectAll(".row-rect-even path").attr("style",u)}return e.intersect=function(U){return Xe.rect(e,U)},f}async function I2(t,e,r,n=0,i=0,a=[],s=""){let l=t.insert("g").attr("class",`label ${a.join(" ")}`).attr("transform",`translate(${n}, ${i})`).attr("style",s);e!==rc(e)&&(e=rc(e),e=e.replaceAll("<","<").replaceAll(">",">"));let u=l.node().appendChild(await di(l,e,{width:Zi(e,r)+100,style:s,useHtmlLabels:r.htmlLabels},r));if(e.includes("<")||e.includes(">")){let f=u.children[0];for(f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">");f.childNodes[0];)f=f.childNodes[0],f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">")}let h=u.getBBox();if(vr(r.htmlLabels)){let f=u.children[0];f.style.textAlign="start";let d=qe(u);h=f.getBoundingClientRect(),d.attr("width",h.width),d.attr("height",h.height)}return h}var xte=N(()=>{"use strict";It();Ut();$t();Ht();M2();qn();zo();gr();yr();tr();o(H9,"erBox");o(I2,"addText")});async function bte(t,e,r,n,i=r.class.padding??12){let a=n?0:3,s=t.insert("g").attr("class",st(e)).attr("id",e.domId||e.id),l=null,u=null,h=null,f=null,d=0,p=0,m=0;if(l=s.insert("g").attr("class","annotation-group text"),e.annotations.length>0){let b=e.annotations[0];await ow(l,{text:`\xAB${b}\xBB`},0),d=l.node().getBBox().height}u=s.insert("g").attr("class","label-group text"),await ow(u,e,0,["font-weight: bolder"]);let g=u.node().getBBox();p=g.height,h=s.insert("g").attr("class","members-group text");let y=0;for(let b of e.members){let T=await ow(h,b,y,[b.parseClassifier()]);y+=T+a}m=h.node().getBBox().height,m<=0&&(m=i/2),f=s.insert("g").attr("class","methods-group text");let v=0;for(let b of e.methods){let T=await ow(f,b,v,[b.parseClassifier()]);v+=T+a}let x=s.node().getBBox();if(l!==null){let b=l.node().getBBox();l.attr("transform",`translate(${-b.width/2})`)}return u.attr("transform",`translate(${-g.width/2}, ${d})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${d+p+i*2})`),x=s.node().getBBox(),f.attr("transform",`translate(0, ${d+p+(m?m+i*4:i*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function ow(t,e,r,n=[]){let i=t.insert("g").attr("class","label").attr("style",n.join("; ")),a=Qt(),s="useHtmlLabels"in e?e.useHtmlLabels:vr(a.htmlLabels)??!0,l="";"text"in e?l=e.text:l=e.label,!s&&l.startsWith("\\")&&(l=l.substring(1)),kn(l)&&(s=!0);let u=await di(i,iv(Ji(l)),{width:Zi(l,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),h,f=1;if(s){let d=u.children[0],p=qe(u);f=d.innerHTML.split("
    ").length,d.innerHTML.includes("")&&(f+=d.innerHTML.split("").length-1);let m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,S=parseInt(b,10)*5+"px";y.style.minWidth=S,y.style.maxWidth=S}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{n.includes("font-weight: bolder")&&qe(u).selectAll("tspan").attr("font-weight",""),f=u.children.length;let d=u.children[0];(u.textContent===""||u.textContent.includes(">"))&&(d.textContent=l[0]+l.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),l[1]===" "&&(d.textContent=d.textContent[0]+" "+d.textContent.substring(1))),d.textContent==="undefined"&&(d.textContent=""),h=u.getBBox()}return i.attr("transform","translate(0,"+(-h.height/(2*f)+r)+")"),h.height}var Tte=N(()=>{"use strict";yr();qn();It();tr();Xt();zo();gr();o(bte,"textHelper");o(ow,"addText")});async function wte(t,e){let r=ge(),n=r.class.padding??12,i=n,a=e.useHtmlLabels??vr(r.htmlLabels)??!0,s=e;s.annotations=s.annotations??[],s.members=s.members??[],s.methods=s.methods??[];let{shapeSvg:l,bbox:u}=await bte(t,e,r,a,i),{labelStyles:h,nodeStyles:f}=je(e);e.labelStyle=h,e.cssStyles=s.styles||"";let d=s.styles?.join(";")||f||"";e.cssStyles||(e.cssStyles=d.replaceAll("!important","").split(";"));let p=s.members.length===0&&s.methods.length===0&&!r.class?.hideEmptyMembersBox,m=Ze.svg(l),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=u.width,v=u.height;s.members.length===0&&s.methods.length===0?v+=i:s.members.length>0&&s.methods.length===0&&(v+=i*2);let x=-y/2,b=-v/2,T=m.rectangle(x-n,b-n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0),y+2*n,v+2*n+(p?n*2:s.members.length===0&&s.methods.length===0?-n:0),g),S=l.insert(()=>T,":first-child");S.attr("class","basic label-container");let w=S.node().getBBox();l.selectAll(".text").each((R,I,L)=>{let E=qe(L[I]),D=E.attr("transform"),_=0;if(D){let B=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(D);B&&(_=parseFloat(B[2]))}let O=_+b+n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0);a||(O-=4);let M=x;(E.attr("class").includes("label-group")||E.attr("class").includes("annotation-group"))&&(M=-E.node()?.getBBox().width/2||0,l.selectAll("text").each(function(P,B,F){window.getComputedStyle(F[B]).textAnchor==="middle"&&(M=0)})),E.attr("transform",`translate(${M}, ${O})`)});let k=l.select(".annotation-group").node().getBBox().height-(p?n/2:0)||0,A=l.select(".label-group").node().getBBox().height-(p?n/2:0)||0,C=l.select(".members-group").node().getBBox().height-(p?n/2:0)||0;if(s.members.length>0||s.methods.length>0||p){let R=m.line(w.x,k+A+b+n,w.x+w.width,k+A+b+n,g);l.insert(()=>R).attr("class","divider").attr("style",d)}if(p||s.members.length>0||s.methods.length>0){let R=m.line(w.x,k+A+C+b+i*2+n,w.x+w.width,k+A+C+b+n+i*2,g);l.insert(()=>R).attr("class","divider").attr("style",d)}if(s.look!=="handDrawn"&&l.selectAll("path").attr("style",d),S.select(":nth-child(2)").attr("style",d),l.selectAll(".divider").select("path").attr("style",d),e.labelStyle?l.selectAll("span").attr("style",e.labelStyle):l.selectAll("span").attr("style",d),!a){let R=RegExp(/color\s*:\s*([^;]*)/),I=R.exec(d);if(I){let L=I[0].replace("color","fill");l.selectAll("tspan").attr("style",L)}else if(h){let L=R.exec(h);if(L){let E=L[0].replace("color","fill");l.selectAll("tspan").attr("style",E)}}}return Qe(e,S),e.intersect=function(R){return Xe.rect(e,R)},l}var kte=N(()=>{"use strict";It();Xt();yr();Ht();$t();Ut();Tte();gr();o(wte,"classBox")});async function Ete(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let i=e,a=e,s=20,l=20,u="verifyMethod"in e,h=st(e),f=t.insert("g").attr("class",h).attr("id",e.domId??e.id),d;u?d=await Ou(f,`<<${i.type}>>`,0,e.labelStyle):d=await Ou(f,"<<Element>>",0,e.labelStyle);let p=d,m=await Ou(f,i.name,p,e.labelStyle+"; font-weight: bold;");if(p+=m+l,u){let k=await Ou(f,`${i.requirementId?`ID: ${i.requirementId}`:""}`,p,e.labelStyle);p+=k;let A=await Ou(f,`${i.text?`Text: ${i.text}`:""}`,p,e.labelStyle);p+=A;let C=await Ou(f,`${i.risk?`Risk: ${i.risk}`:""}`,p,e.labelStyle);p+=C,await Ou(f,`${i.verifyMethod?`Verification: ${i.verifyMethod}`:""}`,p,e.labelStyle)}else{let k=await Ou(f,`${a.type?`Type: ${a.type}`:""}`,p,e.labelStyle);p+=k,await Ou(f,`${a.docRef?`Doc Ref: ${a.docRef}`:""}`,p,e.labelStyle)}let g=(f.node()?.getBBox().width??200)+s,y=(f.node()?.getBBox().height??200)+s,v=-g/2,x=-y/2,b=Ze.svg(f),T=Je(e,{});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let S=b.rectangle(v,x,g,y,T),w=f.insert(()=>S,":first-child");if(w.attr("class","basic label-container").attr("style",n),f.selectAll(".label").each((k,A,C)=>{let R=qe(C[A]),I=R.attr("transform"),L=0,E=0;if(I){let M=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(I);M&&(L=parseFloat(M[1]),E=parseFloat(M[2]))}let D=E-y/2,_=v+s/2;(A===0||A===1)&&(_=L),R.attr("transform",`translate(${_}, ${D+s})`)}),p>d+m+l){let k=b.line(v,x+d+m+l,v+g,x+d+m+l,T);f.insert(()=>k).attr("style",n)}return Qe(e,w),e.intersect=function(k){return Xe.rect(e,k)},f}async function Ou(t,e,r,n=""){if(e==="")return 0;let i=t.insert("g").attr("class","label").attr("style",n),a=ge(),s=a.htmlLabels??!0,l=await di(i,iv(Ji(e)),{width:Zi(e,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:n},a),u;if(s){let h=l.children[0],f=qe(l);u=h.getBoundingClientRect(),f.attr("width",u.width),f.attr("height",u.height)}else{let h=l.children[0];for(let f of h.children)f.textContent=f.textContent.replaceAll(">",">").replaceAll("<","<"),n&&f.setAttribute("style",n);u=l.getBBox(),u.height+=6}return i.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}var Ste=N(()=>{"use strict";It();Ut();$t();Ht();tr();Xt();zo();yr();o(Ete,"requirementBox");o(Ou,"addText")});async function Cte(t,e,{config:r}){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n||"";let a=10,s=e.width;e.width=(e.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await ut(t,e,st(e)),f=e.padding||10,d="",p;"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(d=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",d).attr("target","_blank"));let m={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await YT(p,"ticket"in e&&e.ticket||"",m):{label:g,bbox:y}=await YT(l,"ticket"in e&&e.ticket||"",m);let{label:v,bbox:x}=await YT(l,"assigned"in e&&e.assigned||"",m);e.width=s;let b=10,T=e?.width||0,S=Math.max(y.height,x.height)/2,w=Math.max(u.height+b*2,e?.height||0)+S,k=-T/2,A=-w/2;h.attr("transform","translate("+(f-T/2)+", "+(-S-u.height/2)+")"),g.attr("transform","translate("+(f-T/2)+", "+(-S+u.height/2)+")"),v.attr("transform","translate("+(f+T/2-x.width-2*a)+", "+(-S+u.height/2)+")");let C,{rx:R,ry:I}=e,{cssStyles:L}=e;if(e.look==="handDrawn"){let E=Ze.svg(l),D=Je(e,{}),_=R||I?E.path(Fs(k,A,T,w,R||0),D):E.rectangle(k,A,T,w,D);C=l.insert(()=>_,":first-child"),C.attr("class","basic label-container").attr("style",L||null)}else{C=l.insert("rect",":first-child"),C.attr("class","basic label-container __APA__").attr("style",i).attr("rx",R??5).attr("ry",I??5).attr("x",k).attr("y",A).attr("width",T).attr("height",w);let E="priority"in e&&e.priority;if(E){let D=l.append("line"),_=k+2,O=A+Math.floor((R??0)/2),M=A+w-Math.floor((R??0)/2);D.attr("x1",_).attr("y1",O).attr("x2",_).attr("y2",M).attr("stroke-width","4").attr("stroke",kRe(E))}}return Qe(e,C),e.height=w,e.intersect=function(E){return Xe.rect(e,E)},l}var kRe,Ate=N(()=>{"use strict";It();Ut();Zd();$t();Ht();kRe=o(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");o(Cte,"kanbanItem")});async function _te(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await ut(t,e,st(e)),u=a.width+10*s,h=a.height+8*s,f=.15*u,{cssStyles:d}=e,p=a.width+20,m=a.height+20,g=Math.max(u,p),y=Math.max(h,m);l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`);let v,x=`M0 0 + a${f},${f} 1 0,0 ${g*.25},${-1*y*.1} + a${f},${f} 1 0,0 ${g*.25},0 + a${f},${f} 1 0,0 ${g*.25},0 + a${f},${f} 1 0,0 ${g*.25},${y*.1} + + a${f},${f} 1 0,0 ${g*.15},${y*.33} + a${f*.8},${f*.8} 1 0,0 0,${y*.34} + a${f},${f} 1 0,0 ${-1*g*.15},${y*.33} + + a${f},${f} 1 0,0 ${-1*g*.25},${y*.15} + a${f},${f} 1 0,0 ${-1*g*.25},0 + a${f},${f} 1 0,0 ${-1*g*.25},0 + a${f},${f} 1 0,0 ${-1*g*.25},${-1*y*.15} + + a${f},${f} 1 0,0 ${-1*g*.1},${-1*y*.33} + a${f*.8},${f*.8} 1 0,0 0,${-1*y*.34} + a${f},${f} 1 0,0 ${g*.1},${-1*y*.33} + H0 V0 Z`;if(e.look==="handDrawn"){let b=Ze.svg(i),T=Je(e,{}),S=b.path(x,T);v=i.insert(()=>S,":first-child"),v.attr("class","basic label-container").attr("style",Cn(d))}else v=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",x);return v.attr("transform",`translate(${-g/2}, ${-y/2})`),Qe(e,v),e.calcIntersect=function(b,T){return Xe.rect(b,T)},e.intersect=function(b){return X.info("Bang intersect",e,b),Xe.rect(e,b)},i}var Dte=N(()=>{"use strict";pt();It();Ut();$t();Ht();tr();o(_te,"bang")});async function Lte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await ut(t,e,st(e)),u=a.width+2*s,h=a.height+2*s,f=.15*u,d=.25*u,p=.35*u,m=.2*u,{cssStyles:g}=e,y,v=`M0 0 + a${f},${f} 0 0,1 ${u*.25},${-1*u*.1} + a${p},${p} 1 0,1 ${u*.4},${-1*u*.1} + a${d},${d} 1 0,1 ${u*.35},${u*.2} + + a${f},${f} 1 0,1 ${u*.15},${h*.35} + a${m},${m} 1 0,1 ${-1*u*.15},${h*.65} + + a${d},${f} 1 0,1 ${-1*u*.25},${u*.15} + a${p},${p} 1 0,1 ${-1*u*.5},0 + a${f},${f} 1 0,1 ${-1*u*.25},${-1*u*.15} + + a${f},${f} 1 0,1 ${-1*u*.1},${-1*h*.35} + a${m},${m} 1 0,1 ${u*.1},${-1*h*.65} + H0 V0 Z`;if(e.look==="handDrawn"){let x=Ze.svg(i),b=Je(e,{}),T=x.path(v,b);y=i.insert(()=>T,":first-child"),y.attr("class","basic label-container").attr("style",Cn(g))}else y=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",v);return l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),y.attr("transform",`translate(${-u/2}, ${-h/2})`),Qe(e,y),e.calcIntersect=function(x,b){return Xe.rect(x,b)},e.intersect=function(x){return X.info("Cloud intersect",e,x),Xe.rect(e,x)},i}var Rte=N(()=>{"use strict";Ht();pt();tr();Ut();$t();It();o(Lte,"cloud")});async function Nte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await ut(t,e,st(e)),u=a.width+8*s,h=a.height+2*s,f=5,d=` + M${-u/2} ${h/2-f} + v${-h+2*f} + q0,-${f} ${f},-${f} + h${u-2*f} + q${f},0 ${f},${f} + v${h-2*f} + q0,${f} -${f},${f} + h${-u+2*f} + q-${f},0 -${f},-${f} + Z + `,p=i.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("style",n).attr("d",d);return i.append("line").attr("class","node-line-").attr("x1",-u/2).attr("y1",h/2).attr("x2",u/2).attr("y2",h/2),l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),i.append(()=>l.node()),Qe(e,p),e.calcIntersect=function(m,g){return Xe.rect(m,g)},e.intersect=function(m){return Xe.rect(e,m)},i}var Mte=N(()=>{"use strict";Ut();$t();It();o(Nte,"defaultMindmapNode")});async function Ite(t,e){let r={padding:e.padding??0};return iw(t,e,r)}var Ote=N(()=>{"use strict";U9();o(Ite,"mindmapCircle")});function Pte(t){return t in q9}var ERe,SRe,q9,W9=N(()=>{"use strict";yJ();bJ();wJ();EJ();U9();CJ();_J();LJ();NJ();IJ();PJ();FJ();zJ();VJ();HJ();WJ();XJ();KJ();ZJ();eee();ree();iee();see();lee();uee();fee();pee();gee();vee();bee();wee();Eee();Cee();_ee();Lee();Nee();Iee();Pee();Fee();zee();Vee();Hee();Wee();Xee();Kee();Zee();ete();rte();ite();ste();lte();ute();fte();pte();gte();vte();xte();kte();Ste();Ate();Dte();Rte();Mte();Ote();ERe=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:Gee},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Oee},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Uee},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:Qee},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:OJ},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:iw},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:_te},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:Lte},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Dee},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:jJ},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:mee},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:dee},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:ote},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:cee},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:$J},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:nte},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:TJ},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Bee},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:jee},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:Yee},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:qJ},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:QJ},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:AJ},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:DJ},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:RJ},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:yee},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:dte},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:YJ},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:ate},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:xee},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:MJ},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:BJ},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:hte},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:yte},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:GJ},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:cte},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:UJ},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:$ee},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:See},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:kee},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:xJ},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:SJ},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:tte},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Jee},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:mte},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Ree},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:Tee}],SRe=o(()=>{let e=[...Object.entries({state:qee,choice:kJ,note:Aee,rectWithTitle:Mee,labelRect:hee,iconSquare:aee,iconCircle:tee,icon:JJ,iconRounded:nee,imageSquare:oee,anchor:gJ,kanbanItem:Cte,mindmapCircle:Ite,defaultMindmapNode:Nte,classBox:wte,erBox:H9,requirementBox:Ete}),...ERe.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(i=>[i,r.handler]))];return Object.fromEntries(e)},"generateShapeMap"),q9=SRe();o(Pte,"isValidShape")});var CRe,lw,Bte=N(()=>{"use strict";yr();w2();Xt();pt();W9();tr();gr();ci();CRe="flowchart-",lw=class{constructor(){this.vertexCounter=0;this.config=ge();this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=Rr;this.setAccDescription=Ir;this.setDiagramTitle=$r;this.getAccTitle=Mr;this.getAccDescription=Or;this.getDiagramTitle=Pr;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{o(this,"FlowDB")}sanitizeText(e){return tt.sanitizeText(e,this.config)}lookUpDomId(e){for(let r of this.vertices.values())if(r.id===e)return r.domId;return e}addVertex(e,r,n,i,a,s,l={},u){if(!e||e.trim().length===0)return;let h;if(u!==void 0){let m;u.includes(` `)?m=u+` `:m=`{ `+u+` -}`,h=cm(m,{schema:lm})}let f=this.edges.find(m=>m.id===e);if(f){let m=h;m?.animate!==void 0&&(f.animate=m.animate),m?.animation!==void 0&&(f.animation=m.animation);return}let d,p=this.vertices.get(e);if(p===void 0&&(p={id:e,labelType:"text",domId:C_e+e+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(e,p)),this.vertexCounter++,r!==void 0?(this.config=me(),d=this.sanitizeText(r.text.trim()),p.labelType=r.type,d.startsWith('"')&&d.endsWith('"')&&(d=d.substring(1,d.length-1)),p.text=d):p.text===void 0&&(p.text=e),n!==void 0&&(p.type=n),i?.forEach(m=>{p.styles.push(m)}),a?.forEach(m=>{p.classes.push(m)}),s!==void 0&&(p.dir=s),p.props===void 0?p.props=l:l!==void 0&&Object.assign(p.props,l),h!==void 0){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!WZ(h.shape))throw new Error(`No such shape: ${h.shape}.`);p.type=h?.shape}h?.label&&(p.text=h?.label),h?.icon&&(p.icon=h?.icon,!h.label?.trim()&&p.text===e&&(p.text="")),h?.form&&(p.form=h?.form),h?.pos&&(p.pos=h?.pos),h?.img&&(p.img=h?.img,!h.label?.trim()&&p.text===e&&(p.text="")),h?.constraint&&(p.constraint=h.constraint),h.w&&(p.assetWidth=Number(h.w)),h.h&&(p.assetHeight=Number(h.h))}}addSingleLink(e,r,n,i){let l={start:e,end:r,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};Y.info("abc78 Got edge...",l);let u=n.text;if(u!==void 0&&(l.text=this.sanitizeText(u.text.trim()),l.text.startsWith('"')&&l.text.endsWith('"')&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=u.type),n!==void 0&&(l.type=n.type,l.stroke=n.stroke,l.length=n.length>10?10:n.length),i&&!this.edges.some(h=>h.id===i))l.id=i,l.isUserDefinedId=!0;else{let h=this.edges.filter(f=>f.start===l.start&&f.end===l.end);h.length===0?l.id=$h(l.start,l.end,{counter:0,prefix:"L"}):l.id=$h(l.start,l.end,{counter:h.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))Y.info("Pushing edge..."),this.edges.push(l);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}. +}`,h=Kh(m,{schema:jh})}let f=this.edges.find(m=>m.id===e);if(f){let m=h;m?.animate!==void 0&&(f.animate=m.animate),m?.animation!==void 0&&(f.animation=m.animation),m?.curve!==void 0&&(f.interpolate=m.curve);return}let d,p=this.vertices.get(e);if(p===void 0&&(p={id:e,labelType:"text",domId:CRe+e+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(e,p)),this.vertexCounter++,r!==void 0?(this.config=ge(),d=this.sanitizeText(r.text.trim()),p.labelType=r.type,d.startsWith('"')&&d.endsWith('"')&&(d=d.substring(1,d.length-1)),p.text=d):p.text===void 0&&(p.text=e),n!==void 0&&(p.type=n),i?.forEach(m=>{p.styles.push(m)}),a?.forEach(m=>{p.classes.push(m)}),s!==void 0&&(p.dir=s),p.props===void 0?p.props=l:l!==void 0&&Object.assign(p.props,l),h!==void 0){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!Pte(h.shape))throw new Error(`No such shape: ${h.shape}.`);p.type=h?.shape}h?.label&&(p.text=h?.label),h?.icon&&(p.icon=h?.icon,!h.label?.trim()&&p.text===e&&(p.text="")),h?.form&&(p.form=h?.form),h?.pos&&(p.pos=h?.pos),h?.img&&(p.img=h?.img,!h.label?.trim()&&p.text===e&&(p.text="")),h?.constraint&&(p.constraint=h.constraint),h.w&&(p.assetWidth=Number(h.w)),h.h&&(p.assetHeight=Number(h.h))}}addSingleLink(e,r,n,i){let l={start:e,end:r,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};X.info("abc78 Got edge...",l);let u=n.text;if(u!==void 0&&(l.text=this.sanitizeText(u.text.trim()),l.text.startsWith('"')&&l.text.endsWith('"')&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=u.type),n!==void 0&&(l.type=n.type,l.stroke=n.stroke,l.length=n.length>10?10:n.length),i&&!this.edges.some(h=>h.id===i))l.id=i,l.isUserDefinedId=!0;else{let h=this.edges.filter(f=>f.start===l.start&&f.end===l.end);h.length===0?l.id=xc(l.start,l.end,{counter:0,prefix:"L"}):l.id=xc(l.start,l.end,{counter:h.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))X.info("Pushing edge..."),this.edges.push(l);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}. Initialize mermaid with maxEdges set to a higher number to allow more edges. You cannot set this config via configuration inside the diagram as it is a secure config. -You have to call mermaid.initialize.`)}isLinkData(e){return e!==null&&typeof e=="object"&&"id"in e&&typeof e.id=="string"}addLink(e,r,n){let i=this.isLinkData(n)?n.id.replace("@",""):void 0;Y.info("addLink",e,r,i);for(let a of e)for(let s of r){let l=a===e[e.length-1],u=s===r[0];l&&u?this.addSingleLink(a,s,n,i):this.addSingleLink(a,s,n,void 0)}}updateLinkInterpolate(e,r){e.forEach(n=>{n==="default"?this.edges.defaultInterpolate=r:this.edges[n].interpolate=r})}updateLink(e,r){e.forEach(n=>{if(typeof n=="number"&&n>=this.edges.length)throw new Error(`The index ${n} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);n==="default"?this.edges.defaultStyle=r:(this.edges[n].style=r,(this.edges[n]?.style?.length??0)>0&&!this.edges[n]?.style?.some(i=>i?.startsWith("fill"))&&this.edges[n]?.style?.push("fill:none"))})}addClass(e,r){let n=r.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/ยงยงยง/g,",").split(";");e.split(",").forEach(i=>{let a=this.classes.get(i);a===void 0&&(a={id:i,styles:[],textStyles:[]},this.classes.set(i,a)),n?.forEach(s=>{if(/color/.exec(s)){let l=s.replace("fill","bgFill");a.textStyles.push(l)}a.styles.push(s)})})}setDirection(e){this.direction=e,/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(e,r){for(let n of e.split(",")){let i=this.vertices.get(n);i&&i.classes.push(r);let a=this.edges.find(l=>l.id===n);a&&a.classes.push(r);let s=this.subGraphLookup.get(n);s&&s.classes.push(r)}}setTooltip(e,r){if(r!==void 0){r=this.sanitizeText(r);for(let n of e.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(n):n,r)}}setClickFun(e,r,n){let i=this.lookUpDomId(e);if(me().securityLevel!=="loose"||r===void 0)return;let a=[];if(typeof n=="string"){a=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let l=0;l{let l=document.querySelector(`[id="${i}"]`);l!==null&&l.addEventListener("click",()=>{Gt.runFunc(r,...a)},!1)}))}setLink(e,r,n){e.split(",").forEach(i=>{let a=this.vertices.get(i);a!==void 0&&(a.link=Gt.formatUrl(r,this.config),a.linkTarget=n)}),this.setClass(e,"clickable")}getTooltip(e){return this.tooltips.get(e)}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFun(i,r,n)}),this.setClass(e,"clickable")}bindFunctions(e){this.funs.forEach(r=>{r(e)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(e){let r=Ge(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=Ge("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),Ge(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=Ge(a.currentTarget);if(s.attr("title")===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),Ge(a.currentTarget).classed("hover",!1)})}clear(e="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=e,this.config=me(),Ar()}setGen(e){this.version=e||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(e,r,n){let i=e.text.trim(),a=n.text;e===n&&/\s/.exec(n.text)&&(i=void 0);let s=o(f=>{let d={boolean:{},number:{},string:{}},p=[],m;return{nodeList:f.filter(function(y){let v=typeof y;return y.stmt&&y.stmt==="dir"?(m=y.value,!1):y.trim()===""?!1:v in d?d[v].hasOwnProperty(y)?!1:d[v][y]=!0:p.includes(y)?!1:p.push(y)}),dir:m}},"uniq"),{nodeList:l,dir:u}=s(r.flat());if(this.version==="gen-1")for(let f=0;f2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=r,this.subGraphs[r].id===e)return{result:!0,count:0};let i=0,a=1;for(;i=0){let l=this.indexNodes2(e,s);if(l.result)return{result:!0,count:a+l.count};a=a+l.count}i=i+1}return{result:!1,count:a}}getDepthFirstPos(e){return this.posCrossRef[e]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(e){let r=e.trim(),n="arrow_open";switch(r[0]){case"<":n="arrow_point",r=r.slice(1);break;case"x":n="arrow_cross",r=r.slice(1);break;case"o":n="arrow_circle",r=r.slice(1);break}let i="normal";return r.includes("=")&&(i="thick"),r.includes(".")&&(i="dotted"),{type:n,stroke:i}}countChar(e,r){let n=r.length,i=0;for(let a=0;a":i="arrow_point",r.startsWith("<")&&(i="double_"+i,n=n.slice(1));break;case"o":i="arrow_circle",r.startsWith("o")&&(i="double_"+i,n=n.slice(1));break}let a="normal",s=n.length-1;n.startsWith("=")&&(a="thick"),n.startsWith("~")&&(a="invisible");let l=this.countChar(".",n);return l&&(a="dotted",s=l),{type:i,stroke:a,length:s}}destructLink(e,r){let n=this.destructEndLink(e),i;if(r){if(i=this.destructStartLink(r),i.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if(i.type==="arrow_open")i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return i.type==="double_arrow"&&(i.type="double_arrow_point"),i.length=n.length,i}return n}exists(e,r){for(let n of e)if(n.nodes.includes(r))return!0;return!1}makeUniq(e,r){let n=[];return e.nodes.forEach((i,a)=>{this.exists(r,i)||n.push(e.nodes[a])}),{nodes:n}}getTypeFromVertex(e){if(e.img)return"imageSquare";if(e.icon)return e.form==="circle"?"iconCircle":e.form==="square"?"iconSquare":e.form==="rounded"?"iconRounded":"icon";switch(e.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return e.type}}findNode(e,r){return e.find(n=>n.id===r)}destructEdgeType(e){let r="none",n="arrow_point";switch(e){case"arrow_point":case"arrow_circle":case"arrow_cross":n=e;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":r=e.replace("double_",""),n=r;break}return{arrowTypeStart:r,arrowTypeEnd:n}}addNodeFromVertex(e,r,n,i,a,s){let l=n.get(e.id),u=i.get(e.id)??!1,h=this.findNode(r,e.id);if(h)h.cssStyles=e.styles,h.cssCompiledStyles=this.getCompiledStyles(e.classes),h.cssClasses=e.classes.join(" ");else{let f={id:e.id,label:e.text,labelStyle:"",parentId:l,padding:a.flowchart?.padding||8,cssStyles:e.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...e.classes]),cssClasses:"default "+e.classes.join(" "),dir:e.dir,domId:e.domId,look:s,link:e.link,linkTarget:e.linkTarget,tooltip:this.getTooltip(e.id),icon:e.icon,pos:e.pos,img:e.img,assetWidth:e.assetWidth,assetHeight:e.assetHeight,constraint:e.constraint};u?r.push({...f,isGroup:!0,shape:"rect"}):r.push({...f,isGroup:!1,shape:this.getTypeFromVertex(e)})}}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}getData(){let e=me(),r=[],n=[],i=this.getSubGraphs(),a=new Map,s=new Map;for(let h=i.length-1;h>=0;h--){let f=i[h];f.nodes.length>0&&s.set(f.id,!0);for(let d of f.nodes)a.set(d,f.id)}for(let h=i.length-1;h>=0;h--){let f=i[h];r.push({id:f.id,label:f.title,labelStyle:"",parentId:a.get(f.id),padding:8,cssCompiledStyles:this.getCompiledStyles(f.classes),cssClasses:f.classes.join(" "),shape:"rect",dir:f.dir,isGroup:!0,look:e.look})}this.getVertices().forEach(h=>{this.addNodeFromVertex(h,r,a,s,e,e.look||"classic")});let u=this.getEdges();return u.forEach((h,f)=>{let{arrowTypeStart:d,arrowTypeEnd:p}=this.destructEdgeType(h.type),m=[...u.defaultStyle??[]];h.style&&m.push(...h.style);let g={id:$h(h.start,h.end,{counter:f,prefix:"L"},h.id),isUserDefinedId:h.isUserDefinedId,start:h.start,end:h.end,type:h.type??"normal",label:h.text,labelpos:"c",thickness:h.stroke,minlen:h.length,classes:h?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":d,arrowTypeEnd:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":p,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(h.classes),labelStyle:m,style:m,pattern:h.stroke,look:e.look,animate:h.animate,animation:h.animation,curve:h.interpolate||this.edges.defaultInterpolate||e.flowchart?.curve};n.push(g)}),{nodes:r,edges:n,other:{},config:e}}defaultConfig(){return A3.flowchart}}});var yc,gm=N(()=>{"use strict";dr();yc=o((t,e)=>{let r;return e==="sandbox"&&(r=Ge("#i"+t)),(e==="sandbox"?Ge(r.nodes()[0].contentDocument.body):Ge("body")).select(`[id="${t}"]`)},"getDiagramElement")});var Ru,w2=N(()=>{"use strict";Ru=o(({flowchart:t})=>{let e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0,n=e+r;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:n}},"getSubGraphTitleMargins")});var YZ,A_e,__e,D_e,L_e,R_e,N_e,XZ,ym,jZ,Hw=N(()=>{"use strict";zt();gr();vt();w2();dr();Wt();to();RD();Gw();qh();Ut();YZ=o(async(t,e)=>{Y.info("Creating subgraph rect for ",e.id,e);let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=Qe(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=fr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await Hn(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0}),y=g.getBBox();if(fr(r.flowchart.htmlLabels)){let A=g.children[0],S=Ge(g);y=A.getBoundingClientRect(),S.attr("width",y.width),S.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,w=e.y-x/2;Y.trace("Data ",e,JSON.stringify(e));let C;if(e.look==="handDrawn"){let A=Xe.svg(d),S=Ke(e,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),_=A.path(Na(b,w,v,x,0),S);C=d.insert(()=>(Y.debug("Rough node insert CXC",_),_),":first-child"),C.select("path:nth-child(2)").attr("style",h.join(";")),C.select("path").attr("style",f.join(";").replace("fill","stroke"))}else C=d.insert("rect",":first-child"),C.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",w).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:T}=Ru(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+T})`),l){let A=m.select("span");A&&A.attr("style",l)}let E=C.node().getBBox();return e.offsetX=0,e.width=E.width,e.height=E.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Vh(e,A)},{cluster:d,labelBBox:y}},"rect"),A_e=o((t,e)=>{let r=t.insert("g").attr("class","note-cluster").attr("id",e.id),n=r.insert("rect",":first-child"),i=0*e.padding,a=i/2;n.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");let s=n.node().getBBox();return e.width=s.width,e.height=s.height,e.intersect=function(l){return Vh(e,l)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),__e=o(async(t,e)=>{let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:l,nodeBorder:u}=n,h=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),f=h.insert("g",":first-child"),d=h.insert("g").attr("class","cluster-label"),p=h.append("rect"),m=d.node().appendChild(await gc(e.label,e.labelStyle,void 0,!0)),g=m.getBBox();if(fr(r.flowchart.htmlLabels)){let _=m.children[0],I=Ge(m);g=_.getBoundingClientRect(),I.attr("width",g.width),I.attr("height",g.height)}let y=0*e.padding,v=y/2,x=(e.width<=g.width+e.padding?g.width+e.padding:e.width)+y;e.width<=g.width+e.padding?e.diff=(x-e.width)/2-e.padding:e.diff=-e.padding;let b=e.height+y,w=e.height+y-g.height-6,C=e.x-x/2,T=e.y-b/2;e.width=x;let E=e.y-e.height/2-v+g.height+2,A;if(e.look==="handDrawn"){let _=e.cssClasses.includes("statediagram-cluster-alt"),I=Xe.svg(h),D=e.rx||e.ry?I.path(Na(C,T,x,b,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:i}):I.rectangle(C,T,x,b,{seed:i});A=h.insert(()=>D,":first-child");let k=I.rectangle(C,E,x,w,{fill:_?a:s,fillStyle:_?"hachure":"solid",stroke:u,seed:i});A=h.insert(()=>D,":first-child"),p=h.insert(()=>k)}else A=f.insert("rect",":first-child"),A.attr("class","outer").attr("x",C).attr("y",T).attr("width",x).attr("height",b).attr("data-look",e.look),p.attr("class","inner").attr("x",C).attr("y",E).attr("width",x).attr("height",w);d.attr("transform",`translate(${e.x-g.width/2}, ${T+1-(fr(r.flowchart.htmlLabels)?0:3)})`);let S=A.node().getBBox();return e.height=S.height,e.offsetX=0,e.offsetY=g.height-e.padding/2,e.labelBBox=g,e.intersect=function(_){return Vh(e,_)},{cluster:h,labelBBox:g}},"roundedWithTitle"),D_e=o(async(t,e)=>{Y.info("Creating subgraph rect for ",e.id,e);let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=Qe(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=fr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await Hn(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0,width:e.width}),y=g.getBBox();if(fr(r.flowchart.htmlLabels)){let A=g.children[0],S=Ge(g);y=A.getBoundingClientRect(),S.attr("width",y.width),S.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,w=e.y-x/2;Y.trace("Data ",e,JSON.stringify(e));let C;if(e.look==="handDrawn"){let A=Xe.svg(d),S=Ke(e,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:i}),_=A.path(Na(b,w,v,x,e.rx),S);C=d.insert(()=>(Y.debug("Rough node insert CXC",_),_),":first-child"),C.select("path:nth-child(2)").attr("style",h.join(";")),C.select("path").attr("style",f.join(";").replace("fill","stroke"))}else C=d.insert("rect",":first-child"),C.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",w).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:T}=Ru(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+T})`),l){let A=m.select("span");A&&A.attr("style",l)}let E=C.node().getBBox();return e.offsetX=0,e.width=E.width,e.height=E.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Vh(e,A)},{cluster:d,labelBBox:y}},"kanbanSection"),L_e=o((t,e)=>{let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{nodeBorder:a}=n,s=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-look",e.look),l=s.insert("g",":first-child"),u=0*e.padding,h=e.width+u;e.diff=-e.padding;let f=e.height+u,d=e.x-h/2,p=e.y-f/2;e.width=h;let m;if(e.look==="handDrawn"){let v=Xe.svg(s).rectangle(d,p,h,f,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});m=s.insert(()=>v,":first-child")}else m=l.insert("rect",":first-child"),m.attr("class","divider").attr("x",d).attr("y",p).attr("width",h).attr("height",f).attr("data-look",e.look);let g=m.node().getBBox();return e.height=g.height,e.offsetX=0,e.offsetY=0,e.intersect=function(y){return Vh(e,y)},{cluster:s,labelBBox:{}}},"divider"),R_e=YZ,N_e={rect:YZ,squareRect:R_e,roundedWithTitle:__e,noteGroup:A_e,divider:L_e,kanbanSection:D_e},XZ=new Map,ym=o(async(t,e)=>{let r=e.shape||"rect",n=await N_e[r](t,e);return XZ.set(e.id,n),n},"insertCluster"),jZ=o(()=>{XZ=new Map},"clear")});function Ww(t,e){if(t===void 0||e===void 0)return{angle:0,deltaX:0,deltaY:0};t=Wn(t),e=Wn(e);let[r,n]=[t.x,t.y],[i,a]=[e.x,e.y],s=i-r,l=a-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var $o,Wn,qw,JD=N(()=>{"use strict";$o={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:4};o(Ww,"calculateDeltaAndAngle");Wn=o(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),qw=o(t=>({x:o(function(e,r,n){let i=0,a=Wn(n[0]).x=0?1:-1)}else if(r===n.length-1&&Object.hasOwn($o,t.arrowTypeEnd)){let{angle:m,deltaX:g}=Ww(n[n.length-1],n[n.length-2]);i=$o[t.arrowTypeEnd]*Math.cos(m)*(g>=0?1:-1)}let s=Math.abs(Wn(e).x-Wn(n[n.length-1]).x),l=Math.abs(Wn(e).y-Wn(n[n.length-1]).y),u=Math.abs(Wn(e).x-Wn(n[0]).x),h=Math.abs(Wn(e).y-Wn(n[0]).y),f=$o[t.arrowTypeStart],d=$o[t.arrowTypeEnd],p=1;if(s0&&l0&&h=0?1:-1)}else if(r===n.length-1&&Object.hasOwn($o,t.arrowTypeEnd)){let{angle:m,deltaY:g}=Ww(n[n.length-1],n[n.length-2]);i=$o[t.arrowTypeEnd]*Math.abs(Math.sin(m))*(g>=0?1:-1)}let s=Math.abs(Wn(e).y-Wn(n[n.length-1]).y),l=Math.abs(Wn(e).x-Wn(n[n.length-1]).x),u=Math.abs(Wn(e).y-Wn(n[0]).y),h=Math.abs(Wn(e).x-Wn(n[0]).x),f=$o[t.arrowTypeStart],d=$o[t.arrowTypeEnd],p=1;if(s0&&l0&&h{"use strict";vt();QZ=o((t,e,r,n,i,a)=>{e.arrowTypeStart&&KZ(t,"start",e.arrowTypeStart,r,n,i,a),e.arrowTypeEnd&&KZ(t,"end",e.arrowTypeEnd,r,n,i,a)},"addEdgeMarkers"),M_e={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},KZ=o((t,e,r,n,i,a,s)=>{let l=M_e[r];if(!l){Y.warn(`Unknown arrow type: ${r}`);return}let u=l.type,f=`${i}_${a}-${u}${e==="start"?"Start":"End"}`;if(s&&s.trim()!==""){let d=s.replace(/[^\dA-Za-z]/g,"_"),p=`${f}_${d}`;if(!document.getElementById(p)){let m=document.getElementById(f);if(m){let g=m.cloneNode(!0);g.id=p,g.querySelectorAll("path, circle, line").forEach(v=>{v.setAttribute("stroke",s),l.fill&&v.setAttribute("fill",s)}),m.parentNode?.appendChild(g)}}t.attr(`marker-${e}`,`url(${n}#${p})`)}else t.attr(`marker-${e}`,`url(${n}#${f})`)},"addEdgeMarker")});function Yw(t,e){me().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}function P_e(t){let e=[],r=[];for(let n=1;n5&&Math.abs(a.y-i.y)>5||i.y===a.y&&a.x===s.x&&Math.abs(a.x-i.x)>5&&Math.abs(a.y-s.y)>5)&&(e.push(a),r.push(n))}return{cornerPoints:e,cornerPointPositions:r}}var Xw,pa,tJ,T2,jw,Kw,I_e,O_e,JZ,eJ,B_e,Qw,eL=N(()=>{"use strict";zt();gr();vt();to();ir();JD();w2();dr();Wt();Gw();ZZ();Ut();Xw=new Map,pa=new Map,tJ=o(()=>{Xw.clear(),pa.clear()},"clear"),T2=o(t=>t?t.reduce((r,n)=>r+";"+n,""):"","getLabelStyles"),jw=o(async(t,e)=>{let r=fr(me().flowchart.htmlLabels),n=await Hn(t,e.label,{style:T2(e.labelStyle),useHtmlLabels:r,addSvgBackground:!0,isNode:!1});Y.info("abc82",e,e.labelType);let i=t.insert("g").attr("class","edgeLabel"),a=i.insert("g").attr("class","label");a.node().appendChild(n);let s=n.getBBox();if(r){let u=n.children[0],h=Ge(n);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}a.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),Xw.set(e.id,i),e.width=s.width,e.height=s.height;let l;if(e.startLabelLeft){let u=await gc(e.startLabelLeft,T2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),pa.get(e.id)||pa.set(e.id,{}),pa.get(e.id).startLeft=h,Yw(l,e.startLabelLeft)}if(e.startLabelRight){let u=await gc(e.startLabelRight,T2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=h.node().appendChild(u),f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),pa.get(e.id)||pa.set(e.id,{}),pa.get(e.id).startRight=h,Yw(l,e.startLabelRight)}if(e.endLabelLeft){let u=await gc(e.endLabelLeft,T2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),h.node().appendChild(u),pa.get(e.id)||pa.set(e.id,{}),pa.get(e.id).endLeft=h,Yw(l,e.endLabelLeft)}if(e.endLabelRight){let u=await gc(e.endLabelRight,T2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),h.node().appendChild(u),pa.get(e.id)||pa.set(e.id,{}),pa.get(e.id).endRight=h,Yw(l,e.endLabelRight)}return n},"insertEdgeLabel");o(Yw,"setTerminalWidth");Kw=o((t,e)=>{Y.debug("Moving label abc88 ",t.id,t.label,Xw.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=me(),{subGraphTitleTotalMargin:i}=Ru(n);if(t.label){let a=Xw.get(t.id),s=t.x,l=t.y;if(r){let u=Gt.calcLabelPosition(r);Y.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=pa.get(t.id).startLeft,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=pa.get(t.id).startRight,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=pa.get(t.id).endLeft,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=pa.get(t.id).endRight,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),I_e=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),O_e=o((t,e,r)=>{Y.debug(`intersection calc abc89: +You have to call mermaid.initialize.`)}isLinkData(e){return e!==null&&typeof e=="object"&&"id"in e&&typeof e.id=="string"}addLink(e,r,n){let i=this.isLinkData(n)?n.id.replace("@",""):void 0;X.info("addLink",e,r,i);for(let a of e)for(let s of r){let l=a===e[e.length-1],u=s===r[0];l&&u?this.addSingleLink(a,s,n,i):this.addSingleLink(a,s,n,void 0)}}updateLinkInterpolate(e,r){e.forEach(n=>{n==="default"?this.edges.defaultInterpolate=r:this.edges[n].interpolate=r})}updateLink(e,r){e.forEach(n=>{if(typeof n=="number"&&n>=this.edges.length)throw new Error(`The index ${n} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);n==="default"?this.edges.defaultStyle=r:(this.edges[n].style=r,(this.edges[n]?.style?.length??0)>0&&!this.edges[n]?.style?.some(i=>i?.startsWith("fill"))&&this.edges[n]?.style?.push("fill:none"))})}addClass(e,r){let n=r.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/ยงยงยง/g,",").split(";");e.split(",").forEach(i=>{let a=this.classes.get(i);a===void 0&&(a={id:i,styles:[],textStyles:[]},this.classes.set(i,a)),n?.forEach(s=>{if(/color/.exec(s)){let l=s.replace("fill","bgFill");a.textStyles.push(l)}a.styles.push(s)})})}setDirection(e){this.direction=e.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(e,r){for(let n of e.split(",")){let i=this.vertices.get(n);i&&i.classes.push(r);let a=this.edges.find(l=>l.id===n);a&&a.classes.push(r);let s=this.subGraphLookup.get(n);s&&s.classes.push(r)}}setTooltip(e,r){if(r!==void 0){r=this.sanitizeText(r);for(let n of e.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(n):n,r)}}setClickFun(e,r,n){let i=this.lookUpDomId(e);if(ge().securityLevel!=="loose"||r===void 0)return;let a=[];if(typeof n=="string"){a=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let l=0;l{let l=document.querySelector(`[id="${i}"]`);l!==null&&l.addEventListener("click",()=>{qt.runFunc(r,...a)},!1)}))}setLink(e,r,n){e.split(",").forEach(i=>{let a=this.vertices.get(i);a!==void 0&&(a.link=qt.formatUrl(r,this.config),a.linkTarget=n)}),this.setClass(e,"clickable")}getTooltip(e){return this.tooltips.get(e)}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFun(i,r,n)}),this.setClass(e,"clickable")}bindFunctions(e){this.funs.forEach(r=>{r(e)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(e){let r=qe(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=qe("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),qe(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=qe(a.currentTarget);if(s.attr("title")===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),qe(a.currentTarget).classed("hover",!1)})}clear(e="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=e,this.config=ge(),Sr()}setGen(e){this.version=e||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(e,r,n){let i=e.text.trim(),a=n.text;e===n&&/\s/.exec(n.text)&&(i=void 0);let l=o(p=>{let m={boolean:{},number:{},string:{}},g=[],y;return{nodeList:p.filter(function(x){let b=typeof x;return x.stmt&&x.stmt==="dir"?(y=x.value,!1):x.trim()===""?!1:b in m?m[b].hasOwnProperty(x)?!1:m[b][x]=!0:g.includes(x)?!1:g.push(x)}),dir:y}},"uniq")(r.flat()),u=l.nodeList,h=l.dir,f=ge().flowchart??{};if(h=h??(f.inheritDir?this.getDirection()??ge().direction??void 0:void 0),this.version==="gen-1")for(let p=0;p2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=r,this.subGraphs[r].id===e)return{result:!0,count:0};let i=0,a=1;for(;i=0){let l=this.indexNodes2(e,s);if(l.result)return{result:!0,count:a+l.count};a=a+l.count}i=i+1}return{result:!1,count:a}}getDepthFirstPos(e){return this.posCrossRef[e]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(e){let r=e.trim(),n="arrow_open";switch(r[0]){case"<":n="arrow_point",r=r.slice(1);break;case"x":n="arrow_cross",r=r.slice(1);break;case"o":n="arrow_circle",r=r.slice(1);break}let i="normal";return r.includes("=")&&(i="thick"),r.includes(".")&&(i="dotted"),{type:n,stroke:i}}countChar(e,r){let n=r.length,i=0;for(let a=0;a":i="arrow_point",r.startsWith("<")&&(i="double_"+i,n=n.slice(1));break;case"o":i="arrow_circle",r.startsWith("o")&&(i="double_"+i,n=n.slice(1));break}let a="normal",s=n.length-1;n.startsWith("=")&&(a="thick"),n.startsWith("~")&&(a="invisible");let l=this.countChar(".",n);return l&&(a="dotted",s=l),{type:i,stroke:a,length:s}}destructLink(e,r){let n=this.destructEndLink(e),i;if(r){if(i=this.destructStartLink(r),i.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if(i.type==="arrow_open")i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return i.type==="double_arrow"&&(i.type="double_arrow_point"),i.length=n.length,i}return n}exists(e,r){for(let n of e)if(n.nodes.includes(r))return!0;return!1}makeUniq(e,r){let n=[];return e.nodes.forEach((i,a)=>{this.exists(r,i)||n.push(e.nodes[a])}),{nodes:n}}getTypeFromVertex(e){if(e.img)return"imageSquare";if(e.icon)return e.form==="circle"?"iconCircle":e.form==="square"?"iconSquare":e.form==="rounded"?"iconRounded":"icon";switch(e.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return e.type}}findNode(e,r){return e.find(n=>n.id===r)}destructEdgeType(e){let r="none",n="arrow_point";switch(e){case"arrow_point":case"arrow_circle":case"arrow_cross":n=e;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":r=e.replace("double_",""),n=r;break}return{arrowTypeStart:r,arrowTypeEnd:n}}addNodeFromVertex(e,r,n,i,a,s){let l=n.get(e.id),u=i.get(e.id)??!1,h=this.findNode(r,e.id);if(h)h.cssStyles=e.styles,h.cssCompiledStyles=this.getCompiledStyles(e.classes),h.cssClasses=e.classes.join(" ");else{let f={id:e.id,label:e.text,labelStyle:"",parentId:l,padding:a.flowchart?.padding||8,cssStyles:e.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...e.classes]),cssClasses:"default "+e.classes.join(" "),dir:e.dir,domId:e.domId,look:s,link:e.link,linkTarget:e.linkTarget,tooltip:this.getTooltip(e.id),icon:e.icon,pos:e.pos,img:e.img,assetWidth:e.assetWidth,assetHeight:e.assetHeight,constraint:e.constraint};u?r.push({...f,isGroup:!0,shape:"rect"}):r.push({...f,isGroup:!1,shape:this.getTypeFromVertex(e)})}}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}getData(){let e=ge(),r=[],n=[],i=this.getSubGraphs(),a=new Map,s=new Map;for(let h=i.length-1;h>=0;h--){let f=i[h];f.nodes.length>0&&s.set(f.id,!0);for(let d of f.nodes)a.set(d,f.id)}for(let h=i.length-1;h>=0;h--){let f=i[h];r.push({id:f.id,label:f.title,labelStyle:"",parentId:a.get(f.id),padding:8,cssCompiledStyles:this.getCompiledStyles(f.classes),cssClasses:f.classes.join(" "),shape:"rect",dir:f.dir,isGroup:!0,look:e.look})}this.getVertices().forEach(h=>{this.addNodeFromVertex(h,r,a,s,e,e.look||"classic")});let u=this.getEdges();return u.forEach((h,f)=>{let{arrowTypeStart:d,arrowTypeEnd:p}=this.destructEdgeType(h.type),m=[...u.defaultStyle??[]];h.style&&m.push(...h.style);let g={id:xc(h.start,h.end,{counter:f,prefix:"L"},h.id),isUserDefinedId:h.isUserDefinedId,start:h.start,end:h.end,type:h.type??"normal",label:h.text,labelpos:"c",thickness:h.stroke,minlen:h.length,classes:h?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":d,arrowTypeEnd:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":p,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(h.classes),labelStyle:m,style:m,pattern:h.stroke,look:e.look,animate:h.animate,animation:h.animation,curve:h.interpolate||this.edges.defaultInterpolate||e.flowchart?.curve};n.push(g)}),{nodes:r,edges:n,other:{},config:e}}defaultConfig(){return G3.flowchart}}});var Vo,ep=N(()=>{"use strict";yr();Vo=o((t,e)=>{let r;return e==="sandbox"&&(r=qe("#i"+t)),(e==="sandbox"?qe(r.nodes()[0].contentDocument.body):qe("body")).select(`[id="${t}"]`)},"getDiagramElement")});var Pu,O2=N(()=>{"use strict";Pu=o(({flowchart:t})=>{let e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0,n=e+r;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:n}},"getSubGraphTitleMargins")});var Fte,ARe,_Re,DRe,LRe,RRe,NRe,$te,Sm,zte,cw=N(()=>{"use strict";Xt();gr();pt();O2();yr();Ht();zo();S9();aw();Zd();$t();Fte=o(async(t,e)=>{X.info("Creating subgraph rect for ",e.id,e);let r=ge(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=je(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=vr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await di(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0}),y=g.getBBox();if(vr(r.flowchart.htmlLabels)){let A=g.children[0],C=qe(g);y=A.getBoundingClientRect(),C.attr("width",y.width),C.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,T=e.y-x/2;X.trace("Data ",e,JSON.stringify(e));let S;if(e.look==="handDrawn"){let A=Ze.svg(d),C=Je(e,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),R=A.path(Fs(b,T,v,x,0),C);S=d.insert(()=>(X.debug("Rough node insert CXC",R),R),":first-child"),S.select("path:nth-child(2)").attr("style",h.join(";")),S.select("path").attr("style",f.join(";").replace("fill","stroke"))}else S=d.insert("rect",":first-child"),S.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:w}=Pu(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+w})`),l){let A=m.select("span");A&&A.attr("style",l)}let k=S.node().getBBox();return e.offsetX=0,e.width=k.width,e.height=k.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Qh(e,A)},{cluster:d,labelBBox:y}},"rect"),ARe=o((t,e)=>{let r=t.insert("g").attr("class","note-cluster").attr("id",e.id),n=r.insert("rect",":first-child"),i=0*e.padding,a=i/2;n.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");let s=n.node().getBBox();return e.width=s.width,e.height=s.height,e.intersect=function(l){return Qh(e,l)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),_Re=o(async(t,e)=>{let r=ge(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:l,nodeBorder:u}=n,h=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),f=h.insert("g",":first-child"),d=h.insert("g").attr("class","cluster-label"),p=h.append("rect"),m=d.node().appendChild(await kc(e.label,e.labelStyle,void 0,!0)),g=m.getBBox();if(vr(r.flowchart.htmlLabels)){let R=m.children[0],I=qe(m);g=R.getBoundingClientRect(),I.attr("width",g.width),I.attr("height",g.height)}let y=0*e.padding,v=y/2,x=(e.width<=g.width+e.padding?g.width+e.padding:e.width)+y;e.width<=g.width+e.padding?e.diff=(x-e.width)/2-e.padding:e.diff=-e.padding;let b=e.height+y,T=e.height+y-g.height-6,S=e.x-x/2,w=e.y-b/2;e.width=x;let k=e.y-e.height/2-v+g.height+2,A;if(e.look==="handDrawn"){let R=e.cssClasses.includes("statediagram-cluster-alt"),I=Ze.svg(h),L=e.rx||e.ry?I.path(Fs(S,w,x,b,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:i}):I.rectangle(S,w,x,b,{seed:i});A=h.insert(()=>L,":first-child");let E=I.rectangle(S,k,x,T,{fill:R?a:s,fillStyle:R?"hachure":"solid",stroke:u,seed:i});A=h.insert(()=>L,":first-child"),p=h.insert(()=>E)}else A=f.insert("rect",":first-child"),A.attr("class","outer").attr("x",S).attr("y",w).attr("width",x).attr("height",b).attr("data-look",e.look),p.attr("class","inner").attr("x",S).attr("y",k).attr("width",x).attr("height",T);d.attr("transform",`translate(${e.x-g.width/2}, ${w+1-(vr(r.flowchart.htmlLabels)?0:3)})`);let C=A.node().getBBox();return e.height=C.height,e.offsetX=0,e.offsetY=g.height-e.padding/2,e.labelBBox=g,e.intersect=function(R){return Qh(e,R)},{cluster:h,labelBBox:g}},"roundedWithTitle"),DRe=o(async(t,e)=>{X.info("Creating subgraph rect for ",e.id,e);let r=ge(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=je(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=vr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await di(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0,width:e.width}),y=g.getBBox();if(vr(r.flowchart.htmlLabels)){let A=g.children[0],C=qe(g);y=A.getBoundingClientRect(),C.attr("width",y.width),C.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,T=e.y-x/2;X.trace("Data ",e,JSON.stringify(e));let S;if(e.look==="handDrawn"){let A=Ze.svg(d),C=Je(e,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:i}),R=A.path(Fs(b,T,v,x,e.rx),C);S=d.insert(()=>(X.debug("Rough node insert CXC",R),R),":first-child"),S.select("path:nth-child(2)").attr("style",h.join(";")),S.select("path").attr("style",f.join(";").replace("fill","stroke"))}else S=d.insert("rect",":first-child"),S.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:w}=Pu(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+w})`),l){let A=m.select("span");A&&A.attr("style",l)}let k=S.node().getBBox();return e.offsetX=0,e.width=k.width,e.height=k.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Qh(e,A)},{cluster:d,labelBBox:y}},"kanbanSection"),LRe=o((t,e)=>{let r=ge(),{themeVariables:n,handDrawnSeed:i}=r,{nodeBorder:a}=n,s=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-look",e.look),l=s.insert("g",":first-child"),u=0*e.padding,h=e.width+u;e.diff=-e.padding;let f=e.height+u,d=e.x-h/2,p=e.y-f/2;e.width=h;let m;if(e.look==="handDrawn"){let v=Ze.svg(s).rectangle(d,p,h,f,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});m=s.insert(()=>v,":first-child")}else m=l.insert("rect",":first-child"),m.attr("class","divider").attr("x",d).attr("y",p).attr("width",h).attr("height",f).attr("data-look",e.look);let g=m.node().getBBox();return e.height=g.height,e.offsetX=0,e.offsetY=0,e.intersect=function(y){return Qh(e,y)},{cluster:s,labelBBox:{}}},"divider"),RRe=Fte,NRe={rect:Fte,squareRect:RRe,roundedWithTitle:_Re,noteGroup:ARe,divider:LRe,kanbanSection:DRe},$te=new Map,Sm=o(async(t,e)=>{let r=e.shape||"rect",n=await NRe[r](t,e);return $te.set(e.id,n),n},"insertCluster"),zte=o(()=>{$te=new Map},"clear")});function uw(t,e){if(t===void 0||e===void 0)return{angle:0,deltaX:0,deltaY:0};t=Xn(t),e=Xn(e);let[r,n]=[t.x,t.y],[i,a]=[e.x,e.y],s=i-r,l=a-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var fa,Y9,Xn,hw,X9=N(()=>{"use strict";fa={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4},Y9={arrow_point:9,arrow_cross:12.5,arrow_circle:12.5};o(uw,"calculateDeltaAndAngle");Xn=o(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),hw=o(t=>({x:o(function(e,r,n){let i=0,a=Xn(n[0]).x=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(fa,t.arrowTypeEnd)){let{angle:m,deltaX:g}=uw(n[n.length-1],n[n.length-2]);i=fa[t.arrowTypeEnd]*Math.cos(m)*(g>=0?1:-1)}let s=Math.abs(Xn(e).x-Xn(n[n.length-1]).x),l=Math.abs(Xn(e).y-Xn(n[n.length-1]).y),u=Math.abs(Xn(e).x-Xn(n[0]).x),h=Math.abs(Xn(e).y-Xn(n[0]).y),f=fa[t.arrowTypeStart],d=fa[t.arrowTypeEnd],p=1;if(s0&&l0&&h=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(fa,t.arrowTypeEnd)){let{angle:m,deltaY:g}=uw(n[n.length-1],n[n.length-2]);i=fa[t.arrowTypeEnd]*Math.abs(Math.sin(m))*(g>=0?1:-1)}let s=Math.abs(Xn(e).y-Xn(n[n.length-1]).y),l=Math.abs(Xn(e).x-Xn(n[n.length-1]).x),u=Math.abs(Xn(e).y-Xn(n[0]).y),h=Math.abs(Xn(e).x-Xn(n[0]).x),f=fa[t.arrowTypeStart],d=fa[t.arrowTypeEnd],p=1;if(s0&&l0&&h{"use strict";pt();Vte=o((t,e,r,n,i,a)=>{e.arrowTypeStart&&Gte(t,"start",e.arrowTypeStart,r,n,i,a),e.arrowTypeEnd&&Gte(t,"end",e.arrowTypeEnd,r,n,i,a)},"addEdgeMarkers"),MRe={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},Gte=o((t,e,r,n,i,a,s)=>{let l=MRe[r];if(!l){X.warn(`Unknown arrow type: ${r}`);return}let u=l.type,f=`${i}_${a}-${u}${e==="start"?"Start":"End"}`;if(s&&s.trim()!==""){let d=s.replace(/[^\dA-Za-z]/g,"_"),p=`${f}_${d}`;if(!document.getElementById(p)){let m=document.getElementById(f);if(m){let g=m.cloneNode(!0);g.id=p,g.querySelectorAll("path, circle, line").forEach(v=>{v.setAttribute("stroke",s),l.fill&&v.setAttribute("fill",s)}),m.parentNode?.appendChild(g)}}t.attr(`marker-${e}`,`url(${n}#${p})`)}else t.attr(`marker-${e}`,`url(${n}#${f})`)},"addEdgeMarker")});function dw(t,e){ge().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}function PRe(t){let e=[],r=[];for(let n=1;n5&&Math.abs(a.y-i.y)>5||i.y===a.y&&a.x===s.x&&Math.abs(a.x-i.x)>5&&Math.abs(a.y-s.y)>5)&&(e.push(a),r.push(n))}return{cornerPoints:e,cornerPointPositions:r}}function $Re(t,e){if(t.length<2)return"";let r="",n=t.length,i=1e-5;for(let a=0;a({...i}));if(t.length>=2&&fa[e.arrowTypeStart]){let i=fa[e.arrowTypeStart],a=t[0],s=t[1],{angle:l}=Wte(a,s),u=i*Math.cos(l),h=i*Math.sin(l);r[0].x=a.x+u,r[0].y=a.y+h}let n=t.length;if(n>=2&&fa[e.arrowTypeEnd]){let i=fa[e.arrowTypeEnd],a=t[n-1],s=t[n-2],{angle:l}=Wte(s,a),u=i*Math.cos(l),h=i*Math.sin(l);r[n-1].x=a.x-u,r[n-1].y=a.y-h}return r}var pw,da,Yte,fw,mw,gw,IRe,ORe,Hte,qte,BRe,FRe,yw,j9=N(()=>{"use strict";Xt();gr();pt();zo();tr();X9();O2();yr();Ht();aw();Ute();$t();pw=new Map,da=new Map,Yte=o(()=>{pw.clear(),da.clear()},"clear"),fw=o(t=>t?t.reduce((r,n)=>r+";"+n,""):"","getLabelStyles"),mw=o(async(t,e)=>{let r=vr(ge().flowchart.htmlLabels),{labelStyles:n}=je(e);e.labelStyle=n;let i=await di(t,e.label,{style:e.labelStyle,useHtmlLabels:r,addSvgBackground:!0,isNode:!1});X.info("abc82",e,e.labelType);let a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label").attr("data-id",e.id);s.node().appendChild(i);let l=i.getBBox();if(r){let h=i.children[0],f=qe(i);l=h.getBoundingClientRect(),f.attr("width",l.width),f.attr("height",l.height)}s.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),pw.set(e.id,a),e.width=l.width,e.height=l.height;let u;if(e.startLabelLeft){let h=await kc(e.startLabelLeft,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),da.get(e.id)||da.set(e.id,{}),da.get(e.id).startLeft=f,dw(u,e.startLabelLeft)}if(e.startLabelRight){let h=await kc(e.startLabelRight,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=f.node().appendChild(h),d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),da.get(e.id)||da.set(e.id,{}),da.get(e.id).startRight=f,dw(u,e.startLabelRight)}if(e.endLabelLeft){let h=await kc(e.endLabelLeft,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),da.get(e.id)||da.set(e.id,{}),da.get(e.id).endLeft=f,dw(u,e.endLabelLeft)}if(e.endLabelRight){let h=await kc(e.endLabelRight,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),da.get(e.id)||da.set(e.id,{}),da.get(e.id).endRight=f,dw(u,e.endLabelRight)}return i},"insertEdgeLabel");o(dw,"setTerminalWidth");gw=o((t,e)=>{X.debug("Moving label abc88 ",t.id,t.label,pw.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=ge(),{subGraphTitleTotalMargin:i}=Pu(n);if(t.label){let a=pw.get(t.id),s=t.x,l=t.y;if(r){let u=qt.calcLabelPosition(r);X.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=da.get(t.id).startLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=da.get(t.id).startRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=da.get(t.id).endLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=da.get(t.id).endRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),IRe=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),ORe=o((t,e,r)=>{X.debug(`intersection calc abc89: outsidePoint: ${JSON.stringify(e)} insidePoint : ${JSON.stringify(r)} - node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{Y.warn("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(Y.info("abc88 checking point",a,e),!I_e(e,a)&&!i){let s=O_e(e,n,a);Y.debug("abc88 inside",a,n,s),Y.debug("abc88 intersection",s,e);let l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)?Y.warn("abc88 no intersect",s,r):r.push(s),i=!0}else Y.warn("abc88 outside",a,n),n=a,i||r.push(a)}),Y.debug("returning points",r),r},"cutPathAtIntersect");o(P_e,"extractCornerPoints");eJ=o(function(t,e,r){let n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),s=r/a;return{x:e.x-s*n,y:e.y-s*i}},"findAdjacentPoint"),B_e=o(function(t){let{cornerPointPositions:e}=P_e(t),r=[];for(let n=0;n10&&Math.abs(a.y-i.y)>=10){Y.debug("Corner point fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));let m=5;s.x===l.x?p={x:h<0?l.x-m+d:l.x+m-d,y:f<0?l.y-d:l.y+d}:p={x:h<0?l.x-d:l.x+d,y:f<0?l.y-m+d:l.y+m-d}}else Y.debug("Corner point skipping fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));r.push(p,u)}else r.push(t[n]);return r},"fixCorners"),Qw=o(function(t,e,r,n,i,a,s){let{handDrawnSeed:l}=me(),u=e.points,h=!1,f=i;var d=a;let p=[];for(let _ in e.cssCompiledStyles)ND(_)||p.push(e.cssCompiledStyles[_]);d.intersect&&f.intersect&&(u=u.slice(1,e.points.length-1),u.unshift(f.intersect(u[0])),Y.debug("Last point APA12",e.start,"-->",e.end,u[u.length-1],d,d.intersect(u[u.length-1])),u.push(d.intersect(u[u.length-1]))),e.toCluster&&(Y.info("to cluster abc88",r.get(e.toCluster)),u=JZ(e.points,r.get(e.toCluster).node),h=!0),e.fromCluster&&(Y.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(u,null,2)),u=JZ(u.reverse(),r.get(e.fromCluster).node).reverse(),h=!0);let m=u.filter(_=>!Number.isNaN(_.y));m=B_e(m);let g=Do;switch(g=wu,e.curve){case"linear":g=wu;break;case"basis":g=Do;break;case"cardinal":g=Pv;break;case"bumpX":g=Rv;break;case"bumpY":g=Nv;break;case"catmullRom":g=$v;break;case"monotoneX":g=zv;break;case"monotoneY":g=Gv;break;case"natural":g=F0;break;case"step":g=$0;break;case"stepAfter":g=Uv;break;case"stepBefore":g=Vv;break;default:g=Do}let{x:y,y:v}=qw(e),x=wl().x(y).y(v).curve(g),b;switch(e.thickness){case"normal":b="edge-thickness-normal";break;case"thick":b="edge-thickness-thick";break;case"invisible":b="edge-thickness-invisible";break;default:b="edge-thickness-normal"}switch(e.pattern){case"solid":b+=" edge-pattern-solid";break;case"dotted":b+=" edge-pattern-dotted";break;case"dashed":b+=" edge-pattern-dashed";break;default:b+=" edge-pattern-solid"}let w,C=x(m),T=Array.isArray(e.style)?e.style:[e.style],E=T.find(_=>_?.startsWith("stroke:"));if(e.look==="handDrawn"){let _=Xe.svg(t);Object.assign([],m);let I=_.path(C,{roughness:.3,seed:l});b+=" transition",w=Ge(I).select("path").attr("id",e.id).attr("class"," "+b+(e.classes?" "+e.classes:"")).attr("style",T?T.reduce((k,L)=>k+";"+L,""):"");let D=w.attr("d");w.attr("d",D),t.node().appendChild(w.node())}else{let _=p.join(";"),I=T?T.reduce((L,R)=>L+R+";",""):"",D="";e.animate&&(D=" edge-animation-fast"),e.animation&&(D=" edge-animation-"+e.animation);let k=_?_+";"+I+";":I;w=t.append("path").attr("d",C).attr("id",e.id).attr("class"," "+b+(e.classes?" "+e.classes:"")+(D??"")).attr("style",k),E=k.match(/stroke:([^;]+)/)?.[1]}let A="";(me().flowchart.arrowMarkerAbsolute||me().state.arrowMarkerAbsolute)&&(A=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,A=A.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),Y.info("arrowTypeStart",e.arrowTypeStart),Y.info("arrowTypeEnd",e.arrowTypeEnd),QZ(w,e,A,s,n,E);let S={};return h&&(S.updatedPath=u),S.originalPath=e.points,S},"insertEdge")});var F_e,$_e,z_e,G_e,V_e,U_e,H_e,W_e,q_e,Y_e,X_e,j_e,K_e,Q_e,Z_e,J_e,e9e,Zw,tL=N(()=>{"use strict";vt();F_e=o((t,e,r,n)=>{e.forEach(i=>{e9e[i](t,r,n)})},"insertMarkers"),$_e=o((t,e,r)=>{Y.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),z_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),G_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),V_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),U_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),H_e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),W_e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),q_e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),Y_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),X_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),j_e=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("d","M9,0 L9,18");let i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),K_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),Q_e=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");let i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),Z_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0 + node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{X.warn("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(X.info("abc88 checking point",a,e),!IRe(e,a)&&!i){let s=ORe(e,n,a);X.debug("abc88 inside",a,n,s),X.debug("abc88 intersection",s,e);let l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)?X.warn("abc88 no intersect",s,r):r.push(s),i=!0}else X.warn("abc88 outside",a,n),n=a,i||r.push(a)}),X.debug("returning points",r),r},"cutPathAtIntersect");o(PRe,"extractCornerPoints");qte=o(function(t,e,r){let n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),s=r/a;return{x:e.x-s*n,y:e.y-s*i}},"findAdjacentPoint"),BRe=o(function(t){let{cornerPointPositions:e}=PRe(t),r=[];for(let n=0;n10&&Math.abs(a.y-i.y)>=10){X.debug("Corner point fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));let m=5;s.x===l.x?p={x:h<0?l.x-m+d:l.x+m-d,y:f<0?l.y-d:l.y+d}:p={x:h<0?l.x-d:l.x+d,y:f<0?l.y-m+d:l.y+m-d}}else X.debug("Corner point skipping fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));r.push(p,u)}else r.push(t[n]);return r},"fixCorners"),FRe=o((t,e,r)=>{let n=t-e-r,i=2,a=2,s=i+a,l=Math.floor(n/s),u=Array(l).fill(`${i} ${a}`).join(" ");return`0 ${e} ${u} ${r}`},"generateDashArray"),yw=o(function(t,e,r,n,i,a,s,l=!1){let{handDrawnSeed:u}=ge(),h=e.points,f=!1,d=i;var p=a;let m=[];for(let _ in e.cssCompiledStyles)_2(_)||m.push(e.cssCompiledStyles[_]);X.debug("UIO intersect check",e.points,p.x,d.x),p.intersect&&d.intersect&&!l&&(h=h.slice(1,e.points.length-1),h.unshift(d.intersect(h[0])),X.debug("Last point UIO",e.start,"-->",e.end,h[h.length-1],p,p.intersect(h[h.length-1])),h.push(p.intersect(h[h.length-1])));let g=btoa(JSON.stringify(h));e.toCluster&&(X.info("to cluster abc88",r.get(e.toCluster)),h=Hte(e.points,r.get(e.toCluster).node),f=!0),e.fromCluster&&(X.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(h,null,2)),h=Hte(h.reverse(),r.get(e.fromCluster).node).reverse(),f=!0);let y=h.filter(_=>!Number.isNaN(_.y));y=BRe(y);let v=No;switch(v=Cu,e.curve){case"linear":v=Cu;break;case"basis":v=No;break;case"cardinal":v=Yv;break;case"bumpX":v=Vv;break;case"bumpY":v=Uv;break;case"catmullRom":v=Kv;break;case"monotoneX":v=Qv;break;case"monotoneY":v=Zv;break;case"natural":v=J0;break;case"step":v=em;break;case"stepAfter":v=e2;break;case"stepBefore":v=Jv;break;default:v=No}let{x,y:b}=hw(e),T=Cl().x(x).y(b).curve(v),S;switch(e.thickness){case"normal":S="edge-thickness-normal";break;case"thick":S="edge-thickness-thick";break;case"invisible":S="edge-thickness-invisible";break;default:S="edge-thickness-normal"}switch(e.pattern){case"solid":S+=" edge-pattern-solid";break;case"dotted":S+=" edge-pattern-dotted";break;case"dashed":S+=" edge-pattern-dashed";break;default:S+=" edge-pattern-solid"}let w,k=e.curve==="rounded"?$Re(zRe(y,e),5):T(y),A=Array.isArray(e.style)?e.style:[e.style],C=A.find(_=>_?.startsWith("stroke:")),R=!1;if(e.look==="handDrawn"){let _=Ze.svg(t);Object.assign([],y);let O=_.path(k,{roughness:.3,seed:u});S+=" transition",w=qe(O).select("path").attr("id",e.id).attr("class"," "+S+(e.classes?" "+e.classes:"")).attr("style",A?A.reduce((P,B)=>P+";"+B,""):"");let M=w.attr("d");w.attr("d",M),t.node().appendChild(w.node())}else{let _=m.join(";"),O=A?A.reduce((U,j)=>U+j+";",""):"",M="";e.animate&&(M=" edge-animation-fast"),e.animation&&(M=" edge-animation-"+e.animation);let P=(_?_+";"+O+";":O)+";"+(A?A.reduce((U,j)=>U+";"+j,""):"");w=t.append("path").attr("d",k).attr("id",e.id).attr("class"," "+S+(e.classes?" "+e.classes:"")+(M??"")).attr("style",P),C=P.match(/stroke:([^;]+)/)?.[1],R=e.animate===!0||!!e.animation||_.includes("animation");let B=w.node(),F=typeof B.getTotalLength=="function"?B.getTotalLength():0,G=Y9[e.arrowTypeStart]||0,$=Y9[e.arrowTypeEnd]||0;if(e.look==="neo"&&!R){let j=`stroke-dasharray: ${e.pattern==="dotted"||e.pattern==="dashed"?FRe(F,G,$):`0 ${G} ${F-G-$} ${$}`}; stroke-dashoffset: 0;`;w.attr("style",j+w.attr("style"))}}w.attr("data-edge",!0),w.attr("data-et","edge"),w.attr("data-id",e.id),w.attr("data-points",g),e.showPoints&&y.forEach(_=>{t.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",_.x).attr("cy",_.y)});let I="";(ge().flowchart.arrowMarkerAbsolute||ge().state.arrowMarkerAbsolute)&&(I=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,I=I.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),X.info("arrowTypeStart",e.arrowTypeStart),X.info("arrowTypeEnd",e.arrowTypeEnd),Vte(w,e,I,s,n,C);let L=Math.floor(h.length/2),E=h[L];qt.isLabelCoordinateInPath(E,w.attr("d"))||(f=!0);let D={};return f&&(D.updatedPath=h),D.originalPath=e.points,D},"insertEdge");o($Re,"generateRoundedPath");o(Wte,"calculateDeltaAndAngle");o(zRe,"applyMarkerOffsetsToPoints")});var GRe,VRe,URe,HRe,qRe,WRe,YRe,XRe,jRe,KRe,QRe,ZRe,JRe,eNe,tNe,rNe,nNe,vw,K9=N(()=>{"use strict";pt();GRe=o((t,e,r,n)=>{e.forEach(i=>{nNe[i](t,r,n)})},"insertMarkers"),VRe=o((t,e,r)=>{X.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),URe=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),HRe=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),qRe=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),WRe=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),YRe=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),XRe=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),jRe=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),KRe=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),QRe=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),ZRe=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("d","M9,0 L9,18");let i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),JRe=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),eNe=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");let i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),tNe=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0 L20,10 M20,10 - L0,20`)},"requirement_arrow"),J_e=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");n.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),n.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),n.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),e9e={extension:$_e,composition:z_e,aggregation:G_e,dependency:V_e,lollipop:U_e,point:H_e,circle:W_e,cross:q_e,barb:Y_e,only_one:X_e,zero_or_one:j_e,one_or_more:K_e,zero_or_more:Q_e,requirement_arrow:Z_e,requirement_contains:J_e},Zw=F_e});async function vm(t,e,r){let n,i;e.shape==="rect"&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");let a=e.shape?QD[e.shape]:void 0;if(!a)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let s;r.config.securityLevel==="sandbox"?s="_top":e.linkTarget&&(s=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",s??null),i=await a(n,e,r)}else i=await a(t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),Jw.set(e.id,n),e.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}var Jw,rJ,nJ,k2,eT=N(()=>{"use strict";vt();ZD();Jw=new Map;o(vm,"insertNode");rJ=o((t,e)=>{Jw.set(e.id,t)},"setNodeElem"),nJ=o(()=>{Jw.clear()},"clear"),k2=o(t=>{let e=Jw.get(t.id);Y.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});var iJ,aJ=N(()=>{"use strict";ji();gr();vt();Hw();eL();tL();eT();Ft();ir();iJ={common:Ze,getConfig:cr,insertCluster:ym,insertEdge:Qw,insertEdgeLabel:jw,insertMarkers:Zw,insertNode:vm,interpolateToCurve:W9,labelHelper:pt,log:Y,positionEdgeLabel:Kw}});function r9e(t){return typeof t=="symbol"||ri(t)&&da(t)==t9e}var t9e,no,Pd=N(()=>{"use strict";ku();No();t9e="[object Symbol]";o(r9e,"isSymbol");no=r9e});function n9e(t,e){for(var r=-1,n=t==null?0:t.length,i=Array(n);++r{"use strict";o(n9e,"arrayMap");Ns=n9e});function lJ(t){if(typeof t=="string")return t;if(Pt(t))return Ns(t,lJ)+"";if(no(t))return oJ?oJ.call(t):"";var e=t+"";return e=="0"&&1/t==-i9e?"-0":e}var i9e,sJ,oJ,cJ,uJ=N(()=>{"use strict";Ed();Bd();Un();Pd();i9e=1/0,sJ=ea?ea.prototype:void 0,oJ=sJ?sJ.toString:void 0;o(lJ,"baseToString");cJ=lJ});function s9e(t){for(var e=t.length;e--&&a9e.test(t.charAt(e)););return e}var a9e,hJ,fJ=N(()=>{"use strict";a9e=/\s/;o(s9e,"trimmedEndIndex");hJ=s9e});function l9e(t){return t&&t.slice(0,hJ(t)+1).replace(o9e,"")}var o9e,dJ,pJ=N(()=>{"use strict";fJ();o9e=/^\s+/;o(l9e,"baseTrim");dJ=l9e});function d9e(t){if(typeof t=="number")return t;if(no(t))return mJ;if(bn(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=bn(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=dJ(t);var r=u9e.test(t);return r||h9e.test(t)?f9e(t.slice(2),r?2:8):c9e.test(t)?mJ:+t}var mJ,c9e,u9e,h9e,f9e,gJ,yJ=N(()=>{"use strict";pJ();Js();Pd();mJ=NaN,c9e=/^[-+]0x[0-9a-f]+$/i,u9e=/^0b[01]+$/i,h9e=/^0o[0-7]+$/i,f9e=parseInt;o(d9e,"toNumber");gJ=d9e});function m9e(t){if(!t)return t===0?t:0;if(t=gJ(t),t===vJ||t===-vJ){var e=t<0?-1:1;return e*p9e}return t===t?t:0}var vJ,p9e,xm,rL=N(()=>{"use strict";yJ();vJ=1/0,p9e=17976931348623157e292;o(m9e,"toFinite");xm=m9e});function g9e(t){var e=xm(t),r=e%1;return e===e?r?e-r:e:0}var vc,bm=N(()=>{"use strict";rL();o(g9e,"toInteger");vc=g9e});var y9e,tT,xJ=N(()=>{"use strict";Lh();Lo();y9e=Ss(li,"WeakMap"),tT=y9e});function v9e(){}var ni,nL=N(()=>{"use strict";o(v9e,"noop");ni=v9e});function x9e(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(x9e,"arrayEach");rT=x9e});function b9e(t,e,r,n){for(var i=t.length,a=r+(n?1:-1);n?a--:++a{"use strict";o(b9e,"baseFindIndex");nT=b9e});function w9e(t){return t!==t}var bJ,wJ=N(()=>{"use strict";o(w9e,"baseIsNaN");bJ=w9e});function T9e(t,e,r){for(var n=r-1,i=t.length;++n{"use strict";o(T9e,"strictIndexOf");TJ=T9e});function k9e(t,e,r){return e===e?TJ(t,e,r):nT(t,bJ,r)}var wm,iT=N(()=>{"use strict";aL();wJ();kJ();o(k9e,"baseIndexOf");wm=k9e});function E9e(t,e){var r=t==null?0:t.length;return!!r&&wm(t,e,0)>-1}var aT,sL=N(()=>{"use strict";iT();o(E9e,"arrayIncludes");aT=E9e});var S9e,EJ,SJ=N(()=>{"use strict";N9();S9e=nw(Object.keys,Object),EJ=S9e});function _9e(t){if(!uc(t))return EJ(t);var e=[];for(var r in Object(t))A9e.call(t,r)&&r!="constructor"&&e.push(r);return e}var C9e,A9e,Tm,sT=N(()=>{"use strict";Z0();SJ();C9e=Object.prototype,A9e=C9e.hasOwnProperty;o(_9e,"baseKeys");Tm=_9e});function D9e(t){return ci(t)?lw(t):Tm(t)}var zr,xc=N(()=>{"use strict";B9();sT();Mo();o(D9e,"keys");zr=D9e});var L9e,R9e,N9e,ma,CJ=N(()=>{"use strict";rm();Dd();G9();Mo();Z0();xc();L9e=Object.prototype,R9e=L9e.hasOwnProperty,N9e=hw(function(t,e){if(uc(e)||ci(e)){Po(e,zr(e),t);return}for(var r in e)R9e.call(e,r)&&hc(t,r,e[r])}),ma=N9e});function O9e(t,e){if(Pt(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||no(t)?!0:I9e.test(t)||!M9e.test(t)||e!=null&&t in Object(e)}var M9e,I9e,km,oT=N(()=>{"use strict";Un();Pd();M9e=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,I9e=/^\w*$/;o(O9e,"isKey");km=O9e});function B9e(t){var e=H0(t,function(n){return r.size===P9e&&r.clear(),n}),r=e.cache;return e}var P9e,AJ,_J=N(()=>{"use strict";S9();P9e=500;o(B9e,"memoizeCapped");AJ=B9e});var F9e,$9e,z9e,DJ,LJ=N(()=>{"use strict";_J();F9e=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$9e=/\\(\\)?/g,z9e=AJ(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(F9e,function(r,n,i,a){e.push(i?a.replace($9e,"$1"):n||r)}),e}),DJ=z9e});function G9e(t){return t==null?"":cJ(t)}var lT,oL=N(()=>{"use strict";uJ();o(G9e,"toString");lT=G9e});function V9e(t,e){return Pt(t)?t:km(t,e)?[t]:DJ(lT(t))}var Yh,E2=N(()=>{"use strict";Un();oT();LJ();oL();o(V9e,"castPath");Yh=V9e});function H9e(t){if(typeof t=="string"||no(t))return t;var e=t+"";return e=="0"&&1/t==-U9e?"-0":e}var U9e,bc,Em=N(()=>{"use strict";Pd();U9e=1/0;o(H9e,"toKey");bc=H9e});function W9e(t,e){e=Yh(e,t);for(var r=0,n=e.length;t!=null&&r{"use strict";E2();Em();o(W9e,"baseGet");Xh=W9e});function q9e(t,e,r){var n=t==null?void 0:Xh(t,e);return n===void 0?r:n}var RJ,NJ=N(()=>{"use strict";S2();o(q9e,"get");RJ=q9e});function Y9e(t,e){for(var r=-1,n=e.length,i=t.length;++r{"use strict";o(Y9e,"arrayPush");Sm=Y9e});function X9e(t){return Pt(t)||El(t)||!!(MJ&&t&&t[MJ])}var MJ,IJ,OJ=N(()=>{"use strict";Ed();J0();Un();MJ=ea?ea.isConcatSpreadable:void 0;o(X9e,"isFlattenable");IJ=X9e});function PJ(t,e,r,n,i){var a=-1,s=t.length;for(r||(r=IJ),i||(i=[]);++a0&&r(l)?e>1?PJ(l,e-1,r,n,i):Sm(i,l):n||(i[i.length]=l)}return i}var wc,Cm=N(()=>{"use strict";cT();OJ();o(PJ,"baseFlatten");wc=PJ});function j9e(t){var e=t==null?0:t.length;return e?wc(t,1):[]}var qr,uT=N(()=>{"use strict";Cm();o(j9e,"flatten");qr=j9e});function K9e(t){return uw(cw(t,void 0,qr),t+"")}var BJ,FJ=N(()=>{"use strict";uT();F9();z9();o(K9e,"flatRest");BJ=K9e});function Q9e(t,e,r){var n=-1,i=t.length;e<0&&(e=-e>i?0:i+e),r=r>i?i:r,r<0&&(r+=i),i=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(i);++n{"use strict";o(Q9e,"baseSlice");hT=Q9e});function sDe(t){return aDe.test(t)}var Z9e,J9e,eDe,tDe,rDe,nDe,iDe,aDe,$J,zJ=N(()=>{"use strict";Z9e="\\ud800-\\udfff",J9e="\\u0300-\\u036f",eDe="\\ufe20-\\ufe2f",tDe="\\u20d0-\\u20ff",rDe=J9e+eDe+tDe,nDe="\\ufe0e\\ufe0f",iDe="\\u200d",aDe=RegExp("["+iDe+Z9e+rDe+nDe+"]");o(sDe,"hasUnicode");$J=sDe});function oDe(t,e,r,n){var i=-1,a=t==null?0:t.length;for(n&&a&&(r=t[++i]);++i{"use strict";o(oDe,"arrayReduce");GJ=oDe});function lDe(t,e){return t&&Po(e,zr(e),t)}var UJ,HJ=N(()=>{"use strict";Dd();xc();o(lDe,"baseAssign");UJ=lDe});function cDe(t,e){return t&&Po(e,Cs(e),t)}var WJ,qJ=N(()=>{"use strict";Dd();Bh();o(cDe,"baseAssignIn");WJ=cDe});function uDe(t,e){for(var r=-1,n=t==null?0:t.length,i=0,a=[];++r{"use strict";o(uDe,"arrayFilter");Am=uDe});function hDe(){return[]}var dT,cL=N(()=>{"use strict";o(hDe,"stubArray");dT=hDe});var fDe,dDe,YJ,pDe,_m,pT=N(()=>{"use strict";fT();cL();fDe=Object.prototype,dDe=fDe.propertyIsEnumerable,YJ=Object.getOwnPropertySymbols,pDe=YJ?function(t){return t==null?[]:(t=Object(t),Am(YJ(t),function(e){return dDe.call(t,e)}))}:dT,_m=pDe});function mDe(t,e){return Po(t,_m(t),e)}var XJ,jJ=N(()=>{"use strict";Dd();pT();o(mDe,"copySymbols");XJ=mDe});var gDe,yDe,mT,uL=N(()=>{"use strict";cT();iw();pT();cL();gDe=Object.getOwnPropertySymbols,yDe=gDe?function(t){for(var e=[];t;)Sm(e,_m(t)),t=Q0(t);return e}:dT,mT=yDe});function vDe(t,e){return Po(t,mT(t),e)}var KJ,QJ=N(()=>{"use strict";Dd();uL();o(vDe,"copySymbolsIn");KJ=vDe});function xDe(t,e,r){var n=e(t);return Pt(t)?n:Sm(n,r(t))}var gT,hL=N(()=>{"use strict";cT();Un();o(xDe,"baseGetAllKeys");gT=xDe});function bDe(t){return gT(t,zr,_m)}var C2,fL=N(()=>{"use strict";hL();pT();xc();o(bDe,"getAllKeys");C2=bDe});function wDe(t){return gT(t,Cs,mT)}var yT,dL=N(()=>{"use strict";hL();uL();Bh();o(wDe,"getAllKeysIn");yT=wDe});var TDe,vT,ZJ=N(()=>{"use strict";Lh();Lo();TDe=Ss(li,"DataView"),vT=TDe});var kDe,xT,JJ=N(()=>{"use strict";Lh();Lo();kDe=Ss(li,"Promise"),xT=kDe});var EDe,jh,pL=N(()=>{"use strict";Lh();Lo();EDe=Ss(li,"Set"),jh=EDe});var eee,SDe,tee,ree,nee,iee,CDe,ADe,_De,DDe,LDe,Fd,io,$d=N(()=>{"use strict";ZJ();K5();JJ();pL();xJ();ku();T9();eee="[object Map]",SDe="[object Object]",tee="[object Promise]",ree="[object Set]",nee="[object WeakMap]",iee="[object DataView]",CDe=Eu(vT),ADe=Eu(Mh),_De=Eu(xT),DDe=Eu(jh),LDe=Eu(tT),Fd=da;(vT&&Fd(new vT(new ArrayBuffer(1)))!=iee||Mh&&Fd(new Mh)!=eee||xT&&Fd(xT.resolve())!=tee||jh&&Fd(new jh)!=ree||tT&&Fd(new tT)!=nee)&&(Fd=o(function(t){var e=da(t),r=e==SDe?t.constructor:void 0,n=r?Eu(r):"";if(n)switch(n){case CDe:return iee;case ADe:return eee;case _De:return tee;case DDe:return ree;case LDe:return nee}return e},"getTag"));io=Fd});function MDe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&NDe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var RDe,NDe,aee,see=N(()=>{"use strict";RDe=Object.prototype,NDe=RDe.hasOwnProperty;o(MDe,"initCloneArray");aee=MDe});function IDe(t,e){var r=e?K0(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var oee,lee=N(()=>{"use strict";ew();o(IDe,"cloneDataView");oee=IDe});function PDe(t){var e=new t.constructor(t.source,ODe.exec(t));return e.lastIndex=t.lastIndex,e}var ODe,cee,uee=N(()=>{"use strict";ODe=/\w*$/;o(PDe,"cloneRegExp");cee=PDe});function BDe(t){return fee?Object(fee.call(t)):{}}var hee,fee,dee,pee=N(()=>{"use strict";Ed();hee=ea?ea.prototype:void 0,fee=hee?hee.valueOf:void 0;o(BDe,"cloneSymbol");dee=BDe});function nLe(t,e,r){var n=t.constructor;switch(e){case qDe:return K0(t);case FDe:case $De:return new n(+t);case YDe:return oee(t,r);case XDe:case jDe:case KDe:case QDe:case ZDe:case JDe:case eLe:case tLe:case rLe:return tw(t,r);case zDe:return new n;case GDe:case HDe:return new n(t);case VDe:return cee(t);case UDe:return new n;case WDe:return dee(t)}}var FDe,$De,zDe,GDe,VDe,UDe,HDe,WDe,qDe,YDe,XDe,jDe,KDe,QDe,ZDe,JDe,eLe,tLe,rLe,mee,gee=N(()=>{"use strict";ew();lee();uee();pee();L9();FDe="[object Boolean]",$De="[object Date]",zDe="[object Map]",GDe="[object Number]",VDe="[object RegExp]",UDe="[object Set]",HDe="[object String]",WDe="[object Symbol]",qDe="[object ArrayBuffer]",YDe="[object DataView]",XDe="[object Float32Array]",jDe="[object Float64Array]",KDe="[object Int8Array]",QDe="[object Int16Array]",ZDe="[object Int32Array]",JDe="[object Uint8Array]",eLe="[object Uint8ClampedArray]",tLe="[object Uint16Array]",rLe="[object Uint32Array]";o(nLe,"initCloneByTag");mee=nLe});function aLe(t){return ri(t)&&io(t)==iLe}var iLe,yee,vee=N(()=>{"use strict";$d();No();iLe="[object Map]";o(aLe,"baseIsMap");yee=aLe});var xee,sLe,bee,wee=N(()=>{"use strict";vee();_d();t2();xee=Oo&&Oo.isMap,sLe=xee?Io(xee):yee,bee=sLe});function lLe(t){return ri(t)&&io(t)==oLe}var oLe,Tee,kee=N(()=>{"use strict";$d();No();oLe="[object Set]";o(lLe,"baseIsSet");Tee=lLe});var Eee,cLe,See,Cee=N(()=>{"use strict";kee();_d();t2();Eee=Oo&&Oo.isSet,cLe=Eee?Io(Eee):Tee,See=cLe});function bT(t,e,r,n,i,a){var s,l=e&uLe,u=e&hLe,h=e&fLe;if(r&&(s=i?r(t,n,i,a):r(t)),s!==void 0)return s;if(!bn(t))return t;var f=Pt(t);if(f){if(s=aee(t),!l)return rw(t,s)}else{var d=io(t),p=d==_ee||d==yLe;if(Sl(t))return J5(t,l);if(d==Dee||d==Aee||p&&!i){if(s=u||p?{}:aw(t),!l)return u?KJ(t,WJ(s,t)):XJ(t,UJ(s,t))}else{if(!_n[d])return i?t:{};s=mee(t,d,l)}}a||(a=new lc);var m=a.get(t);if(m)return m;a.set(t,s),See(t)?t.forEach(function(v){s.add(bT(v,e,r,v,t,a))}):bee(t)&&t.forEach(function(v,x){s.set(x,bT(v,e,r,x,t,a))});var g=h?u?yT:C2:u?Cs:zr,y=f?void 0:g(t);return rT(y||t,function(v,x){y&&(x=v,v=t[x]),hc(s,x,bT(v,e,r,x,t,a))}),s}var uLe,hLe,fLe,Aee,dLe,pLe,mLe,gLe,_ee,yLe,vLe,xLe,Dee,bLe,wLe,TLe,kLe,ELe,SLe,CLe,ALe,_Le,DLe,LLe,RLe,NLe,MLe,ILe,OLe,_n,wT,mL=N(()=>{"use strict";Zv();iL();rm();HJ();qJ();_9();R9();jJ();QJ();fL();dL();$d();see();gee();M9();Un();tm();wee();Js();Cee();xc();Bh();uLe=1,hLe=2,fLe=4,Aee="[object Arguments]",dLe="[object Array]",pLe="[object Boolean]",mLe="[object Date]",gLe="[object Error]",_ee="[object Function]",yLe="[object GeneratorFunction]",vLe="[object Map]",xLe="[object Number]",Dee="[object Object]",bLe="[object RegExp]",wLe="[object Set]",TLe="[object String]",kLe="[object Symbol]",ELe="[object WeakMap]",SLe="[object ArrayBuffer]",CLe="[object DataView]",ALe="[object Float32Array]",_Le="[object Float64Array]",DLe="[object Int8Array]",LLe="[object Int16Array]",RLe="[object Int32Array]",NLe="[object Uint8Array]",MLe="[object Uint8ClampedArray]",ILe="[object Uint16Array]",OLe="[object Uint32Array]",_n={};_n[Aee]=_n[dLe]=_n[SLe]=_n[CLe]=_n[pLe]=_n[mLe]=_n[ALe]=_n[_Le]=_n[DLe]=_n[LLe]=_n[RLe]=_n[vLe]=_n[xLe]=_n[Dee]=_n[bLe]=_n[wLe]=_n[TLe]=_n[kLe]=_n[NLe]=_n[MLe]=_n[ILe]=_n[OLe]=!0;_n[gLe]=_n[_ee]=_n[ELe]=!1;o(bT,"baseClone");wT=bT});function BLe(t){return wT(t,PLe)}var PLe,an,gL=N(()=>{"use strict";mL();PLe=4;o(BLe,"clone");an=BLe});function zLe(t){return wT(t,FLe|$Le)}var FLe,$Le,yL,Lee=N(()=>{"use strict";mL();FLe=1,$Le=4;o(zLe,"cloneDeep");yL=zLe});function GLe(t){for(var e=-1,r=t==null?0:t.length,n=0,i=[];++e{"use strict";o(GLe,"compact");Tc=GLe});function ULe(t){return this.__data__.set(t,VLe),this}var VLe,Nee,Mee=N(()=>{"use strict";VLe="__lodash_hash_undefined__";o(ULe,"setCacheAdd");Nee=ULe});function HLe(t){return this.__data__.has(t)}var Iee,Oee=N(()=>{"use strict";o(HLe,"setCacheHas");Iee=HLe});function TT(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new Cd;++e{"use strict";Q5();Mee();Oee();o(TT,"SetCache");TT.prototype.add=TT.prototype.push=Nee;TT.prototype.has=Iee;Dm=TT});function WLe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(WLe,"arraySome");ET=WLe});function qLe(t,e){return t.has(e)}var Lm,ST=N(()=>{"use strict";o(qLe,"cacheHas");Lm=qLe});function jLe(t,e,r,n,i,a){var s=r&YLe,l=t.length,u=e.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(t),f=a.get(e);if(h&&f)return h==e&&f==t;var d=-1,p=!0,m=r&XLe?new Dm:void 0;for(a.set(t,e),a.set(e,t);++d{"use strict";kT();vL();ST();YLe=1,XLe=2;o(jLe,"equalArrays");CT=jLe});function KLe(t){var e=-1,r=Array(t.size);return t.forEach(function(n,i){r[++e]=[i,n]}),r}var Pee,Bee=N(()=>{"use strict";o(KLe,"mapToArray");Pee=KLe});function QLe(t){var e=-1,r=Array(t.size);return t.forEach(function(n){r[++e]=n}),r}var Rm,AT=N(()=>{"use strict";o(QLe,"setToArray");Rm=QLe});function hRe(t,e,r,n,i,a,s){switch(r){case uRe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case cRe:return!(t.byteLength!=e.byteLength||!a(new j0(t),new j0(e)));case eRe:case tRe:case iRe:return Ro(+t,+e);case rRe:return t.name==e.name&&t.message==e.message;case aRe:case oRe:return t==e+"";case nRe:var l=Pee;case sRe:var u=n&ZLe;if(l||(l=Rm),t.size!=e.size&&!u)return!1;var h=s.get(t);if(h)return h==e;n|=JLe,s.set(t,e);var f=CT(l(t),l(e),n,i,a,s);return s.delete(t),f;case lRe:if(bL)return bL.call(t)==bL.call(e)}return!1}var ZLe,JLe,eRe,tRe,rRe,nRe,iRe,aRe,sRe,oRe,lRe,cRe,uRe,Fee,bL,$ee,zee=N(()=>{"use strict";Ed();D9();Sd();xL();Bee();AT();ZLe=1,JLe=2,eRe="[object Boolean]",tRe="[object Date]",rRe="[object Error]",nRe="[object Map]",iRe="[object Number]",aRe="[object RegExp]",sRe="[object Set]",oRe="[object String]",lRe="[object Symbol]",cRe="[object ArrayBuffer]",uRe="[object DataView]",Fee=ea?ea.prototype:void 0,bL=Fee?Fee.valueOf:void 0;o(hRe,"equalByTag");$ee=hRe});function mRe(t,e,r,n,i,a){var s=r&fRe,l=C2(t),u=l.length,h=C2(e),f=h.length;if(u!=f&&!s)return!1;for(var d=u;d--;){var p=l[d];if(!(s?p in e:pRe.call(e,p)))return!1}var m=a.get(t),g=a.get(e);if(m&&g)return m==e&&g==t;var y=!0;a.set(t,e),a.set(e,t);for(var v=s;++d{"use strict";fL();fRe=1,dRe=Object.prototype,pRe=dRe.hasOwnProperty;o(mRe,"equalObjects");Gee=mRe});function vRe(t,e,r,n,i,a){var s=Pt(t),l=Pt(e),u=s?Hee:io(t),h=l?Hee:io(e);u=u==Uee?_T:u,h=h==Uee?_T:h;var f=u==_T,d=h==_T,p=u==h;if(p&&Sl(t)){if(!Sl(e))return!1;s=!0,f=!1}if(p&&!f)return a||(a=new lc),s||Oh(t)?CT(t,e,r,n,i,a):$ee(t,e,u,r,n,i,a);if(!(r&gRe)){var m=f&&Wee.call(t,"__wrapped__"),g=d&&Wee.call(e,"__wrapped__");if(m||g){var y=m?t.value():t,v=g?e.value():e;return a||(a=new lc),i(y,v,r,n,a)}}return p?(a||(a=new lc),Gee(t,e,r,n,i,a)):!1}var gRe,Uee,Hee,_T,yRe,Wee,qee,Yee=N(()=>{"use strict";Zv();xL();zee();Vee();$d();Un();tm();r2();gRe=1,Uee="[object Arguments]",Hee="[object Array]",_T="[object Object]",yRe=Object.prototype,Wee=yRe.hasOwnProperty;o(vRe,"baseIsEqualDeep");qee=vRe});function Xee(t,e,r,n,i){return t===e?!0:t==null||e==null||!ri(t)&&!ri(e)?t!==t&&e!==e:qee(t,e,r,n,Xee,i)}var DT,wL=N(()=>{"use strict";Yee();No();o(Xee,"baseIsEqual");DT=Xee});function wRe(t,e,r,n){var i=r.length,a=i,s=!n;if(t==null)return!a;for(t=Object(t);i--;){var l=r[i];if(s&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++i{"use strict";Zv();wL();xRe=1,bRe=2;o(wRe,"baseIsMatch");jee=wRe});function TRe(t){return t===t&&!bn(t)}var LT,TL=N(()=>{"use strict";Js();o(TRe,"isStrictComparable");LT=TRe});function kRe(t){for(var e=zr(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,LT(i)]}return e}var Qee,Zee=N(()=>{"use strict";TL();xc();o(kRe,"getMatchData");Qee=kRe});function ERe(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var RT,kL=N(()=>{"use strict";o(ERe,"matchesStrictComparable");RT=ERe});function SRe(t){var e=Qee(t);return e.length==1&&e[0][2]?RT(e[0][0],e[0][1]):function(r){return r===t||jee(r,t,e)}}var Jee,ete=N(()=>{"use strict";Kee();Zee();kL();o(SRe,"baseMatches");Jee=SRe});function CRe(t,e){return t!=null&&e in Object(t)}var tte,rte=N(()=>{"use strict";o(CRe,"baseHasIn");tte=CRe});function ARe(t,e,r){e=Yh(e,t);for(var n=-1,i=e.length,a=!1;++n{"use strict";E2();J0();Un();i2();sw();Em();o(ARe,"hasPath");NT=ARe});function _Re(t,e){return t!=null&&NT(t,e,tte)}var MT,SL=N(()=>{"use strict";rte();EL();o(_Re,"hasIn");MT=_Re});function RRe(t,e){return km(t)&<(e)?RT(bc(t),e):function(r){var n=RJ(r,t);return n===void 0&&n===e?MT(r,t):DT(e,n,DRe|LRe)}}var DRe,LRe,nte,ite=N(()=>{"use strict";wL();NJ();SL();oT();TL();kL();Em();DRe=1,LRe=2;o(RRe,"baseMatchesProperty");nte=RRe});function NRe(t){return function(e){return e?.[t]}}var IT,CL=N(()=>{"use strict";o(NRe,"baseProperty");IT=NRe});function MRe(t){return function(e){return Xh(e,t)}}var ate,ste=N(()=>{"use strict";S2();o(MRe,"basePropertyDeep");ate=MRe});function IRe(t){return km(t)?IT(bc(t)):ate(t)}var ote,lte=N(()=>{"use strict";CL();ste();oT();Em();o(IRe,"property");ote=IRe});function ORe(t){return typeof t=="function"?t:t==null?ta:typeof t=="object"?Pt(t)?nte(t[0],t[1]):Jee(t):ote(t)}var pn,rs=N(()=>{"use strict";ete();ite();Cu();Un();lte();o(ORe,"baseIteratee");pn=ORe});function PRe(t,e,r,n){for(var i=-1,a=t==null?0:t.length;++i{"use strict";o(PRe,"arrayAggregator");cte=PRe});function BRe(t,e){return t&&X0(t,e,zr)}var Nm,OT=N(()=>{"use strict";Z5();xc();o(BRe,"baseForOwn");Nm=BRe});function FRe(t,e){return function(r,n){if(r==null)return r;if(!ci(r))return t(r,n);for(var i=r.length,a=e?i:-1,s=Object(r);(e?a--:++a{"use strict";Mo();o(FRe,"createBaseEach");hte=FRe});var $Re,Ms,Kh=N(()=>{"use strict";OT();fte();$Re=hte(Nm),Ms=$Re});function zRe(t,e,r,n){return Ms(t,function(i,a,s){e(n,i,r(i),s)}),n}var dte,pte=N(()=>{"use strict";Kh();o(zRe,"baseAggregator");dte=zRe});function GRe(t,e){return function(r,n){var i=Pt(r)?cte:dte,a=e?e():{};return i(r,t,pn(n,2),a)}}var mte,gte=N(()=>{"use strict";ute();pte();rs();Un();o(GRe,"createAggregator");mte=GRe});var VRe,PT,yte=N(()=>{"use strict";Lo();VRe=o(function(){return li.Date.now()},"now"),PT=VRe});var vte,URe,HRe,Qh,xte=N(()=>{"use strict";nm();Sd();Ld();Bh();vte=Object.prototype,URe=vte.hasOwnProperty,HRe=fc(function(t,e){t=Object(t);var r=-1,n=e.length,i=n>2?e[2]:void 0;for(i&&eo(e[0],e[1],i)&&(n=1);++r{"use strict";o(WRe,"arrayIncludesWith");BT=WRe});function YRe(t,e,r,n){var i=-1,a=aT,s=!0,l=t.length,u=[],h=e.length;if(!l)return u;r&&(e=Ns(e,Io(r))),n?(a=BT,s=!1):e.length>=qRe&&(a=Lm,s=!1,e=new Dm(e));e:for(;++i{"use strict";kT();sL();AL();Bd();_d();ST();qRe=200;o(YRe,"baseDifference");bte=YRe});var XRe,Zh,Tte=N(()=>{"use strict";wte();Cm();nm();ow();XRe=fc(function(t,e){return Ad(t)?bte(t,wc(e,1,Ad,!0)):[]}),Zh=XRe});function jRe(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}var ga,kte=N(()=>{"use strict";o(jRe,"last");ga=jRe});function KRe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:vc(e),hT(t,e<0?0:e,n)):[]}var gi,Ete=N(()=>{"use strict";lL();bm();o(KRe,"drop");gi=KRe});function QRe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:vc(e),e=n-e,hT(t,0,e<0?0:e)):[]}var Nu,Ste=N(()=>{"use strict";lL();bm();o(QRe,"dropRight");Nu=QRe});function ZRe(t){return typeof t=="function"?t:ta}var Mm,FT=N(()=>{"use strict";Cu();o(ZRe,"castFunction");Mm=ZRe});function JRe(t,e){var r=Pt(t)?rT:Ms;return r(t,Mm(e))}var Ae,$T=N(()=>{"use strict";iL();Kh();FT();Un();o(JRe,"forEach");Ae=JRe});var Cte=N(()=>{"use strict";$T()});function eNe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(eNe,"arrayEvery");Ate=eNe});function tNe(t,e){var r=!0;return Ms(t,function(n,i,a){return r=!!e(n,i,a),r}),r}var Dte,Lte=N(()=>{"use strict";Kh();o(tNe,"baseEvery");Dte=tNe});function rNe(t,e,r){var n=Pt(t)?Ate:Dte;return r&&eo(t,e,r)&&(e=void 0),n(t,pn(e,3))}var Ma,Rte=N(()=>{"use strict";_te();Lte();rs();Un();Ld();o(rNe,"every");Ma=rNe});function nNe(t,e){var r=[];return Ms(t,function(n,i,a){e(n,i,a)&&r.push(n)}),r}var zT,_L=N(()=>{"use strict";Kh();o(nNe,"baseFilter");zT=nNe});function iNe(t,e){var r=Pt(t)?Am:zT;return r(t,pn(e,3))}var Yr,DL=N(()=>{"use strict";fT();_L();rs();Un();o(iNe,"filter");Yr=iNe});function aNe(t){return function(e,r,n){var i=Object(e);if(!ci(e)){var a=pn(r,3);e=zr(e),r=o(function(l){return a(i[l],l,i)},"predicate")}var s=t(e,r,n);return s>-1?i[a?e[s]:s]:void 0}}var Nte,Mte=N(()=>{"use strict";rs();Mo();xc();o(aNe,"createFind");Nte=aNe});function oNe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:vc(r);return i<0&&(i=sNe(n+i,0)),nT(t,pn(e,3),i)}var sNe,Ite,Ote=N(()=>{"use strict";aL();rs();bm();sNe=Math.max;o(oNe,"findIndex");Ite=oNe});var lNe,ns,Pte=N(()=>{"use strict";Mte();Ote();lNe=Nte(Ite),ns=lNe});function cNe(t){return t&&t.length?t[0]:void 0}var ia,Bte=N(()=>{"use strict";o(cNe,"head");ia=cNe});var Fte=N(()=>{"use strict";Bte()});function uNe(t,e){var r=-1,n=ci(t)?Array(t.length):[];return Ms(t,function(i,a,s){n[++r]=e(i,a,s)}),n}var GT,LL=N(()=>{"use strict";Kh();Mo();o(uNe,"baseMap");GT=uNe});function hNe(t,e){var r=Pt(t)?Ns:GT;return r(t,pn(e,3))}var Je,Im=N(()=>{"use strict";Bd();rs();LL();Un();o(hNe,"map");Je=hNe});function fNe(t,e){return wc(Je(t,e),1)}var ya,RL=N(()=>{"use strict";Cm();Im();o(fNe,"flatMap");ya=fNe});function dNe(t,e){return t==null?t:X0(t,Mm(e),Cs)}var NL,$te=N(()=>{"use strict";Z5();FT();Bh();o(dNe,"forIn");NL=dNe});function pNe(t,e){return t&&Nm(t,Mm(e))}var ML,zte=N(()=>{"use strict";OT();FT();o(pNe,"forOwn");ML=pNe});var mNe,gNe,yNe,IL,Gte=N(()=>{"use strict";Y0();gte();mNe=Object.prototype,gNe=mNe.hasOwnProperty,yNe=mte(function(t,e,r){gNe.call(t,r)?t[r].push(e):cc(t,r,[e])}),IL=yNe});function vNe(t,e){return t>e}var Vte,Ute=N(()=>{"use strict";o(vNe,"baseGt");Vte=vNe});function wNe(t,e){return t!=null&&bNe.call(t,e)}var xNe,bNe,Hte,Wte=N(()=>{"use strict";xNe=Object.prototype,bNe=xNe.hasOwnProperty;o(wNe,"baseHas");Hte=wNe});function TNe(t,e){return t!=null&&NT(t,e,Hte)}var Bt,qte=N(()=>{"use strict";Wte();EL();o(TNe,"has");Bt=TNe});function ENe(t){return typeof t=="string"||!Pt(t)&&ri(t)&&da(t)==kNe}var kNe,yi,VT=N(()=>{"use strict";ku();Un();No();kNe="[object String]";o(ENe,"isString");yi=ENe});function SNe(t,e){return Ns(e,function(r){return t[r]})}var Yte,Xte=N(()=>{"use strict";Bd();o(SNe,"baseValues");Yte=SNe});function CNe(t){return t==null?[]:Yte(t,zr(t))}var br,OL=N(()=>{"use strict";Xte();xc();o(CNe,"values");br=CNe});function _Ne(t,e,r,n){t=ci(t)?t:br(t),r=r&&!n?vc(r):0;var i=t.length;return r<0&&(r=ANe(i+r,0)),yi(t)?r<=i&&t.indexOf(e,r)>-1:!!i&&wm(t,e,r)>-1}var ANe,qn,jte=N(()=>{"use strict";iT();Mo();VT();bm();OL();ANe=Math.max;o(_Ne,"includes");qn=_Ne});function LNe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:vc(r);return i<0&&(i=DNe(n+i,0)),wm(t,e,i)}var DNe,UT,Kte=N(()=>{"use strict";iT();bm();DNe=Math.max;o(LNe,"indexOf");UT=LNe});function ONe(t){if(t==null)return!0;if(ci(t)&&(Pt(t)||typeof t=="string"||typeof t.splice=="function"||Sl(t)||Oh(t)||El(t)))return!t.length;var e=io(t);if(e==RNe||e==NNe)return!t.size;if(uc(t))return!Tm(t).length;for(var r in t)if(INe.call(t,r))return!1;return!0}var RNe,NNe,MNe,INe,ur,HT=N(()=>{"use strict";sT();$d();J0();Un();Mo();tm();Z0();r2();RNe="[object Map]",NNe="[object Set]",MNe=Object.prototype,INe=MNe.hasOwnProperty;o(ONe,"isEmpty");ur=ONe});function BNe(t){return ri(t)&&da(t)==PNe}var PNe,Qte,Zte=N(()=>{"use strict";ku();No();PNe="[object RegExp]";o(BNe,"baseIsRegExp");Qte=BNe});var Jte,FNe,zo,ere=N(()=>{"use strict";Zte();_d();t2();Jte=Oo&&Oo.isRegExp,FNe=Jte?Io(Jte):Qte,zo=FNe});function $Ne(t){return t===void 0}var pr,tre=N(()=>{"use strict";o($Ne,"isUndefined");pr=$Ne});function zNe(t,e){return t{"use strict";o(zNe,"baseLt");WT=zNe});function GNe(t,e){var r={};return e=pn(e,3),Nm(t,function(n,i,a){cc(r,i,e(n,i,a))}),r}var zd,rre=N(()=>{"use strict";Y0();OT();rs();o(GNe,"mapValues");zd=GNe});function VNe(t,e,r){for(var n=-1,i=t.length;++n{"use strict";Pd();o(VNe,"baseExtremum");Om=VNe});function UNe(t){return t&&t.length?Om(t,ta,Vte):void 0}var Is,nre=N(()=>{"use strict";qT();Ute();Cu();o(UNe,"max");Is=UNe});function HNe(t){return t&&t.length?Om(t,ta,WT):void 0}var Dl,BL=N(()=>{"use strict";qT();PL();Cu();o(HNe,"min");Dl=HNe});function WNe(t,e){return t&&t.length?Om(t,pn(e,2),WT):void 0}var Gd,ire=N(()=>{"use strict";qT();rs();PL();o(WNe,"minBy");Gd=WNe});function YNe(t){if(typeof t!="function")throw new TypeError(qNe);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}var qNe,are,sre=N(()=>{"use strict";qNe="Expected a function";o(YNe,"negate");are=YNe});function XNe(t,e,r,n){if(!bn(t))return t;e=Yh(e,t);for(var i=-1,a=e.length,s=a-1,l=t;l!=null&&++i{"use strict";rm();E2();i2();Js();Em();o(XNe,"baseSet");ore=XNe});function jNe(t,e,r){for(var n=-1,i=e.length,a={};++n{"use strict";S2();lre();E2();o(jNe,"basePickBy");YT=jNe});function KNe(t,e){if(t==null)return{};var r=Ns(yT(t),function(n){return[n]});return e=pn(e),YT(t,r,function(n,i){return e(n,i[0])})}var Os,cre=N(()=>{"use strict";Bd();rs();FL();dL();o(KNe,"pickBy");Os=KNe});function QNe(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var ure,hre=N(()=>{"use strict";o(QNe,"baseSortBy");ure=QNe});function ZNe(t,e){if(t!==e){var r=t!==void 0,n=t===null,i=t===t,a=no(t),s=e!==void 0,l=e===null,u=e===e,h=no(e);if(!l&&!h&&!a&&t>e||a&&s&&u&&!l&&!h||n&&s&&u||!r&&u||!i)return 1;if(!n&&!a&&!h&&t{"use strict";Pd();o(ZNe,"compareAscending");fre=ZNe});function JNe(t,e,r){for(var n=-1,i=t.criteria,a=e.criteria,s=i.length,l=r.length;++n=l)return u;var h=r[n];return u*(h=="desc"?-1:1)}}return t.index-e.index}var pre,mre=N(()=>{"use strict";dre();o(JNe,"compareMultiple");pre=JNe});function eMe(t,e,r){e.length?e=Ns(e,function(a){return Pt(a)?function(s){return Xh(s,a.length===1?a[0]:a)}:a}):e=[ta];var n=-1;e=Ns(e,Io(pn));var i=GT(t,function(a,s,l){var u=Ns(e,function(h){return h(a)});return{criteria:u,index:++n,value:a}});return ure(i,function(a,s){return pre(a,s,r)})}var gre,yre=N(()=>{"use strict";Bd();S2();rs();LL();hre();_d();mre();Cu();Un();o(eMe,"baseOrderBy");gre=eMe});var tMe,vre,xre=N(()=>{"use strict";CL();tMe=IT("length"),vre=tMe});function dMe(t){for(var e=bre.lastIndex=0;bre.test(t);)++e;return e}var wre,rMe,nMe,iMe,aMe,sMe,oMe,$L,zL,lMe,Tre,kre,Ere,cMe,Sre,Cre,uMe,hMe,fMe,bre,Are,_re=N(()=>{"use strict";wre="\\ud800-\\udfff",rMe="\\u0300-\\u036f",nMe="\\ufe20-\\ufe2f",iMe="\\u20d0-\\u20ff",aMe=rMe+nMe+iMe,sMe="\\ufe0e\\ufe0f",oMe="["+wre+"]",$L="["+aMe+"]",zL="\\ud83c[\\udffb-\\udfff]",lMe="(?:"+$L+"|"+zL+")",Tre="[^"+wre+"]",kre="(?:\\ud83c[\\udde6-\\uddff]){2}",Ere="[\\ud800-\\udbff][\\udc00-\\udfff]",cMe="\\u200d",Sre=lMe+"?",Cre="["+sMe+"]?",uMe="(?:"+cMe+"(?:"+[Tre,kre,Ere].join("|")+")"+Cre+Sre+")*",hMe=Cre+Sre+uMe,fMe="(?:"+[Tre+$L+"?",$L,kre,Ere,oMe].join("|")+")",bre=RegExp(zL+"(?="+zL+")|"+fMe+hMe,"g");o(dMe,"unicodeSize");Are=dMe});function pMe(t){return $J(t)?Are(t):vre(t)}var Dre,Lre=N(()=>{"use strict";xre();zJ();_re();o(pMe,"stringSize");Dre=pMe});function mMe(t,e){return YT(t,e,function(r,n){return MT(t,n)})}var Rre,Nre=N(()=>{"use strict";FL();SL();o(mMe,"basePick");Rre=mMe});var gMe,Vd,Mre=N(()=>{"use strict";Nre();FJ();gMe=BJ(function(t,e){return t==null?{}:Rre(t,e)}),Vd=gMe});function xMe(t,e,r,n){for(var i=-1,a=vMe(yMe((e-t)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=t,t+=r;return s}var yMe,vMe,Ire,Ore=N(()=>{"use strict";yMe=Math.ceil,vMe=Math.max;o(xMe,"baseRange");Ire=xMe});function bMe(t){return function(e,r,n){return n&&typeof n!="number"&&eo(e,r,n)&&(r=n=void 0),e=xm(e),r===void 0?(r=e,e=0):r=xm(r),n=n===void 0?e{"use strict";Ore();Ld();rL();o(bMe,"createRange");Pre=bMe});var wMe,Go,Fre=N(()=>{"use strict";Bre();wMe=Pre(),Go=wMe});function TMe(t,e,r,n,i){return i(t,function(a,s,l){r=n?(n=!1,a):e(r,a,s,l)}),r}var $re,zre=N(()=>{"use strict";o(TMe,"baseReduce");$re=TMe});function kMe(t,e,r){var n=Pt(t)?GJ:$re,i=arguments.length<3;return n(t,pn(e,4),r,i,Ms)}var Xr,GL=N(()=>{"use strict";VJ();Kh();rs();zre();Un();o(kMe,"reduce");Xr=kMe});function EMe(t,e){var r=Pt(t)?Am:zT;return r(t,are(pn(e,3)))}var Jh,Gre=N(()=>{"use strict";fT();_L();rs();Un();sre();o(EMe,"reject");Jh=EMe});function AMe(t){if(t==null)return 0;if(ci(t))return yi(t)?Dre(t):t.length;var e=io(t);return e==SMe||e==CMe?t.size:Tm(t).length}var SMe,CMe,VL,Vre=N(()=>{"use strict";sT();$d();Mo();VT();Lre();SMe="[object Map]",CMe="[object Set]";o(AMe,"size");VL=AMe});function _Me(t,e){var r;return Ms(t,function(n,i,a){return r=e(n,i,a),!r}),!!r}var Ure,Hre=N(()=>{"use strict";Kh();o(_Me,"baseSome");Ure=_Me});function DMe(t,e,r){var n=Pt(t)?ET:Ure;return r&&eo(t,e,r)&&(e=void 0),n(t,pn(e,3))}var A2,Wre=N(()=>{"use strict";vL();rs();Hre();Un();Ld();o(DMe,"some");A2=DMe});var LMe,kc,qre=N(()=>{"use strict";Cm();yre();nm();Ld();LMe=fc(function(t,e){if(t==null)return[];var r=e.length;return r>1&&eo(t,e[0],e[1])?e=[]:r>2&&eo(e[0],e[1],e[2])&&(e=[e[0]]),gre(t,wc(e,1),[])}),kc=LMe});var RMe,NMe,Yre,Xre=N(()=>{"use strict";pL();nL();AT();RMe=1/0,NMe=jh&&1/Rm(new jh([,-0]))[1]==RMe?function(t){return new jh(t)}:ni,Yre=NMe});function IMe(t,e,r){var n=-1,i=aT,a=t.length,s=!0,l=[],u=l;if(r)s=!1,i=BT;else if(a>=MMe){var h=e?null:Yre(t);if(h)return Rm(h);s=!1,i=Lm,u=new Dm}else u=e?[]:l;e:for(;++n{"use strict";kT();sL();AL();ST();Xre();AT();MMe=200;o(IMe,"baseUniq");Pm=IMe});var OMe,UL,jre=N(()=>{"use strict";Cm();nm();XT();ow();OMe=fc(function(t){return Pm(wc(t,1,Ad,!0))}),UL=OMe});function PMe(t){return t&&t.length?Pm(t):[]}var Bm,Kre=N(()=>{"use strict";XT();o(PMe,"uniq");Bm=PMe});function BMe(t,e){return t&&t.length?Pm(t,pn(e,2)):[]}var Qre,Zre=N(()=>{"use strict";rs();XT();o(BMe,"uniqBy");Qre=BMe});function $Me(t){var e=++FMe;return lT(t)+e}var FMe,Ud,Jre=N(()=>{"use strict";oL();FMe=0;o($Me,"uniqueId");Ud=$Me});function zMe(t,e,r){for(var n=-1,i=t.length,a=e.length,s={};++n{"use strict";o(zMe,"baseZipObject");ene=zMe});function GMe(t,e){return ene(t||[],e||[],hc)}var jT,rne=N(()=>{"use strict";rm();tne();o(GMe,"zipObject");jT=GMe});var qt=N(()=>{"use strict";CJ();gL();Lee();Ree();$9();xte();Tte();Ete();Ste();Cte();Rte();DL();Pte();Fte();RL();uT();$T();$te();zte();Gte();qte();Cu();jte();Kte();Un();HT();Yv();Js();ere();VT();tre();xc();kte();Im();rre();nre();V9();BL();ire();nL();yte();Mre();cre();Fre();GL();Gre();Vre();Wre();qre();jre();Kre();Jre();OL();rne();});function ine(t,e){t[e]?t[e]++:t[e]=1}function ane(t,e){--t[e]||delete t[e]}function _2(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}return i+nne+a+nne+(pr(n)?VMe:n)}function UMe(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}var l={v:i,w:a};return n&&(l.name=n),l}function HL(t,e){return _2(t,e.v,e.w,e.name)}var VMe,Hd,nne,sn,KT=N(()=>{"use strict";qt();VMe="\0",Hd="\0",nne="",sn=class{static{o(this,"Graph")}constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,"directed")?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,"multigraph")?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,"compound")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=As(void 0),this._defaultEdgeLabelFn=As(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[Hd]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return Si(e)||(e=As(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return zr(this._nodes)}sources(){var e=this;return Yr(this.nodes(),function(r){return ur(e._in[r])})}sinks(){var e=this;return Yr(this.nodes(),function(r){return ur(e._out[r])})}setNodes(e,r){var n=arguments,i=this;return Ae(e,function(a){n.length>1?i.setNode(a,r):i.setNode(a)}),this}setNode(e,r){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=Hd,this._children[e]={},this._children[Hd][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var r=o(n=>this.removeEdge(this._edgeObjs[n]),"removeEdge");delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],Ae(this.children(e),n=>{this.setParent(n)}),delete this._children[e]),Ae(zr(this._in[e]),r),delete this._in[e],delete this._preds[e],Ae(zr(this._out[e]),r),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(pr(r))r=Hd;else{r+="";for(var n=r;!pr(n);n=this.parent(n))if(n===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==Hd)return r}}children(e){if(pr(e)&&(e=Hd),this._isCompound){var r=this._children[e];if(r)return zr(r)}else{if(e===Hd)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return zr(r)}successors(e){var r=this._sucs[e];if(r)return zr(r)}neighbors(e){var r=this.predecessors(e);if(r)return UL(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;Ae(this._nodes,function(s,l){e(l)&&r.setNode(l,s)}),Ae(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,n.edge(s))});var i={};function a(s){var l=n.parent(s);return l===void 0||r.hasNode(l)?(i[s]=l,l):l in i?i[l]:a(l)}return o(a,"findParent"),this._isCompound&&Ae(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(e){return Si(e)||(e=As(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return br(this._edgeObjs)}setPath(e,r){var n=this,i=arguments;return Xr(e,function(a,s){return i.length>1?n.setEdge(a,s,r):n.setEdge(a,s),s}),this}setEdge(){var e,r,n,i,a=!1,s=arguments[0];typeof s=="object"&&s!==null&&"v"in s?(e=s.v,r=s.w,n=s.name,arguments.length===2&&(i=arguments[1],a=!0)):(e=s,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),e=""+e,r=""+r,pr(n)||(n=""+n);var l=_2(this._isDirected,e,r,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,l))return a&&(this._edgeLabels[l]=i),this;if(!pr(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[l]=a?i:this._defaultEdgeLabelFn(e,r,n);var u=UMe(this._isDirected,e,r,n);return e=u.v,r=u.w,Object.freeze(u),this._edgeObjs[l]=u,ine(this._preds[r],e),ine(this._sucs[e],r),this._in[r][l]=u,this._out[e][l]=u,this._edgeCount++,this}edge(e,r,n){var i=arguments.length===1?HL(this._isDirected,arguments[0]):_2(this._isDirected,e,r,n);return this._edgeLabels[i]}hasEdge(e,r,n){var i=arguments.length===1?HL(this._isDirected,arguments[0]):_2(this._isDirected,e,r,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(e,r,n){var i=arguments.length===1?HL(this._isDirected,arguments[0]):_2(this._isDirected,e,r,n),a=this._edgeObjs[i];return a&&(e=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],ane(this._preds[r],e),ane(this._sucs[e],r),delete this._in[r][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,r){var n=this._in[e];if(n){var i=br(n);return r?Yr(i,function(a){return a.v===r}):i}}outEdges(e,r){var n=this._out[e];if(n){var i=br(n);return r?Yr(i,function(a){return a.w===r}):i}}nodeEdges(e,r){var n=this.inEdges(e,r);if(n)return n.concat(this.outEdges(e,r))}};sn.prototype._nodeCount=0;sn.prototype._edgeCount=0;o(ine,"incrementOrInitEntry");o(ane,"decrementOrRemoveEntry");o(_2,"edgeArgsToId");o(UMe,"edgeArgsToObj");o(HL,"edgeObjToId")});var Vo=N(()=>{"use strict";KT()});function sne(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function HMe(t,e){if(t!=="_next"&&t!=="_prev")return e}var ZT,one=N(()=>{"use strict";ZT=class{static{o(this,"List")}constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return sne(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&sne(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,n=r._prev;n!==r;)e.push(JSON.stringify(n,HMe)),n=n._prev;return"["+e.join(", ")+"]"}};o(sne,"unlink");o(HMe,"filterOutLinks")});function lne(t,e){if(t.nodeCount()<=1)return[];var r=YMe(t,e||WMe),n=qMe(r.graph,r.buckets,r.zeroIdx);return qr(Je(n,function(i){return t.outEdges(i.v,i.w)}))}function qMe(t,e,r){for(var n=[],i=e[e.length-1],a=e[0],s;t.nodeCount();){for(;s=a.dequeue();)WL(t,e,r,s);for(;s=i.dequeue();)WL(t,e,r,s);if(t.nodeCount()){for(var l=e.length-2;l>0;--l)if(s=e[l].dequeue(),s){n=n.concat(WL(t,e,r,s,!0));break}}}return n}function WL(t,e,r,n,i){var a=i?[]:void 0;return Ae(t.inEdges(n.v),function(s){var l=t.edge(s),u=t.node(s.v);i&&a.push({v:s.v,w:s.w}),u.out-=l,qL(e,r,u)}),Ae(t.outEdges(n.v),function(s){var l=t.edge(s),u=s.w,h=t.node(u);h.in-=l,qL(e,r,h)}),t.removeNode(n.v),a}function YMe(t,e){var r=new sn,n=0,i=0;Ae(t.nodes(),function(l){r.setNode(l,{v:l,in:0,out:0})}),Ae(t.edges(),function(l){var u=r.edge(l.v,l.w)||0,h=e(l),f=u+h;r.setEdge(l.v,l.w,f),i=Math.max(i,r.node(l.v).out+=h),n=Math.max(n,r.node(l.w).in+=h)});var a=Go(i+n+3).map(function(){return new ZT}),s=n+1;return Ae(r.nodes(),function(l){qL(a,s,r.node(l))}),{graph:r,buckets:a,zeroIdx:s}}function qL(t,e,r){r.out?r.in?t[r.out-r.in+e].enqueue(r):t[t.length-1].enqueue(r):t[0].enqueue(r)}var WMe,cne=N(()=>{"use strict";qt();Vo();one();WMe=As(1);o(lne,"greedyFAS");o(qMe,"doGreedyFAS");o(WL,"removeNode");o(YMe,"buildState");o(qL,"assignBucket")});function une(t){var e=t.graph().acyclicer==="greedy"?lne(t,r(t)):XMe(t);Ae(e,function(n){var i=t.edge(n);t.removeEdge(n),i.forwardName=n.name,i.reversed=!0,t.setEdge(n.w,n.v,i,Ud("rev"))});function r(n){return function(i){return n.edge(i).weight}}o(r,"weightFn")}function XMe(t){var e=[],r={},n={};function i(a){Object.prototype.hasOwnProperty.call(n,a)||(n[a]=!0,r[a]=!0,Ae(t.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?e.push(s):i(s.w)}),delete r[a])}return o(i,"dfs"),Ae(t.nodes(),i),e}function hne(t){Ae(t.edges(),function(e){var r=t.edge(e);if(r.reversed){t.removeEdge(e);var n=r.forwardName;delete r.reversed,delete r.forwardName,t.setEdge(e.w,e.v,r,n)}})}var YL=N(()=>{"use strict";qt();cne();o(une,"run");o(XMe,"dfsFAS");o(hne,"undo")});function Ec(t,e,r,n){var i;do i=Ud(n);while(t.hasNode(i));return r.dummy=e,t.setNode(i,r),i}function dne(t){var e=new sn().setGraph(t.graph());return Ae(t.nodes(),function(r){e.setNode(r,t.node(r))}),Ae(t.edges(),function(r){var n=e.edge(r.v,r.w)||{weight:0,minlen:1},i=t.edge(r);e.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),e}function JT(t){var e=new sn({multigraph:t.isMultigraph()}).setGraph(t.graph());return Ae(t.nodes(),function(r){t.children(r).length||e.setNode(r,t.node(r))}),Ae(t.edges(),function(r){e.setEdge(r,t.edge(r))}),e}function XL(t,e){var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=l*i/a,h=l):(i<0&&(s=-s),u=s,h=s*a/i),{x:r+u,y:n+h}}function ef(t){var e=Je(Go(KL(t)+1),function(){return[]});return Ae(t.nodes(),function(r){var n=t.node(r),i=n.rank;pr(i)||(e[i][n.order]=r)}),e}function pne(t){var e=Dl(Je(t.nodes(),function(r){return t.node(r).rank}));Ae(t.nodes(),function(r){var n=t.node(r);Bt(n,"rank")&&(n.rank-=e)})}function mne(t){var e=Dl(Je(t.nodes(),function(a){return t.node(a).rank})),r=[];Ae(t.nodes(),function(a){var s=t.node(a).rank-e;r[s]||(r[s]=[]),r[s].push(a)});var n=0,i=t.graph().nodeRankFactor;Ae(r,function(a,s){pr(a)&&s%i!==0?--n:n&&Ae(a,function(l){t.node(l).rank+=n})})}function jL(t,e,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),Ec(t,"border",i,e)}function KL(t){return Is(Je(t.nodes(),function(e){var r=t.node(e).rank;if(!pr(r))return r}))}function gne(t,e){var r={lhs:[],rhs:[]};return Ae(t,function(n){e(n)?r.lhs.push(n):r.rhs.push(n)}),r}function yne(t,e){var r=PT();try{return e()}finally{console.log(t+" time: "+(PT()-r)+"ms")}}function vne(t,e){return e()}var Sc=N(()=>{"use strict";qt();Vo();o(Ec,"addDummyNode");o(dne,"simplify");o(JT,"asNonCompoundGraph");o(XL,"intersectRect");o(ef,"buildLayerMatrix");o(pne,"normalizeRanks");o(mne,"removeEmptyRanks");o(jL,"addBorderNode");o(KL,"maxRank");o(gne,"partition");o(yne,"time");o(vne,"notime")});function bne(t){function e(r){var n=t.children(r),i=t.node(r);if(n.length&&Ae(n,e),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,s=i.maxRank+1;a{"use strict";qt();Sc();o(bne,"addBorderSegments");o(xne,"addBorderNode")});function kne(t){var e=t.graph().rankdir.toLowerCase();(e==="lr"||e==="rl")&&Sne(t)}function Ene(t){var e=t.graph().rankdir.toLowerCase();(e==="bt"||e==="rl")&&jMe(t),(e==="lr"||e==="rl")&&(KMe(t),Sne(t))}function Sne(t){Ae(t.nodes(),function(e){Tne(t.node(e))}),Ae(t.edges(),function(e){Tne(t.edge(e))})}function Tne(t){var e=t.width;t.width=t.height,t.height=e}function jMe(t){Ae(t.nodes(),function(e){QL(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,QL),Object.prototype.hasOwnProperty.call(r,"y")&&QL(r)})}function QL(t){t.y=-t.y}function KMe(t){Ae(t.nodes(),function(e){ZL(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,ZL),Object.prototype.hasOwnProperty.call(r,"x")&&ZL(r)})}function ZL(t){var e=t.x;t.x=t.y,t.y=e}var Cne=N(()=>{"use strict";qt();o(kne,"adjust");o(Ene,"undo");o(Sne,"swapWidthHeight");o(Tne,"swapWidthHeightOne");o(jMe,"reverseY");o(QL,"reverseYOne");o(KMe,"swapXY");o(ZL,"swapXYOne")});function Ane(t){t.graph().dummyChains=[],Ae(t.edges(),function(e){ZMe(t,e)})}function ZMe(t,e){var r=e.v,n=t.node(r).rank,i=e.w,a=t.node(i).rank,s=e.name,l=t.edge(e),u=l.labelRank;if(a!==n+1){t.removeEdge(e);var h=void 0,f,d;for(d=0,++n;n{"use strict";qt();Sc();o(Ane,"run");o(ZMe,"normalizeEdge");o(_ne,"undo")});function D2(t){var e={};function r(n){var i=t.node(n);if(Object.prototype.hasOwnProperty.call(e,n))return i.rank;e[n]=!0;var a=Dl(Je(t.outEdges(n),function(s){return r(s.w)-t.edge(s).minlen}));return(a===Number.POSITIVE_INFINITY||a===void 0||a===null)&&(a=0),i.rank=a}o(r,"dfs"),Ae(t.sources(),r)}function Wd(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}var ek=N(()=>{"use strict";qt();o(D2,"longestPath");o(Wd,"slack")});function tk(t){var e=new sn({directed:!1}),r=t.nodes()[0],n=t.nodeCount();e.setNode(r,{});for(var i,a;JMe(e,t){"use strict";qt();Vo();ek();o(tk,"feasibleTree");o(JMe,"tightTree");o(eIe,"findMinSlackEdge");o(tIe,"shiftRanks")});var Lne=N(()=>{"use strict"});var tR=N(()=>{"use strict"});var cWt,rR=N(()=>{"use strict";qt();tR();cWt=As(1)});var Rne=N(()=>{"use strict";rR()});var nR=N(()=>{"use strict"});var Nne=N(()=>{"use strict";nR()});var bWt,Mne=N(()=>{"use strict";qt();bWt=As(1)});function iR(t){var e={},r={},n=[];function i(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new L2;Object.prototype.hasOwnProperty.call(e,a)||(r[a]=!0,e[a]=!0,Ae(t.predecessors(a),i),delete r[a],n.push(a))}if(o(i,"visit"),Ae(t.sinks(),i),VL(e)!==t.nodeCount())throw new L2;return n}function L2(){}var aR=N(()=>{"use strict";qt();iR.CycleException=L2;o(iR,"topsort");o(L2,"CycleException");L2.prototype=new Error});var Ine=N(()=>{"use strict";aR()});function rk(t,e,r){Pt(e)||(e=[e]);var n=(t.isDirected()?t.successors:t.neighbors).bind(t),i=[],a={};return Ae(e,function(s){if(!t.hasNode(s))throw new Error("Graph does not have node: "+s);One(t,s,r==="post",a,n,i)}),i}function One(t,e,r,n,i,a){Object.prototype.hasOwnProperty.call(n,e)||(n[e]=!0,r||a.push(e),Ae(i(e),function(s){One(t,s,r,n,i,a)}),r&&a.push(e))}var sR=N(()=>{"use strict";qt();o(rk,"dfs");o(One,"doDfs")});function oR(t,e){return rk(t,e,"post")}var Pne=N(()=>{"use strict";sR();o(oR,"postorder")});function lR(t,e){return rk(t,e,"pre")}var Bne=N(()=>{"use strict";sR();o(lR,"preorder")});var Fne=N(()=>{"use strict";tR();KT()});var $ne=N(()=>{"use strict";Lne();rR();Rne();Nne();Mne();Ine();Pne();Bne();Fne();nR();aR()});function rf(t){t=dne(t),D2(t);var e=tk(t);uR(e),cR(e,t);for(var r,n;r=Une(e);)n=Hne(e,t,r),Wne(e,t,r,n)}function cR(t,e){var r=oR(t,t.nodes());r=r.slice(0,r.length-1),Ae(r,function(n){sIe(t,e,n)})}function sIe(t,e,r){var n=t.node(r),i=n.parent;t.edge(r,i).cutvalue=Gne(t,e,r)}function Gne(t,e,r){var n=t.node(r),i=n.parent,a=!0,s=e.edge(r,i),l=0;return s||(a=!1,s=e.edge(i,r)),l=s.weight,Ae(e.nodeEdges(r),function(u){var h=u.v===r,f=h?u.w:u.v;if(f!==i){var d=h===a,p=e.edge(u).weight;if(l+=d?p:-p,lIe(t,r,f)){var m=t.edge(r,f).cutvalue;l+=d?-m:m}}}),l}function uR(t,e){arguments.length<2&&(e=t.nodes()[0]),Vne(t,{},1,e)}function Vne(t,e,r,n,i){var a=r,s=t.node(n);return e[n]=!0,Ae(t.neighbors(n),function(l){Object.prototype.hasOwnProperty.call(e,l)||(r=Vne(t,e,r,l,n))}),s.low=a,s.lim=r++,i?s.parent=i:delete s.parent,r}function Une(t){return ns(t.edges(),function(e){return t.edge(e).cutvalue<0})}function Hne(t,e,r){var n=r.v,i=r.w;e.hasEdge(n,i)||(n=r.w,i=r.v);var a=t.node(n),s=t.node(i),l=a,u=!1;a.lim>s.lim&&(l=s,u=!0);var h=Yr(e.edges(),function(f){return u===zne(t,t.node(f.v),l)&&u!==zne(t,t.node(f.w),l)});return Gd(h,function(f){return Wd(e,f)})}function Wne(t,e,r,n){var i=r.v,a=r.w;t.removeEdge(i,a),t.setEdge(n.v,n.w,{}),uR(t),cR(t,e),oIe(t,e)}function oIe(t,e){var r=ns(t.nodes(),function(i){return!e.node(i).parent}),n=lR(t,r);n=n.slice(1),Ae(n,function(i){var a=t.node(i).parent,s=e.edge(i,a),l=!1;s||(s=e.edge(a,i),l=!0),e.node(i).rank=e.node(a).rank+(l?s.minlen:-s.minlen)})}function lIe(t,e,r){return t.hasEdge(e,r)}function zne(t,e,r){return r.low<=e.lim&&e.lim<=r.lim}var qne=N(()=>{"use strict";qt();$ne();Sc();eR();ek();rf.initLowLimValues=uR;rf.initCutValues=cR;rf.calcCutValue=Gne;rf.leaveEdge=Une;rf.enterEdge=Hne;rf.exchangeEdges=Wne;o(rf,"networkSimplex");o(cR,"initCutValues");o(sIe,"assignCutValue");o(Gne,"calcCutValue");o(uR,"initLowLimValues");o(Vne,"dfsAssignLowLim");o(Une,"leaveEdge");o(Hne,"enterEdge");o(Wne,"exchangeEdges");o(oIe,"updateRanks");o(lIe,"isTreeEdge");o(zne,"isDescendant")});function hR(t){switch(t.graph().ranker){case"network-simplex":Yne(t);break;case"tight-tree":uIe(t);break;case"longest-path":cIe(t);break;default:Yne(t)}}function uIe(t){D2(t),tk(t)}function Yne(t){rf(t)}var cIe,fR=N(()=>{"use strict";eR();qne();ek();o(hR,"rank");cIe=D2;o(uIe,"tightTreeRanker");o(Yne,"networkSimplexRanker")});function Xne(t){var e=Ec(t,"root",{},"_root"),r=hIe(t),n=Is(br(r))-1,i=2*n+1;t.graph().nestingRoot=e,Ae(t.edges(),function(s){t.edge(s).minlen*=i});var a=fIe(t)+1;Ae(t.children(),function(s){jne(t,e,i,a,n,r,s)}),t.graph().nodeRankFactor=i}function jne(t,e,r,n,i,a,s){var l=t.children(s);if(!l.length){s!==e&&t.setEdge(e,s,{weight:0,minlen:r});return}var u=jL(t,"_bt"),h=jL(t,"_bb"),f=t.node(s);t.setParent(u,s),f.borderTop=u,t.setParent(h,s),f.borderBottom=h,Ae(l,function(d){jne(t,e,r,n,i,a,d);var p=t.node(d),m=p.borderTop?p.borderTop:d,g=p.borderBottom?p.borderBottom:d,y=p.borderTop?n:2*n,v=m!==g?1:i-a[s]+1;t.setEdge(u,m,{weight:y,minlen:v,nestingEdge:!0}),t.setEdge(g,h,{weight:y,minlen:v,nestingEdge:!0})}),t.parent(s)||t.setEdge(e,u,{weight:0,minlen:i+a[s]})}function hIe(t){var e={};function r(n,i){var a=t.children(n);a&&a.length&&Ae(a,function(s){r(s,i+1)}),e[n]=i}return o(r,"dfs"),Ae(t.children(),function(n){r(n,1)}),e}function fIe(t){return Xr(t.edges(),function(e,r){return e+t.edge(r).weight},0)}function Kne(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,Ae(t.edges(),function(r){var n=t.edge(r);n.nestingEdge&&t.removeEdge(r)})}var Qne=N(()=>{"use strict";qt();Sc();o(Xne,"run");o(jne,"dfs");o(hIe,"treeDepths");o(fIe,"sumWeights");o(Kne,"cleanup")});function Zne(t,e,r){var n={},i;Ae(r,function(a){for(var s=t.parent(a),l,u;s;){if(l=t.parent(s),l?(u=n[l],n[l]=s):(u=i,i=s),u&&u!==s){e.setEdge(u,s);return}s=l}})}var Jne=N(()=>{"use strict";qt();o(Zne,"addSubgraphConstraints")});function eie(t,e,r){var n=pIe(t),i=new sn({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(a){return t.node(a)});return Ae(t.nodes(),function(a){var s=t.node(a),l=t.parent(a);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(i.setNode(a),i.setParent(a,l||n),Ae(t[r](a),function(u){var h=u.v===a?u.w:u.v,f=i.edge(h,a),d=pr(f)?0:f.weight;i.setEdge(h,a,{weight:t.edge(u).weight+d})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&i.setNode(a,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))}),i}function pIe(t){for(var e;t.hasNode(e=Ud("_root")););return e}var tie=N(()=>{"use strict";qt();Vo();o(eie,"buildLayerGraph");o(pIe,"createRootNode")});function rie(t,e){for(var r=0,n=1;n0;)f%2&&(d+=l[f+1]),f=f-1>>1,l[f]+=h.weight;u+=h.weight*d})),u}var nie=N(()=>{"use strict";qt();o(rie,"crossCount");o(mIe,"twoLayerCrossCount")});function iie(t){var e={},r=Yr(t.nodes(),function(l){return!t.children(l).length}),n=Is(Je(r,function(l){return t.node(l).rank})),i=Je(Go(n+1),function(){return[]});function a(l){if(!Bt(e,l)){e[l]=!0;var u=t.node(l);i[u.rank].push(l),Ae(t.successors(l),a)}}o(a,"dfs");var s=kc(r,function(l){return t.node(l).rank});return Ae(s,a),i}var aie=N(()=>{"use strict";qt();o(iie,"initOrder")});function sie(t,e){return Je(e,function(r){var n=t.inEdges(r);if(n.length){var i=Xr(n,function(a,s){var l=t.edge(s),u=t.node(s.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}var oie=N(()=>{"use strict";qt();o(sie,"barycenter")});function lie(t,e){var r={};Ae(t,function(i,a){var s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};pr(i.barycenter)||(s.barycenter=i.barycenter,s.weight=i.weight)}),Ae(e.edges(),function(i){var a=r[i.v],s=r[i.w];!pr(a)&&!pr(s)&&(s.indegree++,a.out.push(r[i.w]))});var n=Yr(r,function(i){return!i.indegree});return gIe(n)}function gIe(t){var e=[];function r(a){return function(s){s.merged||(pr(s.barycenter)||pr(a.barycenter)||s.barycenter>=a.barycenter)&&yIe(a,s)}}o(r,"handleIn");function n(a){return function(s){s.in.push(a),--s.indegree===0&&t.push(s)}}for(o(n,"handleOut");t.length;){var i=t.pop();e.push(i),Ae(i.in.reverse(),r(i)),Ae(i.out,n(i))}return Je(Yr(e,function(a){return!a.merged}),function(a){return Vd(a,["vs","i","barycenter","weight"])})}function yIe(t,e){var r=0,n=0;t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.vs=e.vs.concat(t.vs),t.barycenter=r/n,t.weight=n,t.i=Math.min(e.i,t.i),e.merged=!0}var cie=N(()=>{"use strict";qt();o(lie,"resolveConflicts");o(gIe,"doResolveConflicts");o(yIe,"mergeEntries")});function hie(t,e){var r=gne(t,function(f){return Object.prototype.hasOwnProperty.call(f,"barycenter")}),n=r.lhs,i=kc(r.rhs,function(f){return-f.i}),a=[],s=0,l=0,u=0;n.sort(vIe(!!e)),u=uie(a,i,u),Ae(n,function(f){u+=f.vs.length,a.push(f.vs),s+=f.barycenter*f.weight,l+=f.weight,u=uie(a,i,u)});var h={vs:qr(a)};return l&&(h.barycenter=s/l,h.weight=l),h}function uie(t,e,r){for(var n;e.length&&(n=ga(e)).i<=r;)e.pop(),t.push(n.vs),r++;return r}function vIe(t){return function(e,r){return e.barycenterr.barycenter?1:t?r.i-e.i:e.i-r.i}}var fie=N(()=>{"use strict";qt();Sc();o(hie,"sort");o(uie,"consumeUnsortable");o(vIe,"compareWithBias")});function dR(t,e,r,n){var i=t.children(e),a=t.node(e),s=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};s&&(i=Yr(i,function(g){return g!==s&&g!==l}));var h=sie(t,i);Ae(h,function(g){if(t.children(g.v).length){var y=dR(t,g.v,r,n);u[g.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter")&&bIe(g,y)}});var f=lie(h,r);xIe(f,u);var d=hie(f,n);if(s&&(d.vs=qr([s,d.vs,l]),t.predecessors(s).length)){var p=t.node(t.predecessors(s)[0]),m=t.node(t.predecessors(l)[0]);Object.prototype.hasOwnProperty.call(d,"barycenter")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+p.order+m.order)/(d.weight+2),d.weight+=2}return d}function xIe(t,e){Ae(t,function(r){r.vs=qr(r.vs.map(function(n){return e[n]?e[n].vs:n}))})}function bIe(t,e){pr(t.barycenter)?(t.barycenter=e.barycenter,t.weight=e.weight):(t.barycenter=(t.barycenter*t.weight+e.barycenter*e.weight)/(t.weight+e.weight),t.weight+=e.weight)}var die=N(()=>{"use strict";qt();oie();cie();fie();o(dR,"sortSubgraph");o(xIe,"expandSubgraphs");o(bIe,"mergeBarycenters")});function gie(t){var e=KL(t),r=pie(t,Go(1,e+1),"inEdges"),n=pie(t,Go(e-1,-1,-1),"outEdges"),i=iie(t);mie(t,i);for(var a=Number.POSITIVE_INFINITY,s,l=0,u=0;u<4;++l,++u){wIe(l%2?r:n,l%4>=2),i=ef(t);var h=rie(t,i);h{"use strict";qt();Vo();Sc();Jne();tie();nie();aie();die();o(gie,"order");o(pie,"buildLayerGraphs");o(wIe,"sweepLayerGraphs");o(mie,"assignOrder")});function vie(t){var e=kIe(t);Ae(t.graph().dummyChains,function(r){for(var n=t.node(r),i=n.edgeObj,a=TIe(t,e,i.v,i.w),s=a.path,l=a.lca,u=0,h=s[u],f=!0;r!==i.w;){if(n=t.node(r),f){for(;(h=s[u])!==l&&t.node(h).maxRanks||l>e[u].lim));for(h=u,u=n;(u=t.parent(u))!==h;)a.push(u);return{path:i.concat(a.reverse()),lca:h}}function kIe(t){var e={},r=0;function n(i){var a=r;Ae(t.children(i),n),e[i]={low:a,lim:r++}}return o(n,"dfs"),Ae(t.children(),n),e}var xie=N(()=>{"use strict";qt();o(vie,"parentDummyChains");o(TIe,"findPath");o(kIe,"postorder")});function EIe(t,e){var r={};function n(i,a){var s=0,l=0,u=i.length,h=ga(a);return Ae(a,function(f,d){var p=CIe(t,f),m=p?t.node(p).order:u;(p||f===h)&&(Ae(a.slice(l,d+1),function(g){Ae(t.predecessors(g),function(y){var v=t.node(y),x=v.order;(xh)&&bie(r,p,f)})})}o(n,"scan");function i(a,s){var l=-1,u,h=0;return Ae(s,function(f,d){if(t.node(f).dummy==="border"){var p=t.predecessors(f);p.length&&(u=t.node(p[0]).order,n(s,h,d,l,u),h=d,l=u)}n(s,h,s.length,u,a.length)}),s}return o(i,"visitLayer"),Xr(e,i),r}function CIe(t,e){if(t.node(e).dummy)return ns(t.predecessors(e),function(r){return t.node(r).dummy})}function bie(t,e,r){if(e>r){var n=e;e=r,r=n}var i=t[e];i||(t[e]=i={}),i[r]=!0}function AIe(t,e,r){if(e>r){var n=e;e=r,r=n}return!!t[e]&&Object.prototype.hasOwnProperty.call(t[e],r)}function _Ie(t,e,r,n){var i={},a={},s={};return Ae(e,function(l){Ae(l,function(u,h){i[u]=u,a[u]=u,s[u]=h})}),Ae(e,function(l){var u=-1;Ae(l,function(h){var f=n(h);if(f.length){f=kc(f,function(y){return s[y]});for(var d=(f.length-1)/2,p=Math.floor(d),m=Math.ceil(d);p<=m;++p){var g=f[p];a[h]===h&&u{"use strict";qt();Vo();Sc();o(EIe,"findType1Conflicts");o(SIe,"findType2Conflicts");o(CIe,"findOtherInnerSegmentNode");o(bie,"addConflict");o(AIe,"hasConflict");o(_Ie,"verticalAlignment");o(DIe,"horizontalCompaction");o(LIe,"buildBlockGraph");o(RIe,"findSmallestWidthAlignment");o(NIe,"alignCoordinates");o(MIe,"balance");o(wie,"positionX");o(IIe,"sep");o(OIe,"width")});function kie(t){t=JT(t),PIe(t),ML(wie(t),function(e,r){t.node(r).x=e})}function PIe(t){var e=ef(t),r=t.graph().ranksep,n=0;Ae(e,function(i){var a=Is(Je(i,function(s){return t.node(s).height}));Ae(i,function(s){t.node(s).y=n+a/2}),n+=a+r})}var Eie=N(()=>{"use strict";qt();Sc();Tie();o(kie,"position");o(PIe,"positionY")});function R2(t,e){var r=e&&e.debugTiming?yne:vne;r("layout",()=>{var n=r(" buildLayoutGraph",()=>YIe(t));r(" runLayout",()=>BIe(n,r)),r(" updateInputGraph",()=>FIe(t,n))})}function BIe(t,e){e(" makeSpaceForEdgeLabels",()=>XIe(t)),e(" removeSelfEdges",()=>nOe(t)),e(" acyclic",()=>une(t)),e(" nestingGraph.run",()=>Xne(t)),e(" rank",()=>hR(JT(t))),e(" injectEdgeLabelProxies",()=>jIe(t)),e(" removeEmptyRanks",()=>mne(t)),e(" nestingGraph.cleanup",()=>Kne(t)),e(" normalizeRanks",()=>pne(t)),e(" assignRankMinMax",()=>KIe(t)),e(" removeEdgeLabelProxies",()=>QIe(t)),e(" normalize.run",()=>Ane(t)),e(" parentDummyChains",()=>vie(t)),e(" addBorderSegments",()=>bne(t)),e(" order",()=>gie(t)),e(" insertSelfEdges",()=>iOe(t)),e(" adjustCoordinateSystem",()=>kne(t)),e(" position",()=>kie(t)),e(" positionSelfEdges",()=>aOe(t)),e(" removeBorderNodes",()=>rOe(t)),e(" normalize.undo",()=>_ne(t)),e(" fixupEdgeLabelCoords",()=>eOe(t)),e(" undoCoordinateSystem",()=>Ene(t)),e(" translateGraph",()=>ZIe(t)),e(" assignNodeIntersects",()=>JIe(t)),e(" reversePoints",()=>tOe(t)),e(" acyclic.undo",()=>hne(t))}function FIe(t,e){Ae(t.nodes(),function(r){var n=t.node(r),i=e.node(r);n&&(n.x=i.x,n.y=i.y,e.children(r).length&&(n.width=i.width,n.height=i.height))}),Ae(t.edges(),function(r){var n=t.edge(r),i=e.edge(r);n.points=i.points,Object.prototype.hasOwnProperty.call(i,"x")&&(n.x=i.x,n.y=i.y)}),t.graph().width=e.graph().width,t.graph().height=e.graph().height}function YIe(t){var e=new sn({multigraph:!0,compound:!0}),r=mR(t.graph());return e.setGraph(Fh({},zIe,pR(r,$Ie),Vd(r,GIe))),Ae(t.nodes(),function(n){var i=mR(t.node(n));e.setNode(n,Qh(pR(i,VIe),UIe)),e.setParent(n,t.parent(n))}),Ae(t.edges(),function(n){var i=mR(t.edge(n));e.setEdge(n,Fh({},WIe,pR(i,HIe),Vd(i,qIe)))}),e}function XIe(t){var e=t.graph();e.ranksep/=2,Ae(t.edges(),function(r){var n=t.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function jIe(t){Ae(t.edges(),function(e){var r=t.edge(e);if(r.width&&r.height){var n=t.node(e.v),i=t.node(e.w),a={rank:(i.rank-n.rank)/2+n.rank,e};Ec(t,"edge-proxy",a,"_ep")}})}function KIe(t){var e=0;Ae(t.nodes(),function(r){var n=t.node(r);n.borderTop&&(n.minRank=t.node(n.borderTop).rank,n.maxRank=t.node(n.borderBottom).rank,e=Is(e,n.maxRank))}),t.graph().maxRank=e}function QIe(t){Ae(t.nodes(),function(e){var r=t.node(e);r.dummy==="edge-proxy"&&(t.edge(r.e).labelRank=r.rank,t.removeNode(e))})}function ZIe(t){var e=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,a=t.graph(),s=a.marginx||0,l=a.marginy||0;function u(h){var f=h.x,d=h.y,p=h.width,m=h.height;e=Math.min(e,f-p/2),r=Math.max(r,f+p/2),n=Math.min(n,d-m/2),i=Math.max(i,d+m/2)}o(u,"getExtremes"),Ae(t.nodes(),function(h){u(t.node(h))}),Ae(t.edges(),function(h){var f=t.edge(h);Object.prototype.hasOwnProperty.call(f,"x")&&u(f)}),e-=s,n-=l,Ae(t.nodes(),function(h){var f=t.node(h);f.x-=e,f.y-=n}),Ae(t.edges(),function(h){var f=t.edge(h);Ae(f.points,function(d){d.x-=e,d.y-=n}),Object.prototype.hasOwnProperty.call(f,"x")&&(f.x-=e),Object.prototype.hasOwnProperty.call(f,"y")&&(f.y-=n)}),a.width=r-e+s,a.height=i-n+l}function JIe(t){Ae(t.edges(),function(e){var r=t.edge(e),n=t.node(e.v),i=t.node(e.w),a,s;r.points?(a=r.points[0],s=r.points[r.points.length-1]):(r.points=[],a=i,s=n),r.points.unshift(XL(n,a)),r.points.push(XL(i,s))})}function eOe(t){Ae(t.edges(),function(e){var r=t.edge(e);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function tOe(t){Ae(t.edges(),function(e){var r=t.edge(e);r.reversed&&r.points.reverse()})}function rOe(t){Ae(t.nodes(),function(e){if(t.children(e).length){var r=t.node(e),n=t.node(r.borderTop),i=t.node(r.borderBottom),a=t.node(ga(r.borderLeft)),s=t.node(ga(r.borderRight));r.width=Math.abs(s.x-a.x),r.height=Math.abs(i.y-n.y),r.x=a.x+r.width/2,r.y=n.y+r.height/2}}),Ae(t.nodes(),function(e){t.node(e).dummy==="border"&&t.removeNode(e)})}function nOe(t){Ae(t.edges(),function(e){if(e.v===e.w){var r=t.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e,label:t.edge(e)}),t.removeEdge(e)}})}function iOe(t){var e=ef(t);Ae(e,function(r){var n=0;Ae(r,function(i,a){var s=t.node(i);s.order=a+n,Ae(s.selfEdges,function(l){Ec(t,"selfedge",{width:l.label.width,height:l.label.height,rank:s.rank,order:a+ ++n,e:l.e,label:l.label},"_se")}),delete s.selfEdges})})}function aOe(t){Ae(t.nodes(),function(e){var r=t.node(e);if(r.dummy==="selfedge"){var n=t.node(r.e.v),i=n.x+n.width/2,a=n.y,s=r.x-i,l=n.height/2;t.setEdge(r.e,r.label),t.removeNode(e),r.label.points=[{x:i+2*s/3,y:a-l},{x:i+5*s/6,y:a-l},{x:i+s,y:a},{x:i+5*s/6,y:a+l},{x:i+2*s/3,y:a+l}],r.label.x=r.x,r.label.y=r.y}})}function pR(t,e){return zd(Vd(t,e),Number)}function mR(t){var e={};return Ae(t,function(r,n){e[n.toLowerCase()]=r}),e}var $Ie,zIe,GIe,VIe,UIe,HIe,WIe,qIe,Sie=N(()=>{"use strict";qt();Vo();wne();Cne();YL();JL();fR();Qne();yie();xie();Eie();Sc();o(R2,"layout");o(BIe,"runLayout");o(FIe,"updateInputGraph");$Ie=["nodesep","edgesep","ranksep","marginx","marginy"],zIe={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},GIe=["acyclicer","ranker","rankdir","align"],VIe=["width","height"],UIe={width:0,height:0},HIe=["minlen","weight","width","height","labeloffset"],WIe={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},qIe=["labelpos"];o(YIe,"buildLayoutGraph");o(XIe,"makeSpaceForEdgeLabels");o(jIe,"injectEdgeLabelProxies");o(KIe,"assignRankMinMax");o(QIe,"removeEdgeLabelProxies");o(ZIe,"translateGraph");o(JIe,"assignNodeIntersects");o(eOe,"fixupEdgeLabelCoords");o(tOe,"reversePointsForReversedEdges");o(rOe,"removeBorderNodes");o(nOe,"removeSelfEdges");o(iOe,"insertSelfEdges");o(aOe,"positionSelfEdges");o(pR,"selectNumberAttrs");o(mR,"canonicalize")});var gR=N(()=>{"use strict";YL();Sie();JL();fR()});function Uo(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:sOe(t),edges:oOe(t)};return pr(t.graph())||(e.value=an(t.graph())),e}function sOe(t){return Je(t.nodes(),function(e){var r=t.node(e),n=t.parent(e),i={v:e};return pr(r)||(i.value=r),pr(n)||(i.parent=n),i})}function oOe(t){return Je(t.edges(),function(e){var r=t.edge(e),n={v:e.v,w:e.w};return pr(e.name)||(n.name=e.name),pr(r)||(n.value=r),n})}var yR=N(()=>{"use strict";qt();KT();o(Uo,"write");o(sOe,"writeNodes");o(oOe,"writeEdges")});var wr,qd,_ie,Die,nk,lOe,Lie,Rie,cOe,Fm,Aie,Nie,Mie,Iie,Oie,Pie=N(()=>{"use strict";vt();Vo();yR();wr=new Map,qd=new Map,_ie=new Map,Die=o(()=>{qd.clear(),_ie.clear(),wr.clear()},"clear"),nk=o((t,e)=>{let r=qd.get(e)||[];return Y.trace("In isDescendant",e," ",t," = ",r.includes(t)),r.includes(t)},"isDescendant"),lOe=o((t,e)=>{let r=qd.get(e)||[];return Y.info("Descendants of ",e," is ",r),Y.info("Edge is ",t),t.v===e||t.w===e?!1:r?r.includes(t.v)||nk(t.v,e)||nk(t.w,e)||r.includes(t.w):(Y.debug("Tilt, ",e,",not in descendants"),!1)},"edgeInCluster"),Lie=o((t,e,r,n)=>{Y.warn("Copying children of ",t,"root",n,"data",e.node(t),n);let i=e.children(t)||[];t!==n&&i.push(t),Y.warn("Copying (nodes) clusterId",t,"nodes",i),i.forEach(a=>{if(e.children(a).length>0)Lie(a,e,r,n);else{let s=e.node(a);Y.info("cp ",a," to ",n," with parent ",t),r.setNode(a,s),n!==e.parent(a)&&(Y.warn("Setting parent",a,e.parent(a)),r.setParent(a,e.parent(a))),t!==n&&a!==t?(Y.debug("Setting parent",a,t),r.setParent(a,t)):(Y.info("In copy ",t,"root",n,"data",e.node(t),n),Y.debug("Not Setting parent for node=",a,"cluster!==rootId",t!==n,"node!==clusterId",a!==t));let l=e.edges(a);Y.debug("Copying Edges",l),l.forEach(u=>{Y.info("Edge",u);let h=e.edge(u.v,u.w,u.name);Y.info("Edge data",h,n);try{lOe(u,n)?(Y.info("Copying as ",u.v,u.w,h,u.name),r.setEdge(u.v,u.w,h,u.name),Y.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]))):Y.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",n," clusterId:",t)}catch(f){Y.error(f)}})}Y.debug("Removing node",a),e.removeNode(a)})},"copy"),Rie=o((t,e)=>{let r=e.children(t),n=[...r];for(let i of r)_ie.set(i,t),n=[...n,...Rie(i,e)];return n},"extractDescendants"),cOe=o((t,e,r)=>{let n=t.edges().filter(u=>u.v===e||u.w===e),i=t.edges().filter(u=>u.v===r||u.w===r),a=n.map(u=>({v:u.v===e?r:u.v,w:u.w===e?e:u.w})),s=i.map(u=>({v:u.v,w:u.w}));return a.filter(u=>s.some(h=>u.v===h.v&&u.w===h.w))},"findCommonEdges"),Fm=o((t,e,r)=>{let n=e.children(t);if(Y.trace("Searching children of id ",t,n),n.length<1)return t;let i;for(let a of n){let s=Fm(a,e,r),l=cOe(e,r,s);if(s)if(l.length>0)i=s;else return s}return i},"findNonClusterChild"),Aie=o(t=>!wr.has(t)||!wr.get(t).externalConnections?t:wr.has(t)?wr.get(t).id:t,"getAnchorId"),Nie=o((t,e)=>{if(!t||e>10){Y.debug("Opting out, no graph ");return}else Y.debug("Opting in, graph ");t.nodes().forEach(function(r){t.children(r).length>0&&(Y.warn("Cluster identified",r," Replacement id in edges: ",Fm(r,t,r)),qd.set(r,Rie(r,t)),wr.set(r,{id:Fm(r,t,r),clusterData:t.node(r)}))}),t.nodes().forEach(function(r){let n=t.children(r),i=t.edges();n.length>0?(Y.debug("Cluster identified",r,qd),i.forEach(a=>{let s=nk(a.v,r),l=nk(a.w,r);s^l&&(Y.warn("Edge: ",a," leaves cluster ",r),Y.warn("Descendants of XXX ",r,": ",qd.get(r)),wr.get(r).externalConnections=!0)})):Y.debug("Not a cluster ",r,qd)});for(let r of wr.keys()){let n=wr.get(r).id,i=t.parent(n);i!==r&&wr.has(i)&&!wr.get(i).externalConnections&&(wr.get(r).id=i)}t.edges().forEach(function(r){let n=t.edge(r);Y.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),Y.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(t.edge(r)));let i=r.v,a=r.w;if(Y.warn("Fix XXX",wr,"ids:",r.v,r.w,"Translating: ",wr.get(r.v)," --- ",wr.get(r.w)),wr.get(r.v)||wr.get(r.w)){if(Y.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),i=Aie(r.v),a=Aie(r.w),t.removeEdge(r.v,r.w,r.name),i!==r.v){let s=t.parent(i);wr.get(s).externalConnections=!0,n.fromCluster=r.v}if(a!==r.w){let s=t.parent(a);wr.get(s).externalConnections=!0,n.toCluster=r.w}Y.warn("Fix Replacing with XXX",i,a,r.name),t.setEdge(i,a,n,r.name)}}),Y.warn("Adjusted Graph",Uo(t)),Mie(t,0),Y.trace(wr)},"adjustClustersAndEdges"),Mie=o((t,e)=>{if(Y.warn("extractor - ",e,Uo(t),t.children("D")),e>10){Y.error("Bailing out");return}let r=t.nodes(),n=!1;for(let i of r){let a=t.children(i);n=n||a.length>0}if(!n){Y.debug("Done, no node has children",t.nodes());return}Y.debug("Nodes = ",r,e);for(let i of r)if(Y.debug("Extracting node",i,wr,wr.has(i)&&!wr.get(i).externalConnections,!t.parent(i),t.node(i),t.children("D")," Depth ",e),!wr.has(i))Y.debug("Not a cluster",i,e);else if(!wr.get(i).externalConnections&&t.children(i)&&t.children(i).length>0){Y.warn("Cluster without external connections, without a parent and with children",i,e);let s=t.graph().rankdir==="TB"?"LR":"TB";wr.get(i)?.clusterData?.dir&&(s=wr.get(i).clusterData.dir,Y.warn("Fixing dir",wr.get(i).clusterData.dir,s));let l=new sn({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});Y.warn("Old graph before copy",Uo(t)),Lie(i,t,l,i),t.setNode(i,{clusterNode:!0,id:i,clusterData:wr.get(i).clusterData,label:wr.get(i).label,graph:l}),Y.warn("New graph after copy node: (",i,")",Uo(l)),Y.debug("Old graph after copy",Uo(t))}else Y.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!wr.get(i).externalConnections," no parent: ",!t.parent(i)," children ",t.children(i)&&t.children(i).length>0,t.children("D"),e),Y.debug(wr);r=t.nodes(),Y.warn("New list of nodes",r);for(let i of r){let a=t.node(i);Y.warn(" Now next level",i,a),a?.clusterNode&&Mie(a.graph,e+1)}},"extractor"),Iie=o((t,e)=>{if(e.length===0)return[];let r=Object.assign([],e);return e.forEach(n=>{let i=t.children(n),a=Iie(t,i);r=[...r,...a]}),r},"sorter"),Oie=o(t=>Iie(t,t.children()),"sortNodesByHierarchy")});var Fie={};hr(Fie,{render:()=>uOe});var Bie,uOe,$ie=N(()=>{"use strict";gR();yR();Vo();tL();Ft();Pie();eT();Hw();eL();vt();w2();zt();Bie=o(async(t,e,r,n,i,a)=>{Y.warn("Graph in recursive render:XAX",Uo(e),i);let s=e.graph().rankdir;Y.trace("Dir in recursive render - dir:",s);let l=t.insert("g").attr("class","root");e.nodes()?Y.info("Recursive render XXX",e.nodes()):Y.info("No nodes found for",e),e.edges().length>0&&Y.info("Recursive edges",e.edge(e.edges()[0]));let u=l.insert("g").attr("class","clusters"),h=l.insert("g").attr("class","edgePaths"),f=l.insert("g").attr("class","edgeLabels"),d=l.insert("g").attr("class","nodes");await Promise.all(e.nodes().map(async function(y){let v=e.node(y);if(i!==void 0){let x=JSON.parse(JSON.stringify(i.clusterData));Y.trace(`Setting data for parent cluster XXX + L0,20`)},"requirement_arrow"),rNe=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");n.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),n.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),n.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),nNe={extension:VRe,composition:URe,aggregation:HRe,dependency:qRe,lollipop:WRe,point:YRe,circle:XRe,cross:jRe,barb:KRe,only_one:QRe,zero_or_one:ZRe,one_or_more:JRe,zero_or_more:eNe,requirement_arrow:tNe,requirement_contains:rNe},vw=GRe});async function Cm(t,e,r){let n,i;e.shape==="rect"&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");let a=e.shape?q9[e.shape]:void 0;if(!a)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let s;r.config.securityLevel==="sandbox"?s="_top":e.linkTarget&&(s=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",s??null),i=await a(n,e,r)}else i=await a(t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),xw.set(e.id,n),e.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}var xw,Xte,jte,P2,bw=N(()=>{"use strict";pt();W9();xw=new Map;o(Cm,"insertNode");Xte=o((t,e)=>{xw.set(e.id,t)},"setNodeElem"),jte=o(()=>{xw.clear()},"clear"),P2=o(t=>{let e=xw.get(t.id);X.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});var Kte,Qte=N(()=>{"use strict";qn();gr();pt();cw();j9();K9();bw();It();tr();Kte={common:tt,getConfig:Qt,insertCluster:Sm,insertEdge:yw,insertEdgeLabel:mw,insertMarkers:vw,insertNode:Cm,interpolateToCurve:FL,labelHelper:ut,log:X,positionEdgeLabel:gw}});function aNe(t){return typeof t=="symbol"||ai(t)&&ha(t)==iNe}var iNe,uo,tp=N(()=>{"use strict";_u();Oo();iNe="[object Symbol]";o(aNe,"isSymbol");uo=aNe});function sNe(t,e){for(var r=-1,n=t==null?0:t.length,i=Array(n);++r{"use strict";o(sNe,"arrayMap");$s=sNe});function ere(t){if(typeof t=="string")return t;if(Bt(t))return $s(t,ere)+"";if(uo(t))return Jte?Jte.call(t):"";var e=t+"";return e=="0"&&1/t==-oNe?"-0":e}var oNe,Zte,Jte,tre,rre=N(()=>{"use strict";$d();rp();Yn();tp();oNe=1/0,Zte=Ki?Ki.prototype:void 0,Jte=Zte?Zte.toString:void 0;o(ere,"baseToString");tre=ere});function cNe(t){for(var e=t.length;e--&&lNe.test(t.charAt(e)););return e}var lNe,nre,ire=N(()=>{"use strict";lNe=/\s/;o(cNe,"trimmedEndIndex");nre=cNe});function hNe(t){return t&&t.slice(0,nre(t)+1).replace(uNe,"")}var uNe,are,sre=N(()=>{"use strict";ire();uNe=/^\s+/;o(hNe,"baseTrim");are=hNe});function gNe(t){if(typeof t=="number")return t;if(uo(t))return ore;if(Sn(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Sn(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=are(t);var r=dNe.test(t);return r||pNe.test(t)?mNe(t.slice(2),r?2:8):fNe.test(t)?ore:+t}var ore,fNe,dNe,pNe,mNe,lre,cre=N(()=>{"use strict";sre();oo();tp();ore=NaN,fNe=/^[-+]0x[0-9a-f]+$/i,dNe=/^0b[01]+$/i,pNe=/^0o[0-7]+$/i,mNe=parseInt;o(gNe,"toNumber");lre=gNe});function vNe(t){if(!t)return t===0?t:0;if(t=lre(t),t===ure||t===-ure){var e=t<0?-1:1;return e*yNe}return t===t?t:0}var ure,yNe,Am,Q9=N(()=>{"use strict";cre();ure=1/0,yNe=17976931348623157e292;o(vNe,"toFinite");Am=vNe});function xNe(t){var e=Am(t),r=e%1;return e===e?r?e-r:e:0}var Ec,_m=N(()=>{"use strict";Q9();o(xNe,"toInteger");Ec=xNe});var bNe,Tw,hre=N(()=>{"use strict";Fh();Mo();bNe=Ls(hi,"WeakMap"),Tw=bNe});function TNe(){}var si,Z9=N(()=>{"use strict";o(TNe,"noop");si=TNe});function wNe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(wNe,"arrayEach");ww=wNe});function kNe(t,e,r,n){for(var i=t.length,a=r+(n?1:-1);n?a--:++a{"use strict";o(kNe,"baseFindIndex");kw=kNe});function ENe(t){return t!==t}var fre,dre=N(()=>{"use strict";o(ENe,"baseIsNaN");fre=ENe});function SNe(t,e,r){for(var n=r-1,i=t.length;++n{"use strict";o(SNe,"strictIndexOf");pre=SNe});function CNe(t,e,r){return e===e?pre(t,e,r):kw(t,fre,r)}var Dm,Ew=N(()=>{"use strict";eR();dre();mre();o(CNe,"baseIndexOf");Dm=CNe});function ANe(t,e){var r=t==null?0:t.length;return!!r&&Dm(t,e,0)>-1}var Sw,tR=N(()=>{"use strict";Ew();o(ANe,"arrayIncludes");Sw=ANe});var _Ne,gre,yre=N(()=>{"use strict";SL();_Ne=xT(Object.keys,Object),gre=_Ne});function RNe(t){if(!mc(t))return gre(t);var e=[];for(var r in Object(t))LNe.call(t,r)&&r!="constructor"&&e.push(r);return e}var DNe,LNe,Lm,Cw=N(()=>{"use strict";dm();yre();DNe=Object.prototype,LNe=DNe.hasOwnProperty;o(RNe,"baseKeys");Lm=RNe});function NNe(t){return fi(t)?ET(t):Lm(t)}var qr,Sc=N(()=>{"use strict";LL();Cw();Po();o(NNe,"keys");qr=NNe});var MNe,INe,ONe,pa,vre=N(()=>{"use strict";ym();Hd();IL();Po();dm();Sc();MNe=Object.prototype,INe=MNe.hasOwnProperty,ONe=AT(function(t,e){if(mc(e)||fi(e)){$o(e,qr(e),t);return}for(var r in e)INe.call(e,r)&&gc(t,r,e[r])}),pa=ONe});function FNe(t,e){if(Bt(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||uo(t)?!0:BNe.test(t)||!PNe.test(t)||e!=null&&t in Object(e)}var PNe,BNe,Rm,Aw=N(()=>{"use strict";Yn();tp();PNe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,BNe=/^\w*$/;o(FNe,"isKey");Rm=FNe});function zNe(t){var e=am(t,function(n){return r.size===$Ne&&r.clear(),n}),r=e.cache;return e}var $Ne,xre,bre=N(()=>{"use strict";vL();$Ne=500;o(zNe,"memoizeCapped");xre=zNe});var GNe,VNe,UNe,Tre,wre=N(()=>{"use strict";bre();GNe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,VNe=/\\(\\)?/g,UNe=xre(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(GNe,function(r,n,i,a){e.push(i?a.replace(VNe,"$1"):n||r)}),e}),Tre=UNe});function HNe(t){return t==null?"":tre(t)}var _w,rR=N(()=>{"use strict";rre();o(HNe,"toString");_w=HNe});function qNe(t,e){return Bt(t)?t:Rm(t,e)?[t]:Tre(_w(t))}var rf,B2=N(()=>{"use strict";Yn();Aw();wre();rR();o(qNe,"castPath");rf=qNe});function YNe(t){if(typeof t=="string"||uo(t))return t;var e=t+"";return e=="0"&&1/t==-WNe?"-0":e}var WNe,Cc,Nm=N(()=>{"use strict";tp();WNe=1/0;o(YNe,"toKey");Cc=YNe});function XNe(t,e){e=rf(e,t);for(var r=0,n=e.length;t!=null&&r{"use strict";B2();Nm();o(XNe,"baseGet");nf=XNe});function jNe(t,e,r){var n=t==null?void 0:nf(t,e);return n===void 0?r:n}var kre,Ere=N(()=>{"use strict";F2();o(jNe,"get");kre=jNe});function KNe(t,e){for(var r=-1,n=e.length,i=t.length;++r{"use strict";o(KNe,"arrayPush");Mm=KNe});function QNe(t){return Bt(t)||_l(t)||!!(Sre&&t&&t[Sre])}var Sre,Cre,Are=N(()=>{"use strict";$d();pm();Yn();Sre=Ki?Ki.isConcatSpreadable:void 0;o(QNe,"isFlattenable");Cre=QNe});function _re(t,e,r,n,i){var a=-1,s=t.length;for(r||(r=Cre),i||(i=[]);++a0&&r(l)?e>1?_re(l,e-1,r,n,i):Mm(i,l):n||(i[i.length]=l)}return i}var Ac,Im=N(()=>{"use strict";Dw();Are();o(_re,"baseFlatten");Ac=_re});function ZNe(t){var e=t==null?0:t.length;return e?Ac(t,1):[]}var Qr,Lw=N(()=>{"use strict";Im();o(ZNe,"flatten");Qr=ZNe});function JNe(t){return CT(ST(t,void 0,Qr),t+"")}var Dre,Lre=N(()=>{"use strict";Lw();RL();ML();o(JNe,"flatRest");Dre=JNe});function eMe(t,e,r){var n=-1,i=t.length;e<0&&(e=-e>i?0:i+e),r=r>i?i:r,r<0&&(r+=i),i=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(i);++n{"use strict";o(eMe,"baseSlice");Rw=eMe});function cMe(t){return lMe.test(t)}var tMe,rMe,nMe,iMe,aMe,sMe,oMe,lMe,Rre,Nre=N(()=>{"use strict";tMe="\\ud800-\\udfff",rMe="\\u0300-\\u036f",nMe="\\ufe20-\\ufe2f",iMe="\\u20d0-\\u20ff",aMe=rMe+nMe+iMe,sMe="\\ufe0e\\ufe0f",oMe="\\u200d",lMe=RegExp("["+oMe+tMe+aMe+sMe+"]");o(cMe,"hasUnicode");Rre=cMe});function uMe(t,e,r,n){var i=-1,a=t==null?0:t.length;for(n&&a&&(r=t[++i]);++i{"use strict";o(uMe,"arrayReduce");Mre=uMe});function hMe(t,e){return t&&$o(e,qr(e),t)}var Ore,Pre=N(()=>{"use strict";Hd();Sc();o(hMe,"baseAssign");Ore=hMe});function fMe(t,e){return t&&$o(e,Rs(e),t)}var Bre,Fre=N(()=>{"use strict";Hd();qh();o(fMe,"baseAssignIn");Bre=fMe});function dMe(t,e){for(var r=-1,n=t==null?0:t.length,i=0,a=[];++r{"use strict";o(dMe,"arrayFilter");Om=dMe});function pMe(){return[]}var Mw,iR=N(()=>{"use strict";o(pMe,"stubArray");Mw=pMe});var mMe,gMe,$re,yMe,Pm,Iw=N(()=>{"use strict";Nw();iR();mMe=Object.prototype,gMe=mMe.propertyIsEnumerable,$re=Object.getOwnPropertySymbols,yMe=$re?function(t){return t==null?[]:(t=Object(t),Om($re(t),function(e){return gMe.call(t,e)}))}:Mw,Pm=yMe});function vMe(t,e){return $o(t,Pm(t),e)}var zre,Gre=N(()=>{"use strict";Hd();Iw();o(vMe,"copySymbols");zre=vMe});var xMe,bMe,Ow,aR=N(()=>{"use strict";Dw();bT();Iw();iR();xMe=Object.getOwnPropertySymbols,bMe=xMe?function(t){for(var e=[];t;)Mm(e,Pm(t)),t=fm(t);return e}:Mw,Ow=bMe});function TMe(t,e){return $o(t,Ow(t),e)}var Vre,Ure=N(()=>{"use strict";Hd();aR();o(TMe,"copySymbolsIn");Vre=TMe});function wMe(t,e,r){var n=e(t);return Bt(t)?n:Mm(n,r(t))}var Pw,sR=N(()=>{"use strict";Dw();Yn();o(wMe,"baseGetAllKeys");Pw=wMe});function kMe(t){return Pw(t,qr,Pm)}var $2,oR=N(()=>{"use strict";sR();Iw();Sc();o(kMe,"getAllKeys");$2=kMe});function EMe(t){return Pw(t,Rs,Ow)}var Bw,lR=N(()=>{"use strict";sR();aR();qh();o(EMe,"getAllKeysIn");Bw=EMe});var SMe,Fw,Hre=N(()=>{"use strict";Fh();Mo();SMe=Ls(hi,"DataView"),Fw=SMe});var CMe,$w,qre=N(()=>{"use strict";Fh();Mo();CMe=Ls(hi,"Promise"),$w=CMe});var AMe,af,cR=N(()=>{"use strict";Fh();Mo();AMe=Ls(hi,"Set"),af=AMe});var Wre,_Me,Yre,Xre,jre,Kre,DMe,LMe,RMe,NMe,MMe,np,ho,ip=N(()=>{"use strict";Hre();fT();qre();cR();hre();_u();mL();Wre="[object Map]",_Me="[object Object]",Yre="[object Promise]",Xre="[object Set]",jre="[object WeakMap]",Kre="[object DataView]",DMe=Du(Fw),LMe=Du(Gh),RMe=Du($w),NMe=Du(af),MMe=Du(Tw),np=ha;(Fw&&np(new Fw(new ArrayBuffer(1)))!=Kre||Gh&&np(new Gh)!=Wre||$w&&np($w.resolve())!=Yre||af&&np(new af)!=Xre||Tw&&np(new Tw)!=jre)&&(np=o(function(t){var e=ha(t),r=e==_Me?t.constructor:void 0,n=r?Du(r):"";if(n)switch(n){case DMe:return Kre;case LMe:return Wre;case RMe:return Yre;case NMe:return Xre;case MMe:return jre}return e},"getTag"));ho=np});function PMe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&OMe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var IMe,OMe,Qre,Zre=N(()=>{"use strict";IMe=Object.prototype,OMe=IMe.hasOwnProperty;o(PMe,"initCloneArray");Qre=PMe});function BMe(t,e){var r=e?hm(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var Jre,ene=N(()=>{"use strict";gT();o(BMe,"cloneDataView");Jre=BMe});function $Me(t){var e=new t.constructor(t.source,FMe.exec(t));return e.lastIndex=t.lastIndex,e}var FMe,tne,rne=N(()=>{"use strict";FMe=/\w*$/;o($Me,"cloneRegExp");tne=$Me});function zMe(t){return ine?Object(ine.call(t)):{}}var nne,ine,ane,sne=N(()=>{"use strict";$d();nne=Ki?Ki.prototype:void 0,ine=nne?nne.valueOf:void 0;o(zMe,"cloneSymbol");ane=zMe});function sIe(t,e,r){var n=t.constructor;switch(e){case jMe:return hm(t);case GMe:case VMe:return new n(+t);case KMe:return Jre(t,r);case QMe:case ZMe:case JMe:case eIe:case tIe:case rIe:case nIe:case iIe:case aIe:return yT(t,r);case UMe:return new n;case HMe:case YMe:return new n(t);case qMe:return tne(t);case WMe:return new n;case XMe:return ane(t)}}var GMe,VMe,UMe,HMe,qMe,WMe,YMe,XMe,jMe,KMe,QMe,ZMe,JMe,eIe,tIe,rIe,nIe,iIe,aIe,one,lne=N(()=>{"use strict";gT();ene();rne();sne();kL();GMe="[object Boolean]",VMe="[object Date]",UMe="[object Map]",HMe="[object Number]",qMe="[object RegExp]",WMe="[object Set]",YMe="[object String]",XMe="[object Symbol]",jMe="[object ArrayBuffer]",KMe="[object DataView]",QMe="[object Float32Array]",ZMe="[object Float64Array]",JMe="[object Int8Array]",eIe="[object Int16Array]",tIe="[object Int32Array]",rIe="[object Uint8Array]",nIe="[object Uint8ClampedArray]",iIe="[object Uint16Array]",aIe="[object Uint32Array]";o(sIe,"initCloneByTag");one=sIe});function lIe(t){return ai(t)&&ho(t)==oIe}var oIe,cne,une=N(()=>{"use strict";ip();Oo();oIe="[object Map]";o(lIe,"baseIsMap");cne=lIe});var hne,cIe,fne,dne=N(()=>{"use strict";une();Ud();f2();hne=Fo&&Fo.isMap,cIe=hne?Bo(hne):cne,fne=cIe});function hIe(t){return ai(t)&&ho(t)==uIe}var uIe,pne,mne=N(()=>{"use strict";ip();Oo();uIe="[object Set]";o(hIe,"baseIsSet");pne=hIe});var gne,fIe,yne,vne=N(()=>{"use strict";mne();Ud();f2();gne=Fo&&Fo.isSet,fIe=gne?Bo(gne):pne,yne=fIe});function zw(t,e,r,n,i,a){var s,l=e&dIe,u=e&pIe,h=e&mIe;if(r&&(s=i?r(t,n,i,a):r(t)),s!==void 0)return s;if(!Sn(t))return t;var f=Bt(t);if(f){if(s=Qre(t),!l)return vT(t,s)}else{var d=ho(t),p=d==bne||d==bIe;if(Dl(t))return mT(t,l);if(d==Tne||d==xne||p&&!i){if(s=u||p?{}:TT(t),!l)return u?Vre(t,Bre(s,t)):zre(t,Ore(s,t))}else{if(!Mn[d])return i?t:{};s=one(t,d,l)}}a||(a=new dc);var m=a.get(t);if(m)return m;a.set(t,s),yne(t)?t.forEach(function(v){s.add(zw(v,e,r,v,t,a))}):fne(t)&&t.forEach(function(v,x){s.set(x,zw(v,e,r,x,t,a))});var g=h?u?Bw:$2:u?Rs:qr,y=f?void 0:g(t);return ww(y||t,function(v,x){y&&(x=v,v=t[x]),gc(s,x,zw(v,e,r,x,t,a))}),s}var dIe,pIe,mIe,xne,gIe,yIe,vIe,xIe,bne,bIe,TIe,wIe,Tne,kIe,EIe,SIe,CIe,AIe,_Ie,DIe,LIe,RIe,NIe,MIe,IIe,OIe,PIe,BIe,FIe,Mn,Gw,uR=N(()=>{"use strict";c2();J9();ym();Pre();Fre();TL();EL();Gre();Ure();oR();lR();ip();Zre();lne();CL();Yn();gm();dne();oo();vne();Sc();qh();dIe=1,pIe=2,mIe=4,xne="[object Arguments]",gIe="[object Array]",yIe="[object Boolean]",vIe="[object Date]",xIe="[object Error]",bne="[object Function]",bIe="[object GeneratorFunction]",TIe="[object Map]",wIe="[object Number]",Tne="[object Object]",kIe="[object RegExp]",EIe="[object Set]",SIe="[object String]",CIe="[object Symbol]",AIe="[object WeakMap]",_Ie="[object ArrayBuffer]",DIe="[object DataView]",LIe="[object Float32Array]",RIe="[object Float64Array]",NIe="[object Int8Array]",MIe="[object Int16Array]",IIe="[object Int32Array]",OIe="[object Uint8Array]",PIe="[object Uint8ClampedArray]",BIe="[object Uint16Array]",FIe="[object Uint32Array]",Mn={};Mn[xne]=Mn[gIe]=Mn[_Ie]=Mn[DIe]=Mn[yIe]=Mn[vIe]=Mn[LIe]=Mn[RIe]=Mn[NIe]=Mn[MIe]=Mn[IIe]=Mn[TIe]=Mn[wIe]=Mn[Tne]=Mn[kIe]=Mn[EIe]=Mn[SIe]=Mn[CIe]=Mn[OIe]=Mn[PIe]=Mn[BIe]=Mn[FIe]=!0;Mn[xIe]=Mn[bne]=Mn[AIe]=!1;o(zw,"baseClone");Gw=zw});function zIe(t){return Gw(t,$Ie)}var $Ie,ln,hR=N(()=>{"use strict";uR();$Ie=4;o(zIe,"clone");ln=zIe});function UIe(t){return Gw(t,GIe|VIe)}var GIe,VIe,fR,wne=N(()=>{"use strict";uR();GIe=1,VIe=4;o(UIe,"cloneDeep");fR=UIe});function HIe(t){for(var e=-1,r=t==null?0:t.length,n=0,i=[];++e{"use strict";o(HIe,"compact");_c=HIe});function WIe(t){return this.__data__.set(t,qIe),this}var qIe,Ene,Sne=N(()=>{"use strict";qIe="__lodash_hash_undefined__";o(WIe,"setCacheAdd");Ene=WIe});function YIe(t){return this.__data__.has(t)}var Cne,Ane=N(()=>{"use strict";o(YIe,"setCacheHas");Cne=YIe});function Vw(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new Gd;++e{"use strict";dT();Sne();Ane();o(Vw,"SetCache");Vw.prototype.add=Vw.prototype.push=Ene;Vw.prototype.has=Cne;Bm=Vw});function XIe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(XIe,"arraySome");Hw=XIe});function jIe(t,e){return t.has(e)}var Fm,qw=N(()=>{"use strict";o(jIe,"cacheHas");Fm=jIe});function ZIe(t,e,r,n,i,a){var s=r&KIe,l=t.length,u=e.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(t),f=a.get(e);if(h&&f)return h==e&&f==t;var d=-1,p=!0,m=r&QIe?new Bm:void 0;for(a.set(t,e),a.set(e,t);++d{"use strict";Uw();dR();qw();KIe=1,QIe=2;o(ZIe,"equalArrays");Ww=ZIe});function JIe(t){var e=-1,r=Array(t.size);return t.forEach(function(n,i){r[++e]=[i,n]}),r}var _ne,Dne=N(()=>{"use strict";o(JIe,"mapToArray");_ne=JIe});function eOe(t){var e=-1,r=Array(t.size);return t.forEach(function(n){r[++e]=n}),r}var $m,Yw=N(()=>{"use strict";o(eOe,"setToArray");$m=eOe});function pOe(t,e,r,n,i,a,s){switch(r){case dOe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case fOe:return!(t.byteLength!=e.byteLength||!a(new um(t),new um(e)));case nOe:case iOe:case oOe:return Io(+t,+e);case aOe:return t.name==e.name&&t.message==e.message;case lOe:case uOe:return t==e+"";case sOe:var l=_ne;case cOe:var u=n&tOe;if(l||(l=$m),t.size!=e.size&&!u)return!1;var h=s.get(t);if(h)return h==e;n|=rOe,s.set(t,e);var f=Ww(l(t),l(e),n,i,a,s);return s.delete(t),f;case hOe:if(mR)return mR.call(t)==mR.call(e)}return!1}var tOe,rOe,nOe,iOe,aOe,sOe,oOe,lOe,cOe,uOe,hOe,fOe,dOe,Lne,mR,Rne,Nne=N(()=>{"use strict";$d();wL();zd();pR();Dne();Yw();tOe=1,rOe=2,nOe="[object Boolean]",iOe="[object Date]",aOe="[object Error]",sOe="[object Map]",oOe="[object Number]",lOe="[object RegExp]",cOe="[object Set]",uOe="[object String]",hOe="[object Symbol]",fOe="[object ArrayBuffer]",dOe="[object DataView]",Lne=Ki?Ki.prototype:void 0,mR=Lne?Lne.valueOf:void 0;o(pOe,"equalByTag");Rne=pOe});function vOe(t,e,r,n,i,a){var s=r&mOe,l=$2(t),u=l.length,h=$2(e),f=h.length;if(u!=f&&!s)return!1;for(var d=u;d--;){var p=l[d];if(!(s?p in e:yOe.call(e,p)))return!1}var m=a.get(t),g=a.get(e);if(m&&g)return m==e&&g==t;var y=!0;a.set(t,e),a.set(e,t);for(var v=s;++d{"use strict";oR();mOe=1,gOe=Object.prototype,yOe=gOe.hasOwnProperty;o(vOe,"equalObjects");Mne=vOe});function TOe(t,e,r,n,i,a){var s=Bt(t),l=Bt(e),u=s?Pne:ho(t),h=l?Pne:ho(e);u=u==One?Xw:u,h=h==One?Xw:h;var f=u==Xw,d=h==Xw,p=u==h;if(p&&Dl(t)){if(!Dl(e))return!1;s=!0,f=!1}if(p&&!f)return a||(a=new dc),s||Uh(t)?Ww(t,e,r,n,i,a):Rne(t,e,u,r,n,i,a);if(!(r&xOe)){var m=f&&Bne.call(t,"__wrapped__"),g=d&&Bne.call(e,"__wrapped__");if(m||g){var y=m?t.value():t,v=g?e.value():e;return a||(a=new dc),i(y,v,r,n,a)}}return p?(a||(a=new dc),Mne(t,e,r,n,i,a)):!1}var xOe,One,Pne,Xw,bOe,Bne,Fne,$ne=N(()=>{"use strict";c2();pR();Nne();Ine();ip();Yn();gm();d2();xOe=1,One="[object Arguments]",Pne="[object Array]",Xw="[object Object]",bOe=Object.prototype,Bne=bOe.hasOwnProperty;o(TOe,"baseIsEqualDeep");Fne=TOe});function zne(t,e,r,n,i){return t===e?!0:t==null||e==null||!ai(t)&&!ai(e)?t!==t&&e!==e:Fne(t,e,r,n,zne,i)}var jw,gR=N(()=>{"use strict";$ne();Oo();o(zne,"baseIsEqual");jw=zne});function EOe(t,e,r,n){var i=r.length,a=i,s=!n;if(t==null)return!a;for(t=Object(t);i--;){var l=r[i];if(s&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++i{"use strict";c2();gR();wOe=1,kOe=2;o(EOe,"baseIsMatch");Gne=EOe});function SOe(t){return t===t&&!Sn(t)}var Kw,yR=N(()=>{"use strict";oo();o(SOe,"isStrictComparable");Kw=SOe});function COe(t){for(var e=qr(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,Kw(i)]}return e}var Une,Hne=N(()=>{"use strict";yR();Sc();o(COe,"getMatchData");Une=COe});function AOe(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var Qw,vR=N(()=>{"use strict";o(AOe,"matchesStrictComparable");Qw=AOe});function _Oe(t){var e=Une(t);return e.length==1&&e[0][2]?Qw(e[0][0],e[0][1]):function(r){return r===t||Gne(r,t,e)}}var qne,Wne=N(()=>{"use strict";Vne();Hne();vR();o(_Oe,"baseMatches");qne=_Oe});function DOe(t,e){return t!=null&&e in Object(t)}var Yne,Xne=N(()=>{"use strict";o(DOe,"baseHasIn");Yne=DOe});function LOe(t,e,r){e=rf(e,t);for(var n=-1,i=e.length,a=!1;++n{"use strict";B2();pm();Yn();m2();wT();Nm();o(LOe,"hasPath");Zw=LOe});function ROe(t,e){return t!=null&&Zw(t,e,Yne)}var Jw,bR=N(()=>{"use strict";Xne();xR();o(ROe,"hasIn");Jw=ROe});function IOe(t,e){return Rm(t)&&Kw(e)?Qw(Cc(t),e):function(r){var n=kre(r,t);return n===void 0&&n===e?Jw(r,t):jw(e,n,NOe|MOe)}}var NOe,MOe,jne,Kne=N(()=>{"use strict";gR();Ere();bR();Aw();yR();vR();Nm();NOe=1,MOe=2;o(IOe,"baseMatchesProperty");jne=IOe});function OOe(t){return function(e){return e?.[t]}}var ek,TR=N(()=>{"use strict";o(OOe,"baseProperty");ek=OOe});function POe(t){return function(e){return nf(e,t)}}var Qne,Zne=N(()=>{"use strict";F2();o(POe,"basePropertyDeep");Qne=POe});function BOe(t){return Rm(t)?ek(Cc(t)):Qne(t)}var Jne,eie=N(()=>{"use strict";TR();Zne();Aw();Nm();o(BOe,"property");Jne=BOe});function FOe(t){return typeof t=="function"?t:t==null?Qi:typeof t=="object"?Bt(t)?jne(t[0],t[1]):qne(t):Jne(t)}var vn,ss=N(()=>{"use strict";Wne();Kne();Ru();Yn();eie();o(FOe,"baseIteratee");vn=FOe});function $Oe(t,e,r,n){for(var i=-1,a=t==null?0:t.length;++i{"use strict";o($Oe,"arrayAggregator");tie=$Oe});function zOe(t,e){return t&&cm(t,e,qr)}var zm,tk=N(()=>{"use strict";pT();Sc();o(zOe,"baseForOwn");zm=zOe});function GOe(t,e){return function(r,n){if(r==null)return r;if(!fi(r))return t(r,n);for(var i=r.length,a=e?i:-1,s=Object(r);(e?a--:++a{"use strict";Po();o(GOe,"createBaseEach");nie=GOe});var VOe,zs,sf=N(()=>{"use strict";tk();iie();VOe=nie(zm),zs=VOe});function UOe(t,e,r,n){return zs(t,function(i,a,s){e(n,i,r(i),s)}),n}var aie,sie=N(()=>{"use strict";sf();o(UOe,"baseAggregator");aie=UOe});function HOe(t,e){return function(r,n){var i=Bt(r)?tie:aie,a=e?e():{};return i(r,t,vn(n,2),a)}}var oie,lie=N(()=>{"use strict";rie();sie();ss();Yn();o(HOe,"createAggregator");oie=HOe});var qOe,rk,cie=N(()=>{"use strict";Mo();qOe=o(function(){return hi.Date.now()},"now"),rk=qOe});var uie,WOe,YOe,of,hie=N(()=>{"use strict";vm();zd();qd();qh();uie=Object.prototype,WOe=uie.hasOwnProperty,YOe=yc(function(t,e){t=Object(t);var r=-1,n=e.length,i=n>2?e[2]:void 0;for(i&&lo(e[0],e[1],i)&&(n=1);++r{"use strict";o(XOe,"arrayIncludesWith");nk=XOe});function KOe(t,e,r,n){var i=-1,a=Sw,s=!0,l=t.length,u=[],h=e.length;if(!l)return u;r&&(e=$s(e,Bo(r))),n?(a=nk,s=!1):e.length>=jOe&&(a=Fm,s=!1,e=new Bm(e));e:for(;++i{"use strict";Uw();tR();wR();rp();Ud();qw();jOe=200;o(KOe,"baseDifference");fie=KOe});var QOe,lf,pie=N(()=>{"use strict";die();Im();vm();kT();QOe=yc(function(t,e){return Vd(t)?fie(t,Ac(e,1,Vd,!0)):[]}),lf=QOe});function ZOe(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}var ma,mie=N(()=>{"use strict";o(ZOe,"last");ma=ZOe});function JOe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:Ec(e),Rw(t,e<0?0:e,n)):[]}var yi,gie=N(()=>{"use strict";nR();_m();o(JOe,"drop");yi=JOe});function ePe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:Ec(e),e=n-e,Rw(t,0,e<0?0:e)):[]}var Bu,yie=N(()=>{"use strict";nR();_m();o(ePe,"dropRight");Bu=ePe});function tPe(t){return typeof t=="function"?t:Qi}var Gm,ik=N(()=>{"use strict";Ru();o(tPe,"castFunction");Gm=tPe});function rPe(t,e){var r=Bt(t)?ww:zs;return r(t,Gm(e))}var Ae,ak=N(()=>{"use strict";J9();sf();ik();Yn();o(rPe,"forEach");Ae=rPe});var vie=N(()=>{"use strict";ak()});function nPe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(nPe,"arrayEvery");xie=nPe});function iPe(t,e){var r=!0;return zs(t,function(n,i,a){return r=!!e(n,i,a),r}),r}var Tie,wie=N(()=>{"use strict";sf();o(iPe,"baseEvery");Tie=iPe});function aPe(t,e,r){var n=Bt(t)?xie:Tie;return r&&lo(t,e,r)&&(e=void 0),n(t,vn(e,3))}var Pa,kie=N(()=>{"use strict";bie();wie();ss();Yn();qd();o(aPe,"every");Pa=aPe});function sPe(t,e){var r=[];return zs(t,function(n,i,a){e(n,i,a)&&r.push(n)}),r}var sk,kR=N(()=>{"use strict";sf();o(sPe,"baseFilter");sk=sPe});function oPe(t,e){var r=Bt(t)?Om:sk;return r(t,vn(e,3))}var Zr,ER=N(()=>{"use strict";Nw();kR();ss();Yn();o(oPe,"filter");Zr=oPe});function lPe(t){return function(e,r,n){var i=Object(e);if(!fi(e)){var a=vn(r,3);e=qr(e),r=o(function(l){return a(i[l],l,i)},"predicate")}var s=t(e,r,n);return s>-1?i[a?e[s]:s]:void 0}}var Eie,Sie=N(()=>{"use strict";ss();Po();Sc();o(lPe,"createFind");Eie=lPe});function uPe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:Ec(r);return i<0&&(i=cPe(n+i,0)),kw(t,vn(e,3),i)}var cPe,Cie,Aie=N(()=>{"use strict";eR();ss();_m();cPe=Math.max;o(uPe,"findIndex");Cie=uPe});var hPe,os,_ie=N(()=>{"use strict";Sie();Aie();hPe=Eie(Cie),os=hPe});function fPe(t){return t&&t.length?t[0]:void 0}var ea,Die=N(()=>{"use strict";o(fPe,"head");ea=fPe});var Lie=N(()=>{"use strict";Die()});function dPe(t,e){var r=-1,n=fi(t)?Array(t.length):[];return zs(t,function(i,a,s){n[++r]=e(i,a,s)}),n}var ok,SR=N(()=>{"use strict";sf();Po();o(dPe,"baseMap");ok=dPe});function pPe(t,e){var r=Bt(t)?$s:ok;return r(t,vn(e,3))}var rt,Vm=N(()=>{"use strict";rp();ss();SR();Yn();o(pPe,"map");rt=pPe});function mPe(t,e){return Ac(rt(t,e),1)}var ga,CR=N(()=>{"use strict";Im();Vm();o(mPe,"flatMap");ga=mPe});function gPe(t,e){return t==null?t:cm(t,Gm(e),Rs)}var AR,Rie=N(()=>{"use strict";pT();ik();qh();o(gPe,"forIn");AR=gPe});function yPe(t,e){return t&&zm(t,Gm(e))}var _R,Nie=N(()=>{"use strict";tk();ik();o(yPe,"forOwn");_R=yPe});var vPe,xPe,bPe,DR,Mie=N(()=>{"use strict";lm();lie();vPe=Object.prototype,xPe=vPe.hasOwnProperty,bPe=oie(function(t,e,r){xPe.call(t,r)?t[r].push(e):pc(t,r,[e])}),DR=bPe});function TPe(t,e){return t>e}var Iie,Oie=N(()=>{"use strict";o(TPe,"baseGt");Iie=TPe});function EPe(t,e){return t!=null&&kPe.call(t,e)}var wPe,kPe,Pie,Bie=N(()=>{"use strict";wPe=Object.prototype,kPe=wPe.hasOwnProperty;o(EPe,"baseHas");Pie=EPe});function SPe(t,e){return t!=null&&Zw(t,e,Pie)}var Ft,Fie=N(()=>{"use strict";Bie();xR();o(SPe,"has");Ft=SPe});function APe(t){return typeof t=="string"||!Bt(t)&&ai(t)&&ha(t)==CPe}var CPe,xi,lk=N(()=>{"use strict";_u();Yn();Oo();CPe="[object String]";o(APe,"isString");xi=APe});function _Pe(t,e){return $s(e,function(r){return t[r]})}var $ie,zie=N(()=>{"use strict";rp();o(_Pe,"baseValues");$ie=_Pe});function DPe(t){return t==null?[]:$ie(t,qr(t))}var kr,LR=N(()=>{"use strict";zie();Sc();o(DPe,"values");kr=DPe});function RPe(t,e,r,n){t=fi(t)?t:kr(t),r=r&&!n?Ec(r):0;var i=t.length;return r<0&&(r=LPe(i+r,0)),xi(t)?r<=i&&t.indexOf(e,r)>-1:!!i&&Dm(t,e,r)>-1}var LPe,jn,Gie=N(()=>{"use strict";Ew();Po();lk();_m();LR();LPe=Math.max;o(RPe,"includes");jn=RPe});function MPe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:Ec(r);return i<0&&(i=NPe(n+i,0)),Dm(t,e,i)}var NPe,ck,Vie=N(()=>{"use strict";Ew();_m();NPe=Math.max;o(MPe,"indexOf");ck=MPe});function FPe(t){if(t==null)return!0;if(fi(t)&&(Bt(t)||typeof t=="string"||typeof t.splice=="function"||Dl(t)||Uh(t)||_l(t)))return!t.length;var e=ho(t);if(e==IPe||e==OPe)return!t.size;if(mc(t))return!Lm(t).length;for(var r in t)if(BPe.call(t,r))return!1;return!0}var IPe,OPe,PPe,BPe,mr,uk=N(()=>{"use strict";Cw();ip();pm();Yn();Po();gm();dm();d2();IPe="[object Map]",OPe="[object Set]",PPe=Object.prototype,BPe=PPe.hasOwnProperty;o(FPe,"isEmpty");mr=FPe});function zPe(t){return ai(t)&&ha(t)==$Pe}var $Pe,Uie,Hie=N(()=>{"use strict";_u();Oo();$Pe="[object RegExp]";o(zPe,"baseIsRegExp");Uie=zPe});var qie,GPe,Uo,Wie=N(()=>{"use strict";Hie();Ud();f2();qie=Fo&&Fo.isRegExp,GPe=qie?Bo(qie):Uie,Uo=GPe});function VPe(t){return t===void 0}var xr,Yie=N(()=>{"use strict";o(VPe,"isUndefined");xr=VPe});function UPe(t,e){return t{"use strict";o(UPe,"baseLt");hk=UPe});function HPe(t,e){var r={};return e=vn(e,3),zm(t,function(n,i,a){pc(r,i,e(n,i,a))}),r}var ap,Xie=N(()=>{"use strict";lm();tk();ss();o(HPe,"mapValues");ap=HPe});function qPe(t,e,r){for(var n=-1,i=t.length;++n{"use strict";tp();o(qPe,"baseExtremum");Um=qPe});function WPe(t){return t&&t.length?Um(t,Qi,Iie):void 0}var Gs,jie=N(()=>{"use strict";fk();Oie();Ru();o(WPe,"max");Gs=WPe});function YPe(t){return t&&t.length?Um(t,Qi,hk):void 0}var Rl,NR=N(()=>{"use strict";fk();RR();Ru();o(YPe,"min");Rl=YPe});function XPe(t,e){return t&&t.length?Um(t,vn(e,2),hk):void 0}var sp,Kie=N(()=>{"use strict";fk();ss();RR();o(XPe,"minBy");sp=XPe});function KPe(t){if(typeof t!="function")throw new TypeError(jPe);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}var jPe,Qie,Zie=N(()=>{"use strict";jPe="Expected a function";o(KPe,"negate");Qie=KPe});function QPe(t,e,r,n){if(!Sn(t))return t;e=rf(e,t);for(var i=-1,a=e.length,s=a-1,l=t;l!=null&&++i{"use strict";ym();B2();m2();oo();Nm();o(QPe,"baseSet");Jie=QPe});function ZPe(t,e,r){for(var n=-1,i=e.length,a={};++n{"use strict";F2();eae();B2();o(ZPe,"basePickBy");dk=ZPe});function JPe(t,e){if(t==null)return{};var r=$s(Bw(t),function(n){return[n]});return e=vn(e),dk(t,r,function(n,i){return e(n,i[0])})}var Vs,tae=N(()=>{"use strict";rp();ss();MR();lR();o(JPe,"pickBy");Vs=JPe});function eBe(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var rae,nae=N(()=>{"use strict";o(eBe,"baseSortBy");rae=eBe});function tBe(t,e){if(t!==e){var r=t!==void 0,n=t===null,i=t===t,a=uo(t),s=e!==void 0,l=e===null,u=e===e,h=uo(e);if(!l&&!h&&!a&&t>e||a&&s&&u&&!l&&!h||n&&s&&u||!r&&u||!i)return 1;if(!n&&!a&&!h&&t{"use strict";tp();o(tBe,"compareAscending");iae=tBe});function rBe(t,e,r){for(var n=-1,i=t.criteria,a=e.criteria,s=i.length,l=r.length;++n=l)return u;var h=r[n];return u*(h=="desc"?-1:1)}}return t.index-e.index}var sae,oae=N(()=>{"use strict";aae();o(rBe,"compareMultiple");sae=rBe});function nBe(t,e,r){e.length?e=$s(e,function(a){return Bt(a)?function(s){return nf(s,a.length===1?a[0]:a)}:a}):e=[Qi];var n=-1;e=$s(e,Bo(vn));var i=ok(t,function(a,s,l){var u=$s(e,function(h){return h(a)});return{criteria:u,index:++n,value:a}});return rae(i,function(a,s){return sae(a,s,r)})}var lae,cae=N(()=>{"use strict";rp();F2();ss();SR();nae();Ud();oae();Ru();Yn();o(nBe,"baseOrderBy");lae=nBe});var iBe,uae,hae=N(()=>{"use strict";TR();iBe=ek("length"),uae=iBe});function gBe(t){for(var e=fae.lastIndex=0;fae.test(t);)++e;return e}var dae,aBe,sBe,oBe,lBe,cBe,uBe,IR,OR,hBe,pae,mae,gae,fBe,yae,vae,dBe,pBe,mBe,fae,xae,bae=N(()=>{"use strict";dae="\\ud800-\\udfff",aBe="\\u0300-\\u036f",sBe="\\ufe20-\\ufe2f",oBe="\\u20d0-\\u20ff",lBe=aBe+sBe+oBe,cBe="\\ufe0e\\ufe0f",uBe="["+dae+"]",IR="["+lBe+"]",OR="\\ud83c[\\udffb-\\udfff]",hBe="(?:"+IR+"|"+OR+")",pae="[^"+dae+"]",mae="(?:\\ud83c[\\udde6-\\uddff]){2}",gae="[\\ud800-\\udbff][\\udc00-\\udfff]",fBe="\\u200d",yae=hBe+"?",vae="["+cBe+"]?",dBe="(?:"+fBe+"(?:"+[pae,mae,gae].join("|")+")"+vae+yae+")*",pBe=vae+yae+dBe,mBe="(?:"+[pae+IR+"?",IR,mae,gae,uBe].join("|")+")",fae=RegExp(OR+"(?="+OR+")|"+mBe+pBe,"g");o(gBe,"unicodeSize");xae=gBe});function yBe(t){return Rre(t)?xae(t):uae(t)}var Tae,wae=N(()=>{"use strict";hae();Nre();bae();o(yBe,"stringSize");Tae=yBe});function vBe(t,e){return dk(t,e,function(r,n){return Jw(t,n)})}var kae,Eae=N(()=>{"use strict";MR();bR();o(vBe,"basePick");kae=vBe});var xBe,op,Sae=N(()=>{"use strict";Eae();Lre();xBe=Dre(function(t,e){return t==null?{}:kae(t,e)}),op=xBe});function wBe(t,e,r,n){for(var i=-1,a=TBe(bBe((e-t)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=t,t+=r;return s}var bBe,TBe,Cae,Aae=N(()=>{"use strict";bBe=Math.ceil,TBe=Math.max;o(wBe,"baseRange");Cae=wBe});function kBe(t){return function(e,r,n){return n&&typeof n!="number"&&lo(e,r,n)&&(r=n=void 0),e=Am(e),r===void 0?(r=e,e=0):r=Am(r),n=n===void 0?e{"use strict";Aae();qd();Q9();o(kBe,"createRange");_ae=kBe});var EBe,Ho,Lae=N(()=>{"use strict";Dae();EBe=_ae(),Ho=EBe});function SBe(t,e,r,n,i){return i(t,function(a,s,l){r=n?(n=!1,a):e(r,a,s,l)}),r}var Rae,Nae=N(()=>{"use strict";o(SBe,"baseReduce");Rae=SBe});function CBe(t,e,r){var n=Bt(t)?Mre:Rae,i=arguments.length<3;return n(t,vn(e,4),r,i,zs)}var Jr,PR=N(()=>{"use strict";Ire();sf();ss();Nae();Yn();o(CBe,"reduce");Jr=CBe});function ABe(t,e){var r=Bt(t)?Om:sk;return r(t,Qie(vn(e,3)))}var cf,Mae=N(()=>{"use strict";Nw();kR();ss();Yn();Zie();o(ABe,"reject");cf=ABe});function LBe(t){if(t==null)return 0;if(fi(t))return xi(t)?Tae(t):t.length;var e=ho(t);return e==_Be||e==DBe?t.size:Lm(t).length}var _Be,DBe,BR,Iae=N(()=>{"use strict";Cw();ip();Po();lk();wae();_Be="[object Map]",DBe="[object Set]";o(LBe,"size");BR=LBe});function RBe(t,e){var r;return zs(t,function(n,i,a){return r=e(n,i,a),!r}),!!r}var Oae,Pae=N(()=>{"use strict";sf();o(RBe,"baseSome");Oae=RBe});function NBe(t,e,r){var n=Bt(t)?Hw:Oae;return r&&lo(t,e,r)&&(e=void 0),n(t,vn(e,3))}var z2,Bae=N(()=>{"use strict";dR();ss();Pae();Yn();qd();o(NBe,"some");z2=NBe});var MBe,Dc,Fae=N(()=>{"use strict";Im();cae();vm();qd();MBe=yc(function(t,e){if(t==null)return[];var r=e.length;return r>1&&lo(t,e[0],e[1])?e=[]:r>2&&lo(e[0],e[1],e[2])&&(e=[e[0]]),lae(t,Ac(e,1),[])}),Dc=MBe});var IBe,OBe,$ae,zae=N(()=>{"use strict";cR();Z9();Yw();IBe=1/0,OBe=af&&1/$m(new af([,-0]))[1]==IBe?function(t){return new af(t)}:si,$ae=OBe});function BBe(t,e,r){var n=-1,i=Sw,a=t.length,s=!0,l=[],u=l;if(r)s=!1,i=nk;else if(a>=PBe){var h=e?null:$ae(t);if(h)return $m(h);s=!1,i=Fm,u=new Bm}else u=e?[]:l;e:for(;++n{"use strict";Uw();tR();wR();qw();zae();Yw();PBe=200;o(BBe,"baseUniq");Hm=BBe});var FBe,FR,Gae=N(()=>{"use strict";Im();vm();pk();kT();FBe=yc(function(t){return Hm(Ac(t,1,Vd,!0))}),FR=FBe});function $Be(t){return t&&t.length?Hm(t):[]}var qm,Vae=N(()=>{"use strict";pk();o($Be,"uniq");qm=$Be});function zBe(t,e){return t&&t.length?Hm(t,vn(e,2)):[]}var Uae,Hae=N(()=>{"use strict";ss();pk();o(zBe,"uniqBy");Uae=zBe});function VBe(t){var e=++GBe;return _w(t)+e}var GBe,lp,qae=N(()=>{"use strict";rR();GBe=0;o(VBe,"uniqueId");lp=VBe});function UBe(t,e,r){for(var n=-1,i=t.length,a=e.length,s={};++n{"use strict";o(UBe,"baseZipObject");Wae=UBe});function HBe(t,e){return Wae(t||[],e||[],gc)}var mk,Xae=N(()=>{"use strict";ym();Yae();o(HBe,"zipObject");mk=HBe});var Yt=N(()=>{"use strict";vre();hR();wne();kne();NL();hie();pie();gie();yie();vie();kie();ER();_ie();Lie();CR();Lw();ak();Rie();Nie();Mie();Fie();Ru();Gie();Vie();Yn();uk();i2();oo();Wie();lk();Yie();Sc();mie();Vm();Xie();jie();OL();NR();Kie();Z9();cie();Sae();tae();Lae();PR();Mae();Iae();Bae();Fae();Gae();Vae();qae();LR();Xae();});function Kae(t,e){t[e]?t[e]++:t[e]=1}function Qae(t,e){--t[e]||delete t[e]}function G2(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}return i+jae+a+jae+(xr(n)?qBe:n)}function WBe(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}var l={v:i,w:a};return n&&(l.name=n),l}function $R(t,e){return G2(t,e.v,e.w,e.name)}var qBe,cp,jae,cn,gk=N(()=>{"use strict";Yt();qBe="\0",cp="\0",jae="",cn=class{static{o(this,"Graph")}constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,"directed")?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,"multigraph")?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,"compound")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=Ns(void 0),this._defaultEdgeLabelFn=Ns(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[cp]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return Si(e)||(e=Ns(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return qr(this._nodes)}sources(){var e=this;return Zr(this.nodes(),function(r){return mr(e._in[r])})}sinks(){var e=this;return Zr(this.nodes(),function(r){return mr(e._out[r])})}setNodes(e,r){var n=arguments,i=this;return Ae(e,function(a){n.length>1?i.setNode(a,r):i.setNode(a)}),this}setNode(e,r){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=cp,this._children[e]={},this._children[cp][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var r=o(n=>this.removeEdge(this._edgeObjs[n]),"removeEdge");delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],Ae(this.children(e),n=>{this.setParent(n)}),delete this._children[e]),Ae(qr(this._in[e]),r),delete this._in[e],delete this._preds[e],Ae(qr(this._out[e]),r),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(xr(r))r=cp;else{r+="";for(var n=r;!xr(n);n=this.parent(n))if(n===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==cp)return r}}children(e){if(xr(e)&&(e=cp),this._isCompound){var r=this._children[e];if(r)return qr(r)}else{if(e===cp)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return qr(r)}successors(e){var r=this._sucs[e];if(r)return qr(r)}neighbors(e){var r=this.predecessors(e);if(r)return FR(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;Ae(this._nodes,function(s,l){e(l)&&r.setNode(l,s)}),Ae(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,n.edge(s))});var i={};function a(s){var l=n.parent(s);return l===void 0||r.hasNode(l)?(i[s]=l,l):l in i?i[l]:a(l)}return o(a,"findParent"),this._isCompound&&Ae(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(e){return Si(e)||(e=Ns(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return kr(this._edgeObjs)}setPath(e,r){var n=this,i=arguments;return Jr(e,function(a,s){return i.length>1?n.setEdge(a,s,r):n.setEdge(a,s),s}),this}setEdge(){var e,r,n,i,a=!1,s=arguments[0];typeof s=="object"&&s!==null&&"v"in s?(e=s.v,r=s.w,n=s.name,arguments.length===2&&(i=arguments[1],a=!0)):(e=s,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),e=""+e,r=""+r,xr(n)||(n=""+n);var l=G2(this._isDirected,e,r,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,l))return a&&(this._edgeLabels[l]=i),this;if(!xr(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[l]=a?i:this._defaultEdgeLabelFn(e,r,n);var u=WBe(this._isDirected,e,r,n);return e=u.v,r=u.w,Object.freeze(u),this._edgeObjs[l]=u,Kae(this._preds[r],e),Kae(this._sucs[e],r),this._in[r][l]=u,this._out[e][l]=u,this._edgeCount++,this}edge(e,r,n){var i=arguments.length===1?$R(this._isDirected,arguments[0]):G2(this._isDirected,e,r,n);return this._edgeLabels[i]}hasEdge(e,r,n){var i=arguments.length===1?$R(this._isDirected,arguments[0]):G2(this._isDirected,e,r,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(e,r,n){var i=arguments.length===1?$R(this._isDirected,arguments[0]):G2(this._isDirected,e,r,n),a=this._edgeObjs[i];return a&&(e=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],Qae(this._preds[r],e),Qae(this._sucs[e],r),delete this._in[r][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,r){var n=this._in[e];if(n){var i=kr(n);return r?Zr(i,function(a){return a.v===r}):i}}outEdges(e,r){var n=this._out[e];if(n){var i=kr(n);return r?Zr(i,function(a){return a.w===r}):i}}nodeEdges(e,r){var n=this.inEdges(e,r);if(n)return n.concat(this.outEdges(e,r))}};cn.prototype._nodeCount=0;cn.prototype._edgeCount=0;o(Kae,"incrementOrInitEntry");o(Qae,"decrementOrRemoveEntry");o(G2,"edgeArgsToId");o(WBe,"edgeArgsToObj");o($R,"edgeObjToId")});var qo=N(()=>{"use strict";gk()});function Zae(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function YBe(t,e){if(t!=="_next"&&t!=="_prev")return e}var vk,Jae=N(()=>{"use strict";vk=class{static{o(this,"List")}constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return Zae(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&Zae(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,n=r._prev;n!==r;)e.push(JSON.stringify(n,YBe)),n=n._prev;return"["+e.join(", ")+"]"}};o(Zae,"unlink");o(YBe,"filterOutLinks")});function ese(t,e){if(t.nodeCount()<=1)return[];var r=KBe(t,e||XBe),n=jBe(r.graph,r.buckets,r.zeroIdx);return Qr(rt(n,function(i){return t.outEdges(i.v,i.w)}))}function jBe(t,e,r){for(var n=[],i=e[e.length-1],a=e[0],s;t.nodeCount();){for(;s=a.dequeue();)zR(t,e,r,s);for(;s=i.dequeue();)zR(t,e,r,s);if(t.nodeCount()){for(var l=e.length-2;l>0;--l)if(s=e[l].dequeue(),s){n=n.concat(zR(t,e,r,s,!0));break}}}return n}function zR(t,e,r,n,i){var a=i?[]:void 0;return Ae(t.inEdges(n.v),function(s){var l=t.edge(s),u=t.node(s.v);i&&a.push({v:s.v,w:s.w}),u.out-=l,GR(e,r,u)}),Ae(t.outEdges(n.v),function(s){var l=t.edge(s),u=s.w,h=t.node(u);h.in-=l,GR(e,r,h)}),t.removeNode(n.v),a}function KBe(t,e){var r=new cn,n=0,i=0;Ae(t.nodes(),function(l){r.setNode(l,{v:l,in:0,out:0})}),Ae(t.edges(),function(l){var u=r.edge(l.v,l.w)||0,h=e(l),f=u+h;r.setEdge(l.v,l.w,f),i=Math.max(i,r.node(l.v).out+=h),n=Math.max(n,r.node(l.w).in+=h)});var a=Ho(i+n+3).map(function(){return new vk}),s=n+1;return Ae(r.nodes(),function(l){GR(a,s,r.node(l))}),{graph:r,buckets:a,zeroIdx:s}}function GR(t,e,r){r.out?r.in?t[r.out-r.in+e].enqueue(r):t[t.length-1].enqueue(r):t[0].enqueue(r)}var XBe,tse=N(()=>{"use strict";Yt();qo();Jae();XBe=Ns(1);o(ese,"greedyFAS");o(jBe,"doGreedyFAS");o(zR,"removeNode");o(KBe,"buildState");o(GR,"assignBucket")});function rse(t){var e=t.graph().acyclicer==="greedy"?ese(t,r(t)):QBe(t);Ae(e,function(n){var i=t.edge(n);t.removeEdge(n),i.forwardName=n.name,i.reversed=!0,t.setEdge(n.w,n.v,i,lp("rev"))});function r(n){return function(i){return n.edge(i).weight}}o(r,"weightFn")}function QBe(t){var e=[],r={},n={};function i(a){Object.prototype.hasOwnProperty.call(n,a)||(n[a]=!0,r[a]=!0,Ae(t.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?e.push(s):i(s.w)}),delete r[a])}return o(i,"dfs"),Ae(t.nodes(),i),e}function nse(t){Ae(t.edges(),function(e){var r=t.edge(e);if(r.reversed){t.removeEdge(e);var n=r.forwardName;delete r.reversed,delete r.forwardName,t.setEdge(e.w,e.v,r,n)}})}var VR=N(()=>{"use strict";Yt();tse();o(rse,"run");o(QBe,"dfsFAS");o(nse,"undo")});function Lc(t,e,r,n){var i;do i=lp(n);while(t.hasNode(i));return r.dummy=e,t.setNode(i,r),i}function ase(t){var e=new cn().setGraph(t.graph());return Ae(t.nodes(),function(r){e.setNode(r,t.node(r))}),Ae(t.edges(),function(r){var n=e.edge(r.v,r.w)||{weight:0,minlen:1},i=t.edge(r);e.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),e}function xk(t){var e=new cn({multigraph:t.isMultigraph()}).setGraph(t.graph());return Ae(t.nodes(),function(r){t.children(r).length||e.setNode(r,t.node(r))}),Ae(t.edges(),function(r){e.setEdge(r,t.edge(r))}),e}function UR(t,e){var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=l*i/a,h=l):(i<0&&(s=-s),u=s,h=s*a/i),{x:r+u,y:n+h}}function uf(t){var e=rt(Ho(qR(t)+1),function(){return[]});return Ae(t.nodes(),function(r){var n=t.node(r),i=n.rank;xr(i)||(e[i][n.order]=r)}),e}function sse(t){var e=Rl(rt(t.nodes(),function(r){return t.node(r).rank}));Ae(t.nodes(),function(r){var n=t.node(r);Ft(n,"rank")&&(n.rank-=e)})}function ose(t){var e=Rl(rt(t.nodes(),function(a){return t.node(a).rank})),r=[];Ae(t.nodes(),function(a){var s=t.node(a).rank-e;r[s]||(r[s]=[]),r[s].push(a)});var n=0,i=t.graph().nodeRankFactor;Ae(r,function(a,s){xr(a)&&s%i!==0?--n:n&&Ae(a,function(l){t.node(l).rank+=n})})}function HR(t,e,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),Lc(t,"border",i,e)}function qR(t){return Gs(rt(t.nodes(),function(e){var r=t.node(e).rank;if(!xr(r))return r}))}function lse(t,e){var r={lhs:[],rhs:[]};return Ae(t,function(n){e(n)?r.lhs.push(n):r.rhs.push(n)}),r}function cse(t,e){var r=rk();try{return e()}finally{console.log(t+" time: "+(rk()-r)+"ms")}}function use(t,e){return e()}var Rc=N(()=>{"use strict";Yt();qo();o(Lc,"addDummyNode");o(ase,"simplify");o(xk,"asNonCompoundGraph");o(UR,"intersectRect");o(uf,"buildLayerMatrix");o(sse,"normalizeRanks");o(ose,"removeEmptyRanks");o(HR,"addBorderNode");o(qR,"maxRank");o(lse,"partition");o(cse,"time");o(use,"notime")});function fse(t){function e(r){var n=t.children(r),i=t.node(r);if(n.length&&Ae(n,e),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,s=i.maxRank+1;a{"use strict";Yt();Rc();o(fse,"addBorderSegments");o(hse,"addBorderNode")});function mse(t){var e=t.graph().rankdir.toLowerCase();(e==="lr"||e==="rl")&&yse(t)}function gse(t){var e=t.graph().rankdir.toLowerCase();(e==="bt"||e==="rl")&&ZBe(t),(e==="lr"||e==="rl")&&(JBe(t),yse(t))}function yse(t){Ae(t.nodes(),function(e){pse(t.node(e))}),Ae(t.edges(),function(e){pse(t.edge(e))})}function pse(t){var e=t.width;t.width=t.height,t.height=e}function ZBe(t){Ae(t.nodes(),function(e){WR(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,WR),Object.prototype.hasOwnProperty.call(r,"y")&&WR(r)})}function WR(t){t.y=-t.y}function JBe(t){Ae(t.nodes(),function(e){YR(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,YR),Object.prototype.hasOwnProperty.call(r,"x")&&YR(r)})}function YR(t){var e=t.x;t.x=t.y,t.y=e}var vse=N(()=>{"use strict";Yt();o(mse,"adjust");o(gse,"undo");o(yse,"swapWidthHeight");o(pse,"swapWidthHeightOne");o(ZBe,"reverseY");o(WR,"reverseYOne");o(JBe,"swapXY");o(YR,"swapXYOne")});function xse(t){t.graph().dummyChains=[],Ae(t.edges(),function(e){tFe(t,e)})}function tFe(t,e){var r=e.v,n=t.node(r).rank,i=e.w,a=t.node(i).rank,s=e.name,l=t.edge(e),u=l.labelRank;if(a!==n+1){t.removeEdge(e);var h=void 0,f,d;for(d=0,++n;n{"use strict";Yt();Rc();o(xse,"run");o(tFe,"normalizeEdge");o(bse,"undo")});function V2(t){var e={};function r(n){var i=t.node(n);if(Object.prototype.hasOwnProperty.call(e,n))return i.rank;e[n]=!0;var a=Rl(rt(t.outEdges(n),function(s){return r(s.w)-t.edge(s).minlen}));return(a===Number.POSITIVE_INFINITY||a===void 0||a===null)&&(a=0),i.rank=a}o(r,"dfs"),Ae(t.sources(),r)}function up(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}var bk=N(()=>{"use strict";Yt();o(V2,"longestPath");o(up,"slack")});function Tk(t){var e=new cn({directed:!1}),r=t.nodes()[0],n=t.nodeCount();e.setNode(r,{});for(var i,a;rFe(e,t){"use strict";Yt();qo();bk();o(Tk,"feasibleTree");o(rFe,"tightTree");o(nFe,"findMinSlackEdge");o(iFe,"shiftRanks")});var wse=N(()=>{"use strict"});var KR=N(()=>{"use strict"});var cjt,QR=N(()=>{"use strict";Yt();KR();cjt=Ns(1)});var kse=N(()=>{"use strict";QR()});var ZR=N(()=>{"use strict"});var Ese=N(()=>{"use strict";ZR()});var bjt,Sse=N(()=>{"use strict";Yt();bjt=Ns(1)});function JR(t){var e={},r={},n=[];function i(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new U2;Object.prototype.hasOwnProperty.call(e,a)||(r[a]=!0,e[a]=!0,Ae(t.predecessors(a),i),delete r[a],n.push(a))}if(o(i,"visit"),Ae(t.sinks(),i),BR(e)!==t.nodeCount())throw new U2;return n}function U2(){}var eN=N(()=>{"use strict";Yt();JR.CycleException=U2;o(JR,"topsort");o(U2,"CycleException");U2.prototype=new Error});var Cse=N(()=>{"use strict";eN()});function wk(t,e,r){Bt(e)||(e=[e]);var n=(t.isDirected()?t.successors:t.neighbors).bind(t),i=[],a={};return Ae(e,function(s){if(!t.hasNode(s))throw new Error("Graph does not have node: "+s);Ase(t,s,r==="post",a,n,i)}),i}function Ase(t,e,r,n,i,a){Object.prototype.hasOwnProperty.call(n,e)||(n[e]=!0,r||a.push(e),Ae(i(e),function(s){Ase(t,s,r,n,i,a)}),r&&a.push(e))}var tN=N(()=>{"use strict";Yt();o(wk,"dfs");o(Ase,"doDfs")});function rN(t,e){return wk(t,e,"post")}var _se=N(()=>{"use strict";tN();o(rN,"postorder")});function nN(t,e){return wk(t,e,"pre")}var Dse=N(()=>{"use strict";tN();o(nN,"preorder")});var Lse=N(()=>{"use strict";KR();gk()});var Rse=N(()=>{"use strict";wse();QR();kse();Ese();Sse();Cse();_se();Dse();Lse();ZR();eN()});function ff(t){t=ase(t),V2(t);var e=Tk(t);aN(e),iN(e,t);for(var r,n;r=Ose(e);)n=Pse(e,t,r),Bse(e,t,r,n)}function iN(t,e){var r=rN(t,t.nodes());r=r.slice(0,r.length-1),Ae(r,function(n){cFe(t,e,n)})}function cFe(t,e,r){var n=t.node(r),i=n.parent;t.edge(r,i).cutvalue=Mse(t,e,r)}function Mse(t,e,r){var n=t.node(r),i=n.parent,a=!0,s=e.edge(r,i),l=0;return s||(a=!1,s=e.edge(i,r)),l=s.weight,Ae(e.nodeEdges(r),function(u){var h=u.v===r,f=h?u.w:u.v;if(f!==i){var d=h===a,p=e.edge(u).weight;if(l+=d?p:-p,hFe(t,r,f)){var m=t.edge(r,f).cutvalue;l+=d?-m:m}}}),l}function aN(t,e){arguments.length<2&&(e=t.nodes()[0]),Ise(t,{},1,e)}function Ise(t,e,r,n,i){var a=r,s=t.node(n);return e[n]=!0,Ae(t.neighbors(n),function(l){Object.prototype.hasOwnProperty.call(e,l)||(r=Ise(t,e,r,l,n))}),s.low=a,s.lim=r++,i?s.parent=i:delete s.parent,r}function Ose(t){return os(t.edges(),function(e){return t.edge(e).cutvalue<0})}function Pse(t,e,r){var n=r.v,i=r.w;e.hasEdge(n,i)||(n=r.w,i=r.v);var a=t.node(n),s=t.node(i),l=a,u=!1;a.lim>s.lim&&(l=s,u=!0);var h=Zr(e.edges(),function(f){return u===Nse(t,t.node(f.v),l)&&u!==Nse(t,t.node(f.w),l)});return sp(h,function(f){return up(e,f)})}function Bse(t,e,r,n){var i=r.v,a=r.w;t.removeEdge(i,a),t.setEdge(n.v,n.w,{}),aN(t),iN(t,e),uFe(t,e)}function uFe(t,e){var r=os(t.nodes(),function(i){return!e.node(i).parent}),n=nN(t,r);n=n.slice(1),Ae(n,function(i){var a=t.node(i).parent,s=e.edge(i,a),l=!1;s||(s=e.edge(a,i),l=!0),e.node(i).rank=e.node(a).rank+(l?s.minlen:-s.minlen)})}function hFe(t,e,r){return t.hasEdge(e,r)}function Nse(t,e,r){return r.low<=e.lim&&e.lim<=r.lim}var Fse=N(()=>{"use strict";Yt();Rse();Rc();jR();bk();ff.initLowLimValues=aN;ff.initCutValues=iN;ff.calcCutValue=Mse;ff.leaveEdge=Ose;ff.enterEdge=Pse;ff.exchangeEdges=Bse;o(ff,"networkSimplex");o(iN,"initCutValues");o(cFe,"assignCutValue");o(Mse,"calcCutValue");o(aN,"initLowLimValues");o(Ise,"dfsAssignLowLim");o(Ose,"leaveEdge");o(Pse,"enterEdge");o(Bse,"exchangeEdges");o(uFe,"updateRanks");o(hFe,"isTreeEdge");o(Nse,"isDescendant")});function sN(t){switch(t.graph().ranker){case"network-simplex":$se(t);break;case"tight-tree":dFe(t);break;case"longest-path":fFe(t);break;default:$se(t)}}function dFe(t){V2(t),Tk(t)}function $se(t){ff(t)}var fFe,oN=N(()=>{"use strict";jR();Fse();bk();o(sN,"rank");fFe=V2;o(dFe,"tightTreeRanker");o($se,"networkSimplexRanker")});function zse(t){var e=Lc(t,"root",{},"_root"),r=pFe(t),n=Gs(kr(r))-1,i=2*n+1;t.graph().nestingRoot=e,Ae(t.edges(),function(s){t.edge(s).minlen*=i});var a=mFe(t)+1;Ae(t.children(),function(s){Gse(t,e,i,a,n,r,s)}),t.graph().nodeRankFactor=i}function Gse(t,e,r,n,i,a,s){var l=t.children(s);if(!l.length){s!==e&&t.setEdge(e,s,{weight:0,minlen:r});return}var u=HR(t,"_bt"),h=HR(t,"_bb"),f=t.node(s);t.setParent(u,s),f.borderTop=u,t.setParent(h,s),f.borderBottom=h,Ae(l,function(d){Gse(t,e,r,n,i,a,d);var p=t.node(d),m=p.borderTop?p.borderTop:d,g=p.borderBottom?p.borderBottom:d,y=p.borderTop?n:2*n,v=m!==g?1:i-a[s]+1;t.setEdge(u,m,{weight:y,minlen:v,nestingEdge:!0}),t.setEdge(g,h,{weight:y,minlen:v,nestingEdge:!0})}),t.parent(s)||t.setEdge(e,u,{weight:0,minlen:i+a[s]})}function pFe(t){var e={};function r(n,i){var a=t.children(n);a&&a.length&&Ae(a,function(s){r(s,i+1)}),e[n]=i}return o(r,"dfs"),Ae(t.children(),function(n){r(n,1)}),e}function mFe(t){return Jr(t.edges(),function(e,r){return e+t.edge(r).weight},0)}function Vse(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,Ae(t.edges(),function(r){var n=t.edge(r);n.nestingEdge&&t.removeEdge(r)})}var Use=N(()=>{"use strict";Yt();Rc();o(zse,"run");o(Gse,"dfs");o(pFe,"treeDepths");o(mFe,"sumWeights");o(Vse,"cleanup")});function Hse(t,e,r){var n={},i;Ae(r,function(a){for(var s=t.parent(a),l,u;s;){if(l=t.parent(s),l?(u=n[l],n[l]=s):(u=i,i=s),u&&u!==s){e.setEdge(u,s);return}s=l}})}var qse=N(()=>{"use strict";Yt();o(Hse,"addSubgraphConstraints")});function Wse(t,e,r){var n=yFe(t),i=new cn({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(a){return t.node(a)});return Ae(t.nodes(),function(a){var s=t.node(a),l=t.parent(a);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(i.setNode(a),i.setParent(a,l||n),Ae(t[r](a),function(u){var h=u.v===a?u.w:u.v,f=i.edge(h,a),d=xr(f)?0:f.weight;i.setEdge(h,a,{weight:t.edge(u).weight+d})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&i.setNode(a,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))}),i}function yFe(t){for(var e;t.hasNode(e=lp("_root")););return e}var Yse=N(()=>{"use strict";Yt();qo();o(Wse,"buildLayerGraph");o(yFe,"createRootNode")});function Xse(t,e){for(var r=0,n=1;n0;)f%2&&(d+=l[f+1]),f=f-1>>1,l[f]+=h.weight;u+=h.weight*d})),u}var jse=N(()=>{"use strict";Yt();o(Xse,"crossCount");o(vFe,"twoLayerCrossCount")});function Kse(t){var e={},r=Zr(t.nodes(),function(l){return!t.children(l).length}),n=Gs(rt(r,function(l){return t.node(l).rank})),i=rt(Ho(n+1),function(){return[]});function a(l){if(!Ft(e,l)){e[l]=!0;var u=t.node(l);i[u.rank].push(l),Ae(t.successors(l),a)}}o(a,"dfs");var s=Dc(r,function(l){return t.node(l).rank});return Ae(s,a),i}var Qse=N(()=>{"use strict";Yt();o(Kse,"initOrder")});function Zse(t,e){return rt(e,function(r){var n=t.inEdges(r);if(n.length){var i=Jr(n,function(a,s){var l=t.edge(s),u=t.node(s.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}var Jse=N(()=>{"use strict";Yt();o(Zse,"barycenter")});function eoe(t,e){var r={};Ae(t,function(i,a){var s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};xr(i.barycenter)||(s.barycenter=i.barycenter,s.weight=i.weight)}),Ae(e.edges(),function(i){var a=r[i.v],s=r[i.w];!xr(a)&&!xr(s)&&(s.indegree++,a.out.push(r[i.w]))});var n=Zr(r,function(i){return!i.indegree});return xFe(n)}function xFe(t){var e=[];function r(a){return function(s){s.merged||(xr(s.barycenter)||xr(a.barycenter)||s.barycenter>=a.barycenter)&&bFe(a,s)}}o(r,"handleIn");function n(a){return function(s){s.in.push(a),--s.indegree===0&&t.push(s)}}for(o(n,"handleOut");t.length;){var i=t.pop();e.push(i),Ae(i.in.reverse(),r(i)),Ae(i.out,n(i))}return rt(Zr(e,function(a){return!a.merged}),function(a){return op(a,["vs","i","barycenter","weight"])})}function bFe(t,e){var r=0,n=0;t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.vs=e.vs.concat(t.vs),t.barycenter=r/n,t.weight=n,t.i=Math.min(e.i,t.i),e.merged=!0}var toe=N(()=>{"use strict";Yt();o(eoe,"resolveConflicts");o(xFe,"doResolveConflicts");o(bFe,"mergeEntries")});function noe(t,e){var r=lse(t,function(f){return Object.prototype.hasOwnProperty.call(f,"barycenter")}),n=r.lhs,i=Dc(r.rhs,function(f){return-f.i}),a=[],s=0,l=0,u=0;n.sort(TFe(!!e)),u=roe(a,i,u),Ae(n,function(f){u+=f.vs.length,a.push(f.vs),s+=f.barycenter*f.weight,l+=f.weight,u=roe(a,i,u)});var h={vs:Qr(a)};return l&&(h.barycenter=s/l,h.weight=l),h}function roe(t,e,r){for(var n;e.length&&(n=ma(e)).i<=r;)e.pop(),t.push(n.vs),r++;return r}function TFe(t){return function(e,r){return e.barycenterr.barycenter?1:t?r.i-e.i:e.i-r.i}}var ioe=N(()=>{"use strict";Yt();Rc();o(noe,"sort");o(roe,"consumeUnsortable");o(TFe,"compareWithBias")});function lN(t,e,r,n){var i=t.children(e),a=t.node(e),s=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};s&&(i=Zr(i,function(g){return g!==s&&g!==l}));var h=Zse(t,i);Ae(h,function(g){if(t.children(g.v).length){var y=lN(t,g.v,r,n);u[g.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter")&&kFe(g,y)}});var f=eoe(h,r);wFe(f,u);var d=noe(f,n);if(s&&(d.vs=Qr([s,d.vs,l]),t.predecessors(s).length)){var p=t.node(t.predecessors(s)[0]),m=t.node(t.predecessors(l)[0]);Object.prototype.hasOwnProperty.call(d,"barycenter")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+p.order+m.order)/(d.weight+2),d.weight+=2}return d}function wFe(t,e){Ae(t,function(r){r.vs=Qr(r.vs.map(function(n){return e[n]?e[n].vs:n}))})}function kFe(t,e){xr(t.barycenter)?(t.barycenter=e.barycenter,t.weight=e.weight):(t.barycenter=(t.barycenter*t.weight+e.barycenter*e.weight)/(t.weight+e.weight),t.weight+=e.weight)}var aoe=N(()=>{"use strict";Yt();Jse();toe();ioe();o(lN,"sortSubgraph");o(wFe,"expandSubgraphs");o(kFe,"mergeBarycenters")});function loe(t){var e=qR(t),r=soe(t,Ho(1,e+1),"inEdges"),n=soe(t,Ho(e-1,-1,-1),"outEdges"),i=Kse(t);ooe(t,i);for(var a=Number.POSITIVE_INFINITY,s,l=0,u=0;u<4;++l,++u){EFe(l%2?r:n,l%4>=2),i=uf(t);var h=Xse(t,i);h{"use strict";Yt();qo();Rc();qse();Yse();jse();Qse();aoe();o(loe,"order");o(soe,"buildLayerGraphs");o(EFe,"sweepLayerGraphs");o(ooe,"assignOrder")});function uoe(t){var e=CFe(t);Ae(t.graph().dummyChains,function(r){for(var n=t.node(r),i=n.edgeObj,a=SFe(t,e,i.v,i.w),s=a.path,l=a.lca,u=0,h=s[u],f=!0;r!==i.w;){if(n=t.node(r),f){for(;(h=s[u])!==l&&t.node(h).maxRanks||l>e[u].lim));for(h=u,u=n;(u=t.parent(u))!==h;)a.push(u);return{path:i.concat(a.reverse()),lca:h}}function CFe(t){var e={},r=0;function n(i){var a=r;Ae(t.children(i),n),e[i]={low:a,lim:r++}}return o(n,"dfs"),Ae(t.children(),n),e}var hoe=N(()=>{"use strict";Yt();o(uoe,"parentDummyChains");o(SFe,"findPath");o(CFe,"postorder")});function AFe(t,e){var r={};function n(i,a){var s=0,l=0,u=i.length,h=ma(a);return Ae(a,function(f,d){var p=DFe(t,f),m=p?t.node(p).order:u;(p||f===h)&&(Ae(a.slice(l,d+1),function(g){Ae(t.predecessors(g),function(y){var v=t.node(y),x=v.order;(xh)&&foe(r,p,f)})})}o(n,"scan");function i(a,s){var l=-1,u,h=0;return Ae(s,function(f,d){if(t.node(f).dummy==="border"){var p=t.predecessors(f);p.length&&(u=t.node(p[0]).order,n(s,h,d,l,u),h=d,l=u)}n(s,h,s.length,u,a.length)}),s}return o(i,"visitLayer"),Jr(e,i),r}function DFe(t,e){if(t.node(e).dummy)return os(t.predecessors(e),function(r){return t.node(r).dummy})}function foe(t,e,r){if(e>r){var n=e;e=r,r=n}var i=t[e];i||(t[e]=i={}),i[r]=!0}function LFe(t,e,r){if(e>r){var n=e;e=r,r=n}return!!t[e]&&Object.prototype.hasOwnProperty.call(t[e],r)}function RFe(t,e,r,n){var i={},a={},s={};return Ae(e,function(l){Ae(l,function(u,h){i[u]=u,a[u]=u,s[u]=h})}),Ae(e,function(l){var u=-1;Ae(l,function(h){var f=n(h);if(f.length){f=Dc(f,function(y){return s[y]});for(var d=(f.length-1)/2,p=Math.floor(d),m=Math.ceil(d);p<=m;++p){var g=f[p];a[h]===h&&u{"use strict";Yt();qo();Rc();o(AFe,"findType1Conflicts");o(_Fe,"findType2Conflicts");o(DFe,"findOtherInnerSegmentNode");o(foe,"addConflict");o(LFe,"hasConflict");o(RFe,"verticalAlignment");o(NFe,"horizontalCompaction");o(MFe,"buildBlockGraph");o(IFe,"findSmallestWidthAlignment");o(OFe,"alignCoordinates");o(PFe,"balance");o(doe,"positionX");o(BFe,"sep");o(FFe,"width")});function moe(t){t=xk(t),$Fe(t),_R(doe(t),function(e,r){t.node(r).x=e})}function $Fe(t){var e=uf(t),r=t.graph().ranksep,n=0;Ae(e,function(i){var a=Gs(rt(i,function(s){return t.node(s).height}));Ae(i,function(s){t.node(s).y=n+a/2}),n+=a+r})}var goe=N(()=>{"use strict";Yt();Rc();poe();o(moe,"position");o($Fe,"positionY")});function H2(t,e){var r=e&&e.debugTiming?cse:use;r("layout",()=>{var n=r(" buildLayoutGraph",()=>KFe(t));r(" runLayout",()=>zFe(n,r)),r(" updateInputGraph",()=>GFe(t,n))})}function zFe(t,e){e(" makeSpaceForEdgeLabels",()=>QFe(t)),e(" removeSelfEdges",()=>s$e(t)),e(" acyclic",()=>rse(t)),e(" nestingGraph.run",()=>zse(t)),e(" rank",()=>sN(xk(t))),e(" injectEdgeLabelProxies",()=>ZFe(t)),e(" removeEmptyRanks",()=>ose(t)),e(" nestingGraph.cleanup",()=>Vse(t)),e(" normalizeRanks",()=>sse(t)),e(" assignRankMinMax",()=>JFe(t)),e(" removeEdgeLabelProxies",()=>e$e(t)),e(" normalize.run",()=>xse(t)),e(" parentDummyChains",()=>uoe(t)),e(" addBorderSegments",()=>fse(t)),e(" order",()=>loe(t)),e(" insertSelfEdges",()=>o$e(t)),e(" adjustCoordinateSystem",()=>mse(t)),e(" position",()=>moe(t)),e(" positionSelfEdges",()=>l$e(t)),e(" removeBorderNodes",()=>a$e(t)),e(" normalize.undo",()=>bse(t)),e(" fixupEdgeLabelCoords",()=>n$e(t)),e(" undoCoordinateSystem",()=>gse(t)),e(" translateGraph",()=>t$e(t)),e(" assignNodeIntersects",()=>r$e(t)),e(" reversePoints",()=>i$e(t)),e(" acyclic.undo",()=>nse(t))}function GFe(t,e){Ae(t.nodes(),function(r){var n=t.node(r),i=e.node(r);n&&(n.x=i.x,n.y=i.y,e.children(r).length&&(n.width=i.width,n.height=i.height))}),Ae(t.edges(),function(r){var n=t.edge(r),i=e.edge(r);n.points=i.points,Object.prototype.hasOwnProperty.call(i,"x")&&(n.x=i.x,n.y=i.y)}),t.graph().width=e.graph().width,t.graph().height=e.graph().height}function KFe(t){var e=new cn({multigraph:!0,compound:!0}),r=uN(t.graph());return e.setGraph(Wh({},UFe,cN(r,VFe),op(r,HFe))),Ae(t.nodes(),function(n){var i=uN(t.node(n));e.setNode(n,of(cN(i,qFe),WFe)),e.setParent(n,t.parent(n))}),Ae(t.edges(),function(n){var i=uN(t.edge(n));e.setEdge(n,Wh({},XFe,cN(i,YFe),op(i,jFe)))}),e}function QFe(t){var e=t.graph();e.ranksep/=2,Ae(t.edges(),function(r){var n=t.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function ZFe(t){Ae(t.edges(),function(e){var r=t.edge(e);if(r.width&&r.height){var n=t.node(e.v),i=t.node(e.w),a={rank:(i.rank-n.rank)/2+n.rank,e};Lc(t,"edge-proxy",a,"_ep")}})}function JFe(t){var e=0;Ae(t.nodes(),function(r){var n=t.node(r);n.borderTop&&(n.minRank=t.node(n.borderTop).rank,n.maxRank=t.node(n.borderBottom).rank,e=Gs(e,n.maxRank))}),t.graph().maxRank=e}function e$e(t){Ae(t.nodes(),function(e){var r=t.node(e);r.dummy==="edge-proxy"&&(t.edge(r.e).labelRank=r.rank,t.removeNode(e))})}function t$e(t){var e=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,a=t.graph(),s=a.marginx||0,l=a.marginy||0;function u(h){var f=h.x,d=h.y,p=h.width,m=h.height;e=Math.min(e,f-p/2),r=Math.max(r,f+p/2),n=Math.min(n,d-m/2),i=Math.max(i,d+m/2)}o(u,"getExtremes"),Ae(t.nodes(),function(h){u(t.node(h))}),Ae(t.edges(),function(h){var f=t.edge(h);Object.prototype.hasOwnProperty.call(f,"x")&&u(f)}),e-=s,n-=l,Ae(t.nodes(),function(h){var f=t.node(h);f.x-=e,f.y-=n}),Ae(t.edges(),function(h){var f=t.edge(h);Ae(f.points,function(d){d.x-=e,d.y-=n}),Object.prototype.hasOwnProperty.call(f,"x")&&(f.x-=e),Object.prototype.hasOwnProperty.call(f,"y")&&(f.y-=n)}),a.width=r-e+s,a.height=i-n+l}function r$e(t){Ae(t.edges(),function(e){var r=t.edge(e),n=t.node(e.v),i=t.node(e.w),a,s;r.points?(a=r.points[0],s=r.points[r.points.length-1]):(r.points=[],a=i,s=n),r.points.unshift(UR(n,a)),r.points.push(UR(i,s))})}function n$e(t){Ae(t.edges(),function(e){var r=t.edge(e);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function i$e(t){Ae(t.edges(),function(e){var r=t.edge(e);r.reversed&&r.points.reverse()})}function a$e(t){Ae(t.nodes(),function(e){if(t.children(e).length){var r=t.node(e),n=t.node(r.borderTop),i=t.node(r.borderBottom),a=t.node(ma(r.borderLeft)),s=t.node(ma(r.borderRight));r.width=Math.abs(s.x-a.x),r.height=Math.abs(i.y-n.y),r.x=a.x+r.width/2,r.y=n.y+r.height/2}}),Ae(t.nodes(),function(e){t.node(e).dummy==="border"&&t.removeNode(e)})}function s$e(t){Ae(t.edges(),function(e){if(e.v===e.w){var r=t.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e,label:t.edge(e)}),t.removeEdge(e)}})}function o$e(t){var e=uf(t);Ae(e,function(r){var n=0;Ae(r,function(i,a){var s=t.node(i);s.order=a+n,Ae(s.selfEdges,function(l){Lc(t,"selfedge",{width:l.label.width,height:l.label.height,rank:s.rank,order:a+ ++n,e:l.e,label:l.label},"_se")}),delete s.selfEdges})})}function l$e(t){Ae(t.nodes(),function(e){var r=t.node(e);if(r.dummy==="selfedge"){var n=t.node(r.e.v),i=n.x+n.width/2,a=n.y,s=r.x-i,l=n.height/2;t.setEdge(r.e,r.label),t.removeNode(e),r.label.points=[{x:i+2*s/3,y:a-l},{x:i+5*s/6,y:a-l},{x:i+s,y:a},{x:i+5*s/6,y:a+l},{x:i+2*s/3,y:a+l}],r.label.x=r.x,r.label.y=r.y}})}function cN(t,e){return ap(op(t,e),Number)}function uN(t){var e={};return Ae(t,function(r,n){e[n.toLowerCase()]=r}),e}var VFe,UFe,HFe,qFe,WFe,YFe,XFe,jFe,yoe=N(()=>{"use strict";Yt();qo();dse();vse();VR();XR();oN();Use();coe();hoe();goe();Rc();o(H2,"layout");o(zFe,"runLayout");o(GFe,"updateInputGraph");VFe=["nodesep","edgesep","ranksep","marginx","marginy"],UFe={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},HFe=["acyclicer","ranker","rankdir","align"],qFe=["width","height"],WFe={width:0,height:0},YFe=["minlen","weight","width","height","labeloffset"],XFe={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},jFe=["labelpos"];o(KFe,"buildLayoutGraph");o(QFe,"makeSpaceForEdgeLabels");o(ZFe,"injectEdgeLabelProxies");o(JFe,"assignRankMinMax");o(e$e,"removeEdgeLabelProxies");o(t$e,"translateGraph");o(r$e,"assignNodeIntersects");o(n$e,"fixupEdgeLabelCoords");o(i$e,"reversePointsForReversedEdges");o(a$e,"removeBorderNodes");o(s$e,"removeSelfEdges");o(o$e,"insertSelfEdges");o(l$e,"positionSelfEdges");o(cN,"selectNumberAttrs");o(uN,"canonicalize")});var hN=N(()=>{"use strict";VR();yoe();XR();oN()});function Wo(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:c$e(t),edges:u$e(t)};return xr(t.graph())||(e.value=ln(t.graph())),e}function c$e(t){return rt(t.nodes(),function(e){var r=t.node(e),n=t.parent(e),i={v:e};return xr(r)||(i.value=r),xr(n)||(i.parent=n),i})}function u$e(t){return rt(t.edges(),function(e){var r=t.edge(e),n={v:e.v,w:e.w};return xr(e.name)||(n.name=e.name),xr(r)||(n.value=r),n})}var fN=N(()=>{"use strict";Yt();gk();o(Wo,"write");o(c$e,"writeNodes");o(u$e,"writeEdges")});var Er,hp,boe,Toe,kk,h$e,woe,koe,f$e,Wm,xoe,Eoe,Soe,Coe,Aoe,_oe=N(()=>{"use strict";pt();qo();fN();Er=new Map,hp=new Map,boe=new Map,Toe=o(()=>{hp.clear(),boe.clear(),Er.clear()},"clear"),kk=o((t,e)=>{let r=hp.get(e)||[];return X.trace("In isDescendant",e," ",t," = ",r.includes(t)),r.includes(t)},"isDescendant"),h$e=o((t,e)=>{let r=hp.get(e)||[];return X.info("Descendants of ",e," is ",r),X.info("Edge is ",t),t.v===e||t.w===e?!1:r?r.includes(t.v)||kk(t.v,e)||kk(t.w,e)||r.includes(t.w):(X.debug("Tilt, ",e,",not in descendants"),!1)},"edgeInCluster"),woe=o((t,e,r,n)=>{X.warn("Copying children of ",t,"root",n,"data",e.node(t),n);let i=e.children(t)||[];t!==n&&i.push(t),X.warn("Copying (nodes) clusterId",t,"nodes",i),i.forEach(a=>{if(e.children(a).length>0)woe(a,e,r,n);else{let s=e.node(a);X.info("cp ",a," to ",n," with parent ",t),r.setNode(a,s),n!==e.parent(a)&&(X.warn("Setting parent",a,e.parent(a)),r.setParent(a,e.parent(a))),t!==n&&a!==t?(X.debug("Setting parent",a,t),r.setParent(a,t)):(X.info("In copy ",t,"root",n,"data",e.node(t),n),X.debug("Not Setting parent for node=",a,"cluster!==rootId",t!==n,"node!==clusterId",a!==t));let l=e.edges(a);X.debug("Copying Edges",l),l.forEach(u=>{X.info("Edge",u);let h=e.edge(u.v,u.w,u.name);X.info("Edge data",h,n);try{h$e(u,n)?(X.info("Copying as ",u.v,u.w,h,u.name),r.setEdge(u.v,u.w,h,u.name),X.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]))):X.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",n," clusterId:",t)}catch(f){X.error(f)}})}X.debug("Removing node",a),e.removeNode(a)})},"copy"),koe=o((t,e)=>{let r=e.children(t),n=[...r];for(let i of r)boe.set(i,t),n=[...n,...koe(i,e)];return n},"extractDescendants"),f$e=o((t,e,r)=>{let n=t.edges().filter(u=>u.v===e||u.w===e),i=t.edges().filter(u=>u.v===r||u.w===r),a=n.map(u=>({v:u.v===e?r:u.v,w:u.w===e?e:u.w})),s=i.map(u=>({v:u.v,w:u.w}));return a.filter(u=>s.some(h=>u.v===h.v&&u.w===h.w))},"findCommonEdges"),Wm=o((t,e,r)=>{let n=e.children(t);if(X.trace("Searching children of id ",t,n),n.length<1)return t;let i;for(let a of n){let s=Wm(a,e,r),l=f$e(e,r,s);if(s)if(l.length>0)i=s;else return s}return i},"findNonClusterChild"),xoe=o(t=>!Er.has(t)||!Er.get(t).externalConnections?t:Er.has(t)?Er.get(t).id:t,"getAnchorId"),Eoe=o((t,e)=>{if(!t||e>10){X.debug("Opting out, no graph ");return}else X.debug("Opting in, graph ");t.nodes().forEach(function(r){t.children(r).length>0&&(X.warn("Cluster identified",r," Replacement id in edges: ",Wm(r,t,r)),hp.set(r,koe(r,t)),Er.set(r,{id:Wm(r,t,r),clusterData:t.node(r)}))}),t.nodes().forEach(function(r){let n=t.children(r),i=t.edges();n.length>0?(X.debug("Cluster identified",r,hp),i.forEach(a=>{let s=kk(a.v,r),l=kk(a.w,r);s^l&&(X.warn("Edge: ",a," leaves cluster ",r),X.warn("Descendants of XXX ",r,": ",hp.get(r)),Er.get(r).externalConnections=!0)})):X.debug("Not a cluster ",r,hp)});for(let r of Er.keys()){let n=Er.get(r).id,i=t.parent(n);i!==r&&Er.has(i)&&!Er.get(i).externalConnections&&(Er.get(r).id=i)}t.edges().forEach(function(r){let n=t.edge(r);X.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),X.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(t.edge(r)));let i=r.v,a=r.w;if(X.warn("Fix XXX",Er,"ids:",r.v,r.w,"Translating: ",Er.get(r.v)," --- ",Er.get(r.w)),Er.get(r.v)||Er.get(r.w)){if(X.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),i=xoe(r.v),a=xoe(r.w),t.removeEdge(r.v,r.w,r.name),i!==r.v){let s=t.parent(i);Er.get(s).externalConnections=!0,n.fromCluster=r.v}if(a!==r.w){let s=t.parent(a);Er.get(s).externalConnections=!0,n.toCluster=r.w}X.warn("Fix Replacing with XXX",i,a,r.name),t.setEdge(i,a,n,r.name)}}),X.warn("Adjusted Graph",Wo(t)),Soe(t,0),X.trace(Er)},"adjustClustersAndEdges"),Soe=o((t,e)=>{if(X.warn("extractor - ",e,Wo(t),t.children("D")),e>10){X.error("Bailing out");return}let r=t.nodes(),n=!1;for(let i of r){let a=t.children(i);n=n||a.length>0}if(!n){X.debug("Done, no node has children",t.nodes());return}X.debug("Nodes = ",r,e);for(let i of r)if(X.debug("Extracting node",i,Er,Er.has(i)&&!Er.get(i).externalConnections,!t.parent(i),t.node(i),t.children("D")," Depth ",e),!Er.has(i))X.debug("Not a cluster",i,e);else if(!Er.get(i).externalConnections&&t.children(i)&&t.children(i).length>0){X.warn("Cluster without external connections, without a parent and with children",i,e);let s=t.graph().rankdir==="TB"?"LR":"TB";Er.get(i)?.clusterData?.dir&&(s=Er.get(i).clusterData.dir,X.warn("Fixing dir",Er.get(i).clusterData.dir,s));let l=new cn({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});X.warn("Old graph before copy",Wo(t)),woe(i,t,l,i),t.setNode(i,{clusterNode:!0,id:i,clusterData:Er.get(i).clusterData,label:Er.get(i).label,graph:l}),X.warn("New graph after copy node: (",i,")",Wo(l)),X.debug("Old graph after copy",Wo(t))}else X.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!Er.get(i).externalConnections," no parent: ",!t.parent(i)," children ",t.children(i)&&t.children(i).length>0,t.children("D"),e),X.debug(Er);r=t.nodes(),X.warn("New list of nodes",r);for(let i of r){let a=t.node(i);X.warn(" Now next level",i,a),a?.clusterNode&&Soe(a.graph,e+1)}},"extractor"),Coe=o((t,e)=>{if(e.length===0)return[];let r=Object.assign([],e);return e.forEach(n=>{let i=t.children(n),a=Coe(t,i);r=[...r,...a]}),r},"sorter"),Aoe=o(t=>Coe(t,t.children()),"sortNodesByHierarchy")});var Loe={};dr(Loe,{render:()=>d$e});var Doe,d$e,Roe=N(()=>{"use strict";hN();fN();qo();K9();It();_oe();bw();cw();j9();pt();O2();Xt();Doe=o(async(t,e,r,n,i,a)=>{X.warn("Graph in recursive render:XAX",Wo(e),i);let s=e.graph().rankdir;X.trace("Dir in recursive render - dir:",s);let l=t.insert("g").attr("class","root");e.nodes()?X.info("Recursive render XXX",e.nodes()):X.info("No nodes found for",e),e.edges().length>0&&X.info("Recursive edges",e.edge(e.edges()[0]));let u=l.insert("g").attr("class","clusters"),h=l.insert("g").attr("class","edgePaths"),f=l.insert("g").attr("class","edgeLabels"),d=l.insert("g").attr("class","nodes");await Promise.all(e.nodes().map(async function(y){let v=e.node(y);if(i!==void 0){let x=JSON.parse(JSON.stringify(i.clusterData));X.trace(`Setting data for parent cluster XXX Node.id = `,y,` data=`,x.height,` -Parent cluster`,i.height),e.setNode(i.id,x),e.parent(y)||(Y.trace("Setting parent",y,i.id),e.setParent(y,i.id,x))}if(Y.info("(Insert) Node XXX"+y+": "+JSON.stringify(e.node(y))),v?.clusterNode){Y.info("Cluster identified XBX",y,v.width,e.node(y));let{ranksep:x,nodesep:b}=e.graph();v.graph.setGraph({...v.graph.graph(),ranksep:x+25,nodesep:b});let w=await Bie(d,v.graph,r,n,e.node(y),a),C=w.elem;je(v,C),v.diff=w.diff||0,Y.info("New compound node after recursive render XAX",y,"width",v.width,"height",v.height),rJ(C,v)}else e.children(y).length>0?(Y.trace("Cluster - the non recursive path XBX",y,v.id,v,v.width,"Graph:",e),Y.trace(Fm(v.id,e)),wr.set(v.id,{id:Fm(v.id,e),node:v})):(Y.trace("Node - the non recursive path XAX",y,d,e.node(y),s),await vm(d,e.node(y),{config:a,dir:s}))})),await o(async()=>{let y=e.edges().map(async function(v){let x=e.edge(v.v,v.w,v.name);Y.info("Edge "+v.v+" -> "+v.w+": "+JSON.stringify(v)),Y.info("Edge "+v.v+" -> "+v.w+": ",v," ",JSON.stringify(e.edge(v))),Y.info("Fix",wr,"ids:",v.v,v.w,"Translating: ",wr.get(v.v),wr.get(v.w)),await jw(f,x)});await Promise.all(y)},"processEdges")(),Y.info("Graph before layout:",JSON.stringify(Uo(e))),Y.info("############################################# XXX"),Y.info("### Layout ### XXX"),Y.info("############################################# XXX"),R2(e),Y.info("Graph after layout:",JSON.stringify(Uo(e)));let m=0,{subGraphTitleTotalMargin:g}=Ru(a);return await Promise.all(Oie(e).map(async function(y){let v=e.node(y);if(Y.info("Position XBX => "+y+": ("+v.x,","+v.y,") width: ",v.width," height: ",v.height),v?.clusterNode)v.y+=g,Y.info("A tainted cluster node XBX1",y,v.id,v.width,v.height,v.x,v.y,e.parent(y)),wr.get(v.id).node=v,k2(v);else if(e.children(y).length>0){Y.info("A pure cluster node XBX1",y,v.id,v.x,v.y,v.width,v.height,e.parent(y)),v.height+=g,e.node(v.parentId);let x=v?.padding/2||0,b=v?.labelBBox?.height||0,w=b-x||0;Y.debug("OffsetY",w,"labelHeight",b,"halfPadding",x),await ym(u,v),wr.get(v.id).node=v}else{let x=e.node(v.parentId);v.y+=g/2,Y.info("A regular node XBX1 - using the padding",v.id,"parent",v.parentId,v.width,v.height,v.x,v.y,"offsetY",v.offsetY,"parent",x,x?.offsetY,v),k2(v)}})),e.edges().forEach(function(y){let v=e.edge(y);Y.info("Edge "+y.v+" -> "+y.w+": "+JSON.stringify(v),v),v.points.forEach(C=>C.y+=g/2);let x=e.node(y.v);var b=e.node(y.w);let w=Qw(h,v,wr,r,x,b,n);Kw(v,w)}),e.nodes().forEach(function(y){let v=e.node(y);Y.info(y,v.type,v.diff),v.isGroup&&(m=v.diff)}),Y.warn("Returning from recursive render XAX",l,m),{elem:l,diff:m}},"recursiveRender"),uOe=o(async(t,e)=>{let r=new sn({multigraph:!0,compound:!0}).setGraph({rankdir:t.direction,nodesep:t.config?.nodeSpacing||t.config?.flowchart?.nodeSpacing||t.nodeSpacing,ranksep:t.config?.rankSpacing||t.config?.flowchart?.rankSpacing||t.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),n=e.select("g");Zw(n,t.markers,t.type,t.diagramId),nJ(),tJ(),jZ(),Die(),t.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),Y.debug("Edges:",t.edges),t.edges.forEach(a=>{if(a.start===a.end){let s=a.start,l=s+"---"+s+"---1",u=s+"---"+s+"---2",h=r.node(s);r.setNode(l,{domId:l,id:l,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(l,h.parentId),r.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(u,h.parentId);let f=structuredClone(a),d=structuredClone(a),p=structuredClone(a);f.label="",f.arrowTypeEnd="none",f.id=s+"-cyclic-special-1",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=s+"-cyclic-special-mid",p.label="",h.isGroup&&(f.fromCluster=s,p.toCluster=s),p.id=s+"-cyclic-special-2",p.arrowTypeStart="none",r.setEdge(s,l,f,s+"-cyclic-special-0"),r.setEdge(l,u,d,s+"-cyclic-special-1"),r.setEdge(u,s,p,s+"-cyc{"use strict";aJ();vt();N2={},vR=o(t=>{for(let e of t)N2[e.name]=e},"registerLayoutLoaders"),hOe=o(()=>{vR([{name:"dagre",loader:o(async()=>await Promise.resolve().then(()=>($ie(),Fie)),"loader")}])},"registerDefaultLayoutLoaders");hOe();Cc=o(async(t,e)=>{if(!(t.layoutAlgorithm in N2))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);let r=N2[t.layoutAlgorithm];return(await r.loader()).render(t,e,iJ,{algorithm:r.algorithm})},"render"),nf=o((t="",{fallback:e="dagre"}={})=>{if(t in N2)return t;if(e in N2)return Y.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm")});var Ac,fOe,dOe,$m=N(()=>{"use strict";Ei();vt();Ac=o((t,e,r,n)=>{t.attr("class",r);let{width:i,height:a,x:s,y:l}=fOe(t,e);vn(t,a,i,n);let u=dOe(s,l,i,a,e);t.attr("viewBox",u),Y.debug(`viewBox configured: ${u} with padding: ${e}`)},"setupViewPortForSVG"),fOe=o((t,e)=>{let r=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+e*2,height:r.height+e*2,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),dOe=o((t,e,r,n,i)=>`${t-i} ${e-i} ${r} ${n}`,"createViewBox")});var pOe,mOe,zie,Gie=N(()=>{"use strict";dr();zt();vt();gm();Yd();$m();ir();pOe=o(function(t,e){return e.db.getClasses()},"getClasses"),mOe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing state diagram (v2)",e);let{securityLevel:i,flowchart:a,layout:s}=me(),l;i==="sandbox"&&(l=Ge("#i"+e));let u=i==="sandbox"?l.nodes()[0].contentDocument:document;Y.debug("Before getData: ");let h=n.db.getData();Y.debug("Data: ",h);let f=yc(e,i),d=n.db.getDirection();h.type=n.type,h.layoutAlgorithm=nf(s),h.layoutAlgorithm==="dagre"&&s==="elk"&&Y.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),h.direction=d,h.nodeSpacing=a?.nodeSpacing||50,h.rankSpacing=a?.rankSpacing||50,h.markers=["point","circle","cross"],h.diagramId=e,Y.debug("REF1:",h),await Cc(h,f);let p=h.config.flowchart?.diagramPadding??8;Gt.insertTitle(f,"flowchartTitleText",a?.titleTopMargin||0,n.db.getDiagramTitle()),Ac(f,p,"flowchart",a?.useMaxWidth||!1);for(let m of h.nodes){let g=Ge(`#${e} [id="${m.id}"]`);if(!g||!m.link)continue;let y=u.createElementNS("http://www.w3.org/2000/svg","a");y.setAttributeNS("http://www.w3.org/2000/svg","class",m.cssClasses),y.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),i==="sandbox"?y.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):m.linkTarget&&y.setAttributeNS("http://www.w3.org/2000/svg","target",m.linkTarget);let v=g.insert(function(){return y},":first-child"),x=g.select(".label-container");x&&v.append(function(){return x.node()});let b=g.select(".label");b&&v.append(function(){return b.node()})}},"draw"),zie={getClasses:pOe,draw:mOe}});var xR,bR,Vie=N(()=>{"use strict";xR=function(){var t=o(function(Hr,et,mt,Kt){for(mt=mt||{},Kt=Hr.length;Kt--;mt[Hr[Kt]]=et);return mt},"o"),e=[1,4],r=[1,3],n=[1,5],i=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],a=[2,2],s=[1,13],l=[1,14],u=[1,15],h=[1,16],f=[1,23],d=[1,25],p=[1,26],m=[1,27],g=[1,49],y=[1,48],v=[1,29],x=[1,30],b=[1,31],w=[1,32],C=[1,33],T=[1,44],E=[1,46],A=[1,42],S=[1,47],_=[1,43],I=[1,50],D=[1,45],k=[1,51],L=[1,52],R=[1,34],O=[1,35],M=[1,36],B=[1,37],F=[1,57],P=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],z=[1,61],$=[1,60],H=[1,62],Q=[8,9,11,75,77,78],j=[1,78],ie=[1,91],ne=[1,96],le=[1,95],he=[1,92],K=[1,88],X=[1,94],te=[1,90],J=[1,97],se=[1,93],ue=[1,98],Z=[1,89],Se=[8,9,10,11,40,75,77,78],ce=[8,9,10,11,40,46,75,77,78],ae=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],Oe=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],ge=[44,60,89,102,105,106,109,111,114,115,116],ze=[1,121],He=[1,122],$e=[1,124],Re=[1,123],Ie=[44,60,62,74,89,102,105,106,109,111,114,115,116],be=[1,133],W=[1,147],de=[1,148],re=[1,149],oe=[1,150],V=[1,135],xe=[1,137],q=[1,141],pe=[1,142],ve=[1,143],Pe=[1,144],_e=[1,145],we=[1,146],Ve=[1,151],De=[1,152],qe=[1,131],at=[1,132],Rt=[1,139],st=[1,134],Ue=[1,138],ct=[1,136],We=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],ot=[1,154],Yt=[1,156],bt=[8,9,11],Mt=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],xt=[1,176],ut=[1,172],Et=[1,173],ft=[1,177],yt=[1,174],nt=[1,175],dn=[77,116,119],Tt=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],On=[10,106],tn=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],_r=[1,247],Dr=[1,245],Pn=[1,249],At=[1,243],Ce=[1,244],tt=[1,246],St=[1,248],mr=[1,250],rn=[1,268],gn=[8,9,11,106],Zr=[8,9,10,11,60,84,105,106,109,110,111,112],Ni={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1]],performAction:o(function(et,mt,Kt,lt,Cn,ye,Vf){var Te=ye.length-1;switch(Cn){case 2:this.$=[];break;case 3:(!Array.isArray(ye[Te])||ye[Te].length>0)&&ye[Te-1].push(ye[Te]),this.$=ye[Te-1];break;case 4:case 183:this.$=ye[Te];break;case 11:lt.setDirection("TB"),this.$="TB";break;case 12:lt.setDirection(ye[Te-1]),this.$=ye[Te-1];break;case 27:this.$=ye[Te-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=lt.addSubGraph(ye[Te-6],ye[Te-1],ye[Te-4]);break;case 34:this.$=lt.addSubGraph(ye[Te-3],ye[Te-1],ye[Te-3]);break;case 35:this.$=lt.addSubGraph(void 0,ye[Te-1],void 0);break;case 37:this.$=ye[Te].trim(),lt.setAccTitle(this.$);break;case 38:case 39:this.$=ye[Te].trim(),lt.setAccDescription(this.$);break;case 43:this.$=ye[Te-1]+ye[Te];break;case 44:this.$=ye[Te];break;case 45:lt.addVertex(ye[Te-1][ye[Te-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,ye[Te]),lt.addLink(ye[Te-3].stmt,ye[Te-1],ye[Te-2]),this.$={stmt:ye[Te-1],nodes:ye[Te-1].concat(ye[Te-3].nodes)};break;case 46:lt.addLink(ye[Te-2].stmt,ye[Te],ye[Te-1]),this.$={stmt:ye[Te],nodes:ye[Te].concat(ye[Te-2].nodes)};break;case 47:lt.addLink(ye[Te-3].stmt,ye[Te-1],ye[Te-2]),this.$={stmt:ye[Te-1],nodes:ye[Te-1].concat(ye[Te-3].nodes)};break;case 48:this.$={stmt:ye[Te-1],nodes:ye[Te-1]};break;case 49:lt.addVertex(ye[Te-1][ye[Te-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,ye[Te]),this.$={stmt:ye[Te-1],nodes:ye[Te-1],shapeData:ye[Te]};break;case 50:this.$={stmt:ye[Te],nodes:ye[Te]};break;case 51:this.$=[ye[Te]];break;case 52:lt.addVertex(ye[Te-5][ye[Te-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,ye[Te-4]),this.$=ye[Te-5].concat(ye[Te]);break;case 53:this.$=ye[Te-4].concat(ye[Te]);break;case 54:this.$=ye[Te];break;case 55:this.$=ye[Te-2],lt.setClass(ye[Te-2],ye[Te]);break;case 56:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"square");break;case 57:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"doublecircle");break;case 58:this.$=ye[Te-5],lt.addVertex(ye[Te-5],ye[Te-2],"circle");break;case 59:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"ellipse");break;case 60:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"stadium");break;case 61:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"subroutine");break;case 62:this.$=ye[Te-7],lt.addVertex(ye[Te-7],ye[Te-1],"rect",void 0,void 0,void 0,Object.fromEntries([[ye[Te-5],ye[Te-3]]]));break;case 63:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"cylinder");break;case 64:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"round");break;case 65:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"diamond");break;case 66:this.$=ye[Te-5],lt.addVertex(ye[Te-5],ye[Te-2],"hexagon");break;case 67:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"odd");break;case 68:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"trapezoid");break;case 69:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"inv_trapezoid");break;case 70:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"lean_right");break;case 71:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"lean_left");break;case 72:this.$=ye[Te],lt.addVertex(ye[Te]);break;case 73:ye[Te-1].text=ye[Te],this.$=ye[Te-1];break;case 74:case 75:ye[Te-2].text=ye[Te-1],this.$=ye[Te-2];break;case 76:this.$=ye[Te];break;case 77:var wi=lt.destructLink(ye[Te],ye[Te-2]);this.$={type:wi.type,stroke:wi.stroke,length:wi.length,text:ye[Te-1]};break;case 78:var wi=lt.destructLink(ye[Te],ye[Te-2]);this.$={type:wi.type,stroke:wi.stroke,length:wi.length,text:ye[Te-1],id:ye[Te-3]};break;case 79:this.$={text:ye[Te],type:"text"};break;case 80:this.$={text:ye[Te-1].text+""+ye[Te],type:ye[Te-1].type};break;case 81:this.$={text:ye[Te],type:"string"};break;case 82:this.$={text:ye[Te],type:"markdown"};break;case 83:var wi=lt.destructLink(ye[Te]);this.$={type:wi.type,stroke:wi.stroke,length:wi.length};break;case 84:var wi=lt.destructLink(ye[Te]);this.$={type:wi.type,stroke:wi.stroke,length:wi.length,id:ye[Te-1]};break;case 85:this.$=ye[Te-1];break;case 86:this.$={text:ye[Te],type:"text"};break;case 87:this.$={text:ye[Te-1].text+""+ye[Te],type:ye[Te-1].type};break;case 88:this.$={text:ye[Te],type:"string"};break;case 89:case 104:this.$={text:ye[Te],type:"markdown"};break;case 101:this.$={text:ye[Te],type:"text"};break;case 102:this.$={text:ye[Te-1].text+""+ye[Te],type:ye[Te-1].type};break;case 103:this.$={text:ye[Te],type:"text"};break;case 105:this.$=ye[Te-4],lt.addClass(ye[Te-2],ye[Te]);break;case 106:this.$=ye[Te-4],lt.setClass(ye[Te-2],ye[Te]);break;case 107:case 115:this.$=ye[Te-1],lt.setClickEvent(ye[Te-1],ye[Te]);break;case 108:case 116:this.$=ye[Te-3],lt.setClickEvent(ye[Te-3],ye[Te-2]),lt.setTooltip(ye[Te-3],ye[Te]);break;case 109:this.$=ye[Te-2],lt.setClickEvent(ye[Te-2],ye[Te-1],ye[Te]);break;case 110:this.$=ye[Te-4],lt.setClickEvent(ye[Te-4],ye[Te-3],ye[Te-2]),lt.setTooltip(ye[Te-4],ye[Te]);break;case 111:this.$=ye[Te-2],lt.setLink(ye[Te-2],ye[Te]);break;case 112:this.$=ye[Te-4],lt.setLink(ye[Te-4],ye[Te-2]),lt.setTooltip(ye[Te-4],ye[Te]);break;case 113:this.$=ye[Te-4],lt.setLink(ye[Te-4],ye[Te-2],ye[Te]);break;case 114:this.$=ye[Te-6],lt.setLink(ye[Te-6],ye[Te-4],ye[Te]),lt.setTooltip(ye[Te-6],ye[Te-2]);break;case 117:this.$=ye[Te-1],lt.setLink(ye[Te-1],ye[Te]);break;case 118:this.$=ye[Te-3],lt.setLink(ye[Te-3],ye[Te-2]),lt.setTooltip(ye[Te-3],ye[Te]);break;case 119:this.$=ye[Te-3],lt.setLink(ye[Te-3],ye[Te-2],ye[Te]);break;case 120:this.$=ye[Te-5],lt.setLink(ye[Te-5],ye[Te-4],ye[Te]),lt.setTooltip(ye[Te-5],ye[Te-2]);break;case 121:this.$=ye[Te-4],lt.addVertex(ye[Te-2],void 0,void 0,ye[Te]);break;case 122:this.$=ye[Te-4],lt.updateLink([ye[Te-2]],ye[Te]);break;case 123:this.$=ye[Te-4],lt.updateLink(ye[Te-2],ye[Te]);break;case 124:this.$=ye[Te-8],lt.updateLinkInterpolate([ye[Te-6]],ye[Te-2]),lt.updateLink([ye[Te-6]],ye[Te]);break;case 125:this.$=ye[Te-8],lt.updateLinkInterpolate(ye[Te-6],ye[Te-2]),lt.updateLink(ye[Te-6],ye[Te]);break;case 126:this.$=ye[Te-6],lt.updateLinkInterpolate([ye[Te-4]],ye[Te]);break;case 127:this.$=ye[Te-6],lt.updateLinkInterpolate(ye[Te-4],ye[Te]);break;case 128:case 130:this.$=[ye[Te]];break;case 129:case 131:ye[Te-2].push(ye[Te]),this.$=ye[Te-2];break;case 133:this.$=ye[Te-1]+ye[Te];break;case 181:this.$=ye[Te];break;case 182:this.$=ye[Te-1]+""+ye[Te];break;case 184:this.$=ye[Te-1]+""+ye[Te];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break}},"anonymous"),table:[{3:1,4:2,9:e,10:r,12:n},{1:[3]},t(i,a,{5:6}),{4:7,9:e,10:r,12:n},{4:8,9:e,10:r,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:M,124:B},t(i,[2,9]),t(i,[2,10]),t(i,[2,11]),{8:[1,54],9:[1,55],10:F,15:53,18:56},t(P,[2,3]),t(P,[2,4]),t(P,[2,5]),t(P,[2,6]),t(P,[2,7]),t(P,[2,8]),{8:z,9:$,11:H,21:58,41:59,72:63,75:[1,64],77:[1,66],78:[1,65]},{8:z,9:$,11:H,21:67},{8:z,9:$,11:H,21:68},{8:z,9:$,11:H,21:69},{8:z,9:$,11:H,21:70},{8:z,9:$,11:H,21:71},{8:z,9:$,10:[1,72],11:H,21:73},t(P,[2,36]),{35:[1,74]},{37:[1,75]},t(P,[2,39]),t(Q,[2,50],{18:76,39:77,10:F,40:j}),{10:[1,79]},{10:[1,80]},{10:[1,81]},{10:[1,82]},{14:ie,44:ne,60:le,80:[1,86],89:he,95:[1,83],97:[1,84],101:85,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z,120:87},t(P,[2,185]),t(P,[2,186]),t(P,[2,187]),t(P,[2,188]),t(Se,[2,51]),t(Se,[2,54],{46:[1,99]}),t(ce,[2,72],{113:112,29:[1,100],44:g,48:[1,101],50:[1,102],52:[1,103],54:[1,104],56:[1,105],58:[1,106],60:y,63:[1,107],65:[1,108],67:[1,109],68:[1,110],70:[1,111],89:T,102:E,105:A,106:S,109:_,111:I,114:D,115:k,116:L}),t(ae,[2,181]),t(ae,[2,142]),t(ae,[2,143]),t(ae,[2,144]),t(ae,[2,145]),t(ae,[2,146]),t(ae,[2,147]),t(ae,[2,148]),t(ae,[2,149]),t(ae,[2,150]),t(ae,[2,151]),t(ae,[2,152]),t(i,[2,12]),t(i,[2,18]),t(i,[2,19]),{9:[1,113]},t(Oe,[2,26],{18:114,10:F}),t(P,[2,27]),{42:115,43:38,44:g,45:39,47:40,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(P,[2,40]),t(P,[2,41]),t(P,[2,42]),t(ge,[2,76],{73:116,62:[1,118],74:[1,117]}),{76:119,79:120,80:ze,81:He,116:$e,119:Re},{75:[1,125],77:[1,126]},t(Ie,[2,83]),t(P,[2,28]),t(P,[2,29]),t(P,[2,30]),t(P,[2,31]),t(P,[2,32]),{10:be,12:W,14:de,27:re,28:127,32:oe,44:V,60:xe,75:q,80:[1,129],81:[1,130],83:140,84:pe,85:ve,86:Pe,87:_e,88:we,89:Ve,90:De,91:128,105:qe,109:at,111:Rt,114:st,115:Ue,116:ct},t(We,a,{5:153}),t(P,[2,37]),t(P,[2,38]),t(Q,[2,48],{44:ot}),t(Q,[2,49],{18:155,10:F,40:Yt}),t(Se,[2,44]),{44:g,47:157,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{102:[1,158],103:159,105:[1,160]},{44:g,47:161,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{44:g,47:162,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(bt,[2,107],{10:[1,163],96:[1,164]}),{80:[1,165]},t(bt,[2,115],{120:167,10:[1,166],14:ie,44:ne,60:le,89:he,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z}),t(bt,[2,117],{10:[1,168]}),t(Mt,[2,183]),t(Mt,[2,170]),t(Mt,[2,171]),t(Mt,[2,172]),t(Mt,[2,173]),t(Mt,[2,174]),t(Mt,[2,175]),t(Mt,[2,176]),t(Mt,[2,177]),t(Mt,[2,178]),t(Mt,[2,179]),t(Mt,[2,180]),{44:g,47:169,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{30:170,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:178,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:180,50:[1,179],67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:181,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:182,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:183,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{109:[1,184]},{30:185,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:186,65:[1,187],67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:188,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:189,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:190,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},t(ae,[2,182]),t(i,[2,20]),t(Oe,[2,25]),t(Q,[2,46],{39:191,18:192,10:F,40:j}),t(ge,[2,73],{10:[1,193]}),{10:[1,194]},{30:195,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{77:[1,196],79:197,116:$e,119:Re},t(dn,[2,79]),t(dn,[2,81]),t(dn,[2,82]),t(dn,[2,168]),t(dn,[2,169]),{76:198,79:120,80:ze,81:He,116:$e,119:Re},t(Ie,[2,84]),{8:z,9:$,10:be,11:H,12:W,14:de,21:200,27:re,29:[1,199],32:oe,44:V,60:xe,75:q,83:140,84:pe,85:ve,86:Pe,87:_e,88:we,89:Ve,90:De,91:201,105:qe,109:at,111:Rt,114:st,115:Ue,116:ct},t(Tt,[2,101]),t(Tt,[2,103]),t(Tt,[2,104]),t(Tt,[2,157]),t(Tt,[2,158]),t(Tt,[2,159]),t(Tt,[2,160]),t(Tt,[2,161]),t(Tt,[2,162]),t(Tt,[2,163]),t(Tt,[2,164]),t(Tt,[2,165]),t(Tt,[2,166]),t(Tt,[2,167]),t(Tt,[2,90]),t(Tt,[2,91]),t(Tt,[2,92]),t(Tt,[2,93]),t(Tt,[2,94]),t(Tt,[2,95]),t(Tt,[2,96]),t(Tt,[2,97]),t(Tt,[2,98]),t(Tt,[2,99]),t(Tt,[2,100]),{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,202],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:M,124:B},{10:F,18:203},{44:[1,204]},t(Se,[2,43]),{10:[1,205],44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:112,114:D,115:k,116:L},{10:[1,206]},{10:[1,207],106:[1,208]},t(On,[2,128]),{10:[1,209],44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:112,114:D,115:k,116:L},{10:[1,210],44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:112,114:D,115:k,116:L},{80:[1,211]},t(bt,[2,109],{10:[1,212]}),t(bt,[2,111],{10:[1,213]}),{80:[1,214]},t(Mt,[2,184]),{80:[1,215],98:[1,216]},t(Se,[2,55],{113:112,44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,114:D,115:k,116:L}),{31:[1,217],67:xt,82:218,116:ft,117:yt,118:nt},t(tn,[2,86]),t(tn,[2,88]),t(tn,[2,89]),t(tn,[2,153]),t(tn,[2,154]),t(tn,[2,155]),t(tn,[2,156]),{49:[1,219],67:xt,82:218,116:ft,117:yt,118:nt},{30:220,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{51:[1,221],67:xt,82:218,116:ft,117:yt,118:nt},{53:[1,222],67:xt,82:218,116:ft,117:yt,118:nt},{55:[1,223],67:xt,82:218,116:ft,117:yt,118:nt},{57:[1,224],67:xt,82:218,116:ft,117:yt,118:nt},{60:[1,225]},{64:[1,226],67:xt,82:218,116:ft,117:yt,118:nt},{66:[1,227],67:xt,82:218,116:ft,117:yt,118:nt},{30:228,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{31:[1,229],67:xt,82:218,116:ft,117:yt,118:nt},{67:xt,69:[1,230],71:[1,231],82:218,116:ft,117:yt,118:nt},{67:xt,69:[1,233],71:[1,232],82:218,116:ft,117:yt,118:nt},t(Q,[2,45],{18:155,10:F,40:Yt}),t(Q,[2,47],{44:ot}),t(ge,[2,75]),t(ge,[2,74]),{62:[1,234],67:xt,82:218,116:ft,117:yt,118:nt},t(ge,[2,77]),t(dn,[2,80]),{77:[1,235],79:197,116:$e,119:Re},{30:236,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},t(We,a,{5:237}),t(Tt,[2,102]),t(P,[2,35]),{43:238,44:g,45:39,47:40,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{10:F,18:239},{10:_r,60:Dr,84:Pn,92:240,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},{10:_r,60:Dr,84:Pn,92:251,104:[1,252],105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},{10:_r,60:Dr,84:Pn,92:253,104:[1,254],105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},{105:[1,255]},{10:_r,60:Dr,84:Pn,92:256,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},{44:g,47:257,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(bt,[2,108]),{80:[1,258]},{80:[1,259],98:[1,260]},t(bt,[2,116]),t(bt,[2,118],{10:[1,261]}),t(bt,[2,119]),t(ce,[2,56]),t(tn,[2,87]),t(ce,[2,57]),{51:[1,262],67:xt,82:218,116:ft,117:yt,118:nt},t(ce,[2,64]),t(ce,[2,59]),t(ce,[2,60]),t(ce,[2,61]),{109:[1,263]},t(ce,[2,63]),t(ce,[2,65]),{66:[1,264],67:xt,82:218,116:ft,117:yt,118:nt},t(ce,[2,67]),t(ce,[2,68]),t(ce,[2,70]),t(ce,[2,69]),t(ce,[2,71]),t([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),t(ge,[2,78]),{31:[1,265],67:xt,82:218,116:ft,117:yt,118:nt},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,266],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:M,124:B},t(Se,[2,53]),{43:267,44:g,45:39,47:40,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(bt,[2,121],{106:rn}),t(gn,[2,130],{108:269,10:_r,60:Dr,84:Pn,105:At,109:Ce,110:tt,111:St,112:mr}),t(Zr,[2,132]),t(Zr,[2,134]),t(Zr,[2,135]),t(Zr,[2,136]),t(Zr,[2,137]),t(Zr,[2,138]),t(Zr,[2,139]),t(Zr,[2,140]),t(Zr,[2,141]),t(bt,[2,122],{106:rn}),{10:[1,270]},t(bt,[2,123],{106:rn}),{10:[1,271]},t(On,[2,129]),t(bt,[2,105],{106:rn}),t(bt,[2,106],{113:112,44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,114:D,115:k,116:L}),t(bt,[2,110]),t(bt,[2,112],{10:[1,272]}),t(bt,[2,113]),{98:[1,273]},{51:[1,274]},{62:[1,275]},{66:[1,276]},{8:z,9:$,11:H,21:277},t(P,[2,34]),t(Se,[2,52]),{10:_r,60:Dr,84:Pn,105:At,107:278,108:242,109:Ce,110:tt,111:St,112:mr},t(Zr,[2,133]),{14:ie,44:ne,60:le,89:he,101:279,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z,120:87},{14:ie,44:ne,60:le,89:he,101:280,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z,120:87},{98:[1,281]},t(bt,[2,120]),t(ce,[2,58]),{30:282,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},t(ce,[2,66]),t(We,a,{5:283}),t(gn,[2,131],{108:269,10:_r,60:Dr,84:Pn,105:At,109:Ce,110:tt,111:St,112:mr}),t(bt,[2,126],{120:167,10:[1,284],14:ie,44:ne,60:le,89:he,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z}),t(bt,[2,127],{120:167,10:[1,285],14:ie,44:ne,60:le,89:he,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z}),t(bt,[2,114]),{31:[1,286],67:xt,82:218,116:ft,117:yt,118:nt},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,287],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:M,124:B},{10:_r,60:Dr,84:Pn,92:288,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},{10:_r,60:Dr,84:Pn,92:289,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:mr},t(ce,[2,62]),t(P,[2,33]),t(bt,[2,124],{106:rn}),t(bt,[2,125],{106:rn})],defaultActions:{},parseError:o(function(et,mt){if(mt.recoverable)this.trace(et);else{var Kt=new Error(et);throw Kt.hash=mt,Kt}},"parseError"),parse:o(function(et){var mt=this,Kt=[0],lt=[],Cn=[null],ye=[],Vf=this.table,Te="",wi=0,TF=0,kF=0,M2e=2,EF=1,I2e=ye.slice.call(arguments,1),Xi=Object.create(this.lexer),Uf={yy:{}};for(var xC in this.yy)Object.prototype.hasOwnProperty.call(this.yy,xC)&&(Uf.yy[xC]=this.yy[xC]);Xi.setInput(et,Uf.yy),Uf.yy.lexer=Xi,Uf.yy.parser=this,typeof Xi.yylloc>"u"&&(Xi.yylloc={});var bC=Xi.yylloc;ye.push(bC);var O2e=Xi.options&&Xi.options.ranges;typeof Uf.yy.parseError=="function"?this.parseError=Uf.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function wnt(Ws){Kt.length=Kt.length-2*Ws,Cn.length=Cn.length-Ws,ye.length=ye.length-Ws}o(wnt,"popStack");function P2e(){var Ws;return Ws=lt.pop()||Xi.lex()||EF,typeof Ws!="number"&&(Ws instanceof Array&&(lt=Ws,Ws=lt.pop()),Ws=mt.symbols_[Ws]||Ws),Ws}o(P2e,"lex");for(var Wa,wC,Hf,xo,Tnt,TC,Jp={},_4,Jc,SF,D4;;){if(Hf=Kt[Kt.length-1],this.defaultActions[Hf]?xo=this.defaultActions[Hf]:((Wa===null||typeof Wa>"u")&&(Wa=P2e()),xo=Vf[Hf]&&Vf[Hf][Wa]),typeof xo>"u"||!xo.length||!xo[0]){var kC="";D4=[];for(_4 in Vf[Hf])this.terminals_[_4]&&_4>M2e&&D4.push("'"+this.terminals_[_4]+"'");Xi.showPosition?kC="Parse error on line "+(wi+1)+`: -`+Xi.showPosition()+` -Expecting `+D4.join(", ")+", got '"+(this.terminals_[Wa]||Wa)+"'":kC="Parse error on line "+(wi+1)+": Unexpected "+(Wa==EF?"end of input":"'"+(this.terminals_[Wa]||Wa)+"'"),this.parseError(kC,{text:Xi.match,token:this.terminals_[Wa]||Wa,line:Xi.yylineno,loc:bC,expected:D4})}if(xo[0]instanceof Array&&xo.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Hf+", token: "+Wa);switch(xo[0]){case 1:Kt.push(Wa),Cn.push(Xi.yytext),ye.push(Xi.yylloc),Kt.push(xo[1]),Wa=null,wC?(Wa=wC,wC=null):(TF=Xi.yyleng,Te=Xi.yytext,wi=Xi.yylineno,bC=Xi.yylloc,kF>0&&kF--);break;case 2:if(Jc=this.productions_[xo[1]][1],Jp.$=Cn[Cn.length-Jc],Jp._$={first_line:ye[ye.length-(Jc||1)].first_line,last_line:ye[ye.length-1].last_line,first_column:ye[ye.length-(Jc||1)].first_column,last_column:ye[ye.length-1].last_column},O2e&&(Jp._$.range=[ye[ye.length-(Jc||1)].range[0],ye[ye.length-1].range[1]]),TC=this.performAction.apply(Jp,[Te,TF,wi,Uf.yy,xo[1],Cn,ye].concat(I2e)),typeof TC<"u")return TC;Jc&&(Kt=Kt.slice(0,-1*Jc*2),Cn=Cn.slice(0,-1*Jc),ye=ye.slice(0,-1*Jc)),Kt.push(this.productions_[xo[1]][0]),Cn.push(Jp.$),ye.push(Jp._$),SF=Vf[Kt[Kt.length-2]][Kt[Kt.length-1]],Kt.push(SF);break;case 3:return!0}}return!0},"parse")},Zn=function(){var Hr={EOF:1,parseError:o(function(mt,Kt){if(this.yy.parser)this.yy.parser.parseError(mt,Kt);else throw new Error(mt)},"parseError"),setInput:o(function(et,mt){return this.yy=mt||this.yy||{},this._input=et,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var et=this._input[0];this.yytext+=et,this.yyleng++,this.offset++,this.match+=et,this.matched+=et;var mt=et.match(/(?:\r\n?|\n).*/g);return mt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),et},"input"),unput:o(function(et){var mt=et.length,Kt=et.split(/(?:\r\n?|\n)/g);this._input=et+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-mt),this.offset-=mt;var lt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Kt.length-1&&(this.yylineno-=Kt.length-1);var Cn=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Kt?(Kt.length===lt.length?this.yylloc.first_column:0)+lt[lt.length-Kt.length].length-Kt[0].length:this.yylloc.first_column-mt},this.options.ranges&&(this.yylloc.range=[Cn[0],Cn[0]+this.yyleng-mt]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(et){this.unput(this.match.slice(et))},"less"),pastInput:o(function(){var et=this.matched.substr(0,this.matched.length-this.match.length);return(et.length>20?"...":"")+et.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var et=this.match;return et.length<20&&(et+=this._input.substr(0,20-et.length)),(et.substr(0,20)+(et.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var et=this.pastInput(),mt=new Array(et.length+1).join("-");return et+this.upcomingInput()+` -`+mt+"^"},"showPosition"),test_match:o(function(et,mt){var Kt,lt,Cn;if(this.options.backtrack_lexer&&(Cn={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Cn.yylloc.range=this.yylloc.range.slice(0))),lt=et[0].match(/(?:\r\n?|\n).*/g),lt&&(this.yylineno+=lt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lt?lt[lt.length-1].length-lt[lt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+et[0].length},this.yytext+=et[0],this.match+=et[0],this.matches=et,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(et[0].length),this.matched+=et[0],Kt=this.performAction.call(this,this.yy,this,mt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Kt)return Kt;if(this._backtrack){for(var ye in Cn)this[ye]=Cn[ye];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var et,mt,Kt,lt;this._more||(this.yytext="",this.match="");for(var Cn=this._currentRules(),ye=0;yemt[0].length)){if(mt=Kt,lt=ye,this.options.backtrack_lexer){if(et=this.test_match(Kt,Cn[ye]),et!==!1)return et;if(this._backtrack){mt=!1;continue}else return!1}else if(!this.options.flex)break}return mt?(et=this.test_match(mt,Cn[lt]),et!==!1?et:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var mt=this.next();return mt||this.lex()},"lex"),begin:o(function(mt){this.conditionStack.push(mt)},"begin"),popState:o(function(){var mt=this.conditionStack.length-1;return mt>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(mt){return mt=this.conditionStack.length-1-Math.abs(mt||0),mt>=0?this.conditionStack[mt]:"INITIAL"},"topState"),pushState:o(function(mt){this.begin(mt)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(mt,Kt,lt,Cn){var ye=Cn;switch(lt){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),Kt.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let Vf=/\n\s*/g;return Kt.yytext=Kt.yytext.replace(Vf,"
    "),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 17:this.popState();break;case 18:return 96;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:return mt.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return mt.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return mt.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return 27;case 39:return 32;case 40:return 98;case 41:return 98;case 42:return 98;case 43:return 98;case 44:return this.popState(),13;break;case 45:return this.popState(),14;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 78;case 60:return 105;case 61:return 111;case 62:return 46;case 63:return 60;case 64:return 44;case 65:return 8;case 66:return 106;case 67:return 115;case 68:return this.popState(),77;break;case 69:return this.pushState("edgeText"),75;break;case 70:return 119;case 71:return this.popState(),77;break;case 72:return this.pushState("thickEdgeText"),75;break;case 73:return 119;case 74:return this.popState(),77;break;case 75:return this.pushState("dottedEdgeText"),75;break;case 76:return 119;case 77:return 77;case 78:return this.popState(),53;break;case 79:return"TEXT";case 80:return this.pushState("ellipseText"),52;break;case 81:return this.popState(),55;break;case 82:return this.pushState("text"),54;break;case 83:return this.popState(),57;break;case 84:return this.pushState("text"),56;break;case 85:return 58;case 86:return this.pushState("text"),67;break;case 87:return this.popState(),64;break;case 88:return this.pushState("text"),63;break;case 89:return this.popState(),49;break;case 90:return this.pushState("text"),48;break;case 91:return this.popState(),69;break;case 92:return this.popState(),71;break;case 93:return 117;case 94:return this.pushState("trapText"),68;break;case 95:return this.pushState("trapText"),70;break;case 96:return 118;case 97:return 67;case 98:return 90;case 99:return"SEP";case 100:return 89;case 101:return 115;case 102:return 111;case 103:return 44;case 104:return 109;case 105:return 114;case 106:return 116;case 107:return this.popState(),62;break;case 108:return this.pushState("text"),62;break;case 109:return this.popState(),51;break;case 110:return this.pushState("text"),50;break;case 111:return this.popState(),31;break;case 112:return this.pushState("text"),29;break;case 113:return this.popState(),66;break;case 114:return this.pushState("text"),65;break;case 115:return"TEXT";case 116:return"QUOTE";case 117:return 9;case 118:return 10;case 119:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeData:{rules:[8,11,12,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackargs:{rules:[17,18,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackname:{rules:[14,15,16,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},href:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},click:{rules:[21,24,33,34,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dottedEdgeText:{rules:[21,24,74,76,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},thickEdgeText:{rules:[21,24,71,73,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},edgeText:{rules:[21,24,68,70,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},trapText:{rules:[21,24,77,80,82,84,88,90,91,92,93,94,95,108,110,112,114],inclusive:!1},ellipseText:{rules:[21,24,77,78,79,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},text:{rules:[21,24,77,80,81,82,83,84,87,88,89,90,94,95,107,108,109,110,111,112,113,114,115],inclusive:!1},vertex:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr:{rules:[3,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_title:{rules:[1,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},md_string:{rules:[19,20,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},string:{rules:[21,22,23,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,74,75,77,80,82,84,85,86,88,90,94,95,96,97,98,99,100,101,102,103,104,105,106,108,110,112,114,116,117,118,119],inclusive:!0}}};return Hr}();Ni.lexer=Zn;function Sn(){this.yy={}}return o(Sn,"Parser"),Sn.prototype=Ni,Ni.Parser=Sn,new Sn}();xR.parser=xR;bR=xR});var Uie,Hie,Wie=N(()=>{"use strict";Vie();Uie=Object.assign({},bR);Uie.parse=t=>{let e=t.replace(/}\s*\n/g,`} -`);return bR.parse(e)};Hie=Uie});var gOe,yOe,qie,Yie=N(()=>{"use strict";Ys();gOe=o((t,e)=>{let r=Kf,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return qa(n,i,a,e)},"fade"),yOe=o(t=>`.label { +Parent cluster`,i.height),e.setNode(i.id,x),e.parent(y)||(X.trace("Setting parent",y,i.id),e.setParent(y,i.id,x))}if(X.info("(Insert) Node XXX"+y+": "+JSON.stringify(e.node(y))),v?.clusterNode){X.info("Cluster identified XBX",y,v.width,e.node(y));let{ranksep:x,nodesep:b}=e.graph();v.graph.setGraph({...v.graph.graph(),ranksep:x+25,nodesep:b});let T=await Doe(d,v.graph,r,n,e.node(y),a),S=T.elem;Qe(v,S),v.diff=T.diff||0,X.info("New compound node after recursive render XAX",y,"width",v.width,"height",v.height),Xte(S,v)}else e.children(y).length>0?(X.trace("Cluster - the non recursive path XBX",y,v.id,v,v.width,"Graph:",e),X.trace(Wm(v.id,e)),Er.set(v.id,{id:Wm(v.id,e),node:v})):(X.trace("Node - the non recursive path XAX",y,d,e.node(y),s),await Cm(d,e.node(y),{config:a,dir:s}))})),await o(async()=>{let y=e.edges().map(async function(v){let x=e.edge(v.v,v.w,v.name);X.info("Edge "+v.v+" -> "+v.w+": "+JSON.stringify(v)),X.info("Edge "+v.v+" -> "+v.w+": ",v," ",JSON.stringify(e.edge(v))),X.info("Fix",Er,"ids:",v.v,v.w,"Translating: ",Er.get(v.v),Er.get(v.w)),await mw(f,x)});await Promise.all(y)},"processEdges")(),X.info("Graph before layout:",JSON.stringify(Wo(e))),X.info("############################################# XXX"),X.info("### Layout ### XXX"),X.info("############################################# XXX"),H2(e),X.info("Graph after layout:",JSON.stringify(Wo(e)));let m=0,{subGraphTitleTotalMargin:g}=Pu(a);return await Promise.all(Aoe(e).map(async function(y){let v=e.node(y);if(X.info("Position XBX => "+y+": ("+v.x,","+v.y,") width: ",v.width," height: ",v.height),v?.clusterNode)v.y+=g,X.info("A tainted cluster node XBX1",y,v.id,v.width,v.height,v.x,v.y,e.parent(y)),Er.get(v.id).node=v,P2(v);else if(e.children(y).length>0){X.info("A pure cluster node XBX1",y,v.id,v.x,v.y,v.width,v.height,e.parent(y)),v.height+=g,e.node(v.parentId);let x=v?.padding/2||0,b=v?.labelBBox?.height||0,T=b-x||0;X.debug("OffsetY",T,"labelHeight",b,"halfPadding",x),await Sm(u,v),Er.get(v.id).node=v}else{let x=e.node(v.parentId);v.y+=g/2,X.info("A regular node XBX1 - using the padding",v.id,"parent",v.parentId,v.width,v.height,v.x,v.y,"offsetY",v.offsetY,"parent",x,x?.offsetY,v),P2(v)}})),e.edges().forEach(function(y){let v=e.edge(y);X.info("Edge "+y.v+" -> "+y.w+": "+JSON.stringify(v),v),v.points.forEach(S=>S.y+=g/2);let x=e.node(y.v);var b=e.node(y.w);let T=yw(h,v,Er,r,x,b,n);gw(v,T)}),e.nodes().forEach(function(y){let v=e.node(y);X.info(y,v.type,v.diff),v.isGroup&&(m=v.diff)}),X.warn("Returning from recursive render XAX",l,m),{elem:l,diff:m}},"recursiveRender"),d$e=o(async(t,e)=>{let r=new cn({multigraph:!0,compound:!0}).setGraph({rankdir:t.direction,nodesep:t.config?.nodeSpacing||t.config?.flowchart?.nodeSpacing||t.nodeSpacing,ranksep:t.config?.rankSpacing||t.config?.flowchart?.rankSpacing||t.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),n=e.select("g");vw(n,t.markers,t.type,t.diagramId),jte(),Yte(),zte(),Toe(),t.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),X.debug("Edges:",t.edges),t.edges.forEach(a=>{if(a.start===a.end){let s=a.start,l=s+"---"+s+"---1",u=s+"---"+s+"---2",h=r.node(s);r.setNode(l,{domId:l,id:l,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(l,h.parentId),r.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(u,h.parentId);let f=structuredClone(a),d=structuredClone(a),p=structuredClone(a);f.label="",f.arrowTypeEnd="none",f.id=s+"-cyclic-special-1",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=s+"-cyclic-special-mid",p.label="",h.isGroup&&(f.fromCluster=s,p.toCluster=s),p.id=s+"-cyclic-special-2",p.arrowTypeStart="none",r.setEdge(s,l,f,s+"-cyclic-special-0"),r.setEdge(l,u,d,s+"-cyclic-special-1"),r.setEdge(u,s,p,s+"-cyct.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},"n"),e:o(function(u){throw u},"e"),f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,s=!0,l=!1;return{s:o(function(){r=r.call(t)},"s"),n:o(function(){var u=r.next();return s=u.done,u},"n"),e:o(function(u){l=!0,a=u},"e"),f:o(function(){try{s||r.return==null||r.return()}finally{if(l)throw a}},"f")}}function sue(t,e,r){return(e=oue(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function y$e(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function v$e(t,e){var r=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(r!=null){var n,i,a,s,l=[],u=!0,h=!1;try{if(a=(r=r.call(t)).next,e===0){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(f){h=!0,i=f}finally{try{if(!u&&r.return!=null&&(s=r.return(),Object(s)!==s))return}finally{if(h)throw i}}return l}}function x$e(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function b$e(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function _i(t,e){return p$e(t)||v$e(t,e)||cI(t,e)||x$e()}function Xk(t){return m$e(t)||y$e(t)||cI(t)||b$e()}function T$e(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}function oue(t){var e=T$e(t,"string");return typeof e=="symbol"?e:e+""}function $i(t){"@babel/helpers - typeof";return $i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$i(t)}function cI(t,e){if(t){if(typeof t=="string")return UM(t,e);var r={}.toString.call(t).slice(8,-1);return r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set"?Array.from(t):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?UM(t,e):void 0}}function gx(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function yx(){if(Ioe)return dN;Ioe=1;function t(e){var r=typeof e;return e!=null&&(r=="object"||r=="function")}return o(t,"isObject"),dN=t,dN}function H$e(){if(Ooe)return pN;Ooe=1;var t=typeof Ek=="object"&&Ek&&Ek.Object===Object&&Ek;return pN=t,pN}function cE(){if(Poe)return mN;Poe=1;var t=H$e(),e=typeof self=="object"&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return mN=r,mN}function q$e(){if(Boe)return gN;Boe=1;var t=cE(),e=o(function(){return t.Date.now()},"now");return gN=e,gN}function W$e(){if(Foe)return yN;Foe=1;var t=/\s/;function e(r){for(var n=r.length;n--&&t.test(r.charAt(n)););return n}return o(e,"trimmedEndIndex"),yN=e,yN}function Y$e(){if($oe)return vN;$oe=1;var t=W$e(),e=/^\s+/;function r(n){return n&&n.slice(0,t(n)+1).replace(e,"")}return o(r,"baseTrim"),vN=r,vN}function fI(){if(zoe)return xN;zoe=1;var t=cE(),e=t.Symbol;return xN=e,xN}function X$e(){if(Goe)return bN;Goe=1;var t=fI(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,i=t?t.toStringTag:void 0;function a(s){var l=r.call(s,i),u=s[i];try{s[i]=void 0;var h=!0}catch{}var f=n.call(s);return h&&(l?s[i]=u:delete s[i]),f}return o(a,"getRawTag"),bN=a,bN}function j$e(){if(Voe)return TN;Voe=1;var t=Object.prototype,e=t.toString;function r(n){return e.call(n)}return o(r,"objectToString"),TN=r,TN}function gue(){if(Uoe)return wN;Uoe=1;var t=fI(),e=X$e(),r=j$e(),n="[object Null]",i="[object Undefined]",a=t?t.toStringTag:void 0;function s(l){return l==null?l===void 0?i:n:a&&a in Object(l)?e(l):r(l)}return o(s,"baseGetTag"),wN=s,wN}function K$e(){if(Hoe)return kN;Hoe=1;function t(e){return e!=null&&typeof e=="object"}return o(t,"isObjectLike"),kN=t,kN}function vx(){if(qoe)return EN;qoe=1;var t=gue(),e=K$e(),r="[object Symbol]";function n(i){return typeof i=="symbol"||e(i)&&t(i)==r}return o(n,"isSymbol"),EN=n,EN}function Q$e(){if(Woe)return SN;Woe=1;var t=Y$e(),e=yx(),r=vx(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,s=/^0o[0-7]+$/i,l=parseInt;function u(h){if(typeof h=="number")return h;if(r(h))return n;if(e(h)){var f=typeof h.valueOf=="function"?h.valueOf():h;h=e(f)?f+"":f}if(typeof h!="string")return h===0?h:+h;h=t(h);var d=a.test(h);return d||s.test(h)?l(h.slice(2),d?2:8):i.test(h)?n:+h}return o(u,"toNumber"),SN=u,SN}function Z$e(){if(Yoe)return CN;Yoe=1;var t=yx(),e=q$e(),r=Q$e(),n="Expected a function",i=Math.max,a=Math.min;function s(l,u,h){var f,d,p,m,g,y,v=0,x=!1,b=!1,T=!0;if(typeof l!="function")throw new TypeError(n);u=r(u)||0,t(h)&&(x=!!h.leading,b="maxWait"in h,p=b?i(r(h.maxWait)||0,u):p,T="trailing"in h?!!h.trailing:T);function S(D){var _=f,O=d;return f=d=void 0,v=D,m=l.apply(O,_),m}o(S,"invokeFunc");function w(D){return v=D,g=setTimeout(C,u),x?S(D):m}o(w,"leadingEdge");function k(D){var _=D-y,O=D-v,M=u-_;return b?a(M,p-O):M}o(k,"remainingWait");function A(D){var _=D-y,O=D-v;return y===void 0||_>=u||_<0||b&&O>=p}o(A,"shouldInvoke");function C(){var D=e();if(A(D))return R(D);g=setTimeout(C,k(D))}o(C,"timerExpired");function R(D){return g=void 0,T&&f?S(D):(f=d=void 0,m)}o(R,"trailingEdge");function I(){g!==void 0&&clearTimeout(g),v=0,f=y=d=g=void 0}o(I,"cancel");function L(){return g===void 0?m:R(e())}o(L,"flush");function E(){var D=e(),_=A(D);if(f=arguments,d=this,y=D,_){if(g===void 0)return w(y);if(b)return clearTimeout(g),g=setTimeout(C,u),S(y)}return g===void 0&&(g=setTimeout(C,u)),m}return o(E,"debounced"),E.cancel=I,E.flush=L,E}return o(s,"debounce"),CN=s,CN}function nze(t,e,r,n,i){var a=i*Math.PI/180,s=Math.cos(a)*(t-r)-Math.sin(a)*(e-n)+r,l=Math.sin(a)*(t-r)+Math.cos(a)*(e-n)+n;return{x:s,y:l}}function aze(t,e,r){if(r===0)return t;var n=(e.x1+e.x2)/2,i=(e.y1+e.y2)/2,a=e.w/e.h,s=1/a,l=nze(t.x,t.y,n,i,r),u=ize(l.x,l.y,n,i,a,s);return{x:u.x,y:u.y}}function gze(){return Zoe||(Zoe=1,(function(t,e){(function(){var r,n,i,a,s,l,u,h,f,d,p,m,g,y,v;i=Math.floor,d=Math.min,n=o(function(x,b){return xb?1:0},"defaultCmp"),f=o(function(x,b,T,S,w){var k;if(T==null&&(T=0),w==null&&(w=n),T<0)throw new Error("lo must be non-negative");for(S==null&&(S=x.length);TI;0<=I?R++:R--)C.push(R);return C}).apply(this).reverse(),A=[],S=0,w=k.length;SL;0<=L?++C:--C)E.push(s(x,T));return E},"nsmallest"),y=o(function(x,b,T,S){var w,k,A;for(S==null&&(S=n),w=x[T];T>b;){if(A=T-1>>1,k=x[A],S(w,k)<0){x[T]=k,T=A;continue}break}return x[T]=w},"_siftdown"),v=o(function(x,b,T){var S,w,k,A,C;for(T==null&&(T=n),w=x.length,C=b,k=x[b],S=2*b+1;S-1}return o(e,"listCacheHas"),tM=e,tM}function cVe(){if($le)return rM;$le=1;var t=mE();function e(r,n){var i=this.__data__,a=t(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return o(e,"listCacheSet"),rM=e,rM}function uVe(){if(zle)return nM;zle=1;var t=aVe(),e=sVe(),r=oVe(),n=lVe(),i=cVe();function a(s){var l=-1,u=s==null?0:s.length;for(this.clear();++l-1&&n%1==0&&n0;){var f=i.shift();e(f),a.add(f.id()),l&&n(i,a,f)}return t}function Yue(t,e,r){if(r.isParent())for(var n=r._private.children,i=0;i0&&arguments[0]!==void 0?arguments[0]:bUe,e=arguments.length>1?arguments[1]:void 0,r=0;r0?E=_:L=_;while(Math.abs(D)>s&&++O=a?b(I,O):M===0?O:S(I,L,L+h)}o(w,"getTForX");var k=!1;function A(){k=!0,(t!==e||r!==n)&&T()}o(A,"precompute");var C=o(function(L){return k||A(),t===e&&r===n?L:L===0?0:L===1?1:v(w(L),e,n)},"f");C.getControlPoints=function(){return[{x:t,y:e},{x:r,y:n}]};var R="generateBezier("+[t,e,r,n]+")";return C.toString=function(){return R},C}function Dce(t,e,r,n,i){if(n===1||e===r)return r;var a=i(e,r,n);return t==null||((t.roundValue||t.color)&&(a=Math.round(a)),t.min!==void 0&&(a=Math.max(a,t.min)),t.max!==void 0&&(a=Math.min(a,t.max))),a}function Lce(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function jm(t,e,r,n,i){var a=i!=null?i.type:null;r<0?r=0:r>1&&(r=1);var s=Lce(t,i),l=Lce(e,i);if(At(s)&&At(l))return Dce(a,s,l,r,n);if(An(s)&&An(l)){for(var u=[],h=0;h0?(m==="spring"&&g.push(s.duration),s.easingImpl=Vk[m].apply(null,g)):s.easingImpl=Vk[m]}var y=s.easingImpl,v;if(s.duration===0?v=1:v=(r-u)/s.duration,s.applying&&(v=s.progress),v<0?v=0:v>1&&(v=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&i&&!t.locked()){var T={};X2(x.x,b.x)&&(T.x=jm(x.x,b.x,v,y)),X2(x.y,b.y)&&(T.y=jm(x.y,b.y,v,y)),t.position(T)}var S=s.startPan,w=s.pan,k=a.pan,A=w!=null&&n;A&&(X2(S.x,w.x)&&(k.x=jm(S.x,w.x,v,y)),X2(S.y,w.y)&&(k.y=jm(S.y,w.y,v,y)),t.emit("pan"));var C=s.startZoom,R=s.zoom,I=R!=null&&n;I&&(X2(C,R)&&(a.zoom=ox(a.minZoom,jm(C,R,v,y),a.maxZoom)),t.emit("zoom")),(A||I)&&t.emit("viewport");var L=s.style;if(L&&L.length>0&&i){for(var E=0;E=0;A--){var C=k[A];C()}k.splice(0,k.length)},"callbacks"),b=m.length-1;b>=0;b--){var T=m[b],S=T._private;if(S.stopped){m.splice(b,1),S.hooked=!1,S.playing=!1,S.started=!1,x(S.frames);continue}!S.playing&&!S.applying||(S.playing&&S.applying&&(S.applying=!1),S.started||IUe(f,T,t),MUe(f,T,t,d),S.applying&&(S.applying=!1),x(S.frames),S.step!=null&&S.step(t),T.completed()&&(m.splice(b,1),S.hooked=!1,S.playing=!1,S.started=!1,x(S.completes)),y=!0)}return!d&&m.length===0&&g.length===0&&n.push(f),y}o(i,"stepOne");for(var a=!1,s=0;s0?e.notify("draw",r):e.notify("draw")),r.unmerge(n),e.emit("step")}function hhe(t){this.options=ir({},VUe,UUe,t)}function fhe(t){this.options=ir({},HUe,t)}function dhe(t){this.options=ir({},qUe,t)}function kE(t){this.options=ir({},WUe,t),this.options.layout=this;var e=this.options.eles.nodes(),r=this.options.eles.edges(),n=r.filter(function(i){var a=i.source().data("id"),s=i.target().data("id"),l=e.some(function(h){return h.data("id")===a}),u=e.some(function(h){return h.data("id")===s});return!l||!u});this.options.eles=this.options.eles.not(n)}function yhe(t){this.options=ir({},oHe,t)}function _I(t){this.options=ir({},lHe,t)}function vhe(t){this.options=ir({},cHe,t)}function xhe(t){this.options=ir({},uHe,t)}function bhe(t){this.options=t,this.notifications=0}function khe(t,e){e.radius===0?t.lineTo(e.cx,e.cy):t.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}function LI(t,e,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return n===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(dHe(t,e,r,n,i),{cx:eI,cy:tI,radius:gp,startX:The,startY:whe,stopX:rI,stopY:nI,startAngle:Ic.ang+Math.PI/2*vp,endAngle:Yo.ang-Math.PI/2*vp,counterClockwise:qk})}function Ehe(t){var e=[];if(t!=null){for(var r=0;r5&&arguments[5]!==void 0?arguments[5]:5,s=Math.min(a,n/2,i/2);t.beginPath(),t.moveTo(e+s,r),t.lineTo(e+n-s,r),t.quadraticCurveTo(e+n,r,e+n,r+s),t.lineTo(e+n,r+i-s),t.quadraticCurveTo(e+n,r+i,e+n-s,r+i),t.lineTo(e+s,r+i),t.quadraticCurveTo(e,r+i,e,r+i-s),t.lineTo(e,r+s),t.quadraticCurveTo(e,r,e+s,r),t.closePath()}function Qce(t,e,r){var n=t.createShader(e);if(t.shaderSource(n,r),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error(t.getShaderInfoLog(n));return n}function rqe(t,e,r){var n=Qce(t,t.VERTEX_SHADER,e),i=Qce(t,t.FRAGMENT_SHADER,r),a=t.createProgram();if(t.attachShader(a,n),t.attachShader(a,i),t.linkProgram(a),!t.getProgramParameter(a,t.LINK_STATUS))throw new Error("Could not initialize shaders");return a}function nqe(t,e,r){r===void 0&&(r=e);var n=t.makeOffscreenCanvas(e,r),i=n.context=n.getContext("2d");return n.clear=function(){return i.clearRect(0,0,n.width,n.height)},n.clear(),n}function MI(t){var e=t.pixelRatio,r=t.cy.zoom(),n=t.cy.pan();return{zoom:r*e,pan:{x:n.x*e,y:n.y*e}}}function iqe(t){var e=t.pixelRatio,r=t.cy.zoom();return r*e}function aqe(t,e,r,n,i){var a=n*r+e.x,s=i*r+e.y;return s=Math.round(t.canvasHeight-s),[a,s]}function sqe(t){return t.pstyle("background-fill").value!=="solid"||t.pstyle("background-image").strValue!=="none"?!1:t.pstyle("border-width").value===0||t.pstyle("border-opacity").value===0?!0:t.pstyle("border-style").value==="solid"}function oqe(t,e){if(t.length!==e.length)return!1;for(var r=0;r>0&255)/255,r[1]=(t>>8&255)/255,r[2]=(t>>16&255)/255,r[3]=(t>>24&255)/255,r}function lqe(t){return t[0]+(t[1]<<8)+(t[2]<<16)+(t[3]<<24)}function cqe(t,e){var r=t.createTexture();return r.buffer=function(n){t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_NEAREST),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n),t.generateMipmap(t.TEXTURE_2D),t.bindTexture(t.TEXTURE_2D,null)},r.deleteTexture=function(){t.deleteTexture(r)},r}function Bhe(t,e){switch(e){case"float":return[1,t.FLOAT,4];case"vec2":return[2,t.FLOAT,4];case"vec3":return[3,t.FLOAT,4];case"vec4":return[4,t.FLOAT,4];case"int":return[1,t.INT,4];case"ivec2":return[2,t.INT,4]}}function Fhe(t,e,r){switch(e){case t.FLOAT:return new Float32Array(r);case t.INT:return new Int32Array(r)}}function uqe(t,e,r,n,i,a){switch(e){case t.FLOAT:return new Float32Array(r.buffer,a*n,i);case t.INT:return new Int32Array(r.buffer,a*n,i)}}function hqe(t,e,r,n){var i=Bhe(t,e),a=_i(i,2),s=a[0],l=a[1],u=Fhe(t,l,n),h=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,h),t.bufferData(t.ARRAY_BUFFER,u,t.STATIC_DRAW),l===t.FLOAT?t.vertexAttribPointer(r,s,l,!1,0,0):l===t.INT&&t.vertexAttribIPointer(r,s,l,0,0),t.enableVertexAttribArray(r),t.bindBuffer(t.ARRAY_BUFFER,null),h}function Mc(t,e,r,n){var i=Bhe(t,r),a=_i(i,3),s=a[0],l=a[1],u=a[2],h=Fhe(t,l,e*s),f=s*u,d=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,d),t.bufferData(t.ARRAY_BUFFER,e*f,t.DYNAMIC_DRAW),t.enableVertexAttribArray(n),l===t.FLOAT?t.vertexAttribPointer(n,s,l,!1,f,0):l===t.INT&&t.vertexAttribIPointer(n,s,l,f,0),t.vertexAttribDivisor(n,1),t.bindBuffer(t.ARRAY_BUFFER,null);for(var p=new Array(e),m=0;mNhe?(_qe(t),e.call(t,a)):(Dqe(t),Vhe(t,a,nx.SCREEN)))}}{var r=t.matchCanvasSize;t.matchCanvasSize=function(a){r.call(t,a),t.pickingFrameBuffer.setFramebufferAttachmentSizes(t.canvasWidth,t.canvasHeight),t.pickingFrameBuffer.needsDraw=!0}}t.findNearestElements=function(a,s,l,u){return Oqe(t,a,s)};{var n=t.invalidateCachedZSortedEles;t.invalidateCachedZSortedEles=function(){n.call(t),t.pickingFrameBuffer.needsDraw=!0}}{var i=t.notify;t.notify=function(a,s){i.call(t,a,s),a==="viewport"||a==="bounds"?t.pickingFrameBuffer.needsDraw=!0:a==="background"&&t.drawing.invalidate(s,{type:"node-body"})}}}function _qe(t){var e=t.data.contexts[t.WEBGL];e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}function Dqe(t){var e=o(function(n){n.save(),n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t.canvasWidth,t.canvasHeight),n.restore()},"clear");e(t.data.contexts[t.NODE]),e(t.data.contexts[t.DRAG])}function Lqe(t){var e=t.canvasWidth,r=t.canvasHeight,n=MI(t),i=n.pan,a=n.zoom,s=BM();Yk(s,s,[i.x,i.y]),aI(s,s,[a,a]);var l=BM();mqe(l,e,r);var u=BM();return pqe(u,l,s),u}function Ghe(t,e){var r=t.canvasWidth,n=t.canvasHeight,i=MI(t),a=i.pan,s=i.zoom;e.setTransform(1,0,0,1,0,0),e.clearRect(0,0,r,n),e.translate(a.x,a.y),e.scale(s,s)}function Rqe(t,e){t.drawSelectionRectangle(e,function(r){return Ghe(t,r)})}function Nqe(t){var e=t.data.contexts[t.NODE];e.save(),Ghe(t,e),e.strokeStyle="rgba(0, 0, 0, 0.3)",e.beginPath(),e.moveTo(-1e3,0),e.lineTo(1e3,0),e.stroke(),e.beginPath(),e.moveTo(0,-1e3),e.lineTo(0,1e3),e.stroke(),e.restore()}function Mqe(t){var e=o(function(i,a,s){for(var l=i.atlasManager.getAtlasCollection(a),u=t.data.contexts[t.NODE],h=l.atlases,f=0;f=0&&S.add(A)}return S}function Oqe(t,e,r){var n=Iqe(t,e,r),i=t.getCachedZSortedEles(),a,s,l=qs(n),u;try{for(l.s();!(u=l.n()).done;){var h=u.value,f=i[h];if(!a&&f.isNode()&&(a=f),!s&&f.isEdge()&&(s=f),a&&s)break}}catch(d){l.e(d)}finally{l.f()}return[a,s].filter(Boolean)}function VM(t,e,r){var n=t.drawing;e+=1,r.isNode()?(n.drawNode(r,e,"node-underlay"),n.drawNode(r,e,"node-body"),n.drawTexture(r,e,"label"),n.drawNode(r,e,"node-overlay")):(n.drawEdgeLine(r,e),n.drawEdgeArrow(r,e,"source"),n.drawEdgeArrow(r,e,"target"),n.drawTexture(r,e,"label"),n.drawTexture(r,e,"edge-source-label"),n.drawTexture(r,e,"edge-target-label"))}function Vhe(t,e,r){var n;t.webglDebug&&(n=performance.now());var i=t.drawing,a=0;if(r.screen&&t.data.canvasNeedsRedraw[t.SELECT_BOX]&&Rqe(t,e),t.data.canvasNeedsRedraw[t.NODE]||r.picking){var s=t.data.contexts[t.WEBGL];r.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=Lqe(t),u=t.getCachedZSortedEles();if(a=u.length,i.startFrame(l,r),r.screen){for(var h=0;h{"use strict";o(UM,"_arrayLikeToArray");o(p$e,"_arrayWithHoles");o(m$e,"_arrayWithoutHoles");o(Af,"_classCallCheck");o(g$e,"_defineProperties");o(_f,"_createClass");o(qs,"_createForOfIteratorHelper");o(sue,"_defineProperty$1");o(y$e,"_iterableToArray");o(v$e,"_iterableToArrayLimit");o(x$e,"_nonIterableRest");o(b$e,"_nonIterableSpread");o(_i,"_slicedToArray");o(Xk,"_toConsumableArray");o(T$e,"_toPrimitive");o(oue,"_toPropertyKey");o($i,"_typeof");o(cI,"_unsupportedIterableToArray");Bi=typeof window>"u"?null:window,Noe=Bi?Bi.navigator:null;Bi&&Bi.document;w$e=$i(""),lue=$i({}),k$e=$i(function(){}),E$e=typeof HTMLElement>"u"?"undefined":$i(HTMLElement),px=o(function(e){return e&&e.instanceString&&oi(e.instanceString)?e.instanceString():null},"instanceStr"),Jt=o(function(e){return e!=null&&$i(e)==w$e},"string"),oi=o(function(e){return e!=null&&$i(e)===k$e},"fn"),An=o(function(e){return!fo(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},"array"),Yr=o(function(e){return e!=null&&$i(e)===lue&&!An(e)&&e.constructor===Object},"plainObject"),S$e=o(function(e){return e!=null&&$i(e)===lue},"object"),At=o(function(e){return e!=null&&$i(e)===$i(1)&&!isNaN(e)},"number"),C$e=o(function(e){return At(e)&&Math.floor(e)===e},"integer"),jk=o(function(e){if(E$e!=="undefined")return e!=null&&e instanceof HTMLElement},"htmlElement"),fo=o(function(e){return mx(e)||cue(e)},"elementOrCollection"),mx=o(function(e){return px(e)==="collection"&&e._private.single},"element"),cue=o(function(e){return px(e)==="collection"&&!e._private.single},"collection"),uI=o(function(e){return px(e)==="core"},"core"),uue=o(function(e){return px(e)==="stylesheet"},"stylesheet"),A$e=o(function(e){return px(e)==="event"},"event"),Tf=o(function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},"emptyString"),_$e=o(function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},"domElement"),D$e=o(function(e){return Yr(e)&&At(e.x1)&&At(e.x2)&&At(e.y1)&&At(e.y2)},"boundingBox"),L$e=o(function(e){return S$e(e)&&oi(e.then)},"promise"),R$e=o(function(){return Noe&&Noe.userAgent.match(/msie|trident|edge/i)},"ms"),lg=o(function(e,r){r||(r=o(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;sr?1:0},"ascending"),F$e=o(function(e,r){return-1*fue(e,r)},"descending"),ir=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(v-=1),v<1/6?g+(y-g)*6*v:v<1/2?y:v<2/3?g+(y-g)*(2/3-v)*6:g}o(f,"hue2rgb");var d=new RegExp("^"+I$e+"$").exec(e);if(d){if(n=parseInt(d[1]),n<0?n=(360- -1*n%360)%360:n>360&&(n=n%360),n/=360,i=parseFloat(d[2]),i<0||i>100||(i=i/100,a=parseFloat(d[3]),a<0||a>100)||(a=a/100,s=d[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(i===0)l=u=h=Math.round(a*255);else{var p=a<.5?a*(1+i):a+i-a*i,m=2*a-p;l=Math.round(255*f(m,p,n+1/3)),u=Math.round(255*f(m,p,n)),h=Math.round(255*f(m,p,n-1/3))}r=[l,u,h,s]}return r},"hsl2tuple"),G$e=o(function(e){var r,n=new RegExp("^"+N$e+"$").exec(e);if(n){r=[];for(var i=[],a=1;a<=3;a++){var s=n[a];if(s[s.length-1]==="%"&&(i[a]=!0),s=parseFloat(s),i[a]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var l=i[1]||i[2]||i[3],u=i[1]&&i[2]&&i[3];if(l&&!u)return;var h=n[4];if(h!==void 0){if(h=parseFloat(h),h<0||h>1)return;r.push(h)}}return r},"rgb2tuple"),V$e=o(function(e){return U$e[e.toLowerCase()]},"colorname2tuple"),due=o(function(e){return(An(e)?e:null)||V$e(e)||$$e(e)||G$e(e)||z$e(e)},"color2tuple"),U$e={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},pue=o(function(e){for(var r=e.map,n=e.keys,i=n.length,a=0;a1&&arguments[1]!==void 0?arguments[1]:yp,n=r,i;i=e.next(),!i.done;)n=n*vue+i.value|0;return n},"hashIterableInts"),ix=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yp;return r*vue+e|0},"hashInt"),ax=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:eg;return(r<<5)+r+e|0},"hashIntAlt"),tze=o(function(e,r){return e*2097152+r},"combineHashes"),df=o(function(e){return e[0]*2097152+e[1]},"combineHashesArray"),Sk=o(function(e,r){return[ix(e[0],r[0]),ax(e[1],r[1])]},"hashArrays"),Xoe=o(function(e,r){var n={value:0,done:!1},i=0,a=e.length,s={next:o(function(){return i=0;i--)e[i]===r&&e.splice(i,1)},"removeFromArray"),mI=o(function(e){e.splice(0,e.length)},"clearArray"),hze=o(function(e,r){for(var n=0;n"u"?"undefined":$i(Set))!==dze?Set:pze,uE=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!uI(e)){Kn("An element must have a core reference and parameters set");return}var i=r.group;if(i==null&&(r.data&&r.data.source!=null&&r.data.target!=null?i="edges":i="nodes"),i!=="nodes"&&i!=="edges"){Kn("An element must be of type `nodes` or `edges`; you specified `"+i+"`");return}this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?i==="edges":!!r.pannable,active:!1,classes:new hg,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(a.position.x==null&&(a.position.x=0),a.position.y==null&&(a.position.y=0),r.renderedPosition){var s=r.renderedPosition,l=e.pan(),u=e.zoom();a.position={x:(s.x-l.x)/u,y:(s.y-l.y)/u}}var h=[];An(r.classes)?h=r.classes:Jt(r.classes)&&(h=r.classes.split(/\s+/));for(var f=0,d=h.length;f0;){var k=b.pop(),A=v(k),C=k.id();if(p[C]=A,A!==1/0)for(var R=k.neighborhood().intersect(g),I=0;I0)for(B.unshift(P);d[G];){var $=d[G];B.unshift($.edge),B.unshift($.node),F=$.node,G=F.id()}return l.spawn(B)},"pathTo")}},"dijkstra")},Tze={kruskal:o(function(e){e=e||function(T){return 1};for(var r=this.byGroup(),n=r.nodes,i=r.edges,a=n.length,s=new Array(a),l=n,u=o(function(S){for(var w=0;w0;){if(w(),A++,S===f){for(var C=[],R=a,I=f,L=x[I];C.unshift(R),L!=null&&C.unshift(L),R=v[I],R!=null;)I=R.id(),L=x[I];return{found:!0,distance:d[S],path:this.spawn(C),steps:A}}m[S]=!0;for(var E=T._private.edges,D=0;DL&&(g[I]=L,b[I]=R,T[I]=w),!a){var E=R*f+C;!a&&g[E]>L&&(g[E]=L,b[E]=C,T[E]=w)}}}for(var D=0;D1&&arguments[1]!==void 0?arguments[1]:s,pe=T(q),Be=[],Ye=pe;;){if(Ye==null)return r.spawn();var He=b(Ye),Le=He.edge,Ie=He.pred;if(Be.unshift(Ye[0]),Ye.same(Ve)&&Be.length>0)break;Le!=null&&Be.unshift(Le),Ye=Ie}return u.spawn(Be)},"pathTo"),k=0;k=0;f--){var d=h[f],p=d[1],m=d[2];(r[p]===l&&r[m]===u||r[p]===u&&r[m]===l)&&h.splice(f,1)}for(var g=0;gi;){var a=Math.floor(Math.random()*r.length);r=Dze(a,e,r),n--}return r},"contractUntil"),Lze={kargerStein:o(function(){var e=this,r=this.byGroup(),n=r.nodes,i=r.edges;i.unmergeBy(function(B){return B.isLoop()});var a=n.length,s=i.length,l=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),u=Math.floor(a/_ze);if(a<2){Kn("At least 2 nodes are required for Karger-Stein algorithm");return}for(var h=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=-1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=0,a=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;i?e=e.slice(r,n):(n0&&e.splice(0,r));for(var l=0,u=e.length-1;u>=0;u--){var h=e[u];s?isFinite(h)||(e[u]=-1/0,l++):e.splice(u,1)}a&&e.sort(function(p,m){return p-m});var f=e.length,d=Math.floor(f/2);return f%2!==0?e[d+1+l]:(e[d-1+l]+e[d+l])/2},"median"),Pze=o(function(e){return Math.PI*e/180},"deg2rad"),Ck=o(function(e,r){return Math.atan2(r,e)-Math.PI/2},"getAngleFromDisp"),gI=Math.log2||function(t){return Math.log(t)/Math.log(2)},yI=o(function(e){return e>0?1:e<0?-1:0},"signum"),Tp=o(function(e,r){return Math.sqrt(mp(e,r))},"dist"),mp=o(function(e,r){var n=r.x-e.x,i=r.y-e.y;return n*n+i*i},"sqdist"),Bze=o(function(e){for(var r=e.length,n=0,i=0;i=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},"makeBoundingBox"),$ze=o(function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},"copyBoundingBox"),zze=o(function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},"clearBoundingBox"),Gze=o(function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1},"updateBoundingBox"),Cue=o(function(e,r,n){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},"expandBoundingBoxByPoint"),Fk=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBox"),$k=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],n,i,a,s;if(r.length===1)n=i=a=s=r[0];else if(r.length===2)n=a=r[0],s=i=r[1];else if(r.length===4){var l=_i(r,4);n=l[0],i=l[1],a=l[2],s=l[3]}return e.x1-=s,e.x2+=i,e.y1-=n,e.y2+=a,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBoxSides"),ele=o(function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},"assignBoundingBox"),vI=o(function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)},"boundingBoxesIntersect"),yf=o(function(e,r,n){return e.x1<=r&&r<=e.x2&&e.y1<=n&&n<=e.y2},"inBoundingBox"),tle=o(function(e,r){return yf(e,r.x,r.y)},"pointInBoundingBox"),Aue=o(function(e,r){return yf(e,r.x1,r.y1)&&yf(e,r.x2,r.y2)},"boundingBoxInBoundingBox"),Vze=(LN=Math.hypot)!==null&&LN!==void 0?LN:function(t,e){return Math.sqrt(t*t+e*e)};o(Uze,"inflatePolygon");o(Hze,"miterBox");_ue=o(function(e,r,n,i,a,s,l){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",h=u==="auto"?kf(a,s):u,f=a/2,d=s/2;h=Math.min(h,f,d);var p=h!==f,m=h!==d,g;if(p){var y=n-f+h-l,v=i-d-l,x=n+f-h+l,b=v;if(g=vf(e,r,n,i,y,v,x,b,!1),g.length>0)return g}if(m){var T=n+f+l,S=i-d+h-l,w=T,k=i+d-h+l;if(g=vf(e,r,n,i,T,S,w,k,!1),g.length>0)return g}if(p){var A=n-f+h-l,C=i+d+l,R=n+f-h+l,I=C;if(g=vf(e,r,n,i,A,C,R,I,!1),g.length>0)return g}if(m){var L=n-f-l,E=i-d+h-l,D=L,_=i+d-h+l;if(g=vf(e,r,n,i,L,E,D,_,!1),g.length>0)return g}var O;{var M=n-f+h,P=i-d+h;if(O=Z2(e,r,n,i,M,P,h+l),O.length>0&&O[0]<=M&&O[1]<=P)return[O[0],O[1]]}{var B=n+f-h,F=i-d+h;if(O=Z2(e,r,n,i,B,F,h+l),O.length>0&&O[0]>=B&&O[1]<=F)return[O[0],O[1]]}{var G=n+f-h,$=i+d-h;if(O=Z2(e,r,n,i,G,$,h+l),O.length>0&&O[0]>=G&&O[1]>=$)return[O[0],O[1]]}{var U=n-f+h,j=i+d-h;if(O=Z2(e,r,n,i,U,j,h+l),O.length>0&&O[0]<=U&&O[1]>=j)return[O[0],O[1]]}return[]},"roundRectangleIntersectLine"),qze=o(function(e,r,n,i,a,s,l){var u=l,h=Math.min(n,a),f=Math.max(n,a),d=Math.min(i,s),p=Math.max(i,s);return h-u<=e&&e<=f+u&&d-u<=r&&r<=p+u},"inLineVicinity"),Wze=o(function(e,r,n,i,a,s,l,u,h){var f={x1:Math.min(n,l,a)-h,x2:Math.max(n,l,a)+h,y1:Math.min(i,u,s)-h,y2:Math.max(i,u,s)+h};return!(ef.x2||rf.y2)},"inBezierVicinity"),Yze=o(function(e,r,n,i){n-=i;var a=r*r-4*e*n;if(a<0)return[];var s=Math.sqrt(a),l=2*e,u=(-r+s)/l,h=(-r-s)/l;return[u,h]},"solveQuadratic"),Xze=o(function(e,r,n,i,a){var s=1e-5;e===0&&(e=s),r/=e,n/=e,i/=e;var l,u,h,f,d,p,m,g;if(u=(3*n-r*r)/9,h=-(27*i)+r*(9*n-2*(r*r)),h/=54,l=u*u*u+h*h,a[1]=0,m=r/3,l>0){d=h+Math.sqrt(l),d=d<0?-Math.pow(-d,1/3):Math.pow(d,1/3),p=h-Math.sqrt(l),p=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),a[0]=-m+d+p,m+=(d+p)/2,a[4]=a[2]=-m,m=Math.sqrt(3)*(-p+d)/2,a[3]=m,a[5]=-m;return}if(a[5]=a[3]=0,l===0){g=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),a[0]=-m+2*g,a[4]=a[2]=-(g+m);return}u=-u,f=u*u*u,f=Math.acos(h/Math.sqrt(f)),g=2*Math.sqrt(u),a[0]=-m+g*Math.cos(f/3),a[2]=-m+g*Math.cos((f+2*Math.PI)/3),a[4]=-m+g*Math.cos((f+4*Math.PI)/3)},"solveCubic"),jze=o(function(e,r,n,i,a,s,l,u){var h=1*n*n-4*n*a+2*n*l+4*a*a-4*a*l+l*l+i*i-4*i*s+2*i*u+4*s*s-4*s*u+u*u,f=9*n*a-3*n*n-3*n*l-6*a*a+3*a*l+9*i*s-3*i*i-3*i*u-6*s*s+3*s*u,d=3*n*n-6*n*a+n*l-n*e+2*a*a+2*a*e-l*e+3*i*i-6*i*s+i*u-i*r+2*s*s+2*s*r-u*r,p=1*n*a-n*n+n*e-a*e+i*s-i*i+i*r-s*r,m=[];Xze(h,f,d,p,m);for(var g=1e-7,y=[],v=0;v<6;v+=2)Math.abs(m[v+1])=0&&m[v]<=1&&y.push(m[v]);y.push(1),y.push(0);for(var x=-1,b,T,S,w=0;w=0?Sh?(e-a)*(e-a)+(r-s)*(r-s):f-p},"sqdistToFiniteLine"),Hs=o(function(e,r,n){for(var i,a,s,l,u,h=0,f=0;f=e&&e>=s||i<=e&&e<=s)u=(e-i)/(s-i)*(l-a)+a,u>r&&h++;else continue;return h%2!==0},"pointInsidePolygonPoints"),Vu=o(function(e,r,n,i,a,s,l,u,h){var f=new Array(n.length),d;u[0]!=null?(d=Math.atan(u[1]/u[0]),u[0]<0?d=d+Math.PI/2:d=-d-Math.PI/2):d=u;for(var p=Math.cos(-d),m=Math.sin(-d),g=0;g0){var v=Jk(f,-h);y=Zk(v)}else y=f;return Hs(e,r,y)},"pointInsidePolygon"),Qze=o(function(e,r,n,i,a,s,l,u){for(var h=new Array(n.length*2),f=0;f=0&&v<=1&&b.push(v),x>=0&&x<=1&&b.push(x),b.length===0)return[];var T=b[0]*u[0]+e,S=b[0]*u[1]+r;if(b.length>1){if(b[0]==b[1])return[T,S];var w=b[1]*u[0]+e,k=b[1]*u[1]+r;return[T,S,w,k]}else return[T,S]},"intersectLineCircle"),RN=o(function(e,r,n){return r<=e&&e<=n||n<=e&&e<=r?e:e<=r&&r<=n||n<=r&&r<=e?r:n},"midOfThree"),vf=o(function(e,r,n,i,a,s,l,u,h){var f=e-a,d=n-e,p=l-a,m=r-s,g=i-r,y=u-s,v=p*m-y*f,x=d*m-g*f,b=y*d-p*g;if(b!==0){var T=v/b,S=x/b,w=.001,k=0-w,A=1+w;return k<=T&&T<=A&&k<=S&&S<=A?[e+T*d,r+T*g]:h?[e+T*d,r+T*g]:[]}else return v===0||x===0?RN(e,n,l)===l?[l,u]:RN(e,n,a)===a?[a,s]:RN(a,l,n)===n?[n,i]:[]:[]},"finiteLinesIntersect"),Jze=o(function(e,r,n,i,a){var s=[],l=i/2,u=a/2,h=r,f=n;s.push({x:h+l*e[0],y:f+u*e[1]});for(var d=1;d0){var y=Jk(d,-u);m=Zk(y)}else m=d}else m=n;for(var v,x,b,T,S=0;S2){for(var g=[f[0],f[1]],y=Math.pow(g[0]-e,2)+Math.pow(g[1]-r,2),v=1;vf&&(f=S)},"set"),get:o(function(T){return h[T]},"get")},p=0;p0?O=_.edgesTo(D)[0]:O=D.edgesTo(_)[0];var M=i(O);D=D.id(),A[D]>A[L]+M&&(A[D]=A[L]+M,C.nodes.indexOf(D)<0?C.push(D):C.updateItem(D),k[D]=0,w[D]=[]),A[D]==A[L]+M&&(k[D]=k[D]+k[L],w[D].push(L))}else for(var P=0;P0;){for(var $=S.pop(),U=0;U0&&l.push(n[u]);l.length!==0&&a.push(i.collection(l))}return a},"assign"),pGe=o(function(e,r){for(var n=0;n5&&arguments[5]!==void 0?arguments[5]:yGe,l=i,u,h,f=0;f=2?q2(e,r,n,0,sle,vGe):q2(e,r,n,0,ale)},"euclidean"),squaredEuclidean:o(function(e,r,n){return q2(e,r,n,0,sle)},"squaredEuclidean"),manhattan:o(function(e,r,n){return q2(e,r,n,0,ale)},"manhattan"),max:o(function(e,r,n){return q2(e,r,n,-1/0,xGe)},"max")};cg["squared-euclidean"]=cg.squaredEuclidean;cg.squaredeuclidean=cg.squaredEuclidean;o(fE,"clusteringDistance");bGe=xa({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),bI=o(function(e){return bGe(e)},"setOptions"),eE=o(function(e,r,n,i,a){var s=a!=="kMedoids",l=s?function(d){return n[d]}:function(d){return i[d](n)},u=o(function(p){return i[p](r)},"getQ"),h=n,f=r;return fE(e,i.length,l,u,h,f)},"getDist"),MN=o(function(e,r,n){for(var i=n.length,a=new Array(i),s=new Array(i),l=new Array(r),u=null,h=0;hn)return!1}return!0},"haveMatricesConverged"),kGe=o(function(e,r,n){for(var i=0;il&&(l=r[h][f],u=f);a[u].push(e[h])}for(var d=0;d=a.threshold||a.mode==="dendrogram"&&e.length===1)return!1;var g=r[s],y=r[i[s]],v;a.mode==="dendrogram"?v={left:g,right:y,key:g.key}:v={value:g.value.concat(y.value),key:g.key},e[g.index]=v,e.splice(y.index,1),r[g.key]=v;for(var x=0;xn[y.key][b.key]&&(u=n[y.key][b.key])):a.linkage==="max"?(u=n[g.key][b.key],n[g.key][b.key]0&&i.push(a);return i},"findExemplars"),fle=o(function(e,r,n){for(var i=[],a=0;al&&(s=h,l=r[a*e+h])}s>0&&i.push(s)}for(var f=0;fh&&(u=f,h=d)}n[a]=s[u]}return i=fle(e,r,n),i},"assign"),dle=o(function(e){for(var r=this.cy(),n=this.nodes(),i=OGe(e),a={},s=0;s=L?(E=L,L=_,D=O):_>E&&(E=_);for(var M=0;M0?1:0;A[R%i.minIterations*l+U]=j,$+=j}if($>0&&(R>=i.minIterations-1||R==i.maxIterations-1)){for(var te=0,Y=0;Y1||k>1)&&(l=!0),d[T]=[],b.outgoers().forEach(function(C){C.isEdge()&&d[T].push(C.id())})}else p[T]=[void 0,b.target().id()]}):s.forEach(function(b){var T=b.id();if(b.isNode()){var S=b.degree(!0);S%2&&(u?h?l=!0:h=T:u=T),d[T]=[],b.connectedEdges().forEach(function(w){return d[T].push(w.id())})}else p[T]=[b.source().id(),b.target().id()]});var m={found:!1,trail:void 0};if(l)return m;if(h&&u)if(a){if(f&&h!=f)return m;f=h}else{if(f&&h!=f&&u!=f)return m;f||(f=h)}else f||(f=s[0].id());var g=o(function(T){for(var S=T,w=[T],k,A,C;d[S].length;)k=d[S].shift(),A=p[k][0],C=p[k][1],S!=C?(d[C]=d[C].filter(function(R){return R!=k}),S=C):!a&&S!=A&&(d[A]=d[A].filter(function(R){return R!=k}),S=A),w.unshift(k),w.unshift(S);return w},"walk"),y=[],v=[];for(v=g(f);v.length!=1;)d[v[0]].length==0?(y.unshift(s.getElementById(v.shift())),y.unshift(s.getElementById(v.shift()))):v=g(v.shift()).concat(v);y.unshift(s.getElementById(v.shift()));for(var x in d)if(d[x].length)return m;return m.found=!0,m.trail=this.spawn(y,!0),m},"hierholzer")},_k=o(function(){var e=this,r={},n=0,i=0,a=[],s=[],l={},u=o(function(p,m){for(var g=s.length-1,y=[],v=e.spawn();s[g].x!=p||s[g].y!=m;)y.push(s.pop().edge),g--;y.push(s.pop().edge),y.forEach(function(x){var b=x.connectedNodes().intersection(e);v.merge(x),b.forEach(function(T){var S=T.id(),w=T.connectedEdges().intersection(e);v.merge(T),r[S].cutVertex?v.merge(w.filter(function(k){return k.isLoop()})):v.merge(w)})}),a.push(v)},"buildComponent"),h=o(function(p,m,g){p===g&&(i+=1),r[m]={id:n,low:n++,cutVertex:!1};var y=e.getElementById(m).connectedEdges().intersection(e);if(y.size()===0)a.push(e.spawn(e.getElementById(m)));else{var v,x,b,T;y.forEach(function(S){v=S.source().id(),x=S.target().id(),b=v===m?x:v,b!==g&&(T=S.id(),l[T]||(l[T]=!0,s.push({x:m,y:b,edge:S})),b in r?r[m].low=Math.min(r[m].low,r[b].id):(h(p,b,m),r[m].low=Math.min(r[m].low,r[b].low),r[m].id<=r[b].low&&(r[m].cutVertex=!0,u(m,b))))})}},"biconnectedSearch");e.forEach(function(d){if(d.isNode()){var p=d.id();p in r||(i=0,h(p,p),r[p].cutVertex=i>1)}});var f=Object.keys(r).filter(function(d){return r[d].cutVertex}).map(function(d){return e.getElementById(d)});return{cut:e.spawn(f),components:a}},"hopcroftTarjanBiconnected"),UGe={hopcroftTarjanBiconnected:_k,htbc:_k,htb:_k,hopcroftTarjanBiconnectedComponents:_k},Dk=o(function(){var e=this,r={},n=0,i=[],a=[],s=e.spawn(e),l=o(function(h){a.push(h),r[h]={index:n,low:n++,explored:!1};var f=e.getElementById(h).connectedEdges().intersection(e);if(f.forEach(function(y){var v=y.target().id();v!==h&&(v in r||l(v),r[v].explored||(r[h].low=Math.min(r[h].low,r[v].low)))}),r[h].index===r[h].low){for(var d=e.spawn();;){var p=a.pop();if(d.merge(e.getElementById(p)),r[p].low=r[h].index,r[p].explored=!0,p===h)break}var m=d.edgesWith(d),g=d.merge(m);i.push(g),s=s.difference(g)}},"stronglyConnectedSearch");return e.forEach(function(u){if(u.isNode()){var h=u.id();h in r||l(h)}}),{cut:s,components:i}},"tarjanStronglyConnected"),HGe={tarjanStronglyConnected:Dk,tsc:Dk,tscc:Dk,tarjanStronglyConnectedComponents:Dk},Oue={};[sx,bze,Tze,kze,Sze,Aze,Lze,nGe,ag,sg,WM,gGe,DGe,MGe,zGe,VGe,UGe,HGe].forEach(function(t){ir(Oue,t)});Pue=0,Bue=1,Fue=2,Il=o(function(e){if(!(this instanceof Il))return new Il(e);this.id="Thenable/1.0.7",this.state=Pue,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))},"api");Il.prototype={fulfill:o(function(e){return ple(this,Bue,"fulfillValue",e)},"fulfill"),reject:o(function(e){return ple(this,Fue,"rejectReason",e)},"reject"),then:o(function(e,r){var n=this,i=new Il;return n.onFulfilled.push(gle(e,i,"fulfill")),n.onRejected.push(gle(r,i,"reject")),$ue(n),i.proxy},"then")};ple=o(function(e,r,n,i){return e.state===Pue&&(e.state=r,e[n]=i,$ue(e)),e},"deliver"),$ue=o(function(e){e.state===Bue?mle(e,"onFulfilled",e.fulfillValue):e.state===Fue&&mle(e,"onRejected",e.rejectReason)},"execute"),mle=o(function(e,r,n){if(e[r].length!==0){var i=e[r];e[r]=[];var a=o(function(){for(var l=0;l0},"animatedImpl")},"animated"),clearQueue:o(function(){return o(function(){var r=this,n=r.length!==void 0,i=n?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var s=0;s0&&this.spawn(i).updateStyle().emit("class"),r},"classes"),addClass:o(function(e){return this.toggleClass(e,!0)},"addClass"),hasClass:o(function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},"hasClass"),toggleClass:o(function(e,r){An(e)||(e=e.match(/\S+/g)||[]);for(var n=this,i=r===void 0,a=[],s=0,l=n.length;s0&&this.spawn(a).updateStyle().emit("class"),n},"toggleClass"),removeClass:o(function(e){return this.toggleClass(e,!1)},"removeClass"),flashClass:o(function(e,r){var n=this;if(r==null)r=250;else if(r===0)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},r),n},"flashClass")};zk.className=zk.classNames=zk.classes;Wr={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:Fi,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};Wr.variable="(?:[\\w-.]|(?:\\\\"+Wr.metaChar+"))+";Wr.className="(?:[\\w-]|(?:\\\\"+Wr.metaChar+"))+";Wr.value=Wr.string+"|"+Wr.number;Wr.id=Wr.variable;(function(){var t,e,r;for(t=Wr.comparatorOp.split("|"),r=0;r=0)&&e!=="="&&(Wr.comparatorOp+="|\\!"+e)})();xn=o(function(){return{checks:[]}},"newQuery"),zt={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},KM=[{selector:":selected",matches:o(function(e){return e.selected()},"matches")},{selector:":unselected",matches:o(function(e){return!e.selected()},"matches")},{selector:":selectable",matches:o(function(e){return e.selectable()},"matches")},{selector:":unselectable",matches:o(function(e){return!e.selectable()},"matches")},{selector:":locked",matches:o(function(e){return e.locked()},"matches")},{selector:":unlocked",matches:o(function(e){return!e.locked()},"matches")},{selector:":visible",matches:o(function(e){return e.visible()},"matches")},{selector:":hidden",matches:o(function(e){return!e.visible()},"matches")},{selector:":transparent",matches:o(function(e){return e.transparent()},"matches")},{selector:":grabbed",matches:o(function(e){return e.grabbed()},"matches")},{selector:":free",matches:o(function(e){return!e.grabbed()},"matches")},{selector:":removed",matches:o(function(e){return e.removed()},"matches")},{selector:":inside",matches:o(function(e){return!e.removed()},"matches")},{selector:":grabbable",matches:o(function(e){return e.grabbable()},"matches")},{selector:":ungrabbable",matches:o(function(e){return!e.grabbable()},"matches")},{selector:":animated",matches:o(function(e){return e.animated()},"matches")},{selector:":unanimated",matches:o(function(e){return!e.animated()},"matches")},{selector:":parent",matches:o(function(e){return e.isParent()},"matches")},{selector:":childless",matches:o(function(e){return e.isChildless()},"matches")},{selector:":child",matches:o(function(e){return e.isChild()},"matches")},{selector:":orphan",matches:o(function(e){return e.isOrphan()},"matches")},{selector:":nonorphan",matches:o(function(e){return e.isChild()},"matches")},{selector:":compound",matches:o(function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()},"matches")},{selector:":loop",matches:o(function(e){return e.isLoop()},"matches")},{selector:":simple",matches:o(function(e){return e.isSimple()},"matches")},{selector:":active",matches:o(function(e){return e.active()},"matches")},{selector:":inactive",matches:o(function(e){return!e.active()},"matches")},{selector:":backgrounding",matches:o(function(e){return e.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:o(function(e){return!e.backgrounding()},"matches")}].sort(function(t,e){return F$e(t.selector,e.selector)}),GVe=(function(){for(var t={},e,r=0;r0&&f.edgeCount>0)return hn("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return hn("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&hn("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},"parse"),YVe=o(function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=o(function(f){return f??""},"clean"),r=o(function(f){return Jt(f)?'"'+f+'"':e(f)},"cleanVal"),n=o(function(f){return" "+f+" "},"space"),i=o(function(f,d){var p=f.type,m=f.value;switch(p){case zt.GROUP:{var g=e(m);return g.substring(0,g.length-1)}case zt.DATA_COMPARE:{var y=f.field,v=f.operator;return"["+y+n(e(v))+r(m)+"]"}case zt.DATA_BOOL:{var x=f.operator,b=f.field;return"["+e(x)+b+"]"}case zt.DATA_EXIST:{var T=f.field;return"["+T+"]"}case zt.META_COMPARE:{var S=f.operator,w=f.field;return"[["+w+n(e(S))+r(m)+"]]"}case zt.STATE:return m;case zt.ID:return"#"+m;case zt.CLASS:return"."+m;case zt.PARENT:case zt.CHILD:return a(f.parent,d)+n(">")+a(f.child,d);case zt.ANCESTOR:case zt.DESCENDANT:return a(f.ancestor,d)+" "+a(f.descendant,d);case zt.COMPOUND_SPLIT:{var k=a(f.left,d),A=a(f.subject,d),C=a(f.right,d);return k+(k.length>0?" ":"")+A+C}case zt.TRUE:return""}},"checkToString"),a=o(function(f,d){return f.checks.reduce(function(p,m,g){return p+(d===f&&g===0?"$":"")+i(m,d)},"")},"queryToString"),s="",l=0;l1&&l=0&&(r=r.replace("!",""),d=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),f=!0),(a||l||f)&&(u=!a&&!s?"":""+e,h=""+n),f&&(e=u=u.toLowerCase(),n=h=h.toLowerCase()),r){case"*=":i=u.indexOf(h)>=0;break;case"$=":i=u.indexOf(h,u.length-h.length)>=0;break;case"^=":i=u.indexOf(h)===0;break;case"=":i=e===n;break;case">":p=!0,i=e>n;break;case">=":p=!0,i=e>=n;break;case"<":p=!0,i=e1&&arguments[1]!==void 0?arguments[1]:!0;return EI(this,t,e,Yue)};o(Xue,"addParent");ug.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return EI(this,t,e,Xue)};o(tUe,"addParentAndChildren");ug.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return EI(this,t,e,tUe)};ug.ancestors=ug.parents;cx=jue={data:un.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:un.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:un.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:un.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:un.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:un.removeData({field:"rscratch",triggerEvent:!1}),id:o(function(){var e=this[0];if(e)return e._private.data.id},"id")};cx.attr=cx.data;cx.removeAttr=cx.removeData;rUe=jue,yE={};o(RM,"defineDegreeFunction");ir(yE,{degree:RM(function(t,e){return e.source().same(e.target())?2:1}),indegree:RM(function(t,e){return e.target().same(t)?1:0}),outdegree:RM(function(t,e){return e.source().same(t)?1:0})});o(Xm,"defineDegreeBoundsFunction");ir(yE,{minDegree:Xm("degree",function(t,e){return te}),minIndegree:Xm("indegree",function(t,e){return te}),minOutdegree:Xm("outdegree",function(t,e){return te})});ir(yE,{totalDegree:o(function(e){for(var r=0,n=this.nodes(),i=0;i0,p=d;d&&(f=f[0]);var m=p?f.position():{x:0,y:0};r!==void 0?h.position(e,r+m[e]):a!==void 0&&h.position({x:a.x+m.x,y:a.y+m.y})}else{var g=n.position(),y=l?n.parent():null,v=y&&y.length>0,x=v;v&&(y=y[0]);var b=x?y.position():{x:0,y:0};return a={x:g.x-b.x,y:g.y-b.y},e===void 0?a:a[e]}else if(!s)return;return this},"relativePosition")};Ml.modelPosition=Ml.point=Ml.position;Ml.modelPositions=Ml.points=Ml.positions;Ml.renderedPoint=Ml.renderedPosition;Ml.relativePoint=Ml.relativePosition;nUe=Kue;og=Df={};Df.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),n=r.zoom(),i=r.pan(),a=e.x1*n+i.x,s=e.x2*n+i.x,l=e.y1*n+i.y,u=e.y2*n+i.y;return{x1:a,x2:s,y1:l,y2:u,w:s-a,h:u-l}};Df.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var n=r._private;n.compoundBoundsClean=!1,n.bbCache=null,t||r.emitAndNotify("bounds")}}),this)};Df.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(s){if(!s.isParent())return;var l=s._private,u=s.children(),h=s.pstyle("compound-sizing-wrt-labels").value==="include",f={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},d=u.boundingBox({includeLabels:h,includeOverlays:!1,useCache:!1}),p=l.position;(d.w===0||d.h===0)&&(d={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},d.x1=p.x-d.w/2,d.x2=p.x+d.w/2,d.y1=p.y-d.h/2,d.y2=p.y+d.h/2);function m(R,I,L){var E=0,D=0,_=I+L;return R>0&&_>0&&(E=I/_*R,D=L/_*R),{biasDiff:E,biasComplementDiff:D}}o(m,"computeBiasValues");function g(R,I,L,E){if(L.units==="%")switch(E){case"width":return R>0?L.pfValue*R:0;case"height":return I>0?L.pfValue*I:0;case"average":return R>0&&I>0?L.pfValue*(R+I)/2:0;case"min":return R>0&&I>0?R>I?L.pfValue*I:L.pfValue*R:0;case"max":return R>0&&I>0?R>I?L.pfValue*R:L.pfValue*I:0;default:return 0}else return L.units==="px"?L.pfValue:0}o(g,"computePaddingValues");var y=f.width.left.value;f.width.left.units==="px"&&f.width.val>0&&(y=y*100/f.width.val);var v=f.width.right.value;f.width.right.units==="px"&&f.width.val>0&&(v=v*100/f.width.val);var x=f.height.top.value;f.height.top.units==="px"&&f.height.val>0&&(x=x*100/f.height.val);var b=f.height.bottom.value;f.height.bottom.units==="px"&&f.height.val>0&&(b=b*100/f.height.val);var T=m(f.width.val-d.w,y,v),S=T.biasDiff,w=T.biasComplementDiff,k=m(f.height.val-d.h,x,b),A=k.biasDiff,C=k.biasComplementDiff;l.autoPadding=g(d.w,d.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),l.autoWidth=Math.max(d.w,f.width.val),p.x=(-S+d.x1+d.x2+w)/2,l.autoHeight=Math.max(d.h,f.height.val),p.y=(-A+d.y1+d.y2+C)/2}o(r,"update");for(var n=0;ne.x2?i:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},"updateBounds"),mf=o(function(e,r){return r==null?e:Nl(e,r.x1,r.y1,r.x2,r.y2)},"updateBoundsFromBox"),W2=o(function(e,r,n){return Us(e,r,n)},"prefixedProperty"),Lk=o(function(e,r,n){if(!r.cy().headless()){var i=r._private,a=i.rstyle,s=a.arrowWidth/2,l=r.pstyle(n+"-arrow-shape").value,u,h;if(l!=="none"){n==="source"?(u=a.srcX,h=a.srcY):n==="target"?(u=a.tgtX,h=a.tgtY):(u=a.midX,h=a.midY);var f=i.arrowBounds=i.arrowBounds||{},d=f[n]=f[n]||{};d.x1=u-s,d.y1=h-s,d.x2=u+s,d.y2=h+s,d.w=d.x2-d.x1,d.h=d.y2-d.y1,Fk(d,1),Nl(e,d.x1,d.y1,d.x2,d.y2)}}},"updateBoundsFromArrow"),NM=o(function(e,r,n){if(!r.cy().headless()){var i;n?i=n+"-":i="";var a=r._private,s=a.rstyle,l=r.pstyle(i+"label").strValue;if(l){var u=r.pstyle("text-halign"),h=r.pstyle("text-valign"),f=W2(s,"labelWidth",n),d=W2(s,"labelHeight",n),p=W2(s,"labelX",n),m=W2(s,"labelY",n),g=r.pstyle(i+"text-margin-x").pfValue,y=r.pstyle(i+"text-margin-y").pfValue,v=r.isEdge(),x=r.pstyle(i+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,T=r.pstyle("text-border-width").pfValue,S=T/2,w=r.pstyle("text-background-padding").pfValue,k=2,A=d,C=f,R=C/2,I=A/2,L,E,D,_;if(v)L=p-R,E=p+R,D=m-I,_=m+I;else{switch(u.value){case"left":L=p-C,E=p;break;case"center":L=p-R,E=p+R;break;case"right":L=p,E=p+C;break}switch(h.value){case"top":D=m-A,_=m;break;case"center":D=m-I,_=m+I;break;case"bottom":D=m,_=m+A;break}}var O=g-Math.max(b,S)-w-k,M=g+Math.max(b,S)+w+k,P=y-Math.max(b,S)-w-k,B=y+Math.max(b,S)+w+k;L+=O,E+=M,D+=P,_+=B;var F=n||"main",G=a.labelBounds,$=G[F]=G[F]||{};$.x1=L,$.y1=D,$.x2=E,$.y2=_,$.w=E-L,$.h=_-D,$.leftPad=O,$.rightPad=M,$.topPad=P,$.botPad=B;var U=v&&x.strValue==="autorotate",j=x.pfValue!=null&&x.pfValue!==0;if(U||j){var te=U?W2(a.rstyle,"labelAngle",n):x.pfValue,Y=Math.cos(te),oe=Math.sin(te),J=(L+E)/2,ue=(D+_)/2;if(!v){switch(u.value){case"left":J=E;break;case"right":J=L;break}switch(h.value){case"top":ue=_;break;case"bottom":ue=D;break}}var re=o(function(Te,q){return Te=Te-J,q=q-ue,{x:Te*Y-q*oe+J,y:Te*oe+q*Y+ue}},"rotate"),ee=re(L,D),Z=re(L,_),K=re(E,D),ae=re(E,_);L=Math.min(ee.x,Z.x,K.x,ae.x),E=Math.max(ee.x,Z.x,K.x,ae.x),D=Math.min(ee.y,Z.y,K.y,ae.y),_=Math.max(ee.y,Z.y,K.y,ae.y)}var Q=F+"Rot",de=G[Q]=G[Q]||{};de.x1=L,de.y1=D,de.x2=E,de.y2=_,de.w=E-L,de.h=_-D,Nl(e,L,D,E,_),Nl(a.labelBounds.all,L,D,E,_)}return e}},"updateBoundsFromLabel"),mce=o(function(e,r){if(!r.cy().headless()){var n=r.pstyle("outline-opacity").value,i=r.pstyle("outline-width").value,a=r.pstyle("outline-offset").value,s=i+a;Zue(e,r,n,s,"outside",s/2)}},"updateBoundsFromOutline"),Zue=o(function(e,r,n,i,a,s){if(!(n===0||i<=0||a==="inside")){var l=r.cy(),u=r.pstyle("shape").value,h=l.renderer().nodeShapes[u],f=r.position(),d=f.x,p=f.y,m=r.width(),g=r.height();if(h.hasMiterBounds){a==="center"&&(i/=2);var y=h.miterBounds(d,p,m,g,i);mf(e,y)}else s!=null&&s>0&&$k(e,[s,s,s,s])}},"updateBoundsFromMiter"),iUe=o(function(e,r){if(!r.cy().headless()){var n=r.pstyle("border-opacity").value,i=r.pstyle("border-width").pfValue,a=r.pstyle("border-position").value;Zue(e,r,n,i,a)}},"updateBoundsFromMiterBorder"),aUe=o(function(e,r){var n=e._private.cy,i=n.styleEnabled(),a=n.headless(),s=cs(),l=e._private,u=e.isNode(),h=e.isEdge(),f,d,p,m,g,y,v=l.rstyle,x=u&&i?e.pstyle("bounds-expansion").pfValue:[0],b=o(function(ne){return ne.pstyle("display").value!=="none"},"isDisplayed"),T=!i||b(e)&&(!h||b(e.source())&&b(e.target()));if(T){var S=0,w=0;i&&r.includeOverlays&&(S=e.pstyle("overlay-opacity").value,S!==0&&(w=e.pstyle("overlay-padding").value));var k=0,A=0;i&&r.includeUnderlays&&(k=e.pstyle("underlay-opacity").value,k!==0&&(A=e.pstyle("underlay-padding").value));var C=Math.max(w,A),R=0,I=0;if(i&&(R=e.pstyle("width").pfValue,I=R/2),u&&r.includeNodes){var L=e.position();g=L.x,y=L.y;var E=e.outerWidth(),D=E/2,_=e.outerHeight(),O=_/2;f=g-D,d=g+D,p=y-O,m=y+O,Nl(s,f,p,d,m),i&&mce(s,e),i&&r.includeOutlines&&!a&&mce(s,e),i&&iUe(s,e)}else if(h&&r.includeEdges)if(i&&!a){var M=e.pstyle("curve-style").strValue;if(f=Math.min(v.srcX,v.midX,v.tgtX),d=Math.max(v.srcX,v.midX,v.tgtX),p=Math.min(v.srcY,v.midY,v.tgtY),m=Math.max(v.srcY,v.midY,v.tgtY),f-=I,d+=I,p-=I,m+=I,Nl(s,f,p,d,m),M==="haystack"){var P=v.haystackPts;if(P&&P.length===2){if(f=P[0].x,p=P[0].y,d=P[1].x,m=P[1].y,f>d){var B=f;f=d,d=B}if(p>m){var F=p;p=m,m=F}Nl(s,f-I,p-I,d+I,m+I)}}else if(M==="bezier"||M==="unbundled-bezier"||gf(M,"segments")||gf(M,"taxi")){var G;switch(M){case"bezier":case"unbundled-bezier":G=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":G=v.linePts;break}if(G!=null)for(var $=0;$d){var J=f;f=d,d=J}if(p>m){var ue=p;p=m,m=ue}f-=I,d+=I,p-=I,m+=I,Nl(s,f,p,d,m)}if(i&&r.includeEdges&&h&&(Lk(s,e,"mid-source"),Lk(s,e,"mid-target"),Lk(s,e,"source"),Lk(s,e,"target")),i){var re=e.pstyle("ghost").value==="yes";if(re){var ee=e.pstyle("ghost-offset-x").pfValue,Z=e.pstyle("ghost-offset-y").pfValue;Nl(s,s.x1+ee,s.y1+Z,s.x2+ee,s.y2+Z)}}var K=l.bodyBounds=l.bodyBounds||{};ele(K,s),$k(K,x),Fk(K,1),i&&(f=s.x1,d=s.x2,p=s.y1,m=s.y2,Nl(s,f-C,p-C,d+C,m+C));var ae=l.overlayBounds=l.overlayBounds||{};ele(ae,s),$k(ae,x),Fk(ae,1);var Q=l.labelBounds=l.labelBounds||{};Q.all!=null?zze(Q.all):Q.all=cs(),i&&r.includeLabels&&(r.includeMainLabels&&NM(s,e,null),h&&(r.includeSourceLabels&&NM(s,e,"source"),r.includeTargetLabels&&NM(s,e,"target")))}return s.x1=Xo(s.x1),s.y1=Xo(s.y1),s.x2=Xo(s.x2),s.y2=Xo(s.y2),s.w=Xo(s.x2-s.x1),s.h=Xo(s.y2-s.y1),s.w>0&&s.h>0&&T&&($k(s,x),Fk(s,1)),s},"boundingBoxImpl"),Jue=o(function(e){var r=0,n=o(function(s){return(s?1:0)<=0;l--)s(l);return this};Cf.removeAllListeners=function(){return this.removeListener("*")};Cf.emit=Cf.trigger=function(t,e,r){var n=this.listeners,i=n.length;return this.emitting++,An(e)||(e=[e]),TUe(this,function(a,s){r!=null&&(n=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],i=n.length);for(var l=o(function(){var f=n[u];if(f.type===s.type&&(!f.namespace||f.namespace===s.namespace||f.namespace===xUe)&&a.eventMatches(a.context,f,s)){var d=[s];e!=null&&hze(d,e),a.beforeEmit(a.context,f,s),f.conf&&f.conf.one&&(a.listeners=a.listeners.filter(function(g){return g!==f}));var p=a.callbackContext(a.context,f,s),m=f.callback.apply(p,d);a.afterEmit(a.context,f,s),m===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),u=0;u1&&!s){var l=this.length-1,u=this[l],h=u._private.data.id;this[l]=void 0,this[e]=u,a.set(h,{ele:u,index:e})}return this.length--,this},"unmergeAt"),unmergeOne:o(function(e){e=e[0];var r=this._private,n=e._private.data.id,i=r.map,a=i.get(n);if(!a)return this;var s=a.index;return this.unmergeAt(s),this},"unmergeOne"),unmerge:o(function(e){var r=this._private.cy;if(!e)return this;if(e&&Jt(e)){var n=e;e=r.mutableElements().filter(n)}for(var i=0;i=0;r--){var n=this[r];e(n)&&this.unmergeAt(r)}return this},"unmergeBy"),map:o(function(e,r){for(var n=[],i=this,a=0;an&&(n=u,i=l)}return{value:n,ele:i}},"max"),min:o(function(e,r){for(var n=1/0,i,a=this,s=0;s=0&&a"u"?"undefined":$i(Symbol))!=e&&$i(Symbol.iterator)!=e;r&&(tE[Symbol.iterator]=function(){var n=this,i={value:void 0,done:!1},a=0,s=this.length;return sue({next:o(function(){return a1&&arguments[1]!==void 0?arguments[1]:!0,n=this[0],i=n.cy();if(i.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,i.style().apply(n));var a=n._private.style[e];return a??(r?i.style().getDefaultProperty(e):null)}},"parsedStyle"),numericStyle:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var n=r.pstyle(e);return n.pfValue!==void 0?n.pfValue:n.value}},"numericStyle"),numericStyleUnits:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},"numericStyleUnits"),renderedStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=this[0];if(n)return r.style().getRenderedStyle(n,e)},"renderedStyle"),style:o(function(e,r){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,a=n.style();if(Yr(e)){var s=e;a.applyBypass(this,s,i),this.emitAndNotify("style")}else if(Jt(e))if(r===void 0){var l=this[0];return l?a.getStylePropertyValue(l,e):void 0}else a.applyBypass(this,e,r,i),this.emitAndNotify("style");else if(e===void 0){var u=this[0];return u?a.getRawStyle(u):void 0}return this},"style"),removeStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=!1,i=r.style(),a=this;if(e===void 0)for(var s=0;s0&&e.push(f[0]),e.push(l[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:o(function(e){return this.neighborhood().add(this).filter(e)},"closedNeighborhood"),openNeighborhood:o(function(e){return this.neighborhood(e)},"openNeighborhood")});Ba.neighbourhood=Ba.neighborhood;Ba.closedNeighbourhood=Ba.closedNeighborhood;Ba.openNeighbourhood=Ba.openNeighborhood;ir(Ba,{source:jo(o(function(e){var r=this[0],n;return r&&(n=r._private.source||r.cy().collection()),n&&e?n.filter(e):n},"sourceImpl"),"source"),target:jo(o(function(e){var r=this[0],n;return r&&(n=r._private.target||r.cy().collection()),n&&e?n.filter(e):n},"targetImpl"),"target"),sources:Cce({attr:"source"}),targets:Cce({attr:"target"})});o(Cce,"defineSourceFunction");ir(Ba,{edgesWith:jo(Ace(),"edgesWith"),edgesTo:jo(Ace({thisIsSrc:!0}),"edgesTo")});o(Ace,"defineEdgesWithFunction");ir(Ba,{connectedEdges:jo(function(t){for(var e=[],r=this,n=0;n0);return s},"components"),component:o(function(){var e=this[0];return e.cy().mutableElements().components(e)[0]},"component")});Ba.componentsOf=Ba.components;va=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){Kn("A collection must have a reference to the core");return}var a=new zu,s=!1;if(!r)r=[];else if(r.length>0&&Yr(r[0])&&!mx(r[0])){s=!0;for(var l=[],u=new hg,h=0,f=r.length;h0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=r.cy(),i=n._private,a=[],s=[],l,u=0,h=r.length;u0){for(var F=l.length===r.length?r:new va(n,l),G=0;G0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=[],i={},a=r._private.cy;function s(_){for(var O=_._private.edges,M=0;M0&&(t?L.emitAndNotify("remove"):e&&L.emit("remove"));for(var E=0;Ef&&Math.abs(g.v)>f;);return p?function(y){return u[y*(u.length-1)|0]}:h},"springRK4Factory")})(),In=o(function(e,r,n,i){var a=RUe(e,r,n,i);return function(s,l,u){return s+(l-s)*a(u)}},"cubicBezier"),Vk={linear:o(function(e,r,n){return e+(r-e)*n},"linear"),ease:In(.25,.1,.25,1),"ease-in":In(.42,0,1,1),"ease-out":In(0,0,.58,1),"ease-in-out":In(.42,0,.58,1),"ease-in-sine":In(.47,0,.745,.715),"ease-out-sine":In(.39,.575,.565,1),"ease-in-out-sine":In(.445,.05,.55,.95),"ease-in-quad":In(.55,.085,.68,.53),"ease-out-quad":In(.25,.46,.45,.94),"ease-in-out-quad":In(.455,.03,.515,.955),"ease-in-cubic":In(.55,.055,.675,.19),"ease-out-cubic":In(.215,.61,.355,1),"ease-in-out-cubic":In(.645,.045,.355,1),"ease-in-quart":In(.895,.03,.685,.22),"ease-out-quart":In(.165,.84,.44,1),"ease-in-out-quart":In(.77,0,.175,1),"ease-in-quint":In(.755,.05,.855,.06),"ease-out-quint":In(.23,1,.32,1),"ease-in-out-quint":In(.86,0,.07,1),"ease-in-expo":In(.95,.05,.795,.035),"ease-out-expo":In(.19,1,.22,1),"ease-in-out-expo":In(1,0,0,1),"ease-in-circ":In(.6,.04,.98,.335),"ease-out-circ":In(.075,.82,.165,1),"ease-in-out-circ":In(.785,.135,.15,.86),spring:o(function(e,r,n){if(n===0)return Vk.linear;var i=NUe(e,r,n);return function(a,s,l){return a+(s-a)*i(l)}},"spring"),"cubic-bezier":In};o(Dce,"getEasedValue");o(Lce,"getValue");o(jm,"ease");o(MUe,"step$1");o(X2,"valid");o(IUe,"startAnimation");o(Rce,"stepAll");OUe={animate:un.animate(),animation:un.animation(),animated:un.animated(),clearQueue:un.clearQueue(),delay:un.delay(),delayAnimation:un.delayAnimation(),stop:un.stop(),addToAnimationPool:o(function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},"addToAnimationPool"),stopAnimationLoop:o(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:o(function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&Kk(o(function(a){Rce(a,e),r()},"animationStep"))}o(r,"headlessStep");var n=e.renderer();n&&n.beforeRender?n.beforeRender(o(function(a,s){Rce(s,e)},"rendererAnimationStep"),n.beforeRenderPriorities.animations):r()},"startAnimationLoop")},PUe={qualifierCompare:o(function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},"qualifierCompare"),eventMatches:o(function(e,r,n){var i=r.qualifier;return i!=null?e!==n.target&&mx(n.target)&&i.matches(n.target):!0},"eventMatches"),addEventFields:o(function(e,r){r.cy=e,r.target=e},"addEventFields"),callbackContext:o(function(e,r,n){return r.qualifier!=null?n.target:e},"callbackContext")},Mk=o(function(e){return Jt(e)?new Ef(e):e},"argSelector"),uhe={createEmitter:o(function(){var e=this._private;return e.emitter||(e.emitter=new vE(PUe,this)),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(e,r,n){return this.emitter().on(e,Mk(r),n),this},"on"),removeListener:o(function(e,r,n){return this.emitter().removeListener(e,Mk(r),n),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:o(function(e,r,n){return this.emitter().one(e,Mk(r),n),this},"one"),once:o(function(e,r,n){return this.emitter().one(e,Mk(r),n),this},"once"),emit:o(function(e,r){return this.emitter().emit(e,r),this},"emit"),emitAndNotify:o(function(e,r){return this.emit(e),this.notify(e,r),this},"emitAndNotify")};un.eventAliasesOn(uhe);ZM={png:o(function(e){var r=this._private.renderer;return e=e||{},r.png(e)},"png"),jpg:o(function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)},"jpg")};ZM.jpeg=ZM.jpg;Uk={layout:o(function(e){var r=this;if(e==null){Kn("Layout options must be specified to make a layout");return}if(e.name==null){Kn("A `name` must be specified to make a layout");return}var n=e.name,i=r.extension("layout",n);if(i==null){Kn("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var a;Jt(e.eles)?a=r.$(e.eles):a=e.eles!=null?e.eles:r.$();var s=new i(ir({},e,{cy:r,eles:a}));return s},"layout")};Uk.createLayout=Uk.makeLayout=Uk.layout;BUe={notify:o(function(e,r){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();r!=null&&i.merge(r);return}if(n.notificationsEnabled){var a=this.renderer();this.destroyed()||!a||a.notify(e,r)}},"notify"),notifications:o(function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},"notifications"),noNotifications:o(function(e){this.notifications(!1),e(),this.notifications(!0)},"noNotifications"),batching:o(function(){return this._private.batchCount>0},"batching"),startBatch:o(function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},"startBatch"),endBatch:o(function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var i=e.batchNotifications[n];i.empty()?r.notify(n):r.notify(n,i)})}return this},"endBatch"),batch:o(function(e){return this.startBatch(),e(),this.endBatch(),this},"batch"),batchData:o(function(e){var r=this;return this.batch(function(){for(var n=Object.keys(e),i=0;i0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(n){var i=n._private;i.rscratch={},i.rstyle={},i.animation.current=[],i.animation.queue=[]})},"destroyRenderer"),onRender:o(function(e){return this.on("render",e)},"onRender"),offRender:o(function(e){return this.off("render",e)},"offRender")};JM.invalidateDimensions=JM.resize;Hk={collection:o(function(e,r){return Jt(e)?this.$(e):fo(e)?e.collection():An(e)?(r||(r={}),new va(this,e,r.unique,r.removed)):new va(this)},"collection"),nodes:o(function(e){var r=this.$(function(n){return n.isNode()});return e?r.filter(e):r},"nodes"),edges:o(function(e){var r=this.$(function(n){return n.isEdge()});return e?r.filter(e):r},"edges"),$:o(function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},"$"),mutableElements:o(function(){return this._private.elements},"mutableElements")};Hk.elements=Hk.filter=Hk.$;na={},tx="t",$Ue="f";na.apply=function(t){for(var e=this,r=e._private,n=r.cy,i=n.collection(),a=0;a0;if(p||d&&m){var g=void 0;p&&m||p?g=h.properties:m&&(g=h.mappedProperties);for(var y=0;y1&&(S=1),l.color){var k=n.valueMin[0],A=n.valueMax[0],C=n.valueMin[1],R=n.valueMax[1],I=n.valueMin[2],L=n.valueMax[2],E=n.valueMin[3]==null?1:n.valueMin[3],D=n.valueMax[3]==null?1:n.valueMax[3],_=[Math.round(k+(A-k)*S),Math.round(C+(R-C)*S),Math.round(I+(L-I)*S),Math.round(E+(D-E)*S)];a={bypass:n.bypass,name:n.name,value:_,strValue:"rgb("+_[0]+", "+_[1]+", "+_[2]+")"}}else if(l.number){var O=n.valueMin+(n.valueMax-n.valueMin)*S;a=this.parse(n.name,O,n.bypass,p)}else return!1;if(!a)return y(),!1;a.mapping=n,n=a;break}case s.data:{for(var M=n.field.split("."),P=d.data,B=0;B0&&a>0){for(var l={},u=!1,h=0;h0?t.delayAnimation(s).play().promise().then(T):T()}).then(function(){return t.animation({style:l,duration:a,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1})}else n.transitioning&&(this.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1)};na.checkTrigger=function(t,e,r,n,i,a){var s=this.properties[e],l=i(s);t.removed()||l!=null&&l(r,n,t)&&a(s)};na.checkZOrderTrigger=function(t,e,r,n){var i=this;this.checkTrigger(t,e,r,n,function(a){return a.triggersZOrder},function(){i._private.cy.notify("zorder",t)})};na.checkBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBounds},function(i){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache()})};na.checkConnectedEdgesBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBoundsOfConnectedEdges},function(i){t.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};na.checkParallelEdgesBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBoundsOfParallelEdges},function(i){t.parallelEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};na.checkTriggers=function(t,e,r,n){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,n),this.checkBoundsTrigger(t,e,r,n),this.checkConnectedEdgesBoundsTrigger(t,e,r,n),this.checkParallelEdgesBoundsTrigger(t,e,r,n)};wx={};wx.applyBypass=function(t,e,r,n){var i=this,a=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var l=0;li.length?n=n.substr(i.length):n=""}o(l,"removeSelAndBlockFromRemaining");function u(){a.length>s.length?a=a.substr(s.length):a=""}for(o(u,"removePropAndValFromRem");;){var h=n.match(/^\s*$/);if(h)break;var f=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){hn("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}i=f[0];var d=f[1];if(d!=="core"){var p=new Ef(d);if(p.invalid){hn("Skipping parsing of block: Invalid selector found in string stylesheet: "+d),l();continue}}var m=f[2],g=!1;a=m;for(var y=[];;){var v=a.match(/^\s*$/);if(v)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){hn("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+m),g=!0;break}s=x[0];var b=x[1],T=x[2],S=e.properties[b];if(!S){hn("Skipping property: Invalid property name in: "+s),u();continue}var w=r.parse(b,T);if(!w){hn("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:b,val:T}),u()}if(g){l();break}r.selector(d);for(var k=0;k=7&&e[0]==="d"&&(f=new RegExp(l.data.regex).exec(e))){if(r)return!1;var p=l.data;return{name:t,value:f,strValue:""+e,mapped:p,field:f[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(d=new RegExp(l.mapData.regex).exec(e))){if(r||h.multiple)return!1;var m=l.mapData;if(!(h.color||h.number))return!1;var g=this.parse(t,d[4]);if(!g||g.mapped)return!1;var y=this.parse(t,d[5]);if(!y||y.mapped)return!1;if(g.pfValue===y.pfValue||g.strValue===y.strValue)return hn("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+g.strValue+"`"),this.parse(t,g.strValue);if(h.color){var v=g.value,x=y.value,b=v[0]===x[0]&&v[1]===x[1]&&v[2]===x[2]&&(v[3]===x[3]||(v[3]==null||v[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:t,value:d,strValue:""+e,mapped:m,field:d[1],fieldMin:parseFloat(d[2]),fieldMax:parseFloat(d[3]),valueMin:g.value,valueMax:y.value,bypass:r}}}if(h.multiple&&n!=="multiple"){var T;if(u?T=e.split(/\s+/):An(e)?T=e:T=[e],h.evenMultiple&&T.length%2!==0)return null;for(var S=[],w=[],k=[],A="",C=!1,R=0;R0?" ":"")+I.strValue}return h.validate&&!h.validate(S,w)?null:h.singleEnum&&C?S.length===1&&Jt(S[0])?{name:t,value:S[0],strValue:S[0],bypass:r}:null:{name:t,value:S,pfValue:k,strValue:A,bypass:r,units:w}}var L=o(function(){for(var re=0;reh.max||h.strictMax&&e===h.max))return null;var M={name:t,value:e,strValue:""+e+(E||""),units:E,bypass:r};return h.unitless||E!=="px"&&E!=="em"?M.pfValue=e:M.pfValue=E==="px"||!E?e:this.getEmSizeInPixels()*e,(E==="ms"||E==="s")&&(M.pfValue=E==="ms"?e:1e3*e),(E==="deg"||E==="rad")&&(M.pfValue=E==="rad"?e:Pze(e)),E==="%"&&(M.pfValue=e/100),M}else if(h.propList){var P=[],B=""+e;if(B!=="none"){for(var F=B.split(/\s*,\s*|\s+/),G=0;G0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0){u=Math.min((s-2*r)/n.w,(l-2*r)/n.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=n.minZoom&&(n.maxZoom=r),this},"zoomRange"),minZoom:o(function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},"minZoom"),maxZoom:o(function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},"maxZoom"),getZoomedViewport:o(function(e){var r=this._private,n=r.pan,i=r.zoom,a,s,l=!1;if(r.zoomingEnabled||(l=!0),At(e)?s=e:Yr(e)&&(s=e.level,e.position!=null?a=hE(e.position,i,n):e.renderedPosition!=null&&(a=e.renderedPosition),a!=null&&!r.panningEnabled&&(l=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,a.push("zoom"))}if(i&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var h=e.pan;At(h.x)&&(r.pan.x=h.x,l=!1),At(h.y)&&(r.pan.y=h.y,l=!1),l||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},"viewport"),center:o(function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:o(function(e,r){if(this._private.panningEnabled){if(Jt(e)){var n=e;e=this.mutableElements().filter(n)}else fo(e)||(e=this.mutableElements());if(e.length!==0){var i=e.boundingBox(),a=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var l={x:(a-r*(i.x1+i.x2))/2,y:(s-r*(i.y1+i.y2))/2};return l}}},"getCenterPan"),reset:o(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:o(function(){this._private.sizeCache=null},"invalidateSize"),size:o(function(){var e=this._private,r=e.container,n=this;return e.sizeCache=e.sizeCache||(r?(function(){var i=n.window().getComputedStyle(r),a=o(function(l){return parseFloat(i.getPropertyValue(l))},"val");return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}})():{width:1,height:1})},"size"),width:o(function(){return this.size().width},"width"),height:o(function(){return this.size().height},"height"),extent:o(function(){var e=this._private.pan,r=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-e.x)/r,x2:(n.x2-e.x)/r,y1:(n.y1-e.y)/r,y2:(n.y2-e.y)/r};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},"extent"),renderedExtent:o(function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},"renderedExtent"),multiClickDebounceTime:o(function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};kp.centre=kp.center;kp.autolockNodes=kp.autolock;kp.autoungrabifyNodes=kp.autoungrabify;hx={data:un.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:un.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:un.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:un.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};hx.attr=hx.data;hx.removeAttr=hx.removeData;fx=o(function(e){var r=this;e=ir({},e);var n=e.container;n&&!jk(n)&&jk(n[0])&&(n=n[0]);var i=n?n._cyreg:null;i=i||{},i&&i.cy&&(i.cy.destroy(),i={});var a=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=r;var s=Bi!==void 0&&n!==void 0&&!e.headless,l=e;l.layout=ir({name:s?"grid":"null"},l.layout),l.renderer=ir({name:s?"canvas":"null"},l.renderer);var u=o(function(g,y,v){return y!==void 0?y:v!==void 0?v:g},"defVal"),h=this._private={container:n,ready:!1,options:l,elements:new va(this),listeners:[],aniEles:new va(this),data:l.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,l.zoomingEnabled),userZoomingEnabled:u(!0,l.userZoomingEnabled),panningEnabled:u(!0,l.panningEnabled),userPanningEnabled:u(!0,l.userPanningEnabled),boxSelectionEnabled:u(!0,l.boxSelectionEnabled),autolock:u(!1,l.autolock,l.autolockNodes),autoungrabify:u(!1,l.autoungrabify,l.autoungrabifyNodes),autounselectify:u(!1,l.autounselectify),styleEnabled:l.styleEnabled===void 0?s:l.styleEnabled,zoom:At(l.zoom)?l.zoom:1,pan:{x:Yr(l.pan)&&At(l.pan.x)?l.pan.x:0,y:Yr(l.pan)&&At(l.pan.y)?l.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,l.multiClickDebounceTime)};this.createEmitter(),this.selectionType(l.selectionType),this.zoomRange({min:l.minZoom,max:l.maxZoom});var f=o(function(g,y){var v=g.some(L$e);if(v)return fg.all(g).then(y);y(g)},"loadExtData");h.styleEnabled&&r.setStyle([]);var d=ir({},l,l.renderer);r.initRenderer(d);var p=o(function(g,y,v){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(Yr(g)||An(g))&&r.add(g),r.one("layoutready",function(T){r.notifications(!0),r.emit(T),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",v),r.emit("done")});var b=ir({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()},"setElesAndLayout");f([l.style,l.elements],function(m){var g=m[0],y=m[1];h.styleEnabled&&r.style().append(g),p(y,function(){r.startAnimationLoop(),h.ready=!0,oi(l.ready)&&r.on("ready",l.ready);for(var v=0;v0,l=!!t.boundingBox,u=cs(l?t.boundingBox:structuredClone(e.extent())),h;if(fo(t.roots))h=t.roots;else if(An(t.roots)){for(var f=[],d=0;d0;){var _=D(),O=R(_,L);if(O)_.outgoers().filter(function(Ve){return Ve.isNode()&&r.has(Ve)}).forEach(E);else if(O===null){hn("Detected double maximal shift for node `"+_.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var M=0;if(t.avoidOverlap)for(var P=0;P0&&x[0].length<=3?Le/2:0),Ne=2*Math.PI/x[Ye].length*He;return Ye===0&&x[0].length===1&&(Ie=1),{x:K.x+Ie*Math.cos(Ne),y:K.y+Ie*Math.sin(Ne)}}else{var Ce=x[Ye].length,Fe=Math.max(Ce===1?0:l?(u.w-t.padding*2-ae.w)/((t.grid?de:Ce)-1):(u.w-t.padding*2-ae.w)/((t.grid?de:Ce)+1),M),fe={x:K.x+(He+1-(Ce+1)/2)*Fe,y:K.y+(Ye+1-(Y+1)/2)*Q};return fe}},"getPositionTopBottom"),Te={downward:0,leftward:90,upward:180,rightward:-90};Object.keys(Te).indexOf(t.direction)===-1&&Kn("Invalid direction '".concat(t.direction,"' specified for breadthfirst layout. Valid values are: ").concat(Object.keys(Te).join(", ")));var q=o(function(pe){return aze(ne(pe),u,Te[t.direction])},"getPosition");return r.nodes().layoutPositions(this,t,q),this};HUe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(fhe,"CircleLayout");fhe.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=n.nodes().not(":parent");e.sort&&(a=a.sort(e.sort));for(var s=cs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=e.sweep===void 0?2*Math.PI-2*Math.PI/a.length:e.sweep,h=u/Math.max(1,a.length-1),f,d=0,p=0;p1&&e.avoidOverlap){d*=1.75;var x=Math.cos(h)-Math.cos(0),b=Math.sin(h)-Math.sin(0),T=Math.sqrt(d*d/(x*x+b*b));f=Math.max(T,f)}var S=o(function(k,A){var C=e.startAngle+A*h*(i?1:-1),R=f*Math.cos(C),I=f*Math.sin(C),L={x:l.x+R,y:l.y+I};return L},"getPos");return n.nodes().layoutPositions(this,e,S),this};qUe={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:o(function(e){return e.degree()},"concentric"),levelWidth:o(function(e){return e.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(dhe,"ConcentricLayout");dhe.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,n=t.cy,i=e.eles,a=i.nodes().not(":parent"),s=cs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],h=0,f=0;f0){var w=Math.abs(b[0].value-S.value);w>=v&&(b=[],x.push(b))}b.push(S)}var k=h+e.minNodeSpacing;if(!e.avoidOverlap){var A=x.length>0&&x[0].length>1,C=Math.min(s.w,s.h)/2-k,R=C/(x.length+A?1:0);k=Math.min(k,R)}for(var I=0,L=0;L1&&e.avoidOverlap){var O=Math.cos(_)-Math.cos(0),M=Math.sin(_)-Math.sin(0),P=Math.sqrt(k*k/(O*O+M*M));I=Math.max(P,I)}E.r=I,I+=k}if(e.equidistant){for(var B=0,F=0,G=0;G=t.numIter||(ZUe(n,t),n.temperature=n.temperature*t.coolingFactor,n.temperature=t.animationThreshold&&a(),Kk(f)}},"frame");f()}else{for(;h;)h=s(u),u++;Ice(n,t),l()}return this};kE.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};kE.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};YUe=o(function(e,r,n){for(var i=n.eles.edges(),a=n.eles.nodes(),s=cs(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),l={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=n.eles.components(),h={},f=0;f0){l.graphSet.push(C);for(var f=0;fi.count?0:i.graph},"findLCA"),phe=o(function(e,r,n,i){var a=i.graphSet[n];if(-10)var d=i.nodeOverlap*f,p=Math.sqrt(l*l+u*u),m=d*l/p,g=d*u/p;else var y=nE(e,l,u),v=nE(r,-1*l,-1*u),x=v.x-y.x,b=v.y-y.y,T=x*x+b*b,p=Math.sqrt(T),d=(e.nodeRepulsion+r.nodeRepulsion)/T,m=d*x/p,g=d*b/p;e.isLocked||(e.offsetX-=m,e.offsetY-=g),r.isLocked||(r.offsetX+=m,r.offsetY+=g)}},"nodeRepulsion"),tHe=o(function(e,r,n,i){if(n>0)var a=e.maxX-r.minX;else var a=r.maxX-e.minX;if(i>0)var s=e.maxY-r.minY;else var s=r.maxY-e.minY;return a>=0&&s>=0?Math.sqrt(a*a+s*s):0},"nodesOverlap"),nE=o(function(e,r,n){var i=e.positionX,a=e.positionY,s=e.height||1,l=e.width||1,u=n/r,h=s/l,f={};return r===0&&0n?(f.x=i,f.y=a+s/2,f):0r&&-1*h<=u&&u<=h?(f.x=i-l/2,f.y=a-l*n/2/r,f):0=h)?(f.x=i+s*r/2/n,f.y=a+s/2,f):(0>n&&(u<=-1*h||u>=h)&&(f.x=i-s*r/2/n,f.y=a-s/2),f)},"findClippingPoint"),rHe=o(function(e,r){for(var n=0;nn){var v=r.gravity*m/y,x=r.gravity*g/y;p.offsetX+=v,p.offsetY+=x}}}}},"calculateGravityForces"),iHe=o(function(e,r){var n=[],i=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;i<=a;){var s=n[i++],l=e.idToIndex[s],u=e.layoutNodes[l],h=u.children;if(0n)var a={x:n*e/i,y:n*r/i};else var a={x:e,y:r};return a},"limitForce"),ghe=o(function(e,r){var n=e.parentId;if(n!=null){var i=r.layoutNodes[r.idToIndex[n]],a=!1;if((i.maxX==null||e.maxX+i.padRight>i.maxX)&&(i.maxX=e.maxX+i.padRight,a=!0),(i.minX==null||e.minX-i.padLefti.maxY)&&(i.maxY=e.maxY+i.padBottom,a=!0),(i.minY==null||e.minY-i.padTopx&&(g+=v+r.componentSpacing,m=0,y=0,v=0)}}},"separateComponents"),oHe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:o(function(e){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(yhe,"GridLayout");yhe.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=n.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));var a=cs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(a.h===0||a.w===0)n.nodes().layoutPositions(this,e,function(j){return{x:a.x1,y:a.y1}});else{var s=i.size(),l=Math.sqrt(s*a.h/a.w),u=Math.round(l),h=Math.round(a.w/a.h*l),f=o(function(te){if(te==null)return Math.min(u,h);var Y=Math.min(u,h);Y==u?u=te:h=te},"small"),d=o(function(te){if(te==null)return Math.max(u,h);var Y=Math.max(u,h);Y==u?u=te:h=te},"large"),p=e.rows,m=e.cols!=null?e.cols:e.columns;if(p!=null&&m!=null)u=p,h=m;else if(p!=null&&m==null)u=p,h=Math.ceil(s/u);else if(p==null&&m!=null)h=m,u=Math.ceil(s/h);else if(h*u>s){var g=f(),y=d();(g-1)*y>=s?f(g-1):(y-1)*g>=s&&d(y-1)}else for(;h*u=s?d(x+1):f(v+1)}var b=a.w/h,T=a.h/u;if(e.condense&&(b=0,T=0),e.avoidOverlap)for(var S=0;S=h&&(O=0,_++)},"moveToNextCell"),P={},B=0;B(O=Kze(t,e,M[P],M[P+1],M[P+2],M[P+3])))return v(A,O),!0}else if(R.edgeType==="bezier"||R.edgeType==="multibezier"||R.edgeType==="self"||R.edgeType==="compound"){for(var M=R.allpts,P=0;P+5(O=jze(t,e,M[P],M[P+1],M[P+2],M[P+3],M[P+4],M[P+5])))return v(A,O),!0}for(var B=B||C.source,F=F||C.target,G=i.getArrowWidth(I,L),$=[{name:"source",x:R.arrowStartX,y:R.arrowStartY,angle:R.srcArrowAngle},{name:"target",x:R.arrowEndX,y:R.arrowEndY,angle:R.tgtArrowAngle},{name:"mid-source",x:R.midX,y:R.midY,angle:R.midsrcArrowAngle},{name:"mid-target",x:R.midX,y:R.midY,angle:R.midtgtArrowAngle}],P=0;P<$.length;P++){var U=$[P],j=a.arrowShapes[A.pstyle(U.name+"-arrow-shape").value],te=A.pstyle("width").pfValue;if(j.roughCollide(t,e,G,U.angle,{x:U.x,y:U.y},te,f)&&j.collide(t,e,G,U.angle,{x:U.x,y:U.y},te,f))return v(A),!0}h&&l.length>0&&(x(B),x(F))}o(b,"checkEdge");function T(A,C,R){return Us(A,C,R)}o(T,"preprop");function S(A,C){var R=A._private,I=p,L;C?L=C+"-":L="",A.boundingBox();var E=R.labelBounds[C||"main"],D=A.pstyle(L+"label").value,_=A.pstyle("text-events").strValue==="yes";if(!(!_||!D)){var O=T(R.rscratch,"labelX",C),M=T(R.rscratch,"labelY",C),P=T(R.rscratch,"labelAngle",C),B=A.pstyle(L+"text-margin-x").pfValue,F=A.pstyle(L+"text-margin-y").pfValue,G=E.x1-I-B,$=E.x2+I-B,U=E.y1-I-F,j=E.y2+I-F;if(P){var te=Math.cos(P),Y=Math.sin(P),oe=o(function(ae,Q){return ae=ae-O,Q=Q-M,{x:ae*te-Q*Y+O,y:ae*Y+Q*te+M}},"rotate"),J=oe(G,U),ue=oe(G,j),re=oe($,U),ee=oe($,j),Z=[J.x+B,J.y+F,re.x+B,re.y+F,ee.x+B,ee.y+F,ue.x+B,ue.y+F];if(Hs(t,e,Z))return v(A),!0}else if(yf(E,t,e))return v(A),!0}}o(S,"checkLabel");for(var w=s.length-1;w>=0;w--){var k=s[w];k.isNode()?x(k)||S(k):b(k)||S(k)||S(k,"source")||S(k,"target")}return l};Sp.getAllInBox=function(t,e,r,n){var i=this.getCachedZSortedEles().interactive,a=this.cy.zoom(),s=2/a,l=[],u=Math.min(t,r),h=Math.max(t,r),f=Math.min(e,n),d=Math.max(e,n);t=u,r=h,e=f,n=d;var p=cs({x1:t,y1:e,x2:r,y2:n}),m=[{x:p.x1,y:p.y1},{x:p.x2,y:p.y1},{x:p.x2,y:p.y2},{x:p.x1,y:p.y2}],g=[[m[0],m[1]],[m[1],m[2]],[m[2],m[3]],[m[3],m[0]]];function y(ae,Q,de){return Us(ae,Q,de)}o(y,"preprop");function v(ae,Q){var de=ae._private,ne=s,Te="";ae.boundingBox();var q=de.labelBounds.main;if(!q)return null;var Ve=y(de.rscratch,"labelX",Q),pe=y(de.rscratch,"labelY",Q),Be=y(de.rscratch,"labelAngle",Q),Ye=ae.pstyle(Te+"text-margin-x").pfValue,He=ae.pstyle(Te+"text-margin-y").pfValue,Le=q.x1-ne-Ye,Ie=q.x2+ne-Ye,Ne=q.y1-ne-He,Ce=q.y2+ne-He;if(Be){var Fe=Math.cos(Be),fe=Math.sin(Be),xe=o(function(he,z){return he=he-Ve,z=z-pe,{x:he*Fe-z*fe+Ve,y:he*fe+z*Fe+pe}},"rotate");return[xe(Le,Ne),xe(Ie,Ne),xe(Ie,Ce),xe(Le,Ce)]}else return[{x:Le,y:Ne},{x:Ie,y:Ne},{x:Ie,y:Ce},{x:Le,y:Ce}]}o(v,"getRotatedLabelBox");function x(ae,Q,de,ne){function Te(q,Ve,pe){return(pe.y-q.y)*(Ve.x-q.x)>(Ve.y-q.y)*(pe.x-q.x)}return o(Te,"ccw"),Te(ae,de,ne)!==Te(Q,de,ne)&&Te(ae,Q,de)!==Te(ae,Q,ne)}o(x,"doLinesIntersect");for(var b=0;b0?-(Math.PI-e.ang):Math.PI+e.ang},"invertVec"),dHe=o(function(e,r,n,i,a){if(e!==$ce?zce(r,e,Ic):fHe(Yo,Ic),zce(r,n,Yo),Bce=Ic.nx*Yo.ny-Ic.ny*Yo.nx,Fce=Ic.nx*Yo.nx-Ic.ny*-Yo.ny,Fu=Math.asin(Math.max(-1,Math.min(1,Bce))),Math.abs(Fu)<1e-6){eI=r.x,tI=r.y,gp=Qm=0;return}vp=1,qk=!1,Fce<0?Fu<0?Fu=Math.PI+Fu:(Fu=Math.PI-Fu,vp=-1,qk=!0):Fu>0&&(vp=-1,qk=!0),r.radius!==void 0?Qm=r.radius:Qm=i,fp=Fu/2,Ik=Math.min(Ic.len/2,Yo.len/2),a?(Nc=Math.abs(Math.cos(fp)*Qm/Math.sin(fp)),Nc>Ik?(Nc=Ik,gp=Math.abs(Nc*Math.sin(fp)/Math.cos(fp))):gp=Qm):(Nc=Math.min(Ik,Qm),gp=Math.abs(Nc*Math.sin(fp)/Math.cos(fp))),rI=r.x+Yo.nx*Nc,nI=r.y+Yo.ny*Nc,eI=rI-Yo.ny*gp*vp,tI=nI+Yo.nx*gp*vp,The=r.x+Ic.nx*Nc,whe=r.y+Ic.ny*Nc,$ce=r},"calcCornerArc");o(khe,"drawPreparedRoundCorner");o(LI,"getRoundCorner");dx=.01,pHe=Math.sqrt(2*dx),$a={};$a.findMidptPtsEtc=function(t,e){var r=e.posPts,n=e.intersectionPts,i=e.vectorNormInverse,a,s=t.pstyle("source-endpoint"),l=t.pstyle("target-endpoint"),u=s.units!=null&&l.units!=null,h=o(function(w,k,A,C){var R=C-k,I=A-w,L=Math.sqrt(I*I+R*R);return{x:-R/L,y:I/L}},"recalcVectorNormInverse"),f=t.pstyle("edge-distances").value;switch(f){case"node-position":a=r;break;case"intersection":a=n;break;case"endpoints":{if(u){var d=this.manualEndptToPx(t.source()[0],s),p=_i(d,2),m=p[0],g=p[1],y=this.manualEndptToPx(t.target()[0],l),v=_i(y,2),x=v[0],b=v[1],T={x1:m,y1:g,x2:x,y2:b};i=h(m,g,x,b),a=T}else hn("Edge ".concat(t.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),a=n;break}}return{midptPts:a,vectorNormInverse:i}};$a.findHaystackPoints=function(t){for(var e=0;e0?Math.max(z-se,0):Math.min(z+se,0)},"subDWH"),D=E(I,C),_=E(L,R),O=!1;b===h?x=Math.abs(D)>Math.abs(_)?i:n:b===u||b===l?(x=n,O=!0):(b===a||b===s)&&(x=i,O=!0);var M=x===n,P=M?_:D,B=M?L:I,F=yI(B),G=!1;!(O&&(S||k))&&(b===l&&B<0||b===u&&B>0||b===a&&B>0||b===s&&B<0)&&(F*=-1,P=F*Math.abs(P),G=!0);var $;if(S){var U=w<0?1+w:w;$=U*P}else{var j=w<0?P:0;$=j+w*F}var te=o(function(z){return Math.abs(z)=Math.abs(P)},"getIsTooClose"),Y=te($),oe=te(Math.abs(P)-Math.abs($)),J=Y||oe;if(J&&!G)if(M){var ue=Math.abs(B)<=p/2,re=Math.abs(I)<=m/2;if(ue){var ee=(f.x1+f.x2)/2,Z=f.y1,K=f.y2;r.segpts=[ee,Z,ee,K]}else if(re){var ae=(f.y1+f.y2)/2,Q=f.x1,de=f.x2;r.segpts=[Q,ae,de,ae]}else r.segpts=[f.x1,f.y2]}else{var ne=Math.abs(B)<=d/2,Te=Math.abs(L)<=g/2;if(ne){var q=(f.y1+f.y2)/2,Ve=f.x1,pe=f.x2;r.segpts=[Ve,q,pe,q]}else if(Te){var Be=(f.x1+f.x2)/2,Ye=f.y1,He=f.y2;r.segpts=[Be,Ye,Be,He]}else r.segpts=[f.x2,f.y1]}else if(M){var Le=f.y1+$+(v?p/2*F:0),Ie=f.x1,Ne=f.x2;r.segpts=[Ie,Le,Ne,Le]}else{var Ce=f.x1+$+(v?d/2*F:0),Fe=f.y1,fe=f.y2;r.segpts=[Ce,Fe,Ce,fe]}if(r.isRound){var xe=t.pstyle("taxi-radius").value,W=t.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(xe),r.isArcRadius=new Array(r.segpts.length/2).fill(W)}};$a.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType==="bezier"){var n=e.srcPos,i=e.tgtPos,a=e.srcW,s=e.srcH,l=e.tgtW,u=e.tgtH,h=e.srcShape,f=e.tgtShape,d=e.srcCornerRadius,p=e.tgtCornerRadius,m=e.srcRs,g=e.tgtRs,y=!At(r.startX)||!At(r.startY),v=!At(r.arrowStartX)||!At(r.arrowStartY),x=!At(r.endX)||!At(r.endY),b=!At(r.arrowEndX)||!At(r.arrowEndY),T=3,S=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,w=T*S,k=Tp({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),A=kB.poolIndex()){var F=P;P=B,B=F}var G=D.srcPos=P.position(),$=D.tgtPos=B.position(),U=D.srcW=P.outerWidth(),j=D.srcH=P.outerHeight(),te=D.tgtW=B.outerWidth(),Y=D.tgtH=B.outerHeight(),oe=D.srcShape=r.nodeShapes[e.getNodeShape(P)],J=D.tgtShape=r.nodeShapes[e.getNodeShape(B)],ue=D.srcCornerRadius=P.pstyle("corner-radius").value==="auto"?"auto":P.pstyle("corner-radius").pfValue,re=D.tgtCornerRadius=B.pstyle("corner-radius").value==="auto"?"auto":B.pstyle("corner-radius").pfValue,ee=D.tgtRs=B._private.rscratch,Z=D.srcRs=P._private.rscratch;D.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var K=0;K=pHe||(Ne=Math.sqrt(Math.max(Ie*Ie,dx)+Math.max(Le*Le,dx)));var Ce=D.vector={x:Ie,y:Le},Fe=D.vectorNorm={x:Ce.x/Ne,y:Ce.y/Ne},fe={x:-Fe.y,y:Fe.x};D.nodesOverlap=!At(Ne)||J.checkPoint(q[0],q[1],0,te,Y,$.x,$.y,re,ee)||oe.checkPoint(pe[0],pe[1],0,U,j,G.x,G.y,ue,Z),D.vectorNormInverse=fe,_={nodesOverlap:D.nodesOverlap,dirCounts:D.dirCounts,calculatedIntersection:!0,hasBezier:D.hasBezier,hasUnbundled:D.hasUnbundled,eles:D.eles,srcPos:$,srcRs:ee,tgtPos:G,tgtRs:Z,srcW:te,srcH:Y,tgtW:U,tgtH:j,srcIntn:Be,tgtIntn:Ve,srcShape:J,tgtShape:oe,posPts:{x1:He.x2,y1:He.y2,x2:He.x1,y2:He.y1},intersectionPts:{x1:Ye.x2,y1:Ye.y2,x2:Ye.x1,y2:Ye.y1},vector:{x:-Ce.x,y:-Ce.y},vectorNorm:{x:-Fe.x,y:-Fe.y},vectorNormInverse:{x:-fe.x,y:-fe.y}}}var xe=Te?_:D;Q.nodesOverlap=xe.nodesOverlap,Q.srcIntn=xe.srcIntn,Q.tgtIntn=xe.tgtIntn,Q.isRound=de.startsWith("round"),i&&(P.isParent()||P.isChild()||B.isParent()||B.isChild())&&(P.parents().anySame(B)||B.parents().anySame(P)||P.same(B)&&P.isParent())?e.findCompoundLoopPoints(ae,xe,K,ne):P===B?e.findLoopPoints(ae,xe,K,ne):de.endsWith("segments")?e.findSegmentsPoints(ae,xe):de.endsWith("taxi")?e.findTaxiPoints(ae,xe):de==="straight"||!ne&&D.eles.length%2===1&&K===Math.floor(D.eles.length/2)?e.findStraightEdgePoints(ae):e.findBezierPoints(ae,xe,K,ne,Te),e.findEndpoints(ae),e.tryToCorrectInvalidPoints(ae,xe),e.checkForInvalidEdgeWarning(ae),e.storeAllpts(ae),e.storeEdgeProjections(ae),e.calculateArrowAngles(ae),e.recalculateEdgeLabelProjections(ae),e.calculateLabelAngles(ae)}},"_loop"),A=0;A0){var q=h,Ve=mp(q,tg(s)),pe=mp(q,tg(Te)),Be=Ve;if(pe2){var Ye=mp(q,{x:Te[2],y:Te[3]});Ye0){var le=f,ke=mp(le,tg(s)),ve=mp(le,tg(se)),ye=ke;if(ve2){var Re=mp(le,{x:se[2],y:se[3]});Re=g||A){v={cp:S,segment:k};break}}if(v)break}var C=v.cp,R=v.segment,I=(g-x)/R.length,L=R.t1-R.t0,E=m?R.t0+L*I:R.t1-L*I;E=ox(0,E,1),e=ig(C.p0,C.p1,C.p2,E),p=gHe(C.p0,C.p1,C.p2,E);break}case"straight":case"segments":case"haystack":{for(var D=0,_,O,M,P,B=n.allpts.length,F=0;F+3=g));F+=2);var G=g-O,$=G/_;$=ox(0,$,1),e=Fze(M,P,$),p=Che(M,P);break}}s("labelX",d,e.x),s("labelY",d,e.y),s("labelAutoAngle",d,p)}},"calculateEndProjection");h("source"),h("target"),this.applyLabelDimensions(t)}};Bc.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))};Bc.applyPrefixedLabelDimensions=function(t,e){var r=t._private,n=this.getLabelText(t,e),i=bp(n,t._private.labelDimsKey);if(Us(r.rscratch,"prefixedLabelDimsKey",e)!==i){$u(r.rscratch,"prefixedLabelDimsKey",e,i);var a=this.calculateLabelDimensions(t,n),s=t.pstyle("line-height").pfValue,l=t.pstyle("text-wrap").strValue,u=Us(r.rscratch,"labelWrapCachedLines",e)||[],h=l!=="wrap"?1:Math.max(u.length,1),f=a.height/h,d=f*s,p=a.width,m=a.height+(h-1)*(s-1)*f;$u(r.rstyle,"labelWidth",e,p),$u(r.rscratch,"labelWidth",e,p),$u(r.rstyle,"labelHeight",e,m),$u(r.rscratch,"labelHeight",e,m),$u(r.rscratch,"labelLineHeight",e,d)}};Bc.getLabelText=function(t,e){var r=t._private,n=e?e+"-":"",i=t.pstyle(n+"label").strValue,a=t.pstyle("text-transform").value,s=o(function(j,te){return te?($u(r.rscratch,j,e,te),te):Us(r.rscratch,j,e)},"rscratch");if(!i)return"";a=="none"||(a=="uppercase"?i=i.toUpperCase():a=="lowercase"&&(i=i.toLowerCase()));var l=t.pstyle("text-wrap").value;if(l==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var h="\u200B",f=i.split(` +`),d=t.pstyle("text-max-width").pfValue,p=t.pstyle("text-overflow-wrap").value,m=p==="anywhere",g=[],y=/[\s\u200b]+|$/g,v=0;vd){var w=x.matchAll(y),k="",A=0,C=qs(w),R;try{for(C.s();!(R=C.n()).done;){var I=R.value,L=I[0],E=x.substring(A,I.index);A=I.index+L.length;var D=k.length===0?E:k+E+L,_=this.calculateLabelDimensions(t,D),O=_.width;O<=d?k+=E+L:(k&&g.push(k),k=E+L)}}catch(U){C.e(U)}finally{C.f()}k.match(/^[\s\u200b]+$/)||g.push(k)}else g.push(x)}s("labelWrapCachedLines",g),i=s("labelWrapCachedText",g.join(` +`)),s("labelWrapKey",u)}else if(l==="ellipsis"){var M=t.pstyle("text-max-width").pfValue,P="",B="\u2026",F=!1;if(this.calculateLabelDimensions(t,i).widthM)break;P+=i[G],G===i.length-1&&(F=!0)}return F||(P+=B),P}return i};Bc.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e};Bc.calculateLabelDimensions=function(t,e){var r=this,n=r.cy.window(),i=n.document,a=0,s=t.pstyle("font-style").strValue,l=t.pstyle("font-size").pfValue,u=t.pstyle("font-family").strValue,h=t.pstyle("font-weight").strValue,f=this.labelCalcCanvas,d=this.labelCalcCanvasContext;if(!f){f=this.labelCalcCanvas=i.createElement("canvas"),d=this.labelCalcCanvasContext=f.getContext("2d");var p=f.style;p.position="absolute",p.left="-9999px",p.top="-9999px",p.zIndex="-1",p.visibility="hidden",p.pointerEvents="none"}d.font="".concat(s," ").concat(h," ").concat(l,"px ").concat(u);for(var m=0,g=0,y=e.split(` +`),v=0;v1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),l)for(var u=0;u=t.desktopTapThreshold2}var bt=a(z);lt&&(t.hoverData.tapholdCancelled=!0);var wt=o(function(){var Se=t.hoverData.dragDelta=t.hoverData.dragDelta||[];Se.length===0?(Se.push(et[0]),Se.push(et[1])):(Se[0]+=et[0],Se[1]+=et[1])},"updateDragDelta");le=!0,i(xt,["mousemove","vmousemove","tapdrag"],z,{x:Re[0],y:Re[1]});var yt=o(function(Se){return{originalEvent:z,type:Se,position:{x:Re[0],y:Re[1]}}},"makeEvent"),ft=o(function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||ke.emit(yt("boxstart")),Ke[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()},"goIntoBoxMode");if(t.hoverData.which===3){if(lt){var Ur=yt("cxtdrag");Oe?Oe.emit(Ur):ke.emit(Ur),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||xt!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit(yt("cxtdragout")),t.hoverData.cxtOver=xt,xt&&xt.emit(yt("cxtdragover")))}}else if(t.hoverData.dragging){if(le=!0,ke.panningEnabled()&&ke.userPanningEnabled()){var _t;if(t.hoverData.justStartedPan){var bn=t.hoverData.mdownPos;_t={x:(Re[0]-bn[0])*ve,y:(Re[1]-bn[1])*ve},t.hoverData.justStartedPan=!1}else _t={x:et[0]*ve,y:et[1]*ve};ke.panBy(_t),ke.emit(yt("dragpan")),t.hoverData.dragged=!0}Re=t.projectIntoViewport(z.clientX,z.clientY)}else if(Ke[4]==1&&(Oe==null||Oe.pannable())){if(lt){if(!t.hoverData.dragging&&ke.boxSelectionEnabled()&&(bt||!ke.panningEnabled()||!ke.userPanningEnabled()))ft();else if(!t.hoverData.selecting&&ke.panningEnabled()&&ke.userPanningEnabled()){var Br=s(Oe,t.hoverData.downs);Br&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,Ke[4]=0,t.data.bgActivePosistion=tg(_e),t.redrawHint("select",!0),t.redraw())}Oe&&Oe.pannable()&&Oe.active()&&Oe.unactivate()}}else{if(Oe&&Oe.pannable()&&Oe.active()&&Oe.unactivate(),(!Oe||!Oe.grabbed())&&xt!=We&&(We&&i(We,["mouseout","tapdragout"],z,{x:Re[0],y:Re[1]}),xt&&i(xt,["mouseover","tapdragover"],z,{x:Re[0],y:Re[1]}),t.hoverData.last=xt),Oe)if(lt){if(ke.boxSelectionEnabled()&&bt)Oe&&Oe.grabbed()&&(x(Ue),Oe.emit(yt("freeon")),Ue.emit(yt("free")),t.dragData.didDrag&&(Oe.emit(yt("dragfreeon")),Ue.emit(yt("dragfree")))),ft();else if(Oe&&Oe.grabbed()&&t.nodeIsDraggable(Oe)){var cr=!t.dragData.didDrag;cr&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||y(Ue,{inDragLayer:!0});var ar={x:0,y:0};if(At(et[0])&&At(et[1])&&(ar.x+=et[0],ar.y+=et[1],cr)){var _r=t.hoverData.dragDelta;_r&&At(_r[0])&&At(_r[1])&&(ar.x+=_r[0],ar.y+=_r[1])}t.hoverData.draggingEles=!0,Ue.silentShift(ar).emit(yt("position")).emit(yt("drag")),t.redrawHint("drag",!0),t.redraw()}}else wt();le=!0}if(Ke[2]=Re[0],Ke[3]=Re[1],le)return z.stopPropagation&&z.stopPropagation(),z.preventDefault&&z.preventDefault(),!1}},"mousemoveHandler"),!1);var E,D,_;t.registerBinding(e,"mouseup",o(function(z){if(!(t.hoverData.which===1&&z.which!==1&&t.hoverData.capture)){var se=t.hoverData.capture;if(se){t.hoverData.capture=!1;var le=t.cy,ke=t.projectIntoViewport(z.clientX,z.clientY),ve=t.selection,ye=t.findNearestElement(ke[0],ke[1],!0,!1),Re=t.dragData.possibleDragElements,_e=t.hoverData.down,ze=a(z);t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,_e&&_e.unactivate();var Ke=o(function(Gt){return{originalEvent:z,type:Gt,position:{x:ke[0],y:ke[1]}}},"makeEvent");if(t.hoverData.which===3){var xt=Ke("cxttapend");if(_e?_e.emit(xt):le.emit(xt),!t.hoverData.cxtDragged){var We=Ke("cxttap");_e?_e.emit(We):le.emit(We)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(i(ye,["mouseup","tapend","vmouseup"],z,{x:ke[0],y:ke[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(i(_e,["click","tap","vclick"],z,{x:ke[0],y:ke[1]}),D=!1,z.timeStamp-_<=le.multiClickDebounceTime()?(E&&clearTimeout(E),D=!0,_=null,i(_e,["dblclick","dbltap","vdblclick"],z,{x:ke[0],y:ke[1]})):(E=setTimeout(function(){D||i(_e,["oneclick","onetap","voneclick"],z,{x:ke[0],y:ke[1]})},le.multiClickDebounceTime()),_=z.timeStamp)),_e==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!a(z)&&(le.$(r).unselect(["tapunselect"]),Re.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=Re=le.collection()),ye==_e&&!t.dragData.didDrag&&!t.hoverData.selecting&&ye!=null&&ye._private.selectable&&(t.hoverData.dragging||(le.selectionType()==="additive"||ze?ye.selected()?ye.unselect(["tapunselect"]):ye.select(["tapselect"]):ze||(le.$(r).unmerge(ye).unselect(["tapunselect"]),ye.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var Oe=le.collection(t.getAllInBox(ve[0],ve[1],ve[2],ve[3]));t.redrawHint("select",!0),Oe.length>0&&t.redrawHint("eles",!0),le.emit(Ke("boxend"));var et=o(function(Gt){return Gt.selectable()&&!Gt.selected()},"eleWouldBeSelected");le.selectionType()==="additive"||ze||le.$(r).unmerge(Oe).unselect(),Oe.emit(Ke("box")).stdFilter(et).select().emit(Ke("boxselect")),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!ve[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var Ue=_e&&_e.grabbed();x(Re),Ue&&(_e.emit(Ke("freeon")),Re.emit(Ke("free")),t.dragData.didDrag&&(_e.emit(Ke("dragfreeon")),Re.emit(Ke("dragfree"))))}}ve[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null,t.hoverData.which=null}}},"mouseupHandler"),!1);var O=[],M=4,P,B=1e5,F=o(function(z,se){for(var le=0;le=M){var ke=O;if(P=F(ke,5),!P){var ve=Math.abs(ke[0]);P=G(ke)&&ve>5}if(P)for(var ye=0;ye5&&(le=yI(le)*5),We=le/-250,P&&(We/=B,We*=3),We=We*t.wheelSensitivity;var Oe=z.deltaMode===1;Oe&&(We*=33);var et=Re.zoom()*Math.pow(10,We);z.type==="gesturechange"&&(et=t.gestureStartZoom*z.scale),Re.zoom({level:et,renderedPosition:{x:xt[0],y:xt[1]}}),Re.emit({type:z.type==="gesturechange"?"pinchzoom":"scrollzoom",originalEvent:z,position:{x:Ke[0],y:Ke[1]}})}}}},"wheelHandler");t.registerBinding(t.container,"wheel",$,!0),t.registerBinding(e,"scroll",o(function(z){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},"scrollHandler"),!0),t.registerBinding(t.container,"gesturestart",o(function(z){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||z.preventDefault()},"gestureStartHandler"),!0),t.registerBinding(t.container,"gesturechange",function(he){t.hasTouchStarted||$(he)},!0),t.registerBinding(t.container,"mouseout",o(function(z){var se=t.projectIntoViewport(z.clientX,z.clientY);t.cy.emit({originalEvent:z,type:"mouseout",position:{x:se[0],y:se[1]}})},"mouseOutHandler"),!1),t.registerBinding(t.container,"mouseover",o(function(z){var se=t.projectIntoViewport(z.clientX,z.clientY);t.cy.emit({originalEvent:z,type:"mouseover",position:{x:se[0],y:se[1]}})},"mouseOverHandler"),!1);var U,j,te,Y,oe,J,ue,re,ee,Z,K,ae,Q,de=o(function(z,se,le,ke){return Math.sqrt((le-z)*(le-z)+(ke-se)*(ke-se))},"distance"),ne=o(function(z,se,le,ke){return(le-z)*(le-z)+(ke-se)*(ke-se)},"distanceSq"),Te;t.registerBinding(t.container,"touchstart",Te=o(function(z){if(t.hasTouchStarted=!0,!!I(z)){T(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var se=t.cy,le=t.touchData.now,ke=t.touchData.earlier;if(z.touches[0]){var ve=t.projectIntoViewport(z.touches[0].clientX,z.touches[0].clientY);le[0]=ve[0],le[1]=ve[1]}if(z.touches[1]){var ve=t.projectIntoViewport(z.touches[1].clientX,z.touches[1].clientY);le[2]=ve[0],le[3]=ve[1]}if(z.touches[2]){var ve=t.projectIntoViewport(z.touches[2].clientX,z.touches[2].clientY);le[4]=ve[0],le[5]=ve[1]}var ye=o(function(bt){return{originalEvent:z,type:bt,position:{x:le[0],y:le[1]}}},"makeEvent");if(z.touches[1]){t.touchData.singleTouchMoved=!0,x(t.dragData.touchDragEles);var Re=t.findContainerClientCoords();ee=Re[0],Z=Re[1],K=Re[2],ae=Re[3],U=z.touches[0].clientX-ee,j=z.touches[0].clientY-Z,te=z.touches[1].clientX-ee,Y=z.touches[1].clientY-Z,Q=0<=U&&U<=K&&0<=te&&te<=K&&0<=j&&j<=ae&&0<=Y&&Y<=ae;var _e=se.pan(),ze=se.zoom();oe=de(U,j,te,Y),J=ne(U,j,te,Y),ue=[(U+te)/2,(j+Y)/2],re=[(ue[0]-_e.x)/ze,(ue[1]-_e.y)/ze];var Ke=200,xt=Ke*Ke;if(J=1){for(var vt=t.touchData.startPosition=[null,null,null,null,null,null],Lt=0;Lt=t.touchTapThreshold2}if(se&&t.touchData.cxt){z.preventDefault();var Lt=z.touches[0].clientX-ee,dt=z.touches[0].clientY-Z,nt=z.touches[1].clientX-ee,bt=z.touches[1].clientY-Z,wt=ne(Lt,dt,nt,bt),yt=wt/J,ft=150,Ur=ft*ft,_t=1.5,bn=_t*_t;if(yt>=bn||wt>=Ur){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Br=ze("cxttapend");t.touchData.start?(t.touchData.start.unactivate().emit(Br),t.touchData.start=null):ke.emit(Br)}}if(se&&t.touchData.cxt){var Br=ze("cxtdrag");t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Br):ke.emit(Br),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var cr=t.findNearestElement(ve[0],ve[1],!0,!0);(!t.touchData.cxtOver||cr!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit(ze("cxtdragout")),t.touchData.cxtOver=cr,cr&&cr.emit(ze("cxtdragover")))}else if(se&&z.touches[2]&&ke.boxSelectionEnabled())z.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||ke.emit(ze("boxstart")),t.touchData.selecting=!0,t.touchData.didSelect=!0,le[4]=1,!le||le.length===0||le[0]===void 0?(le[0]=(ve[0]+ve[2]+ve[4])/3,le[1]=(ve[1]+ve[3]+ve[5])/3,le[2]=(ve[0]+ve[2]+ve[4])/3+1,le[3]=(ve[1]+ve[3]+ve[5])/3+1):(le[2]=(ve[0]+ve[2]+ve[4])/3,le[3]=(ve[1]+ve[3]+ve[5])/3),t.redrawHint("select",!0),t.redraw();else if(se&&z.touches[1]&&!t.touchData.didSelect&&ke.zoomingEnabled()&&ke.panningEnabled()&&ke.userZoomingEnabled()&&ke.userPanningEnabled()){z.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var ar=t.dragData.touchDragEles;if(ar){t.redrawHint("drag",!0);for(var _r=0;_r0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},"touchmoveHandler"),!1);var Ve;t.registerBinding(e,"touchcancel",Ve=o(function(z){var se=t.touchData.start;t.touchData.capture=!1,se&&se.unactivate()},"touchcancelHandler"));var pe,Be,Ye,He;if(t.registerBinding(e,"touchend",pe=o(function(z){var se=t.touchData.start,le=t.touchData.capture;if(le)z.touches.length===0&&(t.touchData.capture=!1),z.preventDefault();else return;var ke=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var ve=t.cy,ye=ve.zoom(),Re=t.touchData.now,_e=t.touchData.earlier;if(z.touches[0]){var ze=t.projectIntoViewport(z.touches[0].clientX,z.touches[0].clientY);Re[0]=ze[0],Re[1]=ze[1]}if(z.touches[1]){var ze=t.projectIntoViewport(z.touches[1].clientX,z.touches[1].clientY);Re[2]=ze[0],Re[3]=ze[1]}if(z.touches[2]){var ze=t.projectIntoViewport(z.touches[2].clientX,z.touches[2].clientY);Re[4]=ze[0],Re[5]=ze[1]}var Ke=o(function(Ur){return{originalEvent:z,type:Ur,position:{x:Re[0],y:Re[1]}}},"makeEvent");se&&se.unactivate();var xt;if(t.touchData.cxt){if(xt=Ke("cxttapend"),se?se.emit(xt):ve.emit(xt),!t.touchData.cxtDragged){var We=Ke("cxttap");se?se.emit(We):ve.emit(We)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!z.touches[2]&&ve.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var Oe=ve.collection(t.getAllInBox(ke[0],ke[1],ke[2],ke[3]));ke[0]=void 0,ke[1]=void 0,ke[2]=void 0,ke[3]=void 0,ke[4]=0,t.redrawHint("select",!0),ve.emit(Ke("boxend"));var et=o(function(Ur){return Ur.selectable()&&!Ur.selected()},"eleWouldBeSelected");Oe.emit(Ke("box")).stdFilter(et).select().emit(Ke("boxselect")),Oe.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(se?.unactivate(),z.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!z.touches[1]){if(!z.touches[0]){if(!z.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Ue=t.dragData.touchDragEles;if(se!=null){var lt=se._private.grabbed;x(Ue),t.redrawHint("drag",!0),t.redrawHint("eles",!0),lt&&(se.emit(Ke("freeon")),Ue.emit(Ke("free")),t.dragData.didDrag&&(se.emit(Ke("dragfreeon")),Ue.emit(Ke("dragfree")))),i(se,["touchend","tapend","vmouseup","tapdragout"],z,{x:Re[0],y:Re[1]}),se.unactivate(),t.touchData.start=null}else{var Gt=t.findNearestElement(Re[0],Re[1],!0,!0);i(Gt,["touchend","tapend","vmouseup","tapdragout"],z,{x:Re[0],y:Re[1]})}var vt=t.touchData.startPosition[0]-Re[0],Lt=vt*vt,dt=t.touchData.startPosition[1]-Re[1],nt=dt*dt,bt=Lt+nt,wt=bt*ye*ye;t.touchData.singleTouchMoved||(se||ve.$(":selected").unselect(["tapunselect"]),i(se,["tap","vclick"],z,{x:Re[0],y:Re[1]}),Be=!1,z.timeStamp-He<=ve.multiClickDebounceTime()?(Ye&&clearTimeout(Ye),Be=!0,He=null,i(se,["dbltap","vdblclick"],z,{x:Re[0],y:Re[1]})):(Ye=setTimeout(function(){Be||i(se,["onetap","voneclick"],z,{x:Re[0],y:Re[1]})},ve.multiClickDebounceTime()),He=z.timeStamp)),se!=null&&!t.dragData.didDrag&&se._private.selectable&&wt"u"){var Le=[],Ie=o(function(z){return{clientX:z.clientX,clientY:z.clientY,force:1,identifier:z.pointerId,pageX:z.pageX,pageY:z.pageY,radiusX:z.width/2,radiusY:z.height/2,screenX:z.screenX,screenY:z.screenY,target:z.target}},"makeTouch"),Ne=o(function(z){return{event:z,touch:Ie(z)}},"makePointer"),Ce=o(function(z){Le.push(Ne(z))},"addPointer"),Fe=o(function(z){for(var se=0;se0)return U[0]}return null},"getCurveT"),g=Object.keys(p),y=0;y0?m:_ue(a,s,e,r,n,i,l,u)},"intersectLine"),checkPoint:o(function(e,r,n,i,a,s,l,u){u=u==="auto"?kf(i,a):u;var h=2*u;if(Vu(e,r,this.points,s,l,i,a-h,[0,-1],n)||Vu(e,r,this.points,s,l,i-h,a,[0,-1],n))return!0;var f=i/2+2*n,d=a/2+2*n,p=[s-f,l-d,s-f,l,s+f,l,s+f,l-d];return!!(Hs(e,r,p)||xp(e,r,h,h,s+i/2-u,l+a/2-u,n)||xp(e,r,h,h,s-i/2+u,l+a/2-u,n))},"checkPoint")}};Uu.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",ls(3,0)),this.generateRoundPolygon("round-triangle",ls(3,0)),this.generatePolygon("rectangle",ls(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",ls(5,0)),this.generateRoundPolygon("round-pentagon",ls(5,0)),this.generatePolygon("hexagon",ls(6,0)),this.generateRoundPolygon("round-hexagon",ls(6,0)),this.generatePolygon("heptagon",ls(7,0)),this.generateRoundPolygon("round-heptagon",ls(7,0)),this.generatePolygon("octagon",ls(8,0)),this.generateRoundPolygon("round-octagon",ls(8,0));var n=new Array(20);{var i=HM(5,0),a=HM(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;l=e.deqFastCost*S)break}else if(h){if(b>=e.deqCost*m||b>=e.deqAvgCost*p)break}else if(T>=e.deqNoDrawCost*OM)break;var w=e.deq(n,v,y);if(w.length>0)for(var k=0;k0&&(e.onDeqd(n,g),!h&&e.shouldRedraw(n,g,v,y)&&a())},"dequeue"),l=e.priority||pI;i.beforeRender(s,l(n))}},"setupDequeueingImpl")},"setupDequeueing")},vHe=(function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Qk;Af(this,t),this.idsByKey=new zu,this.keyForId=new zu,this.cachesByLvl=new zu,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return o(t,"ElementTextureCacheLookup"),_f(t,[{key:"getIdsFor",value:o(function(r){r==null&&Kn("Can not get id list for null key");var n=this.idsByKey,i=this.idsByKey.get(r);return i||(i=new hg,n.set(r,i)),i},"getIdsFor")},{key:"addIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).add(n)},"addIdForKey")},{key:"deleteIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).delete(n)},"deleteIdForKey")},{key:"getNumberOfIdsForKey",value:o(function(r){return r==null?0:this.getIdsFor(r).size},"getNumberOfIdsForKey")},{key:"updateKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);this.deleteIdForKey(i,n),this.addIdForKey(a,n),this.keyForId.set(n,a)},"updateKeyMappingFor")},{key:"deleteKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteIdForKey(i,n),this.keyForId.delete(n)},"deleteKeyMappingFor")},{key:"keyHasChangedFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);return i!==a},"keyHasChangedFor")},{key:"isInvalid",value:o(function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)},"isInvalid")},{key:"getCachesAt",value:o(function(r){var n=this.cachesByLvl,i=this.lvls,a=n.get(r);return a||(a=new zu,n.set(r,a),i.push(r)),a},"getCachesAt")},{key:"getCache",value:o(function(r,n){return this.getCachesAt(n).get(r)},"getCache")},{key:"get",value:o(function(r,n){var i=this.getKey(r),a=this.getCache(i,n);return a!=null&&this.updateKeyMappingFor(r),a},"get")},{key:"getForCachedKey",value:o(function(r,n){var i=this.keyForId.get(r.id()),a=this.getCache(i,n);return a},"getForCachedKey")},{key:"hasCache",value:o(function(r,n){return this.getCachesAt(n).has(r)},"hasCache")},{key:"has",value:o(function(r,n){var i=this.getKey(r);return this.hasCache(i,n)},"has")},{key:"setCache",value:o(function(r,n,i){i.key=r,this.getCachesAt(n).set(r,i)},"setCache")},{key:"set",value:o(function(r,n,i){var a=this.getKey(r);this.setCache(a,n,i),this.updateKeyMappingFor(r)},"set")},{key:"deleteCache",value:o(function(r,n){this.getCachesAt(n).delete(r)},"deleteCache")},{key:"delete",value:o(function(r,n){var i=this.getKey(r);this.deleteCache(i,n)},"_delete")},{key:"invalidateKey",value:o(function(r){var n=this;this.lvls.forEach(function(i){return n.deleteCache(r,i)})},"invalidateKey")},{key:"invalidate",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteKeyMappingFor(r);var a=this.doesEleInvalidateKey(r);return a&&this.invalidateKey(i),a||this.getNumberOfIdsForKey(i)===0},"invalidate")}])})(),Hce=25,Ok=50,Wk=-4,iI=3,Nhe=7.99,xHe=8,bHe=1024,THe=1024,wHe=1024,kHe=.2,EHe=.8,SHe=10,CHe=.15,AHe=.1,_He=.9,DHe=.9,LHe=100,RHe=1,ng={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},NHe=xa({getKey:null,doesEleInvalidateKey:Qk,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:Tue,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),ex=o(function(e,r){var n=this;n.renderer=e,n.onDequeues=[];var i=NHe(r);ir(n,i),n.lookup=new vHe(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},"ElementTextureCache"),zi=ex.prototype;zi.reasons=ng;zi.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]};zi.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},n=r[t]=r[t]||[];return n};zi.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new bx(function(r,n){return n.reqs-r.reqs});return e};zi.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e};zi.getElement=function(t,e,r,n,i){var a=this,s=this.renderer,l=s.cy.zoom(),u=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!a.allowEdgeTxrCaching&&t.isEdge()||!a.allowParentTxrCaching&&t.isParent())return null;if(n==null&&(n=Math.ceil(gI(l*r))),n=Nhe||n>iI)return null;var h=Math.pow(2,n),f=e.h*h,d=e.w*h,p=s.eleTextBiggerThanMin(t,h);if(!this.isVisible(t,p))return null;var m=u.get(t,n);if(m&&m.invalidated&&(m.invalidated=!1,m.texture.invalidatedWidth-=m.width),m)return m;var g;if(f<=Hce?g=Hce:f<=Ok?g=Ok:g=Math.ceil(f/Ok)*Ok,f>wHe||d>THe)return null;var y=a.getTextureQueue(g),v=y[y.length-2],x=o(function(){return a.recycleTexture(g,d)||a.addTexture(g,d)},"addNewTxr");v||(v=y[y.length-1]),v||(v=x()),v.width-v.usedWidthn;L--)R=a.getElement(t,e,r,L,ng.downscale);I()}else return a.queueElement(t,k.level-1),k;else{var E;if(!T&&!S&&!w)for(var D=n-1;D>=Wk;D--){var _=u.get(t,D);if(_){E=_;break}}if(b(E))return a.queueElement(t,n),E;v.context.translate(v.usedWidth,0),v.context.scale(h,h),this.drawElement(v.context,t,e,p,!1),v.context.scale(1/h,1/h),v.context.translate(-v.usedWidth,0)}return m={x:v.usedWidth,texture:v,level:n,scale:h,width:d,height:f,scaledLabelShown:p},v.usedWidth+=Math.ceil(d+xHe),v.eleCaches.push(m),u.set(t,n,m),a.checkTextureFullness(v),m};zi.invalidateElements=function(t){for(var e=0;e=kHe*t.width&&this.retireTexture(t)};zi.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>EHe&&t.fullnessChecks>=SHe?wf(r,t):t.fullnessChecks++};zi.retireTexture=function(t){var e=this,r=t.height,n=e.getTextureQueue(r),i=this.lookup;wf(n,t),t.retired=!0;for(var a=t.eleCaches,s=0;s=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,mI(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),wf(i,s),n.push(s),s}};zi.queueElement=function(t,e){var r=this,n=r.getElementQueue(),i=r.getElementKeyToQueue(),a=this.getKey(t),s=i[a];if(s)s.level=Math.max(s.level,e),s.eles.merge(t),s.reqs++,n.updateItem(s);else{var l={eles:t.spawn().merge(t),level:e,reqs:1,key:a};n.push(l),i[a]=l}};zi.dequeue=function(t){for(var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=[],a=e.lookup,s=0;s0;s++){var l=r.pop(),u=l.key,h=l.eles[0],f=a.hasCache(h,l.level);if(n[u]=null,f)continue;i.push(l);var d=e.getBoundingBox(h);e.getElement(h,d,t,l.level,ng.dequeue)}return i};zi.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=this.getKey(t),a=n[i];a!=null&&(a.eles.length===1?(a.reqs=dI,r.updateItem(a),r.pop(),n[i]=null):a.eles.unmerge(t))};zi.onDequeue=function(t){this.onDequeues.push(t)};zi.offDequeue=function(t){wf(this.onDequeues,t)};zi.setupDequeueing=Rhe.setupDequeueing({deqRedrawThreshold:LHe,deqCost:CHe,deqAvgCost:AHe,deqNoDrawCost:_He,deqFastCost:DHe,deq:o(function(e,r,n){return e.dequeue(r,n)},"deq"),onDeqd:o(function(e,r){for(var n=0;n=IHe||r>aE)return null}n.validateLayersElesOrdering(r,t);var u=n.layersByLevel,h=Math.pow(2,r),f=u[r]=u[r]||[],d,p=n.levelIsComplete(r,t),m,g=o(function(){var I=o(function(O){if(n.validateLayersElesOrdering(O,t),n.levelIsComplete(O,t))return m=u[O],!0},"canUseAsTmpLvl"),L=o(function(O){if(!m)for(var M=r+O;rx<=M&&M<=aE&&!I(M);M+=O);},"checkLvls");L(1),L(-1);for(var E=f.length-1;E>=0;E--){var D=f[E];D.invalid&&wf(f,D)}},"checkTempLevels");if(!p)g();else return f;var y=o(function(){if(!d){d=cs();for(var I=0;IWce||D>Wce)return null;var _=E*D;if(_>VHe)return null;var O=n.makeLayer(d,r);if(L!=null){var M=f.indexOf(L)+1;f.splice(M,0,O)}else(I.insert===void 0||I.insert)&&f.unshift(O);return O},"makeLayer");if(n.skipping&&!l)return null;for(var x=null,b=t.length/MHe,T=!l,S=0;S=b||!Aue(x.bb,w.boundingBox()))&&(x=v({insert:!0,after:x}),!x))return null;m||T?n.queueLayer(x,w):n.drawEleInLayer(x,w,r,e),x.eles.push(w),A[r]=x}return m||(T?null:f)};ba.getEleLevelForLayerLevel=function(t,e){return t};ba.drawEleInLayer=function(t,e,r,n){var i=this,a=this.renderer,s=t.context,l=e.boundingBox();l.w===0||l.h===0||!e.visible()||(r=i.getEleLevelForLayerLevel(r,n),a.setImgSmoothing(s,!1),a.drawCachedElement(s,e,null,null,r,UHe),a.setImgSmoothing(s,!0))};ba.levelIsComplete=function(t,e){var r=this,n=r.layersByLevel[t];if(!n||n.length===0)return!1;for(var i=0,a=0;a0||s.invalid)return!1;i+=s.eles.length}return i===e.length};ba.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var n=0;n0){e=!0;break}}return e};ba.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=Gu(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,o(function(n,i,a){e.invalidateLayer(n)},"invalAssocLayers")))};ba.invalidateLayer=function(t){if(this.lastInvalidationTime=Gu(),!t.invalid){var e=t.level,r=t.eles,n=this.layersByLevel[e];wf(n,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var i=0;i3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l=e._private.rscratch;if(!(a&&!e.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var h=a?e.pstyle("opacity").value:1,f=a?e.pstyle("line-opacity").value:1,d=e.pstyle("curve-style").value,p=e.pstyle("line-style").value,m=e.pstyle("width").pfValue,g=e.pstyle("line-cap").value,y=e.pstyle("line-outline-width").value,v=e.pstyle("line-outline-color").value,x=h*f,b=h*f,T=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;d==="straight-triangle"?(s.eleStrokeStyle(t,e,O),s.drawEdgeTrianglePath(e,t,l.allpts)):(t.lineWidth=m,t.lineCap=g,s.eleStrokeStyle(t,e,O),s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLine"),S=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(t.lineWidth=m+y,t.lineCap=g,y>0)s.colorStrokeStyle(t,v[0],v[1],v[2],O);else{t.lineCap="butt";return}d==="straight-triangle"?s.drawEdgeTrianglePath(e,t,l.allpts):(s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLineOutline"),w=o(function(){i&&s.drawEdgeOverlay(t,e)},"drawOverlay"),k=o(function(){i&&s.drawEdgeUnderlay(t,e)},"drawUnderlay"),A=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(t,e,O)},"drawArrows"),C=o(function(){s.drawElementText(t,e,null,n)},"drawText");t.lineJoin="round";var R=e.pstyle("ghost").value==="yes";if(R){var I=e.pstyle("ghost-offset-x").pfValue,L=e.pstyle("ghost-offset-y").pfValue,E=e.pstyle("ghost-opacity").value,D=x*E;t.translate(I,L),T(D),A(D),t.translate(-I,-L)}else S();k(),T(),A(),w(),C(),r&&t.translate(u.x1,u.y1)}};Ohe=o(function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,n){if(n.visible()){var i=n.pstyle("".concat(e,"-opacity")).value;if(i!==0){var a=this,s=a.usePaths(),l=n._private.rscratch,u=n.pstyle("".concat(e,"-padding")).pfValue,h=2*u,f=n.pstyle("".concat(e,"-color")).value;r.lineWidth=h,l.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,f[0],f[1],f[2],i),a.drawEdgePath(n,r,l.allpts,"solid")}}}},"drawEdgeOverlayUnderlay");Hu.drawEdgeOverlay=Ohe("overlay");Hu.drawEdgeUnderlay=Ohe("underlay");Hu.drawEdgePath=function(t,e,r,n){var i=t._private.rscratch,a=e,s,l=!1,u=this.usePaths(),h=t.pstyle("line-dash-pattern").pfValue,f=t.pstyle("line-dash-offset").pfValue;if(u){var d=r.join("$"),p=i.pathCacheKey&&i.pathCacheKey===d;p?(s=e=i.pathCache,l=!0):(s=e=new Path2D,i.pathCacheKey=d,i.pathCache=s)}if(a.setLineDash)switch(n){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(h),a.lineDashOffset=f;break;case"solid":a.setLineDash([]);break}if(!l&&!i.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var m=2;m+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(n==null){if(a&&!s.eleTextBiggerThanMin(e))return}else if(n===!1)return;if(e.isNode()){var l=e.pstyle("label");if(!l||!l.value)return;var u=s.getLabelJustification(e);t.textAlign=u,t.textBaseline="bottom"}else{var h=e.element()._private.rscratch.badLine,f=e.pstyle("label"),d=e.pstyle("source-label"),p=e.pstyle("target-label");if(h||(!f||!f.value)&&(!d||!d.value)&&(!p||!p.value))return;t.textAlign="center",t.textBaseline="bottom"}var m=!r,g;r&&(g=r,t.translate(-g.x1,-g.y1)),i==null?(s.drawText(t,e,null,m,a),e.isEdge()&&(s.drawText(t,e,"source",m,a),s.drawText(t,e,"target",m,a))):s.drawText(t,e,i,m,a),r&&t.translate(g.x1,g.y1)};Cp.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,n=e.pstyle("font-style").strValue,i=e.pstyle("font-size").pfValue+"px",a=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,l=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,u=e.pstyle("text-outline-opacity").value*l,h=e.pstyle("color").value,f=e.pstyle("text-outline-color").value;t.font=n+" "+s+" "+i+" "+a,t.lineJoin="round",this.colorFillStyle(t,h[0],h[1],h[2],l),this.colorStrokeStyle(t,f[0],f[1],f[2],u)};o(eqe,"circle");o(Kce,"roundRect");Cp.getTextAngle=function(t,e){var r,n=t._private,i=n.rscratch,a=e?e+"-":"",s=t.pstyle(a+"text-rotation");if(s.strValue==="autorotate"){var l=Us(i,"labelAngle",e);r=t.isEdge()?l:0}else s.strValue==="none"?r=0:r=s.pfValue;return r};Cp.drawText=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=e._private,s=a.rscratch,l=i?e.effectiveOpacity():1;if(!(i&&(l===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=Us(s,"labelX",r),h=Us(s,"labelY",r),f,d,p=this.getLabelText(e,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(h)){this.setupTextStyle(t,e,i);var m=r?r+"-":"",g=Us(s,"labelWidth",r),y=Us(s,"labelHeight",r),v=e.pstyle(m+"text-margin-x").pfValue,x=e.pstyle(m+"text-margin-y").pfValue,b=e.isEdge(),T=e.pstyle("text-halign").value,S=e.pstyle("text-valign").value;b&&(T="center",S="center"),u+=v,h+=x;var w;switch(n?w=this.getTextAngle(e,r):w=0,w!==0&&(f=u,d=h,t.translate(f,d),t.rotate(w),u=0,h=0),S){case"top":break;case"center":h+=y/2;break;case"bottom":h+=y;break}var k=e.pstyle("text-background-opacity").value,A=e.pstyle("text-border-opacity").value,C=e.pstyle("text-border-width").pfValue,R=e.pstyle("text-background-padding").pfValue,I=e.pstyle("text-background-shape").strValue,L=I==="round-rectangle"||I==="roundrectangle",E=I==="circle",D=2;if(k>0||C>0&&A>0){var _=t.fillStyle,O=t.strokeStyle,M=t.lineWidth,P=e.pstyle("text-background-color").value,B=e.pstyle("text-border-color").value,F=e.pstyle("text-border-style").value,G=k>0,$=C>0&&A>0,U=u-R;switch(T){case"left":U-=g;break;case"center":U-=g/2;break}var j=h-y-R,te=g+2*R,Y=y+2*R;if(G&&(t.fillStyle="rgba(".concat(P[0],",").concat(P[1],",").concat(P[2],",").concat(k*l,")")),$&&(t.strokeStyle="rgba(".concat(B[0],",").concat(B[1],",").concat(B[2],",").concat(A*l,")"),t.lineWidth=C,t.setLineDash))switch(F){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=C/4,t.setLineDash([]);break;case"solid":default:t.setLineDash([]);break}if(L?(t.beginPath(),Kce(t,U,j,te,Y,D)):E?(t.beginPath(),eqe(t,U,j,te,Y)):(t.beginPath(),t.rect(U,j,te,Y)),G&&t.fill(),$&&t.stroke(),$&&F==="double"){var oe=C/2;t.beginPath(),L?Kce(t,U+oe,j+oe,te-2*oe,Y-2*oe,D):t.rect(U+oe,j+oe,te-2*oe,Y-2*oe),t.stroke()}t.fillStyle=_,t.strokeStyle=O,t.lineWidth=M,t.setLineDash&&t.setLineDash([])}var J=2*e.pstyle("text-outline-width").pfValue;if(J>0&&(t.lineWidth=J),e.pstyle("text-wrap").value==="wrap"){var ue=Us(s,"labelWrapCachedLines",r),re=Us(s,"labelLineHeight",r),ee=g/2,Z=this.getLabelJustification(e);switch(Z==="auto"||(T==="left"?Z==="left"?u+=-g:Z==="center"&&(u+=-ee):T==="center"?Z==="left"?u+=-ee:Z==="right"&&(u+=ee):T==="right"&&(Z==="center"?u+=ee:Z==="right"&&(u+=g))),S){case"top":h-=(ue.length-1)*re;break;case"center":case"bottom":h-=(ue.length-1)*re;break}for(var K=0;K0&&t.strokeText(ue[K],u,h),t.fillText(ue[K],u,h),h+=re}else J>0&&t.strokeText(p,u,h),t.fillText(p,u,h);w!==0&&(t.rotate(-w),t.translate(-f,-d))}}};Lf={};Lf.drawNode=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l,u,h=e._private,f=h.rscratch,d=e.position();if(!(!At(d.x)||!At(d.y))&&!(a&&!e.visible())){var p=a?e.effectiveOpacity():1,m=s.usePaths(),g,y=!1,v=e.padding();l=e.width()+2*v,u=e.height()+2*v;var x;r&&(x=r,t.translate(-x.x1,-x.y1));for(var b=e.pstyle("background-image"),T=b.value,S=new Array(T.length),w=new Array(T.length),k=0,A=0;A0&&arguments[0]!==void 0?arguments[0]:D;s.eleFillStyle(t,e,W)},"setupShapeColor"),re=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:$;s.colorStrokeStyle(t,_[0],_[1],_[2],W)},"setupBorderColor"),ee=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Y;s.colorStrokeStyle(t,j[0],j[1],j[2],W)},"setupOutlineColor"),Z=o(function(W,he,z,se){var le=s.nodePathCache=s.nodePathCache||[],ke=bue(z==="polygon"?z+","+se.join(","):z,""+he,""+W,""+J),ve=le[ke],ye,Re=!1;return ve!=null?(ye=ve,Re=!0,f.pathCache=ye):(ye=new Path2D,le[ke]=f.pathCache=ye),{path:ye,cacheHit:Re}},"getPath"),K=e.pstyle("shape").strValue,ae=e.pstyle("shape-polygon-points").pfValue;if(m){t.translate(d.x,d.y);var Q=Z(l,u,K,ae);g=Q.path,y=Q.cacheHit}var de=o(function(){if(!y){var W=d;m&&(W={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(g||t,W.x,W.y,l,u,J,f)}m?t.fill(g):t.fill()},"drawShape"),ne=o(function(){for(var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,z=h.backgrounding,se=0,le=0;le0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasPie(e)&&(s.drawPie(t,e,he),W&&(m||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,J,f)))},"drawPie"),q=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasStripe(e)&&(t.save(),m?t.clip(f.pathCache):(s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,J,f),t.clip()),s.drawStripe(t,e,he),t.restore(),W&&(m||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,J,f)))},"drawStripe"),Ve=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=(L>0?L:-L)*W,z=L>0?0:255;L!==0&&(s.colorFillStyle(t,z,z,z,he),m?t.fill(g):t.fill())},"darken"),pe=o(function(){if(E>0){if(t.lineWidth=E,t.lineCap=P,t.lineJoin=M,t.setLineDash)switch(O){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash(F),t.lineDashOffset=G;break;case"solid":case"double":t.setLineDash([]);break}if(B!=="center"){if(t.save(),t.lineWidth*=2,B==="inside")m?t.clip(g):t.clip();else{var W=new Path2D;W.rect(-l/2-E,-u/2-E,l+2*E,u+2*E),W.addPath(g),t.clip(W,"evenodd")}m?t.stroke(g):t.stroke(),t.restore()}else m?t.stroke(g):t.stroke();if(O==="double"){t.lineWidth=E/3;var he=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",m?t.stroke(g):t.stroke(),t.globalCompositeOperation=he}t.setLineDash&&t.setLineDash([])}},"drawBorder"),Be=o(function(){if(U>0){if(t.lineWidth=U,t.lineCap="butt",t.setLineDash)switch(te){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var W=d;m&&(W={x:0,y:0});var he=s.getNodeShape(e),z=E;B==="inside"&&(z=0),B==="outside"&&(z*=2);var se=(l+z+(U+oe))/l,le=(u+z+(U+oe))/u,ke=l*se,ve=u*le,ye=s.nodeShapes[he].points,Re;if(m){var _e=Z(ke,ve,he,ye);Re=_e.path}if(he==="ellipse")s.drawEllipsePath(Re||t,W.x,W.y,ke,ve);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(he)){var ze=0,Ke=0,xt=0;he==="round-diamond"?ze=(z+oe+U)*1.4:he==="round-heptagon"?(ze=(z+oe+U)*1.075,xt=-(z/2+oe+U)/35):he==="round-hexagon"?ze=(z+oe+U)*1.12:he==="round-pentagon"?(ze=(z+oe+U)*1.13,xt=-(z/2+oe+U)/15):he==="round-tag"?(ze=(z+oe+U)*1.12,Ke=(z/2+U+oe)*.07):he==="round-triangle"&&(ze=(z+oe+U)*(Math.PI/2),xt=-(z+oe/2+U)/Math.PI),ze!==0&&(se=(l+ze)/l,ke=l*se,["round-hexagon","round-tag"].includes(he)||(le=(u+ze)/u,ve=u*le)),J=J==="auto"?Lue(ke,ve):J;for(var We=ke/2,Oe=ve/2,et=J+(z+U+oe)/2,Ue=new Array(ye.length/2),lt=new Array(ye.length/2),Gt=0;Gt0){if(i=i||n.position(),a==null||s==null){var m=n.padding();a=n.width()+2*m,s=n.height()+2*m}l.colorFillStyle(r,f[0],f[1],f[2],h),l.nodeShapes[d].draw(r,i.x,i.y,a+u*2,s+u*2,p),r.fill()}}}},"drawNodeOverlayUnderlay");Lf.drawNodeOverlay=Phe("overlay");Lf.drawNodeUnderlay=Phe("underlay");Lf.hasPie=function(t){return t=t[0],t._private.hasPie};Lf.hasStripe=function(t){return t=t[0],t._private.hasStripe};Lf.drawPie=function(t,e,r,n){e=e[0],n=n||e.position();var i=e.cy().style(),a=e.pstyle("pie-size"),s=e.pstyle("pie-hole"),l=e.pstyle("pie-start-angle").pfValue,u=n.x,h=n.y,f=e.width(),d=e.height(),p=Math.min(f,d)/2,m,g=0,y=this.usePaths();if(y&&(u=0,h=0),a.units==="%"?p=p*a.pfValue:a.pfValue!==void 0&&(p=a.pfValue/2),s.units==="%"?m=p*s.pfValue:s.pfValue!==void 0&&(m=s.pfValue/2),!(m>=p))for(var v=1;v<=i.pieBackgroundN;v++){var x=e.pstyle("pie-"+v+"-background-size").value,b=e.pstyle("pie-"+v+"-background-color").value,T=e.pstyle("pie-"+v+"-background-opacity").value*r,S=x/100;S+g>1&&(S=1-g);var w=1.5*Math.PI+2*Math.PI*g;w+=l;var k=2*Math.PI*S,A=w+k;x===0||g>=1||g+S>1||(m===0?(t.beginPath(),t.moveTo(u,h),t.arc(u,h,p,w,A),t.closePath()):(t.beginPath(),t.arc(u,h,p,w,A),t.arc(u,h,m,A,w,!0),t.closePath()),this.colorFillStyle(t,b[0],b[1],b[2],T),t.fill(),g+=S)}};Lf.drawStripe=function(t,e,r,n){e=e[0],n=n||e.position();var i=e.cy().style(),a=n.x,s=n.y,l=e.width(),u=e.height(),h=0,f=this.usePaths();t.save();var d=e.pstyle("stripe-direction").value,p=e.pstyle("stripe-size");switch(d){case"vertical":break;case"righward":t.rotate(-Math.PI/2);break}var m=l,g=u;p.units==="%"?(m=m*p.pfValue,g=g*p.pfValue):p.pfValue!==void 0&&(m=p.pfValue,g=p.pfValue),f&&(a=0,s=0),s-=m/2,a-=g/2;for(var y=1;y<=i.stripeBackgroundN;y++){var v=e.pstyle("stripe-"+y+"-background-size").value,x=e.pstyle("stripe-"+y+"-background-color").value,b=e.pstyle("stripe-"+y+"-background-opacity").value*r,T=v/100;T+h>1&&(T=1-h),!(v===0||h>=1||h+T>1)&&(t.beginPath(),t.rect(a,s+g*h,m,g*T),t.closePath(),this.colorFillStyle(t,x[0],x[1],x[2],b),t.fill(),h+=T)}t.restore()};us={},tqe=100;us.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/r};us.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,n,i=0;ie.minMbLowQualFrames&&(e.motionBlurPxRatio=e.mbPxRBlurry)),e.clearingMotionBlur&&(e.motionBlurPxRatio=1),e.textureDrawLastFrame&&!d&&(f[e.NODE]=!0,f[e.SELECT_BOX]=!0);var b=r.style(),T=r.zoom(),S=s!==void 0?s:T,w=r.pan(),k={x:w.x,y:w.y},A={zoom:T,pan:{x:w.x,y:w.y}},C=e.prevViewport,R=C===void 0||A.zoom!==C.zoom||A.pan.x!==C.pan.x||A.pan.y!==C.pan.y;!R&&!(y&&!g)&&(e.motionBlurPxRatio=1),l&&(k=l),S*=u,k.x*=u,k.y*=u;var I=e.getCachedZSortedEles();function L(re,ee,Z,K,ae){var Q=re.globalCompositeOperation;re.globalCompositeOperation="destination-out",e.colorFillStyle(re,255,255,255,e.motionBlurTransparency),re.fillRect(ee,Z,K,ae),re.globalCompositeOperation=Q}o(L,"mbclear");function E(re,ee){var Z,K,ae,Q;!e.clearingMotionBlur&&(re===h.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]||re===h.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG])?(Z={x:w.x*m,y:w.y*m},K=T*m,ae=e.canvasWidth*m,Q=e.canvasHeight*m):(Z=k,K=S,ae=e.canvasWidth,Q=e.canvasHeight),re.setTransform(1,0,0,1,0,0),ee==="motionBlur"?L(re,0,0,ae,Q):!n&&(ee===void 0||ee)&&re.clearRect(0,0,ae,Q),i||(re.translate(Z.x,Z.y),re.scale(K,K)),l&&re.translate(l.x,l.y),s&&re.scale(s,s)}if(o(E,"setContextTransform"),d||(e.textureDrawLastFrame=!1),d){if(e.textureDrawLastFrame=!0,!e.textureCache){e.textureCache={},e.textureCache.bb=r.mutableElements().boundingBox(),e.textureCache.texture=e.data.bufferCanvases[e.TEXTURE_BUFFER];var D=e.data.bufferContexts[e.TEXTURE_BUFFER];D.setTransform(1,0,0,1,0,0),D.clearRect(0,0,e.canvasWidth*e.textureMult,e.canvasHeight*e.textureMult),e.render({forcedContext:D,drawOnlyNodeLayer:!0,forcedPxRatio:u*e.textureMult});var A=e.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:e.canvasWidth,height:e.canvasHeight};A.mpan={x:(0-A.pan.x)/A.zoom,y:(0-A.pan.y)/A.zoom}}f[e.DRAG]=!1,f[e.NODE]=!1;var _=h.contexts[e.NODE],O=e.textureCache.texture,A=e.textureCache.viewport;_.setTransform(1,0,0,1,0,0),p?L(_,0,0,A.width,A.height):_.clearRect(0,0,A.width,A.height);var M=b.core("outside-texture-bg-color").value,P=b.core("outside-texture-bg-opacity").value;e.colorFillStyle(_,M[0],M[1],M[2],P),_.fillRect(0,0,A.width,A.height);var T=r.zoom();E(_,!1),_.clearRect(A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u),_.drawImage(O,A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u)}else e.textureOnViewport&&!n&&(e.textureCache=null);var B=r.extent(),F=e.pinching||e.hoverData.dragging||e.swipePanning||e.data.wheelZooming||e.hoverData.draggingEles||e.cy.animated(),G=e.hideEdgesOnViewport&&F,$=[];if($[e.NODE]=!f[e.NODE]&&p&&!e.clearedForMotionBlur[e.NODE]||e.clearingMotionBlur,$[e.NODE]&&(e.clearedForMotionBlur[e.NODE]=!0),$[e.DRAG]=!f[e.DRAG]&&p&&!e.clearedForMotionBlur[e.DRAG]||e.clearingMotionBlur,$[e.DRAG]&&(e.clearedForMotionBlur[e.DRAG]=!0),f[e.NODE]||i||a||$[e.NODE]){var U=p&&!$[e.NODE]&&m!==1,_=n||(U?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]:h.contexts[e.NODE]),j=p&&!U?"motionBlur":void 0;E(_,j),G?e.drawCachedNodes(_,I.nondrag,u,B):e.drawLayeredElements(_,I.nondrag,u,B),e.debug&&e.drawDebugPoints(_,I.nondrag),!i&&!p&&(f[e.NODE]=!1)}if(!a&&(f[e.DRAG]||i||$[e.DRAG])){var U=p&&!$[e.DRAG]&&m!==1,_=n||(U?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG]:h.contexts[e.DRAG]);E(_,p&&!U?"motionBlur":void 0),G?e.drawCachedNodes(_,I.drag,u,B):e.drawCachedElements(_,I.drag,u,B),e.debug&&e.drawDebugPoints(_,I.drag),!i&&!p&&(f[e.DRAG]=!1)}if(this.drawSelectionRectangle(t,E),p&&m!==1){var te=h.contexts[e.NODE],Y=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE],oe=h.contexts[e.DRAG],J=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG],ue=o(function(ee,Z,K){ee.setTransform(1,0,0,1,0,0),K||!x?ee.clearRect(0,0,e.canvasWidth,e.canvasHeight):L(ee,0,0,e.canvasWidth,e.canvasHeight);var ae=m;ee.drawImage(Z,0,0,e.canvasWidth*ae,e.canvasHeight*ae,0,0,e.canvasWidth,e.canvasHeight)},"drawMotionBlur");(f[e.NODE]||$[e.NODE])&&(ue(te,Y,$[e.NODE]),f[e.NODE]=!1),(f[e.DRAG]||$[e.DRAG])&&(ue(oe,J,$[e.DRAG]),f[e.DRAG]=!1)}e.prevViewport=A,e.clearingMotionBlur&&(e.clearingMotionBlur=!1,e.motionBlurCleared=!0,e.motionBlur=!0),p&&(e.motionBlurTimeout=setTimeout(function(){e.motionBlurTimeout=null,e.clearedForMotionBlur[e.NODE]=!1,e.clearedForMotionBlur[e.DRAG]=!1,e.motionBlur=!1,e.clearingMotionBlur=!d,e.mbFrames=0,f[e.NODE]=!0,f[e.DRAG]=!0,e.redraw()},tqe)),n||r.emit("render")};us.drawSelectionRectangle=function(t,e){var r=this,n=r.cy,i=r.data,a=n.style(),s=t.drawOnlyNodeLayer,l=t.drawAllLayers,u=i.canvasNeedsRedraw,h=t.forcedContext;if(r.showFps||!s&&u[r.SELECT_BOX]&&!l){var f=h||i.contexts[r.SELECT_BOX];if(e(f),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var d=r.cy.zoom(),p=a.core("selection-box-border-width").value/d;f.lineWidth=p,f.fillStyle="rgba("+a.core("selection-box-color").value[0]+","+a.core("selection-box-color").value[1]+","+a.core("selection-box-color").value[2]+","+a.core("selection-box-opacity").value+")",f.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),p>0&&(f.strokeStyle="rgba("+a.core("selection-box-border-color").value[0]+","+a.core("selection-box-border-color").value[1]+","+a.core("selection-box-border-color").value[2]+","+a.core("selection-box-opacity").value+")",f.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(i.bgActivePosistion&&!r.hoverData.selecting){var d=r.cy.zoom(),m=i.bgActivePosistion;f.fillStyle="rgba("+a.core("active-bg-color").value[0]+","+a.core("active-bg-color").value[1]+","+a.core("active-bg-color").value[2]+","+a.core("active-bg-opacity").value+")",f.beginPath(),f.arc(m.x,m.y,a.core("active-bg-size").pfValue/d,0,2*Math.PI),f.fill()}var g=r.lastRedrawTime;if(r.showFps&&g){g=Math.round(g);var y=Math.round(1e3/g),v="1 frame = "+g+" ms = "+y+" fps";if(f.setTransform(1,0,0,1,0,0),f.fillStyle="rgba(255, 0, 0, 0.75)",f.strokeStyle="rgba(255, 0, 0, 0.75)",f.font="30px Arial",!j2){var x=f.measureText(v);j2=x.actualBoundingBoxAscent}f.fillText(v,0,j2);var b=60;f.strokeRect(0,j2+10,250,20),f.fillRect(0,j2+10,250*Math.min(y/b,1),20)}l||(u[r.SELECT_BOX]=!1)}};o(Qce,"compileShader");o(rqe,"createProgram");o(nqe,"createTextureCanvas");o(MI,"getEffectivePanZoom");o(iqe,"getEffectiveZoom");o(aqe,"modelToRenderedPosition");o(sqe,"isSimpleShape");o(oqe,"arrayEqual");o(dp,"toWebGLColor");o(Zm,"indexToVec4");o(lqe,"vec4ToIndex");o(cqe,"createTexture");o(Bhe,"getTypeInfo");o(Fhe,"createTypedArray");o(uqe,"createTypedArrayView");o(hqe,"createBufferStaticDraw");o(Mc,"createBufferDynamicDraw");o(fqe,"create3x3MatrixBufferDynamicDraw");o(dqe,"createPickingFrameBuffer");Zce=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});o(BM,"create");o(Jce,"identity");o(pqe,"multiply");o(Yk,"translate");o(eue,"rotate");o(aI,"scale");o(mqe,"projection");gqe=(function(){function t(e,r,n,i){Af(this,t),this.debugID=Math.floor(Math.random()*1e4),this.r=e,this.texSize=r,this.texRows=n,this.texHeight=Math.floor(r/n),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(e,r,r),this.scratch=i(e,r,this.texHeight,"scratch")}return o(t,"Atlas"),_f(t,[{key:"lock",value:o(function(){this.locked=!0},"lock")},{key:"getKeys",value:o(function(){return new Set(this.keyToLocation.keys())},"getKeys")},{key:"getScale",value:o(function(r){var n=r.w,i=r.h,a=this.texHeight,s=this.texSize,l=a/i,u=n*l,h=i*l;return u>s&&(l=s/n,u=n*l,h=i*l),{scale:l,texW:u,texH:h}},"getScale")},{key:"draw",value:o(function(r,n,i){var a=this;if(this.locked)throw new Error("can't draw, atlas is locked");var s=this.texSize,l=this.texRows,u=this.texHeight,h=this.getScale(n),f=h.scale,d=h.texW,p=h.texH,m=o(function(T,S){if(i&&S){var w=S.context,k=T.x,A=T.row,C=k,R=u*A;w.save(),w.translate(C,R),w.scale(f,f),i(w,n),w.restore()}},"drawAt"),g=[null,null],y=o(function(){m(a.freePointer,a.canvas),g[0]={x:a.freePointer.x,y:a.freePointer.row*u,w:d,h:p},g[1]={x:a.freePointer.x+d,y:a.freePointer.row*u,w:0,h:p},a.freePointer.x+=d,a.freePointer.x==s&&(a.freePointer.x=0,a.freePointer.row++)},"drawNormal"),v=o(function(){var T=a.scratch,S=a.canvas;T.clear(),m({x:0,row:0},T);var w=s-a.freePointer.x,k=d-w,A=u;{var C=a.freePointer.x,R=a.freePointer.row*u,I=w;S.context.drawImage(T,0,0,I,A,C,R,I,A),g[0]={x:C,y:R,w:I,h:p}}{var L=w,E=(a.freePointer.row+1)*u,D=k;S&&S.context.drawImage(T,L,0,D,A,0,E,D,A),g[1]={x:0,y:E,w:D,h:p}}a.freePointer.x=k,a.freePointer.row++},"drawWrapped"),x=o(function(){a.freePointer.x=0,a.freePointer.row++},"moveToStartOfNextRow");if(this.freePointer.x+d<=s)y();else{if(this.freePointer.row>=l-1)return!1;this.freePointer.x===s?(x(),y()):this.enableWrapping?v():(x(),y())}return this.keyToLocation.set(r,g),this.needsBuffer=!0,g},"draw")},{key:"getOffsets",value:o(function(r){return this.keyToLocation.get(r)},"getOffsets")},{key:"isEmpty",value:o(function(){return this.freePointer.x===0&&this.freePointer.row===0},"isEmpty")},{key:"canFit",value:o(function(r){if(this.locked)return!1;var n=this.texSize,i=this.texRows,a=this.getScale(r),s=a.texW;return this.freePointer.x+s>n?this.freePointer.row1&&arguments[1]!==void 0?arguments[1]:{},a=i.forceRedraw,s=a===void 0?!1:a,l=i.filterEle,u=l===void 0?function(){return!0}:l,h=i.filterType,f=h===void 0?function(){return!0}:h,d=!1,p=!1,m=qs(r),g;try{for(m.s();!(g=m.n()).done;){var y=g.value;if(u(y)){var v=qs(this.renderTypes.values()),x;try{var b=o(function(){var S=x.value,w=S.type;if(f(w)){var k=n.collections.get(S.collection),A=S.getKey(y),C=Array.isArray(A)?A:[A];if(s)C.forEach(function(E){return k.markKeyForGC(E)}),p=!0;else{var R=S.getID?S.getID(y):y.id(),I=n._key(w,R),L=n.typeAndIdToKey.get(I);L!==void 0&&!oqe(C,L)&&(d=!0,n.typeAndIdToKey.delete(I),L.forEach(function(E){return k.markKeyForGC(E)}))}}},"_loop2");for(v.s();!(x=v.n()).done;)b()}catch(T){v.e(T)}finally{v.f()}}}}catch(T){m.e(T)}finally{m.f()}return p&&(this.gc(),d=!1),d},"invalidate")},{key:"gc",value:o(function(){var r=qs(this.collections.values()),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;i.gc()}}catch(a){r.e(a)}finally{r.f()}},"gc")},{key:"getOrCreateAtlas",value:o(function(r,n,i,a){var s=this.renderTypes.get(n),l=this.collections.get(s.collection),u=!1,h=l.draw(a,i,function(p){s.drawClipped?(p.save(),p.beginPath(),p.rect(0,0,i.w,i.h),p.clip(),s.drawElement(p,r,i,!0,!0),p.restore()):s.drawElement(p,r,i,!0,!0),u=!0});if(u){var f=s.getID?s.getID(r):r.id(),d=this._key(n,f);this.typeAndIdToKey.has(d)?this.typeAndIdToKey.get(d).push(a):this.typeAndIdToKey.set(d,[a])}return h},"getOrCreateAtlas")},{key:"getAtlasInfo",value:o(function(r,n){var i=this,a=this.renderTypes.get(n),s=a.getKey(r),l=Array.isArray(s)?s:[s];return l.map(function(u){var h=a.getBoundingBox(r,u),f=i.getOrCreateAtlas(r,n,h,u),d=f.getOffsets(u),p=_i(d,2),m=p[0],g=p[1];return{atlas:f,tex:m,tex1:m,tex2:g,bb:h}})},"getAtlasInfo")},{key:"getDebugInfo",value:o(function(){var r=[],n=qs(this.collections),i;try{for(n.s();!(i=n.n()).done;){var a=_i(i.value,2),s=a[0],l=a[1],u=l.getCounts(),h=u.keyCount,f=u.atlasCount;r.push({type:s,keyCount:h,atlasCount:f})}}catch(d){n.e(d)}finally{n.f()}return r},"getDebugInfo")}])})(),bqe=(function(){function t(e){Af(this,t),this.globalOptions=e,this.atlasSize=e.webglTexSize,this.maxAtlasesPerBatch=e.webglTexPerBatch,this.batchAtlases=[]}return o(t,"AtlasBatchManager"),_f(t,[{key:"getMaxAtlasesPerBatch",value:o(function(){return this.maxAtlasesPerBatch},"getMaxAtlasesPerBatch")},{key:"getAtlasSize",value:o(function(){return this.atlasSize},"getAtlasSize")},{key:"getIndexArray",value:o(function(){return Array.from({length:this.maxAtlasesPerBatch},function(r,n){return n})},"getIndexArray")},{key:"startBatch",value:o(function(){this.batchAtlases=[]},"startBatch")},{key:"getAtlasCount",value:o(function(){return this.batchAtlases.length},"getAtlasCount")},{key:"getAtlases",value:o(function(){return this.batchAtlases},"getAtlases")},{key:"canAddToCurrentBatch",value:o(function(r){return this.batchAtlases.length===this.maxAtlasesPerBatch?this.batchAtlases.includes(r):!0},"canAddToCurrentBatch")},{key:"getAtlasIndexForBatch",value:o(function(r){var n=this.batchAtlases.indexOf(r);if(n<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(r),n=this.batchAtlases.length-1}return n},"getAtlasIndexForBatch")}])})(),Tqe=` + float circleSD(vec2 p, float r) { + return distance(vec2(0), p) - r; // signed distance + } +`,wqe=` + float rectangleSD(vec2 p, vec2 b) { + vec2 d = abs(p)-b; + return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0); + } +`,kqe=` + float roundRectangleSD(vec2 p, vec2 b, vec4 cr) { + cr.xy = (p.x > 0.0) ? cr.xy : cr.zw; + cr.x = (p.y > 0.0) ? cr.x : cr.y; + vec2 q = abs(p) - b + cr.x; + return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x; + } +`,Eqe=` + float ellipseSD(vec2 p, vec2 ab) { + p = abs( p ); // symmetry + + // find root with Newton solver + vec2 q = ab*(p-ab); + float w = (q.x1.0) ? d : -d; + } +`,nx={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},sE={IGNORE:1,USE_BB:2},FM=0,tue=1,rue=2,$M=3,Jm=4,Pk=5,K2=6,Q2=7,Sqe=(function(){function t(e,r,n){Af(this,t),this.r=e,this.gl=r,this.maxInstances=n.webglBatchSize,this.atlasSize=n.webglTexSize,this.bgColor=n.bgColor,this.debug=n.webglDebug,this.batchDebugInfo=[],n.enableWrapping=!0,n.createTextureCanvas=nqe,this.atlasManager=new xqe(e,n),this.batchManager=new bqe(n),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(nx.SCREEN),this.pickingProgram=this._createShaderProgram(nx.PICKING),this.vao=this._createVAO()}return o(t,"ElementDrawingWebGL"),_f(t,[{key:"addAtlasCollection",value:o(function(r,n){this.atlasManager.addAtlasCollection(r,n)},"addAtlasCollection")},{key:"addTextureAtlasRenderType",value:o(function(r,n){this.atlasManager.addRenderType(r,n)},"addTextureAtlasRenderType")},{key:"addSimpleShapeRenderType",value:o(function(r,n){this.simpleShapeOptions.set(r,n)},"addSimpleShapeRenderType")},{key:"invalidate",value:o(function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.type,a=this.atlasManager;return i?a.invalidate(r,{filterType:o(function(l){return l===i},"filterType"),forceRedraw:!0}):a.invalidate(r)},"invalidate")},{key:"gc",value:o(function(){this.atlasManager.gc()},"gc")},{key:"_createShaderProgram",value:o(function(r){var n=this.gl,i=`#version 300 es + precision highp float; + + uniform mat3 uPanZoomMatrix; + uniform int uAtlasSize; + + // instanced + in vec2 aPosition; // a vertex from the unit square + + in mat3 aTransform; // used to transform verticies, eg into a bounding box + in int aVertType; // the type of thing we are rendering + + // the z-index that is output when using picking mode + in vec4 aIndex; + + // For textures + in int aAtlasId; // which shader unit/atlas to use + in vec4 aTex; // x/y/w/h of texture in atlas + + // for edges + in vec4 aPointAPointB; + in vec4 aPointCPointD; + in vec2 aLineWidth; // also used for node border width + + // simple shapes + in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left] + in vec4 aColor; // also used for edges + in vec4 aBorderColor; // aLineWidth is used for border width + + // output values passed to the fragment shader + out vec2 vTexCoord; + out vec4 vColor; + out vec2 vPosition; + // flat values are not interpolated + flat out int vAtlasId; + flat out int vVertType; + flat out vec2 vTopRight; + flat out vec2 vBotLeft; + flat out vec4 vCornerRadius; + flat out vec4 vBorderColor; + flat out vec2 vBorderWidth; + flat out vec4 vIndex; + + void main(void) { + int vid = gl_VertexID; + vec2 position = aPosition; // TODO make this a vec3, simplifies some code below + + if(aVertType == `.concat(FM,`) { + float texX = aTex.x; // texture coordinates + float texY = aTex.y; + float texW = aTex.z; + float texH = aTex.w; + + if(vid == 1 || vid == 2 || vid == 4) { + texX += texW; + } + if(vid == 2 || vid == 4 || vid == 5) { + texY += texH; + } + + float d = float(uAtlasSize); + vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1 + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + } + else if(aVertType == `).concat(Jm," || aVertType == ").concat(Q2,` + || aVertType == `).concat(Pk," || aVertType == ").concat(K2,`) { // simple shapes + + // the bounding box is needed by the fragment shader + vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat + vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat + vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated + + // calculations are done in the fragment shader, just pass these along + vColor = aColor; + vCornerRadius = aCornerRadius; + vBorderColor = aBorderColor; + vBorderWidth = aLineWidth; + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + } + else if(aVertType == `).concat(tue,`) { + vec2 source = aPointAPointB.xy; + vec2 target = aPointAPointB.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + // stretch the unit square into a long skinny rectangle + vec2 xBasis = target - source; + vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x)); + vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y; + + gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0); + vColor = aColor; + } + else if(aVertType == `).concat(rue,`) { + vec2 pointA = aPointAPointB.xy; + vec2 pointB = aPointAPointB.zw; + vec2 pointC = aPointCPointD.xy; + vec2 pointD = aPointCPointD.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + vec2 p0, p1, p2, pos; + if(position.x == 0.0) { // The left side of the unit square + p0 = pointA; + p1 = pointB; + p2 = pointC; + pos = position; + } else { // The right side of the unit square, use same approach but flip the geometry upside down + p0 = pointD; + p1 = pointC; + p2 = pointB; + pos = vec2(0.0, -position.y); + } + + vec2 p01 = p1 - p0; + vec2 p12 = p2 - p1; + vec2 p21 = p1 - p2; + + // Find the normal vector. + vec2 tangent = normalize(normalize(p12) + normalize(p01)); + vec2 normal = vec2(-tangent.y, tangent.x); + + // Find the vector perpendicular to p0 -> p1. + vec2 p01Norm = normalize(vec2(-p01.y, p01.x)); + + // Determine the bend direction. + float sigma = sign(dot(p01 + p21, normal)); + float width = aLineWidth[0]; + + if(sign(pos.y) == -sigma) { + // This is an intersecting vertex. Adjust the position so that there's no overlap. + vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } else { + // This is a non-intersecting vertex. Treat it like a mitre join. + vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } + + vColor = aColor; + } + else if(aVertType == `).concat($M,` && vid < 3) { + // massage the first triangle into an edge arrow + if(vid == 0) + position = vec2(-0.15, -0.3); + if(vid == 1) + position = vec2( 0.0, 0.0); + if(vid == 2) + position = vec2( 0.15, -0.3); + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + vColor = aColor; + } + else { + gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space + } + + vAtlasId = aAtlasId; + vVertType = aVertType; + vIndex = aIndex; + } + `),a=this.batchManager.getIndexArray(),s=`#version 300 es + precision highp float; + + // declare texture unit for each texture atlas in the batch + `.concat(a.map(function(h){return"uniform sampler2D uTexture".concat(h,";")}).join(` + `),` + + uniform vec4 uBGColor; + uniform float uZoom; + + in vec2 vTexCoord; + in vec4 vColor; + in vec2 vPosition; // model coordinates + + flat in int vAtlasId; + flat in vec4 vIndex; + flat in int vVertType; + flat in vec2 vTopRight; + flat in vec2 vBotLeft; + flat in vec4 vCornerRadius; + flat in vec4 vBorderColor; + flat in vec2 vBorderWidth; + + out vec4 outColor; + + `).concat(Tqe,` + `).concat(wqe,` + `).concat(kqe,` + `).concat(Eqe,` + + vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha + return vec4( + top.rgb + (bot.rgb * (1.0 - top.a)), + top.a + (bot.a * (1.0 - top.a)) + ); + } + + vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance + // scale to the zoom level so that borders don't look blurry when zoomed in + // note 1.5 is an aribitrary value chosen because it looks good + return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); + } + + void main(void) { + if(vVertType == `).concat(FM,`) { + // look up the texel from the texture unit + `).concat(a.map(function(h){return"if(vAtlasId == ".concat(h,") outColor = texture(uTexture").concat(h,", vTexCoord);")}).join(` + else `),` + } + else if(vVertType == `).concat($M,`) { + // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out'; + outColor = blend(vColor, uBGColor); + outColor.a = 1.0; // make opaque, masks out line under arrow + } + else if(vVertType == `).concat(Jm,` && vBorderWidth == vec2(0.0)) { // simple rectangle with no border + outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done + } + else if(vVertType == `).concat(Jm," || vVertType == ").concat(Q2,` + || vVertType == `).concat(Pk," || vVertType == ").concat(K2,`) { // use SDF + + float outerBorder = vBorderWidth[0]; + float innerBorder = vBorderWidth[1]; + float borderPadding = outerBorder * 2.0; + float w = vTopRight.x - vBotLeft.x - borderPadding; + float h = vTopRight.y - vBotLeft.y - borderPadding; + vec2 b = vec2(w/2.0, h/2.0); // half width, half height + vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center + + float d; // signed distance + if(vVertType == `).concat(Jm,`) { + d = rectangleSD(p, b); + } else if(vVertType == `).concat(Q2,` && w == h) { + d = circleSD(p, b.x); // faster than ellipse + } else if(vVertType == `).concat(Q2,`) { + d = ellipseSD(p, b); + } else { + d = roundRectangleSD(p, b, vCornerRadius.wzyx); + } + + // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling + // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box + if(d > 0.0) { + if(d > outerBorder) { + discard; + } else { + outColor = distInterp(vBorderColor, vec4(0), d - outerBorder); + } + } else { + if(d > innerBorder) { + vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor; + vec4 innerBorderColor = blend(vBorderColor, vColor); + outColor = distInterp(innerBorderColor, outerColor, d); + } + else { + vec4 outerColor; + if(innerBorder == 0.0 && outerBorder == 0.0) { + outerColor = vec4(0); + } else if(innerBorder == 0.0) { + outerColor = vBorderColor; + } else { + outerColor = blend(vBorderColor, vColor); + } + outColor = distInterp(vColor, outerColor, d - innerBorder); + } + } + } + else { + outColor = vColor; + } + + `).concat(r.picking?`if(outColor.a == 0.0) discard; + else outColor = vIndex;`:"",` + } + `),l=rqe(n,i,s);l.aPosition=n.getAttribLocation(l,"aPosition"),l.aIndex=n.getAttribLocation(l,"aIndex"),l.aVertType=n.getAttribLocation(l,"aVertType"),l.aTransform=n.getAttribLocation(l,"aTransform"),l.aAtlasId=n.getAttribLocation(l,"aAtlasId"),l.aTex=n.getAttribLocation(l,"aTex"),l.aPointAPointB=n.getAttribLocation(l,"aPointAPointB"),l.aPointCPointD=n.getAttribLocation(l,"aPointCPointD"),l.aLineWidth=n.getAttribLocation(l,"aLineWidth"),l.aColor=n.getAttribLocation(l,"aColor"),l.aCornerRadius=n.getAttribLocation(l,"aCornerRadius"),l.aBorderColor=n.getAttribLocation(l,"aBorderColor"),l.uPanZoomMatrix=n.getUniformLocation(l,"uPanZoomMatrix"),l.uAtlasSize=n.getUniformLocation(l,"uAtlasSize"),l.uBGColor=n.getUniformLocation(l,"uBGColor"),l.uZoom=n.getUniformLocation(l,"uZoom"),l.uTextures=[];for(var u=0;u1&&arguments[1]!==void 0?arguments[1]:nx.SCREEN;this.panZoomMatrix=r,this.renderTarget=n,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()},"startFrame")},{key:"startBatch",value:o(function(){this.instanceCount=0,this.batchManager.startBatch()},"startBatch")},{key:"endFrame",value:o(function(){this.endBatch()},"endFrame")},{key:"_isVisible",value:o(function(r,n){return r.visible()?n&&n.isVisible?n.isVisible(r):!0:!1},"_isVisible")},{key:"drawTexture",value:o(function(r,n,i){var a=this.atlasManager,s=this.batchManager,l=a.getRenderTypeOpts(i);if(this._isVisible(r,l)&&!(r.isEdge()&&!this._isValidEdge(r))){if(this.renderTarget.picking&&l.getTexPickingMode){var u=l.getTexPickingMode(r);if(u===sE.IGNORE)return;if(u==sE.USE_BB){this.drawPickingRectangle(r,n,i);return}}var h=a.getAtlasInfo(r,i),f=qs(h),d;try{for(f.s();!(d=f.n()).done;){var p=d.value,m=p.atlas,g=p.tex1,y=p.tex2;s.canAddToCurrentBatch(m)||this.endBatch();for(var v=s.getAtlasIndexForBatch(m),x=0,b=[[g,!0],[y,!1]];x=this.maxInstances&&this.endBatch()}}}}catch(L){f.e(L)}finally{f.f()}}},"drawTexture")},{key:"setTransformMatrix",value:o(function(r,n,i,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,l=0;if(i.shapeProps&&i.shapeProps.padding&&(l=r.pstyle(i.shapeProps.padding).pfValue),a){var u=a.bb,h=a.tex1,f=a.tex2,d=h.w/(h.w+f.w);s||(d=1-d);var p=this._getAdjustedBB(u,l,s,d);this._applyTransformMatrix(n,p,i,r)}else{var m=i.getBoundingBox(r),g=this._getAdjustedBB(m,l,!0,1);this._applyTransformMatrix(n,g,i,r)}},"setTransformMatrix")},{key:"_applyTransformMatrix",value:o(function(r,n,i,a){var s,l;Jce(r);var u=i.getRotation?i.getRotation(a):0;if(u!==0){var h=i.getRotationPoint(a),f=h.x,d=h.y;Yk(r,r,[f,d]),eue(r,r,u);var p=i.getRotationOffset(a);s=p.x+(n.xOffset||0),l=p.y+(n.yOffset||0)}else s=n.x1,l=n.y1;Yk(r,r,[s,l]),aI(r,r,[n.w,n.h])},"_applyTransformMatrix")},{key:"_getAdjustedBB",value:o(function(r,n,i,a){var s=r.x1,l=r.y1,u=r.w,h=r.h,f=r.yOffset;n&&(s-=n,l-=n,u+=2*n,h+=2*n);var d=0,p=u*a;return i&&a<1?u=p:!i&&a<1&&(d=u-p,s+=d,u=p),{x1:s,y1:l,w:u,h,xOffset:d,yOffset:f}},"_getAdjustedBB")},{key:"drawPickingRectangle",value:o(function(r,n,i){var a=this.atlasManager.getRenderTypeOpts(i),s=this.instanceCount;this.vertTypeBuffer.getView(s)[0]=Jm;var l=this.indexBuffer.getView(s);Zm(n,l);var u=this.colorBuffer.getView(s);dp([0,0,0],1,u);var h=this.transformBuffer.getMatrixView(s);this.setTransformMatrix(r,h,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()},"drawPickingRectangle")},{key:"drawNode",value:o(function(r,n,i){var a=this.simpleShapeOptions.get(i);if(this._isVisible(r,a)){var s=a.shapeProps,l=this._getVertTypeForShape(r,s.shape);if(l===void 0||a.isSimple&&!a.isSimple(r)){this.drawTexture(r,n,i);return}var u=this.instanceCount;if(this.vertTypeBuffer.getView(u)[0]=l,l===Pk||l===K2){var h=a.getBoundingBox(r),f=this._getCornerRadius(r,s.radius,h),d=this.cornerRadiusBuffer.getView(u);d[0]=f,d[1]=f,d[2]=f,d[3]=f,l===K2&&(d[0]=0,d[2]=0)}var p=this.indexBuffer.getView(u);Zm(n,p);var m=r.pstyle(s.color).value,g=r.pstyle(s.opacity).value,y=this.colorBuffer.getView(u);dp(m,g,y);var v=this.lineWidthBuffer.getView(u);if(v[0]=0,v[1]=0,s.border){var x=r.pstyle("border-width").value;if(x>0){var b=r.pstyle("border-color").value,T=r.pstyle("border-opacity").value,S=this.borderColorBuffer.getView(u);dp(b,T,S);var w=r.pstyle("border-position").value;if(w==="inside")v[0]=0,v[1]=-x;else if(w==="outside")v[0]=x,v[1]=0;else{var k=x/2;v[0]=k,v[1]=-k}}}var A=this.transformBuffer.getMatrixView(u);this.setTransformMatrix(r,A,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},"drawNode")},{key:"_getVertTypeForShape",value:o(function(r,n){var i=r.pstyle(n).value;switch(i){case"rectangle":return Jm;case"ellipse":return Q2;case"roundrectangle":case"round-rectangle":return Pk;case"bottom-round-rectangle":return K2;default:return}},"_getVertTypeForShape")},{key:"_getCornerRadius",value:o(function(r,n,i){var a=i.w,s=i.h;if(r.pstyle(n).value==="auto")return kf(a,s);var l=r.pstyle(n).pfValue,u=a/2,h=s/2;return Math.min(l,h,u)},"_getCornerRadius")},{key:"drawEdgeArrow",value:o(function(r,n,i){if(r.visible()){var a=r._private.rscratch,s,l,u;if(i==="source"?(s=a.arrowStartX,l=a.arrowStartY,u=a.srcArrowAngle):(s=a.arrowEndX,l=a.arrowEndY,u=a.tgtArrowAngle),!(isNaN(s)||s==null||isNaN(l)||l==null||isNaN(u)||u==null)){var h=r.pstyle(i+"-arrow-shape").value;if(h!=="none"){var f=r.pstyle(i+"-arrow-color").value,d=r.pstyle("opacity").value,p=r.pstyle("line-opacity").value,m=d*p,g=r.pstyle("width").pfValue,y=r.pstyle("arrow-scale").value,v=this.r.getArrowWidth(g,y),x=this.instanceCount,b=this.transformBuffer.getMatrixView(x);Jce(b),Yk(b,b,[s,l]),aI(b,b,[v,v]),eue(b,b,u),this.vertTypeBuffer.getView(x)[0]=$M;var T=this.indexBuffer.getView(x);Zm(n,T);var S=this.colorBuffer.getView(x);dp(f,m,S),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},"drawEdgeArrow")},{key:"drawEdgeLine",value:o(function(r,n){if(r.visible()){var i=this._getEdgePoints(r);if(i){var a=r.pstyle("opacity").value,s=r.pstyle("line-opacity").value,l=r.pstyle("width").pfValue,u=r.pstyle("line-color").value,h=a*s;if(i.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),i.length==4){var f=this.instanceCount;this.vertTypeBuffer.getView(f)[0]=tue;var d=this.indexBuffer.getView(f);Zm(n,d);var p=this.colorBuffer.getView(f);dp(u,h,p);var m=this.lineWidthBuffer.getView(f);m[0]=l;var g=this.pointAPointBBuffer.getView(f);g[0]=i[0],g[1]=i[1],g[2]=i[2],g[3]=i[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y=this.maxInstances&&this.endBatch()}}}},"drawEdgeLine")},{key:"_isValidEdge",value:o(function(r){var n=r._private.rscratch;return!(n.badLine||n.allpts==null||isNaN(n.allpts[0]))},"_isValidEdge")},{key:"_getEdgePoints",value:o(function(r){var n=r._private.rscratch;if(this._isValidEdge(r)){var i=n.allpts;if(i.length==4)return i;var a=this._getNumSegments(r);return this._getCurveSegmentPoints(i,a)}},"_getEdgePoints")},{key:"_getNumSegments",value:o(function(r){var n=15;return Math.min(Math.max(n,5),this.maxInstances)},"_getNumSegments")},{key:"_getCurveSegmentPoints",value:o(function(r,n){if(r.length==4)return r;for(var i=Array((n+1)*2),a=0;a<=n;a++)if(a==0)i[0]=r[0],i[1]=r[1];else if(a==n)i[a*2]=r[r.length-2],i[a*2+1]=r[r.length-1];else{var s=a/n;this._setCurvePoint(r,s,i,a*2)}return i},"_getCurveSegmentPoints")},{key:"_setCurvePoint",value:o(function(r,n,i,a){if(r.length<=2)i[a]=r[0],i[a+1]=r[1];else{for(var s=Array(r.length-2),l=0;l0}},"isLayerVisible"),l=o(function(d){var p=d.pstyle("text-events").strValue==="yes";return p?sE.USE_BB:sE.IGNORE},"getTexPickingMode"),u=o(function(d){var p=d.position(),m=p.x,g=p.y,y=d.outerWidth(),v=d.outerHeight();return{w:y,h:v,x1:m-y/2,y1:g-v/2}},"getBBForSimpleShape");r.drawing.addAtlasCollection("node",{texRows:t.webglTexRowsNodes}),r.drawing.addAtlasCollection("label",{texRows:t.webglTexRows}),r.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:e.getStyleKey,getBoundingBox:e.getElementBox,drawElement:e.drawElement}),r.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:u,isSimple:sqe,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),r.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:u,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),r.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:u,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),r.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:l,getKey:zM(e.getLabelKey,null),getBoundingBox:GM(e.getLabelBox,null),drawClipped:!0,drawElement:e.drawLabel,getRotation:i(null),getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:a("label")}),r.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:l,getKey:zM(e.getSourceLabelKey,"source"),getBoundingBox:GM(e.getSourceLabelBox,"source"),drawClipped:!0,drawElement:e.drawSourceLabel,getRotation:i("source"),getRotationPoint:e.getSourceLabelRotationPoint,getRotationOffset:e.getSourceLabelRotationOffset,isVisible:a("source-label")}),r.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:l,getKey:zM(e.getTargetLabelKey,"target"),getBoundingBox:GM(e.getTargetLabelBox,"target"),drawClipped:!0,drawElement:e.drawTargetLabel,getRotation:i("target"),getRotationPoint:e.getTargetLabelRotationPoint,getRotationOffset:e.getTargetLabelRotationOffset,isVisible:a("target-label")});var h=xx(function(){console.log("garbage collect flag set"),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(f,d){var p=!1;d&&d.length>0&&(p|=r.drawing.invalidate(d)),p&&h()}),Aqe(r)};o(Cqe,"getBGColor");o(zhe,"getLabelLines");zM=o(function(e,r){return function(n){var i=e(n),a=zhe(n,r);return a.length>1?a.map(function(s,l){return"".concat(i,"_").concat(l)}):i}},"getStyleKeysForLabel"),GM=o(function(e,r){return function(n,i){var a=e(n);if(typeof i=="string"){var s=i.indexOf("_");if(s>0){var l=Number(i.substring(s+1)),u=zhe(n,r),h=a.h/u.length,f=h*l,d=a.y1+f;return{x1:a.x1,w:a.w,y1:d,h,yOffset:f}}}return a}},"getBoundingBoxForLabel");o(Aqe,"overrideCanvasRendererFunctions");o(_qe,"clearWebgl");o(Dqe,"clearCanvas");o(Lqe,"createPanZoomMatrix");o(Ghe,"setContextTransform");o(Rqe,"drawSelectionRectangle");o(Nqe,"drawAxes");o(Mqe,"drawAtlases");o(Iqe,"getPickingIndexes");o(Oqe,"findNearestElementsWebgl");o(VM,"drawEle");o(Vhe,"renderWebgl");Rf={};Rf.drawPolygonPath=function(t,e,r,n,i,a){var s=n/2,l=i/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*a[0],r+l*a[1]);for(var u=1;u0&&s>0){m.clearRect(0,0,a,s),m.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(t.full)m.translate(-n.x1*h,-n.y1*h),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(n.x1*h,n.y1*h);else{var y=e.pan(),v={x:y.x*h,y:y.y*h};h*=e.zoom(),m.translate(v.x,v.y),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(-v.x,-v.y)}t.bg&&(m.globalCompositeOperation="destination-over",m.fillStyle=t.bg,m.rect(0,0,a,s),m.fill())}return p};o(Pqe,"b64ToBlob");o(aue,"b64UriToB64");o(Hhe,"output");Sx.png=function(t){return Hhe(t,this.bufferCanvasImage(t),"image/png")};Sx.jpg=function(t){return Hhe(t,this.bufferCanvasImage(t),"image/jpeg")};qhe={};qhe.nodeShapeImpl=function(t,e,r,n,i,a,s,l){switch(t){case"ellipse":return this.drawEllipsePath(e,r,n,i,a);case"polygon":return this.drawPolygonPath(e,r,n,i,a,s);case"round-polygon":return this.drawRoundPolygonPath(e,r,n,i,a,s,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,r,n,i,a,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,r,n,i,a,s,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,r,n,i,a,l);case"barrel":return this.drawBarrelPath(e,r,n,i,a)}};Bqe=Whe,Cr=Whe.prototype;Cr.CANVAS_LAYERS=3;Cr.SELECT_BOX=0;Cr.DRAG=1;Cr.NODE=2;Cr.WEBGL=3;Cr.CANVAS_TYPES=["2d","2d","2d","webgl2"];Cr.BUFFER_COUNT=3;Cr.TEXTURE_BUFFER=0;Cr.MOTIONBLUR_BUFFER_NODE=1;Cr.MOTIONBLUR_BUFFER_DRAG=2;o(Whe,"CanvasRenderer");Cr.redrawHint=function(t,e){var r=this;switch(t){case"eles":r.data.canvasNeedsRedraw[Cr.NODE]=e;break;case"drag":r.data.canvasNeedsRedraw[Cr.DRAG]=e;break;case"select":r.data.canvasNeedsRedraw[Cr.SELECT_BOX]=e;break;case"gc":r.data.gc=!0;break}};Fqe=typeof Path2D<"u";Cr.path2dEnabled=function(t){if(t===void 0)return this.pathsEnabled;this.pathsEnabled=!!t};Cr.usePaths=function(){return Fqe&&this.pathsEnabled};Cr.setImgSmoothing=function(t,e){t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled=e:(t.webkitImageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e)};Cr.getImgSmoothing=function(t){return t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled:t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled};Cr.makeOffscreenCanvas=function(t,e){var r;if((typeof OffscreenCanvas>"u"?"undefined":$i(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(t,e);else{var n=this.cy.window(),i=n.document;r=i.createElement("canvas"),r.width=t,r.height=e}return r};[Ihe,Fc,Hu,NI,Cp,Lf,us,$he,Rf,Sx,qhe].forEach(function(t){ir(Cr,t)});$qe=[{name:"null",impl:bhe},{name:"base",impl:Lhe},{name:"canvas",impl:Bqe}],zqe=[{type:"layout",extensions:hHe},{type:"renderer",extensions:$qe}],Yhe={},Xhe={};o(jhe,"setExtension");o(Khe,"getExtension");o(Gqe,"setModule");o(Vqe,"getModule");lI=o(function(){if(arguments.length===2)return Khe.apply(null,arguments);if(arguments.length===3)return jhe.apply(null,arguments);if(arguments.length===4)return Vqe.apply(null,arguments);if(arguments.length===5)return Gqe.apply(null,arguments);Kn("Invalid extension access syntax")},"extension");fx.prototype.extension=lI;zqe.forEach(function(t){t.extensions.forEach(function(e){jhe(t.type,e.name,e.impl)})});oE=o(function(){if(!(this instanceof oE))return new oE;this.length=0},"Stylesheet"),Ep=oE.prototype;Ep.instanceString=function(){return"stylesheet"};Ep.selector=function(t){var e=this.length++;return this[e]={selector:t,properties:[]},this};Ep.css=function(t,e){var r=this.length-1;if(Jt(t))this[r].properties.push({name:t,value:e});else if(Yr(t))for(var n=t,i=Object.keys(n),a=0;a{"use strict";o((function(e,r){typeof Cx=="object"&&typeof OI=="object"?OI.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Cx=="object"?Cx.layoutBase=r():e.layoutBase=r()}),"webpackUniversalModuleDefinition")(Cx,function(){return(function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=26)})([(function(t,e,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s}),(function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(4);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp&&(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)),this.labelHeight>m&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-m)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-m),this.setHeight(this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h}),(function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(6),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T-1&&k>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(w,1),x.target!=x.source&&x.target.edges.splice(k,1);var S=x.source.owner.getEdges().indexOf(x);if(S==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(S,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),S=T.length,w=0;wv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,S,w,k,A,C=this.nodes,R=C.length,I=0;IT&&(y=T),vw&&(x=w),bT&&(y=T),vw&&(x=w),b=this.nodes.length){var R=0;v.forEach(function(I){I.owner==g&&R++}),R==this.nodes.length&&(this.isConnected=!0)}},t.exports=p}),(function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(5),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=C,!1;if(hf)return l[0]=p,l[1]=h,l[2]=k,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,E=!0):(l[0]=g,l[1]=m,E=!0):_===M&&(u>f?(l[0]=p,l[1]=m,E=!0):(l[0]=x,l[1]=v,E=!0)),-O===M?f>u?(l[2]=A,l[3]=C,D=!0):(l[2]=k,l[3]=w,D=!0):O===M&&(f>u?(l[2]=S,l[3]=w,D=!0):(l[2]=R,l[3]=C,D=!0)),E&&D)return!1;if(u>f?h>d?(P=this.getCardinalDirection(_,M,4),B=this.getCardinalDirection(O,M,2)):(P=this.getCardinalDirection(-_,M,3),B=this.getCardinalDirection(-O,M,1)):h>d?(P=this.getCardinalDirection(-_,M,1),B=this.getCardinalDirection(-O,M,3)):(P=this.getCardinalDirection(_,M,2),B=this.getCardinalDirection(O,M,4)),!E)switch(P){case 1:G=m,F=u+-T/M,l[0]=F,l[1]=G;break;case 2:F=x,G=h+b*M,l[0]=F,l[1]=G;break;case 3:G=v,F=u+T/M,l[0]=F,l[1]=G;break;case 4:F=y,G=h+-b*M,l[0]=F,l[1]=G;break}if(!D)switch(B){case 1:U=w,$=f+-L/M,l[2]=$,l[3]=U;break;case 2:$=R,U=d+I*M,l[2]=$,l[3]=U;break;case 3:U=C,$=f+L/M,l[2]=$,l[3]=U;break;case 4:$=A,U=d+-I*M,l[2]=$,l[3]=U;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,S=void 0,w=void 0,k=void 0,A=void 0,C=void 0,R=void 0;return T=p-f,w=h-d,A=d*f-h*p,S=v-g,k=m-y,C=y*g-m*v,R=T*k-S*w,R===0?null:(x=(w*C-k*A)/R,b=(S*A-T*C)/R,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n}),(function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n}),(function(t,e,r){"use strict";var n=(function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i}),(function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(T.push(w[0]);T.length>0&&g;){var k=T[0];T.splice(0,1),b.add(k);for(var A=k.getEdges(),x=0;x-1&&w.splice(L,1)}b=new Set,S=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(C,1);var R=S.getNeighborsList();R.forEach(function(E){if(y.indexOf(E)<0){var D=v.get(E),_=D-1;_==1&&k.push(E),v.set(E,_)}})}y=y.concat(k),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p}),(function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n}),(function(t,e,r){"use strict";var n=r(4);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i}),(function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mT||b>T)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||T>=x[0].length)){for(var S=0;Sh},"_defaultCompareFunction")}]),l})();t.exports=s}),(function(t,e,r){"use strict";var n=(function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o((function(e,r){typeof Ax=="object"&&typeof BI=="object"?BI.exports=r(PI()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof Ax=="object"?Ax.coseBase=r(PI()):e.coseBase=r(e.layoutBase)}),"webpackUniversalModuleDefinition")(Ax,function(t){return(function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=7)})([(function(e,r){e.exports=t}),(function(e,r,n){"use strict";var i=n(0).FDLayoutConstants;function a(){}o(a,"CoSEConstants");for(var s in i)a[s]=i[s];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TREE_REDUCTION_ON_INCREMENTAL=!1,e.exports=a}),(function(e,r,n){"use strict";var i=n(0).FDLayoutEdge;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEEdge"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a}),(function(e,r,n){"use strict";var i=n(0).LGraph;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEGraph"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a}),(function(e,r,n){"use strict";var i=n(0).LGraphManager;function a(l){i.call(this,l)}o(a,"CoSEGraphManager"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a}),(function(e,r,n){"use strict";var i=n(0).FDLayoutNode,a=n(0).IMath;function s(u,h,f,d){i.call(this,u,h,f,d)}o(s,"CoSENode"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},s.prototype.propogateDisplacementToChildren=function(u,h){for(var f=this.getChild().getNodes(),d,p=0;p0)this.positionNodesRadially(w);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var k=new Set(this.getAllNodes()),A=this.nodesWithGravity.filter(function(C){return k.has(C)});this.graphManager.setAllNodesToApplyGravitation(A),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},T.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%f.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var w=new Set(this.getAllNodes()),k=this.nodesWithGravity.filter(function(R){return w.has(R)});this.graphManager.setAllNodesToApplyGravitation(k),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var A=!this.isTreeGrowing&&!this.isGrowthFinished,C=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(A,C),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var w=this.graphManager.getAllNodes(),k={},A=0;A1){var E;for(E=0;EC&&(C=Math.floor(L.y)),I=Math.floor(L.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new m(d.WORLD_CENTER_X-L.x/2,d.WORLD_CENTER_Y-L.y/2))},T.radialLayout=function(w,k,A){var C=Math.max(this.maxDiagonalInTree(w),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(k,null,0,359,0,C);var R=x.calculateBounds(w),I=new b;I.setDeviceOrgX(R.getMinX()),I.setDeviceOrgY(R.getMinY()),I.setWorldOrgX(A.x),I.setWorldOrgY(A.y);for(var L=0;L1;){var j=U[0];U.splice(0,1);var te=P.indexOf(j);te>=0&&P.splice(te,1),G--,B--}k!=null?$=(P.indexOf(U[0])+1)%G:$=0;for(var Y=Math.abs(C-A)/B,oe=$;F!=B;oe=++oe%G){var J=P[oe].getOtherEnd(w);if(J!=k){var ue=(A+F*Y)%360,re=(ue+Y)%360;T.branchRadialLayout(J,w,ue,re,R+I,I),F++}}},T.maxDiagonalInTree=function(w){for(var k=y.MIN_VALUE,A=0;Ak&&(k=R)}return k},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var w=this,k={};this.memberGroups={},this.idToDummyNode={};for(var A=[],C=this.graphManager.getAllNodes(),R=0;R"u"&&(k[E]=[]),k[E]=k[E].concat(I)}Object.keys(k).forEach(function(D){if(k[D].length>1){var _="DummyCompound_"+D;w.memberGroups[_]=k[D];var O=k[D][0].getParent(),M=new l(w.graphManager);M.id=_,M.paddingLeft=O.paddingLeft||0,M.paddingRight=O.paddingRight||0,M.paddingBottom=O.paddingBottom||0,M.paddingTop=O.paddingTop||0,w.idToDummyNode[_]=M;var P=w.getGraphManager().add(w.newGraph(),M),B=O.getChild();B.add(M);for(var F=0;F=0;w--){var k=this.compoundOrder[w],A=k.id,C=k.paddingLeft,R=k.paddingTop;this.adjustLocations(this.tiledMemberPack[A],k.rect.x,k.rect.y,C,R)}},T.prototype.repopulateZeroDegreeMembers=function(){var w=this,k=this.tiledZeroDegreePack;Object.keys(k).forEach(function(A){var C=w.idToDummyNode[A],R=C.paddingLeft,I=C.paddingTop;w.adjustLocations(k[A],C.rect.x,C.rect.y,R,I)})},T.prototype.getToBeTiled=function(w){var k=w.id;if(this.toBeTiled[k]!=null)return this.toBeTiled[k];var A=w.getChild();if(A==null)return this.toBeTiled[k]=!1,!1;for(var C=A.getNodes(),R=0;R0)return this.toBeTiled[k]=!1,!1;if(I.getChild()==null){this.toBeTiled[I.id]=!1;continue}if(!this.getToBeTiled(I))return this.toBeTiled[k]=!1,!1}return this.toBeTiled[k]=!0,!0},T.prototype.getNodeDegree=function(w){for(var k=w.id,A=w.getEdges(),C=0,R=0;RD&&(D=O.rect.height)}A+=D+w.verticalPadding}},T.prototype.tileCompoundMembers=function(w,k){var A=this;this.tiledMemberPack=[],Object.keys(w).forEach(function(C){var R=k[C];A.tiledMemberPack[C]=A.tileNodes(w[C],R.paddingLeft+R.paddingRight),R.rect.width=A.tiledMemberPack[C].width,R.rect.height=A.tiledMemberPack[C].height})},T.prototype.tileNodes=function(w,k){var A=h.TILING_PADDING_VERTICAL,C=h.TILING_PADDING_HORIZONTAL,R={rows:[],rowWidth:[],rowHeight:[],width:0,height:k,verticalPadding:A,horizontalPadding:C};w.sort(function(E,D){return E.rect.width*E.rect.height>D.rect.width*D.rect.height?-1:E.rect.width*E.rect.height0&&(L+=w.horizontalPadding),w.rowWidth[A]=L,w.width0&&(E+=w.verticalPadding);var D=0;E>w.rowHeight[A]&&(D=w.rowHeight[A],w.rowHeight[A]=E,D=w.rowHeight[A]-D),w.height+=D,w.rows[A].push(k)},T.prototype.getShortestRowIndex=function(w){for(var k=-1,A=Number.MAX_VALUE,C=0;CA&&(k=C,A=w.rowWidth[C]);return k},T.prototype.canAddHorizontal=function(w,k,A){var C=this.getShortestRowIndex(w);if(C<0)return!0;var R=w.rowWidth[C];if(R+w.horizontalPadding+k<=w.width)return!0;var I=0;w.rowHeight[C]0&&(I=A+w.verticalPadding-w.rowHeight[C]);var L;w.width-R>=k+w.horizontalPadding?L=(w.height+I)/(R+k+w.horizontalPadding):L=(w.height+I)/w.width,I=A+w.verticalPadding;var E;return w.widthI&&k!=A){C.splice(-1,1),w.rows[A].push(R),w.rowWidth[k]=w.rowWidth[k]-I,w.rowWidth[A]=w.rowWidth[A]+I,w.width=w.rowWidth[instance.getLongestRowIndex(w)];for(var L=Number.MIN_VALUE,E=0;EL&&(L=C[E].height);k>0&&(L+=w.verticalPadding);var D=w.rowHeight[k]+w.rowHeight[A];w.rowHeight[k]=L,w.rowHeight[A]0)for(var B=R;B<=I;B++)P[0]+=this.grid[B][L-1].length+this.grid[B][L].length-1;if(I0)for(var B=L;B<=E;B++)P[3]+=this.grid[R-1][B].length+this.grid[R][B].length-1;for(var F=y.MAX_VALUE,G,$,U=0;U{"use strict";o((function(e,r){typeof _x=="object"&&typeof $I=="object"?$I.exports=r(FI()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof _x=="object"?_x.cytoscapeCoseBilkent=r(FI()):e.cytoscapeCoseBilkent=r(e.coseBase)}),"webpackUniversalModuleDefinition")(_x,function(t){return(function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=1)})([(function(e,r){e.exports=t}),(function(e,r,n){"use strict";var i=n(0).layoutBase.LayoutConstants,a=n(0).layoutBase.FDLayoutConstants,s=n(0).CoSEConstants,l=n(0).CoSELayout,u=n(0).CoSENode,h=n(0).layoutBase.PointD,f=n(0).layoutBase.DimensionD,d={ready:o(function(){},"ready"),stop:o(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function p(v,x){var b={};for(var T in v)b[T]=v[T];for(var T in x)b[T]=x[T];return b}o(p,"extend");function m(v){this.options=p(d,v),g(this.options)}o(m,"_CoSELayout");var g=o(function(x){x.nodeRepulsion!=null&&(s.DEFAULT_REPULSION_STRENGTH=a.DEFAULT_REPULSION_STRENGTH=x.nodeRepulsion),x.idealEdgeLength!=null&&(s.DEFAULT_EDGE_LENGTH=a.DEFAULT_EDGE_LENGTH=x.idealEdgeLength),x.edgeElasticity!=null&&(s.DEFAULT_SPRING_STRENGTH=a.DEFAULT_SPRING_STRENGTH=x.edgeElasticity),x.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=x.nestingFactor),x.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=a.DEFAULT_GRAVITY_STRENGTH=x.gravity),x.numIter!=null&&(s.MAX_ITERATIONS=a.MAX_ITERATIONS=x.numIter),x.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=a.DEFAULT_GRAVITY_RANGE_FACTOR=x.gravityRange),x.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=x.gravityCompound),x.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=x.gravityRangeCompound),x.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=a.DEFAULT_COOLING_FACTOR_INCREMENTAL=x.initialEnergyOnIncremental),x.quality=="draft"?i.QUALITY=0:x.quality=="proof"?i.QUALITY=2:i.QUALITY=1,s.NODE_DIMENSIONS_INCLUDE_LABELS=a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=x.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=!x.randomize,s.ANIMATE=a.ANIMATE=i.ANIMATE=x.animate,s.TILE=x.tile,s.TILING_PADDING_VERTICAL=typeof x.tilingPaddingVertical=="function"?x.tilingPaddingVertical.call():x.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof x.tilingPaddingHorizontal=="function"?x.tilingPaddingHorizontal.call():x.tilingPaddingHorizontal},"getUserOptions");m.prototype.run=function(){var v,x,b=this.options,T=this.idToLNode={},S=this.layout=new l,w=this;w.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var k=S.newGraphManager();this.gm=k;var A=this.options.eles.nodes(),C=this.options.eles.edges();this.root=k.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(A),S);for(var R=0;R0){var E;E=b.getGraphManager().add(b.newGraph(),A),this.processChildrenList(E,k,b)}}},m.prototype.stop=function(){return this.stopped=!0,this};var y=o(function(x){x("layout","cose-bilkent",m)},"register");typeof cytoscape<"u"&&y(cytoscape),e.exports=y})])})});function Hqe(t,e){t.forEach(r=>{let n={id:r.id,labelText:r.label,height:r.height,width:r.width,padding:r.padding??0};Object.keys(r).forEach(i=>{["id","label","height","width","padding","x","y"].includes(i)||(n[i]=r[i])}),e.add({group:"nodes",data:n,position:{x:r.x??0,y:r.y??0}})})}function qqe(t,e){t.forEach(r=>{let n={id:r.id,source:r.start,target:r.end};Object.keys(r).forEach(i=>{["id","start","end"].includes(i)||(n[i]=r[i])}),e.add({group:"edges",data:n})})}function Jhe(t){return new Promise(e=>{let r=qe("body").append("div").attr("id","cy").attr("style","display:none"),n=Ko({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});r.remove(),Hqe(t.nodes,n),qqe(t.edges,n),n.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}});let i={name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1};n.layout(i).run(),n.ready(a=>{X.info("Cytoscape ready",a),e(n)})})}function efe(t){return t.nodes().map(e=>{let r=e.data(),n=e.position(),i={id:r.id,x:n.x,y:n.y};return Object.keys(r).forEach(a=>{a!=="id"&&(i[a]=r[a])}),i})}function tfe(t){return t.edges().map(e=>{let r=e.data(),n=e._private.rscratch,i={id:r.id,source:r.source,target:r.target,startX:n.startX,startY:n.startY,midX:n.midX,midY:n.midY,endX:n.endX,endY:n.endY};return Object.keys(r).forEach(a=>{["id","source","target"].includes(a)||(i[a]=r[a])}),i})}var Zhe,rfe=N(()=>{"use strict";II();Zhe=ja(Qhe(),1);yr();pt();Ko.use(Zhe.default);o(Hqe,"addNodes");o(qqe,"addEdges");o(Jhe,"createCytoscapeInstance");o(efe,"extractPositionedNodes");o(tfe,"extractPositionedEdges")});async function nfe(t,e){X.debug("Starting cose-bilkent layout algorithm");try{Wqe(t);let r=await Jhe(t),n=efe(r),i=tfe(r);return X.debug(`Layout completed: ${n.length} nodes, ${i.length} edges`),{nodes:n,edges:i}}catch(r){throw X.error("Error in cose-bilkent layout algorithm:",r),r}}function Wqe(t){if(!t)throw new Error("Layout data is required");if(!t.config)throw new Error("Configuration is required in layout data");if(!t.rootNode)throw new Error("Root node is required");if(!t.nodes||!Array.isArray(t.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(t.edges))throw new Error("Edges array is required in layout data");return!0}var ife=N(()=>{"use strict";pt();rfe();o(nfe,"executeCoseBilkentLayout");o(Wqe,"validateLayoutData")});var afe,sfe=N(()=>{"use strict";ife();afe=o(async(t,e,{insertCluster:r,insertEdge:n,insertEdgeLabel:i,insertMarkers:a,insertNode:s,log:l,positionEdgeLabel:u},{algorithm:h})=>{let f={},d={},p=e.select("g");a(p,t.markers,t.type,t.diagramId);let m=p.insert("g").attr("class","subgraphs"),g=p.insert("g").attr("class","edgePaths"),y=p.insert("g").attr("class","edgeLabels"),v=p.insert("g").attr("class","nodes");l.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(t.nodes.map(async T=>{if(T.isGroup){let S={...T};d[T.id]=S,f[T.id]=S,await r(m,T)}else{let S={...T};f[T.id]=S;let w=await s(v,T,{config:t.config,dir:t.direction||"TB"}),k=w.node().getBBox();S.width=k.width,S.height=k.height,S.domId=w,l.debug(`Node ${T.id} dimensions: ${k.width}x${k.height}`)}})),l.debug("Running cose-bilkent layout algorithm");let x={...t,nodes:t.nodes.map(T=>{let S=f[T.id];return{...T,width:S.width,height:S.height}})},b=await nfe(x,t.config);l.debug("Positioning nodes based on layout results"),b.nodes.forEach(T=>{let S=f[T.id];S?.domId&&(S.domId.attr("transform",`translate(${T.x}, ${T.y})`),S.x=T.x,S.y=T.y,l.debug(`Positioned node ${S.id} at center (${T.x}, ${T.y})`))}),b.edges.forEach(T=>{let S=t.edges.find(w=>w.id===T.id);S&&(S.points=[{x:T.startX,y:T.startY},{x:T.midX,y:T.midY},{x:T.endX,y:T.endY}])}),l.debug("Inserting and positioning edges"),await Promise.all(t.edges.map(async T=>{let S=await i(y,T),w=f[T.start??""],k=f[T.end??""];if(w&&k){let A=b.edges.find(C=>C.id===T.id);if(A){l.debug("APA01 positionedEdge",A);let C={...T},R=n(g,C,d,t.type,w,k,t.diagramId);u(C,R)}else{let C={...T,points:[{x:w.x||0,y:w.y||0},{x:k.x||0,y:k.y||0}]},R=n(g,C,d,t.type,w,k,t.diagramId);u(C,R)}}})),l.debug("Cose-bilkent rendering completed")},"render")});var ofe={};dr(ofe,{render:()=>Yqe});var Yqe,lfe=N(()=>{"use strict";sfe();Yqe=afe});var Dx,zI,Xqe,Qo,$c,Nf=N(()=>{"use strict";Qte();pt();Dx={},zI=o(t=>{for(let e of t)Dx[e.name]=e},"registerLayoutLoaders"),Xqe=o(()=>{zI([{name:"dagre",loader:o(async()=>await Promise.resolve().then(()=>(Roe(),Loe)),"loader")},{name:"cose-bilkent",loader:o(async()=>await Promise.resolve().then(()=>(lfe(),ofe)),"loader")}])},"registerDefaultLayoutLoaders");Xqe();Qo=o(async(t,e)=>{if(!(t.layoutAlgorithm in Dx))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);let r=Dx[t.layoutAlgorithm];return(await r.loader()).render(t,e,Kte,{algorithm:r.algorithm})},"render"),$c=o((t="",{fallback:e="dagre"}={})=>{if(t in Dx)return t;if(e in Dx)return X.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm")});var Ws,jqe,Kqe,Mf=N(()=>{"use strict";Ei();pt();Ws=o((t,e,r,n)=>{t.attr("class",r);let{width:i,height:a,x:s,y:l}=jqe(t,e);mn(t,a,i,n);let u=Kqe(s,l,i,a,e);t.attr("viewBox",u),X.debug(`viewBox configured: ${u} with padding: ${e}`)},"setupViewPortForSVG"),jqe=o((t,e)=>{let r=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+e*2,height:r.height+e*2,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),Kqe=o((t,e,r,n,i)=>`${t-i} ${e-i} ${r} ${n}`,"createViewBox")});var Qqe,Zqe,cfe,ufe=N(()=>{"use strict";yr();Xt();pt();ep();Nf();Mf();tr();Qqe=o(function(t,e){return e.db.getClasses()},"getClasses"),Zqe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing state diagram (v2)",e);let{securityLevel:i,flowchart:a,layout:s}=ge(),l;i==="sandbox"&&(l=qe("#i"+e));let u=i==="sandbox"?l.nodes()[0].contentDocument:document;X.debug("Before getData: ");let h=n.db.getData();X.debug("Data: ",h);let f=Vo(e,i),d=n.db.getDirection();h.type=n.type,h.layoutAlgorithm=$c(s),h.layoutAlgorithm==="dagre"&&s==="elk"&&X.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),h.direction=d,h.nodeSpacing=a?.nodeSpacing||50,h.rankSpacing=a?.rankSpacing||50,h.markers=["point","circle","cross"],h.diagramId=e,X.debug("REF1:",h),await Qo(h,f);let p=h.config.flowchart?.diagramPadding??8;qt.insertTitle(f,"flowchartTitleText",a?.titleTopMargin||0,n.db.getDiagramTitle()),Ws(f,p,"flowchart",a?.useMaxWidth||!1);for(let m of h.nodes){let g=qe(`#${e} [id="${m.id}"]`);if(!g||!m.link)continue;let y=u.createElementNS("http://www.w3.org/2000/svg","a");y.setAttributeNS("http://www.w3.org/2000/svg","class",m.cssClasses),y.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),i==="sandbox"?y.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):m.linkTarget&&y.setAttributeNS("http://www.w3.org/2000/svg","target",m.linkTarget);let v=g.insert(function(){return y},":first-child"),x=g.select(".label-container");x&&v.append(function(){return x.node()});let b=g.select(".label");b&&v.append(function(){return b.node()})}},"draw"),cfe={getClasses:Qqe,draw:Zqe}});var GI,VI,hfe=N(()=>{"use strict";GI=(function(){var t=o(function(fr,it,kt,jt){for(kt=kt||{},jt=fr.length;jt--;kt[fr[jt]]=it);return kt},"o"),e=[1,4],r=[1,3],n=[1,5],i=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],a=[2,2],s=[1,13],l=[1,14],u=[1,15],h=[1,16],f=[1,23],d=[1,25],p=[1,26],m=[1,27],g=[1,49],y=[1,48],v=[1,29],x=[1,30],b=[1,31],T=[1,32],S=[1,33],w=[1,44],k=[1,46],A=[1,42],C=[1,47],R=[1,43],I=[1,50],L=[1,45],E=[1,51],D=[1,52],_=[1,34],O=[1,35],M=[1,36],P=[1,37],B=[1,57],F=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],G=[1,61],$=[1,60],U=[1,62],j=[8,9,11,75,77,78],te=[1,78],Y=[1,91],oe=[1,96],J=[1,95],ue=[1,92],re=[1,88],ee=[1,94],Z=[1,90],K=[1,97],ae=[1,93],Q=[1,98],de=[1,89],ne=[8,9,10,11,40,75,77,78],Te=[8,9,10,11,40,46,75,77,78],q=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],Ve=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],pe=[44,60,89,102,105,106,109,111,114,115,116],Be=[1,121],Ye=[1,122],He=[1,124],Le=[1,123],Ie=[44,60,62,74,89,102,105,106,109,111,114,115,116],Ne=[1,133],Ce=[1,147],Fe=[1,148],fe=[1,149],xe=[1,150],W=[1,135],he=[1,137],z=[1,141],se=[1,142],le=[1,143],ke=[1,144],ve=[1,145],ye=[1,146],Re=[1,151],_e=[1,152],ze=[1,131],Ke=[1,132],xt=[1,139],We=[1,134],Oe=[1,138],et=[1,136],Ue=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],lt=[1,154],Gt=[1,156],vt=[8,9,11],Lt=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],dt=[1,176],nt=[1,172],bt=[1,173],wt=[1,177],yt=[1,174],ft=[1,175],Ur=[77,116,119],_t=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],bn=[10,106],Br=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],cr=[1,247],ar=[1,245],_r=[1,249],Ct=[1,243],Se=[1,244],at=[1,246],Nt=[1,248],wr=[1,250],Tn=[1,268],yn=[8,9,11,106],sn=[8,9,10,11,60,84,105,106,109,110,111,112],Hi={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1]],performAction:o(function(it,kt,jt,ht,Dr,me,Yl){var be=me.length-1;switch(Dr){case 2:this.$=[];break;case 3:(!Array.isArray(me[be])||me[be].length>0)&&me[be-1].push(me[be]),this.$=me[be-1];break;case 4:case 183:this.$=me[be];break;case 11:ht.setDirection("TB"),this.$="TB";break;case 12:ht.setDirection(me[be-1]),this.$=me[be-1];break;case 27:this.$=me[be-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=ht.addSubGraph(me[be-6],me[be-1],me[be-4]);break;case 34:this.$=ht.addSubGraph(me[be-3],me[be-1],me[be-3]);break;case 35:this.$=ht.addSubGraph(void 0,me[be-1],void 0);break;case 37:this.$=me[be].trim(),ht.setAccTitle(this.$);break;case 38:case 39:this.$=me[be].trim(),ht.setAccDescription(this.$);break;case 43:this.$=me[be-1]+me[be];break;case 44:this.$=me[be];break;case 45:ht.addVertex(me[be-1][me[be-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,me[be]),ht.addLink(me[be-3].stmt,me[be-1],me[be-2]),this.$={stmt:me[be-1],nodes:me[be-1].concat(me[be-3].nodes)};break;case 46:ht.addLink(me[be-2].stmt,me[be],me[be-1]),this.$={stmt:me[be],nodes:me[be].concat(me[be-2].nodes)};break;case 47:ht.addLink(me[be-3].stmt,me[be-1],me[be-2]),this.$={stmt:me[be-1],nodes:me[be-1].concat(me[be-3].nodes)};break;case 48:this.$={stmt:me[be-1],nodes:me[be-1]};break;case 49:ht.addVertex(me[be-1][me[be-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,me[be]),this.$={stmt:me[be-1],nodes:me[be-1],shapeData:me[be]};break;case 50:this.$={stmt:me[be],nodes:me[be]};break;case 51:this.$=[me[be]];break;case 52:ht.addVertex(me[be-5][me[be-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,me[be-4]),this.$=me[be-5].concat(me[be]);break;case 53:this.$=me[be-4].concat(me[be]);break;case 54:this.$=me[be];break;case 55:this.$=me[be-2],ht.setClass(me[be-2],me[be]);break;case 56:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"square");break;case 57:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"doublecircle");break;case 58:this.$=me[be-5],ht.addVertex(me[be-5],me[be-2],"circle");break;case 59:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"ellipse");break;case 60:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"stadium");break;case 61:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"subroutine");break;case 62:this.$=me[be-7],ht.addVertex(me[be-7],me[be-1],"rect",void 0,void 0,void 0,Object.fromEntries([[me[be-5],me[be-3]]]));break;case 63:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"cylinder");break;case 64:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"round");break;case 65:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"diamond");break;case 66:this.$=me[be-5],ht.addVertex(me[be-5],me[be-2],"hexagon");break;case 67:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"odd");break;case 68:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"trapezoid");break;case 69:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"inv_trapezoid");break;case 70:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"lean_right");break;case 71:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"lean_left");break;case 72:this.$=me[be],ht.addVertex(me[be]);break;case 73:me[be-1].text=me[be],this.$=me[be-1];break;case 74:case 75:me[be-2].text=me[be-1],this.$=me[be-2];break;case 76:this.$=me[be];break;case 77:var jr=ht.destructLink(me[be],me[be-2]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length,text:me[be-1]};break;case 78:var jr=ht.destructLink(me[be],me[be-2]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length,text:me[be-1],id:me[be-3]};break;case 79:this.$={text:me[be],type:"text"};break;case 80:this.$={text:me[be-1].text+""+me[be],type:me[be-1].type};break;case 81:this.$={text:me[be],type:"string"};break;case 82:this.$={text:me[be],type:"markdown"};break;case 83:var jr=ht.destructLink(me[be]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length};break;case 84:var jr=ht.destructLink(me[be]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length,id:me[be-1]};break;case 85:this.$=me[be-1];break;case 86:this.$={text:me[be],type:"text"};break;case 87:this.$={text:me[be-1].text+""+me[be],type:me[be-1].type};break;case 88:this.$={text:me[be],type:"string"};break;case 89:case 104:this.$={text:me[be],type:"markdown"};break;case 101:this.$={text:me[be],type:"text"};break;case 102:this.$={text:me[be-1].text+""+me[be],type:me[be-1].type};break;case 103:this.$={text:me[be],type:"text"};break;case 105:this.$=me[be-4],ht.addClass(me[be-2],me[be]);break;case 106:this.$=me[be-4],ht.setClass(me[be-2],me[be]);break;case 107:case 115:this.$=me[be-1],ht.setClickEvent(me[be-1],me[be]);break;case 108:case 116:this.$=me[be-3],ht.setClickEvent(me[be-3],me[be-2]),ht.setTooltip(me[be-3],me[be]);break;case 109:this.$=me[be-2],ht.setClickEvent(me[be-2],me[be-1],me[be]);break;case 110:this.$=me[be-4],ht.setClickEvent(me[be-4],me[be-3],me[be-2]),ht.setTooltip(me[be-4],me[be]);break;case 111:this.$=me[be-2],ht.setLink(me[be-2],me[be]);break;case 112:this.$=me[be-4],ht.setLink(me[be-4],me[be-2]),ht.setTooltip(me[be-4],me[be]);break;case 113:this.$=me[be-4],ht.setLink(me[be-4],me[be-2],me[be]);break;case 114:this.$=me[be-6],ht.setLink(me[be-6],me[be-4],me[be]),ht.setTooltip(me[be-6],me[be-2]);break;case 117:this.$=me[be-1],ht.setLink(me[be-1],me[be]);break;case 118:this.$=me[be-3],ht.setLink(me[be-3],me[be-2]),ht.setTooltip(me[be-3],me[be]);break;case 119:this.$=me[be-3],ht.setLink(me[be-3],me[be-2],me[be]);break;case 120:this.$=me[be-5],ht.setLink(me[be-5],me[be-4],me[be]),ht.setTooltip(me[be-5],me[be-2]);break;case 121:this.$=me[be-4],ht.addVertex(me[be-2],void 0,void 0,me[be]);break;case 122:this.$=me[be-4],ht.updateLink([me[be-2]],me[be]);break;case 123:this.$=me[be-4],ht.updateLink(me[be-2],me[be]);break;case 124:this.$=me[be-8],ht.updateLinkInterpolate([me[be-6]],me[be-2]),ht.updateLink([me[be-6]],me[be]);break;case 125:this.$=me[be-8],ht.updateLinkInterpolate(me[be-6],me[be-2]),ht.updateLink(me[be-6],me[be]);break;case 126:this.$=me[be-6],ht.updateLinkInterpolate([me[be-4]],me[be]);break;case 127:this.$=me[be-6],ht.updateLinkInterpolate(me[be-4],me[be]);break;case 128:case 130:this.$=[me[be]];break;case 129:case 131:me[be-2].push(me[be]),this.$=me[be-2];break;case 133:this.$=me[be-1]+me[be];break;case 181:this.$=me[be];break;case 182:this.$=me[be-1]+""+me[be];break;case 184:this.$=me[be-1]+""+me[be];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break}},"anonymous"),table:[{3:1,4:2,9:e,10:r,12:n},{1:[3]},t(i,a,{5:6}),{4:7,9:e,10:r,12:n},{4:8,9:e,10:r,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},t(i,[2,9]),t(i,[2,10]),t(i,[2,11]),{8:[1,54],9:[1,55],10:B,15:53,18:56},t(F,[2,3]),t(F,[2,4]),t(F,[2,5]),t(F,[2,6]),t(F,[2,7]),t(F,[2,8]),{8:G,9:$,11:U,21:58,41:59,72:63,75:[1,64],77:[1,66],78:[1,65]},{8:G,9:$,11:U,21:67},{8:G,9:$,11:U,21:68},{8:G,9:$,11:U,21:69},{8:G,9:$,11:U,21:70},{8:G,9:$,11:U,21:71},{8:G,9:$,10:[1,72],11:U,21:73},t(F,[2,36]),{35:[1,74]},{37:[1,75]},t(F,[2,39]),t(j,[2,50],{18:76,39:77,10:B,40:te}),{10:[1,79]},{10:[1,80]},{10:[1,81]},{10:[1,82]},{14:Y,44:oe,60:J,80:[1,86],89:ue,95:[1,83],97:[1,84],101:85,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de,120:87},t(F,[2,185]),t(F,[2,186]),t(F,[2,187]),t(F,[2,188]),t(ne,[2,51]),t(ne,[2,54],{46:[1,99]}),t(Te,[2,72],{113:112,29:[1,100],44:g,48:[1,101],50:[1,102],52:[1,103],54:[1,104],56:[1,105],58:[1,106],60:y,63:[1,107],65:[1,108],67:[1,109],68:[1,110],70:[1,111],89:w,102:k,105:A,106:C,109:R,111:I,114:L,115:E,116:D}),t(q,[2,181]),t(q,[2,142]),t(q,[2,143]),t(q,[2,144]),t(q,[2,145]),t(q,[2,146]),t(q,[2,147]),t(q,[2,148]),t(q,[2,149]),t(q,[2,150]),t(q,[2,151]),t(q,[2,152]),t(i,[2,12]),t(i,[2,18]),t(i,[2,19]),{9:[1,113]},t(Ve,[2,26],{18:114,10:B}),t(F,[2,27]),{42:115,43:38,44:g,45:39,47:40,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(F,[2,40]),t(F,[2,41]),t(F,[2,42]),t(pe,[2,76],{73:116,62:[1,118],74:[1,117]}),{76:119,79:120,80:Be,81:Ye,116:He,119:Le},{75:[1,125],77:[1,126]},t(Ie,[2,83]),t(F,[2,28]),t(F,[2,29]),t(F,[2,30]),t(F,[2,31]),t(F,[2,32]),{10:Ne,12:Ce,14:Fe,27:fe,28:127,32:xe,44:W,60:he,75:z,80:[1,129],81:[1,130],83:140,84:se,85:le,86:ke,87:ve,88:ye,89:Re,90:_e,91:128,105:ze,109:Ke,111:xt,114:We,115:Oe,116:et},t(Ue,a,{5:153}),t(F,[2,37]),t(F,[2,38]),t(j,[2,48],{44:lt}),t(j,[2,49],{18:155,10:B,40:Gt}),t(ne,[2,44]),{44:g,47:157,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{102:[1,158],103:159,105:[1,160]},{44:g,47:161,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{44:g,47:162,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(vt,[2,107],{10:[1,163],96:[1,164]}),{80:[1,165]},t(vt,[2,115],{120:167,10:[1,166],14:Y,44:oe,60:J,89:ue,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de}),t(vt,[2,117],{10:[1,168]}),t(Lt,[2,183]),t(Lt,[2,170]),t(Lt,[2,171]),t(Lt,[2,172]),t(Lt,[2,173]),t(Lt,[2,174]),t(Lt,[2,175]),t(Lt,[2,176]),t(Lt,[2,177]),t(Lt,[2,178]),t(Lt,[2,179]),t(Lt,[2,180]),{44:g,47:169,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{30:170,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:178,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:180,50:[1,179],67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:181,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:182,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:183,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{109:[1,184]},{30:185,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:186,65:[1,187],67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:188,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:189,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:190,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},t(q,[2,182]),t(i,[2,20]),t(Ve,[2,25]),t(j,[2,46],{39:191,18:192,10:B,40:te}),t(pe,[2,73],{10:[1,193]}),{10:[1,194]},{30:195,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{77:[1,196],79:197,116:He,119:Le},t(Ur,[2,79]),t(Ur,[2,81]),t(Ur,[2,82]),t(Ur,[2,168]),t(Ur,[2,169]),{76:198,79:120,80:Be,81:Ye,116:He,119:Le},t(Ie,[2,84]),{8:G,9:$,10:Ne,11:U,12:Ce,14:Fe,21:200,27:fe,29:[1,199],32:xe,44:W,60:he,75:z,83:140,84:se,85:le,86:ke,87:ve,88:ye,89:Re,90:_e,91:201,105:ze,109:Ke,111:xt,114:We,115:Oe,116:et},t(_t,[2,101]),t(_t,[2,103]),t(_t,[2,104]),t(_t,[2,157]),t(_t,[2,158]),t(_t,[2,159]),t(_t,[2,160]),t(_t,[2,161]),t(_t,[2,162]),t(_t,[2,163]),t(_t,[2,164]),t(_t,[2,165]),t(_t,[2,166]),t(_t,[2,167]),t(_t,[2,90]),t(_t,[2,91]),t(_t,[2,92]),t(_t,[2,93]),t(_t,[2,94]),t(_t,[2,95]),t(_t,[2,96]),t(_t,[2,97]),t(_t,[2,98]),t(_t,[2,99]),t(_t,[2,100]),{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,202],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},{10:B,18:203},{44:[1,204]},t(ne,[2,43]),{10:[1,205],44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:112,114:L,115:E,116:D},{10:[1,206]},{10:[1,207],106:[1,208]},t(bn,[2,128]),{10:[1,209],44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:112,114:L,115:E,116:D},{10:[1,210],44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:112,114:L,115:E,116:D},{80:[1,211]},t(vt,[2,109],{10:[1,212]}),t(vt,[2,111],{10:[1,213]}),{80:[1,214]},t(Lt,[2,184]),{80:[1,215],98:[1,216]},t(ne,[2,55],{113:112,44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,114:L,115:E,116:D}),{31:[1,217],67:dt,82:218,116:wt,117:yt,118:ft},t(Br,[2,86]),t(Br,[2,88]),t(Br,[2,89]),t(Br,[2,153]),t(Br,[2,154]),t(Br,[2,155]),t(Br,[2,156]),{49:[1,219],67:dt,82:218,116:wt,117:yt,118:ft},{30:220,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{51:[1,221],67:dt,82:218,116:wt,117:yt,118:ft},{53:[1,222],67:dt,82:218,116:wt,117:yt,118:ft},{55:[1,223],67:dt,82:218,116:wt,117:yt,118:ft},{57:[1,224],67:dt,82:218,116:wt,117:yt,118:ft},{60:[1,225]},{64:[1,226],67:dt,82:218,116:wt,117:yt,118:ft},{66:[1,227],67:dt,82:218,116:wt,117:yt,118:ft},{30:228,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{31:[1,229],67:dt,82:218,116:wt,117:yt,118:ft},{67:dt,69:[1,230],71:[1,231],82:218,116:wt,117:yt,118:ft},{67:dt,69:[1,233],71:[1,232],82:218,116:wt,117:yt,118:ft},t(j,[2,45],{18:155,10:B,40:Gt}),t(j,[2,47],{44:lt}),t(pe,[2,75]),t(pe,[2,74]),{62:[1,234],67:dt,82:218,116:wt,117:yt,118:ft},t(pe,[2,77]),t(Ur,[2,80]),{77:[1,235],79:197,116:He,119:Le},{30:236,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},t(Ue,a,{5:237}),t(_t,[2,102]),t(F,[2,35]),{43:238,44:g,45:39,47:40,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{10:B,18:239},{10:cr,60:ar,84:_r,92:240,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{10:cr,60:ar,84:_r,92:251,104:[1,252],105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{10:cr,60:ar,84:_r,92:253,104:[1,254],105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{105:[1,255]},{10:cr,60:ar,84:_r,92:256,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{44:g,47:257,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(vt,[2,108]),{80:[1,258]},{80:[1,259],98:[1,260]},t(vt,[2,116]),t(vt,[2,118],{10:[1,261]}),t(vt,[2,119]),t(Te,[2,56]),t(Br,[2,87]),t(Te,[2,57]),{51:[1,262],67:dt,82:218,116:wt,117:yt,118:ft},t(Te,[2,64]),t(Te,[2,59]),t(Te,[2,60]),t(Te,[2,61]),{109:[1,263]},t(Te,[2,63]),t(Te,[2,65]),{66:[1,264],67:dt,82:218,116:wt,117:yt,118:ft},t(Te,[2,67]),t(Te,[2,68]),t(Te,[2,70]),t(Te,[2,69]),t(Te,[2,71]),t([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),t(pe,[2,78]),{31:[1,265],67:dt,82:218,116:wt,117:yt,118:ft},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,266],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},t(ne,[2,53]),{43:267,44:g,45:39,47:40,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(vt,[2,121],{106:Tn}),t(yn,[2,130],{108:269,10:cr,60:ar,84:_r,105:Ct,109:Se,110:at,111:Nt,112:wr}),t(sn,[2,132]),t(sn,[2,134]),t(sn,[2,135]),t(sn,[2,136]),t(sn,[2,137]),t(sn,[2,138]),t(sn,[2,139]),t(sn,[2,140]),t(sn,[2,141]),t(vt,[2,122],{106:Tn}),{10:[1,270]},t(vt,[2,123],{106:Tn}),{10:[1,271]},t(bn,[2,129]),t(vt,[2,105],{106:Tn}),t(vt,[2,106],{113:112,44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,114:L,115:E,116:D}),t(vt,[2,110]),t(vt,[2,112],{10:[1,272]}),t(vt,[2,113]),{98:[1,273]},{51:[1,274]},{62:[1,275]},{66:[1,276]},{8:G,9:$,11:U,21:277},t(F,[2,34]),t(ne,[2,52]),{10:cr,60:ar,84:_r,105:Ct,107:278,108:242,109:Se,110:at,111:Nt,112:wr},t(sn,[2,133]),{14:Y,44:oe,60:J,89:ue,101:279,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de,120:87},{14:Y,44:oe,60:J,89:ue,101:280,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de,120:87},{98:[1,281]},t(vt,[2,120]),t(Te,[2,58]),{30:282,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},t(Te,[2,66]),t(Ue,a,{5:283}),t(yn,[2,131],{108:269,10:cr,60:ar,84:_r,105:Ct,109:Se,110:at,111:Nt,112:wr}),t(vt,[2,126],{120:167,10:[1,284],14:Y,44:oe,60:J,89:ue,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de}),t(vt,[2,127],{120:167,10:[1,285],14:Y,44:oe,60:J,89:ue,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de}),t(vt,[2,114]),{31:[1,286],67:dt,82:218,116:wt,117:yt,118:ft},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,287],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},{10:cr,60:ar,84:_r,92:288,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{10:cr,60:ar,84:_r,92:289,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},t(Te,[2,62]),t(F,[2,33]),t(vt,[2,124],{106:Tn}),t(vt,[2,125],{106:Tn})],defaultActions:{},parseError:o(function(it,kt){if(kt.recoverable)this.trace(it);else{var jt=new Error(it);throw jt.hash=kt,jt}},"parseError"),parse:o(function(it){var kt=this,jt=[0],ht=[],Dr=[null],me=[],Yl=this.table,be="",jr=0,V4=0,XC=0,jC=2,Gz=1,$3e=me.slice.call(arguments,1),qi=Object.create(this.lexer),ad={yy:{}};for(var KC in this.yy)Object.prototype.hasOwnProperty.call(this.yy,KC)&&(ad.yy[KC]=this.yy[KC]);qi.setInput(it,ad.yy),ad.yy.lexer=qi,ad.yy.parser=this,typeof qi.yylloc>"u"&&(qi.yylloc={});var QC=qi.yylloc;me.push(QC);var z3e=qi.options&&qi.options.ranges;typeof ad.yy.parseError=="function"?this.parseError=ad.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pat(Js){jt.length=jt.length-2*Js,Dr.length=Dr.length-Js,me.length=me.length-Js}o(Pat,"popStack");function G3e(){var Js;return Js=ht.pop()||qi.lex()||Gz,typeof Js!="number"&&(Js instanceof Array&&(ht=Js,Js=ht.pop()),Js=kt.symbols_[Js]||Js),Js}o(G3e,"lex");for(var Xa,ZC,sd,ko,Bat,JC,g0={},U4,iu,Vz,H4;;){if(sd=jt[jt.length-1],this.defaultActions[sd]?ko=this.defaultActions[sd]:((Xa===null||typeof Xa>"u")&&(Xa=G3e()),ko=Yl[sd]&&Yl[sd][Xa]),typeof ko>"u"||!ko.length||!ko[0]){var e7="";H4=[];for(U4 in Yl[sd])this.terminals_[U4]&&U4>jC&&H4.push("'"+this.terminals_[U4]+"'");qi.showPosition?e7="Parse error on line "+(jr+1)+`: +`+qi.showPosition()+` +Expecting `+H4.join(", ")+", got '"+(this.terminals_[Xa]||Xa)+"'":e7="Parse error on line "+(jr+1)+": Unexpected "+(Xa==Gz?"end of input":"'"+(this.terminals_[Xa]||Xa)+"'"),this.parseError(e7,{text:qi.match,token:this.terminals_[Xa]||Xa,line:qi.yylineno,loc:QC,expected:H4})}if(ko[0]instanceof Array&&ko.length>1)throw new Error("Parse Error: multiple actions possible at state: "+sd+", token: "+Xa);switch(ko[0]){case 1:jt.push(Xa),Dr.push(qi.yytext),me.push(qi.yylloc),jt.push(ko[1]),Xa=null,ZC?(Xa=ZC,ZC=null):(V4=qi.yyleng,be=qi.yytext,jr=qi.yylineno,QC=qi.yylloc,XC>0&&XC--);break;case 2:if(iu=this.productions_[ko[1]][1],g0.$=Dr[Dr.length-iu],g0._$={first_line:me[me.length-(iu||1)].first_line,last_line:me[me.length-1].last_line,first_column:me[me.length-(iu||1)].first_column,last_column:me[me.length-1].last_column},z3e&&(g0._$.range=[me[me.length-(iu||1)].range[0],me[me.length-1].range[1]]),JC=this.performAction.apply(g0,[be,V4,jr,ad.yy,ko[1],Dr,me].concat($3e)),typeof JC<"u")return JC;iu&&(jt=jt.slice(0,-1*iu*2),Dr=Dr.slice(0,-1*iu),me=me.slice(0,-1*iu)),jt.push(this.productions_[ko[1]][0]),Dr.push(g0.$),me.push(g0._$),Vz=Yl[jt[jt.length-2]][jt[jt.length-1]],jt.push(Vz);break;case 3:return!0}}return!0},"parse")},Zs=(function(){var fr={EOF:1,parseError:o(function(kt,jt){if(this.yy.parser)this.yy.parser.parseError(kt,jt);else throw new Error(kt)},"parseError"),setInput:o(function(it,kt){return this.yy=kt||this.yy||{},this._input=it,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var it=this._input[0];this.yytext+=it,this.yyleng++,this.offset++,this.match+=it,this.matched+=it;var kt=it.match(/(?:\r\n?|\n).*/g);return kt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),it},"input"),unput:o(function(it){var kt=it.length,jt=it.split(/(?:\r\n?|\n)/g);this._input=it+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-kt),this.offset-=kt;var ht=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),jt.length-1&&(this.yylineno-=jt.length-1);var Dr=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:jt?(jt.length===ht.length?this.yylloc.first_column:0)+ht[ht.length-jt.length].length-jt[0].length:this.yylloc.first_column-kt},this.options.ranges&&(this.yylloc.range=[Dr[0],Dr[0]+this.yyleng-kt]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(it){this.unput(this.match.slice(it))},"less"),pastInput:o(function(){var it=this.matched.substr(0,this.matched.length-this.match.length);return(it.length>20?"...":"")+it.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var it=this.match;return it.length<20&&(it+=this._input.substr(0,20-it.length)),(it.substr(0,20)+(it.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var it=this.pastInput(),kt=new Array(it.length+1).join("-");return it+this.upcomingInput()+` +`+kt+"^"},"showPosition"),test_match:o(function(it,kt){var jt,ht,Dr;if(this.options.backtrack_lexer&&(Dr={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Dr.yylloc.range=this.yylloc.range.slice(0))),ht=it[0].match(/(?:\r\n?|\n).*/g),ht&&(this.yylineno+=ht.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ht?ht[ht.length-1].length-ht[ht.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+it[0].length},this.yytext+=it[0],this.match+=it[0],this.matches=it,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(it[0].length),this.matched+=it[0],jt=this.performAction.call(this,this.yy,this,kt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),jt)return jt;if(this._backtrack){for(var me in Dr)this[me]=Dr[me];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var it,kt,jt,ht;this._more||(this.yytext="",this.match="");for(var Dr=this._currentRules(),me=0;mekt[0].length)){if(kt=jt,ht=me,this.options.backtrack_lexer){if(it=this.test_match(jt,Dr[me]),it!==!1)return it;if(this._backtrack){kt=!1;continue}else return!1}else if(!this.options.flex)break}return kt?(it=this.test_match(kt,Dr[ht]),it!==!1?it:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var kt=this.next();return kt||this.lex()},"lex"),begin:o(function(kt){this.conditionStack.push(kt)},"begin"),popState:o(function(){var kt=this.conditionStack.length-1;return kt>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(kt){return kt=this.conditionStack.length-1-Math.abs(kt||0),kt>=0?this.conditionStack[kt]:"INITIAL"},"topState"),pushState:o(function(kt){this.begin(kt)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(kt,jt,ht,Dr){var me=Dr;switch(ht){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),jt.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let Yl=/\n\s*/g;return jt.yytext=jt.yytext.replace(Yl,"
    "),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 17:this.popState();break;case 18:return 96;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:return kt.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return kt.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return kt.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return 27;case 39:return 32;case 40:return 98;case 41:return 98;case 42:return 98;case 43:return 98;case 44:return this.popState(),13;break;case 45:return this.popState(),14;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 78;case 60:return 105;case 61:return 111;case 62:return 46;case 63:return 60;case 64:return 44;case 65:return 8;case 66:return 106;case 67:return 115;case 68:return this.popState(),77;break;case 69:return this.pushState("edgeText"),75;break;case 70:return 119;case 71:return this.popState(),77;break;case 72:return this.pushState("thickEdgeText"),75;break;case 73:return 119;case 74:return this.popState(),77;break;case 75:return this.pushState("dottedEdgeText"),75;break;case 76:return 119;case 77:return 77;case 78:return this.popState(),53;break;case 79:return"TEXT";case 80:return this.pushState("ellipseText"),52;break;case 81:return this.popState(),55;break;case 82:return this.pushState("text"),54;break;case 83:return this.popState(),57;break;case 84:return this.pushState("text"),56;break;case 85:return 58;case 86:return this.pushState("text"),67;break;case 87:return this.popState(),64;break;case 88:return this.pushState("text"),63;break;case 89:return this.popState(),49;break;case 90:return this.pushState("text"),48;break;case 91:return this.popState(),69;break;case 92:return this.popState(),71;break;case 93:return 117;case 94:return this.pushState("trapText"),68;break;case 95:return this.pushState("trapText"),70;break;case 96:return 118;case 97:return 67;case 98:return 90;case 99:return"SEP";case 100:return 89;case 101:return 115;case 102:return 111;case 103:return 44;case 104:return 109;case 105:return 114;case 106:return 116;case 107:return this.popState(),62;break;case 108:return this.pushState("text"),62;break;case 109:return this.popState(),51;break;case 110:return this.pushState("text"),50;break;case 111:return this.popState(),31;break;case 112:return this.pushState("text"),29;break;case 113:return this.popState(),66;break;case 114:return this.pushState("text"),65;break;case 115:return"TEXT";case 116:return"QUOTE";case 117:return 9;case 118:return 10;case 119:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeData:{rules:[8,11,12,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackargs:{rules:[17,18,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackname:{rules:[14,15,16,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},href:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},click:{rules:[21,24,33,34,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dottedEdgeText:{rules:[21,24,74,76,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},thickEdgeText:{rules:[21,24,71,73,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},edgeText:{rules:[21,24,68,70,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},trapText:{rules:[21,24,77,80,82,84,88,90,91,92,93,94,95,108,110,112,114],inclusive:!1},ellipseText:{rules:[21,24,77,78,79,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},text:{rules:[21,24,77,80,81,82,83,84,87,88,89,90,94,95,107,108,109,110,111,112,113,114,115],inclusive:!1},vertex:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr:{rules:[3,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_title:{rules:[1,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},md_string:{rules:[19,20,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},string:{rules:[21,22,23,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,74,75,77,80,82,84,85,86,88,90,94,95,96,97,98,99,100,101,102,103,104,105,106,108,110,112,114,116,117,118,119],inclusive:!0}}};return fr})();Hi.lexer=Zs;function _a(){this.yy={}}return o(_a,"Parser"),_a.prototype=Hi,Hi.Parser=_a,new _a})();GI.parser=GI;VI=GI});var ffe,dfe,pfe=N(()=>{"use strict";hfe();ffe=Object.assign({},VI);ffe.parse=t=>{let e=t.replace(/}\s*\n/g,`} +`);return VI.parse(e)};dfe=ffe});var zc,yg=N(()=>{"use strict";zc=o(()=>` + /* Font Awesome icon styling - consolidated */ + .label-icon { + display: inline-block; + height: 1em; + overflow: visible; + vertical-align: -0.125em; + } + + .node .label-icon path { + fill: currentColor; + stroke: revert; + stroke-width: revert; + } +`,"getIconStyles")});var Jqe,eWe,mfe,gfe=N(()=>{"use strict";eo();yg();Jqe=o((t,e)=>{let r=ld,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Ka(n,i,a,e)},"fade"),eWe=o(t=>`.label { font-family: ${t.fontFamily}; color: ${t.nodeTextColor||t.textColor}; } @@ -567,7 +944,7 @@ Expecting `+D4.join(", ")+", got '"+(this.terminals_[Wa]||Wa)+"'":kC="Parse erro /* For html labels only */ .labelBkg { - background-color: ${gOe(t.edgeLabelBackground,.5)}; + background-color: ${Jqe(t.edgeLabelBackground,.5)}; // background-color: } @@ -626,12 +1003,13 @@ Expecting `+D4.join(", ")+", got '"+(this.terminals_[Wa]||Wa)+"'":kC="Parse erro } text-align: center; } -`,"getStyles"),qie=yOe});var ik={};hr(ik,{diagram:()=>vOe});var vOe,ak=N(()=>{"use strict";zt();qZ();Gie();Wie();Yie();vOe={parser:Hie,get db(){return new Uw},renderer:zie,styles:qie,init:o(t=>{t.flowchart||(t.flowchart={}),t.layout&&Yy({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Yy({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})},"init")}});var wR,Zie,Jie=N(()=>{"use strict";wR=function(){var t=o(function(J,se,ue,Z){for(ue=ue||{},Z=J.length;Z--;ue[J[Z]]=se);return ue},"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],r=[1,10],n=[1,11],i=[1,12],a=[1,13],s=[1,20],l=[1,21],u=[1,22],h=[1,23],f=[1,24],d=[1,19],p=[1,25],m=[1,26],g=[1,18],y=[1,33],v=[1,34],x=[1,35],b=[1,36],w=[1,37],C=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,50,63,64,65,66,67],T=[1,42],E=[1,43],A=[1,52],S=[40,50,68,69],_=[1,63],I=[1,61],D=[1,58],k=[1,62],L=[1,64],R=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,63,64,65,66,67],O=[63,64,65,66,67],M=[1,81],B=[1,80],F=[1,78],P=[1,79],z=[6,10,42,47],$=[6,10,13,41,42,47,48,49],H=[1,89],Q=[1,88],j=[1,87],ie=[19,56],ne=[1,98],le=[1,97],he=[19,56,58,60],K={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,attribute:51,attributeType:52,attributeName:53,attributeKeyTypeList:54,attributeComment:55,ATTRIBUTE_WORD:56,attributeKeyType:57,",":58,ATTRIBUTE_KEY:59,COMMENT:60,cardinality:61,relType:62,ZERO_OR_ONE:63,ZERO_OR_MORE:64,ONE_OR_MORE:65,ONLY_ONE:66,MD_PARENT:67,NON_IDENTIFYING:68,IDENTIFYING:69,WORD:70,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",56:"ATTRIBUTE_WORD",58:",",59:"ATTRIBUTE_KEY",60:"COMMENT",63:"ZERO_OR_ONE",64:"ZERO_OR_MORE",65:"ONE_OR_MORE",66:"ONLY_ONE",67:"MD_PARENT",68:"NON_IDENTIFYING",69:"IDENTIFYING",70:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[18,1],[18,2],[51,2],[51,3],[51,3],[51,4],[52,1],[53,1],[54,1],[54,3],[57,1],[55,1],[12,3],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[14,1],[14,1],[14,1]],performAction:o(function(se,ue,Z,Se,ce,ae,Oe){var ge=ae.length-1;switch(ce){case 1:break;case 2:this.$=[];break;case 3:ae[ge-1].push(ae[ge]),this.$=ae[ge-1];break;case 4:case 5:this.$=ae[ge];break;case 6:case 7:this.$=[];break;case 8:Se.addEntity(ae[ge-4]),Se.addEntity(ae[ge-2]),Se.addRelationship(ae[ge-4],ae[ge],ae[ge-2],ae[ge-3]);break;case 9:Se.addEntity(ae[ge-8]),Se.addEntity(ae[ge-4]),Se.addRelationship(ae[ge-8],ae[ge],ae[ge-4],ae[ge-5]),Se.setClass([ae[ge-8]],ae[ge-6]),Se.setClass([ae[ge-4]],ae[ge-2]);break;case 10:Se.addEntity(ae[ge-6]),Se.addEntity(ae[ge-2]),Se.addRelationship(ae[ge-6],ae[ge],ae[ge-2],ae[ge-3]),Se.setClass([ae[ge-6]],ae[ge-4]);break;case 11:Se.addEntity(ae[ge-6]),Se.addEntity(ae[ge-4]),Se.addRelationship(ae[ge-6],ae[ge],ae[ge-4],ae[ge-5]),Se.setClass([ae[ge-4]],ae[ge-2]);break;case 12:Se.addEntity(ae[ge-3]),Se.addAttributes(ae[ge-3],ae[ge-1]);break;case 13:Se.addEntity(ae[ge-5]),Se.addAttributes(ae[ge-5],ae[ge-1]),Se.setClass([ae[ge-5]],ae[ge-3]);break;case 14:Se.addEntity(ae[ge-2]);break;case 15:Se.addEntity(ae[ge-4]),Se.setClass([ae[ge-4]],ae[ge-2]);break;case 16:Se.addEntity(ae[ge]);break;case 17:Se.addEntity(ae[ge-2]),Se.setClass([ae[ge-2]],ae[ge]);break;case 18:Se.addEntity(ae[ge-6],ae[ge-4]),Se.addAttributes(ae[ge-6],ae[ge-1]);break;case 19:Se.addEntity(ae[ge-8],ae[ge-6]),Se.addAttributes(ae[ge-8],ae[ge-1]),Se.setClass([ae[ge-8]],ae[ge-3]);break;case 20:Se.addEntity(ae[ge-5],ae[ge-3]);break;case 21:Se.addEntity(ae[ge-7],ae[ge-5]),Se.setClass([ae[ge-7]],ae[ge-2]);break;case 22:Se.addEntity(ae[ge-3],ae[ge-1]);break;case 23:Se.addEntity(ae[ge-5],ae[ge-3]),Se.setClass([ae[ge-5]],ae[ge]);break;case 24:case 25:this.$=ae[ge].trim(),Se.setAccTitle(this.$);break;case 26:case 27:this.$=ae[ge].trim(),Se.setAccDescription(this.$);break;case 32:Se.setDirection("TB");break;case 33:Se.setDirection("BT");break;case 34:Se.setDirection("RL");break;case 35:Se.setDirection("LR");break;case 36:this.$=ae[ge-3],Se.addClass(ae[ge-2],ae[ge-1]);break;case 37:case 38:case 56:case 64:this.$=[ae[ge]];break;case 39:case 40:this.$=ae[ge-2].concat([ae[ge]]);break;case 41:this.$=ae[ge-2],Se.setClass(ae[ge-1],ae[ge]);break;case 42:this.$=ae[ge-3],Se.addCssStyles(ae[ge-2],ae[ge-1]);break;case 43:this.$=[ae[ge]];break;case 44:ae[ge-2].push(ae[ge]),this.$=ae[ge-2];break;case 46:this.$=ae[ge-1]+ae[ge];break;case 54:case 76:case 77:this.$=ae[ge].replace(/"/g,"");break;case 55:case 78:this.$=ae[ge];break;case 57:ae[ge].push(ae[ge-1]),this.$=ae[ge];break;case 58:this.$={type:ae[ge-1],name:ae[ge]};break;case 59:this.$={type:ae[ge-2],name:ae[ge-1],keys:ae[ge]};break;case 60:this.$={type:ae[ge-2],name:ae[ge-1],comment:ae[ge]};break;case 61:this.$={type:ae[ge-3],name:ae[ge-2],keys:ae[ge-1],comment:ae[ge]};break;case 62:case 63:case 66:this.$=ae[ge];break;case 65:ae[ge-2].push(ae[ge]),this.$=ae[ge-2];break;case 67:this.$=ae[ge].replace(/"/g,"");break;case 68:this.$={cardA:ae[ge],relType:ae[ge-1],cardB:ae[ge-2]};break;case 69:this.$=Se.Cardinality.ZERO_OR_ONE;break;case 70:this.$=Se.Cardinality.ZERO_OR_MORE;break;case 71:this.$=Se.Cardinality.ONE_OR_MORE;break;case 72:this.$=Se.Cardinality.ONLY_ONE;break;case 73:this.$=Se.Cardinality.MD_PARENT;break;case 74:this.$=Se.Identification.NON_IDENTIFYING;break;case 75:this.$=Se.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:27,11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,5]),t(e,[2,6]),t(e,[2,16],{12:28,61:32,15:[1,29],17:[1,30],20:[1,31],63:y,64:v,65:x,66:b,67:w}),{23:[1,38]},{25:[1,39]},{27:[1,40]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),t(e,[2,30]),t(e,[2,31]),t(C,[2,54]),t(C,[2,55]),t(e,[2,32]),t(e,[2,33]),t(e,[2,34]),t(e,[2,35]),{16:41,40:T,41:E},{16:44,40:T,41:E},{16:45,40:T,41:E},t(e,[2,4]),{11:46,40:d,50:g},{16:47,40:T,41:E},{18:48,19:[1,49],51:50,52:51,56:A},{11:53,40:d,50:g},{62:54,68:[1,55],69:[1,56]},t(S,[2,69]),t(S,[2,70]),t(S,[2,71]),t(S,[2,72]),t(S,[2,73]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),{13:_,38:57,41:I,42:D,45:59,46:60,48:k,49:L},t(R,[2,37]),t(R,[2,38]),{16:65,40:T,41:E,42:D},{13:_,38:66,41:I,42:D,45:59,46:60,48:k,49:L},{13:[1,67],15:[1,68]},t(e,[2,17],{61:32,12:69,17:[1,70],42:D,63:y,64:v,65:x,66:b,67:w}),{19:[1,71]},t(e,[2,14]),{18:72,19:[2,56],51:50,52:51,56:A},{53:73,56:[1,74]},{56:[2,62]},{21:[1,75]},{61:76,63:y,64:v,65:x,66:b,67:w},t(O,[2,74]),t(O,[2,75]),{6:M,10:B,39:77,42:F,47:P},{40:[1,82],41:[1,83]},t(z,[2,43],{46:84,13:_,41:I,48:k,49:L}),t($,[2,45]),t($,[2,50]),t($,[2,51]),t($,[2,52]),t($,[2,53]),t(e,[2,41],{42:D}),{6:M,10:B,39:85,42:F,47:P},{14:86,40:H,50:Q,70:j},{16:90,40:T,41:E},{11:91,40:d,50:g},{18:92,19:[1,93],51:50,52:51,56:A},t(e,[2,12]),{19:[2,57]},t(ie,[2,58],{54:94,55:95,57:96,59:ne,60:le}),t([19,56,59,60],[2,63]),t(e,[2,22],{15:[1,100],17:[1,99]}),t([40,50],[2,68]),t(e,[2,36]),{13:_,41:I,45:101,46:60,48:k,49:L},t(e,[2,47]),t(e,[2,48]),t(e,[2,49]),t(R,[2,39]),t(R,[2,40]),t($,[2,46]),t(e,[2,42]),t(e,[2,8]),t(e,[2,76]),t(e,[2,77]),t(e,[2,78]),{13:[1,102],42:D},{13:[1,104],15:[1,103]},{19:[1,105]},t(e,[2,15]),t(ie,[2,59],{55:106,58:[1,107],60:le}),t(ie,[2,60]),t(he,[2,64]),t(ie,[2,67]),t(he,[2,66]),{18:108,19:[1,109],51:50,52:51,56:A},{16:110,40:T,41:E},t(z,[2,44],{46:84,13:_,41:I,48:k,49:L}),{14:111,40:H,50:Q,70:j},{16:112,40:T,41:E},{14:113,40:H,50:Q,70:j},t(e,[2,13]),t(ie,[2,61]),{57:114,59:ne},{19:[1,115]},t(e,[2,20]),t(e,[2,23],{17:[1,116],42:D}),t(e,[2,11]),{13:[1,117],42:D},t(e,[2,10]),t(he,[2,65]),t(e,[2,18]),{18:118,19:[1,119],51:50,52:51,56:A},{14:120,40:H,50:Q,70:j},{19:[1,121]},t(e,[2,21]),t(e,[2,9]),t(e,[2,19])],defaultActions:{52:[2,62],72:[2,57]},parseError:o(function(se,ue){if(ue.recoverable)this.trace(se);else{var Z=new Error(se);throw Z.hash=ue,Z}},"parseError"),parse:o(function(se){var ue=this,Z=[0],Se=[],ce=[null],ae=[],Oe=this.table,ge="",ze=0,He=0,$e=0,Re=2,Ie=1,be=ae.slice.call(arguments,1),W=Object.create(this.lexer),de={yy:{}};for(var re in this.yy)Object.prototype.hasOwnProperty.call(this.yy,re)&&(de.yy[re]=this.yy[re]);W.setInput(se,de.yy),de.yy.lexer=W,de.yy.parser=this,typeof W.yylloc>"u"&&(W.yylloc={});var oe=W.yylloc;ae.push(oe);var V=W.options&&W.options.ranges;typeof de.yy.parseError=="function"?this.parseError=de.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xe(ct){Z.length=Z.length-2*ct,ce.length=ce.length-ct,ae.length=ae.length-ct}o(xe,"popStack");function q(){var ct;return ct=Se.pop()||W.lex()||Ie,typeof ct!="number"&&(ct instanceof Array&&(Se=ct,ct=Se.pop()),ct=ue.symbols_[ct]||ct),ct}o(q,"lex");for(var pe,ve,Pe,_e,we,Ve,De={},qe,at,Rt,st;;){if(Pe=Z[Z.length-1],this.defaultActions[Pe]?_e=this.defaultActions[Pe]:((pe===null||typeof pe>"u")&&(pe=q()),_e=Oe[Pe]&&Oe[Pe][pe]),typeof _e>"u"||!_e.length||!_e[0]){var Ue="";st=[];for(qe in Oe[Pe])this.terminals_[qe]&&qe>Re&&st.push("'"+this.terminals_[qe]+"'");W.showPosition?Ue="Parse error on line "+(ze+1)+`: -`+W.showPosition()+` -Expecting `+st.join(", ")+", got '"+(this.terminals_[pe]||pe)+"'":Ue="Parse error on line "+(ze+1)+": Unexpected "+(pe==Ie?"end of input":"'"+(this.terminals_[pe]||pe)+"'"),this.parseError(Ue,{text:W.match,token:this.terminals_[pe]||pe,line:W.yylineno,loc:oe,expected:st})}if(_e[0]instanceof Array&&_e.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Pe+", token: "+pe);switch(_e[0]){case 1:Z.push(pe),ce.push(W.yytext),ae.push(W.yylloc),Z.push(_e[1]),pe=null,ve?(pe=ve,ve=null):(He=W.yyleng,ge=W.yytext,ze=W.yylineno,oe=W.yylloc,$e>0&&$e--);break;case 2:if(at=this.productions_[_e[1]][1],De.$=ce[ce.length-at],De._$={first_line:ae[ae.length-(at||1)].first_line,last_line:ae[ae.length-1].last_line,first_column:ae[ae.length-(at||1)].first_column,last_column:ae[ae.length-1].last_column},V&&(De._$.range=[ae[ae.length-(at||1)].range[0],ae[ae.length-1].range[1]]),Ve=this.performAction.apply(De,[ge,He,ze,de.yy,_e[1],ce,ae].concat(be)),typeof Ve<"u")return Ve;at&&(Z=Z.slice(0,-1*at*2),ce=ce.slice(0,-1*at),ae=ae.slice(0,-1*at)),Z.push(this.productions_[_e[1]][0]),ce.push(De.$),ae.push(De._$),Rt=Oe[Z[Z.length-2]][Z[Z.length-1]],Z.push(Rt);break;case 3:return!0}}return!0},"parse")},X=function(){var J={EOF:1,parseError:o(function(ue,Z){if(this.yy.parser)this.yy.parser.parseError(ue,Z);else throw new Error(ue)},"parseError"),setInput:o(function(se,ue){return this.yy=ue||this.yy||{},this._input=se,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var se=this._input[0];this.yytext+=se,this.yyleng++,this.offset++,this.match+=se,this.matched+=se;var ue=se.match(/(?:\r\n?|\n).*/g);return ue?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),se},"input"),unput:o(function(se){var ue=se.length,Z=se.split(/(?:\r\n?|\n)/g);this._input=se+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ue),this.offset-=ue;var Se=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Z.length-1&&(this.yylineno-=Z.length-1);var ce=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Z?(Z.length===Se.length?this.yylloc.first_column:0)+Se[Se.length-Z.length].length-Z[0].length:this.yylloc.first_column-ue},this.options.ranges&&(this.yylloc.range=[ce[0],ce[0]+this.yyleng-ue]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(se){this.unput(this.match.slice(se))},"less"),pastInput:o(function(){var se=this.matched.substr(0,this.matched.length-this.match.length);return(se.length>20?"...":"")+se.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var se=this.match;return se.length<20&&(se+=this._input.substr(0,20-se.length)),(se.substr(0,20)+(se.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var se=this.pastInput(),ue=new Array(se.length+1).join("-");return se+this.upcomingInput()+` -`+ue+"^"},"showPosition"),test_match:o(function(se,ue){var Z,Se,ce;if(this.options.backtrack_lexer&&(ce={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ce.yylloc.range=this.yylloc.range.slice(0))),Se=se[0].match(/(?:\r\n?|\n).*/g),Se&&(this.yylineno+=Se.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Se?Se[Se.length-1].length-Se[Se.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+se[0].length},this.yytext+=se[0],this.match+=se[0],this.matches=se,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(se[0].length),this.matched+=se[0],Z=this.performAction.call(this,this.yy,this,ue,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Z)return Z;if(this._backtrack){for(var ae in ce)this[ae]=ce[ae];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var se,ue,Z,Se;this._more||(this.yytext="",this.match="");for(var ce=this._currentRules(),ae=0;aeue[0].length)){if(ue=Z,Se=ae,this.options.backtrack_lexer){if(se=this.test_match(Z,ce[ae]),se!==!1)return se;if(this._backtrack){ue=!1;continue}else return!1}else if(!this.options.flex)break}return ue?(se=this.test_match(ue,ce[Se]),se!==!1?se:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ue=this.next();return ue||this.lex()},"lex"),begin:o(function(ue){this.conditionStack.push(ue)},"begin"),popState:o(function(){var ue=this.conditionStack.length-1;return ue>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ue){return ue=this.conditionStack.length-1-Math.abs(ue||0),ue>=0?this.conditionStack[ue]:"INITIAL"},"topState"),pushState:o(function(ue){this.begin(ue)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(ue,Z,Se,ce){var ae=ce;switch(Se){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 70;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 59;case 25:return 56;case 26:return 56;case 27:return 60;case 28:break;case 29:return this.popState(),19;break;case 30:return Z.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;break;case 34:return this.popState(),10;break;case 35:break;case 36:return 13;case 37:return 42;case 38:return 49;case 39:return this.begin("style"),37;break;case 40:return 43;case 41:return 63;case 42:return 65;case 43:return 65;case 44:return 65;case 45:return 63;case 46:return 63;case 47:return 64;case 48:return 64;case 49:return 64;case 50:return 64;case 51:return 64;case 52:return 65;case 53:return 64;case 54:return 65;case 55:return 66;case 56:return 66;case 57:return 66;case 58:return 66;case 59:return 63;case 60:return 64;case 61:return 65;case 62:return 67;case 63:return 68;case 64:return 69;case 65:return 69;case 66:return 68;case 67:return 68;case 68:return 68;case 69:return 41;case 70:return 47;case 71:return 40;case 72:return 48;case 73:return Z.yytext[0];case 74:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:[0-9])/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,69,70],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74],inclusive:!0}}};return J}();K.lexer=X;function te(){this.yy={}}return o(te,"Parser"),te.prototype=K,K.Parser=te,new te}();wR.parser=wR;Zie=wR});var sk,eae=N(()=>{"use strict";vt();zt();mi();ir();sk=class{constructor(){this.entities=new Map;this.relationships=[];this.classes=new Map;this.direction="TB";this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"};this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"};this.setAccTitle=Lr;this.getAccTitle=Rr;this.setAccDescription=Nr;this.getAccDescription=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Ir;this.getConfig=o(()=>me().er,"getConfig");this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"ErDB")}addEntity(e,r=""){return this.entities.has(e)?!this.entities.get(e)?.alias&&r&&(this.entities.get(e).alias=r,Y.info(`Add alias '${r}' to entity '${e}'`)):(this.entities.set(e,{id:`entity-${e}-${this.entities.size}`,label:e,attributes:[],alias:r,shape:"erBox",look:me().look??"default",cssClasses:"default",cssStyles:[]}),Y.info("Added new entity :",e)),this.entities.get(e)}getEntity(e){return this.entities.get(e)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(e,r){let n=this.addEntity(e),i;for(i=r.length-1;i>=0;i--)r[i].keys||(r[i].keys=[]),r[i].comment||(r[i].comment=""),n.attributes.push(r[i]),Y.debug("Added attribute ",r[i].name)}addRelationship(e,r,n,i){let a=this.entities.get(e),s=this.entities.get(n);if(!a||!s)return;let l={entityA:a.id,roleA:r,entityB:s.id,relSpec:i};this.relationships.push(l),Y.debug("Added new relationship :",l)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(e){this.direction=e}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}addCssStyles(e,r){for(let n of e){let i=this.entities.get(n);if(!r||!i)return;for(let a of r)i.cssStyles.push(a)}}addClass(e,r){e.forEach(n=>{let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)})})}setClass(e,r){for(let n of e){let i=this.entities.get(n);if(i)for(let a of r)i.cssClasses+=" "+a}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],Ar()}getData(){let e=[],r=[],n=me();for(let a of this.entities.keys()){let s=this.entities.get(a);s&&(s.cssCompiledStyles=this.getCompiledStyles(s.cssClasses.split(" ")),e.push(s))}let i=0;for(let a of this.relationships){let s={id:$h(a.entityA,a.entityB,{prefix:"id",counter:i++}),type:"normal",curve:"basis",start:a.entityA,end:a.entityB,label:a.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:a.relSpec.cardB.toLowerCase(),arrowTypeEnd:a.relSpec.cardA.toLowerCase(),pattern:a.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:"TB"}}}});var TR={};hr(TR,{draw:()=>SOe});var SOe,tae=N(()=>{"use strict";zt();vt();gm();Yd();$m();ir();dr();SOe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing er diagram (unified)",e);let{securityLevel:i,er:a,layout:s}=me(),l=n.db.getData(),u=yc(e,i);l.type=n.type,l.layoutAlgorithm=nf(s),l.config.flowchart.nodeSpacing=a?.nodeSpacing||140,l.config.flowchart.rankSpacing=a?.rankSpacing||80,l.direction=n.db.getDirection(),l.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],l.diagramId=e,await Cc(l,u),l.layoutAlgorithm==="elk"&&u.select(".edges").lower();let h=u.selectAll('[id*="-background"]');Array.from(h).length>0&&h.each(function(){let d=Ge(this),m=d.attr("id").replace("-background",""),g=u.select(`#${CSS.escape(m)}`);if(!g.empty()){let y=g.attr("transform");d.attr("transform",y)}});let f=8;Gt.insertTitle(u,"erDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ac(u,f,"erDiagram",a?.useMaxWidth??!0)},"draw")});var COe,AOe,rae,nae=N(()=>{"use strict";Ys();COe=o((t,e)=>{let r=Kf,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return qa(n,i,a,e)},"fade"),AOe=o(t=>` + ${zc()} +`,"getStyles"),mfe=eWe});var CE={};dr(CE,{diagram:()=>tWe});var tWe,AE=N(()=>{"use strict";Xt();Bte();ufe();pfe();gfe();tWe={parser:dfe,get db(){return new lw},renderer:cfe,styles:mfe,init:o(t=>{t.flowchart||(t.flowchart={}),t.layout&&nv({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,nv({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})},"init")}});var UI,Tfe,wfe=N(()=>{"use strict";UI=(function(){var t=o(function(K,ae,Q,de){for(Q=Q||{},de=K.length;de--;Q[K[de]]=ae);return Q},"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],r=[1,10],n=[1,11],i=[1,12],a=[1,13],s=[1,20],l=[1,21],u=[1,22],h=[1,23],f=[1,24],d=[1,19],p=[1,25],m=[1,26],g=[1,18],y=[1,33],v=[1,34],x=[1,35],b=[1,36],T=[1,37],S=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,50,63,64,65,66,67],w=[1,42],k=[1,43],A=[1,52],C=[40,50,68,69],R=[1,63],I=[1,61],L=[1,58],E=[1,62],D=[1,64],_=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,63,64,65,66,67],O=[63,64,65,66,67],M=[1,81],P=[1,80],B=[1,78],F=[1,79],G=[6,10,42,47],$=[6,10,13,41,42,47,48,49],U=[1,89],j=[1,88],te=[1,87],Y=[19,56],oe=[1,98],J=[1,97],ue=[19,56,58,60],re={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,attribute:51,attributeType:52,attributeName:53,attributeKeyTypeList:54,attributeComment:55,ATTRIBUTE_WORD:56,attributeKeyType:57,",":58,ATTRIBUTE_KEY:59,COMMENT:60,cardinality:61,relType:62,ZERO_OR_ONE:63,ZERO_OR_MORE:64,ONE_OR_MORE:65,ONLY_ONE:66,MD_PARENT:67,NON_IDENTIFYING:68,IDENTIFYING:69,WORD:70,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",56:"ATTRIBUTE_WORD",58:",",59:"ATTRIBUTE_KEY",60:"COMMENT",63:"ZERO_OR_ONE",64:"ZERO_OR_MORE",65:"ONE_OR_MORE",66:"ONLY_ONE",67:"MD_PARENT",68:"NON_IDENTIFYING",69:"IDENTIFYING",70:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[18,1],[18,2],[51,2],[51,3],[51,3],[51,4],[52,1],[53,1],[54,1],[54,3],[57,1],[55,1],[12,3],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[14,1],[14,1],[14,1]],performAction:o(function(ae,Q,de,ne,Te,q,Ve){var pe=q.length-1;switch(Te){case 1:break;case 2:this.$=[];break;case 3:q[pe-1].push(q[pe]),this.$=q[pe-1];break;case 4:case 5:this.$=q[pe];break;case 6:case 7:this.$=[];break;case 8:ne.addEntity(q[pe-4]),ne.addEntity(q[pe-2]),ne.addRelationship(q[pe-4],q[pe],q[pe-2],q[pe-3]);break;case 9:ne.addEntity(q[pe-8]),ne.addEntity(q[pe-4]),ne.addRelationship(q[pe-8],q[pe],q[pe-4],q[pe-5]),ne.setClass([q[pe-8]],q[pe-6]),ne.setClass([q[pe-4]],q[pe-2]);break;case 10:ne.addEntity(q[pe-6]),ne.addEntity(q[pe-2]),ne.addRelationship(q[pe-6],q[pe],q[pe-2],q[pe-3]),ne.setClass([q[pe-6]],q[pe-4]);break;case 11:ne.addEntity(q[pe-6]),ne.addEntity(q[pe-4]),ne.addRelationship(q[pe-6],q[pe],q[pe-4],q[pe-5]),ne.setClass([q[pe-4]],q[pe-2]);break;case 12:ne.addEntity(q[pe-3]),ne.addAttributes(q[pe-3],q[pe-1]);break;case 13:ne.addEntity(q[pe-5]),ne.addAttributes(q[pe-5],q[pe-1]),ne.setClass([q[pe-5]],q[pe-3]);break;case 14:ne.addEntity(q[pe-2]);break;case 15:ne.addEntity(q[pe-4]),ne.setClass([q[pe-4]],q[pe-2]);break;case 16:ne.addEntity(q[pe]);break;case 17:ne.addEntity(q[pe-2]),ne.setClass([q[pe-2]],q[pe]);break;case 18:ne.addEntity(q[pe-6],q[pe-4]),ne.addAttributes(q[pe-6],q[pe-1]);break;case 19:ne.addEntity(q[pe-8],q[pe-6]),ne.addAttributes(q[pe-8],q[pe-1]),ne.setClass([q[pe-8]],q[pe-3]);break;case 20:ne.addEntity(q[pe-5],q[pe-3]);break;case 21:ne.addEntity(q[pe-7],q[pe-5]),ne.setClass([q[pe-7]],q[pe-2]);break;case 22:ne.addEntity(q[pe-3],q[pe-1]);break;case 23:ne.addEntity(q[pe-5],q[pe-3]),ne.setClass([q[pe-5]],q[pe]);break;case 24:case 25:this.$=q[pe].trim(),ne.setAccTitle(this.$);break;case 26:case 27:this.$=q[pe].trim(),ne.setAccDescription(this.$);break;case 32:ne.setDirection("TB");break;case 33:ne.setDirection("BT");break;case 34:ne.setDirection("RL");break;case 35:ne.setDirection("LR");break;case 36:this.$=q[pe-3],ne.addClass(q[pe-2],q[pe-1]);break;case 37:case 38:case 56:case 64:this.$=[q[pe]];break;case 39:case 40:this.$=q[pe-2].concat([q[pe]]);break;case 41:this.$=q[pe-2],ne.setClass(q[pe-1],q[pe]);break;case 42:this.$=q[pe-3],ne.addCssStyles(q[pe-2],q[pe-1]);break;case 43:this.$=[q[pe]];break;case 44:q[pe-2].push(q[pe]),this.$=q[pe-2];break;case 46:this.$=q[pe-1]+q[pe];break;case 54:case 76:case 77:this.$=q[pe].replace(/"/g,"");break;case 55:case 78:this.$=q[pe];break;case 57:q[pe].push(q[pe-1]),this.$=q[pe];break;case 58:this.$={type:q[pe-1],name:q[pe]};break;case 59:this.$={type:q[pe-2],name:q[pe-1],keys:q[pe]};break;case 60:this.$={type:q[pe-2],name:q[pe-1],comment:q[pe]};break;case 61:this.$={type:q[pe-3],name:q[pe-2],keys:q[pe-1],comment:q[pe]};break;case 62:case 63:case 66:this.$=q[pe];break;case 65:q[pe-2].push(q[pe]),this.$=q[pe-2];break;case 67:this.$=q[pe].replace(/"/g,"");break;case 68:this.$={cardA:q[pe],relType:q[pe-1],cardB:q[pe-2]};break;case 69:this.$=ne.Cardinality.ZERO_OR_ONE;break;case 70:this.$=ne.Cardinality.ZERO_OR_MORE;break;case 71:this.$=ne.Cardinality.ONE_OR_MORE;break;case 72:this.$=ne.Cardinality.ONLY_ONE;break;case 73:this.$=ne.Cardinality.MD_PARENT;break;case 74:this.$=ne.Identification.NON_IDENTIFYING;break;case 75:this.$=ne.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:27,11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,5]),t(e,[2,6]),t(e,[2,16],{12:28,61:32,15:[1,29],17:[1,30],20:[1,31],63:y,64:v,65:x,66:b,67:T}),{23:[1,38]},{25:[1,39]},{27:[1,40]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),t(e,[2,30]),t(e,[2,31]),t(S,[2,54]),t(S,[2,55]),t(e,[2,32]),t(e,[2,33]),t(e,[2,34]),t(e,[2,35]),{16:41,40:w,41:k},{16:44,40:w,41:k},{16:45,40:w,41:k},t(e,[2,4]),{11:46,40:d,50:g},{16:47,40:w,41:k},{18:48,19:[1,49],51:50,52:51,56:A},{11:53,40:d,50:g},{62:54,68:[1,55],69:[1,56]},t(C,[2,69]),t(C,[2,70]),t(C,[2,71]),t(C,[2,72]),t(C,[2,73]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),{13:R,38:57,41:I,42:L,45:59,46:60,48:E,49:D},t(_,[2,37]),t(_,[2,38]),{16:65,40:w,41:k,42:L},{13:R,38:66,41:I,42:L,45:59,46:60,48:E,49:D},{13:[1,67],15:[1,68]},t(e,[2,17],{61:32,12:69,17:[1,70],42:L,63:y,64:v,65:x,66:b,67:T}),{19:[1,71]},t(e,[2,14]),{18:72,19:[2,56],51:50,52:51,56:A},{53:73,56:[1,74]},{56:[2,62]},{21:[1,75]},{61:76,63:y,64:v,65:x,66:b,67:T},t(O,[2,74]),t(O,[2,75]),{6:M,10:P,39:77,42:B,47:F},{40:[1,82],41:[1,83]},t(G,[2,43],{46:84,13:R,41:I,48:E,49:D}),t($,[2,45]),t($,[2,50]),t($,[2,51]),t($,[2,52]),t($,[2,53]),t(e,[2,41],{42:L}),{6:M,10:P,39:85,42:B,47:F},{14:86,40:U,50:j,70:te},{16:90,40:w,41:k},{11:91,40:d,50:g},{18:92,19:[1,93],51:50,52:51,56:A},t(e,[2,12]),{19:[2,57]},t(Y,[2,58],{54:94,55:95,57:96,59:oe,60:J}),t([19,56,59,60],[2,63]),t(e,[2,22],{15:[1,100],17:[1,99]}),t([40,50],[2,68]),t(e,[2,36]),{13:R,41:I,45:101,46:60,48:E,49:D},t(e,[2,47]),t(e,[2,48]),t(e,[2,49]),t(_,[2,39]),t(_,[2,40]),t($,[2,46]),t(e,[2,42]),t(e,[2,8]),t(e,[2,76]),t(e,[2,77]),t(e,[2,78]),{13:[1,102],42:L},{13:[1,104],15:[1,103]},{19:[1,105]},t(e,[2,15]),t(Y,[2,59],{55:106,58:[1,107],60:J}),t(Y,[2,60]),t(ue,[2,64]),t(Y,[2,67]),t(ue,[2,66]),{18:108,19:[1,109],51:50,52:51,56:A},{16:110,40:w,41:k},t(G,[2,44],{46:84,13:R,41:I,48:E,49:D}),{14:111,40:U,50:j,70:te},{16:112,40:w,41:k},{14:113,40:U,50:j,70:te},t(e,[2,13]),t(Y,[2,61]),{57:114,59:oe},{19:[1,115]},t(e,[2,20]),t(e,[2,23],{17:[1,116],42:L}),t(e,[2,11]),{13:[1,117],42:L},t(e,[2,10]),t(ue,[2,65]),t(e,[2,18]),{18:118,19:[1,119],51:50,52:51,56:A},{14:120,40:U,50:j,70:te},{19:[1,121]},t(e,[2,21]),t(e,[2,9]),t(e,[2,19])],defaultActions:{52:[2,62],72:[2,57]},parseError:o(function(ae,Q){if(Q.recoverable)this.trace(ae);else{var de=new Error(ae);throw de.hash=Q,de}},"parseError"),parse:o(function(ae){var Q=this,de=[0],ne=[],Te=[null],q=[],Ve=this.table,pe="",Be=0,Ye=0,He=0,Le=2,Ie=1,Ne=q.slice.call(arguments,1),Ce=Object.create(this.lexer),Fe={yy:{}};for(var fe in this.yy)Object.prototype.hasOwnProperty.call(this.yy,fe)&&(Fe.yy[fe]=this.yy[fe]);Ce.setInput(ae,Fe.yy),Fe.yy.lexer=Ce,Fe.yy.parser=this,typeof Ce.yylloc>"u"&&(Ce.yylloc={});var xe=Ce.yylloc;q.push(xe);var W=Ce.options&&Ce.options.ranges;typeof Fe.yy.parseError=="function"?this.parseError=Fe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function he(et){de.length=de.length-2*et,Te.length=Te.length-et,q.length=q.length-et}o(he,"popStack");function z(){var et;return et=ne.pop()||Ce.lex()||Ie,typeof et!="number"&&(et instanceof Array&&(ne=et,et=ne.pop()),et=Q.symbols_[et]||et),et}o(z,"lex");for(var se,le,ke,ve,ye,Re,_e={},ze,Ke,xt,We;;){if(ke=de[de.length-1],this.defaultActions[ke]?ve=this.defaultActions[ke]:((se===null||typeof se>"u")&&(se=z()),ve=Ve[ke]&&Ve[ke][se]),typeof ve>"u"||!ve.length||!ve[0]){var Oe="";We=[];for(ze in Ve[ke])this.terminals_[ze]&&ze>Le&&We.push("'"+this.terminals_[ze]+"'");Ce.showPosition?Oe="Parse error on line "+(Be+1)+`: +`+Ce.showPosition()+` +Expecting `+We.join(", ")+", got '"+(this.terminals_[se]||se)+"'":Oe="Parse error on line "+(Be+1)+": Unexpected "+(se==Ie?"end of input":"'"+(this.terminals_[se]||se)+"'"),this.parseError(Oe,{text:Ce.match,token:this.terminals_[se]||se,line:Ce.yylineno,loc:xe,expected:We})}if(ve[0]instanceof Array&&ve.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ke+", token: "+se);switch(ve[0]){case 1:de.push(se),Te.push(Ce.yytext),q.push(Ce.yylloc),de.push(ve[1]),se=null,le?(se=le,le=null):(Ye=Ce.yyleng,pe=Ce.yytext,Be=Ce.yylineno,xe=Ce.yylloc,He>0&&He--);break;case 2:if(Ke=this.productions_[ve[1]][1],_e.$=Te[Te.length-Ke],_e._$={first_line:q[q.length-(Ke||1)].first_line,last_line:q[q.length-1].last_line,first_column:q[q.length-(Ke||1)].first_column,last_column:q[q.length-1].last_column},W&&(_e._$.range=[q[q.length-(Ke||1)].range[0],q[q.length-1].range[1]]),Re=this.performAction.apply(_e,[pe,Ye,Be,Fe.yy,ve[1],Te,q].concat(Ne)),typeof Re<"u")return Re;Ke&&(de=de.slice(0,-1*Ke*2),Te=Te.slice(0,-1*Ke),q=q.slice(0,-1*Ke)),de.push(this.productions_[ve[1]][0]),Te.push(_e.$),q.push(_e._$),xt=Ve[de[de.length-2]][de[de.length-1]],de.push(xt);break;case 3:return!0}}return!0},"parse")},ee=(function(){var K={EOF:1,parseError:o(function(Q,de){if(this.yy.parser)this.yy.parser.parseError(Q,de);else throw new Error(Q)},"parseError"),setInput:o(function(ae,Q){return this.yy=Q||this.yy||{},this._input=ae,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var ae=this._input[0];this.yytext+=ae,this.yyleng++,this.offset++,this.match+=ae,this.matched+=ae;var Q=ae.match(/(?:\r\n?|\n).*/g);return Q?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ae},"input"),unput:o(function(ae){var Q=ae.length,de=ae.split(/(?:\r\n?|\n)/g);this._input=ae+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Q),this.offset-=Q;var ne=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),de.length-1&&(this.yylineno-=de.length-1);var Te=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:de?(de.length===ne.length?this.yylloc.first_column:0)+ne[ne.length-de.length].length-de[0].length:this.yylloc.first_column-Q},this.options.ranges&&(this.yylloc.range=[Te[0],Te[0]+this.yyleng-Q]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(ae){this.unput(this.match.slice(ae))},"less"),pastInput:o(function(){var ae=this.matched.substr(0,this.matched.length-this.match.length);return(ae.length>20?"...":"")+ae.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var ae=this.match;return ae.length<20&&(ae+=this._input.substr(0,20-ae.length)),(ae.substr(0,20)+(ae.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var ae=this.pastInput(),Q=new Array(ae.length+1).join("-");return ae+this.upcomingInput()+` +`+Q+"^"},"showPosition"),test_match:o(function(ae,Q){var de,ne,Te;if(this.options.backtrack_lexer&&(Te={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Te.yylloc.range=this.yylloc.range.slice(0))),ne=ae[0].match(/(?:\r\n?|\n).*/g),ne&&(this.yylineno+=ne.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ne?ne[ne.length-1].length-ne[ne.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ae[0].length},this.yytext+=ae[0],this.match+=ae[0],this.matches=ae,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ae[0].length),this.matched+=ae[0],de=this.performAction.call(this,this.yy,this,Q,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),de)return de;if(this._backtrack){for(var q in Te)this[q]=Te[q];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ae,Q,de,ne;this._more||(this.yytext="",this.match="");for(var Te=this._currentRules(),q=0;qQ[0].length)){if(Q=de,ne=q,this.options.backtrack_lexer){if(ae=this.test_match(de,Te[q]),ae!==!1)return ae;if(this._backtrack){Q=!1;continue}else return!1}else if(!this.options.flex)break}return Q?(ae=this.test_match(Q,Te[ne]),ae!==!1?ae:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Q=this.next();return Q||this.lex()},"lex"),begin:o(function(Q){this.conditionStack.push(Q)},"begin"),popState:o(function(){var Q=this.conditionStack.length-1;return Q>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Q){return Q=this.conditionStack.length-1-Math.abs(Q||0),Q>=0?this.conditionStack[Q]:"INITIAL"},"topState"),pushState:o(function(Q){this.begin(Q)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(Q,de,ne,Te){var q=Te;switch(ne){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 70;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 59;case 25:return 56;case 26:return 56;case 27:return 60;case 28:break;case 29:return this.popState(),19;break;case 30:return de.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;break;case 34:return this.popState(),10;break;case 35:break;case 36:return 13;case 37:return 42;case 38:return 49;case 39:return this.begin("style"),37;break;case 40:return 43;case 41:return 63;case 42:return 65;case 43:return 65;case 44:return 65;case 45:return 63;case 46:return 63;case 47:return 64;case 48:return 64;case 49:return 64;case 50:return 64;case 51:return 64;case 52:return 65;case 53:return 64;case 54:return 65;case 55:return 66;case 56:return 66;case 57:return 66;case 58:return 66;case 59:return 63;case 60:return 64;case 61:return 65;case 62:return 67;case 63:return 68;case 64:return 69;case 65:return 69;case 66:return 68;case 67:return 68;case 68:return 68;case 69:return 41;case 70:return 47;case 71:return 40;case 72:return 48;case 73:return de.yytext[0];case 74:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:[0-9])/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,69,70],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74],inclusive:!0}}};return K})();re.lexer=ee;function Z(){this.yy={}}return o(Z,"Parser"),Z.prototype=re,re.Parser=Z,new Z})();UI.parser=UI;Tfe=UI});var _E,kfe=N(()=>{"use strict";pt();Xt();ci();tr();_E=class{constructor(){this.entities=new Map;this.relationships=[];this.classes=new Map;this.direction="TB";this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"};this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"};this.setAccTitle=Rr;this.getAccTitle=Mr;this.setAccDescription=Ir;this.getAccDescription=Or;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getConfig=o(()=>ge().er,"getConfig");this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"ErDB")}addEntity(e,r=""){return this.entities.has(e)?!this.entities.get(e)?.alias&&r&&(this.entities.get(e).alias=r,X.info(`Add alias '${r}' to entity '${e}'`)):(this.entities.set(e,{id:`entity-${e}-${this.entities.size}`,label:e,attributes:[],alias:r,shape:"erBox",look:ge().look??"default",cssClasses:"default",cssStyles:[]}),X.info("Added new entity :",e)),this.entities.get(e)}getEntity(e){return this.entities.get(e)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(e,r){let n=this.addEntity(e),i;for(i=r.length-1;i>=0;i--)r[i].keys||(r[i].keys=[]),r[i].comment||(r[i].comment=""),n.attributes.push(r[i]),X.debug("Added attribute ",r[i].name)}addRelationship(e,r,n,i){let a=this.entities.get(e),s=this.entities.get(n);if(!a||!s)return;let l={entityA:a.id,roleA:r,entityB:s.id,relSpec:i};this.relationships.push(l),X.debug("Added new relationship :",l)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(e){this.direction=e}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}addCssStyles(e,r){for(let n of e){let i=this.entities.get(n);if(!r||!i)return;for(let a of r)i.cssStyles.push(a)}}addClass(e,r){e.forEach(n=>{let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)})})}setClass(e,r){for(let n of e){let i=this.entities.get(n);if(i)for(let a of r)i.cssClasses+=" "+a}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],Sr()}getData(){let e=[],r=[],n=ge();for(let a of this.entities.keys()){let s=this.entities.get(a);s&&(s.cssCompiledStyles=this.getCompiledStyles(s.cssClasses.split(" ")),e.push(s))}let i=0;for(let a of this.relationships){let s={id:xc(a.entityA,a.entityB,{prefix:"id",counter:i++}),type:"normal",curve:"basis",start:a.entityA,end:a.entityB,label:a.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:a.relSpec.cardB.toLowerCase(),arrowTypeEnd:a.relSpec.cardA.toLowerCase(),pattern:a.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:"TB"}}}});var HI={};dr(HI,{draw:()=>lWe});var lWe,Efe=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();yr();lWe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing er diagram (unified)",e);let{securityLevel:i,er:a,layout:s}=ge(),l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=$c(s),l.config.flowchart.nodeSpacing=a?.nodeSpacing||140,l.config.flowchart.rankSpacing=a?.rankSpacing||80,l.direction=n.db.getDirection(),l.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],l.diagramId=e,await Qo(l,u),l.layoutAlgorithm==="elk"&&u.select(".edges").lower();let h=u.selectAll('[id*="-background"]');Array.from(h).length>0&&h.each(function(){let d=qe(this),m=d.attr("id").replace("-background",""),g=u.select(`#${CSS.escape(m)}`);if(!g.empty()){let y=g.attr("transform");d.attr("transform",y)}});let f=8;qt.insertTitle(u,"erDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,f,"erDiagram",a?.useMaxWidth??!0)},"draw")});var cWe,uWe,Sfe,Cfe=N(()=>{"use strict";eo();cWe=o((t,e)=>{let r=ld,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Ka(n,i,a,e)},"fade"),uWe=o(t=>` .entityBox { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; @@ -647,7 +1025,7 @@ Expecting `+st.join(", ")+", got '"+(this.terminals_[pe]||pe)+"'":Ue="Parse erro } .labelBkg { - background-color: ${COe(t.tertiaryColor,.5)}; + background-color: ${cWe(t.tertiaryColor,.5)}; } .edgeLabel .label { @@ -685,69 +1063,69 @@ Expecting `+st.join(", ")+", got '"+(this.terminals_[pe]||pe)+"'":Ue="Parse erro stroke: ${t.lineColor} !important; stroke-width: 1; } -`,"getStyles"),rae=AOe});var iae={};hr(iae,{diagram:()=>_Oe});var _Oe,aae=N(()=>{"use strict";Jie();eae();tae();nae();_Oe={parser:Zie,get db(){return new sk},renderer:TR,styles:rae}});function ii(t){return typeof t=="object"&&t!==null&&typeof t.$type=="string"}function va(t){return typeof t=="object"&&t!==null&&typeof t.$refText=="string"}function kR(t){return typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.type=="string"&&typeof t.path=="string"}function jd(t){return typeof t=="object"&&t!==null&&ii(t.container)&&va(t.reference)&&typeof t.message=="string"}function Ll(t){return typeof t=="object"&&t!==null&&Array.isArray(t.content)}function af(t){return typeof t=="object"&&t!==null&&typeof t.tokenType=="object"}function M2(t){return Ll(t)&&typeof t.fullText=="string"}var Xd,Rl=N(()=>{"use strict";o(ii,"isAstNode");o(va,"isReference");o(kR,"isAstNodeDescription");o(jd,"isLinkingError");Xd=class{static{o(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,r){return ii(e)&&this.isSubtype(e.$type,r)}isSubtype(e,r){if(e===r)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});let i=n[r];if(i!==void 0)return i;{let a=this.computeIsSubtype(e,r);return n[r]=a,a}}getAllSubTypes(e){let r=this.allSubtypes[e];if(r)return r;{let n=this.getAllTypes(),i=[];for(let a of n)this.isSubtype(a,e)&&i.push(a);return this.allSubtypes[e]=i,i}}};o(Ll,"isCompositeCstNode");o(af,"isLeafCstNode");o(M2,"isRootCstNode")});function NOe(t){return typeof t=="string"?t:typeof t>"u"?"undefined":typeof t.toString=="function"?t.toString():Object.prototype.toString.call(t)}function ok(t){return!!t&&typeof t[Symbol.iterator]=="function"}function en(...t){if(t.length===1){let e=t[0];if(e instanceof ao)return e;if(ok(e))return new ao(()=>e[Symbol.iterator](),r=>r.next());if(typeof e.length=="number")return new ao(()=>({index:0}),r=>r.index1?new ao(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){let r=e.iterator.next();if(!r.done)return r;e.iterator=void 0}if(e.array){if(e.arrIndex{"use strict";ao=class t{static{o(this,"StreamImpl")}constructor(e,r){this.startFn=e,this.nextFn=r}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),r=0,n=e.next();for(;!n.done;)r++,n=e.next();return r}toArray(){let e=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,r){let n=this.map(i=>[e?e(i):i,r?r(i):i]);return new Map(n)}toString(){return this.join()}concat(e){return new t(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),r=>{let n;if(!r.firstDone){do if(n=this.nextFn(r.first),!n.done)return n;while(!n.done);r.firstDone=!0}do if(n=r.iterator.next(),!n.done)return n;while(!n.done);return Ia})}join(e=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=e),n+=NOe(i.value)),a=!0;while(!i.done);return n}indexOf(e,r=0){let n=this.iterator(),i=0,a=n.next();for(;!a.done;){if(i>=r&&a.value===e)return i;a=n.next(),i++}return-1}every(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(!e(n.value))return!1;n=r.next()}return!0}some(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return!0;n=r.next()}return!1}forEach(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;)e(i.value,n),i=r.next(),n++}map(e){return new t(this.startFn,r=>{let{done:n,value:i}=this.nextFn(r);return n?Ia:{done:!1,value:e(i)}})}filter(e){return new t(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&e(n.value))return n;while(!n.done);return Ia})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,r){let n=this.iterator(),i=r,a=n.next();for(;!a.done;)i===void 0?i=a.value:i=e(i,a.value),a=n.next();return i}reduceRight(e,r){return this.recursiveReduce(this.iterator(),e,r)}recursiveReduce(e,r,n){let i=e.next();if(i.done)return n;let a=this.recursiveReduce(e,r,n);return a===void 0?i.value:r(a,i.value)}find(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return n.value;n=r.next()}}findIndex(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(e(i.value))return n;i=r.next(),n++}return-1}includes(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===e)return!0;n=r.next()}return!1}flatMap(e){return new t(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:n,value:i}=this.nextFn(r.this);if(!n){let a=e(i);if(ok(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return Ia})}flat(e){if(e===void 0&&(e=1),e<=0)return this;let r=e>1?this.flat(e-1):this;return new t(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let s=n.iterator.next();if(s.done)n.iterator=void 0;else return s}let{done:i,value:a}=r.nextFn(n.this);if(!i)if(ok(a))n.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(n.iterator);return Ia})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(e=1){return new t(()=>{let r=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),r=>(r.size++,r.size>e?Ia:this.nextFn(r.state)))}distinct(e){return new t(()=>({set:new Set,internalState:this.startFn()}),r=>{let n;do if(n=this.nextFn(r.internalState),!n.done){let i=e?e(n.value):n.value;if(!r.set.has(i))return r.set.add(i),n}while(!n.done);return Ia})}exclude(e,r){let n=new Set;for(let i of e){let a=r?r(i):i;n.add(a)}return this.filter(i=>{let a=r?r(i):i;return!n.has(a)})}};o(NOe,"toString");o(ok,"isIterable");I2=new ao(()=>{},()=>Ia),Ia=Object.freeze({done:!0,value:void 0});o(en,"stream");_c=class extends ao{static{o(this,"TreeStreamImpl")}constructor(e,r,n){super(()=>({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[r(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){let s=i.iterators[i.iterators.length-1].next();if(s.done)i.iterators.pop();else return i.iterators.push(r(s.value)[Symbol.iterator]()),s}return Ia})}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),prune:o(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};(function(t){function e(a){return a.reduce((s,l)=>s+l,0)}o(e,"sum"),t.sum=e;function r(a){return a.reduce((s,l)=>s*l,0)}o(r,"product"),t.product=r;function n(a){return a.reduce((s,l)=>Math.min(s,l))}o(n,"min"),t.min=n;function i(a){return a.reduce((s,l)=>Math.max(s,l))}o(i,"max"),t.max=i})(zm||(zm={}))});var ck={};hr(ck,{DefaultNameRegexp:()=>lk,RangeComparison:()=>Dc,compareRange:()=>cae,findCommentNode:()=>AR,findDeclarationNodeAtOffset:()=>IOe,findLeafNodeAtOffset:()=>_R,findLeafNodeBeforeOffset:()=>uae,flattenCst:()=>MOe,getInteriorNodes:()=>BOe,getNextNode:()=>OOe,getPreviousNode:()=>fae,getStartlineNode:()=>POe,inRange:()=>CR,isChildNode:()=>SR,isCommentNode:()=>ER,streamCst:()=>Kd,toDocumentSegment:()=>Qd,tokenToRange:()=>Gm});function Kd(t){return new _c(t,e=>Ll(e)?e.content:[],{includeRoot:!0})}function MOe(t){return Kd(t).filter(af)}function SR(t,e){for(;t.container;)if(t=t.container,t===e)return!0;return!1}function Gm(t){return{start:{character:t.startColumn-1,line:t.startLine-1},end:{character:t.endColumn,line:t.endLine-1}}}function Qd(t){if(!t)return;let{offset:e,end:r,range:n}=t;return{range:n,offset:e,end:r,length:r-e}}function cae(t,e){if(t.end.linee.end.line||t.start.line===e.end.line&&t.start.character>=e.end.character)return Dc.After;let r=t.start.line>e.start.line||t.start.line===e.start.line&&t.start.character>=e.start.character,n=t.end.lineDc.After}function IOe(t,e,r=lk){if(t){if(e>0){let n=e-t.offset,i=t.text.charAt(n);r.test(i)||e--}return _R(t,e)}}function AR(t,e){if(t){let r=fae(t,!0);if(r&&ER(r,e))return r;if(M2(t)){let n=t.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=t.content[i];if(ER(a,e))return a}}}}function ER(t,e){return af(t)&&e.includes(t.tokenType.name)}function _R(t,e){if(af(t))return t;if(Ll(t)){let r=hae(t,e,!1);if(r)return _R(r,e)}}function uae(t,e){if(af(t))return t;if(Ll(t)){let r=hae(t,e,!0);if(r)return uae(r,e)}}function hae(t,e,r){let n=0,i=t.content.length-1,a;for(;n<=i;){let s=Math.floor((n+i)/2),l=t.content[s];if(l.offset<=e&&l.end>e)return l;l.end<=e?(a=r?l:void 0,n=s+1):i=s-1}return a}function fae(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t);for(;n>0;){n--;let i=r.content[n];if(e||!i.hidden)return i}t=r}}function OOe(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t),i=r.content.length-1;for(;n{"use strict";Rl();Ps();o(Kd,"streamCst");o(MOe,"flattenCst");o(SR,"isChildNode");o(Gm,"tokenToRange");o(Qd,"toDocumentSegment");(function(t){t[t.Before=0]="Before",t[t.After=1]="After",t[t.OverlapFront=2]="OverlapFront",t[t.OverlapBack=3]="OverlapBack",t[t.Inside=4]="Inside",t[t.Outside=5]="Outside"})(Dc||(Dc={}));o(cae,"compareRange");o(CR,"inRange");lk=/^[\w\p{L}]$/u;o(IOe,"findDeclarationNodeAtOffset");o(AR,"findCommentNode");o(ER,"isCommentNode");o(_R,"findLeafNodeAtOffset");o(uae,"findLeafNodeBeforeOffset");o(hae,"binarySearch");o(fae,"getPreviousNode");o(OOe,"getNextNode");o(POe,"getStartlineNode");o(BOe,"getInteriorNodes");o(FOe,"getCommonParent");o(lae,"getParentChain")});function Lc(t){throw new Error("Error! The input value was not handled.")}var Zd,uk=N(()=>{"use strict";Zd=class extends Error{static{o(this,"ErrorWithLocation")}constructor(e,r){super(e?`${r} at ${e.range.start.line}:${e.range.start.character}`:r)}};o(Lc,"assertUnreachable")});var U2={};hr(U2,{AbstractElement:()=>Hm,AbstractRule:()=>Vm,AbstractType:()=>Um,Action:()=>cg,Alternatives:()=>ug,ArrayLiteral:()=>Wm,ArrayType:()=>qm,Assignment:()=>hg,BooleanLiteral:()=>Ym,CharacterRange:()=>fg,Condition:()=>O2,Conjunction:()=>Xm,CrossReference:()=>dg,Disjunction:()=>jm,EndOfFile:()=>pg,Grammar:()=>Km,GrammarImport:()=>B2,Group:()=>mg,InferredType:()=>Qm,Interface:()=>Zm,Keyword:()=>gg,LangiumGrammarAstReflection:()=>Cg,LangiumGrammarTerminals:()=>$Oe,NamedArgument:()=>F2,NegatedToken:()=>yg,Negation:()=>Jm,NumberLiteral:()=>eg,Parameter:()=>tg,ParameterReference:()=>rg,ParserRule:()=>ng,ReferenceType:()=>ig,RegexToken:()=>vg,ReturnType:()=>$2,RuleCall:()=>xg,SimpleType:()=>ag,StringLiteral:()=>sg,TerminalAlternatives:()=>bg,TerminalGroup:()=>wg,TerminalRule:()=>Jd,TerminalRuleCall:()=>Tg,Type:()=>og,TypeAttribute:()=>z2,TypeDefinition:()=>hk,UnionType:()=>lg,UnorderedGroup:()=>kg,UntilToken:()=>Eg,ValueLiteral:()=>P2,Wildcard:()=>Sg,isAbstractElement:()=>G2,isAbstractRule:()=>zOe,isAbstractType:()=>GOe,isAction:()=>Mu,isAlternatives:()=>mk,isArrayLiteral:()=>qOe,isArrayType:()=>DR,isAssignment:()=>Ml,isBooleanLiteral:()=>LR,isCharacterRange:()=>FR,isCondition:()=>VOe,isConjunction:()=>RR,isCrossReference:()=>ep,isDisjunction:()=>NR,isEndOfFile:()=>$R,isFeatureName:()=>UOe,isGrammar:()=>YOe,isGrammarImport:()=>XOe,isGroup:()=>sf,isInferredType:()=>fk,isInterface:()=>dk,isKeyword:()=>Ho,isNamedArgument:()=>jOe,isNegatedToken:()=>zR,isNegation:()=>MR,isNumberLiteral:()=>KOe,isParameter:()=>QOe,isParameterReference:()=>IR,isParserRule:()=>Oa,isPrimitiveType:()=>dae,isReferenceType:()=>OR,isRegexToken:()=>GR,isReturnType:()=>PR,isRuleCall:()=>Il,isSimpleType:()=>pk,isStringLiteral:()=>ZOe,isTerminalAlternatives:()=>VR,isTerminalGroup:()=>UR,isTerminalRule:()=>so,isTerminalRuleCall:()=>gk,isType:()=>V2,isTypeAttribute:()=>JOe,isTypeDefinition:()=>HOe,isUnionType:()=>BR,isUnorderedGroup:()=>yk,isUntilToken:()=>HR,isValueLiteral:()=>WOe,isWildcard:()=>WR,reflection:()=>lr});function zOe(t){return lr.isInstance(t,Vm)}function GOe(t){return lr.isInstance(t,Um)}function VOe(t){return lr.isInstance(t,O2)}function UOe(t){return dae(t)||t==="current"||t==="entry"||t==="extends"||t==="false"||t==="fragment"||t==="grammar"||t==="hidden"||t==="import"||t==="interface"||t==="returns"||t==="terminal"||t==="true"||t==="type"||t==="infer"||t==="infers"||t==="with"||typeof t=="string"&&/\^?[_a-zA-Z][\w_]*/.test(t)}function dae(t){return t==="string"||t==="number"||t==="boolean"||t==="Date"||t==="bigint"}function HOe(t){return lr.isInstance(t,hk)}function WOe(t){return lr.isInstance(t,P2)}function G2(t){return lr.isInstance(t,Hm)}function qOe(t){return lr.isInstance(t,Wm)}function DR(t){return lr.isInstance(t,qm)}function LR(t){return lr.isInstance(t,Ym)}function RR(t){return lr.isInstance(t,Xm)}function NR(t){return lr.isInstance(t,jm)}function YOe(t){return lr.isInstance(t,Km)}function XOe(t){return lr.isInstance(t,B2)}function fk(t){return lr.isInstance(t,Qm)}function dk(t){return lr.isInstance(t,Zm)}function jOe(t){return lr.isInstance(t,F2)}function MR(t){return lr.isInstance(t,Jm)}function KOe(t){return lr.isInstance(t,eg)}function QOe(t){return lr.isInstance(t,tg)}function IR(t){return lr.isInstance(t,rg)}function Oa(t){return lr.isInstance(t,ng)}function OR(t){return lr.isInstance(t,ig)}function PR(t){return lr.isInstance(t,$2)}function pk(t){return lr.isInstance(t,ag)}function ZOe(t){return lr.isInstance(t,sg)}function so(t){return lr.isInstance(t,Jd)}function V2(t){return lr.isInstance(t,og)}function JOe(t){return lr.isInstance(t,z2)}function BR(t){return lr.isInstance(t,lg)}function Mu(t){return lr.isInstance(t,cg)}function mk(t){return lr.isInstance(t,ug)}function Ml(t){return lr.isInstance(t,hg)}function FR(t){return lr.isInstance(t,fg)}function ep(t){return lr.isInstance(t,dg)}function $R(t){return lr.isInstance(t,pg)}function sf(t){return lr.isInstance(t,mg)}function Ho(t){return lr.isInstance(t,gg)}function zR(t){return lr.isInstance(t,yg)}function GR(t){return lr.isInstance(t,vg)}function Il(t){return lr.isInstance(t,xg)}function VR(t){return lr.isInstance(t,bg)}function UR(t){return lr.isInstance(t,wg)}function gk(t){return lr.isInstance(t,Tg)}function yk(t){return lr.isInstance(t,kg)}function HR(t){return lr.isInstance(t,Eg)}function WR(t){return lr.isInstance(t,Sg)}var $Oe,Vm,Um,O2,hk,P2,Hm,Wm,qm,Ym,Xm,jm,Km,B2,Qm,Zm,F2,Jm,eg,tg,rg,ng,ig,$2,ag,sg,Jd,og,z2,lg,cg,ug,hg,fg,dg,pg,mg,gg,yg,vg,xg,bg,wg,Tg,kg,Eg,Sg,Cg,lr,Rc=N(()=>{"use strict";Rl();$Oe={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},Vm="AbstractRule";o(zOe,"isAbstractRule");Um="AbstractType";o(GOe,"isAbstractType");O2="Condition";o(VOe,"isCondition");o(UOe,"isFeatureName");o(dae,"isPrimitiveType");hk="TypeDefinition";o(HOe,"isTypeDefinition");P2="ValueLiteral";o(WOe,"isValueLiteral");Hm="AbstractElement";o(G2,"isAbstractElement");Wm="ArrayLiteral";o(qOe,"isArrayLiteral");qm="ArrayType";o(DR,"isArrayType");Ym="BooleanLiteral";o(LR,"isBooleanLiteral");Xm="Conjunction";o(RR,"isConjunction");jm="Disjunction";o(NR,"isDisjunction");Km="Grammar";o(YOe,"isGrammar");B2="GrammarImport";o(XOe,"isGrammarImport");Qm="InferredType";o(fk,"isInferredType");Zm="Interface";o(dk,"isInterface");F2="NamedArgument";o(jOe,"isNamedArgument");Jm="Negation";o(MR,"isNegation");eg="NumberLiteral";o(KOe,"isNumberLiteral");tg="Parameter";o(QOe,"isParameter");rg="ParameterReference";o(IR,"isParameterReference");ng="ParserRule";o(Oa,"isParserRule");ig="ReferenceType";o(OR,"isReferenceType");$2="ReturnType";o(PR,"isReturnType");ag="SimpleType";o(pk,"isSimpleType");sg="StringLiteral";o(ZOe,"isStringLiteral");Jd="TerminalRule";o(so,"isTerminalRule");og="Type";o(V2,"isType");z2="TypeAttribute";o(JOe,"isTypeAttribute");lg="UnionType";o(BR,"isUnionType");cg="Action";o(Mu,"isAction");ug="Alternatives";o(mk,"isAlternatives");hg="Assignment";o(Ml,"isAssignment");fg="CharacterRange";o(FR,"isCharacterRange");dg="CrossReference";o(ep,"isCrossReference");pg="EndOfFile";o($R,"isEndOfFile");mg="Group";o(sf,"isGroup");gg="Keyword";o(Ho,"isKeyword");yg="NegatedToken";o(zR,"isNegatedToken");vg="RegexToken";o(GR,"isRegexToken");xg="RuleCall";o(Il,"isRuleCall");bg="TerminalAlternatives";o(VR,"isTerminalAlternatives");wg="TerminalGroup";o(UR,"isTerminalGroup");Tg="TerminalRuleCall";o(gk,"isTerminalRuleCall");kg="UnorderedGroup";o(yk,"isUnorderedGroup");Eg="UntilToken";o(HR,"isUntilToken");Sg="Wildcard";o(WR,"isWildcard");Cg=class extends Xd{static{o(this,"LangiumGrammarAstReflection")}getAllTypes(){return[Hm,Vm,Um,cg,ug,Wm,qm,hg,Ym,fg,O2,Xm,dg,jm,pg,Km,B2,mg,Qm,Zm,gg,F2,yg,Jm,eg,tg,rg,ng,ig,vg,$2,xg,ag,sg,bg,wg,Jd,Tg,og,z2,hk,lg,kg,Eg,P2,Sg]}computeIsSubtype(e,r){switch(e){case cg:case ug:case hg:case fg:case dg:case pg:case mg:case gg:case yg:case vg:case xg:case bg:case wg:case Tg:case kg:case Eg:case Sg:return this.isSubtype(Hm,r);case Wm:case eg:case sg:return this.isSubtype(P2,r);case qm:case ig:case ag:case lg:return this.isSubtype(hk,r);case Ym:return this.isSubtype(O2,r)||this.isSubtype(P2,r);case Xm:case jm:case Jm:case rg:return this.isSubtype(O2,r);case Qm:case Zm:case og:return this.isSubtype(Um,r);case ng:return this.isSubtype(Vm,r)||this.isSubtype(Um,r);case Jd:return this.isSubtype(Vm,r);default:return!1}}getReferenceType(e){let r=`${e.container.$type}:${e.property}`;switch(r){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return Um;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return Vm;case"Grammar:usedGrammars":return Km;case"NamedArgument:parameter":case"ParameterReference:parameter":return tg;case"TerminalRuleCall:rule":return Jd;default:throw new Error(`${r} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case Hm:return{name:Hm,properties:[{name:"cardinality"},{name:"lookahead"}]};case Wm:return{name:Wm,properties:[{name:"elements",defaultValue:[]}]};case qm:return{name:qm,properties:[{name:"elementType"}]};case Ym:return{name:Ym,properties:[{name:"true",defaultValue:!1}]};case Xm:return{name:Xm,properties:[{name:"left"},{name:"right"}]};case jm:return{name:jm,properties:[{name:"left"},{name:"right"}]};case Km:return{name:Km,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case B2:return{name:B2,properties:[{name:"path"}]};case Qm:return{name:Qm,properties:[{name:"name"}]};case Zm:return{name:Zm,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case F2:return{name:F2,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Jm:return{name:Jm,properties:[{name:"value"}]};case eg:return{name:eg,properties:[{name:"value"}]};case tg:return{name:tg,properties:[{name:"name"}]};case rg:return{name:rg,properties:[{name:"parameter"}]};case ng:return{name:ng,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case ig:return{name:ig,properties:[{name:"referenceType"}]};case $2:return{name:$2,properties:[{name:"name"}]};case ag:return{name:ag,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case sg:return{name:sg,properties:[{name:"value"}]};case Jd:return{name:Jd,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case og:return{name:og,properties:[{name:"name"},{name:"type"}]};case z2:return{name:z2,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case lg:return{name:lg,properties:[{name:"types",defaultValue:[]}]};case cg:return{name:cg,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case ug:return{name:ug,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case hg:return{name:hg,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case fg:return{name:fg,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case dg:return{name:dg,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case pg:return{name:pg,properties:[{name:"cardinality"},{name:"lookahead"}]};case mg:return{name:mg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case gg:return{name:gg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case yg:return{name:yg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case vg:return{name:vg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case xg:return{name:xg,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case bg:return{name:bg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case wg:return{name:wg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Tg:return{name:Tg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case kg:return{name:kg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Eg:return{name:Eg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Sg:return{name:Sg,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}},lr=new Cg});var xk={};hr(xk,{assignMandatoryProperties:()=>XR,copyAstNode:()=>YR,findLocalReferences:()=>tPe,findRootNode:()=>H2,getContainerOfType:()=>tp,getDocument:()=>Pa,hasContainerOfType:()=>ePe,linkContentToContainer:()=>vk,streamAllContents:()=>Nc,streamAst:()=>Wo,streamContents:()=>W2,streamReferences:()=>Ag});function vk(t){for(let[e,r]of Object.entries(t))e.startsWith("$")||(Array.isArray(r)?r.forEach((n,i)=>{ii(n)&&(n.$container=t,n.$containerProperty=e,n.$containerIndex=i)}):ii(r)&&(r.$container=t,r.$containerProperty=e))}function tp(t,e){let r=t;for(;r;){if(e(r))return r;r=r.$container}}function ePe(t,e){let r=t;for(;r;){if(e(r))return!0;r=r.$container}return!1}function Pa(t){let r=H2(t).$document;if(!r)throw new Error("AST node has no document.");return r}function H2(t){for(;t.$container;)t=t.$container;return t}function W2(t,e){if(!t)throw new Error("Node must be an AstNode.");let r=e?.range;return new ao(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexW2(r,e))}function Wo(t,e){if(t){if(e?.range&&!qR(t,e.range))return new _c(t,()=>[])}else throw new Error("Root node must be an AstNode.");return new _c(t,r=>W2(r,e),{includeRoot:!0})}function qR(t,e){var r;if(!e)return!0;let n=(r=t.$cstNode)===null||r===void 0?void 0:r.range;return n?CR(n,e):!1}function Ag(t){return new ao(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex{Ag(n).forEach(i=>{i.reference.ref===t&&r.push(i.reference)})}),en(r)}function XR(t,e){let r=t.getTypeMetaData(e.$type),n=e;for(let i of r.properties)i.defaultValue!==void 0&&n[i.name]===void 0&&(n[i.name]=pae(i.defaultValue))}function pae(t){return Array.isArray(t)?[...t.map(pae)]:t}function YR(t,e){let r={$type:t.$type};for(let[n,i]of Object.entries(t))if(!n.startsWith("$"))if(ii(i))r[n]=YR(i,e);else if(va(i))r[n]=e(r,n,i.$refNode,i.$refText);else if(Array.isArray(i)){let a=[];for(let s of i)ii(s)?a.push(YR(s,e)):va(s)?a.push(e(r,n,s.$refNode,s.$refText)):a.push(s);r[n]=a}else r[n]=i;return vk(r),r}var is=N(()=>{"use strict";Rl();Ps();Nl();o(vk,"linkContentToContainer");o(tp,"getContainerOfType");o(ePe,"hasContainerOfType");o(Pa,"getDocument");o(H2,"findRootNode");o(W2,"streamContents");o(Nc,"streamAllContents");o(Wo,"streamAst");o(qR,"isAstNodeInRange");o(Ag,"streamReferences");o(tPe,"findLocalReferences");o(XR,"assignMandatoryProperties");o(pae,"copyDefaultValue");o(YR,"copyAstNode")});function ar(t){return t.charCodeAt(0)}function bk(t,e){Array.isArray(t)?t.forEach(function(r){e.push(r)}):e.push(t)}function _g(t,e){if(t[e]===!0)throw"duplicate flag "+e;let r=t[e];t[e]=!0}function rp(t){if(t===void 0)throw Error("Internal Error - Should never get here!");return!0}function q2(){throw Error("Internal Error - Should never get here!")}function jR(t){return t.type==="Character"}var KR=N(()=>{"use strict";o(ar,"cc");o(bk,"insertToSet");o(_g,"addFlag");o(rp,"ASSERT_EXISTS");o(q2,"ASSERT_NEVER_REACH_HERE");o(jR,"isCharacter")});var Y2,X2,QR,mae=N(()=>{"use strict";KR();Y2=[];for(let t=ar("0");t<=ar("9");t++)Y2.push(t);X2=[ar("_")].concat(Y2);for(let t=ar("a");t<=ar("z");t++)X2.push(t);for(let t=ar("A");t<=ar("Z");t++)X2.push(t);QR=[ar(" "),ar("\f"),ar(` -`),ar("\r"),ar(" "),ar("\v"),ar(" "),ar("\xA0"),ar("\u1680"),ar("\u2000"),ar("\u2001"),ar("\u2002"),ar("\u2003"),ar("\u2004"),ar("\u2005"),ar("\u2006"),ar("\u2007"),ar("\u2008"),ar("\u2009"),ar("\u200A"),ar("\u2028"),ar("\u2029"),ar("\u202F"),ar("\u205F"),ar("\u3000"),ar("\uFEFF")]});var rPe,wk,nPe,np,gae=N(()=>{"use strict";KR();mae();rPe=/[0-9a-fA-F]/,wk=/[0-9]/,nPe=/[1-9]/,np=class{static{o(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let r=this.disjunction();this.consumeChar("/");let n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":_g(n,"global");break;case"i":_g(n,"ignoreCase");break;case"m":_g(n,"multiLine");break;case"u":_g(n,"unicode");break;case"y":_g(n,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:r,loc:this.loc(0)}}disjunction(){let e=[],r=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(r)}}alternative(){let e=[],r=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(r)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let r;switch(this.popChar()){case"=":r="Lookahead";break;case"!":r="NegativeLookahead";break}rp(r);let n=this.disjunction();return this.consumeChar(")"),{type:r,value:n,loc:this.loc(e)}}return q2()}quantifier(e=!1){let r,n=this.idx;switch(this.popChar()){case"*":r={atLeast:0,atMost:1/0};break;case"+":r={atLeast:1,atMost:1/0};break;case"?":r={atLeast:0,atMost:1};break;case"{":let i=this.integerIncludingZero();switch(this.popChar()){case"}":r={atLeast:i,atMost:i};break;case",":let a;this.isDigit()?(a=this.integerIncludingZero(),r={atLeast:i,atMost:a}):r={atLeast:i,atMost:1/0},this.consumeChar("}");break}if(e===!0&&r===void 0)return;rp(r);break}if(!(e===!0&&r===void 0)&&rp(r))return this.peekChar(0)==="?"?(this.consumeChar("?"),r.greedy=!1):r.greedy=!0,r.type="Quantifier",r.loc=this.loc(n),r}atom(){let e,r=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),rp(e)?(e.loc=this.loc(r),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):q2()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[ar(` -`),ar("\r"),ar("\u2028"),ar("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,r=!1;switch(this.popChar()){case"d":e=Y2;break;case"D":e=Y2,r=!0;break;case"s":e=QR;break;case"S":e=QR,r=!0;break;case"w":e=X2;break;case"W":e=X2,r=!0;break}return rp(e)?{type:"Set",value:e,complement:r}:q2()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=ar("\f");break;case"n":e=ar(` -`);break;case"r":e=ar("\r");break;case"t":e=ar(" ");break;case"v":e=ar("\v");break}return rp(e)?{type:"Character",value:e}:q2()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:ar("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:ar(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:ar(e)}}}characterClass(){let e=[],r=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),r=!0);this.isClassAtom();){let n=this.classAtom(),i=n.type==="Character";if(jR(n)&&this.isRangeDash()){this.consumeChar("-");let a=this.classAtom(),s=a.type==="Character";if(jR(a)){if(a.valuehWe});var hWe,_fe=N(()=>{"use strict";wfe();kfe();Efe();Cfe();hWe={parser:Tfe,get db(){return new _E},renderer:HI,styles:Sfe}});function li(t){return typeof t=="object"&&t!==null&&typeof t.$type=="string"}function Ta(t){return typeof t=="object"&&t!==null&&typeof t.$refText=="string"}function qI(t){return typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.type=="string"&&typeof t.path=="string"}function _p(t){return typeof t=="object"&&t!==null&&li(t.container)&&Ta(t.reference)&&typeof t.message=="string"}function Ol(t){return typeof t=="object"&&t!==null&&Array.isArray(t.content)}function If(t){return typeof t=="object"&&t!==null&&typeof t.tokenType=="object"}function Lx(t){return Ol(t)&&typeof t.fullText=="string"}var Ap,Pl=N(()=>{"use strict";o(li,"isAstNode");o(Ta,"isReference");o(qI,"isAstNodeDescription");o(_p,"isLinkingError");Ap=class{static{o(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,r){return li(e)&&this.isSubtype(e.$type,r)}isSubtype(e,r){if(e===r)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});let i=n[r];if(i!==void 0)return i;{let a=this.computeIsSubtype(e,r);return n[r]=a,a}}getAllSubTypes(e){let r=this.allSubtypes[e];if(r)return r;{let n=this.getAllTypes(),i=[];for(let a of n)this.isSubtype(a,e)&&i.push(a);return this.allSubtypes[e]=i,i}}};o(Ol,"isCompositeCstNode");o(If,"isLeafCstNode");o(Lx,"isRootCstNode")});function mWe(t){return typeof t=="string"?t:typeof t>"u"?"undefined":typeof t.toString=="function"?t.toString():Object.prototype.toString.call(t)}function DE(t){return!!t&&typeof t[Symbol.iterator]=="function"}function an(...t){if(t.length===1){let e=t[0];if(e instanceof po)return e;if(DE(e))return new po(()=>e[Symbol.iterator](),r=>r.next());if(typeof e.length=="number")return new po(()=>({index:0}),r=>r.index1?new po(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){let r=e.iterator.next();if(!r.done)return r;e.iterator=void 0}if(e.array){if(e.arrIndex{"use strict";po=class t{static{o(this,"StreamImpl")}constructor(e,r){this.startFn=e,this.nextFn=r}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),r=0,n=e.next();for(;!n.done;)r++,n=e.next();return r}toArray(){let e=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,r){let n=this.map(i=>[e?e(i):i,r?r(i):i]);return new Map(n)}toString(){return this.join()}concat(e){return new t(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),r=>{let n;if(!r.firstDone){do if(n=this.nextFn(r.first),!n.done)return n;while(!n.done);r.firstDone=!0}do if(n=r.iterator.next(),!n.done)return n;while(!n.done);return za})}join(e=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=e),n+=mWe(i.value)),a=!0;while(!i.done);return n}indexOf(e,r=0){let n=this.iterator(),i=0,a=n.next();for(;!a.done;){if(i>=r&&a.value===e)return i;a=n.next(),i++}return-1}every(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(!e(n.value))return!1;n=r.next()}return!0}some(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return!0;n=r.next()}return!1}forEach(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;)e(i.value,n),i=r.next(),n++}map(e){return new t(this.startFn,r=>{let{done:n,value:i}=this.nextFn(r);return n?za:{done:!1,value:e(i)}})}filter(e){return new t(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&e(n.value))return n;while(!n.done);return za})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,r){let n=this.iterator(),i=r,a=n.next();for(;!a.done;)i===void 0?i=a.value:i=e(i,a.value),a=n.next();return i}reduceRight(e,r){return this.recursiveReduce(this.iterator(),e,r)}recursiveReduce(e,r,n){let i=e.next();if(i.done)return n;let a=this.recursiveReduce(e,r,n);return a===void 0?i.value:r(a,i.value)}find(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return n.value;n=r.next()}}findIndex(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(e(i.value))return n;i=r.next(),n++}return-1}includes(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===e)return!0;n=r.next()}return!1}flatMap(e){return new t(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:n,value:i}=this.nextFn(r.this);if(!n){let a=e(i);if(DE(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return za})}flat(e){if(e===void 0&&(e=1),e<=0)return this;let r=e>1?this.flat(e-1):this;return new t(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let s=n.iterator.next();if(s.done)n.iterator=void 0;else return s}let{done:i,value:a}=r.nextFn(n.this);if(!i)if(DE(a))n.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(n.iterator);return za})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(e=1){return new t(()=>{let r=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),r=>(r.size++,r.size>e?za:this.nextFn(r.state)))}distinct(e){return new t(()=>({set:new Set,internalState:this.startFn()}),r=>{let n;do if(n=this.nextFn(r.internalState),!n.done){let i=e?e(n.value):n.value;if(!r.set.has(i))return r.set.add(i),n}while(!n.done);return za})}exclude(e,r){let n=new Set;for(let i of e){let a=r?r(i):i;n.add(a)}return this.filter(i=>{let a=r?r(i):i;return!n.has(a)})}};o(mWe,"toString");o(DE,"isIterable");Rx=new po(()=>{},()=>za),za=Object.freeze({done:!0,value:void 0});o(an,"stream");Gc=class extends po{static{o(this,"TreeStreamImpl")}constructor(e,r,n){super(()=>({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[r(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){let s=i.iterators[i.iterators.length-1].next();if(s.done)i.iterators.pop();else return i.iterators.push(r(s.value)[Symbol.iterator]()),s}return za})}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),prune:o(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};(function(t){function e(a){return a.reduce((s,l)=>s+l,0)}o(e,"sum"),t.sum=e;function r(a){return a.reduce((s,l)=>s*l,0)}o(r,"product"),t.product=r;function n(a){return a.reduce((s,l)=>Math.min(s,l))}o(n,"min"),t.min=n;function i(a){return a.reduce((s,l)=>Math.max(s,l))}o(i,"max"),t.max=i})(vg||(vg={}))});var RE={};dr(RE,{DefaultNameRegexp:()=>LE,RangeComparison:()=>Vc,compareRange:()=>Rfe,findCommentNode:()=>jI,findDeclarationNodeAtOffset:()=>yWe,findLeafNodeAtOffset:()=>KI,findLeafNodeBeforeOffset:()=>Nfe,flattenCst:()=>gWe,getInteriorNodes:()=>bWe,getNextNode:()=>vWe,getPreviousNode:()=>Ife,getStartlineNode:()=>xWe,inRange:()=>XI,isChildNode:()=>YI,isCommentNode:()=>WI,streamCst:()=>Dp,toDocumentSegment:()=>Lp,tokenToRange:()=>xg});function Dp(t){return new Gc(t,e=>Ol(e)?e.content:[],{includeRoot:!0})}function gWe(t){return Dp(t).filter(If)}function YI(t,e){for(;t.container;)if(t=t.container,t===e)return!0;return!1}function xg(t){return{start:{character:t.startColumn-1,line:t.startLine-1},end:{character:t.endColumn,line:t.endLine-1}}}function Lp(t){if(!t)return;let{offset:e,end:r,range:n}=t;return{range:n,offset:e,end:r,length:r-e}}function Rfe(t,e){if(t.end.linee.end.line||t.start.line===e.end.line&&t.start.character>=e.end.character)return Vc.After;let r=t.start.line>e.start.line||t.start.line===e.start.line&&t.start.character>=e.start.character,n=t.end.lineVc.After}function yWe(t,e,r=LE){if(t){if(e>0){let n=e-t.offset,i=t.text.charAt(n);r.test(i)||e--}return KI(t,e)}}function jI(t,e){if(t){let r=Ife(t,!0);if(r&&WI(r,e))return r;if(Lx(t)){let n=t.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=t.content[i];if(WI(a,e))return a}}}}function WI(t,e){return If(t)&&e.includes(t.tokenType.name)}function KI(t,e){if(If(t))return t;if(Ol(t)){let r=Mfe(t,e,!1);if(r)return KI(r,e)}}function Nfe(t,e){if(If(t))return t;if(Ol(t)){let r=Mfe(t,e,!0);if(r)return Nfe(r,e)}}function Mfe(t,e,r){let n=0,i=t.content.length-1,a;for(;n<=i;){let s=Math.floor((n+i)/2),l=t.content[s];if(l.offset<=e&&l.end>e)return l;l.end<=e?(a=r?l:void 0,n=s+1):i=s-1}return a}function Ife(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t);for(;n>0;){n--;let i=r.content[n];if(e||!i.hidden)return i}t=r}}function vWe(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t),i=r.content.length-1;for(;n{"use strict";Pl();Ys();o(Dp,"streamCst");o(gWe,"flattenCst");o(YI,"isChildNode");o(xg,"tokenToRange");o(Lp,"toDocumentSegment");(function(t){t[t.Before=0]="Before",t[t.After=1]="After",t[t.OverlapFront=2]="OverlapFront",t[t.OverlapBack=3]="OverlapBack",t[t.Inside=4]="Inside",t[t.Outside=5]="Outside"})(Vc||(Vc={}));o(Rfe,"compareRange");o(XI,"inRange");LE=/^[\w\p{L}]$/u;o(yWe,"findDeclarationNodeAtOffset");o(jI,"findCommentNode");o(WI,"isCommentNode");o(KI,"findLeafNodeAtOffset");o(Nfe,"findLeafNodeBeforeOffset");o(Mfe,"binarySearch");o(Ife,"getPreviousNode");o(vWe,"getNextNode");o(xWe,"getStartlineNode");o(bWe,"getInteriorNodes");o(TWe,"getCommonParent");o(Lfe,"getParentChain")});function Uc(t){throw new Error("Error! The input value was not handled.")}var Rp,NE=N(()=>{"use strict";Rp=class extends Error{static{o(this,"ErrorWithLocation")}constructor(e,r){super(e?`${r} at ${e.range.start.line}:${e.range.start.character}`:r)}};o(Uc,"assertUnreachable")});var zx={};dr(zx,{AbstractElement:()=>wg,AbstractRule:()=>bg,AbstractType:()=>Tg,Action:()=>Gg,Alternatives:()=>Vg,ArrayLiteral:()=>kg,ArrayType:()=>Eg,Assignment:()=>Ug,BooleanLiteral:()=>Sg,CharacterRange:()=>Hg,Condition:()=>Nx,Conjunction:()=>Cg,CrossReference:()=>qg,Disjunction:()=>Ag,EndOfFile:()=>Wg,Grammar:()=>_g,GrammarImport:()=>Ix,Group:()=>Yg,InferredType:()=>Dg,Interface:()=>Lg,Keyword:()=>Xg,LangiumGrammarAstReflection:()=>i1,LangiumGrammarTerminals:()=>wWe,NamedArgument:()=>Ox,NegatedToken:()=>jg,Negation:()=>Rg,NumberLiteral:()=>Ng,Parameter:()=>Mg,ParameterReference:()=>Ig,ParserRule:()=>Og,ReferenceType:()=>Pg,RegexToken:()=>Kg,ReturnType:()=>Px,RuleCall:()=>Qg,SimpleType:()=>Bg,StringLiteral:()=>Fg,TerminalAlternatives:()=>Zg,TerminalGroup:()=>Jg,TerminalRule:()=>Np,TerminalRuleCall:()=>e1,Type:()=>$g,TypeAttribute:()=>Bx,TypeDefinition:()=>ME,UnionType:()=>zg,UnorderedGroup:()=>t1,UntilToken:()=>r1,ValueLiteral:()=>Mx,Wildcard:()=>n1,isAbstractElement:()=>Fx,isAbstractRule:()=>kWe,isAbstractType:()=>EWe,isAction:()=>qu,isAlternatives:()=>BE,isArrayLiteral:()=>DWe,isArrayType:()=>QI,isAssignment:()=>Fl,isBooleanLiteral:()=>ZI,isCharacterRange:()=>sO,isCondition:()=>SWe,isConjunction:()=>JI,isCrossReference:()=>Mp,isDisjunction:()=>eO,isEndOfFile:()=>oO,isFeatureName:()=>CWe,isGrammar:()=>LWe,isGrammarImport:()=>RWe,isGroup:()=>Of,isInferredType:()=>IE,isInterface:()=>OE,isKeyword:()=>Zo,isNamedArgument:()=>NWe,isNegatedToken:()=>lO,isNegation:()=>tO,isNumberLiteral:()=>MWe,isParameter:()=>IWe,isParameterReference:()=>rO,isParserRule:()=>Ga,isPrimitiveType:()=>Ofe,isReferenceType:()=>nO,isRegexToken:()=>cO,isReturnType:()=>iO,isRuleCall:()=>$l,isSimpleType:()=>PE,isStringLiteral:()=>OWe,isTerminalAlternatives:()=>uO,isTerminalGroup:()=>hO,isTerminalRule:()=>mo,isTerminalRuleCall:()=>FE,isType:()=>$x,isTypeAttribute:()=>PWe,isTypeDefinition:()=>AWe,isUnionType:()=>aO,isUnorderedGroup:()=>$E,isUntilToken:()=>fO,isValueLiteral:()=>_We,isWildcard:()=>dO,reflection:()=>pr});function kWe(t){return pr.isInstance(t,bg)}function EWe(t){return pr.isInstance(t,Tg)}function SWe(t){return pr.isInstance(t,Nx)}function CWe(t){return Ofe(t)||t==="current"||t==="entry"||t==="extends"||t==="false"||t==="fragment"||t==="grammar"||t==="hidden"||t==="import"||t==="interface"||t==="returns"||t==="terminal"||t==="true"||t==="type"||t==="infer"||t==="infers"||t==="with"||typeof t=="string"&&/\^?[_a-zA-Z][\w_]*/.test(t)}function Ofe(t){return t==="string"||t==="number"||t==="boolean"||t==="Date"||t==="bigint"}function AWe(t){return pr.isInstance(t,ME)}function _We(t){return pr.isInstance(t,Mx)}function Fx(t){return pr.isInstance(t,wg)}function DWe(t){return pr.isInstance(t,kg)}function QI(t){return pr.isInstance(t,Eg)}function ZI(t){return pr.isInstance(t,Sg)}function JI(t){return pr.isInstance(t,Cg)}function eO(t){return pr.isInstance(t,Ag)}function LWe(t){return pr.isInstance(t,_g)}function RWe(t){return pr.isInstance(t,Ix)}function IE(t){return pr.isInstance(t,Dg)}function OE(t){return pr.isInstance(t,Lg)}function NWe(t){return pr.isInstance(t,Ox)}function tO(t){return pr.isInstance(t,Rg)}function MWe(t){return pr.isInstance(t,Ng)}function IWe(t){return pr.isInstance(t,Mg)}function rO(t){return pr.isInstance(t,Ig)}function Ga(t){return pr.isInstance(t,Og)}function nO(t){return pr.isInstance(t,Pg)}function iO(t){return pr.isInstance(t,Px)}function PE(t){return pr.isInstance(t,Bg)}function OWe(t){return pr.isInstance(t,Fg)}function mo(t){return pr.isInstance(t,Np)}function $x(t){return pr.isInstance(t,$g)}function PWe(t){return pr.isInstance(t,Bx)}function aO(t){return pr.isInstance(t,zg)}function qu(t){return pr.isInstance(t,Gg)}function BE(t){return pr.isInstance(t,Vg)}function Fl(t){return pr.isInstance(t,Ug)}function sO(t){return pr.isInstance(t,Hg)}function Mp(t){return pr.isInstance(t,qg)}function oO(t){return pr.isInstance(t,Wg)}function Of(t){return pr.isInstance(t,Yg)}function Zo(t){return pr.isInstance(t,Xg)}function lO(t){return pr.isInstance(t,jg)}function cO(t){return pr.isInstance(t,Kg)}function $l(t){return pr.isInstance(t,Qg)}function uO(t){return pr.isInstance(t,Zg)}function hO(t){return pr.isInstance(t,Jg)}function FE(t){return pr.isInstance(t,e1)}function $E(t){return pr.isInstance(t,t1)}function fO(t){return pr.isInstance(t,r1)}function dO(t){return pr.isInstance(t,n1)}var wWe,bg,Tg,Nx,ME,Mx,wg,kg,Eg,Sg,Cg,Ag,_g,Ix,Dg,Lg,Ox,Rg,Ng,Mg,Ig,Og,Pg,Px,Bg,Fg,Np,$g,Bx,zg,Gg,Vg,Ug,Hg,qg,Wg,Yg,Xg,jg,Kg,Qg,Zg,Jg,e1,t1,r1,n1,i1,pr,Hc=N(()=>{"use strict";Pl();wWe={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},bg="AbstractRule";o(kWe,"isAbstractRule");Tg="AbstractType";o(EWe,"isAbstractType");Nx="Condition";o(SWe,"isCondition");o(CWe,"isFeatureName");o(Ofe,"isPrimitiveType");ME="TypeDefinition";o(AWe,"isTypeDefinition");Mx="ValueLiteral";o(_We,"isValueLiteral");wg="AbstractElement";o(Fx,"isAbstractElement");kg="ArrayLiteral";o(DWe,"isArrayLiteral");Eg="ArrayType";o(QI,"isArrayType");Sg="BooleanLiteral";o(ZI,"isBooleanLiteral");Cg="Conjunction";o(JI,"isConjunction");Ag="Disjunction";o(eO,"isDisjunction");_g="Grammar";o(LWe,"isGrammar");Ix="GrammarImport";o(RWe,"isGrammarImport");Dg="InferredType";o(IE,"isInferredType");Lg="Interface";o(OE,"isInterface");Ox="NamedArgument";o(NWe,"isNamedArgument");Rg="Negation";o(tO,"isNegation");Ng="NumberLiteral";o(MWe,"isNumberLiteral");Mg="Parameter";o(IWe,"isParameter");Ig="ParameterReference";o(rO,"isParameterReference");Og="ParserRule";o(Ga,"isParserRule");Pg="ReferenceType";o(nO,"isReferenceType");Px="ReturnType";o(iO,"isReturnType");Bg="SimpleType";o(PE,"isSimpleType");Fg="StringLiteral";o(OWe,"isStringLiteral");Np="TerminalRule";o(mo,"isTerminalRule");$g="Type";o($x,"isType");Bx="TypeAttribute";o(PWe,"isTypeAttribute");zg="UnionType";o(aO,"isUnionType");Gg="Action";o(qu,"isAction");Vg="Alternatives";o(BE,"isAlternatives");Ug="Assignment";o(Fl,"isAssignment");Hg="CharacterRange";o(sO,"isCharacterRange");qg="CrossReference";o(Mp,"isCrossReference");Wg="EndOfFile";o(oO,"isEndOfFile");Yg="Group";o(Of,"isGroup");Xg="Keyword";o(Zo,"isKeyword");jg="NegatedToken";o(lO,"isNegatedToken");Kg="RegexToken";o(cO,"isRegexToken");Qg="RuleCall";o($l,"isRuleCall");Zg="TerminalAlternatives";o(uO,"isTerminalAlternatives");Jg="TerminalGroup";o(hO,"isTerminalGroup");e1="TerminalRuleCall";o(FE,"isTerminalRuleCall");t1="UnorderedGroup";o($E,"isUnorderedGroup");r1="UntilToken";o(fO,"isUntilToken");n1="Wildcard";o(dO,"isWildcard");i1=class extends Ap{static{o(this,"LangiumGrammarAstReflection")}getAllTypes(){return[wg,bg,Tg,Gg,Vg,kg,Eg,Ug,Sg,Hg,Nx,Cg,qg,Ag,Wg,_g,Ix,Yg,Dg,Lg,Xg,Ox,jg,Rg,Ng,Mg,Ig,Og,Pg,Kg,Px,Qg,Bg,Fg,Zg,Jg,Np,e1,$g,Bx,ME,zg,t1,r1,Mx,n1]}computeIsSubtype(e,r){switch(e){case Gg:case Vg:case Ug:case Hg:case qg:case Wg:case Yg:case Xg:case jg:case Kg:case Qg:case Zg:case Jg:case e1:case t1:case r1:case n1:return this.isSubtype(wg,r);case kg:case Ng:case Fg:return this.isSubtype(Mx,r);case Eg:case Pg:case Bg:case zg:return this.isSubtype(ME,r);case Sg:return this.isSubtype(Nx,r)||this.isSubtype(Mx,r);case Cg:case Ag:case Rg:case Ig:return this.isSubtype(Nx,r);case Dg:case Lg:case $g:return this.isSubtype(Tg,r);case Og:return this.isSubtype(bg,r)||this.isSubtype(Tg,r);case Np:return this.isSubtype(bg,r);default:return!1}}getReferenceType(e){let r=`${e.container.$type}:${e.property}`;switch(r){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return Tg;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return bg;case"Grammar:usedGrammars":return _g;case"NamedArgument:parameter":case"ParameterReference:parameter":return Mg;case"TerminalRuleCall:rule":return Np;default:throw new Error(`${r} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case wg:return{name:wg,properties:[{name:"cardinality"},{name:"lookahead"}]};case kg:return{name:kg,properties:[{name:"elements",defaultValue:[]}]};case Eg:return{name:Eg,properties:[{name:"elementType"}]};case Sg:return{name:Sg,properties:[{name:"true",defaultValue:!1}]};case Cg:return{name:Cg,properties:[{name:"left"},{name:"right"}]};case Ag:return{name:Ag,properties:[{name:"left"},{name:"right"}]};case _g:return{name:_g,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case Ix:return{name:Ix,properties:[{name:"path"}]};case Dg:return{name:Dg,properties:[{name:"name"}]};case Lg:return{name:Lg,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case Ox:return{name:Ox,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Rg:return{name:Rg,properties:[{name:"value"}]};case Ng:return{name:Ng,properties:[{name:"value"}]};case Mg:return{name:Mg,properties:[{name:"name"}]};case Ig:return{name:Ig,properties:[{name:"parameter"}]};case Og:return{name:Og,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case Pg:return{name:Pg,properties:[{name:"referenceType"}]};case Px:return{name:Px,properties:[{name:"name"}]};case Bg:return{name:Bg,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case Fg:return{name:Fg,properties:[{name:"value"}]};case Np:return{name:Np,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case $g:return{name:$g,properties:[{name:"name"},{name:"type"}]};case Bx:return{name:Bx,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case zg:return{name:zg,properties:[{name:"types",defaultValue:[]}]};case Gg:return{name:Gg,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Vg:return{name:Vg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Ug:return{name:Ug,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case Hg:return{name:Hg,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case qg:return{name:qg,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case Wg:return{name:Wg,properties:[{name:"cardinality"},{name:"lookahead"}]};case Yg:return{name:Yg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case Xg:return{name:Xg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case jg:return{name:jg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Kg:return{name:Kg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case Qg:return{name:Qg,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case Zg:return{name:Zg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Jg:return{name:Jg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case e1:return{name:e1,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case t1:return{name:t1,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case r1:return{name:r1,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case n1:return{name:n1,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}},pr=new i1});var GE={};dr(GE,{assignMandatoryProperties:()=>gO,copyAstNode:()=>mO,findLocalReferences:()=>FWe,findRootNode:()=>Gx,getContainerOfType:()=>Ip,getDocument:()=>Va,hasContainerOfType:()=>BWe,linkContentToContainer:()=>zE,streamAllContents:()=>qc,streamAst:()=>Jo,streamContents:()=>Vx,streamReferences:()=>a1});function zE(t){for(let[e,r]of Object.entries(t))e.startsWith("$")||(Array.isArray(r)?r.forEach((n,i)=>{li(n)&&(n.$container=t,n.$containerProperty=e,n.$containerIndex=i)}):li(r)&&(r.$container=t,r.$containerProperty=e))}function Ip(t,e){let r=t;for(;r;){if(e(r))return r;r=r.$container}}function BWe(t,e){let r=t;for(;r;){if(e(r))return!0;r=r.$container}return!1}function Va(t){let r=Gx(t).$document;if(!r)throw new Error("AST node has no document.");return r}function Gx(t){for(;t.$container;)t=t.$container;return t}function Vx(t,e){if(!t)throw new Error("Node must be an AstNode.");let r=e?.range;return new po(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexVx(r,e))}function Jo(t,e){if(t){if(e?.range&&!pO(t,e.range))return new Gc(t,()=>[])}else throw new Error("Root node must be an AstNode.");return new Gc(t,r=>Vx(r,e),{includeRoot:!0})}function pO(t,e){var r;if(!e)return!0;let n=(r=t.$cstNode)===null||r===void 0?void 0:r.range;return n?XI(n,e):!1}function a1(t){return new po(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex{a1(n).forEach(i=>{i.reference.ref===t&&r.push(i.reference)})}),an(r)}function gO(t,e){let r=t.getTypeMetaData(e.$type),n=e;for(let i of r.properties)i.defaultValue!==void 0&&n[i.name]===void 0&&(n[i.name]=Pfe(i.defaultValue))}function Pfe(t){return Array.isArray(t)?[...t.map(Pfe)]:t}function mO(t,e){let r={$type:t.$type};for(let[n,i]of Object.entries(t))if(!n.startsWith("$"))if(li(i))r[n]=mO(i,e);else if(Ta(i))r[n]=e(r,n,i.$refNode,i.$refText);else if(Array.isArray(i)){let a=[];for(let s of i)li(s)?a.push(mO(s,e)):Ta(s)?a.push(e(r,n,s.$refNode,s.$refText)):a.push(s);r[n]=a}else r[n]=i;return zE(r),r}var hs=N(()=>{"use strict";Pl();Ys();Bl();o(zE,"linkContentToContainer");o(Ip,"getContainerOfType");o(BWe,"hasContainerOfType");o(Va,"getDocument");o(Gx,"findRootNode");o(Vx,"streamContents");o(qc,"streamAllContents");o(Jo,"streamAst");o(pO,"isAstNodeInRange");o(a1,"streamReferences");o(FWe,"findLocalReferences");o(gO,"assignMandatoryProperties");o(Pfe,"copyDefaultValue");o(mO,"copyAstNode")});function lr(t){return t.charCodeAt(0)}function VE(t,e){Array.isArray(t)?t.forEach(function(r){e.push(r)}):e.push(t)}function s1(t,e){if(t[e]===!0)throw"duplicate flag "+e;let r=t[e];t[e]=!0}function Op(t){if(t===void 0)throw Error("Internal Error - Should never get here!");return!0}function Ux(){throw Error("Internal Error - Should never get here!")}function yO(t){return t.type==="Character"}var vO=N(()=>{"use strict";o(lr,"cc");o(VE,"insertToSet");o(s1,"addFlag");o(Op,"ASSERT_EXISTS");o(Ux,"ASSERT_NEVER_REACH_HERE");o(yO,"isCharacter")});var Hx,qx,xO,Bfe=N(()=>{"use strict";vO();Hx=[];for(let t=lr("0");t<=lr("9");t++)Hx.push(t);qx=[lr("_")].concat(Hx);for(let t=lr("a");t<=lr("z");t++)qx.push(t);for(let t=lr("A");t<=lr("Z");t++)qx.push(t);xO=[lr(" "),lr("\f"),lr(` +`),lr("\r"),lr(" "),lr("\v"),lr(" "),lr("\xA0"),lr("\u1680"),lr("\u2000"),lr("\u2001"),lr("\u2002"),lr("\u2003"),lr("\u2004"),lr("\u2005"),lr("\u2006"),lr("\u2007"),lr("\u2008"),lr("\u2009"),lr("\u200A"),lr("\u2028"),lr("\u2029"),lr("\u202F"),lr("\u205F"),lr("\u3000"),lr("\uFEFF")]});var $We,UE,zWe,Pp,Ffe=N(()=>{"use strict";vO();Bfe();$We=/[0-9a-fA-F]/,UE=/[0-9]/,zWe=/[1-9]/,Pp=class{static{o(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let r=this.disjunction();this.consumeChar("/");let n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":s1(n,"global");break;case"i":s1(n,"ignoreCase");break;case"m":s1(n,"multiLine");break;case"u":s1(n,"unicode");break;case"y":s1(n,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:r,loc:this.loc(0)}}disjunction(){let e=[],r=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(r)}}alternative(){let e=[],r=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(r)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let r;switch(this.popChar()){case"=":r="Lookahead";break;case"!":r="NegativeLookahead";break}Op(r);let n=this.disjunction();return this.consumeChar(")"),{type:r,value:n,loc:this.loc(e)}}return Ux()}quantifier(e=!1){let r,n=this.idx;switch(this.popChar()){case"*":r={atLeast:0,atMost:1/0};break;case"+":r={atLeast:1,atMost:1/0};break;case"?":r={atLeast:0,atMost:1};break;case"{":let i=this.integerIncludingZero();switch(this.popChar()){case"}":r={atLeast:i,atMost:i};break;case",":let a;this.isDigit()?(a=this.integerIncludingZero(),r={atLeast:i,atMost:a}):r={atLeast:i,atMost:1/0},this.consumeChar("}");break}if(e===!0&&r===void 0)return;Op(r);break}if(!(e===!0&&r===void 0)&&Op(r))return this.peekChar(0)==="?"?(this.consumeChar("?"),r.greedy=!1):r.greedy=!0,r.type="Quantifier",r.loc=this.loc(n),r}atom(){let e,r=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),Op(e)?(e.loc=this.loc(r),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):Ux()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[lr(` +`),lr("\r"),lr("\u2028"),lr("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,r=!1;switch(this.popChar()){case"d":e=Hx;break;case"D":e=Hx,r=!0;break;case"s":e=xO;break;case"S":e=xO,r=!0;break;case"w":e=qx;break;case"W":e=qx,r=!0;break}return Op(e)?{type:"Set",value:e,complement:r}:Ux()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=lr("\f");break;case"n":e=lr(` +`);break;case"r":e=lr("\r");break;case"t":e=lr(" ");break;case"v":e=lr("\v");break}return Op(e)?{type:"Character",value:e}:Ux()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:lr("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:lr(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:lr(e)}}}characterClass(){let e=[],r=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),r=!0);this.isClassAtom();){let n=this.classAtom(),i=n.type==="Character";if(yO(n)&&this.isRangeDash()){this.consumeChar("-");let a=this.classAtom(),s=a.type==="Character";if(yO(a)){if(a.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}});var Mc,yae=N(()=>{"use strict";Mc=class{static{o(this,"BaseRegExpVisitor")}visitChildren(e){for(let r in e){let n=e[r];e.hasOwnProperty(r)&&(n.type!==void 0?this.visit(n):Array.isArray(n)&&n.forEach(i=>{this.visit(i)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}});var j2=N(()=>{"use strict";gae();yae()});var Tk={};hr(Tk,{NEWLINE_REGEXP:()=>JR,escapeRegExp:()=>ap,getCaseInsensitivePattern:()=>tN,getTerminalParts:()=>iPe,isMultilineComment:()=>eN,isWhitespace:()=>Dg,partialMatches:()=>rN,partialRegExp:()=>bae,whitespaceCharacters:()=>xae});function iPe(t){try{typeof t!="string"&&(t=t.source),t=`/${t}/`;let e=vae.pattern(t),r=[];for(let n of e.value.value)ip.reset(t),ip.visit(n),r.push({start:ip.startRegexp,end:ip.endRegex});return r}catch{return[]}}function eN(t){try{return typeof t=="string"&&(t=new RegExp(t)),t=t.toString(),ip.reset(t),ip.visit(vae.pattern(t)),ip.multiline}catch{return!1}}function Dg(t){let e=typeof t=="string"?new RegExp(t):t;return xae.some(r=>e.test(r))}function ap(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function tN(t){return Array.prototype.map.call(t,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:ap(e)).join("")}function rN(t,e){let r=bae(t),n=e.match(r);return!!n&&n[0].length>0}function bae(t){typeof t=="string"&&(t=new RegExp(t));let e=t,r=t.source,n=0;function i(){let a="",s;function l(h){a+=r.substr(n,h),n+=h}o(l,"appendRaw");function u(h){a+="(?:"+r.substr(n,h)+"|$)",n+=h}for(o(u,"appendOptional");n",n)-n+1);break;default:u(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=n,s=s.exec(r)||[],u(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":l(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=n,s=s.exec(r),s?l(s[0].length):u(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":s=n,n+=3,i(),a+=r.substr(s,n-s);break;case"<":switch(r[n+3]){case"=":case"!":s=n,n+=4,i(),a+=r.substr(s,n-s);break;default:l(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else l(1),a+=i()+"|$)";break;case")":return++n,a;default:u(1);break}return a}return o(i,"process"),new RegExp(i(),t.flags)}var JR,vae,ZR,ip,xae,Lg=N(()=>{"use strict";j2();JR=/\r?\n/gm,vae=new np,ZR=class extends Mc{static{o(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let r=String.fromCharCode(e.value);if(!this.multiline&&r===` -`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let n=ap(r);this.endRegexpStack.push(n),this.isStarting&&(this.startRegexp+=n)}}visitSet(e){if(!this.multiline){let r=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(r);this.multiline=!!` -`.match(n)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},ip=new ZR;o(iPe,"getTerminalParts");o(eN,"isMultilineComment");xae=`\f -\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");o(Dg,"isWhitespace");o(ap,"escapeRegExp");o(tN,"getCaseInsensitivePattern");o(rN,"partialMatches");o(bae,"partialRegExp")});var Ek={};hr(Ek,{findAssignment:()=>hN,findNameAssignment:()=>kk,findNodeForKeyword:()=>cN,findNodeForProperty:()=>Q2,findNodesForKeyword:()=>aPe,findNodesForKeywordInternal:()=>uN,findNodesForProperty:()=>oN,getActionAtElement:()=>Sae,getActionType:()=>Aae,getAllReachableRules:()=>K2,getCrossReferenceTerminal:()=>aN,getEntryRule:()=>wae,getExplicitRuleType:()=>Rg,getHiddenRules:()=>Tae,getRuleType:()=>fN,getRuleTypeName:()=>uPe,getTypeName:()=>J2,isArrayCardinality:()=>oPe,isArrayOperator:()=>lPe,isCommentTerminal:()=>sN,isDataType:()=>cPe,isDataTypeRule:()=>Z2,isOptionalCardinality:()=>sPe,terminalRegex:()=>Ng});function wae(t){return t.rules.find(e=>Oa(e)&&e.entry)}function Tae(t){return t.rules.filter(e=>so(e)&&e.hidden)}function K2(t,e){let r=new Set,n=wae(t);if(!n)return new Set(t.rules);let i=[n].concat(Tae(t));for(let s of i)kae(s,r,e);let a=new Set;for(let s of t.rules)(r.has(s.name)||so(s)&&s.hidden)&&a.add(s);return a}function kae(t,e,r){e.add(t.name),Nc(t).forEach(n=>{if(Il(n)||r&&gk(n)){let i=n.rule.ref;i&&!e.has(i.name)&&kae(i,e,r)}})}function aN(t){if(t.terminal)return t.terminal;if(t.type.ref){let e=kk(t.type.ref);return e?.terminal}}function sN(t){return t.hidden&&!Dg(Ng(t))}function oN(t,e){return!t||!e?[]:lN(t,e,t.astNode,!0)}function Q2(t,e,r){if(!t||!e)return;let n=lN(t,e,t.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function lN(t,e,r,n){if(!n){let i=tp(t.grammarSource,Ml);if(i&&i.feature===e)return[t]}return Ll(t)&&t.astNode===r?t.content.flatMap(i=>lN(i,e,r,!1)):[]}function aPe(t,e){return t?uN(t,e,t?.astNode):[]}function cN(t,e,r){if(!t)return;let n=uN(t,e,t?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function uN(t,e,r){if(t.astNode!==r)return[];if(Ho(t.grammarSource)&&t.grammarSource.value===e)return[t];let n=Kd(t).iterator(),i,a=[];do if(i=n.next(),!i.done){let s=i.value;s.astNode===r?Ho(s.grammarSource)&&s.grammarSource.value===e&&a.push(s):n.prune()}while(!i.done);return a}function hN(t){var e;let r=t.astNode;for(;r===((e=t.container)===null||e===void 0?void 0:e.astNode);){let n=tp(t.grammarSource,Ml);if(n)return n;t=t.container}}function kk(t){let e=t;return fk(e)&&(Mu(e.$container)?e=e.$container.$container:Oa(e.$container)?e=e.$container:Lc(e.$container)),Eae(t,e,new Map)}function Eae(t,e,r){var n;function i(a,s){let l;return tp(a,Ml)||(l=Eae(s,s,r)),r.set(t,l),l}if(o(i,"go"),r.has(t))return r.get(t);r.set(t,void 0);for(let a of Nc(e)){if(Ml(a)&&a.feature.toLowerCase()==="name")return r.set(t,a),a;if(Il(a)&&Oa(a.rule.ref))return i(a,a.rule.ref);if(pk(a)&&(!((n=a.typeRef)===null||n===void 0)&&n.ref))return i(a,a.typeRef.ref)}}function Sae(t){let e=t.$container;if(sf(e)){let r=e.elements,n=r.indexOf(t);for(let i=n-1;i>=0;i--){let a=r[i];if(Mu(a))return a;{let s=Nc(r[i]).find(Mu);if(s)return s}}}if(G2(e))return Sae(e)}function sPe(t,e){return t==="?"||t==="*"||sf(e)&&!!e.guardCondition}function oPe(t){return t==="*"||t==="+"}function lPe(t){return t==="+="}function Z2(t){return Cae(t,new Set)}function Cae(t,e){if(e.has(t))return!0;e.add(t);for(let r of Nc(t))if(Il(r)){if(!r.rule.ref||Oa(r.rule.ref)&&!Cae(r.rule.ref,e))return!1}else{if(Ml(r))return!1;if(Mu(r))return!1}return!!t.definition}function cPe(t){return iN(t.type,new Set)}function iN(t,e){if(e.has(t))return!0;if(e.add(t),DR(t))return!1;if(OR(t))return!1;if(BR(t))return t.types.every(r=>iN(r,e));if(pk(t)){if(t.primitiveType!==void 0)return!0;if(t.stringType!==void 0)return!0;if(t.typeRef!==void 0){let r=t.typeRef.ref;return V2(r)?iN(r.type,e):!1}else return!1}else return!1}function Rg(t){if(t.inferredType)return t.inferredType.name;if(t.dataType)return t.dataType;if(t.returnType){let e=t.returnType.ref;if(e){if(Oa(e))return e.name;if(dk(e)||V2(e))return e.name}}}function J2(t){var e;if(Oa(t))return Z2(t)?t.name:(e=Rg(t))!==null&&e!==void 0?e:t.name;if(dk(t)||V2(t)||PR(t))return t.name;if(Mu(t)){let r=Aae(t);if(r)return r}else if(fk(t))return t.name;throw new Error("Cannot get name of Unknown Type")}function Aae(t){var e;if(t.inferredType)return t.inferredType.name;if(!((e=t.type)===null||e===void 0)&&e.ref)return J2(t.type.ref)}function uPe(t){var e,r,n;return so(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":Z2(t)?t.name:(n=Rg(t))!==null&&n!==void 0?n:t.name}function fN(t){var e,r,n;return so(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":(n=Rg(t))!==null&&n!==void 0?n:t.name}function Ng(t){let e={s:!1,i:!1,u:!1},r=Mg(t.definition,e),n=Object.entries(e).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}function Mg(t,e){if(VR(t))return hPe(t);if(UR(t))return fPe(t);if(FR(t))return mPe(t);if(gk(t)){let r=t.rule.ref;if(!r)throw new Error("Missing rule reference.");return Iu(Mg(r.definition),{cardinality:t.cardinality,lookahead:t.lookahead})}else{if(zR(t))return pPe(t);if(HR(t))return dPe(t);if(GR(t)){let r=t.regex.lastIndexOf("/"),n=t.regex.substring(1,r),i=t.regex.substring(r+1);return e&&(e.i=i.includes("i"),e.s=i.includes("s"),e.u=i.includes("u")),Iu(n,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}else{if(WR(t))return Iu(dN,{cardinality:t.cardinality,lookahead:t.lookahead});throw new Error(`Invalid terminal element: ${t?.$type}`)}}}function hPe(t){return Iu(t.elements.map(e=>Mg(e)).join("|"),{cardinality:t.cardinality,lookahead:t.lookahead})}function fPe(t){return Iu(t.elements.map(e=>Mg(e)).join(""),{cardinality:t.cardinality,lookahead:t.lookahead})}function dPe(t){return Iu(`${dN}*?${Mg(t.terminal)}`,{cardinality:t.cardinality,lookahead:t.lookahead})}function pPe(t){return Iu(`(?!${Mg(t.terminal)})${dN}*?`,{cardinality:t.cardinality,lookahead:t.lookahead})}function mPe(t){return t.right?Iu(`[${nN(t.left)}-${nN(t.right)}]`,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1}):Iu(nN(t.left),{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}function nN(t){return ap(t.value)}function Iu(t,e){var r;return(e.wrap!==!1||e.lookahead)&&(t=`(${(r=e.lookahead)!==null&&r!==void 0?r:""}${t})`),e.cardinality?`${t}${e.cardinality}`:t}var dN,Ol=N(()=>{"use strict";uk();Rc();Rl();is();Nl();Lg();o(wae,"getEntryRule");o(Tae,"getHiddenRules");o(K2,"getAllReachableRules");o(kae,"ruleDfs");o(aN,"getCrossReferenceTerminal");o(sN,"isCommentTerminal");o(oN,"findNodesForProperty");o(Q2,"findNodeForProperty");o(lN,"findNodesForPropertyInternal");o(aPe,"findNodesForKeyword");o(cN,"findNodeForKeyword");o(uN,"findNodesForKeywordInternal");o(hN,"findAssignment");o(kk,"findNameAssignment");o(Eae,"findNameAssignmentInternal");o(Sae,"getActionAtElement");o(sPe,"isOptionalCardinality");o(oPe,"isArrayCardinality");o(lPe,"isArrayOperator");o(Z2,"isDataTypeRule");o(Cae,"isDataTypeRuleInternal");o(cPe,"isDataType");o(iN,"isDataTypeInternal");o(Rg,"getExplicitRuleType");o(J2,"getTypeName");o(Aae,"getActionType");o(uPe,"getRuleTypeName");o(fN,"getRuleType");o(Ng,"terminalRegex");dN=/[\s\S]/.source;o(Mg,"abstractElementToRegex");o(hPe,"terminalAlternativesToRegex");o(fPe,"terminalGroupToRegex");o(dPe,"untilTokenToRegex");o(pPe,"negateTokenToRegex");o(mPe,"characterRangeToRegex");o(nN,"keywordToRegex");o(Iu,"withCardinality")});function pN(t){let e=[],r=t.Grammar;for(let n of r.rules)so(n)&&sN(n)&&eN(Ng(n))&&e.push(n.name);return{multilineCommentRules:e,nameRegexp:lk}}var mN=N(()=>{"use strict";Nl();Ol();Lg();Rc();o(pN,"createGrammarConfig")});var gN=N(()=>{"use strict"});function Ig(t){console&&console.error&&console.error(`Error: ${t}`)}function ex(t){console&&console.warn&&console.warn(`Warning: ${t}`)}var _ae=N(()=>{"use strict";o(Ig,"PRINT_ERROR");o(ex,"PRINT_WARNING")});function tx(t){let e=new Date().getTime(),r=t();return{time:new Date().getTime()-e,value:r}}var Dae=N(()=>{"use strict";o(tx,"timer")});function rx(t){function e(){}o(e,"FakeConstructor"),e.prototype=t;let r=new e;function n(){return typeof r.bar}return o(n,"fakeAccess"),n(),n(),t;(0,eval)(t)}var Lae=N(()=>{"use strict";o(rx,"toFastProperties")});var Og=N(()=>{"use strict";_ae();Dae();Lae()});function gPe(t){return yPe(t)?t.LABEL:t.name}function yPe(t){return yi(t.LABEL)&&t.LABEL!==""}function Sk(t){return Je(t,Pg)}function Pg(t){function e(r){return Je(r,Pg)}if(o(e,"convertDefinition"),t instanceof on){let r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return yi(t.label)&&(r.label=t.label),r}else{if(t instanceof Dn)return{type:"Alternative",definition:e(t.definition)};if(t instanceof ln)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof Ln)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Rn)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Pg(new kr({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof wn)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Pg(new kr({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof Or)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof Tn)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof kr){let r={type:"Terminal",name:t.terminalType.name,label:gPe(t.terminalType),idx:t.idx};yi(t.label)&&(r.terminalLabel=t.label);let n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=zo(n)?n.source:n),r}else{if(t instanceof as)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}var oo,on,as,Dn,ln,Ln,Rn,Or,wn,Tn,kr,Ck=N(()=>{"use strict";qt();o(gPe,"tokenLabel");o(yPe,"hasTokenLabel");oo=class{static{o(this,"AbstractProduction")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),Ae(this.definition,r=>{r.accept(e)})}},on=class extends oo{static{o(this,"NonTerminal")}constructor(e){super([]),this.idx=1,ma(this,Os(e,r=>r!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},as=class extends oo{static{o(this,"Rule")}constructor(e){super(e.definition),this.orgText="",ma(this,Os(e,r=>r!==void 0))}},Dn=class extends oo{static{o(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,ma(this,Os(e,r=>r!==void 0))}},ln=class extends oo{static{o(this,"Option")}constructor(e){super(e.definition),this.idx=1,ma(this,Os(e,r=>r!==void 0))}},Ln=class extends oo{static{o(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,ma(this,Os(e,r=>r!==void 0))}},Rn=class extends oo{static{o(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,ma(this,Os(e,r=>r!==void 0))}},Or=class extends oo{static{o(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,ma(this,Os(e,r=>r!==void 0))}},wn=class extends oo{static{o(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,ma(this,Os(e,r=>r!==void 0))}},Tn=class extends oo{static{o(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,ma(this,Os(e,r=>r!==void 0))}},kr=class{static{o(this,"Terminal")}constructor(e){this.idx=1,ma(this,Os(e,r=>r!==void 0))}accept(e){e.visit(this)}};o(Sk,"serializeGrammar");o(Pg,"serializeProduction")});var ss,Rae=N(()=>{"use strict";Ck();ss=class{static{o(this,"GAstVisitor")}visit(e){let r=e;switch(r.constructor){case on:return this.visitNonTerminal(r);case Dn:return this.visitAlternative(r);case ln:return this.visitOption(r);case Ln:return this.visitRepetitionMandatory(r);case Rn:return this.visitRepetitionMandatoryWithSeparator(r);case wn:return this.visitRepetitionWithSeparator(r);case Or:return this.visitRepetition(r);case Tn:return this.visitAlternation(r);case kr:return this.visitTerminal(r);case as:return this.visitRule(r);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}});function yN(t){return t instanceof Dn||t instanceof ln||t instanceof Or||t instanceof Ln||t instanceof Rn||t instanceof wn||t instanceof kr||t instanceof as}function sp(t,e=[]){return t instanceof ln||t instanceof Or||t instanceof wn?!0:t instanceof Tn?A2(t.definition,n=>sp(n,e)):t instanceof on&&qn(e,t)?!1:t instanceof oo?(t instanceof on&&e.push(t),Ma(t.definition,n=>sp(n,e))):!1}function vN(t){return t instanceof Tn}function Bs(t){if(t instanceof on)return"SUBRULE";if(t instanceof ln)return"OPTION";if(t instanceof Tn)return"OR";if(t instanceof Ln)return"AT_LEAST_ONE";if(t instanceof Rn)return"AT_LEAST_ONE_SEP";if(t instanceof wn)return"MANY_SEP";if(t instanceof Or)return"MANY";if(t instanceof kr)return"CONSUME";throw Error("non exhaustive match")}var Nae=N(()=>{"use strict";qt();Ck();o(yN,"isSequenceProd");o(sp,"isOptionalProd");o(vN,"isBranchingProd");o(Bs,"getProductionDslName")});var os=N(()=>{"use strict";Ck();Rae();Nae()});function Mae(t,e,r){return[new ln({definition:[new kr({terminalType:t.separator})].concat(t.definition)})].concat(e,r)}var Ou,Ak=N(()=>{"use strict";qt();os();Ou=class{static{o(this,"RestWalker")}walk(e,r=[]){Ae(e.definition,(n,i)=>{let a=gi(e.definition,i+1);if(n instanceof on)this.walkProdRef(n,a,r);else if(n instanceof kr)this.walkTerminal(n,a,r);else if(n instanceof Dn)this.walkFlat(n,a,r);else if(n instanceof ln)this.walkOption(n,a,r);else if(n instanceof Ln)this.walkAtLeastOne(n,a,r);else if(n instanceof Rn)this.walkAtLeastOneSep(n,a,r);else if(n instanceof wn)this.walkManySep(n,a,r);else if(n instanceof Or)this.walkMany(n,a,r);else if(n instanceof Tn)this.walkOr(n,a,r);else throw Error("non exhaustive match")})}walkTerminal(e,r,n){}walkProdRef(e,r,n){}walkFlat(e,r,n){let i=r.concat(n);this.walk(e,i)}walkOption(e,r,n){let i=r.concat(n);this.walk(e,i)}walkAtLeastOne(e,r,n){let i=[new ln({definition:e.definition})].concat(r,n);this.walk(e,i)}walkAtLeastOneSep(e,r,n){let i=Mae(e,r,n);this.walk(e,i)}walkMany(e,r,n){let i=[new ln({definition:e.definition})].concat(r,n);this.walk(e,i)}walkManySep(e,r,n){let i=Mae(e,r,n);this.walk(e,i)}walkOr(e,r,n){let i=r.concat(n);Ae(e.definition,a=>{let s=new Dn({definition:[a]});this.walk(s,i)})}};o(Mae,"restForRepetitionWithSeparator")});function op(t){if(t instanceof on)return op(t.referencedRule);if(t instanceof kr)return bPe(t);if(yN(t))return vPe(t);if(vN(t))return xPe(t);throw Error("non exhaustive match")}function vPe(t){let e=[],r=t.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=sp(a),e=e.concat(op(a)),n=n+1,i=r.length>n;return Bm(e)}function xPe(t){let e=Je(t.definition,r=>op(r));return Bm(qr(e))}function bPe(t){return[t.terminalType]}var xN=N(()=>{"use strict";qt();os();o(op,"first");o(vPe,"firstForSequence");o(xPe,"firstForBranching");o(bPe,"firstForTerminal")});var _k,bN=N(()=>{"use strict";_k="_~IN~_"});function Iae(t){let e={};return Ae(t,r=>{let n=new wN(r).startWalking();ma(e,n)}),e}function wPe(t,e){return t.name+e+_k}var wN,Oae=N(()=>{"use strict";Ak();xN();qt();bN();os();wN=class extends Ou{static{o(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,r,n){}walkProdRef(e,r,n){let i=wPe(e.referencedRule,e.idx)+this.topProd.name,a=r.concat(n),s=new Dn({definition:a}),l=op(s);this.follows[i]=l}};o(Iae,"computeAllProdsFollows");o(wPe,"buildBetweenProdsFollowPrefix")});function Bg(t){let e=t.toString();if(Dk.hasOwnProperty(e))return Dk[e];{let r=TPe.pattern(e);return Dk[e]=r,r}}function Pae(){Dk={}}var Dk,TPe,Lk=N(()=>{"use strict";j2();Dk={},TPe=new np;o(Bg,"getRegExpAst");o(Pae,"clearRegExpParserCache")});function $ae(t,e=!1){try{let r=Bg(t);return TN(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===Fae)e&&ex(`${nx} Unable to optimize: < ${t.toString()} > +`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(e){let r="";for(let i=0;i=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}});var Wc,$fe=N(()=>{"use strict";Wc=class{static{o(this,"BaseRegExpVisitor")}visitChildren(e){for(let r in e){let n=e[r];e.hasOwnProperty(r)&&(n.type!==void 0?this.visit(n):Array.isArray(n)&&n.forEach(i=>{this.visit(i)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}});var Wx=N(()=>{"use strict";Ffe();$fe()});var HE={};dr(HE,{NEWLINE_REGEXP:()=>TO,escapeRegExp:()=>Fp,getCaseInsensitivePattern:()=>kO,getTerminalParts:()=>GWe,isMultilineComment:()=>wO,isWhitespace:()=>o1,partialMatches:()=>EO,partialRegExp:()=>Vfe,whitespaceCharacters:()=>Gfe});function GWe(t){try{typeof t!="string"&&(t=t.source),t=`/${t}/`;let e=zfe.pattern(t),r=[];for(let n of e.value.value)Bp.reset(t),Bp.visit(n),r.push({start:Bp.startRegexp,end:Bp.endRegex});return r}catch{return[]}}function wO(t){try{return typeof t=="string"&&(t=new RegExp(t)),t=t.toString(),Bp.reset(t),Bp.visit(zfe.pattern(t)),Bp.multiline}catch{return!1}}function o1(t){let e=typeof t=="string"?new RegExp(t):t;return Gfe.some(r=>e.test(r))}function Fp(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function kO(t){return Array.prototype.map.call(t,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:Fp(e)).join("")}function EO(t,e){let r=Vfe(t),n=e.match(r);return!!n&&n[0].length>0}function Vfe(t){typeof t=="string"&&(t=new RegExp(t));let e=t,r=t.source,n=0;function i(){let a="",s;function l(h){a+=r.substr(n,h),n+=h}o(l,"appendRaw");function u(h){a+="(?:"+r.substr(n,h)+"|$)",n+=h}for(o(u,"appendOptional");n",n)-n+1);break;default:u(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=n,s=s.exec(r)||[],u(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":l(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=n,s=s.exec(r),s?l(s[0].length):u(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":s=n,n+=3,i(),a+=r.substr(s,n-s);break;case"<":switch(r[n+3]){case"=":case"!":s=n,n+=4,i(),a+=r.substr(s,n-s);break;default:l(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else l(1),a+=i()+"|$)";break;case")":return++n,a;default:u(1);break}return a}return o(i,"process"),new RegExp(i(),t.flags)}var TO,zfe,bO,Bp,Gfe,l1=N(()=>{"use strict";Wx();TO=/\r?\n/gm,zfe=new Pp,bO=class extends Wc{static{o(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let r=String.fromCharCode(e.value);if(!this.multiline&&r===` +`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let n=Fp(r);this.endRegexpStack.push(n),this.isStarting&&(this.startRegexp+=n)}}visitSet(e){if(!this.multiline){let r=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(r);this.multiline=!!` +`.match(n)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},Bp=new bO;o(GWe,"getTerminalParts");o(wO,"isMultilineComment");Gfe=`\f +\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");o(o1,"isWhitespace");o(Fp,"escapeRegExp");o(kO,"getCaseInsensitivePattern");o(EO,"partialMatches");o(Vfe,"partialRegExp")});var WE={};dr(WE,{findAssignment:()=>MO,findNameAssignment:()=>qE,findNodeForKeyword:()=>RO,findNodeForProperty:()=>Xx,findNodesForKeyword:()=>VWe,findNodesForKeywordInternal:()=>NO,findNodesForProperty:()=>DO,getActionAtElement:()=>Yfe,getActionType:()=>jfe,getAllReachableRules:()=>Yx,getCrossReferenceTerminal:()=>AO,getEntryRule:()=>Ufe,getExplicitRuleType:()=>c1,getHiddenRules:()=>Hfe,getRuleType:()=>IO,getRuleTypeName:()=>YWe,getTypeName:()=>Kx,isArrayCardinality:()=>HWe,isArrayOperator:()=>qWe,isCommentTerminal:()=>_O,isDataType:()=>WWe,isDataTypeRule:()=>jx,isOptionalCardinality:()=>UWe,terminalRegex:()=>u1});function Ufe(t){return t.rules.find(e=>Ga(e)&&e.entry)}function Hfe(t){return t.rules.filter(e=>mo(e)&&e.hidden)}function Yx(t,e){let r=new Set,n=Ufe(t);if(!n)return new Set(t.rules);let i=[n].concat(Hfe(t));for(let s of i)qfe(s,r,e);let a=new Set;for(let s of t.rules)(r.has(s.name)||mo(s)&&s.hidden)&&a.add(s);return a}function qfe(t,e,r){e.add(t.name),qc(t).forEach(n=>{if($l(n)||r&&FE(n)){let i=n.rule.ref;i&&!e.has(i.name)&&qfe(i,e,r)}})}function AO(t){if(t.terminal)return t.terminal;if(t.type.ref){let e=qE(t.type.ref);return e?.terminal}}function _O(t){return t.hidden&&!o1(u1(t))}function DO(t,e){return!t||!e?[]:LO(t,e,t.astNode,!0)}function Xx(t,e,r){if(!t||!e)return;let n=LO(t,e,t.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function LO(t,e,r,n){if(!n){let i=Ip(t.grammarSource,Fl);if(i&&i.feature===e)return[t]}return Ol(t)&&t.astNode===r?t.content.flatMap(i=>LO(i,e,r,!1)):[]}function VWe(t,e){return t?NO(t,e,t?.astNode):[]}function RO(t,e,r){if(!t)return;let n=NO(t,e,t?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function NO(t,e,r){if(t.astNode!==r)return[];if(Zo(t.grammarSource)&&t.grammarSource.value===e)return[t];let n=Dp(t).iterator(),i,a=[];do if(i=n.next(),!i.done){let s=i.value;s.astNode===r?Zo(s.grammarSource)&&s.grammarSource.value===e&&a.push(s):n.prune()}while(!i.done);return a}function MO(t){var e;let r=t.astNode;for(;r===((e=t.container)===null||e===void 0?void 0:e.astNode);){let n=Ip(t.grammarSource,Fl);if(n)return n;t=t.container}}function qE(t){let e=t;return IE(e)&&(qu(e.$container)?e=e.$container.$container:Ga(e.$container)?e=e.$container:Uc(e.$container)),Wfe(t,e,new Map)}function Wfe(t,e,r){var n;function i(a,s){let l;return Ip(a,Fl)||(l=Wfe(s,s,r)),r.set(t,l),l}if(o(i,"go"),r.has(t))return r.get(t);r.set(t,void 0);for(let a of qc(e)){if(Fl(a)&&a.feature.toLowerCase()==="name")return r.set(t,a),a;if($l(a)&&Ga(a.rule.ref))return i(a,a.rule.ref);if(PE(a)&&(!((n=a.typeRef)===null||n===void 0)&&n.ref))return i(a,a.typeRef.ref)}}function Yfe(t){let e=t.$container;if(Of(e)){let r=e.elements,n=r.indexOf(t);for(let i=n-1;i>=0;i--){let a=r[i];if(qu(a))return a;{let s=qc(r[i]).find(qu);if(s)return s}}}if(Fx(e))return Yfe(e)}function UWe(t,e){return t==="?"||t==="*"||Of(e)&&!!e.guardCondition}function HWe(t){return t==="*"||t==="+"}function qWe(t){return t==="+="}function jx(t){return Xfe(t,new Set)}function Xfe(t,e){if(e.has(t))return!0;e.add(t);for(let r of qc(t))if($l(r)){if(!r.rule.ref||Ga(r.rule.ref)&&!Xfe(r.rule.ref,e))return!1}else{if(Fl(r))return!1;if(qu(r))return!1}return!!t.definition}function WWe(t){return CO(t.type,new Set)}function CO(t,e){if(e.has(t))return!0;if(e.add(t),QI(t))return!1;if(nO(t))return!1;if(aO(t))return t.types.every(r=>CO(r,e));if(PE(t)){if(t.primitiveType!==void 0)return!0;if(t.stringType!==void 0)return!0;if(t.typeRef!==void 0){let r=t.typeRef.ref;return $x(r)?CO(r.type,e):!1}else return!1}else return!1}function c1(t){if(t.inferredType)return t.inferredType.name;if(t.dataType)return t.dataType;if(t.returnType){let e=t.returnType.ref;if(e){if(Ga(e))return e.name;if(OE(e)||$x(e))return e.name}}}function Kx(t){var e;if(Ga(t))return jx(t)?t.name:(e=c1(t))!==null&&e!==void 0?e:t.name;if(OE(t)||$x(t)||iO(t))return t.name;if(qu(t)){let r=jfe(t);if(r)return r}else if(IE(t))return t.name;throw new Error("Cannot get name of Unknown Type")}function jfe(t){var e;if(t.inferredType)return t.inferredType.name;if(!((e=t.type)===null||e===void 0)&&e.ref)return Kx(t.type.ref)}function YWe(t){var e,r,n;return mo(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":jx(t)?t.name:(n=c1(t))!==null&&n!==void 0?n:t.name}function IO(t){var e,r,n;return mo(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":(n=c1(t))!==null&&n!==void 0?n:t.name}function u1(t){let e={s:!1,i:!1,u:!1},r=h1(t.definition,e),n=Object.entries(e).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}function h1(t,e){if(uO(t))return XWe(t);if(hO(t))return jWe(t);if(sO(t))return ZWe(t);if(FE(t)){let r=t.rule.ref;if(!r)throw new Error("Missing rule reference.");return Wu(h1(r.definition),{cardinality:t.cardinality,lookahead:t.lookahead})}else{if(lO(t))return QWe(t);if(fO(t))return KWe(t);if(cO(t)){let r=t.regex.lastIndexOf("/"),n=t.regex.substring(1,r),i=t.regex.substring(r+1);return e&&(e.i=i.includes("i"),e.s=i.includes("s"),e.u=i.includes("u")),Wu(n,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}else{if(dO(t))return Wu(OO,{cardinality:t.cardinality,lookahead:t.lookahead});throw new Error(`Invalid terminal element: ${t?.$type}`)}}}function XWe(t){return Wu(t.elements.map(e=>h1(e)).join("|"),{cardinality:t.cardinality,lookahead:t.lookahead})}function jWe(t){return Wu(t.elements.map(e=>h1(e)).join(""),{cardinality:t.cardinality,lookahead:t.lookahead})}function KWe(t){return Wu(`${OO}*?${h1(t.terminal)}`,{cardinality:t.cardinality,lookahead:t.lookahead})}function QWe(t){return Wu(`(?!${h1(t.terminal)})${OO}*?`,{cardinality:t.cardinality,lookahead:t.lookahead})}function ZWe(t){return t.right?Wu(`[${SO(t.left)}-${SO(t.right)}]`,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1}):Wu(SO(t.left),{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}function SO(t){return Fp(t.value)}function Wu(t,e){var r;return(e.wrap!==!1||e.lookahead)&&(t=`(${(r=e.lookahead)!==null&&r!==void 0?r:""}${t})`),e.cardinality?`${t}${e.cardinality}`:t}var OO,zl=N(()=>{"use strict";NE();Hc();Pl();hs();Bl();l1();o(Ufe,"getEntryRule");o(Hfe,"getHiddenRules");o(Yx,"getAllReachableRules");o(qfe,"ruleDfs");o(AO,"getCrossReferenceTerminal");o(_O,"isCommentTerminal");o(DO,"findNodesForProperty");o(Xx,"findNodeForProperty");o(LO,"findNodesForPropertyInternal");o(VWe,"findNodesForKeyword");o(RO,"findNodeForKeyword");o(NO,"findNodesForKeywordInternal");o(MO,"findAssignment");o(qE,"findNameAssignment");o(Wfe,"findNameAssignmentInternal");o(Yfe,"getActionAtElement");o(UWe,"isOptionalCardinality");o(HWe,"isArrayCardinality");o(qWe,"isArrayOperator");o(jx,"isDataTypeRule");o(Xfe,"isDataTypeRuleInternal");o(WWe,"isDataType");o(CO,"isDataTypeInternal");o(c1,"getExplicitRuleType");o(Kx,"getTypeName");o(jfe,"getActionType");o(YWe,"getRuleTypeName");o(IO,"getRuleType");o(u1,"terminalRegex");OO=/[\s\S]/.source;o(h1,"abstractElementToRegex");o(XWe,"terminalAlternativesToRegex");o(jWe,"terminalGroupToRegex");o(KWe,"untilTokenToRegex");o(QWe,"negateTokenToRegex");o(ZWe,"characterRangeToRegex");o(SO,"keywordToRegex");o(Wu,"withCardinality")});function PO(t){let e=[],r=t.Grammar;for(let n of r.rules)mo(n)&&_O(n)&&wO(u1(n))&&e.push(n.name);return{multilineCommentRules:e,nameRegexp:LE}}var BO=N(()=>{"use strict";Bl();zl();l1();Hc();o(PO,"createGrammarConfig")});var FO=N(()=>{"use strict"});function f1(t){console&&console.error&&console.error(`Error: ${t}`)}function Qx(t){console&&console.warn&&console.warn(`Warning: ${t}`)}var Kfe=N(()=>{"use strict";o(f1,"PRINT_ERROR");o(Qx,"PRINT_WARNING")});function Zx(t){let e=new Date().getTime(),r=t();return{time:new Date().getTime()-e,value:r}}var Qfe=N(()=>{"use strict";o(Zx,"timer")});function Jx(t){function e(){}o(e,"FakeConstructor"),e.prototype=t;let r=new e;function n(){return typeof r.bar}return o(n,"fakeAccess"),n(),n(),t;(0,eval)(t)}var Zfe=N(()=>{"use strict";o(Jx,"toFastProperties")});var d1=N(()=>{"use strict";Kfe();Qfe();Zfe()});function JWe(t){return eYe(t)?t.LABEL:t.name}function eYe(t){return xi(t.LABEL)&&t.LABEL!==""}function YE(t){return rt(t,p1)}function p1(t){function e(r){return rt(r,p1)}if(o(e,"convertDefinition"),t instanceof fn){let r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return xi(t.label)&&(r.label=t.label),r}else{if(t instanceof Pn)return{type:"Alternative",definition:e(t.definition)};if(t instanceof dn)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof Bn)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Fn)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:p1(new Ar({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof _n)return{type:"RepetitionWithSeparator",idx:t.idx,separator:p1(new Ar({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof zr)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof Dn)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof Ar){let r={type:"Terminal",name:t.terminalType.name,label:JWe(t.terminalType),idx:t.idx};xi(t.label)&&(r.terminalLabel=t.label);let n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=Uo(n)?n.source:n),r}else{if(t instanceof fs)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}var go,fn,fs,Pn,dn,Bn,Fn,zr,_n,Dn,Ar,XE=N(()=>{"use strict";Yt();o(JWe,"tokenLabel");o(eYe,"hasTokenLabel");go=class{static{o(this,"AbstractProduction")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),Ae(this.definition,r=>{r.accept(e)})}},fn=class extends go{static{o(this,"NonTerminal")}constructor(e){super([]),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},fs=class extends go{static{o(this,"Rule")}constructor(e){super(e.definition),this.orgText="",pa(this,Vs(e,r=>r!==void 0))}},Pn=class extends go{static{o(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,pa(this,Vs(e,r=>r!==void 0))}},dn=class extends go{static{o(this,"Option")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},Bn=class extends go{static{o(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},Fn=class extends go{static{o(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},zr=class extends go{static{o(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},_n=class extends go{static{o(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},Dn=class extends go{static{o(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,pa(this,Vs(e,r=>r!==void 0))}},Ar=class{static{o(this,"Terminal")}constructor(e){this.idx=1,pa(this,Vs(e,r=>r!==void 0))}accept(e){e.visit(this)}};o(YE,"serializeGrammar");o(p1,"serializeProduction")});var ds,Jfe=N(()=>{"use strict";XE();ds=class{static{o(this,"GAstVisitor")}visit(e){let r=e;switch(r.constructor){case fn:return this.visitNonTerminal(r);case Pn:return this.visitAlternative(r);case dn:return this.visitOption(r);case Bn:return this.visitRepetitionMandatory(r);case Fn:return this.visitRepetitionMandatoryWithSeparator(r);case _n:return this.visitRepetitionWithSeparator(r);case zr:return this.visitRepetition(r);case Dn:return this.visitAlternation(r);case Ar:return this.visitTerminal(r);case fs:return this.visitRule(r);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}});function $O(t){return t instanceof Pn||t instanceof dn||t instanceof zr||t instanceof Bn||t instanceof Fn||t instanceof _n||t instanceof Ar||t instanceof fs}function $p(t,e=[]){return t instanceof dn||t instanceof zr||t instanceof _n?!0:t instanceof Dn?z2(t.definition,n=>$p(n,e)):t instanceof fn&&jn(e,t)?!1:t instanceof go?(t instanceof fn&&e.push(t),Pa(t.definition,n=>$p(n,e))):!1}function zO(t){return t instanceof Dn}function Xs(t){if(t instanceof fn)return"SUBRULE";if(t instanceof dn)return"OPTION";if(t instanceof Dn)return"OR";if(t instanceof Bn)return"AT_LEAST_ONE";if(t instanceof Fn)return"AT_LEAST_ONE_SEP";if(t instanceof _n)return"MANY_SEP";if(t instanceof zr)return"MANY";if(t instanceof Ar)return"CONSUME";throw Error("non exhaustive match")}var ede=N(()=>{"use strict";Yt();XE();o($O,"isSequenceProd");o($p,"isOptionalProd");o(zO,"isBranchingProd");o(Xs,"getProductionDslName")});var ps=N(()=>{"use strict";XE();Jfe();ede()});function tde(t,e,r){return[new dn({definition:[new Ar({terminalType:t.separator})].concat(t.definition)})].concat(e,r)}var Yu,jE=N(()=>{"use strict";Yt();ps();Yu=class{static{o(this,"RestWalker")}walk(e,r=[]){Ae(e.definition,(n,i)=>{let a=yi(e.definition,i+1);if(n instanceof fn)this.walkProdRef(n,a,r);else if(n instanceof Ar)this.walkTerminal(n,a,r);else if(n instanceof Pn)this.walkFlat(n,a,r);else if(n instanceof dn)this.walkOption(n,a,r);else if(n instanceof Bn)this.walkAtLeastOne(n,a,r);else if(n instanceof Fn)this.walkAtLeastOneSep(n,a,r);else if(n instanceof _n)this.walkManySep(n,a,r);else if(n instanceof zr)this.walkMany(n,a,r);else if(n instanceof Dn)this.walkOr(n,a,r);else throw Error("non exhaustive match")})}walkTerminal(e,r,n){}walkProdRef(e,r,n){}walkFlat(e,r,n){let i=r.concat(n);this.walk(e,i)}walkOption(e,r,n){let i=r.concat(n);this.walk(e,i)}walkAtLeastOne(e,r,n){let i=[new dn({definition:e.definition})].concat(r,n);this.walk(e,i)}walkAtLeastOneSep(e,r,n){let i=tde(e,r,n);this.walk(e,i)}walkMany(e,r,n){let i=[new dn({definition:e.definition})].concat(r,n);this.walk(e,i)}walkManySep(e,r,n){let i=tde(e,r,n);this.walk(e,i)}walkOr(e,r,n){let i=r.concat(n);Ae(e.definition,a=>{let s=new Pn({definition:[a]});this.walk(s,i)})}};o(tde,"restForRepetitionWithSeparator")});function zp(t){if(t instanceof fn)return zp(t.referencedRule);if(t instanceof Ar)return nYe(t);if($O(t))return tYe(t);if(zO(t))return rYe(t);throw Error("non exhaustive match")}function tYe(t){let e=[],r=t.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=$p(a),e=e.concat(zp(a)),n=n+1,i=r.length>n;return qm(e)}function rYe(t){let e=rt(t.definition,r=>zp(r));return qm(Qr(e))}function nYe(t){return[t.terminalType]}var GO=N(()=>{"use strict";Yt();ps();o(zp,"first");o(tYe,"firstForSequence");o(rYe,"firstForBranching");o(nYe,"firstForTerminal")});var KE,VO=N(()=>{"use strict";KE="_~IN~_"});function rde(t){let e={};return Ae(t,r=>{let n=new UO(r).startWalking();pa(e,n)}),e}function iYe(t,e){return t.name+e+KE}var UO,nde=N(()=>{"use strict";jE();GO();Yt();VO();ps();UO=class extends Yu{static{o(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,r,n){}walkProdRef(e,r,n){let i=iYe(e.referencedRule,e.idx)+this.topProd.name,a=r.concat(n),s=new Pn({definition:a}),l=zp(s);this.follows[i]=l}};o(rde,"computeAllProdsFollows");o(iYe,"buildBetweenProdsFollowPrefix")});function m1(t){let e=t.toString();if(QE.hasOwnProperty(e))return QE[e];{let r=aYe.pattern(e);return QE[e]=r,r}}function ide(){QE={}}var QE,aYe,ZE=N(()=>{"use strict";Wx();QE={},aYe=new Pp;o(m1,"getRegExpAst");o(ide,"clearRegExpParserCache")});function ode(t,e=!1){try{let r=m1(t);return HO(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===sde)e&&Qx(`${eb} Unable to optimize: < ${t.toString()} > Complement Sets cannot be automatically optimized. This will disable the lexer's first char optimizations. See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";e&&(n=` This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),Ig(`${nx} + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),f1(`${eb} Failed parsing: < ${t.toString()} > Using the @chevrotain/regexp-to-ast library - Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function TN(t,e,r){switch(t.type){case"Disjunction":for(let i=0;i{if(typeof u=="number")Rk(u,e,r);else{let h=u;if(r===!0)for(let f=h.from;f<=h.to;f++)Rk(f,e,r);else{for(let f=h.from;f<=h.to&&f=Fg){let f=h.from>=Fg?h.from:Fg,d=h.to,p=Ic(f),m=Ic(d);for(let g=p;g<=m;g++)e[g]=g}}}});break;case"Group":TN(s.value,e,r);break;default:throw Error("Non Exhaustive Match")}let l=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&kN(s)===!1||s.type!=="Group"&&l===!1)break}break;default:throw Error("non exhaustive match!")}return br(e)}function Rk(t,e,r){let n=Ic(t);e[n]=n,r===!0&&kPe(t,e)}function kPe(t,e){let r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){let i=Ic(n.charCodeAt(0));e[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=Ic(i.charCodeAt(0));e[a]=a}}}function Bae(t,e){return ns(t.value,r=>{if(typeof r=="number")return qn(e,r);{let n=r;return ns(e,i=>n.from<=i&&i<=n.to)!==void 0}})}function kN(t){let e=t.quantifier;return e&&e.atLeast===0?!0:t.value?Pt(t.value)?Ma(t.value,kN):kN(t.value):!1}function Nk(t,e){if(e instanceof RegExp){let r=Bg(e),n=new EN(t);return n.visit(r),n.found}else return ns(e,r=>qn(t,r.charCodeAt(0)))!==void 0}var Fae,nx,EN,zae=N(()=>{"use strict";j2();qt();Og();Lk();SN();Fae="Complement Sets are not supported for first char optimization",nx=`Unable to use "first char" lexer optimizations: -`;o($ae,"getOptimizedStartCodesIndices");o(TN,"firstCharOptimizedIndices");o(Rk,"addOptimizedIdxToResult");o(kPe,"handleIgnoreCase");o(Bae,"findCode");o(kN,"isWholeOptional");EN=class extends Mc{static{o(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return}super.visitChildren(e)}}visitCharacter(e){qn(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?Bae(e,this.targetCharCodes)===void 0&&(this.found=!0):Bae(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};o(Nk,"canMatchCharCode")});function Uae(t,e){e=Qh(e,{useSticky:AN,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:o((b,w)=>w(),"tracer")});let r=e.tracer;r("initCharCodeToOptimizedIndexMap",()=>{GPe()});let n;r("Reject Lexer.NA",()=>{n=Jh(t,b=>b[lp]===Xn.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=Je(n,b=>{let w=b[lp];if(zo(w)){let C=w.source;return C.length===1&&C!=="^"&&C!=="$"&&C!=="."&&!w.ignoreCase?C:C.length===2&&C[0]==="\\"&&!qn(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],C[1])?C[1]:e.useSticky?Vae(w):Gae(w)}else{if(Si(w))return i=!0,{exec:w};if(typeof w=="object")return i=!0,w;if(typeof w=="string"){if(w.length===1)return w;{let C=w.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),T=new RegExp(C);return e.useSticky?Vae(T):Gae(T)}}else throw Error("non exhaustive match")}})});let s,l,u,h,f;r("misc mapping",()=>{s=Je(n,b=>b.tokenTypeIdx),l=Je(n,b=>{let w=b.GROUP;if(w!==Xn.SKIPPED){if(yi(w))return w;if(pr(w))return!1;throw Error("non exhaustive match")}}),u=Je(n,b=>{let w=b.LONGER_ALT;if(w)return Pt(w)?Je(w,T=>UT(n,T)):[UT(n,w)]}),h=Je(n,b=>b.PUSH_MODE),f=Je(n,b=>Bt(b,"POP_MODE"))});let d;r("Line Terminator Handling",()=>{let b=Qae(e.lineTerminatorCharacters);d=Je(n,w=>!1),e.positionTracking!=="onlyOffset"&&(d=Je(n,w=>Bt(w,"LINE_BREAKS")?!!w.LINE_BREAKS:Kae(w,b)===!1&&Nk(b,w.PATTERN)))});let p,m,g,y;r("Misc Mapping #2",()=>{p=Je(n,Xae),m=Je(a,$Pe),g=Xr(n,(b,w)=>{let C=w.GROUP;return yi(C)&&C!==Xn.SKIPPED&&(b[C]=[]),b},{}),y=Je(a,(b,w)=>({pattern:a[w],longerAlt:u[w],canLineTerminator:d[w],isCustom:p[w],short:m[w],group:l[w],push:h[w],pop:f[w],tokenTypeIdx:s[w],tokenType:n[w]}))});let v=!0,x=[];return e.safeMode||r("First Char Optimization",()=>{x=Xr(n,(b,w,C)=>{if(typeof w.PATTERN=="string"){let T=w.PATTERN.charCodeAt(0),E=Ic(T);CN(b,E,y[C])}else if(Pt(w.START_CHARS_HINT)){let T;Ae(w.START_CHARS_HINT,E=>{let A=typeof E=="string"?E.charCodeAt(0):E,S=Ic(A);T!==S&&(T=S,CN(b,S,y[C]))})}else if(zo(w.PATTERN))if(w.PATTERN.unicode)v=!1,e.ensureOptimizations&&Ig(`${nx} Unable to analyze < ${w.PATTERN.toString()} > pattern. + Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function HO(t,e,r){switch(t.type){case"Disjunction":for(let i=0;i{if(typeof u=="number")JE(u,e,r);else{let h=u;if(r===!0)for(let f=h.from;f<=h.to;f++)JE(f,e,r);else{for(let f=h.from;f<=h.to&&f=g1){let f=h.from>=g1?h.from:g1,d=h.to,p=Yc(f),m=Yc(d);for(let g=p;g<=m;g++)e[g]=g}}}});break;case"Group":HO(s.value,e,r);break;default:throw Error("Non Exhaustive Match")}let l=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&qO(s)===!1||s.type!=="Group"&&l===!1)break}break;default:throw Error("non exhaustive match!")}return kr(e)}function JE(t,e,r){let n=Yc(t);e[n]=n,r===!0&&sYe(t,e)}function sYe(t,e){let r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){let i=Yc(n.charCodeAt(0));e[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=Yc(i.charCodeAt(0));e[a]=a}}}function ade(t,e){return os(t.value,r=>{if(typeof r=="number")return jn(e,r);{let n=r;return os(e,i=>n.from<=i&&i<=n.to)!==void 0}})}function qO(t){let e=t.quantifier;return e&&e.atLeast===0?!0:t.value?Bt(t.value)?Pa(t.value,qO):qO(t.value):!1}function eS(t,e){if(e instanceof RegExp){let r=m1(e),n=new WO(t);return n.visit(r),n.found}else return os(e,r=>jn(t,r.charCodeAt(0)))!==void 0}var sde,eb,WO,lde=N(()=>{"use strict";Wx();Yt();d1();ZE();YO();sde="Complement Sets are not supported for first char optimization",eb=`Unable to use "first char" lexer optimizations: +`;o(ode,"getOptimizedStartCodesIndices");o(HO,"firstCharOptimizedIndices");o(JE,"addOptimizedIdxToResult");o(sYe,"handleIgnoreCase");o(ade,"findCode");o(qO,"isWholeOptional");WO=class extends Wc{static{o(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return}super.visitChildren(e)}}visitCharacter(e){jn(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?ade(e,this.targetCharCodes)===void 0&&(this.found=!0):ade(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};o(eS,"canMatchCharCode")});function hde(t,e){e=of(e,{useSticky:jO,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:o((b,T)=>T(),"tracer")});let r=e.tracer;r("initCharCodeToOptimizedIndexMap",()=>{EYe()});let n;r("Reject Lexer.NA",()=>{n=cf(t,b=>b[Gp]===Zn.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=rt(n,b=>{let T=b[Gp];if(Uo(T)){let S=T.source;return S.length===1&&S!=="^"&&S!=="$"&&S!=="."&&!T.ignoreCase?S:S.length===2&&S[0]==="\\"&&!jn(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],S[1])?S[1]:e.useSticky?ude(T):cde(T)}else{if(Si(T))return i=!0,{exec:T};if(typeof T=="object")return i=!0,T;if(typeof T=="string"){if(T.length===1)return T;{let S=T.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),w=new RegExp(S);return e.useSticky?ude(w):cde(w)}}else throw Error("non exhaustive match")}})});let s,l,u,h,f;r("misc mapping",()=>{s=rt(n,b=>b.tokenTypeIdx),l=rt(n,b=>{let T=b.GROUP;if(T!==Zn.SKIPPED){if(xi(T))return T;if(xr(T))return!1;throw Error("non exhaustive match")}}),u=rt(n,b=>{let T=b.LONGER_ALT;if(T)return Bt(T)?rt(T,w=>ck(n,w)):[ck(n,T)]}),h=rt(n,b=>b.PUSH_MODE),f=rt(n,b=>Ft(b,"POP_MODE"))});let d;r("Line Terminator Handling",()=>{let b=xde(e.lineTerminatorCharacters);d=rt(n,T=>!1),e.positionTracking!=="onlyOffset"&&(d=rt(n,T=>Ft(T,"LINE_BREAKS")?!!T.LINE_BREAKS:vde(T,b)===!1&&eS(b,T.PATTERN)))});let p,m,g,y;r("Misc Mapping #2",()=>{p=rt(n,gde),m=rt(a,wYe),g=Jr(n,(b,T)=>{let S=T.GROUP;return xi(S)&&S!==Zn.SKIPPED&&(b[S]=[]),b},{}),y=rt(a,(b,T)=>({pattern:a[T],longerAlt:u[T],canLineTerminator:d[T],isCustom:p[T],short:m[T],group:l[T],push:h[T],pop:f[T],tokenTypeIdx:s[T],tokenType:n[T]}))});let v=!0,x=[];return e.safeMode||r("First Char Optimization",()=>{x=Jr(n,(b,T,S)=>{if(typeof T.PATTERN=="string"){let w=T.PATTERN.charCodeAt(0),k=Yc(w);XO(b,k,y[S])}else if(Bt(T.START_CHARS_HINT)){let w;Ae(T.START_CHARS_HINT,k=>{let A=typeof k=="string"?k.charCodeAt(0):k,C=Yc(A);w!==C&&(w=C,XO(b,C,y[S]))})}else if(Uo(T.PATTERN))if(T.PATTERN.unicode)v=!1,e.ensureOptimizations&&f1(`${eb} Unable to analyze < ${T.PATTERN.toString()} > pattern. The regexp unicode flag is not currently supported by the regexp-to-ast library. This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let T=$ae(w.PATTERN,e.ensureOptimizations);ur(T)&&(v=!1),Ae(T,E=>{CN(b,E,y[C])})}else e.ensureOptimizations&&Ig(`${nx} TokenType: <${w.name}> is using a custom token pattern without providing parameter. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let w=ode(T.PATTERN,e.ensureOptimizations);mr(w)&&(v=!1),Ae(w,k=>{XO(b,k,y[S])})}else e.ensureOptimizations&&f1(`${eb} TokenType: <${T.name}> is using a custom token pattern without providing parameter. This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),v=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:y,charCodeToPatternIdxToConfig:x,hasCustom:i,canBeOptimized:v}}function Hae(t,e){let r=[],n=SPe(t);r=r.concat(n.errors);let i=CPe(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(EPe(a)),r=r.concat(IPe(a)),r=r.concat(OPe(a,e)),r=r.concat(PPe(a)),r}function EPe(t){let e=[],r=Yr(t,n=>zo(n[lp]));return e=e.concat(_Pe(r)),e=e.concat(RPe(r)),e=e.concat(NPe(r)),e=e.concat(MPe(r)),e=e.concat(DPe(r)),e}function SPe(t){let e=Yr(t,i=>!Bt(i,lp)),r=Je(e,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Yn.MISSING_PATTERN,tokenTypes:[i]})),n=Zh(t,e);return{errors:r,valid:n}}function CPe(t){let e=Yr(t,i=>{let a=i[lp];return!zo(a)&&!Si(a)&&!Bt(a,"exec")&&!yi(a)}),r=Je(e,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Yn.INVALID_PATTERN,tokenTypes:[i]})),n=Zh(t,e);return{errors:r,valid:n}}function _Pe(t){class e extends Mc{static{o(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=Yr(t,i=>{let a=i.PATTERN;try{let s=Bg(a),l=new e;return l.visit(s),l.found}catch{return APe.test(a.source)}});return Je(r,i=>({message:`Unexpected RegExp Anchor Error: + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),v=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:y,charCodeToPatternIdxToConfig:x,hasCustom:i,canBeOptimized:v}}function fde(t,e){let r=[],n=lYe(t);r=r.concat(n.errors);let i=cYe(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(oYe(a)),r=r.concat(yYe(a)),r=r.concat(vYe(a,e)),r=r.concat(xYe(a)),r}function oYe(t){let e=[],r=Zr(t,n=>Uo(n[Gp]));return e=e.concat(hYe(r)),e=e.concat(pYe(r)),e=e.concat(mYe(r)),e=e.concat(gYe(r)),e=e.concat(fYe(r)),e}function lYe(t){let e=Zr(t,i=>!Ft(i,Gp)),r=rt(e,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Qn.MISSING_PATTERN,tokenTypes:[i]})),n=lf(t,e);return{errors:r,valid:n}}function cYe(t){let e=Zr(t,i=>{let a=i[Gp];return!Uo(a)&&!Si(a)&&!Ft(a,"exec")&&!xi(a)}),r=rt(e,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Qn.INVALID_PATTERN,tokenTypes:[i]})),n=lf(t,e);return{errors:r,valid:n}}function hYe(t){class e extends Wc{static{o(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=Zr(t,i=>{let a=i.PATTERN;try{let s=m1(a),l=new e;return l.visit(s),l.found}catch{return uYe.test(a.source)}});return rt(r,i=>({message:`Unexpected RegExp Anchor Error: Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Yn.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function DPe(t){let e=Yr(t,n=>n.PATTERN.test(""));return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Yn.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}function RPe(t){class e extends Mc{static{o(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=Yr(t,i=>{let a=i.PATTERN;try{let s=Bg(a),l=new e;return l.visit(s),l.found}catch{return LPe.test(a.source)}});return Je(r,i=>({message:`Unexpected RegExp Anchor Error: + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Qn.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function fYe(t){let e=Zr(t,n=>n.PATTERN.test(""));return rt(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Qn.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}function pYe(t){class e extends Wc{static{o(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=Zr(t,i=>{let a=i.PATTERN;try{let s=m1(a),l=new e;return l.visit(s),l.found}catch{return dYe.test(a.source)}});return rt(r,i=>({message:`Unexpected RegExp Anchor Error: Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Yn.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function NPe(t){let e=Yr(t,n=>{let i=n[lp];return i instanceof RegExp&&(i.multiline||i.global)});return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Yn.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function MPe(t){let e=[],r=Je(t,a=>Xr(t,(s,l)=>(a.PATTERN.source===l.PATTERN.source&&!qn(e,l)&&l.PATTERN!==Xn.NA&&(e.push(l),s.push(l)),s),[]));r=Tc(r);let n=Yr(r,a=>a.length>1);return Je(n,a=>{let s=Je(a,u=>u.name);return{message:`The same RegExp pattern ->${ia(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:Yn.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function IPe(t){let e=Yr(t,n=>{if(!Bt(n,"GROUP"))return!1;let i=n.GROUP;return i!==Xn.SKIPPED&&i!==Xn.NA&&!yi(i)});return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Yn.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function OPe(t,e){let r=Yr(t,i=>i.PUSH_MODE!==void 0&&!qn(e,i.PUSH_MODE));return Je(r,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:Yn.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function PPe(t){let e=[],r=Xr(t,(n,i,a)=>{let s=i.PATTERN;return s===Xn.NA||(yi(s)?n.push({str:s,idx:a,tokenType:i}):zo(s)&&FPe(s)&&n.push({str:s.source,idx:a,tokenType:i})),n},[]);return Ae(t,(n,i)=>{Ae(r,({str:a,idx:s,tokenType:l})=>{if(i${l.name}<- can never be matched. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Qn.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function mYe(t){let e=Zr(t,n=>{let i=n[Gp];return i instanceof RegExp&&(i.multiline||i.global)});return rt(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Qn.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function gYe(t){let e=[],r=rt(t,a=>Jr(t,(s,l)=>(a.PATTERN.source===l.PATTERN.source&&!jn(e,l)&&l.PATTERN!==Zn.NA&&(e.push(l),s.push(l)),s),[]));r=_c(r);let n=Zr(r,a=>a.length>1);return rt(n,a=>{let s=rt(a,u=>u.name);return{message:`The same RegExp pattern ->${ea(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:Qn.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function yYe(t){let e=Zr(t,n=>{if(!Ft(n,"GROUP"))return!1;let i=n.GROUP;return i!==Zn.SKIPPED&&i!==Zn.NA&&!xi(i)});return rt(e,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Qn.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function vYe(t,e){let r=Zr(t,i=>i.PUSH_MODE!==void 0&&!jn(e,i.PUSH_MODE));return rt(r,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:Qn.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function xYe(t){let e=[],r=Jr(t,(n,i,a)=>{let s=i.PATTERN;return s===Zn.NA||(xi(s)?n.push({str:s,idx:a,tokenType:i}):Uo(s)&&TYe(s)&&n.push({str:s.source,idx:a,tokenType:i})),n},[]);return Ae(t,(n,i)=>{Ae(r,({str:a,idx:s,tokenType:l})=>{if(i${l.name}<- can never be matched. Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:u,type:Yn.UNREACHABLE_PATTERN,tokenTypes:[n,l]})}})}),e}function BPe(t,e){if(zo(e)){let r=e.exec(t);return r!==null&&r.index===0}else{if(Si(e))return e(t,0,[],{});if(Bt(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function FPe(t){return ns([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>t.source.indexOf(r)!==-1)===void 0}function Gae(t){let e=t.ignoreCase?"i":"";return new RegExp(`^(?:${t.source})`,e)}function Vae(t){let e=t.ignoreCase?"iy":"y";return new RegExp(`${t.source}`,e)}function Wae(t,e,r){let n=[];return Bt(t,$g)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+$g+`> property in its definition -`,type:Yn.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),Bt(t,Mk)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+Mk+`> property in its definition -`,type:Yn.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),Bt(t,Mk)&&Bt(t,$g)&&!Bt(t.modes,t.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${$g}: <${t.defaultMode}>which does not exist -`,type:Yn.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),Bt(t,Mk)&&Ae(t.modes,(i,a)=>{Ae(i,(s,l)=>{if(pr(s))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}> -`,type:Yn.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(Bt(s,"LONGER_ALT")){let u=Pt(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];Ae(u,h=>{!pr(h)&&!qn(i,h)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}> -`,type:Yn.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function qae(t,e,r){let n=[],i=!1,a=Tc(qr(br(t.modes))),s=Jh(a,u=>u[lp]===Xn.NA),l=Qae(r);return e&&Ae(s,u=>{let h=Kae(u,l);if(h!==!1){let d={message:zPe(u,h),type:h.issue,tokenType:u};n.push(d)}else Bt(u,"LINE_BREAKS")?u.LINE_BREAKS===!0&&(i=!0):Nk(l,u.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:u,type:Qn.UNREACHABLE_PATTERN,tokenTypes:[n,l]})}})}),e}function bYe(t,e){if(Uo(e)){let r=e.exec(t);return r!==null&&r.index===0}else{if(Si(e))return e(t,0,[],{});if(Ft(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function TYe(t){return os([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>t.source.indexOf(r)!==-1)===void 0}function cde(t){let e=t.ignoreCase?"i":"";return new RegExp(`^(?:${t.source})`,e)}function ude(t){let e=t.ignoreCase?"iy":"y";return new RegExp(`${t.source}`,e)}function dde(t,e,r){let n=[];return Ft(t,y1)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+y1+`> property in its definition +`,type:Qn.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),Ft(t,tS)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+tS+`> property in its definition +`,type:Qn.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),Ft(t,tS)&&Ft(t,y1)&&!Ft(t.modes,t.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${y1}: <${t.defaultMode}>which does not exist +`,type:Qn.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),Ft(t,tS)&&Ae(t.modes,(i,a)=>{Ae(i,(s,l)=>{if(xr(s))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}> +`,type:Qn.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(Ft(s,"LONGER_ALT")){let u=Bt(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];Ae(u,h=>{!xr(h)&&!jn(i,h)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}> +`,type:Qn.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function pde(t,e,r){let n=[],i=!1,a=_c(Qr(kr(t.modes))),s=cf(a,u=>u[Gp]===Zn.NA),l=xde(r);return e&&Ae(s,u=>{let h=vde(u,l);if(h!==!1){let d={message:kYe(u,h),type:h.issue,tokenType:u};n.push(d)}else Ft(u,"LINE_BREAKS")?u.LINE_BREAKS===!0&&(i=!0):eS(l,u.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found. This Lexer has been defined to track line and column information, But none of the Token Types can be identified as matching a line terminator. See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:Yn.NO_LINE_BREAKS_FLAGS}),n}function Yae(t){let e={},r=zr(t);return Ae(r,n=>{let i=t[n];if(Pt(i))e[n]=[];else throw Error("non exhaustive match")}),e}function Xae(t){let e=t.PATTERN;if(zo(e))return!1;if(Si(e))return!0;if(Bt(e,"exec"))return!0;if(yi(e))return!1;throw Error("non exhaustive match")}function $Pe(t){return yi(t)&&t.length===1?t.charCodeAt(0):!1}function Kae(t,e){if(Bt(t,"LINE_BREAKS"))return!1;if(zo(t.PATTERN)){try{Nk(e,t.PATTERN)}catch(r){return{issue:Yn.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(yi(t.PATTERN))return!1;if(Xae(t))return{issue:Yn.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function zPe(t,e){if(e.issue===Yn.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern. + for details.`,type:Qn.NO_LINE_BREAKS_FLAGS}),n}function mde(t){let e={},r=qr(t);return Ae(r,n=>{let i=t[n];if(Bt(i))e[n]=[];else throw Error("non exhaustive match")}),e}function gde(t){let e=t.PATTERN;if(Uo(e))return!1;if(Si(e))return!0;if(Ft(e,"exec"))return!0;if(xi(e))return!1;throw Error("non exhaustive match")}function wYe(t){return xi(t)&&t.length===1?t.charCodeAt(0):!1}function vde(t,e){if(Ft(t,"LINE_BREAKS"))return!1;if(Uo(t.PATTERN)){try{eS(e,t.PATTERN)}catch(r){return{issue:Qn.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(xi(t.PATTERN))return!1;if(gde(t))return{issue:Qn.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function kYe(t,e){if(e.issue===Qn.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern. The problem is in the <${t.name}> Token Type Root cause: ${e.errMsg}. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===Yn.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===Qn.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. The problem is in the <${t.name}> Token Type - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function Qae(t){return Je(t,r=>yi(r)?r.charCodeAt(0):r)}function CN(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Ic(t){return t255?255+~~(t/255):t}}var lp,$g,Mk,AN,APe,LPe,jae,Fg,Ik,SN=N(()=>{"use strict";j2();ix();qt();Og();zae();Lk();lp="PATTERN",$g="defaultMode",Mk="modes",AN=typeof new RegExp("(?:)").sticky=="boolean";o(Uae,"analyzeTokenTypes");o(Hae,"validatePatterns");o(EPe,"validateRegExpPattern");o(SPe,"findMissingPatterns");o(CPe,"findInvalidPatterns");APe=/[^\\][$]/;o(_Pe,"findEndOfInputAnchor");o(DPe,"findEmptyMatchRegExps");LPe=/[^\\[][\^]|^\^/;o(RPe,"findStartOfInputAnchor");o(NPe,"findUnsupportedFlags");o(MPe,"findDuplicatePatterns");o(IPe,"findInvalidGroupType");o(OPe,"findModesThatDoNotExist");o(PPe,"findUnreachablePatterns");o(BPe,"testTokenType");o(FPe,"noMetaChar");o(Gae,"addStartOfInput");o(Vae,"addStickyFlag");o(Wae,"performRuntimeChecks");o(qae,"performWarningRuntimeChecks");o(Yae,"cloneEmptyGroups");o(Xae,"isCustomPattern");o($Pe,"isShortPattern");jae={test:o(function(t){let e=t.length;for(let r=this.lastIndex;r{r.isParent=r.categoryMatches.length>0})}function VPe(t){let e=an(t),r=t,n=!0;for(;n;){r=Tc(qr(Je(r,a=>a.CATEGORIES)));let i=Zh(r,e);e=e.concat(i),ur(i)?n=!1:r=i}return e}function UPe(t){Ae(t,e=>{_N(e)||(ese[Zae]=e,e.tokenTypeIdx=Zae++),Jae(e)&&!Pt(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Jae(e)||(e.CATEGORIES=[]),qPe(e)||(e.categoryMatches=[]),YPe(e)||(e.categoryMatchesMap={})})}function HPe(t){Ae(t,e=>{e.categoryMatches=[],Ae(e.categoryMatchesMap,(r,n)=>{e.categoryMatches.push(ese[n].tokenTypeIdx)})})}function WPe(t){Ae(t,e=>{tse([],e)})}function tse(t,e){Ae(t,r=>{e.categoryMatchesMap[r.tokenTypeIdx]=!0}),Ae(e.CATEGORIES,r=>{let n=t.concat(e);qn(n,r)||tse(n,r)})}function _N(t){return Bt(t,"tokenTypeIdx")}function Jae(t){return Bt(t,"CATEGORIES")}function qPe(t){return Bt(t,"categoryMatches")}function YPe(t){return Bt(t,"categoryMatchesMap")}function rse(t){return Bt(t,"tokenTypeIdx")}var Zae,ese,cp=N(()=>{"use strict";qt();o(Pu,"tokenStructuredMatcher");o(zg,"tokenStructuredMatcherNoCategories");Zae=1,ese={};o(Bu,"augmentTokenTypes");o(VPe,"expandCategories");o(UPe,"assignTokenDefaultProps");o(HPe,"assignCategoriesTokensProp");o(WPe,"assignCategoriesMapProp");o(tse,"singleAssignCategoriesToksMap");o(_N,"hasShortKeyProperty");o(Jae,"hasCategoriesProperty");o(qPe,"hasExtendingTokensTypesProperty");o(YPe,"hasExtendingTokensTypesMapProperty");o(rse,"isTokenType")});var Gg,DN=N(()=>{"use strict";Gg={buildUnableToPopLexerModeMessage(t){return`Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(t,e,r,n,i){return`unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${r} characters.`}}});var Yn,ax,Xn,ix=N(()=>{"use strict";SN();qt();Og();cp();DN();Lk();(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",t[t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(Yn||(Yn={}));ax={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:Gg,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(ax);Xn=class{static{o(this,"Lexer")}constructor(e,r=ax){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(i,a)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let s=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${i}>`);let{time:l,value:u}=tx(a),h=l>10?console.warn:console.log;return this.traceInitIndent time: ${l}ms`),this.traceInitIndent--,u}else return a()},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=ma({},ax,r);let n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let i,a=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===ax.lineTerminatorsPattern)this.config.lineTerminatorsPattern=jae;else if(this.config.lineTerminatorCharacters===ax.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),Pt(e)?i={modes:{defaultMode:an(e)},defaultMode:$g}:(a=!1,i=an(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Wae(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(qae(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},Ae(i.modes,(l,u)=>{i.modes[u]=Jh(l,h=>pr(h))});let s=zr(i.modes);if(Ae(i.modes,(l,u)=>{this.TRACE_INIT(`Mode: <${u}> processing`,()=>{if(this.modes.push(u),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Hae(l,s))}),ur(this.lexerDefinitionErrors)){Bu(l);let h;this.TRACE_INIT("analyzeTokenTypes",()=>{h=Uae(l,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[u]=h.patternIdxToConfig,this.charCodeToPatternIdxToConfig[u]=h.charCodeToPatternIdxToConfig,this.emptyGroups=ma({},this.emptyGroups,h.emptyGroups),this.hasCustom=h.hasCustom||this.hasCustom,this.canModeBeOptimized[u]=h.canBeOptimized}})}),this.defaultMode=i.defaultMode,!ur(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let u=Je(this.lexerDefinitionErrors,h=>h.message).join(`----------------------- + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function xde(t){return rt(t,r=>xi(r)?r.charCodeAt(0):r)}function XO(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Yc(t){return t255?255+~~(t/255):t}}var Gp,y1,tS,jO,uYe,dYe,yde,g1,rS,YO=N(()=>{"use strict";Wx();tb();Yt();d1();lde();ZE();Gp="PATTERN",y1="defaultMode",tS="modes",jO=typeof new RegExp("(?:)").sticky=="boolean";o(hde,"analyzeTokenTypes");o(fde,"validatePatterns");o(oYe,"validateRegExpPattern");o(lYe,"findMissingPatterns");o(cYe,"findInvalidPatterns");uYe=/[^\\][$]/;o(hYe,"findEndOfInputAnchor");o(fYe,"findEmptyMatchRegExps");dYe=/[^\\[][\^]|^\^/;o(pYe,"findStartOfInputAnchor");o(mYe,"findUnsupportedFlags");o(gYe,"findDuplicatePatterns");o(yYe,"findInvalidGroupType");o(vYe,"findModesThatDoNotExist");o(xYe,"findUnreachablePatterns");o(bYe,"testTokenType");o(TYe,"noMetaChar");o(cde,"addStartOfInput");o(ude,"addStickyFlag");o(dde,"performRuntimeChecks");o(pde,"performWarningRuntimeChecks");o(mde,"cloneEmptyGroups");o(gde,"isCustomPattern");o(wYe,"isShortPattern");yde={test:o(function(t){let e=t.length;for(let r=this.lastIndex;r{r.isParent=r.categoryMatches.length>0})}function SYe(t){let e=ln(t),r=t,n=!0;for(;n;){r=_c(Qr(rt(r,a=>a.CATEGORIES)));let i=lf(r,e);e=e.concat(i),mr(i)?n=!1:r=i}return e}function CYe(t){Ae(t,e=>{KO(e)||(wde[bde]=e,e.tokenTypeIdx=bde++),Tde(e)&&!Bt(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Tde(e)||(e.CATEGORIES=[]),DYe(e)||(e.categoryMatches=[]),LYe(e)||(e.categoryMatchesMap={})})}function AYe(t){Ae(t,e=>{e.categoryMatches=[],Ae(e.categoryMatchesMap,(r,n)=>{e.categoryMatches.push(wde[n].tokenTypeIdx)})})}function _Ye(t){Ae(t,e=>{kde([],e)})}function kde(t,e){Ae(t,r=>{e.categoryMatchesMap[r.tokenTypeIdx]=!0}),Ae(e.CATEGORIES,r=>{let n=t.concat(e);jn(n,r)||kde(n,r)})}function KO(t){return Ft(t,"tokenTypeIdx")}function Tde(t){return Ft(t,"CATEGORIES")}function DYe(t){return Ft(t,"categoryMatches")}function LYe(t){return Ft(t,"categoryMatchesMap")}function Ede(t){return Ft(t,"tokenTypeIdx")}var bde,wde,Vp=N(()=>{"use strict";Yt();o(Xu,"tokenStructuredMatcher");o(v1,"tokenStructuredMatcherNoCategories");bde=1,wde={};o(ju,"augmentTokenTypes");o(SYe,"expandCategories");o(CYe,"assignTokenDefaultProps");o(AYe,"assignCategoriesTokensProp");o(_Ye,"assignCategoriesMapProp");o(kde,"singleAssignCategoriesToksMap");o(KO,"hasShortKeyProperty");o(Tde,"hasCategoriesProperty");o(DYe,"hasExtendingTokensTypesProperty");o(LYe,"hasExtendingTokensTypesMapProperty");o(Ede,"isTokenType")});var x1,QO=N(()=>{"use strict";x1={buildUnableToPopLexerModeMessage(t){return`Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(t,e,r,n,i){return`unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${r} characters.`}}});var Qn,rb,Zn,tb=N(()=>{"use strict";YO();Yt();d1();Vp();QO();ZE();(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",t[t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(Qn||(Qn={}));rb={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:x1,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(rb);Zn=class{static{o(this,"Lexer")}constructor(e,r=rb){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(i,a)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let s=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${i}>`);let{time:l,value:u}=Zx(a),h=l>10?console.warn:console.log;return this.traceInitIndent time: ${l}ms`),this.traceInitIndent--,u}else return a()},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=pa({},rb,r);let n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let i,a=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===rb.lineTerminatorsPattern)this.config.lineTerminatorsPattern=yde;else if(this.config.lineTerminatorCharacters===rb.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),Bt(e)?i={modes:{defaultMode:ln(e)},defaultMode:y1}:(a=!1,i=ln(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(dde(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(pde(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},Ae(i.modes,(l,u)=>{i.modes[u]=cf(l,h=>xr(h))});let s=qr(i.modes);if(Ae(i.modes,(l,u)=>{this.TRACE_INIT(`Mode: <${u}> processing`,()=>{if(this.modes.push(u),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(fde(l,s))}),mr(this.lexerDefinitionErrors)){ju(l);let h;this.TRACE_INIT("analyzeTokenTypes",()=>{h=hde(l,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[u]=h.patternIdxToConfig,this.charCodeToPatternIdxToConfig[u]=h.charCodeToPatternIdxToConfig,this.emptyGroups=pa({},this.emptyGroups,h.emptyGroups),this.hasCustom=h.hasCustom||this.hasCustom,this.canModeBeOptimized[u]=h.canBeOptimized}})}),this.defaultMode=i.defaultMode,!mr(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let u=rt(this.lexerDefinitionErrors,h=>h.message).join(`----------------------- `);throw new Error(`Errors detected in definition of Lexer: -`+u)}Ae(this.lexerDefinitionWarning,l=>{ex(l.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(AN?(this.chopInput=ta,this.match=this.matchWithTest):(this.updateLastIndex=ni,this.match=this.matchWithExec),a&&(this.handleModes=ni),this.trackStartLines===!1&&(this.computeNewColumn=ta),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=ni),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let l=Xr(this.canModeBeOptimized,(u,h,f)=>(h===!1&&u.push(f),u),[]);if(r.ensureOptimizations&&!ur(l))throw Error(`Lexer Modes: < ${l.join(", ")} > cannot be optimized. +`+u)}Ae(this.lexerDefinitionWarning,l=>{Qx(l.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(jO?(this.chopInput=Qi,this.match=this.matchWithTest):(this.updateLastIndex=si,this.match=this.matchWithExec),a&&(this.handleModes=si),this.trackStartLines===!1&&(this.computeNewColumn=Qi),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=si),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let l=Jr(this.canModeBeOptimized,(u,h,f)=>(h===!1&&u.push(f),u),[]);if(r.ensureOptimizations&&!mr(l))throw Error(`Lexer Modes: < ${l.join(", ")} > cannot be optimized. Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{Pae()}),this.TRACE_INIT("toFastProperties",()=>{rx(this)})})}tokenize(e,r=this.defaultMode){if(!ur(this.lexerDefinitionErrors)){let i=Je(this.lexerDefinitionErrors,a=>a.message).join(`----------------------- + Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{ide()}),this.TRACE_INIT("toFastProperties",()=>{Jx(this)})})}tokenize(e,r=this.defaultMode){if(!mr(this.lexerDefinitionErrors)){let i=rt(this.lexerDefinitionErrors,a=>a.message).join(`----------------------- `);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+i)}return this.tokenizeInternal(e,r)}tokenizeInternal(e,r){let n,i,a,s,l,u,h,f,d,p,m,g,y,v,x,b,w=e,C=w.length,T=0,E=0,A=this.hasCustom?0:Math.floor(e.length/10),S=new Array(A),_=[],I=this.trackStartLines?1:void 0,D=this.trackStartLines?1:void 0,k=Yae(this.emptyGroups),L=this.trackStartLines,R=this.config.lineTerminatorsPattern,O=0,M=[],B=[],F=[],P=[];Object.freeze(P);let z;function $(){return M}o($,"getPossiblePatternsSlow");function H(le){let he=Ic(le),K=B[he];return K===void 0?P:K}o(H,"getPossiblePatternsOptimized");let Q=o(le=>{if(F.length===1&&le.tokenType.PUSH_MODE===void 0){let he=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(le);_.push({offset:le.startOffset,line:le.startLine,column:le.startColumn,length:le.image.length,message:he})}else{F.pop();let he=ga(F);M=this.patternIdxToConfig[he],B=this.charCodeToPatternIdxToConfig[he],O=M.length;let K=this.canModeBeOptimized[he]&&this.config.safeMode===!1;B&&K?z=H:z=$}},"pop_mode");function j(le){F.push(le),B=this.charCodeToPatternIdxToConfig[le],M=this.patternIdxToConfig[le],O=M.length,O=M.length;let he=this.canModeBeOptimized[le]&&this.config.safeMode===!1;B&&he?z=H:z=$}o(j,"push_mode"),j.call(this,r);let ie,ne=this.config.recoveryEnabled;for(;Tu.length){u=s,h=f,ie=se;break}}}break}}if(u!==null){if(d=u.length,p=ie.group,p!==void 0&&(m=ie.tokenTypeIdx,g=this.createTokenInstance(u,T,m,ie.tokenType,I,D,d),this.handlePayload(g,h),p===!1?E=this.addToken(S,E,g):k[p].push(g)),e=this.chopInput(e,d),T=T+d,D=this.computeNewColumn(D,d),L===!0&&ie.canLineTerminator===!0){let X=0,te,J;R.lastIndex=0;do te=R.test(u),te===!0&&(J=R.lastIndex-1,X++);while(te===!0);X!==0&&(I=I+X,D=d-J,this.updateTokenEndLineColumnLocation(g,p,J,X,I,D,d))}this.handleModes(ie,Q,j,g)}else{let X=T,te=I,J=D,se=ne===!1;for(;se===!1&&T{"use strict";qt();ix();cp();o(Fu,"tokenLabel");o(LN,"hasTokenLabel");XPe="parent",nse="categories",ise="label",ase="group",sse="push_mode",ose="pop_mode",lse="longer_alt",cse="line_breaks",use="start_chars_hint";o(of,"createToken");o(jPe,"createTokenInternal");lo=of({name:"EOF",pattern:Xn.NA});Bu([lo]);o($u,"createTokenInstance");o(sx,"tokenMatcher")});var zu,hse,Pl,Vg=N(()=>{"use strict";up();qt();os();zu={buildMismatchTokenMessage({expected:t,actual:e,previous:r,ruleName:n}){return`Expecting ${LN(t)?`--> ${Fu(t)} <--`:`token of type --> ${t.name} <--`} but found --> '${e.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:t,ruleName:e}){return"Redundant input, expecting EOF but found: "+t.image},buildNoViableAltMessage({expectedPathsPerAlt:t,actual:e,previous:r,customUserDescription:n,ruleName:i}){let a="Expecting: ",l=` -but found: '`+ia(e).image+"'";if(n)return a+n+l;{let u=Xr(t,(p,m)=>p.concat(m),[]),h=Je(u,p=>`[${Je(p,m=>Fu(m)).join(", ")}]`),d=`one of these possible Token sequences: -${Je(h,(p,m)=>` ${m+1}. ${p}`).join(` +`+i)}return this.tokenizeInternal(e,r)}tokenizeInternal(e,r){let n,i,a,s,l,u,h,f,d,p,m,g,y,v,x,b,T=e,S=T.length,w=0,k=0,A=this.hasCustom?0:Math.floor(e.length/10),C=new Array(A),R=[],I=this.trackStartLines?1:void 0,L=this.trackStartLines?1:void 0,E=mde(this.emptyGroups),D=this.trackStartLines,_=this.config.lineTerminatorsPattern,O=0,M=[],P=[],B=[],F=[];Object.freeze(F);let G;function $(){return M}o($,"getPossiblePatternsSlow");function U(J){let ue=Yc(J),re=P[ue];return re===void 0?F:re}o(U,"getPossiblePatternsOptimized");let j=o(J=>{if(B.length===1&&J.tokenType.PUSH_MODE===void 0){let ue=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(J);R.push({offset:J.startOffset,line:J.startLine,column:J.startColumn,length:J.image.length,message:ue})}else{B.pop();let ue=ma(B);M=this.patternIdxToConfig[ue],P=this.charCodeToPatternIdxToConfig[ue],O=M.length;let re=this.canModeBeOptimized[ue]&&this.config.safeMode===!1;P&&re?G=U:G=$}},"pop_mode");function te(J){B.push(J),P=this.charCodeToPatternIdxToConfig[J],M=this.patternIdxToConfig[J],O=M.length,O=M.length;let ue=this.canModeBeOptimized[J]&&this.config.safeMode===!1;P&&ue?G=U:G=$}o(te,"push_mode"),te.call(this,r);let Y,oe=this.config.recoveryEnabled;for(;wu.length){u=s,h=f,Y=ae;break}}}break}}if(u!==null){if(d=u.length,p=Y.group,p!==void 0&&(m=Y.tokenTypeIdx,g=this.createTokenInstance(u,w,m,Y.tokenType,I,L,d),this.handlePayload(g,h),p===!1?k=this.addToken(C,k,g):E[p].push(g)),e=this.chopInput(e,d),w=w+d,L=this.computeNewColumn(L,d),D===!0&&Y.canLineTerminator===!0){let ee=0,Z,K;_.lastIndex=0;do Z=_.test(u),Z===!0&&(K=_.lastIndex-1,ee++);while(Z===!0);ee!==0&&(I=I+ee,L=d-K,this.updateTokenEndLineColumnLocation(g,p,K,ee,I,L,d))}this.handleModes(Y,j,te,g)}else{let ee=w,Z=I,K=L,ae=oe===!1;for(;ae===!1&&w{"use strict";Yt();tb();Vp();o(Ku,"tokenLabel");o(ZO,"hasTokenLabel");RYe="parent",Sde="categories",Cde="label",Ade="group",_de="push_mode",Dde="pop_mode",Lde="longer_alt",Rde="line_breaks",Nde="start_chars_hint";o(Pf,"createToken");o(NYe,"createTokenInternal");yo=Pf({name:"EOF",pattern:Zn.NA});ju([yo]);o(Qu,"createTokenInstance");o(nb,"tokenMatcher")});var Zu,Mde,Gl,b1=N(()=>{"use strict";Up();Yt();ps();Zu={buildMismatchTokenMessage({expected:t,actual:e,previous:r,ruleName:n}){return`Expecting ${ZO(t)?`--> ${Ku(t)} <--`:`token of type --> ${t.name} <--`} but found --> '${e.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:t,ruleName:e}){return"Redundant input, expecting EOF but found: "+t.image},buildNoViableAltMessage({expectedPathsPerAlt:t,actual:e,previous:r,customUserDescription:n,ruleName:i}){let a="Expecting: ",l=` +but found: '`+ea(e).image+"'";if(n)return a+n+l;{let u=Jr(t,(p,m)=>p.concat(m),[]),h=rt(u,p=>`[${rt(p,m=>Ku(m)).join(", ")}]`),d=`one of these possible Token sequences: +${rt(h,(p,m)=>` ${m+1}. ${p}`).join(` `)}`;return a+d+l}},buildEarlyExitMessage({expectedIterationPaths:t,actual:e,customUserDescription:r,ruleName:n}){let i="Expecting: ",s=` -but found: '`+ia(e).image+"'";if(r)return i+r+s;{let u=`expecting at least one iteration which starts with one of these possible Token sequences:: - <${Je(t,h=>`[${Je(h,f=>Fu(f)).join(",")}]`).join(" ,")}>`;return i+u+s}}};Object.freeze(zu);hse={buildRuleNotFoundError(t,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-"}},Pl={buildDuplicateFoundError(t,e){function r(f){return f instanceof kr?f.terminalType.name:f instanceof on?f.nonTerminalName:""}o(r,"getExtraProductionArgument");let n=t.name,i=ia(e),a=i.idx,s=Bs(i),l=r(i),u=a>0,h=`->${s}${u?a:""}<- ${l?`with argument: ->${l}<-`:""} +but found: '`+ea(e).image+"'";if(r)return i+r+s;{let u=`expecting at least one iteration which starts with one of these possible Token sequences:: + <${rt(t,h=>`[${rt(h,f=>Ku(f)).join(",")}]`).join(" ,")}>`;return i+u+s}}};Object.freeze(Zu);Mde={buildRuleNotFoundError(t,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+t.name+"<-"}},Gl={buildDuplicateFoundError(t,e){function r(f){return f instanceof Ar?f.terminalType.name:f instanceof fn?f.nonTerminalName:""}o(r,"getExtraProductionArgument");let n=t.name,i=ea(e),a=i.idx,s=Xs(i),l=r(i),u=a>0,h=`->${s}${u?a:""}<- ${l?`with argument: ->${l}<-`:""} appears more than once (${e.length} times) in the top level rule: ->${n}<-. For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES `;return h=h.replace(/[ \t]+/g," "),h=h.replace(/\s\s+/g,` @@ -755,78 +1133,78 @@ inside top level rule: ->`+t.name+"<-"}},Pl={buildDuplicateFoundError(t,e){funct The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${t.name}>. To resolve this make sure each Terminal and Non-Terminal names are unique This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(t){let e=Je(t.prefixPath,i=>Fu(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx;return`Ambiguous alternatives: <${t.ambiguityIndices.join(" ,")}> due to common lookahead prefix +and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(t){let e=rt(t.prefixPath,i=>Ku(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx;return`Ambiguous alternatives: <${t.ambiguityIndices.join(" ,")}> due to common lookahead prefix in inside <${t.topLevelRule.name}> Rule, <${e}> may appears as a prefix path in all these alternatives. See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`},buildAlternationAmbiguityError(t){let e=Je(t.prefixPath,i=>Fu(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in inside <${t.topLevelRule.name}> Rule, +For Further details.`},buildAlternationAmbiguityError(t){let e=rt(t.prefixPath,i=>Ku(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in inside <${t.topLevelRule.name}> Rule, <${e}> may appears as a prefix path in all these alternatives. `;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,n},buildEmptyRepetitionError(t){let e=Bs(t.repetition);return t.repetition.idx!==0&&(e+=t.repetition.idx),`The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens. +For Further details.`,n},buildEmptyRepetitionError(t){let e=Xs(t.repetition);return t.repetition.idx!==0&&(e+=t.repetition.idx),`The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens. This could lead to an infinite loop.`},buildTokenNameError(t){return"deprecated"},buildEmptyAlternationError(t){return`Ambiguous empty alternative: <${t.emptyChoiceIdx+1}> in inside <${t.topLevelRule.name}> Rule. Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(t){return`An Alternation cannot have more than 256 alternatives: inside <${t.topLevelRule.name}> Rule. - has ${t.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(t){let e=t.topLevelRule.name,r=Je(t.leftRecursionPath,a=>a.name),n=`${e} --> ${r.concat([e]).join(" --> ")}`;return`Left Recursion found in grammar. + has ${t.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(t){let e=t.topLevelRule.name,r=rt(t.leftRecursionPath,a=>a.name),n=`${e} --> ${r.concat([e]).join(" --> ")}`;return`Left Recursion found in grammar. rule: <${e}> can be invoked from itself (directly or indirectly) without consuming any Tokens. The grammar path that causes this is: ${n} To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(t){return"deprecated"},buildDuplicateRuleNameError(t){let e;return t.topLevelRule instanceof as?e=t.topLevelRule.name:e=t.topLevelRule,`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`}}});function fse(t,e){let r=new RN(t,e);return r.resolveRefs(),r.errors}var RN,dse=N(()=>{"use strict";Fs();qt();os();o(fse,"resolveGrammar");RN=class extends ss{static{o(this,"GastRefResolverVisitor")}constructor(e,r){super(),this.nameToTopRule=e,this.errMsgProvider=r,this.errors=[]}resolveRefs(){Ae(br(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let r=this.nameToTopRule[e.nonTerminalName];if(r)e.referencedRule=r;else{let n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:n,type:zi.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}});function Fk(t,e,r=[]){r=an(r);let n=[],i=0;function a(l){return l.concat(gi(t,i+1))}o(a,"remainingPathWith");function s(l){let u=Fk(a(l),e,r);return n.concat(u)}for(o(s,"getAlternativesForProd");r.length{ur(u.definition)===!1&&(n=s(u.definition))}),n;if(l instanceof kr)r.push(l.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:gi(t,i)}),n}function $k(t,e,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",l=!1,u=e.length,h=u-n-1,f=[],d=[];for(d.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!ur(d);){let p=d.pop();if(p===s){l&&ga(d).idx<=h&&d.pop();continue}let m=p.def,g=p.idx,y=p.ruleStack,v=p.occurrenceStack;if(ur(m))continue;let x=m[0];if(x===i){let b={idx:g,def:gi(m),ruleStack:Nu(y),occurrenceStack:Nu(v)};d.push(b)}else if(x instanceof kr)if(g=0;b--){let w=x.definition[b],C={idx:g,def:w.definition.concat(gi(m)),ruleStack:y,occurrenceStack:v};d.push(C),d.push(s)}else if(x instanceof Dn)d.push({idx:g,def:x.definition.concat(gi(m)),ruleStack:y,occurrenceStack:v});else if(x instanceof as)d.push(KPe(x,g,y,v));else throw Error("non exhaustive match")}return f}function KPe(t,e,r,n){let i=an(r);i.push(t.name);let a=an(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}var NN,Ok,Ug,Pk,ox,Bk,lx,cx=N(()=>{"use strict";qt();xN();Ak();os();NN=class extends Ou{static{o(this,"AbstractNextPossibleTokensWalker")}constructor(e,r){super(),this.topProd=e,this.path=r,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=an(this.path.ruleStack).reverse(),this.occurrenceStack=an(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,r=[]){this.found||super.walk(e,r)}walkProdRef(e,r,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let i=r.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,i)}}updateExpectedNext(){ur(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},Ok=class extends NN{static{o(this,"NextAfterTokenWalker")}constructor(e,r){super(e,r),this.path=r,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,r,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let i=r.concat(n),a=new Dn({definition:i});this.possibleTokTypes=op(a),this.found=!0}}},Ug=class extends Ou{static{o(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,r){super(),this.topRule=e,this.occurrence=r,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},Pk=class extends Ug{static{o(this,"NextTerminalAfterManyWalker")}walkMany(e,r,n){if(e.idx===this.occurrence){let i=ia(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,r,n)}},ox=class extends Ug{static{o(this,"NextTerminalAfterManySepWalker")}walkManySep(e,r,n){if(e.idx===this.occurrence){let i=ia(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,r,n)}},Bk=class extends Ug{static{o(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,r,n){if(e.idx===this.occurrence){let i=ia(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,r,n)}},lx=class extends Ug{static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,r,n){if(e.idx===this.occurrence){let i=ia(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,r,n)}};o(Fk,"possiblePathsFrom");o($k,"nextPossibleTokensAfter");o(KPe,"expandTopLevelRule")});function ux(t){if(t instanceof ln||t==="Option")return jn.OPTION;if(t instanceof Or||t==="Repetition")return jn.REPETITION;if(t instanceof Ln||t==="RepetitionMandatory")return jn.REPETITION_MANDATORY;if(t instanceof Rn||t==="RepetitionMandatoryWithSeparator")return jn.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof wn||t==="RepetitionWithSeparator")return jn.REPETITION_WITH_SEPARATOR;if(t instanceof Tn||t==="Alternation")return jn.ALTERNATION;throw Error("non exhaustive match")}function Gk(t){let{occurrence:e,rule:r,prodType:n,maxLookahead:i}=t,a=ux(n);return a===jn.ALTERNATION?Hg(e,r,i):Wg(e,r,a,i)}function mse(t,e,r,n,i,a){let s=Hg(t,e,r),l=wse(s)?zg:Pu;return a(s,n,l,i)}function gse(t,e,r,n,i,a){let s=Wg(t,e,i,r),l=wse(s)?zg:Pu;return a(s[0],l,n)}function yse(t,e,r,n){let i=t.length,a=Ma(t,s=>Ma(s,l=>l.length===1));if(e)return function(s){let l=Je(s,u=>u.GATE);for(let u=0;uqr(u)),l=Xr(s,(u,h,f)=>(Ae(h,d=>{Bt(u,d.tokenTypeIdx)||(u[d.tokenTypeIdx]=f),Ae(d.categoryMatches,p=>{Bt(u,p)||(u[p]=f)})}),u),{});return function(){let u=this.LA(1);return l[u.tokenTypeIdx]}}else return function(){for(let s=0;sa.length===1),i=t.length;if(n&&!r){let a=qr(t);if(a.length===1&&ur(a[0].categoryMatches)){let l=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===l}}else{let s=Xr(a,(l,u,h)=>(l[u.tokenTypeIdx]=!0,Ae(u.categoryMatches,f=>{l[f]=!0}),l),[]);return function(){let l=this.LA(1);return s[l.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;aFk([s],1)),n=pse(r.length),i=Je(r,s=>{let l={};return Ae(s,u=>{let h=MN(u.partialPath);Ae(h,f=>{l[f]=!0})}),l}),a=r;for(let s=1;s<=e;s++){let l=a;a=pse(l.length);for(let u=0;u{let x=MN(v.partialPath);Ae(x,b=>{i[u][b]=!0})})}}}}return n}function Hg(t,e,r,n){let i=new zk(t,jn.ALTERNATION,n);return e.accept(i),xse(i.result,r)}function Wg(t,e,r,n){let i=new zk(t,r);e.accept(i);let a=i.result,l=new IN(e,t,r).startWalking(),u=new Dn({definition:a}),h=new Dn({definition:l});return xse([u,h],n)}function Vk(t,e){e:for(let r=0;r{let i=e[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}function wse(t){return Ma(t,e=>Ma(e,r=>Ma(r,n=>ur(n.categoryMatches))))}var jn,IN,zk,qg=N(()=>{"use strict";qt();cx();Ak();cp();os();(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(jn||(jn={}));o(ux,"getProdType");o(Gk,"getLookaheadPaths");o(mse,"buildLookaheadFuncForOr");o(gse,"buildLookaheadFuncForOptionalProd");o(yse,"buildAlternativesLookAheadFunc");o(vse,"buildSingleAlternativeLookaheadFunction");IN=class extends Ou{static{o(this,"RestDefinitionFinderWalker")}constructor(e,r,n){super(),this.topProd=e,this.targetOccurrence=r,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,r,n,i){return e.idx===this.targetOccurrence&&this.targetProdType===r?(this.restDef=n.concat(i),!0):!1}walkOption(e,r,n){this.checkIsTarget(e,jn.OPTION,r,n)||super.walkOption(e,r,n)}walkAtLeastOne(e,r,n){this.checkIsTarget(e,jn.REPETITION_MANDATORY,r,n)||super.walkOption(e,r,n)}walkAtLeastOneSep(e,r,n){this.checkIsTarget(e,jn.REPETITION_MANDATORY_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}walkMany(e,r,n){this.checkIsTarget(e,jn.REPETITION,r,n)||super.walkOption(e,r,n)}walkManySep(e,r,n){this.checkIsTarget(e,jn.REPETITION_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}},zk=class extends ss{static{o(this,"InsideDefinitionFinderVisitor")}constructor(e,r,n){super(),this.targetOccurrence=e,this.targetProdType=r,this.targetRef=n,this.result=[]}checkIsTarget(e,r){e.idx===this.targetOccurrence&&this.targetProdType===r&&(this.targetRef===void 0||e===this.targetRef)&&(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,jn.OPTION)}visitRepetition(e){this.checkIsTarget(e,jn.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,jn.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,jn.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,jn.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,jn.ALTERNATION)}};o(pse,"initializeArrayOfArrays");o(MN,"pathToHashKeys");o(QPe,"isUniquePrefixHash");o(xse,"lookAheadSequenceFromAlternatives");o(Hg,"getLookaheadPathsForOr");o(Wg,"getLookaheadPathsForOptionalProd");o(Vk,"containsPath");o(bse,"isStrictPrefixOfPath");o(wse,"areTokenCategoriesNotUsed")});function Tse(t){let e=t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName});return Je(e,r=>Object.assign({type:zi.CUSTOM_LOOKAHEAD_VALIDATION},r))}function kse(t,e,r,n){let i=ya(t,u=>ZPe(u,r)),a=iBe(t,e,r),s=ya(t,u=>tBe(u,r)),l=ya(t,u=>eBe(u,t,n,r));return i.concat(a,s,l)}function ZPe(t,e){let r=new ON;t.accept(r);let n=r.allProductions,i=IL(n,JPe),a=Os(i,l=>l.length>1);return Je(br(a),l=>{let u=ia(l),h=e.buildDuplicateFoundError(t,l),f=Bs(u),d={message:h,type:zi.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:f,occurrence:u.idx},p=Ese(u);return p&&(d.parameter=p),d})}function JPe(t){return`${Bs(t)}_#_${t.idx}_#_${Ese(t)}`}function Ese(t){return t instanceof kr?t.terminalType.name:t instanceof on?t.nonTerminalName:""}function eBe(t,e,r,n){let i=[];if(Xr(e,(s,l)=>l.name===t.name?s+1:s,0)>1){let s=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:s,type:zi.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}function Sse(t,e,r){let n=[],i;return qn(e,t)||(i=`Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:zi.INVALID_RULE_OVERRIDE,ruleName:t})),n}function BN(t,e,r,n=[]){let i=[],a=Uk(e.definition);if(ur(a))return[];{let s=t.name;qn(a,t)&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:zi.LEFT_RECURSION,ruleName:s});let u=Zh(a,n.concat([t])),h=ya(u,f=>{let d=an(n);return d.push(f),BN(t,f,r,d)});return i.concat(h)}}function Uk(t){let e=[];if(ur(t))return e;let r=ia(t);if(r instanceof on)e.push(r.referencedRule);else if(r instanceof Dn||r instanceof ln||r instanceof Ln||r instanceof Rn||r instanceof wn||r instanceof Or)e=e.concat(Uk(r.definition));else if(r instanceof Tn)e=qr(Je(r.definition,a=>Uk(a.definition)));else if(!(r instanceof kr))throw Error("non exhaustive match");let n=sp(r),i=t.length>1;if(n&&i){let a=gi(t);return e.concat(Uk(a))}else return e}function Cse(t,e){let r=new hx;t.accept(r);let n=r.alternations;return ya(n,a=>{let s=Nu(a.definition);return ya(s,(l,u)=>{let h=$k([l],[],Pu,1);return ur(h)?[{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:a,emptyChoiceIdx:u}),type:zi.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:a.idx,alternative:u+1}]:[]})})}function Ase(t,e,r){let n=new hx;t.accept(n);let i=n.alternations;return i=Jh(i,s=>s.ignoreAmbiguities===!0),ya(i,s=>{let l=s.idx,u=s.maxLookahead||e,h=Hg(l,t,u,s),f=rBe(h,s,t,r),d=nBe(h,s,t,r);return f.concat(d)})}function tBe(t,e){let r=new hx;t.accept(r);let n=r.alternations;return ya(n,a=>a.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:a}),type:zi.TOO_MANY_ALTS,ruleName:t.name,occurrence:a.idx}]:[])}function _se(t,e,r){let n=[];return Ae(t,i=>{let a=new PN;i.accept(a);let s=a.allProductions;Ae(s,l=>{let u=ux(l),h=l.maxLookahead||e,f=l.idx,p=Wg(f,i,u,h)[0];if(ur(qr(p))){let m=r.buildEmptyRepetitionError({topLevelRule:i,repetition:l});n.push({message:m,type:zi.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function rBe(t,e,r,n){let i=[],a=Xr(t,(l,u,h)=>(e.definition[h].ignoreAmbiguities===!0||Ae(u,f=>{let d=[h];Ae(t,(p,m)=>{h!==m&&Vk(p,f)&&e.definition[m].ignoreAmbiguities!==!0&&d.push(m)}),d.length>1&&!Vk(i,f)&&(i.push(f),l.push({alts:d,path:f}))}),l),[]);return Je(a,l=>{let u=Je(l.alts,f=>f+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:u,prefixPath:l.path}),type:zi.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:l.alts}})}function nBe(t,e,r,n){let i=Xr(t,(s,l,u)=>{let h=Je(l,f=>({idx:u,path:f}));return s.concat(h)},[]);return Tc(ya(i,s=>{if(e.definition[s.idx].ignoreAmbiguities===!0)return[];let u=s.idx,h=s.path,f=Yr(i,p=>e.definition[p.idx].ignoreAmbiguities!==!0&&p.idx{let m=[p.idx+1,u+1],g=e.idx===0?"":e.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:m,prefixPath:p.path}),type:zi.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:m}})}))}function iBe(t,e,r){let n=[],i=Je(e,a=>a.name);return Ae(t,a=>{let s=a.name;if(qn(i,s)){let l=r.buildNamespaceConflictError(a);n.push({message:l,type:zi.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),n}var ON,hx,PN,fx=N(()=>{"use strict";qt();Fs();os();qg();cx();cp();o(Tse,"validateLookahead");o(kse,"validateGrammar");o(ZPe,"validateDuplicateProductions");o(JPe,"identifyProductionForDuplicates");o(Ese,"getExtraProductionArgument");ON=class extends ss{static{o(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};o(eBe,"validateRuleDoesNotAlreadyExist");o(Sse,"validateRuleIsOverridden");o(BN,"validateNoLeftRecursion");o(Uk,"getFirstNoneTerminal");hx=class extends ss{static{o(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};o(Cse,"validateEmptyOrAlternative");o(Ase,"validateAmbiguousAlternationAlternatives");PN=class extends ss{static{o(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};o(tBe,"validateTooManyAlts");o(_se,"validateSomeNonEmptyLookaheadPath");o(rBe,"checkAlternativesAmbiguities");o(nBe,"checkPrefixAlternativesAmbiguities");o(iBe,"checkTerminalAndNoneTerminalsNameSpace")});function Dse(t){let e=Qh(t,{errMsgProvider:hse}),r={};return Ae(t.rules,n=>{r[n.name]=n}),fse(r,e.errMsgProvider)}function Lse(t){return t=Qh(t,{errMsgProvider:Pl}),kse(t.rules,t.tokenTypes,t.errMsgProvider,t.grammarName)}var Rse=N(()=>{"use strict";qt();dse();fx();Vg();o(Dse,"resolveGrammar");o(Lse,"validateGrammar")});function lf(t){return qn(Pse,t.name)}var Nse,Mse,Ise,Ose,Pse,Yg,hp,dx,px,mx,Xg=N(()=>{"use strict";qt();Nse="MismatchedTokenException",Mse="NoViableAltException",Ise="EarlyExitException",Ose="NotAllInputParsedException",Pse=[Nse,Mse,Ise,Ose];Object.freeze(Pse);o(lf,"isRecognitionException");Yg=class extends Error{static{o(this,"RecognitionException")}constructor(e,r){super(e),this.token=r,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},hp=class extends Yg{static{o(this,"MismatchedTokenException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=Nse}},dx=class extends Yg{static{o(this,"NoViableAltException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=Mse}},px=class extends Yg{static{o(this,"NotAllInputParsedException")}constructor(e,r){super(e,r),this.name=Ose}},mx=class extends Yg{static{o(this,"EarlyExitException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=Ise}}});function aBe(t,e,r,n,i,a,s){let l=this.getKeyForAutomaticLookahead(n,i),u=this.firstAfterRepMap[l];if(u===void 0){let p=this.getCurrRuleFullName(),m=this.getGAstProductions()[p];u=new a(m,i).startWalking(),this.firstAfterRepMap[l]=u}let h=u.token,f=u.occurrence,d=u.isEndOfRule;this.RULE_STACK.length===1&&d&&h===void 0&&(h=lo,f=1),!(h===void 0||f===void 0)&&this.shouldInRepetitionRecoveryBeTried(h,f,s)&&this.tryInRepetitionRecovery(t,e,r,h)}var FN,zN,$N,Hk,GN=N(()=>{"use strict";up();qt();Xg();bN();Fs();FN={},zN="InRuleRecoveryException",$N=class extends Error{static{o(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=zN}},Hk=class{static{o(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=Bt(e,"recoveryEnabled")?e.recoveryEnabled:ls.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=aBe)}getTokenToInsert(e){let r=$u(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,r,n,i){let a=this.findReSyncTokenType(),s=this.exportLexerState(),l=[],u=!1,h=this.LA(1),f=this.LA(1),d=o(()=>{let p=this.LA(0),m=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:h,previous:p,ruleName:this.getCurrRuleFullName()}),g=new hp(m,h,this.LA(0));g.resyncedTokens=Nu(l),this.SAVE_ERROR(g)},"generateErrorMessage");for(;!u;)if(this.tokenMatcher(f,i)){d();return}else if(n.call(this)){d(),e.apply(this,r);return}else this.tokenMatcher(f,a)?u=!0:(f=this.SKIP_TOKEN(),this.addToResyncTokens(f,l));this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,r,n){return!(n===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))}getFollowsForInRuleRecovery(e,r){let n=this.getCurrentGrammarPath(e,r);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new $N("sad sad panda")}canPerformInRuleRecovery(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,r){if(!this.canTokenTypeBeInsertedInRecovery(e)||ur(r))return!1;let n=this.LA(1);return ns(r,a=>this.tokenMatcher(n,a))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let r=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(r);return qn(n,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),r=this.LA(1),n=2;for(;;){let i=ns(e,a=>sx(r,a));if(i!==void 0)return i;r=this.LA(n),n++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return FN;let e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,r=this.RULE_OCCURRENCE_STACK;return Je(e,(n,i)=>i===0?FN:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:r[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){let e=Je(this.buildFullFollowKeyStack(),r=>this.getFollowSetFromFollowKey(r));return qr(e)}getFollowSetFromFollowKey(e){if(e===FN)return[lo];let r=e.ruleName+e.idxInCallingRule+_k+e.inRule;return this.resyncFollows[r]}addToResyncTokens(e,r){return this.tokenMatcher(e,lo)||r.push(e),r}reSyncTo(e){let r=[],n=this.LA(1);for(;this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,r);return Nu(r)}attemptInRepetitionRecovery(e,r,n,i,a,s,l){}getCurrentGrammarPath(e,r){let n=this.getHumanReadableRuleStack(),i=an(this.RULE_OCCURRENCE_STACK);return{ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r}}getHumanReadableRuleStack(){return Je(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};o(aBe,"attemptInRepetitionRecovery")});function Wk(t,e,r){return r|e|t}var qk=N(()=>{"use strict";o(Wk,"getKeyForAutomaticLookahead")});var Gu,VN=N(()=>{"use strict";qt();Vg();Fs();fx();qg();Gu=class{static{o(this,"LLkLookaheadStrategy")}constructor(e){var r;this.maxLookahead=(r=e?.maxLookahead)!==null&&r!==void 0?r:ls.maxLookahead}validate(e){let r=this.validateNoLeftRecursion(e.rules);if(ur(r)){let n=this.validateEmptyOrAlternatives(e.rules),i=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),a=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...r,...n,...i,...a]}return r}validateNoLeftRecursion(e){return ya(e,r=>BN(r,r,Pl))}validateEmptyOrAlternatives(e){return ya(e,r=>Cse(r,Pl))}validateAmbiguousAlternationAlternatives(e,r){return ya(e,n=>Ase(n,r,Pl))}validateSomeNonEmptyLookaheadPath(e,r){return _se(e,r,Pl)}buildLookaheadForAlternation(e){return mse(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,yse)}buildLookaheadForOptional(e){return gse(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,ux(e.prodType),vse)}}});function sBe(t){Yk.reset(),t.accept(Yk);let e=Yk.dslMethods;return Yk.reset(),e}var Xk,UN,Yk,Bse=N(()=>{"use strict";qt();Fs();qk();os();VN();Xk=class{static{o(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=Bt(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:ls.dynamicTokensEnabled,this.maxLookahead=Bt(e,"maxLookahead")?e.maxLookahead:ls.maxLookahead,this.lookaheadStrategy=Bt(e,"lookaheadStrategy")?e.lookaheadStrategy:new Gu({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){Ae(e,r=>{this.TRACE_INIT(`${r.name} Rule Lookahead`,()=>{let{alternation:n,repetition:i,option:a,repetitionMandatory:s,repetitionMandatoryWithSeparator:l,repetitionWithSeparator:u}=sBe(r);Ae(n,h=>{let f=h.idx===0?"":h.idx;this.TRACE_INIT(`${Bs(h)}${f}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:h.idx,rule:r,maxLookahead:h.maxLookahead||this.maxLookahead,hasPredicates:h.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),p=Wk(this.fullRuleNameToShort[r.name],256,h.idx);this.setLaFuncCache(p,d)})}),Ae(i,h=>{this.computeLookaheadFunc(r,h.idx,768,"Repetition",h.maxLookahead,Bs(h))}),Ae(a,h=>{this.computeLookaheadFunc(r,h.idx,512,"Option",h.maxLookahead,Bs(h))}),Ae(s,h=>{this.computeLookaheadFunc(r,h.idx,1024,"RepetitionMandatory",h.maxLookahead,Bs(h))}),Ae(l,h=>{this.computeLookaheadFunc(r,h.idx,1536,"RepetitionMandatoryWithSeparator",h.maxLookahead,Bs(h))}),Ae(u,h=>{this.computeLookaheadFunc(r,h.idx,1280,"RepetitionWithSeparator",h.maxLookahead,Bs(h))})})})}computeLookaheadFunc(e,r,n,i,a,s){this.TRACE_INIT(`${s}${r===0?"":r}`,()=>{let l=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:r,rule:e,maxLookahead:a||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),u=Wk(this.fullRuleNameToShort[e.name],n,r);this.setLaFuncCache(u,l)})}getKeyForAutomaticLookahead(e,r){let n=this.getLastExplicitRuleShortName();return Wk(n,e,r)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,r){this.lookAheadFuncsCache.set(e,r)}},UN=class extends ss{static{o(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},Yk=new UN;o(sBe,"collectMethods")});function qN(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";o(qN,"setNodeLocationOnlyOffset");o(YN,"setNodeLocationFull");o(Fse,"addTerminalToCst");o($se,"addNoneTerminalToCst")});function XN(t,e){Object.defineProperty(t,oBe,{enumerable:!1,configurable:!0,writable:!1,value:e})}var oBe,Gse=N(()=>{"use strict";oBe="name";o(XN,"defineNameProp")});function lBe(t,e){let r=zr(t),n=r.length;for(let i=0;is.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: +see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(t){return"deprecated"},buildDuplicateRuleNameError(t){let e;return t.topLevelRule instanceof fs?e=t.topLevelRule.name:e=t.topLevelRule,`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`}}});function Ide(t,e){let r=new JO(t,e);return r.resolveRefs(),r.errors}var JO,Ode=N(()=>{"use strict";js();Yt();ps();o(Ide,"resolveGrammar");JO=class extends ds{static{o(this,"GastRefResolverVisitor")}constructor(e,r){super(),this.nameToTopRule=e,this.errMsgProvider=r,this.errors=[]}resolveRefs(){Ae(kr(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let r=this.nameToTopRule[e.nonTerminalName];if(r)e.referencedRule=r;else{let n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:n,type:Gi.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}});function sS(t,e,r=[]){r=ln(r);let n=[],i=0;function a(l){return l.concat(yi(t,i+1))}o(a,"remainingPathWith");function s(l){let u=sS(a(l),e,r);return n.concat(u)}for(o(s,"getAlternativesForProd");r.length{mr(u.definition)===!1&&(n=s(u.definition))}),n;if(l instanceof Ar)r.push(l.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:yi(t,i)}),n}function oS(t,e,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",l=!1,u=e.length,h=u-n-1,f=[],d=[];for(d.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!mr(d);){let p=d.pop();if(p===s){l&&ma(d).idx<=h&&d.pop();continue}let m=p.def,g=p.idx,y=p.ruleStack,v=p.occurrenceStack;if(mr(m))continue;let x=m[0];if(x===i){let b={idx:g,def:yi(m),ruleStack:Bu(y),occurrenceStack:Bu(v)};d.push(b)}else if(x instanceof Ar)if(g=0;b--){let T=x.definition[b],S={idx:g,def:T.definition.concat(yi(m)),ruleStack:y,occurrenceStack:v};d.push(S),d.push(s)}else if(x instanceof Pn)d.push({idx:g,def:x.definition.concat(yi(m)),ruleStack:y,occurrenceStack:v});else if(x instanceof fs)d.push(MYe(x,g,y,v));else throw Error("non exhaustive match")}return f}function MYe(t,e,r,n){let i=ln(r);i.push(t.name);let a=ln(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}var eP,nS,T1,iS,ib,aS,ab,sb=N(()=>{"use strict";Yt();GO();jE();ps();eP=class extends Yu{static{o(this,"AbstractNextPossibleTokensWalker")}constructor(e,r){super(),this.topProd=e,this.path=r,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=ln(this.path.ruleStack).reverse(),this.occurrenceStack=ln(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,r=[]){this.found||super.walk(e,r)}walkProdRef(e,r,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let i=r.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,i)}}updateExpectedNext(){mr(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},nS=class extends eP{static{o(this,"NextAfterTokenWalker")}constructor(e,r){super(e,r),this.path=r,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,r,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let i=r.concat(n),a=new Pn({definition:i});this.possibleTokTypes=zp(a),this.found=!0}}},T1=class extends Yu{static{o(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,r){super(),this.topRule=e,this.occurrence=r,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},iS=class extends T1{static{o(this,"NextTerminalAfterManyWalker")}walkMany(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,r,n)}},ib=class extends T1{static{o(this,"NextTerminalAfterManySepWalker")}walkManySep(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,r,n)}},aS=class extends T1{static{o(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,r,n)}},ab=class extends T1{static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,r,n)}};o(sS,"possiblePathsFrom");o(oS,"nextPossibleTokensAfter");o(MYe,"expandTopLevelRule")});function ob(t){if(t instanceof dn||t==="Option")return Jn.OPTION;if(t instanceof zr||t==="Repetition")return Jn.REPETITION;if(t instanceof Bn||t==="RepetitionMandatory")return Jn.REPETITION_MANDATORY;if(t instanceof Fn||t==="RepetitionMandatoryWithSeparator")return Jn.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof _n||t==="RepetitionWithSeparator")return Jn.REPETITION_WITH_SEPARATOR;if(t instanceof Dn||t==="Alternation")return Jn.ALTERNATION;throw Error("non exhaustive match")}function cS(t){let{occurrence:e,rule:r,prodType:n,maxLookahead:i}=t,a=ob(n);return a===Jn.ALTERNATION?w1(e,r,i):k1(e,r,a,i)}function Bde(t,e,r,n,i,a){let s=w1(t,e,r),l=Ude(s)?v1:Xu;return a(s,n,l,i)}function Fde(t,e,r,n,i,a){let s=k1(t,e,i,r),l=Ude(s)?v1:Xu;return a(s[0],l,n)}function $de(t,e,r,n){let i=t.length,a=Pa(t,s=>Pa(s,l=>l.length===1));if(e)return function(s){let l=rt(s,u=>u.GATE);for(let u=0;uQr(u)),l=Jr(s,(u,h,f)=>(Ae(h,d=>{Ft(u,d.tokenTypeIdx)||(u[d.tokenTypeIdx]=f),Ae(d.categoryMatches,p=>{Ft(u,p)||(u[p]=f)})}),u),{});return function(){let u=this.LA(1);return l[u.tokenTypeIdx]}}else return function(){for(let s=0;sa.length===1),i=t.length;if(n&&!r){let a=Qr(t);if(a.length===1&&mr(a[0].categoryMatches)){let l=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===l}}else{let s=Jr(a,(l,u,h)=>(l[u.tokenTypeIdx]=!0,Ae(u.categoryMatches,f=>{l[f]=!0}),l),[]);return function(){let l=this.LA(1);return s[l.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;asS([s],1)),n=Pde(r.length),i=rt(r,s=>{let l={};return Ae(s,u=>{let h=tP(u.partialPath);Ae(h,f=>{l[f]=!0})}),l}),a=r;for(let s=1;s<=e;s++){let l=a;a=Pde(l.length);for(let u=0;u{let x=tP(v.partialPath);Ae(x,b=>{i[u][b]=!0})})}}}}return n}function w1(t,e,r,n){let i=new lS(t,Jn.ALTERNATION,n);return e.accept(i),Gde(i.result,r)}function k1(t,e,r,n){let i=new lS(t,r);e.accept(i);let a=i.result,l=new rP(e,t,r).startWalking(),u=new Pn({definition:a}),h=new Pn({definition:l});return Gde([u,h],n)}function uS(t,e){e:for(let r=0;r{let i=e[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}function Ude(t){return Pa(t,e=>Pa(e,r=>Pa(r,n=>mr(n.categoryMatches))))}var Jn,rP,lS,E1=N(()=>{"use strict";Yt();sb();jE();Vp();ps();(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(Jn||(Jn={}));o(ob,"getProdType");o(cS,"getLookaheadPaths");o(Bde,"buildLookaheadFuncForOr");o(Fde,"buildLookaheadFuncForOptionalProd");o($de,"buildAlternativesLookAheadFunc");o(zde,"buildSingleAlternativeLookaheadFunction");rP=class extends Yu{static{o(this,"RestDefinitionFinderWalker")}constructor(e,r,n){super(),this.topProd=e,this.targetOccurrence=r,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,r,n,i){return e.idx===this.targetOccurrence&&this.targetProdType===r?(this.restDef=n.concat(i),!0):!1}walkOption(e,r,n){this.checkIsTarget(e,Jn.OPTION,r,n)||super.walkOption(e,r,n)}walkAtLeastOne(e,r,n){this.checkIsTarget(e,Jn.REPETITION_MANDATORY,r,n)||super.walkOption(e,r,n)}walkAtLeastOneSep(e,r,n){this.checkIsTarget(e,Jn.REPETITION_MANDATORY_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}walkMany(e,r,n){this.checkIsTarget(e,Jn.REPETITION,r,n)||super.walkOption(e,r,n)}walkManySep(e,r,n){this.checkIsTarget(e,Jn.REPETITION_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}},lS=class extends ds{static{o(this,"InsideDefinitionFinderVisitor")}constructor(e,r,n){super(),this.targetOccurrence=e,this.targetProdType=r,this.targetRef=n,this.result=[]}checkIsTarget(e,r){e.idx===this.targetOccurrence&&this.targetProdType===r&&(this.targetRef===void 0||e===this.targetRef)&&(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,Jn.OPTION)}visitRepetition(e){this.checkIsTarget(e,Jn.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,Jn.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,Jn.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,Jn.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,Jn.ALTERNATION)}};o(Pde,"initializeArrayOfArrays");o(tP,"pathToHashKeys");o(IYe,"isUniquePrefixHash");o(Gde,"lookAheadSequenceFromAlternatives");o(w1,"getLookaheadPathsForOr");o(k1,"getLookaheadPathsForOptionalProd");o(uS,"containsPath");o(Vde,"isStrictPrefixOfPath");o(Ude,"areTokenCategoriesNotUsed")});function Hde(t){let e=t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName});return rt(e,r=>Object.assign({type:Gi.CUSTOM_LOOKAHEAD_VALIDATION},r))}function qde(t,e,r,n){let i=ga(t,u=>OYe(u,r)),a=GYe(t,e,r),s=ga(t,u=>FYe(u,r)),l=ga(t,u=>BYe(u,t,n,r));return i.concat(a,s,l)}function OYe(t,e){let r=new nP;t.accept(r);let n=r.allProductions,i=DR(n,PYe),a=Vs(i,l=>l.length>1);return rt(kr(a),l=>{let u=ea(l),h=e.buildDuplicateFoundError(t,l),f=Xs(u),d={message:h,type:Gi.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:f,occurrence:u.idx},p=Wde(u);return p&&(d.parameter=p),d})}function PYe(t){return`${Xs(t)}_#_${t.idx}_#_${Wde(t)}`}function Wde(t){return t instanceof Ar?t.terminalType.name:t instanceof fn?t.nonTerminalName:""}function BYe(t,e,r,n){let i=[];if(Jr(e,(s,l)=>l.name===t.name?s+1:s,0)>1){let s=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:s,type:Gi.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}function Yde(t,e,r){let n=[],i;return jn(e,t)||(i=`Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:Gi.INVALID_RULE_OVERRIDE,ruleName:t})),n}function aP(t,e,r,n=[]){let i=[],a=hS(e.definition);if(mr(a))return[];{let s=t.name;jn(a,t)&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:Gi.LEFT_RECURSION,ruleName:s});let u=lf(a,n.concat([t])),h=ga(u,f=>{let d=ln(n);return d.push(f),aP(t,f,r,d)});return i.concat(h)}}function hS(t){let e=[];if(mr(t))return e;let r=ea(t);if(r instanceof fn)e.push(r.referencedRule);else if(r instanceof Pn||r instanceof dn||r instanceof Bn||r instanceof Fn||r instanceof _n||r instanceof zr)e=e.concat(hS(r.definition));else if(r instanceof Dn)e=Qr(rt(r.definition,a=>hS(a.definition)));else if(!(r instanceof Ar))throw Error("non exhaustive match");let n=$p(r),i=t.length>1;if(n&&i){let a=yi(t);return e.concat(hS(a))}else return e}function Xde(t,e){let r=new lb;t.accept(r);let n=r.alternations;return ga(n,a=>{let s=Bu(a.definition);return ga(s,(l,u)=>{let h=oS([l],[],Xu,1);return mr(h)?[{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:a,emptyChoiceIdx:u}),type:Gi.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:a.idx,alternative:u+1}]:[]})})}function jde(t,e,r){let n=new lb;t.accept(n);let i=n.alternations;return i=cf(i,s=>s.ignoreAmbiguities===!0),ga(i,s=>{let l=s.idx,u=s.maxLookahead||e,h=w1(l,t,u,s),f=$Ye(h,s,t,r),d=zYe(h,s,t,r);return f.concat(d)})}function FYe(t,e){let r=new lb;t.accept(r);let n=r.alternations;return ga(n,a=>a.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:a}),type:Gi.TOO_MANY_ALTS,ruleName:t.name,occurrence:a.idx}]:[])}function Kde(t,e,r){let n=[];return Ae(t,i=>{let a=new iP;i.accept(a);let s=a.allProductions;Ae(s,l=>{let u=ob(l),h=l.maxLookahead||e,f=l.idx,p=k1(f,i,u,h)[0];if(mr(Qr(p))){let m=r.buildEmptyRepetitionError({topLevelRule:i,repetition:l});n.push({message:m,type:Gi.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function $Ye(t,e,r,n){let i=[],a=Jr(t,(l,u,h)=>(e.definition[h].ignoreAmbiguities===!0||Ae(u,f=>{let d=[h];Ae(t,(p,m)=>{h!==m&&uS(p,f)&&e.definition[m].ignoreAmbiguities!==!0&&d.push(m)}),d.length>1&&!uS(i,f)&&(i.push(f),l.push({alts:d,path:f}))}),l),[]);return rt(a,l=>{let u=rt(l.alts,f=>f+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:u,prefixPath:l.path}),type:Gi.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:l.alts}})}function zYe(t,e,r,n){let i=Jr(t,(s,l,u)=>{let h=rt(l,f=>({idx:u,path:f}));return s.concat(h)},[]);return _c(ga(i,s=>{if(e.definition[s.idx].ignoreAmbiguities===!0)return[];let u=s.idx,h=s.path,f=Zr(i,p=>e.definition[p.idx].ignoreAmbiguities!==!0&&p.idx{let m=[p.idx+1,u+1],g=e.idx===0?"":e.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:m,prefixPath:p.path}),type:Gi.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:m}})}))}function GYe(t,e,r){let n=[],i=rt(e,a=>a.name);return Ae(t,a=>{let s=a.name;if(jn(i,s)){let l=r.buildNamespaceConflictError(a);n.push({message:l,type:Gi.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),n}var nP,lb,iP,cb=N(()=>{"use strict";Yt();js();ps();E1();sb();Vp();o(Hde,"validateLookahead");o(qde,"validateGrammar");o(OYe,"validateDuplicateProductions");o(PYe,"identifyProductionForDuplicates");o(Wde,"getExtraProductionArgument");nP=class extends ds{static{o(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};o(BYe,"validateRuleDoesNotAlreadyExist");o(Yde,"validateRuleIsOverridden");o(aP,"validateNoLeftRecursion");o(hS,"getFirstNoneTerminal");lb=class extends ds{static{o(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};o(Xde,"validateEmptyOrAlternative");o(jde,"validateAmbiguousAlternationAlternatives");iP=class extends ds{static{o(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};o(FYe,"validateTooManyAlts");o(Kde,"validateSomeNonEmptyLookaheadPath");o($Ye,"checkAlternativesAmbiguities");o(zYe,"checkPrefixAlternativesAmbiguities");o(GYe,"checkTerminalAndNoneTerminalsNameSpace")});function Qde(t){let e=of(t,{errMsgProvider:Mde}),r={};return Ae(t.rules,n=>{r[n.name]=n}),Ide(r,e.errMsgProvider)}function Zde(t){return t=of(t,{errMsgProvider:Gl}),qde(t.rules,t.tokenTypes,t.errMsgProvider,t.grammarName)}var Jde=N(()=>{"use strict";Yt();Ode();cb();b1();o(Qde,"resolveGrammar");o(Zde,"validateGrammar")});function Bf(t){return jn(ipe,t.name)}var epe,tpe,rpe,npe,ipe,S1,Hp,ub,hb,fb,C1=N(()=>{"use strict";Yt();epe="MismatchedTokenException",tpe="NoViableAltException",rpe="EarlyExitException",npe="NotAllInputParsedException",ipe=[epe,tpe,rpe,npe];Object.freeze(ipe);o(Bf,"isRecognitionException");S1=class extends Error{static{o(this,"RecognitionException")}constructor(e,r){super(e),this.token=r,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},Hp=class extends S1{static{o(this,"MismatchedTokenException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=epe}},ub=class extends S1{static{o(this,"NoViableAltException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=tpe}},hb=class extends S1{static{o(this,"NotAllInputParsedException")}constructor(e,r){super(e,r),this.name=npe}},fb=class extends S1{static{o(this,"EarlyExitException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=rpe}}});function VYe(t,e,r,n,i,a,s){let l=this.getKeyForAutomaticLookahead(n,i),u=this.firstAfterRepMap[l];if(u===void 0){let p=this.getCurrRuleFullName(),m=this.getGAstProductions()[p];u=new a(m,i).startWalking(),this.firstAfterRepMap[l]=u}let h=u.token,f=u.occurrence,d=u.isEndOfRule;this.RULE_STACK.length===1&&d&&h===void 0&&(h=yo,f=1),!(h===void 0||f===void 0)&&this.shouldInRepetitionRecoveryBeTried(h,f,s)&&this.tryInRepetitionRecovery(t,e,r,h)}var sP,lP,oP,fS,cP=N(()=>{"use strict";Up();Yt();C1();VO();js();sP={},lP="InRuleRecoveryException",oP=class extends Error{static{o(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=lP}},fS=class{static{o(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=Ft(e,"recoveryEnabled")?e.recoveryEnabled:ms.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=VYe)}getTokenToInsert(e){let r=Qu(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,r,n,i){let a=this.findReSyncTokenType(),s=this.exportLexerState(),l=[],u=!1,h=this.LA(1),f=this.LA(1),d=o(()=>{let p=this.LA(0),m=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:h,previous:p,ruleName:this.getCurrRuleFullName()}),g=new Hp(m,h,this.LA(0));g.resyncedTokens=Bu(l),this.SAVE_ERROR(g)},"generateErrorMessage");for(;!u;)if(this.tokenMatcher(f,i)){d();return}else if(n.call(this)){d(),e.apply(this,r);return}else this.tokenMatcher(f,a)?u=!0:(f=this.SKIP_TOKEN(),this.addToResyncTokens(f,l));this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,r,n){return!(n===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))}getFollowsForInRuleRecovery(e,r){let n=this.getCurrentGrammarPath(e,r);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new oP("sad sad panda")}canPerformInRuleRecovery(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,r){if(!this.canTokenTypeBeInsertedInRecovery(e)||mr(r))return!1;let n=this.LA(1);return os(r,a=>this.tokenMatcher(n,a))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let r=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(r);return jn(n,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),r=this.LA(1),n=2;for(;;){let i=os(e,a=>nb(r,a));if(i!==void 0)return i;r=this.LA(n),n++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return sP;let e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,r=this.RULE_OCCURRENCE_STACK;return rt(e,(n,i)=>i===0?sP:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:r[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){let e=rt(this.buildFullFollowKeyStack(),r=>this.getFollowSetFromFollowKey(r));return Qr(e)}getFollowSetFromFollowKey(e){if(e===sP)return[yo];let r=e.ruleName+e.idxInCallingRule+KE+e.inRule;return this.resyncFollows[r]}addToResyncTokens(e,r){return this.tokenMatcher(e,yo)||r.push(e),r}reSyncTo(e){let r=[],n=this.LA(1);for(;this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,r);return Bu(r)}attemptInRepetitionRecovery(e,r,n,i,a,s,l){}getCurrentGrammarPath(e,r){let n=this.getHumanReadableRuleStack(),i=ln(this.RULE_OCCURRENCE_STACK);return{ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r}}getHumanReadableRuleStack(){return rt(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};o(VYe,"attemptInRepetitionRecovery")});function dS(t,e,r){return r|e|t}var pS=N(()=>{"use strict";o(dS,"getKeyForAutomaticLookahead")});var Ju,uP=N(()=>{"use strict";Yt();b1();js();cb();E1();Ju=class{static{o(this,"LLkLookaheadStrategy")}constructor(e){var r;this.maxLookahead=(r=e?.maxLookahead)!==null&&r!==void 0?r:ms.maxLookahead}validate(e){let r=this.validateNoLeftRecursion(e.rules);if(mr(r)){let n=this.validateEmptyOrAlternatives(e.rules),i=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),a=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...r,...n,...i,...a]}return r}validateNoLeftRecursion(e){return ga(e,r=>aP(r,r,Gl))}validateEmptyOrAlternatives(e){return ga(e,r=>Xde(r,Gl))}validateAmbiguousAlternationAlternatives(e,r){return ga(e,n=>jde(n,r,Gl))}validateSomeNonEmptyLookaheadPath(e,r){return Kde(e,r,Gl)}buildLookaheadForAlternation(e){return Bde(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,$de)}buildLookaheadForOptional(e){return Fde(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,ob(e.prodType),zde)}}});function UYe(t){mS.reset(),t.accept(mS);let e=mS.dslMethods;return mS.reset(),e}var gS,hP,mS,ape=N(()=>{"use strict";Yt();js();pS();ps();uP();gS=class{static{o(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=Ft(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:ms.dynamicTokensEnabled,this.maxLookahead=Ft(e,"maxLookahead")?e.maxLookahead:ms.maxLookahead,this.lookaheadStrategy=Ft(e,"lookaheadStrategy")?e.lookaheadStrategy:new Ju({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){Ae(e,r=>{this.TRACE_INIT(`${r.name} Rule Lookahead`,()=>{let{alternation:n,repetition:i,option:a,repetitionMandatory:s,repetitionMandatoryWithSeparator:l,repetitionWithSeparator:u}=UYe(r);Ae(n,h=>{let f=h.idx===0?"":h.idx;this.TRACE_INIT(`${Xs(h)}${f}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:h.idx,rule:r,maxLookahead:h.maxLookahead||this.maxLookahead,hasPredicates:h.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),p=dS(this.fullRuleNameToShort[r.name],256,h.idx);this.setLaFuncCache(p,d)})}),Ae(i,h=>{this.computeLookaheadFunc(r,h.idx,768,"Repetition",h.maxLookahead,Xs(h))}),Ae(a,h=>{this.computeLookaheadFunc(r,h.idx,512,"Option",h.maxLookahead,Xs(h))}),Ae(s,h=>{this.computeLookaheadFunc(r,h.idx,1024,"RepetitionMandatory",h.maxLookahead,Xs(h))}),Ae(l,h=>{this.computeLookaheadFunc(r,h.idx,1536,"RepetitionMandatoryWithSeparator",h.maxLookahead,Xs(h))}),Ae(u,h=>{this.computeLookaheadFunc(r,h.idx,1280,"RepetitionWithSeparator",h.maxLookahead,Xs(h))})})})}computeLookaheadFunc(e,r,n,i,a,s){this.TRACE_INIT(`${s}${r===0?"":r}`,()=>{let l=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:r,rule:e,maxLookahead:a||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),u=dS(this.fullRuleNameToShort[e.name],n,r);this.setLaFuncCache(u,l)})}getKeyForAutomaticLookahead(e,r){let n=this.getLastExplicitRuleShortName();return dS(n,e,r)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,r){this.lookAheadFuncsCache.set(e,r)}},hP=class extends ds{static{o(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},mS=new hP;o(UYe,"collectMethods")});function pP(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";o(pP,"setNodeLocationOnlyOffset");o(mP,"setNodeLocationFull");o(spe,"addTerminalToCst");o(ope,"addNoneTerminalToCst")});function gP(t,e){Object.defineProperty(t,HYe,{enumerable:!1,configurable:!0,writable:!1,value:e})}var HYe,cpe=N(()=>{"use strict";HYe="name";o(gP,"defineNameProp")});function qYe(t,e){let r=qr(t),n=r.length;for(let i=0;is.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: ${a.join(` `).replace(/\n/g,` - `)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}function Use(t,e,r){let n=o(function(){},"derivedConstructor");XN(n,t+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return Ae(e,a=>{i[a]=lBe}),n.prototype=i,n.prototype.constructor=n,n}function cBe(t,e){return uBe(t,e)}function uBe(t,e){let r=Yr(e,i=>Si(t[i])===!1),n=Je(r,i=>({msg:`Missing visitor method: <${i}> on ${t.constructor.name} CST Visitor.`,type:jN.MISSING_METHOD,methodName:i}));return Tc(n)}var jN,Hse=N(()=>{"use strict";qt();Gse();o(lBe,"defaultVisit");o(Vse,"createBaseSemanticVisitorConstructor");o(Use,"createBaseVisitorConstructorWithDefaults");(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(jN||(jN={}));o(cBe,"validateVisitor");o(uBe,"validateMissingCstMethods")});var Zk,Wse=N(()=>{"use strict";zse();qt();Hse();Fs();Zk=class{static{o(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=Bt(e,"nodeLocationTracking")?e.nodeLocationTracking:ls.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=ni,this.cstFinallyStateUpdate=ni,this.cstPostTerminal=ni,this.cstPostNonTerminal=ni,this.cstPostRule=ni;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=YN,this.setNodeLocationFromNode=YN,this.cstPostRule=ni,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=ni,this.setNodeLocationFromNode=ni,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=qN,this.setNodeLocationFromNode=qN,this.cstPostRule=ni,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=ni,this.setNodeLocationFromNode=ni,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=ni,this.setNodeLocationFromNode=ni,this.cstPostRule=ni,this.setInitialNodeLocation=ni;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let r={name:e,children:Object.create(null)};this.setInitialNodeLocation(r),this.CST_STACK.push(r)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?(n.endOffset=r.endOffset,n.endLine=r.endLine,n.endColumn=r.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?n.endOffset=r.endOffset:n.startOffset=NaN}cstPostTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];Fse(n,r,e),this.setNodeLocationFromToken(n.location,r)}cstPostNonTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];$se(n,r,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if(pr(this.baseCstVisitorConstructor)){let e=Vse(this.className,zr(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(pr(this.baseCstVisitorWithDefaultsConstructor)){let e=Use(this.className,zr(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}}});var Jk,qse=N(()=>{"use strict";Fs();Jk=class{static{o(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):jg}LA(e){let r=this.currIdx+e;return r<0||this.tokVectorLength<=r?jg:this.tokVector[r]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}}});var eE,Yse=N(()=>{"use strict";qt();Xg();Fs();Vg();fx();os();eE=class{static{o(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,r,n){return this.consumeInternal(r,e,n)}subrule(e,r,n){return this.subruleInternal(r,e,n)}option(e,r){return this.optionInternal(r,e)}or(e,r){return this.orInternal(r,e)}many(e,r){return this.manyInternal(e,r)}atLeastOne(e,r){return this.atLeastOneInternal(e,r)}CONSUME(e,r){return this.consumeInternal(e,0,r)}CONSUME1(e,r){return this.consumeInternal(e,1,r)}CONSUME2(e,r){return this.consumeInternal(e,2,r)}CONSUME3(e,r){return this.consumeInternal(e,3,r)}CONSUME4(e,r){return this.consumeInternal(e,4,r)}CONSUME5(e,r){return this.consumeInternal(e,5,r)}CONSUME6(e,r){return this.consumeInternal(e,6,r)}CONSUME7(e,r){return this.consumeInternal(e,7,r)}CONSUME8(e,r){return this.consumeInternal(e,8,r)}CONSUME9(e,r){return this.consumeInternal(e,9,r)}SUBRULE(e,r){return this.subruleInternal(e,0,r)}SUBRULE1(e,r){return this.subruleInternal(e,1,r)}SUBRULE2(e,r){return this.subruleInternal(e,2,r)}SUBRULE3(e,r){return this.subruleInternal(e,3,r)}SUBRULE4(e,r){return this.subruleInternal(e,4,r)}SUBRULE5(e,r){return this.subruleInternal(e,5,r)}SUBRULE6(e,r){return this.subruleInternal(e,6,r)}SUBRULE7(e,r){return this.subruleInternal(e,7,r)}SUBRULE8(e,r){return this.subruleInternal(e,8,r)}SUBRULE9(e,r){return this.subruleInternal(e,9,r)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,r,n=Kg){if(qn(this.definedRulesNames,e)){let s={message:Pl.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:zi.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);let i=this.defineRule(e,r,n);return this[e]=i,i}OVERRIDE_RULE(e,r,n=Kg){let i=Sse(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(i);let a=this.defineRule(e,r,n);return this[e]=a,a}BACKTRACK(e,r){return function(){this.isBackTrackingStack.push(1);let n=this.saveRecogState();try{return e.apply(this,r),!0}catch(i){if(lf(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return Sk(br(this.gastProductionsCache))}}});var tE,Xse=N(()=>{"use strict";qt();qk();Xg();qg();cx();Fs();GN();up();cp();tE=class{static{o(this,"RecognizerEngine")}initRecognizerEngine(e,r){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=zg,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},Bt(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + `)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}function hpe(t,e,r){let n=o(function(){},"derivedConstructor");gP(n,t+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return Ae(e,a=>{i[a]=qYe}),n.prototype=i,n.prototype.constructor=n,n}function WYe(t,e){return YYe(t,e)}function YYe(t,e){let r=Zr(e,i=>Si(t[i])===!1),n=rt(r,i=>({msg:`Missing visitor method: <${i}> on ${t.constructor.name} CST Visitor.`,type:yP.MISSING_METHOD,methodName:i}));return _c(n)}var yP,fpe=N(()=>{"use strict";Yt();cpe();o(qYe,"defaultVisit");o(upe,"createBaseSemanticVisitorConstructor");o(hpe,"createBaseVisitorConstructorWithDefaults");(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(yP||(yP={}));o(WYe,"validateVisitor");o(YYe,"validateMissingCstMethods")});var bS,dpe=N(()=>{"use strict";lpe();Yt();fpe();js();bS=class{static{o(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=Ft(e,"nodeLocationTracking")?e.nodeLocationTracking:ms.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=si,this.cstFinallyStateUpdate=si,this.cstPostTerminal=si,this.cstPostNonTerminal=si,this.cstPostRule=si;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=mP,this.setNodeLocationFromNode=mP,this.cstPostRule=si,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=si,this.setNodeLocationFromNode=si,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=pP,this.setNodeLocationFromNode=pP,this.cstPostRule=si,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=si,this.setNodeLocationFromNode=si,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=si,this.setNodeLocationFromNode=si,this.cstPostRule=si,this.setInitialNodeLocation=si;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let r={name:e,children:Object.create(null)};this.setInitialNodeLocation(r),this.CST_STACK.push(r)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?(n.endOffset=r.endOffset,n.endLine=r.endLine,n.endColumn=r.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?n.endOffset=r.endOffset:n.startOffset=NaN}cstPostTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];spe(n,r,e),this.setNodeLocationFromToken(n.location,r)}cstPostNonTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];ope(n,r,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if(xr(this.baseCstVisitorConstructor)){let e=upe(this.className,qr(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(xr(this.baseCstVisitorWithDefaultsConstructor)){let e=hpe(this.className,qr(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}}});var TS,ppe=N(()=>{"use strict";js();TS=class{static{o(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):A1}LA(e){let r=this.currIdx+e;return r<0||this.tokVectorLength<=r?A1:this.tokVector[r]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}}});var wS,mpe=N(()=>{"use strict";Yt();C1();js();b1();cb();ps();wS=class{static{o(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,r,n){return this.consumeInternal(r,e,n)}subrule(e,r,n){return this.subruleInternal(r,e,n)}option(e,r){return this.optionInternal(r,e)}or(e,r){return this.orInternal(r,e)}many(e,r){return this.manyInternal(e,r)}atLeastOne(e,r){return this.atLeastOneInternal(e,r)}CONSUME(e,r){return this.consumeInternal(e,0,r)}CONSUME1(e,r){return this.consumeInternal(e,1,r)}CONSUME2(e,r){return this.consumeInternal(e,2,r)}CONSUME3(e,r){return this.consumeInternal(e,3,r)}CONSUME4(e,r){return this.consumeInternal(e,4,r)}CONSUME5(e,r){return this.consumeInternal(e,5,r)}CONSUME6(e,r){return this.consumeInternal(e,6,r)}CONSUME7(e,r){return this.consumeInternal(e,7,r)}CONSUME8(e,r){return this.consumeInternal(e,8,r)}CONSUME9(e,r){return this.consumeInternal(e,9,r)}SUBRULE(e,r){return this.subruleInternal(e,0,r)}SUBRULE1(e,r){return this.subruleInternal(e,1,r)}SUBRULE2(e,r){return this.subruleInternal(e,2,r)}SUBRULE3(e,r){return this.subruleInternal(e,3,r)}SUBRULE4(e,r){return this.subruleInternal(e,4,r)}SUBRULE5(e,r){return this.subruleInternal(e,5,r)}SUBRULE6(e,r){return this.subruleInternal(e,6,r)}SUBRULE7(e,r){return this.subruleInternal(e,7,r)}SUBRULE8(e,r){return this.subruleInternal(e,8,r)}SUBRULE9(e,r){return this.subruleInternal(e,9,r)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,r,n=_1){if(jn(this.definedRulesNames,e)){let s={message:Gl.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Gi.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);let i=this.defineRule(e,r,n);return this[e]=i,i}OVERRIDE_RULE(e,r,n=_1){let i=Yde(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(i);let a=this.defineRule(e,r,n);return this[e]=a,a}BACKTRACK(e,r){return function(){this.isBackTrackingStack.push(1);let n=this.saveRecogState();try{return e.apply(this,r),!0}catch(i){if(Bf(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return YE(kr(this.gastProductionsCache))}}});var kS,gpe=N(()=>{"use strict";Yt();pS();C1();E1();sb();js();cP();Up();Vp();kS=class{static{o(this,"RecognizerEngine")}initRecognizerEngine(e,r){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=v1,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},Ft(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if(Pt(e)){if(ur(e))throw Error(`A Token Vocabulary cannot be empty. + For Further details.`);if(Bt(e)){if(mr(e))throw Error(`A Token Vocabulary cannot be empty. Note that the first argument for the parser constructor is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if(Pt(e))this.tokensMap=Xr(e,(a,s)=>(a[s.name]=s,a),{});else if(Bt(e,"modes")&&Ma(qr(br(e.modes)),rse)){let a=qr(br(e.modes)),s=Bm(a);this.tokensMap=Xr(s,(l,u)=>(l[u.name]=u,l),{})}else if(bn(e))this.tokensMap=an(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=lo;let n=Bt(e,"modes")?qr(br(e.modes)):br(e),i=Ma(n,a=>ur(a.categoryMatches));this.tokenMatcher=i?zg:Pu,Bu(br(this.tokensMap))}defineRule(e,r,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let i=Bt(n,"resyncEnabled")?n.resyncEnabled:Kg.resyncEnabled,a=Bt(n,"recoveryValueFunc")?n.recoveryValueFunc:Kg.recoveryValueFunc,s=this.ruleShortNameIdx<<12;this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s;let l;return this.outputCst===!0?l=o(function(...f){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f);let d=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(d),d}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry"):l=o(function(...f){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f)}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst"),Object.assign(l,{ruleName:e,originalGrammarAction:r})}invokeRuleCatch(e,r,n){let i=this.RULE_STACK.length===1,a=r&&!this.isBackTracking()&&this.recoveryEnabled;if(lf(e)){let s=e;if(a){let l=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(l))if(s.resyncedTokens=this.reSyncTo(l),this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];return u.recoveredNode=!0,u}else return n(e);else{if(this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];u.recoveredNode=!0,s.partialCstResult=u}throw s}}else{if(i)return this.moveToTerminatedState(),n(e);throw s}}else throw e}optionInternal(e,r){let n=this.getKeyForAutomaticLookahead(512,r);return this.optionInternalLogic(e,r,n)}optionInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof e!="function"){a=e.DEF;let s=e.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=e;if(i.call(this)===!0)return a.call(this)}atLeastOneInternal(e,r){let n=this.getKeyForAutomaticLookahead(1024,e);return this.atLeastOneInternalLogic(e,r,n)}atLeastOneInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let s=r.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=r;if(i.call(this)===!0){let s=this.doSingleRepetition(a);for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a)}else throw this.raiseEarlyExitException(e,jn.REPETITION_MANDATORY,r.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,r],i,1024,e,Bk)}atLeastOneSepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1536,e);this.atLeastOneSepFirstInternalLogic(e,r,n)}atLeastOneSepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,lx],l,1536,e,lx)}else throw this.raiseEarlyExitException(e,jn.REPETITION_MANDATORY_WITH_SEPARATOR,r.ERR_MSG)}manyInternal(e,r){let n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,r,n)}manyInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let l=r.GATE;if(l!==void 0){let u=i;i=o(()=>l.call(this)&&u.call(this),"lookaheadFunction")}}else a=r;let s=!0;for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a);this.attemptInRepetitionRecovery(this.manyInternal,[e,r],i,768,e,Pk,s)}manySepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1280,e);this.manySepFirstInternalLogic(e,r,n)}manySepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,ox],l,1280,e,ox)}}repetitionSepSecondInternal(e,r,n,i,a){for(;n();)this.CONSUME(r),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,r,n,i,a],n,1536,e,a)}doSingleRepetition(e){let r=this.getLexerPosition();return e.call(this),this.getLexerPosition()>r}orInternal(e,r){let n=this.getKeyForAutomaticLookahead(256,r),i=Pt(e)?e:e.DEF,s=this.getLaFuncFromCache(n).call(this,i);if(s!==void 0)return i[s].ALT.call(this);this.raiseNoAltException(r,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new px(r,e))}}subruleInternal(e,r,n){let i;try{let a=n!==void 0?n.ARGS:void 0;return this.subruleIdx=r,i=e.apply(this,a),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(a){throw this.subruleInternalError(a,n,e.ruleName)}}subruleInternalError(e,r,n){throw lf(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,r,n){let i;try{let a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,n)}catch(a){i=this.consumeInternalRecovery(e,r,a)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i}consumeInternalError(e,r,n){let i,a=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new hp(i,r,a))}consumeInternalRecovery(e,r,n){if(this.recoveryEnabled&&n.name==="MismatchedTokenException"&&!this.isBackTracking()){let i=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===zN?n:a}}else throw n}saveRecogState(){let e=this.errors,r=an(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,r,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),lo)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}}});var rE,jse=N(()=>{"use strict";Xg();qt();qg();Fs();rE=class{static{o(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=Bt(e,"errorMessageProvider")?e.errorMessageProvider:ls.errorMessageProvider}SAVE_ERROR(e){if(lf(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:an(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return an(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,r,n){let i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],l=Wg(e,a,r,this.maxLookahead)[0],u=[];for(let f=1;f<=this.maxLookahead;f++)u.push(this.LA(f));let h=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:l,actual:u,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new mx(h,this.LA(1),this.LA(0)))}raiseNoAltException(e,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=Hg(e,i,this.maxLookahead),s=[];for(let h=1;h<=this.maxLookahead;h++)s.push(this.LA(h));let l=this.LA(0),u=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:s,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new dx(u,this.LA(1),l))}}});var nE,Kse=N(()=>{"use strict";cx();qt();nE=class{static{o(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,r){let n=this.gastProductionsCache[e];if(pr(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return $k([n],r,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let r=ia(e.ruleStack),i=this.getGAstProductions()[r];return new Ok(i,e).startWalking()}}});function yx(t,e,r,n=!1){aE(r);let i=ga(this.recordingProdStack),a=Si(e)?e:e.DEF,s=new t({definition:[],idx:r});return n&&(s.separator=e.SEP),Bt(e,"MAX_LOOKAHEAD")&&(s.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),sE}function dBe(t,e){aE(e);let r=ga(this.recordingProdStack),n=Pt(t)===!1,i=n===!1?t:t.DEF,a=new Tn({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});Bt(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD);let s=A2(i,l=>Si(l.GATE));return a.hasPredicates=s,r.definition.push(a),Ae(i,l=>{let u=new Dn({definition:[]});a.definition.push(u),Bt(l,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:Bt(l,"GATE")&&(u.ignoreAmbiguities=!0),this.recordingProdStack.push(u),l.ALT.call(this),this.recordingProdStack.pop()}),sE}function Jse(t){return t===0?"":`${t}`}function aE(t){if(t<0||t>Zse){let e=new Error(`Invalid DSL Method idx value: <${t}> - Idx value must be a none negative value smaller than ${Zse+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}var sE,Qse,Zse,eoe,toe,fBe,iE,roe=N(()=>{"use strict";qt();os();ix();cp();up();Fs();qk();sE={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(sE);Qse=!0,Zse=Math.pow(2,8)-1,eoe=of({name:"RECORDING_PHASE_TOKEN",pattern:Xn.NA});Bu([eoe]);toe=$u(eoe,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(toe);fBe={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},iE=class{static{o(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let r=e>0?e:"";this[`CONSUME${r}`]=function(n,i){return this.consumeInternalRecord(n,e,i)},this[`SUBRULE${r}`]=function(n,i){return this.subruleInternalRecord(n,e,i)},this[`OPTION${r}`]=function(n){return this.optionInternalRecord(n,e)},this[`OR${r}`]=function(n){return this.orInternalRecord(n,e)},this[`MANY${r}`]=function(n){this.manyInternalRecord(e,n)},this[`MANY_SEP${r}`]=function(n){this.manySepFirstInternalRecord(e,n)},this[`AT_LEAST_ONE${r}`]=function(n){this.atLeastOneInternalRecord(e,n)},this[`AT_LEAST_ONE_SEP${r}`]=function(n){this.atLeastOneSepFirstInternalRecord(e,n)}}this.consume=function(e,r,n){return this.consumeInternalRecord(r,e,n)},this.subrule=function(e,r,n){return this.subruleInternalRecord(r,e,n)},this.option=function(e,r){return this.optionInternalRecord(r,e)},this.or=function(e,r){return this.orInternalRecord(r,e)},this.many=function(e,r){this.manyInternalRecord(e,r)},this.atLeastOne=function(e,r){this.atLeastOneInternalRecord(e,r)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let r=0;r<10;r++){let n=r>0?r:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,r){return()=>!0}LA_RECORD(e){return jg}topLevelRuleRecord(e,r){try{let n=new as({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),r.call(this),this.recordingProdStack.pop(),n}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + For Further details.`)}if(Bt(e))this.tokensMap=Jr(e,(a,s)=>(a[s.name]=s,a),{});else if(Ft(e,"modes")&&Pa(Qr(kr(e.modes)),Ede)){let a=Qr(kr(e.modes)),s=qm(a);this.tokensMap=Jr(s,(l,u)=>(l[u.name]=u,l),{})}else if(Sn(e))this.tokensMap=ln(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=yo;let n=Ft(e,"modes")?Qr(kr(e.modes)):kr(e),i=Pa(n,a=>mr(a.categoryMatches));this.tokenMatcher=i?v1:Xu,ju(kr(this.tokensMap))}defineRule(e,r,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let i=Ft(n,"resyncEnabled")?n.resyncEnabled:_1.resyncEnabled,a=Ft(n,"recoveryValueFunc")?n.recoveryValueFunc:_1.recoveryValueFunc,s=this.ruleShortNameIdx<<12;this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s;let l;return this.outputCst===!0?l=o(function(...f){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f);let d=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(d),d}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry"):l=o(function(...f){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f)}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst"),Object.assign(l,{ruleName:e,originalGrammarAction:r})}invokeRuleCatch(e,r,n){let i=this.RULE_STACK.length===1,a=r&&!this.isBackTracking()&&this.recoveryEnabled;if(Bf(e)){let s=e;if(a){let l=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(l))if(s.resyncedTokens=this.reSyncTo(l),this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];return u.recoveredNode=!0,u}else return n(e);else{if(this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];u.recoveredNode=!0,s.partialCstResult=u}throw s}}else{if(i)return this.moveToTerminatedState(),n(e);throw s}}else throw e}optionInternal(e,r){let n=this.getKeyForAutomaticLookahead(512,r);return this.optionInternalLogic(e,r,n)}optionInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof e!="function"){a=e.DEF;let s=e.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=e;if(i.call(this)===!0)return a.call(this)}atLeastOneInternal(e,r){let n=this.getKeyForAutomaticLookahead(1024,e);return this.atLeastOneInternalLogic(e,r,n)}atLeastOneInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let s=r.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=r;if(i.call(this)===!0){let s=this.doSingleRepetition(a);for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a)}else throw this.raiseEarlyExitException(e,Jn.REPETITION_MANDATORY,r.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,r],i,1024,e,aS)}atLeastOneSepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1536,e);this.atLeastOneSepFirstInternalLogic(e,r,n)}atLeastOneSepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,ab],l,1536,e,ab)}else throw this.raiseEarlyExitException(e,Jn.REPETITION_MANDATORY_WITH_SEPARATOR,r.ERR_MSG)}manyInternal(e,r){let n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,r,n)}manyInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let l=r.GATE;if(l!==void 0){let u=i;i=o(()=>l.call(this)&&u.call(this),"lookaheadFunction")}}else a=r;let s=!0;for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a);this.attemptInRepetitionRecovery(this.manyInternal,[e,r],i,768,e,iS,s)}manySepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1280,e);this.manySepFirstInternalLogic(e,r,n)}manySepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,ib],l,1280,e,ib)}}repetitionSepSecondInternal(e,r,n,i,a){for(;n();)this.CONSUME(r),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,r,n,i,a],n,1536,e,a)}doSingleRepetition(e){let r=this.getLexerPosition();return e.call(this),this.getLexerPosition()>r}orInternal(e,r){let n=this.getKeyForAutomaticLookahead(256,r),i=Bt(e)?e:e.DEF,s=this.getLaFuncFromCache(n).call(this,i);if(s!==void 0)return i[s].ALT.call(this);this.raiseNoAltException(r,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new hb(r,e))}}subruleInternal(e,r,n){let i;try{let a=n!==void 0?n.ARGS:void 0;return this.subruleIdx=r,i=e.apply(this,a),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(a){throw this.subruleInternalError(a,n,e.ruleName)}}subruleInternalError(e,r,n){throw Bf(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,r,n){let i;try{let a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,n)}catch(a){i=this.consumeInternalRecovery(e,r,a)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i}consumeInternalError(e,r,n){let i,a=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Hp(i,r,a))}consumeInternalRecovery(e,r,n){if(this.recoveryEnabled&&n.name==="MismatchedTokenException"&&!this.isBackTracking()){let i=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===lP?n:a}}else throw n}saveRecogState(){let e=this.errors,r=ln(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,r,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),yo)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}}});var ES,ype=N(()=>{"use strict";C1();Yt();E1();js();ES=class{static{o(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=Ft(e,"errorMessageProvider")?e.errorMessageProvider:ms.errorMessageProvider}SAVE_ERROR(e){if(Bf(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:ln(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return ln(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,r,n){let i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],l=k1(e,a,r,this.maxLookahead)[0],u=[];for(let f=1;f<=this.maxLookahead;f++)u.push(this.LA(f));let h=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:l,actual:u,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new fb(h,this.LA(1),this.LA(0)))}raiseNoAltException(e,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=w1(e,i,this.maxLookahead),s=[];for(let h=1;h<=this.maxLookahead;h++)s.push(this.LA(h));let l=this.LA(0),u=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:s,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new ub(u,this.LA(1),l))}}});var SS,vpe=N(()=>{"use strict";sb();Yt();SS=class{static{o(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,r){let n=this.gastProductionsCache[e];if(xr(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return oS([n],r,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let r=ea(e.ruleStack),i=this.getGAstProductions()[r];return new nS(i,e).startWalking()}}});function pb(t,e,r,n=!1){AS(r);let i=ma(this.recordingProdStack),a=Si(e)?e:e.DEF,s=new t({definition:[],idx:r});return n&&(s.separator=e.SEP),Ft(e,"MAX_LOOKAHEAD")&&(s.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),_S}function KYe(t,e){AS(e);let r=ma(this.recordingProdStack),n=Bt(t)===!1,i=n===!1?t:t.DEF,a=new Dn({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});Ft(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD);let s=z2(i,l=>Si(l.GATE));return a.hasPredicates=s,r.definition.push(a),Ae(i,l=>{let u=new Pn({definition:[]});a.definition.push(u),Ft(l,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:Ft(l,"GATE")&&(u.ignoreAmbiguities=!0),this.recordingProdStack.push(u),l.ALT.call(this),this.recordingProdStack.pop()}),_S}function Tpe(t){return t===0?"":`${t}`}function AS(t){if(t<0||t>bpe){let e=new Error(`Invalid DSL Method idx value: <${t}> + Idx value must be a none negative value smaller than ${bpe+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}var _S,xpe,bpe,wpe,kpe,jYe,CS,Epe=N(()=>{"use strict";Yt();ps();tb();Vp();Up();js();pS();_S={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(_S);xpe=!0,bpe=Math.pow(2,8)-1,wpe=Pf({name:"RECORDING_PHASE_TOKEN",pattern:Zn.NA});ju([wpe]);kpe=Qu(wpe,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(kpe);jYe={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},CS=class{static{o(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let r=e>0?e:"";this[`CONSUME${r}`]=function(n,i){return this.consumeInternalRecord(n,e,i)},this[`SUBRULE${r}`]=function(n,i){return this.subruleInternalRecord(n,e,i)},this[`OPTION${r}`]=function(n){return this.optionInternalRecord(n,e)},this[`OR${r}`]=function(n){return this.orInternalRecord(n,e)},this[`MANY${r}`]=function(n){this.manyInternalRecord(e,n)},this[`MANY_SEP${r}`]=function(n){this.manySepFirstInternalRecord(e,n)},this[`AT_LEAST_ONE${r}`]=function(n){this.atLeastOneInternalRecord(e,n)},this[`AT_LEAST_ONE_SEP${r}`]=function(n){this.atLeastOneSepFirstInternalRecord(e,n)}}this.consume=function(e,r,n){return this.consumeInternalRecord(r,e,n)},this.subrule=function(e,r,n){return this.subruleInternalRecord(r,e,n)},this.option=function(e,r){return this.optionInternalRecord(r,e)},this.or=function(e,r){return this.orInternalRecord(r,e)},this.many=function(e,r){this.manyInternalRecord(e,r)},this.atLeastOne=function(e,r){this.atLeastOneInternalRecord(e,r)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let r=0;r<10;r++){let n=r>0?r:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,r){return()=>!0}LA_RECORD(e){return A1}topLevelRuleRecord(e,r){try{let n=new fs({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),r.call(this),this.recordingProdStack.pop(),n}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}}optionInternalRecord(e,r){return yx.call(this,ln,e,r)}atLeastOneInternalRecord(e,r){yx.call(this,Ln,r,e)}atLeastOneSepFirstInternalRecord(e,r){yx.call(this,Rn,r,e,Qse)}manyInternalRecord(e,r){yx.call(this,Or,r,e)}manySepFirstInternalRecord(e,r){yx.call(this,wn,r,e,Qse)}orInternalRecord(e,r){return dBe.call(this,e,r)}subruleInternalRecord(e,r,n){if(aE(r),!e||Bt(e,"ruleName")===!1){let l=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> - inside top level rule: <${this.recordingProdStack[0].name}>`);throw l.KNOWN_RECORDER_ERROR=!0,l}let i=ga(this.recordingProdStack),a=e.ruleName,s=new on({idx:r,nonTerminalName:a,label:n?.LABEL,referencedRule:void 0});return i.definition.push(s),this.outputCst?fBe:sE}consumeInternalRecord(e,r,n){if(aE(r),!_N(e)){let s=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> - inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let i=ga(this.recordingProdStack),a=new kr({idx:r,terminalType:e,label:n?.LABEL});return i.definition.push(a),toe}};o(yx,"recordProd");o(dBe,"recordOrProd");o(Jse,"getIdxSuffix");o(aE,"assertMethodIdxIsValid")});var oE,noe=N(()=>{"use strict";qt();Og();Fs();oE=class{static{o(this,"PerformanceTracer")}initPerformanceTracer(e){if(Bt(e,"traceInitPerf")){let r=e.traceInitPerf,n=typeof r=="number";this.traceInitMaxIdent=n?r:1/0,this.traceInitPerf=n?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ls.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;let n=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:i,value:a}=tx(r),s=i>10?console.warn:console.log;return this.traceInitIndent time: ${i}ms`),this.traceInitIndent--,a}else return r()}}});function ioe(t,e){e.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(t.prototype,i,a):t.prototype[i]=r.prototype[i]})})}var aoe=N(()=>{"use strict";o(ioe,"applyMixins")});function lE(t=void 0){return function(){return t}}var jg,ls,Kg,zi,vx,xx,Fs=N(()=>{"use strict";qt();Og();Oae();up();Vg();Rse();GN();Bse();Wse();qse();Yse();Xse();jse();Kse();roe();noe();aoe();fx();jg=$u(lo,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(jg);ls=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:zu,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),Kg=Object.freeze({recoveryValueFunc:o(()=>{},"recoveryValueFunc"),resyncEnabled:!0});(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",t[t.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(zi||(zi={}));o(lE,"EMPTY_ALT");vx=class t{static{o(this,"Parser")}static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{rx(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),Ae(this.definedRulesNames,i=>{let s=this[i].originalGrammarAction,l;this.TRACE_INIT(`${i} Rule`,()=>{l=this.topLevelRuleRecord(i,s)}),this.gastProductionsCache[i]=l})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=Dse({rules:br(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(ur(n)&&this.skipValidations===!1){let i=Lse({rules:br(this.gastProductionsCache),tokenTypes:br(this.tokensMap),errMsgProvider:Pl,grammarName:r}),a=Tse({lookaheadStrategy:this.lookaheadStrategy,rules:br(this.gastProductionsCache),tokenTypes:br(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),ur(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=Iae(br(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,a;(a=(i=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(i,{rules:br(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(br(this.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!ur(this.definitionErrors))throw e=Je(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}}optionInternalRecord(e,r){return pb.call(this,dn,e,r)}atLeastOneInternalRecord(e,r){pb.call(this,Bn,r,e)}atLeastOneSepFirstInternalRecord(e,r){pb.call(this,Fn,r,e,xpe)}manyInternalRecord(e,r){pb.call(this,zr,r,e)}manySepFirstInternalRecord(e,r){pb.call(this,_n,r,e,xpe)}orInternalRecord(e,r){return KYe.call(this,e,r)}subruleInternalRecord(e,r,n){if(AS(r),!e||Ft(e,"ruleName")===!1){let l=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw l.KNOWN_RECORDER_ERROR=!0,l}let i=ma(this.recordingProdStack),a=e.ruleName,s=new fn({idx:r,nonTerminalName:a,label:n?.LABEL,referencedRule:void 0});return i.definition.push(s),this.outputCst?jYe:_S}consumeInternalRecord(e,r,n){if(AS(r),!KO(e)){let s=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let i=ma(this.recordingProdStack),a=new Ar({idx:r,terminalType:e,label:n?.LABEL});return i.definition.push(a),kpe}};o(pb,"recordProd");o(KYe,"recordOrProd");o(Tpe,"getIdxSuffix");o(AS,"assertMethodIdxIsValid")});var DS,Spe=N(()=>{"use strict";Yt();d1();js();DS=class{static{o(this,"PerformanceTracer")}initPerformanceTracer(e){if(Ft(e,"traceInitPerf")){let r=e.traceInitPerf,n=typeof r=="number";this.traceInitMaxIdent=n?r:1/0,this.traceInitPerf=n?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ms.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;let n=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:i,value:a}=Zx(r),s=i>10?console.warn:console.log;return this.traceInitIndent time: ${i}ms`),this.traceInitIndent--,a}else return r()}}});function Cpe(t,e){e.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(t.prototype,i,a):t.prototype[i]=r.prototype[i]})})}var Ape=N(()=>{"use strict";o(Cpe,"applyMixins")});function LS(t=void 0){return function(){return t}}var A1,ms,_1,Gi,mb,gb,js=N(()=>{"use strict";Yt();d1();nde();Up();b1();Jde();cP();ape();dpe();ppe();mpe();gpe();ype();vpe();Epe();Spe();Ape();cb();A1=Qu(yo,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(A1);ms=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Zu,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),_1=Object.freeze({recoveryValueFunc:o(()=>{},"recoveryValueFunc"),resyncEnabled:!0});(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",t[t.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(Gi||(Gi={}));o(LS,"EMPTY_ALT");mb=class t{static{o(this,"Parser")}static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{Jx(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),Ae(this.definedRulesNames,i=>{let s=this[i].originalGrammarAction,l;this.TRACE_INIT(`${i} Rule`,()=>{l=this.topLevelRuleRecord(i,s)}),this.gastProductionsCache[i]=l})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=Qde({rules:kr(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(mr(n)&&this.skipValidations===!1){let i=Zde({rules:kr(this.gastProductionsCache),tokenTypes:kr(this.tokensMap),errMsgProvider:Gl,grammarName:r}),a=Hde({lookaheadStrategy:this.lookaheadStrategy,rules:kr(this.gastProductionsCache),tokenTypes:kr(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),mr(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=rde(kr(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,a;(a=(i=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(i,{rules:kr(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(kr(this.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!mr(this.definitionErrors))throw e=rt(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected: ${e.join(` ------------------------------- -`)}`)})}constructor(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(e,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),Bt(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. +`)}`)})}constructor(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(e,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),Ft(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. Please use the flag on the relevant DSL method instead. See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=Bt(r,"skipValidations")?r.skipValidations:ls.skipValidations}};vx.DEFER_DEFINITION_ERRORS_HANDLING=!1;ioe(vx,[Hk,Xk,Zk,Jk,tE,eE,rE,nE,iE,oE]);xx=class extends vx{static{o(this,"EmbeddedActionsParser")}constructor(e,r=ls){let n=an(r);n.outputCst=!1,super(e,n)}}});var soe=N(()=>{"use strict";os()});var ooe=N(()=>{"use strict"});var loe=N(()=>{"use strict";soe();ooe()});var coe=N(()=>{"use strict";gN()});var cf=N(()=>{"use strict";gN();Fs();ix();up();qg();VN();Vg();Xg();DN();os();os();loe();coe()});function fp(t,e,r){return`${t.name}_${e}_${r}`}function doe(t){let e={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};bBe(e,t);let r=t.length;for(let n=0;npoe(t,e,s));return e1(t,e,n,r,...i)}function CBe(t,e,r){let n=aa(t,e,r,{type:uf});hf(t,n);let i=e1(t,e,n,r,dp(t,e,r));return ABe(t,e,r,i)}function dp(t,e,r){let n=Yr(Je(r.definition,i=>poe(t,e,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:DBe(t,n)}function moe(t,e,r,n,i){let a=n.left,s=n.right,l=aa(t,e,r,{type:xBe});hf(t,l);let u=aa(t,e,r,{type:foe});return a.loopback=l,u.loopback=l,t.decisionMap[fp(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=l,Ai(s,l),i===void 0?(Ai(l,a),Ai(l,u)):(Ai(l,u),Ai(l,i.left),Ai(i.right,a)),{left:a,right:u}}function goe(t,e,r,n,i){let a=n.left,s=n.right,l=aa(t,e,r,{type:vBe});hf(t,l);let u=aa(t,e,r,{type:foe}),h=aa(t,e,r,{type:yBe});return l.loopback=h,u.loopback=h,Ai(l,a),Ai(l,u),Ai(s,h),i!==void 0?(Ai(h,u),Ai(h,i.left),Ai(i.right,a)):Ai(h,l),t.decisionMap[fp(e,i?"RepetitionWithSeparator":"Repetition",r.idx)]=l,{left:l,right:u}}function ABe(t,e,r,n){let i=n.left,a=n.right;return Ai(i,a),t.decisionMap[fp(e,"Option",r.idx)]=i,n}function hf(t,e){return t.decisionStates.push(e),e.decision=t.decisionStates.length-1,e.decision}function e1(t,e,r,n,...i){let a=aa(t,e,n,{type:gBe,start:r});r.end=a;for(let l of i)l!==void 0?(Ai(r,l.left),Ai(l.right,a)):Ai(r,a);let s={left:r,right:a};return t.decisionMap[fp(e,_Be(n),n.idx)]=r,s}function _Be(t){if(t instanceof Tn)return"Alternation";if(t instanceof ln)return"Option";if(t instanceof Or)return"Repetition";if(t instanceof wn)return"RepetitionWithSeparator";if(t instanceof Ln)return"RepetitionMandatory";if(t instanceof Rn)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function DBe(t,e){let r=e.length;for(let a=0;a{"use strict";Im();DL();cf();o(fp,"buildATNKey");uf=1,mBe=2,uoe=4,hoe=5,Jg=7,gBe=8,yBe=9,vBe=10,xBe=11,foe=12,bx=class{static{o(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},Qg=class extends bx{static{o(this,"AtomTransition")}constructor(e,r){super(e),this.tokenType=r}},wx=class extends bx{static{o(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},Zg=class extends bx{static{o(this,"RuleTransition")}constructor(e,r,n){super(e),this.rule=r,this.followState=n}isEpsilon(){return!0}};o(doe,"createATN");o(bBe,"createRuleStartAndStopATNStates");o(poe,"atom");o(wBe,"repetition");o(TBe,"repetitionSep");o(kBe,"repetitionMandatory");o(EBe,"repetitionMandatorySep");o(SBe,"alternation");o(CBe,"option");o(dp,"block");o(moe,"plus");o(goe,"star");o(ABe,"optional");o(hf,"defineDecisionState");o(e1,"makeAlts");o(_Be,"getProdType");o(DBe,"makeBlock");o(QN,"tokenRef");o(LBe,"ruleRef");o(RBe,"buildRuleHandle");o(Ai,"epsilon");o(aa,"newState");o(ZN,"addTransition");o(NBe,"removeState")});function JN(t,e=!0){return`${e?`a${t.alt}`:""}s${t.state.stateNumber}:${t.stack.map(r=>r.stateNumber.toString()).join("_")}`}var Tx,t1,voe=N(()=>{"use strict";Im();Tx={},t1=class{static{o(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let r=JN(e);r in this.map||(this.map[r]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return Je(this.configs,e=>e.alt)}get key(){let e="";for(let r in this.map)e+=r+":";return e}};o(JN,"getATNConfigKey")});function MBe(t,e){let r={};return n=>{let i=n.toString(),a=r[i];return a!==void 0||(a={atnStartState:t,decision:e,states:{}},r[i]=a),a}}function boe(t,e=!0){let r=new Set;for(let n of t){let i=new Set;for(let a of n){if(a===void 0){if(e)break;return!1}let s=[a.tokenTypeIdx].concat(a.categoryMatches);for(let l of s)if(r.has(l)){if(!i.has(l))return!1}else r.add(l),i.add(l)}}return!0}function IBe(t){let e=t.decisionStates.length,r=Array(e);for(let n=0;nFu(i)).join(", "),r=t.production.idx===0?"":t.production.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(", ")}> in <${$Be(t.production)}${r}> inside <${t.topLevelRule.name}> Rule, + For further details.`);this.skipValidations=Ft(r,"skipValidations")?r.skipValidations:ms.skipValidations}};mb.DEFER_DEFINITION_ERRORS_HANDLING=!1;Cpe(mb,[fS,gS,bS,TS,kS,wS,ES,SS,CS,DS]);gb=class extends mb{static{o(this,"EmbeddedActionsParser")}constructor(e,r=ms){let n=ln(r);n.outputCst=!1,super(e,n)}}});var _pe=N(()=>{"use strict";ps()});var Dpe=N(()=>{"use strict"});var Lpe=N(()=>{"use strict";_pe();Dpe()});var Rpe=N(()=>{"use strict";FO()});var Ff=N(()=>{"use strict";FO();js();tb();Up();E1();uP();b1();C1();QO();ps();ps();Lpe();Rpe()});function qp(t,e,r){return`${t.name}_${e}_${r}`}function Ope(t){let e={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};nXe(e,t);let r=t.length;for(let n=0;nPpe(t,e,s));return N1(t,e,n,r,...i)}function cXe(t,e,r){let n=ia(t,e,r,{type:$f});zf(t,n);let i=N1(t,e,n,r,Wp(t,e,r));return uXe(t,e,r,i)}function Wp(t,e,r){let n=Zr(rt(r.definition,i=>Ppe(t,e,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:fXe(t,n)}function Bpe(t,e,r,n,i){let a=n.left,s=n.right,l=ia(t,e,r,{type:rXe});zf(t,l);let u=ia(t,e,r,{type:Ipe});return a.loopback=l,u.loopback=l,t.decisionMap[qp(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=l,Di(s,l),i===void 0?(Di(l,a),Di(l,u)):(Di(l,u),Di(l,i.left),Di(i.right,a)),{left:a,right:u}}function Fpe(t,e,r,n,i){let a=n.left,s=n.right,l=ia(t,e,r,{type:tXe});zf(t,l);let u=ia(t,e,r,{type:Ipe}),h=ia(t,e,r,{type:eXe});return l.loopback=h,u.loopback=h,Di(l,a),Di(l,u),Di(s,h),i!==void 0?(Di(h,u),Di(h,i.left),Di(i.right,a)):Di(h,l),t.decisionMap[qp(e,i?"RepetitionWithSeparator":"Repetition",r.idx)]=l,{left:l,right:u}}function uXe(t,e,r,n){let i=n.left,a=n.right;return Di(i,a),t.decisionMap[qp(e,"Option",r.idx)]=i,n}function zf(t,e){return t.decisionStates.push(e),e.decision=t.decisionStates.length-1,e.decision}function N1(t,e,r,n,...i){let a=ia(t,e,n,{type:JYe,start:r});r.end=a;for(let l of i)l!==void 0?(Di(r,l.left),Di(l.right,a)):Di(r,a);let s={left:r,right:a};return t.decisionMap[qp(e,hXe(n),n.idx)]=r,s}function hXe(t){if(t instanceof Dn)return"Alternation";if(t instanceof dn)return"Option";if(t instanceof zr)return"Repetition";if(t instanceof _n)return"RepetitionWithSeparator";if(t instanceof Bn)return"RepetitionMandatory";if(t instanceof Fn)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function fXe(t,e){let r=e.length;for(let a=0;a{"use strict";Vm();ER();Ff();o(qp,"buildATNKey");$f=1,ZYe=2,Npe=4,Mpe=5,R1=7,JYe=8,eXe=9,tXe=10,rXe=11,Ipe=12,yb=class{static{o(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},D1=class extends yb{static{o(this,"AtomTransition")}constructor(e,r){super(e),this.tokenType=r}},vb=class extends yb{static{o(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},L1=class extends yb{static{o(this,"RuleTransition")}constructor(e,r,n){super(e),this.rule=r,this.followState=n}isEpsilon(){return!0}};o(Ope,"createATN");o(nXe,"createRuleStartAndStopATNStates");o(Ppe,"atom");o(iXe,"repetition");o(aXe,"repetitionSep");o(sXe,"repetitionMandatory");o(oXe,"repetitionMandatorySep");o(lXe,"alternation");o(cXe,"option");o(Wp,"block");o(Bpe,"plus");o(Fpe,"star");o(uXe,"optional");o(zf,"defineDecisionState");o(N1,"makeAlts");o(hXe,"getProdType");o(fXe,"makeBlock");o(xP,"tokenRef");o(dXe,"ruleRef");o(pXe,"buildRuleHandle");o(Di,"epsilon");o(ia,"newState");o(bP,"addTransition");o(mXe,"removeState")});function TP(t,e=!0){return`${e?`a${t.alt}`:""}s${t.state.stateNumber}:${t.stack.map(r=>r.stateNumber.toString()).join("_")}`}var xb,M1,zpe=N(()=>{"use strict";Vm();xb={},M1=class{static{o(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let r=TP(e);r in this.map||(this.map[r]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return rt(this.configs,e=>e.alt)}get key(){let e="";for(let r in this.map)e+=r+":";return e}};o(TP,"getATNConfigKey")});function gXe(t,e){let r={};return n=>{let i=n.toString(),a=r[i];return a!==void 0||(a={atnStartState:t,decision:e,states:{}},r[i]=a),a}}function Vpe(t,e=!0){let r=new Set;for(let n of t){let i=new Set;for(let a of n){if(a===void 0){if(e)break;return!1}let s=[a.tokenTypeIdx].concat(a.categoryMatches);for(let l of s)if(r.has(l)){if(!i.has(l))return!1}else r.add(l),i.add(l)}}return!0}function yXe(t){let e=t.decisionStates.length,r=Array(e);for(let n=0;nKu(i)).join(", "),r=t.production.idx===0?"":t.production.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(", ")}> in <${wXe(t.production)}${r}> inside <${t.topLevelRule.name}> Rule, <${e}> may appears as a prefix path in all these alternatives. `;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,n}function $Be(t){if(t instanceof on)return"SUBRULE";if(t instanceof ln)return"OPTION";if(t instanceof Tn)return"OR";if(t instanceof Ln)return"AT_LEAST_ONE";if(t instanceof Rn)return"AT_LEAST_ONE_SEP";if(t instanceof wn)return"MANY_SEP";if(t instanceof Or)return"MANY";if(t instanceof kr)return"CONSUME";throw Error("non exhaustive match")}function zBe(t,e,r){let n=ya(e.configs.elements,a=>a.state.transitions),i=Qre(n.filter(a=>a instanceof Qg).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:t}}function GBe(t,e){return t.edges[e.tokenTypeIdx]}function VBe(t,e,r){let n=new t1,i=[];for(let s of t.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===Jg){i.push(s);continue}let l=s.state.transitions.length;for(let u=0;u0&&!YBe(a))for(let s of i)a.add(s);return a}function UBe(t,e){if(t instanceof Qg&&sx(e,t.tokenType))return t.target}function HBe(t,e){let r;for(let n of t.elements)if(e.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}function Toe(t){return{configs:t,edges:{},isAcceptState:!1,prediction:-1}}function woe(t,e,r,n){return n=koe(t,n),e.edges[r.tokenTypeIdx]=n,n}function koe(t,e){if(e===Tx)return e;let r=e.configs.key,n=t.states[r];return n!==void 0?n:(e.configs.finalize(),t.states[r]=e,e)}function WBe(t){let e=new t1,r=t.transitions.length;for(let n=0;n0){let i=[...t.stack],s={state:i.pop(),alt:t.alt,stack:i};uE(s,e)}else e.add(t);return}r.epsilonOnlyTransitions||e.add(t);let n=r.transitions.length;for(let i=0;i1)return!0;return!1}function ZBe(t){for(let e of Array.from(t.values()))if(Object.keys(e).length===1)return!0;return!1}var cE,xoe,kx,Eoe=N(()=>{"use strict";cf();yoe();voe();BL();RL();Zre();Im();uT();$T();HT();GL();o(MBe,"createDFACache");cE=class{static{o(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,r){this.predicates[e]=r}toString(){let e="",r=this.predicates.length;for(let n=0;nconsole.log(n)}initialize(e){this.atn=doe(e.rules),this.dfas=IBe(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:r,rule:n,hasPredicates:i,dynamicTokensEnabled:a}=e,s=this.dfas,l=this.logging,u=fp(n,"Alternation",r),f=this.atn.decisionMap[u].decision,d=Je(Gk({maxLookahead:1,occurrence:r,prodType:"Alternation",rule:n}),p=>Je(p,m=>m[0]));if(boe(d,!1)&&!a){let p=Xr(d,(m,g,y)=>(Ae(g,v=>{v&&(m[v.tokenTypeIdx]=y,Ae(v.categoryMatches,x=>{m[x]=y}))}),m),{});return i?function(m){var g;let y=this.LA(1),v=p[y.tokenTypeIdx];if(m!==void 0&&v!==void 0){let x=(g=m[v])===null||g===void 0?void 0:g.GATE;if(x!==void 0&&x.call(this)===!1)return}return v}:function(){let m=this.LA(1);return p[m.tokenTypeIdx]}}else return i?function(p){let m=new cE,g=p===void 0?0:p.length;for(let v=0;vJe(p,m=>m[0]));if(boe(d)&&d[0][0]&&!a){let p=d[0],m=qr(p);if(m.length===1&&ur(m[0].categoryMatches)){let y=m[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===y}}else{let g=Xr(m,(y,v)=>(v!==void 0&&(y[v.tokenTypeIdx]=!0,Ae(v.categoryMatches,x=>{y[x]=!0})),y),{});return function(){let y=this.LA(1);return g[y.tokenTypeIdx]===!0}}}return function(){let p=eM.call(this,s,f,xoe,l);return typeof p=="object"?!1:p===0}}};o(boe,"isLL1Sequence");o(IBe,"initATNSimulator");o(eM,"adaptivePredict");o(OBe,"performLookahead");o(PBe,"computeLookaheadTarget");o(BBe,"reportLookaheadAmbiguity");o(FBe,"buildAmbiguityError");o($Be,"getProductionDslName");o(zBe,"buildAdaptivePredictError");o(GBe,"getExistingTargetState");o(VBe,"computeReachSet");o(UBe,"getReachableTarget");o(HBe,"getUniqueAlt");o(Toe,"newDFAState");o(woe,"addDFAEdge");o(koe,"addDFAState");o(WBe,"computeStartState");o(uE,"closure");o(qBe,"getEpsilonTarget");o(YBe,"hasConfigInRuleStopState");o(XBe,"allConfigsInRuleStopStates");o(jBe,"hasConflictTerminatingPrediction");o(KBe,"getConflictingAltSets");o(QBe,"hasConflictingAltSet");o(ZBe,"hasStateAssociatedWithOneAlt")});var Soe=N(()=>{"use strict";Eoe()});var Coe,tM,Aoe,hE,jr,Pr,fE,_oe,rM,Doe,Loe,Roe,Noe,nM,Moe,Ioe,Ooe,dE,r1,n1,iM,i1,Poe,aM,sM,oM,lM,cM,Boe,Foe,uM,$oe,hM,Ex,zoe,Goe,Voe,Uoe,Hoe,Woe,qoe,Yoe,pE,Xoe,joe,Koe,Qoe,Zoe,Joe,ele,tle,rle,nle,ile,mE,ale,sle,ole,lle,cle,ule,hle,fle,dle,ple,mle,gle,yle,fM,dM,vle,xle,ble,wle,Tle,kle,Ele,Sle,Cle,pM,Fe,mM=N(()=>{"use strict";(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(Coe||(Coe={}));(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(tM||(tM={}));(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(Aoe||(Aoe={}));(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(hE||(hE={}));(function(t){function e(n,i){return n===Number.MAX_VALUE&&(n=hE.MAX_VALUE),i===Number.MAX_VALUE&&(i=hE.MAX_VALUE),{line:n,character:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.uinteger(i.line)&&Fe.uinteger(i.character)}o(r,"is"),t.is=r})(jr||(jr={}));(function(t){function e(n,i,a,s){if(Fe.uinteger(n)&&Fe.uinteger(i)&&Fe.uinteger(a)&&Fe.uinteger(s))return{start:jr.create(n,i),end:jr.create(a,s)};if(jr.is(n)&&jr.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&jr.is(i.start)&&jr.is(i.end)}o(r,"is"),t.is=r})(Pr||(Pr={}));(function(t){function e(n,i){return{uri:n,range:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Pr.is(i.range)&&(Fe.string(i.uri)||Fe.undefined(i.uri))}o(r,"is"),t.is=r})(fE||(fE={}));(function(t){function e(n,i,a,s){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Pr.is(i.targetRange)&&Fe.string(i.targetUri)&&Pr.is(i.targetSelectionRange)&&(Pr.is(i.originSelectionRange)||Fe.undefined(i.originSelectionRange))}o(r,"is"),t.is=r})(_oe||(_oe={}));(function(t){function e(n,i,a,s){return{red:n,green:i,blue:a,alpha:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.numberRange(i.red,0,1)&&Fe.numberRange(i.green,0,1)&&Fe.numberRange(i.blue,0,1)&&Fe.numberRange(i.alpha,0,1)}o(r,"is"),t.is=r})(rM||(rM={}));(function(t){function e(n,i){return{range:n,color:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Pr.is(i.range)&&rM.is(i.color)}o(r,"is"),t.is=r})(Doe||(Doe={}));(function(t){function e(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.string(i.label)&&(Fe.undefined(i.textEdit)||n1.is(i))&&(Fe.undefined(i.additionalTextEdits)||Fe.typedArray(i.additionalTextEdits,n1.is))}o(r,"is"),t.is=r})(Loe||(Loe={}));(function(t){t.Comment="comment",t.Imports="imports",t.Region="region"})(Roe||(Roe={}));(function(t){function e(n,i,a,s,l,u){let h={startLine:n,endLine:i};return Fe.defined(a)&&(h.startCharacter=a),Fe.defined(s)&&(h.endCharacter=s),Fe.defined(l)&&(h.kind=l),Fe.defined(u)&&(h.collapsedText=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.uinteger(i.startLine)&&Fe.uinteger(i.startLine)&&(Fe.undefined(i.startCharacter)||Fe.uinteger(i.startCharacter))&&(Fe.undefined(i.endCharacter)||Fe.uinteger(i.endCharacter))&&(Fe.undefined(i.kind)||Fe.string(i.kind))}o(r,"is"),t.is=r})(Noe||(Noe={}));(function(t){function e(n,i){return{location:n,message:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&fE.is(i.location)&&Fe.string(i.message)}o(r,"is"),t.is=r})(nM||(nM={}));(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(Moe||(Moe={}));(function(t){t.Unnecessary=1,t.Deprecated=2})(Ioe||(Ioe={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(n)&&Fe.string(n.href)}o(e,"is"),t.is=e})(Ooe||(Ooe={}));(function(t){function e(n,i,a,s,l,u){let h={range:n,message:i};return Fe.defined(a)&&(h.severity=a),Fe.defined(s)&&(h.code=s),Fe.defined(l)&&(h.source=l),Fe.defined(u)&&(h.relatedInformation=u),h}o(e,"create"),t.create=e;function r(n){var i;let a=n;return Fe.defined(a)&&Pr.is(a.range)&&Fe.string(a.message)&&(Fe.number(a.severity)||Fe.undefined(a.severity))&&(Fe.integer(a.code)||Fe.string(a.code)||Fe.undefined(a.code))&&(Fe.undefined(a.codeDescription)||Fe.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(Fe.string(a.source)||Fe.undefined(a.source))&&(Fe.undefined(a.relatedInformation)||Fe.typedArray(a.relatedInformation,nM.is))}o(r,"is"),t.is=r})(dE||(dE={}));(function(t){function e(n,i,...a){let s={title:n,command:i};return Fe.defined(a)&&a.length>0&&(s.arguments=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.title)&&Fe.string(i.command)}o(r,"is"),t.is=r})(r1||(r1={}));(function(t){function e(a,s){return{range:a,newText:s}}o(e,"replace"),t.replace=e;function r(a,s){return{range:{start:a,end:a},newText:s}}o(r,"insert"),t.insert=r;function n(a){return{range:a,newText:""}}o(n,"del"),t.del=n;function i(a){let s=a;return Fe.objectLiteral(s)&&Fe.string(s.newText)&&Pr.is(s.range)}o(i,"is"),t.is=i})(n1||(n1={}));(function(t){function e(n,i,a){let s={label:n};return i!==void 0&&(s.needsConfirmation=i),a!==void 0&&(s.description=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.string(i.label)&&(Fe.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(Fe.string(i.description)||i.description===void 0)}o(r,"is"),t.is=r})(iM||(iM={}));(function(t){function e(r){let n=r;return Fe.string(n)}o(e,"is"),t.is=e})(i1||(i1={}));(function(t){function e(a,s,l){return{range:a,newText:s,annotationId:l}}o(e,"replace"),t.replace=e;function r(a,s,l){return{range:{start:a,end:a},newText:s,annotationId:l}}o(r,"insert"),t.insert=r;function n(a,s){return{range:a,newText:"",annotationId:s}}o(n,"del"),t.del=n;function i(a){let s=a;return n1.is(s)&&(iM.is(s.annotationId)||i1.is(s.annotationId))}o(i,"is"),t.is=i})(Poe||(Poe={}));(function(t){function e(n,i){return{textDocument:n,edits:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&uM.is(i.textDocument)&&Array.isArray(i.edits)}o(r,"is"),t.is=r})(aM||(aM={}));(function(t){function e(n,i,a){let s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="create"&&Fe.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||Fe.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Fe.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||i1.is(i.annotationId))}o(r,"is"),t.is=r})(sM||(sM={}));(function(t){function e(n,i,a,s){let l={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="rename"&&Fe.string(i.oldUri)&&Fe.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||Fe.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Fe.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||i1.is(i.annotationId))}o(r,"is"),t.is=r})(oM||(oM={}));(function(t){function e(n,i,a){let s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="delete"&&Fe.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||Fe.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||Fe.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||i1.is(i.annotationId))}o(r,"is"),t.is=r})(lM||(lM={}));(function(t){function e(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>Fe.string(i.kind)?sM.is(i)||oM.is(i)||lM.is(i):aM.is(i)))}o(e,"is"),t.is=e})(cM||(cM={}));(function(t){function e(n){return{uri:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)}o(r,"is"),t.is=r})(Boe||(Boe={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)&&Fe.integer(i.version)}o(r,"is"),t.is=r})(Foe||(Foe={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)&&(i.version===null||Fe.integer(i.version))}o(r,"is"),t.is=r})(uM||(uM={}));(function(t){function e(n,i,a,s){return{uri:n,languageId:i,version:a,text:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)&&Fe.string(i.languageId)&&Fe.integer(i.version)&&Fe.string(i.text)}o(r,"is"),t.is=r})($oe||($oe={}));(function(t){t.PlainText="plaintext",t.Markdown="markdown";function e(r){let n=r;return n===t.PlainText||n===t.Markdown}o(e,"is"),t.is=e})(hM||(hM={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(r)&&hM.is(n.kind)&&Fe.string(n.value)}o(e,"is"),t.is=e})(Ex||(Ex={}));(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(zoe||(zoe={}));(function(t){t.PlainText=1,t.Snippet=2})(Goe||(Goe={}));(function(t){t.Deprecated=1})(Voe||(Voe={}));(function(t){function e(n,i,a){return{newText:n,insert:i,replace:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Fe.string(i.newText)&&Pr.is(i.insert)&&Pr.is(i.replace)}o(r,"is"),t.is=r})(Uoe||(Uoe={}));(function(t){t.asIs=1,t.adjustIndentation=2})(Hoe||(Hoe={}));(function(t){function e(r){let n=r;return n&&(Fe.string(n.detail)||n.detail===void 0)&&(Fe.string(n.description)||n.description===void 0)}o(e,"is"),t.is=e})(Woe||(Woe={}));(function(t){function e(r){return{label:r}}o(e,"create"),t.create=e})(qoe||(qoe={}));(function(t){function e(r,n){return{items:r||[],isIncomplete:!!n}}o(e,"create"),t.create=e})(Yoe||(Yoe={}));(function(t){function e(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}o(e,"fromPlainText"),t.fromPlainText=e;function r(n){let i=n;return Fe.string(i)||Fe.objectLiteral(i)&&Fe.string(i.language)&&Fe.string(i.value)}o(r,"is"),t.is=r})(pE||(pE={}));(function(t){function e(r){let n=r;return!!n&&Fe.objectLiteral(n)&&(Ex.is(n.contents)||pE.is(n.contents)||Fe.typedArray(n.contents,pE.is))&&(r.range===void 0||Pr.is(r.range))}o(e,"is"),t.is=e})(Xoe||(Xoe={}));(function(t){function e(r,n){return n?{label:r,documentation:n}:{label:r}}o(e,"create"),t.create=e})(joe||(joe={}));(function(t){function e(r,n,...i){let a={label:r};return Fe.defined(n)&&(a.documentation=n),Fe.defined(i)?a.parameters=i:a.parameters=[],a}o(e,"create"),t.create=e})(Koe||(Koe={}));(function(t){t.Text=1,t.Read=2,t.Write=3})(Qoe||(Qoe={}));(function(t){function e(r,n){let i={range:r};return Fe.number(n)&&(i.kind=n),i}o(e,"create"),t.create=e})(Zoe||(Zoe={}));(function(t){t.File=1,t.Module=2,t.Namespace=3,t.Package=4,t.Class=5,t.Method=6,t.Property=7,t.Field=8,t.Constructor=9,t.Enum=10,t.Interface=11,t.Function=12,t.Variable=13,t.Constant=14,t.String=15,t.Number=16,t.Boolean=17,t.Array=18,t.Object=19,t.Key=20,t.Null=21,t.EnumMember=22,t.Struct=23,t.Event=24,t.Operator=25,t.TypeParameter=26})(Joe||(Joe={}));(function(t){t.Deprecated=1})(ele||(ele={}));(function(t){function e(r,n,i,a,s){let l={name:r,kind:n,location:{uri:a,range:i}};return s&&(l.containerName=s),l}o(e,"create"),t.create=e})(tle||(tle={}));(function(t){function e(r,n,i,a){return a!==void 0?{name:r,kind:n,location:{uri:i,range:a}}:{name:r,kind:n,location:{uri:i}}}o(e,"create"),t.create=e})(rle||(rle={}));(function(t){function e(n,i,a,s,l,u){let h={name:n,detail:i,kind:a,range:s,selectionRange:l};return u!==void 0&&(h.children=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Fe.string(i.name)&&Fe.number(i.kind)&&Pr.is(i.range)&&Pr.is(i.selectionRange)&&(i.detail===void 0||Fe.string(i.detail))&&(i.deprecated===void 0||Fe.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}o(r,"is"),t.is=r})(nle||(nle={}));(function(t){t.Empty="",t.QuickFix="quickfix",t.Refactor="refactor",t.RefactorExtract="refactor.extract",t.RefactorInline="refactor.inline",t.RefactorRewrite="refactor.rewrite",t.Source="source",t.SourceOrganizeImports="source.organizeImports",t.SourceFixAll="source.fixAll"})(ile||(ile={}));(function(t){t.Invoked=1,t.Automatic=2})(mE||(mE={}));(function(t){function e(n,i,a){let s={diagnostics:n};return i!=null&&(s.only=i),a!=null&&(s.triggerKind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.typedArray(i.diagnostics,dE.is)&&(i.only===void 0||Fe.typedArray(i.only,Fe.string))&&(i.triggerKind===void 0||i.triggerKind===mE.Invoked||i.triggerKind===mE.Automatic)}o(r,"is"),t.is=r})(ale||(ale={}));(function(t){function e(n,i,a){let s={title:n},l=!0;return typeof i=="string"?(l=!1,s.kind=i):r1.is(i)?s.command=i:s.edit=i,l&&a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Fe.string(i.title)&&(i.diagnostics===void 0||Fe.typedArray(i.diagnostics,dE.is))&&(i.kind===void 0||Fe.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||r1.is(i.command))&&(i.isPreferred===void 0||Fe.boolean(i.isPreferred))&&(i.edit===void 0||cM.is(i.edit))}o(r,"is"),t.is=r})(sle||(sle={}));(function(t){function e(n,i){let a={range:n};return Fe.defined(i)&&(a.data=i),a}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Pr.is(i.range)&&(Fe.undefined(i.command)||r1.is(i.command))}o(r,"is"),t.is=r})(ole||(ole={}));(function(t){function e(n,i){return{tabSize:n,insertSpaces:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.uinteger(i.tabSize)&&Fe.boolean(i.insertSpaces)}o(r,"is"),t.is=r})(lle||(lle={}));(function(t){function e(n,i,a){return{range:n,target:i,data:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Pr.is(i.range)&&(Fe.undefined(i.target)||Fe.string(i.target))}o(r,"is"),t.is=r})(cle||(cle={}));(function(t){function e(n,i){return{range:n,parent:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Pr.is(i.range)&&(i.parent===void 0||t.is(i.parent))}o(r,"is"),t.is=r})(ule||(ule={}));(function(t){t.namespace="namespace",t.type="type",t.class="class",t.enum="enum",t.interface="interface",t.struct="struct",t.typeParameter="typeParameter",t.parameter="parameter",t.variable="variable",t.property="property",t.enumMember="enumMember",t.event="event",t.function="function",t.method="method",t.macro="macro",t.keyword="keyword",t.modifier="modifier",t.comment="comment",t.string="string",t.number="number",t.regexp="regexp",t.operator="operator",t.decorator="decorator"})(hle||(hle={}));(function(t){t.declaration="declaration",t.definition="definition",t.readonly="readonly",t.static="static",t.deprecated="deprecated",t.abstract="abstract",t.async="async",t.modification="modification",t.documentation="documentation",t.defaultLibrary="defaultLibrary"})(fle||(fle={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}o(e,"is"),t.is=e})(dle||(dle={}));(function(t){function e(n,i){return{range:n,text:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Pr.is(i.range)&&Fe.string(i.text)}o(r,"is"),t.is=r})(ple||(ple={}));(function(t){function e(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Pr.is(i.range)&&Fe.boolean(i.caseSensitiveLookup)&&(Fe.string(i.variableName)||i.variableName===void 0)}o(r,"is"),t.is=r})(mle||(mle={}));(function(t){function e(n,i){return{range:n,expression:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Pr.is(i.range)&&(Fe.string(i.expression)||i.expression===void 0)}o(r,"is"),t.is=r})(gle||(gle={}));(function(t){function e(n,i){return{frameId:n,stoppedLocation:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Pr.is(n.stoppedLocation)}o(r,"is"),t.is=r})(yle||(yle={}));(function(t){t.Type=1,t.Parameter=2;function e(r){return r===1||r===2}o(e,"is"),t.is=e})(fM||(fM={}));(function(t){function e(n){return{value:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&(i.tooltip===void 0||Fe.string(i.tooltip)||Ex.is(i.tooltip))&&(i.location===void 0||fE.is(i.location))&&(i.command===void 0||r1.is(i.command))}o(r,"is"),t.is=r})(dM||(dM={}));(function(t){function e(n,i,a){let s={position:n,label:i};return a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&jr.is(i.position)&&(Fe.string(i.label)||Fe.typedArray(i.label,dM.is))&&(i.kind===void 0||fM.is(i.kind))&&i.textEdits===void 0||Fe.typedArray(i.textEdits,n1.is)&&(i.tooltip===void 0||Fe.string(i.tooltip)||Ex.is(i.tooltip))&&(i.paddingLeft===void 0||Fe.boolean(i.paddingLeft))&&(i.paddingRight===void 0||Fe.boolean(i.paddingRight))}o(r,"is"),t.is=r})(vle||(vle={}));(function(t){function e(r){return{kind:"snippet",value:r}}o(e,"createSnippet"),t.createSnippet=e})(xle||(xle={}));(function(t){function e(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}o(e,"create"),t.create=e})(ble||(ble={}));(function(t){function e(r){return{items:r}}o(e,"create"),t.create=e})(wle||(wle={}));(function(t){t.Invoked=0,t.Automatic=1})(Tle||(Tle={}));(function(t){function e(r,n){return{range:r,text:n}}o(e,"create"),t.create=e})(kle||(kle={}));(function(t){function e(r,n){return{triggerKind:r,selectedCompletionInfo:n}}o(e,"create"),t.create=e})(Ele||(Ele={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(n)&&tM.is(n.uri)&&Fe.string(n.name)}o(e,"is"),t.is=e})(Sle||(Sle={}));(function(t){function e(a,s,l,u){return new pM(a,s,l,u)}o(e,"create"),t.create=e;function r(a){let s=a;return!!(Fe.defined(s)&&Fe.string(s.uri)&&(Fe.undefined(s.languageId)||Fe.string(s.languageId))&&Fe.uinteger(s.lineCount)&&Fe.func(s.getText)&&Fe.func(s.positionAt)&&Fe.func(s.offsetAt))}o(r,"is"),t.is=r;function n(a,s){let l=a.getText(),u=i(s,(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),h=l.length;for(let f=u.length-1;f>=0;f--){let d=u[f],p=a.offsetAt(d.range.start),m=a.offsetAt(d.range.end);if(m<=h)l=l.substring(0,p)+d.newText+l.substring(m,l.length);else throw new Error("Overlapping edit");h=p}return l}o(n,"applyEdits"),t.applyEdits=n;function i(a,s){if(a.length<=1)return a;let l=a.length/2|0,u=a.slice(0,l),h=a.slice(l);i(u,s),i(h,s);let f=0,d=0,p=0;for(;fa.state.transitions),i=Uae(n.filter(a=>a instanceof D1).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:t}}function EXe(t,e){return t.edges[e.tokenTypeIdx]}function SXe(t,e,r){let n=new M1,i=[];for(let s of t.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===R1){i.push(s);continue}let l=s.state.transitions.length;for(let u=0;u0&&!LXe(a))for(let s of i)a.add(s);return a}function CXe(t,e){if(t instanceof D1&&nb(e,t.tokenType))return t.target}function AXe(t,e){let r;for(let n of t.elements)if(e.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}function Hpe(t){return{configs:t,edges:{},isAcceptState:!1,prediction:-1}}function Upe(t,e,r,n){return n=qpe(t,n),e.edges[r.tokenTypeIdx]=n,n}function qpe(t,e){if(e===xb)return e;let r=e.configs.key,n=t.states[r];return n!==void 0?n:(e.configs.finalize(),t.states[r]=e,e)}function _Xe(t){let e=new M1,r=t.transitions.length;for(let n=0;n0){let i=[...t.stack],s={state:i.pop(),alt:t.alt,stack:i};NS(s,e)}else e.add(t);return}r.epsilonOnlyTransitions||e.add(t);let n=r.transitions.length;for(let i=0;i1)return!0;return!1}function OXe(t){for(let e of Array.from(t.values()))if(Object.keys(e).length===1)return!0;return!1}var RS,Gpe,bb,Wpe=N(()=>{"use strict";Ff();$pe();zpe();NR();CR();Hae();Vm();Lw();ak();uk();PR();o(gXe,"createDFACache");RS=class{static{o(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,r){this.predicates[e]=r}toString(){let e="",r=this.predicates.length;for(let n=0;nconsole.log(n))}initialize(e){this.atn=Ope(e.rules),this.dfas=yXe(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:r,rule:n,hasPredicates:i,dynamicTokensEnabled:a}=e,s=this.dfas,l=this.logging,u=qp(n,"Alternation",r),f=this.atn.decisionMap[u].decision,d=rt(cS({maxLookahead:1,occurrence:r,prodType:"Alternation",rule:n}),p=>rt(p,m=>m[0]));if(Vpe(d,!1)&&!a){let p=Jr(d,(m,g,y)=>(Ae(g,v=>{v&&(m[v.tokenTypeIdx]=y,Ae(v.categoryMatches,x=>{m[x]=y}))}),m),{});return i?function(m){var g;let y=this.LA(1),v=p[y.tokenTypeIdx];if(m!==void 0&&v!==void 0){let x=(g=m[v])===null||g===void 0?void 0:g.GATE;if(x!==void 0&&x.call(this)===!1)return}return v}:function(){let m=this.LA(1);return p[m.tokenTypeIdx]}}else return i?function(p){let m=new RS,g=p===void 0?0:p.length;for(let v=0;vrt(p,m=>m[0]));if(Vpe(d)&&d[0][0]&&!a){let p=d[0],m=Qr(p);if(m.length===1&&mr(m[0].categoryMatches)){let y=m[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===y}}else{let g=Jr(m,(y,v)=>(v!==void 0&&(y[v.tokenTypeIdx]=!0,Ae(v.categoryMatches,x=>{y[x]=!0})),y),{});return function(){let y=this.LA(1);return g[y.tokenTypeIdx]===!0}}}return function(){let p=wP.call(this,s,f,Gpe,l);return typeof p=="object"?!1:p===0}}};o(Vpe,"isLL1Sequence");o(yXe,"initATNSimulator");o(wP,"adaptivePredict");o(vXe,"performLookahead");o(xXe,"computeLookaheadTarget");o(bXe,"reportLookaheadAmbiguity");o(TXe,"buildAmbiguityError");o(wXe,"getProductionDslName");o(kXe,"buildAdaptivePredictError");o(EXe,"getExistingTargetState");o(SXe,"computeReachSet");o(CXe,"getReachableTarget");o(AXe,"getUniqueAlt");o(Hpe,"newDFAState");o(Upe,"addDFAEdge");o(qpe,"addDFAState");o(_Xe,"computeStartState");o(NS,"closure");o(DXe,"getEpsilonTarget");o(LXe,"hasConfigInRuleStopState");o(RXe,"allConfigsInRuleStopStates");o(NXe,"hasConflictTerminatingPrediction");o(MXe,"getConflictingAltSets");o(IXe,"hasConflictingAltSet");o(OXe,"hasStateAssociatedWithOneAlt")});var Ype=N(()=>{"use strict";Wpe()});var Xpe,kP,jpe,MS,tn,Gr,IS,Kpe,EP,Qpe,Zpe,Jpe,e0e,SP,t0e,r0e,n0e,OS,I1,O1,CP,P1,i0e,AP,_P,DP,LP,RP,a0e,s0e,NP,o0e,MP,Tb,l0e,c0e,u0e,h0e,f0e,d0e,p0e,m0e,PS,g0e,y0e,v0e,x0e,b0e,T0e,w0e,k0e,E0e,S0e,C0e,BS,A0e,_0e,D0e,L0e,R0e,N0e,M0e,I0e,O0e,P0e,B0e,F0e,$0e,IP,OP,z0e,G0e,V0e,U0e,H0e,q0e,W0e,Y0e,X0e,PP,Ge,BP=N(()=>{"use strict";(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(Xpe||(Xpe={}));(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(kP||(kP={}));(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(jpe||(jpe={}));(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(MS||(MS={}));(function(t){function e(n,i){return n===Number.MAX_VALUE&&(n=MS.MAX_VALUE),i===Number.MAX_VALUE&&(i=MS.MAX_VALUE),{line:n,character:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.uinteger(i.line)&&Ge.uinteger(i.character)}o(r,"is"),t.is=r})(tn||(tn={}));(function(t){function e(n,i,a,s){if(Ge.uinteger(n)&&Ge.uinteger(i)&&Ge.uinteger(a)&&Ge.uinteger(s))return{start:tn.create(n,i),end:tn.create(a,s)};if(tn.is(n)&&tn.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&tn.is(i.start)&&tn.is(i.end)}o(r,"is"),t.is=r})(Gr||(Gr={}));(function(t){function e(n,i){return{uri:n,range:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.range)&&(Ge.string(i.uri)||Ge.undefined(i.uri))}o(r,"is"),t.is=r})(IS||(IS={}));(function(t){function e(n,i,a,s){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.targetRange)&&Ge.string(i.targetUri)&&Gr.is(i.targetSelectionRange)&&(Gr.is(i.originSelectionRange)||Ge.undefined(i.originSelectionRange))}o(r,"is"),t.is=r})(Kpe||(Kpe={}));(function(t){function e(n,i,a,s){return{red:n,green:i,blue:a,alpha:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.numberRange(i.red,0,1)&&Ge.numberRange(i.green,0,1)&&Ge.numberRange(i.blue,0,1)&&Ge.numberRange(i.alpha,0,1)}o(r,"is"),t.is=r})(EP||(EP={}));(function(t){function e(n,i){return{range:n,color:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.range)&&EP.is(i.color)}o(r,"is"),t.is=r})(Qpe||(Qpe={}));(function(t){function e(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.string(i.label)&&(Ge.undefined(i.textEdit)||O1.is(i))&&(Ge.undefined(i.additionalTextEdits)||Ge.typedArray(i.additionalTextEdits,O1.is))}o(r,"is"),t.is=r})(Zpe||(Zpe={}));(function(t){t.Comment="comment",t.Imports="imports",t.Region="region"})(Jpe||(Jpe={}));(function(t){function e(n,i,a,s,l,u){let h={startLine:n,endLine:i};return Ge.defined(a)&&(h.startCharacter=a),Ge.defined(s)&&(h.endCharacter=s),Ge.defined(l)&&(h.kind=l),Ge.defined(u)&&(h.collapsedText=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.uinteger(i.startLine)&&Ge.uinteger(i.startLine)&&(Ge.undefined(i.startCharacter)||Ge.uinteger(i.startCharacter))&&(Ge.undefined(i.endCharacter)||Ge.uinteger(i.endCharacter))&&(Ge.undefined(i.kind)||Ge.string(i.kind))}o(r,"is"),t.is=r})(e0e||(e0e={}));(function(t){function e(n,i){return{location:n,message:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&IS.is(i.location)&&Ge.string(i.message)}o(r,"is"),t.is=r})(SP||(SP={}));(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(t0e||(t0e={}));(function(t){t.Unnecessary=1,t.Deprecated=2})(r0e||(r0e={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(n)&&Ge.string(n.href)}o(e,"is"),t.is=e})(n0e||(n0e={}));(function(t){function e(n,i,a,s,l,u){let h={range:n,message:i};return Ge.defined(a)&&(h.severity=a),Ge.defined(s)&&(h.code=s),Ge.defined(l)&&(h.source=l),Ge.defined(u)&&(h.relatedInformation=u),h}o(e,"create"),t.create=e;function r(n){var i;let a=n;return Ge.defined(a)&&Gr.is(a.range)&&Ge.string(a.message)&&(Ge.number(a.severity)||Ge.undefined(a.severity))&&(Ge.integer(a.code)||Ge.string(a.code)||Ge.undefined(a.code))&&(Ge.undefined(a.codeDescription)||Ge.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(Ge.string(a.source)||Ge.undefined(a.source))&&(Ge.undefined(a.relatedInformation)||Ge.typedArray(a.relatedInformation,SP.is))}o(r,"is"),t.is=r})(OS||(OS={}));(function(t){function e(n,i,...a){let s={title:n,command:i};return Ge.defined(a)&&a.length>0&&(s.arguments=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.title)&&Ge.string(i.command)}o(r,"is"),t.is=r})(I1||(I1={}));(function(t){function e(a,s){return{range:a,newText:s}}o(e,"replace"),t.replace=e;function r(a,s){return{range:{start:a,end:a},newText:s}}o(r,"insert"),t.insert=r;function n(a){return{range:a,newText:""}}o(n,"del"),t.del=n;function i(a){let s=a;return Ge.objectLiteral(s)&&Ge.string(s.newText)&&Gr.is(s.range)}o(i,"is"),t.is=i})(O1||(O1={}));(function(t){function e(n,i,a){let s={label:n};return i!==void 0&&(s.needsConfirmation=i),a!==void 0&&(s.description=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.string(i.label)&&(Ge.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(Ge.string(i.description)||i.description===void 0)}o(r,"is"),t.is=r})(CP||(CP={}));(function(t){function e(r){let n=r;return Ge.string(n)}o(e,"is"),t.is=e})(P1||(P1={}));(function(t){function e(a,s,l){return{range:a,newText:s,annotationId:l}}o(e,"replace"),t.replace=e;function r(a,s,l){return{range:{start:a,end:a},newText:s,annotationId:l}}o(r,"insert"),t.insert=r;function n(a,s){return{range:a,newText:"",annotationId:s}}o(n,"del"),t.del=n;function i(a){let s=a;return O1.is(s)&&(CP.is(s.annotationId)||P1.is(s.annotationId))}o(i,"is"),t.is=i})(i0e||(i0e={}));(function(t){function e(n,i){return{textDocument:n,edits:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&NP.is(i.textDocument)&&Array.isArray(i.edits)}o(r,"is"),t.is=r})(AP||(AP={}));(function(t){function e(n,i,a){let s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="create"&&Ge.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||Ge.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Ge.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||P1.is(i.annotationId))}o(r,"is"),t.is=r})(_P||(_P={}));(function(t){function e(n,i,a,s){let l={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="rename"&&Ge.string(i.oldUri)&&Ge.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||Ge.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Ge.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||P1.is(i.annotationId))}o(r,"is"),t.is=r})(DP||(DP={}));(function(t){function e(n,i,a){let s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="delete"&&Ge.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||Ge.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||Ge.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||P1.is(i.annotationId))}o(r,"is"),t.is=r})(LP||(LP={}));(function(t){function e(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>Ge.string(i.kind)?_P.is(i)||DP.is(i)||LP.is(i):AP.is(i)))}o(e,"is"),t.is=e})(RP||(RP={}));(function(t){function e(n){return{uri:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)}o(r,"is"),t.is=r})(a0e||(a0e={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)&&Ge.integer(i.version)}o(r,"is"),t.is=r})(s0e||(s0e={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)&&(i.version===null||Ge.integer(i.version))}o(r,"is"),t.is=r})(NP||(NP={}));(function(t){function e(n,i,a,s){return{uri:n,languageId:i,version:a,text:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)&&Ge.string(i.languageId)&&Ge.integer(i.version)&&Ge.string(i.text)}o(r,"is"),t.is=r})(o0e||(o0e={}));(function(t){t.PlainText="plaintext",t.Markdown="markdown";function e(r){let n=r;return n===t.PlainText||n===t.Markdown}o(e,"is"),t.is=e})(MP||(MP={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(r)&&MP.is(n.kind)&&Ge.string(n.value)}o(e,"is"),t.is=e})(Tb||(Tb={}));(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(l0e||(l0e={}));(function(t){t.PlainText=1,t.Snippet=2})(c0e||(c0e={}));(function(t){t.Deprecated=1})(u0e||(u0e={}));(function(t){function e(n,i,a){return{newText:n,insert:i,replace:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Ge.string(i.newText)&&Gr.is(i.insert)&&Gr.is(i.replace)}o(r,"is"),t.is=r})(h0e||(h0e={}));(function(t){t.asIs=1,t.adjustIndentation=2})(f0e||(f0e={}));(function(t){function e(r){let n=r;return n&&(Ge.string(n.detail)||n.detail===void 0)&&(Ge.string(n.description)||n.description===void 0)}o(e,"is"),t.is=e})(d0e||(d0e={}));(function(t){function e(r){return{label:r}}o(e,"create"),t.create=e})(p0e||(p0e={}));(function(t){function e(r,n){return{items:r||[],isIncomplete:!!n}}o(e,"create"),t.create=e})(m0e||(m0e={}));(function(t){function e(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}o(e,"fromPlainText"),t.fromPlainText=e;function r(n){let i=n;return Ge.string(i)||Ge.objectLiteral(i)&&Ge.string(i.language)&&Ge.string(i.value)}o(r,"is"),t.is=r})(PS||(PS={}));(function(t){function e(r){let n=r;return!!n&&Ge.objectLiteral(n)&&(Tb.is(n.contents)||PS.is(n.contents)||Ge.typedArray(n.contents,PS.is))&&(r.range===void 0||Gr.is(r.range))}o(e,"is"),t.is=e})(g0e||(g0e={}));(function(t){function e(r,n){return n?{label:r,documentation:n}:{label:r}}o(e,"create"),t.create=e})(y0e||(y0e={}));(function(t){function e(r,n,...i){let a={label:r};return Ge.defined(n)&&(a.documentation=n),Ge.defined(i)?a.parameters=i:a.parameters=[],a}o(e,"create"),t.create=e})(v0e||(v0e={}));(function(t){t.Text=1,t.Read=2,t.Write=3})(x0e||(x0e={}));(function(t){function e(r,n){let i={range:r};return Ge.number(n)&&(i.kind=n),i}o(e,"create"),t.create=e})(b0e||(b0e={}));(function(t){t.File=1,t.Module=2,t.Namespace=3,t.Package=4,t.Class=5,t.Method=6,t.Property=7,t.Field=8,t.Constructor=9,t.Enum=10,t.Interface=11,t.Function=12,t.Variable=13,t.Constant=14,t.String=15,t.Number=16,t.Boolean=17,t.Array=18,t.Object=19,t.Key=20,t.Null=21,t.EnumMember=22,t.Struct=23,t.Event=24,t.Operator=25,t.TypeParameter=26})(T0e||(T0e={}));(function(t){t.Deprecated=1})(w0e||(w0e={}));(function(t){function e(r,n,i,a,s){let l={name:r,kind:n,location:{uri:a,range:i}};return s&&(l.containerName=s),l}o(e,"create"),t.create=e})(k0e||(k0e={}));(function(t){function e(r,n,i,a){return a!==void 0?{name:r,kind:n,location:{uri:i,range:a}}:{name:r,kind:n,location:{uri:i}}}o(e,"create"),t.create=e})(E0e||(E0e={}));(function(t){function e(n,i,a,s,l,u){let h={name:n,detail:i,kind:a,range:s,selectionRange:l};return u!==void 0&&(h.children=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Ge.string(i.name)&&Ge.number(i.kind)&&Gr.is(i.range)&&Gr.is(i.selectionRange)&&(i.detail===void 0||Ge.string(i.detail))&&(i.deprecated===void 0||Ge.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}o(r,"is"),t.is=r})(S0e||(S0e={}));(function(t){t.Empty="",t.QuickFix="quickfix",t.Refactor="refactor",t.RefactorExtract="refactor.extract",t.RefactorInline="refactor.inline",t.RefactorRewrite="refactor.rewrite",t.Source="source",t.SourceOrganizeImports="source.organizeImports",t.SourceFixAll="source.fixAll"})(C0e||(C0e={}));(function(t){t.Invoked=1,t.Automatic=2})(BS||(BS={}));(function(t){function e(n,i,a){let s={diagnostics:n};return i!=null&&(s.only=i),a!=null&&(s.triggerKind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.typedArray(i.diagnostics,OS.is)&&(i.only===void 0||Ge.typedArray(i.only,Ge.string))&&(i.triggerKind===void 0||i.triggerKind===BS.Invoked||i.triggerKind===BS.Automatic)}o(r,"is"),t.is=r})(A0e||(A0e={}));(function(t){function e(n,i,a){let s={title:n},l=!0;return typeof i=="string"?(l=!1,s.kind=i):I1.is(i)?s.command=i:s.edit=i,l&&a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Ge.string(i.title)&&(i.diagnostics===void 0||Ge.typedArray(i.diagnostics,OS.is))&&(i.kind===void 0||Ge.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||I1.is(i.command))&&(i.isPreferred===void 0||Ge.boolean(i.isPreferred))&&(i.edit===void 0||RP.is(i.edit))}o(r,"is"),t.is=r})(_0e||(_0e={}));(function(t){function e(n,i){let a={range:n};return Ge.defined(i)&&(a.data=i),a}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Gr.is(i.range)&&(Ge.undefined(i.command)||I1.is(i.command))}o(r,"is"),t.is=r})(D0e||(D0e={}));(function(t){function e(n,i){return{tabSize:n,insertSpaces:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.uinteger(i.tabSize)&&Ge.boolean(i.insertSpaces)}o(r,"is"),t.is=r})(L0e||(L0e={}));(function(t){function e(n,i,a){return{range:n,target:i,data:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Gr.is(i.range)&&(Ge.undefined(i.target)||Ge.string(i.target))}o(r,"is"),t.is=r})(R0e||(R0e={}));(function(t){function e(n,i){return{range:n,parent:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.range)&&(i.parent===void 0||t.is(i.parent))}o(r,"is"),t.is=r})(N0e||(N0e={}));(function(t){t.namespace="namespace",t.type="type",t.class="class",t.enum="enum",t.interface="interface",t.struct="struct",t.typeParameter="typeParameter",t.parameter="parameter",t.variable="variable",t.property="property",t.enumMember="enumMember",t.event="event",t.function="function",t.method="method",t.macro="macro",t.keyword="keyword",t.modifier="modifier",t.comment="comment",t.string="string",t.number="number",t.regexp="regexp",t.operator="operator",t.decorator="decorator"})(M0e||(M0e={}));(function(t){t.declaration="declaration",t.definition="definition",t.readonly="readonly",t.static="static",t.deprecated="deprecated",t.abstract="abstract",t.async="async",t.modification="modification",t.documentation="documentation",t.defaultLibrary="defaultLibrary"})(I0e||(I0e={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}o(e,"is"),t.is=e})(O0e||(O0e={}));(function(t){function e(n,i){return{range:n,text:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Gr.is(i.range)&&Ge.string(i.text)}o(r,"is"),t.is=r})(P0e||(P0e={}));(function(t){function e(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Gr.is(i.range)&&Ge.boolean(i.caseSensitiveLookup)&&(Ge.string(i.variableName)||i.variableName===void 0)}o(r,"is"),t.is=r})(B0e||(B0e={}));(function(t){function e(n,i){return{range:n,expression:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Gr.is(i.range)&&(Ge.string(i.expression)||i.expression===void 0)}o(r,"is"),t.is=r})(F0e||(F0e={}));(function(t){function e(n,i){return{frameId:n,stoppedLocation:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Gr.is(n.stoppedLocation)}o(r,"is"),t.is=r})($0e||($0e={}));(function(t){t.Type=1,t.Parameter=2;function e(r){return r===1||r===2}o(e,"is"),t.is=e})(IP||(IP={}));(function(t){function e(n){return{value:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&(i.tooltip===void 0||Ge.string(i.tooltip)||Tb.is(i.tooltip))&&(i.location===void 0||IS.is(i.location))&&(i.command===void 0||I1.is(i.command))}o(r,"is"),t.is=r})(OP||(OP={}));(function(t){function e(n,i,a){let s={position:n,label:i};return a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&tn.is(i.position)&&(Ge.string(i.label)||Ge.typedArray(i.label,OP.is))&&(i.kind===void 0||IP.is(i.kind))&&i.textEdits===void 0||Ge.typedArray(i.textEdits,O1.is)&&(i.tooltip===void 0||Ge.string(i.tooltip)||Tb.is(i.tooltip))&&(i.paddingLeft===void 0||Ge.boolean(i.paddingLeft))&&(i.paddingRight===void 0||Ge.boolean(i.paddingRight))}o(r,"is"),t.is=r})(z0e||(z0e={}));(function(t){function e(r){return{kind:"snippet",value:r}}o(e,"createSnippet"),t.createSnippet=e})(G0e||(G0e={}));(function(t){function e(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}o(e,"create"),t.create=e})(V0e||(V0e={}));(function(t){function e(r){return{items:r}}o(e,"create"),t.create=e})(U0e||(U0e={}));(function(t){t.Invoked=0,t.Automatic=1})(H0e||(H0e={}));(function(t){function e(r,n){return{range:r,text:n}}o(e,"create"),t.create=e})(q0e||(q0e={}));(function(t){function e(r,n){return{triggerKind:r,selectedCompletionInfo:n}}o(e,"create"),t.create=e})(W0e||(W0e={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(n)&&kP.is(n.uri)&&Ge.string(n.name)}o(e,"is"),t.is=e})(Y0e||(Y0e={}));(function(t){function e(a,s,l,u){return new PP(a,s,l,u)}o(e,"create"),t.create=e;function r(a){let s=a;return!!(Ge.defined(s)&&Ge.string(s.uri)&&(Ge.undefined(s.languageId)||Ge.string(s.languageId))&&Ge.uinteger(s.lineCount)&&Ge.func(s.getText)&&Ge.func(s.positionAt)&&Ge.func(s.offsetAt))}o(r,"is"),t.is=r;function n(a,s){let l=a.getText(),u=i(s,(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),h=l.length;for(let f=u.length-1;f>=0;f--){let d=u[f],p=a.offsetAt(d.range.start),m=a.offsetAt(d.range.end);if(m<=h)l=l.substring(0,p)+d.newText+l.substring(m,l.length);else throw new Error("Overlapping edit");h=p}return l}o(n,"applyEdits"),t.applyEdits=n;function i(a,s){if(a.length<=1)return a;let l=a.length/2|0,u=a.slice(0,l),h=a.slice(l);i(u,s),i(h,s);let f=0,d=0,p=0;for(;f0&&e.push(r.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let r=this.getLineOffsets(),n=0,i=r.length;if(i===0)return jr.create(0,e);for(;ne?i=s:n=s+1}let a=n-1;return jr.create(a,e-r[a])}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line],i=e.line+1"u"}o(n,"undefined"),t.undefined=n;function i(m){return m===!0||m===!1}o(i,"boolean"),t.boolean=i;function a(m){return e.call(m)==="[object String]"}o(a,"string"),t.string=a;function s(m){return e.call(m)==="[object Number]"}o(s,"number"),t.number=s;function l(m,g,y){return e.call(m)==="[object Number]"&&g<=m&&m<=y}o(l,"numberRange"),t.numberRange=l;function u(m){return e.call(m)==="[object Number]"&&-2147483648<=m&&m<=2147483647}o(u,"integer"),t.integer=u;function h(m){return e.call(m)==="[object Number]"&&0<=m&&m<=2147483647}o(h,"uinteger"),t.uinteger=h;function f(m){return e.call(m)==="[object Function]"}o(f,"func"),t.func=f;function d(m){return m!==null&&typeof m=="object"}o(d,"objectLiteral"),t.objectLiteral=d;function p(m,g){return Array.isArray(m)&&m.every(g)}o(p,"typedArray"),t.typedArray=p})(Fe||(Fe={}))});var Sx,Cx,pp,mp,gM,a1,gE=N(()=>{"use strict";mM();Nl();Sx=class{static{o(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){var e;return(e=this.nodeStack[this.nodeStack.length-1])!==null&&e!==void 0?e:this.rootNode}buildRootNode(e){return this.rootNode=new a1(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let r=new mp;return r.grammarSource=e,r.root=this.rootNode,this.current.content.push(r),this.nodeStack.push(r),r}buildLeafNode(e,r){let n=new pp(e.startOffset,e.image.length,Gm(e),e.tokenType,!r);return n.grammarSource=r,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){let r=e.container;if(r){let n=r.content.indexOf(e);n>=0&&r.content.splice(n,1)}}addHiddenNodes(e){let r=[];for(let a of e){let s=new pp(a.startOffset,a.image.length,Gm(a),a.tokenType,!0);s.root=this.rootNode,r.push(s)}let n=this.current,i=!1;if(n.content.length>0){n.content.push(...r);return}for(;n.container;){let a=n.container.content.indexOf(n);if(a>0){n.container.content.splice(a,0,...r),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...r)}construct(e){let r=this.current;typeof e.$type=="string"&&(this.current.astNode=e),e.$cstNode=r;let n=this.nodeStack.pop();n?.content.length===0&&this.removeNode(n)}},Cx=class{static{o(this,"AbstractCstNode")}get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var e,r;let n=typeof((e=this._astNode)===null||e===void 0?void 0:e.$type)=="string"?this._astNode:(r=this.container)===null||r===void 0?void 0:r.astNode;if(!n)throw new Error("This node has no associated AST element");return n}set astNode(e){this._astNode=e}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}},pp=class extends Cx{static{o(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,r,n,i,a=!1){super(),this._hidden=a,this._offset=e,this._tokenType=i,this._length=r,this._range=n}},mp=class extends Cx{static{o(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new gM(this)}get children(){return this.content}get offset(){var e,r;return(r=(e=this.firstNonHiddenNode)===null||e===void 0?void 0:e.offset)!==null&&r!==void 0?r:0}get length(){return this.end-this.offset}get end(){var e,r;return(r=(e=this.lastNonHiddenNode)===null||e===void 0?void 0:e.end)!==null&&r!==void 0?r:0}get range(){let e=this.firstNonHiddenNode,r=this.lastNonHiddenNode;if(e&&r){if(this._rangeCache===void 0){let{range:n}=e,{range:i}=r;this._rangeCache={start:n.start,end:i.end.line=0;e--){let r=this.content[e];if(!r.hidden)return r}return this.content[this.content.length-1]}},gM=class t extends Array{static{o(this,"CstNodeContainer")}constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,t.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,r,...n){return this.addParents(n),super.splice(e,r,...n)}addParents(e){for(let r of e)r.container=this.parent}},a1=class extends mp{static{o(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}}});function yM(t){return t.$type===yE}var yE,Ale,_le,Ax,_x,vE,s1,Dx,JBe,vM,Lx=N(()=>{"use strict";cf();Soe();Rc();Ol();is();gE();yE=Symbol("Datatype");o(yM,"isDataTypeNode");Ale="\u200B",_le=o(t=>t.endsWith(Ale)?t:t+Ale,"withRuleSuffix"),Ax=class{static{o(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let r=this.lexer.definition,n=e.LanguageMetaData.mode==="production";this.wrapper=new vM(r,Object.assign(Object.assign({},e.parser.ParserConfig),{skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,r){this.wrapper.wrapOr(e,r)}optional(e,r){this.wrapper.wrapOption(e,r)}many(e,r){this.wrapper.wrapMany(e,r)}atLeastOne(e,r){this.wrapper.wrapAtLeastOne(e,r)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},_x=class extends Ax{static{o(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new Sx,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,r){let n=this.computeRuleType(e),i=this.wrapper.DEFINE_RULE(_le(e.name),this.startImplementation(n,r).bind(this));return this.allRules.set(e.name,i),e.entry&&(this.mainRule=i),i}computeRuleType(e){if(!e.fragment){if(Z2(e))return yE;{let r=Rg(e);return r??e.name}}}parse(e,r={}){this.nodeBuilder.buildRootNode(e);let n=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=n.tokens;let i=r.rule?this.allRules.get(r.rule):this.mainRule;if(!i)throw new Error(r.rule?`No rule found with name '${r.rule}'`:"No main rule available.");let a=i.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(n.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:a,lexerErrors:n.errors,lexerReport:n.report,parserErrors:this.wrapper.errors}}startImplementation(e,r){return n=>{let i=!this.isRecording()&&e!==void 0;if(i){let s={$type:e};this.stack.push(s),e===yE&&(s.value="")}let a;try{a=r(n)}catch{a=void 0}return a===void 0&&i&&(a=this.construct()),a}}extractHiddenTokens(e){let r=this.lexerResult.hidden;if(!r.length)return[];let n=e.startOffset;for(let i=0;in)return r.splice(0,i);return r.splice(0,r.length)}consume(e,r,n){let i=this.wrapper.wrapConsume(e,r);if(!this.isRecording()&&this.isValidToken(i)){let a=this.extractHiddenTokens(i);this.nodeBuilder.addHiddenNodes(a);let s=this.nodeBuilder.buildLeafNode(i,n),{assignment:l,isCrossRef:u}=this.getAssignment(n),h=this.current;if(l){let f=Ho(n)?i.image:this.converter.convert(i.image,s);this.assign(l.operator,l.feature,f,s,u)}else if(yM(h)){let f=i.image;Ho(n)||(f=this.converter.convert(f,s).toString()),h.value+=f}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,r,n,i,a){let s;!this.isRecording()&&!n&&(s=this.nodeBuilder.buildCompositeNode(i));let l=this.wrapper.wrapSubrule(e,r,a);!this.isRecording()&&s&&s.length>0&&this.performSubruleAssignment(l,i,s)}performSubruleAssignment(e,r,n){let{assignment:i,isCrossRef:a}=this.getAssignment(r);if(i)this.assign(i.operator,i.feature,e,n,a);else if(!i){let s=this.current;if(yM(s))s.value+=e.toString();else if(typeof e=="object"&&e){let u=this.assignWithoutOverride(e,s);this.stack.pop(),this.stack.push(u)}}}action(e,r){if(!this.isRecording()){let n=this.current;if(r.feature&&r.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode),this.nodeBuilder.buildCompositeNode(r).content.push(n.$cstNode);let a={$type:e};this.stack.push(a),this.assign(r.operator,r.feature,n,n.$cstNode,!1)}else n.$type=e}}construct(){if(this.isRecording())return;let e=this.current;return vk(e),this.nodeBuilder.construct(e),this.stack.pop(),yM(e)?this.converter.convert(e.value,e.$cstNode):(XR(this.astReflection,e),e)}getAssignment(e){if(!this.assignmentMap.has(e)){let r=tp(e,Ml);this.assignmentMap.set(e,{assignment:r,isCrossRef:r?ep(r.terminal):!1})}return this.assignmentMap.get(e)}assign(e,r,n,i,a){let s=this.current,l;switch(a&&typeof n=="string"?l=this.linker.buildReference(s,r,i,n):l=n,e){case"=":{s[r]=l;break}case"?=":{s[r]=!0;break}case"+=":Array.isArray(s[r])||(s[r]=[]),s[r].push(l)}}assignWithoutOverride(e,r){for(let[i,a]of Object.entries(r)){let s=e[i];s===void 0?e[i]=a:Array.isArray(s)&&Array.isArray(a)&&(a.push(...s),e[i]=a)}let n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},vE=class{static{o(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return zu.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return zu.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return zu.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return zu.buildEarlyExitMessage(e)}},s1=class extends vE{static{o(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:r}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${r.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},Dx=class extends Ax{static{o(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let r=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=r.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,r){let n=this.wrapper.DEFINE_RULE(_le(e.name),this.startImplementation(r).bind(this));return this.allRules.set(e.name,n),e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return r=>{let n=this.keepStackSize();try{e(r)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,r,n){this.wrapper.wrapConsume(e,r),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,r,n,i,a){this.before(i),this.wrapper.wrapSubrule(e,r,a),this.after(i)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let r=this.elementStack.lastIndexOf(e);r>=0&&this.elementStack.splice(r)}}get currIdx(){return this.wrapper.currIdx}},JBe={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new s1},vM=class extends xx{static{o(this,"ChevrotainWrapper")}constructor(e,r){let n=r&&"maxLookahead"in r;super(e,Object.assign(Object.assign(Object.assign({},JBe),{lookaheadStrategy:n?new Gu({maxLookahead:r.maxLookahead}):new kx({logging:r.skipValidations?()=>{}:void 0})}),r))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,r){return this.RULE(e,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,r){return this.consume(e,r)}wrapSubrule(e,r,n){return this.subrule(e,r,{ARGS:[n]})}wrapOr(e,r){this.or(e,r)}wrapOption(e,r){this.option(e,r)}wrapMany(e,r){this.many(e,r)}wrapAtLeastOne(e,r){this.atLeastOne(e,r)}}});function Rx(t,e,r){return eFe({parser:e,tokens:r,ruleNames:new Map},t),e}function eFe(t,e){let r=K2(e,!1),n=en(e.rules).filter(Oa).filter(i=>r.has(i));for(let i of n){let a=Object.assign(Object.assign({},t),{consume:1,optional:1,subrule:1,many:1,or:1});t.parser.rule(i,gp(a,i.definition))}}function gp(t,e,r=!1){let n;if(Ho(e))n=oFe(t,e);else if(Mu(e))n=tFe(t,e);else if(Ml(e))n=gp(t,e.terminal);else if(ep(e))n=Dle(t,e);else if(Il(e))n=rFe(t,e);else if(mk(e))n=iFe(t,e);else if(yk(e))n=aFe(t,e);else if(sf(e))n=sFe(t,e);else if($R(e)){let i=t.consume++;n=o(()=>t.parser.consume(i,lo,e),"method")}else throw new Zd(e.$cstNode,`Unexpected element type: ${e.$type}`);return Lle(t,r?void 0:xE(e),n,e.cardinality)}function tFe(t,e){let r=J2(e);return()=>t.parser.action(r,e)}function rFe(t,e){let r=e.rule.ref;if(Oa(r)){let n=t.subrule++,i=r.fragment,a=e.arguments.length>0?nFe(r,e.arguments):()=>({});return s=>t.parser.subrule(n,Rle(t,r),i,e,a(s))}else if(so(r)){let n=t.consume++,i=xM(t,r.name);return()=>t.parser.consume(n,i,e)}else if(r)Lc(r);else throw new Zd(e.$cstNode,`Undefined rule: ${e.rule.$refText}`)}function nFe(t,e){let r=e.map(n=>Vu(n.value));return n=>{let i={};for(let a=0;ae(n)||r(n)}else if(RR(t)){let e=Vu(t.left),r=Vu(t.right);return n=>e(n)&&r(n)}else if(MR(t)){let e=Vu(t.value);return r=>!e(r)}else if(IR(t)){let e=t.parameter.ref.name;return r=>r!==void 0&&r[e]===!0}else if(LR(t)){let e=!!t.true;return()=>e}Lc(t)}function iFe(t,e){if(e.elements.length===1)return gp(t,e.elements[0]);{let r=[];for(let i of e.elements){let a={ALT:gp(t,i,!0)},s=xE(i);s&&(a.GATE=Vu(s)),r.push(a)}let n=t.or++;return i=>t.parser.alternatives(n,r.map(a=>{let s={ALT:o(()=>a.ALT(i),"ALT")},l=a.GATE;return l&&(s.GATE=()=>l(i)),s}))}}function aFe(t,e){if(e.elements.length===1)return gp(t,e.elements[0]);let r=[];for(let l of e.elements){let u={ALT:gp(t,l,!0)},h=xE(l);h&&(u.GATE=Vu(h)),r.push(u)}let n=t.or++,i=o((l,u)=>{let h=u.getRuleStack().join("-");return`uGroup_${l}_${h}`},"idFunc"),a=o(l=>t.parser.alternatives(n,r.map((u,h)=>{let f={ALT:o(()=>!0,"ALT")},d=t.parser;f.ALT=()=>{if(u.ALT(l),!d.isRecording()){let m=i(n,d);d.unorderedGroups.get(m)||d.unorderedGroups.set(m,[]);let g=d.unorderedGroups.get(m);typeof g?.[h]>"u"&&(g[h]=!0)}};let p=u.GATE;return p?f.GATE=()=>p(l):f.GATE=()=>{let m=d.unorderedGroups.get(i(n,d));return!m?.[h]},f})),"alternatives"),s=Lle(t,xE(e),a,"*");return l=>{s(l),t.parser.isRecording()||t.parser.unorderedGroups.delete(i(n,t.parser))}}function sFe(t,e){let r=e.elements.map(n=>gp(t,n));return n=>r.forEach(i=>i(n))}function xE(t){if(sf(t))return t.guardCondition}function Dle(t,e,r=e.terminal){if(r)if(Il(r)&&Oa(r.rule.ref)){let n=r.rule.ref,i=t.subrule++;return a=>t.parser.subrule(i,Rle(t,n),!1,e,a)}else if(Il(r)&&so(r.rule.ref)){let n=t.consume++,i=xM(t,r.rule.ref.name);return()=>t.parser.consume(n,i,e)}else if(Ho(r)){let n=t.consume++,i=xM(t,r.value);return()=>t.parser.consume(n,i,e)}else throw new Error("Could not build cross reference parser");else{if(!e.type.ref)throw new Error("Could not resolve reference to type: "+e.type.$refText);let n=kk(e.type.ref),i=n?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+J2(e.type.ref));return Dle(t,e,i)}}function oFe(t,e){let r=t.consume++,n=t.tokens[e.value];if(!n)throw new Error("Could not find token for keyword: "+e.value);return()=>t.parser.consume(r,n,e)}function Lle(t,e,r,n){let i=e&&Vu(e);if(!n)if(i){let a=t.or++;return s=>t.parser.alternatives(a,[{ALT:o(()=>r(s),"ALT"),GATE:o(()=>i(s),"GATE")},{ALT:lE(),GATE:o(()=>!i(s),"GATE")}])}else return r;if(n==="*"){let a=t.many++;return s=>t.parser.many(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else if(n==="+"){let a=t.many++;if(i){let s=t.or++;return l=>t.parser.alternatives(s,[{ALT:o(()=>t.parser.atLeastOne(a,{DEF:o(()=>r(l),"DEF")}),"ALT"),GATE:o(()=>i(l),"GATE")},{ALT:lE(),GATE:o(()=>!i(l),"GATE")}])}else return s=>t.parser.atLeastOne(a,{DEF:o(()=>r(s),"DEF")})}else if(n==="?"){let a=t.optional++;return s=>t.parser.optional(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else Lc(n)}function Rle(t,e){let r=lFe(t,e),n=t.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function lFe(t,e){if(Oa(e))return e.name;if(t.ruleNames.has(e))return t.ruleNames.get(e);{let r=e,n=r.$container,i=e.$type;for(;!Oa(n);)(sf(n)||mk(n)||yk(n))&&(i=n.elements.indexOf(r).toString()+":"+i),r=n,n=n.$container;return i=n.name+":"+i,t.ruleNames.set(e,i),i}}function xM(t,e){let r=t.tokens[e];if(!r)throw new Error(`Token "${e}" not found."`);return r}var bE=N(()=>{"use strict";cf();Rc();uk();Ps();Ol();o(Rx,"createParser");o(eFe,"buildRules");o(gp,"buildElement");o(tFe,"buildAction");o(rFe,"buildRuleCall");o(nFe,"buildRuleCallPredicate");o(Vu,"buildPredicate");o(iFe,"buildAlternatives");o(aFe,"buildUnorderedGroup");o(sFe,"buildGroup");o(xE,"getGuardCondition");o(Dle,"buildCrossReference");o(oFe,"buildKeyword");o(Lle,"wrap");o(Rle,"getRule");o(lFe,"getRuleName");o(xM,"getToken")});function bM(t){let e=t.Grammar,r=t.parser.Lexer,n=new Dx(t);return Rx(e,n,r.definition),n.finalize(),n}var wM=N(()=>{"use strict";Lx();bE();o(bM,"createCompletionParser")});function TM(t){let e=Nle(t);return e.finalize(),e}function Nle(t){let e=t.Grammar,r=t.parser.Lexer,n=new _x(t);return Rx(e,n,r.definition)}var kM=N(()=>{"use strict";Lx();bE();o(TM,"createLangiumParser");o(Nle,"prepareLangiumParser")});var Uu,wE=N(()=>{"use strict";cf();Rc();is();Ol();Lg();Ps();Uu=class{static{o(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,r){let n=en(K2(e,!1)),i=this.buildTerminalTokens(n),a=this.buildKeywordTokens(n,i,r);return i.forEach(s=>{let l=s.PATTERN;typeof l=="object"&&l&&"test"in l&&Dg(l)?a.unshift(s):a.push(s)}),a}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(so).filter(r=>!r.fragment).map(r=>this.buildTerminalToken(r)).toArray()}buildTerminalToken(e){let r=Ng(e),n=this.requiresCustomPattern(r)?this.regexPatternFunction(r):r,i={name:e.name,PATTERN:n};return typeof n=="function"&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=Dg(r)?Xn.SKIPPED:"hidden"),i}requiresCustomPattern(e){return e.flags.includes("u")||e.flags.includes("s")?!0:!!(e.source.includes("?<=")||e.source.includes("?(r.lastIndex=i,r.exec(n))}buildKeywordTokens(e,r,n){return e.filter(Oa).flatMap(i=>Nc(i).filter(Ho)).distinct(i=>i.value).toArray().sort((i,a)=>a.value.length-i.value.length).map(i=>this.buildKeywordToken(i,r,!!n?.caseInsensitive))}buildKeywordToken(e,r,n){let i=this.buildKeywordPattern(e,n),a={name:e.value,PATTERN:i,LONGER_ALT:this.findLongerAlt(e,r)};return typeof i=="function"&&(a.LINE_BREAKS=!0),a}buildKeywordPattern(e,r){return r?new RegExp(tN(e.value)):e.value}findLongerAlt(e,r){return r.reduce((n,i)=>{let a=i?.PATTERN;return a?.source&&rN("^"+a.source+"$",e.value)&&n.push(i),n},[])}}});var yp,Oc,EM=N(()=>{"use strict";Rc();Ol();yp=class{static{o(this,"DefaultValueConverter")}convert(e,r){let n=r.grammarSource;if(ep(n)&&(n=aN(n)),Il(n)){let i=n.rule.ref;if(!i)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(i,e,r)}return e}runConverter(e,r,n){var i;switch(e.name.toUpperCase()){case"INT":return Oc.convertInt(r);case"STRING":return Oc.convertString(r);case"ID":return Oc.convertID(r)}switch((i=fN(e))===null||i===void 0?void 0:i.toLowerCase()){case"number":return Oc.convertNumber(r);case"boolean":return Oc.convertBoolean(r);case"bigint":return Oc.convertBigint(r);case"date":return Oc.convertDate(r);default:return r}}};(function(t){function e(h){let f="";for(let d=1;d{"use strict";Object.defineProperty(AM,"__esModule",{value:!0});var SM;function CM(){if(SM===void 0)throw new Error("No runtime abstraction layer installed");return SM}o(CM,"RAL");(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");SM=r}o(e,"install"),t.install=e})(CM||(CM={}));AM.default=CM});var Ole=Mi(Ba=>{"use strict";Object.defineProperty(Ba,"__esModule",{value:!0});Ba.stringArray=Ba.array=Ba.func=Ba.error=Ba.number=Ba.string=Ba.boolean=void 0;function cFe(t){return t===!0||t===!1}o(cFe,"boolean");Ba.boolean=cFe;function Mle(t){return typeof t=="string"||t instanceof String}o(Mle,"string");Ba.string=Mle;function uFe(t){return typeof t=="number"||t instanceof Number}o(uFe,"number");Ba.number=uFe;function hFe(t){return t instanceof Error}o(hFe,"error");Ba.error=hFe;function fFe(t){return typeof t=="function"}o(fFe,"func");Ba.func=fFe;function Ile(t){return Array.isArray(t)}o(Ile,"array");Ba.array=Ile;function dFe(t){return Ile(t)&&t.every(e=>Mle(e))}o(dFe,"stringArray");Ba.stringArray=dFe});var LM=Mi(o1=>{"use strict";Object.defineProperty(o1,"__esModule",{value:!0});o1.Emitter=o1.Event=void 0;var pFe=_M(),Ple;(function(t){let e={dispose(){}};t.None=function(){return e}})(Ple||(o1.Event=Ple={}));var DM=class{static{o(this,"CallbackList")}add(e,r=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(r),Array.isArray(n)&&n.push({dispose:o(()=>this.remove(e,r),"dispose")})}remove(e,r=null){if(!this._callbacks)return;let n=!1;for(let i=0,a=this._callbacks.length;i{this._callbacks||(this._callbacks=new DM),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:o(()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=t._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};o1.Emitter=TE;TE._noop=function(){}});var Ble=Mi(l1=>{"use strict";Object.defineProperty(l1,"__esModule",{value:!0});l1.CancellationTokenSource=l1.CancellationToken=void 0;var mFe=_M(),gFe=Ole(),RM=LM(),kE;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:RM.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:RM.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||gFe.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}o(e,"is"),t.is=e})(kE||(l1.CancellationToken=kE={}));var yFe=Object.freeze(function(t,e){let r=(0,mFe.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),EE=class{static{o(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?yFe:(this._emitter||(this._emitter=new RM.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},NM=class{static{o(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new EE),this._token}cancel(){this._token?this._token.cancel():this._token=kE.Cancelled}dispose(){this._token?this._token instanceof EE&&this._token.dispose():this._token=kE.None}};l1.CancellationTokenSource=NM});var yr={};var qo=N(()=>{"use strict";Sr(yr,Sa(Ble(),1))});function MM(){return new Promise(t=>{typeof setImmediate>"u"?setTimeout(t,0):setImmediate(t)})}function CE(){return SE=performance.now(),new yr.CancellationTokenSource}function $le(t){Fle=t}function Bc(t){return t===Pc}async function xi(t){if(t===yr.CancellationToken.None)return;let e=performance.now();if(e-SE>=Fle&&(SE=e,await MM(),SE=performance.now()),t.isCancellationRequested)throw Pc}var SE,Fle,Pc,cs,Yo=N(()=>{"use strict";qo();o(MM,"delayNextTick");SE=0,Fle=10;o(CE,"startCancelableOperation");o($le,"setInterruptionPeriod");Pc=Symbol("OperationCancelled");o(Bc,"isOperationCancelled");o(xi,"interruptAndCheck");cs=class{static{o(this,"Deferred")}constructor(){this.promise=new Promise((e,r)=>{this.resolve=n=>(e(n),this),this.reject=n=>(r(n),this)})}}});function IM(t,e){if(t.length<=1)return t;let r=t.length/2|0,n=t.slice(0,r),i=t.slice(r);IM(n,e),IM(i,e);let a=0,s=0,l=0;for(;ar.line||e.line===r.line&&e.character>r.character?{start:r,end:e}:t}function vFe(t){let e=Vle(t.range);return e!==t.range?{newText:t.newText,range:e}:t}var AE,c1,Ule=N(()=>{"use strict";AE=class t{static{o(this,"FullTextDocument")}constructor(e,r,n,i){this._uri=e,this._languageId=r,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let r=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(r,n)}return this._content}update(e,r){for(let n of e)if(t.isIncremental(n)){let i=Vle(n.range),a=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(s,this._content.length);let l=Math.max(i.start.line,0),u=Math.max(i.end.line,0),h=this._lineOffsets,f=zle(n.text,!1,a);if(u-l===f.length)for(let p=0,m=f.length;pe?i=s:n=s+1}let a=n-1;return e=this.ensureBeforeEOL(e,r[a]),{line:a,character:e-r[a]}}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line];if(e.character<=0)return n;let i=e.line+1r&&Gle(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}};(function(t){function e(i,a,s,l){return new AE(i,a,s,l)}o(e,"create"),t.create=e;function r(i,a,s){if(i instanceof AE)return i.update(a,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}o(r,"update"),t.update=r;function n(i,a){let s=i.getText(),l=IM(a.map(vFe),(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),u=0,h=[];for(let f of l){let d=i.offsetAt(f.range.start);if(du&&h.push(s.substring(u,d)),f.newText.length&&h.push(f.newText),u=i.offsetAt(f.range.end)}return h.push(s.substr(u)),h.join("")}o(n,"applyEdits"),t.applyEdits=n})(c1||(c1={}));o(IM,"mergeSort");o(zle,"computeLineOffsets");o(Gle,"isEOL");o(Vle,"getWellformedRange");o(vFe,"getWellformedEdit")});var Hle,us,u1,OM=N(()=>{"use strict";(()=>{"use strict";var t={470:i=>{function a(u){if(typeof u!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(u))}o(a,"e");function s(u,h){for(var f,d="",p=0,m=-1,g=0,y=0;y<=u.length;++y){if(y2){var v=d.lastIndexOf("/");if(v!==d.length-1){v===-1?(d="",p=0):p=(d=d.slice(0,v)).length-1-d.lastIndexOf("/"),m=y,g=0;continue}}else if(d.length===2||d.length===1){d="",p=0,m=y,g=0;continue}}h&&(d.length>0?d+="/..":d="..",p=2)}else d.length>0?d+="/"+u.slice(m+1,y):d=u.slice(m+1,y),p=y-m-1;m=y,g=0}else f===46&&g!==-1?++g:g=-1}return d}o(s,"r");var l={resolve:o(function(){for(var u,h="",f=!1,d=arguments.length-1;d>=-1&&!f;d--){var p;d>=0?p=arguments[d]:(u===void 0&&(u=process.cwd()),p=u),a(p),p.length!==0&&(h=p+"/"+h,f=p.charCodeAt(0)===47)}return h=s(h,!f),f?h.length>0?"/"+h:"/":h.length>0?h:"."},"resolve"),normalize:o(function(u){if(a(u),u.length===0)return".";var h=u.charCodeAt(0)===47,f=u.charCodeAt(u.length-1)===47;return(u=s(u,!h)).length!==0||h||(u="."),u.length>0&&f&&(u+="/"),h?"/"+u:u},"normalize"),isAbsolute:o(function(u){return a(u),u.length>0&&u.charCodeAt(0)===47},"isAbsolute"),join:o(function(){if(arguments.length===0)return".";for(var u,h=0;h0&&(u===void 0?u=f:u+="/"+f)}return u===void 0?".":l.normalize(u)},"join"),relative:o(function(u,h){if(a(u),a(h),u===h||(u=l.resolve(u))===(h=l.resolve(h)))return"";for(var f=1;fy){if(h.charCodeAt(m+x)===47)return h.slice(m+x+1);if(x===0)return h.slice(m+x)}else p>y&&(u.charCodeAt(f+x)===47?v=x:x===0&&(v=0));break}var b=u.charCodeAt(f+x);if(b!==h.charCodeAt(m+x))break;b===47&&(v=x)}var w="";for(x=f+v+1;x<=d;++x)x!==d&&u.charCodeAt(x)!==47||(w.length===0?w+="..":w+="/..");return w.length>0?w+h.slice(m+v):(m+=v,h.charCodeAt(m)===47&&++m,h.slice(m))},"relative"),_makeLong:o(function(u){return u},"_makeLong"),dirname:o(function(u){if(a(u),u.length===0)return".";for(var h=u.charCodeAt(0),f=h===47,d=-1,p=!0,m=u.length-1;m>=1;--m)if((h=u.charCodeAt(m))===47){if(!p){d=m;break}}else p=!1;return d===-1?f?"/":".":f&&d===1?"//":u.slice(0,d)},"dirname"),basename:o(function(u,h){if(h!==void 0&&typeof h!="string")throw new TypeError('"ext" argument must be a string');a(u);var f,d=0,p=-1,m=!0;if(h!==void 0&&h.length>0&&h.length<=u.length){if(h.length===u.length&&h===u)return"";var g=h.length-1,y=-1;for(f=u.length-1;f>=0;--f){var v=u.charCodeAt(f);if(v===47){if(!m){d=f+1;break}}else y===-1&&(m=!1,y=f+1),g>=0&&(v===h.charCodeAt(g)?--g==-1&&(p=f):(g=-1,p=y))}return d===p?p=y:p===-1&&(p=u.length),u.slice(d,p)}for(f=u.length-1;f>=0;--f)if(u.charCodeAt(f)===47){if(!m){d=f+1;break}}else p===-1&&(m=!1,p=f+1);return p===-1?"":u.slice(d,p)},"basename"),extname:o(function(u){a(u);for(var h=-1,f=0,d=-1,p=!0,m=0,g=u.length-1;g>=0;--g){var y=u.charCodeAt(g);if(y!==47)d===-1&&(p=!1,d=g+1),y===46?h===-1?h=g:m!==1&&(m=1):h!==-1&&(m=-1);else if(!p){f=g+1;break}}return h===-1||d===-1||m===0||m===1&&h===d-1&&h===f+1?"":u.slice(h,d)},"extname"),format:o(function(u){if(u===null||typeof u!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof u);return function(h,f){var d=f.dir||f.root,p=f.base||(f.name||"")+(f.ext||"");return d?d===f.root?d+p:d+"/"+p:p}(0,u)},"format"),parse:o(function(u){a(u);var h={root:"",dir:"",base:"",ext:"",name:""};if(u.length===0)return h;var f,d=u.charCodeAt(0),p=d===47;p?(h.root="/",f=1):f=0;for(var m=-1,g=0,y=-1,v=!0,x=u.length-1,b=0;x>=f;--x)if((d=u.charCodeAt(x))!==47)y===-1&&(v=!1,y=x+1),d===46?m===-1?m=x:b!==1&&(b=1):m!==-1&&(b=-1);else if(!v){g=x+1;break}return m===-1||y===-1||b===0||b===1&&m===y-1&&m===g+1?y!==-1&&(h.base=h.name=g===0&&p?u.slice(1,y):u.slice(g,y)):(g===0&&p?(h.name=u.slice(1,m),h.base=u.slice(1,y)):(h.name=u.slice(g,m),h.base=u.slice(g,y)),h.ext=u.slice(m,y)),g>0?h.dir=u.slice(0,g-1):p&&(h.dir="/"),h},"parse"),sep:"/",delimiter:":",win32:null,posix:null};l.posix=l,i.exports=l}},e={};function r(i){var a=e[i];if(a!==void 0)return a.exports;var s=e[i]={exports:{}};return t[i](s,s.exports,r),s.exports}o(r,"r"),r.d=(i,a)=>{for(var s in a)r.o(a,s)&&!r.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:a[s]})},r.o=(i,a)=>Object.prototype.hasOwnProperty.call(i,a),r.r=i=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var n={};(()=>{let i;r.r(n),r.d(n,{URI:o(()=>p,"URI"),Utils:o(()=>I,"Utils")}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,l=/^\/\//;function u(D,k){if(!D.scheme&&k)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${D.authority}", path: "${D.path}", query: "${D.query}", fragment: "${D.fragment}"}`);if(D.scheme&&!a.test(D.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(D.path){if(D.authority){if(!s.test(D.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(l.test(D.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}o(u,"s");let h="",f="/",d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{o(this,"f")}static isUri(k){return k instanceof p||!!k&&typeof k.authority=="string"&&typeof k.fragment=="string"&&typeof k.path=="string"&&typeof k.query=="string"&&typeof k.scheme=="string"&&typeof k.fsPath=="string"&&typeof k.with=="function"&&typeof k.toString=="function"}scheme;authority;path;query;fragment;constructor(k,L,R,O,M,B=!1){typeof k=="object"?(this.scheme=k.scheme||h,this.authority=k.authority||h,this.path=k.path||h,this.query=k.query||h,this.fragment=k.fragment||h):(this.scheme=function(F,P){return F||P?F:"file"}(k,B),this.authority=L||h,this.path=function(F,P){switch(F){case"https":case"http":case"file":P?P[0]!==f&&(P=f+P):P=f}return P}(this.scheme,R||h),this.query=O||h,this.fragment=M||h,u(this,B))}get fsPath(){return b(this,!1)}with(k){if(!k)return this;let{scheme:L,authority:R,path:O,query:M,fragment:B}=k;return L===void 0?L=this.scheme:L===null&&(L=h),R===void 0?R=this.authority:R===null&&(R=h),O===void 0?O=this.path:O===null&&(O=h),M===void 0?M=this.query:M===null&&(M=h),B===void 0?B=this.fragment:B===null&&(B=h),L===this.scheme&&R===this.authority&&O===this.path&&M===this.query&&B===this.fragment?this:new g(L,R,O,M,B)}static parse(k,L=!1){let R=d.exec(k);return R?new g(R[2]||h,E(R[4]||h),E(R[5]||h),E(R[7]||h),E(R[9]||h),L):new g(h,h,h,h,h)}static file(k){let L=h;if(i&&(k=k.replace(/\\/g,f)),k[0]===f&&k[1]===f){let R=k.indexOf(f,2);R===-1?(L=k.substring(2),k=f):(L=k.substring(2,R),k=k.substring(R)||f)}return new g("file",L,k,h,h)}static from(k){let L=new g(k.scheme,k.authority,k.path,k.query,k.fragment);return u(L,!0),L}toString(k=!1){return w(this,k)}toJSON(){return this}static revive(k){if(k){if(k instanceof p)return k;{let L=new g(k);return L._formatted=k.external,L._fsPath=k._sep===m?k.fsPath:null,L}}return k}}let m=i?1:void 0;class g extends p{static{o(this,"l")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(k=!1){return k?w(this,!0):(this._formatted||(this._formatted=w(this,!1)),this._formatted)}toJSON(){let k={$mid:1};return this._fsPath&&(k.fsPath=this._fsPath,k._sep=m),this._formatted&&(k.external=this._formatted),this.path&&(k.path=this.path),this.scheme&&(k.scheme=this.scheme),this.authority&&(k.authority=this.authority),this.query&&(k.query=this.query),this.fragment&&(k.fragment=this.fragment),k}}let y={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function v(D,k,L){let R,O=-1;for(let M=0;M=97&&B<=122||B>=65&&B<=90||B>=48&&B<=57||B===45||B===46||B===95||B===126||k&&B===47||L&&B===91||L&&B===93||L&&B===58)O!==-1&&(R+=encodeURIComponent(D.substring(O,M)),O=-1),R!==void 0&&(R+=D.charAt(M));else{R===void 0&&(R=D.substr(0,M));let F=y[B];F!==void 0?(O!==-1&&(R+=encodeURIComponent(D.substring(O,M)),O=-1),R+=F):O===-1&&(O=M)}}return O!==-1&&(R+=encodeURIComponent(D.substring(O))),R!==void 0?R:D}o(v,"d");function x(D){let k;for(let L=0;L1&&D.scheme==="file"?`//${D.authority}${D.path}`:D.path.charCodeAt(0)===47&&(D.path.charCodeAt(1)>=65&&D.path.charCodeAt(1)<=90||D.path.charCodeAt(1)>=97&&D.path.charCodeAt(1)<=122)&&D.path.charCodeAt(2)===58?k?D.path.substr(1):D.path[1].toLowerCase()+D.path.substr(2):D.path,i&&(L=L.replace(/\//g,"\\")),L}o(b,"m");function w(D,k){let L=k?x:v,R="",{scheme:O,authority:M,path:B,query:F,fragment:P}=D;if(O&&(R+=O,R+=":"),(M||O==="file")&&(R+=f,R+=f),M){let z=M.indexOf("@");if(z!==-1){let $=M.substr(0,z);M=M.substr(z+1),z=$.lastIndexOf(":"),z===-1?R+=L($,!1,!1):(R+=L($.substr(0,z),!1,!1),R+=":",R+=L($.substr(z+1),!1,!0)),R+="@"}M=M.toLowerCase(),z=M.lastIndexOf(":"),z===-1?R+=L(M,!1,!0):(R+=L(M.substr(0,z),!1,!0),R+=M.substr(z))}if(B){if(B.length>=3&&B.charCodeAt(0)===47&&B.charCodeAt(2)===58){let z=B.charCodeAt(1);z>=65&&z<=90&&(B=`/${String.fromCharCode(z+32)}:${B.substr(3)}`)}else if(B.length>=2&&B.charCodeAt(1)===58){let z=B.charCodeAt(0);z>=65&&z<=90&&(B=`${String.fromCharCode(z+32)}:${B.substr(2)}`)}R+=L(B,!0,!1)}return F&&(R+="?",R+=L(F,!1,!1)),P&&(R+="#",R+=k?P:v(P,!1,!1)),R}o(w,"y");function C(D){try{return decodeURIComponent(D)}catch{return D.length>3?D.substr(0,3)+C(D.substr(3)):D}}o(C,"v");let T=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function E(D){return D.match(T)?D.replace(T,k=>C(k)):D}o(E,"C");var A=r(470);let S=A.posix||A,_="/";var I;(function(D){D.joinPath=function(k,...L){return k.with({path:S.join(k.path,...L)})},D.resolvePath=function(k,...L){let R=k.path,O=!1;R[0]!==_&&(R=_+R,O=!0);let M=S.resolve(R,...L);return O&&M[0]===_&&!k.authority&&(M=M.substring(1)),k.with({path:M})},D.dirname=function(k){if(k.path.length===0||k.path===_)return k;let L=S.dirname(k.path);return L.length===1&&L.charCodeAt(0)===46&&(L=""),k.with({path:L})},D.basename=function(k){return S.basename(k.path)},D.extname=function(k){return S.extname(k.path)}})(I||(I={}))})(),Hle=n})();({URI:us,Utils:u1}=Hle)});var hs,Fc=N(()=>{"use strict";OM();(function(t){t.basename=u1.basename,t.dirname=u1.dirname,t.extname=u1.extname,t.joinPath=u1.joinPath,t.resolvePath=u1.resolvePath;function e(i,a){return i?.toString()===a?.toString()}o(e,"equals"),t.equals=e;function r(i,a){let s=typeof i=="string"?i:i.path,l=typeof a=="string"?a:a.path,u=s.split("/").filter(m=>m.length>0),h=l.split("/").filter(m=>m.length>0),f=0;for(;f{"use strict";Ule();h1();qo();Ps();Fc();(function(t){t[t.Changed=0]="Changed",t[t.Parsed=1]="Parsed",t[t.IndexedContent=2]="IndexedContent",t[t.ComputedScopes=3]="ComputedScopes",t[t.Linked=4]="Linked",t[t.IndexedReferences=5]="IndexedReferences",t[t.Validated=6]="Validated"})(kn||(kn={}));Nx=class{static{o(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,r=yr.CancellationToken.None){let n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,r)}fromTextDocument(e,r,n){return r=r??us.parse(e.uri),yr.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromString(e,r,n){return yr.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromModel(e,r){return this.create(r,{$model:e})}create(e,r,n){if(typeof r=="string"){let i=this.parse(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else if("$model"in r){let i={value:r.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(i,e)}else{let i=this.parse(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}async createAsync(e,r,n){if(typeof r=="string"){let i=await this.parseAsync(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else{let i=await this.parseAsync(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}createLangiumDocument(e,r,n,i){let a;if(n)a={parseResult:e,uri:r,state:kn.Parsed,references:[],textDocument:n};else{let s=this.createTextDocumentGetter(r,i);a={parseResult:e,uri:r,state:kn.Parsed,references:[],get textDocument(){return s()}}}return e.value.$document=a,a}async update(e,r){var n,i;let a=(n=e.parseResult.value.$cstNode)===null||n===void 0?void 0:n.root.fullText,s=(i=this.textDocuments)===null||i===void 0?void 0:i.get(e.uri.toString()),l=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{let u=this.createTextDocumentGetter(e.uri,l);Object.defineProperty(e,"textDocument",{get:u})}return a!==l&&(e.parseResult=await this.parseAsync(e.uri,l,r),e.parseResult.value.$document=e),e.state=kn.Parsed,e}parse(e,r,n){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(r,n)}parseAsync(e,r,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(r,n)}createTextDocumentGetter(e,r){let n=this.serviceRegistry,i;return()=>i??(i=c1.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,r??""))}},Mx=class{static{o(this,"DefaultLangiumDocuments")}constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.serviceRegistry=e.ServiceRegistry}get all(){return en(this.documentMap.values())}addDocument(e){let r=e.uri.toString();if(this.documentMap.has(r))throw new Error(`A document with the URI '${r}' is already present.`);this.documentMap.set(r,e)}getDocument(e){let r=e.toString();return this.documentMap.get(r)}async getOrCreateDocument(e,r){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,r),this.addDocument(n),n)}createDocument(e,r,n){if(n)return this.langiumDocumentFactory.fromString(r,e,n).then(i=>(this.addDocument(i),i));{let i=this.langiumDocumentFactory.fromString(r,e);return this.addDocument(i),i}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(this.serviceRegistry.getServices(e).references.Linker.unlink(n),n.state=kn.Changed,n.precomputedScopes=void 0,n.diagnostics=void 0),n}deleteDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(n.state=kn.Changed,this.documentMap.delete(r)),n}}});var PM,Ix,BM=N(()=>{"use strict";qo();Rl();is();Yo();h1();PM=Symbol("ref_resolving"),Ix=class{static{o(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,r=yr.CancellationToken.None){for(let n of Wo(e.parseResult.value))await xi(r),Ag(n).forEach(i=>this.doLink(i,e))}doLink(e,r){var n;let i=e.reference;if(i._ref===void 0){i._ref=PM;try{let a=this.getCandidate(e);if(jd(a))i._ref=a;else if(i._nodeDescription=a,this.langiumDocuments().hasDocument(a.documentUri)){let s=this.loadAstNode(a);i._ref=s??this.createLinkingError(e,a)}else i._ref=void 0}catch(a){console.error(`An error occurred while resolving reference to '${i.$refText}':`,a);let s=(n=a.message)!==null&&n!==void 0?n:String(a);i._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${i.$refText}': ${s}`})}r.references.push(i)}}unlink(e){for(let r of e.references)delete r._ref,delete r._nodeDescription;e.references=[]}getCandidate(e){let n=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return n??this.createLinkingError(e)}buildReference(e,r,n,i){let a=this,s={$refNode:n,$refText:i,get ref(){var l;if(ii(this._ref))return this._ref;if(kR(this._nodeDescription)){let u=a.loadAstNode(this._nodeDescription);this._ref=u??a.createLinkingError({reference:s,container:e,property:r},this._nodeDescription)}else if(this._ref===void 0){this._ref=PM;let u=H2(e).$document,h=a.getLinkedNode({reference:s,container:e,property:r});if(h.error&&u&&u.state{"use strict";Ol();o(Wle,"isNamed");Ox=class{static{o(this,"DefaultNameProvider")}getName(e){if(Wle(e))return e.name}getNameNode(e){return Q2(e.$cstNode,"name")}}});var Px,$M=N(()=>{"use strict";Ol();Rl();is();Nl();Ps();Fc();Px=class{static{o(this,"DefaultReferences")}constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator}findDeclaration(e){if(e){let r=hN(e),n=e.astNode;if(r&&n){let i=n[r.feature];if(va(i))return i.ref;if(Array.isArray(i)){for(let a of i)if(va(a)&&a.$refNode&&a.$refNode.offset<=e.offset&&a.$refNode.end>=e.end)return a.ref}}if(n){let i=this.nameProvider.getNameNode(n);if(i&&(i===e||SR(e,i)))return n}}}findDeclarationNode(e){let r=this.findDeclaration(e);if(r?.$cstNode){let n=this.nameProvider.getNameNode(r);return n??r.$cstNode}}findReferences(e,r){let n=[];if(r.includeDeclaration){let a=this.getReferenceToSelf(e);a&&n.push(a)}let i=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return r.documentUri&&(i=i.filter(a=>hs.equals(a.sourceUri,r.documentUri))),n.push(...i),en(n)}getReferenceToSelf(e){let r=this.nameProvider.getNameNode(e);if(r){let n=Pa(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:Qd(r),local:!0}}}}});var Bl,vp,f1=N(()=>{"use strict";Ps();Bl=class{static{o(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[r,n]of e)this.add(r,n)}get size(){return zm.sum(en(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,r){if(r===void 0)return this.map.delete(e);{let n=this.map.get(e);if(n){let i=n.indexOf(r);if(i>=0)return n.length===1?this.map.delete(e):n.splice(i,1),!0}return!1}}get(e){var r;return(r=this.map.get(e))!==null&&r!==void 0?r:[]}has(e,r){if(r===void 0)return this.map.has(e);{let n=this.map.get(e);return n?n.indexOf(r)>=0:!1}}add(e,r){return this.map.has(e)?this.map.get(e).push(r):this.map.set(e,[r]),this}addAll(e,r){return this.map.has(e)?this.map.get(e).push(...r):this.map.set(e,Array.from(r)),this}forEach(e){this.map.forEach((r,n)=>r.forEach(i=>e(i,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return en(this.map.entries()).flatMap(([e,r])=>r.map(n=>[e,n]))}keys(){return en(this.map.keys())}values(){return en(this.map.values()).flat()}entriesGroupedByKey(){return en(this.map.entries())}},vp=class{static{o(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[r,n]of e)this.set(r,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,r){return this.map.set(e,r),this.inverse.set(r,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let r=this.map.get(e);return r!==void 0?(this.map.delete(e),this.inverse.delete(r),!0):!1}}});var Bx,zM=N(()=>{"use strict";qo();is();f1();Yo();Bx=class{static{o(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,r=yr.CancellationToken.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,r)}async computeExportsForNode(e,r,n=W2,i=yr.CancellationToken.None){let a=[];this.exportNode(e,a,r);for(let s of n(e))await xi(i),this.exportNode(s,a,r);return a}exportNode(e,r,n){let i=this.nameProvider.getName(e);i&&r.push(this.descriptions.createDescription(e,i,n))}async computeLocalScopes(e,r=yr.CancellationToken.None){let n=e.parseResult.value,i=new Bl;for(let a of Nc(n))await xi(r),this.processNode(a,e,i);return i}processNode(e,r,n){let i=e.$container;if(i){let a=this.nameProvider.getName(e);a&&n.add(i,this.descriptions.createDescription(e,a,r))}}}});var d1,Fx,xFe,GM=N(()=>{"use strict";Ps();d1=class{static{o(this,"StreamScope")}constructor(e,r,n){var i;this.elements=e,this.outerScope=r,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let r=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===e.toLowerCase()):this.elements.find(n=>n.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}},Fx=class{static{o(this,"MapScope")}constructor(e,r,n){var i;this.elements=new Map,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1;for(let a of e){let s=this.caseInsensitive?a.name.toLowerCase():a.name;this.elements.set(s,a)}this.outerScope=r}getElement(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(r);if(n)return n;if(this.outerScope)return this.outerScope.getElement(e)}getAllElements(){let e=en(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},xFe={getElement(){},getAllElements(){return I2}}});var p1,$x,xp,_E,m1,DE=N(()=>{"use strict";p1=class{static{o(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},$x=class extends p1{static{o(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,r){this.throwIfDisposed(),this.cache.set(e,r)}get(e,r){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(r){let n=r();return this.cache.set(e,n),n}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},xp=class extends p1{static{o(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(r=>r)}has(e,r){return this.throwIfDisposed(),this.cacheForContext(e).has(r)}set(e,r,n){this.throwIfDisposed(),this.cacheForContext(e).set(r,n)}get(e,r,n){this.throwIfDisposed();let i=this.cacheForContext(e);if(i.has(r))return i.get(r);if(n){let a=n();return i.set(r,a),a}else return}delete(e,r){return this.throwIfDisposed(),this.cacheForContext(e).delete(r)}clear(e){if(this.throwIfDisposed(),e){let r=this.converter(e);this.cache.delete(r)}else this.cache.clear()}cacheForContext(e){let r=this.converter(e),n=this.cache.get(r);return n||(n=new Map,this.cache.set(r,n)),n}},_E=class extends xp{static{o(this,"DocumentCache")}constructor(e,r){super(n=>n.toString()),r?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(r,n=>{this.clear(n.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{for(let a of i)this.clear(a)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{let a=n.concat(i);for(let s of a)this.clear(s)}))}},m1=class extends $x{static{o(this,"WorkspaceCache")}constructor(e,r){super(),r?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(r,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{i.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}});var zx,VM=N(()=>{"use strict";GM();is();Ps();DE();zx=class{static{o(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new m1(e.shared)}getScope(e){let r=[],n=this.reflection.getReferenceType(e),i=Pa(e.container).precomputedScopes;if(i){let s=e.container;do{let l=i.get(s);l.length>0&&r.push(en(l).filter(u=>this.reflection.isSubtype(u.type,n))),s=s.$container}while(s)}let a=this.getGlobalScope(n,e);for(let s=r.length-1;s>=0;s--)a=this.createScope(r[s],a);return a}createScope(e,r,n){return new d1(en(e),r,n)}createScopeForNodes(e,r,n){let i=en(e).map(a=>{let s=this.nameProvider.getName(a);if(s)return this.descriptions.createDescription(a,s)}).nonNullable();return new d1(i,r,n)}getGlobalScope(e,r){return this.globalScopeCache.get(e,()=>new Fx(this.indexManager.allElements(e)))}}});function UM(t){return typeof t.$comment=="string"}function qle(t){return typeof t=="object"&&!!t&&("$ref"in t||"$error"in t)}var Gx,LE=N(()=>{"use strict";OM();Rl();is();Ol();o(UM,"isAstNodeWithComment");o(qle,"isIntermediateReference");Gx=class{static{o(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,r){let n=r??{},i=r?.replacer,a=o((l,u)=>this.replacer(l,u,n),"defaultReplacer"),s=i?(l,u)=>i(l,u,a):a;try{return this.currentDocument=Pa(e),JSON.stringify(e,s,r?.space)}finally{this.currentDocument=void 0}}deserialize(e,r){let n=r??{},i=JSON.parse(e);return this.linkNode(i,i,n),i}replacer(e,r,{refText:n,sourceText:i,textRegions:a,comments:s,uriConverter:l}){var u,h,f,d;if(!this.ignoreProperties.has(e))if(va(r)){let p=r.ref,m=n?r.$refText:void 0;if(p){let g=Pa(p),y="";this.currentDocument&&this.currentDocument!==g&&(l?y=l(g.uri,r):y=g.uri.toString());let v=this.astNodeLocator.getAstNodePath(p);return{$ref:`${y}#${v}`,$refText:m}}else return{$error:(h=(u=r.error)===null||u===void 0?void 0:u.message)!==null&&h!==void 0?h:"Could not resolve reference",$refText:m}}else if(ii(r)){let p;if(a&&(p=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},r)),(!e||r.$document)&&p?.$textRegion&&(p.$textRegion.documentURI=(f=this.currentDocument)===null||f===void 0?void 0:f.uri.toString())),i&&!e&&(p??(p=Object.assign({},r)),p.$sourceText=(d=r.$cstNode)===null||d===void 0?void 0:d.text),s){p??(p=Object.assign({},r));let m=this.commentProvider.getComment(r);m&&(p.$comment=m.replace(/\r/g,""))}return p??r}else return r}addAstNodeRegionWithAssignmentsTo(e){let r=o(n=>({offset:n.offset,end:n.end,length:n.length,range:n.range}),"createDocumentSegment");if(e.$cstNode){let n=e.$textRegion=r(e.$cstNode),i=n.assignments={};return Object.keys(e).filter(a=>!a.startsWith("$")).forEach(a=>{let s=oN(e.$cstNode,a).map(r);s.length!==0&&(i[a]=s)}),e}}linkNode(e,r,n,i,a,s){for(let[u,h]of Object.entries(e))if(Array.isArray(h))for(let f=0;f{"use strict";Fc();Vx=class{static{o(this,"DefaultServiceRegistry")}get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.textDocuments=e?.workspace.TextDocuments}register(e){let r=e.LanguageMetaData;for(let n of r.fileExtensions)this.fileExtensionMap.has(n)&&console.warn(`The file extension ${n} is used by multiple languages. It is now assigned to '${r.languageId}'.`),this.fileExtensionMap.set(n,e);this.languageIdMap.set(r.languageId,e),this.languageIdMap.size===1?this.singleton=e:this.singleton=void 0}getServices(e){var r,n;if(this.singleton!==void 0)return this.singleton;if(this.languageIdMap.size===0)throw new Error("The service registry is empty. Use `register` to register the services of a language.");let i=(n=(r=this.textDocuments)===null||r===void 0?void 0:r.get(e))===null||n===void 0?void 0:n.languageId;if(i!==void 0){let l=this.languageIdMap.get(i);if(l)return l}let a=hs.extname(e),s=this.fileExtensionMap.get(a);if(!s)throw i?new Error(`The service registry contains no services for the extension '${a}' for language '${i}'.`):new Error(`The service registry contains no services for the extension '${a}'.`);return s}hasServices(e){try{return this.getServices(e),!0}catch{return!1}}get all(){return Array.from(this.languageIdMap.values())}}});function bp(t){return{code:t}}var g1,Ux,Hx=N(()=>{"use strict";Xo();f1();Yo();Ps();o(bp,"diagnosticData");(function(t){t.all=["fast","slow","built-in"]})(g1||(g1={}));Ux=class{static{o(this,"ValidationRegistry")}constructor(e){this.entries=new Bl,this.entriesBefore=[],this.entriesAfter=[],this.reflection=e.shared.AstReflection}register(e,r=this,n="fast"){if(n==="built-in")throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(let[i,a]of Object.entries(e)){let s=a;if(Array.isArray(s))for(let l of s){let u={check:this.wrapValidationException(l,r),category:n};this.addEntry(i,u)}else if(typeof s=="function"){let l={check:this.wrapValidationException(s,r),category:n};this.addEntry(i,l)}else Lc(s)}}wrapValidationException(e,r){return async(n,i,a)=>{await this.handleException(()=>e.call(r,n,i,a),"An error occurred during validation",i,n)}}async handleException(e,r,n,i){try{await e()}catch(a){if(Bc(a))throw a;console.error(`${r}:`,a),a instanceof Error&&a.stack&&console.error(a.stack);let s=a instanceof Error?a.message:String(a);n("error",`${r}: ${s}`,{node:i})}}addEntry(e,r){if(e==="AstNode"){this.entries.add("AstNode",r);return}for(let n of this.reflection.getAllSubTypes(e))this.entries.add(n,r)}getChecks(e,r){let n=en(this.entries.get(e)).concat(this.entries.get("AstNode"));return r&&(n=n.filter(i=>r.includes(i.category))),n.map(i=>i.check)}registerBeforeDocument(e,r=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",r))}registerAfterDocument(e,r=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",r))}wrapPreparationException(e,r,n){return async(i,a,s,l)=>{await this.handleException(()=>e.call(n,i,a,s,l),r,a,i)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}});function Yle(t){if(t.range)return t.range;let e;return typeof t.property=="string"?e=Q2(t.node.$cstNode,t.property,t.index):typeof t.keyword=="string"&&(e=cN(t.node.$cstNode,t.keyword,t.index)),e??(e=t.node.$cstNode),e?e.range:{start:{line:0,character:0},end:{line:0,character:0}}}function RE(t){switch(t){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+t)}}function Xle(t){switch(t){case"error":return bp(jo.LexingError);case"warning":return bp(jo.LexingWarning);case"info":return bp(jo.LexingInfo);case"hint":return bp(jo.LexingHint);default:throw new Error("Invalid diagnostic severity: "+t)}}var Wx,jo,WM=N(()=>{"use strict";qo();Ol();is();Nl();Yo();Hx();Wx=class{static{o(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,r={},n=yr.CancellationToken.None){let i=e.parseResult,a=[];if(await xi(n),(!r.categories||r.categories.includes("built-in"))&&(this.processLexingErrors(i,a,r),r.stopAfterLexingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===jo.LexingError})||(this.processParsingErrors(i,a,r),r.stopAfterParsingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===jo.ParsingError}))||(this.processLinkingErrors(e,a,r),r.stopAfterLinkingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===jo.LinkingError}))))return a;try{a.push(...await this.validateAst(i.value,r,n))}catch(s){if(Bc(s))throw s;console.error("An error occurred during validation:",s)}return await xi(n),a}processLexingErrors(e,r,n){var i,a,s;let l=[...e.lexerErrors,...(a=(i=e.lexerReport)===null||i===void 0?void 0:i.diagnostics)!==null&&a!==void 0?a:[]];for(let u of l){let h=(s=u.severity)!==null&&s!==void 0?s:"error",f={severity:RE(h),range:{start:{line:u.line-1,character:u.column-1},end:{line:u.line-1,character:u.column+u.length-1}},message:u.message,data:Xle(h),source:this.getSource()};r.push(f)}}processParsingErrors(e,r,n){for(let i of e.parserErrors){let a;if(isNaN(i.token.startOffset)){if("previousToken"in i){let s=i.previousToken;if(isNaN(s.startOffset)){let l={line:0,character:0};a={start:l,end:l}}else{let l={line:s.endLine-1,character:s.endColumn};a={start:l,end:l}}}}else a=Gm(i.token);if(a){let s={severity:RE("error"),range:a,message:i.message,data:bp(jo.ParsingError),source:this.getSource()};r.push(s)}}}processLinkingErrors(e,r,n){for(let i of e.references){let a=i.error;if(a){let s={node:a.container,property:a.property,index:a.index,data:{code:jo.LinkingError,containerType:a.container.$type,property:a.property,refText:a.reference.$refText}};r.push(this.toDiagnostic("error",a.message,s))}}}async validateAst(e,r,n=yr.CancellationToken.None){let i=[],a=o((s,l,u)=>{i.push(this.toDiagnostic(s,l,u))},"acceptor");return await this.validateAstBefore(e,r,a,n),await this.validateAstNodes(e,r,a,n),await this.validateAstAfter(e,r,a,n),i}async validateAstBefore(e,r,n,i=yr.CancellationToken.None){var a;let s=this.validationRegistry.checksBefore;for(let l of s)await xi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}async validateAstNodes(e,r,n,i=yr.CancellationToken.None){await Promise.all(Wo(e).map(async a=>{await xi(i);let s=this.validationRegistry.getChecks(a.$type,r.categories);for(let l of s)await l(a,n,i)}))}async validateAstAfter(e,r,n,i=yr.CancellationToken.None){var a;let s=this.validationRegistry.checksAfter;for(let l of s)await xi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}toDiagnostic(e,r,n){return{message:r,range:Yle(n),severity:RE(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};o(Yle,"getDiagnosticRange");o(RE,"toDiagnosticSeverity");o(Xle,"toDiagnosticData");(function(t){t.LexingError="lexing-error",t.LexingWarning="lexing-warning",t.LexingInfo="lexing-info",t.LexingHint="lexing-hint",t.ParsingError="parsing-error",t.LinkingError="linking-error"})(jo||(jo={}))});var qx,Yx,qM=N(()=>{"use strict";qo();Rl();is();Nl();Yo();Fc();qx=class{static{o(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,r,n){let i=n??Pa(e);r??(r=this.nameProvider.getName(e));let a=this.astNodeLocator.getAstNodePath(e);if(!r)throw new Error(`Node at path ${a} has no name.`);let s,l=o(()=>{var u;return s??(s=Qd((u=this.nameProvider.getNameNode(e))!==null&&u!==void 0?u:e.$cstNode))},"nameSegmentGetter");return{node:e,name:r,get nameSegment(){return l()},selectionSegment:Qd(e.$cstNode),type:e.$type,documentUri:i.uri,path:a}}},Yx=class{static{o(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,r=yr.CancellationToken.None){let n=[],i=e.parseResult.value;for(let a of Wo(i))await xi(r),Ag(a).filter(s=>!jd(s)).forEach(s=>{let l=this.createDescription(s);l&&n.push(l)});return n}createDescription(e){let r=e.reference.$nodeDescription,n=e.reference.$refNode;if(!r||!n)return;let i=Pa(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:r.documentUri,targetPath:r.path,segment:Qd(n),local:hs.equals(r.documentUri,i)}}}});var Xx,YM=N(()=>{"use strict";Xx=class{static{o(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let r=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return r+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:r}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return r!==void 0?e+this.indexSeparator+r:e}getAstNode(e,r){return r.split(this.segmentSeparator).reduce((i,a)=>{if(!i||a.length===0)return i;let s=a.indexOf(this.indexSeparator);if(s>0){let l=a.substring(0,s),u=parseInt(a.substring(s+1)),h=i[l];return h?.[u]}return i[a]},e)}}});var Kn={};var NE=N(()=>{"use strict";Sr(Kn,Sa(LM(),1))});var jx,XM=N(()=>{"use strict";NE();Yo();jx=class{static{o(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new cs,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new Kn.Emitter,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var r,n;this.workspaceConfig=(n=(r=e.capabilities.workspace)===null||r===void 0?void 0:r.configuration)!==null&&n!==void 0?n:!1}async initialized(e){if(this.workspaceConfig){if(e.register){let r=this.serviceRegistry.all;e.register({section:r.map(n=>this.toSectionName(n.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let r=this.serviceRegistry.all.map(i=>({section:this.toSectionName(i.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(r);r.forEach((i,a)=>{this.updateSectionConfiguration(i.section,n[a])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(r=>{let n=e.settings[r];this.updateSectionConfiguration(r,n),this.onConfigurationSectionUpdateEmitter.fire({section:r,configuration:n})})}updateSectionConfiguration(e,r){this.settings[e]=r}async getConfiguration(e,r){await this.ready;let n=this.toSectionName(e);if(this.settings[n])return this.settings[n][r]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}});var ff,jM=N(()=>{"use strict";(function(t){function e(r){return{dispose:o(async()=>await r(),"dispose")}}o(e,"create"),t.create=e})(ff||(ff={}))});var Kx,KM=N(()=>{"use strict";qo();jM();f1();Yo();Ps();Hx();h1();Kx=class{static{o(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Bl,this.documentPhaseListeners=new Bl,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=kn.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,r={},n=yr.CancellationToken.None){var i,a;for(let s of e){let l=s.uri.toString();if(s.state===kn.Validated){if(typeof r.validation=="boolean"&&r.validation)s.state=kn.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(l);else if(typeof r.validation=="object"){let u=this.buildState.get(l),h=(i=u?.result)===null||i===void 0?void 0:i.validationChecks;if(h){let d=((a=r.validation.categories)!==null&&a!==void 0?a:g1.all).filter(p=>!h.includes(p));d.length>0&&(this.buildState.set(l,{completed:!1,options:{validation:Object.assign(Object.assign({},r.validation),{categories:d})},result:u.result}),s.state=kn.IndexedReferences)}}}else this.buildState.delete(l)}this.currentState=kn.Changed,await this.emitUpdate(e.map(s=>s.uri),[]),await this.buildDocuments(e,r,n)}async update(e,r,n=yr.CancellationToken.None){this.currentState=kn.Changed;for(let s of r)this.langiumDocuments.deleteDocument(s),this.buildState.delete(s.toString()),this.indexManager.remove(s);for(let s of e){if(!this.langiumDocuments.invalidateDocument(s)){let u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);u.state=kn.Changed,this.langiumDocuments.addDocument(u)}this.buildState.delete(s.toString())}let i=en(e).concat(r).map(s=>s.toString()).toSet();this.langiumDocuments.all.filter(s=>!i.has(s.uri.toString())&&this.shouldRelink(s,i)).forEach(s=>{this.serviceRegistry.getServices(s.uri).references.Linker.unlink(s),s.state=Math.min(s.state,kn.ComputedScopes),s.diagnostics=void 0}),await this.emitUpdate(e,r),await xi(n);let a=this.sortDocuments(this.langiumDocuments.all.filter(s=>{var l;return s.staten(e,r)))}sortDocuments(e){let r=0,n=e.length-1;for(;r=0&&!this.hasTextDocument(e[n]);)n--;rn.error!==void 0)?!0:this.indexManager.isAffected(e,r)}onUpdate(e){return this.updateListeners.push(e),ff.create(()=>{let r=this.updateListeners.indexOf(e);r>=0&&this.updateListeners.splice(r,1)})}async buildDocuments(e,r,n){this.prepareBuild(e,r),await this.runCancelable(e,kn.Parsed,n,a=>this.langiumDocumentFactory.update(a,n)),await this.runCancelable(e,kn.IndexedContent,n,a=>this.indexManager.updateContent(a,n)),await this.runCancelable(e,kn.ComputedScopes,n,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.precomputedScopes=await s.computeLocalScopes(a,n)}),await this.runCancelable(e,kn.Linked,n,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,n)),await this.runCancelable(e,kn.IndexedReferences,n,a=>this.indexManager.updateReferences(a,n));let i=e.filter(a=>this.shouldValidate(a));await this.runCancelable(i,kn.Validated,n,a=>this.validate(a,n));for(let a of e){let s=this.buildState.get(a.uri.toString());s&&(s.completed=!0)}}prepareBuild(e,r){for(let n of e){let i=n.uri.toString(),a=this.buildState.get(i);(!a||a.completed)&&this.buildState.set(i,{completed:!1,options:r,result:a?.result})}}async runCancelable(e,r,n,i){let a=e.filter(l=>l.statel.state===r);await this.notifyBuildPhase(s,r,n),this.currentState=r}onBuildPhase(e,r){return this.buildPhaseListeners.add(e,r),ff.create(()=>{this.buildPhaseListeners.delete(e,r)})}onDocumentPhase(e,r){return this.documentPhaseListeners.add(e,r),ff.create(()=>{this.documentPhaseListeners.delete(e,r)})}waitUntil(e,r,n){let i;if(r&&"path"in r?i=r:n=r,n??(n=yr.CancellationToken.None),i){let a=this.langiumDocuments.getDocument(i);if(a&&a.state>e)return Promise.resolve(i)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(Pc):new Promise((a,s)=>{let l=this.onBuildPhase(e,()=>{if(l.dispose(),u.dispose(),i){let h=this.langiumDocuments.getDocument(i);a(h?.uri)}else a(void 0)}),u=n.onCancellationRequested(()=>{l.dispose(),u.dispose(),s(Pc)})})}async notifyDocumentPhase(e,r,n){let a=this.documentPhaseListeners.get(r).slice();for(let s of a)try{await s(e,n)}catch(l){if(!Bc(l))throw l}}async notifyBuildPhase(e,r,n){if(e.length===0)return;let a=this.buildPhaseListeners.get(r).slice();for(let s of a)await xi(n),await s(e,n)}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,r){var n,i;let a=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,s=this.getBuildOptions(e).validation,l=typeof s=="object"?s:void 0,u=await a.validateDocument(e,l,r);e.diagnostics?e.diagnostics.push(...u):e.diagnostics=u;let h=this.buildState.get(e.uri.toString());if(h){(n=h.result)!==null&&n!==void 0||(h.result={});let f=(i=l?.categories)!==null&&i!==void 0?i:g1.all;h.result.validationChecks?h.result.validationChecks.push(...f):h.result.validationChecks=[...f]}}getBuildOptions(e){var r,n;return(n=(r=this.buildState.get(e.uri.toString()))===null||r===void 0?void 0:r.options)!==null&&n!==void 0?n:{}}}});var Qx,QM=N(()=>{"use strict";is();DE();qo();Ps();Fc();Qx=class{static{o(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new xp,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,r){let n=Pa(e).uri,i=[];return this.referenceIndex.forEach(a=>{a.forEach(s=>{hs.equals(s.targetUri,n)&&s.targetPath===r&&i.push(s)})}),en(i)}allElements(e,r){let n=en(this.symbolIndex.keys());return r&&(n=n.filter(i=>!r||r.has(i))),n.map(i=>this.getFileDescriptions(i,e)).flat()}getFileDescriptions(e,r){var n;return r?this.symbolByTypeIndex.get(e,r,()=>{var a;return((a=this.symbolIndex.get(e))!==null&&a!==void 0?a:[]).filter(l=>this.astReflection.isSubtype(l.type,r))}):(n=this.symbolIndex.get(e))!==null&&n!==void 0?n:[]}remove(e){let r=e.toString();this.symbolIndex.delete(r),this.symbolByTypeIndex.clear(r),this.referenceIndex.delete(r)}async updateContent(e,r=yr.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.computeExports(e,r),a=e.uri.toString();this.symbolIndex.set(a,i),this.symbolByTypeIndex.clear(a)}async updateReferences(e,r=yr.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,r);this.referenceIndex.set(e.uri.toString(),i)}isAffected(e,r){let n=this.referenceIndex.get(e.uri.toString());return n?n.some(i=>!i.local&&r.has(i.targetUri.toString())):!1}}});var Zx,ZM=N(()=>{"use strict";qo();Yo();Fc();Zx=class{static{o(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new cs,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){var r;this.folders=(r=e.workspaceFolders)!==null&&r!==void 0?r:void 0}initialized(e){return this.mutex.write(r=>{var n;return this.initializeWorkspace((n=this.folders)!==null&&n!==void 0?n:[],r)})}async initializeWorkspace(e,r=yr.CancellationToken.None){let n=await this.performStartup(e);await xi(r),await this.documentBuilder.build(n,this.initialBuildOptions,r)}async performStartup(e){let r=this.serviceRegistry.all.flatMap(a=>a.LanguageMetaData.fileExtensions),n=[],i=o(a=>{n.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)},"collector");return await this.loadAdditionalDocuments(e,i),await Promise.all(e.map(a=>[a,this.getRootFolder(a)]).map(async a=>this.traverseFolder(...a,r,i))),this._ready.resolve(),n}loadAdditionalDocuments(e,r){return Promise.resolve()}getRootFolder(e){return us.parse(e.uri)}async traverseFolder(e,r,n,i){let a=await this.fileSystemProvider.readDirectory(r);await Promise.all(a.map(async s=>{if(this.includeEntry(e,s,n)){if(s.isDirectory)await this.traverseFolder(e,s.uri,n,i);else if(s.isFile){let l=await this.langiumDocuments.getOrCreateDocument(s.uri);i(l)}}}))}includeEntry(e,r,n){let i=hs.basename(r.uri);if(i.startsWith("."))return!1;if(r.isDirectory)return i!=="node_modules"&&i!=="out";if(r.isFile){let a=hs.extname(r.uri);return n.includes(a)}return!1}}});function IE(t){return Array.isArray(t)&&(t.length===0||"name"in t[0])}function eI(t){return t&&"modes"in t&&"defaultMode"in t}function JM(t){return!IE(t)&&!eI(t)}var Jx,ME,wp,OE=N(()=>{"use strict";cf();Jx=class{static{o(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,r,n,i,a){return Gg.buildUnexpectedCharactersMessage(e,r,n,i,a)}buildUnableToPopLexerModeMessage(e){return Gg.buildUnableToPopLexerModeMessage(e)}},ME={mode:"full"},wp=class{static{o(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let r=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(r);let n=JM(r)?Object.values(r):r,i=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new Xn(n,{positionTracking:"full",skipValidations:i,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,r=ME){var n,i,a;let s=this.chevrotainLexer.tokenize(e);return{tokens:s.tokens,errors:s.errors,hidden:(n=s.groups.hidden)!==null&&n!==void 0?n:[],report:(a=(i=this.tokenBuilder).flushLexingReport)===null||a===void 0?void 0:a.call(i,e)}}toTokenTypeDictionary(e){if(JM(e))return e;let r=eI(e)?Object.values(e.modes).flat():e,n={};return r.forEach(i=>n[i.name]=i),n}};o(IE,"isTokenTypeArray");o(eI,"isIMultiModeLexerDefinition");o(JM,"isTokenTypeDictionary")});function nI(t,e,r){let n,i;typeof t=="string"?(i=e,n=r):(i=t.range.start,n=e),i||(i=jr.create(0,0));let a=Qle(t),s=aI(n),l=wFe({lines:a,position:i,options:s});return CFe({index:0,tokens:l,position:i})}function iI(t,e){let r=aI(e),n=Qle(t);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],s=r.start,l=r.end;return!!s?.exec(i)&&!!l?.exec(a)}function Qle(t){let e="";return typeof t=="string"?e=t:e=t.text,e.split(JR)}function wFe(t){var e,r,n;let i=[],a=t.position.line,s=t.position.character;for(let l=0;l=f.length){if(i.length>0){let m=jr.create(a,s);i.push({type:"break",content:"",range:Pr.create(m,m)})}}else{jle.lastIndex=d;let m=jle.exec(f);if(m){let g=m[0],y=m[1],v=jr.create(a,s+d),x=jr.create(a,s+d+g.length);i.push({type:"tag",content:y,range:Pr.create(v,x)}),d+=g.length,d=rI(f,d)}if(d0&&i[i.length-1].type==="break"?i.slice(0,-1):i}function TFe(t,e,r,n){let i=[];if(t.length===0){let a=jr.create(r,n),s=jr.create(r,n+e.length);i.push({type:"text",content:e,range:Pr.create(a,s)})}else{let a=0;for(let l of t){let u=l.index,h=e.substring(a,u);h.length>0&&i.push({type:"text",content:e.substring(a,u),range:Pr.create(jr.create(r,a+n),jr.create(r,u+n))});let f=h.length+1,d=l[1];if(i.push({type:"inline-tag",content:d,range:Pr.create(jr.create(r,a+f+n),jr.create(r,a+f+d.length+n))}),f+=d.length,l.length===4){f+=l[2].length;let p=l[3];i.push({type:"text",content:p,range:Pr.create(jr.create(r,a+f+n),jr.create(r,a+f+p.length+n))})}else i.push({type:"text",content:"",range:Pr.create(jr.create(r,a+f+n),jr.create(r,a+f+n))});a=u+l[0].length}let s=e.substring(a);s.length>0&&i.push({type:"text",content:s,range:Pr.create(jr.create(r,a+n),jr.create(r,a+n+s.length))})}return i}function rI(t,e){let r=t.substring(e).match(kFe);return r?e+r.index:t.length}function SFe(t){let e=t.match(EFe);if(e&&typeof e.index=="number")return e.index}function CFe(t){var e,r,n,i;let a=jr.create(t.position.line,t.position.character);if(t.tokens.length===0)return new PE([],Pr.create(a,a));let s=[];for(;t.index0){let u=rI(e,a);s=e.substring(u),e=e.substring(0,a)}return(t==="linkcode"||t==="link"&&r.link==="code")&&(s=`\`${s}\``),(i=(n=r.renderLink)===null||n===void 0?void 0:n.call(r,e,s))!==null&&i!==void 0?i:RFe(e,s)}}function RFe(t,e){try{return us.parse(t,!0),`[${e}](${t})`}catch{return t}}function Kle(t){return t.endsWith(` +`&&i++}n&&r.length>0&&e.push(r.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let r=this.getLineOffsets(),n=0,i=r.length;if(i===0)return tn.create(0,e);for(;ne?i=s:n=s+1}let a=n-1;return tn.create(a,e-r[a])}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line],i=e.line+1"u"}o(n,"undefined"),t.undefined=n;function i(m){return m===!0||m===!1}o(i,"boolean"),t.boolean=i;function a(m){return e.call(m)==="[object String]"}o(a,"string"),t.string=a;function s(m){return e.call(m)==="[object Number]"}o(s,"number"),t.number=s;function l(m,g,y){return e.call(m)==="[object Number]"&&g<=m&&m<=y}o(l,"numberRange"),t.numberRange=l;function u(m){return e.call(m)==="[object Number]"&&-2147483648<=m&&m<=2147483647}o(u,"integer"),t.integer=u;function h(m){return e.call(m)==="[object Number]"&&0<=m&&m<=2147483647}o(h,"uinteger"),t.uinteger=h;function f(m){return e.call(m)==="[object Function]"}o(f,"func"),t.func=f;function d(m){return m!==null&&typeof m=="object"}o(d,"objectLiteral"),t.objectLiteral=d;function p(m,g){return Array.isArray(m)&&m.every(g)}o(p,"typedArray"),t.typedArray=p})(Ge||(Ge={}))});var wb,kb,Yp,Xp,FP,B1,FS=N(()=>{"use strict";BP();Bl();wb=class{static{o(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){var e;return(e=this.nodeStack[this.nodeStack.length-1])!==null&&e!==void 0?e:this.rootNode}buildRootNode(e){return this.rootNode=new B1(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let r=new Xp;return r.grammarSource=e,r.root=this.rootNode,this.current.content.push(r),this.nodeStack.push(r),r}buildLeafNode(e,r){let n=new Yp(e.startOffset,e.image.length,xg(e),e.tokenType,!r);return n.grammarSource=r,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){let r=e.container;if(r){let n=r.content.indexOf(e);n>=0&&r.content.splice(n,1)}}addHiddenNodes(e){let r=[];for(let a of e){let s=new Yp(a.startOffset,a.image.length,xg(a),a.tokenType,!0);s.root=this.rootNode,r.push(s)}let n=this.current,i=!1;if(n.content.length>0){n.content.push(...r);return}for(;n.container;){let a=n.container.content.indexOf(n);if(a>0){n.container.content.splice(a,0,...r),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...r)}construct(e){let r=this.current;typeof e.$type=="string"&&(this.current.astNode=e),e.$cstNode=r;let n=this.nodeStack.pop();n?.content.length===0&&this.removeNode(n)}},kb=class{static{o(this,"AbstractCstNode")}get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var e,r;let n=typeof((e=this._astNode)===null||e===void 0?void 0:e.$type)=="string"?this._astNode:(r=this.container)===null||r===void 0?void 0:r.astNode;if(!n)throw new Error("This node has no associated AST element");return n}set astNode(e){this._astNode=e}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}},Yp=class extends kb{static{o(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,r,n,i,a=!1){super(),this._hidden=a,this._offset=e,this._tokenType=i,this._length=r,this._range=n}},Xp=class extends kb{static{o(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new FP(this)}get children(){return this.content}get offset(){var e,r;return(r=(e=this.firstNonHiddenNode)===null||e===void 0?void 0:e.offset)!==null&&r!==void 0?r:0}get length(){return this.end-this.offset}get end(){var e,r;return(r=(e=this.lastNonHiddenNode)===null||e===void 0?void 0:e.end)!==null&&r!==void 0?r:0}get range(){let e=this.firstNonHiddenNode,r=this.lastNonHiddenNode;if(e&&r){if(this._rangeCache===void 0){let{range:n}=e,{range:i}=r;this._rangeCache={start:n.start,end:i.end.line=0;e--){let r=this.content[e];if(!r.hidden)return r}return this.content[this.content.length-1]}},FP=class t extends Array{static{o(this,"CstNodeContainer")}constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,t.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,r,...n){return this.addParents(n),super.splice(e,r,...n)}addParents(e){for(let r of e)r.container=this.parent}},B1=class extends Xp{static{o(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}}});function $P(t){return t.$type===$S}var $S,j0e,K0e,Eb,Sb,zS,F1,Cb,PXe,zP,Ab=N(()=>{"use strict";Ff();Ype();Hc();zl();hs();FS();$S=Symbol("Datatype");o($P,"isDataTypeNode");j0e="\u200B",K0e=o(t=>t.endsWith(j0e)?t:t+j0e,"withRuleSuffix"),Eb=class{static{o(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let r=this.lexer.definition,n=e.LanguageMetaData.mode==="production";this.wrapper=new zP(r,Object.assign(Object.assign({},e.parser.ParserConfig),{skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,r){this.wrapper.wrapOr(e,r)}optional(e,r){this.wrapper.wrapOption(e,r)}many(e,r){this.wrapper.wrapMany(e,r)}atLeastOne(e,r){this.wrapper.wrapAtLeastOne(e,r)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},Sb=class extends Eb{static{o(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new wb,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,r){let n=this.computeRuleType(e),i=this.wrapper.DEFINE_RULE(K0e(e.name),this.startImplementation(n,r).bind(this));return this.allRules.set(e.name,i),e.entry&&(this.mainRule=i),i}computeRuleType(e){if(!e.fragment){if(jx(e))return $S;{let r=c1(e);return r??e.name}}}parse(e,r={}){this.nodeBuilder.buildRootNode(e);let n=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=n.tokens;let i=r.rule?this.allRules.get(r.rule):this.mainRule;if(!i)throw new Error(r.rule?`No rule found with name '${r.rule}'`:"No main rule available.");let a=i.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(n.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:a,lexerErrors:n.errors,lexerReport:n.report,parserErrors:this.wrapper.errors}}startImplementation(e,r){return n=>{let i=!this.isRecording()&&e!==void 0;if(i){let s={$type:e};this.stack.push(s),e===$S&&(s.value="")}let a;try{a=r(n)}catch{a=void 0}return a===void 0&&i&&(a=this.construct()),a}}extractHiddenTokens(e){let r=this.lexerResult.hidden;if(!r.length)return[];let n=e.startOffset;for(let i=0;in)return r.splice(0,i);return r.splice(0,r.length)}consume(e,r,n){let i=this.wrapper.wrapConsume(e,r);if(!this.isRecording()&&this.isValidToken(i)){let a=this.extractHiddenTokens(i);this.nodeBuilder.addHiddenNodes(a);let s=this.nodeBuilder.buildLeafNode(i,n),{assignment:l,isCrossRef:u}=this.getAssignment(n),h=this.current;if(l){let f=Zo(n)?i.image:this.converter.convert(i.image,s);this.assign(l.operator,l.feature,f,s,u)}else if($P(h)){let f=i.image;Zo(n)||(f=this.converter.convert(f,s).toString()),h.value+=f}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,r,n,i,a){let s;!this.isRecording()&&!n&&(s=this.nodeBuilder.buildCompositeNode(i));let l=this.wrapper.wrapSubrule(e,r,a);!this.isRecording()&&s&&s.length>0&&this.performSubruleAssignment(l,i,s)}performSubruleAssignment(e,r,n){let{assignment:i,isCrossRef:a}=this.getAssignment(r);if(i)this.assign(i.operator,i.feature,e,n,a);else if(!i){let s=this.current;if($P(s))s.value+=e.toString();else if(typeof e=="object"&&e){let u=this.assignWithoutOverride(e,s);this.stack.pop(),this.stack.push(u)}}}action(e,r){if(!this.isRecording()){let n=this.current;if(r.feature&&r.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode),this.nodeBuilder.buildCompositeNode(r).content.push(n.$cstNode);let a={$type:e};this.stack.push(a),this.assign(r.operator,r.feature,n,n.$cstNode,!1)}else n.$type=e}}construct(){if(this.isRecording())return;let e=this.current;return zE(e),this.nodeBuilder.construct(e),this.stack.pop(),$P(e)?this.converter.convert(e.value,e.$cstNode):(gO(this.astReflection,e),e)}getAssignment(e){if(!this.assignmentMap.has(e)){let r=Ip(e,Fl);this.assignmentMap.set(e,{assignment:r,isCrossRef:r?Mp(r.terminal):!1})}return this.assignmentMap.get(e)}assign(e,r,n,i,a){let s=this.current,l;switch(a&&typeof n=="string"?l=this.linker.buildReference(s,r,i,n):l=n,e){case"=":{s[r]=l;break}case"?=":{s[r]=!0;break}case"+=":Array.isArray(s[r])||(s[r]=[]),s[r].push(l)}}assignWithoutOverride(e,r){for(let[i,a]of Object.entries(r)){let s=e[i];s===void 0?e[i]=a:Array.isArray(s)&&Array.isArray(a)&&(a.push(...s),e[i]=a)}let n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},zS=class{static{o(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return Zu.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return Zu.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return Zu.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return Zu.buildEarlyExitMessage(e)}},F1=class extends zS{static{o(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:r}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${r.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},Cb=class extends Eb{static{o(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let r=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=r.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,r){let n=this.wrapper.DEFINE_RULE(K0e(e.name),this.startImplementation(r).bind(this));return this.allRules.set(e.name,n),e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return r=>{let n=this.keepStackSize();try{e(r)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,r,n){this.wrapper.wrapConsume(e,r),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,r,n,i,a){this.before(i),this.wrapper.wrapSubrule(e,r,a),this.after(i)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let r=this.elementStack.lastIndexOf(e);r>=0&&this.elementStack.splice(r)}}get currIdx(){return this.wrapper.currIdx}},PXe={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new F1},zP=class extends gb{static{o(this,"ChevrotainWrapper")}constructor(e,r){let n=r&&"maxLookahead"in r;super(e,Object.assign(Object.assign(Object.assign({},PXe),{lookaheadStrategy:n?new Ju({maxLookahead:r.maxLookahead}):new bb({logging:r.skipValidations?()=>{}:void 0})}),r))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,r){return this.RULE(e,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,r){return this.consume(e,r)}wrapSubrule(e,r,n){return this.subrule(e,r,{ARGS:[n]})}wrapOr(e,r){this.or(e,r)}wrapOption(e,r){this.option(e,r)}wrapMany(e,r){this.many(e,r)}wrapAtLeastOne(e,r){this.atLeastOne(e,r)}}});function _b(t,e,r){return BXe({parser:e,tokens:r,ruleNames:new Map},t),e}function BXe(t,e){let r=Yx(e,!1),n=an(e.rules).filter(Ga).filter(i=>r.has(i));for(let i of n){let a=Object.assign(Object.assign({},t),{consume:1,optional:1,subrule:1,many:1,or:1});t.parser.rule(i,jp(a,i.definition))}}function jp(t,e,r=!1){let n;if(Zo(e))n=HXe(t,e);else if(qu(e))n=FXe(t,e);else if(Fl(e))n=jp(t,e.terminal);else if(Mp(e))n=Q0e(t,e);else if($l(e))n=$Xe(t,e);else if(BE(e))n=GXe(t,e);else if($E(e))n=VXe(t,e);else if(Of(e))n=UXe(t,e);else if(oO(e)){let i=t.consume++;n=o(()=>t.parser.consume(i,yo,e),"method")}else throw new Rp(e.$cstNode,`Unexpected element type: ${e.$type}`);return Z0e(t,r?void 0:GS(e),n,e.cardinality)}function FXe(t,e){let r=Kx(e);return()=>t.parser.action(r,e)}function $Xe(t,e){let r=e.rule.ref;if(Ga(r)){let n=t.subrule++,i=r.fragment,a=e.arguments.length>0?zXe(r,e.arguments):()=>({});return s=>t.parser.subrule(n,J0e(t,r),i,e,a(s))}else if(mo(r)){let n=t.consume++,i=GP(t,r.name);return()=>t.parser.consume(n,i,e)}else if(r)Uc(r);else throw new Rp(e.$cstNode,`Undefined rule: ${e.rule.$refText}`)}function zXe(t,e){let r=e.map(n=>eh(n.value));return n=>{let i={};for(let a=0;ae(n)||r(n)}else if(JI(t)){let e=eh(t.left),r=eh(t.right);return n=>e(n)&&r(n)}else if(tO(t)){let e=eh(t.value);return r=>!e(r)}else if(rO(t)){let e=t.parameter.ref.name;return r=>r!==void 0&&r[e]===!0}else if(ZI(t)){let e=!!t.true;return()=>e}Uc(t)}function GXe(t,e){if(e.elements.length===1)return jp(t,e.elements[0]);{let r=[];for(let i of e.elements){let a={ALT:jp(t,i,!0)},s=GS(i);s&&(a.GATE=eh(s)),r.push(a)}let n=t.or++;return i=>t.parser.alternatives(n,r.map(a=>{let s={ALT:o(()=>a.ALT(i),"ALT")},l=a.GATE;return l&&(s.GATE=()=>l(i)),s}))}}function VXe(t,e){if(e.elements.length===1)return jp(t,e.elements[0]);let r=[];for(let l of e.elements){let u={ALT:jp(t,l,!0)},h=GS(l);h&&(u.GATE=eh(h)),r.push(u)}let n=t.or++,i=o((l,u)=>{let h=u.getRuleStack().join("-");return`uGroup_${l}_${h}`},"idFunc"),a=o(l=>t.parser.alternatives(n,r.map((u,h)=>{let f={ALT:o(()=>!0,"ALT")},d=t.parser;f.ALT=()=>{if(u.ALT(l),!d.isRecording()){let m=i(n,d);d.unorderedGroups.get(m)||d.unorderedGroups.set(m,[]);let g=d.unorderedGroups.get(m);typeof g?.[h]>"u"&&(g[h]=!0)}};let p=u.GATE;return p?f.GATE=()=>p(l):f.GATE=()=>{let m=d.unorderedGroups.get(i(n,d));return!m?.[h]},f})),"alternatives"),s=Z0e(t,GS(e),a,"*");return l=>{s(l),t.parser.isRecording()||t.parser.unorderedGroups.delete(i(n,t.parser))}}function UXe(t,e){let r=e.elements.map(n=>jp(t,n));return n=>r.forEach(i=>i(n))}function GS(t){if(Of(t))return t.guardCondition}function Q0e(t,e,r=e.terminal){if(r)if($l(r)&&Ga(r.rule.ref)){let n=r.rule.ref,i=t.subrule++;return a=>t.parser.subrule(i,J0e(t,n),!1,e,a)}else if($l(r)&&mo(r.rule.ref)){let n=t.consume++,i=GP(t,r.rule.ref.name);return()=>t.parser.consume(n,i,e)}else if(Zo(r)){let n=t.consume++,i=GP(t,r.value);return()=>t.parser.consume(n,i,e)}else throw new Error("Could not build cross reference parser");else{if(!e.type.ref)throw new Error("Could not resolve reference to type: "+e.type.$refText);let n=qE(e.type.ref),i=n?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+Kx(e.type.ref));return Q0e(t,e,i)}}function HXe(t,e){let r=t.consume++,n=t.tokens[e.value];if(!n)throw new Error("Could not find token for keyword: "+e.value);return()=>t.parser.consume(r,n,e)}function Z0e(t,e,r,n){let i=e&&eh(e);if(!n)if(i){let a=t.or++;return s=>t.parser.alternatives(a,[{ALT:o(()=>r(s),"ALT"),GATE:o(()=>i(s),"GATE")},{ALT:LS(),GATE:o(()=>!i(s),"GATE")}])}else return r;if(n==="*"){let a=t.many++;return s=>t.parser.many(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else if(n==="+"){let a=t.many++;if(i){let s=t.or++;return l=>t.parser.alternatives(s,[{ALT:o(()=>t.parser.atLeastOne(a,{DEF:o(()=>r(l),"DEF")}),"ALT"),GATE:o(()=>i(l),"GATE")},{ALT:LS(),GATE:o(()=>!i(l),"GATE")}])}else return s=>t.parser.atLeastOne(a,{DEF:o(()=>r(s),"DEF")})}else if(n==="?"){let a=t.optional++;return s=>t.parser.optional(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else Uc(n)}function J0e(t,e){let r=qXe(t,e),n=t.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function qXe(t,e){if(Ga(e))return e.name;if(t.ruleNames.has(e))return t.ruleNames.get(e);{let r=e,n=r.$container,i=e.$type;for(;!Ga(n);)(Of(n)||BE(n)||$E(n))&&(i=n.elements.indexOf(r).toString()+":"+i),r=n,n=n.$container;return i=n.name+":"+i,t.ruleNames.set(e,i),i}}function GP(t,e){let r=t.tokens[e];if(!r)throw new Error(`Token "${e}" not found."`);return r}var VS=N(()=>{"use strict";Ff();Hc();NE();Ys();zl();o(_b,"createParser");o(BXe,"buildRules");o(jp,"buildElement");o(FXe,"buildAction");o($Xe,"buildRuleCall");o(zXe,"buildRuleCallPredicate");o(eh,"buildPredicate");o(GXe,"buildAlternatives");o(VXe,"buildUnorderedGroup");o(UXe,"buildGroup");o(GS,"getGuardCondition");o(Q0e,"buildCrossReference");o(HXe,"buildKeyword");o(Z0e,"wrap");o(J0e,"getRule");o(qXe,"getRuleName");o(GP,"getToken")});function VP(t){let e=t.Grammar,r=t.parser.Lexer,n=new Cb(t);return _b(e,n,r.definition),n.finalize(),n}var UP=N(()=>{"use strict";Ab();VS();o(VP,"createCompletionParser")});function HP(t){let e=eme(t);return e.finalize(),e}function eme(t){let e=t.Grammar,r=t.parser.Lexer,n=new Sb(t);return _b(e,n,r.definition)}var qP=N(()=>{"use strict";Ab();VS();o(HP,"createLangiumParser");o(eme,"prepareLangiumParser")});var th,US=N(()=>{"use strict";Ff();Hc();hs();zl();l1();Ys();th=class{static{o(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,r){let n=an(Yx(e,!1)),i=this.buildTerminalTokens(n),a=this.buildKeywordTokens(n,i,r);return i.forEach(s=>{let l=s.PATTERN;typeof l=="object"&&l&&"test"in l&&o1(l)?a.unshift(s):a.push(s)}),a}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(mo).filter(r=>!r.fragment).map(r=>this.buildTerminalToken(r)).toArray()}buildTerminalToken(e){let r=u1(e),n=this.requiresCustomPattern(r)?this.regexPatternFunction(r):r,i={name:e.name,PATTERN:n};return typeof n=="function"&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=o1(r)?Zn.SKIPPED:"hidden"),i}requiresCustomPattern(e){return e.flags.includes("u")||e.flags.includes("s")?!0:!!(e.source.includes("?<=")||e.source.includes("?(r.lastIndex=i,r.exec(n))}buildKeywordTokens(e,r,n){return e.filter(Ga).flatMap(i=>qc(i).filter(Zo)).distinct(i=>i.value).toArray().sort((i,a)=>a.value.length-i.value.length).map(i=>this.buildKeywordToken(i,r,!!n?.caseInsensitive))}buildKeywordToken(e,r,n){let i=this.buildKeywordPattern(e,n),a={name:e.value,PATTERN:i,LONGER_ALT:this.findLongerAlt(e,r)};return typeof i=="function"&&(a.LINE_BREAKS=!0),a}buildKeywordPattern(e,r){return r?new RegExp(kO(e.value)):e.value}findLongerAlt(e,r){return r.reduce((n,i)=>{let a=i?.PATTERN;return a?.source&&EO("^"+a.source+"$",e.value)&&n.push(i),n},[])}}});var Kp,Xc,WP=N(()=>{"use strict";Hc();zl();Kp=class{static{o(this,"DefaultValueConverter")}convert(e,r){let n=r.grammarSource;if(Mp(n)&&(n=AO(n)),$l(n)){let i=n.rule.ref;if(!i)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(i,e,r)}return e}runConverter(e,r,n){var i;switch(e.name.toUpperCase()){case"INT":return Xc.convertInt(r);case"STRING":return Xc.convertString(r);case"ID":return Xc.convertID(r)}switch((i=IO(e))===null||i===void 0?void 0:i.toLowerCase()){case"number":return Xc.convertNumber(r);case"boolean":return Xc.convertBoolean(r);case"bigint":return Xc.convertBigint(r);case"date":return Xc.convertDate(r);default:return r}}};(function(t){function e(h){let f="";for(let d=1;d{"use strict";Object.defineProperty(jP,"__esModule",{value:!0});var YP;function XP(){if(YP===void 0)throw new Error("No runtime abstraction layer installed");return YP}o(XP,"RAL");(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");YP=r}o(e,"install"),t.install=e})(XP||(XP={}));jP.default=XP});var nme=Da(Ua=>{"use strict";Object.defineProperty(Ua,"__esModule",{value:!0});Ua.stringArray=Ua.array=Ua.func=Ua.error=Ua.number=Ua.string=Ua.boolean=void 0;function WXe(t){return t===!0||t===!1}o(WXe,"boolean");Ua.boolean=WXe;function tme(t){return typeof t=="string"||t instanceof String}o(tme,"string");Ua.string=tme;function YXe(t){return typeof t=="number"||t instanceof Number}o(YXe,"number");Ua.number=YXe;function XXe(t){return t instanceof Error}o(XXe,"error");Ua.error=XXe;function jXe(t){return typeof t=="function"}o(jXe,"func");Ua.func=jXe;function rme(t){return Array.isArray(t)}o(rme,"array");Ua.array=rme;function KXe(t){return rme(t)&&t.every(e=>tme(e))}o(KXe,"stringArray");Ua.stringArray=KXe});var ZP=Da($1=>{"use strict";Object.defineProperty($1,"__esModule",{value:!0});$1.Emitter=$1.Event=void 0;var QXe=KP(),ime;(function(t){let e={dispose(){}};t.None=function(){return e}})(ime||($1.Event=ime={}));var QP=class{static{o(this,"CallbackList")}add(e,r=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(r),Array.isArray(n)&&n.push({dispose:o(()=>this.remove(e,r),"dispose")})}remove(e,r=null){if(!this._callbacks)return;let n=!1;for(let i=0,a=this._callbacks.length;i{this._callbacks||(this._callbacks=new QP),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:o(()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=t._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};$1.Emitter=HS;HS._noop=function(){}});var ame=Da(z1=>{"use strict";Object.defineProperty(z1,"__esModule",{value:!0});z1.CancellationTokenSource=z1.CancellationToken=void 0;var ZXe=KP(),JXe=nme(),JP=ZP(),qS;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:JP.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:JP.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||JXe.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}o(e,"is"),t.is=e})(qS||(z1.CancellationToken=qS={}));var eje=Object.freeze(function(t,e){let r=(0,ZXe.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),WS=class{static{o(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?eje:(this._emitter||(this._emitter=new JP.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},eB=class{static{o(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new WS),this._token}cancel(){this._token?this._token.cancel():this._token=qS.Cancelled}dispose(){this._token?this._token instanceof WS&&this._token.dispose():this._token=qS.None}};z1.CancellationTokenSource=eB});var br={};var el=N(()=>{"use strict";Lr(br,ja(ame(),1))});function tB(){return new Promise(t=>{typeof setImmediate>"u"?setTimeout(t,0):setImmediate(t)})}function XS(){return YS=performance.now(),new br.CancellationTokenSource}function ome(t){sme=t}function Kc(t){return t===jc}async function bi(t){if(t===br.CancellationToken.None)return;let e=performance.now();if(e-YS>=sme&&(YS=e,await tB(),YS=performance.now()),t.isCancellationRequested)throw jc}var YS,sme,jc,gs,tl=N(()=>{"use strict";el();o(tB,"delayNextTick");YS=0,sme=10;o(XS,"startCancelableOperation");o(ome,"setInterruptionPeriod");jc=Symbol("OperationCancelled");o(Kc,"isOperationCancelled");o(bi,"interruptAndCheck");gs=class{static{o(this,"Deferred")}constructor(){this.promise=new Promise((e,r)=>{this.resolve=n=>(e(n),this),this.reject=n=>(r(n),this)})}}});function rB(t,e){if(t.length<=1)return t;let r=t.length/2|0,n=t.slice(0,r),i=t.slice(r);rB(n,e),rB(i,e);let a=0,s=0,l=0;for(;ar.line||e.line===r.line&&e.character>r.character?{start:r,end:e}:t}function tje(t){let e=ume(t.range);return e!==t.range?{newText:t.newText,range:e}:t}var jS,G1,hme=N(()=>{"use strict";jS=class t{static{o(this,"FullTextDocument")}constructor(e,r,n,i){this._uri=e,this._languageId=r,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let r=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(r,n)}return this._content}update(e,r){for(let n of e)if(t.isIncremental(n)){let i=ume(n.range),a=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(s,this._content.length);let l=Math.max(i.start.line,0),u=Math.max(i.end.line,0),h=this._lineOffsets,f=lme(n.text,!1,a);if(u-l===f.length)for(let p=0,m=f.length;pe?i=s:n=s+1}let a=n-1;return e=this.ensureBeforeEOL(e,r[a]),{line:a,character:e-r[a]}}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line];if(e.character<=0)return n;let i=e.line+1r&&cme(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}};(function(t){function e(i,a,s,l){return new jS(i,a,s,l)}o(e,"create"),t.create=e;function r(i,a,s){if(i instanceof jS)return i.update(a,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}o(r,"update"),t.update=r;function n(i,a){let s=i.getText(),l=rB(a.map(tje),(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),u=0,h=[];for(let f of l){let d=i.offsetAt(f.range.start);if(du&&h.push(s.substring(u,d)),f.newText.length&&h.push(f.newText),u=i.offsetAt(f.range.end)}return h.push(s.substr(u)),h.join("")}o(n,"applyEdits"),t.applyEdits=n})(G1||(G1={}));o(rB,"mergeSort");o(lme,"computeLineOffsets");o(cme,"isEOL");o(ume,"getWellformedRange");o(tje,"getWellformedEdit")});var fme,ys,V1,nB=N(()=>{"use strict";(()=>{"use strict";var t={470:i=>{function a(u){if(typeof u!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(u))}o(a,"e");function s(u,h){for(var f,d="",p=0,m=-1,g=0,y=0;y<=u.length;++y){if(y2){var v=d.lastIndexOf("/");if(v!==d.length-1){v===-1?(d="",p=0):p=(d=d.slice(0,v)).length-1-d.lastIndexOf("/"),m=y,g=0;continue}}else if(d.length===2||d.length===1){d="",p=0,m=y,g=0;continue}}h&&(d.length>0?d+="/..":d="..",p=2)}else d.length>0?d+="/"+u.slice(m+1,y):d=u.slice(m+1,y),p=y-m-1;m=y,g=0}else f===46&&g!==-1?++g:g=-1}return d}o(s,"r");var l={resolve:o(function(){for(var u,h="",f=!1,d=arguments.length-1;d>=-1&&!f;d--){var p;d>=0?p=arguments[d]:(u===void 0&&(u=process.cwd()),p=u),a(p),p.length!==0&&(h=p+"/"+h,f=p.charCodeAt(0)===47)}return h=s(h,!f),f?h.length>0?"/"+h:"/":h.length>0?h:"."},"resolve"),normalize:o(function(u){if(a(u),u.length===0)return".";var h=u.charCodeAt(0)===47,f=u.charCodeAt(u.length-1)===47;return(u=s(u,!h)).length!==0||h||(u="."),u.length>0&&f&&(u+="/"),h?"/"+u:u},"normalize"),isAbsolute:o(function(u){return a(u),u.length>0&&u.charCodeAt(0)===47},"isAbsolute"),join:o(function(){if(arguments.length===0)return".";for(var u,h=0;h0&&(u===void 0?u=f:u+="/"+f)}return u===void 0?".":l.normalize(u)},"join"),relative:o(function(u,h){if(a(u),a(h),u===h||(u=l.resolve(u))===(h=l.resolve(h)))return"";for(var f=1;fy){if(h.charCodeAt(m+x)===47)return h.slice(m+x+1);if(x===0)return h.slice(m+x)}else p>y&&(u.charCodeAt(f+x)===47?v=x:x===0&&(v=0));break}var b=u.charCodeAt(f+x);if(b!==h.charCodeAt(m+x))break;b===47&&(v=x)}var T="";for(x=f+v+1;x<=d;++x)x!==d&&u.charCodeAt(x)!==47||(T.length===0?T+="..":T+="/..");return T.length>0?T+h.slice(m+v):(m+=v,h.charCodeAt(m)===47&&++m,h.slice(m))},"relative"),_makeLong:o(function(u){return u},"_makeLong"),dirname:o(function(u){if(a(u),u.length===0)return".";for(var h=u.charCodeAt(0),f=h===47,d=-1,p=!0,m=u.length-1;m>=1;--m)if((h=u.charCodeAt(m))===47){if(!p){d=m;break}}else p=!1;return d===-1?f?"/":".":f&&d===1?"//":u.slice(0,d)},"dirname"),basename:o(function(u,h){if(h!==void 0&&typeof h!="string")throw new TypeError('"ext" argument must be a string');a(u);var f,d=0,p=-1,m=!0;if(h!==void 0&&h.length>0&&h.length<=u.length){if(h.length===u.length&&h===u)return"";var g=h.length-1,y=-1;for(f=u.length-1;f>=0;--f){var v=u.charCodeAt(f);if(v===47){if(!m){d=f+1;break}}else y===-1&&(m=!1,y=f+1),g>=0&&(v===h.charCodeAt(g)?--g==-1&&(p=f):(g=-1,p=y))}return d===p?p=y:p===-1&&(p=u.length),u.slice(d,p)}for(f=u.length-1;f>=0;--f)if(u.charCodeAt(f)===47){if(!m){d=f+1;break}}else p===-1&&(m=!1,p=f+1);return p===-1?"":u.slice(d,p)},"basename"),extname:o(function(u){a(u);for(var h=-1,f=0,d=-1,p=!0,m=0,g=u.length-1;g>=0;--g){var y=u.charCodeAt(g);if(y!==47)d===-1&&(p=!1,d=g+1),y===46?h===-1?h=g:m!==1&&(m=1):h!==-1&&(m=-1);else if(!p){f=g+1;break}}return h===-1||d===-1||m===0||m===1&&h===d-1&&h===f+1?"":u.slice(h,d)},"extname"),format:o(function(u){if(u===null||typeof u!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof u);return(function(h,f){var d=f.dir||f.root,p=f.base||(f.name||"")+(f.ext||"");return d?d===f.root?d+p:d+"/"+p:p})(0,u)},"format"),parse:o(function(u){a(u);var h={root:"",dir:"",base:"",ext:"",name:""};if(u.length===0)return h;var f,d=u.charCodeAt(0),p=d===47;p?(h.root="/",f=1):f=0;for(var m=-1,g=0,y=-1,v=!0,x=u.length-1,b=0;x>=f;--x)if((d=u.charCodeAt(x))!==47)y===-1&&(v=!1,y=x+1),d===46?m===-1?m=x:b!==1&&(b=1):m!==-1&&(b=-1);else if(!v){g=x+1;break}return m===-1||y===-1||b===0||b===1&&m===y-1&&m===g+1?y!==-1&&(h.base=h.name=g===0&&p?u.slice(1,y):u.slice(g,y)):(g===0&&p?(h.name=u.slice(1,m),h.base=u.slice(1,y)):(h.name=u.slice(g,m),h.base=u.slice(g,y)),h.ext=u.slice(m,y)),g>0?h.dir=u.slice(0,g-1):p&&(h.dir="/"),h},"parse"),sep:"/",delimiter:":",win32:null,posix:null};l.posix=l,i.exports=l}},e={};function r(i){var a=e[i];if(a!==void 0)return a.exports;var s=e[i]={exports:{}};return t[i](s,s.exports,r),s.exports}o(r,"r"),r.d=(i,a)=>{for(var s in a)r.o(a,s)&&!r.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:a[s]})},r.o=(i,a)=>Object.prototype.hasOwnProperty.call(i,a),r.r=i=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var n={};(()=>{let i;r.r(n),r.d(n,{URI:o(()=>p,"URI"),Utils:o(()=>I,"Utils")}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,l=/^\/\//;function u(L,E){if(!L.scheme&&E)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${L.authority}", path: "${L.path}", query: "${L.query}", fragment: "${L.fragment}"}`);if(L.scheme&&!a.test(L.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(L.path){if(L.authority){if(!s.test(L.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(l.test(L.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}o(u,"s");let h="",f="/",d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{o(this,"f")}static isUri(E){return E instanceof p||!!E&&typeof E.authority=="string"&&typeof E.fragment=="string"&&typeof E.path=="string"&&typeof E.query=="string"&&typeof E.scheme=="string"&&typeof E.fsPath=="string"&&typeof E.with=="function"&&typeof E.toString=="function"}scheme;authority;path;query;fragment;constructor(E,D,_,O,M,P=!1){typeof E=="object"?(this.scheme=E.scheme||h,this.authority=E.authority||h,this.path=E.path||h,this.query=E.query||h,this.fragment=E.fragment||h):(this.scheme=(function(B,F){return B||F?B:"file"})(E,P),this.authority=D||h,this.path=(function(B,F){switch(B){case"https":case"http":case"file":F?F[0]!==f&&(F=f+F):F=f}return F})(this.scheme,_||h),this.query=O||h,this.fragment=M||h,u(this,P))}get fsPath(){return b(this,!1)}with(E){if(!E)return this;let{scheme:D,authority:_,path:O,query:M,fragment:P}=E;return D===void 0?D=this.scheme:D===null&&(D=h),_===void 0?_=this.authority:_===null&&(_=h),O===void 0?O=this.path:O===null&&(O=h),M===void 0?M=this.query:M===null&&(M=h),P===void 0?P=this.fragment:P===null&&(P=h),D===this.scheme&&_===this.authority&&O===this.path&&M===this.query&&P===this.fragment?this:new g(D,_,O,M,P)}static parse(E,D=!1){let _=d.exec(E);return _?new g(_[2]||h,k(_[4]||h),k(_[5]||h),k(_[7]||h),k(_[9]||h),D):new g(h,h,h,h,h)}static file(E){let D=h;if(i&&(E=E.replace(/\\/g,f)),E[0]===f&&E[1]===f){let _=E.indexOf(f,2);_===-1?(D=E.substring(2),E=f):(D=E.substring(2,_),E=E.substring(_)||f)}return new g("file",D,E,h,h)}static from(E){let D=new g(E.scheme,E.authority,E.path,E.query,E.fragment);return u(D,!0),D}toString(E=!1){return T(this,E)}toJSON(){return this}static revive(E){if(E){if(E instanceof p)return E;{let D=new g(E);return D._formatted=E.external,D._fsPath=E._sep===m?E.fsPath:null,D}}return E}}let m=i?1:void 0;class g extends p{static{o(this,"l")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(E=!1){return E?T(this,!0):(this._formatted||(this._formatted=T(this,!1)),this._formatted)}toJSON(){let E={$mid:1};return this._fsPath&&(E.fsPath=this._fsPath,E._sep=m),this._formatted&&(E.external=this._formatted),this.path&&(E.path=this.path),this.scheme&&(E.scheme=this.scheme),this.authority&&(E.authority=this.authority),this.query&&(E.query=this.query),this.fragment&&(E.fragment=this.fragment),E}}let y={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function v(L,E,D){let _,O=-1;for(let M=0;M=97&&P<=122||P>=65&&P<=90||P>=48&&P<=57||P===45||P===46||P===95||P===126||E&&P===47||D&&P===91||D&&P===93||D&&P===58)O!==-1&&(_+=encodeURIComponent(L.substring(O,M)),O=-1),_!==void 0&&(_+=L.charAt(M));else{_===void 0&&(_=L.substr(0,M));let B=y[P];B!==void 0?(O!==-1&&(_+=encodeURIComponent(L.substring(O,M)),O=-1),_+=B):O===-1&&(O=M)}}return O!==-1&&(_+=encodeURIComponent(L.substring(O))),_!==void 0?_:L}o(v,"d");function x(L){let E;for(let D=0;D1&&L.scheme==="file"?`//${L.authority}${L.path}`:L.path.charCodeAt(0)===47&&(L.path.charCodeAt(1)>=65&&L.path.charCodeAt(1)<=90||L.path.charCodeAt(1)>=97&&L.path.charCodeAt(1)<=122)&&L.path.charCodeAt(2)===58?E?L.path.substr(1):L.path[1].toLowerCase()+L.path.substr(2):L.path,i&&(D=D.replace(/\//g,"\\")),D}o(b,"m");function T(L,E){let D=E?x:v,_="",{scheme:O,authority:M,path:P,query:B,fragment:F}=L;if(O&&(_+=O,_+=":"),(M||O==="file")&&(_+=f,_+=f),M){let G=M.indexOf("@");if(G!==-1){let $=M.substr(0,G);M=M.substr(G+1),G=$.lastIndexOf(":"),G===-1?_+=D($,!1,!1):(_+=D($.substr(0,G),!1,!1),_+=":",_+=D($.substr(G+1),!1,!0)),_+="@"}M=M.toLowerCase(),G=M.lastIndexOf(":"),G===-1?_+=D(M,!1,!0):(_+=D(M.substr(0,G),!1,!0),_+=M.substr(G))}if(P){if(P.length>=3&&P.charCodeAt(0)===47&&P.charCodeAt(2)===58){let G=P.charCodeAt(1);G>=65&&G<=90&&(P=`/${String.fromCharCode(G+32)}:${P.substr(3)}`)}else if(P.length>=2&&P.charCodeAt(1)===58){let G=P.charCodeAt(0);G>=65&&G<=90&&(P=`${String.fromCharCode(G+32)}:${P.substr(2)}`)}_+=D(P,!0,!1)}return B&&(_+="?",_+=D(B,!1,!1)),F&&(_+="#",_+=E?F:v(F,!1,!1)),_}o(T,"y");function S(L){try{return decodeURIComponent(L)}catch{return L.length>3?L.substr(0,3)+S(L.substr(3)):L}}o(S,"v");let w=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function k(L){return L.match(w)?L.replace(w,(E=>S(E))):L}o(k,"C");var A=r(470);let C=A.posix||A,R="/";var I;(function(L){L.joinPath=function(E,...D){return E.with({path:C.join(E.path,...D)})},L.resolvePath=function(E,...D){let _=E.path,O=!1;_[0]!==R&&(_=R+_,O=!0);let M=C.resolve(_,...D);return O&&M[0]===R&&!E.authority&&(M=M.substring(1)),E.with({path:M})},L.dirname=function(E){if(E.path.length===0||E.path===R)return E;let D=C.dirname(E.path);return D.length===1&&D.charCodeAt(0)===46&&(D=""),E.with({path:D})},L.basename=function(E){return C.basename(E.path)},L.extname=function(E){return C.extname(E.path)}})(I||(I={}))})(),fme=n})();({URI:ys,Utils:V1}=fme)});var vs,Qc=N(()=>{"use strict";nB();(function(t){t.basename=V1.basename,t.dirname=V1.dirname,t.extname=V1.extname,t.joinPath=V1.joinPath,t.resolvePath=V1.resolvePath;function e(i,a){return i?.toString()===a?.toString()}o(e,"equals"),t.equals=e;function r(i,a){let s=typeof i=="string"?i:i.path,l=typeof a=="string"?a:a.path,u=s.split("/").filter(m=>m.length>0),h=l.split("/").filter(m=>m.length>0),f=0;for(;f{"use strict";hme();U1();el();Ys();Qc();(function(t){t[t.Changed=0]="Changed",t[t.Parsed=1]="Parsed",t[t.IndexedContent=2]="IndexedContent",t[t.ComputedScopes=3]="ComputedScopes",t[t.Linked=4]="Linked",t[t.IndexedReferences=5]="IndexedReferences",t[t.Validated=6]="Validated"})(Ln||(Ln={}));Db=class{static{o(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,r=br.CancellationToken.None){let n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,r)}fromTextDocument(e,r,n){return r=r??ys.parse(e.uri),br.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromString(e,r,n){return br.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromModel(e,r){return this.create(r,{$model:e})}create(e,r,n){if(typeof r=="string"){let i=this.parse(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else if("$model"in r){let i={value:r.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(i,e)}else{let i=this.parse(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}async createAsync(e,r,n){if(typeof r=="string"){let i=await this.parseAsync(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else{let i=await this.parseAsync(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}createLangiumDocument(e,r,n,i){let a;if(n)a={parseResult:e,uri:r,state:Ln.Parsed,references:[],textDocument:n};else{let s=this.createTextDocumentGetter(r,i);a={parseResult:e,uri:r,state:Ln.Parsed,references:[],get textDocument(){return s()}}}return e.value.$document=a,a}async update(e,r){var n,i;let a=(n=e.parseResult.value.$cstNode)===null||n===void 0?void 0:n.root.fullText,s=(i=this.textDocuments)===null||i===void 0?void 0:i.get(e.uri.toString()),l=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{let u=this.createTextDocumentGetter(e.uri,l);Object.defineProperty(e,"textDocument",{get:u})}return a!==l&&(e.parseResult=await this.parseAsync(e.uri,l,r),e.parseResult.value.$document=e),e.state=Ln.Parsed,e}parse(e,r,n){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(r,n)}parseAsync(e,r,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(r,n)}createTextDocumentGetter(e,r){let n=this.serviceRegistry,i;return()=>i??(i=G1.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,r??""))}},Lb=class{static{o(this,"DefaultLangiumDocuments")}constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.serviceRegistry=e.ServiceRegistry}get all(){return an(this.documentMap.values())}addDocument(e){let r=e.uri.toString();if(this.documentMap.has(r))throw new Error(`A document with the URI '${r}' is already present.`);this.documentMap.set(r,e)}getDocument(e){let r=e.toString();return this.documentMap.get(r)}async getOrCreateDocument(e,r){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,r),this.addDocument(n),n)}createDocument(e,r,n){if(n)return this.langiumDocumentFactory.fromString(r,e,n).then(i=>(this.addDocument(i),i));{let i=this.langiumDocumentFactory.fromString(r,e);return this.addDocument(i),i}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(this.serviceRegistry.getServices(e).references.Linker.unlink(n),n.state=Ln.Changed,n.precomputedScopes=void 0,n.diagnostics=void 0),n}deleteDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(n.state=Ln.Changed,this.documentMap.delete(r)),n}}});var iB,Rb,aB=N(()=>{"use strict";el();Pl();hs();tl();U1();iB=Symbol("ref_resolving"),Rb=class{static{o(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,r=br.CancellationToken.None){for(let n of Jo(e.parseResult.value))await bi(r),a1(n).forEach(i=>this.doLink(i,e))}doLink(e,r){var n;let i=e.reference;if(i._ref===void 0){i._ref=iB;try{let a=this.getCandidate(e);if(_p(a))i._ref=a;else if(i._nodeDescription=a,this.langiumDocuments().hasDocument(a.documentUri)){let s=this.loadAstNode(a);i._ref=s??this.createLinkingError(e,a)}else i._ref=void 0}catch(a){console.error(`An error occurred while resolving reference to '${i.$refText}':`,a);let s=(n=a.message)!==null&&n!==void 0?n:String(a);i._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${i.$refText}': ${s}`})}r.references.push(i)}}unlink(e){for(let r of e.references)delete r._ref,delete r._nodeDescription;e.references=[]}getCandidate(e){let n=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return n??this.createLinkingError(e)}buildReference(e,r,n,i){let a=this,s={$refNode:n,$refText:i,get ref(){var l;if(li(this._ref))return this._ref;if(qI(this._nodeDescription)){let u=a.loadAstNode(this._nodeDescription);this._ref=u??a.createLinkingError({reference:s,container:e,property:r},this._nodeDescription)}else if(this._ref===void 0){this._ref=iB;let u=Gx(e).$document,h=a.getLinkedNode({reference:s,container:e,property:r});if(h.error&&u&&u.state{"use strict";zl();o(dme,"isNamed");Nb=class{static{o(this,"DefaultNameProvider")}getName(e){if(dme(e))return e.name}getNameNode(e){return Xx(e.$cstNode,"name")}}});var Mb,oB=N(()=>{"use strict";zl();Pl();hs();Bl();Ys();Qc();Mb=class{static{o(this,"DefaultReferences")}constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator}findDeclaration(e){if(e){let r=MO(e),n=e.astNode;if(r&&n){let i=n[r.feature];if(Ta(i))return i.ref;if(Array.isArray(i)){for(let a of i)if(Ta(a)&&a.$refNode&&a.$refNode.offset<=e.offset&&a.$refNode.end>=e.end)return a.ref}}if(n){let i=this.nameProvider.getNameNode(n);if(i&&(i===e||YI(e,i)))return n}}}findDeclarationNode(e){let r=this.findDeclaration(e);if(r?.$cstNode){let n=this.nameProvider.getNameNode(r);return n??r.$cstNode}}findReferences(e,r){let n=[];if(r.includeDeclaration){let a=this.getReferenceToSelf(e);a&&n.push(a)}let i=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return r.documentUri&&(i=i.filter(a=>vs.equals(a.sourceUri,r.documentUri))),n.push(...i),an(n)}getReferenceToSelf(e){let r=this.nameProvider.getNameNode(e);if(r){let n=Va(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:Lp(r),local:!0}}}}});var Vl,Qp,H1=N(()=>{"use strict";Ys();Vl=class{static{o(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[r,n]of e)this.add(r,n)}get size(){return vg.sum(an(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,r){if(r===void 0)return this.map.delete(e);{let n=this.map.get(e);if(n){let i=n.indexOf(r);if(i>=0)return n.length===1?this.map.delete(e):n.splice(i,1),!0}return!1}}get(e){var r;return(r=this.map.get(e))!==null&&r!==void 0?r:[]}has(e,r){if(r===void 0)return this.map.has(e);{let n=this.map.get(e);return n?n.indexOf(r)>=0:!1}}add(e,r){return this.map.has(e)?this.map.get(e).push(r):this.map.set(e,[r]),this}addAll(e,r){return this.map.has(e)?this.map.get(e).push(...r):this.map.set(e,Array.from(r)),this}forEach(e){this.map.forEach((r,n)=>r.forEach(i=>e(i,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return an(this.map.entries()).flatMap(([e,r])=>r.map(n=>[e,n]))}keys(){return an(this.map.keys())}values(){return an(this.map.values()).flat()}entriesGroupedByKey(){return an(this.map.entries())}},Qp=class{static{o(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[r,n]of e)this.set(r,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,r){return this.map.set(e,r),this.inverse.set(r,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let r=this.map.get(e);return r!==void 0?(this.map.delete(e),this.inverse.delete(r),!0):!1}}});var Ib,lB=N(()=>{"use strict";el();hs();H1();tl();Ib=class{static{o(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,r=br.CancellationToken.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,r)}async computeExportsForNode(e,r,n=Vx,i=br.CancellationToken.None){let a=[];this.exportNode(e,a,r);for(let s of n(e))await bi(i),this.exportNode(s,a,r);return a}exportNode(e,r,n){let i=this.nameProvider.getName(e);i&&r.push(this.descriptions.createDescription(e,i,n))}async computeLocalScopes(e,r=br.CancellationToken.None){let n=e.parseResult.value,i=new Vl;for(let a of qc(n))await bi(r),this.processNode(a,e,i);return i}processNode(e,r,n){let i=e.$container;if(i){let a=this.nameProvider.getName(e);a&&n.add(i,this.descriptions.createDescription(e,a,r))}}}});var q1,Ob,rje,cB=N(()=>{"use strict";Ys();q1=class{static{o(this,"StreamScope")}constructor(e,r,n){var i;this.elements=e,this.outerScope=r,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let r=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===e.toLowerCase()):this.elements.find(n=>n.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}},Ob=class{static{o(this,"MapScope")}constructor(e,r,n){var i;this.elements=new Map,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1;for(let a of e){let s=this.caseInsensitive?a.name.toLowerCase():a.name;this.elements.set(s,a)}this.outerScope=r}getElement(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(r);if(n)return n;if(this.outerScope)return this.outerScope.getElement(e)}getAllElements(){let e=an(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},rje={getElement(){},getAllElements(){return Rx}}});var W1,Pb,Zp,KS,Y1,QS=N(()=>{"use strict";W1=class{static{o(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},Pb=class extends W1{static{o(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,r){this.throwIfDisposed(),this.cache.set(e,r)}get(e,r){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(r){let n=r();return this.cache.set(e,n),n}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},Zp=class extends W1{static{o(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(r=>r)}has(e,r){return this.throwIfDisposed(),this.cacheForContext(e).has(r)}set(e,r,n){this.throwIfDisposed(),this.cacheForContext(e).set(r,n)}get(e,r,n){this.throwIfDisposed();let i=this.cacheForContext(e);if(i.has(r))return i.get(r);if(n){let a=n();return i.set(r,a),a}else return}delete(e,r){return this.throwIfDisposed(),this.cacheForContext(e).delete(r)}clear(e){if(this.throwIfDisposed(),e){let r=this.converter(e);this.cache.delete(r)}else this.cache.clear()}cacheForContext(e){let r=this.converter(e),n=this.cache.get(r);return n||(n=new Map,this.cache.set(r,n)),n}},KS=class extends Zp{static{o(this,"DocumentCache")}constructor(e,r){super(n=>n.toString()),r?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(r,n=>{this.clear(n.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{for(let a of i)this.clear(a)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{let a=n.concat(i);for(let s of a)this.clear(s)}))}},Y1=class extends Pb{static{o(this,"WorkspaceCache")}constructor(e,r){super(),r?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(r,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{i.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}});var Bb,uB=N(()=>{"use strict";cB();hs();Ys();QS();Bb=class{static{o(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new Y1(e.shared)}getScope(e){let r=[],n=this.reflection.getReferenceType(e),i=Va(e.container).precomputedScopes;if(i){let s=e.container;do{let l=i.get(s);l.length>0&&r.push(an(l).filter(u=>this.reflection.isSubtype(u.type,n))),s=s.$container}while(s)}let a=this.getGlobalScope(n,e);for(let s=r.length-1;s>=0;s--)a=this.createScope(r[s],a);return a}createScope(e,r,n){return new q1(an(e),r,n)}createScopeForNodes(e,r,n){let i=an(e).map(a=>{let s=this.nameProvider.getName(a);if(s)return this.descriptions.createDescription(a,s)}).nonNullable();return new q1(i,r,n)}getGlobalScope(e,r){return this.globalScopeCache.get(e,()=>new Ob(this.indexManager.allElements(e)))}}});function hB(t){return typeof t.$comment=="string"}function pme(t){return typeof t=="object"&&!!t&&("$ref"in t||"$error"in t)}var Fb,ZS=N(()=>{"use strict";nB();Pl();hs();zl();o(hB,"isAstNodeWithComment");o(pme,"isIntermediateReference");Fb=class{static{o(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,r){let n=r??{},i=r?.replacer,a=o((l,u)=>this.replacer(l,u,n),"defaultReplacer"),s=i?(l,u)=>i(l,u,a):a;try{return this.currentDocument=Va(e),JSON.stringify(e,s,r?.space)}finally{this.currentDocument=void 0}}deserialize(e,r){let n=r??{},i=JSON.parse(e);return this.linkNode(i,i,n),i}replacer(e,r,{refText:n,sourceText:i,textRegions:a,comments:s,uriConverter:l}){var u,h,f,d;if(!this.ignoreProperties.has(e))if(Ta(r)){let p=r.ref,m=n?r.$refText:void 0;if(p){let g=Va(p),y="";this.currentDocument&&this.currentDocument!==g&&(l?y=l(g.uri,r):y=g.uri.toString());let v=this.astNodeLocator.getAstNodePath(p);return{$ref:`${y}#${v}`,$refText:m}}else return{$error:(h=(u=r.error)===null||u===void 0?void 0:u.message)!==null&&h!==void 0?h:"Could not resolve reference",$refText:m}}else if(li(r)){let p;if(a&&(p=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},r)),(!e||r.$document)&&p?.$textRegion&&(p.$textRegion.documentURI=(f=this.currentDocument)===null||f===void 0?void 0:f.uri.toString())),i&&!e&&(p??(p=Object.assign({},r)),p.$sourceText=(d=r.$cstNode)===null||d===void 0?void 0:d.text),s){p??(p=Object.assign({},r));let m=this.commentProvider.getComment(r);m&&(p.$comment=m.replace(/\r/g,""))}return p??r}else return r}addAstNodeRegionWithAssignmentsTo(e){let r=o(n=>({offset:n.offset,end:n.end,length:n.length,range:n.range}),"createDocumentSegment");if(e.$cstNode){let n=e.$textRegion=r(e.$cstNode),i=n.assignments={};return Object.keys(e).filter(a=>!a.startsWith("$")).forEach(a=>{let s=DO(e.$cstNode,a).map(r);s.length!==0&&(i[a]=s)}),e}}linkNode(e,r,n,i,a,s){for(let[u,h]of Object.entries(e))if(Array.isArray(h))for(let f=0;f{"use strict";Qc();$b=class{static{o(this,"DefaultServiceRegistry")}get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.textDocuments=e?.workspace.TextDocuments}register(e){let r=e.LanguageMetaData;for(let n of r.fileExtensions)this.fileExtensionMap.has(n)&&console.warn(`The file extension ${n} is used by multiple languages. It is now assigned to '${r.languageId}'.`),this.fileExtensionMap.set(n,e);this.languageIdMap.set(r.languageId,e),this.languageIdMap.size===1?this.singleton=e:this.singleton=void 0}getServices(e){var r,n;if(this.singleton!==void 0)return this.singleton;if(this.languageIdMap.size===0)throw new Error("The service registry is empty. Use `register` to register the services of a language.");let i=(n=(r=this.textDocuments)===null||r===void 0?void 0:r.get(e))===null||n===void 0?void 0:n.languageId;if(i!==void 0){let l=this.languageIdMap.get(i);if(l)return l}let a=vs.extname(e),s=this.fileExtensionMap.get(a);if(!s)throw i?new Error(`The service registry contains no services for the extension '${a}' for language '${i}'.`):new Error(`The service registry contains no services for the extension '${a}'.`);return s}hasServices(e){try{return this.getServices(e),!0}catch{return!1}}get all(){return Array.from(this.languageIdMap.values())}}});function Jp(t){return{code:t}}var X1,zb,Gb=N(()=>{"use strict";vo();H1();tl();Ys();o(Jp,"diagnosticData");(function(t){t.all=["fast","slow","built-in"]})(X1||(X1={}));zb=class{static{o(this,"ValidationRegistry")}constructor(e){this.entries=new Vl,this.entriesBefore=[],this.entriesAfter=[],this.reflection=e.shared.AstReflection}register(e,r=this,n="fast"){if(n==="built-in")throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(let[i,a]of Object.entries(e)){let s=a;if(Array.isArray(s))for(let l of s){let u={check:this.wrapValidationException(l,r),category:n};this.addEntry(i,u)}else if(typeof s=="function"){let l={check:this.wrapValidationException(s,r),category:n};this.addEntry(i,l)}else Uc(s)}}wrapValidationException(e,r){return async(n,i,a)=>{await this.handleException(()=>e.call(r,n,i,a),"An error occurred during validation",i,n)}}async handleException(e,r,n,i){try{await e()}catch(a){if(Kc(a))throw a;console.error(`${r}:`,a),a instanceof Error&&a.stack&&console.error(a.stack);let s=a instanceof Error?a.message:String(a);n("error",`${r}: ${s}`,{node:i})}}addEntry(e,r){if(e==="AstNode"){this.entries.add("AstNode",r);return}for(let n of this.reflection.getAllSubTypes(e))this.entries.add(n,r)}getChecks(e,r){let n=an(this.entries.get(e)).concat(this.entries.get("AstNode"));return r&&(n=n.filter(i=>r.includes(i.category))),n.map(i=>i.check)}registerBeforeDocument(e,r=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",r))}registerAfterDocument(e,r=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",r))}wrapPreparationException(e,r,n){return async(i,a,s,l)=>{await this.handleException(()=>e.call(n,i,a,s,l),r,a,i)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}});function mme(t){if(t.range)return t.range;let e;return typeof t.property=="string"?e=Xx(t.node.$cstNode,t.property,t.index):typeof t.keyword=="string"&&(e=RO(t.node.$cstNode,t.keyword,t.index)),e??(e=t.node.$cstNode),e?e.range:{start:{line:0,character:0},end:{line:0,character:0}}}function JS(t){switch(t){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+t)}}function gme(t){switch(t){case"error":return Jp(rl.LexingError);case"warning":return Jp(rl.LexingWarning);case"info":return Jp(rl.LexingInfo);case"hint":return Jp(rl.LexingHint);default:throw new Error("Invalid diagnostic severity: "+t)}}var Vb,rl,dB=N(()=>{"use strict";el();zl();hs();Bl();tl();Gb();Vb=class{static{o(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,r={},n=br.CancellationToken.None){let i=e.parseResult,a=[];if(await bi(n),(!r.categories||r.categories.includes("built-in"))&&(this.processLexingErrors(i,a,r),r.stopAfterLexingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===rl.LexingError})||(this.processParsingErrors(i,a,r),r.stopAfterParsingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===rl.ParsingError}))||(this.processLinkingErrors(e,a,r),r.stopAfterLinkingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===rl.LinkingError}))))return a;try{a.push(...await this.validateAst(i.value,r,n))}catch(s){if(Kc(s))throw s;console.error("An error occurred during validation:",s)}return await bi(n),a}processLexingErrors(e,r,n){var i,a,s;let l=[...e.lexerErrors,...(a=(i=e.lexerReport)===null||i===void 0?void 0:i.diagnostics)!==null&&a!==void 0?a:[]];for(let u of l){let h=(s=u.severity)!==null&&s!==void 0?s:"error",f={severity:JS(h),range:{start:{line:u.line-1,character:u.column-1},end:{line:u.line-1,character:u.column+u.length-1}},message:u.message,data:gme(h),source:this.getSource()};r.push(f)}}processParsingErrors(e,r,n){for(let i of e.parserErrors){let a;if(isNaN(i.token.startOffset)){if("previousToken"in i){let s=i.previousToken;if(isNaN(s.startOffset)){let l={line:0,character:0};a={start:l,end:l}}else{let l={line:s.endLine-1,character:s.endColumn};a={start:l,end:l}}}}else a=xg(i.token);if(a){let s={severity:JS("error"),range:a,message:i.message,data:Jp(rl.ParsingError),source:this.getSource()};r.push(s)}}}processLinkingErrors(e,r,n){for(let i of e.references){let a=i.error;if(a){let s={node:a.container,property:a.property,index:a.index,data:{code:rl.LinkingError,containerType:a.container.$type,property:a.property,refText:a.reference.$refText}};r.push(this.toDiagnostic("error",a.message,s))}}}async validateAst(e,r,n=br.CancellationToken.None){let i=[],a=o((s,l,u)=>{i.push(this.toDiagnostic(s,l,u))},"acceptor");return await this.validateAstBefore(e,r,a,n),await this.validateAstNodes(e,r,a,n),await this.validateAstAfter(e,r,a,n),i}async validateAstBefore(e,r,n,i=br.CancellationToken.None){var a;let s=this.validationRegistry.checksBefore;for(let l of s)await bi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}async validateAstNodes(e,r,n,i=br.CancellationToken.None){await Promise.all(Jo(e).map(async a=>{await bi(i);let s=this.validationRegistry.getChecks(a.$type,r.categories);for(let l of s)await l(a,n,i)}))}async validateAstAfter(e,r,n,i=br.CancellationToken.None){var a;let s=this.validationRegistry.checksAfter;for(let l of s)await bi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}toDiagnostic(e,r,n){return{message:r,range:mme(n),severity:JS(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};o(mme,"getDiagnosticRange");o(JS,"toDiagnosticSeverity");o(gme,"toDiagnosticData");(function(t){t.LexingError="lexing-error",t.LexingWarning="lexing-warning",t.LexingInfo="lexing-info",t.LexingHint="lexing-hint",t.ParsingError="parsing-error",t.LinkingError="linking-error"})(rl||(rl={}))});var Ub,Hb,pB=N(()=>{"use strict";el();Pl();hs();Bl();tl();Qc();Ub=class{static{o(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,r,n){let i=n??Va(e);r??(r=this.nameProvider.getName(e));let a=this.astNodeLocator.getAstNodePath(e);if(!r)throw new Error(`Node at path ${a} has no name.`);let s,l=o(()=>{var u;return s??(s=Lp((u=this.nameProvider.getNameNode(e))!==null&&u!==void 0?u:e.$cstNode))},"nameSegmentGetter");return{node:e,name:r,get nameSegment(){return l()},selectionSegment:Lp(e.$cstNode),type:e.$type,documentUri:i.uri,path:a}}},Hb=class{static{o(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,r=br.CancellationToken.None){let n=[],i=e.parseResult.value;for(let a of Jo(i))await bi(r),a1(a).filter(s=>!_p(s)).forEach(s=>{let l=this.createDescription(s);l&&n.push(l)});return n}createDescription(e){let r=e.reference.$nodeDescription,n=e.reference.$refNode;if(!r||!n)return;let i=Va(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:r.documentUri,targetPath:r.path,segment:Lp(n),local:vs.equals(r.documentUri,i)}}}});var qb,mB=N(()=>{"use strict";qb=class{static{o(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let r=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return r+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:r}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return r!==void 0?e+this.indexSeparator+r:e}getAstNode(e,r){return r.split(this.segmentSeparator).reduce((i,a)=>{if(!i||a.length===0)return i;let s=a.indexOf(this.indexSeparator);if(s>0){let l=a.substring(0,s),u=parseInt(a.substring(s+1)),h=i[l];return h?.[u]}return i[a]},e)}}});var ei={};var e6=N(()=>{"use strict";Lr(ei,ja(ZP(),1))});var Wb,gB=N(()=>{"use strict";e6();tl();Wb=class{static{o(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new gs,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new ei.Emitter,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var r,n;this.workspaceConfig=(n=(r=e.capabilities.workspace)===null||r===void 0?void 0:r.configuration)!==null&&n!==void 0?n:!1}async initialized(e){if(this.workspaceConfig){if(e.register){let r=this.serviceRegistry.all;e.register({section:r.map(n=>this.toSectionName(n.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let r=this.serviceRegistry.all.map(i=>({section:this.toSectionName(i.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(r);r.forEach((i,a)=>{this.updateSectionConfiguration(i.section,n[a])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(r=>{let n=e.settings[r];this.updateSectionConfiguration(r,n),this.onConfigurationSectionUpdateEmitter.fire({section:r,configuration:n})})}updateSectionConfiguration(e,r){this.settings[e]=r}async getConfiguration(e,r){await this.ready;let n=this.toSectionName(e);if(this.settings[n])return this.settings[n][r]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}});var Gf,yB=N(()=>{"use strict";(function(t){function e(r){return{dispose:o(async()=>await r(),"dispose")}}o(e,"create"),t.create=e})(Gf||(Gf={}))});var Yb,vB=N(()=>{"use strict";el();yB();H1();tl();Ys();Gb();U1();Yb=class{static{o(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Vl,this.documentPhaseListeners=new Vl,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=Ln.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,r={},n=br.CancellationToken.None){var i,a;for(let s of e){let l=s.uri.toString();if(s.state===Ln.Validated){if(typeof r.validation=="boolean"&&r.validation)s.state=Ln.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(l);else if(typeof r.validation=="object"){let u=this.buildState.get(l),h=(i=u?.result)===null||i===void 0?void 0:i.validationChecks;if(h){let d=((a=r.validation.categories)!==null&&a!==void 0?a:X1.all).filter(p=>!h.includes(p));d.length>0&&(this.buildState.set(l,{completed:!1,options:{validation:Object.assign(Object.assign({},r.validation),{categories:d})},result:u.result}),s.state=Ln.IndexedReferences)}}}else this.buildState.delete(l)}this.currentState=Ln.Changed,await this.emitUpdate(e.map(s=>s.uri),[]),await this.buildDocuments(e,r,n)}async update(e,r,n=br.CancellationToken.None){this.currentState=Ln.Changed;for(let s of r)this.langiumDocuments.deleteDocument(s),this.buildState.delete(s.toString()),this.indexManager.remove(s);for(let s of e){if(!this.langiumDocuments.invalidateDocument(s)){let u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);u.state=Ln.Changed,this.langiumDocuments.addDocument(u)}this.buildState.delete(s.toString())}let i=an(e).concat(r).map(s=>s.toString()).toSet();this.langiumDocuments.all.filter(s=>!i.has(s.uri.toString())&&this.shouldRelink(s,i)).forEach(s=>{this.serviceRegistry.getServices(s.uri).references.Linker.unlink(s),s.state=Math.min(s.state,Ln.ComputedScopes),s.diagnostics=void 0}),await this.emitUpdate(e,r),await bi(n);let a=this.sortDocuments(this.langiumDocuments.all.filter(s=>{var l;return s.staten(e,r)))}sortDocuments(e){let r=0,n=e.length-1;for(;r=0&&!this.hasTextDocument(e[n]);)n--;rn.error!==void 0)?!0:this.indexManager.isAffected(e,r)}onUpdate(e){return this.updateListeners.push(e),Gf.create(()=>{let r=this.updateListeners.indexOf(e);r>=0&&this.updateListeners.splice(r,1)})}async buildDocuments(e,r,n){this.prepareBuild(e,r),await this.runCancelable(e,Ln.Parsed,n,a=>this.langiumDocumentFactory.update(a,n)),await this.runCancelable(e,Ln.IndexedContent,n,a=>this.indexManager.updateContent(a,n)),await this.runCancelable(e,Ln.ComputedScopes,n,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.precomputedScopes=await s.computeLocalScopes(a,n)}),await this.runCancelable(e,Ln.Linked,n,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,n)),await this.runCancelable(e,Ln.IndexedReferences,n,a=>this.indexManager.updateReferences(a,n));let i=e.filter(a=>this.shouldValidate(a));await this.runCancelable(i,Ln.Validated,n,a=>this.validate(a,n));for(let a of e){let s=this.buildState.get(a.uri.toString());s&&(s.completed=!0)}}prepareBuild(e,r){for(let n of e){let i=n.uri.toString(),a=this.buildState.get(i);(!a||a.completed)&&this.buildState.set(i,{completed:!1,options:r,result:a?.result})}}async runCancelable(e,r,n,i){let a=e.filter(l=>l.statel.state===r);await this.notifyBuildPhase(s,r,n),this.currentState=r}onBuildPhase(e,r){return this.buildPhaseListeners.add(e,r),Gf.create(()=>{this.buildPhaseListeners.delete(e,r)})}onDocumentPhase(e,r){return this.documentPhaseListeners.add(e,r),Gf.create(()=>{this.documentPhaseListeners.delete(e,r)})}waitUntil(e,r,n){let i;if(r&&"path"in r?i=r:n=r,n??(n=br.CancellationToken.None),i){let a=this.langiumDocuments.getDocument(i);if(a&&a.state>e)return Promise.resolve(i)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(jc):new Promise((a,s)=>{let l=this.onBuildPhase(e,()=>{if(l.dispose(),u.dispose(),i){let h=this.langiumDocuments.getDocument(i);a(h?.uri)}else a(void 0)}),u=n.onCancellationRequested(()=>{l.dispose(),u.dispose(),s(jc)})})}async notifyDocumentPhase(e,r,n){let a=this.documentPhaseListeners.get(r).slice();for(let s of a)try{await s(e,n)}catch(l){if(!Kc(l))throw l}}async notifyBuildPhase(e,r,n){if(e.length===0)return;let a=this.buildPhaseListeners.get(r).slice();for(let s of a)await bi(n),await s(e,n)}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,r){var n,i;let a=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,s=this.getBuildOptions(e).validation,l=typeof s=="object"?s:void 0,u=await a.validateDocument(e,l,r);e.diagnostics?e.diagnostics.push(...u):e.diagnostics=u;let h=this.buildState.get(e.uri.toString());if(h){(n=h.result)!==null&&n!==void 0||(h.result={});let f=(i=l?.categories)!==null&&i!==void 0?i:X1.all;h.result.validationChecks?h.result.validationChecks.push(...f):h.result.validationChecks=[...f]}}getBuildOptions(e){var r,n;return(n=(r=this.buildState.get(e.uri.toString()))===null||r===void 0?void 0:r.options)!==null&&n!==void 0?n:{}}}});var Xb,xB=N(()=>{"use strict";hs();QS();el();Ys();Qc();Xb=class{static{o(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new Zp,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,r){let n=Va(e).uri,i=[];return this.referenceIndex.forEach(a=>{a.forEach(s=>{vs.equals(s.targetUri,n)&&s.targetPath===r&&i.push(s)})}),an(i)}allElements(e,r){let n=an(this.symbolIndex.keys());return r&&(n=n.filter(i=>!r||r.has(i))),n.map(i=>this.getFileDescriptions(i,e)).flat()}getFileDescriptions(e,r){var n;return r?this.symbolByTypeIndex.get(e,r,()=>{var a;return((a=this.symbolIndex.get(e))!==null&&a!==void 0?a:[]).filter(l=>this.astReflection.isSubtype(l.type,r))}):(n=this.symbolIndex.get(e))!==null&&n!==void 0?n:[]}remove(e){let r=e.toString();this.symbolIndex.delete(r),this.symbolByTypeIndex.clear(r),this.referenceIndex.delete(r)}async updateContent(e,r=br.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.computeExports(e,r),a=e.uri.toString();this.symbolIndex.set(a,i),this.symbolByTypeIndex.clear(a)}async updateReferences(e,r=br.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,r);this.referenceIndex.set(e.uri.toString(),i)}isAffected(e,r){let n=this.referenceIndex.get(e.uri.toString());return n?n.some(i=>!i.local&&r.has(i.targetUri.toString())):!1}}});var jb,bB=N(()=>{"use strict";el();tl();Qc();jb=class{static{o(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new gs,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){var r;this.folders=(r=e.workspaceFolders)!==null&&r!==void 0?r:void 0}initialized(e){return this.mutex.write(r=>{var n;return this.initializeWorkspace((n=this.folders)!==null&&n!==void 0?n:[],r)})}async initializeWorkspace(e,r=br.CancellationToken.None){let n=await this.performStartup(e);await bi(r),await this.documentBuilder.build(n,this.initialBuildOptions,r)}async performStartup(e){let r=this.serviceRegistry.all.flatMap(a=>a.LanguageMetaData.fileExtensions),n=[],i=o(a=>{n.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)},"collector");return await this.loadAdditionalDocuments(e,i),await Promise.all(e.map(a=>[a,this.getRootFolder(a)]).map(async a=>this.traverseFolder(...a,r,i))),this._ready.resolve(),n}loadAdditionalDocuments(e,r){return Promise.resolve()}getRootFolder(e){return ys.parse(e.uri)}async traverseFolder(e,r,n,i){let a=await this.fileSystemProvider.readDirectory(r);await Promise.all(a.map(async s=>{if(this.includeEntry(e,s,n)){if(s.isDirectory)await this.traverseFolder(e,s.uri,n,i);else if(s.isFile){let l=await this.langiumDocuments.getOrCreateDocument(s.uri);i(l)}}}))}includeEntry(e,r,n){let i=vs.basename(r.uri);if(i.startsWith("."))return!1;if(r.isDirectory)return i!=="node_modules"&&i!=="out";if(r.isFile){let a=vs.extname(r.uri);return n.includes(a)}return!1}}});function r6(t){return Array.isArray(t)&&(t.length===0||"name"in t[0])}function wB(t){return t&&"modes"in t&&"defaultMode"in t}function TB(t){return!r6(t)&&!wB(t)}var Kb,t6,e0,n6=N(()=>{"use strict";Ff();Kb=class{static{o(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,r,n,i,a){return x1.buildUnexpectedCharactersMessage(e,r,n,i,a)}buildUnableToPopLexerModeMessage(e){return x1.buildUnableToPopLexerModeMessage(e)}},t6={mode:"full"},e0=class{static{o(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let r=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(r);let n=TB(r)?Object.values(r):r,i=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new Zn(n,{positionTracking:"full",skipValidations:i,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,r=t6){var n,i,a;let s=this.chevrotainLexer.tokenize(e);return{tokens:s.tokens,errors:s.errors,hidden:(n=s.groups.hidden)!==null&&n!==void 0?n:[],report:(a=(i=this.tokenBuilder).flushLexingReport)===null||a===void 0?void 0:a.call(i,e)}}toTokenTypeDictionary(e){if(TB(e))return e;let r=wB(e)?Object.values(e.modes).flat():e,n={};return r.forEach(i=>n[i.name]=i),n}};o(r6,"isTokenTypeArray");o(wB,"isIMultiModeLexerDefinition");o(TB,"isTokenTypeDictionary")});function SB(t,e,r){let n,i;typeof t=="string"?(i=e,n=r):(i=t.range.start,n=e),i||(i=tn.create(0,0));let a=xme(t),s=AB(n),l=ije({lines:a,position:i,options:s});return cje({index:0,tokens:l,position:i})}function CB(t,e){let r=AB(e),n=xme(t);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],s=r.start,l=r.end;return!!s?.exec(i)&&!!l?.exec(a)}function xme(t){let e="";return typeof t=="string"?e=t:e=t.text,e.split(TO)}function ije(t){var e,r,n;let i=[],a=t.position.line,s=t.position.character;for(let l=0;l=f.length){if(i.length>0){let m=tn.create(a,s);i.push({type:"break",content:"",range:Gr.create(m,m)})}}else{yme.lastIndex=d;let m=yme.exec(f);if(m){let g=m[0],y=m[1],v=tn.create(a,s+d),x=tn.create(a,s+d+g.length);i.push({type:"tag",content:y,range:Gr.create(v,x)}),d+=g.length,d=EB(f,d)}if(d0&&i[i.length-1].type==="break"?i.slice(0,-1):i}function aje(t,e,r,n){let i=[];if(t.length===0){let a=tn.create(r,n),s=tn.create(r,n+e.length);i.push({type:"text",content:e,range:Gr.create(a,s)})}else{let a=0;for(let l of t){let u=l.index,h=e.substring(a,u);h.length>0&&i.push({type:"text",content:e.substring(a,u),range:Gr.create(tn.create(r,a+n),tn.create(r,u+n))});let f=h.length+1,d=l[1];if(i.push({type:"inline-tag",content:d,range:Gr.create(tn.create(r,a+f+n),tn.create(r,a+f+d.length+n))}),f+=d.length,l.length===4){f+=l[2].length;let p=l[3];i.push({type:"text",content:p,range:Gr.create(tn.create(r,a+f+n),tn.create(r,a+f+p.length+n))})}else i.push({type:"text",content:"",range:Gr.create(tn.create(r,a+f+n),tn.create(r,a+f+n))});a=u+l[0].length}let s=e.substring(a);s.length>0&&i.push({type:"text",content:s,range:Gr.create(tn.create(r,a+n),tn.create(r,a+n+s.length))})}return i}function EB(t,e){let r=t.substring(e).match(sje);return r?e+r.index:t.length}function lje(t){let e=t.match(oje);if(e&&typeof e.index=="number")return e.index}function cje(t){var e,r,n,i;let a=tn.create(t.position.line,t.position.character);if(t.tokens.length===0)return new i6([],Gr.create(a,a));let s=[];for(;t.index0){let u=EB(e,a);s=e.substring(u),e=e.substring(0,a)}return(t==="linkcode"||t==="link"&&r.link==="code")&&(s=`\`${s}\``),(i=(n=r.renderLink)===null||n===void 0?void 0:n.call(r,e,s))!==null&&i!==void 0?i:pje(e,s)}}function pje(t,e){try{return ys.parse(t,!0),`[${e}](${t})`}catch{return t}}function vme(t){return t.endsWith(` `)?` `:` -`}var jle,bFe,kFe,EFe,PE,eb,tb,BE,sI=N(()=>{"use strict";mM();Lg();Fc();o(nI,"parseJSDoc");o(iI,"isJSDoc");o(Qle,"getLines");jle=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,bFe=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;o(wFe,"tokenize");o(TFe,"buildInlineTokens");kFe=/\S/,EFe=/\s*$/;o(rI,"skipWhitespace");o(SFe,"lastCharacter");o(CFe,"parseJSDocComment");o(AFe,"parseJSDocElement");o(_Fe,"appendEmptyLine");o(Zle,"parseJSDocText");o(DFe,"parseJSDocInline");o(Jle,"parseJSDocTag");o(ece,"parseJSDocLine");o(aI,"normalizeOptions");o(tI,"normalizeOption");PE=class{static{o(this,"JSDocCommentImpl")}constructor(e,r){this.elements=e,this.range=r}getTag(e){return this.getAllTags().find(r=>r.name===e)}getTags(e){return this.getAllTags().filter(r=>r.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let r of this.elements)if(e.length===0)e=r.toString();else{let n=r.toString();e+=Kle(e)+n}return e.trim()}toMarkdown(e){let r="";for(let n of this.elements)if(r.length===0)r=n.toMarkdown(e);else{let i=n.toMarkdown(e);r+=Kle(r)+i}return r.trim()}},eb=class{static{o(this,"JSDocTagImpl")}constructor(e,r,n,i){this.name=e,this.content=r,this.inline=n,this.range=i}toString(){let e=`@${this.name}`,r=this.content.toString();return this.content.inlines.length===1?e=`${e} ${r}`:this.content.inlines.length>1&&(e=`${e} -${r}`),this.inline?`{${e}}`:e}toMarkdown(e){var r,n;return(n=(r=e?.renderTag)===null||r===void 0?void 0:r.call(e,this))!==null&&n!==void 0?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){let r=this.content.toMarkdown(e);if(this.inline){let a=LFe(this.name,r,e??{});if(typeof a=="string")return a}let n="";e?.tag==="italic"||e?.tag===void 0?n="*":e?.tag==="bold"?n="**":e?.tag==="bold-italic"&&(n="***");let i=`${n}@${this.name}${n}`;return this.content.inlines.length===1?i=`${i} \u2014 ${r}`:this.content.inlines.length>1&&(i=`${i} -${r}`),this.inline?`{${i}}`:i}};o(LFe,"renderInlineTag");o(RFe,"renderLinkDefault");tb=class{static{o(this,"JSDocTextImpl")}constructor(e,r){this.inlines=e,this.range=r}toString(){let e="";for(let r=0;rn.range.start.line&&(e+=` +`}var yme,nje,sje,oje,i6,Qb,Zb,a6,_B=N(()=>{"use strict";BP();l1();Qc();o(SB,"parseJSDoc");o(CB,"isJSDoc");o(xme,"getLines");yme=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,nje=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;o(ije,"tokenize");o(aje,"buildInlineTokens");sje=/\S/,oje=/\s*$/;o(EB,"skipWhitespace");o(lje,"lastCharacter");o(cje,"parseJSDocComment");o(uje,"parseJSDocElement");o(hje,"appendEmptyLine");o(bme,"parseJSDocText");o(fje,"parseJSDocInline");o(Tme,"parseJSDocTag");o(wme,"parseJSDocLine");o(AB,"normalizeOptions");o(kB,"normalizeOption");i6=class{static{o(this,"JSDocCommentImpl")}constructor(e,r){this.elements=e,this.range=r}getTag(e){return this.getAllTags().find(r=>r.name===e)}getTags(e){return this.getAllTags().filter(r=>r.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let r of this.elements)if(e.length===0)e=r.toString();else{let n=r.toString();e+=vme(e)+n}return e.trim()}toMarkdown(e){let r="";for(let n of this.elements)if(r.length===0)r=n.toMarkdown(e);else{let i=n.toMarkdown(e);r+=vme(r)+i}return r.trim()}},Qb=class{static{o(this,"JSDocTagImpl")}constructor(e,r,n,i){this.name=e,this.content=r,this.inline=n,this.range=i}toString(){let e=`@${this.name}`,r=this.content.toString();return this.content.inlines.length===1?e=`${e} ${r}`:this.content.inlines.length>1&&(e=`${e} +${r}`),this.inline?`{${e}}`:e}toMarkdown(e){var r,n;return(n=(r=e?.renderTag)===null||r===void 0?void 0:r.call(e,this))!==null&&n!==void 0?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){let r=this.content.toMarkdown(e);if(this.inline){let a=dje(this.name,r,e??{});if(typeof a=="string")return a}let n="";e?.tag==="italic"||e?.tag===void 0?n="*":e?.tag==="bold"?n="**":e?.tag==="bold-italic"&&(n="***");let i=`${n}@${this.name}${n}`;return this.content.inlines.length===1?i=`${i} \u2014 ${r}`:this.content.inlines.length>1&&(i=`${i} +${r}`),this.inline?`{${i}}`:i}};o(dje,"renderInlineTag");o(pje,"renderLinkDefault");Zb=class{static{o(this,"JSDocTextImpl")}constructor(e,r){this.inlines=e,this.range=r}toString(){let e="";for(let r=0;rn.range.start.line&&(e+=` `)}return e}toMarkdown(e){let r="";for(let n=0;ni.range.start.line&&(r+=` -`)}return r}},BE=class{static{o(this,"JSDocLineImpl")}constructor(e,r){this.text=e,this.range=r}toString(){return this.text}toMarkdown(){return this.text}};o(Kle,"fillNewlines")});var rb,oI=N(()=>{"use strict";is();sI();rb=class{static{o(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let r=this.commentProvider.getComment(e);if(r&&iI(r))return nI(r).toMarkdown({renderLink:o((i,a)=>this.documentationLinkRenderer(e,i,a),"renderLink"),renderTag:o(i=>this.documentationTagRenderer(e,i),"renderTag")})}documentationLinkRenderer(e,r,n){var i;let a=(i=this.findNameInPrecomputedScopes(e,r))!==null&&i!==void 0?i:this.findNameInGlobalScope(e,r);if(a&&a.nameSegment){let s=a.nameSegment.range.start.line+1,l=a.nameSegment.range.start.character+1,u=a.documentUri.with({fragment:`L${s},${l}`});return`[${n}](${u.toString()})`}else return}documentationTagRenderer(e,r){}findNameInPrecomputedScopes(e,r){let i=Pa(e).precomputedScopes;if(!i)return;let a=e;do{let l=i.get(a).find(u=>u.name===r);if(l)return l;a=a.$container}while(a)}findNameInGlobalScope(e,r){return this.indexManager.allElements().find(i=>i.name===r)}}});var nb,lI=N(()=>{"use strict";LE();Nl();nb=class{static{o(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var r;return UM(e)?e.$comment:(r=AR(e.$cstNode,this.grammarConfig().multilineCommentRules))===null||r===void 0?void 0:r.text}}});var ib,cI,uI,hI=N(()=>{"use strict";Yo();NE();ib=class{static{o(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,r){return Promise.resolve(this.syncParser.parse(e))}},cI=class{static{o(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let r=this.queue.shift();r&&(e.lock(),r.resolve(e))}}),this.workerPool.push(e)}}async parse(e,r){let n=await this.acquireParserWorker(r),i=new cs,a,s=r.onCancellationRequested(()=>{a=setTimeout(()=>{this.terminateWorker(n)},this.terminationDelay)});return n.parse(e).then(l=>{let u=this.hydrator.hydrate(l);i.resolve(u)}).catch(l=>{i.reject(l)}).finally(()=>{s.dispose(),clearTimeout(a)}),i.promise}terminateWorker(e){e.terminate();let r=this.workerPool.indexOf(e);r>=0&&this.workerPool.splice(r,1)}async acquireParserWorker(e){this.initializeWorkers();for(let n of this.workerPool)if(n.ready)return n.lock(),n;let r=new cs;return e.onCancellationRequested(()=>{let n=this.queue.indexOf(r);n>=0&&this.queue.splice(n,1),r.reject(Pc)}),this.queue.push(r),r.promise}},uI=class{static{o(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,r,n,i){this.onReadyEmitter=new Kn.Emitter,this.deferred=new cs,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=i,r(a=>{let s=a;this.deferred.resolve(s),this.unlock()}),n(a=>{this.deferred.reject(a),this.unlock()})}terminate(){this.deferred.reject(Pc),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new cs,this.sendMessage(e),this.deferred.promise}}});var ab,fI=N(()=>{"use strict";qo();Yo();ab=class{static{o(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new yr.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let r=CE();return this.previousTokenSource=r,this.enqueue(this.writeQueue,e,r.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,r,n=yr.CancellationToken.None){let i=new cs,a={action:r,deferred:i,cancellationToken:n};return e.push(a),this.performNextOperation(),i.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:r,deferred:n,cancellationToken:i})=>{try{let a=await Promise.resolve().then(()=>r(i));n.resolve(a)}catch(a){Bc(a)?n.resolve(void 0):n.reject(a)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}});var sb,dI=N(()=>{"use strict";gE();Rc();Rl();is();f1();Nl();sb=class{static{o(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new vp,this.tokenTypeIdMap=new vp,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(r=>Object.assign(Object.assign({},r),{message:r.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let r=new Map,n=new Map;for(let i of Wo(e))r.set(i,{});if(e.$cstNode)for(let i of Kd(e.$cstNode))n.set(i,{});return{astNodes:r,cstNodes:n}}dehydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,r));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)ii(l)?s.push(this.dehydrateAstNode(l,r)):va(l)?s.push(this.dehydrateReference(l,r)):s.push(l)}else ii(a)?n[i]=this.dehydrateAstNode(a,r):va(a)?n[i]=this.dehydrateReference(a,r):a!==void 0&&(n[i]=a);return n}dehydrateReference(e,r){let n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=r.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,r){let n=r.cstNodes.get(e);return M2(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=r.astNodes.get(e.astNode),Ll(e)?n.content=e.content.map(i=>this.dehydrateCstNode(i,r)):af(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){let r=e.value,n=this.createHydrationContext(r);return"$cstNode"in r&&this.hydrateCstNode(r.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(r,n)}}createHydrationContext(e){let r=new Map,n=new Map;for(let a of Wo(e))r.set(a,{});let i;if(e.$cstNode)for(let a of Kd(e.$cstNode)){let s;"fullText"in a?(s=new a1(a.fullText),i=s):"content"in a?s=new mp:"tokenType"in a&&(s=this.hydrateCstLeafNode(a)),s&&(n.set(a,s),s.root=i)}return{astNodes:r,cstNodes:n}}hydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=r.cstNodes.get(e.$cstNode));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)ii(l)?s.push(this.setParent(this.hydrateAstNode(l,r),n)):va(l)?s.push(this.hydrateReference(l,n,i,r)):s.push(l)}else ii(a)?n[i]=this.setParent(this.hydrateAstNode(a,r),n):va(a)?n[i]=this.hydrateReference(a,n,i,r):a!==void 0&&(n[i]=a);return n}setParent(e,r){return e.$container=r,e}hydrateReference(e,r,n,i){return this.linker.buildReference(r,n,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,r,n=0){let i=r.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=r.astNodes.get(e.astNode),Ll(i))for(let a of e.content){let s=this.hydrateCstNode(a,r,n++);i.content.push(s)}return i}hydrateCstLeafNode(e){let r=this.getTokenType(e.tokenType),n=e.offset,i=e.length,a=e.startLine,s=e.startColumn,l=e.endLine,u=e.endColumn,h=e.hidden;return new pp(n,i,{start:{line:a,character:s},end:{line:l,character:u}},r,h)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let r of Wo(this.grammar))G2(r)&&this.grammarElementIdMap.set(r,e++)}}});function fs(t){return{documentation:{CommentProvider:o(e=>new nb(e),"CommentProvider"),DocumentationProvider:o(e=>new rb(e),"DocumentationProvider")},parser:{AsyncParser:o(e=>new ib(e),"AsyncParser"),GrammarConfig:o(e=>pN(e),"GrammarConfig"),LangiumParser:o(e=>TM(e),"LangiumParser"),CompletionParser:o(e=>bM(e),"CompletionParser"),ValueConverter:o(()=>new yp,"ValueConverter"),TokenBuilder:o(()=>new Uu,"TokenBuilder"),Lexer:o(e=>new wp(e),"Lexer"),ParserErrorMessageProvider:o(()=>new s1,"ParserErrorMessageProvider"),LexerErrorMessageProvider:o(()=>new Jx,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:o(()=>new Xx,"AstNodeLocator"),AstNodeDescriptionProvider:o(e=>new qx(e),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:o(e=>new Yx(e),"ReferenceDescriptionProvider")},references:{Linker:o(e=>new Ix(e),"Linker"),NameProvider:o(()=>new Ox,"NameProvider"),ScopeProvider:o(e=>new zx(e),"ScopeProvider"),ScopeComputation:o(e=>new Bx(e),"ScopeComputation"),References:o(e=>new Px(e),"References")},serializer:{Hydrator:o(e=>new sb(e),"Hydrator"),JsonSerializer:o(e=>new Gx(e),"JsonSerializer")},validation:{DocumentValidator:o(e=>new Wx(e),"DocumentValidator"),ValidationRegistry:o(e=>new Ux(e),"ValidationRegistry")},shared:o(()=>t.shared,"shared")}}function ds(t){return{ServiceRegistry:o(e=>new Vx(e),"ServiceRegistry"),workspace:{LangiumDocuments:o(e=>new Mx(e),"LangiumDocuments"),LangiumDocumentFactory:o(e=>new Nx(e),"LangiumDocumentFactory"),DocumentBuilder:o(e=>new Kx(e),"DocumentBuilder"),IndexManager:o(e=>new Qx(e),"IndexManager"),WorkspaceManager:o(e=>new Zx(e),"WorkspaceManager"),FileSystemProvider:o(e=>t.fileSystemProvider(e),"FileSystemProvider"),WorkspaceLock:o(()=>new ab,"WorkspaceLock"),ConfigurationProvider:o(e=>new jx(e),"ConfigurationProvider")}}}var pI=N(()=>{"use strict";mN();wM();kM();wE();EM();BM();FM();$M();zM();VM();LE();HM();WM();Hx();qM();YM();XM();KM();h1();QM();ZM();OE();oI();lI();Lx();hI();fI();dI();o(fs,"createDefaultCoreModule");o(ds,"createDefaultSharedCoreModule")});function ui(t,e,r,n,i,a,s,l,u){let h=[t,e,r,n,i,a,s,l,u].reduce(FE,{});return ace(h)}function ice(t){if(t&&t[nce])for(let e of Object.values(t))ice(e);return t}function ace(t,e){let r=new Proxy({},{deleteProperty:o(()=>!1,"deleteProperty"),set:o(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:o((n,i)=>i===nce?!0:rce(n,i,t,e||r),"get"),getOwnPropertyDescriptor:o((n,i)=>(rce(n,i,t,e||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:o((n,i)=>i in t,"has"),ownKeys:o(()=>[...Object.getOwnPropertyNames(t)],"ownKeys")});return r}function rce(t,e,r,n){if(e in t){if(t[e]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:t[e]});if(t[e]===tce)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return t[e]}else if(e in r){let i=r[e];t[e]=tce;try{t[e]=typeof i=="function"?i(n):ace(i,n)}catch(a){throw t[e]=a instanceof Error?a:void 0,a}return t[e]}else return}function FE(t,e){if(e){for(let[r,n]of Object.entries(e))if(n!==void 0){let i=t[r];i!==null&&n!==null&&typeof i=="object"&&typeof n=="object"?t[r]=FE(i,n):t[r]=n}}return t}var mI,nce,tce,gI=N(()=>{"use strict";(function(t){t.merge=(e,r)=>FE(FE({},e),r)})(mI||(mI={}));o(ui,"inject");nce=Symbol("isProxy");o(ice,"eagerLoad");o(ace,"_inject");tce=Symbol();o(rce,"_resolve");o(FE,"_merge")});var sce=N(()=>{"use strict"});var oce=N(()=>{"use strict";lI();oI();sI()});var lce=N(()=>{"use strict"});var cce=N(()=>{"use strict";mN();lce()});var yI,Tp,$E,vI,uce=N(()=>{"use strict";cf();wE();OE();yI={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]};(function(t){t.REGULAR="indentation-sensitive",t.IGNORE_INDENTATION="ignore-indentation"})(Tp||(Tp={}));$E=class extends Uu{static{o(this,"IndentationAwareTokenBuilder")}constructor(e=yI){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options=Object.assign(Object.assign({},yI),e),this.indentTokenType=of({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=of({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,r){let n=super.buildTokens(e,r);if(!IE(n))throw new Error("Invalid tokens built by default builder");let{indentTokenName:i,dedentTokenName:a,whitespaceTokenName:s,ignoreIndentationDelimiters:l}=this.options,u,h,f,d=[];for(let p of n){for(let[m,g]of l)p.name===m?p.PUSH_MODE=Tp.IGNORE_INDENTATION:p.name===g&&(p.POP_MODE=!0);p.name===a?u=p:p.name===i?h=p:p.name===s?f=p:d.push(p)}if(!u||!h||!f)throw new Error("Some indentation/whitespace tokens not found!");return l.length>0?{modes:{[Tp.REGULAR]:[u,h,...d,f],[Tp.IGNORE_INDENTATION]:[...d,f]},defaultMode:Tp.REGULAR}:[u,h,f,...d]}flushLexingReport(e){let r=super.flushLexingReport(e);return Object.assign(Object.assign({},r),{remainingDedents:this.flushRemainingDedents(e)})}isStartOfLine(e,r){return r===0||`\r -`.includes(e[r-1])}matchWhitespace(e,r,n,i){var a;this.whitespaceRegExp.lastIndex=r;let s=this.whitespaceRegExp.exec(e);return{currIndentLevel:(a=s?.[0].length)!==null&&a!==void 0?a:0,prevIndentLevel:this.indentationStack.at(-1),match:s}}createIndentationTokenInstance(e,r,n,i){let a=this.getLineNumber(r,i);return $u(e,n,i,i+n.length,a,a,1,n.length)}getLineNumber(e,r){return e.substring(0,r).split(/\r\n|\r|\n/).length}indentMatcher(e,r,n,i){if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:a,prevIndentLevel:s,match:l}=this.matchWhitespace(e,r,n,i);return a<=s?null:(this.indentationStack.push(a),l)}dedentMatcher(e,r,n,i){var a,s,l,u;if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:h,prevIndentLevel:f,match:d}=this.matchWhitespace(e,r,n,i);if(h>=f)return null;let p=this.indentationStack.lastIndexOf(h);if(p===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${h} at offset: ${r}. Current indentation stack: ${this.indentationStack}`,offset:r,length:(s=(a=d?.[0])===null||a===void 0?void 0:a.length)!==null&&s!==void 0?s:0,line:this.getLineNumber(e,r),column:1}),null;let m=this.indentationStack.length-p-1,g=(u=(l=e.substring(0,r).match(/[\r\n]+$/))===null||l===void 0?void 0:l[0].length)!==null&&u!==void 0?u:1;for(let y=0;y1;)r.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],r}},vI=class extends wp{static{o(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof $E)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,r=ME){let n=super.tokenize(e),i=n.report;r?.mode==="full"&&n.tokens.push(...i.remainingDedents),i.remainingDedents=[];let{indentTokenType:a,dedentTokenType:s}=this.indentationTokenBuilder,l=a.tokenTypeIdx,u=s.tokenTypeIdx,h=[],f=n.tokens.length-1;for(let d=0;d=0&&h.push(n.tokens[f]),n.tokens=h,n}}});var hce=N(()=>{"use strict"});var fce=N(()=>{"use strict";hI();wM();gE();uce();kM();Lx();OE();bE();hce();wE();EM()});var dce=N(()=>{"use strict";BM();FM();$M();GM();zM();VM()});var pce=N(()=>{"use strict";dI();LE()});var zE,ps,xI=N(()=>{"use strict";zE=class{static{o(this,"EmptyFileSystemProvider")}readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},ps={fileSystemProvider:o(()=>new zE,"fileSystemProvider")}});function IFe(){let t=ui(ds(ps),MFe),e=ui(fs({shared:t}),NFe);return t.ServiceRegistry.register(e),e}function Hu(t){var e;let r=IFe(),n=r.serializer.JsonSerializer.deserialize(t);return r.shared.workspace.LangiumDocumentFactory.fromModel(n,us.parse(`memory://${(e=n.name)!==null&&e!==void 0?e:"grammar"}.langium`)),n}var NFe,MFe,mce=N(()=>{"use strict";pI();gI();Rc();xI();Fc();NFe={Grammar:o(()=>{},"Grammar"),LanguageMetaData:o(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},MFe={AstReflection:o(()=>new Cg,"AstReflection")};o(IFe,"createMinimalGrammarServices");o(Hu,"loadGrammarFromJson")});var Gr={};hr(Gr,{AstUtils:()=>xk,BiMap:()=>vp,Cancellation:()=>yr,ContextCache:()=>xp,CstUtils:()=>ck,DONE_RESULT:()=>Ia,Deferred:()=>cs,Disposable:()=>ff,DisposableCache:()=>p1,DocumentCache:()=>_E,EMPTY_STREAM:()=>I2,ErrorWithLocation:()=>Zd,GrammarUtils:()=>Ek,MultiMap:()=>Bl,OperationCancelled:()=>Pc,Reduction:()=>zm,RegExpUtils:()=>Tk,SimpleCache:()=>$x,StreamImpl:()=>ao,TreeStreamImpl:()=>_c,URI:()=>us,UriUtils:()=>hs,WorkspaceCache:()=>m1,assertUnreachable:()=>Lc,delayNextTick:()=>MM,interruptAndCheck:()=>xi,isOperationCancelled:()=>Bc,loadGrammarFromJson:()=>Hu,setInterruptionPeriod:()=>$le,startCancelableOperation:()=>CE,stream:()=>en});var gce=N(()=>{"use strict";DE();NE();Sr(Gr,Kn);f1();jM();uk();mce();Yo();Ps();Fc();is();qo();Nl();Ol();Lg()});var yce=N(()=>{"use strict";WM();Hx()});var vce=N(()=>{"use strict";qM();YM();XM();KM();h1();xI();QM();fI();ZM()});var xa={};hr(xa,{AbstractAstReflection:()=>Xd,AbstractCstNode:()=>Cx,AbstractLangiumParser:()=>Ax,AbstractParserErrorMessageProvider:()=>vE,AbstractThreadedAsyncParser:()=>cI,AstUtils:()=>xk,BiMap:()=>vp,Cancellation:()=>yr,CompositeCstNodeImpl:()=>mp,ContextCache:()=>xp,CstNodeBuilder:()=>Sx,CstUtils:()=>ck,DEFAULT_TOKENIZE_OPTIONS:()=>ME,DONE_RESULT:()=>Ia,DatatypeSymbol:()=>yE,DefaultAstNodeDescriptionProvider:()=>qx,DefaultAstNodeLocator:()=>Xx,DefaultAsyncParser:()=>ib,DefaultCommentProvider:()=>nb,DefaultConfigurationProvider:()=>jx,DefaultDocumentBuilder:()=>Kx,DefaultDocumentValidator:()=>Wx,DefaultHydrator:()=>sb,DefaultIndexManager:()=>Qx,DefaultJsonSerializer:()=>Gx,DefaultLangiumDocumentFactory:()=>Nx,DefaultLangiumDocuments:()=>Mx,DefaultLexer:()=>wp,DefaultLexerErrorMessageProvider:()=>Jx,DefaultLinker:()=>Ix,DefaultNameProvider:()=>Ox,DefaultReferenceDescriptionProvider:()=>Yx,DefaultReferences:()=>Px,DefaultScopeComputation:()=>Bx,DefaultScopeProvider:()=>zx,DefaultServiceRegistry:()=>Vx,DefaultTokenBuilder:()=>Uu,DefaultValueConverter:()=>yp,DefaultWorkspaceLock:()=>ab,DefaultWorkspaceManager:()=>Zx,Deferred:()=>cs,Disposable:()=>ff,DisposableCache:()=>p1,DocumentCache:()=>_E,DocumentState:()=>kn,DocumentValidator:()=>jo,EMPTY_SCOPE:()=>xFe,EMPTY_STREAM:()=>I2,EmptyFileSystem:()=>ps,EmptyFileSystemProvider:()=>zE,ErrorWithLocation:()=>Zd,GrammarAST:()=>U2,GrammarUtils:()=>Ek,IndentationAwareLexer:()=>vI,IndentationAwareTokenBuilder:()=>$E,JSDocDocumentationProvider:()=>rb,LangiumCompletionParser:()=>Dx,LangiumParser:()=>_x,LangiumParserErrorMessageProvider:()=>s1,LeafCstNodeImpl:()=>pp,LexingMode:()=>Tp,MapScope:()=>Fx,Module:()=>mI,MultiMap:()=>Bl,OperationCancelled:()=>Pc,ParserWorker:()=>uI,Reduction:()=>zm,RegExpUtils:()=>Tk,RootCstNodeImpl:()=>a1,SimpleCache:()=>$x,StreamImpl:()=>ao,StreamScope:()=>d1,TextDocument:()=>c1,TreeStreamImpl:()=>_c,URI:()=>us,UriUtils:()=>hs,ValidationCategory:()=>g1,ValidationRegistry:()=>Ux,ValueConverter:()=>Oc,WorkspaceCache:()=>m1,assertUnreachable:()=>Lc,createCompletionParser:()=>bM,createDefaultCoreModule:()=>fs,createDefaultSharedCoreModule:()=>ds,createGrammarConfig:()=>pN,createLangiumParser:()=>TM,createParser:()=>Rx,delayNextTick:()=>MM,diagnosticData:()=>bp,eagerLoad:()=>ice,getDiagnosticRange:()=>Yle,indentationBuilderDefaultOptions:()=>yI,inject:()=>ui,interruptAndCheck:()=>xi,isAstNode:()=>ii,isAstNodeDescription:()=>kR,isAstNodeWithComment:()=>UM,isCompositeCstNode:()=>Ll,isIMultiModeLexerDefinition:()=>eI,isJSDoc:()=>iI,isLeafCstNode:()=>af,isLinkingError:()=>jd,isNamed:()=>Wle,isOperationCancelled:()=>Bc,isReference:()=>va,isRootCstNode:()=>M2,isTokenTypeArray:()=>IE,isTokenTypeDictionary:()=>JM,loadGrammarFromJson:()=>Hu,parseJSDoc:()=>nI,prepareLangiumParser:()=>Nle,setInterruptionPeriod:()=>$le,startCancelableOperation:()=>CE,stream:()=>en,toDiagnosticData:()=>Xle,toDiagnosticSeverity:()=>RE});var Xo=N(()=>{"use strict";pI();gI();HM();sce();Rl();oce();cce();fce();dce();pce();gce();Sr(xa,Gr);yce();vce();Rc()});function Sce(t){return Fl.isInstance(t,ob)}function Cce(t){return Fl.isInstance(t,y1)}function Ace(t){return Fl.isInstance(t,v1)}function _ce(t){return Fl.isInstance(t,WE)}function Dce(t){return Fl.isInstance(t,x1)}function Lce(t){return Fl.isInstance(t,lb)}function Rce(t){return Fl.isInstance(t,b1)}function Nce(t){return Fl.isInstance(t,cb)}function Mce(t){return Fl.isInstance(t,ub)}function Ice(t){return Fl.isInstance(t,hb)}function Oce(t){return Fl.isInstance(t,fb)}var OFe,Lt,AI,ob,GE,y1,VE,UE,v1,WE,bI,wI,TI,x1,kI,lb,EI,b1,SI,cb,ub,hb,fb,qE,CI,HE,Pce,Fl,xce,PFe,bce,BFe,wce,FFe,Tce,$Fe,kce,zFe,Ece,GFe,VFe,UFe,HFe,WFe,qFe,YFe,co,_I,DI,LI,RI,NI,MI,XFe,jFe,KFe,QFe,w1,Wu,$s,ZFe,zs=N(()=>{"use strict";Xo();Xo();Xo();Xo();OFe=Object.defineProperty,Lt=o((t,e)=>OFe(t,"name",{value:e,configurable:!0}),"__name"),AI="Statement",ob="Architecture";o(Sce,"isArchitecture");Lt(Sce,"isArchitecture");GE="Axis",y1="Branch";o(Cce,"isBranch");Lt(Cce,"isBranch");VE="Checkout",UE="CherryPicking",v1="Commit";o(Ace,"isCommit");Lt(Ace,"isCommit");WE="Common";o(_ce,"isCommon");Lt(_ce,"isCommon");bI="Curve",wI="Edge",TI="Entry",x1="GitGraph";o(Dce,"isGitGraph");Lt(Dce,"isGitGraph");kI="Group",lb="Info";o(Lce,"isInfo");Lt(Lce,"isInfo");EI="Junction",b1="Merge";o(Rce,"isMerge");Lt(Rce,"isMerge");SI="Option",cb="Packet";o(Nce,"isPacket");Lt(Nce,"isPacket");ub="PacketBlock";o(Mce,"isPacketBlock");Lt(Mce,"isPacketBlock");hb="Pie";o(Ice,"isPie");Lt(Ice,"isPie");fb="PieSection";o(Oce,"isPieSection");Lt(Oce,"isPieSection");qE="Radar",CI="Service",HE="Direction",Pce=class extends Xd{static{o(this,"MermaidAstReflection")}static{Lt(this,"MermaidAstReflection")}getAllTypes(){return[ob,GE,y1,VE,UE,v1,WE,bI,HE,wI,TI,x1,kI,lb,EI,b1,SI,cb,ub,hb,fb,qE,CI,AI]}computeIsSubtype(t,e){switch(t){case y1:case VE:case UE:case v1:case b1:return this.isSubtype(AI,e);case HE:return this.isSubtype(x1,e);default:return!1}}getReferenceType(t){let e=`${t.container.$type}:${t.property}`;switch(e){case"Entry:axis":return GE;default:throw new Error(`${e} is not a valid reference id.`)}}getTypeMetaData(t){switch(t){case ob:return{name:ob,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case GE:return{name:GE,properties:[{name:"label"},{name:"name"}]};case y1:return{name:y1,properties:[{name:"name"},{name:"order"}]};case VE:return{name:VE,properties:[{name:"branch"}]};case UE:return{name:UE,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case v1:return{name:v1,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case WE:return{name:WE,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case bI:return{name:bI,properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case wI:return{name:wI,properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case TI:return{name:TI,properties:[{name:"axis"},{name:"value"}]};case x1:return{name:x1,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case kI:return{name:kI,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case lb:return{name:lb,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case EI:return{name:EI,properties:[{name:"id"},{name:"in"}]};case b1:return{name:b1,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case SI:return{name:SI,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case cb:return{name:cb,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case ub:return{name:ub,properties:[{name:"end"},{name:"label"},{name:"start"}]};case hb:return{name:hb,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case fb:return{name:fb,properties:[{name:"label"},{name:"value"}]};case qE:return{name:qE,properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case CI:return{name:CI,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case HE:return{name:HE,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};default:return{name:t,properties:[]}}}},Fl=new Pce,PFe=Lt(()=>xce??(xce=Hu('{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"InfoGrammar"),BFe=Lt(()=>bce??(bce=Hu(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"packet-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"?"},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}`)),"PacketGrammar"),FFe=Lt(()=>wce??(wce=Hu('{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"PIE_SECTION_LABEL","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]+\\"/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PIE_SECTION_VALUE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/(0|[1-9][0-9]*)(\\\\.[0-9]+)?/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"PieGrammar"),$Fe=Lt(()=>Tce??(Tce=Hu('{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ID","definition":{"$type":"RegexToken","regex":"/[\\\\w]+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TEXT_ICON","definition":{"$type":"RegexToken","regex":"/\\\\(\\"[^\\"]+\\"\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"ArchitectureGrammar"),zFe=Lt(()=>kce??(kce=Hu(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+(?=\\\\s)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[]}`)),"GitGraphGrammar"),GFe=Lt(()=>Ece??(Ece=Hu(`{"$type":"Grammar","isDeclared":true,"name":"Radar","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@12"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@12"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/(0|[1-9][0-9]*)(\\\\.[0-9]+)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9\\\\-_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[]}`)),"RadarGrammar"),VFe={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},UFe={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},HFe={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},WFe={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},qFe={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},YFe={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},co={AstReflection:Lt(()=>new Pce,"AstReflection")},_I={Grammar:Lt(()=>PFe(),"Grammar"),LanguageMetaData:Lt(()=>VFe,"LanguageMetaData"),parser:{}},DI={Grammar:Lt(()=>BFe(),"Grammar"),LanguageMetaData:Lt(()=>UFe,"LanguageMetaData"),parser:{}},LI={Grammar:Lt(()=>FFe(),"Grammar"),LanguageMetaData:Lt(()=>HFe,"LanguageMetaData"),parser:{}},RI={Grammar:Lt(()=>$Fe(),"Grammar"),LanguageMetaData:Lt(()=>WFe,"LanguageMetaData"),parser:{}},NI={Grammar:Lt(()=>zFe(),"Grammar"),LanguageMetaData:Lt(()=>qFe,"LanguageMetaData"),parser:{}},MI={Grammar:Lt(()=>GFe(),"Grammar"),LanguageMetaData:Lt(()=>YFe,"LanguageMetaData"),parser:{}},XFe=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,jFe=/accTitle[\t ]*:([^\n\r]*)/,KFe=/title([\t ][^\n\r]*|)/,QFe={ACC_DESCR:XFe,ACC_TITLE:jFe,TITLE:KFe},w1=class extends yp{static{o(this,"AbstractMermaidValueConverter")}static{Lt(this,"AbstractMermaidValueConverter")}runConverter(t,e,r){let n=this.runCommonConverter(t,e,r);return n===void 0&&(n=this.runCustomConverter(t,e,r)),n===void 0?super.runConverter(t,e,r):n}runCommonConverter(t,e,r){let n=QFe[t.name];if(n===void 0)return;let i=n.exec(e);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` -`)}}},Wu=class extends w1{static{o(this,"CommonValueConverter")}static{Lt(this,"CommonValueConverter")}runCustomConverter(t,e,r){}},$s=class extends Uu{static{o(this,"AbstractMermaidTokenBuilder")}static{Lt(this,"AbstractMermaidTokenBuilder")}constructor(t){super(),this.keywords=new Set(t)}buildKeywordTokens(t,e,r){let n=super.buildKeywordTokens(t,e,r);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},ZFe=class extends $s{static{o(this,"CommonTokenBuilder")}static{Lt(this,"CommonTokenBuilder")}}});function XE(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),NI,YE);return e.ServiceRegistry.register(r),{shared:e,GitGraph:r}}var JFe,YE,II=N(()=>{"use strict";zs();Xo();JFe=class extends $s{static{o(this,"GitGraphTokenBuilder")}static{Lt(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},YE={parser:{TokenBuilder:Lt(()=>new JFe,"TokenBuilder"),ValueConverter:Lt(()=>new Wu,"ValueConverter")}};o(XE,"createGitGraphServices");Lt(XE,"createGitGraphServices")});function KE(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),_I,jE);return e.ServiceRegistry.register(r),{shared:e,Info:r}}var e$e,jE,OI=N(()=>{"use strict";zs();Xo();e$e=class extends $s{static{o(this,"InfoTokenBuilder")}static{Lt(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},jE={parser:{TokenBuilder:Lt(()=>new e$e,"TokenBuilder"),ValueConverter:Lt(()=>new Wu,"ValueConverter")}};o(KE,"createInfoServices");Lt(KE,"createInfoServices")});function ZE(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),DI,QE);return e.ServiceRegistry.register(r),{shared:e,Packet:r}}var t$e,QE,PI=N(()=>{"use strict";zs();Xo();t$e=class extends $s{static{o(this,"PacketTokenBuilder")}static{Lt(this,"PacketTokenBuilder")}constructor(){super(["packet-beta"])}},QE={parser:{TokenBuilder:Lt(()=>new t$e,"TokenBuilder"),ValueConverter:Lt(()=>new Wu,"ValueConverter")}};o(ZE,"createPacketServices");Lt(ZE,"createPacketServices")});function e6(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),LI,JE);return e.ServiceRegistry.register(r),{shared:e,Pie:r}}var r$e,n$e,JE,BI=N(()=>{"use strict";zs();Xo();r$e=class extends $s{static{o(this,"PieTokenBuilder")}static{Lt(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},n$e=class extends w1{static{o(this,"PieValueConverter")}static{Lt(this,"PieValueConverter")}runCustomConverter(t,e,r){if(t.name==="PIE_SECTION_LABEL")return e.replace(/"/g,"").trim()}},JE={parser:{TokenBuilder:Lt(()=>new r$e,"TokenBuilder"),ValueConverter:Lt(()=>new n$e,"ValueConverter")}};o(e6,"createPieServices");Lt(e6,"createPieServices")});function r6(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),RI,t6);return e.ServiceRegistry.register(r),{shared:e,Architecture:r}}var i$e,a$e,t6,FI=N(()=>{"use strict";zs();Xo();i$e=class extends $s{static{o(this,"ArchitectureTokenBuilder")}static{Lt(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},a$e=class extends w1{static{o(this,"ArchitectureValueConverter")}static{Lt(this,"ArchitectureValueConverter")}runCustomConverter(t,e,r){if(t.name==="ARCH_ICON")return e.replace(/[()]/g,"").trim();if(t.name==="ARCH_TEXT_ICON")return e.replace(/["()]/g,"");if(t.name==="ARCH_TITLE")return e.replace(/[[\]]/g,"").trim()}},t6={parser:{TokenBuilder:Lt(()=>new i$e,"TokenBuilder"),ValueConverter:Lt(()=>new a$e,"ValueConverter")}};o(r6,"createArchitectureServices");Lt(r6,"createArchitectureServices")});function i6(t=ps){let e=ui(ds(t),co),r=ui(fs({shared:e}),MI,n6);return e.ServiceRegistry.register(r),{shared:e,Radar:r}}var s$e,n6,$I=N(()=>{"use strict";zs();Xo();s$e=class extends $s{static{o(this,"RadarTokenBuilder")}static{Lt(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},n6={parser:{TokenBuilder:Lt(()=>new s$e,"TokenBuilder"),ValueConverter:Lt(()=>new Wu,"ValueConverter")}};o(i6,"createRadarServices");Lt(i6,"createRadarServices")});var Bce={};hr(Bce,{InfoModule:()=>jE,createInfoServices:()=>KE});var Fce=N(()=>{"use strict";OI();zs()});var $ce={};hr($ce,{PacketModule:()=>QE,createPacketServices:()=>ZE});var zce=N(()=>{"use strict";PI();zs()});var Gce={};hr(Gce,{PieModule:()=>JE,createPieServices:()=>e6});var Vce=N(()=>{"use strict";BI();zs()});var Uce={};hr(Uce,{ArchitectureModule:()=>t6,createArchitectureServices:()=>r6});var Hce=N(()=>{"use strict";FI();zs()});var Wce={};hr(Wce,{GitGraphModule:()=>YE,createGitGraphServices:()=>XE});var qce=N(()=>{"use strict";II();zs()});var Yce={};hr(Yce,{RadarModule:()=>n6,createRadarServices:()=>i6});var Xce=N(()=>{"use strict";$I();zs()});async function uo(t,e){let r=o$e[t];if(!r)throw new Error(`Unknown diagram type: ${t}`);df[t]||await r();let i=df[t].parse(e);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new l$e(i);return i.value}var df,o$e,l$e,kp=N(()=>{"use strict";II();OI();PI();BI();FI();$I();zs();df={},o$e={info:Lt(async()=>{let{createInfoServices:t}=await Promise.resolve().then(()=>(Fce(),Bce)),e=t().Info.parser.LangiumParser;df.info=e},"info"),packet:Lt(async()=>{let{createPacketServices:t}=await Promise.resolve().then(()=>(zce(),$ce)),e=t().Packet.parser.LangiumParser;df.packet=e},"packet"),pie:Lt(async()=>{let{createPieServices:t}=await Promise.resolve().then(()=>(Vce(),Gce)),e=t().Pie.parser.LangiumParser;df.pie=e},"pie"),architecture:Lt(async()=>{let{createArchitectureServices:t}=await Promise.resolve().then(()=>(Hce(),Uce)),e=t().Architecture.parser.LangiumParser;df.architecture=e},"architecture"),gitGraph:Lt(async()=>{let{createGitGraphServices:t}=await Promise.resolve().then(()=>(qce(),Wce)),e=t().GitGraph.parser.LangiumParser;df.gitGraph=e},"gitGraph"),radar:Lt(async()=>{let{createRadarServices:t}=await Promise.resolve().then(()=>(Xce(),Yce)),e=t().Radar.parser.LangiumParser;df.radar=e},"radar")};o(uo,"parse");Lt(uo,"parse");l$e=class extends Error{static{o(this,"MermaidParseError")}constructor(t){let e=t.lexerErrors.map(n=>n.message).join(` +`)}return r}},a6=class{static{o(this,"JSDocLineImpl")}constructor(e,r){this.text=e,this.range=r}toString(){return this.text}toMarkdown(){return this.text}};o(vme,"fillNewlines")});var Jb,DB=N(()=>{"use strict";hs();_B();Jb=class{static{o(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let r=this.commentProvider.getComment(e);if(r&&CB(r))return SB(r).toMarkdown({renderLink:o((i,a)=>this.documentationLinkRenderer(e,i,a),"renderLink"),renderTag:o(i=>this.documentationTagRenderer(e,i),"renderTag")})}documentationLinkRenderer(e,r,n){var i;let a=(i=this.findNameInPrecomputedScopes(e,r))!==null&&i!==void 0?i:this.findNameInGlobalScope(e,r);if(a&&a.nameSegment){let s=a.nameSegment.range.start.line+1,l=a.nameSegment.range.start.character+1,u=a.documentUri.with({fragment:`L${s},${l}`});return`[${n}](${u.toString()})`}else return}documentationTagRenderer(e,r){}findNameInPrecomputedScopes(e,r){let i=Va(e).precomputedScopes;if(!i)return;let a=e;do{let l=i.get(a).find(u=>u.name===r);if(l)return l;a=a.$container}while(a)}findNameInGlobalScope(e,r){return this.indexManager.allElements().find(i=>i.name===r)}}});var e4,LB=N(()=>{"use strict";ZS();Bl();e4=class{static{o(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var r;return hB(e)?e.$comment:(r=jI(e.$cstNode,this.grammarConfig().multilineCommentRules))===null||r===void 0?void 0:r.text}}});var t4,RB,NB,MB=N(()=>{"use strict";tl();e6();t4=class{static{o(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,r){return Promise.resolve(this.syncParser.parse(e))}},RB=class{static{o(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let r=this.queue.shift();r&&(e.lock(),r.resolve(e))}}),this.workerPool.push(e)}}async parse(e,r){let n=await this.acquireParserWorker(r),i=new gs,a,s=r.onCancellationRequested(()=>{a=setTimeout(()=>{this.terminateWorker(n)},this.terminationDelay)});return n.parse(e).then(l=>{let u=this.hydrator.hydrate(l);i.resolve(u)}).catch(l=>{i.reject(l)}).finally(()=>{s.dispose(),clearTimeout(a)}),i.promise}terminateWorker(e){e.terminate();let r=this.workerPool.indexOf(e);r>=0&&this.workerPool.splice(r,1)}async acquireParserWorker(e){this.initializeWorkers();for(let n of this.workerPool)if(n.ready)return n.lock(),n;let r=new gs;return e.onCancellationRequested(()=>{let n=this.queue.indexOf(r);n>=0&&this.queue.splice(n,1),r.reject(jc)}),this.queue.push(r),r.promise}},NB=class{static{o(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,r,n,i){this.onReadyEmitter=new ei.Emitter,this.deferred=new gs,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=i,r(a=>{let s=a;this.deferred.resolve(s),this.unlock()}),n(a=>{this.deferred.reject(a),this.unlock()})}terminate(){this.deferred.reject(jc),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new gs,this.sendMessage(e),this.deferred.promise}}});var r4,IB=N(()=>{"use strict";el();tl();r4=class{static{o(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new br.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let r=XS();return this.previousTokenSource=r,this.enqueue(this.writeQueue,e,r.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,r,n=br.CancellationToken.None){let i=new gs,a={action:r,deferred:i,cancellationToken:n};return e.push(a),this.performNextOperation(),i.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:r,deferred:n,cancellationToken:i})=>{try{let a=await Promise.resolve().then(()=>r(i));n.resolve(a)}catch(a){Kc(a)?n.resolve(void 0):n.reject(a)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}});var n4,OB=N(()=>{"use strict";FS();Hc();Pl();hs();H1();Bl();n4=class{static{o(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new Qp,this.tokenTypeIdMap=new Qp,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(r=>Object.assign(Object.assign({},r),{message:r.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let r=new Map,n=new Map;for(let i of Jo(e))r.set(i,{});if(e.$cstNode)for(let i of Dp(e.$cstNode))n.set(i,{});return{astNodes:r,cstNodes:n}}dehydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,r));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)li(l)?s.push(this.dehydrateAstNode(l,r)):Ta(l)?s.push(this.dehydrateReference(l,r)):s.push(l)}else li(a)?n[i]=this.dehydrateAstNode(a,r):Ta(a)?n[i]=this.dehydrateReference(a,r):a!==void 0&&(n[i]=a);return n}dehydrateReference(e,r){let n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=r.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,r){let n=r.cstNodes.get(e);return Lx(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=r.astNodes.get(e.astNode),Ol(e)?n.content=e.content.map(i=>this.dehydrateCstNode(i,r)):If(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){let r=e.value,n=this.createHydrationContext(r);return"$cstNode"in r&&this.hydrateCstNode(r.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(r,n)}}createHydrationContext(e){let r=new Map,n=new Map;for(let a of Jo(e))r.set(a,{});let i;if(e.$cstNode)for(let a of Dp(e.$cstNode)){let s;"fullText"in a?(s=new B1(a.fullText),i=s):"content"in a?s=new Xp:"tokenType"in a&&(s=this.hydrateCstLeafNode(a)),s&&(n.set(a,s),s.root=i)}return{astNodes:r,cstNodes:n}}hydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=r.cstNodes.get(e.$cstNode));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)li(l)?s.push(this.setParent(this.hydrateAstNode(l,r),n)):Ta(l)?s.push(this.hydrateReference(l,n,i,r)):s.push(l)}else li(a)?n[i]=this.setParent(this.hydrateAstNode(a,r),n):Ta(a)?n[i]=this.hydrateReference(a,n,i,r):a!==void 0&&(n[i]=a);return n}setParent(e,r){return e.$container=r,e}hydrateReference(e,r,n,i){return this.linker.buildReference(r,n,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,r,n=0){let i=r.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=r.astNodes.get(e.astNode),Ol(i))for(let a of e.content){let s=this.hydrateCstNode(a,r,n++);i.content.push(s)}return i}hydrateCstLeafNode(e){let r=this.getTokenType(e.tokenType),n=e.offset,i=e.length,a=e.startLine,s=e.startColumn,l=e.endLine,u=e.endColumn,h=e.hidden;return new Yp(n,i,{start:{line:a,character:s},end:{line:l,character:u}},r,h)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let r of Jo(this.grammar))Fx(r)&&this.grammarElementIdMap.set(r,e++)}}});function wa(t){return{documentation:{CommentProvider:o(e=>new e4(e),"CommentProvider"),DocumentationProvider:o(e=>new Jb(e),"DocumentationProvider")},parser:{AsyncParser:o(e=>new t4(e),"AsyncParser"),GrammarConfig:o(e=>PO(e),"GrammarConfig"),LangiumParser:o(e=>HP(e),"LangiumParser"),CompletionParser:o(e=>VP(e),"CompletionParser"),ValueConverter:o(()=>new Kp,"ValueConverter"),TokenBuilder:o(()=>new th,"TokenBuilder"),Lexer:o(e=>new e0(e),"Lexer"),ParserErrorMessageProvider:o(()=>new F1,"ParserErrorMessageProvider"),LexerErrorMessageProvider:o(()=>new Kb,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:o(()=>new qb,"AstNodeLocator"),AstNodeDescriptionProvider:o(e=>new Ub(e),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:o(e=>new Hb(e),"ReferenceDescriptionProvider")},references:{Linker:o(e=>new Rb(e),"Linker"),NameProvider:o(()=>new Nb,"NameProvider"),ScopeProvider:o(e=>new Bb(e),"ScopeProvider"),ScopeComputation:o(e=>new Ib(e),"ScopeComputation"),References:o(e=>new Mb(e),"References")},serializer:{Hydrator:o(e=>new n4(e),"Hydrator"),JsonSerializer:o(e=>new Fb(e),"JsonSerializer")},validation:{DocumentValidator:o(e=>new Vb(e),"DocumentValidator"),ValidationRegistry:o(e=>new zb(e),"ValidationRegistry")},shared:o(()=>t.shared,"shared")}}function ka(t){return{ServiceRegistry:o(e=>new $b(e),"ServiceRegistry"),workspace:{LangiumDocuments:o(e=>new Lb(e),"LangiumDocuments"),LangiumDocumentFactory:o(e=>new Db(e),"LangiumDocumentFactory"),DocumentBuilder:o(e=>new Yb(e),"DocumentBuilder"),IndexManager:o(e=>new Xb(e),"IndexManager"),WorkspaceManager:o(e=>new jb(e),"WorkspaceManager"),FileSystemProvider:o(e=>t.fileSystemProvider(e),"FileSystemProvider"),WorkspaceLock:o(()=>new r4,"WorkspaceLock"),ConfigurationProvider:o(e=>new Wb(e),"ConfigurationProvider")}}}var PB=N(()=>{"use strict";BO();UP();qP();US();WP();aB();sB();oB();lB();uB();ZS();fB();dB();Gb();pB();mB();gB();vB();U1();xB();bB();n6();DB();LB();Ab();MB();IB();OB();o(wa,"createDefaultCoreModule");o(ka,"createDefaultSharedCoreModule")});function Hn(t,e,r,n,i,a,s,l,u){let h=[t,e,r,n,i,a,s,l,u].reduce(s6,{});return Ame(h)}function Cme(t){if(t&&t[Sme])for(let e of Object.values(t))Cme(e);return t}function Ame(t,e){let r=new Proxy({},{deleteProperty:o(()=>!1,"deleteProperty"),set:o(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:o((n,i)=>i===Sme?!0:Eme(n,i,t,e||r),"get"),getOwnPropertyDescriptor:o((n,i)=>(Eme(n,i,t,e||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:o((n,i)=>i in t,"has"),ownKeys:o(()=>[...Object.getOwnPropertyNames(t)],"ownKeys")});return r}function Eme(t,e,r,n){if(e in t){if(t[e]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:t[e]});if(t[e]===kme)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return t[e]}else if(e in r){let i=r[e];t[e]=kme;try{t[e]=typeof i=="function"?i(n):Ame(i,n)}catch(a){throw t[e]=a instanceof Error?a:void 0,a}return t[e]}else return}function s6(t,e){if(e){for(let[r,n]of Object.entries(e))if(n!==void 0){let i=t[r];i!==null&&n!==null&&typeof i=="object"&&typeof n=="object"?t[r]=s6(i,n):t[r]=n}}return t}var BB,Sme,kme,FB=N(()=>{"use strict";(function(t){t.merge=(e,r)=>s6(s6({},e),r)})(BB||(BB={}));o(Hn,"inject");Sme=Symbol("isProxy");o(Cme,"eagerLoad");o(Ame,"_inject");kme=Symbol();o(Eme,"_resolve");o(s6,"_merge")});var _me=N(()=>{"use strict"});var Dme=N(()=>{"use strict";LB();DB();_B()});var Lme=N(()=>{"use strict"});var Rme=N(()=>{"use strict";BO();Lme()});var $B,t0,o6,zB,Nme=N(()=>{"use strict";Ff();US();n6();$B={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]};(function(t){t.REGULAR="indentation-sensitive",t.IGNORE_INDENTATION="ignore-indentation"})(t0||(t0={}));o6=class extends th{static{o(this,"IndentationAwareTokenBuilder")}constructor(e=$B){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options=Object.assign(Object.assign({},$B),e),this.indentTokenType=Pf({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=Pf({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,r){let n=super.buildTokens(e,r);if(!r6(n))throw new Error("Invalid tokens built by default builder");let{indentTokenName:i,dedentTokenName:a,whitespaceTokenName:s,ignoreIndentationDelimiters:l}=this.options,u,h,f,d=[];for(let p of n){for(let[m,g]of l)p.name===m?p.PUSH_MODE=t0.IGNORE_INDENTATION:p.name===g&&(p.POP_MODE=!0);p.name===a?u=p:p.name===i?h=p:p.name===s?f=p:d.push(p)}if(!u||!h||!f)throw new Error("Some indentation/whitespace tokens not found!");return l.length>0?{modes:{[t0.REGULAR]:[u,h,...d,f],[t0.IGNORE_INDENTATION]:[...d,f]},defaultMode:t0.REGULAR}:[u,h,f,...d]}flushLexingReport(e){let r=super.flushLexingReport(e);return Object.assign(Object.assign({},r),{remainingDedents:this.flushRemainingDedents(e)})}isStartOfLine(e,r){return r===0||`\r +`.includes(e[r-1])}matchWhitespace(e,r,n,i){var a;this.whitespaceRegExp.lastIndex=r;let s=this.whitespaceRegExp.exec(e);return{currIndentLevel:(a=s?.[0].length)!==null&&a!==void 0?a:0,prevIndentLevel:this.indentationStack.at(-1),match:s}}createIndentationTokenInstance(e,r,n,i){let a=this.getLineNumber(r,i);return Qu(e,n,i,i+n.length,a,a,1,n.length)}getLineNumber(e,r){return e.substring(0,r).split(/\r\n|\r|\n/).length}indentMatcher(e,r,n,i){if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:a,prevIndentLevel:s,match:l}=this.matchWhitespace(e,r,n,i);return a<=s?null:(this.indentationStack.push(a),l)}dedentMatcher(e,r,n,i){var a,s,l,u;if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:h,prevIndentLevel:f,match:d}=this.matchWhitespace(e,r,n,i);if(h>=f)return null;let p=this.indentationStack.lastIndexOf(h);if(p===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${h} at offset: ${r}. Current indentation stack: ${this.indentationStack}`,offset:r,length:(s=(a=d?.[0])===null||a===void 0?void 0:a.length)!==null&&s!==void 0?s:0,line:this.getLineNumber(e,r),column:1}),null;let m=this.indentationStack.length-p-1,g=(u=(l=e.substring(0,r).match(/[\r\n]+$/))===null||l===void 0?void 0:l[0].length)!==null&&u!==void 0?u:1;for(let y=0;y1;)r.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],r}},zB=class extends e0{static{o(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof o6)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,r=t6){let n=super.tokenize(e),i=n.report;r?.mode==="full"&&n.tokens.push(...i.remainingDedents),i.remainingDedents=[];let{indentTokenType:a,dedentTokenType:s}=this.indentationTokenBuilder,l=a.tokenTypeIdx,u=s.tokenTypeIdx,h=[],f=n.tokens.length-1;for(let d=0;d=0&&h.push(n.tokens[f]),n.tokens=h,n}}});var Mme=N(()=>{"use strict"});var Ime=N(()=>{"use strict";MB();UP();FS();Nme();qP();Ab();n6();VS();Mme();US();WP()});var Ome=N(()=>{"use strict";aB();sB();oB();cB();lB();uB()});var Pme=N(()=>{"use strict";OB();ZS()});var l6,Ea,GB=N(()=>{"use strict";l6=class{static{o(this,"EmptyFileSystemProvider")}readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},Ea={fileSystemProvider:o(()=>new l6,"fileSystemProvider")}});function yje(){let t=Hn(ka(Ea),gje),e=Hn(wa({shared:t}),mje);return t.ServiceRegistry.register(e),e}function Zc(t){var e;let r=yje(),n=r.serializer.JsonSerializer.deserialize(t);return r.shared.workspace.LangiumDocumentFactory.fromModel(n,ys.parse(`memory://${(e=n.name)!==null&&e!==void 0?e:"grammar"}.langium`)),n}var mje,gje,Bme=N(()=>{"use strict";PB();FB();Hc();GB();Qc();mje={Grammar:o(()=>{},"Grammar"),LanguageMetaData:o(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},gje={AstReflection:o(()=>new i1,"AstReflection")};o(yje,"createMinimalGrammarServices");o(Zc,"loadGrammarFromJson")});var Xr={};dr(Xr,{AstUtils:()=>GE,BiMap:()=>Qp,Cancellation:()=>br,ContextCache:()=>Zp,CstUtils:()=>RE,DONE_RESULT:()=>za,Deferred:()=>gs,Disposable:()=>Gf,DisposableCache:()=>W1,DocumentCache:()=>KS,EMPTY_STREAM:()=>Rx,ErrorWithLocation:()=>Rp,GrammarUtils:()=>WE,MultiMap:()=>Vl,OperationCancelled:()=>jc,Reduction:()=>vg,RegExpUtils:()=>HE,SimpleCache:()=>Pb,StreamImpl:()=>po,TreeStreamImpl:()=>Gc,URI:()=>ys,UriUtils:()=>vs,WorkspaceCache:()=>Y1,assertUnreachable:()=>Uc,delayNextTick:()=>tB,interruptAndCheck:()=>bi,isOperationCancelled:()=>Kc,loadGrammarFromJson:()=>Zc,setInterruptionPeriod:()=>ome,startCancelableOperation:()=>XS,stream:()=>an});var Fme=N(()=>{"use strict";QS();e6();Lr(Xr,ei);H1();yB();NE();Bme();tl();Ys();Qc();hs();el();Bl();zl();l1()});var $me=N(()=>{"use strict";dB();Gb()});var zme=N(()=>{"use strict";pB();mB();gB();vB();U1();GB();xB();IB();bB()});var Sa={};dr(Sa,{AbstractAstReflection:()=>Ap,AbstractCstNode:()=>kb,AbstractLangiumParser:()=>Eb,AbstractParserErrorMessageProvider:()=>zS,AbstractThreadedAsyncParser:()=>RB,AstUtils:()=>GE,BiMap:()=>Qp,Cancellation:()=>br,CompositeCstNodeImpl:()=>Xp,ContextCache:()=>Zp,CstNodeBuilder:()=>wb,CstUtils:()=>RE,DEFAULT_TOKENIZE_OPTIONS:()=>t6,DONE_RESULT:()=>za,DatatypeSymbol:()=>$S,DefaultAstNodeDescriptionProvider:()=>Ub,DefaultAstNodeLocator:()=>qb,DefaultAsyncParser:()=>t4,DefaultCommentProvider:()=>e4,DefaultConfigurationProvider:()=>Wb,DefaultDocumentBuilder:()=>Yb,DefaultDocumentValidator:()=>Vb,DefaultHydrator:()=>n4,DefaultIndexManager:()=>Xb,DefaultJsonSerializer:()=>Fb,DefaultLangiumDocumentFactory:()=>Db,DefaultLangiumDocuments:()=>Lb,DefaultLexer:()=>e0,DefaultLexerErrorMessageProvider:()=>Kb,DefaultLinker:()=>Rb,DefaultNameProvider:()=>Nb,DefaultReferenceDescriptionProvider:()=>Hb,DefaultReferences:()=>Mb,DefaultScopeComputation:()=>Ib,DefaultScopeProvider:()=>Bb,DefaultServiceRegistry:()=>$b,DefaultTokenBuilder:()=>th,DefaultValueConverter:()=>Kp,DefaultWorkspaceLock:()=>r4,DefaultWorkspaceManager:()=>jb,Deferred:()=>gs,Disposable:()=>Gf,DisposableCache:()=>W1,DocumentCache:()=>KS,DocumentState:()=>Ln,DocumentValidator:()=>rl,EMPTY_SCOPE:()=>rje,EMPTY_STREAM:()=>Rx,EmptyFileSystem:()=>Ea,EmptyFileSystemProvider:()=>l6,ErrorWithLocation:()=>Rp,GrammarAST:()=>zx,GrammarUtils:()=>WE,IndentationAwareLexer:()=>zB,IndentationAwareTokenBuilder:()=>o6,JSDocDocumentationProvider:()=>Jb,LangiumCompletionParser:()=>Cb,LangiumParser:()=>Sb,LangiumParserErrorMessageProvider:()=>F1,LeafCstNodeImpl:()=>Yp,LexingMode:()=>t0,MapScope:()=>Ob,Module:()=>BB,MultiMap:()=>Vl,OperationCancelled:()=>jc,ParserWorker:()=>NB,Reduction:()=>vg,RegExpUtils:()=>HE,RootCstNodeImpl:()=>B1,SimpleCache:()=>Pb,StreamImpl:()=>po,StreamScope:()=>q1,TextDocument:()=>G1,TreeStreamImpl:()=>Gc,URI:()=>ys,UriUtils:()=>vs,ValidationCategory:()=>X1,ValidationRegistry:()=>zb,ValueConverter:()=>Xc,WorkspaceCache:()=>Y1,assertUnreachable:()=>Uc,createCompletionParser:()=>VP,createDefaultCoreModule:()=>wa,createDefaultSharedCoreModule:()=>ka,createGrammarConfig:()=>PO,createLangiumParser:()=>HP,createParser:()=>_b,delayNextTick:()=>tB,diagnosticData:()=>Jp,eagerLoad:()=>Cme,getDiagnosticRange:()=>mme,indentationBuilderDefaultOptions:()=>$B,inject:()=>Hn,interruptAndCheck:()=>bi,isAstNode:()=>li,isAstNodeDescription:()=>qI,isAstNodeWithComment:()=>hB,isCompositeCstNode:()=>Ol,isIMultiModeLexerDefinition:()=>wB,isJSDoc:()=>CB,isLeafCstNode:()=>If,isLinkingError:()=>_p,isNamed:()=>dme,isOperationCancelled:()=>Kc,isReference:()=>Ta,isRootCstNode:()=>Lx,isTokenTypeArray:()=>r6,isTokenTypeDictionary:()=>TB,loadGrammarFromJson:()=>Zc,parseJSDoc:()=>SB,prepareLangiumParser:()=>eme,setInterruptionPeriod:()=>ome,startCancelableOperation:()=>XS,stream:()=>an,toDiagnosticData:()=>gme,toDiagnosticSeverity:()=>JS});var vo=N(()=>{"use strict";PB();FB();fB();_me();Pl();Dme();Rme();Ime();Ome();Pme();Fme();Lr(Sa,Xr);$me();zme();Hc()});function Xme(t){return Ul.isInstance(t,i4)}function jme(t){return Ul.isInstance(t,j1)}function Kme(t){return Ul.isInstance(t,K1)}function Qme(t){return Ul.isInstance(t,Q1)}function Zme(t){return Ul.isInstance(t,a4)}function Jme(t){return Ul.isInstance(t,Z1)}function ege(t){return Ul.isInstance(t,s4)}function tge(t){return Ul.isInstance(t,o4)}function rge(t){return Ul.isInstance(t,l4)}function nge(t){return Ul.isInstance(t,c4)}function ige(t){return Ul.isInstance(t,u4)}var vje,Tt,QB,i4,c6,j1,u6,h6,VB,K1,UB,HB,qB,Q1,WB,a4,f6,YB,Z1,XB,s4,o4,l4,c4,g6,jB,u4,KB,d6,p6,m6,age,Ul,Gme,xje,Vme,bje,Ume,Tje,Hme,wje,qme,kje,Wme,Eje,Yme,Sje,Cje,Aje,_je,Dje,Lje,Rje,Nje,xs,ZB,JB,eF,tF,rF,nF,iF,Mje,Ije,Oje,Pje,Vf,rh,Ha,Bje,qa=N(()=>{"use strict";vo();vo();vo();vo();vje=Object.defineProperty,Tt=o((t,e)=>vje(t,"name",{value:e,configurable:!0}),"__name"),QB="Statement",i4="Architecture";o(Xme,"isArchitecture");Tt(Xme,"isArchitecture");c6="Axis",j1="Branch";o(jme,"isBranch");Tt(jme,"isBranch");u6="Checkout",h6="CherryPicking",VB="ClassDefStatement",K1="Commit";o(Kme,"isCommit");Tt(Kme,"isCommit");UB="Curve",HB="Edge",qB="Entry",Q1="GitGraph";o(Qme,"isGitGraph");Tt(Qme,"isGitGraph");WB="Group",a4="Info";o(Zme,"isInfo");Tt(Zme,"isInfo");f6="Item",YB="Junction",Z1="Merge";o(Jme,"isMerge");Tt(Jme,"isMerge");XB="Option",s4="Packet";o(ege,"isPacket");Tt(ege,"isPacket");o4="PacketBlock";o(tge,"isPacketBlock");Tt(tge,"isPacketBlock");l4="Pie";o(rge,"isPie");Tt(rge,"isPie");c4="PieSection";o(nge,"isPieSection");Tt(nge,"isPieSection");g6="Radar",jB="Service",u4="Treemap";o(ige,"isTreemap");Tt(ige,"isTreemap");KB="TreemapRow",d6="Direction",p6="Leaf",m6="Section",age=class extends Ap{static{o(this,"MermaidAstReflection")}static{Tt(this,"MermaidAstReflection")}getAllTypes(){return[i4,c6,j1,u6,h6,VB,K1,UB,d6,HB,qB,Q1,WB,a4,f6,YB,p6,Z1,XB,s4,o4,l4,c4,g6,m6,jB,QB,u4,KB]}computeIsSubtype(t,e){switch(t){case j1:case u6:case h6:case K1:case Z1:return this.isSubtype(QB,e);case d6:return this.isSubtype(Q1,e);case p6:case m6:return this.isSubtype(f6,e);default:return!1}}getReferenceType(t){let e=`${t.container.$type}:${t.property}`;switch(e){case"Entry:axis":return c6;default:throw new Error(`${e} is not a valid reference id.`)}}getTypeMetaData(t){switch(t){case i4:return{name:i4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case c6:return{name:c6,properties:[{name:"label"},{name:"name"}]};case j1:return{name:j1,properties:[{name:"name"},{name:"order"}]};case u6:return{name:u6,properties:[{name:"branch"}]};case h6:return{name:h6,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case VB:return{name:VB,properties:[{name:"className"},{name:"styleText"}]};case K1:return{name:K1,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case UB:return{name:UB,properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case HB:return{name:HB,properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case qB:return{name:qB,properties:[{name:"axis"},{name:"value"}]};case Q1:return{name:Q1,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case WB:return{name:WB,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case a4:return{name:a4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case f6:return{name:f6,properties:[{name:"classSelector"},{name:"name"}]};case YB:return{name:YB,properties:[{name:"id"},{name:"in"}]};case Z1:return{name:Z1,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case XB:return{name:XB,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case s4:return{name:s4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case o4:return{name:o4,properties:[{name:"bits"},{name:"end"},{name:"label"},{name:"start"}]};case l4:return{name:l4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case c4:return{name:c4,properties:[{name:"label"},{name:"value"}]};case g6:return{name:g6,properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case jB:return{name:jB,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case u4:return{name:u4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"},{name:"TreemapRows",defaultValue:[]}]};case KB:return{name:KB,properties:[{name:"indent"},{name:"item"}]};case d6:return{name:d6,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};case p6:return{name:p6,properties:[{name:"classSelector"},{name:"name"},{name:"value"}]};case m6:return{name:m6,properties:[{name:"classSelector"},{name:"name"}]};default:return{name:t,properties:[]}}}},Ul=new age,xje=Tt(()=>Gme??(Gme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"InfoGrammar"),bje=Tt(()=>Vme??(Vme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"PacketGrammar"),Tje=Tt(()=>Ume??(Ume=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"PieGrammar"),wje=Tt(()=>Hme??(Hme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"ArchitectureGrammar"),kje=Tt(()=>qme??(qme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"GitGraphGrammar"),Eje=Tt(()=>Wme??(Wme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Radar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"types":[],"usedGrammars":[]}`)),"RadarGrammar"),Sje=Tt(()=>Yme??(Yme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Treemap","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","}},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)),"TreemapGrammar"),Cje={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Aje={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},_je={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Dje={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Lje={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Rje={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Nje={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},xs={AstReflection:Tt(()=>new age,"AstReflection")},ZB={Grammar:Tt(()=>xje(),"Grammar"),LanguageMetaData:Tt(()=>Cje,"LanguageMetaData"),parser:{}},JB={Grammar:Tt(()=>bje(),"Grammar"),LanguageMetaData:Tt(()=>Aje,"LanguageMetaData"),parser:{}},eF={Grammar:Tt(()=>Tje(),"Grammar"),LanguageMetaData:Tt(()=>_je,"LanguageMetaData"),parser:{}},tF={Grammar:Tt(()=>wje(),"Grammar"),LanguageMetaData:Tt(()=>Dje,"LanguageMetaData"),parser:{}},rF={Grammar:Tt(()=>kje(),"Grammar"),LanguageMetaData:Tt(()=>Lje,"LanguageMetaData"),parser:{}},nF={Grammar:Tt(()=>Eje(),"Grammar"),LanguageMetaData:Tt(()=>Rje,"LanguageMetaData"),parser:{}},iF={Grammar:Tt(()=>Sje(),"Grammar"),LanguageMetaData:Tt(()=>Nje,"LanguageMetaData"),parser:{}},Mje=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,Ije=/accTitle[\t ]*:([^\n\r]*)/,Oje=/title([\t ][^\n\r]*|)/,Pje={ACC_DESCR:Mje,ACC_TITLE:Ije,TITLE:Oje},Vf=class extends Kp{static{o(this,"AbstractMermaidValueConverter")}static{Tt(this,"AbstractMermaidValueConverter")}runConverter(t,e,r){let n=this.runCommonConverter(t,e,r);return n===void 0&&(n=this.runCustomConverter(t,e,r)),n===void 0?super.runConverter(t,e,r):n}runCommonConverter(t,e,r){let n=Pje[t.name];if(n===void 0)return;let i=n.exec(e);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` +`)}}},rh=class extends Vf{static{o(this,"CommonValueConverter")}static{Tt(this,"CommonValueConverter")}runCustomConverter(t,e,r){}},Ha=class extends th{static{o(this,"AbstractMermaidTokenBuilder")}static{Tt(this,"AbstractMermaidTokenBuilder")}constructor(t){super(),this.keywords=new Set(t)}buildKeywordTokens(t,e,r){let n=super.buildKeywordTokens(t,e,r);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},Bje=class extends Ha{static{o(this,"CommonTokenBuilder")}static{Tt(this,"CommonTokenBuilder")}}});function v6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),rF,y6);return e.ServiceRegistry.register(r),{shared:e,GitGraph:r}}var Fje,y6,aF=N(()=>{"use strict";qa();vo();Fje=class extends Ha{static{o(this,"GitGraphTokenBuilder")}static{Tt(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},y6={parser:{TokenBuilder:Tt(()=>new Fje,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(v6,"createGitGraphServices");Tt(v6,"createGitGraphServices")});function b6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),ZB,x6);return e.ServiceRegistry.register(r),{shared:e,Info:r}}var $je,x6,sF=N(()=>{"use strict";qa();vo();$je=class extends Ha{static{o(this,"InfoTokenBuilder")}static{Tt(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},x6={parser:{TokenBuilder:Tt(()=>new $je,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(b6,"createInfoServices");Tt(b6,"createInfoServices")});function w6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),JB,T6);return e.ServiceRegistry.register(r),{shared:e,Packet:r}}var zje,T6,oF=N(()=>{"use strict";qa();vo();zje=class extends Ha{static{o(this,"PacketTokenBuilder")}static{Tt(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},T6={parser:{TokenBuilder:Tt(()=>new zje,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(w6,"createPacketServices");Tt(w6,"createPacketServices")});function E6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),eF,k6);return e.ServiceRegistry.register(r),{shared:e,Pie:r}}var Gje,Vje,k6,lF=N(()=>{"use strict";qa();vo();Gje=class extends Ha{static{o(this,"PieTokenBuilder")}static{Tt(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},Vje=class extends Vf{static{o(this,"PieValueConverter")}static{Tt(this,"PieValueConverter")}runCustomConverter(t,e,r){if(t.name==="PIE_SECTION_LABEL")return e.replace(/"/g,"").trim()}},k6={parser:{TokenBuilder:Tt(()=>new Gje,"TokenBuilder"),ValueConverter:Tt(()=>new Vje,"ValueConverter")}};o(E6,"createPieServices");Tt(E6,"createPieServices")});function C6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),tF,S6);return e.ServiceRegistry.register(r),{shared:e,Architecture:r}}var Uje,Hje,S6,cF=N(()=>{"use strict";qa();vo();Uje=class extends Ha{static{o(this,"ArchitectureTokenBuilder")}static{Tt(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},Hje=class extends Vf{static{o(this,"ArchitectureValueConverter")}static{Tt(this,"ArchitectureValueConverter")}runCustomConverter(t,e,r){if(t.name==="ARCH_ICON")return e.replace(/[()]/g,"").trim();if(t.name==="ARCH_TEXT_ICON")return e.replace(/["()]/g,"");if(t.name==="ARCH_TITLE")return e.replace(/[[\]]/g,"").trim()}},S6={parser:{TokenBuilder:Tt(()=>new Uje,"TokenBuilder"),ValueConverter:Tt(()=>new Hje,"ValueConverter")}};o(C6,"createArchitectureServices");Tt(C6,"createArchitectureServices")});function _6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),nF,A6);return e.ServiceRegistry.register(r),{shared:e,Radar:r}}var qje,A6,uF=N(()=>{"use strict";qa();vo();qje=class extends Ha{static{o(this,"RadarTokenBuilder")}static{Tt(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},A6={parser:{TokenBuilder:Tt(()=>new qje,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(_6,"createRadarServices");Tt(_6,"createRadarServices")});function sge(t){let e=t.validation.TreemapValidator,r=t.validation.ValidationRegistry;if(r){let n={Treemap:e.checkSingleRoot.bind(e)};r.register(n,e)}}function L6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),iF,D6);return e.ServiceRegistry.register(r),sge(r),{shared:e,Treemap:r}}var Wje,Yje,Xje,jje,D6,hF=N(()=>{"use strict";qa();vo();Wje=class extends Ha{static{o(this,"TreemapTokenBuilder")}static{Tt(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},Yje=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,Xje=class extends Vf{static{o(this,"TreemapValueConverter")}static{Tt(this,"TreemapValueConverter")}runCustomConverter(t,e,r){if(t.name==="NUMBER2")return parseFloat(e.replace(/,/g,""));if(t.name==="SEPARATOR")return e.substring(1,e.length-1);if(t.name==="STRING2")return e.substring(1,e.length-1);if(t.name==="INDENTATION")return e.length;if(t.name==="ClassDef"){if(typeof e!="string")return e;let n=Yje.exec(e);if(n)return{$type:"ClassDefStatement",className:n[1],styleText:n[2]||void 0}}}};o(sge,"registerValidationChecks");Tt(sge,"registerValidationChecks");jje=class{static{o(this,"TreemapValidator")}static{Tt(this,"TreemapValidator")}checkSingleRoot(t,e){let r;for(let n of t.TreemapRows)n.item&&(r===void 0&&n.indent===void 0?r=0:n.indent===void 0?e("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}):r!==void 0&&r>=parseInt(n.indent,10)&&e("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}))}},D6={parser:{TokenBuilder:Tt(()=>new Wje,"TokenBuilder"),ValueConverter:Tt(()=>new Xje,"ValueConverter")},validation:{TreemapValidator:Tt(()=>new jje,"TreemapValidator")}};o(L6,"createTreemapServices");Tt(L6,"createTreemapServices")});var oge={};dr(oge,{InfoModule:()=>x6,createInfoServices:()=>b6});var lge=N(()=>{"use strict";sF();qa()});var cge={};dr(cge,{PacketModule:()=>T6,createPacketServices:()=>w6});var uge=N(()=>{"use strict";oF();qa()});var hge={};dr(hge,{PieModule:()=>k6,createPieServices:()=>E6});var fge=N(()=>{"use strict";lF();qa()});var dge={};dr(dge,{ArchitectureModule:()=>S6,createArchitectureServices:()=>C6});var pge=N(()=>{"use strict";cF();qa()});var mge={};dr(mge,{GitGraphModule:()=>y6,createGitGraphServices:()=>v6});var gge=N(()=>{"use strict";aF();qa()});var yge={};dr(yge,{RadarModule:()=>A6,createRadarServices:()=>_6});var vge=N(()=>{"use strict";uF();qa()});var xge={};dr(xge,{TreemapModule:()=>D6,createTreemapServices:()=>L6});var bge=N(()=>{"use strict";hF();qa()});async function bs(t,e){let r=Kje[t];if(!r)throw new Error(`Unknown diagram type: ${t}`);nh[t]||await r();let i=nh[t].parse(e);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new Qje(i);return i.value}var nh,Kje,Qje,Uf=N(()=>{"use strict";aF();sF();oF();lF();cF();uF();hF();qa();nh={},Kje={info:Tt(async()=>{let{createInfoServices:t}=await Promise.resolve().then(()=>(lge(),oge)),e=t().Info.parser.LangiumParser;nh.info=e},"info"),packet:Tt(async()=>{let{createPacketServices:t}=await Promise.resolve().then(()=>(uge(),cge)),e=t().Packet.parser.LangiumParser;nh.packet=e},"packet"),pie:Tt(async()=>{let{createPieServices:t}=await Promise.resolve().then(()=>(fge(),hge)),e=t().Pie.parser.LangiumParser;nh.pie=e},"pie"),architecture:Tt(async()=>{let{createArchitectureServices:t}=await Promise.resolve().then(()=>(pge(),dge)),e=t().Architecture.parser.LangiumParser;nh.architecture=e},"architecture"),gitGraph:Tt(async()=>{let{createGitGraphServices:t}=await Promise.resolve().then(()=>(gge(),mge)),e=t().GitGraph.parser.LangiumParser;nh.gitGraph=e},"gitGraph"),radar:Tt(async()=>{let{createRadarServices:t}=await Promise.resolve().then(()=>(vge(),yge)),e=t().Radar.parser.LangiumParser;nh.radar=e},"radar"),treemap:Tt(async()=>{let{createTreemapServices:t}=await Promise.resolve().then(()=>(bge(),xge)),e=t().Treemap.parser.LangiumParser;nh.treemap=e},"treemap")};o(bs,"parse");Tt(bs,"parse");Qje=class extends Error{static{o(this,"MermaidParseError")}constructor(t){let e=t.lexerErrors.map(n=>n.message).join(` `),r=t.parserErrors.map(n=>n.message).join(` -`);super(`Parsing failed: ${e} ${r}`),this.result=t}static{Lt(this,"MermaidParseError")}}});function $c(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}var T1=N(()=>{"use strict";o($c,"populateCommonDb")});var Kr,a6=N(()=>{"use strict";Kr={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}});var pf,s6=N(()=>{"use strict";pf=class{constructor(e){this.init=e;this.records=this.init()}static{o(this,"ImperativeState")}reset(){this.records=this.init()}}});function zI(){return j9({length:7})}function u$e(t,e){let r=Object.create(null);return t.reduce((n,i)=>{let a=e(i);return r[a]||(r[a]=!0,n.push(i)),n},[])}function jce(t,e,r){let n=t.indexOf(e);n===-1?t.push(r):t.splice(n,1,r)}function Qce(t){let e=t.reduce((i,a)=>i.seq>a.seq?i:a,t[0]),r="";t.forEach(function(i){i===e?r+=" *":r+=" |"});let n=[r,e.id,e.seq];for(let i in _t.records.branches)_t.records.branches.get(i)===e.id&&n.push(i);if(Y.debug(n.join(" ")),e.parents&&e.parents.length==2&&e.parents[0]&&e.parents[1]){let i=_t.records.commits.get(e.parents[0]);jce(t,e,i),e.parents[1]&&t.push(_t.records.commits.get(e.parents[1]))}else{if(e.parents.length==0)return;if(e.parents[0]){let i=_t.records.commits.get(e.parents[0]);jce(t,e,i)}}t=u$e(t,i=>i.id),Qce(t)}var c$e,Ep,_t,h$e,f$e,d$e,p$e,m$e,g$e,y$e,Kce,v$e,x$e,b$e,w$e,T$e,Zce,k$e,E$e,S$e,o6,GI=N(()=>{"use strict";vt();ir();ji();gr();mi();a6();s6();Ya();c$e=or.gitGraph,Ep=o(()=>Fi({...c$e,...cr().gitGraph}),"getConfig"),_t=new pf(()=>{let t=Ep(),e=t.mainBranchName,r=t.mainBranchOrder;return{mainBranchName:e,commits:new Map,head:null,branchConfig:new Map([[e,{name:e,order:r}]]),branches:new Map([[e,null]]),currBranch:e,direction:"LR",seq:0,options:{}}});o(zI,"getID");o(u$e,"uniqBy");h$e=o(function(t){_t.records.direction=t},"setDirection"),f$e=o(function(t){Y.debug("options str",t),t=t?.trim(),t=t||"{}";try{_t.records.options=JSON.parse(t)}catch(e){Y.error("error while parsing gitGraph options",e.message)}},"setOptions"),d$e=o(function(){return _t.records.options},"getOptions"),p$e=o(function(t){let e=t.msg,r=t.id,n=t.type,i=t.tags;Y.info("commit",e,r,n,i),Y.debug("Entering commit:",e,r,n,i);let a=Ep();r=Ze.sanitizeText(r,a),e=Ze.sanitizeText(e,a),i=i?.map(l=>Ze.sanitizeText(l,a));let s={id:r||_t.records.seq+"-"+zI(),message:e,seq:_t.records.seq++,type:n??Kr.NORMAL,tags:i??[],parents:_t.records.head==null?[]:[_t.records.head.id],branch:_t.records.currBranch};_t.records.head=s,Y.info("main branch",a.mainBranchName),_t.records.commits.set(s.id,s),_t.records.branches.set(_t.records.currBranch,s.id),Y.debug("in pushCommit "+s.id)},"commit"),m$e=o(function(t){let e=t.name,r=t.order;if(e=Ze.sanitizeText(e,Ep()),_t.records.branches.has(e))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${e}")`);_t.records.branches.set(e,_t.records.head!=null?_t.records.head.id:null),_t.records.branchConfig.set(e,{name:e,order:r}),Kce(e),Y.debug("in createBranch")},"branch"),g$e=o(t=>{let e=t.branch,r=t.id,n=t.type,i=t.tags,a=Ep();e=Ze.sanitizeText(e,a),r&&(r=Ze.sanitizeText(r,a));let s=_t.records.branches.get(_t.records.currBranch),l=_t.records.branches.get(e),u=s?_t.records.commits.get(s):void 0,h=l?_t.records.commits.get(l):void 0;if(u&&h&&u.branch===e)throw new Error(`Cannot merge branch '${e}' into itself.`);if(_t.records.currBranch===e){let p=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(u===void 0||!u){let p=new Error(`Incorrect usage of "merge". Current branch (${_t.records.currBranch})has no commits`);throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["commit"]},p}if(!_t.records.branches.has(e)){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") does not exist");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:[`branch ${e}`]},p}if(h===void 0||!h){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") has no commits");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:['"commit"']},p}if(u===h){let p=new Error('Incorrect usage of "merge". Both branches have same head');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(r&&_t.records.commits.has(r)){let p=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom Id");throw p.hash={text:`merge ${e} ${r} ${n} ${i?.join(" ")}`,token:`merge ${e} ${r} ${n} ${i?.join(" ")}`,expected:[`merge ${e} ${r}_UNIQUE ${n} ${i?.join(" ")}`]},p}let f=l||"",d={id:r||`${_t.records.seq}-${zI()}`,message:`merged branch ${e} into ${_t.records.currBranch}`,seq:_t.records.seq++,parents:_t.records.head==null?[]:[_t.records.head.id,f],branch:_t.records.currBranch,type:Kr.MERGE,customType:n,customId:!!r,tags:i??[]};_t.records.head=d,_t.records.commits.set(d.id,d),_t.records.branches.set(_t.records.currBranch,d.id),Y.debug(_t.records.branches),Y.debug("in mergeBranch")},"merge"),y$e=o(function(t){let e=t.id,r=t.targetId,n=t.tags,i=t.parent;Y.debug("Entering cherryPick:",e,r,n);let a=Ep();if(e=Ze.sanitizeText(e,a),r=Ze.sanitizeText(r,a),n=n?.map(u=>Ze.sanitizeText(u,a)),i=Ze.sanitizeText(i,a),!e||!_t.records.commits.has(e)){let u=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw u.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},u}let s=_t.records.commits.get(e);if(s===void 0||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let l=s.branch;if(s.type===Kr.MERGE&&!i)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!_t.records.commits.has(r)){if(l===_t.records.currBranch){let d=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let u=_t.records.branches.get(_t.records.currBranch);if(u===void 0||!u){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${_t.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let h=_t.records.commits.get(u);if(h===void 0||!h){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${_t.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let f={id:_t.records.seq+"-"+zI(),message:`cherry-picked ${s?.message} into ${_t.records.currBranch}`,seq:_t.records.seq++,parents:_t.records.head==null?[]:[_t.records.head.id,s.id],branch:_t.records.currBranch,type:Kr.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===Kr.MERGE?`|parent:${i}`:""}`]};_t.records.head=f,_t.records.commits.set(f.id,f),_t.records.branches.set(_t.records.currBranch,f.id),Y.debug(_t.records.branches),Y.debug("in cherryPick")}},"cherryPick"),Kce=o(function(t){if(t=Ze.sanitizeText(t,Ep()),_t.records.branches.has(t)){_t.records.currBranch=t;let e=_t.records.branches.get(_t.records.currBranch);e===void 0||!e?_t.records.head=null:_t.records.head=_t.records.commits.get(e)??null}else{let e=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw e.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},e}},"checkout");o(jce,"upsert");o(Qce,"prettyPrintCommitHistory");v$e=o(function(){Y.debug(_t.records.commits);let t=Zce()[0];Qce([t])},"prettyPrint"),x$e=o(function(){_t.reset(),Ar()},"clear"),b$e=o(function(){return[..._t.records.branchConfig.values()].map((e,r)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${r}`)}).sort((e,r)=>(e.order??0)-(r.order??0)).map(({name:e})=>({name:e}))},"getBranchesAsObjArray"),w$e=o(function(){return _t.records.branches},"getBranches"),T$e=o(function(){return _t.records.commits},"getCommits"),Zce=o(function(){let t=[..._t.records.commits.values()];return t.forEach(function(e){Y.debug(e.id)}),t.sort((e,r)=>e.seq-r.seq),t},"getCommitsArray"),k$e=o(function(){return _t.records.currBranch},"getCurrentBranch"),E$e=o(function(){return _t.records.direction},"getDirection"),S$e=o(function(){return _t.records.head},"getHead"),o6={commitType:Kr,getConfig:Ep,setDirection:h$e,setOptions:f$e,getOptions:d$e,commit:p$e,branch:m$e,merge:g$e,cherryPick:y$e,checkout:Kce,prettyPrint:v$e,clear:x$e,getBranchesAsObjArray:b$e,getBranches:w$e,getCommits:T$e,getCommitsArray:Zce,getCurrentBranch:k$e,getDirection:E$e,getHead:S$e,setAccTitle:Lr,getAccTitle:Rr,getAccDescription:Mr,setAccDescription:Nr,setDiagramTitle:$r,getDiagramTitle:Ir}});var C$e,A$e,_$e,D$e,L$e,R$e,N$e,Jce,eue=N(()=>{"use strict";kp();vt();T1();GI();a6();C$e=o((t,e)=>{$c(t,e),t.dir&&e.setDirection(t.dir);for(let r of t.statements)A$e(r,e)},"populate"),A$e=o((t,e)=>{let n={Commit:o(i=>e.commit(_$e(i)),"Commit"),Branch:o(i=>e.branch(D$e(i)),"Branch"),Merge:o(i=>e.merge(L$e(i)),"Merge"),Checkout:o(i=>e.checkout(R$e(i)),"Checkout"),CherryPicking:o(i=>e.cherryPick(N$e(i)),"CherryPicking")}[t.$type];n?n(t):Y.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),_$e=o(t=>({id:t.id,msg:t.message??"",type:t.type!==void 0?Kr[t.type]:Kr.NORMAL,tags:t.tags??void 0}),"parseCommit"),D$e=o(t=>({name:t.name,order:t.order??0}),"parseBranch"),L$e=o(t=>({branch:t.branch,id:t.id??"",type:t.type!==void 0?Kr[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),R$e=o(t=>t.branch,"parseCheckout"),N$e=o(t=>({id:t.id,targetId:"",tags:t.tags?.length===0?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),Jce={parse:o(async t=>{let e=await uo("gitGraph",t);Y.debug(e),C$e(e,o6)},"parse")}});var M$e,Ko,gf,yf,zc,qu,Sp,Gs,Vs,l6,db,c6,mf,Br,I$e,rue,nue,O$e,P$e,B$e,F$e,$$e,z$e,G$e,V$e,U$e,H$e,W$e,q$e,tue,Y$e,pb,X$e,j$e,K$e,Q$e,Z$e,iue,aue=N(()=>{"use strict";dr();zt();vt();ir();a6();M$e=me(),Ko=M$e?.gitGraph,gf=10,yf=40,zc=4,qu=2,Sp=8,Gs=new Map,Vs=new Map,l6=30,db=new Map,c6=[],mf=0,Br="LR",I$e=o(()=>{Gs.clear(),Vs.clear(),db.clear(),mf=0,c6=[],Br="LR"},"clear"),rue=o(t=>{let e=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof t=="string"?t.split(/\\n|\n|/gi):t).forEach(n=>{let i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),i.setAttribute("class","row"),i.textContent=n.trim(),e.appendChild(i)}),e},"drawText"),nue=o(t=>{let e,r,n;return Br==="BT"?(r=o((i,a)=>i<=a,"comparisonFunc"),n=1/0):(r=o((i,a)=>i>=a,"comparisonFunc"),n=0),t.forEach(i=>{let a=Br==="TB"||Br=="BT"?Vs.get(i)?.y:Vs.get(i)?.x;a!==void 0&&r(a,n)&&(e=i,n=a)}),e},"findClosestParent"),O$e=o(t=>{let e="",r=1/0;return t.forEach(n=>{let i=Vs.get(n).y;i<=r&&(e=n,r=i)}),e||void 0},"findClosestParentBT"),P$e=o((t,e,r)=>{let n=r,i=r,a=[];t.forEach(s=>{let l=e.get(s);if(!l)throw new Error(`Commit not found for key ${s}`);l.parents.length?(n=F$e(l),i=Math.max(n,i)):a.push(l),$$e(l,n)}),n=i,a.forEach(s=>{z$e(s,n,r)}),t.forEach(s=>{let l=e.get(s);if(l?.parents.length){let u=O$e(l.parents);n=Vs.get(u).y-yf,n<=i&&(i=n);let h=Gs.get(l.branch).pos,f=n-gf;Vs.set(l.id,{x:h,y:f})}})},"setParallelBTPos"),B$e=o(t=>{let e=nue(t.parents.filter(n=>n!==null));if(!e)throw new Error(`Closest parent not found for commit ${t.id}`);let r=Vs.get(e)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${t.id}`);return r},"findClosestParentPos"),F$e=o(t=>B$e(t)+yf,"calculateCommitPosition"),$$e=o((t,e)=>{let r=Gs.get(t.branch);if(!r)throw new Error(`Branch not found for commit ${t.id}`);let n=r.pos,i=e+gf;return Vs.set(t.id,{x:n,y:i}),{x:n,y:i}},"setCommitPosition"),z$e=o((t,e,r)=>{let n=Gs.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);let i=e+r,a=n.pos;Vs.set(t.id,{x:a,y:i})},"setRootPosition"),G$e=o((t,e,r,n,i,a)=>{if(a===Kr.HIGHLIGHT)t.append("rect").attr("x",r.x-10).attr("y",r.y-10).attr("width",20).attr("height",20).attr("class",`commit ${e.id} commit-highlight${i%Sp} ${n}-outer`),t.append("rect").attr("x",r.x-6).attr("y",r.y-6).attr("width",12).attr("height",12).attr("class",`commit ${e.id} commit${i%Sp} ${n}-inner`);else if(a===Kr.CHERRY_PICK)t.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",10).attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`);else{let s=t.append("circle");if(s.attr("cx",r.x),s.attr("cy",r.y),s.attr("r",e.type===Kr.MERGE?9:10),s.attr("class",`commit ${e.id} commit${i%Sp}`),a===Kr.MERGE){let l=t.append("circle");l.attr("cx",r.x),l.attr("cy",r.y),l.attr("r",6),l.attr("class",`commit ${n} ${e.id} commit${i%Sp}`)}a===Kr.REVERSE&&t.append("path").attr("d",`M ${r.x-5},${r.y-5}L${r.x+5},${r.y+5}M${r.x-5},${r.y+5}L${r.x+5},${r.y-5}`).attr("class",`commit ${n} ${e.id} commit${i%Sp}`)}},"drawCommitBullet"),V$e=o((t,e,r,n)=>{if(e.type!==Kr.CHERRY_PICK&&(e.customId&&e.type===Kr.MERGE||e.type!==Kr.MERGE)&&Ko?.showCommitLabel){let i=t.append("g"),a=i.insert("rect").attr("class","commit-label-bkg"),s=i.append("text").attr("x",n).attr("y",r.y+25).attr("class","commit-label").text(e.id),l=s.node()?.getBBox();if(l&&(a.attr("x",r.posWithOffset-l.width/2-qu).attr("y",r.y+13.5).attr("width",l.width+2*qu).attr("height",l.height+2*qu),Br==="TB"||Br==="BT"?(a.attr("x",r.x-(l.width+4*zc+5)).attr("y",r.y-12),s.attr("x",r.x-(l.width+4*zc)).attr("y",r.y+l.height-12)):s.attr("x",r.posWithOffset-l.width/2),Ko.rotateCommitLabel))if(Br==="TB"||Br==="BT")s.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),a.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let u=-7.5-(l.width+10)/25*9.5,h=10+l.width/25*8.5;i.attr("transform","translate("+u+", "+h+") rotate(-45, "+n+", "+r.y+")")}}},"drawCommitLabel"),U$e=o((t,e,r,n)=>{if(e.tags.length>0){let i=0,a=0,s=0,l=[];for(let u of e.tags.reverse()){let h=t.insert("polygon"),f=t.append("circle"),d=t.append("text").attr("y",r.y-16-i).attr("class","tag-label").text(u),p=d.node()?.getBBox();if(!p)throw new Error("Tag bbox not found");a=Math.max(a,p.width),s=Math.max(s,p.height),d.attr("x",r.posWithOffset-p.width/2),l.push({tag:d,hole:f,rect:h,yOffset:i}),i+=20}for(let{tag:u,hole:h,rect:f,yOffset:d}of l){let p=s/2,m=r.y-19.2-d;if(f.attr("class","tag-label-bkg").attr("points",` - ${n-a/2-zc/2},${m+qu} - ${n-a/2-zc/2},${m-qu} - ${r.posWithOffset-a/2-zc},${m-p-qu} - ${r.posWithOffset+a/2+zc},${m-p-qu} - ${r.posWithOffset+a/2+zc},${m+p+qu} - ${r.posWithOffset-a/2-zc},${m+p+qu}`),h.attr("cy",m).attr("cx",n-a/2+zc/2).attr("r",1.5).attr("class","tag-hole"),Br==="TB"||Br==="BT"){let g=n+d;f.attr("class","tag-label-bkg").attr("points",` +`);super(`Parsing failed: ${e} ${r}`),this.result=t}static{Tt(this,"MermaidParseError")}}});function nl(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}var r0=N(()=>{"use strict";o(nl,"populateCommonDb")});var rn,R6=N(()=>{"use strict";rn={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}});var J1,fF=N(()=>{"use strict";J1=class{constructor(e){this.init=e;this.records=this.init()}static{o(this,"ImperativeState")}reset(){this.records=this.init()}}});function dF(){return VL({length:7})}function Jje(t,e){let r=Object.create(null);return t.reduce((n,i)=>{let a=e(i);return r[a]||(r[a]=!0,n.push(i)),n},[])}function Tge(t,e,r){let n=t.indexOf(e);n===-1?t.push(r):t.splice(n,1,r)}function kge(t){let e=t.reduce((i,a)=>i.seq>a.seq?i:a,t[0]),r="";t.forEach(function(i){i===e?r+=" *":r+=" |"});let n=[r,e.id,e.seq];for(let i in Dt.records.branches)Dt.records.branches.get(i)===e.id&&n.push(i);if(X.debug(n.join(" ")),e.parents&&e.parents.length==2&&e.parents[0]&&e.parents[1]){let i=Dt.records.commits.get(e.parents[0]);Tge(t,e,i),e.parents[1]&&t.push(Dt.records.commits.get(e.parents[1]))}else{if(e.parents.length==0)return;if(e.parents[0]){let i=Dt.records.commits.get(e.parents[0]);Tge(t,e,i)}}t=Jje(t,i=>i.id),kge(t)}var Zje,n0,Dt,eKe,tKe,rKe,nKe,iKe,aKe,sKe,wge,oKe,lKe,cKe,uKe,hKe,Ege,fKe,dKe,pKe,N6,pF=N(()=>{"use strict";pt();tr();qn();gr();ci();R6();fF();La();Zje=ur.gitGraph,n0=o(()=>Vn({...Zje,...Qt().gitGraph}),"getConfig"),Dt=new J1(()=>{let t=n0(),e=t.mainBranchName,r=t.mainBranchOrder;return{mainBranchName:e,commits:new Map,head:null,branchConfig:new Map([[e,{name:e,order:r}]]),branches:new Map([[e,null]]),currBranch:e,direction:"LR",seq:0,options:{}}});o(dF,"getID");o(Jje,"uniqBy");eKe=o(function(t){Dt.records.direction=t},"setDirection"),tKe=o(function(t){X.debug("options str",t),t=t?.trim(),t=t||"{}";try{Dt.records.options=JSON.parse(t)}catch(e){X.error("error while parsing gitGraph options",e.message)}},"setOptions"),rKe=o(function(){return Dt.records.options},"getOptions"),nKe=o(function(t){let e=t.msg,r=t.id,n=t.type,i=t.tags;X.info("commit",e,r,n,i),X.debug("Entering commit:",e,r,n,i);let a=n0();r=tt.sanitizeText(r,a),e=tt.sanitizeText(e,a),i=i?.map(l=>tt.sanitizeText(l,a));let s={id:r||Dt.records.seq+"-"+dF(),message:e,seq:Dt.records.seq++,type:n??rn.NORMAL,tags:i??[],parents:Dt.records.head==null?[]:[Dt.records.head.id],branch:Dt.records.currBranch};Dt.records.head=s,X.info("main branch",a.mainBranchName),Dt.records.commits.has(s.id)&&X.warn(`Commit ID ${s.id} already exists`),Dt.records.commits.set(s.id,s),Dt.records.branches.set(Dt.records.currBranch,s.id),X.debug("in pushCommit "+s.id)},"commit"),iKe=o(function(t){let e=t.name,r=t.order;if(e=tt.sanitizeText(e,n0()),Dt.records.branches.has(e))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${e}")`);Dt.records.branches.set(e,Dt.records.head!=null?Dt.records.head.id:null),Dt.records.branchConfig.set(e,{name:e,order:r}),wge(e),X.debug("in createBranch")},"branch"),aKe=o(t=>{let e=t.branch,r=t.id,n=t.type,i=t.tags,a=n0();e=tt.sanitizeText(e,a),r&&(r=tt.sanitizeText(r,a));let s=Dt.records.branches.get(Dt.records.currBranch),l=Dt.records.branches.get(e),u=s?Dt.records.commits.get(s):void 0,h=l?Dt.records.commits.get(l):void 0;if(u&&h&&u.branch===e)throw new Error(`Cannot merge branch '${e}' into itself.`);if(Dt.records.currBranch===e){let p=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(u===void 0||!u){let p=new Error(`Incorrect usage of "merge". Current branch (${Dt.records.currBranch})has no commits`);throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["commit"]},p}if(!Dt.records.branches.has(e)){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") does not exist");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:[`branch ${e}`]},p}if(h===void 0||!h){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") has no commits");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:['"commit"']},p}if(u===h){let p=new Error('Incorrect usage of "merge". Both branches have same head');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(r&&Dt.records.commits.has(r)){let p=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom id");throw p.hash={text:`merge ${e} ${r} ${n} ${i?.join(" ")}`,token:`merge ${e} ${r} ${n} ${i?.join(" ")}`,expected:[`merge ${e} ${r}_UNIQUE ${n} ${i?.join(" ")}`]},p}let f=l||"",d={id:r||`${Dt.records.seq}-${dF()}`,message:`merged branch ${e} into ${Dt.records.currBranch}`,seq:Dt.records.seq++,parents:Dt.records.head==null?[]:[Dt.records.head.id,f],branch:Dt.records.currBranch,type:rn.MERGE,customType:n,customId:!!r,tags:i??[]};Dt.records.head=d,Dt.records.commits.set(d.id,d),Dt.records.branches.set(Dt.records.currBranch,d.id),X.debug(Dt.records.branches),X.debug("in mergeBranch")},"merge"),sKe=o(function(t){let e=t.id,r=t.targetId,n=t.tags,i=t.parent;X.debug("Entering cherryPick:",e,r,n);let a=n0();if(e=tt.sanitizeText(e,a),r=tt.sanitizeText(r,a),n=n?.map(u=>tt.sanitizeText(u,a)),i=tt.sanitizeText(i,a),!e||!Dt.records.commits.has(e)){let u=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw u.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},u}let s=Dt.records.commits.get(e);if(s===void 0||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let l=s.branch;if(s.type===rn.MERGE&&!i)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!Dt.records.commits.has(r)){if(l===Dt.records.currBranch){let d=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let u=Dt.records.branches.get(Dt.records.currBranch);if(u===void 0||!u){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${Dt.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let h=Dt.records.commits.get(u);if(h===void 0||!h){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${Dt.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let f={id:Dt.records.seq+"-"+dF(),message:`cherry-picked ${s?.message} into ${Dt.records.currBranch}`,seq:Dt.records.seq++,parents:Dt.records.head==null?[]:[Dt.records.head.id,s.id],branch:Dt.records.currBranch,type:rn.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===rn.MERGE?`|parent:${i}`:""}`]};Dt.records.head=f,Dt.records.commits.set(f.id,f),Dt.records.branches.set(Dt.records.currBranch,f.id),X.debug(Dt.records.branches),X.debug("in cherryPick")}},"cherryPick"),wge=o(function(t){if(t=tt.sanitizeText(t,n0()),Dt.records.branches.has(t)){Dt.records.currBranch=t;let e=Dt.records.branches.get(Dt.records.currBranch);e===void 0||!e?Dt.records.head=null:Dt.records.head=Dt.records.commits.get(e)??null}else{let e=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw e.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},e}},"checkout");o(Tge,"upsert");o(kge,"prettyPrintCommitHistory");oKe=o(function(){X.debug(Dt.records.commits);let t=Ege()[0];kge([t])},"prettyPrint"),lKe=o(function(){Dt.reset(),Sr()},"clear"),cKe=o(function(){return[...Dt.records.branchConfig.values()].map((e,r)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${r}`)}).sort((e,r)=>(e.order??0)-(r.order??0)).map(({name:e})=>({name:e}))},"getBranchesAsObjArray"),uKe=o(function(){return Dt.records.branches},"getBranches"),hKe=o(function(){return Dt.records.commits},"getCommits"),Ege=o(function(){let t=[...Dt.records.commits.values()];return t.forEach(function(e){X.debug(e.id)}),t.sort((e,r)=>e.seq-r.seq),t},"getCommitsArray"),fKe=o(function(){return Dt.records.currBranch},"getCurrentBranch"),dKe=o(function(){return Dt.records.direction},"getDirection"),pKe=o(function(){return Dt.records.head},"getHead"),N6={commitType:rn,getConfig:n0,setDirection:eKe,setOptions:tKe,getOptions:rKe,commit:nKe,branch:iKe,merge:aKe,cherryPick:sKe,checkout:wge,prettyPrint:oKe,clear:lKe,getBranchesAsObjArray:cKe,getBranches:uKe,getCommits:hKe,getCommitsArray:Ege,getCurrentBranch:fKe,getDirection:dKe,getHead:pKe,setAccTitle:Rr,getAccTitle:Mr,getAccDescription:Or,setAccDescription:Ir,setDiagramTitle:$r,getDiagramTitle:Pr}});var mKe,gKe,yKe,vKe,xKe,bKe,TKe,Sge,Cge=N(()=>{"use strict";Uf();pt();r0();pF();R6();mKe=o((t,e)=>{nl(t,e),t.dir&&e.setDirection(t.dir);for(let r of t.statements)gKe(r,e)},"populate"),gKe=o((t,e)=>{let n={Commit:o(i=>e.commit(yKe(i)),"Commit"),Branch:o(i=>e.branch(vKe(i)),"Branch"),Merge:o(i=>e.merge(xKe(i)),"Merge"),Checkout:o(i=>e.checkout(bKe(i)),"Checkout"),CherryPicking:o(i=>e.cherryPick(TKe(i)),"CherryPicking")}[t.$type];n?n(t):X.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),yKe=o(t=>({id:t.id,msg:t.message??"",type:t.type!==void 0?rn[t.type]:rn.NORMAL,tags:t.tags??void 0}),"parseCommit"),vKe=o(t=>({name:t.name,order:t.order??0}),"parseBranch"),xKe=o(t=>({branch:t.branch,id:t.id??"",type:t.type!==void 0?rn[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),bKe=o(t=>t.branch,"parseCheckout"),TKe=o(t=>({id:t.id,targetId:"",tags:t.tags?.length===0?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),Sge={parse:o(async t=>{let e=await bs("gitGraph",t);X.debug(e),mKe(e,N6)},"parse")}});var wKe,il,qf,Wf,Jc,ih,i0,Ks,Qs,M6,h4,I6,Hf,Vr,kKe,_ge,Dge,EKe,SKe,CKe,AKe,_Ke,DKe,LKe,RKe,NKe,MKe,IKe,OKe,Age,PKe,f4,BKe,FKe,$Ke,zKe,GKe,Lge,Rge=N(()=>{"use strict";yr();Xt();pt();tr();R6();wKe=ge(),il=wKe?.gitGraph,qf=10,Wf=40,Jc=4,ih=2,i0=8,Ks=new Map,Qs=new Map,M6=30,h4=new Map,I6=[],Hf=0,Vr="LR",kKe=o(()=>{Ks.clear(),Qs.clear(),h4.clear(),Hf=0,I6=[],Vr="LR"},"clear"),_ge=o(t=>{let e=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof t=="string"?t.split(/\\n|\n|/gi):t).forEach(n=>{let i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),i.setAttribute("class","row"),i.textContent=n.trim(),e.appendChild(i)}),e},"drawText"),Dge=o(t=>{let e,r,n;return Vr==="BT"?(r=o((i,a)=>i<=a,"comparisonFunc"),n=1/0):(r=o((i,a)=>i>=a,"comparisonFunc"),n=0),t.forEach(i=>{let a=Vr==="TB"||Vr=="BT"?Qs.get(i)?.y:Qs.get(i)?.x;a!==void 0&&r(a,n)&&(e=i,n=a)}),e},"findClosestParent"),EKe=o(t=>{let e="",r=1/0;return t.forEach(n=>{let i=Qs.get(n).y;i<=r&&(e=n,r=i)}),e||void 0},"findClosestParentBT"),SKe=o((t,e,r)=>{let n=r,i=r,a=[];t.forEach(s=>{let l=e.get(s);if(!l)throw new Error(`Commit not found for key ${s}`);l.parents.length?(n=AKe(l),i=Math.max(n,i)):a.push(l),_Ke(l,n)}),n=i,a.forEach(s=>{DKe(s,n,r)}),t.forEach(s=>{let l=e.get(s);if(l?.parents.length){let u=EKe(l.parents);n=Qs.get(u).y-Wf,n<=i&&(i=n);let h=Ks.get(l.branch).pos,f=n-qf;Qs.set(l.id,{x:h,y:f})}})},"setParallelBTPos"),CKe=o(t=>{let e=Dge(t.parents.filter(n=>n!==null));if(!e)throw new Error(`Closest parent not found for commit ${t.id}`);let r=Qs.get(e)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${t.id}`);return r},"findClosestParentPos"),AKe=o(t=>CKe(t)+Wf,"calculateCommitPosition"),_Ke=o((t,e)=>{let r=Ks.get(t.branch);if(!r)throw new Error(`Branch not found for commit ${t.id}`);let n=r.pos,i=e+qf;return Qs.set(t.id,{x:n,y:i}),{x:n,y:i}},"setCommitPosition"),DKe=o((t,e,r)=>{let n=Ks.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);let i=e+r,a=n.pos;Qs.set(t.id,{x:a,y:i})},"setRootPosition"),LKe=o((t,e,r,n,i,a)=>{if(a===rn.HIGHLIGHT)t.append("rect").attr("x",r.x-10).attr("y",r.y-10).attr("width",20).attr("height",20).attr("class",`commit ${e.id} commit-highlight${i%i0} ${n}-outer`),t.append("rect").attr("x",r.x-6).attr("y",r.y-6).attr("width",12).attr("height",12).attr("class",`commit ${e.id} commit${i%i0} ${n}-inner`);else if(a===rn.CHERRY_PICK)t.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",10).attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`);else{let s=t.append("circle");if(s.attr("cx",r.x),s.attr("cy",r.y),s.attr("r",e.type===rn.MERGE?9:10),s.attr("class",`commit ${e.id} commit${i%i0}`),a===rn.MERGE){let l=t.append("circle");l.attr("cx",r.x),l.attr("cy",r.y),l.attr("r",6),l.attr("class",`commit ${n} ${e.id} commit${i%i0}`)}a===rn.REVERSE&&t.append("path").attr("d",`M ${r.x-5},${r.y-5}L${r.x+5},${r.y+5}M${r.x-5},${r.y+5}L${r.x+5},${r.y-5}`).attr("class",`commit ${n} ${e.id} commit${i%i0}`)}},"drawCommitBullet"),RKe=o((t,e,r,n)=>{if(e.type!==rn.CHERRY_PICK&&(e.customId&&e.type===rn.MERGE||e.type!==rn.MERGE)&&il?.showCommitLabel){let i=t.append("g"),a=i.insert("rect").attr("class","commit-label-bkg"),s=i.append("text").attr("x",n).attr("y",r.y+25).attr("class","commit-label").text(e.id),l=s.node()?.getBBox();if(l&&(a.attr("x",r.posWithOffset-l.width/2-ih).attr("y",r.y+13.5).attr("width",l.width+2*ih).attr("height",l.height+2*ih),Vr==="TB"||Vr==="BT"?(a.attr("x",r.x-(l.width+4*Jc+5)).attr("y",r.y-12),s.attr("x",r.x-(l.width+4*Jc)).attr("y",r.y+l.height-12)):s.attr("x",r.posWithOffset-l.width/2),il.rotateCommitLabel))if(Vr==="TB"||Vr==="BT")s.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),a.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let u=-7.5-(l.width+10)/25*9.5,h=10+l.width/25*8.5;i.attr("transform","translate("+u+", "+h+") rotate(-45, "+n+", "+r.y+")")}}},"drawCommitLabel"),NKe=o((t,e,r,n)=>{if(e.tags.length>0){let i=0,a=0,s=0,l=[];for(let u of e.tags.reverse()){let h=t.insert("polygon"),f=t.append("circle"),d=t.append("text").attr("y",r.y-16-i).attr("class","tag-label").text(u),p=d.node()?.getBBox();if(!p)throw new Error("Tag bbox not found");a=Math.max(a,p.width),s=Math.max(s,p.height),d.attr("x",r.posWithOffset-p.width/2),l.push({tag:d,hole:f,rect:h,yOffset:i}),i+=20}for(let{tag:u,hole:h,rect:f,yOffset:d}of l){let p=s/2,m=r.y-19.2-d;if(f.attr("class","tag-label-bkg").attr("points",` + ${n-a/2-Jc/2},${m+ih} + ${n-a/2-Jc/2},${m-ih} + ${r.posWithOffset-a/2-Jc},${m-p-ih} + ${r.posWithOffset+a/2+Jc},${m-p-ih} + ${r.posWithOffset+a/2+Jc},${m+p+ih} + ${r.posWithOffset-a/2-Jc},${m+p+ih}`),h.attr("cy",m).attr("cx",n-a/2+Jc/2).attr("r",1.5).attr("class","tag-hole"),Vr==="TB"||Vr==="BT"){let g=n+d;f.attr("class","tag-label-bkg").attr("points",` ${r.x},${g+2} ${r.x},${g-2} - ${r.x+gf},${g-p-2} - ${r.x+gf+a+4},${g-p-2} - ${r.x+gf+a+4},${g+p+2} - ${r.x+gf},${g+p+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),h.attr("cx",r.x+zc/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),u.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+n+")")}}}},"drawCommitTags"),H$e=o(t=>{switch(t.customType??t.type){case Kr.NORMAL:return"commit-normal";case Kr.REVERSE:return"commit-reverse";case Kr.HIGHLIGHT:return"commit-highlight";case Kr.MERGE:return"commit-merge";case Kr.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),W$e=o((t,e,r,n)=>{let i={x:0,y:0};if(t.parents.length>0){let a=nue(t.parents);if(a){let s=n.get(a)??i;return e==="TB"?s.y+yf:e==="BT"?(n.get(t.id)??i).y-yf:s.x+yf}}else return e==="TB"?l6:e==="BT"?(n.get(t.id)??i).y-yf:0;return 0},"calculatePosition"),q$e=o((t,e,r)=>{let n=Br==="BT"&&r?e:e+gf,i=Br==="TB"||Br==="BT"?n:Gs.get(t.branch)?.pos,a=Br==="TB"||Br==="BT"?Gs.get(t.branch)?.pos:n;if(a===void 0||i===void 0)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:i,posWithOffset:n}},"getCommitPosition"),tue=o((t,e,r)=>{if(!Ko)throw new Error("GitGraph config not found");let n=t.append("g").attr("class","commit-bullets"),i=t.append("g").attr("class","commit-labels"),a=Br==="TB"||Br==="BT"?l6:0,s=[...e.keys()],l=Ko?.parallelCommits??!1,u=o((f,d)=>{let p=e.get(f)?.seq,m=e.get(d)?.seq;return p!==void 0&&m!==void 0?p-m:0},"sortKeys"),h=s.sort(u);Br==="BT"&&(l&&P$e(h,e,a),h=h.reverse()),h.forEach(f=>{let d=e.get(f);if(!d)throw new Error(`Commit not found for key ${f}`);l&&(a=W$e(d,Br,a,Vs));let p=q$e(d,a,l);if(r){let m=H$e(d),g=d.customType??d.type,y=Gs.get(d.branch)?.index??0;G$e(n,d,p,m,y,g),V$e(i,d,p,a),U$e(i,d,p,a)}Br==="TB"||Br==="BT"?Vs.set(d.id,{x:p.x,y:p.posWithOffset}):Vs.set(d.id,{x:p.posWithOffset,y:p.y}),a=Br==="BT"&&l?a+yf:a+yf+gf,a>mf&&(mf=a)})},"drawCommits"),Y$e=o((t,e,r,n,i)=>{let s=(Br==="TB"||Br==="BT"?r.xh.branch===s,"isOnBranchToGetCurve"),u=o(h=>h.seq>t.seq&&h.sequ(h)&&l(h))},"shouldRerouteArrow"),pb=o((t,e,r=0)=>{let n=t+Math.abs(t-e)/2;if(r>5)return n;if(c6.every(s=>Math.abs(s-n)>=10))return c6.push(n),n;let a=Math.abs(t-e);return pb(t,e-a/5,r+1)},"findLane"),X$e=o((t,e,r,n)=>{let i=Vs.get(e.id),a=Vs.get(r.id);if(i===void 0||a===void 0)throw new Error(`Commit positions not found for commits ${e.id} and ${r.id}`);let s=Y$e(e,r,i,a,n),l="",u="",h=0,f=0,d=Gs.get(r.branch)?.index;r.type===Kr.MERGE&&e.id!==r.parents[0]&&(d=Gs.get(e.branch)?.index);let p;if(s){l="A 10 10, 0, 0, 0,",u="A 10 10, 0, 0, 1,",h=10,f=10;let m=i.ya.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===Kr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y-h} ${u} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x+h} ${i.y} ${l} ${a.x} ${i.y+f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):Br==="BT"?(i.xa.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===Kr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${l} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):(i.ya.y&&(r.type===Kr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${u} ${i.x+f} ${a.y} L ${a.x} ${a.y}`),i.y===a.y&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`));if(p===void 0)throw new Error("Line definition not found");t.append("path").attr("d",p).attr("class","arrow arrow"+d%Sp)},"drawArrow"),j$e=o((t,e)=>{let r=t.append("g").attr("class","commit-arrows");[...e.keys()].forEach(n=>{let i=e.get(n);i.parents&&i.parents.length>0&&i.parents.forEach(a=>{X$e(r,e.get(a),i,e)})})},"drawArrows"),K$e=o((t,e)=>{let r=t.append("g");e.forEach((n,i)=>{let a=i%Sp,s=Gs.get(n.name)?.pos;if(s===void 0)throw new Error(`Position not found for branch ${n.name}`);let l=r.append("line");l.attr("x1",0),l.attr("y1",s),l.attr("x2",mf),l.attr("y2",s),l.attr("class","branch branch"+a),Br==="TB"?(l.attr("y1",l6),l.attr("x1",s),l.attr("y2",mf),l.attr("x2",s)):Br==="BT"&&(l.attr("y1",mf),l.attr("x1",s),l.attr("y2",l6),l.attr("x2",s)),c6.push(s);let u=n.name,h=rue(u),f=r.insert("rect"),p=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+a);p.node().appendChild(h);let m=h.getBBox();f.attr("class","branchLabelBkg label"+a).attr("rx",4).attr("ry",4).attr("x",-m.width-4-(Ko?.rotateCommitLabel===!0?30:0)).attr("y",-m.height/2+8).attr("width",m.width+18).attr("height",m.height+4),p.attr("transform","translate("+(-m.width-14-(Ko?.rotateCommitLabel===!0?30:0))+", "+(s-m.height/2-1)+")"),Br==="TB"?(f.attr("x",s-m.width/2-10).attr("y",0),p.attr("transform","translate("+(s-m.width/2-5)+", 0)")):Br==="BT"?(f.attr("x",s-m.width/2-10).attr("y",mf),p.attr("transform","translate("+(s-m.width/2-5)+", "+mf+")")):f.attr("transform","translate(-19, "+(s-m.height/2)+")")})},"drawBranches"),Q$e=o(function(t,e,r,n,i){return Gs.set(t,{pos:e,index:r}),e+=50+(i?40:0)+(Br==="TB"||Br==="BT"?n.width/2:0),e},"setBranchPosition"),Z$e=o(function(t,e,r,n){if(I$e(),Y.debug("in gitgraph renderer",t+` -`,"id:",e,r),!Ko)throw new Error("GitGraph config not found");let i=Ko.rotateCommitLabel??!1,a=n.db;db=a.getCommits();let s=a.getBranchesAsObjArray();Br=a.getDirection();let l=Ge(`[id="${e}"]`),u=0;s.forEach((h,f)=>{let d=rue(h.name),p=l.append("g"),m=p.insert("g").attr("class","branchLabel"),g=m.insert("g").attr("class","label branch-label");g.node()?.appendChild(d);let y=d.getBBox();u=Q$e(h.name,u,f,y,i),g.remove(),m.remove(),p.remove()}),tue(l,db,!1),Ko.showBranches&&K$e(l,s),j$e(l,db),tue(l,db,!0),Gt.insertTitle(l,"gitTitleText",Ko.titleTopMargin??0,a.getDiagramTitle()),oA(void 0,l,Ko.diagramPadding,Ko.useMaxWidth)},"draw"),iue={draw:Z$e}});var J$e,sue,oue=N(()=>{"use strict";J$e=o(t=>` + ${r.x+qf},${g-p-2} + ${r.x+qf+a+4},${g-p-2} + ${r.x+qf+a+4},${g+p+2} + ${r.x+qf},${g+p+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),h.attr("cx",r.x+Jc/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),u.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+n+")")}}}},"drawCommitTags"),MKe=o(t=>{switch(t.customType??t.type){case rn.NORMAL:return"commit-normal";case rn.REVERSE:return"commit-reverse";case rn.HIGHLIGHT:return"commit-highlight";case rn.MERGE:return"commit-merge";case rn.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),IKe=o((t,e,r,n)=>{let i={x:0,y:0};if(t.parents.length>0){let a=Dge(t.parents);if(a){let s=n.get(a)??i;return e==="TB"?s.y+Wf:e==="BT"?(n.get(t.id)??i).y-Wf:s.x+Wf}}else return e==="TB"?M6:e==="BT"?(n.get(t.id)??i).y-Wf:0;return 0},"calculatePosition"),OKe=o((t,e,r)=>{let n=Vr==="BT"&&r?e:e+qf,i=Vr==="TB"||Vr==="BT"?n:Ks.get(t.branch)?.pos,a=Vr==="TB"||Vr==="BT"?Ks.get(t.branch)?.pos:n;if(a===void 0||i===void 0)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:i,posWithOffset:n}},"getCommitPosition"),Age=o((t,e,r)=>{if(!il)throw new Error("GitGraph config not found");let n=t.append("g").attr("class","commit-bullets"),i=t.append("g").attr("class","commit-labels"),a=Vr==="TB"||Vr==="BT"?M6:0,s=[...e.keys()],l=il?.parallelCommits??!1,u=o((f,d)=>{let p=e.get(f)?.seq,m=e.get(d)?.seq;return p!==void 0&&m!==void 0?p-m:0},"sortKeys"),h=s.sort(u);Vr==="BT"&&(l&&SKe(h,e,a),h=h.reverse()),h.forEach(f=>{let d=e.get(f);if(!d)throw new Error(`Commit not found for key ${f}`);l&&(a=IKe(d,Vr,a,Qs));let p=OKe(d,a,l);if(r){let m=MKe(d),g=d.customType??d.type,y=Ks.get(d.branch)?.index??0;LKe(n,d,p,m,y,g),RKe(i,d,p,a),NKe(i,d,p,a)}Vr==="TB"||Vr==="BT"?Qs.set(d.id,{x:p.x,y:p.posWithOffset}):Qs.set(d.id,{x:p.posWithOffset,y:p.y}),a=Vr==="BT"&&l?a+Wf:a+Wf+qf,a>Hf&&(Hf=a)})},"drawCommits"),PKe=o((t,e,r,n,i)=>{let s=(Vr==="TB"||Vr==="BT"?r.xh.branch===s,"isOnBranchToGetCurve"),u=o(h=>h.seq>t.seq&&h.sequ(h)&&l(h))},"shouldRerouteArrow"),f4=o((t,e,r=0)=>{let n=t+Math.abs(t-e)/2;if(r>5)return n;if(I6.every(s=>Math.abs(s-n)>=10))return I6.push(n),n;let a=Math.abs(t-e);return f4(t,e-a/5,r+1)},"findLane"),BKe=o((t,e,r,n)=>{let i=Qs.get(e.id),a=Qs.get(r.id);if(i===void 0||a===void 0)throw new Error(`Commit positions not found for commits ${e.id} and ${r.id}`);let s=PKe(e,r,i,a,n),l="",u="",h=0,f=0,d=Ks.get(r.branch)?.index;r.type===rn.MERGE&&e.id!==r.parents[0]&&(d=Ks.get(e.branch)?.index);let p;if(s){l="A 10 10, 0, 0, 0,",u="A 10 10, 0, 0, 1,",h=10,f=10;let m=i.ya.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===rn.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y-h} ${u} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x+h} ${i.y} ${l} ${a.x} ${i.y+f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):Vr==="BT"?(i.xa.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===rn.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${l} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):(i.ya.y&&(r.type===rn.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${u} ${i.x+f} ${a.y} L ${a.x} ${a.y}`),i.y===a.y&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`));if(p===void 0)throw new Error("Line definition not found");t.append("path").attr("d",p).attr("class","arrow arrow"+d%i0)},"drawArrow"),FKe=o((t,e)=>{let r=t.append("g").attr("class","commit-arrows");[...e.keys()].forEach(n=>{let i=e.get(n);i.parents&&i.parents.length>0&&i.parents.forEach(a=>{BKe(r,e.get(a),i,e)})})},"drawArrows"),$Ke=o((t,e)=>{let r=t.append("g");e.forEach((n,i)=>{let a=i%i0,s=Ks.get(n.name)?.pos;if(s===void 0)throw new Error(`Position not found for branch ${n.name}`);let l=r.append("line");l.attr("x1",0),l.attr("y1",s),l.attr("x2",Hf),l.attr("y2",s),l.attr("class","branch branch"+a),Vr==="TB"?(l.attr("y1",M6),l.attr("x1",s),l.attr("y2",Hf),l.attr("x2",s)):Vr==="BT"&&(l.attr("y1",Hf),l.attr("x1",s),l.attr("y2",M6),l.attr("x2",s)),I6.push(s);let u=n.name,h=_ge(u),f=r.insert("rect"),p=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+a);p.node().appendChild(h);let m=h.getBBox();f.attr("class","branchLabelBkg label"+a).attr("rx",4).attr("ry",4).attr("x",-m.width-4-(il?.rotateCommitLabel===!0?30:0)).attr("y",-m.height/2+8).attr("width",m.width+18).attr("height",m.height+4),p.attr("transform","translate("+(-m.width-14-(il?.rotateCommitLabel===!0?30:0))+", "+(s-m.height/2-1)+")"),Vr==="TB"?(f.attr("x",s-m.width/2-10).attr("y",0),p.attr("transform","translate("+(s-m.width/2-5)+", 0)")):Vr==="BT"?(f.attr("x",s-m.width/2-10).attr("y",Hf),p.attr("transform","translate("+(s-m.width/2-5)+", "+Hf+")")):f.attr("transform","translate(-19, "+(s-m.height/2)+")")})},"drawBranches"),zKe=o(function(t,e,r,n,i){return Ks.set(t,{pos:e,index:r}),e+=50+(i?40:0)+(Vr==="TB"||Vr==="BT"?n.width/2:0),e},"setBranchPosition"),GKe=o(function(t,e,r,n){if(kKe(),X.debug("in gitgraph renderer",t+` +`,"id:",e,r),!il)throw new Error("GitGraph config not found");let i=il.rotateCommitLabel??!1,a=n.db;h4=a.getCommits();let s=a.getBranchesAsObjArray();Vr=a.getDirection();let l=qe(`[id="${e}"]`),u=0;s.forEach((h,f)=>{let d=_ge(h.name),p=l.append("g"),m=p.insert("g").attr("class","branchLabel"),g=m.insert("g").attr("class","label branch-label");g.node()?.appendChild(d);let y=d.getBBox();u=zKe(h.name,u,f,y,i),g.remove(),m.remove(),p.remove()}),Age(l,h4,!1),il.showBranches&&$Ke(l,s),FKe(l,h4),Age(l,h4,!0),qt.insertTitle(l,"gitTitleText",il.titleTopMargin??0,a.getDiagramTitle()),FA(void 0,l,il.diagramPadding,il.useMaxWidth)},"draw"),Lge={draw:GKe}});var VKe,Nge,Mge=N(()=>{"use strict";VKe=o(t=>` .commit-id, .commit-msg, .branch-label { @@ -877,12 +1255,12 @@ ${r}`),this.inline?`{${i}}`:i}};o(LFe,"renderInlineTag");o(RFe,"renderLinkDefaul font-size: 18px; fill: ${t.textColor}; } -`,"getStyles"),sue=J$e});var lue={};hr(lue,{diagram:()=>eze});var eze,cue=N(()=>{"use strict";eue();GI();aue();oue();eze={parser:Jce,db:o6,renderer:iue,styles:sue}});var VI,fue,due=N(()=>{"use strict";VI=function(){var t=o(function(L,R,O,M){for(O=O||{},M=L.length;M--;O[L[M]]=R);return O},"o"),e=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],r=[1,26],n=[1,27],i=[1,28],a=[1,29],s=[1,30],l=[1,31],u=[1,32],h=[1,33],f=[1,34],d=[1,9],p=[1,10],m=[1,11],g=[1,12],y=[1,13],v=[1,14],x=[1,15],b=[1,16],w=[1,19],C=[1,20],T=[1,21],E=[1,22],A=[1,23],S=[1,25],_=[1,35],I={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:o(function(R,O,M,B,F,P,z){var $=P.length-1;switch(F){case 1:return P[$-1];case 2:this.$=[];break;case 3:P[$-1].push(P[$]),this.$=P[$-1];break;case 4:case 5:this.$=P[$];break;case 6:case 7:this.$=[];break;case 8:B.setWeekday("monday");break;case 9:B.setWeekday("tuesday");break;case 10:B.setWeekday("wednesday");break;case 11:B.setWeekday("thursday");break;case 12:B.setWeekday("friday");break;case 13:B.setWeekday("saturday");break;case 14:B.setWeekday("sunday");break;case 15:B.setWeekend("friday");break;case 16:B.setWeekend("saturday");break;case 17:B.setDateFormat(P[$].substr(11)),this.$=P[$].substr(11);break;case 18:B.enableInclusiveEndDates(),this.$=P[$].substr(18);break;case 19:B.TopAxis(),this.$=P[$].substr(8);break;case 20:B.setAxisFormat(P[$].substr(11)),this.$=P[$].substr(11);break;case 21:B.setTickInterval(P[$].substr(13)),this.$=P[$].substr(13);break;case 22:B.setExcludes(P[$].substr(9)),this.$=P[$].substr(9);break;case 23:B.setIncludes(P[$].substr(9)),this.$=P[$].substr(9);break;case 24:B.setTodayMarker(P[$].substr(12)),this.$=P[$].substr(12);break;case 27:B.setDiagramTitle(P[$].substr(6)),this.$=P[$].substr(6);break;case 28:this.$=P[$].trim(),B.setAccTitle(this.$);break;case 29:case 30:this.$=P[$].trim(),B.setAccDescription(this.$);break;case 31:B.addSection(P[$].substr(8)),this.$=P[$].substr(8);break;case 33:B.addTask(P[$-1],P[$]),this.$="task";break;case 34:this.$=P[$-1],B.setClickEvent(P[$-1],P[$],null);break;case 35:this.$=P[$-2],B.setClickEvent(P[$-2],P[$-1],P[$]);break;case 36:this.$=P[$-2],B.setClickEvent(P[$-2],P[$-1],null),B.setLink(P[$-2],P[$]);break;case 37:this.$=P[$-3],B.setClickEvent(P[$-3],P[$-2],P[$-1]),B.setLink(P[$-3],P[$]);break;case 38:this.$=P[$-2],B.setClickEvent(P[$-2],P[$],null),B.setLink(P[$-2],P[$-1]);break;case 39:this.$=P[$-3],B.setClickEvent(P[$-3],P[$-1],P[$]),B.setLink(P[$-3],P[$-2]);break;case 40:this.$=P[$-1],B.setLink(P[$-1],P[$]);break;case 41:case 47:this.$=P[$-1]+" "+P[$];break;case 42:case 43:case 45:this.$=P[$-2]+" "+P[$-1]+" "+P[$];break;case 44:case 46:this.$=P[$-3]+" "+P[$-2]+" "+P[$-1]+" "+P[$];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:w,31:C,33:T,35:E,36:A,37:24,38:S,40:_},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:w,31:C,33:T,35:E,36:A,37:24,38:S,40:_},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:o(function(R,O){if(O.recoverable)this.trace(R);else{var M=new Error(R);throw M.hash=O,M}},"parseError"),parse:o(function(R){var O=this,M=[0],B=[],F=[null],P=[],z=this.table,$="",H=0,Q=0,j=0,ie=2,ne=1,le=P.slice.call(arguments,1),he=Object.create(this.lexer),K={yy:{}};for(var X in this.yy)Object.prototype.hasOwnProperty.call(this.yy,X)&&(K.yy[X]=this.yy[X]);he.setInput(R,K.yy),K.yy.lexer=he,K.yy.parser=this,typeof he.yylloc>"u"&&(he.yylloc={});var te=he.yylloc;P.push(te);var J=he.options&&he.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function se(W){M.length=M.length-2*W,F.length=F.length-W,P.length=P.length-W}o(se,"popStack");function ue(){var W;return W=B.pop()||he.lex()||ne,typeof W!="number"&&(W instanceof Array&&(B=W,W=B.pop()),W=O.symbols_[W]||W),W}o(ue,"lex");for(var Z,Se,ce,ae,Oe,ge,ze={},He,$e,Re,Ie;;){if(ce=M[M.length-1],this.defaultActions[ce]?ae=this.defaultActions[ce]:((Z===null||typeof Z>"u")&&(Z=ue()),ae=z[ce]&&z[ce][Z]),typeof ae>"u"||!ae.length||!ae[0]){var be="";Ie=[];for(He in z[ce])this.terminals_[He]&&He>ie&&Ie.push("'"+this.terminals_[He]+"'");he.showPosition?be="Parse error on line "+(H+1)+`: -`+he.showPosition()+` -Expecting `+Ie.join(", ")+", got '"+(this.terminals_[Z]||Z)+"'":be="Parse error on line "+(H+1)+": Unexpected "+(Z==ne?"end of input":"'"+(this.terminals_[Z]||Z)+"'"),this.parseError(be,{text:he.match,token:this.terminals_[Z]||Z,line:he.yylineno,loc:te,expected:Ie})}if(ae[0]instanceof Array&&ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ce+", token: "+Z);switch(ae[0]){case 1:M.push(Z),F.push(he.yytext),P.push(he.yylloc),M.push(ae[1]),Z=null,Se?(Z=Se,Se=null):(Q=he.yyleng,$=he.yytext,H=he.yylineno,te=he.yylloc,j>0&&j--);break;case 2:if($e=this.productions_[ae[1]][1],ze.$=F[F.length-$e],ze._$={first_line:P[P.length-($e||1)].first_line,last_line:P[P.length-1].last_line,first_column:P[P.length-($e||1)].first_column,last_column:P[P.length-1].last_column},J&&(ze._$.range=[P[P.length-($e||1)].range[0],P[P.length-1].range[1]]),ge=this.performAction.apply(ze,[$,Q,H,K.yy,ae[1],F,P].concat(le)),typeof ge<"u")return ge;$e&&(M=M.slice(0,-1*$e*2),F=F.slice(0,-1*$e),P=P.slice(0,-1*$e)),M.push(this.productions_[ae[1]][0]),F.push(ze.$),P.push(ze._$),Re=z[M[M.length-2]][M[M.length-1]],M.push(Re);break;case 3:return!0}}return!0},"parse")},D=function(){var L={EOF:1,parseError:o(function(O,M){if(this.yy.parser)this.yy.parser.parseError(O,M);else throw new Error(O)},"parseError"),setInput:o(function(R,O){return this.yy=O||this.yy||{},this._input=R,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var R=this._input[0];this.yytext+=R,this.yyleng++,this.offset++,this.match+=R,this.matched+=R;var O=R.match(/(?:\r\n?|\n).*/g);return O?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),R},"input"),unput:o(function(R){var O=R.length,M=R.split(/(?:\r\n?|\n)/g);this._input=R+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-O),this.offset-=O;var B=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),M.length-1&&(this.yylineno-=M.length-1);var F=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:M?(M.length===B.length?this.yylloc.first_column:0)+B[B.length-M.length].length-M[0].length:this.yylloc.first_column-O},this.options.ranges&&(this.yylloc.range=[F[0],F[0]+this.yyleng-O]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(R){this.unput(this.match.slice(R))},"less"),pastInput:o(function(){var R=this.matched.substr(0,this.matched.length-this.match.length);return(R.length>20?"...":"")+R.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var R=this.match;return R.length<20&&(R+=this._input.substr(0,20-R.length)),(R.substr(0,20)+(R.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var R=this.pastInput(),O=new Array(R.length+1).join("-");return R+this.upcomingInput()+` -`+O+"^"},"showPosition"),test_match:o(function(R,O){var M,B,F;if(this.options.backtrack_lexer&&(F={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(F.yylloc.range=this.yylloc.range.slice(0))),B=R[0].match(/(?:\r\n?|\n).*/g),B&&(this.yylineno+=B.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:B?B[B.length-1].length-B[B.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+R[0].length},this.yytext+=R[0],this.match+=R[0],this.matches=R,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(R[0].length),this.matched+=R[0],M=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),M)return M;if(this._backtrack){for(var P in F)this[P]=F[P];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var R,O,M,B;this._more||(this.yytext="",this.match="");for(var F=this._currentRules(),P=0;PO[0].length)){if(O=M,B=P,this.options.backtrack_lexer){if(R=this.test_match(M,F[P]),R!==!1)return R;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(R=this.test_match(O,F[B]),R!==!1?R:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var O=this.next();return O||this.lex()},"lex"),begin:o(function(O){this.conditionStack.push(O)},"begin"),popState:o(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:o(function(O){this.begin(O)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(O,M,B,F){var P=F;switch(B){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return L}();I.lexer=D;function k(){this.yy={}}return o(k,"Parser"),k.prototype=I,I.Parser=k,new k}();VI.parser=VI;fue=VI});var pue=Mi((UI,HI)=>{"use strict";(function(t,e){typeof UI=="object"&&typeof HI<"u"?HI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_isoWeek=e()})(UI,function(){"use strict";var t="day";return function(e,r,n){var i=o(function(l){return l.add(4-l.isoWeekday(),t)},"a"),a=r.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(l){if(!this.$utils().u(l))return this.add(7*(l-this.isoWeek()),t);var u,h,f,d,p=i(this),m=(u=this.isoWeekYear(),h=this.$u,f=(h?n.utc:n)().year(u).startOf("year"),d=4-f.isoWeekday(),f.isoWeekday()>4&&(d+=7),f.add(d,t));return p.diff(m,"week")+1},a.isoWeekday=function(l){return this.$utils().u(l)?this.day()||7:this.day(this.day()%7?l:l-7)};var s=a.startOf;a.startOf=function(l,u){var h=this.$utils(),f=!!h.u(u)||u;return h.p(l)==="isoweek"?f?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(l,u)}}})});var mue=Mi((WI,qI)=>{"use strict";(function(t,e){typeof WI=="object"&&typeof qI<"u"?qI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_customParseFormat=e()})(WI,function(){"use strict";var t={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"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,n=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,s={},l=o(function(g){return(g=+g)+(g>68?1900:2e3)},"a"),u=o(function(g){return function(y){this[g]=+y}},"f"),h=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(y){if(!y||y==="Z")return 0;var v=y.match(/([+-]|\d\d)/g),x=60*v[1]+(+v[2]||0);return x===0?0:v[0]==="+"?-x:x}(g)}],f=o(function(g){var y=s[g];return y&&(y.indexOf?y:y.s.concat(y.f))},"u"),d=o(function(g,y){var v,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,y))>-1){v=b>12;break}}else v=g===(y?"pm":"PM");return v},"d"),p={A:[a,function(g){this.afternoon=d(g,!1)}],a:[a,function(g){this.afternoon=d(g,!0)}],Q:[r,function(g){this.month=3*(g-1)+1}],S:[r,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[i,u("seconds")],ss:[i,u("seconds")],m:[i,u("minutes")],mm:[i,u("minutes")],H:[i,u("hours")],h:[i,u("hours")],HH:[i,u("hours")],hh:[i,u("hours")],D:[i,u("day")],DD:[n,u("day")],Do:[a,function(g){var y=s.ordinal,v=g.match(/\d+/);if(this.day=v[0],y)for(var x=1;x<=31;x+=1)y(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[i,u("week")],ww:[n,u("week")],M:[i,u("month")],MM:[n,u("month")],MMM:[a,function(g){var y=f("months"),v=(f("monthsShort")||y.map(function(x){return x.slice(0,3)})).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var y=f("months").indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[n,function(g){this.year=l(g)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function m(g){var y,v;y=g,v=s&&s.formats;for(var x=(g=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(S,_,I){var D=I&&I.toUpperCase();return _||v[I]||t[I]||v[D].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(k,L,R){return L||R.slice(1)})})).match(e),b=x.length,w=0;w-1)return new Date((M==="X"?1e3:1)*O);var P=m(M)(O),z=P.year,$=P.month,H=P.day,Q=P.hours,j=P.minutes,ie=P.seconds,ne=P.milliseconds,le=P.zone,he=P.week,K=new Date,X=H||(z||$?1:K.getDate()),te=z||K.getFullYear(),J=0;z&&!$||(J=$>0?$-1:K.getMonth());var se,ue=Q||0,Z=j||0,Se=ie||0,ce=ne||0;return le?new Date(Date.UTC(te,J,X,ue,Z,Se,ce+60*le.offset*1e3)):B?new Date(Date.UTC(te,J,X,ue,Z,Se,ce)):(se=new Date(te,J,X,ue,Z,Se,ce),he&&(se=F(se).week(he).toDate()),se)}catch{return new Date("")}}(C,A,T,v),this.init(),D&&D!==!0&&(this.$L=this.locale(D).$L),I&&C!=this.format(A)&&(this.$d=new Date("")),s={}}else if(A instanceof Array)for(var k=A.length,L=1;L<=k;L+=1){E[1]=A[L-1];var R=v.apply(this,E);if(R.isValid()){this.$d=R.$d,this.$L=R.$L,this.init();break}L===k&&(this.$d=new Date(""))}else b.call(this,w)}}})});var gue=Mi((YI,XI)=>{"use strict";(function(t,e){typeof YI=="object"&&typeof XI<"u"?XI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=e()})(YI,function(){"use strict";return function(t,e){var r=e.prototype,n=r.format;r.format=function(i){var a=this,s=this.$locale();if(!this.isValid())return n.bind(this)(i);var l=this.$utils(),u=(i||"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(h){switch(h){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return s.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return s.ordinal(a.week(),"W");case"w":case"ww":return l.s(a.week(),h==="w"?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return l.s(String(a.$H===0?24:a.$H),h==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return h}});return n.bind(this)(u)}}})});function Nue(t,e,r){let n=!0;for(;n;)n=!1,r.forEach(function(i){let a="^\\s*"+i+"\\s*$",s=new RegExp(a);t[0].match(s)&&(e[i]=!0,t.shift(1),n=!0)})}var xue,ho,bue,wue,Tue,yue,Gc,ZI,JI,eO,mb,gb,tO,rO,f6,E1,nO,kue,iO,yb,aO,sO,d6,jI,ize,aze,sze,oze,lze,cze,uze,hze,fze,dze,pze,mze,gze,yze,vze,xze,bze,wze,Tze,kze,Eze,Sze,Cze,Eue,Aze,_ze,Dze,Sue,Lze,KI,Cue,Aue,u6,k1,Rze,Nze,QI,h6,Gi,_ue,Mze,Cp,Ize,vue,Oze,Due,Pze,Lue,Bze,Fze,Rue,Mue=N(()=>{"use strict";xue=Sa(z0(),1),ho=Sa(R4(),1),bue=Sa(pue(),1),wue=Sa(mue(),1),Tue=Sa(gue(),1);vt();zt();ir();mi();ho.default.extend(bue.default);ho.default.extend(wue.default);ho.default.extend(Tue.default);yue={friday:5,saturday:6},Gc="",ZI="",eO="",mb=[],gb=[],tO=new Map,rO=[],f6=[],E1="",nO="",kue=["active","done","crit","milestone"],iO=[],yb=!1,aO=!1,sO="sunday",d6="saturday",jI=0,ize=o(function(){rO=[],f6=[],E1="",iO=[],u6=0,QI=void 0,h6=void 0,Gi=[],Gc="",ZI="",nO="",JI=void 0,eO="",mb=[],gb=[],yb=!1,aO=!1,jI=0,tO=new Map,Ar(),sO="sunday",d6="saturday"},"clear"),aze=o(function(t){ZI=t},"setAxisFormat"),sze=o(function(){return ZI},"getAxisFormat"),oze=o(function(t){JI=t},"setTickInterval"),lze=o(function(){return JI},"getTickInterval"),cze=o(function(t){eO=t},"setTodayMarker"),uze=o(function(){return eO},"getTodayMarker"),hze=o(function(t){Gc=t},"setDateFormat"),fze=o(function(){yb=!0},"enableInclusiveEndDates"),dze=o(function(){return yb},"endDatesAreInclusive"),pze=o(function(){aO=!0},"enableTopAxis"),mze=o(function(){return aO},"topAxisEnabled"),gze=o(function(t){nO=t},"setDisplayMode"),yze=o(function(){return nO},"getDisplayMode"),vze=o(function(){return Gc},"getDateFormat"),xze=o(function(t){mb=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),bze=o(function(){return mb},"getIncludes"),wze=o(function(t){gb=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),Tze=o(function(){return gb},"getExcludes"),kze=o(function(){return tO},"getLinks"),Eze=o(function(t){E1=t,rO.push(t)},"addSection"),Sze=o(function(){return rO},"getSections"),Cze=o(function(){let t=vue(),e=10,r=0;for(;!t&&r[\d\w- ]+)/.exec(r);if(i!==null){let s=null;for(let u of i.groups.ids.split(" ")){let h=Cp(u);h!==void 0&&(!s||h.endTime>s.endTime)&&(s=h)}if(s)return s.endTime;let l=new Date;return l.setHours(0,0,0,0),l}let a=(0,ho.default)(r,e.trim(),!0);if(a.isValid())return a.toDate();{Y.debug("Invalid date:"+r),Y.debug("With date format:"+e.trim());let s=new Date(r);if(s===void 0||isNaN(s.getTime())||s.getFullYear()<-1e4||s.getFullYear()>1e4)throw new Error("Invalid date:"+r);return s}},"getStartDate"),Cue=o(function(t){let e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return e!==null?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),Aue=o(function(t,e,r,n=!1){r=r.trim();let a=/^until\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let f=null;for(let p of a.groups.ids.split(" ")){let m=Cp(p);m!==void 0&&(!f||m.startTime{window.open(r,"_self")}),tO.set(n,r))}),Due(t,"clickable")},"setLink"),Due=o(function(t,e){t.split(",").forEach(function(r){let n=Cp(r);n!==void 0&&n.classes.push(e)})},"setClass"),Pze=o(function(t,e,r){if(me().securityLevel!=="loose"||e===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a{Gt.runFunc(e,...n)})},"setClickFun"),Lue=o(function(t,e){iO.push(function(){let r=document.querySelector(`[id="${t}"]`);r!==null&&r.addEventListener("click",function(){e()})},function(){let r=document.querySelector(`[id="${t}-text"]`);r!==null&&r.addEventListener("click",function(){e()})})},"pushFun"),Bze=o(function(t,e,r){t.split(",").forEach(function(n){Pze(n,e,r)}),Due(t,"clickable")},"setClickEvent"),Fze=o(function(t){iO.forEach(function(e){e(t)})},"bindFunctions"),Rue={getConfig:o(()=>me().gantt,"getConfig"),clear:ize,setDateFormat:hze,getDateFormat:vze,enableInclusiveEndDates:fze,endDatesAreInclusive:dze,enableTopAxis:pze,topAxisEnabled:mze,setAxisFormat:aze,getAxisFormat:sze,setTickInterval:oze,getTickInterval:lze,setTodayMarker:cze,getTodayMarker:uze,setAccTitle:Lr,getAccTitle:Rr,setDiagramTitle:$r,getDiagramTitle:Ir,setDisplayMode:gze,getDisplayMode:yze,setAccDescription:Nr,getAccDescription:Mr,addSection:Eze,getSections:Sze,getTasks:Cze,addTask:Mze,findTaskById:Cp,addTaskOrg:Ize,setIncludes:xze,getIncludes:bze,setExcludes:wze,getExcludes:Tze,setClickEvent:Bze,setLink:Oze,getLinks:kze,bindFunctions:Fze,parseDuration:Cue,isInvalidDate:Eue,setWeekday:Aze,getWeekday:_ze,setWeekend:Dze};o(Nue,"getTaskTags")});var p6,$ze,Iue,zze,Yu,Gze,Oue,Pue=N(()=>{"use strict";p6=Sa(R4(),1);vt();dr();gr();zt();Ei();$ze=o(function(){Y.debug("Something is calling, setConf, remove the call")},"setConf"),Iue={monday:Ch,tuesday:T5,wednesday:k5,thursday:oc,friday:E5,saturday:S5,sunday:yl},zze=o((t,e)=>{let r=[...t].map(()=>-1/0),n=[...t].sort((a,s)=>a.startTime-s.startTime||a.order-s.order),i=0;for(let a of n)for(let s=0;s=r[s]){r[s]=a.endTime,a.order=s+e,s>i&&(i=s);break}return i},"getMaxIntersections"),Gze=o(function(t,e,r,n){let i=me().gantt,a=me().securityLevel,s;a==="sandbox"&&(s=Ge("#i"+e));let l=a==="sandbox"?Ge(s.nodes()[0].contentDocument.body):Ge("body"),u=a==="sandbox"?s.nodes()[0].contentDocument:document,h=u.getElementById(e);Yu=h.parentElement.offsetWidth,Yu===void 0&&(Yu=1200),i.useWidth!==void 0&&(Yu=i.useWidth);let f=n.db.getTasks(),d=[];for(let S of f)d.push(S.type);d=A(d);let p={},m=2*i.topPadding;if(n.db.getDisplayMode()==="compact"||i.displayMode==="compact"){let S={};for(let I of f)S[I.section]===void 0?S[I.section]=[I]:S[I.section].push(I);let _=0;for(let I of Object.keys(S)){let D=zze(S[I],_)+1;_+=D,m+=D*(i.barHeight+i.barGap),p[I]=D}}else{m+=f.length*(i.barHeight+i.barGap);for(let S of d)p[S]=f.filter(_=>_.type===S).length}h.setAttribute("viewBox","0 0 "+Yu+" "+m);let g=l.select(`[id="${e}"]`),y=_5().domain([M3(f,function(S){return S.startTime}),N3(f,function(S){return S.endTime})]).rangeRound([0,Yu-i.leftPadding-i.rightPadding]);function v(S,_){let I=S.startTime,D=_.startTime,k=0;return I>D?k=1:Iz.order))].map(z=>S.find($=>$.order===z));g.append("g").selectAll("rect").data(M).enter().append("rect").attr("x",0).attr("y",function(z,$){return $=z.order,$*_+I-2}).attr("width",function(){return R-i.rightPadding/2}).attr("height",_).attr("class",function(z){for(let[$,H]of d.entries())if(z.type===H)return"section section"+$%i.numberSectionStyles;return"section section0"});let B=g.append("g").selectAll("rect").data(S).enter(),F=n.db.getLinks();if(B.append("rect").attr("id",function(z){return z.id}).attr("rx",3).attr("ry",3).attr("x",function(z){return z.milestone?y(z.startTime)+D+.5*(y(z.endTime)-y(z.startTime))-.5*k:y(z.startTime)+D}).attr("y",function(z,$){return $=z.order,$*_+I}).attr("width",function(z){return z.milestone?k:y(z.renderEndTime||z.endTime)-y(z.startTime)}).attr("height",k).attr("transform-origin",function(z,$){return $=z.order,(y(z.startTime)+D+.5*(y(z.endTime)-y(z.startTime))).toString()+"px "+($*_+I+.5*k).toString()+"px"}).attr("class",function(z){let $="task",H="";z.classes.length>0&&(H=z.classes.join(" "));let Q=0;for(let[ie,ne]of d.entries())z.type===ne&&(Q=ie%i.numberSectionStyles);let j="";return z.active?z.crit?j+=" activeCrit":j=" active":z.done?z.crit?j=" doneCrit":j=" done":z.crit&&(j+=" crit"),j.length===0&&(j=" task"),z.milestone&&(j=" milestone "+j),j+=Q,j+=" "+H,$+j}),B.append("text").attr("id",function(z){return z.id+"-text"}).text(function(z){return z.task}).attr("font-size",i.fontSize).attr("x",function(z){let $=y(z.startTime),H=y(z.renderEndTime||z.endTime);z.milestone&&($+=.5*(y(z.endTime)-y(z.startTime))-.5*k),z.milestone&&(H=$+k);let Q=this.getBBox().width;return Q>H-$?H+Q+1.5*i.leftPadding>R?$+D-5:H+D+5:(H-$)/2+$+D}).attr("y",function(z,$){return $=z.order,$*_+i.barHeight/2+(i.fontSize/2-2)+I}).attr("text-height",k).attr("class",function(z){let $=y(z.startTime),H=y(z.endTime);z.milestone&&(H=$+k);let Q=this.getBBox().width,j="";z.classes.length>0&&(j=z.classes.join(" "));let ie=0;for(let[le,he]of d.entries())z.type===he&&(ie=le%i.numberSectionStyles);let ne="";return z.active&&(z.crit?ne="activeCritText"+ie:ne="activeText"+ie),z.done?z.crit?ne=ne+" doneCritText"+ie:ne=ne+" doneText"+ie:z.crit&&(ne=ne+" critText"+ie),z.milestone&&(ne+=" milestoneText"),Q>H-$?H+Q+1.5*i.leftPadding>R?j+" taskTextOutsideLeft taskTextOutside"+ie+" "+ne:j+" taskTextOutsideRight taskTextOutside"+ie+" "+ne+" width-"+Q:j+" taskText taskText"+ie+" "+ne+" width-"+Q}),me().securityLevel==="sandbox"){let z;z=Ge("#i"+e);let $=z.nodes()[0].contentDocument;B.filter(function(H){return F.has(H.id)}).each(function(H){var Q=$.querySelector("#"+H.id),j=$.querySelector("#"+H.id+"-text");let ie=Q.parentNode;var ne=$.createElement("a");ne.setAttribute("xlink:href",F.get(H.id)),ne.setAttribute("target","_top"),ie.appendChild(ne),ne.appendChild(Q),ne.appendChild(j)})}}o(b,"drawRects");function w(S,_,I,D,k,L,R,O){if(R.length===0&&O.length===0)return;let M,B;for(let{startTime:Q,endTime:j}of L)(M===void 0||QB)&&(B=j);if(!M||!B)return;if((0,p6.default)(B).diff((0,p6.default)(M),"year")>5){Y.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let F=n.db.getDateFormat(),P=[],z=null,$=(0,p6.default)(M);for(;$.valueOf()<=B;)n.db.isInvalidDate($,F,R,O)?z?z.end=$:z={start:$,end:$}:z&&(P.push(z),z=null),$=$.add(1,"d");g.append("g").selectAll("rect").data(P).enter().append("rect").attr("id",function(Q){return"exclude-"+Q.start.format("YYYY-MM-DD")}).attr("x",function(Q){return y(Q.start)+I}).attr("y",i.gridLineStartPadding).attr("width",function(Q){let j=Q.end.add(1,"day");return y(j)-y(Q.start)}).attr("height",k-_-i.gridLineStartPadding).attr("transform-origin",function(Q,j){return(y(Q.start)+I+.5*(y(Q.end)-y(Q.start))).toString()+"px "+(j*S+.5*k).toString()+"px"}).attr("class","exclude-range")}o(w,"drawExcludeDays");function C(S,_,I,D){let k=bA(y).tickSize(-D+_+i.gridLineStartPadding).tickFormat(wd(n.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d")),R=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if(R!==null){let O=R[1],M=R[2],B=n.db.getWeekday()||i.weekday;switch(M){case"millisecond":k.ticks(ac.every(O));break;case"second":k.ticks(Ks.every(O));break;case"minute":k.ticks(vu.every(O));break;case"hour":k.ticks(xu.every(O));break;case"day":k.ticks(_o.every(O));break;case"week":k.ticks(Iue[B].every(O));break;case"month":k.ticks(bu.every(O));break}}if(g.append("g").attr("class","grid").attr("transform","translate("+S+", "+(D-50)+")").call(k).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),n.db.topAxisEnabled()||i.topAxis){let O=xA(y).tickSize(-D+_+i.gridLineStartPadding).tickFormat(wd(n.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));if(R!==null){let M=R[1],B=R[2],F=n.db.getWeekday()||i.weekday;switch(B){case"millisecond":O.ticks(ac.every(M));break;case"second":O.ticks(Ks.every(M));break;case"minute":O.ticks(vu.every(M));break;case"hour":O.ticks(xu.every(M));break;case"day":O.ticks(_o.every(M));break;case"week":O.ticks(Iue[F].every(M));break;case"month":O.ticks(bu.every(M));break}}g.append("g").attr("class","grid").attr("transform","translate("+S+", "+_+")").call(O).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(C,"makeGrid");function T(S,_){let I=0,D=Object.keys(p).map(k=>[k,p[k]]);g.append("g").selectAll("text").data(D).enter().append(function(k){let L=k[0].split(Ze.lineBreakRegex),R=-(L.length-1)/2,O=u.createElementNS("http://www.w3.org/2000/svg","text");O.setAttribute("dy",R+"em");for(let[M,B]of L.entries()){let F=u.createElementNS("http://www.w3.org/2000/svg","tspan");F.setAttribute("alignment-baseline","central"),F.setAttribute("x","10"),M>0&&F.setAttribute("dy","1em"),F.textContent=B,O.appendChild(F)}return O}).attr("x",10).attr("y",function(k,L){if(L>0)for(let R=0;R{"use strict";Vze=o(t=>` +`,"getStyles"),Nge=VKe});var Ige={};dr(Ige,{diagram:()=>UKe});var UKe,Oge=N(()=>{"use strict";Cge();pF();Rge();Mge();UKe={parser:Sge,db:N6,renderer:Lge,styles:Nge}});var mF,Fge,$ge=N(()=>{"use strict";mF=(function(){var t=o(function(D,_,O,M){for(O=O||{},M=D.length;M--;O[D[M]]=_);return O},"o"),e=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],r=[1,26],n=[1,27],i=[1,28],a=[1,29],s=[1,30],l=[1,31],u=[1,32],h=[1,33],f=[1,34],d=[1,9],p=[1,10],m=[1,11],g=[1,12],y=[1,13],v=[1,14],x=[1,15],b=[1,16],T=[1,19],S=[1,20],w=[1,21],k=[1,22],A=[1,23],C=[1,25],R=[1,35],I={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:o(function(_,O,M,P,B,F,G){var $=F.length-1;switch(B){case 1:return F[$-1];case 2:this.$=[];break;case 3:F[$-1].push(F[$]),this.$=F[$-1];break;case 4:case 5:this.$=F[$];break;case 6:case 7:this.$=[];break;case 8:P.setWeekday("monday");break;case 9:P.setWeekday("tuesday");break;case 10:P.setWeekday("wednesday");break;case 11:P.setWeekday("thursday");break;case 12:P.setWeekday("friday");break;case 13:P.setWeekday("saturday");break;case 14:P.setWeekday("sunday");break;case 15:P.setWeekend("friday");break;case 16:P.setWeekend("saturday");break;case 17:P.setDateFormat(F[$].substr(11)),this.$=F[$].substr(11);break;case 18:P.enableInclusiveEndDates(),this.$=F[$].substr(18);break;case 19:P.TopAxis(),this.$=F[$].substr(8);break;case 20:P.setAxisFormat(F[$].substr(11)),this.$=F[$].substr(11);break;case 21:P.setTickInterval(F[$].substr(13)),this.$=F[$].substr(13);break;case 22:P.setExcludes(F[$].substr(9)),this.$=F[$].substr(9);break;case 23:P.setIncludes(F[$].substr(9)),this.$=F[$].substr(9);break;case 24:P.setTodayMarker(F[$].substr(12)),this.$=F[$].substr(12);break;case 27:P.setDiagramTitle(F[$].substr(6)),this.$=F[$].substr(6);break;case 28:this.$=F[$].trim(),P.setAccTitle(this.$);break;case 29:case 30:this.$=F[$].trim(),P.setAccDescription(this.$);break;case 31:P.addSection(F[$].substr(8)),this.$=F[$].substr(8);break;case 33:P.addTask(F[$-1],F[$]),this.$="task";break;case 34:this.$=F[$-1],P.setClickEvent(F[$-1],F[$],null);break;case 35:this.$=F[$-2],P.setClickEvent(F[$-2],F[$-1],F[$]);break;case 36:this.$=F[$-2],P.setClickEvent(F[$-2],F[$-1],null),P.setLink(F[$-2],F[$]);break;case 37:this.$=F[$-3],P.setClickEvent(F[$-3],F[$-2],F[$-1]),P.setLink(F[$-3],F[$]);break;case 38:this.$=F[$-2],P.setClickEvent(F[$-2],F[$],null),P.setLink(F[$-2],F[$-1]);break;case 39:this.$=F[$-3],P.setClickEvent(F[$-3],F[$-1],F[$]),P.setLink(F[$-3],F[$-2]);break;case 40:this.$=F[$-1],P.setLink(F[$-1],F[$]);break;case 41:case 47:this.$=F[$-1]+" "+F[$];break;case 42:case 43:case 45:this.$=F[$-2]+" "+F[$-1]+" "+F[$];break;case 44:case 46:this.$=F[$-3]+" "+F[$-2]+" "+F[$-1]+" "+F[$];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:S,33:w,35:k,36:A,37:24,38:C,40:R},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:S,33:w,35:k,36:A,37:24,38:C,40:R},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:o(function(_,O){if(O.recoverable)this.trace(_);else{var M=new Error(_);throw M.hash=O,M}},"parseError"),parse:o(function(_){var O=this,M=[0],P=[],B=[null],F=[],G=this.table,$="",U=0,j=0,te=0,Y=2,oe=1,J=F.slice.call(arguments,1),ue=Object.create(this.lexer),re={yy:{}};for(var ee in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ee)&&(re.yy[ee]=this.yy[ee]);ue.setInput(_,re.yy),re.yy.lexer=ue,re.yy.parser=this,typeof ue.yylloc>"u"&&(ue.yylloc={});var Z=ue.yylloc;F.push(Z);var K=ue.options&&ue.options.ranges;typeof re.yy.parseError=="function"?this.parseError=re.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ae(Ce){M.length=M.length-2*Ce,B.length=B.length-Ce,F.length=F.length-Ce}o(ae,"popStack");function Q(){var Ce;return Ce=P.pop()||ue.lex()||oe,typeof Ce!="number"&&(Ce instanceof Array&&(P=Ce,Ce=P.pop()),Ce=O.symbols_[Ce]||Ce),Ce}o(Q,"lex");for(var de,ne,Te,q,Ve,pe,Be={},Ye,He,Le,Ie;;){if(Te=M[M.length-1],this.defaultActions[Te]?q=this.defaultActions[Te]:((de===null||typeof de>"u")&&(de=Q()),q=G[Te]&&G[Te][de]),typeof q>"u"||!q.length||!q[0]){var Ne="";Ie=[];for(Ye in G[Te])this.terminals_[Ye]&&Ye>Y&&Ie.push("'"+this.terminals_[Ye]+"'");ue.showPosition?Ne="Parse error on line "+(U+1)+`: +`+ue.showPosition()+` +Expecting `+Ie.join(", ")+", got '"+(this.terminals_[de]||de)+"'":Ne="Parse error on line "+(U+1)+": Unexpected "+(de==oe?"end of input":"'"+(this.terminals_[de]||de)+"'"),this.parseError(Ne,{text:ue.match,token:this.terminals_[de]||de,line:ue.yylineno,loc:Z,expected:Ie})}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Te+", token: "+de);switch(q[0]){case 1:M.push(de),B.push(ue.yytext),F.push(ue.yylloc),M.push(q[1]),de=null,ne?(de=ne,ne=null):(j=ue.yyleng,$=ue.yytext,U=ue.yylineno,Z=ue.yylloc,te>0&&te--);break;case 2:if(He=this.productions_[q[1]][1],Be.$=B[B.length-He],Be._$={first_line:F[F.length-(He||1)].first_line,last_line:F[F.length-1].last_line,first_column:F[F.length-(He||1)].first_column,last_column:F[F.length-1].last_column},K&&(Be._$.range=[F[F.length-(He||1)].range[0],F[F.length-1].range[1]]),pe=this.performAction.apply(Be,[$,j,U,re.yy,q[1],B,F].concat(J)),typeof pe<"u")return pe;He&&(M=M.slice(0,-1*He*2),B=B.slice(0,-1*He),F=F.slice(0,-1*He)),M.push(this.productions_[q[1]][0]),B.push(Be.$),F.push(Be._$),Le=G[M[M.length-2]][M[M.length-1]],M.push(Le);break;case 3:return!0}}return!0},"parse")},L=(function(){var D={EOF:1,parseError:o(function(O,M){if(this.yy.parser)this.yy.parser.parseError(O,M);else throw new Error(O)},"parseError"),setInput:o(function(_,O){return this.yy=O||this.yy||{},this._input=_,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var _=this._input[0];this.yytext+=_,this.yyleng++,this.offset++,this.match+=_,this.matched+=_;var O=_.match(/(?:\r\n?|\n).*/g);return O?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),_},"input"),unput:o(function(_){var O=_.length,M=_.split(/(?:\r\n?|\n)/g);this._input=_+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-O),this.offset-=O;var P=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),M.length-1&&(this.yylineno-=M.length-1);var B=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:M?(M.length===P.length?this.yylloc.first_column:0)+P[P.length-M.length].length-M[0].length:this.yylloc.first_column-O},this.options.ranges&&(this.yylloc.range=[B[0],B[0]+this.yyleng-O]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(_){this.unput(this.match.slice(_))},"less"),pastInput:o(function(){var _=this.matched.substr(0,this.matched.length-this.match.length);return(_.length>20?"...":"")+_.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var _=this.match;return _.length<20&&(_+=this._input.substr(0,20-_.length)),(_.substr(0,20)+(_.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var _=this.pastInput(),O=new Array(_.length+1).join("-");return _+this.upcomingInput()+` +`+O+"^"},"showPosition"),test_match:o(function(_,O){var M,P,B;if(this.options.backtrack_lexer&&(B={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(B.yylloc.range=this.yylloc.range.slice(0))),P=_[0].match(/(?:\r\n?|\n).*/g),P&&(this.yylineno+=P.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:P?P[P.length-1].length-P[P.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+_[0].length},this.yytext+=_[0],this.match+=_[0],this.matches=_,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(_[0].length),this.matched+=_[0],M=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),M)return M;if(this._backtrack){for(var F in B)this[F]=B[F];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var _,O,M,P;this._more||(this.yytext="",this.match="");for(var B=this._currentRules(),F=0;FO[0].length)){if(O=M,P=F,this.options.backtrack_lexer){if(_=this.test_match(M,B[F]),_!==!1)return _;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(_=this.test_match(O,B[P]),_!==!1?_:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var O=this.next();return O||this.lex()},"lex"),begin:o(function(O){this.conditionStack.push(O)},"begin"),popState:o(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:o(function(O){this.begin(O)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(O,M,P,B){var F=B;switch(P){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return D})();I.lexer=L;function E(){this.yy={}}return o(E,"Parser"),E.prototype=I,I.Parser=E,new E})();mF.parser=mF;Fge=mF});var zge=Da((gF,yF)=>{"use strict";(function(t,e){typeof gF=="object"&&typeof yF<"u"?yF.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_isoWeek=e()})(gF,(function(){"use strict";var t="day";return function(e,r,n){var i=o(function(l){return l.add(4-l.isoWeekday(),t)},"a"),a=r.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(l){if(!this.$utils().u(l))return this.add(7*(l-this.isoWeek()),t);var u,h,f,d,p=i(this),m=(u=this.isoWeekYear(),h=this.$u,f=(h?n.utc:n)().year(u).startOf("year"),d=4-f.isoWeekday(),f.isoWeekday()>4&&(d+=7),f.add(d,t));return p.diff(m,"week")+1},a.isoWeekday=function(l){return this.$utils().u(l)?this.day()||7:this.day(this.day()%7?l:l-7)};var s=a.startOf;a.startOf=function(l,u){var h=this.$utils(),f=!!h.u(u)||u;return h.p(l)==="isoweek"?f?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(l,u)}}}))});var Gge=Da((vF,xF)=>{"use strict";(function(t,e){typeof vF=="object"&&typeof xF<"u"?xF.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_customParseFormat=e()})(vF,(function(){"use strict";var t={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"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,n=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,s={},l=o(function(g){return(g=+g)+(g>68?1900:2e3)},"a"),u=o(function(g){return function(y){this[g]=+y}},"f"),h=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=(function(y){if(!y||y==="Z")return 0;var v=y.match(/([+-]|\d\d)/g),x=60*v[1]+(+v[2]||0);return x===0?0:v[0]==="+"?-x:x})(g)}],f=o(function(g){var y=s[g];return y&&(y.indexOf?y:y.s.concat(y.f))},"u"),d=o(function(g,y){var v,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,y))>-1){v=b>12;break}}else v=g===(y?"pm":"PM");return v},"d"),p={A:[a,function(g){this.afternoon=d(g,!1)}],a:[a,function(g){this.afternoon=d(g,!0)}],Q:[r,function(g){this.month=3*(g-1)+1}],S:[r,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[i,u("seconds")],ss:[i,u("seconds")],m:[i,u("minutes")],mm:[i,u("minutes")],H:[i,u("hours")],h:[i,u("hours")],HH:[i,u("hours")],hh:[i,u("hours")],D:[i,u("day")],DD:[n,u("day")],Do:[a,function(g){var y=s.ordinal,v=g.match(/\d+/);if(this.day=v[0],y)for(var x=1;x<=31;x+=1)y(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[i,u("week")],ww:[n,u("week")],M:[i,u("month")],MM:[n,u("month")],MMM:[a,function(g){var y=f("months"),v=(f("monthsShort")||y.map((function(x){return x.slice(0,3)}))).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var y=f("months").indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[n,function(g){this.year=l(g)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function m(g){var y,v;y=g,v=s&&s.formats;for(var x=(g=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(C,R,I){var L=I&&I.toUpperCase();return R||v[I]||t[I]||v[L].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(E,D,_){return D||_.slice(1)}))}))).match(e),b=x.length,T=0;T-1)return new Date((M==="X"?1e3:1)*O);var F=m(M)(O),G=F.year,$=F.month,U=F.day,j=F.hours,te=F.minutes,Y=F.seconds,oe=F.milliseconds,J=F.zone,ue=F.week,re=new Date,ee=U||(G||$?1:re.getDate()),Z=G||re.getFullYear(),K=0;G&&!$||(K=$>0?$-1:re.getMonth());var ae,Q=j||0,de=te||0,ne=Y||0,Te=oe||0;return J?new Date(Date.UTC(Z,K,ee,Q,de,ne,Te+60*J.offset*1e3)):P?new Date(Date.UTC(Z,K,ee,Q,de,ne,Te)):(ae=new Date(Z,K,ee,Q,de,ne,Te),ue&&(ae=B(ae).week(ue).toDate()),ae)}catch{return new Date("")}})(S,A,w,v),this.init(),L&&L!==!0&&(this.$L=this.locale(L).$L),I&&S!=this.format(A)&&(this.$d=new Date("")),s={}}else if(A instanceof Array)for(var E=A.length,D=1;D<=E;D+=1){k[1]=A[D-1];var _=v.apply(this,k);if(_.isValid()){this.$d=_.$d,this.$L=_.$L,this.init();break}D===E&&(this.$d=new Date(""))}else b.call(this,T)}}}))});var Vge=Da((bF,TF)=>{"use strict";(function(t,e){typeof bF=="object"&&typeof TF<"u"?TF.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=e()})(bF,(function(){"use strict";return function(t,e){var r=e.prototype,n=r.format;r.format=function(i){var a=this,s=this.$locale();if(!this.isValid())return n.bind(this)(i);var l=this.$utils(),u=(i||"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(h){switch(h){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return s.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return s.ordinal(a.week(),"W");case"w":case"ww":return l.s(a.week(),h==="w"?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return l.s(String(a.$H===0?24:a.$H),h==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return h}}));return n.bind(this)(u)}}}))});function i1e(t,e,r){let n=!0;for(;n;)n=!1,r.forEach(function(i){let a="^\\s*"+i+"\\s*$",s=new RegExp(a);t[0].match(s)&&(e[i]=!0,t.shift(1),n=!0)})}var qge,xo,Wge,Yge,Xge,Uge,eu,SF,CF,AF,d4,p4,_F,DF,B6,ty,LF,jge,RF,m4,NF,MF,F6,wF,YKe,XKe,jKe,KKe,QKe,ZKe,JKe,eQe,tQe,rQe,nQe,iQe,aQe,sQe,oQe,lQe,cQe,uQe,hQe,fQe,dQe,pQe,mQe,Kge,gQe,yQe,vQe,Qge,xQe,kF,Zge,Jge,O6,ey,bQe,TQe,EF,P6,Vi,e1e,wQe,a0,kQe,Hge,EQe,t1e,SQe,r1e,CQe,AQe,n1e,a1e=N(()=>{"use strict";qge=ja(tm(),1),xo=ja(X4(),1),Wge=ja(zge(),1),Yge=ja(Gge(),1),Xge=ja(Vge(),1);pt();Xt();tr();ci();xo.default.extend(Wge.default);xo.default.extend(Yge.default);xo.default.extend(Xge.default);Uge={friday:5,saturday:6},eu="",SF="",AF="",d4=[],p4=[],_F=new Map,DF=[],B6=[],ty="",LF="",jge=["active","done","crit","milestone","vert"],RF=[],m4=!1,NF=!1,MF="sunday",F6="saturday",wF=0,YKe=o(function(){DF=[],B6=[],ty="",RF=[],O6=0,EF=void 0,P6=void 0,Vi=[],eu="",SF="",LF="",CF=void 0,AF="",d4=[],p4=[],m4=!1,NF=!1,wF=0,_F=new Map,Sr(),MF="sunday",F6="saturday"},"clear"),XKe=o(function(t){SF=t},"setAxisFormat"),jKe=o(function(){return SF},"getAxisFormat"),KKe=o(function(t){CF=t},"setTickInterval"),QKe=o(function(){return CF},"getTickInterval"),ZKe=o(function(t){AF=t},"setTodayMarker"),JKe=o(function(){return AF},"getTodayMarker"),eQe=o(function(t){eu=t},"setDateFormat"),tQe=o(function(){m4=!0},"enableInclusiveEndDates"),rQe=o(function(){return m4},"endDatesAreInclusive"),nQe=o(function(){NF=!0},"enableTopAxis"),iQe=o(function(){return NF},"topAxisEnabled"),aQe=o(function(t){LF=t},"setDisplayMode"),sQe=o(function(){return LF},"getDisplayMode"),oQe=o(function(){return eu},"getDateFormat"),lQe=o(function(t){d4=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),cQe=o(function(){return d4},"getIncludes"),uQe=o(function(t){p4=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),hQe=o(function(){return p4},"getExcludes"),fQe=o(function(){return _F},"getLinks"),dQe=o(function(t){ty=t,DF.push(t)},"addSection"),pQe=o(function(){return DF},"getSections"),mQe=o(function(){let t=Hge(),e=10,r=0;for(;!t&&r[\d\w- ]+)/.exec(r);if(i!==null){let s=null;for(let u of i.groups.ids.split(" ")){let h=a0(u);h!==void 0&&(!s||h.endTime>s.endTime)&&(s=h)}if(s)return s.endTime;let l=new Date;return l.setHours(0,0,0,0),l}let a=(0,xo.default)(r,e.trim(),!0);if(a.isValid())return a.toDate();{X.debug("Invalid date:"+r),X.debug("With date format:"+e.trim());let s=new Date(r);if(s===void 0||isNaN(s.getTime())||s.getFullYear()<-1e4||s.getFullYear()>1e4)throw new Error("Invalid date:"+r);return s}},"getStartDate"),Zge=o(function(t){let e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return e!==null?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),Jge=o(function(t,e,r,n=!1){r=r.trim();let a=/^until\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let f=null;for(let p of a.groups.ids.split(" ")){let m=a0(p);m!==void 0&&(!f||m.startTime{window.open(r,"_self")}),_F.set(n,r))}),t1e(t,"clickable")},"setLink"),t1e=o(function(t,e){t.split(",").forEach(function(r){let n=a0(r);n!==void 0&&n.classes.push(e)})},"setClass"),SQe=o(function(t,e,r){if(ge().securityLevel!=="loose"||e===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a{qt.runFunc(e,...n)})},"setClickFun"),r1e=o(function(t,e){RF.push(function(){let r=document.querySelector(`[id="${t}"]`);r!==null&&r.addEventListener("click",function(){e()})},function(){let r=document.querySelector(`[id="${t}-text"]`);r!==null&&r.addEventListener("click",function(){e()})})},"pushFun"),CQe=o(function(t,e,r){t.split(",").forEach(function(n){SQe(n,e,r)}),t1e(t,"clickable")},"setClickEvent"),AQe=o(function(t){RF.forEach(function(e){e(t)})},"bindFunctions"),n1e={getConfig:o(()=>ge().gantt,"getConfig"),clear:YKe,setDateFormat:eQe,getDateFormat:oQe,enableInclusiveEndDates:tQe,endDatesAreInclusive:rQe,enableTopAxis:nQe,topAxisEnabled:iQe,setAxisFormat:XKe,getAxisFormat:jKe,setTickInterval:KKe,getTickInterval:QKe,setTodayMarker:ZKe,getTodayMarker:JKe,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,setDisplayMode:aQe,getDisplayMode:sQe,setAccDescription:Ir,getAccDescription:Or,addSection:dQe,getSections:pQe,getTasks:mQe,addTask:wQe,findTaskById:a0,addTaskOrg:kQe,setIncludes:lQe,getIncludes:cQe,setExcludes:uQe,getExcludes:hQe,setClickEvent:CQe,setLink:EQe,getLinks:fQe,bindFunctions:AQe,parseDuration:Zge,isInvalidDate:Kge,setWeekday:gQe,getWeekday:yQe,setWeekend:vQe};o(i1e,"getTaskTags")});var $6,_Qe,s1e,DQe,ah,LQe,o1e,l1e=N(()=>{"use strict";$6=ja(X4(),1);pt();yr();gr();Xt();Ei();_Qe=o(function(){X.debug("Something is calling, setConf, remove the call")},"setConf"),s1e={monday:Ih,tuesday:P5,wednesday:B5,thursday:fc,friday:F5,saturday:$5,sunday:wl},DQe=o((t,e)=>{let r=[...t].map(()=>-1/0),n=[...t].sort((a,s)=>a.startTime-s.startTime||a.order-s.order),i=0;for(let a of n)for(let s=0;s=r[s]){r[s]=a.endTime,a.order=s+e,s>i&&(i=s);break}return i},"getMaxIntersections"),LQe=o(function(t,e,r,n){let i=ge().gantt,a=ge().securityLevel,s;a==="sandbox"&&(s=qe("#i"+e));let l=a==="sandbox"?qe(s.nodes()[0].contentDocument.body):qe("body"),u=a==="sandbox"?s.nodes()[0].contentDocument:document,h=u.getElementById(e);ah=h.parentElement.offsetWidth,ah===void 0&&(ah=1200),i.useWidth!==void 0&&(ah=i.useWidth);let f=n.db.getTasks(),d=[];for(let C of f)d.push(C.type);d=A(d);let p={},m=2*i.topPadding;if(n.db.getDisplayMode()==="compact"||i.displayMode==="compact"){let C={};for(let I of f)C[I.section]===void 0?C[I.section]=[I]:C[I.section].push(I);let R=0;for(let I of Object.keys(C)){let L=DQe(C[I],R)+1;R+=L,m+=L*(i.barHeight+i.barGap),p[I]=L}}else{m+=f.length*(i.barHeight+i.barGap);for(let C of d)p[C]=f.filter(R=>R.type===C).length}h.setAttribute("viewBox","0 0 "+ah+" "+m);let g=l.select(`[id="${e}"]`),y=V5().domain([Y3(f,function(C){return C.startTime}),W3(f,function(C){return C.endTime})]).rangeRound([0,ah-i.leftPadding-i.rightPadding]);function v(C,R){let I=C.startTime,L=R.startTime,E=0;return I>L?E=1:IG.vert===$.vert?0:G.vert?1:-1);let M=[...new Set(C.map(G=>G.order))].map(G=>C.find($=>$.order===G));g.append("g").selectAll("rect").data(M).enter().append("rect").attr("x",0).attr("y",function(G,$){return $=G.order,$*R+I-2}).attr("width",function(){return _-i.rightPadding/2}).attr("height",R).attr("class",function(G){for(let[$,U]of d.entries())if(G.type===U)return"section section"+$%i.numberSectionStyles;return"section section0"}).enter();let P=g.append("g").selectAll("rect").data(C).enter(),B=n.db.getLinks();if(P.append("rect").attr("id",function(G){return G.id}).attr("rx",3).attr("ry",3).attr("x",function(G){return G.milestone?y(G.startTime)+L+.5*(y(G.endTime)-y(G.startTime))-.5*E:y(G.startTime)+L}).attr("y",function(G,$){return $=G.order,G.vert?i.gridLineStartPadding:$*R+I}).attr("width",function(G){return G.milestone?E:G.vert?.08*E:y(G.renderEndTime||G.endTime)-y(G.startTime)}).attr("height",function(G){return G.vert?f.length*(i.barHeight+i.barGap)+i.barHeight*2:E}).attr("transform-origin",function(G,$){return $=G.order,(y(G.startTime)+L+.5*(y(G.endTime)-y(G.startTime))).toString()+"px "+($*R+I+.5*E).toString()+"px"}).attr("class",function(G){let $="task",U="";G.classes.length>0&&(U=G.classes.join(" "));let j=0;for(let[Y,oe]of d.entries())G.type===oe&&(j=Y%i.numberSectionStyles);let te="";return G.active?G.crit?te+=" activeCrit":te=" active":G.done?G.crit?te=" doneCrit":te=" done":G.crit&&(te+=" crit"),te.length===0&&(te=" task"),G.milestone&&(te=" milestone "+te),G.vert&&(te=" vert "+te),te+=j,te+=" "+U,$+te}),P.append("text").attr("id",function(G){return G.id+"-text"}).text(function(G){return G.task}).attr("font-size",i.fontSize).attr("x",function(G){let $=y(G.startTime),U=y(G.renderEndTime||G.endTime);if(G.milestone&&($+=.5*(y(G.endTime)-y(G.startTime))-.5*E,U=$+E),G.vert)return y(G.startTime)+L;let j=this.getBBox().width;return j>U-$?U+j+1.5*i.leftPadding>_?$+L-5:U+L+5:(U-$)/2+$+L}).attr("y",function(G,$){return G.vert?i.gridLineStartPadding+f.length*(i.barHeight+i.barGap)+60:($=G.order,$*R+i.barHeight/2+(i.fontSize/2-2)+I)}).attr("text-height",E).attr("class",function(G){let $=y(G.startTime),U=y(G.endTime);G.milestone&&(U=$+E);let j=this.getBBox().width,te="";G.classes.length>0&&(te=G.classes.join(" "));let Y=0;for(let[J,ue]of d.entries())G.type===ue&&(Y=J%i.numberSectionStyles);let oe="";return G.active&&(G.crit?oe="activeCritText"+Y:oe="activeText"+Y),G.done?G.crit?oe=oe+" doneCritText"+Y:oe=oe+" doneText"+Y:G.crit&&(oe=oe+" critText"+Y),G.milestone&&(oe+=" milestoneText"),G.vert&&(oe+=" vertText"),j>U-$?U+j+1.5*i.leftPadding>_?te+" taskTextOutsideLeft taskTextOutside"+Y+" "+oe:te+" taskTextOutsideRight taskTextOutside"+Y+" "+oe+" width-"+j:te+" taskText taskText"+Y+" "+oe+" width-"+j}),ge().securityLevel==="sandbox"){let G;G=qe("#i"+e);let $=G.nodes()[0].contentDocument;P.filter(function(U){return B.has(U.id)}).each(function(U){var j=$.querySelector("#"+U.id),te=$.querySelector("#"+U.id+"-text");let Y=j.parentNode;var oe=$.createElement("a");oe.setAttribute("xlink:href",B.get(U.id)),oe.setAttribute("target","_top"),Y.appendChild(oe),oe.appendChild(j),oe.appendChild(te)})}}o(b,"drawRects");function T(C,R,I,L,E,D,_,O){if(_.length===0&&O.length===0)return;let M,P;for(let{startTime:j,endTime:te}of D)(M===void 0||jP)&&(P=te);if(!M||!P)return;if((0,$6.default)(P).diff((0,$6.default)(M),"year")>5){X.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let B=n.db.getDateFormat(),F=[],G=null,$=(0,$6.default)(M);for(;$.valueOf()<=P;)n.db.isInvalidDate($,B,_,O)?G?G.end=$:G={start:$,end:$}:G&&(F.push(G),G=null),$=$.add(1,"d");g.append("g").selectAll("rect").data(F).enter().append("rect").attr("id",j=>"exclude-"+j.start.format("YYYY-MM-DD")).attr("x",j=>y(j.start.startOf("day"))+I).attr("y",i.gridLineStartPadding).attr("width",j=>y(j.end.endOf("day"))-y(j.start.startOf("day"))).attr("height",E-R-i.gridLineStartPadding).attr("transform-origin",function(j,te){return(y(j.start)+I+.5*(y(j.end)-y(j.start))).toString()+"px "+(te*C+.5*E).toString()+"px"}).attr("class","exclude-range")}o(T,"drawExcludeDays");function S(C,R,I,L){let E=n.db.getDateFormat(),D=n.db.getAxisFormat(),_;D?_=D:E==="D"?_="%d":_=i.axisFormat??"%Y-%m-%d";let O=QA(y).tickSize(-L+R+i.gridLineStartPadding).tickFormat(Pd(_)),P=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if(P!==null){let B=P[1],F=P[2],G=n.db.getWeekday()||i.weekday;switch(F){case"millisecond":O.ticks(uc.every(B));break;case"second":O.ticks(io.every(B));break;case"minute":O.ticks(ku.every(B));break;case"hour":O.ticks(Eu.every(B));break;case"day":O.ticks(Ro.every(B));break;case"week":O.ticks(s1e[G].every(B));break;case"month":O.ticks(Su.every(B));break}}if(g.append("g").attr("class","grid").attr("transform","translate("+C+", "+(L-50)+")").call(O).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),n.db.topAxisEnabled()||i.topAxis){let B=KA(y).tickSize(-L+R+i.gridLineStartPadding).tickFormat(Pd(_));if(P!==null){let F=P[1],G=P[2],$=n.db.getWeekday()||i.weekday;switch(G){case"millisecond":B.ticks(uc.every(F));break;case"second":B.ticks(io.every(F));break;case"minute":B.ticks(ku.every(F));break;case"hour":B.ticks(Eu.every(F));break;case"day":B.ticks(Ro.every(F));break;case"week":B.ticks(s1e[$].every(F));break;case"month":B.ticks(Su.every(F));break}}g.append("g").attr("class","grid").attr("transform","translate("+C+", "+R+")").call(B).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(S,"makeGrid");function w(C,R){let I=0,L=Object.keys(p).map(E=>[E,p[E]]);g.append("g").selectAll("text").data(L).enter().append(function(E){let D=E[0].split(tt.lineBreakRegex),_=-(D.length-1)/2,O=u.createElementNS("http://www.w3.org/2000/svg","text");O.setAttribute("dy",_+"em");for(let[M,P]of D.entries()){let B=u.createElementNS("http://www.w3.org/2000/svg","tspan");B.setAttribute("alignment-baseline","central"),B.setAttribute("x","10"),M>0&&B.setAttribute("dy","1em"),B.textContent=P,O.appendChild(B)}return O}).attr("x",10).attr("y",function(E,D){if(D>0)for(let _=0;_{"use strict";RQe=o(t=>` .mermaid-main-font { font-family: ${t.fontFamily}; } @@ -1120,6 +1498,16 @@ Expecting `+Ie.join(", ")+", got '"+(this.terminals_[Z]||Z)+"'":be="Parse error fill: ${t.taskTextDarkColor} !important; } + .vert { + stroke: ${t.vertLineColor}; + } + + .vertText { + font-size: 15px; + text-anchor: middle; + fill: ${t.vertLineColor} !important; + } + .activeCritText0, .activeCritText1, .activeCritText2, @@ -1133,8 +1521,8 @@ Expecting `+Ie.join(", ")+", got '"+(this.terminals_[Z]||Z)+"'":be="Parse error fill: ${t.titleColor||t.textColor}; font-family: ${t.fontFamily}; } -`,"getStyles"),Bue=Vze});var $ue={};hr($ue,{diagram:()=>Uze});var Uze,zue=N(()=>{"use strict";due();Mue();Pue();Fue();Uze={parser:fue,db:Rue,renderer:Oue,styles:Bue}});var Uue,Hue=N(()=>{"use strict";kp();vt();Uue={parse:o(async t=>{let e=await uo("info",t);Y.debug(e)},"parse")}});var vb,oO=N(()=>{vb={name:"mermaid",version:"11.6.0",description:"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",type:"module",module:"./dist/mermaid.core.mjs",types:"./dist/mermaid.d.ts",exports:{".":{types:"./dist/mermaid.d.ts",import:"./dist/mermaid.core.mjs",default:"./dist/mermaid.core.mjs"},"./*":"./*"},keywords:["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph","mindmap","packet diagram","c4 diagram","er diagram","pie chart","pie diagram","quadrant chart","requirement diagram","graph"],scripts:{clean:"rimraf dist",dev:"pnpm -w dev","docs:code":"typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup","docs:build":"rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts","docs:verify":"pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify","docs:pre:vitepress":"pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts","docs:build:vitepress":"pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing","docs:dev":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:dev:docker":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:serve":"pnpm docs:build:vitepress && vitepress serve src/vitepress","docs:spellcheck":'cspell "src/docs/**/*.md"',"docs:release-version":"tsx scripts/update-release-version.mts","docs:verify-version":"tsx scripts/update-release-version.mts --verify","types:build-config":"tsx scripts/create-types-from-json-schema.mts","types:verify-config":"tsx scripts/create-types-from-json-schema.mts --verify",checkCircle:"npx madge --circular ./src",prepublishOnly:"pnpm docs:verify-version"},repository:{type:"git",url:"https://github.com/mermaid-js/mermaid"},author:"Knut Sveidqvist",license:"MIT",standard:{ignore:["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],globals:["page"]},dependencies:{"@braintree/sanitize-url":"^7.0.4","@iconify/utils":"^2.1.33","@mermaid-js/parser":"workspace:^","@types/d3":"^7.4.3",cytoscape:"^3.29.3","cytoscape-cose-bilkent":"^4.1.0","cytoscape-fcose":"^2.2.0",d3:"^7.9.0","d3-sankey":"^0.12.3","dagre-d3-es":"7.0.11",dayjs:"^1.11.13",dompurify:"^3.2.4",katex:"^0.16.9",khroma:"^2.1.0","lodash-es":"^4.17.21",marked:"^15.0.7",roughjs:"^4.6.6",stylis:"^4.3.6","ts-dedent":"^2.2.0",uuid:"^11.1.0"},devDependencies:{"@adobe/jsonschema2md":"^8.0.2","@iconify/types":"^2.0.0","@types/cytoscape":"^3.21.9","@types/cytoscape-fcose":"^2.2.4","@types/d3-sankey":"^0.12.4","@types/d3-scale":"^4.0.9","@types/d3-scale-chromatic":"^3.1.0","@types/d3-selection":"^3.0.11","@types/d3-shape":"^3.1.7","@types/jsdom":"^21.1.7","@types/katex":"^0.16.7","@types/lodash-es":"^4.17.12","@types/micromatch":"^4.0.9","@types/stylis":"^4.2.7","@types/uuid":"^10.0.0",ajv:"^8.17.1",chokidar:"^4.0.3",concurrently:"^9.1.2","csstree-validator":"^4.0.1",globby:"^14.0.2",jison:"^0.4.18","js-base64":"^3.7.7",jsdom:"^26.0.0","json-schema-to-typescript":"^15.0.4",micromatch:"^4.0.8","path-browserify":"^1.0.1",prettier:"^3.5.2",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1",rimraf:"^6.0.1","start-server-and-test":"^2.0.10","type-fest":"^4.35.0",typedoc:"^0.27.8","typedoc-plugin-markdown":"^4.4.2",typescript:"~5.7.3","unist-util-flatmap":"^1.0.0","unist-util-visit":"^5.0.0",vitepress:"^1.0.2","vitepress-plugin-search":"1.0.4-alpha.22"},files:["dist/","README.md"],publishConfig:{access:"public"}}});var Xze,jze,Wue,que=N(()=>{"use strict";oO();Xze={version:vb.version},jze=o(()=>Xze.version,"getVersion"),Wue={getVersion:jze}});var sa,Vc=N(()=>{"use strict";dr();zt();sa=o(t=>{let{securityLevel:e}=me(),r=Ge("body");if(e==="sandbox"){let a=Ge(`#i${t}`).node()?.contentDocument??document;r=Ge(a.body)}return r.select(`#${t}`)},"selectSvgElement")});var Kze,Yue,Xue=N(()=>{"use strict";vt();Vc();Ei();Kze=o((t,e,r)=>{Y.debug(`rendering info diagram -`+t);let n=sa(e);vn(n,100,400,!0),n.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${r}`)},"draw"),Yue={draw:Kze}});var jue={};hr(jue,{diagram:()=>Qze});var Qze,Kue=N(()=>{"use strict";Hue();que();Xue();Qze={parser:Uue,db:Wue,renderer:Yue}});var Jue,lO,m6,cO,eGe,tGe,rGe,nGe,iGe,aGe,sGe,g6,uO=N(()=>{"use strict";vt();mi();Ya();Jue=or.pie,lO={sections:new Map,showData:!1,config:Jue},m6=lO.sections,cO=lO.showData,eGe=structuredClone(Jue),tGe=o(()=>structuredClone(eGe),"getConfig"),rGe=o(()=>{m6=new Map,cO=lO.showData,Ar()},"clear"),nGe=o(({label:t,value:e})=>{m6.has(t)||(m6.set(t,e),Y.debug(`added new section: ${t}, with value: ${e}`))},"addSection"),iGe=o(()=>m6,"getSections"),aGe=o(t=>{cO=t},"setShowData"),sGe=o(()=>cO,"getShowData"),g6={getConfig:tGe,clear:rGe,setDiagramTitle:$r,getDiagramTitle:Ir,setAccTitle:Lr,getAccTitle:Rr,setAccDescription:Nr,getAccDescription:Mr,addSection:nGe,getSections:iGe,setShowData:aGe,getShowData:sGe}});var oGe,ehe,the=N(()=>{"use strict";kp();vt();T1();uO();oGe=o((t,e)=>{$c(t,e),e.setShowData(t.showData),t.sections.map(e.addSection)},"populateDb"),ehe={parse:o(async t=>{let e=await uo("pie",t);Y.debug(e),oGe(e,g6)},"parse")}});var lGe,rhe,nhe=N(()=>{"use strict";lGe=o(t=>` +`,"getStyles"),c1e=RQe});var h1e={};dr(h1e,{diagram:()=>NQe});var NQe,f1e=N(()=>{"use strict";$ge();a1e();l1e();u1e();NQe={parser:Fge,db:n1e,renderer:o1e,styles:c1e}});var m1e,g1e=N(()=>{"use strict";Uf();pt();m1e={parse:o(async t=>{let e=await bs("info",t);X.debug(e)},"parse")}});var g4,IF=N(()=>{g4={name:"mermaid",version:"11.12.0",description:"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",type:"module",module:"./dist/mermaid.core.mjs",types:"./dist/mermaid.d.ts",exports:{".":{types:"./dist/mermaid.d.ts",import:"./dist/mermaid.core.mjs",default:"./dist/mermaid.core.mjs"},"./*":"./*"},keywords:["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph","mindmap","packet diagram","c4 diagram","er diagram","pie chart","pie diagram","quadrant chart","requirement diagram","graph"],scripts:{clean:"rimraf dist",dev:"pnpm -w dev","docs:code":"typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup","docs:build":"rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts","docs:verify":"pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify","docs:pre:vitepress":"pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts","docs:build:vitepress":"pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing","docs:dev":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:dev:docker":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:serve":"pnpm docs:build:vitepress && vitepress serve src/vitepress","docs:spellcheck":'cspell "src/docs/**/*.md"',"docs:release-version":"tsx scripts/update-release-version.mts","docs:verify-version":"tsx scripts/update-release-version.mts --verify","types:build-config":"tsx scripts/create-types-from-json-schema.mts","types:verify-config":"tsx scripts/create-types-from-json-schema.mts --verify",checkCircle:"npx madge --circular ./src",prepublishOnly:"pnpm docs:verify-version"},repository:{type:"git",url:"https://github.com/mermaid-js/mermaid"},author:"Knut Sveidqvist",license:"MIT",standard:{ignore:["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],globals:["page"]},dependencies:{"@braintree/sanitize-url":"^7.1.1","@iconify/utils":"^3.0.1","@mermaid-js/parser":"workspace:^","@types/d3":"^7.4.3",cytoscape:"^3.29.3","cytoscape-cose-bilkent":"^4.1.0","cytoscape-fcose":"^2.2.0",d3:"^7.9.0","d3-sankey":"^0.12.3","dagre-d3-es":"7.0.11",dayjs:"^1.11.18",dompurify:"^3.2.5",katex:"^0.16.22",khroma:"^2.1.0","lodash-es":"^4.17.21",marked:"^16.2.1",roughjs:"^4.6.6",stylis:"^4.3.6","ts-dedent":"^2.2.0",uuid:"^11.1.0"},devDependencies:{"@adobe/jsonschema2md":"^8.0.5","@iconify/types":"^2.0.0","@types/cytoscape":"^3.21.9","@types/cytoscape-fcose":"^2.2.4","@types/d3-sankey":"^0.12.4","@types/d3-scale":"^4.0.9","@types/d3-scale-chromatic":"^3.1.0","@types/d3-selection":"^3.0.11","@types/d3-shape":"^3.1.7","@types/jsdom":"^21.1.7","@types/katex":"^0.16.7","@types/lodash-es":"^4.17.12","@types/micromatch":"^4.0.9","@types/stylis":"^4.2.7","@types/uuid":"^10.0.0",ajv:"^8.17.1",canvas:"^3.1.2",chokidar:"3.6.0",concurrently:"^9.1.2","csstree-validator":"^4.0.1",globby:"^14.1.0",jison:"^0.4.18","js-base64":"^3.7.8",jsdom:"^26.1.0","json-schema-to-typescript":"^15.0.4",micromatch:"^4.0.8","path-browserify":"^1.0.1",prettier:"^3.5.3",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1",rimraf:"^6.0.1","start-server-and-test":"^2.0.13","type-fest":"^4.35.0",typedoc:"^0.28.12","typedoc-plugin-markdown":"^4.8.1",typescript:"~5.7.3","unist-util-flatmap":"^1.0.0","unist-util-visit":"^5.0.0",vitepress:"^1.6.4","vitepress-plugin-search":"1.0.4-alpha.22"},files:["dist/","README.md"],publishConfig:{access:"public"}}});var BQe,FQe,y1e,v1e=N(()=>{"use strict";IF();BQe={version:g4.version+""},FQe=o(()=>BQe.version,"getVersion"),y1e={getVersion:FQe}});var aa,tu=N(()=>{"use strict";yr();Xt();aa=o(t=>{let{securityLevel:e}=ge(),r=qe("body");if(e==="sandbox"){let a=qe(`#i${t}`).node()?.contentDocument??document;r=qe(a.body)}return r.select(`#${t}`)},"selectSvgElement")});var $Qe,x1e,b1e=N(()=>{"use strict";pt();tu();Ei();$Qe=o((t,e,r)=>{X.debug(`rendering info diagram +`+t);let n=aa(e);mn(n,100,400,!0),n.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${r}`)},"draw"),x1e={draw:$Qe}});var T1e={};dr(T1e,{diagram:()=>zQe});var zQe,w1e=N(()=>{"use strict";g1e();v1e();b1e();zQe={parser:m1e,db:y1e,renderer:x1e}});var S1e,OF,z6,PF,UQe,HQe,qQe,WQe,YQe,XQe,jQe,G6,BF=N(()=>{"use strict";pt();ci();La();S1e=ur.pie,OF={sections:new Map,showData:!1,config:S1e},z6=OF.sections,PF=OF.showData,UQe=structuredClone(S1e),HQe=o(()=>structuredClone(UQe),"getConfig"),qQe=o(()=>{z6=new Map,PF=OF.showData,Sr()},"clear"),WQe=o(({label:t,value:e})=>{if(e<0)throw new Error(`"${t}" has invalid value: ${e}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);z6.has(t)||(z6.set(t,e),X.debug(`added new section: ${t}, with value: ${e}`))},"addSection"),YQe=o(()=>z6,"getSections"),XQe=o(t=>{PF=t},"setShowData"),jQe=o(()=>PF,"getShowData"),G6={getConfig:HQe,clear:qQe,setDiagramTitle:$r,getDiagramTitle:Pr,setAccTitle:Rr,getAccTitle:Mr,setAccDescription:Ir,getAccDescription:Or,addSection:WQe,getSections:YQe,setShowData:XQe,getShowData:jQe}});var KQe,C1e,A1e=N(()=>{"use strict";Uf();pt();r0();BF();KQe=o((t,e)=>{nl(t,e),e.setShowData(t.showData),t.sections.map(e.addSection)},"populateDb"),C1e={parse:o(async t=>{let e=await bs("pie",t);X.debug(e),KQe(e,G6)},"parse")}});var QQe,_1e,D1e=N(()=>{"use strict";QQe=o(t=>` .pieCircle{ stroke: ${t.pieStrokeColor}; stroke-width : ${t.pieStrokeWidth}; @@ -1162,25 +1550,25 @@ Expecting `+Ie.join(", ")+", got '"+(this.terminals_[Z]||Z)+"'":be="Parse error font-family: ${t.fontFamily}; font-size: ${t.pieLegendTextSize}; } -`,"getStyles"),rhe=lGe});var cGe,uGe,ihe,ahe=N(()=>{"use strict";dr();zt();vt();Vc();Ei();ir();cGe=o(t=>{let e=[...t.entries()].map(n=>({label:n[0],value:n[1]})).sort((n,i)=>i.value-n.value);return I5().value(n=>n.value)(e)},"createPieArcs"),uGe=o((t,e,r,n)=>{Y.debug(`rendering pie chart -`+t);let i=n.db,a=me(),s=Fi(i.getConfig(),a.pie),l=40,u=18,h=4,f=450,d=f,p=sa(e),m=p.append("g");m.attr("transform","translate("+d/2+","+f/2+")");let{themeVariables:g}=a,[y]=Bo(g.pieOuterStrokeWidth);y??=2;let v=s.textPosition,x=Math.min(d,f)/2-l,b=bl().innerRadius(0).outerRadius(x),w=bl().innerRadius(x*v).outerRadius(x*v);m.append("circle").attr("cx",0).attr("cy",0).attr("r",x+y/2).attr("class","pieOuterCircle");let C=i.getSections(),T=cGe(C),E=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],A=gu(E);m.selectAll("mySlices").data(T).enter().append("path").attr("d",b).attr("fill",k=>A(k.data.label)).attr("class","pieCircle");let S=0;C.forEach(k=>{S+=k}),m.selectAll("mySlices").data(T).enter().append("text").text(k=>(k.data.value/S*100).toFixed(0)+"%").attr("transform",k=>"translate("+w.centroid(k)+")").style("text-anchor","middle").attr("class","slice"),m.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-(f-50)/2).attr("class","pieTitleText");let _=m.selectAll(".legend").data(A.domain()).enter().append("g").attr("class","legend").attr("transform",(k,L)=>{let R=u+h,O=R*A.domain().length/2,M=12*u,B=L*R-O;return"translate("+M+","+B+")"});_.append("rect").attr("width",u).attr("height",u).style("fill",A).style("stroke",A),_.data(T).append("text").attr("x",u+h).attr("y",u-h).text(k=>{let{label:L,value:R}=k.data;return i.getShowData()?`${L} [${R}]`:L});let I=Math.max(..._.selectAll("text").nodes().map(k=>k?.getBoundingClientRect().width??0)),D=d+l+u+h+I;p.attr("viewBox",`0 0 ${D} ${f}`),vn(p,f,D,s.useMaxWidth)},"draw"),ihe={draw:uGe}});var she={};hr(she,{diagram:()=>hGe});var hGe,ohe=N(()=>{"use strict";the();uO();nhe();ahe();hGe={parser:ehe,db:g6,renderer:ihe,styles:rhe}});var hO,uhe,hhe=N(()=>{"use strict";hO=function(){var t=o(function(xe,q,pe,ve){for(pe=pe||{},ve=xe.length;ve--;pe[xe[ve]]=q);return pe},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[1,7],s=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],u=[55,56,57],h=[2,36],f=[1,37],d=[1,36],p=[1,38],m=[1,35],g=[1,43],y=[1,41],v=[1,14],x=[1,23],b=[1,18],w=[1,19],C=[1,20],T=[1,21],E=[1,22],A=[1,24],S=[1,25],_=[1,26],I=[1,27],D=[1,28],k=[1,29],L=[1,32],R=[1,33],O=[1,34],M=[1,39],B=[1,40],F=[1,42],P=[1,44],z=[1,62],$=[1,61],H=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],Q=[1,65],j=[1,66],ie=[1,67],ne=[1,68],le=[1,69],he=[1,70],K=[1,71],X=[1,72],te=[1,73],J=[1,74],se=[1,75],ue=[1,76],Z=[4,5,6,7,8,9,10,11,12,13,14,15,18],Se=[1,90],ce=[1,91],ae=[1,92],Oe=[1,99],ge=[1,93],ze=[1,96],He=[1,94],$e=[1,95],Re=[1,97],Ie=[1,98],be=[1,102],W=[10,55,56,57],de=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],re={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:o(function(q,pe,ve,Pe,_e,we,Ve){var De=we.length-1;switch(_e){case 23:this.$=we[De];break;case 24:this.$=we[De-1]+""+we[De];break;case 26:this.$=we[De-1]+we[De];break;case 27:this.$=[we[De].trim()];break;case 28:we[De-2].push(we[De].trim()),this.$=we[De-2];break;case 29:this.$=we[De-4],Pe.addClass(we[De-2],we[De]);break;case 37:this.$=[];break;case 42:this.$=we[De].trim(),Pe.setDiagramTitle(this.$);break;case 43:this.$=we[De].trim(),Pe.setAccTitle(this.$);break;case 44:case 45:this.$=we[De].trim(),Pe.setAccDescription(this.$);break;case 46:Pe.addSection(we[De].substr(8)),this.$=we[De].substr(8);break;case 47:Pe.addPoint(we[De-3],"",we[De-1],we[De],[]);break;case 48:Pe.addPoint(we[De-4],we[De-3],we[De-1],we[De],[]);break;case 49:Pe.addPoint(we[De-4],"",we[De-2],we[De-1],we[De]);break;case 50:Pe.addPoint(we[De-5],we[De-4],we[De-2],we[De-1],we[De]);break;case 51:Pe.setXAxisLeftText(we[De-2]),Pe.setXAxisRightText(we[De]);break;case 52:we[De-1].text+=" \u27F6 ",Pe.setXAxisLeftText(we[De-1]);break;case 53:Pe.setXAxisLeftText(we[De]);break;case 54:Pe.setYAxisBottomText(we[De-2]),Pe.setYAxisTopText(we[De]);break;case 55:we[De-1].text+=" \u27F6 ",Pe.setYAxisBottomText(we[De-1]);break;case 56:Pe.setYAxisBottomText(we[De]);break;case 57:Pe.setQuadrant1Text(we[De]);break;case 58:Pe.setQuadrant2Text(we[De]);break;case 59:Pe.setQuadrant3Text(we[De]);break;case 60:Pe.setQuadrant4Text(we[De]);break;case 64:this.$={text:we[De],type:"text"};break;case 65:this.$={text:we[De-1].text+""+we[De],type:we[De-1].type};break;case 66:this.$={text:we[De],type:"text"};break;case 67:this.$={text:we[De],type:"markdown"};break;case 68:this.$=we[De];break;case 69:this.$=we[De-1]+""+we[De];break}},"anonymous"),table:[{18:e,26:1,27:2,28:r,55:n,56:i,57:a},{1:[3]},{18:e,26:8,27:2,28:r,55:n,56:i,57:a},{18:e,26:9,27:2,28:r,55:n,56:i,57:a},t(s,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(u,h,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:w,39:C,41:T,42:E,48:A,50:S,51:_,52:I,53:D,54:k,60:L,61:R,63:O,64:M,65:B,66:F,67:P}),t(s,[2,34]),{27:45,55:n,56:i,57:a},t(u,[2,37]),t(u,h,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:w,39:C,41:T,42:E,48:A,50:S,51:_,52:I,53:D,54:k,60:L,61:R,63:O,64:M,65:B,66:F,67:P}),t(u,[2,39]),t(u,[2,40]),t(u,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(u,[2,45]),t(u,[2,46]),{18:[1,50]},{4:f,5:d,10:p,12:m,13:g,14:y,43:51,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:52,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:53,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:54,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:55,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:56,58:31,60:L,61:R,63:O,64:M,65:B,66:F,67:P},{4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,44:[1,57],47:[1,58],58:60,59:59,63:O,64:M,65:B,66:F,67:P},t(H,[2,64]),t(H,[2,66]),t(H,[2,67]),t(H,[2,70]),t(H,[2,71]),t(H,[2,72]),t(H,[2,73]),t(H,[2,74]),t(H,[2,75]),t(H,[2,76]),t(H,[2,77]),t(H,[2,78]),t(H,[2,79]),t(H,[2,80]),t(s,[2,35]),t(u,[2,38]),t(u,[2,42]),t(u,[2,43]),t(u,[2,44]),{3:64,4:Q,5:j,6:ie,7:ne,8:le,9:he,10:K,11:X,12:te,13:J,14:se,15:ue,21:63},t(u,[2,53],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,49:[1,77],63:O,64:M,65:B,66:F,67:P}),t(u,[2,56],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,49:[1,78],63:O,64:M,65:B,66:F,67:P}),t(u,[2,57],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),t(u,[2,58],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),t(u,[2,59],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),t(u,[2,60],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),{45:[1,79]},{44:[1,80]},t(H,[2,65]),t(H,[2,81]),t(H,[2,82]),t(H,[2,83]),{3:82,4:Q,5:j,6:ie,7:ne,8:le,9:he,10:K,11:X,12:te,13:J,14:se,15:ue,18:[1,81]},t(Z,[2,23]),t(Z,[2,1]),t(Z,[2,2]),t(Z,[2,3]),t(Z,[2,4]),t(Z,[2,5]),t(Z,[2,6]),t(Z,[2,7]),t(Z,[2,8]),t(Z,[2,9]),t(Z,[2,10]),t(Z,[2,11]),t(Z,[2,12]),t(u,[2,52],{58:31,43:83,4:f,5:d,10:p,12:m,13:g,14:y,60:L,61:R,63:O,64:M,65:B,66:F,67:P}),t(u,[2,55],{58:31,43:84,4:f,5:d,10:p,12:m,13:g,14:y,60:L,61:R,63:O,64:M,65:B,66:F,67:P}),{46:[1,85]},{45:[1,86]},{4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,16:89,17:He,18:$e,19:Re,20:Ie,22:88,23:87},t(Z,[2,24]),t(u,[2,51],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),t(u,[2,54],{59:59,58:60,4:f,5:d,8:z,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:B,66:F,67:P}),t(u,[2,47],{22:88,16:89,23:100,4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,17:He,18:$e,19:Re,20:Ie}),{46:[1,101]},t(u,[2,29],{10:be}),t(W,[2,27],{16:103,4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,17:He,18:$e,19:Re,20:Ie}),t(de,[2,25]),t(de,[2,13]),t(de,[2,14]),t(de,[2,15]),t(de,[2,16]),t(de,[2,17]),t(de,[2,18]),t(de,[2,19]),t(de,[2,20]),t(de,[2,21]),t(de,[2,22]),t(u,[2,49],{10:be}),t(u,[2,48],{22:88,16:89,23:104,4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,17:He,18:$e,19:Re,20:Ie}),{4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,16:89,17:He,18:$e,19:Re,20:Ie,22:105},t(de,[2,26]),t(u,[2,50],{10:be}),t(W,[2,28],{16:103,4:Se,5:ce,6:ae,8:Oe,11:ge,13:ze,17:He,18:$e,19:Re,20:Ie})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(q,pe){if(pe.recoverable)this.trace(q);else{var ve=new Error(q);throw ve.hash=pe,ve}},"parseError"),parse:o(function(q){var pe=this,ve=[0],Pe=[],_e=[null],we=[],Ve=this.table,De="",qe=0,at=0,Rt=0,st=2,Ue=1,ct=we.slice.call(arguments,1),We=Object.create(this.lexer),ot={yy:{}};for(var Yt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Yt)&&(ot.yy[Yt]=this.yy[Yt]);We.setInput(q,ot.yy),ot.yy.lexer=We,ot.yy.parser=this,typeof We.yylloc>"u"&&(We.yylloc={});var bt=We.yylloc;we.push(bt);var Mt=We.options&&We.options.ranges;typeof ot.yy.parseError=="function"?this.parseError=ot.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xt(Ce){ve.length=ve.length-2*Ce,_e.length=_e.length-Ce,we.length=we.length-Ce}o(xt,"popStack");function ut(){var Ce;return Ce=Pe.pop()||We.lex()||Ue,typeof Ce!="number"&&(Ce instanceof Array&&(Pe=Ce,Ce=Pe.pop()),Ce=pe.symbols_[Ce]||Ce),Ce}o(ut,"lex");for(var Et,ft,yt,nt,dn,Tt,On={},tn,_r,Dr,Pn;;){if(yt=ve[ve.length-1],this.defaultActions[yt]?nt=this.defaultActions[yt]:((Et===null||typeof Et>"u")&&(Et=ut()),nt=Ve[yt]&&Ve[yt][Et]),typeof nt>"u"||!nt.length||!nt[0]){var At="";Pn=[];for(tn in Ve[yt])this.terminals_[tn]&&tn>st&&Pn.push("'"+this.terminals_[tn]+"'");We.showPosition?At="Parse error on line "+(qe+1)+`: +`,"getStyles"),_1e=QQe});var ZQe,JQe,L1e,R1e=N(()=>{"use strict";yr();Xt();pt();tu();Ei();tr();ZQe=o(t=>{let e=[...t.values()].reduce((i,a)=>i+a,0),r=[...t.entries()].map(([i,a])=>({label:i,value:a})).filter(i=>i.value/e*100>=1).sort((i,a)=>a.value-i.value);return X5().value(i=>i.value)(r)},"createPieArcs"),JQe=o((t,e,r,n)=>{X.debug(`rendering pie chart +`+t);let i=n.db,a=ge(),s=Vn(i.getConfig(),a.pie),l=40,u=18,h=4,f=450,d=f,p=aa(e),m=p.append("g");m.attr("transform","translate("+d/2+","+f/2+")");let{themeVariables:g}=a,[y]=vc(g.pieOuterStrokeWidth);y??=2;let v=s.textPosition,x=Math.min(d,f)/2-l,b=Sl().innerRadius(0).outerRadius(x),T=Sl().innerRadius(x*v).outerRadius(x*v);m.append("circle").attr("cx",0).attr("cy",0).attr("r",x+y/2).attr("class","pieOuterCircle");let S=i.getSections(),w=ZQe(S),k=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],A=0;S.forEach(_=>{A+=_});let C=w.filter(_=>(_.data.value/A*100).toFixed(0)!=="0"),R=no(k);m.selectAll("mySlices").data(C).enter().append("path").attr("d",b).attr("fill",_=>R(_.data.label)).attr("class","pieCircle"),m.selectAll("mySlices").data(C).enter().append("text").text(_=>(_.data.value/A*100).toFixed(0)+"%").attr("transform",_=>"translate("+T.centroid(_)+")").style("text-anchor","middle").attr("class","slice"),m.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-(f-50)/2).attr("class","pieTitleText");let I=[...S.entries()].map(([_,O])=>({label:_,value:O})),L=m.selectAll(".legend").data(I).enter().append("g").attr("class","legend").attr("transform",(_,O)=>{let M=u+h,P=M*I.length/2,B=12*u,F=O*M-P;return"translate("+B+","+F+")"});L.append("rect").attr("width",u).attr("height",u).style("fill",_=>R(_.label)).style("stroke",_=>R(_.label)),L.append("text").attr("x",u+h).attr("y",u-h).text(_=>i.getShowData()?`${_.label} [${_.value}]`:_.label);let E=Math.max(...L.selectAll("text").nodes().map(_=>_?.getBoundingClientRect().width??0)),D=d+l+u+h+E;p.attr("viewBox",`0 0 ${D} ${f}`),mn(p,f,D,s.useMaxWidth)},"draw"),L1e={draw:JQe}});var N1e={};dr(N1e,{diagram:()=>eZe});var eZe,M1e=N(()=>{"use strict";A1e();BF();D1e();R1e();eZe={parser:C1e,db:G6,renderer:L1e,styles:_1e}});var FF,O1e,P1e=N(()=>{"use strict";FF=(function(){var t=o(function(he,z,se,le){for(se=se||{},le=he.length;le--;se[he[le]]=z);return se},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[1,7],s=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],u=[55,56,57],h=[2,36],f=[1,37],d=[1,36],p=[1,38],m=[1,35],g=[1,43],y=[1,41],v=[1,14],x=[1,23],b=[1,18],T=[1,19],S=[1,20],w=[1,21],k=[1,22],A=[1,24],C=[1,25],R=[1,26],I=[1,27],L=[1,28],E=[1,29],D=[1,32],_=[1,33],O=[1,34],M=[1,39],P=[1,40],B=[1,42],F=[1,44],G=[1,62],$=[1,61],U=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],j=[1,65],te=[1,66],Y=[1,67],oe=[1,68],J=[1,69],ue=[1,70],re=[1,71],ee=[1,72],Z=[1,73],K=[1,74],ae=[1,75],Q=[1,76],de=[4,5,6,7,8,9,10,11,12,13,14,15,18],ne=[1,90],Te=[1,91],q=[1,92],Ve=[1,99],pe=[1,93],Be=[1,96],Ye=[1,94],He=[1,95],Le=[1,97],Ie=[1,98],Ne=[1,102],Ce=[10,55,56,57],Fe=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],fe={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:o(function(z,se,le,ke,ve,ye,Re){var _e=ye.length-1;switch(ve){case 23:this.$=ye[_e];break;case 24:this.$=ye[_e-1]+""+ye[_e];break;case 26:this.$=ye[_e-1]+ye[_e];break;case 27:this.$=[ye[_e].trim()];break;case 28:ye[_e-2].push(ye[_e].trim()),this.$=ye[_e-2];break;case 29:this.$=ye[_e-4],ke.addClass(ye[_e-2],ye[_e]);break;case 37:this.$=[];break;case 42:this.$=ye[_e].trim(),ke.setDiagramTitle(this.$);break;case 43:this.$=ye[_e].trim(),ke.setAccTitle(this.$);break;case 44:case 45:this.$=ye[_e].trim(),ke.setAccDescription(this.$);break;case 46:ke.addSection(ye[_e].substr(8)),this.$=ye[_e].substr(8);break;case 47:ke.addPoint(ye[_e-3],"",ye[_e-1],ye[_e],[]);break;case 48:ke.addPoint(ye[_e-4],ye[_e-3],ye[_e-1],ye[_e],[]);break;case 49:ke.addPoint(ye[_e-4],"",ye[_e-2],ye[_e-1],ye[_e]);break;case 50:ke.addPoint(ye[_e-5],ye[_e-4],ye[_e-2],ye[_e-1],ye[_e]);break;case 51:ke.setXAxisLeftText(ye[_e-2]),ke.setXAxisRightText(ye[_e]);break;case 52:ye[_e-1].text+=" \u27F6 ",ke.setXAxisLeftText(ye[_e-1]);break;case 53:ke.setXAxisLeftText(ye[_e]);break;case 54:ke.setYAxisBottomText(ye[_e-2]),ke.setYAxisTopText(ye[_e]);break;case 55:ye[_e-1].text+=" \u27F6 ",ke.setYAxisBottomText(ye[_e-1]);break;case 56:ke.setYAxisBottomText(ye[_e]);break;case 57:ke.setQuadrant1Text(ye[_e]);break;case 58:ke.setQuadrant2Text(ye[_e]);break;case 59:ke.setQuadrant3Text(ye[_e]);break;case 60:ke.setQuadrant4Text(ye[_e]);break;case 64:this.$={text:ye[_e],type:"text"};break;case 65:this.$={text:ye[_e-1].text+""+ye[_e],type:ye[_e-1].type};break;case 66:this.$={text:ye[_e],type:"text"};break;case 67:this.$={text:ye[_e],type:"markdown"};break;case 68:this.$=ye[_e];break;case 69:this.$=ye[_e-1]+""+ye[_e];break}},"anonymous"),table:[{18:e,26:1,27:2,28:r,55:n,56:i,57:a},{1:[3]},{18:e,26:8,27:2,28:r,55:n,56:i,57:a},{18:e,26:9,27:2,28:r,55:n,56:i,57:a},t(s,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(u,h,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:T,39:S,41:w,42:k,48:A,50:C,51:R,52:I,53:L,54:E,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),t(s,[2,34]),{27:45,55:n,56:i,57:a},t(u,[2,37]),t(u,h,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:T,39:S,41:w,42:k,48:A,50:C,51:R,52:I,53:L,54:E,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),t(u,[2,39]),t(u,[2,40]),t(u,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(u,[2,45]),t(u,[2,46]),{18:[1,50]},{4:f,5:d,10:p,12:m,13:g,14:y,43:51,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:52,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:53,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:54,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:55,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:56,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,44:[1,57],47:[1,58],58:60,59:59,63:O,64:M,65:P,66:B,67:F},t(U,[2,64]),t(U,[2,66]),t(U,[2,67]),t(U,[2,70]),t(U,[2,71]),t(U,[2,72]),t(U,[2,73]),t(U,[2,74]),t(U,[2,75]),t(U,[2,76]),t(U,[2,77]),t(U,[2,78]),t(U,[2,79]),t(U,[2,80]),t(s,[2,35]),t(u,[2,38]),t(u,[2,42]),t(u,[2,43]),t(u,[2,44]),{3:64,4:j,5:te,6:Y,7:oe,8:J,9:ue,10:re,11:ee,12:Z,13:K,14:ae,15:Q,21:63},t(u,[2,53],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,49:[1,77],63:O,64:M,65:P,66:B,67:F}),t(u,[2,56],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,49:[1,78],63:O,64:M,65:P,66:B,67:F}),t(u,[2,57],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,58],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,59],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,60],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),{45:[1,79]},{44:[1,80]},t(U,[2,65]),t(U,[2,81]),t(U,[2,82]),t(U,[2,83]),{3:82,4:j,5:te,6:Y,7:oe,8:J,9:ue,10:re,11:ee,12:Z,13:K,14:ae,15:Q,18:[1,81]},t(de,[2,23]),t(de,[2,1]),t(de,[2,2]),t(de,[2,3]),t(de,[2,4]),t(de,[2,5]),t(de,[2,6]),t(de,[2,7]),t(de,[2,8]),t(de,[2,9]),t(de,[2,10]),t(de,[2,11]),t(de,[2,12]),t(u,[2,52],{58:31,43:83,4:f,5:d,10:p,12:m,13:g,14:y,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),t(u,[2,55],{58:31,43:84,4:f,5:d,10:p,12:m,13:g,14:y,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),{46:[1,85]},{45:[1,86]},{4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,16:89,17:Ye,18:He,19:Le,20:Ie,22:88,23:87},t(de,[2,24]),t(u,[2,51],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,54],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,47],{22:88,16:89,23:100,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie}),{46:[1,101]},t(u,[2,29],{10:Ne}),t(Ce,[2,27],{16:103,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie}),t(Fe,[2,25]),t(Fe,[2,13]),t(Fe,[2,14]),t(Fe,[2,15]),t(Fe,[2,16]),t(Fe,[2,17]),t(Fe,[2,18]),t(Fe,[2,19]),t(Fe,[2,20]),t(Fe,[2,21]),t(Fe,[2,22]),t(u,[2,49],{10:Ne}),t(u,[2,48],{22:88,16:89,23:104,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie}),{4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,16:89,17:Ye,18:He,19:Le,20:Ie,22:105},t(Fe,[2,26]),t(u,[2,50],{10:Ne}),t(Ce,[2,28],{16:103,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(z,se){if(se.recoverable)this.trace(z);else{var le=new Error(z);throw le.hash=se,le}},"parseError"),parse:o(function(z){var se=this,le=[0],ke=[],ve=[null],ye=[],Re=this.table,_e="",ze=0,Ke=0,xt=0,We=2,Oe=1,et=ye.slice.call(arguments,1),Ue=Object.create(this.lexer),lt={yy:{}};for(var Gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Gt)&&(lt.yy[Gt]=this.yy[Gt]);Ue.setInput(z,lt.yy),lt.yy.lexer=Ue,lt.yy.parser=this,typeof Ue.yylloc>"u"&&(Ue.yylloc={});var vt=Ue.yylloc;ye.push(vt);var Lt=Ue.options&&Ue.options.ranges;typeof lt.yy.parseError=="function"?this.parseError=lt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function dt(Se){le.length=le.length-2*Se,ve.length=ve.length-Se,ye.length=ye.length-Se}o(dt,"popStack");function nt(){var Se;return Se=ke.pop()||Ue.lex()||Oe,typeof Se!="number"&&(Se instanceof Array&&(ke=Se,Se=ke.pop()),Se=se.symbols_[Se]||Se),Se}o(nt,"lex");for(var bt,wt,yt,ft,Ur,_t,bn={},Br,cr,ar,_r;;){if(yt=le[le.length-1],this.defaultActions[yt]?ft=this.defaultActions[yt]:((bt===null||typeof bt>"u")&&(bt=nt()),ft=Re[yt]&&Re[yt][bt]),typeof ft>"u"||!ft.length||!ft[0]){var Ct="";_r=[];for(Br in Re[yt])this.terminals_[Br]&&Br>We&&_r.push("'"+this.terminals_[Br]+"'");Ue.showPosition?Ct="Parse error on line "+(ze+1)+`: +`+Ue.showPosition()+` +Expecting `+_r.join(", ")+", got '"+(this.terminals_[bt]||bt)+"'":Ct="Parse error on line "+(ze+1)+": Unexpected "+(bt==Oe?"end of input":"'"+(this.terminals_[bt]||bt)+"'"),this.parseError(Ct,{text:Ue.match,token:this.terminals_[bt]||bt,line:Ue.yylineno,loc:vt,expected:_r})}if(ft[0]instanceof Array&&ft.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+bt);switch(ft[0]){case 1:le.push(bt),ve.push(Ue.yytext),ye.push(Ue.yylloc),le.push(ft[1]),bt=null,wt?(bt=wt,wt=null):(Ke=Ue.yyleng,_e=Ue.yytext,ze=Ue.yylineno,vt=Ue.yylloc,xt>0&&xt--);break;case 2:if(cr=this.productions_[ft[1]][1],bn.$=ve[ve.length-cr],bn._$={first_line:ye[ye.length-(cr||1)].first_line,last_line:ye[ye.length-1].last_line,first_column:ye[ye.length-(cr||1)].first_column,last_column:ye[ye.length-1].last_column},Lt&&(bn._$.range=[ye[ye.length-(cr||1)].range[0],ye[ye.length-1].range[1]]),_t=this.performAction.apply(bn,[_e,Ke,ze,lt.yy,ft[1],ve,ye].concat(et)),typeof _t<"u")return _t;cr&&(le=le.slice(0,-1*cr*2),ve=ve.slice(0,-1*cr),ye=ye.slice(0,-1*cr)),le.push(this.productions_[ft[1]][0]),ve.push(bn.$),ye.push(bn._$),ar=Re[le[le.length-2]][le[le.length-1]],le.push(ar);break;case 3:return!0}}return!0},"parse")},xe=(function(){var he={EOF:1,parseError:o(function(se,le){if(this.yy.parser)this.yy.parser.parseError(se,le);else throw new Error(se)},"parseError"),setInput:o(function(z,se){return this.yy=se||this.yy||{},this._input=z,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var z=this._input[0];this.yytext+=z,this.yyleng++,this.offset++,this.match+=z,this.matched+=z;var se=z.match(/(?:\r\n?|\n).*/g);return se?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),z},"input"),unput:o(function(z){var se=z.length,le=z.split(/(?:\r\n?|\n)/g);this._input=z+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-se),this.offset-=se;var ke=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),le.length-1&&(this.yylineno-=le.length-1);var ve=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:le?(le.length===ke.length?this.yylloc.first_column:0)+ke[ke.length-le.length].length-le[0].length:this.yylloc.first_column-se},this.options.ranges&&(this.yylloc.range=[ve[0],ve[0]+this.yyleng-se]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(z){this.unput(this.match.slice(z))},"less"),pastInput:o(function(){var z=this.matched.substr(0,this.matched.length-this.match.length);return(z.length>20?"...":"")+z.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var z=this.match;return z.length<20&&(z+=this._input.substr(0,20-z.length)),(z.substr(0,20)+(z.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var z=this.pastInput(),se=new Array(z.length+1).join("-");return z+this.upcomingInput()+` +`+se+"^"},"showPosition"),test_match:o(function(z,se){var le,ke,ve;if(this.options.backtrack_lexer&&(ve={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ve.yylloc.range=this.yylloc.range.slice(0))),ke=z[0].match(/(?:\r\n?|\n).*/g),ke&&(this.yylineno+=ke.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ke?ke[ke.length-1].length-ke[ke.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+z[0].length},this.yytext+=z[0],this.match+=z[0],this.matches=z,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(z[0].length),this.matched+=z[0],le=this.performAction.call(this,this.yy,this,se,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),le)return le;if(this._backtrack){for(var ye in ve)this[ye]=ve[ye];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var z,se,le,ke;this._more||(this.yytext="",this.match="");for(var ve=this._currentRules(),ye=0;yese[0].length)){if(se=le,ke=ye,this.options.backtrack_lexer){if(z=this.test_match(le,ve[ye]),z!==!1)return z;if(this._backtrack){se=!1;continue}else return!1}else if(!this.options.flex)break}return se?(z=this.test_match(se,ve[ke]),z!==!1?z:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var se=this.next();return se||this.lex()},"lex"),begin:o(function(se){this.conditionStack.push(se)},"begin"),popState:o(function(){var se=this.conditionStack.length-1;return se>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(se){return se=this.conditionStack.length-1-Math.abs(se||0),se>=0?this.conditionStack[se]:"INITIAL"},"topState"),pushState:o(function(se){this.begin(se)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(se,le,ke,ve){var ye=ve;switch(ke){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:return 65;case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}};return he})();fe.lexer=xe;function W(){this.yy={}}return o(W,"Parser"),W.prototype=fe,fe.Parser=W,new W})();FF.parser=FF;O1e=FF});var Ts,V6,B1e=N(()=>{"use strict";yr();La();pt();Oy();Ts=mh(),V6=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{o(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:ur.quadrantChart?.chartWidth||500,chartWidth:ur.quadrantChart?.chartHeight||500,titlePadding:ur.quadrantChart?.titlePadding||10,titleFontSize:ur.quadrantChart?.titleFontSize||20,quadrantPadding:ur.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:ur.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:ur.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:ur.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:ur.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:ur.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:ur.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:ur.quadrantChart?.pointTextPadding||5,pointLabelFontSize:ur.quadrantChart?.pointLabelFontSize||12,pointRadius:ur.quadrantChart?.pointRadius||5,xAxisPosition:ur.quadrantChart?.xAxisPosition||"top",yAxisPosition:ur.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:ur.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:ur.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:Ts.quadrant1Fill,quadrant2Fill:Ts.quadrant2Fill,quadrant3Fill:Ts.quadrant3Fill,quadrant4Fill:Ts.quadrant4Fill,quadrant1TextFill:Ts.quadrant1TextFill,quadrant2TextFill:Ts.quadrant2TextFill,quadrant3TextFill:Ts.quadrant3TextFill,quadrant4TextFill:Ts.quadrant4TextFill,quadrantPointFill:Ts.quadrantPointFill,quadrantPointTextFill:Ts.quadrantPointTextFill,quadrantXAxisTextFill:Ts.quadrantXAxisTextFill,quadrantYAxisTextFill:Ts.quadrantYAxisTextFill,quadrantTitleFill:Ts.quadrantTitleFill,quadrantInternalBorderStrokeFill:Ts.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:Ts.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,X.info("clear called")}setData(e){this.data={...this.data,...e}}addPoints(e){this.data.points=[...e,...this.data.points]}addClass(e,r){this.classes.set(e,r)}setConfig(e){X.trace("setConfig called with: ",e),this.config={...this.config,...e}}setThemeConfig(e){X.trace("setThemeConfig called with: ",e),this.themeConfig={...this.themeConfig,...e}}calculateSpace(e,r,n,i){let a=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,s={top:e==="top"&&r?a:0,bottom:e==="bottom"&&r?a:0},l=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,u={left:this.config.yAxisPosition==="left"&&n?l:0,right:this.config.yAxisPosition==="right"&&n?l:0},h=this.config.titleFontSize+this.config.titlePadding*2,f={top:i?h:0},d=this.config.quadrantPadding+u.left,p=this.config.quadrantPadding+s.top+f.top,m=this.config.chartWidth-this.config.quadrantPadding*2-u.left-u.right,g=this.config.chartHeight-this.config.quadrantPadding*2-s.top-s.bottom-f.top,y=m/2,v=g/2;return{xAxisSpace:s,yAxisSpace:u,titleSpace:f,quadrantSpace:{quadrantLeft:d,quadrantTop:p,quadrantWidth:m,quadrantHalfWidth:y,quadrantHeight:g,quadrantHalfHeight:v}}}getAxisLabels(e,r,n,i){let{quadrantSpace:a,titleSpace:s}=i,{quadrantHalfHeight:l,quadrantHeight:u,quadrantLeft:h,quadrantHalfWidth:f,quadrantTop:d,quadrantWidth:p}=a,m=!!this.data.xAxisRightText,g=!!this.data.yAxisTopText,y=[];return this.data.xAxisLeftText&&r&&y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&r&&y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+f+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+u-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+l-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),y}getQuadrants(e){let{quadrantSpace:r}=e,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:a,quadrantTop:s}=r,l=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s,width:a,height:n,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s,width:a,height:n,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant4Fill}];for(let u of l)u.text.x=u.x+u.width/2,this.data.points.length===0?(u.text.y=u.y+u.height/2,u.text.horizontalPos="middle"):(u.text.y=u.y+this.config.quadrantTextTopPadding,u.text.horizontalPos="top");return l}getQuadrantPoints(e){let{quadrantSpace:r}=e,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:s}=r,l=Tl().domain([0,1]).range([i,s+i]),u=Tl().domain([0,1]).range([n+a,a]);return this.data.points.map(f=>{let d=this.classes.get(f.className);return d&&(f={...d,...f}),{x:l(f.x),y:u(f.y),fill:f.color??this.themeConfig.quadrantPointFill,radius:f.radius??this.config.pointRadius,text:{text:f.text,fill:this.themeConfig.quadrantPointTextFill,x:l(f.x),y:u(f.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:f.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:f.strokeWidth??"0px"}})}getBorders(e){let r=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=e,{quadrantHalfHeight:i,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:l,quadrantTop:u,quadrantWidth:h}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u,x2:s+h+r,y2:u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+h,y1:u+r,x2:s+h,y2:u+a-r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u+a,x2:s+h+r,y2:u+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:u+r,x2:s,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+l,y1:u+r,x2:s+l,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:u+i,x2:s+h-r,y2:u+i}]}getTitle(e){if(e)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let e=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),r=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(i,e,r,n);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(i,e,r,a),borderLines:this.getBorders(a),title:this.getTitle(n)}}}});function $F(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function F1e(t){return!/^\d+$/.test(t)}function $1e(t){return!/^\d+px$/.test(t)}var s0,z1e=N(()=>{"use strict";s0=class extends Error{static{o(this,"InvalidStyleError")}constructor(e,r,n){super(`value for ${e} ${r} is invalid, please use a valid ${n}`),this.name="InvalidStyleError"}};o($F,"validateHexCode");o(F1e,"validateNumber");o($1e,"validateSizeInPixels")});function sh(t){return sr(t.trim(),nZe)}function iZe(t){Ca.setData({quadrant1Text:sh(t.text)})}function aZe(t){Ca.setData({quadrant2Text:sh(t.text)})}function sZe(t){Ca.setData({quadrant3Text:sh(t.text)})}function oZe(t){Ca.setData({quadrant4Text:sh(t.text)})}function lZe(t){Ca.setData({xAxisLeftText:sh(t.text)})}function cZe(t){Ca.setData({xAxisRightText:sh(t.text)})}function uZe(t){Ca.setData({yAxisTopText:sh(t.text)})}function hZe(t){Ca.setData({yAxisBottomText:sh(t.text)})}function zF(t){let e={};for(let r of t){let[n,i]=r.trim().split(/\s*:\s*/);if(n==="radius"){if(F1e(i))throw new s0(n,i,"number");e.radius=parseInt(i)}else if(n==="color"){if($F(i))throw new s0(n,i,"hex code");e.color=i}else if(n==="stroke-color"){if($F(i))throw new s0(n,i,"hex code");e.strokeColor=i}else if(n==="stroke-width"){if($1e(i))throw new s0(n,i,"number of pixels (eg. 10px)");e.strokeWidth=i}else throw new Error(`style named ${n} is not supported.`)}return e}function fZe(t,e,r,n,i){let a=zF(i);Ca.addPoints([{x:r,y:n,text:sh(t.text),className:e,...a}])}function dZe(t,e){Ca.addClass(t,zF(e))}function pZe(t){Ca.setConfig({chartWidth:t})}function mZe(t){Ca.setConfig({chartHeight:t})}function gZe(){let t=ge(),{themeVariables:e,quadrantChart:r}=t;return r&&Ca.setConfig(r),Ca.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),Ca.setData({titleText:Pr()}),Ca.build()}var nZe,Ca,yZe,G1e,V1e=N(()=>{"use strict";Xt();gr();ci();B1e();z1e();nZe=ge();o(sh,"textSanitizer");Ca=new V6;o(iZe,"setQuadrant1Text");o(aZe,"setQuadrant2Text");o(sZe,"setQuadrant3Text");o(oZe,"setQuadrant4Text");o(lZe,"setXAxisLeftText");o(cZe,"setXAxisRightText");o(uZe,"setYAxisTopText");o(hZe,"setYAxisBottomText");o(zF,"parseStyles");o(fZe,"addPoint");o(dZe,"addClass");o(pZe,"setWidth");o(mZe,"setHeight");o(gZe,"getQuadrantData");yZe=o(function(){Ca.clear(),Sr()},"clear"),G1e={setWidth:pZe,setHeight:mZe,setQuadrant1Text:iZe,setQuadrant2Text:aZe,setQuadrant3Text:sZe,setQuadrant4Text:oZe,setXAxisLeftText:lZe,setXAxisRightText:cZe,setYAxisTopText:uZe,setYAxisBottomText:hZe,parseStyles:zF,addPoint:fZe,addClass:dZe,getQuadrantData:gZe,clear:yZe,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,getAccDescription:Or,setAccDescription:Ir}});var vZe,U1e,H1e=N(()=>{"use strict";yr();Xt();pt();Ei();vZe=o((t,e,r,n)=>{function i(C){return C==="top"?"hanging":"middle"}o(i,"getDominantBaseLine");function a(C){return C==="left"?"start":"middle"}o(a,"getTextAnchor");function s(C){return`translate(${C.x}, ${C.y}) rotate(${C.rotation||0})`}o(s,"getTransformation");let l=ge();X.debug(`Rendering quadrant chart +`+t);let u=l.securityLevel,h;u==="sandbox"&&(h=qe("#i"+e));let d=(u==="sandbox"?qe(h.nodes()[0].contentDocument.body):qe("body")).select(`[id="${e}"]`),p=d.append("g").attr("class","main"),m=l.quadrantChart?.chartWidth??500,g=l.quadrantChart?.chartHeight??500;mn(d,g,m,l.quadrantChart?.useMaxWidth??!0),d.attr("viewBox","0 0 "+m+" "+g),n.db.setHeight(g),n.db.setWidth(m);let y=n.db.getQuadrantData(),v=p.append("g").attr("class","quadrants"),x=p.append("g").attr("class","border"),b=p.append("g").attr("class","data-points"),T=p.append("g").attr("class","labels"),S=p.append("g").attr("class","title");y.title&&S.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",i(y.title.horizontalPos)).attr("text-anchor",a(y.title.verticalPos)).attr("transform",s(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",C=>C.x1).attr("y1",C=>C.y1).attr("x2",C=>C.x2).attr("y2",C=>C.y2).style("stroke",C=>C.strokeFill).style("stroke-width",C=>C.strokeWidth);let w=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");w.append("rect").attr("x",C=>C.x).attr("y",C=>C.y).attr("width",C=>C.width).attr("height",C=>C.height).attr("fill",C=>C.fill),w.append("text").attr("x",0).attr("y",0).attr("fill",C=>C.text.fill).attr("font-size",C=>C.text.fontSize).attr("dominant-baseline",C=>i(C.text.horizontalPos)).attr("text-anchor",C=>a(C.text.verticalPos)).attr("transform",C=>s(C.text)).text(C=>C.text.text),T.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(C=>C.text).attr("fill",C=>C.fill).attr("font-size",C=>C.fontSize).attr("dominant-baseline",C=>i(C.horizontalPos)).attr("text-anchor",C=>a(C.verticalPos)).attr("transform",C=>s(C));let A=b.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");A.append("circle").attr("cx",C=>C.x).attr("cy",C=>C.y).attr("r",C=>C.radius).attr("fill",C=>C.fill).attr("stroke",C=>C.strokeColor).attr("stroke-width",C=>C.strokeWidth),A.append("text").attr("x",0).attr("y",0).text(C=>C.text.text).attr("fill",C=>C.text.fill).attr("font-size",C=>C.text.fontSize).attr("dominant-baseline",C=>i(C.text.horizontalPos)).attr("text-anchor",C=>a(C.text.verticalPos)).attr("transform",C=>s(C.text))},"draw"),U1e={draw:vZe}});var q1e={};dr(q1e,{diagram:()=>xZe});var xZe,W1e=N(()=>{"use strict";P1e();V1e();H1e();xZe={parser:O1e,db:G1e,renderer:U1e,styles:o(()=>"","styles")}});var GF,j1e,K1e=N(()=>{"use strict";GF=(function(){var t=o(function(O,M,P,B){for(P=P||{},B=O.length;B--;P[O[B]]=M);return P},"o"),e=[1,10,12,14,16,18,19,21,23],r=[2,6],n=[1,3],i=[1,5],a=[1,6],s=[1,7],l=[1,5,10,12,14,16,18,19,21,23,34,35,36],u=[1,25],h=[1,26],f=[1,28],d=[1,29],p=[1,30],m=[1,31],g=[1,32],y=[1,33],v=[1,34],x=[1,35],b=[1,36],T=[1,37],S=[1,43],w=[1,42],k=[1,47],A=[1,50],C=[1,10,12,14,16,18,19,21,23,34,35,36],R=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],I=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],L=[1,64],E={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:o(function(M,P,B,F,G,$,U){var j=$.length-1;switch(G){case 5:F.setOrientation($[j]);break;case 9:F.setDiagramTitle($[j].text.trim());break;case 12:F.setLineData({text:"",type:"text"},$[j]);break;case 13:F.setLineData($[j-1],$[j]);break;case 14:F.setBarData({text:"",type:"text"},$[j]);break;case 15:F.setBarData($[j-1],$[j]);break;case 16:this.$=$[j].trim(),F.setAccTitle(this.$);break;case 17:case 18:this.$=$[j].trim(),F.setAccDescription(this.$);break;case 19:this.$=$[j-1];break;case 20:this.$=[Number($[j-2]),...$[j]];break;case 21:this.$=[Number($[j])];break;case 22:F.setXAxisTitle($[j]);break;case 23:F.setXAxisTitle($[j-1]);break;case 24:F.setXAxisTitle({type:"text",text:""});break;case 25:F.setXAxisBand($[j]);break;case 26:F.setXAxisRangeData(Number($[j-2]),Number($[j]));break;case 27:this.$=$[j-1];break;case 28:this.$=[$[j-2],...$[j]];break;case 29:this.$=[$[j]];break;case 30:F.setYAxisTitle($[j]);break;case 31:F.setYAxisTitle($[j-1]);break;case 32:F.setYAxisTitle({type:"text",text:""});break;case 33:F.setYAxisRangeData(Number($[j-2]),Number($[j]));break;case 37:this.$={text:$[j],type:"text"};break;case 38:this.$={text:$[j],type:"text"};break;case 39:this.$={text:$[j],type:"markdown"};break;case 40:this.$=$[j];break;case 41:this.$=$[j-1]+""+$[j];break}},"anonymous"),table:[t(e,r,{3:1,4:2,7:4,5:n,34:i,35:a,36:s}),{1:[3]},t(e,r,{4:2,7:4,3:8,5:n,34:i,35:a,36:s}),t(e,r,{4:2,7:4,6:9,3:10,5:n,8:[1,11],34:i,35:a,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},t(l,[2,34]),t(l,[2,35]),t(l,[2,36]),{1:[2,1]},t(e,r,{4:2,7:4,3:21,5:n,34:i,35:a,36:s}),{1:[2,3]},t(l,[2,5]),t(e,[2,7],{4:22,34:i,35:a,36:s}),{11:23,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:39,13:38,24:S,27:w,29:40,30:41,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:45,15:44,27:k,33:46,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:49,17:48,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:52,17:51,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{20:[1,53]},{22:[1,54]},t(C,[2,18]),{1:[2,2]},t(C,[2,8]),t(C,[2,9]),t(R,[2,37],{40:55,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T}),t(R,[2,38]),t(R,[2,39]),t(I,[2,40]),t(I,[2,42]),t(I,[2,43]),t(I,[2,44]),t(I,[2,45]),t(I,[2,46]),t(I,[2,47]),t(I,[2,48]),t(I,[2,49]),t(I,[2,50]),t(I,[2,51]),t(C,[2,10]),t(C,[2,22],{30:41,29:56,24:S,27:w}),t(C,[2,24]),t(C,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},t(C,[2,11]),t(C,[2,30],{33:60,27:k}),t(C,[2,32]),{31:[1,61]},t(C,[2,12]),{17:62,24:A},{25:63,27:L},t(C,[2,14]),{17:65,24:A},t(C,[2,16]),t(C,[2,17]),t(I,[2,41]),t(C,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(C,[2,31]),{27:[1,69]},t(C,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(C,[2,15]),t(C,[2,26]),t(C,[2,27]),{11:59,32:72,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},t(C,[2,33]),t(C,[2,19]),{25:73,27:L},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:o(function(M,P){if(P.recoverable)this.trace(M);else{var B=new Error(M);throw B.hash=P,B}},"parseError"),parse:o(function(M){var P=this,B=[0],F=[],G=[null],$=[],U=this.table,j="",te=0,Y=0,oe=0,J=2,ue=1,re=$.slice.call(arguments,1),ee=Object.create(this.lexer),Z={yy:{}};for(var K in this.yy)Object.prototype.hasOwnProperty.call(this.yy,K)&&(Z.yy[K]=this.yy[K]);ee.setInput(M,Z.yy),Z.yy.lexer=ee,Z.yy.parser=this,typeof ee.yylloc>"u"&&(ee.yylloc={});var ae=ee.yylloc;$.push(ae);var Q=ee.options&&ee.options.ranges;typeof Z.yy.parseError=="function"?this.parseError=Z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function de(fe){B.length=B.length-2*fe,G.length=G.length-fe,$.length=$.length-fe}o(de,"popStack");function ne(){var fe;return fe=F.pop()||ee.lex()||ue,typeof fe!="number"&&(fe instanceof Array&&(F=fe,fe=F.pop()),fe=P.symbols_[fe]||fe),fe}o(ne,"lex");for(var Te,q,Ve,pe,Be,Ye,He={},Le,Ie,Ne,Ce;;){if(Ve=B[B.length-1],this.defaultActions[Ve]?pe=this.defaultActions[Ve]:((Te===null||typeof Te>"u")&&(Te=ne()),pe=U[Ve]&&U[Ve][Te]),typeof pe>"u"||!pe.length||!pe[0]){var Fe="";Ce=[];for(Le in U[Ve])this.terminals_[Le]&&Le>J&&Ce.push("'"+this.terminals_[Le]+"'");ee.showPosition?Fe="Parse error on line "+(te+1)+`: +`+ee.showPosition()+` +Expecting `+Ce.join(", ")+", got '"+(this.terminals_[Te]||Te)+"'":Fe="Parse error on line "+(te+1)+": Unexpected "+(Te==ue?"end of input":"'"+(this.terminals_[Te]||Te)+"'"),this.parseError(Fe,{text:ee.match,token:this.terminals_[Te]||Te,line:ee.yylineno,loc:ae,expected:Ce})}if(pe[0]instanceof Array&&pe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ve+", token: "+Te);switch(pe[0]){case 1:B.push(Te),G.push(ee.yytext),$.push(ee.yylloc),B.push(pe[1]),Te=null,q?(Te=q,q=null):(Y=ee.yyleng,j=ee.yytext,te=ee.yylineno,ae=ee.yylloc,oe>0&&oe--);break;case 2:if(Ie=this.productions_[pe[1]][1],He.$=G[G.length-Ie],He._$={first_line:$[$.length-(Ie||1)].first_line,last_line:$[$.length-1].last_line,first_column:$[$.length-(Ie||1)].first_column,last_column:$[$.length-1].last_column},Q&&(He._$.range=[$[$.length-(Ie||1)].range[0],$[$.length-1].range[1]]),Ye=this.performAction.apply(He,[j,Y,te,Z.yy,pe[1],G,$].concat(re)),typeof Ye<"u")return Ye;Ie&&(B=B.slice(0,-1*Ie*2),G=G.slice(0,-1*Ie),$=$.slice(0,-1*Ie)),B.push(this.productions_[pe[1]][0]),G.push(He.$),$.push(He._$),Ne=U[B[B.length-2]][B[B.length-1]],B.push(Ne);break;case 3:return!0}}return!0},"parse")},D=(function(){var O={EOF:1,parseError:o(function(P,B){if(this.yy.parser)this.yy.parser.parseError(P,B);else throw new Error(P)},"parseError"),setInput:o(function(M,P){return this.yy=P||this.yy||{},this._input=M,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var M=this._input[0];this.yytext+=M,this.yyleng++,this.offset++,this.match+=M,this.matched+=M;var P=M.match(/(?:\r\n?|\n).*/g);return P?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),M},"input"),unput:o(function(M){var P=M.length,B=M.split(/(?:\r\n?|\n)/g);this._input=M+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-P),this.offset-=P;var F=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),B.length-1&&(this.yylineno-=B.length-1);var G=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:B?(B.length===F.length?this.yylloc.first_column:0)+F[F.length-B.length].length-B[0].length:this.yylloc.first_column-P},this.options.ranges&&(this.yylloc.range=[G[0],G[0]+this.yyleng-P]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(M){this.unput(this.match.slice(M))},"less"),pastInput:o(function(){var M=this.matched.substr(0,this.matched.length-this.match.length);return(M.length>20?"...":"")+M.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var M=this.match;return M.length<20&&(M+=this._input.substr(0,20-M.length)),(M.substr(0,20)+(M.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var M=this.pastInput(),P=new Array(M.length+1).join("-");return M+this.upcomingInput()+` +`+P+"^"},"showPosition"),test_match:o(function(M,P){var B,F,G;if(this.options.backtrack_lexer&&(G={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(G.yylloc.range=this.yylloc.range.slice(0))),F=M[0].match(/(?:\r\n?|\n).*/g),F&&(this.yylineno+=F.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:F?F[F.length-1].length-F[F.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+M[0].length},this.yytext+=M[0],this.match+=M[0],this.matches=M,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(M[0].length),this.matched+=M[0],B=this.performAction.call(this,this.yy,this,P,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),B)return B;if(this._backtrack){for(var $ in G)this[$]=G[$];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var M,P,B,F;this._more||(this.yytext="",this.match="");for(var G=this._currentRules(),$=0;$P[0].length)){if(P=B,F=$,this.options.backtrack_lexer){if(M=this.test_match(B,G[$]),M!==!1)return M;if(this._backtrack){P=!1;continue}else return!1}else if(!this.options.flex)break}return P?(M=this.test_match(P,G[F]),M!==!1?M:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var P=this.next();return P||this.lex()},"lex"),begin:o(function(P){this.conditionStack.push(P)},"begin"),popState:o(function(){var P=this.conditionStack.length-1;return P>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(P){return P=this.conditionStack.length-1-Math.abs(P||0),P>=0?this.conditionStack[P]:"INITIAL"},"topState"),pushState:o(function(P){this.begin(P)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(P,B,F,G){var $=G;switch(F){case 0:break;case 1:break;case 2:return this.popState(),34;break;case 3:return this.popState(),34;break;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";break;case 18:return this.pushState("axis_data"),"Y_AXIS";break;case 19:return this.pushState("axis_band_data"),24;break;case 20:return 31;case 21:return this.pushState("data"),16;break;case 22:return this.pushState("data"),18;break;case 23:return this.pushState("data_inner"),24;break;case 24:return 27;case 25:return this.popState(),26;break;case 26:this.popState();break;case 27:this.pushState("string");break;case 28:this.popState();break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 43;case 33:return"COLON";case 34:return 44;case 35:return 28;case 36:return 45;case 37:return 46;case 38:return 48;case 39:return 50;case 40:return 47;case 41:return 41;case 42:return 49;case 43:return 42;case 44:break;case 45:return 35;case 46:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};return O})();E.lexer=D;function _(){this.yy={}}return o(_,"Parser"),_.prototype=E,E.Parser=_,new _})();GF.parser=GF;j1e=GF});function VF(t){return t.type==="bar"}function U6(t){return t.type==="band"}function ry(t){return t.type==="linear"}var H6=N(()=>{"use strict";o(VF,"isBarPlot");o(U6,"isBandAxisData");o(ry,"isLinearAxisData")});var ny,UF=N(()=>{"use strict";zo();ny=class{constructor(e){this.parentGroup=e}static{o(this,"TextDimensionCalculatorWithFont")}getMaxDimension(e,r){if(!this.parentGroup)return{width:e.reduce((a,s)=>Math.max(s.length,a),0)*r,height:r};let n={width:0,height:0},i=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",r);for(let a of e){let s=qZ(i,1,a),l=s?s.width:a.length*r,u=s?s.height:r;n.width=Math.max(n.width,l),n.height=Math.max(n.height,u)}return i.remove(),n}}});var iy,HF=N(()=>{"use strict";iy=class{constructor(e,r,n,i){this.axisConfig=e;this.title=r;this.textDimensionCalculator=n;this.axisThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0};this.axisPosition="left";this.showTitle=!1;this.showLabel=!1;this.showTick=!1;this.showAxisLine=!1;this.outerPadding=0;this.titleTextHeight=0;this.labelTextHeight=0;this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{o(this,"BaseAxis")}setRange(e){this.range=e,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=e[1]-e[0]:this.boundingRect.width=e[1]-e[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(e){this.axisPosition=e,this.setRange(this.range)}getTickDistance(){let e=this.getRange();return Math.abs(e[0]-e[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(e=>e.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(e){let r=e.height;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.width;this.outerPadding=Math.min(n.width/2,i);let a=n.height+this.axisConfig.labelPadding*2;this.labelTextHeight=n.height,a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width,this.boundingRect.height=e.height-r}calculateSpaceIfDrawnVertical(e){let r=e.width;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.height;this.outerPadding=Math.min(n.height/2,i);let a=n.width+this.axisConfig.labelPadding*2;a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width-r,this.boundingRect.height=e.height}calculateSpace(e){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(e):this.calculateSpaceIfDrawnHorizontally(e),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}getDrawableElementsForLeftAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(r),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let r=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${r},${this.getScaleValue(n)} L ${r-this.axisConfig.tickLength},${this.getScaleValue(n)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElementsForBottomAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r} L ${this.getScaleValue(n)},${r+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElementsForTopAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y;e.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(n)},${r+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}});var q6,Q1e=N(()=>{"use strict";yr();pt();HF();q6=class extends iy{static{o(this,"BandAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.categories=n,this.scale=q0().domain(this.categories).range(this.getRange())}setRange(e){super.setRange(e)}recalculateScale(){this.scale=q0().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),X.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(e){return this.scale(e)??this.getRange()[0]}}});var W6,Z1e=N(()=>{"use strict";yr();HF();W6=class extends iy{static{o(this,"LinearAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.domain=n,this.scale=Tl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let e=[...this.domain];this.axisPosition==="left"&&e.reverse(),this.scale=Tl().domain(e).range(this.getRange())}getScaleValue(e){return this.scale(e)}}});function qF(t,e,r,n){let i=new ny(n);return U6(t)?new q6(e,r,t.categories,t.title,i):new W6(e,r,[t.min,t.max],t.title,i)}var J1e=N(()=>{"use strict";H6();UF();Q1e();Z1e();o(qF,"getAxis")});function eye(t,e,r,n){let i=new ny(n);return new WF(i,t,e,r)}var WF,tye=N(()=>{"use strict";UF();WF=class{constructor(e,r,n,i){this.textDimensionCalculator=e;this.chartConfig=r;this.chartData=n;this.chartThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{o(this,"ChartTitle")}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){let r=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(r.width,e.width),i=r.height+2*this.chartConfig.titlePadding;return r.width<=n&&r.height<=i&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=i,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let e=[];return this.showChartTitle&&e.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),e}};o(eye,"getChartTitleComponent")});var Y6,rye=N(()=>{"use strict";yr();Y6=class{constructor(e,r,n,i,a){this.plotData=e;this.xAxis=r;this.yAxis=n;this.orientation=i;this.plotIndex=a}static{o(this,"LinePlot")}getDrawableElement(){let e=this.plotData.data.map(n=>[this.xAxis.getScaleValue(n[0]),this.yAxis.getScaleValue(n[1])]),r;return this.orientation==="horizontal"?r=Cl().y(n=>n[0]).x(n=>n[1])(e):r=Cl().x(n=>n[0]).y(n=>n[1])(e),r?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:r,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}});var X6,nye=N(()=>{"use strict";X6=class{constructor(e,r,n,i,a,s){this.barData=e;this.boundingRect=r;this.xAxis=n;this.yAxis=i;this.orientation=a;this.plotIndex=s}static{o(this,"BarPlot")}getDrawableElement(){let e=this.barData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),n=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),i=n/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:this.boundingRect.x,y:a[0]-i,height:n,width:a[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:a[0]-i,y:a[1],width:n,height:this.boundingRect.y+this.boundingRect.height-a[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function iye(t,e,r){return new YF(t,e,r)}var YF,aye=N(()=>{"use strict";rye();nye();YF=class{constructor(e,r,n){this.chartConfig=e;this.chartData=r;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0}}static{o(this,"BasePlot")}setAxes(e,r){this.xAxis=e,this.yAxis=r}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){return this.boundingRect.width=e.width,this.boundingRect.height=e.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let e=[];for(let[r,n]of this.chartData.plots.entries())switch(n.type){case"line":{let i=new Y6(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break;case"bar":{let i=new X6(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break}return e}};o(iye,"getPlotComponent")});var j6,sye=N(()=>{"use strict";J1e();tye();aye();H6();j6=class{constructor(e,r,n,i){this.chartConfig=e;this.chartData=r;this.componentStore={title:eye(e,r,n,i),plot:iye(e,r,n),xAxis:qF(r.xAxis,e.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},i),yAxis:qF(r.yAxis,e.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},i)}}static{o(this,"Orchestrator")}calculateVerticalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),l=this.componentStore.plot.calculateSpace({width:a,height:s});e-=l.width,r-=l.height,l=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),i=l.height,r-=l.height,this.componentStore.xAxis.setAxisPosition("bottom"),l=this.componentStore.xAxis.calculateSpace({width:e,height:r}),r-=l.height,this.componentStore.yAxis.setAxisPosition("left"),l=this.componentStore.yAxis.calculateSpace({width:e,height:r}),n=l.width,e-=l.width,e>0&&(a+=e,e=0),r>0&&(s+=r,r=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:n,y:i}),this.componentStore.xAxis.setRange([n,n+a]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:i+s}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(u=>VF(u))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=0,s=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),l=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),u=this.componentStore.plot.calculateSpace({width:s,height:l});e-=u.width,r-=u.height,u=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),n=u.height,r-=u.height,this.componentStore.xAxis.setAxisPosition("left"),u=this.componentStore.xAxis.calculateSpace({width:e,height:r}),e-=u.width,i=u.width,this.componentStore.yAxis.setAxisPosition("top"),u=this.componentStore.yAxis.calculateSpace({width:e,height:r}),r-=u.height,a=n+u.height,e>0&&(s+=e,e=0),r>0&&(l+=r,r=0),this.componentStore.plot.calculateSpace({width:s,height:l}),this.componentStore.plot.setBoundingBoxXY({x:i,y:a}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:i,y:n}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(h=>VF(h))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let e=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let r of Object.values(this.componentStore))e.push(...r.getDrawableElements());return e}}});var K6,oye=N(()=>{"use strict";sye();K6=class{static{o(this,"XYChartBuilder")}static build(e,r,n,i){return new j6(e,r,n,i).getDrawableElement()}}});function cye(){let t=mh(),e=Qt();return Vn(t.xyChart,e.themeVariables.xyChart)}function uye(){let t=Qt();return Vn(ur.xyChart,t.xyChart)}function hye(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function KF(t){let e=Qt();return sr(t.trim(),e)}function kZe(t){lye=t}function EZe(t){t==="horizontal"?v4.chartOrientation="horizontal":v4.chartOrientation="vertical"}function SZe(t){pn.xAxis.title=KF(t.text)}function fye(t,e){pn.xAxis={type:"linear",title:pn.xAxis.title,min:t,max:e},Q6=!0}function CZe(t){pn.xAxis={type:"band",title:pn.xAxis.title,categories:t.map(e=>KF(e.text))},Q6=!0}function AZe(t){pn.yAxis.title=KF(t.text)}function _Ze(t,e){pn.yAxis={type:"linear",title:pn.yAxis.title,min:t,max:e},jF=!0}function DZe(t){let e=Math.min(...t),r=Math.max(...t),n=ry(pn.yAxis)?pn.yAxis.min:1/0,i=ry(pn.yAxis)?pn.yAxis.max:-1/0;pn.yAxis={type:"linear",title:pn.yAxis.title,min:Math.min(n,e),max:Math.max(i,r)}}function dye(t){let e=[];if(t.length===0)return e;if(!Q6){let r=ry(pn.xAxis)?pn.xAxis.min:1/0,n=ry(pn.xAxis)?pn.xAxis.max:-1/0;fye(Math.min(r,1),Math.max(n,t.length))}if(jF||DZe(t),U6(pn.xAxis)&&(e=pn.xAxis.categories.map((r,n)=>[r,t[n]])),ry(pn.xAxis)){let r=pn.xAxis.min,n=pn.xAxis.max,i=(n-r)/(t.length-1),a=[];for(let s=r;s<=n;s+=i)a.push(`${s}`);e=a.map((s,l)=>[s,t[l]])}return e}function pye(t){return XF[t===0?0:t%XF.length]}function LZe(t,e){let r=dye(e);pn.plots.push({type:"line",strokeFill:pye(y4),strokeWidth:2,data:r}),y4++}function RZe(t,e){let r=dye(e);pn.plots.push({type:"bar",fill:pye(y4),data:r}),y4++}function NZe(){if(pn.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return pn.title=Pr(),K6.build(v4,pn,x4,lye)}function MZe(){return x4}function IZe(){return v4}function OZe(){return pn}var y4,lye,v4,x4,pn,XF,Q6,jF,PZe,mye,gye=N(()=>{"use strict";qn();La();Oy();tr();gr();ci();oye();H6();y4=0,v4=uye(),x4=cye(),pn=hye(),XF=x4.plotColorPalette.split(",").map(t=>t.trim()),Q6=!1,jF=!1;o(cye,"getChartDefaultThemeConfig");o(uye,"getChartDefaultConfig");o(hye,"getChartDefaultData");o(KF,"textSanitizer");o(kZe,"setTmpSVGG");o(EZe,"setOrientation");o(SZe,"setXAxisTitle");o(fye,"setXAxisRangeData");o(CZe,"setXAxisBand");o(AZe,"setYAxisTitle");o(_Ze,"setYAxisRangeData");o(DZe,"setYAxisRangeFromPlotData");o(dye,"transformDataWithoutCategory");o(pye,"getPlotColorFromPalette");o(LZe,"setLineData");o(RZe,"setBarData");o(NZe,"getDrawableElem");o(MZe,"getChartThemeConfig");o(IZe,"getChartConfig");o(OZe,"getXYChartData");PZe=o(function(){Sr(),y4=0,v4=uye(),pn=hye(),x4=cye(),XF=x4.plotColorPalette.split(",").map(t=>t.trim()),Q6=!1,jF=!1},"clear"),mye={getDrawableElem:NZe,clear:PZe,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,getAccDescription:Or,setAccDescription:Ir,setOrientation:EZe,setXAxisTitle:SZe,setXAxisRangeData:fye,setXAxisBand:CZe,setYAxisTitle:AZe,setYAxisRangeData:_Ze,setLineData:LZe,setBarData:RZe,setTmpSVGG:kZe,getChartThemeConfig:MZe,getChartConfig:IZe,getXYChartData:OZe}});var BZe,yye,vye=N(()=>{"use strict";pt();tu();Ei();BZe=o((t,e,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig(),l=i.getXYChartData().plots[0].data.map(T=>T[1]);function u(T){return T==="top"?"text-before-edge":"middle"}o(u,"getDominantBaseLine");function h(T){return T==="left"?"start":T==="right"?"end":"middle"}o(h,"getTextAnchor");function f(T){return`translate(${T.x}, ${T.y}) rotate(${T.rotation||0})`}o(f,"getTextTransformation"),X.debug(`Rendering xychart chart +`+t);let d=aa(e),p=d.append("g").attr("class","main"),m=p.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");mn(d,s.height,s.width,!0),d.attr("viewBox",`0 0 ${s.width} ${s.height}`),m.attr("fill",a.backgroundColor),i.setTmpSVGG(d.append("g").attr("class","mermaid-tmp-group"));let g=i.getDrawableElem(),y={};function v(T){let S=p,w="";for(let[k]of T.entries()){let A=p;k>0&&y[w]&&(A=y[w]),w+=T[k],S=y[w],S||(S=y[w]=A.append("g").attr("class",T[k]))}return S}o(v,"getGroup");for(let T of g){if(T.data.length===0)continue;let S=v(T.groupTexts);switch(T.type){case"rect":if(S.selectAll("rect").data(T.data).enter().append("rect").attr("x",w=>w.x).attr("y",w=>w.y).attr("width",w=>w.width).attr("height",w=>w.height).attr("fill",w=>w.fill).attr("stroke",w=>w.strokeFill).attr("stroke-width",w=>w.strokeWidth),s.showDataLabel)if(s.chartOrientation==="horizontal"){let A=function(I,L){let{data:E,label:D}=I;return L*D.length*.7<=E.width-10};var x=A;o(A,"fitsHorizontally");let w=.7,k=T.data.map((I,L)=>({data:I,label:l[L].toString()})).filter(I=>I.data.width>0&&I.data.height>0),C=k.map(I=>{let{data:L}=I,E=L.height*.7;for(;!A(I,E)&&E>0;)E-=1;return E}),R=Math.floor(Math.min(...C));S.selectAll("text").data(k).enter().append("text").attr("x",I=>I.data.x+I.data.width-10).attr("y",I=>I.data.y+I.data.height/2).attr("text-anchor","end").attr("dominant-baseline","middle").attr("fill","black").attr("font-size",`${R}px`).text(I=>I.label)}else{let A=function(I,L,E){let{data:D,label:_}=I,M=L*_.length*.7,P=D.x+D.width/2,B=P-M/2,F=P+M/2,G=B>=D.x&&F<=D.x+D.width,$=D.y+E+L<=D.y+D.height;return G&&$};var b=A;o(A,"fitsInBar");let w=10,k=T.data.map((I,L)=>({data:I,label:l[L].toString()})).filter(I=>I.data.width>0&&I.data.height>0),C=k.map(I=>{let{data:L,label:E}=I,D=L.width/(E.length*.7);for(;!A(I,D,10)&&D>0;)D-=1;return D}),R=Math.floor(Math.min(...C));S.selectAll("text").data(k).enter().append("text").attr("x",I=>I.data.x+I.data.width/2).attr("y",I=>I.data.y+10).attr("text-anchor","middle").attr("dominant-baseline","hanging").attr("fill","black").attr("font-size",`${R}px`).text(I=>I.label)}break;case"text":S.selectAll("text").data(T.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",w=>w.fill).attr("font-size",w=>w.fontSize).attr("dominant-baseline",w=>u(w.verticalPos)).attr("text-anchor",w=>h(w.horizontalPos)).attr("transform",w=>f(w)).text(w=>w.text);break;case"path":S.selectAll("path").data(T.data).enter().append("path").attr("d",w=>w.path).attr("fill",w=>w.fill?w.fill:"none").attr("stroke",w=>w.strokeFill).attr("stroke-width",w=>w.strokeWidth);break}}},"draw"),yye={draw:BZe}});var xye={};dr(xye,{diagram:()=>FZe});var FZe,bye=N(()=>{"use strict";K1e();gye();vye();FZe={parser:j1e,db:mye,renderer:yye}});var QF,kye,Eye=N(()=>{"use strict";QF=(function(){var t=o(function(fe,xe,W,he){for(W=W||{},he=fe.length;he--;W[fe[he]]=xe);return W},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],s=[1,22],l=[2,7],u=[1,26],h=[1,27],f=[1,28],d=[1,29],p=[1,33],m=[1,34],g=[1,35],y=[1,36],v=[1,37],x=[1,38],b=[1,24],T=[1,31],S=[1,32],w=[1,30],k=[1,39],A=[1,40],C=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],R=[1,61],I=[89,90],L=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],E=[27,29],D=[1,70],_=[1,71],O=[1,72],M=[1,73],P=[1,74],B=[1,75],F=[1,76],G=[1,83],$=[1,80],U=[1,84],j=[1,85],te=[1,86],Y=[1,87],oe=[1,88],J=[1,89],ue=[1,90],re=[1,91],ee=[1,92],Z=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],K=[63,64],ae=[1,101],Q=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],de=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],ne=[1,110],Te=[1,106],q=[1,107],Ve=[1,108],pe=[1,109],Be=[1,111],Ye=[1,116],He=[1,117],Le=[1,114],Ie=[1,115],Ne={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:o(function(xe,W,he,z,se,le,ke){var ve=le.length-1;switch(se){case 4:this.$=le[ve].trim(),z.setAccTitle(this.$);break;case 5:case 6:this.$=le[ve].trim(),z.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:z.setDirection("TB");break;case 18:z.setDirection("BT");break;case 19:z.setDirection("RL");break;case 20:z.setDirection("LR");break;case 21:z.addRequirement(le[ve-3],le[ve-4]);break;case 22:z.addRequirement(le[ve-5],le[ve-6]),z.setClass([le[ve-5]],le[ve-3]);break;case 23:z.setNewReqId(le[ve-2]);break;case 24:z.setNewReqText(le[ve-2]);break;case 25:z.setNewReqRisk(le[ve-2]);break;case 26:z.setNewReqVerifyMethod(le[ve-2]);break;case 29:this.$=z.RequirementType.REQUIREMENT;break;case 30:this.$=z.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=z.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=z.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=z.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=z.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=z.RiskLevel.LOW_RISK;break;case 36:this.$=z.RiskLevel.MED_RISK;break;case 37:this.$=z.RiskLevel.HIGH_RISK;break;case 38:this.$=z.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=z.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=z.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=z.VerifyType.VERIFY_TEST;break;case 42:z.addElement(le[ve-3]);break;case 43:z.addElement(le[ve-5]),z.setClass([le[ve-5]],le[ve-3]);break;case 44:z.setNewElementType(le[ve-2]);break;case 45:z.setNewElementDocRef(le[ve-2]);break;case 48:z.addRelationship(le[ve-2],le[ve],le[ve-4]);break;case 49:z.addRelationship(le[ve-2],le[ve-4],le[ve]);break;case 50:this.$=z.Relationships.CONTAINS;break;case 51:this.$=z.Relationships.COPIES;break;case 52:this.$=z.Relationships.DERIVES;break;case 53:this.$=z.Relationships.SATISFIES;break;case 54:this.$=z.Relationships.VERIFIES;break;case 55:this.$=z.Relationships.REFINES;break;case 56:this.$=z.Relationships.TRACES;break;case 57:this.$=le[ve-2],z.defineClass(le[ve-1],le[ve]);break;case 58:z.setClass(le[ve-1],le[ve]);break;case 59:z.setClass([le[ve-2]],le[ve]);break;case 60:case 62:this.$=[le[ve]];break;case 61:case 63:this.$=le[ve-2].concat([le[ve]]);break;case 64:this.$=le[ve-2],z.setCssStyle(le[ve-1],le[ve]);break;case 65:this.$=[le[ve]];break;case 66:le[ve-2].push(le[ve]),this.$=le[ve-2];break;case 68:this.$=le[ve-1]+le[ve];break}},"anonymous"),table:[{3:1,4:2,6:e,9:r,11:n,13:i},{1:[3]},{3:8,4:2,5:[1,7],6:e,9:r,11:n,13:i},{5:[1,9]},{10:[1,10]},{12:[1,11]},t(a,[2,6]),{3:12,4:2,6:e,9:r,11:n,13:i},{1:[2,2]},{4:17,5:s,7:13,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},t(a,[2,4]),t(a,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:s,7:42,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:43,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:44,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:45,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:46,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:47,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:48,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:49,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:50,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},t(C,[2,17]),t(C,[2,18]),t(C,[2,19]),t(C,[2,20]),{30:60,33:62,75:R,89:k,90:A},{30:63,33:62,75:R,89:k,90:A},{30:64,33:62,75:R,89:k,90:A},t(I,[2,29]),t(I,[2,30]),t(I,[2,31]),t(I,[2,32]),t(I,[2,33]),t(I,[2,34]),t(L,[2,81]),t(L,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},t(E,[2,79]),t(E,[2,80]),{27:[1,67],29:[1,68]},t(E,[2,85]),t(E,[2,86]),{62:69,65:D,66:_,67:O,68:M,69:P,70:B,71:F},{62:77,65:D,66:_,67:O,68:M,69:P,70:B,71:F},{30:78,33:62,75:R,89:k,90:A},{73:79,75:G,76:$,78:81,79:82,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee},t(Z,[2,60]),t(Z,[2,62]),{73:93,75:G,76:$,78:81,79:82,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee},{30:94,33:62,75:R,76:$,89:k,90:A},{5:[1,95]},{30:96,33:62,75:R,89:k,90:A},{5:[1,97]},{30:98,33:62,75:R,89:k,90:A},{63:[1,99]},t(K,[2,50]),t(K,[2,51]),t(K,[2,52]),t(K,[2,53]),t(K,[2,54]),t(K,[2,55]),t(K,[2,56]),{64:[1,100]},t(C,[2,59],{76:$}),t(C,[2,64],{76:ae}),{33:103,75:[1,102],89:k,90:A},t(Q,[2,65],{79:104,75:G,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee}),t(de,[2,67]),t(de,[2,69]),t(de,[2,70]),t(de,[2,71]),t(de,[2,72]),t(de,[2,73]),t(de,[2,74]),t(de,[2,75]),t(de,[2,76]),t(de,[2,77]),t(de,[2,78]),t(C,[2,57],{76:ae}),t(C,[2,58],{76:$}),{5:ne,28:105,31:Te,34:q,36:Ve,38:pe,40:Be},{27:[1,112],76:$},{5:Ye,40:He,56:113,57:Le,59:Ie},{27:[1,118],76:$},{33:119,89:k,90:A},{33:120,89:k,90:A},{75:G,78:121,79:82,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee},t(Z,[2,61]),t(Z,[2,63]),t(de,[2,68]),t(C,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:ne,28:126,31:Te,34:q,36:Ve,38:pe,40:Be},t(C,[2,28]),{5:[1,127]},t(C,[2,42]),{32:[1,128]},{32:[1,129]},{5:Ye,40:He,56:130,57:Le,59:Ie},t(C,[2,47]),{5:[1,131]},t(C,[2,48]),t(C,[2,49]),t(Q,[2,66],{79:104,75:G,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee}),{33:132,89:k,90:A},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},t(C,[2,27]),{5:ne,28:145,31:Te,34:q,36:Ve,38:pe,40:Be},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},t(C,[2,46]),{5:Ye,40:He,56:152,57:Le,59:Ie},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},t(C,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},t(C,[2,43]),{5:ne,28:159,31:Te,34:q,36:Ve,38:pe,40:Be},{5:ne,28:160,31:Te,34:q,36:Ve,38:pe,40:Be},{5:ne,28:161,31:Te,34:q,36:Ve,38:pe,40:Be},{5:ne,28:162,31:Te,34:q,36:Ve,38:pe,40:Be},{5:Ye,40:He,56:163,57:Le,59:Ie},{5:Ye,40:He,56:164,57:Le,59:Ie},t(C,[2,23]),t(C,[2,24]),t(C,[2,25]),t(C,[2,26]),t(C,[2,44]),t(C,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:o(function(xe,W){if(W.recoverable)this.trace(xe);else{var he=new Error(xe);throw he.hash=W,he}},"parseError"),parse:o(function(xe){var W=this,he=[0],z=[],se=[null],le=[],ke=this.table,ve="",ye=0,Re=0,_e=0,ze=2,Ke=1,xt=le.slice.call(arguments,1),We=Object.create(this.lexer),Oe={yy:{}};for(var et in this.yy)Object.prototype.hasOwnProperty.call(this.yy,et)&&(Oe.yy[et]=this.yy[et]);We.setInput(xe,Oe.yy),Oe.yy.lexer=We,Oe.yy.parser=this,typeof We.yylloc>"u"&&(We.yylloc={});var Ue=We.yylloc;le.push(Ue);var lt=We.options&&We.options.ranges;typeof Oe.yy.parseError=="function"?this.parseError=Oe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Gt(ar){he.length=he.length-2*ar,se.length=se.length-ar,le.length=le.length-ar}o(Gt,"popStack");function vt(){var ar;return ar=z.pop()||We.lex()||Ke,typeof ar!="number"&&(ar instanceof Array&&(z=ar,ar=z.pop()),ar=W.symbols_[ar]||ar),ar}o(vt,"lex");for(var Lt,dt,nt,bt,wt,yt,ft={},Ur,_t,bn,Br;;){if(nt=he[he.length-1],this.defaultActions[nt]?bt=this.defaultActions[nt]:((Lt===null||typeof Lt>"u")&&(Lt=vt()),bt=ke[nt]&&ke[nt][Lt]),typeof bt>"u"||!bt.length||!bt[0]){var cr="";Br=[];for(Ur in ke[nt])this.terminals_[Ur]&&Ur>ze&&Br.push("'"+this.terminals_[Ur]+"'");We.showPosition?cr="Parse error on line "+(ye+1)+`: `+We.showPosition()+` -Expecting `+Pn.join(", ")+", got '"+(this.terminals_[Et]||Et)+"'":At="Parse error on line "+(qe+1)+": Unexpected "+(Et==Ue?"end of input":"'"+(this.terminals_[Et]||Et)+"'"),this.parseError(At,{text:We.match,token:this.terminals_[Et]||Et,line:We.yylineno,loc:bt,expected:Pn})}if(nt[0]instanceof Array&&nt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+Et);switch(nt[0]){case 1:ve.push(Et),_e.push(We.yytext),we.push(We.yylloc),ve.push(nt[1]),Et=null,ft?(Et=ft,ft=null):(at=We.yyleng,De=We.yytext,qe=We.yylineno,bt=We.yylloc,Rt>0&&Rt--);break;case 2:if(_r=this.productions_[nt[1]][1],On.$=_e[_e.length-_r],On._$={first_line:we[we.length-(_r||1)].first_line,last_line:we[we.length-1].last_line,first_column:we[we.length-(_r||1)].first_column,last_column:we[we.length-1].last_column},Mt&&(On._$.range=[we[we.length-(_r||1)].range[0],we[we.length-1].range[1]]),Tt=this.performAction.apply(On,[De,at,qe,ot.yy,nt[1],_e,we].concat(ct)),typeof Tt<"u")return Tt;_r&&(ve=ve.slice(0,-1*_r*2),_e=_e.slice(0,-1*_r),we=we.slice(0,-1*_r)),ve.push(this.productions_[nt[1]][0]),_e.push(On.$),we.push(On._$),Dr=Ve[ve[ve.length-2]][ve[ve.length-1]],ve.push(Dr);break;case 3:return!0}}return!0},"parse")},oe=function(){var xe={EOF:1,parseError:o(function(pe,ve){if(this.yy.parser)this.yy.parser.parseError(pe,ve);else throw new Error(pe)},"parseError"),setInput:o(function(q,pe){return this.yy=pe||this.yy||{},this._input=q,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var q=this._input[0];this.yytext+=q,this.yyleng++,this.offset++,this.match+=q,this.matched+=q;var pe=q.match(/(?:\r\n?|\n).*/g);return pe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),q},"input"),unput:o(function(q){var pe=q.length,ve=q.split(/(?:\r\n?|\n)/g);this._input=q+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-pe),this.offset-=pe;var Pe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ve.length-1&&(this.yylineno-=ve.length-1);var _e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ve?(ve.length===Pe.length?this.yylloc.first_column:0)+Pe[Pe.length-ve.length].length-ve[0].length:this.yylloc.first_column-pe},this.options.ranges&&(this.yylloc.range=[_e[0],_e[0]+this.yyleng-pe]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(q){this.unput(this.match.slice(q))},"less"),pastInput:o(function(){var q=this.matched.substr(0,this.matched.length-this.match.length);return(q.length>20?"...":"")+q.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var q=this.match;return q.length<20&&(q+=this._input.substr(0,20-q.length)),(q.substr(0,20)+(q.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var q=this.pastInput(),pe=new Array(q.length+1).join("-");return q+this.upcomingInput()+` -`+pe+"^"},"showPosition"),test_match:o(function(q,pe){var ve,Pe,_e;if(this.options.backtrack_lexer&&(_e={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(_e.yylloc.range=this.yylloc.range.slice(0))),Pe=q[0].match(/(?:\r\n?|\n).*/g),Pe&&(this.yylineno+=Pe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Pe?Pe[Pe.length-1].length-Pe[Pe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+q[0].length},this.yytext+=q[0],this.match+=q[0],this.matches=q,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(q[0].length),this.matched+=q[0],ve=this.performAction.call(this,this.yy,this,pe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ve)return ve;if(this._backtrack){for(var we in _e)this[we]=_e[we];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var q,pe,ve,Pe;this._more||(this.yytext="",this.match="");for(var _e=this._currentRules(),we=0;we<_e.length;we++)if(ve=this._input.match(this.rules[_e[we]]),ve&&(!pe||ve[0].length>pe[0].length)){if(pe=ve,Pe=we,this.options.backtrack_lexer){if(q=this.test_match(ve,_e[we]),q!==!1)return q;if(this._backtrack){pe=!1;continue}else return!1}else if(!this.options.flex)break}return pe?(q=this.test_match(pe,_e[Pe]),q!==!1?q:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var pe=this.next();return pe||this.lex()},"lex"),begin:o(function(pe){this.conditionStack.push(pe)},"begin"),popState:o(function(){var pe=this.conditionStack.length-1;return pe>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(pe){return pe=this.conditionStack.length-1-Math.abs(pe||0),pe>=0?this.conditionStack[pe]:"INITIAL"},"topState"),pushState:o(function(pe){this.begin(pe)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(pe,ve,Pe,_e){var we=_e;switch(Pe){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:return 65;case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}};return xe}();re.lexer=oe;function V(){this.yy={}}return o(V,"Parser"),V.prototype=re,re.Parser=V,new V}();hO.parser=hO;uhe=hO});var ms,y6,fhe=N(()=>{"use strict";dr();Ya();vt();_y();ms=oh(),y6=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{o(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:or.quadrantChart?.chartWidth||500,chartWidth:or.quadrantChart?.chartHeight||500,titlePadding:or.quadrantChart?.titlePadding||10,titleFontSize:or.quadrantChart?.titleFontSize||20,quadrantPadding:or.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:or.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:or.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:or.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:or.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:or.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:or.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:or.quadrantChart?.pointTextPadding||5,pointLabelFontSize:or.quadrantChart?.pointLabelFontSize||12,pointRadius:or.quadrantChart?.pointRadius||5,xAxisPosition:or.quadrantChart?.xAxisPosition||"top",yAxisPosition:or.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:or.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:or.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:ms.quadrant1Fill,quadrant2Fill:ms.quadrant2Fill,quadrant3Fill:ms.quadrant3Fill,quadrant4Fill:ms.quadrant4Fill,quadrant1TextFill:ms.quadrant1TextFill,quadrant2TextFill:ms.quadrant2TextFill,quadrant3TextFill:ms.quadrant3TextFill,quadrant4TextFill:ms.quadrant4TextFill,quadrantPointFill:ms.quadrantPointFill,quadrantPointTextFill:ms.quadrantPointTextFill,quadrantXAxisTextFill:ms.quadrantXAxisTextFill,quadrantYAxisTextFill:ms.quadrantYAxisTextFill,quadrantTitleFill:ms.quadrantTitleFill,quadrantInternalBorderStrokeFill:ms.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:ms.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,Y.info("clear called")}setData(e){this.data={...this.data,...e}}addPoints(e){this.data.points=[...e,...this.data.points]}addClass(e,r){this.classes.set(e,r)}setConfig(e){Y.trace("setConfig called with: ",e),this.config={...this.config,...e}}setThemeConfig(e){Y.trace("setThemeConfig called with: ",e),this.themeConfig={...this.themeConfig,...e}}calculateSpace(e,r,n,i){let a=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,s={top:e==="top"&&r?a:0,bottom:e==="bottom"&&r?a:0},l=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,u={left:this.config.yAxisPosition==="left"&&n?l:0,right:this.config.yAxisPosition==="right"&&n?l:0},h=this.config.titleFontSize+this.config.titlePadding*2,f={top:i?h:0},d=this.config.quadrantPadding+u.left,p=this.config.quadrantPadding+s.top+f.top,m=this.config.chartWidth-this.config.quadrantPadding*2-u.left-u.right,g=this.config.chartHeight-this.config.quadrantPadding*2-s.top-s.bottom-f.top,y=m/2,v=g/2;return{xAxisSpace:s,yAxisSpace:u,titleSpace:f,quadrantSpace:{quadrantLeft:d,quadrantTop:p,quadrantWidth:m,quadrantHalfWidth:y,quadrantHeight:g,quadrantHalfHeight:v}}}getAxisLabels(e,r,n,i){let{quadrantSpace:a,titleSpace:s}=i,{quadrantHalfHeight:l,quadrantHeight:u,quadrantLeft:h,quadrantHalfWidth:f,quadrantTop:d,quadrantWidth:p}=a,m=!!this.data.xAxisRightText,g=!!this.data.yAxisTopText,y=[];return this.data.xAxisLeftText&&r&&y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&r&&y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+f+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+u-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+l-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),y}getQuadrants(e){let{quadrantSpace:r}=e,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:a,quadrantTop:s}=r,l=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s,width:a,height:n,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s,width:a,height:n,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant4Fill}];for(let u of l)u.text.x=u.x+u.width/2,this.data.points.length===0?(u.text.y=u.y+u.height/2,u.text.horizontalPos="middle"):(u.text.y=u.y+this.config.quadrantTextTopPadding,u.text.horizontalPos="top");return l}getQuadrantPoints(e){let{quadrantSpace:r}=e,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:s}=r,l=gl().domain([0,1]).range([i,s+i]),u=gl().domain([0,1]).range([n+a,a]);return this.data.points.map(f=>{let d=this.classes.get(f.className);return d&&(f={...d,...f}),{x:l(f.x),y:u(f.y),fill:f.color??this.themeConfig.quadrantPointFill,radius:f.radius??this.config.pointRadius,text:{text:f.text,fill:this.themeConfig.quadrantPointTextFill,x:l(f.x),y:u(f.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:f.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:f.strokeWidth??"0px"}})}getBorders(e){let r=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=e,{quadrantHalfHeight:i,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:l,quadrantTop:u,quadrantWidth:h}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u,x2:s+h+r,y2:u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+h,y1:u+r,x2:s+h,y2:u+a-r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u+a,x2:s+h+r,y2:u+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:u+r,x2:s,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+l,y1:u+r,x2:s+l,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:u+i,x2:s+h-r,y2:u+i}]}getTitle(e){if(e)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let e=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),r=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(i,e,r,n);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(i,e,r,a),borderLines:this.getBorders(a),title:this.getTitle(n)}}}});function fO(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function dhe(t){return!/^\d+$/.test(t)}function phe(t){return!/^\d+px$/.test(t)}var Ap,mhe=N(()=>{"use strict";Ap=class extends Error{static{o(this,"InvalidStyleError")}constructor(e,r,n){super(`value for ${e} ${r} is invalid, please use a valid ${n}`),this.name="InvalidStyleError"}};o(fO,"validateHexCode");o(dhe,"validateNumber");o(phe,"validateSizeInPixels")});function Xu(t){return Tr(t.trim(),pGe)}function mGe(t){ba.setData({quadrant1Text:Xu(t.text)})}function gGe(t){ba.setData({quadrant2Text:Xu(t.text)})}function yGe(t){ba.setData({quadrant3Text:Xu(t.text)})}function vGe(t){ba.setData({quadrant4Text:Xu(t.text)})}function xGe(t){ba.setData({xAxisLeftText:Xu(t.text)})}function bGe(t){ba.setData({xAxisRightText:Xu(t.text)})}function wGe(t){ba.setData({yAxisTopText:Xu(t.text)})}function TGe(t){ba.setData({yAxisBottomText:Xu(t.text)})}function dO(t){let e={};for(let r of t){let[n,i]=r.trim().split(/\s*:\s*/);if(n==="radius"){if(dhe(i))throw new Ap(n,i,"number");e.radius=parseInt(i)}else if(n==="color"){if(fO(i))throw new Ap(n,i,"hex code");e.color=i}else if(n==="stroke-color"){if(fO(i))throw new Ap(n,i,"hex code");e.strokeColor=i}else if(n==="stroke-width"){if(phe(i))throw new Ap(n,i,"number of pixels (eg. 10px)");e.strokeWidth=i}else throw new Error(`style named ${n} is not supported.`)}return e}function kGe(t,e,r,n,i){let a=dO(i);ba.addPoints([{x:r,y:n,text:Xu(t.text),className:e,...a}])}function EGe(t,e){ba.addClass(t,dO(e))}function SGe(t){ba.setConfig({chartWidth:t})}function CGe(t){ba.setConfig({chartHeight:t})}function AGe(){let t=me(),{themeVariables:e,quadrantChart:r}=t;return r&&ba.setConfig(r),ba.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),ba.setData({titleText:Ir()}),ba.build()}var pGe,ba,_Ge,ghe,yhe=N(()=>{"use strict";zt();gr();mi();fhe();mhe();pGe=me();o(Xu,"textSanitizer");ba=new y6;o(mGe,"setQuadrant1Text");o(gGe,"setQuadrant2Text");o(yGe,"setQuadrant3Text");o(vGe,"setQuadrant4Text");o(xGe,"setXAxisLeftText");o(bGe,"setXAxisRightText");o(wGe,"setYAxisTopText");o(TGe,"setYAxisBottomText");o(dO,"parseStyles");o(kGe,"addPoint");o(EGe,"addClass");o(SGe,"setWidth");o(CGe,"setHeight");o(AGe,"getQuadrantData");_Ge=o(function(){ba.clear(),Ar()},"clear"),ghe={setWidth:SGe,setHeight:CGe,setQuadrant1Text:mGe,setQuadrant2Text:gGe,setQuadrant3Text:yGe,setQuadrant4Text:vGe,setXAxisLeftText:xGe,setXAxisRightText:bGe,setYAxisTopText:wGe,setYAxisBottomText:TGe,parseStyles:dO,addPoint:kGe,addClass:EGe,getQuadrantData:AGe,clear:_Ge,setAccTitle:Lr,getAccTitle:Rr,setDiagramTitle:$r,getDiagramTitle:Ir,getAccDescription:Mr,setAccDescription:Nr}});var DGe,vhe,xhe=N(()=>{"use strict";dr();zt();vt();Ei();DGe=o((t,e,r,n)=>{function i(S){return S==="top"?"hanging":"middle"}o(i,"getDominantBaseLine");function a(S){return S==="left"?"start":"middle"}o(a,"getTextAnchor");function s(S){return`translate(${S.x}, ${S.y}) rotate(${S.rotation||0})`}o(s,"getTransformation");let l=me();Y.debug(`Rendering quadrant chart -`+t);let u=l.securityLevel,h;u==="sandbox"&&(h=Ge("#i"+e));let d=(u==="sandbox"?Ge(h.nodes()[0].contentDocument.body):Ge("body")).select(`[id="${e}"]`),p=d.append("g").attr("class","main"),m=l.quadrantChart?.chartWidth??500,g=l.quadrantChart?.chartHeight??500;vn(d,g,m,l.quadrantChart?.useMaxWidth??!0),d.attr("viewBox","0 0 "+m+" "+g),n.db.setHeight(g),n.db.setWidth(m);let y=n.db.getQuadrantData(),v=p.append("g").attr("class","quadrants"),x=p.append("g").attr("class","border"),b=p.append("g").attr("class","data-points"),w=p.append("g").attr("class","labels"),C=p.append("g").attr("class","title");y.title&&C.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",i(y.title.horizontalPos)).attr("text-anchor",a(y.title.verticalPos)).attr("transform",s(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",S=>S.x1).attr("y1",S=>S.y1).attr("x2",S=>S.x2).attr("y2",S=>S.y2).style("stroke",S=>S.strokeFill).style("stroke-width",S=>S.strokeWidth);let T=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");T.append("rect").attr("x",S=>S.x).attr("y",S=>S.y).attr("width",S=>S.width).attr("height",S=>S.height).attr("fill",S=>S.fill),T.append("text").attr("x",0).attr("y",0).attr("fill",S=>S.text.fill).attr("font-size",S=>S.text.fontSize).attr("dominant-baseline",S=>i(S.text.horizontalPos)).attr("text-anchor",S=>a(S.text.verticalPos)).attr("transform",S=>s(S.text)).text(S=>S.text.text),w.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(S=>S.text).attr("fill",S=>S.fill).attr("font-size",S=>S.fontSize).attr("dominant-baseline",S=>i(S.horizontalPos)).attr("text-anchor",S=>a(S.verticalPos)).attr("transform",S=>s(S));let A=b.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");A.append("circle").attr("cx",S=>S.x).attr("cy",S=>S.y).attr("r",S=>S.radius).attr("fill",S=>S.fill).attr("stroke",S=>S.strokeColor).attr("stroke-width",S=>S.strokeWidth),A.append("text").attr("x",0).attr("y",0).text(S=>S.text.text).attr("fill",S=>S.text.fill).attr("font-size",S=>S.text.fontSize).attr("dominant-baseline",S=>i(S.text.horizontalPos)).attr("text-anchor",S=>a(S.text.verticalPos)).attr("transform",S=>s(S.text))},"draw"),vhe={draw:DGe}});var bhe={};hr(bhe,{diagram:()=>LGe});var LGe,whe=N(()=>{"use strict";hhe();yhe();xhe();LGe={parser:uhe,db:ghe,renderer:vhe,styles:o(()=>"","styles")}});var pO,Ehe,She=N(()=>{"use strict";pO=function(){var t=o(function(O,M,B,F){for(B=B||{},F=O.length;F--;B[O[F]]=M);return B},"o"),e=[1,10,12,14,16,18,19,21,23],r=[2,6],n=[1,3],i=[1,5],a=[1,6],s=[1,7],l=[1,5,10,12,14,16,18,19,21,23,34,35,36],u=[1,25],h=[1,26],f=[1,28],d=[1,29],p=[1,30],m=[1,31],g=[1,32],y=[1,33],v=[1,34],x=[1,35],b=[1,36],w=[1,37],C=[1,43],T=[1,42],E=[1,47],A=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],_=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],I=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],D=[1,64],k={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:o(function(M,B,F,P,z,$,H){var Q=$.length-1;switch(z){case 5:P.setOrientation($[Q]);break;case 9:P.setDiagramTitle($[Q].text.trim());break;case 12:P.setLineData({text:"",type:"text"},$[Q]);break;case 13:P.setLineData($[Q-1],$[Q]);break;case 14:P.setBarData({text:"",type:"text"},$[Q]);break;case 15:P.setBarData($[Q-1],$[Q]);break;case 16:this.$=$[Q].trim(),P.setAccTitle(this.$);break;case 17:case 18:this.$=$[Q].trim(),P.setAccDescription(this.$);break;case 19:this.$=$[Q-1];break;case 20:this.$=[Number($[Q-2]),...$[Q]];break;case 21:this.$=[Number($[Q])];break;case 22:P.setXAxisTitle($[Q]);break;case 23:P.setXAxisTitle($[Q-1]);break;case 24:P.setXAxisTitle({type:"text",text:""});break;case 25:P.setXAxisBand($[Q]);break;case 26:P.setXAxisRangeData(Number($[Q-2]),Number($[Q]));break;case 27:this.$=$[Q-1];break;case 28:this.$=[$[Q-2],...$[Q]];break;case 29:this.$=[$[Q]];break;case 30:P.setYAxisTitle($[Q]);break;case 31:P.setYAxisTitle($[Q-1]);break;case 32:P.setYAxisTitle({type:"text",text:""});break;case 33:P.setYAxisRangeData(Number($[Q-2]),Number($[Q]));break;case 37:this.$={text:$[Q],type:"text"};break;case 38:this.$={text:$[Q],type:"text"};break;case 39:this.$={text:$[Q],type:"markdown"};break;case 40:this.$=$[Q];break;case 41:this.$=$[Q-1]+""+$[Q];break}},"anonymous"),table:[t(e,r,{3:1,4:2,7:4,5:n,34:i,35:a,36:s}),{1:[3]},t(e,r,{4:2,7:4,3:8,5:n,34:i,35:a,36:s}),t(e,r,{4:2,7:4,6:9,3:10,5:n,8:[1,11],34:i,35:a,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},t(l,[2,34]),t(l,[2,35]),t(l,[2,36]),{1:[2,1]},t(e,r,{4:2,7:4,3:21,5:n,34:i,35:a,36:s}),{1:[2,3]},t(l,[2,5]),t(e,[2,7],{4:22,34:i,35:a,36:s}),{11:23,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:39,13:38,24:C,27:T,29:40,30:41,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:45,15:44,27:E,33:46,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:49,17:48,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:52,17:51,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{20:[1,53]},{22:[1,54]},t(S,[2,18]),{1:[2,2]},t(S,[2,8]),t(S,[2,9]),t(_,[2,37],{40:55,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w}),t(_,[2,38]),t(_,[2,39]),t(I,[2,40]),t(I,[2,42]),t(I,[2,43]),t(I,[2,44]),t(I,[2,45]),t(I,[2,46]),t(I,[2,47]),t(I,[2,48]),t(I,[2,49]),t(I,[2,50]),t(I,[2,51]),t(S,[2,10]),t(S,[2,22],{30:41,29:56,24:C,27:T}),t(S,[2,24]),t(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},t(S,[2,11]),t(S,[2,30],{33:60,27:E}),t(S,[2,32]),{31:[1,61]},t(S,[2,12]),{17:62,24:A},{25:63,27:D},t(S,[2,14]),{17:65,24:A},t(S,[2,16]),t(S,[2,17]),t(I,[2,41]),t(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(S,[2,31]),{27:[1,69]},t(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(S,[2,15]),t(S,[2,26]),t(S,[2,27]),{11:59,32:72,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},t(S,[2,33]),t(S,[2,19]),{25:73,27:D},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:o(function(M,B){if(B.recoverable)this.trace(M);else{var F=new Error(M);throw F.hash=B,F}},"parseError"),parse:o(function(M){var B=this,F=[0],P=[],z=[null],$=[],H=this.table,Q="",j=0,ie=0,ne=0,le=2,he=1,K=$.slice.call(arguments,1),X=Object.create(this.lexer),te={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(te.yy[J]=this.yy[J]);X.setInput(M,te.yy),te.yy.lexer=X,te.yy.parser=this,typeof X.yylloc>"u"&&(X.yylloc={});var se=X.yylloc;$.push(se);var ue=X.options&&X.options.ranges;typeof te.yy.parseError=="function"?this.parseError=te.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Z(re){F.length=F.length-2*re,z.length=z.length-re,$.length=$.length-re}o(Z,"popStack");function Se(){var re;return re=P.pop()||X.lex()||he,typeof re!="number"&&(re instanceof Array&&(P=re,re=P.pop()),re=B.symbols_[re]||re),re}o(Se,"lex");for(var ce,ae,Oe,ge,ze,He,$e={},Re,Ie,be,W;;){if(Oe=F[F.length-1],this.defaultActions[Oe]?ge=this.defaultActions[Oe]:((ce===null||typeof ce>"u")&&(ce=Se()),ge=H[Oe]&&H[Oe][ce]),typeof ge>"u"||!ge.length||!ge[0]){var de="";W=[];for(Re in H[Oe])this.terminals_[Re]&&Re>le&&W.push("'"+this.terminals_[Re]+"'");X.showPosition?de="Parse error on line "+(j+1)+`: -`+X.showPosition()+` -Expecting `+W.join(", ")+", got '"+(this.terminals_[ce]||ce)+"'":de="Parse error on line "+(j+1)+": Unexpected "+(ce==he?"end of input":"'"+(this.terminals_[ce]||ce)+"'"),this.parseError(de,{text:X.match,token:this.terminals_[ce]||ce,line:X.yylineno,loc:se,expected:W})}if(ge[0]instanceof Array&&ge.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Oe+", token: "+ce);switch(ge[0]){case 1:F.push(ce),z.push(X.yytext),$.push(X.yylloc),F.push(ge[1]),ce=null,ae?(ce=ae,ae=null):(ie=X.yyleng,Q=X.yytext,j=X.yylineno,se=X.yylloc,ne>0&&ne--);break;case 2:if(Ie=this.productions_[ge[1]][1],$e.$=z[z.length-Ie],$e._$={first_line:$[$.length-(Ie||1)].first_line,last_line:$[$.length-1].last_line,first_column:$[$.length-(Ie||1)].first_column,last_column:$[$.length-1].last_column},ue&&($e._$.range=[$[$.length-(Ie||1)].range[0],$[$.length-1].range[1]]),He=this.performAction.apply($e,[Q,ie,j,te.yy,ge[1],z,$].concat(K)),typeof He<"u")return He;Ie&&(F=F.slice(0,-1*Ie*2),z=z.slice(0,-1*Ie),$=$.slice(0,-1*Ie)),F.push(this.productions_[ge[1]][0]),z.push($e.$),$.push($e._$),be=H[F[F.length-2]][F[F.length-1]],F.push(be);break;case 3:return!0}}return!0},"parse")},L=function(){var O={EOF:1,parseError:o(function(B,F){if(this.yy.parser)this.yy.parser.parseError(B,F);else throw new Error(B)},"parseError"),setInput:o(function(M,B){return this.yy=B||this.yy||{},this._input=M,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var M=this._input[0];this.yytext+=M,this.yyleng++,this.offset++,this.match+=M,this.matched+=M;var B=M.match(/(?:\r\n?|\n).*/g);return B?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),M},"input"),unput:o(function(M){var B=M.length,F=M.split(/(?:\r\n?|\n)/g);this._input=M+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-B),this.offset-=B;var P=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),F.length-1&&(this.yylineno-=F.length-1);var z=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:F?(F.length===P.length?this.yylloc.first_column:0)+P[P.length-F.length].length-F[0].length:this.yylloc.first_column-B},this.options.ranges&&(this.yylloc.range=[z[0],z[0]+this.yyleng-B]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(M){this.unput(this.match.slice(M))},"less"),pastInput:o(function(){var M=this.matched.substr(0,this.matched.length-this.match.length);return(M.length>20?"...":"")+M.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var M=this.match;return M.length<20&&(M+=this._input.substr(0,20-M.length)),(M.substr(0,20)+(M.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var M=this.pastInput(),B=new Array(M.length+1).join("-");return M+this.upcomingInput()+` -`+B+"^"},"showPosition"),test_match:o(function(M,B){var F,P,z;if(this.options.backtrack_lexer&&(z={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(z.yylloc.range=this.yylloc.range.slice(0))),P=M[0].match(/(?:\r\n?|\n).*/g),P&&(this.yylineno+=P.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:P?P[P.length-1].length-P[P.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+M[0].length},this.yytext+=M[0],this.match+=M[0],this.matches=M,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(M[0].length),this.matched+=M[0],F=this.performAction.call(this,this.yy,this,B,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),F)return F;if(this._backtrack){for(var $ in z)this[$]=z[$];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var M,B,F,P;this._more||(this.yytext="",this.match="");for(var z=this._currentRules(),$=0;$B[0].length)){if(B=F,P=$,this.options.backtrack_lexer){if(M=this.test_match(F,z[$]),M!==!1)return M;if(this._backtrack){B=!1;continue}else return!1}else if(!this.options.flex)break}return B?(M=this.test_match(B,z[P]),M!==!1?M:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var B=this.next();return B||this.lex()},"lex"),begin:o(function(B){this.conditionStack.push(B)},"begin"),popState:o(function(){var B=this.conditionStack.length-1;return B>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(B){return B=this.conditionStack.length-1-Math.abs(B||0),B>=0?this.conditionStack[B]:"INITIAL"},"topState"),pushState:o(function(B){this.begin(B)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(B,F,P,z){var $=z;switch(P){case 0:break;case 1:break;case 2:return this.popState(),34;break;case 3:return this.popState(),34;break;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";break;case 17:return this.pushState("axis_data"),"Y_AXIS";break;case 18:return this.pushState("axis_band_data"),24;break;case 19:return 31;case 20:return this.pushState("data"),16;break;case 21:return this.pushState("data"),18;break;case 22:return this.pushState("data_inner"),24;break;case 23:return 27;case 24:return this.popState(),26;break;case 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 43:break;case 44:return 35;case 45:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}};return O}();k.lexer=L;function R(){this.yy={}}return o(R,"Parser"),R.prototype=k,k.Parser=R,new R}();pO.parser=pO;Ehe=pO});function mO(t){return t.type==="bar"}function v6(t){return t.type==="band"}function S1(t){return t.type==="linear"}var x6=N(()=>{"use strict";o(mO,"isBarPlot");o(v6,"isBandAxisData");o(S1,"isLinearAxisData")});var C1,gO=N(()=>{"use strict";to();C1=class{constructor(e){this.parentGroup=e}static{o(this,"TextDimensionCalculatorWithFont")}getMaxDimension(e,r){if(!this.parentGroup)return{width:e.reduce((a,s)=>Math.max(s.length,a),0)*r,height:r};let n={width:0,height:0},i=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",r);for(let a of e){let s=sK(i,1,a),l=s?s.width:a.length*r,u=s?s.height:r;n.width=Math.max(n.width,l),n.height=Math.max(n.height,u)}return i.remove(),n}}});var A1,yO=N(()=>{"use strict";A1=class{constructor(e,r,n,i){this.axisConfig=e;this.title=r;this.textDimensionCalculator=n;this.axisThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0};this.axisPosition="left";this.showTitle=!1;this.showLabel=!1;this.showTick=!1;this.showAxisLine=!1;this.outerPadding=0;this.titleTextHeight=0;this.labelTextHeight=0;this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{o(this,"BaseAxis")}setRange(e){this.range=e,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=e[1]-e[0]:this.boundingRect.width=e[1]-e[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(e){this.axisPosition=e,this.setRange(this.range)}getTickDistance(){let e=this.getRange();return Math.abs(e[0]-e[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(e=>e.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(e){let r=e.height;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.width;this.outerPadding=Math.min(n.width/2,i);let a=n.height+this.axisConfig.labelPadding*2;this.labelTextHeight=n.height,a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width,this.boundingRect.height=e.height-r}calculateSpaceIfDrawnVertical(e){let r=e.width;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.height;this.outerPadding=Math.min(n.height/2,i);let a=n.width+this.axisConfig.labelPadding*2;a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width-r,this.boundingRect.height=e.height}calculateSpace(e){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(e):this.calculateSpaceIfDrawnHorizontally(e),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}getDrawableElementsForLeftAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(r),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let r=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${r},${this.getScaleValue(n)} L ${r-this.axisConfig.tickLength},${this.getScaleValue(n)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElementsForBottomAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r} L ${this.getScaleValue(n)},${r+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElementsForTopAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y;e.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(n)},${r+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}});var b6,Che=N(()=>{"use strict";dr();vt();yO();b6=class extends A1{static{o(this,"BandAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.categories=n,this.scale=L0().domain(this.categories).range(this.getRange())}setRange(e){super.setRange(e)}recalculateScale(){this.scale=L0().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Y.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(e){return this.scale(e)??this.getRange()[0]}}});var w6,Ahe=N(()=>{"use strict";dr();yO();w6=class extends A1{static{o(this,"LinearAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.domain=n,this.scale=gl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let e=[...this.domain];this.axisPosition==="left"&&e.reverse(),this.scale=gl().domain(e).range(this.getRange())}getScaleValue(e){return this.scale(e)}}});function vO(t,e,r,n){let i=new C1(n);return v6(t)?new b6(e,r,t.categories,t.title,i):new w6(e,r,[t.min,t.max],t.title,i)}var _he=N(()=>{"use strict";x6();gO();Che();Ahe();o(vO,"getAxis")});function Dhe(t,e,r,n){let i=new C1(n);return new xO(i,t,e,r)}var xO,Lhe=N(()=>{"use strict";gO();xO=class{constructor(e,r,n,i){this.textDimensionCalculator=e;this.chartConfig=r;this.chartData=n;this.chartThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{o(this,"ChartTitle")}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){let r=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(r.width,e.width),i=r.height+2*this.chartConfig.titlePadding;return r.width<=n&&r.height<=i&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=i,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let e=[];return this.showChartTitle&&e.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),e}};o(Dhe,"getChartTitleComponent")});var T6,Rhe=N(()=>{"use strict";dr();T6=class{constructor(e,r,n,i,a){this.plotData=e;this.xAxis=r;this.yAxis=n;this.orientation=i;this.plotIndex=a}static{o(this,"LinePlot")}getDrawableElement(){let e=this.plotData.data.map(n=>[this.xAxis.getScaleValue(n[0]),this.yAxis.getScaleValue(n[1])]),r;return this.orientation==="horizontal"?r=wl().y(n=>n[0]).x(n=>n[1])(e):r=wl().x(n=>n[0]).y(n=>n[1])(e),r?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:r,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}});var k6,Nhe=N(()=>{"use strict";k6=class{constructor(e,r,n,i,a,s){this.barData=e;this.boundingRect=r;this.xAxis=n;this.yAxis=i;this.orientation=a;this.plotIndex=s}static{o(this,"BarPlot")}getDrawableElement(){let e=this.barData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),n=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),i=n/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:this.boundingRect.x,y:a[0]-i,height:n,width:a[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:a[0]-i,y:a[1],width:n,height:this.boundingRect.y+this.boundingRect.height-a[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function Mhe(t,e,r){return new bO(t,e,r)}var bO,Ihe=N(()=>{"use strict";Rhe();Nhe();bO=class{constructor(e,r,n){this.chartConfig=e;this.chartData=r;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0}}static{o(this,"BasePlot")}setAxes(e,r){this.xAxis=e,this.yAxis=r}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){return this.boundingRect.width=e.width,this.boundingRect.height=e.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let e=[];for(let[r,n]of this.chartData.plots.entries())switch(n.type){case"line":{let i=new T6(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break;case"bar":{let i=new k6(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break}return e}};o(Mhe,"getPlotComponent")});var E6,Ohe=N(()=>{"use strict";_he();Lhe();Ihe();x6();E6=class{constructor(e,r,n,i){this.chartConfig=e;this.chartData=r;this.componentStore={title:Dhe(e,r,n,i),plot:Mhe(e,r,n),xAxis:vO(r.xAxis,e.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},i),yAxis:vO(r.yAxis,e.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},i)}}static{o(this,"Orchestrator")}calculateVerticalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),l=this.componentStore.plot.calculateSpace({width:a,height:s});e-=l.width,r-=l.height,l=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),i=l.height,r-=l.height,this.componentStore.xAxis.setAxisPosition("bottom"),l=this.componentStore.xAxis.calculateSpace({width:e,height:r}),r-=l.height,this.componentStore.yAxis.setAxisPosition("left"),l=this.componentStore.yAxis.calculateSpace({width:e,height:r}),n=l.width,e-=l.width,e>0&&(a+=e,e=0),r>0&&(s+=r,r=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:n,y:i}),this.componentStore.xAxis.setRange([n,n+a]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:i+s}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(u=>mO(u))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=0,s=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),l=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),u=this.componentStore.plot.calculateSpace({width:s,height:l});e-=u.width,r-=u.height,u=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),n=u.height,r-=u.height,this.componentStore.xAxis.setAxisPosition("left"),u=this.componentStore.xAxis.calculateSpace({width:e,height:r}),e-=u.width,i=u.width,this.componentStore.yAxis.setAxisPosition("top"),u=this.componentStore.yAxis.calculateSpace({width:e,height:r}),r-=u.height,a=n+u.height,e>0&&(s+=e,e=0),r>0&&(l+=r,r=0),this.componentStore.plot.calculateSpace({width:s,height:l}),this.componentStore.plot.setBoundingBoxXY({x:i,y:a}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:i,y:n}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(h=>mO(h))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let e=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let r of Object.values(this.componentStore))e.push(...r.getDrawableElements());return e}}});var S6,Phe=N(()=>{"use strict";Ohe();S6=class{static{o(this,"XYChartBuilder")}static build(e,r,n,i){return new E6(e,r,n,i).getDrawableElement()}}});function Fhe(){let t=oh(),e=cr();return Fi(t.xyChart,e.themeVariables.xyChart)}function $he(){let t=cr();return Fi(or.xyChart,t.xyChart)}function zhe(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function kO(t){let e=cr();return Tr(t.trim(),e)}function IGe(t){Bhe=t}function OGe(t){t==="horizontal"?bb.chartOrientation="horizontal":bb.chartOrientation="vertical"}function PGe(t){fn.xAxis.title=kO(t.text)}function Ghe(t,e){fn.xAxis={type:"linear",title:fn.xAxis.title,min:t,max:e},C6=!0}function BGe(t){fn.xAxis={type:"band",title:fn.xAxis.title,categories:t.map(e=>kO(e.text))},C6=!0}function FGe(t){fn.yAxis.title=kO(t.text)}function $Ge(t,e){fn.yAxis={type:"linear",title:fn.yAxis.title,min:t,max:e},TO=!0}function zGe(t){let e=Math.min(...t),r=Math.max(...t),n=S1(fn.yAxis)?fn.yAxis.min:1/0,i=S1(fn.yAxis)?fn.yAxis.max:-1/0;fn.yAxis={type:"linear",title:fn.yAxis.title,min:Math.min(n,e),max:Math.max(i,r)}}function Vhe(t){let e=[];if(t.length===0)return e;if(!C6){let r=S1(fn.xAxis)?fn.xAxis.min:1/0,n=S1(fn.xAxis)?fn.xAxis.max:-1/0;Ghe(Math.min(r,1),Math.max(n,t.length))}if(TO||zGe(t),v6(fn.xAxis)&&(e=fn.xAxis.categories.map((r,n)=>[r,t[n]])),S1(fn.xAxis)){let r=fn.xAxis.min,n=fn.xAxis.max,i=(n-r)/(t.length-1),a=[];for(let s=r;s<=n;s+=i)a.push(`${s}`);e=a.map((s,l)=>[s,t[l]])}return e}function Uhe(t){return wO[t===0?0:t%wO.length]}function GGe(t,e){let r=Vhe(e);fn.plots.push({type:"line",strokeFill:Uhe(xb),strokeWidth:2,data:r}),xb++}function VGe(t,e){let r=Vhe(e);fn.plots.push({type:"bar",fill:Uhe(xb),data:r}),xb++}function UGe(){if(fn.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return fn.title=Ir(),S6.build(bb,fn,wb,Bhe)}function HGe(){return wb}function WGe(){return bb}var xb,Bhe,bb,wb,fn,wO,C6,TO,qGe,Hhe,Whe=N(()=>{"use strict";ji();Ya();_y();ir();gr();mi();Phe();x6();xb=0,bb=$he(),wb=Fhe(),fn=zhe(),wO=wb.plotColorPalette.split(",").map(t=>t.trim()),C6=!1,TO=!1;o(Fhe,"getChartDefaultThemeConfig");o($he,"getChartDefaultConfig");o(zhe,"getChartDefaultData");o(kO,"textSanitizer");o(IGe,"setTmpSVGG");o(OGe,"setOrientation");o(PGe,"setXAxisTitle");o(Ghe,"setXAxisRangeData");o(BGe,"setXAxisBand");o(FGe,"setYAxisTitle");o($Ge,"setYAxisRangeData");o(zGe,"setYAxisRangeFromPlotData");o(Vhe,"transformDataWithoutCategory");o(Uhe,"getPlotColorFromPalette");o(GGe,"setLineData");o(VGe,"setBarData");o(UGe,"getDrawableElem");o(HGe,"getChartThemeConfig");o(WGe,"getChartConfig");qGe=o(function(){Ar(),xb=0,bb=$he(),fn=zhe(),wb=Fhe(),wO=wb.plotColorPalette.split(",").map(t=>t.trim()),C6=!1,TO=!1},"clear"),Hhe={getDrawableElem:UGe,clear:qGe,setAccTitle:Lr,getAccTitle:Rr,setDiagramTitle:$r,getDiagramTitle:Ir,getAccDescription:Mr,setAccDescription:Nr,setOrientation:OGe,setXAxisTitle:PGe,setXAxisRangeData:Ghe,setXAxisBand:BGe,setYAxisTitle:FGe,setYAxisRangeData:$Ge,setLineData:GGe,setBarData:VGe,setTmpSVGG:IGe,getChartThemeConfig:HGe,getChartConfig:WGe}});var YGe,qhe,Yhe=N(()=>{"use strict";vt();Vc();Ei();YGe=o((t,e,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig();function l(v){return v==="top"?"text-before-edge":"middle"}o(l,"getDominantBaseLine");function u(v){return v==="left"?"start":v==="right"?"end":"middle"}o(u,"getTextAnchor");function h(v){return`translate(${v.x}, ${v.y}) rotate(${v.rotation||0})`}o(h,"getTextTransformation"),Y.debug(`Rendering xychart chart -`+t);let f=sa(e),d=f.append("g").attr("class","main"),p=d.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");vn(f,s.height,s.width,!0),f.attr("viewBox",`0 0 ${s.width} ${s.height}`),p.attr("fill",a.backgroundColor),i.setTmpSVGG(f.append("g").attr("class","mermaid-tmp-group"));let m=i.getDrawableElem(),g={};function y(v){let x=d,b="";for(let[w]of v.entries()){let C=d;w>0&&g[b]&&(C=g[b]),b+=v[w],x=g[b],x||(x=g[b]=C.append("g").attr("class",v[w]))}return x}o(y,"getGroup");for(let v of m){if(v.data.length===0)continue;let x=y(v.groupTexts);switch(v.type){case"rect":x.selectAll("rect").data(v.data).enter().append("rect").attr("x",b=>b.x).attr("y",b=>b.y).attr("width",b=>b.width).attr("height",b=>b.height).attr("fill",b=>b.fill).attr("stroke",b=>b.strokeFill).attr("stroke-width",b=>b.strokeWidth);break;case"text":x.selectAll("text").data(v.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",b=>b.fill).attr("font-size",b=>b.fontSize).attr("dominant-baseline",b=>l(b.verticalPos)).attr("text-anchor",b=>u(b.horizontalPos)).attr("transform",b=>h(b)).text(b=>b.text);break;case"path":x.selectAll("path").data(v.data).enter().append("path").attr("d",b=>b.path).attr("fill",b=>b.fill?b.fill:"none").attr("stroke",b=>b.strokeFill).attr("stroke-width",b=>b.strokeWidth);break}}},"draw"),qhe={draw:YGe}});var Xhe={};hr(Xhe,{diagram:()=>XGe});var XGe,jhe=N(()=>{"use strict";She();Whe();Yhe();XGe={parser:Ehe,db:Hhe,renderer:qhe}});var EO,Zhe,Jhe=N(()=>{"use strict";EO=function(){var t=o(function(re,oe,V,xe){for(V=V||{},xe=re.length;xe--;V[re[xe]]=oe);return V},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],s=[1,22],l=[2,7],u=[1,26],h=[1,27],f=[1,28],d=[1,29],p=[1,33],m=[1,34],g=[1,35],y=[1,36],v=[1,37],x=[1,38],b=[1,24],w=[1,31],C=[1,32],T=[1,30],E=[1,39],A=[1,40],S=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],_=[1,61],I=[89,90],D=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],k=[27,29],L=[1,70],R=[1,71],O=[1,72],M=[1,73],B=[1,74],F=[1,75],P=[1,76],z=[1,83],$=[1,80],H=[1,84],Q=[1,85],j=[1,86],ie=[1,87],ne=[1,88],le=[1,89],he=[1,90],K=[1,91],X=[1,92],te=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],J=[63,64],se=[1,101],ue=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],Z=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Se=[1,110],ce=[1,106],ae=[1,107],Oe=[1,108],ge=[1,109],ze=[1,111],He=[1,116],$e=[1,117],Re=[1,114],Ie=[1,115],be={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:o(function(oe,V,xe,q,pe,ve,Pe){var _e=ve.length-1;switch(pe){case 4:this.$=ve[_e].trim(),q.setAccTitle(this.$);break;case 5:case 6:this.$=ve[_e].trim(),q.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:q.setDirection("TB");break;case 18:q.setDirection("BT");break;case 19:q.setDirection("RL");break;case 20:q.setDirection("LR");break;case 21:q.addRequirement(ve[_e-3],ve[_e-4]);break;case 22:q.addRequirement(ve[_e-5],ve[_e-6]),q.setClass([ve[_e-5]],ve[_e-3]);break;case 23:q.setNewReqId(ve[_e-2]);break;case 24:q.setNewReqText(ve[_e-2]);break;case 25:q.setNewReqRisk(ve[_e-2]);break;case 26:q.setNewReqVerifyMethod(ve[_e-2]);break;case 29:this.$=q.RequirementType.REQUIREMENT;break;case 30:this.$=q.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=q.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=q.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=q.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=q.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=q.RiskLevel.LOW_RISK;break;case 36:this.$=q.RiskLevel.MED_RISK;break;case 37:this.$=q.RiskLevel.HIGH_RISK;break;case 38:this.$=q.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=q.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=q.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=q.VerifyType.VERIFY_TEST;break;case 42:q.addElement(ve[_e-3]);break;case 43:q.addElement(ve[_e-5]),q.setClass([ve[_e-5]],ve[_e-3]);break;case 44:q.setNewElementType(ve[_e-2]);break;case 45:q.setNewElementDocRef(ve[_e-2]);break;case 48:q.addRelationship(ve[_e-2],ve[_e],ve[_e-4]);break;case 49:q.addRelationship(ve[_e-2],ve[_e-4],ve[_e]);break;case 50:this.$=q.Relationships.CONTAINS;break;case 51:this.$=q.Relationships.COPIES;break;case 52:this.$=q.Relationships.DERIVES;break;case 53:this.$=q.Relationships.SATISFIES;break;case 54:this.$=q.Relationships.VERIFIES;break;case 55:this.$=q.Relationships.REFINES;break;case 56:this.$=q.Relationships.TRACES;break;case 57:this.$=ve[_e-2],q.defineClass(ve[_e-1],ve[_e]);break;case 58:q.setClass(ve[_e-1],ve[_e]);break;case 59:q.setClass([ve[_e-2]],ve[_e]);break;case 60:case 62:this.$=[ve[_e]];break;case 61:case 63:this.$=ve[_e-2].concat([ve[_e]]);break;case 64:this.$=ve[_e-2],q.setCssStyle(ve[_e-1],ve[_e]);break;case 65:this.$=[ve[_e]];break;case 66:ve[_e-2].push(ve[_e]),this.$=ve[_e-2];break;case 68:this.$=ve[_e-1]+ve[_e];break}},"anonymous"),table:[{3:1,4:2,6:e,9:r,11:n,13:i},{1:[3]},{3:8,4:2,5:[1,7],6:e,9:r,11:n,13:i},{5:[1,9]},{10:[1,10]},{12:[1,11]},t(a,[2,6]),{3:12,4:2,6:e,9:r,11:n,13:i},{1:[2,2]},{4:17,5:s,7:13,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},t(a,[2,4]),t(a,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:s,7:42,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:43,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:44,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:45,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:46,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:47,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:48,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:49,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:50,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},t(S,[2,17]),t(S,[2,18]),t(S,[2,19]),t(S,[2,20]),{30:60,33:62,75:_,89:E,90:A},{30:63,33:62,75:_,89:E,90:A},{30:64,33:62,75:_,89:E,90:A},t(I,[2,29]),t(I,[2,30]),t(I,[2,31]),t(I,[2,32]),t(I,[2,33]),t(I,[2,34]),t(D,[2,81]),t(D,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},t(k,[2,79]),t(k,[2,80]),{27:[1,67],29:[1,68]},t(k,[2,85]),t(k,[2,86]),{62:69,65:L,66:R,67:O,68:M,69:B,70:F,71:P},{62:77,65:L,66:R,67:O,68:M,69:B,70:F,71:P},{30:78,33:62,75:_,89:E,90:A},{73:79,75:z,76:$,78:81,79:82,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X},t(te,[2,60]),t(te,[2,62]),{73:93,75:z,76:$,78:81,79:82,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X},{30:94,33:62,75:_,76:$,89:E,90:A},{5:[1,95]},{30:96,33:62,75:_,89:E,90:A},{5:[1,97]},{30:98,33:62,75:_,89:E,90:A},{63:[1,99]},t(J,[2,50]),t(J,[2,51]),t(J,[2,52]),t(J,[2,53]),t(J,[2,54]),t(J,[2,55]),t(J,[2,56]),{64:[1,100]},t(S,[2,59],{76:$}),t(S,[2,64],{76:se}),{33:103,75:[1,102],89:E,90:A},t(ue,[2,65],{79:104,75:z,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X}),t(Z,[2,67]),t(Z,[2,69]),t(Z,[2,70]),t(Z,[2,71]),t(Z,[2,72]),t(Z,[2,73]),t(Z,[2,74]),t(Z,[2,75]),t(Z,[2,76]),t(Z,[2,77]),t(Z,[2,78]),t(S,[2,57],{76:se}),t(S,[2,58],{76:$}),{5:Se,28:105,31:ce,34:ae,36:Oe,38:ge,40:ze},{27:[1,112],76:$},{5:He,40:$e,56:113,57:Re,59:Ie},{27:[1,118],76:$},{33:119,89:E,90:A},{33:120,89:E,90:A},{75:z,78:121,79:82,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X},t(te,[2,61]),t(te,[2,63]),t(Z,[2,68]),t(S,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Se,28:126,31:ce,34:ae,36:Oe,38:ge,40:ze},t(S,[2,28]),{5:[1,127]},t(S,[2,42]),{32:[1,128]},{32:[1,129]},{5:He,40:$e,56:130,57:Re,59:Ie},t(S,[2,47]),{5:[1,131]},t(S,[2,48]),t(S,[2,49]),t(ue,[2,66],{79:104,75:z,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X}),{33:132,89:E,90:A},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},t(S,[2,27]),{5:Se,28:145,31:ce,34:ae,36:Oe,38:ge,40:ze},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},t(S,[2,46]),{5:He,40:$e,56:152,57:Re,59:Ie},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},t(S,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},t(S,[2,43]),{5:Se,28:159,31:ce,34:ae,36:Oe,38:ge,40:ze},{5:Se,28:160,31:ce,34:ae,36:Oe,38:ge,40:ze},{5:Se,28:161,31:ce,34:ae,36:Oe,38:ge,40:ze},{5:Se,28:162,31:ce,34:ae,36:Oe,38:ge,40:ze},{5:He,40:$e,56:163,57:Re,59:Ie},{5:He,40:$e,56:164,57:Re,59:Ie},t(S,[2,23]),t(S,[2,24]),t(S,[2,25]),t(S,[2,26]),t(S,[2,44]),t(S,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:o(function(oe,V){if(V.recoverable)this.trace(oe);else{var xe=new Error(oe);throw xe.hash=V,xe}},"parseError"),parse:o(function(oe){var V=this,xe=[0],q=[],pe=[null],ve=[],Pe=this.table,_e="",we=0,Ve=0,De=0,qe=2,at=1,Rt=ve.slice.call(arguments,1),st=Object.create(this.lexer),Ue={yy:{}};for(var ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ct)&&(Ue.yy[ct]=this.yy[ct]);st.setInput(oe,Ue.yy),Ue.yy.lexer=st,Ue.yy.parser=this,typeof st.yylloc>"u"&&(st.yylloc={});var We=st.yylloc;ve.push(We);var ot=st.options&&st.options.ranges;typeof Ue.yy.parseError=="function"?this.parseError=Ue.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Yt(Dr){xe.length=xe.length-2*Dr,pe.length=pe.length-Dr,ve.length=ve.length-Dr}o(Yt,"popStack");function bt(){var Dr;return Dr=q.pop()||st.lex()||at,typeof Dr!="number"&&(Dr instanceof Array&&(q=Dr,Dr=q.pop()),Dr=V.symbols_[Dr]||Dr),Dr}o(bt,"lex");for(var Mt,xt,ut,Et,ft,yt,nt={},dn,Tt,On,tn;;){if(ut=xe[xe.length-1],this.defaultActions[ut]?Et=this.defaultActions[ut]:((Mt===null||typeof Mt>"u")&&(Mt=bt()),Et=Pe[ut]&&Pe[ut][Mt]),typeof Et>"u"||!Et.length||!Et[0]){var _r="";tn=[];for(dn in Pe[ut])this.terminals_[dn]&&dn>qe&&tn.push("'"+this.terminals_[dn]+"'");st.showPosition?_r="Parse error on line "+(we+1)+`: -`+st.showPosition()+` -Expecting `+tn.join(", ")+", got '"+(this.terminals_[Mt]||Mt)+"'":_r="Parse error on line "+(we+1)+": Unexpected "+(Mt==at?"end of input":"'"+(this.terminals_[Mt]||Mt)+"'"),this.parseError(_r,{text:st.match,token:this.terminals_[Mt]||Mt,line:st.yylineno,loc:We,expected:tn})}if(Et[0]instanceof Array&&Et.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ut+", token: "+Mt);switch(Et[0]){case 1:xe.push(Mt),pe.push(st.yytext),ve.push(st.yylloc),xe.push(Et[1]),Mt=null,xt?(Mt=xt,xt=null):(Ve=st.yyleng,_e=st.yytext,we=st.yylineno,We=st.yylloc,De>0&&De--);break;case 2:if(Tt=this.productions_[Et[1]][1],nt.$=pe[pe.length-Tt],nt._$={first_line:ve[ve.length-(Tt||1)].first_line,last_line:ve[ve.length-1].last_line,first_column:ve[ve.length-(Tt||1)].first_column,last_column:ve[ve.length-1].last_column},ot&&(nt._$.range=[ve[ve.length-(Tt||1)].range[0],ve[ve.length-1].range[1]]),yt=this.performAction.apply(nt,[_e,Ve,we,Ue.yy,Et[1],pe,ve].concat(Rt)),typeof yt<"u")return yt;Tt&&(xe=xe.slice(0,-1*Tt*2),pe=pe.slice(0,-1*Tt),ve=ve.slice(0,-1*Tt)),xe.push(this.productions_[Et[1]][0]),pe.push(nt.$),ve.push(nt._$),On=Pe[xe[xe.length-2]][xe[xe.length-1]],xe.push(On);break;case 3:return!0}}return!0},"parse")},W=function(){var re={EOF:1,parseError:o(function(V,xe){if(this.yy.parser)this.yy.parser.parseError(V,xe);else throw new Error(V)},"parseError"),setInput:o(function(oe,V){return this.yy=V||this.yy||{},this._input=oe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var oe=this._input[0];this.yytext+=oe,this.yyleng++,this.offset++,this.match+=oe,this.matched+=oe;var V=oe.match(/(?:\r\n?|\n).*/g);return V?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),oe},"input"),unput:o(function(oe){var V=oe.length,xe=oe.split(/(?:\r\n?|\n)/g);this._input=oe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-V),this.offset-=V;var q=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),xe.length-1&&(this.yylineno-=xe.length-1);var pe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:xe?(xe.length===q.length?this.yylloc.first_column:0)+q[q.length-xe.length].length-xe[0].length:this.yylloc.first_column-V},this.options.ranges&&(this.yylloc.range=[pe[0],pe[0]+this.yyleng-V]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(oe){this.unput(this.match.slice(oe))},"less"),pastInput:o(function(){var oe=this.matched.substr(0,this.matched.length-this.match.length);return(oe.length>20?"...":"")+oe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var oe=this.match;return oe.length<20&&(oe+=this._input.substr(0,20-oe.length)),(oe.substr(0,20)+(oe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var oe=this.pastInput(),V=new Array(oe.length+1).join("-");return oe+this.upcomingInput()+` -`+V+"^"},"showPosition"),test_match:o(function(oe,V){var xe,q,pe;if(this.options.backtrack_lexer&&(pe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(pe.yylloc.range=this.yylloc.range.slice(0))),q=oe[0].match(/(?:\r\n?|\n).*/g),q&&(this.yylineno+=q.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:q?q[q.length-1].length-q[q.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+oe[0].length},this.yytext+=oe[0],this.match+=oe[0],this.matches=oe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(oe[0].length),this.matched+=oe[0],xe=this.performAction.call(this,this.yy,this,V,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),xe)return xe;if(this._backtrack){for(var ve in pe)this[ve]=pe[ve];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var oe,V,xe,q;this._more||(this.yytext="",this.match="");for(var pe=this._currentRules(),ve=0;veV[0].length)){if(V=xe,q=ve,this.options.backtrack_lexer){if(oe=this.test_match(xe,pe[ve]),oe!==!1)return oe;if(this._backtrack){V=!1;continue}else return!1}else if(!this.options.flex)break}return V?(oe=this.test_match(V,pe[q]),oe!==!1?oe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var V=this.next();return V||this.lex()},"lex"),begin:o(function(V){this.conditionStack.push(V)},"begin"),popState:o(function(){var V=this.conditionStack.length-1;return V>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(V){return V=this.conditionStack.length-1-Math.abs(V||0),V>=0?this.conditionStack[V]:"INITIAL"},"topState"),pushState:o(function(V){this.begin(V)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(V,xe,q,pe){var ve=pe;switch(q){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return xe.yytext=xe.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};return re}();be.lexer=W;function de(){this.yy={}}return o(de,"Parser"),de.prototype=be,be.Parser=de,new de}();EO.parser=EO;Zhe=EO});var A6,efe=N(()=>{"use strict";zt();vt();mi();A6=class{constructor(){this.relations=[];this.latestRequirement=this.getInitialRequirement();this.requirements=new Map;this.latestElement=this.getInitialElement();this.elements=new Map;this.classes=new Map;this.direction="TB";this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"};this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"};this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"};this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"};this.setAccTitle=Lr;this.getAccTitle=Rr;this.setAccDescription=Nr;this.getAccDescription=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Ir;this.getConfig=o(()=>me().requirement,"getConfig");this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"RequirementDB")}getDirection(){return this.direction}setDirection(e){this.direction=e}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(e,r){return this.requirements.has(e)||this.requirements.set(e,{name:e,type:r,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(e)}getRequirements(){return this.requirements}setNewReqId(e){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=e)}setNewReqText(e){this.latestRequirement!==void 0&&(this.latestRequirement.text=e)}setNewReqRisk(e){this.latestRequirement!==void 0&&(this.latestRequirement.risk=e)}setNewReqVerifyMethod(e){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=e)}addElement(e){return this.elements.has(e)||(this.elements.set(e,{name:e,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),Y.info("Added new element: ",e)),this.resetLatestElement(),this.elements.get(e)}getElements(){return this.elements}setNewElementType(e){this.latestElement!==void 0&&(this.latestElement.type=e)}setNewElementDocRef(e){this.latestElement!==void 0&&(this.latestElement.docRef=e)}addRelationship(e,r,n){this.relations.push({type:e,src:r,dst:n})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,Ar()}setCssStyle(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(!r||!i)return;for(let a of r)a.includes(",")?i.cssStyles.push(...a.split(",")):i.cssStyles.push(a)}}setClass(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(i)for(let a of r){i.classes.push(a);let s=this.classes.get(a)?.styles;s&&i.cssStyles.push(...s)}}}defineClass(e,r){for(let n of e){let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.requirements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))}),this.elements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))})}}getClasses(){return this.classes}getData(){let e=me(),r=[],n=[];for(let i of this.requirements.values()){let a=i;a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.shape="requirementBox",a.look=e.look,r.push(a)}for(let i of this.elements.values()){let a=i;a.shape="requirementBox",a.look=e.look,a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),r.push(a)}for(let i of this.relations){let a=0,s=i.type===this.Relationships.CONTAINS,l={id:`${i.src}-${i.dst}-${a}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",s?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:s?"normal":"dashed",arrowTypeStart:s?"requirement_contains":"",arrowTypeEnd:s?"":"requirement_arrow",look:e.look};n.push(l),a++}return{nodes:r,edges:n,other:{},config:e,direction:this.getDirection()}}}});var ZGe,tfe,rfe=N(()=>{"use strict";ZGe=o(t=>` +Expecting `+Br.join(", ")+", got '"+(this.terminals_[Lt]||Lt)+"'":cr="Parse error on line "+(ye+1)+": Unexpected "+(Lt==Ke?"end of input":"'"+(this.terminals_[Lt]||Lt)+"'"),this.parseError(cr,{text:We.match,token:this.terminals_[Lt]||Lt,line:We.yylineno,loc:Ue,expected:Br})}if(bt[0]instanceof Array&&bt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+nt+", token: "+Lt);switch(bt[0]){case 1:he.push(Lt),se.push(We.yytext),le.push(We.yylloc),he.push(bt[1]),Lt=null,dt?(Lt=dt,dt=null):(Re=We.yyleng,ve=We.yytext,ye=We.yylineno,Ue=We.yylloc,_e>0&&_e--);break;case 2:if(_t=this.productions_[bt[1]][1],ft.$=se[se.length-_t],ft._$={first_line:le[le.length-(_t||1)].first_line,last_line:le[le.length-1].last_line,first_column:le[le.length-(_t||1)].first_column,last_column:le[le.length-1].last_column},lt&&(ft._$.range=[le[le.length-(_t||1)].range[0],le[le.length-1].range[1]]),yt=this.performAction.apply(ft,[ve,Re,ye,Oe.yy,bt[1],se,le].concat(xt)),typeof yt<"u")return yt;_t&&(he=he.slice(0,-1*_t*2),se=se.slice(0,-1*_t),le=le.slice(0,-1*_t)),he.push(this.productions_[bt[1]][0]),se.push(ft.$),le.push(ft._$),bn=ke[he[he.length-2]][he[he.length-1]],he.push(bn);break;case 3:return!0}}return!0},"parse")},Ce=(function(){var fe={EOF:1,parseError:o(function(W,he){if(this.yy.parser)this.yy.parser.parseError(W,he);else throw new Error(W)},"parseError"),setInput:o(function(xe,W){return this.yy=W||this.yy||{},this._input=xe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var xe=this._input[0];this.yytext+=xe,this.yyleng++,this.offset++,this.match+=xe,this.matched+=xe;var W=xe.match(/(?:\r\n?|\n).*/g);return W?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),xe},"input"),unput:o(function(xe){var W=xe.length,he=xe.split(/(?:\r\n?|\n)/g);this._input=xe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-W),this.offset-=W;var z=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),he.length-1&&(this.yylineno-=he.length-1);var se=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:he?(he.length===z.length?this.yylloc.first_column:0)+z[z.length-he.length].length-he[0].length:this.yylloc.first_column-W},this.options.ranges&&(this.yylloc.range=[se[0],se[0]+this.yyleng-W]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(xe){this.unput(this.match.slice(xe))},"less"),pastInput:o(function(){var xe=this.matched.substr(0,this.matched.length-this.match.length);return(xe.length>20?"...":"")+xe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var xe=this.match;return xe.length<20&&(xe+=this._input.substr(0,20-xe.length)),(xe.substr(0,20)+(xe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var xe=this.pastInput(),W=new Array(xe.length+1).join("-");return xe+this.upcomingInput()+` +`+W+"^"},"showPosition"),test_match:o(function(xe,W){var he,z,se;if(this.options.backtrack_lexer&&(se={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(se.yylloc.range=this.yylloc.range.slice(0))),z=xe[0].match(/(?:\r\n?|\n).*/g),z&&(this.yylineno+=z.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:z?z[z.length-1].length-z[z.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+xe[0].length},this.yytext+=xe[0],this.match+=xe[0],this.matches=xe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(xe[0].length),this.matched+=xe[0],he=this.performAction.call(this,this.yy,this,W,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),he)return he;if(this._backtrack){for(var le in se)this[le]=se[le];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var xe,W,he,z;this._more||(this.yytext="",this.match="");for(var se=this._currentRules(),le=0;leW[0].length)){if(W=he,z=le,this.options.backtrack_lexer){if(xe=this.test_match(he,se[le]),xe!==!1)return xe;if(this._backtrack){W=!1;continue}else return!1}else if(!this.options.flex)break}return W?(xe=this.test_match(W,se[z]),xe!==!1?xe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var W=this.next();return W||this.lex()},"lex"),begin:o(function(W){this.conditionStack.push(W)},"begin"),popState:o(function(){var W=this.conditionStack.length-1;return W>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(W){return W=this.conditionStack.length-1-Math.abs(W||0),W>=0?this.conditionStack[W]:"INITIAL"},"topState"),pushState:o(function(W){this.begin(W)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(W,he,z,se){var le=se;switch(z){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return he.yytext=he.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};return fe})();Ne.lexer=Ce;function Fe(){this.yy={}}return o(Fe,"Parser"),Fe.prototype=Ne,Ne.Parser=Fe,new Fe})();QF.parser=QF;kye=QF});var Z6,Sye=N(()=>{"use strict";Xt();pt();ci();Z6=class{constructor(){this.relations=[];this.latestRequirement=this.getInitialRequirement();this.requirements=new Map;this.latestElement=this.getInitialElement();this.elements=new Map;this.classes=new Map;this.direction="TB";this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"};this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"};this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"};this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"};this.setAccTitle=Rr;this.getAccTitle=Mr;this.setAccDescription=Ir;this.getAccDescription=Or;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getConfig=o(()=>ge().requirement,"getConfig");this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"RequirementDB")}getDirection(){return this.direction}setDirection(e){this.direction=e}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(e,r){return this.requirements.has(e)||this.requirements.set(e,{name:e,type:r,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(e)}getRequirements(){return this.requirements}setNewReqId(e){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=e)}setNewReqText(e){this.latestRequirement!==void 0&&(this.latestRequirement.text=e)}setNewReqRisk(e){this.latestRequirement!==void 0&&(this.latestRequirement.risk=e)}setNewReqVerifyMethod(e){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=e)}addElement(e){return this.elements.has(e)||(this.elements.set(e,{name:e,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),X.info("Added new element: ",e)),this.resetLatestElement(),this.elements.get(e)}getElements(){return this.elements}setNewElementType(e){this.latestElement!==void 0&&(this.latestElement.type=e)}setNewElementDocRef(e){this.latestElement!==void 0&&(this.latestElement.docRef=e)}addRelationship(e,r,n){this.relations.push({type:e,src:r,dst:n})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,Sr()}setCssStyle(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(!r||!i)return;for(let a of r)a.includes(",")?i.cssStyles.push(...a.split(",")):i.cssStyles.push(a)}}setClass(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(i)for(let a of r){i.classes.push(a);let s=this.classes.get(a)?.styles;s&&i.cssStyles.push(...s)}}}defineClass(e,r){for(let n of e){let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.requirements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))}),this.elements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))})}}getClasses(){return this.classes}getData(){let e=ge(),r=[],n=[];for(let i of this.requirements.values()){let a=i;a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.shape="requirementBox",a.look=e.look,r.push(a)}for(let i of this.elements.values()){let a=i;a.shape="requirementBox",a.look=e.look,a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),r.push(a)}for(let i of this.relations){let a=0,s=i.type===this.Relationships.CONTAINS,l={id:`${i.src}-${i.dst}-${a}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",s?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:s?"normal":"dashed",arrowTypeStart:s?"requirement_contains":"",arrowTypeEnd:s?"":"requirement_arrow",look:e.look};n.push(l),a++}return{nodes:r,edges:n,other:{},config:e,direction:this.getDirection()}}}});var VZe,Cye,Aye=N(()=>{"use strict";VZe=o(t=>` marker { fill: ${t.relationColor}; @@ -1238,12 +1626,16 @@ Expecting `+tn.join(", ")+", got '"+(this.terminals_[Mt]||Mt)+"'":_r="Parse erro background-color: ${t.edgeLabelBackground}; } -`,"getStyles"),tfe=ZGe});var SO={};hr(SO,{draw:()=>JGe});var JGe,nfe=N(()=>{"use strict";zt();vt();gm();Yd();$m();ir();JGe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing requirement diagram (unified)",e);let{securityLevel:i,state:a,layout:s}=me(),l=n.db.getData(),u=yc(e,i);l.type=n.type,l.layoutAlgorithm=nf(s),l.nodeSpacing=a?.nodeSpacing??50,l.rankSpacing=a?.rankSpacing??50,l.markers=["requirement_contains","requirement_arrow"],l.diagramId=e,await Cc(l,u);let h=8;Gt.insertTitle(u,"requirementDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ac(u,h,"requirementDiagram",a?.useMaxWidth??!0)},"draw")});var ife={};hr(ife,{diagram:()=>eVe});var eVe,afe=N(()=>{"use strict";Jhe();efe();rfe();nfe();eVe={parser:Zhe,get db(){return new A6},renderer:SO,styles:tfe}});var CO,lfe,cfe=N(()=>{"use strict";CO=function(){var t=o(function(K,X,te,J){for(te=te||{},J=K.length;J--;te[K[J]]=X);return te},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,13],u=[1,14],h=[1,16],f=[1,17],d=[1,18],p=[1,24],m=[1,25],g=[1,26],y=[1,27],v=[1,28],x=[1,29],b=[1,30],w=[1,31],C=[1,32],T=[1,33],E=[1,34],A=[1,35],S=[1,36],_=[1,37],I=[1,38],D=[1,39],k=[1,41],L=[1,42],R=[1,43],O=[1,44],M=[1,45],B=[1,46],F=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],P=[4,5,16,50,52,53],z=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],$=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],H=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],Q=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],j=[68,69,70],ie=[1,122],ne={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,BIDIRECTIONAL_SOLID_ARROW:74,DOTTED_ARROW:75,BIDIRECTIONAL_DOTTED_ARROW:76,SOLID_CROSS:77,DOTTED_CROSS:78,SOLID_POINT:79,DOTTED_POINT:80,TXT:81,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"BIDIRECTIONAL_SOLID_ARROW",75:"DOTTED_ARROW",76:"BIDIRECTIONAL_DOTTED_ARROW",77:"SOLID_CROSS",78:"DOTTED_CROSS",79:"SOLID_POINT",80:"DOTTED_POINT",81:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:o(function(X,te,J,se,ue,Z,Se){var ce=Z.length-1;switch(ue){case 3:return se.apply(Z[ce]),Z[ce];break;case 4:case 9:this.$=[];break;case 5:case 10:Z[ce-1].push(Z[ce]),this.$=Z[ce-1];break;case 6:case 7:case 11:case 12:this.$=Z[ce];break;case 8:case 13:this.$=[];break;case 15:Z[ce].type="createParticipant",this.$=Z[ce];break;case 16:Z[ce-1].unshift({type:"boxStart",boxData:se.parseBoxData(Z[ce-2])}),Z[ce-1].push({type:"boxEnd",boxText:Z[ce-2]}),this.$=Z[ce-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(Z[ce-2]),sequenceIndexStep:Number(Z[ce-1]),sequenceVisible:!0,signalType:se.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(Z[ce-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:se.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:se.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:se.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:se.LINETYPE.ACTIVE_START,actor:Z[ce-1].actor};break;case 23:this.$={type:"activeEnd",signalType:se.LINETYPE.ACTIVE_END,actor:Z[ce-1].actor};break;case 29:se.setDiagramTitle(Z[ce].substring(6)),this.$=Z[ce].substring(6);break;case 30:se.setDiagramTitle(Z[ce].substring(7)),this.$=Z[ce].substring(7);break;case 31:this.$=Z[ce].trim(),se.setAccTitle(this.$);break;case 32:case 33:this.$=Z[ce].trim(),se.setAccDescription(this.$);break;case 34:Z[ce-1].unshift({type:"loopStart",loopText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.LOOP_START}),Z[ce-1].push({type:"loopEnd",loopText:Z[ce-2],signalType:se.LINETYPE.LOOP_END}),this.$=Z[ce-1];break;case 35:Z[ce-1].unshift({type:"rectStart",color:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.RECT_START}),Z[ce-1].push({type:"rectEnd",color:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.RECT_END}),this.$=Z[ce-1];break;case 36:Z[ce-1].unshift({type:"optStart",optText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.OPT_START}),Z[ce-1].push({type:"optEnd",optText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.OPT_END}),this.$=Z[ce-1];break;case 37:Z[ce-1].unshift({type:"altStart",altText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.ALT_START}),Z[ce-1].push({type:"altEnd",signalType:se.LINETYPE.ALT_END}),this.$=Z[ce-1];break;case 38:Z[ce-1].unshift({type:"parStart",parText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.PAR_START}),Z[ce-1].push({type:"parEnd",signalType:se.LINETYPE.PAR_END}),this.$=Z[ce-1];break;case 39:Z[ce-1].unshift({type:"parStart",parText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.PAR_OVER_START}),Z[ce-1].push({type:"parEnd",signalType:se.LINETYPE.PAR_END}),this.$=Z[ce-1];break;case 40:Z[ce-1].unshift({type:"criticalStart",criticalText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.CRITICAL_START}),Z[ce-1].push({type:"criticalEnd",signalType:se.LINETYPE.CRITICAL_END}),this.$=Z[ce-1];break;case 41:Z[ce-1].unshift({type:"breakStart",breakText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.BREAK_START}),Z[ce-1].push({type:"breakEnd",optText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.BREAK_END}),this.$=Z[ce-1];break;case 43:this.$=Z[ce-3].concat([{type:"option",optionText:se.parseMessage(Z[ce-1]),signalType:se.LINETYPE.CRITICAL_OPTION},Z[ce]]);break;case 45:this.$=Z[ce-3].concat([{type:"and",parText:se.parseMessage(Z[ce-1]),signalType:se.LINETYPE.PAR_AND},Z[ce]]);break;case 47:this.$=Z[ce-3].concat([{type:"else",altText:se.parseMessage(Z[ce-1]),signalType:se.LINETYPE.ALT_ELSE},Z[ce]]);break;case 48:Z[ce-3].draw="participant",Z[ce-3].type="addParticipant",Z[ce-3].description=se.parseMessage(Z[ce-1]),this.$=Z[ce-3];break;case 49:Z[ce-1].draw="participant",Z[ce-1].type="addParticipant",this.$=Z[ce-1];break;case 50:Z[ce-3].draw="actor",Z[ce-3].type="addParticipant",Z[ce-3].description=se.parseMessage(Z[ce-1]),this.$=Z[ce-3];break;case 51:Z[ce-1].draw="actor",Z[ce-1].type="addParticipant",this.$=Z[ce-1];break;case 52:Z[ce-1].type="destroyParticipant",this.$=Z[ce-1];break;case 53:this.$=[Z[ce-1],{type:"addNote",placement:Z[ce-2],actor:Z[ce-1].actor,text:Z[ce]}];break;case 54:Z[ce-2]=[].concat(Z[ce-1],Z[ce-1]).slice(0,2),Z[ce-2][0]=Z[ce-2][0].actor,Z[ce-2][1]=Z[ce-2][1].actor,this.$=[Z[ce-1],{type:"addNote",placement:se.PLACEMENT.OVER,actor:Z[ce-2].slice(0,2),text:Z[ce]}];break;case 55:this.$=[Z[ce-1],{type:"addLinks",actor:Z[ce-1].actor,text:Z[ce]}];break;case 56:this.$=[Z[ce-1],{type:"addALink",actor:Z[ce-1].actor,text:Z[ce]}];break;case 57:this.$=[Z[ce-1],{type:"addProperties",actor:Z[ce-1].actor,text:Z[ce]}];break;case 58:this.$=[Z[ce-1],{type:"addDetails",actor:Z[ce-1].actor,text:Z[ce]}];break;case 61:this.$=[Z[ce-2],Z[ce]];break;case 62:this.$=Z[ce];break;case 63:this.$=se.PLACEMENT.LEFTOF;break;case 64:this.$=se.PLACEMENT.RIGHTOF;break;case 65:this.$=[Z[ce-4],Z[ce-1],{type:"addMessage",from:Z[ce-4].actor,to:Z[ce-1].actor,signalType:Z[ce-3],msg:Z[ce],activate:!0},{type:"activeStart",signalType:se.LINETYPE.ACTIVE_START,actor:Z[ce-1].actor}];break;case 66:this.$=[Z[ce-4],Z[ce-1],{type:"addMessage",from:Z[ce-4].actor,to:Z[ce-1].actor,signalType:Z[ce-3],msg:Z[ce]},{type:"activeEnd",signalType:se.LINETYPE.ACTIVE_END,actor:Z[ce-4].actor}];break;case 67:this.$=[Z[ce-3],Z[ce-1],{type:"addMessage",from:Z[ce-3].actor,to:Z[ce-1].actor,signalType:Z[ce-2],msg:Z[ce]}];break;case 68:this.$={type:"addParticipant",actor:Z[ce]};break;case 69:this.$=se.LINETYPE.SOLID_OPEN;break;case 70:this.$=se.LINETYPE.DOTTED_OPEN;break;case 71:this.$=se.LINETYPE.SOLID;break;case 72:this.$=se.LINETYPE.BIDIRECTIONAL_SOLID;break;case 73:this.$=se.LINETYPE.DOTTED;break;case 74:this.$=se.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 75:this.$=se.LINETYPE.SOLID_CROSS;break;case 76:this.$=se.LINETYPE.DOTTED_CROSS;break;case 77:this.$=se.LINETYPE.SOLID_POINT;break;case 78:this.$=se.LINETYPE.DOTTED_POINT;break;case 79:this.$=se.parseMessage(Z[ce].trim().substring(1));break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},t(F,[2,5]),{9:47,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},t(F,[2,7]),t(F,[2,8]),t(F,[2,14]),{12:48,50:_,52:I,53:D},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:B},{22:55,70:B},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(F,[2,29]),t(F,[2,30]),{32:[1,61]},{34:[1,62]},t(F,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:B},{22:72,70:B},{22:73,70:B},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82],79:[1,83],80:[1,84]},{55:85,57:[1,86],65:[1,87],66:[1,88]},{22:89,70:B},{22:90,70:B},{22:91,70:B},{22:92,70:B},t([5,51,64,71,72,73,74,75,76,77,78,79,80,81],[2,68]),t(F,[2,6]),t(F,[2,15]),t(P,[2,9],{10:93}),t(F,[2,17]),{5:[1,95],19:[1,94]},{5:[1,96]},t(F,[2,21]),{5:[1,97]},{5:[1,98]},t(F,[2,24]),t(F,[2,25]),t(F,[2,26]),t(F,[2,27]),t(F,[2,28]),t(F,[2,31]),t(F,[2,32]),t(z,i,{7:99}),t(z,i,{7:100}),t(z,i,{7:101}),t($,i,{40:102,7:103}),t(H,i,{42:104,7:105}),t(H,i,{7:105,42:106}),t(Q,i,{45:107,7:108}),t(z,i,{7:109}),{5:[1,111],51:[1,110]},{5:[1,113],51:[1,112]},{5:[1,114]},{22:117,68:[1,115],69:[1,116],70:B},t(j,[2,69]),t(j,[2,70]),t(j,[2,71]),t(j,[2,72]),t(j,[2,73]),t(j,[2,74]),t(j,[2,75]),t(j,[2,76]),t(j,[2,77]),t(j,[2,78]),{22:118,70:B},{22:120,58:119,70:B},{70:[2,63]},{70:[2,64]},{56:121,81:ie},{56:123,81:ie},{56:124,81:ie},{56:125,81:ie},{4:[1,128],5:[1,130],11:127,12:129,16:[1,126],50:_,52:I,53:D},{5:[1,131]},t(F,[2,19]),t(F,[2,20]),t(F,[2,22]),t(F,[2,23]),{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,132],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,133],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,134],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{16:[1,135]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,46],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,49:[1,136],50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{16:[1,137]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,44],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,48:[1,138],50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{16:[1,139]},{16:[1,140]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,42],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,47:[1,141],50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,142],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:M,70:B},{15:[1,143]},t(F,[2,49]),{15:[1,144]},t(F,[2,51]),t(F,[2,52]),{22:145,70:B},{22:146,70:B},{56:147,81:ie},{56:148,81:ie},{56:149,81:ie},{64:[1,150],81:[2,62]},{5:[2,55]},{5:[2,79]},{5:[2,56]},{5:[2,57]},{5:[2,58]},t(F,[2,16]),t(P,[2,10]),{12:151,50:_,52:I,53:D},t(P,[2,12]),t(P,[2,13]),t(F,[2,18]),t(F,[2,34]),t(F,[2,35]),t(F,[2,36]),t(F,[2,37]),{15:[1,152]},t(F,[2,38]),{15:[1,153]},t(F,[2,39]),t(F,[2,40]),{15:[1,154]},t(F,[2,41]),{5:[1,155]},{5:[1,156]},{56:157,81:ie},{56:158,81:ie},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:159,70:B},t(P,[2,11]),t($,i,{7:103,40:160}),t(H,i,{7:105,42:161}),t(Q,i,{7:108,45:162}),t(F,[2,48]),t(F,[2,50]),{5:[2,65]},{5:[2,66]},{81:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],87:[2,63],88:[2,64],121:[2,55],122:[2,79],123:[2,56],124:[2,57],125:[2,58],147:[2,67],148:[2,53],149:[2,54],157:[2,65],158:[2,66],159:[2,61],160:[2,47],161:[2,45],162:[2,43]},parseError:o(function(X,te){if(te.recoverable)this.trace(X);else{var J=new Error(X);throw J.hash=te,J}},"parseError"),parse:o(function(X){var te=this,J=[0],se=[],ue=[null],Z=[],Se=this.table,ce="",ae=0,Oe=0,ge=0,ze=2,He=1,$e=Z.slice.call(arguments,1),Re=Object.create(this.lexer),Ie={yy:{}};for(var be in this.yy)Object.prototype.hasOwnProperty.call(this.yy,be)&&(Ie.yy[be]=this.yy[be]);Re.setInput(X,Ie.yy),Ie.yy.lexer=Re,Ie.yy.parser=this,typeof Re.yylloc>"u"&&(Re.yylloc={});var W=Re.yylloc;Z.push(W);var de=Re.options&&Re.options.ranges;typeof Ie.yy.parseError=="function"?this.parseError=Ie.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function re(Rt){J.length=J.length-2*Rt,ue.length=ue.length-Rt,Z.length=Z.length-Rt}o(re,"popStack");function oe(){var Rt;return Rt=se.pop()||Re.lex()||He,typeof Rt!="number"&&(Rt instanceof Array&&(se=Rt,Rt=se.pop()),Rt=te.symbols_[Rt]||Rt),Rt}o(oe,"lex");for(var V,xe,q,pe,ve,Pe,_e={},we,Ve,De,qe;;){if(q=J[J.length-1],this.defaultActions[q]?pe=this.defaultActions[q]:((V===null||typeof V>"u")&&(V=oe()),pe=Se[q]&&Se[q][V]),typeof pe>"u"||!pe.length||!pe[0]){var at="";qe=[];for(we in Se[q])this.terminals_[we]&&we>ze&&qe.push("'"+this.terminals_[we]+"'");Re.showPosition?at="Parse error on line "+(ae+1)+`: -`+Re.showPosition()+` -Expecting `+qe.join(", ")+", got '"+(this.terminals_[V]||V)+"'":at="Parse error on line "+(ae+1)+": Unexpected "+(V==He?"end of input":"'"+(this.terminals_[V]||V)+"'"),this.parseError(at,{text:Re.match,token:this.terminals_[V]||V,line:Re.yylineno,loc:W,expected:qe})}if(pe[0]instanceof Array&&pe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+q+", token: "+V);switch(pe[0]){case 1:J.push(V),ue.push(Re.yytext),Z.push(Re.yylloc),J.push(pe[1]),V=null,xe?(V=xe,xe=null):(Oe=Re.yyleng,ce=Re.yytext,ae=Re.yylineno,W=Re.yylloc,ge>0&&ge--);break;case 2:if(Ve=this.productions_[pe[1]][1],_e.$=ue[ue.length-Ve],_e._$={first_line:Z[Z.length-(Ve||1)].first_line,last_line:Z[Z.length-1].last_line,first_column:Z[Z.length-(Ve||1)].first_column,last_column:Z[Z.length-1].last_column},de&&(_e._$.range=[Z[Z.length-(Ve||1)].range[0],Z[Z.length-1].range[1]]),Pe=this.performAction.apply(_e,[ce,Oe,ae,Ie.yy,pe[1],ue,Z].concat($e)),typeof Pe<"u")return Pe;Ve&&(J=J.slice(0,-1*Ve*2),ue=ue.slice(0,-1*Ve),Z=Z.slice(0,-1*Ve)),J.push(this.productions_[pe[1]][0]),ue.push(_e.$),Z.push(_e._$),De=Se[J[J.length-2]][J[J.length-1]],J.push(De);break;case 3:return!0}}return!0},"parse")},le=function(){var K={EOF:1,parseError:o(function(te,J){if(this.yy.parser)this.yy.parser.parseError(te,J);else throw new Error(te)},"parseError"),setInput:o(function(X,te){return this.yy=te||this.yy||{},this._input=X,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var X=this._input[0];this.yytext+=X,this.yyleng++,this.offset++,this.match+=X,this.matched+=X;var te=X.match(/(?:\r\n?|\n).*/g);return te?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),X},"input"),unput:o(function(X){var te=X.length,J=X.split(/(?:\r\n?|\n)/g);this._input=X+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-te),this.offset-=te;var se=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),J.length-1&&(this.yylineno-=J.length-1);var ue=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:J?(J.length===se.length?this.yylloc.first_column:0)+se[se.length-J.length].length-J[0].length:this.yylloc.first_column-te},this.options.ranges&&(this.yylloc.range=[ue[0],ue[0]+this.yyleng-te]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(X){this.unput(this.match.slice(X))},"less"),pastInput:o(function(){var X=this.matched.substr(0,this.matched.length-this.match.length);return(X.length>20?"...":"")+X.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var X=this.match;return X.length<20&&(X+=this._input.substr(0,20-X.length)),(X.substr(0,20)+(X.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var X=this.pastInput(),te=new Array(X.length+1).join("-");return X+this.upcomingInput()+` -`+te+"^"},"showPosition"),test_match:o(function(X,te){var J,se,ue;if(this.options.backtrack_lexer&&(ue={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ue.yylloc.range=this.yylloc.range.slice(0))),se=X[0].match(/(?:\r\n?|\n).*/g),se&&(this.yylineno+=se.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:se?se[se.length-1].length-se[se.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+X[0].length},this.yytext+=X[0],this.match+=X[0],this.matches=X,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(X[0].length),this.matched+=X[0],J=this.performAction.call(this,this.yy,this,te,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),J)return J;if(this._backtrack){for(var Z in ue)this[Z]=ue[Z];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var X,te,J,se;this._more||(this.yytext="",this.match="");for(var ue=this._currentRules(),Z=0;Zte[0].length)){if(te=J,se=Z,this.options.backtrack_lexer){if(X=this.test_match(J,ue[Z]),X!==!1)return X;if(this._backtrack){te=!1;continue}else return!1}else if(!this.options.flex)break}return te?(X=this.test_match(te,ue[se]),X!==!1?X:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var te=this.next();return te||this.lex()},"lex"),begin:o(function(te){this.conditionStack.push(te)},"begin"),popState:o(function(){var te=this.conditionStack.length-1;return te>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(te){return te=this.conditionStack.length-1-Math.abs(te||0),te>=0?this.conditionStack[te]:"INITIAL"},"topState"),pushState:o(function(te){this.begin(te)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(te,J,se,ue){var Z=ue;switch(se){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 19;case 7:return this.begin("LINE"),14;break;case 8:return this.begin("ID"),50;break;case 9:return this.begin("ID"),52;break;case 10:return 13;case 11:return this.begin("ID"),53;break;case 12:return J.yytext=J.yytext.trim(),this.begin("ALIAS"),70;break;case 13:return this.popState(),this.popState(),this.begin("LINE"),51;break;case 14:return this.popState(),this.popState(),5;break;case 15:return this.begin("LINE"),36;break;case 16:return this.begin("LINE"),37;break;case 17:return this.begin("LINE"),38;break;case 18:return this.begin("LINE"),39;break;case 19:return this.begin("LINE"),49;break;case 20:return this.begin("LINE"),41;break;case 21:return this.begin("LINE"),43;break;case 22:return this.begin("LINE"),48;break;case 23:return this.begin("LINE"),44;break;case 24:return this.begin("LINE"),47;break;case 25:return this.begin("LINE"),46;break;case 26:return this.popState(),15;break;case 27:return 16;case 28:return 65;case 29:return 66;case 30:return 59;case 31:return 60;case 32:return 61;case 33:return 62;case 34:return 57;case 35:return 54;case 36:return this.begin("ID"),21;break;case 37:return this.begin("ID"),23;break;case 38:return 29;case 39:return 30;case 40:return this.begin("acc_title"),31;break;case 41:return this.popState(),"acc_title_value";break;case 42:return this.begin("acc_descr"),33;break;case 43:return this.popState(),"acc_descr_value";break;case 44:this.begin("acc_descr_multiline");break;case 45:this.popState();break;case 46:return"acc_descr_multiline_value";case 47:return 6;case 48:return 18;case 49:return 20;case 50:return 64;case 51:return 5;case 52:return J.yytext=J.yytext.trim(),70;break;case 53:return 73;case 54:return 74;case 55:return 75;case 56:return 76;case 57:return 71;case 58:return 72;case 59:return 77;case 60:return 78;case 61:return 79;case 62:return 80;case 63:return 81;case 64:return 68;case 65:return 69;case 66:return 5;case 67:return"INVALID"}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^\<->\->:\n,;]+?([\-]*[^\<->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\<->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\<->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[45,46],inclusive:!1},acc_descr:{rules:[43],inclusive:!1},acc_title:{rules:[41],inclusive:!1},ID:{rules:[2,3,12],inclusive:!1},ALIAS:{rules:[2,3,13,14],inclusive:!1},LINE:{rules:[2,3,26],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,44,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0}}};return K}();ne.lexer=le;function he(){this.yy={}}return o(he,"Parser"),he.prototype=ne,ne.Parser=he,new he}();CO.parser=CO;lfe=CO});var iVe,aVe,sVe,_6,ufe=N(()=>{"use strict";zt();vt();s6();gr();mi();iVe={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34},aVe={FILLED:0,OPEN:1},sVe={LEFTOF:0,RIGHTOF:1,OVER:2},_6=class{constructor(){this.state=new pf(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0}));this.setAccTitle=Lr;this.setAccDescription=Nr;this.setDiagramTitle=$r;this.getAccTitle=Rr;this.getAccDescription=Mr;this.getDiagramTitle=Ir;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(me().wrap),this.LINETYPE=iVe,this.ARROWTYPE=aVe,this.PLACEMENT=sVe}static{o(this,"SequenceDB")}addBox(e){this.state.records.boxes.push({name:e.text,wrap:e.wrap??this.autoWrap(),fill:e.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(e,r,n,i){let a=this.state.records.currentBox,s=this.state.records.actors.get(e);if(s){if(this.state.records.currentBox&&s.box&&this.state.records.currentBox!==s.box)throw new Error(`A same participant should only be defined in one Box: ${s.name} can't be in '${s.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(a=s.box?s.box:this.state.records.currentBox,s.box=a,s&&r===s.name&&n==null)return}if(n?.text==null&&(n={text:r,type:i}),(i==null||n.text==null)&&(n={text:r,type:i}),this.state.records.actors.set(e,{box:a,name:r,description:n.text,wrap:n.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:i??"participant"}),this.state.records.prevActor){let l=this.state.records.actors.get(this.state.records.prevActor);l&&(l.nextActor=e)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(e),this.state.records.prevActor=e}activationCount(e){let r,n=0;if(!e)return 0;for(r=0;r>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},l}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:e,to:r,message:n?.text??"",wrap:n?.wrap??this.autoWrap(),type:i,activate:a}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(e=>e.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(e){return this.state.records.actors.get(e)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(e){this.state.records.wrapEnabled=e}extractWrap(e){if(e===void 0)return{};e=e.trim();let r=/^:?wrap:/.exec(e)!==null?!0:/^:?nowrap:/.exec(e)!==null?!1:void 0;return{cleanedText:(r===void 0?e:e.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:r}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:me().sequence?.wrap??!1}clear(){this.state.reset(),Ar()}parseMessage(e){let r=e.trim(),{wrap:n,cleanedText:i}=this.extractWrap(r),a={text:i,wrap:n};return Y.debug(`parseMessage: ${JSON.stringify(a)}`),a}parseBoxData(e){let r=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(e),n=r?.[1]?r[1].trim():"transparent",i=r?.[2]?r[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",n)||(n="transparent",i=e.trim());else{let l=new Option().style;l.color=n,l.color!==n&&(n="transparent",i=e.trim())}let{wrap:a,cleanedText:s}=this.extractWrap(i);return{text:s?Tr(s,me()):void 0,color:n,wrap:a}}addNote(e,r,n){let i={actor:e,placement:r,message:n.text,wrap:n.wrap??this.autoWrap()},a=[].concat(e,e);this.state.records.notes.push(i),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:a[0],to:a[1],message:n.text,wrap:n.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:r})}addLinks(e,r){let n=this.getActor(e);try{let i=Tr(r.text,me());i=i.replace(/=/g,"="),i=i.replace(/&/g,"&");let a=JSON.parse(i);this.insertLinks(n,a)}catch(i){Y.error("error while parsing actor link text",i)}}addALink(e,r){let n=this.getActor(e);try{let i={},a=Tr(r.text,me()),s=a.indexOf("@");a=a.replace(/=/g,"="),a=a.replace(/&/g,"&");let l=a.slice(0,s-1).trim(),u=a.slice(s+1).trim();i[l]=u,this.insertLinks(n,i)}catch(i){Y.error("error while parsing actor link text",i)}}insertLinks(e,r){if(e.links==null)e.links=r;else for(let n in r)e.links[n]=r[n]}addProperties(e,r){let n=this.getActor(e);try{let i=Tr(r.text,me()),a=JSON.parse(i);this.insertProperties(n,a)}catch(i){Y.error("error while parsing actor properties text",i)}}insertProperties(e,r){if(e.properties==null)e.properties=r;else for(let n in r)e.properties[n]=r[n]}boxEnd(){this.state.records.currentBox=void 0}addDetails(e,r){let n=this.getActor(e),i=document.getElementById(r.text);try{let a=i.innerHTML,s=JSON.parse(a);s.properties&&this.insertProperties(n,s.properties),s.links&&this.insertLinks(n,s.links)}catch(a){Y.error("error while parsing actor details text",a)}}getActorProperty(e,r){if(e?.properties!==void 0)return e.properties[r]}apply(e){if(Array.isArray(e))e.forEach(r=>{this.apply(r)});else switch(e.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:e.sequenceIndex,step:e.sequenceIndexStep,visible:e.sequenceVisible},wrap:!1,type:e.signalType});break;case"addParticipant":this.addActor(e.actor,e.actor,e.description,e.draw);break;case"createParticipant":if(this.state.records.actors.has(e.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=e.actor,this.addActor(e.actor,e.actor,e.description,e.draw),this.state.records.createdActors.set(e.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=e.actor,this.state.records.destroyedActors.set(e.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"activeEnd":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"addNote":this.addNote(e.actor,e.placement,e.text);break;case"addLinks":this.addLinks(e.actor,e.text);break;case"addALink":this.addALink(e.actor,e.text);break;case"addProperties":this.addProperties(e.actor,e.text);break;case"addDetails":this.addDetails(e.actor,e.text);break;case"addMessage":if(this.state.records.lastCreated){if(e.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(e.to!==this.state.records.lastDestroyed&&e.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(e.from,e.to,e.msg,e.signalType,e.activate);break;case"boxStart":this.addBox(e.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"rectStart":this.addSignal(void 0,void 0,e.color,e.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"optStart":this.addSignal(void 0,void 0,e.optText,e.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"altStart":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"else":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"setAccTitle":Lr(e.text);break;case"parStart":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"and":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,e.criticalText,e.signalType);break;case"option":this.addSignal(void 0,void 0,e.optionText,e.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"breakStart":this.addSignal(void 0,void 0,e.breakText,e.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break}}getConfig(){return me().sequence}}});var oVe,hfe,ffe=N(()=>{"use strict";oVe=o(t=>`.actor { +`,"getStyles"),Cye=VZe});var ZF={};dr(ZF,{draw:()=>UZe});var UZe,_ye=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();UZe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing requirement diagram (unified)",e);let{securityLevel:i,state:a,layout:s}=ge(),l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=$c(s),l.nodeSpacing=a?.nodeSpacing??50,l.rankSpacing=a?.rankSpacing??50,l.markers=["requirement_contains","requirement_arrow"],l.diagramId=e,await Qo(l,u);let h=8;qt.insertTitle(u,"requirementDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,h,"requirementDiagram",a?.useMaxWidth??!0)},"draw")});var Dye={};dr(Dye,{diagram:()=>HZe});var HZe,Lye=N(()=>{"use strict";Eye();Sye();Aye();_ye();HZe={parser:kye,get db(){return new Z6},renderer:ZF,styles:Cye}});var JF,Mye,Iye=N(()=>{"use strict";JF=(function(){var t=o(function(ee,Z,K,ae){for(K=K||{},ae=ee.length;ae--;K[ee[ae]]=Z);return K},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,13],u=[1,14],h=[1,16],f=[1,17],d=[1,18],p=[1,24],m=[1,25],g=[1,26],y=[1,27],v=[1,28],x=[1,29],b=[1,30],T=[1,31],S=[1,32],w=[1,33],k=[1,34],A=[1,35],C=[1,36],R=[1,37],I=[1,38],L=[1,39],E=[1,41],D=[1,42],_=[1,43],O=[1,44],M=[1,45],P=[1,46],B=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,55,60,61,62,63,71],F=[2,71],G=[4,5,16,50,52,53],$=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,55,60,61,62,63,71],U=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,55,60,61,62,63,71],j=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,55,60,61,62,63,71],te=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,55,60,61,62,63,71],Y=[69,70,71],oe=[1,127],J={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,actor_with_config:54,note:55,placement:56,text2:57,over:58,actor_pair:59,links:60,link:61,properties:62,details:63,spaceList:64,",":65,left_of:66,right_of:67,signaltype:68,"+":69,"-":70,ACTOR:71,config_object:72,CONFIG_START:73,CONFIG_CONTENT:74,CONFIG_END:75,SOLID_OPEN_ARROW:76,DOTTED_OPEN_ARROW:77,SOLID_ARROW:78,BIDIRECTIONAL_SOLID_ARROW:79,DOTTED_ARROW:80,BIDIRECTIONAL_DOTTED_ARROW:81,SOLID_CROSS:82,DOTTED_CROSS:83,SOLID_POINT:84,DOTTED_POINT:85,TXT:86,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",55:"note",58:"over",60:"links",61:"link",62:"properties",63:"details",65:",",66:"left_of",67:"right_of",69:"+",70:"-",71:"ACTOR",73:"CONFIG_START",74:"CONFIG_CONTENT",75:"CONFIG_END",76:"SOLID_OPEN_ARROW",77:"DOTTED_OPEN_ARROW",78:"SOLID_ARROW",79:"BIDIRECTIONAL_SOLID_ARROW",80:"DOTTED_ARROW",81:"BIDIRECTIONAL_DOTTED_ARROW",82:"SOLID_CROSS",83:"DOTTED_CROSS",84:"SOLID_POINT",85:"DOTTED_POINT",86:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[64,2],[64,1],[59,3],[59,1],[56,1],[56,1],[17,5],[17,5],[17,4],[54,2],[72,3],[22,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[57,1]],performAction:o(function(Z,K,ae,Q,de,ne,Te){var q=ne.length-1;switch(de){case 3:return Q.apply(ne[q]),ne[q];break;case 4:case 9:this.$=[];break;case 5:case 10:ne[q-1].push(ne[q]),this.$=ne[q-1];break;case 6:case 7:case 11:case 12:this.$=ne[q];break;case 8:case 13:this.$=[];break;case 15:ne[q].type="createParticipant",this.$=ne[q];break;case 16:ne[q-1].unshift({type:"boxStart",boxData:Q.parseBoxData(ne[q-2])}),ne[q-1].push({type:"boxEnd",boxText:ne[q-2]}),this.$=ne[q-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(ne[q-2]),sequenceIndexStep:Number(ne[q-1]),sequenceVisible:!0,signalType:Q.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(ne[q-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:Q.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:Q.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:Q.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:Q.LINETYPE.ACTIVE_START,actor:ne[q-1].actor};break;case 23:this.$={type:"activeEnd",signalType:Q.LINETYPE.ACTIVE_END,actor:ne[q-1].actor};break;case 29:Q.setDiagramTitle(ne[q].substring(6)),this.$=ne[q].substring(6);break;case 30:Q.setDiagramTitle(ne[q].substring(7)),this.$=ne[q].substring(7);break;case 31:this.$=ne[q].trim(),Q.setAccTitle(this.$);break;case 32:case 33:this.$=ne[q].trim(),Q.setAccDescription(this.$);break;case 34:ne[q-1].unshift({type:"loopStart",loopText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.LOOP_START}),ne[q-1].push({type:"loopEnd",loopText:ne[q-2],signalType:Q.LINETYPE.LOOP_END}),this.$=ne[q-1];break;case 35:ne[q-1].unshift({type:"rectStart",color:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.RECT_START}),ne[q-1].push({type:"rectEnd",color:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.RECT_END}),this.$=ne[q-1];break;case 36:ne[q-1].unshift({type:"optStart",optText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.OPT_START}),ne[q-1].push({type:"optEnd",optText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.OPT_END}),this.$=ne[q-1];break;case 37:ne[q-1].unshift({type:"altStart",altText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.ALT_START}),ne[q-1].push({type:"altEnd",signalType:Q.LINETYPE.ALT_END}),this.$=ne[q-1];break;case 38:ne[q-1].unshift({type:"parStart",parText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.PAR_START}),ne[q-1].push({type:"parEnd",signalType:Q.LINETYPE.PAR_END}),this.$=ne[q-1];break;case 39:ne[q-1].unshift({type:"parStart",parText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.PAR_OVER_START}),ne[q-1].push({type:"parEnd",signalType:Q.LINETYPE.PAR_END}),this.$=ne[q-1];break;case 40:ne[q-1].unshift({type:"criticalStart",criticalText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.CRITICAL_START}),ne[q-1].push({type:"criticalEnd",signalType:Q.LINETYPE.CRITICAL_END}),this.$=ne[q-1];break;case 41:ne[q-1].unshift({type:"breakStart",breakText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.BREAK_START}),ne[q-1].push({type:"breakEnd",optText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.BREAK_END}),this.$=ne[q-1];break;case 43:this.$=ne[q-3].concat([{type:"option",optionText:Q.parseMessage(ne[q-1]),signalType:Q.LINETYPE.CRITICAL_OPTION},ne[q]]);break;case 45:this.$=ne[q-3].concat([{type:"and",parText:Q.parseMessage(ne[q-1]),signalType:Q.LINETYPE.PAR_AND},ne[q]]);break;case 47:this.$=ne[q-3].concat([{type:"else",altText:Q.parseMessage(ne[q-1]),signalType:Q.LINETYPE.ALT_ELSE},ne[q]]);break;case 48:ne[q-3].draw="participant",ne[q-3].type="addParticipant",ne[q-3].description=Q.parseMessage(ne[q-1]),this.$=ne[q-3];break;case 49:ne[q-1].draw="participant",ne[q-1].type="addParticipant",this.$=ne[q-1];break;case 50:ne[q-3].draw="actor",ne[q-3].type="addParticipant",ne[q-3].description=Q.parseMessage(ne[q-1]),this.$=ne[q-3];break;case 51:ne[q-1].draw="actor",ne[q-1].type="addParticipant",this.$=ne[q-1];break;case 52:ne[q-1].type="destroyParticipant",this.$=ne[q-1];break;case 53:ne[q-1].draw="participant",ne[q-1].type="addParticipant",this.$=ne[q-1];break;case 54:this.$=[ne[q-1],{type:"addNote",placement:ne[q-2],actor:ne[q-1].actor,text:ne[q]}];break;case 55:ne[q-2]=[].concat(ne[q-1],ne[q-1]).slice(0,2),ne[q-2][0]=ne[q-2][0].actor,ne[q-2][1]=ne[q-2][1].actor,this.$=[ne[q-1],{type:"addNote",placement:Q.PLACEMENT.OVER,actor:ne[q-2].slice(0,2),text:ne[q]}];break;case 56:this.$=[ne[q-1],{type:"addLinks",actor:ne[q-1].actor,text:ne[q]}];break;case 57:this.$=[ne[q-1],{type:"addALink",actor:ne[q-1].actor,text:ne[q]}];break;case 58:this.$=[ne[q-1],{type:"addProperties",actor:ne[q-1].actor,text:ne[q]}];break;case 59:this.$=[ne[q-1],{type:"addDetails",actor:ne[q-1].actor,text:ne[q]}];break;case 62:this.$=[ne[q-2],ne[q]];break;case 63:this.$=ne[q];break;case 64:this.$=Q.PLACEMENT.LEFTOF;break;case 65:this.$=Q.PLACEMENT.RIGHTOF;break;case 66:this.$=[ne[q-4],ne[q-1],{type:"addMessage",from:ne[q-4].actor,to:ne[q-1].actor,signalType:ne[q-3],msg:ne[q],activate:!0},{type:"activeStart",signalType:Q.LINETYPE.ACTIVE_START,actor:ne[q-1].actor}];break;case 67:this.$=[ne[q-4],ne[q-1],{type:"addMessage",from:ne[q-4].actor,to:ne[q-1].actor,signalType:ne[q-3],msg:ne[q]},{type:"activeEnd",signalType:Q.LINETYPE.ACTIVE_END,actor:ne[q-4].actor}];break;case 68:this.$=[ne[q-3],ne[q-1],{type:"addMessage",from:ne[q-3].actor,to:ne[q-1].actor,signalType:ne[q-2],msg:ne[q]}];break;case 69:this.$={type:"addParticipant",actor:ne[q-1],config:ne[q]};break;case 70:this.$=ne[q-1].trim();break;case 71:this.$={type:"addParticipant",actor:ne[q]};break;case 72:this.$=Q.LINETYPE.SOLID_OPEN;break;case 73:this.$=Q.LINETYPE.DOTTED_OPEN;break;case 74:this.$=Q.LINETYPE.SOLID;break;case 75:this.$=Q.LINETYPE.BIDIRECTIONAL_SOLID;break;case 76:this.$=Q.LINETYPE.DOTTED;break;case 77:this.$=Q.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 78:this.$=Q.LINETYPE.SOLID_CROSS;break;case 79:this.$=Q.LINETYPE.DOTTED_CROSS;break;case 80:this.$=Q.LINETYPE.SOLID_POINT;break;case 81:this.$=Q.LINETYPE.DOTTED_POINT;break;case 82:this.$=Q.parseMessage(ne[q].trim().substring(1));break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,55,60,61,62,63,71],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},t(B,[2,5]),{9:47,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},t(B,[2,7]),t(B,[2,8]),t(B,[2,14]),{12:48,50:R,52:I,53:L},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,71:P},{22:55,71:P},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(B,[2,29]),t(B,[2,30]),{32:[1,61]},{34:[1,62]},t(B,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,54:72,71:[1,73]},{22:74,71:P},{22:75,71:P},{68:76,76:[1,77],77:[1,78],78:[1,79],79:[1,80],80:[1,81],81:[1,82],82:[1,83],83:[1,84],84:[1,85],85:[1,86]},{56:87,58:[1,88],66:[1,89],67:[1,90]},{22:91,71:P},{22:92,71:P},{22:93,71:P},{22:94,71:P},t([5,51,65,76,77,78,79,80,81,82,83,84,85,86],F),t(B,[2,6]),t(B,[2,15]),t(G,[2,9],{10:95}),t(B,[2,17]),{5:[1,97],19:[1,96]},{5:[1,98]},t(B,[2,21]),{5:[1,99]},{5:[1,100]},t(B,[2,24]),t(B,[2,25]),t(B,[2,26]),t(B,[2,27]),t(B,[2,28]),t(B,[2,31]),t(B,[2,32]),t($,i,{7:101}),t($,i,{7:102}),t($,i,{7:103}),t(U,i,{40:104,7:105}),t(j,i,{42:106,7:107}),t(j,i,{7:107,42:108}),t(te,i,{45:109,7:110}),t($,i,{7:111}),{5:[1,113],51:[1,112]},{5:[1,114]},t([5,51],F,{72:115,73:[1,116]}),{5:[1,118],51:[1,117]},{5:[1,119]},{22:122,69:[1,120],70:[1,121],71:P},t(Y,[2,72]),t(Y,[2,73]),t(Y,[2,74]),t(Y,[2,75]),t(Y,[2,76]),t(Y,[2,77]),t(Y,[2,78]),t(Y,[2,79]),t(Y,[2,80]),t(Y,[2,81]),{22:123,71:P},{22:125,59:124,71:P},{71:[2,64]},{71:[2,65]},{57:126,86:oe},{57:128,86:oe},{57:129,86:oe},{57:130,86:oe},{4:[1,133],5:[1,135],11:132,12:134,16:[1,131],50:R,52:I,53:L},{5:[1,136]},t(B,[2,19]),t(B,[2,20]),t(B,[2,22]),t(B,[2,23]),{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,137],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,138],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,139],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{16:[1,140]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,46],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,49:[1,141],50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{16:[1,142]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,44],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,48:[1,143],50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{16:[1,144]},{16:[1,145]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,42],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,47:[1,146],50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,147],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{15:[1,148]},t(B,[2,49]),t(B,[2,53]),{5:[2,69]},{74:[1,149]},{15:[1,150]},t(B,[2,51]),t(B,[2,52]),{22:151,71:P},{22:152,71:P},{57:153,86:oe},{57:154,86:oe},{57:155,86:oe},{65:[1,156],86:[2,63]},{5:[2,56]},{5:[2,82]},{5:[2,57]},{5:[2,58]},{5:[2,59]},t(B,[2,16]),t(G,[2,10]),{12:157,50:R,52:I,53:L},t(G,[2,12]),t(G,[2,13]),t(B,[2,18]),t(B,[2,34]),t(B,[2,35]),t(B,[2,36]),t(B,[2,37]),{15:[1,158]},t(B,[2,38]),{15:[1,159]},t(B,[2,39]),t(B,[2,40]),{15:[1,160]},t(B,[2,41]),{5:[1,161]},{75:[1,162]},{5:[1,163]},{57:164,86:oe},{57:165,86:oe},{5:[2,68]},{5:[2,54]},{5:[2,55]},{22:166,71:P},t(G,[2,11]),t(U,i,{7:105,40:167}),t(j,i,{7:107,42:168}),t(te,i,{7:110,45:169}),t(B,[2,48]),{5:[2,70]},t(B,[2,50]),{5:[2,66]},{5:[2,67]},{86:[2,62]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],89:[2,64],90:[2,65],115:[2,69],126:[2,56],127:[2,82],128:[2,57],129:[2,58],130:[2,59],153:[2,68],154:[2,54],155:[2,55],162:[2,70],164:[2,66],165:[2,67],166:[2,62],167:[2,47],168:[2,45],169:[2,43]},parseError:o(function(Z,K){if(K.recoverable)this.trace(Z);else{var ae=new Error(Z);throw ae.hash=K,ae}},"parseError"),parse:o(function(Z){var K=this,ae=[0],Q=[],de=[null],ne=[],Te=this.table,q="",Ve=0,pe=0,Be=0,Ye=2,He=1,Le=ne.slice.call(arguments,1),Ie=Object.create(this.lexer),Ne={yy:{}};for(var Ce in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ce)&&(Ne.yy[Ce]=this.yy[Ce]);Ie.setInput(Z,Ne.yy),Ne.yy.lexer=Ie,Ne.yy.parser=this,typeof Ie.yylloc>"u"&&(Ie.yylloc={});var Fe=Ie.yylloc;ne.push(Fe);var fe=Ie.options&&Ie.options.ranges;typeof Ne.yy.parseError=="function"?this.parseError=Ne.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xe(We){ae.length=ae.length-2*We,de.length=de.length-We,ne.length=ne.length-We}o(xe,"popStack");function W(){var We;return We=Q.pop()||Ie.lex()||He,typeof We!="number"&&(We instanceof Array&&(Q=We,We=Q.pop()),We=K.symbols_[We]||We),We}o(W,"lex");for(var he,z,se,le,ke,ve,ye={},Re,_e,ze,Ke;;){if(se=ae[ae.length-1],this.defaultActions[se]?le=this.defaultActions[se]:((he===null||typeof he>"u")&&(he=W()),le=Te[se]&&Te[se][he]),typeof le>"u"||!le.length||!le[0]){var xt="";Ke=[];for(Re in Te[se])this.terminals_[Re]&&Re>Ye&&Ke.push("'"+this.terminals_[Re]+"'");Ie.showPosition?xt="Parse error on line "+(Ve+1)+`: +`+Ie.showPosition()+` +Expecting `+Ke.join(", ")+", got '"+(this.terminals_[he]||he)+"'":xt="Parse error on line "+(Ve+1)+": Unexpected "+(he==He?"end of input":"'"+(this.terminals_[he]||he)+"'"),this.parseError(xt,{text:Ie.match,token:this.terminals_[he]||he,line:Ie.yylineno,loc:Fe,expected:Ke})}if(le[0]instanceof Array&&le.length>1)throw new Error("Parse Error: multiple actions possible at state: "+se+", token: "+he);switch(le[0]){case 1:ae.push(he),de.push(Ie.yytext),ne.push(Ie.yylloc),ae.push(le[1]),he=null,z?(he=z,z=null):(pe=Ie.yyleng,q=Ie.yytext,Ve=Ie.yylineno,Fe=Ie.yylloc,Be>0&&Be--);break;case 2:if(_e=this.productions_[le[1]][1],ye.$=de[de.length-_e],ye._$={first_line:ne[ne.length-(_e||1)].first_line,last_line:ne[ne.length-1].last_line,first_column:ne[ne.length-(_e||1)].first_column,last_column:ne[ne.length-1].last_column},fe&&(ye._$.range=[ne[ne.length-(_e||1)].range[0],ne[ne.length-1].range[1]]),ve=this.performAction.apply(ye,[q,pe,Ve,Ne.yy,le[1],de,ne].concat(Le)),typeof ve<"u")return ve;_e&&(ae=ae.slice(0,-1*_e*2),de=de.slice(0,-1*_e),ne=ne.slice(0,-1*_e)),ae.push(this.productions_[le[1]][0]),de.push(ye.$),ne.push(ye._$),ze=Te[ae[ae.length-2]][ae[ae.length-1]],ae.push(ze);break;case 3:return!0}}return!0},"parse")},ue=(function(){var ee={EOF:1,parseError:o(function(K,ae){if(this.yy.parser)this.yy.parser.parseError(K,ae);else throw new Error(K)},"parseError"),setInput:o(function(Z,K){return this.yy=K||this.yy||{},this._input=Z,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Z=this._input[0];this.yytext+=Z,this.yyleng++,this.offset++,this.match+=Z,this.matched+=Z;var K=Z.match(/(?:\r\n?|\n).*/g);return K?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Z},"input"),unput:o(function(Z){var K=Z.length,ae=Z.split(/(?:\r\n?|\n)/g);this._input=Z+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-K),this.offset-=K;var Q=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ae.length-1&&(this.yylineno-=ae.length-1);var de=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ae?(ae.length===Q.length?this.yylloc.first_column:0)+Q[Q.length-ae.length].length-ae[0].length:this.yylloc.first_column-K},this.options.ranges&&(this.yylloc.range=[de[0],de[0]+this.yyleng-K]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Z){this.unput(this.match.slice(Z))},"less"),pastInput:o(function(){var Z=this.matched.substr(0,this.matched.length-this.match.length);return(Z.length>20?"...":"")+Z.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Z=this.match;return Z.length<20&&(Z+=this._input.substr(0,20-Z.length)),(Z.substr(0,20)+(Z.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Z=this.pastInput(),K=new Array(Z.length+1).join("-");return Z+this.upcomingInput()+` +`+K+"^"},"showPosition"),test_match:o(function(Z,K){var ae,Q,de;if(this.options.backtrack_lexer&&(de={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(de.yylloc.range=this.yylloc.range.slice(0))),Q=Z[0].match(/(?:\r\n?|\n).*/g),Q&&(this.yylineno+=Q.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Q?Q[Q.length-1].length-Q[Q.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Z[0].length},this.yytext+=Z[0],this.match+=Z[0],this.matches=Z,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Z[0].length),this.matched+=Z[0],ae=this.performAction.call(this,this.yy,this,K,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ae)return ae;if(this._backtrack){for(var ne in de)this[ne]=de[ne];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Z,K,ae,Q;this._more||(this.yytext="",this.match="");for(var de=this._currentRules(),ne=0;neK[0].length)){if(K=ae,Q=ne,this.options.backtrack_lexer){if(Z=this.test_match(ae,de[ne]),Z!==!1)return Z;if(this._backtrack){K=!1;continue}else return!1}else if(!this.options.flex)break}return K?(Z=this.test_match(K,de[Q]),Z!==!1?Z:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var K=this.next();return K||this.lex()},"lex"),begin:o(function(K){this.conditionStack.push(K)},"begin"),popState:o(function(){var K=this.conditionStack.length-1;return K>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(K){return K=this.conditionStack.length-1-Math.abs(K||0),K>=0?this.conditionStack[K]:"INITIAL"},"topState"),pushState:o(function(K){this.begin(K)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(K,ae,Q,de){var ne=de;switch(Q){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 19;case 7:return this.begin("CONFIG"),73;break;case 8:return 74;case 9:return this.popState(),this.popState(),75;break;case 10:return ae.yytext=ae.yytext.trim(),71;break;case 11:return ae.yytext=ae.yytext.trim(),this.begin("ALIAS"),71;break;case 12:return this.begin("LINE"),14;break;case 13:return this.begin("ID"),50;break;case 14:return this.begin("ID"),52;break;case 15:return 13;case 16:return this.begin("ID"),53;break;case 17:return ae.yytext=ae.yytext.trim(),this.begin("ALIAS"),71;break;case 18:return this.popState(),this.popState(),this.begin("LINE"),51;break;case 19:return this.popState(),this.popState(),5;break;case 20:return this.begin("LINE"),36;break;case 21:return this.begin("LINE"),37;break;case 22:return this.begin("LINE"),38;break;case 23:return this.begin("LINE"),39;break;case 24:return this.begin("LINE"),49;break;case 25:return this.begin("LINE"),41;break;case 26:return this.begin("LINE"),43;break;case 27:return this.begin("LINE"),48;break;case 28:return this.begin("LINE"),44;break;case 29:return this.begin("LINE"),47;break;case 30:return this.begin("LINE"),46;break;case 31:return this.popState(),15;break;case 32:return 16;case 33:return 66;case 34:return 67;case 35:return 60;case 36:return 61;case 37:return 62;case 38:return 63;case 39:return 58;case 40:return 55;case 41:return this.begin("ID"),21;break;case 42:return this.begin("ID"),23;break;case 43:return 29;case 44:return 30;case 45:return this.begin("acc_title"),31;break;case 46:return this.popState(),"acc_title_value";break;case 47:return this.begin("acc_descr"),33;break;case 48:return this.popState(),"acc_descr_value";break;case 49:this.begin("acc_descr_multiline");break;case 50:this.popState();break;case 51:return"acc_descr_multiline_value";case 52:return 6;case 53:return 18;case 54:return 20;case 55:return 65;case 56:return 5;case 57:return ae.yytext=ae.yytext.trim(),71;break;case 58:return 78;case 59:return 79;case 60:return 80;case 61:return 81;case 62:return 76;case 63:return 77;case 64:return 82;case 65:return 83;case 66:return 84;case 67:return 85;case 68:return 86;case 69:return 86;case 70:return 69;case 71:return 70;case 72:return 5;case 73:return"INVALID"}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^\<->\->:\n,;@]+?([\-]*[^\<->\->:\n,;@]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^<\->\->:\n,;]+?([\-]*[^<\->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+<\->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[50,51],inclusive:!1},acc_descr:{rules:[48],inclusive:!1},acc_title:{rules:[46],inclusive:!1},ID:{rules:[2,3,7,10,11,17],inclusive:!1},ALIAS:{rules:[2,3,18,19],inclusive:!1},LINE:{rules:[2,3,31],inclusive:!1},CONFIG:{rules:[8,9],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,12,13,14,15,16,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,47,49,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73],inclusive:!0}}};return ee})();J.lexer=ue;function re(){this.yy={}}return o(re,"Parser"),re.prototype=J,J.Parser=re,new re})();JF.parser=JF;Mye=JF});var XZe,jZe,KZe,b4,J6,e$=N(()=>{"use strict";Xt();w2();pt();fF();gr();ci();XZe={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34},jZe={FILLED:0,OPEN:1},KZe={LEFTOF:0,RIGHTOF:1,OVER:2},b4={ACTOR:"actor",BOUNDARY:"boundary",COLLECTIONS:"collections",CONTROL:"control",DATABASE:"database",ENTITY:"entity",PARTICIPANT:"participant",QUEUE:"queue"},J6=class{constructor(){this.state=new J1(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0}));this.setAccTitle=Rr;this.setAccDescription=Ir;this.setDiagramTitle=$r;this.getAccTitle=Mr;this.getAccDescription=Or;this.getDiagramTitle=Pr;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(ge().wrap),this.LINETYPE=XZe,this.ARROWTYPE=jZe,this.PLACEMENT=KZe}static{o(this,"SequenceDB")}addBox(e){this.state.records.boxes.push({name:e.text,wrap:e.wrap??this.autoWrap(),fill:e.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(e,r,n,i,a){let s=this.state.records.currentBox,l;if(a!==void 0){let h;a.includes(` +`)?h=a+` +`:h=`{ +`+a+` +}`,l=Kh(h,{schema:jh})}i=l?.type??i;let u=this.state.records.actors.get(e);if(u){if(this.state.records.currentBox&&u.box&&this.state.records.currentBox!==u.box)throw new Error(`A same participant should only be defined in one Box: ${u.name} can't be in '${u.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(s=u.box?u.box:this.state.records.currentBox,u.box=s,u&&r===u.name&&n==null)return}if(n?.text==null&&(n={text:r,type:i}),(i==null||n.text==null)&&(n={text:r,type:i}),this.state.records.actors.set(e,{box:s,name:r,description:n.text,wrap:n.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:i??"participant"}),this.state.records.prevActor){let h=this.state.records.actors.get(this.state.records.prevActor);h&&(h.nextActor=e)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(e),this.state.records.prevActor=e}activationCount(e){let r,n=0;if(!e)return 0;for(r=0;r>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},l}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:e,to:r,message:n?.text??"",wrap:n?.wrap??this.autoWrap(),type:i,activate:a}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(e=>e.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(e){return this.state.records.actors.get(e)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(e){this.state.records.wrapEnabled=e}extractWrap(e){if(e===void 0)return{};e=e.trim();let r=/^:?wrap:/.exec(e)!==null?!0:/^:?nowrap:/.exec(e)!==null?!1:void 0;return{cleanedText:(r===void 0?e:e.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:r}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:ge().sequence?.wrap??!1}clear(){this.state.reset(),Sr()}parseMessage(e){let r=e.trim(),{wrap:n,cleanedText:i}=this.extractWrap(r),a={text:i,wrap:n};return X.debug(`parseMessage: ${JSON.stringify(a)}`),a}parseBoxData(e){let r=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(e),n=r?.[1]?r[1].trim():"transparent",i=r?.[2]?r[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",n)||(n="transparent",i=e.trim());else{let l=new Option().style;l.color=n,l.color!==n&&(n="transparent",i=e.trim())}let{wrap:a,cleanedText:s}=this.extractWrap(i);return{text:s?sr(s,ge()):void 0,color:n,wrap:a}}addNote(e,r,n){let i={actor:e,placement:r,message:n.text,wrap:n.wrap??this.autoWrap()},a=[].concat(e,e);this.state.records.notes.push(i),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:a[0],to:a[1],message:n.text,wrap:n.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:r})}addLinks(e,r){let n=this.getActor(e);try{let i=sr(r.text,ge());i=i.replace(/=/g,"="),i=i.replace(/&/g,"&");let a=JSON.parse(i);this.insertLinks(n,a)}catch(i){X.error("error while parsing actor link text",i)}}addALink(e,r){let n=this.getActor(e);try{let i={},a=sr(r.text,ge()),s=a.indexOf("@");a=a.replace(/=/g,"="),a=a.replace(/&/g,"&");let l=a.slice(0,s-1).trim(),u=a.slice(s+1).trim();i[l]=u,this.insertLinks(n,i)}catch(i){X.error("error while parsing actor link text",i)}}insertLinks(e,r){if(e.links==null)e.links=r;else for(let n in r)e.links[n]=r[n]}addProperties(e,r){let n=this.getActor(e);try{let i=sr(r.text,ge()),a=JSON.parse(i);this.insertProperties(n,a)}catch(i){X.error("error while parsing actor properties text",i)}}insertProperties(e,r){if(e.properties==null)e.properties=r;else for(let n in r)e.properties[n]=r[n]}boxEnd(){this.state.records.currentBox=void 0}addDetails(e,r){let n=this.getActor(e),i=document.getElementById(r.text);try{let a=i.innerHTML,s=JSON.parse(a);s.properties&&this.insertProperties(n,s.properties),s.links&&this.insertLinks(n,s.links)}catch(a){X.error("error while parsing actor details text",a)}}getActorProperty(e,r){if(e?.properties!==void 0)return e.properties[r]}apply(e){if(Array.isArray(e))e.forEach(r=>{this.apply(r)});else switch(e.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:e.sequenceIndex,step:e.sequenceIndexStep,visible:e.sequenceVisible},wrap:!1,type:e.signalType});break;case"addParticipant":this.addActor(e.actor,e.actor,e.description,e.draw,e.config);break;case"createParticipant":if(this.state.records.actors.has(e.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=e.actor,this.addActor(e.actor,e.actor,e.description,e.draw,e.config),this.state.records.createdActors.set(e.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=e.actor,this.state.records.destroyedActors.set(e.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"activeEnd":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"addNote":this.addNote(e.actor,e.placement,e.text);break;case"addLinks":this.addLinks(e.actor,e.text);break;case"addALink":this.addALink(e.actor,e.text);break;case"addProperties":this.addProperties(e.actor,e.text);break;case"addDetails":this.addDetails(e.actor,e.text);break;case"addMessage":if(this.state.records.lastCreated){if(e.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(e.to!==this.state.records.lastDestroyed&&e.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(e.from,e.to,e.msg,e.signalType,e.activate);break;case"boxStart":this.addBox(e.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"rectStart":this.addSignal(void 0,void 0,e.color,e.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"optStart":this.addSignal(void 0,void 0,e.optText,e.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"altStart":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"else":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"setAccTitle":Rr(e.text);break;case"parStart":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"and":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,e.criticalText,e.signalType);break;case"option":this.addSignal(void 0,void 0,e.optionText,e.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"breakStart":this.addSignal(void 0,void 0,e.breakText,e.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break}}getConfig(){return ge().sequence}}});var QZe,Oye,Pye=N(()=>{"use strict";QZe=o(t=>`.actor { stroke: ${t.actorBorder}; fill: ${t.actorBkg}; } @@ -1256,6 +1648,11 @@ Expecting `+qe.join(", ")+", got '"+(this.terminals_[V]||V)+"'":at="Parse error .actor-line { stroke: ${t.actorLineColor}; } + + .innerArc { + stroke-width: 1.5; + stroke-dasharray: none; + } .messageLine0 { stroke-width: 1.5; @@ -1359,12 +1756,26 @@ Expecting `+qe.join(", ")+", got '"+(this.terminals_[V]||V)+"'":at="Parse error fill: ${t.actorBkg}; stroke-width: 2px; } -`,"getStyles"),hfe=oVe});var AO,vf,pfe,mfe,lVe,dfe,_O,cVe,uVe,Tb,_p,gfe,Uc,DO,hVe,fVe,dVe,pVe,mVe,gVe,yVe,yfe,vVe,xVe,bVe,wVe,TVe,kVe,EVe,vfe,SVe,LO,CVe,hi,xfe=N(()=>{"use strict";gr();Wv();ir();AO=Sa(z0(),1);ji();vf=18*2,pfe="actor-top",mfe="actor-bottom",lVe="actor-box",dfe="actor-man",_O=o(function(t,e){return kd(t,e)},"drawRect"),cVe=o(function(t,e,r,n,i){if(e.links===void 0||e.links===null||Object.keys(e.links).length===0)return{height:0,width:0};let a=e.links,s=e.actorCnt,l=e.rectData;var u="none";i&&(u="block !important");let h=t.append("g");h.attr("id","actor"+s+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",u);var f="";l.class!==void 0&&(f=" "+l.class);let d=l.width>r?l.width:r,p=h.append("rect");if(p.attr("class","actorPopupMenuPanel"+f),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",d),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),a!=null){var m=20;for(let v in a){var g=h.append("a"),y=(0,AO.sanitizeUrl)(a[v]);g.attr("xlink:href",y),g.attr("target","_blank"),CVe(n)(v,g,l.x+10,l.height+m,d,20,{class:"actor"},n),m+=30}}return p.attr("height",m),{height:l.height+m,width:d}},"drawPopup"),uVe=o(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),Tb=o(async function(t,e,r=null){let n=t.append("foreignObject"),i=await mh(e.text,cr()),s=n.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(i).node().getBoundingClientRect();if(n.attr("height",Math.round(s.height)).attr("width",Math.round(s.width)),e.class==="noteText"){let l=t.node().firstChild;l.setAttribute("height",s.height+2*e.textMargin);let u=l.getBBox();n.attr("x",Math.round(u.x+u.width/2-s.width/2)).attr("y",Math.round(u.y+u.height/2-s.height/2))}else if(r){let{startx:l,stopx:u,starty:h}=r;if(l>u){let f=l;l=u,u=f}n.attr("x",Math.round(l+Math.abs(l-u)/2-s.width/2)),e.class==="loopText"?n.attr("y",Math.round(h)):n.attr("y",Math.round(h-s.height))}return[n]},"drawKatex"),_p=o(function(t,e){let r=0,n=0,i=e.text.split(Ze.lineBreakRegex),[a,s]=Bo(e.fontSize),l=[],u=0,h=o(()=>e.y,"yfunc");if(e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0)switch(e.valign){case"top":case"start":h=o(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":h=o(()=>Math.round(e.y+(r+n+e.textMargin)/2),"yfunc");break;case"bottom":case"end":h=o(()=>Math.round(e.y+(r+n+2*e.textMargin)-e.textMargin),"yfunc");break}if(e.anchor!==void 0&&e.textMargin!==void 0&&e.width!==void 0)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle";break}for(let[f,d]of i.entries()){e.textMargin!==void 0&&e.textMargin===0&&a!==void 0&&(u=f*a);let p=t.append("text");p.attr("x",e.x),p.attr("y",h()),e.anchor!==void 0&&p.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),e.fontFamily!==void 0&&p.style("font-family",e.fontFamily),s!==void 0&&p.style("font-size",s),e.fontWeight!==void 0&&p.style("font-weight",e.fontWeight),e.fill!==void 0&&p.attr("fill",e.fill),e.class!==void 0&&p.attr("class",e.class),e.dy!==void 0?p.attr("dy",e.dy):u!==0&&p.attr("dy",u);let m=d||H9;if(e.tspan){let g=p.append("tspan");g.attr("x",e.x),e.fill!==void 0&&g.attr("fill",e.fill),g.text(m)}else p.text(m);e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0&&(n+=(p._groups||p)[0][0].getBBox().height,r=n),l.push(p)}return l},"drawText"),gfe=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");return n.attr("points",r(e.x,e.y,e.width,e.height,7)),n.attr("class","labelBox"),e.y=e.y+e.height/2,_p(t,e),n},"drawLabel"),Uc=-1,DO=o((t,e,r,n)=>{t.select&&r.forEach(i=>{let a=e.get(i),s=t.select("#actor"+a.actorCnt);!n.mirrorActors&&a.stopy?s.attr("y2",a.stopy+a.height/2):n.mirrorActors&&s.attr("y2",a.stopy)})},"fixLifeLineHeights"),hVe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower();var u=l;n||(Uc++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",uVe(`actor${Uc}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Uc).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),u=l.append("g"),e.actorCnt=Uc,e.links!=null&&u.attr("id","root-"+Uc));let h=Tl();var f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${mfe}`:f+=` ${pfe}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.rx=3,h.ry=3,h.name=e.name;let d=_O(u,h);if(e.rectData=h,e.properties?.icon){let m=e.properties.icon.trim();m.charAt(0)==="@"?Iq(u,h.x+h.width-20,h.y+10,m.substr(1)):Mq(u,h.x+h.width-20,h.y+10,m)}LO(r,pi(e.description))(e.description,u,h.x,h.y,h.width,h.height,{class:`actor ${lVe}`},r);let p=e.height;if(d.node){let m=d.node().getBBox();e.height=m.height,p=m.height}return p},"drawActorTypeParticipant"),fVe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,l=t.append("g").lower();n||(Uc++,l.append("line").attr("id","actor"+Uc).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=Uc);let u=t.append("g"),h=dfe;n?h+=` ${mfe}`:h+=` ${pfe}`,u.attr("class",h),u.attr("name",e.name);let f=Tl();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor",f.rx=3,f.ry=3,u.append("line").attr("id","actor-man-torso"+Uc).attr("x1",a).attr("y1",i+25).attr("x2",a).attr("y2",i+45),u.append("line").attr("id","actor-man-arms"+Uc).attr("x1",a-vf/2).attr("y1",i+33).attr("x2",a+vf/2).attr("y2",i+33),u.append("line").attr("x1",a-vf/2).attr("y1",i+60).attr("x2",a).attr("y2",i+45),u.append("line").attr("x1",a).attr("y1",i+45).attr("x2",a+vf/2-2).attr("y2",i+60);let d=u.append("circle");d.attr("cx",e.x+e.width/2),d.attr("cy",i+10),d.attr("r",15),d.attr("width",e.width),d.attr("height",e.height);let p=u.node().getBBox();return e.height=p.height,LO(r,pi(e.description))(e.description,u,f.x,f.y+35,f.width,f.height,{class:`actor ${dfe}`},r),e.height},"drawActorTypeActor"),dVe=o(async function(t,e,r,n){switch(e.type){case"actor":return await fVe(t,e,r,n);case"participant":return await hVe(t,e,r,n)}},"drawActor"),pVe=o(function(t,e,r){let i=t.append("g");yfe(i,e),e.name&&LO(r)(e.name,i,e.x,e.y+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},r),i.lower()},"drawBox"),mVe=o(function(t){return t.append("g")},"anchorElement"),gVe=o(function(t,e,r,n,i){let a=Tl(),s=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=r-e.starty,_O(s,a)},"drawActivation"),yVe=o(async function(t,e,r,n){let{boxMargin:i,boxTextMargin:a,labelBoxHeight:s,labelBoxWidth:l,messageFontFamily:u,messageFontSize:h,messageFontWeight:f}=n,d=t.append("g"),p=o(function(y,v,x,b){return d.append("line").attr("x1",y).attr("y1",v).attr("x2",x).attr("y2",b).attr("class","loopLine")},"drawLoopLine");p(e.startx,e.starty,e.stopx,e.starty),p(e.stopx,e.starty,e.stopx,e.stopy),p(e.startx,e.stopy,e.stopx,e.stopy),p(e.startx,e.starty,e.startx,e.stopy),e.sections!==void 0&&e.sections.forEach(function(y){p(e.startx,y.y,e.stopx,y.y).style("stroke-dasharray","3, 3")});let m=Hv();m.text=r,m.x=e.startx,m.y=e.starty,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.anchor="middle",m.valign="middle",m.tspan=!1,m.width=l||50,m.height=s||20,m.textMargin=a,m.class="labelText",gfe(d,m),m=vfe(),m.text=e.title,m.x=e.startx+l/2+(e.stopx-e.startx)/2,m.y=e.starty+i+a,m.anchor="middle",m.valign="middle",m.textMargin=a,m.class="loopText",m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=!0;let g=pi(m.text)?await Tb(d,m,e):_p(d,m);if(e.sectionTitles!==void 0){for(let[y,v]of Object.entries(e.sectionTitles))if(v.message){m.text=v.message,m.x=e.startx+(e.stopx-e.startx)/2,m.y=e.sections[y].y+i+a,m.class="loopText",m.anchor="middle",m.valign="middle",m.tspan=!1,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=e.wrap,pi(m.text)?(e.starty=e.sections[y].y,await Tb(d,m,e)):_p(d,m);let x=Math.round(g.map(b=>(b._groups||b)[0][0].getBBox().height).reduce((b,w)=>b+w));e.sections[y].height+=x-(i+a)}}return e.height=Math.round(e.stopy-e.starty),d},"drawLoop"),yfe=o(function(t,e){q5(t,e)},"drawBackgroundRect"),vVe=o(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),xVe=o(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),bVe=o(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),wVe=o(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),TVe=o(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),kVe=o(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),EVe=o(function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),vfe=o(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),SVe=o(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),LO=function(){function t(a,s,l,u,h,f,d){let p=s.append("text").attr("x",l+h/2).attr("y",u+f/2+5).style("text-anchor","middle").text(a);i(p,d)}o(t,"byText");function e(a,s,l,u,h,f,d,p){let{actorFontSize:m,actorFontFamily:g,actorFontWeight:y}=p,[v,x]=Bo(m),b=a.split(Ze.lineBreakRegex);for(let w=0;w{let s=Dp(Ne),l=a.actorKeys.reduce((f,d)=>f+=t.get(d).width+(t.get(d).margin||0),0);l-=2*Ne.boxTextMargin,a.wrap&&(a.name=Gt.wrapLabel(a.name,l-2*Ne.wrapPadding,s));let u=Gt.calculateTextDimensions(a.name,s);i=Ze.getMax(u.height,i);let h=Ze.getMax(l,u.width+2*Ne.wrapPadding);if(a.margin=Ne.boxTextMargin,la.textMaxHeight=i),Ze.getMax(n,Ne.height)}var Ne,rt,AVe,Dp,_1,RO,DVe,LVe,NO,wfe,Tfe,D6,bfe,NVe,IVe,PVe,BVe,FVe,kfe,Efe=N(()=>{"use strict";dr();xfe();vt();gr();Wv();zt();s0();ir();Ei();Ne={},rt={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:o(function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(t=>t.height||0))+(this.loops.length===0?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.messages.length===0?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.notes.length===0?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:o(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:o(function(t){this.boxes.push(t)},"addBox"),addActor:o(function(t){this.actors.push(t)},"addActor"),addLoop:o(function(t){this.loops.push(t)},"addLoop"),addMessage:o(function(t){this.messages.push(t)},"addMessage"),addNote:o(function(t){this.notes.push(t)},"addNote"),lastActor:o(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:o(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:o(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:o(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:o(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,Tfe(me())},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=this,a=0;function s(l){return o(function(h){a++;let f=i.sequenceItems.length-a+1;i.updateVal(h,"starty",e-f*Ne.boxMargin,Math.min),i.updateVal(h,"stopy",n+f*Ne.boxMargin,Math.max),i.updateVal(rt.data,"startx",t-f*Ne.boxMargin,Math.min),i.updateVal(rt.data,"stopx",r+f*Ne.boxMargin,Math.max),l!=="activation"&&(i.updateVal(h,"startx",t-f*Ne.boxMargin,Math.min),i.updateVal(h,"stopx",r+f*Ne.boxMargin,Math.max),i.updateVal(rt.data,"starty",e-f*Ne.boxMargin,Math.min),i.updateVal(rt.data,"stopy",n+f*Ne.boxMargin,Math.max))},"updateItemBounds")}o(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:o(function(t,e,r,n){let i=Ze.getMin(t,r),a=Ze.getMax(t,r),s=Ze.getMin(e,n),l=Ze.getMax(e,n);this.updateVal(rt.data,"startx",i,Math.min),this.updateVal(rt.data,"starty",s,Math.min),this.updateVal(rt.data,"stopx",a,Math.max),this.updateVal(rt.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),newActivation:o(function(t,e,r){let n=r.get(t.from),i=D6(t.from).length||0,a=n.x+n.width/2+(i-1)*Ne.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+Ne.activationWidth,stopy:void 0,actor:t.from,anchored:hi.anchorElement(e)})},"newActivation"),endActivation:o(function(t){let e=this.activations.map(function(r){return r.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:o(function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},"createLoop"),newLoop:o(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:o(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:o(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:o(function(t){let e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:rt.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:o(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:o(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=Ze.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return{bounds:this.data,models:this.models}},"getBounds")},AVe=o(async function(t,e){rt.bumpVerticalPos(Ne.boxMargin),e.height=Ne.boxMargin,e.starty=rt.getVerticalPos();let r=Tl();r.x=e.startx,r.y=e.starty,r.width=e.width||Ne.width,r.class="note";let n=t.append("g"),i=hi.drawRect(n,r),a=Hv();a.x=e.startx,a.y=e.starty,a.width=r.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=Ne.noteFontFamily,a.fontSize=Ne.noteFontSize,a.fontWeight=Ne.noteFontWeight,a.anchor=Ne.noteAlign,a.textMargin=Ne.noteMargin,a.valign="center";let s=pi(a.text)?await Tb(n,a):_p(n,a),l=Math.round(s.map(u=>(u._groups||u)[0][0].getBBox().height).reduce((u,h)=>u+h));i.attr("height",l+2*Ne.noteMargin),e.height+=l+2*Ne.noteMargin,rt.bumpVerticalPos(l+2*Ne.noteMargin),e.stopy=e.starty+l+2*Ne.noteMargin,e.stopx=e.startx+r.width,rt.insert(e.startx,e.starty,e.stopx,e.stopy),rt.models.addNote(e)},"drawNote"),Dp=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),_1=o(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),RO=o(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");o(_Ve,"boundMessage");DVe=o(async function(t,e,r,n){let{startx:i,stopx:a,starty:s,message:l,type:u,sequenceIndex:h,sequenceVisible:f}=e,d=Gt.calculateTextDimensions(l,Dp(Ne)),p=Hv();p.x=i,p.y=s+10,p.width=a-i,p.class="messageText",p.dy="1em",p.text=l,p.fontFamily=Ne.messageFontFamily,p.fontSize=Ne.messageFontSize,p.fontWeight=Ne.messageFontWeight,p.anchor=Ne.messageAlign,p.valign="center",p.textMargin=Ne.wrapPadding,p.tspan=!1,pi(p.text)?await Tb(t,p,{startx:i,stopx:a,starty:r}):_p(t,p);let m=d.width,g;i===a?Ne.rightAngles?g=t.append("path").attr("d",`M ${i},${r} H ${i+Ze.getMax(Ne.width/2,m/2)} V ${r+25} H ${i}`):g=t.append("path").attr("d","M "+i+","+r+" C "+(i+60)+","+(r-10)+" "+(i+60)+","+(r+30)+" "+i+","+(r+20)):(g=t.append("line"),g.attr("x1",i),g.attr("y1",r),g.attr("x2",a),g.attr("y2",r)),u===n.db.LINETYPE.DOTTED||u===n.db.LINETYPE.DOTTED_CROSS||u===n.db.LINETYPE.DOTTED_POINT||u===n.db.LINETYPE.DOTTED_OPEN||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED?(g.style("stroke-dasharray","3, 3"),g.attr("class","messageLine1")):g.attr("class","messageLine0");let y="";Ne.arrowMarkerAbsolute&&(y=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,y=y.replace(/\(/g,"\\("),y=y.replace(/\)/g,"\\)")),g.attr("stroke-width",2),g.attr("stroke","none"),g.style("fill","none"),(u===n.db.LINETYPE.SOLID||u===n.db.LINETYPE.DOTTED)&&g.attr("marker-end","url("+y+"#arrowhead)"),(u===n.db.LINETYPE.BIDIRECTIONAL_SOLID||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(g.attr("marker-start","url("+y+"#arrowhead)"),g.attr("marker-end","url("+y+"#arrowhead)")),(u===n.db.LINETYPE.SOLID_POINT||u===n.db.LINETYPE.DOTTED_POINT)&&g.attr("marker-end","url("+y+"#filled-head)"),(u===n.db.LINETYPE.SOLID_CROSS||u===n.db.LINETYPE.DOTTED_CROSS)&&g.attr("marker-end","url("+y+"#crosshead)"),(f||Ne.showSequenceNumbers)&&(g.attr("marker-start","url("+y+"#sequencenumber)"),t.append("text").attr("x",i).attr("y",r+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(h))},"drawMessage"),LVe=o(function(t,e,r,n,i,a,s){let l=0,u=0,h,f=0;for(let d of n){let p=e.get(d),m=p.box;h&&h!=m&&(s||rt.models.addBox(h),u+=Ne.boxMargin+h.margin),m&&m!=h&&(s||(m.x=l+u,m.y=i),u+=m.margin),p.width=p.width||Ne.width,p.height=Ze.getMax(p.height||Ne.height,Ne.height),p.margin=p.margin||Ne.actorMargin,f=Ze.getMax(f,p.height),r.get(p.name)&&(u+=p.width/2),p.x=l+u,p.starty=rt.getVerticalPos(),rt.insert(p.x,i,p.x+p.width,p.height),l+=p.width+u,p.box&&(p.box.width=l+m.margin-p.box.x),u=p.margin,h=p.box,rt.models.addActor(p)}h&&!s&&rt.models.addBox(h),rt.bumpVerticalPos(f)},"addActorRenderingData"),NO=o(async function(t,e,r,n){if(n){let i=0;rt.bumpVerticalPos(Ne.boxMargin*2);for(let a of r){let s=e.get(a);s.stopy||(s.stopy=rt.getVerticalPos());let l=await hi.drawActor(t,s,Ne,!0);i=Ze.getMax(i,l)}rt.bumpVerticalPos(i+Ne.boxMargin)}else for(let i of r){let a=e.get(i);await hi.drawActor(t,a,Ne,!1)}},"drawActors"),wfe=o(function(t,e,r,n){let i=0,a=0;for(let s of r){let l=e.get(s),u=IVe(l),h=hi.drawPopup(t,l,u,Ne,Ne.forceMenus,n);h.height>i&&(i=h.height),h.width+l.x>a&&(a=h.width+l.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),Tfe=o(function(t){Gn(Ne,t),t.fontFamily&&(Ne.actorFontFamily=Ne.noteFontFamily=Ne.messageFontFamily=t.fontFamily),t.fontSize&&(Ne.actorFontSize=Ne.noteFontSize=Ne.messageFontSize=t.fontSize),t.fontWeight&&(Ne.actorFontWeight=Ne.noteFontWeight=Ne.messageFontWeight=t.fontWeight)},"setConf"),D6=o(function(t){return rt.activations.filter(function(e){return e.actor===t})},"actorActivations"),bfe=o(function(t,e){let r=e.get(t),n=D6(t),i=n.reduce(function(s,l){return Ze.getMin(s,l.startx)},r.x+r.width/2-1),a=n.reduce(function(s,l){return Ze.getMax(s,l.stopx)},r.x+r.width/2+1);return[i,a]},"activationBounds");o(Hc,"adjustLoopHeightForWrap");o(RVe,"adjustCreatedDestroyedData");NVe=o(async function(t,e,r,n){let{securityLevel:i,sequence:a}=me();Ne=a;let s;i==="sandbox"&&(s=Ge("#i"+e));let l=i==="sandbox"?Ge(s.nodes()[0].contentDocument.body):Ge("body"),u=i==="sandbox"?s.nodes()[0].contentDocument:document;rt.init(),Y.debug(n.db);let h=i==="sandbox"?l.select(`[id="${e}"]`):Ge(`[id="${e}"]`),f=n.db.getActors(),d=n.db.getCreatedActors(),p=n.db.getDestroyedActors(),m=n.db.getBoxes(),g=n.db.getActorKeys(),y=n.db.getMessages(),v=n.db.getDiagramTitle(),x=n.db.hasAtLeastOneBox(),b=n.db.hasAtLeastOneBoxWithTitle(),w=await MVe(f,y,n);if(Ne.height=await OVe(f,w,m),hi.insertComputerIcon(h),hi.insertDatabaseIcon(h),hi.insertClockIcon(h),x&&(rt.bumpVerticalPos(Ne.boxMargin),b&&rt.bumpVerticalPos(m[0].textMaxHeight)),Ne.hideUnusedParticipants===!0){let F=new Set;y.forEach(P=>{F.add(P.from),F.add(P.to)}),g=g.filter(P=>F.has(P))}LVe(h,f,d,g,0,y,!1);let C=await FVe(y,f,w,n);hi.insertArrowHead(h),hi.insertArrowCrossHead(h),hi.insertArrowFilledHead(h),hi.insertSequenceNumber(h);function T(F,P){let z=rt.endActivation(F);z.starty+18>P&&(z.starty=P-6,P+=12),hi.drawActivation(h,z,P,Ne,D6(F.from).length),rt.insert(z.startx,P-10,z.stopx,P)}o(T,"activeEnd");let E=1,A=1,S=[],_=[],I=0;for(let F of y){let P,z,$;switch(F.type){case n.db.LINETYPE.NOTE:rt.resetVerticalPos(),z=F.noteModel,await AVe(h,z);break;case n.db.LINETYPE.ACTIVE_START:rt.newActivation(F,h,f);break;case n.db.LINETYPE.ACTIVE_END:T(F,rt.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.LOOP_END:P=rt.endLoop(),await hi.drawLoop(h,P,"loop",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.RECT_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin,H=>rt.newLoop(void 0,H.message));break;case n.db.LINETYPE.RECT_END:P=rt.endLoop(),_.push(P),rt.models.addLoop(P),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos());break;case n.db.LINETYPE.OPT_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.OPT_END:P=rt.endLoop(),await hi.drawLoop(h,P,"opt",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.ALT_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.ALT_ELSE:Hc(C,F,Ne.boxMargin+Ne.boxTextMargin,Ne.boxMargin,H=>rt.addSectionToLoop(H));break;case n.db.LINETYPE.ALT_END:P=rt.endLoop(),await hi.drawLoop(h,P,"alt",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H)),rt.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:Hc(C,F,Ne.boxMargin+Ne.boxTextMargin,Ne.boxMargin,H=>rt.addSectionToLoop(H));break;case n.db.LINETYPE.PAR_END:P=rt.endLoop(),await hi.drawLoop(h,P,"par",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.AUTONUMBER:E=F.message.start||E,A=F.message.step||A,F.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.CRITICAL_OPTION:Hc(C,F,Ne.boxMargin+Ne.boxTextMargin,Ne.boxMargin,H=>rt.addSectionToLoop(H));break;case n.db.LINETYPE.CRITICAL_END:P=rt.endLoop(),await hi.drawLoop(h,P,"critical",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.BREAK_START:Hc(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.BREAK_END:P=rt.endLoop(),await hi.drawLoop(h,P,"break",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;default:try{$=F.msgModel,$.starty=rt.getVerticalPos(),$.sequenceIndex=E,$.sequenceVisible=n.db.showSequenceNumbers();let H=await _Ve(h,$);RVe(F,$,H,I,f,d,p),S.push({messageModel:$,lineStartY:H}),rt.models.addMessage($)}catch(H){Y.error("error while drawing message",H)}}[n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT,n.db.LINETYPE.BIDIRECTIONAL_SOLID,n.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(F.type)&&(E=E+A),I++}Y.debug("createdActors",d),Y.debug("destroyedActors",p),await NO(h,f,g,!1);for(let F of S)await DVe(h,F.messageModel,F.lineStartY,n);Ne.mirrorActors&&await NO(h,f,g,!0),_.forEach(F=>hi.drawBackgroundRect(h,F)),DO(h,f,g,Ne);for(let F of rt.models.boxes)F.height=rt.getVerticalPos()-F.y,rt.insert(F.x,F.y,F.x+F.width,F.height),F.startx=F.x,F.starty=F.y,F.stopx=F.startx+F.width,F.stopy=F.starty+F.height,F.stroke="rgb(0,0,0, 0.5)",hi.drawBox(h,F,Ne);x&&rt.bumpVerticalPos(Ne.boxMargin);let D=wfe(h,f,g,u),{bounds:k}=rt.getBounds();k.startx===void 0&&(k.startx=0),k.starty===void 0&&(k.starty=0),k.stopx===void 0&&(k.stopx=0),k.stopy===void 0&&(k.stopy=0);let L=k.stopy-k.starty;L2,d=o(y=>l?-y:y,"adjustValue");t.from===t.to?h=u:(t.activate&&!f&&(h+=d(Ne.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(h+=d(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(u-=d(3)));let p=[n,i,a,s],m=Math.abs(u-h);t.wrap&&t.message&&(t.message=Gt.wrapLabel(t.message,Ze.getMax(m+2*Ne.wrapPadding,Ne.width),Dp(Ne)));let g=Gt.calculateTextDimensions(t.message,Dp(Ne));return{width:Ze.getMax(t.wrap?0:g.width+2*Ne.wrapPadding,m+2*Ne.wrapPadding,Ne.width),height:0,startx:u,stopx:h,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,p),toBounds:Math.max.apply(null,p)}},"buildMessageModel"),FVe=o(async function(t,e,r,n){let i={},a=[],s,l,u;for(let h of t){switch(h.type){case n.db.LINETYPE.LOOP_START:case n.db.LINETYPE.ALT_START:case n.db.LINETYPE.OPT_START:case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:case n.db.LINETYPE.CRITICAL_START:case n.db.LINETYPE.BREAK_START:a.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case n.db.LINETYPE.ALT_ELSE:case n.db.LINETYPE.PAR_AND:case n.db.LINETYPE.CRITICAL_OPTION:h.message&&(s=a.pop(),i[s.id]=s,i[h.id]=s,a.push(s));break;case n.db.LINETYPE.LOOP_END:case n.db.LINETYPE.ALT_END:case n.db.LINETYPE.OPT_END:case n.db.LINETYPE.PAR_END:case n.db.LINETYPE.CRITICAL_END:case n.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case n.db.LINETYPE.ACTIVE_START:{let d=e.get(h.from?h.from:h.to.actor),p=D6(h.from?h.from:h.to.actor).length,m=d.x+d.width/2+(p-1)*Ne.activationWidth/2,g={startx:m,stopx:m+Ne.activationWidth,actor:h.from,enabled:!0};rt.activations.push(g)}break;case n.db.LINETYPE.ACTIVE_END:{let d=rt.activations.map(p=>p.actor).lastIndexOf(h.from);rt.activations.splice(d,1).splice(0,1)}break}h.placement!==void 0?(l=await PVe(h,e,n),h.noteModel=l,a.forEach(d=>{s=d,s.from=Ze.getMin(s.from,l.startx),s.to=Ze.getMax(s.to,l.startx+l.width),s.width=Ze.getMax(s.width,Math.abs(s.from-s.to))-Ne.labelBoxWidth})):(u=BVe(h,e,n),h.msgModel=u,u.startx&&u.stopx&&a.length>0&&a.forEach(d=>{if(s=d,u.startx===u.stopx){let p=e.get(h.from),m=e.get(h.to);s.from=Ze.getMin(p.x-u.width/2,p.x-p.width/2,s.from),s.to=Ze.getMax(m.x+u.width/2,m.x+p.width/2,s.to),s.width=Ze.getMax(s.width,Math.abs(s.to-s.from))-Ne.labelBoxWidth}else s.from=Ze.getMin(u.startx,s.from),s.to=Ze.getMax(u.stopx,s.to),s.width=Ze.getMax(s.width,u.width)-Ne.labelBoxWidth}))}return rt.activations=[],Y.debug("Loop type widths:",i),i},"calculateLoopBounds"),kfe={bounds:rt,drawActors:NO,drawActorsPopup:wfe,setConf:Tfe,draw:NVe}});var Sfe={};hr(Sfe,{diagram:()=>$Ve});var $Ve,Cfe=N(()=>{"use strict";cfe();ufe();ffe();zt();Efe();$Ve={parser:lfe,get db(){return new _6},renderer:kfe,styles:hfe,init:o(t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,Yy({sequence:{wrap:t.wrap}}))},"init")}});var MO,L6,IO=N(()=>{"use strict";MO=function(){var t=o(function(Ie,be,W,de){for(W=W||{},de=Ie.length;de--;W[Ie[de]]=be);return W},"o"),e=[1,18],r=[1,19],n=[1,20],i=[1,41],a=[1,42],s=[1,26],l=[1,24],u=[1,25],h=[1,32],f=[1,33],d=[1,34],p=[1,45],m=[1,35],g=[1,36],y=[1,37],v=[1,38],x=[1,27],b=[1,28],w=[1,29],C=[1,30],T=[1,31],E=[1,44],A=[1,46],S=[1,43],_=[1,47],I=[1,9],D=[1,8,9],k=[1,58],L=[1,59],R=[1,60],O=[1,61],M=[1,62],B=[1,63],F=[1,64],P=[1,8,9,41],z=[1,76],$=[1,8,9,12,13,22,39,41,44,66,67,68,69,70,71,72,77,79],H=[1,8,9,12,13,17,20,22,39,41,44,48,58,66,67,68,69,70,71,72,77,79,84,99,101,102],Q=[13,58,84,99,101,102],j=[13,58,71,72,84,99,101,102],ie=[13,58,66,67,68,69,70,84,99,101,102],ne=[1,98],le=[1,115],he=[1,107],K=[1,113],X=[1,108],te=[1,109],J=[1,110],se=[1,111],ue=[1,112],Z=[1,114],Se=[22,58,59,80,84,85,86,87,88,89],ce=[1,8,9,39,41,44],ae=[1,8,9,22],Oe=[1,143],ge=[1,8,9,59],ze=[1,8,9,22,58,59,80,84,85,86,87,88,89],He={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,DOT:17,className:18,classLiteralName:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,ANNOTATION_START:47,ANNOTATION_END:48,MEMBER:49,SEPARATOR:50,relation:51,NOTE_FOR:52,noteText:53,NOTE:54,CLASSDEF:55,classList:56,stylesOpt:57,ALPHA:58,COMMA:59,direction_tb:60,direction_bt:61,direction_rl:62,direction_lr:63,relationType:64,lineType:65,AGGREGATION:66,EXTENSION:67,COMPOSITION:68,DEPENDENCY:69,LOLLIPOP:70,LINE:71,DOTTED_LINE:72,CALLBACK:73,LINK:74,LINK_TARGET:75,CLICK:76,CALLBACK_NAME:77,CALLBACK_ARGS:78,HREF:79,STYLE:80,CSSCLASS:81,style:82,styleComponent:83,NUM:84,COLON:85,UNIT:86,SPACE:87,BRKT:88,PCT:89,commentToken:90,textToken:91,graphCodeTokens:92,textNoTagsToken:93,TAGSTART:94,TAGEND:95,"==":96,"--":97,DEFAULT:98,MINUS:99,keywords:100,UNICODE_TEXT:101,BQUOTE_STR:102,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",17:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",47:"ANNOTATION_START",48:"ANNOTATION_END",49:"MEMBER",50:"SEPARATOR",52:"NOTE_FOR",54:"NOTE",55:"CLASSDEF",58:"ALPHA",59:"COMMA",60:"direction_tb",61:"direction_bt",62:"direction_rl",63:"direction_lr",66:"AGGREGATION",67:"EXTENSION",68:"COMPOSITION",69:"DEPENDENCY",70:"LOLLIPOP",71:"LINE",72:"DOTTED_LINE",73:"CALLBACK",74:"LINK",75:"LINK_TARGET",76:"CLICK",77:"CALLBACK_NAME",78:"CALLBACK_ARGS",79:"HREF",80:"STYLE",81:"CSSCLASS",84:"NUM",85:"COLON",86:"UNIT",87:"SPACE",88:"BRKT",89:"PCT",92:"graphCodeTokens",94:"TAGSTART",95:"TAGEND",96:"==",97:"--",98:"DEFAULT",99:"MINUS",100:"keywords",101:"UNICODE_TEXT",102:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,3],[15,2],[18,1],[18,3],[18,1],[18,2],[18,2],[18,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,6],[43,2],[43,3],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[56,1],[56,3],[32,1],[32,1],[32,1],[32,1],[51,3],[51,2],[51,2],[51,1],[64,1],[64,1],[64,1],[64,1],[64,1],[65,1],[65,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[57,1],[57,3],[82,1],[82,2],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[90,1],[90,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[93,1],[93,1],[93,1],[93,1],[16,1],[16,1],[16,1],[16,1],[19,1],[53,1]],performAction:o(function(be,W,de,re,oe,V,xe){var q=V.length-1;switch(oe){case 8:this.$=V[q-1];break;case 9:case 12:case 14:this.$=V[q];break;case 10:case 13:this.$=V[q-2]+"."+V[q];break;case 11:case 15:this.$=V[q-1]+V[q];break;case 16:case 17:this.$=V[q-1]+"~"+V[q]+"~";break;case 18:re.addRelation(V[q]);break;case 19:V[q-1].title=re.cleanupLabel(V[q]),re.addRelation(V[q-1]);break;case 30:this.$=V[q].trim(),re.setAccTitle(this.$);break;case 31:case 32:this.$=V[q].trim(),re.setAccDescription(this.$);break;case 33:re.addClassesToNamespace(V[q-3],V[q-1]);break;case 34:re.addClassesToNamespace(V[q-4],V[q-1]);break;case 35:this.$=V[q],re.addNamespace(V[q]);break;case 36:this.$=[V[q]];break;case 37:this.$=[V[q-1]];break;case 38:V[q].unshift(V[q-2]),this.$=V[q];break;case 40:re.setCssClass(V[q-2],V[q]);break;case 41:re.addMembers(V[q-3],V[q-1]);break;case 42:re.setCssClass(V[q-5],V[q-3]),re.addMembers(V[q-5],V[q-1]);break;case 43:this.$=V[q],re.addClass(V[q]);break;case 44:this.$=V[q-1],re.addClass(V[q-1]),re.setClassLabel(V[q-1],V[q]);break;case 45:re.addAnnotation(V[q],V[q-2]);break;case 46:case 59:this.$=[V[q]];break;case 47:V[q].push(V[q-1]),this.$=V[q];break;case 48:break;case 49:re.addMember(V[q-1],re.cleanupLabel(V[q]));break;case 50:break;case 51:break;case 52:this.$={id1:V[q-2],id2:V[q],relation:V[q-1],relationTitle1:"none",relationTitle2:"none"};break;case 53:this.$={id1:V[q-3],id2:V[q],relation:V[q-1],relationTitle1:V[q-2],relationTitle2:"none"};break;case 54:this.$={id1:V[q-3],id2:V[q],relation:V[q-2],relationTitle1:"none",relationTitle2:V[q-1]};break;case 55:this.$={id1:V[q-4],id2:V[q],relation:V[q-2],relationTitle1:V[q-3],relationTitle2:V[q-1]};break;case 56:re.addNote(V[q],V[q-1]);break;case 57:re.addNote(V[q]);break;case 58:this.$=V[q-2],re.defineClass(V[q-1],V[q]);break;case 60:this.$=V[q-2].concat([V[q]]);break;case 61:re.setDirection("TB");break;case 62:re.setDirection("BT");break;case 63:re.setDirection("RL");break;case 64:re.setDirection("LR");break;case 65:this.$={type1:V[q-2],type2:V[q],lineType:V[q-1]};break;case 66:this.$={type1:"none",type2:V[q],lineType:V[q-1]};break;case 67:this.$={type1:V[q-1],type2:"none",lineType:V[q]};break;case 68:this.$={type1:"none",type2:"none",lineType:V[q]};break;case 69:this.$=re.relationType.AGGREGATION;break;case 70:this.$=re.relationType.EXTENSION;break;case 71:this.$=re.relationType.COMPOSITION;break;case 72:this.$=re.relationType.DEPENDENCY;break;case 73:this.$=re.relationType.LOLLIPOP;break;case 74:this.$=re.lineType.LINE;break;case 75:this.$=re.lineType.DOTTED_LINE;break;case 76:case 82:this.$=V[q-2],re.setClickEvent(V[q-1],V[q]);break;case 77:case 83:this.$=V[q-3],re.setClickEvent(V[q-2],V[q-1]),re.setTooltip(V[q-2],V[q]);break;case 78:this.$=V[q-2],re.setLink(V[q-1],V[q]);break;case 79:this.$=V[q-3],re.setLink(V[q-2],V[q-1],V[q]);break;case 80:this.$=V[q-3],re.setLink(V[q-2],V[q-1]),re.setTooltip(V[q-2],V[q]);break;case 81:this.$=V[q-4],re.setLink(V[q-3],V[q-2],V[q]),re.setTooltip(V[q-3],V[q-1]);break;case 84:this.$=V[q-3],re.setClickEvent(V[q-2],V[q-1],V[q]);break;case 85:this.$=V[q-4],re.setClickEvent(V[q-3],V[q-2],V[q-1]),re.setTooltip(V[q-3],V[q]);break;case 86:this.$=V[q-3],re.setLink(V[q-2],V[q]);break;case 87:this.$=V[q-4],re.setLink(V[q-3],V[q-1],V[q]);break;case 88:this.$=V[q-4],re.setLink(V[q-3],V[q-1]),re.setTooltip(V[q-3],V[q]);break;case 89:this.$=V[q-5],re.setLink(V[q-4],V[q-2],V[q]),re.setTooltip(V[q-4],V[q-1]);break;case 90:this.$=V[q-2],re.setCssStyle(V[q-1],V[q]);break;case 91:re.setCssClass(V[q-1],V[q]);break;case 92:this.$=[V[q]];break;case 93:V[q-2].push(V[q]),this.$=V[q-2];break;case 95:this.$=V[q-1]+V[q];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:C,81:T,84:E,99:A,101:S,102:_},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(I,[2,5],{8:[1,48]}),{8:[1,49]},t(D,[2,18],{22:[1,50]}),t(D,[2,20]),t(D,[2,21]),t(D,[2,22]),t(D,[2,23]),t(D,[2,24]),t(D,[2,25]),t(D,[2,26]),t(D,[2,27]),t(D,[2,28]),t(D,[2,29]),{34:[1,51]},{36:[1,52]},t(D,[2,32]),t(D,[2,48],{51:53,64:56,65:57,13:[1,54],22:[1,55],66:k,67:L,68:R,69:O,70:M,71:B,72:F}),{39:[1,65]},t(P,[2,39],{39:[1,67],44:[1,66]}),t(D,[2,50]),t(D,[2,51]),{16:68,58:p,84:E,99:A,101:S},{16:39,18:69,19:40,58:p,84:E,99:A,101:S,102:_},{16:39,18:70,19:40,58:p,84:E,99:A,101:S,102:_},{16:39,18:71,19:40,58:p,84:E,99:A,101:S,102:_},{58:[1,72]},{13:[1,73]},{16:39,18:74,19:40,58:p,84:E,99:A,101:S,102:_},{13:z,53:75},{56:77,58:[1,78]},t(D,[2,61]),t(D,[2,62]),t(D,[2,63]),t(D,[2,64]),t($,[2,12],{16:39,19:40,18:80,17:[1,79],20:[1,81],58:p,84:E,99:A,101:S,102:_}),t($,[2,14],{20:[1,82]}),{15:83,16:84,58:p,84:E,99:A,101:S},{16:39,18:85,19:40,58:p,84:E,99:A,101:S,102:_},t(H,[2,118]),t(H,[2,119]),t(H,[2,120]),t(H,[2,121]),t([1,8,9,12,13,20,22,39,41,44,66,67,68,69,70,71,72,77,79],[2,122]),t(I,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,18:21,38:22,43:23,16:39,19:40,5:86,33:e,35:r,37:n,42:i,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:C,81:T,84:E,99:A,101:S,102:_}),{5:87,10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:C,81:T,84:E,99:A,101:S,102:_},t(D,[2,19]),t(D,[2,30]),t(D,[2,31]),{13:[1,89],16:39,18:88,19:40,58:p,84:E,99:A,101:S,102:_},{51:90,64:56,65:57,66:k,67:L,68:R,69:O,70:M,71:B,72:F},t(D,[2,49]),{65:91,71:B,72:F},t(Q,[2,68],{64:92,66:k,67:L,68:R,69:O,70:M}),t(j,[2,69]),t(j,[2,70]),t(j,[2,71]),t(j,[2,72]),t(j,[2,73]),t(ie,[2,74]),t(ie,[2,75]),{8:[1,94],24:95,40:93,43:23,46:a},{16:96,58:p,84:E,99:A,101:S},{45:97,49:ne},{48:[1,99]},{13:[1,100]},{13:[1,101]},{77:[1,102],79:[1,103]},{22:le,57:104,58:he,80:K,82:105,83:106,84:X,85:te,86:J,87:se,88:ue,89:Z},{58:[1,116]},{13:z,53:117},t(D,[2,57]),t(D,[2,123]),{22:le,57:118,58:he,59:[1,119],80:K,82:105,83:106,84:X,85:te,86:J,87:se,88:ue,89:Z},t(Se,[2,59]),{16:39,18:120,19:40,58:p,84:E,99:A,101:S,102:_},t($,[2,15]),t($,[2,16]),t($,[2,17]),{39:[2,35]},{15:122,16:84,17:[1,121],39:[2,9],58:p,84:E,99:A,101:S},t(ce,[2,43],{11:123,12:[1,124]}),t(I,[2,7]),{9:[1,125]},t(ae,[2,52]),{16:39,18:126,19:40,58:p,84:E,99:A,101:S,102:_},{13:[1,128],16:39,18:127,19:40,58:p,84:E,99:A,101:S,102:_},t(Q,[2,67],{64:129,66:k,67:L,68:R,69:O,70:M}),t(Q,[2,66]),{41:[1,130]},{24:95,40:131,43:23,46:a},{8:[1,132],41:[2,36]},t(P,[2,40],{39:[1,133]}),{41:[1,134]},{41:[2,46],45:135,49:ne},{16:39,18:136,19:40,58:p,84:E,99:A,101:S,102:_},t(D,[2,76],{13:[1,137]}),t(D,[2,78],{13:[1,139],75:[1,138]}),t(D,[2,82],{13:[1,140],78:[1,141]}),{13:[1,142]},t(D,[2,90],{59:Oe}),t(ge,[2,92],{83:144,22:le,58:he,80:K,84:X,85:te,86:J,87:se,88:ue,89:Z}),t(ze,[2,94]),t(ze,[2,96]),t(ze,[2,97]),t(ze,[2,98]),t(ze,[2,99]),t(ze,[2,100]),t(ze,[2,101]),t(ze,[2,102]),t(ze,[2,103]),t(ze,[2,104]),t(D,[2,91]),t(D,[2,56]),t(D,[2,58],{59:Oe}),{58:[1,145]},t($,[2,13]),{15:146,16:84,58:p,84:E,99:A,101:S},{39:[2,11]},t(ce,[2,44]),{13:[1,147]},{1:[2,4]},t(ae,[2,54]),t(ae,[2,53]),{16:39,18:148,19:40,58:p,84:E,99:A,101:S,102:_},t(Q,[2,65]),t(D,[2,33]),{41:[1,149]},{24:95,40:150,41:[2,37],43:23,46:a},{45:151,49:ne},t(P,[2,41]),{41:[2,47]},t(D,[2,45]),t(D,[2,77]),t(D,[2,79]),t(D,[2,80],{75:[1,152]}),t(D,[2,83]),t(D,[2,84],{13:[1,153]}),t(D,[2,86],{13:[1,155],75:[1,154]}),{22:le,58:he,80:K,82:156,83:106,84:X,85:te,86:J,87:se,88:ue,89:Z},t(ze,[2,95]),t(Se,[2,60]),{39:[2,10]},{14:[1,157]},t(ae,[2,55]),t(D,[2,34]),{41:[2,38]},{41:[1,158]},t(D,[2,81]),t(D,[2,85]),t(D,[2,87]),t(D,[2,88],{75:[1,159]}),t(ge,[2,93],{83:144,22:le,58:he,80:K,84:X,85:te,86:J,87:se,88:ue,89:Z}),t(ce,[2,8]),t(P,[2,42]),t(D,[2,89])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,35],122:[2,11],125:[2,4],135:[2,47],146:[2,10],150:[2,38]},parseError:o(function(be,W){if(W.recoverable)this.trace(be);else{var de=new Error(be);throw de.hash=W,de}},"parseError"),parse:o(function(be){var W=this,de=[0],re=[],oe=[null],V=[],xe=this.table,q="",pe=0,ve=0,Pe=0,_e=2,we=1,Ve=V.slice.call(arguments,1),De=Object.create(this.lexer),qe={yy:{}};for(var at in this.yy)Object.prototype.hasOwnProperty.call(this.yy,at)&&(qe.yy[at]=this.yy[at]);De.setInput(be,qe.yy),qe.yy.lexer=De,qe.yy.parser=this,typeof De.yylloc>"u"&&(De.yylloc={});var Rt=De.yylloc;V.push(Rt);var st=De.options&&De.options.ranges;typeof qe.yy.parseError=="function"?this.parseError=qe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ue(Tt){de.length=de.length-2*Tt,oe.length=oe.length-Tt,V.length=V.length-Tt}o(Ue,"popStack");function ct(){var Tt;return Tt=re.pop()||De.lex()||we,typeof Tt!="number"&&(Tt instanceof Array&&(re=Tt,Tt=re.pop()),Tt=W.symbols_[Tt]||Tt),Tt}o(ct,"lex");for(var We,ot,Yt,bt,Mt,xt,ut={},Et,ft,yt,nt;;){if(Yt=de[de.length-1],this.defaultActions[Yt]?bt=this.defaultActions[Yt]:((We===null||typeof We>"u")&&(We=ct()),bt=xe[Yt]&&xe[Yt][We]),typeof bt>"u"||!bt.length||!bt[0]){var dn="";nt=[];for(Et in xe[Yt])this.terminals_[Et]&&Et>_e&&nt.push("'"+this.terminals_[Et]+"'");De.showPosition?dn="Parse error on line "+(pe+1)+`: -`+De.showPosition()+` -Expecting `+nt.join(", ")+", got '"+(this.terminals_[We]||We)+"'":dn="Parse error on line "+(pe+1)+": Unexpected "+(We==we?"end of input":"'"+(this.terminals_[We]||We)+"'"),this.parseError(dn,{text:De.match,token:this.terminals_[We]||We,line:De.yylineno,loc:Rt,expected:nt})}if(bt[0]instanceof Array&&bt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Yt+", token: "+We);switch(bt[0]){case 1:de.push(We),oe.push(De.yytext),V.push(De.yylloc),de.push(bt[1]),We=null,ot?(We=ot,ot=null):(ve=De.yyleng,q=De.yytext,pe=De.yylineno,Rt=De.yylloc,Pe>0&&Pe--);break;case 2:if(ft=this.productions_[bt[1]][1],ut.$=oe[oe.length-ft],ut._$={first_line:V[V.length-(ft||1)].first_line,last_line:V[V.length-1].last_line,first_column:V[V.length-(ft||1)].first_column,last_column:V[V.length-1].last_column},st&&(ut._$.range=[V[V.length-(ft||1)].range[0],V[V.length-1].range[1]]),xt=this.performAction.apply(ut,[q,ve,pe,qe.yy,bt[1],oe,V].concat(Ve)),typeof xt<"u")return xt;ft&&(de=de.slice(0,-1*ft*2),oe=oe.slice(0,-1*ft),V=V.slice(0,-1*ft)),de.push(this.productions_[bt[1]][0]),oe.push(ut.$),V.push(ut._$),yt=xe[de[de.length-2]][de[de.length-1]],de.push(yt);break;case 3:return!0}}return!0},"parse")},$e=function(){var Ie={EOF:1,parseError:o(function(W,de){if(this.yy.parser)this.yy.parser.parseError(W,de);else throw new Error(W)},"parseError"),setInput:o(function(be,W){return this.yy=W||this.yy||{},this._input=be,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var be=this._input[0];this.yytext+=be,this.yyleng++,this.offset++,this.match+=be,this.matched+=be;var W=be.match(/(?:\r\n?|\n).*/g);return W?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),be},"input"),unput:o(function(be){var W=be.length,de=be.split(/(?:\r\n?|\n)/g);this._input=be+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-W),this.offset-=W;var re=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),de.length-1&&(this.yylineno-=de.length-1);var oe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:de?(de.length===re.length?this.yylloc.first_column:0)+re[re.length-de.length].length-de[0].length:this.yylloc.first_column-W},this.options.ranges&&(this.yylloc.range=[oe[0],oe[0]+this.yyleng-W]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(be){this.unput(this.match.slice(be))},"less"),pastInput:o(function(){var be=this.matched.substr(0,this.matched.length-this.match.length);return(be.length>20?"...":"")+be.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var be=this.match;return be.length<20&&(be+=this._input.substr(0,20-be.length)),(be.substr(0,20)+(be.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var be=this.pastInput(),W=new Array(be.length+1).join("-");return be+this.upcomingInput()+` -`+W+"^"},"showPosition"),test_match:o(function(be,W){var de,re,oe;if(this.options.backtrack_lexer&&(oe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(oe.yylloc.range=this.yylloc.range.slice(0))),re=be[0].match(/(?:\r\n?|\n).*/g),re&&(this.yylineno+=re.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:re?re[re.length-1].length-re[re.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+be[0].length},this.yytext+=be[0],this.match+=be[0],this.matches=be,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(be[0].length),this.matched+=be[0],de=this.performAction.call(this,this.yy,this,W,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),de)return de;if(this._backtrack){for(var V in oe)this[V]=oe[V];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var be,W,de,re;this._more||(this.yytext="",this.match="");for(var oe=this._currentRules(),V=0;VW[0].length)){if(W=de,re=V,this.options.backtrack_lexer){if(be=this.test_match(de,oe[V]),be!==!1)return be;if(this._backtrack){W=!1;continue}else return!1}else if(!this.options.flex)break}return W?(be=this.test_match(W,oe[re]),be!==!1?be:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var W=this.next();return W||this.lex()},"lex"),begin:o(function(W){this.conditionStack.push(W)},"begin"),popState:o(function(){var W=this.conditionStack.length-1;return W>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(W){return W=this.conditionStack.length-1-Math.abs(W||0),W>=0?this.conditionStack[W]:"INITIAL"},"topState"),pushState:o(function(W){this.begin(W)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(W,de,re,oe){var V=oe;switch(re){case 0:return 60;case 1:return 61;case 2:return 62;case 3:return 63;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 77;case 22:this.popState();break;case 23:return 78;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 80;case 28:return 55;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:return this.popState(),41;break;case 34:return"EOF_IN_STRUCT";case 35:return 8;case 36:break;case 37:return"EDGE_STATE";case 38:return this.begin("class"),46;break;case 39:return this.popState(),8;break;case 40:break;case 41:return this.popState(),this.popState(),41;break;case 42:return this.begin("class-body"),39;break;case 43:return this.popState(),41;break;case 44:return"EOF_IN_STRUCT";case 45:return"EDGE_STATE";case 46:return"OPEN_IN_STRUCT";case 47:break;case 48:return"MEMBER";case 49:return 81;case 50:return 73;case 51:return 74;case 52:return 76;case 53:return 52;case 54:return 54;case 55:return 47;case 56:return 48;case 57:return 79;case 58:this.popState();break;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 61:this.popState();break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:return 75;case 65:return 75;case 66:return 75;case 67:return 75;case 68:return 67;case 69:return 67;case 70:return 69;case 71:return 69;case 72:return 68;case 73:return 66;case 74:return 70;case 75:return 71;case 76:return 72;case 77:return 22;case 78:return 44;case 79:return 99;case 80:return 17;case 81:return"PLUS";case 82:return 85;case 83:return 59;case 84:return 88;case 85:return 88;case 86:return 89;case 87:return"EQUALS";case 88:return"EQUALS";case 89:return 58;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 84;case 94:return 101;case 95:return 87;case 96:return 87;case 97:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!0}}};return Ie}();He.lexer=$e;function Re(){this.yy={}}return o(Re,"Parser"),Re.prototype=He,He.Parser=Re,new Re}();MO.parser=MO;L6=MO});var Dfe,kb,Lfe=N(()=>{"use strict";zt();gr();Dfe=["#","+","~","-",""],kb=class{static{o(this,"ClassMember")}constructor(e,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let n=Tr(e,me());this.parseMember(n)}getDisplayDetails(){let e=this.visibility+ec(this.id);this.memberType==="method"&&(e+=`(${ec(this.parameters.trim())})`,this.returnType&&(e+=" : "+ec(this.returnType))),e=e.trim();let r=this.parseClassifier();return{displayText:e,cssStyle:r}}parseMember(e){let r="";if(this.memberType==="method"){let a=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(e);if(a){let s=a[1]?a[1].trim():"";if(Dfe.includes(s)&&(this.visibility=s),this.id=a[2],this.parameters=a[3]?a[3].trim():"",r=a[4]?a[4].trim():"",this.returnType=a[5]?a[5].trim():"",r===""){let l=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(l)&&(r=l,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let i=e.length,a=e.substring(0,1),s=e.substring(i-1);Dfe.includes(a)&&(this.visibility=a),/[$*]/.exec(s)&&(r=s),this.id=e.substring(this.visibility===""?0:1,r===""?i:i-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let n=`${this.visibility?"\\"+this.visibility:""}${ec(this.id)}${this.memberType==="method"?`(${ec(this.parameters)})${this.returnType?" : "+ec(this.returnType):""}`:""}`;this.text=n.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}});var R6,Rfe,Lp,D1,OO=N(()=>{"use strict";dr();vt();zt();gr();ir();mi();Lfe();R6="classId-",Rfe=0,Lp=o(t=>Ze.sanitizeText(t,me()),"sanitizeText"),D1=class{constructor(){this.relations=[];this.classes=new Map;this.styleClasses=new Map;this.notes=[];this.interfaces=[];this.namespaces=new Map;this.namespaceCounter=0;this.functions=[];this.lineType={LINE:0,DOTTED_LINE:1};this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4};this.setupToolTips=o(e=>{let r=Ge(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=Ge("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),Ge(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=Ge(a.currentTarget);if(s.attr("title")===null)return;let u=this.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.top-14+document.body.scrollTop+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),Ge(a.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=Lr;this.getAccTitle=Rr;this.setAccDescription=Nr;this.getAccDescription=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Ir;this.getConfig=o(()=>me().class,"getConfig");this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{o(this,"ClassDB")}splitClassNameAndType(e){let r=Ze.sanitizeText(e,me()),n="",i=r;if(r.indexOf("~")>0){let a=r.split("~");i=Lp(a[0]),n=Lp(a[1])}return{className:i,type:n}}setClassLabel(e,r){let n=Ze.sanitizeText(e,me());r&&(r=Lp(r));let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).label=r,this.classes.get(i).text=`${r}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(e){let r=Ze.sanitizeText(e,me()),{className:n,type:i}=this.splitClassNameAndType(r);if(this.classes.has(n))return;let a=Ze.sanitizeText(n,me());this.classes.set(a,{id:a,type:i,label:a,text:`${a}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:R6+a+"-"+Rfe}),Rfe++}addInterface(e,r){let n={id:`interface${this.interfaces.length}`,label:e,classId:r};this.interfaces.push(n)}lookUpDomId(e){let r=Ze.sanitizeText(e,me());if(this.classes.has(r))return this.classes.get(r).domId;throw new Error("Class not found: "+r)}clear(){this.relations=[],this.classes=new Map,this.notes=[],this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.direction="TB",Ar()}getClass(e){return this.classes.get(e)}getClasses(){return this.classes}getRelations(){return this.relations}getNotes(){return this.notes}addRelation(e){Y.debug("Adding relation: "+JSON.stringify(e));let r=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];e.relation.type1===this.relationType.LOLLIPOP&&!r.includes(e.relation.type2)?(this.addClass(e.id2),this.addInterface(e.id1,e.id2),e.id1=`interface${this.interfaces.length-1}`):e.relation.type2===this.relationType.LOLLIPOP&&!r.includes(e.relation.type1)?(this.addClass(e.id1),this.addInterface(e.id2,e.id1),e.id2=`interface${this.interfaces.length-1}`):(this.addClass(e.id1),this.addClass(e.id2)),e.id1=this.splitClassNameAndType(e.id1).className,e.id2=this.splitClassNameAndType(e.id2).className,e.relationTitle1=Ze.sanitizeText(e.relationTitle1.trim(),me()),e.relationTitle2=Ze.sanitizeText(e.relationTitle2.trim(),me()),this.relations.push(e)}addAnnotation(e,r){let n=this.splitClassNameAndType(e).className;this.classes.get(n).annotations.push(r)}addMember(e,r){this.addClass(e);let n=this.splitClassNameAndType(e).className,i=this.classes.get(n);if(typeof r=="string"){let a=r.trim();a.startsWith("<<")&&a.endsWith(">>")?i.annotations.push(Lp(a.substring(2,a.length-2))):a.indexOf(")")>0?i.methods.push(new kb(a,"method")):a&&i.members.push(new kb(a,"attribute"))}}addMembers(e,r){Array.isArray(r)&&(r.reverse(),r.forEach(n=>this.addMember(e,n)))}addNote(e,r){let n={id:`note${this.notes.length}`,class:r,text:e};this.notes.push(n)}cleanupLabel(e){return e.startsWith(":")&&(e=e.substring(1)),Lp(e.trim())}setCssClass(e,r){e.split(",").forEach(n=>{let i=n;/\d/.exec(n[0])&&(i=R6+i);let a=this.classes.get(i);a&&(a.cssClasses+=" "+r)})}defineClass(e,r){for(let n of e){let i=this.styleClasses.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.styleClasses.set(n,i)),r&&r.forEach(a=>{if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.classes.forEach(a=>{a.cssClasses.includes(n)&&a.styles.push(...r.flatMap(s=>s.split(",")))})}}setTooltip(e,r){e.split(",").forEach(n=>{r!==void 0&&(this.classes.get(n).tooltip=Lp(r))})}getTooltip(e,r){return r&&this.namespaces.has(r)?this.namespaces.get(r).classes.get(e).tooltip:this.classes.get(e).tooltip}setLink(e,r,n){let i=me();e.split(",").forEach(a=>{let s=a;/\d/.exec(a[0])&&(s=R6+s);let l=this.classes.get(s);l&&(l.link=Gt.formatUrl(r,i),i.securityLevel==="sandbox"?l.linkTarget="_top":typeof n=="string"?l.linkTarget=Lp(n):l.linkTarget="_blank")}),this.setCssClass(e,"clickable")}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFunc(i,r,n),this.classes.get(i).haveCallback=!0}),this.setCssClass(e,"clickable")}setClickFunc(e,r,n){let i=Ze.sanitizeText(e,me());if(me().securityLevel!=="loose"||r===void 0)return;let s=i;if(this.classes.has(s)){let l=this.lookUpDomId(s),u=[];if(typeof n=="string"){u=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let h=0;h{let h=document.querySelector(`[id="${l}"]`);h!==null&&h.addEventListener("click",()=>{Gt.runFunc(r,...u)},!1)})}}bindFunctions(e){this.functions.forEach(r=>{r(e)})}getDirection(){return this.direction}setDirection(e){this.direction=e}addNamespace(e){this.namespaces.has(e)||(this.namespaces.set(e,{id:e,classes:new Map,children:{},domId:R6+e+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(e){return this.namespaces.get(e)}getNamespaces(){return this.namespaces}addClassesToNamespace(e,r){if(this.namespaces.has(e))for(let n of r){let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).parent=e,this.namespaces.get(e).classes.set(i,this.classes.get(i))}}setCssStyle(e,r){let n=this.classes.get(e);if(!(!r||!n))for(let i of r)i.includes(",")?n.styles.push(...i.split(",")):n.styles.push(i)}getArrowMarker(e){let r;switch(e){case 0:r="aggregation";break;case 1:r="extension";break;case 2:r="composition";break;case 3:r="dependency";break;case 4:r="lollipop";break;default:r="none"}return r}getData(){let e=[],r=[],n=me();for(let a of this.namespaces.keys()){let s=this.namespaces.get(a);if(s){let l={id:s.id,label:s.id,isGroup:!0,padding:n.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:n.look};e.push(l)}}for(let a of this.classes.keys()){let s=this.classes.get(a);if(s){let l=s;l.parentId=s.parent,l.look=n.look,e.push(l)}}let i=0;for(let a of this.notes){i++;let s={id:a.id,label:a.text,isGroup:!1,shape:"note",padding:n.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${n.themeVariables.noteBkgColor}`,`stroke: ${n.themeVariables.noteBorderColor}`],look:n.look};e.push(s);let l=this.classes.get(a.class)?.id??"";if(l){let u={id:`edgeNote${i}`,start:a.id,end:l,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:n.look};r.push(u)}}for(let a of this.interfaces){let s={id:a.id,label:a.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:n.look};e.push(s)}i=0;for(let a of this.relations){i++;let s={id:$h(a.id1,a.id2,{prefix:"id",counter:i}),start:a.id1,end:a.id2,type:"normal",label:a.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(a.relation.type1),arrowTypeEnd:this.getArrowMarker(a.relation.type2),startLabelRight:a.relationTitle1==="none"?"":a.relationTitle1,endLabelLeft:a.relationTitle2==="none"?"":a.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:a.style||"",pattern:a.relation.lineType==1?"dashed":"solid",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:this.getDirection()}}}});var UVe,N6,PO=N(()=>{"use strict";UVe=o(t=>`g.classGroup text { + +`,"getStyles"),Oye=QZe});var t$,Yf,jf,Kf,eC,Xf,T4,ZZe,tC,w4,o0,Bye,Fr,r$,JZe,eJe,tJe,rJe,nJe,iJe,aJe,sJe,oJe,lJe,cJe,uJe,hJe,Fye,fJe,dJe,pJe,mJe,gJe,yJe,vJe,$ye,xJe,oh,bJe,mi,zye=N(()=>{"use strict";t$=ja(tm(),1);qn();tr();gr();r2();Yf=36,jf="actor-top",Kf="actor-bottom",eC="actor-box",Xf="actor-man",T4=o(function(t,e){return Fd(t,e)},"drawRect"),ZZe=o(function(t,e,r,n,i){if(e.links===void 0||e.links===null||Object.keys(e.links).length===0)return{height:0,width:0};let a=e.links,s=e.actorCnt,l=e.rectData;var u="none";i&&(u="block !important");let h=t.append("g");h.attr("id","actor"+s+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",u);var f="";l.class!==void 0&&(f=" "+l.class);let d=l.width>r?l.width:r,p=h.append("rect");if(p.attr("class","actorPopupMenuPanel"+f),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",d),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),a!=null){var m=20;for(let v in a){var g=h.append("a"),y=(0,t$.sanitizeUrl)(a[v]);g.attr("xlink:href",y),g.attr("target","_blank"),bJe(n)(v,g,l.x+10,l.height+m,d,20,{class:"actor"},n),m+=30}}return p.attr("height",m),{height:l.height+m,width:d}},"drawPopup"),tC=o(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),w4=o(async function(t,e,r=null){let n=t.append("foreignObject"),i=await kh(e.text,Qt()),s=n.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(i).node().getBoundingClientRect();if(n.attr("height",Math.round(s.height)).attr("width",Math.round(s.width)),e.class==="noteText"){let l=t.node().firstChild;l.setAttribute("height",s.height+2*e.textMargin);let u=l.getBBox();n.attr("x",Math.round(u.x+u.width/2-s.width/2)).attr("y",Math.round(u.y+u.height/2-s.height/2))}else if(r){let{startx:l,stopx:u,starty:h}=r;if(l>u){let f=l;l=u,u=f}n.attr("x",Math.round(l+Math.abs(l-u)/2-s.width/2)),e.class==="loopText"?n.attr("y",Math.round(h)):n.attr("y",Math.round(h-s.height))}return[n]},"drawKatex"),o0=o(function(t,e){let r=0,n=0,i=e.text.split(tt.lineBreakRegex),[a,s]=vc(e.fontSize),l=[],u=0,h=o(()=>e.y,"yfunc");if(e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0)switch(e.valign){case"top":case"start":h=o(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":h=o(()=>Math.round(e.y+(r+n+e.textMargin)/2),"yfunc");break;case"bottom":case"end":h=o(()=>Math.round(e.y+(r+n+2*e.textMargin)-e.textMargin),"yfunc");break}if(e.anchor!==void 0&&e.textMargin!==void 0&&e.width!==void 0)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle";break}for(let[f,d]of i.entries()){e.textMargin!==void 0&&e.textMargin===0&&a!==void 0&&(u=f*a);let p=t.append("text");p.attr("x",e.x),p.attr("y",h()),e.anchor!==void 0&&p.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),e.fontFamily!==void 0&&p.style("font-family",e.fontFamily),s!==void 0&&p.style("font-size",s),e.fontWeight!==void 0&&p.style("font-weight",e.fontWeight),e.fill!==void 0&&p.attr("fill",e.fill),e.class!==void 0&&p.attr("class",e.class),e.dy!==void 0?p.attr("dy",e.dy):u!==0&&p.attr("dy",u);let m=d||BL;if(e.tspan){let g=p.append("tspan");g.attr("x",e.x),e.fill!==void 0&&g.attr("fill",e.fill),g.text(m)}else p.text(m);e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0&&(n+=(p._groups||p)[0][0].getBBox().height,r=n),l.push(p)}return l},"drawText"),Bye=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");return n.attr("points",r(e.x,e.y,e.width,e.height,7)),n.attr("class","labelBox"),e.y=e.y+e.height/2,o0(t,e),n},"drawLabel"),Fr=-1,r$=o((t,e,r,n)=>{t.select&&r.forEach(i=>{let a=e.get(i),s=t.select("#actor"+a.actorCnt);!n.mirrorActors&&a.stopy?s.attr("y2",a.stopy+a.height/2):n.mirrorActors&&s.attr("y2",a.stopy)})},"fixLifeLineHeights"),JZe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower();var u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua();var f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.rx=3,h.ry=3,h.name=e.name;let d=T4(u,h);if(e.rectData=h,e.properties?.icon){let m=e.properties.icon.trim();m.charAt(0)==="@"?lT(u,h.x+h.width-20,h.y+10,m.substr(1)):oT(u,h.x+h.width-20,h.y+10,m)}oh(r,kn(e.description))(e.description,u,h.x,h.y,h.width,h.height,{class:`actor ${eC}`},r);let p=e.height;if(d.node){let m=d.node().getBBox();e.height=m.height,p=m.height}return p},"drawActorTypeParticipant"),eJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower();var u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua();var f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.name=e.name;let d=6,p={...h,x:h.x+-d,y:h.y+ +d,class:"actor"},m=T4(u,h);if(T4(u,p),e.rectData=h,e.properties?.icon){let y=e.properties.icon.trim();y.charAt(0)==="@"?lT(u,h.x+h.width-20,h.y+10,y.substr(1)):oT(u,h.x+h.width-20,h.y+10,y)}oh(r,kn(e.description))(e.description,u,h.x-d,h.y+d,h.width,h.height,{class:`actor ${eC}`},r);let g=e.height;if(m.node){let y=m.node().getBBox();e.height=y.height,g=y.height}return g},"drawActorTypeCollections"),tJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower(),u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua(),f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.name=e.name;let d=h.height/2,p=d/(2.5+h.height/50),m=u.append("g"),g=u.append("g");if(m.append("path").attr("d",`M ${h.x},${h.y+d} + a ${p},${d} 0 0 0 0,${h.height} + h ${h.width-2*p} + a ${p},${d} 0 0 0 0,-${h.height} + Z + `).attr("class",f),g.append("path").attr("d",`M ${h.x},${h.y+d} + a ${p},${d} 0 0 0 0,${h.height}`).attr("stroke","#666").attr("stroke-width","1px").attr("class",f),m.attr("transform",`translate(${p}, ${-(h.height/2)})`),g.attr("transform",`translate(${h.width-p}, ${-h.height/2})`),e.rectData=h,e.properties?.icon){let x=e.properties.icon.trim(),b=h.x+h.width-20,T=h.y+10;x.charAt(0)==="@"?lT(u,b,T,x.substr(1)):oT(u,b,T,x)}oh(r,kn(e.description))(e.description,u,h.x,h.y,h.width,h.height,{class:`actor ${eC}`},r);let y=e.height,v=m.select("path:last-child");if(v.node()){let x=v.node().getBBox();e.height=x.height,y=x.height}return y},"drawActorTypeQueue"),rJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+75,l=t.append("g").lower();n||(Fr++,l.append("line").attr("id","actor"+Fr).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=Fr);let u=t.append("g"),h=Xf;n?h+=` ${Kf}`:h+=` ${jf}`,u.attr("class",h),u.attr("name",e.name);let f=ua();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor";let d=e.x+e.width/2,p=i+30,m=18;u.append("defs").append("marker").attr("id","filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),u.append("circle").attr("cx",d).attr("cy",p).attr("r",m).attr("fill","#eaeaf7").attr("stroke","#666").attr("stroke-width",1.2),u.append("line").attr("marker-end","url(#filled-head-control)").attr("transform",`translate(${d}, ${p-m})`);let g=u.node().getBBox();return e.height=g.height+2*(r?.sequence?.labelBoxHeight??0),oh(r,kn(e.description))(e.description,u,f.x,f.y+m+(n?5:10),f.width,f.height,{class:`actor ${Xf}`},r),e.height},"drawActorTypeControl"),nJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+75,l=t.append("g").lower(),u=t.append("g"),h=Xf;n?h+=` ${Kf}`:h+=` ${jf}`,u.attr("class",h),u.attr("name",e.name);let f=ua();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor";let d=e.x+e.width/2,p=i+(n?10:25),m=18;u.append("circle").attr("cx",d).attr("cy",p).attr("r",m).attr("width",e.width).attr("height",e.height),u.append("line").attr("x1",d-m).attr("x2",d+m).attr("y1",p+m).attr("y2",p+m).attr("stroke","#333").attr("stroke-width",2);let g=u.node().getBBox();return e.height=g.height+(r?.sequence?.labelBoxHeight??0),n||(Fr++,l.append("line").attr("id","actor"+Fr).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=Fr),oh(r,kn(e.description))(e.description,u,f.x,f.y+(n?(p-i+m-5)/2:(p+m-i)/2),f.width,f.height,{class:`actor ${Xf}`},r),n?u.attr("transform",`translate(0, ${m/2})`):u.attr("transform",`translate(0, ${m/2})`),e.height},"drawActorTypeEntity"),iJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height+2*r.boxTextMargin,l=t.append("g").lower(),u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua(),f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.name=e.name,h.x=e.x,h.y=i;let d=h.width/4,p=h.width/4,m=d/2,g=m/(2.5+d/50),y=u.append("g"),v=` + M ${h.x},${h.y+g} + a ${m},${g} 0 0 0 ${d},0 + a ${m},${g} 0 0 0 -${d},0 + l 0,${p-2*g} + a ${m},${g} 0 0 0 ${d},0 + l 0,-${p-2*g} +`;y.append("path").attr("d",v).attr("fill","#eaeaea").attr("stroke","#000").attr("stroke-width",1).attr("class",f),n?y.attr("transform",`translate(${d*1.5}, ${h.height/4-2*g})`):y.attr("transform",`translate(${d*1.5}, ${(h.height+g)/4})`),e.rectData=h,oh(r,kn(e.description))(e.description,u,h.x,h.y+(n?(h.height+p)/4:(h.height+g)/2),h.width,h.height,{class:`actor ${eC}`},r);let x=y.select("path:last-child");if(x.node()){let b=x.node().getBBox();e.height=b.height+(r.sequence.labelBoxHeight??0)}return e.height},"drawActorTypeDatabase"),aJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,l=30,u=t.append("g").lower();n||(Fr++,u.append("line").attr("id","actor"+Fr).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=Fr);let h=t.append("g"),f=Xf;n?f+=` ${Kf}`:f+=` ${jf}`,h.attr("class",f),h.attr("name",e.name);let d=ua();d.x=e.x,d.y=i,d.fill="#eaeaea",d.width=e.width,d.height=e.height,d.class="actor",h.append("line").attr("id","actor-man-torso"+Fr).attr("x1",e.x+e.width/2-l*2.5).attr("y1",i+10).attr("x2",e.x+e.width/2-15).attr("y2",i+10),h.append("line").attr("id","actor-man-arms"+Fr).attr("x1",e.x+e.width/2-l*2.5).attr("y1",i+0).attr("x2",e.x+e.width/2-l*2.5).attr("y2",i+20),h.append("circle").attr("cx",e.x+e.width/2).attr("cy",i+10).attr("r",l);let p=h.node().getBBox();return e.height=p.height+(r.sequence.labelBoxHeight??0),oh(r,kn(e.description))(e.description,h,d.x,d.y+(n?l/2-4:l/2+3),d.width,d.height,{class:`actor ${Xf}`},r),n?h.attr("transform",`translate(0,${l/2+7})`):h.attr("transform",`translate(0,${l/2+7})`),e.height},"drawActorTypeBoundary"),sJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,l=t.append("g").lower();n||(Fr++,l.append("line").attr("id","actor"+Fr).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=Fr);let u=t.append("g"),h=Xf;n?h+=` ${Kf}`:h+=` ${jf}`,u.attr("class",h),u.attr("name",e.name);let f=ua();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor",f.rx=3,f.ry=3,u.append("line").attr("id","actor-man-torso"+Fr).attr("x1",a).attr("y1",i+25).attr("x2",a).attr("y2",i+45),u.append("line").attr("id","actor-man-arms"+Fr).attr("x1",a-Yf/2).attr("y1",i+33).attr("x2",a+Yf/2).attr("y2",i+33),u.append("line").attr("x1",a-Yf/2).attr("y1",i+60).attr("x2",a).attr("y2",i+45),u.append("line").attr("x1",a).attr("y1",i+45).attr("x2",a+Yf/2-2).attr("y2",i+60);let d=u.append("circle");d.attr("cx",e.x+e.width/2),d.attr("cy",i+10),d.attr("r",15),d.attr("width",e.width),d.attr("height",e.height);let p=u.node().getBBox();return e.height=p.height,oh(r,kn(e.description))(e.description,u,f.x,f.y+35,f.width,f.height,{class:`actor ${Xf}`},r),e.height},"drawActorTypeActor"),oJe=o(async function(t,e,r,n){switch(e.type){case"actor":return await sJe(t,e,r,n);case"participant":return await JZe(t,e,r,n);case"boundary":return await aJe(t,e,r,n);case"control":return await rJe(t,e,r,n);case"entity":return await nJe(t,e,r,n);case"database":return await iJe(t,e,r,n);case"collections":return await eJe(t,e,r,n);case"queue":return await tJe(t,e,r,n)}},"drawActor"),lJe=o(function(t,e,r){let i=t.append("g");Fye(i,e),e.name&&oh(r)(e.name,i,e.x,e.y+r.boxTextMargin+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},r),i.lower()},"drawBox"),cJe=o(function(t){return t.append("g")},"anchorElement"),uJe=o(function(t,e,r,n,i){let a=ua(),s=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=r-e.starty,T4(s,a)},"drawActivation"),hJe=o(async function(t,e,r,n){let{boxMargin:i,boxTextMargin:a,labelBoxHeight:s,labelBoxWidth:l,messageFontFamily:u,messageFontSize:h,messageFontWeight:f}=n,d=t.append("g"),p=o(function(y,v,x,b){return d.append("line").attr("x1",y).attr("y1",v).attr("x2",x).attr("y2",b).attr("class","loopLine")},"drawLoopLine");p(e.startx,e.starty,e.stopx,e.starty),p(e.stopx,e.starty,e.stopx,e.stopy),p(e.startx,e.stopy,e.stopx,e.stopy),p(e.startx,e.starty,e.startx,e.stopy),e.sections!==void 0&&e.sections.forEach(function(y){p(e.startx,y.y,e.stopx,y.y).style("stroke-dasharray","3, 3")});let m=t2();m.text=r,m.x=e.startx,m.y=e.starty,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.anchor="middle",m.valign="middle",m.tspan=!1,m.width=l||50,m.height=s||20,m.textMargin=a,m.class="labelText",Bye(d,m),m=$ye(),m.text=e.title,m.x=e.startx+l/2+(e.stopx-e.startx)/2,m.y=e.starty+i+a,m.anchor="middle",m.valign="middle",m.textMargin=a,m.class="loopText",m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=!0;let g=kn(m.text)?await w4(d,m,e):o0(d,m);if(e.sectionTitles!==void 0){for(let[y,v]of Object.entries(e.sectionTitles))if(v.message){m.text=v.message,m.x=e.startx+(e.stopx-e.startx)/2,m.y=e.sections[y].y+i+a,m.class="loopText",m.anchor="middle",m.valign="middle",m.tspan=!1,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=e.wrap,kn(m.text)?(e.starty=e.sections[y].y,await w4(d,m,e)):o0(d,m);let x=Math.round(g.map(b=>(b._groups||b)[0][0].getBBox().height).reduce((b,T)=>b+T));e.sections[y].height+=x-(i+a)}}return e.height=Math.round(e.stopy-e.starty),d},"drawLoop"),Fye=o(function(t,e){sT(t,e)},"drawBackgroundRect"),fJe=o(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),dJe=o(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),pJe=o(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),mJe=o(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),gJe=o(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),yJe=o(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),vJe=o(function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),$ye=o(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),xJe=o(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),oh=(function(){function t(a,s,l,u,h,f,d){let p=s.append("text").attr("x",l+h/2).attr("y",u+f/2+5).style("text-anchor","middle").text(a);i(p,d)}o(t,"byText");function e(a,s,l,u,h,f,d,p){let{actorFontSize:m,actorFontFamily:g,actorFontWeight:y}=p,[v,x]=vc(m),b=a.split(tt.lineBreakRegex);for(let T=0;T{let s=l0(Me),l=a.actorKeys.reduce((d,p)=>d+=t.get(p).width+(t.get(p).margin||0),0),u=Me.boxMargin*8;l+=u,l-=2*Me.boxTextMargin,a.wrap&&(a.name=qt.wrapLabel(a.name,l-2*Me.wrapPadding,s));let h=qt.calculateTextDimensions(a.name,s);i=tt.getMax(h.height,i);let f=tt.getMax(l,h.width+2*Me.wrapPadding);if(a.margin=Me.boxTextMargin,la.textMaxHeight=i),tt.getMax(n,Me.height)}var Me,ot,TJe,l0,ay,n$,kJe,EJe,i$,Vye,Uye,rC,Gye,CJe,_Je,LJe,RJe,NJe,Hye,qye=N(()=>{"use strict";yr();zye();pt();gr();gr();r2();Xt();v0();tr();Ei();e$();Me={},ot={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:o(function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(t=>t.height||0))+(this.loops.length===0?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.messages.length===0?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.notes.length===0?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:o(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:o(function(t){this.boxes.push(t)},"addBox"),addActor:o(function(t){this.actors.push(t)},"addActor"),addLoop:o(function(t){this.loops.push(t)},"addLoop"),addMessage:o(function(t){this.messages.push(t)},"addMessage"),addNote:o(function(t){this.notes.push(t)},"addNote"),lastActor:o(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:o(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:o(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:o(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:o(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,Uye(ge())},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=this,a=0;function s(l){return o(function(h){a++;let f=i.sequenceItems.length-a+1;i.updateVal(h,"starty",e-f*Me.boxMargin,Math.min),i.updateVal(h,"stopy",n+f*Me.boxMargin,Math.max),i.updateVal(ot.data,"startx",t-f*Me.boxMargin,Math.min),i.updateVal(ot.data,"stopx",r+f*Me.boxMargin,Math.max),l!=="activation"&&(i.updateVal(h,"startx",t-f*Me.boxMargin,Math.min),i.updateVal(h,"stopx",r+f*Me.boxMargin,Math.max),i.updateVal(ot.data,"starty",e-f*Me.boxMargin,Math.min),i.updateVal(ot.data,"stopy",n+f*Me.boxMargin,Math.max))},"updateItemBounds")}o(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:o(function(t,e,r,n){let i=tt.getMin(t,r),a=tt.getMax(t,r),s=tt.getMin(e,n),l=tt.getMax(e,n);this.updateVal(ot.data,"startx",i,Math.min),this.updateVal(ot.data,"starty",s,Math.min),this.updateVal(ot.data,"stopx",a,Math.max),this.updateVal(ot.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),newActivation:o(function(t,e,r){let n=r.get(t.from),i=rC(t.from).length||0,a=n.x+n.width/2+(i-1)*Me.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+Me.activationWidth,stopy:void 0,actor:t.from,anchored:mi.anchorElement(e)})},"newActivation"),endActivation:o(function(t){let e=this.activations.map(function(r){return r.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:o(function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},"createLoop"),newLoop:o(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:o(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:o(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:o(function(t){let e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:ot.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:o(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:o(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=tt.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return{bounds:this.data,models:this.models}},"getBounds")},TJe=o(async function(t,e){ot.bumpVerticalPos(Me.boxMargin),e.height=Me.boxMargin,e.starty=ot.getVerticalPos();let r=ua();r.x=e.startx,r.y=e.starty,r.width=e.width||Me.width,r.class="note";let n=t.append("g"),i=mi.drawRect(n,r),a=t2();a.x=e.startx,a.y=e.starty,a.width=r.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=Me.noteFontFamily,a.fontSize=Me.noteFontSize,a.fontWeight=Me.noteFontWeight,a.anchor=Me.noteAlign,a.textMargin=Me.noteMargin,a.valign="center";let s=kn(a.text)?await w4(n,a):o0(n,a),l=Math.round(s.map(u=>(u._groups||u)[0][0].getBBox().height).reduce((u,h)=>u+h));i.attr("height",l+2*Me.noteMargin),e.height+=l+2*Me.noteMargin,ot.bumpVerticalPos(l+2*Me.noteMargin),e.stopy=e.starty+l+2*Me.noteMargin,e.stopx=e.startx+r.width,ot.insert(e.startx,e.starty,e.stopx,e.stopy),ot.models.addNote(e)},"drawNote"),l0=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),ay=o(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),n$=o(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");o(wJe,"boundMessage");kJe=o(async function(t,e,r,n){let{startx:i,stopx:a,starty:s,message:l,type:u,sequenceIndex:h,sequenceVisible:f}=e,d=qt.calculateTextDimensions(l,l0(Me)),p=t2();p.x=i,p.y=s+10,p.width=a-i,p.class="messageText",p.dy="1em",p.text=l,p.fontFamily=Me.messageFontFamily,p.fontSize=Me.messageFontSize,p.fontWeight=Me.messageFontWeight,p.anchor=Me.messageAlign,p.valign="center",p.textMargin=Me.wrapPadding,p.tspan=!1,kn(p.text)?await w4(t,p,{startx:i,stopx:a,starty:r}):o0(t,p);let m=d.width,g;i===a?Me.rightAngles?g=t.append("path").attr("d",`M ${i},${r} H ${i+tt.getMax(Me.width/2,m/2)} V ${r+25} H ${i}`):g=t.append("path").attr("d","M "+i+","+r+" C "+(i+60)+","+(r-10)+" "+(i+60)+","+(r+30)+" "+i+","+(r+20)):(g=t.append("line"),g.attr("x1",i),g.attr("y1",r),g.attr("x2",a),g.attr("y2",r)),u===n.db.LINETYPE.DOTTED||u===n.db.LINETYPE.DOTTED_CROSS||u===n.db.LINETYPE.DOTTED_POINT||u===n.db.LINETYPE.DOTTED_OPEN||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED?(g.style("stroke-dasharray","3, 3"),g.attr("class","messageLine1")):g.attr("class","messageLine0");let y="";Me.arrowMarkerAbsolute&&(y=md(!0)),g.attr("stroke-width",2),g.attr("stroke","none"),g.style("fill","none"),(u===n.db.LINETYPE.SOLID||u===n.db.LINETYPE.DOTTED)&&g.attr("marker-end","url("+y+"#arrowhead)"),(u===n.db.LINETYPE.BIDIRECTIONAL_SOLID||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(g.attr("marker-start","url("+y+"#arrowhead)"),g.attr("marker-end","url("+y+"#arrowhead)")),(u===n.db.LINETYPE.SOLID_POINT||u===n.db.LINETYPE.DOTTED_POINT)&&g.attr("marker-end","url("+y+"#filled-head)"),(u===n.db.LINETYPE.SOLID_CROSS||u===n.db.LINETYPE.DOTTED_CROSS)&&g.attr("marker-end","url("+y+"#crosshead)"),(f||Me.showSequenceNumbers)&&((u===n.db.LINETYPE.BIDIRECTIONAL_SOLID||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(ii&&(i=h.height),h.width+l.x>a&&(a=h.width+l.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),Uye=o(function(t){Rn(Me,t),t.fontFamily&&(Me.actorFontFamily=Me.noteFontFamily=Me.messageFontFamily=t.fontFamily),t.fontSize&&(Me.actorFontSize=Me.noteFontSize=Me.messageFontSize=t.fontSize),t.fontWeight&&(Me.actorFontWeight=Me.noteFontWeight=Me.messageFontWeight=t.fontWeight)},"setConf"),rC=o(function(t){return ot.activations.filter(function(e){return e.actor===t})},"actorActivations"),Gye=o(function(t,e){let r=e.get(t),n=rC(t),i=n.reduce(function(s,l){return tt.getMin(s,l.startx)},r.x+r.width/2-1),a=n.reduce(function(s,l){return tt.getMax(s,l.stopx)},r.x+r.width/2+1);return[i,a]},"activationBounds");o(ru,"adjustLoopHeightForWrap");o(SJe,"adjustCreatedDestroyedData");CJe=o(async function(t,e,r,n){let{securityLevel:i,sequence:a}=ge();Me=a;let s;i==="sandbox"&&(s=qe("#i"+e));let l=i==="sandbox"?qe(s.nodes()[0].contentDocument.body):qe("body"),u=i==="sandbox"?s.nodes()[0].contentDocument:document;ot.init(),X.debug(n.db);let h=i==="sandbox"?l.select(`[id="${e}"]`):qe(`[id="${e}"]`),f=n.db.getActors(),d=n.db.getCreatedActors(),p=n.db.getDestroyedActors(),m=n.db.getBoxes(),g=n.db.getActorKeys(),y=n.db.getMessages(),v=n.db.getDiagramTitle(),x=n.db.hasAtLeastOneBox(),b=n.db.hasAtLeastOneBoxWithTitle(),T=await AJe(f,y,n);if(Me.height=await DJe(f,T,m),mi.insertComputerIcon(h),mi.insertDatabaseIcon(h),mi.insertClockIcon(h),x&&(ot.bumpVerticalPos(Me.boxMargin),b&&ot.bumpVerticalPos(m[0].textMaxHeight)),Me.hideUnusedParticipants===!0){let B=new Set;y.forEach(F=>{B.add(F.from),B.add(F.to)}),g=g.filter(F=>B.has(F))}EJe(h,f,d,g,0,y,!1);let S=await NJe(y,f,T,n);mi.insertArrowHead(h),mi.insertArrowCrossHead(h),mi.insertArrowFilledHead(h),mi.insertSequenceNumber(h);function w(B,F){let G=ot.endActivation(B);G.starty+18>F&&(G.starty=F-6,F+=12),mi.drawActivation(h,G,F,Me,rC(B.from).length),ot.insert(G.startx,F-10,G.stopx,F)}o(w,"activeEnd");let k=1,A=1,C=[],R=[],I=0;for(let B of y){let F,G,$;switch(B.type){case n.db.LINETYPE.NOTE:ot.resetVerticalPos(),G=B.noteModel,await TJe(h,G);break;case n.db.LINETYPE.ACTIVE_START:ot.newActivation(B,h,f);break;case n.db.LINETYPE.ACTIVE_END:w(B,ot.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.LOOP_END:F=ot.endLoop(),await mi.drawLoop(h,F,"loop",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.RECT_START:ru(S,B,Me.boxMargin,Me.boxMargin,U=>ot.newLoop(void 0,U.message));break;case n.db.LINETYPE.RECT_END:F=ot.endLoop(),R.push(F),ot.models.addLoop(F),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos());break;case n.db.LINETYPE.OPT_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.OPT_END:F=ot.endLoop(),await mi.drawLoop(h,F,"opt",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.ALT_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.ALT_ELSE:ru(S,B,Me.boxMargin+Me.boxTextMargin,Me.boxMargin,U=>ot.addSectionToLoop(U));break;case n.db.LINETYPE.ALT_END:F=ot.endLoop(),await mi.drawLoop(h,F,"alt",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U)),ot.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:ru(S,B,Me.boxMargin+Me.boxTextMargin,Me.boxMargin,U=>ot.addSectionToLoop(U));break;case n.db.LINETYPE.PAR_END:F=ot.endLoop(),await mi.drawLoop(h,F,"par",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.AUTONUMBER:k=B.message.start||k,A=B.message.step||A,B.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.CRITICAL_OPTION:ru(S,B,Me.boxMargin+Me.boxTextMargin,Me.boxMargin,U=>ot.addSectionToLoop(U));break;case n.db.LINETYPE.CRITICAL_END:F=ot.endLoop(),await mi.drawLoop(h,F,"critical",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.BREAK_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.BREAK_END:F=ot.endLoop(),await mi.drawLoop(h,F,"break",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;default:try{$=B.msgModel,$.starty=ot.getVerticalPos(),$.sequenceIndex=k,$.sequenceVisible=n.db.showSequenceNumbers();let U=await wJe(h,$);SJe(B,$,U,I,f,d,p),C.push({messageModel:$,lineStartY:U}),ot.models.addMessage($)}catch(U){X.error("error while drawing message",U)}}[n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT,n.db.LINETYPE.BIDIRECTIONAL_SOLID,n.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(B.type)&&(k=k+A),I++}X.debug("createdActors",d),X.debug("destroyedActors",p),await i$(h,f,g,!1);for(let B of C)await kJe(h,B.messageModel,B.lineStartY,n);Me.mirrorActors&&await i$(h,f,g,!0),R.forEach(B=>mi.drawBackgroundRect(h,B)),r$(h,f,g,Me);for(let B of ot.models.boxes){B.height=ot.getVerticalPos()-B.y,ot.insert(B.x,B.y,B.x+B.width,B.height);let F=Me.boxMargin*2;B.startx=B.x-F,B.starty=B.y-F*.25,B.stopx=B.startx+B.width+2*F,B.stopy=B.starty+B.height+F*.75,B.stroke="rgb(0,0,0, 0.5)",mi.drawBox(h,B,Me)}x&&ot.bumpVerticalPos(Me.boxMargin);let L=Vye(h,f,g,u),{bounds:E}=ot.getBounds();E.startx===void 0&&(E.startx=0),E.starty===void 0&&(E.starty=0),E.stopx===void 0&&(E.stopx=0),E.stopy===void 0&&(E.stopy=0);let D=E.stopy-E.starty;D2,d=o(y=>l?-y:y,"adjustValue");t.from===t.to?h=u:(t.activate&&!f&&(h+=d(Me.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(h+=d(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(u-=d(3)));let p=[n,i,a,s],m=Math.abs(u-h);t.wrap&&t.message&&(t.message=qt.wrapLabel(t.message,tt.getMax(m+2*Me.wrapPadding,Me.width),l0(Me)));let g=qt.calculateTextDimensions(t.message,l0(Me));return{width:tt.getMax(t.wrap?0:g.width+2*Me.wrapPadding,m+2*Me.wrapPadding,Me.width),height:0,startx:u,stopx:h,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,p),toBounds:Math.max.apply(null,p)}},"buildMessageModel"),NJe=o(async function(t,e,r,n){let i={},a=[],s,l,u;for(let h of t){switch(h.type){case n.db.LINETYPE.LOOP_START:case n.db.LINETYPE.ALT_START:case n.db.LINETYPE.OPT_START:case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:case n.db.LINETYPE.CRITICAL_START:case n.db.LINETYPE.BREAK_START:a.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case n.db.LINETYPE.ALT_ELSE:case n.db.LINETYPE.PAR_AND:case n.db.LINETYPE.CRITICAL_OPTION:h.message&&(s=a.pop(),i[s.id]=s,i[h.id]=s,a.push(s));break;case n.db.LINETYPE.LOOP_END:case n.db.LINETYPE.ALT_END:case n.db.LINETYPE.OPT_END:case n.db.LINETYPE.PAR_END:case n.db.LINETYPE.CRITICAL_END:case n.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case n.db.LINETYPE.ACTIVE_START:{let d=e.get(h.from?h.from:h.to.actor),p=rC(h.from?h.from:h.to.actor).length,m=d.x+d.width/2+(p-1)*Me.activationWidth/2,g={startx:m,stopx:m+Me.activationWidth,actor:h.from,enabled:!0};ot.activations.push(g)}break;case n.db.LINETYPE.ACTIVE_END:{let d=ot.activations.map(p=>p.actor).lastIndexOf(h.from);ot.activations.splice(d,1).splice(0,1)}break}h.placement!==void 0?(l=await LJe(h,e,n),h.noteModel=l,a.forEach(d=>{s=d,s.from=tt.getMin(s.from,l.startx),s.to=tt.getMax(s.to,l.startx+l.width),s.width=tt.getMax(s.width,Math.abs(s.from-s.to))-Me.labelBoxWidth})):(u=RJe(h,e,n),h.msgModel=u,u.startx&&u.stopx&&a.length>0&&a.forEach(d=>{if(s=d,u.startx===u.stopx){let p=e.get(h.from),m=e.get(h.to);s.from=tt.getMin(p.x-u.width/2,p.x-p.width/2,s.from),s.to=tt.getMax(m.x+u.width/2,m.x+p.width/2,s.to),s.width=tt.getMax(s.width,Math.abs(s.to-s.from))-Me.labelBoxWidth}else s.from=tt.getMin(u.startx,s.from),s.to=tt.getMax(u.stopx,s.to),s.width=tt.getMax(s.width,u.width)-Me.labelBoxWidth}))}return ot.activations=[],X.debug("Loop type widths:",i),i},"calculateLoopBounds"),Hye={bounds:ot,drawActors:i$,drawActorsPopup:Vye,setConf:Uye,draw:CJe}});var Wye={};dr(Wye,{diagram:()=>MJe});var MJe,Yye=N(()=>{"use strict";Iye();e$();Pye();Xt();qye();MJe={parser:Mye,get db(){return new J6},renderer:Hye,styles:Oye,init:o(t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,nv({sequence:{wrap:t.wrap}}))},"init")}});var a$,nC,s$=N(()=>{"use strict";a$=(function(){var t=o(function(Ie,Ne,Ce,Fe){for(Ce=Ce||{},Fe=Ie.length;Fe--;Ce[Ie[Fe]]=Ne);return Ce},"o"),e=[1,18],r=[1,19],n=[1,20],i=[1,41],a=[1,42],s=[1,26],l=[1,24],u=[1,25],h=[1,32],f=[1,33],d=[1,34],p=[1,45],m=[1,35],g=[1,36],y=[1,37],v=[1,38],x=[1,27],b=[1,28],T=[1,29],S=[1,30],w=[1,31],k=[1,44],A=[1,46],C=[1,43],R=[1,47],I=[1,9],L=[1,8,9],E=[1,58],D=[1,59],_=[1,60],O=[1,61],M=[1,62],P=[1,63],B=[1,64],F=[1,8,9,41],G=[1,76],$=[1,8,9,12,13,22,39,41,44,68,69,70,71,72,73,74,79,81],U=[1,8,9,12,13,18,20,22,39,41,44,50,60,68,69,70,71,72,73,74,79,81,86,100,102,103],j=[13,60,86,100,102,103],te=[13,60,73,74,86,100,102,103],Y=[13,60,68,69,70,71,72,86,100,102,103],oe=[1,100],J=[1,117],ue=[1,113],re=[1,109],ee=[1,115],Z=[1,110],K=[1,111],ae=[1,112],Q=[1,114],de=[1,116],ne=[22,48,60,61,82,86,87,88,89,90],Te=[1,8,9,39,41,44],q=[1,8,9,22],Ve=[1,145],pe=[1,8,9,61],Be=[1,8,9,22,48,60,61,82,86,87,88,89,90],Ye={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,emptyBody:47,SPACE:48,ANNOTATION_START:49,ANNOTATION_END:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",48:"SPACE",49:"ANNOTATION_START",50:"ANNOTATION_END",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[43,2],[43,3],[47,0],[47,2],[47,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:o(function(Ne,Ce,Fe,fe,xe,W,he){var z=W.length-1;switch(xe){case 8:this.$=W[z-1];break;case 9:case 10:case 13:case 15:this.$=W[z];break;case 11:case 14:this.$=W[z-2]+"."+W[z];break;case 12:case 16:this.$=W[z-1]+W[z];break;case 17:case 18:this.$=W[z-1]+"~"+W[z]+"~";break;case 19:fe.addRelation(W[z]);break;case 20:W[z-1].title=fe.cleanupLabel(W[z]),fe.addRelation(W[z-1]);break;case 31:this.$=W[z].trim(),fe.setAccTitle(this.$);break;case 32:case 33:this.$=W[z].trim(),fe.setAccDescription(this.$);break;case 34:fe.addClassesToNamespace(W[z-3],W[z-1]);break;case 35:fe.addClassesToNamespace(W[z-4],W[z-1]);break;case 36:this.$=W[z],fe.addNamespace(W[z]);break;case 37:this.$=[W[z]];break;case 38:this.$=[W[z-1]];break;case 39:W[z].unshift(W[z-2]),this.$=W[z];break;case 41:fe.setCssClass(W[z-2],W[z]);break;case 42:fe.addMembers(W[z-3],W[z-1]);break;case 44:fe.setCssClass(W[z-5],W[z-3]),fe.addMembers(W[z-5],W[z-1]);break;case 45:this.$=W[z],fe.addClass(W[z]);break;case 46:this.$=W[z-1],fe.addClass(W[z-1]),fe.setClassLabel(W[z-1],W[z]);break;case 50:fe.addAnnotation(W[z],W[z-2]);break;case 51:case 64:this.$=[W[z]];break;case 52:W[z].push(W[z-1]),this.$=W[z];break;case 53:break;case 54:fe.addMember(W[z-1],fe.cleanupLabel(W[z]));break;case 55:break;case 56:break;case 57:this.$={id1:W[z-2],id2:W[z],relation:W[z-1],relationTitle1:"none",relationTitle2:"none"};break;case 58:this.$={id1:W[z-3],id2:W[z],relation:W[z-1],relationTitle1:W[z-2],relationTitle2:"none"};break;case 59:this.$={id1:W[z-3],id2:W[z],relation:W[z-2],relationTitle1:"none",relationTitle2:W[z-1]};break;case 60:this.$={id1:W[z-4],id2:W[z],relation:W[z-2],relationTitle1:W[z-3],relationTitle2:W[z-1]};break;case 61:fe.addNote(W[z],W[z-1]);break;case 62:fe.addNote(W[z]);break;case 63:this.$=W[z-2],fe.defineClass(W[z-1],W[z]);break;case 65:this.$=W[z-2].concat([W[z]]);break;case 66:fe.setDirection("TB");break;case 67:fe.setDirection("BT");break;case 68:fe.setDirection("RL");break;case 69:fe.setDirection("LR");break;case 70:this.$={type1:W[z-2],type2:W[z],lineType:W[z-1]};break;case 71:this.$={type1:"none",type2:W[z],lineType:W[z-1]};break;case 72:this.$={type1:W[z-1],type2:"none",lineType:W[z]};break;case 73:this.$={type1:"none",type2:"none",lineType:W[z]};break;case 74:this.$=fe.relationType.AGGREGATION;break;case 75:this.$=fe.relationType.EXTENSION;break;case 76:this.$=fe.relationType.COMPOSITION;break;case 77:this.$=fe.relationType.DEPENDENCY;break;case 78:this.$=fe.relationType.LOLLIPOP;break;case 79:this.$=fe.lineType.LINE;break;case 80:this.$=fe.lineType.DOTTED_LINE;break;case 81:case 87:this.$=W[z-2],fe.setClickEvent(W[z-1],W[z]);break;case 82:case 88:this.$=W[z-3],fe.setClickEvent(W[z-2],W[z-1]),fe.setTooltip(W[z-2],W[z]);break;case 83:this.$=W[z-2],fe.setLink(W[z-1],W[z]);break;case 84:this.$=W[z-3],fe.setLink(W[z-2],W[z-1],W[z]);break;case 85:this.$=W[z-3],fe.setLink(W[z-2],W[z-1]),fe.setTooltip(W[z-2],W[z]);break;case 86:this.$=W[z-4],fe.setLink(W[z-3],W[z-2],W[z]),fe.setTooltip(W[z-3],W[z-1]);break;case 89:this.$=W[z-3],fe.setClickEvent(W[z-2],W[z-1],W[z]);break;case 90:this.$=W[z-4],fe.setClickEvent(W[z-3],W[z-2],W[z-1]),fe.setTooltip(W[z-3],W[z]);break;case 91:this.$=W[z-3],fe.setLink(W[z-2],W[z]);break;case 92:this.$=W[z-4],fe.setLink(W[z-3],W[z-1],W[z]);break;case 93:this.$=W[z-4],fe.setLink(W[z-3],W[z-1]),fe.setTooltip(W[z-3],W[z]);break;case 94:this.$=W[z-5],fe.setLink(W[z-4],W[z-2],W[z]),fe.setTooltip(W[z-4],W[z-1]);break;case 95:this.$=W[z-2],fe.setCssStyle(W[z-1],W[z]);break;case 96:fe.setCssClass(W[z-1],W[z]);break;case 97:this.$=[W[z]];break;case 98:W[z-2].push(W[z]),this.$=W[z-2];break;case 100:this.$=W[z-1]+W[z];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,49:s,51:l,52:u,54:h,56:f,57:d,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:S,83:w,86:k,100:A,102:C,103:R},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(I,[2,5],{8:[1,48]}),{8:[1,49]},t(L,[2,19],{22:[1,50]}),t(L,[2,21]),t(L,[2,22]),t(L,[2,23]),t(L,[2,24]),t(L,[2,25]),t(L,[2,26]),t(L,[2,27]),t(L,[2,28]),t(L,[2,29]),t(L,[2,30]),{34:[1,51]},{36:[1,52]},t(L,[2,33]),t(L,[2,53],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:E,69:D,70:_,71:O,72:M,73:P,74:B}),{39:[1,65]},t(F,[2,40],{39:[1,67],44:[1,66]}),t(L,[2,55]),t(L,[2,56]),{16:68,60:p,86:k,100:A,102:C},{16:39,17:40,19:69,60:p,86:k,100:A,102:C,103:R},{16:39,17:40,19:70,60:p,86:k,100:A,102:C,103:R},{16:39,17:40,19:71,60:p,86:k,100:A,102:C,103:R},{60:[1,72]},{13:[1,73]},{16:39,17:40,19:74,60:p,86:k,100:A,102:C,103:R},{13:G,55:75},{58:77,60:[1,78]},t(L,[2,66]),t(L,[2,67]),t(L,[2,68]),t(L,[2,69]),t($,[2,13],{16:39,17:40,19:80,18:[1,79],20:[1,81],60:p,86:k,100:A,102:C,103:R}),t($,[2,15],{20:[1,82]}),{15:83,16:84,17:85,60:p,86:k,100:A,102:C,103:R},{16:39,17:40,19:86,60:p,86:k,100:A,102:C,103:R},t(U,[2,123]),t(U,[2,124]),t(U,[2,125]),t(U,[2,126]),t([1,8,9,12,13,20,22,39,41,44,68,69,70,71,72,73,74,79,81],[2,127]),t(I,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:87,33:e,35:r,37:n,42:i,46:a,49:s,51:l,52:u,54:h,56:f,57:d,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:S,83:w,86:k,100:A,102:C,103:R}),{5:88,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,49:s,51:l,52:u,54:h,56:f,57:d,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:S,83:w,86:k,100:A,102:C,103:R},t(L,[2,20]),t(L,[2,31]),t(L,[2,32]),{13:[1,90],16:39,17:40,19:89,60:p,86:k,100:A,102:C,103:R},{53:91,66:56,67:57,68:E,69:D,70:_,71:O,72:M,73:P,74:B},t(L,[2,54]),{67:92,73:P,74:B},t(j,[2,73],{66:93,68:E,69:D,70:_,71:O,72:M}),t(te,[2,74]),t(te,[2,75]),t(te,[2,76]),t(te,[2,77]),t(te,[2,78]),t(Y,[2,79]),t(Y,[2,80]),{8:[1,95],24:96,40:94,43:23,46:a},{16:97,60:p,86:k,100:A,102:C},{41:[1,99],45:98,51:oe},{50:[1,101]},{13:[1,102]},{13:[1,103]},{79:[1,104],81:[1,105]},{22:J,48:ue,59:106,60:re,82:ee,84:107,85:108,86:Z,87:K,88:ae,89:Q,90:de},{60:[1,118]},{13:G,55:119},t(L,[2,62]),t(L,[2,128]),{22:J,48:ue,59:120,60:re,61:[1,121],82:ee,84:107,85:108,86:Z,87:K,88:ae,89:Q,90:de},t(ne,[2,64]),{16:39,17:40,19:122,60:p,86:k,100:A,102:C,103:R},t($,[2,16]),t($,[2,17]),t($,[2,18]),{39:[2,36]},{15:124,16:84,17:85,18:[1,123],39:[2,9],60:p,86:k,100:A,102:C,103:R},{39:[2,10]},t(Te,[2,45],{11:125,12:[1,126]}),t(I,[2,7]),{9:[1,127]},t(q,[2,57]),{16:39,17:40,19:128,60:p,86:k,100:A,102:C,103:R},{13:[1,130],16:39,17:40,19:129,60:p,86:k,100:A,102:C,103:R},t(j,[2,72],{66:131,68:E,69:D,70:_,71:O,72:M}),t(j,[2,71]),{41:[1,132]},{24:96,40:133,43:23,46:a},{8:[1,134],41:[2,37]},t(F,[2,41],{39:[1,135]}),{41:[1,136]},t(F,[2,43]),{41:[2,51],45:137,51:oe},{16:39,17:40,19:138,60:p,86:k,100:A,102:C,103:R},t(L,[2,81],{13:[1,139]}),t(L,[2,83],{13:[1,141],77:[1,140]}),t(L,[2,87],{13:[1,142],80:[1,143]}),{13:[1,144]},t(L,[2,95],{61:Ve}),t(pe,[2,97],{85:146,22:J,48:ue,60:re,82:ee,86:Z,87:K,88:ae,89:Q,90:de}),t(Be,[2,99]),t(Be,[2,101]),t(Be,[2,102]),t(Be,[2,103]),t(Be,[2,104]),t(Be,[2,105]),t(Be,[2,106]),t(Be,[2,107]),t(Be,[2,108]),t(Be,[2,109]),t(L,[2,96]),t(L,[2,61]),t(L,[2,63],{61:Ve}),{60:[1,147]},t($,[2,14]),{15:148,16:84,17:85,60:p,86:k,100:A,102:C,103:R},{39:[2,12]},t(Te,[2,46]),{13:[1,149]},{1:[2,4]},t(q,[2,59]),t(q,[2,58]),{16:39,17:40,19:150,60:p,86:k,100:A,102:C,103:R},t(j,[2,70]),t(L,[2,34]),{41:[1,151]},{24:96,40:152,41:[2,38],43:23,46:a},{45:153,51:oe},t(F,[2,42]),{41:[2,52]},t(L,[2,50]),t(L,[2,82]),t(L,[2,84]),t(L,[2,85],{77:[1,154]}),t(L,[2,88]),t(L,[2,89],{13:[1,155]}),t(L,[2,91],{13:[1,157],77:[1,156]}),{22:J,48:ue,60:re,82:ee,84:158,85:108,86:Z,87:K,88:ae,89:Q,90:de},t(Be,[2,100]),t(ne,[2,65]),{39:[2,11]},{14:[1,159]},t(q,[2,60]),t(L,[2,35]),{41:[2,39]},{41:[1,160]},t(L,[2,86]),t(L,[2,90]),t(L,[2,92]),t(L,[2,93],{77:[1,161]}),t(pe,[2,98],{85:146,22:J,48:ue,60:re,82:ee,86:Z,87:K,88:ae,89:Q,90:de}),t(Te,[2,8]),t(F,[2,44]),t(L,[2,94])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,36],85:[2,10],124:[2,12],127:[2,4],137:[2,52],148:[2,11],152:[2,39]},parseError:o(function(Ne,Ce){if(Ce.recoverable)this.trace(Ne);else{var Fe=new Error(Ne);throw Fe.hash=Ce,Fe}},"parseError"),parse:o(function(Ne){var Ce=this,Fe=[0],fe=[],xe=[null],W=[],he=this.table,z="",se=0,le=0,ke=0,ve=2,ye=1,Re=W.slice.call(arguments,1),_e=Object.create(this.lexer),ze={yy:{}};for(var Ke in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ke)&&(ze.yy[Ke]=this.yy[Ke]);_e.setInput(Ne,ze.yy),ze.yy.lexer=_e,ze.yy.parser=this,typeof _e.yylloc>"u"&&(_e.yylloc={});var xt=_e.yylloc;W.push(xt);var We=_e.options&&_e.options.ranges;typeof ze.yy.parseError=="function"?this.parseError=ze.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Oe(_t){Fe.length=Fe.length-2*_t,xe.length=xe.length-_t,W.length=W.length-_t}o(Oe,"popStack");function et(){var _t;return _t=fe.pop()||_e.lex()||ye,typeof _t!="number"&&(_t instanceof Array&&(fe=_t,_t=fe.pop()),_t=Ce.symbols_[_t]||_t),_t}o(et,"lex");for(var Ue,lt,Gt,vt,Lt,dt,nt={},bt,wt,yt,ft;;){if(Gt=Fe[Fe.length-1],this.defaultActions[Gt]?vt=this.defaultActions[Gt]:((Ue===null||typeof Ue>"u")&&(Ue=et()),vt=he[Gt]&&he[Gt][Ue]),typeof vt>"u"||!vt.length||!vt[0]){var Ur="";ft=[];for(bt in he[Gt])this.terminals_[bt]&&bt>ve&&ft.push("'"+this.terminals_[bt]+"'");_e.showPosition?Ur="Parse error on line "+(se+1)+`: +`+_e.showPosition()+` +Expecting `+ft.join(", ")+", got '"+(this.terminals_[Ue]||Ue)+"'":Ur="Parse error on line "+(se+1)+": Unexpected "+(Ue==ye?"end of input":"'"+(this.terminals_[Ue]||Ue)+"'"),this.parseError(Ur,{text:_e.match,token:this.terminals_[Ue]||Ue,line:_e.yylineno,loc:xt,expected:ft})}if(vt[0]instanceof Array&&vt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Gt+", token: "+Ue);switch(vt[0]){case 1:Fe.push(Ue),xe.push(_e.yytext),W.push(_e.yylloc),Fe.push(vt[1]),Ue=null,lt?(Ue=lt,lt=null):(le=_e.yyleng,z=_e.yytext,se=_e.yylineno,xt=_e.yylloc,ke>0&&ke--);break;case 2:if(wt=this.productions_[vt[1]][1],nt.$=xe[xe.length-wt],nt._$={first_line:W[W.length-(wt||1)].first_line,last_line:W[W.length-1].last_line,first_column:W[W.length-(wt||1)].first_column,last_column:W[W.length-1].last_column},We&&(nt._$.range=[W[W.length-(wt||1)].range[0],W[W.length-1].range[1]]),dt=this.performAction.apply(nt,[z,le,se,ze.yy,vt[1],xe,W].concat(Re)),typeof dt<"u")return dt;wt&&(Fe=Fe.slice(0,-1*wt*2),xe=xe.slice(0,-1*wt),W=W.slice(0,-1*wt)),Fe.push(this.productions_[vt[1]][0]),xe.push(nt.$),W.push(nt._$),yt=he[Fe[Fe.length-2]][Fe[Fe.length-1]],Fe.push(yt);break;case 3:return!0}}return!0},"parse")},He=(function(){var Ie={EOF:1,parseError:o(function(Ce,Fe){if(this.yy.parser)this.yy.parser.parseError(Ce,Fe);else throw new Error(Ce)},"parseError"),setInput:o(function(Ne,Ce){return this.yy=Ce||this.yy||{},this._input=Ne,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Ne=this._input[0];this.yytext+=Ne,this.yyleng++,this.offset++,this.match+=Ne,this.matched+=Ne;var Ce=Ne.match(/(?:\r\n?|\n).*/g);return Ce?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ne},"input"),unput:o(function(Ne){var Ce=Ne.length,Fe=Ne.split(/(?:\r\n?|\n)/g);this._input=Ne+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ce),this.offset-=Ce;var fe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Fe.length-1&&(this.yylineno-=Fe.length-1);var xe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Fe?(Fe.length===fe.length?this.yylloc.first_column:0)+fe[fe.length-Fe.length].length-Fe[0].length:this.yylloc.first_column-Ce},this.options.ranges&&(this.yylloc.range=[xe[0],xe[0]+this.yyleng-Ce]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Ne){this.unput(this.match.slice(Ne))},"less"),pastInput:o(function(){var Ne=this.matched.substr(0,this.matched.length-this.match.length);return(Ne.length>20?"...":"")+Ne.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Ne=this.match;return Ne.length<20&&(Ne+=this._input.substr(0,20-Ne.length)),(Ne.substr(0,20)+(Ne.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Ne=this.pastInput(),Ce=new Array(Ne.length+1).join("-");return Ne+this.upcomingInput()+` +`+Ce+"^"},"showPosition"),test_match:o(function(Ne,Ce){var Fe,fe,xe;if(this.options.backtrack_lexer&&(xe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(xe.yylloc.range=this.yylloc.range.slice(0))),fe=Ne[0].match(/(?:\r\n?|\n).*/g),fe&&(this.yylineno+=fe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:fe?fe[fe.length-1].length-fe[fe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ne[0].length},this.yytext+=Ne[0],this.match+=Ne[0],this.matches=Ne,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ne[0].length),this.matched+=Ne[0],Fe=this.performAction.call(this,this.yy,this,Ce,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Fe)return Fe;if(this._backtrack){for(var W in xe)this[W]=xe[W];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ne,Ce,Fe,fe;this._more||(this.yytext="",this.match="");for(var xe=this._currentRules(),W=0;WCe[0].length)){if(Ce=Fe,fe=W,this.options.backtrack_lexer){if(Ne=this.test_match(Fe,xe[W]),Ne!==!1)return Ne;if(this._backtrack){Ce=!1;continue}else return!1}else if(!this.options.flex)break}return Ce?(Ne=this.test_match(Ce,xe[fe]),Ne!==!1?Ne:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Ce=this.next();return Ce||this.lex()},"lex"),begin:o(function(Ce){this.conditionStack.push(Ce)},"begin"),popState:o(function(){var Ce=this.conditionStack.length-1;return Ce>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ce){return Ce=this.conditionStack.length-1-Math.abs(Ce||0),Ce>=0?this.conditionStack[Ce]:"INITIAL"},"topState"),pushState:o(function(Ce){this.begin(Ce)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ce,Fe,fe,xe){var W=xe;switch(fe){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 22:this.popState();break;case 23:return 80;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:return this.popState(),41;break;case 34:return"EOF_IN_STRUCT";case 35:return 8;case 36:break;case 37:return"EDGE_STATE";case 38:return this.begin("class"),46;break;case 39:return this.popState(),8;break;case 40:break;case 41:return this.popState(),this.popState(),41;break;case 42:return this.begin("class-body"),39;break;case 43:return this.popState(),41;break;case 44:return"EOF_IN_STRUCT";case 45:return"EDGE_STATE";case 46:return"OPEN_IN_STRUCT";case 47:break;case 48:return"MEMBER";case 49:return 83;case 50:return 75;case 51:return 76;case 52:return 78;case 53:return 54;case 54:return 56;case 55:return 49;case 56:return 50;case 57:return 81;case 58:this.popState();break;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 61:this.popState();break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:return 77;case 65:return 77;case 66:return 77;case 67:return 77;case 68:return 69;case 69:return 69;case 70:return 71;case 71:return 71;case 72:return 70;case 73:return 68;case 74:return 72;case 75:return 73;case 76:return 74;case 77:return 22;case 78:return 44;case 79:return 100;case 80:return 18;case 81:return"PLUS";case 82:return 87;case 83:return 61;case 84:return 89;case 85:return 89;case 86:return 90;case 87:return"EQUALS";case 88:return"EQUALS";case 89:return 60;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 86;case 94:return 102;case 95:return 48;case 96:return 48;case 97:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!0}}};return Ie})();Ye.lexer=He;function Le(){this.yy={}}return o(Le,"Parser"),Le.prototype=Ye,Ye.Parser=Le,new Le})();a$.parser=a$;nC=a$});var Kye,k4,Qye=N(()=>{"use strict";Xt();gr();Kye=["#","+","~","-",""],k4=class{static{o(this,"ClassMember")}constructor(e,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let n=sr(e,ge());this.parseMember(n)}getDisplayDetails(){let e=this.visibility+rc(this.id);this.memberType==="method"&&(e+=`(${rc(this.parameters.trim())})`,this.returnType&&(e+=" : "+rc(this.returnType))),e=e.trim();let r=this.parseClassifier();return{displayText:e,cssStyle:r}}parseMember(e){let r="";if(this.memberType==="method"){let a=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(e);if(a){let s=a[1]?a[1].trim():"";if(Kye.includes(s)&&(this.visibility=s),this.id=a[2],this.parameters=a[3]?a[3].trim():"",r=a[4]?a[4].trim():"",this.returnType=a[5]?a[5].trim():"",r===""){let l=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(l)&&(r=l,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let i=e.length,a=e.substring(0,1),s=e.substring(i-1);Kye.includes(a)&&(this.visibility=a),/[$*]/.exec(s)&&(r=s),this.id=e.substring(this.visibility===""?0:1,r===""?i:i-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let n=`${this.visibility?"\\"+this.visibility:""}${rc(this.id)}${this.memberType==="method"?`(${rc(this.parameters)})${this.returnType?" : "+rc(this.returnType):""}`:""}`;this.text=n.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}});var iC,Zye,c0,sy,o$=N(()=>{"use strict";yr();pt();Xt();gr();tr();ci();Qye();iC="classId-",Zye=0,c0=o(t=>tt.sanitizeText(t,ge()),"sanitizeText"),sy=class{constructor(){this.relations=[];this.classes=new Map;this.styleClasses=new Map;this.notes=[];this.interfaces=[];this.namespaces=new Map;this.namespaceCounter=0;this.functions=[];this.lineType={LINE:0,DOTTED_LINE:1};this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4};this.setupToolTips=o(e=>{let r=qe(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=qe("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),qe(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=qe(a.currentTarget);if(s.attr("title")===null)return;let u=this.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.top-14+document.body.scrollTop+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),qe(a.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=Rr;this.getAccTitle=Mr;this.setAccDescription=Ir;this.getAccDescription=Or;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getConfig=o(()=>ge().class,"getConfig");this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{o(this,"ClassDB")}splitClassNameAndType(e){let r=tt.sanitizeText(e,ge()),n="",i=r;if(r.indexOf("~")>0){let a=r.split("~");i=c0(a[0]),n=c0(a[1])}return{className:i,type:n}}setClassLabel(e,r){let n=tt.sanitizeText(e,ge());r&&(r=c0(r));let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).label=r,this.classes.get(i).text=`${r}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(e){let r=tt.sanitizeText(e,ge()),{className:n,type:i}=this.splitClassNameAndType(r);if(this.classes.has(n))return;let a=tt.sanitizeText(n,ge());this.classes.set(a,{id:a,type:i,label:a,text:`${a}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:iC+a+"-"+Zye}),Zye++}addInterface(e,r){let n={id:`interface${this.interfaces.length}`,label:e,classId:r};this.interfaces.push(n)}lookUpDomId(e){let r=tt.sanitizeText(e,ge());if(this.classes.has(r))return this.classes.get(r).domId;throw new Error("Class not found: "+r)}clear(){this.relations=[],this.classes=new Map,this.notes=[],this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.direction="TB",Sr()}getClass(e){return this.classes.get(e)}getClasses(){return this.classes}getRelations(){return this.relations}getNotes(){return this.notes}addRelation(e){X.debug("Adding relation: "+JSON.stringify(e));let r=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];e.relation.type1===this.relationType.LOLLIPOP&&!r.includes(e.relation.type2)?(this.addClass(e.id2),this.addInterface(e.id1,e.id2),e.id1=`interface${this.interfaces.length-1}`):e.relation.type2===this.relationType.LOLLIPOP&&!r.includes(e.relation.type1)?(this.addClass(e.id1),this.addInterface(e.id2,e.id1),e.id2=`interface${this.interfaces.length-1}`):(this.addClass(e.id1),this.addClass(e.id2)),e.id1=this.splitClassNameAndType(e.id1).className,e.id2=this.splitClassNameAndType(e.id2).className,e.relationTitle1=tt.sanitizeText(e.relationTitle1.trim(),ge()),e.relationTitle2=tt.sanitizeText(e.relationTitle2.trim(),ge()),this.relations.push(e)}addAnnotation(e,r){let n=this.splitClassNameAndType(e).className;this.classes.get(n).annotations.push(r)}addMember(e,r){this.addClass(e);let n=this.splitClassNameAndType(e).className,i=this.classes.get(n);if(typeof r=="string"){let a=r.trim();a.startsWith("<<")&&a.endsWith(">>")?i.annotations.push(c0(a.substring(2,a.length-2))):a.indexOf(")")>0?i.methods.push(new k4(a,"method")):a&&i.members.push(new k4(a,"attribute"))}}addMembers(e,r){Array.isArray(r)&&(r.reverse(),r.forEach(n=>this.addMember(e,n)))}addNote(e,r){let n={id:`note${this.notes.length}`,class:r,text:e};this.notes.push(n)}cleanupLabel(e){return e.startsWith(":")&&(e=e.substring(1)),c0(e.trim())}setCssClass(e,r){e.split(",").forEach(n=>{let i=n;/\d/.exec(n[0])&&(i=iC+i);let a=this.classes.get(i);a&&(a.cssClasses+=" "+r)})}defineClass(e,r){for(let n of e){let i=this.styleClasses.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.styleClasses.set(n,i)),r&&r.forEach(a=>{if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.classes.forEach(a=>{a.cssClasses.includes(n)&&a.styles.push(...r.flatMap(s=>s.split(",")))})}}setTooltip(e,r){e.split(",").forEach(n=>{r!==void 0&&(this.classes.get(n).tooltip=c0(r))})}getTooltip(e,r){return r&&this.namespaces.has(r)?this.namespaces.get(r).classes.get(e).tooltip:this.classes.get(e).tooltip}setLink(e,r,n){let i=ge();e.split(",").forEach(a=>{let s=a;/\d/.exec(a[0])&&(s=iC+s);let l=this.classes.get(s);l&&(l.link=qt.formatUrl(r,i),i.securityLevel==="sandbox"?l.linkTarget="_top":typeof n=="string"?l.linkTarget=c0(n):l.linkTarget="_blank")}),this.setCssClass(e,"clickable")}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFunc(i,r,n),this.classes.get(i).haveCallback=!0}),this.setCssClass(e,"clickable")}setClickFunc(e,r,n){let i=tt.sanitizeText(e,ge());if(ge().securityLevel!=="loose"||r===void 0)return;let s=i;if(this.classes.has(s)){let l=this.lookUpDomId(s),u=[];if(typeof n=="string"){u=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let h=0;h{let h=document.querySelector(`[id="${l}"]`);h!==null&&h.addEventListener("click",()=>{qt.runFunc(r,...u)},!1)})}}bindFunctions(e){this.functions.forEach(r=>{r(e)})}getDirection(){return this.direction}setDirection(e){this.direction=e}addNamespace(e){this.namespaces.has(e)||(this.namespaces.set(e,{id:e,classes:new Map,children:{},domId:iC+e+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(e){return this.namespaces.get(e)}getNamespaces(){return this.namespaces}addClassesToNamespace(e,r){if(this.namespaces.has(e))for(let n of r){let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).parent=e,this.namespaces.get(e).classes.set(i,this.classes.get(i))}}setCssStyle(e,r){let n=this.classes.get(e);if(!(!r||!n))for(let i of r)i.includes(",")?n.styles.push(...i.split(",")):n.styles.push(i)}getArrowMarker(e){let r;switch(e){case 0:r="aggregation";break;case 1:r="extension";break;case 2:r="composition";break;case 3:r="dependency";break;case 4:r="lollipop";break;default:r="none"}return r}getData(){let e=[],r=[],n=ge();for(let a of this.namespaces.keys()){let s=this.namespaces.get(a);if(s){let l={id:s.id,label:s.id,isGroup:!0,padding:n.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:n.look};e.push(l)}}for(let a of this.classes.keys()){let s=this.classes.get(a);if(s){let l=s;l.parentId=s.parent,l.look=n.look,e.push(l)}}let i=0;for(let a of this.notes){i++;let s={id:a.id,label:a.text,isGroup:!1,shape:"note",padding:n.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${n.themeVariables.noteBkgColor}`,`stroke: ${n.themeVariables.noteBorderColor}`],look:n.look};e.push(s);let l=this.classes.get(a.class)?.id??"";if(l){let u={id:`edgeNote${i}`,start:a.id,end:l,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:n.look};r.push(u)}}for(let a of this.interfaces){let s={id:a.id,label:a.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:n.look};e.push(s)}i=0;for(let a of this.relations){i++;let s={id:xc(a.id1,a.id2,{prefix:"id",counter:i}),start:a.id1,end:a.id2,type:"normal",label:a.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(a.relation.type1),arrowTypeEnd:this.getArrowMarker(a.relation.type2),startLabelRight:a.relationTitle1==="none"?"":a.relationTitle1,endLabelLeft:a.relationTitle2==="none"?"":a.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:a.style||"",pattern:a.relation.lineType==1?"dashed":"solid",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:this.getDirection()}}}});var BJe,aC,l$=N(()=>{"use strict";yg();BJe=o(t=>`g.classGroup text { fill: ${t.nodeBorder||t.classText}; stroke: none; font-family: ${t.fontFamily}; @@ -1522,12 +1933,13 @@ g.classGroup line { font-size: 18px; fill: ${t.textColor}; } -`,"getStyles"),N6=UVe});var HVe,WVe,qVe,M6,BO=N(()=>{"use strict";zt();vt();gm();Yd();$m();ir();HVe=o((t,e="TB")=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),WVe=o(function(t,e){return e.db.getClasses()},"getClasses"),qVe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing class diagram (v3)",e);let{securityLevel:i,state:a,layout:s}=me(),l=n.db.getData(),u=yc(e,i);l.type=n.type,l.layoutAlgorithm=nf(s),l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["aggregation","extension","composition","dependency","lollipop"],l.diagramId=e,await Cc(l,u);let h=8;Gt.insertTitle(u,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ac(u,h,"classDiagram",a?.useMaxWidth??!0)},"draw"),M6={getClasses:WVe,draw:qVe,getDir:HVe}});var Nfe={};hr(Nfe,{diagram:()=>YVe});var YVe,Mfe=N(()=>{"use strict";IO();OO();PO();BO();YVe={parser:L6,get db(){return new D1},renderer:M6,styles:N6,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var Pfe={};hr(Pfe,{diagram:()=>QVe});var QVe,Bfe=N(()=>{"use strict";IO();OO();PO();BO();QVe={parser:L6,get db(){return new D1},renderer:M6,styles:N6,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var FO,I6,$O=N(()=>{"use strict";FO=function(){var t=o(function(F,P,z,$){for(z=z||{},$=F.length;$--;z[F[$]]=P);return z},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,16],u=[1,17],h=[1,18],f=[1,19],d=[1,32],p=[1,20],m=[1,21],g=[1,22],y=[1,23],v=[1,24],x=[1,26],b=[1,27],w=[1,28],C=[1,29],T=[1,30],E=[1,31],A=[1,34],S=[1,35],_=[1,36],I=[1,37],D=[1,33],k=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],L=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],R=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],O={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,style:42,STYLE_IDS:43,STYLEDEF_STYLEOPTS:44,class:45,CLASSENTITY_IDS:46,STYLECLASS:47,direction_tb:48,direction_bt:49,direction_rl:50,direction_lr:51,eol:52,";":53,EDGE_STATE:54,STYLE_SEPARATOR:55,left_of:56,right_of:57,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"style",43:"STYLE_IDS",44:"STYLEDEF_STYLEOPTS",45:"class",46:"CLASSENTITY_IDS",47:"STYLECLASS",48:"direction_tb",49:"direction_bt",50:"direction_rl",51:"direction_lr",53:";",54:"EDGE_STATE",55:"STYLE_SEPARATOR",56:"left_of",57:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[52,1],[52,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:o(function(P,z,$,H,Q,j,ie){var ne=j.length-1;switch(Q){case 3:return H.setRootDoc(j[ne]),j[ne];break;case 4:this.$=[];break;case 5:j[ne]!="nl"&&(j[ne-1].push(j[ne]),this.$=j[ne-1]);break;case 6:case 7:this.$=j[ne];break;case 8:this.$="nl";break;case 12:this.$=j[ne];break;case 13:let X=j[ne-1];X.description=H.trimColon(j[ne]),this.$=X;break;case 14:this.$={stmt:"relation",state1:j[ne-2],state2:j[ne]};break;case 15:let te=H.trimColon(j[ne]);this.$={stmt:"relation",state1:j[ne-3],state2:j[ne-1],description:te};break;case 19:this.$={stmt:"state",id:j[ne-3],type:"default",description:"",doc:j[ne-1]};break;case 20:var le=j[ne],he=j[ne-2].trim();if(j[ne].match(":")){var K=j[ne].split(":");le=K[0],he=[he,K[1]]}this.$={stmt:"state",id:le,type:"default",description:he};break;case 21:this.$={stmt:"state",id:j[ne-3],type:"default",description:j[ne-5],doc:j[ne-1]};break;case 22:this.$={stmt:"state",id:j[ne],type:"fork"};break;case 23:this.$={stmt:"state",id:j[ne],type:"join"};break;case 24:this.$={stmt:"state",id:j[ne],type:"choice"};break;case 25:this.$={stmt:"state",id:H.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:j[ne-1].trim(),note:{position:j[ne-2].trim(),text:j[ne].trim()}};break;case 29:this.$=j[ne].trim(),H.setAccTitle(this.$);break;case 30:case 31:this.$=j[ne].trim(),H.setAccDescription(this.$);break;case 32:case 33:this.$={stmt:"classDef",id:j[ne-1].trim(),classes:j[ne].trim()};break;case 34:this.$={stmt:"style",id:j[ne-1].trim(),styleClass:j[ne].trim()};break;case 35:this.$={stmt:"applyClass",id:j[ne-1].trim(),styleClass:j[ne].trim()};break;case 36:H.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 37:H.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 38:H.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 39:H.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 42:case 43:this.$={stmt:"state",id:j[ne].trim(),type:"default",description:""};break;case 44:this.$={stmt:"state",id:j[ne-2].trim(),classes:[j[ne].trim()],type:"default",description:""};break;case 45:this.$={stmt:"state",id:j[ne-2].trim(),classes:[j[ne].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,5]),{9:38,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,7]),t(k,[2,8]),t(k,[2,9]),t(k,[2,10]),t(k,[2,11]),t(k,[2,12],{14:[1,39],15:[1,40]}),t(k,[2,16]),{18:[1,41]},t(k,[2,18],{20:[1,42]}),{23:[1,43]},t(k,[2,22]),t(k,[2,23]),t(k,[2,24]),t(k,[2,25]),{30:44,31:[1,45],56:[1,46],57:[1,47]},t(k,[2,28]),{34:[1,48]},{36:[1,49]},t(k,[2,31]),{39:[1,50],41:[1,51]},{43:[1,52]},{46:[1,53]},t(L,[2,42],{55:[1,54]}),t(L,[2,43],{55:[1,55]}),t(k,[2,36]),t(k,[2,37]),t(k,[2,38]),t(k,[2,39]),t(k,[2,6]),t(k,[2,13]),{13:56,24:d,54:D},t(k,[2,17]),t(R,i,{7:57}),{24:[1,58]},{24:[1,59]},{23:[1,60]},{24:[2,46]},{24:[2,47]},t(k,[2,29]),t(k,[2,30]),{40:[1,61]},{40:[1,62]},{44:[1,63]},{47:[1,64]},{24:[1,65]},{24:[1,66]},t(k,[2,14],{14:[1,67]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,68],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,20],{20:[1,69]}),{31:[1,70]},{24:[1,71]},t(k,[2,32]),t(k,[2,33]),t(k,[2,34]),t(k,[2,35]),t(L,[2,44]),t(L,[2,45]),t(k,[2,15]),t(k,[2,19]),t(R,i,{7:72}),t(k,[2,26]),t(k,[2,27]),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,73],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,21])],defaultActions:{5:[2,1],6:[2,2],46:[2,46],47:[2,47]},parseError:o(function(P,z){if(z.recoverable)this.trace(P);else{var $=new Error(P);throw $.hash=z,$}},"parseError"),parse:o(function(P){var z=this,$=[0],H=[],Q=[null],j=[],ie=this.table,ne="",le=0,he=0,K=0,X=2,te=1,J=j.slice.call(arguments,1),se=Object.create(this.lexer),ue={yy:{}};for(var Z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Z)&&(ue.yy[Z]=this.yy[Z]);se.setInput(P,ue.yy),ue.yy.lexer=se,ue.yy.parser=this,typeof se.yylloc>"u"&&(se.yylloc={});var Se=se.yylloc;j.push(Se);var ce=se.options&&se.options.ranges;typeof ue.yy.parseError=="function"?this.parseError=ue.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ae(xe){$.length=$.length-2*xe,Q.length=Q.length-xe,j.length=j.length-xe}o(ae,"popStack");function Oe(){var xe;return xe=H.pop()||se.lex()||te,typeof xe!="number"&&(xe instanceof Array&&(H=xe,xe=H.pop()),xe=z.symbols_[xe]||xe),xe}o(Oe,"lex");for(var ge,ze,He,$e,Re,Ie,be={},W,de,re,oe;;){if(He=$[$.length-1],this.defaultActions[He]?$e=this.defaultActions[He]:((ge===null||typeof ge>"u")&&(ge=Oe()),$e=ie[He]&&ie[He][ge]),typeof $e>"u"||!$e.length||!$e[0]){var V="";oe=[];for(W in ie[He])this.terminals_[W]&&W>X&&oe.push("'"+this.terminals_[W]+"'");se.showPosition?V="Parse error on line "+(le+1)+`: -`+se.showPosition()+` -Expecting `+oe.join(", ")+", got '"+(this.terminals_[ge]||ge)+"'":V="Parse error on line "+(le+1)+": Unexpected "+(ge==te?"end of input":"'"+(this.terminals_[ge]||ge)+"'"),this.parseError(V,{text:se.match,token:this.terminals_[ge]||ge,line:se.yylineno,loc:Se,expected:oe})}if($e[0]instanceof Array&&$e.length>1)throw new Error("Parse Error: multiple actions possible at state: "+He+", token: "+ge);switch($e[0]){case 1:$.push(ge),Q.push(se.yytext),j.push(se.yylloc),$.push($e[1]),ge=null,ze?(ge=ze,ze=null):(he=se.yyleng,ne=se.yytext,le=se.yylineno,Se=se.yylloc,K>0&&K--);break;case 2:if(de=this.productions_[$e[1]][1],be.$=Q[Q.length-de],be._$={first_line:j[j.length-(de||1)].first_line,last_line:j[j.length-1].last_line,first_column:j[j.length-(de||1)].first_column,last_column:j[j.length-1].last_column},ce&&(be._$.range=[j[j.length-(de||1)].range[0],j[j.length-1].range[1]]),Ie=this.performAction.apply(be,[ne,he,le,ue.yy,$e[1],Q,j].concat(J)),typeof Ie<"u")return Ie;de&&($=$.slice(0,-1*de*2),Q=Q.slice(0,-1*de),j=j.slice(0,-1*de)),$.push(this.productions_[$e[1]][0]),Q.push(be.$),j.push(be._$),re=ie[$[$.length-2]][$[$.length-1]],$.push(re);break;case 3:return!0}}return!0},"parse")},M=function(){var F={EOF:1,parseError:o(function(z,$){if(this.yy.parser)this.yy.parser.parseError(z,$);else throw new Error(z)},"parseError"),setInput:o(function(P,z){return this.yy=z||this.yy||{},this._input=P,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var P=this._input[0];this.yytext+=P,this.yyleng++,this.offset++,this.match+=P,this.matched+=P;var z=P.match(/(?:\r\n?|\n).*/g);return z?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),P},"input"),unput:o(function(P){var z=P.length,$=P.split(/(?:\r\n?|\n)/g);this._input=P+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-z),this.offset-=z;var H=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),$.length-1&&(this.yylineno-=$.length-1);var Q=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:$?($.length===H.length?this.yylloc.first_column:0)+H[H.length-$.length].length-$[0].length:this.yylloc.first_column-z},this.options.ranges&&(this.yylloc.range=[Q[0],Q[0]+this.yyleng-z]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(P){this.unput(this.match.slice(P))},"less"),pastInput:o(function(){var P=this.matched.substr(0,this.matched.length-this.match.length);return(P.length>20?"...":"")+P.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var P=this.match;return P.length<20&&(P+=this._input.substr(0,20-P.length)),(P.substr(0,20)+(P.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var P=this.pastInput(),z=new Array(P.length+1).join("-");return P+this.upcomingInput()+` -`+z+"^"},"showPosition"),test_match:o(function(P,z){var $,H,Q;if(this.options.backtrack_lexer&&(Q={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Q.yylloc.range=this.yylloc.range.slice(0))),H=P[0].match(/(?:\r\n?|\n).*/g),H&&(this.yylineno+=H.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:H?H[H.length-1].length-H[H.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+P[0].length},this.yytext+=P[0],this.match+=P[0],this.matches=P,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(P[0].length),this.matched+=P[0],$=this.performAction.call(this,this.yy,this,z,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),$)return $;if(this._backtrack){for(var j in Q)this[j]=Q[j];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var P,z,$,H;this._more||(this.yytext="",this.match="");for(var Q=this._currentRules(),j=0;jz[0].length)){if(z=$,H=j,this.options.backtrack_lexer){if(P=this.test_match($,Q[j]),P!==!1)return P;if(this._backtrack){z=!1;continue}else return!1}else if(!this.options.flex)break}return z?(P=this.test_match(z,Q[H]),P!==!1?P:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var z=this.next();return z||this.lex()},"lex"),begin:o(function(z){this.conditionStack.push(z)},"begin"),popState:o(function(){var z=this.conditionStack.length-1;return z>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(z){return z=this.conditionStack.length-1-Math.abs(z||0),z>=0?this.conditionStack[z]:"INITIAL"},"topState"),pushState:o(function(z){this.begin(z)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(z,$,H,Q){var j=Q;switch(H){case 0:return 41;case 1:return 48;case 2:return 49;case 3:return 50;case 4:return 51;case 5:break;case 6:break;case 7:return 5;case 8:break;case 9:break;case 10:break;case 11:break;case 12:return this.pushState("SCALE"),17;break;case 13:return 18;case 14:this.popState();break;case 15:return this.begin("acc_title"),33;break;case 16:return this.popState(),"acc_title_value";break;case 17:return this.begin("acc_descr"),35;break;case 18:return this.popState(),"acc_descr_value";break;case 19:this.begin("acc_descr_multiline");break;case 20:this.popState();break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),38;break;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 24:return this.popState(),this.pushState("CLASSDEFID"),39;break;case 25:return this.popState(),40;break;case 26:return this.pushState("CLASS"),45;break;case 27:return this.popState(),this.pushState("CLASS_STYLE"),46;break;case 28:return this.popState(),47;break;case 29:return this.pushState("STYLE"),42;break;case 30:return this.popState(),this.pushState("STYLEDEF_STYLES"),43;break;case 31:return this.popState(),44;break;case 32:return this.pushState("SCALE"),17;break;case 33:return 18;case 34:this.popState();break;case 35:this.pushState("STATE");break;case 36:return this.popState(),$.yytext=$.yytext.slice(0,-8).trim(),25;break;case 37:return this.popState(),$.yytext=$.yytext.slice(0,-8).trim(),26;break;case 38:return this.popState(),$.yytext=$.yytext.slice(0,-10).trim(),27;break;case 39:return this.popState(),$.yytext=$.yytext.slice(0,-8).trim(),25;break;case 40:return this.popState(),$.yytext=$.yytext.slice(0,-8).trim(),26;break;case 41:return this.popState(),$.yytext=$.yytext.slice(0,-10).trim(),27;break;case 42:return 48;case 43:return 49;case 44:return 50;case 45:return 51;case 46:this.pushState("STATE_STRING");break;case 47:return this.pushState("STATE_ID"),"AS";break;case 48:return this.popState(),"ID";break;case 49:this.popState();break;case 50:return"STATE_DESCR";case 51:return 19;case 52:this.popState();break;case 53:return this.popState(),this.pushState("struct"),20;break;case 54:break;case 55:return this.popState(),21;break;case 56:break;case 57:return this.begin("NOTE"),29;break;case 58:return this.popState(),this.pushState("NOTE_ID"),56;break;case 59:return this.popState(),this.pushState("NOTE_ID"),57;break;case 60:this.popState(),this.pushState("FLOATING_NOTE");break;case 61:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 62:break;case 63:return"NOTE_TEXT";case 64:return this.popState(),"ID";break;case 65:return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 66:return this.popState(),$.yytext=$.yytext.substr(2).trim(),31;break;case 67:return this.popState(),$.yytext=$.yytext.slice(0,-8).trim(),31;break;case 68:return 6;case 69:return 6;case 70:return 16;case 71:return 54;case 72:return 24;case 73:return $.yytext=$.yytext.trim(),14;break;case 74:return 15;case 75:return 28;case 76:return 55;case 77:return 5;case 78:return"INVALID"}},"anonymous"),rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,29,35,42,43,44,45,54,55,56,57,71,72,73,74,75],inclusive:!1},FLOATING_NOTE_ID:{rules:[64],inclusive:!1},FLOATING_NOTE:{rules:[61,62,63],inclusive:!1},NOTE_TEXT:{rules:[66,67],inclusive:!1},NOTE_ID:{rules:[65],inclusive:!1},NOTE:{rules:[58,59,60],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[31],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[30],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,33,34],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[48],inclusive:!1},STATE_STRING:{rules:[49,50],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,36,37,38,39,40,41,46,47,51,52,53],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,35,53,57,68,69,70,71,72,73,74,76,77,78],inclusive:!0}}};return F}();O.lexer=M;function B(){this.yy={}}return o(B,"Parser"),B.prototype=O,O.Parser=B,new B}();FO.parser=FO;I6=FO});var zfe,O6,zO,L1,Eb,Gfe,Vfe,Ufe,Rp,P6,GO,VO,UO,HO,WO,B6,F6,Hfe,Wfe,qO,YO,qfe,Yfe,R1,tUe,Xfe,XO,rUe,nUe,jfe,Kfe,iUe,Qfe,aUe,Zfe,jO,KO,Jfe,$6,ede,QO,z6=N(()=>{"use strict";zfe="TB",O6="TB",zO="dir",L1="state",Eb="relation",Gfe="classDef",Vfe="style",Ufe="applyClass",Rp="default",P6="divider",GO="fill:none",VO="fill: #333",UO="c",HO="text",WO="normal",B6="rect",F6="rectWithTitle",Hfe="stateStart",Wfe="stateEnd",qO="divider",YO="roundedWithTitle",qfe="note",Yfe="noteGroup",R1="statediagram",tUe="state",Xfe=`${R1}-${tUe}`,XO="transition",rUe="note",nUe="note-edge",jfe=`${XO} ${nUe}`,Kfe=`${R1}-${rUe}`,iUe="cluster",Qfe=`${R1}-${iUe}`,aUe="cluster-alt",Zfe=`${R1}-${aUe}`,jO="parent",KO="note",Jfe="state",$6="----",ede=`${$6}${KO}`,QO=`${$6}${jO}`});function ZO(t="",e=0,r="",n=$6){let i=r!==null&&r.length>0?`${n}${r}`:"";return`${Jfe}-${t}${i}-${e}`}function G6(t,e,r){if(!e.id||e.id===""||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(i=>{if(r.get(i)){let a=r.get(i);e.cssCompiledStyles=[...e.cssCompiledStyles,...a.styles]}}));let n=t.find(i=>i.id===e.id);n?Object.assign(n,e):t.push(e)}function oUe(t){return t?.classes?.join(" ")??""}function lUe(t){return t?.styles??[]}var V6,xf,sUe,tde,N1,rde,nde=N(()=>{"use strict";zt();vt();gr();z6();V6=new Map,xf=0;o(ZO,"stateDomId");sUe=o((t,e,r,n,i,a,s,l)=>{Y.trace("items",e),e.forEach(u=>{switch(u.stmt){case L1:N1(t,u,r,n,i,a,s,l);break;case Rp:N1(t,u,r,n,i,a,s,l);break;case Eb:{N1(t,u.state1,r,n,i,a,s,l),N1(t,u.state2,r,n,i,a,s,l);let h={id:"edge"+xf,start:u.state1.id,end:u.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:GO,labelStyle:"",label:Ze.sanitizeText(u.description,me()),arrowheadStyle:VO,labelpos:UO,labelType:HO,thickness:WO,classes:XO,look:s};i.push(h),xf++}break}})},"setupDoc"),tde=o((t,e=O6)=>{let r=e;if(t.doc)for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir");o(G6,"insertOrUpdateNode");o(oUe,"getClassesFromDbInfo");o(lUe,"getStylesFromDbInfo");N1=o((t,e,r,n,i,a,s,l)=>{let u=e.id,h=r.get(u),f=oUe(h),d=lUe(h);if(Y.info("dataFetcher parsedItem",e,h,d),u!=="root"){let p=B6;e.start===!0?p=Hfe:e.start===!1&&(p=Wfe),e.type!==Rp&&(p=e.type),V6.get(u)||V6.set(u,{id:u,shape:p,description:Ze.sanitizeText(u,me()),cssClasses:`${f} ${Xfe}`,cssStyles:d});let m=V6.get(u);e.description&&(Array.isArray(m.description)?(m.shape=F6,m.description.push(e.description)):m.description?.length>0?(m.shape=F6,m.description===u?m.description=[e.description]:m.description=[m.description,e.description]):(m.shape=B6,m.description=e.description),m.description=Ze.sanitizeTextOrArray(m.description,me())),m.description?.length===1&&m.shape===F6&&(m.type==="group"?m.shape=YO:m.shape=B6),!m.type&&e.doc&&(Y.info("Setting cluster for XCX",u,tde(e)),m.type="group",m.isGroup=!0,m.dir=tde(e),m.shape=e.type===P6?qO:YO,m.cssClasses=`${m.cssClasses} ${Qfe} ${a?Zfe:""}`);let g={labelStyle:"",shape:m.shape,label:m.description,cssClasses:m.cssClasses,cssCompiledStyles:[],cssStyles:m.cssStyles,id:u,dir:m.dir,domId:ZO(u,xf),type:m.type,isGroup:m.type==="group",padding:8,rx:10,ry:10,look:s};if(g.shape===qO&&(g.label=""),t&&t.id!=="root"&&(Y.trace("Setting node ",u," to be child of its parent ",t.id),g.parentId=t.id),g.centerLabel=!0,e.note){let y={labelStyle:"",shape:qfe,label:e.note.text,cssClasses:Kfe,cssStyles:[],cssCompilesStyles:[],id:u+ede+"-"+xf,domId:ZO(u,xf,KO),type:m.type,isGroup:m.type==="group",padding:me().flowchart.padding,look:s,position:e.note.position},v=u+QO,x={labelStyle:"",shape:Yfe,label:e.note.text,cssClasses:m.cssClasses,cssStyles:[],id:u+QO,domId:ZO(u,xf,jO),type:"group",isGroup:!0,padding:16,look:s,position:e.note.position};xf++,x.id=v,y.parentId=v,G6(n,x,l),G6(n,y,l),G6(n,g,l);let b=u,w=y.id;e.note.position==="left of"&&(b=y.id,w=u),i.push({id:b+"-"+w,start:b,end:w,arrowhead:"none",arrowTypeEnd:"",style:GO,labelStyle:"",classes:jfe,arrowheadStyle:VO,labelpos:UO,labelType:HO,thickness:WO,look:s})}else G6(n,g,l)}e.doc&&(Y.trace("Adding nodes children "),sUe(e,e.doc,r,n,i,!a,s,l))},"dataFetcher"),rde=o(()=>{V6.clear(),xf=0},"reset")});var JO,cUe,uUe,ide,eP=N(()=>{"use strict";zt();vt();gm();Yd();$m();ir();z6();JO=o((t,e=O6)=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),cUe=o(function(t,e){return e.db.getClasses()},"getClasses"),uUe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing state diagram (v2)",e);let{securityLevel:i,state:a,layout:s}=me();n.db.extract(n.db.getRootDocV2());let l=n.db.getData(),u=yc(e,i);l.type=n.type,l.layoutAlgorithm=s,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["barb"],l.diagramId=e,await Cc(l,u);let h=8;Gt.insertTitle(u,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ac(u,h,R1,a?.useMaxWidth??!0)},"draw"),ide={getClasses:cUe,draw:uUe,getDir:JO}});function ude(){return new Map}var tP,ade,sde,ode,lde,cde,hUe,fUe,hde,U6,Qo,H6=N(()=>{"use strict";zt();vt();ir();gr();mi();nde();eP();z6();tP="[*]",ade="start",sde=tP,ode="end",lde="color",cde="fill",hUe="bgFill",fUe=",";o(ude,"newClassesList");hde=o(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),U6=o(t=>JSON.parse(JSON.stringify(t)),"clone"),Qo=class{static{o(this,"StateDB")}constructor(e){this.clear(),this.version=e,this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}version;nodes=[];edges=[];rootDoc=[];classes=ude();documents={root:hde()};currentDocument=this.documents.root;startEndCount=0;dividerCnt=0;static relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3};setRootDoc(e){Y.info("Setting root doc",e),this.rootDoc=e,this.version===1?this.extract(e):this.extract(this.getRootDocV2())}getRootDoc(){return this.rootDoc}docTranslator(e,r,n){if(r.stmt===Eb)this.docTranslator(e,r.state1,!0),this.docTranslator(e,r.state2,!1);else if(r.stmt===L1&&(r.id==="[*]"?(r.id=n?e.id+"_start":e.id+"_end",r.start=n):r.id=r.id.trim()),r.doc){let i=[],a=[],s;for(s=0;s0&&a.length>0){let l={stmt:L1,id:X9(),type:"divider",doc:U6(a)};i.push(U6(l)),r.doc=i}r.doc.forEach(l=>this.docTranslator(r,l,!0))}}getRootDocV2(){return this.docTranslator({id:"root"},{id:"root",doc:this.rootDoc},!0),{id:"root",doc:this.rootDoc}}extract(e){let r;e.doc?r=e.doc:r=e,Y.info(r),this.clear(!0),Y.info("Extract initial document:",r),r.forEach(s=>{switch(Y.warn("Statement",s.stmt),s.stmt){case L1:this.addState(s.id.trim(),s.type,s.doc,s.description,s.note,s.classes,s.styles,s.textStyles);break;case Eb:this.addRelation(s.state1,s.state2,s.description);break;case Gfe:this.addStyleClass(s.id.trim(),s.classes);break;case Vfe:{let l=s.id.trim().split(","),u=s.styleClass.split(",");l.forEach(h=>{let f=this.getState(h);if(f===void 0){let d=h.trim();this.addState(d),f=this.getState(d)}f.styles=u.map(d=>d.replace(/;/g,"")?.trim())})}break;case Ufe:this.setCssClass(s.id.trim(),s.styleClass);break}});let n=this.getStates(),a=me().look;rde(),N1(void 0,this.getRootDocV2(),n,this.nodes,this.edges,!0,a,this.classes),this.nodes.forEach(s=>{if(Array.isArray(s.label)){if(s.description=s.label.slice(1),s.isGroup&&s.description.length>0)throw new Error("Group nodes can only have label. Remove the additional description for node ["+s.id+"]");s.label=s.label[0]}})}addState(e,r=Rp,n=null,i=null,a=null,s=null,l=null,u=null){let h=e?.trim();if(this.currentDocument.states.has(h)?(this.currentDocument.states.get(h).doc||(this.currentDocument.states.get(h).doc=n),this.currentDocument.states.get(h).type||(this.currentDocument.states.get(h).type=r)):(Y.info("Adding state ",h,i),this.currentDocument.states.set(h,{id:h,descriptions:[],type:r,doc:n,note:a,classes:[],styles:[],textStyles:[]})),i&&(Y.info("Setting state description",h,i),typeof i=="string"&&this.addDescription(h,i.trim()),typeof i=="object"&&i.forEach(f=>this.addDescription(h,f.trim()))),a){let f=this.currentDocument.states.get(h);f.note=a,f.note.text=Ze.sanitizeText(f.note.text,me())}s&&(Y.info("Setting state classes",h,s),(typeof s=="string"?[s]:s).forEach(d=>this.setCssClass(h,d.trim()))),l&&(Y.info("Setting state styles",h,l),(typeof l=="string"?[l]:l).forEach(d=>this.setStyle(h,d.trim()))),u&&(Y.info("Setting state styles",h,l),(typeof u=="string"?[u]:u).forEach(d=>this.setTextStyle(h,d.trim())))}clear(e){this.nodes=[],this.edges=[],this.documents={root:hde()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=ude(),e||Ar()}getState(e){return this.currentDocument.states.get(e)}getStates(){return this.currentDocument.states}logDocuments(){Y.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}startIdIfNeeded(e=""){let r=e;return e===tP&&(this.startEndCount++,r=`${ade}${this.startEndCount}`),r}startTypeIfNeeded(e="",r=Rp){return e===tP?ade:r}endIdIfNeeded(e=""){let r=e;return e===sde&&(this.startEndCount++,r=`${ode}${this.startEndCount}`),r}endTypeIfNeeded(e="",r=Rp){return e===sde?ode:r}addRelationObjs(e,r,n){let i=this.startIdIfNeeded(e.id.trim()),a=this.startTypeIfNeeded(e.id.trim(),e.type),s=this.startIdIfNeeded(r.id.trim()),l=this.startTypeIfNeeded(r.id.trim(),r.type);this.addState(i,a,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.addState(s,l,r.doc,r.description,r.note,r.classes,r.styles,r.textStyles),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:Ze.sanitizeText(n,me())})}addRelation(e,r,n){if(typeof e=="object")this.addRelationObjs(e,r,n);else{let i=this.startIdIfNeeded(e.trim()),a=this.startTypeIfNeeded(e),s=this.endIdIfNeeded(r.trim()),l=this.endTypeIfNeeded(r);this.addState(i,a),this.addState(s,l),this.currentDocument.relations.push({id1:i,id2:s,title:Ze.sanitizeText(n,me())})}}addDescription(e,r){let n=this.currentDocument.states.get(e),i=r.startsWith(":")?r.replace(":","").trim():r;n.descriptions.push(Ze.sanitizeText(i,me()))}cleanupLabel(e){return e.substring(0,1)===":"?e.substr(2).trim():e.trim()}getDividerId(){return this.dividerCnt++,"divider-id-"+this.dividerCnt}addStyleClass(e,r=""){this.classes.has(e)||this.classes.set(e,{id:e,styles:[],textStyles:[]});let n=this.classes.get(e);r?.split(fUe).forEach(i=>{let a=i.replace(/([^;]*);/,"$1").trim();if(RegExp(lde).exec(i)){let l=a.replace(cde,hUe).replace(lde,cde);n.textStyles.push(l)}n.styles.push(a)})}getClasses(){return this.classes}setCssClass(e,r){e.split(",").forEach(n=>{let i=this.getState(n);if(i===void 0){let a=n.trim();this.addState(a),i=this.getState(a)}i.classes.push(r)})}setStyle(e,r){let n=this.getState(e);n!==void 0&&n.styles.push(r)}setTextStyle(e,r){let n=this.getState(e);n!==void 0&&n.textStyles.push(r)}getDirectionStatement(){return this.rootDoc.find(e=>e.stmt===zO)}getDirection(){return this.getDirectionStatement()?.value??zfe}setDirection(e){let r=this.getDirectionStatement();r?r.value=e:this.rootDoc.unshift({stmt:zO,value:e})}trimColon(e){return e&&e[0]===":"?e.substr(1).trim():e.trim()}getData(){let e=me();return{nodes:this.nodes,edges:this.edges,other:{},config:e,direction:JO(this.getRootDocV2())}}getConfig(){return me().state}getAccTitle=Rr;setAccTitle=Lr;getAccDescription=Mr;setAccDescription=Nr;setDiagramTitle=$r;getDiagramTitle=Ir}});var dUe,W6,rP=N(()=>{"use strict";dUe=o(t=>` + ${zc()} +`,"getStyles"),aC=BJe});var FJe,$Je,zJe,sC,c$=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();FJe=o((t,e="TB")=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),$Je=o(function(t,e){return e.db.getClasses()},"getClasses"),zJe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing class diagram (v3)",e);let{securityLevel:i,state:a,layout:s}=ge(),l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=$c(s),l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["aggregation","extension","composition","dependency","lollipop"],l.diagramId=e,await Qo(l,u);let h=8;qt.insertTitle(u,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,h,"classDiagram",a?.useMaxWidth??!0)},"draw"),sC={getClasses:$Je,draw:zJe,getDir:FJe}});var Jye={};dr(Jye,{diagram:()=>GJe});var GJe,eve=N(()=>{"use strict";s$();o$();l$();c$();GJe={parser:nC,get db(){return new sy},renderer:sC,styles:aC,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var nve={};dr(nve,{diagram:()=>qJe});var qJe,ive=N(()=>{"use strict";s$();o$();l$();c$();qJe={parser:nC,get db(){return new sy},renderer:sC,styles:aC,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var u$,oC,h$=N(()=>{"use strict";u$=(function(){var t=o(function(F,G,$,U){for($=$||{},U=F.length;U--;$[F[U]]=G);return $},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,16],u=[1,17],h=[1,18],f=[1,19],d=[1,33],p=[1,20],m=[1,21],g=[1,22],y=[1,23],v=[1,24],x=[1,26],b=[1,27],T=[1,28],S=[1,29],w=[1,30],k=[1,31],A=[1,32],C=[1,35],R=[1,36],I=[1,37],L=[1,38],E=[1,34],D=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],_=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],O=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],M={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:o(function(G,$,U,j,te,Y,oe){var J=Y.length-1;switch(te){case 3:return j.setRootDoc(Y[J]),Y[J];break;case 4:this.$=[];break;case 5:Y[J]!="nl"&&(Y[J-1].push(Y[J]),this.$=Y[J-1]);break;case 6:case 7:this.$=Y[J];break;case 8:this.$="nl";break;case 12:this.$=Y[J];break;case 13:let Z=Y[J-1];Z.description=j.trimColon(Y[J]),this.$=Z;break;case 14:this.$={stmt:"relation",state1:Y[J-2],state2:Y[J]};break;case 15:let K=j.trimColon(Y[J]);this.$={stmt:"relation",state1:Y[J-3],state2:Y[J-1],description:K};break;case 19:this.$={stmt:"state",id:Y[J-3],type:"default",description:"",doc:Y[J-1]};break;case 20:var ue=Y[J],re=Y[J-2].trim();if(Y[J].match(":")){var ee=Y[J].split(":");ue=ee[0],re=[re,ee[1]]}this.$={stmt:"state",id:ue,type:"default",description:re};break;case 21:this.$={stmt:"state",id:Y[J-3],type:"default",description:Y[J-5],doc:Y[J-1]};break;case 22:this.$={stmt:"state",id:Y[J],type:"fork"};break;case 23:this.$={stmt:"state",id:Y[J],type:"join"};break;case 24:this.$={stmt:"state",id:Y[J],type:"choice"};break;case 25:this.$={stmt:"state",id:j.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:Y[J-1].trim(),note:{position:Y[J-2].trim(),text:Y[J].trim()}};break;case 29:this.$=Y[J].trim(),j.setAccTitle(this.$);break;case 30:case 31:this.$=Y[J].trim(),j.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:Y[J-3],url:Y[J-2],tooltip:Y[J-1]};break;case 33:this.$={stmt:"click",id:Y[J-3],url:Y[J-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:Y[J-1].trim(),classes:Y[J].trim()};break;case 36:this.$={stmt:"style",id:Y[J-1].trim(),styleClass:Y[J].trim()};break;case 37:this.$={stmt:"applyClass",id:Y[J-1].trim(),styleClass:Y[J].trim()};break;case 38:j.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:j.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:j.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:j.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:Y[J].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:Y[J-2].trim(),classes:[Y[J].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:Y[J-2].trim(),classes:[Y[J].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,7]),t(D,[2,8]),t(D,[2,9]),t(D,[2,10]),t(D,[2,11]),t(D,[2,12],{14:[1,40],15:[1,41]}),t(D,[2,16]),{18:[1,42]},t(D,[2,18],{20:[1,43]}),{23:[1,44]},t(D,[2,22]),t(D,[2,23]),t(D,[2,24]),t(D,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},t(D,[2,28]),{34:[1,49]},{36:[1,50]},t(D,[2,31]),{13:51,24:d,57:E},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},t(_,[2,44],{58:[1,56]}),t(_,[2,45],{58:[1,57]}),t(D,[2,38]),t(D,[2,39]),t(D,[2,40]),t(D,[2,41]),t(D,[2,6]),t(D,[2,13]),{13:58,24:d,57:E},t(D,[2,17]),t(O,i,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},t(D,[2,29]),t(D,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},t(D,[2,14],{14:[1,71]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,72],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},t(D,[2,34]),t(D,[2,35]),t(D,[2,36]),t(D,[2,37]),t(_,[2,46]),t(_,[2,47]),t(D,[2,15]),t(D,[2,19]),t(O,i,{7:78}),t(D,[2,26]),t(D,[2,27]),{5:[1,79]},{5:[1,80]},{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,81],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,32]),t(D,[2,33]),t(D,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:o(function(G,$){if($.recoverable)this.trace(G);else{var U=new Error(G);throw U.hash=$,U}},"parseError"),parse:o(function(G){var $=this,U=[0],j=[],te=[null],Y=[],oe=this.table,J="",ue=0,re=0,ee=0,Z=2,K=1,ae=Y.slice.call(arguments,1),Q=Object.create(this.lexer),de={yy:{}};for(var ne in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ne)&&(de.yy[ne]=this.yy[ne]);Q.setInput(G,de.yy),de.yy.lexer=Q,de.yy.parser=this,typeof Q.yylloc>"u"&&(Q.yylloc={});var Te=Q.yylloc;Y.push(Te);var q=Q.options&&Q.options.ranges;typeof de.yy.parseError=="function"?this.parseError=de.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ve(z){U.length=U.length-2*z,te.length=te.length-z,Y.length=Y.length-z}o(Ve,"popStack");function pe(){var z;return z=j.pop()||Q.lex()||K,typeof z!="number"&&(z instanceof Array&&(j=z,z=j.pop()),z=$.symbols_[z]||z),z}o(pe,"lex");for(var Be,Ye,He,Le,Ie,Ne,Ce={},Fe,fe,xe,W;;){if(He=U[U.length-1],this.defaultActions[He]?Le=this.defaultActions[He]:((Be===null||typeof Be>"u")&&(Be=pe()),Le=oe[He]&&oe[He][Be]),typeof Le>"u"||!Le.length||!Le[0]){var he="";W=[];for(Fe in oe[He])this.terminals_[Fe]&&Fe>Z&&W.push("'"+this.terminals_[Fe]+"'");Q.showPosition?he="Parse error on line "+(ue+1)+`: +`+Q.showPosition()+` +Expecting `+W.join(", ")+", got '"+(this.terminals_[Be]||Be)+"'":he="Parse error on line "+(ue+1)+": Unexpected "+(Be==K?"end of input":"'"+(this.terminals_[Be]||Be)+"'"),this.parseError(he,{text:Q.match,token:this.terminals_[Be]||Be,line:Q.yylineno,loc:Te,expected:W})}if(Le[0]instanceof Array&&Le.length>1)throw new Error("Parse Error: multiple actions possible at state: "+He+", token: "+Be);switch(Le[0]){case 1:U.push(Be),te.push(Q.yytext),Y.push(Q.yylloc),U.push(Le[1]),Be=null,Ye?(Be=Ye,Ye=null):(re=Q.yyleng,J=Q.yytext,ue=Q.yylineno,Te=Q.yylloc,ee>0&&ee--);break;case 2:if(fe=this.productions_[Le[1]][1],Ce.$=te[te.length-fe],Ce._$={first_line:Y[Y.length-(fe||1)].first_line,last_line:Y[Y.length-1].last_line,first_column:Y[Y.length-(fe||1)].first_column,last_column:Y[Y.length-1].last_column},q&&(Ce._$.range=[Y[Y.length-(fe||1)].range[0],Y[Y.length-1].range[1]]),Ne=this.performAction.apply(Ce,[J,re,ue,de.yy,Le[1],te,Y].concat(ae)),typeof Ne<"u")return Ne;fe&&(U=U.slice(0,-1*fe*2),te=te.slice(0,-1*fe),Y=Y.slice(0,-1*fe)),U.push(this.productions_[Le[1]][0]),te.push(Ce.$),Y.push(Ce._$),xe=oe[U[U.length-2]][U[U.length-1]],U.push(xe);break;case 3:return!0}}return!0},"parse")},P=(function(){var F={EOF:1,parseError:o(function($,U){if(this.yy.parser)this.yy.parser.parseError($,U);else throw new Error($)},"parseError"),setInput:o(function(G,$){return this.yy=$||this.yy||{},this._input=G,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var G=this._input[0];this.yytext+=G,this.yyleng++,this.offset++,this.match+=G,this.matched+=G;var $=G.match(/(?:\r\n?|\n).*/g);return $?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),G},"input"),unput:o(function(G){var $=G.length,U=G.split(/(?:\r\n?|\n)/g);this._input=G+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-$),this.offset-=$;var j=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),U.length-1&&(this.yylineno-=U.length-1);var te=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:U?(U.length===j.length?this.yylloc.first_column:0)+j[j.length-U.length].length-U[0].length:this.yylloc.first_column-$},this.options.ranges&&(this.yylloc.range=[te[0],te[0]+this.yyleng-$]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(G){this.unput(this.match.slice(G))},"less"),pastInput:o(function(){var G=this.matched.substr(0,this.matched.length-this.match.length);return(G.length>20?"...":"")+G.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var G=this.match;return G.length<20&&(G+=this._input.substr(0,20-G.length)),(G.substr(0,20)+(G.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var G=this.pastInput(),$=new Array(G.length+1).join("-");return G+this.upcomingInput()+` +`+$+"^"},"showPosition"),test_match:o(function(G,$){var U,j,te;if(this.options.backtrack_lexer&&(te={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(te.yylloc.range=this.yylloc.range.slice(0))),j=G[0].match(/(?:\r\n?|\n).*/g),j&&(this.yylineno+=j.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:j?j[j.length-1].length-j[j.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+G[0].length},this.yytext+=G[0],this.match+=G[0],this.matches=G,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(G[0].length),this.matched+=G[0],U=this.performAction.call(this,this.yy,this,$,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),U)return U;if(this._backtrack){for(var Y in te)this[Y]=te[Y];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var G,$,U,j;this._more||(this.yytext="",this.match="");for(var te=this._currentRules(),Y=0;Y$[0].length)){if($=U,j=Y,this.options.backtrack_lexer){if(G=this.test_match(U,te[Y]),G!==!1)return G;if(this._backtrack){$=!1;continue}else return!1}else if(!this.options.flex)break}return $?(G=this.test_match($,te[j]),G!==!1?G:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var $=this.next();return $||this.lex()},"lex"),begin:o(function($){this.conditionStack.push($)},"begin"),popState:o(function(){var $=this.conditionStack.length-1;return $>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function($){return $=this.conditionStack.length-1-Math.abs($||0),$>=0?this.conditionStack[$]:"INITIAL"},"topState"),pushState:o(function($){this.begin($)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function($,U,j,te){var Y=te;switch(j){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:return 51;case 5:return 52;case 6:return 53;case 7:return 54;case 8:break;case 9:break;case 10:return 5;case 11:break;case 12:break;case 13:break;case 14:break;case 15:return this.pushState("SCALE"),17;break;case 16:return 18;case 17:this.popState();break;case 18:return this.begin("acc_title"),33;break;case 19:return this.popState(),"acc_title_value";break;case 20:return this.begin("acc_descr"),35;break;case 21:return this.popState(),"acc_descr_value";break;case 22:this.begin("acc_descr_multiline");break;case 23:this.popState();break;case 24:return"acc_descr_multiline_value";case 25:return this.pushState("CLASSDEF"),41;break;case 26:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 27:return this.popState(),this.pushState("CLASSDEFID"),42;break;case 28:return this.popState(),43;break;case 29:return this.pushState("CLASS"),48;break;case 30:return this.popState(),this.pushState("CLASS_STYLE"),49;break;case 31:return this.popState(),50;break;case 32:return this.pushState("STYLE"),45;break;case 33:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;break;case 34:return this.popState(),47;break;case 35:return this.pushState("SCALE"),17;break;case 36:return 18;case 37:this.popState();break;case 38:this.pushState("STATE");break;case 39:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),25;break;case 40:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),26;break;case 41:return this.popState(),U.yytext=U.yytext.slice(0,-10).trim(),27;break;case 42:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),25;break;case 43:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),26;break;case 44:return this.popState(),U.yytext=U.yytext.slice(0,-10).trim(),27;break;case 45:return 51;case 46:return 52;case 47:return 53;case 48:return 54;case 49:this.pushState("STATE_STRING");break;case 50:return this.pushState("STATE_ID"),"AS";break;case 51:return this.popState(),"ID";break;case 52:this.popState();break;case 53:return"STATE_DESCR";case 54:return 19;case 55:this.popState();break;case 56:return this.popState(),this.pushState("struct"),20;break;case 57:break;case 58:return this.popState(),21;break;case 59:break;case 60:return this.begin("NOTE"),29;break;case 61:return this.popState(),this.pushState("NOTE_ID"),59;break;case 62:return this.popState(),this.pushState("NOTE_ID"),60;break;case 63:this.popState(),this.pushState("FLOATING_NOTE");break;case 64:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 65:break;case 66:return"NOTE_TEXT";case 67:return this.popState(),"ID";break;case 68:return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 69:return this.popState(),U.yytext=U.yytext.substr(2).trim(),31;break;case 70:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),31;break;case 71:return 6;case 72:return 6;case 73:return 16;case 74:return 57;case 75:return 24;case 76:return U.yytext=U.yytext.trim(),14;break;case 77:return 15;case 78:return 28;case 79:return 58;case 80:return 5;case 81:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[12,13],inclusive:!1},struct:{rules:[12,13,25,29,32,38,45,46,47,48,57,58,59,60,74,75,76,77,78],inclusive:!1},FLOATING_NOTE_ID:{rules:[67],inclusive:!1},FLOATING_NOTE:{rules:[64,65,66],inclusive:!1},NOTE_TEXT:{rules:[69,70],inclusive:!1},NOTE_ID:{rules:[68],inclusive:!1},NOTE:{rules:[61,62,63],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[34],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[33],inclusive:!1},CLASS_STYLE:{rules:[31],inclusive:!1},CLASS:{rules:[30],inclusive:!1},CLASSDEFID:{rules:[28],inclusive:!1},CLASSDEF:{rules:[26,27],inclusive:!1},acc_descr_multiline:{rules:[23,24],inclusive:!1},acc_descr:{rules:[21],inclusive:!1},acc_title:{rules:[19],inclusive:!1},SCALE:{rules:[16,17,36,37],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[51],inclusive:!1},STATE_STRING:{rules:[52,53],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[12,13,39,40,41,42,43,44,49,50,54,55,56],inclusive:!1},ID:{rules:[12,13],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,18,20,22,25,29,32,35,38,56,60,71,72,73,74,75,76,77,79,80,81],inclusive:!0}}};return F})();M.lexer=P;function B(){this.yy={}}return o(B,"Parser"),B.prototype=M,M.Parser=B,new B})();u$.parser=u$;oC=u$});var Qf,u0,E4,ove,lve,cve,h0,lC,f$,d$,p$,m$,cC,uC,uve,hve,g$,y$,fve,dve,oy,jJe,pve,v$,KJe,QJe,mve,gve,ZJe,yve,JJe,vve,x$,b$,xve,hC,bve,T$,fC=N(()=>{"use strict";Qf="state",u0="root",E4="relation",ove="classDef",lve="style",cve="applyClass",h0="default",lC="divider",f$="fill:none",d$="fill: #333",p$="text",m$="normal",cC="rect",uC="rectWithTitle",uve="stateStart",hve="stateEnd",g$="divider",y$="roundedWithTitle",fve="note",dve="noteGroup",oy="statediagram",jJe="state",pve=`${oy}-${jJe}`,v$="transition",KJe="note",QJe="note-edge",mve=`${v$} ${QJe}`,gve=`${oy}-${KJe}`,ZJe="cluster",yve=`${oy}-${ZJe}`,JJe="cluster-alt",vve=`${oy}-${JJe}`,x$="parent",b$="note",xve="state",hC="----",bve=`${hC}${b$}`,T$=`${hC}${x$}`});function w$(t="",e=0,r="",n=hC){let i=r!==null&&r.length>0?`${n}${r}`:"";return`${xve}-${t}${i}-${e}`}function dC(t,e,r){if(!e.id||e.id===""||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(i=>{let a=r.get(i);a&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...a.styles])}));let n=t.find(i=>i.id===e.id);n?Object.assign(n,e):t.push(e)}function tet(t){return t?.classes?.join(" ")??""}function ret(t){return t?.styles??[]}var pC,Zf,eet,Tve,ly,kve,Eve=N(()=>{"use strict";Xt();pt();gr();fC();pC=new Map,Zf=0;o(w$,"stateDomId");eet=o((t,e,r,n,i,a,s,l)=>{X.trace("items",e),e.forEach(u=>{switch(u.stmt){case Qf:ly(t,u,r,n,i,a,s,l);break;case h0:ly(t,u,r,n,i,a,s,l);break;case E4:{ly(t,u.state1,r,n,i,a,s,l),ly(t,u.state2,r,n,i,a,s,l);let h={id:"edge"+Zf,start:u.state1.id,end:u.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:f$,labelStyle:"",label:tt.sanitizeText(u.description??"",ge()),arrowheadStyle:d$,labelpos:"c",labelType:p$,thickness:m$,classes:v$,look:s};i.push(h),Zf++}break}})},"setupDoc"),Tve=o((t,e="TB")=>{let r=e;if(t.doc)for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir");o(dC,"insertOrUpdateNode");o(tet,"getClassesFromDbInfo");o(ret,"getStylesFromDbInfo");ly=o((t,e,r,n,i,a,s,l)=>{let u=e.id,h=r.get(u),f=tet(h),d=ret(h),p=ge();if(X.info("dataFetcher parsedItem",e,h,d),u!=="root"){let m=cC;e.start===!0?m=uve:e.start===!1&&(m=hve),e.type!==h0&&(m=e.type),pC.get(u)||pC.set(u,{id:u,shape:m,description:tt.sanitizeText(u,p),cssClasses:`${f} ${pve}`,cssStyles:d});let g=pC.get(u);e.description&&(Array.isArray(g.description)?(g.shape=uC,g.description.push(e.description)):g.description?.length&&g.description.length>0?(g.shape=uC,g.description===u?g.description=[e.description]:g.description=[g.description,e.description]):(g.shape=cC,g.description=e.description),g.description=tt.sanitizeTextOrArray(g.description,p)),g.description?.length===1&&g.shape===uC&&(g.type==="group"?g.shape=y$:g.shape=cC),!g.type&&e.doc&&(X.info("Setting cluster for XCX",u,Tve(e)),g.type="group",g.isGroup=!0,g.dir=Tve(e),g.shape=e.type===lC?g$:y$,g.cssClasses=`${g.cssClasses} ${yve} ${a?vve:""}`);let y={labelStyle:"",shape:g.shape,label:g.description,cssClasses:g.cssClasses,cssCompiledStyles:[],cssStyles:g.cssStyles,id:u,dir:g.dir,domId:w$(u,Zf),type:g.type,isGroup:g.type==="group",padding:8,rx:10,ry:10,look:s};if(y.shape===g$&&(y.label=""),t&&t.id!=="root"&&(X.trace("Setting node ",u," to be child of its parent ",t.id),y.parentId=t.id),y.centerLabel=!0,e.note){let v={labelStyle:"",shape:fve,label:e.note.text,cssClasses:gve,cssStyles:[],cssCompiledStyles:[],id:u+bve+"-"+Zf,domId:w$(u,Zf,b$),type:g.type,isGroup:g.type==="group",padding:p.flowchart?.padding,look:s,position:e.note.position},x=u+T$,b={labelStyle:"",shape:dve,label:e.note.text,cssClasses:g.cssClasses,cssStyles:[],id:u+T$,domId:w$(u,Zf,x$),type:"group",isGroup:!0,padding:16,look:s,position:e.note.position};Zf++,b.id=x,v.parentId=x,dC(n,b,l),dC(n,v,l),dC(n,y,l);let T=u,S=v.id;e.note.position==="left of"&&(T=v.id,S=u),i.push({id:T+"-"+S,start:T,end:S,arrowhead:"none",arrowTypeEnd:"",style:f$,labelStyle:"",classes:mve,arrowheadStyle:d$,labelpos:"c",labelType:p$,thickness:m$,look:s})}else dC(n,y,l)}e.doc&&(X.trace("Adding nodes children "),eet(e,e.doc,r,n,i,!a,s,l))},"dataFetcher"),kve=o(()=>{pC.clear(),Zf=0},"reset")});var E$,net,iet,Sve,S$=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();fC();E$=o((t,e="TB")=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),net=o(function(t,e){return e.db.getClasses()},"getClasses"),iet=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing state diagram (v2)",e);let{securityLevel:i,state:a,layout:s}=ge();n.db.extract(n.db.getRootDocV2());let l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=s,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["barb"],l.diagramId=e,await Qo(l,u);let h=8;try{(typeof n.db.getLinks=="function"?n.db.getLinks():new Map).forEach((d,p)=>{let m=typeof p=="string"?p:typeof p?.id=="string"?p.id:"";if(!m){X.warn("\u26A0\uFE0F Invalid or missing stateId from key:",JSON.stringify(p));return}let g=u.node()?.querySelectorAll("g"),y;if(g?.forEach(T=>{T.textContent?.trim()===m&&(y=T)}),!y){X.warn("\u26A0\uFE0F Could not find node matching text:",m);return}let v=y.parentNode;if(!v){X.warn("\u26A0\uFE0F Node has no parent, cannot wrap:",m);return}let x=document.createElementNS("http://www.w3.org/2000/svg","a"),b=d.url.replace(/^"+|"+$/g,"");if(x.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",b),x.setAttribute("target","_blank"),d.tooltip){let T=d.tooltip.replace(/^"+|"+$/g,"");x.setAttribute("title",T)}v.replaceChild(x,y),x.appendChild(y),X.info("\u{1F517} Wrapped node in
    tag for:",m,d.url)})}catch(f){X.error("\u274C Error injecting clickable links:",f)}qt.insertTitle(u,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,h,oy,a?.useMaxWidth??!0)},"draw"),Sve={getClasses:net,draw:iet,getDir:E$}});var ws,Ave,_ve,mC,al,gC=N(()=>{"use strict";Xt();pt();tr();gr();ci();Eve();S$();fC();ws={START_NODE:"[*]",START_TYPE:"start",END_NODE:"[*]",END_TYPE:"end",COLOR_KEYWORD:"color",FILL_KEYWORD:"fill",BG_FILL:"bgFill",STYLECLASS_SEP:","},Ave=o(()=>new Map,"newClassesList"),_ve=o(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),mC=o(t=>JSON.parse(JSON.stringify(t)),"clone"),al=class{constructor(e){this.version=e;this.nodes=[];this.edges=[];this.rootDoc=[];this.classes=Ave();this.documents={root:_ve()};this.currentDocument=this.documents.root;this.startEndCount=0;this.dividerCnt=0;this.links=new Map;this.getAccTitle=Mr;this.setAccTitle=Rr;this.getAccDescription=Or;this.setAccDescription=Ir;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{o(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(e){this.clear(!0);for(let i of Array.isArray(e)?e:e.doc)switch(i.stmt){case Qf:this.addState(i.id.trim(),i.type,i.doc,i.description,i.note);break;case E4:this.addRelation(i.state1,i.state2,i.description);break;case ove:this.addStyleClass(i.id.trim(),i.classes);break;case lve:this.handleStyleDef(i);break;case cve:this.setCssClass(i.id.trim(),i.styleClass);break;case"click":this.addLink(i.id,i.url,i.tooltip);break}let r=this.getStates(),n=ge();kve(),ly(void 0,this.getRootDocV2(),r,this.nodes,this.edges,!0,n.look,this.classes);for(let i of this.nodes)if(Array.isArray(i.label)){if(i.description=i.label.slice(1),i.isGroup&&i.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`);i.label=i.label[0]}}handleStyleDef(e){let r=e.id.trim().split(","),n=e.styleClass.split(",");for(let i of r){let a=this.getState(i);if(!a){let s=i.trim();this.addState(s),a=this.getState(s)}a&&(a.styles=n.map(s=>s.replace(/;/g,"")?.trim()))}}setRootDoc(e){X.info("Setting root doc",e),this.rootDoc=e,this.version===1?this.extract(e):this.extract(this.getRootDocV2())}docTranslator(e,r,n){if(r.stmt===E4){this.docTranslator(e,r.state1,!0),this.docTranslator(e,r.state2,!1);return}if(r.stmt===Qf&&(r.id===ws.START_NODE?(r.id=e.id+(n?"_start":"_end"),r.start=n):r.id=r.id.trim()),r.stmt!==u0&&r.stmt!==Qf||!r.doc)return;let i=[],a=[];for(let s of r.doc)if(s.type===lC){let l=mC(s);l.doc=mC(a),i.push(l),a=[]}else a.push(s);if(i.length>0&&a.length>0){let s={stmt:Qf,id:GL(),type:"divider",doc:mC(a)};i.push(mC(s)),r.doc=i}r.doc.forEach(s=>this.docTranslator(r,s,!0))}getRootDocV2(){return this.docTranslator({id:u0,stmt:u0},{id:u0,stmt:u0,doc:this.rootDoc},!0),{id:u0,doc:this.rootDoc}}addState(e,r=h0,n=void 0,i=void 0,a=void 0,s=void 0,l=void 0,u=void 0){let h=e?.trim();if(!this.currentDocument.states.has(h))X.info("Adding state ",h,i),this.currentDocument.states.set(h,{stmt:Qf,id:h,descriptions:[],type:r,doc:n,note:a,classes:[],styles:[],textStyles:[]});else{let f=this.currentDocument.states.get(h);if(!f)throw new Error(`State not found: ${h}`);f.doc||(f.doc=n),f.type||(f.type=r)}if(i&&(X.info("Setting state description",h,i),(Array.isArray(i)?i:[i]).forEach(d=>this.addDescription(h,d.trim()))),a){let f=this.currentDocument.states.get(h);if(!f)throw new Error(`State not found: ${h}`);f.note=a,f.note.text=tt.sanitizeText(f.note.text,ge())}s&&(X.info("Setting state classes",h,s),(Array.isArray(s)?s:[s]).forEach(d=>this.setCssClass(h,d.trim()))),l&&(X.info("Setting state styles",h,l),(Array.isArray(l)?l:[l]).forEach(d=>this.setStyle(h,d.trim()))),u&&(X.info("Setting state styles",h,l),(Array.isArray(u)?u:[u]).forEach(d=>this.setTextStyle(h,d.trim())))}clear(e){this.nodes=[],this.edges=[],this.documents={root:_ve()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=Ave(),e||(this.links=new Map,Sr())}getState(e){return this.currentDocument.states.get(e)}getStates(){return this.currentDocument.states}logDocuments(){X.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(e,r,n){this.links.set(e,{url:r,tooltip:n}),X.warn("Adding link",e,r,n)}getLinks(){return this.links}startIdIfNeeded(e=""){return e===ws.START_NODE?(this.startEndCount++,`${ws.START_TYPE}${this.startEndCount}`):e}startTypeIfNeeded(e="",r=h0){return e===ws.START_NODE?ws.START_TYPE:r}endIdIfNeeded(e=""){return e===ws.END_NODE?(this.startEndCount++,`${ws.END_TYPE}${this.startEndCount}`):e}endTypeIfNeeded(e="",r=h0){return e===ws.END_NODE?ws.END_TYPE:r}addRelationObjs(e,r,n=""){let i=this.startIdIfNeeded(e.id.trim()),a=this.startTypeIfNeeded(e.id.trim(),e.type),s=this.startIdIfNeeded(r.id.trim()),l=this.startTypeIfNeeded(r.id.trim(),r.type);this.addState(i,a,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.addState(s,l,r.doc,r.description,r.note,r.classes,r.styles,r.textStyles),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:tt.sanitizeText(n,ge())})}addRelation(e,r,n){if(typeof e=="object"&&typeof r=="object")this.addRelationObjs(e,r,n);else if(typeof e=="string"&&typeof r=="string"){let i=this.startIdIfNeeded(e.trim()),a=this.startTypeIfNeeded(e),s=this.endIdIfNeeded(r.trim()),l=this.endTypeIfNeeded(r);this.addState(i,a),this.addState(s,l),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:n?tt.sanitizeText(n,ge()):void 0})}}addDescription(e,r){let n=this.currentDocument.states.get(e),i=r.startsWith(":")?r.replace(":","").trim():r;n?.descriptions?.push(tt.sanitizeText(i,ge()))}cleanupLabel(e){return e.startsWith(":")?e.slice(2).trim():e.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(e,r=""){this.classes.has(e)||this.classes.set(e,{id:e,styles:[],textStyles:[]});let n=this.classes.get(e);r&&n&&r.split(ws.STYLECLASS_SEP).forEach(i=>{let a=i.replace(/([^;]*);/,"$1").trim();if(RegExp(ws.COLOR_KEYWORD).exec(i)){let l=a.replace(ws.FILL_KEYWORD,ws.BG_FILL).replace(ws.COLOR_KEYWORD,ws.FILL_KEYWORD);n.textStyles.push(l)}n.styles.push(a)})}getClasses(){return this.classes}setCssClass(e,r){e.split(",").forEach(n=>{let i=this.getState(n);if(!i){let a=n.trim();this.addState(a),i=this.getState(a)}i?.classes?.push(r)})}setStyle(e,r){this.getState(e)?.styles?.push(r)}setTextStyle(e,r){this.getState(e)?.textStyles?.push(r)}getDirectionStatement(){return this.rootDoc.find(e=>e.stmt==="dir")}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(e){let r=this.getDirectionStatement();r?r.value=e:this.rootDoc.unshift({stmt:"dir",value:e})}trimColon(e){return e.startsWith(":")?e.slice(1).trim():e.trim()}getData(){let e=ge();return{nodes:this.nodes,edges:this.edges,other:{},config:e,direction:E$(this.getRootDocV2())}}getConfig(){return ge().state}}});var set,yC,C$=N(()=>{"use strict";set=o(t=>` defs #statediagram-barbEnd { fill: ${t.transitionColor}; stroke: ${t.transitionColor}; @@ -1741,12 +2153,12 @@ g.stateGroup line { font-size: 18px; fill: ${t.textColor}; } -`,"getStyles"),W6=dUe});var nP,pUe,mUe,fde,gUe,dde,pde=N(()=>{"use strict";nP={},pUe=o((t,e)=>{nP[t]=e},"set"),mUe=o(t=>nP[t],"get"),fde=o(()=>Object.keys(nP),"keys"),gUe=o(()=>fde().length,"size"),dde={get:mUe,set:pUe,keys:fde,size:gUe}});var yUe,vUe,xUe,bUe,gde,wUe,TUe,kUe,EUe,iP,mde,yde,vde=N(()=>{"use strict";dr();pde();H6();ir();gr();zt();vt();yUe=o(t=>t.append("circle").attr("class","start-state").attr("r",me().state.sizeUnit).attr("cx",me().state.padding+me().state.sizeUnit).attr("cy",me().state.padding+me().state.sizeUnit),"drawStartState"),vUe=o(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",me().state.textHeight).attr("class","divider").attr("x2",me().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),xUe=o((t,e)=>{let r=t.append("text").attr("x",2*me().state.padding).attr("y",me().state.textHeight+2*me().state.padding).attr("font-size",me().state.fontSize).attr("class","state-title").text(e.id),n=r.node().getBBox();return t.insert("rect",":first-child").attr("x",me().state.padding).attr("y",me().state.padding).attr("width",n.width+2*me().state.padding).attr("height",n.height+2*me().state.padding).attr("rx",me().state.radius),r},"drawSimpleState"),bUe=o((t,e)=>{let r=o(function(p,m,g){let y=p.append("tspan").attr("x",2*me().state.padding).text(m);g||y.attr("dy",me().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*me().state.padding).attr("y",me().state.textHeight+1.3*me().state.padding).attr("font-size",me().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),a=i.height,s=t.append("text").attr("x",me().state.padding).attr("y",a+me().state.padding*.4+me().state.dividerMargin+me().state.textHeight).attr("class","state-description"),l=!0,u=!0;e.descriptions.forEach(function(p){l||(r(s,p,u),u=!1),l=!1});let h=t.append("line").attr("x1",me().state.padding).attr("y1",me().state.padding+a+me().state.dividerMargin/2).attr("y2",me().state.padding+a+me().state.dividerMargin/2).attr("class","descr-divider"),f=s.node().getBBox(),d=Math.max(f.width,i.width);return h.attr("x2",d+3*me().state.padding),t.insert("rect",":first-child").attr("x",me().state.padding).attr("y",me().state.padding).attr("width",d+2*me().state.padding).attr("height",f.height+a+2*me().state.padding).attr("rx",me().state.radius),t},"drawDescrState"),gde=o((t,e,r)=>{let n=me().state.padding,i=2*me().state.padding,a=t.node().getBBox(),s=a.width,l=a.x,u=t.append("text").attr("x",0).attr("y",me().state.titleShift).attr("font-size",me().state.fontSize).attr("class","state-title").text(e.id),f=u.node().getBBox().width+i,d=Math.max(f,s);d===s&&(d=d+i);let p,m=t.node().getBBox();e.doc,p=l-n,f>s&&(p=(s-d)/2+n),Math.abs(l-m.x)s&&(p=l-(f-s)/2);let g=1-me().state.textHeight;return t.insert("rect",":first-child").attr("x",p).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",d).attr("height",m.height+me().state.textHeight+me().state.titleShift+1).attr("rx","0"),u.attr("x",p+n),f<=s&&u.attr("x",l+(d-i)/2-f/2+n),t.insert("rect",":first-child").attr("x",p).attr("y",me().state.titleShift-me().state.textHeight-me().state.padding).attr("width",d).attr("height",me().state.textHeight*3).attr("rx",me().state.radius),t.insert("rect",":first-child").attr("x",p).attr("y",me().state.titleShift-me().state.textHeight-me().state.padding).attr("width",d).attr("height",m.height+3+2*me().state.textHeight).attr("rx",me().state.radius),t},"addTitleAndBox"),wUe=o(t=>(t.append("circle").attr("class","end-state-outer").attr("r",me().state.sizeUnit+me().state.miniPadding).attr("cx",me().state.padding+me().state.sizeUnit+me().state.miniPadding).attr("cy",me().state.padding+me().state.sizeUnit+me().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",me().state.sizeUnit).attr("cx",me().state.padding+me().state.sizeUnit+2).attr("cy",me().state.padding+me().state.sizeUnit+2)),"drawEndState"),TUe=o((t,e)=>{let r=me().state.forkWidth,n=me().state.forkHeight;if(e.parentId){let i=r;r=n,n=i}return t.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",n).attr("x",me().state.padding).attr("y",me().state.padding)},"drawForkJoinState"),kUe=o((t,e,r,n)=>{let i=0,a=n.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=t.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");let l=s.split(Ze.lineBreakRegex),u=1.25*me().state.noteMargin;for(let h of l){let f=h.trim();if(f.length>0){let d=a.append("tspan");if(d.text(f),u===0){let p=d.node().getBBox();u+=p.height}i+=u,d.attr("x",e+me().state.noteMargin),d.attr("y",r+i+1.25*me().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),EUe=o((t,e)=>{e.attr("class","state-note");let r=e.append("rect").attr("x",0).attr("y",me().state.padding),n=e.append("g"),{textWidth:i,textHeight:a}=kUe(t,0,0,n);return r.attr("height",a+2*me().state.noteMargin),r.attr("width",i+me().state.noteMargin*2),r},"drawNote"),iP=o(function(t,e){let r=e.id,n={id:r,label:e.id,width:0,height:0},i=t.append("g").attr("id",r).attr("class","stateGroup");e.type==="start"&&yUe(i),e.type==="end"&&wUe(i),(e.type==="fork"||e.type==="join")&&TUe(i,e),e.type==="note"&&EUe(e.note.text,i),e.type==="divider"&&vUe(i),e.type==="default"&&e.descriptions.length===0&&xUe(i,e),e.type==="default"&&e.descriptions.length>0&&bUe(i,e);let a=i.node().getBBox();return n.width=a.width+2*me().state.padding,n.height=a.height+2*me().state.padding,dde.set(r,n),n},"drawState"),mde=0,yde=o(function(t,e,r){let n=o(function(u){switch(u){case Qo.relationType.AGGREGATION:return"aggregation";case Qo.relationType.EXTENSION:return"extension";case Qo.relationType.COMPOSITION:return"composition";case Qo.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(u=>!Number.isNaN(u.y));let i=e.points,a=wl().x(function(u){return u.x}).y(function(u){return u.y}).curve(Do),s=t.append("path").attr("d",a(i)).attr("id","edge"+mde).attr("class","transition"),l="";if(me().state.arrowMarkerAbsolute&&(l=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,l=l.replace(/\(/g,"\\("),l=l.replace(/\)/g,"\\)")),s.attr("marker-end","url("+l+"#"+n(Qo.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let u=t.append("g").attr("class","stateLabel"),{x:h,y:f}=Gt.calcLabelPosition(e.points),d=Ze.getRows(r.title),p=0,m=[],g=0,y=0;for(let b=0;b<=d.length;b++){let w=u.append("text").attr("text-anchor","middle").text(d[b]).attr("x",h).attr("y",f+p),C=w.node().getBBox();g=Math.max(g,C.width),y=Math.min(y,C.x),Y.info(C.x,h,f+p),p===0&&(p=w.node().getBBox().height,Y.info("Title height",p,f)),m.push(w)}let v=p*d.length;if(d.length>1){let b=(d.length-1)*p*.5;m.forEach((w,C)=>w.attr("y",f+C*p-b)),v=p*d.length}let x=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",h-g/2-me().state.padding/2).attr("y",f-v/2-me().state.padding/2-3.5).attr("width",g+me().state.padding).attr("height",v+me().state.padding),Y.info(x)}mde++},"drawEdge")});var fo,aP,SUe,CUe,AUe,_Ue,xde,bde,wde=N(()=>{"use strict";dr();gR();Vo();vt();gr();vde();zt();Ei();aP={},SUe=o(function(){},"setConf"),CUe=o(function(t){t.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),AUe=o(function(t,e,r,n){fo=me().state;let i=me().securityLevel,a;i==="sandbox"&&(a=Ge("#i"+e));let s=i==="sandbox"?Ge(a.nodes()[0].contentDocument.body):Ge("body"),l=i==="sandbox"?a.nodes()[0].contentDocument:document;Y.debug("Rendering diagram "+t);let u=s.select(`[id='${e}']`);CUe(u);let h=n.db.getRootDoc();xde(h,u,void 0,!1,s,l,n);let f=fo.padding,d=u.node().getBBox(),p=d.width+f*2,m=d.height+f*2,g=p*1.75;vn(u,m,g,fo.useMaxWidth),u.attr("viewBox",`${d.x-fo.padding} ${d.y-fo.padding} `+p+" "+m)},"draw"),_Ue=o(t=>t?t.length*fo.fontSizeFactor:1,"getLabelWidth"),xde=o((t,e,r,n,i,a,s)=>{let l=new sn({compound:!0,multigraph:!0}),u,h=!0;for(u=0;u{let T=C.parentElement,E=0,A=0;T&&(T.parentElement&&(E=T.parentElement.getBBox().width),A=parseInt(T.getAttribute("data-x-shift"),10),Number.isNaN(A)&&(A=0)),C.setAttribute("x1",0-A+8),C.setAttribute("x2",E-A-8)})):Y.debug("No Node "+b+": "+JSON.stringify(l.node(b)))});let v=y.getBBox();l.edges().forEach(function(b){b!==void 0&&l.edge(b)!==void 0&&(Y.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(l.edge(b))),yde(e,l.edge(b),l.edge(b).relation))}),v=y.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=v.width+2*fo.padding,x.height=v.height+2*fo.padding,Y.debug("Doc rendered",x,l),x},"renderDoc"),bde={setConf:SUe,draw:AUe}});var Tde={};hr(Tde,{diagram:()=>DUe});var DUe,kde=N(()=>{"use strict";$O();H6();rP();wde();DUe={parser:I6,get db(){return new Qo(1)},renderer:bde,styles:W6,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var Cde={};hr(Cde,{diagram:()=>MUe});var MUe,Ade=N(()=>{"use strict";$O();H6();rP();eP();MUe={parser:I6,get db(){return new Qo(2)},renderer:ide,styles:W6,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var sP,Lde,Rde=N(()=>{"use strict";sP=function(){var t=o(function(d,p,m,g){for(m=m||{},g=d.length;g--;m[d[g]]=p);return m},"o"),e=[6,8,10,11,12,14,16,17,18],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,14],u={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:o(function(p,m,g,y,v,x,b){var w=x.length-1;switch(v){case 1:return x[w-1];case 2:this.$=[];break;case 3:x[w-1].push(x[w]),this.$=x[w-1];break;case 4:case 5:this.$=x[w];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(x[w].substr(6)),this.$=x[w].substr(6);break;case 9:this.$=x[w].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=x[w].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(x[w].substr(8)),this.$=x[w].substr(8);break;case 13:y.addTask(x[w-1],x[w]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:o(function(p,m){if(m.recoverable)this.trace(p);else{var g=new Error(p);throw g.hash=m,g}},"parseError"),parse:o(function(p){var m=this,g=[0],y=[],v=[null],x=[],b=this.table,w="",C=0,T=0,E=0,A=2,S=1,_=x.slice.call(arguments,1),I=Object.create(this.lexer),D={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(D.yy[k]=this.yy[k]);I.setInput(p,D.yy),D.yy.lexer=I,D.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var L=I.yylloc;x.push(L);var R=I.options&&I.options.ranges;typeof D.yy.parseError=="function"?this.parseError=D.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function O(K){g.length=g.length-2*K,v.length=v.length-K,x.length=x.length-K}o(O,"popStack");function M(){var K;return K=y.pop()||I.lex()||S,typeof K!="number"&&(K instanceof Array&&(y=K,K=y.pop()),K=m.symbols_[K]||K),K}o(M,"lex");for(var B,F,P,z,$,H,Q={},j,ie,ne,le;;){if(P=g[g.length-1],this.defaultActions[P]?z=this.defaultActions[P]:((B===null||typeof B>"u")&&(B=M()),z=b[P]&&b[P][B]),typeof z>"u"||!z.length||!z[0]){var he="";le=[];for(j in b[P])this.terminals_[j]&&j>A&&le.push("'"+this.terminals_[j]+"'");I.showPosition?he="Parse error on line "+(C+1)+`: +`,"getStyles"),yC=set});var oet,cet,uet,het,Lve,fet,det,pet,met,A$,Dve,Rve,Nve=N(()=>{"use strict";yr();gC();tr();gr();Xt();pt();oet=o(t=>t.append("circle").attr("class","start-state").attr("r",ge().state.sizeUnit).attr("cx",ge().state.padding+ge().state.sizeUnit).attr("cy",ge().state.padding+ge().state.sizeUnit),"drawStartState"),cet=o(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",ge().state.textHeight).attr("class","divider").attr("x2",ge().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),uet=o((t,e)=>{let r=t.append("text").attr("x",2*ge().state.padding).attr("y",ge().state.textHeight+2*ge().state.padding).attr("font-size",ge().state.fontSize).attr("class","state-title").text(e.id),n=r.node().getBBox();return t.insert("rect",":first-child").attr("x",ge().state.padding).attr("y",ge().state.padding).attr("width",n.width+2*ge().state.padding).attr("height",n.height+2*ge().state.padding).attr("rx",ge().state.radius),r},"drawSimpleState"),het=o((t,e)=>{let r=o(function(p,m,g){let y=p.append("tspan").attr("x",2*ge().state.padding).text(m);g||y.attr("dy",ge().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*ge().state.padding).attr("y",ge().state.textHeight+1.3*ge().state.padding).attr("font-size",ge().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),a=i.height,s=t.append("text").attr("x",ge().state.padding).attr("y",a+ge().state.padding*.4+ge().state.dividerMargin+ge().state.textHeight).attr("class","state-description"),l=!0,u=!0;e.descriptions.forEach(function(p){l||(r(s,p,u),u=!1),l=!1});let h=t.append("line").attr("x1",ge().state.padding).attr("y1",ge().state.padding+a+ge().state.dividerMargin/2).attr("y2",ge().state.padding+a+ge().state.dividerMargin/2).attr("class","descr-divider"),f=s.node().getBBox(),d=Math.max(f.width,i.width);return h.attr("x2",d+3*ge().state.padding),t.insert("rect",":first-child").attr("x",ge().state.padding).attr("y",ge().state.padding).attr("width",d+2*ge().state.padding).attr("height",f.height+a+2*ge().state.padding).attr("rx",ge().state.radius),t},"drawDescrState"),Lve=o((t,e,r)=>{let n=ge().state.padding,i=2*ge().state.padding,a=t.node().getBBox(),s=a.width,l=a.x,u=t.append("text").attr("x",0).attr("y",ge().state.titleShift).attr("font-size",ge().state.fontSize).attr("class","state-title").text(e.id),f=u.node().getBBox().width+i,d=Math.max(f,s);d===s&&(d=d+i);let p,m=t.node().getBBox();e.doc,p=l-n,f>s&&(p=(s-d)/2+n),Math.abs(l-m.x)s&&(p=l-(f-s)/2);let g=1-ge().state.textHeight;return t.insert("rect",":first-child").attr("x",p).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",d).attr("height",m.height+ge().state.textHeight+ge().state.titleShift+1).attr("rx","0"),u.attr("x",p+n),f<=s&&u.attr("x",l+(d-i)/2-f/2+n),t.insert("rect",":first-child").attr("x",p).attr("y",ge().state.titleShift-ge().state.textHeight-ge().state.padding).attr("width",d).attr("height",ge().state.textHeight*3).attr("rx",ge().state.radius),t.insert("rect",":first-child").attr("x",p).attr("y",ge().state.titleShift-ge().state.textHeight-ge().state.padding).attr("width",d).attr("height",m.height+3+2*ge().state.textHeight).attr("rx",ge().state.radius),t},"addTitleAndBox"),fet=o(t=>(t.append("circle").attr("class","end-state-outer").attr("r",ge().state.sizeUnit+ge().state.miniPadding).attr("cx",ge().state.padding+ge().state.sizeUnit+ge().state.miniPadding).attr("cy",ge().state.padding+ge().state.sizeUnit+ge().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",ge().state.sizeUnit).attr("cx",ge().state.padding+ge().state.sizeUnit+2).attr("cy",ge().state.padding+ge().state.sizeUnit+2)),"drawEndState"),det=o((t,e)=>{let r=ge().state.forkWidth,n=ge().state.forkHeight;if(e.parentId){let i=r;r=n,n=i}return t.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",n).attr("x",ge().state.padding).attr("y",ge().state.padding)},"drawForkJoinState"),pet=o((t,e,r,n)=>{let i=0,a=n.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=t.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");let l=s.split(tt.lineBreakRegex),u=1.25*ge().state.noteMargin;for(let h of l){let f=h.trim();if(f.length>0){let d=a.append("tspan");if(d.text(f),u===0){let p=d.node().getBBox();u+=p.height}i+=u,d.attr("x",e+ge().state.noteMargin),d.attr("y",r+i+1.25*ge().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),met=o((t,e)=>{e.attr("class","state-note");let r=e.append("rect").attr("x",0).attr("y",ge().state.padding),n=e.append("g"),{textWidth:i,textHeight:a}=pet(t,0,0,n);return r.attr("height",a+2*ge().state.noteMargin),r.attr("width",i+ge().state.noteMargin*2),r},"drawNote"),A$=o(function(t,e){let r=e.id,n={id:r,label:e.id,width:0,height:0},i=t.append("g").attr("id",r).attr("class","stateGroup");e.type==="start"&&oet(i),e.type==="end"&&fet(i),(e.type==="fork"||e.type==="join")&&det(i,e),e.type==="note"&&met(e.note.text,i),e.type==="divider"&&cet(i),e.type==="default"&&e.descriptions.length===0&&uet(i,e),e.type==="default"&&e.descriptions.length>0&&het(i,e);let a=i.node().getBBox();return n.width=a.width+2*ge().state.padding,n.height=a.height+2*ge().state.padding,n},"drawState"),Dve=0,Rve=o(function(t,e,r){let n=o(function(u){switch(u){case al.relationType.AGGREGATION:return"aggregation";case al.relationType.EXTENSION:return"extension";case al.relationType.COMPOSITION:return"composition";case al.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(u=>!Number.isNaN(u.y));let i=e.points,a=Cl().x(function(u){return u.x}).y(function(u){return u.y}).curve(No),s=t.append("path").attr("d",a(i)).attr("id","edge"+Dve).attr("class","transition"),l="";if(ge().state.arrowMarkerAbsolute&&(l=md(!0)),s.attr("marker-end","url("+l+"#"+n(al.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let u=t.append("g").attr("class","stateLabel"),{x:h,y:f}=qt.calcLabelPosition(e.points),d=tt.getRows(r.title),p=0,m=[],g=0,y=0;for(let b=0;b<=d.length;b++){let T=u.append("text").attr("text-anchor","middle").text(d[b]).attr("x",h).attr("y",f+p),S=T.node().getBBox();g=Math.max(g,S.width),y=Math.min(y,S.x),X.info(S.x,h,f+p),p===0&&(p=T.node().getBBox().height,X.info("Title height",p,f)),m.push(T)}let v=p*d.length;if(d.length>1){let b=(d.length-1)*p*.5;m.forEach((T,S)=>T.attr("y",f+S*p-b)),v=p*d.length}let x=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",h-g/2-ge().state.padding/2).attr("y",f-v/2-ge().state.padding/2-3.5).attr("width",g+ge().state.padding).attr("height",v+ge().state.padding),X.info(x)}Dve++},"drawEdge")});var bo,_$,get,yet,vet,xet,Mve,Ive,Ove=N(()=>{"use strict";yr();hN();qo();pt();gr();Nve();Xt();Ei();_$={},get=o(function(){},"setConf"),yet=o(function(t){t.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),vet=o(function(t,e,r,n){bo=ge().state;let i=ge().securityLevel,a;i==="sandbox"&&(a=qe("#i"+e));let s=i==="sandbox"?qe(a.nodes()[0].contentDocument.body):qe("body"),l=i==="sandbox"?a.nodes()[0].contentDocument:document;X.debug("Rendering diagram "+t);let u=s.select(`[id='${e}']`);yet(u);let h=n.db.getRootDoc();Mve(h,u,void 0,!1,s,l,n);let f=bo.padding,d=u.node().getBBox(),p=d.width+f*2,m=d.height+f*2,g=p*1.75;mn(u,m,g,bo.useMaxWidth),u.attr("viewBox",`${d.x-bo.padding} ${d.y-bo.padding} `+p+" "+m)},"draw"),xet=o(t=>t?t.length*bo.fontSizeFactor:1,"getLabelWidth"),Mve=o((t,e,r,n,i,a,s)=>{let l=new cn({compound:!0,multigraph:!0}),u,h=!0;for(u=0;u{let w=S.parentElement,k=0,A=0;w&&(w.parentElement&&(k=w.parentElement.getBBox().width),A=parseInt(w.getAttribute("data-x-shift"),10),Number.isNaN(A)&&(A=0)),S.setAttribute("x1",0-A+8),S.setAttribute("x2",k-A-8)})):X.debug("No Node "+b+": "+JSON.stringify(l.node(b)))});let v=y.getBBox();l.edges().forEach(function(b){b!==void 0&&l.edge(b)!==void 0&&(X.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(l.edge(b))),Rve(e,l.edge(b),l.edge(b).relation))}),v=y.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=v.width+2*bo.padding,x.height=v.height+2*bo.padding,X.debug("Doc rendered",x,l),x},"renderDoc"),Ive={setConf:get,draw:vet}});var Pve={};dr(Pve,{diagram:()=>bet});var bet,Bve=N(()=>{"use strict";h$();gC();C$();Ove();bet={parser:oC,get db(){return new al(1)},renderer:Ive,styles:yC,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var zve={};dr(zve,{diagram:()=>Eet});var Eet,Gve=N(()=>{"use strict";h$();gC();C$();S$();Eet={parser:oC,get db(){return new al(2)},renderer:Sve,styles:yC,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var D$,Hve,qve=N(()=>{"use strict";D$=(function(){var t=o(function(d,p,m,g){for(m=m||{},g=d.length;g--;m[d[g]]=p);return m},"o"),e=[6,8,10,11,12,14,16,17,18],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,14],u={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:o(function(p,m,g,y,v,x,b){var T=x.length-1;switch(v){case 1:return x[T-1];case 2:this.$=[];break;case 3:x[T-1].push(x[T]),this.$=x[T-1];break;case 4:case 5:this.$=x[T];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(x[T].substr(6)),this.$=x[T].substr(6);break;case 9:this.$=x[T].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=x[T].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(x[T].substr(8)),this.$=x[T].substr(8);break;case 13:y.addTask(x[T-1],x[T]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:o(function(p,m){if(m.recoverable)this.trace(p);else{var g=new Error(p);throw g.hash=m,g}},"parseError"),parse:o(function(p){var m=this,g=[0],y=[],v=[null],x=[],b=this.table,T="",S=0,w=0,k=0,A=2,C=1,R=x.slice.call(arguments,1),I=Object.create(this.lexer),L={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(L.yy[E]=this.yy[E]);I.setInput(p,L.yy),L.yy.lexer=I,L.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var D=I.yylloc;x.push(D);var _=I.options&&I.options.ranges;typeof L.yy.parseError=="function"?this.parseError=L.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function O(re){g.length=g.length-2*re,v.length=v.length-re,x.length=x.length-re}o(O,"popStack");function M(){var re;return re=y.pop()||I.lex()||C,typeof re!="number"&&(re instanceof Array&&(y=re,re=y.pop()),re=m.symbols_[re]||re),re}o(M,"lex");for(var P,B,F,G,$,U,j={},te,Y,oe,J;;){if(F=g[g.length-1],this.defaultActions[F]?G=this.defaultActions[F]:((P===null||typeof P>"u")&&(P=M()),G=b[F]&&b[F][P]),typeof G>"u"||!G.length||!G[0]){var ue="";J=[];for(te in b[F])this.terminals_[te]&&te>A&&J.push("'"+this.terminals_[te]+"'");I.showPosition?ue="Parse error on line "+(S+1)+`: `+I.showPosition()+` -Expecting `+le.join(", ")+", got '"+(this.terminals_[B]||B)+"'":he="Parse error on line "+(C+1)+": Unexpected "+(B==S?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(he,{text:I.match,token:this.terminals_[B]||B,line:I.yylineno,loc:L,expected:le})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+P+", token: "+B);switch(z[0]){case 1:g.push(B),v.push(I.yytext),x.push(I.yylloc),g.push(z[1]),B=null,F?(B=F,F=null):(T=I.yyleng,w=I.yytext,C=I.yylineno,L=I.yylloc,E>0&&E--);break;case 2:if(ie=this.productions_[z[1]][1],Q.$=v[v.length-ie],Q._$={first_line:x[x.length-(ie||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(ie||1)].first_column,last_column:x[x.length-1].last_column},R&&(Q._$.range=[x[x.length-(ie||1)].range[0],x[x.length-1].range[1]]),H=this.performAction.apply(Q,[w,T,C,D.yy,z[1],v,x].concat(_)),typeof H<"u")return H;ie&&(g=g.slice(0,-1*ie*2),v=v.slice(0,-1*ie),x=x.slice(0,-1*ie)),g.push(this.productions_[z[1]][0]),v.push(Q.$),x.push(Q._$),ne=b[g[g.length-2]][g[g.length-1]],g.push(ne);break;case 3:return!0}}return!0},"parse")},h=function(){var d={EOF:1,parseError:o(function(m,g){if(this.yy.parser)this.yy.parser.parseError(m,g);else throw new Error(m)},"parseError"),setInput:o(function(p,m){return this.yy=m||this.yy||{},this._input=p,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var m=p.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:o(function(p){var m=p.length,g=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var v=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===y.length?this.yylloc.first_column:0)+y[y.length-g.length].length-g[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +Expecting `+J.join(", ")+", got '"+(this.terminals_[P]||P)+"'":ue="Parse error on line "+(S+1)+": Unexpected "+(P==C?"end of input":"'"+(this.terminals_[P]||P)+"'"),this.parseError(ue,{text:I.match,token:this.terminals_[P]||P,line:I.yylineno,loc:D,expected:J})}if(G[0]instanceof Array&&G.length>1)throw new Error("Parse Error: multiple actions possible at state: "+F+", token: "+P);switch(G[0]){case 1:g.push(P),v.push(I.yytext),x.push(I.yylloc),g.push(G[1]),P=null,B?(P=B,B=null):(w=I.yyleng,T=I.yytext,S=I.yylineno,D=I.yylloc,k>0&&k--);break;case 2:if(Y=this.productions_[G[1]][1],j.$=v[v.length-Y],j._$={first_line:x[x.length-(Y||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(Y||1)].first_column,last_column:x[x.length-1].last_column},_&&(j._$.range=[x[x.length-(Y||1)].range[0],x[x.length-1].range[1]]),U=this.performAction.apply(j,[T,w,S,L.yy,G[1],v,x].concat(R)),typeof U<"u")return U;Y&&(g=g.slice(0,-1*Y*2),v=v.slice(0,-1*Y),x=x.slice(0,-1*Y)),g.push(this.productions_[G[1]][0]),v.push(j.$),x.push(j._$),oe=b[g[g.length-2]][g[g.length-1]],g.push(oe);break;case 3:return!0}}return!0},"parse")},h=(function(){var d={EOF:1,parseError:o(function(m,g){if(this.yy.parser)this.yy.parser.parseError(m,g);else throw new Error(m)},"parseError"),setInput:o(function(p,m){return this.yy=m||this.yy||{},this._input=p,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var m=p.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:o(function(p){var m=p.length,g=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var v=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===y.length?this.yylloc.first_column:0)+y[y.length-g.length].length-g[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(p){this.unput(this.match.slice(p))},"less"),pastInput:o(function(){var p=this.matched.substr(0,this.matched.length-this.match.length);return(p.length>20?"...":"")+p.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var p=this.match;return p.length<20&&(p+=this._input.substr(0,20-p.length)),(p.substr(0,20)+(p.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var p=this.pastInput(),m=new Array(p.length+1).join("-");return p+this.upcomingInput()+` `+m+"^"},"showPosition"),test_match:o(function(p,m){var g,y,v;if(this.options.backtrack_lexer&&(v={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(v.yylloc.range=this.yylloc.range.slice(0))),y=p[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+p[0].length},this.yytext+=p[0],this.match+=p[0],this.matches=p,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(p[0].length),this.matched+=p[0],g=this.performAction.call(this,this.yy,this,m,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var x in v)this[x]=v[x];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var p,m,g,y;this._more||(this.yytext="",this.match="");for(var v=this._currentRules(),x=0;xm[0].length)){if(m=g,y=x,this.options.backtrack_lexer){if(p=this.test_match(g,v[x]),p!==!1)return p;if(this._backtrack){m=!1;continue}else return!1}else if(!this.options.flex)break}return m?(p=this.test_match(m,v[y]),p!==!1?p:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var m=this.next();return m||this.lex()},"lex"),begin:o(function(m){this.conditionStack.push(m)},"begin"),popState:o(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:o(function(m){this.begin(m)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(m,g,y,v){var x=v;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return d}();u.lexer=h;function f(){this.yy={}}return o(f,"Parser"),f.prototype=u,u.Parser=f,new f}();sP.parser=sP;Lde=sP});var M1,oP,Sb,Cb,BUe,FUe,$Ue,zUe,GUe,VUe,UUe,Nde,HUe,lP,Mde=N(()=>{"use strict";zt();mi();M1="",oP=[],Sb=[],Cb=[],BUe=o(function(){oP.length=0,Sb.length=0,M1="",Cb.length=0,Ar()},"clear"),FUe=o(function(t){M1=t,oP.push(t)},"addSection"),$Ue=o(function(){return oP},"getSections"),zUe=o(function(){let t=Nde(),e=100,r=0;for(;!t&&r{r.people&&t.push(...r.people)}),[...new Set(t)].sort()},"updateActors"),VUe=o(function(t,e){let r=e.substr(1).split(":"),n=0,i=[];r.length===1?(n=Number(r[0]),i=[]):(n=Number(r[0]),i=r[1].split(","));let a=i.map(l=>l.trim()),s={section:M1,type:M1,people:a,task:t,score:n};Cb.push(s)},"addTask"),UUe=o(function(t){let e={section:M1,type:M1,description:t,task:t,classes:[]};Sb.push(e)},"addTaskOrg"),Nde=o(function(){let t=o(function(r){return Cb[r].processed},"compileTask"),e=!0;for(let[r,n]of Cb.entries())t(r),e=e&&n.processed;return e},"compileTasks"),HUe=o(function(){return GUe()},"getActors"),lP={getConfig:o(()=>me().journey,"getConfig"),clear:BUe,setDiagramTitle:$r,getDiagramTitle:Ir,setAccTitle:Lr,getAccTitle:Rr,setAccDescription:Nr,getAccDescription:Mr,addSection:FUe,getSections:$Ue,getTasks:zUe,addTask:VUe,addTaskOrg:UUe,getActors:HUe}});var WUe,Ide,Ode=N(()=>{"use strict";WUe=o(t=>`.label { +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var m=this.next();return m||this.lex()},"lex"),begin:o(function(m){this.conditionStack.push(m)},"begin"),popState:o(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:o(function(m){this.begin(m)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(m,g,y,v){var x=v;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return d})();u.lexer=h;function f(){this.yy={}}return o(f,"Parser"),f.prototype=u,u.Parser=f,new f})();D$.parser=D$;Hve=D$});var cy,L$,S4,C4,Det,Let,Ret,Net,Met,Iet,Oet,Wve,Pet,R$,Yve=N(()=>{"use strict";Xt();ci();cy="",L$=[],S4=[],C4=[],Det=o(function(){L$.length=0,S4.length=0,cy="",C4.length=0,Sr()},"clear"),Let=o(function(t){cy=t,L$.push(t)},"addSection"),Ret=o(function(){return L$},"getSections"),Net=o(function(){let t=Wve(),e=100,r=0;for(;!t&&r{r.people&&t.push(...r.people)}),[...new Set(t)].sort()},"updateActors"),Iet=o(function(t,e){let r=e.substr(1).split(":"),n=0,i=[];r.length===1?(n=Number(r[0]),i=[]):(n=Number(r[0]),i=r[1].split(","));let a=i.map(l=>l.trim()),s={section:cy,type:cy,people:a,task:t,score:n};C4.push(s)},"addTask"),Oet=o(function(t){let e={section:cy,type:cy,description:t,task:t,classes:[]};S4.push(e)},"addTaskOrg"),Wve=o(function(){let t=o(function(r){return C4[r].processed},"compileTask"),e=!0;for(let[r,n]of C4.entries())t(r),e=e&&n.processed;return e},"compileTasks"),Pet=o(function(){return Met()},"getActors"),R$={getConfig:o(()=>ge().journey,"getConfig"),clear:Det,setDiagramTitle:$r,getDiagramTitle:Pr,setAccTitle:Rr,getAccTitle:Mr,setAccDescription:Ir,getAccDescription:Or,addSection:Let,getSections:Ret,getTasks:Net,addTask:Iet,addTaskOrg:Oet,getActors:Pet}});var Bet,Xve,jve=N(()=>{"use strict";yg();Bet=o(t=>`.label { font-family: ${t.fontFamily}; color: ${t.textColor}; } @@ -1878,12 +2290,13 @@ Expecting `+le.join(", ")+", got '"+(this.terminals_[B]||B)+"'":he="Parse error .actor-5 { ${t.actor5?`fill: ${t.actor5}`:""}; } -`,"getStyles"),Ide=WUe});var cP,qUe,Bde,Fde,YUe,XUe,Pde,jUe,KUe,$de,QUe,I1,zde=N(()=>{"use strict";dr();Wv();cP=o(function(t,e){return kd(t,e)},"drawRect"),qUe=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=bl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=bl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),Bde=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),Fde=o(function(t,e){return Nq(t,e)},"drawText"),YUe=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,Fde(t,e)},"drawLabel"),XUe=o(function(t,e,r){let n=t.append("g"),i=Tl();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width*e.taskCount+r.diagramMarginX*(e.taskCount-1),i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,cP(n,i),$de(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),Pde=-1,jUe=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");Pde++;let a=300+5*30;i.append("line").attr("id","task"+Pde).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",a).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),qUe(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=Tl();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,cP(i,s);let l=e.x+14;e.people.forEach(u=>{let h=e.actors[u].color,f={cx:l,cy:e.y,r:7,fill:h,stroke:"#000",title:u,pos:e.actors[u].position};Bde(i,f),l+=10}),$de(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),KUe=o(function(t,e){q5(t,e)},"drawBackgroundRect"),$de=function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{let i=ju[n].color,a={cx:20,cy:r,r:7,fill:i,stroke:"#000",pos:ju[n].position};I1.drawCircle(t,a);let s={x:40,y:r+7,fill:"#666",text:n,textMargin:e.boxTextMargin|5};I1.drawText(t,s),r+=20})}var ZUe,ju,q6,Np,eHe,Zo,uP,Gde,tHe,hP,Vde=N(()=>{"use strict";dr();zde();zt();Ei();ZUe=o(function(t){Object.keys(t).forEach(function(r){q6[r]=t[r]})},"setConf"),ju={};o(JUe,"drawActorLegend");q6=me().journey,Np=q6.leftMargin,eHe=o(function(t,e,r,n){let i=me().journey,a=me().securityLevel,s;a==="sandbox"&&(s=Ge("#i"+e));let l=a==="sandbox"?Ge(s.nodes()[0].contentDocument.body):Ge("body");Zo.init();let u=l.select("#"+e);I1.initGraphics(u);let h=n.db.getTasks(),f=n.db.getDiagramTitle(),d=n.db.getActors();for(let x in ju)delete ju[x];let p=0;d.forEach(x=>{ju[x]={color:i.actorColours[p%i.actorColours.length],position:p},p++}),JUe(u),Zo.insert(0,0,Np,Object.keys(ju).length*50),tHe(u,h,0);let m=Zo.getBounds();f&&u.append("text").text(f).attr("x",Np).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);let g=m.stopy-m.starty+2*i.diagramMarginY,y=Np+m.stopx+2*i.diagramMarginX;vn(u,g,y,i.useMaxWidth),u.append("line").attr("x1",Np).attr("y1",i.height*4).attr("x2",y-Np-4).attr("y2",i.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");let v=f?70:0;u.attr("viewBox",`${m.startx} -25 ${y} ${g+v}`),u.attr("preserveAspectRatio","xMinYMin meet"),u.attr("height",g+v+25)},"draw"),Zo={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:o(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=me().journey,a=this,s=0;function l(u){return o(function(f){s++;let d=a.sequenceItems.length-s+1;a.updateVal(f,"starty",e-d*i.boxMargin,Math.min),a.updateVal(f,"stopy",n+d*i.boxMargin,Math.max),a.updateVal(Zo.data,"startx",t-d*i.boxMargin,Math.min),a.updateVal(Zo.data,"stopx",r+d*i.boxMargin,Math.max),u!=="activation"&&(a.updateVal(f,"startx",t-d*i.boxMargin,Math.min),a.updateVal(f,"stopx",r+d*i.boxMargin,Math.max),a.updateVal(Zo.data,"starty",e-d*i.boxMargin,Math.min),a.updateVal(Zo.data,"stopy",n+d*i.boxMargin,Math.max))},"updateItemBounds")}o(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:o(function(t,e,r,n){let i=Math.min(t,r),a=Math.max(t,r),s=Math.min(e,n),l=Math.max(e,n);this.updateVal(Zo.data,"startx",i,Math.min),this.updateVal(Zo.data,"starty",s,Math.min),this.updateVal(Zo.data,"stopx",a,Math.max),this.updateVal(Zo.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return this.data},"getBounds")},uP=q6.sectionFills,Gde=q6.sectionColours,tHe=o(function(t,e,r){let n=me().journey,i="",a=n.height*2+n.diagramMarginY,s=r+a,l=0,u="#CCC",h="black",f=0;for(let[d,p]of e.entries()){if(i!==p.section){u=uP[l%uP.length],f=l%uP.length,h=Gde[l%Gde.length];let g=0,y=p.section;for(let x=d;x(ju[y]&&(g[y]=ju[y]),g),{});p.x=d*n.taskMargin+d*n.width+Np,p.y=s,p.width=n.diagramMarginX,p.height=n.diagramMarginY,p.colour=h,p.fill=u,p.num=f,p.actors=m,I1.drawTask(t,p,n),Zo.insert(p.x,p.y,p.x+p.width+n.taskMargin,300+5*30)}},"drawTasks"),hP={setConf:ZUe,draw:eHe}});var Ude={};hr(Ude,{diagram:()=>rHe});var rHe,Hde=N(()=>{"use strict";Rde();Mde();Ode();Vde();rHe={parser:Lde,db:lP,renderer:hP,styles:Ide,init:o(t=>{hP.setConf(t.journey),lP.clear()},"init")}});var dP,Qde,Zde=N(()=>{"use strict";dP=function(){var t=o(function(p,m,g,y){for(g=g||{},y=p.length;y--;g[p[y]]=m);return g},"o"),e=[6,8,10,11,12,14,16,17,20,21],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,16],u=[1,17],h={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:o(function(m,g,y,v,x,b,w){var C=b.length-1;switch(x){case 1:return b[C-1];case 2:this.$=[];break;case 3:b[C-1].push(b[C]),this.$=b[C-1];break;case 4:case 5:this.$=b[C];break;case 6:case 7:this.$=[];break;case 8:v.getCommonDb().setDiagramTitle(b[C].substr(6)),this.$=b[C].substr(6);break;case 9:this.$=b[C].trim(),v.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=b[C].trim(),v.getCommonDb().setAccDescription(this.$);break;case 12:v.addSection(b[C].substr(8)),this.$=b[C].substr(8);break;case 15:v.addTask(b[C],0,""),this.$=b[C];break;case 16:v.addEvent(b[C].substr(2)),this.$=b[C];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,19]},{15:[1,20]},t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,4]),t(e,[2,9]),t(e,[2,10])],defaultActions:{},parseError:o(function(m,g){if(g.recoverable)this.trace(m);else{var y=new Error(m);throw y.hash=g,y}},"parseError"),parse:o(function(m){var g=this,y=[0],v=[],x=[null],b=[],w=this.table,C="",T=0,E=0,A=0,S=2,_=1,I=b.slice.call(arguments,1),D=Object.create(this.lexer),k={yy:{}};for(var L in this.yy)Object.prototype.hasOwnProperty.call(this.yy,L)&&(k.yy[L]=this.yy[L]);D.setInput(m,k.yy),k.yy.lexer=D,k.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var R=D.yylloc;b.push(R);var O=D.options&&D.options.ranges;typeof k.yy.parseError=="function"?this.parseError=k.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function M(X){y.length=y.length-2*X,x.length=x.length-X,b.length=b.length-X}o(M,"popStack");function B(){var X;return X=v.pop()||D.lex()||_,typeof X!="number"&&(X instanceof Array&&(v=X,X=v.pop()),X=g.symbols_[X]||X),X}o(B,"lex");for(var F,P,z,$,H,Q,j={},ie,ne,le,he;;){if(z=y[y.length-1],this.defaultActions[z]?$=this.defaultActions[z]:((F===null||typeof F>"u")&&(F=B()),$=w[z]&&w[z][F]),typeof $>"u"||!$.length||!$[0]){var K="";he=[];for(ie in w[z])this.terminals_[ie]&&ie>S&&he.push("'"+this.terminals_[ie]+"'");D.showPosition?K="Parse error on line "+(T+1)+`: -`+D.showPosition()+` -Expecting `+he.join(", ")+", got '"+(this.terminals_[F]||F)+"'":K="Parse error on line "+(T+1)+": Unexpected "+(F==_?"end of input":"'"+(this.terminals_[F]||F)+"'"),this.parseError(K,{text:D.match,token:this.terminals_[F]||F,line:D.yylineno,loc:R,expected:he})}if($[0]instanceof Array&&$.length>1)throw new Error("Parse Error: multiple actions possible at state: "+z+", token: "+F);switch($[0]){case 1:y.push(F),x.push(D.yytext),b.push(D.yylloc),y.push($[1]),F=null,P?(F=P,P=null):(E=D.yyleng,C=D.yytext,T=D.yylineno,R=D.yylloc,A>0&&A--);break;case 2:if(ne=this.productions_[$[1]][1],j.$=x[x.length-ne],j._$={first_line:b[b.length-(ne||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(ne||1)].first_column,last_column:b[b.length-1].last_column},O&&(j._$.range=[b[b.length-(ne||1)].range[0],b[b.length-1].range[1]]),Q=this.performAction.apply(j,[C,E,T,k.yy,$[1],x,b].concat(I)),typeof Q<"u")return Q;ne&&(y=y.slice(0,-1*ne*2),x=x.slice(0,-1*ne),b=b.slice(0,-1*ne)),y.push(this.productions_[$[1]][0]),x.push(j.$),b.push(j._$),le=w[y[y.length-2]][y[y.length-1]],y.push(le);break;case 3:return!0}}return!0},"parse")},f=function(){var p={EOF:1,parseError:o(function(g,y){if(this.yy.parser)this.yy.parser.parseError(g,y);else throw new Error(g)},"parseError"),setInput:o(function(m,g){return this.yy=g||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var g=m.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:o(function(m){var g=m.length,y=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var v=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),y.length-1&&(this.yylineno-=y.length-1);var x=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:y?(y.length===v.length?this.yylloc.first_column:0)+v[v.length-y.length].length-y[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). + ${zc()} +`,"getStyles"),Xve=Bet});var N$,Fet,Qve,Zve,$et,zet,Kve,Get,Vet,Jve,Uet,uy,e2e=N(()=>{"use strict";yr();r2();N$=o(function(t,e){return Fd(t,e)},"drawRect"),Fet=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=Sl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=Sl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),Qve=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),Zve=o(function(t,e){return bj(t,e)},"drawText"),$et=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,Zve(t,e)},"drawLabel"),zet=o(function(t,e,r){let n=t.append("g"),i=ua();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width*e.taskCount+r.diagramMarginX*(e.taskCount-1),i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,N$(n,i),Jve(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),Kve=-1,Get=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");Kve++,i.append("line").attr("id","task"+Kve).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),Fet(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=ua();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,N$(i,s);let l=e.x+14;e.people.forEach(u=>{let h=e.actors[u].color,f={cx:l,cy:e.y,r:7,fill:h,stroke:"#000",title:u,pos:e.actors[u].position};Qve(i,f),l+=10}),Jve(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),Vet=o(function(t,e){sT(t,e)},"drawBackgroundRect"),Jve=(function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{let a=lh[i].color,s={cx:20,cy:n,r:7,fill:a,stroke:"#000",pos:lh[i].position};uy.drawCircle(t,s);let l=t.append("text").attr("visibility","hidden").text(i),u=l.node().getBoundingClientRect().width;l.remove();let h=[];if(u<=r)h=[i];else{let f=i.split(" "),d="";l=t.append("text").attr("visibility","hidden"),f.forEach(p=>{let m=d?`${d} ${p}`:p;if(l.text(m),l.node().getBoundingClientRect().width>r){if(d&&h.push(d),d=p,l.text(p),l.node().getBoundingClientRect().width>r){let y="";for(let v of p)y+=v,l.text(y+"-"),l.node().getBoundingClientRect().width>r&&(h.push(y.slice(0,-1)+"-"),y=v);d=y}}else d=m}),d&&h.push(d),l.remove()}h.forEach((f,d)=>{let p={x:40,y:n+7+d*20,fill:"#666",text:f,textMargin:e.boxTextMargin??5},g=uy.drawText(t,p).node().getBoundingClientRect().width;g>vC&&g>e.leftMargin-g&&(vC=g)}),n+=Math.max(20,h.length*20)})}var Het,lh,vC,Hl,Jf,Wet,sl,M$,t2e,Yet,I$,r2e=N(()=>{"use strict";yr();e2e();Xt();Ei();Het=o(function(t){Object.keys(t).forEach(function(r){Hl[r]=t[r]})},"setConf"),lh={},vC=0;o(qet,"drawActorLegend");Hl=ge().journey,Jf=0,Wet=o(function(t,e,r,n){let i=ge(),a=i.journey.titleColor,s=i.journey.titleFontSize,l=i.journey.titleFontFamily,u=i.securityLevel,h;u==="sandbox"&&(h=qe("#i"+e));let f=u==="sandbox"?qe(h.nodes()[0].contentDocument.body):qe("body");sl.init();let d=f.select("#"+e);uy.initGraphics(d);let p=n.db.getTasks(),m=n.db.getDiagramTitle(),g=n.db.getActors();for(let S in lh)delete lh[S];let y=0;g.forEach(S=>{lh[S]={color:Hl.actorColours[y%Hl.actorColours.length],position:y},y++}),qet(d),Jf=Hl.leftMargin+vC,sl.insert(0,0,Jf,Object.keys(lh).length*50),Yet(d,p,0);let v=sl.getBounds();m&&d.append("text").text(m).attr("x",Jf).attr("font-size",s).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",l);let x=v.stopy-v.starty+2*Hl.diagramMarginY,b=Jf+v.stopx+2*Hl.diagramMarginX;mn(d,x,b,Hl.useMaxWidth),d.append("line").attr("x1",Jf).attr("y1",Hl.height*4).attr("x2",b-Jf-4).attr("y2",Hl.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");let T=m?70:0;d.attr("viewBox",`${v.startx} -25 ${b} ${x+T}`),d.attr("preserveAspectRatio","xMinYMin meet"),d.attr("height",x+T+25)},"draw"),sl={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:o(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=ge().journey,a=this,s=0;function l(u){return o(function(f){s++;let d=a.sequenceItems.length-s+1;a.updateVal(f,"starty",e-d*i.boxMargin,Math.min),a.updateVal(f,"stopy",n+d*i.boxMargin,Math.max),a.updateVal(sl.data,"startx",t-d*i.boxMargin,Math.min),a.updateVal(sl.data,"stopx",r+d*i.boxMargin,Math.max),u!=="activation"&&(a.updateVal(f,"startx",t-d*i.boxMargin,Math.min),a.updateVal(f,"stopx",r+d*i.boxMargin,Math.max),a.updateVal(sl.data,"starty",e-d*i.boxMargin,Math.min),a.updateVal(sl.data,"stopy",n+d*i.boxMargin,Math.max))},"updateItemBounds")}o(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:o(function(t,e,r,n){let i=Math.min(t,r),a=Math.max(t,r),s=Math.min(e,n),l=Math.max(e,n);this.updateVal(sl.data,"startx",i,Math.min),this.updateVal(sl.data,"starty",s,Math.min),this.updateVal(sl.data,"stopx",a,Math.max),this.updateVal(sl.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return this.data},"getBounds")},M$=Hl.sectionFills,t2e=Hl.sectionColours,Yet=o(function(t,e,r){let n=ge().journey,i="",a=n.height*2+n.diagramMarginY,s=r+a,l=0,u="#CCC",h="black",f=0;for(let[d,p]of e.entries()){if(i!==p.section){u=M$[l%M$.length],f=l%M$.length,h=t2e[l%t2e.length];let g=0,y=p.section;for(let x=d;x(lh[y]&&(g[y]=lh[y]),g),{});p.x=d*n.taskMargin+d*n.width+Jf,p.y=s,p.width=n.diagramMarginX,p.height=n.diagramMarginY,p.colour=h,p.fill=u,p.num=f,p.actors=m,uy.drawTask(t,p,n),sl.insert(p.x,p.y,p.x+p.width+n.taskMargin,450)}},"drawTasks"),I$={setConf:Het,draw:Wet}});var n2e={};dr(n2e,{diagram:()=>Xet});var Xet,i2e=N(()=>{"use strict";qve();Yve();jve();r2e();Xet={parser:Hve,db:R$,renderer:I$,styles:Xve,init:o(t=>{I$.setConf(t.journey),R$.clear()},"init")}});var P$,h2e,f2e=N(()=>{"use strict";P$=(function(){var t=o(function(p,m,g,y){for(g=g||{},y=p.length;y--;g[p[y]]=m);return g},"o"),e=[6,8,10,11,12,14,16,17,20,21],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,16],u=[1,17],h={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:o(function(m,g,y,v,x,b,T){var S=b.length-1;switch(x){case 1:return b[S-1];case 2:this.$=[];break;case 3:b[S-1].push(b[S]),this.$=b[S-1];break;case 4:case 5:this.$=b[S];break;case 6:case 7:this.$=[];break;case 8:v.getCommonDb().setDiagramTitle(b[S].substr(6)),this.$=b[S].substr(6);break;case 9:this.$=b[S].trim(),v.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=b[S].trim(),v.getCommonDb().setAccDescription(this.$);break;case 12:v.addSection(b[S].substr(8)),this.$=b[S].substr(8);break;case 15:v.addTask(b[S],0,""),this.$=b[S];break;case 16:v.addEvent(b[S].substr(2)),this.$=b[S];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,19]},{15:[1,20]},t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,4]),t(e,[2,9]),t(e,[2,10])],defaultActions:{},parseError:o(function(m,g){if(g.recoverable)this.trace(m);else{var y=new Error(m);throw y.hash=g,y}},"parseError"),parse:o(function(m){var g=this,y=[0],v=[],x=[null],b=[],T=this.table,S="",w=0,k=0,A=0,C=2,R=1,I=b.slice.call(arguments,1),L=Object.create(this.lexer),E={yy:{}};for(var D in this.yy)Object.prototype.hasOwnProperty.call(this.yy,D)&&(E.yy[D]=this.yy[D]);L.setInput(m,E.yy),E.yy.lexer=L,E.yy.parser=this,typeof L.yylloc>"u"&&(L.yylloc={});var _=L.yylloc;b.push(_);var O=L.options&&L.options.ranges;typeof E.yy.parseError=="function"?this.parseError=E.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function M(ee){y.length=y.length-2*ee,x.length=x.length-ee,b.length=b.length-ee}o(M,"popStack");function P(){var ee;return ee=v.pop()||L.lex()||R,typeof ee!="number"&&(ee instanceof Array&&(v=ee,ee=v.pop()),ee=g.symbols_[ee]||ee),ee}o(P,"lex");for(var B,F,G,$,U,j,te={},Y,oe,J,ue;;){if(G=y[y.length-1],this.defaultActions[G]?$=this.defaultActions[G]:((B===null||typeof B>"u")&&(B=P()),$=T[G]&&T[G][B]),typeof $>"u"||!$.length||!$[0]){var re="";ue=[];for(Y in T[G])this.terminals_[Y]&&Y>C&&ue.push("'"+this.terminals_[Y]+"'");L.showPosition?re="Parse error on line "+(w+1)+`: +`+L.showPosition()+` +Expecting `+ue.join(", ")+", got '"+(this.terminals_[B]||B)+"'":re="Parse error on line "+(w+1)+": Unexpected "+(B==R?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(re,{text:L.match,token:this.terminals_[B]||B,line:L.yylineno,loc:_,expected:ue})}if($[0]instanceof Array&&$.length>1)throw new Error("Parse Error: multiple actions possible at state: "+G+", token: "+B);switch($[0]){case 1:y.push(B),x.push(L.yytext),b.push(L.yylloc),y.push($[1]),B=null,F?(B=F,F=null):(k=L.yyleng,S=L.yytext,w=L.yylineno,_=L.yylloc,A>0&&A--);break;case 2:if(oe=this.productions_[$[1]][1],te.$=x[x.length-oe],te._$={first_line:b[b.length-(oe||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(oe||1)].first_column,last_column:b[b.length-1].last_column},O&&(te._$.range=[b[b.length-(oe||1)].range[0],b[b.length-1].range[1]]),j=this.performAction.apply(te,[S,k,w,E.yy,$[1],x,b].concat(I)),typeof j<"u")return j;oe&&(y=y.slice(0,-1*oe*2),x=x.slice(0,-1*oe),b=b.slice(0,-1*oe)),y.push(this.productions_[$[1]][0]),x.push(te.$),b.push(te._$),J=T[y[y.length-2]][y[y.length-1]],y.push(J);break;case 3:return!0}}return!0},"parse")},f=(function(){var p={EOF:1,parseError:o(function(g,y){if(this.yy.parser)this.yy.parser.parseError(g,y);else throw new Error(g)},"parseError"),setInput:o(function(m,g){return this.yy=g||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var g=m.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:o(function(m){var g=m.length,y=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var v=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),y.length-1&&(this.yylineno-=y.length-1);var x=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:y?(y.length===v.length?this.yylloc.first_column:0)+v[v.length-y.length].length-y[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(m){this.unput(this.match.slice(m))},"less"),pastInput:o(function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var m=this.pastInput(),g=new Array(m.length+1).join("-");return m+this.upcomingInput()+` `+g+"^"},"showPosition"),test_match:o(function(m,g){var y,v,x;if(this.options.backtrack_lexer&&(x={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(x.yylloc.range=this.yylloc.range.slice(0))),v=m[0].match(/(?:\r\n?|\n).*/g),v&&(this.yylineno+=v.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:v?v[v.length-1].length-v[v.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+m[0].length},this.yytext+=m[0],this.match+=m[0],this.matches=m,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(m[0].length),this.matched+=m[0],y=this.performAction.call(this,this.yy,this,g,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),y)return y;if(this._backtrack){for(var b in x)this[b]=x[b];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var m,g,y,v;this._more||(this.yytext="",this.match="");for(var x=this._currentRules(),b=0;bg[0].length)){if(g=y,v=b,this.options.backtrack_lexer){if(m=this.test_match(y,x[b]),m!==!1)return m;if(this._backtrack){g=!1;continue}else return!1}else if(!this.options.flex)break}return g?(m=this.test_match(g,x[v]),m!==!1?m:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var g=this.next();return g||this.lex()},"lex"),begin:o(function(g){this.conditionStack.push(g)},"begin"),popState:o(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:o(function(g){this.begin(g)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(g,y,v,x){var b=x;switch(v){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s[^:\n]+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}};return p}();h.lexer=f;function d(){this.yy={}}return o(d,"Parser"),d.prototype=h,h.Parser=d,new d}();dP.parser=dP;Qde=dP});var mP={};hr(mP,{addEvent:()=>ope,addSection:()=>npe,addTask:()=>spe,addTaskOrg:()=>lpe,clear:()=>rpe,default:()=>hHe,getCommonDb:()=>tpe,getSections:()=>ipe,getTasks:()=>ape});var O1,epe,pP,Y6,P1,tpe,rpe,npe,ipe,ape,spe,ope,lpe,Jde,hHe,cpe=N(()=>{"use strict";mi();O1="",epe=0,pP=[],Y6=[],P1=[],tpe=o(()=>qy,"getCommonDb"),rpe=o(function(){pP.length=0,Y6.length=0,O1="",P1.length=0,Ar()},"clear"),npe=o(function(t){O1=t,pP.push(t)},"addSection"),ipe=o(function(){return pP},"getSections"),ape=o(function(){let t=Jde(),e=100,r=0;for(;!t&&rr.id===epe-1).events.push(t)},"addEvent"),lpe=o(function(t){let e={section:O1,type:O1,description:t,task:t,classes:[]};Y6.push(e)},"addTaskOrg"),Jde=o(function(){let t=o(function(r){return P1[r].processed},"compileTask"),e=!0;for(let[r,n]of P1.entries())t(r),e=e&&n.processed;return e},"compileTasks"),hHe={clear:rpe,getCommonDb:tpe,addSection:npe,getSections:ipe,getTasks:ape,addTask:spe,addTaskOrg:lpe,addEvent:ope}});function dpe(t,e){t.each(function(){var r=Ge(this),n=r.text().split(/(\s+|
    )/).reverse(),i,a=[],s=1.1,l=r.attr("y"),u=parseFloat(r.attr("dy")),h=r.text(null).append("tspan").attr("x",0).attr("y",l).attr("dy",u+"em");for(let f=0;fe||i==="
    ")&&(a.pop(),h.text(a.join(" ").trim()),i==="
    "?a=[""]:a=[i],h=r.append("tspan").attr("x",0).attr("y",l).attr("dy",s+"em").text(i))})}var fHe,X6,dHe,pHe,hpe,mHe,gHe,upe,yHe,vHe,xHe,gP,fpe,bHe,wHe,THe,kHe,bf,ppe=N(()=>{"use strict";dr();fHe=12,X6=o(function(t,e){let r=t.append("rect");return r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),r.attr("rx",e.rx),r.attr("ry",e.ry),e.class!==void 0&&r.attr("class",e.class),r},"drawRect"),dHe=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=bl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=bl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),pHe=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),hpe=o(function(t,e){let r=e.text.replace(//gi," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class!==void 0&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),mHe=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,hpe(t,e)},"drawLabel"),gHe=o(function(t,e,r){let n=t.append("g"),i=gP();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width,i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,X6(n,i),fpe(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),upe=-1,yHe=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");upe++;let a=300+5*30;i.append("line").attr("id","task"+upe).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",a).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),dHe(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=gP();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,X6(i,s),fpe(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),vHe=o(function(t,e){X6(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),xHe=o(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),gP=o(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),fpe=function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{"use strict";dr();ppe();vt();zt();Ei();EHe=o(function(t,e,r,n){let i=me(),a=i.leftMargin??50;Y.debug("timeline",n.db);let s=i.securityLevel,l;s==="sandbox"&&(l=Ge("#i"+e));let h=(s==="sandbox"?Ge(l.nodes()[0].contentDocument.body):Ge("body")).select("#"+e);h.append("g");let f=n.db.getTasks(),d=n.db.getCommonDb().getDiagramTitle();Y.debug("task",f),bf.initGraphics(h);let p=n.db.getSections();Y.debug("sections",p);let m=0,g=0,y=0,v=0,x=50+a,b=50;v=50;let w=0,C=!0;p.forEach(function(_){let I={number:w,descr:_,section:w,width:150,padding:20,maxHeight:m},D=bf.getVirtualNodeHeight(h,I,i);Y.debug("sectionHeight before draw",D),m=Math.max(m,D+20)});let T=0,E=0;Y.debug("tasks.length",f.length);for(let[_,I]of f.entries()){let D={number:_,descr:I,section:I.section,width:150,padding:20,maxHeight:g},k=bf.getVirtualNodeHeight(h,D,i);Y.debug("taskHeight before draw",k),g=Math.max(g,k+20),T=Math.max(T,I.events.length);let L=0;for(let R of I.events){let O={descr:R,section:I.section,number:I.section,width:150,padding:20,maxHeight:50};L+=bf.getVirtualNodeHeight(h,O,i)}E=Math.max(E,L)}Y.debug("maxSectionHeight before draw",m),Y.debug("maxTaskHeight before draw",g),p&&p.length>0?p.forEach(_=>{let I=f.filter(R=>R.section===_),D={number:w,descr:_,section:w,width:200*Math.max(I.length,1)-50,padding:20,maxHeight:m};Y.debug("sectionNode",D);let k=h.append("g"),L=bf.drawNode(k,D,w,i);Y.debug("sectionNode output",L),k.attr("transform",`translate(${x}, ${v})`),b+=m+50,I.length>0&&mpe(h,I,w,x,b,g,i,T,E,m,!1),x+=200*Math.max(I.length,1),b=v,w++}):(C=!1,mpe(h,f,w,x,b,g,i,T,E,m,!0));let A=h.node().getBBox();Y.debug("bounds",A),d&&h.append("text").text(d).attr("x",A.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),y=C?m+g+150:g+100,h.append("g").attr("class","lineWrapper").append("line").attr("x1",a).attr("y1",y).attr("x2",A.width+3*a).attr("y2",y).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),Ao(void 0,h,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),mpe=o(function(t,e,r,n,i,a,s,l,u,h,f){for(let d of e){let p={descr:d.task,section:r,number:r,width:150,padding:20,maxHeight:a};Y.debug("taskNode",p);let m=t.append("g").attr("class","taskWrapper"),y=bf.drawNode(m,p,r,s).height;if(Y.debug("taskHeight after draw",y),m.attr("transform",`translate(${n}, ${i})`),a=Math.max(a,y),d.events){let v=t.append("g").attr("class","lineWrapper"),x=a;i+=100,x=x+SHe(t,d.events,r,n,i,s),i-=100,v.append("line").attr("x1",n+190/2).attr("y1",i+a).attr("x2",n+190/2).attr("y2",i+a+(f?a:h)+u+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}n=n+200,f&&!s.timeline?.disableMulticolor&&r++}i=i-10},"drawTasks"),SHe=o(function(t,e,r,n,i,a){let s=0,l=i;i=i+100;for(let u of e){let h={descr:u,section:r,number:r,width:150,padding:20,maxHeight:50};Y.debug("eventNode",h);let f=t.append("g").attr("class","eventWrapper"),p=bf.drawNode(f,h,r,a).height;s=s+p,f.attr("transform",`translate(${n}, ${i})`),i=i+10+p}return i=l,s},"drawEvents"),gpe={setConf:o(()=>{},"setConf"),draw:EHe}});var CHe,AHe,vpe,xpe=N(()=>{"use strict";Ys();CHe=o(t=>{let e="";for(let r=0;r0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:o(function(g){this.begin(g)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(g,y,v,x){var b=x;switch(v){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}};return p})();h.lexer=f;function d(){this.yy={}}return o(d,"Parser"),d.prototype=h,h.Parser=d,new d})();P$.parser=P$;h2e=P$});var F$={};dr(F$,{addEvent:()=>T2e,addSection:()=>y2e,addTask:()=>b2e,addTaskOrg:()=>w2e,clear:()=>g2e,default:()=>ntt,getCommonDb:()=>m2e,getSections:()=>v2e,getTasks:()=>x2e});var hy,p2e,B$,xC,fy,m2e,g2e,y2e,v2e,x2e,b2e,T2e,w2e,d2e,ntt,k2e=N(()=>{"use strict";ci();hy="",p2e=0,B$=[],xC=[],fy=[],m2e=o(()=>rv,"getCommonDb"),g2e=o(function(){B$.length=0,xC.length=0,hy="",fy.length=0,Sr()},"clear"),y2e=o(function(t){hy=t,B$.push(t)},"addSection"),v2e=o(function(){return B$},"getSections"),x2e=o(function(){let t=d2e(),e=100,r=0;for(;!t&&rr.id===p2e-1).events.push(t)},"addEvent"),w2e=o(function(t){let e={section:hy,type:hy,description:t,task:t,classes:[]};xC.push(e)},"addTaskOrg"),d2e=o(function(){let t=o(function(r){return fy[r].processed},"compileTask"),e=!0;for(let[r,n]of fy.entries())t(r),e=e&&n.processed;return e},"compileTasks"),ntt={clear:g2e,getCommonDb:m2e,addSection:y2e,getSections:v2e,getTasks:x2e,addTask:b2e,addTaskOrg:w2e,addEvent:T2e}});function A2e(t,e){t.each(function(){var r=qe(this),n=r.text().split(/(\s+|
    )/).reverse(),i,a=[],s=1.1,l=r.attr("y"),u=parseFloat(r.attr("dy")),h=r.text(null).append("tspan").attr("x",0).attr("y",l).attr("dy",u+"em");for(let f=0;fe||i==="
    ")&&(a.pop(),h.text(a.join(" ").trim()),i==="
    "?a=[""]:a=[i],h=r.append("tspan").attr("x",0).attr("y",l).attr("dy",s+"em").text(i))})}var itt,bC,att,stt,S2e,ott,ltt,E2e,ctt,utt,htt,$$,C2e,ftt,dtt,ptt,mtt,ed,_2e=N(()=>{"use strict";yr();itt=12,bC=o(function(t,e){let r=t.append("rect");return r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),r.attr("rx",e.rx),r.attr("ry",e.ry),e.class!==void 0&&r.attr("class",e.class),r},"drawRect"),att=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=Sl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=Sl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),stt=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),S2e=o(function(t,e){let r=e.text.replace(//gi," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class!==void 0&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),ott=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,S2e(t,e)},"drawLabel"),ltt=o(function(t,e,r){let n=t.append("g"),i=$$();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width,i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,bC(n,i),C2e(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),E2e=-1,ctt=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");E2e++,i.append("line").attr("id","task"+E2e).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),att(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=$$();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,bC(i,s),C2e(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),utt=o(function(t,e){bC(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),htt=o(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),$$=o(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),C2e=(function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{"use strict";yr();_2e();pt();Xt();Ei();gtt=o(function(t,e,r,n){let i=ge(),a=i.timeline?.leftMargin??50;X.debug("timeline",n.db);let s=i.securityLevel,l;s==="sandbox"&&(l=qe("#i"+e));let h=(s==="sandbox"?qe(l.nodes()[0].contentDocument.body):qe("body")).select("#"+e);h.append("g");let f=n.db.getTasks(),d=n.db.getCommonDb().getDiagramTitle();X.debug("task",f),ed.initGraphics(h);let p=n.db.getSections();X.debug("sections",p);let m=0,g=0,y=0,v=0,x=50+a,b=50;v=50;let T=0,S=!0;p.forEach(function(R){let I={number:T,descr:R,section:T,width:150,padding:20,maxHeight:m},L=ed.getVirtualNodeHeight(h,I,i);X.debug("sectionHeight before draw",L),m=Math.max(m,L+20)});let w=0,k=0;X.debug("tasks.length",f.length);for(let[R,I]of f.entries()){let L={number:R,descr:I,section:I.section,width:150,padding:20,maxHeight:g},E=ed.getVirtualNodeHeight(h,L,i);X.debug("taskHeight before draw",E),g=Math.max(g,E+20),w=Math.max(w,I.events.length);let D=0;for(let _ of I.events){let O={descr:_,section:I.section,number:I.section,width:150,padding:20,maxHeight:50};D+=ed.getVirtualNodeHeight(h,O,i)}I.events.length>0&&(D+=(I.events.length-1)*10),k=Math.max(k,D)}X.debug("maxSectionHeight before draw",m),X.debug("maxTaskHeight before draw",g),p&&p.length>0?p.forEach(R=>{let I=f.filter(_=>_.section===R),L={number:T,descr:R,section:T,width:200*Math.max(I.length,1)-50,padding:20,maxHeight:m};X.debug("sectionNode",L);let E=h.append("g"),D=ed.drawNode(E,L,T,i);X.debug("sectionNode output",D),E.attr("transform",`translate(${x}, ${v})`),b+=m+50,I.length>0&&D2e(h,I,T,x,b,g,i,w,k,m,!1),x+=200*Math.max(I.length,1),b=v,T++}):(S=!1,D2e(h,f,T,x,b,g,i,w,k,m,!0));let A=h.node().getBBox();X.debug("bounds",A),d&&h.append("text").text(d).attr("x",A.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),y=S?m+g+150:g+100,h.append("g").attr("class","lineWrapper").append("line").attr("x1",a).attr("y1",y).attr("x2",A.width+3*a).attr("y2",y).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),ic(void 0,h,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),D2e=o(function(t,e,r,n,i,a,s,l,u,h,f){for(let d of e){let p={descr:d.task,section:r,number:r,width:150,padding:20,maxHeight:a};X.debug("taskNode",p);let m=t.append("g").attr("class","taskWrapper"),y=ed.drawNode(m,p,r,s).height;if(X.debug("taskHeight after draw",y),m.attr("transform",`translate(${n}, ${i})`),a=Math.max(a,y),d.events){let v=t.append("g").attr("class","lineWrapper"),x=a;i+=100,x=x+ytt(t,d.events,r,n,i,s),i-=100,v.append("line").attr("x1",n+190/2).attr("y1",i+a).attr("x2",n+190/2).attr("y2",i+a+100+u+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}n=n+200,f&&!s.timeline?.disableMulticolor&&r++}i=i-10},"drawTasks"),ytt=o(function(t,e,r,n,i,a){let s=0,l=i;i=i+100;for(let u of e){let h={descr:u,section:r,number:r,width:150,padding:20,maxHeight:50};X.debug("eventNode",h);let f=t.append("g").attr("class","eventWrapper"),p=ed.drawNode(f,h,r,a).height;s=s+p,f.attr("transform",`translate(${n}, ${i})`),i=i+10+p}return i=l,s},"drawEvents"),L2e={setConf:o(()=>{},"setConf"),draw:gtt}});var vtt,xtt,N2e,M2e=N(()=>{"use strict";eo();vtt=o(t=>{let e="";for(let r=0;r` + `}return e},"genSections"),xtt=o(t=>` .edge { stroke-width: 3; } - ${CHe(t)} + ${vtt(t)} .section-root rect, .section-root path, .section-root circle { fill: ${t.git0}; } @@ -1938,253 +2351,13 @@ Expecting `+he.join(", ")+", got '"+(this.terminals_[F]||F)+"'":K="Parse error o .eventWrapper { filter: brightness(120%); } -`,"getStyles"),vpe=AHe});var bpe={};hr(bpe,{diagram:()=>_He});var _He,wpe=N(()=>{"use strict";Zde();cpe();ype();xpe();_He={db:mP,renderer:gpe,parser:Qde,styles:vpe}});var yP,Epe,Spe=N(()=>{"use strict";yP=function(){var t=o(function(C,T,E,A){for(E=E||{},A=C.length;A--;E[C[A]]=T);return E},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],g=[1,33],y=[1,34],v=[1,6,7,11,13,15,16,19,22],x={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:o(function(T,E,A,S,_,I,D){var k=I.length-1;switch(_){case 6:case 7:return S;case 8:S.getLogger().trace("Stop NL ");break;case 9:S.getLogger().trace("Stop EOF ");break;case 11:S.getLogger().trace("Stop NL2 ");break;case 12:S.getLogger().trace("Stop EOF2 ");break;case 15:S.getLogger().info("Node: ",I[k].id),S.addNode(I[k-1].length,I[k].id,I[k].descr,I[k].type);break;case 16:S.getLogger().trace("Icon: ",I[k]),S.decorateNode({icon:I[k]});break;case 17:case 21:S.decorateNode({class:I[k]});break;case 18:S.getLogger().trace("SPACELIST");break;case 19:S.getLogger().trace("Node: ",I[k].id),S.addNode(0,I[k].id,I[k].descr,I[k].type);break;case 20:S.decorateNode({icon:I[k]});break;case 25:S.getLogger().trace("node found ..",I[k-2]),this.$={id:I[k-1],descr:I[k-1],type:S.getType(I[k-2],I[k])};break;case 26:this.$={id:I[k],descr:I[k],type:S.nodeType.DEFAULT};break;case 27:S.getLogger().trace("node found ..",I[k-3]),this.$={id:I[k-3],descr:I[k-1],type:S.getType(I[k-2],I[k])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:r,9:22,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:h,7:f,10:23,11:d},t(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:l}),t(p,[2,18]),t(p,[2,19]),t(p,[2,20]),t(p,[2,21]),t(p,[2,23]),t(p,[2,24]),t(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:f,10:32,11:d},{1:[2,7],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(m,[2,14],{7:g,11:y}),t(v,[2,8]),t(v,[2,9]),t(v,[2,10]),t(p,[2,15]),t(p,[2,16]),t(p,[2,17]),{20:[1,35]},{21:[1,36]},t(m,[2,13],{7:g,11:y}),t(v,[2,11]),t(v,[2,12]),{21:[1,37]},t(p,[2,25]),t(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(T,E){if(E.recoverable)this.trace(T);else{var A=new Error(T);throw A.hash=E,A}},"parseError"),parse:o(function(T){var E=this,A=[0],S=[],_=[null],I=[],D=this.table,k="",L=0,R=0,O=0,M=2,B=1,F=I.slice.call(arguments,1),P=Object.create(this.lexer),z={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(z.yy[$]=this.yy[$]);P.setInput(T,z.yy),z.yy.lexer=P,z.yy.parser=this,typeof P.yylloc>"u"&&(P.yylloc={});var H=P.yylloc;I.push(H);var Q=P.options&&P.options.ranges;typeof z.yy.parseError=="function"?this.parseError=z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function j(ae){A.length=A.length-2*ae,_.length=_.length-ae,I.length=I.length-ae}o(j,"popStack");function ie(){var ae;return ae=S.pop()||P.lex()||B,typeof ae!="number"&&(ae instanceof Array&&(S=ae,ae=S.pop()),ae=E.symbols_[ae]||ae),ae}o(ie,"lex");for(var ne,le,he,K,X,te,J={},se,ue,Z,Se;;){if(he=A[A.length-1],this.defaultActions[he]?K=this.defaultActions[he]:((ne===null||typeof ne>"u")&&(ne=ie()),K=D[he]&&D[he][ne]),typeof K>"u"||!K.length||!K[0]){var ce="";Se=[];for(se in D[he])this.terminals_[se]&&se>M&&Se.push("'"+this.terminals_[se]+"'");P.showPosition?ce="Parse error on line "+(L+1)+`: -`+P.showPosition()+` -Expecting `+Se.join(", ")+", got '"+(this.terminals_[ne]||ne)+"'":ce="Parse error on line "+(L+1)+": Unexpected "+(ne==B?"end of input":"'"+(this.terminals_[ne]||ne)+"'"),this.parseError(ce,{text:P.match,token:this.terminals_[ne]||ne,line:P.yylineno,loc:H,expected:Se})}if(K[0]instanceof Array&&K.length>1)throw new Error("Parse Error: multiple actions possible at state: "+he+", token: "+ne);switch(K[0]){case 1:A.push(ne),_.push(P.yytext),I.push(P.yylloc),A.push(K[1]),ne=null,le?(ne=le,le=null):(R=P.yyleng,k=P.yytext,L=P.yylineno,H=P.yylloc,O>0&&O--);break;case 2:if(ue=this.productions_[K[1]][1],J.$=_[_.length-ue],J._$={first_line:I[I.length-(ue||1)].first_line,last_line:I[I.length-1].last_line,first_column:I[I.length-(ue||1)].first_column,last_column:I[I.length-1].last_column},Q&&(J._$.range=[I[I.length-(ue||1)].range[0],I[I.length-1].range[1]]),te=this.performAction.apply(J,[k,R,L,z.yy,K[1],_,I].concat(F)),typeof te<"u")return te;ue&&(A=A.slice(0,-1*ue*2),_=_.slice(0,-1*ue),I=I.slice(0,-1*ue)),A.push(this.productions_[K[1]][0]),_.push(J.$),I.push(J._$),Z=D[A[A.length-2]][A[A.length-1]],A.push(Z);break;case 3:return!0}}return!0},"parse")},b=function(){var C={EOF:1,parseError:o(function(E,A){if(this.yy.parser)this.yy.parser.parseError(E,A);else throw new Error(E)},"parseError"),setInput:o(function(T,E){return this.yy=E||this.yy||{},this._input=T,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var T=this._input[0];this.yytext+=T,this.yyleng++,this.offset++,this.match+=T,this.matched+=T;var E=T.match(/(?:\r\n?|\n).*/g);return E?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),T},"input"),unput:o(function(T){var E=T.length,A=T.split(/(?:\r\n?|\n)/g);this._input=T+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-E),this.offset-=E;var S=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),A.length-1&&(this.yylineno-=A.length-1);var _=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:A?(A.length===S.length?this.yylloc.first_column:0)+S[S.length-A.length].length-A[0].length:this.yylloc.first_column-E},this.options.ranges&&(this.yylloc.range=[_[0],_[0]+this.yyleng-E]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(T){this.unput(this.match.slice(T))},"less"),pastInput:o(function(){var T=this.matched.substr(0,this.matched.length-this.match.length);return(T.length>20?"...":"")+T.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var T=this.match;return T.length<20&&(T+=this._input.substr(0,20-T.length)),(T.substr(0,20)+(T.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var T=this.pastInput(),E=new Array(T.length+1).join("-");return T+this.upcomingInput()+` -`+E+"^"},"showPosition"),test_match:o(function(T,E){var A,S,_;if(this.options.backtrack_lexer&&(_={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(_.yylloc.range=this.yylloc.range.slice(0))),S=T[0].match(/(?:\r\n?|\n).*/g),S&&(this.yylineno+=S.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:S?S[S.length-1].length-S[S.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+T[0].length},this.yytext+=T[0],this.match+=T[0],this.matches=T,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(T[0].length),this.matched+=T[0],A=this.performAction.call(this,this.yy,this,E,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),A)return A;if(this._backtrack){for(var I in _)this[I]=_[I];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var T,E,A,S;this._more||(this.yytext="",this.match="");for(var _=this._currentRules(),I=0;I<_.length;I++)if(A=this._input.match(this.rules[_[I]]),A&&(!E||A[0].length>E[0].length)){if(E=A,S=I,this.options.backtrack_lexer){if(T=this.test_match(A,_[I]),T!==!1)return T;if(this._backtrack){E=!1;continue}else return!1}else if(!this.options.flex)break}return E?(T=this.test_match(E,_[S]),T!==!1?T:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var E=this.next();return E||this.lex()},"lex"),begin:o(function(E){this.conditionStack.push(E)},"begin"),popState:o(function(){var E=this.conditionStack.length-1;return E>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(E){return E=this.conditionStack.length-1-Math.abs(E||0),E>=0?this.conditionStack[E]:"INITIAL"},"topState"),pushState:o(function(E){this.begin(E)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(E,A,S,_){var I=_;switch(S){case 0:return E.getLogger().trace("Found comment",A.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:E.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return E.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:E.getLogger().trace("end icon"),this.popState();break;case 10:return E.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return E.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return E.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return E.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:E.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return E.getLogger().trace("description:",A.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),E.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),E.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),E.getLogger().trace("node end ...",A.yytext),"NODE_DEND";break;case 30:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),E.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),E.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return E.getLogger().trace("Long description:",A.yytext),20;break;case 36:return E.getLogger().trace("Long description:",A.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return C}();x.lexer=b;function w(){this.yy={}}return o(w,"Parser"),w.prototype=x,x.Parser=w,new w}();yP.parser=yP;Epe=yP});var $l,Cpe,vP,NHe,MHe,IHe,OHe,Vi,PHe,BHe,FHe,$He,zHe,GHe,VHe,Ape,_pe=N(()=>{"use strict";zt();gr();vt();Ya();$l=[],Cpe=0,vP={},NHe=o(()=>{$l=[],Cpe=0,vP={}},"clear"),MHe=o(function(t){for(let e=$l.length-1;e>=0;e--)if($l[e].level$l.length>0?$l[0]:null,"getMindmap"),OHe=o((t,e,r,n)=>{Y.info("addNode",t,e,r,n);let i=me(),a=i.mindmap?.padding??or.mindmap.padding;switch(n){case Vi.ROUNDED_RECT:case Vi.RECT:case Vi.HEXAGON:a*=2}let s={id:Cpe++,nodeId:Tr(e,i),level:t,descr:Tr(r,i),type:n,children:[],width:i.mindmap?.maxNodeWidth??or.mindmap.maxNodeWidth,padding:a},l=MHe(t);if(l)l.children.push(s),$l.push(s);else if($l.length===0)$l.push(s);else throw new Error('There can be only one root. No parent could be found for ("'+s.descr+'")')},"addNode"),Vi={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},PHe=o((t,e)=>{switch(Y.debug("In get type",t,e),t){case"[":return Vi.RECT;case"(":return e===")"?Vi.ROUNDED_RECT:Vi.CLOUD;case"((":return Vi.CIRCLE;case")":return Vi.CLOUD;case"))":return Vi.BANG;case"{{":return Vi.HEXAGON;default:return Vi.DEFAULT}},"getType"),BHe=o((t,e)=>{vP[t]=e},"setElementForId"),FHe=o(t=>{if(!t)return;let e=me(),r=$l[$l.length-1];t.icon&&(r.icon=Tr(t.icon,e)),t.class&&(r.class=Tr(t.class,e))},"decorateNode"),$He=o(t=>{switch(t){case Vi.DEFAULT:return"no-border";case Vi.RECT:return"rect";case Vi.ROUNDED_RECT:return"rounded-rect";case Vi.CIRCLE:return"circle";case Vi.CLOUD:return"cloud";case Vi.BANG:return"bang";case Vi.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),zHe=o(()=>Y,"getLogger"),GHe=o(t=>vP[t],"getElementById"),VHe={clear:NHe,addNode:OHe,getMindmap:IHe,nodeType:Vi,getType:PHe,setElementForId:BHe,decorateNode:FHe,type2Str:$He,getLogger:zHe,getElementById:GHe},Ape=VHe});function Wi(t){"@babel/helpers - typeof";return Wi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wi(t)}function Mf(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Dpe(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},"n"),e:o(function(u){throw u},"e"),f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a=!0,s=!1,l;return{s:o(function(){r=r.call(t)},"s"),n:o(function(){var u=r.next();return a=u.done,u},"n"),e:o(function(u){s=!0,l=u},"e"),f:o(function(){try{!a&&r.return!=null&&r.return()}finally{if(s)throw l}},"f")}}function yWe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}function vWe(t,e){return e={exports:{}},t(e,e.exports),e.exports}function SWe(t){for(var e=t.length;e--&&EWe.test(t.charAt(e)););return e}function _We(t){return t&&t.slice(0,CWe(t)+1).replace(AWe,"")}function MWe(t){var e=RWe.call(t,Ab),r=t[Ab];try{t[Ab]=void 0;var n=!0}catch{}var i=NWe.call(t);return n&&(e?t[Ab]=r:delete t[Ab]),i}function BWe(t){return PWe.call(t)}function GWe(t){return t==null?t===void 0?zWe:$We:Npe&&Npe in Object(t)?IWe(t):FWe(t)}function VWe(t){return t!=null&&typeof t=="object"}function WWe(t){return typeof t=="symbol"||UWe(t)&&ame(t)==HWe}function KWe(t){if(typeof t=="number")return t;if(r4(t))return Mpe;if(zp(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=zp(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=DWe(t);var r=YWe.test(t);return r||XWe.test(t)?jWe(t.slice(2),r?2:8):qWe.test(t)?Mpe:+t}function eqe(t,e,r){var n,i,a,s,l,u,h=0,f=!1,d=!1,p=!0;if(typeof t!="function")throw new TypeError(QWe);e=Ipe(e)||0,zp(r)&&(f=!!r.leading,d="maxWait"in r,a=d?ZWe(Ipe(r.maxWait)||0,e):a,p="trailing"in r?!!r.trailing:p);function m(E){var A=n,S=i;return n=i=void 0,h=E,s=t.apply(S,A),s}o(m,"invokeFunc");function g(E){return h=E,l=setTimeout(x,e),f?m(E):s}o(g,"leadingEdge");function y(E){var A=E-u,S=E-h,_=e-A;return d?JWe(_,a-S):_}o(y,"remainingWait");function v(E){var A=E-u,S=E-h;return u===void 0||A>=e||A<0||d&&S>=a}o(v,"shouldInvoke");function x(){var E=xP();if(v(E))return b(E);l=setTimeout(x,y(E))}o(x,"timerExpired");function b(E){return l=void 0,p&&n?m(E):(n=i=void 0,s)}o(b,"trailingEdge");function w(){l!==void 0&&clearTimeout(l),h=0,n=u=i=l=void 0}o(w,"cancel");function C(){return l===void 0?s:b(xP())}o(C,"flush");function T(){var E=xP(),A=v(E);if(n=arguments,i=this,u=E,A){if(l===void 0)return g(u);if(d)return clearTimeout(l),l=setTimeout(x,e),m(u)}return l===void 0&&(l=setTimeout(x,e)),s}return o(T,"debounced"),T.cancel=w,T.flush=C,T}function IS(t,e,r,n,i,a){var s;return si(t)?s=t:s=Q1[t]||Q1.euclidean,e===0&&si(t)?s(i,a):s(e,r,n,i,a)}function qYe(t,e){if(OS(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||r4(t)?!0:WYe.test(t)||!HYe.test(t)||e!=null&&t in Object(e)}function ZYe(t){if(!zp(t))return!1;var e=ame(t);return e==jYe||e==KYe||e==XYe||e==QYe}function tXe(t){return!!e0e&&e0e in t}function aXe(t){if(t!=null){try{return iXe.call(t)}catch{}try{return t+""}catch{}}return""}function pXe(t){if(!zp(t)||rXe(t))return!1;var e=JYe(t)?dXe:lXe;return e.test(sXe(t))}function gXe(t,e){return t?.[e]}function vXe(t,e){var r=yXe(t,e);return mXe(r)?r:void 0}function bXe(){this.__data__=jb?jb(null):{},this.size=0}function TXe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function AXe(t){var e=this.__data__;if(jb){var r=e[t];return r===EXe?void 0:r}return CXe.call(e,t)?e[t]:void 0}function RXe(t){var e=this.__data__;return jb?e[t]!==void 0:LXe.call(e,t)}function IXe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=jb&&e===void 0?MXe:e,this}function ty(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1}function XXe(t,e){var r=this.__data__,n=PS(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}function ry(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t0;){var f=i.shift();e(f),a.add(f.id()),l&&n(i,a,f)}return t}function Fme(t,e,r){if(r.isParent())for(var n=r._private.children,i=0;i0&&arguments[0]!==void 0?arguments[0]:NKe,e=arguments.length>1?arguments[1]:void 0,r=0;r0?k=R:D=R;while(Math.abs(L)>s&&++O=a?b(I,O):M===0?O:C(I,D,D+h)}o(T,"getTForX");var E=!1;function A(){E=!0,(t!==e||r!==n)&&w()}o(A,"precompute");var S=o(function(D){return E||A(),t===e&&r===n?D:D===0?0:D===1?1:v(T(D),e,n)},"f");S.getControlPoints=function(){return[{x:t,y:e},{x:r,y:n}]};var _="generateBezier("+[t,e,r,n]+")";return S.toString=function(){return _},S}function x0e(t,e,r,n,i){if(n===1||e===r)return r;var a=i(e,r,n);return t==null||((t.roundValue||t.color)&&(a=Math.round(a)),t.min!==void 0&&(a=Math.max(a,t.min)),t.max!==void 0&&(a=Math.min(a,t.max))),a}function b0e(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function $1(t,e,r,n,i){var a=i!=null?i.type:null;r<0?r=0:r>1&&(r=1);var s=b0e(t,i),l=b0e(e,i);if(Ct(s)&&Ct(l))return x0e(a,s,l,r,n);if(En(s)&&En(l)){for(var u=[],h=0;h0?(m==="spring"&&g.push(s.duration),s.easingImpl=dS[m].apply(null,g)):s.easingImpl=dS[m]}var y=s.easingImpl,v;if(s.duration===0?v=1:v=(r-u)/s.duration,s.applying&&(v=s.progress),v<0?v=0:v>1&&(v=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&i&&!t.locked()){var w={};Rb(x.x,b.x)&&(w.x=$1(x.x,b.x,v,y)),Rb(x.y,b.y)&&(w.y=$1(x.y,b.y,v,y)),t.position(w)}var C=s.startPan,T=s.pan,E=a.pan,A=T!=null&&n;A&&(Rb(C.x,T.x)&&(E.x=$1(C.x,T.x,v,y)),Rb(C.y,T.y)&&(E.y=$1(C.y,T.y,v,y)),t.emit("pan"));var S=s.startZoom,_=s.zoom,I=_!=null&&n;I&&(Rb(S,_)&&(a.zoom=Yb(a.minZoom,$1(S,_,v,y),a.maxZoom)),t.emit("zoom")),(A||I)&&t.emit("viewport");var D=s.style;if(D&&D.length>0&&i){for(var k=0;k=0;A--){var S=E[A];S()}E.splice(0,E.length)},"callbacks"),b=m.length-1;b>=0;b--){var w=m[b],C=w._private;if(C.stopped){m.splice(b,1),C.hooked=!1,C.playing=!1,C.started=!1,x(C.frames);continue}!C.playing&&!C.applying||(C.playing&&C.applying&&(C.applying=!1),C.started||qKe(f,w,t),WKe(f,w,t,d),C.applying&&(C.applying=!1),x(C.frames),C.step!=null&&C.step(t),w.completed()&&(m.splice(b,1),C.hooked=!1,C.playing=!1,C.started=!1,x(C.completes)),y=!0)}return!d&&m.length===0&&g.length===0&&n.push(f),y}o(i,"stepOne");for(var a=!1,s=0;s0?e.notify("draw",r):e.notify("draw")),r.unmerge(n),e.emit("step")}function tge(t){this.options=rr({},eQe,tQe,t)}function rge(t){this.options=rr({},rQe,t)}function nge(t){this.options=rr({},nQe,t)}function HS(t){this.options=rr({},iQe,t),this.options.layout=this;var e=this.options.eles.nodes(),r=this.options.eles.edges(),n=r.filter(function(i){var a=i.source().data("id"),s=i.target().data("id"),l=e.some(function(h){return h.data("id")===a}),u=e.some(function(h){return h.data("id")===s});return!l||!u});this.options.eles=this.options.eles.not(n)}function age(t){this.options=rr({},wQe,t)}function gB(t){this.options=rr({},TQe,t)}function sge(t){this.options=rr({},kQe,t)}function oge(t){this.options=rr({},EQe,t)}function lge(t){this.options=t,this.notifications=0}function hge(t,e){e.radius===0?t.lineTo(e.cx,e.cy):t.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}function vB(t,e,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return n===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(AQe(t,e,r,n,i),{cx:HP,cy:WP,radius:Bp,startX:cge,startY:uge,stopX:qP,stopY:YP,startAngle:qc.ang+Math.PI/2*Fp,endAngle:Jo.ang-Math.PI/2*Fp,counterClockwise:gS})}function fge(t){var e=[];if(t!=null){for(var r=0;r5&&arguments[5]!==void 0?arguments[5]:5,s=arguments.length>6?arguments[6]:void 0;t.beginPath(),t.moveTo(e+a,r),t.lineTo(e+n-a,r),t.quadraticCurveTo(e+n,r,e+n,r+a),t.lineTo(e+n,r+i-a),t.quadraticCurveTo(e+n,r+i,e+n-a,r+i),t.lineTo(e+a,r+i),t.quadraticCurveTo(e,r+i,e,r+i-a),t.lineTo(e,r+a),t.quadraticCurveTo(e,r,e+a,r),t.closePath(),s?t.stroke():t.fill()}function z0e(t,e,r){var n=t.createShader(e);if(t.shaderSource(n,r),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error(t.getShaderInfoLog(n));return n}function pZe(t,e,r){var n=z0e(t,t.VERTEX_SHADER,e),i=z0e(t,t.FRAGMENT_SHADER,r),a=t.createProgram();if(t.attachShader(a,n),t.attachShader(a,i),t.linkProgram(a),!t.getProgramParameter(a,t.LINK_STATUS))throw new Error("Could not initialize shaders");return a}function mZe(t,e,r){r===void 0&&(r=e);var n=t.makeOffscreenCanvas(e,r),i=n.context=n.getContext("2d");return n.clear=function(){return i.clearRect(0,0,n.width,n.height)},n.clear(),n}function wB(t){var e=t.pixelRatio,r=t.cy.zoom(),n=t.cy.pan();return{zoom:r*e,pan:{x:n.x*e,y:n.y*e}}}function NP(t,e,r,n,i){var a=n*r+e.x,s=i*r+e.y;return s=Math.round(t.canvasHeight-s),[a,s]}function oS(t,e,r){var n=t[0]/255,i=t[1]/255,a=t[2]/255,s=e,l=r||new Array(4);return l[0]=n*s,l[1]=i*s,l[2]=a*s,l[3]=s,l}function lS(t,e){var r=e||new Array(4);return r[0]=(t>>0&255)/255,r[1]=(t>>8&255)/255,r[2]=(t>>16&255)/255,r[3]=(t>>24&255)/255,r}function gZe(t){return t[0]+(t[1]<<8)+(t[2]<<16)+(t[3]<<24)}function yZe(t,e){var r=t.createTexture();return r.buffer=function(n){t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_NEAREST),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n),t.generateMipmap(t.TEXTURE_2D),t.bindTexture(t.TEXTURE_2D,null)},r.deleteTexture=function(){t.deleteTexture(r)},r}function Sge(t,e){switch(e){case"float":return[1,t.FLOAT,4];case"vec2":return[2,t.FLOAT,4];case"vec3":return[3,t.FLOAT,4];case"vec4":return[4,t.FLOAT,4];case"int":return[1,t.INT,4];case"ivec2":return[2,t.INT,4]}}function Cge(t,e,r){switch(e){case t.FLOAT:return new Float32Array(r);case t.INT:return new Int32Array(r)}}function vZe(t,e,r,n,i,a){switch(e){case t.FLOAT:return new Float32Array(r.buffer,a*n,i);case t.INT:return new Int32Array(r.buffer,a*n,i)}}function xZe(t,e,r,n){var i=Sge(t,e),a=_i(i,2),s=a[0],l=a[1],u=Cge(t,l,n),h=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,h),t.bufferData(t.ARRAY_BUFFER,u,t.STATIC_DRAW),l===t.FLOAT?t.vertexAttribPointer(r,s,l,!1,0,0):l===t.INT&&t.vertexAttribIPointer(r,s,l,0,0),t.enableVertexAttribArray(r),t.bindBuffer(t.ARRAY_BUFFER,null),h}function po(t,e,r,n){var i=Sge(t,r),a=_i(i,3),s=a[0],l=a[1],u=a[2],h=Cge(t,l,e*s),f=s*u,d=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,d),t.bufferData(t.ARRAY_BUFFER,e*f,t.DYNAMIC_DRAW),t.enableVertexAttribArray(n),l===t.FLOAT?t.vertexAttribPointer(n,s,l,!1,f,0):l===t.INT&&t.vertexAttribIPointer(n,s,l,f,0),t.vertexAttribDivisor(n,1),t.bindBuffer(t.ARRAY_BUFFER,null);for(var p=new Array(e),m=0;mbge?(RZe(t),e.call(t,a)):(NZe(t),Rge(t,a,Vb.SCREEN)))}}{var r=t.matchCanvasSize;t.matchCanvasSize=function(a){r.call(t,a),t.pickingFrameBuffer.setFramebufferAttachmentSizes(t.canvasWidth,t.canvasHeight),t.pickingFrameBuffer.needsDraw=!0}}t.findNearestElements=function(a,s,l,u){return FZe(t,a,s)};{var n=t.invalidateCachedZSortedEles;t.invalidateCachedZSortedEles=function(){n.call(t),t.pickingFrameBuffer.needsDraw=!0}}{var i=t.notify;t.notify=function(a,s){i.call(t,a,s),a==="viewport"||a==="bounds"?t.pickingFrameBuffer.needsDraw=!0:a==="background"&&t.eleDrawing.invalidate(s,{type:"node-body"})}}}function RZe(t){var e=t.data.contexts[t.WEBGL];e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}function NZe(t){var e=o(function(n){n.save(),n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t.canvasWidth,t.canvasHeight),n.restore()},"clear");e(t.data.contexts[t.NODE]),e(t.data.contexts[t.DRAG])}function MZe(t){var e=t.canvasWidth,r=t.canvasHeight,n=wB(t),i=n.pan,a=n.zoom,s=Gb();DS(s,s,[i.x,i.y]),TB(s,s,[a,a]);var l=Gb();TZe(l,e,r);var u=Gb();return wZe(u,l,s),u}function Lge(t,e){var r=t.canvasWidth,n=t.canvasHeight,i=wB(t),a=i.pan,s=i.zoom;e.setTransform(1,0,0,1,0,0),e.clearRect(0,0,r,n),e.translate(a.x,a.y),e.scale(s,s)}function IZe(t,e){t.drawSelectionRectangle(e,function(r){return Lge(t,r)})}function OZe(t){var e=t.data.contexts[t.NODE];e.save(),Lge(t,e),e.strokeStyle="rgba(0, 0, 0, 0.3)",e.beginPath(),e.moveTo(-1e3,0),e.lineTo(1e3,0),e.stroke(),e.beginPath(),e.moveTo(0,-1e3),e.lineTo(0,1e3),e.stroke(),e.restore()}function PZe(t){var e=o(function(i,a,s){for(var l=i.atlasManager.getRenderTypeOpts(a),u=t.data.contexts[t.NODE],h=.125,f=l.atlasCollection.atlases,d=0;d=0&&k.add(O)}return k}function FZe(t,e,r){var n=BZe(t,e,r),i=t.getCachedZSortedEles(),a,s,l=mo(n),u;try{for(l.s();!(u=l.n()).done;){var h=u.value,f=i[h];if(!a&&f.isNode()&&(a=f),!s&&f.isEdge()&&(s=f),a&&s)break}}catch(d){l.e(d)}finally{l.f()}return[a,s].filter(Boolean)}function Rge(t,e,r){var n,i;t.webglDebug&&(i=[],n=performance.now());var a=t.eleDrawing,s=0;if(r.screen&&t.data.canvasNeedsRedraw[t.SELECT_BOX]&&IZe(t,e),t.data.canvasNeedsRedraw[t.NODE]||r.picking){var l=o(function(k,L){L+=1,k.isNode()?(a.drawTexture(k,L,"node-underlay"),a.drawTexture(k,L,"node-body"),a.drawTexture(k,L,"node-label"),a.drawTexture(k,L,"node-overlay")):(a.drawEdgeLine(k,L),a.drawEdgeArrow(k,L,"source"),a.drawEdgeArrow(k,L,"target"),a.drawTexture(k,L,"edge-label"))},"draw"),u=t.data.contexts[t.WEBGL];r.screen?(u.clearColor(0,0,0,0),u.enable(u.BLEND),u.blendFunc(u.ONE,u.ONE_MINUS_SRC_ALPHA)):u.disable(u.BLEND),u.clear(u.COLOR_BUFFER_BIT|u.DEPTH_BUFFER_BIT),u.viewport(0,0,u.canvas.width,u.canvas.height);var h=MZe(t),f=t.getCachedZSortedEles();if(s=f.length,a.startFrame(h,i,r),r.screen){for(var d=0;d{"use strict";o(Wi,"_typeof");o(Mf,"_classCallCheck");o(Dpe,"_defineProperties");o(If,"_createClass");o(X0e,"_defineProperty$1");o(_i,"_slicedToArray");o(j0e,"_toConsumableArray");o(UHe,"_arrayWithoutHoles");o(HHe,"_arrayWithHoles");o(WHe,"_iterableToArray");o(qHe,"_iterableToArrayLimit");o(ZP,"_unsupportedIterableToArray");o(OP,"_arrayLikeToArray");o(YHe,"_nonIterableSpread");o(XHe,"_nonIterableRest");o(mo,"_createForOfIteratorHelper");Ui=typeof window>"u"?null:window,Lpe=Ui?Ui.navigator:null;Ui&&Ui.document;jHe=Wi(""),K0e=Wi({}),KHe=Wi(function(){}),QHe=typeof HTMLElement>"u"?"undefined":Wi(HTMLElement),e4=o(function(e){return e&&e.instanceString&&si(e.instanceString)?e.instanceString():null},"instanceStr"),Zt=o(function(e){return e!=null&&Wi(e)==jHe},"string"),si=o(function(e){return e!=null&&Wi(e)===KHe},"fn"),En=o(function(e){return!go(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},"array"),Ur=o(function(e){return e!=null&&Wi(e)===K0e&&!En(e)&&e.constructor===Object},"plainObject"),ZHe=o(function(e){return e!=null&&Wi(e)===K0e},"object"),Ct=o(function(e){return e!=null&&Wi(e)===Wi(1)&&!isNaN(e)},"number"),JHe=o(function(e){return Ct(e)&&Math.floor(e)===e},"integer"),vS=o(function(e){if(QHe!=="undefined")return e!=null&&e instanceof HTMLElement},"htmlElement"),go=o(function(e){return t4(e)||Q0e(e)},"elementOrCollection"),t4=o(function(e){return e4(e)==="collection"&&e._private.single},"element"),Q0e=o(function(e){return e4(e)==="collection"&&!e._private.single},"collection"),JP=o(function(e){return e4(e)==="core"},"core"),Z0e=o(function(e){return e4(e)==="stylesheet"},"stylesheet"),eWe=o(function(e){return e4(e)==="event"},"event"),Af=o(function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},"emptyString"),tWe=o(function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},"domElement"),rWe=o(function(e){return Ur(e)&&Ct(e.x1)&&Ct(e.x2)&&Ct(e.y1)&&Ct(e.y2)},"boundingBox"),nWe=o(function(e){return ZHe(e)&&si(e.then)},"promise"),iWe=o(function(){return Lpe&&Lpe.userAgent.match(/msie|trident|edge/i)},"ms"),Ub=o(function(e,r){r||(r=o(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;sr?1:0},"ascending"),hWe=o(function(e,r){return-1*eme(e,r)},"descending"),rr=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(v-=1),v<1/6?g+(y-g)*6*v:v<1/2?y:v<2/3?g+(y-g)*(2/3-v)*6:g}o(f,"hue2rgb");var d=new RegExp("^"+oWe+"$").exec(e);if(d){if(n=parseInt(d[1]),n<0?n=(360- -1*n%360)%360:n>360&&(n=n%360),n/=360,i=parseFloat(d[2]),i<0||i>100||(i=i/100,a=parseFloat(d[3]),a<0||a>100)||(a=a/100,s=d[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(i===0)l=u=h=Math.round(a*255);else{var p=a<.5?a*(1+i):a+i-a*i,m=2*a-p;l=Math.round(255*f(m,p,n+1/3)),u=Math.round(255*f(m,p,n)),h=Math.round(255*f(m,p,n-1/3))}r=[l,u,h,s]}return r},"hsl2tuple"),pWe=o(function(e){var r,n=new RegExp("^"+aWe+"$").exec(e);if(n){r=[];for(var i=[],a=1;a<=3;a++){var s=n[a];if(s[s.length-1]==="%"&&(i[a]=!0),s=parseFloat(s),i[a]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var l=i[1]||i[2]||i[3],u=i[1]&&i[2]&&i[3];if(l&&!u)return;var h=n[4];if(h!==void 0){if(h=parseFloat(h),h<0||h>1)return;r.push(h)}}return r},"rgb2tuple"),mWe=o(function(e){return gWe[e.toLowerCase()]},"colorname2tuple"),tme=o(function(e){return(En(e)?e:null)||mWe(e)||fWe(e)||pWe(e)||dWe(e)},"color2tuple"),gWe={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},rme=o(function(e){for(var r=e.map,n=e.keys,i=n.length,a=0;a1&&arguments[1]!==void 0?arguments[1]:V1,n=r,i;i=e.next(),!i.done;)n=n*ome+i.value|0;return n},"hashIterableInts"),Hb=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:V1;return r*ome+e|0},"hashInt"),Wb=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ob;return(r<<5)+r+e|0},"hashIntAlt"),rqe=o(function(e,r){return e*2097152+r},"combineHashes"),wf=o(function(e){return e[0]*2097152+e[1]},"combineHashesArray"),j6=o(function(e,r){return[Hb(e[0],r[0]),Wb(e[1],r[1])]},"hashArrays"),nqe=o(function(e,r){var n={value:0,done:!1},i=0,a=e.length,s={next:o(function(){return i=0&&!(e[i]===r&&(e.splice(i,1),n));i--);},"removeFromArray"),nB=o(function(e){e.splice(0,e.length)},"clearArray"),uqe=o(function(e,r){for(var n=0;n"u"?"undefined":Wi(Set))!==fqe?Set:dqe,NS=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!JP(e)){ai("An element must have a core reference and parameters set");return}var i=r.group;if(i==null&&(r.data&&r.data.source!=null&&r.data.target!=null?i="edges":i="nodes"),i!=="nodes"&&i!=="edges"){ai("An element must be of type `nodes` or `edges`; you specified `"+i+"`");return}this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?i==="edges":!!r.pannable,active:!1,classes:new J1,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(a.position.x==null&&(a.position.x=0),a.position.y==null&&(a.position.y=0),r.renderedPosition){var s=r.renderedPosition,l=e.pan(),u=e.zoom();a.position={x:(s.x-l.x)/u,y:(s.y-l.y)/u}}var h=[];En(r.classes)?h=r.classes:Zt(r.classes)&&(h=r.classes.split(/\s+/));for(var f=0,d=h.length;fb?1:0},"defaultCmp"),f=o(function(x,b,w,C,T){var E;if(w==null&&(w=0),T==null&&(T=n),w<0)throw new Error("lo must be non-negative");for(C==null&&(C=x.length);wI;0<=I?_++:_--)S.push(_);return S}.apply(this).reverse(),A=[],C=0,T=E.length;CD;0<=D?++S:--S)k.push(s(x,w));return k},"nsmallest"),y=o(function(x,b,w,C){var T,E,A;for(C==null&&(C=n),T=x[w];w>b;){if(A=w-1>>1,E=x[A],C(T,E)<0){x[w]=E,w=A;continue}break}return x[w]=T},"_siftdown"),v=o(function(x,b,w){var C,T,E,A,S;for(w==null&&(w=n),T=x.length,S=b,E=x[b],C=2*b+1;C0;){var E=b.pop(),A=v(E),S=E.id();if(p[S]=A,A!==1/0)for(var _=E.neighborhood().intersect(g),I=0;I<_.length;I++){var D=_[I],k=D.id(),L=T(E,D),R=A+L.dist;R0)for(F.unshift(B);d[z];){var $=d[z];F.unshift($.edge),F.unshift($.node),P=$.node,z=P.id()}return l.spawn(F)},"pathTo")}},"dijkstra")},yqe={kruskal:o(function(e){e=e||function(w){return 1};for(var r=this.byGroup(),n=r.nodes,i=r.edges,a=n.length,s=new Array(a),l=n,u=o(function(C){for(var T=0;T0;){if(T(),A++,C===f){for(var S=[],_=a,I=f,D=x[I];S.unshift(_),D!=null&&S.unshift(D),_=v[I],_!=null;)I=_.id(),D=x[I];return{found:!0,distance:d[C],path:this.spawn(S),steps:A}}m[C]=!0;for(var k=w._private.edges,L=0;LD&&(g[I]=D,b[I]=_,w[I]=T),!a){var k=_*f+S;!a&&g[k]>D&&(g[k]=D,b[k]=S,w[k]=T)}}}for(var L=0;L1&&arguments[1]!==void 0?arguments[1]:s,ge=w(ae),ze=[],He=ge;;){if(He==null)return r.spawn();var $e=b(He),Re=$e.edge,Ie=$e.pred;if(ze.unshift(He[0]),He.same(Oe)&&ze.length>0)break;Re!=null&&ze.unshift(Re),He=Ie}return u.spawn(ze)},"pathTo"),E=0;E=0;f--){var d=h[f],p=d[1],m=d[2];(r[p]===l&&r[m]===u||r[p]===u&&r[m]===l)&&h.splice(f,1)}for(var g=0;gi;){var a=Math.floor(Math.random()*r.length);r=Sqe(a,e,r),n--}return r},"contractUntil"),Cqe={kargerStein:o(function(){var e=this,r=this.byGroup(),n=r.nodes,i=r.edges;i.unmergeBy(function(F){return F.isLoop()});var a=n.length,s=i.length,l=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),u=Math.floor(a/Eqe);if(a<2){ai("At least 2 nodes are required for Karger-Stein algorithm");return}for(var h=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=-1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=0,a=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;i?e=e.slice(r,n):(n0&&e.splice(0,r));for(var l=0,u=e.length-1;u>=0;u--){var h=e[u];s?isFinite(h)||(e[u]=-1/0,l++):e.splice(u,1)}a&&e.sort(function(p,m){return p-m});var f=e.length,d=Math.floor(f/2);return f%2!==0?e[d+1+l]:(e[d-1+l]+e[d+l])/2},"median"),Nqe=o(function(e){return Math.PI*e/180},"deg2rad"),K6=o(function(e,r){return Math.atan2(r,e)-Math.PI/2},"getAngleFromDisp"),iB=Math.log2||function(t){return Math.log(t)/Math.log(2)},mme=o(function(e){return e>0?1:e<0?-1:0},"signum"),Gp=o(function(e,r){return Math.sqrt(Op(e,r))},"dist"),Op=o(function(e,r){var n=r.x-e.x,i=r.y-e.y;return n*n+i*i},"sqdist"),Mqe=o(function(e){for(var r=e.length,n=0,i=0;i=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},"makeBoundingBox"),Oqe=o(function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},"copyBoundingBox"),Pqe=o(function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},"clearBoundingBox"),Bqe=o(function(e,r,n){return{x1:e.x1+r,x2:e.x2+r,y1:e.y1+n,y2:e.y2+n,w:e.w,h:e.h}},"shiftBoundingBox"),gme=o(function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1},"updateBoundingBox"),Fqe=o(function(e,r,n){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},"expandBoundingBoxByPoint"),cS=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBox"),uS=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],n,i,a,s;if(r.length===1)n=i=a=s=r[0];else if(r.length===2)n=a=r[0],s=i=r[1];else if(r.length===4){var l=_i(r,4);n=l[0],i=l[1],a=l[2],s=l[3]}return e.x1-=s,e.x2+=i,e.y1-=n,e.y2+=a,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBoxSides"),Fpe=o(function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},"assignBoundingBox"),aB=o(function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)},"boundingBoxesIntersect"),K1=o(function(e,r,n){return e.x1<=r&&r<=e.x2&&e.y1<=n&&n<=e.y2},"inBoundingBox"),$qe=o(function(e,r){return K1(e,r.x,r.y)},"pointInBoundingBox"),yme=o(function(e,r){return K1(e,r.x1,r.y1)&&K1(e,r.x2,r.y2)},"boundingBoxInBoundingBox"),vme=o(function(e,r,n,i,a,s,l){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",h=u==="auto"?Vp(a,s):u,f=a/2,d=s/2;h=Math.min(h,f,d);var p=h!==f,m=h!==d,g;if(p){var y=n-f+h-l,v=i-d-l,x=n+f-h+l,b=v;if(g=Ef(e,r,n,i,y,v,x,b,!1),g.length>0)return g}if(m){var w=n+f+l,C=i-d+h-l,T=w,E=i+d-h+l;if(g=Ef(e,r,n,i,w,C,T,E,!1),g.length>0)return g}if(p){var A=n-f+h-l,S=i+d+l,_=n+f-h+l,I=S;if(g=Ef(e,r,n,i,A,S,_,I,!1),g.length>0)return g}if(m){var D=n-f-l,k=i-d+h-l,L=D,R=i+d-h+l;if(g=Ef(e,r,n,i,D,k,L,R,!1),g.length>0)return g}var O;{var M=n-f+h,B=i-d+h;if(O=Pb(e,r,n,i,M,B,h+l),O.length>0&&O[0]<=M&&O[1]<=B)return[O[0],O[1]]}{var F=n+f-h,P=i-d+h;if(O=Pb(e,r,n,i,F,P,h+l),O.length>0&&O[0]>=F&&O[1]<=P)return[O[0],O[1]]}{var z=n+f-h,$=i+d-h;if(O=Pb(e,r,n,i,z,$,h+l),O.length>0&&O[0]>=z&&O[1]>=$)return[O[0],O[1]]}{var H=n-f+h,Q=i+d-h;if(O=Pb(e,r,n,i,H,Q,h+l),O.length>0&&O[0]<=H&&O[1]>=Q)return[O[0],O[1]]}return[]},"roundRectangleIntersectLine"),zqe=o(function(e,r,n,i,a,s,l){var u=l,h=Math.min(n,a),f=Math.max(n,a),d=Math.min(i,s),p=Math.max(i,s);return h-u<=e&&e<=f+u&&d-u<=r&&r<=p+u},"inLineVicinity"),Gqe=o(function(e,r,n,i,a,s,l,u,h){var f={x1:Math.min(n,l,a)-h,x2:Math.max(n,l,a)+h,y1:Math.min(i,u,s)-h,y2:Math.max(i,u,s)+h};return!(ef.x2||rf.y2)},"inBezierVicinity"),Vqe=o(function(e,r,n,i){n-=i;var a=r*r-4*e*n;if(a<0)return[];var s=Math.sqrt(a),l=2*e,u=(-r+s)/l,h=(-r-s)/l;return[u,h]},"solveQuadratic"),Uqe=o(function(e,r,n,i,a){var s=1e-5;e===0&&(e=s),r/=e,n/=e,i/=e;var l,u,h,f,d,p,m,g;if(u=(3*n-r*r)/9,h=-(27*i)+r*(9*n-2*(r*r)),h/=54,l=u*u*u+h*h,a[1]=0,m=r/3,l>0){d=h+Math.sqrt(l),d=d<0?-Math.pow(-d,1/3):Math.pow(d,1/3),p=h-Math.sqrt(l),p=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),a[0]=-m+d+p,m+=(d+p)/2,a[4]=a[2]=-m,m=Math.sqrt(3)*(-p+d)/2,a[3]=m,a[5]=-m;return}if(a[5]=a[3]=0,l===0){g=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),a[0]=-m+2*g,a[4]=a[2]=-(g+m);return}u=-u,f=u*u*u,f=Math.acos(h/Math.sqrt(f)),g=2*Math.sqrt(u),a[0]=-m+g*Math.cos(f/3),a[2]=-m+g*Math.cos((f+2*Math.PI)/3),a[4]=-m+g*Math.cos((f+4*Math.PI)/3)},"solveCubic"),Hqe=o(function(e,r,n,i,a,s,l,u){var h=1*n*n-4*n*a+2*n*l+4*a*a-4*a*l+l*l+i*i-4*i*s+2*i*u+4*s*s-4*s*u+u*u,f=1*9*n*a-3*n*n-3*n*l-6*a*a+3*a*l+9*i*s-3*i*i-3*i*u-6*s*s+3*s*u,d=1*3*n*n-6*n*a+n*l-n*e+2*a*a+2*a*e-l*e+3*i*i-6*i*s+i*u-i*r+2*s*s+2*s*r-u*r,p=1*n*a-n*n+n*e-a*e+i*s-i*i+i*r-s*r,m=[];Uqe(h,f,d,p,m);for(var g=1e-7,y=[],v=0;v<6;v+=2)Math.abs(m[v+1])=0&&m[v]<=1&&y.push(m[v]);y.push(1),y.push(0);for(var x=-1,b,w,C,T=0;T=0?Ch?(e-a)*(e-a)+(r-s)*(r-s):f-p},"sqdistToFiniteLine"),Us=o(function(e,r,n){for(var i,a,s,l,u,h=0,f=0;f=e&&e>=s||i<=e&&e<=s)u=(e-i)/(s-i)*(l-a)+a,u>r&&h++;else continue;return h%2!==0},"pointInsidePolygonPoints"),Zu=o(function(e,r,n,i,a,s,l,u,h){var f=new Array(n.length),d;u[0]!=null?(d=Math.atan(u[1]/u[0]),u[0]<0?d=d+Math.PI/2:d=-d-Math.PI/2):d=u;for(var p=Math.cos(-d),m=Math.sin(-d),g=0;g0){var v=TS(f,-h);y=wS(v)}else y=f;return Us(e,r,y)},"pointInsidePolygon"),qqe=o(function(e,r,n,i,a,s,l,u){for(var h=new Array(n.length*2),f=0;f=0&&v<=1&&b.push(v),x>=0&&x<=1&&b.push(x),b.length===0)return[];var w=b[0]*u[0]+e,C=b[0]*u[1]+r;if(b.length>1){if(b[0]==b[1])return[w,C];var T=b[1]*u[0]+e,E=b[1]*u[1]+r;return[w,C,T,E]}else return[w,C]},"intersectLineCircle"),TP=o(function(e,r,n){return r<=e&&e<=n||n<=e&&e<=r?e:e<=r&&r<=n||n<=r&&r<=e?r:n},"midOfThree"),Ef=o(function(e,r,n,i,a,s,l,u,h){var f=e-a,d=n-e,p=l-a,m=r-s,g=i-r,y=u-s,v=p*m-y*f,x=d*m-g*f,b=y*d-p*g;if(b!==0){var w=v/b,C=x/b,T=.001,E=0-T,A=1+T;return E<=w&&w<=A&&E<=C&&C<=A?[e+w*d,r+w*g]:h?[e+w*d,r+w*g]:[]}else return v===0||x===0?TP(e,n,l)===l?[l,u]:TP(e,n,a)===a?[a,s]:TP(a,l,n)===n?[n,i]:[]:[]},"finiteLinesIntersect"),Xb=o(function(e,r,n,i,a,s,l,u){var h=[],f,d=new Array(n.length),p=!0;s==null&&(p=!1);var m;if(p){for(var g=0;g0){var y=TS(d,-u);m=wS(y)}else m=d}else m=n;for(var v,x,b,w,C=0;C2){for(var g=[f[0],f[1]],y=Math.pow(g[0]-e,2)+Math.pow(g[1]-r,2),v=1;vf&&(f=C)},"set"),get:o(function(w){return h[w]},"get")},p=0;p0?M=O.edgesTo(R)[0]:M=R.edgesTo(O)[0];var B=i(M);R=R.id(),S[R]>S[k]+B&&(S[R]=S[k]+B,_.nodes.indexOf(R)<0?_.push(R):_.updateItem(R),A[R]=0,E[R]=[]),S[R]==S[k]+B&&(A[R]=A[R]+A[k],E[R].push(k))}else for(var F=0;F0;){for(var H=T.pop(),Q=0;Q0&&l.push(n[u]);l.length!==0&&a.push(i.collection(l))}return a},"assign"),lYe=o(function(e,r){for(var n=0;n5&&arguments[5]!==void 0?arguments[5]:hYe,l=i,u,h,f=0;f=2?_b(e,r,n,0,Upe,fYe):_b(e,r,n,0,Vpe)},"euclidean"),squaredEuclidean:o(function(e,r,n){return _b(e,r,n,0,Upe)},"squaredEuclidean"),manhattan:o(function(e,r,n){return _b(e,r,n,0,Vpe)},"manhattan"),max:o(function(e,r,n){return _b(e,r,n,-1/0,dYe)},"max")};Q1["squared-euclidean"]=Q1.squaredEuclidean;Q1.squaredeuclidean=Q1.squaredEuclidean;o(IS,"clusteringDistance");pYe=la({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),oB=o(function(e){return pYe(e)},"setOptions"),kS=o(function(e,r,n,i,a){var s=a!=="kMedoids",l=s?function(d){return n[d]}:function(d){return i[d](n)},u=o(function(p){return i[p](r)},"getQ"),h=n,f=r;return IS(e,i.length,l,u,h,f)},"getDist"),kP=o(function(e,r,n){for(var i=n.length,a=new Array(i),s=new Array(i),l=new Array(r),u=null,h=0;hn)return!1}return!0},"haveMatricesConverged"),yYe=o(function(e,r,n){for(var i=0;il&&(l=r[h][f],u=f);a[u].push(e[h])}for(var d=0;d=a.threshold||a.mode==="dendrogram"&&e.length===1)return!1;var g=r[s],y=r[i[s]],v;a.mode==="dendrogram"?v={left:g,right:y,key:g.key}:v={value:g.value.concat(y.value),key:g.key},e[g.index]=v,e.splice(y.index,1),r[g.key]=v;for(var x=0;xn[y.key][b.key]&&(u=n[y.key][b.key])):a.linkage==="max"?(u=n[g.key][b.key],n[g.key][b.key]0&&i.push(a);return i},"findExemplars"),jpe=o(function(e,r,n){for(var i=[],a=0;al&&(s=h,l=r[a*e+h])}s>0&&i.push(s)}for(var f=0;fh&&(u=f,h=d)}n[a]=s[u]}return i=jpe(e,r,n),i},"assign"),Kpe=o(function(e){for(var r=this.cy(),n=this.nodes(),i=RYe(e),a={},s=0;s=D?(k=D,D=R,L=O):R>k&&(k=R);for(var M=0;M0?1:0;A[_%i.minIterations*l+H]=Q,$+=Q}if($>0&&(_>=i.minIterations-1||_==i.maxIterations-1)){for(var j=0,ie=0;ie1||E>1)&&(l=!0),d[w]=[],b.outgoers().forEach(function(S){S.isEdge()&&d[w].push(S.id())})}else p[w]=[void 0,b.target().id()]}):s.forEach(function(b){var w=b.id();if(b.isNode()){var C=b.degree(!0);C%2&&(u?h?l=!0:h=w:u=w),d[w]=[],b.connectedEdges().forEach(function(T){return d[w].push(T.id())})}else p[w]=[b.source().id(),b.target().id()]});var m={found:!1,trail:void 0};if(l)return m;if(h&&u)if(a){if(f&&h!=f)return m;f=h}else{if(f&&h!=f&&u!=f)return m;f||(f=h)}else f||(f=s[0].id());var g=o(function(w){for(var C=w,T=[w],E,A,S;d[C].length;)E=d[C].shift(),A=p[E][0],S=p[E][1],C!=S?(d[S]=d[S].filter(function(_){return _!=E}),C=S):!a&&C!=A&&(d[A]=d[A].filter(function(_){return _!=E}),C=A),T.unshift(E),T.unshift(C);return T},"walk"),y=[],v=[];for(v=g(f);v.length!=1;)d[v[0]].length==0?(y.unshift(s.getElementById(v.shift())),y.unshift(s.getElementById(v.shift()))):v=g(v.shift()).concat(v);y.unshift(s.getElementById(v.shift()));for(var x in d)if(d[x].length)return m;return m.found=!0,m.trail=this.spawn(y,!0),m},"hierholzer")},J6=o(function(){var e=this,r={},n=0,i=0,a=[],s=[],l={},u=o(function(p,m){for(var g=s.length-1,y=[],v=e.spawn();s[g].x!=p||s[g].y!=m;)y.push(s.pop().edge),g--;y.push(s.pop().edge),y.forEach(function(x){var b=x.connectedNodes().intersection(e);v.merge(x),b.forEach(function(w){var C=w.id(),T=w.connectedEdges().intersection(e);v.merge(w),r[C].cutVertex?v.merge(T.filter(function(E){return E.isLoop()})):v.merge(T)})}),a.push(v)},"buildComponent"),h=o(function d(p,m,g){p===g&&(i+=1),r[m]={id:n,low:n++,cutVertex:!1};var y=e.getElementById(m).connectedEdges().intersection(e);if(y.size()===0)a.push(e.spawn(e.getElementById(m)));else{var v,x,b,w;y.forEach(function(C){v=C.source().id(),x=C.target().id(),b=v===m?x:v,b!==g&&(w=C.id(),l[w]||(l[w]=!0,s.push({x:m,y:b,edge:C})),b in r?r[m].low=Math.min(r[m].low,r[b].id):(d(p,b,m),r[m].low=Math.min(r[m].low,r[b].low),r[m].id<=r[b].low&&(r[m].cutVertex=!0,u(m,b))))})}},"biconnectedSearch");e.forEach(function(d){if(d.isNode()){var p=d.id();p in r||(i=0,h(p,p),r[p].cutVertex=i>1)}});var f=Object.keys(r).filter(function(d){return r[d].cutVertex}).map(function(d){return e.getElementById(d)});return{cut:e.spawn(f),components:a}},"hopcroftTarjanBiconnected"),$Ye={hopcroftTarjanBiconnected:J6,htbc:J6,htb:J6,hopcroftTarjanBiconnectedComponents:J6},eS=o(function(){var e=this,r={},n=0,i=[],a=[],s=e.spawn(e),l=o(function u(h){a.push(h),r[h]={index:n,low:n++,explored:!1};var f=e.getElementById(h).connectedEdges().intersection(e);if(f.forEach(function(y){var v=y.target().id();v!==h&&(v in r||u(v),r[v].explored||(r[h].low=Math.min(r[h].low,r[v].low)))}),r[h].index===r[h].low){for(var d=e.spawn();;){var p=a.pop();if(d.merge(e.getElementById(p)),r[p].low=r[h].index,r[p].explored=!0,p===h)break}var m=d.edgesWith(d),g=d.merge(m);i.push(g),s=s.difference(g)}},"stronglyConnectedSearch");return e.forEach(function(u){if(u.isNode()){var h=u.id();h in r||l(h)}}),{cut:s,components:i}},"tarjanStronglyConnected"),zYe={tarjanStronglyConnected:eS,tsc:eS,tscc:eS,tarjanStronglyConnectedComponents:eS},Sme={};[qb,gqe,yqe,xqe,wqe,kqe,Cqe,Qqe,q1,Y1,FP,uYe,kYe,DYe,PYe,FYe,$Ye,zYe].forEach(function(t){rr(Sme,t)});Cme=0,Ame=1,_me=2,Ju=o(function t(e){if(!(this instanceof t))return new t(e);this.id="Thenable/1.0.7",this.state=Cme,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))},"api");Ju.prototype={fulfill:o(function(e){return Qpe(this,Ame,"fulfillValue",e)},"fulfill"),reject:o(function(e){return Qpe(this,_me,"rejectReason",e)},"reject"),then:o(function(e,r){var n=this,i=new Ju;return n.onFulfilled.push(Jpe(e,i,"fulfill")),n.onRejected.push(Jpe(r,i,"reject")),Dme(n),i.proxy},"then")};Qpe=o(function(e,r,n,i){return e.state===Cme&&(e.state=r,e[n]=i,Dme(e)),e},"deliver"),Dme=o(function(e){e.state===Ame?Zpe(e,"onFulfilled",e.fulfillValue):e.state===_me&&Zpe(e,"onRejected",e.rejectReason)},"execute"),Zpe=o(function(e,r,n){if(e[r].length!==0){var i=e[r];e[r]=[];var a=o(function(){for(var l=0;l0},"animatedImpl")},"animated"),clearQueue:o(function(){return o(function(){var r=this,n=r.length!==void 0,i=n?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var s=0;s0&&this.spawn(i).updateStyle().emit("class"),r},"classes"),addClass:o(function(e){return this.toggleClass(e,!0)},"addClass"),hasClass:o(function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},"hasClass"),toggleClass:o(function(e,r){En(e)||(e=e.match(/\S+/g)||[]);for(var n=this,i=r===void 0,a=[],s=0,l=n.length;s0&&this.spawn(a).updateStyle().emit("class"),n},"toggleClass"),removeClass:o(function(e){return this.toggleClass(e,!1)},"removeClass"),flashClass:o(function(e,r){var n=this;if(r==null)r=250;else if(r===0)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},r),n},"flashClass")};hS.className=hS.classNames=hS.classes;Vr={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:Hi,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};Vr.variable="(?:[\\w-.]|(?:\\\\"+Vr.metaChar+"))+";Vr.className="(?:[\\w-]|(?:\\\\"+Vr.metaChar+"))+";Vr.value=Vr.string+"|"+Vr.number;Vr.id=Vr.variable;(function(){var t,e,r;for(t=Vr.comparatorOp.split("|"),r=0;r=0)&&e!=="="&&(Vr.comparatorOp+="|\\!"+e)})();mn=o(function(){return{checks:[]}},"newQuery"),$t={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},zP=[{selector:":selected",matches:o(function(e){return e.selected()},"matches")},{selector:":unselected",matches:o(function(e){return!e.selected()},"matches")},{selector:":selectable",matches:o(function(e){return e.selectable()},"matches")},{selector:":unselectable",matches:o(function(e){return!e.selectable()},"matches")},{selector:":locked",matches:o(function(e){return e.locked()},"matches")},{selector:":unlocked",matches:o(function(e){return!e.locked()},"matches")},{selector:":visible",matches:o(function(e){return e.visible()},"matches")},{selector:":hidden",matches:o(function(e){return!e.visible()},"matches")},{selector:":transparent",matches:o(function(e){return e.transparent()},"matches")},{selector:":grabbed",matches:o(function(e){return e.grabbed()},"matches")},{selector:":free",matches:o(function(e){return!e.grabbed()},"matches")},{selector:":removed",matches:o(function(e){return e.removed()},"matches")},{selector:":inside",matches:o(function(e){return!e.removed()},"matches")},{selector:":grabbable",matches:o(function(e){return e.grabbable()},"matches")},{selector:":ungrabbable",matches:o(function(e){return!e.grabbable()},"matches")},{selector:":animated",matches:o(function(e){return e.animated()},"matches")},{selector:":unanimated",matches:o(function(e){return!e.animated()},"matches")},{selector:":parent",matches:o(function(e){return e.isParent()},"matches")},{selector:":childless",matches:o(function(e){return e.isChildless()},"matches")},{selector:":child",matches:o(function(e){return e.isChild()},"matches")},{selector:":orphan",matches:o(function(e){return e.isOrphan()},"matches")},{selector:":nonorphan",matches:o(function(e){return e.isChild()},"matches")},{selector:":compound",matches:o(function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()},"matches")},{selector:":loop",matches:o(function(e){return e.isLoop()},"matches")},{selector:":simple",matches:o(function(e){return e.isSimple()},"matches")},{selector:":active",matches:o(function(e){return e.active()},"matches")},{selector:":inactive",matches:o(function(e){return!e.active()},"matches")},{selector:":backgrounding",matches:o(function(e){return e.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:o(function(e){return!e.backgrounding()},"matches")}].sort(function(t,e){return hWe(t.selector,e.selector)}),Jje=function(){for(var t={},e,r=0;r0&&f.edgeCount>0)return un("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return un("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&un("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},"parse"),aKe=o(function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=o(function(f){return f??""},"clean"),r=o(function(f){return Zt(f)?'"'+f+'"':e(f)},"cleanVal"),n=o(function(f){return" "+f+" "},"space"),i=o(function(f,d){var p=f.type,m=f.value;switch(p){case $t.GROUP:{var g=e(m);return g.substring(0,g.length-1)}case $t.DATA_COMPARE:{var y=f.field,v=f.operator;return"["+y+n(e(v))+r(m)+"]"}case $t.DATA_BOOL:{var x=f.operator,b=f.field;return"["+e(x)+b+"]"}case $t.DATA_EXIST:{var w=f.field;return"["+w+"]"}case $t.META_COMPARE:{var C=f.operator,T=f.field;return"[["+T+n(e(C))+r(m)+"]]"}case $t.STATE:return m;case $t.ID:return"#"+m;case $t.CLASS:return"."+m;case $t.PARENT:case $t.CHILD:return a(f.parent,d)+n(">")+a(f.child,d);case $t.ANCESTOR:case $t.DESCENDANT:return a(f.ancestor,d)+" "+a(f.descendant,d);case $t.COMPOUND_SPLIT:{var E=a(f.left,d),A=a(f.subject,d),S=a(f.right,d);return E+(E.length>0?" ":"")+A+S}case $t.TRUE:return""}},"checkToString"),a=o(function(f,d){return f.checks.reduce(function(p,m,g){return p+(d===f&&g===0?"$":"")+i(m,d)},"")},"queryToString"),s="",l=0;l1&&l=0&&(r=r.replace("!",""),d=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),f=!0),(a||l||f)&&(u=!a&&!s?"":""+e,h=""+n),f&&(e=u=u.toLowerCase(),n=h=h.toLowerCase()),r){case"*=":i=u.indexOf(h)>=0;break;case"$=":i=u.indexOf(h,u.length-h.length)>=0;break;case"^=":i=u.indexOf(h)===0;break;case"=":i=e===n;break;case">":p=!0,i=e>n;break;case">=":p=!0,i=e>=n;break;case"<":p=!0,i=e1&&arguments[1]!==void 0?arguments[1]:!0;return fB(this,t,e,Fme)};o($me,"addParent");Z1.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return fB(this,t,e,$me)};o(dKe,"addParentAndChildren");Z1.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return fB(this,t,e,dKe)};Z1.ancestors=Z1.parents;Kb=zme={data:cn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:cn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:cn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:cn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:cn.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:cn.removeData({field:"rscratch",triggerEvent:!1}),id:o(function(){var e=this[0];if(e)return e._private.data.id},"id")};Kb.attr=Kb.data;Kb.removeAttr=Kb.removeData;pKe=zme,FS={};o(SP,"defineDegreeFunction");rr(FS,{degree:SP(function(t,e){return e.source().same(e.target())?2:1}),indegree:SP(function(t,e){return e.target().same(t)?1:0}),outdegree:SP(function(t,e){return e.source().same(t)?1:0})});o(F1,"defineDegreeBoundsFunction");rr(FS,{minDegree:F1("degree",function(t,e){return te}),minIndegree:F1("indegree",function(t,e){return te}),minOutdegree:F1("outdegree",function(t,e){return te})});rr(FS,{totalDegree:o(function(e){for(var r=0,n=this.nodes(),i=0;i0,p=d;d&&(f=f[0]);var m=p?f.position():{x:0,y:0};r!==void 0?h.position(e,r+m[e]):a!==void 0&&h.position({x:a.x+m.x,y:a.y+m.y})}else{var g=n.position(),y=l?n.parent():null,v=y&&y.length>0,x=v;v&&(y=y[0]);var b=x?y.position():{x:0,y:0};return a={x:g.x-b.x,y:g.y-b.y},e===void 0?a:a[e]}else if(!s)return;return this},"relativePosition")};Vl.modelPosition=Vl.point=Vl.position;Vl.modelPositions=Vl.points=Vl.positions;Vl.renderedPoint=Vl.renderedPosition;Vl.relativePoint=Vl.relativePosition;mKe=Gme;X1=Of={};Of.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),n=r.zoom(),i=r.pan(),a=e.x1*n+i.x,s=e.x2*n+i.x,l=e.y1*n+i.y,u=e.y2*n+i.y;return{x1:a,x2:s,y1:l,y2:u,w:s-a,h:u-l}};Of.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var n=r._private;n.compoundBoundsClean=!1,n.bbCache=null,t||r.emitAndNotify("bounds")}}),this)};Of.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(s){if(!s.isParent())return;var l=s._private,u=s.children(),h=s.pstyle("compound-sizing-wrt-labels").value==="include",f={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},d=u.boundingBox({includeLabels:h,includeOverlays:!1,useCache:!1}),p=l.position;(d.w===0||d.h===0)&&(d={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},d.x1=p.x-d.w/2,d.x2=p.x+d.w/2,d.y1=p.y-d.h/2,d.y2=p.y+d.h/2);function m(_,I,D){var k=0,L=0,R=I+D;return _>0&&R>0&&(k=I/R*_,L=D/R*_),{biasDiff:k,biasComplementDiff:L}}o(m,"computeBiasValues");function g(_,I,D,k){if(D.units==="%")switch(k){case"width":return _>0?D.pfValue*_:0;case"height":return I>0?D.pfValue*I:0;case"average":return _>0&&I>0?D.pfValue*(_+I)/2:0;case"min":return _>0&&I>0?_>I?D.pfValue*I:D.pfValue*_:0;case"max":return _>0&&I>0?_>I?D.pfValue*_:D.pfValue*I:0;default:return 0}else return D.units==="px"?D.pfValue:0}o(g,"computePaddingValues");var y=f.width.left.value;f.width.left.units==="px"&&f.width.val>0&&(y=y*100/f.width.val);var v=f.width.right.value;f.width.right.units==="px"&&f.width.val>0&&(v=v*100/f.width.val);var x=f.height.top.value;f.height.top.units==="px"&&f.height.val>0&&(x=x*100/f.height.val);var b=f.height.bottom.value;f.height.bottom.units==="px"&&f.height.val>0&&(b=b*100/f.height.val);var w=m(f.width.val-d.w,y,v),C=w.biasDiff,T=w.biasComplementDiff,E=m(f.height.val-d.h,x,b),A=E.biasDiff,S=E.biasComplementDiff;l.autoPadding=g(d.w,d.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),l.autoWidth=Math.max(d.w,f.width.val),p.x=(-C+d.x1+d.x2+T)/2,l.autoHeight=Math.max(d.h,f.height.val),p.y=(-A+d.y1+d.y2+S)/2}o(r,"update");for(var n=0;ne.x2?i:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},"updateBounds"),Pp=o(function(e,r){return r==null?e:zl(e,r.x1,r.y1,r.x2,r.y2)},"updateBoundsFromBox"),Db=o(function(e,r,n){return Gl(e,r,n)},"prefixedProperty"),tS=o(function(e,r,n){if(!r.cy().headless()){var i=r._private,a=i.rstyle,s=a.arrowWidth/2,l=r.pstyle(n+"-arrow-shape").value,u,h;if(l!=="none"){n==="source"?(u=a.srcX,h=a.srcY):n==="target"?(u=a.tgtX,h=a.tgtY):(u=a.midX,h=a.midY);var f=i.arrowBounds=i.arrowBounds||{},d=f[n]=f[n]||{};d.x1=u-s,d.y1=h-s,d.x2=u+s,d.y2=h+s,d.w=d.x2-d.x1,d.h=d.y2-d.y1,cS(d,1),zl(e,d.x1,d.y1,d.x2,d.y2)}}},"updateBoundsFromArrow"),CP=o(function(e,r,n){if(!r.cy().headless()){var i;n?i=n+"-":i="";var a=r._private,s=a.rstyle,l=r.pstyle(i+"label").strValue;if(l){var u=r.pstyle("text-halign"),h=r.pstyle("text-valign"),f=Db(s,"labelWidth",n),d=Db(s,"labelHeight",n),p=Db(s,"labelX",n),m=Db(s,"labelY",n),g=r.pstyle(i+"text-margin-x").pfValue,y=r.pstyle(i+"text-margin-y").pfValue,v=r.isEdge(),x=r.pstyle(i+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,w=r.pstyle("text-border-width").pfValue,C=w/2,T=r.pstyle("text-background-padding").pfValue,E=2,A=d,S=f,_=S/2,I=A/2,D,k,L,R;if(v)D=p-_,k=p+_,L=m-I,R=m+I;else{switch(u.value){case"left":D=p-S,k=p;break;case"center":D=p-_,k=p+_;break;case"right":D=p,k=p+S;break}switch(h.value){case"top":L=m-A,R=m;break;case"center":L=m-I,R=m+I;break;case"bottom":L=m,R=m+A;break}}var O=g-Math.max(b,C)-T-E,M=g+Math.max(b,C)+T+E,B=y-Math.max(b,C)-T-E,F=y+Math.max(b,C)+T+E;D+=O,k+=M,L+=B,R+=F;var P=n||"main",z=a.labelBounds,$=z[P]=z[P]||{};$.x1=D,$.y1=L,$.x2=k,$.y2=R,$.w=k-D,$.h=R-L,$.leftPad=O,$.rightPad=M,$.topPad=B,$.botPad=F;var H=v&&x.strValue==="autorotate",Q=x.pfValue!=null&&x.pfValue!==0;if(H||Q){var j=H?Db(a.rstyle,"labelAngle",n):x.pfValue,ie=Math.cos(j),ne=Math.sin(j),le=(D+k)/2,he=(L+R)/2;if(!v){switch(u.value){case"left":le=k;break;case"right":le=D;break}switch(h.value){case"top":he=R;break;case"bottom":he=L;break}}var K=o(function(ce,ae){return ce=ce-le,ae=ae-he,{x:ce*ie-ae*ne+le,y:ce*ne+ae*ie+he}},"rotate"),X=K(D,L),te=K(D,R),J=K(k,L),se=K(k,R);D=Math.min(X.x,te.x,J.x,se.x),k=Math.max(X.x,te.x,J.x,se.x),L=Math.min(X.y,te.y,J.y,se.y),R=Math.max(X.y,te.y,J.y,se.y)}var ue=P+"Rot",Z=z[ue]=z[ue]||{};Z.x1=D,Z.y1=L,Z.x2=k,Z.y2=R,Z.w=k-D,Z.h=R-L,zl(e,D,L,k,R),zl(a.labelBounds.all,D,L,k,R)}return e}},"updateBoundsFromLabel"),gKe=o(function(e,r){if(!r.cy().headless()){var n=r.pstyle("outline-opacity").value,i=r.pstyle("outline-width").value;if(n>0&&i>0){var a=r.pstyle("outline-offset").value,s=r.pstyle("shape").value,l=i+a,u=(e.w+l*2)/e.w,h=(e.h+l*2)/e.h,f=0,d=0;["diamond","pentagon","round-triangle"].includes(s)?(u=(e.w+l*2.4)/e.w,d=-l/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(s)?u=(e.w+l*2.4)/e.w:s==="star"?(u=(e.w+l*2.8)/e.w,h=(e.h+l*2.6)/e.h,d=-l/3.8):s==="triangle"?(u=(e.w+l*2.8)/e.w,h=(e.h+l*2.4)/e.h,d=-l/1.4):s==="vee"&&(u=(e.w+l*4.4)/e.w,h=(e.h+l*3.8)/e.h,d=-l*.5);var p=e.h*h-e.h,m=e.w*u-e.w;if(uS(e,[Math.ceil(p/2),Math.ceil(m/2)]),f!=0||d!==0){var g=Bqe(e,f,d);gme(e,g)}}}},"updateBoundsFromOutline"),yKe=o(function(e,r){var n=e._private.cy,i=n.styleEnabled(),a=n.headless(),s=Hs(),l=e._private,u=e.isNode(),h=e.isEdge(),f,d,p,m,g,y,v=l.rstyle,x=u&&i?e.pstyle("bounds-expansion").pfValue:[0],b=o(function(Se){return Se.pstyle("display").value!=="none"},"isDisplayed"),w=!i||b(e)&&(!h||b(e.source())&&b(e.target()));if(w){var C=0,T=0;i&&r.includeOverlays&&(C=e.pstyle("overlay-opacity").value,C!==0&&(T=e.pstyle("overlay-padding").value));var E=0,A=0;i&&r.includeUnderlays&&(E=e.pstyle("underlay-opacity").value,E!==0&&(A=e.pstyle("underlay-padding").value));var S=Math.max(T,A),_=0,I=0;if(i&&(_=e.pstyle("width").pfValue,I=_/2),u&&r.includeNodes){var D=e.position();g=D.x,y=D.y;var k=e.outerWidth(),L=k/2,R=e.outerHeight(),O=R/2;f=g-L,d=g+L,p=y-O,m=y+O,zl(s,f,p,d,m),i&&r.includeOutlines&&gKe(s,e)}else if(h&&r.includeEdges)if(i&&!a){var M=e.pstyle("curve-style").strValue;if(f=Math.min(v.srcX,v.midX,v.tgtX),d=Math.max(v.srcX,v.midX,v.tgtX),p=Math.min(v.srcY,v.midY,v.tgtY),m=Math.max(v.srcY,v.midY,v.tgtY),f-=I,d+=I,p-=I,m+=I,zl(s,f,p,d,m),M==="haystack"){var B=v.haystackPts;if(B&&B.length===2){if(f=B[0].x,p=B[0].y,d=B[1].x,m=B[1].y,f>d){var F=f;f=d,d=F}if(p>m){var P=p;p=m,m=P}zl(s,f-I,p-I,d+I,m+I)}}else if(M==="bezier"||M==="unbundled-bezier"||M.endsWith("segments")||M.endsWith("taxi")){var z;switch(M){case"bezier":case"unbundled-bezier":z=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":z=v.linePts;break}if(z!=null)for(var $=0;$d){var le=f;f=d,d=le}if(p>m){var he=p;p=m,m=he}f-=I,d+=I,p-=I,m+=I,zl(s,f,p,d,m)}if(i&&r.includeEdges&&h&&(tS(s,e,"mid-source"),tS(s,e,"mid-target"),tS(s,e,"source"),tS(s,e,"target")),i){var K=e.pstyle("ghost").value==="yes";if(K){var X=e.pstyle("ghost-offset-x").pfValue,te=e.pstyle("ghost-offset-y").pfValue;zl(s,s.x1+X,s.y1+te,s.x2+X,s.y2+te)}}var J=l.bodyBounds=l.bodyBounds||{};Fpe(J,s),uS(J,x),cS(J,1),i&&(f=s.x1,d=s.x2,p=s.y1,m=s.y2,zl(s,f-S,p-S,d+S,m+S));var se=l.overlayBounds=l.overlayBounds||{};Fpe(se,s),uS(se,x),cS(se,1);var ue=l.labelBounds=l.labelBounds||{};ue.all!=null?Pqe(ue.all):ue.all=Hs(),i&&r.includeLabels&&(r.includeMainLabels&&CP(s,e,null),h&&(r.includeSourceLabels&&CP(s,e,"source"),r.includeTargetLabels&&CP(s,e,"target")))}return s.x1=el(s.x1),s.y1=el(s.y1),s.x2=el(s.x2),s.y2=el(s.y2),s.w=el(s.x2-s.x1),s.h=el(s.y2-s.y1),s.w>0&&s.h>0&&w&&(uS(s,x),cS(s,1)),s},"boundingBoxImpl"),Ume=o(function(e){var r=0,n=o(function(s){return(s?1:0)<=0;l--)s(l);return this};Nf.removeAllListeners=function(){return this.removeListener("*")};Nf.emit=Nf.trigger=function(t,e,r){var n=this.listeners,i=n.length;return this.emitting++,En(e)||(e=[e]),MKe(this,function(a,s){r!=null&&(n=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],i=n.length);for(var l=o(function(f){var d=n[f];if(d.type===s.type&&(!d.namespace||d.namespace===s.namespace||d.namespace===RKe)&&a.eventMatches(a.context,d,s)){var p=[s];e!=null&&uqe(p,e),a.beforeEmit(a.context,d,s),d.conf&&d.conf.one&&(a.listeners=a.listeners.filter(function(y){return y!==d}));var m=a.callbackContext(a.context,d,s),g=d.callback.apply(m,p);a.afterEmit(a.context,d,s),g===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),u=0;u1&&!s){var l=this.length-1,u=this[l],h=u._private.data.id;this[l]=void 0,this[e]=u,a.set(h,{ele:u,index:e})}return this.length--,this},"unmergeAt"),unmergeOne:o(function(e){e=e[0];var r=this._private,n=e._private.data.id,i=r.map,a=i.get(n);if(!a)return this;var s=a.index;return this.unmergeAt(s),this},"unmergeOne"),unmerge:o(function(e){var r=this._private.cy;if(!e)return this;if(e&&Zt(e)){var n=e;e=r.mutableElements().filter(n)}for(var i=0;i=0;r--){var n=this[r];e(n)&&this.unmergeAt(r)}return this},"unmergeBy"),map:o(function(e,r){for(var n=[],i=this,a=0;an&&(n=u,i=l)}return{value:n,ele:i}},"max"),min:o(function(e,r){for(var n=1/0,i,a=this,s=0;s=0&&a"u"?"undefined":Wi(Symbol))!=e&&Wi(Symbol.iterator)!=e;r&&(ES[Symbol.iterator]=function(){var n=this,i={value:void 0,done:!1},a=0,s=this.length;return X0e({next:o(function(){return a1&&arguments[1]!==void 0?arguments[1]:!0,n=this[0],i=n.cy();if(i.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,i.style().apply(n));var a=n._private.style[e];return a??(r?i.style().getDefaultProperty(e):null)}},"parsedStyle"),numericStyle:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var n=r.pstyle(e);return n.pfValue!==void 0?n.pfValue:n.value}},"numericStyle"),numericStyleUnits:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},"numericStyleUnits"),renderedStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=this[0];if(n)return r.style().getRenderedStyle(n,e)},"renderedStyle"),style:o(function(e,r){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,a=n.style();if(Ur(e)){var s=e;a.applyBypass(this,s,i),this.emitAndNotify("style")}else if(Zt(e))if(r===void 0){var l=this[0];return l?a.getStylePropertyValue(l,e):void 0}else a.applyBypass(this,e,r,i),this.emitAndNotify("style");else if(e===void 0){var u=this[0];return u?a.getRawStyle(u):void 0}return this},"style"),removeStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=!1,i=r.style(),a=this;if(e===void 0)for(var s=0;s0&&e.push(f[0]),e.push(l[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:o(function(e){return this.neighborhood().add(this).filter(e)},"closedNeighborhood"),openNeighborhood:o(function(e){return this.neighborhood(e)},"openNeighborhood")});$a.neighbourhood=$a.neighborhood;$a.closedNeighbourhood=$a.closedNeighborhood;$a.openNeighbourhood=$a.openNeighborhood;rr($a,{source:tl(o(function(e){var r=this[0],n;return r&&(n=r._private.source||r.cy().collection()),n&&e?n.filter(e):n},"sourceImpl"),"source"),target:tl(o(function(e){var r=this[0],n;return r&&(n=r._private.target||r.cy().collection()),n&&e?n.filter(e):n},"targetImpl"),"target"),sources:g0e({attr:"source"}),targets:g0e({attr:"target"})});o(g0e,"defineSourceFunction");rr($a,{edgesWith:tl(y0e(),"edgesWith"),edgesTo:tl(y0e({thisIsSrc:!0}),"edgesTo")});o(y0e,"defineEdgesWithFunction");rr($a,{connectedEdges:tl(function(t){for(var e=[],r=this,n=0;n0);return s},"components"),component:o(function(){var e=this[0];return e.cy().mutableElements().components(e)[0]},"component")});$a.componentsOf=$a.components;ka=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){ai("A collection must have a reference to the core");return}var a=new Xc,s=!1;if(!r)r=[];else if(r.length>0&&Ur(r[0])&&!t4(r[0])){s=!0;for(var l=[],u=new J1,h=0,f=r.length;h0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=r.cy(),i=n._private,a=[],s=[],l,u=0,h=r.length;u0){for(var P=l.length===r.length?r:new ka(n,l),z=0;z0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=[],i={},a=r._private.cy;function s(R){for(var O=R._private.edges,M=0;M0&&(t?D.emitAndNotify("remove"):e&&D.emit("remove"));for(var k=0;kf&&Math.abs(g.v)>f;);return p?function(y){return u[y*(u.length-1)|0]}:h},"springRK4Factory")}(),Nn=o(function(e,r,n,i){var a=UKe(e,r,n,i);return function(s,l,u){return s+(l-s)*a(u)}},"cubicBezier"),dS={linear:o(function(e,r,n){return e+(r-e)*n},"linear"),ease:Nn(.25,.1,.25,1),"ease-in":Nn(.42,0,1,1),"ease-out":Nn(0,0,.58,1),"ease-in-out":Nn(.42,0,.58,1),"ease-in-sine":Nn(.47,0,.745,.715),"ease-out-sine":Nn(.39,.575,.565,1),"ease-in-out-sine":Nn(.445,.05,.55,.95),"ease-in-quad":Nn(.55,.085,.68,.53),"ease-out-quad":Nn(.25,.46,.45,.94),"ease-in-out-quad":Nn(.455,.03,.515,.955),"ease-in-cubic":Nn(.55,.055,.675,.19),"ease-out-cubic":Nn(.215,.61,.355,1),"ease-in-out-cubic":Nn(.645,.045,.355,1),"ease-in-quart":Nn(.895,.03,.685,.22),"ease-out-quart":Nn(.165,.84,.44,1),"ease-in-out-quart":Nn(.77,0,.175,1),"ease-in-quint":Nn(.755,.05,.855,.06),"ease-out-quint":Nn(.23,1,.32,1),"ease-in-out-quint":Nn(.86,0,.07,1),"ease-in-expo":Nn(.95,.05,.795,.035),"ease-out-expo":Nn(.19,1,.22,1),"ease-in-out-expo":Nn(1,0,0,1),"ease-in-circ":Nn(.6,.04,.98,.335),"ease-out-circ":Nn(.075,.82,.165,1),"ease-in-out-circ":Nn(.785,.135,.15,.86),spring:o(function(e,r,n){if(n===0)return dS.linear;var i=HKe(e,r,n);return function(a,s,l){return a+(s-a)*i(l)}},"spring"),"cubic-bezier":Nn};o(x0e,"getEasedValue");o(b0e,"getValue");o($1,"ease");o(WKe,"step$1");o(Rb,"valid");o(qKe,"startAnimation");o(w0e,"stepAll");YKe={animate:cn.animate(),animation:cn.animation(),animated:cn.animated(),clearQueue:cn.clearQueue(),delay:cn.delay(),delayAnimation:cn.delayAnimation(),stop:cn.stop(),addToAnimationPool:o(function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},"addToAnimationPool"),stopAnimationLoop:o(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:o(function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&xS(o(function(a){w0e(a,e),r()},"animationStep"))}o(r,"headlessStep");var n=e.renderer();n&&n.beforeRender?n.beforeRender(o(function(a,s){w0e(s,e)},"rendererAnimationStep"),n.beforeRenderPriorities.animations):r()},"startAnimationLoop")},XKe={qualifierCompare:o(function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},"qualifierCompare"),eventMatches:o(function(e,r,n){var i=r.qualifier;return i!=null?e!==n.target&&t4(n.target)&&i.matches(n.target):!0},"eventMatches"),addEventFields:o(function(e,r){r.cy=e,r.target=e},"addEventFields"),callbackContext:o(function(e,r,n){return r.qualifier!=null?n.target:e},"callbackContext")},iS=o(function(e){return Zt(e)?new Lf(e):e},"argSelector"),ege={createEmitter:o(function(){var e=this._private;return e.emitter||(e.emitter=new $S(XKe,this)),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(e,r,n){return this.emitter().on(e,iS(r),n),this},"on"),removeListener:o(function(e,r,n){return this.emitter().removeListener(e,iS(r),n),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:o(function(e,r,n){return this.emitter().one(e,iS(r),n),this},"one"),once:o(function(e,r,n){return this.emitter().one(e,iS(r),n),this},"once"),emit:o(function(e,r){return this.emitter().emit(e,r),this},"emit"),emitAndNotify:o(function(e,r){return this.emit(e),this.notify(e,r),this},"emitAndNotify")};cn.eventAliasesOn(ege);VP={png:o(function(e){var r=this._private.renderer;return e=e||{},r.png(e)},"png"),jpg:o(function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)},"jpg")};VP.jpeg=VP.jpg;pS={layout:o(function(e){var r=this;if(e==null){ai("Layout options must be specified to make a layout");return}if(e.name==null){ai("A `name` must be specified to make a layout");return}var n=e.name,i=r.extension("layout",n);if(i==null){ai("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var a;Zt(e.eles)?a=r.$(e.eles):a=e.eles!=null?e.eles:r.$();var s=new i(rr({},e,{cy:r,eles:a}));return s},"layout")};pS.createLayout=pS.makeLayout=pS.layout;jKe={notify:o(function(e,r){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();r!=null&&i.merge(r);return}if(n.notificationsEnabled){var a=this.renderer();this.destroyed()||!a||a.notify(e,r)}},"notify"),notifications:o(function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},"notifications"),noNotifications:o(function(e){this.notifications(!1),e(),this.notifications(!0)},"noNotifications"),batching:o(function(){return this._private.batchCount>0},"batching"),startBatch:o(function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},"startBatch"),endBatch:o(function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var i=e.batchNotifications[n];i.empty()?r.notify(n):r.notify(n,i)})}return this},"endBatch"),batch:o(function(e){return this.startBatch(),e(),this.endBatch(),this},"batch"),batchData:o(function(e){var r=this;return this.batch(function(){for(var n=Object.keys(e),i=0;i0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(n){var i=n._private;i.rscratch={},i.rstyle={},i.animation.current=[],i.animation.queue=[]})},"destroyRenderer"),onRender:o(function(e){return this.on("render",e)},"onRender"),offRender:o(function(e){return this.off("render",e)},"offRender")};UP.invalidateDimensions=UP.resize;mS={collection:o(function(e,r){return Zt(e)?this.$(e):go(e)?e.collection():En(e)?(r||(r={}),new ka(this,e,r.unique,r.removed)):new ka(this)},"collection"),nodes:o(function(e){var r=this.$(function(n){return n.isNode()});return e?r.filter(e):r},"nodes"),edges:o(function(e){var r=this.$(function(n){return n.isEdge()});return e?r.filter(e):r},"edges"),$:o(function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},"$"),mutableElements:o(function(){return this._private.elements},"mutableElements")};mS.elements=mS.filter=mS.$;Ga={},$b="t",QKe="f";Ga.apply=function(t){for(var e=this,r=e._private,n=r.cy,i=n.collection(),a=0;a0;if(p||d&&m){var g=void 0;p&&m||p?g=h.properties:m&&(g=h.mappedProperties);for(var y=0;y1&&(C=1),l.color){var E=n.valueMin[0],A=n.valueMax[0],S=n.valueMin[1],_=n.valueMax[1],I=n.valueMin[2],D=n.valueMax[2],k=n.valueMin[3]==null?1:n.valueMin[3],L=n.valueMax[3]==null?1:n.valueMax[3],R=[Math.round(E+(A-E)*C),Math.round(S+(_-S)*C),Math.round(I+(D-I)*C),Math.round(k+(L-k)*C)];a={bypass:n.bypass,name:n.name,value:R,strValue:"rgb("+R[0]+", "+R[1]+", "+R[2]+")"}}else if(l.number){var O=n.valueMin+(n.valueMax-n.valueMin)*C;a=this.parse(n.name,O,n.bypass,p)}else return!1;if(!a)return y(),!1;a.mapping=n,n=a;break}case s.data:{for(var M=n.field.split("."),B=d.data,F=0;F0&&a>0){for(var l={},u=!1,h=0;h0?t.delayAnimation(s).play().promise().then(w):w()}).then(function(){return t.animation({style:l,duration:a,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1})}else n.transitioning&&(this.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1)};Ga.checkTrigger=function(t,e,r,n,i,a){var s=this.properties[e],l=i(s);l!=null&&l(r,n)&&a(s)};Ga.checkZOrderTrigger=function(t,e,r,n){var i=this;this.checkTrigger(t,e,r,n,function(a){return a.triggersZOrder},function(){i._private.cy.notify("zorder",t)})};Ga.checkBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBounds},function(i){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache(),i.triggersBoundsOfParallelBeziers&&e==="curve-style"&&(r==="bezier"||n==="bezier")&&t.parallelEdges().forEach(function(a){a.dirtyBoundingBoxCache()}),i.triggersBoundsOfConnectedEdges&&e==="display"&&(r==="none"||n==="none")&&t.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};Ga.checkTriggers=function(t,e,r,n){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,n),this.checkBoundsTrigger(t,e,r,n)};s4={};s4.applyBypass=function(t,e,r,n){var i=this,a=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var l=0;li.length?n=n.substr(i.length):n=""}o(l,"removeSelAndBlockFromRemaining");function u(){a.length>s.length?a=a.substr(s.length):a=""}for(o(u,"removePropAndValFromRem");;){var h=n.match(/^\s*$/);if(h)break;var f=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){un("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}i=f[0];var d=f[1];if(d!=="core"){var p=new Lf(d);if(p.invalid){un("Skipping parsing of block: Invalid selector found in string stylesheet: "+d),l();continue}}var m=f[2],g=!1;a=m;for(var y=[];;){var v=a.match(/^\s*$/);if(v)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){un("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+m),g=!0;break}s=x[0];var b=x[1],w=x[2],C=e.properties[b];if(!C){un("Skipping property: Invalid property name in: "+s),u();continue}var T=r.parse(b,w);if(!T){un("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:b,val:w}),u()}if(g){l();break}r.selector(d);for(var E=0;E=7&&e[0]==="d"&&(f=new RegExp(l.data.regex).exec(e))){if(r)return!1;var p=l.data;return{name:t,value:f,strValue:""+e,mapped:p,field:f[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(d=new RegExp(l.mapData.regex).exec(e))){if(r||h.multiple)return!1;var m=l.mapData;if(!(h.color||h.number))return!1;var g=this.parse(t,d[4]);if(!g||g.mapped)return!1;var y=this.parse(t,d[5]);if(!y||y.mapped)return!1;if(g.pfValue===y.pfValue||g.strValue===y.strValue)return un("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+g.strValue+"`"),this.parse(t,g.strValue);if(h.color){var v=g.value,x=y.value,b=v[0]===x[0]&&v[1]===x[1]&&v[2]===x[2]&&(v[3]===x[3]||(v[3]==null||v[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:t,value:d,strValue:""+e,mapped:m,field:d[1],fieldMin:parseFloat(d[2]),fieldMax:parseFloat(d[3]),valueMin:g.value,valueMax:y.value,bypass:r}}}if(h.multiple&&n!=="multiple"){var w;if(u?w=e.split(/\s+/):En(e)?w=e:w=[e],h.evenMultiple&&w.length%2!==0)return null;for(var C=[],T=[],E=[],A="",S=!1,_=0;_0?" ":"")+I.strValue}return h.validate&&!h.validate(C,T)?null:h.singleEnum&&S?C.length===1&&Zt(C[0])?{name:t,value:C[0],strValue:C[0],bypass:r}:null:{name:t,value:C,pfValue:E,strValue:A,bypass:r,units:T}}var D=o(function(){for(var K=0;Kh.max||h.strictMax&&e===h.max))return null;var M={name:t,value:e,strValue:""+e+(k||""),units:k,bypass:r};return h.unitless||k!=="px"&&k!=="em"?M.pfValue=e:M.pfValue=k==="px"||!k?e:this.getEmSizeInPixels()*e,(k==="ms"||k==="s")&&(M.pfValue=k==="ms"?e:1e3*e),(k==="deg"||k==="rad")&&(M.pfValue=k==="rad"?e:Nqe(e)),k==="%"&&(M.pfValue=e/100),M}else if(h.propList){var B=[],F=""+e;if(F!=="none"){for(var P=F.split(/\s*,\s*|\s+/),z=0;z0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0){u=Math.min((s-2*r)/n.w,(l-2*r)/n.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=n.minZoom&&(n.maxZoom=r),this},"zoomRange"),minZoom:o(function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},"minZoom"),maxZoom:o(function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},"maxZoom"),getZoomedViewport:o(function(e){var r=this._private,n=r.pan,i=r.zoom,a,s,l=!1;if(r.zoomingEnabled||(l=!0),Ct(e)?s=e:Ur(e)&&(s=e.level,e.position!=null?a=MS(e.position,i,n):e.renderedPosition!=null&&(a=e.renderedPosition),a!=null&&!r.panningEnabled&&(l=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,a.push("zoom"))}if(i&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var h=e.pan;Ct(h.x)&&(r.pan.x=h.x,l=!1),Ct(h.y)&&(r.pan.y=h.y,l=!1),l||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},"viewport"),center:o(function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:o(function(e,r){if(this._private.panningEnabled){if(Zt(e)){var n=e;e=this.mutableElements().filter(n)}else go(e)||(e=this.mutableElements());if(e.length!==0){var i=e.boundingBox(),a=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var l={x:(a-r*(i.x1+i.x2))/2,y:(s-r*(i.y1+i.y2))/2};return l}}},"getCenterPan"),reset:o(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:o(function(){this._private.sizeCache=null},"invalidateSize"),size:o(function(){var e=this._private,r=e.container,n=this;return e.sizeCache=e.sizeCache||(r?function(){var i=n.window().getComputedStyle(r),a=o(function(l){return parseFloat(i.getPropertyValue(l))},"val");return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}}():{width:1,height:1})},"size"),width:o(function(){return this.size().width},"width"),height:o(function(){return this.size().height},"height"),extent:o(function(){var e=this._private.pan,r=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-e.x)/r,x2:(n.x2-e.x)/r,y1:(n.y1-e.y)/r,y2:(n.y2-e.y)/r};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},"extent"),renderedExtent:o(function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},"renderedExtent"),multiClickDebounceTime:o(function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};Hp.centre=Hp.center;Hp.autolockNodes=Hp.autolock;Hp.autoungrabifyNodes=Hp.autoungrabify;Zb={data:cn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:cn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:cn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:cn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Zb.attr=Zb.data;Zb.removeAttr=Zb.removeData;Jb=o(function(e){var r=this;e=rr({},e);var n=e.container;n&&!vS(n)&&vS(n[0])&&(n=n[0]);var i=n?n._cyreg:null;i=i||{},i&&i.cy&&(i.cy.destroy(),i={});var a=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=r;var s=Ui!==void 0&&n!==void 0&&!e.headless,l=e;l.layout=rr({name:s?"grid":"null"},l.layout),l.renderer=rr({name:s?"canvas":"null"},l.renderer);var u=o(function(g,y,v){return y!==void 0?y:v!==void 0?v:g},"defVal"),h=this._private={container:n,ready:!1,options:l,elements:new ka(this),listeners:[],aniEles:new ka(this),data:l.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,l.zoomingEnabled),userZoomingEnabled:u(!0,l.userZoomingEnabled),panningEnabled:u(!0,l.panningEnabled),userPanningEnabled:u(!0,l.userPanningEnabled),boxSelectionEnabled:u(!0,l.boxSelectionEnabled),autolock:u(!1,l.autolock,l.autolockNodes),autoungrabify:u(!1,l.autoungrabify,l.autoungrabifyNodes),autounselectify:u(!1,l.autounselectify),styleEnabled:l.styleEnabled===void 0?s:l.styleEnabled,zoom:Ct(l.zoom)?l.zoom:1,pan:{x:Ur(l.pan)&&Ct(l.pan.x)?l.pan.x:0,y:Ur(l.pan)&&Ct(l.pan.y)?l.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,l.multiClickDebounceTime)};this.createEmitter(),this.selectionType(l.selectionType),this.zoomRange({min:l.minZoom,max:l.maxZoom});var f=o(function(g,y){var v=g.some(nWe);if(v)return ey.all(g).then(y);y(g)},"loadExtData");h.styleEnabled&&r.setStyle([]);var d=rr({},l,l.renderer);r.initRenderer(d);var p=o(function(g,y,v){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(Ur(g)||En(g))&&r.add(g),r.one("layoutready",function(w){r.notifications(!0),r.emit(w),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",v),r.emit("done")});var b=rr({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()},"setElesAndLayout");f([l.style,l.elements],function(m){var g=m[0],y=m[1];h.styleEnabled&&r.style().append(g),p(y,function(){r.startAnimationLoop(),h.ready=!0,si(l.ready)&&r.on("ready",l.ready);for(var v=0;v0,l=!!t.boundingBox,u=e.extent(),h=Hs(l?t.boundingBox:{x1:u.x1,y1:u.y1,w:u.w,h:u.h}),f;if(go(t.roots))f=t.roots;else if(En(t.roots)){for(var d=[],p=0;p0;){var O=R(),M=I(O,k);if(M)O.outgoers().filter(function(ae){return ae.isNode()&&r.has(ae)}).forEach(L);else if(M===null){un("Detected double maximal shift for node `"+O.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var B=0;if(t.avoidOverlap)for(var F=0;F0&&b[0].length<=3?$e/2:0),Ie=2*Math.PI/b[ze].length*He;return ze===0&&b[0].length===1&&(Re=1),{x:se.x+Re*Math.cos(Ie),y:se.y+Re*Math.sin(Ie)}}else{var be=b[ze].length,W=Math.max(be===1?0:l?(h.w-t.padding*2-ue.w)/((t.grid?Se:be)-1):(h.w-t.padding*2-ue.w)/((t.grid?Se:be)+1),B),de={x:se.x+(He+1-(be+1)/2)*W,y:se.y+(ze+1-(ne+1)/2)*Z};return de}},"getPosition");return r.nodes().layoutPositions(this,t,ce),this};rQe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(rge,"CircleLayout");rge.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=n.nodes().not(":parent");e.sort&&(a=a.sort(e.sort));for(var s=Hs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=e.sweep===void 0?2*Math.PI-2*Math.PI/a.length:e.sweep,h=u/Math.max(1,a.length-1),f,d=0,p=0;p1&&e.avoidOverlap){d*=1.75;var x=Math.cos(h)-Math.cos(0),b=Math.sin(h)-Math.sin(0),w=Math.sqrt(d*d/(x*x+b*b));f=Math.max(w,f)}var C=o(function(E,A){var S=e.startAngle+A*h*(i?1:-1),_=f*Math.cos(S),I=f*Math.sin(S),D={x:l.x+_,y:l.y+I};return D},"getPos");return n.nodes().layoutPositions(this,e,C),this};nQe={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:o(function(e){return e.degree()},"concentric"),levelWidth:o(function(e){return e.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(nge,"ConcentricLayout");nge.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,n=t.cy,i=e.eles,a=i.nodes().not(":parent"),s=Hs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],h=0,f=0;f0){var T=Math.abs(b[0].value-C.value);T>=v&&(b=[],x.push(b))}b.push(C)}var E=h+e.minNodeSpacing;if(!e.avoidOverlap){var A=x.length>0&&x[0].length>1,S=Math.min(s.w,s.h)/2-E,_=S/(x.length+A?1:0);E=Math.min(E,_)}for(var I=0,D=0;D1&&e.avoidOverlap){var O=Math.cos(R)-Math.cos(0),M=Math.sin(R)-Math.sin(0),B=Math.sqrt(E*E/(O*O+M*M));I=Math.max(B,I)}k.r=I,I+=E}if(e.equidistant){for(var F=0,P=0,z=0;z=t.numIter||(hQe(n,t),n.temperature=n.temperature*t.coolingFactor,n.temperature=t.animationThreshold&&a(),xS(d)}},"frame");f()}else{for(;h;)h=s(u),u++;E0e(n,t),l()}return this};HS.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};HS.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};aQe=o(function(e,r,n){for(var i=n.eles.edges(),a=n.eles.nodes(),s=Hs(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),l={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=n.eles.components(),h={},f=0;f0){l.graphSet.push(S);for(var f=0;fi.count?0:i.graph},"findLCA"),oQe=o(function t(e,r,n,i){var a=i.graphSet[n];if(-10)var d=i.nodeOverlap*f,p=Math.sqrt(l*l+u*u),m=d*l/p,g=d*u/p;else var y=CS(e,l,u),v=CS(r,-1*l,-1*u),x=v.x-y.x,b=v.y-y.y,w=x*x+b*b,p=Math.sqrt(w),d=(e.nodeRepulsion+r.nodeRepulsion)/w,m=d*x/p,g=d*b/p;e.isLocked||(e.offsetX-=m,e.offsetY-=g),r.isLocked||(r.offsetX+=m,r.offsetY+=g)}},"nodeRepulsion"),pQe=o(function(e,r,n,i){if(n>0)var a=e.maxX-r.minX;else var a=r.maxX-e.minX;if(i>0)var s=e.maxY-r.minY;else var s=r.maxY-e.minY;return a>=0&&s>=0?Math.sqrt(a*a+s*s):0},"nodesOverlap"),CS=o(function(e,r,n){var i=e.positionX,a=e.positionY,s=e.height||1,l=e.width||1,u=n/r,h=s/l,f={};return r===0&&0n?(f.x=i,f.y=a+s/2,f):0r&&-1*h<=u&&u<=h?(f.x=i-l/2,f.y=a-l*n/2/r,f):0=h)?(f.x=i+s*r/2/n,f.y=a+s/2,f):(0>n&&(u<=-1*h||u>=h)&&(f.x=i-s*r/2/n,f.y=a-s/2),f)},"findClippingPoint"),mQe=o(function(e,r){for(var n=0;nn){var v=r.gravity*m/y,x=r.gravity*g/y;p.offsetX+=v,p.offsetY+=x}}}}},"calculateGravityForces"),yQe=o(function(e,r){var n=[],i=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;i<=a;){var s=n[i++],l=e.idToIndex[s],u=e.layoutNodes[l],h=u.children;if(0n)var a={x:n*e/i,y:n*r/i};else var a={x:e,y:r};return a},"limitForce"),bQe=o(function t(e,r){var n=e.parentId;if(n!=null){var i=r.layoutNodes[r.idToIndex[n]],a=!1;if((i.maxX==null||e.maxX+i.padRight>i.maxX)&&(i.maxX=e.maxX+i.padRight,a=!0),(i.minX==null||e.minX-i.padLefti.maxY)&&(i.maxY=e.maxY+i.padBottom,a=!0),(i.minY==null||e.minY-i.padTopx&&(g+=v+r.componentSpacing,m=0,y=0,v=0)}}},"separateComponents"),wQe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:o(function(e){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(age,"GridLayout");age.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=n.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));var a=Hs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(a.h===0||a.w===0)n.nodes().layoutPositions(this,e,function(Q){return{x:a.x1,y:a.y1}});else{var s=i.size(),l=Math.sqrt(s*a.h/a.w),u=Math.round(l),h=Math.round(a.w/a.h*l),f=o(function(j){if(j==null)return Math.min(u,h);var ie=Math.min(u,h);ie==u?u=j:h=j},"small"),d=o(function(j){if(j==null)return Math.max(u,h);var ie=Math.max(u,h);ie==u?u=j:h=j},"large"),p=e.rows,m=e.cols!=null?e.cols:e.columns;if(p!=null&&m!=null)u=p,h=m;else if(p!=null&&m==null)u=p,h=Math.ceil(s/u);else if(p==null&&m!=null)h=m,u=Math.ceil(s/h);else if(h*u>s){var g=f(),y=d();(g-1)*y>=s?f(g-1):(y-1)*g>=s&&d(y-1)}else for(;h*u=s?d(x+1):f(v+1)}var b=a.w/h,w=a.h/u;if(e.condense&&(b=0,w=0),e.avoidOverlap)for(var C=0;C=h&&(O=0,R++)},"moveToNextCell"),B={},F=0;F(O=Wqe(t,e,M[B],M[B+1],M[B+2],M[B+3])))return v(A,O),!0}else if(_.edgeType==="bezier"||_.edgeType==="multibezier"||_.edgeType==="self"||_.edgeType==="compound"){for(var M=_.allpts,B=0;B+5<_.allpts.length;B+=4)if(Gqe(t,e,M[B],M[B+1],M[B+2],M[B+3],M[B+4],M[B+5],R)&&L>(O=Hqe(t,e,M[B],M[B+1],M[B+2],M[B+3],M[B+4],M[B+5])))return v(A,O),!0}for(var F=F||S.source,P=P||S.target,z=i.getArrowWidth(I,D),$=[{name:"source",x:_.arrowStartX,y:_.arrowStartY,angle:_.srcArrowAngle},{name:"target",x:_.arrowEndX,y:_.arrowEndY,angle:_.tgtArrowAngle},{name:"mid-source",x:_.midX,y:_.midY,angle:_.midsrcArrowAngle},{name:"mid-target",x:_.midX,y:_.midY,angle:_.midtgtArrowAngle}],B=0;B<$.length;B++){var H=$[B],Q=a.arrowShapes[A.pstyle(H.name+"-arrow-shape").value],j=A.pstyle("width").pfValue;if(Q.roughCollide(t,e,z,H.angle,{x:H.x,y:H.y},j,f)&&Q.collide(t,e,z,H.angle,{x:H.x,y:H.y},j,f))return v(A),!0}h&&l.length>0&&(x(F),x(P))}o(b,"checkEdge");function w(A,S,_){return Gl(A,S,_)}o(w,"preprop");function C(A,S){var _=A._private,I=p,D;S?D=S+"-":D="",A.boundingBox();var k=_.labelBounds[S||"main"],L=A.pstyle(D+"label").value,R=A.pstyle("text-events").strValue==="yes";if(!(!R||!L)){var O=w(_.rscratch,"labelX",S),M=w(_.rscratch,"labelY",S),B=w(_.rscratch,"labelAngle",S),F=A.pstyle(D+"text-margin-x").pfValue,P=A.pstyle(D+"text-margin-y").pfValue,z=k.x1-I-F,$=k.x2+I-F,H=k.y1-I-P,Q=k.y2+I-P;if(B){var j=Math.cos(B),ie=Math.sin(B),ne=o(function(se,ue){return se=se-O,ue=ue-M,{x:se*j-ue*ie+O,y:se*ie+ue*j+M}},"rotate"),le=ne(z,H),he=ne(z,Q),K=ne($,H),X=ne($,Q),te=[le.x+F,le.y+P,K.x+F,K.y+P,X.x+F,X.y+P,he.x+F,he.y+P];if(Us(t,e,te))return v(A),!0}else if(K1(k,t,e))return v(A),!0}}o(C,"checkLabel");for(var T=s.length-1;T>=0;T--){var E=s[T];E.isNode()?x(E)||C(E):b(E)||C(E)||C(E,"source")||C(E,"target")}return l};qp.getAllInBox=function(t,e,r,n){var i=this.getCachedZSortedEles().interactive,a=[],s=Math.min(t,r),l=Math.max(t,r),u=Math.min(e,n),h=Math.max(e,n);t=s,r=l,e=u,n=h;for(var f=Hs({x1:t,y1:e,x2:r,y2:n}),d=0;d0?-(Math.PI-e.ang):Math.PI+e.ang},"invertVec"),AQe=o(function(e,r,n,i,a){if(e!==D0e?L0e(r,e,qc):CQe(Jo,qc),L0e(r,n,Jo),A0e=qc.nx*Jo.ny-qc.ny*Jo.nx,_0e=qc.nx*Jo.nx-qc.ny*-Jo.ny,Ku=Math.asin(Math.max(-1,Math.min(1,A0e))),Math.abs(Ku)<1e-6){HP=r.x,WP=r.y,Bp=G1=0;return}Fp=1,gS=!1,_0e<0?Ku<0?Ku=Math.PI+Ku:(Ku=Math.PI-Ku,Fp=-1,gS=!0):Ku>0&&(Fp=-1,gS=!0),r.radius!==void 0?G1=r.radius:G1=i,Mp=Ku/2,aS=Math.min(qc.len/2,Jo.len/2),a?(Wc=Math.abs(Math.cos(Mp)*G1/Math.sin(Mp)),Wc>aS?(Wc=aS,Bp=Math.abs(Wc*Math.sin(Mp)/Math.cos(Mp))):Bp=G1):(Wc=Math.min(aS,G1),Bp=Math.abs(Wc*Math.sin(Mp)/Math.cos(Mp))),qP=r.x+Jo.nx*Wc,YP=r.y+Jo.ny*Wc,HP=qP-Jo.ny*Bp*Fp,WP=YP+Jo.nx*Bp*Fp,cge=r.x+qc.nx*Wc,uge=r.y+qc.ny*Wc,D0e=r},"calcCornerArc");o(hge,"drawPreparedRoundCorner");o(vB,"getRoundCorner");Va={};Va.findMidptPtsEtc=function(t,e){var r=e.posPts,n=e.intersectionPts,i=e.vectorNormInverse,a,s=t.pstyle("source-endpoint"),l=t.pstyle("target-endpoint"),u=s.units!=null&&l.units!=null,h=o(function(T,E,A,S){var _=S-E,I=A-T,D=Math.sqrt(I*I+_*_);return{x:-_/D,y:I/D}},"recalcVectorNormInverse"),f=t.pstyle("edge-distances").value;switch(f){case"node-position":a=r;break;case"intersection":a=n;break;case"endpoints":{if(u){var d=this.manualEndptToPx(t.source()[0],s),p=_i(d,2),m=p[0],g=p[1],y=this.manualEndptToPx(t.target()[0],l),v=_i(y,2),x=v[0],b=v[1],w={x1:m,y1:g,x2:x,y2:b};i=h(m,g,x,b),a=w}else un("Edge ".concat(t.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),a=n;break}}return{midptPts:a,vectorNormInverse:i}};Va.findHaystackPoints=function(t){for(var e=0;e0?Math.max(q-pe,0):Math.min(q+pe,0)},"subDWH"),L=k(I,S),R=k(D,_),O=!1;b===h?x=Math.abs(L)>Math.abs(R)?i:n:b===u||b===l?(x=n,O=!0):(b===a||b===s)&&(x=i,O=!0);var M=x===n,B=M?R:L,F=M?D:I,P=mme(F),z=!1;!(O&&(C||E))&&(b===l&&F<0||b===u&&F>0||b===a&&F>0||b===s&&F<0)&&(P*=-1,B=P*Math.abs(B),z=!0);var $;if(C){var H=T<0?1+T:T;$=H*B}else{var Q=T<0?B:0;$=Q+T*P}var j=o(function(q){return Math.abs(q)=Math.abs(B)},"getIsTooClose"),ie=j($),ne=j(Math.abs(B)-Math.abs($)),le=ie||ne;if(le&&!z)if(M){var he=Math.abs(F)<=p/2,K=Math.abs(I)<=m/2;if(he){var X=(f.x1+f.x2)/2,te=f.y1,J=f.y2;r.segpts=[X,te,X,J]}else if(K){var se=(f.y1+f.y2)/2,ue=f.x1,Z=f.x2;r.segpts=[ue,se,Z,se]}else r.segpts=[f.x1,f.y2]}else{var Se=Math.abs(F)<=d/2,ce=Math.abs(D)<=g/2;if(Se){var ae=(f.y1+f.y2)/2,Oe=f.x1,ge=f.x2;r.segpts=[Oe,ae,ge,ae]}else if(ce){var ze=(f.x1+f.x2)/2,He=f.y1,$e=f.y2;r.segpts=[ze,He,ze,$e]}else r.segpts=[f.x2,f.y1]}else if(M){var Re=f.y1+$+(v?p/2*P:0),Ie=f.x1,be=f.x2;r.segpts=[Ie,Re,be,Re]}else{var W=f.x1+$+(v?d/2*P:0),de=f.y1,re=f.y2;r.segpts=[W,de,W,re]}if(r.isRound){var oe=t.pstyle("taxi-radius").value,V=t.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(oe),r.isArcRadius=new Array(r.segpts.length/2).fill(V)}};Va.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType==="bezier"){var n=e.srcPos,i=e.tgtPos,a=e.srcW,s=e.srcH,l=e.tgtW,u=e.tgtH,h=e.srcShape,f=e.tgtShape,d=e.srcCornerRadius,p=e.tgtCornerRadius,m=e.srcRs,g=e.tgtRs,y=!Ct(r.startX)||!Ct(r.startY),v=!Ct(r.arrowStartX)||!Ct(r.arrowStartY),x=!Ct(r.endX)||!Ct(r.endY),b=!Ct(r.arrowEndX)||!Ct(r.arrowEndY),w=3,C=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,T=w*C,E=Gp({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),A=ER.poolIndex()){var O=L;L=R,R=O}var M=_.srcPos=L.position(),B=_.tgtPos=R.position(),F=_.srcW=L.outerWidth(),P=_.srcH=L.outerHeight(),z=_.tgtW=R.outerWidth(),$=_.tgtH=R.outerHeight(),H=_.srcShape=r.nodeShapes[e.getNodeShape(L)],Q=_.tgtShape=r.nodeShapes[e.getNodeShape(R)],j=_.srcCornerRadius=L.pstyle("corner-radius").value==="auto"?"auto":L.pstyle("corner-radius").pfValue,ie=_.tgtCornerRadius=R.pstyle("corner-radius").value==="auto"?"auto":R.pstyle("corner-radius").pfValue,ne=_.tgtRs=R._private.rscratch,le=_.srcRs=L._private.rscratch;_.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var he=0;he<_.eles.length;he++){var K=_.eles[he],X=K[0]._private.rscratch,te=K.pstyle("curve-style").value,J=te==="unbundled-bezier"||te.endsWith("segments")||te.endsWith("taxi"),se=!L.same(K.source());if(!_.calculatedIntersection&&L!==R&&(_.hasBezier||_.hasUnbundled)){_.calculatedIntersection=!0;var ue=H.intersectLine(M.x,M.y,F,P,B.x,B.y,0,j,le),Z=_.srcIntn=ue,Se=Q.intersectLine(B.x,B.y,z,$,M.x,M.y,0,ie,ne),ce=_.tgtIntn=Se,ae=_.intersectionPts={x1:ue[0],x2:Se[0],y1:ue[1],y2:Se[1]},Oe=_.posPts={x1:M.x,x2:B.x,y1:M.y,y2:B.y},ge=Se[1]-ue[1],ze=Se[0]-ue[0],He=Math.sqrt(ze*ze+ge*ge),$e=_.vector={x:ze,y:ge},Re=_.vectorNorm={x:$e.x/He,y:$e.y/He},Ie={x:-Re.y,y:Re.x};_.nodesOverlap=!Ct(He)||Q.checkPoint(ue[0],ue[1],0,z,$,B.x,B.y,ie,ne)||H.checkPoint(Se[0],Se[1],0,F,P,M.x,M.y,j,le),_.vectorNormInverse=Ie,I={nodesOverlap:_.nodesOverlap,dirCounts:_.dirCounts,calculatedIntersection:!0,hasBezier:_.hasBezier,hasUnbundled:_.hasUnbundled,eles:_.eles,srcPos:B,srcRs:ne,tgtPos:M,tgtRs:le,srcW:z,srcH:$,tgtW:F,tgtH:P,srcIntn:ce,tgtIntn:Z,srcShape:Q,tgtShape:H,posPts:{x1:Oe.x2,y1:Oe.y2,x2:Oe.x1,y2:Oe.y1},intersectionPts:{x1:ae.x2,y1:ae.y2,x2:ae.x1,y2:ae.y1},vector:{x:-$e.x,y:-$e.y},vectorNorm:{x:-Re.x,y:-Re.y},vectorNormInverse:{x:-Ie.x,y:-Ie.y}}}var be=se?I:_;X.nodesOverlap=be.nodesOverlap,X.srcIntn=be.srcIntn,X.tgtIntn=be.tgtIntn,X.isRound=te.startsWith("round"),i&&(L.isParent()||L.isChild()||R.isParent()||R.isChild())&&(L.parents().anySame(R)||R.parents().anySame(L)||L.same(R)&&L.isParent())?e.findCompoundLoopPoints(K,be,he,J):L===R?e.findLoopPoints(K,be,he,J):te.endsWith("segments")?e.findSegmentsPoints(K,be):te.endsWith("taxi")?e.findTaxiPoints(K,be):te==="straight"||!J&&_.eles.length%2===1&&he===Math.floor(_.eles.length/2)?e.findStraightEdgePoints(K):e.findBezierPoints(K,be,he,J,se),e.findEndpoints(K),e.tryToCorrectInvalidPoints(K,be),e.checkForInvalidEdgeWarning(K),e.storeAllpts(K),e.storeEdgeProjections(K),e.calculateArrowAngles(K),e.recalculateEdgeLabelProjections(K),e.calculateLabelAngles(K)}},"_loop"),T=0;T0){var J=a,se=Op(J,U1(r)),ue=Op(J,U1(te)),Z=se;if(ue2){var Se=Op(J,{x:te[2],y:te[3]});Se0){var re=s,oe=Op(re,U1(r)),V=Op(re,U1(de)),xe=oe;if(V2){var q=Op(re,{x:de[2],y:de[3]});q=g||A){v={cp:C,segment:E};break}}if(v)break}var S=v.cp,_=v.segment,I=(g-x)/_.length,D=_.t1-_.t0,k=m?_.t0+D*I:_.t1-D*I;k=Yb(0,k,1),e=W1(S.p0,S.p1,S.p2,k),p=DQe(S.p0,S.p1,S.p2,k);break}case"straight":case"segments":case"haystack":{for(var L=0,R,O,M,B,F=n.allpts.length,P=0;P+3=g));P+=2);var z=g-O,$=z/R;$=Yb(0,$,1),e=Iqe(M,B,$),p=pge(M,B);break}}s("labelX",d,e.x),s("labelY",d,e.y),s("labelAutoAngle",d,p)}},"calculateEndProjection");h("source"),h("target"),this.applyLabelDimensions(t)}};Kc.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))};Kc.applyPrefixedLabelDimensions=function(t,e){var r=t._private,n=this.getLabelText(t,e),i=this.calculateLabelDimensions(t,n),a=t.pstyle("line-height").pfValue,s=t.pstyle("text-wrap").strValue,l=Gl(r.rscratch,"labelWrapCachedLines",e)||[],u=s!=="wrap"?1:Math.max(l.length,1),h=i.height/u,f=h*a,d=i.width,p=i.height+(u-1)*(a-1)*h;kf(r.rstyle,"labelWidth",e,d),kf(r.rscratch,"labelWidth",e,d),kf(r.rstyle,"labelHeight",e,p),kf(r.rscratch,"labelHeight",e,p),kf(r.rscratch,"labelLineHeight",e,f)};Kc.getLabelText=function(t,e){var r=t._private,n=e?e+"-":"",i=t.pstyle(n+"label").strValue,a=t.pstyle("text-transform").value,s=o(function(Q,j){return j?(kf(r.rscratch,Q,e,j),j):Gl(r.rscratch,Q,e)},"rscratch");if(!i)return"";a=="none"||(a=="uppercase"?i=i.toUpperCase():a=="lowercase"&&(i=i.toLowerCase()));var l=t.pstyle("text-wrap").value;if(l==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var h="\u200B",f=i.split(` -`),d=t.pstyle("text-max-width").pfValue,p=t.pstyle("text-overflow-wrap").value,m=p==="anywhere",g=[],y=/[\s\u200b]+|$/g,v=0;vd){var T=x.matchAll(y),E="",A=0,S=mo(T),_;try{for(S.s();!(_=S.n()).done;){var I=_.value,D=I[0],k=x.substring(A,I.index);A=I.index+D.length;var L=E.length===0?k:E+k+D,R=this.calculateLabelDimensions(t,L),O=R.width;O<=d?E+=k+D:(E&&g.push(E),E=k+D)}}catch(H){S.e(H)}finally{S.f()}E.match(/^[\s\u200b]+$/)||g.push(E)}else g.push(x)}s("labelWrapCachedLines",g),i=s("labelWrapCachedText",g.join(` -`)),s("labelWrapKey",u)}else if(l==="ellipsis"){var M=t.pstyle("text-max-width").pfValue,B="",F="\u2026",P=!1;if(this.calculateLabelDimensions(t,i).widthM)break;B+=i[z],z===i.length-1&&(P=!0)}return P||(B+=F),B}return i};Kc.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e};Kc.calculateLabelDimensions=function(t,e){var r=this,n=r.cy.window(),i=n.document,a=_f(e,t._private.labelDimsKey),s=r.labelDimCache||(r.labelDimCache=[]),l=s[a];if(l!=null)return l;var u=0,h=t.pstyle("font-style").strValue,f=t.pstyle("font-size").pfValue,d=t.pstyle("font-family").strValue,p=t.pstyle("font-weight").strValue,m=this.labelCalcCanvas,g=this.labelCalcCanvasContext;if(!m){m=this.labelCalcCanvas=i.createElement("canvas"),g=this.labelCalcCanvasContext=m.getContext("2d");var y=m.style;y.position="absolute",y.left="-9999px",y.top="-9999px",y.zIndex="-1",y.visibility="hidden",y.pointerEvents="none"}g.font="".concat(h," ").concat(p," ").concat(f,"px ").concat(d);for(var v=0,x=0,b=e.split(` -`),w=0;w1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),l)for(var u=0;u=t.desktopTapThreshold2}var ot=a(W);at&&(t.hoverData.tapholdCancelled=!0);var Yt=o(function(){var Tt=t.hoverData.dragDelta=t.hoverData.dragDelta||[];Tt.length===0?(Tt.push(De[0]),Tt.push(De[1])):(Tt[0]+=De[0],Tt[1]+=De[1])},"updateDragDelta");re=!0,i(_e,["mousemove","vmousemove","tapdrag"],W,{x:q[0],y:q[1]});var bt=o(function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||oe.emit({originalEvent:W,type:"boxstart",position:{x:q[0],y:q[1]}}),Pe[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()},"goIntoBoxMode");if(t.hoverData.which===3){if(at){var Mt={originalEvent:W,type:"cxtdrag",position:{x:q[0],y:q[1]}};Ve?Ve.emit(Mt):oe.emit(Mt),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||_e!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:W,type:"cxtdragout",position:{x:q[0],y:q[1]}}),t.hoverData.cxtOver=_e,_e&&_e.emit({originalEvent:W,type:"cxtdragover",position:{x:q[0],y:q[1]}}))}}else if(t.hoverData.dragging){if(re=!0,oe.panningEnabled()&&oe.userPanningEnabled()){var xt;if(t.hoverData.justStartedPan){var ut=t.hoverData.mdownPos;xt={x:(q[0]-ut[0])*V,y:(q[1]-ut[1])*V},t.hoverData.justStartedPan=!1}else xt={x:De[0]*V,y:De[1]*V};oe.panBy(xt),oe.emit("dragpan"),t.hoverData.dragged=!0}q=t.projectIntoViewport(W.clientX,W.clientY)}else if(Pe[4]==1&&(Ve==null||Ve.pannable())){if(at){if(!t.hoverData.dragging&&oe.boxSelectionEnabled()&&(ot||!oe.panningEnabled()||!oe.userPanningEnabled()))bt();else if(!t.hoverData.selecting&&oe.panningEnabled()&&oe.userPanningEnabled()){var Et=s(Ve,t.hoverData.downs);Et&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,Pe[4]=0,t.data.bgActivePosistion=U1(pe),t.redrawHint("select",!0),t.redraw())}Ve&&Ve.pannable()&&Ve.active()&&Ve.unactivate()}}else{if(Ve&&Ve.pannable()&&Ve.active()&&Ve.unactivate(),(!Ve||!Ve.grabbed())&&_e!=we&&(we&&i(we,["mouseout","tapdragout"],W,{x:q[0],y:q[1]}),_e&&i(_e,["mouseover","tapdragover"],W,{x:q[0],y:q[1]}),t.hoverData.last=_e),Ve)if(at){if(oe.boxSelectionEnabled()&&ot)Ve&&Ve.grabbed()&&(x(qe),Ve.emit("freeon"),qe.emit("free"),t.dragData.didDrag&&(Ve.emit("dragfreeon"),qe.emit("dragfree"))),bt();else if(Ve&&Ve.grabbed()&&t.nodeIsDraggable(Ve)){var ft=!t.dragData.didDrag;ft&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||y(qe,{inDragLayer:!0});var yt={x:0,y:0};if(Ct(De[0])&&Ct(De[1])&&(yt.x+=De[0],yt.y+=De[1],ft)){var nt=t.hoverData.dragDelta;nt&&Ct(nt[0])&&Ct(nt[1])&&(yt.x+=nt[0],yt.y+=nt[1])}t.hoverData.draggingEles=!0,qe.silentShift(yt).emit("position drag"),t.redrawHint("drag",!0),t.redraw()}}else Yt();re=!0}if(Pe[2]=q[0],Pe[3]=q[1],re)return W.stopPropagation&&W.stopPropagation(),W.preventDefault&&W.preventDefault(),!1}},"mousemoveHandler"),!1);var k,L,R;t.registerBinding(e,"mouseup",o(function(W){if(!(t.hoverData.which===1&&W.which!==1&&t.hoverData.capture)){var de=t.hoverData.capture;if(de){t.hoverData.capture=!1;var re=t.cy,oe=t.projectIntoViewport(W.clientX,W.clientY),V=t.selection,xe=t.findNearestElement(oe[0],oe[1],!0,!1),q=t.dragData.possibleDragElements,pe=t.hoverData.down,ve=a(W);if(t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,pe&&pe.unactivate(),t.hoverData.which===3){var Pe={originalEvent:W,type:"cxttapend",position:{x:oe[0],y:oe[1]}};if(pe?pe.emit(Pe):re.emit(Pe),!t.hoverData.cxtDragged){var _e={originalEvent:W,type:"cxttap",position:{x:oe[0],y:oe[1]}};pe?pe.emit(_e):re.emit(_e)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(i(xe,["mouseup","tapend","vmouseup"],W,{x:oe[0],y:oe[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(i(pe,["click","tap","vclick"],W,{x:oe[0],y:oe[1]}),L=!1,W.timeStamp-R<=re.multiClickDebounceTime()?(k&&clearTimeout(k),L=!0,R=null,i(pe,["dblclick","dbltap","vdblclick"],W,{x:oe[0],y:oe[1]})):(k=setTimeout(function(){L||i(pe,["oneclick","onetap","voneclick"],W,{x:oe[0],y:oe[1]})},re.multiClickDebounceTime()),R=W.timeStamp)),pe==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!a(W)&&(re.$(r).unselect(["tapunselect"]),q.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=q=re.collection()),xe==pe&&!t.dragData.didDrag&&!t.hoverData.selecting&&xe!=null&&xe._private.selectable&&(t.hoverData.dragging||(re.selectionType()==="additive"||ve?xe.selected()?xe.unselect(["tapunselect"]):xe.select(["tapselect"]):ve||(re.$(r).unmerge(xe).unselect(["tapunselect"]),xe.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var we=re.collection(t.getAllInBox(V[0],V[1],V[2],V[3]));t.redrawHint("select",!0),we.length>0&&t.redrawHint("eles",!0),re.emit({type:"boxend",originalEvent:W,position:{x:oe[0],y:oe[1]}});var Ve=o(function(at){return at.selectable()&&!at.selected()},"eleWouldBeSelected");re.selectionType()==="additive"||ve||re.$(r).unmerge(we).unselect(),we.emit("box").stdFilter(Ve).select().emit("boxselect"),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!V[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var De=pe&&pe.grabbed();x(q),De&&(pe.emit("freeon"),q.emit("free"),t.dragData.didDrag&&(pe.emit("dragfreeon"),q.emit("dragfree")))}}V[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null,t.hoverData.which=null}}},"mouseupHandler"),!1);var O=o(function(W){if(!t.scrollingPage){var de=t.cy,re=de.zoom(),oe=de.pan(),V=t.projectIntoViewport(W.clientX,W.clientY),xe=[V[0]*re+oe.x,V[1]*re+oe.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||_()){W.preventDefault();return}if(de.panningEnabled()&&de.userPanningEnabled()&&de.zoomingEnabled()&&de.userZoomingEnabled()){W.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150);var q;W.deltaY!=null?q=W.deltaY/-250:W.wheelDeltaY!=null?q=W.wheelDeltaY/1e3:q=W.wheelDelta/1e3,q=q*t.wheelSensitivity;var pe=W.deltaMode===1;pe&&(q*=33);var ve=de.zoom()*Math.pow(10,q);W.type==="gesturechange"&&(ve=t.gestureStartZoom*W.scale),de.zoom({level:ve,renderedPosition:{x:xe[0],y:xe[1]}}),de.emit(W.type==="gesturechange"?"pinchzoom":"scrollzoom")}}},"wheelHandler");t.registerBinding(t.container,"wheel",O,!0),t.registerBinding(e,"scroll",o(function(W){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},"scrollHandler"),!0),t.registerBinding(t.container,"gesturestart",o(function(W){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||W.preventDefault()},"gestureStartHandler"),!0),t.registerBinding(t.container,"gesturechange",function(be){t.hasTouchStarted||O(be)},!0),t.registerBinding(t.container,"mouseout",o(function(W){var de=t.projectIntoViewport(W.clientX,W.clientY);t.cy.emit({originalEvent:W,type:"mouseout",position:{x:de[0],y:de[1]}})},"mouseOutHandler"),!1),t.registerBinding(t.container,"mouseover",o(function(W){var de=t.projectIntoViewport(W.clientX,W.clientY);t.cy.emit({originalEvent:W,type:"mouseover",position:{x:de[0],y:de[1]}})},"mouseOverHandler"),!1);var M,B,F,P,z,$,H,Q,j,ie,ne,le,he,K=o(function(W,de,re,oe){return Math.sqrt((re-W)*(re-W)+(oe-de)*(oe-de))},"distance"),X=o(function(W,de,re,oe){return(re-W)*(re-W)+(oe-de)*(oe-de)},"distanceSq"),te;t.registerBinding(t.container,"touchstart",te=o(function(W){if(t.hasTouchStarted=!0,!!I(W)){w(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var de=t.cy,re=t.touchData.now,oe=t.touchData.earlier;if(W.touches[0]){var V=t.projectIntoViewport(W.touches[0].clientX,W.touches[0].clientY);re[0]=V[0],re[1]=V[1]}if(W.touches[1]){var V=t.projectIntoViewport(W.touches[1].clientX,W.touches[1].clientY);re[2]=V[0],re[3]=V[1]}if(W.touches[2]){var V=t.projectIntoViewport(W.touches[2].clientX,W.touches[2].clientY);re[4]=V[0],re[5]=V[1]}if(W.touches[1]){t.touchData.singleTouchMoved=!0,x(t.dragData.touchDragEles);var xe=t.findContainerClientCoords();j=xe[0],ie=xe[1],ne=xe[2],le=xe[3],M=W.touches[0].clientX-j,B=W.touches[0].clientY-ie,F=W.touches[1].clientX-j,P=W.touches[1].clientY-ie,he=0<=M&&M<=ne&&0<=F&&F<=ne&&0<=B&&B<=le&&0<=P&&P<=le;var q=de.pan(),pe=de.zoom();z=K(M,B,F,P),$=X(M,B,F,P),H=[(M+F)/2,(B+P)/2],Q=[(H[0]-q.x)/pe,(H[1]-q.y)/pe];var ve=200,Pe=ve*ve;if($=1){for(var st=t.touchData.startPosition=[null,null,null,null,null,null],Ue=0;Ue=t.touchTapThreshold2}if(de&&t.touchData.cxt){W.preventDefault();var st=W.touches[0].clientX-j,Ue=W.touches[0].clientY-ie,ct=W.touches[1].clientX-j,We=W.touches[1].clientY-ie,ot=X(st,Ue,ct,We),Yt=ot/$,bt=150,Mt=bt*bt,xt=1.5,ut=xt*xt;if(Yt>=ut||ot>=Mt){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Et={originalEvent:W,type:"cxttapend",position:{x:V[0],y:V[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(Et),t.touchData.start=null):oe.emit(Et)}}if(de&&t.touchData.cxt){var Et={originalEvent:W,type:"cxtdrag",position:{x:V[0],y:V[1]}};t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Et):oe.emit(Et),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var ft=t.findNearestElement(V[0],V[1],!0,!0);(!t.touchData.cxtOver||ft!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:W,type:"cxtdragout",position:{x:V[0],y:V[1]}}),t.touchData.cxtOver=ft,ft&&ft.emit({originalEvent:W,type:"cxtdragover",position:{x:V[0],y:V[1]}}))}else if(de&&W.touches[2]&&oe.boxSelectionEnabled())W.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||oe.emit({originalEvent:W,type:"boxstart",position:{x:V[0],y:V[1]}}),t.touchData.selecting=!0,t.touchData.didSelect=!0,re[4]=1,!re||re.length===0||re[0]===void 0?(re[0]=(V[0]+V[2]+V[4])/3,re[1]=(V[1]+V[3]+V[5])/3,re[2]=(V[0]+V[2]+V[4])/3+1,re[3]=(V[1]+V[3]+V[5])/3+1):(re[2]=(V[0]+V[2]+V[4])/3,re[3]=(V[1]+V[3]+V[5])/3),t.redrawHint("select",!0),t.redraw();else if(de&&W.touches[1]&&!t.touchData.didSelect&&oe.zoomingEnabled()&&oe.panningEnabled()&&oe.userZoomingEnabled()&&oe.userPanningEnabled()){W.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var yt=t.dragData.touchDragEles;if(yt){t.redrawHint("drag",!0);for(var nt=0;nt0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},"touchmoveHandler"),!1);var se;t.registerBinding(e,"touchcancel",se=o(function(W){var de=t.touchData.start;t.touchData.capture=!1,de&&de.unactivate()},"touchcancelHandler"));var ue,Z,Se,ce;if(t.registerBinding(e,"touchend",ue=o(function(W){var de=t.touchData.start,re=t.touchData.capture;if(re)W.touches.length===0&&(t.touchData.capture=!1),W.preventDefault();else return;var oe=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var V=t.cy,xe=V.zoom(),q=t.touchData.now,pe=t.touchData.earlier;if(W.touches[0]){var ve=t.projectIntoViewport(W.touches[0].clientX,W.touches[0].clientY);q[0]=ve[0],q[1]=ve[1]}if(W.touches[1]){var ve=t.projectIntoViewport(W.touches[1].clientX,W.touches[1].clientY);q[2]=ve[0],q[3]=ve[1]}if(W.touches[2]){var ve=t.projectIntoViewport(W.touches[2].clientX,W.touches[2].clientY);q[4]=ve[0],q[5]=ve[1]}de&&de.unactivate();var Pe;if(t.touchData.cxt){if(Pe={originalEvent:W,type:"cxttapend",position:{x:q[0],y:q[1]}},de?de.emit(Pe):V.emit(Pe),!t.touchData.cxtDragged){var _e={originalEvent:W,type:"cxttap",position:{x:q[0],y:q[1]}};de?de.emit(_e):V.emit(_e)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!W.touches[2]&&V.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var we=V.collection(t.getAllInBox(oe[0],oe[1],oe[2],oe[3]));oe[0]=void 0,oe[1]=void 0,oe[2]=void 0,oe[3]=void 0,oe[4]=0,t.redrawHint("select",!0),V.emit({type:"boxend",originalEvent:W,position:{x:q[0],y:q[1]}});var Ve=o(function(Mt){return Mt.selectable()&&!Mt.selected()},"eleWouldBeSelected");we.emit("box").stdFilter(Ve).select().emit("boxselect"),we.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(de?.unactivate(),W.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!W.touches[1]){if(!W.touches[0]){if(!W.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var De=t.dragData.touchDragEles;if(de!=null){var qe=de._private.grabbed;x(De),t.redrawHint("drag",!0),t.redrawHint("eles",!0),qe&&(de.emit("freeon"),De.emit("free"),t.dragData.didDrag&&(de.emit("dragfreeon"),De.emit("dragfree"))),i(de,["touchend","tapend","vmouseup","tapdragout"],W,{x:q[0],y:q[1]}),de.unactivate(),t.touchData.start=null}else{var at=t.findNearestElement(q[0],q[1],!0,!0);i(at,["touchend","tapend","vmouseup","tapdragout"],W,{x:q[0],y:q[1]})}var Rt=t.touchData.startPosition[0]-q[0],st=Rt*Rt,Ue=t.touchData.startPosition[1]-q[1],ct=Ue*Ue,We=st+ct,ot=We*xe*xe;t.touchData.singleTouchMoved||(de||V.$(":selected").unselect(["tapunselect"]),i(de,["tap","vclick"],W,{x:q[0],y:q[1]}),Z=!1,W.timeStamp-ce<=V.multiClickDebounceTime()?(Se&&clearTimeout(Se),Z=!0,ce=null,i(de,["dbltap","vdblclick"],W,{x:q[0],y:q[1]})):(Se=setTimeout(function(){Z||i(de,["onetap","voneclick"],W,{x:q[0],y:q[1]})},V.multiClickDebounceTime()),ce=W.timeStamp)),de!=null&&!t.dragData.didDrag&&de._private.selectable&&ot"u"){var ae=[],Oe=o(function(W){return{clientX:W.clientX,clientY:W.clientY,force:1,identifier:W.pointerId,pageX:W.pageX,pageY:W.pageY,radiusX:W.width/2,radiusY:W.height/2,screenX:W.screenX,screenY:W.screenY,target:W.target}},"makeTouch"),ge=o(function(W){return{event:W,touch:Oe(W)}},"makePointer"),ze=o(function(W){ae.push(ge(W))},"addPointer"),He=o(function(W){for(var de=0;de0)return H[0]}return null},"getCurveT"),g=Object.keys(p),y=0;y0?m:vme(a,s,e,r,n,i,l,u)},"intersectLine"),checkPoint:o(function(e,r,n,i,a,s,l,u){u=u==="auto"?Vp(i,a):u;var h=2*u;if(Zu(e,r,this.points,s,l,i,a-h,[0,-1],n)||Zu(e,r,this.points,s,l,i-h,a,[0,-1],n))return!0;var f=i/2+2*n,d=a/2+2*n,p=[s-f,l-d,s-f,l,s+f,l,s+f,l-d];return!!(Us(e,r,p)||$p(e,r,h,h,s+i/2-u,l+a/2-u,n)||$p(e,r,h,h,s-i/2+u,l+a/2-u,n))},"checkPoint")}};eh.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",gs(3,0)),this.generateRoundPolygon("round-triangle",gs(3,0)),this.generatePolygon("rectangle",gs(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",gs(5,0)),this.generateRoundPolygon("round-pentagon",gs(5,0)),this.generatePolygon("hexagon",gs(6,0)),this.generateRoundPolygon("round-hexagon",gs(6,0)),this.generatePolygon("heptagon",gs(7,0)),this.generateRoundPolygon("round-heptagon",gs(7,0)),this.generatePolygon("octagon",gs(8,0)),this.generateRoundPolygon("round-octagon",gs(8,0));var n=new Array(20);{var i=PP(5,0),a=PP(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;l=e.deqFastCost*C)break}else if(h){if(b>=e.deqCost*m||b>=e.deqAvgCost*p)break}else if(w>=e.deqNoDrawCost*DP)break;var T=e.deq(n,v,y);if(T.length>0)for(var E=0;E0&&(e.onDeqd(n,g),!h&&e.shouldRedraw(n,g,v,y)&&a())},"dequeue"),l=e.priority||rB;i.beforeRender(s,l(n))}},"setupDequeueingImpl")},"setupDequeueing")},RQe=function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:bS;Mf(this,t),this.idsByKey=new Xc,this.keyForId=new Xc,this.cachesByLvl=new Xc,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return o(t,"ElementTextureCacheLookup"),If(t,[{key:"getIdsFor",value:o(function(r){r==null&&ai("Can not get id list for null key");var n=this.idsByKey,i=this.idsByKey.get(r);return i||(i=new J1,n.set(r,i)),i},"getIdsFor")},{key:"addIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).add(n)},"addIdForKey")},{key:"deleteIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).delete(n)},"deleteIdForKey")},{key:"getNumberOfIdsForKey",value:o(function(r){return r==null?0:this.getIdsFor(r).size},"getNumberOfIdsForKey")},{key:"updateKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);this.deleteIdForKey(i,n),this.addIdForKey(a,n),this.keyForId.set(n,a)},"updateKeyMappingFor")},{key:"deleteKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteIdForKey(i,n),this.keyForId.delete(n)},"deleteKeyMappingFor")},{key:"keyHasChangedFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);return i!==a},"keyHasChangedFor")},{key:"isInvalid",value:o(function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)},"isInvalid")},{key:"getCachesAt",value:o(function(r){var n=this.cachesByLvl,i=this.lvls,a=n.get(r);return a||(a=new Xc,n.set(r,a),i.push(r)),a},"getCachesAt")},{key:"getCache",value:o(function(r,n){return this.getCachesAt(n).get(r)},"getCache")},{key:"get",value:o(function(r,n){var i=this.getKey(r),a=this.getCache(i,n);return a!=null&&this.updateKeyMappingFor(r),a},"get")},{key:"getForCachedKey",value:o(function(r,n){var i=this.keyForId.get(r.id()),a=this.getCache(i,n);return a},"getForCachedKey")},{key:"hasCache",value:o(function(r,n){return this.getCachesAt(n).has(r)},"hasCache")},{key:"has",value:o(function(r,n){var i=this.getKey(r);return this.hasCache(i,n)},"has")},{key:"setCache",value:o(function(r,n,i){i.key=r,this.getCachesAt(n).set(r,i)},"setCache")},{key:"set",value:o(function(r,n,i){var a=this.getKey(r);this.setCache(a,n,i),this.updateKeyMappingFor(r)},"set")},{key:"deleteCache",value:o(function(r,n){this.getCachesAt(n).delete(r)},"deleteCache")},{key:"delete",value:o(function(r,n){var i=this.getKey(r);this.deleteCache(i,n)},"_delete")},{key:"invalidateKey",value:o(function(r){var n=this;this.lvls.forEach(function(i){return n.deleteCache(r,i)})},"invalidateKey")},{key:"invalidate",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteKeyMappingFor(r);var a=this.doesEleInvalidateKey(r);return a&&this.invalidateKey(i),a||this.getNumberOfIdsForKey(i)===0},"invalidate")}]),t}(),I0e=25,sS=50,yS=-4,XP=3,bge=7.99,NQe=8,MQe=1024,IQe=1024,OQe=1024,PQe=.2,BQe=.8,FQe=10,$Qe=.15,zQe=.1,GQe=.9,VQe=.9,UQe=100,HQe=1,H1={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},WQe=la({getKey:null,doesEleInvalidateKey:bS,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:ume,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Fb=o(function(e,r){var n=this;n.renderer=e,n.onDequeues=[];var i=WQe(r);rr(n,i),n.lookup=new RQe(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},"ElementTextureCache"),qi=Fb.prototype;qi.reasons=H1;qi.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]};qi.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},n=r[t]=r[t]||[];return n};qi.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new i4(function(r,n){return n.reqs-r.reqs});return e};qi.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e};qi.getElement=function(t,e,r,n,i){var a=this,s=this.renderer,l=s.cy.zoom(),u=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!a.allowEdgeTxrCaching&&t.isEdge()||!a.allowParentTxrCaching&&t.isParent())return null;if(n==null&&(n=Math.ceil(iB(l*r))),n=bge||n>XP)return null;var h=Math.pow(2,n),f=e.h*h,d=e.w*h,p=s.eleTextBiggerThanMin(t,h);if(!this.isVisible(t,p))return null;var m=u.get(t,n);if(m&&m.invalidated&&(m.invalidated=!1,m.texture.invalidatedWidth-=m.width),m)return m;var g;if(f<=I0e?g=I0e:f<=sS?g=sS:g=Math.ceil(f/sS)*sS,f>OQe||d>IQe)return null;var y=a.getTextureQueue(g),v=y[y.length-2],x=o(function(){return a.recycleTexture(g,d)||a.addTexture(g,d)},"addNewTxr");v||(v=y[y.length-1]),v||(v=x()),v.width-v.usedWidthn;D--)_=a.getElement(t,e,r,D,H1.downscale);I()}else return a.queueElement(t,E.level-1),E;else{var k;if(!w&&!C&&!T)for(var L=n-1;L>=yS;L--){var R=u.get(t,L);if(R){k=R;break}}if(b(k))return a.queueElement(t,n),k;v.context.translate(v.usedWidth,0),v.context.scale(h,h),this.drawElement(v.context,t,e,p,!1),v.context.scale(1/h,1/h),v.context.translate(-v.usedWidth,0)}return m={x:v.usedWidth,texture:v,level:n,scale:h,width:d,height:f,scaledLabelShown:p},v.usedWidth+=Math.ceil(d+NQe),v.eleCaches.push(m),u.set(t,n,m),a.checkTextureFullness(v),m};qi.invalidateElements=function(t){for(var e=0;e=PQe*t.width&&this.retireTexture(t)};qi.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>BQe&&t.fullnessChecks>=FQe?Df(r,t):t.fullnessChecks++};qi.retireTexture=function(t){var e=this,r=t.height,n=e.getTextureQueue(r),i=this.lookup;Df(n,t),t.retired=!0;for(var a=t.eleCaches,s=0;s=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,nB(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),Df(i,s),n.push(s),s}};qi.queueElement=function(t,e){var r=this,n=r.getElementQueue(),i=r.getElementKeyToQueue(),a=this.getKey(t),s=i[a];if(s)s.level=Math.max(s.level,e),s.eles.merge(t),s.reqs++,n.updateItem(s);else{var l={eles:t.spawn().merge(t),level:e,reqs:1,key:a};n.push(l),i[a]=l}};qi.dequeue=function(t){for(var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=[],a=e.lookup,s=0;s0;s++){var l=r.pop(),u=l.key,h=l.eles[0],f=a.hasCache(h,l.level);if(n[u]=null,f)continue;i.push(l);var d=e.getBoundingBox(h);e.getElement(h,d,t,l.level,H1.dequeue)}return i};qi.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=this.getKey(t),a=n[i];a!=null&&(a.eles.length===1?(a.reqs=tB,r.updateItem(a),r.pop(),n[i]=null):a.eles.unmerge(t))};qi.onDequeue=function(t){this.onDequeues.push(t)};qi.offDequeue=function(t){Df(this.onDequeues,t)};qi.setupDequeueing=xge.setupDequeueing({deqRedrawThreshold:UQe,deqCost:$Qe,deqAvgCost:zQe,deqNoDrawCost:GQe,deqFastCost:VQe,deq:o(function(e,r,n){return e.dequeue(r,n)},"deq"),onDeqd:o(function(e,r){for(var n=0;n=YQe||r>_S)return null}n.validateLayersElesOrdering(r,t);var u=n.layersByLevel,h=Math.pow(2,r),f=u[r]=u[r]||[],d,p=n.levelIsComplete(r,t),m,g=o(function(){var I=o(function(O){if(n.validateLayersElesOrdering(O,t),n.levelIsComplete(O,t))return m=u[O],!0},"canUseAsTmpLvl"),D=o(function(O){if(!m)for(var M=r+O;zb<=M&&M<=_S&&!I(M);M+=O);},"checkLvls");D(1),D(-1);for(var k=f.length-1;k>=0;k--){var L=f[k];L.invalid&&Df(f,L)}},"checkTempLevels");if(!p)g();else return f;var y=o(function(){if(!d){d=Hs();for(var I=0;IP0e||L>P0e)return null;var R=k*L;if(R>tZe)return null;var O=n.makeLayer(d,r);if(D!=null){var M=f.indexOf(D)+1;f.splice(M,0,O)}else(I.insert===void 0||I.insert)&&f.unshift(O);return O},"makeLayer");if(n.skipping&&!l)return null;for(var x=null,b=t.length/qQe,w=!l,C=0;C=b||!yme(x.bb,T.boundingBox()))&&(x=v({insert:!0,after:x}),!x))return null;m||w?n.queueLayer(x,T):n.drawEleInLayer(x,T,r,e),x.eles.push(T),A[r]=x}return m||(w?null:f)};Ea.getEleLevelForLayerLevel=function(t,e){return t};Ea.drawEleInLayer=function(t,e,r,n){var i=this,a=this.renderer,s=t.context,l=e.boundingBox();l.w===0||l.h===0||!e.visible()||(r=i.getEleLevelForLayerLevel(r,n),a.setImgSmoothing(s,!1),a.drawCachedElement(s,e,null,null,r,rZe),a.setImgSmoothing(s,!0))};Ea.levelIsComplete=function(t,e){var r=this,n=r.layersByLevel[t];if(!n||n.length===0)return!1;for(var i=0,a=0;a0||s.invalid)return!1;i+=s.eles.length}return i===e.length};Ea.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var n=0;n0){e=!0;break}}return e};Ea.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=Qu(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,o(function(n,i,a){e.invalidateLayer(n)},"invalAssocLayers")))};Ea.invalidateLayer=function(t){if(this.lastInvalidationTime=Qu(),!t.invalid){var e=t.level,r=t.eles,n=this.layersByLevel[e];Df(n,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var i=0;i3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l=e._private.rscratch;if(!(a&&!e.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var h=a?e.pstyle("opacity").value:1,f=a?e.pstyle("line-opacity").value:1,d=e.pstyle("curve-style").value,p=e.pstyle("line-style").value,m=e.pstyle("width").pfValue,g=e.pstyle("line-cap").value,y=e.pstyle("line-outline-width").value,v=e.pstyle("line-outline-color").value,x=h*f,b=h*f,w=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;d==="straight-triangle"?(s.eleStrokeStyle(t,e,O),s.drawEdgeTrianglePath(e,t,l.allpts)):(t.lineWidth=m,t.lineCap=g,s.eleStrokeStyle(t,e,O),s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLine"),C=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(t.lineWidth=m+y,t.lineCap=g,y>0)s.colorStrokeStyle(t,v[0],v[1],v[2],O);else{t.lineCap="butt";return}d==="straight-triangle"?s.drawEdgeTrianglePath(e,t,l.allpts):(s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLineOutline"),T=o(function(){i&&s.drawEdgeOverlay(t,e)},"drawOverlay"),E=o(function(){i&&s.drawEdgeUnderlay(t,e)},"drawUnderlay"),A=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(t,e,O)},"drawArrows"),S=o(function(){s.drawElementText(t,e,null,n)},"drawText");t.lineJoin="round";var _=e.pstyle("ghost").value==="yes";if(_){var I=e.pstyle("ghost-offset-x").pfValue,D=e.pstyle("ghost-offset-y").pfValue,k=e.pstyle("ghost-opacity").value,L=x*k;t.translate(I,D),w(L),A(L),t.translate(-I,-D)}else C();E(),w(),A(),T(),S(),r&&t.translate(u.x1,u.y1)}};kge=o(function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,n){if(n.visible()){var i=n.pstyle("".concat(e,"-opacity")).value;if(i!==0){var a=this,s=a.usePaths(),l=n._private.rscratch,u=n.pstyle("".concat(e,"-padding")).pfValue,h=2*u,f=n.pstyle("".concat(e,"-color")).value;r.lineWidth=h,l.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,f[0],f[1],f[2],i),a.drawEdgePath(n,r,l.allpts,"solid")}}}},"drawEdgeOverlayUnderlay");th.drawEdgeOverlay=kge("overlay");th.drawEdgeUnderlay=kge("underlay");th.drawEdgePath=function(t,e,r,n){var i=t._private.rscratch,a=e,s,l=!1,u=this.usePaths(),h=t.pstyle("line-dash-pattern").pfValue,f=t.pstyle("line-dash-offset").pfValue;if(u){var d=r.join("$"),p=i.pathCacheKey&&i.pathCacheKey===d;p?(s=e=i.pathCache,l=!0):(s=e=new Path2D,i.pathCacheKey=d,i.pathCache=s)}if(a.setLineDash)switch(n){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(h),a.lineDashOffset=f;break;case"solid":a.setLineDash([]);break}if(!l&&!i.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var m=2;m+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(n==null){if(a&&!s.eleTextBiggerThanMin(e))return}else if(n===!1)return;if(e.isNode()){var l=e.pstyle("label");if(!l||!l.value)return;var u=s.getLabelJustification(e);t.textAlign=u,t.textBaseline="bottom"}else{var h=e.element()._private.rscratch.badLine,f=e.pstyle("label"),d=e.pstyle("source-label"),p=e.pstyle("target-label");if(h||(!f||!f.value)&&(!d||!d.value)&&(!p||!p.value))return;t.textAlign="center",t.textBaseline="bottom"}var m=!r,g;r&&(g=r,t.translate(-g.x1,-g.y1)),i==null?(s.drawText(t,e,null,m,a),e.isEdge()&&(s.drawText(t,e,"source",m,a),s.drawText(t,e,"target",m,a))):s.drawText(t,e,i,m,a),r&&t.translate(g.x1,g.y1)};Yp.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,n=e.pstyle("font-style").strValue,i=e.pstyle("font-size").pfValue+"px",a=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,l=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,u=e.pstyle("text-outline-opacity").value*l,h=e.pstyle("color").value,f=e.pstyle("text-outline-color").value;t.font=n+" "+s+" "+i+" "+a,t.lineJoin="round",this.colorFillStyle(t,h[0],h[1],h[2],l),this.colorStrokeStyle(t,f[0],f[1],f[2],u)};o(RP,"roundRect");Yp.getTextAngle=function(t,e){var r,n=t._private,i=n.rscratch,a=e?e+"-":"",s=t.pstyle(a+"text-rotation");if(s.strValue==="autorotate"){var l=Gl(i,"labelAngle",e);r=t.isEdge()?l:0}else s.strValue==="none"?r=0:r=s.pfValue;return r};Yp.drawText=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=e._private,s=a.rscratch,l=i?e.effectiveOpacity():1;if(!(i&&(l===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=Gl(s,"labelX",r),h=Gl(s,"labelY",r),f,d,p=this.getLabelText(e,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(h)){this.setupTextStyle(t,e,i);var m=r?r+"-":"",g=Gl(s,"labelWidth",r),y=Gl(s,"labelHeight",r),v=e.pstyle(m+"text-margin-x").pfValue,x=e.pstyle(m+"text-margin-y").pfValue,b=e.isEdge(),w=e.pstyle("text-halign").value,C=e.pstyle("text-valign").value;b&&(w="center",C="center"),u+=v,h+=x;var T;switch(n?T=this.getTextAngle(e,r):T=0,T!==0&&(f=u,d=h,t.translate(f,d),t.rotate(T),u=0,h=0),C){case"top":break;case"center":h+=y/2;break;case"bottom":h+=y;break}var E=e.pstyle("text-background-opacity").value,A=e.pstyle("text-border-opacity").value,S=e.pstyle("text-border-width").pfValue,_=e.pstyle("text-background-padding").pfValue,I=e.pstyle("text-background-shape").strValue,D=I.indexOf("round")===0,k=2;if(E>0||S>0&&A>0){var L=u-_;switch(w){case"left":L-=g;break;case"center":L-=g/2;break}var R=h-y-_,O=g+2*_,M=y+2*_;if(E>0){var B=t.fillStyle,F=e.pstyle("text-background-color").value;t.fillStyle="rgba("+F[0]+","+F[1]+","+F[2]+","+E*l+")",D?RP(t,L,R,O,M,k):t.fillRect(L,R,O,M),t.fillStyle=B}if(S>0&&A>0){var P=t.strokeStyle,z=t.lineWidth,$=e.pstyle("text-border-color").value,H=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+$[0]+","+$[1]+","+$[2]+","+A*l+")",t.lineWidth=S,t.setLineDash)switch(H){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=S/4,t.setLineDash([]);break;case"solid":t.setLineDash([]);break}if(D?RP(t,L,R,O,M,k,"stroke"):t.strokeRect(L,R,O,M),H==="double"){var Q=S/2;D?RP(t,L+Q,R+Q,O-Q*2,M-Q*2,k,"stroke"):t.strokeRect(L+Q,R+Q,O-Q*2,M-Q*2)}t.setLineDash&&t.setLineDash([]),t.lineWidth=z,t.strokeStyle=P}}var j=2*e.pstyle("text-outline-width").pfValue;if(j>0&&(t.lineWidth=j),e.pstyle("text-wrap").value==="wrap"){var ie=Gl(s,"labelWrapCachedLines",r),ne=Gl(s,"labelLineHeight",r),le=g/2,he=this.getLabelJustification(e);switch(he==="auto"||(w==="left"?he==="left"?u+=-g:he==="center"&&(u+=-le):w==="center"?he==="left"?u+=-le:he==="right"&&(u+=le):w==="right"&&(he==="center"?u+=le:he==="right"&&(u+=g))),C){case"top":h-=(ie.length-1)*ne;break;case"center":case"bottom":h-=(ie.length-1)*ne;break}for(var K=0;K0&&t.strokeText(ie[K],u,h),t.fillText(ie[K],u,h),h+=ne}else j>0&&t.strokeText(p,u,h),t.fillText(p,u,h);T!==0&&(t.rotate(-T),t.translate(-f,-d))}}};ly={};ly.drawNode=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l,u,h=e._private,f=h.rscratch,d=e.position();if(!(!Ct(d.x)||!Ct(d.y))&&!(a&&!e.visible())){var p=a?e.effectiveOpacity():1,m=s.usePaths(),g,y=!1,v=e.padding();l=e.width()+2*v,u=e.height()+2*v;var x;r&&(x=r,t.translate(-x.x1,-x.y1));for(var b=e.pstyle("background-image"),w=b.value,C=new Array(w.length),T=new Array(w.length),E=0,A=0;A0&&arguments[0]!==void 0?arguments[0]:L;s.eleFillStyle(t,e,oe)},"setupShapeColor"),K=o(function(){var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:$;s.colorStrokeStyle(t,R[0],R[1],R[2],oe)},"setupBorderColor"),X=o(function(){var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ie;s.colorStrokeStyle(t,Q[0],Q[1],Q[2],oe)},"setupOutlineColor"),te=o(function(oe,V,xe,q){var pe=s.nodePathCache=s.nodePathCache||[],ve=cme(xe==="polygon"?xe+","+q.join(","):xe,""+V,""+oe,""+le),Pe=pe[ve],_e,we=!1;return Pe!=null?(_e=Pe,we=!0,f.pathCache=_e):(_e=new Path2D,pe[ve]=f.pathCache=_e),{path:_e,cacheHit:we}},"getPath"),J=e.pstyle("shape").strValue,se=e.pstyle("shape-polygon-points").pfValue;if(m){t.translate(d.x,d.y);var ue=te(l,u,J,se);g=ue.path,y=ue.cacheHit}var Z=o(function(){if(!y){var oe=d;m&&(oe={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(g||t,oe.x,oe.y,l,u,le,f)}m?t.fill(g):t.fill()},"drawShape"),Se=o(function(){for(var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,xe=h.backgrounding,q=0,pe=0;pe0&&arguments[0]!==void 0?arguments[0]:!1,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasPie(e)&&(s.drawPie(t,e,V),oe&&(m||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,le,f)))},"drawPie"),ae=o(function(){var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,V=(D>0?D:-D)*oe,xe=D>0?0:255;D!==0&&(s.colorFillStyle(t,xe,xe,xe,V),m?t.fill(g):t.fill())},"darken"),Oe=o(function(){if(k>0){if(t.lineWidth=k,t.lineCap=B,t.lineJoin=M,t.setLineDash)switch(O){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash(P),t.lineDashOffset=z;break;case"solid":case"double":t.setLineDash([]);break}if(F!=="center"){if(t.save(),t.lineWidth*=2,F==="inside")m?t.clip(g):t.clip();else{var oe=new Path2D;oe.rect(-l/2-k,-u/2-k,l+2*k,u+2*k),oe.addPath(g),t.clip(oe,"evenodd")}m?t.stroke(g):t.stroke(),t.restore()}else m?t.stroke(g):t.stroke();if(O==="double"){t.lineWidth=k/3;var V=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",m?t.stroke(g):t.stroke(),t.globalCompositeOperation=V}t.setLineDash&&t.setLineDash([])}},"drawBorder"),ge=o(function(){if(H>0){if(t.lineWidth=H,t.lineCap="butt",t.setLineDash)switch(j){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var oe=d;m&&(oe={x:0,y:0});var V=s.getNodeShape(e),xe=k;F==="inside"&&(xe=0),F==="outside"&&(xe*=2);var q=(l+xe+(H+ne))/l,pe=(u+xe+(H+ne))/u,ve=l*q,Pe=u*pe,_e=s.nodeShapes[V].points,we;if(m){var Ve=te(ve,Pe,V,_e);we=Ve.path}if(V==="ellipse")s.drawEllipsePath(we||t,oe.x,oe.y,ve,Pe);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(V)){var De=0,qe=0,at=0;V==="round-diamond"?De=(xe+ne+H)*1.4:V==="round-heptagon"?(De=(xe+ne+H)*1.075,at=-(xe/2+ne+H)/35):V==="round-hexagon"?De=(xe+ne+H)*1.12:V==="round-pentagon"?(De=(xe+ne+H)*1.13,at=-(xe/2+ne+H)/15):V==="round-tag"?(De=(xe+ne+H)*1.12,qe=(xe/2+H+ne)*.07):V==="round-triangle"&&(De=(xe+ne+H)*(Math.PI/2),at=-(xe+ne/2+H)/Math.PI),De!==0&&(q=(l+De)/l,ve=l*q,["round-hexagon","round-tag"].includes(V)||(pe=(u+De)/u,Pe=u*pe)),le=le==="auto"?bme(ve,Pe):le;for(var Rt=ve/2,st=Pe/2,Ue=le+(xe+H+ne)/2,ct=new Array(_e.length/2),We=new Array(_e.length/2),ot=0;ot<_e.length/2;ot++)ct[ot]={x:oe.x+qe+Rt*_e[ot*2],y:oe.y+at+st*_e[ot*2+1]};var Yt,bt,Mt,xt,ut=ct.length;for(bt=ct[ut-1],Yt=0;Yt0){if(i=i||n.position(),a==null||s==null){var m=n.padding();a=n.width()+2*m,s=n.height()+2*m}l.colorFillStyle(r,f[0],f[1],f[2],h),l.nodeShapes[d].draw(r,i.x,i.y,a+u*2,s+u*2,p),r.fill()}}}},"drawNodeOverlayUnderlay");ly.drawNodeOverlay=Ege("overlay");ly.drawNodeUnderlay=Ege("underlay");ly.hasPie=function(t){return t=t[0],t._private.hasPie};ly.drawPie=function(t,e,r,n){e=e[0],n=n||e.position();var i=e.cy().style(),a=e.pstyle("pie-size"),s=n.x,l=n.y,u=e.width(),h=e.height(),f=Math.min(u,h)/2,d=0,p=this.usePaths();p&&(s=0,l=0),a.units==="%"?f=f*a.pfValue:a.pfValue!==void 0&&(f=a.pfValue/2);for(var m=1;m<=i.pieBackgroundN;m++){var g=e.pstyle("pie-"+m+"-background-size").value,y=e.pstyle("pie-"+m+"-background-color").value,v=e.pstyle("pie-"+m+"-background-opacity").value*r,x=g/100;x+d>1&&(x=1-d);var b=1.5*Math.PI+2*Math.PI*d,w=2*Math.PI*x,C=b+w;g===0||d>=1||d+x>1||(t.beginPath(),t.moveTo(s,l),t.arc(s,l,f,b,C),t.closePath(),this.colorFillStyle(t,y[0],y[1],y[2],v),t.fill(),d+=x)}};ys={},dZe=100;ys.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/r};ys.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,n,i=0;ie.minMbLowQualFrames&&(e.motionBlurPxRatio=e.mbPxRBlurry)),e.clearingMotionBlur&&(e.motionBlurPxRatio=1),e.textureDrawLastFrame&&!d&&(f[e.NODE]=!0,f[e.SELECT_BOX]=!0);var b=r.style(),w=r.zoom(),C=s!==void 0?s:w,T=r.pan(),E={x:T.x,y:T.y},A={zoom:w,pan:{x:T.x,y:T.y}},S=e.prevViewport,_=S===void 0||A.zoom!==S.zoom||A.pan.x!==S.pan.x||A.pan.y!==S.pan.y;!_&&!(y&&!g)&&(e.motionBlurPxRatio=1),l&&(E=l),C*=u,E.x*=u,E.y*=u;var I=e.getCachedZSortedEles();function D(K,X,te,J,se){var ue=K.globalCompositeOperation;K.globalCompositeOperation="destination-out",e.colorFillStyle(K,255,255,255,e.motionBlurTransparency),K.fillRect(X,te,J,se),K.globalCompositeOperation=ue}o(D,"mbclear");function k(K,X){var te,J,se,ue;!e.clearingMotionBlur&&(K===h.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]||K===h.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG])?(te={x:T.x*m,y:T.y*m},J=w*m,se=e.canvasWidth*m,ue=e.canvasHeight*m):(te=E,J=C,se=e.canvasWidth,ue=e.canvasHeight),K.setTransform(1,0,0,1,0,0),X==="motionBlur"?D(K,0,0,se,ue):!n&&(X===void 0||X)&&K.clearRect(0,0,se,ue),i||(K.translate(te.x,te.y),K.scale(J,J)),l&&K.translate(l.x,l.y),s&&K.scale(s,s)}if(o(k,"setContextTransform"),d||(e.textureDrawLastFrame=!1),d){if(e.textureDrawLastFrame=!0,!e.textureCache){e.textureCache={},e.textureCache.bb=r.mutableElements().boundingBox(),e.textureCache.texture=e.data.bufferCanvases[e.TEXTURE_BUFFER];var L=e.data.bufferContexts[e.TEXTURE_BUFFER];L.setTransform(1,0,0,1,0,0),L.clearRect(0,0,e.canvasWidth*e.textureMult,e.canvasHeight*e.textureMult),e.render({forcedContext:L,drawOnlyNodeLayer:!0,forcedPxRatio:u*e.textureMult});var A=e.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:e.canvasWidth,height:e.canvasHeight};A.mpan={x:(0-A.pan.x)/A.zoom,y:(0-A.pan.y)/A.zoom}}f[e.DRAG]=!1,f[e.NODE]=!1;var R=h.contexts[e.NODE],O=e.textureCache.texture,A=e.textureCache.viewport;R.setTransform(1,0,0,1,0,0),p?D(R,0,0,A.width,A.height):R.clearRect(0,0,A.width,A.height);var M=b.core("outside-texture-bg-color").value,B=b.core("outside-texture-bg-opacity").value;e.colorFillStyle(R,M[0],M[1],M[2],B),R.fillRect(0,0,A.width,A.height);var w=r.zoom();k(R,!1),R.clearRect(A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u),R.drawImage(O,A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u)}else e.textureOnViewport&&!n&&(e.textureCache=null);var F=r.extent(),P=e.pinching||e.hoverData.dragging||e.swipePanning||e.data.wheelZooming||e.hoverData.draggingEles||e.cy.animated(),z=e.hideEdgesOnViewport&&P,$=[];if($[e.NODE]=!f[e.NODE]&&p&&!e.clearedForMotionBlur[e.NODE]||e.clearingMotionBlur,$[e.NODE]&&(e.clearedForMotionBlur[e.NODE]=!0),$[e.DRAG]=!f[e.DRAG]&&p&&!e.clearedForMotionBlur[e.DRAG]||e.clearingMotionBlur,$[e.DRAG]&&(e.clearedForMotionBlur[e.DRAG]=!0),f[e.NODE]||i||a||$[e.NODE]){var H=p&&!$[e.NODE]&&m!==1,R=n||(H?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]:h.contexts[e.NODE]),Q=p&&!H?"motionBlur":void 0;k(R,Q),z?e.drawCachedNodes(R,I.nondrag,u,F):e.drawLayeredElements(R,I.nondrag,u,F),e.debug&&e.drawDebugPoints(R,I.nondrag),!i&&!p&&(f[e.NODE]=!1)}if(!a&&(f[e.DRAG]||i||$[e.DRAG])){var H=p&&!$[e.DRAG]&&m!==1,R=n||(H?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG]:h.contexts[e.DRAG]);k(R,p&&!H?"motionBlur":void 0),z?e.drawCachedNodes(R,I.drag,u,F):e.drawCachedElements(R,I.drag,u,F),e.debug&&e.drawDebugPoints(R,I.drag),!i&&!p&&(f[e.DRAG]=!1)}if(this.drawSelectionRectangle(t,k),p&&m!==1){var j=h.contexts[e.NODE],ie=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE],ne=h.contexts[e.DRAG],le=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG],he=o(function(X,te,J){X.setTransform(1,0,0,1,0,0),J||!x?X.clearRect(0,0,e.canvasWidth,e.canvasHeight):D(X,0,0,e.canvasWidth,e.canvasHeight);var se=m;X.drawImage(te,0,0,e.canvasWidth*se,e.canvasHeight*se,0,0,e.canvasWidth,e.canvasHeight)},"drawMotionBlur");(f[e.NODE]||$[e.NODE])&&(he(j,ie,$[e.NODE]),f[e.NODE]=!1),(f[e.DRAG]||$[e.DRAG])&&(he(ne,le,$[e.DRAG]),f[e.DRAG]=!1)}e.prevViewport=A,e.clearingMotionBlur&&(e.clearingMotionBlur=!1,e.motionBlurCleared=!0,e.motionBlur=!0),p&&(e.motionBlurTimeout=setTimeout(function(){e.motionBlurTimeout=null,e.clearedForMotionBlur[e.NODE]=!1,e.clearedForMotionBlur[e.DRAG]=!1,e.motionBlur=!1,e.clearingMotionBlur=!d,e.mbFrames=0,f[e.NODE]=!0,f[e.DRAG]=!0,e.redraw()},dZe)),n||r.emit("render")};ys.drawSelectionRectangle=function(t,e){var r=this,n=r.cy,i=r.data,a=n.style(),s=t.drawOnlyNodeLayer,l=t.drawAllLayers,u=i.canvasNeedsRedraw,h=t.forcedContext;if(r.showFps||!s&&u[r.SELECT_BOX]&&!l){var f=h||i.contexts[r.SELECT_BOX];if(e(f),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var d=r.cy.zoom(),p=a.core("selection-box-border-width").value/d;f.lineWidth=p,f.fillStyle="rgba("+a.core("selection-box-color").value[0]+","+a.core("selection-box-color").value[1]+","+a.core("selection-box-color").value[2]+","+a.core("selection-box-opacity").value+")",f.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),p>0&&(f.strokeStyle="rgba("+a.core("selection-box-border-color").value[0]+","+a.core("selection-box-border-color").value[1]+","+a.core("selection-box-border-color").value[2]+","+a.core("selection-box-opacity").value+")",f.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(i.bgActivePosistion&&!r.hoverData.selecting){var d=r.cy.zoom(),m=i.bgActivePosistion;f.fillStyle="rgba("+a.core("active-bg-color").value[0]+","+a.core("active-bg-color").value[1]+","+a.core("active-bg-color").value[2]+","+a.core("active-bg-opacity").value+")",f.beginPath(),f.arc(m.x,m.y,a.core("active-bg-size").pfValue/d,0,2*Math.PI),f.fill()}var g=r.lastRedrawTime;if(r.showFps&&g){g=Math.round(g);var y=Math.round(1e3/g),v="1 frame = "+g+" ms = "+y+" fps";if(f.setTransform(1,0,0,1,0,0),f.fillStyle="rgba(255, 0, 0, 0.75)",f.strokeStyle="rgba(255, 0, 0, 0.75)",f.font="30px Arial",!Nb){var x=f.measureText(v);Nb=x.actualBoundingBoxAscent}f.fillText(v,0,Nb);var b=60;f.strokeRect(0,Nb+10,250,20),f.fillRect(0,Nb+10,250*Math.min(y/b,1),20)}l||(u[r.SELECT_BOX]=!1)}};o(z0e,"compileShader");o(pZe,"createProgram");o(mZe,"createTextureCanvas");o(wB,"getEffectivePanZoom");o(NP,"modelToRenderedPosition");o(oS,"toWebGLColor");o(lS,"indexToVec4");o(gZe,"vec4ToIndex");o(yZe,"createTexture");o(Sge,"getTypeInfo");o(Cge,"createTypedArray");o(vZe,"createTypedArrayView");o(xZe,"createBufferStaticDraw");o(po,"createBufferDynamicDraw");o(bZe,"createPickingFrameBuffer");G0e=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});o(Gb,"create");o(Age,"identity");o(wZe,"multiply");o(DS,"translate");o(_ge,"rotate");o(TB,"scale");o(TZe,"projection");Vb={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},Mb=la({getKey:null,drawElement:null,getBoundingBox:null,getRotation:null,getRotationPoint:null,getRotationOffset:null,isVisible:null,getPadding:null}),kZe=function(){function t(e,r){Mf(this,t),this.debugID=Math.floor(Math.random()*1e4),this.r=e,this.atlasSize=r.webglTexSize,this.rows=r.webglTexRows,this.enableWrapping=r.enableWrapping,this.texHeight=Math.floor(this.atlasSize/this.rows),this.maxTexWidth=this.atlasSize,this.texture=null,this.canvas=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=r.createTextureCanvas(e,this.atlasSize,this.atlasSize),this.scratch=r.createTextureCanvas(e,this.atlasSize,this.texHeight,"scratch")}return o(t,"Atlas"),If(t,[{key:"getKeys",value:o(function(){return new Set(this.keyToLocation.keys())},"getKeys")},{key:"getScale",value:o(function(r){var n=r.w,i=r.h,a=this.texHeight,s=this.maxTexWidth,l=a/i,u=n*l,h=i*l;return u>s&&(l=s/n,u=n*l,h=i*l),{scale:l,texW:u,texH:h}},"getScale")},{key:"draw",value:o(function(r,n,i){var a=this,s=this.atlasSize,l=this.rows,u=this.texHeight,h=this.getScale(n),f=h.scale,d=h.texW,p=h.texH,m=[null,null],g=o(function(w,C){if(i&&C){var T=C.context,E=w.x,A=w.row,S=E,_=u*A;T.save(),T.translate(S,_),T.scale(f,f),i(T,n),T.restore()}},"drawAt"),y=o(function(){g(a.freePointer,a.canvas),m[0]={x:a.freePointer.x,y:a.freePointer.row*u,w:d,h:p},m[1]={x:a.freePointer.x+d,y:a.freePointer.row*u,w:0,h:p},a.freePointer.x+=d,a.freePointer.x==s&&(a.freePointer.x=0,a.freePointer.row++)},"drawNormal"),v=o(function(){var w=a.scratch,C=a.canvas;w.clear(),g({x:0,row:0},w);var T=s-a.freePointer.x,E=d-T,A=u;{var S=a.freePointer.x,_=a.freePointer.row*u,I=T;C.context.drawImage(w,0,0,I,A,S,_,I,A),m[0]={x:S,y:_,w:I,h:p}}{var D=T,k=(a.freePointer.row+1)*u,L=E;C&&C.context.drawImage(w,D,0,L,A,0,k,L,A),m[1]={x:0,y:k,w:L,h:p}}a.freePointer.x=E,a.freePointer.row++},"drawWrapped"),x=o(function(){a.freePointer.x=0,a.freePointer.row++},"moveToStartOfNextRow");if(this.freePointer.x+d<=s)y();else{if(this.freePointer.row>=l-1)return!1;this.freePointer.x===s?(x(),y()):this.enableWrapping?v():(x(),y())}return this.keyToLocation.set(r,m),this.needsBuffer=!0,m},"draw")},{key:"getOffsets",value:o(function(r){return this.keyToLocation.get(r)},"getOffsets")},{key:"isEmpty",value:o(function(){return this.freePointer.x===0&&this.freePointer.row===0},"isEmpty")},{key:"canFit",value:o(function(r){var n=this.atlasSize,i=this.rows,a=this.getScale(r),s=a.texW;return this.freePointer.x+s>n?this.freePointer.row1&&arguments[1]!==void 0?arguments[1]:{},i=n.forceRedraw,a=i===void 0?!1:i,s=n.filterEle,l=s===void 0?function(){return!0}:s,u=n.filterType,h=u===void 0?function(){return!0}:u,f=!1,d=mo(r),p;try{for(d.s();!(p=d.n()).done;){var m=p.value;if(l(m)){var g=m.id(),y=mo(this.getRenderTypes()),v;try{for(y.s();!(v=y.n()).done;){var x=v.value;if(h(x.type)){var b=x.getKey(m);a?(x.atlasCollection.deleteKey(g,b),x.atlasCollection.styleKeyNeedsRedraw.add(b),f=!0):f|=x.atlasCollection.checkKeyIsInvalid(g,b)}}}catch(w){y.e(w)}finally{y.f()}}}}catch(w){d.e(w)}finally{d.f()}return f},"invalidate")},{key:"gc",value:o(function(){var r=mo(this.getRenderTypes()),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;i.atlasCollection.gc()}}catch(a){r.e(a)}finally{r.f()}},"gc")},{key:"isRenderable",value:o(function(r,n){var i=this.getRenderTypeOpts(n);return i&&i.isVisible(r)},"isRenderable")},{key:"startBatch",value:o(function(){this.batchAtlases=[]},"startBatch")},{key:"getAtlasCount",value:o(function(){return this.batchAtlases.length},"getAtlasCount")},{key:"getAtlases",value:o(function(){return this.batchAtlases},"getAtlases")},{key:"getOrCreateAtlas",value:o(function(r,n,i){var a=this.renderTypes.get(i),s=a.getKey(r),l=r.id();return a.atlasCollection.draw(l,s,n,function(u){a.drawElement(u,r,n,!0,!0)})},"getOrCreateAtlas")},{key:"getAtlasIndexForBatch",value:o(function(r){var n=this.batchAtlases.indexOf(r);if(n<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)return;this.batchAtlases.push(r),n=this.batchAtlases.length-1}return n},"getAtlasIndexForBatch")},{key:"getIndexArray",value:o(function(){return Array.from({length:this.maxAtlases},function(r,n){return n})},"getIndexArray")},{key:"getAtlasInfo",value:o(function(r,n){var i=this.renderTypes.get(n),a=i.getBoundingBox(r),s=this.getOrCreateAtlas(r,a,n),l=this.getAtlasIndexForBatch(s);if(l!==void 0){var u=i.getKey(r),h=s.getOffsets(u),f=_i(h,2),d=f[0],p=f[1];return{atlasID:l,tex:d,tex1:d,tex2:p,bb:a,type:n,styleKey:u}}},"getAtlasInfo")},{key:"canAddToCurrentBatch",value:o(function(r,n){if(this.batchAtlases.length===this.maxAtlasesPerBatch){var i=this.renderTypes.get(n),a=i.getKey(r),s=i.atlasCollection.getAtlas(a);return s&&this.batchAtlases.includes(s)}return!0},"canAddToCurrentBatch")},{key:"setTransformMatrix",value:o(function(r,n,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,s=n.bb,l=n.type,u=n.tex1,h=n.tex2,f=this.getRenderTypeOpts(l),d=f.getPadding?f.getPadding(i):0,p=u.w/(u.w+h.w);a||(p=1-p);var m=this.getAdjustedBB(s,d,a,p),g,y;Age(r);var v=f.getRotation?f.getRotation(i):0;if(v!==0){var x=f.getRotationPoint(i),b=x.x,w=x.y;DS(r,r,[b,w]),_ge(r,r,v);var C=f.getRotationOffset(i);g=C.x+m.xOffset,y=C.y}else g=m.x1,y=m.y1;DS(r,r,[g,y]),TB(r,r,[m.w,m.h])},"setTransformMatrix")},{key:"getTransformMatrix",value:o(function(r,n){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=Gb();return this.setTransformMatrix(a,r,n,i),a},"getTransformMatrix")},{key:"getAdjustedBB",value:o(function(r,n,i,a){var s=r.x1,l=r.y1,u=r.w,h=r.h;n&&(s-=n,l-=n,u+=2*n,h+=2*n);var f=0,d=u*a;return i&&a<1?u=d:!i&&a<1&&(f=u-d,s+=f,u=d),{x1:s,y1:l,w:u,h,xOffset:f}},"getAdjustedBB")},{key:"getDebugInfo",value:o(function(){var r=[],n=mo(this.renderTypes),i;try{for(n.s();!(i=n.n()).done;){var a=_i(i.value,2),s=a[0],l=a[1],u=l.atlasCollection.getCounts(),h=u.keyCount,f=u.atlasCount;r.push({type:s,keyCount:h,atlasCount:f})}}catch(d){n.e(d)}finally{n.f()}return r},"getDebugInfo")}]),t}(),MP=0,V0e=1,U0e=2,IP=3,AZe=function(){function t(e,r,n){Mf(this,t),this.r=e,this.gl=r,this.maxInstances=n.webglBatchSize,this.maxAtlases=n.webglTexPerBatch,this.atlasSize=n.webglTexSize,this.bgColor=n.bgColor,n.enableWrapping=!0,n.createTextureCanvas=mZe,this.atlasManager=new CZe(e,n),this.program=this.createShaderProgram(Vb.SCREEN),this.pickingProgram=this.createShaderProgram(Vb.PICKING),this.vao=this.createVAO(),this.debugInfo=[]}return o(t,"ElementDrawingWebGL"),If(t,[{key:"addTextureRenderType",value:o(function(r,n){this.atlasManager.addRenderType(r,n)},"addTextureRenderType")},{key:"invalidate",value:o(function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.type,a=this.atlasManager;return i?a.invalidate(r,{filterType:o(function(l){return l===i},"filterType"),forceRedraw:!0}):a.invalidate(r)},"invalidate")},{key:"gc",value:o(function(){this.atlasManager.gc()},"gc")},{key:"createShaderProgram",value:o(function(r){var n=this.gl,i=`#version 300 es - precision highp float; - - uniform mat3 uPanZoomMatrix; - uniform int uAtlasSize; - - // instanced - in vec2 aPosition; - - // what are we rendering? - in int aVertType; - - // for picking - in vec4 aIndex; - - // For textures - in int aAtlasId; // which shader unit/atlas to use - in vec4 aTex1; // x/y/w/h of texture in atlas - in vec4 aTex2; - - // for any transforms that are needed - in vec4 aScaleRotate1; // vectors use fewer attributes than matrices - in vec2 aTranslate1; - in vec4 aScaleRotate2; - in vec2 aTranslate2; - - // for edges - in vec4 aPointAPointB; - in vec4 aPointCPointD; - in float aLineWidth; - in vec4 aEdgeColor; - - out vec2 vTexCoord; - out vec4 vEdgeColor; - flat out int vAtlasId; - flat out vec4 vIndex; - flat out int vVertType; - - void main(void) { - int vid = gl_VertexID; - vec2 position = aPosition; - - if(aVertType == `.concat(MP,`) { - float texX; - float texY; - float texW; - float texH; - mat3 texMatrix; - - int vid = gl_VertexID; - if(vid <= 5) { - texX = aTex1.x; - texY = aTex1.y; - texW = aTex1.z; - texH = aTex1.w; - texMatrix = mat3( - vec3(aScaleRotate1.xy, 0.0), - vec3(aScaleRotate2.zw, 0.0), - vec3(aTranslate1, 1.0) - ); - } else { - texX = aTex2.x; - texY = aTex2.y; - texW = aTex2.z; - texH = aTex2.w; - texMatrix = mat3( - vec3(aScaleRotate2.xy, 0.0), - vec3(aScaleRotate2.zw, 0.0), - vec3(aTranslate2, 1.0) - ); - } - - if(vid == 1 || vid == 2 || vid == 4 || vid == 7 || vid == 8 || vid == 10) { - texX += texW; - } - if(vid == 2 || vid == 4 || vid == 5 || vid == 8 || vid == 10 || vid == 11) { - texY += texH; - } - - float d = float(uAtlasSize); - vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1 - - gl_Position = vec4(uPanZoomMatrix * texMatrix * vec3(position, 1.0), 1.0); - } - else if(aVertType == `).concat(V0e,` && vid < 6) { - vec2 source = aPointAPointB.xy; - vec2 target = aPointAPointB.zw; - - // adjust the geometry so that the line is centered on the edge - position.y = position.y - 0.5; - - vec2 xBasis = target - source; - vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x)); - vec2 point = source + xBasis * position.x + yBasis * aLineWidth * position.y; - - gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0); - vEdgeColor = aEdgeColor; - } - else if(aVertType == `).concat(U0e,` && vid < 6) { - vec2 pointA = aPointAPointB.xy; - vec2 pointB = aPointAPointB.zw; - vec2 pointC = aPointCPointD.xy; - vec2 pointD = aPointCPointD.zw; - - // adjust the geometry so that the line is centered on the edge - position.y = position.y - 0.5; - - vec2 p0 = pointA; - vec2 p1 = pointB; - vec2 p2 = pointC; - vec2 pos = position; - if(position.x == 1.0) { - p0 = pointD; - p1 = pointC; - p2 = pointB; - pos = vec2(0.0, -position.y); - } - - vec2 p01 = p1 - p0; - vec2 p12 = p2 - p1; - vec2 p21 = p1 - p2; - - // Find the normal vector. - vec2 tangent = normalize(normalize(p12) + normalize(p01)); - vec2 normal = vec2(-tangent.y, tangent.x); - - // Find the vector perpendicular to p0 -> p1. - vec2 p01Norm = normalize(vec2(-p01.y, p01.x)); - - // Determine the bend direction. - float sigma = sign(dot(p01 + p21, normal)); - float width = aLineWidth; - - if(sign(pos.y) == -sigma) { - // This is an intersecting vertex. Adjust the position so that there's no overlap. - vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm); - gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); - } else { - // This is a non-intersecting vertex. Treat it like a mitre join. - vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm); - gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); - } - - vEdgeColor = aEdgeColor; - } - else if(aVertType == `).concat(IP,` && vid < 3) { - // massage the first triangle into an edge arrow - if(vid == 0) - position = vec2(-0.15, -0.3); - if(vid == 1) - position = vec2( 0.0, 0.0); - if(vid == 2) - position = vec2( 0.15, -0.3); - - mat3 transform = mat3( - vec3(aScaleRotate1.xy, 0.0), - vec3(aScaleRotate1.zw, 0.0), - vec3(aTranslate1, 1.0) - ); - gl_Position = vec4(uPanZoomMatrix * transform * vec3(position, 1.0), 1.0); - vEdgeColor = aEdgeColor; - } else { - gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space - } - - vAtlasId = aAtlasId; - vIndex = aIndex; - vVertType = aVertType; - } - `),a=this.atlasManager.getIndexArray(),s=`#version 300 es - precision highp float; - - // define texture unit for each node in the batch - `.concat(a.map(function(h){return"uniform sampler2D uTexture".concat(h,";")}).join(` - `),` - - uniform vec4 uBGColor; - - in vec2 vTexCoord; - in vec4 vEdgeColor; - flat in int vAtlasId; - flat in vec4 vIndex; - flat in int vVertType; - - out vec4 outColor; - - void main(void) { - if(vVertType == `).concat(MP,`) { - `).concat(a.map(function(h){return"if(vAtlasId == ".concat(h,") outColor = texture(uTexture").concat(h,", vTexCoord);")}).join(` - else `),` - } else if(vVertType == `).concat(IP,`) { - // blend arrow color with background (using premultiplied alpha) - outColor.rgb = vEdgeColor.rgb + (uBGColor.rgb * (1.0 - vEdgeColor.a)); - outColor.a = 1.0; // make opaque, masks out line under arrow - } else { - outColor = vEdgeColor; - } - - `).concat(r.picking?`if(outColor.a == 0.0) discard; - else outColor = vIndex;`:"",` - } - `),l=pZe(n,i,s);l.aPosition=n.getAttribLocation(l,"aPosition"),l.aIndex=n.getAttribLocation(l,"aIndex"),l.aVertType=n.getAttribLocation(l,"aVertType"),l.aAtlasId=n.getAttribLocation(l,"aAtlasId"),l.aTex1=n.getAttribLocation(l,"aTex1"),l.aTex2=n.getAttribLocation(l,"aTex2"),l.aScaleRotate1=n.getAttribLocation(l,"aScaleRotate1"),l.aTranslate1=n.getAttribLocation(l,"aTranslate1"),l.aScaleRotate2=n.getAttribLocation(l,"aScaleRotate2"),l.aTranslate2=n.getAttribLocation(l,"aTranslate2"),l.aPointAPointB=n.getAttribLocation(l,"aPointAPointB"),l.aPointCPointD=n.getAttribLocation(l,"aPointCPointD"),l.aLineWidth=n.getAttribLocation(l,"aLineWidth"),l.aEdgeColor=n.getAttribLocation(l,"aEdgeColor"),l.uPanZoomMatrix=n.getUniformLocation(l,"uPanZoomMatrix"),l.uAtlasSize=n.getUniformLocation(l,"uAtlasSize"),l.uBGColor=n.getUniformLocation(l,"uBGColor"),l.uTextures=[];for(var u=0;u2&&arguments[2]!==void 0?arguments[2]:Vb.SCREEN;this.panZoomMatrix=r,this.debugInfo=n,this.renderTarget=i,this.startBatch()},"startFrame")},{key:"startBatch",value:o(function(){this.instanceCount=0,this.atlasManager.startBatch()},"startBatch")},{key:"endFrame",value:o(function(){this.endBatch()},"endFrame")},{key:"getTempMatrix",value:o(function(){return this.tempMatrix=this.tempMatrix||Gb()},"getTempMatrix")},{key:"drawTexture",value:o(function(r,n,i){var a=this.atlasManager;if(a.isRenderable(r,i)){a.canAddToCurrentBatch(r,i)||this.endBatch();var s=this.instanceCount;this.vertTypeBuffer.getView(s)[0]=MP;var l=this.indexBuffer.getView(s);lS(n,l);var u=a.getAtlasInfo(r,i,u),h=u.atlasID,f=u.tex1,d=u.tex2,p=this.atlasIdBuffer.getView(s);p[0]=h;var m=this.tex1Buffer.getView(s);m[0]=f.x,m[1]=f.y,m[2]=f.w,m[3]=f.h;var g=this.tex2Buffer.getView(s);g[0]=d.x,g[1]=d.y,g[2]=d.w,g[3]=d.h;for(var y=this.getTempMatrix(),v=0,x=[1,2];v=this.maxInstances&&this.endBatch()}},"drawTexture")},{key:"drawEdgeArrow",value:o(function(r,n,i){var a=r._private.rscratch,s,l,u;if(i==="source"?(s=a.arrowStartX,l=a.arrowStartY,u=a.srcArrowAngle):(s=a.arrowEndX,l=a.arrowEndY,u=a.tgtArrowAngle),!(isNaN(s)||s==null||isNaN(l)||l==null||isNaN(u)||u==null)){var h=r.pstyle(i+"-arrow-shape").value;if(h!=="none"){var f=r.pstyle(i+"-arrow-color").value,d=r.pstyle("opacity").value,p=r.pstyle("line-opacity").value,m=d*p,g=r.pstyle("width").pfValue,y=r.pstyle("arrow-scale").value,v=this.r.getArrowWidth(g,y),x=this.getTempMatrix();Age(x),DS(x,x,[s,l]),TB(x,x,[v,v]),_ge(x,x,u);var b=this.instanceCount;this.vertTypeBuffer.getView(b)[0]=IP;var w=this.indexBuffer.getView(b);lS(n,w);var C=this.edgeColorBuffer.getView(b);oS(f,m,C);var T=this.scaleRotate1Buffer.getView(b);T[0]=x[0],T[1]=x[1],T[2]=x[3],T[3]=x[4];var E=this.translate1Buffer.getView(b);E[0]=x[6],E[1]=x[7],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}},"drawEdgeArrow")},{key:"drawEdgeLine",value:o(function(r,n){var i=r.pstyle("opacity").value,a=r.pstyle("line-opacity").value,s=r.pstyle("width").pfValue,l=r.pstyle("line-color").value,u=i*a,h=this.getEdgePoints(r);if(h.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),h.length==4){var f=this.instanceCount;this.vertTypeBuffer.getView(f)[0]=V0e;var d=this.indexBuffer.getView(f);lS(n,d);var p=this.edgeColorBuffer.getView(f);oS(l,u,p);var m=this.lineWidthBuffer.getView(f);m[0]=s;var g=this.pointAPointBBuffer.getView(f);g[0]=h[0],g[1]=h[1],g[2]=h[2],g[3]=h[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y=this.maxInstances&&this.endBatch()}},"drawEdgeLine")},{key:"getEdgePoints",value:o(function(r){var n=r._private.rscratch,i=n.allpts;if(i.length==4)return i;var a=this.getNumSegments(r);return this.getCurveSegmentPoints(i,a)},"getEdgePoints")},{key:"getNumSegments",value:o(function(r){var n=15;return Math.min(Math.max(n,5),this.maxInstances)},"getNumSegments")},{key:"getCurveSegmentPoints",value:o(function(r,n){if(r.length==4)return r;for(var i=Array((n+1)*2),a=0;a<=n;a++)if(a==0)i[0]=r[0],i[1]=r[1];else if(a==n)i[a*2]=r[r.length-2],i[a*2+1]=r[r.length-1];else{var s=a/n;this.setCurvePoint(r,s,i,a*2)}return i},"getCurveSegmentPoints")},{key:"setCurvePoint",value:o(function(r,n,i,a){if(r.length<=2)i[a]=r[0],i[a+1]=r[1];else{for(var s=Array(r.length-2),l=0;l0},"isVisible")},{key:"getStyle",value:o(function(r,n){var i=n.pstyle("".concat(r,"-opacity")).value,a=n.pstyle("".concat(r,"-color")).value,s=n.pstyle("".concat(r,"-shape")).value;return{opacity:i,color:a,shape:s}},"getStyle")},{key:"getPadding",value:o(function(r,n){return n.pstyle("".concat(r,"-padding")).pfValue},"getPadding")},{key:"draw",value:o(function(r,n,i,a){if(this.isVisible(r,i)){var s=this.r,l=a.w,u=a.h,h=l/2,f=u/2,d=this.getStyle(r,i),p=d.shape,m=d.color,g=d.opacity;n.save(),n.fillStyle=H0e(m,g),p==="round-rectangle"||p==="roundrectangle"?s.drawRoundRectanglePath(n,h,f,l,u,"auto"):p==="ellipse"&&s.drawEllipsePath(n,h,f,l,u),n.fill(),n.restore()}},"draw")}]),t}();o(DZe,"getBGColor");Dge={};Dge.initWebgl=function(t,e){var r=this,n=r.data.contexts[r.WEBGL],i=t.cy.container();t.bgColor=DZe(i),t.webglTexSize=Math.min(t.webglTexSize,n.getParameter(n.MAX_TEXTURE_SIZE)),t.webglTexRows=Math.min(t.webglTexRows,54),t.webglBatchSize=Math.min(t.webglBatchSize,16384),t.webglTexPerBatch=Math.min(t.webglTexPerBatch,n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),r.webglDebug=t.webglDebug,r.webglDebugShowAtlases=t.webglDebugShowAtlases,console.log("max texture units",n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),console.log("max texture size",n.getParameter(n.MAX_TEXTURE_SIZE)),console.log("webgl options",t),r.pickingFrameBuffer=bZe(n),r.pickingFrameBuffer.needsDraw=!0;var a=o(function(f){return r.getTextAngle(f,null)},"getLabelRotation"),s=o(function(f){var d=f.pstyle("label");return d&&d.value},"isLabelVisible");r.eleDrawing=new AZe(r,n,t);var l=new _Ze(r);r.eleDrawing.addTextureRenderType("node-body",Mb({getKey:e.getStyleKey,getBoundingBox:e.getElementBox,drawElement:e.drawElement,isVisible:o(function(f){return f.visible()},"isVisible")})),r.eleDrawing.addTextureRenderType("node-label",Mb({getKey:e.getLabelKey,getBoundingBox:e.getLabelBox,drawElement:e.drawLabel,getRotation:a,getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:s})),r.eleDrawing.addTextureRenderType("node-overlay",Mb({getBoundingBox:e.getElementBox,getKey:o(function(f){return l.getStyleKey("overlay",f)},"getKey"),drawElement:o(function(f,d,p){return l.draw("overlay",f,d,p)},"drawElement"),isVisible:o(function(f){return l.isVisible("overlay",f)},"isVisible"),getPadding:o(function(f){return l.getPadding("overlay",f)},"getPadding")})),r.eleDrawing.addTextureRenderType("node-underlay",Mb({getBoundingBox:e.getElementBox,getKey:o(function(f){return l.getStyleKey("underlay",f)},"getKey"),drawElement:o(function(f,d,p){return l.draw("underlay",f,d,p)},"drawElement"),isVisible:o(function(f){return l.isVisible("underlay",f)},"isVisible"),getPadding:o(function(f){return l.getPadding("underlay",f)},"getPadding")})),r.eleDrawing.addTextureRenderType("edge-label",Mb({getKey:e.getLabelKey,getBoundingBox:e.getLabelBox,drawElement:e.drawLabel,getRotation:a,getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:s}));var u=n4(function(){console.log("garbage collect flag set"),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(h,f){var d=!1;f&&f.length>0&&(d|=r.eleDrawing.invalidate(f)),d&&u()}),LZe(r)};o(LZe,"overrideCanvasRendererFunctions");o(RZe,"clearWebgl");o(NZe,"clearCanvas");o(MZe,"createPanZoomMatrix");o(Lge,"setContextTransform");o(IZe,"drawSelectionRectangle");o(OZe,"drawAxes");o(PZe,"drawAtlases");o(BZe,"getPickingIndexes");o(FZe,"findNearestElementsWebgl");o(Rge,"renderWebgl");Pf={};Pf.drawPolygonPath=function(t,e,r,n,i,a){var s=n/2,l=i/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*a[0],r+l*a[1]);for(var u=1;u0&&s>0){m.clearRect(0,0,a,s),m.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(t.full)m.translate(-n.x1*h,-n.y1*h),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(n.x1*h,n.y1*h);else{var y=e.pan(),v={x:y.x*h,y:y.y*h};h*=e.zoom(),m.translate(v.x,v.y),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(-v.x,-v.y)}t.bg&&(m.globalCompositeOperation="destination-over",m.fillStyle=t.bg,m.rect(0,0,a,s),m.fill())}return p};o($Ze,"b64ToBlob");o(Y0e,"b64UriToB64");o(Mge,"output");c4.png=function(t){return Mge(t,this.bufferCanvasImage(t),"image/png")};c4.jpg=function(t){return Mge(t,this.bufferCanvasImage(t),"image/jpeg")};Ige={};Ige.nodeShapeImpl=function(t,e,r,n,i,a,s,l){switch(t){case"ellipse":return this.drawEllipsePath(e,r,n,i,a);case"polygon":return this.drawPolygonPath(e,r,n,i,a,s);case"round-polygon":return this.drawRoundPolygonPath(e,r,n,i,a,s,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,r,n,i,a,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,r,n,i,a,s,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,r,n,i,a,l);case"barrel":return this.drawBarrelPath(e,r,n,i,a)}};zZe=Oge,Er=Oge.prototype;Er.CANVAS_LAYERS=3;Er.SELECT_BOX=0;Er.DRAG=1;Er.NODE=2;Er.WEBGL=3;Er.CANVAS_TYPES=["2d","2d","2d","webgl2"];Er.BUFFER_COUNT=3;Er.TEXTURE_BUFFER=0;Er.MOTIONBLUR_BUFFER_NODE=1;Er.MOTIONBLUR_BUFFER_DRAG=2;o(Oge,"CanvasRenderer");Er.redrawHint=function(t,e){var r=this;switch(t){case"eles":r.data.canvasNeedsRedraw[Er.NODE]=e;break;case"drag":r.data.canvasNeedsRedraw[Er.DRAG]=e;break;case"select":r.data.canvasNeedsRedraw[Er.SELECT_BOX]=e;break;case"gc":r.data.gc=!0;break}};GZe=typeof Path2D<"u";Er.path2dEnabled=function(t){if(t===void 0)return this.pathsEnabled;this.pathsEnabled=!!t};Er.usePaths=function(){return GZe&&this.pathsEnabled};Er.setImgSmoothing=function(t,e){t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled=e:(t.webkitImageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e)};Er.getImgSmoothing=function(t){return t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled:t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled};Er.makeOffscreenCanvas=function(t,e){var r;if((typeof OffscreenCanvas>"u"?"undefined":Wi(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(t,e);else{var n=this.cy.window(),i=n.document;r=i.createElement("canvas"),r.width=t,r.height=e}return r};[Tge,Qc,th,bB,Yp,ly,ys,Dge,Pf,c4,Ige].forEach(function(t){rr(Er,t)});VZe=[{name:"null",impl:lge},{name:"base",impl:vge},{name:"canvas",impl:zZe}],UZe=[{type:"layout",extensions:SQe},{type:"renderer",extensions:VZe}],Pge={},Bge={};o(Fge,"setExtension");o($ge,"getExtension");o(HZe,"setModule");o(WZe,"getModule");QP=o(function(){if(arguments.length===2)return $ge.apply(null,arguments);if(arguments.length===3)return Fge.apply(null,arguments);if(arguments.length===4)return WZe.apply(null,arguments);if(arguments.length===5)return HZe.apply(null,arguments);ai("Invalid extension access syntax")},"extension");Jb.prototype.extension=QP;UZe.forEach(function(t){t.extensions.forEach(function(e){Fge(t.type,e.name,e.impl)})});zge=o(function t(){if(!(this instanceof t))return new t;this.length=0},"Stylesheet"),Wp=zge.prototype;Wp.instanceString=function(){return"stylesheet"};Wp.selector=function(t){var e=this.length++;return this[e]={selector:t,properties:[]},this};Wp.css=function(t,e){var r=this.length-1;if(Zt(t))this[r].properties.push({name:t,value:e});else if(Ur(t))for(var n=t,i=Object.keys(n),a=0;a{"use strict";o(function(e,r){typeof u4=="object"&&typeof EB=="object"?EB.exports=r():typeof define=="function"&&define.amd?define([],r):typeof u4=="object"?u4.layoutBase=r():e.layoutBase=r()},"webpackUniversalModuleDefinition")(u4,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=26)}([function(t,e,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(4);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp&&(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)),this.labelHeight>m&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-m)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-m),this.setHeight(this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h},function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(6),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,w=0;w-1&&E>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(T,1),x.target!=x.source&&x.target.edges.splice(E,1);var C=x.source.owner.getEdges().indexOf(x);if(C==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(C,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,w=this.getNodes(),C=w.length,T=0;Tv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(w[0].getParent().paddingLeft!=null?b=w[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,w,C,T,E,A,S=this.nodes,_=S.length,I=0;I<_;I++){var D=S[I];g&&D.child!=null&&D.updateBounds(),w=D.getLeft(),C=D.getRight(),T=D.getTop(),E=D.getBottom(),y>w&&(y=w),vT&&(x=T),bw&&(y=w),vT&&(x=T),b=this.nodes.length){var _=0;v.forEach(function(I){I.owner==g&&_++}),_==this.nodes.length&&(this.isConnected=!0)}},t.exports=p},function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(5),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=S,!1;if(hf)return l[0]=p,l[1]=h,l[2]=E,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,k=!0):(l[0]=g,l[1]=m,k=!0):R===M&&(u>f?(l[0]=p,l[1]=m,k=!0):(l[0]=x,l[1]=v,k=!0)),-O===M?f>u?(l[2]=A,l[3]=S,L=!0):(l[2]=E,l[3]=T,L=!0):O===M&&(f>u?(l[2]=C,l[3]=T,L=!0):(l[2]=_,l[3]=S,L=!0)),k&&L)return!1;if(u>f?h>d?(B=this.getCardinalDirection(R,M,4),F=this.getCardinalDirection(O,M,2)):(B=this.getCardinalDirection(-R,M,3),F=this.getCardinalDirection(-O,M,1)):h>d?(B=this.getCardinalDirection(-R,M,1),F=this.getCardinalDirection(-O,M,3)):(B=this.getCardinalDirection(R,M,2),F=this.getCardinalDirection(O,M,4)),!k)switch(B){case 1:z=m,P=u+-w/M,l[0]=P,l[1]=z;break;case 2:P=x,z=h+b*M,l[0]=P,l[1]=z;break;case 3:z=v,P=u+w/M,l[0]=P,l[1]=z;break;case 4:P=y,z=h+-b*M,l[0]=P,l[1]=z;break}if(!L)switch(F){case 1:H=T,$=f+-D/M,l[2]=$,l[3]=H;break;case 2:$=_,H=d+I*M,l[2]=$,l[3]=H;break;case 3:H=S,$=f+D/M,l[2]=$,l[3]=H;break;case 4:$=A,H=d+-I*M,l[2]=$,l[3]=H;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,w=void 0,C=void 0,T=void 0,E=void 0,A=void 0,S=void 0,_=void 0;return w=p-f,T=h-d,A=d*f-h*p,C=v-g,E=m-y,S=y*g-m*v,_=w*E-C*T,_===0?null:(x=(T*S-E*A)/_,b=(C*A-w*S)/_,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n},function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,r){"use strict";var n=function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i},function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(w.push(T[0]);w.length>0&&g;){var E=w[0];w.splice(0,1),b.add(E);for(var A=E.getEdges(),x=0;x-1&&T.splice(D,1)}b=new Set,C=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(S,1);var _=C.getNeighborsList();_.forEach(function(k){if(y.indexOf(k)<0){var L=v.get(k),R=L-1;R==1&&E.push(k),v.set(k,R)}})}y=y.concat(E),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p},function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n},function(t,e,r){"use strict";var n=r(4);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i},function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mw||b>w)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(w=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>w||b>w)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||w>=x[0].length)){for(var C=0;Ch},"_defaultCompareFunction")}]),l}();t.exports=s},function(t,e,r){"use strict";var n=function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o(function(e,r){typeof h4=="object"&&typeof CB=="object"?CB.exports=r(SB()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof h4=="object"?h4.coseBase=r(SB()):e.coseBase=r(e.layoutBase)},"webpackUniversalModuleDefinition")(h4,function(t){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=7)}([function(e,r){e.exports=t},function(e,r,n){"use strict";var i=n(0).FDLayoutConstants;function a(){}o(a,"CoSEConstants");for(var s in i)a[s]=i[s];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TREE_REDUCTION_ON_INCREMENTAL=!1,e.exports=a},function(e,r,n){"use strict";var i=n(0).FDLayoutEdge;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEEdge"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).LGraph;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEGraph"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).LGraphManager;function a(l){i.call(this,l)}o(a,"CoSEGraphManager"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).FDLayoutNode,a=n(0).IMath;function s(u,h,f,d){i.call(this,u,h,f,d)}o(s,"CoSENode"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},s.prototype.propogateDisplacementToChildren=function(u,h){for(var f=this.getChild().getNodes(),d,p=0;p0)this.positionNodesRadially(T);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var E=new Set(this.getAllNodes()),A=this.nodesWithGravity.filter(function(S){return E.has(S)});this.graphManager.setAllNodesToApplyGravitation(A),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},w.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%f.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var T=new Set(this.getAllNodes()),E=this.nodesWithGravity.filter(function(_){return T.has(_)});this.graphManager.setAllNodesToApplyGravitation(E),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var A=!this.isTreeGrowing&&!this.isGrowthFinished,S=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(A,S),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},w.prototype.getPositionsData=function(){for(var T=this.graphManager.getAllNodes(),E={},A=0;A1){var k;for(k=0;kS&&(S=Math.floor(D.y)),I=Math.floor(D.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new m(d.WORLD_CENTER_X-D.x/2,d.WORLD_CENTER_Y-D.y/2))},w.radialLayout=function(T,E,A){var S=Math.max(this.maxDiagonalInTree(T),h.DEFAULT_RADIAL_SEPARATION);w.branchRadialLayout(E,null,0,359,0,S);var _=x.calculateBounds(T),I=new b;I.setDeviceOrgX(_.getMinX()),I.setDeviceOrgY(_.getMinY()),I.setWorldOrgX(A.x),I.setWorldOrgY(A.y);for(var D=0;D1;){var Q=H[0];H.splice(0,1);var j=B.indexOf(Q);j>=0&&B.splice(j,1),z--,F--}E!=null?$=(B.indexOf(H[0])+1)%z:$=0;for(var ie=Math.abs(S-A)/F,ne=$;P!=F;ne=++ne%z){var le=B[ne].getOtherEnd(T);if(le!=E){var he=(A+P*ie)%360,K=(he+ie)%360;w.branchRadialLayout(le,T,he,K,_+I,I),P++}}},w.maxDiagonalInTree=function(T){for(var E=y.MIN_VALUE,A=0;AE&&(E=_)}return E},w.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},w.prototype.groupZeroDegreeMembers=function(){var T=this,E={};this.memberGroups={},this.idToDummyNode={};for(var A=[],S=this.graphManager.getAllNodes(),_=0;_"u"&&(E[k]=[]),E[k]=E[k].concat(I)}Object.keys(E).forEach(function(L){if(E[L].length>1){var R="DummyCompound_"+L;T.memberGroups[R]=E[L];var O=E[L][0].getParent(),M=new l(T.graphManager);M.id=R,M.paddingLeft=O.paddingLeft||0,M.paddingRight=O.paddingRight||0,M.paddingBottom=O.paddingBottom||0,M.paddingTop=O.paddingTop||0,T.idToDummyNode[R]=M;var B=T.getGraphManager().add(T.newGraph(),M),F=O.getChild();F.add(M);for(var P=0;P=0;T--){var E=this.compoundOrder[T],A=E.id,S=E.paddingLeft,_=E.paddingTop;this.adjustLocations(this.tiledMemberPack[A],E.rect.x,E.rect.y,S,_)}},w.prototype.repopulateZeroDegreeMembers=function(){var T=this,E=this.tiledZeroDegreePack;Object.keys(E).forEach(function(A){var S=T.idToDummyNode[A],_=S.paddingLeft,I=S.paddingTop;T.adjustLocations(E[A],S.rect.x,S.rect.y,_,I)})},w.prototype.getToBeTiled=function(T){var E=T.id;if(this.toBeTiled[E]!=null)return this.toBeTiled[E];var A=T.getChild();if(A==null)return this.toBeTiled[E]=!1,!1;for(var S=A.getNodes(),_=0;_0)return this.toBeTiled[E]=!1,!1;if(I.getChild()==null){this.toBeTiled[I.id]=!1;continue}if(!this.getToBeTiled(I))return this.toBeTiled[E]=!1,!1}return this.toBeTiled[E]=!0,!0},w.prototype.getNodeDegree=function(T){for(var E=T.id,A=T.getEdges(),S=0,_=0;_L&&(L=O.rect.height)}A+=L+T.verticalPadding}},w.prototype.tileCompoundMembers=function(T,E){var A=this;this.tiledMemberPack=[],Object.keys(T).forEach(function(S){var _=E[S];A.tiledMemberPack[S]=A.tileNodes(T[S],_.paddingLeft+_.paddingRight),_.rect.width=A.tiledMemberPack[S].width,_.rect.height=A.tiledMemberPack[S].height})},w.prototype.tileNodes=function(T,E){var A=h.TILING_PADDING_VERTICAL,S=h.TILING_PADDING_HORIZONTAL,_={rows:[],rowWidth:[],rowHeight:[],width:0,height:E,verticalPadding:A,horizontalPadding:S};T.sort(function(k,L){return k.rect.width*k.rect.height>L.rect.width*L.rect.height?-1:k.rect.width*k.rect.height0&&(D+=T.horizontalPadding),T.rowWidth[A]=D,T.width0&&(k+=T.verticalPadding);var L=0;k>T.rowHeight[A]&&(L=T.rowHeight[A],T.rowHeight[A]=k,L=T.rowHeight[A]-L),T.height+=L,T.rows[A].push(E)},w.prototype.getShortestRowIndex=function(T){for(var E=-1,A=Number.MAX_VALUE,S=0;SA&&(E=S,A=T.rowWidth[S]);return E},w.prototype.canAddHorizontal=function(T,E,A){var S=this.getShortestRowIndex(T);if(S<0)return!0;var _=T.rowWidth[S];if(_+T.horizontalPadding+E<=T.width)return!0;var I=0;T.rowHeight[S]0&&(I=A+T.verticalPadding-T.rowHeight[S]);var D;T.width-_>=E+T.horizontalPadding?D=(T.height+I)/(_+E+T.horizontalPadding):D=(T.height+I)/T.width,I=A+T.verticalPadding;var k;return T.widthI&&E!=A){S.splice(-1,1),T.rows[A].push(_),T.rowWidth[E]=T.rowWidth[E]-I,T.rowWidth[A]=T.rowWidth[A]+I,T.width=T.rowWidth[instance.getLongestRowIndex(T)];for(var D=Number.MIN_VALUE,k=0;kD&&(D=S[k].height);E>0&&(D+=T.verticalPadding);var L=T.rowHeight[E]+T.rowHeight[A];T.rowHeight[E]=D,T.rowHeight[A]<_.height+T.verticalPadding&&(T.rowHeight[A]=_.height+T.verticalPadding);var R=T.rowHeight[E]+T.rowHeight[A];T.height+=R-L,this.shiftToLastRow(T)}},w.prototype.tilingPreLayout=function(){h.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},w.prototype.tilingPostLayout=function(){h.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},w.prototype.reduceTrees=function(){for(var T=[],E=!0,A;E;){var S=this.graphManager.getAllNodes(),_=[];E=!1;for(var I=0;I0)for(var F=_;F<=I;F++)B[0]+=this.grid[F][D-1].length+this.grid[F][D].length-1;if(I0)for(var F=D;F<=k;F++)B[3]+=this.grid[_-1][F].length+this.grid[_][F].length-1;for(var P=y.MAX_VALUE,z,$,H=0;H{"use strict";o(function(e,r){typeof f4=="object"&&typeof _B=="object"?_B.exports=r(AB()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof f4=="object"?f4.cytoscapeCoseBilkent=r(AB()):e.cytoscapeCoseBilkent=r(e.coseBase)},"webpackUniversalModuleDefinition")(f4,function(t){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=1)}([function(e,r){e.exports=t},function(e,r,n){"use strict";var i=n(0).layoutBase.LayoutConstants,a=n(0).layoutBase.FDLayoutConstants,s=n(0).CoSEConstants,l=n(0).CoSELayout,u=n(0).CoSENode,h=n(0).layoutBase.PointD,f=n(0).layoutBase.DimensionD,d={ready:o(function(){},"ready"),stop:o(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function p(v,x){var b={};for(var w in v)b[w]=v[w];for(var w in x)b[w]=x[w];return b}o(p,"extend");function m(v){this.options=p(d,v),g(this.options)}o(m,"_CoSELayout");var g=o(function(x){x.nodeRepulsion!=null&&(s.DEFAULT_REPULSION_STRENGTH=a.DEFAULT_REPULSION_STRENGTH=x.nodeRepulsion),x.idealEdgeLength!=null&&(s.DEFAULT_EDGE_LENGTH=a.DEFAULT_EDGE_LENGTH=x.idealEdgeLength),x.edgeElasticity!=null&&(s.DEFAULT_SPRING_STRENGTH=a.DEFAULT_SPRING_STRENGTH=x.edgeElasticity),x.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=x.nestingFactor),x.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=a.DEFAULT_GRAVITY_STRENGTH=x.gravity),x.numIter!=null&&(s.MAX_ITERATIONS=a.MAX_ITERATIONS=x.numIter),x.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=a.DEFAULT_GRAVITY_RANGE_FACTOR=x.gravityRange),x.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=x.gravityCompound),x.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=x.gravityRangeCompound),x.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=a.DEFAULT_COOLING_FACTOR_INCREMENTAL=x.initialEnergyOnIncremental),x.quality=="draft"?i.QUALITY=0:x.quality=="proof"?i.QUALITY=2:i.QUALITY=1,s.NODE_DIMENSIONS_INCLUDE_LABELS=a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=x.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=!x.randomize,s.ANIMATE=a.ANIMATE=i.ANIMATE=x.animate,s.TILE=x.tile,s.TILING_PADDING_VERTICAL=typeof x.tilingPaddingVertical=="function"?x.tilingPaddingVertical.call():x.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof x.tilingPaddingHorizontal=="function"?x.tilingPaddingHorizontal.call():x.tilingPaddingHorizontal},"getUserOptions");m.prototype.run=function(){var v,x,b=this.options,w=this.idToLNode={},C=this.layout=new l,T=this;T.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var E=C.newGraphManager();this.gm=E;var A=this.options.eles.nodes(),S=this.options.eles.edges();this.root=E.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(A),C);for(var _=0;_0){var k;k=b.getGraphManager().add(b.newGraph(),A),this.processChildrenList(k,E,b)}}},m.prototype.stop=function(){return this.stopped=!0,this};var y=o(function(x){x("layout","cose-bilkent",m)},"register");typeof cytoscape<"u"&&y(cytoscape),e.exports=y}])})});function JZe(t,e,r,n,i){return t.insert("polygon",":first-child").attr("points",n.map(function(a){return a.x+","+a.y}).join(" ")).attr("transform","translate("+(i.width-e)/2+", "+r+")")}var YZe,XZe,jZe,KZe,QZe,ZZe,eJe,tJe,Vge,Uge,Hge=N(()=>{"use strict";to();ir();YZe=12,XZe=o(function(t,e,r,n){e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 ${r.height-5} v${-r.height+2*5} q0,-5 5,-5 h${r.width-2*5} q5,0 5,5 v${r.height-5} H0 Z`),e.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",r.height).attr("x2",r.width).attr("y2",r.height)},"defaultBkg"),jZe=o(function(t,e,r){e.append("rect").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("height",r.height).attr("width",r.width)},"rectBkg"),KZe=o(function(t,e,r){let n=r.width,i=r.height,a=.15*n,s=.25*n,l=.35*n,u=.2*n;e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 0 a${a},${a} 0 0,1 ${n*.25},${-1*n*.1} - a${l},${l} 1 0,1 ${n*.4},${-1*n*.1} - a${s},${s} 1 0,1 ${n*.35},${1*n*.2} - - a${a},${a} 1 0,1 ${n*.15},${1*i*.35} - a${u},${u} 1 0,1 ${-1*n*.15},${1*i*.65} - - a${s},${a} 1 0,1 ${-1*n*.25},${n*.15} - a${l},${l} 1 0,1 ${-1*n*.5},0 - a${a},${a} 1 0,1 ${-1*n*.25},${-1*n*.15} - - a${a},${a} 1 0,1 ${-1*n*.1},${-1*i*.35} - a${u},${u} 1 0,1 ${n*.1},${-1*i*.65} - - H0 V0 Z`)},"cloudBkg"),QZe=o(function(t,e,r){let n=r.width,i=r.height,a=.15*n;e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 0 a${a},${a} 1 0,0 ${n*.25},${-1*i*.1} - a${a},${a} 1 0,0 ${n*.25},0 - a${a},${a} 1 0,0 ${n*.25},0 - a${a},${a} 1 0,0 ${n*.25},${1*i*.1} - - a${a},${a} 1 0,0 ${n*.15},${1*i*.33} - a${a*.8},${a*.8} 1 0,0 0,${1*i*.34} - a${a},${a} 1 0,0 ${-1*n*.15},${1*i*.33} - - a${a},${a} 1 0,0 ${-1*n*.25},${i*.15} - a${a},${a} 1 0,0 ${-1*n*.25},0 - a${a},${a} 1 0,0 ${-1*n*.25},0 - a${a},${a} 1 0,0 ${-1*n*.25},${-1*i*.15} - - a${a},${a} 1 0,0 ${-1*n*.1},${-1*i*.33} - a${a*.8},${a*.8} 1 0,0 0,${-1*i*.34} - a${a},${a} 1 0,0 ${n*.1},${-1*i*.33} - - H0 V0 Z`)},"bangBkg"),ZZe=o(function(t,e,r){e.append("circle").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("r",r.width/2)},"circleBkg");o(JZe,"insertPolygonShape");eJe=o(function(t,e,r){let n=r.height,a=n/4,s=r.width-r.padding+2*a,l=[{x:a,y:0},{x:s-a,y:0},{x:s,y:-n/2},{x:s-a,y:-n},{x:a,y:-n},{x:0,y:-n/2}];JZe(e,s,n,l,r)},"hexagonBkg"),tJe=o(function(t,e,r){e.append("rect").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("height",r.height).attr("rx",r.padding).attr("ry",r.padding).attr("width",r.width)},"roundedRectBkg"),Vge=o(async function(t,e,r,n,i){let a=i.htmlLabels,s=n%(YZe-1),l=e.append("g");r.section=s;let u="section-"+s;s<0&&(u+=" section-root"),l.attr("class",(r.class?r.class+" ":"")+"mindmap-node "+u);let h=l.append("g"),f=l.append("g"),d=r.descr.replace(/()/g,` -`);await Hn(f,d,{useHtmlLabels:a,width:r.width,classes:"mindmap-node-label"},i),a||f.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");let p=f.node().getBBox(),[m]=Bo(i.fontSize);if(r.height=p.height+m*1.1*.5+r.padding,r.width=p.width+2*r.padding,r.icon)if(r.type===t.nodeType.CIRCLE)r.height+=50,r.width+=50,l.append("foreignObject").attr("height","50px").attr("width",r.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+s+" "+r.icon),f.attr("transform","translate("+r.width/2+", "+(r.height/2-1.5*r.padding)+")");else{r.width+=50;let g=r.height;r.height=Math.max(g,60);let y=Math.abs(r.height-g);l.append("foreignObject").attr("width","60px").attr("height",r.height).attr("style","text-align: center;margin-top:"+y/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+s+" "+r.icon),f.attr("transform","translate("+(25+r.width/2)+", "+(y/2+r.padding/2)+")")}else if(a){let g=(r.width-p.width)/2,y=(r.height-p.height)/2;f.attr("transform","translate("+g+", "+y+")")}else{let g=r.width/2,y=r.padding/2;f.attr("transform","translate("+g+", "+y+")")}switch(r.type){case t.nodeType.DEFAULT:XZe(t,h,r,s);break;case t.nodeType.ROUNDED_RECT:tJe(t,h,r,s);break;case t.nodeType.RECT:jZe(t,h,r,s);break;case t.nodeType.CIRCLE:h.attr("transform","translate("+r.width/2+", "+ +r.height/2+")"),ZZe(t,h,r,s);break;case t.nodeType.CLOUD:KZe(t,h,r,s);break;case t.nodeType.BANG:QZe(t,h,r,s);break;case t.nodeType.HEXAGON:eJe(t,h,r,s);break}return t.setElementForId(r.id,l),r.height},"drawNode"),Uge=o(function(t,e){let r=t.getElementById(e.id),n=e.x||0,i=e.y||0;r.attr("transform","translate("+n+","+i+")")},"positionNode")});async function qge(t,e,r,n,i){await Vge(t,e,r,n,i),r.children&&await Promise.all(r.children.map((a,s)=>qge(t,e,a,n<0?s:n,i)))}function rJe(t,e){e.edges().map((r,n)=>{let i=r.data();if(r[0]._private.bodyBounds){let a=r[0]._private.rscratch;Y.trace("Edge: ",n,i),t.insert("path").attr("d",`M ${a.startX},${a.startY} L ${a.midX},${a.midY} L${a.endX},${a.endY} `).attr("class","edge section-edge-"+i.section+" edge-depth-"+i.depth)}})}function Yge(t,e,r,n){e.add({group:"nodes",data:{id:t.id.toString(),labelText:t.descr,height:t.height,width:t.width,level:n,nodeId:t.id,padding:t.padding,type:t.type},position:{x:t.x,y:t.y}}),t.children&&t.children.forEach(i=>{Yge(i,e,r,n+1),e.add({group:"edges",data:{id:`${t.id}_${i.id}`,source:t.id,target:i.id,depth:n,section:i.section}})})}function nJe(t,e){return new Promise(r=>{let n=Ge("body").append("div").attr("id","cy").attr("style","display:none"),i=rl({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});n.remove(),Yge(t,i,e,0),i.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}}),i.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),i.ready(a=>{Y.info("Ready",a),r(i)})})}function iJe(t,e){e.nodes().map((r,n)=>{let i=r.data();i.x=r.position().x,i.y=r.position().y,Uge(t,i);let a=t.getElementById(i.nodeId);Y.info("Id:",n,"Position: (",r.position().x,", ",r.position().y,")",i),a.attr("transform",`translate(${r.position().x-i.width/2}, ${r.position().y-i.height/2})`),a.attr("attr",`apa-${n})`)})}var Wge,aJe,Xge,jge=N(()=>{"use strict";kB();Wge=Sa(Gge(),1);dr();zt();vt();Vc();Ei();Hge();Ya();rl.use(Wge.default);o(qge,"drawNodes");o(rJe,"drawEdges");o(Yge,"addNodes");o(nJe,"layoutMindmap");o(iJe,"positionNodes");aJe=o(async(t,e,r,n)=>{Y.debug(`Rendering mindmap diagram -`+t);let i=n.db,a=i.getMindmap();if(!a)return;let s=me();s.htmlLabels=!1;let l=sa(e),u=l.append("g");u.attr("class","mindmap-edges");let h=l.append("g");h.attr("class","mindmap-nodes"),await qge(i,h,a,-1,s);let f=await nJe(a,s);rJe(u,f),iJe(i,f),Ao(void 0,l,s.mindmap?.padding??or.mindmap.padding,s.mindmap?.useMaxWidth??or.mindmap.useMaxWidth)},"draw"),Xge={draw:aJe}});var sJe,oJe,Kge,Qge=N(()=>{"use strict";Ys();sJe=o(t=>{let e="";for(let r=0;rbtt});var btt,O2e=N(()=>{"use strict";f2e();k2e();R2e();M2e();btt={db:F$,renderer:L2e,parser:h2e,styles:N2e}});var z$,F2e,$2e=N(()=>{"use strict";z$=(function(){var t=o(function(S,w,k,A){for(k=k||{},A=S.length;A--;k[S[A]]=w);return k},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],g=[1,33],y=[1,34],v=[1,6,7,11,13,15,16,19,22],x={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:o(function(w,k,A,C,R,I,L){var E=I.length-1;switch(R){case 6:case 7:return C;case 8:C.getLogger().trace("Stop NL ");break;case 9:C.getLogger().trace("Stop EOF ");break;case 11:C.getLogger().trace("Stop NL2 ");break;case 12:C.getLogger().trace("Stop EOF2 ");break;case 15:C.getLogger().info("Node: ",I[E].id),C.addNode(I[E-1].length,I[E].id,I[E].descr,I[E].type);break;case 16:C.getLogger().trace("Icon: ",I[E]),C.decorateNode({icon:I[E]});break;case 17:case 21:C.decorateNode({class:I[E]});break;case 18:C.getLogger().trace("SPACELIST");break;case 19:C.getLogger().trace("Node: ",I[E].id),C.addNode(0,I[E].id,I[E].descr,I[E].type);break;case 20:C.decorateNode({icon:I[E]});break;case 25:C.getLogger().trace("node found ..",I[E-2]),this.$={id:I[E-1],descr:I[E-1],type:C.getType(I[E-2],I[E])};break;case 26:this.$={id:I[E],descr:I[E],type:C.nodeType.DEFAULT};break;case 27:C.getLogger().trace("node found ..",I[E-3]),this.$={id:I[E-3],descr:I[E-1],type:C.getType(I[E-2],I[E])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:r,9:22,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:h,7:f,10:23,11:d},t(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:l}),t(p,[2,18]),t(p,[2,19]),t(p,[2,20]),t(p,[2,21]),t(p,[2,23]),t(p,[2,24]),t(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:f,10:32,11:d},{1:[2,7],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(m,[2,14],{7:g,11:y}),t(v,[2,8]),t(v,[2,9]),t(v,[2,10]),t(p,[2,15]),t(p,[2,16]),t(p,[2,17]),{20:[1,35]},{21:[1,36]},t(m,[2,13],{7:g,11:y}),t(v,[2,11]),t(v,[2,12]),{21:[1,37]},t(p,[2,25]),t(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(w,k){if(k.recoverable)this.trace(w);else{var A=new Error(w);throw A.hash=k,A}},"parseError"),parse:o(function(w){var k=this,A=[0],C=[],R=[null],I=[],L=this.table,E="",D=0,_=0,O=0,M=2,P=1,B=I.slice.call(arguments,1),F=Object.create(this.lexer),G={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(G.yy[$]=this.yy[$]);F.setInput(w,G.yy),G.yy.lexer=F,G.yy.parser=this,typeof F.yylloc>"u"&&(F.yylloc={});var U=F.yylloc;I.push(U);var j=F.options&&F.options.ranges;typeof G.yy.parseError=="function"?this.parseError=G.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function te(q){A.length=A.length-2*q,R.length=R.length-q,I.length=I.length-q}o(te,"popStack");function Y(){var q;return q=C.pop()||F.lex()||P,typeof q!="number"&&(q instanceof Array&&(C=q,q=C.pop()),q=k.symbols_[q]||q),q}o(Y,"lex");for(var oe,J,ue,re,ee,Z,K={},ae,Q,de,ne;;){if(ue=A[A.length-1],this.defaultActions[ue]?re=this.defaultActions[ue]:((oe===null||typeof oe>"u")&&(oe=Y()),re=L[ue]&&L[ue][oe]),typeof re>"u"||!re.length||!re[0]){var Te="";ne=[];for(ae in L[ue])this.terminals_[ae]&&ae>M&&ne.push("'"+this.terminals_[ae]+"'");F.showPosition?Te="Parse error on line "+(D+1)+`: +`+F.showPosition()+` +Expecting `+ne.join(", ")+", got '"+(this.terminals_[oe]||oe)+"'":Te="Parse error on line "+(D+1)+": Unexpected "+(oe==P?"end of input":"'"+(this.terminals_[oe]||oe)+"'"),this.parseError(Te,{text:F.match,token:this.terminals_[oe]||oe,line:F.yylineno,loc:U,expected:ne})}if(re[0]instanceof Array&&re.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ue+", token: "+oe);switch(re[0]){case 1:A.push(oe),R.push(F.yytext),I.push(F.yylloc),A.push(re[1]),oe=null,J?(oe=J,J=null):(_=F.yyleng,E=F.yytext,D=F.yylineno,U=F.yylloc,O>0&&O--);break;case 2:if(Q=this.productions_[re[1]][1],K.$=R[R.length-Q],K._$={first_line:I[I.length-(Q||1)].first_line,last_line:I[I.length-1].last_line,first_column:I[I.length-(Q||1)].first_column,last_column:I[I.length-1].last_column},j&&(K._$.range=[I[I.length-(Q||1)].range[0],I[I.length-1].range[1]]),Z=this.performAction.apply(K,[E,_,D,G.yy,re[1],R,I].concat(B)),typeof Z<"u")return Z;Q&&(A=A.slice(0,-1*Q*2),R=R.slice(0,-1*Q),I=I.slice(0,-1*Q)),A.push(this.productions_[re[1]][0]),R.push(K.$),I.push(K._$),de=L[A[A.length-2]][A[A.length-1]],A.push(de);break;case 3:return!0}}return!0},"parse")},b=(function(){var S={EOF:1,parseError:o(function(k,A){if(this.yy.parser)this.yy.parser.parseError(k,A);else throw new Error(k)},"parseError"),setInput:o(function(w,k){return this.yy=k||this.yy||{},this._input=w,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var w=this._input[0];this.yytext+=w,this.yyleng++,this.offset++,this.match+=w,this.matched+=w;var k=w.match(/(?:\r\n?|\n).*/g);return k?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),w},"input"),unput:o(function(w){var k=w.length,A=w.split(/(?:\r\n?|\n)/g);this._input=w+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-k),this.offset-=k;var C=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),A.length-1&&(this.yylineno-=A.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:A?(A.length===C.length?this.yylloc.first_column:0)+C[C.length-A.length].length-A[0].length:this.yylloc.first_column-k},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-k]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(w){this.unput(this.match.slice(w))},"less"),pastInput:o(function(){var w=this.matched.substr(0,this.matched.length-this.match.length);return(w.length>20?"...":"")+w.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var w=this.match;return w.length<20&&(w+=this._input.substr(0,20-w.length)),(w.substr(0,20)+(w.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var w=this.pastInput(),k=new Array(w.length+1).join("-");return w+this.upcomingInput()+` +`+k+"^"},"showPosition"),test_match:o(function(w,k){var A,C,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),C=w[0].match(/(?:\r\n?|\n).*/g),C&&(this.yylineno+=C.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:C?C[C.length-1].length-C[C.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+w[0].length},this.yytext+=w[0],this.match+=w[0],this.matches=w,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(w[0].length),this.matched+=w[0],A=this.performAction.call(this,this.yy,this,k,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),A)return A;if(this._backtrack){for(var I in R)this[I]=R[I];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var w,k,A,C;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),I=0;Ik[0].length)){if(k=A,C=I,this.options.backtrack_lexer){if(w=this.test_match(A,R[I]),w!==!1)return w;if(this._backtrack){k=!1;continue}else return!1}else if(!this.options.flex)break}return k?(w=this.test_match(k,R[C]),w!==!1?w:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var k=this.next();return k||this.lex()},"lex"),begin:o(function(k){this.conditionStack.push(k)},"begin"),popState:o(function(){var k=this.conditionStack.length-1;return k>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(k){return k=this.conditionStack.length-1-Math.abs(k||0),k>=0?this.conditionStack[k]:"INITIAL"},"topState"),pushState:o(function(k){this.begin(k)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(k,A,C,R){var I=R;switch(C){case 0:return k.getLogger().trace("Found comment",A.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:k.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return k.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:k.getLogger().trace("end icon"),this.popState();break;case 10:return k.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return k.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return k.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return k.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:k.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return k.getLogger().trace("description:",A.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),k.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),k.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),k.getLogger().trace("node end ...",A.yytext),"NODE_DEND";break;case 30:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),k.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),k.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return k.getLogger().trace("Long description:",A.yytext),20;break;case 36:return k.getLogger().trace("Long description:",A.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return S})();x.lexer=b;function T(){this.yy={}}return o(T,"Parser"),T.prototype=x,x.Parser=T,new T})();z$.parser=z$;F2e=z$});function z2e(t,e=0){return(Aa[t[e+0]]+Aa[t[e+1]]+Aa[t[e+2]]+Aa[t[e+3]]+"-"+Aa[t[e+4]]+Aa[t[e+5]]+"-"+Aa[t[e+6]]+Aa[t[e+7]]+"-"+Aa[t[e+8]]+Aa[t[e+9]]+"-"+Aa[t[e+10]]+Aa[t[e+11]]+Aa[t[e+12]]+Aa[t[e+13]]+Aa[t[e+14]]+Aa[t[e+15]]).toLowerCase()}var Aa,G2e=N(()=>{"use strict";Aa=[];for(let t=0;t<256;++t)Aa.push((t+256).toString(16).slice(1));o(z2e,"unsafeStringify")});function V$(){if(!G$){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");G$=crypto.getRandomValues.bind(crypto)}return G$(Ett)}var G$,Ett,V2e=N(()=>{"use strict";Ett=new Uint8Array(16);o(V$,"rng")});var Stt,U$,U2e=N(()=>{"use strict";Stt=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),U$={randomUUID:Stt}});function Ctt(t,e,r){if(U$.randomUUID&&!e&&!t)return U$.randomUUID();t=t||{};let n=t.random??t.rng?.()??V$();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){if(r=r||0,r<0||r+16>e.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let i=0;i<16;++i)e[r+i]=n[i];return e}return z2e(n)}var H$,H2e=N(()=>{"use strict";U2e();V2e();G2e();o(Ctt,"v4");H$=Ctt});var q2e=N(()=>{"use strict";H2e()});var ch,TC,W2e=N(()=>{"use strict";Xt();q2e();gr();pt();La();qn();ch={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},TC=class{constructor(){this.nodes=[];this.count=0;this.elements={};this.getLogger=this.getLogger.bind(this),this.nodeType=ch,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{o(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(e){for(let r=this.nodes.length-1;r>=0;r--)if(this.nodes[r].level0?this.nodes[0]:null}addNode(e,r,n,i){X.info("addNode",e,r,n,i);let a=!1;this.nodes.length===0?(this.baseLevel=e,e=0,a=!0):this.baseLevel!==void 0&&(e=e-this.baseLevel,a=!1);let s=ge(),l=s.mindmap?.padding??ur.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:l*=2;break}let u={id:this.count++,nodeId:sr(r,s),level:e,descr:sr(n,s),type:i,children:[],width:s.mindmap?.maxNodeWidth??ur.mindmap.maxNodeWidth,padding:l,isRoot:a},h=this.getParent(e);if(h)h.children.push(u),this.nodes.push(u);else if(a)this.nodes.push(u);else throw new Error(`There can be only one root. No parent could be found for ("${u.descr}")`)}getType(e,r){switch(X.debug("In get type",e,r),e){case"[":return this.nodeType.RECT;case"(":return r===")"?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(e,r){this.elements[e]=r}getElementById(e){return this.elements[e]}decorateNode(e){if(!e)return;let r=ge(),n=this.nodes[this.nodes.length-1];e.icon&&(n.icon=sr(e.icon,r)),e.class&&(n.class=sr(e.class,r))}type2Str(e){switch(e){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(e,r){if(e.level===0?e.section=void 0:e.section=r,e.children)for(let[n,i]of e.children.entries()){let a=e.level===0?n:r;this.assignSections(i,a)}}flattenNodes(e,r){let n=["mindmap-node"];e.isRoot===!0?n.push("section-root","section--1"):e.section!==void 0&&n.push(`section-${e.section}`),e.class&&n.push(e.class);let i=n.join(" "),a=o(l=>{switch(l){case ch.CIRCLE:return"mindmapCircle";case ch.RECT:return"rect";case ch.ROUNDED_RECT:return"rounded";case ch.CLOUD:return"cloud";case ch.BANG:return"bang";case ch.HEXAGON:return"hexagon";case ch.DEFAULT:return"defaultMindmapNode";case ch.NO_BORDER:default:return"rect"}},"getShapeFromType"),s={id:e.id.toString(),domId:"node_"+e.id.toString(),label:e.descr,isGroup:!1,shape:a(e.type),width:e.width,height:e.height??0,padding:e.padding,cssClasses:i,cssStyles:[],look:"default",icon:e.icon,x:e.x,y:e.y,level:e.level,nodeId:e.nodeId,type:e.type,section:e.section};if(r.push(s),e.children)for(let l of e.children)this.flattenNodes(l,r)}generateEdges(e,r){if(e.children)for(let n of e.children){let i="edge";n.section!==void 0&&(i+=` section-edge-${n.section}`);let a=e.level+1;i+=` edge-depth-${a}`;let s={id:`edge_${e.id}_${n.id}`,start:e.id.toString(),end:n.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:"default",classes:i,depth:e.level,section:n.section};r.push(s),this.generateEdges(n,r)}}getData(){let e=this.getMindmap(),r=ge(),i=eV().layout!==void 0,a=r;if(i||(a.layout="cose-bilkent"),!e)return{nodes:[],edges:[],config:a};X.debug("getData: mindmapRoot",e,r),this.assignSections(e);let s=[],l=[];this.flattenNodes(e,s),this.generateEdges(e,l),X.debug(`getData: processed ${s.length} nodes and ${l.length} edges`);let u=new Map;for(let h of s)u.set(h.id,{shape:h.shape,width:h.width,height:h.height,padding:h.padding});return{nodes:s,edges:l,config:a,rootNode:e,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(u),type:"mindmap",diagramId:"mindmap-"+H$()}}getLogger(){return X}}});var Att,Y2e,X2e=N(()=>{"use strict";pt();ep();Nf();Mf();La();Att=o(async(t,e,r,n)=>{X.debug(`Rendering mindmap diagram +`+t);let i=n.db,a=i.getData(),s=Vo(e,a.config.securityLevel);a.type=n.type,a.layoutAlgorithm=$c(a.config.layout,{fallback:"cose-bilkent"}),a.diagramId=e,i.getMindmap()&&(a.nodes.forEach(u=>{u.shape==="rounded"?(u.radius=15,u.taper=15,u.stroke="none",u.width=0,u.padding=15):u.shape==="circle"?u.padding=10:u.shape==="rect"&&(u.width=0,u.padding=10)}),await Qo(a,s),Ws(s,a.config.mindmap?.padding??ur.mindmap.padding,"mindmapDiagram",a.config.mindmap?.useMaxWidth??ur.mindmap.useMaxWidth))},"draw"),Y2e={draw:Att}});var _tt,Dtt,j2e,K2e=N(()=>{"use strict";eo();_tt=o(t=>{let e="";for(let r=0;r` + `}return e},"genSections"),Dtt=o(t=>` .edge { stroke-width: 3; } - ${sJe(t)} + ${_tt(t)} .section-root rect, .section-root path, .section-root circle, .section-root polygon { fill: ${t.git0}; } .section-root text { fill: ${t.gitBranchLabel0}; } + .section-root span { + color: ${t.gitBranchLabel0}; + } + .section-2 span { + color: ${t.gitBranchLabel0}; + } .icon-container { height:100%; display: flex; @@ -2239,17 +2418,17 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho dominant-baseline: middle; text-align: center; } -`,"getStyles"),Kge=oJe});var Zge={};hr(Zge,{diagram:()=>lJe});var lJe,Jge=N(()=>{"use strict";Spe();_pe();jge();Qge();lJe={db:Ape,renderer:Xge,parser:Epe,styles:Kge}});var DB,r1e,n1e=N(()=>{"use strict";DB=function(){var t=o(function(A,S,_,I){for(_=_||{},I=A.length;I--;_[A[I]]=S);return _},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,31],g=[6,7,11,24],y=[1,6,13,16,17,20,23],v=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],w=[1,38],C={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:o(function(S,_,I,D,k,L,R){var O=L.length-1;switch(k){case 6:case 7:return D;case 8:D.getLogger().trace("Stop NL ");break;case 9:D.getLogger().trace("Stop EOF ");break;case 11:D.getLogger().trace("Stop NL2 ");break;case 12:D.getLogger().trace("Stop EOF2 ");break;case 15:D.getLogger().info("Node: ",L[O-1].id),D.addNode(L[O-2].length,L[O-1].id,L[O-1].descr,L[O-1].type,L[O]);break;case 16:D.getLogger().info("Node: ",L[O].id),D.addNode(L[O-1].length,L[O].id,L[O].descr,L[O].type);break;case 17:D.getLogger().trace("Icon: ",L[O]),D.decorateNode({icon:L[O]});break;case 18:case 23:D.decorateNode({class:L[O]});break;case 19:D.getLogger().trace("SPACELIST");break;case 20:D.getLogger().trace("Node: ",L[O-1].id),D.addNode(0,L[O-1].id,L[O-1].descr,L[O-1].type,L[O]);break;case 21:D.getLogger().trace("Node: ",L[O].id),D.addNode(0,L[O].id,L[O].descr,L[O].type);break;case 22:D.decorateNode({icon:L[O]});break;case 27:D.getLogger().trace("node found ..",L[O-2]),this.$={id:L[O-1],descr:L[O-1],type:D.getType(L[O-2],L[O])};break;case 28:this.$={id:L[O],descr:L[O],type:0};break;case 29:D.getLogger().trace("node found ..",L[O-3]),this.$={id:L[O-3],descr:L[O-1],type:D.getType(L[O-2],L[O])};break;case 30:this.$=L[O-1]+L[O];break;case 31:this.$=L[O];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:r,9:22,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:h,7:f,10:23,11:d},t(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:l}),t(p,[2,19]),t(p,[2,21],{15:30,24:m}),t(p,[2,22]),t(p,[2,23]),t(g,[2,25]),t(g,[2,26]),t(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:f,10:34,11:d},{1:[2,7],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(y,[2,14],{7:v,11:x}),t(b,[2,8]),t(b,[2,9]),t(b,[2,10]),t(p,[2,16],{15:37,24:m}),t(p,[2,17]),t(p,[2,18]),t(p,[2,20],{24:w}),t(g,[2,31]),{21:[1,39]},{22:[1,40]},t(y,[2,13],{7:v,11:x}),t(b,[2,11]),t(b,[2,12]),t(p,[2,15],{24:w}),t(g,[2,30]),{22:[1,41]},t(g,[2,27]),t(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(S,_){if(_.recoverable)this.trace(S);else{var I=new Error(S);throw I.hash=_,I}},"parseError"),parse:o(function(S){var _=this,I=[0],D=[],k=[null],L=[],R=this.table,O="",M=0,B=0,F=0,P=2,z=1,$=L.slice.call(arguments,1),H=Object.create(this.lexer),Q={yy:{}};for(var j in this.yy)Object.prototype.hasOwnProperty.call(this.yy,j)&&(Q.yy[j]=this.yy[j]);H.setInput(S,Q.yy),Q.yy.lexer=H,Q.yy.parser=this,typeof H.yylloc>"u"&&(H.yylloc={});var ie=H.yylloc;L.push(ie);var ne=H.options&&H.options.ranges;typeof Q.yy.parseError=="function"?this.parseError=Q.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function le(ze){I.length=I.length-2*ze,k.length=k.length-ze,L.length=L.length-ze}o(le,"popStack");function he(){var ze;return ze=D.pop()||H.lex()||z,typeof ze!="number"&&(ze instanceof Array&&(D=ze,ze=D.pop()),ze=_.symbols_[ze]||ze),ze}o(he,"lex");for(var K,X,te,J,se,ue,Z={},Se,ce,ae,Oe;;){if(te=I[I.length-1],this.defaultActions[te]?J=this.defaultActions[te]:((K===null||typeof K>"u")&&(K=he()),J=R[te]&&R[te][K]),typeof J>"u"||!J.length||!J[0]){var ge="";Oe=[];for(Se in R[te])this.terminals_[Se]&&Se>P&&Oe.push("'"+this.terminals_[Se]+"'");H.showPosition?ge="Parse error on line "+(M+1)+`: -`+H.showPosition()+` -Expecting `+Oe.join(", ")+", got '"+(this.terminals_[K]||K)+"'":ge="Parse error on line "+(M+1)+": Unexpected "+(K==z?"end of input":"'"+(this.terminals_[K]||K)+"'"),this.parseError(ge,{text:H.match,token:this.terminals_[K]||K,line:H.yylineno,loc:ie,expected:Oe})}if(J[0]instanceof Array&&J.length>1)throw new Error("Parse Error: multiple actions possible at state: "+te+", token: "+K);switch(J[0]){case 1:I.push(K),k.push(H.yytext),L.push(H.yylloc),I.push(J[1]),K=null,X?(K=X,X=null):(B=H.yyleng,O=H.yytext,M=H.yylineno,ie=H.yylloc,F>0&&F--);break;case 2:if(ce=this.productions_[J[1]][1],Z.$=k[k.length-ce],Z._$={first_line:L[L.length-(ce||1)].first_line,last_line:L[L.length-1].last_line,first_column:L[L.length-(ce||1)].first_column,last_column:L[L.length-1].last_column},ne&&(Z._$.range=[L[L.length-(ce||1)].range[0],L[L.length-1].range[1]]),ue=this.performAction.apply(Z,[O,B,M,Q.yy,J[1],k,L].concat($)),typeof ue<"u")return ue;ce&&(I=I.slice(0,-1*ce*2),k=k.slice(0,-1*ce),L=L.slice(0,-1*ce)),I.push(this.productions_[J[1]][0]),k.push(Z.$),L.push(Z._$),ae=R[I[I.length-2]][I[I.length-1]],I.push(ae);break;case 3:return!0}}return!0},"parse")},T=function(){var A={EOF:1,parseError:o(function(_,I){if(this.yy.parser)this.yy.parser.parseError(_,I);else throw new Error(_)},"parseError"),setInput:o(function(S,_){return this.yy=_||this.yy||{},this._input=S,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var S=this._input[0];this.yytext+=S,this.yyleng++,this.offset++,this.match+=S,this.matched+=S;var _=S.match(/(?:\r\n?|\n).*/g);return _?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),S},"input"),unput:o(function(S){var _=S.length,I=S.split(/(?:\r\n?|\n)/g);this._input=S+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-_),this.offset-=_;var D=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),I.length-1&&(this.yylineno-=I.length-1);var k=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:I?(I.length===D.length?this.yylloc.first_column:0)+D[D.length-I.length].length-I[0].length:this.yylloc.first_column-_},this.options.ranges&&(this.yylloc.range=[k[0],k[0]+this.yyleng-_]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(S){this.unput(this.match.slice(S))},"less"),pastInput:o(function(){var S=this.matched.substr(0,this.matched.length-this.match.length);return(S.length>20?"...":"")+S.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var S=this.match;return S.length<20&&(S+=this._input.substr(0,20-S.length)),(S.substr(0,20)+(S.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var S=this.pastInput(),_=new Array(S.length+1).join("-");return S+this.upcomingInput()+` -`+_+"^"},"showPosition"),test_match:o(function(S,_){var I,D,k;if(this.options.backtrack_lexer&&(k={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(k.yylloc.range=this.yylloc.range.slice(0))),D=S[0].match(/(?:\r\n?|\n).*/g),D&&(this.yylineno+=D.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:D?D[D.length-1].length-D[D.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+S[0].length},this.yytext+=S[0],this.match+=S[0],this.matches=S,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(S[0].length),this.matched+=S[0],I=this.performAction.call(this,this.yy,this,_,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),I)return I;if(this._backtrack){for(var L in k)this[L]=k[L];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var S,_,I,D;this._more||(this.yytext="",this.match="");for(var k=this._currentRules(),L=0;L_[0].length)){if(_=I,D=L,this.options.backtrack_lexer){if(S=this.test_match(I,k[L]),S!==!1)return S;if(this._backtrack){_=!1;continue}else return!1}else if(!this.options.flex)break}return _?(S=this.test_match(_,k[D]),S!==!1?S:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var _=this.next();return _||this.lex()},"lex"),begin:o(function(_){this.conditionStack.push(_)},"begin"),popState:o(function(){var _=this.conditionStack.length-1;return _>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(_){return _=this.conditionStack.length-1-Math.abs(_||0),_>=0?this.conditionStack[_]:"INITIAL"},"topState"),pushState:o(function(_){this.begin(_)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(_,I,D,k){var L=k;switch(D){case 0:return this.pushState("shapeData"),I.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let R=/\n\s*/g;return I.yytext=I.yytext.replace(R,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return _.getLogger().trace("Found comment",I.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:_.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return _.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:_.getLogger().trace("end icon"),this.popState();break;case 16:return _.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return _.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return _.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return _.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:_.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return _.getLogger().trace("description:",I.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),_.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),_.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),_.getLogger().trace("node end ...",I.yytext),"NODE_DEND";break;case 36:return this.popState(),_.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),_.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),_.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),_.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),_.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return _.getLogger().trace("Long description:",I.yytext),21;break;case 42:return _.getLogger().trace("Long description:",I.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return A}();C.lexer=T;function E(){this.yy={}}return o(E,"Parser"),E.prototype=C,C.Parser=E,new E}();DB.parser=DB;r1e=DB});var nl,RB,LB,NB,fJe,dJe,i1e,pJe,mJe,Yi,gJe,yJe,vJe,xJe,bJe,wJe,TJe,a1e,s1e=N(()=>{"use strict";zt();gr();vt();Ya();Ew();nl=[],RB=[],LB=0,NB={},fJe=o(()=>{nl=[],RB=[],LB=0,NB={}},"clear"),dJe=o(t=>{if(nl.length===0)return null;let e=nl[0].level,r=null;for(let n=nl.length-1;n>=0;n--)if(nl[n].level===e&&!r&&(r=nl[n]),nl[n].levell.parentId===i.id);for(let l of s){let u={id:l.id,parentId:i.id,label:Tr(l.label??"",n),isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};e.push(u)}}return{nodes:e,edges:t,other:{},config:me()}},"getData"),mJe=o((t,e,r,n,i)=>{let a=me(),s=a.mindmap?.padding??or.mindmap.padding;switch(n){case Yi.ROUNDED_RECT:case Yi.RECT:case Yi.HEXAGON:s*=2}let l={id:Tr(e,a)||"kbn"+LB++,level:t,label:Tr(r,a),width:a.mindmap?.maxNodeWidth??or.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(i!==void 0){let h;i.includes(` +`,"getStyles"),j2e=Dtt});var Q2e={};dr(Q2e,{diagram:()=>Ltt});var Ltt,Z2e=N(()=>{"use strict";$2e();W2e();X2e();K2e();Ltt={get db(){return new TC},renderer:Y2e,parser:F2e,styles:j2e}});var q$,txe,rxe=N(()=>{"use strict";q$=(function(){var t=o(function(A,C,R,I){for(R=R||{},I=A.length;I--;R[A[I]]=C);return R},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,31],g=[6,7,11,24],y=[1,6,13,16,17,20,23],v=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],T=[1,38],S={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:o(function(C,R,I,L,E,D,_){var O=D.length-1;switch(E){case 6:case 7:return L;case 8:L.getLogger().trace("Stop NL ");break;case 9:L.getLogger().trace("Stop EOF ");break;case 11:L.getLogger().trace("Stop NL2 ");break;case 12:L.getLogger().trace("Stop EOF2 ");break;case 15:L.getLogger().info("Node: ",D[O-1].id),L.addNode(D[O-2].length,D[O-1].id,D[O-1].descr,D[O-1].type,D[O]);break;case 16:L.getLogger().info("Node: ",D[O].id),L.addNode(D[O-1].length,D[O].id,D[O].descr,D[O].type);break;case 17:L.getLogger().trace("Icon: ",D[O]),L.decorateNode({icon:D[O]});break;case 18:case 23:L.decorateNode({class:D[O]});break;case 19:L.getLogger().trace("SPACELIST");break;case 20:L.getLogger().trace("Node: ",D[O-1].id),L.addNode(0,D[O-1].id,D[O-1].descr,D[O-1].type,D[O]);break;case 21:L.getLogger().trace("Node: ",D[O].id),L.addNode(0,D[O].id,D[O].descr,D[O].type);break;case 22:L.decorateNode({icon:D[O]});break;case 27:L.getLogger().trace("node found ..",D[O-2]),this.$={id:D[O-1],descr:D[O-1],type:L.getType(D[O-2],D[O])};break;case 28:this.$={id:D[O],descr:D[O],type:0};break;case 29:L.getLogger().trace("node found ..",D[O-3]),this.$={id:D[O-3],descr:D[O-1],type:L.getType(D[O-2],D[O])};break;case 30:this.$=D[O-1]+D[O];break;case 31:this.$=D[O];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:r,9:22,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:h,7:f,10:23,11:d},t(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:l}),t(p,[2,19]),t(p,[2,21],{15:30,24:m}),t(p,[2,22]),t(p,[2,23]),t(g,[2,25]),t(g,[2,26]),t(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:f,10:34,11:d},{1:[2,7],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(y,[2,14],{7:v,11:x}),t(b,[2,8]),t(b,[2,9]),t(b,[2,10]),t(p,[2,16],{15:37,24:m}),t(p,[2,17]),t(p,[2,18]),t(p,[2,20],{24:T}),t(g,[2,31]),{21:[1,39]},{22:[1,40]},t(y,[2,13],{7:v,11:x}),t(b,[2,11]),t(b,[2,12]),t(p,[2,15],{24:T}),t(g,[2,30]),{22:[1,41]},t(g,[2,27]),t(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(C,R){if(R.recoverable)this.trace(C);else{var I=new Error(C);throw I.hash=R,I}},"parseError"),parse:o(function(C){var R=this,I=[0],L=[],E=[null],D=[],_=this.table,O="",M=0,P=0,B=0,F=2,G=1,$=D.slice.call(arguments,1),U=Object.create(this.lexer),j={yy:{}};for(var te in this.yy)Object.prototype.hasOwnProperty.call(this.yy,te)&&(j.yy[te]=this.yy[te]);U.setInput(C,j.yy),j.yy.lexer=U,j.yy.parser=this,typeof U.yylloc>"u"&&(U.yylloc={});var Y=U.yylloc;D.push(Y);var oe=U.options&&U.options.ranges;typeof j.yy.parseError=="function"?this.parseError=j.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function J(Be){I.length=I.length-2*Be,E.length=E.length-Be,D.length=D.length-Be}o(J,"popStack");function ue(){var Be;return Be=L.pop()||U.lex()||G,typeof Be!="number"&&(Be instanceof Array&&(L=Be,Be=L.pop()),Be=R.symbols_[Be]||Be),Be}o(ue,"lex");for(var re,ee,Z,K,ae,Q,de={},ne,Te,q,Ve;;){if(Z=I[I.length-1],this.defaultActions[Z]?K=this.defaultActions[Z]:((re===null||typeof re>"u")&&(re=ue()),K=_[Z]&&_[Z][re]),typeof K>"u"||!K.length||!K[0]){var pe="";Ve=[];for(ne in _[Z])this.terminals_[ne]&&ne>F&&Ve.push("'"+this.terminals_[ne]+"'");U.showPosition?pe="Parse error on line "+(M+1)+`: +`+U.showPosition()+` +Expecting `+Ve.join(", ")+", got '"+(this.terminals_[re]||re)+"'":pe="Parse error on line "+(M+1)+": Unexpected "+(re==G?"end of input":"'"+(this.terminals_[re]||re)+"'"),this.parseError(pe,{text:U.match,token:this.terminals_[re]||re,line:U.yylineno,loc:Y,expected:Ve})}if(K[0]instanceof Array&&K.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Z+", token: "+re);switch(K[0]){case 1:I.push(re),E.push(U.yytext),D.push(U.yylloc),I.push(K[1]),re=null,ee?(re=ee,ee=null):(P=U.yyleng,O=U.yytext,M=U.yylineno,Y=U.yylloc,B>0&&B--);break;case 2:if(Te=this.productions_[K[1]][1],de.$=E[E.length-Te],de._$={first_line:D[D.length-(Te||1)].first_line,last_line:D[D.length-1].last_line,first_column:D[D.length-(Te||1)].first_column,last_column:D[D.length-1].last_column},oe&&(de._$.range=[D[D.length-(Te||1)].range[0],D[D.length-1].range[1]]),Q=this.performAction.apply(de,[O,P,M,j.yy,K[1],E,D].concat($)),typeof Q<"u")return Q;Te&&(I=I.slice(0,-1*Te*2),E=E.slice(0,-1*Te),D=D.slice(0,-1*Te)),I.push(this.productions_[K[1]][0]),E.push(de.$),D.push(de._$),q=_[I[I.length-2]][I[I.length-1]],I.push(q);break;case 3:return!0}}return!0},"parse")},w=(function(){var A={EOF:1,parseError:o(function(R,I){if(this.yy.parser)this.yy.parser.parseError(R,I);else throw new Error(R)},"parseError"),setInput:o(function(C,R){return this.yy=R||this.yy||{},this._input=C,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var R=C.match(/(?:\r\n?|\n).*/g);return R?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),C},"input"),unput:o(function(C){var R=C.length,I=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-R),this.offset-=R;var L=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),I.length-1&&(this.yylineno-=I.length-1);var E=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:I?(I.length===L.length?this.yylloc.first_column:0)+L[L.length-I.length].length-I[0].length:this.yylloc.first_column-R},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-R]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(C){this.unput(this.match.slice(C))},"less"),pastInput:o(function(){var C=this.matched.substr(0,this.matched.length-this.match.length);return(C.length>20?"...":"")+C.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var C=this.match;return C.length<20&&(C+=this._input.substr(0,20-C.length)),(C.substr(0,20)+(C.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var C=this.pastInput(),R=new Array(C.length+1).join("-");return C+this.upcomingInput()+` +`+R+"^"},"showPosition"),test_match:o(function(C,R){var I,L,E;if(this.options.backtrack_lexer&&(E={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(E.yylloc.range=this.yylloc.range.slice(0))),L=C[0].match(/(?:\r\n?|\n).*/g),L&&(this.yylineno+=L.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:L?L[L.length-1].length-L[L.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+C[0].length},this.yytext+=C[0],this.match+=C[0],this.matches=C,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(C[0].length),this.matched+=C[0],I=this.performAction.call(this,this.yy,this,R,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),I)return I;if(this._backtrack){for(var D in E)this[D]=E[D];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,R,I,L;this._more||(this.yytext="",this.match="");for(var E=this._currentRules(),D=0;DR[0].length)){if(R=I,L=D,this.options.backtrack_lexer){if(C=this.test_match(I,E[D]),C!==!1)return C;if(this._backtrack){R=!1;continue}else return!1}else if(!this.options.flex)break}return R?(C=this.test_match(R,E[L]),C!==!1?C:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var R=this.next();return R||this.lex()},"lex"),begin:o(function(R){this.conditionStack.push(R)},"begin"),popState:o(function(){var R=this.conditionStack.length-1;return R>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(R){return R=this.conditionStack.length-1-Math.abs(R||0),R>=0?this.conditionStack[R]:"INITIAL"},"topState"),pushState:o(function(R){this.begin(R)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(R,I,L,E){var D=E;switch(L){case 0:return this.pushState("shapeData"),I.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let _=/\n\s*/g;return I.yytext=I.yytext.replace(_,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return R.getLogger().trace("Found comment",I.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:R.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return R.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:R.getLogger().trace("end icon"),this.popState();break;case 16:return R.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return R.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return R.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return R.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:R.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return R.getLogger().trace("description:",I.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),R.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),R.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),R.getLogger().trace("node end ...",I.yytext),"NODE_DEND";break;case 36:return this.popState(),R.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),R.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),R.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),R.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),R.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return R.getLogger().trace("Long description:",I.yytext),21;break;case 42:return R.getLogger().trace("Long description:",I.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return A})();S.lexer=w;function k(){this.yy={}}return o(k,"Parser"),k.prototype=S,S.Parser=k,new k})();q$.parser=q$;txe=q$});var ol,Y$,W$,X$,Itt,Ott,nxe,Ptt,Btt,Ui,Ftt,$tt,ztt,Gtt,Vtt,Utt,Htt,ixe,axe=N(()=>{"use strict";Xt();gr();pt();La();w2();ol=[],Y$=[],W$=0,X$={},Itt=o(()=>{ol=[],Y$=[],W$=0,X$={}},"clear"),Ott=o(t=>{if(ol.length===0)return null;let e=ol[0].level,r=null;for(let n=ol.length-1;n>=0;n--)if(ol[n].level===e&&!r&&(r=ol[n]),ol[n].levell.parentId===i.id);for(let l of s){let u={id:l.id,parentId:i.id,label:sr(l.label??"",n),isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};e.push(u)}}return{nodes:e,edges:t,other:{},config:ge()}},"getData"),Btt=o((t,e,r,n,i)=>{let a=ge(),s=a.mindmap?.padding??ur.mindmap.padding;switch(n){case Ui.ROUNDED_RECT:case Ui.RECT:case Ui.HEXAGON:s*=2}let l={id:sr(e,a)||"kbn"+W$++,level:t,label:sr(r,a),width:a.mindmap?.maxNodeWidth??ur.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(i!==void 0){let h;i.includes(` `)?h=i+` `:h=`{ `+i+` -}`;let f=cm(h,{schema:lm});if(f.shape&&(f.shape!==f.shape.toLowerCase()||f.shape.includes("_")))throw new Error(`No such shape: ${f.shape}. Shape names should be lowercase.`);f?.shape&&f.shape==="kanbanItem"&&(l.shape=f?.shape),f?.label&&(l.label=f?.label),f?.icon&&(l.icon=f?.icon.toString()),f?.assigned&&(l.assigned=f?.assigned.toString()),f?.ticket&&(l.ticket=f?.ticket.toString()),f?.priority&&(l.priority=f?.priority)}let u=dJe(t);u?l.parentId=u.id||"kbn"+LB++:RB.push(l),nl.push(l)},"addNode"),Yi={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},gJe=o((t,e)=>{switch(Y.debug("In get type",t,e),t){case"[":return Yi.RECT;case"(":return e===")"?Yi.ROUNDED_RECT:Yi.CLOUD;case"((":return Yi.CIRCLE;case")":return Yi.CLOUD;case"))":return Yi.BANG;case"{{":return Yi.HEXAGON;default:return Yi.DEFAULT}},"getType"),yJe=o((t,e)=>{NB[t]=e},"setElementForId"),vJe=o(t=>{if(!t)return;let e=me(),r=nl[nl.length-1];t.icon&&(r.icon=Tr(t.icon,e)),t.class&&(r.cssClasses=Tr(t.class,e))},"decorateNode"),xJe=o(t=>{switch(t){case Yi.DEFAULT:return"no-border";case Yi.RECT:return"rect";case Yi.ROUNDED_RECT:return"rounded-rect";case Yi.CIRCLE:return"circle";case Yi.CLOUD:return"cloud";case Yi.BANG:return"bang";case Yi.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),bJe=o(()=>Y,"getLogger"),wJe=o(t=>NB[t],"getElementById"),TJe={clear:fJe,addNode:mJe,getSections:i1e,getData:pJe,nodeType:Yi,getType:gJe,setElementForId:yJe,decorateNode:vJe,type2Str:xJe,getLogger:bJe,getElementById:wJe},a1e=TJe});var kJe,o1e,l1e=N(()=>{"use strict";zt();vt();Vc();Ei();Ya();Hw();eT();kJe=o(async(t,e,r,n)=>{Y.debug(`Rendering kanban diagram -`+t);let a=n.db.getData(),s=me();s.htmlLabels=!1;let l=sa(e),u=l.append("g");u.attr("class","sections");let h=l.append("g");h.attr("class","items");let f=a.nodes.filter(v=>v.isGroup),d=0,p=10,m=[],g=25;for(let v of f){let x=s?.kanban?.sectionWidth||200;d=d+1,v.x=x*d+(d-1)*p/2,v.width=x,v.y=0,v.height=x*3,v.rx=5,v.ry=5,v.cssClasses=v.cssClasses+" section-"+d;let b=await ym(u,v);g=Math.max(g,b?.labelBBox?.height),m.push(b)}let y=0;for(let v of f){let x=m[y];y=y+1;let b=s?.kanban?.sectionWidth||200,w=-b*3/2+g,C=w,T=a.nodes.filter(S=>S.parentId===v.id);for(let S of T){if(S.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");S.x=v.x,S.width=b-1.5*p;let I=(await vm(h,S,{config:s})).node().getBBox();S.y=C+I.height/2,await k2(S),C=S.y+I.height/2+p/2}let E=x.cluster.select("rect"),A=Math.max(C-w+3*p,50)+(g-25);E.attr("height",A)}Ao(void 0,l,s.mindmap?.padding??or.kanban.padding,s.mindmap?.useMaxWidth??or.kanban.useMaxWidth)},"draw"),o1e={draw:kJe}});var EJe,SJe,c1e,u1e=N(()=>{"use strict";Ys();EJe=o(t=>{let e="";for(let n=0;nt.darkMode?Ot(n,i):Dt(n,i),"adjuster");for(let n=0;n{switch(X.debug("In get type",t,e),t){case"[":return Ui.RECT;case"(":return e===")"?Ui.ROUNDED_RECT:Ui.CLOUD;case"((":return Ui.CIRCLE;case")":return Ui.CLOUD;case"))":return Ui.BANG;case"{{":return Ui.HEXAGON;default:return Ui.DEFAULT}},"getType"),$tt=o((t,e)=>{X$[t]=e},"setElementForId"),ztt=o(t=>{if(!t)return;let e=ge(),r=ol[ol.length-1];t.icon&&(r.icon=sr(t.icon,e)),t.class&&(r.cssClasses=sr(t.class,e))},"decorateNode"),Gtt=o(t=>{switch(t){case Ui.DEFAULT:return"no-border";case Ui.RECT:return"rect";case Ui.ROUNDED_RECT:return"rounded-rect";case Ui.CIRCLE:return"circle";case Ui.CLOUD:return"cloud";case Ui.BANG:return"bang";case Ui.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),Vtt=o(()=>X,"getLogger"),Utt=o(t=>X$[t],"getElementById"),Htt={clear:Itt,addNode:Btt,getSections:nxe,getData:Ptt,nodeType:Ui,getType:Ftt,setElementForId:$tt,decorateNode:ztt,type2Str:Gtt,getLogger:Vtt,getElementById:Utt},ixe=Htt});var qtt,sxe,oxe=N(()=>{"use strict";Xt();pt();tu();Ei();La();cw();bw();qtt=o(async(t,e,r,n)=>{X.debug(`Rendering kanban diagram +`+t);let a=n.db.getData(),s=ge();s.htmlLabels=!1;let l=aa(e),u=l.append("g");u.attr("class","sections");let h=l.append("g");h.attr("class","items");let f=a.nodes.filter(v=>v.isGroup),d=0,p=10,m=[],g=25;for(let v of f){let x=s?.kanban?.sectionWidth||200;d=d+1,v.x=x*d+(d-1)*p/2,v.width=x,v.y=0,v.height=x*3,v.rx=5,v.ry=5,v.cssClasses=v.cssClasses+" section-"+d;let b=await Sm(u,v);g=Math.max(g,b?.labelBBox?.height),m.push(b)}let y=0;for(let v of f){let x=m[y];y=y+1;let b=s?.kanban?.sectionWidth||200,T=-b*3/2+g,S=T,w=a.nodes.filter(C=>C.parentId===v.id);for(let C of w){if(C.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");C.x=v.x,C.width=b-1.5*p;let I=(await Cm(h,C,{config:s})).node().getBBox();C.y=S+I.height/2,await P2(C),S=C.y+I.height/2+p/2}let k=x.cluster.select("rect"),A=Math.max(S-T+3*p,50)+(g-25);k.attr("height",A)}ic(void 0,l,s.mindmap?.padding??ur.kanban.padding,s.mindmap?.useMaxWidth??ur.kanban.useMaxWidth)},"draw"),sxe={draw:qtt}});var Wtt,Ytt,lxe,cxe=N(()=>{"use strict";eo();yg();Wtt=o(t=>{let e="";for(let n=0;nt.darkMode?Pt(n,i):Rt(n,i),"adjuster");for(let n=0;n` + `}return e},"genSections"),Ytt=o(t=>` .edge { stroke-width: 3; } - ${EJe(t)} + ${Wtt(t)} .section-root rect, .section-root path, .section-root circle, .section-root polygon { fill: ${t.git0}; } @@ -2326,16 +2505,17 @@ Expecting `+Oe.join(", ")+", got '"+(this.terminals_[K]||K)+"'":ge="Parse error dominant-baseline: middle; text-align: center; } -`,"getStyles"),c1e=SJe});var h1e={};hr(h1e,{diagram:()=>CJe});var CJe,f1e=N(()=>{"use strict";n1e();s1e();l1e();u1e();CJe={db:a1e,renderer:o1e,parser:r1e,styles:c1e}});var MB,d4,m1e=N(()=>{"use strict";MB=function(){var t=o(function(l,u,h,f){for(h=h||{},f=l.length;f--;h[l[f]]=u);return h},"o"),e=[1,9],r=[1,10],n=[1,5,10,12],i={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:o(function(u,h,f,d,p,m,g){var y=m.length-1;switch(p){case 7:let v=d.findOrCreateNode(m[y-4].trim().replaceAll('""','"')),x=d.findOrCreateNode(m[y-2].trim().replaceAll('""','"')),b=parseFloat(m[y].trim());d.addLink(v,x,b);break;case 8:case 9:case 11:this.$=m[y];break;case 10:this.$=m[y-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:e,20:r},{1:[2,6],7:11,10:[1,12]},t(r,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(n,[2,8]),t(n,[2,9]),{19:[1,16]},t(n,[2,11]),{1:[2,1]},{1:[2,5]},t(r,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:e,20:r},{15:18,16:7,17:8,18:e,20:r},{18:[1,19]},t(r,[2,3]),{12:[1,20]},t(n,[2,10]),{15:21,16:7,17:8,18:e,20:r},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:o(function(u,h){if(h.recoverable)this.trace(u);else{var f=new Error(u);throw f.hash=h,f}},"parseError"),parse:o(function(u){var h=this,f=[0],d=[],p=[null],m=[],g=this.table,y="",v=0,x=0,b=0,w=2,C=1,T=m.slice.call(arguments,1),E=Object.create(this.lexer),A={yy:{}};for(var S in this.yy)Object.prototype.hasOwnProperty.call(this.yy,S)&&(A.yy[S]=this.yy[S]);E.setInput(u,A.yy),A.yy.lexer=E,A.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var _=E.yylloc;m.push(_);var I=E.options&&E.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function D(ie){f.length=f.length-2*ie,p.length=p.length-ie,m.length=m.length-ie}o(D,"popStack");function k(){var ie;return ie=d.pop()||E.lex()||C,typeof ie!="number"&&(ie instanceof Array&&(d=ie,ie=d.pop()),ie=h.symbols_[ie]||ie),ie}o(k,"lex");for(var L,R,O,M,B,F,P={},z,$,H,Q;;){if(O=f[f.length-1],this.defaultActions[O]?M=this.defaultActions[O]:((L===null||typeof L>"u")&&(L=k()),M=g[O]&&g[O][L]),typeof M>"u"||!M.length||!M[0]){var j="";Q=[];for(z in g[O])this.terminals_[z]&&z>w&&Q.push("'"+this.terminals_[z]+"'");E.showPosition?j="Parse error on line "+(v+1)+`: -`+E.showPosition()+` -Expecting `+Q.join(", ")+", got '"+(this.terminals_[L]||L)+"'":j="Parse error on line "+(v+1)+": Unexpected "+(L==C?"end of input":"'"+(this.terminals_[L]||L)+"'"),this.parseError(j,{text:E.match,token:this.terminals_[L]||L,line:E.yylineno,loc:_,expected:Q})}if(M[0]instanceof Array&&M.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+L);switch(M[0]){case 1:f.push(L),p.push(E.yytext),m.push(E.yylloc),f.push(M[1]),L=null,R?(L=R,R=null):(x=E.yyleng,y=E.yytext,v=E.yylineno,_=E.yylloc,b>0&&b--);break;case 2:if($=this.productions_[M[1]][1],P.$=p[p.length-$],P._$={first_line:m[m.length-($||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-($||1)].first_column,last_column:m[m.length-1].last_column},I&&(P._$.range=[m[m.length-($||1)].range[0],m[m.length-1].range[1]]),F=this.performAction.apply(P,[y,x,v,A.yy,M[1],p,m].concat(T)),typeof F<"u")return F;$&&(f=f.slice(0,-1*$*2),p=p.slice(0,-1*$),m=m.slice(0,-1*$)),f.push(this.productions_[M[1]][0]),p.push(P.$),m.push(P._$),H=g[f[f.length-2]][f[f.length-1]],f.push(H);break;case 3:return!0}}return!0},"parse")},a=function(){var l={EOF:1,parseError:o(function(h,f){if(this.yy.parser)this.yy.parser.parseError(h,f);else throw new Error(h)},"parseError"),setInput:o(function(u,h){return this.yy=h||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var h=u.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:o(function(u){var h=u.length,f=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),f.length-1&&(this.yylineno-=f.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:f?(f.length===d.length?this.yylloc.first_column:0)+d[d.length-f.length].length-f[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). + ${zc()} +`,"getStyles"),lxe=Ytt});var uxe={};dr(uxe,{diagram:()=>Xtt});var Xtt,hxe=N(()=>{"use strict";rxe();axe();oxe();cxe();Xtt={db:ixe,renderer:sxe,parser:txe,styles:lxe}});var j$,A4,pxe=N(()=>{"use strict";j$=(function(){var t=o(function(l,u,h,f){for(h=h||{},f=l.length;f--;h[l[f]]=u);return h},"o"),e=[1,9],r=[1,10],n=[1,5,10,12],i={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:o(function(u,h,f,d,p,m,g){var y=m.length-1;switch(p){case 7:let v=d.findOrCreateNode(m[y-4].trim().replaceAll('""','"')),x=d.findOrCreateNode(m[y-2].trim().replaceAll('""','"')),b=parseFloat(m[y].trim());d.addLink(v,x,b);break;case 8:case 9:case 11:this.$=m[y];break;case 10:this.$=m[y-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:e,20:r},{1:[2,6],7:11,10:[1,12]},t(r,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(n,[2,8]),t(n,[2,9]),{19:[1,16]},t(n,[2,11]),{1:[2,1]},{1:[2,5]},t(r,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:e,20:r},{15:18,16:7,17:8,18:e,20:r},{18:[1,19]},t(r,[2,3]),{12:[1,20]},t(n,[2,10]),{15:21,16:7,17:8,18:e,20:r},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:o(function(u,h){if(h.recoverable)this.trace(u);else{var f=new Error(u);throw f.hash=h,f}},"parseError"),parse:o(function(u){var h=this,f=[0],d=[],p=[null],m=[],g=this.table,y="",v=0,x=0,b=0,T=2,S=1,w=m.slice.call(arguments,1),k=Object.create(this.lexer),A={yy:{}};for(var C in this.yy)Object.prototype.hasOwnProperty.call(this.yy,C)&&(A.yy[C]=this.yy[C]);k.setInput(u,A.yy),A.yy.lexer=k,A.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var R=k.yylloc;m.push(R);var I=k.options&&k.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function L(Y){f.length=f.length-2*Y,p.length=p.length-Y,m.length=m.length-Y}o(L,"popStack");function E(){var Y;return Y=d.pop()||k.lex()||S,typeof Y!="number"&&(Y instanceof Array&&(d=Y,Y=d.pop()),Y=h.symbols_[Y]||Y),Y}o(E,"lex");for(var D,_,O,M,P,B,F={},G,$,U,j;;){if(O=f[f.length-1],this.defaultActions[O]?M=this.defaultActions[O]:((D===null||typeof D>"u")&&(D=E()),M=g[O]&&g[O][D]),typeof M>"u"||!M.length||!M[0]){var te="";j=[];for(G in g[O])this.terminals_[G]&&G>T&&j.push("'"+this.terminals_[G]+"'");k.showPosition?te="Parse error on line "+(v+1)+`: +`+k.showPosition()+` +Expecting `+j.join(", ")+", got '"+(this.terminals_[D]||D)+"'":te="Parse error on line "+(v+1)+": Unexpected "+(D==S?"end of input":"'"+(this.terminals_[D]||D)+"'"),this.parseError(te,{text:k.match,token:this.terminals_[D]||D,line:k.yylineno,loc:R,expected:j})}if(M[0]instanceof Array&&M.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+D);switch(M[0]){case 1:f.push(D),p.push(k.yytext),m.push(k.yylloc),f.push(M[1]),D=null,_?(D=_,_=null):(x=k.yyleng,y=k.yytext,v=k.yylineno,R=k.yylloc,b>0&&b--);break;case 2:if($=this.productions_[M[1]][1],F.$=p[p.length-$],F._$={first_line:m[m.length-($||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-($||1)].first_column,last_column:m[m.length-1].last_column},I&&(F._$.range=[m[m.length-($||1)].range[0],m[m.length-1].range[1]]),B=this.performAction.apply(F,[y,x,v,A.yy,M[1],p,m].concat(w)),typeof B<"u")return B;$&&(f=f.slice(0,-1*$*2),p=p.slice(0,-1*$),m=m.slice(0,-1*$)),f.push(this.productions_[M[1]][0]),p.push(F.$),m.push(F._$),U=g[f[f.length-2]][f[f.length-1]],f.push(U);break;case 3:return!0}}return!0},"parse")},a=(function(){var l={EOF:1,parseError:o(function(h,f){if(this.yy.parser)this.yy.parser.parseError(h,f);else throw new Error(h)},"parseError"),setInput:o(function(u,h){return this.yy=h||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var h=u.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:o(function(u){var h=u.length,f=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),f.length-1&&(this.yylineno-=f.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:f?(f.length===d.length?this.yylloc.first_column:0)+d[d.length-f.length].length-f[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(u){this.unput(this.match.slice(u))},"less"),pastInput:o(function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var u=this.pastInput(),h=new Array(u.length+1).join("-");return u+this.upcomingInput()+` `+h+"^"},"showPosition"),test_match:o(function(u,h){var f,d,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),d=u[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(u[0].length),this.matched+=u[0],f=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),f)return f;if(this._backtrack){for(var m in p)this[m]=p[m];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var u,h,f,d;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),m=0;mh[0].length)){if(h=f,d=m,this.options.backtrack_lexer){if(u=this.test_match(f,p[m]),u!==!1)return u;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(u=this.test_match(h,p[d]),u!==!1?u:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var h=this.next();return h||this.lex()},"lex"),begin:o(function(h){this.conditionStack.push(h)},"begin"),popState:o(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:o(function(h){this.begin(h)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(h,f,d,p){var m=p;switch(d){case 0:return this.pushState("csv"),4;break;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;break;case 5:return 20;case 6:return this.popState("escaped_text"),18;break;case 7:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return l}();i.lexer=a;function s(){this.yy={}}return o(s,"Parser"),s.prototype=i,i.Parser=s,new s}();MB.parser=MB;d4=MB});var XS,jS,YS,LJe,IB,RJe,OB,NJe,MJe,IJe,OJe,g1e,y1e=N(()=>{"use strict";zt();gr();mi();XS=[],jS=[],YS=new Map,LJe=o(()=>{XS=[],jS=[],YS=new Map,Ar()},"clear"),IB=class{constructor(e,r,n=0){this.source=e;this.target=r;this.value=n}static{o(this,"SankeyLink")}},RJe=o((t,e,r)=>{XS.push(new IB(t,e,r))},"addLink"),OB=class{constructor(e){this.ID=e}static{o(this,"SankeyNode")}},NJe=o(t=>{t=Ze.sanitizeText(t,me());let e=YS.get(t);return e===void 0&&(e=new OB(t),YS.set(t,e),jS.push(e)),e},"findOrCreateNode"),MJe=o(()=>jS,"getNodes"),IJe=o(()=>XS,"getLinks"),OJe=o(()=>({nodes:jS.map(t=>({id:t.ID})),links:XS.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),g1e={nodesMap:YS,getConfig:o(()=>me().sankey,"getConfig"),getNodes:MJe,getLinks:IJe,getGraph:OJe,addLink:RJe,findOrCreateNode:NJe,getAccTitle:Rr,setAccTitle:Lr,getAccDescription:Mr,setAccDescription:Nr,getDiagramTitle:Ir,setDiagramTitle:$r,clear:LJe}});function p4(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var v1e=N(()=>{"use strict";o(p4,"max")});function cy(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var x1e=N(()=>{"use strict";o(cy,"min")});function uy(t,e){let r=0;if(e===void 0)for(let n of t)(n=+n)&&(r+=n);else{let n=-1;for(let i of t)(i=+e(i,++n,t))&&(r+=i)}return r}var b1e=N(()=>{"use strict";o(uy,"sum")});var PB=N(()=>{"use strict";v1e();x1e();b1e()});function PJe(t){return t.target.depth}function BB(t){return t.depth}function FB(t,e){return e-1-t.height}function m4(t,e){return t.sourceLinks.length?t.depth:e-1}function $B(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?cy(t.sourceLinks,PJe)-1:0}var zB=N(()=>{"use strict";PB();o(PJe,"targetDepth");o(BB,"left");o(FB,"right");o(m4,"justify");o($B,"center")});function hy(t){return function(){return t}}var w1e=N(()=>{"use strict";o(hy,"constant")});function T1e(t,e){return KS(t.source,e.source)||t.index-e.index}function k1e(t,e){return KS(t.target,e.target)||t.index-e.index}function KS(t,e){return t.y0-e.y0}function GB(t){return t.value}function BJe(t){return t.index}function FJe(t){return t.nodes}function $Je(t){return t.links}function E1e(t,e){let r=t.get(e);if(!r)throw new Error("missing: "+e);return r}function S1e({nodes:t}){for(let e of t){let r=e.y0,n=r;for(let i of e.sourceLinks)i.y0=r+i.width/2,r+=i.width;for(let i of e.targetLinks)i.y1=n+i.width/2,n+=i.width}}function QS(){let t=0,e=0,r=1,n=1,i=24,a=8,s,l=BJe,u=m4,h,f,d=FJe,p=$Je,m=6;function g(){let O={nodes:d.apply(null,arguments),links:p.apply(null,arguments)};return y(O),v(O),x(O),b(O),T(O),S1e(O),O}o(g,"sankey"),g.update=function(O){return S1e(O),O},g.nodeId=function(O){return arguments.length?(l=typeof O=="function"?O:hy(O),g):l},g.nodeAlign=function(O){return arguments.length?(u=typeof O=="function"?O:hy(O),g):u},g.nodeSort=function(O){return arguments.length?(h=O,g):h},g.nodeWidth=function(O){return arguments.length?(i=+O,g):i},g.nodePadding=function(O){return arguments.length?(a=s=+O,g):a},g.nodes=function(O){return arguments.length?(d=typeof O=="function"?O:hy(O),g):d},g.links=function(O){return arguments.length?(p=typeof O=="function"?O:hy(O),g):p},g.linkSort=function(O){return arguments.length?(f=O,g):f},g.size=function(O){return arguments.length?(t=e=0,r=+O[0],n=+O[1],g):[r-t,n-e]},g.extent=function(O){return arguments.length?(t=+O[0][0],r=+O[1][0],e=+O[0][1],n=+O[1][1],g):[[t,e],[r,n]]},g.iterations=function(O){return arguments.length?(m=+O,g):m};function y({nodes:O,links:M}){for(let[F,P]of O.entries())P.index=F,P.sourceLinks=[],P.targetLinks=[];let B=new Map(O.map((F,P)=>[l(F,P,O),F]));for(let[F,P]of M.entries()){P.index=F;let{source:z,target:$}=P;typeof z!="object"&&(z=P.source=E1e(B,z)),typeof $!="object"&&($=P.target=E1e(B,$)),z.sourceLinks.push(P),$.targetLinks.push(P)}if(f!=null)for(let{sourceLinks:F,targetLinks:P}of O)F.sort(f),P.sort(f)}o(y,"computeNodeLinks");function v({nodes:O}){for(let M of O)M.value=M.fixedValue===void 0?Math.max(uy(M.sourceLinks,GB),uy(M.targetLinks,GB)):M.fixedValue}o(v,"computeNodeValues");function x({nodes:O}){let M=O.length,B=new Set(O),F=new Set,P=0;for(;B.size;){for(let z of B){z.depth=P;for(let{target:$}of z.sourceLinks)F.add($)}if(++P>M)throw new Error("circular link");B=F,F=new Set}}o(x,"computeNodeDepths");function b({nodes:O}){let M=O.length,B=new Set(O),F=new Set,P=0;for(;B.size;){for(let z of B){z.height=P;for(let{source:$}of z.targetLinks)F.add($)}if(++P>M)throw new Error("circular link");B=F,F=new Set}}o(b,"computeNodeHeights");function w({nodes:O}){let M=p4(O,P=>P.depth)+1,B=(r-t-i)/(M-1),F=new Array(M);for(let P of O){let z=Math.max(0,Math.min(M-1,Math.floor(u.call(null,P,M))));P.layer=z,P.x0=t+z*B,P.x1=P.x0+i,F[z]?F[z].push(P):F[z]=[P]}if(h)for(let P of F)P.sort(h);return F}o(w,"computeNodeLayers");function C(O){let M=cy(O,B=>(n-e-(B.length-1)*s)/uy(B,GB));for(let B of O){let F=e;for(let P of B){P.y0=F,P.y1=F+P.value*M,F=P.y1+s;for(let z of P.sourceLinks)z.width=z.value*M}F=(n-F+s)/(B.length+1);for(let P=0;PB.length)-1)),C(M);for(let B=0;B0))continue;let j=(H/Q-$.y0)*M;$.y0+=j,$.y1+=j,D($)}h===void 0&&z.sort(KS),S(z,B)}}o(E,"relaxLeftToRight");function A(O,M,B){for(let F=O.length,P=F-2;P>=0;--P){let z=O[P];for(let $ of z){let H=0,Q=0;for(let{target:ie,value:ne}of $.sourceLinks){let le=ne*(ie.layer-$.layer);H+=R($,ie)*le,Q+=le}if(!(Q>0))continue;let j=(H/Q-$.y0)*M;$.y0+=j,$.y1+=j,D($)}h===void 0&&z.sort(KS),S(z,B)}}o(A,"relaxRightToLeft");function S(O,M){let B=O.length>>1,F=O[B];I(O,F.y0-s,B-1,M),_(O,F.y1+s,B+1,M),I(O,n,O.length-1,M),_(O,e,0,M)}o(S,"resolveCollisions");function _(O,M,B,F){for(;B1e-6&&(P.y0+=z,P.y1+=z),M=P.y1+s}}o(_,"resolveCollisionsTopToBottom");function I(O,M,B,F){for(;B>=0;--B){let P=O[B],z=(P.y1-M)*F;z>1e-6&&(P.y0-=z,P.y1-=z),M=P.y0-s}}o(I,"resolveCollisionsBottomToTop");function D({sourceLinks:O,targetLinks:M}){if(f===void 0){for(let{source:{sourceLinks:B}}of M)B.sort(k1e);for(let{target:{targetLinks:B}}of O)B.sort(T1e)}}o(D,"reorderNodeLinks");function k(O){if(f===void 0)for(let{sourceLinks:M,targetLinks:B}of O)M.sort(k1e),B.sort(T1e)}o(k,"reorderLinks");function L(O,M){let B=O.y0-(O.sourceLinks.length-1)*s/2;for(let{target:F,width:P}of O.sourceLinks){if(F===M)break;B+=P+s}for(let{source:F,width:P}of M.targetLinks){if(F===O)break;B-=P}return B}o(L,"targetTop");function R(O,M){let B=M.y0-(M.targetLinks.length-1)*s/2;for(let{source:F,width:P}of M.targetLinks){if(F===O)break;B+=P+s}for(let{target:F,width:P}of O.sourceLinks){if(F===M)break;B-=P}return B}return o(R,"sourceTop"),g}var C1e=N(()=>{"use strict";PB();zB();w1e();o(T1e,"ascendingSourceBreadth");o(k1e,"ascendingTargetBreadth");o(KS,"ascendingBreadth");o(GB,"value");o(BJe,"defaultId");o(FJe,"defaultNodes");o($Je,"defaultLinks");o(E1e,"find");o(S1e,"computeLinkBreadths");o(QS,"Sankey")});function HB(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function A1e(){return new HB}var VB,UB,Xp,zJe,WB,_1e=N(()=>{"use strict";VB=Math.PI,UB=2*VB,Xp=1e-6,zJe=UB-Xp;o(HB,"Path");o(A1e,"path");HB.prototype=A1e.prototype={constructor:HB,moveTo:o(function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},"moveTo"),closePath:o(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:o(function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},"lineTo"),quadraticCurveTo:o(function(t,e,r,n){this._+="Q"+ +t+","+ +e+","+(this._x1=+r)+","+(this._y1=+n)},"quadraticCurveTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._+="C"+ +t+","+ +e+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:o(function(t,e,r,n,i){t=+t,e=+e,r=+r,n=+n,i=+i;var a=this._x1,s=this._y1,l=r-t,u=n-e,h=a-t,f=s-e,d=h*h+f*f;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(d>Xp)if(!(Math.abs(f*l-u*h)>Xp)||!i)this._+="L"+(this._x1=t)+","+(this._y1=e);else{var p=r-a,m=n-s,g=l*l+u*u,y=p*p+m*m,v=Math.sqrt(g),x=Math.sqrt(d),b=i*Math.tan((VB-Math.acos((g+d-y)/(2*v*x)))/2),w=b/x,C=b/v;Math.abs(w-1)>Xp&&(this._+="L"+(t+w*h)+","+(e+w*f)),this._+="A"+i+","+i+",0,0,"+ +(f*p>h*m)+","+(this._x1=t+C*l)+","+(this._y1=e+C*u)}},"arcTo"),arc:o(function(t,e,r,n,i,a){t=+t,e=+e,r=+r,a=!!a;var s=r*Math.cos(n),l=r*Math.sin(n),u=t+s,h=e+l,f=1^a,d=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+u+","+h:(Math.abs(this._x1-u)>Xp||Math.abs(this._y1-h)>Xp)&&(this._+="L"+u+","+h),r&&(d<0&&(d=d%UB+UB),d>zJe?this._+="A"+r+","+r+",0,1,"+f+","+(t-s)+","+(e-l)+"A"+r+","+r+",0,1,"+f+","+(this._x1=u)+","+(this._y1=h):d>Xp&&(this._+="A"+r+","+r+",0,"+ +(d>=VB)+","+f+","+(this._x1=t+r*Math.cos(i))+","+(this._y1=e+r*Math.sin(i))))},"arc"),rect:o(function(t,e,r,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},"rect"),toString:o(function(){return this._},"toString")};WB=A1e});var D1e=N(()=>{"use strict";_1e()});function ZS(t){return o(function(){return t},"constant")}var L1e=N(()=>{"use strict";o(ZS,"default")});function R1e(t){return t[0]}function N1e(t){return t[1]}var M1e=N(()=>{"use strict";o(R1e,"x");o(N1e,"y")});var I1e,O1e=N(()=>{"use strict";I1e=Array.prototype.slice});function GJe(t){return t.source}function VJe(t){return t.target}function UJe(t){var e=GJe,r=VJe,n=R1e,i=N1e,a=null;function s(){var l,u=I1e.call(arguments),h=e.apply(this,u),f=r.apply(this,u);if(a||(a=l=WB()),t(a,+n.apply(this,(u[0]=h,u)),+i.apply(this,u),+n.apply(this,(u[0]=f,u)),+i.apply(this,u)),l)return a=null,l+""||null}return o(s,"link"),s.source=function(l){return arguments.length?(e=l,s):e},s.target=function(l){return arguments.length?(r=l,s):r},s.x=function(l){return arguments.length?(n=typeof l=="function"?l:ZS(+l),s):n},s.y=function(l){return arguments.length?(i=typeof l=="function"?l:ZS(+l),s):i},s.context=function(l){return arguments.length?(a=l??null,s):a},s}function HJe(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function qB(){return UJe(HJe)}var P1e=N(()=>{"use strict";D1e();O1e();L1e();M1e();o(GJe,"linkSource");o(VJe,"linkTarget");o(UJe,"link");o(HJe,"curveHorizontal");o(qB,"linkHorizontal")});var B1e=N(()=>{"use strict";P1e()});function WJe(t){return[t.source.x1,t.y0]}function qJe(t){return[t.target.x0,t.y1]}function JS(){return qB().source(WJe).target(qJe)}var F1e=N(()=>{"use strict";B1e();o(WJe,"horizontalSource");o(qJe,"horizontalTarget");o(JS,"default")});var $1e=N(()=>{"use strict";C1e();zB();F1e()});var g4,z1e=N(()=>{"use strict";g4=class t{static{o(this,"Uid")}static{this.count=0}static next(e){return new t(e+ ++t.count)}constructor(e){this.id=e,this.href=`#${e}`}toString(){return"url("+this.href+")"}}});var YJe,XJe,G1e,V1e=N(()=>{"use strict";zt();dr();$1e();Ei();z1e();YJe={left:BB,right:FB,center:$B,justify:m4},XJe=o(function(t,e,r,n){let{securityLevel:i,sankey:a}=me(),s=A3.sankey,l;i==="sandbox"&&(l=Ge("#i"+e));let u=i==="sandbox"?Ge(l.nodes()[0].contentDocument.body):Ge("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):Ge(`[id="${e}"]`),f=a?.width??s.width,d=a?.height??s.width,p=a?.useMaxWidth??s.useMaxWidth,m=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,y=a?.suffix??s.suffix,v=a?.showValues??s.showValues,x=n.db.getGraph(),b=YJe[m];QS().nodeId(I=>I.id).nodeWidth(10).nodePadding(10+(v?15:0)).nodeAlign(b).extent([[0,0],[f,d]])(x);let T=gu(e9);h.append("g").attr("class","nodes").selectAll(".node").data(x.nodes).join("g").attr("class","node").attr("id",I=>(I.uid=g4.next("node-")).id).attr("transform",function(I){return"translate("+I.x0+","+I.y0+")"}).attr("x",I=>I.x0).attr("y",I=>I.y0).append("rect").attr("height",I=>I.y1-I.y0).attr("width",I=>I.x1-I.x0).attr("fill",I=>T(I.id));let E=o(({id:I,value:D})=>v?`${I} -${g}${Math.round(D*100)/100}${y}`:I,"getText");h.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(x.nodes).join("text").attr("x",I=>I.x0(I.y1+I.y0)/2).attr("dy",`${v?"0":"0.35"}em`).attr("text-anchor",I=>I.x0(D.uid=g4.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",D=>D.source.x1).attr("x2",D=>D.target.x0);I.append("stop").attr("offset","0%").attr("stop-color",D=>T(D.source.id)),I.append("stop").attr("offset","100%").attr("stop-color",D=>T(D.target.id))}let _;switch(S){case"gradient":_=o(I=>I.uid,"coloring");break;case"source":_=o(I=>T(I.source.id),"coloring");break;case"target":_=o(I=>T(I.target.id),"coloring");break;default:_=S}A.append("path").attr("d",JS()).attr("stroke",_).attr("stroke-width",I=>Math.max(1,I.width)),Ao(void 0,h,0,p)},"draw"),G1e={draw:XJe}});var U1e,H1e=N(()=>{"use strict";U1e=o(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` -`).trim(),"prepareTextForParsing")});var jJe,W1e,q1e=N(()=>{"use strict";jJe=o(t=>`.label { +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var h=this.next();return h||this.lex()},"lex"),begin:o(function(h){this.conditionStack.push(h)},"begin"),popState:o(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:o(function(h){this.begin(h)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(h,f,d,p){var m=p;switch(d){case 0:return this.pushState("csv"),4;break;case 1:return this.pushState("csv"),4;break;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;break;case 6:return 20;case 7:return this.popState("escaped_text"),18;break;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}};return l})();i.lexer=a;function s(){this.yy={}}return o(s,"Parser"),s.prototype=i,i.Parser=s,new s})();j$.parser=j$;A4=j$});var kC,EC,wC,Ztt,K$,Jtt,Q$,ert,trt,rrt,nrt,mxe,gxe=N(()=>{"use strict";Xt();gr();ci();kC=[],EC=[],wC=new Map,Ztt=o(()=>{kC=[],EC=[],wC=new Map,Sr()},"clear"),K$=class{constructor(e,r,n=0){this.source=e;this.target=r;this.value=n}static{o(this,"SankeyLink")}},Jtt=o((t,e,r)=>{kC.push(new K$(t,e,r))},"addLink"),Q$=class{constructor(e){this.ID=e}static{o(this,"SankeyNode")}},ert=o(t=>{t=tt.sanitizeText(t,ge());let e=wC.get(t);return e===void 0&&(e=new Q$(t),wC.set(t,e),EC.push(e)),e},"findOrCreateNode"),trt=o(()=>EC,"getNodes"),rrt=o(()=>kC,"getLinks"),nrt=o(()=>({nodes:EC.map(t=>({id:t.ID})),links:kC.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),mxe={nodesMap:wC,getConfig:o(()=>ge().sankey,"getConfig"),getNodes:trt,getLinks:rrt,getGraph:nrt,addLink:Jtt,findOrCreateNode:ert,getAccTitle:Mr,setAccTitle:Rr,getAccDescription:Or,setAccDescription:Ir,getDiagramTitle:Pr,setDiagramTitle:$r,clear:Ztt}});function _4(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var yxe=N(()=>{"use strict";o(_4,"max")});function dy(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var vxe=N(()=>{"use strict";o(dy,"min")});function py(t,e){let r=0;if(e===void 0)for(let n of t)(n=+n)&&(r+=n);else{let n=-1;for(let i of t)(i=+e(i,++n,t))&&(r+=i)}return r}var xxe=N(()=>{"use strict";o(py,"sum")});var Z$=N(()=>{"use strict";yxe();vxe();xxe()});function irt(t){return t.target.depth}function J$(t){return t.depth}function ez(t,e){return e-1-t.height}function D4(t,e){return t.sourceLinks.length?t.depth:e-1}function tz(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?dy(t.sourceLinks,irt)-1:0}var rz=N(()=>{"use strict";Z$();o(irt,"targetDepth");o(J$,"left");o(ez,"right");o(D4,"justify");o(tz,"center")});function my(t){return function(){return t}}var bxe=N(()=>{"use strict";o(my,"constant")});function Txe(t,e){return SC(t.source,e.source)||t.index-e.index}function wxe(t,e){return SC(t.target,e.target)||t.index-e.index}function SC(t,e){return t.y0-e.y0}function nz(t){return t.value}function art(t){return t.index}function srt(t){return t.nodes}function ort(t){return t.links}function kxe(t,e){let r=t.get(e);if(!r)throw new Error("missing: "+e);return r}function Exe({nodes:t}){for(let e of t){let r=e.y0,n=r;for(let i of e.sourceLinks)i.y0=r+i.width/2,r+=i.width;for(let i of e.targetLinks)i.y1=n+i.width/2,n+=i.width}}function CC(){let t=0,e=0,r=1,n=1,i=24,a=8,s,l=art,u=D4,h,f,d=srt,p=ort,m=6;function g(){let O={nodes:d.apply(null,arguments),links:p.apply(null,arguments)};return y(O),v(O),x(O),b(O),w(O),Exe(O),O}o(g,"sankey"),g.update=function(O){return Exe(O),O},g.nodeId=function(O){return arguments.length?(l=typeof O=="function"?O:my(O),g):l},g.nodeAlign=function(O){return arguments.length?(u=typeof O=="function"?O:my(O),g):u},g.nodeSort=function(O){return arguments.length?(h=O,g):h},g.nodeWidth=function(O){return arguments.length?(i=+O,g):i},g.nodePadding=function(O){return arguments.length?(a=s=+O,g):a},g.nodes=function(O){return arguments.length?(d=typeof O=="function"?O:my(O),g):d},g.links=function(O){return arguments.length?(p=typeof O=="function"?O:my(O),g):p},g.linkSort=function(O){return arguments.length?(f=O,g):f},g.size=function(O){return arguments.length?(t=e=0,r=+O[0],n=+O[1],g):[r-t,n-e]},g.extent=function(O){return arguments.length?(t=+O[0][0],r=+O[1][0],e=+O[0][1],n=+O[1][1],g):[[t,e],[r,n]]},g.iterations=function(O){return arguments.length?(m=+O,g):m};function y({nodes:O,links:M}){for(let[B,F]of O.entries())F.index=B,F.sourceLinks=[],F.targetLinks=[];let P=new Map(O.map((B,F)=>[l(B,F,O),B]));for(let[B,F]of M.entries()){F.index=B;let{source:G,target:$}=F;typeof G!="object"&&(G=F.source=kxe(P,G)),typeof $!="object"&&($=F.target=kxe(P,$)),G.sourceLinks.push(F),$.targetLinks.push(F)}if(f!=null)for(let{sourceLinks:B,targetLinks:F}of O)B.sort(f),F.sort(f)}o(y,"computeNodeLinks");function v({nodes:O}){for(let M of O)M.value=M.fixedValue===void 0?Math.max(py(M.sourceLinks,nz),py(M.targetLinks,nz)):M.fixedValue}o(v,"computeNodeValues");function x({nodes:O}){let M=O.length,P=new Set(O),B=new Set,F=0;for(;P.size;){for(let G of P){G.depth=F;for(let{target:$}of G.sourceLinks)B.add($)}if(++F>M)throw new Error("circular link");P=B,B=new Set}}o(x,"computeNodeDepths");function b({nodes:O}){let M=O.length,P=new Set(O),B=new Set,F=0;for(;P.size;){for(let G of P){G.height=F;for(let{source:$}of G.targetLinks)B.add($)}if(++F>M)throw new Error("circular link");P=B,B=new Set}}o(b,"computeNodeHeights");function T({nodes:O}){let M=_4(O,F=>F.depth)+1,P=(r-t-i)/(M-1),B=new Array(M);for(let F of O){let G=Math.max(0,Math.min(M-1,Math.floor(u.call(null,F,M))));F.layer=G,F.x0=t+G*P,F.x1=F.x0+i,B[G]?B[G].push(F):B[G]=[F]}if(h)for(let F of B)F.sort(h);return B}o(T,"computeNodeLayers");function S(O){let M=dy(O,P=>(n-e-(P.length-1)*s)/py(P,nz));for(let P of O){let B=e;for(let F of P){F.y0=B,F.y1=B+F.value*M,B=F.y1+s;for(let G of F.sourceLinks)G.width=G.value*M}B=(n-B+s)/(P.length+1);for(let F=0;FP.length)-1)),S(M);for(let P=0;P0))continue;let te=(U/j-$.y0)*M;$.y0+=te,$.y1+=te,L($)}h===void 0&&G.sort(SC),C(G,P)}}o(k,"relaxLeftToRight");function A(O,M,P){for(let B=O.length,F=B-2;F>=0;--F){let G=O[F];for(let $ of G){let U=0,j=0;for(let{target:Y,value:oe}of $.sourceLinks){let J=oe*(Y.layer-$.layer);U+=_($,Y)*J,j+=J}if(!(j>0))continue;let te=(U/j-$.y0)*M;$.y0+=te,$.y1+=te,L($)}h===void 0&&G.sort(SC),C(G,P)}}o(A,"relaxRightToLeft");function C(O,M){let P=O.length>>1,B=O[P];I(O,B.y0-s,P-1,M),R(O,B.y1+s,P+1,M),I(O,n,O.length-1,M),R(O,e,0,M)}o(C,"resolveCollisions");function R(O,M,P,B){for(;P1e-6&&(F.y0+=G,F.y1+=G),M=F.y1+s}}o(R,"resolveCollisionsTopToBottom");function I(O,M,P,B){for(;P>=0;--P){let F=O[P],G=(F.y1-M)*B;G>1e-6&&(F.y0-=G,F.y1-=G),M=F.y0-s}}o(I,"resolveCollisionsBottomToTop");function L({sourceLinks:O,targetLinks:M}){if(f===void 0){for(let{source:{sourceLinks:P}}of M)P.sort(wxe);for(let{target:{targetLinks:P}}of O)P.sort(Txe)}}o(L,"reorderNodeLinks");function E(O){if(f===void 0)for(let{sourceLinks:M,targetLinks:P}of O)M.sort(wxe),P.sort(Txe)}o(E,"reorderLinks");function D(O,M){let P=O.y0-(O.sourceLinks.length-1)*s/2;for(let{target:B,width:F}of O.sourceLinks){if(B===M)break;P+=F+s}for(let{source:B,width:F}of M.targetLinks){if(B===O)break;P-=F}return P}o(D,"targetTop");function _(O,M){let P=M.y0-(M.targetLinks.length-1)*s/2;for(let{source:B,width:F}of M.targetLinks){if(B===O)break;P+=F+s}for(let{target:B,width:F}of O.sourceLinks){if(B===M)break;P-=F}return P}return o(_,"sourceTop"),g}var Sxe=N(()=>{"use strict";Z$();rz();bxe();o(Txe,"ascendingSourceBreadth");o(wxe,"ascendingTargetBreadth");o(SC,"ascendingBreadth");o(nz,"value");o(art,"defaultId");o(srt,"defaultNodes");o(ort,"defaultLinks");o(kxe,"find");o(Exe,"computeLinkBreadths");o(CC,"Sankey")});function sz(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Cxe(){return new sz}var iz,az,f0,lrt,oz,Axe=N(()=>{"use strict";iz=Math.PI,az=2*iz,f0=1e-6,lrt=az-f0;o(sz,"Path");o(Cxe,"path");sz.prototype=Cxe.prototype={constructor:sz,moveTo:o(function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},"moveTo"),closePath:o(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:o(function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},"lineTo"),quadraticCurveTo:o(function(t,e,r,n){this._+="Q"+ +t+","+ +e+","+(this._x1=+r)+","+(this._y1=+n)},"quadraticCurveTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._+="C"+ +t+","+ +e+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:o(function(t,e,r,n,i){t=+t,e=+e,r=+r,n=+n,i=+i;var a=this._x1,s=this._y1,l=r-t,u=n-e,h=a-t,f=s-e,d=h*h+f*f;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(d>f0)if(!(Math.abs(f*l-u*h)>f0)||!i)this._+="L"+(this._x1=t)+","+(this._y1=e);else{var p=r-a,m=n-s,g=l*l+u*u,y=p*p+m*m,v=Math.sqrt(g),x=Math.sqrt(d),b=i*Math.tan((iz-Math.acos((g+d-y)/(2*v*x)))/2),T=b/x,S=b/v;Math.abs(T-1)>f0&&(this._+="L"+(t+T*h)+","+(e+T*f)),this._+="A"+i+","+i+",0,0,"+ +(f*p>h*m)+","+(this._x1=t+S*l)+","+(this._y1=e+S*u)}},"arcTo"),arc:o(function(t,e,r,n,i,a){t=+t,e=+e,r=+r,a=!!a;var s=r*Math.cos(n),l=r*Math.sin(n),u=t+s,h=e+l,f=1^a,d=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+u+","+h:(Math.abs(this._x1-u)>f0||Math.abs(this._y1-h)>f0)&&(this._+="L"+u+","+h),r&&(d<0&&(d=d%az+az),d>lrt?this._+="A"+r+","+r+",0,1,"+f+","+(t-s)+","+(e-l)+"A"+r+","+r+",0,1,"+f+","+(this._x1=u)+","+(this._y1=h):d>f0&&(this._+="A"+r+","+r+",0,"+ +(d>=iz)+","+f+","+(this._x1=t+r*Math.cos(i))+","+(this._y1=e+r*Math.sin(i))))},"arc"),rect:o(function(t,e,r,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},"rect"),toString:o(function(){return this._},"toString")};oz=Cxe});var _xe=N(()=>{"use strict";Axe()});function AC(t){return o(function(){return t},"constant")}var Dxe=N(()=>{"use strict";o(AC,"default")});function Lxe(t){return t[0]}function Rxe(t){return t[1]}var Nxe=N(()=>{"use strict";o(Lxe,"x");o(Rxe,"y")});var Mxe,Ixe=N(()=>{"use strict";Mxe=Array.prototype.slice});function crt(t){return t.source}function urt(t){return t.target}function hrt(t){var e=crt,r=urt,n=Lxe,i=Rxe,a=null;function s(){var l,u=Mxe.call(arguments),h=e.apply(this,u),f=r.apply(this,u);if(a||(a=l=oz()),t(a,+n.apply(this,(u[0]=h,u)),+i.apply(this,u),+n.apply(this,(u[0]=f,u)),+i.apply(this,u)),l)return a=null,l+""||null}return o(s,"link"),s.source=function(l){return arguments.length?(e=l,s):e},s.target=function(l){return arguments.length?(r=l,s):r},s.x=function(l){return arguments.length?(n=typeof l=="function"?l:AC(+l),s):n},s.y=function(l){return arguments.length?(i=typeof l=="function"?l:AC(+l),s):i},s.context=function(l){return arguments.length?(a=l??null,s):a},s}function frt(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function lz(){return hrt(frt)}var Oxe=N(()=>{"use strict";_xe();Ixe();Dxe();Nxe();o(crt,"linkSource");o(urt,"linkTarget");o(hrt,"link");o(frt,"curveHorizontal");o(lz,"linkHorizontal")});var Pxe=N(()=>{"use strict";Oxe()});function drt(t){return[t.source.x1,t.y0]}function prt(t){return[t.target.x0,t.y1]}function _C(){return lz().source(drt).target(prt)}var Bxe=N(()=>{"use strict";Pxe();o(drt,"horizontalSource");o(prt,"horizontalTarget");o(_C,"default")});var Fxe=N(()=>{"use strict";Sxe();rz();Bxe()});var L4,$xe=N(()=>{"use strict";L4=class t{static{o(this,"Uid")}static{this.count=0}static next(e){return new t(e+ ++t.count)}constructor(e){this.id=e,this.href=`#${e}`}toString(){return"url("+this.href+")"}}});var mrt,grt,zxe,Gxe=N(()=>{"use strict";Xt();yr();Fxe();Ei();$xe();mrt={left:J$,right:ez,center:tz,justify:D4},grt=o(function(t,e,r,n){let{securityLevel:i,sankey:a}=ge(),s=G3.sankey,l;i==="sandbox"&&(l=qe("#i"+e));let u=i==="sandbox"?qe(l.nodes()[0].contentDocument.body):qe("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):qe(`[id="${e}"]`),f=a?.width??s.width,d=a?.height??s.width,p=a?.useMaxWidth??s.useMaxWidth,m=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,y=a?.suffix??s.suffix,v=a?.showValues??s.showValues,x=n.db.getGraph(),b=mrt[m];CC().nodeId(I=>I.id).nodeWidth(10).nodePadding(10+(v?15:0)).nodeAlign(b).extent([[0,0],[f,d]])(x);let w=no(YD);h.append("g").attr("class","nodes").selectAll(".node").data(x.nodes).join("g").attr("class","node").attr("id",I=>(I.uid=L4.next("node-")).id).attr("transform",function(I){return"translate("+I.x0+","+I.y0+")"}).attr("x",I=>I.x0).attr("y",I=>I.y0).append("rect").attr("height",I=>I.y1-I.y0).attr("width",I=>I.x1-I.x0).attr("fill",I=>w(I.id));let k=o(({id:I,value:L})=>v?`${I} +${g}${Math.round(L*100)/100}${y}`:I,"getText");h.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(x.nodes).join("text").attr("x",I=>I.x0(I.y1+I.y0)/2).attr("dy",`${v?"0":"0.35"}em`).attr("text-anchor",I=>I.x0(L.uid=L4.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",L=>L.source.x1).attr("x2",L=>L.target.x0);I.append("stop").attr("offset","0%").attr("stop-color",L=>w(L.source.id)),I.append("stop").attr("offset","100%").attr("stop-color",L=>w(L.target.id))}let R;switch(C){case"gradient":R=o(I=>I.uid,"coloring");break;case"source":R=o(I=>w(I.source.id),"coloring");break;case"target":R=o(I=>w(I.target.id),"coloring");break;default:R=C}A.append("path").attr("d",_C()).attr("stroke",R).attr("stroke-width",I=>Math.max(1,I.width)),ic(void 0,h,0,p)},"draw"),zxe={draw:grt}});var Vxe,Uxe=N(()=>{"use strict";Vxe=o(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),"prepareTextForParsing")});var yrt,Hxe,qxe=N(()=>{"use strict";yrt=o(t=>`.label { font-family: ${t.fontFamily}; - }`,"getStyles"),W1e=jJe});var Y1e={};hr(Y1e,{diagram:()=>QJe});var KJe,QJe,X1e=N(()=>{"use strict";m1e();y1e();V1e();H1e();q1e();KJe=d4.parse.bind(d4);d4.parse=t=>KJe(U1e(t));QJe={styles:W1e,parser:d4,db:g1e,renderer:G1e}});var Q1e,YB,tet,ret,net,iet,aet,Bf,XB=N(()=>{"use strict";ji();Ya();ir();mi();Q1e={packet:[]},YB=structuredClone(Q1e),tet=or.packet,ret=o(()=>{let t=Fi({...tet,...cr().packet});return t.showBits&&(t.paddingY+=10),t},"getConfig"),net=o(()=>YB.packet,"getPacket"),iet=o(t=>{t.length>0&&YB.packet.push(t)},"pushWord"),aet=o(()=>{Ar(),YB=structuredClone(Q1e)},"clear"),Bf={pushWord:iet,getPacket:net,getConfig:ret,clear:aet,setAccTitle:Lr,getAccTitle:Rr,setDiagramTitle:$r,getDiagramTitle:Ir,getAccDescription:Mr,setAccDescription:Nr}});var set,oet,cet,Z1e,J1e=N(()=>{"use strict";kp();vt();T1();XB();set=1e4,oet=o(t=>{$c(t,Bf);let e=-1,r=[],n=1,{bitsPerRow:i}=Bf.getConfig();for(let{start:a,end:s,label:l}of t.blocks){if(s&&s{if(t.end===void 0&&(t.end=t.start),t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);return t.end+1<=e*r?[t,void 0]:[{start:t.start,end:e*r-1,label:t.label},{start:e*r,end:t.end,label:t.label}]},"getNextFittingBlock"),Z1e={parse:o(async t=>{let e=await uo("packet",t);Y.debug(e),oet(e)},"parse")}});var uet,het,eye,tye=N(()=>{"use strict";Vc();Ei();uet=o((t,e,r,n)=>{let i=n.db,a=i.getConfig(),{rowHeight:s,paddingY:l,bitWidth:u,bitsPerRow:h}=a,f=i.getPacket(),d=i.getDiagramTitle(),p=s+l,m=p*(f.length+1)-(d?0:s),g=u*h+2,y=sa(e);y.attr("viewbox",`0 0 ${g} ${m}`),vn(y,m,g,a.useMaxWidth);for(let[v,x]of f.entries())het(y,x,v,a);y.append("text").text(d).attr("x",g/2).attr("y",m-p/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),het=o((t,e,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:l,showBits:u})=>{let h=t.append("g"),f=r*(n+a)+a;for(let d of e){let p=d.start%l*s+1,m=(d.end-d.start+1)*s-i;if(h.append("rect").attr("x",p).attr("y",f).attr("width",m).attr("height",n).attr("class","packetBlock"),h.append("text").attr("x",p+m/2).attr("y",f+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(d.label),!u)continue;let g=d.end===d.start,y=f-2;h.append("text").attr("x",p+(g?m/2:0)).attr("y",y).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(d.start),g||h.append("text").attr("x",p+m).attr("y",y).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(d.end)}},"drawWord"),eye={draw:uet}});var fet,rye,nye=N(()=>{"use strict";ir();fet={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},rye=o(({packet:t}={})=>{let e=Fi(fet,t);return` + }`,"getStyles"),Hxe=yrt});var Wxe={};dr(Wxe,{diagram:()=>xrt});var vrt,xrt,Yxe=N(()=>{"use strict";pxe();gxe();Gxe();Uxe();qxe();vrt=A4.parse.bind(A4);A4.parse=t=>vrt(Vxe(t));xrt={styles:Hxe,parser:A4,db:mxe,renderer:zxe}});var krt,gy,cz=N(()=>{"use strict";qn();La();tr();ci();krt=ur.packet,gy=class{constructor(){this.packet=[];this.setAccTitle=Rr;this.getAccTitle=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getAccDescription=Or;this.setAccDescription=Ir}static{o(this,"PacketDB")}getConfig(){let e=Vn({...krt,...Qt().packet});return e.showBits&&(e.paddingY+=10),e}getPacket(){return this.packet}pushWord(e){e.length>0&&this.packet.push(e)}clear(){Sr(),this.packet=[]}}});var Ert,Srt,Crt,uz,Kxe=N(()=>{"use strict";Uf();pt();r0();cz();Ert=1e4,Srt=o((t,e)=>{nl(t,e);let r=-1,n=[],i=1,{bitsPerRow:a}=e.getConfig();for(let{start:s,end:l,bits:u,label:h}of t.blocks){if(s!==void 0&&l!==void 0&&l{if(t.start===void 0)throw new Error("start should have been set during first phase");if(t.end===void 0)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*r)return[t,void 0];let n=e*r-1,i=e*r;return[{start:t.start,end:n,label:t.label,bits:n-t.start},{start:i,end:t.end,label:t.label,bits:t.end-i}]},"getNextFittingBlock"),uz={parser:{yy:void 0},parse:o(async t=>{let e=await bs("packet",t),r=uz.parser?.yy;if(!(r instanceof gy))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");X.debug(e),Srt(e,r)},"parse")}});var Art,_rt,Qxe,Zxe=N(()=>{"use strict";tu();Ei();Art=o((t,e,r,n)=>{let i=n.db,a=i.getConfig(),{rowHeight:s,paddingY:l,bitWidth:u,bitsPerRow:h}=a,f=i.getPacket(),d=i.getDiagramTitle(),p=s+l,m=p*(f.length+1)-(d?0:s),g=u*h+2,y=aa(e);y.attr("viewbox",`0 0 ${g} ${m}`),mn(y,m,g,a.useMaxWidth);for(let[v,x]of f.entries())_rt(y,x,v,a);y.append("text").text(d).attr("x",g/2).attr("y",m-p/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),_rt=o((t,e,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:l,showBits:u})=>{let h=t.append("g"),f=r*(n+a)+a;for(let d of e){let p=d.start%l*s+1,m=(d.end-d.start+1)*s-i;if(h.append("rect").attr("x",p).attr("y",f).attr("width",m).attr("height",n).attr("class","packetBlock"),h.append("text").attr("x",p+m/2).attr("y",f+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(d.label),!u)continue;let g=d.end===d.start,y=f-2;h.append("text").attr("x",p+(g?m/2:0)).attr("y",y).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(d.start),g||h.append("text").attr("x",p+m).attr("y",y).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(d.end)}},"drawWord"),Qxe={draw:Art}});var Drt,Jxe,ebe=N(()=>{"use strict";tr();Drt={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},Jxe=o(({packet:t}={})=>{let e=Vn(Drt,t);return` .packetByte { font-size: ${e.byteFontSize}; } @@ -2358,7 +2538,7 @@ ${g}${Math.round(D*100)/100}${y}`:I,"getText");h.append("g").attr("class","node- stroke-width: ${e.blockStrokeWidth}; fill: ${e.blockFillColor}; } - `},"styles")});var iye={};hr(iye,{diagram:()=>det});var det,aye=N(()=>{"use strict";XB();J1e();tye();nye();det={parser:Z1e,db:Bf,renderer:eye,styles:rye}});var fy,lye,jp,get,yet,cye,vet,xet,bet,wet,Tet,ket,Eet,Kp,jB=N(()=>{"use strict";ji();Ya();ir();mi();fy={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},lye={axes:[],curves:[],options:fy},jp=structuredClone(lye),get=or.radar,yet=o(()=>Fi({...get,...cr().radar}),"getConfig"),cye=o(()=>jp.axes,"getAxes"),vet=o(()=>jp.curves,"getCurves"),xet=o(()=>jp.options,"getOptions"),bet=o(t=>{jp.axes=t.map(e=>({name:e.name,label:e.label??e.name}))},"setAxes"),wet=o(t=>{jp.curves=t.map(e=>({name:e.name,label:e.label??e.name,entries:Tet(e.entries)}))},"setCurves"),Tet=o(t=>{if(t[0].axis==null)return t.map(r=>r.value);let e=cye();if(e.length===0)throw new Error("Axes must be populated before curves for reference entries");return e.map(r=>{let n=t.find(i=>i.axis?.$refText===r.name);if(n===void 0)throw new Error("Missing entry for axis "+r.label);return n.value})},"computeCurveEntries"),ket=o(t=>{let e=t.reduce((r,n)=>(r[n.name]=n,r),{});jp.options={showLegend:e.showLegend?.value??fy.showLegend,ticks:e.ticks?.value??fy.ticks,max:e.max?.value??fy.max,min:e.min?.value??fy.min,graticule:e.graticule?.value??fy.graticule}},"setOptions"),Eet=o(()=>{Ar(),jp=structuredClone(lye)},"clear"),Kp={getAxes:cye,getCurves:vet,getOptions:xet,setAxes:bet,setCurves:wet,setOptions:ket,getConfig:yet,clear:Eet,setAccTitle:Lr,getAccTitle:Rr,setDiagramTitle:$r,getDiagramTitle:Ir,getAccDescription:Mr,setAccDescription:Nr}});var Cet,uye,hye=N(()=>{"use strict";kp();vt();T1();jB();Cet=o(t=>{$c(t,Kp);let{axes:e,curves:r,options:n}=t;Kp.setAxes(e),Kp.setCurves(r),Kp.setOptions(n)},"populate"),uye={parse:o(async t=>{let e=await uo("radar",t);Y.debug(e),Cet(e)},"parse")}});function Ret(t,e,r,n,i,a,s){let l=e.length,u=Math.min(s.width,s.height)/2;r.forEach((h,f)=>{if(h.entries.length!==l)return;let d=h.entries.map((p,m)=>{let g=2*Math.PI*m/l-Math.PI/2,y=Net(p,n,i,u),v=y*Math.cos(g),x=y*Math.sin(g);return{x:v,y:x}});a==="circle"?t.append("path").attr("d",Met(d,s.curveTension)).attr("class",`radarCurve-${f}`):a==="polygon"&&t.append("polygon").attr("points",d.map(p=>`${p.x},${p.y}`).join(" ")).attr("class",`radarCurve-${f}`)})}function Net(t,e,r,n){let i=Math.min(Math.max(t,e),r);return n*(i-e)/(r-e)}function Met(t,e){let r=t.length,n=`M${t[0].x},${t[0].y}`;for(let i=0;i{let h=t.append("g").attr("transform",`translate(${i}, ${a+u*s})`);h.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${u}`),h.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(l.label)})}var Aet,_et,Det,Let,fye,dye=N(()=>{"use strict";Vc();Aet=o((t,e,r,n)=>{let i=n.db,a=i.getAxes(),s=i.getCurves(),l=i.getOptions(),u=i.getConfig(),h=i.getDiagramTitle(),f=sa(e),d=_et(f,u),p=l.max??Math.max(...s.map(y=>Math.max(...y.entries))),m=l.min,g=Math.min(u.width,u.height)/2;Det(d,a,g,l.ticks,l.graticule),Let(d,a,g,u),Ret(d,a,s,m,p,l.graticule,u),Iet(d,s,l.showLegend,u),d.append("text").attr("class","radarTitle").text(h).attr("x",0).attr("y",-u.height/2-u.marginTop)},"draw"),_et=o((t,e)=>{let r=e.width+e.marginLeft+e.marginRight,n=e.height+e.marginTop+e.marginBottom,i={x:e.marginLeft+e.width/2,y:e.marginTop+e.height/2};return t.attr("viewbox",`0 0 ${r} ${n}`).attr("width",r).attr("height",n),t.append("g").attr("transform",`translate(${i.x}, ${i.y})`)},"drawFrame"),Det=o((t,e,r,n,i)=>{if(i==="circle")for(let a=0;a{let d=2*f*Math.PI/a-Math.PI/2,p=l*Math.cos(d),m=l*Math.sin(d);return`${p},${m}`}).join(" ");t.append("polygon").attr("points",u).attr("class","radarGraticule")}}},"drawGraticule"),Let=o((t,e,r,n)=>{let i=e.length;for(let a=0;a{"use strict";ir();_y();ji();Oet=o((t,e)=>{let r="";for(let n=0;nLrt});var Lrt,rbe=N(()=>{"use strict";cz();Kxe();Zxe();ebe();Lrt={parser:uz,get db(){return new gy},renderer:Qxe,styles:Jxe}});var yy,abe,d0,Mrt,Irt,sbe,Ort,Prt,Brt,Frt,$rt,zrt,Grt,p0,hz=N(()=>{"use strict";qn();La();tr();ci();yy={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},abe={axes:[],curves:[],options:yy},d0=structuredClone(abe),Mrt=ur.radar,Irt=o(()=>Vn({...Mrt,...Qt().radar}),"getConfig"),sbe=o(()=>d0.axes,"getAxes"),Ort=o(()=>d0.curves,"getCurves"),Prt=o(()=>d0.options,"getOptions"),Brt=o(t=>{d0.axes=t.map(e=>({name:e.name,label:e.label??e.name}))},"setAxes"),Frt=o(t=>{d0.curves=t.map(e=>({name:e.name,label:e.label??e.name,entries:$rt(e.entries)}))},"setCurves"),$rt=o(t=>{if(t[0].axis==null)return t.map(r=>r.value);let e=sbe();if(e.length===0)throw new Error("Axes must be populated before curves for reference entries");return e.map(r=>{let n=t.find(i=>i.axis?.$refText===r.name);if(n===void 0)throw new Error("Missing entry for axis "+r.label);return n.value})},"computeCurveEntries"),zrt=o(t=>{let e=t.reduce((r,n)=>(r[n.name]=n,r),{});d0.options={showLegend:e.showLegend?.value??yy.showLegend,ticks:e.ticks?.value??yy.ticks,max:e.max?.value??yy.max,min:e.min?.value??yy.min,graticule:e.graticule?.value??yy.graticule}},"setOptions"),Grt=o(()=>{Sr(),d0=structuredClone(abe)},"clear"),p0={getAxes:sbe,getCurves:Ort,getOptions:Prt,setAxes:Brt,setCurves:Frt,setOptions:zrt,getConfig:Irt,clear:Grt,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,getAccDescription:Or,setAccDescription:Ir}});var Vrt,obe,lbe=N(()=>{"use strict";Uf();pt();r0();hz();Vrt=o(t=>{nl(t,p0);let{axes:e,curves:r,options:n}=t;p0.setAxes(e),p0.setCurves(r),p0.setOptions(n)},"populate"),obe={parse:o(async t=>{let e=await bs("radar",t);X.debug(e),Vrt(e)},"parse")}});function Yrt(t,e,r,n,i,a,s){let l=e.length,u=Math.min(s.width,s.height)/2;r.forEach((h,f)=>{if(h.entries.length!==l)return;let d=h.entries.map((p,m)=>{let g=2*Math.PI*m/l-Math.PI/2,y=Xrt(p,n,i,u),v=y*Math.cos(g),x=y*Math.sin(g);return{x:v,y:x}});a==="circle"?t.append("path").attr("d",jrt(d,s.curveTension)).attr("class",`radarCurve-${f}`):a==="polygon"&&t.append("polygon").attr("points",d.map(p=>`${p.x},${p.y}`).join(" ")).attr("class",`radarCurve-${f}`)})}function Xrt(t,e,r,n){let i=Math.min(Math.max(t,e),r);return n*(i-e)/(r-e)}function jrt(t,e){let r=t.length,n=`M${t[0].x},${t[0].y}`;for(let i=0;i{let h=t.append("g").attr("transform",`translate(${i}, ${a+u*s})`);h.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${u}`),h.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(l.label)})}var Urt,Hrt,qrt,Wrt,cbe,ube=N(()=>{"use strict";tu();Urt=o((t,e,r,n)=>{let i=n.db,a=i.getAxes(),s=i.getCurves(),l=i.getOptions(),u=i.getConfig(),h=i.getDiagramTitle(),f=aa(e),d=Hrt(f,u),p=l.max??Math.max(...s.map(y=>Math.max(...y.entries))),m=l.min,g=Math.min(u.width,u.height)/2;qrt(d,a,g,l.ticks,l.graticule),Wrt(d,a,g,u),Yrt(d,a,s,m,p,l.graticule,u),Krt(d,s,l.showLegend,u),d.append("text").attr("class","radarTitle").text(h).attr("x",0).attr("y",-u.height/2-u.marginTop)},"draw"),Hrt=o((t,e)=>{let r=e.width+e.marginLeft+e.marginRight,n=e.height+e.marginTop+e.marginBottom,i={x:e.marginLeft+e.width/2,y:e.marginTop+e.height/2};return t.attr("viewbox",`0 0 ${r} ${n}`).attr("width",r).attr("height",n),t.append("g").attr("transform",`translate(${i.x}, ${i.y})`)},"drawFrame"),qrt=o((t,e,r,n,i)=>{if(i==="circle")for(let a=0;a{let d=2*f*Math.PI/a-Math.PI/2,p=l*Math.cos(d),m=l*Math.sin(d);return`${p},${m}`}).join(" ");t.append("polygon").attr("points",u).attr("class","radarGraticule")}}},"drawGraticule"),Wrt=o((t,e,r,n)=>{let i=e.length;for(let a=0;a{"use strict";tr();Oy();qn();Qrt=o((t,e)=>{let r="";for(let n=0;n{let e=oh(),r=cr(),n=Fi(e,r.themeVariables),i=Fi(n.radar,t);return{themeVariables:n,radarOptions:i}},"buildRadarStyleOptions"),pye=o(({radar:t}={})=>{let{themeVariables:e,radarOptions:r}=Pet(t);return` + `}return r},"genIndexStyles"),Zrt=o(t=>{let e=mh(),r=Qt(),n=Vn(e,r.themeVariables),i=Vn(n.radar,t);return{themeVariables:n,radarOptions:i}},"buildRadarStyleOptions"),hbe=o(({radar:t}={})=>{let{themeVariables:e,radarOptions:r}=Zrt(t);return` .radarTitle { font-size: ${e.fontSize}; color: ${e.titleColor}; @@ -2399,13 +2579,13 @@ ${g}${Math.round(D*100)/100}${y}`:I,"getText");h.append("g").attr("class","node- font-size: ${r.legendFontSize}px; dominant-baseline: hanging; } - ${Oet(e,r)} - `},"styles")});var gye={};hr(gye,{diagram:()=>Bet});var Bet,yye=N(()=>{"use strict";jB();hye();dye();mye();Bet={parser:uye,db:Kp,renderer:fye,styles:pye}});var KB,bye,wye=N(()=>{"use strict";KB=function(){var t=o(function(w,C,T,E){for(T=T||{},E=w.length;E--;T[w[E]]=C);return T},"o"),e=[1,7],r=[1,13],n=[1,14],i=[1,15],a=[1,19],s=[1,16],l=[1,17],u=[1,18],h=[8,30],f=[8,21,28,29,30,31,32,40,44,47],d=[1,23],p=[1,24],m=[8,15,16,21,28,29,30,31,32,40,44,47],g=[8,15,16,21,27,28,29,30,31,32,40,44,47],y=[1,49],v={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:o(function(C,T,E,A,S,_,I){var D=_.length-1;switch(S){case 4:A.getLogger().debug("Rule: separator (NL) ");break;case 5:A.getLogger().debug("Rule: separator (Space) ");break;case 6:A.getLogger().debug("Rule: separator (EOF) ");break;case 7:A.getLogger().debug("Rule: hierarchy: ",_[D-1]),A.setHierarchy(_[D-1]);break;case 8:A.getLogger().debug("Stop NL ");break;case 9:A.getLogger().debug("Stop EOF ");break;case 10:A.getLogger().debug("Stop NL2 ");break;case 11:A.getLogger().debug("Stop EOF2 ");break;case 12:A.getLogger().debug("Rule: statement: ",_[D]),typeof _[D].length=="number"?this.$=_[D]:this.$=[_[D]];break;case 13:A.getLogger().debug("Rule: statement #2: ",_[D-1]),this.$=[_[D-1]].concat(_[D]);break;case 14:A.getLogger().debug("Rule: link: ",_[D],C),this.$={edgeTypeStr:_[D],label:""};break;case 15:A.getLogger().debug("Rule: LABEL link: ",_[D-3],_[D-1],_[D]),this.$={edgeTypeStr:_[D],label:_[D-1]};break;case 18:let k=parseInt(_[D]),L=A.generateId();this.$={id:L,type:"space",label:"",width:k,children:[]};break;case 23:A.getLogger().debug("Rule: (nodeStatement link node) ",_[D-2],_[D-1],_[D]," typestr: ",_[D-1].edgeTypeStr);let R=A.edgeStrToEdgeData(_[D-1].edgeTypeStr);this.$=[{id:_[D-2].id,label:_[D-2].label,type:_[D-2].type,directions:_[D-2].directions},{id:_[D-2].id+"-"+_[D].id,start:_[D-2].id,end:_[D].id,label:_[D-1].label,type:"edge",directions:_[D].directions,arrowTypeEnd:R,arrowTypeStart:"arrow_open"},{id:_[D].id,label:_[D].label,type:A.typeStr2Type(_[D].typeStr),directions:_[D].directions}];break;case 24:A.getLogger().debug("Rule: nodeStatement (abc88 node size) ",_[D-1],_[D]),this.$={id:_[D-1].id,label:_[D-1].label,type:A.typeStr2Type(_[D-1].typeStr),directions:_[D-1].directions,widthInColumns:parseInt(_[D],10)};break;case 25:A.getLogger().debug("Rule: nodeStatement (node) ",_[D]),this.$={id:_[D].id,label:_[D].label,type:A.typeStr2Type(_[D].typeStr),directions:_[D].directions,widthInColumns:1};break;case 26:A.getLogger().debug("APA123",this?this:"na"),A.getLogger().debug("COLUMNS: ",_[D]),this.$={type:"column-setting",columns:_[D]==="auto"?-1:parseInt(_[D])};break;case 27:A.getLogger().debug("Rule: id-block statement : ",_[D-2],_[D-1]);let O=A.generateId();this.$={..._[D-2],type:"composite",children:_[D-1]};break;case 28:A.getLogger().debug("Rule: blockStatement : ",_[D-2],_[D-1],_[D]);let M=A.generateId();this.$={id:M,type:"composite",label:"",children:_[D-1]};break;case 29:A.getLogger().debug("Rule: node (NODE_ID separator): ",_[D]),this.$={id:_[D]};break;case 30:A.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",_[D-1],_[D]),this.$={id:_[D-1],label:_[D].label,typeStr:_[D].typeStr,directions:_[D].directions};break;case 31:A.getLogger().debug("Rule: dirList: ",_[D]),this.$=[_[D]];break;case 32:A.getLogger().debug("Rule: dirList: ",_[D-1],_[D]),this.$=[_[D-1]].concat(_[D]);break;case 33:A.getLogger().debug("Rule: nodeShapeNLabel: ",_[D-2],_[D-1],_[D]),this.$={typeStr:_[D-2]+_[D],label:_[D-1]};break;case 34:A.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",_[D-3],_[D-2]," #3:",_[D-1],_[D]),this.$={typeStr:_[D-3]+_[D],label:_[D-2],directions:_[D-1]};break;case 35:case 36:this.$={type:"classDef",id:_[D-1].trim(),css:_[D].trim()};break;case 37:this.$={type:"applyClass",id:_[D-1].trim(),styleClass:_[D].trim()};break;case 38:this.$={type:"applyStyles",id:_[D-1].trim(),stylesStr:_[D].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{8:[1,20]},t(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:e,28:r,29:n,31:i,32:a,40:s,44:l,47:u}),t(f,[2,16],{14:22,15:d,16:p}),t(f,[2,17]),t(f,[2,18]),t(f,[2,19]),t(f,[2,20]),t(f,[2,21]),t(f,[2,22]),t(m,[2,25],{27:[1,25]}),t(f,[2,26]),{19:26,26:12,32:a},{11:27,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},t(g,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},t(h,[2,13]),{26:35,32:a},{32:[2,14]},{17:[1,36]},t(m,[2,24]),{11:37,13:4,14:22,15:d,16:p,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},t(g,[2,30]),{18:[1,43]},{18:[1,44]},t(m,[2,23]),{18:[1,45]},{30:[1,46]},t(f,[2,28]),t(f,[2,35]),t(f,[2,36]),t(f,[2,37]),t(f,[2,38]),{37:[1,47]},{34:48,35:y},{15:[1,50]},t(f,[2,27]),t(g,[2,33]),{39:[1,51]},{34:52,35:y,39:[2,31]},{32:[2,15]},t(g,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:o(function(C,T){if(T.recoverable)this.trace(C);else{var E=new Error(C);throw E.hash=T,E}},"parseError"),parse:o(function(C){var T=this,E=[0],A=[],S=[null],_=[],I=this.table,D="",k=0,L=0,R=0,O=2,M=1,B=_.slice.call(arguments,1),F=Object.create(this.lexer),P={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(P.yy[z]=this.yy[z]);F.setInput(C,P.yy),P.yy.lexer=F,P.yy.parser=this,typeof F.yylloc>"u"&&(F.yylloc={});var $=F.yylloc;_.push($);var H=F.options&&F.options.ranges;typeof P.yy.parseError=="function"?this.parseError=P.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Q(ce){E.length=E.length-2*ce,S.length=S.length-ce,_.length=_.length-ce}o(Q,"popStack");function j(){var ce;return ce=A.pop()||F.lex()||M,typeof ce!="number"&&(ce instanceof Array&&(A=ce,ce=A.pop()),ce=T.symbols_[ce]||ce),ce}o(j,"lex");for(var ie,ne,le,he,K,X,te={},J,se,ue,Z;;){if(le=E[E.length-1],this.defaultActions[le]?he=this.defaultActions[le]:((ie===null||typeof ie>"u")&&(ie=j()),he=I[le]&&I[le][ie]),typeof he>"u"||!he.length||!he[0]){var Se="";Z=[];for(J in I[le])this.terminals_[J]&&J>O&&Z.push("'"+this.terminals_[J]+"'");F.showPosition?Se="Parse error on line "+(k+1)+`: -`+F.showPosition()+` -Expecting `+Z.join(", ")+", got '"+(this.terminals_[ie]||ie)+"'":Se="Parse error on line "+(k+1)+": Unexpected "+(ie==M?"end of input":"'"+(this.terminals_[ie]||ie)+"'"),this.parseError(Se,{text:F.match,token:this.terminals_[ie]||ie,line:F.yylineno,loc:$,expected:Z})}if(he[0]instanceof Array&&he.length>1)throw new Error("Parse Error: multiple actions possible at state: "+le+", token: "+ie);switch(he[0]){case 1:E.push(ie),S.push(F.yytext),_.push(F.yylloc),E.push(he[1]),ie=null,ne?(ie=ne,ne=null):(L=F.yyleng,D=F.yytext,k=F.yylineno,$=F.yylloc,R>0&&R--);break;case 2:if(se=this.productions_[he[1]][1],te.$=S[S.length-se],te._$={first_line:_[_.length-(se||1)].first_line,last_line:_[_.length-1].last_line,first_column:_[_.length-(se||1)].first_column,last_column:_[_.length-1].last_column},H&&(te._$.range=[_[_.length-(se||1)].range[0],_[_.length-1].range[1]]),X=this.performAction.apply(te,[D,L,k,P.yy,he[1],S,_].concat(B)),typeof X<"u")return X;se&&(E=E.slice(0,-1*se*2),S=S.slice(0,-1*se),_=_.slice(0,-1*se)),E.push(this.productions_[he[1]][0]),S.push(te.$),_.push(te._$),ue=I[E[E.length-2]][E[E.length-1]],E.push(ue);break;case 3:return!0}}return!0},"parse")},x=function(){var w={EOF:1,parseError:o(function(T,E){if(this.yy.parser)this.yy.parser.parseError(T,E);else throw new Error(T)},"parseError"),setInput:o(function(C,T){return this.yy=T||this.yy||{},this._input=C,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var T=C.match(/(?:\r\n?|\n).*/g);return T?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),C},"input"),unput:o(function(C){var T=C.length,E=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-T),this.offset-=T;var A=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),E.length-1&&(this.yylineno-=E.length-1);var S=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:E?(E.length===A.length?this.yylloc.first_column:0)+A[A.length-E.length].length-E[0].length:this.yylloc.first_column-T},this.options.ranges&&(this.yylloc.range=[S[0],S[0]+this.yyleng-T]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(C){this.unput(this.match.slice(C))},"less"),pastInput:o(function(){var C=this.matched.substr(0,this.matched.length-this.match.length);return(C.length>20?"...":"")+C.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var C=this.match;return C.length<20&&(C+=this._input.substr(0,20-C.length)),(C.substr(0,20)+(C.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var C=this.pastInput(),T=new Array(C.length+1).join("-");return C+this.upcomingInput()+` -`+T+"^"},"showPosition"),test_match:o(function(C,T){var E,A,S;if(this.options.backtrack_lexer&&(S={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(S.yylloc.range=this.yylloc.range.slice(0))),A=C[0].match(/(?:\r\n?|\n).*/g),A&&(this.yylineno+=A.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:A?A[A.length-1].length-A[A.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+C[0].length},this.yytext+=C[0],this.match+=C[0],this.matches=C,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(C[0].length),this.matched+=C[0],E=this.performAction.call(this,this.yy,this,T,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),E)return E;if(this._backtrack){for(var _ in S)this[_]=S[_];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,T,E,A;this._more||(this.yytext="",this.match="");for(var S=this._currentRules(),_=0;_T[0].length)){if(T=E,A=_,this.options.backtrack_lexer){if(C=this.test_match(E,S[_]),C!==!1)return C;if(this._backtrack){T=!1;continue}else return!1}else if(!this.options.flex)break}return T?(C=this.test_match(T,S[A]),C!==!1?C:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var T=this.next();return T||this.lex()},"lex"),begin:o(function(T){this.conditionStack.push(T)},"begin"),popState:o(function(){var T=this.conditionStack.length-1;return T>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(T){return T=this.conditionStack.length-1-Math.abs(T||0),T>=0?this.conditionStack[T]:"INITIAL"},"topState"),pushState:o(function(T){this.begin(T)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(T,E,A,S){var _=S;switch(A){case 0:return 10;case 1:return T.getLogger().debug("Found space-block"),31;break;case 2:return T.getLogger().debug("Found nl-block"),31;break;case 3:return T.getLogger().debug("Found space-block"),29;break;case 4:T.getLogger().debug(".",E.yytext);break;case 5:T.getLogger().debug("_",E.yytext);break;case 6:return 5;case 7:return E.yytext=-1,28;break;case 8:return E.yytext=E.yytext.replace(/columns\s+/,""),T.getLogger().debug("COLUMNS (LEX)",E.yytext),28;break;case 9:this.pushState("md_string");break;case 10:return"MD_STR";case 11:this.popState();break;case 12:this.pushState("string");break;case 13:T.getLogger().debug("LEX: POPPING STR:",E.yytext),this.popState();break;case 14:return T.getLogger().debug("LEX: STR end:",E.yytext),"STR";break;case 15:return E.yytext=E.yytext.replace(/space\:/,""),T.getLogger().debug("SPACE NUM (LEX)",E.yytext),21;break;case 16:return E.yytext="1",T.getLogger().debug("COLUMNS (LEX)",E.yytext),21;break;case 17:return 43;case 18:return"LINKSTYLE";case 19:return"INTERPOLATE";case 20:return this.pushState("CLASSDEF"),40;break;case 21:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 22:return this.popState(),this.pushState("CLASSDEFID"),41;break;case 23:return this.popState(),42;break;case 24:return this.pushState("CLASS"),44;break;case 25:return this.popState(),this.pushState("CLASS_STYLE"),45;break;case 26:return this.popState(),46;break;case 27:return this.pushState("STYLE_STMNT"),47;break;case 28:return this.popState(),this.pushState("STYLE_DEFINITION"),48;break;case 29:return this.popState(),49;break;case 30:return this.pushState("acc_title"),"acc_title";break;case 31:return this.popState(),"acc_title_value";break;case 32:return this.pushState("acc_descr"),"acc_descr";break;case 33:return this.popState(),"acc_descr_value";break;case 34:this.pushState("acc_descr_multiline");break;case 35:this.popState();break;case 36:return"acc_descr_multiline_value";case 37:return 30;case 38:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 40:return this.popState(),T.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 41:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 43:return this.popState(),T.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 44:return this.popState(),T.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 45:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 46:return this.popState(),T.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 47:return this.popState(),T.getLogger().debug("Lex: ("),"NODE_DEND";break;case 48:return this.popState(),T.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 49:return this.popState(),T.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),T.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 51:return this.popState(),T.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 52:return this.popState(),T.getLogger().debug("Lex: )"),"NODE_DEND";break;case 53:return this.popState(),T.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 54:return this.popState(),T.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 55:return T.getLogger().debug("Lexa: -)"),this.pushState("NODE"),36;break;case 56:return T.getLogger().debug("Lexa: (-"),this.pushState("NODE"),36;break;case 57:return T.getLogger().debug("Lexa: ))"),this.pushState("NODE"),36;break;case 58:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 59:return T.getLogger().debug("Lex: ((("),this.pushState("NODE"),36;break;case 60:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 61:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 62:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 63:return T.getLogger().debug("Lexc: >"),this.pushState("NODE"),36;break;case 64:return T.getLogger().debug("Lexa: (["),this.pushState("NODE"),36;break;case 65:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 66:return this.pushState("NODE"),36;break;case 67:return this.pushState("NODE"),36;break;case 68:return this.pushState("NODE"),36;break;case 69:return this.pushState("NODE"),36;break;case 70:return this.pushState("NODE"),36;break;case 71:return this.pushState("NODE"),36;break;case 72:return this.pushState("NODE"),36;break;case 73:return T.getLogger().debug("Lexa: ["),this.pushState("NODE"),36;break;case 74:return this.pushState("BLOCK_ARROW"),T.getLogger().debug("LEX ARR START"),38;break;case 75:return T.getLogger().debug("Lex: NODE_ID",E.yytext),32;break;case 76:return T.getLogger().debug("Lex: EOF",E.yytext),8;break;case 77:this.pushState("md_string");break;case 78:this.pushState("md_string");break;case 79:return"NODE_DESCR";case 80:this.popState();break;case 81:T.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 82:T.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 83:return T.getLogger().debug("LEX: NODE_DESCR:",E.yytext),"NODE_DESCR";break;case 84:T.getLogger().debug("LEX POPPING"),this.popState();break;case 85:T.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 86:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (right): dir:",E.yytext),"DIR";break;case 87:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (left):",E.yytext),"DIR";break;case 88:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (x):",E.yytext),"DIR";break;case 89:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (y):",E.yytext),"DIR";break;case 90:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (up):",E.yytext),"DIR";break;case 91:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (down):",E.yytext),"DIR";break;case 92:return E.yytext="]>",T.getLogger().debug("Lex (ARROW_DIR end):",E.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 93:return T.getLogger().debug("Lex: LINK","#"+E.yytext+"#"),15;break;case 94:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 95:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 96:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 97:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 98:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 99:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 100:this.pushState("md_string");break;case 101:return T.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 102:return this.popState(),T.getLogger().debug("Lex: LINK","#"+E.yytext+"#"),15;break;case 103:return this.popState(),T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 104:return this.popState(),T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 105:return T.getLogger().debug("Lex: COLON",E.yytext),E.yytext=E.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block\s+)/,/^(?:block\n+)/,/^(?:block:)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[29],inclusive:!1},STYLE_STMNT:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[23],inclusive:!1},CLASSDEF:{rules:[21,22],inclusive:!1},CLASS_STYLE:{rules:[26],inclusive:!1},CLASS:{rules:[25],inclusive:!1},LLABEL:{rules:[100,101,102,103,104],inclusive:!1},ARROW_DIR:{rules:[86,87,88,89,90,91,92],inclusive:!1},BLOCK_ARROW:{rules:[77,82,85],inclusive:!1},NODE:{rules:[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,78,81],inclusive:!1},md_string:{rules:[10,11,79,80],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[13,14,83,84],inclusive:!1},acc_descr_multiline:{rules:[35,36],inclusive:!1},acc_descr:{rules:[33],inclusive:!1},acc_title:{rules:[31],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,12,15,16,17,18,19,20,24,27,30,32,34,37,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,93,94,95,96,97,98,99,105],inclusive:!0}}};return w}();v.lexer=x;function b(){this.yy={}}return o(b,"Parser"),b.prototype=v,v.Parser=b,new b}();KB.parser=KB;bye=KB});function Yet(t){switch(Y.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return Y.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function Xet(t){switch(Y.debug("typeStr2Type",t),t){case"==":return"thick";default:return"normal"}}function jet(t){switch(t.trim()){case"--x":return"arrow_cross";case"--o":return"arrow_circle";default:return"arrow_point"}}var Ul,ZB,QB,Tye,kye,zet,Sye,Get,eC,Vet,Uet,Het,Wet,Cye,JB,y4,qet,Eye,Ket,Qet,Zet,Jet,ett,ttt,rtt,ntt,itt,att,stt,Aye,_ye=N(()=>{"use strict";gL();ji();zt();vt();gr();mi();Ul=new Map,ZB=[],QB=new Map,Tye="color",kye="fill",zet="bgFill",Sye=",",Get=me(),eC=new Map,Vet=o(t=>Ze.sanitizeText(t,Get),"sanitizeText"),Uet=o(function(t,e=""){let r=eC.get(t);r||(r={id:t,styles:[],textStyles:[]},eC.set(t,r)),e?.split(Sye).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(Tye).exec(n)){let s=i.replace(kye,zet).replace(Tye,kye);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),Het=o(function(t,e=""){let r=Ul.get(t);e!=null&&(r.styles=e.split(Sye))},"addStyle2Node"),Wet=o(function(t,e){t.split(",").forEach(function(r){let n=Ul.get(r);if(n===void 0){let i=r.trim();n={id:i,type:"na",children:[]},Ul.set(i,n)}n.classes||(n.classes=[]),n.classes.push(e)})},"setCssClass"),Cye=o((t,e)=>{let r=t.flat(),n=[];for(let i of r){if(i.label&&(i.label=Vet(i.label)),i.type==="classDef"){Uet(i.id,i.css);continue}if(i.type==="applyClass"){Wet(i.id,i?.styleClass??"");continue}if(i.type==="applyStyles"){i?.stylesStr&&Het(i.id,i?.stylesStr);continue}if(i.type==="column-setting")e.columns=i.columns??-1;else if(i.type==="edge"){let a=(QB.get(i.id)??0)+1;QB.set(i.id,a),i.id=a+"-"+i.id,ZB.push(i)}else{i.label||(i.type==="composite"?i.label="":i.label=i.id);let a=Ul.get(i.id);if(a===void 0?Ul.set(i.id,i):(i.type!=="na"&&(a.type=i.type),i.label!==i.id&&(a.label=i.label)),i.children&&Cye(i.children,i),i.type==="space"){let s=i.width??1;for(let l=0;l{Y.debug("Clear called"),Ar(),y4={id:"root",type:"composite",children:[],columns:-1},Ul=new Map([["root",y4]]),JB=[],eC=new Map,ZB=[],QB=new Map},"clear");o(Yet,"typeStr2Type");o(Xet,"edgeTypeStr2Type");o(jet,"edgeStrToEdgeData");Eye=0,Ket=o(()=>(Eye++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Eye),"generateId"),Qet=o(t=>{y4.children=t,Cye(t,y4),JB=y4.children},"setHierarchy"),Zet=o(t=>{let e=Ul.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),Jet=o(()=>[...Ul.values()],"getBlocksFlat"),ett=o(()=>JB||[],"getBlocks"),ttt=o(()=>ZB,"getEdges"),rtt=o(t=>Ul.get(t),"getBlock"),ntt=o(t=>{Ul.set(t.id,t)},"setBlock"),itt=o(()=>console,"getLogger"),att=o(function(){return eC},"getClasses"),stt={getConfig:o(()=>cr().block,"getConfig"),typeStr2Type:Yet,edgeTypeStr2Type:Xet,edgeStrToEdgeData:jet,getLogger:itt,getBlocksFlat:Jet,getBlocks:ett,getEdges:ttt,setHierarchy:Qet,getBlock:rtt,setBlock:ntt,getColumns:Zet,getClasses:att,clear:qet,generateId:Ket},Aye=stt});var tC,ott,Dye,Lye=N(()=>{"use strict";Ys();tC=o((t,e)=>{let r=Kf,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return qa(n,i,a,e)},"fade"),ott=o(t=>`.label { + ${Qrt(e,r)} + `},"styles")});var dbe={};dr(dbe,{diagram:()=>Jrt});var Jrt,pbe=N(()=>{"use strict";hz();lbe();ube();fbe();Jrt={parser:obe,db:p0,renderer:cbe,styles:hbe}});var fz,ybe,vbe=N(()=>{"use strict";fz=(function(){var t=o(function(T,S,w,k){for(w=w||{},k=T.length;k--;w[T[k]]=S);return w},"o"),e=[1,15],r=[1,7],n=[1,13],i=[1,14],a=[1,19],s=[1,16],l=[1,17],u=[1,18],h=[8,30],f=[8,10,21,28,29,30,31,39,43,46],d=[1,23],p=[1,24],m=[8,10,15,16,21,28,29,30,31,39,43,46],g=[8,10,15,16,21,27,28,29,30,31,39,43,46],y=[1,49],v={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:o(function(S,w,k,A,C,R,I){var L=R.length-1;switch(C){case 4:A.getLogger().debug("Rule: separator (NL) ");break;case 5:A.getLogger().debug("Rule: separator (Space) ");break;case 6:A.getLogger().debug("Rule: separator (EOF) ");break;case 7:A.getLogger().debug("Rule: hierarchy: ",R[L-1]),A.setHierarchy(R[L-1]);break;case 8:A.getLogger().debug("Stop NL ");break;case 9:A.getLogger().debug("Stop EOF ");break;case 10:A.getLogger().debug("Stop NL2 ");break;case 11:A.getLogger().debug("Stop EOF2 ");break;case 12:A.getLogger().debug("Rule: statement: ",R[L]),typeof R[L].length=="number"?this.$=R[L]:this.$=[R[L]];break;case 13:A.getLogger().debug("Rule: statement #2: ",R[L-1]),this.$=[R[L-1]].concat(R[L]);break;case 14:A.getLogger().debug("Rule: link: ",R[L],S),this.$={edgeTypeStr:R[L],label:""};break;case 15:A.getLogger().debug("Rule: LABEL link: ",R[L-3],R[L-1],R[L]),this.$={edgeTypeStr:R[L],label:R[L-1]};break;case 18:let E=parseInt(R[L]),D=A.generateId();this.$={id:D,type:"space",label:"",width:E,children:[]};break;case 23:A.getLogger().debug("Rule: (nodeStatement link node) ",R[L-2],R[L-1],R[L]," typestr: ",R[L-1].edgeTypeStr);let _=A.edgeStrToEdgeData(R[L-1].edgeTypeStr);this.$=[{id:R[L-2].id,label:R[L-2].label,type:R[L-2].type,directions:R[L-2].directions},{id:R[L-2].id+"-"+R[L].id,start:R[L-2].id,end:R[L].id,label:R[L-1].label,type:"edge",directions:R[L].directions,arrowTypeEnd:_,arrowTypeStart:"arrow_open"},{id:R[L].id,label:R[L].label,type:A.typeStr2Type(R[L].typeStr),directions:R[L].directions}];break;case 24:A.getLogger().debug("Rule: nodeStatement (abc88 node size) ",R[L-1],R[L]),this.$={id:R[L-1].id,label:R[L-1].label,type:A.typeStr2Type(R[L-1].typeStr),directions:R[L-1].directions,widthInColumns:parseInt(R[L],10)};break;case 25:A.getLogger().debug("Rule: nodeStatement (node) ",R[L]),this.$={id:R[L].id,label:R[L].label,type:A.typeStr2Type(R[L].typeStr),directions:R[L].directions,widthInColumns:1};break;case 26:A.getLogger().debug("APA123",this?this:"na"),A.getLogger().debug("COLUMNS: ",R[L]),this.$={type:"column-setting",columns:R[L]==="auto"?-1:parseInt(R[L])};break;case 27:A.getLogger().debug("Rule: id-block statement : ",R[L-2],R[L-1]);let O=A.generateId();this.$={...R[L-2],type:"composite",children:R[L-1]};break;case 28:A.getLogger().debug("Rule: blockStatement : ",R[L-2],R[L-1],R[L]);let M=A.generateId();this.$={id:M,type:"composite",label:"",children:R[L-1]};break;case 29:A.getLogger().debug("Rule: node (NODE_ID separator): ",R[L]),this.$={id:R[L]};break;case 30:A.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",R[L-1],R[L]),this.$={id:R[L-1],label:R[L].label,typeStr:R[L].typeStr,directions:R[L].directions};break;case 31:A.getLogger().debug("Rule: dirList: ",R[L]),this.$=[R[L]];break;case 32:A.getLogger().debug("Rule: dirList: ",R[L-1],R[L]),this.$=[R[L-1]].concat(R[L]);break;case 33:A.getLogger().debug("Rule: nodeShapeNLabel: ",R[L-2],R[L-1],R[L]),this.$={typeStr:R[L-2]+R[L],label:R[L-1]};break;case 34:A.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",R[L-3],R[L-2]," #3:",R[L-1],R[L]),this.$={typeStr:R[L-3]+R[L],label:R[L-2],directions:R[L-1]};break;case 35:case 36:this.$={type:"classDef",id:R[L-1].trim(),css:R[L].trim()};break;case 37:this.$={type:"applyClass",id:R[L-1].trim(),styleClass:R[L].trim()};break;case 38:this.$={type:"applyStyles",id:R[L-1].trim(),stylesStr:R[L].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:e,11:3,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{8:[1,20]},t(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:e,21:r,28:n,29:i,31:a,39:s,43:l,46:u}),t(f,[2,16],{14:22,15:d,16:p}),t(f,[2,17]),t(f,[2,18]),t(f,[2,19]),t(f,[2,20]),t(f,[2,21]),t(f,[2,22]),t(m,[2,25],{27:[1,25]}),t(f,[2,26]),{19:26,26:12,31:a},{10:e,11:27,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},t(g,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},t(h,[2,13]),{26:35,31:a},{31:[2,14]},{17:[1,36]},t(m,[2,24]),{10:e,11:37,13:4,14:22,15:d,16:p,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},t(g,[2,30]),{18:[1,43]},{18:[1,44]},t(m,[2,23]),{18:[1,45]},{30:[1,46]},t(f,[2,28]),t(f,[2,35]),t(f,[2,36]),t(f,[2,37]),t(f,[2,38]),{36:[1,47]},{33:48,34:y},{15:[1,50]},t(f,[2,27]),t(g,[2,33]),{38:[1,51]},{33:52,34:y,38:[2,31]},{31:[2,15]},t(g,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:o(function(S,w){if(w.recoverable)this.trace(S);else{var k=new Error(S);throw k.hash=w,k}},"parseError"),parse:o(function(S){var w=this,k=[0],A=[],C=[null],R=[],I=this.table,L="",E=0,D=0,_=0,O=2,M=1,P=R.slice.call(arguments,1),B=Object.create(this.lexer),F={yy:{}};for(var G in this.yy)Object.prototype.hasOwnProperty.call(this.yy,G)&&(F.yy[G]=this.yy[G]);B.setInput(S,F.yy),F.yy.lexer=B,F.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var $=B.yylloc;R.push($);var U=B.options&&B.options.ranges;typeof F.yy.parseError=="function"?this.parseError=F.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function j(Te){k.length=k.length-2*Te,C.length=C.length-Te,R.length=R.length-Te}o(j,"popStack");function te(){var Te;return Te=A.pop()||B.lex()||M,typeof Te!="number"&&(Te instanceof Array&&(A=Te,Te=A.pop()),Te=w.symbols_[Te]||Te),Te}o(te,"lex");for(var Y,oe,J,ue,re,ee,Z={},K,ae,Q,de;;){if(J=k[k.length-1],this.defaultActions[J]?ue=this.defaultActions[J]:((Y===null||typeof Y>"u")&&(Y=te()),ue=I[J]&&I[J][Y]),typeof ue>"u"||!ue.length||!ue[0]){var ne="";de=[];for(K in I[J])this.terminals_[K]&&K>O&&de.push("'"+this.terminals_[K]+"'");B.showPosition?ne="Parse error on line "+(E+1)+`: +`+B.showPosition()+` +Expecting `+de.join(", ")+", got '"+(this.terminals_[Y]||Y)+"'":ne="Parse error on line "+(E+1)+": Unexpected "+(Y==M?"end of input":"'"+(this.terminals_[Y]||Y)+"'"),this.parseError(ne,{text:B.match,token:this.terminals_[Y]||Y,line:B.yylineno,loc:$,expected:de})}if(ue[0]instanceof Array&&ue.length>1)throw new Error("Parse Error: multiple actions possible at state: "+J+", token: "+Y);switch(ue[0]){case 1:k.push(Y),C.push(B.yytext),R.push(B.yylloc),k.push(ue[1]),Y=null,oe?(Y=oe,oe=null):(D=B.yyleng,L=B.yytext,E=B.yylineno,$=B.yylloc,_>0&&_--);break;case 2:if(ae=this.productions_[ue[1]][1],Z.$=C[C.length-ae],Z._$={first_line:R[R.length-(ae||1)].first_line,last_line:R[R.length-1].last_line,first_column:R[R.length-(ae||1)].first_column,last_column:R[R.length-1].last_column},U&&(Z._$.range=[R[R.length-(ae||1)].range[0],R[R.length-1].range[1]]),ee=this.performAction.apply(Z,[L,D,E,F.yy,ue[1],C,R].concat(P)),typeof ee<"u")return ee;ae&&(k=k.slice(0,-1*ae*2),C=C.slice(0,-1*ae),R=R.slice(0,-1*ae)),k.push(this.productions_[ue[1]][0]),C.push(Z.$),R.push(Z._$),Q=I[k[k.length-2]][k[k.length-1]],k.push(Q);break;case 3:return!0}}return!0},"parse")},x=(function(){var T={EOF:1,parseError:o(function(w,k){if(this.yy.parser)this.yy.parser.parseError(w,k);else throw new Error(w)},"parseError"),setInput:o(function(S,w){return this.yy=w||this.yy||{},this._input=S,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var S=this._input[0];this.yytext+=S,this.yyleng++,this.offset++,this.match+=S,this.matched+=S;var w=S.match(/(?:\r\n?|\n).*/g);return w?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),S},"input"),unput:o(function(S){var w=S.length,k=S.split(/(?:\r\n?|\n)/g);this._input=S+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-w),this.offset-=w;var A=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===A.length?this.yylloc.first_column:0)+A[A.length-k.length].length-k[0].length:this.yylloc.first_column-w},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-w]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(S){this.unput(this.match.slice(S))},"less"),pastInput:o(function(){var S=this.matched.substr(0,this.matched.length-this.match.length);return(S.length>20?"...":"")+S.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var S=this.match;return S.length<20&&(S+=this._input.substr(0,20-S.length)),(S.substr(0,20)+(S.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var S=this.pastInput(),w=new Array(S.length+1).join("-");return S+this.upcomingInput()+` +`+w+"^"},"showPosition"),test_match:o(function(S,w){var k,A,C;if(this.options.backtrack_lexer&&(C={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(C.yylloc.range=this.yylloc.range.slice(0))),A=S[0].match(/(?:\r\n?|\n).*/g),A&&(this.yylineno+=A.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:A?A[A.length-1].length-A[A.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+S[0].length},this.yytext+=S[0],this.match+=S[0],this.matches=S,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(S[0].length),this.matched+=S[0],k=this.performAction.call(this,this.yy,this,w,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),k)return k;if(this._backtrack){for(var R in C)this[R]=C[R];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var S,w,k,A;this._more||(this.yytext="",this.match="");for(var C=this._currentRules(),R=0;Rw[0].length)){if(w=k,A=R,this.options.backtrack_lexer){if(S=this.test_match(k,C[R]),S!==!1)return S;if(this._backtrack){w=!1;continue}else return!1}else if(!this.options.flex)break}return w?(S=this.test_match(w,C[A]),S!==!1?S:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var w=this.next();return w||this.lex()},"lex"),begin:o(function(w){this.conditionStack.push(w)},"begin"),popState:o(function(){var w=this.conditionStack.length-1;return w>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(w){return w=this.conditionStack.length-1-Math.abs(w||0),w>=0?this.conditionStack[w]:"INITIAL"},"topState"),pushState:o(function(w){this.begin(w)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(w,k,A,C){var R=C;switch(A){case 0:return w.getLogger().debug("Found block-beta"),10;break;case 1:return w.getLogger().debug("Found id-block"),29;break;case 2:return w.getLogger().debug("Found block"),10;break;case 3:w.getLogger().debug(".",k.yytext);break;case 4:w.getLogger().debug("_",k.yytext);break;case 5:return 5;case 6:return k.yytext=-1,28;break;case 7:return k.yytext=k.yytext.replace(/columns\s+/,""),w.getLogger().debug("COLUMNS (LEX)",k.yytext),28;break;case 8:this.pushState("md_string");break;case 9:return"MD_STR";case 10:this.popState();break;case 11:this.pushState("string");break;case 12:w.getLogger().debug("LEX: POPPING STR:",k.yytext),this.popState();break;case 13:return w.getLogger().debug("LEX: STR end:",k.yytext),"STR";break;case 14:return k.yytext=k.yytext.replace(/space\:/,""),w.getLogger().debug("SPACE NUM (LEX)",k.yytext),21;break;case 15:return k.yytext="1",w.getLogger().debug("COLUMNS (LEX)",k.yytext),21;break;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;break;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 21:return this.popState(),this.pushState("CLASSDEFID"),40;break;case 22:return this.popState(),41;break;case 23:return this.pushState("CLASS"),43;break;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;break;case 25:return this.popState(),45;break;case 26:return this.pushState("STYLE_STMNT"),46;break;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;break;case 28:return this.popState(),48;break;case 29:return this.pushState("acc_title"),"acc_title";break;case 30:return this.popState(),"acc_title_value";break;case 31:return this.pushState("acc_descr"),"acc_descr";break;case 32:return this.popState(),"acc_descr_value";break;case 33:this.pushState("acc_descr_multiline");break;case 34:this.popState();break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 38:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),w.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 40:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 41:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),w.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 43:return this.popState(),w.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 44:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 45:return this.popState(),w.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 46:return this.popState(),w.getLogger().debug("Lex: ("),"NODE_DEND";break;case 47:return this.popState(),w.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 48:return this.popState(),w.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 49:return this.popState(),w.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),w.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 51:return this.popState(),w.getLogger().debug("Lex: )"),"NODE_DEND";break;case 52:return this.popState(),w.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 53:return this.popState(),w.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 54:return w.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;break;case 55:return w.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;break;case 56:return w.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;break;case 57:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 58:return w.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;break;case 59:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 60:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 61:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 62:return w.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;break;case 63:return w.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;break;case 64:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 65:return this.pushState("NODE"),35;break;case 66:return this.pushState("NODE"),35;break;case 67:return this.pushState("NODE"),35;break;case 68:return this.pushState("NODE"),35;break;case 69:return this.pushState("NODE"),35;break;case 70:return this.pushState("NODE"),35;break;case 71:return this.pushState("NODE"),35;break;case 72:return w.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;break;case 73:return this.pushState("BLOCK_ARROW"),w.getLogger().debug("LEX ARR START"),37;break;case 74:return w.getLogger().debug("Lex: NODE_ID",k.yytext),31;break;case 75:return w.getLogger().debug("Lex: EOF",k.yytext),8;break;case 76:this.pushState("md_string");break;case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:w.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:w.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return w.getLogger().debug("LEX: NODE_DESCR:",k.yytext),"NODE_DESCR";break;case 83:w.getLogger().debug("LEX POPPING"),this.popState();break;case 84:w.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (right): dir:",k.yytext),"DIR";break;case 86:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (left):",k.yytext),"DIR";break;case 87:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (x):",k.yytext),"DIR";break;case 88:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (y):",k.yytext),"DIR";break;case 89:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (up):",k.yytext),"DIR";break;case 90:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (down):",k.yytext),"DIR";break;case 91:return k.yytext="]>",w.getLogger().debug("Lex (ARROW_DIR end):",k.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 92:return w.getLogger().debug("Lex: LINK","#"+k.yytext+"#"),15;break;case 93:return w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 94:return w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 95:return w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 96:return w.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 97:return w.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 98:return w.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 99:this.pushState("md_string");break;case 100:return w.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 101:return this.popState(),w.getLogger().debug("Lex: LINK","#"+k.yytext+"#"),15;break;case 102:return this.popState(),w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 103:return this.popState(),w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 104:return w.getLogger().debug("Lex: COLON",k.yytext),k.yytext=k.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}};return T})();v.lexer=x;function b(){this.yy={}}return o(b,"Parser"),b.prototype=v,v.Parser=b,new b})();fz.parser=fz;ybe=fz});function cnt(t){switch(X.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return X.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function unt(t){switch(X.debug("typeStr2Type",t),t){case"==":return"thick";default:return"normal"}}function hnt(t){switch(t.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}var ql,pz,dz,xbe,bbe,rnt,wbe,nnt,DC,int,ant,snt,ont,kbe,mz,R4,lnt,Tbe,fnt,dnt,pnt,mnt,gnt,ynt,vnt,xnt,bnt,Tnt,wnt,Ebe,Sbe=N(()=>{"use strict";hR();qn();Xt();pt();gr();ci();ql=new Map,pz=[],dz=new Map,xbe="color",bbe="fill",rnt="bgFill",wbe=",",nnt=ge(),DC=new Map,int=o(t=>tt.sanitizeText(t,nnt),"sanitizeText"),ant=o(function(t,e=""){let r=DC.get(t);r||(r={id:t,styles:[],textStyles:[]},DC.set(t,r)),e?.split(wbe).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(xbe).exec(n)){let s=i.replace(bbe,rnt).replace(xbe,bbe);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),snt=o(function(t,e=""){let r=ql.get(t);e!=null&&(r.styles=e.split(wbe))},"addStyle2Node"),ont=o(function(t,e){t.split(",").forEach(function(r){let n=ql.get(r);if(n===void 0){let i=r.trim();n={id:i,type:"na",children:[]},ql.set(i,n)}n.classes||(n.classes=[]),n.classes.push(e)})},"setCssClass"),kbe=o((t,e)=>{let r=t.flat(),n=[],a=r.find(s=>s?.type==="column-setting")?.columns??-1;for(let s of r){if(typeof a=="number"&&a>0&&s.type!=="column-setting"&&typeof s.widthInColumns=="number"&&s.widthInColumns>a&&X.warn(`Block ${s.id} width ${s.widthInColumns} exceeds configured column width ${a}`),s.label&&(s.label=int(s.label)),s.type==="classDef"){ant(s.id,s.css);continue}if(s.type==="applyClass"){ont(s.id,s?.styleClass??"");continue}if(s.type==="applyStyles"){s?.stylesStr&&snt(s.id,s?.stylesStr);continue}if(s.type==="column-setting")e.columns=s.columns??-1;else if(s.type==="edge"){let l=(dz.get(s.id)??0)+1;dz.set(s.id,l),s.id=l+"-"+s.id,pz.push(s)}else{s.label||(s.type==="composite"?s.label="":s.label=s.id);let l=ql.get(s.id);if(l===void 0?ql.set(s.id,s):(s.type!=="na"&&(l.type=s.type),s.label!==s.id&&(l.label=s.label)),s.children&&kbe(s.children,s),s.type==="space"){let u=s.width??1;for(let h=0;h{X.debug("Clear called"),Sr(),R4={id:"root",type:"composite",children:[],columns:-1},ql=new Map([["root",R4]]),mz=[],DC=new Map,pz=[],dz=new Map},"clear");o(cnt,"typeStr2Type");o(unt,"edgeTypeStr2Type");o(hnt,"edgeStrToEdgeData");Tbe=0,fnt=o(()=>(Tbe++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Tbe),"generateId"),dnt=o(t=>{R4.children=t,kbe(t,R4),mz=R4.children},"setHierarchy"),pnt=o(t=>{let e=ql.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),mnt=o(()=>[...ql.values()],"getBlocksFlat"),gnt=o(()=>mz||[],"getBlocks"),ynt=o(()=>pz,"getEdges"),vnt=o(t=>ql.get(t),"getBlock"),xnt=o(t=>{ql.set(t.id,t)},"setBlock"),bnt=o(()=>X,"getLogger"),Tnt=o(function(){return DC},"getClasses"),wnt={getConfig:o(()=>Qt().block,"getConfig"),typeStr2Type:cnt,edgeTypeStr2Type:unt,edgeStrToEdgeData:hnt,getLogger:bnt,getBlocksFlat:mnt,getBlocks:gnt,getEdges:ynt,setHierarchy:dnt,getBlock:vnt,setBlock:xnt,getColumns:pnt,getClasses:Tnt,clear:lnt,generateId:fnt},Ebe=wnt});var LC,knt,Cbe,Abe=N(()=>{"use strict";eo();yg();LC=o((t,e)=>{let r=ld,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Ka(n,i,a,e)},"fade"),knt=o(t=>`.label { font-family: ${t.fontFamily}; color: ${t.nodeTextColor||t.textColor}; } @@ -2475,14 +2655,14 @@ Expecting `+Z.join(", ")+", got '"+(this.terminals_[ie]||ie)+"'":Se="Parse error /* For html labels only */ .labelBkg { - background-color: ${tC(t.edgeLabelBackground,.5)}; + background-color: ${LC(t.edgeLabelBackground,.5)}; // background-color: } .node .cluster { - // fill: ${tC(t.mainBkg,.5)}; - fill: ${tC(t.clusterBkg,.5)}; - stroke: ${tC(t.clusterBorder,.2)}; + // fill: ${LC(t.mainBkg,.5)}; + fill: ${LC(t.clusterBkg,.5)}; + stroke: ${LC(t.clusterBorder,.2)}; box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; stroke-width: 1px; } @@ -2517,10 +2697,11 @@ Expecting `+Z.join(", ")+", got '"+(this.terminals_[ie]||ie)+"'":Se="Parse error font-size: 18px; fill: ${t.textColor}; } -`,"getStyles"),Dye=ott});var ltt,ctt,utt,htt,ftt,dtt,ptt,mtt,gtt,ytt,vtt,Rye,Nye=N(()=>{"use strict";vt();ltt=o((t,e,r,n)=>{e.forEach(i=>{vtt[i](t,r,n)})},"insertMarkers"),ctt=o((t,e,r)=>{Y.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),utt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),htt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),ftt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),dtt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),ptt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),mtt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),gtt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),ytt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),vtt={extension:ctt,composition:utt,aggregation:htt,dependency:ftt,lollipop:dtt,point:ptt,circle:mtt,cross:gtt,barb:ytt},Rye=ltt});function xtt(t,e){if(t===0||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);if(t<0)return{px:e,py:0};if(t===1)return{px:0,py:e};let r=e%t,n=Math.floor(e/t);return{px:r,py:n}}function eF(t,e,r=0,n=0){Y.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"sieblingWidth",r),t?.size?.width||(t.size={width:r,height:n,x:0,y:0});let i=0,a=0;if(t.children?.length>0){for(let m of t.children)eF(m,e);let s=btt(t);i=s.width,a=s.height,Y.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",i,a);for(let m of t.children)m.size&&(Y.debug(`abc95 Setting size of children of ${t.id} id=${m.id} ${i} ${a} ${JSON.stringify(m.size)}`),m.size.width=i*(m.widthInColumns??1)+bi*((m.widthInColumns??1)-1),m.size.height=a,m.size.x=0,m.size.y=0,Y.debug(`abc95 updating size of ${t.id} children child:${m.id} maxWidth:${i} maxHeight:${a}`));for(let m of t.children)eF(m,e,i,a);let l=t.columns??-1,u=0;for(let m of t.children)u+=m.widthInColumns??1;let h=t.children.length;l>0&&l0?Math.min(t.children.length,l):t.children.length;if(m>0){let g=(d-m*bi-bi)/m;Y.debug("abc95 (growing to fit) width",t.id,d,t.size?.width,g);for(let y of t.children)y.size&&(y.size.width=g)}}t.size={width:d,height:p,x:0,y:0}}Y.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function Mye(t,e){Y.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);let r=t.columns??-1;if(Y.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){let n=t?.children[0]?.size?.width??0,i=t.children.length*n+(t.children.length-1)*bi;Y.debug("widthOfChildren 88",i,"posX");let a=0;Y.debug("abc91 block?.size?.x",t.id,t?.size?.x);let s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-bi,l=0;for(let u of t.children){let h=t;if(!u.size)continue;let{width:f,height:d}=u.size,{px:p,py:m}=xtt(r,a);if(m!=l&&(l=m,s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-bi,Y.debug("New row in layout for block",t.id," and child ",u.id,l)),Y.debug(`abc89 layout blocks (child) id: ${u.id} Pos: ${a} (px, py) ${p},${m} (${h?.size?.x},${h?.size?.y}) parent: ${h.id} width: ${f}${bi}`),h.size){let g=f/2;u.size.x=s+bi+g,Y.debug(`abc91 layout blocks (calc) px, pyid:${u.id} startingPos=X${s} new startingPosX${u.size.x} ${g} padding=${bi} width=${f} halfWidth=${g} => x:${u.size.x} y:${u.size.y} ${u.widthInColumns} (width * (child?.w || 1)) / 2 ${f*(u?.widthInColumns??1)/2}`),s=u.size.x+g,u.size.y=h.size.y-h.size.height/2+m*(d+bi)+d/2+bi,Y.debug(`abc88 layout blocks (calc) px, pyid:${u.id}startingPosX${s}${bi}${g}=>x:${u.size.x}y:${u.size.y}${u.widthInColumns}(width * (child?.w || 1)) / 2${f*(u?.widthInColumns??1)/2}`)}u.children&&Mye(u,e),a+=u?.widthInColumns??1,Y.debug("abc88 columnsPos",u,a)}}Y.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function Iye(t,{minX:e,minY:r,maxX:n,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&t.id!=="root"){let{x:a,y:s,width:l,height:u}=t.size;a-l/2n&&(n=a+l/2),s+u/2>i&&(i=s+u/2)}if(t.children)for(let a of t.children)({minX:e,minY:r,maxX:n,maxY:i}=Iye(a,{minX:e,minY:r,maxX:n,maxY:i}));return{minX:e,minY:r,maxX:n,maxY:i}}function Oye(t){let e=t.getBlock("root");if(!e)return;eF(e,t,0,0),Mye(e,t),Y.debug("getBlocks",JSON.stringify(e,null,2));let{minX:r,minY:n,maxX:i,maxY:a}=Iye(e),s=a-n,l=i-r;return{x:r,y:n,width:l,height:s}}var bi,btt,Pye=N(()=>{"use strict";vt();zt();bi=me()?.block?.padding??8;o(xtt,"calculateBlockPosition");btt=o(t=>{let e=0,r=0;for(let n of t.children){let{width:i,height:a,x:s,y:l}=n.size??{width:0,height:0,x:0,y:0};Y.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",l,n.type),n.type!=="space"&&(i>e&&(e=i/(t.widthInColumns??1)),a>r&&(r=a))}return{width:e,height:r}},"getMaxChildSize");o(eF,"setBlockSizes");o(Mye,"layoutBlocks");o(Iye,"findBounds");o(Oye,"layout")});function Bye(t,e){e&&t.attr("style",e)}function wtt(t){let e=Ge(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=t.label,i=t.isNode?"nodeLabel":"edgeLabel",a=r.append("span");return a.html(n),Bye(a,t.labelStyle),a.attr("class",i),Bye(r,t.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}var Ttt,vs,rC=N(()=>{"use strict";dr();vt();zt();gr();ir();to();o(Bye,"applyStyle");o(wtt,"addHtmlLabel");Ttt=o((t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),fr(me().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),Y.debug("vertexText"+i);let a={isNode:n,label:DD(na(i)),labelStyle:e.replace("fill:","color:")};return wtt(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let l of s){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),r?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=l.trim(),a.appendChild(u)}return a}},"createLabel"),vs=Ttt});var $ye,ktt,Fye,zye=N(()=>{"use strict";vt();$ye=o((t,e,r,n,i)=>{e.arrowTypeStart&&Fye(t,"start",e.arrowTypeStart,r,n,i),e.arrowTypeEnd&&Fye(t,"end",e.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),ktt={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Fye=o((t,e,r,n,i,a)=>{let s=ktt[r];if(!s){Y.warn(`Unknown arrow type: ${r}`);return}let l=e==="start"?"Start":"End";t.attr(`marker-${e}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker")});function nC(t,e){me().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}var tF,Ua,Vye,Uye,Ett,Stt,Gye,Hye,Wye=N(()=>{"use strict";vt();rC();to();dr();zt();ir();gr();JD();w2();zye();tF={},Ua={},Vye=o((t,e)=>{let r=me(),n=fr(r.flowchart.htmlLabels),i=e.labelType==="markdown"?Hn(t,e.label,{style:e.labelStyle,useHtmlLabels:n,addSvgBackground:!0},r):vs(e.label,e.labelStyle),a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(i);let l=i.getBBox();if(n){let h=i.children[0],f=Ge(i);l=h.getBoundingClientRect(),f.attr("width",l.width),f.attr("height",l.height)}s.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),tF[e.id]=a,e.width=l.width,e.height=l.height;let u;if(e.startLabelLeft){let h=vs(e.startLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Ua[e.id]||(Ua[e.id]={}),Ua[e.id].startLeft=f,nC(u,e.startLabelLeft)}if(e.startLabelRight){let h=vs(e.startLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=f.node().appendChild(h),d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Ua[e.id]||(Ua[e.id]={}),Ua[e.id].startRight=f,nC(u,e.startLabelRight)}if(e.endLabelLeft){let h=vs(e.endLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Ua[e.id]||(Ua[e.id]={}),Ua[e.id].endLeft=f,nC(u,e.endLabelLeft)}if(e.endLabelRight){let h=vs(e.endLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Ua[e.id]||(Ua[e.id]={}),Ua[e.id].endRight=f,nC(u,e.endLabelRight)}return i},"insertEdgeLabel");o(nC,"setTerminalWidth");Uye=o((t,e)=>{Y.debug("Moving label abc88 ",t.id,t.label,tF[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=me(),{subGraphTitleTotalMargin:i}=Ru(n);if(t.label){let a=tF[t.id],s=t.x,l=t.y;if(r){let u=Gt.calcLabelPosition(r);Y.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=Ua[t.id].startLeft,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=Ua[t.id].startRight,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=Ua[t.id].endLeft,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=Ua[t.id].endRight,s=t.x,l=t.y;if(r){let u=Gt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),Ett=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),Stt=o((t,e,r)=>{Y.debug(`intersection calc abc89: + ${zc()} +`,"getStyles"),Cbe=knt});var Ent,Snt,Cnt,Ant,_nt,Dnt,Lnt,Rnt,Nnt,Mnt,Int,_be,Dbe=N(()=>{"use strict";pt();Ent=o((t,e,r,n)=>{e.forEach(i=>{Int[i](t,r,n)})},"insertMarkers"),Snt=o((t,e,r)=>{X.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),Cnt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),Ant=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),_nt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),Dnt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),Lnt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),Rnt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),Nnt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),Mnt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),Int={extension:Snt,composition:Cnt,aggregation:Ant,dependency:_nt,lollipop:Dnt,point:Lnt,circle:Rnt,cross:Nnt,barb:Mnt},_be=Ent});function Ont(t,e){if(t===0||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);if(t<0)return{px:e,py:0};if(t===1)return{px:0,py:e};let r=e%t,n=Math.floor(e/t);return{px:r,py:n}}function gz(t,e,r=0,n=0){X.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"siblingWidth",r),t?.size?.width||(t.size={width:r,height:n,x:0,y:0});let i=0,a=0;if(t.children?.length>0){for(let m of t.children)gz(m,e);let s=Pnt(t);i=s.width,a=s.height,X.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",i,a);for(let m of t.children)m.size&&(X.debug(`abc95 Setting size of children of ${t.id} id=${m.id} ${i} ${a} ${JSON.stringify(m.size)}`),m.size.width=i*(m.widthInColumns??1)+Ti*((m.widthInColumns??1)-1),m.size.height=a,m.size.x=0,m.size.y=0,X.debug(`abc95 updating size of ${t.id} children child:${m.id} maxWidth:${i} maxHeight:${a}`));for(let m of t.children)gz(m,e,i,a);let l=t.columns??-1,u=0;for(let m of t.children)u+=m.widthInColumns??1;let h=t.children.length;l>0&&l0?Math.min(t.children.length,l):t.children.length;if(m>0){let g=(d-m*Ti-Ti)/m;X.debug("abc95 (growing to fit) width",t.id,d,t.size?.width,g);for(let y of t.children)y.size&&(y.size.width=g)}}t.size={width:d,height:p,x:0,y:0}}X.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function Lbe(t,e){X.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);let r=t.columns??-1;if(X.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){let n=t?.children[0]?.size?.width??0,i=t.children.length*n+(t.children.length-1)*Ti;X.debug("widthOfChildren 88",i,"posX");let a=0;X.debug("abc91 block?.size?.x",t.id,t?.size?.x);let s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-Ti,l=0;for(let u of t.children){let h=t;if(!u.size)continue;let{width:f,height:d}=u.size,{px:p,py:m}=Ont(r,a);if(m!=l&&(l=m,s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-Ti,X.debug("New row in layout for block",t.id," and child ",u.id,l)),X.debug(`abc89 layout blocks (child) id: ${u.id} Pos: ${a} (px, py) ${p},${m} (${h?.size?.x},${h?.size?.y}) parent: ${h.id} width: ${f}${Ti}`),h.size){let y=f/2;u.size.x=s+Ti+y,X.debug(`abc91 layout blocks (calc) px, pyid:${u.id} startingPos=X${s} new startingPosX${u.size.x} ${y} padding=${Ti} width=${f} halfWidth=${y} => x:${u.size.x} y:${u.size.y} ${u.widthInColumns} (width * (child?.w || 1)) / 2 ${f*(u?.widthInColumns??1)/2}`),s=u.size.x+y,u.size.y=h.size.y-h.size.height/2+m*(d+Ti)+d/2+Ti,X.debug(`abc88 layout blocks (calc) px, pyid:${u.id}startingPosX${s}${Ti}${y}=>x:${u.size.x}y:${u.size.y}${u.widthInColumns}(width * (child?.w || 1)) / 2${f*(u?.widthInColumns??1)/2}`)}u.children&&Lbe(u,e);let g=u?.widthInColumns??1;r>0&&(g=Math.min(g,r-a%r)),a+=g,X.debug("abc88 columnsPos",u,a)}}X.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function Rbe(t,{minX:e,minY:r,maxX:n,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&t.id!=="root"){let{x:a,y:s,width:l,height:u}=t.size;a-l/2n&&(n=a+l/2),s+u/2>i&&(i=s+u/2)}if(t.children)for(let a of t.children)({minX:e,minY:r,maxX:n,maxY:i}=Rbe(a,{minX:e,minY:r,maxX:n,maxY:i}));return{minX:e,minY:r,maxX:n,maxY:i}}function Nbe(t){let e=t.getBlock("root");if(!e)return;gz(e,t,0,0),Lbe(e,t),X.debug("getBlocks",JSON.stringify(e,null,2));let{minX:r,minY:n,maxX:i,maxY:a}=Rbe(e),s=a-n,l=i-r;return{x:r,y:n,width:l,height:s}}var Ti,Pnt,Mbe=N(()=>{"use strict";pt();Xt();Ti=ge()?.block?.padding??8;o(Ont,"calculateBlockPosition");Pnt=o(t=>{let e=0,r=0;for(let n of t.children){let{width:i,height:a,x:s,y:l}=n.size??{width:0,height:0,x:0,y:0};X.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",l,n.type),n.type!=="space"&&(i>e&&(e=i/(t.widthInColumns??1)),a>r&&(r=a))}return{width:e,height:r}},"getMaxChildSize");o(gz,"setBlockSizes");o(Lbe,"layoutBlocks");o(Rbe,"findBounds");o(Nbe,"layout")});function Ibe(t,e){e&&t.attr("style",e)}function Bnt(t,e){let r=qe(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),n=r.append("xhtml:div"),i=t.label,a=t.isNode?"nodeLabel":"edgeLabel",s=n.append("span");return s.html(sr(i,e)),Ibe(s,t.labelStyle),s.attr("class",a),Ibe(n,t.labelStyle),n.style("display","inline-block"),n.style("white-space","nowrap"),n.attr("xmlns","http://www.w3.org/1999/xhtml"),r.node()}var Fnt,ks,RC=N(()=>{"use strict";yr();Xt();gr();pt();zo();tr();o(Ibe,"applyStyle");o(Bnt,"addHtmlLabel");Fnt=o(async(t,e,r,n)=>{let i=t||"";typeof i=="object"&&(i=i[0]);let a=ge();if(vr(a.flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),X.debug("vertexText"+i);let s=await k9(Ji(i)),l={isNode:n,label:s,labelStyle:e.replace("fill:","color:")};return Bnt(l,a)}else{let s=document.createElementNS("http://www.w3.org/2000/svg","text");s.setAttribute("style",e.replace("color:","fill:"));let l=[];typeof i=="string"?l=i.split(/\\n|\n|/gi):Array.isArray(i)?l=i:l=[];for(let u of l){let h=document.createElementNS("http://www.w3.org/2000/svg","tspan");h.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),h.setAttribute("dy","1em"),h.setAttribute("x","0"),r?h.setAttribute("class","title-row"):h.setAttribute("class","row"),h.textContent=u.trim(),s.appendChild(h)}return s}},"createLabel"),ks=Fnt});var Pbe,$nt,Obe,Bbe=N(()=>{"use strict";pt();Pbe=o((t,e,r,n,i)=>{e.arrowTypeStart&&Obe(t,"start",e.arrowTypeStart,r,n,i),e.arrowTypeEnd&&Obe(t,"end",e.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),$nt={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Obe=o((t,e,r,n,i,a)=>{let s=$nt[r];if(!s){X.warn(`Unknown arrow type: ${r}`);return}let l=e==="start"?"Start":"End";t.attr(`marker-${e}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker")});function NC(t,e){ge().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}var yz,Wa,$be,zbe,znt,Gnt,Fbe,Gbe,Vbe=N(()=>{"use strict";pt();RC();zo();yr();Xt();tr();gr();X9();O2();Bbe();yz={},Wa={},$be=o(async(t,e)=>{let r=ge(),n=vr(r.flowchart.htmlLabels),i=e.labelType==="markdown"?di(t,e.label,{style:e.labelStyle,useHtmlLabels:n,addSvgBackground:!0},r):await ks(e.label,e.labelStyle),a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(i);let l=i.getBBox();if(n){let h=i.children[0],f=qe(i);l=h.getBoundingClientRect(),f.attr("width",l.width),f.attr("height",l.height)}s.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),yz[e.id]=a,e.width=l.width,e.height=l.height;let u;if(e.startLabelLeft){let h=await ks(e.startLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].startLeft=f,NC(u,e.startLabelLeft)}if(e.startLabelRight){let h=await ks(e.startLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=f.node().appendChild(h),d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].startRight=f,NC(u,e.startLabelRight)}if(e.endLabelLeft){let h=await ks(e.endLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].endLeft=f,NC(u,e.endLabelLeft)}if(e.endLabelRight){let h=await ks(e.endLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].endRight=f,NC(u,e.endLabelRight)}return i},"insertEdgeLabel");o(NC,"setTerminalWidth");zbe=o((t,e)=>{X.debug("Moving label abc88 ",t.id,t.label,yz[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=ge(),{subGraphTitleTotalMargin:i}=Pu(n);if(t.label){let a=yz[t.id],s=t.x,l=t.y;if(r){let u=qt.calcLabelPosition(r);X.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=Wa[t.id].startLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=Wa[t.id].startRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=Wa[t.id].endLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=Wa[t.id].endRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),znt=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),Gnt=o((t,e,r)=>{X.debug(`intersection calc abc89: outsidePoint: ${JSON.stringify(e)} insidePoint : ${JSON.stringify(r)} - node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{Y.debug("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(!Ett(e,a)&&!i){let s=Stt(e,n,a),l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),Hye=o(function(t,e,r,n,i,a,s){let l=r.points;Y.debug("abc88 InsertEdge: edge=",r,"e=",e);let u=!1,h=a.node(e.v);var f=a.node(e.w);f?.intersect&&h?.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(h.intersect(l[0])),l.push(f.intersect(l[l.length-1]))),r.toCluster&&(Y.debug("to cluster abc88",n[r.toCluster]),l=Gye(r.points,n[r.toCluster].node),u=!0),r.fromCluster&&(Y.debug("from cluster abc88",n[r.fromCluster]),l=Gye(l.reverse(),n[r.fromCluster].node).reverse(),u=!0);let d=l.filter(C=>!Number.isNaN(C.y)),p=Do;r.curve&&(i==="graph"||i==="flowchart")&&(p=r.curve);let{x:m,y:g}=qw(r),y=wl().x(m).y(g).curve(p),v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}let x=t.append("path").attr("d",y(d)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(me().flowchart.arrowMarkerAbsolute||me().state.arrowMarkerAbsolute)&&(b=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,b=b.replace(/\(/g,"\\("),b=b.replace(/\)/g,"\\)")),$ye(x,r,b,s,i);let w={};return u&&(w.updatedPath=l),w.originalPath=r.points,w},"insertEdge")});var Ctt,qye,Yye=N(()=>{"use strict";Ctt=o(t=>{let e=new Set;for(let r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r);break}return e},"expandAndDeduplicateDirections"),qye=o((t,e,r)=>{let n=Ctt(t),i=2,a=e.height+2*r.padding,s=a/i,l=e.width+2*s+r.padding,u=r.padding/2;return n.has("right")&&n.has("left")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:s,y:0},{x:l/2,y:2*u},{x:l-s,y:0},{x:l,y:0},{x:l,y:-a/3},{x:l+2*u,y:-a/2},{x:l,y:-2*a/3},{x:l,y:-a},{x:l-s,y:-a},{x:l/2,y:-a-2*u},{x:s,y:-a},{x:0,y:-a},{x:0,y:-2*a/3},{x:-2*u,y:-a/2},{x:0,y:-a/3}]:n.has("right")&&n.has("left")&&n.has("up")?[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}]:n.has("right")&&n.has("left")&&n.has("down")?[{x:0,y:0},{x:s,y:-a},{x:l-s,y:-a},{x:l,y:0}]:n.has("right")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:l,y:-s},{x:l,y:-a+s},{x:0,y:-a}]:n.has("left")&&n.has("up")&&n.has("down")?[{x:l,y:0},{x:0,y:-s},{x:0,y:-a+s},{x:l,y:-a}]:n.has("right")&&n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")&&n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:n.has("right")&&n.has("up")?[{x:0,y:0},{x:l,y:-s},{x:0,y:-a}]:n.has("right")&&n.has("down")?[{x:0,y:0},{x:l,y:0},{x:0,y:-a}]:n.has("left")&&n.has("up")?[{x:l,y:0},{x:0,y:-s},{x:l,y:-a}]:n.has("left")&&n.has("down")?[{x:l,y:0},{x:0,y:0},{x:l,y:-a}]:n.has("right")?[{x:s,y:-u},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a+u}]:n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")?[{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u}]:n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:[{x:0,y:0}]},"getArrowPoints")});function Att(t,e){return t.intersect(e)}var Xye,jye=N(()=>{"use strict";o(Att,"intersectNode");Xye=Att});function _tt(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(_tt,"intersectEllipse");iC=_tt});function Dtt(t,e,r){return iC(t,e,e,r)}var Kye,Qye=N(()=>{"use strict";rF();o(Dtt,"intersectCircle");Kye=Dtt});function Ltt(t,e,r,n){var i,a,s,l,u,h,f,d,p,m,g,y,v,x,b;if(i=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&Zye(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,f=a*t.x+l*t.y+h,d=a*e.x+l*e.y+h,!(f!==0&&d!==0&&Zye(f,d))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function Zye(t,e){return t*e>0}var Jye,eve=N(()=>{"use strict";o(Ltt,"intersectLine");o(Zye,"sameSign");Jye=Ltt});function Rtt(t,e,r){var n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(g){s=Math.min(s,g.x),l=Math.min(l,g.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));for(var u=n-t.width/2-s,h=i-t.height/2-l,f=0;f1&&a.sort(function(g,y){var v=g.x-r.x,x=g.y-r.y,b=Math.sqrt(v*v+x*x),w=y.x-r.x,C=y.y-r.y,T=Math.sqrt(w*w+C*C);return b{"use strict";eve();tve=Rtt;o(Rtt,"intersectPolygon")});var Ntt,nve,ive=N(()=>{"use strict";Ntt=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),nve=Ntt});var In,nF=N(()=>{"use strict";jye();Qye();rF();rve();ive();In={node:Xye,circle:Kye,ellipse:iC,polygon:tve,rect:nve}});function Hl(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var Di,Qn,iF=N(()=>{"use strict";rC();to();zt();dr();gr();ir();Di=o(async(t,e,r,n)=>{let i=me(),a,s=e.useHtmlLabels||fr(i.flowchart.htmlLabels);r?a=r:a="node default";let l=t.insert("g").attr("class",a).attr("id",e.domId||e.id),u=l.insert("g").attr("class","label").attr("style",e.labelStyle),h;e.labelText===void 0?h="":h=typeof e.labelText=="string"?e.labelText:e.labelText[0];let f=u.node(),d;e.labelType==="markdown"?d=Hn(u,Tr(na(h),i),{useHtmlLabels:s,width:e.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):d=f.appendChild(vs(Tr(na(h),i),e.labelStyle,!1,n));let p=d.getBBox(),m=e.padding/2;if(fr(i.flowchart.htmlLabels)){let g=d.children[0],y=Ge(d),v=g.getElementsByTagName("img");if(v){let x=h.replace(/]*>/g,"").trim()==="";await Promise.all([...v].map(b=>new Promise(w=>{function C(){if(b.style.display="flex",b.style.flexDirection="column",x){let T=i.fontSize?i.fontSize:window.getComputedStyle(document.body).fontSize,A=parseInt(T,10)*5+"px";b.style.minWidth=A,b.style.maxWidth=A}else b.style.width="100%";w(b)}o(C,"setupImage"),setTimeout(()=>{b.complete&&C()}),b.addEventListener("error",C),b.addEventListener("load",C)})))}p=g.getBoundingClientRect(),y.attr("width",p.width),y.attr("height",p.height)}return s?u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):u.attr("transform","translate(0, "+-p.height/2+")"),e.centerLabel&&u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:l,bbox:p,halfPadding:m,label:u}},"labelHelper"),Qn=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");o(Hl,"insertPolygonShape")});var Mtt,ave,sve=N(()=>{"use strict";iF();vt();zt();nF();Mtt=o(async(t,e)=>{e.useHtmlLabels||me().flowchart.htmlLabels||(e.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:a}=await Di(t,e,"node "+e.classes,!0);Y.info("Classes = ",e.classes);let s=n.insert("rect",":first-child");return s.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Qn(e,s),e.intersect=function(l){return In.rect(e,l)},n},"note"),ave=Mtt});function aF(t,e,r,n){let i=[],a=o(l=>{i.push(l,0)},"addBorder"),s=o(l=>{i.push(0,l)},"skipBorder");e.includes("t")?(Y.debug("add top border"),a(r)):s(r),e.includes("r")?(Y.debug("add right border"),a(n)):s(n),e.includes("b")?(Y.debug("add bottom border"),a(r)):s(r),e.includes("l")?(Y.debug("add left border"),a(n)):s(n),t.attr("stroke-dasharray",i.join(" "))}var ove,yo,lve,Itt,Ott,Ptt,Btt,Ftt,$tt,ztt,Gtt,Vtt,Utt,Htt,Wtt,qtt,Ytt,Xtt,jtt,Ktt,Qtt,Ztt,cve,Jtt,ert,uve,aC,sF,hve,fve=N(()=>{"use strict";dr();zt();gr();vt();Yye();rC();nF();sve();iF();ove=o(t=>t?" "+t:"","formatClass"),yo=o((t,e)=>`${e||"node default"}${ove(t.classes)} ${ove(t.class)}`,"getClassesFromNode"),lve=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=i+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];Y.info("Question main (Circle)");let u=Hl(r,s,s,l);return u.attr("style",e.style),Qn(e,u),e.intersect=function(h){return Y.warn("Intersect called"),In.polygon(e,l,h)},r},"question"),Itt=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",i.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(s){return In.circle(e,14,s)},r},"choice"),Ott=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=4,a=n.height+e.padding,s=a/i,l=n.width+2*s+e.padding,u=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],h=Hl(r,l,a,u);return h.attr("style",e.style),Qn(e,h),e.intersect=function(f){return In.polygon(e,u,f)},r},"hexagon"),Ptt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,void 0,!0),i=2,a=n.height+2*e.padding,s=a/i,l=n.width+2*s+e.padding,u=qye(e.directions,n,e),h=Hl(r,l,a,u);return h.attr("style",e.style),Qn(e,h),e.intersect=function(f){return In.polygon(e,u,f)},r},"block_arrow"),Btt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return Hl(r,i,a,s).attr("style",e.style),e.width=i+a,e.height=a,e.intersect=function(u){return In.polygon(e,s,u)},r},"rect_left_inv_arrow"),Ftt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"lean_right"),$tt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"lean_left"),ztt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"trapezoid"),Gtt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"inv_trapezoid"),Vtt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"rect_right_inv_arrow"),Utt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=i/2,s=a/(2.5+i/50),l=n.height+s+e.padding,u="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-l,h=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",e.style).attr("d",u).attr("transform","translate("+-i/2+","+-(l/2+s)+")");return Qn(e,h),e.intersect=function(f){let d=In.rect(e,f),p=d.x-e.x;if(a!=0&&(Math.abs(p)e.height/2-s)){let m=s*s*(1-p*p/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,f.y-e.y>0&&(m=-m),d.y+=m}return d},r},"cylinder"),Htt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Di(t,e,"node "+e.classes+" "+e.class,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(aF(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{Y.warn(`Unknown node property ${d}`)})}return Qn(e,a),e.intersect=function(f){return In.rect(e,f)},r},"rect"),Wtt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Di(t,e,"node "+e.classes,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(aF(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{Y.warn(`Unknown node property ${d}`)})}return Qn(e,a),e.intersect=function(f){return In.rect(e,f)},r},"composite"),qtt=o(async(t,e)=>{let{shapeSvg:r}=await Di(t,e,"label",!0);Y.trace("Classes = ",e.class);let n=r.insert("rect",":first-child"),i=0,a=0;if(n.attr("width",i).attr("height",a),r.attr("class","label edgeLabel"),e.props){let s=new Set(Object.keys(e.props));e.props.borders&&(aF(n,e.props.borders,i,a),s.delete("borders")),s.forEach(l=>{Y.warn(`Unknown node property ${l}`)})}return Qn(e,n),e.intersect=function(s){return In.rect(e,s)},r},"labelRect");o(aF,"applyNodePropertyBorders");Ytt=o((t,e)=>{let r;e.classes?r="node "+e.classes:r="node default";let n=t.insert("g").attr("class",r).attr("id",e.domId||e.id),i=n.insert("rect",":first-child"),a=n.insert("line"),s=n.insert("g").attr("class","label"),l=e.labelText.flat?e.labelText.flat():e.labelText,u="";typeof l=="object"?u=l[0]:u=l,Y.info("Label text abc79",u,l,typeof l=="object");let h=s.node().appendChild(vs(u,e.labelStyle,!0,!0)),f={width:0,height:0};if(fr(me().flowchart.htmlLabels)){let y=h.children[0],v=Ge(h);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}Y.info("Text 2",l);let d=l.slice(1,l.length),p=h.getBBox(),m=s.node().appendChild(vs(d.join?d.join("
    "):d,e.labelStyle,!0,!0));if(fr(me().flowchart.htmlLabels)){let y=m.children[0],v=Ge(m);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}let g=e.padding/2;return Ge(m).attr("transform","translate( "+(f.width>p.width?0:(p.width-f.width)/2)+", "+(p.height+g+5)+")"),Ge(h).attr("transform","translate( "+(f.width{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.height+e.padding,a=n.width+i/4+e.padding,s=r.insert("rect",":first-child").attr("style",e.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return Qn(e,s),e.intersect=function(l){return In.rect(e,l)},r},"stadium"),jtt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Di(t,e,yo(e,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),Y.info("Circle main"),Qn(e,a),e.intersect=function(s){return Y.info("Circle intersect",e,n.width/2+i,s),In.circle(e,n.width/2+i,s)},r},"circle"),Ktt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Di(t,e,yo(e,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),u=s.insert("circle");return s.attr("class",e.class),l.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i+a).attr("width",n.width+e.padding+a*2).attr("height",n.height+e.padding+a*2),u.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),Y.info("DoubleCircle main"),Qn(e,l),e.intersect=function(h){return Y.info("DoubleCircle intersect",e,n.width/2+i+a,h),In.circle(e,n.width/2+i+a,h)},r},"doublecircle"),Qtt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Di(t,e,yo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"subroutine"),Ztt=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),Qn(e,n),e.intersect=function(i){return In.circle(e,7,i)},r},"start"),cve=o((t,e,r)=>{let n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;r==="LR"&&(i=10,a=70);let s=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return Qn(e,s),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(l){return In.rect(e,l)},n},"forkJoin"),Jtt=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),Qn(e,i),e.intersect=function(a){return In.circle(e,7,a)},r},"end"),ert=o((t,e)=>{let r=e.padding/2,n=4,i=8,a;e.classes?a="node "+e.classes:a="node default";let s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),l=s.insert("rect",":first-child"),u=s.insert("line"),h=s.insert("line"),f=0,d=n,p=s.insert("g").attr("class","label"),m=0,g=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xAB"+e.classData.annotations[0]+"\xBB":"",v=p.node().appendChild(vs(y,e.labelStyle,!0,!0)),x=v.getBBox();if(fr(me().flowchart.htmlLabels)){let S=v.children[0],_=Ge(v);x=S.getBoundingClientRect(),_.attr("width",x.width),_.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+n,f+=x.width);let b=e.classData.label;e.classData.type!==void 0&&e.classData.type!==""&&(me().flowchart.htmlLabels?b+="<"+e.classData.type+">":b+="<"+e.classData.type+">");let w=p.node().appendChild(vs(b,e.labelStyle,!0,!0));Ge(w).attr("class","classTitle");let C=w.getBBox();if(fr(me().flowchart.htmlLabels)){let S=w.children[0],_=Ge(w);C=S.getBoundingClientRect(),_.attr("width",C.width),_.attr("height",C.height)}d+=C.height+n,C.width>f&&(f=C.width);let T=[];e.classData.members.forEach(S=>{let _=S.getDisplayDetails(),I=_.displayText;me().flowchart.htmlLabels&&(I=I.replace(//g,">"));let D=p.node().appendChild(vs(I,_.cssStyle?_.cssStyle:e.labelStyle,!0,!0)),k=D.getBBox();if(fr(me().flowchart.htmlLabels)){let L=D.children[0],R=Ge(D);k=L.getBoundingClientRect(),R.attr("width",k.width),R.attr("height",k.height)}k.width>f&&(f=k.width),d+=k.height+n,T.push(D)}),d+=i;let E=[];if(e.classData.methods.forEach(S=>{let _=S.getDisplayDetails(),I=_.displayText;me().flowchart.htmlLabels&&(I=I.replace(//g,">"));let D=p.node().appendChild(vs(I,_.cssStyle?_.cssStyle:e.labelStyle,!0,!0)),k=D.getBBox();if(fr(me().flowchart.htmlLabels)){let L=D.children[0],R=Ge(D);k=L.getBoundingClientRect(),R.attr("width",k.width),R.attr("height",k.height)}k.width>f&&(f=k.width),d+=k.height+n,E.push(D)}),d+=i,g){let S=(f-x.width)/2;Ge(v).attr("transform","translate( "+(-1*f/2+S)+", "+-1*d/2+")"),m=x.height+n}let A=(f-C.width)/2;return Ge(w).attr("transform","translate( "+(-1*f/2+A)+", "+(-1*d/2+m)+")"),m+=C.height+n,u.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,T.forEach(S=>{Ge(S).attr("transform","translate( "+-f/2+", "+(-1*d/2+m+i/2)+")");let _=S?.getBBox();m+=(_?.height??0)+n}),m+=i,h.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,E.forEach(S=>{Ge(S).attr("transform","translate( "+-f/2+", "+(-1*d/2+m)+")");let _=S?.getBBox();m+=(_?.height??0)+n}),l.attr("style",e.style).attr("class","outer title-state").attr("x",-f/2-r).attr("y",-(d/2)-r).attr("width",f+e.padding).attr("height",d+e.padding),Qn(e,l),e.intersect=function(S){return In.rect(e,S)},s},"class_box"),uve={rhombus:lve,composite:Wtt,question:lve,rect:Htt,labelRect:qtt,rectWithTitle:Ytt,choice:Itt,circle:jtt,doublecircle:Ktt,stadium:Xtt,hexagon:Ott,block_arrow:Ptt,rect_left_inv_arrow:Btt,lean_right:Ftt,lean_left:$tt,trapezoid:ztt,inv_trapezoid:Gtt,rect_right_inv_arrow:Vtt,cylinder:Utt,start:Ztt,end:Jtt,note:ave,subroutine:Qtt,fork:cve,join:cve,class_box:ert},aC={},sF=o(async(t,e,r)=>{let n,i;if(e.link){let a;me().securityLevel==="sandbox"?a="_top":e.linkTarget&&(a=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",a),i=await uve[e.shape](n,e,r)}else i=await uve[e.shape](t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),aC[e.id]=n,e.haveCallback&&aC[e.id].attr("class",aC[e.id].attr("class")+" clickable"),n},"insertNode"),hve=o(t=>{let e=aC[t.id];Y.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});function dve(t,e,r=!1){let n=t,i="default";(n?.classes?.length||0)>0&&(i=(n?.classes??[]).join(" ")),i=i+" flowchart-label";let a=0,s="",l;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}let u=Y9(n?.styles??[]),h=n.label,f=n.size??{width:0,height:0,x:0,y:0};return{labelStyle:u.labelStyle,shape:s,labelText:h,rx:a,ry:a,class:i,style:u.style,id:n.id,directions:n.directions,width:f.width,height:f.height,x:f.x,y:f.y,positioned:r,intersect:void 0,type:n.type,padding:l??cr()?.block?.padding??0}}async function trt(t,e,r){let n=dve(e,r,!1);if(n.type==="group")return;let i=cr(),a=await sF(t,n,{config:i}),s=a.node().getBBox(),l=r.getBlock(n.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}async function rrt(t,e,r){let n=dve(e,r,!0);if(r.getBlock(n.id).type!=="space"){let a=cr();await sF(t,n,{config:a}),e.intersect=n?.intersect,hve(n)}}async function oF(t,e,r,n){for(let i of e)await n(t,i,r),i.children&&await oF(t,i.children,r,n)}async function pve(t,e,r){await oF(t,e,r,trt)}async function mve(t,e,r){await oF(t,e,r,rrt)}async function gve(t,e,r,n,i){let a=new sn({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(let s of e)if(s.start&&s.end){let l=n.getBlock(s.start),u=n.getBlock(s.end);if(l?.size&&u?.size){let h=l.size,f=u.size,d=[{x:h.x,y:h.y},{x:h.x+(f.x-h.x)/2,y:h.y+(f.y-h.y)/2},{x:f.x,y:f.y}];Hye(t,{v:s.start,w:s.end,name:s.id},{...s,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",a,i),s.label&&(await Vye(t,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),Uye({...s,x:d[1].x,y:d[1].y},{originalPath:d}))}}}var yve=N(()=>{"use strict";Vo();ji();Wye();fve();ir();o(dve,"getNodeFromBlock");o(trt,"calculateBlockSize");o(rrt,"insertBlockPositioned");o(oF,"performOperations");o(pve,"calculateBlockSizes");o(mve,"insertBlocks");o(gve,"insertEdges")});var nrt,irt,vve,xve=N(()=>{"use strict";dr();ji();Nye();vt();Ei();Pye();yve();nrt=o(function(t,e){return e.db.getClasses()},"getClasses"),irt=o(async function(t,e,r,n){let{securityLevel:i,block:a}=cr(),s=n.db,l;i==="sandbox"&&(l=Ge("#i"+e));let u=i==="sandbox"?Ge(l.nodes()[0].contentDocument.body):Ge("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):Ge(`[id="${e}"]`);Rye(h,["point","circle","cross"],n.type,e);let d=s.getBlocks(),p=s.getBlocksFlat(),m=s.getEdges(),g=h.insert("g").attr("class","block");await pve(g,d,s);let y=Oye(s);if(await mve(g,d,s),await gve(g,m,p,s,e),y){let v=y,x=Math.max(1,Math.round(.125*(v.width/v.height))),b=v.height+x+10,w=v.width+10,{useMaxWidth:C}=a;vn(h,b,w,!!C),Y.debug("Here Bounds",y,v),h.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),vve={draw:irt,getClasses:nrt}});var bve={};hr(bve,{diagram:()=>art});var art,wve=N(()=>{"use strict";wye();_ye();Lye();xve();art={parser:bye,db:Aye,renderer:vve,styles:Dye}});var lF,cF,v4,Eve,uF,Ha,Zc,x4,Sve,crt,b4,Cve,Ave,_ve,Dve,Lve,sC,Ff,oC=N(()=>{"use strict";lF={L:"left",R:"right",T:"top",B:"bottom"},cF={L:o(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:o(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:o(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:o(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},v4={L:o((t,e)=>t-e+2,"L"),R:o((t,e)=>t-2,"R"),T:o((t,e)=>t-e+2,"T"),B:o((t,e)=>t-2,"B")},Eve=o(function(t){return Ha(t)?t==="L"?"R":"L":t==="T"?"B":"T"},"getOppositeArchitectureDirection"),uF=o(function(t){let e=t;return e==="L"||e==="R"||e==="T"||e==="B"},"isArchitectureDirection"),Ha=o(function(t){let e=t;return e==="L"||e==="R"},"isArchitectureDirectionX"),Zc=o(function(t){let e=t;return e==="T"||e==="B"},"isArchitectureDirectionY"),x4=o(function(t,e){let r=Ha(t)&&Zc(e),n=Zc(t)&&Ha(e);return r||n},"isArchitectureDirectionXY"),Sve=o(function(t){let e=t[0],r=t[1],n=Ha(e)&&Zc(r),i=Zc(e)&&Ha(r);return n||i},"isArchitecturePairXY"),crt=o(function(t){return t!=="LL"&&t!=="RR"&&t!=="TT"&&t!=="BB"},"isValidArchitectureDirectionPair"),b4=o(function(t,e){let r=`${t}${e}`;return crt(r)?r:void 0},"getArchitectureDirectionPair"),Cve=o(function([t,e],r){let n=r[0],i=r[1];return Ha(n)?Zc(i)?[t+(n==="L"?-1:1),e+(i==="T"?1:-1)]:[t+(n==="L"?-1:1),e]:Ha(i)?[t+(i==="L"?1:-1),e+(n==="T"?1:-1)]:[t,e+(n==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),Ave=o(function(t){return t==="LT"||t==="TL"?[1,1]:t==="BL"||t==="LB"?[1,-1]:t==="BR"||t==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),_ve=o(function(t,e){return x4(t,e)?"bend":Ha(t)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),Dve=o(function(t){return t.type==="service"},"isArchitectureService"),Lve=o(function(t){return t.type==="junction"},"isArchitectureJunction"),sC=o(t=>t.data(),"edgeData"),Ff=o(t=>t.data(),"nodeData")});function Li(t){let e=me().architecture;return e?.[t]?e[t]:Rve[t]}var Rve,vr,urt,hrt,frt,drt,prt,mrt,hF,grt,yrt,vrt,xrt,brt,wrt,Trt,Qp,w4=N(()=>{"use strict";Ya();zt();s6();mi();oC();Rve=or.architecture,vr=new pf(()=>({nodes:{},groups:{},edges:[],registeredIds:{},config:Rve,dataStructures:void 0,elements:{}})),urt=o(()=>{vr.reset(),Ar()},"clear"),hrt=o(function({id:t,icon:e,in:r,title:n,iconText:i}){if(vr.records.registeredIds[t]!==void 0)throw new Error(`The service id [${t}] is already in use by another ${vr.records.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The service [${t}] cannot be placed within itself`);if(vr.records.registeredIds[r]===void 0)throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if(vr.records.registeredIds[r]==="node")throw new Error(`The service [${t}]'s parent is not a group`)}vr.records.registeredIds[t]="node",vr.records.nodes[t]={id:t,type:"service",icon:e,iconText:i,title:n,edges:[],in:r}},"addService"),frt=o(()=>Object.values(vr.records.nodes).filter(Dve),"getServices"),drt=o(function({id:t,in:e}){vr.records.registeredIds[t]="node",vr.records.nodes[t]={id:t,type:"junction",edges:[],in:e}},"addJunction"),prt=o(()=>Object.values(vr.records.nodes).filter(Lve),"getJunctions"),mrt=o(()=>Object.values(vr.records.nodes),"getNodes"),hF=o(t=>vr.records.nodes[t],"getNode"),grt=o(function({id:t,icon:e,in:r,title:n}){if(vr.records.registeredIds[t]!==void 0)throw new Error(`The group id [${t}] is already in use by another ${vr.records.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The group [${t}] cannot be placed within itself`);if(vr.records.registeredIds[r]===void 0)throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if(vr.records.registeredIds[r]==="node")throw new Error(`The group [${t}]'s parent is not a group`)}vr.records.registeredIds[t]="group",vr.records.groups[t]={id:t,icon:e,title:n,in:r}},"addGroup"),yrt=o(()=>Object.values(vr.records.groups),"getGroups"),vrt=o(function({lhsId:t,rhsId:e,lhsDir:r,rhsDir:n,lhsInto:i,rhsInto:a,lhsGroup:s,rhsGroup:l,title:u}){if(!uF(r))throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${r}`);if(!uF(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${n}`);if(vr.records.nodes[t]===void 0&&vr.records.groups[t]===void 0)throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(vr.records.nodes[e]===void 0&&vr.records.groups[t]===void 0)throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);let h=vr.records.nodes[t].in,f=vr.records.nodes[e].in;if(s&&h&&f&&h==f)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(l&&h&&f&&h==f)throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let d={lhsId:t,lhsDir:r,lhsInto:i,lhsGroup:s,rhsId:e,rhsDir:n,rhsInto:a,rhsGroup:l,title:u};vr.records.edges.push(d),vr.records.nodes[t]&&vr.records.nodes[e]&&(vr.records.nodes[t].edges.push(vr.records.edges[vr.records.edges.length-1]),vr.records.nodes[e].edges.push(vr.records.edges[vr.records.edges.length-1]))},"addEdge"),xrt=o(()=>vr.records.edges,"getEdges"),brt=o(()=>{if(vr.records.dataStructures===void 0){let t={},e=Object.entries(vr.records.nodes).reduce((l,[u,h])=>(l[u]=h.edges.reduce((f,d)=>{let p=hF(d.lhsId)?.in,m=hF(d.rhsId)?.in;if(p&&m&&p!==m){let g=_ve(d.lhsDir,d.rhsDir);g!=="bend"&&(t[p]??={},t[p][m]=g,t[m]??={},t[m][p]=g)}if(d.lhsId===u){let g=b4(d.lhsDir,d.rhsDir);g&&(f[g]=d.rhsId)}else{let g=b4(d.rhsDir,d.lhsDir);g&&(f[g]=d.lhsId)}return f},{}),l),{}),r=Object.keys(e)[0],n={[r]:1},i=Object.keys(e).reduce((l,u)=>u===r?l:{...l,[u]:1},{}),a=o(l=>{let u={[l]:[0,0]},h=[l];for(;h.length>0;){let f=h.shift();if(f){n[f]=1,delete i[f];let d=e[f],[p,m]=u[f];Object.entries(d).forEach(([g,y])=>{n[y]||(u[y]=Cve([p,m],g),h.push(y))})}}return u},"BFS"),s=[a(r)];for(;Object.keys(i).length>0;)s.push(a(Object.keys(i)[0]));vr.records.dataStructures={adjList:e,spatialMaps:s,groupAlignments:t}}return vr.records.dataStructures},"getDataStructures"),wrt=o((t,e)=>{vr.records.elements[t]=e},"setElementForId"),Trt=o(t=>vr.records.elements[t],"getElementById"),Qp={clear:urt,setDiagramTitle:$r,getDiagramTitle:Ir,setAccTitle:Lr,getAccTitle:Rr,setAccDescription:Nr,getAccDescription:Mr,addService:hrt,getServices:frt,addJunction:drt,getJunctions:prt,getNodes:mrt,getNode:hF,addGroup:grt,getGroups:yrt,addEdge:vrt,getEdges:xrt,setElementForId:wrt,getElementById:Trt,getDataStructures:brt};o(Li,"getConfigField")});var krt,Nve,Mve=N(()=>{"use strict";kp();vt();T1();w4();krt=o((t,e)=>{$c(t,e),t.groups.map(e.addGroup),t.services.map(r=>e.addService({...r,type:"service"})),t.junctions.map(r=>e.addJunction({...r,type:"junction"})),t.edges.map(e.addEdge)},"populateDb"),Nve={parse:o(async t=>{let e=await uo("architecture",t);Y.debug(e),krt(e,Qp)},"parse")}});var Ert,Ive,Ove=N(()=>{"use strict";Ert=o(t=>` + node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{X.debug("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(!znt(e,a)&&!i){let s=Gnt(e,n,a),l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),Gbe=o(function(t,e,r,n,i,a,s){let l=r.points;X.debug("abc88 InsertEdge: edge=",r,"e=",e);let u=!1,h=a.node(e.v);var f=a.node(e.w);f?.intersect&&h?.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(h.intersect(l[0])),l.push(f.intersect(l[l.length-1]))),r.toCluster&&(X.debug("to cluster abc88",n[r.toCluster]),l=Fbe(r.points,n[r.toCluster].node),u=!0),r.fromCluster&&(X.debug("from cluster abc88",n[r.fromCluster]),l=Fbe(l.reverse(),n[r.fromCluster].node).reverse(),u=!0);let d=l.filter(S=>!Number.isNaN(S.y)),p=No;r.curve&&(i==="graph"||i==="flowchart")&&(p=r.curve);let{x:m,y:g}=hw(r),y=Cl().x(m).y(g).curve(p),v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}let x=t.append("path").attr("d",y(d)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(ge().flowchart.arrowMarkerAbsolute||ge().state.arrowMarkerAbsolute)&&(b=md(!0)),Pbe(x,r,b,s,i);let T={};return u&&(T.updatedPath=l),T.originalPath=r.points,T},"insertEdge")});var Vnt,Ube,Hbe=N(()=>{"use strict";Vnt=o(t=>{let e=new Set;for(let r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r);break}return e},"expandAndDeduplicateDirections"),Ube=o((t,e,r)=>{let n=Vnt(t),i=2,a=e.height+2*r.padding,s=a/i,l=e.width+2*s+r.padding,u=r.padding/2;return n.has("right")&&n.has("left")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:s,y:0},{x:l/2,y:2*u},{x:l-s,y:0},{x:l,y:0},{x:l,y:-a/3},{x:l+2*u,y:-a/2},{x:l,y:-2*a/3},{x:l,y:-a},{x:l-s,y:-a},{x:l/2,y:-a-2*u},{x:s,y:-a},{x:0,y:-a},{x:0,y:-2*a/3},{x:-2*u,y:-a/2},{x:0,y:-a/3}]:n.has("right")&&n.has("left")&&n.has("up")?[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}]:n.has("right")&&n.has("left")&&n.has("down")?[{x:0,y:0},{x:s,y:-a},{x:l-s,y:-a},{x:l,y:0}]:n.has("right")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:l,y:-s},{x:l,y:-a+s},{x:0,y:-a}]:n.has("left")&&n.has("up")&&n.has("down")?[{x:l,y:0},{x:0,y:-s},{x:0,y:-a+s},{x:l,y:-a}]:n.has("right")&&n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")&&n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:n.has("right")&&n.has("up")?[{x:0,y:0},{x:l,y:-s},{x:0,y:-a}]:n.has("right")&&n.has("down")?[{x:0,y:0},{x:l,y:0},{x:0,y:-a}]:n.has("left")&&n.has("up")?[{x:l,y:0},{x:0,y:-s},{x:l,y:-a}]:n.has("left")&&n.has("down")?[{x:l,y:0},{x:0,y:0},{x:l,y:-a}]:n.has("right")?[{x:s,y:-u},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a+u}]:n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")?[{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u}]:n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:[{x:0,y:0}]},"getArrowPoints")});function Unt(t,e){return t.intersect(e)}var qbe,Wbe=N(()=>{"use strict";o(Unt,"intersectNode");qbe=Unt});function Hnt(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(Hnt,"intersectEllipse");MC=Hnt});function qnt(t,e,r){return MC(t,e,e,r)}var Ybe,Xbe=N(()=>{"use strict";vz();o(qnt,"intersectCircle");Ybe=qnt});function Wnt(t,e,r,n){var i,a,s,l,u,h,f,d,p,m,g,y,v,x,b;if(i=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&jbe(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,f=a*t.x+l*t.y+h,d=a*e.x+l*e.y+h,!(f!==0&&d!==0&&jbe(f,d))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function jbe(t,e){return t*e>0}var Kbe,Qbe=N(()=>{"use strict";o(Wnt,"intersectLine");o(jbe,"sameSign");Kbe=Wnt});function Ynt(t,e,r){var n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(g){s=Math.min(s,g.x),l=Math.min(l,g.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));for(var u=n-t.width/2-s,h=i-t.height/2-l,f=0;f1&&a.sort(function(g,y){var v=g.x-r.x,x=g.y-r.y,b=Math.sqrt(v*v+x*x),T=y.x-r.x,S=y.y-r.y,w=Math.sqrt(T*T+S*S);return b{"use strict";Qbe();Zbe=Ynt;o(Ynt,"intersectPolygon")});var Xnt,e4e,t4e=N(()=>{"use strict";Xnt=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),e4e=Xnt});var $n,xz=N(()=>{"use strict";Wbe();Xbe();vz();Jbe();t4e();$n={node:qbe,circle:Ybe,ellipse:MC,polygon:Zbe,rect:e4e}});function Wl(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var Li,ti,bz=N(()=>{"use strict";RC();zo();Xt();yr();gr();tr();Li=o(async(t,e,r,n)=>{let i=ge(),a,s=e.useHtmlLabels||vr(i.flowchart.htmlLabels);r?a=r:a="node default";let l=t.insert("g").attr("class",a).attr("id",e.domId||e.id),u=l.insert("g").attr("class","label").attr("style",e.labelStyle),h;e.labelText===void 0?h="":h=typeof e.labelText=="string"?e.labelText:e.labelText[0];let f=u.node(),d;e.labelType==="markdown"?d=di(u,sr(Ji(h),i),{useHtmlLabels:s,width:e.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):d=f.appendChild(await ks(sr(Ji(h),i),e.labelStyle,!1,n));let p=d.getBBox(),m=e.padding/2;if(vr(i.flowchart.htmlLabels)){let g=d.children[0],y=qe(d),v=g.getElementsByTagName("img");if(v){let x=h.replace(/]*>/g,"").trim()==="";await Promise.all([...v].map(b=>new Promise(T=>{function S(){if(b.style.display="flex",b.style.flexDirection="column",x){let w=i.fontSize?i.fontSize:window.getComputedStyle(document.body).fontSize,A=parseInt(w,10)*5+"px";b.style.minWidth=A,b.style.maxWidth=A}else b.style.width="100%";T(b)}o(S,"setupImage"),setTimeout(()=>{b.complete&&S()}),b.addEventListener("error",S),b.addEventListener("load",S)})))}p=g.getBoundingClientRect(),y.attr("width",p.width),y.attr("height",p.height)}return s?u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):u.attr("transform","translate(0, "+-p.height/2+")"),e.centerLabel&&u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:l,bbox:p,halfPadding:m,label:u}},"labelHelper"),ti=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");o(Wl,"insertPolygonShape")});var jnt,r4e,n4e=N(()=>{"use strict";bz();pt();Xt();xz();jnt=o(async(t,e)=>{e.useHtmlLabels||ge().flowchart.htmlLabels||(e.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:a}=await Li(t,e,"node "+e.classes,!0);X.info("Classes = ",e.classes);let s=n.insert("rect",":first-child");return s.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),ti(e,s),e.intersect=function(l){return $n.rect(e,l)},n},"note"),r4e=jnt});function Tz(t,e,r,n){let i=[],a=o(l=>{i.push(l,0)},"addBorder"),s=o(l=>{i.push(0,l)},"skipBorder");e.includes("t")?(X.debug("add top border"),a(r)):s(r),e.includes("r")?(X.debug("add right border"),a(n)):s(n),e.includes("b")?(X.debug("add bottom border"),a(r)):s(r),e.includes("l")?(X.debug("add left border"),a(n)):s(n),t.attr("stroke-dasharray",i.join(" "))}var i4e,To,a4e,Knt,Qnt,Znt,Jnt,eit,tit,rit,nit,iit,ait,sit,oit,lit,cit,uit,hit,fit,dit,pit,s4e,mit,git,o4e,IC,wz,l4e,c4e=N(()=>{"use strict";yr();Xt();gr();pt();Hbe();RC();xz();n4e();bz();i4e=o(t=>t?" "+t:"","formatClass"),To=o((t,e)=>`${e||"node default"}${i4e(t.classes)} ${i4e(t.class)}`,"getClassesFromNode"),a4e=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=i+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];X.info("Question main (Circle)");let u=Wl(r,s,s,l);return u.attr("style",e.style),ti(e,u),e.intersect=function(h){return X.warn("Intersect called"),$n.polygon(e,l,h)},r},"question"),Knt=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",i.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(s){return $n.circle(e,14,s)},r},"choice"),Qnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=4,a=n.height+e.padding,s=a/i,l=n.width+2*s+e.padding,u=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],h=Wl(r,l,a,u);return h.attr("style",e.style),ti(e,h),e.intersect=function(f){return $n.polygon(e,u,f)},r},"hexagon"),Znt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,void 0,!0),i=2,a=n.height+2*e.padding,s=a/i,l=n.width+2*s+e.padding,u=Ube(e.directions,n,e),h=Wl(r,l,a,u);return h.attr("style",e.style),ti(e,h),e.intersect=function(f){return $n.polygon(e,u,f)},r},"block_arrow"),Jnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return Wl(r,i,a,s).attr("style",e.style),e.width=i+a,e.height=a,e.intersect=function(u){return $n.polygon(e,s,u)},r},"rect_left_inv_arrow"),eit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"lean_right"),tit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"lean_left"),rit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"trapezoid"),nit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"inv_trapezoid"),iit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"rect_right_inv_arrow"),ait=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=i/2,s=a/(2.5+i/50),l=n.height+s+e.padding,u="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-l,h=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",e.style).attr("d",u).attr("transform","translate("+-i/2+","+-(l/2+s)+")");return ti(e,h),e.intersect=function(f){let d=$n.rect(e,f),p=d.x-e.x;if(a!=0&&(Math.abs(p)e.height/2-s)){let m=s*s*(1-p*p/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,f.y-e.y>0&&(m=-m),d.y+=m}return d},r},"cylinder"),sit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,"node "+e.classes+" "+e.class,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(Tz(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{X.warn(`Unknown node property ${d}`)})}return ti(e,a),e.intersect=function(f){return $n.rect(e,f)},r},"rect"),oit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,"node "+e.classes,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(Tz(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{X.warn(`Unknown node property ${d}`)})}return ti(e,a),e.intersect=function(f){return $n.rect(e,f)},r},"composite"),lit=o(async(t,e)=>{let{shapeSvg:r}=await Li(t,e,"label",!0);X.trace("Classes = ",e.class);let n=r.insert("rect",":first-child"),i=0,a=0;if(n.attr("width",i).attr("height",a),r.attr("class","label edgeLabel"),e.props){let s=new Set(Object.keys(e.props));e.props.borders&&(Tz(n,e.props.borders,i,a),s.delete("borders")),s.forEach(l=>{X.warn(`Unknown node property ${l}`)})}return ti(e,n),e.intersect=function(s){return $n.rect(e,s)},r},"labelRect");o(Tz,"applyNodePropertyBorders");cit=o(async(t,e)=>{let r;e.classes?r="node "+e.classes:r="node default";let n=t.insert("g").attr("class",r).attr("id",e.domId||e.id),i=n.insert("rect",":first-child"),a=n.insert("line"),s=n.insert("g").attr("class","label"),l=e.labelText.flat?e.labelText.flat():e.labelText,u="";typeof l=="object"?u=l[0]:u=l,X.info("Label text abc79",u,l,typeof l=="object");let h=s.node().appendChild(await ks(u,e.labelStyle,!0,!0)),f={width:0,height:0};if(vr(ge().flowchart.htmlLabels)){let y=h.children[0],v=qe(h);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}X.info("Text 2",l);let d=l.slice(1,l.length),p=h.getBBox(),m=s.node().appendChild(await ks(d.join?d.join("
    "):d,e.labelStyle,!0,!0));if(vr(ge().flowchart.htmlLabels)){let y=m.children[0],v=qe(m);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}let g=e.padding/2;return qe(m).attr("transform","translate( "+(f.width>p.width?0:(p.width-f.width)/2)+", "+(p.height+g+5)+")"),qe(h).attr("transform","translate( "+(f.width{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.height+e.padding,a=n.width+i/4+e.padding,s=r.insert("rect",":first-child").attr("style",e.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return ti(e,s),e.intersect=function(l){return $n.rect(e,l)},r},"stadium"),hit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,To(e,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),X.info("Circle main"),ti(e,a),e.intersect=function(s){return X.info("Circle intersect",e,n.width/2+i,s),$n.circle(e,n.width/2+i,s)},r},"circle"),fit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,To(e,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),u=s.insert("circle");return s.attr("class",e.class),l.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i+a).attr("width",n.width+e.padding+a*2).attr("height",n.height+e.padding+a*2),u.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),X.info("DoubleCircle main"),ti(e,l),e.intersect=function(h){return X.info("DoubleCircle intersect",e,n.width/2+i+a,h),$n.circle(e,n.width/2+i+a,h)},r},"doublecircle"),dit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"subroutine"),pit=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),ti(e,n),e.intersect=function(i){return $n.circle(e,7,i)},r},"start"),s4e=o((t,e,r)=>{let n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;r==="LR"&&(i=10,a=70);let s=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return ti(e,s),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(l){return $n.rect(e,l)},n},"forkJoin"),mit=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),ti(e,i),e.intersect=function(a){return $n.circle(e,7,a)},r},"end"),git=o(async(t,e)=>{let r=e.padding/2,n=4,i=8,a;e.classes?a="node "+e.classes:a="node default";let s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),l=s.insert("rect",":first-child"),u=s.insert("line"),h=s.insert("line"),f=0,d=n,p=s.insert("g").attr("class","label"),m=0,g=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xAB"+e.classData.annotations[0]+"\xBB":"",v=p.node().appendChild(await ks(y,e.labelStyle,!0,!0)),x=v.getBBox();if(vr(ge().flowchart.htmlLabels)){let C=v.children[0],R=qe(v);x=C.getBoundingClientRect(),R.attr("width",x.width),R.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+n,f+=x.width);let b=e.classData.label;e.classData.type!==void 0&&e.classData.type!==""&&(ge().flowchart.htmlLabels?b+="<"+e.classData.type+">":b+="<"+e.classData.type+">");let T=p.node().appendChild(await ks(b,e.labelStyle,!0,!0));qe(T).attr("class","classTitle");let S=T.getBBox();if(vr(ge().flowchart.htmlLabels)){let C=T.children[0],R=qe(T);S=C.getBoundingClientRect(),R.attr("width",S.width),R.attr("height",S.height)}d+=S.height+n,S.width>f&&(f=S.width);let w=[];e.classData.members.forEach(async C=>{let R=C.getDisplayDetails(),I=R.displayText;ge().flowchart.htmlLabels&&(I=I.replace(//g,">"));let L=p.node().appendChild(await ks(I,R.cssStyle?R.cssStyle:e.labelStyle,!0,!0)),E=L.getBBox();if(vr(ge().flowchart.htmlLabels)){let D=L.children[0],_=qe(L);E=D.getBoundingClientRect(),_.attr("width",E.width),_.attr("height",E.height)}E.width>f&&(f=E.width),d+=E.height+n,w.push(L)}),d+=i;let k=[];if(e.classData.methods.forEach(async C=>{let R=C.getDisplayDetails(),I=R.displayText;ge().flowchart.htmlLabels&&(I=I.replace(//g,">"));let L=p.node().appendChild(await ks(I,R.cssStyle?R.cssStyle:e.labelStyle,!0,!0)),E=L.getBBox();if(vr(ge().flowchart.htmlLabels)){let D=L.children[0],_=qe(L);E=D.getBoundingClientRect(),_.attr("width",E.width),_.attr("height",E.height)}E.width>f&&(f=E.width),d+=E.height+n,k.push(L)}),d+=i,g){let C=(f-x.width)/2;qe(v).attr("transform","translate( "+(-1*f/2+C)+", "+-1*d/2+")"),m=x.height+n}let A=(f-S.width)/2;return qe(T).attr("transform","translate( "+(-1*f/2+A)+", "+(-1*d/2+m)+")"),m+=S.height+n,u.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,w.forEach(C=>{qe(C).attr("transform","translate( "+-f/2+", "+(-1*d/2+m+i/2)+")");let R=C?.getBBox();m+=(R?.height??0)+n}),m+=i,h.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,k.forEach(C=>{qe(C).attr("transform","translate( "+-f/2+", "+(-1*d/2+m)+")");let R=C?.getBBox();m+=(R?.height??0)+n}),l.attr("style",e.style).attr("class","outer title-state").attr("x",-f/2-r).attr("y",-(d/2)-r).attr("width",f+e.padding).attr("height",d+e.padding),ti(e,l),e.intersect=function(C){return $n.rect(e,C)},s},"class_box"),o4e={rhombus:a4e,composite:oit,question:a4e,rect:sit,labelRect:lit,rectWithTitle:cit,choice:Knt,circle:hit,doublecircle:fit,stadium:uit,hexagon:Qnt,block_arrow:Znt,rect_left_inv_arrow:Jnt,lean_right:eit,lean_left:tit,trapezoid:rit,inv_trapezoid:nit,rect_right_inv_arrow:iit,cylinder:ait,start:pit,end:mit,note:r4e,subroutine:dit,fork:s4e,join:s4e,class_box:git},IC={},wz=o(async(t,e,r)=>{let n,i;if(e.link){let a;ge().securityLevel==="sandbox"?a="_top":e.linkTarget&&(a=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",a),i=await o4e[e.shape](n,e,r)}else i=await o4e[e.shape](t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),IC[e.id]=n,e.haveCallback&&IC[e.id].attr("class",IC[e.id].attr("class")+" clickable"),n},"insertNode"),l4e=o(t=>{let e=IC[t.id];X.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});function u4e(t,e,r=!1){let n=t,i="default";(n?.classes?.length||0)>0&&(i=(n?.classes??[]).join(" ")),i=i+" flowchart-label";let a=0,s="",l;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}let u=zL(n?.styles??[]),h=n.label,f=n.size??{width:0,height:0,x:0,y:0};return{labelStyle:u.labelStyle,shape:s,labelText:h,rx:a,ry:a,class:i,style:u.style,id:n.id,directions:n.directions,width:f.width,height:f.height,x:f.x,y:f.y,positioned:r,intersect:void 0,type:n.type,padding:l??Qt()?.block?.padding??0}}async function yit(t,e,r){let n=u4e(e,r,!1);if(n.type==="group")return;let i=Qt(),a=await wz(t,n,{config:i}),s=a.node().getBBox(),l=r.getBlock(n.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}async function vit(t,e,r){let n=u4e(e,r,!0);if(r.getBlock(n.id).type!=="space"){let a=Qt();await wz(t,n,{config:a}),e.intersect=n?.intersect,l4e(n)}}async function kz(t,e,r,n){for(let i of e)await n(t,i,r),i.children&&await kz(t,i.children,r,n)}async function h4e(t,e,r){await kz(t,e,r,yit)}async function f4e(t,e,r){await kz(t,e,r,vit)}async function d4e(t,e,r,n,i){let a=new cn({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(let s of e)if(s.start&&s.end){let l=n.getBlock(s.start),u=n.getBlock(s.end);if(l?.size&&u?.size){let h=l.size,f=u.size,d=[{x:h.x,y:h.y},{x:h.x+(f.x-h.x)/2,y:h.y+(f.y-h.y)/2},{x:f.x,y:f.y}];Gbe(t,{v:s.start,w:s.end,name:s.id},{...s,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",a,i),s.label&&(await $be(t,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),zbe({...s,x:d[1].x,y:d[1].y},{originalPath:d}))}}}var p4e=N(()=>{"use strict";qo();qn();Vbe();c4e();tr();o(u4e,"getNodeFromBlock");o(yit,"calculateBlockSize");o(vit,"insertBlockPositioned");o(kz,"performOperations");o(h4e,"calculateBlockSizes");o(f4e,"insertBlocks");o(d4e,"insertEdges")});var xit,bit,m4e,g4e=N(()=>{"use strict";yr();qn();Dbe();pt();Ei();Mbe();p4e();xit=o(function(t,e){return e.db.getClasses()},"getClasses"),bit=o(async function(t,e,r,n){let{securityLevel:i,block:a}=Qt(),s=n.db,l;i==="sandbox"&&(l=qe("#i"+e));let u=i==="sandbox"?qe(l.nodes()[0].contentDocument.body):qe("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):qe(`[id="${e}"]`);_be(h,["point","circle","cross"],n.type,e);let d=s.getBlocks(),p=s.getBlocksFlat(),m=s.getEdges(),g=h.insert("g").attr("class","block");await h4e(g,d,s);let y=Nbe(s);if(await f4e(g,d,s),await d4e(g,m,p,s,e),y){let v=y,x=Math.max(1,Math.round(.125*(v.width/v.height))),b=v.height+x+10,T=v.width+10,{useMaxWidth:S}=a;mn(h,b,T,!!S),X.debug("Here Bounds",y,v),h.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),m4e={draw:bit,getClasses:xit}});var y4e={};dr(y4e,{diagram:()=>Tit});var Tit,v4e=N(()=>{"use strict";vbe();Sbe();Abe();g4e();Tit={parser:ybe,db:Ebe,renderer:m4e,styles:Cbe}});var Ez,Sz,N4,T4e,Cz,Ya,nu,M4,w4e,Sit,I4,k4e,E4e,S4e,C4e,A4e,OC,td,PC=N(()=>{"use strict";Ez={L:"left",R:"right",T:"top",B:"bottom"},Sz={L:o(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:o(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:o(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:o(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},N4={L:o((t,e)=>t-e+2,"L"),R:o((t,e)=>t-2,"R"),T:o((t,e)=>t-e+2,"T"),B:o((t,e)=>t-2,"B")},T4e=o(function(t){return Ya(t)?t==="L"?"R":"L":t==="T"?"B":"T"},"getOppositeArchitectureDirection"),Cz=o(function(t){let e=t;return e==="L"||e==="R"||e==="T"||e==="B"},"isArchitectureDirection"),Ya=o(function(t){let e=t;return e==="L"||e==="R"},"isArchitectureDirectionX"),nu=o(function(t){let e=t;return e==="T"||e==="B"},"isArchitectureDirectionY"),M4=o(function(t,e){let r=Ya(t)&&nu(e),n=nu(t)&&Ya(e);return r||n},"isArchitectureDirectionXY"),w4e=o(function(t){let e=t[0],r=t[1],n=Ya(e)&&nu(r),i=nu(e)&&Ya(r);return n||i},"isArchitecturePairXY"),Sit=o(function(t){return t!=="LL"&&t!=="RR"&&t!=="TT"&&t!=="BB"},"isValidArchitectureDirectionPair"),I4=o(function(t,e){let r=`${t}${e}`;return Sit(r)?r:void 0},"getArchitectureDirectionPair"),k4e=o(function([t,e],r){let n=r[0],i=r[1];return Ya(n)?nu(i)?[t+(n==="L"?-1:1),e+(i==="T"?1:-1)]:[t+(n==="L"?-1:1),e]:Ya(i)?[t+(i==="L"?1:-1),e+(n==="T"?1:-1)]:[t,e+(n==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),E4e=o(function(t){return t==="LT"||t==="TL"?[1,1]:t==="BL"||t==="LB"?[1,-1]:t==="BR"||t==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),S4e=o(function(t,e){return M4(t,e)?"bend":Ya(t)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),C4e=o(function(t){return t.type==="service"},"isArchitectureService"),A4e=o(function(t){return t.type==="junction"},"isArchitectureJunction"),OC=o(t=>t.data(),"edgeData"),td=o(t=>t.data(),"nodeData")});var Cit,vy,Az=N(()=>{"use strict";qn();La();tr();ci();PC();Cit=ur.architecture,vy=class{constructor(){this.nodes={};this.groups={};this.edges=[];this.registeredIds={};this.elements={};this.setAccTitle=Rr;this.getAccTitle=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getAccDescription=Or;this.setAccDescription=Ir;this.clear()}static{o(this,"ArchitectureDB")}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},Sr()}addService({id:e,icon:r,in:n,title:i,iconText:a}){if(this.registeredIds[e]!==void 0)throw new Error(`The service id [${e}] is already in use by another ${this.registeredIds[e]}`);if(n!==void 0){if(e===n)throw new Error(`The service [${e}] cannot be placed within itself`);if(this.registeredIds[n]===void 0)throw new Error(`The service [${e}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds[n]==="node")throw new Error(`The service [${e}]'s parent is not a group`)}this.registeredIds[e]="node",this.nodes[e]={id:e,type:"service",icon:r,iconText:a,title:i,edges:[],in:n}}getServices(){return Object.values(this.nodes).filter(C4e)}addJunction({id:e,in:r}){this.registeredIds[e]="node",this.nodes[e]={id:e,type:"junction",edges:[],in:r}}getJunctions(){return Object.values(this.nodes).filter(A4e)}getNodes(){return Object.values(this.nodes)}getNode(e){return this.nodes[e]??null}addGroup({id:e,icon:r,in:n,title:i}){if(this.registeredIds?.[e]!==void 0)throw new Error(`The group id [${e}] is already in use by another ${this.registeredIds[e]}`);if(n!==void 0){if(e===n)throw new Error(`The group [${e}] cannot be placed within itself`);if(this.registeredIds?.[n]===void 0)throw new Error(`The group [${e}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds?.[n]==="node")throw new Error(`The group [${e}]'s parent is not a group`)}this.registeredIds[e]="group",this.groups[e]={id:e,icon:r,title:i,in:n}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:e,rhsId:r,lhsDir:n,rhsDir:i,lhsInto:a,rhsInto:s,lhsGroup:l,rhsGroup:u,title:h}){if(!Cz(n))throw new Error(`Invalid direction given for left hand side of edge ${e}--${r}. Expected (L,R,T,B) got ${String(n)}`);if(!Cz(i))throw new Error(`Invalid direction given for right hand side of edge ${e}--${r}. Expected (L,R,T,B) got ${String(i)}`);if(this.nodes[e]===void 0&&this.groups[e]===void 0)throw new Error(`The left-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(this.nodes[r]===void 0&&this.groups[r]===void 0)throw new Error(`The right-hand id [${r}] does not yet exist. Please create the service/group before declaring an edge to it.`);let f=this.nodes[e].in,d=this.nodes[r].in;if(l&&f&&d&&f==d)throw new Error(`The left-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(u&&f&&d&&f==d)throw new Error(`The right-hand id [${r}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let p={lhsId:e,lhsDir:n,lhsInto:a,lhsGroup:l,rhsId:r,rhsDir:i,rhsInto:s,rhsGroup:u,title:h};this.edges.push(p),this.nodes[e]&&this.nodes[r]&&(this.nodes[e].edges.push(this.edges[this.edges.length-1]),this.nodes[r].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(this.dataStructures===void 0){let e={},r=Object.entries(this.nodes).reduce((u,[h,f])=>(u[h]=f.edges.reduce((d,p)=>{let m=this.getNode(p.lhsId)?.in,g=this.getNode(p.rhsId)?.in;if(m&&g&&m!==g){let y=S4e(p.lhsDir,p.rhsDir);y!=="bend"&&(e[m]??={},e[m][g]=y,e[g]??={},e[g][m]=y)}if(p.lhsId===h){let y=I4(p.lhsDir,p.rhsDir);y&&(d[y]=p.rhsId)}else{let y=I4(p.rhsDir,p.lhsDir);y&&(d[y]=p.lhsId)}return d},{}),u),{}),n=Object.keys(r)[0],i={[n]:1},a=Object.keys(r).reduce((u,h)=>h===n?u:{...u,[h]:1},{}),s=o(u=>{let h={[u]:[0,0]},f=[u];for(;f.length>0;){let d=f.shift();if(d){i[d]=1,delete a[d];let p=r[d],[m,g]=h[d];Object.entries(p).forEach(([y,v])=>{i[v]||(h[v]=k4e([m,g],y),f.push(v))})}}return h},"BFS"),l=[s(n)];for(;Object.keys(a).length>0;)l.push(s(Object.keys(a)[0]));this.dataStructures={adjList:r,spatialMaps:l,groupAlignments:e}}return this.dataStructures}setElementForId(e,r){this.elements[e]=r}getElementById(e){return this.elements[e]}getConfig(){return Vn({...Cit,...Qt().architecture})}getConfigField(e){return this.getConfig()[e]}}});var Ait,_z,_4e=N(()=>{"use strict";Uf();pt();r0();Az();Ait=o((t,e)=>{nl(t,e),t.groups.map(r=>e.addGroup(r)),t.services.map(r=>e.addService({...r,type:"service"})),t.junctions.map(r=>e.addJunction({...r,type:"junction"})),t.edges.map(r=>e.addEdge(r))},"populateDb"),_z={parser:{yy:void 0},parse:o(async t=>{let e=await bs("architecture",t);X.debug(e);let r=_z.parser?.yy;if(!(r instanceof vy))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Ait(e,r)},"parse")}});var _it,D4e,L4e=N(()=>{"use strict";_it=o(t=>` .edge { stroke-width: ${t.archEdgeWidth}; stroke: ${t.archEdgeColor}; @@ -2551,20 +2732,43 @@ Expecting `+Z.join(", ")+", got '"+(this.terminals_[ie]||ie)+"'":Se="Parse error display: -webkit-box; -webkit-box-orient: vertical; } -`,"getStyles"),Ive=Ert});var dF=Mi((T4,fF)=>{"use strict";o(function(e,r){typeof T4=="object"&&typeof fF=="object"?fF.exports=r():typeof define=="function"&&define.amd?define([],r):typeof T4=="object"?T4.layoutBase=r():e.layoutBase=r()},"webpackUniversalModuleDefinition")(T4,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=28)}([function(t,e,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(5);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp?(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(p+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(m+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>m?(this.rect.y-=(this.labelHeight-m)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(m+this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h},function(t,e,r){"use strict";var n=r(0);function i(){}o(i,"FDLayoutConstants");for(var a in n)i[a]=n[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=i},function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(7),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,w=0;w-1&&E>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(T,1),x.target!=x.source&&x.target.edges.splice(E,1);var C=x.source.owner.getEdges().indexOf(x);if(C==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(C,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,w=this.getNodes(),C=w.length,T=0;Tv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(w[0].getParent().paddingLeft!=null?b=w[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,w,C,T,E,A,S=this.nodes,_=S.length,I=0;I<_;I++){var D=S[I];g&&D.child!=null&&D.updateBounds(),w=D.getLeft(),C=D.getRight(),T=D.getTop(),E=D.getBottom(),y>w&&(y=w),vT&&(x=T),bw&&(y=w),vT&&(x=T),b=this.nodes.length){var _=0;v.forEach(function(I){I.owner==g&&_++}),_==this.nodes.length&&(this.isConnected=!0)}},t.exports=p},function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(6),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=S,!1;if(hf)return l[0]=p,l[1]=h,l[2]=E,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,k=!0):(l[0]=g,l[1]=m,k=!0):R===M&&(u>f?(l[0]=p,l[1]=m,k=!0):(l[0]=x,l[1]=v,k=!0)),-O===M?f>u?(l[2]=A,l[3]=S,L=!0):(l[2]=E,l[3]=T,L=!0):O===M&&(f>u?(l[2]=C,l[3]=T,L=!0):(l[2]=_,l[3]=S,L=!0)),k&&L)return!1;if(u>f?h>d?(B=this.getCardinalDirection(R,M,4),F=this.getCardinalDirection(O,M,2)):(B=this.getCardinalDirection(-R,M,3),F=this.getCardinalDirection(-O,M,1)):h>d?(B=this.getCardinalDirection(-R,M,1),F=this.getCardinalDirection(-O,M,3)):(B=this.getCardinalDirection(R,M,2),F=this.getCardinalDirection(O,M,4)),!k)switch(B){case 1:z=m,P=u+-w/M,l[0]=P,l[1]=z;break;case 2:P=x,z=h+b*M,l[0]=P,l[1]=z;break;case 3:z=v,P=u+w/M,l[0]=P,l[1]=z;break;case 4:P=y,z=h+-b*M,l[0]=P,l[1]=z;break}if(!L)switch(F){case 1:H=T,$=f+-D/M,l[2]=$,l[3]=H;break;case 2:$=_,H=d+I*M,l[2]=$,l[3]=H;break;case 3:H=S,$=f+D/M,l[2]=$,l[3]=H;break;case 4:$=A,H=d+-I*M,l[2]=$,l[3]=H;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,w=void 0,C=void 0,T=void 0,E=void 0,A=void 0,S=void 0,_=void 0;return w=p-f,T=h-d,A=d*f-h*p,C=v-g,E=m-y,S=y*g-m*v,_=w*E-C*T,_===0?null:(x=(T*S-E*A)/_,b=(C*A-w*S)/_,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l=0){var v=(-m+Math.sqrt(m*m-4*p*g))/(2*p),x=(-m-Math.sqrt(m*m-4*p*g))/(2*p),b=null;return v>=0&&v<=1?[v]:x>=0&&x<=1?[x]:b}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,t.exports=i},function(t,e,r){"use strict";function n(){}o(n,"IMath"),n.sign=function(i){return i>0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n},function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,r){"use strict";var n=function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i},function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(w.push(T[0]);w.length>0&&g;){var E=w[0];w.splice(0,1),b.add(E);for(var A=E.getEdges(),x=0;x-1&&T.splice(D,1)}b=new Set,C=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(S,1);var _=C.getNeighborsList();_.forEach(function(k){if(y.indexOf(k)<0){var L=v.get(k),R=L-1;R==1&&E.push(k),v.set(k,R)}})}y=y.concat(E),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p},function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n},function(t,e,r){"use strict";var n=r(5);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i},function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mw||b>w)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(w=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>w||b>w)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||w>=x[0].length)){for(var C=0;Ch},"_defaultCompareFunction")}]),l}();t.exports=s},function(t,e,r){"use strict";function n(){}o(n,"SVD"),n.svd=function(i){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=i.length,this.n=i[0].length;var a=Math.min(this.m,this.n);this.s=function(xt){for(var ut=[];xt-- >0;)ut.push(0);return ut}(Math.min(this.m+1,this.n)),this.U=function(xt){var ut=o(function Et(ft){if(ft.length==0)return 0;for(var yt=[],nt=0;nt0;)ut.push(0);return ut}(this.n),l=function(xt){for(var ut=[];xt-- >0;)ut.push(0);return ut}(this.m),u=!0,h=!0,f=Math.min(this.m-1,this.n),d=Math.max(0,Math.min(this.n-2,this.m)),p=0;p=0;M--)if(this.s[M]!==0){for(var B=M+1;B=0;j--){if(function(xt,ut){return xt&&ut}(j0;){var ue=void 0,Z=void 0;for(ue=L-2;ue>=-1&&ue!==-1;ue--)if(Math.abs(s[ue])<=se+J*(Math.abs(this.s[ue])+Math.abs(this.s[ue+1]))){s[ue]=0;break}if(ue===L-2)Z=4;else{var Se=void 0;for(Se=L-1;Se>=ue&&Se!==ue;Se--){var ce=(Se!==L?Math.abs(s[Se]):0)+(Se!==ue+1?Math.abs(s[Se-1]):0);if(Math.abs(this.s[Se])<=se+J*ce){this.s[Se]=0;break}}Se===ue?Z=3:Se===L-1?Z=1:(Z=2,ue=Se)}switch(ue++,Z){case 1:{var ae=s[L-2];s[L-2]=0;for(var Oe=L-2;Oe>=ue;Oe--){var ge=n.hypot(this.s[Oe],ae),ze=this.s[Oe]/ge,He=ae/ge;if(this.s[Oe]=ge,Oe!==ue&&(ae=-He*s[Oe-1],s[Oe-1]=ze*s[Oe-1]),h)for(var $e=0;$e=this.s[ue+1]);){var ot=this.s[ue];if(this.s[ue]=this.s[ue+1],this.s[ue+1]=ot,h&&ueMath.abs(a)?(s=a/i,s=Math.abs(i)*Math.sqrt(1+s*s)):a!=0?(s=i/a,s=Math.abs(a)*Math.sqrt(1+s*s)):s=0,s},t.exports=n},function(t,e,r){"use strict";var n=function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o(function(e,r){typeof k4=="object"&&typeof pF=="object"?pF.exports=r(dF()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof k4=="object"?k4.coseBase=r(dF()):e.coseBase=r(e.layoutBase)},"webpackUniversalModuleDefinition")(k4,function(t){return(()=>{"use strict";var e={45:(a,s,l)=>{var u={};u.layoutBase=l(551),u.CoSEConstants=l(806),u.CoSEEdge=l(767),u.CoSEGraph=l(880),u.CoSEGraphManager=l(578),u.CoSELayout=l(765),u.CoSENode=l(991),u.ConstraintHandler=l(902),a.exports=u},806:(a,s,l)=>{var u=l(551).FDLayoutConstants;function h(){}o(h,"CoSEConstants");for(var f in u)h[f]=u[f];h.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,h.DEFAULT_RADIAL_SEPARATION=u.DEFAULT_EDGE_LENGTH,h.DEFAULT_COMPONENT_SEPERATION=60,h.TILE=!0,h.TILING_PADDING_VERTICAL=10,h.TILING_PADDING_HORIZONTAL=10,h.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,h.ENFORCE_CONSTRAINTS=!0,h.APPLY_LAYOUT=!0,h.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,h.TREE_REDUCTION_ON_INCREMENTAL=!0,h.PURE_INCREMENTAL=h.DEFAULT_INCREMENTAL,a.exports=h},767:(a,s,l)=>{var u=l(551).FDLayoutEdge;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEEdge"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},880:(a,s,l)=>{var u=l(551).LGraph;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEGraph"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},578:(a,s,l)=>{var u=l(551).LGraphManager;function h(d){u.call(this,d)}o(h,"CoSEGraphManager"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},765:(a,s,l)=>{var u=l(551).FDLayout,h=l(578),f=l(880),d=l(991),p=l(767),m=l(806),g=l(902),y=l(551).FDLayoutConstants,v=l(551).LayoutConstants,x=l(551).Point,b=l(551).PointD,w=l(551).DimensionD,C=l(551).Layout,T=l(551).Integer,E=l(551).IGeometry,A=l(551).LGraph,S=l(551).Transform,_=l(551).LinkedList;function I(){u.call(this),this.toBeTiled={},this.constraints={}}o(I,"CoSELayout"),I.prototype=Object.create(u.prototype);for(var D in u)I[D]=u[D];I.prototype.newGraphManager=function(){var k=new h(this);return this.graphManager=k,k},I.prototype.newGraph=function(k){return new f(null,this.graphManager,k)},I.prototype.newNode=function(k){return new d(this.graphManager,k)},I.prototype.newEdge=function(k){return new p(null,null,k)},I.prototype.initParameters=function(){u.prototype.initParameters.call(this,arguments),this.isSubLayout||(m.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=m.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=y.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=y.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=y.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},I.prototype.initSpringEmbedder=function(){u.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/y.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},I.prototype.layout=function(){var k=v.DEFAULT_CREATE_BENDS_AS_NEEDED;return k&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},I.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(m.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var L=new Set(this.getAllNodes()),R=this.nodesWithGravity.filter(function(B){return L.has(B)});this.graphManager.setAllNodesToApplyGravitation(R)}}else{var k=this.getFlatForest();if(k.length>0)this.positionNodesRadially(k);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var L=new Set(this.getAllNodes()),R=this.nodesWithGravity.filter(function(O){return L.has(O)});this.graphManager.setAllNodesToApplyGravitation(R),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),m.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},I.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%y.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var k=new Set(this.getAllNodes()),L=this.nodesWithGravity.filter(function(M){return k.has(M)});this.graphManager.setAllNodesToApplyGravitation(L),this.graphManager.updateBounds(),this.updateGrid(),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var R=!this.isTreeGrowing&&!this.isGrowthFinished,O=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(R,O),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},I.prototype.getPositionsData=function(){for(var k=this.graphManager.getAllNodes(),L={},R=0;R0&&this.updateDisplacements();for(var R=0;R0&&(O.fixedNodeWeight=B)}}if(this.constraints.relativePlacementConstraint){var F=new Map,P=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(le){k.fixedNodesOnHorizontal.add(le),k.fixedNodesOnVertical.add(le)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var z=this.constraints.alignmentConstraint.vertical,R=0;R=2*le.length/3;X--)he=Math.floor(Math.random()*(X+1)),K=le[X],le[X]=le[he],le[he]=K;return le},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(le){if(le.left){var he=F.has(le.left)?F.get(le.left):le.left,K=F.has(le.right)?F.get(le.right):le.right;k.nodesInRelativeHorizontal.includes(he)||(k.nodesInRelativeHorizontal.push(he),k.nodeToRelativeConstraintMapHorizontal.set(he,[]),k.dummyToNodeForVerticalAlignment.has(he)?k.nodeToTempPositionMapHorizontal.set(he,k.idToNodeMap.get(k.dummyToNodeForVerticalAlignment.get(he)[0]).getCenterX()):k.nodeToTempPositionMapHorizontal.set(he,k.idToNodeMap.get(he).getCenterX())),k.nodesInRelativeHorizontal.includes(K)||(k.nodesInRelativeHorizontal.push(K),k.nodeToRelativeConstraintMapHorizontal.set(K,[]),k.dummyToNodeForVerticalAlignment.has(K)?k.nodeToTempPositionMapHorizontal.set(K,k.idToNodeMap.get(k.dummyToNodeForVerticalAlignment.get(K)[0]).getCenterX()):k.nodeToTempPositionMapHorizontal.set(K,k.idToNodeMap.get(K).getCenterX())),k.nodeToRelativeConstraintMapHorizontal.get(he).push({right:K,gap:le.gap}),k.nodeToRelativeConstraintMapHorizontal.get(K).push({left:he,gap:le.gap})}else{var X=P.has(le.top)?P.get(le.top):le.top,te=P.has(le.bottom)?P.get(le.bottom):le.bottom;k.nodesInRelativeVertical.includes(X)||(k.nodesInRelativeVertical.push(X),k.nodeToRelativeConstraintMapVertical.set(X,[]),k.dummyToNodeForHorizontalAlignment.has(X)?k.nodeToTempPositionMapVertical.set(X,k.idToNodeMap.get(k.dummyToNodeForHorizontalAlignment.get(X)[0]).getCenterY()):k.nodeToTempPositionMapVertical.set(X,k.idToNodeMap.get(X).getCenterY())),k.nodesInRelativeVertical.includes(te)||(k.nodesInRelativeVertical.push(te),k.nodeToRelativeConstraintMapVertical.set(te,[]),k.dummyToNodeForHorizontalAlignment.has(te)?k.nodeToTempPositionMapVertical.set(te,k.idToNodeMap.get(k.dummyToNodeForHorizontalAlignment.get(te)[0]).getCenterY()):k.nodeToTempPositionMapVertical.set(te,k.idToNodeMap.get(te).getCenterY())),k.nodeToRelativeConstraintMapVertical.get(X).push({bottom:te,gap:le.gap}),k.nodeToRelativeConstraintMapVertical.get(te).push({top:X,gap:le.gap})}});else{var H=new Map,Q=new Map;this.constraints.relativePlacementConstraint.forEach(function(le){if(le.left){var he=F.has(le.left)?F.get(le.left):le.left,K=F.has(le.right)?F.get(le.right):le.right;H.has(he)?H.get(he).push(K):H.set(he,[K]),H.has(K)?H.get(K).push(he):H.set(K,[he])}else{var X=P.has(le.top)?P.get(le.top):le.top,te=P.has(le.bottom)?P.get(le.bottom):le.bottom;Q.has(X)?Q.get(X).push(te):Q.set(X,[te]),Q.has(te)?Q.get(te).push(X):Q.set(te,[X])}});var j=o(function(he,K){var X=[],te=[],J=new _,se=new Set,ue=0;return he.forEach(function(Z,Se){if(!se.has(Se)){X[ue]=[],te[ue]=!1;var ce=Se;for(J.push(ce),se.add(ce),X[ue].push(ce);J.length!=0;){ce=J.shift(),K.has(ce)&&(te[ue]=!0);var ae=he.get(ce);ae.forEach(function(Oe){se.has(Oe)||(J.push(Oe),se.add(Oe),X[ue].push(Oe))})}ue++}}),{components:X,isFixed:te}},"constructComponents"),ie=j(H,k.fixedNodesOnHorizontal);this.componentsOnHorizontal=ie.components,this.fixedComponentsOnHorizontal=ie.isFixed;var ne=j(Q,k.fixedNodesOnVertical);this.componentsOnVertical=ne.components,this.fixedComponentsOnVertical=ne.isFixed}}},I.prototype.updateDisplacements=function(){var k=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(ne){var le=k.idToNodeMap.get(ne.nodeId);le.displacementX=0,le.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var L=this.constraints.alignmentConstraint.vertical,R=0;R1){var P;for(P=0;PO&&(O=Math.floor(F.y)),B=Math.floor(F.x+m.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(v.WORLD_CENTER_X-F.x/2,v.WORLD_CENTER_Y-F.y/2))},I.radialLayout=function(k,L,R){var O=Math.max(this.maxDiagonalInTree(k),m.DEFAULT_RADIAL_SEPARATION);I.branchRadialLayout(L,null,0,359,0,O);var M=A.calculateBounds(k),B=new S;B.setDeviceOrgX(M.getMinX()),B.setDeviceOrgY(M.getMinY()),B.setWorldOrgX(R.x),B.setWorldOrgY(R.y);for(var F=0;F1;){var X=K[0];K.splice(0,1);var te=j.indexOf(X);te>=0&&j.splice(te,1),le--,ie--}L!=null?he=(j.indexOf(K[0])+1)%le:he=0;for(var J=Math.abs(O-R)/ie,se=he;ne!=ie;se=++se%le){var ue=j[se].getOtherEnd(k);if(ue!=L){var Z=(R+ne*J)%360,Se=(Z+J)%360;I.branchRadialLayout(ue,k,Z,Se,M+B,B),ne++}}},I.maxDiagonalInTree=function(k){for(var L=T.MIN_VALUE,R=0;RL&&(L=M)}return L},I.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},I.prototype.groupZeroDegreeMembers=function(){var k=this,L={};this.memberGroups={},this.idToDummyNode={};for(var R=[],O=this.graphManager.getAllNodes(),M=0;M"u"&&(L[P]=[]),L[P]=L[P].concat(B)}Object.keys(L).forEach(function(z){if(L[z].length>1){var $="DummyCompound_"+z;k.memberGroups[$]=L[z];var H=L[z][0].getParent(),Q=new d(k.graphManager);Q.id=$,Q.paddingLeft=H.paddingLeft||0,Q.paddingRight=H.paddingRight||0,Q.paddingBottom=H.paddingBottom||0,Q.paddingTop=H.paddingTop||0,k.idToDummyNode[$]=Q;var j=k.getGraphManager().add(k.newGraph(),Q),ie=H.getChild();ie.add(Q);for(var ne=0;neM?(O.rect.x-=(O.labelWidth-M)/2,O.setWidth(O.labelWidth),O.labelMarginLeft=(O.labelWidth-M)/2):O.labelPosHorizontal=="right"&&O.setWidth(M+O.labelWidth)),O.labelHeight&&(O.labelPosVertical=="top"?(O.rect.y-=O.labelHeight,O.setHeight(B+O.labelHeight),O.labelMarginTop=O.labelHeight):O.labelPosVertical=="center"&&O.labelHeight>B?(O.rect.y-=(O.labelHeight-B)/2,O.setHeight(O.labelHeight),O.labelMarginTop=(O.labelHeight-B)/2):O.labelPosVertical=="bottom"&&O.setHeight(B+O.labelHeight))}})},I.prototype.repopulateCompounds=function(){for(var k=this.compoundOrder.length-1;k>=0;k--){var L=this.compoundOrder[k],R=L.id,O=L.paddingLeft,M=L.paddingTop,B=L.labelMarginLeft,F=L.labelMarginTop;this.adjustLocations(this.tiledMemberPack[R],L.rect.x,L.rect.y,O,M,B,F)}},I.prototype.repopulateZeroDegreeMembers=function(){var k=this,L=this.tiledZeroDegreePack;Object.keys(L).forEach(function(R){var O=k.idToDummyNode[R],M=O.paddingLeft,B=O.paddingTop,F=O.labelMarginLeft,P=O.labelMarginTop;k.adjustLocations(L[R],O.rect.x,O.rect.y,M,B,F,P)})},I.prototype.getToBeTiled=function(k){var L=k.id;if(this.toBeTiled[L]!=null)return this.toBeTiled[L];var R=k.getChild();if(R==null)return this.toBeTiled[L]=!1,!1;for(var O=R.getNodes(),M=0;M0)return this.toBeTiled[L]=!1,!1;if(B.getChild()==null){this.toBeTiled[B.id]=!1;continue}if(!this.getToBeTiled(B))return this.toBeTiled[L]=!1,!1}return this.toBeTiled[L]=!0,!0},I.prototype.getNodeDegree=function(k){for(var L=k.id,R=k.getEdges(),O=0,M=0;MH&&(H=j.rect.height)}R+=H+k.verticalPadding}},I.prototype.tileCompoundMembers=function(k,L){var R=this;this.tiledMemberPack=[],Object.keys(k).forEach(function(O){var M=L[O];if(R.tiledMemberPack[O]=R.tileNodes(k[O],M.paddingLeft+M.paddingRight),M.rect.width=R.tiledMemberPack[O].width,M.rect.height=R.tiledMemberPack[O].height,M.setCenter(R.tiledMemberPack[O].centerX,R.tiledMemberPack[O].centerY),M.labelMarginLeft=0,M.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var B=M.rect.width,F=M.rect.height;M.labelWidth&&(M.labelPosHorizontal=="left"?(M.rect.x-=M.labelWidth,M.setWidth(B+M.labelWidth),M.labelMarginLeft=M.labelWidth):M.labelPosHorizontal=="center"&&M.labelWidth>B?(M.rect.x-=(M.labelWidth-B)/2,M.setWidth(M.labelWidth),M.labelMarginLeft=(M.labelWidth-B)/2):M.labelPosHorizontal=="right"&&M.setWidth(B+M.labelWidth)),M.labelHeight&&(M.labelPosVertical=="top"?(M.rect.y-=M.labelHeight,M.setHeight(F+M.labelHeight),M.labelMarginTop=M.labelHeight):M.labelPosVertical=="center"&&M.labelHeight>F?(M.rect.y-=(M.labelHeight-F)/2,M.setHeight(M.labelHeight),M.labelMarginTop=(M.labelHeight-F)/2):M.labelPosVertical=="bottom"&&M.setHeight(F+M.labelHeight))}})},I.prototype.tileNodes=function(k,L){var R=this.tileNodesByFavoringDim(k,L,!0),O=this.tileNodesByFavoringDim(k,L,!1),M=this.getOrgRatio(R),B=this.getOrgRatio(O),F;return BP&&(P=ne.getWidth())});var z=B/M,$=F/M,H=Math.pow(R-O,2)+4*(z+O)*($+R)*M,Q=(O-R+Math.sqrt(H))/(2*(z+O)),j;L?(j=Math.ceil(Q),j==Q&&j++):j=Math.floor(Q);var ie=j*(z+O)-O;return P>ie&&(ie=P),ie+=O*2,ie},I.prototype.tileNodesByFavoringDim=function(k,L,R){var O=m.TILING_PADDING_VERTICAL,M=m.TILING_PADDING_HORIZONTAL,B=m.TILING_COMPARE_BY,F={rows:[],rowWidth:[],rowHeight:[],width:0,height:L,verticalPadding:O,horizontalPadding:M,centerX:0,centerY:0};B&&(F.idealRowWidth=this.calcIdealRowWidth(k,R));var P=o(function(le){return le.rect.width*le.rect.height},"getNodeArea"),z=o(function(le,he){return P(he)-P(le)},"areaCompareFcn");k.sort(function(ne,le){var he=z;return F.idealRowWidth?(he=B,he(ne.id,le.id)):he(ne,le)});for(var $=0,H=0,Q=0;Q0&&(F+=k.horizontalPadding),k.rowWidth[R]=F,k.width0&&(P+=k.verticalPadding);var z=0;P>k.rowHeight[R]&&(z=k.rowHeight[R],k.rowHeight[R]=P,z=k.rowHeight[R]-z),k.height+=z,k.rows[R].push(L)},I.prototype.getShortestRowIndex=function(k){for(var L=-1,R=Number.MAX_VALUE,O=0;OR&&(L=O,R=k.rowWidth[O]);return L},I.prototype.canAddHorizontal=function(k,L,R){if(k.idealRowWidth){var O=k.rows.length-1,M=k.rowWidth[O];return M+L+k.horizontalPadding<=k.idealRowWidth}var B=this.getShortestRowIndex(k);if(B<0)return!0;var F=k.rowWidth[B];if(F+k.horizontalPadding+L<=k.width)return!0;var P=0;k.rowHeight[B]0&&(P=R+k.verticalPadding-k.rowHeight[B]);var z;k.width-F>=L+k.horizontalPadding?z=(k.height+P)/(F+L+k.horizontalPadding):z=(k.height+P)/k.width,P=R+k.verticalPadding;var $;return k.widthB&&L!=R){O.splice(-1,1),k.rows[R].push(M),k.rowWidth[L]=k.rowWidth[L]-B,k.rowWidth[R]=k.rowWidth[R]+B,k.width=k.rowWidth[instance.getLongestRowIndex(k)];for(var F=Number.MIN_VALUE,P=0;PF&&(F=O[P].height);L>0&&(F+=k.verticalPadding);var z=k.rowHeight[L]+k.rowHeight[R];k.rowHeight[L]=F,k.rowHeight[R]0)for(var ie=M;ie<=B;ie++)j[0]+=this.grid[ie][F-1].length+this.grid[ie][F].length-1;if(B0)for(var ie=F;ie<=P;ie++)j[3]+=this.grid[M-1][ie].length+this.grid[M][ie].length-1;for(var ne=T.MAX_VALUE,le,he,K=0;K{var u=l(551).FDLayoutNode,h=l(551).IMath;function f(p,m,g,y){u.call(this,p,m,g,y)}o(f,"CoSENode"),f.prototype=Object.create(u.prototype);for(var d in u)f[d]=u[d];f.prototype.calculateDisplacement=function(){var p=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementX=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementX)),Math.abs(this.displacementY)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementY=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},f.prototype.propogateDisplacementToChildren=function(p,m){for(var g=this.getChild().getNodes(),y,v=0;v{function u(g){if(Array.isArray(g)){for(var y=0,v=Array(g.length);y0){var ct=0;Ue.forEach(function(ot){xe=="horizontal"?(we.set(ot,x.has(ot)?b[x.get(ot)]:pe.get(ot)),ct+=we.get(ot)):(we.set(ot,x.has(ot)?w[x.get(ot)]:pe.get(ot)),ct+=we.get(ot))}),ct=ct/Ue.length,st.forEach(function(ot){q.has(ot)||we.set(ot,ct)})}else{var We=0;st.forEach(function(ot){xe=="horizontal"?We+=x.has(ot)?b[x.get(ot)]:pe.get(ot):We+=x.has(ot)?w[x.get(ot)]:pe.get(ot)}),We=We/st.length,st.forEach(function(ot){we.set(ot,We)})}});for(var qe=o(function(){var Ue=De.shift(),ct=V.get(Ue);ct.forEach(function(We){if(we.get(We.id)ot&&(ot=yt),ntYt&&(Yt=nt)}}catch(At){Mt=!0,xt=At}finally{try{!bt&&ut.return&&ut.return()}finally{if(Mt)throw xt}}var dn=(ct+ot)/2-(We+Yt)/2,Tt=!0,On=!1,tn=void 0;try{for(var _r=st[Symbol.iterator](),Dr;!(Tt=(Dr=_r.next()).done);Tt=!0){var Pn=Dr.value;we.set(Pn,we.get(Pn)+dn)}}catch(At){On=!0,tn=At}finally{try{!Tt&&_r.return&&_r.return()}finally{if(On)throw tn}}})}return we},"findAppropriatePositionForRelativePlacement"),D=o(function(V){var xe=0,q=0,pe=0,ve=0;if(V.forEach(function(Ve){Ve.left?b[x.get(Ve.left)]-b[x.get(Ve.right)]>=0?xe++:q++:w[x.get(Ve.top)]-w[x.get(Ve.bottom)]>=0?pe++:ve++}),xe>q&&pe>ve)for(var Pe=0;Peq)for(var _e=0;_eve)for(var we=0;we1)y.fixedNodeConstraint.forEach(function(oe,V){O[V]=[oe.position.x,oe.position.y],M[V]=[b[x.get(oe.nodeId)],w[x.get(oe.nodeId)]]}),B=!0;else if(y.alignmentConstraint)(function(){var oe=0;if(y.alignmentConstraint.vertical){for(var V=y.alignmentConstraint.vertical,xe=o(function(we){var Ve=new Set;V[we].forEach(function(at){Ve.add(at)});var De=new Set([].concat(u(Ve)).filter(function(at){return P.has(at)})),qe=void 0;De.size>0?qe=b[x.get(De.values().next().value)]:qe=_(Ve).x,V[we].forEach(function(at){O[oe]=[qe,w[x.get(at)]],M[oe]=[b[x.get(at)],w[x.get(at)]],oe++})},"_loop2"),q=0;q0?qe=b[x.get(De.values().next().value)]:qe=_(Ve).y,pe[we].forEach(function(at){O[oe]=[b[x.get(at)],qe],M[oe]=[b[x.get(at)],w[x.get(at)]],oe++})},"_loop3"),Pe=0;PeQ&&(Q=H[ie].length,j=ie);if(Q<$.size/2)D(y.relativePlacementConstraint),B=!1,F=!1;else{var ne=new Map,le=new Map,he=[];H[j].forEach(function(oe){z.get(oe).forEach(function(V){V.direction=="horizontal"?(ne.has(oe)?ne.get(oe).push(V):ne.set(oe,[V]),ne.has(V.id)||ne.set(V.id,[]),he.push({left:oe,right:V.id})):(le.has(oe)?le.get(oe).push(V):le.set(oe,[V]),le.has(V.id)||le.set(V.id,[]),he.push({top:oe,bottom:V.id}))})}),D(he),F=!1;var K=I(ne,"horizontal"),X=I(le,"vertical");H[j].forEach(function(oe,V){M[V]=[b[x.get(oe)],w[x.get(oe)]],O[V]=[],K.has(oe)?O[V][0]=K.get(oe):O[V][0]=b[x.get(oe)],X.has(oe)?O[V][1]=X.get(oe):O[V][1]=w[x.get(oe)]}),B=!0}}if(B){for(var te=void 0,J=d.transpose(O),se=d.transpose(M),ue=0;ue0){var ze={x:0,y:0};y.fixedNodeConstraint.forEach(function(oe,V){var xe={x:b[x.get(oe.nodeId)],y:w[x.get(oe.nodeId)]},q=oe.position,pe=S(q,xe);ze.x+=pe.x,ze.y+=pe.y}),ze.x/=y.fixedNodeConstraint.length,ze.y/=y.fixedNodeConstraint.length,b.forEach(function(oe,V){b[V]+=ze.x}),w.forEach(function(oe,V){w[V]+=ze.y}),y.fixedNodeConstraint.forEach(function(oe){b[x.get(oe.nodeId)]=oe.position.x,w[x.get(oe.nodeId)]=oe.position.y})}if(y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var He=y.alignmentConstraint.vertical,$e=o(function(V){var xe=new Set;He[V].forEach(function(ve){xe.add(ve)});var q=new Set([].concat(u(xe)).filter(function(ve){return P.has(ve)})),pe=void 0;q.size>0?pe=b[x.get(q.values().next().value)]:pe=_(xe).x,xe.forEach(function(ve){P.has(ve)||(b[x.get(ve)]=pe)})},"_loop4"),Re=0;Re0?pe=w[x.get(q.values().next().value)]:pe=_(xe).y,xe.forEach(function(ve){P.has(ve)||(w[x.get(ve)]=pe)})},"_loop5"),W=0;W{a.exports=t}},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(45);return i})()})});var Pve=Mi((E4,gF)=>{"use strict";o(function(e,r){typeof E4=="object"&&typeof gF=="object"?gF.exports=r(mF()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof E4=="object"?E4.cytoscapeFcose=r(mF()):e.cytoscapeFcose=r(e.coseBase)},"webpackUniversalModuleDefinition")(E4,function(t){return(()=>{"use strict";var e={658:a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var l=arguments.length,u=Array(l>1?l-1:0),h=1;h{var u=function(){function d(p,m){var g=[],y=!0,v=!1,x=void 0;try{for(var b=p[Symbol.iterator](),w;!(y=(w=b.next()).done)&&(g.push(w.value),!(m&&g.length===m));y=!0);}catch(C){v=!0,x=C}finally{try{!y&&b.return&&b.return()}finally{if(v)throw x}}return g}return o(d,"sliceIterator"),function(p,m){if(Array.isArray(p))return p;if(Symbol.iterator in Object(p))return d(p,m);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),h=l(140).layoutBase.LinkedList,f={};f.getTopMostNodes=function(d){for(var p={},m=0;m0&&B.merge($)});for(var F=0;F1){w=x[0],C=w.connectedEdges().length,x.forEach(function(M){M.connectedEdges().length0&&g.set("dummy"+(g.size+1),A),S},f.relocateComponent=function(d,p,m){if(!m.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,v=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(m.quality=="draft"){var b=!0,w=!1,C=void 0;try{for(var T=p.nodeIndexes[Symbol.iterator](),E;!(b=(E=T.next()).done);b=!0){var A=E.value,S=u(A,2),_=S[0],I=S[1],D=m.cy.getElementById(_);if(D){var k=D.boundingBox(),L=p.xCoords[I]-k.w/2,R=p.xCoords[I]+k.w/2,O=p.yCoords[I]-k.h/2,M=p.yCoords[I]+k.h/2;Ly&&(y=R),Ox&&(x=M)}}}catch($){w=!0,C=$}finally{try{!b&&T.return&&T.return()}finally{if(w)throw C}}var B=d.x-(y+g)/2,F=d.y-(x+v)/2;p.xCoords=p.xCoords.map(function($){return $+B}),p.yCoords=p.yCoords.map(function($){return $+F})}else{Object.keys(p).forEach(function($){var H=p[$],Q=H.getRect().x,j=H.getRect().x+H.getRect().width,ie=H.getRect().y,ne=H.getRect().y+H.getRect().height;Qy&&(y=j),iex&&(x=ne)});var P=d.x-(y+g)/2,z=d.y-(x+v)/2;Object.keys(p).forEach(function($){var H=p[$];H.setCenter(H.getCenterX()+P,H.getCenterY()+z)})}}},f.calcBoundingBox=function(d,p,m,g){for(var y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,w=void 0,C=void 0,T=void 0,E=void 0,A=d.descendants().not(":parent"),S=A.length,_=0;_w&&(y=w),vT&&(x=T),b{var u=l(548),h=l(140).CoSELayout,f=l(140).CoSENode,d=l(140).layoutBase.PointD,p=l(140).layoutBase.DimensionD,m=l(140).layoutBase.LayoutConstants,g=l(140).layoutBase.FDLayoutConstants,y=l(140).CoSEConstants,v=o(function(b,w){var C=b.cy,T=b.eles,E=T.nodes(),A=T.edges(),S=void 0,_=void 0,I=void 0,D={};b.randomize&&(S=w.nodeIndexes,_=w.xCoords,I=w.yCoords);var k=o(function($){return typeof $=="function"},"isFn"),L=o(function($,H){return k($)?$(H):$},"optFn"),R=u.calcParentsWithoutChildren(C,T),O=o(function z($,H,Q,j){for(var ie=H.length,ne=0;ne0){var J=void 0;J=Q.getGraphManager().add(Q.newGraph(),K),z(J,he,Q,j)}}},"processChildrenList"),M=o(function($,H,Q){for(var j=0,ie=0,ne=0;ne0?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=j/ie:k(b.idealEdgeLength)?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,y.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,y.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),B=o(function($,H){H.fixedNodeConstraint&&($.constraints.fixedNodeConstraint=H.fixedNodeConstraint),H.alignmentConstraint&&($.constraints.alignmentConstraint=H.alignmentConstraint),H.relativePlacementConstraint&&($.constraints.relativePlacementConstraint=H.relativePlacementConstraint)},"processConstraints");b.nestingFactor!=null&&(y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(y.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(y.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(y.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(y.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(y.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?m.QUALITY=2:m.QUALITY=0,y.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=m.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!b.randomize,y.ANIMATE=g.ANIMATE=m.ANIMATE=b.animate,y.TILE=b.tile,y.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,y.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!0,y.PURE_INCREMENTAL=!b.randomize,m.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!1),b.step=="enforced"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!1),b.step=="cose"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?y.TREE_REDUCTION_ON_INCREMENTAL=!1:y.TREE_REDUCTION_ON_INCREMENTAL=!0;var F=new h,P=F.newGraphManager();return O(P.addRoot(),u.getTopMostNodes(E),F,b),M(F,P,A),B(F,b),F.runLayout(),D},"coseLayout");a.exports={coseLayout:v}},212:(a,s,l)=>{var u=function(){function b(w,C){for(var T=0;T0)if(M){var P=d.getTopMostNodes(T.eles.nodes());if(k=d.connectComponents(E,T.eles,P),k.forEach(function(ce){var ae=ce.boundingBox();L.push({x:ae.x1+ae.w/2,y:ae.y1+ae.h/2})}),T.randomize&&k.forEach(function(ce){T.eles=ce,S.push(m(T))}),T.quality=="default"||T.quality=="proof"){var z=E.collection();if(T.tile){var $=new Map,H=[],Q=[],j=0,ie={nodeIndexes:$,xCoords:H,yCoords:Q},ne=[];if(k.forEach(function(ce,ae){ce.edges().length==0&&(ce.nodes().forEach(function(Oe,ge){z.merge(ce.nodes()[ge]),Oe.isParent()||(ie.nodeIndexes.set(ce.nodes()[ge].id(),j++),ie.xCoords.push(ce.nodes()[0].position().x),ie.yCoords.push(ce.nodes()[0].position().y))}),ne.push(ae))}),z.length>1){var le=z.boundingBox();L.push({x:le.x1+le.w/2,y:le.y1+le.h/2}),k.push(z),S.push(ie);for(var he=ne.length-1;he>=0;he--)k.splice(ne[he],1),S.splice(ne[he],1),L.splice(ne[he],1)}}k.forEach(function(ce,ae){T.eles=ce,D.push(y(T,S[ae])),d.relocateComponent(L[ae],D[ae],T)})}else k.forEach(function(ce,ae){d.relocateComponent(L[ae],S[ae],T)});var K=new Set;if(k.length>1){var X=[],te=A.filter(function(ce){return ce.css("display")=="none"});k.forEach(function(ce,ae){var Oe=void 0;if(T.quality=="draft"&&(Oe=S[ae].nodeIndexes),ce.nodes().not(te).length>0){var ge={};ge.edges=[],ge.nodes=[];var ze=void 0;ce.nodes().not(te).forEach(function(He){if(T.quality=="draft")if(!He.isParent())ze=Oe.get(He.id()),ge.nodes.push({x:S[ae].xCoords[ze]-He.boundingbox().w/2,y:S[ae].yCoords[ze]-He.boundingbox().h/2,width:He.boundingbox().w,height:He.boundingbox().h});else{var $e=d.calcBoundingBox(He,S[ae].xCoords,S[ae].yCoords,Oe);ge.nodes.push({x:$e.topLeftX,y:$e.topLeftY,width:$e.width,height:$e.height})}else D[ae][He.id()]&&ge.nodes.push({x:D[ae][He.id()].getLeft(),y:D[ae][He.id()].getTop(),width:D[ae][He.id()].getWidth(),height:D[ae][He.id()].getHeight()})}),ce.edges().forEach(function(He){var $e=He.source(),Re=He.target();if($e.css("display")!="none"&&Re.css("display")!="none")if(T.quality=="draft"){var Ie=Oe.get($e.id()),be=Oe.get(Re.id()),W=[],de=[];if($e.isParent()){var re=d.calcBoundingBox($e,S[ae].xCoords,S[ae].yCoords,Oe);W.push(re.topLeftX+re.width/2),W.push(re.topLeftY+re.height/2)}else W.push(S[ae].xCoords[Ie]),W.push(S[ae].yCoords[Ie]);if(Re.isParent()){var oe=d.calcBoundingBox(Re,S[ae].xCoords,S[ae].yCoords,Oe);de.push(oe.topLeftX+oe.width/2),de.push(oe.topLeftY+oe.height/2)}else de.push(S[ae].xCoords[be]),de.push(S[ae].yCoords[be]);ge.edges.push({startX:W[0],startY:W[1],endX:de[0],endY:de[1]})}else D[ae][$e.id()]&&D[ae][Re.id()]&&ge.edges.push({startX:D[ae][$e.id()].getCenterX(),startY:D[ae][$e.id()].getCenterY(),endX:D[ae][Re.id()].getCenterX(),endY:D[ae][Re.id()].getCenterY()})}),ge.nodes.length>0&&(X.push(ge),K.add(ae))}});var J=O.packComponents(X,T.randomize).shifts;if(T.quality=="draft")S.forEach(function(ce,ae){var Oe=ce.xCoords.map(function(ze){return ze+J[ae].dx}),ge=ce.yCoords.map(function(ze){return ze+J[ae].dy});ce.xCoords=Oe,ce.yCoords=ge});else{var se=0;K.forEach(function(ce){Object.keys(D[ce]).forEach(function(ae){var Oe=D[ce][ae];Oe.setCenter(Oe.getCenterX()+J[se].dx,Oe.getCenterY()+J[se].dy)}),se++})}}}else{var B=T.eles.boundingBox();if(L.push({x:B.x1+B.w/2,y:B.y1+B.h/2}),T.randomize){var F=m(T);S.push(F)}T.quality=="default"||T.quality=="proof"?(D.push(y(T,S[0])),d.relocateComponent(L[0],D[0],T)):d.relocateComponent(L[0],S[0],T)}var ue=o(function(ae,Oe){if(T.quality=="default"||T.quality=="proof"){typeof ae=="number"&&(ae=Oe);var ge=void 0,ze=void 0,He=ae.data("id");return D.forEach(function(Re){He in Re&&(ge={x:Re[He].getRect().getCenterX(),y:Re[He].getRect().getCenterY()},ze=Re[He])}),T.nodeDimensionsIncludeLabels&&(ze.labelWidth&&(ze.labelPosHorizontal=="left"?ge.x+=ze.labelWidth/2:ze.labelPosHorizontal=="right"&&(ge.x-=ze.labelWidth/2)),ze.labelHeight&&(ze.labelPosVertical=="top"?ge.y+=ze.labelHeight/2:ze.labelPosVertical=="bottom"&&(ge.y-=ze.labelHeight/2))),ge==null&&(ge={x:ae.position("x"),y:ae.position("y")}),{x:ge.x,y:ge.y}}else{var $e=void 0;return S.forEach(function(Re){var Ie=Re.nodeIndexes.get(ae.id());Ie!=null&&($e={x:Re.xCoords[Ie],y:Re.yCoords[Ie]})}),$e==null&&($e={x:ae.position("x"),y:ae.position("y")}),{x:$e.x,y:$e.y}}},"getPositions");if(T.quality=="default"||T.quality=="proof"||T.randomize){var Z=d.calcParentsWithoutChildren(E,A),Se=A.filter(function(ce){return ce.css("display")=="none"});T.eles=A.not(Se),A.nodes().not(":parent").not(Se).layoutPositions(C,T,ue),Z.length>0&&Z.forEach(function(ce){ce.position(ue(ce))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),b}();a.exports=x},657:(a,s,l)=>{var u=l(548),h=l(140).layoutBase.Matrix,f=l(140).layoutBase.SVD,d=o(function(m){var g=m.cy,y=m.eles,v=y.nodes(),x=y.nodes(":parent"),b=new Map,w=new Map,C=new Map,T=[],E=[],A=[],S=[],_=[],I=[],D=[],k=[],L=void 0,R=void 0,O=1e8,M=1e-9,B=m.piTol,F=m.samplingType,P=m.nodeSeparation,z=void 0,$=o(function(){for(var xe=0,q=0,pe=!1;q=Pe;){we=ve[Pe++];for(var st=T[we],Ue=0;Ueqe&&(qe=_[We],at=We)}return at},"BFS"),Q=o(function(xe){var q=void 0;if(xe){q=Math.floor(Math.random()*R),L=q;for(var ve=0;ve=1)break;qe=De}for(var st=0;st=1)break;qe=De}for(var ct=0;ct0&&(q.isParent()?T[xe].push(C.get(q.id())):T[xe].push(q.id()))})});var Z=o(function(xe){var q=w.get(xe),pe=void 0;b.get(xe).forEach(function(ve){g.getElementById(ve).isParent()?pe=C.get(ve):pe=ve,T[q].push(pe),T[w.get(pe)].push(xe)})},"_loop"),Se=!0,ce=!1,ae=void 0;try{for(var Oe=b.keys()[Symbol.iterator](),ge;!(Se=(ge=Oe.next()).done);Se=!0){var ze=ge.value;Z(ze)}}catch(V){ce=!0,ae=V}finally{try{!Se&&Oe.return&&Oe.return()}finally{if(ce)throw ae}}R=w.size;var He=void 0;if(R>2){z=R{var u=l(212),h=o(function(d){d&&d("layout","fcose",u)},"register");typeof cytoscape<"u"&&h(cytoscape),a.exports=h},140:a=>{a.exports=t}},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(579);return i})()})});var dy,Zp,yF=N(()=>{"use strict";tu();dy=o(t=>`${t}`,"wrapIcon"),Zp={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:dy('')},server:{body:dy('')},disk:{body:dy('')},internet:{body:dy('')},cloud:{body:dy('')},unknown:OC,blank:{body:dy("")}}}});var Bve,Fve,$ve,zve,Gve=N(()=>{"use strict";tu();zt();to();w4();yF();oC();Bve=o(async function(t,e){let r=Li("padding"),n=Li("iconSize"),i=n/2,a=n/6,s=a/2;await Promise.all(e.edges().map(async l=>{let{source:u,sourceDir:h,sourceArrow:f,sourceGroup:d,target:p,targetDir:m,targetArrow:g,targetGroup:y,label:v}=sC(l),{x,y:b}=l[0].sourceEndpoint(),{x:w,y:C}=l[0].midpoint(),{x:T,y:E}=l[0].targetEndpoint(),A=r+4;if(d&&(Ha(h)?x+=h==="L"?-A:A:b+=h==="T"?-A:A+18),y&&(Ha(m)?T+=m==="L"?-A:A:E+=m==="T"?-A:A+18),!d&&Qp.getNode(u)?.type==="junction"&&(Ha(h)?x+=h==="L"?i:-i:b+=h==="T"?i:-i),!y&&Qp.getNode(p)?.type==="junction"&&(Ha(m)?T+=m==="L"?i:-i:E+=m==="T"?i:-i),l[0]._private.rscratch){let S=t.insert("g");if(S.insert("path").attr("d",`M ${x},${b} L ${w},${C} L${T},${E} `).attr("class","edge"),f){let _=Ha(h)?v4[h](x,a):x-s,I=Zc(h)?v4[h](b,a):b-s;S.insert("polygon").attr("points",cF[h](a)).attr("transform",`translate(${_},${I})`).attr("class","arrow")}if(g){let _=Ha(m)?v4[m](T,a):T-s,I=Zc(m)?v4[m](E,a):E-s;S.insert("polygon").attr("points",cF[m](a)).attr("transform",`translate(${_},${I})`).attr("class","arrow")}if(v){let _=x4(h,m)?"XY":Ha(h)?"X":"Y",I=0;_==="X"?I=Math.abs(x-T):_==="Y"?I=Math.abs(b-E)/1.5:I=Math.abs(x-T)/2;let D=S.append("g");if(await Hn(D,v,{useHtmlLabels:!1,width:I,classes:"architecture-service-label"},me()),D.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),_==="X")D.attr("transform","translate("+w+", "+C+")");else if(_==="Y")D.attr("transform","translate("+w+", "+C+") rotate(-90)");else if(_==="XY"){let k=b4(h,m);if(k&&Sve(k)){let L=D.node().getBoundingClientRect(),[R,O]=Ave(k);D.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*R*O*45})`);let M=D.node().getBoundingClientRect();D.attr("transform",` - translate(${w}, ${C-L.height/2}) - translate(${R*M.width/2}, ${O*M.height/2}) - rotate(${-1*R*O*45}, 0, ${L.height/2}) - `)}}}}}))},"drawEdges"),Fve=o(async function(t,e){let n=Li("padding")*.75,i=Li("fontSize"),s=Li("iconSize")/2;await Promise.all(e.nodes().map(async l=>{let u=Ff(l);if(u.type==="group"){let{h,w:f,x1:d,y1:p}=l.boundingBox();t.append("rect").attr("x",d+s).attr("y",p+s).attr("width",f).attr("height",h).attr("class","node-bkg");let m=t.append("g"),g=d,y=p;if(u.icon){let v=m.append("g");v.html(`${await wo(u.icon,{height:n,width:n,fallbackPrefix:Zp.prefix})}`),v.attr("transform","translate("+(g+s+1)+", "+(y+s+1)+")"),g+=n,y+=i/2-1-2}if(u.label){let v=m.append("g");await Hn(v,u.label,{useHtmlLabels:!1,width:f,classes:"architecture-service-label"},me()),v.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),v.attr("transform","translate("+(g+s+4)+", "+(y+s+2)+")")}}}))},"drawGroups"),$ve=o(async function(t,e,r){for(let n of r){let i=e.append("g"),a=Li("iconSize");if(n.title){let h=i.append("g");await Hn(h,n.title,{useHtmlLabels:!1,width:a*1.5,classes:"architecture-service-label"},me()),h.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),h.attr("transform","translate("+a/2+", "+a+")")}let s=i.append("g");if(n.icon)s.html(`${await wo(n.icon,{height:a,width:a,fallbackPrefix:Zp.prefix})}`);else if(n.iconText){s.html(`${await wo("blank",{height:a,width:a,fallbackPrefix:Zp.prefix})}`);let d=s.append("g").append("foreignObject").attr("width",a).attr("height",a).append("div").attr("class","node-icon-text").attr("style",`height: ${a}px;`).append("div").html(n.iconText),p=parseInt(window.getComputedStyle(d.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;d.attr("style",`-webkit-line-clamp: ${Math.floor((a-2)/p)};`)}else s.append("path").attr("class","node-bkg").attr("id","node-"+n.id).attr("d",`M0 ${a} v${-a} q0,-5 5,-5 h${a} q5,0 5,5 v${a} H0 Z`);i.attr("class","architecture-service");let{width:l,height:u}=i._groups[0][0].getBBox();n.width=l,n.height=u,t.setElementForId(n.id,i)}return 0},"drawServices"),zve=o(function(t,e,r){r.forEach(n=>{let i=e.append("g"),a=Li("iconSize");i.append("g").append("rect").attr("id","node-"+n.id).attr("fill-opacity","0").attr("width",a).attr("height",a),i.attr("class","architecture-junction");let{width:l,height:u}=i._groups[0][0].getBBox();i.width=l,i.height=u,t.setElementForId(n.id,i)})},"drawJunctions")});function Srt(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"service",id:r.id,icon:r.icon,label:r.title,parent:r.in,width:Li("iconSize"),height:Li("iconSize")},classes:"node-service"})})}function Crt(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"junction",id:r.id,parent:r.in,width:Li("iconSize"),height:Li("iconSize")},classes:"node-junction"})})}function Art(t,e){e.nodes().map(r=>{let n=Ff(r);if(n.type==="group")return;n.x=r.position().x,n.y=r.position().y,t.getElementById(n.id).attr("transform","translate("+(n.x||0)+","+(n.y||0)+")")})}function _rt(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"group",id:r.id,icon:r.icon,label:r.title,parent:r.in},classes:"node-group"})})}function Drt(t,e){t.forEach(r=>{let{lhsId:n,rhsId:i,lhsInto:a,lhsGroup:s,rhsInto:l,lhsDir:u,rhsDir:h,rhsGroup:f,title:d}=r,p=x4(r.lhsDir,r.rhsDir)?"segments":"straight",m={id:`${n}-${i}`,label:d,source:n,sourceDir:u,sourceArrow:a,sourceGroup:s,sourceEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%",target:i,targetDir:h,targetArrow:l,targetGroup:f,targetEndpoint:h==="L"?"0 50%":h==="R"?"100% 50%":h==="T"?"50% 0":"50% 100%"};e.add({group:"edges",data:m,classes:p})})}function Lrt(t,e,r){let n=o((l,u)=>Object.entries(l).reduce((h,[f,d])=>{let p=0,m=Object.entries(d);if(m.length===1)return h[f]=m[0][1],h;for(let g=0;g{let u={},h={};return Object.entries(l).forEach(([f,[d,p]])=>{let m=t.getNode(f)?.in??"default";u[p]??={},u[p][m]??=[],u[p][m].push(f),h[d]??={},h[d][m]??=[],h[d][m].push(f)}),{horiz:Object.values(n(u,"horizontal")).filter(f=>f.length>1),vert:Object.values(n(h,"vertical")).filter(f=>f.length>1)}}),[a,s]=i.reduce(([l,u],{horiz:h,vert:f})=>[[...l,...h],[...u,...f]],[[],[]]);return{horizontal:a,vertical:s}}function Rrt(t){let e=[],r=o(i=>`${i[0]},${i[1]}`,"posToStr"),n=o(i=>i.split(",").map(a=>parseInt(a)),"strToPos");return t.forEach(i=>{let a=Object.fromEntries(Object.entries(i).map(([h,f])=>[r(f),h])),s=[r([0,0])],l={},u={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;s.length>0;){let h=s.shift();if(h){l[h]=1;let f=a[h];if(f){let d=n(h);Object.entries(u).forEach(([p,m])=>{let g=r([d[0]+m[0],d[1]+m[1]]),y=a[g];y&&!l[g]&&(s.push(g),e.push({[lF[p]]:y,[lF[Eve(p)]]:f,gap:1.5*Li("iconSize")}))})}}}}),e}function Nrt(t,e,r,n,i,{spatialMaps:a,groupAlignments:s}){return new Promise(l=>{let u=Ge("body").append("div").attr("id","cy").attr("style","display:none"),h=rl({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${Li("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${Li("padding")}px`}}]});u.remove(),_rt(r,h),Srt(t,h),Crt(e,h),Drt(n,h);let f=Lrt(i,a,s),d=Rrt(a),p=h.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(m){let[g,y]=m.connectedNodes(),{parent:v}=Ff(g),{parent:x}=Ff(y);return v===x?1.5*Li("iconSize"):.5*Li("iconSize")},edgeElasticity(m){let[g,y]=m.connectedNodes(),{parent:v}=Ff(g),{parent:x}=Ff(y);return v===x?.45:.001},alignmentConstraint:f,relativePlacementConstraint:d});p.one("layoutstop",()=>{function m(g,y,v,x){let b,w,{x:C,y:T}=g,{x:E,y:A}=y;w=(x-T+(C-v)*(T-A)/(C-E))/Math.sqrt(1+Math.pow((T-A)/(C-E),2)),b=Math.sqrt(Math.pow(x-T,2)+Math.pow(v-C,2)-Math.pow(w,2));let S=Math.sqrt(Math.pow(E-C,2)+Math.pow(A-T,2));b=b/S;let _=(E-C)*(x-T)-(A-T)*(v-C);switch(!0){case _>=0:_=1;break;case _<0:_=-1;break}let I=(E-C)*(v-C)+(A-T)*(x-T);switch(!0){case I>=0:I=1;break;case I<0:I=-1;break}return w=Math.abs(w)*_,b=b*I,{distances:w,weights:b}}o(m,"getSegmentWeights"),h.startBatch();for(let g of Object.values(h.edges()))if(g.data?.()){let{x:y,y:v}=g.source().position(),{x,y:b}=g.target().position();if(y!==x&&v!==b){let w=g.sourceEndpoint(),C=g.targetEndpoint(),{sourceDir:T}=sC(g),[E,A]=Zc(T)?[w.x,C.y]:[C.x,w.y],{weights:S,distances:_}=m(w,C,E,A);g.style("segment-distances",_),g.style("segment-weights",S)}}h.endBatch(),p.run()}),p.run(),h.ready(m=>{Y.info("Ready",m),l(h)})})}var Vve,Mrt,Uve,Hve=N(()=>{"use strict";tu();kB();Vve=Sa(Pve(),1);dr();vt();Vc();Ei();w4();yF();oC();Gve();P4([{name:Zp.prefix,icons:Zp}]);rl.use(Vve.default);o(Srt,"addServices");o(Crt,"addJunctions");o(Art,"positionNodes");o(_rt,"addGroups");o(Drt,"addEdges");o(Lrt,"getAlignments");o(Rrt,"getRelativeConstraints");o(Nrt,"layoutArchitecture");Mrt=o(async(t,e,r,n)=>{let i=n.db,a=i.getServices(),s=i.getJunctions(),l=i.getGroups(),u=i.getEdges(),h=i.getDataStructures(),f=sa(e),d=f.append("g");d.attr("class","architecture-edges");let p=f.append("g");p.attr("class","architecture-services");let m=f.append("g");m.attr("class","architecture-groups"),await $ve(i,p,a),zve(i,p,s);let g=await Nrt(a,s,l,u,i,h);await Bve(d,g),await Fve(m,g),Art(i,g),Ao(void 0,f,Li("padding"),Li("useMaxWidth"))},"draw"),Uve={draw:Mrt}});var Wve={};hr(Wve,{diagram:()=>Irt});var Irt,qve=N(()=>{"use strict";Mve();w4();Ove();Hve();Irt={parser:Nve,db:Qp,renderer:Uve,styles:Ive}});var bnt={};hr(bnt,{default:()=>xnt});tu();PC();Xf();var YX="c4",PCe=o(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),BCe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(qX(),WX));return{id:YX,diagram:t}},"loader"),FCe={id:YX,detector:PCe,loader:BCe},XX=FCe;var Xie="flowchart",xOe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-wrapper"||e?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(t),"detector"),bOe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ak(),ik));return{id:Xie,diagram:t}},"loader"),wOe={id:Xie,detector:xOe,loader:bOe},jie=wOe;var Kie="flowchart-v2",TOe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-d3"?!1:(e?.flowchart?.defaultRenderer==="elk"&&(e.layout="elk"),/^\s*graph/.test(t)&&e?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)),"detector"),kOe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ak(),ik));return{id:Kie,diagram:t}},"loader"),EOe={id:Kie,detector:TOe,loader:kOe},Qie=EOe;var sae="er",DOe=o(t=>/^\s*erDiagram/.test(t),"detector"),LOe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(aae(),iae));return{id:sae,diagram:t}},"loader"),ROe={id:sae,detector:DOe,loader:LOe},oae=ROe;var uue="gitGraph",tze=o(t=>/^\s*gitGraph/.test(t),"detector"),rze=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(cue(),lue));return{id:uue,diagram:t}},"loader"),nze={id:uue,detector:tze,loader:rze},hue=nze;var Gue="gantt",Hze=o(t=>/^\s*gantt/.test(t),"detector"),Wze=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(zue(),$ue));return{id:Gue,diagram:t}},"loader"),qze={id:Gue,detector:Hze,loader:Wze},Vue=qze;var Que="info",Zze=o(t=>/^\s*info/.test(t),"detector"),Jze=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Kue(),jue));return{id:Que,diagram:t}},"loader"),Zue={id:Que,detector:Zze,loader:Jze};var lhe="pie",fGe=o(t=>/^\s*pie/.test(t),"detector"),dGe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ohe(),she));return{id:lhe,diagram:t}},"loader"),che={id:lhe,detector:fGe,loader:dGe};var The="quadrantChart",RGe=o(t=>/^\s*quadrantChart/.test(t),"detector"),NGe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(whe(),bhe));return{id:The,diagram:t}},"loader"),MGe={id:The,detector:RGe,loader:NGe},khe=MGe;var Khe="xychart",jGe=o(t=>/^\s*xychart-beta/.test(t),"detector"),KGe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(jhe(),Xhe));return{id:Khe,diagram:t}},"loader"),QGe={id:Khe,detector:jGe,loader:KGe},Qhe=QGe;var sfe="requirement",tVe=o(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),rVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(afe(),ife));return{id:sfe,diagram:t}},"loader"),nVe={id:sfe,detector:tVe,loader:rVe},ofe=nVe;var Afe="sequence",zVe=o(t=>/^\s*sequenceDiagram/.test(t),"detector"),GVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Cfe(),Sfe));return{id:Afe,diagram:t}},"loader"),VVe={id:Afe,detector:zVe,loader:GVe},_fe=VVe;var Ife="class",XVe=o((t,e)=>e?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t),"detector"),jVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Mfe(),Nfe));return{id:Ife,diagram:t}},"loader"),KVe={id:Ife,detector:XVe,loader:jVe},Ofe=KVe;var Ffe="classDiagram",ZVe=o((t,e)=>/^\s*classDiagram/.test(t)&&e?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t),"detector"),JVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Bfe(),Pfe));return{id:Ffe,diagram:t}},"loader"),eUe={id:Ffe,detector:ZVe,loader:JVe},$fe=eUe;var Ede="state",LUe=o((t,e)=>e?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t),"detector"),RUe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(kde(),Tde));return{id:Ede,diagram:t}},"loader"),NUe={id:Ede,detector:LUe,loader:RUe},Sde=NUe;var _de="stateDiagram",IUe=o((t,e)=>!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&e?.state?.defaultRenderer==="dagre-wrapper"),"detector"),OUe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Ade(),Cde));return{id:_de,diagram:t}},"loader"),PUe={id:_de,detector:IUe,loader:OUe},Dde=PUe;var Wde="journey",nHe=o(t=>/^\s*journey/.test(t),"detector"),iHe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Hde(),Ude));return{id:Wde,diagram:t}},"loader"),aHe={id:Wde,detector:nHe,loader:iHe},qde=aHe;vt();Vc();Ei();var sHe=o((t,e,r)=>{Y.debug(`rendering svg for syntax error -`);let n=sa(e),i=n.append("g");n.attr("viewBox","0 0 2412 512"),vn(n,100,512,!0),i.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),i.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),i.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),i.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),i.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),i.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),i.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw"),fP={draw:sHe},Yde=fP;var oHe={db:{},renderer:fP,parser:{parse:o(()=>{},"parse")}},Xde=oHe;var jde="flowchart-elk",lHe=o((t,e={})=>/^\s*flowchart-elk/.test(t)||/^\s*flowchart|graph/.test(t)&&e?.flowchart?.defaultRenderer==="elk"?(e.layout="elk",!0):!1,"detector"),cHe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ak(),ik));return{id:jde,diagram:t}},"loader"),uHe={id:jde,detector:lHe,loader:cHe},Kde=uHe;var Tpe="timeline",DHe=o(t=>/^\s*timeline/.test(t),"detector"),LHe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(wpe(),bpe));return{id:Tpe,diagram:t}},"loader"),RHe={id:Tpe,detector:DHe,loader:LHe},kpe=RHe;var e1e="mindmap",cJe=o(t=>/^\s*mindmap/.test(t),"detector"),uJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Jge(),Zge));return{id:e1e,diagram:t}},"loader"),hJe={id:e1e,detector:cJe,loader:uJe},t1e=hJe;var d1e="kanban",AJe=o(t=>/^\s*kanban/.test(t),"detector"),_Je=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(f1e(),h1e));return{id:d1e,diagram:t}},"loader"),DJe={id:d1e,detector:AJe,loader:_Je},p1e=DJe;var j1e="sankey",ZJe=o(t=>/^\s*sankey-beta/.test(t),"detector"),JJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(X1e(),Y1e));return{id:j1e,diagram:t}},"loader"),eet={id:j1e,detector:ZJe,loader:JJe},K1e=eet;var sye="packet",pet=o(t=>/^\s*packet-beta/.test(t),"detector"),met=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(aye(),iye));return{id:sye,diagram:t}},"loader"),oye={id:sye,detector:pet,loader:met};var vye="radar",Fet=o(t=>/^\s*radar-beta/.test(t),"detector"),$et=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(yye(),gye));return{id:vye,diagram:t}},"loader"),xye={id:vye,detector:Fet,loader:$et};var Tve="block",srt=o(t=>/^\s*block-beta/.test(t),"detector"),ort=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(wve(),bve));return{id:Tve,diagram:t}},"loader"),lrt={id:Tve,detector:srt,loader:ort},kve=lrt;var Yve="architecture",Ort=o(t=>/^\s*architecture/.test(t),"detector"),Prt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(qve(),Wve));return{id:Yve,diagram:t}},"loader"),Brt={id:Yve,detector:Ort,loader:Prt},Xve=Brt;Xf();zt();var jve=!1,py=o(()=>{jve||(jve=!0,ad("error",Xde,t=>t.toLowerCase().trim()==="error"),ad("---",{db:{clear:o(()=>{},"clear")},styles:{},renderer:{draw:o(()=>{},"draw")},parser:{parse:o(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:o(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),z4(XX,p1e,$fe,Ofe,oae,Vue,Zue,che,ofe,_fe,Kde,Qie,jie,t1e,kpe,hue,Dde,Sde,qde,khe,K1e,oye,Qhe,kve,Xve,xye))},"addDiagrams");vt();Xf();zt();var Kve=o(async()=>{Y.debug("Loading registered diagrams");let e=(await Promise.allSettled(Object.entries(Yf).map(async([r,{detector:n,loader:i}])=>{if(i)try{jy(r)}catch{try{let{diagram:a,id:s}=await i();ad(s,a,n)}catch(a){throw Y.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete Yf[r],a}}}))).filter(r=>r.status==="rejected");if(e.length>0){Y.error(`Failed to load ${e.length} external diagrams`);for(let r of e)Y.error(r);throw new Error(`Failed to load ${e.length} external diagrams`)}},"loadRegisteredDiagrams");vt();dr();var lC="comm",cC="rule",uC="decl";var Qve="@import";var Zve="@namespace",Jve="@keyframes";var e2e="@layer";var vF=Math.abs,S4=String.fromCharCode;function hC(t){return t.trim()}o(hC,"trim");function C4(t,e,r){return t.replace(e,r)}o(C4,"replace");function t2e(t,e,r){return t.indexOf(e,r)}o(t2e,"indexof");function $f(t,e){return t.charCodeAt(e)|0}o($f,"charat");function zf(t,e,r){return t.slice(e,r)}o(zf,"substr");function vo(t){return t.length}o(vo,"strlen");function r2e(t){return t.length}o(r2e,"sizeof");function my(t,e){return e.push(t),t}o(my,"append");var fC=1,gy=1,n2e=0,il=0,Ri=0,vy="";function dC(t,e,r,n,i,a,s,l){return{value:t,root:e,parent:r,type:n,props:i,children:a,line:fC,column:gy,length:s,return:"",siblings:l}}o(dC,"node");function i2e(){return Ri}o(i2e,"char");function a2e(){return Ri=il>0?$f(vy,--il):0,gy--,Ri===10&&(gy=1,fC--),Ri}o(a2e,"prev");function al(){return Ri=il2||yy(Ri)>3?"":" "}o(l2e,"whitespace");function c2e(t,e){for(;--e&&al()&&!(Ri<48||Ri>102||Ri>57&&Ri<65||Ri>70&&Ri<97););return pC(t,A4()+(e<6&&rh()==32&&al()==32))}o(c2e,"escaping");function xF(t){for(;al();)switch(Ri){case t:return il;case 34:case 39:t!==34&&t!==39&&xF(Ri);break;case 40:t===41&&xF(t);break;case 92:al();break}return il}o(xF,"delimiter");function u2e(t,e){for(;al()&&t+Ri!==57;)if(t+Ri===84&&rh()===47)break;return"/*"+pC(e,il-1)+"*"+S4(t===47?t:al())}o(u2e,"commenter");function h2e(t){for(;!yy(rh());)al();return pC(t,il)}o(h2e,"identifier");function p2e(t){return o2e(gC("",null,null,null,[""],t=s2e(t),0,[0],t))}o(p2e,"compile");function gC(t,e,r,n,i,a,s,l,u){for(var h=0,f=0,d=s,p=0,m=0,g=0,y=1,v=1,x=1,b=0,w="",C=i,T=a,E=n,A=w;v;)switch(g=b,b=al()){case 40:if(g!=108&&$f(A,d-1)==58){t2e(A+=C4(mC(b),"&","&\f"),"&\f",vF(h?l[h-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:A+=mC(b);break;case 9:case 10:case 13:case 32:A+=l2e(g);break;case 92:A+=c2e(A4()-1,7);continue;case 47:switch(rh()){case 42:case 47:my(Frt(u2e(al(),A4()),e,r,u),u),(yy(g||1)==5||yy(rh()||1)==5)&&vo(A)&&zf(A,-1,void 0)!==" "&&(A+=" ");break;default:A+="/"}break;case 123*y:l[h++]=vo(A)*x;case 125*y:case 59:case 0:switch(b){case 0:case 125:v=0;case 59+f:x==-1&&(A=C4(A,/\f/g,"")),m>0&&(vo(A)-d||y===0&&g===47)&&my(m>32?d2e(A+";",n,r,d-1,u):d2e(C4(A," ","")+";",n,r,d-2,u),u);break;case 59:A+=";";default:if(my(E=f2e(A,e,r,h,f,i,l,w,C=[],T=[],d,a),a),b===123)if(f===0)gC(A,e,E,E,C,a,d,l,T);else{switch(p){case 99:if($f(A,3)===110)break;case 108:if($f(A,2)===97)break;default:f=0;case 100:case 109:case 115:}f?gC(t,E,E,n&&my(f2e(t,E,E,0,0,i,l,w,i,C=[],d,T),T),i,T,d,l,n?C:T):gC(A,E,E,E,[""],T,0,l,T)}}h=f=m=0,y=x=1,w=A="",d=s;break;case 58:d=1+vo(A),m=g;default:if(y<1){if(b==123)--y;else if(b==125&&y++==0&&a2e()==125)continue}switch(A+=S4(b),b*y){case 38:x=f>0?1:(A+="\f",-1);break;case 44:l[h++]=(vo(A)-1)*x,x=1;break;case 64:rh()===45&&(A+=mC(al())),p=rh(),f=d=vo(w=A+=h2e(A4())),b++;break;case 45:g===45&&vo(A)==2&&(y=0)}}return a}o(gC,"parse");function f2e(t,e,r,n,i,a,s,l,u,h,f,d){for(var p=i-1,m=i===0?a:[""],g=r2e(m),y=0,v=0,x=0;y0?m[b]+" "+w:C4(w,/&\f/g,m[b])))&&(u[x++]=C);return dC(t,e,r,i===0?cC:l,u,h,f,d)}o(f2e,"ruleset");function Frt(t,e,r,n){return dC(t,e,r,lC,S4(i2e()),zf(t,2,-2),0,n)}o(Frt,"comment");function d2e(t,e,r,n,i){return dC(t,e,r,uC,zf(t,0,n),zf(t,n+1,-1),n,i)}o(d2e,"declaration");function yC(t,e){for(var r="",n=0;n{v2e.forEach(t=>{t()}),v2e=[]},"attachFunctions");vt();var b2e=o(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");$4();Ew();function w2e(t){let e=t.match(F4);if(!e)return{text:t,metadata:{}};let r=cm(e[1],{schema:lm})??{};r=typeof r=="object"&&!Array.isArray(r)?r:{};let n={};return r.displayMode&&(n.displayMode=r.displayMode.toString()),r.title&&(n.title=r.title.toString()),r.config&&(n.config=r.config),{text:t.slice(e[0].length),metadata:n}}o(w2e,"extractFrontMatter");ir();var zrt=o(t=>t.replace(/\r\n?/g,` -`).replace(/<(\w+)([^>]*)>/g,(e,r,n)=>"<"+r+n.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),Grt=o(t=>{let{text:e,metadata:r}=w2e(t),{displayMode:n,title:i,config:a={}}=r;return n&&(a.gantt||(a.gantt={}),a.gantt.displayMode=n),{title:i,config:a,text:e}},"processFrontmatter"),Vrt=o(t=>{let e=Gt.detectInit(t)??{},r=Gt.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:n})=>n==="wrap"):r?.type==="wrap"&&(e.wrap=!0),{text:IX(t),directive:e}},"processDirectives");function bF(t){let e=zrt(t),r=Grt(e),n=Vrt(r.text),i=Fi(r.config,n.directive);return t=b2e(n.text),{code:t,title:r.title,config:i}}o(bF,"preprocessDiagram");tA();q4();ir();function T2e(t){let e=new TextEncoder().encode(t),r=Array.from(e,n=>String.fromCodePoint(n)).join("");return btoa(r)}o(T2e,"toBase64");var Urt=5e4,Hrt="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",Wrt="sandbox",qrt="loose",Yrt="http://www.w3.org/2000/svg",Xrt="http://www.w3.org/1999/xlink",jrt="http://www.w3.org/1999/xhtml",Krt="100%",Qrt="100%",Zrt="border:0;margin:0;",Jrt="margin:0",ent="allow-top-navigation-by-user-activation allow-popups",tnt='The "iframe" tag is not supported by your browser.',rnt=["foreignobject"],nnt=["dominant-baseline"];function C2e(t){let e=bF(t);return Ly(),W$(e.config??{}),e}o(C2e,"processAndSetConfigs");async function int(t,e){py();try{let{code:r,config:n}=C2e(t);return{diagramType:(await A2e(r)).type,config:n}}catch(r){if(e?.suppressErrors)return!1;throw r}}o(int,"parse");var k2e=o((t,e,r=[])=>` -.${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),ant=o((t,e=new Map)=>{let r="";if(t.themeCSS!==void 0&&(r+=` +`,"getStyles"),D4e=_it});var Lz=Da((O4,Dz)=>{"use strict";o((function(e,r){typeof O4=="object"&&typeof Dz=="object"?Dz.exports=r():typeof define=="function"&&define.amd?define([],r):typeof O4=="object"?O4.layoutBase=r():e.layoutBase=r()}),"webpackUniversalModuleDefinition")(O4,function(){return(function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=28)})([(function(t,e,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s}),(function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(5);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp?(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(p+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(m+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>m?(this.rect.y-=(this.labelHeight-m)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(m+this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h}),(function(t,e,r){"use strict";var n=r(0);function i(){}o(i,"FDLayoutConstants");for(var a in n)i[a]=n[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=i}),(function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(7),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T-1&&k>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(w,1),x.target!=x.source&&x.target.edges.splice(k,1);var S=x.source.owner.getEdges().indexOf(x);if(S==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(S,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),S=T.length,w=0;wv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,S,w,k,A,C=this.nodes,R=C.length,I=0;IT&&(y=T),vw&&(x=w),bT&&(y=T),vw&&(x=w),b=this.nodes.length){var R=0;v.forEach(function(I){I.owner==g&&R++}),R==this.nodes.length&&(this.isConnected=!0)}},t.exports=p}),(function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(6),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=C,!1;if(hf)return l[0]=p,l[1]=h,l[2]=k,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,E=!0):(l[0]=g,l[1]=m,E=!0):_===M&&(u>f?(l[0]=p,l[1]=m,E=!0):(l[0]=x,l[1]=v,E=!0)),-O===M?f>u?(l[2]=A,l[3]=C,D=!0):(l[2]=k,l[3]=w,D=!0):O===M&&(f>u?(l[2]=S,l[3]=w,D=!0):(l[2]=R,l[3]=C,D=!0)),E&&D)return!1;if(u>f?h>d?(P=this.getCardinalDirection(_,M,4),B=this.getCardinalDirection(O,M,2)):(P=this.getCardinalDirection(-_,M,3),B=this.getCardinalDirection(-O,M,1)):h>d?(P=this.getCardinalDirection(-_,M,1),B=this.getCardinalDirection(-O,M,3)):(P=this.getCardinalDirection(_,M,2),B=this.getCardinalDirection(O,M,4)),!E)switch(P){case 1:G=m,F=u+-T/M,l[0]=F,l[1]=G;break;case 2:F=x,G=h+b*M,l[0]=F,l[1]=G;break;case 3:G=v,F=u+T/M,l[0]=F,l[1]=G;break;case 4:F=y,G=h+-b*M,l[0]=F,l[1]=G;break}if(!D)switch(B){case 1:U=w,$=f+-L/M,l[2]=$,l[3]=U;break;case 2:$=R,U=d+I*M,l[2]=$,l[3]=U;break;case 3:U=C,$=f+L/M,l[2]=$,l[3]=U;break;case 4:$=A,U=d+-I*M,l[2]=$,l[3]=U;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,S=void 0,w=void 0,k=void 0,A=void 0,C=void 0,R=void 0;return T=p-f,w=h-d,A=d*f-h*p,S=v-g,k=m-y,C=y*g-m*v,R=T*k-S*w,R===0?null:(x=(w*C-k*A)/R,b=(S*A-T*C)/R,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l=0){var v=(-m+Math.sqrt(m*m-4*p*g))/(2*p),x=(-m-Math.sqrt(m*m-4*p*g))/(2*p),b=null;return v>=0&&v<=1?[v]:x>=0&&x<=1?[x]:b}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,t.exports=i}),(function(t,e,r){"use strict";function n(){}o(n,"IMath"),n.sign=function(i){return i>0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n}),(function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n}),(function(t,e,r){"use strict";var n=(function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i}),(function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(T.push(w[0]);T.length>0&&g;){var k=T[0];T.splice(0,1),b.add(k);for(var A=k.getEdges(),x=0;x-1&&w.splice(L,1)}b=new Set,S=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(C,1);var R=S.getNeighborsList();R.forEach(function(E){if(y.indexOf(E)<0){var D=v.get(E),_=D-1;_==1&&k.push(E),v.set(E,_)}})}y=y.concat(k),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p}),(function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n}),(function(t,e,r){"use strict";var n=r(5);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i}),(function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mT||b>T)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||T>=x[0].length)){for(var S=0;Sh},"_defaultCompareFunction")}]),l})();t.exports=s}),(function(t,e,r){"use strict";function n(){}o(n,"SVD"),n.svd=function(i){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=i.length,this.n=i[0].length;var a=Math.min(this.m,this.n);this.s=(function(dt){for(var nt=[];dt-- >0;)nt.push(0);return nt})(Math.min(this.m+1,this.n)),this.U=(function(dt){var nt=o(function bt(wt){if(wt.length==0)return 0;for(var yt=[],ft=0;ft0;)nt.push(0);return nt})(this.n),l=(function(dt){for(var nt=[];dt-- >0;)nt.push(0);return nt})(this.m),u=!0,h=!0,f=Math.min(this.m-1,this.n),d=Math.max(0,Math.min(this.n-2,this.m)),p=0;p=0;M--)if(this.s[M]!==0){for(var P=M+1;P=0;te--){if((function(dt,nt){return dt&&nt})(te0;){var Q=void 0,de=void 0;for(Q=D-2;Q>=-1&&Q!==-1;Q--)if(Math.abs(s[Q])<=ae+K*(Math.abs(this.s[Q])+Math.abs(this.s[Q+1]))){s[Q]=0;break}if(Q===D-2)de=4;else{var ne=void 0;for(ne=D-1;ne>=Q&&ne!==Q;ne--){var Te=(ne!==D?Math.abs(s[ne]):0)+(ne!==Q+1?Math.abs(s[ne-1]):0);if(Math.abs(this.s[ne])<=ae+K*Te){this.s[ne]=0;break}}ne===Q?de=3:ne===D-1?de=1:(de=2,Q=ne)}switch(Q++,de){case 1:{var q=s[D-2];s[D-2]=0;for(var Ve=D-2;Ve>=Q;Ve--){var pe=n.hypot(this.s[Ve],q),Be=this.s[Ve]/pe,Ye=q/pe;if(this.s[Ve]=pe,Ve!==Q&&(q=-Ye*s[Ve-1],s[Ve-1]=Be*s[Ve-1]),h)for(var He=0;He=this.s[Q+1]);){var lt=this.s[Q];if(this.s[Q]=this.s[Q+1],this.s[Q+1]=lt,h&&QMath.abs(a)?(s=a/i,s=Math.abs(i)*Math.sqrt(1+s*s)):a!=0?(s=i/a,s=Math.abs(a)*Math.sqrt(1+s*s)):s=0,s},t.exports=n}),(function(t,e,r){"use strict";var n=(function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o((function(e,r){typeof P4=="object"&&typeof Rz=="object"?Rz.exports=r(Lz()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof P4=="object"?P4.coseBase=r(Lz()):e.coseBase=r(e.layoutBase)}),"webpackUniversalModuleDefinition")(P4,function(t){return(()=>{"use strict";var e={45:((a,s,l)=>{var u={};u.layoutBase=l(551),u.CoSEConstants=l(806),u.CoSEEdge=l(767),u.CoSEGraph=l(880),u.CoSEGraphManager=l(578),u.CoSELayout=l(765),u.CoSENode=l(991),u.ConstraintHandler=l(902),a.exports=u}),806:((a,s,l)=>{var u=l(551).FDLayoutConstants;function h(){}o(h,"CoSEConstants");for(var f in u)h[f]=u[f];h.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,h.DEFAULT_RADIAL_SEPARATION=u.DEFAULT_EDGE_LENGTH,h.DEFAULT_COMPONENT_SEPERATION=60,h.TILE=!0,h.TILING_PADDING_VERTICAL=10,h.TILING_PADDING_HORIZONTAL=10,h.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,h.ENFORCE_CONSTRAINTS=!0,h.APPLY_LAYOUT=!0,h.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,h.TREE_REDUCTION_ON_INCREMENTAL=!0,h.PURE_INCREMENTAL=h.DEFAULT_INCREMENTAL,a.exports=h}),767:((a,s,l)=>{var u=l(551).FDLayoutEdge;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEEdge"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h}),880:((a,s,l)=>{var u=l(551).LGraph;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEGraph"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h}),578:((a,s,l)=>{var u=l(551).LGraphManager;function h(d){u.call(this,d)}o(h,"CoSEGraphManager"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h}),765:((a,s,l)=>{var u=l(551).FDLayout,h=l(578),f=l(880),d=l(991),p=l(767),m=l(806),g=l(902),y=l(551).FDLayoutConstants,v=l(551).LayoutConstants,x=l(551).Point,b=l(551).PointD,T=l(551).DimensionD,S=l(551).Layout,w=l(551).Integer,k=l(551).IGeometry,A=l(551).LGraph,C=l(551).Transform,R=l(551).LinkedList;function I(){u.call(this),this.toBeTiled={},this.constraints={}}o(I,"CoSELayout"),I.prototype=Object.create(u.prototype);for(var L in u)I[L]=u[L];I.prototype.newGraphManager=function(){var E=new h(this);return this.graphManager=E,E},I.prototype.newGraph=function(E){return new f(null,this.graphManager,E)},I.prototype.newNode=function(E){return new d(this.graphManager,E)},I.prototype.newEdge=function(E){return new p(null,null,E)},I.prototype.initParameters=function(){u.prototype.initParameters.call(this,arguments),this.isSubLayout||(m.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=m.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=y.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=y.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=y.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},I.prototype.initSpringEmbedder=function(){u.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/y.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},I.prototype.layout=function(){var E=v.DEFAULT_CREATE_BENDS_AS_NEEDED;return E&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},I.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(m.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var D=new Set(this.getAllNodes()),_=this.nodesWithGravity.filter(function(P){return D.has(P)});this.graphManager.setAllNodesToApplyGravitation(_)}}else{var E=this.getFlatForest();if(E.length>0)this.positionNodesRadially(E);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var D=new Set(this.getAllNodes()),_=this.nodesWithGravity.filter(function(O){return D.has(O)});this.graphManager.setAllNodesToApplyGravitation(_),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),m.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},I.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%y.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var E=new Set(this.getAllNodes()),D=this.nodesWithGravity.filter(function(M){return E.has(M)});this.graphManager.setAllNodesToApplyGravitation(D),this.graphManager.updateBounds(),this.updateGrid(),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var _=!this.isTreeGrowing&&!this.isGrowthFinished,O=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(_,O),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},I.prototype.getPositionsData=function(){for(var E=this.graphManager.getAllNodes(),D={},_=0;_0&&this.updateDisplacements();for(var _=0;_0&&(O.fixedNodeWeight=P)}}if(this.constraints.relativePlacementConstraint){var B=new Map,F=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(J){E.fixedNodesOnHorizontal.add(J),E.fixedNodesOnVertical.add(J)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var G=this.constraints.alignmentConstraint.vertical,_=0;_=2*J.length/3;ee--)ue=Math.floor(Math.random()*(ee+1)),re=J[ee],J[ee]=J[ue],J[ue]=re;return J},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(J){if(J.left){var ue=B.has(J.left)?B.get(J.left):J.left,re=B.has(J.right)?B.get(J.right):J.right;E.nodesInRelativeHorizontal.includes(ue)||(E.nodesInRelativeHorizontal.push(ue),E.nodeToRelativeConstraintMapHorizontal.set(ue,[]),E.dummyToNodeForVerticalAlignment.has(ue)?E.nodeToTempPositionMapHorizontal.set(ue,E.idToNodeMap.get(E.dummyToNodeForVerticalAlignment.get(ue)[0]).getCenterX()):E.nodeToTempPositionMapHorizontal.set(ue,E.idToNodeMap.get(ue).getCenterX())),E.nodesInRelativeHorizontal.includes(re)||(E.nodesInRelativeHorizontal.push(re),E.nodeToRelativeConstraintMapHorizontal.set(re,[]),E.dummyToNodeForVerticalAlignment.has(re)?E.nodeToTempPositionMapHorizontal.set(re,E.idToNodeMap.get(E.dummyToNodeForVerticalAlignment.get(re)[0]).getCenterX()):E.nodeToTempPositionMapHorizontal.set(re,E.idToNodeMap.get(re).getCenterX())),E.nodeToRelativeConstraintMapHorizontal.get(ue).push({right:re,gap:J.gap}),E.nodeToRelativeConstraintMapHorizontal.get(re).push({left:ue,gap:J.gap})}else{var ee=F.has(J.top)?F.get(J.top):J.top,Z=F.has(J.bottom)?F.get(J.bottom):J.bottom;E.nodesInRelativeVertical.includes(ee)||(E.nodesInRelativeVertical.push(ee),E.nodeToRelativeConstraintMapVertical.set(ee,[]),E.dummyToNodeForHorizontalAlignment.has(ee)?E.nodeToTempPositionMapVertical.set(ee,E.idToNodeMap.get(E.dummyToNodeForHorizontalAlignment.get(ee)[0]).getCenterY()):E.nodeToTempPositionMapVertical.set(ee,E.idToNodeMap.get(ee).getCenterY())),E.nodesInRelativeVertical.includes(Z)||(E.nodesInRelativeVertical.push(Z),E.nodeToRelativeConstraintMapVertical.set(Z,[]),E.dummyToNodeForHorizontalAlignment.has(Z)?E.nodeToTempPositionMapVertical.set(Z,E.idToNodeMap.get(E.dummyToNodeForHorizontalAlignment.get(Z)[0]).getCenterY()):E.nodeToTempPositionMapVertical.set(Z,E.idToNodeMap.get(Z).getCenterY())),E.nodeToRelativeConstraintMapVertical.get(ee).push({bottom:Z,gap:J.gap}),E.nodeToRelativeConstraintMapVertical.get(Z).push({top:ee,gap:J.gap})}});else{var U=new Map,j=new Map;this.constraints.relativePlacementConstraint.forEach(function(J){if(J.left){var ue=B.has(J.left)?B.get(J.left):J.left,re=B.has(J.right)?B.get(J.right):J.right;U.has(ue)?U.get(ue).push(re):U.set(ue,[re]),U.has(re)?U.get(re).push(ue):U.set(re,[ue])}else{var ee=F.has(J.top)?F.get(J.top):J.top,Z=F.has(J.bottom)?F.get(J.bottom):J.bottom;j.has(ee)?j.get(ee).push(Z):j.set(ee,[Z]),j.has(Z)?j.get(Z).push(ee):j.set(Z,[ee])}});var te=o(function(ue,re){var ee=[],Z=[],K=new R,ae=new Set,Q=0;return ue.forEach(function(de,ne){if(!ae.has(ne)){ee[Q]=[],Z[Q]=!1;var Te=ne;for(K.push(Te),ae.add(Te),ee[Q].push(Te);K.length!=0;){Te=K.shift(),re.has(Te)&&(Z[Q]=!0);var q=ue.get(Te);q.forEach(function(Ve){ae.has(Ve)||(K.push(Ve),ae.add(Ve),ee[Q].push(Ve))})}Q++}}),{components:ee,isFixed:Z}},"constructComponents"),Y=te(U,E.fixedNodesOnHorizontal);this.componentsOnHorizontal=Y.components,this.fixedComponentsOnHorizontal=Y.isFixed;var oe=te(j,E.fixedNodesOnVertical);this.componentsOnVertical=oe.components,this.fixedComponentsOnVertical=oe.isFixed}}},I.prototype.updateDisplacements=function(){var E=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(oe){var J=E.idToNodeMap.get(oe.nodeId);J.displacementX=0,J.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var D=this.constraints.alignmentConstraint.vertical,_=0;_1){var F;for(F=0;FO&&(O=Math.floor(B.y)),P=Math.floor(B.x+m.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(v.WORLD_CENTER_X-B.x/2,v.WORLD_CENTER_Y-B.y/2))},I.radialLayout=function(E,D,_){var O=Math.max(this.maxDiagonalInTree(E),m.DEFAULT_RADIAL_SEPARATION);I.branchRadialLayout(D,null,0,359,0,O);var M=A.calculateBounds(E),P=new C;P.setDeviceOrgX(M.getMinX()),P.setDeviceOrgY(M.getMinY()),P.setWorldOrgX(_.x),P.setWorldOrgY(_.y);for(var B=0;B1;){var ee=re[0];re.splice(0,1);var Z=te.indexOf(ee);Z>=0&&te.splice(Z,1),J--,Y--}D!=null?ue=(te.indexOf(re[0])+1)%J:ue=0;for(var K=Math.abs(O-_)/Y,ae=ue;oe!=Y;ae=++ae%J){var Q=te[ae].getOtherEnd(E);if(Q!=D){var de=(_+oe*K)%360,ne=(de+K)%360;I.branchRadialLayout(Q,E,de,ne,M+P,P),oe++}}},I.maxDiagonalInTree=function(E){for(var D=w.MIN_VALUE,_=0;_D&&(D=M)}return D},I.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},I.prototype.groupZeroDegreeMembers=function(){var E=this,D={};this.memberGroups={},this.idToDummyNode={};for(var _=[],O=this.graphManager.getAllNodes(),M=0;M"u"&&(D[F]=[]),D[F]=D[F].concat(P)}Object.keys(D).forEach(function(G){if(D[G].length>1){var $="DummyCompound_"+G;E.memberGroups[$]=D[G];var U=D[G][0].getParent(),j=new d(E.graphManager);j.id=$,j.paddingLeft=U.paddingLeft||0,j.paddingRight=U.paddingRight||0,j.paddingBottom=U.paddingBottom||0,j.paddingTop=U.paddingTop||0,E.idToDummyNode[$]=j;var te=E.getGraphManager().add(E.newGraph(),j),Y=U.getChild();Y.add(j);for(var oe=0;oeM?(O.rect.x-=(O.labelWidth-M)/2,O.setWidth(O.labelWidth),O.labelMarginLeft=(O.labelWidth-M)/2):O.labelPosHorizontal=="right"&&O.setWidth(M+O.labelWidth)),O.labelHeight&&(O.labelPosVertical=="top"?(O.rect.y-=O.labelHeight,O.setHeight(P+O.labelHeight),O.labelMarginTop=O.labelHeight):O.labelPosVertical=="center"&&O.labelHeight>P?(O.rect.y-=(O.labelHeight-P)/2,O.setHeight(O.labelHeight),O.labelMarginTop=(O.labelHeight-P)/2):O.labelPosVertical=="bottom"&&O.setHeight(P+O.labelHeight))}})},I.prototype.repopulateCompounds=function(){for(var E=this.compoundOrder.length-1;E>=0;E--){var D=this.compoundOrder[E],_=D.id,O=D.paddingLeft,M=D.paddingTop,P=D.labelMarginLeft,B=D.labelMarginTop;this.adjustLocations(this.tiledMemberPack[_],D.rect.x,D.rect.y,O,M,P,B)}},I.prototype.repopulateZeroDegreeMembers=function(){var E=this,D=this.tiledZeroDegreePack;Object.keys(D).forEach(function(_){var O=E.idToDummyNode[_],M=O.paddingLeft,P=O.paddingTop,B=O.labelMarginLeft,F=O.labelMarginTop;E.adjustLocations(D[_],O.rect.x,O.rect.y,M,P,B,F)})},I.prototype.getToBeTiled=function(E){var D=E.id;if(this.toBeTiled[D]!=null)return this.toBeTiled[D];var _=E.getChild();if(_==null)return this.toBeTiled[D]=!1,!1;for(var O=_.getNodes(),M=0;M0)return this.toBeTiled[D]=!1,!1;if(P.getChild()==null){this.toBeTiled[P.id]=!1;continue}if(!this.getToBeTiled(P))return this.toBeTiled[D]=!1,!1}return this.toBeTiled[D]=!0,!0},I.prototype.getNodeDegree=function(E){for(var D=E.id,_=E.getEdges(),O=0,M=0;M<_.length;M++){var P=_[M];P.getSource().id!==P.getTarget().id&&(O=O+1)}return O},I.prototype.getNodeDegreeWithChildren=function(E){var D=this.getNodeDegree(E);if(E.getChild()==null)return D;for(var _=E.getChild().getNodes(),O=0;O<_.length;O++){var M=_[O];D+=this.getNodeDegreeWithChildren(M)}return D},I.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},I.prototype.fillCompexOrderByDFS=function(E){for(var D=0;DU&&(U=te.rect.height)}_+=U+E.verticalPadding}},I.prototype.tileCompoundMembers=function(E,D){var _=this;this.tiledMemberPack=[],Object.keys(E).forEach(function(O){var M=D[O];if(_.tiledMemberPack[O]=_.tileNodes(E[O],M.paddingLeft+M.paddingRight),M.rect.width=_.tiledMemberPack[O].width,M.rect.height=_.tiledMemberPack[O].height,M.setCenter(_.tiledMemberPack[O].centerX,_.tiledMemberPack[O].centerY),M.labelMarginLeft=0,M.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var P=M.rect.width,B=M.rect.height;M.labelWidth&&(M.labelPosHorizontal=="left"?(M.rect.x-=M.labelWidth,M.setWidth(P+M.labelWidth),M.labelMarginLeft=M.labelWidth):M.labelPosHorizontal=="center"&&M.labelWidth>P?(M.rect.x-=(M.labelWidth-P)/2,M.setWidth(M.labelWidth),M.labelMarginLeft=(M.labelWidth-P)/2):M.labelPosHorizontal=="right"&&M.setWidth(P+M.labelWidth)),M.labelHeight&&(M.labelPosVertical=="top"?(M.rect.y-=M.labelHeight,M.setHeight(B+M.labelHeight),M.labelMarginTop=M.labelHeight):M.labelPosVertical=="center"&&M.labelHeight>B?(M.rect.y-=(M.labelHeight-B)/2,M.setHeight(M.labelHeight),M.labelMarginTop=(M.labelHeight-B)/2):M.labelPosVertical=="bottom"&&M.setHeight(B+M.labelHeight))}})},I.prototype.tileNodes=function(E,D){var _=this.tileNodesByFavoringDim(E,D,!0),O=this.tileNodesByFavoringDim(E,D,!1),M=this.getOrgRatio(_),P=this.getOrgRatio(O),B;return PF&&(F=oe.getWidth())});var G=P/M,$=B/M,U=Math.pow(_-O,2)+4*(G+O)*($+_)*M,j=(O-_+Math.sqrt(U))/(2*(G+O)),te;D?(te=Math.ceil(j),te==j&&te++):te=Math.floor(j);var Y=te*(G+O)-O;return F>Y&&(Y=F),Y+=O*2,Y},I.prototype.tileNodesByFavoringDim=function(E,D,_){var O=m.TILING_PADDING_VERTICAL,M=m.TILING_PADDING_HORIZONTAL,P=m.TILING_COMPARE_BY,B={rows:[],rowWidth:[],rowHeight:[],width:0,height:D,verticalPadding:O,horizontalPadding:M,centerX:0,centerY:0};P&&(B.idealRowWidth=this.calcIdealRowWidth(E,_));var F=o(function(J){return J.rect.width*J.rect.height},"getNodeArea"),G=o(function(J,ue){return F(ue)-F(J)},"areaCompareFcn");E.sort(function(oe,J){var ue=G;return B.idealRowWidth?(ue=P,ue(oe.id,J.id)):ue(oe,J)});for(var $=0,U=0,j=0;j0&&(B+=E.horizontalPadding),E.rowWidth[_]=B,E.width0&&(F+=E.verticalPadding);var G=0;F>E.rowHeight[_]&&(G=E.rowHeight[_],E.rowHeight[_]=F,G=E.rowHeight[_]-G),E.height+=G,E.rows[_].push(D)},I.prototype.getShortestRowIndex=function(E){for(var D=-1,_=Number.MAX_VALUE,O=0;O_&&(D=O,_=E.rowWidth[O]);return D},I.prototype.canAddHorizontal=function(E,D,_){if(E.idealRowWidth){var O=E.rows.length-1,M=E.rowWidth[O];return M+D+E.horizontalPadding<=E.idealRowWidth}var P=this.getShortestRowIndex(E);if(P<0)return!0;var B=E.rowWidth[P];if(B+E.horizontalPadding+D<=E.width)return!0;var F=0;E.rowHeight[P]<_&&P>0&&(F=_+E.verticalPadding-E.rowHeight[P]);var G;E.width-B>=D+E.horizontalPadding?G=(E.height+F)/(B+D+E.horizontalPadding):G=(E.height+F)/E.width,F=_+E.verticalPadding;var $;return E.widthP&&D!=_){O.splice(-1,1),E.rows[_].push(M),E.rowWidth[D]=E.rowWidth[D]-P,E.rowWidth[_]=E.rowWidth[_]+P,E.width=E.rowWidth[instance.getLongestRowIndex(E)];for(var B=Number.MIN_VALUE,F=0;FB&&(B=O[F].height);D>0&&(B+=E.verticalPadding);var G=E.rowHeight[D]+E.rowHeight[_];E.rowHeight[D]=B,E.rowHeight[_]0)for(var Y=M;Y<=P;Y++)te[0]+=this.grid[Y][B-1].length+this.grid[Y][B].length-1;if(P0)for(var Y=B;Y<=F;Y++)te[3]+=this.grid[M-1][Y].length+this.grid[M][Y].length-1;for(var oe=w.MAX_VALUE,J,ue,re=0;re{var u=l(551).FDLayoutNode,h=l(551).IMath;function f(p,m,g,y){u.call(this,p,m,g,y)}o(f,"CoSENode"),f.prototype=Object.create(u.prototype);for(var d in u)f[d]=u[d];f.prototype.calculateDisplacement=function(){var p=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementX=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementX)),Math.abs(this.displacementY)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementY=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},f.prototype.propogateDisplacementToChildren=function(p,m){for(var g=this.getChild().getNodes(),y,v=0;v{function u(g){if(Array.isArray(g)){for(var y=0,v=Array(g.length);y0){var et=0;Oe.forEach(function(lt){he=="horizontal"?(ye.set(lt,x.has(lt)?b[x.get(lt)]:se.get(lt)),et+=ye.get(lt)):(ye.set(lt,x.has(lt)?T[x.get(lt)]:se.get(lt)),et+=ye.get(lt))}),et=et/Oe.length,We.forEach(function(lt){z.has(lt)||ye.set(lt,et)})}else{var Ue=0;We.forEach(function(lt){he=="horizontal"?Ue+=x.has(lt)?b[x.get(lt)]:se.get(lt):Ue+=x.has(lt)?T[x.get(lt)]:se.get(lt)}),Ue=Ue/We.length,We.forEach(function(lt){ye.set(lt,Ue)})}});for(var ze=o(function(){var Oe=_e.shift(),et=W.get(Oe);et.forEach(function(Ue){if(ye.get(Ue.id)lt&&(lt=yt),ftGt&&(Gt=ft)}}catch(Ct){Lt=!0,dt=Ct}finally{try{!vt&&nt.return&&nt.return()}finally{if(Lt)throw dt}}var Ur=(et+lt)/2-(Ue+Gt)/2,_t=!0,bn=!1,Br=void 0;try{for(var cr=We[Symbol.iterator](),ar;!(_t=(ar=cr.next()).done);_t=!0){var _r=ar.value;ye.set(_r,ye.get(_r)+Ur)}}catch(Ct){bn=!0,Br=Ct}finally{try{!_t&&cr.return&&cr.return()}finally{if(bn)throw Br}}})}return ye},"findAppropriatePositionForRelativePlacement"),L=o(function(W){var he=0,z=0,se=0,le=0;if(W.forEach(function(Re){Re.left?b[x.get(Re.left)]-b[x.get(Re.right)]>=0?he++:z++:T[x.get(Re.top)]-T[x.get(Re.bottom)]>=0?se++:le++}),he>z&&se>le)for(var ke=0;kez)for(var ve=0;vele)for(var ye=0;ye1)y.fixedNodeConstraint.forEach(function(xe,W){O[W]=[xe.position.x,xe.position.y],M[W]=[b[x.get(xe.nodeId)],T[x.get(xe.nodeId)]]}),P=!0;else if(y.alignmentConstraint)(function(){var xe=0;if(y.alignmentConstraint.vertical){for(var W=y.alignmentConstraint.vertical,he=o(function(ye){var Re=new Set;W[ye].forEach(function(Ke){Re.add(Ke)});var _e=new Set([].concat(u(Re)).filter(function(Ke){return F.has(Ke)})),ze=void 0;_e.size>0?ze=b[x.get(_e.values().next().value)]:ze=R(Re).x,W[ye].forEach(function(Ke){O[xe]=[ze,T[x.get(Ke)]],M[xe]=[b[x.get(Ke)],T[x.get(Ke)]],xe++})},"_loop2"),z=0;z0?ze=b[x.get(_e.values().next().value)]:ze=R(Re).y,se[ye].forEach(function(Ke){O[xe]=[b[x.get(Ke)],ze],M[xe]=[b[x.get(Ke)],T[x.get(Ke)]],xe++})},"_loop3"),ke=0;kej&&(j=U[Y].length,te=Y);if(j<$.size/2)L(y.relativePlacementConstraint),P=!1,B=!1;else{var oe=new Map,J=new Map,ue=[];U[te].forEach(function(xe){G.get(xe).forEach(function(W){W.direction=="horizontal"?(oe.has(xe)?oe.get(xe).push(W):oe.set(xe,[W]),oe.has(W.id)||oe.set(W.id,[]),ue.push({left:xe,right:W.id})):(J.has(xe)?J.get(xe).push(W):J.set(xe,[W]),J.has(W.id)||J.set(W.id,[]),ue.push({top:xe,bottom:W.id}))})}),L(ue),B=!1;var re=I(oe,"horizontal"),ee=I(J,"vertical");U[te].forEach(function(xe,W){M[W]=[b[x.get(xe)],T[x.get(xe)]],O[W]=[],re.has(xe)?O[W][0]=re.get(xe):O[W][0]=b[x.get(xe)],ee.has(xe)?O[W][1]=ee.get(xe):O[W][1]=T[x.get(xe)]}),P=!0}}if(P){for(var Z=void 0,K=d.transpose(O),ae=d.transpose(M),Q=0;Q0){var Be={x:0,y:0};y.fixedNodeConstraint.forEach(function(xe,W){var he={x:b[x.get(xe.nodeId)],y:T[x.get(xe.nodeId)]},z=xe.position,se=C(z,he);Be.x+=se.x,Be.y+=se.y}),Be.x/=y.fixedNodeConstraint.length,Be.y/=y.fixedNodeConstraint.length,b.forEach(function(xe,W){b[W]+=Be.x}),T.forEach(function(xe,W){T[W]+=Be.y}),y.fixedNodeConstraint.forEach(function(xe){b[x.get(xe.nodeId)]=xe.position.x,T[x.get(xe.nodeId)]=xe.position.y})}if(y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var Ye=y.alignmentConstraint.vertical,He=o(function(W){var he=new Set;Ye[W].forEach(function(le){he.add(le)});var z=new Set([].concat(u(he)).filter(function(le){return F.has(le)})),se=void 0;z.size>0?se=b[x.get(z.values().next().value)]:se=R(he).x,he.forEach(function(le){F.has(le)||(b[x.get(le)]=se)})},"_loop4"),Le=0;Le0?se=T[x.get(z.values().next().value)]:se=R(he).y,he.forEach(function(le){F.has(le)||(T[x.get(le)]=se)})},"_loop5"),Ce=0;Ce{a.exports=t})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(45);return i})()})});var R4e=Da((B4,Mz)=>{"use strict";o((function(e,r){typeof B4=="object"&&typeof Mz=="object"?Mz.exports=r(Nz()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof B4=="object"?B4.cytoscapeFcose=r(Nz()):e.cytoscapeFcose=r(e.coseBase)}),"webpackUniversalModuleDefinition")(B4,function(t){return(()=>{"use strict";var e={658:(a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var l=arguments.length,u=Array(l>1?l-1:0),h=1;h{var u=(function(){function d(p,m){var g=[],y=!0,v=!1,x=void 0;try{for(var b=p[Symbol.iterator](),T;!(y=(T=b.next()).done)&&(g.push(T.value),!(m&&g.length===m));y=!0);}catch(S){v=!0,x=S}finally{try{!y&&b.return&&b.return()}finally{if(v)throw x}}return g}return o(d,"sliceIterator"),function(p,m){if(Array.isArray(p))return p;if(Symbol.iterator in Object(p))return d(p,m);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),h=l(140).layoutBase.LinkedList,f={};f.getTopMostNodes=function(d){for(var p={},m=0;m0&&P.merge($)});for(var B=0;B1){T=x[0],S=T.connectedEdges().length,x.forEach(function(M){M.connectedEdges().length0&&g.set("dummy"+(g.size+1),A),C},f.relocateComponent=function(d,p,m){if(!m.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,v=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(m.quality=="draft"){var b=!0,T=!1,S=void 0;try{for(var w=p.nodeIndexes[Symbol.iterator](),k;!(b=(k=w.next()).done);b=!0){var A=k.value,C=u(A,2),R=C[0],I=C[1],L=m.cy.getElementById(R);if(L){var E=L.boundingBox(),D=p.xCoords[I]-E.w/2,_=p.xCoords[I]+E.w/2,O=p.yCoords[I]-E.h/2,M=p.yCoords[I]+E.h/2;Dy&&(y=_),Ox&&(x=M)}}}catch($){T=!0,S=$}finally{try{!b&&w.return&&w.return()}finally{if(T)throw S}}var P=d.x-(y+g)/2,B=d.y-(x+v)/2;p.xCoords=p.xCoords.map(function($){return $+P}),p.yCoords=p.yCoords.map(function($){return $+B})}else{Object.keys(p).forEach(function($){var U=p[$],j=U.getRect().x,te=U.getRect().x+U.getRect().width,Y=U.getRect().y,oe=U.getRect().y+U.getRect().height;jy&&(y=te),Yx&&(x=oe)});var F=d.x-(y+g)/2,G=d.y-(x+v)/2;Object.keys(p).forEach(function($){var U=p[$];U.setCenter(U.getCenterX()+F,U.getCenterY()+G)})}}},f.calcBoundingBox=function(d,p,m,g){for(var y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,T=void 0,S=void 0,w=void 0,k=void 0,A=d.descendants().not(":parent"),C=A.length,R=0;RT&&(y=T),vw&&(x=w),b{var u=l(548),h=l(140).CoSELayout,f=l(140).CoSENode,d=l(140).layoutBase.PointD,p=l(140).layoutBase.DimensionD,m=l(140).layoutBase.LayoutConstants,g=l(140).layoutBase.FDLayoutConstants,y=l(140).CoSEConstants,v=o(function(b,T){var S=b.cy,w=b.eles,k=w.nodes(),A=w.edges(),C=void 0,R=void 0,I=void 0,L={};b.randomize&&(C=T.nodeIndexes,R=T.xCoords,I=T.yCoords);var E=o(function($){return typeof $=="function"},"isFn"),D=o(function($,U){return E($)?$(U):$},"optFn"),_=u.calcParentsWithoutChildren(S,w),O=o(function G($,U,j,te){for(var Y=U.length,oe=0;oe0){var K=void 0;K=j.getGraphManager().add(j.newGraph(),re),G(K,ue,j,te)}}},"processChildrenList"),M=o(function($,U,j){for(var te=0,Y=0,oe=0;oe0?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=te/Y:E(b.idealEdgeLength)?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,y.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,y.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),P=o(function($,U){U.fixedNodeConstraint&&($.constraints.fixedNodeConstraint=U.fixedNodeConstraint),U.alignmentConstraint&&($.constraints.alignmentConstraint=U.alignmentConstraint),U.relativePlacementConstraint&&($.constraints.relativePlacementConstraint=U.relativePlacementConstraint)},"processConstraints");b.nestingFactor!=null&&(y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(y.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(y.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(y.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(y.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(y.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?m.QUALITY=2:m.QUALITY=0,y.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=m.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!b.randomize,y.ANIMATE=g.ANIMATE=m.ANIMATE=b.animate,y.TILE=b.tile,y.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,y.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!0,y.PURE_INCREMENTAL=!b.randomize,m.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!1),b.step=="enforced"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!1),b.step=="cose"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?y.TREE_REDUCTION_ON_INCREMENTAL=!1:y.TREE_REDUCTION_ON_INCREMENTAL=!0;var B=new h,F=B.newGraphManager();return O(F.addRoot(),u.getTopMostNodes(k),B,b),M(B,F,A),P(B,b),B.runLayout(),L},"coseLayout");a.exports={coseLayout:v}}),212:((a,s,l)=>{var u=(function(){function b(T,S){for(var w=0;w0)if(M){var F=d.getTopMostNodes(w.eles.nodes());if(E=d.connectComponents(k,w.eles,F),E.forEach(function(Te){var q=Te.boundingBox();D.push({x:q.x1+q.w/2,y:q.y1+q.h/2})}),w.randomize&&E.forEach(function(Te){w.eles=Te,C.push(m(w))}),w.quality=="default"||w.quality=="proof"){var G=k.collection();if(w.tile){var $=new Map,U=[],j=[],te=0,Y={nodeIndexes:$,xCoords:U,yCoords:j},oe=[];if(E.forEach(function(Te,q){Te.edges().length==0&&(Te.nodes().forEach(function(Ve,pe){G.merge(Te.nodes()[pe]),Ve.isParent()||(Y.nodeIndexes.set(Te.nodes()[pe].id(),te++),Y.xCoords.push(Te.nodes()[0].position().x),Y.yCoords.push(Te.nodes()[0].position().y))}),oe.push(q))}),G.length>1){var J=G.boundingBox();D.push({x:J.x1+J.w/2,y:J.y1+J.h/2}),E.push(G),C.push(Y);for(var ue=oe.length-1;ue>=0;ue--)E.splice(oe[ue],1),C.splice(oe[ue],1),D.splice(oe[ue],1)}}E.forEach(function(Te,q){w.eles=Te,L.push(y(w,C[q])),d.relocateComponent(D[q],L[q],w)})}else E.forEach(function(Te,q){d.relocateComponent(D[q],C[q],w)});var re=new Set;if(E.length>1){var ee=[],Z=A.filter(function(Te){return Te.css("display")=="none"});E.forEach(function(Te,q){var Ve=void 0;if(w.quality=="draft"&&(Ve=C[q].nodeIndexes),Te.nodes().not(Z).length>0){var pe={};pe.edges=[],pe.nodes=[];var Be=void 0;Te.nodes().not(Z).forEach(function(Ye){if(w.quality=="draft")if(!Ye.isParent())Be=Ve.get(Ye.id()),pe.nodes.push({x:C[q].xCoords[Be]-Ye.boundingbox().w/2,y:C[q].yCoords[Be]-Ye.boundingbox().h/2,width:Ye.boundingbox().w,height:Ye.boundingbox().h});else{var He=d.calcBoundingBox(Ye,C[q].xCoords,C[q].yCoords,Ve);pe.nodes.push({x:He.topLeftX,y:He.topLeftY,width:He.width,height:He.height})}else L[q][Ye.id()]&&pe.nodes.push({x:L[q][Ye.id()].getLeft(),y:L[q][Ye.id()].getTop(),width:L[q][Ye.id()].getWidth(),height:L[q][Ye.id()].getHeight()})}),Te.edges().forEach(function(Ye){var He=Ye.source(),Le=Ye.target();if(He.css("display")!="none"&&Le.css("display")!="none")if(w.quality=="draft"){var Ie=Ve.get(He.id()),Ne=Ve.get(Le.id()),Ce=[],Fe=[];if(He.isParent()){var fe=d.calcBoundingBox(He,C[q].xCoords,C[q].yCoords,Ve);Ce.push(fe.topLeftX+fe.width/2),Ce.push(fe.topLeftY+fe.height/2)}else Ce.push(C[q].xCoords[Ie]),Ce.push(C[q].yCoords[Ie]);if(Le.isParent()){var xe=d.calcBoundingBox(Le,C[q].xCoords,C[q].yCoords,Ve);Fe.push(xe.topLeftX+xe.width/2),Fe.push(xe.topLeftY+xe.height/2)}else Fe.push(C[q].xCoords[Ne]),Fe.push(C[q].yCoords[Ne]);pe.edges.push({startX:Ce[0],startY:Ce[1],endX:Fe[0],endY:Fe[1]})}else L[q][He.id()]&&L[q][Le.id()]&&pe.edges.push({startX:L[q][He.id()].getCenterX(),startY:L[q][He.id()].getCenterY(),endX:L[q][Le.id()].getCenterX(),endY:L[q][Le.id()].getCenterY()})}),pe.nodes.length>0&&(ee.push(pe),re.add(q))}});var K=O.packComponents(ee,w.randomize).shifts;if(w.quality=="draft")C.forEach(function(Te,q){var Ve=Te.xCoords.map(function(Be){return Be+K[q].dx}),pe=Te.yCoords.map(function(Be){return Be+K[q].dy});Te.xCoords=Ve,Te.yCoords=pe});else{var ae=0;re.forEach(function(Te){Object.keys(L[Te]).forEach(function(q){var Ve=L[Te][q];Ve.setCenter(Ve.getCenterX()+K[ae].dx,Ve.getCenterY()+K[ae].dy)}),ae++})}}}else{var P=w.eles.boundingBox();if(D.push({x:P.x1+P.w/2,y:P.y1+P.h/2}),w.randomize){var B=m(w);C.push(B)}w.quality=="default"||w.quality=="proof"?(L.push(y(w,C[0])),d.relocateComponent(D[0],L[0],w)):d.relocateComponent(D[0],C[0],w)}var Q=o(function(q,Ve){if(w.quality=="default"||w.quality=="proof"){typeof q=="number"&&(q=Ve);var pe=void 0,Be=void 0,Ye=q.data("id");return L.forEach(function(Le){Ye in Le&&(pe={x:Le[Ye].getRect().getCenterX(),y:Le[Ye].getRect().getCenterY()},Be=Le[Ye])}),w.nodeDimensionsIncludeLabels&&(Be.labelWidth&&(Be.labelPosHorizontal=="left"?pe.x+=Be.labelWidth/2:Be.labelPosHorizontal=="right"&&(pe.x-=Be.labelWidth/2)),Be.labelHeight&&(Be.labelPosVertical=="top"?pe.y+=Be.labelHeight/2:Be.labelPosVertical=="bottom"&&(pe.y-=Be.labelHeight/2))),pe==null&&(pe={x:q.position("x"),y:q.position("y")}),{x:pe.x,y:pe.y}}else{var He=void 0;return C.forEach(function(Le){var Ie=Le.nodeIndexes.get(q.id());Ie!=null&&(He={x:Le.xCoords[Ie],y:Le.yCoords[Ie]})}),He==null&&(He={x:q.position("x"),y:q.position("y")}),{x:He.x,y:He.y}}},"getPositions");if(w.quality=="default"||w.quality=="proof"||w.randomize){var de=d.calcParentsWithoutChildren(k,A),ne=A.filter(function(Te){return Te.css("display")=="none"});w.eles=A.not(ne),A.nodes().not(":parent").not(ne).layoutPositions(S,w,Q),de.length>0&&de.forEach(function(Te){Te.position(Q(Te))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),b})();a.exports=x}),657:((a,s,l)=>{var u=l(548),h=l(140).layoutBase.Matrix,f=l(140).layoutBase.SVD,d=o(function(m){var g=m.cy,y=m.eles,v=y.nodes(),x=y.nodes(":parent"),b=new Map,T=new Map,S=new Map,w=[],k=[],A=[],C=[],R=[],I=[],L=[],E=[],D=void 0,_=void 0,O=1e8,M=1e-9,P=m.piTol,B=m.samplingType,F=m.nodeSeparation,G=void 0,$=o(function(){for(var he=0,z=0,se=!1;z=ke;){ye=le[ke++];for(var We=w[ye],Oe=0;Oeze&&(ze=R[Ue],Ke=Ue)}return Ke},"BFS"),j=o(function(he){var z=void 0;if(he){z=Math.floor(Math.random()*_),D=z;for(var le=0;le<_;le++)R[le]=O;for(var ke=0;ke=1)break;ze=_e}for(var We=0;We<_;We++)ke[We]=se[We];for(Re=0,ze=M;;){Re++;for(var Oe=0;Oe<_;Oe++)ve[Oe]=le[Oe];if(ve=h.minusOp(ve,h.multCons(ke,h.dotProduct(ke,ve))),le=h.multGamma(h.multL(h.multGamma(ve),I,E)),z=h.dotProduct(ve,le),le=h.normalize(le),_e=h.dotProduct(ve,le),Ke=Math.abs(_e/ze),Ke<=1+P&&Ke>=1)break;ze=_e}for(var et=0;et<_;et++)ve[et]=le[et];k=h.multCons(ke,Math.sqrt(Math.abs(he))),A=h.multCons(ve,Math.sqrt(Math.abs(z)))},"powerIteration");u.connectComponents(g,y,u.getTopMostNodes(v),b),x.forEach(function(W){u.connectComponents(g,y,u.getTopMostNodes(W.descendants().intersection(y)),b)});for(var oe=0,J=0;J0&&(z.isParent()?w[he].push(S.get(z.id())):w[he].push(z.id()))})});var de=o(function(he){var z=T.get(he),se=void 0;b.get(he).forEach(function(le){g.getElementById(le).isParent()?se=S.get(le):se=le,w[z].push(se),w[T.get(se)].push(he)})},"_loop"),ne=!0,Te=!1,q=void 0;try{for(var Ve=b.keys()[Symbol.iterator](),pe;!(ne=(pe=Ve.next()).done);ne=!0){var Be=pe.value;de(Be)}}catch(W){Te=!0,q=W}finally{try{!ne&&Ve.return&&Ve.return()}finally{if(Te)throw q}}_=T.size;var Ye=void 0;if(_>2){G=_{var u=l(212),h=o(function(d){d&&d("layout","fcose",u)},"register");typeof cytoscape<"u"&&h(cytoscape),a.exports=h}),140:(a=>{a.exports=t})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(579);return i})()})});var xy,m0,Iz=N(()=>{"use strict";nc();xy=o(t=>`${t}`,"wrapIcon"),m0={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:xy('')},server:{body:xy('')},disk:{body:xy('')},internet:{body:xy('')},cloud:{body:xy('')},unknown:AA,blank:{body:xy("")}}}});var N4e,M4e,I4e,O4e,P4e=N(()=>{"use strict";Xt();zo();nc();gr();Iz();PC();tr();N4e=o(async function(t,e,r){let n=r.getConfigField("padding"),i=r.getConfigField("iconSize"),a=i/2,s=i/6,l=s/2;await Promise.all(e.edges().map(async u=>{let{source:h,sourceDir:f,sourceArrow:d,sourceGroup:p,target:m,targetDir:g,targetArrow:y,targetGroup:v,label:x}=OC(u),{x:b,y:T}=u[0].sourceEndpoint(),{x:S,y:w}=u[0].midpoint(),{x:k,y:A}=u[0].targetEndpoint(),C=n+4;if(p&&(Ya(f)?b+=f==="L"?-C:C:T+=f==="T"?-C:C+18),v&&(Ya(g)?k+=g==="L"?-C:C:A+=g==="T"?-C:C+18),!p&&r.getNode(h)?.type==="junction"&&(Ya(f)?b+=f==="L"?a:-a:T+=f==="T"?a:-a),!v&&r.getNode(m)?.type==="junction"&&(Ya(g)?k+=g==="L"?a:-a:A+=g==="T"?a:-a),u[0]._private.rscratch){let R=t.insert("g");if(R.insert("path").attr("d",`M ${b},${T} L ${S},${w} L${k},${A} `).attr("class","edge").attr("id",xc(h,m,{prefix:"L"})),d){let I=Ya(f)?N4[f](b,s):b-l,L=nu(f)?N4[f](T,s):T-l;R.insert("polygon").attr("points",Sz[f](s)).attr("transform",`translate(${I},${L})`).attr("class","arrow")}if(y){let I=Ya(g)?N4[g](k,s):k-l,L=nu(g)?N4[g](A,s):A-l;R.insert("polygon").attr("points",Sz[g](s)).attr("transform",`translate(${I},${L})`).attr("class","arrow")}if(x){let I=M4(f,g)?"XY":Ya(f)?"X":"Y",L=0;I==="X"?L=Math.abs(b-k):I==="Y"?L=Math.abs(T-A)/1.5:L=Math.abs(b-k)/2;let E=R.append("g");if(await di(E,x,{useHtmlLabels:!1,width:L,classes:"architecture-service-label"},ge()),E.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),I==="X")E.attr("transform","translate("+S+", "+w+")");else if(I==="Y")E.attr("transform","translate("+S+", "+w+") rotate(-90)");else if(I==="XY"){let D=I4(f,g);if(D&&w4e(D)){let _=E.node().getBoundingClientRect(),[O,M]=E4e(D);E.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*O*M*45})`);let P=E.node().getBoundingClientRect();E.attr("transform",` + translate(${S}, ${w-_.height/2}) + translate(${O*P.width/2}, ${M*P.height/2}) + rotate(${-1*O*M*45}, 0, ${_.height/2}) + `)}}}}}))},"drawEdges"),M4e=o(async function(t,e,r){let i=r.getConfigField("padding")*.75,a=r.getConfigField("fontSize"),l=r.getConfigField("iconSize")/2;await Promise.all(e.nodes().map(async u=>{let h=td(u);if(h.type==="group"){let{h:f,w:d,x1:p,y1:m}=u.boundingBox(),g=t.append("rect");g.attr("id",`group-${h.id}`).attr("x",p+l).attr("y",m+l).attr("width",d).attr("height",f).attr("class","node-bkg");let y=t.append("g"),v=p,x=m;if(h.icon){let b=y.append("g");b.html(`${await _s(h.icon,{height:i,width:i,fallbackPrefix:m0.prefix})}`),b.attr("transform","translate("+(v+l+1)+", "+(x+l+1)+")"),v+=i,x+=a/2-1-2}if(h.label){let b=y.append("g");await di(b,h.label,{useHtmlLabels:!1,width:d,classes:"architecture-service-label"},ge()),b.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),b.attr("transform","translate("+(v+l+4)+", "+(x+l+2)+")")}r.setElementForId(h.id,g)}}))},"drawGroups"),I4e=o(async function(t,e,r){let n=ge();for(let i of r){let a=e.append("g"),s=t.getConfigField("iconSize");if(i.title){let f=a.append("g");await di(f,i.title,{useHtmlLabels:!1,width:s*1.5,classes:"architecture-service-label"},n),f.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),f.attr("transform","translate("+s/2+", "+s+")")}let l=a.append("g");if(i.icon)l.html(`${await _s(i.icon,{height:s,width:s,fallbackPrefix:m0.prefix})}`);else if(i.iconText){l.html(`${await _s("blank",{height:s,width:s,fallbackPrefix:m0.prefix})}`);let p=l.append("g").append("foreignObject").attr("width",s).attr("height",s).append("div").attr("class","node-icon-text").attr("style",`height: ${s}px;`).append("div").html(sr(i.iconText,n)),m=parseInt(window.getComputedStyle(p.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;p.attr("style",`-webkit-line-clamp: ${Math.floor((s-2)/m)};`)}else l.append("path").attr("class","node-bkg").attr("id","node-"+i.id).attr("d",`M0 ${s} v${-s} q0,-5 5,-5 h${s} q5,0 5,5 v${s} H0 Z`);a.attr("id",`service-${i.id}`).attr("class","architecture-service");let{width:u,height:h}=a.node().getBBox();i.width=u,i.height=h,t.setElementForId(i.id,a)}return 0},"drawServices"),O4e=o(function(t,e,r){r.forEach(n=>{let i=e.append("g"),a=t.getConfigField("iconSize");i.append("g").append("rect").attr("id","node-"+n.id).attr("fill-opacity","0").attr("width",a).attr("height",a),i.attr("class","architecture-junction");let{width:l,height:u}=i._groups[0][0].getBBox();i.width=l,i.height=u,t.setElementForId(n.id,i)})},"drawJunctions")});function Dit(t,e,r){t.forEach(n=>{e.add({group:"nodes",data:{type:"service",id:n.id,icon:n.icon,label:n.title,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-service"})})}function Lit(t,e,r){t.forEach(n=>{e.add({group:"nodes",data:{type:"junction",id:n.id,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-junction"})})}function Rit(t,e){e.nodes().map(r=>{let n=td(r);if(n.type==="group")return;n.x=r.position().x,n.y=r.position().y,t.getElementById(n.id).attr("transform","translate("+(n.x||0)+","+(n.y||0)+")")})}function Nit(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"group",id:r.id,icon:r.icon,label:r.title,parent:r.in},classes:"node-group"})})}function Mit(t,e){t.forEach(r=>{let{lhsId:n,rhsId:i,lhsInto:a,lhsGroup:s,rhsInto:l,lhsDir:u,rhsDir:h,rhsGroup:f,title:d}=r,p=M4(r.lhsDir,r.rhsDir)?"segments":"straight",m={id:`${n}-${i}`,label:d,source:n,sourceDir:u,sourceArrow:a,sourceGroup:s,sourceEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%",target:i,targetDir:h,targetArrow:l,targetGroup:f,targetEndpoint:h==="L"?"0 50%":h==="R"?"100% 50%":h==="T"?"50% 0":"50% 100%"};e.add({group:"edges",data:m,classes:p})})}function Iit(t,e,r){let n=o((l,u)=>Object.entries(l).reduce((h,[f,d])=>{let p=0,m=Object.entries(d);if(m.length===1)return h[f]=m[0][1],h;for(let g=0;g{let u={},h={};return Object.entries(l).forEach(([f,[d,p]])=>{let m=t.getNode(f)?.in??"default";u[p]??={},u[p][m]??=[],u[p][m].push(f),h[d]??={},h[d][m]??=[],h[d][m].push(f)}),{horiz:Object.values(n(u,"horizontal")).filter(f=>f.length>1),vert:Object.values(n(h,"vertical")).filter(f=>f.length>1)}}),[a,s]=i.reduce(([l,u],{horiz:h,vert:f})=>[[...l,...h],[...u,...f]],[[],[]]);return{horizontal:a,vertical:s}}function Oit(t,e){let r=[],n=o(a=>`${a[0]},${a[1]}`,"posToStr"),i=o(a=>a.split(",").map(s=>parseInt(s)),"strToPos");return t.forEach(a=>{let s=Object.fromEntries(Object.entries(a).map(([f,d])=>[n(d),f])),l=[n([0,0])],u={},h={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;l.length>0;){let f=l.shift();if(f){u[f]=1;let d=s[f];if(d){let p=i(f);Object.entries(h).forEach(([m,g])=>{let y=n([p[0]+g[0],p[1]+g[1]]),v=s[y];v&&!u[y]&&(l.push(y),r.push({[Ez[m]]:v,[Ez[T4e(m)]]:d,gap:1.5*e.getConfigField("iconSize")}))})}}}}),r}function Pit(t,e,r,n,i,{spatialMaps:a,groupAlignments:s}){return new Promise(l=>{let u=qe("body").append("div").attr("id","cy").attr("style","display:none"),h=Ko({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${i.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${i.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});u.remove(),Nit(r,h),Dit(t,h,i),Lit(e,h,i),Mit(n,h);let f=Iit(i,a,s),d=Oit(a,i),p=h.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(m){let[g,y]=m.connectedNodes(),{parent:v}=td(g),{parent:x}=td(y);return v===x?1.5*i.getConfigField("iconSize"):.5*i.getConfigField("iconSize")},edgeElasticity(m){let[g,y]=m.connectedNodes(),{parent:v}=td(g),{parent:x}=td(y);return v===x?.45:.001},alignmentConstraint:f,relativePlacementConstraint:d});p.one("layoutstop",()=>{function m(g,y,v,x){let b,T,{x:S,y:w}=g,{x:k,y:A}=y;T=(x-w+(S-v)*(w-A)/(S-k))/Math.sqrt(1+Math.pow((w-A)/(S-k),2)),b=Math.sqrt(Math.pow(x-w,2)+Math.pow(v-S,2)-Math.pow(T,2));let C=Math.sqrt(Math.pow(k-S,2)+Math.pow(A-w,2));b=b/C;let R=(k-S)*(x-w)-(A-w)*(v-S);switch(!0){case R>=0:R=1;break;case R<0:R=-1;break}let I=(k-S)*(v-S)+(A-w)*(x-w);switch(!0){case I>=0:I=1;break;case I<0:I=-1;break}return T=Math.abs(T)*R,b=b*I,{distances:T,weights:b}}o(m,"getSegmentWeights"),h.startBatch();for(let g of Object.values(h.edges()))if(g.data?.()){let{x:y,y:v}=g.source().position(),{x,y:b}=g.target().position();if(y!==x&&v!==b){let T=g.sourceEndpoint(),S=g.targetEndpoint(),{sourceDir:w}=OC(g),[k,A]=nu(w)?[T.x,S.y]:[S.x,T.y],{weights:C,distances:R}=m(T,S,k,A);g.style("segment-distances",R),g.style("segment-weights",C)}}h.endBatch(),p.run()}),p.run(),h.ready(m=>{X.info("Ready",m),l(h)})})}var B4e,Bit,F4e,$4e=N(()=>{"use strict";II();B4e=ja(R4e(),1);yr();pt();nc();tu();Ei();Iz();PC();P4e();O3([{name:m0.prefix,icons:m0}]);Ko.use(B4e.default);o(Dit,"addServices");o(Lit,"addJunctions");o(Rit,"positionNodes");o(Nit,"addGroups");o(Mit,"addEdges");o(Iit,"getAlignments");o(Oit,"getRelativeConstraints");o(Pit,"layoutArchitecture");Bit=o(async(t,e,r,n)=>{let i=n.db,a=i.getServices(),s=i.getJunctions(),l=i.getGroups(),u=i.getEdges(),h=i.getDataStructures(),f=aa(e),d=f.append("g");d.attr("class","architecture-edges");let p=f.append("g");p.attr("class","architecture-services");let m=f.append("g");m.attr("class","architecture-groups"),await I4e(i,p,a),O4e(i,p,s);let g=await Pit(a,s,l,u,i,h);await N4e(d,g,i),await M4e(m,g,i),Rit(i,g),ic(void 0,f,i.getConfigField("padding"),i.getConfigField("useMaxWidth"))},"draw"),F4e={draw:Bit}});var z4e={};dr(z4e,{diagram:()=>Fit});var Fit,G4e=N(()=>{"use strict";_4e();Az();L4e();$4e();Fit={parser:_z,get db(){return new vy},renderer:F4e,styles:D4e}});var by,Oz=N(()=>{"use strict";La();qn();tr();$t();ci();by=class{constructor(){this.nodes=[];this.levels=new Map;this.outerNodes=[];this.classes=new Map;this.setAccTitle=Rr;this.getAccTitle=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getAccDescription=Or;this.setAccDescription=Ir}static{o(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){let e=ur,r=Qt();return Vn({...e.treemap,...r.treemap??{}})}addNode(e,r){this.nodes.push(e),this.levels.set(e,r),r===0&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:"",children:this.outerNodes}}addClass(e,r){let n=this.classes.get(e)??{id:e,styles:[],textStyles:[]},i=r.replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/ยงยงยง/g,",").split(";");i&&i.forEach(a=>{_2(a)&&(n?.textStyles?n.textStyles.push(a):n.textStyles=[a]),n?.styles?n.styles.push(a):n.styles=[a]}),this.classes.set(e,n)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){Sr(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}}});function H4e(t){if(!t.length)return[];let e=[],r=[];return t.forEach(n=>{let i={name:n.name,children:n.type==="Leaf"?void 0:[]};for(i.classSelector=n?.classSelector,n?.cssCompiledStyles&&(i.cssCompiledStyles=[n.cssCompiledStyles]),n.type==="Leaf"&&n.value!==void 0&&(i.value=n.value);r.length>0&&r[r.length-1].level>=n.level;)r.pop();if(r.length===0)e.push(i);else{let a=r[r.length-1].node;a.children?a.children.push(i):a.children=[i]}n.type!=="Leaf"&&r.push({node:i,level:n.level})}),e}var q4e=N(()=>{"use strict";o(H4e,"buildHierarchy")});var Vit,Uit,Pz,W4e=N(()=>{"use strict";Uf();pt();r0();q4e();Oz();Vit=o((t,e)=>{nl(t,e);let r=[];for(let a of t.TreemapRows??[])a.$type==="ClassDefStatement"&&e.addClass(a.className??"",a.styleText??"");for(let a of t.TreemapRows??[]){let s=a.item;if(!s)continue;let l=a.indent?parseInt(a.indent):0,u=Uit(s),h=s.classSelector?e.getStylesForClass(s.classSelector):[],f=h.length>0?h.join(";"):void 0,d={level:l,name:u,type:s.$type,value:s.value,classSelector:s.classSelector,cssCompiledStyles:f};r.push(d)}let n=H4e(r),i=o((a,s)=>{for(let l of a)e.addNode(l,s),l.children&&l.children.length>0&&i(l.children,s+1)},"addNodesRecursively");i(n,0)},"populate"),Uit=o(t=>t.name?String(t.name):"","getItemName"),Pz={parser:{yy:void 0},parse:o(async t=>{try{let r=await bs("treemap",t);X.debug("Treemap AST:",r);let n=Pz.parser?.yy;if(!(n instanceof by))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Vit(r,n)}catch(e){throw X.error("Error parsing treemap:",e),e}},"parse")}});var Hit,Ty,F4,qit,Wit,Y4e,X4e=N(()=>{"use strict";tu();Mf();Ei();yr();$t();qn();pt();Hit=10,Ty=10,F4=25,qit=o((t,e,r,n)=>{let i=n.db,a=i.getConfig(),s=a.padding??Hit,l=i.getDiagramTitle(),u=i.getRoot(),{themeVariables:h}=Qt();if(!u)return;let f=l?30:0,d=aa(e),p=a.nodeWidth?a.nodeWidth*Ty:960,m=a.nodeHeight?a.nodeHeight*Ty:500,g=p,y=m+f;d.attr("viewBox",`0 0 ${g} ${y}`),mn(d,y,g,a.useMaxWidth);let v;try{let _=a.valueFormat||",";if(_==="$0,0")v=o(O=>"$"+cc(",")(O),"valueFormat");else if(_.startsWith("$")&&_.includes(",")){let O=/\.\d+/.exec(_),M=O?O[0]:"";v=o(P=>"$"+cc(","+M)(P),"valueFormat")}else if(_.startsWith("$")){let O=_.substring(1);v=o(M=>"$"+cc(O||"")(M),"valueFormat")}else v=cc(_)}catch(_){X.error("Error creating format function:",_),v=cc(",")}let x=no().range(["transparent",h.cScale0,h.cScale1,h.cScale2,h.cScale3,h.cScale4,h.cScale5,h.cScale6,h.cScale7,h.cScale8,h.cScale9,h.cScale10,h.cScale11]),b=no().range(["transparent",h.cScalePeer0,h.cScalePeer1,h.cScalePeer2,h.cScalePeer3,h.cScalePeer4,h.cScalePeer5,h.cScalePeer6,h.cScalePeer7,h.cScalePeer8,h.cScalePeer9,h.cScalePeer10,h.cScalePeer11]),T=no().range([h.cScaleLabel0,h.cScaleLabel1,h.cScaleLabel2,h.cScaleLabel3,h.cScaleLabel4,h.cScaleLabel5,h.cScaleLabel6,h.cScaleLabel7,h.cScaleLabel8,h.cScaleLabel9,h.cScaleLabel10,h.cScaleLabel11]);l&&d.append("text").attr("x",g/2).attr("y",f/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(l);let S=d.append("g").attr("transform",`translate(0, ${f})`).attr("class","treemapContainer"),w=U0(u).sum(_=>_.value??0).sort((_,O)=>(O.value??0)-(_.value??0)),A=R5().size([p,m]).paddingTop(_=>_.children&&_.children.length>0?F4+Ty:0).paddingInner(s).paddingLeft(_=>_.children&&_.children.length>0?Ty:0).paddingRight(_=>_.children&&_.children.length>0?Ty:0).paddingBottom(_=>_.children&&_.children.length>0?Ty:0).round(!0)(w),C=A.descendants().filter(_=>_.children&&_.children.length>0),R=S.selectAll(".treemapSection").data(C).enter().append("g").attr("class","treemapSection").attr("transform",_=>`translate(${_.x0},${_.y0})`);R.append("rect").attr("width",_=>_.x1-_.x0).attr("height",F4).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",_=>_.depth===0?"display: none;":""),R.append("clipPath").attr("id",(_,O)=>`clip-section-${e}-${O}`).append("rect").attr("width",_=>Math.max(0,_.x1-_.x0-12)).attr("height",F4),R.append("rect").attr("width",_=>_.x1-_.x0).attr("height",_=>_.y1-_.y0).attr("class",(_,O)=>`treemapSection section${O}`).attr("fill",_=>x(_.data.name)).attr("fill-opacity",.6).attr("stroke",_=>b(_.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",_=>{if(_.depth===0)return"display: none;";let O=je({cssCompiledStyles:_.data.cssCompiledStyles});return O.nodeStyles+";"+O.borderStyles.join(";")}),R.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",F4/2).attr("dominant-baseline","middle").text(_=>_.depth===0?"":_.data.name).attr("font-weight","bold").attr("style",_=>{if(_.depth===0)return"display: none;";let O="dominant-baseline: middle; font-size: 12px; fill:"+T(_.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",M=je({cssCompiledStyles:_.data.cssCompiledStyles});return O+M.labelStyles.replace("color:","fill:")}).each(function(_){if(_.depth===0)return;let O=qe(this),M=_.data.name;O.text(M);let P=_.x1-_.x0,B=6,F;a.showValues!==!1&&_.value?F=P-10-30-10-B:F=P-B-6;let $=Math.max(15,F),U=O.node();if(U.getComputedTextLength()>$){let Y=M;for(;Y.length>0;){if(Y=M.substring(0,Y.length-1),Y.length===0){O.text("..."),U.getComputedTextLength()>$&&O.text("");break}if(O.text(Y+"..."),U.getComputedTextLength()<=$)break}}}),a.showValues!==!1&&R.append("text").attr("class","treemapSectionValue").attr("x",_=>_.x1-_.x0-10).attr("y",F4/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(_=>_.value?v(_.value):"").attr("font-style","italic").attr("style",_=>{if(_.depth===0)return"display: none;";let O="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+T(_.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",M=je({cssCompiledStyles:_.data.cssCompiledStyles});return O+M.labelStyles.replace("color:","fill:")});let I=A.leaves(),L=S.selectAll(".treemapLeafGroup").data(I).enter().append("g").attr("class",(_,O)=>`treemapNode treemapLeafGroup leaf${O}${_.data.classSelector?` ${_.data.classSelector}`:""}x`).attr("transform",_=>`translate(${_.x0},${_.y0})`);L.append("rect").attr("width",_=>_.x1-_.x0).attr("height",_=>_.y1-_.y0).attr("class","treemapLeaf").attr("fill",_=>_.parent?x(_.parent.data.name):x(_.data.name)).attr("style",_=>je({cssCompiledStyles:_.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",_=>_.parent?x(_.parent.data.name):x(_.data.name)).attr("stroke-width",3),L.append("clipPath").attr("id",(_,O)=>`clip-${e}-${O}`).append("rect").attr("width",_=>Math.max(0,_.x1-_.x0-4)).attr("height",_=>Math.max(0,_.y1-_.y0-4)),L.append("text").attr("class","treemapLabel").attr("x",_=>(_.x1-_.x0)/2).attr("y",_=>(_.y1-_.y0)/2).attr("style",_=>{let O="text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+T(_.data.name)+";",M=je({cssCompiledStyles:_.data.cssCompiledStyles});return O+M.labelStyles.replace("color:","fill:")}).attr("clip-path",(_,O)=>`url(#clip-${e}-${O})`).text(_=>_.data.name).each(function(_){let O=qe(this),M=_.x1-_.x0,P=_.y1-_.y0,B=O.node(),F=4,G=M-2*F,$=P-2*F;if(G<10||$<10){O.style("display","none");return}let U=parseInt(O.style("font-size"),10),j=8,te=28,Y=.6,oe=6,J=2;for(;B.getComputedTextLength()>G&&U>j;)U--,O.style("font-size",`${U}px`);let ue=Math.max(oe,Math.min(te,Math.round(U*Y))),re=U+J+ue;for(;re>$&&U>j&&(U--,ue=Math.max(oe,Math.min(te,Math.round(U*Y))),!(ue$;O.style("font-size",`${U}px`),(B.getComputedTextLength()>G||U(O.x1-O.x0)/2).attr("y",function(O){return(O.y1-O.y0)/2}).attr("style",O=>{let M="text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+T(O.data.name)+";",P=je({cssCompiledStyles:O.data.cssCompiledStyles});return M+P.labelStyles.replace("color:","fill:")}).attr("clip-path",(O,M)=>`url(#clip-${e}-${M})`).text(O=>O.value?v(O.value):"").each(function(O){let M=qe(this),P=this.parentNode;if(!P){M.style("display","none");return}let B=qe(P).select(".treemapLabel");if(B.empty()||B.style("display")==="none"){M.style("display","none");return}let F=parseFloat(B.style("font-size")),G=28,$=.6,U=6,j=2,te=Math.max(U,Math.min(G,Math.round(F*$)));M.style("font-size",`${te}px`);let oe=(O.y1-O.y0)/2+F/2+j;M.attr("y",oe);let J=O.x1-O.x0,ee=O.y1-O.y0-4,Z=J-8;M.node().getComputedTextLength()>Z||oe+te>ee||te{"use strict";tr();Yit={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelColor:"black",labelFontSize:"12px",valueFontSize:"10px",valueColor:"black",titleColor:"black",titleFontSize:"14px"},Xit=o(({treemap:t}={})=>{let e=Vn(Yit,t);return` + .treemapNode.section { + stroke: ${e.sectionStrokeColor}; + stroke-width: ${e.sectionStrokeWidth}; + fill: ${e.sectionFillColor}; + } + .treemapNode.leaf { + stroke: ${e.leafStrokeColor}; + stroke-width: ${e.leafStrokeWidth}; + fill: ${e.leafFillColor}; + } + .treemapLabel { + fill: ${e.labelColor}; + font-size: ${e.labelFontSize}; + } + .treemapValue { + fill: ${e.valueColor}; + font-size: ${e.valueFontSize}; + } + .treemapTitle { + fill: ${e.titleColor}; + font-size: ${e.titleFontSize}; + } + `},"getStyles"),j4e=Xit});var Q4e={};dr(Q4e,{diagram:()=>jit});var jit,Z4e=N(()=>{"use strict";Oz();W4e();X4e();K4e();jit={parser:Pz,get db(){return new by},renderer:Y4e,styles:j4e}});var Oat={};dr(Oat,{default:()=>Iat});nc();_A();vd();var O_e=o(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),P_e=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(NQ(),RQ));return{id:"c4",diagram:t}},"loader"),B_e={id:"c4",detector:O_e,loader:P_e},MQ=B_e;var yfe="flowchart",rWe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-wrapper"||e?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(t),"detector"),nWe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(AE(),CE));return{id:yfe,diagram:t}},"loader"),iWe={id:yfe,detector:rWe,loader:nWe},vfe=iWe;var xfe="flowchart-v2",aWe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-d3"?!1:(e?.flowchart?.defaultRenderer==="elk"&&(e.layout="elk"),/^\s*graph/.test(t)&&e?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)),"detector"),sWe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(AE(),CE));return{id:xfe,diagram:t}},"loader"),oWe={id:xfe,detector:aWe,loader:sWe},bfe=oWe;var fWe=o(t=>/^\s*erDiagram/.test(t),"detector"),dWe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(_fe(),Afe));return{id:"er",diagram:t}},"loader"),pWe={id:"er",detector:fWe,loader:dWe},Dfe=pWe;var Pge="gitGraph",HKe=o(t=>/^\s*gitGraph/.test(t),"detector"),qKe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Oge(),Ige));return{id:Pge,diagram:t}},"loader"),WKe={id:Pge,detector:HKe,loader:qKe},Bge=WKe;var d1e="gantt",MQe=o(t=>/^\s*gantt/.test(t),"detector"),IQe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(f1e(),h1e));return{id:d1e,diagram:t}},"loader"),OQe={id:d1e,detector:MQe,loader:IQe},p1e=OQe;var k1e="info",GQe=o(t=>/^\s*info/.test(t),"detector"),VQe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(w1e(),T1e));return{id:k1e,diagram:t}},"loader"),E1e={id:k1e,detector:GQe,loader:VQe};var tZe=o(t=>/^\s*pie/.test(t),"detector"),rZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(M1e(),N1e));return{id:"pie",diagram:t}},"loader"),I1e={id:"pie",detector:tZe,loader:rZe};var Y1e="quadrantChart",bZe=o(t=>/^\s*quadrantChart/.test(t),"detector"),TZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(W1e(),q1e));return{id:Y1e,diagram:t}},"loader"),wZe={id:Y1e,detector:bZe,loader:TZe},X1e=wZe;var Tye="xychart",$Ze=o(t=>/^\s*xychart(-beta)?/.test(t),"detector"),zZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(bye(),xye));return{id:Tye,diagram:t}},"loader"),GZe={id:Tye,detector:$Ze,loader:zZe},wye=GZe;var Rye="requirement",qZe=o(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),WZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Lye(),Dye));return{id:Rye,diagram:t}},"loader"),YZe={id:Rye,detector:qZe,loader:WZe},Nye=YZe;var Xye="sequence",IJe=o(t=>/^\s*sequenceDiagram/.test(t),"detector"),OJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Yye(),Wye));return{id:Xye,diagram:t}},"loader"),PJe={id:Xye,detector:IJe,loader:OJe},jye=PJe;var tve="class",VJe=o((t,e)=>e?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t),"detector"),UJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(eve(),Jye));return{id:tve,diagram:t}},"loader"),HJe={id:tve,detector:VJe,loader:UJe},rve=HJe;var ave="classDiagram",WJe=o((t,e)=>/^\s*classDiagram/.test(t)&&e?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t),"detector"),YJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ive(),nve));return{id:ave,diagram:t}},"loader"),XJe={id:ave,detector:WJe,loader:YJe},sve=XJe;var Fve="state",Tet=o((t,e)=>e?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t),"detector"),wet=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Bve(),Pve));return{id:Fve,diagram:t}},"loader"),ket={id:Fve,detector:Tet,loader:wet},$ve=ket;var Vve="stateDiagram",Cet=o((t,e)=>!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&e?.state?.defaultRenderer==="dagre-wrapper"),"detector"),Aet=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Gve(),zve));return{id:Vve,diagram:t}},"loader"),_et={id:Vve,detector:Cet,loader:Aet},Uve=_et;var a2e="journey",jet=o(t=>/^\s*journey/.test(t),"detector"),Ket=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(i2e(),n2e));return{id:a2e,diagram:t}},"loader"),Qet={id:a2e,detector:jet,loader:Ket},s2e=Qet;pt();tu();Ei();var Zet=o((t,e,r)=>{X.debug(`rendering svg for syntax error +`);let n=aa(e),i=n.append("g");n.attr("viewBox","0 0 2412 512"),mn(n,100,512,!0),i.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),i.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),i.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),i.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),i.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),i.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),i.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw"),O$={draw:Zet},o2e=O$;var Jet={db:{},renderer:O$,parser:{parse:o(()=>{},"parse")}},l2e=Jet;var c2e="flowchart-elk",ett=o((t,e={})=>/^\s*flowchart-elk/.test(t)||/^\s*(flowchart|graph)/.test(t)&&e?.flowchart?.defaultRenderer==="elk"?(e.layout="elk",!0):!1,"detector"),ttt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(AE(),CE));return{id:c2e,diagram:t}},"loader"),rtt={id:c2e,detector:ett,loader:ttt},u2e=rtt;var P2e="timeline",Ttt=o(t=>/^\s*timeline/.test(t),"detector"),wtt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(O2e(),I2e));return{id:P2e,diagram:t}},"loader"),ktt={id:P2e,detector:Ttt,loader:wtt},B2e=ktt;var J2e="mindmap",Rtt=o(t=>/^\s*mindmap/.test(t),"detector"),Ntt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Z2e(),Q2e));return{id:J2e,diagram:t}},"loader"),Mtt={id:J2e,detector:Rtt,loader:Ntt},exe=Mtt;var fxe="kanban",jtt=o(t=>/^\s*kanban/.test(t),"detector"),Ktt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(hxe(),uxe));return{id:fxe,diagram:t}},"loader"),Qtt={id:fxe,detector:jtt,loader:Ktt},dxe=Qtt;var Xxe="sankey",brt=o(t=>/^\s*sankey(-beta)?/.test(t),"detector"),Trt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Yxe(),Wxe));return{id:Xxe,diagram:t}},"loader"),wrt={id:Xxe,detector:brt,loader:Trt},jxe=wrt;var nbe="packet",Rrt=o(t=>/^\s*packet(-beta)?/.test(t),"detector"),Nrt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(rbe(),tbe));return{id:nbe,diagram:t}},"loader"),ibe={id:nbe,detector:Rrt,loader:Nrt};var mbe="radar",ent=o(t=>/^\s*radar-beta/.test(t),"detector"),tnt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(pbe(),dbe));return{id:mbe,diagram:t}},"loader"),gbe={id:mbe,detector:ent,loader:tnt};var x4e="block",wit=o(t=>/^\s*block(-beta)?/.test(t),"detector"),kit=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(v4e(),y4e));return{id:x4e,diagram:t}},"loader"),Eit={id:x4e,detector:wit,loader:kit},b4e=Eit;var V4e="architecture",$it=o(t=>/^\s*architecture/.test(t),"detector"),zit=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(G4e(),z4e));return{id:V4e,diagram:t}},"loader"),Git={id:V4e,detector:$it,loader:zit},U4e=Git;vd();Xt();var J4e="treemap",Kit=o(t=>/^\s*treemap/.test(t),"detector"),Qit=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Z4e(),Q4e));return{id:J4e,diagram:t}},"loader"),e3e={id:J4e,detector:Kit,loader:Qit};var t3e=!1,wy=o(()=>{t3e||(t3e=!0,xd("error",l2e,t=>t.toLowerCase().trim()==="error"),xd("---",{db:{clear:o(()=>{},"clear")},styles:{},renderer:{draw:o(()=>{},"draw")},parser:{parse:o(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:o(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),ev(u2e,exe,U4e),ev(MQ,dxe,sve,rve,Dfe,p1e,E1e,I1e,Nye,jye,bfe,vfe,B2e,Bge,Uve,$ve,s2e,X1e,jxe,ibe,wye,b4e,gbe,e3e))},"addDiagrams");pt();vd();Xt();var r3e=o(async()=>{X.debug("Loading registered diagrams");let e=(await Promise.allSettled(Object.entries(gu).map(async([r,{detector:n,loader:i}])=>{if(i)try{av(r)}catch{try{let{diagram:a,id:s}=await i();xd(s,a,n)}catch(a){throw X.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete gu[r],a}}}))).filter(r=>r.status==="rejected");if(e.length>0){X.error(`Failed to load ${e.length} external diagrams`);for(let r of e)X.error(r);throw new Error(`Failed to load ${e.length} external diagrams`)}},"loadRegisteredDiagrams");pt();yr();var BC="comm",FC="rule",$C="decl";var n3e="@import";var i3e="@namespace",a3e="@keyframes";var s3e="@layer";var Bz=Math.abs,$4=String.fromCharCode;function zC(t){return t.trim()}o(zC,"trim");function z4(t,e,r){return t.replace(e,r)}o(z4,"replace");function o3e(t,e,r){return t.indexOf(e,r)}o(o3e,"indexof");function rd(t,e){return t.charCodeAt(e)|0}o(rd,"charat");function nd(t,e,r){return t.slice(e,r)}o(nd,"substr");function wo(t){return t.length}o(wo,"strlen");function l3e(t){return t.length}o(l3e,"sizeof");function ky(t,e){return e.push(t),t}o(ky,"append");var GC=1,Ey=1,c3e=0,ll=0,Ri=0,Cy="";function VC(t,e,r,n,i,a,s,l){return{value:t,root:e,parent:r,type:n,props:i,children:a,line:GC,column:Ey,length:s,return:"",siblings:l}}o(VC,"node");function u3e(){return Ri}o(u3e,"char");function h3e(){return Ri=ll>0?rd(Cy,--ll):0,Ey--,Ri===10&&(Ey=1,GC--),Ri}o(h3e,"prev");function cl(){return Ri=ll2||Sy(Ri)>3?"":" "}o(p3e,"whitespace");function m3e(t,e){for(;--e&&cl()&&!(Ri<48||Ri>102||Ri>57&&Ri<65||Ri>70&&Ri<97););return UC(t,G4()+(e<6&&uh()==32&&cl()==32))}o(m3e,"escaping");function Fz(t){for(;cl();)switch(Ri){case t:return ll;case 34:case 39:t!==34&&t!==39&&Fz(Ri);break;case 40:t===41&&Fz(t);break;case 92:cl();break}return ll}o(Fz,"delimiter");function g3e(t,e){for(;cl()&&t+Ri!==57;)if(t+Ri===84&&uh()===47)break;return"/*"+UC(e,ll-1)+"*"+$4(t===47?t:cl())}o(g3e,"commenter");function y3e(t){for(;!Sy(uh());)cl();return UC(t,ll)}o(y3e,"identifier");function b3e(t){return d3e(qC("",null,null,null,[""],t=f3e(t),0,[0],t))}o(b3e,"compile");function qC(t,e,r,n,i,a,s,l,u){for(var h=0,f=0,d=s,p=0,m=0,g=0,y=1,v=1,x=1,b=0,T="",S=i,w=a,k=n,A=T;v;)switch(g=b,b=cl()){case 40:if(g!=108&&rd(A,d-1)==58){o3e(A+=z4(HC(b),"&","&\f"),"&\f",Bz(h?l[h-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:A+=HC(b);break;case 9:case 10:case 13:case 32:A+=p3e(g);break;case 92:A+=m3e(G4()-1,7);continue;case 47:switch(uh()){case 42:case 47:ky(Zit(g3e(cl(),G4()),e,r,u),u),(Sy(g||1)==5||Sy(uh()||1)==5)&&wo(A)&&nd(A,-1,void 0)!==" "&&(A+=" ");break;default:A+="/"}break;case 123*y:l[h++]=wo(A)*x;case 125*y:case 59:case 0:switch(b){case 0:case 125:v=0;case 59+f:x==-1&&(A=z4(A,/\f/g,"")),m>0&&(wo(A)-d||y===0&&g===47)&&ky(m>32?x3e(A+";",n,r,d-1,u):x3e(z4(A," ","")+";",n,r,d-2,u),u);break;case 59:A+=";";default:if(ky(k=v3e(A,e,r,h,f,i,l,T,S=[],w=[],d,a),a),b===123)if(f===0)qC(A,e,k,k,S,a,d,l,w);else{switch(p){case 99:if(rd(A,3)===110)break;case 108:if(rd(A,2)===97)break;default:f=0;case 100:case 109:case 115:}f?qC(t,k,k,n&&ky(v3e(t,k,k,0,0,i,l,T,i,S=[],d,w),w),i,w,d,l,n?S:w):qC(A,k,k,k,[""],w,0,l,w)}}h=f=m=0,y=x=1,T=A="",d=s;break;case 58:d=1+wo(A),m=g;default:if(y<1){if(b==123)--y;else if(b==125&&y++==0&&h3e()==125)continue}switch(A+=$4(b),b*y){case 38:x=f>0?1:(A+="\f",-1);break;case 44:l[h++]=(wo(A)-1)*x,x=1;break;case 64:uh()===45&&(A+=HC(cl())),p=uh(),f=d=wo(T=A+=y3e(G4())),b++;break;case 45:g===45&&wo(A)==2&&(y=0)}}return a}o(qC,"parse");function v3e(t,e,r,n,i,a,s,l,u,h,f,d){for(var p=i-1,m=i===0?a:[""],g=l3e(m),y=0,v=0,x=0;y0?m[b]+" "+T:z4(T,/&\f/g,m[b])))&&(u[x++]=S);return VC(t,e,r,i===0?FC:l,u,h,f,d)}o(v3e,"ruleset");function Zit(t,e,r,n){return VC(t,e,r,BC,$4(u3e()),nd(t,2,-2),0,n)}o(Zit,"comment");function x3e(t,e,r,n,i){return VC(t,e,r,$C,nd(t,0,n),nd(t,n+1,-1),n,i)}o(x3e,"declaration");function WC(t,e){for(var r="",n=0;n{E3e.forEach(t=>{t()}),E3e=[]},"attachFunctions");pt();var C3e=o(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");F3();w2();function A3e(t){let e=t.match(B3);if(!e)return{text:t,metadata:{}};let r=Kh(e[1],{schema:jh})??{};r=typeof r=="object"&&!Array.isArray(r)?r:{};let n={};return r.displayMode&&(n.displayMode=r.displayMode.toString()),r.title&&(n.title=r.title.toString()),r.config&&(n.config=r.config),{text:t.slice(e[0].length),metadata:n}}o(A3e,"extractFrontMatter");tr();var eat=o(t=>t.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(e,r,n)=>"<"+r+n.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),tat=o(t=>{let{text:e,metadata:r}=A3e(t),{displayMode:n,title:i,config:a={}}=r;return n&&(a.gantt||(a.gantt={}),a.gantt.displayMode=n),{title:i,config:a,text:e}},"processFrontmatter"),rat=o(t=>{let e=qt.detectInit(t)??{},r=qt.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:n})=>n==="wrap"):r?.type==="wrap"&&(e.wrap=!0),{text:bQ(t),directive:e}},"processDirectives");function $z(t){let e=eat(t),r=tat(e),n=rat(r.text),i=Vn(r.config,n.directive);return t=C3e(n.text),{code:t,title:r.title,config:i}}o($z,"preprocessDiagram");NA();e3();tr();function _3e(t){let e=new TextEncoder().encode(t),r=Array.from(e,n=>String.fromCodePoint(n)).join("");return btoa(r)}o(_3e,"toBase64");var nat=5e4,iat="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",aat="sandbox",sat="loose",oat="http://www.w3.org/2000/svg",lat="http://www.w3.org/1999/xlink",cat="http://www.w3.org/1999/xhtml",uat="100%",hat="100%",fat="border:0;margin:0;",dat="margin:0",pat="allow-top-navigation-by-user-activation allow-popups",mat='The "iframe" tag is not supported by your browser.',gat=["foreignobject"],yat=["dominant-baseline"];function N3e(t){let e=$z(t);return By(),ZG(e.config??{}),e}o(N3e,"processAndSetConfigs");async function vat(t,e){wy();try{let{code:r,config:n}=N3e(t);return{diagramType:(await M3e(r)).type,config:n}}catch(r){if(e?.suppressErrors)return!1;throw r}}o(vat,"parse");var D3e=o((t,e,r=[])=>` +.${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),xat=o((t,e=new Map)=>{let r="";if(t.themeCSS!==void 0&&(r+=` ${t.themeCSS}`),t.fontFamily!==void 0&&(r+=` :root { --mermaid-font-family: ${t.fontFamily}}`),t.altFontFamily!==void 0&&(r+=` -:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){let s=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(l=>{ur(l.styles)||s.forEach(u=>{r+=k2e(l.id,u,l.styles)}),ur(l.textStyles)||(r+=k2e(l.id,"tspan",(l?.textStyles||[]).map(u=>u.replace("color","fill"))))})}return r},"createCssStyles"),snt=o((t,e,r,n)=>{let i=ant(t,r),a=zG(e,i,t.themeVariables);return yC(p2e(`${n}{${a}}`),m2e)},"createUserStyles"),ont=o((t="",e,r)=>{let n=t;return!r&&!e&&(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=na(n),n=n.replace(/
    /g,"
    "),n},"cleanUpSvgCode"),lnt=o((t="",e)=>{let r=e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":Qrt,n=T2e(`${t}`);return``},"putIntoIFrame"),E2e=o((t,e,r,n,i)=>{let a=t.append("div");a.attr("id",r),n&&a.attr("style",n);let s=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns",Yrt);return i&&s.attr("xmlns:xlink",i),s.append("g"),t},"appendDivSvgG");function S2e(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}o(S2e,"sandboxedIframe");var cnt=o((t,e,r,n)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(n)?.remove()},"removeExistingElements"),unt=o(async function(t,e,r){py();let n=C2e(e);e=n.code;let i=cr();Y.debug(i),e.length>(i?.maxTextSize??Urt)&&(e=Hrt);let a="#"+t,s="i"+t,l="#"+s,u="d"+t,h="#"+u,f=o(()=>{let L=Ge(p?l:h).node();L&&"remove"in L&&L.remove()},"removeTempElements"),d=Ge("body"),p=i.securityLevel===Wrt,m=i.securityLevel===qrt,g=i.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),p){let k=S2e(Ge(r),s);d=Ge(k.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=Ge(r);E2e(d,t,u,`font-family: ${g}`,Xrt)}else{if(cnt(document,t,u,s),p){let k=S2e(Ge("body"),s);d=Ge(k.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=Ge("body");E2e(d,t,u)}let y,v;try{y=await xy.fromText(e,{title:n.title})}catch(k){if(i.suppressErrorRendering)throw f(),k;y=await xy.fromText("error"),v=k}let x=d.select(h).node(),b=y.type,w=x.firstChild,C=w.firstChild,T=y.renderer.getClasses?.(e,y),E=snt(i,b,T,a),A=document.createElement("style");A.innerHTML=E,w.insertBefore(A,C);try{await y.renderer.draw(e,t,vb.version,y)}catch(k){throw i.suppressErrorRendering?f():Yde.draw(e,t,vb.version),k}let S=d.select(`${h} svg`),_=y.db.getAccTitle?.(),I=y.db.getAccDescription?.();fnt(b,S,_,I),d.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",jrt);let D=d.select(h).node().innerHTML;if(Y.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),D=ont(D,p,fr(i.arrowMarkerAbsolute)),p){let k=d.select(h+" svg").node();D=lnt(D,k)}else m||(D=ch.sanitize(D,{ADD_TAGS:rnt,ADD_ATTR:nnt,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(x2e(),v)throw v;return f(),{diagramType:b,svg:D,bindFunctions:y.db.bindFunctions}},"render");function hnt(t={}){let e=Gn({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),V$(e),e?.theme&&e.theme in To?e.themeVariables=To[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=To.default.getThemeVariables(e.themeVariables));let r=typeof e=="object"?t7(e):r7();wy(r.logLevel),py()}o(hnt,"initialize");var A2e=o((t,e={})=>{let{code:r}=bF(t);return xy.fromText(r,e)},"getDiagramFromText");function fnt(t,e,r,n){g2e(e,t),y2e(e,r,n,e.attr("id"))}o(fnt,"addA11yInfo");var Gf=Object.freeze({render:unt,parse:int,getDiagramFromText:A2e,initialize:hnt,getConfig:cr,setConfig:X4,getSiteConfig:r7,updateSiteConfig:U$,reset:o(()=>{Ly()},"reset"),globalReset:o(()=>{Ly(lh)},"globalReset"),defaultConfig:lh});wy(cr().logLevel);Ly(cr());Yd();ir();var dnt=o((t,e,r)=>{Y.warn(t),Z9(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),_2e=o(async function(t={querySelector:".mermaid"}){try{await pnt(t)}catch(e){if(Z9(e)&&Y.error(e.str),nh.parseError&&nh.parseError(e),!t.suppressErrors)throw Y.error("Use the suppressErrors option to suppress these errors"),e}},"run"),pnt=o(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){let n=Gf.getConfig();Y.debug(`${t?"":"No "}Callback function found`);let i;if(r)i=r;else if(e)i=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");Y.debug(`Found ${i.length} diagrams`),n?.startOnLoad!==void 0&&(Y.debug("Start On Load: "+n?.startOnLoad),Gf.updateSiteConfig({startOnLoad:n?.startOnLoad}));let a=new Gt.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),s,l=[];for(let u of Array.from(i)){Y.info("Rendering diagram: "+u.id);if(u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");let h=`mermaid-${a.next()}`;s=u.innerHTML,s=B4(Gt.entityDecode(s)).trim().replace(//gi,"
    ");let f=Gt.detectInit(s);f&&Y.debug("Detected early reinit: ",f);try{let{svg:d,bindFunctions:p}=await N2e(h,s,u);u.innerHTML=d,t&&await t(h),p&&p(u)}catch(d){dnt(d,l,nh.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),D2e=o(function(t){Gf.initialize(t)},"initialize"),mnt=o(async function(t,e,r){Y.warn("mermaid.init is deprecated. Please use run instead."),t&&D2e(t);let n={postRenderCallback:r,querySelector:".mermaid"};typeof e=="string"?n.querySelector=e:e&&(e instanceof HTMLElement?n.nodes=[e]:n.nodes=e),await _2e(n)},"init"),gnt=o(async(t,{lazyLoad:e=!0}={})=>{py(),z4(...t),e===!1&&await Kve()},"registerExternalDiagrams"),L2e=o(function(){if(nh.startOnLoad){let{startOnLoad:t}=Gf.getConfig();t&&nh.run().catch(e=>Y.error("Mermaid failed to initialize",e))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",L2e,!1)}var ynt=o(function(t){nh.parseError=t},"setParseErrorHandler"),vC=[],wF=!1,R2e=o(async()=>{if(!wF){for(wF=!0;vC.length>0;){let t=vC.shift();if(t)try{await t()}catch(e){Y.error("Error executing queue",e)}}wF=!1}},"executeQueue"),vnt=o(async(t,e)=>new Promise((r,n)=>{let i=o(()=>new Promise((a,s)=>{Gf.parse(t,e).then(l=>{a(l),r(l)},l=>{Y.error("Error parsing",l),nh.parseError?.(l),s(l),n(l)})}),"performCall");vC.push(i),R2e().catch(n)}),"parse"),N2e=o((t,e,r)=>new Promise((n,i)=>{let a=o(()=>new Promise((s,l)=>{Gf.render(t,e,r).then(u=>{s(u),n(u)},u=>{Y.error("Error parsing",u),nh.parseError?.(u),l(u),i(u)})}),"performCall");vC.push(a),R2e().catch(i)}),"render"),nh={startOnLoad:!0,mermaidAPI:Gf,parse:vnt,render:N2e,init:mnt,run:_2e,registerExternalDiagrams:gnt,registerLayoutLoaders:vR,initialize:D2e,parseError:void 0,contentLoaded:L2e,setParseErrorHandler:ynt,detectType:a0,registerIconPacks:P4},xnt=nh;return V2e(bnt);})(); +:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){let s=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(l=>{mr(l.styles)||s.forEach(u=>{r+=D3e(l.id,u,l.styles)}),mr(l.textStyles)||(r+=D3e(l.id,"tspan",(l?.textStyles||[]).map(u=>u.replace("color","fill"))))})}return r},"createCssStyles"),bat=o((t,e,r,n)=>{let i=xat(t,r),a=aH(e,i,t.themeVariables);return WC(b3e(`${n}{${a}}`),T3e)},"createUserStyles"),Tat=o((t="",e,r)=>{let n=t;return!r&&!e&&(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=Ji(n),n=n.replace(/
    /g,"
    "),n},"cleanUpSvgCode"),wat=o((t="",e)=>{let r=e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":hat,n=_3e(`${t}`);return``},"putIntoIFrame"),L3e=o((t,e,r,n,i)=>{let a=t.append("div");a.attr("id",r),n&&a.attr("style",n);let s=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns",oat);return i&&s.attr("xmlns:xlink",i),s.append("g"),t},"appendDivSvgG");function R3e(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}o(R3e,"sandboxedIframe");var kat=o((t,e,r,n)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(n)?.remove()},"removeExistingElements"),Eat=o(async function(t,e,r){wy();let n=N3e(e);e=n.code;let i=Qt();X.debug(i),e.length>(i?.maxTextSize??nat)&&(e=iat);let a="#"+t,s="i"+t,l="#"+s,u="d"+t,h="#"+u,f=o(()=>{let D=qe(p?l:h).node();D&&"remove"in D&&D.remove()},"removeTempElements"),d=qe("body"),p=i.securityLevel===aat,m=i.securityLevel===sat,g=i.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),p){let E=R3e(qe(r),s);d=qe(E.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=qe(r);L3e(d,t,u,`font-family: ${g}`,lat)}else{if(kat(document,t,u,s),p){let E=R3e(qe("body"),s);d=qe(E.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=qe("body");L3e(d,t,u)}let y,v;try{y=await Ay.fromText(e,{title:n.title})}catch(E){if(i.suppressErrorRendering)throw f(),E;y=await Ay.fromText("error"),v=E}let x=d.select(h).node(),b=y.type,T=x.firstChild,S=T.firstChild,w=y.renderer.getClasses?.(e,y),k=bat(i,b,w,a),A=document.createElement("style");A.innerHTML=k,T.insertBefore(A,S);try{await y.renderer.draw(e,t,g4.version,y)}catch(E){throw i.suppressErrorRendering?f():o2e.draw(e,t,g4.version),E}let C=d.select(`${h} svg`),R=y.db.getAccTitle?.(),I=y.db.getAccDescription?.();Cat(b,C,R,I),d.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",cat);let L=d.select(h).node().innerHTML;if(X.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),L=Tat(L,p,vr(i.arrowMarkerAbsolute)),p){let E=d.select(h+" svg").node();L=wat(L,E)}else m||(L=yh.sanitize(L,{ADD_TAGS:gat,ADD_ATTR:yat,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(S3e(),v)throw v;return f(),{diagramType:b,svg:L,bindFunctions:y.db.bindFunctions}},"render");function Sat(t={}){let e=Rn({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),jG(e),e?.theme&&e.theme in So?e.themeVariables=So[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=So.default.getThemeVariables(e.themeVariables));let r=typeof e=="object"?C7(e):A7();Dy(r.logLevel),wy()}o(Sat,"initialize");var M3e=o((t,e={})=>{let{code:r}=$z(t);return Ay.fromText(r,e)},"getDiagramFromText");function Cat(t,e,r,n){w3e(e,t),k3e(e,r,n,e.attr("id"))}o(Cat,"addA11yInfo");var id=Object.freeze({render:Eat,parse:vat,getDiagramFromText:M3e,initialize:Sat,getConfig:Qt,setConfig:n3,getSiteConfig:A7,updateSiteConfig:KG,reset:o(()=>{By()},"reset"),globalReset:o(()=>{By(gh)},"globalReset"),defaultConfig:gh});Dy(Qt().logLevel);By(Qt());Nf();tr();var Aat=o((t,e,r)=>{X.warn(t),qL(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),I3e=o(async function(t={querySelector:".mermaid"}){try{await _at(t)}catch(e){if(qL(e)&&X.error(e.str),hh.parseError&&hh.parseError(e),!t.suppressErrors)throw X.error("Use the suppressErrors option to suppress these errors"),e}},"run"),_at=o(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){let n=id.getConfig();X.debug(`${t?"":"No "}Callback function found`);let i;if(r)i=r;else if(e)i=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");X.debug(`Found ${i.length} diagrams`),n?.startOnLoad!==void 0&&(X.debug("Start On Load: "+n?.startOnLoad),id.updateSiteConfig({startOnLoad:n?.startOnLoad}));let a=new qt.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),s,l=[];for(let u of Array.from(i)){X.info("Rendering diagram: "+u.id);if(u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");let h=`mermaid-${a.next()}`;s=u.innerHTML,s=P3(qt.entityDecode(s)).trim().replace(//gi,"
    ");let f=qt.detectInit(s);f&&X.debug("Detected early reinit: ",f);try{let{svg:d,bindFunctions:p}=await F3e(h,s,u);u.innerHTML=d,t&&await t(h),p&&p(u)}catch(d){Aat(d,l,hh.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),O3e=o(function(t){id.initialize(t)},"initialize"),Dat=o(async function(t,e,r){X.warn("mermaid.init is deprecated. Please use run instead."),t&&O3e(t);let n={postRenderCallback:r,querySelector:".mermaid"};typeof e=="string"?n.querySelector=e:e&&(e instanceof HTMLElement?n.nodes=[e]:n.nodes=e),await I3e(n)},"init"),Lat=o(async(t,{lazyLoad:e=!0}={})=>{wy(),ev(...t),e===!1&&await r3e()},"registerExternalDiagrams"),P3e=o(function(){if(hh.startOnLoad){let{startOnLoad:t}=id.getConfig();t&&hh.run().catch(e=>X.error("Mermaid failed to initialize",e))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",P3e,!1)}var Rat=o(function(t){hh.parseError=t},"setParseErrorHandler"),YC=[],zz=!1,B3e=o(async()=>{if(!zz){for(zz=!0;YC.length>0;){let t=YC.shift();if(t)try{await t()}catch(e){X.error("Error executing queue",e)}}zz=!1}},"executeQueue"),Nat=o(async(t,e)=>new Promise((r,n)=>{let i=o(()=>new Promise((a,s)=>{id.parse(t,e).then(l=>{a(l),r(l)},l=>{X.error("Error parsing",l),hh.parseError?.(l),s(l),n(l)})}),"performCall");YC.push(i),B3e().catch(n)}),"parse"),F3e=o((t,e,r)=>new Promise((n,i)=>{let a=o(()=>new Promise((s,l)=>{id.render(t,e,r).then(u=>{s(u),n(u)},u=>{X.error("Error parsing",u),hh.parseError?.(u),l(u),i(u)})}),"performCall");YC.push(a),B3e().catch(i)}),"render"),Mat=o(()=>Object.keys(gu).map(t=>({id:t})),"getRegisteredDiagramsMetadata"),hh={startOnLoad:!0,mermaidAPI:id,parse:Nat,render:F3e,init:Dat,run:I3e,registerExternalDiagrams:Lat,registerLayoutLoaders:zI,initialize:O3e,parseError:void 0,contentLoaded:P3e,setParseErrorHandler:Rat,detectType:_0,registerIconPacks:O3,getRegisteredDiagramsMetadata:Mat},Iat=hh;return Y3e(Oat);})(); /*! Check if previously processed */ /*! * Wait for document loaded before starting the execution @@ -2572,7 +2776,7 @@ ${t.themeCSS}`),t.fontFamily!==void 0&&(r+=` /*! Bundled license information: dompurify/dist/purify.es.mjs: - (*! @license DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE *) + (*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE *) js-yaml/dist/js-yaml.mjs: (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *) @@ -2604,4 +2808,4 @@ cytoscape/dist/cytoscape.esm.mjs: (*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License *) (*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License *) */ -globalThis.mermaid = globalThis.__esbuild_esm_mermaid.default; +globalThis["mermaid"] = globalThis.__esbuild_esm_mermaid_nm["mermaid"].default;